MjAwMC0xMi0zMSAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGNvbmZpZy9hcm0vbGludXgtZ2FzLmggKENMRUFSX0lOU05fQ0FDSEUpOiBBZGQgbWlzc2luZyBhc20KCW9wZXJhbmRzLgoKMjAwMC0xMi0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGRieG91dC5jIChkYnhvdXRfYmxvY2spOiBJbnZlcnQgbG9naWMgb24gZWxpZGluZyBMQlJBQy9SQlJBQy4KCUluaXRpYWxpemUgdmFyaWFibGVzIHByb3Blcmx5IGZvciBEQlhfTEJSQUNfRklSU1QuCgoyMDAwLTEyLTMwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZXhwci5jIChleHBhbmRfZXhwciwgY2FzZSBDT01QT05FTlRfUkVGKTogRml4IHR5cG8gaW4gbGFzdCBjaGFuZ2UuCgoyMDAwLTEyLTMwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jICh2YWxpZGF0ZV9hcmdsaXN0KTogTmV3IGZ1bmN0aW9uLCB1c2UgaXQuCgoyMDAwLTEyLTMwICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2V4cGFuZF9wcm9sb2d1ZSk6IEZpeCB0eXBvcyBpbiBlcnJvcgoJbWVzc2FnZSBhbmQgY29tbWVudC4gIE5vdGUgbG9jYXRpb24gb2YgdGVzdGNhc2UgZm9yIGFuIHVuaGFuZGxlZAoJc2l0dWF0aW9uLgoKMjAwMC0xMi0zMCAgSmVmZnJleSBPbGRoYW0gIDxvbGRoYW1AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlZmF1bHRzLmggKEJVSUxEX1ZBX0xJU1RfVFlQRSk6IE5ldyBkZWZpbml0aW9uLgoJKiB0cmVlLmMgKGJ1aWxkX2NvbW1vbl90cmVlX25vZGVzXzIpOiBFbnN1cmUgdGhlIHZhX2xpc3RfdHlwZV9ub2RlCglpcyBhIGNvcHksIG5vdCBhbiBhbGlhcy4KCjIwMDAtMTItMzAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjYWxscy5jIChjYWxsc19mdW5jdGlvbl8xLCBjYXNlIENPTlNUUlVDVE9SKTogTmV3IGNhc2UuCgoJKiBhbGlhcy5jIChhbGlhc19zZXRzX2NvbmZsaWN0X3ApOiBOZXcgZnVuY3Rpb24uCgkobWVtc19pbl9kaXNqb2ludF9hbGlhc19zZXRzX3ApOiBVc2UgaXQuCgkocmVhZG9ubHlfZmllbGRzX3ApOiBNb3ZlZCBmcm9tIGV4cHIuYzsgY2hlY2sgZm9yIHJlY29yZCB0eXBlLgoJKG9iamVjdHNfbXVzdF9jb25mbGljdF9wKTogTmV3IGZ1bmN0aW9uLgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IFVzZSBhc3NpZ25fdGVtcCBhcyBtdWNoIGFzIHBvc3NpYmxlLCB1c2UKCXJlYWRvbmx5IHZhcmlhbnQgaWYgYXNzaWduZWQgb25jZSwgYW5kIGRvbid0IHNldCBtZW1vcnkgYXR0cmlidXRlcy4KCShlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xLCBzdG9yZV9vbmVfYXJnKTogTGlrZXdpc2UuCgkqIGludGVncmF0ZS5jIChleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcywgZXhwYW5kX3JldHVybik6IExpa2V3aXNlLgoJKiBleHByLmMgKGNvcHlfYmxrbW9kZV9mcm9tX3JlZywgc3RvcmVfY29uc3RydWN0b3IpOiBMaWtld2lzZS4KCShzdG9yZV9maWVsZCwgc2F2ZV9ub25jb3BpZWRfcGFydHMsIGV4cGFuZF9leHByKTogTGlrZXdpc2UuCgkoZXhwYW5kX2V4cHJfdW5hbGlnbmVkKTogTGlrZXdpc2UuCgkocmVhZG9ubHlfZmllbGRzX3ApOiBNb3ZlZCB0byBhbGlhcy5jLgoJKHNhZmVfZnJvbV9wKTogUmV3b3JrIGhhbmRsaW5nIG9mIFNBVkVfRVhQUi4KCU1FTXMgb255IGNvbmZsaWN0IGlmIGFsaWFzIHNldHMgY29uZmxpY3Q7IGxpa2V3aXNlIGZvciBJTkRJUkVDVF9SRUYuCgkqIGZ1bmN0aW9uLmMgKHN0cnVjdCB0ZW1wX3Nsb3QpOiBEZWxldGUgZmllbGQgQUxJQVNfU0VUOyBhZGQgVFlQRS4KCShhc3NpZ25fc3RhY2tfZm9yX3RlbXApOiBVc2Ugb2JqZWN0c19tdXN0X2NvbmZpY3RfcC4KCVNldCBhbGwgbWVtb3J5IGF0dHJpYnV0ZXMgZnJvbSB0eXBlLCBpZiBzcGVjaWZpZWQuCgkobWFya190ZW1wX3Nsb3QpOiBNYXJrIFRZUEUgZmllbGQuCgkqIHRyZWUuaCAoYWxpYXNfc2V0c19jb25mbGljdF9wLCByZWFkb25seV9maWVsZHNfcCk6IE5ldyBkZWNscy4KCShvYmplY3RzX211c3RfY29uZmxpY3RfcCk6IExpa2V3aXNlLgoKCSogc3RtdC5jIChleHBhbmRfZGVjbCk6IERvbid0IHVzZSBhc3NpZ25fc3RhY2tfdGVtcCBpbiBlcnJvciBjYXNlLgoJKGFkZF9jYXNlX25vZGUpOiBObyBuZWVkIHRvIGNvcHkgbm9kZXMgYW55bW9yZS4KCjIwMDAtMTItMzAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLmMgKHNwbGl0X2JyYW5jaGVzKTogRG9uJ3QgZGVyZWZlcmVuY2UgcmUtY29tcHV0ZWQKCWBiZXlvbmQnIGJlZm9yZSBjaGVja2luZyBpdCdzIG5vbi1OVUxMLgoKMjAwMC0xMi0yOSAgUm9iZXJ0IExpcGUgPHJvYmVydGxAc2NvLmNvbT4KCglSZW1vdmUgQ09GRiBzdXBwb3J0IGZyb20gaT84Ni1wYy1zY28zLjJ2NS4KCSogaTM4Ni9zY281LmggKFBSRUZFUlJFRF9ERUJVR0dJTkdfVFlQRSk6IENoYW5nZSB0byBEd2FyZiBJSS4KCShUQVJHRVRfRUxGKTogTm93IGFsd2F5cyB0cnVlLgoJKFNVQlRBUkdFVF9TV1RJQ0hFUzogKVJlbW92ZSAtbWNvZmYuCgoJKiBpMzg2L3Qtc2NvNSAoTVVMVElMSUJfT1BUSU9OUywgTVVMVElMSUJfRElSTkFNRVMsCglNVUxUSUxJQl9FWENFUFRJT04pOiBOdWtlIGNvZmYuCgkoQ1JUU1RVRkZfVF9DRkxBR1NfUyk6ICBEZWxldGVkLgoJKFRBUkdFVF9MSUJHQ0MyX0NGTEFHUyk6IEFkZGVkLgoKMjAwMC0xMi0yOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiB2YXJhc20uYyAob3V0cHV0X2NvbnN0YW50X2RlZik6IERvbid0IEVOQ09ERV9TRUNUSU9OX0lORk8KCXR3aWNlLiAgVXBkYXRlIGRlc2MtPnJ0bCBhbmQgLT5sYWJlbCwgaW4gY2FzZSBFTkNPREVfU0VDVElPTl9JTkZPCgltb2RpZmllcyB0aGVtLgoKMjAwMC0xMi0yOSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY29tPgoKCSogaWE2NC5jIChpYTY0X2V4cGFuZF9sb2FkX2FkZHJlc3MpOiBBY2NlcHQgYWRkaXRpb25hbCBzY3JhdGNoCglyZWdpc3RlciBhcmd1bWVudC4gIEFsbCBjYWxsZXJzICYgcHJvdG90eXBlIGNoYW5nZWQuCglVc2Ugc2NyYXRjaCByZWdpc3RlciB3aGVuIGdlbmVyYXRpbmcgbG9hZF9zeW1wdHIgaW5zbnMuCgkqIGlhNjQubWQgKG1vdmRpX3N5bWJvbGljKTogQ2xvYmJlciBhIHNjcmF0Y2ggcmVnaXN0ZXIuICBVc2UgaXQKCXdoZW4gY2FsbGluZyBpYTY0X2V4cGFuZF9sb2FkX2FkZHJlc3MuCgkobW92ZGkpOiBHZW5lcmF0ZSBtb3ZkaV9zeW1ib2xpYyB3aXRoIGFkZGl0aW9uYWwgb3BlcmFuZC4KCShsb2FkX2dwcmVsNjQpOiBVc2UgcGljX29mZnNldF90YWJsZV9ydHggaW5zdGVhZCBvZiAocmVnOkRJIDEpLgoJKGxvYWRfc3ltcHRyKTogTGlrZXdpc2UuICBVc2UgYWRkaXRpb25hbCBvcGVyYW5kIGFzIGEgc2NyYXRjaAoJcmVnaXN0ZXIgaW5zdGVhZCBvZiBnZW5lcmF0aW5nIGl0IGhlcmUuCgoJKiBiYXNpYy1ibG9jay5oOiBBZGQgYSBjb21tZW50LgoJKiBmbG93LmMgKFBST1BfUE9TVFJFTE9BRCk6IE5ldyBtYWNyby4KCSh1cGRhdGVfbGlmZV9pbmZvKTogQWRkIGl0IHRvIHByb3BfZmxhZ3MuCgkobWFya19zZXRfMSk6IElmIGl0IGlzIHNldCwgY29tcHV0ZSBSRUdfTl9TRVRTIGZvciB0aGUgb3JpZ2luYWwKCXJlZ2lzdGVyIG51bWJlciBvZiBhIGhhcmQgcmVnLgoKCSogZW1pdC1ydGwuYyAoZ2VuX3Jhd19SRUcpOiBOZXcgZnVuY3Rpb24uCgkoZ2VuX3J0eF9SRUcsIGdlbl9yZWdfcnR4LCBpbml0X2VtaXRfb25jZSk6IFVzZSBpdCBpbnN0ZWFkIG9mCglnZW5fcnR4X3Jhd19SRUcuCgkqIHByaW50LXJ0bC5jIChwcmludF9ydHgpOiBQcmludCBPUklHSU5BTF9SRUdOTy4KCSogZmluYWwuYyAoYWx0ZXJfc3VicmVnKTogVXBkYXRlIGl0LgoJKiByZWdyZW5hbWUuYyAoZG9fcmVwbGFjZSk6IExpa2V3aXNlLiAgVXNlIGdlbl9yYXdfUkVHLgoJKiBydGwuZGVmIChSRUcpOiBVcGRhdGUgY29tbWVudC4KCSogcnRsLmggKFgwVUlOVCwgT1JJR0lOQUxfUkVHTk8pOiBOZXcgbWFjcm9zLgoJKGdlbl9yYXdfUkVHKTogRGVjbGFyZS4KCjIwMDAtMTItMjkgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmVlLmMgKGdldF9zZXRfY29uc3RydWN0b3JfYml0cyk6IFVzZSBob3N0X2ludGVnZXJwIGFuZAoJdHJlZV9sb3dfY3N0LgoKCSogbG9jYWwtYWxsb2MuYyAodXBkYXRlX2VxdWl2X3JlZ3MpOiBEb24ndCB1c2UgY29weV9ydHggb24gUEFUVEVSTi4KCgkqIHRvcGxldi5jIChtYWluKTogQ2FsbCB4bWFsbG9jX3NldF9wcm9ncmFtX25hbWUuCgkqIGdjYy5jIChtYWluKTogTGlrZXdpc2UuCgoyMDAwLTEyLTI5ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX292ZXJyaWRlX29wdGlvbnMpOiBGaXggdHlwbyBpbiB3YXJuaW5nCgltZXNzYWdlLgoKMjAwMC0xMi0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9leHBhbmRfYmxvY2tfbW92ZSk6IEluaXRpYWxpemUKCXNyY19hbGlnbiBhbmQgZHN0X2FsaWduIGluIGJpdHMuICBEbyB1bmFsaWduZWQgcXVhZHdvcmQgbG9hZHMKCWlmIHBvc3NpYmxlIGZvciBCV1ggdG9vLgoJKGFscGhhX2V4cGFuZF9ibG9ja19jbGVhcik6IEluaXRpYWxpemUgYWxpZ24gaW4gYml0cy4gIFRyYWNrCglzbWFsbCBsZWFkaW5nIG9mZnNldHMgaW50byBhIGxhcmdlciBhbGlnbm1lbnQuICBQbGF5IGdhbWVzIHdpdGgKCXN0cV91IGZvciBsYXJnZSA0LWJ5dGUgYWxpZ25lZCBibG9ja3MuICBVc2UgbG9hZC9tYXNrL3N0b3JlCglmb3IgYXBwcm9wcmVhdGVseSBhbGlnbmVkIGhlYWRzIGFuZCB0YWlscy4KCjIwMDAtMTItMjkgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogQ29udmVydCBhcmd1bWVudHMgcGFzc2VkIGJ5CglyZWZlcmVuY2UgdG8gdGhlIHJpZ2h0IG1vZGUuCgoyMDAwLTEyLTI4ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgoJKiBjLXBhcnNlLmluIChzZWxlY3Rfb3JfaXRlcl9zdG10KTogVXNlIHRydXRodmFsdWVfY29udmVyc2lvbgoJb24gdGhlIGNvbmRpdGlvbiBvZiBhIEZPUiBzdGF0ZW1lbnQsIHNvIHRoYXQgaXQgZ2V0cyB0eXBlY2hlY2tlZAoJYW5kIG9wdGltaXNlZC4KCjIwMDAtMTItMjkgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUHJldmVudCBjcmFzaCBpbiBjYXNlIG9mIG92ZXJmbG93IGluCglhcnJheSBzaXplLgoKCSogY2FsbHMuYyAoZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSk6IEFkZCB0byBjYWxsX2Z1c2FnZSB0aGUKCXN0YWNrIHNsb3QgYXNzaWduZWQgdG8gYXJndW1lbnQgcGFzc2VkIGJ5IHJlZmVyZW5jZS4KCjIwMDAtMTItMjggIEplZmZyZXkgT2xkaGFtICA8b2xkaGFtQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0b3BsZXYuaCAoZXh0ZXJuIHJlYWxseV9zb3JyeSk6IFJlbW92ZSBleHRlcm4gZGVjbGFyYXRpb24gZm9yCiAgICAgICAgbm9uZXhpc3RlbnQgZnVuY3Rpb24uCgoyMDAwLTEyLTI4ICBKZWZmcmV5IE9sZGhhbSAgPG9sZGhhbUBjb2Rlc291cmNlcnkuY29tPgoKCSogdmFyYXNtLmMgKGluaXRpYWxpemVyX2NvbnN0YW50X3ZhbGlkX3ApOiBJbmRpY2F0ZSBzdWJ0cmFjdGlvbiBvZgoJcG9pbnRlcnMgdG8gdGhlIHNhbWUgc3RyaW5nIGNvbnN0YW50IGlzIGFic29sdXRlLgoKMjAwMC0xMi0yOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoZW51bSBmb3JtYXRfdHlwZSk6IEFkZCBzdHJmbW9uX2Zvcm1hdF90eXBlLgoJKGRlY2xfYXR0cmlidXRlcyk6IEhhbmRsZSBmb3JtYXQgYXR0cmlidXRlcyBzdHJmbW9uIGFuZAoJX19zdHJmbW9uX18uCgkoRk1UX0ZMQUdfVVNFX0RPTExBUiwgRk1UX0ZMQUdfWkVST19XSURUSF9CQUQsCglGTVRfRkxBR19FTVBUWV9QUkVDX09LKTogRGVmaW5lLgoJKGZvcm1hdF9jaGFyX2luZm8pOiBVcGRhdGUgY29tbWVudCBmb3IgZmxhZ19jaGFycy4KCShmb3JtYXRfZmxhZ19zcGVjKTogQWRkIHNraXBfbmV4dF9jaGFyLgoJKGZvcm1hdF9raW5kX2luZm8pOiBBZGQgbGVmdF9wcmVjaXNpb25fY2hhci4KCShwcmludGZfZmxhZ19zcGVjcywgc2NhbmZfZmxhZ19zcGVjcywgc3RyZnRpbWVfZmxhZ19zcGVjcywKCWZvcm1hdF90eXBlcyk6IFVwZGF0ZSBmb3IgdGhlc2UgbmV3IHN0cnVjdHVyZSBtZW1iZXJzIGFuZCBmbGFncy4KCSh0aW1lX2NoYXJfdGFibGUpOiBNYWtlIGNvbnN0LgoJKHN0cmZtb25fbGVuZ3RoX3NwZWNzLCBzdHJmbW9uX2ZsYWdfc3BlY3MsIHN0cmZtb25fZmxhZ19wYWlycywKCW1vbmV0YXJ5X2NoYXJfdGFibGUpOiBOZXcuCgkoZm9ybWF0X3R5cGVzKTogQWRkIGRldGFpbHMgb2Ygc3RyZm1vbiBmb3JtYXRzLgoJKGluaXRfZnVuY3Rpb25fZm9ybWF0X2luZm8pOiBDcmVhdGUgZGVmYXVsdCBhdHRyaWJ1dGUgZm9yIHN0cmZtb24uCgkoY2hlY2tfZm9ybWF0X2luZm9fbWFpbik6IENoZWNrIHRoZSBuZXcgZmxhZ3MuICBIYW5kbGUKCXNraXBfbmV4dF9jaGFyIGFuZCBsZWZ0IHByZWNpc2lvbi4KCSogdG9wbGV2LmMgKGRvY3VtZW50ZWRfbGFuZ19vcHRpb25zKTogVXBkYXRlIGRlc2NyaXB0aW9uIG9mCgktV2Zvcm1hdC4KCSogZXh0ZW5kLnRleGk6IERvY3VtZW50IHN0cmZtb24gZm9ybWF0IGF0dHJpYnV0ZXMuICBEb2N1bWVudAoJYXR0cmlidXRlIGZvcm1zIHN1Y2ggYXMgX19wcmludGZfXy4gIENsYXJpZnkgZm9ybWF0X2FyZyBhdHRyaWJ1dGUKCWRvY3VtZW50YXRpb24uCgkqIGludm9rZS50ZXhpICgtV2Zvcm1hdCk6IFVwZGF0ZSBmb3Igc3RyZm1vbiBmb3JtYXRzLgoKMjAwMC0xMi0yOCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZXhwbWVkLmMgKHN0b3JlX2JpdF9maWVsZCk6IEZpeCBsYXN0IHBhdGNoLgoKMjAwMC0xMi0yOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvY3J0MS5hc20gKHN0YXJ0X2wpOiBgX19TSDRfU0lOR0xFX09OTFlfXycgd2FzIG1pc3NpbmcKCXRoZSB0cmFpbGluZyBgX18nLgoKMjAwMC0xMi0yOCAgQWxhbiBMZWhvdHNreSAgPGxlaG90c2t5QHRpYWMubmV0PgoKCSogZXhwbWVkLmMgKHN0b3JlX2JpdF9maWVsZCk6IENvcnJlY3RseSBjb21wdXRlIHNtYWxsZXN0IG1vZGUgdGhhdAoJaXMgc3VmZmljaWVudCB0byBjb250YWluIGFsbCBiaXRzIHdlIGFyZSBzdG9yaW5nLgoKMjAwMC0xMi0yNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoYnVpbGRfZnVuY3Rpb25fY2FsbF9leHByKTogTmV3IGZ1bmN0aW9uLiAgVXNlIGl0CglldmVyeXdoZXJlIGluIGxpZXUgb2YgbWFudWFsbHkgY29uc3RydWN0aW5nIGEgQ0FMTF9FWFBSLgoKMjAwMC0xMi0yNyAgQ2hhbmRyYWthbGEgQ2hhdnZhICA8Y2NoYXZ2YUByZWRoYXQuY29tPgoKCSogY2FsbHMuYyAoc3RvcmVfb25lX2FyZyk6ICBJZiBwYXJtIGlzIHBhc3NlZCBib3RoIGluIHN0YWNrIGFuZCBpbgoJcmVnaXN0ZXIgYW5kIG9mZnNldCBpcyBncmVhdGVyIHRoYW4gcmVnX3Bhcm1fc3RhY2tfc3BhY2UsIHNwbGl0Cgl0aGUgb2Zmc2V0IGFuZCBjYWxsIGVtaXRfcHVzaF9pbnNuKCkuCgoyMDAwLTEyLTI3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogaWZjdnQuYyAobm9jZV9lbWl0X3N0b3JlX2ZsYWcpOiBIYW5kbGUganVtcCBpbnNucyB0aGF0IGFyZQoJUEFSQUxMRUwuCgoyMDAwLTEyLTI3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIHJ0bC5jIChjb3B5X21vc3RfcnR4LCBzaGFsbG93X2NvcHlfcnR4KTogQ29weSBmcmFtZV9yZWxhdGVkCglmbGFnLgoKMjAwMC0xMi0yNyAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvTWFrZWZpbGUuaW46IGZpeCBmb3IgYW5jaWVudCBCb3VybmUgc2hlbGwKCSogZml4aW5jL01ha2VmaWxlLkJFT1M6IG9ic29sZXRlCgkqIGZpeGluYy9NYWtlZmlsZS5ET1M6IG9ic29sZXRlCgkqIGZpeGluYy9maXhpbmNsLnNoKExJTktTKTogdXNlIGB0ZXN0IC1kJyByYXRoZXIgdGhhbiBgbHMnIGZvciB0ZXN0aW5nCgoyMDAwLTEyLTI3ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jb20+CgoJKiBzY2hlZC1kZXBzLmMgKGdldF9jb25kaXRpb24sIGNvbmRpdGlvbnNfbXV0ZXhfcCk6IE5ldyBmdW5jdGlvbnMuCgkoYWRkX2RlcGVuZGVuY2UpOiBVc2UgdGhlbSB0byBhdm9pZCBhZGRpbmcgdW5uZWNlc3NhcnkgZGVwZW5kZW5jaWVzCgliZXR3ZWVuIGNvbmRpdGlvbmFsbHkgZXhlY3V0ZWQgaW5zbnMuCgkoc2NoZWRfYW5hbHl6ZV8xLCBzY2hlZF9hbmFseXplXzIsIHNjaGVkX2FuYWx5emVfaW5zbik6IERvbid0IGZyZWUKCWRlcGVuZGVuY3kgbGlzdHMgaWYgY3VycmVudCBpbnNuIGlzIGEgQ09ORF9FWEVDLgoKMjAwMC0xMi0yNyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGRlZmluZV9hdHRyICJsZW5ndGgiKTogQ29ycmVjdAoJY2FsY3VsYXRpb24uCgoyMDAwLTEyLTI2ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jOiBGaXggYSBjb21tZW50IHR5cG8uCgkoZ2V0X3NoaWZ0X2FsZyk6IEZpeCBhIHR5cG8gaW4gdGhlIGFzc2VtYmx5IGNvZGUgZm9yIDEyLWJpdAoJQVNISUZUUlQgaW4gSEltb2RlLiAgRG8gbm90IG91dHB1dCBleHRyYSB3aGl0ZXNwYWNlIGFmdGVyIG9uZSBsaW5lCglvZiBhc3NlbWJseSBjb2RlLiAgT3V0cHV0IGEgdGFiIGFmdGVyIGFuIG9wY29kZSBpbnN0ZWFkIG9mIGEKCXNwYWNlLgoJKGVtaXRfYV9zaGlmdCk6IE91dHB1dCBhIHRhYiBhZnRlciBhbiBvcGNvZGUgaW5zdGVhZCBvZiBhIHNwYWNlLgoKMjAwMC0xMi0yMyAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBjb25maWcvYXZyL2F2ci5jIChvdXRfbW92cWlfcl9tciwgb3V0X21vdmhpX3JfbXIsIG91dF9tb3ZzaV9yX21yLAoJb3V0X21vdnNpX21yX3IsIG91dF9tb3ZxaV9tcl9yLCBvdXRfbW92aGlfbXJfcik6IFVzZSAlbyBpbnN0ZWFkIG9mCgklNCBpbiBvdXRwdXQgdGVtcGxhdGVzLCBkbyBub3QgbW9kaWZ5IG9wZXJhbmRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgoKMjAwMC0xMi0yMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9MQUJTLCBCVUlMVF9JTl9MTEFCUywgQlVJTFRfSU5fSU1BWEFCUyk6CglEb24ndCBkZWZpbmUuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluKTogRG9uJ3QgaGFuZGxlIEJVSUxUX0lOX0xBQlMsCglCVUlMVF9JTl9MTEFCUyBhbmQgQlVJTFRfSU5fSU1BWEFCUy4KCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogVXNlIEJVSUxUX0lOX0FCUyBmb3IKCWJ1aWx0aW4gbGFicywgbGxhYnMgYW5kIGltYXhhYnMuCgkoZXhwYW5kX3RyZWVfYnVpbHRpbik6IERvbid0IGhhbmRsZSBCVUlMVF9JTl9MQUJTLCBCVUlMVF9JTl9MTEFCUwoJYW5kIEJVSUxUX0lOX0lNQVhBQlMuCgoyMDAwLTEyLTIzICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChidWlsdGluX2Z1bmN0aW9uXzIpOiBOZXcgZnVuY3Rpb24uCgkoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogVXNlIGl0IHRvIGRlZmluZSBlYWNoIHBhaXIgKGZvbywKCV9fYnVpbHRpbl9mb28pIG9mIGJ1aWx0aW5zIGluIG9uZSBwbGFjZS4KCjIwMDAtMTItMjIgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGdjY2J1Zy5pbjogQWRkIGxpYmdjaiBhbmQgcHJlcHJvY2Vzc29yIGNhdGVnb3JpZXMuCgoyMDAwLTEyLTIyICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGl0YW5pdW1fcmVvcmRlcik6IE9ubHkgc2NoZWR1bGUgc3RvcHMgaW4KCXRoZSBmaW5hbCBzY2hlZHVsaW5nIHBhc3MuCgoyMDAwLTEyLTIyICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0uaCAoc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24pOiBBZGQgbmV3IGZpZWxkCgknbHJfc2F2ZV9lbGltaW5hdGVkJy4KCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2NvbXB1dGVfc2F2ZV9yZWdfbWFzayk6IERvIG5vdCBpbmNsdWRlIHRoZQoJbGluayByZWdpc3RlciBpZiBpdHMgc2F2ZSBoYXMgYmVlbiBlbGltaW5hdGVkLgoJKG91dHB1dF9hcm1fcHJvbG9ndWUpOiBNZW50aW9uIGlmIHRoZSBzYXZlIG9mIHRoZSBsaW5rIHJlZ2lzdGVyCgloYXMgYmVlbiBlbGltaW5hdGVkLgoJKG91dHB1dF9hcm1fZXBpbG9ndWUpOiBSZW5hbWUgJ2xpdmVfcmVnc19tYXNrJyB0bwoJJ3NhdmVkX3JlZ3NfbWFzaycuCglUZXN0ICdzYXZlZF9yZWdzX21hc2snIGZvciB0aGUgbGluayByZWdpc3Rlciwgbm90IHJlZ3NfZXZlcl9saXZlLgoJKGFybV9leHBhbmRfcHJvbG9ndWUpOiBJZiB0aGUgbGluayByZWdpc3RlciBoYXMgbm90IGJlZW4gc2F2ZWQgc2V0Cglscl9zYXZlX2VsaW1pbmF0ZWQgYW5kIGVtaXQgYSBVU0UgdG8gcHJldmVudCBsYXRlciBwYXNzZXMgZnJvbQoJc2NhdmVuZ2luZyBpdC4KCgkqIGR3YXJmMm91dF9mcmFtZV9kZWJ1Z19leHByOiBBbGxvdyB0aGUgKHNjcmF0Y2gpIGZyYW1lCglwb2ludGVyIHRvIGJlIGluaXRpYWxpc2VkIGZyb20gdGhlIHN0YWNrIHBvaW50ZXIgcGx1cyBhCgljb25zdGFudC4KCjIwMDAtMTItMjIgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvbT4KCgkqIHJlZ3JlbmFtZS5jIChzdHJ1Y3QgZHVfY2hhaW4pOiBOZXcgZmllbGQgImVhcmx5Y2xvYmJlciIuCgkoZW51bSBzY2FuX2FjdGlvbnMpOiBSZW1vdmUgdW51c2VkIGVudHJ5ICJub3RlX3JlZmVyZW5jZSIuCgkoZW51bSBzY2FuX2FjdGlvbnNfbmFtZSk6IExpa2V3aXNlLgoJKG5vdGVfc2V0cywgY2xlYXJfZGVhZF9yZWdzLCBtZXJnZV9vdmVybGFwcGluZ19yZWdzKTogTmV3IHN0YXRpYwoJZnVuY3Rpb25zLgoJKHJlZ3JlbmFtZV9vcHRpbWl6ZSk6IFVzZSB0aGVtIHRvIGNvbXB1dGUgdW5hdmFpbGFibGUgcmVnczsgZ2V0CglyaWQgb2YgdGhlIG1vcmUgc2ltcGxlbWluZGVkIGNvZGUgd2UgdXNlZCB0byBoYXZlIGhlcmUuCglVc2UgYSB0aWNrIGFycmF5IHRvIGVuc3VyZSByZWdpc3RlcnMgYXJlIGFsbG9jYXRlZCBpbiBhIG1vcmUKCXJvdW5kLXJvYmluIHdheS4gIERpc2FibGUgY29kZSB0aGF0IG9ubHkgb3B0aW1pemVzIHJlZ2lzdGVycwoJdGhhdCB3ZXJlIHNlZW4gbW9yZSB0aGFuIG9uY2UuCgkocmVmZXJlbmNlZF9yZWdzKTogUmVtb3ZlIHZhcmlhYmxlLgoJKHNjYW5fcnR4X3JlZyk6IE5ldyBhcmcgImVhcmx5Y2xvYmJlciIuICBBbGwgY2FsbGVycyBjaGFuZ2VkLgoJU3RvcmUgaXRzIHZhbHVlIGluIG5ld2x5IGdlbmVyYXRlZCBkdV9jaGFpbiBzdHJ1Y3R1cmVzLgoJQWRkIG5ldyBkdV9jaGFpbnMgYXQgdGhlIGVuZCwgbm90IHRoZSBzdGFydCwgb2YgdGhlIGxpc3QuCglEb24ndCBoYW5kbGUgdGhlICJub3RlX3JlZmVyZW5jZSIgYWN0aW9uLgoJKHNjYW5fcnR4KTogTmV3IGFyZyAiZWFybHljbG9iYmVyIi4gIEFsbCBjYWxsZXJzIGNoYW5nZWQuCgkoYnVpbGRfZGVmX3VzZSk6IExvc2UgY29kZSB0byBrZWVwIHRyYWNrIG9mIHJlZmVyZW5jZWQgcmVncy4KCjIwMDAtMTItMjIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChzY2hlZC1kZXBzLm8sIHNjaGVkLXJnbi5vKTogRml4IGRlcGVuZGVuY3kgdHlwby4KCgkqIGZwLWJpdC5oICh1c2lfdG9fZmxvYXQpOiBBZGQgcHJvdG90eXBlLgoKCSogaTM4Ni5jIChpeDg2X2V4cGFuZF9idWlsdGluKTogRGVsZXRlIHVudXNlZCBsYWJlbC4KCgkqIGR3YXJmMm91dC5jIChmaWxlX2luZm9fY21wKTogUHJvdG90eXBlLgoJKGR3YXJmMm91dF9saW5lKTogSGlkZSB2YXJpYWJsZSBgb2xkX2luX3VzZScuCgoJKiBvYmpjLWFjdC5jIChvYmpjX2ZhdGFsKTogRGVsZXRlLgoKCSogc2NoZWQtdmlzLmMgKHZpc3VhbGl6ZV9zdGFsbF9jeWNsZXMpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoKCSogc3lzdGVtLmggKGdldG9wdCk6IEZpeCBlcnJvciBpbiBsYXN0IGNoYW5nZS4KCgkqIHZhcmFzbS5jIChhc3NlbWJsZV90cmFtcG9saW5lX3RlbXBsYXRlKTogQ29uc3RpZnkuCgoyMDAwLTEyLTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGNvbGxlY3QyLmMgKG1haW4pOiBVc2UgYXV0b19kZW1hbmdsaW5nLgoKMjAwMC0xMi0yMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBVcGRhdGUgcGFybSdzIERFQ0xfSU5DT01JTkdfUlRMCgl3aGVuIG9wdGltaXppbmcgUEFSQUxMRUwgdG8gUkVHLgoKMjAwMC0xMi0yMiAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtc0ByZWRoYXQuY29tPgoKCSogcmVsb2FkLmMgKHVwZGF0ZV9hdXRvX2luY19ub3Rlcyk6IE5ldywgYnJva2VuIG91dCBmcm9tIC4uLgoJKGZpbmRfcmVsb2Fkc19hZGRyZXNzXzEpOiAuLi4gdXNlIGhlcmUsIGFsc28gY29ycmVjdCBwb3NzaWJsZQoJdXNlIG9mIHVuaW5pdGlhbGlzZWQgcmVsb2FkbnVtLgoKMjAwMC0xMi0yMSAgRGF2aWQgTydCcmllbiAgPG9icmllbkBGcmVlQlNELm9yZz4KCgkqIGNvbmZpZy9mcmVlYnNkLmggKExJQl9TUEVDKTogcmVtb3ZlIC1rdGhyZWFkIG9wdGlvbi4KCjIwMDAtMTItMjIgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIHJlc291cmNlLmMgKG1hcmtfc2V0X3Jlc291cmNlcyk6IFVzZSBNQVJLX1NSQ19ERVNUIGZvcgoJUFJFX01PRElGWSBhbmQgUE9TVF9NT0RJRlkgY2FzZXMuCgoJKiBydGxhbmFsLmMgKHNpZGVfZWZmZWN0c19wKTogSGFuZGxlIFBSRV9NT0RJRlkgYW5kIFBPU1RfTU9ESUZZLgoKMjAwMC0xMi0yMiAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogbWQudGV4aSAoTG9vcGluZyBQYXR0ZXJucyk6IE5ldyBub2RlLgoKMjAwMC0xMi0yMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ2NjLnRleGksIGNwcC50ZXhpOiBVcGRhdGUgbGFzdC11cGRhdGVkIGRhdGVzLgoKMjAwMC0xMi0yMSAgQ2hhbmRyYWthbGEgQ2hhdnZhICA8Y2NoYXZ2YUByZWRoYXQuY29tPgoKCSogdmFyYXNtLmMgKG91dHB1dF9hZGRyZXNzZWRfY29uc3RhbnRzKTogVXNlIGxhbmd1YWdlIHNwZWNpZmljCglleHBhbmRlciBvbiB1bmtub3duIG5vZGVzLgoKMjAwMC0xMi0yMSAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtc0ByZWRoYXQuY29tPgoKCSogY29tYmluZS5jIChkaXN0cmlidXRlX25vdGVzKTogSGFuZGxlIFJFR19OT05fTE9DQUxfR09UTyBub3Rlcy4KCjIwMDAtMTItMjEgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChvdXRfb2JqZWN0X2ZpbGUpOiBEZXBlbmQgb24gc2NoZWQtaW50LmguCgkqIHJ0bC5oIChzaW5nbGVfc2V0XzEpOiBOZXcgbWFjcm8uCgkoc2luZ2xlX3NldF8yKTogUmVuYW1lZCBmcm9tIHNpbmdsZV9zZXRfMSBhbmQgZXh0cmEgYXJndW1lbnQgYWRkZWQuCgkqIHJ0bGFuYWwuYyAoc2luZ2xlX3NldF8yKTogTGlrZXdpc2UuCgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oIChnZXRfYnVuZGxlX25hbWUsIGlhNjRfaXNzdWVfcmF0ZSwKCWlhNjRfYWRqdXN0X2Nvc3QsIGlhNjRfc2NoZWRfaW5pdCwgaWE2NF9zY2hlZF9maW5pc2gsCglpYTY0X3NjaGVkX3Jlb3JkZXIsIGlhNjRfc2NoZWRfcmVvcmRlcjIsIGlhNjRfdmFyaWFibGVfaXNzdWUpOgoJRGVjbGFyZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jOiBJbmNsdWRlICJzY2hlZC1pbnQuaCIuCgkoaGFyZF9yZWdub19yZW5hbWVfb2spOiBBbHNvIGRpc2FsbG93IHJlbmFtaW5nIGZyb20gdGhlIHZhcmlvdXMKCXJlZ19zYXZlXyogcmVncy4KCShpYTY0X3NhZmVfaXRhbml1bV9yZXF1aWVyc191bml0MCwgaWE2NF9zYWZlX2l0YW5pdW1fY2xhc3MsCglpYTY0X3NhZmVfdHlwZSwgaW5pdF9pbnNuX2dyb3VwX2JhcnJpZXJzLCBncm91cF9iYXJyaWVyX25lZWRlZF9wLAoJc2FmZV9ncm91cF9iYXJyaWVyX25lZWRlZF9wLCBmaXh1cF9lcnJhdGEpOiBOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCShydHhfbmVlZHNfYmFycmllcik6ICBIYW5kbGUgYnVuZGxlIHNlbGVjdG9yIGFuZCBjeWNsZSBkaXNwbGF5CglpbnNucy4KCShlbWl0X2luc25fZ3JvdXBfYmFycmllcnMpOiBBY2NlcHQgYWRkaXRpb25hbCBGSUxFICogYXJnLiAgQWxsCgljYWxsZXJzIGNoYW5nZWQuICBSZXdvcmsgdG8gb25seSBnZW5lcmF0ZSBzdG9wIGJpdHMgYmV0d2VlbgoJYmFzaWMgYmxvY2tzIHRoYXQgaGF2ZW4ndCBiZWVuIGluc2VydGVkIGJ5IHNjaGVkdWxpbmcuCgkoc3RydWN0IGJ1bmRsZSwgc3RydWN0IGlhNjRfcGFja2V0KTogTmV3IHN0cnVjdHVyZXMuCgkoTlJfQlVORExFUywgTlJfUEFDS0VUUyk6IE5ldyBtYWNyb3MuCgkoYnVuZGxlLCBwYWNrZXRzLCB0eXBlX25hbWVzKTogTmV3IHN0YXRpYyBhcnJheXMuCgkoaWE2NF9maW5hbF9zY2hlZHVsZSk6IE5ldyB2YXJpYWJsZS4KCShpYTY0X3NpbmdsZV9zZXQsIGluc25fbWF0Y2hlc19zbG90LCBpYTY0X2VtaXRfaW5zbl9iZWZvcmUsCglnZW5fbm9wX3R5cGUsIGZpbmlzaF9sYXN0X2hlYWQsIHJvdGF0ZV9vbmVfYnVuZGxlLCByb3RhdGVfdHdvX2J1bmRsZXMsCgljeWNsZV9lbmRfZmlsbF9zbG90cywgcGFja2V0X21hdGNoZXNfcCwgZ2V0X3NwbGl0LCBmaW5kX2Jlc3RfaW5zbiwKCWZpbmRfYmVzdF9wYWNrZXQsIGl0YW5pdW1fcmVvcmRlciwgZHVtcF9jdXJyZW50X3BhY2tldCwgc2NoZWR1bGVfc3RvcCk6CglOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCShpYTY0X2lzc3VlX3JhdGUsIGlhNjRfc2NoZWRfaW5pdCwgaWE2NF9zY2hlZF9yZW9yZGVyLAoJaWE2NF9zY2hlZF9maW5pc2gsIGlhNjRfc2NoZWRfcmVvcmRlcjIsIGlhNjRfdmFyaWFibGVfaXNzdWUpOiBOZXcKCWZ1bmN0aW9ucy4KCShpYTY0X3Jlb3JnKTogUGVyZm9ybSBhIGZpbmFsIHNjaGVkdWxpbmcgcGFzcy4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChDT05TVF9DT1NUUyk6IFNsaWdodGx5IGluY3JlYXNlIFNZTUJPTF9SRUYgY29zdHMuCgkoTUFYX0NPTkRJVElPTkFMX0VYRUNVVEUsIEFESlVTVF9DT1NULCBJU1NVRV9SQVRFLCBNRF9TQ0hFRF9JTklULAoJTURfU0NIRURfUkVPUkRFUiwgTURfU0NIRURfUkVPUkRFUjIsIE1EX1NDSEVEX0ZJTklTSCwKCU1EX1NDSEVEX1ZBUklBQkxFX0lTU1VFKTogRGVmaW5lIG1hY3Jvcy4KCShpYTY0X2ZpbmFsX3NjaGVkdWxlKTogRGVjbGFyZSB2YXJpYWJsZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoYXR0ciBpdGFuaXVtX2NsYXNzKTogQWRkIHNvbWUgbW9yZSBjbGFzc2VzLgoJKGF0dHIgdHlwZSk6IEFjY291bnQgZm9yIHRoZW0uCgkoaXRhbml1bV9yZXF1aXJlc191bml0MCk6IE5ldyBhdHRyaWJ1dGUuCgkoZnVuY3Rpb24gdW5pdHMpOiBSZXdyaXRlLgoJKHNvbWUgc3BsaXR0ZXJzKTogRG9uJ3QgY3JlYXRlIHNjaGVkdWxpbmcgYmFycmllcnMgaGVyZS4KCShncl9zcGlsbF9pbnRlcm5hbCwgZ3JfcmVzdG9yZV9pbnRlcm5hbCk6IERvbid0IHByZWRpY2F0ZSB0aGUKCXBzZXVkby1vcC4KCShub3BfbSwgbm9wX2ksIG5vcF9mLCBub3BfYiwgbm9wX3gsIGN5Y2xlX2Rpc3BsYXksIGN5Y2xlX2Rpc3BsYXlfMSwKCWJ1bmRsZV9zZWxlY3Rvcik6IE5ldyBwYXR0ZXJucy4KCShpbnNuX2dyb3VwX2JhcnJpZXIpOiBOb3cgaGFzIGFuIG9wZXJhbmQuCgoyMDAwLTEyLTIxICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChzaW1wbGVfZGVjbF9hbGlnbl9pbl9iaXRzKTogbmV3CgkoZmllbGRfYnl0ZV9vZmZzZXQpOiBUcnkgYm90aCB0aGUgdHlwZSBhbGlnbiBhbmQgdGhlCglkZWNsIGFsaWduLCB1c2Ugd2hpY2hldmVyIHdvcmtzLCBwcmVmZXJyaW5nIHRoZSB0eXBlIGFsaWduLgoKMjAwMC0xMi0yMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ2NjYnVnLmluOiBGaXggdHlwby4KCjIwMDAtMTItMjAgIEJlbmphbWluIEtvc25payAgPGJrb3pAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChnY2NfZ3h4X3RhcmdldF9pbmNsdWRlX2Rpcik6IFVzZSBpbnN0ZWFkIG9mCglidWlsZF90b29sZGlyIGFuZCBsaWJzdGRjeHhfaW5jZGlyLgoKMjAwMC0xMi0yMCAgUm9iZXJ0IExpcGUgPHJvYmVydGxpcGVAdXNhLm5ldD4KCgkqIGhhaWZhLXNjaGVkLmMgKHNjaGVkdWxlX2Jsb2NrKTogUHJvdmlkZSBlbXB0eSBzb3VyY2Ugc3RhdGVtZW50CglpZiBub3QgTURfU0NIRURfUkVPUkRFUjIuCgoyMDAwLTEyLTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogcnRsLmggKFJFR19OT05fTE9DQUxfR09UTyk6IE5ldy4KCSogcnRsLmMgKHJlZ19ub3RlX25hbWUpOiBVcGRhdGUuCgkqIHN0bXQuYyAoZXhwYW5kX2dvdG8pOiBFbWl0IGEgUkVHX05PTl9MT0NBTF9HT1RPIG5vdGUuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX2xvbmdqbXApOiBMaWtld2lzZS4KCSogZmxvdy5jIChtYWtlX2VkZ2VzKTogQ2hlY2sgZm9yIFJFR19OT05fTE9DQUxfR09UTyBhbmQgZG8KCW5vdCBlbWl0IGFuIGVkZ2UuCgoyMDAwLTEyLTIwICBNYXJlayBNaWNoYWxraWV3aWN6ICA8bWFyZWttQGxpbnV4Lm9yZy5wbD4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKG91dF9tb3ZzaV9yX21yLCBvdXRfbW92c2lfbXJfciwgb3V0X21vdmhpX21yX3IpOgoJRG8gbm90IG91dHB1dCB1bmRlZmluZWQgb3Bjb2RlcyB3aGVyZSBzb3VyY2Ugb3IgZGVzdGluYXRpb24gcmVnaXN0ZXIKCW92ZXJsYXBzIHdpdGggbW9kaWZpZWQgcG9pbnRlciByZWdpc3Rlci4gIEhhbmRsZSAoWCArIGQpIGFkZHJlc3Nlcy4KCSogY29uZmlnL2F2ci9hdnIubWQgKCptb3ZoaSwgKm1vdnNpLCAqbW92c2YpOiBDb3JyZWN0IGluc24gbGVuZ3RoCglpbiBhbHRlcm5hdGl2ZXMgd2l0aCBtZW1vcnkgb3BlcmFuZC4KCjIwMDAtMTItMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLXR5cGVjay5jIChidWlsZF9hc21fc3RtdCk6IE5ldywgYnJva2VuIG91dCBmcm9tIC4uLgoJKGNfZXhwYW5kX2FzbV9vcGVyYW5kcyk6IC4uLiBoZXJlLiAgSnVzdCBkbyBydGwgZXhwYW5zaW9uLgoJKGNfZXhwYW5kX3JldHVybik6IFJldHVybiB0aGUgbmV3IHN0bXQgbm9kZS4KCShjX3N0YXJ0X2Nhc2UsIGRvX2Nhc2UpOiBMaWtld2lzZS4KCSogYy1jb21tb24uYyAoY19leHBhbmRfZXhwcl9zdG10KTogTGlrZXdpc2UuCgkqIGMtY29tbW9uLmg6IFVwZGF0ZSBkZWNsYXJhdGlvbnMuCgkqIGMtdHJlZS5oOiBMaWtld2lzZS4KCSogYy1zZW1hbnRpY3MuYyAoYnVpbGRfc3RtdCk6IFVzZSBTVE1UX0xJTkVOTyBub3QgVFJFRV9DT01QTEVYSVRZLgoJKiBjLXBhcnNlLmluIChmbmRlZik6IFNldCBERUNMX1NPVVJDRV9MSU5FIHRvIHRoZSBvcGVuIGJyYWNlLgoJKG5lc3RlZF9mdW5jdGlvbiwgbm90eXBlX25lc3RlZF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGNvbXBzdG10KTogUmV0dXJuIHRoZSBjb21wb3VuZCBzdGF0ZW1lbnQgbm90IHRoZSBiaW5kaW5nIGxldmVsLgoJKGxpbmVub19sYWJlbGVkX3N0bXQpOiBTaW1wbGlmeS4KCShsaW5lbm9fc3RtdCwgbGluZW5vX2xhYmVsKTogU2V0IFNUTVRfTElORU5PLgoJKHN0bXQsIGxhYmVsKTogUmV0dXJuIHRoZSBuZXcgc3RtdCBub2RlLgoKMjAwMC0xMi0yMCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKE9CSlMpOiBBZGQgc2NoZWQtZWJiLm8uCgkoc2NoZWQtZWJiLm8pOiBOZXcgcnVsZS4KCShzY2hlZC12aXMubyk6IERlcGVuZCBvbiBoYXJkLXJlZy1zZXQuaCBhbmQgJChCQVNJQ19CTE9DS19IKS4KCShoYWlmYS1zY2hlZC5vKTogRGVwZW5kIG9uIGluc24tZmxhZ3MuaC4KCSogaGFpZmEtc2NoZWQuYzogSW5jbHVkZSAiaW5zbi1mbGFncy5oIi4KCShwcmlvcml0eSk6IERvbid0IGFjY2VzcyBCTE9DS19OVU0sIHVzZSB0aGUgbmV3IGNvbnRyaWJ1dGVzX3RvX3ByaW9yaXR5CgljYWxsYmFjay4KCSogcnRsLmggKHNjaGVkdWxlX2ViYnMpOiBEZWNsYXJlLgoJKiBzY2hlZC1pbnQuaCAoc3RydWN0IHNjaGVkX2luZm8pOiBBZGQgbmV3IG1lbWJlcnMKCWNvbnRyaWJ1dGVzX3RvX3ByaW9yaXR5IGFuZCBjb21wdXRlX2p1bXBfcmVnX2RlcGVuZGVuY2llcy4KCSogc2NoZWQtcmduLmMgKGNvbnRyaWJ1dGVzX3RvX3ByaW9yaXR5LCBjb21wdXRlX2p1bXBfcmVnX2RlcGVuZGVuY2llcyk6CglOZXcgZnVuY3Rpb25zLgoJKHJlZ2lvbl9zY2hlZF9pbmZvKTogQWRkIHRoZW0uCgkqIHNjaGVkLXZpcy5jOiBJbmNsdWRlICJoYXJkLXJlZy1zZXQuaCIgYW5kICJiYXNpYy1ibG9jay5oIi4KCSogc2NoZWQtZWJiLmM6IE5ldyBmaWxlLgoJKiBzY2hlZC1kZXBzLmMgKHNjaGVkX2FuYWx5emVfaW5zbik6IEFkZCBjb2RlIHRvIGhhbmRsZSBKVU1QX0lOU05zLgoKCSogZmxvdy5jIChpb3JfcmVnX2NvbmQsIGFuZF9yZWdfY29uZCwgZWxpbV9yZWdfY29uZCk6IFByb3Blcmx5CgloYW5kbGUgYWxsIHJlbGF0aW9uYWwgb3BlcmF0b3JzLgoKMjAwMC0xMi0yMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBmaW5hbC5jIChvdXRwdXRfYWRkcl9jb25zdCk6IFVzZSBBU01fT1VUUFVUX1NZTUJPTF9SRUYuCgkqIHRtLnRleGk6IERvY3VtZW50IGl0LgoKMjAwMC0xMi0xOSAgQmVuamFtaW4gS29zbmlrICA8YmtvekByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKC1ER1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIpOiBVc2UgYnVpbGRfdG9vbGRpcgoJaW5zdGVhZCBvZiBnY2NfdG9vbGRpci4KCjIwMDAtMTItMTkgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBzeXN0ZW0uaCAoZ2V0b3B0KTogVXBkYXRlIHByb3RvdHlwZSB0byBtYXRjaCBpbmNsdWRlL2dldG9wdC5oLgoKMjAwMC0xMi0xOSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCglGcm9tIEplZmYgTGF3LgoJKiBwYS5jIChiYXNlcmVnX29wZXJhbmQpOiBTaW1wbGlmeS4KCjIwMDAtMTItMTkgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogaGFpZmEtc2NoZWQuYyAocm1fbGluZV9ub3Rlcyk6IEFyZ3VtZW50cyBhcmUgbm93IGhlYWQgYW5kIHRhaWwsCglub3QgYmxvY2sgbnVtYmVyLiAgQWxsIGNhbGxlcnMgYW5kIHByb3RvdHlwZSBjaGFuZ2VkLgoJKHNldF9wcmlvcml0aWVzKTogTGlrZXdpc2UuCgkoc2F2ZV9saW5lX25vdGVzKTogQWRkIGhlYWQgYW5kIHRhaWwgYXJndW1lbnRzOyBhbGwgY2FsbGVycyBhbmQKCXByb3RvdHlwZSBjaGFuZ2VkLgoJKHJlc3RvcmVfbGluZV9ub3Rlcyk6IExpa2V3aXNlLiAgRG9uJ3QgY3Jhc2ggb24gaW5zbnMgZ2VuZXJhdGVkCglkdXJpbmcgc2NoZWR1bGluZy4KCShzY2hlZHVsZV9ibG9jayk6IERvbid0IHVzZSBCTE9DS19IRUFEL0JMT0NLX0VORCBtYWNyb3MuCglDYWxsIE1EX1NDSEVEX0lOSVQgd2l0aCBhZGRpdGlvbmFsIGFyZ3VtZW50LgoJV2hlbiBzdGFydGluZyBhIG5ldyBjeWNsZSwgZW1pdCBjeWNsZV9kaXNwbGF5IGluc25zIGlmIGF2YWlsYWJsZS4KCURvbid0IHN0b3Agc2NoZWR1bGluZyB3aGVuIGVuY291bnRlcmluZyBhIEpVTVBfSU5TTiwgYnV0IGFkZCBhbm90aGVyCgljYWxsIHRvIHNjaGVkdWxlX21vcmVfcCBpbiB0aGUgaW5uZXIgbG9vcC4KCUNhbGwgTURfU0NIRURfUkVPUkRFUjIgYWZ0ZXIgc2NoZWR1bGluZyBhbiBpbnNuLgoJQ2FsbCBNRF9TQ0hFRF9GSU5JU0ggb25jZSBhbGwgaW5zbnMgYXJlIHNjaGVkdWxlZC4KCShzY2hlZF9pbml0KTogQ29tcGVuc2F0ZSBmb3IgdGhlIGZhY3QgdGhhdCBnZXRfYmxvY2tfaGVhZF90YWlsCglkb2Vzbid0IGluY2x1ZGUgbGVhZGluZyBub3Rlcy4KCSogc2NoZWQtZGVwcy5jIChmcmVlX2RlcHMpOiBGcmVlIHZlY3RvcnMgaGVyZS4KCSogc2NoZWQtcmduLmMgKGNvbXB1dGVfYmxvY2tfYmFja3dhcmRfZGVwZW5kZW5jaWVzKTogTm90IGhlcmUuCgkobGFzdF93YXNfanVtcCk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkoc2NoZWR1bGVfbW9yZV9wKTogVGVzdCBpdC4KCShpbml0X3JlYWR5X2xpc3QpOiBJbml0aWFsaXplIGl0LgoJKGNhbl9zY2hlZHVsZV9yZWFkeV9wKTogU2V0IGl0IGlmIHdlIGhhdmUgYSBKVU1QX0lOU04uCgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKE1EX1NDSEVEX0lOSVQpOiBBZGQgbmV3IGFyZy4KCSogY29uZmlnL20zMnIvbTMyci5oIChNRF9TQ0hFRF9JTklUKTogQWRkIG5ldyBhcmcuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChNRF9TQ0hFRF9JTklUKTogQWRkIG5ldyBhcmcuCgoJKiBtZC50ZXhpIChjeWNsZV9kaXNwbGF5KTogRG9jdW1lbnQuCgkqIHRtLnRleGkgKE1EX1NDSEVEX0lOSVQpOiBEb2N1bWVudCBuZXcgYXJnLgoJKE1EX1NDSEVEX0ZJTklTSCwgTURfU0NIRURfUkVPUkRFUjIpOiBEb2N1bWVudC4KCgkqIGZsb3cuYyAoaW9yX3JlZ19jb25kLCBuYW5kX3JlZ19jb25kLCBub3RfcmVnX2NvbmQpOiBSZXdyaXRlCgl0byB1c2UgZGlmZmVyZW50IHJlcHJlc2VudGF0aW9uLiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4KCShhbmRfcmVnX2NvbmQpOiBSZW5hbWVkIGZyb20gbmFuZF9yZWdfY29uZDsgY2FsbGVyIGNoYW5nZWQuCgkoaW5pdF9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IERvbid0IHRlc3QgZmxhZ3MgdG8gZGV0ZXJtaW5lCgl3aGV0aGVyIHRvIGNvbXB1dGUgY29uZGl0aW9uYWwgbGlmZXRpbWVzLgoJQWRqdXN0IGNvZGUgZm9yIG5ldyByZXByZXNlbnRhdGlvbiBvZiBjb25kaXRpb25hbCBsaWZldGltZXMuCgkobWFya19yZWdub19jb25kX2RlYWQpOiBTaW1pbGFyIGFkanVzdG1lbnQuCgkoZnJlZV9yZWdfY29uZF9saWZlX2luZm8pOiBTaW1pbGFyIGFkanVzdG1lbnQuCgkoZWxpbV9yZWdfY29uZCk6IE5ldyBmdW5jdGlvbi4KCShmbHVzaF9yZWdfY29uZF8xKTogVXNlIGl0LgoKMjAwMC0xMi0xOSAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQHJlZGhhdC5jb20+CgoJKiByZWxvYWQxLmMgKHJlbG9hZF9jb21iaW5lKTogVGFrZSBtdWx0aS1oYXJkLXJlZ3MgaW50byBhY2NvdW50Cgl3aGVuIHByb2Nlc3NpbmcgQ0FMTF9JTlNOX0ZVTkNUSU9OX1VTQUdFLgoKMjAwMC0xMi0xOSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogaW52b2tlLnRleGkgKC1wcmludC1zZWFyY2gtZGlycyk6IE1ha2UgcmVmZXJlbmNlcyB0byBjcHAgcmVmZXIKCXRvIGNwcDAgaW5zdGVhZC4KCjIwMDAtMTItMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZvbGQtY29uc3QuYyAodHJlZV9leHByX25vbm5lZ2F0aXZlX3ApOiBUcmVhdCB0cnV0aCB2YWx1ZXMgYXMKCW5vbi1uZWdhdGl2ZS4KClR1ZSBEZWMgMTkgMDA6Mzc6MDggMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvbT4KCgkqIHJlbG9hZC5jIChwdXNoX3JlbG9hZCk6IFdoZW4gdXNpbmcgYSBkeWluZyByZWdpc3RlciBmb3IgdGhlIHJlbG9hZAoJcmVnaXN0ZXIgaW4gYW4gaW4tb3V0IHJlbG9hZCwgdXNlIG91dG1vZGUgaWYgd2lkZXIgdGhhbiBpbm1vZGUuCgoyMDAwLTEyLTE5ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjb25maWcvZDMwdi9kMzB2LmggKEVYSVRfQk9EWSk6IFVwZGF0ZSBjb21tZW50LgoKMjAwMC0xMi0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogY29uZmlnLmdjYyAoKi0qLWxpbnV4Kik6IERvbid0IGRlZmluZSBIQVZFX0FURVhJVCBvciBCU1RSSU5HLgoJKiB0bS50ZXhpIChFWElUX0JPRFkpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCSogY29uZmlnL2ZyZWVic2QuaCwgY29uZmlnL25ldHdhcmUuaCwgY29uZmlnL2FybS9jb2ZmLmgsCgljb25maWcvYXJtL2Nvbml4LWVsZi5oLCBjb25maWcvYXJtL3Vua25vd24tZWxmLmgsCgljb25maWcvZDMwdi9kMzB2LmgsIGNvbmZpZy9tY29yZS9tY29yZS5oLCBjb25maWcvcGovcGouaCwKCXNwYXJjL3NwODZ4LWFvdXQuaDogUmVtb3ZlIGRlZmluaXRpb25zIG9mIEhBVkVfQVRFWElUIChzb21lCgljb21tZW50ZWQgb3V0KSBhbmQgYXNzb2NpYXRlZCBjb21tZW50cy4KCjIwMDAtMTItMTggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKFNURF9DOUwsIEFESl9TVEQpOiBEZWZpbmUuCgkocHJpbnRmX2xlbmd0aF9zcGVjcywgc2NhbmZfbGVuZ3RoX3NwZWNzKTogTWFyayAibGwiIGFzIHN0YW5kYXJkCglTVERfQzlMLgoJKFQ5OV9MTCk6IFJlbmFtZSB0byBUOUxfTEwuCgkoVDk5X1VMTCk6IFJlbmFtZSB0byBUOUxfVUxMLgoJKHByaW50X2NoYXJfdGFibGUsIHNjYW5fY2hhcl90YWJsZSk6IFVzZSBUOUxfTEwgYW5kIFQ5TF9VTEwKCWluc3RlYWQgb2YgVDk5X0xMIGFuZCBUOTlfVUxMLgoJKGNoZWNrX2Zvcm1hdF9pbmZvX21haW4pOiBVc2UgQURKX1NURCBvbiBhbGwgZm9ybWF0IHN0YW5kYXJkCgl2ZXJzaW9ucyBiZWluZyBjb21wYXJlZC4KCSogYy1jb21tb24uaDogRGVjbGFyZSB3YXJuX2xvbmdfbG9uZy4KCSogYy10cmVlLmg6IERvbid0IGRlY2xhcmUgd2Fybl9sb25nX2xvbmcuCgoyMDAwLTEyLTE4ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBDT1BZSU5HOiBVcGRhdGUgdG8gY3VycmVudAoJZnRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9MaWNlbnNlcy9DT1BZSU5HLTIuMCAoZml4ZXMgcmVmZXJlbmNlcwoJdG8gMTl5eSBhcyBleGFtcGxlIHllYXIgaW4gY29weXJpZ2h0IG5vdGljZSkuCgoyMDAwLTEyLTE4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBjLWxleC5jIChjYl9maWxlX2NoYW5nZSk6IFRyZWF0IGluX3N5c3RlbV9oZWFkZXIgYXMgc3RyaWN0bHkKCWJvb2xlYW4gKDAgb3IgMSkuCgoyMDAwLTEyLTE4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBjcHBtYWluLmM6IFVwZGF0ZSBwcmludC5saW5lbm8gd2l0aCAtUC4KCjIwMDAtMTItMTggIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGMtbGV4LmM6IHMvY2hhbmdlX2ZpbGUvZmlsZV9jaGFuZ2UuCgkqIGNwcGxpYi5oOiBTaW1pbGFybHkuCgkqIGNwcG1haW4uYzogU2ltaWxhcmx5LgoJKiBmaXgtaGVhZGVyLmM6IFNpbWlsYXJseS4KCSogY3BwZmlsZXMuYyAoc3RhY2tfaW5jbHVkZV9maWxlKTogUGFzcyB0aGUgYnVmZmVyIGxvY2F0aW9uIGFuZAoJc2l6ZSB0byBjcHBfcHVzaF9idWZmZXIuICBHZW5lcmF0ZSB0aGUgZmlsZV9jaGFuZ2UgY2FsbGJhY2ssCglzbyB0aGF0IHN5c3AgaXMgYWxyZWFkeSBzZXQuCgkqIGNwcGhhc2guaDogQWRkIF9jcHBfZG9fZmlsZV9jaGFuZ2UuCgkqIGNwcGxpYi5jIChkb19saW5lKTogU2V0IGJ1ZmZlci0+c3lzcCBkaXJlY3RseS4gR2VuZXJhdGUgdGhlCglmaWxlX2NoYW5nZSBjYWxsYmFjayBhZnRlciBzZXR0aW5nIHN5c3AuCgkoX2NwcF9kb19maWxlX2NoYW5nZSk6IEhhbmRsZSBGQ19FTlRFUiBhbmQgdGhlIEZDX1JFTkFNRSBleGNlcHRpb24KCWhlcmUuCgkoY3BwX3B1c2hfYnVmZmVyKTogRG9uJ3QgZ2VuZXJhdGUgYSBjYWxsYmFjay4gIENsZWFyIHN5c3AuCgkoY3BwX3BvcF9idWZmZXIpOiBDbGVhbiB1cCBsb2dpYy4KCjIwMDAtMTItMTggIEJlbmphbWluIEtvc25payAgPGJrb3pAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoZ2NjX2d4eF9pbmNsdWRlX2Rpcik6IFNpbXBsaWZ5LgoJKGxpYnN0ZGN4eF9pbmNkaXIpOiBFeHBvcnQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogTWFrZWZpbGUuaW4gKFBSRVBST0NFU1NPUl9ERUZJTkVTKTogQWRkIGluCglHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUiBiaXRzIGhlcmUuLgoJKGxpYnN0ZGN4eF9pbmNkaXIpOiBBZGQuCgkqIGNwcGRlZmF1bHQuYyAoR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIpOiBBZGQgc2VhcmNoIHBhdGguCgoyMDAwLTEyLTE4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBjLWxleC5jIChsZXhfbGluZW5vKTogUmVtb3ZlLgoJKGluaXRfY19sZXgsIGNfbGV4KTogUmVtb3ZlIGxleF9saW5lbm8uCgkoY2JfY2hhbmdlX2ZpbGUpOiBVcGRhdGUgbGluZW5vIGNvcnJlY3RseSwgYm90aCBiZWZvcmUgY2FsbGluZwoJcHVzaF9zcmNsb2MgYW5kIGJlZm9yZSBsZWF2aW5nIHRoZSBmdW5jdGlvbi4KCShjYl9kZWZfcHJhZ21hKTogU2V0IGxpbmVubyBiZWZvcmUgb3V0cHV0dGluZyBkaWFnbm9zdGljcy4KClN1biBEZWMgMTcgMTg6NDU6NDEgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IFByaW50IERFQ0xfVVNFUl9BTElHTiBhbmQgVFlQRV9VU0VSX0FMSUdOLgoJUHJpbnQgVFlQRV9NSU5fVkFMVUUgYW5kIFRZUEVfTUFYX1ZBTFVFIGZvciBSRUFMX1RZUEUuCglVc2UgcHJpbnRfbm9kZV9icmllZiB0byBwcmludCBib3VuZHMuCgoyMDAwLTEyLTE3ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9yZWFkZXIpOiBSZW1vdmUgcmVmZXJlbmNlcyB0byBzdHJpbmdfcG9vbAoJYW5kIHRlbXBfc3RyaW5nX3Bvb2wuCgkqIGNwcGluaXQuYyAoY3BwX2NyZWF0ZV9yZWFkZXIsIGNwcF9jbGVhbnVwKTogU2ltaWxhcmx5OyB1c2luZwoJaWRlbnRfcG9vbCBpbiBwbGFjZS4KCSogY3BwbGV4LmMgKHBhcnNlX251bWJlciwgdW5lc2NhcGVkX3Rlcm1pbmF0b3JfcCwgcGFyc2Vfc3RyaW5nLAoJc2F2ZV9jb21tZW50LCBjcHBfdG9rZW5fYXNfdGV4dCk6IFNpbWlsYXJseS4KCSogY3BwbGliLmMgKGRvX2RlZmluZSwgZ2x1ZV9oZWFkZXJfbmFtZSwgcGFyc2VfYXNzZXJ0aW9uKTogU2ltaWxhcmx5LgoJKiBjcHBtYWNyby5jIChtYWtlX251bWJlcl90b2tlbiwgYnVpbHRpbl9tYWNybywgbG9ja19wb29scywKCXVubG9ja19wb29scywgc3RyaW5naWZ5X2FyZywgcGFzdGVfdG9rZW5zKTogU2ltaWxhcmx5LgoKU3VuIERlYyAxNyAxMjo0MTo0OCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZHdhcmYyb3V0LmMgKGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZSwgY2FzZSBOT1BfRVhQUik6IE5ldyBjYXNlLgoJKGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZSwgY2FzZSBDT05WRVJUX0VYUFIpOiBMaWtld2lzZS4KCShsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUsIGNhc2UgTk9OX0xWQUxVRV9FWFBSKTogTGlrZXdpc2UuCgoyMDAwLTEyLTE3ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIE1ha2VmaWxlLmluIChjaGVjay1wbyk6IFVzZSAkKE1BS0UpLgoJKHJpc2t5LXN0YWdlMSwgcmlza3ktc3RhZ2UyLCByaXNreS1zdGFnZTMsIHJpc2t5LXN0YWdlNCk6IExpa2V3aXNlLgoKMjAwMC0xMi0xNyAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogY3BwbWFpbi5jIChjaGVja19tdWx0aWxpbmVfdG9rZW4pOiBOZXcgZnVuY3Rpb24uCgkoc2Nhbl9idWZmZXIpOiBVc2UgaXQuCgkoY2JfY2hhbmdlX2ZpbGUpOiBSZXN0cnVjdHVyZSB0byBhdm9pZCB3YXJuaW5nLgoJKiBjcHBlcnJvci5jIChwcmludF9sb2NhdGlvbik6IEluaXRpYWxpemUgY29sLgoKMjAwMC0xMi0xNCAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgoJKiBwcm90b2l6ZS5jIChtYWluKTogQ29ycmVjdGx5IHNldCBsb2NhbGUgY2F0ZWdvcmllcy4KCSogZ2NjLmMgKG1haW4pOiBMaWtld2lzZS4KCSogY3BwbWFpbi5jIChnZW5lcmFsX2luaXQpOiBMaWtld2lzZS4KCSogdG9wbGV2LmMgKG1haW4pOiBMaWtld2lzZS4KCSogZ2Nvdi5jIChtYWluKTogTGlrZXdpc2UuCgkqIGNvbGxlY3QyLmMgKG1haW4pOiBMaWtld2lzZS4KCjIwMDAtMTItMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IENyZWF0ZSBhCgljc3RyaW5nX2VuZGxpbmssIHVzZSBpdC4gIFJlbmFtZSBpbnRfZnR5cGVfc3RyaW5nX3N0cmluZyB0bwoJaW50X2Z0eXBlX2NzdHJpbmdfY3N0cmluZywgc3RyaW5nX2Z0eXBlX3N0cmluZ19pbnQgdG8KCXN0cmluZ19mdHlwZV9jc3RyaW5nX2ludCwgYW5kIHN0cmluZ19mdHlwZV9zdHJpbmdfc3RyaW5nIHRvCglzdHJpbmdfZnR5cGVfY3N0cmluZ19jc3RyaW5nLiAgUHJlZmVyIHNpemV0eXBlX2VuZGxpbmsgYW5kCglpbnRfZW5kbGluayB0byBtYW51YWxseSByZWNyZWF0aW5nIHRoZW0uICBGaXggdGhlIHByb3RvdHlwZQoJc2V0IGZvciBfX2J1aWx0aW5fc3Ryc3BuL19fYnVpbHRpbl9zdHJjc3BuLgoKMjAwMC0xMi0xMiAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBjb25maWcvYXZyL2F2ci5jIChvdXRfc2V0X3N0YWNrX3B0cik6IFVwZGF0ZSBjb21tZW50LgoJKHByaW50X29wZXJhbmQpOiBBZGQgc3VwcG9ydCBmb3IgJX4gYW5kICVvLgoKMjAwMC0xMi0xNyBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogYzR4Lmg6IEFkZCBBU01fT1VUUFVUX0RFRiBkZWZpbml0aW9uIGZvciBib3VuZGVkIHBvaW50ZXIgY29kZS4KCjIwMDAtMTItMTcgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGMtbGV4LmM6IE1vdmUgbWFpbl9pbnB1dF9maWxlbmFtZSBoYW5kbGluZyB0byBGQ19FTlRFUi4gQ2xlYW4gdXAuCgkqIGNwcGVycm9yLmMgKHByaW50X2NvbnRhaW5pbmdfZmlsZXMpOiBHZXQgcmlnaHQgbGluZSBudW1iZXIuCgkocHJpbnRfbG9jYXRpb24pOiBPdXRwdXQgY29sdW1uIG9mIDEgaWYgMC4KCSogY3BwZmlsZXMuYyAoc3RhY2tfaW5jbHVkZV9maWxlKTogY3BwX3B1c2hfYnVmZmVyIGhhbmRsZXMKCXRoZSBjYWxsYmFjay4KCSogY3BwaGFzaC5oIChfY3BwX2RvX2ZpbGVfY2hhbmdlKTogTm8gbG9uZ2VyIGV4dGVybmFsLgoJKiBjcHBsaWIuYyAoZG9fZmlsZV9jaGFuZ2UpOiBOb3cgbG9jYWwgdG8gY3BwbGliLmMuCgkoZG9fbGluZSk6IEZha2UgYSBidWZmZXIgc3RhY2sgZm9yIHByZXByb2Nlc3NlZCBmaWxlcy4KCShjcHBfcHVzaF9idWZmZXIpOiBDcmVhdGUgYSBmaWxlX2NoYW5nZSBjYWxsYmFjay4gIEhhbmRsZSBmYWtlZAoJYnVmZmVycy4KCShjcHBfcG9wX2J1ZmZlcik6IFNpbWlsYXJseS4KCSogY3BwbGliLmg6IEJVRl9GQUtFOiBOZXcgYnVmZmVyIHR5cGUuCgkqIGNwcG1haW4uYzogVXBkYXRlIHRvIGhhbmRsZSBjb3JyZWN0IGZpbGUgcmVuYW1pbmcgd2hlcmUgYQoJI2xpbmUgaXMgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIG1haW4gZmlsZSwgYW5kIHByb2R1Y2Ugb25seQoJdGhlIHJlbmFtZWQgZmlsZSwgbm90IHRoZSBvcmlnaW5hbCBmaWxlLCBhcyBvdXRwdXQuCgoyMDAwLTEyLTE3ICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5tZDogUmVtb3ZlIHJlZHVuZGFudCBAcyBmcm9tIG91dHB1dCBwYXR0ZXJucy4KCjIwMDAtMTItMTcgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KICAgICAgICAgICAgSGVybWFuIEEuSi4gdGVuIEJydWdnZSA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCgkqIGNvbmZpZy9jNHgvYzR4LmggKFJFR0lTVEVSX1RBUkdFVF9QUkFHTUFTKTogQ2FsbCBjNHhfaW5pdF9wcmFnbWEuCgoJKiBjb25maWcvYzR4L2M0eC1wcm90b3MuaCAoYzR4X2luaXRfcHJhZ21hKTogTmV3IHByb3RvdHlwZS4KCgkqIGNvbmZpZy9jNHgvYzR4LmMgKGM0eF9pbml0X3ByYWdtYSk6IE5ldyBmdW5jdGlvbi4KCShjX2xleF9mdW5jKTogTmV3IHZhcmlhYmxlLgoJKGM0eF9wYXJzZV9wcmFnbWEpOiBVc2UgY19sZXhfZnVuYy4KCjIwMDAtMTItMTcgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KICAgICAgICAgICAgSGVybWFuIEEuSi4gdGVuIEJydWdnZSA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCgkqIGNvbmZpZy9jNHgvYzR4LmggKE1EX0lOSVRfQlVJTFRJTlMpOiBBZGQgdm9pZF9saXN0X25vZGUgYXJndW1lbnQKCXRvIGM0eF9pbml0X2J1aWx0aW5zLgoKCSogY29uZmlnL2M0eC9jNHgtcHJvdG9zLmggKGM0eF9pbml0X2J1aWx0aW5zKTogQWRkIHRyZWUgYXJndW1lbnQuCgoJKiBjb25maWcvYzR4L2M0eC5jIChjNHhfaW5pdF9idWlsdGlucyk6IEFkZCB0cmVlIGFyZ3VtZW50LgoJKGM0eF9vdXRwdXRfYXNjaWkpOiAgRml4LgoKMjAwMC0xMi0xNyAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgogICAgICAgICAgICBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogY29uZmlnL2M0eC9jNHguaCAoTURfSU5JVF9CVUlMVElOUywgTURfRVhQQU5EX0JVSUxUSU4pOiBEZWZpbmUuCgoJKiBjb25maWcvYzR4L2M0eC1wcm90b3MuaCAoYzR4X2luaXRfYnVpbHRpbnMpOiBOZXcgcHJvdG90eXBlLgoJKGM0eF9leHBhbmRfYnVpbHRpbik6IExpa2V3aXNlLgoKCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X2luaXRfYnVpbHRpbnMpOiBOZXcgZnVuY3Rpb24uCgkoYzR4X2V4cGFuZF9idWlsdGluKTogTGlrZXdpc2UuCgoJKiBjb25maWcvYzR4L2M0eC5tZCAoZmxvYXR1bnNxaWhmMik6IE5ldyBwYXR0ZXJuLgoJKCpmbG9hdHFpaGYyX3NldCwgKmZpeGhmcWlfc2V0LCBmaXhfdHJ1bmNoZnFpMik6IExpa2V3aXNlLgoJKGZpeHVuc190cnVuY2hmcWkyLCB0b2llZWUsIGZyaWVlZSwgKmxkaGZfY29uZGl0aW9uYWwpOiBMaWtld2lzZS4KCSgqbGRoZl9jb25kaXRpb25hbF9ub292LCBtb3ZoZmNjLCB0cmFwLCBjb25kX3RyYXBfY2MpOiBMaWtld2lzZS4KCSgqdG9pZWVlX21vdnFmX2Nsb2JiZXIsICpmcmllZWVfbW92cWZfY2xvYmJlcik6IExpa2V3aXNlLgoKMjAwMC0xMi0xNyAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogbGliZ2NjMi5oOiBVc2UgV3R5cGUgZm9yIFNJdHlwZSBhbmQgRFd0eXBlIGZvciBESXR5cGUgaW4gcHJvdG90eXBlcy4KCSogbGliZ2NjMi5jIChfX2Fic3ZzaTIpOiBVc2UgV3R5cGUgYW5kIERXdHlwZS4KCShfX2Fic3ZkaTIsIF9fYWRkdnNpMywgX19hZGR2ZGkzLCBfX3N1YnZzaTMpOiBMaWtld2lzZS4KCShfX3N1YnZkaTMsIF9fbXVsdnNpMywgX19tdWx2ZGkzLCBfX25lZ3ZzaTIsIF9fbmVndmRpMik6IExpa2V3aXNlLgoKMjAwMC0xMi0xNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2guaCAoSU5JVElBTElaRV9UUkFNUE9MSU5FKTogRW5jbG9zZSB0aGUgYmxvY2sKCXN0YXRlbWVudCBpbiBkby93aGlsZSgwKS4KClNhdCBEZWMgMTYgMTk6NTY6MjQgTUVUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKGFzaHJzaTNfY21wbm8sIGFzaHJoaTNfY21wbm8sIGFzaHJxaTNfY21wbm8sIGxzaHJzaTNfY21wbm8sCglsc2hyaGkzX2NtcG5vKTogUmVtb3ZlIHJlZHVuZGFudCAnQCcgZnJvbSB0aGUgdGVtcGxhdGUuCgoJKiBpMzg2Lm1kIChjbXBzdHJzaV8xKTogRml4IHR5cGUgb2YgdGhlIGNvbXBhcmUuCgoJKiBnZW5hdHRydGFiLmMgKGF0dHJfcnR4X2Nvc3QpOiBOZXcgZnVuY3Rpb24uCgkoc2ltcGxpZnlfdGVzdF9leHApOiBBdm9pZCBvdmVyYWN0aXZlIGlubGluaW5nOyB1c2UgdGVtcG9yYXJ5CglvYnN0YWNrcyBmb3IgdGVzdHMuCgpTYXQgRGVjIDE2IDEwOjQxOjExIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBkaWFnbm9zdGljLmMgKGZpbmlzaF9hYm9ydCk6IERlbGV0ZWQuCgkoZmF0YWwpOiBBZGQgY29kZSBmcm9tIGZpbmlzaF9hYm9ydC4KCShlcnJvcl9yZWN1cnNpb24sIGZhbmN5X2Fib3J0KTogQ2FsbCBmYXRhbCwgbm90IGZpbmlzaF9hYm9ydC4KCSh0cmltX2ZpbGVuYW1lKTogUmVtb3ZlIGxlYWRpbmcgIi4uLyIuCgkqIGRpYWdub3N0aWMuaCAoZmluaXNoX2Fib3J0KTogRGVsZXRlZC4KCSogdG9wbGV2LmMgKGNyYXNoX3NpZ25hbCk6IENhbGwgZmF0YWwsIG5vdCBmaW5pc2hfYWJvcnQuCgoJKiBzdG9yLWxheW91dC5jIChwbGFjZV9maWVsZCk6IFRyZWF0IG92ZXJmbG93aW5nIERFQ0xfU0laRV9VTklUCglhcyBpZiBzaXplIHdlcmUgdmFyaWFibGUuCgoJKiBleHBtZWQuYyAoZXhwYW5kX211bHQpOiBXcml0ZSBSRUdfRVFVQUwgbm90ZSB3aXRoIHByb3BlciBtb2RlLgoKMjAwMC0xMi0xNiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogdHJhZGNwcC5jOiBUX1dBUk5JTkc6IE5ldy4KCShkb193YXJuaW5nKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmNsdWRlKTogU2tpcCBwYXN0IHRoZSBuZXdsaW5lIGFuZCBpbmNyZWFzZSB0aGUgbGluZSBudW1iZXIKCWJlZm9yZSBjYWxsaW5nIG91dHB1dF9saW5lX2NvbW1hbmQuCgkoZG9fbGluZSk6IFNraXAgdGhlIG5ldyBsaW5lIGFmdGVyIG91dHB1dF9saW5lX2NvbW1hbmQuICBEb24ndAoJcHJlLWRlY3JlbWVudCB0aGUgbGluZSBudW1iZXIuCgoyMDAwLTEyLTE1ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIGkzODYvdW5peC5oIChBU01fT1VUUFVUX01JX1RIVU5LKTogRml4IHJlZmVyZW5jZXMgdG8KCV9HTE9CQUxfT0ZGU0VUX1RBQkxFXyB3aGVuIHVzaW5nIEludGVsIHN5bnRheC4KCjIwMDAtMTItMTUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZ2NjLmMgKGNwcF9vcHRpb25zKTogUGFzcyAtZm5vLW9wZXJhdG9yLW5hbWVzLgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9vcHRpb25zKTogQWRkIG9wZXJhdG9yX25hbWVzLgoJKiBjcHBpbml0LmMgKGNwcF9jcmVhdGVfcmVhZGVyKTogSW5pdGlhbGl6ZSBpdC4KCShpbml0aWFsaXplX2J1aWx0aW5zKTogSWYgLWZuby1vcGVyYXRvci1uYW1lcywgZG9uJ3QgYWRkCglDKysgYWx0ZXJuYXRlIG9wZXJhdG9yIG5hbWVzLgoJKENPTU1BTkRfTElORV9PUFRJT05TKTogQWRkIC1mbm8tb3BlcmF0b3ItbmFtZXMuCgkoY3BwX2hhbmRsZV9vcHRpb24pOiBDbGVhciBvcGVyYXRvcl9uYW1lcy4KCjIwMDAtMTItMTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSoganVtcC5jIChqdW1wX29wdGltaXplXzEpOiBEb24ndCBkZWxldGUgdGhlIGxpbmUgbm90ZSBhZnRlciB0aGUKCXByb2xvZ3VlIGV2ZW4gaWYgaXQgc2VlbXMgcmVkdW5kYW50LgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2V4cGFuZF9wcm9sb2d1ZSk6IFNldCBSVFhfRlJBTUVfUkVMQVRFRF9QCglvbiBhbGwgaW5zbnMgdXNlZCB0byBhZGp1c3QgdGhlIHN0YWNrLgoKRnJpIERlYyAxNSAxNTozMjoxNiBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY29tYmluZS5jIChjYW50X2NvbWJpbmVfaW5zbl9wKTogR2V0IGFyb3VuZCBTVUJSRUdzIHdoZW4gZGV0ZXJtaW5pbmcKCWhhcmRyZWc8LT5yZWcgbW92ZXMuCgpGcmkgRGVjIDE1IDE0OjQ4OjM3IE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBnZW5yZWNvZy5jIChhZGRfdG9fc2VxdWVuY2UpOiBSZW1vdmUgc3BlY2lhbCBjYXNlIGZvcgoJY29uc3RfaW50X29wZXJhbmQuCgkobWF5YmVfYm90aF90cnVlKTogUmV0dXJuIDEgd2hlbiBmYWxsaW5nIG91dCBvZiBzZXF1ZW5jZSB3aGVuCgl0cnlpbmcgdG8gZmluZCBjb21tb24gcG9zaXRpb24gaW4gdGhlIHBhdHRlcm4uCgpGcmkgRGVjIDE1IDE0OjQ0OjUxIE1FVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpbnRlZ3JhdGUuYyAoY29weV9ydHhfYW5kX3N1YnN0aXR1dGUpOiBDb3B5IG1vZGUgdG9vLgoKRnJpIERlYyAxNSAxNDoxMTo1NyBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZmxvdy5jIChub3RpY2Vfc3RhY2tfcG9pbnRlcl9tb2RpZmljYXRpb25fMSk6IENsZWFudXAuCgoyMDAwLTEyLTE1ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGFkanVzdF90cmFtcG9saW5lX2FkZHIpOiBOZXcgZnVuY3Rpb24uCgkodHJhbXBvbGluZV9hZGRyZXNzKTogQ2FsbCBpdCBpbnN0ZWFkIG9mIHJvdW5kX3RyYW1wb2xpbmVfYWRkcigpLgoJKiB0bS50ZXhpIChUUkFNUE9MSU5FX0FESlVTVF9BRERSRVNTKTogRG9jdW1lbnQgaXQuCgoyMDAwLTEyLTE0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogY3BwZmlsZXMuYyAoaGFja192bXNfaW5jbHVkZV9zcGVjaWZpY2F0aW9uKTogRGVsZXRlIGZ1bmN0aW9uCgkobm90IHVzZWQgc2luY2UgMTk5OCkuCgpGcmkgRGVjIDE1IDAzOjM3OjUxIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZF9pbml0KTogRG9uJ3QgcHV0IGEgbm90ZSBpbiBmcm9udCBvZiBhbnkgQkFSUklFUi4KCjIwMDAtMTItMTQgIEppbSBXaWxzb24gIDx3aWxzb25AcmVkaGF0LmNvbT4KCgkqIGFsaWFzLmMgKGdldF9hbGlhc19zZXQpOiBDYWxsIHJlY29yZF9jb21wb25lbnRfYWxpYXNlcyBmb3IKCUNPTVBMRVhfVFlQRS4KCShyZWNvcmRfY29tcG9uZW50X2FsaWFzZXMpOiBIYW5kbGUgQ09NUExFWF9UWVBFLgoKMjAwMC0xMi0xNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZml4aW5jL2dudS1yZWdleC5jOiBEaXNhYmxlIE5MUy4KCjIwMDAtMTItMTQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZW1pdF9jb25kaXRpb25hbF9tb3ZlKTogRG8gbm90IHN3YXAKCWNvbXBhcmlzb24gb3BlcmFuZHMgd2hlbiB0aGF0IHdvdWxkIGNyZWF0ZSBub24tY2Fub25pY2FsIHJ0bC4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHVtdWxzaTNfaGlnaHBhcnQpOiBSZW1vdmUgKiBmcm9tIG5hbWUuCgkoc211bHNpM19oaWdocGFydCk6IExpa2V3aXNlLgoKMjAwMC0xMi0xNCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogZ2NjLmMgKGNwcF9vcHRpb25zKTogQWRkIC1yZW1hcC4KCjIwMDAtMTItMTQgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGdjYy5jIChjcHBfb3B0aW9ucyk6IFVwZGF0ZSB0byB1c2UgJyYnLgoJKHN0cnVjdCBzd2l0Y2hzdHIpOiBDaGFuZ2UgdHlwZSBvZiB2YWxpZGF0ZWQgdG8gc2F2ZSBzcGFjZS4KCU5ldyBtZW1iZXIgJ29yZGVyaW5nJy4KCShoYW5kbGVfYnJhY2VzLCB2YWxpZGF0ZV9zd2l0Y2hlcyk6IFVwZGF0ZSB0byBoYW5kbGUgJyYnLgoKMjAwMC0xMi0xMyAgTGF1cnluYXMgQml2ZWluaXMgIDxsYXVyYXNAc29mdGhvbWUubmV0PgoKCSogZml4aW5jL2luY2xoYWNrLmRlZjogc2tpcCBzdGRpb192YV9saXN0IGZpeCBpZiBfX0RKX3ZhX2xpc3QKCWZvdW5kIGluIGEgaGVhZGVyLgoJKiBmaXhpbmMvZml4aW5jbC54OiByZWdlbmVyYXRlZC4KCjIwMDAtMTItMTMgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY29uZmlnLmdjYyAoY3lnd2luLCB3aW4zMiwgbWluZ3czMik6IFVzZSBmbG9hdC1pMzg2LmguCgoyMDAwLTEyLTEzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBnY2MuYyAoaGFuZGxlX2JyYWNlcyk6IEhhbmRsZSAlezxTKn0gc3BlYyBjb3JyZWN0bHkuCgoyMDAwLTEyLTEzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtcyk6IE9wdGltaXplIGluY29taW5nIFBBUkFMTEVMcyBpbnRvCglSRUdzIGlmIHBvc3NpYmxlLgoKMjAwMC0xMi0xMyAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvTWFrZWZpbGUuaW4oKik6IHN1YnN0YW50aWFsIHJld3JpdGUgdG8gYWNjb21tb2RhdGUgc3lzdGVtcwoJdGhhdCBjYW5ub3QgaGFuZGxlIGJpLWRpcmVjdGlvbmFsIHBpcGVzLCB2aXouIEJlT1MgYW5kIERPUy4KCSogZml4aW5jL2ZpeGxpYi5oKElHTk9SRV9BUkcpOiBuZXcgbWFjcm8KCShTVEFUSUMpOiBkZWZpbmUgZm9yIGFsbCBvZiBmaXhpbmMgdG8gdXNlCgkqIGZpeGluYy9maXhmaXhlcy5jKCopOiBlbGltaW5hdGUgdW51c2VkIGFyZyB3YXJuaW5ncwoJKiBmaXhpbmMvZml4dGVzdHMuYygqKTogZGl0dG8KCSogZml4aW5jL2ZpeGluY2wuYyhzdGFydF9maXhlcik6IGNoYWluX29wZW4gbm93IHVzZXMgY29uc3QgYXJnIGxpc3QKCSogZml4aW5jL2dudS1yZWdleC5jOiByZW9yZGVyIHNvbWUgaW5jbHVkZXMgdG8gYXZvaWQgX0dOVV9TT1VSQ0UKCXdhcm5pbmcuICBBbHNvLCBlbGltaW5hdGUgdGhlIGBgI2lmZGVmIGVtYWNzJycgc3R1ZmYuCgkocmVfc3ludGF4X29wdGlvbnMpOiBtYWtlIGdsb2JhbCBhcyBpdCBpcyBkZWNsYXJlZCBzby4KCSogZml4aW5jL21rZml4aW5jLnNoOiBwcm9jZXNzIHRoZSBhcmd1bWVudCBsaXN0IG1vcmUgY29uc2lzdGVudGx5CgkoYmVvcy9tc2Rvc2RqZ3BwKTogc2V0IFRBUkdFVFMgdG8gdHdvcHJvY2VzcyB2cy4gb25lcHJvY2VzcwoJKiBmaXhpbmMvcHJvY29wZW4uYyhnbG9iYWxzKTogaW5jbHVkZSAiZml4bGliLmgiIGZvciBzdGQgZGVmcwoJKiBmaXhpbmMvc2VydmVyLmMoZ2xvYmFscyk6IGRpdHRvCgkqIGZpeGluYy9zZXJ2ZXIuaChkZWZpbmVzKTogZGl0dG8KCjIwMDAtMTItMTMgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIHRyYWRjcHAuYyAoc3BlY2lhbF9zeW1ib2wpOiBJbXByb3ZlIHRlc3QgZm9yIGRlZmluZWRuZXNzLAoJdGhvdWdoIGl0IGlzIHN0aWxsIG5vdCBwZXJmZWN0LgoJKGRvX2RlZmluZSk6IERvbid0IGRlZmluZSBpbGxlZ2FsIG1hY3JvIG5hbWVzLgoKMjAwMC0xMi0wNyAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL21pcHMvZWxmLmggKEFTTV9PVVRQVVRfU0VDVElPTl9OQU1FKTogZW1pdCBAbm9iaXRzCglpZiBjaGFuZ2luZyBpbnRvIC5ic3Mgc2VjdGlvbi4KCSogY29uZmlnL21pcHMvZWxmNjQuaDogc2FtZS4KCSogY29uZmlnL21pcHMvaXJpczYuaDogc2FtZS4KCSogY29uZmlnL21pcHMvbmV0YnNkLmg6IHNhbWUuCgkqIGNvbmZpZy9taXBzL29wZW5ic2QuaDogc2FtZS4KCjIwMDAtMTItMTMgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGNwcGZpbGVzLmMgKHJlYWRfbmFtZV9tYXApOiBSZXR1cm4gbnVsbCBpZiBvcGVuICgpIGZhaWxzLgoJKHJlbWFwX2ZpbGVuYW1lKTogU2ltcGxpZnkgbG9naWMuICBBZGQgSUNFIGlmIGl0IGRvZXNuJ3Qgd29yawoJYXMgZXhwZWN0ZWQuIFBlcmZvcm0gc2Vjb25kYXJ5IGxvb2t1cCBhdHRlbXB0IG9uIGJhc2UgZmlsZW5hbWUKCW9ubHkuCgpXZWQgRGVjIDEzIDE5OjQ4OjA0IE1FVCAyMDAwICBKYW4gaHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBmbG93LmMgKG5vdGljZV9zdGFja19wb2ludGVyX21vZGlmaWNhdGlvbl8xKTogTm90aWNlIG1pZGlmaWNhdGlvbnMKCXVzaW5nIFBSRV9NT0RJRlkgYW5kIFBPU1RfTU9ESUZZLgoKV2VkIERlYyAxMyAxNzoyNTozMiBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZ2Vub3V0cHV0LmMgKHByb2Nlc3NfdGVtcGxhdGUpOiBBZGQgc2FuaXR5IGNoZWNraW5nIGZvciAnQCcgdGVtcGxhdGVzLgoKMjAwMC0xMi0xMyAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBzaW1wbGlmeS1ydHguYyAoY3NlbGliX2ZpbmlzaCk6IEZyZWUgcmVnX3ZhbHVlcyBhbmQgdXNlZF9yZWdzCgl2YXJyYXlzLgoKMjAwMC0xMi0xMiAgTWlrZSBTdHVtcCAgPG1yc0B3cnMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGRpc3RjbGVhbik6IFJlbW92ZSBzYWZlLWN0eXBlLmMgYXMgd2VsbC4KCjIwMDAtMTItMTIgIEJyYWQgTHVjaWVyIDxsdWNpZXJAbWF0aC5wdXJkdWUuZWR1PgoKCSogdHJhZGNwcC5jIChkb19lcnJvcik6IENhc3QgZGlmZmVyZW5jZSBvZiBwb2ludGVycyB0byBpbnQKCWZvciBlcnJvciBtZXNzYWdlLgoKMjAwMC0xMi0xMiAgRnJhbnogU2lybCAgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCSogY29uZmlnL3JzNjAwMC9saW51eC5oIChIQU5ETEVfUFJBR01BX1BBQ0tfUFVTSF9QT1ApOiBNb3ZlIGZyb20gaGVyZS4uLgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKEhBTkRMRV9QUkFHTUFfUEFDS19QVVNIX1BPUCk6IC4uLnRvIGhlcmUuCgoyMDAwLTEyLTEyICBKaW0gV2lsc29uICA8d2lsc29uQHJlZGhhdC5jb20+CgoJKiBydGxhbmFsLmMgKG1heV90cmFwX3ApOiBDaGVjayBvcGVyYW5kIG1vZGVzIG9mIExFLCBMVCwgR0UsIGFuZCBHVC4KCjIwMDAtMTItMTIgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmluOiBTaW1wbGlmeSBsYW5ndWFnZSBlbmFibGluZy9kaXNhYmxpbmcgY29kZS4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoJKiBjaC9jb25maWctbGFuZy5pbiAodGFyZ2V0X2xpYnMpOiBTZXQuCgkoYnVpbGRfYnlfZGVmYXVsdCk6IFNldCB0byBuby4KCSogY3AvY29uZmlnLWxhbmcuaW4gKHRhcmdldF9saWJzKTogU2V0LgoJKiBmL2NvbmZpZy1sYW5nLmluICh0YXJnZXRfbGlicyk6IFNldC4KCSogamF2YS9jb25maWctbGFuZy5pbiAodGFyZ2V0X2xpYnMpOiBTZXQuCgkqIG9iamMvY29uZmlnLWxhbmcuaW4gKHRhcmdldF9saWJzKTogU2V0LgoKMjAwMC0xMi0xMiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogdHJhZGNwcC5jIChlbnVtIG5vZGVfdHlwZSk6IEFkZCBUX0VSUk9SLgoJKGRvX2Vycm9yKTogTmV3IGZ1bmN0aW9uLgoJKGRpcmVjdGl2ZV90YWJsZSk6IEFkZCAjZXJyb3IgaGFuZGxlci4KCjIwMDAtMTItMTIgIEZyYW56IFNpcmwgIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoSEFWRV9BU19EV0FSRjJfREVCVUdfTElORSk6IEVuYWJsZSAuZmlsZS8ubG9jIGNoZWNrCglmb3IgcG93ZXJwYyotKi0qLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBjb25maWcvcnM2MDAwL2xpbnV4LmggKEhBTkRMRV9QUkFHTUFfUEFDS19QVVNIX1BPUCk6IERlZmluZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3VuaXF1ZV9zZWN0aW9uKTogVXNlCglTVFJJUF9OQU1FX0VOQ09ESU5HLgoKTW9uIERlYyAxMSAxMzo1MTowOSAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBwYS5jIChjbXBpYl9jb21wYXJpc29uX29wZXJhdG9yKTogUmVtb3ZlIEdFVSBhbmQgTFRVLgoJKiBwYS5oIChQUkVESUNBVEVfQ09ERVMsIGNtcGliX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBDb3JyZXNwb25kaW5nCgljaGFuZ2VzLgoKMjAwMC0xMi0xMSAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvZml4aW5jbC50cGw6IGluaXRpYWxpemUgYWxsIGZpZWxkcyBmb3Igd2FybmluZ3MKCSogZml4aW5jL2ZpeGluY2wueDogcmVnZW5lcmF0ZQoKMjAwMC0xMi0xMSAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiB0cmFkY3BwLmg6IEZvciB0cmFkY3BwLCBOVUwgaXMgbm90IHdoaXRlc3BhY2UuCgoyMDAwLTEyLTExICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGZpeC1oZWFkZXIuYyAocmVhZF9zY2FuX2ZpbGUpOiBNYWNybyBleHBhbnNpb24gaXMgbm90IGEgZmlsZSBidWZmZXIuCgoyMDAwLTEyLTA1ICBNYXJlayBNaWNoYWxraWV3aWN6ICA8bWFyZWttQGxpbnV4Lm9yZy5wbD4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKGNvbXBhcmVfY29uZGl0aW9uLCBjb21wYXJlX3NpZ25fcCk6IE5ldyBmdW5jdGlvbnMuCgkoY29tcGFyZV9kaWZmX3AsIGNvbXBhcmVfZXFfcCk6IENhbGwgY29tcGFyZV9jb25kaXRpb24uCgkob3V0X3RzdGhpLCBvdXRfdHN0c2kpOiBDYWxsIGNvbXBhcmVfc2lnbl9wLgoJKGF2cl9wcm9nbWVtX3ApOiBDaGVjayBmb3IgZXJyb3JfbWFya19ub2RlLgoKMjAwMC0xMi0xMSAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBlcnJvci5jIChwcmludF9sb2NhdGlvbik6IE5ldyBmdW5jdGlvbi4KCShwcmludF9jb250YWluaW5nX2ZpbGVzKTogU2ltcGxpZnkuCgkoX2NwcF9iZWdpbl9tZXNzYWdlKTogU2ltcGxpZnkgYW5kIHVzZSBwcmludF9sb2NhdGlvbi4KCSogY3BwZmlsZXMuYyAoc3RhY2tfaW5jbHVkZV9maWxlKTogVXBkYXRlLgoJKF9jcHBfcG9wX2ZpbGVfYnVmZmVyKTogVXBkYXRlLgoJKiBjcHBoYXNoLmggKHN0cnVjdCBjcHBfYnVmZmVyKTogTmV3IG1lbWJlcnMKCWluY2x1ZGVfc3RhY2tfbGlzdGVkIGFuZCB0eXBlLgoJKiBjcHBsaWIuYyAoX2NwcF9oYW5kbGVfZGlyZWN0aXZlKTogQnVmZmVyLT5pbmMgaXMgbm90IG51bGwuCgkocnVuX2RpcmVjdGl2ZSk6IFRha2UgYnVmZmVyIHR5cGUuICBjcHBfcHVzaF9idWZmZXIgY2Fubm90IGZhaWwuCgkoX2NwcF9kb19fUHJhZ21hLCBjcHBfZGVmaW5lLCBfY3BwX2RlZmluZV9idWlsdGluLCBjcHBfdW5kZWYsCgloYW5kbGVfYXNzZXJ0aW9uKTogVXBkYXRlLgoJKGNwcF9wdXNoX2J1ZmZlcik6IFRha2UgYSBidWZmZXIgdHlwZSBhbmQgZmlsZSBuYW1lLgoJKGNwcF9wb3BfYnVmZmVyKTogVXBkYXRlLiAgQ2xlYXIgaW5jbHVkZV9zdGFja19saXN0ZWQuCgkqIGNwcGxpYi5oIChpbnB1dF9zdGFja19saXN0aW5nX2N1cnJlbnQpOiBSZW1vdmUuCgkoZW51bSBjcHBfYnVmZmVyX3R5cGUpOiBOZXcuCgkoY3BwX3B1c2hfYnVmZmVyKTogTmV3IHByb3RvdHlwZS4KCSogY3BwbWFjcm8uYyAoYnVpbHRpbl9tYWNybyk6IFNpbXBsaWZ5OyBidWZmZXIgY2Fubm90IGJlIG51bGwuCgkqIGZpeC1oZWFkZXIuYyAocmVhZF9zY2FuX2ZpbGUpOiBVcGRhdGUuCgoyMDAwLTEyLTEwICBSb2JlcnQgTGlwZSA8cm9iZXJ0bGlwZUB1c2EubmV0PgoKCSogaW5zdGFsbC50ZXhpIChpKjg2LSotc2NvMy4ydjUqKTogUmVtb3ZlIGluZm9ybWF0aW9uIGR1cGxpY2F0ZWQKCWluIGh0bWwgdmVyc2lvbi4KCjIwMDAtMTItMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBnZW5yZWNvZy5jIChmaW5kX29wZXJhbmQpOiBIYW5kbGUgJ1YnIGZvcm1hdCBjb2RlLgoJKGZpbmRfbWF0Y2hpbmdfb3BlcmFuZCk6IE5ldy4KCSh2YWxpZGF0ZV9wYXR0ZXJuKTogQWNjZXB0ICc9JyBmb3IgYW4gaW4tb3V0IG9wZXJhbmQgaWYgdGhlcmUKCWlzIGFub3RoZXIgb3BlcmFuZCB3aXRoIGEgbWF0Y2hpbmcgY29uc3RyYWludC4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGFuZHFpX2V4dF8wX2NjKTogVXNlIG1hdGNoaW5nIGNvbnN0cmFpbnQKCWZvciBvcDEgdG8gb3AwLgoKMjAwMC0xMi0xMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGdlbnJlY29nLmMgKHZhbGlkYXRlX3BhdHRlcm4pIFtTVFJJQ1RfTE9XX1BBUlRdOiBGaXggdGhpbmtvLgoKMjAwMC0xMi0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGdlbnJlY29nLmMgKHZhbGlkYXRlX3BhdHRlcm4pOiBWZXJpZnkgdGhhdCBaRVJPX0VYVFJBQ1QgYW5kCglTVFJJQ1RfTE9XX1BBUlQgYXMgU0VUX0RFU1QgaGF2ZSBpbi1vdXQgY29uc3RyYWludHMuCgoyMDAwLTEyLTA5ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChjaGVja19mdW5jdGlvbl9mb3JtYXQpOiBEb24ndCBzdWdnZXN0IGFkZGluZyBmb3JtYXQKCWF0dHJpYnV0ZXMgdG8gZnVuY3Rpb25zIHdpdGggbm8gcGFyYW1ldGVyIHRvIHdoaWNoIHRvIGFkZCB0aGVtLgoKMjAwMC0xMi0wOSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9leHBhbmRfcHJvbG9ndWUpOiBNYXJrIHRoZSBnZW5lcmF0ZWQKCWluc24gbm90IHRoZSBzZXQgYXMgYmVpbmcgRFdBUkYyX0ZSQU1FX1JFTEFURURfUC4KCjIwMDAtMTItMDkgIExhdXJ5bmFzIEJpdmVpbmlzICA8bGF1cmFzQHNvZnRob21lLm5ldD4KCgkqIE1ha2VmaWxlLmluOiB1c2UgJChidWlsZF9leGVleHQpIGZvciBhbGwgYnVpbGQKCXN5c3RlbSBleGVjdXRhYmxlIHRhcmdldHMuCgoyMDAwLTEyLTA5ICBMYXVyeW5hcyBCaXZlaW5pcyAgPGxhdXJhc0Bzb2Z0aG9tZS5uZXQ+CgoJKiBpbnN0YWxsLnRleGk6IHJlbW92ZSBpWzM0NV04Ni0qLXdpbm50My41IHNlY3Rpb24uCgkqIGNvbmZpZ3VyLmJhdDogcmVtb3ZlZC4KCSogY29uZmlnL21zZG9zOiBkaXJlY3RvcnkgcmVtb3ZlZC4KCjIwMDAtMTItMDkgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZmlsZXMuYyAoTkVWRVJfUkVSRUFELCBET19OT1RfUkVSRUFEKTogTW92ZSBmcm9tIGNwcGhhc2guaC4KCSogY3BwaGFzaC5oIChORVZFUl9SRVJFQUQsIERPX05PVF9SRVJFQUQsIEFCU09MVVRFX1BBVEgpOiBEZWxldGUuCgkqIGNwcGxleC5jIChwYXJzZV9pZGVudGlmaWVyKTogSW1wcm92ZSBkaWFnbm9zdGljLgoJKF9jcHBfbGV4X3Rva2VuKTogUmV0dXJuIHVuY29uZGl0aW9uYWxseSBhdCB0aGUgZW5kIG9mIGEgZGlyZWN0aXZlLgoJKiBjcHBsaWIuYyAocmVhZF9mbGFnKTogVmVyaWZ5IGxlZ2FsaXR5IG9mIGVhY2ggZmxhZy4KCShlbmRfZGlyZWN0aXZlKTogUmVzb3RyZSBwZmlsZS0+c2tpcHBpbmcgYmVmb3JlIHNraXBfcmVzdF9vZl9saW5lLgoJKGRvX2xpbmUpOiBVc2UgdGhlIG5ldyByZWFkX2ZsYWcuCgkqIGNwcG1hY3JvLmMgKHN0cnVjdCBjcHBfbWFjcm8sIHBhcnNlX2FyZywgcmVwbGFjZV9hcmdzLAoJY2hlY2tfbWFjcm9fcmVkZWZpbml0aW9uLCBwYXJzZV9wYXJhbXMpOiBSZW5hbWUgdmFyX2FyZ3MgdG8KCXZhcmlhZGljLgoKMjAwMC0xMi0wOSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogLmN2c2lnbm9yZTogQWRkIGluZm8gZmlsZXMuCgoyMDAwLTEyLTA4IExhdXJ5bmFzIEJpdmVpbmlzIDxsYXVyYXNAc29mdGhvbWUubmV0PgoKCSogY29uZmlnL3dpbm50OiBSZW1vdmUgb2Jzb2xldGUgZGlyZWN0b3J5LgoJKiBpbnN0YWxsLnRleGkgKENvbmZpZ3VyYXRpb25zKTogUmVtb3ZlIG9ic29sZXRlIGRvY3VtZW50YXRpb24gZm9yCglXaW5kb3dzIE5ULgoKMjAwMC0xMi0wOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogY29uZmlndXJlLmluOiBEb24ndCBkZWZpbmUgSU5TVEFMTF9JTkZPLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIE1ha2VmaWxlLmluIChJTlNUQUxMX0lORk8pOiBSZW1vdmUuCgkoaW5mbyk6IERlcGVuZCBvbiBpbmZvIGZpbGVzIGluIHNvdXJjZSBkaXJlY3RvcnkuCgkoY3BwLmluZm8sIGdjYy5pbmZvLCBjLXRyZWUuaW5mbyk6IEJ1aWxkIGluZm8gZmlsZXMgaW4gc291cmNlCglkaXJlY3RvcnkuCgkoZGlzdGNsZWFuKTogRG9uJ3QgcmVtb3ZlIGluZm8gZmlsZXMuCgkobWFpbnRhaW5lci1jbGVhbik6IFJlbW92ZSBpbmZvIGZpbGVzIGZyb20gc291cmNlIGRpcmVjdG9yeS4KCShpbnN0YWxsLW5vcm1hbCk6IERlcGVuZCBvbiBpbnN0YWxsLWluZm8uCgkoaW5zdGFsbC1pbmZvKTogSW5zdGFsbCBpbmZvIGZpbGVzIGZyb20gc291cmNlIGRpcmVjdG9yeSwgaWYgdGhleQoJZXhpc3QuCgkqIHRleGluZm8udGV4OiBVcGRhdGUgdG8gdmVyc2lvbiAyMDAwLTExLTA5LjA4IGZyb20gZnRwLmdudS5vcmcuCgoyMDAwLTEyLTA4ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGxjbS5jIChvcHRpbWl6ZV9tb2RlX3N3aXRjaGluZyk6IENoZWNrIHdoZXRoZXIgYW4gaW5zbiBpcyBhIE5PVEUKCWJlZm9yZSB0YWtpbmcgaXRzIE5PVEVfTElORV9OVU1CRVIuCgoyMDAwLTEyLTA4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0ubWQgKGxvYWRfaW5kaXJlY3RfanVtcCk6IEFkZCBwb29sIHJhbmdlcy4KCgkqIGV4dGVuZC50ZXhpOiBEb2N1bWVudCBBUk0gImludGVycnVwdCIgZnVuY3Rpb24gYXR0cmlidXRlLgoJTWVudGlvbiB0aGF0IHRoZSBBUk0gYWxzbyBzdXBwb3J0IHRoZSAibmFrZWQiIGZ1bmN0aW9uCglhdHRyaWJ1dGUuCgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaCAoYXJtX2N1cnJlbnRfZnVuY190eXBlKTogQWRkCglwcm90b3R5cGUuCgoJKiBjb25maWcvYXJtL2FybS5oIChFWENFUFRJT05fTFJfUkVHTlVNKTogRGVmaW5lLgoJKHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uKTogQWRkICdmdW5jX3R5cGUnIGZpZWxkLgoJRGVmaW5lIGJpdCB2YWx1ZXMgZm9yICdmdW5jX3R5cGUnIGZpZWxkLgoJKEFSTV9GVU5DX1RZUEUpOiBOZXcgbWFjcm8uCgkoSVNfSU5URVJSVVBUKTogTmV3IG1hY3JvLgoJKElTX1ZPTEFUSUxFKTogTmV3IG1hY3JvLgoJKElTX05BS0VEKTogTmV3IG1hY3JvLgoJKElTX05FU1RFRCk6IE5ldyBtYWNyby4KCShBUk1fSU5JVElBTF9FTElNSU5BVElPTl9PRkZTRVQpOiBVc2UgSVNfVk9MQVRJTEUuCgoJKiBjb25maWcvYXJtL2FybS5jIChpc3JfYXR0cmlidXRlX2FyZ3MpOiBOZXcgU3RydWN0dXJlLiAgQQoJbGlzdCBvZiAiaW50ZXJydXB0IiBmdW5jdGlvbiBhdHRyaWJ1dGUgbW9kaWZpZXJzLgoJKGFybV9pc3JfdmFsdWUpOiBOZXcgRnVuY3Rpb246IFJldHVybnMgdGhlIHR5cGUgb2YgdGhlIGN1cnJlbnQKCWludGVycnVwdCBmdW5jdGlvbi4KCShhcm1fY29tcHV0ZV9mdW5jX3R5cGUpOiBOZXcgRnVuY3Rpb246IENvbXB1dGVzIHRoZSB0eXBlIG9mCgl0aGUgY3VycmVudCBmdW5jdGlvbi4KCShhcm1fY3VycmVudF9mdW5jX3R5cGUpOiBOZXcgRnVuY3Rpb246IFJldHVybnMgdGhlIHR5cGUgb2YgdGhlCgljdXJyZW50IGZ1bmN0aW9uLgoJKHVzZV9yZXR1cm5faW5zbik6IFVzZSBhcm1fY3VycmVudF9mdW5jX3R5cGUuCgkoYXJtX3ZhbGlkX3R5cGVfYXR0cmlidXRlX3ApOiBBY2NlcHQgImludGVycnVwdCIgZnVuY3Rpb24KCWF0dHJpYnV0ZS4KCShhcm1fY29tcF90eXBlX2F0dHJpYnV0ZXMpOiBDaGVjayAiaW50ZXJydXB0IiBhdHRyaWJ1dGVzLgoJKGFybV92YWxpZF9tYWNoaW5lX2RlY2wpOiBBY2NlcHQgImludGVycnVwdCIgZnVuY3Rpb24KCWF0dHJpYnV0ZS4KCShhcm1fZnVuY3Rpb25fb2tfZm9yX3NpYmNhbGwpOiBEbyBub3QgYWxsb3cgaW50ZXJydXB0CglmdW5jdGlvbnMgdG8gdXNlIHNpYmNhbGxzLgoJKGFybV9uYWtlZF9mdW5jdGlvbl9wKTogRGVsZXRlLgoJKHByaW50X211bHRpX3JlZyk6IFJlbW92ZSByZWR1bmRhbnQgcGFyYW1ldGVyICdoYXQnLgoJKGFybV9jb21wdXRlX3NhdmVfcmVnX21hc2spOiBOZXcgRnVuY3Rpb246IENvbXB1dGUgYSBiaXQgbWFzawoJb2YgcmVnaXN0ZXJzIHNhdmVkIGR1cmluZyB0aGUgY3VycmVudCBmdW5jdGlvbidzIHByb2xvZ3VlLgoJKG91dHB1dF9hcm1fcmV0dXJuX2luc3RydWN0aW9uKTogVXNlIGFybV9jdXJyZW50X2Z1bmNfdHlwZS4KCUdlbmVyYXRlIHJldHVybiBpbnN0cnVjdGlvbiB3aGVuIExSIGlzIG5vdCBwb3Bwc2VkIG9mZiB0aGUKCXN0YWNrLgoJKGFybV92b2xhdGlsZV9mdW5jKTogRGVsZXRlLgoJKG91dHB1dF9hcm1fcHJvbG9ndWUpOiBVc2UgYXJtX2N1cnJlbnRfZnVuY190eXBlIGFuZAoJYXJtX2NvbXB1dGVfc2F2ZV9yZWdfbWFzay4KCU5vdGUgcHJlc2VybmNlIG9mIGludGVycnVwdCBmdW5jdGlvbnMuCgkoYXJtX291dHB1dF9lcGlsb2d1ZSk6IFVzZSBhcm1fY3VycmVudF9mdW5jX3R5cGUgYW5kCglhcm1fY29tcHV0ZV9zYXZlX3JlZ19tYXNrLgoJKGFybV9leHBhbmRfcHJvbG9ndWUpOiBVc2UgYXJtX2N1cnJlbnRfZnVuY190eXBlIGFuZAoJYXJtX2NvbXB1dGVfc2F2ZV9yZWdfbWFzay4KCShhcm1faW5pdF9tYWNoaW5lX3N0YXR1cyk6IEluaXRpYWxpc2UgZnVuY190eXBlIGZpZWxkLCBpZgoJbmVjZXNzYXJ5LgoJKHRodW1iX2V4cGFuZF9wcm9sb2d1ZSk6IFVzZSBhcm1fY3VycmVudF9mdW5jX3R5cGUuCgkob3V0cHV0X3RodW1iX3Byb2xvZ3VlKTogVXNlIGFybV9jdXJyZW50X2Z1bmNfdHlwZS4KCjIwMDAtMTItMDggIEJyYWQgTHVjaWVyIDxsdWNpZXJAbWF0aC5wdXJkdWUuZWR1PgoKCSogdHJhZGNwcC5jIChkb19pbmNsdWRlKTogTWFrZSBwb2ludGVyIGRpZmZlcmVuY2VzIDY0LWJpdCBjbGVhbi4KCkZyaSBEZWMgIDggMDg6MjM6MjkgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvbT4KCgkqIGZwLWJpdC5jIChfZnBtdWxfcGFydHMpOiBVc2UgVVNJdHlwZSB2YXJpYWJsZXMgYXMgaW5wdXRzCglmb3IgbXVsdGlwbGllcy4KCjIwMDAtMTItMDcgIE1pa2UgU3R1bXAgIDxtcnNAd3JzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChkaXN0Y2xlYW4pOiBSZW1vdmUgYWxsb2NhLmMgaGFzaHRhYi5jLgoKMjAwMC0xMi0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIE1ha2VmaWxlLmluIChIT1NUX1JUTCk6IEFkZCBzYWZlLWN0eXBlLm8uCgkoc2FmZS1jdHlwZS5vKTogTmV3IHJ1bGUuCgkqIHN5c3RlbS5oOiBJbmNsdWRlIHNhZmUtY3R5cGUuaCwgbm90IGN0eXBlLmguICBObyBuZWVkIHRvCgl3cmFwIGN0eXBlIG1hY3Jvcy4KCgkqIGNwcGhhc2guaDogWmFwIElTdGFibGUgYW5kIHJlbGF0ZWQgbWFjcm9zLiAgRGVmaW5lIGlzXyogaW4KCXRlcm1zIG9mIHNhZmUtY3R5cGUuaCBtYWNyb3MuCgkqIGNwcGluaXQuYzogRGVsZXRlIHRoZSBJU3RhYmxlIGFuZCBhbGwgcmVsYXRlZCBjb2RlLgoKCSogdHJhZGNwcC5jOiBEZWxldGUgaXNfaWRjaGFyLCBpc19pZHN0YXJ0LCBpc19ob3Jfc3BhY2UsIGFuZAoJaXNfc3BhY2UgYXJyYXlzLiAgRGVsZXRlIGluaXRpYWxpemVfY2hhcl9zeW50YXguICBDaGFuZ2UgYWxsCglyZWZlcmVuY2VzIHRvIHRoZSBhYm92ZSBhcnJheXMgdG8gdXNlIG1hY3JvcyBpbnN0ZWFkLgoJKiB0cmFkY3BwLmg6IERlZmluZSBpc19pZGNoYXIsIGlzX2lkc3RhcnQsIGlzX3NwYWNlLCBhbmQKCWlzX252c3BhY2UgaW4gdGVybXMgb2Ygc2FmZV9jdHlwZS5oJ3MgbWFjcm9zLgoJKiB0cmFkY2lmLnk6IGlzX2lkY2hhciwgaXNfaWRzdGFydCBhcmUgbWFjcm9zIG5vdCBhcnJheXMuCgoJKiBjb25maWcvaTM3MC9pMzcwLmMsIGNvbmZpZy93aW5udC9kaXJlbnQuYywKCWNvbmZpZy93aW5udC9maXhpbmMtbnQuYywgY29uZmlnL3dpbm50L2xkLmM6CglVc2UgdXBwZXJjYXNlIGN0eXBlIG1hY3Jvcy4gIElmIHdlIGluY2x1ZGVkIGN0eXBlLmgsCglpbmNsdWRlIHNhZmUtY3R5cGUuaCBpbnN0ZWFkLgoKCSogZml4aW5jL2ZpeGZpeGVzLmM6IFVzZSB1cHBlcmNhc2UgY3R5cGUgbWFjcm9zLiAgRG9uJ3QgdGVzdAoJSVNMT1dFUihjKSBiZWZvcmUgY2FsbGluZyBUT1VQUEVSKGMpLgoJKiBmaXhpbmMvZml4aW5jbC5jIChleHRyYWN0X3F1b3RlZF9maWxlcyk6IFNpbXBsaWZ5IG91dCBzb21lIGd1bmsuCgkqIGZpeGluYy9nbnUtcmVnZXguYzogSW5jbHVkZSBzYWZlLWN0eXBlLmgsIG5vdCBjdHlwZS5oLiAgTm8gbmVlZCB0bwoJd3JhcCBjdHlwZSBtYWNyb3MuICBEb24ndCB0ZXN0IElTVVBQRVIoeCkgYmVmb3JlIGNhbGxpbmcgVE9MT1dFUih4KS4KCjIwMDAtMTItMDcgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogcHJlc2VydmUgcHJldmlvdXMgYWxpZ25tZW50cyB3aGVuCglyZWJ1aWxkaW5nIGFycmF5IHR5cGVzLgoKMjAwMC0xMi0wNyAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBmaWxlcy5jIChzdHJ1Y3QgaW5jbHVkZV9maWxlKTogTW92ZSBmcm9tIGNwcGhhc2guaC4KCShfY3BwX25ldmVyX3JlcmVhZCk6IE5ldyBmdW5jdGlvbi4KCShvcGVuX2ZpbGUsIHJlYWRfaW5jbHVkZV9maWxlKTogVXNlIGl0LgoJKHN0YWNrX2luY2x1ZGVfZmlsZSk6IFNldCB0aGUgYnVmZmVyJ3Mgc3lzcCBhY2NvcmRpbmcgdG8gdGhlCglwYXRoIGluIHdoaWNoIHRoZSBmaWxlIHdhcyBmb3VuZC4KCShmaW5kX2luY2x1ZGVfZmlsZSk6IERvbid0IHNldCBzeXNwLgoJKGNwcF9tYWtlX3N5c3RlbV9oZWFkZXIsIGFjdHVhbF9kaXJlY3RvcnkpOiBVcGRhdGUuCgkoX2NwcF9leGVjdXRlX2luY2x1ZGUpOiBEbyAjaW5jbHVkZV9uZXh0IGxvb2t1cCBoYW5kbGluZyBoZXJlLAoJbm90IGluIGNwcGxpYi5jLiAgVXNlIF9jcHBfbmV2ZXJfcmVyZWFkLgoJKiBjcHBoYXNoLmggKHN0cnVjdF9pbmNsdWRlX2ZpbGUpOiBSZW1vdmUuCgkoc3RydWN0IGNwcF9idWZmZXIpOiBOZXcgbWVtYmVyIHN5c3AuCgkoQ1BQX0lOX1NZU1RFTV9IRUFERVIsIF9jcHBfZXhlY3V0ZV9pbmNsdWRlKTogVXBkYXRlLgoJKF9jcHBfbmV2ZXJfcmVyZWFkKTogTmV3LgoJKiBjcHBsaWIuYyAocmVhZF9saW5lX251bWJlcik6IFJlbmFtZSByZWFkX2ZsYWcuICBSZXdvcmsgc2xpZ2h0bHkuCgkoZW5kX2RpcmVjdGl2ZSk6IENsZWFyIGxpbmVfZXh0ZW5zaW9uIGZsYWcuCgkoX2NwcF9oYW5kbGVfZGlyZWN0aXZlKTogU2V0IGxpbmVfZXh0ZW5zaW9uIGZsYWcgZm9yICNudW1iZXIuCgkoZG9faW5jbHVkZV9uZXh0KTogSGFuZGxlIHBhdGggbG9va3VwIGluIF9jcHBfZXhlY3V0ZV9pbmNsdWRlLgoJKGRvX2xpbmUpOiBDbGVhbnVwIHRvIHVzZSByZWFkX2ZsYWcuICBEb24ndCBhbGxvdyBmbGFncyBpbiAjbGluZS4KCShfY3BwX2RvX2ZpbGVfY2hhbmdlKTogVXBkYXRlLgoJKGRvX3ByYWdtYV9vbmNlKTogVXNlIGNwcF9uZXZlcl9yZXJlYWQuICBDbGVhbiB1cC4KCSogY3BwbGliLmggKHN0cnVjdCBsZXhlcl9zdGF0ZSk6IE5ldyBtZW1iZXIgbGluZV9leHRlbnNpb24uCgoyMDAwLTEyLTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZmxvdy5jIChjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IEZvcmNlIHRoZSBzdGFjayBwb2ludGVyIGxpdmUKCWFmdGVyIHJlbG9hZCBhcyB3ZWxsLgoKMjAwMC0xMi0wNyAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvTWFrZWZpbGUuKihleGVleHQpOiB0aGUgdmFyaWFibGVzIGFyZSBleGVleHQsIHRoZQoJc3Vic3RpdHV0aW9uIGV4cHJlc3Npb24gaXMgYnVpbGRfZXhlZXh0LgoKMjAwMC0xMi0wNyAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjLWNvbW1vbi5jIChwYXJzZV9pbik6IE1ha2UgYSBjcHBfcmVhZGVyICouCgkqIGNwcGZpbGVzLmMgKF9jcHBfZmFrZV9pbmNsdWRlKTogUmVtb3ZlLgoJKiBjcHBoYXNoLmg6IFNpbWlsYXJseS4KCSogY3BwbGliLmMgKGRvX2xpbmUpOiBEb24ndCBjYWxsIF9jcHBfZmFrZV9pbmNsdWRlLiAgQSB2YWxpZAoJI2xpbmUgYWx3YXlzIGNyZWF0ZXMgYSBjYWxsYmFjazsgRkNfUkVOQU1FIGlmIHRoZXJlIGFyZSBubwoJI2xpbmUgZmxhZ3MuCgkqIGZpeC1oZWFkZXIuYyAocmVhZF9zY2FuX2ZpbGUpOiBjcHBfcHVzaF9idWZmZXIgY2Fubm90IGZhaWwuCglUaGUgZmlyc3QgRU9GIG11c3QgYmUgb3VyIGdldF9jaGFyIGJ1ZmZlci4KCjIwMDAtMTItMDcgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKHdhcm5fZm9ybWF0X3NlY3VyaXR5KTogTmV3IHZhcmlhYmxlLgoJKGNoZWNrX2Zvcm1hdF9pbmZvKTogV2FybiBhYm91dCBub24tbGl0ZXJhbCBmb3JtYXRzIHdpdGggbm8gZm9ybWF0Cglhcmd1bWVudHMgaWYgZWl0aGVyIC1XZm9ybWF0LW5vbmxpdGVyYWwgb3IgLVdmb3JtYXQtc2VjdXJpdHkgaXMKCXNwZWNpZmllZC4KCShzZXRfV2Zvcm1hdCk6IFNldCB3YXJuX2Zvcm1hdF9zZWN1cml0eSBmb3Igc2V0dGluZ3Mgb3RoZXIgdGhhbiAxLgoJKiBjLWNvbW1vbi5oICh3YXJuX2Zvcm1hdF9zZWN1cml0eSk6IERlY2xhcmUuCgkqIGMtZGVjbC5jIChjX2RlY29kZV9vcHRpb24pOiBEZWNvZGUgLVdmb3JtYXQtc2VjdXJpdHkgYW5kCgktV25vLWZvcm1hdC1zZWN1cml0eS4KCSogaW52b2tlLnRleGk6IERvY3VtZW50IC1XZm9ybWF0LXNlY3VyaXR5LgoJKiB0b3BsZXYuYyAoZG9jdW1lbnRlZF9sYW5nX29wdGlvbnMpOiBJbmNsdWRlIC1XZm9ybWF0LXNlY3VyaXR5CglhbmQgLVduby1mb3JtYXQtc2VjdXJpdHkuCgoyMDAwLTEyLTA3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChjaGVja19mb3JtYXRfaW5mbyk6IFdhcm4gZm9yIG5vbi1jb25zdGFudCBmb3JtYXQKCXN0cmluZ3Mgd2l0aCBzdHJmdGltZSBmb3JtYXRzIGlmIC1XZm9ybWF0LW5vbmxpdGVyYWwuICBXaGVyZSB0aGUKCWZvcm1hdCBjYW4gY29udmVydCBhcmd1bWVudHMsIGlmIHRoZSBmb3JtYXQgaXMgbm90IGEgc3RyaW5nCglsaXRlcmFsIGFuZCB0aGVyZSBhcmUgbm8gYXJndW1lbnRzIHRvIHRoZSBmb3JtYXQsIGdpdmUgYSBkaWZmZXJlbnQKCXdhcm5pbmcgbWVzc2FnZSBmcm9tIHRoZSBnZW5lcmFsIG5vbi1zdHJpbmctbGl0ZXJhbCBjYXNlLgoKMjAwMC0xMi0wNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoZm9ybWF0X3dhbnRlZF90eXBlKTogQWRkIHJlYWRpbmdfZnJvbV9mbGFnLgoJKHByaW50X2NoYXJfdGFibGUpOiBNYXJrICVzIGFuZCAlUyBmb3JtYXRzIHdpdGggZmxhZyAiUiIuCgkoY2hlY2tfZm9ybWF0X2luZm9fbWFpbik6IFNldCB1cCByZWFkaW5nX2Zyb21fZmxhZyBhcHByb3ByaWF0ZWx5LgoJSWYgYWZsYWcsIGFsd2F5cyBzZXQgd3JpdGluZ19pbl9mbGFnIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gdGhlCglmb3JtYXQgdXNlZCBiZWluZyBhIHNjYW5mIGZvcm1hdCBhbmQgc28gaGF2aW5nIGl0IHNldC4KCShjaGVja19mb3JtYXRfdHlwZXMpOiBDaGVjayBmb3IgZm9ybWF0cyByZWFkaW5nIHRocm91Z2ggbnVsbAoJcG9pbnRlcnMuCgoyMDAwLTEyLTA3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBpbnZva2UudGV4aSAoLVdmb3JtYXQpOiBEb2N1bWVudCB3aGF0IGZvcm1hdCBmZWF0dXJlcyBhcmUKCWNoZWNrZWQuCgoyMDAwLTEyLTA2ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5oOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMTItMDYgICAgICBKb2VsIFNoZXJyaWxsIDxqb2VsQE9BUmNvcnAuY29tPgoKCSogY29uZmlnLmdjYyAoYTI5ayotKi1ydGVtcyosIGFybSotKi1ydGVtcyosIGM0eC0qLXJ0ZW1zKiwKCWg4MzAwLSotcnRlbXMqLCBocHBhMS4xLSotcnRlbXMsICptaXBzKi0qLXJ0ZW1zKik6IE5ldyB0YXJnZXRzLgoJKiBjb25maWcuZ2NjICgqLXJ0ZW1zKik6IEFkZCBzdXBwb3J0IGZvciBndGhyLXJ0ZW1zLmguCgkqIGd0aHItcnRlbXMuaCwgY29uZmlnL2EyOWsvcnRlbXMuaCwgY29uZmlnL2FybS9ydGVtcy1lbGYuaCwKCWNvbmZpZy9oODMwMC9ydGVtcy5oLCBjb25maWcvbWlwcy9ydGVtcy5oOiBOZXcgZmlsZXMuCgoyMDAwLTEyLTA2ICBNYXJrIEtldHRlbmlzICA8a2V0dGVuaXNAZ251Lm9yZz4KCgkqIGNvbmZpZy5nY2M6IFJlb3JnYW5pemUgaGFuZGxpbmcgb2YgKi0qLWdudSosIHRvIHNoYXJlIHRhcmdldAoJc3BlY2lmaWMgbWFrZSBkZXRhaWxzIHdpdGggTGludXguICBVcGRhdGUgY29tbWVudHMgdG8gY2xhcmlmeQoJdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gR05VL0xpbnV4IGFuZCBHTlUvSHVyZC4KCldlZCBEZWMgIDYgMTk6MjI6MDIgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY29udHJpYi50ZXhpOiBGaXggbXkgZW1haWwgYWRkcmVzcy4gIFVwZGF0ZSBQZXIncwoJbGlzdCBvZiBjb250cmlidXRpb25zLgoKMjAwMC0xMi0wNiAgUm9kbmV5IEJyb3duICA8Um9kbmV5QnJvd25AbXluZC5jb20+CgoJKiBjLWxleC5jIChjYl9pbmRlbnQpOiBEZWNvcmF0ZSBgc3RyJyBhcmd1bWVudCwgdW51c2VkIG9uIEhQLVVYLgoJKiBjb2xsZWN0Mi5jIChzY2FuX2xpYnJhcmllcyk6IFJlbW92ZSB1bnVzZWQgYGNoJy4KCShDT0ZGIHNwZWNpZmljIHN0dWZmKTogUHJvdG90eXBlIGxkZ2V0bmFtZS4gIERlY2xhcmUgYW5kIHByb3RvdHlwZQoJbGRidHJlYWQgYW5kIGxkY2xvc2UuCgoJKiBjb25maWcvYWxwaGEvb3NmLmg6IFN0YW5kYXJpemUgY29weXJpZ2h0IHN0YXRlbWVudC4KCSogY29uZmlnL2FyYy9hcmMuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vZWxmLmggY29uZmlnL2FybS9jb2ZmLmggY29uZmlnL2FybS9hb3V0Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL2FybS5jIGNvbmZpZy9hcm0vYXJtLmg6IExpa2V3aXNlLgoJKiBjb25maWcvZWx4c2kvZWx4c2kuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3Njby5oOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvY3Jkcy5oIGNvbmZpZy9tNjhrL2hwMzIwLmggY29uZmlnL202OGsvbHlueC5oOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4a3Y0LmggY29uZmlnL202OGsvbmV4dDIxLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbTY4ay9zdW4zLmg6IExpa2V3aXNlLgoJKiBjb25maWcvbTg4ay9kZ3V4LmggY29uZmlnL204OGsvZGd1eGJjcy5oOiBMaWtld2lzZS4KCSogY29uZmlnL3BkcDExLzJic2QuaCBjb25maWcvcGRwMTEvcGRwMTEuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9yb21wL3JvbXAuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvYWl4NDEuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zeXN2NC5oOiBMaWtld2lzZS4KCSogY29uZmlnL3dlMzJrL3dlMzJrLmMgY29uZmlnL3dlMzJrL3dlMzJrLmg6IExpa2V3aXNlLgoJKiBmaXhpbmMvZ251LXJlZ2V4LmMgZml4aW5jL2dudS1yZWdleC5oOiBMaWtld2lzZS4KCSogY3BwbGliLmggY3BwZXhwLmMgY3NlbGliLmggcHJvZmlsZS5jOiBMaWtld2lzZS4KCSogbG9uZ2xvbmcuaDogTGlrZXdpc2UuCgkqIGxpYmdjYzIuYzogTGlrZXdpc2UuCgoyMDAwLTEyLTA2IEhlcm1hbiBBLkouIHRlbiBCcnVnZ2UgPEhhai5UZW4uQnJ1Z2dlQG5ldC5IQ0Mubmw+CgoJKiBtYWNobW9kZS5kZWY6IFVzZSBjb3JyZWN0IGRlZmluaXRpb24gZm9yIEJJVFNJWkUgb24gdGFyZ2V0cyB3aGVyZQoJQklUU19QRVJfVU5JVCAhPSA4LgoKMjAwMC0xMi0wNiAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvTWFrZWZpbGUuKjogUmVkdWNlIGRpZmZlcmVuY2VzIHRvICh1bHRpbWF0ZWx5KSByZWR1Y2UKCXRoZSBudW1iZXIgb2YgdGhlbS4KCjIwMDAtMTItMDYgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogcGEuYzogSW5jbHVkZSBleHByLmggYmVmb3JlIGMtdHJlZS5oLgoJKHJlbW92ZV91c2VsZXNzX2FkZHRyX2luc25zKTogVXNlIHJldmVyc2VfY29uZGl0aW9uX21heWJlX3Vub3JkZXJlZAoJaW5zdGVhZCBvZiByZXZlcnNlX2NvbmRpdGlvbi4KCShwcmludF9vcGVyYW5kKTogQ29ycmVjdCBwcmVkaWNhdGVzIGZvciBHVCwgR0UsIExUIGFuZCBMRS4gIEFkZAoJcHJlZGljYXRlcyBmb3IgTFRHVCwgVU5MRSwgVU5MVCwgVU5HRSwgVU5HVCwgVU5FUSwgVU5PUkRFUkVEIGFuZAoJT1JERVJFRC4KCShjbXBpYl9jb21wYXJpc29uX29wZXJhdG9yKTogQWRkIEdFVSBhbmQgTFRVIGNvZGVzLgoJKiBwYS5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgY29kZXMgZm9yIGNtcGliX2NvbXBhcmlzb25fb3BlcmF0b3IuCgkqIHBhLm1kIChibHRndCwgYnVubGUsIGJ1bmx0LCBidW5nZSwgYnVuZ3QsIGJ1bmVxLCBidW5vcmRlcmVkLAoJYm9yZGVyZWQpOiBOZXcgZmxvYXQgY29uZGl0aW9uYWwgYnJhbmNoIHBhdHRlcm5zLgoKV2VkIERlYyAgNiAyMTowMzo0MSAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckByZWRoYXQuY29tPgoKCSogZmluYWwuYyAoZmluYWxfYWRkcl92ZWNfYWxpZ24pOiBGaXggY2xpcHBpbmcgdG8gQklHR0VTVF9BTElHTk1FTlQuCgoyMDAwLTEyLTA2ICBTeWx2YWluIFBpb24gIDxTeWx2YWluLlBpb25Ac29waGlhLmlucmlhLmZyPgoKCSogY3BwbGV4LmMgKHNraXBfZXNjYXBlZF9uZXdsaW5lcyk6IERvbid0IHdhcm4gZm9yIHNwYWNlcyBiZXR3ZWVuCgliYWNrc2xhc2ggYW5kIG5ld2xpbmUsIHdoZW4gaW5zaWRlIGEgY29tbWVudC4KCjIwMDAtMTItMDYgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGludm9rZS50ZXhpOiBVc2UgQHRhYmxlIEBzYW1wIGluc3RlYWQgb2YgQGl0ZW1pemUgQG1pbnVzIGZvcgoJdGFibGUgb2YgbGFuZ3VhZ2Ugc3RhbmRhcmRzLiAgRml4IHVzZSBvZiBAcHhyZWYuICBGcm9tIFphY2sKCVdlaW5iZXJnLiAgQWxzbyBleGNsdWRlIHNwZWNzIGRvY3VtZW50YXRpb24gZnJvbSBnZW5lcmF0ZWQKCW1hbnBhZ2UsIGFuZCBjcmVhdGUgc2VwYXJhdGUgRU5WSVJPTk1FTlQgc2VjdGlvbi4KCjIwMDAtMTItMDYgIE1pY2hhZWwgTWF0eiAgPG1hdHptaWNoQGNzLnR1LWJlcmxpbi5kZT4KCgkqIGdjc2UuYyAoY29tcHV0ZV9wcmVfZGF0YSk6IEtpbGwgdHJhcHBpbmcgZXhwcmVzc2lvbnMgaW4KCWRlc3RpbmF0aW9uIGJsb2NrcyBvZiBhYm5vcm1hbCBlZGdlcy4KCjIwMDAtMTItMDUgIFJpY2hhcmQgU2FuZGlmb3JkICA8ci5zYW5kaWZvcmRAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuYyAobW4xMDMwMF9wcmludF9yZWdfbGlzdCk6IEFkZGVkLgoJKG1uMTAzMDBfZ2V0X2xpdmVfY2FsbGVlX3NhdmVkX3JlZ3MpOiBMaWtld2lzZS4KCShtbjEwMzAwX2dlbl9tdWx0aXBsZV9zdG9yZSk6IExpa2V3aXNlLgoJKHN0b3JlX211bHRpcGxlX29wZXJhdGlvbik6IExpa2V3aXNlLgoJKGV4cGFuZF9wcm9sb2d1ZSk6IFVzZSBtbjEwMzAwX2dlbl9tdWx0aXBsZV9zdG9yZSgpLgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLXByb3Rvcy5oIChtbjEwMzAwX3ByaW50X3JlZ19saXN0KTogQWRkZWQuCgkobW4xMDMwMF9nZXRfbGl2ZV9jYWxsZWVfc2F2ZWRfcmVncyk6IExpa2V3aXNlLgoJKG1uMTAzMDBfZ2VuX211bHRpcGxlX3N0b3JlKTogTGlrZXdpc2UuCgkoc3RvcmVfbXVsdGlwbGVfb3BlcmF0aW9uKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAubWQgKHN0b3JlX21vdm0pOiBVc2UgYSBNQVRDSF9QQVJBTExFTAoJdGllZCB0byBzdG9yZV9tdWx0aXBsZV9vcGVyYXRpb24oKS4KClR1ZSBEZWMgIDUgMjA6MDk6MTQgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc2V0am1wX3NldHVwKTogU2V0CgljdXJyZW50X2Z1bmN0aW9uX2hhc19ub25sb2NhbF9sYWJlbC4KCjIwMDAtMTItMDUgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZmlsZXMuYyAoc3RhY2tfaW5jbHVkZV9maWxlKTogUHVzaCB6ZXJvLWxlbmd0aCBidWZmZXJzCglpbiBjYXNlIG9mIGZhaWx1cmUuICBSZXR1cm4gdm9pZCwgYXMgd2UgZG9uJ3QgZmFpbCBhbnkgbW9yZS4KCShyZWFkX2luY2x1ZGVfZmlsZSk6IENoZWNrIGZvciBmaWxlcyB3ZSBzaG91bGRuJ3QgcmUtcmVhZC4KCURvbid0IHJldHVybiBhbiBlcnJvciBjb2RlOyBlcnJvcnMgYXJlIGltcGxpZWQgYnkgbWFya2luZyB0aGUKCWZpbGUgTkVWRVJfUkVSRUFELgoJKF9jcHBfZXhlY3V0ZV9pbmNsdWRlKTogTW92ZSB0aGUgcmVjdXJzaW9uIGFuZCBpbi1tYWNybyBjaGVja3MKCWhlcmUuICBVcGRhdGUgZm9yIHN0YWNrX2luY2x1ZGVfZmlsZSBub3QgZmFpbGluZy4KCSogY3BwbGliLmMgKGNwcF9wdXNoX2J1ZmZlcik6IEFsd2F5cyBzdWNjZWVkLCBzaW5jZQoJX2NwcF9leGVjdXRlX2luY2x1ZGUgcGVyZm9ybXMgdGhlIHJlY3Vyc2lvbiBjaGVjay4gIFRpZHkgdXAuCgkqIGNwcGxpYi5oIChjcHBfcHVzaF9idWZmZXIpOiBVcGRhdGUgcHJvdG90eXBlLgoKMjAwMC0xMi0wNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBzY2hlZC12aXMuYyAodmlzdWFsX3RibF9saW5lX2xlbmd0aCk6IE5ldyB2YXJpYWJsZS4KCShnZXRfdmlzdWFsX3RibF9sZW5ndGgpOiBTZXQgaXQuCgkodmlzdWFsaXplX3N0YWxsX2N5Y2xlcyk6IERvbid0IGxldCBzdGFsbHMgb3ZlcnJ1bgoJdmlzdWFsX3RibF9saW5lX2xlbmd0aC4KCjIwMDAtMTItMDUgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIGdsb2JhbC5jIChnbG9iYWxfY29uZmxpY3RzKTogQWxsb3cgZm9yIGEgUkVHX1VOVVNFRCBub3RlCgl3aXRoIGEgZGlmZmVyZW50IG1vZGUgdG8gdGhlIFJFRyBzZXQgaW4gdGhlIGluc24uCgoyMDAwLTEyLTA1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoZml4aW5jLnNoKTogUGFzcyAkV0FSTl9DRkxBR1MgaW50byBmaXhpbmMgZGlyLgoKCSogZml4aW5jL01ha2VmaWxlLmluIChGSVhJTkNfREVGUyk6IEFkZCAkKFdBUk5fQ0ZMQUdTKS4KCjIwMDAtMTItMDUgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL21rZml4aW5jLnNoKCotZ251Kik6IGFjdGl2YXRlIGZpeGluYyBmb3IgR05VL0h1cmQgYW5kCglHTlUvTGludXguCgoyMDAwLTEyLTA1ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGZpeGluYy9ta2ZpeGluYy5zaDogUnVuIGZpeGluYyBvbiBuZXRic2QuCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKG1hY2hpbmUvYW5zaS5oKTogUnVuIHRoaXMgcnVsZSBvbiBhbGwgZmlsZXMsCgl0byBjb3BlIHdpdGggYWxpYXNlZCBjb3BpZXMuCgkqIGZpeGluYy9maXhpbmNsLng6IFJlZ2VuZXJhdGUuCgoyMDAwLTEyLTA1ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIHNjaGVkLXZpcy5jOiBHdWFyZCB3aXRoICNpZmRlZiBJTlNOX1NDSEVEVUxJTkcuCgkqIHNjaGVkLXJnbi5jOiBMaWtld2lzZS4KCShyZ25fcHJpbnRfaW5zbik6IEZpeCBvdXRwdXQuCgoyMDAwLTEyLTA1ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9NYWtlZmlsZS4qOiBtYWtlIHRoZXNlIG1vcmUgY29uc2lzdGVudAoJKiBmaXhpbmMvbWtmaXhpbmNsLnNoOiBlbmFibGUgQmVPUyBmaXhpbmNsdWRlcwoKMjAwMC0xMi0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHN0bXQuYyAod2Fybl9pZl91bnVzZWRfdmFsdWUpOiBNb3ZlIHNpZGUgZWZmZWN0cyB0ZXN0IGVhcmxpZXIuCgoyMDAwLTEyLTA1ICBBbGFuIE1vZHJhIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBiYi1yZW9yZGVyLmMgKHJlb3JkZXJfYmFzaWNfYmxvY2tzKTogRG8gY2hlY2sgZm9yIEVIIGVkZ2VzIGV2ZW4KCXdoZW4gdXNpbmcgc2psai4KCjIwMDAtMTItMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBmbG93LmMgKGNhbGN1bGF0ZV9nbG9iYWxfcmVnc19saXZlKTogT25seSBmb3JjZSBzdGFjayBwb2ludGVyCglsaXZlIGJlZm9yZSByZWxvYWQuICBGb3JjZSBwaWMgcmVnaXN0ZXIgbGl2ZSBiZWZvcmUgcmVsb2FkLgoJKGluc25fZGVhZF9wKTogRG9uJ3QgcHJvdGVjdCBwaWMgcmVmZXJlbmNlcyBmcm9tIGRlbGV0aW9uLgoKMjAwMC0xMi0wNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogaW52b2tlLnRleGk6IEFkZCBzdXBwb3J0IGZvciB1c2luZyB0ZXhpMnBvZC5wbC4gIERvbid0IHVzZQoJQG11bHRpdGFibGUuCgoyMDAwLTEyLTA0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX292ZXJyaWRlX29wdGlvbnMpOiBUZXN0ICdpbnNuX2ZsYWdzJyBub3QKCSd0dW5lX2ZsYWdzJyBmb3IgWFNjYWxlIG5hdHVyZS4KCVJlbW92ZSBzcHVyaW91cyB0ZXN0IG9mIEhBUkRfRkxPQVQgYW5kIFhTY2FsZSBmbGFncy4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kICh1bXVsc2lkaTNhZGRkaSk6IFJlc3RvcmUgIj0mciIgcmVnaXN0ZXIKCWNvbnRyYWludCwgYWNjaWRlbnRhbGx5IGNoYW5nZWQgZHVyaW5nIFhTY2FsZSBjb250cmlidXRpb24uCgoJKiBjb25maWcvYXJtL2xpYjFmdW5jcy5hc20gKGludGVyd29ya19jYWxsX3ZpYV8sIGNhbGxfdmlhXyk6IERvCglub3QgY3JlYXRlIHRoZXNlIGZ1bmN0aW9ucyBpZiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBkb2VzIG5vdAoJc3VwcG9ydCBUaHVtYiBpbnN0cnVjdGlvbnMuCgoyMDAwLTEyLTA0ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBPTkVXUzogTmV3IGZpbGUgd2l0aCB0aGUgY3VycmVudCBjb250ZW50cyBvZiBORVdTIHVwIHRvIEVHQ1MKCTEuMS4KCSogTkVXUzogR2VuZXJhdGUgYXV0b21hdGljYWxseSBmcm9tIG9ubGluZSByZWxlYXNlIG5vdGVzIGZyb20gRUdDUwoJMS4wIHRvIEdDQyAyLjk1LjIsIHVzaW5nIC4uL2NvbnRyaWIvZ2VubmV3cy4KCjIwMDAtMTItMDQgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogdHJhZGNpZi55OiBNb3ZlIGxleHB0ciB0byB0b3Agb2YgZmlsZS4gIEFkZCBydWxlIHRvIGhhbmRsZQoJYXNzZXJ0aW9ucyBpbiBjb25kaXRpb25hbCBleHByZXNzaW9ucy4KCSogdHJhZGNwcC5jIChwYXJzZV9hbnN3ZXIpOiBBc3NlcnRpb25zIGRvIG5vdCBuZWVkIHRvIGdvIHRvCgllbmQgb2YgbGluZSBpbiBjb25kaXRpb25hbCBkaXJlY3RpdmVzLgoJKHBhcnNlX2Fzc2VydGlvbik6IEdldCBmaXJzdCBjaGFyYWN0ZXIgb2YgaWRlbnRpZmllcnMgY29ycmVjdC4KCSh0ZXN0X2Fzc2VydGlvbik6IE5ldyBmdW5jdGlvbi4KCSogdHJhZGNwcC5oICh0ZXN0X2Fzc2VydGlvbik6IE5ldyBwcm90b3R5cGUuCgoyMDAwLTEyLTAxICBSb2RuZXkgQnJvd24gIDxSb2RuZXlCcm93bkBteW5kLmNvbT4KCgkqIGNvbmZpZy5nY2M6IEZpeCB0eXBvIGZvciBVbml4V2FyZSA3LgoKMjAwMC0xMi0wMyAgUGhpbCBFZHdhcmRzICA8cG1lQHNvdXJjZXMucmVkaGF0LmNvbT4KCgkqIGludm9rZS50ZXhpOiAgUmVwbGFjZSBgcGVkd2FybnMnIHdpdGggY2xlYXJlciB0ZXh0LgoKMjAwMC0xMi0wNCAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvTWFrZWZpbGUuKihjbGVhbik6ICBkb24ndCBjbGVhbiBhdXRvZ2VuZXJhdGVkIGZpbGVzLgoJKG1haW5haW5lci1jbGVhbik6IGNsZWFuIGF1dG9nZW5lcmF0ZWQgZmlsZXMKCjIwMDAtMTItMDQgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogbWQudGV4aTogQWRkIG92ZXJ2aWV3LCBjbGFyaWZ5IG1hdGNoX2R1cCBhbmQgZGVmaW5lX2V4cGFuZC4KCjIwMDAtMTItMDQgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogcHJpbnQtdHJlZS5jIChwcmludF9ub2RlKTogVGFyZ2V0LXNwZWNpZmljIGJ1aWx0aW5zIHByaW50CgludW1iZXJzLCBub3QgbmFtZXMuCgoyMDAwLTEyLTA0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHN0b3ItbGF5b3V0LmMgKGludF9tb2RlX2Zvcl9tb2RlKTogSGFuZGxlIE1PREVfVkVDVE9SX0lOVCwKCU1PREVfVkVDVE9SX0ZMT0FULgoKCSogZGlhZ25vc3RpYy5jIChyZXBvcnRfcHJvYmxlbWF0aWNfbW9kdWxlKTogcy9mdW5jdGlvbi9tb2R1bGUvLgoKCSogYy1sZXguaDogUmVtb3ZlIGRlY2wgZm9yIGNoZWNrX25ld2xpbmUuCgoyMDAwLTEyLTA0ICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJKiBSRUFETUUuQVBPTExPOiBSZW1vdmUgb2Jzb2xldGUgZmlsZS4KCjIwMDAtMTItMDQgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaW50ZXJuYWxzLnRleGk6IE5ldyBmaWxlLgoKMjAwMC0xMi0wNCAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBmaWxlcy5jIChjcHBfbWFrZV9zeXN0ZW1faGVhZGVyKTogVGFrZSAyIGJvb2xlYW5zLAoJYW5kIG9wZXJhdGUgb24gY3VycmVudCBidWZmZXIuCgkoY3BwX3JlYWRfZmlsZSk6IFJlbmFtZSBfY3BwX3JlYWRfZmlsZS4KCSogY3BwbGliLmMgKGRvX2xpbmUsIGRvX3ByYWdtYV9zeXN0ZW1faGVhZGVyKTogVXBkYXRlIGNhbGxzIHRvCgljcHBfbWFrZV9zeXN0ZW1faGVhZGVyLgoJKiBmaXgtaGVhZGVyLmM6IFNpbWlsYXJseS4KCSogY3BwaGFzaC5oIChfY3BwX3JlYWRfZmlsZSk6IE1vdmUgZnJvbS4uLgoJKiBjcHBsaWIuaDogLi4uIGhlcmUuCgkqIGNwcGluaXQuYyAoZG9faW5jbHVkZXMsIGNwcF9zdGFydF9yZWFkKTogVXBkYXRlIGFwcHJvcHJpYXRlbHkuCgoyMDAwLTEyLTAzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHJzcG4sIGV4cGFuZF9idWlsdGluX3N0cmNzcG4pOgoJSGFuZGxlIGFub3RoZXIgdHJhbnNmb3JtYXRpb24uCgoyMDAwLTEyLTAzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnLmdjYzogQWRkIHN1cHBvcnQgZm9yIFN0cm9uZ0FSTSB0YXJnZXRzLgoJKiBjb25maWcvYXJtL3Qtc3Ryb25nYXJtLWVsZjogTmV3IGZpbGUuCgkqIGNvbmZpZy9hcm0vdC1zdHJvbmdhcm0tY29mZjogTmV3IGZpbGUuCgkqIGNvbmZpZy9hcm0vdC1zdHJvbmdhcm0tcGU6IE5ldyBmaWxlLgoJKiBjb25maWcvYXJtL3N0cm9uZ2FybS1wZS5oOiBOZXcgZmlsZS4KCjIwMDAtMTItMDMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBORVdTOiBNZW50aW9uIFhTY2FsZSBoYXMgYmVlbiBhZGRlZC4KCSogY29uZmlnLmdjYzogQWRkIHN1cHBvcnQgZm9yIFhTY2FsZSB0YXJnZXRzLgoJKiBjb25maWcvYXJtL2FybS5oOiBBZGQgc3VwcG9ydCBmb3IgWFNjYWxlIHByb2Nlc3Nvci4KCSogY29uZmlnL2FybS9hcm0uYzogQWRkIHN1cHBvcnQgZm9yIFhTY2FsZSBwcm9jZXNzb3IuCgkqIGNvbmZpZy9hcm0vYXJtLm1kOiBBZGQgc3VwcG9ydCBmb3IgWFNjYWxlIHByb2Nlc3Nvci4KCSogY29uZmlnL2FybS90LXhzY2FsZS1lbGY6IE5ldyBmaWxlLgoJKiBjb25maWcvYXJtL3QteHNjYWxlLWNvZmY6IE5ldyBmaWxlLgoJKiBjb25maWcvYXJtL3hzY2FsZS1lbGYuaDogTmV3IGZpbGUuCgkqIGNvbmZpZy9hcm0veHNjYWxlLWNvZmYuaDogTmV3IGZpbGUuCgoyMDAwLTEyLTAzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYmItcmVvcmRlci5jIChyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IERvbid0IGNoZWNrIGZvciBFSCBlZGdlcwoJdW5sZXNzIGV4Y2VwdGlvbiBoYW5kbGluZyBpcyBlbmFibGVkLCBhbmQgaWYgbm90IHVzaW5nIHNqbGouCgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zZXRqbXBfc2V0dXApOiBOZXcuCgkoZXhwYW5kX2J1aWx0aW5fc2V0am1wX3JlY2VpdmVyKTogTmV3LgoJKGV4cGFuZF9idWlsdGluX3NldGptcCk6IFNwbGl0IG91dCBfc2V0dXAgYW5kIF9yZWNlaXZlciBmdW5jdGlvbnMuCglNb3ZlIGFyZ3VtZW50IHBhcnNpbmcgaW4gZnJvbSAuLi4KCShleHBhbmRfYnVpbHRpbik6IC4uLiBoZXJlLgoJKiBleGNlcHQuYyAocmVjZWl2ZV9leGNlcHRpb25fbGFiZWwpOiBCcmFuY2ggYXJvdW5kIHJlY2VpdmVyCgl1bmxlc3MgbmV3LXN0eWxlIGV4Y2VwdGlvbnMuICBDYWxsIGV4cGFuZF9idWlsdGluX3NldGptcF9yZWNlaXZlci4KCShzdGFydF9keW5hbWljX2hhbmRsZXIpOiBDYWxsIGV4cGFuZF9idWlsdGluX3NldGptcF9zZXR1cC4KCSogZXhwci5oOiBVcGRhdGUgYnVpbHRpbiBzZXRqbXAgZGVjbHMuCgoyMDAwLTEyLTAzICBCcnVjZSBLb3JiICA8YmtvcmJAZ2NjLm9yZz4KCgkqIGZpeGluYy9ta2ZpeGluYy5zaChidWlsZCBtYWNoaW5lKTogU29tZXRpbWVzLCB0aGVyZSBpcyBubyBjYW5vbmljYWwKCWJ1aWxkIG1hY2hpbmUgbmFtZS4gIERlZmF1bHQgdG8gdGhlIHRhcmdldC4KCjIwMDAtMTItMDMgIExhdXJ5bmFzIEJpdmVpbmlzICA8bGF1cmFzQHNvZnRob21lLm5ldD4KCgkqIE1ha2VmaWxlLmluOiB1c2UgJChidWlsZF9jYW5vbmljYWwpLCBub3QgJChjYW5vbmljYWxfYnVpbGQpLgoKMjAwMC0xMi0wMyAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBNYWtlZmlsZS5pbiAoT0JKUyk6IEFkZCBzY2hlZC1yZ24uby4KCShzY2hlZC1yZ24ubyk6IE5ldyBydWxlLiAgKiBoYWlmYS1zY2hlZC5jIChzY2hlZF92ZXJib3NlKTogTm8KCWxvbmdlciBzdGF0aWMuCgkoSU5TTl9QUklPUklUWSwgSU5TTl9DT1NULCBJTlNOX1VOSVQsIElOU05fUkVHX1dFSUdIVCwKCUlOU05fQkxPQ0tBR0UsIFVOSVRfQklUUywgQkxPQ0tBR0VfTUFTSywgRU5DT0RFX0JMT0NLQUdFLAoJVU5JVF9CTE9DS0VELCBCTE9DS0FHRV9SQU5HRSwgTUlOX0JMT0NLQUdFX0NPU1QsCglNQVhfQkxPQ0tBR0VfQ09TVCk6IE1vdmUgdG8gc2NoZWQtaW50LmguCgkoTUFYX1JHTl9CTE9DS1MsIE1BWF9SR05fSU5TTlMsIElOU05fUkVGX0NPVU5ULCBGRURfQllfU1BFQ19MT0FELAoJSVNfTE9BRF9JTlNOLCBzdHJ1Y3QgaGFpZmFfZWRnZSwgZWRnZV90YWJsZSwgTkVYVF9JTiwgTkVYVF9PVVQsCglGUk9NX0JMT0NLLCBUT19CTE9DSywgbnJfZWRnZXMsIGluX2VkZ2VzLCBvdXRfZWRnZXMsIElOX0VER0VTLAoJT1VUX0VER0VTLCBlZGdlbHN0LCBzdHJ1Y3QgcmVnaW9uLCBucl9yZWdpb25zLCByZ25fdGFibGUsCglyZ25fYmJfdGFibGUsIGJsb2NrX3RvX2JiLCBjb250YWluaW5nX3JnbiwgUkdOX05SX0JMT0NLUywKCVJHTl9CTE9DS1MsIEJMT0NLX1RPX0JCLCBCQl9UT19CTE9DSywgQ09OVEFJTklOR19SR04sCglkZWJ1Z19yZWdpb25zLCBmaW5kX3NpbmdsZV9ibG9ja19yZWdpb24sIGZpbmRfcmducywgdG9vX2xhcmdlLAoJaW5pdF9yZWdpb25zLCBjdXJyZW50X25yX2Jsb2NrcywgY3VycmVudF9ibG9ja3MsIGJpdHNldCwgYml0bHN0LAoJYml0bHN0X3RhYmxlX2xhc3QsIGJpdGxzdF90YWJsZV9zaXplLCBiaXRsc3RfdGFibGUsIGJpdHNldF9tZW1iZXIsCglleHRyYWN0X2JpdGxzdCwgYmJsc3QsIHN0cnVjdCBjYW5kaWRhdGUsIGNhbmRpZGF0ZV90YWJsZSwKCWJibHN0X3RhYmxlLCBiYmxzdF9zaXplLCBiYmxzdF9sYXN0LCBJU19WQUxJRCwgSVNfU1BFQ1VMQVRJVkUsCglTUkNfUFJPQiwgdGFyZ2V0X2JiLCBzcGxpdF9lZGdlcywgY29tcHV0ZV90cmdfaW5mbywKCWRlYnVnX2NhbmRpZGF0ZSwgZGVidWdfY2FuZGlkYXRlcywgYmJzZXQsIGJic2V0X3NpemUsIGRvbSwKCUlTX1JHTl9FTlRSWSwgSVNfRE9NSU5BVEVELCBwcm9iLCBHRVRfU1JDX1BST0IsIGVkZ2VzZXQsCglyZ25fbnJfZWRnZXMsIHJnbl9lZGdlcywgZWRnZXNldF9zaXplLCBlZGdlc2V0X2JpdHNpemUsCglFREdFX1RPX0JJVCwgZWRnZV90b19iaXQsIHBvdF9zcGxpdCwgYW5jZXN0b3JfZWRnZXMsCgljb21wdXRlX2RvbV9wcm9iX3BzLCBBQlNfVkFMVUUsIElOU05fUFJPQkFCSUxJVFksCglJU19TUEVDVUxBVElWRV9JTlNOLCBJTlNOX0JCLCBNSU5fRElGRl9QUklPUklUWSwgTUlOX1BST0JBQklMSVRZLAoJTUlOX1BST0JfRElGRiwgY2hlY2tfbGl2ZV8xLCB1cGRhdGVfbGl2ZV8xLCBjaGVja19saXZlLAoJdXBkYXRlX2xpdmUsIHNldF9zcGVjX2ZlZCwgaXNfcGZyZWUsIGZpbmRfY29uZGl0aW9uYWxfcHJvdGVjdGlvbiwKCWlzX2NvbmRpdGlvbmFsbHlfcHJvdGVjdGVkLCBtYXlfdHJhcF9leHAsIGhhaWZhX2NsYXNzaWZ5X2luc24sCglpc19wcmlza3ksIGlzX2V4Y2VwdGlvbl9mcmVlLCBhZGRfYnJhbmNoX2RlcGVuZGVuY2VzLAoJcHJvcGFnYXRlX2RlcHMsIGNvbXB1dGVfYmxvY2tfYmFja3dhcmRfZGVwZW5kZW5jZXMsCglkZWJ1Z19kZXBlbmRlbmNpZXMsIGlzX2NmZ19ub25yZWd1bGFyLCBidWlsZF9jb250cm9sX2Zsb3csCgluZXdfZWRnZSwgYmJfZGVwcywgQklUU0VUX1VOSU9OLCBCSVRTRVRfSU5URVIsIEJJVFNFVF9ESUZGRVIsCglCSVRTRVRfSU5WRVJULCBCSVRTRVRfQURELCBCSVRTRVRfUkVNT1ZFLCBkZWJ1Z19yZWdpb25zLAoJVVBEQVRFX0xPT1BfUkVMQVRJT05TLCBJTlNOX1RSQVBfQ0xBU1MsIFdPUlNUX0NMQVNTLCBJU19SRUFDSEFCTEUsCglDT05TVF9CQVNFRF9BRERSRVNTX1AsIGZyZWVfcGVuZGluZ19saXN0cywgc2NoZWRfdGFyZ2V0X25faW5zbnMsCgl0YXJnZXRfbl9pbnNucywgc2NoZWRfbl9pbnNucywgaW5pdF9yZWFkeV9saXN0LCBkZWF0aHNfaW5fcmVnaW9uLAoJY2FuX3NjaGVkdWxlX3JlYWR5X3AsIG5ld19yZWFkeSwgc2NoZWR1bGVfbW9yZV9wLCByZ25fcHJpbnRfaW5zbiwKCXJnbl9yYW5rLCByZWdpb25fc2NoZWRfaW5mbyk6IE1vdmUgdG8gc2NoZWQtcmduLmMuCgkoZGVidWdfcmVnX3ZlY3Rvcik6IERlbGV0ZSB1c2VsZXNzIGZ1bmN0aW9uLgoJKGdldF9iYl9oZWFkX3RhaWwpOiBMaWtld2lzZS4KCShpbnNuX2lzc3VlX2RlbGF5LCBpbnNuX2Nvc3QsIHJlYWR5X2FkZCwgZ2V0X2Jsb2NrX2hlYWRfdGFpbCwKCW5vX3JlYWxfaW5zbnNfcCwgcm1fbGluZV9ub3Rlcywgc2F2ZV9saW5lX25vdGVzLAoJcmVzdG9yZV9saW5lX25vdGVzLCBybV9yZWR1bmRhbnRfbGluZV9ub3Rlcywgc2NoZWRfaW5pdCk6IE5vCglsb25nZXIgc3RhdGljLgoJKHJtX2xpbmVfbm90ZXMsIHNhdmVfbGluZV9ub3RlcywgcmVzdG9yZV9saW5lX25vdGVzLAoJc2NoZWR1bGVfYmxvY2ssIHNldF9wcmlvcml0aWVzKTogQ2hhbmdlIGFyZ3VtZW50IHRvIGJlIGEgcmVhbAoJYmFzaWMgYmxvY2ssIG5vdCBvbmUgb2YgaGFpZmEncyAiYmIicy4gIEFsbCBjYWxsZXJzIGNoYW5nZWQKCShybV9vdGhlcl9ub3Rlcyk6IEluaXRpYWxpemUgbm90ZV9saXN0IGhlcmUsIG5vdCBpbgoJc2NoZWR1bGVfcmVnaW9uLgoJKHNjaGVkX2ZpbmlzaCk6IE5ldyBmdW5jdGlvbiwgY2FsbGVkIGZyb20gc2NoZWR1bGVfaW5zbi4gICogKgoJc2NoZWQtaW50LmggKElOU05fUFJJT1JJVFksIElOU05fQ09TVCwgSU5TTl9VTklULCBJTlNOX1JFR19XRUlHSFQsCglJTlNOX0JMT0NLQUdFLCBVTklUX0JJVFMsIEJMT0NLQUdFX01BU0ssIEVOQ09ERV9CTE9DS0FHRSwKCVVOSVRfQkxPQ0tFRCwgQkxPQ0tBR0VfUkFOR0UsIE1JTl9CTE9DS0FHRV9DT1NULAoJTUFYX0JMT0NLQUdFX0NPU1QpOiBNb3ZlZCBoZXJlIGZyb20gaGFpZmEtc2NoZWQuYy4KCShnZXRfYmxvY2tfaGVhZF90YWlsLCBub19yZWFsX2luc25zX3AsIHJtX2xpbmVfbm90ZXMsCglzYXZlX2xpbmVfbm90ZXMsIHJlc3RvcmVfbGluZV9ub3Rlcywgcm1fcmVkdW5kYW50X2xpbmVfbm90ZXMsCglybV9vdGhlcl9ub3RlcywgaW5zbl9pc3N1ZV9kZWxheSwgc2V0X3ByaW9yaXRpZXMsIHNjaGVkdWxlX2Jsb2NrLAoJc2NoZWRfaW5pdCwgc2NoZWRfZmluaXNoLCByZWFkeV9hZGQsIGluc25fY29zdCk6IERlY2xhcmUuCgoyMDAwLTEyLTAzICBMYXVyeW5hcyBCaXZlaW5pcyAgPGxhdXJhc0Bzb2Z0aG9tZS5uZXQ+CgkgICAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbjogcGFzcyAkKGJ1aWxkX2Nhbm9uaWNhbCkgdG8gbWtmaXhpbmMuc2guCgkqIGZpeGluYy9ta2ZpeGluYy5zaDogYWNjZXB0IGJ1aWxkIHN5c3RlbSBuYW1lIGFzIGFuIGFyZ3VtZW50LgoJVXNlIGl0IGZvciBjaG9vc2luZyB0aGUgZml4IGJ1aWxkIG1ldGhvZC4gIFVzZSB0aGUgdGFyZ2V0IGZvcgoJc2VsZWN0aW5nIHNwZWNpYWwgZml4IHJ1bGVzLgoKMjAwMC0xMi0wMyAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBNYWtlZmlsZS5pbiAoT0JKUyk6IEFkZCBzY2hlZC1kZXBzLm8uCgkoc2NoZWQtZGVwcy5vKTogTmV3IHJ1bGUuCgkqIGhhaWZhLXNjaGVkLmMgKHN0cnVjdCBkZXBzLCBzdHJ1Y3QgaGFpZmFfaW5zbl9kYXRhKTogTW92ZWQgdG8KCXNjaGVkLWludC5oLgoJKElOU05fREVQRU5ELCBJTlNOX0xVSUQsIENBTlRfTU9WRSwgSU5TTl9ERVBfQ09VTlQpOiBNYWNyb3MgbW92ZWQgdG8KCXNjaGVkLWludC5oLgoJKFNJWkVfRk9SX01PREUpOiBEZWxldGUgdW51c2VkIG1hY3JvLgoJKHJlZ19rbm93bl9lcXVpdl9wLCByZWdfa25vd25fdmFsdWUsIHJlZ19wZW5kaW5nX2Nsb2JiZXJzLAoJcmVnX3BlbmRpbmdfc2V0cywgcmVnX3BlbmRpbmdfc2V0c19hbGwsIHRydWVfZGVwZW5kZW5jeV9jYWNoZSwKCWFudGlfZGVwZW5kZW5jeV9jYWNoZSwgb3V0cHV0X2RlcGVuZGVuY3lfY2FjaGUsCglmb3J3YXJkX2RlcGVuZGVuY3lfY2FjaGUpOiBWYXJpYWJsZXMgbW92ZWQgdG8gc2NoZWQtZGVwcy5jLgoJKGFkZF9kZXBlbmRlbmNlLCByZW1vdmVfZGVwZW5kZW5jZSwgZmluZF9pbnNuX2xpc3QsCglmaW5kX2luc25fbWVtX2xpc3QsIGFkZF9pbnNuX21lbV9kZXBlbmRlbmNlLCBmbHVzaF9wZW5kaW5nX2xpc3RzLAoJc2NoZWRfYW5hbHl6ZV9pbnNuLCBzY2hlZF9hbmFseXplXzEsIHNjaGVkX2FuYWx5emVfMiwKCXNjaGVkX2FuYWx5emUsIGdyb3VwX2xlYWRlciwgY29tcHV0ZV9mb3J3YXJkX2RlcGVuZGVuY2VzLAoJaW5pdF9kZXBzLCBmcmVlX2RlcHMsIGluaXRfZGVwZW5kZW5jeV9jYWNoZXMsIGZyZWVfZGVwZW5kZW5jeV9jYWNoZXMpOgoJRnVuY3Rpb25zIG1vdmVkIHRvIHNjaGVkLWRlcHMuYy4KCShzY2hlZHVsZV9yZWdpb24pOiBDYWxsIGluaXRfZGVwc19nbG9iYWwgYW5kIGZpbmlzaF9kZXBzX2dsb2JhbAoJaW5zdGVhZCBvZiBkaXJlY3RseSBtYW5pcHVsYXRpbmcgZGVwZW5kZW5jeSBkYXRhIHN0cnVjdHVyZXMuCgkqIHNjaGVkLWRlcHMuYzogTmV3IGZpbGUuCgkoaW5pdF9kZXBzX2dsb2JhbCwgZmluaXNoX2RlcHNfZ2xvYmFsKTogTmV3IGZ1bmN0aW9ucy4KCSogc2NoZWQtaW50LmggKHN0cnVjdCBoYWlmYV9pbnNuX2RhdGEsIHN0cnVjdCBkZXBzKTogTW92ZWQgaGVyZSBmcm9tCgloYWlmYS1zY2hlZC5jLgoJKGhfaV9kKTogRGVjbGFyZS4KCShJTlNOX0RFUEVORCwgSU5TTl9MVUlELCBDQU5UX01PVkUsIElOU05fREVQX0NPVU5UKTogTWFjcm9zIG1vdmVkIGhlcmUKCWZyb20gaGFpZmEtc2NoZWQuYy4KCgkqIE1ha2VmaWxlLmluIChPQkpTKTogQWRkIHNjaGVkLXZpcy5vLgoJKHNjaGVkLXZpcy5vKTogTmV3IHJ1bGUuCgkqIGhhaWZhLXNjaGVkLmMgKGdldF91bml0X2xhc3RfaW5zbik6IE5ldyBmdW5jdGlvbi4KCShzY2hlZF9kdW1wLCBpbnNuX3VuaXQsIGFjdHVhbF9oYXphcmRfdGhpc19pbnN0YW5jZSk6IE5vIGxvbmdlcgoJc3RhdGljLgoJKHNjaGVkdWxlX2Jsb2NrKTogQ2FsbCB2aXN1YWxpemVfYWxsb2MgYW5kIHZpc3VhbGl6ZV9mcmVlLiAgRGVsZXRlCglzcHVyaW91cyByZXR1cm4gc3RhdGVtZW50LgoJKGluaXRfdGFyZ2V0X3VuaXRzLCBpbnNuX3ByaW50X3VuaXRzLCBnZXRfdmlzdWFsX3RibF9sZW5ndGgsCglpbml0X2Jsb2NrX3Zpc3VhbGl6YXRpb24sIHByaW50X2Jsb2NrX3Zpc3VhbGl6YXRpb24sIHNhZmVfY29uY2F0LAoJdmlzdWFsaXplX3NjaGVkdWxlZF9pbm5zLCB2aXN1YWxpemVfbm9fdW5pdCwgdmlzdWFsaXplX3N0YWxsX2N5Y2xlcywKCXByaW50X2V4cCwgcHJpbnRfdmFsdWUsIHByaW50X3BhdHRlcm4sIHByaW50X2luc24sIHRhcmdldF91bml0cywKCU1BWF9WSVNVQUxfTElORVMsIElOU05fTEVOLCBuX3Zpc3VhbF9saW5lcywgdmlzdWFsX3RibCwKCW5fdmlzX25vX3VuaXQsIHZpc19ub191bml0KTogTW92ZSBzY2hlZHVsaW5nIHZpc3VhbGl6YXRpb24KCWZ1bmN0aW9ucy92YXJpYWJsZXMuLi4KCSogc2NoZWQtdmlzLmM6IC4uLmhlcmUuICBOZXcgZmlsZS4KCSh2aXN1YWxpemVfYWxsb2MsIHZpc3VhbGl6ZV9mcmVlKTogTmV3IGZ1bmN0aW9ucy4KCSh2aXN1YWxpemVfc2NoZWR1bGVkX2luc25zLCB2aXN1YWxpemVfc3RhbGxfY3ljbGVzLAoJcHJpbnRfYmxvY2tfdmlzdWFsaXphdGlvbik6IExvc2UgYmFzaWMgYmxvY2sgYXJndW1lbnQuICBBbGwgY2FsbGVycwoJY2hhbmdlZC4KCSh2aXN1YWxpemVfc2NoZWR1bGVkX2luc25zKTogVXNlIG5ldyBmdW5jdGlvbiBnZXRfdW5pdF9sYXN0X2luc24uCgkqIHNjaGVkLWludC5oIChjdXJyZW50X3NjaGVkX2luZm8sIHNjaGVkX2R1bXApOiBEZWNsYXJlLgoJKGluaXRfdGFyZ2V0X3VuaXRzLCBpbnNuX3ByaW50X3VuaXRzLCBpbml0X2Jsb2NrX3Zpc3VhbGl6YXRpb24sCglwcmludF9ibG9ja192aXN1YWxpemF0aW9uLCB2aXN1YWxpemVfc2NoZWR1bGVkX2lubnMsCgl2aXN1YWxpemVfbm9fdW5pdCwgdmlzdWFsaXplX3N0YWxsX2N5Y2xlcywgdmlzdWFsaXplX2FsbG9jLAoJdmlzdWFsaXplX2ZyZWUpOiBEZWNsYXJlIGZ1bmN0aW9ucy4KCgkqIHNjaGVkLWludC5oOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKGhhaWZhLXNjaGVkLm8pOiBEZXBlbmQgb24gaXQuCgkqIGhhaWZhLXNjaGVkLmM6IEluY2x1ZGUgaXQuCgkobm9fcmVhbF9pbnNuc19wKTogTmV3IGZ1bmN0aW9uLgoJKGN1cnJlbnRfc2NoZWRfaW5mbyk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkoX19pbmxpbmUsIEhBSUZBX0lOTElORSk6IE1vdmVkIHRvIHNjaGVkLWludC5oLgoJKGdldF9ibG9ja19oZWFkX3RhaWwpOiBNaW5vciBjbGVhbnVwLgoJKGluaXRfcmVhZHlfbGlzdCwgY2FuX3NjaGVkdWxlX3JlYWR5X3AsIG5ld19yZWFkeSwgc2NoZWR1bGVfbW9yZV9wLAoJcmduX3ByaW50X2luc24sIHJnbl9yYW5rKTogTmV3IGZ1bmN0aW9ucywgYnJva2VuIG91dCBvZgoJcmFua19mb3Jfc2NoZWR1bGUsIHNjaGVkdWxlX2luc24gYW5kIHNjaGVkdWxlX2Jsb2NrLCB3aGVyZSB0aGV5CglhcmUgbm93IGNhbGxlZCB0aHJvdWdoIGZ1bmN0aW9uIHBvaW50ZXJzIGluIGN1cnJlbnRfc2NoZWRfaW5mby4KCShxdWV1ZV9pbnNuLCBzY2hlZHVsZV9pbnNuLCBxdWV1ZV90b19yZWFkeSwgZGVidWdfcmVhZHlfbGlzdCwKCXByaW50X2luc24pOiBUbyBkaXNwbGF5IHVpZCBhbmQgYmxvY2sgbnVtYmVyLCBjYWxsIHRoZSBwcmludF9pbnNuCglmdW5jdGlvbiBwb2ludGVyIGluIGN1cnJlbnRfc2NoZWR1bGVfaW5mby4KCShyZWdpb25fc2NoZWRfaW5mbyk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkoc2NoZWRfdGFyZ2V0X25faW5zbnMsIHNjaGVkX25faW5zbnMsIHRhcmdldF9uX2luc25zKTogTmV3IGdsb2JhbAoJdmFyaWFibGVzLCBtb3ZlZCBvdXQgb2Ygc2NoZWR1bGVfYmxvY2suCgkoc2NoZWR1bGVfYmxvY2spOiBSZXR1cm4gdm9pZC4gIEFsbCBjYWxsZXJzIGNoYW5nZWQuCglNb3ZlIHNvbWUgb2YgdGhlIHNldHVwIGNvZGUgaW50byBzY2hlZHVsZV9yZWdpb24uICBHZXQgaGVhZC90YWlsCglmcm9tIGN1cnJlbnRfc2NoZWRfaW5mbywgYW5kIHVwZGF0ZSBpdCB3aGVuIGRvbmUuCgkoc2NoZWR1bGVfcmVnaW9uKTogU2xpZ2h0bHkgcmVhcnJhbmdlZCwgc29tZSBjb2RlIG1vdmVkIGhlcmUgZnJvbQoJc2NoZWR1bGVfYmxvY2suICBDYWxsIG5vX3JlYWxfaW5zbnNfcCB0byBhdm9pZCBkb2luZyB3b3JrIGZvciBhCglibG9jayB0aGF0IGNvbnNpc3RzIG9ubHkgb2Ygbm90ZXMgYW5kIGxhYmVscy4KCShzY2hlZHVsZV9pbnNucyk6IEluaXRpYWxpemUgY3VycmVudF9zY2hlZF9pbmZvLgoKMjAwMC0xMi0wMyAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBtYWNyby5jIChmdW5saWtlX2ludm9jYXRpb25fcCk6IFJlLWRpc2FibGUgbWFjcm9zIGVuYWJsZWQKCWJ5IGNvbnRleHRzIGRyb3BzIEFGVEVSIGFyZ3VtZW50IHByZS1leHBhbnNpb24sIHNvIHRoYXQgdGhleQoJcmVtYWluIGVuYWJsZWQgZHVyaW5nIGFyZ3VtZW50IHByZS1leHBhbnNpb24uCgkoX2NwcF9wb3BfY29udGV4dCk6IFVuY29uZGl0aW9uYWxseSByZS1lbmFibGUgYSBtYWNybyB3aGVuCglkcm9wcGluZyBhIGNvbnRleHQgbGV2ZWwuCgoyMDAwLTEyLTAzICBNYW5mcmVkIEhvbGxzdGVpbiAgPG1hbmZyZWRoQHJlZGhhdC5jb20+CgoJKiBhcm0vdC1saW51eCAoTVVMVElMSUJfT1BUSU9OUyk6IENvbW1lbnQuCgkoTVVMVElMSUJfRElSTkFNRVMpOiBMaWtld2lzZS4KCShFWFRSQV9NVUxUSUxJQl9QQVJUUyk6IExpa2V3aXNlLgoJKExJQkdDQyk6IExpa2V3aXNlLgoJKElOU1RBTExfTElCR0NDKTogTGlrZXdpc2UuCgoyMDAwLTEyLTAyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHJjYXQsIGV4cGFuZF9idWlsdGluX3N0cm5jYXQsCglleHBhbmRfYnVpbHRpbl9zdHJzcG4sIGV4cGFuZF9idWlsdGluX3N0cmNzcG4pOiBOZXcgZnVuY3Rpb25zLgoJKGV4cGFuZF9idWlsdGluKTogSGFuZGxlIEJVSUxUX0lOX1NUUkNBVCwgQlVJTFRfSU5fU1RSTkNBVCwKCUJVSUxUX0lOX1NUUlNQTiBhbmQgQlVJTFRfSU5fU1RSQ1NQTi4KCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fU1RSQ0FULCBCVUlMVF9JTl9TVFJOQ0FULAoJQlVJTFRfSU5fU1RSU1BOLCBCVUlMVF9JTl9TVFJDU1BOKTogTmV3IGVudHJpZXMuCgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBEZWNsYXJlIGJ1aWx0aW4KCXN0cmNhdCwgc3RybmNhdCwgc3Ryc3BuIGFuZCBzdHJjc3BuLgoJKHN0cmluZ19mdHlwZV9zdHJpbmdfY3N0cmluZyk6IFJlbmFtZWQgZnJvbSBgc3RyaW5nX2Z0eXBlX3B0cl9wdHInLgoKCSogZXh0ZW5kLnRleGkgKHN0cmNhdCwgc3RyY3Nwbiwgc3RybmNhdCwgc3Ryc3BuKTogRG9jdW1lbnQgbmV3CglidWlsdGlucy4KCjIwMDAtMTItMDIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3N0cmNtcCk6IFVzZSBjb25zdCpfcnR4IHdoZW4KCWV4cGFuZGluZyBzdHJjbXAgYXQgY29tcGlsZS10aW1lLiAgQWRkIGFub3RoZXIgdHJhbnNmb3JtYXRpb24uCgkoZXhwYW5kX2J1aWx0aW5fc3RybmNtcCk6IEFkZCBtb3JlIHRyYW5zZm9ybWF0aW9ucy4gIENhbGwKCWV4cGFuZF9idWlsdGluX21lbWNtcCwgbm90IGV4cGFuZF9idWlsdGluX3N0cmNtcCwgdW5kZXIKCWFwcHJvcHJpYXRlIGNvbmRpdGlvbnMgaWYgSEFWRV9jbXBzdHJzaS4KCjIwMDAtMTItMDIgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIHJzNjAwMC5tZCAoYW5kZGkzX2ludGVybmFsWzIzXSk6IFByZWZlciBybGRpYz8gb3ZlciBhbmRpcwoJaW5zdHJ1Y3Rpb24uCgkoY3IgbG9naWMpOiBSZWFsbHkgbWFrZSBvcGVyYW5kcyBzZXF1ZW50aWFsLgoKMjAwMC0xMi0wMiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogYy1jb21tb24uYyAoY29tYmluZV9zdHJpbmdzKTogV2hlbiB0aGUgSVNPIEMgc3RhbmRhcmQgc3BlY2lmaWVzCgl0aGUgbWF4aW11bSBsZW5ndGggb2YgYSBzdHJpbmcsIGl0IGRvZXNuJ3QgaW5jbHVkZSB0aGUgdHJhaWxpbmcKCXplcm8gYnl0ZS4KCgkqIGNwcGxpYi5jIChkb19pZmRlZik6IEFkZCBjaGVja19lb2woKSBjYWxsLgoJKGRvX2lmbmRlZik6IExpa2V3aXNlLgoKMjAwMC0xMi0wMiAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AcmVkaGF0LmNvbT4KCSAgICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy8qOiBnbG9iYWwgc3Vic3RpdHV0ZSAvX19NU0RPU19fL1NFUEFSQVRFX0ZJWF9QUk9DLwoJKiBmaXhpbmMvbWtmaXhpbmMuc2g6IHByZXBhcmUgdG8gdXNlIE1ha2VmaWxlLkJFT1MgZm9yICotKi1iZW9zKgoJKiBmaXhpbmMvTWFrZWZpbGUuRE9TOiBkZWZpbmUgU0VQQVJBVEVfRklYX1BST0MgZm9yIGJ1aWxkCgkqIGZpeGluYy9maXhmaXguYyh3cmFwX2ZpeCk6IGF2b2lkIHdyYXBwaW5nIGZpbGVzIHRoYXQKCXVzZSB0aGUgIl9fbmVlZF8iIGhhY2tlcnkuICBJdCBicmVha3MgdGhlbS4KCSogZml4aW5jL2ZpeGluY2wuYyhwcm9jZXNzIC0gU0VQQVJBVEVfRklYX1BST0MpOgoJU29tZXRpbWVzIG9uIERPUyBhbmQgQmVPUyB0aGUgdGVtcCBvdXRwdXQgZmlsZSBjYW5ub3QgYmUgb3BlbmVkLgoJU2tpcCB0aGUgZmlsZSBub2lzaWx5LiAgT3VnaHQgdG8gYmUgZml4ZWQgaW5zdGVhZC4KCjIwMDAtMTItMDIgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCUZyb206IDIwMDAtMTEtMTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZpeGZpeGVzLmMgKGVtaXRfZ251X3R5cGUsIGZvcm1hdF93cml0ZSk6IFByb3RvdHlwZS4KCShmb3JtYXRfd3JpdGUsIGNoYXJfbWFjcm9fdXNlX2ZpeCwgY2hhcl9tYWNyb19kZWZfZml4KTogVXNlIGdjYydzCgljdXN0b20gdXBwZXJjYXNlIGN0eXBlIG1hY3Jvcy4KCSogZml4aW5jbC5jIChkb192ZXJzaW9uKTogTWFrZSBzdGF0aWMgYW5kIGFkZCBBVFRSSUJVVEVfTk9SRVRVUk4uCglVc2UgZ2NjJ3MgY3VzdG9tIHVwcGVyY2FzZSBjdHlwZSBtYWNyb3MuCgkobWFpbik6IFByb3RvdHlwZS4KCShtYWNoaW5lX21hdGNoZXMpOiBBZGQgc3RhdGljIHByb3RvdHlwZSBhbmQgY29uc3RpZnkgdmFyaWFibGUuCgkoY3JlYXRlX2ZpbGUsIHRlc3RfdGVzdCwgZWdyZXBfdGVzdCk6IEFkZCBzdGF0aWMgcHJvdG90eXBlLgoJKHF1b3RlZF9maWxlX2V4aXN0cyk6IExpa2V3aXNlLCBhbmQgY29uc3RpZnkgcGFyYW1ldGVycy4KCShleHRyYWN0X3F1b3RlZF9maWxlcywgaW50ZXJuYWxfZml4LCBzdGFydF9maXhlciwgZml4X2FwcGxpZXMsCgl3cml0ZV9yZXBsYWNlbWVudCwgdGVzdF9mb3JfY2hhbmdlcyk6IEFkZCBzdGF0aWMgcHJvdG90eXBlLgoJKHdyaXRlX3JlcGxhY2VtZW50LCB0ZXN0X2Zvcl9jaGFuZ2VzKTogRGVsZXRlIGV4Y2VzcyBhcmd1bWVudCB0bwoJYGNyZWF0ZV9maWxlJy4KCSogZml4dGVzdHMuYyAodGVzdCk6IE1ha2Ugc3RhdGljLgoJKiBzZXJ2ZXIuYyAobG9hZF9kYXRhLCBzaWdfaGFuZGxlciwgc2VydmVyX3NldHVwLCBmaW5kX3NoZWxsKTogQWRkCglzdGF0aWMgcHJvdG90eXBlLgoJKHNpZ19oYW5kbGVyKTogTWFyayBwYXJhbWV0ZXIgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoKMjAwMC0xMi0wMiAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhuYy9ta2ZpeGluYy5zaChtc2Rvc2RqZ3BwKTogcmVtb3ZlIGZyb20gZml4aW5jbHVkZXMgZXhjZXB0aW9uIGxpc3QKCShwZXIgTGF1cnluYXMgQml2ZWluaXMgIDxsYXVyYXNAc29mdGhvbWUubmV0PikKCjIwMDAtMTItMDIgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmggKEFSTV9SRUdOT19PS19GT1JfQkFTRV9QLCBUSFVNQl9SRUdOT19NT0RFX09LX0ZPUl9CQVNFX1ApOiBOZXcKCW1hY3Jvcy4KCShSRUdOT19NT0RFX09LX0ZPUl9CQVNFX1ApOiBEZWZpbmUgaW4gdGVybXMgb2YgYWJvdmUuCgkoUkVHTk9fT0tfRk9SX0ZPUl9CQVNFX1ApOiBEZWxldGUuCgkoQVJNX1JFR19PS19GT1JfQkFTRV9QLCBUSFVNQl9SRUdfTU9ERV9PS19GT1JfQkFTRV9QKTogTmV3IG1hY3JvcyBmb3IKCWJvdGggc3RyaWN0IGFuZCBub24tc3RyaWN0IHVzZXMuCgkoUkVHX01PREVfT0tfRk9SX0JBU0VfUCk6IERlZmluZSBpbiB0ZXJtcyBvZiBhYm92ZS4KCShBUk1fUkVHX09LX0ZPUl9JTkRFWF9QLCBUSFVNQl9SRUdfT0tfRk9SX0lOREVYX1ApOiBOZXcgbWFjcm9zLgoJKFJFR19PS19GT1JfSU5ERVhfUCk6IERlZmluZSBpbiB0ZXJtcyBvZiBhYm92ZS4KCShSRUdfT0tfRk9SX0JBU0VfUCk6IERlbGV0ZS4KCShSRUdfT0tfRk9SX1BSRV9QT1NUX1ApOiBEZWxldGUuCgkoQVJNX0JBU0VfUkVHSVNURVJfUlRYX1ApOiBSZW5hbWVkIGZyb20gQkFTRV9SRUdJU1RFUl9SVFhfUC4KCShBUk1fSU5ERVhfUkVHSVNURVJfUlRYX1ApOiBSZW5hbWVkIGZyb20gSU5ERVhfUkVHSVNURVJfUlRYX1AuCgkoQVJNX0dPX0lGX0xFR0lUSU1BVEVfSU5ERVgpOiBSZW5hbWVkIGZyb20gR09fSUZfTEVHSVRJTUFURV9JTkRFWC4KCShUSFVNQl9MRUdJVElNQVRFX09GRlNFVCk6IFJlbmFtZWQgZnJvbSBMRUdJVElNQVRFX09GRlNFVC4KCShBUk1fR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogQWRqdXN0IGZvciBuYW1lIGNoYW5nZXMuICBVc2UgQVJNCglzcGVjaWZpYyB2YXJpYW50cyByYXRoZXIgdGhhbiBnZW5lcmFsIG9uZXMuICBVc2UgQVJNX1JFR19PS19GT1JfQkFTRV9QCglpbiBwcmUvcG9zdCBpbmNyZW1lbnQgY2FzZXMuCgkoVEhVTUJfR09fSUZfTEVHSVRJTUFURV9BRERSRVNTKTogU2ltaWxhcmx5IGZvciBUaHVtYi4KCShBUk1fTEVHSVRJTUlaRV9BRERSRVNTKTogU2ltaWxhcmx5LgoJKFRIVU1CX0xFR0lUSU1JWkVfUkVMT0FEX0FERFJFU1MpOiBTaW1pbGFybHkuCgkqIGFybS5jIChsZWdpdGltYXRlX3BpY19hZGRyZXNzKTogU2ltaWxhcmx5LgoKMjAwMC0xMi0wMiAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiB0cmFkY3BwLmMgKHN0cnVjdCBhbnN3ZXIsIHBhcnNlX2Fzc2VydGlvbiwgcGFyc2VfYW5zd2VyLAoJY2Fub25pY2FsaXplX3RleHQsIGZpbmRfYW5zd2VyKTogTmV3LgoJKGRvX2Fzc2VydCwgZG9fdW5hc3NlcnQpOiBQcm92aWRlIGFwcHJvcHJpYXRlIGZ1bmN0aW9uIGJvZGllcy4KCSh1bmlvbiBoYXNodmFsKTogTmV3IG1lbWJlciBhbnN3ZXJzLgoKMjAwMC0xMS0yMyAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBjb25maWcvYXZyL2F2ci5tZDogRG9jdW1lbnQgVU5TUEVDIHVzYWdlLgoJKCp0YWJsZWp1bXBfcmptcCwgKnRhYmxlanVtcF9saWIsICp0YWJsZWp1bXBfZW5oLCAqdGFibGVqdW1wKToKCU1ha2Ugb3BlcmFuZCAwIGlucHV0IG9ubHksIGNsb2JiZXIgaXQuICBVc2UgVU5TUEVDLCBub3QgYSBib2d1cwoJTUVNIGZvciBwcm9ncmFtIG1lbW9yeSB3b3JkIHJlZmVyZW5jZS4gIERvIG5vdCBhZGQgdGhlIGxhYmVsIHRvCgl0aGUgdGFibGUgaW5kZXggaW4gZWFjaCBvZiB0aGUgYXNtIG91dHB1dCB0ZW1wbGF0ZXMsIGluc3RlYWQgLi4uCgkoY2FzZXNpKTogLi4uIGRvIGl0IGluIFJUTC4gIEFkanVzdCB0byBtYXRjaCB0aGUgYWJvdmUgY2hhbmdlLgoKMjAwMC0xMi0wMiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBjLWNvbW1vbi5jIChQVFJESUZGX1RZUEUpOiBQcm92aWRlIGRlZmF1bHQgaGVyZSwgLi4uCgkqIGMtZGVjbC5jOiAuLi4gbm90IGhlcmUuCgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZF9kdW1wKTogUmVuYW1lZCBmcm9tIGR1bXAuICBBbGwgdXNlcnMgY2hhbmdlZC4KCShvbGRfbWF4X3VpZCk6IE5ldyB2YXJpYWJsZS4KCShjb21wdXRlX2ZvcndhcmRfZGVwZW5kZW5jZXMpOiBSZW5hbWVkIGZyb20KCWNvbXB1dGVfYmxvY2tfZm9yd2FyZF9kZXBlbmRlbmNlczsgY2hhbmdlZCB0byBhY2NlcHQgYmxvY2sgaGVhZCBhbmQKCXRhaWwgaW5zdGVhZCBvZiBibG9jayBudW1iZXIuICBDYWxsZXIgY2hhbmdlZC4KCShmcmVlX2RlcHMsIGluaXRfZGVwZW5kZW5jeV9jYWNoZXMsIGZyZWVfZGVwZW5kZW5jeV9jYWNoZXMsCglpbml0X3JlZ2lvbnMsIHNjaGVkX2luaXQpOiBOZXcgZnVuY3Rpb25zLCBzcGxpdCBvdXQgZnJvbQoJc2NoZWR1bGVfaW5zbnMgYW5kIGNvbXB1dGVfYmxvY2tfYmFja3dhcmRfZGVwZW5kZW5jZXMuCgoyMDAwLTEyLTAyICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGV4cC5jIChwYXJzZV9udW1iZXIpOiBVcGRhdGUgZGlhZ25vc3RpYyB0ZXN0LgoKMjAwMC0xMi0wMiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiByZWxvYWQxLmMgKGZyZWVfZm9yX3ZhbHVlX3ApOiBOZXcgZnVuY3Rpb24sIGZyb250ZW5kIHRvCglyZWxvYWRfcmVnX2ZyZWVfZm9yX3ZhbHVlX3AuICBBbGwgY2FsbGVycyBvZiB0aGUgbGF0dGVyIG5vdyBjYWxsCgl0aGlzIGZ1bmN0aW9uIHdpdGggYW4gYWRkaXRpb25hbCBtb2RlIGFyZ3VtZW50LgoKMjAwMC0xMi0wMiAgR2VyYWxkIFBmZWlmZXIgIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoKCSogaW5zdGFsbC50ZXhpIChDb25maWd1cmF0aW9ucyk6IFJlbW92ZSBvYnNvbGV0ZSBkb2N1bWVudGF0aW9uIGZvcgoJaHBwYSotKi0qLgoKMjAwMC0xMi0wMiAgR2VyYWxkIFBmZWlmZXIgIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoKCSogaW5zdGFsbC50ZXhpIChJbnN0YWxsYXRpb24pOiBSZW1vdmUgb2Jzb2xldGUgZGVzY3JpcHRpb24gZm9yCglsaWJzdGRjKysgd2hpY2ggaXMgbm93IGFuIGludGVncmFsIHBhcnQgb2YgR0NDLgoKMjAwMC0xMi0wMSAgSmltIEJsYW5keSAgPGppbWJAcmVkaGF0LmNvbT4KCgkqIGRieG91dC5jIChkYnhvdXRfcGFybXMpOiBDb3JyZWN0bHkgZGVzY3JpYmUgcGFyYW1ldGVycyBwYXNzZWQgYnkKCWludmlzaWJsZSByZWZlcmVuY2UgaW4gcmVnaXN0ZXJzLCBidXQgdGhlbiBzcGlsbGVkIHRvIHRoZSBzdGFjay4KCVJlbW92ZSBjb2RlIHRvIGVtaXQgYSBzZWNvbmQgc3RhYiBmb3Igc3VjaCBwYXJhbWV0ZXJzOyBpdCBhdHRlbXB0cwoJdG8gZGVzY3JpYmUgdGhlIHZhbHVlJ3MgbG9jYXRpb24gYnkgaW50cm9kdWNpbmcgYSBzeW50aGV0aWMgQysrCglgcmVmZXJlbmNlJyB0eXBlLCBhbmQgdGhlbiBzYXlpbmcgdGhlIHN0YWNrIHNsb3QgaGFzIHRoYXQKCXJlZmVyZW5jZSB0eXBlLiAgVGhpcyBsb3NlcyB0eXBlIGluZm9ybWF0aW9uIChicmVha2luZyBHREIncwoJYHB0eXBlJyBjb21tYW5kLCBhbW9uZyBvdGhlciB0aGluZ3MpIGp1c3QgdG8gZGVzY3JpYmUgYSBsb2NhdGlvbgoJd2hpY2ggc3RhYnMgY2FuIHJlcHJlc2VudCBjb3JyZWN0bHkgaW4gb3RoZXIgd2F5cy4KCjIwMDAtMTItMDEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZmluYWwuYyAob3V0cHV0X2FkZHJfY29uc3QpIDxQTFVTPjogRG9uJ3QgYXNzdW1lIGF0IGxlYXN0IG9uZQoJb3BlcmFuZCBpcyBhIENPTlNUX0lOVC4KCgkqIGNvbmZpZy9zaC9zaC5jIChyZWdfY2xhc3NfZnJvbV9sZXR0ZXIpOiBBc3NpZ24gYGsnIHRvIFNJQkNBTExfUkVHUy4KCShtYWNoaW5lX2RlcGVuZGVudF9yZW9yZyk6IFNwbGl0IGFsbCBpbnNucy4KCSogY29uZmlnL3NoL3NoLmggKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFKTogQ29tcHV0ZQoJcmVnX2NsYXNzX2NvbnRlbnRzW1NJQkNBTExfUkVHU10uCgkocmVnX2NsYXNzLCBSRUdfQ0xBU1NfTkFNRVMsIFJFR19DTEFTU19DT05URU5UUyk6IEFkZCBTSUJDQUxMX1JFR1MuCgkqIGNvbmZpZy9zaC9zaC5tZCAoY2FsbGlfcGNyZWwsIGNhbGxfcGNyZWwsIGNhbGxfdmFsdWVpX3BjcmVsLAoJY2FsbF92YWx1ZV9wY3JlbCwgY2FsbCwgY2FsbF92YWx1ZSwgc2liY2FsbCk6IE1hdGNoIGV2ZW4gd2hlbgoJbm90IG9wdGltaXppbmcuCgkoc2liY2FsbGlfcGNyZWwsIHNpYmNhbGxfcGNyZWwpOiBMaWtld2lzZS4gIFVzZSBjb25zdHJhaW50IGBrJwoJZm9yIGNhbGwgYWRkcmVzcy4KCShzaWJjYWxsaSk6IExpa2V3aXNlLgoKMjAwMC0xMi0wMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAod2Fybl9mb3JtYXQsIHdhcm5fZm9ybWF0X3kyaywKCXdhcm5fZm9ybWF0X2V4dHJhX2FyZ3MsIHdhcm5fZm9ybWF0X25vbmxpdGVyYWwpOiBEZWZpbmUuCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBDaGVjayB3YXJuX2Zvcm1hdF9ub25saXRlcmFsIGFuZAoJd2Fybl9mb3JtYXRfZXh0cmFfYXJncy4KCShjaGVja19mb3JtYXRfaW5mb19tYWluKTogQ2hlY2sgd2Fybl9mb3JtYXRfeTJrLgoJKHNldF9XZm9ybWF0KTogTmV3IGZ1bmN0aW9uLgoJKiBjLWNvbW1vbi5oICh3YXJuX2Zvcm1hdF95MmssIHdhcm5fZm9ybWF0X2V4dHJhX2FyZ3MsCgl3YXJuX2Zvcm1hdF9ub25saXRlcmFsLCBzZXRfV2Zvcm1hdCk6IERlY2xhcmUuCgkqIGMtZGVjbC5jICh3YXJuX2Zvcm1hdCk6IFJlbW92ZSBkZWZpbml0aW9uLgoJKGNfZGVjb2RlX29wdGlvbik6IEhhbmRsZSAtV2Zvcm1hdC1ub25saXRlcmFsLAoJLVduby1mb3JtYXQtZXh0cmEtYXJncyBhbmQgLVduby1mb3JtYXQteTJrLCBhbmQgbmVnYXRlZCB2ZXJzaW9ucy4KCVVzZSBzZXRfV2Zvcm1hdC4KCSogaW52b2tlLnRleGk6IERvY3VtZW50IHRoZXNlIG5ldyBvcHRpb25zIGFuZCAtV2Zvcm1hdD0yLgoJKiB0b3BsZXYuYyAoZG9jdW1lbnRlZF9sYW5nX29wdGlvbnMpOiBBZGQgdGhlc2UgbmV3IG9wdGlvbnMuCgoyMDAwLTEyLTAxICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0lNQVhBQlMpOiBBZGQuCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluKTogQWxzbyBhYm9ydCBvbiBCVUlMVF9JTl9JTUFYQUJTLgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBDcmVhdGUgYnVpbHRpbgoJZnVuY3Rpb25zIF9fYnVpbHRpbl9pbWF4YWJzLCBhbmQgcGxhaW4gaW1heGFicyB1bmxlc3MKCWZsYWdfbm9fbm9uYW5zaV9idWlsdGluIG91dHNpZGUgQzk5IG1vZGUuCgkoZXhwYW5kX3RyZWVfYnVpbHRpbik6IEhhbmRsZSBCVUlMVF9JTl9JTUFYQUJTLgoJKiBleHRlbmQudGV4aTogRG9jdW1lbnQgYnVpbHRpbiBpbWF4YWJzLgoKMjAwMC0xMi0wMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYzogSW5jbHVkZSAiZGVmYXVsdHMuaCIuCgkoV0lOVF9UWVBFLCBJTlRNQVhfVFlQRSwgVUlOVE1BWF9UWVBFKTogRGVmaW5lLgoJKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IENyZWF0ZSBzdHJpbmdfdHlwZV9ub2RlLAoJY29uc3Rfc3RyaW5nX3R5cGVfbm9kZSwgd2ludF90eXBlX25vZGUsIGludG1heF90eXBlX25vZGUsCgl1aW50bWF4X3R5cGVfbm9kZSwgZGVmYXVsdF9mdW5jdGlvbl90eXBlLCBwdHJkaWZmX3R5cGVfbm9kZSBhbmQKCXVuc2lnbmVkX3B0cmRpZmZfdHlwZV9ub2RlLgoJKiBjLWNvbW1vbi5oIChpZGVudGlmaWVyX2dsb2JhbF92YWx1ZSk6IERlY2xhcmUuCgkqIGMtZGVjbC5jIChXSU5UX1RZUEUsIElOVE1BWF9UWVBFLCBVSU5UTUFYX1RZUEUpOiBEb24ndCBkZWZpbmUuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCBjcmVhdGUgc3RyaW5nX3R5cGVfbm9kZSwKCWNvbnN0X3N0cmluZ190eXBlX25vZGUsIHdpbnRfdHlwZV9ub2RlLCBpbnRtYXhfdHlwZV9ub2RlLAoJdWludG1heF90eXBlX25vZGUsIGRlZmF1bHRfZnVuY3Rpb25fdHlwZSwgcHRyZGlmZl90eXBlX25vZGUgYW5kCgl1bnNpZ25lZF9wdHJkaWZmX3R5cGVfbm9kZS4KCShpZGVudGlmaWVyX2dsb2JhbF92YWx1ZSk6IE5ldyBmdW5jdGlvbi4KCjIwMDAtMTItMDEgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaW5pdC5jIChpbml0aWFsaXplKTogRm9yZ290dGVuIHByb3RvdHlwZS4KCSogY3BwbGV4LmMgKF9jcHBfbGV4X3Rva2VuKTogTG9vcCB1bnRpbCBub3Qgc2tpcHBpbmcuCglBbHdheXMgY2xlYXIgUFJFVl9XSElURSB1cG9uIG1lZXRpbmcgYSBuZXcgbGluZS4KCSogY3BwbGliLmMgKGVuZF9kaXJlY3RpdmUpOiBTZXQgcGZpbGUtPnNraXBwaW5nIGFmdGVyCglza2lwX3Jlc3Rfb2ZfbGluZS4KCSogY3BwbGliLmggKGNwcF9yZWFkZXIpOiBSZW1vdmUgbWFjcm9fcG9zLgoJKiBjcHBtYWNyby5jIChjcHBfZ2V0X2xpbmUpOiBEb24ndCBkbyBhbnl0aGluZyBzcGVjaWFsIGluc2lkZQoJbWFjcm9zLgoJKHBhcnNlX2FyZyk6IEFkZCBQUkVWX1dISVRFIGlmIGEgdG9rZW4gYXBwZWFycyBhZnRlciBuZXcgbGluZXMuCgkoZnVubGlrZV9pbnZvY2F0aW9uX3ApOiBTYXZlIGFuZCByZXN0b3JlIHRoZSBvdXRwdXQgcG9zaXRpb24KCW92ZXIgYSBzdWNjZXNzZnVsIGNoZWNrIGZvciBhICcoJy4KCShlbnRlcl9tYWNyb19jb250ZXh0KTogRGVsZXRlIHVzZXMgb2YgbWFjcm9fcG9zLgoJKGNwcF9nZXRfdG9rZW4pOiBEb24ndCB1c2UgcGZpbGUtPnNraXBwaW5nLgoKMjAwMC0xMi0wMSAgUGhpbCBFZHdhcmRzICA8cG1lQHNvdXJjZXMucmVkaGF0LmNvbT4KCgkqIGRpYWdub3N0aWMuYzogIEZpeCB0eXBvcyBpbiBjb21tZW50cy4KCSogZGlhZ25vc3RpYy5oOiAgTGlrZXdpc2UuCgoyMDAwLTExLTMwICBQaGlsIEVkd2FyZHMgIDxwbWVAc291cmNlcy5yZWRoYXQuY29tPgoKCSogcnRsLnRleGkgKE1hY2hpbmUgTW9kZXMpOiAgRG9jdW1lbnQgQkltb2RlIGFuZCBPSW1vZGUuCgoyMDAwLTEyLTAxICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnY2MuYyAoZGVmYXVsdF9jb21waWxlcnMpOiBBZGQgc3VmZml4ZXMgLm1pLCAuY3AsIC5paSwgLkZPUiBhbmQKCS5GUFAuCgoyMDAwLTEyLTAxICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBJZiBwZWRhbnRpYywgd2FybiBhYm91dCBhcnJheXMgd2l0aAoJaW5jb21wbGV0ZSBlbGVtZW50IHR5cGUuCgkoZ3Jva3Bhcm1zKTogQmVmb3JlIGNoZWNraW5nIGZvciBpbmNvbXBsZXRlIHBhcmFtZXRlciB0eXBlLCBjaGVjawoJdGhlIHR5cGUgaXNuJ3QgZXJyb3JfbWFya19ub2RlLgoKMjAwMC0xMi0wMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jICh0YXJnZXRfY2hhcl9jYXN0KTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9idWlsdGluX3N0cmNocik6IFVzZSBpdC4KCShleHBhbmRfYnVpbHRpbl9zdHJyY2hyKTogVXNlIGl0LgoJKGJ1aWx0aW5fbWVtc2V0X3JlYWRfc3RyKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9idWlsdGluX21lbXNldCk6IFVzZSB0YXJnZXRfY2hhcl9jYXN0LgoJVHJ5IHRvIG9wdGltaXplIG1lbXNldCB3aXRoIHNlY29uZCBhcmd1bWVudCBub24temVybyB1c2luZwoJc3RvcmVfYnlfcGllY2VzLgoKMjAwMC0xMS0zMCAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBpbnN0YWxsLnRleGkgKGF2cik6IFJlcGxhY2UgaW5jb21wbGV0ZSBsaXN0IG9mIHN1cHBvcnRlZCBNQ1UKCXR5cGVzIHdpdGggYSBsaW5rIHRvIHRoZSBjdXJyZW50IG9uZSAuLi4KCSogaW52b2tlLnRleGkgKEFWUiBPcHRpb25zKTogLi4uIGhlcmUuICBVcGRhdGUgLW1tY3U9IHRvIGxpc3QKCWFsbCBzdXBwb3J0ZWQgTUNVIHR5cGVzLiAgRG9jdW1lbnQgLW1pbml0LXN0YWNrPSBkZWZhdWx0LgoJRG9jdW1lbnQgbmV3IG9wdGlvbnMgLW1uby10YWJsZWp1bXAsIC1tdGlueS1zdGFjay4KCSogbWQudGV4aSAoQVZSIGZhbWlseSk6ICBGaXggdHlwbyBpbiAndycgY29uc3RyYWludCBsZXR0ZXIKCWRlc2NyaXB0aW9uLiAgRG9jdW1lbnQgJ3EnLiAgVXBkYXRlICdPJy4KCjIwMDAtMTItMDEgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogY29tYmluZS5jIChjYW50X2NvbWJpbmVfaW5zbl9wKTogT25seSBkaXNhbGxvdyBpbnNucyBpbnZvbHZpbmcKCWhhcmQgcmVncyBpZiB0aGV5IGFyZSByZWctcmVnIG1vdmVzLgoJKHRyeV9jb21iaW5lLCBjYW5fY29tYmluZV9wLCBjb21iaW5hYmxlX2kzcGF0KTogRGVsZXRlIG9sZAoJU01BTExfUkVHSVNURVJfQ0xBU1NFUyB0ZXN0cy4KCjIwMDAtMTItMDEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLmMgKHNoaWZ0Y29zdHMpOiBEb24ndCBnZXQgSU5UVkFMIGJlZm9yZSB0ZXN0aW5nCgl3aGV0aGVyIFggaXMgYSBDT05TVF9JTlQuCgkoYWRkc3ViY29zdHMpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9zaC9zaC5oIChPVVRQVVRfQUREUl9DT05TVF9FWFRSQSk6IFVzZSBJTlRWQUwgaW5zdGVhZCBvZgoJbWlzLXVzZWQgWElOVC4KCShBUkdfUE9JTlRFUl9SRUdOVU0pOiBTZXQgdG8gQVBfUkVHLgoKMjAwMC0xMS0zMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2gubWQgKGZwdV9zd2l0Y2gwLCBmcHVfc3dpdGNoMSwgbW92cHNpLCBmcHVfc3dpdGNoLAoJc3BsaXRzKTogT25seSBtYXRjaCBvbiBUQVJHRVRfU0g0LgoKCSogY29tYmluZS5jICh0cnlfY29tYmluZSk6IERpc3JlZ2FyZCBVU0VzIHdoZW4gdXBkYXRpbmcgTE9HX0xJTktTCglvZiBzdWJzZXF1ZW50IGluc25zLgoKMjAwMC0xMS0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChBU01fT1VUUFVUX01JX1RIVU5LKTogRGlzYWJsZS4KCSogY29uZmlnL2FscGhhL2FscGhhMzIuaCAoQVNNX09VVFBVVF9NSV9USFVOSyk6IExpa2V3aXNlLgoKMjAwMC0xMS0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9lbGYuaCAoQVNNX09VVFBVVF9TRUNUSU9OX05BTUUpOiBDb3B5IGVsZm9zLmggZGVmbi4KCShET19TRUxFQ1RfU0VDVElPTik6IE5ldy4KCShTRUxFQ1RfU0VDVElPTik6IFVzZSBpdC4KCShVTklRVUVfU0VDVElPTl9QKTogTmV3LgoJKFVOSVFVRV9TRUNUSU9OKTogTmV3LgoKMjAwMC0xMS0zMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjLWNvbW1vbi5jIChzdGF0dXNfd2FybmluZykgWyEgQU5TSV9QUk9UT1RZUEVTXTogTG9hZCBzdGF0dXMKCWZyb20gdmFfbGlzdCBiZWZvcmUgdXNpbmcgaXQuCgoyMDAwLTExLTMwICBNaWNoYWVsIE1hdHogIDxtYXR6bWljaEBjcy50dS1iZXJsaW4uZGU+CgoJKiBmbG93LmMgKG1ha2VfZWRnZSk6IEVhcmx5IG91dCwgaWYgbm8gZmxhZ3MgdG8gc2V0LgoJKGNhbGN1bGF0ZV9nbG9iYWxfcmVnc19saXZlKTogQ2xlYXIgb3V0IGdhcmJhZ2Ugb25seSB3aGVuIG5lY2Vzc2FyeS4KCgkqIHNpbXBsaWZ5LXJ0eC5jICh2YXJyYXlfdHlwZSB1c2VkX3JlZ3MpOiBOZXcuCgkoY2xlYXJfdGFibGUpOiBVc2UgaXQgdG8gb25seSBjbGVhciBuZWNlc3NhcnkgaXRlbXMuCgkoY3NlbGliX2xvb2t1cCwgY3NlbGliX3JlY29yZF9zZXQpOiBSZW1lbWJlciBuZXdseSBzZXQgaXRlbXMuCgkoY3NlbGliX3VwZGF0ZV92YXJyYXlfc2l6ZXMsIGNzZWxpYl9pbml0KTogSW5pdGlhbGl6ZSBhbmQgZ3JvdwoJdXNlZF9yZWdzLgoKCSogbG9jYWwtYWxsb2MuYyAodXBkYXRlX2VxdWl2X3JlZ3MpOiBOZXcgbG9jYWwgYGNsZWFyZWRfcmVncycuCglNb3ZlIGNsZWFyaW5nIG9mIGRlYWQgcmVncyBvdXQgb2YgaW5zbi1sb29wLgoKMjAwMC0xMS0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogRW1pdCBxdWV1ZWQgaW5zbnMgYmVmb3JlIGNyZWF0aW5nCgl0aGUgdGFpbCByZWN1cnNpb24gc2VxdWVuY2UuCgoyMDAwLTExLTMwICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMuY2E+CgkgICAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmKCk6IHByZXZlbnQgZHVhbCBkb3VibGUgZGVmaW5pdGlvbiBwcm90ZWN0aW9uCgkqIGZpeGluYy9maXhpbmNsLng6IHJlZ2VuZXJhdGUKCjIwMDAtMTEtMjkgIExvcmVuIEouIFJpdHRsZSAgPGxqcml0dGxlQGFjbS5vcmc+CgoJKiBmaXhpbmMvTWFrZWZpbGUuaW4gKGZpeGluY2wueCk6IEV4cGxpY2l0bHkgc3RhdGUgdGhlCglsb2NhdGlvbiBvZiB0aGUgZ2VuZXJhdGVkIGZpbGUuCgoyMDAwLTExLTMwICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJKiBSRUFETUUuRlJFU0NPOiBSZW1vdmUgb2Jzb2xldGUgZmlsZS4KCjIwMDAtMTEtMzAgIE1hcmsgS2V0dGVuaXMgIDxrZXR0ZW5pc0BnbnUub3JnPgoKCSogY29uZmlnL3QtZ251IChMSUJHQ0MxLCBDUk9TU19MSUJHQ0MxLCBDUlRTVFVGRl9UX0NGTEFHUywKCVRBUkdFVF9MSUJHQ0MyX0NGTEFHUyk6IFJlbW92ZS4gIFdlIG5vdyB1c2UgdGhlIHNldHRpbmdzIGZyb20KCWNvbmZpZy90LWxpbnV4IGZvciB0aGUgSHVyZC4KCjIwMDAtMTEtMzAgIFN0ZXBoYW5lIENhcnJleiAgPFN0ZXBoYW5lLkNhcnJlekB3b3JsZG5ldC5mcj4KCgkqIGNvbmZpZy9tbjEwMjAwL3VkaXZtb2QuYywgY29uZmlnL21uMTAyMDAvZGl2bW9kLmMsCgljb25maWcvbW4xMDIwMC91ZGl2bW9kc2k0LmM6IE1vdmVkIGZyb20gaGVyZS4KCSogY29uZmlnL3VkaXZtb2QuYywgY29uZmlnL2Rpdm1vZC5jLCBjb25maWcvdWRpdm1vZHNpNC5jOiBUbyBoZXJlLgoJKiBjb25maWcvbW4xMDIwMC90LW1uMTAyMDAgKExJQjJGVU5DU19FWFRSQSk6IFVzZSB0aGUgZ2VuZXJpYwoJQyBkaXZpc2lvbiBmdW5jdGlvbnMuCgkqIGNvbmZpZy9tNjhoYzExL3QtbTY4aGMxMS1nYXMgKExJQjJGVU5DU19FWFRSQSk6IExpa2V3aXNlLgoKVGh1IE5vdiAzMCAwMToxMjo1MiAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBwYS5tZCAoY29uZGl0aW9uYWwgbW92ZXMpOiBBdm9pZCBob2xlcyBpbiBvcGVyYW5kIGxpc3QuCgkobW9kLCB1bW9kIHBhdHRlcm5zKTogU2ltaWxhcmx5LgoJKHZhcmlhYmxlIGV4dHJhY3Qvc2hpZnQgcGF0dGVybnMpOiBTaW1pbGFybHkuCgoyMDAwLTExLTMwICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIG9iamMvb2JqYy1hY3QuYyAobGFuZ19pbml0LCBmaW5pc2hfZmlsZSwgbWF5YmVfb2JqY19jb21wdHlwZXMsCgltYXliZV9vYmpjX2NoZWNrX2RlY2wsIGJ1aWxkX29iamNfc3RyaW5nX29iamVjdCwKCW9iamNfZGVjbGFyZV9hbGlhcywgb2JqY19kZWNsYXJlX2NsYXNzLCBidWlsZF9tZXNzYWdlX2V4cHIsCglidWlsZF9wcm90b2NvbF9leHByLCBidWlsZF9zZWxlY3Rvcl9leHByLCBidWlsZF9lbmNvZGVfZXhwciwKCWdldF9jbGFzc19pdmFycywgc3RhcnRfY2xhc3MsIHN0YXJ0X3Byb3RvY29sKTogUmVtb3ZlCglyZWR1bmRhbnQgY29kZSwgYXNzdW1pbmcgZG9pbmdfb2JqY190aGFuZyBpcyB0cnVlLgoKMjAwMC0xMS0yOSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIHBhLmMgKHJlc3RvcmVfdW5zY2FsZWRfaW5kZXhfaW5zbl9jb2Rlcyk6IERlbGV0ZSBwcm9jZWR1cmUuCgkocmVjb3JkX3Vuc2NhbGVkX2luZGV4X2luc25fY29kZXMpOiBMaWtld2lzZS4KCSh1bnNjYWxlZF9pbmRleF9pbnNuX2NvZGVzKTogRGVsZXRlLgoJKG1heF91bnNjYWxlZF9pbmRleF9pbnNuX2NvZGVzX3VpZCk6IERlbGV0ZS4KCShvdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUsIG91dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSwgcGFfcmVvcmcpOgoJRG9uJ3QgdXNlIHRoZSB1bnNjYWxlZCBpbmRleCBpbnNuIGhhY2suCgoJKiBwYS5tZDogUmVtb3ZlIGhhY2sgZnJvbSBhbGwgaW5kZXggaW5zbnMgdG8gcmV2ZXJzZSB0aGUgb3BlcmFuZAoJb3JkZXIgb2YgZnJhbWUgYW5kIHN0YWNrIHBvaW50ZXIgcmVmZXJlbmNlcyBpbmNvcnJlY3RseSBjcmVhdGVkCglpbiB0aGUgcmVsb2FkIHBhc3MuCgoJKiBmdW5jdGlvbi5oIChlbWl0X3N0YXR1cyk6IERlbGV0ZSBtZW1iZXIgcmVnbm9fcG9pbnRlcl9mbGFnIGFuZAoJcmVuYW1lIHJlZ25vX3BvaW50ZXJfZmxhZ19sZW5ndGggdG8gcmVnbm9fcG9pbnRlcl9hbGlnbl9sZW5ndGguCglEZWxldGUgZGVmaW5lIGZvciBSRUdOT19QT0lOVEVSX0ZMQUcuCgkqIGludGVncmF0ZS5oIChpbmxpbmVfcmVtYXApOiBEZWxldGUgbWVtYmVyIHJlZ25vX3BvaW50ZXJfZmxhZy4KCUFkZCBtZW1iZXIgeF9yZWdub19yZWdfcnR4LgoJKiBydGwuaCAocnR4X2RlZik6IFVzZSBmcmFtZV9yZWxhdGVkIGJpdCB0byBpbmRpY2F0ZSByZWdpc3RlciBpcwoJYSBwb2ludGVyIGluIFJFRyBleHByZXNzaW9ucy4gIERlZmluZSBSRUdfUE9JTlRFUiBtYWNyby4KCSogYWxpYXMuYyAoZmluZF9iYXNlX3ZhbHVlLCBmaW5kX2Jhc2VfdGVybSk6IFVzZSBSRUdfUE9JTlRFUgoJaW5zdGVhZCBvZiBSRUdOT19QT0lOVEVSX0ZMQUcuCgkqIGNvbWJpbmUuYyAobm9uemVyb19iaXRzLCBudW1fc2lnbl9iaXRfY29waWVzKTogTGlrZXdpc2UuCgkqIGVtaXQtcnRsLmMgKGdlbl9yZWdfcnR4KTogVXNlIHJlZ25vX3BvaW50ZXJfYWxpZ25fbGVuZ3RoIGluc3RlYWQKCW9mIHJlZ25vX3BvaW50ZXJfZmxhZ19sZW5ndGguICBSZW1vdmUgY29kZSB3aGljaCByZWZlcnMgdG8KCXJlZ25vX3BvaW50ZXJfZmxhZy4KCShtYXJrX3JlZ19wb2ludGVyKTogVXNlIFJFR19QT0lOVEVSLgoJKGZyZWVfZW1pdF9zdGF0dXMpOiBSZW1vdmUgY29kZSB3aGljaCByZWZlcnMgdG8gcmVnbm9fcG9pbnRlcl9mbGFnLgoJKGluaXRfZW1pdCwgbWFya19lbWl0X3N0YXR1cyk6IExpa2V3aXNlLgoJKiBmbG93LmMgKGR1bXBfZmxvd19pbmZvKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKHByZXNlcnZlX3RlbXBfc2xvdHMpOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmMgKGV4cGFuZF9pbmxpbmVfZnVuY3Rpb24sIGNvcHlfcnR4X2FuZF9zdWJzdGl0dXRlKToKCVVzZSB4X3JlZ25vX3JlZ19ydHggaW5zdGVhZCBvZiByZWdub19wb2ludGVyX2ZsYWcgZm9yIGZ1bmN0aW9uCglwb2ludGVyIGRldGVybWluYXRpb24gaW4gbWFwLgoJKiBsb29wLmMgKHN0cmVuZ3RoX3JlZHVjZSwgbWF5YmVfZWxpbWluYXRlX2Jpdl8xKTogVXNlIFJFR19QT0lOVEVSLgoJKiBwcmVkaWN0LmMgKGVzdGltYXRlX3Byb2JhYmlsaXR5KTogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmMgKHJlY29yZF9hZGRyZXNzX3JlZ3MsIHJlZ19zY2FuX21hcmtfcmVmcyk6IExpa2V3aXNlLgoJKiB1bnJvbGwuYyAodW5yb2xsX2xvb3ApOiBVc2UgeF9yZWdub19yZWdfcnR4IGluc3RlYWQgb2YKCXJlZ25vX3BvaW50ZXJfZmxhZyBmb3IgZnVuY3Rpb24gcG9pbnRlciBkZXRlcm1pbmF0aW9uIGluIG1hcC4KCSogY29udmV4LmggKFJUWF9DT1NUUyk6IERvbid0IHRlc3QgcmVnbm9fcG9pbnRlcl9mbGFnIGFuZCB1c2UKCVJFR19QT0lOVEVSLgoJKiBwYS5jIChocHBhX2xlZ2l0aW1pemVfYWRkcmVzcywgZW1pdF9tb3ZlX3NlcXVlbmNlLCBiYXNlcmVnX29wZXJhbmQpOgoJVXNlIFJFR19QT0lOVEVSLgoJKHJlc3RvcmVfdW5zY2FsZWRfaW5kZXhfaW5zbl9jb2Rlcyk6IFJldmlzZSBjb21tZW50LgoKCSogZXhwci5jIChkb19jb21wYXJlX2FuZF9qdW1wKTogQWRkIG1pc3NpbmcgVFlQRV9NT0RFIGluIHN0YXRlbWVudC4KCjIwMDAtMTEtMzAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGV4dGVuZC50ZXhpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbiBmb3IgYXR0cmlidXRlcy4KCjIwMDAtMTEtMjkgIERhdmlkIE8nQnJpZW4gIDxvYnJpZW5ARnJlZUJTRC5vcmc+CgoJKiBjb25maWcvYWxwaGEvZWxmLmggKElERU5UX0FTTV9PUCk6IFByb3RlY3QgdGhlICNkZWZpbmUuCgkoQVNNX0RFQ0xBUkVfT0JKRUNUX05BTUUpOiBTYW1lLgoJKEFTTV9GSUxFX0VORCk6IFNhbWUuCgkoQVNNX0ZJTklTSF9ERUNMQVJFX09CSkVDVCk6IFNhbWUuCgkoQVNNX0lERU5USUZZX0dDQyk6IFNhbWUuCgkoQVNNX0lERU5USUZZX0xBTkdVQUdFKTogU2FtZS4KCShBU01fT1VUUFVUX0NPTlNUUlVDVE9SKTogU2FtZS4KCShBU01fT1VUUFVUX0RFRik6IFNhbWUuCgkoQVNNX09VVFBVVF9ERVNUUlVDVE9SKTogU2FtZS4KCShBU01fT1VUUFVUX0VYVEVSTkFMX0xJQkNBTEwpOiBTYW1lLgoJKEFTTV9PVVRQVVRfU0VDVElPTl9OQU1FKTogU2FtZS4KCShBU01fV0VBS0VOX0xBQkVMKTogU2FtZS4KCShCU1NfU0VDVElPTl9BU01fT1ApOiBTYW1lLgoJKENPTU1PTl9BU01fT1ApOiBTYW1lLgoJKENPTlNUX1NFQ1RJT05fQVNNX09QKTogU2FtZS4KCShDT05TVF9TRUNUSU9OX0ZVTkNUSU9OKTogU2FtZS4KCShDVE9SU19TRUNUSU9OX0FTTV9PUCk6IFNhbWUuCgkoRFRPUlNfU0VDVElPTl9BU01fT1ApOiBTYW1lLgoJKEVTQ0FQRVMpOiBTYW1lLgoJKEZJTklfU0VDVElPTl9BU01fT1ApOiBTYW1lLgoJKElERU5UX0FTTV9PUCk6IFNhbWUuCgkoSURFTlRfQVNNX09QKTogU2FtZS4KCShJTklUX1NFQ1RJT05fQVNNX09QKTogU2FtZS4KCShJTlRfQVNNX09QKTogU2FtZS4KCShNQVhfT0ZJTEVfQUxJR05NRU5UKTogU2FtZS4KCShTQlNTX1NFQ1RJT05fQVNNX09QKTogU2FtZS4KCShTREFUQV9TRUNUSU9OX0FTTV9PUCk6IFNhbWUuCgkoU0VDVElPTl9GVU5DVElPTl9URU1QTEFURSk6IFNhbWUuCgkoU0VMRUNUX1NFQ1RJT04pOiBTYW1lLgoJKFNFX0NPTlNUX1NFQ1RJT04pOiBTYW1lLgoJKFNJWkVfQVNNX09QKTogU2FtZS4KCShTS0lQX0FTTV9PUCk6IFNhbWUuCgkoU1RSSU5HX0FTTV9PUCk6IFNhbWUuCgkoU1RSSU5HX0xJTUlUKTogU2FtZS4KCShUWVBFX0FTTV9PUCk6IFNhbWUuCgkoVFlQRV9PUEVSQU5EX0ZNVCk6IFNhbWUuCgoyMDAwLTExLTI5ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGMtZGVjbC5jIChjX2RlY29kZV9vcHRpb24pOiBEb24ndCBoYW5kbGUgLWxhbmctb2JqYy4KCSogb2JqYy9sYW5nLW9wdGlvbnMuaDogUmVtb3ZlIC1sYW5nLW9iamMuCgkqIG9iamMvbGFuZy1zcGVjcy5oOiBEb24ndCBwYXNzIC1sYW5nLW9iamMgdG8gY2Mxb2JqLgoJKiBvYmpjL29iamMtYWN0LmMgKGxhbmdfaW5pdF9vcHRpb25zKTogU2V0IGNfbGFuZ3VhZ2UuCgoyMDAwLTExLTI5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoY2FuX3N0b3JlX2J5X3BpZWNlcyk6IFJlaW5pdGlhbGl6ZSBtYXhfc2l6ZSBmb3IgcmV2ZXJzZQoJdGVzdHMuCgoyMDAwLTExLTI5ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGMtcHJhZ21hLmMgKGluaXRfcHJhZ21hKTogVXBkYXRlIGZvciBwYXJzZV9pbiB0eXBlIGNoYW5nZS4KCjIwMDAtMTEtMjkgIExhdXJ5bmFzIEJpdmVpbmlzICA8bGF1cmFzQHNvZnRob21lLm5ldD4KCgkqIGNvbmZpZ3VyZS5pbjogcmVjb2duaXplIERPUy1zdHlsZSBhYnNvbHV0ZSBwYXRocy4KCjIwMDAtMTEtMjkgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZXhwci5oIChzdG9yZV9ieV9waWVjZXMpOiBBZGQgcHJvdG90eXBlLgoJKGNhbl9zdG9yZV9ieV9waWVjZXMpOiBMaWtld2lzZS4KCSogZXhwci5jIChzdHJ1Y3Qgc3RvcmVfYnlfcGllY2VzKTogUmVuYW1lZCBmcm9tIGNsZWFyX2J5X3BpZWNlcy4KCShjYW5fc3RvcmVfYnlfcGllY2VzKTogTmV3LgoJKHN0b3JlX2J5X3BpZWNlcyk6IE5ldy4KCShjbGVhcl9ieV9waWVjZXMpOiBOZXcuCgkoY2xlYXJfYnlfcGllY2VzXzEpOiBOZXcuCgkoc3RvcmVfYnlfcGllY2VzXzEpOiBSZW5hbWVkIGZyb20gY2xlYXJfYnlfcGllY2VzLCBoYW5kbGUgc3RvcmluZwoJYXJiaXRyYXJ5IGNvbXBpbGVyIGdlbmVyYXRlZCBjb25zdGFudHMgaW50byBtZW1vcnkgYmxvY2suCgkoc3RvcmVfYnlfcGllY2VzXzIpOiBSZW5hbWVkIGZyb20gY2xlYXJfYnlfcGllY2VzXzEsIGxpa2V3aXNlLgoJKiBidWlsdGlucy5jIChjX3JlYWRzdHIpOiBOZXcuCgkoYnVpbHRpbl9tZW1jcHlfcmVhZF9zdHIpOiBOZXcuCgkoZXhwYW5kX2J1aWx0aW5fbWVtY3B5KTogSWYgc3JjIGlzIHN0cmluZyBjb25zdGFudCBhbmQKCWVtaXRfYmxvY2tfbW92ZSB3b3VsZCBtb3ZlIGl0IGJ5IHBpZWNlcywgY29tcHV0ZSBpbnRlZ2VyIGNvbnN0YW50cwoJZnJvbSB0aGUgc3RyaW5nIGFuZCBzdG9yZSBpdCBpbnRvIG1lbW9yeSBibG9jayBpbnN0ZWFkLgoJKGJ1aWx0aW5fc3RybmNweV9yZWFkX3N0cik6IE5ldy4KCShleHBhbmRfYnVpbHRpbl9zdHJuY3B5KTogSWYgTiBpcyBub3QgY29uc3RhbnQgemVybyBhbmQgY19zdHJsZW4gZG9lcwoJbm90IHJldHVybiBJTlRFR0VSX0NTVCwgZG9uJ3Qgb3B0aW1pemUuCglJZiBOIGlzIGxhcmdlciB0aGFuIHN0cmxlbihzcmMpICsgMSwgdHJ5IHRvIGNvcHkgdGhlIHN0cmluZwoJaW5jbHVkaW5nIHBhZGRpbmcgd2l0aCBzdG9yZV9ieV9waWVjZXMuCgkoZXhwYW5kX2J1aWx0aW5fc3RyY21wKTogSWYgYm90aCBhcmd1bWVudHMgaGF2ZSBzaWRlIGVmZmVjdHMsIGRvbid0CglvcHRpbWl6ZS4KCShleHBhbmRfYnVpbHRpbl9mcHV0cyk6IElmIFNUUiBoYXMgc2lkZSBlZmZlY3RzLCBkb24ndCBvcHRpbWl6ZS4KCjIwMDAtMTEtMjkgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLm1kIChzaWJjYWxsLCBzaWJjYWxsX3ZhbHVlLCBzaWJjYWxsX2luc24sIHNpYmNhbGxfdmFsdWVfaW5zbik6CglBZGQgdXNlIG9mIGxpbmsgcmVnaXN0ZXIuCgoyMDAwLTExLTI5ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBleHRlbmQudGV4aTogVXBkYXRlIGRvY3VtZW50YXRpb24gZm9yIGRlZmF1bHQgZm9ybWF0IGF0dHJpYnV0ZXMuCgpUdWUgTm92IDI4IDIxOjU2OjQ1IDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHBhL3BhLTY0LmggKEFTTV9PVVRQVVRfU0VDVElPTl9OQU1FKTogVXNlIGEgaGFzaCB0YWJsZSwgbm90CglhIGxpc3QsIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHNlY3Rpb25zLgoKMjAwMC0xMS0yOCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChwaWNfbG9hZF9hZGRyKTogU3BsaXQgaW50bwoJcGljX2xvYWRfYWRkcl9hcm0gYW5kIHBpY19sb2FkX2FkZHJfdGh1bWIuCgoJKiBjb25maWcvYXJtL2FybS5jIChsZWdpdGltaXplX3BpY19hZGRyZXNzKTogR2VuZXJhdGUgZWl0aGVyCglBUk0gb3IgVGh1bWIgdmVyc2lvbnMgb2YgcGljX2xvYWRfYWRkci4KCShhcm1fZmluYWxpemVfcGljKTogR2VuZXJhdGUgZWl0aGVyIEFSTSBvciBUaHVtYiB2ZXJzaW9ucyBvZgoJcGljX2xvYWRfYWRkci4KCjIwMDAtMTEtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjYWxscy5jIChleHBhbmRfY2FsbCk6IERlZmVyIGNvbnN0L3B1cmUgTk9fREVGRVJfUE9QIHVudGlsCglhZnRlciBzaWJjYWxsIGRvX3BlbmRpbmdfc3RhY2tfYWRqdXN0LgoKV2VkIE5vdiAyOSAwMDowODoyMyAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckByZWRoYXQuY29tPgoKCSoganVtcC5jIChkZWxldGVfaW5zbik6IENoZWNrIHRoYXQgUkVHX0xBQkVMIG5vdGUgYWN0dWFsbHkgY29udGFpbnMKCWEgQ09ERV9MQUJFTC4KCjIwMDAtMTEtMjggIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogYy1jb21tb24uaDogUmVtb3ZlIGZsYWdfZGlncmFwaHMuCgkqIGMtZGVjbC5jOiBSZW1vdmUgZmxhZ19kaWdyYXBocy4KCShjX2RlY29kZV9vcHRpb24pOiBEb24ndCBzZXQgaXQuCgkqIGMtbGV4LmMgKGluaXRfY19sZXgpOiBEb24ndCBkbyBhbnl0aGluZyBmb3IgZGlncmFwaHMuCgoyMDAwLTExLTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1wYXJzZS5pbiAoZmluaXNoX3BhcnNlKTogVXBkYXRlIGZvciBwYXJzZV9pbiB0eXBlIGNoYW5nZS4KCShfeXlsZXgpOiBMaWtld2lzZS4KCjIwMDAtMTEtMjggIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbWFjcm8uYyAoY3BwX3NjYW5fYnVmZmVyX25vb3V0cHV0KTogVGFrZSBhIGJvb2xlYW4KCWluZGljYXRpbmcgd2hldGhlciB0byBzY2FuIGFsbCBidWZmZXJzIG9uIHRoZSBzdGFjayBvcgoJanVzdCBvbmUuCgkqIGNwcGluaXQuYyAoZG9faW5jbHVkZXMpOiBVcGRhdGUuCgkqIGNwcG1haW4uYyAobWFpbik6IFVwZGF0ZS4KCSogY3BwbGliLmg6IFVwZGF0ZSBwcm90b3R5cGUuCgoyMDAwLTExLTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZ2Vub3V0cHV0LmMgKHZhbGlkYXRlX2luc25fb3BlcmFuZHMpOiBOZXcuCgkoZ2VuX2luc24pOiBDYWxsIGl0LgoKCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChkaXZtb2RzaV9pbnRlcm5hbCk6IFJlbnVtYmVyIG9wZXJhbmRzLgoJKGRpdm1vZGRpX2ludGVybmFsKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChhbmRzaTNfY29tcGFyZTBfc2NyYXRjaCk6IExpa2V3aXNlLgoJKiBjb25maWcvaTk2MC9pOTYwLm1kIChicmFuY2ggcGF0dGVybnMpOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAodGJpdF9hbmRfMCk6IExpa2V3aXNlLgoJKHRiaXRfYW5kXzEsIHRiaXRfb3JfMCwgdGJpdF9vcl8xKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGsubWQgKHplcm9fZXh0cmFjdCBtZW1vcnkgcGF0dGVybnMpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoZGl2bW9kc2k0X2ludGVybmFsKTogTGlrZXdpc2UuCgkoZGl2bW9kZGk0X2ludGVybmFsKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChjYWxsIHBhdHRlcm5zKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9zaC5tZCAobW92c2lfeSk6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQ6IENvbW1lbnQgb3V0IGlmIDAgdjhwIHNoaWZ0IHBhdHRlcm4uCgoyMDAwLTExLTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnLmdjYzogS2lsbCByZXNpZHVhbCBweXJhbWlkIHN1cHBvcnQuCgoyMDAwLTExLTI4ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGMtbGV4LmggKHBhcnNlX2luKTogQ2hhbmdlIHBhcnNlX2luIHRvIGEgY3BwX3JlYWRlciAqLgoJKiBjLWRlY2wuYyAoY19kZWNvZGVfb3B0aW9uKTogVXBkYXRlIHRvIG1hdGNoLgoJKiBjLWxleC5jIChpbml0X2NfbGV4LCB5eXBhcnNlKTogVXBkYXRlIHRvIG1hdGNoLgoJKiBjLWxhbmcuYyAobGFuZ19pbml0X29wdGlvbnMpOiBVc2UgY3BwX2NyZWF0ZV9yZWFkZXIuCgkqIGNwcGluaXQuYyAoY3BwX2luaXQpOiBSZW5hbWUgaW5pdGlhbGl6ZS4KCShjcHBfcmVhZGVyX2luaXQpOiBSZW5hbWUgY3BwX2NyZWF0ZV9yZWFkZXIuICBDcmVhdGUgdGhlCglyZWFkZXIuICBJbml0aWFsaXplIGNwcGxpYiBpZiBhcHByb3ByaWF0ZS4KCSogY3BwbGliLmggKGNwcF9jcmVhdGVfcmVhZGVyKSBOZXcgcHJvdG90eXBlLgoJKGNwcF9pbml0LCBjcHBfcmVhZGVyX2luaXQpOiBEZWxldGUgcHJvdG90eXBlcy4KCSogY3BwbWFpbi5jIChnZW5lcmFsX2luaXQsIHNldHVwX2NhbGxiYWNrcyk6IE5ldyBmdW5jdGlvbnMuCgkobWFpbik6IFVzZSB0aGVtLgoJKiBmaXgtaGVhZGVyLmMgKHNjYW5faW4pOiBDaGFuZ2UgdHlwZSB0byBjcHBfcmVhZGVyICouCgkocmVhZF9zY2FuX2ZpbGUpOiBVcGRhdGUgZm9yIG5ldyBjcHBsaWIgaW50ZXJmYWNlIGFuZCBzY2FuX2luIHR5cGUuCgoJKiBjcC9kZWNsLmMgKHBhcnNlX2luKTogQ2hhbmdlIHRvIGNwcF9yZWFkZXIgKi4KCShsYW5nX2RlY29kZV9vcHRpb24pOiBVcGRhdGUuCgkqIGNwL2xleC5jIChsYW5nX2luaXRfb3B0aW9ucyk6IFVzZSBuZXcgY3BwbGliIGludGVyZmFjZS4KCShpbml0X2NwX3ByYWdtYSwgZmluaXNoX3BhcnNlLCBoYW5kbGVfcHJhZ21hX2ltcGxlbWVudGF0aW9uKTogVXBkYXRlLgoJKiBjcC9zcGV3LmMgKHJlYWRfdG9rZW4pOiBVcGRhdGUuCgkqIG9iamMvb2JqYy1hY3QuYyAobGFuZ19pbml0X29wdGlvbnMpOiBVcGRhdGUgbmV3IGNwcGxpYiBpbnRlcmZhY2UuCgoyMDAwLTExLTI4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGxvb3AuYyAobG9hZF9tZW1zKTogQXZvaWQgdXNpbmcgbmV4dF9sYWJlbCB0byBmaW5kIGVuZF9sYWJlbC4gSWYKCWp1bXBpbmcgb3V0c2lkZSBvZiB0aGUgbG9vcCAob3RoZXIgdGhhbiBsb29wIGVuZCksIGRvbid0IGhvaXN0IE1FTXMKCW91dCBvZiBsb29wLgoKMjAwMC0xMS0yOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBEb24ndCBkaXNhYmxlIHRhaWwgcmVjdXJzaW9uIGJhc2VkCglvbiB0aGUgbG9vcCBuZXN0LgoKMjAwMC0xMS0yOCAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiB0cmFkY3BwLmMgKGVudW0gbm9kZV90eXBlKTogTmV3IGhhc2ggdHlwZXMgVF9BU1NFUlQsIFRfVU5BU1NFUlQuCgkoc3RydWN0IGRpcmVjdGl2ZSk6IERyb3AgNHRoIGFyZ3VtZW50IGZyb20gaGFuZGxlcnMuCgkoZG9fZGVmaW5lLCBkb19saW5lLCBkb19pbmNsdWRlLCBkb191bmRlZiwgZG9fZWxzZSwgZG9fZWxpZiwKCWRvX2VuZGlmKTogU2ltaWxhcmx5LgoJKGRvX2Fzc2VydCwgZG9fdW5hc3NlcnQsIGRvX2lmZGVmLCBkb19pZm5kZWYpOiBOZXcgaGFuZGxlcnMuCgkoZG9faWZ4ZGVmKTogVXBkYXRlIGFzIGNvbW1vbiBoYW5kbGVyIG9mIGRvX2lmZGVmIGFuZCBkb19pZm5kZWYuCgkobWFrZV9kZWZpbml0aW9uLCBtYWtlX3VuZGVmKTogVGFrZSBhIGNvbnN0IGNoYXIqLgoJKG1ha2VfYXNzZXJ0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKHN0cnVjdCBkaXJlY3RpdmVfdGFibGUpOiBVcGRhdGUuCgkobWFpbik6IEhhbmRsZSAtQSBjb21tYW5kIGxpbmUgYXJndW1lbnQuCgkoaGFuZGxlX2RpcmVjdGl2ZSk6IERyb3AgZm91cnRoIGhhbmRsZXIgYXJndW1lbnQuCgoyMDAwLTExLTI4ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChjc2VsaWJfcmVjb3JkX3NldHMpOiBJZ25vcmUgc2V0cyB3aG9zZSBkZXN0aW5hdGlvbgoJaXMgYW55dGhpbmcgYnV0IFJFRyBvciBNRU0sIGJ1dCBsb29rIGluc2lkZSBTVFJJQ1RfTE9XX1BBUlQuCgpUdWUgTm92IDI4IDA5OjUzOjUwIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBzeXN0ZW0uaCAoSVNfRElSX1NFUEFSQVRPUik6IFVzZSB1cHBlcmNhc2UgbWFjcm8gbmFtZS4KCShJU19BQlNPTFVURV9QQVRITkFNRSk6IE5ldyBtYWNyby4KCSogZ2NjLmMgKGZpbmRfYV9maWxlLCBwcm9jZXNzX2NvbW1hbmQsIGRvX3NwZWNfMSwgbWFpbik6IFVzZSBpdC4KCjIwMDAtMTEtMjggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAodHJ1bmN4ZnNmMl8yKTogRml4IHByZWRpY2F0ZS4KCjIwMDAtMTEtMjcgIEppbSBXaWxzb24gIDx3aWxzb25AcmVkaGF0LmNvbT4KCgkqIHJlbG9hZDEuYyAocmVsb2FkKTogVXNlIEhPU1RfV0lERV9JTlQgZm9yIG9sZF9mcmFtZV9zaXplLgoKMjAwMC0xMS0yNyAgTWF0dGhpYXMgS2xvc2UgIDxkb2tvQGNzLnR1LWJlcmxpbi5kZT4KCgkqIGV4dGVuZC50ZXhpIChOZXN0ZWQgRnVuY3Rpb25zKTogVXBkYXRlIFVSTCBvZiBVc2VuaXggcGFwZXIuCgoyMDAwLTExLTI3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZnVuY3Rpb24uYyAoZnJlZV9hZnRlcl9jb21waWxhdGlvbik6IENsZWFyIHhfY2xvYmJlcl9yZXR1cm5faW5zbi4KCjIwMDAtMTEtMjcgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaW5pdC5jIChjcHBfcmVhZGVyX2luaXQpOiBSZW1vdmUgaGFuZGxpbmcgb2Ygd2Fybl9wYXN0ZQoJY29tbWFuZCBsaW5lIG9wdGlvbnMuCgkoY3BwX2hhbmRsZV9vcHRpb24pOiBTaW1pbGFybHkuCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX29wdGlvbnMpOiBSZW1vdmUgd2Fybl9wYXN0ZS4KCSogY3BwbWFjcm8uYyAocGFzdGVfdG9rZW5zKTogQXBhcnQgZnJvbSBhc3NlbWJsZXIsIG1ha2UKCXVucGFzdGVhYmxlIHRva2VuIHdhcm5pbmcgbWFuZGF0b3J5LgoKMjAwMC0xMS0yNyAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiB0cmFkY3BwLmMgKGVudW0gcGVuZGluZ19kaXJfdCwgc3RydWN0IHBlbmRpbmdfZGlyKTogTmV3LgoJKG1haW4pOiBBbGxvY2F0ZSBhIHBlbmRpbmcgZGlyZWN0aXZlIHNldCBvZiB0aGVzZS4gIFVzZSBpdC4KCU1lcmdlIGhhbmRsaW5nIG9mIC1EIGFuZCAtVS4gIFVwZGF0ZSBoYW5kbGluZyBvZiBwZW5kaW5nCglkaXJlY3RpdmVzLiAgRnJlZSB0aGUgbWVtb3J5IGFmdGVyIHVzZS4KCjIwMDAtMTEtMjcgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogZmxvdy5jIChlbnRyeV9leGl0X2Jsb2Nrcyk6IEFkZCBlbnRyeSBmb3IgY29uZF9sb2NhbF9zZXQuCgkoc3RydWN0IHByb3BhZ2F0ZV9ibG9ja19pbmZvKTogQWRkIG5ldyBtZW1iZXIgY29uZF9sb2NhbF9zZXQuCgkocHJvcGFnYXRlX2Jsb2NrKTogQWNjZXB0IG5ldyBhcmcgY29uZF9sb2NhbF9zZXQuICBBbGwgY2FsbGVycwoJY2hhbmdlZC4KCShpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogTGlrZXdpc2UuCgkoY2FsY3VsYXRlX2dsb2JhbF9yZWdzX2xpdmUpOiBBbGxvY2F0ZSAmIGZyZWUgY29uZF9sb2NhbF9zZXQuICBBbHdheXMKCXJlc2NhbiBpZiB0aGVyZSdzIG92ZXJsYXAgYmV0d2VlbiBjb25kX2xvY2FsX3NldCBhbmQgbmV3X2xpdmVfYXRfZW5kLgoJKG1hcmtfc2V0XzEpOiBTZXQgYml0cyBlaXRoZXIgaW4gY29uZF9sb2NhbF9zZXQgb3IgbG9jYWxfc2V0LCBhcwoJYXBwcm9wcmlhdGUuCgkqIGJhc2ljLWJsb2NrLmggKHN0cnVjdCBiYXNpY19ibG9ja19kZWYpOiBOZXcgZmllbGQgY29uZF9sb2NhbF9zZXQuCgkocHJvcGFnYXRlX2Jsb2NrLCBpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogVXBkYXRlIHByb3RvdHlwZXMuCgpNb24gTm92IDI3IDE3OjI5OjQ0IDIwMDAgIGtheiBLb2ppbWEgPGtrb2ppbWFAcnIuaWlqNHUub3IuanA+CgoJKiBnY2MvY29uZmlnL3NoL3NoLm1kICh1ZGl2c2kzX2k0LCB1ZGl2c2kzX2k0X3NpbmdsZSk6IENsb2JiZXIKCVQgcmVnaXN0ZXIuCgoyMDAwLTExLTI3ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jIChzZWxlY3RfZG9taW5hbmNlX2NjX21vZGUpOiBIYW5kbGUgbmV3IHdheSB0aGF0IGNvbWJpbmUKCWNhbm9uaWNhbGl6ZXMgY29uZGl0aW9uYWwgY29tcGFyZXMuCgkoYXJtX3NlbGVjdF9jY19tb2RlKTogTGlrZXdpc2UuCgkqIGFybS5tZDogR2FyYmFnZSBjb2xsZWN0IHNvbWUgZGVhZCBjb2RlLgoJKGNtcF9hbmQsIGNtcF9pb3IpOiBOZXcgcGF0dGVybnMuCgkoc3BsaXR0ZXIgZm9yIGNvbmRpdGlvbmFsIG1vdmUgd2l0aCBpbnZlcnRlZCBmYWxzZSk6IFVzZSBjb25kX2V4ZWMKCWFuZCBoYW5kbGUgdW5vcmRlcmVkIGNvbXBhcmlzb25zLgoKTW9uIE5vdiAyNyAxNzoyMjo1NiBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jIChpeDg2X2ZvcmNlX3RvX21lbW9yeSwgaXg4Nl9mcmVlX2Zyb21fbWVtb3J5KTogTmV3LgoJKiBpMzg2LXByb3Rvcy5oIChpeDg2X2ZvcmNlX3RvX21lbW9yeSwgaXg4Nl9mcmVlX2Zyb21fbWVtb3J5KTogRGVjbGFyZQoJKiBpMzg2Lm1kIChmbG9hdD9pP2YsIGludC9mcCBvcGVyYXRpb25zKTogUmV3cml0ZSBzcGxpdGVycyB0byB1c2UKCWl4ODZfZm9yY2VfdG9fbWVtb3J5IGFuZCBpeDg2X2ZyZWVfZnJvbV9tZW1vcnkuCgoyMDAwLTExLTI3ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5tZCAoYXJtX2FkZGRpMywgYWRkZGlfc2VzaWRpX2RpLCBhZGRkaV96ZXNpZGlfZGksIGFybV9hZGRzaTMsCglhcm1fc3Vic2kzX2luc24sIGFuZGRpX3plc2lkaV9kaSwgYXJtX2FuZHNpM19pbnNuLCBhbmRkaV9ub3RkaV9kaSwKCWFuZGRpX25vdHplc2lkaV9kaSwgYW5kZGlfbm90c2VzaWRpX2RpLCBhcm1faW9yc2kzLAoJb25lX2NtcGxkaTIpOiBNZXJnZSB3aXRoIHNwbGl0dGVycyB0byBjcmVhdGUgZGVmaW5lX2luc25fYW5kX3NwbGl0CglwYXR0ZXJucy4gIFJlbW92ZSByZWR1bmRhbnQgc3BsaXRzLgoJKHBlZXBob2xlMiBmb3IgYWRkOlNJIG9mIGludmFsaWQgaW1tZWRpYXRlKTogTmV3LgoJKHBlZXBob2xlMiBmb3IgbWludXM6U0kgb2YgaW52YWxpZCBpbW1lZGlhdGUpOiBOZXcuCgkocGVlcGhvbGUyIGZvciBpb3I6U0kgb2YgaW52YWxpZCBpbW1lZGlhdGUpOiBOZXcuCgkocGVlcGhvbGUgZm9yIG1lcmdlIG9mIG1vdmUgYW5kIGNvbXBhcmUpOiBDb252ZXJ0IG90IHBlZXBob2xlMi4KCShhZGRzZjMsIGFkZGRmMyk6IE1hcmsgYXMgY29tbXV0YXRpdmUuCgoJKiBhcm0ubWQgKHRodW1iIHBlZXBob2xlIGZvciBtZXJnaW5nIHN0YWNrIGFkanVzdG1lbnRzKTogQ29udmVydCB0bwoJcGVlcGhvbGUyLgoKMjAwMC0xMS0yNyAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBoYWlmYS1zY2hlZC5jIChwcmludF9wYXR0ZXJuKTogUHJldHRpZXIgb3V0cHV0IGZvciBDT05EX0VYRUMuCgoJKiByZWxvYWQxLmMgKHJlbG9hZF9jc2Vfc2ltcGxpZnlfc2V0KTogUGFzcyBkb3duIG1vZGUgdG8gY3NlbGliX2xvb2t1cC4KCShyZWxvYWRfY3NlX3NpbXBsaWZ5X29wZXJhbmRzKTogRG8gbm90aGluZyBhYm91dCBvcGVyYW5kcyB3aGVyZSBib3RoCgl0aGUgb3BlcmFuZCBhbmQgdGhlIG1hdGNoX29wZXJhbmQgZmFpbCB0byBnaXZlIHVzIGEgbW9kZS4KCSogc2ltcGxpZnktcnR4LmMgKHdyYXBfY29uc3RhbnQpOiBOZXcgZnVuY3Rpb24uCgkoZW50cnlfYW5kX3J0eF9lcXVhbF9wKTogRXhjZXB0IGludGVnZXIgY29uc3RhbnRzIHRvIGNvbWUgd3JhcHBlZCBpbiBhCglDT05TVCBkZXNjcmliaW5nIHRoZSBwcm9wZXIgbW9kZS4KCShydHhfZXF1YWxfZm9yX2NzZWxpYl9wKTogUGFzcyBkb3duIG1vZGVzIHRvIHJlY3Vyc2l2ZSBjYWxscyBvZgoJY3NlbGliX2xvb2t1cC4KCShjc2VsaWJfbG9va3VwX21lbSk6IENhbGwgd3JhcF9jb25zdGFudCBvbiB0aGUgcnR4IHRoYXQgaXMgcGFzc2VkIHRvCglodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2guCgkoY3NlbGliX2xvb2t1cCk6IExpa2V3aXNlLgoKCUJhc2VkIG9uIGEgcGF0Y2ggZnJvbSBHZW9mZiBLZWF0aW5nIDxnZW9mZmtAcmVkaGF0LmNvbT46CgkqIGxvb3AuYyAoYmFzaWNfaW5kdWN0aW9uX3Zhcik6IElmIGEgUkVHIGlzIHNldCBmcm9tIHNvbWV0aGluZwoJdGhhdCBpcyBub3QgYSBiaXYsIHRoZW4gdGhlIFJFRyBpcyBub3QgYSBiaXYuICBFdmVuIGlmIGl0IGlzCgllYXJsaWVyIHNldCBmcm9tIHNvbWV0aGluZyB0aGF0IGlzIGEgYml2LgoKMjAwMC0xMS0yNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW4gKGV4dHJhX29ianMpOiBFbmNsb3NlIGV4dHJhX2hlYWRlcnMgaW4gcXVvdGVzLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAwLTExLTI3ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGMtbGV4LmMgKGNiX2VudGVyX2ZpbGUsIGNiX2xlYXZlX2ZpbGUsIGNiX3JlbmFtZV9maWxlKToKCUNvbWJpbmUgaW50byB0aGUgbmV3IGZ1bmN0aW9uIGNiX2NoYW5nZV9maWxlLgoJKGluaXRfY19sZXgpOiBVcGRhdGUuCgkqIGNwcGZpbGVzLmMgKHN0YWNrX2luY2x1ZGVfZmlsZSk6IFVzZSBfY3BwX2RvX2ZpbGVfY2hhbmdlLgoJKGNwcF9zeXNoZHJfZmxhZ3MpOiBEZWxldGUuCgkqIGNwcGhhc2guaCAoX2NwcF9kb19maWxlX2NoYW5nZSk6IE5ldyBwcm90b3R5cGUuCglNb3ZlIHN0cnVjdCBjcHBfYnVmZmVyIGhlcmUgZnJvbS4uLgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9idWZmZXIpOiAuLi4gaGVyZS4KCShlbnVtIGNwcF9mY19yZWFzb24sIHN0cnVjdCBjcHBfZmlsZV9sb2MsCglzdHJ1Y3RfY3BwX2ZpbGVfY2hhbmdlLCBjaGFuZ2VfZmlsZSk6IE5ldy4KCShlbnRlcl9maWxlLCBsZWF2ZV9maWxlLCByZW5hbWVfZmlsZSwgY3BwX3N5c2hkcl9mbGFncyk6IERlbGV0ZS4KCSogY3BwbGliLmMgKGRvX2xpbmUpOiBVcGRhdGUgZm9yIG5ldyBjYl9jaGFuZ2VfZmlsZSBjYWxsYmFjay4KCShfY3BwX2RvX2ZpbGVfY2hhbmdlKTogTmV3IGZ1bmN0aW9uLgoJKF9jcHBfcG9wX2J1ZmZlcik6IFVwZGF0ZSB0byB1c2UgaXQuCgkqIGNwcG1haW4uYyAobW92ZV9wcmludGVyKTogRGVsZXRlLgoJKG1haW4pOiBTZXQgdXAgc2luZ2xlIGNhbGxiYWNrIGNiX2NoYW5nZV9maWxlLgoJKGNiX2VudGVyX2ZpbGUsIGNiX2xlYXZlX2ZpbGUsIGNiX3JlbmFtZV9maWxlKTogRGVsZXRlLgoJKGNiX2NoYW5nZV9maWxlKTogTmV3LgoJKiBmaXgtaGVhZGVyLmMgKGN1cl9maWxlLCBjYl9jaGFuZ2VfZmlsZSk6IE5ldy4KCShyZWNvZ25pemVkX2Z1bmN0aW9uLCByZWFkX3NjYW5fZmlsZSk6IFVwZGF0ZS4KCSogc2Nhbi1kZWNscy5jIChzY2FuX2RlY2xzKTogVXBkYXRlLgoJKiBzY2FuLmggKHJlY29nbml6ZWRfZnVuY3Rpb24pOiBVcGRhdGUgcHJvdG90eXBlLgoKMjAwMC0xMS0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuaCAobWFya190cmVlX2hhc2h0YWJsZSk6IE5ldyBmdW5jdGlvbi4KCSogdHJlZS5jIChtYXJrX3RyZWVfaGFzaHRhYmxlX2VudHJ5KTogTmV3IGZ1bmN0aW9uLgoJKG1hcmtfdHJlZV9oYXNodGFibGUpOiBMaWtld2lzZS4KCjIwMDAtMTEtMjcgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckByZWRoYXQuY29tPgoKCSogZDMwdi1wcm90b3MuaCAoc3JlbGF0aW9uYWxfc2lfb3BlcmF0b3IpOiBDb3JyZWN0bHkgc3BlbGwKCWZ1bmN0aW9uLgoJKHVyZWxhdGlvbmFsX3NpX29wZXJhdG9yKTogRGl0dG8uCgkocmVsYXRpb25hbF9zaV9vcGVyYXRvcik6IERpdHRvLgoJKGQzMHZfZXhwYW5kX3Byb2xvZ3VlKTogQWRkIHByb3RvdHlwZS4KCShkMzB2X2V4cGFuZF9lcGlsb2d1ZSk6IERpdHRvLgoKCSogZDMwdi5oIChPUFRJTUlaQVRJT05fT1BUSU9OUyk6IFVuZG8gTm92ZW1iZXIgMjJuZCBjaGFuZ2UuCgoJKiBkMzB2Lm1kIChtb3ZjY2NjXyopOiBEZWxldGUgbm93IHVudXNlZCBwYXR0ZXJucy4KCSg2NCBiaXQgY29tcGFyaXNvbiBzcGxpdHRlcnMpOiBSZXdyaXRlIHRvIHVzZSBDT05EX0VYRUMgaW5zdGVhZCBvZgoJSUZfVEhFTl9FTFNFLgoJKGRlZmluZV9jb25kX2V4ZWMpOiBVc2UgJ2InIHRvIHNlbGVjdCBicmFuY2ggZmxhZ3MuCgoyMDAwLTExLTI2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHJuY21wLCBleHBhbmRfYnVpbHRpbl9zdHJuY3B5KTogTmV3CglmdW5jdGlvbnMuCgkoZXhwYW5kX2J1aWx0aW4pOiBIYW5kbGUgQlVJTFRfSU5fU1RSTkNQWSBhbmQgQlVJTFRfSU5fU1RSTkNNUC4KCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fU1RSTkNQWSwgQlVJTFRfSU5fU1RSTkNNUCk6IE5ldyBlbnRyaWVzLgoKCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogRGVjbGFyZSBidWlsdGluCglzdHJuY3B5IGFuZCBzdHJuY21wLgoKCSogZXh0ZW5kLnRleGkgKHN0cm5jbXAsIHN0cm5jcHkpOiBEb2N1bWVudCBuZXcgYnVpbHRpbnMuCgoyMDAwLTExLTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2VsZm9zLmggKEFTTV9PVVRQVVRfU0VDVElPTl9OQU1FKTogVXNlIGEgaGFzaCB0YWJsZSwgbm90CglhIGxpc3QsIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHNlY3Rpb25zLgoJKiB0bS50ZXhpIChBU01fT1VUUFVUX1NFQ1RJT05fTkFNRSk6IERvY3VtZW50IHRoZSBmYWN0IHRoYXQgdGhlCglwYXJhbWV0ZXIgcHJvdmlkZWQgd2lsbCBhbHdheXMgYmUgYSBjYW5vbmljYWwgc3RyaW5nLgoKMjAwMC0xMS0yNiAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBtYWNyby5jIChjcHBfc2Nhbl9idWZmZXJfbm9vdXRwdXQpOiBPbmx5IHNjYW4gdGhlCgljdXJyZW50IGJ1ZmZlci4KCjIwMDAtMTEtMjYgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIG1ha2VmaWxlLnZtczogUmVtb3ZlIEVHQ1MgcmVmZXJlbmNlcy4KCjIwMDAtMTEtMjYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKG91dHB1dF9maWxlX25hbWVzKTogTmV3IGZ1bmN0aW9uLiAgQ29tcHV0ZSBtaW5pbWFsCgljb21iaW5hdGlvbiBvZiBkaXJlY3RvcnkgYW5kIGZpbGUgbmFtZSB0YWJsZSBhbmQgZW1pdCB0aGVtLgoJKG91dHB1dF9saW5lX2luZm8pOiBSZW1vdmUgY29kZSB0byBlbWl0IGRpcmVjdG9yeSBhbmQgZmlsZSBuYW1lCgl0YWJsZSBhbmQgY2FsbCBvdXRwdXRfZmlsZV9uYW1lcyBpbnN0ZWFkLgoJKGZpbGVfaW5mb19jbXApOiBIZWxwZXIgZnVuY3Rpb24gdG8gc29ydCBkaXJlY3RvcnkgbmFtZXMuCgoyMDAwLTExLTI2ICBOZWlsIEJvb3RoCTxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGliLmggKHN0cnVjdCBjcHBfcmVhZGVyKTogUmVtb3ZlIGxhbmdfYXNtLgoJKHN0cnVjdCBjcHBfb3B0aW9ucyk6IFJlbW92ZSBjODkuIE5ldyBtZW1iZXJzIGxhbmcsCglleHRlbmRlZF9udW1iZXJzLgoJKiBjcHBleHAuYyAocGFyc2VfbnVtYmVyKTogVXNlIHRoZW0uCgkqIGNwcGhhc2guaCAoVkFMSURfU0lHTik6IFVzZSB0aGVtLgoJKiBjcHBpbml0LmMgKHNldF9sYW5nLCBjcHBfc3RhcnRfcmVhZCk6IFVwZGF0ZS4KCSogY3BwbGV4LmMgKHBhcnNlX3N0cmluZywgX2NwcF9sZXhfdG9rZW4pOiBVcGRhdGUuCgkqIGNwcGxpYi5jIChfY3BwX2hhbmRsZV9kaXJlY3RpdmUpOiBVcGRhdGUuCgkqIGNwcG1hY3JvLmMgKHBhcnNlX2FyZ3MpOiBVcGRhdGUuCgkqIGNwcG1haW4uYyAoc2Nhbl9idWZmZXIpOiBVcGRhdGUuCgpTdW4gTm92IDI2IDEwOjAyOjM3IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGQsIGNhc2UgQ09OVkVSVF9FWFBSKTogQWx3YXlzIHJldHVybiB0cmVlIG9mCglwcm9wZXIgdHlwZS4KCjIwMDAtMTEtMjYgIE5laWwgQm9vdGgJPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIE1BWUJFX0NQUExJQiBhbmQgbWF5YmVfY3BwbGliLgoJKiBjLWRlY2wuYzogUmVtb3ZlIHBhcnNlX2luIGRlY2xhcmF0aW9uLgoJKiBjLWxhbmcuYzogU2ltaWxhcmx5LgoJKiBjLWxleC5jOiBTaW1pbGFybHkuCgkqIGMtcGFyc2UuaW46IFNpbWlsYXJseS4KCSogYy1wcmFnbWEuYzogU2ltaWxhcmx5LgoJKiBjb25maWd1cmUuaW46IFNpbWlsYXJseS4KCSogY3AvTWFrZS1sYW5nLmluOiBTaW1pbGFybHkuCgkqIGNwL3NwZXcuYzogU2ltaWxhcmx5LgoJKiBjcC9kZWNsMi5jOiBSZW1vdmUgY2hlY2sgZm9yIGxhbmctYysrIG9wdGlvbi4KCSogY3AvbGFuZy1zcGVjcy5oOiBSZW1vdmUgLWxhbmctYysrIGZyb20gY2MxcGx1cyBjb21tYW5kIGxpbmUuCgkqIGNwL2xleC5jIChsYW5nX2luaXRfb3B0aW9ucyk6IFdpdGggY3BwX3JlYWRlcl9pbml0LCBkZWZhdWx0IHRvIEMrKy4KCSogYy1sZXguaDogQWRkIGRlY2xhcmF0aW9uIG9mIHBhcnNlX2luLgoJKiBjcHBpbml0LmM6IENhbGwgc2V0X2xhbmcgYWZ0ZXIgYWxsb2NhdGluZyBwZmlsZS0+cGVuZGluZy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0xMS0yNSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIGNvbWJpbmUuYyAodHJ5X2NvbWJpbmUpOiBSZW1vdmUgcmVkdW5kYW50IHRlc3QuCgoyMDAwLTExLTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1jb21tb24uaCAoREVDTF9DX0hBUkRfUkVHSVNURVIpOiBOZXcuCgkqIGMtZGVjbC5jIChmaW5pc2hfZGVjbCk6IFNldCBpdCBmb3IgYXNtIHJlZ2lzdGVyIHZhcmlhYmxlcy4KCSogYy1zZW1hbnRpY3MuYyAoZW1pdF9sb2NhbF92YXIpOiBUZXN0IGl0IHdoZW4gaW5zdGFudGlhdGluZyBvbmUuCgoyMDAwLTExLTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKGNfZXhwYW5kX2JvZHkpOiBVc2UgREVDTF9TT1VSQ0VfTElORSByYXRoZXIgdGhhbgoJbGluZW5vIGZvciB0aGUgc3RhcnQgb2YgdGhlIGZ1bmN0aW9uLgoKMjAwMC0xMS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChmaWxlX3RhYmxlLCBmaWxlX3RhYmxlX2FsbG9jYXRlZCk6IFJlbW92ZS4KCShmaWxlX3RhYmxlX2FsbG9jYXRlZCk6IFJlbW92ZS4KCShzdHJ1Y3QgZmlsZV90YWJsZSk6IE5ldy4KCShkZWNsX2ZpbGVfdGFibGUsIGxpbmVfZmlsZV90YWJsZSk6IE5ldy4KCShwcmludF9kd2FyZl9saW5lX3RhYmxlKTogVXNlIHRoZW0uCgkoc2l6ZV9vZl9saW5lX3Byb2xvZyk6IExpa2V3aXNlLgoJKG91dHB1dF9saW5lX2luZm8pOiBMaWtld2lzZS4KCShhZGRfc3JjX2Nvb3Jkc19hdHRyaWJ1dGVzKTogTGlrZXdpc2UuCgkoZ2VuX3N1YnByb2dyYW1fZGllKTogTGlrZXdpc2UuCgkoZ2VuX3ZhcmlhYmxlX2RpZSk6IExpa2V3aXNlLgoJKGR3YXJmMm91dF9hZGRfbGlicmFyeV91bml0X2luZm8pOiBMaWtld2lzZS4KCShkd2FyZjJvdXRfbGluZSk6IExpa2V3aXNlLgoJKGxvb2t1cF9maWxlbmFtZSk6IFRha2UgYSBzdHJ1Y3QgZmlsZV90YWJsZSBhcmd1bWVudC4KCShpbml0X2ZpbGVfdGFibGUpOiBOZXcuCgkoZHdhcmYyb3V0X2luaXQpOiBVc2UgaXQuCgoyMDAwLTExLTI1ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBpbnZva2UudGV4aTogVXBkYXRlIHNlcXVlbmNlIHBvaW50cyByZWZlcmVuY2VzLgoKMjAwMC0xMS0yNSAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjLWNvbW1vbi5jOiBSZW1vdmUgVVNFX0NQUExJQiBjb25kaXRpb25hbCBpbmNsdXNpb25zLgoJKiBjLWNvbW1vbi5oOiBTaW1pbGFybHkuCgkqIGMtZGVjbC5jOiBTaW1pbGFybHkuCgkqIGMtbGFuZy5jOiBTaW1pbGFybHkuCgkqIGMtbGV4LmM6IFNpbWlsYXJseS4KCSogYy1wYXJzZS5pbjogU2ltaWxhcmx5LgoJKiBjLXByYWdtYS5jOiBTaW1pbGFybHkuCgkqIGMtcHJhZ21hLmg6IFNpbWlsYXJseS4KCSogZ2NjLmM6IFNpbWlsYXJseS4KCSogdG9wbGV2LmM6IFNpbWlsYXJseS4KCSogY3AvY3AtdHJlZS5oOiBTaW1pbGFybHkuCgkqIGNwL2RlY2wyLmM6IFNpbWlsYXJseS4KCSogY3AvbGFuZy1zcGVjcy5oOiBTaW1pbGFybHkuCgkqIGNwL2xleC5jOiBTaW1pbGFybHkuCgkqIGNwL2xleC5oOiBTaW1pbGFybHkuCgkqIGNwL3NwZXcuYzogU2ltaWxhcmx5LgoJKiBqYXZhL2xhbmctb3B0aW9ucy5oOiBTaW1pbGFybHkuCgkqIG9iamMvbGFuZy1zcGVjcy5oOiBTaW1pbGFybHkuCgkqIG9iamMvb2JqYy1hY3QuYzogU2ltaWxhcmx5LgoKCSogY29uZmlndXJlLmluOiBSZW1vdmUgY29uZmlndXJlIG9wdGlvbi4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAwLTExLTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogaGFpZmEtc2NoZWQuYyAoc2NoZWRfYW5hbHl6ZV8xLCBzY2hlZF9hbmFseXplXzIsIHNjaGVkX2FuYWx5emUpOgoJUmV2ZXJ0IDIwMDAtMTEtMjIgY2hhbmdlLgoKMjAwMC0xMS0yNSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKEZJWEVEX1JFR1MpOiBNYWtlIHRoZSB0aHJlZSBmbGFncyByZWdpc3RlcnMKCWZpeGVkLgoKMjAwMC0xMS0yNSAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgkqIGNvbmZpZ3VyZS5pbiAoQUxMX0xJTkdVQVMpOiBSZW1vdmUgZW5fR0IgYW5kIGFkZCBzdi4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0xMS0yNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKG11bGRpM192OHBsdXMpOiBSZW1vdmUgSCBjb25zdHJhaW50LgoJSGFuZGxlIENPTlNUX0lOVCBhcyBzZWNvbmQgYXJndW1lbnQuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzZXRfZXh0ZW5kcyk6IFJlbW92ZSBmaXJzdCBhcmd1bWVudC4KCVByb3Blcmx5IGhhbmRsZSBBTkQsIENPTlNUX0lOVCBhbmQgQ09OU1RfRE9VQkxFLCBoYW5kbGUgSU9SLCBYT1IgYW5kCglNT1YuCgkoc3BhcmNfY2hlY2tfNjQpOiBBYm9ydCBpZiBmaXJzdCBhcmd1bWVudCBpcyBub3QgUkVHLgoJSWYgaXQgaXMgREltb2RlIFJFRywgbG9vayBhdCB0aGUgbG93ZXIgcmVnaXN0ZXIgb2YgdGhlIHJlZ2lzdGVyCglwYWlyLgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKGxvYWRfcGljX3JlZ2lzdGVyLCByZXN0b3JlX3JlZ3MsCglvdXRwdXRfcmV0dXJuLCBzcGFyY192OHBsdXNfc2hpZnQsIHNwYXJjX2Z1bmN0aW9uX3Byb2ZpbGVyLAoJc3BhcmNfZnVuY3Rpb25fYmxvY2tfcHJvZmlsZXIsIHNwYXJjX2Jsb2NrX3Byb2ZpbGVyKTogRml4IG91dHB1dAoJZm9ybWF0dGluZy4KCjIwMDAtMTEtMjUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLmggKFRBUkdFVF9OT05FKTogTmV3LgoJKFRBUkdFVF9TV0lUQ0hFUyk6IEZvciBhbGwgdmFyaWFudC1zZWxlY3Rpbmcgc3dpdGNoLCB1c2UKCVRBUkdFVF9OT05FIHRvIHJlc2V0IGFsbCBvdGhlciB2YXJpYW50LXNlbGVjdGluZyBzd2l0Y2guICBBZGRlZAoJZW1wdHkgc3RyaW5ncyB0byBhdm9pZCB3YXJuaW5ncy4KCShUQVJHRVRfREVGQVVMVCk6IFNldCB0byBTSDFfQklULgoKCSogTWFrZWZpbGUuaW4gKCQoSU5UTF9UQVJHRVRTKSk6IEFkZGVkICQoQ09ORklHX0gpIGZvcgoJaW5zbi1jb2Rlcy5oLgoKCSogZ2NjL2NvbmZpZy9zaC9zaC5tZCAoc2liY2FsbGksIHNpYmNhbGxpX3BjcmVsKTogTmV3IGluc25zLgoJKHNpYmNhbGxfcGNyZWwpOiBOZXcgaW5zbl9hbmRfc3BsaXQuCgkoc2liY2FsbCwgc2liY2FsbF92YWx1ZSwgc2liY2FsbF9lcGlsb2d1ZSk6IE5ldyBleHBhbmRzLgoKCSogY29uZmlnL3NoL3NoLm1kIChHT1RhZGRyMnBpY3JlZywgc3ltR09UMnJlZywgc3ltR09UT0ZGMnJlZywKCXN5bVBMVF9sYWJlbDJyZWcsIGNhbGwsIGNhbGxfdmFsdWUpOiBEb24ndCBzZXQKCWN1cnJlbnRfZnVuY3Rpb25fdXNlc19waWNfb2Zmc2V0X3RhYmxlLgoJKiBjb25maWcvc2gvc2guaCAoQ09ORElUSU9OQUxfUkVHSVNURVJfVVNBR0UpOiBEb24ndCBtYXJrCglQSUNfT0ZGU0VUX1RBQkxFX1JFR05VTSBhcyBjYWxsX3VzZWQsIHNvIHRoYXQgY2FsY19saXZlX3JlZ3MKCXRha2VzIGl0IGludG8gYWNjb3VudC4KCShGSU5BTElaRV9QSUMpOiBEZWxldGUsIHVzZWxlc3MuCgkoTEVHSVRJTUFURV9DT05TVEFOVF9QKTogRGVsZXRlLCB1bnVzZWQuCgkqIGNvbmZpZy9zaC9zaC5jIChzaF9leHBhbmRfcHJvbG9ndWUpOiBEb24ndCB1c2UKCWN1cnJlbnRfZnVuY3Rpb25fdXNlc19waWNfb2Zmc2V0X3RhYmxlLiAgRG9uJ3Qgc3BlY2lhbC1jYXNlCglQSUNfT0ZGU0VUX1RBQkxFX1JFR05VTS4gIEluaXRpYWxpemUgaXQgaWYgaXQncyBldmVyIGxpdmUgYW5kCglQSUMgaXMgZW5hYmxlZC4KCShzaF9leHBhbmRfZXBpbG9ndWUsIGluaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0KTogRG9uJ3QKCXNwZWNpYWwgY2FzZSBQSUNfT0ZGU0VUX1RBQkxFX1JFR05VTS4KCjIwMDAtMTEtMjUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPiwgTklJQkUgWXV0YWthICA8Z25paWJlQG0xN24ub3JnPgoKCSogY29uZmlnL3NoL3NoLXByb3Rvcy5oIChzeW1ib2xfcmVmX29wZXJhbmQpOiBEZWNsYXJlLgoJKiBjb25maWcvc2gvc2gubWQgKFVOU1BFQ19DQUxMRVIpOiBOZXcgY29uc3RhbnQuCgkoY2FsbGlfcGNyZWwsIGNhbGxfdmFsdWVpX3BjcmVsKTogVXNlIFBJQ19SRUcuCgkoY2FsbF9wY3JlbCwgY2FsbF92YWx1ZV9wY3JlbCk6IE5ldyBpbnNuX2FuZF9zcGxpdHMuCgkoY2FsbCwgY2FsbF92YWx1ZSk6IFVzZSB0aGVtLgoJKGNhbGxfc2l0ZSk6IE5ldyBleHBhbmQuCgkoc3ltX2xhYmVsMnJlZywgc3ltUExUX2xhYmVsMnJlZyk6IEFkanVzdCB0byBob2xkIGNhbGxfc2l0ZXMuCgkqIGNvbmZpZy9zaC9zaC5oIChPVVRQVVRfQUREUl9DT05TVF9FWFRSQSkgW1VOU1BFQ19DQUxMRVJdOgoJT3V0cHV0IGNhbGxfc2l0ZSBsYWJlbC4KCShQUkVESUNBVEVfQ09ERVMpOiBBZGRlZCBzeW1ib2xfcmVmX29wZXJhbmQuCgkqIGNvbmZpZy9zaC9zaC5jIChzeW1ib2xfcmVmX29wZXJhbmQpOiBEZWZpbmUuCgkqIGVtaXQtcnRsLmMgKHRyeV9zcGxpdCk6IFByb3BhZ2F0ZSBDQUxMX0lOU05fRlVOQ1RJT05fVVNBR0UKCXRvIENBTExfSU5TTnMgaW4gdGhlIHNwbGl0IHNlcXVlbmNlLgoKMjAwMC0xMS0yNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy5nY2MgKHY4NTAtKi0qKTogRGVmaW5lIGNfdGFyZ2V0X29ianMgYW5kCgljeHhfdGFyZ2V0X29ianMuCgoJKiBjb25maWcvdjg1MC90LXY4NTA6IERlZmluZSBob3cgdG8gYnVpbGQgdjg1MC1jLm8KCgkqIGNvbmZpZy92ODUwL3Y4NTAuaCAoc3RydWN0IGRhdGFfYXJlYV9zdGFja19lbGVtZW50KTogTW92ZQoJZGVmaW5pdGlvbiBoZXJlIGZyb20gdjg1MC5jLgoKCSogY29uZmlnL3Y4NTB2ODUwLmM6IEluY2x1ZGUgZ2NjLmggdG8gYXZvaWQgY29tcGlsZSB0aW1lCgl3YXJuaW5nLgoJKHB1c2hfZGF0YV9hcmVhKTogTW92ZSB0byB2ODUwLWMuYy4KCShwb3BfZGF0YV9hcmVhKTogTW92ZSB0byB2ODUwLWMuYy4KCShtYXJrX2N1cnJlbnRfZnVuY3Rpb25fYXNfaW50ZXJydXB0KTogTW92ZSB0byB2ODUwLWMuYy4KCShHSFNfZGVmYXVsdF9zZWN0aW9uX25hbWVzKTogQWxsb3cgdG8gYmUgZXhwb3J0ZWQuCgkoR0hTX2N1cnJlbnRfc2VjdGlvbl9uYW1lcyk6IEFsbG93IHRvIGJlIGV4cG9ydGVkLgoJKGRhdGFfYXJlYV9zdGFja19lbGVtZW50cyk6IEFsbG93IHRvIGJlIGV4cG9ydGVkLgoJKGdoc19wcmFnbWFfc2VjdGlvbik6IE1vdmUgdG8gdjg1MC1jLmMuCgkoZ2hzX3ByYWdtYV9pbnRlcnJ1cHQpOiBNb3ZlIHRvIHY4NTAtYy5jLgoJKGdoc19wcmFnbWFfc3RhcnR0ZGEpOiBNb3ZlIHRvIHY4NTAtYy5jLgoJKGdoc19wcmFnbWFfc3RhcnRzZGEpOiBNb3ZlIHRvIHY4NTAtYy5jLgoJKGdoc19wcmFnbWFfc3RhcnR6ZGEpOiBNb3ZlIHRvIHY4NTAtYy5jLgoJKGdoc19wcmFnbWFfZW5kdGRhKTogTW92ZSB0byB2ODUwLWMuYy4KCShnaHNfcHJhZ21hX2VuZHNkYSk6IE1vdmUgdG8gdjg1MC1jLmMuCgkoZ2hzX3ByYWdtYV9lbmR6ZGEpOiBNb3ZlIHRvIHY4NTAtYy5jLgoKCSogY29uZmlnL3Y4NTAvdjg1MC1jLmM6IE5ldyBmaWxlOiBDb250YWlucyB2ODUwIHNwZWNpZmljCglwcmFnbWEgcGFyc2luZyBmdW5jdGlvbnMuCgoyMDAwLTExLTI0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnLmdjYyAoZXh0cmFfb2Jqcyk6IFJlbW92ZSBkdXBsaWNhdGUgZGVzY3JpcHRpb24uCgkoY190YXJnZXRfb2Jqcyk6IE5ldyB2YXJpYWJsZS4gIENvbnRhaW5zIHRhcmdldCBzcGVjaWZpYwoJb2JqZWN0IGZpbGVzIGZvciB0aGUgZ2NjIEMgY29tcGlsZXIgb25seS4KCShjeHhfdGFyZ2V0X29ianMpOiBOZXcgdmFyaWFibGUuICBDb250YWlucyB0YXJnZXQgc3BlY2lmaWMKCW9iamVjdCBmaWxlcyBmb3IgdGhlIGd4eCBDKysgY29tcGlsZXIgb25seS4KCgkqIGNvbmZpZ3VyZS5pbiAoY190YXJnZXRfb2Jqcyk6IFN1YnN0aXR1dGUgaW4gdGhlIG1ha2VmaWxlLgoJKGN4eF90YXJnZXRfb2Jqcyk6IFN1YnN0aXR1dGUgaW4gdGhlIG1ha2VmaWxlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoJKiBNYWtlZmlsZS5pbiAoQ19UQVJHRVRfT0JKUyk6IERlZmluZSBhbmQgaW5pdGlhbGlzZSBmcm9tCgljX3RhcmdldF9vYmpzLgoJKENYWF9UQVJHRVRfT0JKUyk6IERlZmluZSBhbmQgaW5pdGlhbGlzZSBmcm9tCgljeHhfdGFyZ2V0X29ianMuCgkoQ19BTkRfT0JKQ19PQkpTKTogSW5jbHVkZSBDX1RBUkdFVF9PQkpTLgoKCSogY3AvTWFrZS1sYW5nLmluIChDWFhfQ19PQkpTKTogSW5jbHVkZSBDWFhfVEFSR0VUX09CSlMpLgoKCSogdG0udGV4aSAoUkVHSVNURVJfVEFSR0VUX1BSQUdNQVMpOiBBZGQgcGFyYWdyYXBoIGV4cGxhaW5pbmcKCWFib3V0IGhvdyB0aGUgdXNlIG9mIHRoZSAnY19sZXgnIGZ1bmN0aW9uIHJlcXVpcmVzIHRoZSB1c2Ugb2YKCXRoZSB0YXJnZXQgc3BlY2lmaWMsIGxhbmd1YWdlIHNwZWNpZmljIG9iamVjdCBmaWxlcyBmZWF0dXJlIG9mCgl0aGUgY29uZmlndXJhdGlvbiBtZWNoYW5pc20uCgpGcmkgTm92IDI0IDE4OjUwOjU4IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBnY2MuYyAocHJvY2Vzc19jb21tYW5kKTogVXNlIEZfT0ssIG5vdCBSX09LLgoKMjAwMC0xMS0yNCAgQXJubyBKLiBLbGFhc3NlbiAgPGFybm9AaGVoby5zbnYuanVzc2lldS5mcj4KCgkqIGZsb3cuYyAocHJpbnRfcnRsX2FuZF9hYm9ydCk6IFJlbW92ZSBBTlNJaXNtLgoKRnJpIE5vdiAyNCAxOTo1NDozNiAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5oIChHRU5FUkFMX1JFR0lTVEVSX1AsCglHRU5FUkFMX09SX0FQX1JFR0lTVEVSX1AsIEZQX1JFR0lTVEVSX1AsIFhEX1JFR0lTVEVSX1AsCglGUF9PUl9YRF9SRUdJU1RFUl9QLCBGUF9BTllfUkVHSVNURVJfUCk6IE5ldyBtYWNyb3MuICBVc2UgdGhlbQoJYWxsIG92ZXIuCgkoU1BFQ0lBTF9SRUcpOiBSZW5hbWVkIHRvIFNQRUNJQUxfUkVHSVNURVJfUC4KCSogY29uZmlnL3NoL3NoLmM6IFVzZSBuZXcgbWFjcm9zLgoJKiBjb25maWcvc2gvc2gubWQ6IExpa2V3aXNlLgoKRnJpIE5vdiAyNCAxOTo0NjoxNiAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5tZDogQ2xvYmJlciBNQUNIX1JFRyBhbmQgTUFDTF9SRUcgaW4gU0ltb2RlLAoJaW5zdGVhZCBvZiBqdXN0IE1BQ0hfUkVHIGluIERJbW9kZS4gIEFsd2F5cyByZWZlciB0byBGUFNDUl9SRUcKCWluIFBTSW1vZGUuCgpGcmkgTm92IDI0IDIyOjM3OjQxIDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL2F2ci5jIChvdXRfdHN0aGksb3V0X3RzdHNpKTogVGVzdCBzaW1wbGlmaWNhdGlvbiBidWcKCWZpeGVkLgoJKG1hY2hpbmVfZGVwZW5kZW50X3Jlb3JnKTogV3Jvbmcgb3B0aW1pemF0aW9uIGJhc2VkIG9uCglOT1RJQ0VfVVBEQVRFX0NDIHJlbW92ZWQuCgpGcmkgTm92IDI0IDE5OjQ4OjA5IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiBqdW1wLmMgKGRlbGV0ZV9jb21wdXRhdGlvbik6IFJlLWluc3RhdGUgZGVsZXRpb24gb2YgZmVlZGluZyBpbnNuLgoJKGRlbGV0ZV9pbnNuKTogTG9vayBmb3IgUkVHX0xBQkVMIG5vdGVzLgoJKHJlZGlyZWN0X3RhYmxlanVtcCk6IERlbGV0ZSBmZWVkaW5nIGluc25zLgoKMjAwMC0xMS0yNCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChjYWxsX3BvcF8wLCBjYWxsX3BvcF8xLCBjYWxsX3ZhbHVlX3BvcF8wLAoJY2FsbF92YWx1ZV9wb3BfMSk6IE1ha2Ugc3VyZSBvcGVyYW5kIG51bWJlcnMgYXJlIGNvbnRpZ3VvdXMuCgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfcmFuZ2VfdGVzdCk6IEF2b2lkIGNyYXNoIGlmIExIUyBvciBSSFMgaXMgbnVsbC4KCgkqIHJlbG9hZDEuYyAoY29uZmxpY3RzX3dpdGhfb3ZlcnJpZGUpOiBOZXcgZnVuY3Rpb24uCgkoZW1pdF9pbnB1dF9yZWxvYWRfaW5zbnMpOiBVc2UgaXQgdG8gdGlnaHRlbiB0ZXN0IGZvciB2YWxpZGl0eQoJb2Ygc3Vic3RpdHV0aW5nIGludG8gb3V0cHV0IG9mIHByZXZpb3VzIGluc24uCgoJKiBoYWlmYS1zY2hlZC5jIChzdHJ1Y3QgcmVhZHlfbGlzdCk6IE5ldy4KCShyZWFkeV9sYXN0cG9zLCByZWFkeV9hZGQsIHJlYWR5X3JlbW92ZV9maXJzdCwgcmVhZHlfc29ydCk6IE5ldyBzdGF0aWMKCWZ1bmN0aW9ucy4KCShzY2hlZHVsZV9pbnNuKTogUmVwbGFjZSBhcmdzIFJFQURZIGFuZCBOX1JFQURZIHdpdGggYSBwb2ludGVyIHRvIGEKCXJlYWR5X2xpc3Q7IHJldHVybiB2b2lkLiAgVXNlIHRoZSBuZXcgZnVuY3Rpb25zIHRvIGFjY2VzcyB0aGUgcmVhZHkKCWxpc3QuICBBbGwgY2FsbGVycyBjaGFuZ2VkLgoJKHF1ZXVlX3RvX3JlYWR5LCBkZWJ1Z19yZWFkeV9saXN0KTogTGlrZXdpc2UuCgkoc2NoZWR1bGVfYmxvY2spOiBJbml0aWFsaXplIGEgcmVhZHlfbGlzdCBzdHJ1Y3R1cmUuICBVc2UgbmV3CglmdW5jdGlvbnMgdG8gYWNjZXNzIGl0LgoJKG1heF9wcmlvcml0eSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgkoc2NoZWR1bGVfaW5zbik6IERvbid0IHNldCBpdC4KCgkqIGMtY29tbW9uLmMgKHZlcmlmeV90cmVlKTogRG9uJ3QgcmVjdXJzZSBpbnRvIENPTlNUUlVDVE9Scy4KCgkqIGNvbWJpbmUuYyAoY2FudF9jb21iaW5lX2luc25fcCk6IE5ldyBmdW5jdGlvbi4KCSh0cnlfY29tYmluZSk6IFVzZSBpdC4KCgkqIE1ha2VmaWxlLmluIChjLWNvbW1vbi5vKTogRGVwZW5kIG9uICQoT0JTVEFDS19IKS4KCSogYy1jb21tb24uYyAoYy1vYnN0YWNrLmMpOiBJbmNsdWRlICJvYnN0YWNrLmgiLgoJKHN0cnVjdCByZXZlcnNlX3RyZWUpOiBEZWxldGUuCgkocmV2ZXJzZV9saXN0LCByZXZlcnNlX21heF9kZXB0aCk6IERlbGV0ZS4KCShidWlsZF9yZXZlcnNlX3RyZWUsIGNvbW1vbl9hbmNlc3RvciwgbW9kaWZ5X29rKTogRGVsZXRlIGZ1bmN0aW9ucy4KCShzdHJ1Y3QgdGxpc3QsIHN0cnVjdCB0bGlzdF9jYWNoZSk6IE5ldy4KCSh0bGlzdF9vYnN0YWNrLCB0bGlzdF9maXJzdG9iaiwgd2FybmVkX2lkcywgc2F2ZV9leHByX2NhY2hlKTogTmV3LgoJKGFkZF90bGlzdCwgbWVyZ2VfdGxpc3QsIHZlcmlmeV90cmVlLCB3YXJuaW5nX2NhbmRpZGF0ZV9wLAoJd2Fybl9mb3JfY29sbGlzaW9ucywgd2Fybl9mb3JfY29sbGlzaW9uc18xLCBuZXdfdGxpc3QpOiBOZXcKCXN0YXRpYyBmdW5jdGlvbnMuCgkodmVyaWZ5X3NlcXVlbmNlX3BvaW50cyk6IFJld3JpdHRlbi4KCSogZm9sZC1jb25zdC5jIChmb2xkKTogRG9uJ3QgbG9zZSBwb3NzaWJseSBpbXBvcnRhbnQgc2VxdWVuY2UKCXBvaW50cyB3aGVuIHJlbW92aW5nIG9uZSBhcm0gb2YgVFJVVEhfT1JJRl9FWFBScyBvciBUUlVUSF9BTkRJRl9FWFBScy4KCjIwMDAtMTEtMjQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGdjYy9jc2UuYyAoY3NlX2luc24pOiBSZW1vdmVkIGNvbnZlcnNpb24gb2YgUkVHX0VRVUlWIHRvIFJFR19FUVVBTAoJd2hlbiByZXZlcnNpbmcgYSByZWdpc3Rlci10by1yZWdpc3RlciBjb3B5LiAgUmV2ZXJzYWwgbm93IGRpc2FibGVkCgl3aGVuIHRoZSBwcmV2aW91cyBpbnN0cnVjdGlvbiBoYXMgYSBSRUdfRVFVSVYuCgoyMDAwLTExLTI0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogYy1wYXJzZS5pbiAodW5hcnlfZXhwcik6IE1vdmUgVkFfQVJHIGZyb20gaGVyZSAuLi4KCShwcmltYXJ5KTogLi4uIHRvIGhlcmUuCgoyMDAwLTExLTIzICBHcmFoYW0gU3RvdHQgIDxncmFoYW1zQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKHN0b3JlX2NvbnN0cnVjdG9yKTogSWYgYSBmaWVsZCBpcyBub24gYWRkcmVzc2FibGUgYW5kCgl0aGUgdGFyZ2V0IGlzIGEgTUVNIHVzZSBNRU1fQUxJQVNfU0VUIG90aGVyd2lzZSB1c2UgZ2V0X2FsaWFzX3NldC4KCjIwMDAtMTEtMjMgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogZmxvdy5jIChwcmludF9ydGxfYW5kX2Fib3J0KTogTmV3IGZ1bmN0aW9uLgoJKHZlcmlmeV93aWRlX3JlZywgdmVyaWZ5X2xvY2FsX2xpdmVfYXRfc3RhcnQpOiBUcnkgdG8gZHVtcCBtb3JlCglpbmZvcm1hdGlvbiBiZWZvcmUgYWJvcnRpbmcuCgoyMDAwLTExLTIzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGVtaXQtcnRsLmMgKGdlbl9sb3dwYXJ0X2NvbW1vbik6IFVzZSB3b3JkIDAgaWYgcmVnaXN0ZXIgbW9kZQoJaXMgbmFycm93ZXIgdGhhbiByZXF1ZXN0ZWQgbW9kZS4KCShnZW5faGlnaHBhcnQpOiBBYm9ydCBpZiByZWdpc3RlciBtb2RlIGlzIG5hcnJvd2VyIHRoYW4KCXJlcXVlc3RlZCBtb2RlLgoKMjAwMC0xMS0yMyAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtc0ByZWRoYXQuY29tPgoKCSogY3NlLmMgKGNzZV9pbnNuKTogSW5pdGlhbGlzZSBhbGwgcmVnY29zdCB2YXJpYWJsZXMuCglGaXggYSB0eXBvIGFkZCBtaXNzaW5nICc9Jy4KCU9ubHkgY29tcGFyZSBjb3N0cyBpZiB0aGVyZSBpcyBhIHJlcGxhY2VtZW50IGluc24uCgpUaHUgTm92IDIzIDA0OjMzOjMzIDIwMDAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZmluYWwuYyAob3V0cHV0X2FkZHJfY29uc3QpIFtMQUJFTF9SRUZdOiBTaW1wbGlmeS4KCVtNSU5VU106IEVuY2xvc2Ugbm9uLUNPTlNUX0lOVHMgaW4gcGFyZW50aGVzZXMuCglbZGVmYXVsdF06IFRyeSBPVVRQVVRfQUREUl9DT05TVF9FWFRSQS4KCSogdG0udGV4aSAoT1VUUFVUX0FERFJfQ09OU1RfRVhUUkEpOiBEb2N1bWVudCBpdC4KCSogdmFyYXNtLmMgKGRlY29kZV9ydHhfY29uc3QpIFtDT05TVF06IElmIGl0J3Mgbm90IHNvbWV0aGluZwoJUExVUyBvciBNSU5VUyBhIENPTlNUX0lOVCwgdXNlIHRoZSB3aG9sZSBDT05TVCB3aXRoIG9mZnNldCAwCglpbnN0ZWFkIG9mIGFib3J0KClpbmcuCgkqIHNoLmMgKG91dHB1dF9waWNfYWRkcl9jb25zdCk6IFJlbW92ZWQuICBGaXhlZCBhbGwgY2FsbGVycy4KCSogc2guaCAoT1VUUFVUX0FERFJfQ09OU1RfRVhUUkEpOiBOZXcuICBIYW5kbGUgdGhlIFVOU1BFQ3MKCWZvcm1lcmx5IGhhbmRsZWQgaW4gb3V0cHV0X3BpY19hZGRyX2NvbnN0LgoJKiBzaC5tZCAoc3ltX2xhYmVsMnJlZywgc3ltUExUX2xhYmVsMnJlZyk6IEVuY2xvc2UgVU5TUEVDCglvcGVyYW5kcyBvZiBNSU5VUyBpbiBDT05TVHMgc28gdGhhdCBkZWNvZGVfcnR4X2NvbnN0KCkgd2lsbAoJYWNjZXB0IHRoZW0uCgpUaHUgTm92IDIzIDA0OjEwOjMwIDIwMDAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLm1kIChtb3ZhX2NvbnN0KTogTmV3IHBhdHRlcm4uCgkoR09UYWRkcjJwaWNyZWcpOiBVc2UgaXQuCgkqIGNvbmZpZy9zaC9zaC5jIChicm9rZW5fbW92ZSk6IE1hdGNoIGl0LgoJKG1vdmFfcCk6IERvbid0IG1hdGNoIGl0LgoJKG1hY2hpbmVfZGVwZW5kZW50X3Jlb3JnKTogQWRqdXN0IGl0LgoKVGh1IE5vdiAyMyAwMjowOTowOSAyMDAwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5oIChGSVJTVF9HRU5FUkFMX1JFRywgTEFTVF9HRU5FUkFMX1JFRyk6IE5ldy4KCU1vdmVkIG1vc3QgcmVnaXN0ZXItbnVtYmVyICNkZWZpbmVzLi4uCgkqIGNvbmZpZy9zaC9zaC5tZCAoZGVmaW5lX2NvbnN0YW50cyk6IC4uLiBoZXJlLiAgVXNlIG1hY3JvcyB0bwoJcmVmZXIgdG8gcmVnaXN0ZXJzIGFuZCB1bnNwZWNzLgoJKiBjb25maWcvc2gvc2guYzogTGlrZXdpc2UuCgpUaHUgTm92IDIzIDAxOjAxOjMyIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoSE9TVF9DRkxBR1MpOiBBZGQgLURHRU5FUkFUT1JfRklMRS4KCShydGwubywgcHJpbnQtcnRsLm8sIGJpdG1hcC5vLCBvYnN0YWNrLm8pOiBCdWlsZCB3aXRoIC1ER0VORVJBVE9SX0ZJTEUuCgkoYWxsb2NhLm8sIHZmcHJpbnRmLm8sIGdnYy1ub25lLm8sIGVycm9ycy5vKTogTGlrZXdpc2UuCgkoc3BsYXktdHJlZS5vLCBoYXNoLm8pOiBMaWtld2lzZS4KCUdDT05GSUdfSDogTmV3LgoJKHJ0bC5vLCBwcmludC1ydGwubyk6IERlcGVuZCBvbiAkKEdDT05GSUdfSCkgaW5zdGVhZCBvZiAkKENPTkZJR19IKS4KCShiaXRtYXAubywgb2JzdGFjay5vLCB2ZnByaW50Zi5vLCBnZ2Mtbm9uZS5vLCBlcnJvcnMubyk6IExpa2V3aXNlLgoJKGhhc2h0YWIubyk6IExpa2V3aXNlLgoJKGdjb3Yubyk6IERlcGVuZCBvbiAkKENPTkZJR19IKS4KCSogY29uZmlndXJlLmluOiAjaW5jbHVkZSBpbnNuLWNvZGVzLmggaW4gdG0uaC4KCjIwMDAtMTEtMjIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fZW5jb2RlX2NhbGxfYXR0cmlidXRlKTogTWFrZSAnbmV3c3RyJyBhCgljb25zdCBjaGFyICogdG8gYXZvaWQgYSBjb21waWxlIHRpbWUgd2FybmluZy4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kIChkZWZpbmVfY29uc3RhbnRzKTogRGVmaW5lIHN5bWJvbGljIG5hbWVzIGZvcgoJdGhlIGxpbmsgcmVnaXN0ZXIsIGxhc3QgaW50ZWdlciByZWdpc3RlciBhbmQgdGhlIGZha2UgQ0MgcmVnaXN0ZXIuCglVcGRhdGUgcGF0dGVybnMgdG8gdXNlIHRoZXNlIHN5bWJvbGljIG5hbWVzLgoKMjAwMC0xMS0yMiAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAodHJpZ3JhcGhfb2spOiBFbnN1cmUgd2UgZG9uJ3Qgd2FybiB0d2ljZS4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfYnVmZmVyKTogTmV3IG1lbWJlciBsYXN0X1d0cmlncmFwaHMuCgoyMDAwLTExLTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogaGFpZmEtc2NoZWQuYyAoc2NoZWRfYW5hbHl6ZV8xKTogRG9uJ3Qgc3BlY2lhbC1jYXNlIGNhbGxzCglmb3IgY2xvYmJlcmluZyByZWdpc3RlcnMuCgkoc2NoZWRfYW5hbHl6ZV8yKTogTGlrZXdpc2UuCgkoc2NoZWRfYW5hbHl6ZSk6IFphcCByZWdfbGFzdF91c2VzIGFuZCByZWdfbGFzdF9zZXRzIGFmdGVyIGNhbGxzLgoKMjAwMC0xMS0yMiAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQHNpYnl0ZS5jb20+CgkgICAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBnY2MuYyAodmFsaWRhdGVfc3dpdGNoZXMpOiBWYWxpZGF0ZSBtdWx0aXBsZSBzd2l0Y2hlcyBuYW1lZAoJaW4gJ3wnIChvcikgZXhwcmVzc2lvbnMgaW4gc3BlY3MuCgkoaGFuZGxlX2JyYWNlcyk6IElmIG1vcmUgdGhhbiAxIGFsdGVybmF0aXZlIGluIGEgJ3wnIHNwZWMKCW1hdGNoZXMsIGNhbGwgZG9fc3BlYzEganVzdCBvbmNlLgoKMjAwMC0xMS0yMiAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHJlZGhhdC5jb20+CgoJKiBkMzB2LmggKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCBkb2N1bWVudGF0aW9uIHN0cmluZ3MuCgkoVEFSR0VUX09QVElPTlMpOiBEaXR0by4KCShPUFRJTUlaQVRJT05fT1BUSU9OUyk6IFRlbXBvcmFyaWx5IHR1cm4gb2ZmIC1mcmVuYW1lLXJlZ2lzdGVycyBpZgoJLU8zLgoKV2VkIE5vdiAyMiAwNjo0MDo1NiAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBwYS5jIChocHBhX2VuY29kZV9sYWJlbCk6IEFjY291bnQgZm9yIGFkZGl0aW9uIG9mIGVuY29kaW5nCgljaGFyYWN0ZXIgd2hlbiBhbGxvY2F0aW5nIHBlcnNpc3RlbnQgc3BhY2UgZm9yIHRoZSBuZXcgbGFiZWwKCW5hbWUuCgoyMDAwLTExLTIyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZy5nY2MsIGNvbmZpZ3VyZS5pbjogRXhwdW5nZSByZW1haW5pbmcKCXRyYWNlcyBvZiBmYWNpbGl0eSBmb3IgcnVubmluZyBNRCBmaWxlcyB0aHJvdWdoIEMgcHJlcHJvY2Vzc29yLgoKMjAwMC0xMS0yMiAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ2Nvdi50ZXhpOiBBZGQgbWFnaWMgY29tbWVudHMgZm9yIHRleGkycG9kLnBsLgoJKiBNYWtlZmlsZS5pbjogQWRkIHJ1bGVzIHRvIGdlbmVyYXRlIGFuZCBpbnN0YWxsIGdjb3YuMS4KCSogZ2Nvdi4xOiBOZXcgKGdlbmVyYXRlZCkgZmlsZS4KCjIwMDAtMTEtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiByZWdyZW5hbWUuYyAoc2Nhbl9ydHhfcmVnKTogVGVybWluYXRlIHRoZSBjaGFpbiByYXRoZXIgdGhhbgoJYWJvcnQgb24gbWFya19yZWFkIHdpdGggTk9fUkVHUy4KCjIwMDAtMTEtMjEgIE1pa2UgU3R1bXAgIDxtcnNAd3JzLmNvbT4KCgkqIGZpeGluYy9maXh0ZXN0cy5jIChURVNUX0ZPUl9GSVhfUFJPQ19IRUFEKTogRml4IHRvIGFsbG93Cgljb21waWxhdGlvbiB3aXRoIG9sZGVyIGNvbXBpbGVycywgc3VjaCBhcyAvYmluL2NjIG9uIFN1bk9TLgoJKiBmaXhpbmMvZml4Zml4ZXMuYyAoRklYX1BST0NfSEVBRCk6IERpdHRvLgoKMjAwMC0xMS0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHZhcmFzbS5jIChyZWNvcmRfY29uc3RhbnQpOiBQYWQgdGhlIGNvbnN0cnVjdGVkCgljb25zdGFudF9kZXNjcmlwdG9yIGFwcHJvcHJpYXRlbHkuCgpXZWQgTm92IDIyIDAwOjUyOjU1IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiBydGwuaCAodHJhdmVyc2VfbWRfY29uc3RhbnRzKTogRGVjbGFyZS4KCShzdHJ1Y3QgbWRfY29uc3RhbnQpOiBEZWZpbmUuCgkqIE1ha2VmaWxlLmluIChIT1NUX1JUTCk6IEFkZCBoYXNodGFiLm8gLgoJKE9CSlMpOiBBZGQgaGFzaHRhYi5vIC4KCShoYXNodGFiLm8pOiBOZXcgcnVsZS4KCShydGwubyk6IERlcGVuZHMgb24gSEFTSFRBQl9ILgoJKiBydGwuYyAoaGFzaHRhYi5oKTogI2luY2x1ZGUuCgkobWRfY29uc3RhbnRzKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShkZWZfaGFzaCwgZGVmX25hbWVfZXFfcCwgcmVhZF9jb25zdGFudHMpOiBOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCSh0cmF2ZXJzZV9tZF9jb25zdGFudHMpOiBOZXcgZnVuY3Rpb24uCgkocmVhZF9uYW1lKTogRG8gY29uc3RhbnQgZXhwYW5zaW9uLgoJKHJlYWRfcnR4KTogUmVjb2duaXplIGRlZmluZV9jb25zdGFudHMuCgkqIGdlbmNvZGVzLmMgKHByaW50X21kX2NvbnN0YW50KTogTmV3IGZ1bmN0aW9uLgoJKG1haW4pOiBFbWl0ICNkZWZpbmVzIGZvciBhbGwgY29uc3RhbnQgZGVmaW5pdGlvbnMgZW5jb3VudGVyZWQuCgkqIG1kLnRleGkgKENvbnN0YW50IERlZmluaXRpb25zKTogTmV3IG5vZGUuCgkqIGdlbnN1cHBvcnQuYyAoeGNhbGxvYyk6IE5ldyBmdW5jdGlvbi4KCjIwMDAtMTEtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfc3BsaXRfdGZtb2RlX2Zyb2JzaWduKTogTmV3LgoJKiBjb25maWcvYWxwaGEvYWxwaGEtcHJvdG9zLmg6IERlY2xhcmUgaXQuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAoYWJzdGZfaW50ZXJuYWwpOiBVc2UgaXQuCgkobmVndGZfaW50ZXJuYWwpOiBMaWtld2lzZS4KCShhbmRub3RkaTMpOiBVbnN0YXIgdGhlIG5hbWUuCgkobW92dGZfaW50ZXJuYWwpOiBBZGQgby9HIGFsdGVybmF0aXZlLgoKMjAwMC0xMS0yMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIHN0cmluZ3Bvb2wuYyAoc3RyaW5ncG9vbF9zdGF0aXN0aWNzKTogQWxzbyByZXBvcnQgbnVtYmVyIGFuZAoJcGVyY2VudGFnZSBvZiBlbnRyaWVzIHdoaWNoIGFyZSBpZGVudGlmaWVycy4KCjIwMDAtMTEtMjEgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogZ2NzZS5jIChob2lzdF9leHByX3JlYWNoZXNfaGVyZV9wKTogRG8gbm90IG1hcmsgZXhwcl9iYiBhcwoJdmlzaXRlZCBiZWZvcmUgdmlzaXRpbmcgaXQuCgoyMDAwLTExLTIxICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0uaDogQWNjZXB0IFRBUkdFVF9DUFVfYXJtOXRkbWksCglUQVJHRVRfQ1BVX3N0cm9uZ2FybTExMCBhbmQgVEFSR0VUX1NQVV9zdHJvbmdhcm0xMTAwLgoKCSogY29uZmlnLmdjYzogQWNjZXB0IC0td2l0aC1jcHU9YXJtOSBhbmQgLS13aXRoLWNwdT1hcm05dGRtaS4KCjIwMDAtMTEtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLWNvbW1vbi5jIChjX3Vuc2FmZV9mb3JfcmVldmFsKTogTmV3IGZ1bmN0aW9uLgoJKGFkZF9jX3RyZWVfY29kZXMpOiBSZWdpc3RlciBpdC4KCSogYy1jb21tb24uaDogRGVjbGFyZSBpdC4KCSogdHJlZS5jIChsYW5nX3Vuc2FmZV9mb3JfcmVldmFsKTogTmV3IGhvb2suCgkodW5zYWZlX2Zvcl9yZWV2YWwpOiBDYWxsIGl0LgoJKiB0cmVlLmg6IERlY2xhcmUgaXQuCgoyMDAwLTExLTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpMzg2X3NpbXBsaWZ5X2R3YXJmX2FkZHIpOiBTaW1wbGlmeSBAR09UCglyZWZlcmVuY2VzIGFzIHdlbGwuCgoyMDAwLTExLTIxICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGRvX2luY2x1ZGVzOiBSZXZlcnQgdG8gdXNpbmcgY3BwX3JlYWRfZmlsZS4KCjIwMDAtMTEtMjEgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogbG9vcC5jIChjb25zZWNfc2V0c19naXYpOiBJZiB0aGUgcmVnIHdlJ3JlIGV4YW1pbmluZyBpcyBhbnl0aGluZwoJYnV0IFVOS05PV05fSU5EVUNULCBkbyBub3RoaW5nLgoJUmVzZXQgdGhlIHJlZydzIHR5cGUgdG8gVU5LTk9XTl9JTkRVQ1QgYmVmb3JlIHJldHVybmluZy4KCglNb3N0bHkgZnJvbSBWbGFkaW1pciBNYWthcm92ICh2bWFrYXJvdkByZWRoYXQuY29tKQoJKiBpYTY0Lm1kIChhdHRyIGl0YW5pdW1fY2xhc3MpOiBEZWZpbmUgaW5zbiB0eXBlcyBhcyBkZXNjcmliZWQgaW4KCUl0YW5pdW0gZG9jcy4KCShhbGwgaW5zbiBwYXR0ZXJucyk6IFVzZSBpdGFuaXVtX2NsYXNzLCBub3QgdHlwZSBhdHRyaWJ1dGVzLgoJT2NjYXNpb25hbGx5IHNwbGl0IGFsdGVybmF0aXZlcyBhcyBuZWNlc3NhcnkuCgkoYXR0ciB0eXBlKTogQ29tcHV0ZSBmcm9tIG5ldyBhdHRyIGl0YW5pdW1fY2xhc3MuCgoyMDAwLTExLTIxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB0cmFkY3BwLmMgKG91dHB1dF9saW5lX2NvbW1hbmQpOiBNYXJrIHN5c3RlbSBoZWFkZXJzIGFzIHN1Y2ggaW4KCWBsaW5lJyBjb21tYW5kcy4KCjIwMDAtMTEtMjEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmluIChIQVZFX0FTX0RXQVJGMl9ERUJVR19MSU5FKTogU3BhcmMgaGFzIC5maWxlLy5sb2MKCXN1cHBvcnQgaW4gYXMgYXMgd2VsbC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0xMS0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtbGV4LmMgKG9yaWdfZmlsZW5hbWUpOiBOZXcgdmFyaWFibGUuCgkoaW5pdF9jX2xleCk6IFNldCBpdC4gIE1vdmUgY2FsbCB0byBjcHBfc3RhcnRfcmVhZCAuLi4KCSh5eXBhcnNlKTogLi4uIGhlcmUuICBOZXcgZnVuY3Rpb24uCgkqIGMtcGFyc2UuaW4gKHl5cGFyc2VfMSk6IFJlbmFtZSB0aGUgcGFyc2VyIGVudHJ5IHBvaW50LgoJKiBjLXRyZWUuaDogRGVjbGFyZSBpdC4KCjIwMDAtMTEtMjEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZXhwci5jIChkb19jb21wYXJlX2FuZF9qdW1wKTogSWYgb3AwIHdhcyByZXBsYWNlZCBieSBwcm9tb3RlZAoJaW50ZWdlciBjb25zdGFudCwgdXNlIHR5cGUgb2Ygb3AxIGZvciBjb21wYXJpc29uLgoKMjAwMC0xMS0yMCAgU3RhbiBTaGVicyAgPHNoZWJzQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAveG0tZGFyd2luLmg6IE5ldyBmaWxlLCBEYXJ3aW4gaG9zdCBkZWZpbml0aW9ucy4KCSogY29uZmlnL3JzNjAwMC94LWRhcndpbjogTmV3IGZpbGUsIERhcndpbiBob3N0IGZyYWdtZW50LgoJKiBjb25maWcuZ2NjIChwb3dlcnBjLSotZGFyd2luKik6IE5ldyBob3N0LgoJKiBzeXN0ZW0uaCAoSEFWRV9ERVNJR05BVEVEX0lOSVRJQUxJWkVSUyk6ICBBbGxvdyB0aGlzIHRvIGJlCglvdmVycmlkZGVuIGJ5IGEgY29uZmlnIGZpbGUuCgoyMDAwLTExLTIwICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcG1hY3JvLmMgKHBhc3RlX3Rva2Vucyk6IFJlbmFtZSBmcm9tIHBhc3RlX3BheWxvYWRzLgoJQ2hhbmdlIHRva2VuIHR5cGUgYWZ0ZXIgcGFzdGluZyBzcGVsbGluZ3MuCgkocGFzdGVfYWxsX3Rva2Vucyk6IFVzZSBpdC4KCSogZ2NjLmRnL2NwcC9wYXN0ZTIuYzogVXBkYXRlIHRlc3QuCgkqIG9iamMvZXhlY3V0ZS9wYXN0ZS5tOiBOZXcgdGVzdC4KCjIwMDAtMTEtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBkd2FyZi5oIChGTVRfQ09ERSk6IEFkanVzdCBhcmd1bWVudCBvcmRlcjsgZml4IG1hcHBpbmcgdG8KCWR3YXJmX3N1YnNjcl9kYXRhX2Zvcm1hdHMgYml0cy4KCSogZHdhcmZvdXQuYyAoc2ltcGxlX3R5cGVfc2l6ZV9pbl9iaXRzKTogSGFuZGxlIGEgdHlwZSB3aXRoCglubyBjb21wdXRlZCBzaXplIGFzIHNpemUgemVyby4KCShmaWVsZF9ieXRlX29mZnNldCk6IExpa2V3aXNlLgoJKHN1YnNjcmlwdF9kYXRhX2F0dHJpYnV0ZSk6IEhhbmRsZSBhIHJhbmdlIHdpdGggbm8gdXBwZXIgYm91bmQuCgoyMDAwLTExLTIwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBnYW5zaWRlY2wuaCAoY29uc3QpOiBDaGVjayBfX1NURENfXyBiZWZvcmUgdW5kZWYnaW5nIGBjb25zdCcuCgoyMDAwLTExLTIwICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLXR5cGVjay5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogV2hlbiBtZXJnaW5nIHR5cGUKCXF1YWxpZmllcnMgZm9yIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zIGJldHdlZW4gYSBwb2ludGVyIGFuZCBhCglwb2ludGVyIHRvIGEgdm9pZCB0eXBlLCBtZXJnZSB0aGUgcXVhbGlmaWVycyBvbiB0aGUgdGFyZ2V0IHR5cGVzCglyYXRoZXIgdGhhbiB0aGUgcG9pbnRlciB0eXBlLiAgUmVtb3ZlIG9ic29sZXRlIGNvbmRpdGlvbmVkIG91dAoJY29kZS4KCjIwMDAtMTEtMjAgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogYy1sYW5nLmMgKGxhbmdfaW5pdF9vcHRpb25zKTogVXBkYXRlIGNhbGwgdG8KCWNwcF9yZWFkZXJfaW5pdC4KCSogY3BwbWFpbi5jIChtYWluKTogU2ltaWxhcmx5LgoJKiBmaXgtaGVhZGVyLmMgKHJlYWRfc2Nhbl9maWxlKTogU2ltaWxhcmx5LgoJKiBjcC9sZXguYyAobGFuZ19pbml0X29wdGlvbnMpOiBTaW1pbGFybHkuCgkqIG9iamMvb2JqYy1hY3QuYyAobGFuZ19pbml0X29wdGlvbnMpOiBTaW1pbGFybHkuCgkqIGNwcGV4cC5jIChwYXJzZV9udW1iZXIpOiBPbmx5IHdhcm4gZm9yIHVuZXh0ZW5kZWQgQzg5LgoJKiBjcHBpbml0LmMgKHNldF9sYW5nKTogTmV3IGZ1bmN0aW9uLgoJKGNwcF9yZWFkZXJfaW5pdCk6IFRha2UgYSBMQU5HIGFyZ3VtZW50IGFuZCBwYXNzIGl0IHRvIHNldF9sYW5nLgoJKENPTU1BTkRfTElORV9PUFRJT05TKTogTmV3IG9wdGlvbiBzdGQ9YysrOTguCgkoY3BwX2hhbmRsZV9vcHRpb24pOiBVc2Ugc2V0X2xhbmcuCgkqIGNwcGxleC5jIChfY3BwX2xleF90b2tlbik6IFdhcm4gcGVkYW50aWNhbGx5IGlmIG5vdCBDOTkuCgkqIGNwcGliLmggKGVudW1fY19sYW5nKTogTmV3IGVudW1lcmF0aW9uLiAgVXBkYXRlIGNvbW1lbnRzLgoKMjAwMC0xMS0yMCAgV2lsbCBDb2hlbiAgPHdjb2hlbkByZWRoYXQuY29tPgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBDbGVhciB0YXJnZXQgb25seSB3aGVuIHRhcmdldCBpcyBpbgoJaGFyZCByZWdpc3RlciBhbmQgY3VycmVudF9mdW5jdGlvbl9jaGVja19tZW1vcnlfdXNhZ2UgaXMgc2V0LgoKMjAwMC0xMS0yMCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IFJ1biBvcHRpbWl6ZV9tb2RlX3N3aXRjaGluZyBldmVuCglpZiBub3Qgb3B0aW1pemluZy4KCSogc2guYyAoZW1pdF9zZl9pbnNuLCBlbWl0X2RmX2luc24pOiBKdXN0IGNhbGwgZW1pdF9pbnNuLgoKMjAwMC0xMS0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNydHN0dWZmLmMgKGZvcmNlX3RvX2RhdGEpOiBVc2UgYXJyYXkgc2l6ZSAxIG5vdCAwLgoKCSogZHdhcmYyb3V0LmMgKHNpbXBsZV90eXBlX3NpemVfaW5fYml0cyk6IEhhbmRsZSBhIHR5cGUgd2l0aAoJbm8gY29tcHV0ZWQgc2l6ZSBhcyBzaXplIHplcm8uCgkoZmllbGRfYnl0ZV9vZmZzZXQpOiBMaWtld2lzZS4KCjIwMDAtMTEtMjAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGNvbmZpZy5nY2M6IEZpeCBhbm90aGVyIHR5cG8uCgoyMDAwLTExLTE5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogU3VwcG9ydCBmbGV4aWJsZSBhcnJheSBtZW1iZXJzLgoJVXNlIG9wZW4tZW5kZWQgcmFuZ2VzIGZvciB0aGVzZSBhbmQgemVyby1sZW5ndGggYXJyYXlzLgoJKiBjLXR5cGVjay5jIChwdXNoX2luaXRfbGV2ZWwpOiBWYWxpZGF0ZSB0aGUgY29udGV4dCBvZgoJaW5pdGlhbGl6YXRpb24gb2YgYSB6ZXJvLWxlbmd0aCBhcnJheS4KCSogdHJlZS5jIChpbnRfZml0c190eXBlX3ApOiBCZSBwcmVwYXJlZCBmb3IgbWlzc2luZyBib3VuZHMuCgkqIHZhcmFzbS5jIChhcnJheV9zaXplX2Zvcl9jb25zdHJ1Y3Rvcik6IE5ldy4KCShvdXRwdXRfY29uc3RydWN0b3IpOiBVc2UgaXQgZm9yIGFycmF5cyBvZiB1bnNwZWNpZmllZCBsZW5ndGguCgkqIGV4dGVuZC50ZXhpIChaZXJvIExlbmd0aCk6IE1lbnRpb24gQzk5IGZsZXhpYmxlIGFycmF5IG1lbWJlcnMuCglEb2N1bWVudCBpbml0aWFsaXphdGlvbiBpbiBhIHRvcC1sZXZlbCBzdHJ1Y3QgYXMgdmFsaWQuCgoyMDAwLTExLTE5ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjb25maWcuZ2NjLCBpbnZva2UudGV4aTogRml4IGVycm9ycyBpbiBzcGVsbGluZyBvZiAiZGVwcmVjYXRlZCIuCgoJKiBhbGlhcy5jIChtZW1zX2luX2Rpc2pvaW50X2FsaWFzX3NldHNfcCk6IERvIHVzZSBhbGlhcyBzZXRzIGluCglzdGRhcmcgYW5kIHZhcmFyZ3MgZnVuY3Rpb25zLgoKMjAwMC0xMS0xOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIGdjYy5jIChwcm9jZXNzX2NvbW1hbmQpOiBEZWZpbmUgJ2onIHZhcmlhYmxlIHdoZW4KCU1PRElGWV9UQVJHRVRfTkFNRSBpcyBkZWZpbmVkLgoKMjAwMC0xMS0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHN0b3ItbGF5b3V0LmMgKHZhcmlhYmxlX3NpemUpOiBPbmx5IHB1dCBTQVZFX0VYUFJzIG9uIHBlbmRpbmdfc2l6ZXMuCgoyMDAwLTExLTE5ICBGcmFueiBTaXJsICA8RnJhbnouU2lybC1rZXJuZWxAbGF1dGVyYmFjaC5jb20+CgoJKiByczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogRml4IHN0cmluZyBsZW5ndGgKCWNhbGN1bGF0aW9uIGFuZCBhbGxvY2F0aW9uLgoKMjAwMC0xMS0xOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoY19nZXRzdHIpOiBDb25zdGlmeSB2YXJpYWJsZS4KCSogZ21vbi1zb2wyLmMgKF9tY2xlYW51cCk6IENvbW1lbnQgb3V0ICNlbmRpZiBsYWJlbHMuCgkqIGNvbmZsaWN0LmMgKGNvbnN0X2NvbmZsaWN0X2dyYXBoX2FyYyk6IE5ldyB0eXBlZGVmLgoJKGFyY19oYXNoLCBhcmNfZXEpOiBBdm9pZCBuZWVkbGVzc2x5IGNhc3RpbmcgYXdheSBjb25zdC1uZXNzLgoJKiBjcHBtYWNyby5jIChidWlsdGluX21hY3JvKTogTGlrZXdpc2UuCgkqIGR3YXJmMm91dC5jIChvdXRwdXRfY29tcF91bml0KTogQ29uc3RpZnkgdmFyaWFibGUuCgkqIGZpeC1oZWFkZXIuYyAodl9mYXRhbCk6IEFkZCBBVFRSSUJVVEVfUFJJTlRGLgoJKiBwcm90b2l6ZS5jIChJU19TQU1FX1BBVEhfQ0hBUik6IFVzZSBUT1VQUEVSLCBub3QgdG91cHBlci4KCSogc3NhLmMgKHNzYV9yZW5hbWVfZnJvbV9oYXNoX2Z1bmN0aW9uKTogQXZvaWQgbmVlZGxlc3NseSBjYXN0aW5nCglhd2F5IGNvbnN0LW5lc3MuCgkqIHRyYWRjcHAuYyAocmVzY2FuLCBkb19saW5lLCBtYWNyb2V4cGFuZCwgbWFjYXJnKTogVXNlCglJU0FMTlVNL0lTRElHSVQvSVNQUklOVCwgbm90IGlzYWxudW0vaXNkaWdpdC9pc3ByaW50LgoJKiB2YXJhc20uYyAoY29uc3Rfc3RyX2h0YWJfaGFzaCwgY29uc3Rfc3RyX2h0YWJfZXEsCgljb21wYXJlX2NvbnN0YW50XzEsIHJlY29yZF9jb25zdGFudF8xKTogQ29uc3RpZnkuCgoyMDAwLTExLTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogU3BlY2lhbCBjYXNlIHRoZSBjcmVhdGlvbiBvZiBhbgoJaW5kZXggZm9yIGEgemVyby1sZW5ndGggYXJyYXkuCgkqIHRyZWUuYyAoYnVpbGRfaW5kZXhfdHlwZSk6IFJldmVydCBPY3QgMjAgY2hhbmdlLgoKMjAwMC0xMS0xOCAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBjb25maWcvYXZyL2F2ci1wcm90b3MuaCAoYXZyX291dHB1dF9hZGRyX3ZlY19lbHQpOiBQcm90b3R5cGUuCgkqIGNvbmZpZy9hdnIvYXZyLmMgKGp1bXBfdGFibGVzX3NpemUpOiBOZXcgdmFyaWFibGUuCgkoZnVuY3Rpb25fcHJvbG9ndWUpOiBJbml0aWFsaXplIGl0IGFzIDAuCgkoZnVuY3Rpb25fZXBpbG9ndWUpOiBBZGQgaXQgdG8gZnVuY3Rpb25fc2l6ZS4KCShhdnJfb3V0cHV0X2FkZHJfdmVjX2VsdCk6IE5ldyBmdW5jdGlvbi4gIENvdW50IHdvcmRzIGluIGp1bXAKCXRhYmxlcyBpbiBqdW1wX3RhYmxlc19zaXplLiAgTW92ZSBjb2RlIC4uLgoJKiBjb25maWcvYXZyL2F2ci5oIChBU01fT1VUUFVUX0FERFJfVkVDX0VMVCk6IC4uLiBmcm9tIGhlcmUuCglDYWxsIGF2cl9vdXRwdXRfYWRkcl92ZWNfZWx0IGluc3RlYWQuCgkqIGNvbmZpZy9hdnIvYXZyLm1kICh0YWJsZWp1bXApOiBSZW1vdmUgZGlzYWJsZWQgZGVmaW5lX2V4cGFuZC4KCjIwMDAtMTEtMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuaW46IE1ha2UgLS1lbmFibGUtbmV3LWd4eC1hYmkgdGhlIGRlZmF1bHQuCgkqIGNvbmZpZ3VyZTogTGlrZXdpc2UuCgoyMDAwLTExLTE4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAodHJhZGNwcC5vLCB0cmFkY2lmLm8pOiBEZXBlbmQgb24gdHJhZGNwcC5oLgoKCSogdHJhZGNpZi55OiBJbmNsdWRlIHRyYWRjcHAuaC4gIENvbnN0aWZ5LiAgTWFrZSBmdW5jdGlvbnMgc3RhdGljLgoJTW92ZSBleHRlcm4gZnVuY3Rpb24gZGVjbGFyYXRpb25zIHRvIHRyYWRjcHAuaC4KCgkqIHRyYWRjcHAuYzogTGlrZXdpc2UuCgoJKiB0cmFkY3BwLmg6IE5ldyBmaWxlLgoKMjAwMC0xMS0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1kZWNsLmMgKGNoZWNrX2Zvcl9sb29wX2RlY2xzKTogTmV3IGZ1bmN0aW9uLgoJKiBjLXBhcnNlLmluIChmb3JfaW5pdF9zdG10KTogTmV3LgoJKHNlbGVjdF9vcl9pdGVyX3N0bXQpOiBVc2UgZm9yX2luaXRfc3RtdC4KCSogYy10cmVlLmggKGNoZWNrX2Zvcl9sb29wX2RlY2xzKTogTmV3IGRlY2xhcmF0aW9uLgoKMjAwMC0xMS0xOCAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBpbml0LmM6IFVwZGF0ZSBjb21tZW50cy4KCShjcHBfcmVhZGVyX2luaXQpOiBNYWtlIC1pbWFjcm8gYW5kIC1pbmNsdWRlIHVzZSB0aGUgc3RhbmRhcmQKCSNpbmNsdWRlICIiIHNlYXJjaCBwYXRoLgoJKGRvX2luY2x1ZGVzKTogTmV3IGZ1bmN0aW9uLgoKMjAwMC0xMS0xOCAgQmVuIEVsbGlzdG9uICA8YmplQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvY3J0MS5hc20gKHN0YXJ0X2wpOiBNb3ZlIFBDLXJlbGF0aXZlIG1vdmUgaW5zdHJ1Y3Rpb24KCW91dCBvZiBhIGJyYW5jaCBkZWxheSBzbG90LgoKMjAwMC0xMS0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9lbGYuaCAoUFJFRkVSUkVEX0RFQlVHR0lOR19UWVBFKTogU2V0IHRvIERXQVJGMl9ERUJVRy4KCShBU01fU1BFQyk6IERpc2FibGUgYW5kIGVuYWJsZSAubWRlYnVnIGJhc2VkIG9uIC1nc3RhYnMuCgkoQVNNX0ZJTEVfU1RBUlQpOiBPbmx5IHdyaXRlIG91dCBlY29mZiAuZmlsZSBkaXJlY3RpdmUgaWYKCWVtaXR0aW5nIG1kZWJ1ZyBkZWJ1Z2dpbmcuCgoyMDAwLTExLTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmluIChIQVZFX0FTX0RXQVJGMl9ERUJVR19MSU5FKTogTmV3LiAgRGV0ZWN0Cgl3aGV0aGVyIGFzIGFjY2VwdHMgLmZpbGUvLmxvYyBhbmQgcHJvZHVjZXMgZHdhcmYyIGxpbmUgaW5mby4KCSogZHdhcmYyb3V0LmMgKERXQVJGMl9BU01fTElORV9ERUJVR19JTkZPKTogRGVmYXVsdCBvbiBpZgoJdGhlIGFzc2VtYmxlciBzdXBwb3J0cyBpdC4KCSogY29uZmlnLmluLCBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAwLTExLTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZml4aW5jL21rZml4aW5jLnNoOiBEb24ndCBkaXNhYmxlIGZpeGluY2x1ZGVzIGZvciBhbnkgbGludXgqLgoKMjAwMC0xMS0xNyAgSmltIFdpbHNvbiAgPHdpbHNvbkByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChlbWl0X2luc25fZ3JvdXBfYmFycmllcnMsIGNhc2UgQ0FMTF9JTlNOKToKCURvbid0IGNsZWFyIG5lZWRfYmFycmllciBpcyBuZXh0X2luc24gaXMgYSBDQUxMX0lOU04sIG9yIGhhcwoJaW5zdHJ1Y3Rpb24gdHlwZSBCIG9yIFVOS05PV04uCgoyMDAwLTExLTE3ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGVycm9yLmMgKHByaW50X2ZpbGVfYW5kX2xpbmUpOiBEb24ndCBkaXNwbGF5IGxpbmUgbnVtYmVyIGlmIDAuCgoyMDAwLTExLTE3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogZ2djLmg6IERlbGV0ZSBnZ2NfYWRkX3N0cmluZ19yb290IGFuZCBnZ2NfbWFya19zdHJpbmcuICBBZGQKCWRpZ2l0X3ZlY3RvciBhbmQgZGlnaXRfc3RyaW5nLgoJKiBzdHJpbmdwb29sLmMgKGRpZ2l0X3ZlY3Rvcik6IE5ldy4KCShnZ2NfYWxsb2Nfc3RyaW5nKTogVXNlIGRpZ2l0X3N0cmluZy4KCgkqIHN0bXQuYyAoZGlnaXRfc3RyaW5ncyk6IERlbGV0ZS4KCShpbml0X3N0bXQpOiBEbyBub3QgaW5pdGlhbGl6ZSBkaWdpdF9zdHJpbmdzLgoJKGV4cGFuZF9hc21fb3BlcmFuZHMpOiBVc2UgZ2djLmgncyBkaWdpdF9zdHJpbmcgbWFjcm8uCgkqIHRvcGxldi5jIChtYXJrX2ZpbGVfc3RhY2spOiBEZWxldGUuCgkoY29tcGlsZV9maWxlKTogRG9uJ3QgY2FsbCBpbml0X3RyZWVfY29kZXMuCgkobWFpbik6IE5vIG5lZWQgdG8gbWFrZSB0aGUgZmlsZSBzdGFjayBhIEdDIHJvb3QuCgkqIHRyZWUuYyAoaW5pdF90cmVlX2NvZGVzKTogRGVsZXRlLgoJKiB0cmVlLmggKGluaXRfdHJlZV9jb2Rlcyk6IERlbGV0ZS4KCgkqIGMtbGV4LmM6IERvbid0IGluY2x1ZGUgZ2djLmguCgkobWFya19zcGxheV90cmVlX25vZGUsIG1hcmtfc3BsYXlfdHJlZSk6IERlbGV0ZS4KCShpbml0X2NfbGV4KTogTm8gbmVlZCB0byBnZ2Nfc3RyZHVwIHN0cmluZyBjb25zdGFudC4gIERvbid0IGFkZAoJZmlsZV9pbmZvX3RyZWUgdG8gR0dDIHJvb3RzLgoJKGNiX2VudGVyX2ZpbGUsIGNiX3JlbmFtZV9maWxlKTogTm8gbmVlZCB0byBnZ2Nfc3RyZHVwCglpcC0+bm9taW5hbF9mbmFtZS4KCgkqIE1ha2VmaWxlLmluIChjLWxleC5vKTogTm8gbG9uZ2VyIGRlcGVuZHMgb24gJChHR0NfSCkuCgoJKiBkYnhvdXQuYyAoZGJ4b3V0X2luaXQpLAoJZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9saW5lKSwKCWdnYy1jb21tb24uYyAoZ2djX21hcmtfcnR4X2NoaWxkcmVuLCBnZ2NfbWFya190cmVlcyksCgl2YXJhc20uYyAobWFya19jb25zdF9oYXNoX2VudHJ5LCBtYXJrX3Bvb2xfY29uc3RhbnQsIGluaXRfdmFyYXNtX29uY2UpLAoJeGNvZmZvdXQuYyAoeGNvZmZvdXRfc291cmNlX2ZpbGUpLAoJaTM4Ni5jIChsb2FkX3BpY19yZWdpc3Rlcik6CglEZWxldGUgY2FsbChzKSB0byBnZ2NfYWRkX3N0cmluZ19yb290IGFuZC9vciBnZ2NfbWFya19zdHJpbmcuCgoJKiBleGNlcHQuYyAoY3JlYXRlX3JldGhyb3dfcmVmKSwKCXByb2ZpbGUuYyAoaW5pdF9lZGdlX3Byb2ZpbGVyKSwKCXRvcGxldi5jIChjb21waWxlX2ZpbGUpLAoJdmFyYXNtLmMgKG5hbWVkX3NlY3Rpb24sIGFzc2VtYmxlX3N0YXRpY19zcGFjZSwKCWFzc2VtYmxlX3RyYW1wb2xpbmVfdGVtcGxhdGUsIG91dHB1dF9jb25zdGFudF9kZWYsIGZvcmNlX2NvbnN0X21lbSksCglpMzg2LmMgKGxvYWRfcGljX3JlZ2lzdGVyKSwKCWlhNjQuYyAoaWE2NF9lbmNvZGVfc2VjdGlvbl9pbmZvKSwKCXJzNjAwMC5jIChyczYwMDBfZW1pdF9sb2FkX3RvY190YWJsZSwgY3JlYXRlX1RPQ19yZWZlcmVuY2UsCglyczYwMDBfZW1pdF9wcm9sb2d1ZSwgcnM2MDAwX2VtaXRfZXBpbG9ndWUpLAoJcnM2MDAwLm1kIChsb2FkX3RvY19haXhfc2ksIGxvYWRfdG9jX2FpeF9kaSk6CglDaGFuZ2UgZ2djX2FsbG9jX3N0cmluZyAodmFyLCAtMSkgdG8gZ2djX3N0cmR1cCAodmFyKS4KCgkqIHByb2ZpbGUuYyAob3V0cHV0X2Z1bmNfc3RhcnRfcHJvZmlsZXIpLAoJdHJlZS5jIChtYWtlX25vZGUpLAoJaTM4Ni5jIChsb2FkX3BpY19yZWdpc3Rlcik6IE5vIG5lZWQgdG8gZ2djX3N0cmR1cCBzdHJpbmcgY29uc3RhbnQuCgoyMDAwLTExLTE3ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChjb25maWcuc3RhdHVzKTogRGVwZW5kIG9uIGNvbmZpZy5nY2MuCgkqIGNvbmZpZ3VyZS5pbiA8Zm9yIG1hY2hpbmUgaW4gJGJ1aWxkICRob3N0ICR0YXJnZXQ+OiBNb3ZlCgljb250ZW50cyBvZiBsb29wIGludG8gY29uZmlnLmdjYywgcmVtb3ZpbmcgYXV0b2NvbmYgcXVvdGluZy4KCUZpeCBjaGFuZ2VxdW90ZSBidWcgZm9yIGFscGhhKi0qLXZ4d29ya3MqLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy5nY2M6IE5ldy4KCjIwMDAtMTEtMTYgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5zdGFuZm9yZC5lZHU+CgoJKiBjLXBhcnNlLmluIChpZl9wcmVmaXgpOiBGaW5kIHRoZSBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIgYXQKCSQtMiBhbmQgJC0xIHJlc3BlY3RpdmVseS4KCSogZGlhZ25vc3RpYy5jIChlcnJvcl9yZWN1cnNpb24pOiBBZGQgbWlzc2luZyBuZXdsaW5lLCB1c2UKCWZwdXRzLCB0cmFuc2xhdGUgc3RyaW5nLgoKMjAwMC0xMS0xNiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIHN0cmluZ3Bvb2wuYzogTmV3IGZpbGUuCgkqIGdnYy1jb21tb24uYyAoZ2djX21hcmtfc3RyaW5nX3B0ciwgZ2djX2FkZF9zdHJpbmdfcm9vdCk6IERlbGV0ZS4KCShnZ2NfYWxsb2Nfc3RyaW5nKTogTm93IGluIHN0cmluZ3Bvb2wuby4KCSogZ2djLXBhZ2UuYywgZ2djLXNpbXBsZS5jOiBEbyBub3QgZGVmaW5lIG9yIGFsbG9jYXRlIGVtcHR5X3N0cmluZy4KCSogZ2djLmg6IERlbGV0ZSBwcm90b3R5cGUgb2YgZ2djX2FkZF9zdHJpbmdfcm9vdC4gICNkZWZpbmUKCWdnY19hZGRfc3RyaW5nX3Jvb3QgYW5kIGdnY19tYXJrX3N0cmluZyB0byBub3RoaW5nLiAgUHJvdG90eXBlCglpbml0X3N0cmluZ3Bvb2wgYW5kIHN0cmluZ3Bvb2xfc3RhdGlzdGljcy4KCShnZ2NfYWxsb2Nfc3RyaW5nKTogUmV0dXJucyBhIGNvbnN0IGNoYXIgKi4KCSogdHJlZS5jIChoYXNoX3RhYmxlLCBkb19pZGVudGlmaWVyX3dhcm5pbmdzKTogRGVsZXRlLgoJKGluaXRfb2JzdGFja3MpOiBEb24ndCBpbml0aWFsaXplIHRoZSBpZGVudGlmaWVyIGhhc2ggdGFibGUuCgkoZ2V0X2lkZW50aWZpZXIsIG1heWJlX2dldF9pZGVudGlmaWVyLCBzdGFydF9pZGVudGlmaWVyX3dhcm5pbmdzLAoJc2V0X2lkZW50aWZpZXJfc2l6ZSk6IE5vdyBpbiBzdHJpbmdwb29sLmMuCgkqIHRyZWUuaCAoc3RydWN0IHRyZWVfc3RyaW5nKTogQ29uc3RpZnkgcG9pbnRlciBmaWVsZC4KCShhcHByb3hfc3FydCk6IFByb3RvdHlwZS4KCgkqIE1ha2VmaWxlLmluIChzdHJpbmdwb29sLm8pOiBBZGQgcnVsZSwgbWVudGlvbiBpbiBPQkpTLgoKCSogdG9wbGV2LmMgKGFwcHJveF9zcXJ0KTogTmV3IGZ1bmN0aW9uLgoJKGNvbXBpbGVfZmlsZSk6IENhbGwgc3RyaW5ncG9vbF9zdGF0aXN0aWNzIGlmIG1lbV9yZXBvcnQgaXMgb24uCgkobWFpbik6IENhbGwgaW5pdF9zdHJpbmdwb29sLgoKCSogYnVpbHRpbnMuYyAoY19zdHJsZW4pLCBjLWRlY2wuYyAoZmluaXNoX2RlY2wpLCBjLWxleC5jCgkocHJvY2Vzc19kaXJlY3RpdmUpLCBjLXR5cGVjay5jIChjb25zdHJ1Y3Rvcl9hc21zcGVjLCBzdHJ1Y3QKCWluaXRpYWxpemVyX3N0YWNrLCBzdGFydF9pbml0KSwgZXhjZXB0LmMgKGNyZWF0ZV9yZXRocm93X3JlZiksCglzdG10LmMgKGRpZ2l0X3N0cmluZ3MpLCB0b3BsZXYuYyAoZGVjb2RlX2Zfb3B0aW9uKSwgdHJlZS5jCgkoYnVpbHRfaW5fZmlsZW5hbWUpLCB2YXJhc20sYyAoaW5fbmFtZWRfbmFtZSwKCWFzc2VtYmxlX3N0YXRpY19zcGFjZSwgc3RydWN0IGNvbnN0YW50X2Rlc2NyaXB0b3IsIHN0cnVjdAoJZGVmZXJyZWRfc3RyaW5nLCBzdHJ1Y3QgcG9vbF9jb25zdGFudCwgZm9yY2VfY29uc3RfbWVtKSwKCWkzODYuYyAocGljX2xhYmVsX25hbWUsIGdsb2JhbF9vZmZzZXRfdGFibGVfbmFtZSksIHJzNjAwMC5jCgkocnM2MDAwX2VtaXRfcHJvbG9ndWUsIHJzNjAwMF9lbWl0X2VwaWxvZ3VlKSA6IENvbnN0aWZ5IGEgY2hhciAqLgoKCSogYy1jb21tb24uYyAoY29tYmluZV9zdHJpbmdzKTogQ29tYmluZSBzdHJpbmdzIGluIHNjcmF0Y2gKCWJ1ZmZlciwgdGhlbiBwYXNzIHRvIGJ1aWxkX3N0cmluZy4KCSogb3B0YWJzLmMgKGluaXRfbGliZnVuY3MpLCBwcm9maWxlLmMgKGluaXRfZWRnZV9wcm9maWxlciwKCW91dHB1dF9mdW5jX3N0YXJ0X3Byb2ZpbGVyKSwgc3RtdC5jIChpbml0X3N0bXQpLCBhbHBoYS5jCgkoYWxwaGFfbmVlZF9saW5rYWdlKSwgYXJtLmMgKGFybV9lbmNvZGVfY2FsbF9hdHRyaWJ1dGUpLAoJaTM4Ni5jIChsb2FkX3BpY19yZWdpc3RlciksIGlhNjQuYyAoaWE2NF9lbmNvZGVfc2VjdGlvbl9pbmZvKSwKCXJzNjAwMC5jIChyczYwMDBfZW5jb2RlX3NlY3Rpb25faW5mbyk6IENyZWF0ZSBzdHJpbmcgaW4KCXNjcmF0Y2ggYnVmZmVyLCB0aGVuIHBhc3MgdG8gZ2djX2FsbG9jX3N0cmluZy4KCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IElmIHdlIG11c3QgYWRqdXN0IHRoZQoJY29uc3RyYWludCBzdHJpbmdzLCBkbyBzbyBieSBjcmVhdGluZyBhIG5ldyBvbmUsIG5vdCBieQoJbW9kaWZ5aW5nIHRoZSBvbGQgb25lIGluIHBsYWNlLiAgQ29uc3RpZnkgc29tZSBjaGFyICpzLgoJKiBjb25maWcvcGEvcGEuYyAoaHBwYV9lbmNvZGVfbGFiZWwpOiBEcm9wIHVubmVjZXNzYXJ5IHNlY29uZAoJYXJndW1lbnQuICBDcmVhdGUgc3RyaW5nIGluIHNjcmF0Y2ggYnVmZmVyLCB0aGVuIHBhc3MgdG8KCWdnY19hbGxvY19zdHJpbmcuCgkqIGNvbmZpZy9wYS9wYS1wcm90b3MuaDogVXBkYXRlIHByb3RvdHlwZS4KCSogY29uZmlnL3BhL2VsZi5oLCBjb25maWcvcGEvcGEuaCwgY29uZmlnL3BhL3NvbS5oOgoJaHBwYV9lbmNvZGVfbGFiZWwgdGFrZXMgb25seSBvbmUgYXJndW1lbnQuCgoyMDAwLTExLTE2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBtY29yZS5jIChtY29yZV9leHBhbmRfcHJvbG9nKTogQ2FsbCB4bWFsbG9jL3hyZWFsbG9jLCBub3QKCW1hbGxvYy9yZWFsbG9jLgoKCSogY3BwbGliLmMgKGdsdWVfaGVhZGVyX25hbWUpOiBMaWtld2lzZS4KCgkqIGZpeGluY2wuYyAocnVuX2NvbXBpbGVzLCBzdGFydF9maXhlcik6IExpa2V3aXNlLgoKCSogZml4bGliLmMgKGxvYWRfZmlsZV9kYXRhKTogTGlrZXdpc2UuCgoJKiBta2RlcHMuYyAobXVuZ2UpOiBMaWtld2lzZS4KCjIwMDAtMTEtMTcgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogZGVmYXVsdHMuaCBbRUhfRlJBTUVfU0VDVElPTl9BU01fT1BdIChFSF9GUkFNRV9TRUNUSU9OKTogUmVtb3ZlCgl0cmFpbGluZyAnOycuICBGaXggZm9ybWF0dGluZy4KCjIwMDAtMTEtMTYgIEppbSBXaWxzb24gIDx3aWxzb25AcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoTUFTS19JTkxJTkVfRElWX0xBVCwgTUFTS19JTkxJTkVfRElWX1RIUik6CglTaGlmdCBtYXNrcyBsZWZ0IGJ5IG9uZSB0byBhdm9pZCBjb25mbGljdC4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogRGlzYWxsb3cgZGVjbHMgd2l0aAoJREVDTF9FWFRFUk5BTCBzZXQuCgoyMDAwLTExLTE2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAob3V0cHV0X2FybV9wcm9sb2d1ZSk6IE5vdGUgbmVzdGVkIGZ1bmN0aW9ucy4KCShhcm1fZXhwYW5kX3Byb2xvZ3VlKTogRm9yIG5lc3RlZCBmdW5jdGlvbnMgcHJlc2VydmUgdGhlCglzdGF0aWMgY2hhaW4gcmVnaXN0ZXIgZHVyaW5nIHN0YWNrIGZyYW1lIGNyZWF0aW9uLgoKCSogY29uZmlnL2FybS9hcm0uaCAoU1RBVElDX0NIQUlOX1JFR05VTSk6IENoYW5nZSB0byAxMi4KCShBUk1fSU5JVElBTF9GUkFNRV9FTElNSU5BVElPTl9PRkZTRVQpOiBGb3IgYSBuZXN0ZWQgZnVuY3Rpb24KCXdpdGggYSBzdGFjayBmcmFtZSB0aGVyZSBpcyBhIDQgYnl0ZSBnYXAgYmV0d2VlbiB0aGUgYXJnCglwb2ludGVyIGFuZCB0aGUgaGFyZCBmcmFtZSBwb2ludGVyICh1c2VkIHRvIHByZXNlcnZlIHRoZQoJc3RhdGljIGNoYWluIHJlZ2lzdGVyIGR1cmluZyBzdGFjayBmcmFtZSBjcmVhdGlvbikuCgoyMDAwLTExLTE2ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIHJ0bC5jIChyZWFkX3J0eCk6IFByb3ZpZGUgc3VpdGFibGUgbmFtZXMgZm9yIHVubmFtZWQKCWRlZmluZV9pbnNuIGFuZCBkZWZpbmVfaW5zbl9hbmRfc3BsaXQgcGF0dGVybnMsIGJhc2VkIG9uIGZpbGUKCWFuZCBsaW5lIG51bWJlcnMuCgoyMDAwLTExLTE1ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxpYi5jIChzdGFydF9kaXJlY3RpdmUsIGVuZF9kaXJlY3RpdmUpOiBOZXcgZnVuY3Rpb25zLgoJKF9jcHBfaGFuZGxlX2RpcmVjdGl2ZSwgcnVuX2RpcmVjdGl2ZSk6IFVzZSB0aGVtLgoJKF9jcHBfaGFuZGxlX2RpcmVjdGl2ZSk6IERvbid0IC1XdHJhZGl0aW9uYWwgb24gaW5kZW50ZWQKCW51bGwgZGlyZWN0aXZlcy4KCShfY3BwX3B1c2hfYnVmZmVyKTogRG9uJ3QgcmUtY2xlYXIgd2FzX3NraXBwaW5nLgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9yZWFkZXIpOiBOZXcgbWVtYmVyIGxhX3NhdmVkLgoJKiBjcHBtYWNyby5jIChjcHBfZ2V0X3Rva2VuKTogRG9uJ3QgaW50ZXJwcmV0IF9QcmFnbWEgaW4KCWRpcmVjdGl2ZXMuCgoJZ2NjLmRnL2NwcC9fUHJhZ21hMS5jOiBVcGRhdGUuCglnY2MuZGcvY3BwL19QcmFnbWEyLmM6IE5ldyB0ZXN0LgoKMjAwMC0xMS0xNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRvcGxldi5jICh3cmFwdXBfZ2xvYmFsX2RlY2xhcmF0aW9ucyk6IERvbid0IHdyaXRlIG91dAoJYXJ0aWZpY2lhbCBzdGF0aWMgdmFyaWFibGVzIHRoYXQgYXJlbid0IG5lZWRlZC4KCjIwMDAtMTEtMTUgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogaWE2NC5jIChzdHJ1Y3QgZ3JvdXApOiBOZXcgc3RydWN0dXJlLgoJKGxhc3RfZ3JvdXApOiBOZXcgc3RhdGljIGFycmF5LgoJKGdyb3VwX2lkeCk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkoZW1pdF9ncm91cF9iYXJyaWVyX2FmdGVyLCBlcnJhdGFfZmluZF9hZGRyZXNzX3JlZ3MsIGVycmF0YV9lbWl0X25vcHMpOgoJTmV3IHN0YXRpYyBmdW5jdGlvbnMuCgkoZW1pdF9pbnNuX2dyb3VwX2JhcnJpZXJzKTogSW5pdGlhbGl6ZSBhbmQga2VlcCB0cmFjayBvZiBncm91cF9pZHgKCWFuZCBsYXN0X2dyb3VwLgoJQ2FsbCBlcnJhdGFfZW1pdF9ub3BzIGlmIFRBUkdFVF9CX1NURVAgb3IgVEFSR0VUX0FfU1RFUC4KCVJlcGxhY2UgYWxsIGNhbGxzIHRvIGVtaXRfaW5zbl9hZnRlciB0aGF0IGVtaXQgYSBncm91cCBiYXJyaWVyIHRvIHVzZQoJZW1pdF9ncm91cF9iYXJyaWVyX2FmdGVyLgoJKiBpYTY0LmggKE1BU0tfQl9TVEVQKTogTmV3LgoJKG90aGVyIE1BU0tfWFhYIG1hY3Jvcyk6IFJlbnVtYmVyZWQuCgkoVEFSR0VUX0JfU1RFUCk6IE5ldy4KCShUQVJHRVRfU1dJVENIRVMpOiBBZGQgLW1iLXN0ZXAuCgoyMDAwLTExLTE1ICBGcmVkIEZpc2ggIDxmbmZAYmUuY29tPgoKCSogZml4aW5jL21rZml4aW5jLnNoIChmaXhpbmNsdWRlcyk6IEFkZCAqLSotYmVvcyogdG8gbGlzdCBvZgoJbWFjaGluZXMgZm9yIHdoaWNoIGZpeGluY2x1ZGVzIGlzIG5vdCBuZWVkZWQuCgkqIGNvbmZpZy9pMzg2L3gtYmVvcyAoU1RNUF9GSVhQUk9UTyk6IERvbid0IHJ1biBmaXhwcm90by4KCjIwMDAtMTEtMTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZGlhZ25vc3RpYy5jIChmaW5pc2hfYWJvcnQpOiBOZXcgZm4uCgkoZmFuY3lfYWJvcnQsIGVycm9yX3JlY3Vyc2lvbik6IFVzZSBpdC4KCSogdG9wbGV2LmMgKGNyYXNoX3NpZ25hbCk6IExpa2V3aXNlLgoJKiBkaWFnbm9zdGljLmg6IERlY2xhcmUgaXQuCgoyMDAwLTExLTEzICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUuYyAoYnVpbGRfdHlwZV9ub19xdWFscyk6IE5ldyBmdW5jdGlvbi4KCSogdHJlZS5oIChidWlsZF90eXBlX25vX3F1YWxzKTogRGVjbGFyZS4KCSogYy1jb21tb24uYyAoY19nZXRfYWxpYXNfc2V0KTogV2hlbiBjb25zaWRlcmluZyB0eXBlCgljb21wYXRpYmlsaXR5IGZvciBwb2ludGVyIHR5cGVzLCBpZ25vcmUgY3YtcXVhbGlmaWVycyBhbnl3aGVyZSBpbgoJYSBwb2ludGVyIGNoYWluLgoKMjAwMC0xMS0xNSAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtc0ByZWRoYXQuY29tPgoKCSogcmVncmVuYW1lLmMgKHNjYW5fcnR4X3J0eCk6IFNraXAgdG8gdGhlIG5leHQgY2hhaW4gb24KCWVuY291bnRlcmluZyBhIHRlcm1pbmF0ZWQgY2hhaW4uCgoyMDAwLTExLTE0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlndXJlLmluOiBNb3ZlIGNoZWNrIGZvciBWMyBhYm92ZSBjaGVjayBmb3IgQysrIGhlYWRlci1maWxlCglkaXJlY3RvcnkuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAwLTExLTE0ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy92ODUwL3Y4NTAuYzogUmVtb3ZlIG9ic3RhY2tzLgoKVHVlIE5vdiAxNCAyMTo1NDozMSAyMDAwICBNYXJlayBNaWNoYWxraWV3aWN6ICA8bWFyZWttQGxpbnV4Lm9yZy5wbD4gJiBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuYyAoYXZyX2Nhc2VfdmFsdWVzX3RocmVzaG9sZCk6IE5ldy4KCShhdnJfb3ZlcnJpZGVfb3B0aW9ucyk6IFNldCBpdCBkZXBlbmRpbmcgb24gb3B0aW9ucywgbWFrZSBpdCBsYXJnZQoJd2hlbiBub3Qgb3B0aW1pemluZyB0byB3b3JrIGFyb3VuZCAidW5hYmxlIHRvIGdlbmVyYXRlIHJlbG9hZHMiLgoKCSogY29uZmlnL2F2ci9hdnIuaCAoVEFSR0VUX1NXSVRDSEVTKTogQWRkIC1tbm8tdGFibGVqdW1wIG9wdGlvbi4KCShFWFRSQV9TRUNUSU9OX0ZVTkNUSU9OUyk6IE1ha2UgdGhlIC5wcm9nbWVtLmdjY19zd190YWJsZSBzZWN0aW9uCglleGVjdXRhYmxlIGlmIG5vdCBBVlJfTUVHQS4gIE1ha2Ugc3VyZSBqdW1wIHRhYmxlcyBhcmUgd29yZC1hbGlnbmVkLgoJKEpVTVBfVEFCTEVTX0lOX1RFWFRfU0VDVElPTik6IERlZmluZSBhcyAwLCBub3QgMS4KCShBU01fT1VUUFVUX0FERFJfVkVDX0VMVCk6IE9wdGltaXplLCB1c2UgInJqbXAiIGlmIG5vdCBBVlJfTUVHQS4KCShhdnJfY2FzZV92YWx1ZXNfdGhyZXNob2xkKTogRGVjbGFyZSBhcyBleHRlcm4gaW50LgoJKENBU0VfVkFMVUVTX1RIUkVTSE9MRCk6IERlZmluZSBhcyBhdnJfY2FzZV92YWx1ZXNfdGhyZXNob2xkLgoKCSogY29uZmlnL2F2ci9hdnIubWQgKHRhYmxlanVtcCk6IFJlbW92ZWQuCgkoKnRhYmxlanVtcF9yam1wKTogTmV3IGZvciBqdW1wIHRhYmxlcyBtYWRlIGZyb20gInJqbXAiIGluc3RydWN0aW9ucy4KCSgqdGFibGVqdW1wX2xpYiwgKnRhYmxlanVtcF9lbmgsICp0YWJsZWp1bXApOiBDaGFuZ2UgdG8gZXhwZWN0IHRoZQoJaW5kZXggaW4gdGhlIHRhYmxlLCBub3QgbXVsdGlwbGllZCBieSAyLgoJKGNhc2VzaSk6IENoYW5nZSB0byBtYXRjaCB0aGUgYWJvdmUgaW5zbnMuICBBbHdheXMgZW5hYmxlLgoKCSogY29uZmlnL2F2ci9saWJnY2MuUyAoX190YWJsZWp1bXBfXyk6IFJlbmFtZSB0byBfX3RhYmxlanVtcDJfXy4KCUNoYW5nZSB0byBleHBlY3QgdGhlIHdvcmQgYWRkcmVzcyBvZiB0aGUgdGFibGUsIG11bHRpcGx5IGl0IGJ5IDIKCWhlcmUgYW5kIG5vdCBpbiB0aGUgY2FsbGVyLiAgQ2hhbmdlICJhZGl3IiB0byBmYXN0ZXIgImluYyIuCgoyMDAwLTExLTE0ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGV4cC5jIChwYXJzZV9kZWZpbmVkKTogQ2FsbCBjcHBfZ2V0X3Rva2VuIG5vdAoJX2NwcF9nZXRfdG9rZW4uCgkobGV4KTogU2ltaWxhcmx5LgoJKiBjcHBsZXguYyAoY3BwX291dHB1dF9saW5lKTogU2ltaWxhcmx5LgoJKiBjcHBsaWIuYyAoZ2x1ZV9oZWFkZXJfbmFtZSwgZG9fbGluZSwgZG9faWRlbnQsCglwYXJzZV9hbnN3ZXIsIHBhcnNlX2Fzc2VydGlvbik6IFNpbWlsYXJseS4KCShfY3BwX2hhbmRsZV9kaXJldGl2ZSk6IERvbid0IHNhdmUgdG8gbG9va2FoZWFkcwoJd2hlbiBwcm9jZXNzaW5nIGRpcmVjdGl2ZXMuCgkqIGNwcG1hY3JvLmMgKHBhcnNlX2FyZywgZXhwYW5kX2FyZyk6IENhbGwgY3BwX2dldF90b2tlbiBub3QKCV9jcHBfZ2V0X3Rva2VuLgoJKGZ1bmxpa2VfaW52b2NhdGlvbl9wKTogRG9uJ3Qgc2F2ZSB0byBsb29rYWhlYWRzCgl3aGVuIHByZS1leHBhbmRpbmcgYXJndW1lbnRzLgoJKF9jcHBfZ2V0X3Rva2VuKTogRGVsZXRlLgoJKGNwcF9nZXRfdG9rZW4pOiBNZXJnZSBjb250ZW50cyBvZiBfY3BwX2dldF90b2tlbi4KCjIwMDAtMTEtMTQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc2V0am1wKTogU2V0CgljdXJyZW50X2Z1bmN0aW9uX2NhbGxzX3NldGptcC4KCShleHBhbmRfYnVpbHRpbl9sb25nam1wKTogU2V0IGN1cnJlbnRfZnVuY3Rpb25fY2FsbHNfbG9uZ2ptcC4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAoYnVpbHRpbl9zZXRqbXBfc2V0dXApOiBOZXcgZXhwYW5kLgoJKGRvX2J1aWx0aW5fc2V0am1wX3NldHVwKTogTmV3IGluc24uCgpUdWUgTm92IDE0IDEyOjM0OjU2IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmVlLmMgKGdldF91bndpZGVuZWQpOiBVc2UgaG9zdF9pbnRlZ2VycCBhbmQgdHJlZV9sb3dfY3N0LgoJKGludF9maXRzX3R5cGVfcCk6IEZvciB2YXJpYWJsZSBib3VuZHMsIGNhbGwgZm9yY2VfZml0X3R5cGUuCgoyMDAwLTExLTE0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHZhcmFzbS5jIChzdHJ1Y3QgZGVmZXJyZWRfc3RyaW5nKTogTmV3IHN0cnVjdHVyZS4KCShjb25zdF9zdHJfaHRhYik6IE5ldyB2YXJpYWJsZS4KCShTVFJIQVNIKTogTmV3IG1hY3JvLgoJKG1hcmtfY29uc3Rfc3RyX2h0YWJfMSwgbWFya19jb25zdF9zdHJfaHRhYiwgY29uc3Rfc3RyX2h0YWJfaGFzaCwKCWNvbnN0cl9zdHJfaHRhYl9lcSwgY29uc3Rfc3RyX2h0YWJfZGVsKTogTmV3IGZ1bmN0aW9ucy4KCShvdXRwdXRfY29uc3RhbnRfZGVmKTogQWRkIERFRkVSIGFyZ3VtZW50LCBkZWZlciBzdHJpbmcKCWNvbnN0YW50cyB1bnRpbCBtYXJrX2NvbnN0YW50X3Bvb2wgdGltZSBpZiByZXF1ZXN0ZWQuCgkobWFya19jb25zdGFudF9wb29sKTogV2FsayB0aGUgaW5zbiBjaGFpbiBldmVuIGlmIGNvbnN0X3N0cl9odGFiIGlzCglub3QgZW1wdHkuCgkobWFya19jb25zdGFudHMpOiBJZiBhIFNZTUJPTF9SRUYgZm9yIGRlZmVycmVkIHN0cmluZyBpcyBmb3VuZCwKCW91dHB1dCBpdCBhbmQgcmVtb3ZlIGZyb20gaGFzaCB0YWJsZS4KCShvdXRwdXRfYWRkcmVzc2VkX2NvbnN0YW50cyk6IFNldCBERUZFUiB0byAwIGluIGNhbGwgdG8KCW91dHB1dF9jb25zdGFudF9kZWYuCgkqIHJ0bC5oIChTVFJJTkdfUE9PTF9BRERSRVNTX1ApOiBEZWZpbmUuCgkob3V0cHV0X2NvbnN0YW50X2RlZik6IEFkanVzdCBwcm90b3R5cGUuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBTZXQgREVGRVIgdG8gMSBpbiBjYWxsIHRvIG91dHB1dF9jb25zdGFudF9kZWYuCgoyMDAwLTExLTE0ICBDaGFuZHJha2FsYSBDaGF2dmEgIDxjY2hhdnZhQHJlZGhhdC5jb20+CgoJKiBvcHRhYnMuYyAoZXhwYW5kX2NvbXBsZXhfYWIpOjogVXNlIG92ZXJmbG93LXRyYXBwaW5nIG9wdGFicyBmb3IKCXNpZ25lZCB0eXBlcyBpZiBmbGFnX3RyYXB2LgoKMjAwMC0xMS0xNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIHRyYWRjcHAuYywgdHJhZGNpZi55OiBVcGRhdGUgRlNGIG1haWxpbmcgYWRkcmVzcywgZGVsZXRlCglyZWZlcmVuY2UgdG8gR1BMdjEuCgoyMDAwLTExLTE0ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5oIChDVElfQ19TSVpFX1RZUEUpOiBVcGRhdGUgY29tbWVudC4KCjIwMDAtMTEtMTQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogdmFyYXNtLmMgKHN0cnVjdCB2YXJhc21fc3RhdHVzKTogQ2hhbmdlIHhfY29uc3RfcnR4X3N5bV9oYXNoX3RhYmxlCgl0byBhcnJheSBvZiBwb29sX2NvbnN0bmF0IHBvaW50ZXJzLgoJKHN0cnVjdCBwb29sX2NvbnN0YW50KTogQWRkIG5leHRfc3ltIGFuZCBsYWJlbCBtZW1iZXJzLgoJKHN0cnVjdCBwb29sX3N5bSk6IFJlbW92ZS4KCShpbml0X3ZhcmFzbV9zdGF0dXMpOiBDaGFuZ2UgcG9vbF9zeW0gaW50byBwb29sX2NvbnN0YW50LgoJKG1hcmtfcG9vbF9jb25zdGFudCk6IE1hcmsgcGMtPmxhYmVsIHN0cmluZyBhcyB3ZWxsLgoJKG1hcmtfcG9vbF9zeW1faGFzaF90YWJsZSk6IFJlbW92ZS4KCShtYXJrX3ZhcmFzbV9zdGF0dXMpOiBSZW1vdmUgaXQgZnJvbSBjYWxsZXIgYXMgd2VsbC4KCShmcmVlX3ZhcmFzbV9zdGF0dXMpOiBEb24ndCBmcmVlIHBvb2xfc3ltIHN0cnVjdHVyZXMuCgkoZm9yY2VfY29uc3RfbWVtKTogRG9uJ3QgYWxsb2NhdGUgcG9vbF9zeW0gc3RydWN0dXJlLCBpbnN0ZWFkCglmaWxsIHBvb2wtPmxhYmVsIGFuZCBjaGFpbiBpdCBpbnRvIHJ0eF9zeW0gaGFzaCB0YWJsZS4KCShmaW5kX3Bvb2xfY29uc3RhbnQsIG1hcmtfY29uc3RhbnRfcG9vbCk6IFVzZSBwb29sX2NvbnN0YW50IGluc3RlYWQKCW9mIHBvb2xfc3ltLgoKMjAwMC0xMS0xNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiByZWxvYWQxLmMgKGVtaXRfaW5wdXRfcmVsb2FkX2luc25zKTogSG9ub3VyIGZvcmNpbmcgb2YgY29uc3RhbnRzCglpbnRvIG1lbW9yeSBieSBQUkVGRVJSRURfUkVMT0FEX0NMQVNTIE5PX1JFR1MuCgoyMDAwLTExLTE0ICBNaWNoYWVsIE1hdHogIDxtYXR6bWljaEBjcy50dS1iZXJsaW4uZGU+CgoJKiBkb21pbmFuY2UuYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluIChPQkpTKTogQWRkIGRvbWluYW5jZS5vLgoKCSogZmxvdy5jIChjb21wdXRlX2Zsb3dfZG9taW5hdG9ycyk6IFJlbW92ZS4KCShjb21wdXRlX2ltbWVkaWF0ZV9kb21pbmF0b3JzKTogUmVtb3ZlLgoJKGNvbXB1dGVfaW1tZWRpYXRlX3Bvc3Rkb21pbmF0b3JzKTogUmVtb3ZlLgoJKiBiYXNpYy1ibG9jay5oOiBSZW1vdmUgdGhlaXIgcHJvdG90eXBlcy4KCShjYWxjdWxhdGVfZG9taW5hbmNlX2luZm8pOiBBZGQgcHJvdG90eXBlLgoKCSogZGNlLmMgKGVsaW1pbmF0ZV9kZWFkX2NvZGUpOiBDaGFuZ2UgY2FsbHMgdG8gYWJvdmUgZnVuY3Rpb25zLgoJRG9uJ3QgY29tcHV0ZSBkb21pbmF0b3JzIGJ1dCBvbmx5IGltbWVkaWF0ZSBkb21pbmF0b3JzLgoJKiBmbG93LmMgKGZsb3dfbG9vcHNfZmluZCk6IENoYW5nZSBjYWxsZXJzLgoJKiBnY3NlLmMgKGNvbXB1dGVfY29kZV9ob2lzdF9kYXRhKTogTGlrZXdpc2UuCgkqIGhhaWZhLXNjaGVkLmMgKHNjaGVkdWxlX2luc25zKTogTGlrZXdpc2UuCgkqIGlmY3Z0LmMgKGlmX2NvbnZlcnQpOiBMaWtld2lzZS4KCSogc3NhLmMgKGNvbnZlcnRfdG9fc3NhKTogTGlrZXdpc2UsIGFuZCBvbmx5IGNvbXB1dGUgaW1tZWRpYXRlCglkb21pbmF0b3JzLgoKMjAwMC0xMS0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHN0bXQuYyAod2Fybl9pZl91bnVzZWRfdmFsdWUpOiBEb24ndCB3YXJuIGlmIHRoZSBleHByZXNzaW9uCgloYXMgc2lkZSBlZmZlY3RzLgoKCSogYy10eXBlY2suYyAoY19zaXplb2YpOiBGb2xkIHJlc3VsdCB0byBjX3NpemVfdHlwZV9ub2RlLgoJKGNfc2l6ZW9mX25vd2FybiwgY19hbGlnbm9mLCBjX2FsaWdub2ZfZXhwcik6IExpa2V3aXNlLgoKMjAwMC0xMS0xMyAgRnJhbnogU2lybCAgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCSogbG9vcC5jIChiYXNpY19pbmR1Y3Rpb25fdmFyKTogUmV2ZXJ0IGFjY2lkZW50YWwgY2hlY2tpbi4KCjIwMDAtMTEtMTMgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogYy1sZXguYyAoY2JfbGVhdmVfZmlsZSk6IEhhcm1vbml6ZSBjb25kaXRpb25zIGFuZCBvcmRlciBvZgoJc3RhdGVtZW50cyB0byB0aG9zZSBvZiBwcm9jZXNzX2RpcmVjdGl2ZSBmb3IgKGFjdGlvbiA9PSBhY3RfcG9wKS4KCgkqIGNvbGxlY3QyLmMgKG1haW4pOiBQYXNzIG9uIC1CIG9wdGlvbnMgZnJvbSBDT0xMRUNUX0dDQ19PUFRJT05TLgoKCSogbG9jYWwtYWxsb2MuYyAoZXF1aXZfaW5pdF9tb3ZhYmxlX3ApOiBSZWZlcmVuY2VzIHRvIENDMCBhcmUgbm90Cgltb3ZhYmxlLgoKMjAwMC0xMS0xMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1wYXJzZS5pbiAoc3RtdHNfYW5kX2RlY2xzKTogRGVwcmVjYXRlIHVzZSBvZiBsYWJlbCBhdCBlbmQgb2YKCWNvbXBvdW5kIHN0YXRlbWVudC4KCjIwMDAtMTEtMTMgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKF9jcHBfbGV4X3Rva2VuKTogQ1BQX0NPTU1FTlQgYW5kIHRydWUgQ1BQX0VPRgoJY2FzZXMgcmV0dXJuIHdpdGhvdXQgTUkgY2hlY2suCgkqIGNwcGxpYi5jIChkb19kaWFnbm9zdGljKTogVGFrZSBib29sZWFuIG9mIHdoZXRoZXIgdG8KCXByaW50IHRoZSBkaXJlY3RpdmUgbmFtZS4KCShkb19lcnJvciwgZG9fd2FybmluZyk6IFVwZGF0ZS4KCShkb19wcmFnbWFfZGVwZW5kZW5jeSk6IFVzZSBpdC4KCSogY3BwbGliLmggKFZBUkFSR1NfRklSU1QpOiBEZWxldGUuCgkoc3RydWN0IGNwcF90b2tlbik6IERlbGV0ZSBpbnRlZ2VyLgoJKiBjcHBtYWNyby5jIChlbnRlcl9tYWNyb19jb250ZXh0KTogTW92ZSBkaXNhYmxlZCBjaGVjawoJdG8gX2NwcF9nZXRfdG9rZW4uCgkoX2NwcF9nZXRfdG9rZW4pOiBTaW1wbGlmeSBpbnRvIGEgc2luZ2xlIGxvb3AuCgoyMDAwLTExLTEzICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogIFVzZSAndGVzdCAtZicgbm90ICdbIC1lJy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDAtMTEtMTMgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5tZCAoc3RvcmVfbW92bSk6IE5vdGUgd2hpY2ggcmVnaXN0ZXJzIGFyZQoJcmVhbGx5IHVzZWQgb3IgY2xvYmJlcmVkLgoKMjAwMC0xMS0xMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1wYXJzZS5pbiAoZW5kc19pbl9sYWJlbCk6IFJlbW92ZSBmcm9tICV1bmlvbiBhbmQgJXR5cGUuCgkoZGVjbHMsIHN0bXRzLCBsaW5lbm9fc3RtdF9vcl9sYWJlbHMsIHhzdG10cywKCWxpbmVub19zdG10X29yX2xhYmVsLCBzdG10X29yX2xhYmVsKTogUmVtb3ZlLgoJKHN0bXRzX2FuZF9kZWNscywgbGluZW5vX3N0bXRfZGVjbF9vcl9sYWJlbHNfZW5kaW5nX3N0bXQsCglsaW5lbm9fc3RtdF9kZWNsX29yX2xhYmVsc19lbmRpbmdfZGVjbCwKCWxpbmVub19zdG10X2RlY2xfb3JfbGFiZWxzX2VuZGluZ19sYWJlbCwKCWxpbmVub19zdG10X2RlY2xfb3JfbGFiZWxzX2VuZGluZ19lcnJvciwKCWxpbmVub19zdG10X2RlY2xfb3JfbGFiZWxzLCBjb21wc3RtdF9jb250ZW50c19ub25lbXB0eSwKCWxpbmVub19zdG10LCBsaW5lbm9fbGFiZWwpOiBOZXcuCgkoY29tcHN0bXRfbm9zdGFydCk6IFVzZSBjb21wc3RtdF9jb250ZW50c19ub25lbXB0eS4KCjIwMDAtMTEtMTMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKGJvb2xlYW5faW5jcmVtZW50KTogTmV3IGZ1bmN0aW9uLgoJKiBjLWNvbW1vbi5oIChlbnVtIGNfdHJlZV9pbmRleCk6IEFkZCBDVElfQ19CT09MX1RZUEUsCglDVElfQ19CT09MX1RSVUUgYW5kIENUSV9DX0JPT0xfRkFMU0UuCgkoY19ib29sX3R5cGVfbm9kZSwgY19ib29sX3RydWVfbm9kZSwgY19ib29sX2ZhbHNlX25vZGUpOiBEZWZpbmUuCgkoYm9vbGVhbl9pbmNyZW1lbnQpOiBEZWNsYXJlLgoJKiBjLWNvbnZlcnQuYyAoY29udmVydCk6IEFsbG93IGZvciBCT09MRUFOX1RZUEUuCgkqIGMtZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IENyZWF0ZSBib29sZWFuIG5vZGVzLgoJKGZpbmlzaF9zdHJ1Y3QpOiBBbGxvdyBmb3IgX0Jvb2wgYml0ZmllbGRzLgoJKiBjLXBhcnNlLmluIChyZXN3b3Jkcyk6IEFkZCBfQm9vbC4KCShyaWRfdG9feXkpOiBBbGxvdyBmb3IgUklEX0JPT0wuCgkqIGMtdHlwZWNrLmMgKGRlZmF1bHRfY29udmVyc2lvbik6IE1ha2UgYm9vbGVhbnMgcHJvbW90ZSB0byBpbnQuCgkoY29udmVydF9hcmd1bWVudHMsIGJ1aWxkX3VuYXJ5X29wLCBidWlsZF9tb2RpZnlfZXhwciwKCWNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBBbGxvdyBmb3IgYm9vbGVhbnMuCgkqIGdpbmNsdWRlL3N0ZGJvb2wuaDogTWFrZSBjb25mb3JtaW5nIHRvIEM5OS4KCjIwMDAtMTEtMTMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtcGFyc2UuaW4gKGM5OV9ibG9ja19zdGFydCwgYzk5X2Jsb2NrX2VuZCwKCWM5OV9ibG9ja19saW5lbm9fbGFiZWxlZF9zdG10KTogTmV3LgoJKHNpbXBsZV9pZiwgZG9fc3RtdF9zdGFydCk6IFVzZSBjOTlfYmxvY2tfbGluZW5vX2xhYmVsZWRfc3RtdC4KCShzdG10KTogU3BsaXQgb2ZmIHNlbGVjdGlvbiBhbmQgaXRlcmF0aW9uIHN0YXRlbWVudHMgaW50by4uLgoJKHNlbGVjdF9vcl9pdGVyX3N0bXQpOiBOZXcuICBVc2UgYzk5X2Jsb2NrX2xpbmVub19sYWJlbGVkX3N0bXQuCgoyMDAwLTExLTEzICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBpbnZva2UudGV4aSAoLVd0cmlncmFwaHMsIC1mZHVtcC10cmFuc2xhdGlvbi11bml0LCAtc2F2ZS10ZW1wcywKCS10aW1lKTogVXBkYXRlLgoKMjAwMC0xMS0xMyAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0ubWQgKG11bHNpZGkzYWRkZGksIHVtdWxzaWRpM2FkZGRpKTogUmV2ZXJ0IHByZXZpb3VzIGNoYW5nZS4KCVJld3JpdGUgdG8gYXZvaWQgdXNlIG9mIG1hdGNoX2R1cC4gIERvbid0IHRyeSB0byB0aWUgcmVnaXN0ZXJzIHRoYXQKCWFyZSBub3QgaW4gdGhlIHNhbWUgbW9kZS4KCjIwMDAtMTEtMTMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGludm9rZS50ZXhpOiBVcGRhdGUgbGlzdHMgb2YgbGFuZ3VhZ2VzIGFuZCBzdWZmaXhlcyBzdXBwb3J0ZWQuCgoyMDAwLTExLTEzICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjb25maWd1cmUuaW46IFRha2UgdG9wbGV2ZWwgY29uZmlndXJlIGFyZ3VtZW50cyBmcm9tIHRoZQoJZW52aXJvbm1lbnQgdG8gY3JlYXRlIGNvbmZpZ2FyZ3MuaCBhbmQgc3Vic3RpdHV0ZQoJZ2NjX2NvbmZpZ19hcmd1bWVudHMsIHRha2luZyBhY2NvdW50IG9mIGFueSBleGlzdGluZyBjb25maWdhcmdzLmgKCWlmIHJlY29uZmlndXJpbmcuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogZ2NjYnVnLmluOiBJbmNsdWRlIHRvcGxldmVsIGNvbmZpZ3VyZSBhcmd1bWVudHMgaW4gZ2NjYnVnLgoKMjAwMC0xMS0xMyAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiB2YXJhc20uYyAoc3RydWN0IGNvbnN0YW50X2Rlc2NyaXB0b3IpOiBQdXQgQ09OVEVOVFMgaW5zaWRlIGEKCXVuaW9uIHRvIG1ha2UgaXQgd2VsbC1hbGlnbmVkLiAgVXBkYXRlIGFsbCB1c2VzLgoKMjAwMC0xMS0xMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1wYXJzZS5pbiAoaW5pdGVsdCk6IEdpdmUgYXBwcm9wcmlhdGUgcGVkYW50aWMgd2FybmluZ3MsCglkZXBlbmRpbmcgb24gZmxhZ19pc29jOTksIGZvciBub24tSVNPIHN5bnRheCBhbmQgZm9yIEM5OSBzeW50YXgKCW91dHNpZGUgQzk5IG1vZGUuCgkoZGVzaWduYXRvcik6IElmIHBlZGFudGljLCBwZWR3YXJuIGZvciBhIGRlc2lnbmF0b3Igc3BlY2lmeWluZyBhCglyYW5nZSBvZiBlbGVtZW50cy4KCSogYy10eXBlY2suYyAoc2V0X2luaXRfaW5kZXgsIHNldF9pbml0X2xhYmVsKTogRG9uJ3QgcGVkd2FybiBmb3IKCXRoZXNlIGNhc2VzLgoJKiBleHRlbmQudGV4aTogRG9jdW1lbnQgdGhlIEM5OSBzeW50YXggYXMgdGhlIHByZWZlcnJlZCBzeW50YXgsCglhbmQgdGhlIHByZS0yLjUgc3ludGF4IGFzIG9ic29sZXRlLiAgTWVudGlvbiB1c2Ugb2YgZGVzaWduYXRvcgoJbGlzdHMgZm9yIG5lc3RlZCBzdWJvYmplY3RzLgoKMjAwMC0xMS0xMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZGlhZ25vc3RpYy5jICh2YnVpbGRfbWVzc2FnZV9zdHJpbmcsIG91dHB1dF9kb19wcmludGYsIHZub3RpY2UpOgoJQWRkIEFUVFJJQlVURV9QUklOVEYuCgkqIHRyYWRjcHAuYyAodl9tZXNzYWdlLCB3YXJuaW5nLCBlcnJvciwgZmF0YWwsIGVycm9yX3dpdGhfbGluZSk6CglBZGQgQVRUUklCVVRFX1BSSU5URiouCgoyMDAwLTExLTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKTogV2hlbiBjYWxsaW5nIHB1dF92YXJfaW50b19zdGFjaywgbWFrZQoJc3VyZSB0aGF0IHRoZXJlIGFyZSBubyBoaWRkZW4gcGVuZGluZyBzZXF1ZW5jZXMuCgoyMDAwLTExLTEyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbik6IEhhbmRsZSBCVUlMVF9JTl9JTkRFWCBhbmQKCUJVSUxUX0lOX1JJTkRFWC4gIEFkZCBtaXNzaW5nIGNoZWNrcyBmb3IgQlVJTFRfSU5fU1RSQ0hSIGFuZAoJQlVJTFRfSU5fU1RSUkNIUi4KCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fSU5ERVgsIEJVSUxUX0lOX1JJTkRFWCk6IE5ldyBlbnRyaWVzLgoKCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogRGVjbGFyZSBpbmRleCBhbmQKCXJpbmRleCB3aGVuIG5vbmFuc2kgYnVpbHRpbnMgYXJlIGFsbG93ZWQuCgoJKiBleHRlbmQudGV4aSAoaW5kZXgsIHJpbmRleCk6IERvY3VtZW50IG5ldyBidWlsdGlucy4KCjIwMDAtMTEtMTIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuaW46IFR1cm4gb24gbGlic3RkYysrIFYzIGJ5IGRlZmF1bHQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoJKiBmaXhpbmMvbWtmaXhpbmMuc2g6IFVzZSB0aGUgb3JkaW5hcnkgZml4aW5jbHVkZXMgb24gU29sYXJpcy4KCjIwMDAtMTEtMTIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogcmVsb2FkMS5jIChzZXRfbGFiZWxfb2Zmc2V0cyk6IEdvIGluc2lkZSBvZiBQQVJBTExFTHMuCgoyMDAwLTExLTEyICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBpbnZva2UudGV4aTogQ2xlYW4gdXAgb3B0aW9uIHN1bW1hcnkuCgoyMDAwLTExLTEyICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21jb3JlL21jb3JlLmM6IEZpeCBjb21tZW50IGZvcm1hdGluZywgYW5kIGFkanVzdCBzZXF1ZW5jZQoJb2YgI2luY2x1ZGUgaGVhZGVycy4KCjIwMDAtMTEtMTIgIE1hcmMgRXNwaWUgPGVzcGllQG9wZW5ic2Qub3JnPgoKCSogY29uZmlndXJlLmluOiBGaXggZmlsZHMgdGVzdC4KCSogY29uZmlndXJlOiBSZWdlbi4KCjIwMDAtMTEtMTIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBqdW1wLmMgKGRlbGV0ZV9jb21wdXRhdGlvbik6IERvbid0IGFzc3VtZSB0aGF0IGp1c3QgYmVjYXVzZSBhbgoJaW5zdHJ1Y3Rpb24gc2V0cyBhIHJlZ2lzdGVyLCB0aGF0IHJlZ2lzdGVyIGlzIGRlYWQuCgoyMDAwLTExLTEyICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGV4cC5jOiBEb24ndCB3b3JyeSBhYm91dCBwZmlsZS0+c2tpcHBpbmcuCgkqIGNwcGxpYi5jIChzdHJ1Y3QgaWZfc3RhY2spOiBNYWtlIHdhc19za2lwcGluZyB1bnNpZ25lZCBjaGFyLgoJKGNwcF9oYW5kbGVfZGlyZWN0aXZlKTogU2F2ZSBwZmlsZS0+c2tpcHBpbmcgaW4gc3RydWN0IGNwcF9idWZmZXIKCWZvciBoYW5kbGVkIGRpcmVjdGl2ZXMuCgkoc2tpcF9yZXN0X29mX2xpbmUpOiBVc2UgX2NwcF9sZXhfdG9rZW4gYWZ0ZXIgcG9wcGluZyBjb250ZXh0cwoJYW5kIHJlbGVhc2luZyBsb29rYWhlYWRzLgoJKGRvX2lmZGVmLCBkb19pZm5kZWYsIGRvX2lmKTogVXNlIGJ1ZmZlci0+d2FzX3NraXBwaW5nLgoJKGRvX2Vsc2UsIGRvX2VsaWYsIHB1c2hfY29uZGl0aW9uYWwpOiBVcGRhdGUgbG9naWMuCgkoZG9fZW5kaWYpOiBTZXQgYnVmZmVyLT53YXNfc2tpcHBpbmcgcmF0aGVyIHRoYW4gcGZpbGUtPnNraXBwaW5nLgoJKHVud2luZF9pZl9zdGFjayk6IElubGluZSBpbnRvIGNwcF9wb3BfYnVmZmVyLgoJKGNwcF9wdXNoX2J1ZmZlcik6IENsZWFyIGlmcy0+d2FzX3NraXBwaW5nIGZvciBjcHBfaGFuZGxlX2RpcmVjdGl2ZS4KCSogY3BwbGV4LmMgKF9jcHBfbGV4X3Rva2VuKTogQ2xlYXIgc2tpcHBpbmcgb24gRU9GLiAgSGFuZGxlCgltdWx0aXBsZS1pbmNsdWRlIG9wdGltaXNhdGlvbi4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfYnVmZmVyKTogTmV3IG1lbWJlciB3YXNfc2tpcHBpbmcuCgkqIGNwcG1hY3JvLmMgKF9jcHBfZ2V0X3Rva2VuKTogTG9vcCB3aGlsc3QgcGZpbGUtPnNraXBwaW5nLiAgVGhpcwoJd29ya3MgYmVjYXVzZSBza2lwcGluZyA9PSAwIGluIGRpcmVjdGl2ZXMuCgkoX2NwcF9yZWxlYXNlX2xvb2thaGVhZCk6IFJlbmFtZWQgZnJvbSByZWxlYXNlX2xvb2thaGVhZC4KCShjcHBfZ2V0X3Rva2VuKTogTm8gbmVlZCB0byBjaGVjayBza2lwcGluZyBhcyBfY3BwX2dldF90b2tlbiBkb2VzCgl0aGlzIGZvciB1cy4gIE5vIG5lZWQgdG8gaGFuZGxlIE1JIG9wdGltaXNhdGlvbi4KClNhdCBOb3YgMTEgMjE6MTQ6MDIgMjAwMCAgTWFyayBQIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoc3Vub3NfbWF0aGVycl9kZWNsKTogQnlwYXNzIG1hdGhlcnIKCWRlY2xhcmF0aW9ucyB0aGF0IHVzZSBgX19NQVRIX0VYQ0VQVElPTicgaW4gdGhlaXIgcHJvdG90eXBlcywgdG9vLgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlZC4KCjIwMDAtMTEtMTEgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoYXZvaWRfYm9vbF90eXBlKTogYXZvaWQgY29tbWVudGluZyBvdXQgI2VuZGlmCgkoYXZvaWRfd2NoYXJfdF90eXBlKTogZGl0dG8KCSogZml4aW5jL2ZpeGluYy5pcml4OiBvYnNvbGV0ZWQKCjIwMDAtMTEtMTEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5zdGFuZm9yZC5lZHU+CgoJKiBjb25maWd1cmUuaW46IERvbid0IGFkZCAkb3V0cHV0cyB0byBhbGxfbGFuZ19tYWtlZmlsZXMuICBBZGQKCSRzcmNkaXIvJHMvTWFrZWZpbGUuaW4gaWYgaXQgZXhpc3RzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgpTYXQgTm92IDExIDE4OjQxOjIwIDIwMDAgIE1hcmsgUCBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZpeGluYy9ta2ZpeGluYy5zaDogVXNlIHRoZSBvcmRpbmFyeSBmaXhpbmNsdWRlcyBvbiBJUklYLgoKMjAwMC0xMS0xMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fcGFybXMpOiBJZiBUUkVFX0FERFJFU1NBQkxFIGlzIHNldCwgdHJ5IHRvCglnaXZlIHRoZSBwYXJtIGEgcmVnaXN0ZXIgYW5kIHRoZW4gY2FsbCBwdXRfdmFyX2ludG9fc3RhY2suCgkqIHN0bXQuYyAoZXhwYW5kX2RlY2wpOiBMaWtld2lzZS4KCjIwMDAtMTEtMTEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGdjYy50ZXhpOiBBZGp1c3Qgd29yZGluZy4KCjIwMDAtMTEtMTEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChhdm9pZF93Y2hhcl90X3R5cGUpOiBOZXcgZml4LgoJKiBmaW5pbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlZC4KCjIwMDAtMTEtMTEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGludm9rZS50ZXhpOiBDb3JyZWN0IHNwZWxsaW5nIG9mIC1mb3B0aW1pemUtcmVnaXN0ZXItbW92ZS4KCjIwMDAtMTEtMTEgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCVJlbW92ZSBDUFBfUExBQ0VNQVJLRVJzLgoKCSogY3BwZXhwLmMgKGxleCk6IERvbid0IGhhbmRsZSBDUFBfUExBQ0VNQVJLRVIuCgkqIGNwcGxleC5jIChfY3BwX2xleF90b2tlbik6IFJlbmFtZSBza2lwX25ld2xpbmVzIHRvIG5leHRfYm9sCgkqIGNwcGxpYi5jIChza2lwX3Jlc3Rfb2ZfbGluZSwgY2hlY2tfZW9sLCBjcHBfcHVzaF9idWZmZXIpOgoJCSAgIFNpbWlsYXJseS4KCSogY3BwbGliLmg6IFJlbW92ZSBDUFBfUExBQ0VNQVJLRVIuCgkoc3RydWN0IGxleGVyX3N0YXRlKTogUmVuYW1lIHNraXBfbmV3bGluZXMgdG8gbmV4dF9ib2wuCgkqIGNwcG1hY3JvLmMgKHN0cmluZ2lmeV9hcmcpOiBEb24ndCBoYW5kbGUgQ1BQX1BMQUNFTUFSS0VSLgoJU2ltcGxpZnkgcHJldl93aGl0ZSBoYW5kbGluZyBhcyBhIHJlc3VsdC4KCShwYXN0ZV9hbGxfdG9rZW5zKTogRG9uJ3Qgd29ycnkgYWJvdXQgQ1BQX1BMQUNFTUFSS0VScy4KCShwYXJzZV9hcmcpOiBFbXB0eSBhcmd1bWVudHMgYXJlIG5vdyBlbXB0eSwgbm90IENQUF9QTEFDRU1BUktFUnMuCgkocGFyc2VfYXJncyk6IFNpbWlsYXJseS4gIFVwZGF0ZSBhcmd1bWVudCBjb3VudCB0ZXN0cy4KCShlbnRlcl9tYWNyb19jb250ZXh0KTogUmV0dXJuIDIgdG8gaW5kaWNhdGUgYW4gZW1wdHkgbWFjcm8uCgkocmVwbGFjZV9hcmdzKTogRG9uJ3QgYm90aGVyIHByZS1leHBhbmRpbmcgYW4gZW1wdHkgYXJndW1lbnQuCglIYW5kbGUgcGxhY2VtYXJrZXJzIGFuZCAjIyBleHRlbnNpb24gZHVyaW5nIHByZS1leHBhbnNpb24uCgkoY3BwX2dldF90b2tlbik6IEhhbmRsZSBlbXB0eSBtYWNybyBleHBhbnNpb25zLiAgRG9uJ3Qgd29ycnkKCWFib3V0IENQUF9QTEFDRU1BUktFUnMuCgkoX2NwcF9jcmVhdGVfZGVmaW5pdGlvbik6IEVtcHR5IG1hY3JvcyBhcmUgbm93IGVtcHR5LgoJKGNwcF9tYWNyb19kZWZpbml0aW9uKTogRG9uJ3Qgc3BlY2lhbCBjYXNlIGVtcHR5IG1hY3Jvcy4KCSogc2Nhbi1kZWNscy5jOiBEb24ndCBib3RoZXIgd2l0aCBDUFBfUExBQ0VNQVJLRVJzLgoJKiBjLWxleC5jOiBTaW1pbGFybHkuCgoyMDAwLTExLTExICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnY2MudGV4aSwgaW52b2tlLnRleGk6IEFkZCBuZXcgc2VjdGlvbiBkaXNjdXNzaW5nIGxhbmd1YWdlCglzdGFuZGFyZHM7IGxpbmsgdG8gaXQgd2hlcmUgYXBwcm9wcmlhdGU7IHJlZmVyIHRvIElTTyBDIGluc3RlYWQgb2YKCUFOU0kgQy4KCjIwMDAtMTEtMTEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuYyAoc3RkX2V4cGFuZF9idWlsdGluX3ZhX3N0YXJ0KTogVGFrZSBQQVJNX0JPVU5EQVJZCglpbnRvIGFjY291bnQuCgoJKiBjb25maWcvc2gvc2guaCAoTU9ERVNfVElFQUJMRV9QKTogRG9uJ3QgdGllIFNGbW9kZSB0byBvdGhlciBGUAoJbW9kZXMuCgoyMDAwLTExLTEwICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnY2MudGV4aSwgZ2Nvdi50ZXhpOiBVcGRhdGUgZGF0ZXMgYW5kIHZlcnNpb24gbnVtYmVycy4KCjIwMDAtMTEtMTAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5zdGFuZm9yZC5lZHU+CgoJKiBjb25maWd1cmUuaW46IFJlbW92ZSBBQ19QUk9HX0xFWCBhbmQgQUNfUFJPR19ZQUNDLiAgTG9vayBmb3IKCWZsZXggYW5kIGJpc29uLCBzcGVjaWZpY2FsbHksIGZpcnN0IGluIGEgdW5pZmllZCBidWlsZCBhbmQKCXRoZW4gaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0uCgkqIE1ha2VmaWxlLmluOiBTZXQgQklTT04gdG8gQEJJU09OQCwgRkxFWCB0byBARkxFWEAuICBSZW5hbWUKCUxFWEZMQUdTIHRvIEZMRVhGTEFHUy4gIEFkanVzdCBPUkRJTkFSWV9GTEFHU19UT19QQVNTIHRvCgltYXRjaC4KCgkoY29sbGVjdDIubywgZ2NjLm8sIHByZWZpeC5vLCB0b3BsZXYubywgYWxsb2NhLm8sIGludGwubywKCWNwcGRlZmF1bHQubyk6IFJlbW92ZSBwb2ludGxlc3Mgc2VkIG11bmdpbmcgb2Ygc291cmNlIGZpbGUKCW5hbWUuCgoyMDAwLTExLTEwICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHNfYWRkcmVzc18xLCBjYXNlIFBPU1RfTU9ESUZZKTogVXNlIFJFTE9BRF9PVEhFUgoJZm9yIGFkZHJlc3MgcmVsb2Fkcy4gIFB1c2ggcmVwbGFjZW1lbnRzIGZvciBSRUdfSU5DIG5vdGVzLgoJKHJlZ25vX2Nsb2JiZXJlZF9wKTogTmV3IGFyZyBTRVRTLiAgRXhhbWluZSBTRVRzIGlmIGl0J3Mgbm9uemVyby4gIEFsbAoJY2FsbGVycyBjaGFuZ2VkLgoJKiByZWxvYWQxLmMgKGNob29zZV9yZWxvYWRfcmVncyk6IFJlZ2lzdGVycyBzZXQgaW4gdGhlIGluc24gY2FuJ3QgYmUKCXVzZWQgZm9yIFJFTE9BRF9PVEhFUiByZWxvYWRzLgoKMjAwMC0xMS0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtZHVtcC5oOiBOZXcgZmlsZS4KCjIwMDAtMTEtMTAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFscGhhLmMgKGNoZWNrX2Zsb2F0X3ZhbHVlKTogVXNlIG1lbWNweSwgbm90IGJjb3B5LgoJKiBhcm0uYyAob3V0cHV0X21vdmVfZG91YmxlKTogTGlrZXdpc2UuCgkqIGFybS5tZDogTGlrZXdpc2UuCgkqIG04OGsuYyAobGVnaXRpbWl6ZV9vcGVyYW5kKTogTGlrZXdpc2UuCgkqIG04OGsuaCAoT1JERVJfUkVHU19GT1JfTE9DQUxfQUxMT0MpOiBMaWtld2lzZS4KCSogbTg4ay5tZDogTGlrZXdpc2UuCgkqIG1pcHMuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IExpa2V3aXNlLgoJKiBtaXBzLm1kOiBMaWtld2lzZS4KCSogcm9tcC5jIChvdXRwdXRfZnBvcHMpOiBMaWtld2lzZS4KCSogcnM2MDAwLmMgKHJzNjAwMF9vdmVycmlkZV9vcHRpb25zKTogTGlrZXdpc2UuCgkqIHNoLm1kOiBMaWtld2lzZS4KCSogdmF4LmMgKGNoZWNrX2Zsb2F0X3ZhbHVlKTogTGlrZXdpc2UuCgoJKiBlbWl0LXJ0bC5jIChjb3B5X3J0eF9pZl9zaGFyZWQsIGluaXRfZW1pdF9vbmNlKTogTGlrZXdpc2UuCgkqIGV4cG1lZC5jIChzeW50aF9tdWx0KTogTGlrZXdpc2UuCgkqIGZpbmFsLmMgKGFkZF9iYl9zdHJpbmcpOiBMaWtld2lzZS4KCSogZ2VuYXR0ci5jIChtYWluKTogTGlrZXdpc2UuCgkqIGdlbmF0dHJ0YWIuYyAoYXR0cl9zdHJpbmcsIHNpbXBsaWZ5X2NvbmQsIGNvcHlfcnR4X3VuY2hhbmdpbmcpOgoJTGlrZXdpc2UuCgkqIGp1bXAuYyAodGhyZWFkX2p1bXBzKTogTGlrZXdpc2UuCgkqIHByZWZpeC5jIChzYXZlX3N0cmluZyk6IExpa2V3aXNlLgoJKiByZWFsLmggKFJFQUxfVkFMVUVfRlJPTV9DT05TVF9ET1VCTEUpOiBMaWtld2lzZS4KCSogcmVnY2xhc3MuYyAoaW5pdF9yZWdfc2V0cywgaW5pdF9yZWdfc2V0c18xKTogTGlrZXdpc2UuCgkqIHJlbG9hZDEuYyAocmVsb2FkLCBlbGltaW5hdGVfcmVncyk6IExpa2V3aXNlLgoKMjAwMC0xMS0xMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ2NjLnRleGkgKFNlcnZpY2UpOiBVcGRhdGUgdG8gcmVmbGVjdCBjdXJyZW50IHByYWN0aWNlIGFuZAoJbG9jYXRpb24gb2YgdGhlIEdOVSBzZXJ2aWNlIGRpcmVjdG9yeS4KCjIwMDAtMTEtMDkgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogcmVncmVuYW1lLmMgKGJ1aWxkX2RlZl91c2UpOiBNYXJrIGNvbnRlbnRzIG9mIFJFR19JTkMgbm90ZXMgYXMKCW5lZWRpbmcgcmVwbGFjZW1lbnQuCgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChleHRlbmRzZmRmMiwgZXh0ZW5kc2Z0ZjIsIGV4dGVuZGRmdGYyKTogRW1pdAoJYSBuby1vcCBtb3ZlIGlmIHJlZ3MgYXJlIGVxdWFsLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IERvIHRoZSBub29wIG1vdmVzIGVsaW1pbmF0aW9uIHBhc3MKCXdoZW4gY2FsbGluZyBqdW1wIGFmdGVyIHBvc3QtcmVsb2FkIHNwbGl0dGluZy4KCjIwMDAtMTEtMDkgIEphbiB2YW4gTWFsZSAgPGphbi52YW5tYWxlQGZlbmsud2F1Lm5sPgoKCSogYy10cmVlLnRleGk6IEZpeCB0eXBvcy4KCSogZXh0ZW5kLnRleGk6IExpa2V3aXNlCgkqIGdjb3YudGV4aTogTGlrZXdpc2UKCSogcnRsLnRleGk6IExpa2V3aXNlCgkqIHRtLnRleGk6IExpa2V3aXNlCgoyMDAwLTExLTA5ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGMtbGV4LmMgWyEgTk9fSU1QTElDSVRfRVhURVJOX0NdIChjYl9lbnRlcl9maWxlKTogQ2hlY2sKCWluX3N5c3RlbV9oZWFkZXIgYW5kIGZsYWdzWzFdIGJlZm9yZSBkZXJlZmVyZW5jaW5nIGZsYWdzWzJdLgoKMjAwMC0xMS0wOSAgTWF0dGhldyBIaWxsZXIgPGhpbGxlckByZWRoYXQuY29tPgoKCSogcmVsb2FkMS5jIChyZWxvYWRfY29tYmluZSk6IEZpeGVkIGNhbGN1bGF0aW9uIG9mCglmaXJzdF9pbmRleF9yZWcsIGxhc3RfaW5kZXhfcmVnLgoKMjAwMC0xMS0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogRHVtcCBmdW5jdGlvbiBib2RpZXMuCgoJKiBNYWtlZmlsZS5pbiAoQ19BTkRfT0JKQ19PQkpTKTogQWRkIGMtZHVtcC5vLgoJKGMtZHVtcC5vKTogTmV3IHRhcmdldC4KCSogYy1jb21tb24uaCAoZmxhZ19kdW1wX3RyYW5zbGF0aW9uX3VuaXQpOiBOZXcgdmFyaWFibGUuCgkoQ19UWVBFX1FVQUxTKTogTmV3IG1hY3JvLgoJKHN0cmlwX2FycmF5X3R5cGVzKTogTmV3IGZ1bmN0aW9uLgoJKERFQ0xfQ19CSVRfRklFTEQpOiBOZXcgbWFjcm8uCgkoU0VUX0RFQ0xfQ19CSVRfRklFTEQpOiBMaWtld2lzZS4KCShDTEVBUl9ERUNMX0NfQklUX0ZJRUxEKTogTGlrZXdpc2UuCgkoZHVtcF9pbmZvX3ApOiBOZXcgdHlwZWRlZi4KCShkdW1wX3RyZWVfZm4pOiBMaWtld2lzZS4KCShsYW5nX2R1bXBfdHJlZSk6IE5ldyB2YXJpYWJsZS4KCShkdW1wX25vZGVfdG9fZmlsZSk6IE5ldyBmdW5jdGlvbi4KCSogYy1jb21tb24uYyAoZmxhZ19kdW1wX3RyYW5zbGF0aW9uX3VuaXQpOiBEZWZpbmUgaXQuCgkoc3RyaXBfYXJyYXlfdHlwZXMpOiBOZXcgZnVuY3Rpb24uCgkqIGMtZGVjbC5jIChjX2RlY29kZV9vcHRpb24pOiBIYW5kbGUgLWZkdW1wLXRyYW5zbGF0aW9uLXVuaXQuCgkqIGMtbGFuZy5jIChmaW5pc2hfZmlsZSk6IENhbGwgZHVtcF9ub2RlX3RvX2ZpbGUgaWYKCWZsYWdfZHVtcF90cmFuc2xhdGlvbl91bml0LgoJKiBjLXNlbWFudGljcy5jIChtYXJrX3J0bF9mb3JfbG9jYWxfc3RhdGljKTogRml4IHR5cG8gaW4gY29tbWVudC4KCSogYy10cmVlLmggKERFQ0xfQ19CSVRfRklFTEQpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkqIGMtZHVtcC5jOiBOZXcgZmlsZS4KCjIwMDAtMTEtMDkgIENocmlzdG9waGVyIEZheWxvciA8Y2dmQGN5Z251cy5jb20+CgoJKiBjb25maWcvaTM4Ni9jeWd3aW4uaDogQWRkIG1pbmd3IHN0YXJ0ZmlsZSBwcmVmaXguCgoyMDAwLTExLTA5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZmxvdy5jIChpbnZhbGlkYXRlX21lbXNfZnJvbV9zZXQpOiBTcGxpdCBvdXQgZnJvbSAuLi4KCShtYXJrX3NldF8xKTogLi4uIGhlcmUuCgkodHJ5X3ByZV9pbmNyZW1lbnRfMSk6IFVzZSBpdC4gIFVzZSBwcm9wYWdhdGVfYmxvY2tfZGVsZXRlX2luc24KCWluc3RlYWQgb2YgdHVybmluZyBpbnNuIGludG8gYSBOT1RFX0lOU05fREVMRVRFRC4KCjIwMDAtMTEtMTAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGV4dGVuZC50ZXhpLCBpbnZva2UudGV4aTogTW92ZSBkb2N1bWVudGF0aW9uIG9mIGJ1aWx0aW4gdmVyc2lvbnMKCW9mIEMgbGlicmFyeSBmdW5jdGlvbnMgdG8gb25lIHBsYWNlIGFuZCB1cGRhdGUuCgoyMDAwLTExLTA5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkKTogQ29tcGFyZSBUWVBFX01BSU5fVkFSSUFOVCByYXRoZXIgdGhhbgoJdGhlIHR5cGVzIHRoZW1zZWx2ZXMgdG8gZGlzY292ZXIgdHlwZSBlcXVpdmFsZW5jZS4KCjIwMDAtMTEtMDkgIE1pa2UgU3R1bXAgIDxtcnNAd3JzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChkaXN0Y2xlYW4pOiBSZW1vdmUgYSBmZXcgZXh0cmEgbGVmdG92ZXJzLgoKMjAwMC0xMS0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHJlY29nLmMgKHZhbGlkYXRlX3JlcGxhY2VfcnR4XzEpOiBDb25zaWRlciBzdWJyZWdzIHdoZW4KCXJlcGxhY2luZyBhIHJlZ2lzdGVyIHdpdGggYSBjb25zdGFudCBpbnNpZGUgYSBzaWduL3plcm9fZXh0ZW5kLgoKCSogY29uZmlnL2FscGhhL2xpbnV4LmggKEhBTkRMRV9QUkFHTUFfUEFDS19QVVNIX1BPUCk6IERlZmluZS4KCjIwMDAtMTEtMDkgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIGMtZGVjbC5jIChmaW5pc2hfc3RydWN0KTogV2hlbiBhIHN0cnVjdHVyZSBpcyBjb21wbGV0ZWQsCgljaGVjayBhbGwgaXRzIHZhcmlhbnQgdHlwZXMgZm9yIGNvbXBsZXRlbmVzcy4KCjIwMDAtMTEtMDkgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaGFzaC5jOiBNb3ZlIGNwcF9kZWZpbmVkIGhlcmUgZnJvbSBjcHBsaWIuYy4KCSogY3BwbGliLmM6IFVwZGF0ZSBjb21tZW50cywgbW92ZSBjcHBfZGVmaW5lZCB0byBjcHBoYXNoLmMuCgkqIGNwcGxleC5jIChfY3BwX2xleF90b2tlbik6IERvbid0IGxlYXZlIHRoZSBsZXhlciBhdCBFT0wuCgkqIGNwcG1hY3JvLmMgKGNwcF9nZXRfdG9rZW4pOiBVcGRhdGUgY29tbWVudHMsIG5vIG5lZWQgbm93Cgl0byBjYXRjaCB0aGUgQ1BQX0VPRiBtZWFuaW5nIEVPTCBjYXNlLgoKMjAwMC0xMS0wOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX3ZhX2FyZyk6IFdoZW4gdGhlIHJlcXVpcmVkIGFsaWdubWVudAoJaXMgbW9yZSB0aGFuIHRoYXQgcHJvdmlkZWQsIGNvcHkgdG8gYSB0ZW1wb3JhcnkuCgoyMDAwLTExLTA5ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIG1rbGliZ2NjLmluIChFWFRSQV9NVUxUSUxJQl9QQVJUUyk6IFByZXZlbnQgYG1ha2UnIGZyb20KCWludGVycHJldGluZyAkb3V0IGFzIGEgbWFjcm8gYXNzaWdubWVudC4KCSogTWFrZWZpbGUuaW4gKFRfVEFSR0VUKTogTmV3IGF1eGlsaWFyeSBtYWNybyBhbmQgdGFyZ2V0LgoJKGFsbCk6IEFkZCBhIHRhcmdldCByaWdodCBpbiB0aGUgYmVnaW5uaW5nLCBzbyB0aGF0IHdlIGRvbid0IGJ1aWxkCglUX1RBUkdFVCBieSBkZWZhdWx0LgoKMjAwMC0xMS0wOSAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtc0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAobW14X3BpbnNydyk6IE91dHB1dCBvcGVyYW5kcyBpbiBjb3JyZWN0CglvcmRlciBmb3IgLW1pbnRlbC1zeW50YXguICBSZW1vdmUgY29tbWVudCBub3cgdGhhdCB0aGUgb3BlcmFuZAoJb3JkZXIgaGFzIGJlZW4gY2hlY2tlZC4KCShtbXhfcGV4dHJ3KTogTGlrZXdpc2UuCgkobW14X3BzaHVmdyk6IExpa2V3aXNlLgoKMjAwMC0xMS0wOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBidWlsdGlucy5jIChjX3N0cmxlbik6IFVzZSBUUkVFX1NUUklOR19MRU5HVEggLSAxIGZvciBtYXguCgkoY19nZXRzdHIpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX2J1aWx0aW5fc3Ryc3RyKTogRG8gbm90aGluZyBpZiAtZmNoZWNrLW1lbW9yeS11c2FnZS4KCUlmIGJvdGggYXJndW1lbnRzIGFyZSBjb25zdGFudCBzdHJpbmcsIG9wdGltaXplIG91dC4KCShleHBhbmRfYnVpbHRpbl9zdHJjaHIsIGV4cGFuZF9idWlsdGluX3N0cnJjaHIpOiBOZXcgZnVuY3Rpb25zLgoJKGV4cGFuZF9idWlsdGluX3N0cnBicmspOiBVc2UgY19nZXRzdHIsIGRvIG5vdGhpbmcgaWYKCS1mY2hlY2stbWVtb3J5LXVzYWdlLgoJKGV4cGFuZF9idWlsdGluX2ZwdXRzKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fc3RyY21wKTogQWRkIE1PREUgYXJndW1lbnQuCglVc2UgZXZlbiBpZiAhSEFWRV9jbXBzdHJzaS4KCU9wdGltaXplIHRoZSBjYXNlIHdoZW4gYm90aCBhcmd1bWVudHMgYXJlIGNvbnN0YW50IHN0cmluZ3MuCgkoZXhwYW5kX2J1aWx0aW4pOiBBZGp1c3QgZXhwYW5kX2J1aWx0aW5fc3RyY21wIGNhbGxlci4KCUNhbGwgZXhwYW5kX2J1aWx0aW5fc3RyY2hyIGFuZCBleHBhbmRfYnVpbHRpbl9zdHJyY2hyLgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBBZGQgc3RyY2hyIGFuZCBzdHJyY2hyCglidWlsdGlucy4KCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9TVFJSQ0hSKTogQWRkLgoKMjAwMC0xMS0wOCAgR2VyYWxkIFBmZWlmZXIgIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoKCSogZml4aW5jL2dudS1yZWdleC5jOiBSZW5hbWUgRUdDUyBMT0NBTCBtYXJrZXJzIHRvIEdDQyBMT0NBTC4KCjIwMDAtMTEtMDkgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsLCBlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKSwgY29sbGVjdDIuYwoJKHNjYW5fcHJvZ19maWxlKSwgY29uZmlnL2EyOWsvYTI5ay5jIChwcmludF9vcGVyYW5kKSwKCWNvbmZpZy9zcGFyYy9zcGFyYy5jIChvcmRlcl9yZWdzX2Zvcl9sb2NhbF9hbGxvYyk6IFVzZSBtZW1jcHkgKCkKCWluc3RlYWQgb2YgYmNvcHkgKCkuCgkqIHJlYWwuaDogVXNlIG1lbWNtcCAoKSBpbnN0ZWFkIG9mIGJjbXAgKCkuCgkqIGNvbmZpZy9tODhrL204OGsuYyAobTg4a19sYXlvdXRfZnJhbWUpLCBjb25maWcvc2gvc2guYwoJKHNwbGl0X2JyYW5jaGVzKSwgY29uZmlnL3NwYXJjL3NwYXJjLmMgKHVsdHJhX2ZsdXNoX3BpcGVsaW5lLAoJdWx0cmFzcGFyY19zY2hlZF9pbml0LCB1bHRyYXNwYXJjX3NjaGVkX3Jlb3JkZXIpLAoJY29uZmlnL3NwYXJjL3NwYXJjLmggKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFKTogVXNlIG1lbXNldCAoKQoJaW5zdGVhZCBvZiBiemVybyAoKS4KCSogY29uZmlnL3ZheC94bS14bXMuaCAoRklMRV9OQU1FX05PTkRJUkVDVE9SWSk6IFVzZSBzdHJyY2hyICgpCglpbnN0ZWFkIG9mIHJpbmRleCAoKS4KCSogY29uZmlndXJlLmluOiBEb24ndCBjaGVjayBmb3IgYnplcm8sIGJjbXAsIGluZGV4IG9yIHJpbmRleC4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgkqIHN5c3RlbS5oOiBEb24ndCBpbmNsdWRlIGRlY2xhcmF0aW9ucyBmb3IgYnplcm8sIGJjbXAsIGluZGV4IG9yCglyaW5kZXguCgkqIGNvbmZpZy9pMzg2L3htLWJlb3MuaCwgY29uZmlnL3JzNjAwMC94bS1iZW9zLmg6IERvbid0IGRlZmluZQoJYnplcm8sIGJjbXAsIGluZGV4IG9yIHJpbmRleC4KCldlZCBOb3YgIDggMjE6NTg6MjAgMjAwMCAgQ2hyaXN0b3BoZXIgRmF5bG9yIDxjZ2ZAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2N5Z3dpbi5oOiBBZGQgLW5vLXdpbjMyIHN3aXRjaC4gIFNlcGFyYXRlIC1tbm8tY3lnd2luCglpbmNsdWRlIGFuZCBsaWJyYXJ5IHBhdGhzIGZyb20gLW1jeWd3aW4gY2FzZS4gIFBhcmFtZXRlcml6ZSBzb21lCglkZWNsYXJhdGlvbnMgdG8gYXZvaWQgd2FybmluZ3MuICBVc2Ugc3RhbmRhcmQgbG9jYXRpb25zIGZvciBpbmNsdWRlIGFuZAoJbGliIGRpcnMuCgoyMDAwLTExLTA4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9hcm0ubWQgKG11bHNpZGkzYWRkZGkpOiBDaGFuZ2Ugb3V0cHV0IG9wZXJhbmQKCWNvbnN0cmFpbnQgZnJvbSAiPSYiIHRvICIrJiIuCgkodW11bHNpZGkzYWRkZGkpOiBDaGFuZ2Ugb3V0cHV0IG9wZXJhbmQJY29uc3RyYWludCBmcm9tICI9JiIgdG8KCSIrJiIuCgoyMDAwLTExLTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZmxvdy5jIChpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogUHJvdGVjdCB0aGUgcnR4IHN0b3JlZCBpbgoJbWVtX3NldF9saXN0IGZyb20gbW9kaWZpY2F0aW9uIGJ5IGZpbmRfYXV0b19pbmMuCgkobWFya19zZXRfMSk6IExpa2V3aXNlLgoKMjAwMC0xMS0wOCAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJTW92ZSBkaXJlY3RpdmUgaGFuZGxpbmcgaW50byB0aGUgbGV4ZXIgaXRzZWxmLgoKCSogY3BwbGV4LmMgKF9jcHBfbGV4X3Rva2VuKTogSGFuZGxlIGRpcmVjdGl2ZXMgZGlyZWN0bHkuCglJbiB0aGUgY2FzZSBvZiBhIGRpcmVjdGl2ZSBpbnRlcnJ1cHRpbmcgYSBmdW5jdGlvbi1saWtlCgltYWNybyBpbnZvY2F0aW9uLCB1c2UgZXh0cmFfY2hhciBzaW5jZSByZWFkX2FoZWFkIGlzCgl1c2VkIHRvIHN0b3JlIHRoZSAnIycuICBSZXR1cm4gYSBDUFBfRU9GIGluIHRoaXMgY2FzZS4KCSogY3BwbWFjcm8uYyAocGFyc2VfYXJnKTogTm8gbmVlZCB0byBoYW5kbGUgQ1BQX0RIQVNIIGFueSBtb3JlLgoJKGNwcF9nZXRfdG9rZW4pOiBEb24ndCBoYW5kbGUgZGlyZWN0aXZlcyBoZXJlLgoJKiBjcHBsaWIuaDogUmVtb3ZlIENQUF9ESEFTSCB0b2tlbiB0eXBlLgoKV2VkIE5vdiAgOCAyMTo1Mzo0MSBNRVQgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVnbW92ZS5jIChjb21iaW5lX3N0YWNrX2FkanVzdG1lbnRzX2Zvcl9ibG9ja3MpOiBSZWNvZ25pemUgcHVzaGVzCglmb3JtZWQgdXNpbmcgUFJFX01PRElGWSB0b28uCgoyMDAwLTExLTA4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy10cmVlLnRleGkgKFZBUl9ERUNMKTogRGVzY3JpYmUgcmVwcmVzZW50YXRpb24gb2YgR0NDJ3MKCWV4dGVuc2lvbiBmb3IgcGxhY2luZyB2YXJpYWJsZXMgaW4gcGFydGljdWxhciByZWdpc3RlcnMuCgoJKiBjLXRyZWUudGV4aSAoRlVOQ1RJT05fVFlQRSk6IENsYXJpZnkgVFlQRV9BUkdfVFlQRVMgZm9yCgl1bnByb3RvdHlwZWQgQyBmdW5jdGlvbnMgd2l0aCBubyBwYXJhbWV0ZXJzLgoKMjAwMC0xMS0wOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoQVNNX09VVFBVVF9NSV9USFVOSyk6IENhc3QgREVMVEEgdG8gaW50CgliZWZvcmUgcGFzc2luZyB0byBmcHJpbnRmLgoKMjAwMC0xMS0wOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBmdW5jdGlvbi5jIChleHBhbmRfZnVuY3Rpb25fc3RhcnQpOiBDYXN0IEdFVF9NT0RFX1NJWkUgdG8KCUhPU1RfV0lERV9JTlQgYmVmb3JlIG5lZ2F0aW5nIGl0LgoKMjAwMC0xMS0wOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9leHByKSBbQUREUl9FWFBSXTogSGFuZGxlIHdoZW4gb3AwIGlzIFJFVFVSTl9ERUNMCglwYXNzZWQgaW4gbXVsdGlwbGUgbm9uLWNvbnRpZ3VvdXMgbG9jYXRpb25zLgoKMjAwMC0xMS0wOCAgR2VyYWxkIFBmZWlmZXIgIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoKCSogUkVBRE1FLmduYXQ6IFJlbW92ZSBmaWxlLgoKMjAwMC0xMS0wOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBta2xpYmdjYy5pbiAoRVhUUkFfTVVMVElMSUJfUEFSVFMpOiBHZW5lcmF0ZSBtdWx0aWxpYiBwYXJ0cwoJaW4tcGxhY2UuCgoyMDAwLTExLTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZHdhcmZvdXQuYyAoSU5TTl9MQUJFTF9GTVQpOiBSZW1vdmUuCgkob3V0cHV0X2xhYmVsX2RpZSk6IFVzZSBBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwuCgkoZHdhcmZvdXRfbGFiZWwpOiBSZW1vdmUuCgkqIGR3YXJmb3V0Lmg6IFJlbW92ZSBpdCdzIHByb3RvdHlwZS4KCSogZHdhcmYyb3V0LmMgKElOU05fTEFCRUxfRk1UKTogUmVtb3ZlLgoJKGdlbl9sYWJlbF9kaWUpOiBVc2UgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMLgoJKGR3YXJmMm91dF9sYWJlbCk6IFJlbW92ZS4KCSogZHdhcmYyb3V0Lmg6IFJlbW92ZSBpdCdzIHByb3RvdHlwZS4KCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuKTogRG9uJ3QgY2FsbCBkd2FyZlsyXW91dF9sYWJlbC4KCjIwMDAtMTEtMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaWE2NC9mZGUtZ2xpYmMuYyAoZmluZF9mZGVfZm9yX2Rzbyk6IERvIGEgYmluYXJ5CglzZWFyY2ggb24gdGhlIHVud2luZCByZWdpb24gc2VjdGlvbi4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG1vdmJpKTogQWRkIHIvciBhbHRlcm5hdGl2ZS4KCShjbW92ZGlfaW50ZXJuYWxfYXN0ZXApOiBEZXNjcmliZSBhbGwgY29tYmluYXRpb25zIG9mIHJlZ2lzdGVyCgljbGFzc2VzIGZvciBzb3VyY2VzICYgZGVzdGluYXRpb25zOyByZW1vdmUgbWF0Y2hpbmcgY29uc3RyYWludHMuCgkoY21vdmRpX2ludGVybmFsKTogTGlrZXdpc2UuCgoJKiBnY2MuYyAoZGVmYXVsdF9jb21waWxlcnMpIFtAY3BwLW91dHB1dF06IEFkZCAtZnByZXByb2Nlc3NlZC4KCjIwMDAtMTEtMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLWxhbmcuYyAoc3RhcnRfY2R0b3IsIGZpbmlzaF9jZHRvcik6IE5ldyBmdW5jdGlvbnMuCgkoZmluaXNoX2ZpbGUpOiBVc2UgdGhlbSBpbiBidWlsZGluZyBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIGZ1bmN0aW9ucy4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChIQVNfSU5JVF9TRUNUSU9OLCBMRF9JTklUX1NXSVRDSCwKCUxEX0ZJTklfU1dJVENIKTogTW92ZSAuLi4KCSogY29uZmlnL2FscGhhL29zZi5oOiAuLi4gaGVyZS4KCSogY29uZmlnL2FscGhhL2FscGhhLWludGVyaXguaDogRG9uJ3QgdW5kZWYgdGhlbS4KCjIwMDAtMTEtMDcgIEplZmZyZXkgT2xkaGFtICA8b2xkaGFtQG96LmNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy90LWlyaXM2IChGUEJJVCk6IE5ldy4gIEFkZGVkIHNvIHRoYXQgX191bm9yZGRmMiBpcwoJaW5jbHVkZWQgaW4gbGliZ2NjLmEuCgkoRFBCSVQpOiBMaWtld2lzZS4KCShkcC1iaXQuYyk6IExpa2V3aXNlLgoJKGZwLWJpdC5jKTogTGlrZXdpc2UuCgoyMDAwLTExLTA3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL204OGsvbTg4ay5oIChHTE9CQUxfQVNNX09QKTogQWRkIG1pc3NpbmcgdGFiLgoJKElOVEVSTkFMX0FTTV9PUCk6IEFkZCBtaXNzaW5nIHRhYi4KCjIwMDAtMTEtMDcgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGFsaWFzLmMgKGluaXRfYWxpYXNfYW5hbHlzaXMpLCBjYWxscy5jIChleHBhbmRfY2FsbCwKCWVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpLCBjb21iaW5lLmMgKGluaXRfcmVnX2xhc3RfYXJyYXlzKSwKCWNzZS5jIChuZXdfYmFzaWNfYmxvY2spLCBkYnhvdXQuYyAoZGJ4b3V0X3R5cGUpLCBkaWFnbm9zdGljLmMKCShpbml0X291dHB1dF9idWZmZXIsIHNldF9kaWFnbm9zdGljX2NvbnRleHQpLCBkd2FyZjJvdXQuYwoJKGVxdWF0ZV9kZWNsX251bWJlcl90b19kaWUsIGJ1aWxkX2FiYnJldl90YWJsZSksIGVtaXQtcnRsLmMKCShpbml0X2VtaXRfb25jZSksIGZvbGQtY29uc3QuYyAobXVsX2RvdWJsZSwgZGl2X2FuZF9yb3VuZF9kb3VibGUpLAoJZnVuY3Rpb24uYyAoYXNzaWduX3Bhcm1zKSwgZ2NzZS5jIChjb21wdXRlX2Nhbl9jb3B5LAoJYWxsb2NfZ2NzZV9tZW0sIGFsbG9jX3JlZ19zZXRfbWVtLCByZWNvcmRfb25lX3NldCwKCWNvbXB1dGVfaGFzaF90YWJsZSwgY29tcHV0ZV9zZXRfaGFzaF90YWJsZSwKCWNvbXB1dGVfZXhwcl9oYXNoX3RhYmxlKSwgZ2VuYXR0cnRhYi5jIChvcHRpbWl6ZV9hdHRycyksIGdsb2JhbC5jCgkoZ2xvYmFsX2FsbG9jLCBnbG9iYWxfY29uZmxpY3RzKSwgaGFpZmEtc2NoZWQuYyAoY29tcHV0ZV90cmdfaW5mbywKCWNsZWFyX3VuaXRzLCBzY2hlZHVsZV9ibG9jayksIGludGVncmF0ZS5jIChpbml0aWFsaXplX2Zvcl9pbmxpbmUsCglleHBhbmRfaW5saW5lX2Z1bmN0aW9uKSwganVtcC5jICh0aHJlYWRfanVtcHMpLCBsb2NhbC1hbGxvYy5jCgkobG9jYWxfYWxsb2MpLCBsb29wLmMgKGNvbWJpbmVfbW92YWJsZXMsIGNvdW50X2xvb3BfcmVnc19zZXQsCglsb2FkX21lbXNfYW5kX3JlY291bnRfbG9vcF9yZWdzX3NldCksIHByaW50LXRyZWUuYyAoZGVidWdfdHJlZSksCglyZWdjbGFzcy5jIChpbml0X3JlZ19zZXRzLCBpbml0X3JlZ19zZXRzXzEsIHJlZ2NsYXNzLAoJcmVjb3JkX3JlZ19jbGFzc2VzLCBhbGxvY2F0ZV9yZWdfaW5mbyksIHJlbG9hZC5jCgkoZ2V0X3NlY29uZGFyeV9tZW0sIHJlbW92ZV9hZGRyZXNzX3JlcGxhY2VtZW50cywgZmluZF9yZWxvYWRzKSwKCXJlbG9hZDEuYyAocmVsb2FkLCBzZXRfaW5pdGlhbF9sYWJlbF9vZmZzZXRzLCBmaW5pc2hfc3BpbGxzLAoJcmVsb2FkX2FzX25lZWRlZCwgY2hvb3NlX3JlbG9hZF9yZWdzX2luaXQsCglyZWxvYWRfY3NlX3NpbXBsaWZ5X29wZXJhbmRzKSwgcmVvcmcuYyAoZGJyX3NjaGVkdWxlKSwgc2JpdG1hcC5jCgkoc2JpdG1hcF96ZXJvKSwgc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3BsdXNfbWludXMpLCBzc2EuYwoJKHJlbmFtZV9yZWdpc3RlcnMpLCBzdG10LmMgKGV4cGFuZF9lbmRfY2FzZSksIHVucm9sbC5jCgkodW5yb2xsX2xvb3ApLCB2YXJyYXkuYyAodmFycmF5X2dyb3cpLCBvYmpjL29iamMtYWN0LmM6IFVzZSBtZW1zZXQKCSgpIGluc3RlYWQgb2YgYnplcm8gKCkuCgoyMDAwLTExLTA3ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwL2xhbmctc3BlY3MuaDogRml4IC1zYXZlLXRlbXBzIHNwZWNzIHVuZGVyIFVTRV9DUFBMSUIuCgoyMDAwLTExLTA3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjLWNvbW1vbi5jIChjb21iaW5lX3N0cmluZ3MpOiBPbmx5IHdhcm4gYWJvdXQgbG9uZyBzdHJpbmdzIGZvciBDLgoKVHVlIE5vdiAgNyAxOTo0NDozMCAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckByZWRoYXQuY29tPgoKCSogY29tYmluZS5jIChkaXN0cmlidXRlX25vdGVzKTogRml4IHR5cG8gaW4gbGFzdCBjaGFuZ2UuCgoyMDAwLTExLTA3ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAobW92ZGlfaW50ZXJuYWwzMisxKTogVXNlCglvcGVyYW5kX3N1YnJlZ19mb3JjZSByYXRoZXIgdGhhbiBnZW5fcnR4X1NVQlJFRy4KCShtb3ZkaV9pbnRlcm5hbDMyKzIpOiBMaWtld2lzZS4KCjIwMDAtMTEtMDcgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJKiBjb25maWd1cmUuaW4gKGFybSotKi1saW51eGFvdXQqKTogT2Jzb2xldGUsIGRlbGV0ZWQuCgkqIGNvbmZpZy9hcm0vbGludXgtYW91dC5oOiBMaWtld2lzZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0xMS0wNyAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgoJKiBBQk9VVC1HQ0MtTkxTOiBSZW1vdmUgdGhlIHBhdGNoIGZvciBnZXR0ZXh0IGFzIGl0IGhhcyBiZWVuCglhY2NlcHRlZCBteSB0aGUgZ2V0dGV4dCBtYWludGFpbmVyLgoKMjAwMC0xMS0wNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc3RycGJyayk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfYnVpbHRpbik6IEhhbmRsZSBCVUlMVF9JTl9TVFJQQlJLLgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9TVFJQQlJLKTogTmV3IGVudHJ5LgoKCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogRGVjbGFyZSBidWlsdGluCglzdHJwYnJrLgoKMjAwMC0xMS0wNyAgRGF2aWQgTydCcmllbiAgPG9icmllbkBkcmFnb24ubnV4aS5jb20+CgoJKiBjb25maWcvYWxwaGEvZnJlZWJzZC5oOiBOZXcgZmlsZSAtLSBGcmVlQlNEL2FscGhhIGFyY2hpdGVjdHVyZSBmaWxlLgoJKiBQT1RGSUxFUy5pbjogQWRkIGNvbmZpZy9hbHBoYS9mcmVlYnNkLmgKCSogY29uZmlndXJlLmluOiBBZGQgYWxwaGEqLWZyZWVic2Qgc3VwcG9ydC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0xMS0wNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogdHJlZS5jIChidWlsZF9jb21tb25fdHJlZV9ub2Rlc18yKTogTWFrZSB2YV9saXN0X3R5cGVfbm9kZSBiZSBhCgljb3B5IG9mIHB0cl90eXBlX25vZGUgcmF0aGVyIHRoYW4gcHRyX3R5cGVfbm9kZSBpdHNlbGYuCgpUdWUgTm92ICA3IDA2OjI5OjI0IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiBjb21iaW5lLmMgKHJlY29nX2Zvcl9jb21iaW5lKTogQWxsb2NhdGUgdW5pbml0aWFsaXplZCB2ZWN0b3Igd2l0aAoJcnR2ZWNfYWxsb2MuCgkqIHJlY29nLmMgKGFwcGx5X2NoYW5nZV9ncm91cCk6IExpa2V3aXNlLgoKVHVlIE5vdiAgNyAwNjoyNDowMiAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckByZWRoYXQuY29tPgoKCSogZmxvdy5jICh2ZXJpZnlfbG9jYWxfbGl2ZV9hdF9zdGFydCk6IEJhY2sgb3V0IGxhc3QgY2hhbmdlLgoJKiBjb21iaW5lLmMgKGRpc3RyaWJ1dGVfbm90ZXMpOiBXaGVuIHBhcnRzIG9mIGEgaGFyZCByZWcgYXJlCgluZWl0aGVyIHNldCBub3IgcmVmZXJlbmNlZCBpbiBQTEFDRSwgc2VhcmNoIGJhY2t3YXJkcyBmb3IgYQoJcGxhY2UgdG8gcHV0IGEgUkVHX1VOVVNFRCBub3RlOyBpZiBub25lIGZvdW5kLCBhc2sgZm9yIGZsb3cKCWluZm8gcmVmcmVzaC4KCk1vbiBOb3YgIDYgMjA6MDg6MTMgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvbT4KCgkqIHJlbG9hZDEuYyAoZWxpbWluYXRlX3JlZ3NfaW5faW5zbik6IEFsbG93IGEgc2V0IHRvIGJlIGEgUEFSQUxMRUwKCXdpdGggKGNsb2JiZXIgKG1hdGNoX3NjcmF0Y2guLi4pKS4KCjIwMDAtMTEtMDYgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogYy1sZXguYyAoaW5pdF9jX2xleCk6IElmIGNwcF9zdGFydF9yZWFkIGZhaWxzLCBleGl0IHdpdGgKCWVycm9yIHN0YXR1cy4KCjIwMDAtMTEtMDYgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogdHJhZGNwcC5jIChzcGVjaWFsX3N5bWJvbCk6IEFzc2lnbiBhbiBudWxsIHN0cmluZyByYXRoZXIKCXRoYW4gd3JpdGluZyB0byBhbiB1bmFsbG9jYXRlZCBidWZmZXIuCgoyMDAwLTExLTA2ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jIChfY3BwX2VxdWl2X3Rva2Vucyk6IENoZWNrIGFyZ19ubyBpbiB0aGUKCUNQUF9NQUNST19BUkcgY2FzZS4KCjIwMDAtMTEtMDYgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogYy1sZXguYyAoY19sZXgpOiBSZXBsYWNlIHRvay52YWwuYXV4IHdpdGggdG9rLnZhbC5jIG9yCgl0b2sudmFsLmFyZ19ubyBhcyBhcHByb3ByaWF0ZS4KCSogY3BwZXhwLmMgKGxleCk6IFNpbWlsYXJseS4KCSogY3BwbGV4LmMgKF9jcHBfbGV4X3Rva2VuLCBjcHBfc3BlbGxfdG9rZW4sIGNwcF9vdXRwdXRfdG9rZW4sCgljcHBfZXF1aXZfdG9rZW5zLCBjcHBfY2FuX3Bhc3RlLCBjcHBfYXZvaWRfcGFzdGUpOiBTaW1pbGFybHkuCgkqIGNwcG1hY3JvLmMgKHN0cmluZ2lmeV9hcmcsIHJlcGxhY2VfYXJncywgbGV4X2V4cGFuc2lvbl90b2tlbiwKCWNwcF9tYWNyb19kZWZpbml0aW9uKTogU2ltaWxhcmx5LgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF90b2tlbik6IFJlcGxhY2UgYXV4IHdpdGggYyBhbmQgYXJnX25vLgoKMjAwMC0xMS0wNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKGFkZGRpMyk6IElmIG9wZXJhbmRzWzJdIGlzIDQwOTYgYW5kCglvcGVyYW5kc1sxXSBpcyBjb25zdGFudCwgY2FsY3VsYXRlIHRoZSBzdW0gYW5kIGdlbmVyYXRlIG1vdmRpLgoJKGFkZHNpMyk6IFNpbWlsYXJseS4gIFVzZSBTSW1vZGUgaW4gY2FsbCB0byBhcml0aF80MDk2X29wZXJhbmQuCgkoc3Vic2kzKTogVXNlIFNJbW9kZSBpbiBjYWxsIHRvIGFyaXRoXzQwOTZfb3BlcmFuZC4KCjIwMDAtMTEtMDYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKEFTTV9PVVRQVVRfTUlfVEhVTkspOiBPbiBzcGFyYzY0IHdlIG5lZWQgdG8KCWFkanVzdCAlbzEsIG5vdCAlbzAgaWYgdGhlIHJldHVybiB0eXBlIGlzIGxhcmdlIHN0cnVjdHVyZS4KCjIwMDAtMTEtMDYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChzbXVsc2kzX2hpZ2hwYXJ0X3Y4cGx1cywgYXNobGRpM192OHBsdXMrMSwKCXVwZGF0ZV9yZXR1cm4sIGZsdXNoLCBmbHVzaGRpLCBmZnNzaTIsIGZmc2RpMik6IEZpeCBvdXRwdXQgZm9ybWF0dGluZy4KClNhdCBTZXAgMjMgMTk6MTA6MjAgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4gJiBNYXJlayBNaWNoYWxraWV3aWN6ICA8bWFyZWttQGxpbnV4Lm9yZy5wbD4KCgkqIGV4cG1lZC5jIChleHBhbmRfZGl2bW9kKTogRm9yIHNpZ25lZCBkaXZpZGUgYnkgMiwgcHJlZmVyCglhIGJyYW5jaCBhbmQgZmV3ZXIgc2hpZnRzIGlmIGJyYW5jaGVzIGFyZSB2ZXJ5IGNoZWFwLgoKMjAwMC0xMS0wNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSBhbGwgdGFyZ2V0cyByZWxhdGVkIHRvIGJ1aWxkaW5nCglkaXN0cmlidXRpb25zIGFuZCBkaWZmcywgb3IgSU5TVEFMTC4KCSogSU5TVEFMTCwgaW5zdGFsbDEudGV4aTogUmVtb3ZlLgoJKiBjb25maWd1cmUuaW46IFJlbW92ZSBtZW50aW9uIG9mIGRpc3RkaXIuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogb2JqYy9NYWtlLWxhbmcuaW46IFJlbW92ZSBtZW50aW9uIG9mIGRpc3RkaXIuCgoyMDAwLTExLTA0ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcC50ZXhpOiBVcGRhdGUgZm9yIF9QcmFnbWEuCgoyMDAwLTExLTA0ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnY2MudGV4aSAoQ29udHJpYnV0aW5nKTogVXBkYXRlIFVSTCBmb3IgcHJvamVjdHMgd2ViIHBhZ2UuCgoyMDAwLTExLTA0ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jIChwYXJzZV9zdHJpbmcpOiBEb24ndCBhbGxvdyBtdWx0aWxpbmUgc3RyaW5ncyBpbgoJI2luY2x1ZGUgZmFtaWx5IGRpcmVjdGl2ZXMuCgoyMDAwLTExLTA0ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxpYi5jIChkb19saW5lKTogT25seSB3YXJuIHBlZGFudGljYWxseSBpZiBub3QgcmVhZGluZwoJcHJlcHJvY2Vzc2VkIGlucHV0LgoKMjAwMC0xMS0wNCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjYWxscy5jIChlbWl0X2NhbGxfMSkgW3NpYmNhbGxfcG9wXTogVXNlIG5fcG9wcGVkIGluc3RlYWQgb2YKCVJFVFVSTl9QT1BTX0FSR1MoKS4KCjIwMDAtMTEtMDMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5zdGFuZm9yZC5lZHU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHJsZW4pOiBSZW1vdmUgdW51c2VkIG1vZGUKCWFyZ3VtZW50LgoJKiBnY2MuYyAocHJvY2Vzc19jb21tYW5kKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCSogZm9sZC1jb25zdC5jOiBJbmNsdWRlIGV4cHIuaC4KCSogcmVjb2cuYzogSW5jbHVkZSByZWxvYWQuaC4KCSogTWFrZWZpbGUuaW4gKHJlY29nLm8sIGZvbGQtY29uc3Qubyk6IFVwZGF0ZSBkZXBzLgoKMjAwMC0xMS0wMiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogZml4aW5jL2dudS1yZWdleC5jOiBDaGFuZ2UgJ0NZR05VUyBMT0NBTCcgdG8gJ0VHQ1MgTE9DQUwnLgoKRnJpIE5vdiAgMyAxMzo0MTowNCAyMDAwICBNYXJrIFAgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9pcmlzNi5oIChTVUJUQVJHRVRfQ0MxX1NQRUMpOiBSZW1vdmUgLXN0YXRpYwoJaGFuZGxpbmcuCgkoU1RBUlRGSUxFX1NQRUMpOiBMaWtld2lzZS4KCShMSU5LX1NQRUMpOiBMaWtld2lzZS4KCjIwMDAtMTEtMDMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChmb2xkLWNvbnN0Lm8pOiBEZXBlbmQgb24gJChHR0NfSCksIG5vdCBnZ2MuaC4KCSh0b3BsZXYubyk6IExpa2V3aXNlIGZvciAkKExPT1BfSCkvbG9vcC5oIGFuZCAkKFJFR1NfSCkvcmVncy5oLgoJKHNpbXBsaWZ5LXJ0eC5vKTogTGlrZXdpc2UgZm9yICQoR0dDX0gpL2dnYy5oLgoKMjAwMC0xMS0wMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1kZWNsLmMgKGR1cGxpY2F0ZV9kZWNscywgY29weV9sYW5nX2RlY2wpLCBkd2FyZm91dC5jCgkoZHdhcmZvdXRfbGluZSksIGdjYy5jIChtYWluLCBzYXZlX3N0cmluZyksIHRyZWUuYyAoaW5pdF9vYnN0YWNrcywKCXBlcm1fY2FsbG9jLCBnZXRfaWRlbnRpZmllciwgbWF5YmVfZ2V0X2lkZW50aWZpZXIsCglyZWFsX3ZhbHVlX2Zyb21faW50X2NzdCwgc2ltcGxlX2NzdF9lcXVhbCksIHZhcmFzbS5jCgkoYXNzZW1ibGVfbmFtZSwgYXNzZW1ibGVfcmVhbCwgaW1tZWRfcmVhbF9jb25zdF8xLAoJY29tcGFyZV9jb25zdGFudF8xLCBkZWNvZGVfcnR4X2NvbnN0LCBvdXRwdXRfY29uc3RhbnRfcG9vbCk6IFVzZQoJc3RycmNociAoKSBpbnN0ZWFkIG9mIHJpbmRleCAoKS4gIFVzZSBtZW1jbXAgKCkgaW5zdGVhZCBvZiBiY21wCgkoKS4gIFVzZSBtZW1jcHkgKCkgaW5zdGVhZCBvZiBiY29weSAoKS4gIFVzZSBtZW1zZXQgKCkgaW5zdGVhZCBvZgoJYnplcm8gKCkuCgoyMDAwLTExLTAzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY3BwZmlsZXMuYyAob3Blbl9maWxlKTogSWYgYWxyZWFkeSByZWFkLCB0aGVuIGRvbid0IHJlb3Blbi4KCUltbWVkaWF0ZWx5IGNsb3NlIGFuIGVtcHR5IGZpbGUuCgoyMDAwLTExLTAxICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIGV4cHIuaCAoZm9sZF9idWlsdGluKTogTW92ZSBkZWNsYXJhdGlvbi4uLgoJKiB0cmVlLmggKGZvbGRfYnVpbHRpbik6IC4uLiBoZXJlLgoKRnJpIE5vdiAgMyAwNTo0MTowNyAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckByZWRoYXQuY29tPgoKCSogZmxvdy5jICh2ZXJpZnlfbG9jYWxfbGl2ZV9hdF9zdGFydCk6IEFsbG93IGhhcmQgcmVncyB0byBkaWUuCgoyMDAwLTExLTAyICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCmNvbmZpZzoKCSogYTI5ay9hMjlrLmgsIGEyOWsvdW5peC5oLCBhMjlrL3Z4MjlrLmgsCglhbHBoYS9hbHBoYS1pbnRlcml4LmgsIGFscGhhL2FscGhhLmgsIGFscGhhL2xpbnV4LmgsCglhbHBoYS9vcGVuYnNkLmgsIGFscGhhL29zZi5oLCBhbHBoYS92bXMuaCwgYWxwaGEvdnh3b3Jrcy5oLAoJYWxwaGEvd2luLW50LmgsIGFyYy9hcmMuaCwgYXJtL2FybS5oLCBhcm0vY29uaXgtZWxmLmgsCglhcm0vbGludXgtYW91dC5oLCBhcm0vbGludXgtZWxmLmgsIGFybS9uZXRic2QuaCwgYXJtL3Jpc2NpeC5oLAoJYXJtL3Jpc2NpeDEtMS5oLCBhcm0vc2VtaWFvZi5oLCBhcm0vdW5rbm93bi1lbGYtb2FiaS5oLCBhcm0vdnhhcm0uaCwKCWM0eC9ydGVtcy5oLCBjbGlwcGVyL2NsaXguaCwgY29udmV4L2NvbnZleC5oLCBkMzB2L2QzMHYuaCwKCWVseHNpL2VseHNpLmgsIGZyMzAvZnIzMC5oLCBoODMwMC9oODMwMC5oLCBpMzcwL2xpbnV4LmgsIGkzNzAvbXZzLmgsCglpMzcwL29lLmgsIGkzODYvMzg2YnNkLmgsIGkzODYvYWl4Mzg2bmcuaCwgaTM4Ni9iZW9zLWVsZi5oLAoJaTM4Ni9ic2QzODYuaCwgaTM4Ni9jcnRkbGwuaCwgaTM4Ni9jeWd3aW4uaCwgaTM4Ni9kZ3V4LmgsCglpMzg2L2RqZ3BwLXJ0ZW1zLmgsIGkzODYvZGpncHAuaCwgaTM4Ni9mcmVlYnNkLWFvdXQuaCwgaTM4Ni9mcmVlYnNkLmgsCglpMzg2L2dudS5oLCBpMzg2L2kzODYtaW50ZXJpeC5oLCBpMzg2L2kzODYuaCwgaTM4Ni9saW51eC1hb3V0LmgsCglpMzg2L2xpbnV4LW9sZGxkLmgsIGkzODYvbGludXguaCwgaTM4Ni9seW54LW5nLmgsIGkzODYvbHlueC5oLAoJaTM4Ni9tYWNoLmgsIGkzODYvbWluZ3czMi5oLCBpMzg2L21vc3MuaCwgaTM4Ni9uZXRic2QuaCwKCWkzODYvbmV0d2FyZS5oLCBpMzg2L25leHQuaCwgaTM4Ni9vcGVuYnNkLmgsIGkzODYvb3NmMWVsZi5oLAoJaTM4Ni9vc2ZlbGYuaCwgaTM4Ni9vc2Zyb3NlLmgsIGkzODYvcHR4NC1pLmgsIGkzODYvcnRlbXMuaCwKCWkzODYvcnRlbXNlbGYuaCwgaTM4Ni9zY28uaCwgaTM4Ni9zY280LmgsIGkzODYvc2NvNGRieC5oLCBpMzg2L3NjbzUuaCwKCWkzODYvc2NvZGJ4LmgsIGkzODYvc2VxdWVudC5oLCBpMzg2L3NvbDIuaCwgaTM4Ni9zdW4uaCwgaTM4Ni9zeXN2My5oLAoJaTM4Ni9zeXN2NC5oLCBpMzg2L3V3aW4uaCwgaTM4Ni92c3RhLmgsIGkzODYvdnhpMzg2LmgsIGkzODYvd2luLW50LmgsCglpMzg2L3dpbjMyLmgsIGk4NjAvZngyODAwLmgsIGk4NjAvaTg2MC5oLCBpODYwL21hY2guaCwgaTg2MC9zeXN2My5oLAoJaTg2MC9zeXN2NC5oLCBpOTYwL2k5NjAuaCwgaTk2MC9ydGVtcy5oLCBpOTYwL3Z4OTYwLWNvZmYuaCwKCWlhNjQvaWE2NC5oLCBpYTY0L2xpbnV4LmgsIG0zMnIvbTMyci5oLCBtNjhrLzNiMS5oLCBtNjhrLzNiMWcuaCwKCW02OGsvYS11eC5oLCBtNjhrL2FsdG9zMzA2OC5oLCBtNjhrL2FtaXguaCwgbTY4ay9hcG9sbG82OC5oLAoJbTY4ay9jcmRzLmgsIG02OGsvY3RpeC5oLCBtNjhrL2RweDIuaCwgbTY4ay9ocDJic2QuaCwgbTY4ay9ocDMyMC5oLAoJbTY4ay9ocDNic2QuaCwgbTY4ay9ocDNic2Q0NC5oLCBtNjhrL2lzaS5oLCBtNjhrL2xpbnV4LWFvdXQuaCwKCW02OGsvbGludXguaCwgbTY4ay9seW54LW5nLmgsIG02OGsvbHlueC5oLCBtNjhrL202OGtlbWIuaCwKCW02OGsvbTY4a3Y0LmgsIG02OGsvbW90MzMwMC5oLCBtNjhrL25ldGJzZC5oLCBtNjhrL25ld3MuaCwKCW02OGsvbmV4dC5oLCBtNjhrL29wZW5ic2QuaCwgbTY4ay9wYmIuaCwgbTY4ay9wbGV4dXMuaCwgbTY4ay9ydGVtcy5oLAoJbTY4ay9ydGVtc2VsZi5oLCBtNjhrL3N1bjIuaCwgbTY4ay9zdW4zLmgsIG02OGsvc3VuM21hY2guaCwKCW02OGsvdG93ZXItYXMuaCwgbTY4ay90b3dlci5oLCBtNjhrL3Z4bTY4ay5oLCBtODhrL2RndXguaCwKCW04OGsvZG9scGguaCwgbTg4ay9sdW5hLmgsIG04OGsvbTg4ay1hb3V0LmgsIG04OGsvbTg4ay1jb2ZmLmgsCgltODhrL29wZW5ic2QuaCwgbTg4ay9zeXN2My5oLCBtODhrL3N5c3Y0LmgsIG1pcHMvYnNkLTQuaCwKCW1pcHMvYnNkLTUuaCwgbWlwcy9kZWMtYnNkLmgsIG1pcHMvZGVjLW9zZjEuaCwgbWlwcy9nbnUuaCwKCW1pcHMvaXJpczMuaCwgbWlwcy9pcmlzNS5oLCBtaXBzL2lyaXM2LmgsIG1pcHMvbGludXguaCwgbWlwcy9taXBzLmgsCgltaXBzL25ldGJzZC5oLCBtaXBzL25ld3M0LmgsIG1pcHMvbmV3czUuaCwgbWlwcy9ud3MzMjUwdjQuaCwKCW1pcHMvb3BlbmJzZC5oLCBtaXBzL29zZnJvc2UuaCwgbWlwcy9ydGVtczY0LmgsIG1pcHMvc25pLXN2cjQuaCwKCW1pcHMvc3ZyMy00LmgsIG1pcHMvc3ZyMy01LmgsIG1pcHMvc3ZyNC00LmgsIG1pcHMvc3ZyNC01LmgsCgltaXBzL3VsdHJpeC5oLCBuczMyay9lbmNvcmUuaCwgbnMzMmsvbWVybGluLmgsIG5zMzJrL25ldGJzZC5oLAoJbnMzMmsvbnMzMmsuaCwgbnMzMmsvcGM1MzItbWFjaC5oLCBuczMyay9wYzUzMi5oLCBuczMyay9zZXF1ZW50LmgsCgluczMyay90ZWs2MDAwLmgsIG5zMzJrL3RlazYxMDAuaCwgbnMzMmsvdGVrNjIwMC5oLCBwYS9wYS1oaXV4LmgsCglwYS9wYS1ocHV4LmgsIHBhL3BhLWhwdXg3LmgsIHBhL3BhLWxpbnV4LmgsIHBhL3BhLW9zZi5oLAoJcGEvcGEtcHJvLWVuZC5oLCBwYS9wYS5oLCBwYS9ydGVtcy5oLCBwai9saW51eC5oLCBwai9wai5oLAoJcm9tcC9yb21wLmgsIHJzNjAwMC9haXguaCwgcnM2MDAwL2FpeDMxLmgsIHJzNjAwMC9haXg0MS5oLAoJcnM2MDAwL2FpeDQzLmgsIHJzNjAwMC9iZW9zLmgsIHJzNjAwMC9lYWJpLmgsIHJzNjAwMC9lYWJpc2ltLmgsCglyczYwMDAvbGludXguaCwgcnM2MDAwL2x5bnguaCwgcnM2MDAwL21hY2guaCwgcnM2MDAwL3J0ZW1zLmgsCglyczYwMDAvc3lzdjQuaCwgcnM2MDAwL3Z4cHBjLmgsIHNoL2VsZi5oLCBzaC9saW51eC5oLCBzaC9ydGVtcy5oLAoJc2gvcnRlbXNlbGYuaCwgc2gvc2guaCwgc3BhcmMvYW91dC5oLCBzcGFyYy9lbGYuaCwgc3BhcmMvbGludXgtYW91dC5oLAoJc3BhcmMvbGludXguaCwgc3BhcmMvbGludXg2NC5oLCBzcGFyYy9saXRlLmgsIHNwYXJjL2xpdGVjb2ZmLmgsCglzcGFyYy9saXRlZWxmLmgsIHNwYXJjL2x5bngtbmcuaCwgc3BhcmMvbHlueC5oLCBzcGFyYy9uZXRic2QuaCwKCXNwYXJjL29wZW5ic2QuaCwgc3BhcmMvcGJkLmgsIHNwYXJjL3J0ZW1zLmgsIHNwYXJjL3J0ZW1zZWxmLmgsCglzcGFyYy9zb2wyLXNsZC02NC5oLCBzcGFyYy9zb2wyLmgsIHNwYXJjL3NwNjQtYW91dC5oLAoJc3BhcmMvc3A2NC1lbGYuaCwgc3BhcmMvc3A4NngtYW91dC5oLCBzcGFyYy9zcDg2eC1lbGYuaCwKCXNwYXJjL3NwYXJjLmgsIHNwYXJjL3N5c3Y0LmgsIHNwYXJjL3Z4c2ltLmgsIHNwYXJjL3Z4c3BhcmMuaCwKCXY4NTAvcnRlbXMuaCwgdmF4L25ldGJzZC5oLCB2YXgvb3BlbmJzZC5oLCB2YXgvdWx0cml4LmgsIHZheC92YXguaCwKCXZheC92YXh2LmgsIHZheC92bXMuaCwgd2UzMmsvd2UzMmsuaAoKCVJlcGxhY2UgLUEoKSB3aXRoIC1BPSwgdGhlIG5ldyBhc3NlcnRpb24gc3ludGF4LgoKVGh1IE5vdiAgMiAyMTo1MjozNSAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckByZWRoYXQuY29tPgoKCSogY29tYmluZS5jIChkaXN0cmlidXRlX25vdGVzKTogVXNlIHJ0eF9lcXVhbF9wIHRvIGNoZWNrIGVsaW1faTIgLwoJZWxpbV9pMS4KCUluIFJFR19ERUFEIGhhbmRsaW5nOiBXaGVuIGhhbmRsaW5nIHBhcnRzIG9mIG11bHRpLWhhcmQtcmVnIGhhcmQKCXJlZ2lzdGVycywgaW5jcmVtZW50IHRoZSBsb29wIGNvdW50ZXIgYnkgdGhlIHNpemUgb2YgdGhlIHBhcnRzOwoJdXNlIHJlY3Vyc2lvbiB0byBoYW5kbGUgaW5kaXZpZHVhbCBwYXJ0cy4KCjIwMDAtMTEtMDIgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY29uZmlndXJlLmluOiBNYWtlIGludGVncmF0ZWQgQ1BQIHRoZSBkZWZhdWx0LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgpUaHUgTm92ICAyIDE5OjIwOjEyIDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiByZWxvYWQuYyAoZmluZF9lcXVpdl9yZWcpOiBUZXN0IGFsbCBoYXJkIHJlZ2lzdGVycyBmb3IgbWVtYmVyc2hpcAoJaW4gdGhlIHJlcXVlc3RlZCBjbGFzcy4KCjIwMDAtMTEtMDIgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGNvbGxlY3QyLmMgKG1haW4sIHdyaXRlX2NfZmlsZV9zdGF0KSwgZ2NjLmMgKHRyYW5zbGF0ZV9vcHRpb25zLAoJcHJvY2Vzc19jb21tYW5kLCBtYWluKSwgZ2Nvdi5jIChvcGVuX2ZpbGVzLCBvdXRwdXRfZGF0YSksIHRsaW5rLmMKCShmcm9iX2V4dGVuc2lvbiwgc2Nhbl9saW5rZXJfb3V0cHV0KSwgdG9wbGV2LmMKCShmaWxlX25hbWVfbm9uZGlyZWN0b3J5KTogVXNlIHN0cmNociAoKSBhbmQgc3RycmNociAoKSBpbnN0ZWFkIG9mCglpbmRleCAoKSBhbmQgcmluZGV4ICgpLgoKMjAwMC0xMS0wMiAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoZ2V0X2ZsYWdfc3BlYywgY2hlY2tfZm9ybWF0X2luZm9fbWFpbiwKCWNoZWNrX2Zvcm1hdF90eXBlcyk6IFVzZSBzdHJjaHIgKCkgaW5zdGVhZCBvZiBpbmRleCAoKS4gIENvbXBhcmUKCWFnYWluc3QgZXJyb3JfbWFya19ub2RlIGluc3RlYWQgb2YgY29tcGFyaW5nIHRoZSBUUkVFX0NPREUgYWdhaW5zdAoJRVJST1JfTUFSSy4KCjIwMDAtMTEtMDIgIFphY2sgV2VpbmJlcmcgPHphY2t3QFN0YW5mb3JkLkVEVT4KCglJbnRlZ3JhdGVkIENQUC4KCgkqIGMtbGV4LmMgKGluaXRfY19sZXgpOiBVcGRhdGUgY3BwX3N0YXJ0X3JlYWQgY2FsbC4KCShjYl9pZGVudCk6IFVwZGF0ZSBmb3IgbmV3IGNhbGxiYWNrIHByb3RvdHlwZS4KCShjYl9kZWZfcHJhZ21hKTogVXBkYXRlIGZvciBuZXcgY3BwX2dldF90b2tlbiBwcm90b3R5cGUuCgkoY19sZXgpOiBTaW1pbGFybHkuICBVc2UgY3BwX2dldF9saW5lLgoKCSogYy1wYXJzZS5pbiAoZmluaXNoX3BhcnNlKTogVXBkYXRlIGZvciBuZXcgY3BwX2ZpbmlzaAoJcHJvdG90eXBlLgoKCSogY3AvbGV4LmMgKGZpbmlzaF9wYXJzZSk6IFNpbWlsYXJseS4KCjIwMDAtMTEtMDEgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIG1hY2htb2RlLmRlZjogQWRkIFYxNlFJbW9kZS4KCjIwMDAtMTEtMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAobG9jX2Rlc2NyaXB0b3JfZnJvbV90cmVlKTogQ2hlY2sgZm9yIG51bGwgcmVzdWx0Cglmcm9tIHJ0bF9mb3JfZGVjbF9sb2NhdGlvbi4KCShhZGRfbG9jYXRpb25fb3JfY29uc3RfdmFsdWVfYXR0cmlidXRlKTogTGlrZXdpc2UuCgoyMDAwLTExLTAxICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxpYi5jIChydW5fZGlyZWN0aXZlKTogVXNlIGNvcnJlY3QgbGluZSBudW1iZXIgZm9yIG91dHB1dAoJb2YgX1ByYWdtYS4gIFJlbWVtYmVyIGFueSBpbi1wcm9ncmVzcyBkaXJlY3RpdmUuCgoJKiBnY2MuZGcvY3BwL3ZhcmFyZzIuYywgZ2NjLmRnL2NwcC9fUHJhZ20xLmM6IE5ldyB0ZXN0cy4KCjIwMDAtMTEtMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBzdG10LmMgKGV4cGFuZF9zdGFydF9udWxsX2xvb3ApOiBTZXQgY29udGludWVfbGFiZWwuCgoyMDAwLTExLTAxICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl9jb25zdGFudF9wLCBmb2xkX2J1aWx0aW4pOiBOZXcgZnVuY3Rpb25zLgoJKGV4cGFuZF9idWlsdGluX2NvbnN0YW50X3ApOiBNb3ZlIHBhcnRzIG9mIHRoZSBjb2RlIGludG8KCWZvbGRfYnVpbHRpbl9jb25zdGFudF9wLgoJKGV4cGFuZF9idWlsdGluX3N0cmxlbik6IE1vdmUgcGFydHMgb2YgdGhlIGNvZGUgaW50byBmb2xkX2J1aWx0aW4uCgkqIGV4cHIuaCAoZm9sZF9idWlsdGluKTogRGVjbGFyZS4KCSogZm9sZC1jb25zdC5jIChmb2xkKTogSGFuZGxlIGJ1aWx0aW4gY2FsbHMuCgoJKiBjLXR5cGVjay5jIChidWlsZF9mdW5jdGlvbl9jYWxsKTogQ2FsbCBmb2xkIG9uIHRoZSBDQUxMX0VYUFIuCgoyMDAwLTExLTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogc3RtdC5jIChleHBhbmRfc3RhcnRfbnVsbF9sb29wKTogTmV3LgoJKGV4cGFuZF9lbmRfbnVsbF9sb29wKTogTmV3LgoJKiBjLXNlbWFudGljcy5jIChnZW5ydGxfZG9fc3RtdCk6IFVzZSB0aGVtLgoJKiB0cmVlLmg6IERlY2xhcmUgdGhlbS4KCjIwMDAtMTEtMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjcHBtYWluLmMgKHNjYW5fYnVmZmVyKTogRG9uJ3QgYXZvaWQgcGFzdGUgZm9yIGFzc2VtYmx5LgoKMjAwMC0xMS0wMSAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjLXBhcnNlLmluIChfeXlsZXgpOiBSZW1vdmUgQ1BQX0JBQ0tTTEFTSCBjYXNlLgoJKiBjcC9zcGV3LmM6IFNpbWlsYXJseS4KCSogY3BwbGV4LmMgKF9jcHBfbGV4X3Rva2VuKTogQmFja3NsYXNoZXMgYXJlIG5vdyBDUFBfT1RIRVIuCgkqIGNwcG1hY3JvLmMgKHN0cmluZ2lmeV9hcmcpOiBTaW1pbGFybHkuCgkqIGNwcGxpYi5oIChDUFBfQkFDS1NMQVNIKTogRGVsZXRlLgoKMjAwMC0xMC0zMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc3Ryc3RyKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9idWlsdGluKTogSGFuZGxlIEJVSUxUX0lOX1NUUlNUUiBhbmQgQlVJTFRfSU5fU1RSQ0hSLgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9TVFJTVFIsIEJVSUxUX0lOX1NUUkNIUik6IE5ldyBlbnRyaWVzLgoKCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogRGVjbGFyZSBidWlsdGluIHN0cnN0cgoJYW5kIGJ1aWx0aW4gc3RyY2hyLgoKMjAwMC0xMC0zMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoZmNtb3ZfY29tcGFyaXNvbl9vcGVyYXRvcik6IENoZWNrIGZvcgoJQ0NGUG1vZGUgb3IgQ0NGUFVtb2RlIGluc3RlYWQgb2YgQ0Ntb2RlLgoJKGl4ODZfZXhwYW5kX2ZwX21vdmNjKTogQ2FsbCBpeDg2X2V4cGFuZF9zZXRjYyBmb3IgbW9zdAoJdW5vcmRlcmVkIG9wZXJhdGlvbnMgYXMgd2VsbC4KCjIwMDAtMTAtMzEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjLXNlbWFudGljcy5jIChnZW5ydGxfZG9fc3RtdCk6IFVzZSBpbnRlZ2VyX3plcm9wIGluc3RlYWQKCW9mIGludGVnZXJfemVyb19ub2RlLgoKMjAwMC0xMC0zMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtc2VtYW50aWNzLmMgKGdlbnJ0bF9kb19zdG10KTogU3BlY2lhbCBjYXNlIGRvL3doaWxlKDApLgoKMjAwMC0xMC0zMSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vdW5rbm93bi1lbGYuaCAoVU5JUVVFX1NFQ1RJT05fUCk6IERvIG5vdCBhbGxvdwoJLWZkYXRhLXNlY3Rpb25zIHRvIG92ZXJyaWRlIHRoZSBzZWN0aW9uIGF0dHJpYnV0ZSBvZiBhIERFQ0wuCgoyMDAwLTEwLTMxICBDaHJpcyBEZW1ldHJpb3UgIDxjZ2RAc2lieXRlLmNvbT4KCgkqIGxpYmdjYzIuYyAoX19zaHRhYik6IFJlbW92ZSBfX3NodGFiIHZhcmlhYmxlLgoJKiBsaWJnY2Mtc3RkLnZlciAoR0NDXzMuMCk6IFJlbW92ZSBfX3NodGFiIGZyb20gc3ltYm9sIGxpc3QuCgkqIE1ha2VmaWxlLmluIChMSUIyRlVOQ1MpOiBSZW1vdmUgX3NodGFiIGZyb20gbGlzdCBvZiBsaWJyYXJ5CgltZW1iZXJzLgoKMjAwMC0xMC0zMSAgSmltIFdpbHNvbiAgPHdpbHNvbkByZWRoYXQuY29tPgoKCSogZGVmYXVsdHMuaCAoQVNNX09VVFBVVF9ERUJVR19MQUJFTCk6IE5ldy4KCSogdG0udGV4aSAoQVNNX09VVFBVVF9ERUJVR19MQUJFTCk6IERvY3VtZW50LgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2JlZ2luX2Jsb2NrKTogVXNlIEFTTV9PVVRQVVRfREVCVUdfTEFCRUwKCWluc3RlYWQgb2YgQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTC4KCShkd2FyZjJvdXRfZW5kX2Jsb2NrLCBkd2FyZjJvdXRfbGFiZWwpOiBMaWtld2lzZS4KCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuLCBjYXNlIE5PVEVfSU5TTl9ERUxFVEVEX0xBQkVMKTogTGlrZXdpc2UKCSogY29uZmlnL2lhNjQvaWE2NC5oIChBU01fT1VUUFVUX0RFQlVHX0xBQkVMKTogRGVmaW5lLgoKMjAwMC0xMC0zMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChzdHJ1Y3QgZHdfbG9jX2Rlc2NyX3N0cnVjdCk6IEFkZCBkd19sb2NfYWRkci4KCShzaXplX29mX2xvY3MpOiBTZXQgaXQuCgkob3V0cHV0X2xvY19vcGVyYW5kcyk6IFVzZSBpdCB0byBjb21wdXRlIGJyYW5jaCBkaXNwbGFjZW1lbnQuCgkoaW50X2xvY19kZXNjcmlwdG9yKTogTmV3LgoJKG1lbV9sb2NfZGVzY3JpcHRvcik6IERlcmVmZXJlbmNlIG1lbW9yeSBpbiB0aGUgcHJvcGVyIHNpemUuCglVc2UgRFdfT1BfcGx1c191Y29uc3Qgd2hlbiBwb3NzaWJsZS4gIFVzZSBpbnRfbG9jX2Rlc2NyaXB0b3IuCgkobG9jX2Rlc2NyaXB0b3JfZnJvbV90cmVlKTogTmV3LgoJKHJ0bF9mb3JfZGVjbF9sb2NhdGlvbik6IEJyZWFrIG91dCBmcm9tIC4uLgoJKGFkZF9sb2NhdGlvbl9vcl9jb25zdF92YWx1ZV9hdHRyaWJ1dGUpOiAuLi4gaGVyZS4KCShhZGRfYm91bmRfaW5mbyk6IFVzZSBsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWUuCgoyMDAwLTEwLTMxICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcC50ZXhpOiBVcGRhdGUgZm9yIG5ldyBjb21tYW5kIGxpbmUgYXNzZXJ0aW9uIHN5bnRheC4KCSogY3BwbGliLmMgKGNwcF9kZWZpbmUpOiBTaW1wbGlmeSBhIGJpdC4KCShjcHBfYXNzZXJ0LCBjcHBfdW5hc3NlcnQpOiBVc2UgaGFuZGxlX2Fzc2VydGlvbi4KCShoYW5kbGVfYXNzZXJ0aW9uKTogTmV3IGZ1bmN0aW9uOyBhY2NlcHQgbmV3IGNvbW1hbmQgbGluZQoJc3ludGF4IHdpdGggJz0nLgoJKiB0ZXN0c3VpdGUvZ2NjLmRnL2NwcC9hc3NlcnQzLmM6IE5ldyB0ZXN0cy4KCjIwMDAtMTAtMzEgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbWFjcm8uYyAoU1REQ18wX0lOX1NZU1RFTV9IRUFERVJTKTogRGVmaW5lIHRvIDAgaWYKCXVuZGVmaW5lZC4gIFJlbW92ZSAjaWZkZWYgY2hlY2suCgkqIGNvbmZpZy9pMzg2L3NvbDIuaCwgY29uZmlnL3JzNjAwMC9zb2wyLmgsIGNvbmZpZy9zcGFyYy9zb2wyLmg6CglEZWZpbmUgU1REQ18wX0lOX1NZU1RFTV9IRUFERVJTIHRvIDEuCgoyMDAwLTEwLTMxICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgkgICAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lmg6IENsYXJpZnkgQ0NOT21vZGUgZGVzY3JpcHRpb24gaW4gY29tbWVudC4KCShFWFRSQV9DQ19NT0RFUyk6IFJlbW92ZSBDQ1JDbW9kZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2NvbXBhcmlzb25fb3BlcmF0b3IpOiBSZW1vdmUgQ0NSQ21vZGUuCgkocHV0X2NvbmRpdGlvbl9jb2RlLCBpeDg2X21hdGNoX2NjbW9kZSk6IExpa2V3aXNlLgoJKGl4ODZfY2NfbW9kZSk6IExpa2V3aXNlLiAgRml4IGNvbW1lbnQuCgkoaXg4Nl9leHBhbmRfc3RybGVuc2lfdW5yb2xsXzEpOiAqcmMgcGF0dGVybnMgYXJlIGdvbmUuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQ6IEFkZCB1bnNwZWMgMTIgZGVzY3JpcHRpb24uCgkoYWRkZGkzIHNwbGl0KTogVXNlIHVuc3BlYyAxMiBpbnN0ZWFkIG9mIENDUkNtb2RlLgoJKGFkZHNpM19jYXJyeV9yYyk6IFJlbW92ZS4KCShhZGRzaTNfY2MsIGFkZHFpM19jYyk6IE5ldyBwYXR0ZXJucy4KCShhZGRzaV8zKTogU3dhcCBvcGVyYW5kcywgbWF0Y2ggQ0NabW9kZS4KCShhZGRzaV80KTogUmV3cml0dGVuLgoJKGFkZHNpXzUpOiBSZW5hbWVkIGZyb20gYWRkc2lfNi4KCShhZGRzaV82KTogUmVtb3ZlZC4KCShhZGRoaV8zKTogU3dhcCBvcGVyYW5kcywgbWF0Y2ggQ0NabW9kZS4KCShhZGRoaV80KTogUmV3cml0dGVuLgoJKGFkZGhpXzUpOiBSZW5hbWVkIGZyb20gYWRkaGlfNi4KCShhZGRoaV82KTogUmVtb3ZlZC4KCShhZGRxaV8zKTogU3dhcCBvcGVyYW5kcywgbWF0Y2ggQ0NabW9kZS4KCShhZGRxaV80KTogUmV3cml0dGVuLgoJKGFkZHFpXzUpOiBSZW5hbWVkIGZyb20gYWRkcWlfNi4gIFVzZSA9cSBjb25zdHJhaW50IGZvciBjbG9iYmVyLgoJKHN1YnNpM19jYXJyeV9yYyk6IFJlbW92ZWQuCgkoaW9ycWlfMyk6IFVzZSA9cSBjb25zdHJhaW50IGZvciBjbG9iYmVyLgoJKHhvcnFpX2NjXzIpOiBMaWtld2lzZS4KCShuZWdkaTJfMSBzcGxpdCk6IERvbid0IHVzZSBDQ1JDbW9kZSwgdXNlIGx0dSBpbnN0ZWFkIG9mIGd0dS4KCSh4ODZfbW92c2ljY18wX20xX3JjKTogUmVtb3ZlZC4KCShjbXA/aSBwZWVwaG9sZXMpOiBSZW1vdmUgbmVnLiAgVXNlIENDR0Ntb2RlIGluc3RlYWQgb2YgQ0NSQ21vZGUuCgoyMDAwLTEwLTMxICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLXR5cGVjay5jIChidWlsZF91bmFyeV9vcCk6IElmIHBlZGFudGljLCBwZWR3YXJuIGZvciBpbmNyZW1lbnQKCWFuZCBkZWNyZW1lbnQgb2YgY29tcGxleCB0eXBlcy4KCjIwMDAtMTAtMzEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX2ZwdXRzKTogV2hlbiBkZWxldGluZyBOT1AgY2FsbHMgdG8KCWJ1aWx0aW4gZnB1dHMsIGVuc3VyZSB3ZSBzdGlsbCBldmFsdWF0ZSB0aGUgc3RyZWFtIGluIGNhc2UgaXQKCWhhcyBzaWRlLWVmZmVjdHMuCgoyMDAwLTEwLTMxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGV4cHIuYyAoZG9fc3RvcmVfZmxhZyk6IFBhc3Mgb3BlcmFuZF9tb2RlIGluc3RlYWQgb2YgR0VUX01PREUgKG9wMCkKCXRvIGV4cGFuZF9zaGlmdC4KClR1ZSBPY3QgMzEgMTU6MzM6MjcgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvbT4KCgkqIHNoLXByb3Rvcy5oIChyZWdfbm9fc3VicmVnX29wZXJhbmQsIGVtaXRfZnBzY3JfdXNlKTogRG9uJ3QgZGVjbGFyZS4KCShmcF9leHRlbmRlZF9vcGVyYW5kLCBlbWl0X2Zwc2NyX3VzZSk6IExpa2V3aXNlLgoJKiBzaC5jIChyZWdfbm9fc3VicmVnX29wZXJhbmQsIGZwX2V4dGVuZGVkX29wZXJhbmQpOiBEZWxldGUgZnVuY3Rpb25zLgoJKGZwdWxfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCSogc2guaCAoUFJFRElDQVRFX0NPREVTKTogUmVtb3ZlIHJlZ19ub19zdWJyZWdfb3BlcmFuZCBhbmQKCWZwX2V4dGVuZGVkX29wZXJhbmQuICBBZGQgZnB1bF9vcGVyYW5kLgoJKiBzaC5tZCAobXVsc2YzLCBtdWxzZjNfaTQpOiBVc2UgZnBfYXJpdGhfcmVnX29wZXJhbmQgZm9yICJmIiBvcGVyYW5kcy4KCShtdWxzZjNfaWUsIG1hY3NmMywgY21wZ3RzZl90LCBjbXBlcXNmX3QsIGllZWVfY2NtcGVxc2ZfdCk6IExpa2V3aXNlLgoJKGNtcGd0c2ZfdF9pNCwgY21wZXFzZl90X2k0LCBpZWVlX2NjbXBlcXNmX3RfNCwgbmVnc2YyKTogTGlrZXdpc2UuCgkobmVnc2YyX2ksIHNxcnRzZjIsIHNxcnRzZjJfaSwgYWJzc2YyLCBhYnNzZjJfaSwgYWRkZGYzKTogTGlrZXdpc2UuCgkoYWRkZGYzX2ksIHN1YmRmMywgc3ViZGYzX2ksIG11bGRmMywgbXVsZGYzX2ksIGRpdmRmMyk6IExpa2V3aXNlLgoJKGRpdmRmM19pKTogTGlrZXdpc2UuCgkoZmxvYXRzaXNmMik6IExpa2V3aXNlLiAgVXNlIGZwdWxfb3BlcmFuZCBmb3IgJ3knIG9wZXJhbmQuCgkoZmxvYXRzaXNmMl9pNCwgZmxvYXRzaXNmMl9pZSwgZml4X3RydW5jc2ZzaTIpOiBMaWtld2lzZS4KCShmaXhfdHJ1bmNzZnNpMl9pNCwgZml4c2ZzaSwgZmxvYXRzaWRmMiwgZmxvYXRzaWRmMl9pKTogTGlrZXdpc2UuCgkoZml4X3RydW5jZGZzaTIsIGZpeF90cnVuY2Rmc2kyX2ksIGV4dGVuZHNmZGYyKTogTGlrZXdpc2UuCgkoZXh0ZW5kc2ZkZjJfaTQsIHRydW5jZGZzZjIsIHRydW5jZGZzZjJfaTQpOiBMaWtld2lzZS4KCjIwMDAtMTAtMzEgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2luaXRfYnVpbHRpbnMpOiBDb3JyZWN0IHJldHVybiB0eXBlCglidWlsZGluZyB2NGhpX2Z0eXBlX3Y0aGlfaW50X2ludCB0cmVlIG5vZGUuCgkoaXg4Nl9leHBhbmRfYnVpbHRpbik6IFVzZSBjb3JyZWN0IG9wZXJhbmQgbnVtYmVycyAwIGFuZCAxLgoJQ29weSBvcGVyYW5kIDAgaW50byBhIFBtb2RlIHJlZ2lzdGVyLCBkb24ndCBnZW5lcmF0ZSBhIE1FTSBydHguCgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChzc2VfbW92bnRkaSk6IFVzZSBtbXggcmVnaXN0ZXIgY29uc3RyYWludAoJZm9yIG9wZXJhbmQgMS4KCShtbXhfX3Vhdmd2OHFpMyk6IENvcnJlY3QgaW5zbiBtbmVtb25pYy4KCShtbXhfcHNhZGJ3KTogQ29ycmVjdCBpbnNuIG1uZW1vbmljLiAgVXNlIFY4UUkgbW9kZSBmb3Igb3BlcmFuZHMgMSBhbmQgMi4KCShtbXhfcHVucGNraHdkKTogQ29ycmVjdCBpbnNuIG1uZW1vbmljLgoJKG1teF9wdW5wY2toZHEpOiBMaWtld2lzZS4KCShtbXhfcHVucGNrbHdkKTogTGlrZXdpc2UuCgkobW14X3B1bnBja2xkcSk6IExpa2V3aXNlLgoJKHByZWZldGNoKTogVXNlIGltbWVkaWFyZV9vcGVyYW5kIGFuZCAnbicgY29uc3RyYWludCBmb3Igb3BlcmFuZCAxLgoJUmVudW1iZXIgY2FzZSBsYWJlbHMgdG8gbWF0Y2ggdGhlIF9tbV9wcmVmZXRjaCBjb25zdGFudHMgZGVmaW5lZCBpbgoJeG1taW50cmluLmguCgoJKiByZWNvZy5jIChzcGxpdF9hbGxfaW5zbnMpOiBEb24ndCB0cnkgdG8gY2FsbCBjbGVhbnVwX3N1YnJlZ19vcGVyYW5kcwoJaWYgdGhlIHNwbGl0dGVyIGRpZG4ndCBlbWl0IG5ldyBpbnNucy4KCU1ha2Ugc3VyZSB3ZSBjYWxsIGNsZWFudXBfc3VicmVnX29wZXJhbmRzIGV2ZW4gd2hlbiBzcGxpdHRpbmcgdGhlIGxhc3QKCWluc24gaW4gYSBiYXNpYyBibG9jay4KCgkqIGludm9rZS50ZXhpIChEZWJ1Z2dpbmcgT3B0aW9ucyk6IERlc2NyaWJlIC1kby4KCSogdG9wbGV2LmMgKGVudW1fZHVtcF9maWxlX2luZGV4KTogTmV3IGVudHJ5IERGSV9wb3N0cmVsb2FkLgoJKGR1bXBfZmlsZSk6IExpa2V3aXNlLgoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBTcGxpdCAuZ3JlZyBkdW1wIGludG8gLmdyZWcgYW5kIC5wb3N0cmVsb2FkLgoKMjAwMC0xMC0zMCAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBmaWxlcy5jIChzdGFja19pbmNsdWRlX2ZpbGUpOiBDaGVjayBmb3Igc3RhY2tlZCBjb250ZXh0cwoJaGVyZS4KCSogY3BwaGFzaC5oIChfY3BwX2RvX19QcmFnbWEpOiBOZXcgcHJvdG90eXBlLgoJKiBjcHBpbml0LmMgKGNwcF9yZWFkZXJfaW5pdCk6IEFkZCBfUHJhZ21hIGtleXdvcmQgdG8gaGFzaCB0YWJsZS4KCgkqIGNwcGxleC5jIChza2lwX2VzY2FwZWRfbmV3bGluZXMpOiBPbmx5IHByb2Nlc3MgdHJpZ3JhcGhzIGFuZAoJZXNjYXBlZCBuZXdsaW5lcyBpZiAhKGJ1ZmZlci0+ZnJvbV9zdGFnZTMpLgoJKF9jcHBfbGV4X3Rva2VuKTogV2FybiBhYm91dCBtaXNzaW5nIG5ld2xpbmVzIGlmZgoJIWJ1ZmZlci0+ZnJvbV9zdGFnZTMuCgoJKiBjcHBsaWIuYyAoZ2V0X19QcmFnbWFfc3RyaW5nLCBkZXN0cmluZ2l6ZSwKCV9jcHBfZG9fX1ByYWdtYSk6IE5ldyBmdW5jdGlvbnMuCgkocnVuX2RpcmVjdGl2ZSk6IFNldCBvdXRwdXRfbGluZSBmb3IgX1ByYWdtYSB0byBhdm9pZCBsaW5lCgltYXJrZXJzIGluIG91dHB1dC4gIFNldCBmcm9tX3N0YWdlMyBhbmQgcHJldmVudCBtYWNybyBleHBhbnNpb24KCWZvciBfUHJhZ21hIGFuZCBjb21tYW5kLWxpbmUgb3B0aW9ucy4gIENoZWNrIGJ1ZmZlciBleGhhdXN0aW9uLgoJKGNwcF9wdXNoX2J1ZmZlcik6IERvbid0IGNoZWNrIGZvciBzdGFja2VkIG1hY3JvIGNvbnRleHRzLCBhcwoJdGhpcyBpcyBwZXJmZWN0bHkgbGVnaXRpbWF0ZSBmb3IgX1ByYWdtYS4gIE1vdmUgdGhlIGNoZWNrIHRvCglzdGFja19pbmNsdWRlX2ZpbGUgaW5zdGVhZC4gU2V0IGZyb21fc3RhZ2UzIGlmZiBidWZmZXIgaXMKCXByZXByb2Nlc3NlZCBpbnB1dC4KCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX2J1ZmZlcik6IE1ha2Ugd2FybmVkX2NwbHVzcGx1c19jb21tZW50cwoJdW5zaWduZWQuIE5ldyBib29sZWFuIGZyb21fc3RhZ2UzLgoJKHN0cnVjdCBzcGVjX25vZGVzKTogQWRkIG5fX1ByYWdtYS4KCgkqIGNwcG1hY3JvLmMgKGVudGVyX21hY3JvX2NvbnRleHQpOiBGbGlwIHNlbnNlIG9mIHJldHVybiB2YWx1ZS4KCShfY3BwX2dldF90b2tlbik6IEhhbmRsZSBfUHJhZ21hIG9wZXJhdG9yLgoKMjAwMC0xMC0zMCAgUGhpbCBFZHdhcmRzICA8cG1lQHNvdXJjZXMucmVkaGF0LmNvbT4KCgkqIGdjYy50ZXhpOiAgVGhlIEMrKyBzdGFuZGFyZCBpc24ndCAiZHJhZnQiIGFueW1vcmUuCgoyMDAwLTEwLTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3BwbWFjcm8uYyAoYnVpbHRpbl9tYWNybyk6IFVzZSBOVF9WT0lELCBub3QgVF9WT0lELgoKMjAwMC0xMC0yOSAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsaWIuYyAoc2tpcF9yZXN0X29mX2xpbmUpOiAgVXNlIF9jcHBfZ2V0X3Rva2VuLgoKMjAwMC0xMC0yOSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogdG9wbGV2LmMsIGZsYWdzLmgsIGZvbGQtY29uc3QuYywgcmVhbC5jLCBydGwuYywKCWZpeGluYy9pbmNsaGFjay5kZWY6IENoYW5nZSBjb21tZW50cyBtZW50aW9uaW5nIEM5WCB0byByZWZlciB0bwoJQzk5IGluc3RlYWQuCgoJKiBpbnZva2UudGV4aTogRG9jdW1lbnQgdGhhdCAtViB3aWxsIG9ubHkgd29yayBmb3IgdmVyeSBzaW1pbGFyCgl2ZXJzaW9ucyBvZiBkcml2ZXIgYW5kIGNvbXBpbGVyLgoKMjAwMC0xMC0yOSAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBtYWNyby5jIChfY3BwX2NyZWF0ZV9kZWZpbml0aW9uKTogT3B0aW1pemUgdGhlIGNhc2Ugb2YKCWEgbWFjcm8gZGVmaW5lZCB0byBpdHNlbGYuCgoyMDAwLTEwLTI5ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jIChzYXZlX2NvbW1lbnQpOiBEb24ndCBzdG9yZSBuZXcgbGluZXMgaW4gQysrIGNvbW1lbnRzLgoKMjAwMC0xMC0yOSAgTWljaGFlbCBIYXllcyAgPG1oYXllc0ByZWRoYXQuY29tPgoKCSogaW50ZWdyYXRlLmMgKGNvcHlfaW5zbl9saXN0KTogQ29weSB0aGUgdW5jaGFuZ2luZyBmbGFnIGZvciBjYWxscy4KCjIwMDAtMTAtMjggIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNwcGhhc2guYyAoY3BwX2ZvcmFsbF9pZGVudGlmaWVycyk6IEFkZCBjb250ZXh0IHZhcmlhYmxlCglmb3IgY2FsbGJhY2sgcm91dGluZS4KCSogY3BwbWFpbi5jIChkdW1wX21hY3JvKTogVXBkYXRlIHRvIG1hdGNoIGNwcF9mb3JhbGxfaWRlbnRpZmllcnMKCWNoYW5nZS4KCShtYWluKTogQ2FsbCBjcHBfZm9yYWxsX2lkZW50aWZpZXJzIHdpdGggbnVsbCBjb250ZXh0LgoJKiBjcHBsaWIuaCAoY3BwX2ZvcmFsbF9pZGVudGlmaWVycyk6IFVwZGF0ZSBwcm90b3R5cGUuCgoJKiBjcHBtYWluLmM6IE1ha2UgYHBhcnNlX2luJyBhbmQgYHByaW50JyBzdGF0aWMuCgoyMDAwLTEwLTI4ICBBbGFuIE1vZHJhIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBjLWRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogQ2xlYXIgY19mdW5jdGlvbl9uYW1lX2RlY2xhcmVkX3AuCgoyMDAwLTEwLTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogcmVncmVuYW1lLmMgKHNjYW5fcnR4X2FkZHJlc3MpOiBGcm9iIGFjdGlvbiwgbm90IGNsYXNzLAoJd2hlbiB0cnlpbmcgdG8gZGlzYWJsZSBvcHRpbWl6YXRpb24uCgoyMDAwLTEwLTI4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1zZW1hbnRpY3MuYyAobWFrZV9ydGxfZm9yX2xvY2FsX3N0YXRpYyk6IERvbid0IGNsb2JiZXIKCURFQ0xfQVNTRU1CTEVSX05BTUUuCgoyMDAwLTEwLTI4ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjb25maWd1cmUuaW46IERldGVybWluZSBhbmQgc3Vic3RpdHV0ZSBnY2NfdmVyc2lvbl9mdWxsLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGdjY2J1Zy5pbjogVXNlIGl0IHRvIGdpdmUgZnVsbCB2ZXJzaW9uLiAgRG9uJ3QgYWxsb3cKCWNvbmZpZGVudGlhbCBQUnMuCgoyMDAwLTEwLTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogcmVjb2cuYyAoc3BsaXRfYWxsX2luc25zKTogUnVuIGNsZWFudXBfc3VicmVnX29wZXJhbmRzCglhZnRlciByZWxvYWQuCgoJKiByZWdyZW5hbWUuYyAocmVncmVuYW1lX29wdGltaXplKTogVmVyaWZ5IHRoYXQgYWxsIHJlZ2lzdGVycyBvZgoJYSBtdWx0aXBsZSByZWdpc3RlciBtb2RlIGFyZSBhdmFpbGFibGUuCgkoc2Nhbl9ydHhfYWRkcmVzcyk6IEFjY2VwdCB0aGUgbW9kZSBvZiB0aGUgYWRkcmVzczsgYWxsIGNhbGxlcnMKCWNoYW5nZWQuCgoJKiBjcHBsaWIuYyAocnVuX2RpcmVjdGl2ZSk6IEZpeCBwcm90b3R5cGUuCgoyMDAwLTEwLTI4ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHMpOiBEaXN0aW5ndWlzaCAid2lucyIgc28gdGhhdCB3ZSBrbm93IHdoZXRoZXIKCWEgZ2l2ZW4gb3BlcmFuZCB3b24gYmVjYXVzZSBvZiBhIG1hdGNoaW5nIGNvbnN0cmFpbnQgb3Igbm90OyB0aGVuIHVzZQoJdGhhdCBpbmZvcm1hdGlvbiB0byBjb21wdXRlIGdvYWxfYWx0ZXJuYXRpdmVfbWF0Y2hlZCBwcm9wZXJseS4KCSogcmVsb2FkMS5jIChjaG9vc2VfcmVsb2FkX3JlZ3MpOiBOZXZlciBzZXQgcmVsb2FkX292ZXJyaWRlX2luIGZvciBhbgoJb3B0aW9uYWwgcmVsb2FkLgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChSVFhfQ09TVFMpOiBBIGZldyBtb3JlIGVudHJpZXMsIGFuZCBhIG1vcmUKCWFjY3VyYXRlIHZhbHVlIGZvciBNVUxULgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfcHJpbnRfb3BlcmFuZCk6IFJlcXVpcmUgcHJvYmFiaWxpdHkgdG8gYmUKCTIlIG9yID4gOTglIGJlZm9yZSB1c2luZyBzdGF0aWMgYnJhbmNoIHByZWRpY3Rpb24gYml0cy4KCjIwMDAtMTAtMjggIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCU5ldyBtYWNybyBleHBhbmRlci4KCgkqIGNwcGxpYi5jIChzdHJ1Y3QgYW5zd2VyKTogTmV3LgoJKHN0cnVjdCBpZl9zdGFjayk6IFVzZSBjcHBfbGV4ZXJfcG9zIHJhdGhlciB0aGFuIGxpbmUgYW5kIGNvbC4KCVJlbmFtZSBjbWFjcm8gbWlfY21hY3JvLgoJKHN0cnVjdCBkaXJlY3RpdmUsIEtBTkRSLCBTVERDODksIEVYVEVOU0lPTiwgQ09ORCwgSUZfQ09ORCwgSU5DTCwKCUlOX0kpOiBOZXcgZGlyZWN0aXZlIGFuZCBmbGFncy4KCShza2lwX3Jlc3Rfb2ZfbGluZSwgY2hlY2tfZW9sLCBydW5fZGlyZWN0aXZlLCBnbHVlX2hlYWRlcl9uYW1lLAoJcGFyc2VfYW5zd2VyLCBwYXJzZV9hc3NlcnRpb24sIGZpbmRfYW5zd2VyKTogTmV3IGZ1bmN0aW9ucy4KCShwYXJzZV9pZmRlZiwgZGV0ZWN0X2lmX25vdF9kZWZpbmVkLCB2YWxpZGF0ZV9lbHNlKTogUmVtb3ZlLgoJKGxleF9tYWNyb19ub2RlKTogTmV3IGZ1bmN0aW9uIHRvIHJlcGxhY2UgcGFyc2VfaWZkZWYgYW5kCglnZXRfZGVmaW5lX25vZGUuCgoJKF9jcHBfaGFuZGxlX2RpcmVjdGl2ZSk6IE5ldyBmdW5jdGlvbiwgY29tYmluZXMgX2NwcF9jaGVja19kaXJlY3RpdmUKCWFuZCBfY3BwX2NoZWNrX2xpbmVtYXJrZXIuCgoJKGRvX2RlZmluZSwgZG9fdW5kZWYsIHBhcnNlX2luY2x1ZGUsIGRvX2luY2x1ZGUsIGRvX2ltcG9ydCwKCWRvX2luY2x1ZGVfbmV4dCwgcmVhZF9saW5lX251bWJlciwgZG9fbGluZSwgZG9faWRlbnQsIGRvX3ByYWdtYSwKCWRvX3ByYWdtYV9vbmNlLCBkb19wcmFnbWFfcG9pc29uLCBkb19wcmFnbWFfZGVwZW5kZW5jeSk6CglVcGRhdGUgZm9yIG5ldyB0b2tlbiBnZXR0aW5nIGludGVyZmFjZS4KCgkoZG9faWZkZWYsIGRvX2lmbmRlZiwgZG9faWYsIGRvX2Vsc2UsIGRvX2VuZGlmLCBwdXNoX2NvbmRpdGlvbmFsKQoJOiBVcGRhdGUgZm9yIG5ldyBtdWx0aXBsZS1pbmNsdWRlIG9wdGltaXNhdGlvbiB0ZWNobmlxdWUuCgkoZG9fZWxpZik6IERvbid0IGZvcmdldCB0byBpbnZhbGlkYXRlIGNvbnRyb2xsaW5nIG1hY3Jvcy4KCgkodW53aW5kX2lmX3N0YWNrLCBjcHBfZGVmaW5lZCwgY3BwX3B1c2hfYnVmZmVyLCBjcHBfcG9wX2J1ZmZlcik6IFVwZGF0ZS4KCShwYXJzZV9hc3NlcnRpb24sIHBhcnNlX2Fuc3dlciwgZmluZF9hbnN3ZXIsIF9jcHBfdGVzdF9hc3NlcnRpb24pOgoJRnVuY3Rpb25zIHRvIGhhbmRsZSBhc3NlcnRpb25zIHdpdGggdGhlIG5ldyB0b2tlbiBpbnRlcmZhY2UuCgkoZG9fYXNzZXJ0LCBkb191bmFzc2VydCk6IFVzZSB0aGVtLgoKCShjcHBfZGVmaW5lLCBfY3BwX2RlZmluZV9idWlsdGluLCBjcHBfdW5kZWYsIGNwcF9hc3NlcnQsIGNwcF91bmFzc2VydCk6CglVc2UgcnVuX2RpcmVjdGl2ZS4KCgkoX2NwcF9pbml0X3N0YWNrcyk6IFJlZ2lzdGVyIGRpcmVjdGl2ZSBuYW1lcy4gIERvbid0IHJlZ2lzdGVyIHNwZWNpYWwKCW5vZGVzLgoKCSogY3BwZXJyb3IuYyAocHJpbnRfY29udGFpbmluZ19maWxlcywgX2NwcF9iZWdpbl9tZXNzYWdlKTogVXBkYXRlIHRvCgluZXcgcG9zaXRpb24gcmVjb3JkaW5nIHJlZ2ltZS4KCShjcHBfaWNlLCBjcHBfZmF0YWwsIGNwcF9lcnJvciwgY3BwX2Vycm9yX3dpdGhfbGluZSwgY3BwX3dhcm5pbmcsCgljcHBfd2FybmluZ193aXRoX2xpbmUsIGNwcF9wZWR3YXJuLCBjcHBfcGVkd2Fybl93aXRoX2xpbmUsCgljcHBfcGVkd2Fybl93aXRoX2ZpbGVfYW5kX2xpbmUpOiBVcGRhdGUgZm9yIF9jcHBfYmVnaW5fbWVzc2FnZSBjaGFuZ2VzLgoJKGNwcF90eXBlMm5hbWUpOiBNb3ZlIHRvIGNwcGxleC5jLgoKCSogY3BwZXhwLmMgKHBhcnNlX2NoYXJjb25zdCk6IHNwZWNfbm9kZXMgaXMgbm8gbG9uZ2VyIGEgcG9pbnRlci4KCShwYXJzZV9kZWZpbmVkKTogVXBkYXRlIHRvIGhhbmRsZSBuZXcgbXVsdGlwbGUgaW5jbHVkZSBvcHRpbWlzYXRpb24KCW1ldGhvZC4gIFJlbW92ZSBwb2lzb25lZCBpZGVudGlmaWVyIHdhcm5pbmcuCgkocGFyc2VfYXNzZXJ0aW9uLCBUWVBFX05BTUUpOiBEZWxldGUuCgkobGV4KTogVXBkYXRlIGZvciBtdWx0aXBsZSBpbmNsdWRlIG9wdGltaXNhdGlvbiwgcmVtb3ZhbCBvZgoJQ1BQX0RFRklORUQsIHRvIHVzZSBfY3BwX3Rlc3RfYXNzZXJ0aW9uIGZvciBhc3NlcnRpb25zIGFuZAoJY3BwX3Rva2VuX2FzX3RleHQuCgkoX2NwcF9wYXJzZV9leHByKTogVXBkYXRlIGZvciBNSSBvcHRpbWlzYXRpb24sIGFuZCB0byB1c2Ugb3BfYXNfdGV4dC4KCShvcF9hc190ZXh0KTogTmV3IGZ1bmN0aW9uLCB0byB3cmFwIGNwcF90b2tlbl9hc190ZXh0LgoKCSogY3BwZmlsZXMuYyAoc3RhY2tfaW5jbHVkZV9maWxlLCBfY3BwX3BvcF9maWxlX2J1ZmZlcik6CglVcGRhdGUgZm9yIE1JIG9wdGltaXNhdGlvbi4KCShfY3BwX2V4ZWN1dGVfaW5jbHVkZSk6IFRha2UgYSB0b2tlbiByYXRoZXIgdGhhbiAzIGFyZ3VtZW50cy4gIEZpeAoJc2VnZmF1bHQgb24gZGlhZ25vc3RpYy4KCShfY3BwX2NvbXBhcmVfZmlsZV9kYXRlKTogVGFrZSBhIHRva2VuIHJhdGhlciB0aGFuIDMgYXJncy4KCShjcHBfcmVhZF9maWxlKTogV29yayBjb3JyZWN0bHkgZm9yIHplcm8tbGVuZ3RoIGZpbGVzLgoKCSogY3BwaGFzaC5jIChfY3BwX2luaXRfbWFjcm9zLCBfY3BwX2NsZWFudXBfbWFjcm9zKTogUmVuYW1lCglfY3BwX2luaXRfaGFzaHRhYmxlIGFuZCBfY3BwX2NsZWFudXBfaGFzaHRhYmxlLgoJKGNwcF9sb29rdXApOiBQbGFjZSBpZGVudGlmaWVycyBhdCBmcm9udCBvZiBpZGVudGlmaWVyIHBvb2wKCWZvciBfY3BwX2xvb2t1cF93aXRoX2hhc2guCgkoX2NwcF9sb29rdXBfd2l0aF9oYXNoKTogUmVxdWlyZSBpZGVudGlmaWVycyB0byBiZSBhdCB0aGUgZnJvbnQgb2YKCXRoZSBpZGVudGlmaWVyIHBvb2wuICBDb21taXQgdGhlIG1lbW9yeSBpZiBub3QgYWxyZWFkeSBpbiB0aGUKCWhhc2ggdGFibGUuCgoJKiBjcHBpbml0LmMgKGNwcF9yZWFkZXJfaW5pdCk6IE1vdmUgY3BwX2luaXRfY29tcGxldGVkIHRlc3QgdG8gdG9wLgoJSW5pdGlhbGlzZSB2YXJpb3VzIG1lbWJlcnMgb2YgY3BwX3JlYWRlciwgbWVtb3J5IHBvb2xzLCBhbmQgdGhlCglzcGVjaWFsIG5vZGVzLgoJKGNwcF9wcmludGVyX2luaXQpOiBEZWxldGUuCgkoY3BwX2NsZWFudXApOiBVcGRhdGUuCgkoc3RydWN0IGJ1aWx0aW4sIGJ1aWx0aW5fYXJyYXksIGluaXRpYWxpemVfYnVpbHRpbnMpOiBVcGRhdGUgZm9yIG5ldwoJaGFzaG5vZGUgZGVmaW5pdGlvbiBhbmQgYnVpbHRpbiBoYW5kbGluZy4KCShjcHBfc3RhcnRfcmVhZCwgY3BwX2ZpbmlzaCk6IERvbid0IHRha2Ugb3IgaW5pdGlhbGlzZSBhCglwcmludGVyLiAgVXBkYXRlLgoKCSogY3BwbGliLmggKGNwcF9wcmludGVyLCBjcHBfdG9rbGlzdCwgQ1BQX0RFRklORUQsIEJPTCwKCVBBU1RFRCwgVkFSX0FSR1MsIEJFR19PRl9GSUxFLCBJTl9ESVJFQ1RJVkUsIEtOT1dOX0RJUkVDVElWRSwKCVRfVk9JRCwgVF9TUEVDTElORSwgVF9EQVRFLCBUX0ZJTEUsIFRfQkFTRV9GSUxFLCBUX0lOQ0xVREVfTEVWRUwsCglUX1RJTUUsIFRfU1REQywgVF9PUEVSQVRPUiwgVF9QT0lTT04sIFRfTUFDUk8sIFRfQVNTRVJUSU9OKTogRGVsZXRlLgoJKHN0cnVjdCBjcHBfcG9vbCwgc3RydWN0IGNwcF9tYWNybywgc3RydWN0IGNwcF9sZXhlcl9wb3MsCglzdHJ1Y3QgY3BwX2xvb2thaGVhZCwgQ1BQX0RIQVNILCBlbnVtIG1pX3N0YXRlLCBlbnVtIG1pX2luZCwKCU5PX0VYUEFORCwgVkFSQVJHU19GSVJTVCwgc3RydWN0IGNwcF90b2tlbl93aXRoX3BvcywKCXN0cnVjdCB0b2tsaXN0LCBzdHJ1Y3QgY3BwX2NvbnRleHQsIHN0cnVjdCBzcGVjbm9kZXMsCglUT0tFTl9MT09LQUhFQUQsIFRPS0VOX0JVRkZTSVpFLCBOT0RFX09QRVJBVE9SLCBOT0RFX1BPSVNPTkVELAoJTk9ERV9CVUlMVElOLCBOT0RFX0RJQUdOT1NUSUMsIE5UX1ZPSUQsIE5UX01BQ1JPLCBOVF9BU1NFUlRJT04sCgllbnVtIGJ1aWx0aW5fdHlwZSwgY3BwX2Nhbl9wYXN0ZSk6IE5ldy4KCShzdHJ1Y3QgY3BwX3Rva2VuKTogRGVsZXRlIGxpbmUgYW5kIGNvbCBtZW1iZXJzLgoJKHN0cnVjdCBjcHBfYnVmZmVyKTogTmV3IG1lbWJlciBvdXRwdXRfbGluZW5vLgoJKHN0cnVjdCBsZXhlcl9zdGF0ZSk6IERlbGV0ZSBpbmRlbnRlZCwgaW5fbGV4X2xpbmUsIHNlZW5fZG90LgoJQWRkIHZhX2FyZ3Nfb2ssIHBvaXNvbmVkX29rLCBwcmV2ZW50X2V4cGFuc2lvbiwgcGFyc2luZ19hcmdzLgoJKHN0cnVjdCBjcHBfcmVhZGVyKTogTmV3IG1lbWJlcnMgbGV4ZXJfcG9zLCBtYWNyb19wb3MsIGRpcmVjdGl2ZV9wb3MsCglpZGVudF9wb29sLCB0ZW1wX3N0cmluZ19wb29sLCBtYWNyb19wb29sLCBhcmd1bWVudF9wb29sLCBzdHJpbmdfcG9vbCwKCWJhc2VfY29udGV4dCwgY29udGV4dCwgZGlyZWN0aXZlLCBtaV9zdGF0ZSwgbWlfaWZfbm90X2RlZmluZWQsCgltaV9sZXhlZCwgbWlfY21hY3JvLCBtaV9pbmRfY21hY3JvLCBsYV9yZWFkLCBsYV93cml0ZSwgbGFfdW51c2VkLAoJbWxzdHJpbmdfcG9zLCBtYWNyb19idWZmZXIsIG1hY3JvX2J1ZmZlcl9sZW4uCglEZWxldGUgbWVtYmVycyBtbHNfbGluZSwgbWxzX2NvbHVtbiwgdG9rZW5fbGlzdCwgcG90ZW50aWFsX2NvbnRyb2xfbWFjcm8sCgl0ZW1wX3Rva2VucywgdGVtcF9jYXAsIHRlbXBfYWxsb2NlZCwgdGVtcF91c2VkLCBmaXJzdF9kaXJlY3RpdmVfdG9rZW4sCgljb250ZXh0X2NhcCwgY3VyX2NvbnRleHQsIG5vX2V4cGFuZF9sZXZlbCwgcGFzdGVfbGV2ZWwsIGNvbnRleHRzLCBhcmdzLAoJc2F2ZV9wYXJhbWV0ZXJfc3BlbGxpbmdzLCBuZWVkX25ld2xpbmUsIC4KCUNoYW5nZSB0eXBlIG9mIGRhdGUsIHRpbWUgYW5kIHNwZWNfbm9kZXMgbWVtYmVycy4KCUNoYW5nZSBwcm90b3R5cGVzIGZvciBpbmNsdWRlIGFuZCBpZGVudCBjYWxsYmFja3MuCgkoc3RydWN0IGNwcF9oYXNobm9kZSk6IENoYW5nZSB0eXBlIG9mIG5hbWUuICBSZW1vdmUgdW5pb24gbWVtYmVycwoJZXhwYW5zaW9uIGFuZCBjb2RlLiAgQWRkIG1lbWJlcnMgbWFjcm8sIG9wZXJhdG9yIGFuZCBidWlsdGluLgoKCShjcHBfdG9rZW5fbGVuLCBjcHBfdG9rZW5fYXNfdGV4dCwgY3BwX3NwZWxsX3Rva2VuLCBjcHBfc3RhcnRfcmVhZCwKCWNwcF9maW5pc2gsIGNwcF9hdm9pZF9wYXN0ZSwgY3BwX2dldF90b2tlbiwgY3BwX2dldF9saW5lLAoJY3BwX2dldF9vdXRwdXRfbGluZSwgY3BwX21hY3JvX2RlZmluaXRpb24sIGNwcF9zdGFydF9sb29rYWhlYWQsCgljcHBfc3RvcF9sb29rYWhlYWQpOiBOZXcgcHJvdG90eXBlcy4KCShjcHBfcHJpbnRlcl9pbml0LCBjcHBfZHVtcF9kZWZpbml0aW9uKTogRGVsZXRlIHByb3RvdHlwZXMuCgoJKFVfQ0hBUiwgVSwgdXN0cmNtcCwgdXN0cm5jbXAsIHVzdHJsZW4sIHV4c3RyZHVwLCB1c3RyY2hyLCB1ZnB1dHMpOgoJTW92ZSBmcm9tIGNwcGhhc2guaC4KCgkqIGNwcGhhc2guaCAoVV9DSEFSLCBVLCB1c3RyY21wLCB1c3RybmNtcCwgdXN0cmxlbiwgdXhzdHJkdXAsIHVzdHJjaHIsCgl1ZnB1dHMpOiBNb3ZlIHRvIGNwcGxpYi5oLgoJKGVudW0gc3BlbGxfdHlwZSwgc3RydWN0IHRva2VuX3NwZWxsaW5nLCBfY3BwX3Rva2VuX3NwZWxsaW5ncywgVE9LRU5fU1BFTEwsCglUT0tFTl9OQU1FLCBzdHJ1Y3QgYW5zd2VyLCBGUkVFX0FOU1dFUiwgS0FORFIsIFNUREM4OSwgRVhURU5TSU9OLAoJQ09ORCwgRVhQQU5ELCBJTkNMLCBDT01NRU5UUywgSU5fSSwgc3RydWN0IGRpcmVjdGl2ZSwgZGlyZWN0aXZlX2hhbmRsZXIsCglzdHJ1Y3Qgc3BlY19ub2RlcywgX2NwcF9kaWdyYXBoX3NwZWxsaW5ncywgX2NwcF9mcmVlX3RlbXBfdG9rZW5zLAoJX2NwcF9pbml0X2lucHV0X2J1ZmZlciwgX2NwcF9ncm93X3Rva2VuX2J1ZmZlciwgX2NwcF9pbml0X3Rva2xpc3QsCglfY3BwX2NsZWFyX3Rva2xpc3QsIF9jcHBfZXhwYW5kX3Rva2VuX3NwYWNlLCBfY3BwX2V4cGFuZF9uYW1lX3NwYWNlLAoJX2NwcF9lcXVpdl90b2tlbnMsIF9jcHBfZXF1aXZfdG9rbGlzdHMsIF9jcHBfcHJvY2Vzc19kaXJlY3RpdmUsCglfY3BwX3J1bl9kaXJlY3RpdmUsIF9jcHBfZ2V0X2xpbmUsIF9jcHBfZ2V0X3Jhd190b2tlbiwgX2NwcF9nbHVlX2hlYWRlcl9uYW1lLAoJX2NwcF9jYW5fcGFzdGUsIF9jcHBfY2hlY2tfZGlyZWN0aXZlLCBfY3BwX2NoZWNrX2xpbmVtYXJrZXIsCglfY3BwX3BhcnNlX2Fzc2VydGlvbiwgX2NwcF9maW5kX2Fuc3dlcik6IERlbGV0ZS4KCShWQUxJRF9TSUdOLCBBTElHTiwgUE9PTF9GUk9OVCwgUE9PTF9MSU1JVCwgUE9PTF9CQVNFLCBQT09MX1NJWkUsCglQT09MX1VTRUQsIFBPT0xfQ09NTUlULCBzdHJ1Y3QgY3BwX2NodW5rLCBfY3BwX2xleF90b2tlbiwgX2NwcF9pbml0X3Bvb2wsCglfY3BwX2ZyZWVfcG9vbCwgX2NwcF9wb29sX3Jlc2VydmUsIF9jcHBfcG9vbF9hbGxvYywgX2NwcF9uZXh0X2NodW5rLAoJX2NwcF9sb2NrX3Bvb2wsIF9jcHBfdW5sb2NrX3Bvb2wsIF9jcHBfdGVzdF9hc3NlcnRpb24sCglfY3BwX2hhbmRsZV9kaXJlY3RpdmUsIERTQyk6IE5ldy4KCShzdHJ1Y3QgaW5jbHVkZV9maWxlKTogTmV3IG1lbWJlciBkZWZpbmVkLgoKCShET19OT1RfUkVSRUFELCBfY3BwX2JlZ2luX21lc3NhZ2UsIF9jcHBfZXhlY3V0ZV9pbmNsdWRlLAoJX2NwcF9jb21wYXJlX2ZpbGVfZGF0ZSk6IFVwZGF0ZS4KCShfY3BwX3BvcF9jb250ZXh0LCBfY3BwX2dldF90b2tlbiwgX2NwcF9mcmVlX2xvb2thaGVhZHMsIF9jcHBfcHVzaF90b2tlbik6IE5ldy4KCShfY3BwX2luaXRfbWFjcm9zLCBfY3BwX2NsZWFudXBfbWFjcm9zKTogUmVuYW1lIHRvIF9jcHBfaW5pdF9oYXNodGFibGUsCglfY3BwX2NsZWFudXBfaGFzaHRhYmxlLgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSBjcHBvdXRwdXQuYy4KCgkqIGNwcG91dHB1dC5jOiBEZWxldGUKCgkqIGZpeGhlYWRlci5jIChyZWFkX3NjYW5fZmlsZSk6IFVwZGF0ZSBmb3IgbmV3IGNwcF9nZXRfdG9rZW4KCXByb3RvdHlwZS4KCShyZWNvZ25pemVkX2Z1bmN0aW9uKTogTmV3IGFyZ3VtZW50IExJTkUuCgoJKiBzY2FuLWRlY2xzLmMgKHNraXBfdG9fY2xvc2luZ19icmFjZSwgc2Nhbl9kZWNscyk6IFVwZGF0ZSBmb3IKCW5ldyBjcHBfZ2V0X3Rva2VuIHByb3RvdHlwZS4KCgkqIHNjYW4uaCAocmVjb2duaXplZF9mdW5jdGlvbik6IFVwZGF0ZSBwcm90b3R5cGUuCgoJKiBwby9QT1RGSUxFUy5pbjogUmVtb3ZlIGNwcG91dHB1dC5jLgoKMjAwMC0xMC0yNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtdHlwZWNrLmMgKGNoZWNrX2luaXRfdHlwZV9iaXRmaWVsZHMpOiBSZW1vdmUuCgkoY29uc3RydWN0b3JfaW5jcmVtZW50YWwpOiBMaWtld2lzZS4KCShzdHJ1Y3QgY29uc3RydWN0b3Jfc3RhY2spOiBSZW1vdmUgaW5jcmVtZW50YWwgYml0LgoJKHN0cnVjdCBpbml0aWFsaXplcl9zdGFjayk6IExpa2V3aXNlLgoJKHN0YXJ0X2luaXQpOiBEb24ndCBwbGF5IHdpdGggY29uc3RydWN0b3JfaW5jcmVtZW50YWwuCgkoZmluaXNoX2luaXQpOiBMaWtld2lzZS4KCShyZWFsbHlfc3RhcnRfaW5jcmVtZW50YWxfaW5pdCk6IExpa2V3aXNlLgoJKHB1c2hfaW5pdF9sZXZlbCk6IExpa2V3aXNlLgoJKHBvcF9pbml0X2xldmVsKTogTGlrZXdpc2UuCgkob3V0cHV0X2luaXRfbGV2ZWwpOiBMaWtld2lzZS4KCShvdXRwdXRfcGVuZGluZ19pbml0X2VsZW1lbnRzKTogTGlrZXdpc2UuCgoyMDAwLTEwLTIxICBNaWtlIENvbGVtYW4gIDxtY29sZW1hbjJAa2MucnIuY29tPgoKCSogYy1wcmFnbWEuYyAoaGFuZGxlX3ByYWdtYV9wYWNrKTogSW5pdGlhbGl6ZSBhbGlnbiB0byAtMS4KCUltcHJvdmUgZXJyb3IgbWVzc2FnZXMuICBDb3JyZWN0IHBhcnNpbmcgb2YKCSNwcmFnbWEgcGFjayhwb3AgWyxpZF0pLiAgRG8gbm90IGNoZWNrIHRoZSB1c2VyLXN1cHBsaWVkCglhbGlnbm1lbnQgaWYgd2UncmUgcG9wcGluZy4KCgkqIGdjYy5kZy9wYWNrLXRlc3QtMS5jOiBOZXcgdGVzdCBjYXNlLgoJKiBnY2MuZGcvcGFjay10ZXN0LTIuYzogTmV3IHRlc3QgY2FzZS4KCSogZ2NjLmRnL3BhY2stdGVzdC0xLmg6IE5ldyBmaWxlLgoKMjAwMC0xMC0yNyAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHAudGV4aTogVXBkYXRlLgoKMjAwMC0xMC0yNyAgS2VsbGV5IENvb2sgPGtlbGxleS5jb29rQGhvbWUuY29tPgoKCSogaW52b2tlLnRleGk6IERvY3VtZW50IC1taW50ZWwtc3ludGF4CgoyMDAwLTEwLTI3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogaW52b2tlLnRleGk6IERvY3VtZW50IC1mcmVuYW1lLXJlZ2lzdGVycy4gIEFkZCBpdCB0byAtTzMuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogUnVuIHJlZ3JlbmFtZSBiZWZvcmUgaWZjdnQyLgoJKGVudW0gZHVtcF9maWxlX2luZGV4LCBkdW1wX2ZpbGUpOiBVcGRhdGUgb3JkZXIuCgkobWFpbik6IFNldCBmbGFnX3JlbmFtZV9yZWdpc3RlcnMgYXQgLU8zLgoKMjAwMC0xMC0yNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChlbnVtIHJlZ19jbGFzcyk6IEFkZCBQVl9SRUcuCgkoUkVHX0NMQVNTX05BTUVTLCBSRUdfQ0xBU1NfQ09OVEVOVFMsIFJFR05PX1JFR19DTEFTUyk6IFVwZGF0ZS4KCShSRUdfQ0xBU1NfRlJPTV9MRVRURVIpOiBBc3NpZ24gaXQgdG8gJ2MnLgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKGNhbGxfb3NmXzEpOiBVc2UgaXQuCgkoY2FsbF92YWx1ZV9vc2ZfMSk6IExpa2V3aXNlLgoKCSogY29uZmlnL2lhNjQvaWE2NC5jOiBSZXZlcnQgMTAtMjMgcGF0Y2guCgkoaWE2NF9oYXJkX3JlZ25vX3JlbmFtZV9vayk6IE5ldy4KCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaDogRGVjbGFyZSBpdC4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChIQVJEX1JFR05PX1JFTkFNRV9PSyk6IFVzZSBpdC4KCjIwMDAtMTAtMjcgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAcmVkaGF0LmNvLnVrPgoJICAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiByZWdyZW5hbWUuYzogUmV3cml0ZSB0byBoYW5kbGUgbXVsdGktcmVnaXN0ZXIgbW9kZXMgYW5kCgljb25kX2V4ZWMgaW5zdHJ1Y3Rpb25zLgoJKiBNYWtlZmlsZS5pbiAocmVncmVuYW1lLm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKiByZWNvZy5oIChzdHJ1Y3Qgb3BlcmFuZF9hbHRlcm5hdGl2ZSk6IEFkZCBpc19hZGRyZXNzLgoJKiByZWNvZy5jIChwcmVwcm9jZXNzX2NvbnN0cmFpbnRzKSBbY2FzZSAncCddOiBTZXQgaXQuCgoyMDAwLTEwLTI3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogY29uZmlndXJlLmluOiBJZiBub3QgTk9fTUlOVVNfQ19NSU5VU19PLCBzdWJzdGl0dXRlCglPVVRQVVRfT1BUSU9OIHdpdGggJy1vICRAJy4gIE1ha2UgemxpYmRpciwgemxpYmluYyByZWxhdGl2ZSB0bwoJdG9wIGxldmVsLiAgS2lsbCBvbGRzdHlsZV9zdWJkaXJzLiAgRG8gbm90IGluY2x1ZGUKCSRzcmNkaXIvJHMvTWFrZWZpbGUuaW4gaW4gYWxsX2xhbmdfbWFrZWZpbGVzLCBidXQgZG8gaW5jbHVkZQoJJG91dHB1dHMuICBEbyBub3QgcnVuIGNvbmZpZ3VyZS5sYW5nIGZyb20gY29uZmlnLnN0YXR1cy4KCVJlYXJyYW5nZSB3YXJuaW5nLWZsYWcgbG9naWMgdG8gY29ycmVzcG9uZCB0byB3aGF0IHRoZQoJbWFrZWZpbGUgd2FudHMuICBQdXQgc3BlY2lhbCB2YXggc3RhZ2UxIG9wdGlvbnMgaW4KCUBzdGFnZTFfZmxhZ3NAIG5vdCBAc3RhZ2UxX3dhcm5fY2ZsYWdzQC4gIERvbid0IGRvIGFueXRoaW5nCgl3aXRoIGV4dHJhX2Nfb2JqcywgZXh0cmFfY3h4X29ianMsIG9yIGV4dHJhX2NwcF9vYmpzLgoJKC0tZW5hYmxlLWMtY3BwbGliKTogQUNfU1VCU1QobWF5YmVfY3BwbGliKSB3aXRoICJsaWJjcHAuYSIgaWYKCXN3aXRjaCBpcyBnaXZlbiwgbm90aGluZyBvdGhlcndpc2UuCgkqIGNvbmZpZ3VyZS5sYW5nOiBEZWxldGUuCgoJKiBNYWtlZmlsZS5pbjogRXhwdW5nZSBhbGwgdHJhY2VzIG9mIGV4dHJhX2Nfb2JqcywKCWV4dHJhX2N4eF9vYmpzLCBhbmQgZXh0cmFfY3BwX29ianMuICBTZXQgTUFZQkVfQ1BQTElCIGZyb20KCUBtYXliZV9jcHBsaWJALiBBZGQgJChNQVlCRV9DUFBMSUIpIHRvIENfQU5EX09CSkNfT0JKUy4gIFNldAoJd2FybmluZyBvcHRpb25zIHZpYSBhIHRocmVlIGxldmVsIHNjaGVtZSBzbyB0aGF0IC1wZWRhbnRpYyBhbmQKCS1XdHJhZGl0aW9uYWwgYXJlIG5vdCB1c2VkIGZvciBub24tQyBmcm9udCBlbmRzOiBMT09TRV9XQVJOLAoJU1RSSUNUMV9XQVJOLCBTVFJJQ1QyX1dBUk4gLT4gJChARCktd2FybiwgR0NDX1dBUk5fQ0ZMQUdTIC0+CglXQVJOX0NGTEFHUy4gIERpc3Rpbmd1aXNoIFNUQUdFMV9DRkxBR1MgZnJvbSBCT09UX0NGTEFHUy4KCUFkZCAtSSQoQEQpIGFuZCAtSSQoc3JjZGlyKS8kKEBEKSB0byBJTkNMVURFUy4KCVNldCBPVVRQVVRfT1BUSU9OLCBaTElCLCBaTElCSU5DLiAgRG8gbm90IHNldCBQLAoJTEFOR19GTEFHU19UT19QQVNTLiAgQWRkIE9VVFBVVF9PUFRJT04gdG8gYWxsIG9iamVjdC1maWxlCglnZW5lcmF0aW9uIHJ1bGVzLiAgV3JhcCBhbGwgcnVsZXMgdGhhdCBjaGFuZ2UgdGhlIGN1cnJlbnQKCWRpcmVjdG9yeSBpbiBwYXJlbnRoZXNlczsgcG1ha2UgZG9lc24ndCBzcGF3biBhIG5ldyBzaGVsbCBmb3IKCWVhY2ggY29tbWFuZC4gIEV4cHVuZ2UgYWxsIHJlZmVyZW5jZXMgdG8gJChQKS4gIFdoZW4gb25lCgljb21tYW5kIGRlcGVuZHMgb24gYW5vdGhlciBhbmQgdGhleSdyZSBydW4gYWxsIGF0IG9uY2UsIHVzZSAmJgoJdG8gc2VwYXJhdGUgdGhlbSwgbm90IDsuICBBZGQgbGliZ2NjX3MkKFNITElCX0VYVCkgdG8gZmlsZXMKCWRlbGV0ZWQgb24gbWFrZSBjbGVhbi4gIEZvcmNlIE9VVFBVVF9PUFRJT049Jy1vICRAJyBpbiBzdGFnZTIKCWFuZCBiZXlvbmQuCgoJKiBvYmpjL01ha2UtbGFuZy5pbjogV3JhcCBhbGwgcnVsZXMgdGhhdCBjaGFuZ2UgdGhlIGN1cnJlbnQKCWRpcmVjdG9yeSBpbiBwYXJlbnRoZXNlcy4gIEV4cHVuZ2UgYWxsIHJlZmVyZW5jZXMgdG8gJChQKS4KCVdoZW4gb25lIGNvbW1hbmQgZGVwZW5kcyBvbiBhbm90aGVyIGFuZCB0aGV5J3JlIHJ1biBhbGwgYXQKCW9uY2UsIHVzZSAmJiB0byBzZXBhcmF0ZSB0aGVtLCBub3QgOy4gIEFkZCBPVVRQVVRfT1BUSU9OIHRvCglhbGwgb2JqZWN0LWZpbGUgZ2VuZXJhdGlvbiBydWxlcy4gIERlbGV0ZSBvYnNvbGV0ZSB2YXJpYWJsZXMuCgkqIG9iamMvTWFrZWZpbGUuaW46IERlbGV0ZS4KCjIwMDAtMTAtMjcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBJZiBzaWJjYWxsX2ZhaWx1cmUgaXMgc2V0IGR1cmluZyBwYXNzIDEsCgljbGVhciB0YWlsX2NhbGxfaW5zbnMgYXMgd2VsbC4KCjIwMDAtMTAtMjcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaCAoYXJtX2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsKTogQWRkCglwcm90b3R5cGUuCgoyMDAwLTEwLTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBTdXByZXNzIHNpYmNhbGwgaWYgd2UgaGF2ZSBhCglCTEttb2RlIHJldHVybiBpbiByZWdpc3RlcnMuCgoyMDAwLTEwLTI2ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIGlhNjQuaCAoUFJFRkVSUkVEX1JFTE9BRF9DTEFTUyk6IEZvcmNlIGZsb2F0aW5nIHBvaW50IGNvbnN0YW50cwoJaW50byBtZW1vcnkuCgoyMDAwLTEwLTI2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5jIChtYWtlX25vZGUsIGNhc2UgJ3QnKTogU2V0IGFsaWdubWVudCB0byB0aGF0IG9mCgljaGFyX3R5cGVfbm9kZS4KCSogZXhwci5jIChtb3ZlX2J5X3BpZWNlc19uaW5zbnMpOiBBYm9ydCBpZiBzb21lIGxlbmd0aCByZW1haW5zLgoKMjAwMC0xMC0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChzaXRlLmV4cCk6IERlZmluZSBIQVZFX0xJQlNURENYWF9WMy4KCSogY29uZmlndXJlLmluIChlbmFibGUtbGlic3RkY3h4LXYzKTogQXJyYW5nZSB0byBoYXZlCglIQVZFX0xJQlNURENYWF9WMyBzdWJzdGl0dXRlZCBpbnRvIHRoZSBvdXRwdXQgZmlsZXMuCgoyMDAwLTEwLTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogcmVjb2cuYyAoY29uc3RyYWluX29wZXJhbmRzKTogSW5pdGlhbGl6ZSB3aGljaF9hbHRlcm5hdGl2ZQoJYmVmb3JlIG5vIGFsdGVybmF0aXZlcyBlYXJseSBleGl0LgoKCSogY3NlLmMgKGZpbmRfY29tcGFyaXNvbl9hcmdzKTogQ2hlY2sgdGhhdCB3ZSBjYW4gcmV2ZXJzZSBhCgljb21wYXJpc29uIGlmIG5lZWRlZCBiZWZvcmUgYWNjZXB0aW5nIHRoZSBzdWJzdGl0dXRpb24uCgoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzX2FkZHJlc3NfcGFydCk6IEtpbGwgcnR4IG9ic3RhY2sgaGFja2VyeS4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9yZWxhdGlvbmFsX29wZXJhdGlvbik6IFNpZ24gZXh0ZW5kCglsb3cgd29yZHMgYmVmb3JlIHNpZ24gZXh0ZW5kaW5nIHRvIGhpZ2ggd29yZHMuCgoyMDAwLTEwLTI1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21jb3JlL21jb3JlLmM6IEluY2x1ZGUgY29uZmlnLmggYmVmb3JlIHN5c3RlbS5oLgoKMjAwMC0xMC0yNSAgUmF5IEVzc2ljayAgPGVzc2lja0BkZG5hLmxhYnMubW90LmNvbT4KCgkqIGNvbmZpZy9tY29yZS9tY29yZS5tZCAocmV0dXJuKTogRm9yY2UgZnVuY3Rpb24gZXBpbG9ndWUgdG8KCWFsd2F5cyBiZSBnZW5lcmF0ZWQgdG8gd29yayBhcm91bmQgZXBpbG9ndWUgc3VwcHJlc3Npb24gYnVnIGluCglNKkNvcmUgYmFja2VuZC4KCjIwMDAtMTAtMjUgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IE1vdmUgd2FybmluZyBmb3IgcXVhbGlmaWVkIHZvaWQKCXJldHVybiB0eXBlcyB3aXRoIC1wZWRhbnRpYyB0byB3aGVuIHRoZSBmdW5jdGlvbiB0eXBlIGlzCgljb25zdHJ1Y3RlZC4gIEF0IC1XLCB3YXJuIGluIGdlbmVyYWwgZm9yIHF1YWxpZmllZCBmdW5jdGlvbiByZXR1cm4KCXR5cGVzLCBleGNlcHQgZm9yIHZvbGF0aWxlIHZvaWQuCgkqIGludm9rZS50ZXhpOiBEb2N1bWVudCB0aGlzIG5ldyB3YXJuaW5nIGF0IC1XLgoKMjAwMC0xMC0yNSAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHAudGV4aTogVXBkYXRlIHdpdGggaW1wbGVtZW50YXRpb24tZGVmaW5lZCBiZWhhdmlvciBhbmQKCWludGVybmFsIGxpbWl0cy4KCjIwMDAtMTAtMjUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogc3Rvci1sYXlvdXQuYyAobGF5b3V0X3R5cGUpOiBJZiBUWVBFX0FMSUFTX1NFVCB3YXMgYWxyZWFkeSBzZXQgb24gdGhlCglpbmNvbXBsZXRlIHR5cGUgZm9yY2UgaXQgaW50byBhbGlhcyBzZXQgMC4KCldlZCBPY3QgMjUgMDE6MDI6NDQgRURUIDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIGFsaWFzLmM6IEluY2x1ZGUgYmFzaWMtYmxvY2suaC4KCShsb29wX3ApOiBOZXcgZnVuY3Rpb24uCgkobWFya19jb25zdGFudF9mdW5jdGlvbik6IFVzZSBpdC4KCSogTWFrZWZpbGUuaW4gKGFsaWFzLm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoKMjAwMC0xMC0yNCAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL21uMTAzMDAvbW4xMDMwMC5jIChzZWNvbmRhcnlfcmVsb2FkX2NsYXNzKTogVHJlYXQgcHNldWRvcwoJbGlrZSBtZW1vcnkuCgoyMDAwLTEwLTI0ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBleHBtZWQuYyAoc3RvcmVfYml0X2ZpZWxkKTogTW92ZSBpbnRlZ2VyIHB1biBjb2RlIGRvd24gYWZ0ZXIKCWNvZGUgdGhhdCBjYWxscyBlbWl0X21vdmVfaW5zbiBmb3IgZW50aXJlIHJlZ2lzdGVyIG1vdmUuCgkqIHN0b3ItbGF5b3V0LmMgKGNvbXB1dGVfcmVjb3JkX21vZGUpOiBSZXZlcnQgTWFyIDI1LCBBdWcgMTgsIGFuZAoJT2N0IDIwIGNoYW5nZXMuICBPbmx5IHN0b3JlIG1vZGUgaW4gVFlQRV9NT0RFIGlmIFJFQ09SRF9UWVBFLgoKMjAwMC0xMC0yNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJ0bGFuYWwuYyAocnR4X3Vuc3RhYmxlX3AsIHJ0eF92YXJpZXNfcCk6IERvbid0IGNvbnNpZGVyIHBpYwoJcmVnaXN0ZXIgc3RhYmxlIGlmIFBJQ19PRkZTRVRfVEFCTEVfUkVHX0NBTExfQ0xPQkJFUkVELgoKMjAwMC0xMC0yNCAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogZ2NzZS5jIChjcHJvcF9pbnNuKTogZG8gbm90IHByb3BhZ2F0ZSBjb25zdGFudHMgaW50byBqdW1wX2luc24KCWZvciBtYWNoaW5lcyB3aXRoIENDMCBtb3JlIHRoYW4gb25jZS4KCjIwMDAtMTAtMjQgIFJpY2hhcmQgSGVuZGVyc29uIDxydGhAY3lnbnVzLmNvbT4sIEFsZHkgPGFsZHloQGN5Z251cy5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKFBSRUZFUlJFRF9SRUxPQURfQ0xBU1MpOiBUcmVhdAoJcHNldWRvcyBqdXN0IGxpa2UgbWVtb3J5LgoKMjAwMC0xMC0yNCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb21iaW5lLmMgKGRpc3RyaWJ1dGVfbm90ZXMpOiBEaXNjYXJkIFJFR19MSUJDQUxMIGFuZCBSRUdfUkVUVkFMCgl3aGVuIGRlbGV0aW5nIGxpYmNhbGwgc2VxdWVuY2UgY29sbGFwc2VkIHRvIGEgc2luZ2xlIGluc3RydWN0aW9uLgoKMjAwMC0xMC0yNCAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jby51az4KCgkqIGV4cHIuYyAoZG9fc3RvcmVfZmxhZyk6IERvbid0IGNyYXNoIGlmIGVpdGhlciBzaWRlIG9mIGEKCWNvbXBhcmlzb24gaXMgZXJyb3JfbWFya19ub2RlLgoKMjAwMC0xMC0yNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBzaWJjYWxsLmMgKHB1cmdlX21lbV91bmNoYW5naW5nX2ZsYWcpOiBOZXcgZnVuY3Rpb24uCgkob3B0aW1pemVfc2libGluZ19hbmRfdGFpbF9yZWN1cnNpdmVfY2FsbHMpOiBDYWxsIGl0LgoKMjAwMC0xMC0yNCAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgoJKiBNYWtlZmlsZS5pbiAoY2hlY2stcG8pOiBOZXcgdGFyZ2V0IGZvciBkb2luZyBjaGVja3MgaW4gdGhlIHBvCglzdWJkaXIgaWYgYWxsIGxhbmd1YWdlcyBjb25maWd1cmVkLgoJKENIRUNLX1RBUkdFVFMpOiBBZGQgQENIRUNLX1BPQCwgcmVwbGFjZWQgd2l0aCBjaGVjay1wbyB2aWEKCWNvbmZpZ3VyZSBpZiBOTFMgaXMgZW5hYmxlZC4KCSogY29uZmlndXJlLmluOiBJZiBOTFMgaXMgZW5hYmxlZCwgc3Vic3RpdHV0ZSBDSEVDS19QTyBieSBjaGVjay1wbywKCW90aGVyd2lzZSBsZWF2ZSBlbXB0eS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0xMC0yMyAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQGN5Z251cy5jb20+CgoJKiBpMzg2LmMgKHByaW50X29wZXJhbmQpOiBIYW5kbGUgbmV3ICdBJyBmb3JtYXR0aW5nIGNvZGUuCgkzODcgb3Bjb2RlcyBuZWVkIHN1ZmZpeGVzIGV2ZW4gd2l0aCAtbWludGVsLXN5bnRheC4KCUNoZWNrIGZvciBleHBsaWNpdCBzaXplIG92ZXJyaWRlIChjb2RlcyAnYicsICd3JyBhbmQgJ2snKS4KCShwcmludF9vcGVyYW5kX2FkZHJlc3MpOiBDaGVjayBpZiByZWdpc3RlciBwcmVmaXggaXMgbmVlZGVkIHdoZW4KCWVtaXR0aW5nIGBkcycgc2VnbWVudCBvdmVycmlkZS4KCSogaTM4Ni5oOiBBZGQgY29tbWVudCBhYm91dCBuZXcgJ0EnIGZvcm1hdHRpbmcgY29kZS4KCSogaTM4Ni5tZCAoanVtcCBhbmQgY2FsbCBwYXR0ZXJucyk6IEVtaXQgYWJzb2x1dGUgcmVmZXJlbmNlcyB1c2luZyAlQS4KCjIwMDAtMTAtMjMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfZXhwYW5kX3Byb2xvZ3VlKTogTWFyayBleHRyYQoJb3V0cHV0IHJlZ2lzdGVycyBhcyBmaXhlZC4KCShpYTY0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogVW5kbyBvdXRwdXQgZml4YXRpb24uCgoyMDAwLTEwLTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLm1kOiBBZGQgbmFtZXMgZm9yIGFsbCB1bm5hbWVkIGluc25zOyB1c2UKCWRlZmluZV9pbnNuX2FuZF9zcGxpdCBpbiBzb21lIG9idmlvdXMgcGxhY2VzLgoJKGxkYSk6IFJlbW92ZS4KCSh6ZXJvX2V4dGVuZHFpaGkyKTogVXNlIGFuIGV4cGFuZGVyIHcvIG5vbmltbWVkaWF0ZV9vcGVyYW5kIGZvciBCV1guCgkoemVyb19leHRlbmRxaXNpMiwgemVyb19leHRlbmRxaWRpMik6IExpa2V3aXNlLgoJKHplcm9fZXh0ZW5kaGlzaTIsIHplcm9fZXh0ZW5kaGlkaTIpOiBMaWtld2lzZS4KCShhYnMgc3BsaXR0ZXJzKTogRml4IG1hdGNoX3NjcmF0Y2ggb3BlcmFuZCBudW1iZXIuCgkoYmNjX3JldmVyc2UpOiBTd2FwIHBjICYgbGFiZWwgaW5zdGVhZCBvZiBub24tY2Fub25pY2FsIGNvbXBhcmUuCgoyMDAwLTEwLTIzICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBpYTY0LmMgKGlhNjRfcHJpbnRfb3BlcmFuZCwgY2FzZSAncicpOiBDb3JyZWN0IGNvbW1lbnQuICBIYW5kbGUKCUNPTlNUX0lOVC4KCSogaWE2NC5tZCAoY21wc2lfYWRqdXN0ZWQpOiBVc2UgJXIzLgoJKGNtcGRpX2FkanVzdGVkKTogTGlrZXdpc2UuCgoyMDAwLTEwLTIzICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2F0dC5oIChBU01fRklMRV9TVEFSVCk6IERlZmluZS4KCjIwMDAtMTAtMjMgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0BjeWdudXMuY29tPgoKCSogY29uZmlnL2kzODYvbGludXguaCAoQVNNX0ZJTEVfU1RBUlQpOiBEZWZpbmUuCgpXZWQgT2N0IDE4IDExOjE2OjQwIDIwMDAgIERvbmFsZCBMaW5kc2F5ICA8ZGxpbmRzYXlAY3lnbnVzLmNvbT4KCgkqIGdjYy9jb25maWd1cmUuaW46IG02OGstY29mZiB0bV9maWxlIHNob3VsZCBub3QgaGF2ZSBsaWJnbG9zcy5oLAoJc2luY2UgdGhpcyAob25seSkgZHJhZ3MgaW4gYSBjcnQwLm8gcmVmZXJlbmNlIHRoYXQgdGhlIC5sZCBmaWxlcwoJYWxzbyBpbnRyb2R1Y2UuCgoyMDAwLTEwLTIzICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiByZWxvYWQxLmMgKHJlbG9hZF9yZWdfcmVhY2hlc19lbmRfcCk6IEEgUkVMT0FEX09USEVSIGNhbgoJb3ZlcndyaXRlIHRoZSB2YWx1ZSBpbiBhIFJFTE9BRF9GT1JfSU5QVVQgYW5kIG90aGVyIGtpbmRzIG9mCglyZWxvYWRzIGp1c3QgbGlrZSBhbiBSRUxPQURfRk9SX09VVFBVVCB3b3VsZC4KCgkqIGxvY2FsLWFsbG9jLmMgKHVwZGF0ZV9lcXVpdl9yZWdzKTogQWRkIGFuIGFib3J0KCkuICBXaGVuCglkZWxldGluZyBvciBtb3ZpbmcgaW5zbnMsIHVwZGF0ZSByZWdfZXF1aXZbcmVnbm9dLmluaXRfaW5zbnMuCgoyMDAwLTEwLTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy10cmVlLnRleGk6IEltcHJvdmUgZG9jdW1lbnRhdGlvbiBmb3IgSUZfU1RNVHMgYW5kIHJlbGF0ZWQKCWNvbmRpdGlvbmFsIHN0YXRlbWVudHMuCgoyMDAwLTEwLTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZXhwci5jIChkb19wcmVleHBhbmRfY2FsbHMpOiBSZW1vdmUuCgkoc2FtZV9mcm9tX3ApOiBEb24ndCB1c2UgQ0FMTF9FWFBSX1JUTC4KCShleHBhbmRfZXhwcik6IERvbid0IGNhbGwgcHJlZXhwYW5kX2NhbGxzLCBvciB1c2UgQ0FMTF9FWFBSX1JUTC4KCShwcmVleHBhbmRfY2FsbHMpOiBSZW1vdmUuCgkqIHRyZWUuYyAoZmlyc3RfcnRsX29wKTogUmVtb3ZlIENBTExfRVhQUiBjYXNlLgoJKHVuc2F2ZV9leHByXzEpOiBMaWtld2lzZS4KCSogdHJlZS5kZWYgKENBTExfRVhQUik6IEdpdmUgaXQgb25seSB0d28gc2xvdHMuCgkqIHRyZWUuaCAoQ0FMTF9FWFBSX1JUTCk6IFJlbW92ZS4KCjIwMDAtMTAtMjEgIENoYW5kcmFrYWxhIENoYXZ2YSAgIDxjY2hhdnZhQHJlZGhhdC5jb20+CgoJKiBsaWJnY2Mtc3RkLnZlciAoX19hZGR2c2kzLCBfX2FkZHZkaTMsICBfX3N1YnZzaTMsIF9fc3VidmRpMywKCV9fbXVsdnNpMywgX19uZWd2c2kyLCBfX25lZ3ZkaTIsIF9fYWJzdnNpMiwgX19hYnN2ZGkyLCBfX211bHZkaTMpOgoJTmV3IGZ1bmN0aW9ucy4KCjIwMDAtMTAtMjIgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY2FsbHMuYyAoY29tYmluZV9wZW5kaW5nX3N0YWNrX2FkanVzdG1lbnRfYW5kX2NhbGwpOiBEb24ndAoJYWRqdXN0IHN0YWNrIHdoZW4gdW5hZGp1c3RlZF9hbGlnbm1lbnQgZW5kcyB1cCBhcyB6ZXJvLgoKMjAwMC0xMC0yMiAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZml4aW5jL2dlbmZpeGVzOiBSZW1vdmUgRUdDUyByZWZlcmVuY2UuCgkqIGluc3RhbGwudGV4aTogUmVtb3ZlIEVHQ1MgcmVmZXJlbmNlLgoJKiBJTlNUQUxMOiBSZWdlbmVyYXRlLgoKMjAwMC0xMC0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuaCAoVFlQRV9JU19TSVpFVFlQRSk6IEFkZCBtb3JlIGRvY3VtZW50YXRpb24uCgoyMDAwLTEwLTIxICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBkaWFnbm9zdGljLmM6IFJlbW92ZSBFR0NTIHJlZmVyZW5jZSBpbiBjb21tZW50LgoKU2F0IE9jdCAyMSAwODoyNDoyNSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogbG9vcC5jIChzdHJlbmd0aF9yZWR1Y2UpOiBGaXggZXJyb3IgaW4gbGFzdCBjaGFuZ2UuCgoyMDAwLTEwLTIwICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoU0hMSUJfTk1fRkxBR1MpOiBOZXcuCgkobGliZ2NjLm1rKTogUGFzcyBpdC4KCSogbWtsaWJnY2MuaW4gKGxpYmdjYy5tYXApOiBVc2UgaXQuCgoJKiByczYwMDAvdC1haXg0MyAoU0hMSUJfRVhULCBTSExJQl9MSU5LLCBTSExJQl9MSUJTLAoJU0hMSUJfTUtNQVAsIFNITElCX01BUEZJTEVTLCBTSExJQl9OTV9GTEFHUyk6IE5ldy4KCjIwMDAtMTAtMjAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG1pcHMuaCAoUkVHX0NMQVNTX0ZST01fTEVUVEVSKTogQ2FzdCBhcnJheSBhcmcgdG8gdW5zaWduZWQgY2hhci4KCgkqIHNwYXJjLmMgKGxvYWRfcGljX3JlZ2lzdGVyKTogRGVsZXRlIHVudXNlZCB2YXJhaWJsZS4KCgkqIGxpYmdjYzIuYyAoX19hZGR2c2kzKTogRGVsZXRlIHVudXNlZCB2YXJpYWJsZS4KCgkqIGxpYmdjYzIuaCAoX19hYnN2c2kyLCBfX2Fic3ZkaTIsIF9fYWRkdnNpMywgX19hZGR2ZGkzLAoJX19zdWJ2c2kzLCBfX3N1YnZkaTMsIF9fbXVsdnNpMywgX19tdWx2ZGkzLCBfX25lZ3ZzaTIsCglfX25lZ3ZkaTIpOiBQcm90b3R5cGUuCgoJKiBzc2EuYyAoYXBwbHlfZGVsYXllZF9yZW5hbWVzKTogQXZvaWQgdW5kZWZpbmVkIG9wZXJhdGlvbi4KCgkqIHRvcGxldi5jIChkaXNwbGF5X3RhcmdldF9vcHRpb25zKTogTWFrZSBzdGF0aWMgdG8gbWF0Y2gKCXByb3RvdHlwZS4gIERlbGV0ZSBlbXB0eSBkZWNsYXJhdGlvbi4KCjIwMDAtMTAtMjAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGNwcHNwZWMuYyAoREVGQVVMVF9XT1JEX1NXSVRDSF9UQUtFU19BUkcpOiBBZGRlZCAtTUYgYW5kIC1NVC4KCSogZ2NjLmMgKERFRkFVTFRfV09SRF9TV0lUQ0hfVEFLRVNfQVJHKTogQWRkZWQgLU1GIGFuZCAtTVQuCgpGcmkgT2N0IDIwIDE3OjA1OjQ5IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKGV4cGFuZF9leHByLCBjYXNlIFNBVkVfRVhQUik6IFNldCBSVFhfVU5DSEFOR0lOR19QIG9uCglyZXR1cm5lZCBNRU0uCgkoZXhwYW5kX2V4cHJfdW5hbGlnbmVkLCBjYXNlIEFSUkFZX1JFRik6IENoZWNrIHRoYXQgaW5kZXggaXMKCWEgY29uc3RhbnQgYmVmb3JlIGNvbXBhcmluZyBpdDsgdXNlIHRyZWVfbG93X2NzdC4KCSogdHJlZS5jIChzYXZlX2V4cHIpOiBTZXQgVFJFRV9SRUFET05MWS4KCShzdWJzdGl0dXRlX2V4cHIpOiBSZXR1cm4gaW5zaWRlIG9mIE5PTl9MVkFMVUVfRVhQUi4KCShidWlsZCwgYnVpbGQxKTogU2V0IFRSRUVfUkVBRE9OTFkgaWYgYWxsIG9wZXJhbmRzIGFyZS4KCShidWlsZF9pbmRleF90eXBlKTogSWYgdXBwZXIgYm91bmQgaXMgYSBuZWdhdGl2ZSBudW1iZXIsIGxvd2VyCglib3VuZCBpcyB6ZXJvIGFuZCBzaXpldHlwZSBpcyB1bnNpZ25lZCwgdXNlIHVwcGVyIGJvdW5kIG9mIG9uZSBhbmQKCWxvd2VyIG9mIHplcm8uCgoyMDAwLTEwLTIwICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBnY2MuYyAocHJvY2Vzc19jb21tYW5kLCBtYWluKTogVXNlICJiZWNhdXNlIiBpbnN0ZWFkIG9mCgkic2luY2UiIGluIGVycm9yIG1lc3NhZ2VzLgoKRnJpIE9jdCAyMCAxMzozMzoxNiAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogc3Rvci1sYXlvdXQuYyAoY29tcHV0ZV9yZWNvcmRfbW9kZSk6IFVzZSB0cmVlX2xvd19jc3QuCglEb24ndCB1c2UgbW9kZSBvZiBmaWVsZCBmb3IgcmVjb3JkIHVubGVzcyBzaXplcyBhcmUgdGhlIHNhbWUuCgkobGF5b3V0X3R5cGUsIGNhc2UgQVJSQVlfVFlQRSk6IFJlbW92ZSBzcGVjaWFsIGJvdW5kcyBoYW5kbGluZwoJcHJldmlvdXNseSBhZGRlZCBmb3IgQWRhOyBhbHNvIGNoYW5nZSB0byB1c2luZyBob3N0X2ludGVnZXJwCglhbmQgdHJlZV9sb3dfY3N0LgoKCSogbG9vcC5jIChzdHJlbmd0aF9yZWR1Y2UpOiBTaG93IHdoZW4gbmV3IHJlZ2lzdGVyIG1hZGUgZm9yCglnaXYgaXMga25vd24gdG8gYmUgYSBwb2ludGVyIGFuZCBpdHMgYWxpZ21lbnQgaWYgc28gYW5kIGtub3duLgoJKGxvb3BfZHVtcF9hdXgpOiBTaG93IFZFUkJPU0UgcGFyYW1ldGVyIHVudXNlZC4KCgkqIGdjc2UuYyAoc2V0X2hhc2hfdGFibGVfc2l6ZSk6IE5vdyB1bnNpZ25lZC4KCSogc2Rib3V0LmMgKHRlbXBsYXRlX25hbWVfcCk6IEFkZCAiY29uc3QiIHRvIGF2b2lkIHdhcm5pbmdzLgoJKHNkYm91dF9yZWNvcmRfdHlwZV9uYW1lLCBwbGFpbl90eXBlXzEsIHNkYm91dF9zeW1ib2wpOiBMaWtld2lzZS4KCShzZGJvdXRfb25lX3R5cGUsIHNkYm91dF9wYXJtcywgc2Rib3V0X3JlZ19wYXJtcyk6IExpa2V3aXNlLgoJKHNkYm91dF9lbmRfZXBpbG9ndWUpOiBSZW1vdmUgdmFyaWFibGUgTkFNRS4KCSogc3lzdGVtLmggKGdldG9wdCk6IEFkZCBkZWZhdWx0IGRlZmluaXRpb24uCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChwcmludF9vcGVyYW5kKTogRG9uJ3QgY29udGludWUgcHJvY2Vzc2luZwoJYWZ0ZXIgaXNzdWluZyBlcnJvci4KCShzdW1tYXJpemVfaW5zbik6IEF2b2lkIHVzZSBvZiBVTCBpbiBjb25zdGFudC4KCgkqIGZ1bmN0aW9uLmMgKGxvY2F0ZV9hbmRfcGFkX3Bhcm0pOiBVc2UgaG9zdF9pbnRlZ2VycCBhbmQgdHJlZV9sb3dfY3N0LgoKCSogZm9sZC1jb25zdC5jIChmb3JjZV9maXRfdHlwZSk6IFVuc2lnbmVkIHZhbHVlcyBjYW4gb3ZlcmZsb3cKCWlmIHRoZXkgYXJlIHNpemV0eXBlLgoJKGludF9jb25zdF9iaW5vcCk6IERvbid0IHVzZSBjYWNoZSBpZiBvdmVyZmxvd3MuCgoyMDAwLTEwLTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZnVuY3Rpb24uYyAobG9jYXRlX2FuZF9wYWRfcGFybSk6IFplcm8gYWxpZ25tZW50X3BhZC4KCgkqIHJlZ3JlbmFtZS5jIChycl9yZXBsYWNlX3JlZyk6IFJld3JpdGUgdG8gdXNlIHJlY29nX2RhdGEgdG8KCXBlcmZvcm0gc3Vic3RpdHV0aW9ucywgYW5kIGFwcGx5X2NoYW5nZV9ncm91cCB0byBzZWUgaWYgaXQgd29ya2VkLgoKRnJpIE9jdCAyMCAxMzozMzoxNiAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZHdhcmYyb3V0LmMgKGFkZF9ib3VuZF9pbmZvKTogQWxzbyBpZ25vcmUgQ09ORF9FWFBSLgoKCSogY29tYmluZS5jIChzdHJ1Y3QgdW5kbyk6IENoYW5nZSBpbnQgdG8gdW5zaWduZWQgaW50LgoJKGRvX1NVQlNUX0lOVCk6IEFyZ3MgYXJlIHVuc2lnbmVkIGludC4KCShtYWtlX2V4dHJhY3Rpb24sIGZvcmNlX3RvX21vZGUpOiBVc2UgcHJvcGVyIHR5cGUgd2hlbiBmb3JtaW5nIG1hc2suCgkobWFrZV9maWVsZF9hc3NpZ25tZW50KTogTGlrZXdpc2UuCgoyMDAwLTEwLTIwICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChjaGVja19mb3JtYXRfaW5mb19yZWN1cnNlKTogRXh0cmFjdCBzdHJpbmcgY29uc3RhbnQKCWluaXRpYWxpemVycyBmcm9tIG5vbi12b2xhdGlsZSBjb25zdGFudCBhcnJheXMgYW5kIGNoZWNrIHRoZW0gYXMKCWZvcm1hdHMuCgkqIGMtdHlwZWNrLmMgKGRlY2xfY29uc3RhbnRfdmFsdWUpOiBEb24ndCBjaGVjayBwZWRhbnRpYyBvciBjaGVjawoJZm9yIERFQ0xfTU9ERSAoZGVjbCkgIT0gQkxLbW9kZS4KCShkZWNsX2NvbnN0YW50X3ZhbHVlX2Zvcl9icm9rZW5fb3B0aW1pemF0aW9uKTogTmV3IGZ1bmN0aW9uIHdoaWNoCglpbmNsdWRlcyB0aGVzZSBjaGVja3MuCgkoZGVmYXVsdF9jb252ZXJzaW9uLCBjb252ZXJ0X2Zvcl9hc3NpZ25tZW50LCBkaWdlc3RfaW5pdCk6IFVzZQoJZGVjbF9jb25zdGFudF92YWx1ZV9mb3JfYnJva2VuX29wdGltaXphdGlvbiBpbnN0ZWFkIG9mCglkZWNsX2NvbnN0YW50X3ZhbHVlLgoKMjAwMC0xMC0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuaCAoREVDTF9BTElHTl9VTklUKTogTmV3IG1hY3JvLgoKMjAwMC0xMC0xNCAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBjb25maWcvYXZyL2F2ci1wcm90b3MuaCAoYXZyX291dHB1dF9ibGQpOiBOZXcuCgkob3V0X3NoaWZ0X3dpdGhfY250KTogQWRkIHRfbGVuIGFyZ3VtZW50LgoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfbnVtX2FyZ19yZWdzKTogUmVtb3ZlIC1tcGFjay1hcmdzLgoJKG91dHB1dF9tb3ZxaSwgb3V0cHV0X21vdmhpLCBvdXRwdXRfbW92c2lzZik6IE9wdGltaXplIGxvYWRpbmcKCWFueSBjb25zdGFudCB3aXRoIGV4YWN0bHkgb25lIGJpdCBzZXQgdG8gTk9fTERfUkVHUy4KCShvdXRfc2hpZnRfd2l0aF9jbnQpOiBPcHRpbWl6ZSBvdXRwdXQgY29kZSBmb3Igc2l6ZSBvciBzcGVlZCwKCWRlcGVuZGluZyBvbiBvcHRpbWl6ZV9zaXplLiAgSGFuZGxlIHNtYWxsIHNoaWZ0IGNvdW50cyBhcyB3ZWxsCgkoaWYgbm90IGhhbmQtb3B0aW1pemVkIGluID9zaD8/aTNfb3V0KS4gIFNoaWZ0cyBjYW4gYmUgZG9uZQoJd2l0aCBvciB3aXRob3V0IGEgc2NyYXRjaCByZWdpc3Rlciwgd2l0aCBoZWxwIG9mIF9fdG1wX3JlZ19fCglvciBfX3plcm9fcmVnX18gaWYgbmVjZXNzYXJ5LiAgQWRkIFRfTEVOIGFyZ3VtZW50IHRvIHBhc3MgdGhlCglsZW5ndGggb2YgVEVNUExBVEUgaW4gd29yZHMsIHJldHVybiB0b3RhbCBpbnNuIGxlbmd0aCBpbiAqTEVOLgoJKGFzaGxxaTNfb3V0LCBhc2hycWkzX291dCwgbHNocnFpM19vdXQpOiBDaGFuZ2UgYWxsIGNhbGxzIHRvCglvdXRfc2hpZnRfd2l0aF9jbnQgdG8gd29yayB3aXRoIHRoZSBhYm92ZSBjaGFuZ2UuCgkoYXNobGhpM19vdXQsIGFzaGxzaTNfb3V0LCBhc2hyaGkzX291dCwgYXNocnNpM19vdXQsIGxzaHJoaTNfb3V0LAoJbHNocnNpM19vdXQpOiBMaWtld2lzZS4gIE9wdGltaXplIG1vcmUga25vd24gc2hpZnQgY291bnQgY2FzZXMuCglSZW1vdmUgY2FzZXMgYWxyZWFkeSB3ZWxsIG9wdGltaXplZCBpbiBvdXRfc2hpZnRfd2l0aF9jbnQuCgkoYXZyX291dHB1dF9ibGQpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9hdnIvYXZyLmggKE1BU0tfUEFDS19BUkdTLCBUQVJHRVRfUEFDS19BUkdTKTogUmVtb3ZlLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IFJlbW92ZSAtbXBhY2stYXJncyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgoJKiBjb25maWcvYXZyL2F2ci5tZCAoKnJlbG9hZF9pbnFpLCAqcmVsb2FkX2luaGksICpyZWxvYWRfaW5zaSk6CglBZGQgcmVsb2FkX2NvbXBsZXRlZCB0byBpbnNuIGNvbmRpdGlvbiAtIG9ubHkgZm9yIHBlZXBob2xlcy4KCShhc2hscWkzLCBhc2hycWkzLCBsc2hycWkzKTogQ29ycmVjdCBpbnNuIGxlbmd0aCBmb3Igc2hpZnQgY291bnRzCglpbiBhIHJlZ2lzdGVyIG9yIG1lbW9yeS4KCShhc2hsaGkzLCBhc2hsc2kzLCBhc2hyaGkzLCBhc2hyc2kzLCBsc2hyaGkzLCBsc2hyc2kzKTogTGlrZXdpc2UuCglEbyBub3QgcmVxdWlyZSBhIHNjcmF0Y2ggcmVnaXN0ZXIuCgkoKmFzaGxoaTNfY29uc3QsICphc2hsc2kzX2NvbnN0LCAqYXNocmhpM19jb25zdCwgKmFzaHJzaTNfY29uc3QsCgkqbHNocmhpM19jb25zdCwgKmxzaHJzaTNfY29uc3QpOiBOZXcgaW5zbnMgYW5kIG1hdGNoaW5nIHBlZXBob2xlcy4KCU9wdGltaXplIHNoaWZ0cyBieSBrbm93biBjb3VudCB1c2luZyBhIHNjcmF0Y2ggcmVnaXN0ZXIsIGJ1dCBvbmx5CglpZiBvbmUgaXMgc3RpbGwgYXZhaWxhYmxlIGFmdGVyIHJlZ2lzdGVyIGFsbG9jYXRpb24uCgoyMDAwLTEwLTIwICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIHQtdmF4OiBOZXcgZmlsZS4gIERvbid0IGJ1aWxkIG1vZHVsZXMgZnJvbSBsaWJnY2MxLmMuCgpGcmkgT2N0IDIwIDAwOjU3OjAwIEVEVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBhbGlhcy5jOiAobWFya19jb25zdGFudF9mdW5jdGlvbik6IERvbid0IGNoZWNrIHB1cmUgZnVuY3Rpb25zLgoJSW5pdGlhbGl6ZSBhbmQgZW5kIGFsaWFzIGFuYWx5c2lzLgoJKG5vbmxvY2FsX21lbnRpb25lZF9wKTogUmVuYW1lIGZyb20gbm9ubG9jYWxfcmVmZXJlbmNlX3AuCglEb24ndCBtYWtlIGEgc3BlY2lhbCBleGNlcHRpb24gZm9yIHJlY3Vyc2lvbi4gIEhhbmRsZQoJVU5TUEVDX1ZPTEFUSUxFLiAgRG9uJ3QgYXNzdW1lIEFTTV9PUEVSQU5EUyBpcyBub24tbG9jYWwKCXVubGVzcyBpdCdzIHZvbGF0aWxlLgoKCSogbG9jYWwtYWxsb2MuYyAoZXF1aXZhbGVuY2UpOiBOZXcgc3RydWN0dXJlLgoJKHJlZ19lcXVpdik6IERlZmluZS4KCShjb250YWluc19yZXBsYWNlX3JlZ3MpOiBSZW1vdmUgYXJyYXkgYW5kIHVzZQoJZmllbGQgaW4gcmVnX2VxdWl2LgoJKG1lbXJlZl9yZWZlcmVuY2VkX3ApOiBMaWtld2lzZS4KCShub19lcXVpdik6IExpa2V3aXNlLgoJKHVwZGF0ZV9lcXVpdl9yZWdzKTogTGlrZXdpc2UuCgoJKGVxdWl2X2luaXRfdmFyaWVzX3AsCgllcXVpdl9pbml0X21vdmFibGVfcCk6IE5ldyBmdW5jdGlvbnMuCgkodXBkYXRlX2VxdWl2X3JlZ3MpOiBVc2UgdGhlbS4gIFVzZSBydHhfdmFyaWVzX3AKCWluc3RlYWQgb2YgZnVuY3Rpb25faW52YXJpYW50X3AuICBQcm9jZXNzIGluc25zCglmcm9tIGVuZCB0byBiZWdpbm5pbmcuICBBbGxvdyBhIFJFR19FUVVJViBpbnNuCgl3aXRoaW4gdGhlIHNhbWUgbG9vcCBhcyBhIHVzZSB0byBiZSBtb3ZlZCwgYWxzbwoJYWxsb3cgaXQgdG8gYmUgbW92ZWQgb3V0IG9mIGEgbG9vcC4gIFVwZGF0ZQoJUkVHX0RFQUQgbm90ZXMgd2hlbiBzdWJzdGl0dXRpbmcgaW50byBhbiBpbnNuLgoKMjAwMC0xMC0xOSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogYy1kZWNsLmMgKHN0YXJ0X2RlY2wpOiBDaGVjayBmb3IgZXJyb3JfbWFya19ub2RlIHR5cGUgYmVmb3JlIHVzaW5nCglDT01QTEVURV9UWVBFX1AuCgkoZmluaXNoX2RlY2wpOiBMaWtld2lzZS4gIERvbid0IGdpdmUgYW4gZXJyb3IgaWYgZGVjbCB0eXBlIGlzCglhbHJlYWR5IGVycm9yX21hcmtfbm9kZS4KCgkqIGhhaWZhLXNjaGVkLmMgKGNvbXB1dGVfdHJnX2luZm8pOiBBZGQgZXhwbGFuYXRvcnkgY29tbWVudHMuCglOZXcgbG9jYWwgdXBkYXRlX2Jsb2Nrcy4gIFVzZSB1cGRhdGVfYmxvY2tzIHRvIHJlbW92ZSBkdXBsaWNhdGVzCgl3aGVuIGNvbXB1dGluZyB1cGRhdGUgYmxvY2tzLiAgQ2hlY2sgZm9yIGJibHN0X3RhYmxlIG92ZXJmbG93LgoJKHNjaGVkdWxlX2Jsb2NrKTogQWRkIGV4cGxhbmF0b3J5IGNvbW1lbnQuICBSZWR1Y2UgYmJsc3Rfc2l6ZSBieQoJZmFjdG9yIG9mIDIuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG1vdmRpX3N5bWJvbGljKTogRG9jdW1lbnQgbG9zcyBvZiBSRUdfTEFCRUwKCW5vdGVzLgoKMjAwMC0xMC0xOSAgQ2hhbmRyYWthbGEgQ2hhdnZhICAgPGNjaGF2dmFAcmVkaGF0LmNvbT4KCgkqIGxpYmdjYzIuYyAoX211bHZzaTMpOiBDaGFuZ2UgdmFyaWFibGVzIHUgYW5kIHYgdG8gYSBhbmQgYi4KCjIwMDAtMTAtMTkgIENoYW5kcmFrYWxhIENoYXZ2YSAgIDxjY2hhdnZhQHJlZGhhdC5jb20+CgoJKiBleHBtZWQuYzogTWlub3IgY29ycmVjdGlvbnMgaW4gY29tbWVudHMuCgkqIGludm9rZS50ZXhpOiBBZGRlZCBkZXNjaXB0aW9uIGZvciB0aGUgbmV3IG9wdGlvbiAtZnRyYXB2LgoKMjAwMC0xMC0xOSAgQ2hhbmRyYWthbGEgQ2hhdnZhICAgPGNjaGF2dmFAcmVkaGF0LmNvbT4KCgkqIGxpYmdjYzIuYzogQWRkZWQgdGhlIG1pc3NpbmcgI2VuZGlmLgoKVGh1IE9jdCAxOSAxNDoyNToxMSBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuaCAoQ09OU1RfT0tfRk9SX0xFVFRFUik6IFJlLWFkZCAnTic7IGRvY3VtZW50LgoKMjAwMC0xMC0xOCAgQ2hhbmRyYWthbGEgQ2hhdnZhICA8Y2NoYXZ2YUByZWRoYXQuY29tPgoKCSogZXhwbWVkLmMgKGV4cGFuZF9tdWx0KTogRG9uJ3QgZG8gc3ludGhfbXVsdCBvcHRpbWl6YXRpb24gZm9yIC1mdHJhcHYuCglVc2Ugc211bHZfb3B0YWIgZm9yIC1mdHJhcHYuCgkoZXhwYW5kX211bHRfaGlnaHBhcnQpOiBVc2UgdW5zaWduZWQgbXVsdGlwbHkuCgkoZXhwYW5kX2Rpdm1vZCk6IFNwZWNpYWwtY2FzZSBkaXZpc2lvbiBieSAtMS4KCUZvciBFWEFDVF9ESVZfRVhQUiwgZG8gcmlnaHQgc2hpZnQgZmlyc3QsIHRoZW4gdGhlIG11bHRpcGx5LgoJRm9yIGNvbXBsZXggZGl2aWRlLCB1c2UgYWJzIHdpdGggdW5zaWduZWQgcmVzdWx0LgoJKiBleHByLmMgKGZvcmNlX29wZXJhbmQpOiBVc2UgdW5zaWduZWQgbXVsdGlwbHkuCgkoZXhwYW5kX2V4cHIpOiBVc2Ugb3ZlcmZsb3ctdHJhcHBpbmcgb3B0YWJzIGZvciBzaWduZWQgdHlwZXMgaWYKCWZsYWdfdHJhcHYuCglJZiBmbGFnX3RyYXB2LCBkb24ndCBnZW5lcmF0ZSBhIHJlY3Vyc2l2ZSBjYWxsIHdpdGggRVhQQU5EX1NVTQoJaWYgdGhlIHR5cGUgaXMgc2lnbmVkIGFuZCB0aGUgb3JpZ2luYWwgY2FsbCB3YXNuJ3QgRVhQQU5EX1NVTSBvcgoJRVhQQU5EX0lOSVRJQUxJWkVSLgoJKiBleHByLmggKGFkZHZfb3B0YWIsIHN1YnZfb3B0YWIsIHNtdWx2X29wdGFiLCBzZGl2dl9vcHRhYik6IERlY2xhcmUuCgkobmVndl9vcHRhYiwgYWJzdl9vcHRhYik6IERlY2xhcmUuCgkqIGZsYWdzLmggKGZsYWdfdHJhcHYpOiBEZWNsYXJlLgoJKiBnZW5vcGluaXQuYyAob3B0YWJzKTogQWRkIGVudHJpZXMgZm9yIGFkZHZfb3B0YWIsIHN1YnZfb3B0YWIsCglzbXVsdl9vcHRhYiwgc2RpdnZfb3B0YWIsIG5lZ3Zfb3B0YWIgYW5kIGFic3Zfb3B0YWIuCgkoZ2VuX2luc24pOiBJbnRlcnByZXQgJyRQJyBhcyByZXF1aXJpbmcgYW4gaW50ZWdlciBtb2RlLAoJaW5jbHVkaW5nIHBhcnRpYWwgaW50ZWdlciBtb2Rlcy4KCSogbG9vcC5jIChlbWl0X2l2X2FkZF9tdWx0KTogVXNlIHVuc2lnbmVkIGV4cGFuZF9tdWx0X2FkZC4KCShwcm9kdWN0X2NoZWFwX3ApOiBVc2UgdW5zaWduZWQgZXhwYW5kX211bHQuCgkqIG9wdGFicy5jIChhZGR2X29wdGFiLCBzdWJ2X29wdGFiLCBzbXVsdl9vcHRhYiwgc2RpdnZfb3B0YWIpOiBEZWZpbmUuCgkobmVndl9vcHRhYiwgYWJzdl9vcHRhYik6IERlZmluZS4KCShleHBhbmRfYmlub3ApOiBVc2Ugb3ZlcmZsb3ctdHJhcHBpbmcgb3B0YWJzIGZvciBzaWduZWQgdHlwZXMgaWYKCWZsYWdfdHJhcHYuCglIYW5kbGUgbmVndl9vcHRhYiBsaWJlIG5lZ19vcHRhYi4KCShleHBhbmRfYWJzKTogVGFrZSByZXN1bHRfdW5zaWduZWRwIGFyZ3VtZW50IGluc3RlYWQgb2YgdW5zaWduZWRwIG9uZS4KCVVzZSBvdmVyZmxvdy10cmFwcGluZyBvcHRhYnMgZm9yIHNpZ25lZCByZXN1bHQgaWYgZmxhZ190cmFwdi4KCShleHBhbmRfY29tcGxleF9hYnMpOiBVc2Ugb3ZlcmZsb3ctdHJhcHBpbmcgb3B0YWJzIGZvciBzaWduZWQgdHlwZXMgaWYKCWZsYWdfdHJhcHYuCglEb24ndCBvcGVuLWNvZGUgY29tcGxleCBhYnNvbHV0ZS12YWx1ZSBvcGVyYXRpb24gZm9yIGZsYWdfdHJhcHYuCgkoaW5pdF9vcHRhYnMpOiBJbml0aWFsaXplIGFkZHZfb3B0YWIsIHN1YnZfb3B0YWIsIHNtdWx2X29wdGFiLAoJc2RpdnZfb3B0YWIsIG5lZ3Zfb3B0YWIgYW5kIGFic3Zfb3B0YWIuCgkqIHRvcGxldi5jIChmbGFnX3RyYXB2KTogRGVmaW5lLgoJKGxhbmdfaW5kZXBlbmRlbnRfb3B0aW9ucyBmX29wdGlvbnMpOiBJbmNsdWRlIGZsYWdfdHJhcHYuCgkqIHRyZWUuaCAoVFlQRV9UUkFQX1NJR05FRCk6IERlZmluZS4KCSogbGliZ2NjMi5jIChfX2FkZHZzaTMsIF9fYWRkdmRpMywgX19zdWJ2c2kzLF9fc3VidnNpMywgX19zdWJ2ZGkzLAoJX19tdWx2c2kzLCBfX25lZ3ZzaTIsIF9fbmVndmRpMiwgX19hYnN2c2kyLCBfX2Fic3ZkaTIsIF9fbXVsdmRpMyk6CglOZXcgZnVuY3Rpb25zLgoJKiBNYWtlZmlsZS5pbjogYWRkIF9hYnN2c2kyIF9hYnN2ZGkyIF9hZGR2c2kzIF9hZGR2ZGkzIF9zdWJ2c2kzCglfc3VidmRpMyBfbXVsdnNpMyBfbXVsdmRpMyBfbmVndnNpMiBfbmVndmRpMi4KCjIwMDAtMTAtMTggIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCSAgICBEYXZpZCBWLiBIZW5rZWwtV2FsbGFjZSAgPGd1bWJ5QGN5Z251cy5jb20+CgoJKiBjb25maWcvaTM4Ni90LW5ldHdhcmU6IEJyaW5nIGluIGZyb20gdGhlIFJlZCBIYXQgdHJlZS4KCSogY29uZmlnL2kzODYvbmV0d2FyZS5oOiBMaWtld2lzZS4KCSogY29uZmlnL25ldHdhcmUuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvbmV0d2FyZS5oOiBEZWxldGUuCgkqIGNvbmZpZ3VyZS5pbjogQWRkIGlbMzQ1NjddODYtKi1uZXR3YXJlLgoJKiBjb25maWd1cmU6IEhhbmQtZWRpdCB0byBtYXRjaCBjb25maWd1cmUuaW4gY2hhbmdlLgoKMjAwMC0xMC0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmggKGZsYWdfbm9fYnVpbHRpbik6IERlY2xhcmUuCgkoZmxhZ19ub19ub25hbnNpX2J1aWx0aW4pOiBMaWtld2lzZS4KCShjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKiBjLWNvbW1vbi5jIChmbGFnX25vX2J1aWx0aW4pOiBOZXcgdmFyaWFibGUuCgkoZmxhZ19ub19ub25hbnNpX2J1aWx0aW4pOiBMaWtld2lzZS4KCShjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBSZW1vdmUgcGFyYW1ldGVycy4gIEFkanVzdAoJYWNjb3JkaW5nbHkuCgkqIGMtZGVjbC5jIChmbGFnX25vX2J1aWx0aW4pOiBSZW1vdmUuCgkoZmxhZ19ub19ub25hbnNpX2J1aWx0aW4pOiBMaWtld2lzZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkanVzdCBjYWxsIHRvCgljX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMuCgoyMDAwLTEwLTE4ICBNYXJjIEVzcGllIDxlc3BpZUBvcGVuYnNkLm9yZz4KCgkqIHRtLnRleGkgKExJQkdDQ19TUEVDKTogU3luY2ggd2l0aCByZWFsaXR5LgoKMjAwMC0xMC0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoY2hlY2tfZm9ybWF0X3R5cGVzKTogQ2hlY2sgZm9yIHdyaXRpbmcgdGhyb3VnaCBhCglOVUxMIHBvaW50ZXIgYXJndW1lbnQuCgoyMDAwLTEwLTE4ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIHRtLnRleGkgKEV4Y2VwdGlvbiBSZWdpb24gT3V0cHV0KTogRG9jdW1lbnQKCURXQVJGX0NJRV9EQVRBX0FMSUdOTUVOVC4KCSogZHdhcmYyb3V0LmMgKERXQVJGX0NJRV9EQVRBX0FMSUdOTUVOVCk6IFdyYXAgZGVmaW5pdGlvbiBpbgoJI2lmbmRlZi4KCVtFTkFCTEVfQ0hFQ0tJTkddIChyZWdfc2F2ZSk6IEFib3J0IGlmIG9mZnNldCBpcyBub3QgYSBtdWx0aXBsZSBvZgoJRFdBUkZfQ0lFX0RBVEFfQUxJR05NRU5ULgoKMjAwMC0xMC0xOCAgTWljaGFlbCBIYXllcyAgPG1oYXllc0BjeWdudXMuY29tPgoKCSogYmFzaWMtYmxvY2suaCAoc3RydWN0IGxvb3ApOiBEZWxldGUgZmllbGRzIHByZV9oZWFkZXJfcm9vdAoJYW5kIHByZV9oZWFkZXJfdHJhY2UgYW5kIHJlcGxhY2Ugd2l0aCBwcmVfaGVhZGVyX2VkZ2VzCglhbmQgbnVtX3ByZV9oZWFkZXJfZWRnZXMuCgkqIGZsb3cuYyAoZmxvd19sb29wX2R1bXApOiBEdW1wIHByZV9oZWFkZXJfZWRnZXMuCgkoZmxvd19sb29wc19mcmVlKTogRnJlZSBwcmVfaGVhZGVyX2VkZ2VzLgoJKGZsb3dfbG9vcF9wcmVfaGVhZGVyX3NjYW4pOiBDYWxjdWxhdGUgcHJlX2hlYWRlcl9lZGdlcy4KCjIwMDAtMTAtMTggIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIGNvbnRyaWIudGV4aTogVXBkYXRlIHJlZmVyZW5jZXMgdG8gc3RlZXJpbmcgY29tbWl0dGVlIG1lbWJlcnMKCWFuZCBKZWZmIExhdydzIGVudHJ5LgoKMjAwMC0xMC0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoQ1BMVVNQTFVTX1NURF9WRVIsIENfU1REX1ZFUiwgQ19TVERfTkFNRSk6IERlZmluZS4KCShtYXliZV9yZWFkX2RvbGxhcl9udW1iZXIsIGNoZWNrX2Zvcm1hdF9pbmZvX21haW4pOiBVc2UgdGhlbSBmb3IKCXBlZGFudGljIHdhcm5pbmcgbWVzc2FnZXMuCgoyMDAwLTEwLTE4ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChjaGVja19mb3JtYXRfaW5mb19tYWluKTogTWlub3IgY2xlYW51cDogbW92ZQoJdmFyaWFibGVzIGludG8gaW5uZXIgc2NvcGVzOyBpbml0aWFsaXplIGRlY2xhcmF0aW9ucyB3aGVyZQoJYXBwcm9wcmlhdGU7IGRvbid0IGhhcmRjb2RlICJzY2FuZiIgbmFtZSBvbiB3YXJuaW5nIGZvciB6ZXJvCgl3aWR0aC4KCjIwMDAtMTAtMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5jIChiYWNrX2VuZF9ob29rKTogTmV3IHZhcmlhYmxlLgoJKiBjLWNvbW1vbi5oIChiYWNrX2VuZF9ob29rKTogRGVjbGFyZSBpdC4KCSogYy1sYW5nLmMgKGZpbmlzaF9maWxlKTogVXNlIGl0LgoKCSogZW1pdC1ydGwuYyAoaW5pdF9lbWl0X29uY2UpOiBJbml0aWFsaXplIHRoZSBjb25zdF9pbnRfaHRhYgoJZWFybGllci4KCjIwMDAtMTAtMTggIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAoaXg4Nl9jb21wYXJpc29uX29wZXJhdG9yLCBwdXRfY29uZGl0aW9uX2NvZGUsCglpeDg2X21hdGNoX2NjbW9kZSwgaXg4Nl9jY19tb2RlKTogSGFuZGxlIENDUkNtb2RlLgoJKGl4ODZfZXhwYW5kX3N0cmxlbnNpX3Vucm9sbF8xKTogVXNlIENDUkNtb2RlLgoJKiBpMzg2LmggKEVYVFJBX0NDX01PREVTKTogQWRkIENDUkNtb2RlLgoJKiBpMzg2Lm1kIChhZGRkaSBhbmQgbmVnZGkgc3BsaXR0ZXIpOiBVc2UgQ0NSQ21vZGUuCgkoYWRkP2lfMywgYWRkP2lfNCwgYWRkP2lfNSk6IFVzZSBDQ1JDbW9kZTsgc3dhcCBvcGVyYW5kcwoJKHN1YnNpM19jYXJyeSk6IGFkZCAnKicKCShhZGRzaTNfY2FycnlfcmMsIHN1YnNpM19jYXJyeV9yYywgeDg2X21vdnNpY2NfMF9tMV9yYyk6IE5ldy4KCShjbXAgdG8gYWRkIHBlZXAyKTogVXNlIENDUkNtb2RlOyBzd2FwIG9wZXJhbmRzLgoKMjAwMC0xMC0xOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBoODMwMC5jOiBGaXggYSBjb21tZW50IHR5cG8uCgkocm91bmRfZnJhbWVfc2l6ZSk6IE5ldy4KCShjb21wdXRlX3NhdmVkX3JlZ3MpOiBMaWtld2lzZS4KCShwdXNoKTogTGlrZXdpc2UuCgkocG9wKTogTGlrZXdpc2UuCgkocHVzaF9vcmRlcik6IFJlbW92ZS4KCShwb3Bfb3JkZXIpOiBMaWtld2lzZS4KCShmdW5jdGlvbl9wcm9sb2d1ZSk6IFJlYXJyYW5nZSBjb2RlIGZvciByZWFkYWJpbGl0eS4KCShmdW5jdGlvbl9lcGlsb2d1ZSk6IExpa2V3aXNlLgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kOiBSZW1vdmUgYW4gdW5uZWNlc3Nhcnkgc2lnbl9leHRlbmQKCWV4cGFuZGVyIHRoYXQgaXMgdXNlZCB3aGVuIG5vdCBvcHRpbWl6aW5nLiAgT3V0cHV0IGEgdGFiIGFmdGVyCgllYWNoIGFzc2VtYmx5IGluc25zLgoKCSogcmVvcmcuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTEwLTE3ICBKb2VybiBSZW5uZWNrZSA8YW15bGFhckByZWRoYXQuY28udWs+CgoJKiByZWxvYWQxLmMgKG1vdmUyYWRkX25vdGVfc3RvcmUpOiBDaGVjayBmb3Igc2ltcGxlCglhdXRvLWluYyBpbiBkZXN0aW5hdGlvbi4KCjIwMDAtMTAtMTcgIE1pY2hhZWwgQ2hhc3RhaW4gIDxjaGFzdGFpbkByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni1hb3V0Lmg6IGRlZmluZSBJTlRfQVNNX09QLgoKVHVlIE9jdCAxNyAyMDoxMTowOCAyMDAwICBBbGFuIE1vZHJhIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBwYS5jIChwcmludF9vcGVyYW5kKTogSGFuZGxlIGNhc2UgJ2MnIGZvciAudnRhYmxlX2luaGVyaXQKClR1ZSBPY3QgMTcgMjA6MDU6NTEgMjAwMCAgTWFydGluIEJ1Y2hob2x6IDxtYXJ0aW5AeGVtYWNzLm9yZz4KCgkqIGkzNzAubWQ6IEZpeCBzcGVsbGluZyB0eXBvLgoKMjAwMC0xMC0xNyAgRnJhbnogU2lybCAgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCSogZnVuY3Rpb24uYyAobG9jYXRlX2FuZF9wYWRfcGFybSk6IERvbid0IGFsaWduIHN0YWNrIHVuY29uZGl0aW9uYWxseS4KCUZpeGVzIGV4ZWN1dGUvMjAwMDEwMTctMS5jIG9uIHBvd2VycGMtbGludXgtZ251LgoKCSogZXhwci5jIChzdG9yZV9jb25zdHJ1Y3Rvcik6IEFwcGx5IE1FTV9BTElBU19TRVQgdG8gTUVNcyBvbmx5LgoJKiByczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9oYXNoX2NvbnN0YW50KTogVXNlIFgwSU5UIHRvIGFjY2VzcyBhCglMQUJFTF9SRUYuCgoJKiByczYwMDAvcnM2MDAwLmggKE5PX0RPTExBUl9JTl9MQUJFTCwgRE9MTEFSU19JTl9JREVOVElGSUVSUywKCUVOQ09ERV9TRUNUSU9OX0lORk8sIEFTTV9PVVRQVVRfU1BFQ0lBTF9QT09MX0VOVFJZX1ApOiBNb3ZlIGZyb20KCWhlcmUuLi4KCSogcnM2MDAwL2FpeC5oOiAuLi50byBoZXJlLgoJKiByczYwMDAvbGludXguaCAoQVNNX0FQUF9PTiwgQVNNX0FQUF9PRkYpOiBEZWZpbmUgdG8gTGludXgtc3R5bGUuCgoyMDAwLTEwLTE3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChBU01fT1VUUFVUX01JX1RIVU5LKTogUmVsb2FkIGdwIGlmIG5lZWRlZC4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChBU01fT1VUUFVUX01JX1RIVU5LKTogQWx3YXlzIHVzZSBjYWxsLCBtYWtlCglzdXJlIGxpbmtlciBjYW4gcmVsYXggZXZlbiB0aGUgZGVsYXkgc2xvdCBtb3YgJWcxLCVvNywgZml4IG91dHB1dAoJZm9ybWF0aW5nLgoKMjAwMC0xMC0xNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IFJlbW92ZSBhbiB1bm5lY2Vzc2FyeSB6ZXJvX2V4dGVuZAoJZXhwYW5kZXIgdGhhdCBpcyB1c2VkIHdoZW4gbm90IG9wdGltaXppbmcuICBPdXRwdXQgYSB0YWIgYWZ0ZXIKCWVhY2ggYXNzZW1ibHkgaW5zbnMuCgoyMDAwLTEwLTE3ICBDaGFuZHJha2FsYSBDaGF2dmEgIDxjY2hhdnZhQHJlZGhhdC5jb20+CgoJKiBnY2MuYzogTmV3IG9wdGlvbnMgLS10YXJnZXQtaGVscC4KCShwcm9jZXNzX2NvbW1hbmQpOiBBZGRlZCBjb2RlIHRvIHBhcnNlIHRoaXMgbmV3IG9wdGlvbi4KCSogdG9wbGV2LmMgKGRpc3BsYXlfdGFyZ2V0X29wdGlvbnMpOiBOZXcgZnVuY3Rpb24gdG8gc3VwcG9ydCB0aGUKCWFib3ZlIG5ldyBvcHRpb24uCgkqIGNwcGluaXQuYyAobmV3X3BlbmRpbmdfZGlyZWN0aXZlKSA6IE5ldyBvcHRpb24gT1BUX3RhcmdldF9faGVscC4KCShjcHBfaGFuZGxlX29wdGlvbik6IFN1cHBvcnQgdGhpcyBuZXcgb3B0aW9uLgoJKiBpbnZva2UudGV4aTogQWRkZWQgbm90ZXMgYWJvdXQgLS10YXJnZXQtaGVscCBvcHRpb24uCgoyMDAwLTEwLTE3ICBHcmFoYW0gU3RvdHQgIDxncmFoYW1zQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICh0ZXN0cWlfMSk6IEFkZCBtaXNzaW5nIG9wZXJhbmQgcHJlZml4Cglmb3Igb3BlcmFuZCAwLgoJKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oOiBBZGQgbWlzc2luZyBwcm90b3R5cGUuCgoyMDAwLTEwLTE3ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pMzg2L3VuaXguaCAoQVNNX09VVFBVVF9NSV9USFVOSyk6IFN5bWJvbAoJX0dMT0JBTF9PRkZTRVRfVEFCTEUgc2hvdWxkIG5vdCBoYXZlIGEgJCBwcmVmaXggd2hlbgoJdXNpbmcgLW1pbnRlbC1zeW50YXguCgoyMDAwLTEwLTE3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChGTVRfRkxBR19ET0xMQVJfTVVMVElQTEUpOiBEZWZpbmUuCgkoZm9ybWF0X3R5cGVzKTogVXNlIGl0IGZvciBwcmludGYuCgkobWF5YmVfcmVhZF9kb2xsYXJfbnVtYmVyKTogQWRkIHBhcmFtZXRlciBmb3IgdGhlIGtpbmQgb2YgZm9ybWF0CglpbnZvbHZlZC4gIFdhcm4gZm9yIG11bHRpcGxlIHVzZSBmb3IgYXJndW1lbnRzIGlmIHRoaXMgaXMKCWluYXBwcm9wcmlhdGUgZm9yIHRoZSBraW5kIG9mIGZvcm1hdCBpbnZvbHZlZC4KCShjaGVja19mb3JtYXRfaW5mb19tYWluKTogVXBkYXRlIGNhbGxzIHRvIG1heWJlX3JlYWRfZG9sbGFyX251bWJlci4KCjIwMDAtMTAtMTcgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogaW5jbGhhY2suZGVmIChocHV4X21heGludCk6IEFsc28gYXBwbHkgZml4IHRvIHZhbHVlcy5oLgoJKiBmaXhpbmNsLng6IFJlYnVpbHQuCgoyMDAwLTEwLTE3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGdlbnJlY29nLmMgKHdyaXRlX3N3aXRjaCk6IFJldHVybiB0aGUgZmlyc3QgY29uZGl0aW9uIHRoYXQgbmVlZHMgYQoJbGFiZWwuCgoyMDAwLTEwLTE3ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIGMtdHJlZS5oICh3YXJuX3NlcXVlbmNlX3BvaW50KTogTW92ZSBkZWNsYXJhdGlvbiB0by4uLgoJKiBjLWNvbW1vbi5oICh3YXJuX3NlcXVlbmNlX3BvaW50KTogLi4uIGhlcmUuCgkqIGMtZGVjbC5jICh3YXJuX3NlcXVlbmNlX3BvaW50KTogTW92ZSBkZWZpbml0aW9uIHRvLi4uCgkqIGMtY29tbW9uLmMgKHdhcm5fc2VxdWVuY2VfcG9pbnQpOiAuLi4gaGVyZS4KCShzdHJ1Y3QgcmV2ZXJzZV90cmVlKTogTmV3LgoJKHJldmVyc2VfbGlzdCwgcmV2ZXJzZV9tYXhfZGVwdGgpOiBOZXcgc3RhdGljIHZhcmlhYmxlcy4KCShidWlsZF9yZXZlcnNlX3RyZWUsIGNvbW1vbl9hbmNlc3RvciwgbW9kaWZ5X29rCgl2ZXJpZnlfc2VxdWVuY2VfcG9pbnRzKTogTmV3IGZ1bmN0aW9ucy4KCShjX2V4cGFuZF9leHByX3N0bXQpOiBDYWxsIHZlcmlmeV9zZXF1ZW5jZV9wb2ludHMgaWYgLVdzZXF1ZW5jZS1wb2ludC4KCSogYy10eXBlY2suYyAoY2hlY2tfbW9kaWZ5X2V4cHIpOiBEZWxldGUuCgkoYnVpbGRfbW9kaWZ5X2V4cHIpOiBEb24ndCBjYWxsIGl0LgoKMjAwMC0xMC0xNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uaCAod2Fybl9taXNzaW5nX2Zvcm1hdF9hdHRyaWJ1dGUpOiBOZXcgdmFyaWFibGUuCgkqIGMtZGVjbC5jICh3YXJuX21pc3NpbmdfZm9ybWF0X2F0dHJpYnV0ZSk6IE5ldyB2YXJpYWJsZS4KCShjX2RlY29kZV9vcHRpb24pOiBEZWNvZGUgLVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUgYW5kCgktV25vLW1pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZS4KCSogYy1jb21tb24uYyAoY2hlY2tfZnVuY3Rpb25fZm9ybWF0KTogSWYKCS1XbWlzc2luZy1mb3JtYXQtYXR0cmlidXRlLCBnaXZlIGEgd2FybmluZyB3aGVyZSBhIHZwcmludGYgb3IKCXZzY2FuZiBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgYSBmdW5jdGlvbiB3aXRob3V0IGl0cyBvd24gcHJpbnRmIG9yCglzY2FuZiBhdHRyaWJ1dGUuCgkqIHRvcGxldi5jIChkb2N1bWVudGVkX2xhbmdfb3B0aW9ucyk6IEFkZAoJLVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUuCgkqIGludm9rZS50ZXhpOiBEb2N1bWVudCAtV21pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZS4KCjIwMDAtMTAtMTcgIE1hcmMgRXNwaWUgPGVzcGllQG9wZW5ic2Qub3JnPgoKCSogaW52b2tlLnRleGkgKC1zaGFyZWQpOiBJbnNpc3Qgb24gcmVxdWlyaW5nIGNvZGUgZ2VuZXJhdGlvbiBmbGFncwoJdG8gYmUgdXNlZCBhbG9uZyB3aXRoIC1zaGFyZWQsIGFuZCBkb2N1bWVudCB0aGUgc3VidGxlIGZhaWx1cmUgdGhhdAoJbWF5IG9jY3VyIG90aGVyd2lzZS4KCjIwMDAtMTAtMTYgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogcGEubWQgKHJldHVybl9pbnRlcm5hbCk6IE1vdmUgYHVzZScgYWZ0ZXIgYHJldHVybicuCgoyMDAwLTEwLTE2IFRoZW9kb3JlIFBhcGFkb3BvdWxvIDxUaGVvZG9yZS5QYXBhZG9wb3Vsb0Bzb3BoaWEuaW5yaWEuZnI+CgoJKiBtYWNobW9kZS5kZWY6IENvcnJlY3QgY29tbWVudC4KCjIwMDAtMTAtMTYgIFJvZG5leSBCcm93biAgPFJvZG5leUJyb3duQG15bmQuY29tPgoKCSogcHJpbnQtcnRsLmMgKHByaW50X3J0eF9oZWFkKTogQ29uc3RpZnkuCgkqIHJ0bC5oIChwcmludF9ydHhfaGVhZCk6IFNpbWlsYXJseS4KCgkqIGNvbmZpZy9wYS9wYS9wYS1wcm90b3MuaCAob3V0cHV0XzY0Yml0X2FuZCwgb3V0cHV0XzY0Yml0X2lvcik6CglDb25zdGlmeSBjaGFyICogcmV0dXJuIHZhbHVlLgoJKiBjb25maWcvcGEvcGEvcGEuYwoJKG91dHB1dF82NGJpdF9hbmQsIG91dHB1dF82NGJpdF9pb3IpOiBDb25zdGlmeSBjaGFyICogcmV0dXJuIHZhbHVlLgoJKHBhX2Nhbl9jb21iaW5lX3ApOiBNYWtlIHN0YXRpYy4KCShmdW5jdGlvbl9hcmcpOiBEZWNvcmF0ZSB1bnVzZWQgYG5hbWVkJyBhcmd1bWVudC4gRml4IGNvbW1lbnQgdHlwby4KCShmdW5jdGlvbl9hcmdfcGFydGlhbF9ucmVncyk6IERlY29yYXRlIHVudXNlZCBgbmFtZWQnIGFyZ3VtZW50LgoKMjAwMC0xMC0xNiAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoZm9ybWF0X2NoZWNrX3Jlc3VsdHMpOiBOZXcgc3RydWN0dXJlLgoJKGZpbmlzaF9kb2xsYXJfZm9ybWF0X2NoZWNraW5nKTogQWRqdXN0IHRvIHRha2UgYQoJZm9ybWF0X2NoZWNrX3Jlc3VsdHMgKiBwYXJhbWV0ZXIuCgkoY2hlY2tfZm9ybWF0X2luZm8sIGNoZWNrX2Zvcm1hdF9pbmZvX3JlY3Vyc2UsCgljaGVja19mb3JtYXRfaW5mb19tYWluKTogU3BsaXQgY2hlY2tfZm9ybWF0X2luZm8gaW50byB0aHJlZQoJZnVuY3Rpb25zLCB0aGUgbWFpbiBjaGVja2luZyBnb2luZyBpbiBjaGVja19mb3JtYXRfaW5mb19tYWluLgoJUmVjdXJzZSB3aGVuIGFueSByZWR1Y3Rpb24gb2YgdGhlIGZvcm1hdCBzdHJpbmcgYXJndW1lbnQgdG93YXJkcyBhCglzdHJpbmcgbGl0ZXJhbCBpcyBkb25lOyBnbyBkb3duIGJvdGggYnJhbmNoZXMgb2YgYSBjb25kaXRpb25hbAoJZXhwcmVzc2lvbi4gIERvbid0IHdhcm4gZm9yIGV4dHJhIGZvcm1hdCBhcmd1bWVudHMgb3IgZW1wdHkgZm9ybWF0CglzdHJpbmdzIGlmIHRoZXkgb25seSBvY2N1ciBpbiBzb21lIGJyYW5jaGVzIG9mIGEgY29uZGl0aW9uYWwKCWV4cHJlc3Npb24uCgoyMDAwLTEwLTE2ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jOiBSZW1vdmUgb2JzdGFjay4gIEluY2x1ZGUgZ2djLmguCgoyMDAwLTEwLTE2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHJ0bGFuYWwuYyAobWF5X3RyYXBfcCk6IENoZWNrIG9wZXJhbmQgbW9kZXMgb2YgQ09NUEFSRS4KCjIwMDAtMTAtMTUgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0BjeWdudXMuY29tPgoKCSogaTM4Ni5tZCAoKm1vdnNpX29yKTogU3dpdGNoIG9wZXJhbmQgb3JkZXIgZm9yIGludGVsIHN5bnRheC4KCjIwMDAtMTAtMTQgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIFBST0JMRU1TOiBSZW1vdmUuCgoJKiBnY2MudGV4aSAoQ29udHJpYnV0aW5nKTogVXBkYXRlLgoKMjAwMC0xMC0xMyAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQGN5Z251cy5jb20+CgoJKiBjb25maWcvaTM4Ni91bml4LmggKEFTTV9PVVRQVVRfTUlfVEhVTkspOiBPdXRwdXQgZmluYWwganVtcCB1c2luZwoJYXBwcm9wcmlhdGUgYXNzZW1ibGVyIGRpYWxlY3QuCgoyMDAwLTEwLTEzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGMtY29tbW9uLmMgKGNfZXhwYW5kX2J1aWx0aW4pOiBQQVJBTVMtaXplIHByb3RvdHlwZS4KCjIwMDAtMTAtMTIgIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPgoKCSogY29uZmlnL2F2ci9hdnIuYyAob3V0cHV0X21vdmhpLCBvdXRwdXRfbW92c2lzZik6IEZpeCBsb2FkaW5nCgljb25zdGFudHMgMSBhbmQgMiB0byBOT19MRF9SRUdTLgoKMjAwMC0xMC0xMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKGMtcGFyc2UuYywgdHJhZGNpZi5jKTogQ3JlYXRlIGF0b21pY2FsbHkuCgoJKiBvYmpjL01ha2UtbGFuZy5pbiAob2JqYy1wYXJzZS5jKTogTGlrZXdpc2UuCgoyMDAwLTEwLTEzICBSaWNoYXJkIEVhcm5zaGF3IDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmM6IEluY2x1ZGUgb2JzdGFjay5oCgkobWluaXBvb2xfb2JzdGFjaywgbWluaXBvb2xfc3RhcnRvYmopOiBEZWZpbmUuCgkoYXJtX2FkZF9nY19yb290cyk6IEluaXRpYWxpemUgdGhlbS4KCShjcmVhdGVfZml4X2JhcnJpZXIpOiBVc2Ugb3VyIG5ldyBvYnN0YWNrLgoJKHB1c2hfbWluaXBvb2xfYmFycmllciwgcHVzaF9taW5pcG9vbF9maXgpOiBMaWtld2lzZS4KCShhcm1fcmVvcmcpOiBSZWxlYXNlIG9ic3RhY2sgbWVtb3J5LgoKMjAwMC0xMC0xMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQgKG5vbmxvY2FsX2dvdG9fcmVjZWl2ZXIpOiBSZW1vdmUuCgkocHJvbG9ndWUsIGV4Y2VwdGlvbl9yZWNlaXZlciwgYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIpOiBOZXcKCXBhdHRlcm5zLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoRklOQUxJWkVfUElDKTogUmVtb3ZlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMtcHJvdG9zLmggKGZpbmFsaXplX3BpYyk6IFJlbW92ZS4KCShsb2FkX3BpY19yZWdpc3Rlcik6IE5ldyBwcm90b3R5cGUuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChwaWNfc2V0dXBfY29kZSk6IFJlbW92ZS4KCShmaW5hbGl6ZV9waWMpOiBSZW5hbWUgdG8uLi4KCShsb2FkX3BpY19yZWdpc3Rlcik6IC4uLnRoaXMgZnVuY3Rpb24uCglEb24ndCBsb29rIGZvciBub25sb2NhbF9nb3RvX3JlY2VpdmVycyBhbmQgZW1pdCBwaWMgc2V0dXAgY29kZQoJZGlyZWN0bHkuICBEb24ndCBjaGVjayBjdXJyZW50X2Z1bmN0aW9uX3VzZXNfcGljX29mZnNldF90YWJsZS4KCjIwMDAtMTAtMTMgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhQGFybS5jb20+CgoJKiB0cmVlLmggKHN0cnVjdCBvYnN0YWNrKTogRGVjbGFyZS4KCjIwMDAtMTAtMTIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUmVtb3ZlIG9ic3RhY2tzLgoJKiBNYWtlZmlsZS5pbiAoZ2djLWNhbGxiYWNrcy5vKTogUmVtb3ZlIHRhcmdldC4KCShmbG93Lm8pOiBEZXBlbmQgb24gR0dDX0guCgkqIGFsaWFzLmMgKGluaXRfYWxpYXNfYW5hbHlzaXMpOgoJUmVtb3ZlIGdnY19wIGNvbmRpdGlvbmFscy4KCShlbmRfYWxpYXNfYW5hbHlzaXMpOiBMaWtld2lzZS4KCSogYmFzaWMtYmxvY2suaCAoaW5pdF9mbG93KTogTmV3IGZ1bmN0aW9uLgoJKGFsbG9jYXRlX3JlZ19saWZlX2RhdGEpOiBEZWNsYXJlLgoJKiBiYi1yZW9yZGVyLmMJKGZ1bmN0aW9uX29ic3RhY2spOiBSZXBsYWNlIHdpdGggLi4uCgkoZmxvd19vYnN0YWNrKTogLi4uIG5ldyB2YXJpYWJsZS4KCShmaXh1cF9yZW9yZGVyX2NoYWluKTogVXNlIGl0LgoJKiBjLWRlY2wuYyAoZ2djX3ApOiBSZW1vdmUuCgkoY2FsbGVyLXNhdmUuYyk6IERvbid0IGNhbGwgb2JhbGxvYy9vYmZyZWUuCgkqIGNvbWJpbmUuYyAoc3RydWN0Cgl1bmRvYnVmKTogUmVtb3ZlIHN0b3JhZ2UuCgkodHJ5X2NvbWJpbmUpOiBEb24ndCBjYWxsIG9iYWxsb2MuCgkodW5kb19hbGwpOiBEb24ndCBjYWxsIG9iZnJlZS4KCSogY3NlLmMgKGluc2VydCk6IFVzZSB4bWFsbG9jLCBub3QKCW9iYWxsb2MuCgkoY3NlX21haW4pOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkqIGR3YXJmMm91dC5jIChzYXZlX3J0eCk6IFJlbW92ZQoJb2JzdGFjayBjb2RlLgoJKGR3YXJmMm91dF9pbml0KTogUmVtb3ZlIGdnY19wIGNvbmRpdGlvbmFscy4KCSogZW1pdC1ydGwuYyAocnRsX29ic3RhY2spOiBSZW1vdmUuCgkoZ2VuX3J0eF9DT05TVF9JTlQpOiBSZW1vdmUgZ2djX3AgY29uZGl0aW9uYWxzLgoJKG1ha2VfaW5zbl9yYXcpOiBMaWtld2lzZS4KCShlbWl0X2luc25fYmVmb3JlKTogTGlrZXdpc2UuCgkoZW1pdF9pbnNuX2FmdGVyKTogTGlrZXdpc2UuCgkoZW1pdF9pbnNuKTogTGlrZXdpc2UuCgkoZ2VuX3NlcXVlbmNlKTogTGlrZXdpc2UuCgkoY29weV9pbnNuXzEpOiBSZW1vdmUgaGFuZGxpbmcgb2YgYGInIFJUTCBjb21wb25lbnRzLgoJKGluaXRfZW1pdF9vbmNlKTogUmVtb3ZlIGdnY19wIGNvbmRpdGlvbmFscy4KCSogZXhjZXB0LmMgKGNyZWF0ZV9yZXRocm93X3JlZik6IERvbid0IGZvb2wgd2l0aCBvYnN0YWNrcy4KCShhZGRfcGFydGlhbF9lbnRyeSk6IExpa2V3aXNlLgoJKGNhbGxfZ2V0X2VoX2NvbnRleHQpOiBMaWtld2lzZS4KCShiZWdpbl9wcm90ZWN0X3BhcnRpYWxzKTogTGlrZXdpc2UuCgkocHJvdGVjdF93aXRoX3Rlcm1pbmF0ZSk6IExpa2V3aXNlLgoJKiBleHBsb3cuYwoJKHBsdXNfY29uc3RhbnRfd2lkZSk6IExpa2V3aXNlLgoJKiBleHByLmMgKGluaXRfZXhwcl9vbmNlKToKCUxpa2V3aXNlLgoJKGVtaXRfYmxvY2tfbW92ZSk6IExpa2V3aXNlLgoJKGNsZWFyX3N0b3JhZ2UpOiBMaWtld2lzZS4KCShleHBhbmRfZXhwcik6IExpa2V3aXNlLgoJKiBmbG93LmMgKGZ1bmN0aW9uX29ic3RhY2spOiBSZW1vdmUuCgkoZmxvd19vYnN0YWNrKTogTmV3IHZhcmlhYmxlLgoJKGZsb3dfZmlyc3RvYmopOiBMaWtld2lzZS4KCShjcmVhdGVfYmFzZV9ibG9jayk6IFVzZSB0aGUgZmxvd19vYnN0YWNrLgoJKHNwbGl0X2Jsb2NrKTogTGlrZXdpc2UuCgkoc3BsaXRfZWRnZSk6IExpa2V3aXNlLgoJKGNhbGN1bGF0ZV9nbG9iYWxfcmVnc19saXZlKTogTGlrZXdpc2UuCgkoYWxsb2NhdGVfYmJfbGlmZV9kYXRhKTogTWFrZSBpdCBzdGF0aWMuICBMaWtld2l3c2UuCgkoaW5pdF9mbG93KTogTmV3IGZ1bmN0aW9uLgoJKHNpemVfaW50X3R5cGVfd2lkZSk6IFJlbW92ZSBnZ2NfcCBjb25kaXRpb25hbHMuCgkqIGZ1bmN0aW9uLmMKCShwdXNoX2Z1bmN0aW9uX2NvbnRleHRfdG8pOiBEb24ndCBjYWxsIHNhdmVfdHJlZV9zdGF0dXMuCgkocG9wX2Z1bmN0aW9uX2NvbnRleHRfZnJvbSk6IE9yIHJlc3RvcmVfdHJlZV9zdGF0dXMuCgkoYXNzaWduX3N0YWNrX2xvY2FsXzEpOiBEb24ndCBjYWxsIHB1c2hfb2JzdGFja3MuCgkoZmluZF9maXh1cF9yZXBsYWNlbWVudCk6IFVzZSB4bWFsbG9jLgoJKGZpeHVwX3Zhcl9yZWZzX2luc25zKTogRnJlZSB0aGUgc3RvcmFnZS4KCShpbnNuc19mb3JfbWVtX3dhbGspOiBEb24ndCBtZXNzIHdpdGggb2JzdGFja3MuCgkoaW5zdGFudGlhdGVfZGVjbHMpOiBMaWtld2lzZS4KCSh0cmFtcG9saW5lX2FkZHJlc3MpOiBMaWtld2lzZS4KCShleHBhbmRfZnVuY3Rpb25fZW5kKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmggKHN0dXJjdCBmdW5jdGlvbik6CglSZW1vdmUgb2JzdGFjay1yZWxhdGVkIHZhcmlhYmxlcy4KCShzYXZlX3RyZWVfc3RhdHVzKTogRG9uJ3QgZGVjbGFyZS4KCShyZXN0b3JlX3RyZWVfc3RhdHVzKTogTGlrZXdpc2UuCgkqIGdjc2UuYyAoY29tcHV0ZV9jYW5fY29weSk6CglEb24ndCBjYWxsIG9iYWxsb2Mvb2JmcmVlLgoJKiBnZW5hdHRydGFiLmMgKG9wZXJhdGVfZXhwKTogUmVtb3ZlCglnZ2NfcCBjb25kaXRpb25hbHMuCgkoc2ltcGxpZnlfY29uZCk6IExpa2V3aXNlLgoJKHNpbXBsaWZ5X3Rlc3RfZXhwKTogRG9uJ3QgbWVzcyB3aXRoIG9ic3RhY2tzLgoJKG9wdGltaXplX2F0dHJzKTogTGlrZXdpc2UuCgkqIGdlbmdlbnJ0bC5jIChnZW5kZWYpOiBEb24ndCBpbmNsdWRlCglnZ2NfcCBjb25kaXRpb25hbHMuCgkqIGdnYy1jYWxsYmFja3MuYyAoZ2djX3ApOiBSZW1vdmUuCgkqIGdnYy1ub25lLmMgKGdnY19wKTogUmVtb3ZlLgoJKiBnZ2MuaCAoZ2djX3ApOiBEb24ndCBkZWNsYXJlLgoJKiBpbnRlZ3JhdGUuYyAoc2F2ZV9mb3JfaW5saW5lKTogRG9uJ3QgbWVzcyB3aXRoIG9ic3RhY2tzLgoJKGludGVncmF0ZV9kZWNsX3RyZWUpOiBMaWtld2lzZS4KCShvdXRwdXRfaW5saW5lX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGxpc3RzLmMKCShpbml0X0VYUFJfSU5TTl9MSVNUX2NhY2hlKTogTGlrZXdpc2UuCgkqIGxvb3AuYyAodGVtcF9vYnN0YWNrKToKCVJlbW92ZS4KCShydGxfb2JzdGFjayk6IExpa2V3aXNlLgoJKGluaXRfbG9vcCk6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCShyZWdfYWRkcmVzc19jb3N0KTogRnJlZSBCSVZzIGFuZCBHSVZzLgoJKGNoZWNrX2luc25zX2Zvcl9iaXZzKTogVXNlIHhtYWxsb2MsIG5vdCBvYmFsbG9jLgoJKGZpbmRfbWVtX2dpdnMpOiBMaWtld2lzZS4KCShyZWNvcmRfYml2KTogTGlrZXdpc2UuCgkoZ2VuZXJhbF9pbmR1Y3Rpb25fdmFyKTogTGlrZXdpc2UuCgkocHJvZHVjdF9jaGVhcF9wKTogTGlrZXdzZS4KCSogb3B0YWJzLmMgKGluaXRfb25lX2xpYmZ1bmMpOiBSZW1vdmUKCWdnY19wIGNvbmRpdGlvbmFsLgoJKiBwcmludC10cmVlLmMgKGRlYnVnX3RyZWUpOiBEb24ndCB1c2UKCW9iYWxsb2Mvb2JmcmVlLgoJKHByaW50X25vZGUpOiBMaWtld2lzZS4KCSogcHJvZmlsZS5jIChvdXRwdXRfZnVuY19zdGFydF9wcm9maWxlcik6CglSZW1vdmUgY2FsbCB0byB0ZW1wb3JhcnlfYWxsb2NhdGlvbi4KCSogcmVsb2FkMS5jCgkoZWxpbWluYXRlX3JlZ3NfaW5faW5zbik6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCSogcmVzb3VyY2UuYwoJKG1hcmtfdGFyZ2V0X2xpdmVfcmVncyk6IFVzZSB4bWFsbG9jLgoJKGZyZWVfcmVzb3VyY2VfaW5mbyk6IEZyZWUgdGhlIG1lbW9yeS4KCSogcnRsLmMgKHJ0bF9vYnN0YWNrKToKCVJlbW92ZS4KCShydHZlY19hbGxvYyk6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCShydHhfYWxsb2MpOiBMaWtld2lzZS4KCShydHhfZnJlZSk6IFJlbW92ZS4KCShjb3B5X3J0eCk6IERvbid0IGhhbmRsZSBgYicgY2FzZXMuCgkocmVhZF9ydHgpOiBVc2UgYSBsb2NhbCBydGxfb2JzdGFjay4KCSogcnRsLmggKG9iYWxsb2MpOiBSZW1vdmUuCgkob2JmcmVlKTogTGlrZXdpc2UuCgkocG9wX29ic3RhY2tzKTogTGlrZXdpc2UuCgkocHVzaF9vYnN0YWNrcyk6IExpa2V3aXNlLgoJKGFsbG9jYXRlX2JiX2xpZmVfZGF0YSk6IExpa2V3aXNlLgoJKGFsbG9jYXRlX3JlZ19saWZlX2RhdGEpOiBMaWtld2lzZS4KCShydHhfZnJlZSk6IExpa2V3aXNlLgoJKiBzZGJvdXQuYyAoc2Rib3V0X3F1ZXVlX2Fub255bW91c190eXBlKToKCVVzZSB0cmVlX2NvbnMsIG5vdCBzYXZlYWJsZV90cmVlX2NvbnMuCgkqIHNpbXBsaWZ5LXJ0eC5jCgkoY3NlbGliX2luaXQpOiBEb24ndCBtZXNzIHdpdGggb2JzdGFja3MuCgkqIHN0bXQuYwoJKG1hcmtfYmxvY2tfbmVzdGluZyk6IE1hcmsgdGhlIGxhYmVsX2NoYWluLgoJKGVweGFuZF9sYWJlbCk6IFVzZSBnZ2NfYWxsb2MsIG5vdCBvYmFsbG9jLgoJKGNsZWFyX2xhc3RfZXhwcik6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCShleHBhbmRfZGVjbF9jbGVhbnVwKTogTGlrZXdpc2UuCgkoZXhwYW5kX2RjY19jbGVhbnVwKTogTGlrZXdpc2UuCgkoZXhwYW5kX2RoY19jbGVhbnVwKTogTGlrZXdpc2UuCgkoZXhwYW5kX2Fub25fdW5pb25fZGVjbCk6IExpa2V3aXNlLgoJKGFkZF9jYXNlX25vZGUpOiBVc2UgeG1hbGxvYywgbm90IG9iYWxsb2MuCgkoZnJlZV9jYXNlX25vZGVzKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9lbmRfY2FzZSk6IENhbGwgaXQuCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF90eXBlKTogRG9uJ3QKCW1lc3Mgd2l0aCBvYnN0YWNrcy4KCShsYXlvdXRfdHlwZSk6IExpa2V3aXNlLgoJKiB0b3BsZXYuYyAod3JhcHVwX2dsb2JhbF9kZWNsYXJhdGlvbnMpOgoJTGlrZXdpc2UuCgkoY29tcGlsZV9maWxlKTogUmVtb3ZlIGdnY19wIGNvbmRpdGlvbmFscy4KCShyZXN0X29mX2NvbXBpbGF0aW9uKTogQ2FsbCBpbml0X2Zsb3cuICBSZW1vdmUgZ2djX3AgY29uZGl0aW9uYWxzLgoJKGRlY29kZV9mX29wdGlvbik6IFJlbW92ZSBnZ2NfcCBjb25kaXRpb25hbHMuCgkqIHRyZWUuYwoJKGZ1bmN0aW9uX21heWJlcGVybWFuZW50X29ic3RhY2spOiBSZW1vdmUuCgkobWF5YmVwZXJtYW5lbnRfb2JzdGFjayk6IExpa2V3aXNlLgoJKGZ1bmN0aW9uX29ic3RhY2spOiBMaWtld2lzZS4KCSh0bWVwb3Jhcnlfb2JzdGFjayk6IExpa2V3aXNlLgoJKG1vbWVudGFyeV9vYnN0YWNrKTogTGlrZXdpc2UuCgkodGVtcF9kZWNsX29ic3RhY2spOiBMaWtld2lzZS4KCShzYXZlYWJsZV9vYnN0YWNrKTogTGlrZXdpc2UuCgkocnRsX29ic3RhY2spOiBMaWtld2lzZS4KCShjdXJyZW50X29ic3RhY2spOiBMaWtld2lzZS4KCShleHByZXNzaW9uX29ic3RhY2spOiBMaWtld2lzZS4KCShzdHJ1Y3Qgb2JzdGFja19zdGFjayk6IExpa2V3aXNlLgoJKG9ic3RhY2tfc3RhY2spOiBMaWtld2lzZS4KCShvYnN0YWNrX3N0YWNrX29ic3RhY2spOiBMaWtld2lzZS4KCShtYXliZXBlcm1hbmVudF9maXJzdG9iaik6IExpa2V3aXNlLgoJKHRlbXBvcmFyeV9maXJzdG9iaik6IExpa2V3aXNlLgoJKG1vbWVudGFyeV9maXJzdG9iaik6IExpa2V3aXNlLgoJKHRlbXBfZGVjbF9maXJzdG9iaik6IExpa2V3aXNlLgoJKG1vbWVudGFyeV9mdW5jdGlvbl9maXJzdG9iaik6IExpa2V3aXNlLgoJKGFsbF90eXBlc19wZXJtYW5lbnQpOiBMaWtld2lzZS4KCShzdHJ1Y3QgbW9tZW50YXJ5X2xldmVsKTogTGlrZXdpc2UuCgkobW9tZW50YXJ5X3N0YWNrKTogTGlrZXdpc2UuCgkoaW5pdF9vYnN0YWNrcyk6IFJlbW92ZSBpbml0aWFsaXphdGlvbiBvZiByZW1vdmVkIG9ic3RhY2tzLgoJKHNhdmVfdHJlZV9zdGF0dXMpOiBSZW1vdmUuCgkocmVzdG9yZV90cmVlX3N0YXR1cyk6IExpa2V3aXNlLgoJKHRlbXBvcmFyeV9hbGxvY2F0aW9uKTogTGlla3dpc2UuCgkoZW5kX3RlbXBvcmFyeV9hbGxvY2F0aW9uKTogTGlla3dpc2UuCgkocmVzdW1lX3RlbXBvcmFyeV9hbGxvY2F0aW9uKTogTGlrZXdpc2UuCgkoc2F2ZWFibGVfYWxsb2NhdGlvbik6IExpa2V3aXNlLgoJKHB1c2hfb2JzdGFja3MpOiBMaWtld2lzZS4KCShwdXNoX29ic3RhY2tzX25vY2hhbmdlKTogTGlrZXdpc2UuCgkocG9wX29ic3RhY2tzKTogTGlrZXdpc2UuCgkoYWxsb2NhdGlvbl90ZW1wb3JhcnlfcCk6IExpa2V3aXNlLgoJKHBlcm1hbmVudF9hbGxvY2F0aW9uKTogTGlrZXdpc2UuCgkocHJlc2VydmVfZGF0YSk6IExpa2V3aXNlLgoJKHByZXNlcnZlX2luaXRpYWxpemVyKTogTGlrZXdpc2UuCgkocnRsX2luX2N1cnJlbnRfb2JzdGFjayk6IExpa2V3aXNlLgoJKHJ0bF9pbl9zYXZlYWJsZV9vYnN0YWNrKTogTGlrZXdpc2UuCgkob2JhbGxvYyk6IExpa2V3aXNlLgoJKG9iZnJlZSk6IExpa2V3aXNlLgoJKHNhdmVhbGxvYyk6IExpa2V3aXNlLgoJKGV4cHJhbGxvYyk6IExpa2V3aXNlLgoJKHByaW50X29ic3RhY2tfbmFtZSk6IExpa2V3aXNlLgoJKGRlYnVnX29ic3RhY2spOiBMaWtld2lzZS4KCShvYmplY3RfcGVybWFuZW50X3ApOiBMaWtld2lzZS4KCShwdXNoX21vbWVudGFyeSk6IExpa2V3aXNlLgoJKHBlcnNlcnZlX21vbWVudGFyeSk6IExpa2V3aXNlLgoJKGNsZWFyX21vbWVudGFyeSk6IExpa2V3aXNlLgoJKHBvcF9tb21lbnRhcnkpOiBMaWtld2lzZS4KCShwb3BfbW9tZW50YXJ5X25vZnJlZSk6IExpa2V3aXNlLgoJKHN1c3BlbmRfbW9tZW50YXJ5KTogTGlrZXdpc2UuCgkocmVzdW1lX21vbWVudGFyeSk6IExpa2V3aXNlLgoJKG1ha2Vfbm9kZSk6IERvbid0IHNldCBUUkVFX1BFUk1BTkVOVC4KCShjb3B5X25vZGUpOiBSZW1vdmUgZ2djX3AgY29uZGl0aW9uYWxzLiAgRG9uJ3Qgc2V0IFRZUEVfT0JTVEFDSy4KCURvbid0IHNldCBUUkVFX1BFUk1BTkVOVC4KCShnZXRfaWRlbnRpZmllcik6IFJlbW92ZSBnZ2NfcCBjb25kaXRpb25hbHMuCgkoYnVpbGRfc3RyaW5nKTogTGlrZXdpc2UuCgkobWFrZV90cmVlX3ZlYyk6IExpa2V3aXNlLgoJKGJ1aWxkX2RlY2xfbGlzdCk6IFJlbW92ZS4KCShidWlsZF9leHByX2xpc3QpOiBMaWtld2lzZS4KCSh0cmVlX2NvbnMpOiBSZW1vdmUgZ2djX3AgY29uZGl0aW9uYWxzLgoJKGRlY2xfdHJlZV9jb25zKTogUmVtb3ZlLgoJKGV4cHJfdHJlZV9jb25zKTogTGlrZXdpc2UuCgkocGVybV90cmVlX2NvbnMpOiBMaWtld2lzZS4KCSh0ZW1wX3RyZWVfY29ucyk6IExpa2V3aXNlLgoJKHNhdmVhYmxlX3RyZWVfY29ucyk6IExpa2V3aXNlLgoJKGJ1aWxkMSk6IFJlbW92ZSBnZ2NfcCBjb25kaXRpb25hbHMuCgkoYnVpbGRfcGFyc2Vfbm9kZSk6IExpa2V3aXNlLgoJKGJ1aWxkX3R5cGVfYXR0cmlidXRlX3ZhcmlhbnQpOiBEb24ndCBtZXNzIHdpdGggb2JzdGFja3MuCgkoYnVpbGRfdHlwZV9jb3B5KTogTGlrZXdpc2UuCgkodHlwZV9oYXNoX2Nhbm9uKTogTGlrZXdpc2UuCgkoYnVpbGRfcG9pbnRlcl90eXBlKTogTGlrZXdpc2UuCgkoYnVpbGRfcmVmZXJlbmNlX3R5cGUpOiBMaWtld2lzZS4KCShidWlsZF9pbmRleF90eXBlKTogTGlrZXdpc2UuCgkoYnVpbGRfcmFuZ2VfdHlwZSk6IExpa2V3aXNlLgoJKGR1bXBfdHJlZV9zdGF0aXN0aWNzKTogRG9uJ3QgcHJpbnQgb2JzdGFjayBpbmZvcm1hdGlvbi4KCSogdHJlZS5oCgkoc3RydWN0IHRyZWVfY29tbW9uKTogUmVtb3ZlIHBlcm1hbmVudF9mbGFnLgoJKFRSRUVfUEVSTUFORU5UKTogUmVtb3ZlLgoJKFRSRUVfU0VUX1BFUk1BTkVOVCk6IExpa2V3aXNlLgoJKFRZUEVfT0JTVEFDSyk6IExpa2V3aXNlLgoJKHN0cnVjdCB0cmVlX3R5cGUpOiBSZW1vdmUgb2JzdGFjay4KCShvYmFsbG9jKTogUmVtb3ZlLgoJKHNhdmVhbGxvYyk6IExpa2V3aXNlLgoJKGJ1aWxkX2RlY2xfbGlzdCk6IExpa2V3aXNlLgoJKGJ1aWxkX2V4cHJfbGlzdCk6IExpa2V3aXNlLgoJKHBlcm1fdHJlZV9jb25zKTogTGlrZXdpc2UuCgkodGVtcF90cmVlX2NvbnMpOiBMaWtld2lzZS4KCShzYXZlYWJsZV90cmVlX2NvbnMpOiBMaWtld2lzZS4KCShkZWNsX3RyZWVfY29ucyk6IExpa2V3aXNlLgoJKGV4cHJfdHJlZV9jb25zKTogTGlrZXdpc2UuCgkoc3VzcGVuZF9tb21lbnRhcnkpOiBMaWtld2lzZS4KCShhbGxvY2F0aW9uX3RlbXBvcmFyeV9wKTogTGlrZXdpc2UuCgkocmVzdW1lX21vbWVudGFyeSk6IExpa2V3aXNlLgoJKHB1c2hfb2JzdGFja3Nfbm9jaGFuZ2UpOiBMaWtld2lzZS4KCShwZXJtYW5lbnRfYWxsb2NhdGlvbik6IExpa2V3aXNlLgoJKHB1c2hfbW9tZW50YXJ5KTogTGlrZXdpc2UuCgkoY2xlYXJfbW9tZW50YXJ5KTogTGlrZXdpc2UuCgkocG9wX21vbWVudGFyeSk6IExpa2V3aXNlLgoJKGVuZF90ZW1wb3JhcnlfYWxsb2NhdGlvbik6IExpa2V3aXNlLgoJKHBvcF9vYnN0YWNrcyk6IExpa2V3aXNlLgoJKHB1c2hfb2JzdGFja3MpOiBMaWtld2lzZS4KCShwb3BfbW9tZW50YXJ5X25vZnJlZSk6IExJa2V3aXNlLgoJKHByZXNlcnZlX21vbWVudGFyeSk6IExpa2V3aXNlLgoJKHNhdmVhYmxlX2FsbG9jYXRpb24pOiBMaWtld2lzZS4KCSh0ZW1wb3JhcnlfYWxsb2NhdGlvbik6IExpa2V3aXNlLgoJKHJlc3VtZV90ZW1wb3JhcnlfYWxsb2NhdGlvbik6IExpa2V3aXNlLgoJKHBlcnNlcnZlX2luaXRpYWxpemVyKTogTGlrZXdpc2UuCgkoZGVidWdfb2JzdGFjayk6IExpa2V3aXNlLgoJKHJ0bF9pbl9jdXJyZW50X29ic3RhY2spOiBMaWtld2lzZS4KCShydGxfaW5fc2F2ZWFibGVfb2JzdGFjayk6IExpa2V3aXNlLgoJKG9iZnJlZSk6IExpa2V3aXNlLgoJKiB2YXJhc20uYyAoY3VycmVudF9vYnN0YWNrKTogUmVtb3ZlLgoJKHNhdmVhYmxlX29ic3RhY2spOiBSZW1vdmUuCgkocnRsX29ic3RhY2spOiBSZW1vdmUuCgkoaW1tZWRfZG91YmxlX2NvbnN0KTogRG9uJ3QgbWVzcyB3aXRoIG9ic3RhY2tzLgoJKGltbWVkX3JlYWxfY29ucyk6IExpa2V3aXNlLgoJKG91dHB1dF9jb25zdGFudF9kZWYpOiBMaWtld2lzZS4KCShpbml0X3ZhcmFzbV9zdGF0dXMpOiBVc2UgeGNhbGxvYy4KCShtYXJrX3Bvb2xfY29uc3RhbnQpOiBNYXJrIHRoZSBwb29sIGNvbnN0YW50IGl0c2VsZi4KCShmcmVlX3ZhcmFzbV9zdGF0dXMpOiBGcmVlIG1lbW9yeS4KCShkZWNvZGVfcnR4X2NvbnN0KTogQ2FsbCBiemVybyBkaXJlY3RseSwgcmF0aGVyIHRoYW4gZXhwYW5kaW5nIGl0CglpbmxpbmUuCgkocmVjb3JkX3J0eF9jb25zdCk6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCShmb3JjZV9jb25zdF9tZW0pOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2VuY29kZV9jYWxsX2F0dHJpYnV0ZSk6IFJlbW92ZSBnZ2NfcAoJY29uZGl0aW9uYWxzLgoJKGFvZl9waWNfZW50cnkpOiBMaWtld2lzZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2VuY29kZV9zZWN0aW9uX2luZm8pOiBMaWtld2lzZS4KCSogY29uZmlnL20zMnIvbTMyci5jIChtMzJyX2VuY29kZV9zZWN0aW9uX2luZm8pOiBMaWtld2lzZS4KCSogY29uZmlnL3BhL3BhLmMgKHNhdmVhYmxlX29ic3RhY2spOiBSZW1vdmUuCgkocnRsX29ic3RhY2spOiBMaWtld2lzZS4KCShjdXJyZW50X29ic3RhY2spOiBMaWtld2lzZS4KCShvdXRwdXRfY2FsbCk6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCShocHBhX2VuY29kZV9sYWJlbCk6IFJlbW92ZSBnZ2NfcCBjb25kaXRpb25hbHMuCgkqIGNvbmZpZy9yb21wL3JvbXAuYyAoZ2V0X3N5bXJlZik6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAob3V0cHV0X3RvYyk6IFJlbW92ZSBnZ2NfcCBjb25kaXRpb25hbC4KCShyczYwMDBfZW5jb2RlX3NlY3Rpb25faW5mbyk6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvc2guYyAoZ2V0X2Zwc2NyX3J0eCk6IExpa2V3aXNlLgoKVGh1IE9jdCAxMiAxNjowMjozMSBNRVQgRFNUIDIwMDAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoYWRkZGkzLCBzdWJkaTMgc3BsaXR0ZXJzKTogVXBkYXRlIGZvciBuZXcgcGF0dGVybi4KCShhZGRzaTNfY2MsIGFkZHFpM19jYywgc3Vic2kzX2NjKTogUmVtb3ZlCgkoYWRkc2kzX2NhcnJ5KTogQ2Fub25pY2FsaXplLgoJKGFkZHFpXzUpOiBSZW1vdmUgJyonLgoJKHNiYiBwYXR0ZXJuKTogQ2Fub25pY2FsaXplLgoKCSogaTM4Ni5tZCAoY21wIHRvIGluYy9hZGQgcGVlcDIpOiBOZXcuCgoyMDAwLTEwLTEyICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGJiLXJlb3JkZXIuYyAocmVvcmRlcl9iYXNpY19ibG9ja3MpOiBBbGxvY2F0ZSBhbiBhdXggYmxvY2sgZm9yCgl0aGUgZXhpdCBibG9jay4KCjIwMDAtMTAtMTIgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGdjYy50ZXhpOiBNZXJnZSBpbiBjb250ZW50cyBvZiBSRUFETUUuVFJBRCBhbmQgVEVTVFMuRkxVTksuCgkqIFJFQURNRS5UUkFELCBURVNUUy5GTFVOSzogUmVtb3ZlLgoKMjAwMC0xMC0xMiAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoZGVjbF9hdHRyaWJ1dGVzKTogRG9uJ3QgYWxsb3cgc3RyZnRpbWUgZm9ybWF0cyB3aXRoCglmaXJzdF9hcmdfbnVtIG5vbnplcm8uCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBTZXQgd2FudGVkX3R5cGUgYW5kIHdhbnRlZF90eXBlX25hbWUgdG8gemVybwoJYmVmb3JlIHRoZXkgYXJlIHBvc3NpYmx5IGFzc2lnbmVkIGFuZCB1c2VkLgoKMjAwMC0xMC0xMiAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoc2NhbmZfZmxhZ19zcGVjcyk6IEFkZCBmbGFncyAnIGFuZCBJLgoJKHN0cmZ0aW1lX2ZsYWdfcGFpcnMpOiBEaXNhbGxvdyBhbnkgcGFpciBvZiB0aGUgXywgLSBhbmQgMCBmbGFncywKCW9yIHRoZSBeIGFuZCAjIGZsYWdzIHRvZ2V0aGVyLgoJKHNjYW5fY2hhcl90YWJsZSk6IEhhbmRsZSB0aGUgJyBhbmQgSSBmbGFncy4KCShmb3JtYXRfdHlwZXMpOiBBZGQgJyBhbmQgSSBmbGFncyBmb3Igc2NhbmYuCgoyMDAwLTEwLTEyICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChwcmludF9jaGFyX3RhYmxlKTogVXNlIHRoZSB1bnByb21vdGVkIHR5cGUgZm9yCglsZW5ndGhzICJoIiBhbmQgImhoIiB3aXRoIGNvbnZlcnNpb25zIGRpb3hYdS4KCShjaGVja19mb3JtYXRfdHlwZXMpOiBBcHBseSB0aGUgZGVmYXVsdCBhcmd1bWVudCBwcm9tb3Rpb25zIHdoZXJlCgl0aGUgd2FudGVkIHR5cGUgaXMgbm90IGEgcG9pbnRlciB0YXJnZXQuCgoyMDAwLTEwLTExICBNaWNoYWVsIE1lZWtzICA8bW1lZWtzQGdudS5vcmc+CgkgICAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy10eXBlY2suYyAoY2hlY2tfbW9kaWZ5X2V4cHIpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfbW9kaWZ5X2V4cHIpOiBDYWxsIGl0IGlmIHdhcm5fc2VxdWVuY2VfcG9pbnQuCgkqIGMtZGVjbC5jICh3YXJuX3NlcXVlbmNlX3BvaW50KTogTmV3IHZhcmlhYmxlLgoJKGNfZGVjb2RlX29wdGlvbik6IEhhbmRsZSAtV3NlcXVlbmNlLXBvaW50IGFuZAoJLVduby1zZXF1ZW5jZS1wb2ludC4gIEVuYWJsZSAtV3NlcXVlbmNlLXBvaW50IGFzIHBhcnQgb2YgLVdhbGwuCgkqIGMtdHJlZS5oICh3YXJuX3NlcXVlbmNlX3BvaW50KTogRGVjbGFyZS4KCSogaW52b2tlLnRleGkgKC1Xc2VxdWVuY2UtcG9pbnQpOiBEb2N1bWVudC4KCSogdG9wbGV2LmMgKGRvY3VtZW50ZWRfbGFuZ19vcHRpb25zKTogQWRkIC1Xc2VxdWVuY2UtcG9pbnQgYW5kCgktV25vLXNlcXVlbmNlLXBvaW50LgoJT3JpZ2luYWwgd29yayBieSBNaWNoYWVsIE1lZWtzLCAxNiBKdW4gMTk5OC4KCldlZCBPY3QgMTEgMDY6MTU6NDEgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRyZWUuYyAoZ2V0X25hcnJvd2VyKTogRG9uJ3QgbG9vayBhdCBwcmVjaXNpb24gb2YgZmllbGQgaWYKCW5vdCBsYWlkIG91dCB5ZXQuCgpUdWUgT2N0IDEwIDIzOjE0OjMzIDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL2F2ci5jICh2YWxpZF9tYWNoaW5lX2RlY2xfYXR0cmlidXRlKTogQWxsb3cgYGV4dGVybicKCWRlY2xhcmF0aW9uIGZvciBkYXRhIHdpdGggInByb2dtZW0iIGF0dHJpYnV0ZS4KCjIwMDAtMTAtMDkgIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPgoKCSogY29uZmlnL2F2ci9hdnIuYyAob3V0X3NoaWZ0X3dpdGhfY250KTogVXNlIEFTMiBtYWNyby4KCUNvcnJlY3QgaW5zbiBsZW5ndGggaWYgc2hpZnQgY291bnQgaXMgYSBtZW1vcnkgb3BlcmFuZC4KCSogY29uZmlnL2F2ci9hdnIubWQ6IE5ldyBkZWZpbmVfcGVlcGhvbGUyIHRvIHVzZSAqcmVsb2FkX2lucWkuCgkoKmlvcmhpM19jbG9iYmVyKTogQ2hhbmdlIGxvOCB0byBoaTguCgkoemVyb19leHRlbmRoaXNpMik6IENoYW5nZSAlQjAgdG8gJUExLgoJKGFzaGxoaTMsIGFzaHJoaTMpOiBDb3JyZWN0IGluc24gbGVuZ3RoLgoJKGFuZGhpMywgYWJzc2YyLCBleHRlbmRxaXNpMiwgZXh0ZW5kaGlzaTIpOiBDaGFuZ2UgImNjIgoJZnJvbSAiY2xvYmJlciIgdG8gInNldF9uIiBpbiBzb21lIGFsdGVybmF0aXZlcy4KCjIwMDAtMTAtMTAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogcmVsb2FkMS5jIChjYWxjdWxhdGVfbmVlZHNfYWxsX2luc25zKTogSWYgZGVsZXRpbmcgYW4gaW5zdHJ1Y3Rpb24sCglyZW1vdmUgaXRzIGluc25fY2hhaW4gc3RydWN0dXJlIGFzIHdlbGwuCgoyMDAwLTEwLTA5ICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIGRieG91dC5jIChkYnhvdXRfc291cmNlX2xpbmUpOiBSZW1vdmUgZXh0cmEgdGFiLgoKMjAwMC0xMC0wOSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogY29uZmlnL2VsZm9zLmggKFVOSVFVRV9TRUNUSU9OKTogQXBwbHkgU1RSSVBfTkFNRV9FTkNPRElORyBvbiBuYW1lLgoKMjAwMC0xMC0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChMQU5HX0xJQjJGVU5DUyk6IFJlbW92ZS4KCShMSUIyRlVOQ1MpOiBSZW1vdmUgX3B1cmUuCgkoTElCMkFERCk6IFJlbW92ZSBMQU5HX0xJQjJGVU5DUy4KCShzdGFnZV9hKTogRG9uJ3Qgc2V0IExBTkdfTElCMkZVTkNTLgoJKiBsaWJnY2MyLmMgKF9fdGVybWluYXRlKTogTWFyayBub3JldHVybi4KCShfX3B1cmVfdmlydHVhbCk6IFJlbW92ZS4KCSogbWtsaWJnY2MuaW46IFJlbW92ZSBMSUIyQUREIC50eHQgcHJvY2Vzc2luZy4KCjIwMDAtMTAtMDkgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLm1kIChwdXNoX211bHRpKTogUmV2ZXJ0IHVuaW50ZW5kZWQgY2hhbmdlLgoKMjAwMC0xMC0wOSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uYzogTWlzY2VsbGFuZW91cyB3aGl0ZSBzcGFjZSBhbmQgY29tbWVudCBjbGVhbi11cHMuICBObwoJZnVuY3Rpb25hbCBjaGFuZ2UuCgkqIGFybS5tZDogTGlrZXdpc2UuCgoyMDAwLTEwLTA5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjLWNvbW1vbi5jIChjX2V4cGFuZF9idWlsdGluX3ByaW50Zik6IFNldCB0aGUgVFJFRV9UWVBFIG9mIGEgbmV3CglTVFJJTkdfQ1NUIGJ5IGNhbGxpbmcgY29tYmluZV9zdHJpbmdzLgoKMjAwMC0xMC0wOSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uYyAodGh1bWJfZXhwYW5kX21vdnN0cnFpKTogUmV3cml0ZSB0byBzdXBwb3J0IFNTQSBmb3JtLgoJKHRodW1iX291dHB1dF9tb3ZlX21lbV9tdWx0aXBsZSk6IFN1cHBvcnQgbmV3IGluc24gZm9ybWF0LgoJKiBhcm0ubWQgKG1vdm1lbTEyYik6IFVzZSBTU0EgY29tcGF0aWJsZSBmb3JtYXQuCgkobW92bWVtOGIpOiBMaWtld2lzZS4KCjIwMDAtMTAtMDkgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLm1kIChwcmVkaWNhYmxlKTogTmV3IGF0dHJpYnV0ZSwgZGVmYXVsdCB0byAibm8iLgoJKGFsbCBwYXR0ZXJucyk6IE1hcmsgYXMgcHJlZGljYWJsZSBpZiBhcHByb3ByaWF0ZS4KCShjb25kaXRpb25hbCBleGVjdXRpb24gc3BsaXRzKTogU3BsaXQgdXNpbmcgcHJlZGljYXRpb24gZm9ybWF0LgoJKGRlZmluZV9jb25kX2V4ZWMpOiBEZWZpbmUuCgkqIGFybS5jIChhcm1fcHJpbnRfb3BlcmFuZCk6IGhhbmRsZSBpbnNuIHByZWRpY2F0ZS4KCjIwMDAtMTAtMDkgIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIFJFQURNRS5OUzMySzogUmVtb3ZlIGZpbGUuCgoyMDAwLTEwLTA5ICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJKiBSRUFETUUtYnVnczogUmVtb3ZlIGZpbGUuCgoyMDAwLTEwLTA4ICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCSogYWNsb2NhbC5tNCAoQU1fR05VX0dFVFRFWFQpOiBGaXggbm9uIHBvcnRhYmxlIHVzZSBvZiA9PSBvcGVyYXRvcgoJZm9yIHRlc3QuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMTAtMDggIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoJKiBhY2xvY2FsLm00IChBTV9XSVRIX05MUyk6IFdoZW4gbm90IHVzaW5nIGluY2x1ZGVkIGdldHRleHQsCglkaXNhYmxlIGNhdGFsb2cgYnVpbGRpbmcgaWYgbm8gc3VpdGFibGUgcHJvZ3JhbSB3YXMgZm91bmQuCglNb3ZlIHdhcm5pbmcgbWVzc2FnZSBmcm9tIGhlcmUKCShBTV9HTlVfR0VUVEVYVCk6IFRvIGhlcmUuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMTAtMDggIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoJKiBhY2xvY2FsLm00IChHQ0NfUEFUSF9QUk9HKTogTmV3LiBMaWtlIEFDX1BBVEhfUFJPRyBidXQgdXNlcwoJZGlmZmVyZW50IGNhY2hlIHZhcmlhYmxlcy4KCShHQ0NfUEFUSF9QUk9HX1dJVEhfVEVTVCk6IE5ldy4gTGlrZSBBTV9QQVRIX1BST0dfV0lUSF9URVNUIGJ1dAoJdXNlcyBkaWZmZXJlbnQgY2FjaGUgdmFyaWFibGVzLgoJKEFNX1dJVEhfTkxTKTogVXNlIEdDQ19QQVRIX1BST0cgYW5kIEdDQ19QQVRIX1BST0dfV0lUSF9URVNULgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMC0xMC0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChsaWJnY2MubWspOiBQYXNzIFNITElCX0VYVCwgbm90IFNITElCX0xJQlMuCgkqIGNvbmZpZ3VyZS5pbiAoc3BhcmMqLSotc29sYXJpcyopOiBVc2UgdC1zbGliZ2Njeywtc2xkfS4KCSogbWtsaWJnY2MuaW46IENvbnNpZGVyIFNITElCX0xJTksgdGhlIGVudGlyZSBzaGxpYiBidWlsZCBjb21tYW5kLgoJVXNlIFNITElCX0VYVC4KCgkqIGNvbmZpZy90LWxpbnV4IChTSExJQl9FWFQpOiBOZXcuCgkoU0hMSUJfTElOSyk6IFVzZSB0aGUgZW50aXJlIGJ1aWxkIGNvbW1hbmQsIHdpdGggc3Vic3RpdHV0aW9ucy4KCShTSExJQl9MSUJTKTogUmVtb3ZlLgoJKiBjb25maWcvYWxwaGEvdC1vc2Y0OiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvdC1pcmlzNjogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy90LXNvbDI6IExpa2V3aXNlLCBidXQgbW92ZSBzaGxpYiBzdHVmZi4uLgoJKiBjb25maWcvc3BhcmMvdC1zbGliZ2NjLXNsZDogLi4uaGVyZS4KCSogY29uZmlnL3NwYXJjL3Qtc2xpYmdjYzogTmV3IGZpbGUuCgoyMDAwLTEwLTA4ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiB0bS50ZXhpIChJTlRNQVhfVFlQRSwgVUlOVE1BWF9UWVBFKTogRGVmaW5lLgoJKiBjLWNvbW1vbi5oIChlbnVtIGNfdHJlZV9pbmRleCk6IEFkZCBDVElfSU5UTUFYX1RZUEUgYW5kCglDVElfVUlOVE1BWF9UWVBFLgoJKGludG1heF90eXBlX25vZGUsIHVpbnRtYXhfdHlwZV9ub2RlKTogRGVmaW5lLgoJKiBjLWNvbW1vbi5jIChkZWNsX2F0dHJpYnV0ZXMpOiBJZiBwZWRhbnRpYywgd2FybiBpZiBgbW9kZScKCWF0dHJpYnV0ZXMgY3JlYXRlIGEgdHlwZSB3aWRlciB0aGFuIGludG1heF90LgoJKFRfSU0sIFRfVUlNKTogRGVmaW5lIHByb3Blcmx5LgoJKiBjLWRlY2wuYyAoSU5UTUFYX1RZUEUsIFVJTlRNQVhfVFlQRSk6IERlZmluZSBpZiBub3QgYWxyZWFkeQoJZGVmaW5lZC4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEluaXRpYWxpemUgaW50bWF4X3R5cGVfbm9kZSBhbmQKCXVpbnRtYXhfdHlwZV9ub2RlLgoJKiBjLWxleC5jIChsZXhfbnVtYmVyKTogV2hlbiBwZWRhbnRpYyBhbmQgd2FybmluZyBmb3IgaW50ZWdlcgoJY29uc3RhbnRzIHRoYXQgYXJlIHRvbyBsYXJnZSwgaW4gQzk5IG1vZGUgd2FybiBmb3IgdGhvc2UgdGhhdCBoYXZlCglhIHR5cGUgd2lkZXIgdGhhbiBsb25nIGxvbmcuCgoyMDAwLTEwLTA4ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChGTVRfRkxBR19BUkdfQ09OVkVSVCwgRk1UX0ZMQUdfU0NBTkZfQV9LTFVER0UsCglGTVRfRkxBR19GQU5DWV9QRVJDRU5UX09LKTogRGVmaW5lLgoJKGZvcm1hdF9jaGFyX2luZm8pOiBBZGQgZmxhZyAiNCIgdG8gY29tbWVudC4KCShmb3JtYXRfZmxhZ19zcGVjLCBmb3JtYXRfZmxhZ19wYWlyKTogTmV3IHN0cnVjdHVyZXMuCgkoZm9ybWF0X2tpbmRfaW5mbyk6IEFkZCBhZGRpdGlvbmFsIGZpZWxkcyB0byBjb250cm9sIGZvcm1hdAoJY2hlY2tpbmcuCgkocHJpbnRmX2ZsYWdfc3BlY3MsIHByaW50Zl9mbGFnX3BhaXJzLCBzY2FuZl9mbGFnX3NwZWNzLAoJc2NhbmZfZmxhZ19wYWlycywgc3RyZnRpbWVfZmxhZ19zcGVjcywgc3RyZnRpbWVfZmxhZ19wYWlycyk6IE5ldwoJYXJyYXlzLgoJKHRpbWVfY2hhcl90YWJsZSk6IFVzZSAiNCIgZmxhZyB0byBoYW5kbGUgJUV5LgoJKGZvcm1hdF90eXBlcyk6IEFkZCBlbnRyaWVzIGZvciBuZXcgZmllbGRzLgoJKGdldF9mbGFnX3NwZWMpOiBOZXcgZnVuY3Rpb24uCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBJbmNyZWFzZSBzaXplIG9mIGZsYWdfY2hhcnNbXSB0byAyNTYuCglDb250cm9sIGZvcm1hdCBjaGVja2luZyB1c2luZyB0aGUgbmV3IGZpZWxkcyBvZiBhIGZvcm1hdF9raW5kX2luZm8KCWFuZCB0aGUgbmV3IHRhYmxlczsgcmVtb3ZlIGFsbCBjb25kaXRpb25hbHMgb24gcHJpbnRmX2Zvcm1hdF90eXBlLAoJc2NhbmZfZm9ybWF0X3R5cGUgb3Igc3RyZnRpbWVfZm9ybWF0X3R5cGUuICBIYW5kbGUgYWxsIGRldGFpbHMgb2YKCWJhZCBjb21iaW5hdGlvbnMgb2YgZmxhZ3MgKGluY2x1ZGluZyB3aWR0aCwgcHJlY2lzaW9uIGFuZCBzdHJmdGltZQoJbW9kaWZpZXJzKSB0aHJvdWdoIGRhdGEgcmF0aGVyIHRoYW4gYWQgaG9jIGNvZGUuICBIYW5kbGUgYWxsCglkZXRhaWxzIG9mIHN0YW5kYXJkIHZlcnNpb25zIGluIHdoaWNoIGZsYWdzIGFwcGVhcmVkIHRocm91Z2gKCWRhdGEuICBVc2UgdGhlICI0IiBmbGFnLgoKMjAwMC0xMC0wNyAgV2lsbCBDb2hlbiAgPHdjb2hlbkByZWRoYXQuY29tPiwgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQ6IFJlbW92ZSB0aGUgbWVtb3J5IGFsdGVybmF0aXZlIGFuZCBjb3JyZWN0Cgl0aGUgaW5zbiBsZW5ndGhzIGluIHRoZSB0ZW1wbGF0ZXMgZm9yIHNpZ24gZXh0ZW5zaW9uIGFuZCB6ZXJvCglleHRlbnNpb24uCgoyMDAwLTEwLTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBEaXNhbGxvdyBzaWJjYWxscyB0byBub3JldHVybiBmdW5jdGlvbnMuCgkqIGZsb3cuYyAobWFrZV9lZGdlcyk6IFJldmVydCBsYXN0IGNoYW5nZS4KCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5oIChGVU5DVElPTl9PS19GT1JfU0lCQ0FMTCk6IERvbid0IHRlc3QKCVRSRUVfVEhJU19WT0xBVElMRS4KCSogY29uZmlnL3BhL3BhLmggKEZVTkNUSU9OX09LX0ZPUl9TSUJDQUxMKTogTGlrZXdpc2UuCgoyMDAwLTEwLTA2ICBEYXZpZCBPJ0JyaWVuICA8b2JyaWVuQGRyYWdvbi5udXhpLmNvbT4KCgkqIGNvbmZpZy9hbHBoYS9lbGYuaDogU3RhbmRhcmRpemUgdGhlIGZvcm1hdHRpbmcuCgoyMDAwLTEwLTA2ICBEYXZpZCBPJ0JyaWVuICA8b2JyaWVuQEZyZWVCU0Qub3JnPgoKCSogY29uZmlnL2FscGhhL2VsZi5oOiBQcm90ZWN0IHRoZSBBU01fT1VUUFVUX0lERU5UIGRlZmluaXRpb24gd2l0aCBhbgoJI3VuZGVmLgoKMjAwMC0xMC0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGRpZGRsZV9yZXR1cm5fdmFsdWUpOiBFeGFtaW5lCgljdXJyZW50X2Z1bmN0aW9uX3JldHVybl9ydHggaW5zdGVhZCBvZiB0aGUgREVDTF9SRVNVTFQuCgkoZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IEhhbmRsZSByZWxvYWRpbmcgREVDTF9SRVNVTFQgZnJvbSBtZW1vcnkKCWludG8gYSBoYXJkIHJlZ2lzdGVyLiAgUXVlcnkgcHJvbW90ZV9tb2RlIGZvciBzaWduIG9mIG1pc21hdGNoZWQKCW1vZGVzLgoKMjAwMC0xMC0wNiAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QHRvdWNobWUudG9yb250by5yZWRoYXQuY29tPgoKCSogaGFpZmEtc2NoZWQuYyAoc2NoZWR1bGVfaW5zbnMpOiBGaXggdHlwbyBpbiBmcmVlaW5nCglmb3J3YXJkX2RlcGVuZGVuY3lfY2FjaGUuCgoyMDAwLTEwLTA2ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5tZCAoY2FsbGlfcGNyZWwsIGNhbGxfdmFsdWVpX3BjcmVsKTogQWRkCglgVEFSR0VUX1NIMicgYXMgYSBjb25kaXRpb24uCgoyMDAwLTEwLTA2ICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAdG91Y2htZS50b3JvbnRvLnJlZGhhdC5jb20+CgoJKiBoYWlmYS1zY2hlZC5jIChhbnRpX2RlcGVuZGVuY3lfY2FjaGUsIG91dHB1dF9kZXBlbmRlbmN5X2NhY2hlLAoJZm9yd2FyZF9kZXBlbmRlbmN5X2NhY2hlKTogTmV3IHZhcmlhYmxlcy4KCShhZGRfZGVwZW5kZW5jZSwgcmVtb3ZlX2RlcGVuZGVuY2UpOiBVc2UgYW50aV9kZXBlbmRlbmN5X2NhY2hlIGFuZAoJb3V0cHV0X2RlcGVuZGVuY3lfY2FjaGUuCgkoY29tcHV0ZV9ibG9ja19mb3J3YXJkX2RlcGVuZGVuY2VzKTogVXNlIGZvcndhcmRfZGVwZW5kZW5jeV9jYWNoZS4KCShzY2hlZHVsZV9pbnNucyk6IEFsbG9jYXRlIGFuZCBmcmVlIG1lbW9yeSBmb3IgYW50aS9vdXRwdXQvZm9yd2FyZAoJZGVwZW5kZW5jaWVzIGNhY2hlcy4KCjIwMDAtMTAtMDYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLm1kIChjYWxsLCBjYWxsX3ZhbHVlKTogVXNlIGBUQVJHRVRfU0gyJyBpbnN0ZWFkIG9mCglgISBUQVJHRVRfU0gxJy4gIFJlaW5kZW50LgoKMjAwMC0xMC0wNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYnVpbHRpbnMuYyAoaXNfdmFsaWRfcHJpbnRmX2FyZ2xpc3QsIGV4cGFuZF9idWlsdGluX3ByaW50Zik6CglNb3ZlIGZ1bmN0aW9ucyBmcm9tIGhlcmUgLi4uCgoJKiBjLWNvbW1vbi5jIChpc192YWxpZF9wcmludGZfYXJnbGlzdCwgY19leHBhbmRfYnVpbHRpbl9wcmludGYpOgoJLi4uIHRvIGhlcmUuCgkoY19leHBhbmRfYnVpbHRpbik6IE5ldyBmdW5jdGlvbi4KCShpbml0X2Z1bmN0aW9uX2Zvcm1hdF9pbmZvKTogRG9uJ3Qgc2V0IGBjaGVja19mdW5jdGlvbl9mb3JtYXRfcHRyJy4KCShjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBTZXQgYnVpbHRfaW5fY2xhc3MgdHlwZSBmb3IKCXByaW50Zi9fX2J1aWx0aW5fcHJpbnRmIHRvIEJVSUxUX0lOX0ZST05URU5ELgoJKGNfZXhwYW5kX2V4cHIpOiBIYW5kbGUgQ0FMTF9FWFBScyB0aGF0IGFyZSBmcm9udC1lbmQgYnVpbHRpbnMuCgoJKiBjLWNvbW1vbi5oIChidWlsZF9mdW5jdGlvbl9jYWxsKTogRGVjbGFyZS4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBQYXNzIGJ1aWx0aW5zIHdpdGggY2xhc3MgQlVJTFRfSU5fRlJPTlRFTkQKCXRvIGBsYW5nX2V4cGFuZF9leHByJyByYXRoZXIgdGhhbiBgZXhwYW5kX2J1aWx0aW4nLgoKCSogdHJlZS5jIChjaGVja19mdW5jdGlvbl9mb3JtYXRfcHRyKTogRGVsZXRlLgoKCSogdHJlZS5oIChjaGVja19mdW5jdGlvbl9mb3JtYXRfcHRyKTogTGlrZXdpc2UuCgoyMDAwLTEwLTA2ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBkd2FyZjJvdXQuYyAoYnVpbGRfY2ZhX2xvYyk6IENvcnJlY3QgdG8gdXNlIERXX09QX3JlZ3ggb3IKCURXX09QX2JyZWd4IHdoZW4gY2ZhLT5yZWcgPiAzMS4KCgkqIGZyYW1lLWR3YXJmMi5jIChkZWNvZGVfc3RhY2tfb3ApIFtjYXNlIERXX09QX3JlZ3hdOiBBZGQgbWlzc2luZwoJYnJlYWsuCgoyMDAwLTEwLTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYy1kZWNsLmMgKHdhcm5fbWlzc2luZ19ub3JldHVybik6IFJlbW92ZS4KCShjX2V4cGFuZF9ib2R5KTogRG9uJ3Qgc2V0IG9yIGNoZWNrIGNhbl9yZWFjaF9lbmQuCgkqIGMtdHJlZS5oICh3YXJuX21pc3Npbmdfbm9yZXR1cm4pOiBNb3ZlIC4uLgoJKiBmbGFncy5oOiAuLi4gaGVyZS4KCShjYW5fcmVhY2hfZW5kKTogUmVtb3ZlLgoJKiBmbG93LmMgKGNoZWNrX2Z1bmN0aW9uX3JldHVybl93YXJuaW5ncyk6IE5ldy4KCShtYWtlX2VkZ2VzKTogTm8gZWRnZSB0byBleGl0IGZvciBub3JldHVybiBzaWJjYWxscy4KCSogZnVuY3Rpb24uYyAoZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IFNhdmUgdGhlIHJldHVybiB2YWx1ZQoJY2xvYmJlciBpbnN0cnVjdGlvbi4KCShtYXJrX2Z1bmN0aW9uX3N0YXR1cyk6IE1hcmsgaXQuCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBmdW5jdGlvbik6IEFkZCB4X2Nsb2JiZXJfcmV0dXJuX2luc24uCgkqIGp1bXAuYyAoY2FuX3JlYWNoX2VuZCk6IFJlbW92ZS4KCShjYWxjdWxhdGVfY2FuX3JlYWNoX2VuZCk6IFJlbW92ZS4KCShqdW1wX29wdGltaXplXzEpOiBEb24ndCBjYWxsIGl0LgoJKiBvdXRwdXQuaCAoY2hlY2tfZnVuY3Rpb25fcmV0dXJuX3dhcm5pbmdzKTogRGVjbGFyZS4KCSogdG9wbGV2LmMgKHdhcm5fbWlzc2luZ19ub3JldHVybik6IE1vdmUgZnJvbSBjLWRlY2wuYwoJKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBDYWxsIGNoZWNrX2Z1bmN0aW9uX3JldHVybl93YXJuaW5ncy4KCjIwMDAtMTAtMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoTk1fRk9SX1RBUkdFVCk6IE5ldy4KCShsaWJnY2MubWspOiBQYXNzIFNITElCX01LTUFQLCBTSExJQl9NQVBGSUxFUy4KCShsaWJnY2MuYSwgc3RtcC1tdWx0aWxpYik6IFBhc3MgTk1fRk9SX1RBUkdFVC4KCSogbWtsaWJnY2MuaW46IElmIFNITElCX01LTUFQLCBidWlsZCBsaWJnY2MubWFwLiAgRGVwZW5kIHRoZQoJc2hhcmVkIGxpYnJhcnkgYnVpbGQgb24gdGhhdCBhbmQgRVhUUkFfTVVMVElMSUJfUEFSVFMuCgkqIG1rbWFwLWZsYXQuYXdrOiBOZXcgZmlsZS4KCSogbWttYXAtc3ltdmVyLmF3azogTmV3IGZpbGUuCgkqIGxpYmdjYy1zdGQudmVyOiBOZXcgZmlsZS4KCSogY29uZmlnL2xpYmdjYy1nbGliYy52ZXI6IE5ldyBmaWxlLgoJKiBjb25maWcvaWE2NC9saWJnY2MtaWE2NC52ZXI6IE5ldyBmaWxlLgoJKiBjb25maWcvdC1saW51eCAoU0hMSUJfTUtNQVAsIFNITElCX01BUEZJTEVTKTogTmV3LgoJKFNITElCX0xJTkspOiBBZGQgLS12ZXJzaW9uLXNjcmlwdC4KCSogY29uZmlnL2lhNjQvdC1pYTY0IChTSExJQl9NQVBGSUxFUyk6IEFkZCBsaWJnY2MtaWE2NC52ZXIuCgkqIGNvbmZpZy9taXBzL3QtaXJpczYgKFNITElCX01LTUFQLCBTSExJQl9NQVBGSUxFUyk6IE5ldy4KCSogY29uZmlnL3NwYXJjL3Qtc29sMiAoU0hMSUJfTUtNQVAsIFNITElCX01BUEZJTEVTKTogTmV3LgoJKFNITElCX0xJTkspOiBBZGQgLU0uCgoyMDAwLTEwLTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKExJQjJGVU5DUyk6IEFkZCBfY2x6LgoJKiBsaWJnY2MyLmMgKF9fZmZzZGkyKTogVXNlIGNvdW50X3RyYWlsaW5nX3plcm9zLgoJKF9fY2x6X3RhYik6IFB1dCBpbiBpdHMgb3duIHVuaXQsIG5vbi1zdGF0aWMuCgkqIGxpYmdjYzIuaDogQWx3YXlzIGluY2x1ZGUgbG9uZ2xvbmcuaC4KCgkqIGxvbmdsb25nLmggW2FscGhhXSAoY291bnRfbGVhZGluZ196ZXJvcyk6IFVzZSBjbXBiZ2Ugd2l0aAoJYSB6ZXJvIGluc3RlYWQgb2YgLTEuCgkoY291bnRfdHJhaWxpbmdfemVyb3MpOiBMaWtld2lzZS4KCjIwMDAtMTAtMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZW1pdF9zZXRjYyk6IERvbid0IHN3YXAgR1QgdGVzdHMKCXdoZW4gc2Vjb25kIG9wMSBpcyBjb25zdDBfcnR4LiAgVmFsaWRhdGUgb3AwIGFzIGEgcmVnaXN0ZXIuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAoc2V0Y2NfaW50ZXJuYWwpOiBEb24ndCBhbGxvdyBjb25zdGFudHMKCWluIHRoZSBmaXJzdCBhcmd1bWVudCBvZiB0aGUgY29tcGFyZS4KCShzZXRjY19zd2FwcGVkX2ludGVybmFsKTogTGlrZXdpc2UuCgkoc2V0bmVfaW50ZXJuYWwpOiBMaWtld2lzZS4KCjIwMDAtMTAtMDUgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAodHJlZV9zaXplKTogTmV3IGZ1bmN0aW9uIHNwbGl0IG91dCBvZiBjb3B5X25vZGUuCgkobWFrZV9ub2RlKTogUmVtb3ZlIG9ic3RhY2sgaGFuZGxpbmcuICBVc2UgdHJlZV9zaXplLgoJKGNvcHlfbm9kZSk6IFVzZSB0cmVlX3NpemUuCgkqIHRyZWUuaDogUHJvdG90eXBlIHRyZWVfc2l6ZS4KCjIwMDAtMTAtMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBkaWFnbm9zdGljLmMgKG91dHB1dF9mb3JtYXQpOiBBZGQgbWlzc2luZyBicmVhay4KCjIwMDAtMTAtMDUgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGZpeHVwX3Zhcl9yZWZzXzEsIGNhc2UgU0VUKTogV2hlbiBnZW5fbW92ZV9pbnNuIHJldHVybnMgYQoJU0VRVUVOQ0UsIGNhbGwgZW1pdF9pbnNuX2JlZm9yZSwgY29weSBQQVRURVJOIGFuZCBSRUdfTk9URVMgb2YgbGFzdAoJc2VxdWVuY2UgaW5zbiB0byBJTlNOLCBhbmQgZGVsZXRlIGxhc3Qgc2VxdWVuY2UgaW5zbi4KCjIwMDAtMTAtMDUgIFBoaWwgRWR3YXJkcyAgPHBtZUBnY2MuZ251Lm9yZz4KCgkqIGdjYy5jIChtYWluKTogSW5jbHVkZSBnZW5lcmF0ZWQgY29uZmlnYXJncy5oIGhlYWRlcgoJYW5kIHVzZSBhcmd1bWVudHMgaW4gJy12JyBvdXRwdXQuCgpUaHUgT2N0ICA1IDE2OjE2OjU3IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBnY2MuYzogTW92ZSBkYXRhIG9uIHByZWZpeGVzIGZvcndhcmQgaW4gZmlsZSBhbmQgcmVvcmdhbml6ZS4KCShtZF9leGVjX3ByZWZpeCwgbWRfc3RhcnRmaWxlX3ByZWZpeCwgbWRfc3RhcnRmaWxlX3ByZWZpeF8xKToKCUFsd2F5cyBkZWZpbmUsIGJ1dCBtYWtlIG51bGwgaWYgbm8gdmFsdWUuCgkoc3RhdGljX3NwZWNzKTogQWRkICJtZF9leGVjX3ByZWZpeCIsICJtZF9zdGFydGZpbGVfcHJlZml4IiwKCWFuZCAibWRfc3RhcnRmaWxlX3ByZWZpeF8xIi4KCShtYWluKTogQ2hlY2sgd2hldGhlciBtZF9leGVjX3ByZWZpeCBhbmQgdGhlIG90aGVycyBhcmUgdGhlCgludWxsIHN0cmluZyByYXRoZXIgdGhhbiB3aGV0aGVyIHRoZSBtYWNybyBpcyBkZWZpbmVkLgoKVGh1IE9jdCAgNSAxOTowNDoxOCAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckByZWRoYXQuY28udWs+CgoJKiAoY29udmVydF9tb3ZlKTogVXNlIHplcm9fZXh0ZW5kcHNpc2kyIHRvIGRvIGFuIHVuc2lnbmVkIGV4dGVuc2lvbgoJZnJvbSBQU0ltb2RlIHRvIFNJbW9kZS4KCjIwMDAtMTAtMDUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZW1pdC1ydGwuYyAoZ2VuX2xvd3BhcnRfY29tbW9uKSBbUkVBTF9BUklUSE1FVElDU106IEZpeCBjb252ZXJzaW9uCglmcm9tIGZsb2F0IHRvIGludGVncmFsIG1vZGUgd2l0aCBIT1NUX0JJVFNfUEVSX1dJREVfSU5UIDY0LgoJKiBkd2FyZjJvdXQuYyAoYWRkX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZSk6IERpdmlkZSBieSA0LCBub3QKCXNpemVvZihsb25nKS4KClRodSBPY3QgIDUgMDk6MzE6MzEgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCwgY2FzZSBNSU5VU19FWFBSLCBjYXNlIEVRX0VYUFIpOiBQZXJmb3JtCgluZWdhdGlvbiBpbiBwcm9wZXIgdHlwZS5hCgoyMDAwLTEwLTA0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluIChlbmFibGUtc2hhcmVkKTogTmV3LgoJKiBNYWtlZmlsZS5pbiAoTElCR0NDX0RFUFMpOiBEZXBlbmQgb24gRVhUUkFfUEFSVFMgYXMgd2VsbC4KCShsaWJnY2MubWspOiBQYXNzIFNITElCX0xJTkssIFNITElCX0xJQlMsIFNITElCX01VTFRJTElCIHRvIG1rbGliZ2NjLgoJKiBta2xpYmdjYy5pbjogVXNlIHRoZW0gdG8gbGluayBzaGFyZWQgYSBsaWJnY2MuCgkqIGNvbmZpZy90LWxpbnV4IChTSExJQl9MSU5LLCBTSExJQl9MSUJTKTogTmV3LgoJKiBjb25maWcvYWxwaGEvdC1pZWVlIChTSExJQl9NVUxUSUxJQik6IE5ldy4KCSogY29uZmlnL21pcHMvdC1pcmlzNiAoU0hMSUJfTElOSywgU0hMSUJfTElCUyk6IE5ldy4KCSogY29uZmlnL3NwYXJjL3Qtc29sMiAoU0hMSUJfTElOSywgU0hMSUJfTElCUyk6IE5ldy4KCgkqIGNvbmZpZ3VyZS5pbiAoYWxwaGEtb3NmKik6IFVzZSB0LW9zZiBhbmQgeC1vc2YuCgkqIGNvbmZpZy9hbHBoYS90LW9zZjogTmV3IGZpbGUuCgkqIGNvbmZpZy9hbHBoYS90LW9zZjQ6IE5ldyBmaWxlLgoJKiBjb25maWcvYWxwaGEveC1vc2Y6IE5ldyBmaWxlLgoJKiBjb25maWcvYWxwaGEveC1hbHBoYTogUmVtb3ZlIGZpbGUuCgoyMDAwLTEwLTA0ICBXaWxsIENvaGVuICA8d2NvaGVuQHJlZGhhdC5jb20+CgoJKiBjLXR5cGVjay5jIChwcm9jZXNzX2luaXRfZWxlbWVudCk6IEFkZGVkIHdhcm5pbmcgZm9yIHplcm8tbGVuZ3RoCglhcnJheS4KCgkqIGV4dGVuZC50ZXhpIChaZXJvIExlbmd0aCk6IFN0YXRlIHRoYXQgc3RhdGljIGluaXRpYWxpemVycyBmb3IKCXplcm8tbGVuZ3RoIGFycmF5cyBhcmUgbm90IGFsbG93ZWQuCgpNb24gT2N0ICAyIDE0OjUwOjE0IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcnRsYW5hbC5jIChzaW5nbGVfc2V0XzEpOiBEbyBub3QgcmVxdWlyZSBVU0UgYW5kIENMT0JCRVJzCgl0byBjb21lIGxhc3QuCgoyMDAwLTEwLTAzICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvZmxvYXQtYzR4Lmg6IE5ldy4KCSogY29uZmlndXJlLmluIChjNHgtKik6IFNldCBmbG9hdF9mb3JtYXQgdG8gYzR4LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAwLTEwLTAyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWd1cmUuaW4gKHNwYXJjLSotc29sYXJpczIqKTogRGlzYWJsZSAzMi10by02NCBjcm9zcwoJY29tcGlsYXRpb24gZm9yIHNvbGFyaXMgdmVyc2lvbnMgMi43IGFuZCBncmVhdGVyLgoKMjAwMC0xMC0wMiAgTWFyYyBFc3BpZSA8ZXNwaWVAb3BlbmJzZC5vcmc+CgoJKiBjb25maWcvYWxwaGEuaCAoV09SRF9TV0lUQ0hfVEFLRVNfQVJHKTogYWRkIC1ycGF0aCB0byBkZWZhdWx0LAoJaW5zdGVhZCBvZiByZWRlZmluaW5nIGZyb20gc2NyYXRjaC4KCjIwMDAtMTAtMDIgIERhdmlkIE8nQnJpZW4gIDxvYnJpZW5AZHJhZ29uLm51eGkuY29tPgoKCSogY29uZmlnL2kzODYvZnJlZWJzZC5oIChOT19QUk9GSUxFX0NPVU5URVJTKTogRGVmaW5lLgoKMjAwMC0xMC0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9uczMyay9nZW5peC5oOiBSZW1vdmUuCgkqIGNvbmZpZy9uczMyay94LWdlbml4OiBMaWtld2lzZS4KCSogY29uZmlnL25zMzJrL3htLWdlbml4Lmg6IExpa2V3aXNlLgoJKiBjb25maWcvZng4MDogUmVtb3ZlIGFsbCBmaWxlZSBpbiBkaXJlY3RvcnkuCgkqIGNvbmZpZy9weXI6IExpa2V3aXNlLgoJKiBjb25maWcvdGFob2U6IExpa2V3aXNlLgoJKiBjb25maWcvZ21pY3JvOiBMaWtld2lzZS4KCSogY29uZmlnL3NwdXI6IExpa2V3aXNlLgoJKiBjb25maWd1cmUuaW46IFJlbW92ZSBjb25maWd1cnkgYml0cyBmb3IgYWJvdmUgdGFyZ2V0cy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCgkqIGNvbmZpZ3VyZS5pbjogRG9uJ3QgY29uZmlndXJlIGNoaWxsIGJ5IGRlZmF1bHQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoJKiBjLWRlY2wuYyAoY19leHBhbmRfYm9keSk6IERvbid0IGdlbmVyYXRlIFJUTCBpZiBmbGFnX3N5bnRheF9vbmx5LgoJKGxhbmdfbWFya19mYWxzZV9sYWJlbF9zdGFjayk6IFJlbW92ZS4KCSogYy1sZXguYyAoaW5pdF9jX2xleCk6IEFkZCBmaWxlX2luZm9fdHJlZSBhcyBHQyByb290LiAgQWxsb2NhdGUKCTx0b3AgbGV2ZWw+IHN0cmluZyBpbiBHQyBhcmVhLgoJKG1hcmtfc3BsYXlfdHJlZV9ub2RlKTogTmV3IGZ1bmN0aW9uLgoJKG1hcmtfc3BsYXlfdHJlZSk6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAobWFya19laF9zdGF0dXMpOiBPbmx5IGNhbGwgbGFuZ19tYXJrX2ZhbHNlX2xhYmVsX3N0YWNrCglpZiBpdCBleGlzdHMuCgkqIGdnYy1jYWxsYmFja3MuYyAobGFuZ19tYXJrX2ZhbHNlX2xhYmVsX3N0YWNrKTogUmVtb3ZlLgoJKiBnZ2MtY29tbW9uLmMgKGxhbmdfbWFya19mYWxzZV9sYWJlbF9zdGFjayk6IENoYW5nZSB0eXBlLgoJKiBnZ2MuaCAoZ2djX2FsbG9jX3N0cmluZyk6IEFkZCBjb21tZW50LgoJKGdnY19zdHJkdXApOiBOZXcgZnVuY3Rpb24uCgpTYXQgU2VwIDIzIDE5OjEwOjIwIDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL2F2ci5oIChCUkFOQ0hfQ09TVCk6IERlZmluZSBhcyAwLgoKCSogY29uZmlnL3BkcDExL3BkcDExLmM6ICNpbmNsdWRlICJ0cmVlLmgiIGFkZGVkLgoKMjAwMC0wOS0zMCAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBjb25maWcvYXZyL2F2ci5jIChhc2hsaGkzX291dCwgYXNobHNpM19vdXQsIGFzaHJoaTNfb3V0LAoJYXNocnNpM19vdXQsIGxzaHJoaTNfb3V0LCBsc2hyc2kzX291dCk6IE9wdGltaXplIG1vcmUgY2FzZXMKCXdpdGgga25vd24gc2hpZnQgY291bnQuCgkqIGNvbmZpZy9hdnIvYXZyLm1kIChhc2hsc2kzLCBhc2hyc2kzLCBsc2hyc2kzKToKCU5ldyBhbHRlcm5hdGl2ZSBmb3Igc2hpZnQgY291bnQgMiB3aXRoIG5vIHNjcmF0Y2ggcmVnaXN0ZXIuCgkoYXNobGhpMywgYXNobHNpMyk6IENoYW5nZSAiY2MiIGF0dHJpYnV0ZSBmcm9tICJjbG9iYmVyIiB0bwoJInNldF9uIiBmb3Igc2hpZnQgY291bnRzIDEgYW5kIDIuCgoyMDAwLTA5LTMwICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAobW92c2lfdG9fY3IpOiBSZW1vdmUgdGhlIFVTRS4gIENhbGN1bGF0ZQoJdGhlIG1hc2sgdmFsdWUgZnJvbSB0aGUgaW5kaXZpZHVhbCBTRVQgb3BlcmF0aW9ucy4KCShyZXR1cm5faW50ZXJuYWxfc2kpOiBNb3ZlIHRoZSBVU0UgYWZ0ZXIgdGhlIFJFVFVSTi4KCShyZXR1cm5faW50ZXJuYWxfZGkpOiBMaWtld2lzZS4KCShyZXR1cm5fYW5kX3Jlc3RvcmVfZnByZWdzX3NpKTogTGlrZXdpc2UuCgkocmV0dXJuX2FuZF9yZXN0b3JlX2ZwcmVnc19kaSk6IExpa2V3aXNlLgoJKHJldHVybl9laF9zaSk6IExpa2V3aXNlLgoJKHJldHVybl9laF9kaSk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChtdGNyZl9vcGVyYXRpb24pOiBEb24ndCBsb29rIGZvciwKCW9yIGNoZWNrLCB0aGUgVVNFLgoJKHJzNjAwMF9lbWl0X3Byb2xvZ3VlKTogRG9uJ3QgZW1pdCB0aGUgVVNFIGZvciBtb3ZzaV90b19jci4KCURvbid0IGdlbmVyYXRlIGEgUEFSQUxMRUwgYXJvdW5kIGEgc2luZ2xlIG9wZXJhdGlvbiBtb3ZzaV90b19jci4KCUdlbmVyYXRlIHRoZSBSRVRVUk4gZmlyc3QgaW4gYW55IFBBUkFMTEVMcy4KCgkqIHJ0bGFuYWwuYyAoc2luZ2xlX3NldF8xKTogVXNlIGZhdGFsX2luc24gdG8gZGlzcGxheSB0aGUKCWludmFsaWQgaW5zbi4gIENoZWNrIGZvciBtb3JlIGNhc2VzIHdoZW4gYSBVU0Ugb3IgQ0xPQkJFUiBvY2N1cnMKCWJlZm9yZSBhIFNFVC4KCSogTWFrZWZpbGUuaW46IFVwZGF0ZSBkZXBlbmRlbmNpZXMgZm9yIHJ0bGFuYWwuby4KCjIwMDAtMDktMzAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGkzODYuYzogTW92ZSBpbmNsdWRlIG9mICJjb25maWcuaCIgdG8gYmVmb3JlIHRoYXQgb2YgPHNldGptcC5oPi4KCjIwMDAtMDktMzAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtdHJlZS50ZXhpLCBjb250cmliLnRleGksIGdjYy50ZXhpLCBpbnN0YWxsLnRleGksIGludm9rZS50ZXhpOgoJQ29uc2lzdGVudGx5IHVzZSBAZW1haWwgZm9yIGZvcm1hdHRpbmcgZW1haWwgYWRkcmVzc2VzLgoKMjAwMC0wOS0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNzZS5jIChub3RyZWdfY29zdCk6IE5ldyBhcmd1bWVudCBvdXRlci4KCShDT1NUKTogUGFzcyBpbiBTRVQgdG8gbm90cmVnX2Nvc3QKCShDT1NUX0lOKTogTmV3LgoJKGZvbGRfcnR4KTogVXNlIENPU1RfSU4uICBQcmVmZXIgY29uc3RhbnRzIHdoZW4gY29zdHMKCWFyZSB0aGUgc2FtZS4KCjIwMDAtMDktMjkgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGZpeGluYy9pbmNsaGFjay5kZWYgKGJyb2tlbl9jYWJzKTogR2VuZXJhbGl6ZSByZWdleC4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCjIwMDAtMDktMjkgIEZyYW56IFNpcmwgIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIGxvb3AuYyAoY2hlY2tfZmluYWxfdmFsdWUpOiBBIEdJViBpcyBub3QgcmVwbGFjZWFibGUgaWYgdXNlZAoJYmVmb3JlIHNldC4KCkZyaSBTZXAgMjkgMTA6MDQ6MTIgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogdmVyc2lvbi5jOiBCdW1wIHRvIGdjYy0yLjk3LgoKRnJzIFNlcCAyOSAxMzozNzo1OSBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGZpbmFsLmMgKGZpbmFsX3NjYW5faW5zbik6IFJlbW92ZSBleHRyYSBleHRyYWN0X2luc24gY2FsbDsKCVVzZSBjYWNoaW5nIGZvciBjb25zdHJhaW5fb3BlcmFuZHMuCgkoY2xlYW51cF9zdWJyZWdfb3BlcmFuZHMpOiBVc2UgY2FjaGluZyBmb3IgZXh0cmFjdF9pbnNuLgoJKiByZWNvZy5jIChjb25zdHJhaW5fb3BlcmFuZHNfY2FjaGVkKTogTmV3LgoJKiByZWNvZy5oIChjb25zdHJhaW5fb3BlcmFuZHNfY2FjaGVkKTogRGVjbGFyZS4KCSogaTM4Ni5jIChpeDg2X2F0dHJfbGVuZ3RoX2ltbWVkaWF0ZV9kZWZhdWx0LAoJaXg4Nl9hdHRyX2xlbmd0aF9hZGRyZXNzX2RlZmF1bHQsIGl4ODZfYWdpX2RlcGVuZGFudCk6IENhY2hlCglleHRyYWN0X2luc24gY2FsbC4KCgkqIHJlY29nLmMgKGFzbV9ub3BlcmFuZHMpOiBUd2Vhay4KCShleHRyYWN0X2luc24pOiBEbyBub3QgY2FsbCBhc21fbm9wZXJhZHMgZm9yIG5vbi1hc20gaW5zdHJ1Y3Rpb25zLgoKRnJpIFNlcCAyOSAxMzoyMDo0MiBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJlY29nLmMgKHJlY29nX21lbW9pemVkKTogUmVuYW1lIHRvIHJlY29nX21lbW9pemVkXzEuCgkqIHJlY29nLmggKHJlY29nX21lbW9pemVkKTogUmVuYW1lIHRvIHJlY29nX21lbW9pemVkXzEuCgkocmVjb2dfbWVtb2l6ZWQpOiBOZXcgbWFjcm8uCgkqIHJ0bC5oIChzaW5nbGVfc2V0KTogUmVuYW1lIHRvIHNpbmdsZV9zZXRfMQoJKHNpbmdsZV9zZXQpOiBOZXcgbWFjcm8uCgkqIHJ0bGFuYWwuYyAoc2luZ2xlX3NldCk6IFJlbmFtZSB0byBzaW5nbGVfc2V0XzE7ICBleHBlY3QgY2xvYmJlcnMKCXRvIGJlIGxhc3QuCgoJKiBpMzg2Lm1kIChzdHJtb3ZzaV8xLCBzdHJtb3ZoaV8xIHN0cm1vdnFpXzEpOgoJRG8gbm90IHVzZSBtYXRjaF9kdXAgb2YgaW5wdXQgb3BlcmFuZHMgYXQgb3V0cHV0cy4KCVVzZSByZWdpc3Rlcl9vcGVyYW5kIGZvciBtZW1vcnkgZXhwcmVzc2lvbi4KCShyZXBfbW92c2kpOiBQdXQgdXNlIGxhc3QsIGNhbm9uaWNhbGl6ZS4KCVVzZSByZWdpc3Rlcl9vcGVyYW5kIGZvciBtZW1vcnkgZXhwcmVzc2lvbi4KCShyZXBfbW92cWkpOiBQdXQgdXNlIGxhc3QuCglVc2UgcmVnaXN0ZXJfb3BlcmFuZCBmb3IgbWVtb3J5IGV4cHJlc3Npb24uCgkoc3Ryc2V0c2lfMSwgc3Ryc2V0X2hpXzEsIHN0cnNldHFpXzEpOiBEbyBub3QgdXNlIG1hdGNoX2R1cAoJb2YgaW5wdXQgb3BlcmFuZHMgYXQgb3V0cHV0cy4gIFVzZSByZWdpc3Rlcl9vcGVyYW5kIGZvciBtZW1vcnkKCWV4cHJlc3Npb24uCgkocmVwX3N0b3NzaSk6IFB1dCB1c2UgbGFzdDsgY2Fub25pY2FsaXplOyBmaXggbWF0Y2hfZHVwIGluCgl0aGUgYWRkcmVzcyBleHByZXNzaW9uCgkocmVwX3N0b3NxaSk6IExpa2V3aXNlLgoJKG1lbWNtcCBleHBhbmRlcik6IFVwZGF0ZSBjYWxscy4KCShjbXBzdHJzaV9uel8xLCBjbXBzdHJzaV8xLCBzdHJsZW5zaV8xKTogQXZvaWQgbWF0Y2hfZHVwcyBpbgoJdGhlIGNsb2JiZXJzLgoKCSogaTM4Ni5tZCAoZnBfamNjXzMsIGZwX2pjY180LCBqcF9mY2NfNSk6IGlmX3RoZW5fZWxzZSBvcGVyYW5kIGlzCglWT0lEbW9kZS4KCShmcF9qY2NfNCwgZnBfamNjXzMpOiBSZWZ1c2UgdW5vcmRlcmVkIGNvbXBhcmlzb25zLgoKMjAwMC0wOS0yOCAgRGF2aWQgTydCcmllbiAgPG9icmllbkBGcmVlQlNELm9yZz4KCgkqIGNvbmZpZy9pMzg2L2ZyZWVic2QtYW91dC5oOiBOZXcsIEZyZWVCU0QgYS5vdXQgY29uZmlnIGZpbGUuCglDb250YWlucyB0aGUgb2xkIGNvbnRlbnRzIG9mIGNvbmZpZy9pMzg2L2ZyZWVic2QuaAoJKiBjb25maWcvaTM4Ni9mcmVlYnNkLmg6IE5vdyB0aGUgRUxGIHJhdGhlciB0aGFuIGEub3V0IGNvbmZpZyBmaWxlLgoJQ29udGFpbnMgdGhlIG9sZCBjb250ZW50cyBvZiBjb25maWcvaTM4Ni9mcmVlYnNkLWVsZi5oCgkqIGNvbmZpZy9pMzg2L2ZyZWVic2QtZWxmLmg6IFJldGlyZSB0aGlzIGZpbGUgLS0gY29udGVudHMgbW92ZWQgdG8KCWNvbmZpZy9pMzg2L2ZyZWVic2QuaC4KCSogY29uZmlndXJlLmluOiBBZGp1c3QgZm9yIGFib3ZlIGNoYW5nZXMuCgkqIHBvL1BPVEZJTEVTLmluOiBMaWtld2lzZS4KCSogcG8vZW5fR0IucG86IExpa2V3aXNlLgoJKiBwby9nY2MucG90OiBMaWtld2lzZS4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0wOS0yOCAgRnJhbnogU2lybCAgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCSogZG9sb29wLmMgKGRvbG9vcF9tb2RpZnkpOiBQcmV2ZW50IGRlbGV0ZV9pbnNuKCkgZnJvbQoJZGVsZXRpbmcgdG9vIG11Y2guICBQcmVmZXIgbG9vcC0+dG9wIG92ZXIgbG9vcC0+c3RhcnQgYXMKCXRhcmdldCBmb3IgdGhlIG5ldyBKVU1QIGluc24uCgkoZG9sb29wX3ZhbGlkX3ApOiBJZ25vcmUgbG9vcCB3aXRoIGV4aXRfY291bnQgIT0gMC4KCjIwMDAtMDktMjggIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoKCSogaW52b2tlLnRleGkgKGkzODYgT3B0aW9ucyk6IEFkZCBhdGhsb24gdG8gdGFibGUgb2YgcG9zc2libGUKCWNob2ljZXMgZm9yIC1tY3B1PS4KCjIwMDAtMDktMjggIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRpYWdub3N0aWMuaCAob3V0cHV0X2NsZWFyX21lc3NhZ2VfdGV4dCk6IE5ldyBmdW5jdGlvbi4KCShvdXRwdXRfbWVzc2FnZV90ZXh0KTogTmV3IG1hY3JvLgoKCSogZGlhZ25vc3RpYy5jIChjbGVhcl90ZXh0X2luZm8pOiBSZW5hbWUgdG8KCW91dHB1dF9jbGVhcl9tZXNzYWdlX3RleHQuCgkob3V0cHV0X2NsZWFyKTogQWRqdXN0LgoJKG91dHB1dF9maW5pc2gpOiBSZW5hbWUgdG8gb3V0cHV0X2ZpbmFsaXplX21lc3NhZ2UuICBUd2Vlay4KCShvdXRwdXRfdG9fc3RyZWFtKTogQWRqdXN0LgoKMjAwMC0wOS0yOCAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBlcnJvci5jIChfY3BwX2JlZ2luX21lc3NhZ2UpOiAgRG8gdGhlIHRlc3QgZm9yIHN1cHByZXNzaW9uCglvZiB3YXJuaW5ncyBhbmQgcGVkYW50aWMgd2FybmluZ3MgYmVmb3JlIHRoZSAiaXMgYSB3YXJuaW5nIGFuCgllcnJvciIgdGVzdHMuCgkqIGNwcGluaXQuYyAoY3BwX2hhbmRsZV9vcHRpb24pOiBSZW1vdmUgc3VycGx1cyBcbi4KCSogY3BwbGV4LmMgKE9OX1JFU1RfQVJHKTogRGVsZXRlLgoJKHNraXBfYmxvY2tfY29tbWVudCk6IEluaXRpYWxpc2UgcHJldmMuCgkocGFyc2VfYXJncyk6IEltcHJvdmUgZXJyb3IgbWVzc2FnZXMuCgkobWF5YmVfcGFzdGVfd2l0aF9uZXh0KTogVXNlIENPTlRFWFRfVkFSQVJHUyByYXRoZXIKCXRoYW4gT05fUkVTVF9BUkcuCgkqIGNwcGxpYi5jIChjcHBfcHVzaF9idWZmZXIpOiBGaXggZ3JhbW1hciBpbiBtZXNzYWdlLgoJKiBjcHBtYWluLmMgKG1haW4pOiBTZXQgY2FsbGJhY2tzIGZvciAjaWRlbnQgYW5kICNwcmFnbWEKCW9ubHkgaWYgbm9fb3V0cHV0IG9wdGlvbiBpcyBmYWxzZS4KCShkb19wcmFnbWFfaW1wbGVtZW50YXRpb24pOiBPbmx5IGNhbGwgdGhlICNwcmFnbWEgaGFuZGxlcgoJaWYgaXQgaXMgc2V0IGluIHRoZSBjcHBfcmVhZGVyIHN0cnVjdHVyZS4KCldlZCBTZXAgMjcgMTQ6MDA6MDcgMjAwMCAgRG9uYWxkIExpbmRzYXkgIDxkbGluZHNheUBjeWdudXMuY29tPgoKCSogaW50ZWdyYXRlLmMgKGNvcHlfaW5zbl9saXN0KTogaWYgYW4gaWdub3JlZCByZXR1cm4gdmFsdWUKCWlzIGJlaW5nIGNsb2JiZXJlZCwgc2tpcCBjbG9uaW5nIHRoYXQgaW50byB0aGUgaW5saW5lIGNvcHkuCgoyMDAwLTA5LTI3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBleHRlbmQudGV4aSwgaW52b2tlLnRleGksIGdjYy50ZXhpLCBpbnN0YWxsLnRleGk6IENvbnNpc3RlbnRseQoJdXNlIEB1cmVmIGZvciBmb3JtYXR0aW5nIFVSTHMuCgoyMDAwLTA5LTI3ICBNYXJrIEVsYnJlY2h0ICA8c25vd2JhbGwzQGJpZ2Zvb3QuY29tPgoKCSogY29uZmlnL2kzODYvZGpncHAuaCAoVU5JUVVFX1NFQ1RJT04pOiBDb25zdGlmeSB0aGUgdmFyaWFibGVzCgluYW1lIGFuZCBwcmVmaXguCgpUdWUgMjYtU2VwLTIwMDAgMTg6MjU6MzggQlNUICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGdjYy5jIChjcHBfb3B0aW9ucyk6IEFkZCBzcGVjIGZvciAtZnRhYnN0b3A9LgoJKGludm9rZV9hcyk6IE5ldyBzcGVjIHRoYXQgaGFuZGxlcyBpbnZva2luZyBhcy4KCVVwZGF0ZSBzcGVjcyB0byBoYW5kbGUgLXNhdmUtdGVtcHMgYW5kIC10cmFkaXRpb25hbC4KCSogY2gvbGFuZy1zcGVjcy5oLCBmL2xhbmctc3BlY3MuaCwgamF2YS9sYW5nLXNwZWNzLmg6CglVc2UgaW52b2tlX2FzLgoJKiBjcC9sYW5nLXNwZWNzLmgsIG9iamMvbGFuZy1zcGVjcy5oOiBVcGRhdGUgdG8gdXNlCglpbnZva2VfYXMsIGFuZCBoYW5kbGUgLXNhdmUtdGVtcHMgYW5kIC10cmFkaXRpb25hbCAoaWYKCWFwcHJvcHJpYXRlKS4KCjIwMDAtMDktMjYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX2VtaXRfc2V0X2NvbnN0NjQpOiBEb24ndCBhYm9ydCB3aGVuCglvcDAgaXMgYSBTVUJSRUcuCgkoZnVuY3Rpb25fYXJnX3Nsb3Rubyk6IEFjY2VwdCBUSW1vZGUvQ1RJbW9kZS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKE1JTl9VTklUU19QRVJfV09SRCk6IElmIElOX0xJQkdDQzIgZGVmaW5lCgl0byBVTklUU19QRVJfV09SRC4KCjIwMDAtMDktMjYgIE1pY2hhZWwgSGF5ZXMgIDxtaGF5ZXNAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoZmxvd19sb29wX3ByZV9oZWFkZXJfc2Nhbik6IFB1bnQgaWYgbG9vcCBlbnRlcnMKCWZyb20gZW50cnkgYmxvY2suCgoyMDAwLTA5LTI1ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmggKElOREVYX1JFR19DTEFTUyk6IERlZmluZSB0byBHRU5FUkFMX1JFR1MuCgkoUkVHTk9fT0tfRk9SX0lOREVYX1ApOiBEZWZpbmUgdG8gUkVHTk9fT0tfRk9SX0JBU0VfUC4KCShMRUdJVElNQVRFX0FERFJFU1NfRElTUCk6IFVzZSBMRUdJVElNQVRFX0FERFJFU1NfUkVHLgoJKFJFR19PS19GT1JfSU5ERVgpOiBEZWZpbmUgdG8gUkVHX09LX0ZPUl9CQVNFX1AuCgpUdWUgMjYtU2VwLTIwMDAgMDA6MTY6MjIgQlNUICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jIChwYXJzZV9hcmdzKTogRG9uJ3Qgc2V0IFZPSURfUkVTVCBmbGFnLgoJKENPTlRFWFRfVkFSQVJHUyk6IE5ldyBmbGFnLgoJKG1heWJlX3Bhc3RlX3dpdGhfbmV4dCk6IFNldCBjb250ZXh0IGVhcmxpZXIgaW4gbG9vcC4gIFVzZQoJaXQuICBEbyB2YXJhcmdzIHRlc3Qgd2l0aCBDT05URVhUX1ZBUkFSR1MgZmxhZy4KCShwdXNoX2FyZ19jb250ZXh0KTogU2V0IENPTlRFWFRfVkFSQVJHUyBmbGFnIGlmIHdlJ3JlCglwdXNoaW5nIGFuIGFyZ3VtZW50IGNvbnRleHQgZm9yIGEgdmFyYXJncyBhcmd1bWVudC4KCSogY3BwbGliLmggKFZPSURfUkVTVCk6IERlbGV0ZS4KCSogZ2NjLmRnL2NwcC92YXJhcmcxLmM6IEFkZCB0ZXN0IGNhc2UuCgoyMDAwLTA5LTI1ICBCcmFua28gQ2liZWogIDxicmFua28uY2liZWpAaGVybWVzLnNpPgoKCSogZmxhZ3MuaDogIERlY2xhcmUgd2FybmluZyBmbGFnIHdhcm5fc3lzdGVtX2hlYWRlcnMuCgkqIHRvcGxldi5jOiAgRGVmaW5lIGl0LgoJKFdfb3B0aW9ucyk6IEFkZCBvcHRpb24gLVdzeXN0ZW0taGVhZGVycy4KCSogZGlhZ25vc3RpYy5jIChjb3VudF9lcnJvcik6IFRlc3Qgd2Fybl9zeXN0ZW1faGVhZGVycy4KCSogaW52b2tlLnRleGk6ICBBZGQgZGVzY3JpcHRpb24gZm9yIC1Xc3lzdGVtLWhlYWRlcnMuCgkqIGNwcGxpYi5oIChjcHBfb3B0aW9ucyk6IE5ldyBtZW1iZXIgd2Fybl9zeXN0ZW1faGVhZGVycy4KCSogY3BwaGFzaC5oIChDUFBfUEVEQU5USUMsIENQUF9XVFJBRElUSU9OQUwpOiBEb24ndCB0ZXN0CglDUFBfSU5fU1lTVEVNX0hFQURFUi4KCSogY3BwbGliLmMgKGRvX2ltcG9ydCwgZG9fcHJhZ21hX29uY2UpOiBMaWtld2lzZS4KCSogY3BwZXJyb3IuYyAoX2NwcF9iZWdpbl9tZXNzYWdlKTogVGVzdCB3YXJuX3N5c3RlbV9oZWFkZXJzCglhbmQgQ1BQX0lOX1NZU1RFTV9IRUFERVIuCgkqIGNwcGluaXQuYyAoaGFuZGxlX29wdGlvbik6IFJlY29nbml6ZSAtV3N5c3RlbV9oZWFkZXJzLgoJKHByaW50X2hlbHApOiBEZXNjcmliZSAtV3N5c3RlbV9oZWFkZXJzLgoJKiBjcHBsZXguYyAobGV4X2xpbmUpOiBSZW9yZ2FuaXplIGNvbmRpdGlvbiBzbyB0aGF0IHdhcm5pbmdzCglhYm91dCBDKysgY29tbWVudHMgaW4gc3lzdGVtIGhlYWRlcnMgY2FuIGJlIGVuYWJsZWQuIFJlbW92ZQoJbGFiZWwgZG9fbGluZV9jb21tZW50LgoKTW9uIDI1LVNlcC0yMDAwIDIzOjM4OjI3IEJTVCAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAoc2F2ZV9jb21tZW50KTogT25seSBzdG9yZSB0aGUgaW5pdGlhbCAnLycKCW5vdy4KCShsZXhfdG9rZW4pOiBDb21iaW5lIGhhbmRsaW5nIG9mIHRoZSB0d28gY29tbWVudCB0eXBlcy4KCVBhc3MgZXZlcnl0aGluZyBidXQgdGhlIGluaXRpYWwgJy8nIHRvIHNhdmVfY29tbWVudC4KCk1vbiAyNS1TZXAtMjAwMCAyMzozMTo0NSBCU1QgIE5laWwgQm9vdGggIDxuZWlsYkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaGFzaC5oIChfY3BwX2RpZ3JhcGhfc3BlbGxpbmdzLCBfY3BwX3Byb2Nlc3NfZGlyZWN0aXZlLAoJX2NwcF9jYW5fcGFzdGUpOiBOZXcgbGlicmFyeS1pbnRlcm5hbCBwcm90b3R5cGVzLgoJKiBjcHBsZXguYyAoZHVtcF9wYXJhbV9zcGVsbGluZywgb3V0cHV0X2xpbmVfY29tbWFuZCwKCW91dHB1dF90b2tlbiwgY3BwX3NjYW5fYnVmZmVyLCBjcHBfc2Nhbl9idWZmZXJfbm9vdXRwdXQsCgljcHBfcHJpbnRmLCBjcHBfb3V0cHV0X2xpc3QpOiBNb3ZlIHRvIGNwcG91dHB1dC5jLgoJKHByb2Nlc3NfZGlyZWN0aXZlLCBjYW5fcGFzdGUsIGRpZ3JhcGhfc3BlbGxpbmdzKTogQWRkIF9jcHBfIHByZWZpeC4KCSogY3BwbWFjcm8uYyAoZHVtcF9tYWNyb19hcmdzLCBjcHBfZHVtcF9kZWZpbml0aW9uKSBNb3ZlIHRvCgljcHBvdXRwdXQuYy4KCSogY3Bwb3V0cHV0LmMgKGR1bXBfbWFjcm9fYXJncywgY3BwX2R1bXBfZGVmaW5pdGlvbiwgb3V0cHV0X3Rva2VuLAoJZHVtcF9wYXJhbV9zcGVsbGluZywgb3V0cHV0X2xpbmVfY29tbWFuZCwgY3BwX3NjYW5fYnVmZmVyLAoJY3BwX3NjYW5fYnVmZmVyX25vb3V0cHV0LCBjcHBfcHJpbnRmLCBjcHBfb3V0cHV0X2xpc3QpOiBNb3ZlZAoJZnJvbSBlbHNld2hlcmUuCgkqIE1ha2VmaWxlLmluOiBBZGQgY3Bwb3V0cHV0LmMuCgkqIHBvL1BPVEZJTEVTLmluOiBBZGQgY3Bwb3V0cHV0LmMuCgoyMDAwLTA5LTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X3ByaW50X29wZXJhbmQpOiBEZWZpbmUgJ2UnIGFzIDY0LW4uCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKHJvdHJzaTMpOiBBbGxvdyB2YXJpYWJsZSByb3RhdGVzOyBkb24ndAoJc3BsaXQgdW50aWwgYWZ0ZXIgcmVsb2FkLgoJKHJvdGxzaTMsIHJvdGxkaTMpOiBOZXcuCgoyMDAwLTA5LTI1ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkaWFnbm9zdGljLmMgKG91dHB1dF9sYXN0X3Bvc2l0aW9uKTogRGVmaW5lLgoJKHNldF9yZWFsX21heGltdW1fbGVuZ3RoKTogVHdlZWsuCgkqIGRpYWdub3N0aWMuaCAob3V0cHV0X2xhc3RfcG9zaXRpb24pOiBEZWNsYXJlLgoKMjAwMC0wOS0yNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wOS0yNCAgQWxhbiBMZWhvdHNreSAgPGFsZWhvdHNreUBjeWdudXMuY29tPgoKCSogZW1pdC1ydGwtYyAoZ2VuX2xvd3BhcnRfY29tbW9uKTogQWNjZXB0IG5vbi1wYXJhZG94aWNhbCBTVUJSRUcgd2hlbgoJVU5JVFNfUEVSX1dPUkQgaXMgc21hbGwuCgoyMDAwLTA5LTI1ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChmb3JtYXRfY2hhcl9pbmZvKTogQWRkIGZsYWdzMjsgdXBkYXRlIGNvbW1lbnRzLgoJKHByaW50X2NoYXJfdGFibGUsIHNjYW5fY2hhcl90YWJsZSwgdGltZV9jaGFyX3RhYmxlKTogU3BsaXQgc29tZQoJZmxhZ3Mgb3V0IGludG8gZmxhZ3MyLgoJKGNoZWNrX2Zvcm1hdF9pbmZvKTogVXNlIGZsYWdzMiBmb3IgdGhvc2UgZmxhZ3MsIGZvciBpZGVudGlmeWluZwoJdGhlIGluaXRpYWwgY2hhcmFjdGVyIG9mIGEgc2NhbmYgc2NhbnNldCwgYW5kIGZvciBpZGVudGlmeWluZwoJcHJpbnRmIGZvcm1hdHMgd2hlcmUgdGhlICcwJyBmbGFnIGlzIGlnbm9yZWQgd2l0aCBwcmVjaXNpb24uCgoyMDAwLTA5LTI1ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCglDaGFuZ2VzIGJlbG93IG1hcmtlZCAiaGVyZSIgYWRkIFRBQnMgb24gZWl0aGVyIG9yIGJvdGggc2lkZXMsCgljb3ZlcmluZyBzdGFydCBvZiBsaW5lLCB1cCB0byBhbnkgb3BlcmFuZCBmb3IgYWxsIG5vdGVkIC4qQVNNLipfT1AKCWRlZmluaXRpb25zLiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4KCSogdG0udGV4aTogTWFrZSBkb2N1bWVudGVkICpfQVNNLipfT1A6cyBpbmNsdWRlIHNwYWNpbmcKCShURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QLCBTSEFSRURfU0VDVElPTl9BU01fT1AsCglCU1NfU0VDVElPTl9BU01fT1AsIFNIQVJFRF9CU1NfU0VDVElPTl9BU01fT1AsIElOSVRfU0VDVElPTl9BU01fT1AsCglBU01fQllURV9PUCwgRklOSV9TRUNUSU9OX0FTTV9PUCwgRUhfRlJBTUVfU0VDVElPTl9BU01fT1AsCglBU01fU1RBQlNfT1AsIEFTTV9TVEFCRF9PUCwgQVNNX1NUQUJOX09QKS4KCUZpeCB0eXBvcyBpbiBkZXNjcmlwdGlvbiBmb3IgTE9OR19MT05HX1RZUEVfU0laRSBhbmQKCUZJTklfU0VDVElPTl9BU01fT1AuCgkqIGNydHN0dWZmLmMgKENUT1JTX1NFQ1RJT05fQVNNX09QLCBEVE9SU19TRUNUSU9OX0FTTV9PUCk6IEV4cGxhaW4KCXdoeSB0aGVzZSBkZWZhdWx0cyBkb24ndCBoYXZlIGxlYWRpbmcgc3BhY2luZy4KCSogZGJ4b3V0LmMgKEFTTV9TVEFCU19PUCwgQVNNX1NUQUJOX09QKTogSGVyZS4KCSogZHdhcmYyb3V0LmMgKFVOQUxJR05FRF9TSE9SVF9BU01fT1AsIFVOQUxJR05FRF9JTlRfQVNNX09QLAoJVU5BTElHTkVEX0RPVUJMRV9JTlRfQVNNX09QLCBTRUNUSU9OX0FTTV9PUCwgQVNNX0JZVEVfT1ApOiBIZXJlLgoJKiBkd2FyZm91dC5jIChGSUxFX0FTTV9PUCwgVkVSU0lPTl9BU01fT1AsCglVTkFMSUdORURfU0hPUlRfQVNNX09QLCBVTkFMSUdORURfSU5UX0FTTV9PUCwgQVNNX0JZVEVfT1AsCglQVVNIU0VDVElPTl9BU01fT1AsIFBPUFNFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogZGVmYXVsdHMuaCAoQVNNX1NUQUJEX09QLCBFSF9GUkFNRV9TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIHZhcmFzbS5jIChBU01fU1RBQlNfT1ApOiBIZXJlLgoJKiB4Y29mZm91dC5oIChBU01fU1RBQlNfT1ApOiBIZXJlLgoJKiBjb25maWcvZWxmb3MuaCAoSURFTlRfQVNNX09QLCBBU01fQllURV9PUCwgU0VUX0FTTV9PUCwKCVNLSVBfQVNNX09QLCBBTElHTl9BU01fT1AsIENPTU1PTl9BU01fT1AsIExPQ0FMX0FTTV9PUCwKCUlOVF9BU01fT1AsIEFTQ0lJX0RBVEFfQVNNX09QLCBUWVBFX0FTTV9PUCwgU0laRV9BU01fT1AsCglTVFJJTkdfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2ZyZWVic2QuaCAoSURFTlRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2xpbnV4LWFvdXQuaCAoU0VUX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9saW51eC5oIChTRVRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2x5bnguaCAoQ1RPUlNfU0VDVElPTl9BU01fT1AsIERUT1JTX1NFQ1RJT05fQVNNX09QLAoJSU5UX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9uZXRic2QuaCAoVFlQRV9BU01fT1AsIFNJWkVfQVNNX09QLCBTRVRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL25leHRzdGVwLmggKEVIX0ZSQU1FX1NFQ1RJT05fQVNNX09QLCBBTElHTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvb3BlbmJzZC5oIChUWVBFX0FTTV9PUCwgU0laRV9BU01fT1AsIFNFVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvcHNvcy5oIChDVE9SU19TRUNUSU9OX0FTTV9PUCwgRFRPUlNfU0VDVElPTl9BU01fT1AsCglJTlRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL3B0eDQuaCAoSURFTlRfQVNNX09QLCBBU01fQllURV9PUCwgU0VUX0FTTV9PUCwKCVNLSVBfQVNNX09QLCBBTElHTl9BU01fT1AsIENPTU1PTl9BU01fT1AsIExPQ0FMX0FTTV9PUCwKCUlOVF9BU01fT1AsIEFTQ0lJX0RBVEFfQVNNX09QLCBDT05TVF9TRUNUSU9OX0FTTV9PUCwKCUNUT1JTX1NFQ1RJT05fQVNNX09QLCBEVE9SU19TRUNUSU9OX0FTTV9PUCwgSU5JVF9TRUNUSU9OX0FTTV9PUCwKCUZJTklfU0VDVElPTl9BU01fT1AsIFRZUEVfQVNNX09QLCBTSVpFX0FTTV9PUCBTVFJJTkdfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL3N2cjMuaCAoSU5JVF9TRUNUSU9OX0FTTV9PUCwgRklOSV9TRUNUSU9OX0FTTV9PUCwKCUNPTlNUX1NFQ1RJT05fQVNNX09QLCBBU01fQllURV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9hMjlrL3VkaS5oIChJTlRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2FscGhhL2FscGhhLWludGVyaXguaCAoQ09OU1RfU0VDVElPTl9BU01fT1AsCglDVE9SU19TRUNUSU9OX0FTTV9PUCwgRFRPUlNfU0VDVElPTl9BU01fT1AsIElOVF9BU01fT1AsCglTRVRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2FscGhhL2FscGhhLmggKFRFWFRfU0VDVElPTl9BU01fT1AsCglSRUFET05MWV9EQVRBX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QLAoJVU5BTElHTkVEX1NIT1JUX0FTTV9PUCwgVU5BTElHTkVEX0lOVF9BU01fT1AsCglVTkFMSUdORURfRE9VQkxFX0lOVF9BU01fT1AsIEFTTV9TVEFCU19PUCwgQVNNX1NUQUJOX09QLAoJQVNNX1NUQUJEX09QKTogSGVyZS4KCSogY29uZmlnL2FscGhhL2VsZi5oIChJREVOVF9BU01fT1AsIFNLSVBfQVNNX09QLCBBTElHTl9BU01fT1AsCglDT01NT05fQVNNX09QLCBJTlRfQVNNX09QLCBBU0NJSV9EQVRBX0FTTV9PUCwKCUNPTlNUX1NFQ1RJT05fQVNNX09QLCBDVE9SU19TRUNUSU9OX0FTTV9PUCwgRFRPUlNfU0VDVElPTl9BU01fT1AsCglCU1NfU0VDVElPTl9BU01fT1AsIFNCU1NfU0VDVElPTl9BU01fT1AsIFNEQVRBX1NFQ1RJT05fQVNNX09QLAoJSU5JVF9TRUNUSU9OX0FTTV9PUCwgRklOSV9TRUNUSU9OX0FTTV9PUCwgVFlQRV9BU01fT1AsCglTSVpFX0FTTV9PUCwgU1RSSU5HX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9hbHBoYS92bXMuaCAoTElOS19TRUNUSU9OX0FTTV9PUCwKCVJFQURPTkxZX1NFQ1RJT05fQVNNX09QLCBMSVRFUkFMU19TRUNUSU9OX0FTTV9PUCwKCUNUT1JTX1NFQ1RJT05fQVNNX09QLCBEVE9SU19TRUNUSU9OX0FTTV9PUCwgQ09NTU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9hcmMvYXJjLmggKEFTTV9CWVRFX09QLCBTRVRfQVNNX09QKTogSGVyZS4KCShQVVNIU0VDVElPTl9BU01fT1ApOiBEZWZpbmUgdGhpcywgbm90IFBVU0hTRUNUSU9OX0ZPUk1BVC4KCSogY29uZmlnL2FybS9hb2YuaCAoQ1RPUlNfU0VDVElPTl9BU01fT1AsIERUT1JTX1NFQ1RJT05fQVNNX09QKToKCUhlcmUuCgkqIGNvbmZpZy9hcm0vYW91dC5oIChURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QLAoJQlNTX1NFQ1RJT05fQVNNX09QLCBTRVRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2FybS9jb2ZmLmggKElOVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvYXJtL2Nvbml4LWVsZi5oIChVTkFMSUdORURfV09SRF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvYXJtL2VsZi5oIChUWVBFX0FTTV9PUCwgU0laRV9BU01fT1AsIElOVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvYXJtL2xpbnV4LWVsZi5oIChJREVOVF9BU01fT1AsIENPTlNUX1NFQ1RJT05fQVNNX09QLAoJSU5JVF9TRUNUSU9OX0FTTV9PUCwgRklOSV9TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9hcm0vdW5rbm93bi1lbGYuaCAoVU5BTElHTkVEX1dPUkRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2F2ci9hdnIuaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCwKCUFTTV9CWVRFX09QLCBUWVBFX0FTTV9PUCwgU0laRV9BU01fT1AsIFdFQUtfQVNNX09QLAoJU1RSSU5HX0FTTV9PUCk6IEhlcmUuICBVcGRhdGUgZG9jdW1lbnRhdGlvbiBjb3B5IGluIGNvbW1lbnRzLgoJKiBjb25maWcvYzR4L2M0eC5oIChBU01fU1RBQlNfT1AsIEJTU19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9jbGlwcGVyL2NsaXBwZXIuaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwKCURBVEFfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvY2xpcHBlci9jbGl4LmggKEJTU19TRUNUSU9OX0FTTV9PUCwgSU5JVF9TRUNUSU9OX0FTTV9PUCk6CglIZXJlLgoJKiBjb25maWcvY29udmV4L2NvbnZleC5oIChURVhUX1NFQ1RJT05fQVNNX09QLAoJREFUQV9TRUNUSU9OX0FTTV9PUCwgQlNTX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2QzMHYvZDMwdi5oIChURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QLAoJQlNTX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2ZyMzAvZnIzMC5oIChURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QLAoJQlNTX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2Z4ODAvZng4MC5oIChURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QKToKCUhlcmUuCgkqIGNvbmZpZy9nbWljcm8vZ21pY3JvLmggKFRFWFRfU0VDVElPTl9BU01fT1AsCglEQVRBX1NFQ1RJT05fQVNNX09QLCBCU1NfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaDgzMDAvaDgzMDAuaCAoQVNNX1dPUkRfT1ApOiBIZXJlLgoJKiBjb25maWcvaTM3MC9pMzcwLmggKFRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1AsCglCU1NfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTM4Ni9haXgzODYuaCAoSU5JVF9TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pMzg2L2JzZC5oIChBU01fQllURV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pMzg2L2N5Z3dpbi5oIChTRVRfQVNNX09QLCBJTlRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2kzODYvZGd1eC5oIChDT05TVF9TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pMzg2L2RqZ3BwLmggKElERU5UX0FTTV9PUCwgSU5UX0FTTV9PUCwgU0VUX0FTTV9PUCk6CglIZXJlLgoJKiBjb25maWcvaTM4Ni9mcmVlYnNkLWVsZi5oIChTRVRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2kzODYvZnJlZWJzZC5oIChUWVBFX0FTTV9PUCwgU0laRV9BU01fT1AsIElOVF9BU01fT1ApOgoJSGVyZS4KCSogY29uZmlnL2kzODYvaTM4Ni1jb2ZmLmggKENUT1JTX1NFQ1RJT05fQVNNX09QLAoJRFRPUlNfU0VDVElPTl9BU01fT1AsIElOVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTM4Ni9pMzg2LWludGVyaXguaCAoU1RSSU5HX0FTTV9PUCwgQ09OU1RfU0VDVElPTl9BU01fT1AsCglDVE9SU19TRUNUSU9OX0FTTV9PUCwgRFRPUlNfU0VDVElPTl9BU01fT1AsIElOVF9BU01fT1AsCglTRVRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2kzODYvaTM4NmVsZi5oIChCU1NfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTM4Ni9uZXRic2QuaCAoSU5UX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pMzg2L29wZW5ic2QuaCAoSU5UX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pMzg2L29zZnJvc2UuaCAoVFlQRV9BU01fT1AsIFNJWkVfQVNNX09QLCBTRVRfQVNNX09QLAoJSURFTlRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2kzODYvc2NvNS5oIChBTElHTl9BU01fT1AsIEFTQ0lJX0RBVEFfQVNNX09QLAoJQVNNX0JZVEVfT1AsIElERU5UX0FTTV9PUCwgQ09NTU9OX0FTTV9PUCwgU0VUX0FTTV9PUCwKCUxPQ0FMX0FTTV9PUCwgSU5UX0FTTV9PUCwgVFlQRV9BU01fT1AsIFNJWkVfQVNNX09QLCBTVFJJTkdfQVNNX09QLAoJU0tJUF9BU01fT1AsIEdMT0JBTF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTM4Ni9zZXEtc3lzdjMuaCAoU0hBUkVEX1NFQ1RJT05fQVNNX09QLAoJU0hBUkVEX0JTU19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pMzg2L3NlcXVlbnQuaCAoU0hBUkVEX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2kzODYvc3VuMzg2LmggKEFTTV9CWVRFX09QLCBURVhUX1NFQ1RJT05fQVNNX09QLAoJREFUQV9TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pMzg2L3N2cjNnYXMuaCAoSU5JVF9TRUNUSU9OX0FTTV9PUCwgRklOSV9TRUNUSU9OX0FTTV9PUCwKCUNPTlNUX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2kzODYvc3lzdjMuaCAoSU5JVF9TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pMzg2L3VuaXguaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCwKCUJTU19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pODYwL2JzZC1nYXMuaCAoQVNDSUlfREFUQV9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTg2MC9ic2QuaCAoQVNDSUlfREFUQV9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTg2MC9meDI4MDAuaCAoQVNNX1NUQUJTX09QLCBBU01fU1RBQk5fT1AsIEFTTV9TVEFCRF9PUCwKCUJTU19BU01fT1ApOiBIZXJlLCBidXQgdXNlIHRyYWlsaW5nIHNwYWNlcy4KCSogY29uZmlnL2k4NjAvaTg2MC5oIChBU01fQllURV9PUCwgVEVYVF9TRUNUSU9OX0FTTV9PUCwKCURBVEFfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTg2MC9wYXJhZ29uLmggKEFTQ0lJX0RBVEFfQVNNX09QLCBCU1NfU0VDVElPTl9BU01fT1ApOgoJSGVyZS4KCSogY29uZmlnL2k4NjAvc3lzdjMuaCAoQVNDSUlfREFUQV9BU01fT1AsIENUT1JTX1NFQ1RJT05fQVNNX09QLAoJRFRPUlNfU0VDVElPTl9BU01fT1AsIFRERVNDX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL2k4NjAvc3lzdjQuaCAoQ1RPUlNfU0VDVElPTl9BU01fT1AsIERUT1JTX1NFQ1RJT05fQVNNX09QLAoJVERFU0NfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaTk2MC9pOTYwLWNvZmYuaCAoQ1RPUlNfU0VDVElPTl9BU01fT1AsCglEVE9SU19TRUNUSU9OX0FTTV9PUCwgSU5UX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9pOTYwL2k5NjAuaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCk6CglIZXJlLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKFRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1AsCglCU1NfU0VDVElPTl9BU01fT1AsIEVIX0ZSQU1FX1NFQ1RJT05fQVNNX09QLAoJVU5BTElHTkVEX1NIT1JUX0FTTV9PUCwgVU5BTElHTkVEX0lOVF9BU01fT1AsCglVTkFMSUdORURfRE9VQkxFX0lOVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvaWE2NC9zeXN2NC5oIChBU01fQllURV9PUCwgU1RSSU5HX0FTTV9PUCwgU0tJUF9BU01fT1AsCglDT01NT05fQVNNX09QLCBBU0NJSV9EQVRBX0FTTV9PUCwgSU5JVF9TRUNUSU9OX0FTTV9PUCwKCUZJTklfU0VDVElPTl9BU01fT1AsIENUT1JTX1NFQ1RJT05fQVNNX09QLCBEVE9SU19TRUNUSU9OX0FTTV9PUCwKCVNEQVRBX1NFQ1RJT05fQVNNX09QLCBTQlNTX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL20zMnIvbTMyci5oIChTQ09NTU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEuaCAoR0xPQkFMX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tNjhrL2F1eGFzLmggKEJZVEVfQVNNX09QLCBXT1JEX0FTTV9PUCwgTE9OR19BU01fT1AsCglTUEFDRV9BU01fT1AsIEFMSUdOX0FTTV9PUCwgR0xPQkFMX0FTTV9PUCwgU1dCRUdfQVNNX09QLAoJU0VUX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tNjhrL2NvZmYuaCAoQlNTX1NFQ1RJT05fQVNNX09QLCBDVE9SU19TRUNUSU9OX0FTTV9PUCwKCURUT1JTX1NFQ1RJT05fQVNNX09QLCBJTlRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL202OGsvY3Jkcy5oIChCU1NfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbTY4ay9kcHgyLmggKEFTTV9CWVRFX09QLCBHTE9CQUxfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL202OGsvaHAzMjAuaCAoQVNDSUlfREFUQV9BU01fT1AsIEdMT0JBTF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbTY4ay9saW51eC5oIChCU1NfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbTY4ay9seW54LmggKEJTU19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tNjhrL202OGsuaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCwKCUdMT0JBTF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbTY4ay9tNjhrZWxmLmggKFNXQkVHX0FTTV9PUCwgQlNTX0FTTV9PUCwKCUJTU19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tNjhrL202OGt2NC5oIChCU1NfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL202OGsvbW90MzMwMC5oIChURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QLAoJQVNDSUlfREFUQV9BU01fT1AsIFNFVF9BU01fT1AsIENUT1JTX1NFQ1RJT05fQVNNX09QLAoJRFRPUlNfU0VDVElPTl9BU01fT1AsIEdMT0JBTF9BU01fT1AsIEFTTV9CWVRFX09QLCBBTElHTl9BU01fT1AsCglTS0lQX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tNjhrL25ld3NnYXMuaCAoU0VUX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tNjhrL3J0ZW1zZWxmLmggKElOSVRfU0VDVElPTl9BU01fT1AsCglGSU5JX1NFQ1RJT05fQVNNX09QLCBFSF9GUkFNRV9TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tNjhrL3Nncy5oIChCWVRFX0FTTV9PUCwgV09SRF9BU01fT1AsIExPTkdfQVNNX09QLAoJU1BBQ0VfQVNNX09QLCBBTElHTl9BU01fT1AsIEdMT0JBTF9BU01fT1AsIFNXQkVHX0FTTV9PUCwKCVNFVF9BU01fT1AsIFVOQUxJR05FRF9TSE9SVF9BU01fT1AsIFVOQUxJR05FRF9JTlRfQVNNX09QKTogSGVyZSwKCWJ1dCB1c2UgdHJhaWxpbmcgc3BhY2VzLgoJKiBjb25maWcvbTY4ay90b3dlci1hcy5oIChURVhUX1NFQ1RJT05fQVNNX09QLAoJREFUQV9TRUNUSU9OX0FTTV9PUCwgR0xPQkFMX0FTTV9PUCwgSU5JVF9TRUNUSU9OX0FTTV9PUCwKCUZJTklfU0VDVElPTl9BU01fT1AsIENPTlNUX1NFQ1RJT05fQVNNX09QLCBCU1NfU0VDVElPTl9BU01fT1ApOgoJSGVyZS4KCSogY29uZmlnL204OGsvZGd1eC5oIChGSU5JX1NFQ1RJT05fQVNNX09QLCBJTklUX1NFQ1RJT05fQVNNX09QLAoJQ1RPUlNfU0VDVElPTl9BU01fT1AsIERUT1JTX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL204OGsvbTg4ay5oIChURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QLAoJQ09OU1RfU0VDVElPTl9BU01fT1AsIFRERVNDX1NFQ1RJT05fQVNNX09QLCBDVE9SU19TRUNUSU9OX0FTTV9PUCwKCURUT1JTX1NFQ1RJT05fQVNNX09QLCBJTklUX1NFQ1RJT05fQVNNX09QLCBGSU5JX1NFQ1RJT05fQVNNX09QLAoJSURFTlRfQVNNX09QLCBGSUxFX0FTTV9PUCwgU0VDVElPTl9BU01fT1AsIFNFVF9BU01fT1AsCglHTE9CQUxfQVNNX09QLCBBTElHTl9BU01fT1AsIFNLSVBfQVNNX09QLCBDT01NT05fQVNNX09QLAoJQlNTX0FTTV9PUCwgRkxPQVRfQVNNX09QLCBET1VCTEVfQVNNX09QLCBJTlRfQVNNX09QLCBTSE9SVF9BU01fT1AsCglDSEFSX0FTTV9PUCwgQVNDSUlfREFUQV9BU01fT1AsIFNCU1NfQVNNX09QLCBTQ09NTV9BU01fT1AsCglTREFUQV9TRUNUSU9OX0FTTV9PUCwgVFlQRV9BU01fT1AsIFNJWkVfQVNNX09QLCBJTlRFUk5BTF9BU01fT1AsCglWRVJTSU9OX0FTTV9PUCwgVU5BTElHTkVEX1NIT1JUX0FTTV9PUCwgVU5BTElHTkVEX0lOVF9BU01fT1AsCglQVVNIU0VDVElPTl9BU01fT1AsIFBPUFNFQ1RJT05fQVNNX09QLCBSRVFVSVJFU184ODExMF9BU01fT1AsCglBU01fQllURV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tODhrL29wZW5ic2QuaCAoU0VUX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tODhrL3N5c3Y0LmggKElOSVRfU0VDVElPTl9BU01fT1AsIEZJTklfU0VDVElPTl9BU01fT1AsCglDVE9SU19TRUNUSU9OX0FTTV9PUCwgRFRPUlNfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbWNvcmUvbWNvcmUtZWxmLmggKFVOQUxJR05FRF9JTlRfQVNNX09QLAoJVU5BTElHTkVEX1NIT1JUX0FTTV9PUCwgQ1RPUlNfU0VDVElPTl9BU01fT1AsCglEVE9SU19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9tY29yZS9tY29yZS1wZS5oIChDVE9SU19TRUNUSU9OX0FTTV9PUCwKCURUT1JTX1NFQ1RJT05fQVNNX09QLCBJTlRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL21pcHMvZWxmLmggKFRZUEVfQVNNX09QLCBTSVpFX0FTTV9PUCwKCUJTU19TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9taXBzL2VsZjY0LmggKFRZUEVfQVNNX09QLCBTSVpFX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9taXBzL2lyaXM1LmggKEFCSUNBTExTX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9taXBzL2lyaXM2LmggKFRZUEVfQVNNX09QLCBTSVpFX0FTTV9PUCwKCVBPUFNFQ1RJT05fQVNNX09QLCBCU1NfU0VDVElPTl9BU01fT1AsIENPTlNUX1NFQ1RJT05fQVNNX09QXzMyLAoJQ09OU1RfU0VDVElPTl9BU01fT1BfNjQsIENUT1JTX1NFQ1RJT05fQVNNX09QLAoJRFRPUlNfU0VDVElPTl9BU01fT1AsIEVIX0ZSQU1FX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChBQklDQUxMU19BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbWlwcy9taXBzLmggKEFTTV9TVEFCU19PUCwgQVNNX1NUQUJOX09QLCBBU01fU1RBQkRfT1ApOgoJSGVyZS4KCSogY29uZmlnL21pcHMvbmV0YnNkLmggKFRZUEVfQVNNX09QLCBTSVpFX0FTTV9PUCwgV0VBS19BU01fT1ApOgoJSGVyZS4KCSogY29uZmlnL21pcHMvb3Nmcm9zZS5oIChTRVRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL21pcHMvc25pLXN2cjQuaCAoQUJJQ0FMTFNfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL25zMzJrL2VuY29yZS5oIChTSEFSRURfU0VDVElPTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvbnMzMmsvbWVybGluLmggKFNIQVJFRF9TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9uczMyay9uczMyay5oIChURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QKToKCUhlcmUuCgkqIGNvbmZpZy9uczMyay9zZXF1ZW50LmggKFNIQVJFRF9TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9uczMyay90ZWs2MDAwLmggKFNIQVJFRF9TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9wYS9wYS02NC5oIChJTlRfQVNNX09QLCBUWVBFX0FTTV9PUCwgU0laRV9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvcGEvcGEuaCAoQVNNX1NUQUJTX09QLCBBU01fU1RBQk5fT1ApOiBIZXJlLgoJKiBjb25maWcvcGovcGouaCAoU0VUX0FTTV9PUCwgQlNTX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL3B5ci9weXIuaCAoVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCk6CglIZXJlLgoJKiBjb25maWcvcm9tcC9yb21wLmggKFRFWFRfU0VDVElPTl9BU01fT1AsIERBVEFfU0VDVElPTl9BU01fT1ApOgoJSGVyZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoU0VUX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9yczYwMDAvc29sMi5oIChBU01fU1RBQk5fT1ApOiBIZXJlLgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKFNLSVBfQVNNX09QLCBMT0NBTF9BU01fT1AsIExDT01NX0FTTV9PUCk6CglIZXJlLgoJKiBjb25maWcvc2gvc2guaCAoU0VUX0FTTV9PUCwgQlNTX1NFQ1RJT05fQVNNX09QLAoJVU5BTElHTkVEX1NIT1JUX0FTTV9PUCwgVU5BTElHTkVEX0lOVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvc3BhcmMvbGludXguaCAoQ09NTU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9zcGFyYy9saW51eDY0LmggKENPTU1PTl9BU01fT1AsCglVTkFMSUdORURfRE9VQkxFX0lOVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvc3BhcmMvbGl0ZWNvZmYuaCAoQlNTX1NFQ1RJT05fQVNNX09QLAoJQ1RPUlNfU0VDVElPTl9BU01fT1AsIERUT1JTX1NFQ1RJT05fQVNNX09QLCBJTlRfQVNNX09QKTogSGVyZS4KCSogY29uZmlnL3NwYXJjL2x5bnguaCAoQlNTX1NFQ1RJT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL3NwYXJjL3BiZC5oIChBU01fSU5UX09QKTogSGVyZS4KCSogY29uZmlnL3NwYXJjL3NwNjQtZWxmLmggKFVOQUxJR05FRF9MT05HTE9OR19BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoQVNNX0JZVEVfT1AsIFRFWFRfU0VDVElPTl9BU01fT1AsCglEQVRBX1NFQ1RJT05fQVNNX09QLCBJREVOVF9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvc3BhcmMvc3VuNGdhcy5oIChVTkFMSUdORURfRE9VQkxFX0lOVF9BU01fT1AsCglVTkFMSUdORURfSU5UX0FTTV9PUCwgVU5BTElHTkVEX1NIT1JUX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9zcGFyYy9zeXN2NC5oIChTVFJJTkdfQVNNX09QLCBDT01NT05fQVNNX09QLCBTS0lQX0FTTV9PUCwKCVVOQUxJR05FRF9ET1VCTEVfSU5UX0FTTV9PUCwgVU5BTElHTkVEX0lOVF9BU01fT1AsCglVTkFMSUdORURfU0hPUlRfQVNNX09QLCBQVVNIU0VDVElPTl9BU01fT1AsIFBPUFNFQ1RJT05fQVNNX09QLAoJVEVYVF9TRUNUSU9OX0FTTV9PUCwgREFUQV9TRUNUSU9OX0FTTV9PUCwgQlNTX1NFQ1RJT05fQVNNX09QLAoJQ09OU1RfU0VDVElPTl9BU01fT1AsIElOSVRfU0VDVElPTl9BU01fT1AsIEZJTklfU0VDVElPTl9BU01fT1AsCglDVE9SU19TRUNUSU9OX0FTTV9PUCwgRFRPUlNfU0VDVElPTl9BU01fT1AsCglFSF9GUkFNRV9TRUNUSU9OX0FTTV9PUCk6IEhlcmUuCgkqIGNvbmZpZy9zcGFyYy92eHNpbS5oIChDT01NT05fQVNNX09QKTogSGVyZS4KCSogY29uZmlnL3NwdXIvc3B1ci5oIChURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QKToKCUhlcmUuCgkqIGNvbmZpZy90YWhvZS90YWhvZS5oIChURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QKToKCUhlcmUuCgkqIGNvbmZpZy92ODUwL3Y4NTAuaCAoU0NPTU1PTl9BU01fT1AsIFpDT01NT05fQVNNX09QLAoJVENPTU1PTl9BU01fT1ApOiBIZXJlLgoJKiBjb25maWcvdmF4L3ZheC5oIChURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QKToKCUhlcmUuCgkqIGNvbmZpZy93ZTMyay93ZTMyay5oIChURVhUX1NFQ1RJT05fQVNNX09QLCBEQVRBX1NFQ1RJT05fQVNNX09QLAoJQVNNX0JZVEVfT1ApOiBIZXJlLgoKMjAwMC0wOS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGV4cG1lZC5jIChzdG9yZV9iaXRfZmllbGQpOiBBZGp1c3QgbGFzdCBjaGFuZ2UgdG8gbm90IGNvbnNpZGVyCglhbnkgd29yZC1zaXplZCBmaWVsZCBuYXR1cmFsbHkgYWxpZ25lZC4KCjIwMDAtMDktMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZW1pdF9jb25kaXRpb25hbF9icmFuY2gpOiBIYW5kbGUKCVRGbW9kZSB1bm9yZGVyZWQgY29tcGFyZXMgcHJvcGVybHkuICBSZXZhbGlkYXRlIGludGVnZXIgY29tcGFyZQoJb3BlcmFuZHMuCgkoYWxwaGFfZW1pdF9zZXRjYyk6IE5ldy4KCShhbHBoYV9lbWl0X2NvbmRpdGlvbmFsX21vdmUpOiBSZXZhbGlkYXRlIGludGVnZXIgY29tcGFyZSBvcGVyYW5kcy4KCSogY29uZmlnL2FscGhhL2FscGhhLXByb3Rvcy5oOiBVcGRhdGUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5tZCAoY21wZGkpOiBBbGxvdyBnZW5lcmFsIG9wZXJhbmRzLgoJKHNuZSk6IFVzZSBhbHBoYV9lbWl0X3NldGNjLgoJKHNlcSwgc2x0LCBzbGUsIHNndCwgc2dlLCBzbHR1LCBzbGV1LCBzZ3R1LCBzZ2V1KTogTGlrZXdpc2UuCgkoc3Vub3JkZXJlZCwgc29yZGVyZWQpOiBOZXcuCgoyMDAwLTA5LTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaDogVXBkYXRlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGNhbGxfbXVsdGlwbGVfdmFsdWVzX29wZXJhdGlvbik6IFJlbW92ZS4KCShpYTY0X2V4cGFuZF9jYWxsKTogTmV3LgoJKGlhNjRfZXhwYW5kX3Byb2xvZ3VlKTogRW1pdCBhbiBhbGxvYyBpZiB3ZSBuZWVkIGV4dHJhIGlucHV0CglyZWdpc3RlcnMuCgkoaWE2NF9leHBhbmRfZXBpbG9ndWUpOiBOZXcgYXJnIHNpYmNhbGxfcDsgZG9uJ3QgZW1pdCB0aGUgcmV0dXJuCglpbnN0cnVjdGlvbiBpZiB0cnVlLgoJKHN0cnVjdCByZWdfZmxhZ3MpOiBBZGQgaXNfc2liY2FsbC4KCShydHhfbmVlZHNfYmFycmllcik6IEEgc2liY2FsbCBkb2VzIG5vdCB1c2UgQ0ZNIGV0IGFsLiAgSWdub3JlIFVTRXMuCgkoZW1pdF9pbnNuX2dyb3VwX2JhcnJpZXJzKTogU2V0IGZsYWdzLmlzX3NpYmNhbGwuICBSZW1vdmUgaGFja3MKCWZvciBDT0RFX0ZPUl9ncl9zcGlsbF9pbnRlcm5hbC9DT0RFX0ZPUl9ncl9yZXN0b3JlX2ludGVybmFsLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoY2FsbCk6IFVzZSBpYTY0X2V4cGFuZF9jYWxsLgoJKGNhbGxfdmFsdWUpOiBMaWtld2lzZS4KCShzaWJjYWxsLCBzaWJjYWxsX3ZhbHVlKTogTmV3LgoJKGNhbGwgcGF0dGVybnMpOiBSZW1vdmUgZXh0cmEgZXhwYW5kZXJzOyB0aWR5LgoJKHNpYmNhbGxfZXBpbG9ndWUpOiBOZXcuCgkoc2V0X2JzcCk6IFJlbW92ZSB0aGUgZXh0cmEgVVNFLiAgUHV0IHRoZSBvcGVyYW5kIGluc2lkZSB0aGUgVU5TUEVDLgoKMjAwMC0wOS0yNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVtaXQtcnRsLmMgKGdlbl9sb3dwYXJ0X2NvbW1vbik6IFVzZSB0cnVuY19pbnRfZm9yX21vZGUuCgoJKiBzaWJjYWxsLmMgKHNraXBfcGljX3Jlc3RvcmUpOiBOZXcuCgkoaWRlbnRpZnlfY2FsbF9yZXR1cm5fdmFsdWUpOiBVc2UgaXQuCgoyMDAwLTA5LTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy10cmVlLnRleGk6IE1vdmVkIGhlcmUgZnJvbSBjcC9pci50ZXhpLiAgRG9jdW1lbnRlZCBuZXN0ZWQKCWZ1bmN0aW9ucy4gIEdlbmVyYWxpemUgdG8gaGFuZGxlIGJvdGggQyBhbmQgQysrLgoJKiBNYWtlZmlsZS5pbiAoYy10cmVlLmluZm8pOiBOZXcgdGFyZ2V0LgoJKGluZm8pOiBBZGQgYy10cmVlLmluZm8uCgpTdW4gU2VwIDI0IDA5OjE1OjQ4IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKHN0b3JlX2ZpZWxkKTogSWYgQklUU0laRSBpcyBuZWdhdGl2ZSwgdXNlIHNpemUgb2YgdHlwZS4KCShleHBhbmRfZXhwciwgY2FzZSBDT01QT05FTlRfRVhQUik6IExpa2V3aXNlLgoKU3VuIDI0LVNlcC0yMDAwIDExOjQwOjIzIEJTVCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYzogVXBkYXRlIFRPRE8gY29tbWVudC4KCSogY3BwbGliLmMgKGRvX2Vycm9yLCBkb193YXJuaW5nKTogTWVyZ2UgY29tbW9uIGNvZGUgb2YKCWRvX2Vycm9yIGFuZCBkb193YXJuaW5nCWludG8gZG9fZGlhZ25vc3RpYy4gIFVzZSBpdC4KCShkb19kaWFnbm9zdGljKTogTmV3IGZ1bmN0aW9uLgoJKiBjcHBsaWIuaDogRml4IGNvbW1lbnQgdHlwby4KCjIwMDAtMDktMjQgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKGNoZWNrX2Zvcm1hdF9pbmZvKTogV2FybiBmb3IgYSB3aWRlIGNoYXJhY3RlciBzdHJpbmcKCXVzZWQgYXMgYSBub24td2lkZSBmb3JtYXQgYXJndW1lbnQuCgoyMDAwLTA5LTI0ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0xMQUJTKTogQWRkLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbik6IEFsc28gYWJvcnQgb24gQlVJTFRfSU5fTExBQlMuCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX25vZGVzX2J1aWx0aW5zKTogQ3JlYXRlIGJ1aWx0aW4gZnVuY3Rpb25zCglfX2J1aWx0aW5fbGxhYnMsIGFuZCBwbGFpbiBsbGFicyB1bmxlc3Mgbm9fbm9uYW5zaV9idWlsdGlucwoJb3V0c2lkZSBvZiBDOTkgbW9kZS4KCShleHBhbmRfdHJlZV9idWlsdGluKTogSGFuZGxlIEJVSUxUX0lOX0xMQUJTLgoKU2F0IDIzLVNlcC0yMDAwIDIyOjM5OjE4IEJTVCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBoYXNoLmggKENQUF9SRVNFUlZFLCBDUFBfUFVUU19RLCBDUFBfUFVUUywgQ1BQX1BVVENfUSwKCUNQUF9QVVRDLCBEVU1NWV9UT0tFTiwgTk9fRFVNTVlfVE9LRU4pOiBEZWxldGUuCgkqIGNwcGxleC5jIChfY3BwX2V4cGFuZF90b2tlbl9zcGFjZSwgX2NwcF9pbml0X3Rva2xpc3QsCglfY3BwX2ZyZWVfdG9rbGlzdCk6IE5vIG5lZWQgdG8gd29ycnkgYWJvdXQgZXh0cmEgZHVtbXkgdG9rZW4KCWF0IHRoZSBzdGFydCBvZiB0b2tlbiBsaXN0cyBhbnkgbW9yZS4KCSh0cmlncmFwaF9vayk6IE9ubHkgd2FybiBvdXRzaWRlIGNvbW1lbnRzLgoJKHNraXBfYmxvY2tfY29tbWVudCk6IFNldCBhbmQgY2xlYXIgbGV4aW5nX2NvbW1lbnQuCgkoc2tpcF9saW5lX2NvbW1lbnQpOiBUYWtlIGEgY3BwX3JlYWRlciBub3QgY3BwX2J1ZmZlci4KCVNldCBhbmQgY2xlYXIgbGV4aW5nX2NvbW1lbnQuCgkocGFyc2VfbnVtYmVyKTogSGFuZGxlIGxlYWRpbmcgJy4nIGluZGljYXRlZCBieSBwZmlsZS0+c2Vlbl9kb3QuCgkoY2hlY2tfbG9uZ190b2tlbik6IERlbGV0ZS4KCShsZXhfcGVyY2VudCwgbGV4X2RvdCk6IE5ldyBzdWJyb3V0aW5lcyBvZiBsZXhfdG9rZW4gdG8KCWhhbmRsZSBsZXhpbmcgb2YgJy4nIGFuZCAnJScgd2l0aG91dCBsb29rYmFjay4KCShsZXhfdG9rZW4pOiBVc2UgbGV4X2RvdCBhbmQgbGV4X3BlcmNlbnQuCgkobGV4X2xpbmUpOiBEb24ndCBjaGVjayBmb3IgTElTVF9PRkZTRVQuCgkoX2NwcF9pbml0X2lucHV0X2J1ZmZlcik6IFVwZGF0ZSBmb3IgbmV3IF9jcHBfaW5pdF90b2tsaXN0LgoJKiBjcHBsaWIuYyAoX2NwcF9wYXJzZV9hc3NlcnRpb24pOiBTaW1pbGFybHkuCgkoY3BwX3B1c2hfYnVmZmVyKTogSW5pdGlhbGl6ZSBleHRyYV9jaGFyLgoJKiBjcHBsaWIuaCAoTElTVF9PRkZTRVQpOiBEZWxldGUuCgkoc3RydWN0IGNwcF9idWZmZXIpOiBOZXcgbWVtYmVyIGV4dHJhX2NoYXIuCgkoc3RydWN0IGxleGVyX3N0YXRlKTogTmV3IG1lbWJlcnMgbGV4aW5nX2NvbW1lbnQgYW5kIHNlZW5fZG90LgoKMjAwMC0wOS0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBjb25maWcvcnM2MDAwL3gtYWl4NDEgKENMSUIpOiBEZWZpbmUgaGVyZS4KCSogY29uZmlnL3JzNjAwMC90LWFpeDQzOiBOb3QgaGVyZS4KCSogY29uZmlnL3JzNjAwMC90LWFpeDQxOiBPciBoZXJlLiAgUmVtb3ZlLgoJKiBjb25maWd1cmUuaW46IERvbid0IHVzZSBpdC4KCjIwMDAtMDktMjIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmluOiBBZGQgdGVzdCBmb3IgSEFWRV9MRF9EV0FSRl9MSU5LT05DRS4KCSogdG9wbGV2LmM6IFVzZSBpdCB0byBpbml0aWFsaXplIGZsYWdfZWxpbWluYXRlX2R3YXJmMmR1cHMuCgkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCgkqIGNvbmZpZ3VyZS5pbjogRml4IGNoZWNrcyBmb3IgYXNzZW1ibGVyIGZlYXR1cmVzIHdoZW4gdXNpbmcgYQoJb25lLXRyZWUgYXNzZW1ibGVyIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBidWlsdC4KCUZpeCAtLWRpc2FibGUtdGhyZWFkcy4KCjIwMDAtMDktMTkgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IEFsbG93ICMgaW4gY29uc3RyYWludHMuCgoyMDAwLTA5LTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGMtbGV4LmMgKHNraXBfd2hpdGVfc3BhY2UpOiBKdXN0IHRyZWF0IENScyBhcyBob3Jpem9udGFsIHdoaXRlc3BhY2UuCgoJKiBkYnhvdXQuYyAoZGJ4b3V0X3N5bWJvbF9uYW1lKTogSnVzdCB1c2UgREVDTF9OQU1FIGZvcgoJZnVuY3Rpb24tbG9jYWwgbmFtZXMuCgoyMDAwLTA5LTIyICBCcmFkIEx1Y2llciA8bHVjaWVyQG1hdGgucHVyZHVlLmVkdT4KCSAgICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdG9wbGV2LmMgKHdhcm5fZGlzYWJsZWRfb3B0aW1pemF0aW9uKTogRGVjbGFyZSBuZXcgd2FybmluZyBmbGFnLgoJKiBmbGFncy5oICh3YXJuX2Rpc2FibGVkX29wdGltaXphdGlvbik6IEFkZCBpdCBoZXJlLgoJKiBnY3NlLmMgKGdjc2VfbWFpbik6IEFkZCB3YXJuaW5nIHdoZW4gZGlzYWJsZWQuCgkqIGludm9rZS50ZXhpOiBEb2N1bWVudCAtV2Rpc2FibGVkLW9wdGltaXphdGlvbi4KCjIwMDAtMDktMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKGFkZF9jb25zdF92YWx1ZV9hdHRyaWJ1dGUpOiBNdWx0aXBseSBieSBsZW5ndGgsIG5vdCA0LgoKCSogZHdhcmYyb3V0LmMgKHRyZWVfYWRkX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZSk6IE5ldyBmbi4KCShnZW5fdmFyaWFibGVfZGllKTogQ2FsbCBpdCBmb3Igbm9uLWRlZmluaXRpb25zLgoKCSogZHdhcmYyb3V0LmMgKGRpZV9zdHJ1Y3QpOiBBZGQgZGllX21hcmsgZmllbGQuCgkobWFya19kaWVzLCB1bm1hcmtfZGllcyk6IE5ldyBmbnMuCgkoY2xlYXJfZGllX3NpemVzKTogUmVtb3ZlLgoJKHByaW50X2RpZSk6IENoZWNrIGRpZV9zeW1ib2wgcmF0aGVyIHRoYW4gZGllX29mZnNldC4KCShidWlsZF9hYmJyZXZfdGFibGUsIG91dHB1dF9wdWJuYW1lcywgb3V0cHV0X2FyYW5nZXMpOiBDaGVjawoJZGllX21hcmsgcmF0aGVyIHRoYW4gZGllX29mZnNldC4KCShvdXRwdXRfY29tcF91bml0KTogTW92ZSBjYWxjX2RpZV9zaXplcyBhZnRlciBidWlsZF9hYmJyZXZfdGFibGUuCglDYWxsIG1hcmtfZGllcy4KClRodSAyMS1TZXAtMjAwMCAxODoxOTowNSBCU1QgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwZmlsZXMuYyAobG9va3VwX2luY2x1ZGVfZmlsZSk6IFJlbmFtZSB0byBvcGVuX2ZpbGUuCglBbHdheXMgY3JlYXRlIGEgc3BsYXkgdHJlZSB2YWx1ZSwgZXZlbiBvbiBzeXNjYWxsIGZhaWx1cmVzLgoJTmVnYXRpdmUgZW50cmllcyBpbmRpY2F0ZWQgYnkgZmQgPT0gLTIuCglSZS1vcGVuIGZpbGVzIGNsb3NlZCBpbiB0aGUgbWVhbnRpbWUuCgkoX2NwcF9mYWtlX2luY2x1ZGUpOiBDcmVhdGUgYSBuZWdhdGl2ZSBzcGxheSB0cmVlIGVudHJ5LgoJKGZpbmRfaW5jbHVkZV9maWxlLCBjcHBfcmVhZF9maWxlKTogVXBkYXRlIGZvciBmdW5jdGlvbiBuYW1lCgljaGFuZ2UuCgkqIGdjYy5nZC9jcHAvbWk0LmM6IFRlc3RjYXNlLgoKMjAwMC0wOS0yMSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vdC1hcm0tZWxmIChNVUxUSUxJQl9ESVJOQU1FUyk6IEVuYWJsZSBtdWx0aWxpYnMgZm9yCglBUk0gYW5kIFRIVU1CIG1vZGVzLgoKCSogY29uZmlnL21jb3JlL21jb3JlLmM6IEZpeCBjb21waWxlIHRpbWUgd2FybmluZ3MuCgkqIGNvbmZpZy9tY29yZS9tY29yZS1wcm90b3MuaDogRml4IGNvbXBpbGUgdGltZSB3YXJuaW5ncy4KCjIwMDAtMDktMjAgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogY29uZmlndXJlLmluOiBDb3JyZWN0IHRlc3Qgb2YgZ2NjX2N2X2dsaWJjLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgkqIGNvbmZpZy5pbjogUmVidWlsdC4KCjIwMDAtMDktMjAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX2ZwdXRzKTogQWxzbyBleHBhbmQgd2hlbiBsZW5ndGghPTEuCgkoZXhwYW5kX2J1aWx0aW4pOiBIYW5kbGUgQlVJTFRfSU5fRldSSVRFLgoKCSogYnVpbHRpbnMuZGVmIChCVUlMVF9JTl9GV1JJVEUpOiBOZXcgZW50cnkuCgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBEZWNsYXJlIF9fYnVpbHRpbl9md3JpdGUuCgpXZWQgU2VwIDIwIDE1OjM5OjE0IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBnY2MuYyAobW9kaWZ5X3RhcmdldCk6IE5ldyB2YXJpYWJsZSBhbmQgc3RydWN0LgoJKHByb2Nlc3NfY29tbWFuZCk6IEhhbmRsZSBNT0RJRllfVEFSR0VUX05BTUUuCgkqIHRtLnRleGkgKE1PRElGWV9UQVJHRVRfTkFNRSk6IEFkZCBkb2N1bWVudGF0aW9uIGZvciBuZXcgbWFjcm8uCgkqIGNvbmZpZy9wYS9wYS5oIChNT0RJRllfVEFSR0VUX05BTUUpOiBOZXcgbWFjcm8uCgoJKiBjLWRlY2wuYyAoZmluaXNoX2RlY2wpOiBBZGQgZWxzZSdzIHRvIGF2b2lkIHJlZmVyZW5jaW5nCglUWVBFX0RPTUFJTiBvZiBhbiBFUlJPUl9NQVJLLgoKV2VkIFNlcCAyMCAyMTo0NDozMSAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuYyAoYWRqdXN0X2luc25fbGVuZ3RoKTogQWRqdXN0IGxlbmd0aHMgb2YKCWByZWxvYWRfaW4qJyBpbnNucy4KCjIwMDAtMDktMTkgIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPgoKCSogY29uZmlnL2F2ci9hdnIubWQgKG5lZ2hpMik6IEFkZCBhbHRlcm5hdGl2ZSBmb3IgaW5wdXQgYW5kIG91dHB1dAoJb3BlcmFuZHMgaW4gZGlmZmVyZW50IHJlZ2lzdGVycywgYXMgaW4gbmVnc2kyLgoJKCpuZWdzaTIpOiBSZW1vdmUgJyonIGZyb20gdGhlIG5hbWUuICBVc2UgIm1vdnciIGlmIGF2YWlsYWJsZS4KCjIwMDAtMDktMTkgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2NydGJlZ2luLmFzbSAoX19kc29faGFuZGxlKTogRGVsZXRlIHVzZSBvZgoJSEFWRV9HQVNfSElEREVOIG1hY3JvLgoKVHVlIDE5LVNlcC0yMDAwIDIyOjM4OjU3IEJTVCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAobGV4X2xpbmUpOiBEcm9wIHRoZSBFT0YgdG9rZW4gZm9yIHVua25vd24KCWRpcmVjdGl2ZXMgaW4gYXNzZW1ibGVyLgoKMjAwMC0wOS0xOSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlndXJlLmluOiBBbGxvdyBlbmFibGVfdGhyZWFkc19mbGFnIHZhbHVlIG9mICJhaXgiLiAgRGVmaW5lCgl0aHJlYWRfZmlsZSBhcyAiYWl4IiBmb3IgQUlYIDQuMyBhbmQgYWJvdmUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoJKiBndGhyLWFpeC5oOiBOZXcgZmlsZS4KCgkqIHJzNjAwMC90LWFpeDQzOiBSZXBsYWNlIHNvZnQtZmxvYXQgbXVsdGlsaWIgd2l0aCBwdGhyZWFkLgoJUmVtb3ZlIDQwMyBwcm9jZXNzb3IgbXVsdGlsaWIgbWF0Y2guICBGaXggcmlvczIgcHJvY2Vzc29yIG11bHRpbGliCgltYXRjaC4KCgkqIHJzNjAwMC9haXguaCAoQVNNX0RFQ0xBUkVfRlVOQ1RJT05fTkFNRSk6IFVzZSBmdW5jdGlvbl9zZWN0aW9uCgl0byByZXR1cm4gdG8gYXBwcm9wcmlhdGUgY3NlY3QuCgoyMDAwLTA5LTE5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBidWlsdGlucy5jIChpc192YWxpZF9wcmludGZfYXJnbGlzdCwgZXhwYW5kX2J1aWx0aW5fcHJpbnRmKTogTmV3CglmdW5jdGlvbnMuCgkoZXhwYW5kX2J1aWx0aW5fZnB1dHMpOiBTZXQgYHRhcmdldCcgcGFyYW1ldGVyIGZvciBgZXhwYW5kX2V4cHInLgoJKGV4cGFuZF9idWlsdGluKTogSGFuZGxlIEJVSUxUX0lOX1BVVENIQVIsIEJVSUxUX0lOX1BVVFMgYW5kCglCVUlMVF9JTl9QUklOVEYuCgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX1BVVENIQVIsIEJVSUxUX0lOX1BVVFMsIEJVSUxUX0lOX1BSSU5URik6CglOZXcgZW50cmllcy4KCgkqIGMtY29tbW9uLmMgKGluaXRfZnVuY3Rpb25fZm9ybWF0X2luZm8pOiBIYW5kbGUgX19idWlsdGluX3ByaW50Zi4KCVNldCBgY2hlY2tfZnVuY3Rpb25fZm9ybWF0X3B0cicuCgkoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogU2V0IGBwdXRzX2Z0eXBlJyBhbmQKCWBwcmludGZfZnR5cGUnLiAgRGVjbGFyZSBfX2J1aWx0aW5fcHV0Y2hhciwgX19idWlsdGluX3B1dHMsCglfX2J1aWx0aW5fcHJpbnRmIGFuZCBwcmludGYuCgoJKiB0cmVlLmMsIHRyZWUuaCAoY2hlY2tfZnVuY3Rpb25fZm9ybWF0X3B0cik6IERlY2xhcmUuCgpUdWUgMTktU2VwLTIwMDAgMTg6MjY6NTcgQlNUICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGZpbGVzLmMgKHJlYWRfaW5jbHVkZV9maWxlKTogVGFrZSBubyBzcGVjaWFsIGFjdGlvbiBmb3IKCXplcm8tbGVuZ3RoIGZpbGVzLgoKMjAwMC0wOS0xOSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBmaW5hbC5jIChpbnNuX2N1cnJlbnRfcmVmZXJlbmNlX2FkZHJlc3MpOiBVc2UgSU5TTl9TSFVJRCBvZiBzZXEKCXJhdGhlciB0aGFuIHRoYXQgb2YgYnJhbmNoLgoJKHNob3J0ZW5fYnJhbmNoZXMpOiBEb24ndCBpbmNyZW1lbnQgaW5zbl9jdXJyZW50X2FkZHJlc3MgdHdpY2UuCgoJVW5kbyBtb3N0IG9mIHRoZSBXZWQgSmFuIDI3IDIzOjM5OjUzIDE5OTkgcGF0Y2g6CgkqIGxvb3AuaCAoc3RydWN0IGluZHVjdGlvbik6IERlbGV0ZSBtZW1iZXJzIGRlcml2ZWQsIGl4IGFuZCBsYXN0X3VzZS4KCShzdHJ1Y3QgbG9vcF9pdnMpOiBEZWxldGUgbWVtYmVycyBmaXJzdF9pbmNyZW1lbnRfZ2l2IGFuZAoJbGFzdF9pbmNyZW1lbnRfZ2l2LgoJKiBsb29wLmMgKHZlcmlmeV9kb21pbmF0b3IsIGZpbmRfbGlmZV9lbmQsIGNtcF9yZWNvbWJpbmVfZ2l2c19zdGF0cywKCXJlY29tYmluZV9naXZzKTogRGVsZXRlIGZ1bmN0aW9ucy4KCShmaW5kX2FuZF92ZXJpZnlfbG9vcHMpOiBEb24ndCBpbml0aWFsaXplIGNvbnRfZG9taW5hdG9yLgoJKHN0cmVuZ3RoX3JlZHVjZSk6IExvc2UgY29kZSB0byB0cnkgdG8gZmluZCBiaXZzIHRoYXQgY2FuIGJlCglleHByZXNzZWQgYXMgZ2l2cyBvZiBhbm90aGVyIGJpdiwgYW5kIHRvIGNvbnZlcnQgYml2IGluY3JlbWVudHMKCWludG8gZ2l2cy4KCUxvc2UgbG9vcF9zY2FuX3N0YXJ0IHZhcmlhYmxlLCBhbHdheXMgdXNlIGxvb3AtPnNjYW5fc3RhcnQuCglEb24ndCBjYWxsIHJlY29tYmluZV9naXZzLiAgRG9uJ3QgaGFuZGxlIGRlcml2ZWQgZ2l2cy4KCShyZWNvcmRfZ2l2KTogRG9uJ3QgaW5pdGlhbGl6ZSBkZXJpdmVkIGFuZCBsYXN0X3VzZSBmaWVsZHMuCgkoYml2X2VsaW1pbmlhdGlvbl9naXZfaGFzXzBfb2Zmc2V0KTogTG9zZSBjb2RlIHRvIGhhbmRsZSBkZXJpdmVkCglnaXZzLgoJKiB1bnJvbGwuYyAoZGVyaXZlZF9yZWdzKTogRGVsZXRlIHN0YXRpYyB2YXJpYWJsZS4KCSh1bnJvbGxfbG9vcCk6IERvbid0IGluaXRpYWxpemUgaXQuCgkoY29weV9sb29wX2JvZHkpOiBMb3NlIGNvZGUgdG8gaGFuZGxlIGRlcml2ZWQgZ2l2cy4KCShmaW5kX3NwbGl0dGFibGVfZ2l2cyk6IERvbid0IGNoZWNrIGZvciBnaXZzIG1hZGUgZnJvbSBiaXYKCWluY3JlbWVudHMuCglEb24ndCBzZXQgZGVyaXZlZF9yZWdzLgoKCUZpeCBtaXNhcHBsaWVkIGVhcmxpZXIgcGF0Y2g6CgkqIGNvbmZpZy9zaC9zaC5tZCAoZmxvYXRzaXNmX2llKTogUmVlbmFibGUuICBSZW1vdmUgZXhwbGljaXQgcmVmZXJlbmNlCgl0byBmcHVsLgoJKGZsb2F0c2lzZjIpOiBHZW5lcmF0ZSBmbG9hdHNpc2ZfaWUgYnkgZGVmYXVsdC4KCShmbG9hdHNpc2ZfaTQpOiBDb25kaXRpb25hbCBvbiBUQVJHRVRfU0g0LgoKCShmbG9hdHNpc2YyLCBmbG9hdHNpZGYyLCBleHRlbmRzZmRmMik6IEFsc28gdXNlIHJlZ19ub19zdWJyZWdfb3BlcmFuZAoJcHJlZGljYXRlIGZvciB0aGUgZXhwYW5kZXJzLgoKMjAwMC0wOS0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoQ1BQX0NQVV9TUEVDKTogRGVmaW5lIGk1ODYgYW5kIGk2ODYgc3ltYm9scwoJaW4gYWRkaXRpb24gdG8gcGVudGl1bSBhbmQgcGVudGl1bXBybyBzeW1ib2xzLgoJKENQUF9DUFVfREVGQVVMVF9TUEVDKTogTGlrZXdpc2UuCgoJKiBjLXR5cGVjay5jIChjX2V4cGFuZF9hc21fb3BlcmFuZHMpOiBSZXN0b3JlIHRoZSBvdXRwdXQgdHJlZQoJYWZ0ZXIgZXhwYW5kaW5nLgoKCSogc3RtdC5jIChleHBhbmRfZXhwcl9zdG10KTogT25seSBjYWxsIHdhcm5faWZfdW51c2VkX3ZhbHVlCglpZiB0aGUgdHJlZSBoYXMgc2lkZSBlZmZlY3RzLgoJKHdhcm5faWZfdW51c2VkX3ZhbHVlKTogRG8gbm90IHdhcm4gYWJvdXQgdm9pZCBjb25zdHJ1Y3RzLgoKCSogYy1kZWNsLmMgKHBvcGxldmVsKTogSW52b2tlIHdhcm5fYWJvdXRfdW51c2VkX3ZhcmlhYmxlcy4KCgkqIHVucm9sbC5jIChjb3B5X2xvb3BfYm9keSk6IFVwZGF0ZSBMQUJFTF9OVVNFUyBiZWZvcmUKCWNhbGxpbmcgaW52ZXJ0X2p1bXAuCgoyMDAwLTA5LTE4ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb21iaW5lLmMgKGNhbl9jb21iaW5lX3ApOiBEb24ndCBzdWJzdGl0dXRlIGFuIEFTTV9PUEVSQU5EUwoJaW50byBhbnl0aGluZy4KCjIwMDAtMDktMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChjLWNvbW1vbi5vKTogRGVwZW5kIG9uIGRpYWdub3N0aWMuaC4KCgkqIGMtY29tbW9uLmM6IEluY2x1ZGUgZGlhZ25vc3RpYy5oLgoJKHRmYWZmKTogRGVsZXRlLgoJKHN0YXR1c193YXJuaW5nKTogTmV3IGZ1bmN0aW9uLgoJKGNoZWNrX2Zvcm1hdF9pbmZvLCBtYXliZV9yZWFkX2RvbGxhcl9udW1iZXIsIGNoZWNrX2Zvcm1hdF90eXBlcywKCWZpbmlzaF9kb2xsYXJfZm9ybWF0X2NoZWNraW5nLCBjaGVja19mdW5jdGlvbl9mb3JtYXQpOiBBY2NlcHQgYQoJYHN0YXR1cycgcGFyYW1ldGVyLiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4KCgkqIGMtY29tbW9uLmggKGNoZWNrX2Z1bmN0aW9uX2Zvcm1hdCk6IEFjY2VwdCBhIGBzdGF0dXMnIHBhcmFtZXRlci4KCgkqIGMtdHlwZWNrLmM6IFVwZGF0ZSBjYWxsIHRvIGBjaGVja19mdW5jdGlvbl9mb3JtYXQnLgoKMjAwMC0wOS0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGMtZGVjbC5jIChjX2V4cGFuZF9ib2R5KTogQ2FsbCBtYXJrX3ZhcmFyZ3MgYmVmb3JlCglleHBhbmRfZnVuY3Rpb25fc3RhcnQuCgoyMDAwLTA5LTE4ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL2VhYmktY24uYXNtOiBVc2UgLyoqLyB0byBkZWxpbWl0IGNvbW1lbnRzLCBub3QgIy4KCSogY29uZmlnL3JzNjAwMC9lYWJpLWNpLmFzbTogTGlrZXdpc2UuCgoyMDAwLTA5LTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZW1pdC1ydGwuYyAoaW5pdF9lbWl0X29uY2UpOiBJbml0aWFsaXplIGNvbnN0X3RpbnlfcnR4Cglmb3IgQkltb2RlLgoKMjAwMC0wOS0xOCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogdW5yb2xsLmMgKGxvb3BfaXRlcmF0aW9ucyk6IFBhc3MgaW5jcmVtZW50IHRvIGV4dGVuZF9mb3JfZ2l2X3ZhbHVlCgliZWZvcmUgcGFzc2luZyBpdCB0byBmb2xkX3J0eF9tdWx0X2FkZC4KCgkqIHVucm9sbC5jIChmaW5hbF9naXZfdmFsdWUpOiBQYXNzIGluY3JlbWVudCB0aHJvdWdoCglleHRlbmRfdmFsdWVfZm9yX2dpdiBiZWZvcmUgcGFzc2luZyBpdCB0byBlbWl0X2l2X2FkZF9tdWx0LgoKCSogZnVuY3Rpb24uYyAoZml4dXBfdmFyX3JlZnNfMSwgY2FzZSBaRVJPX0VYVFJBQ1QpOiBJZiB3ZSBoYXZlIGEKCXBhcmFkb3hpY2FsIHN1YnJlZywgdGhlbiBkaXJlY3RseSBzdWJzdGl0dXRlIHRoZSByZXBsYWNlbWVudCBhbmQKCXJldHVybi4KCk1vbiAxOC1TZXAtMjAwMCAyMjoxMjo0NCBCU1QgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwLnRleGk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLCBpbmNsdWRpbmcgc29tZSBjbGFyaWZpY2F0aW9ucywKCXRoZSB0cmVhdG1lbnQgb2YgdmFyaW91cyBuZXdsaW5lIGNvbWJpbmF0aW9ucywgYW5kIHNwYWNlIGJldHdlZW4KCWJhY2tzbGFzaCBhbmQgbmV3bGluZS4KCk1vbiBTZXAgMTggMjE6MDA6NDcgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvLnVrPgoKCSogc2Rib3V0LmMgKFBVVF9TREJfREVGLCBQVVRfU0RCX1RBRywgUFVUX1NEQl9FUElMT0dVRV9FTkQpOgoJUmVwbGFjZSBBU01fT1VUUFVUX0xBQkVMUkVGIHdpdGggYXNzZW1ibGVfbmFtZS4KCk1vbiBTZXAgMTggMjA6MjY6NTAgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvLnVrPgoKCSogc2guYyAoYWRkc3ViY29zdHMpOiBDT05TVCBpcyBub3QgY2hlYXAuCgkoZmluZF9iYXJyaWVyKTogRm9yIFNoMSwgdGFrZSBhbGlnbm1lbnQgYWZ0ZXIganVtcHMgaW50byBhY2NvdW50LgoKMjAwMC0wOS0xNSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IENhbGwgcHVyZ2VfaGFyZF9zdWJyZWdfc2V0cyB0bwoJcmVtb3ZlIGFsbCBTRVRzIG9mIFNVQlJFR3Mgb2YgaGFyZCByZWdpc3RlcnMuCgkqIGZ1bmN0aW9uLmMgKHB1cmdlX2hhcmRfc3VicmVnX3NldHMpOiBOZXcgZnVuY3Rpb24uCgkocHVyZ2Vfc2luZ2xlX2hhcmRfc3VicmVnX3NldCk6IE5ldyBmdW5jdGlvbi4KCSogcnRsLmg6IChwdXJnZV9oYXJkX3N1YnJlZ19zZXRzKTogTmV3IGZ1bmN0aW9uLgoKMjAwMC0wOS0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmg6IFVwZGF0ZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChzaWduZWRfaW5lcXVhbGl0eV9vcGVyYXRvcik6IE5ldy4KCShpYTY0X2V4cGFuZF9jb21wYXJlKTogTmV3LgoJKGlhNjRfcmVnaXN0ZXJfbW92ZV9jb3N0KTogSGFuZGxlIFBSX1JFR1MgbW92ZXMuCgkoaWE2NF9zZWNvbmRhcnlfcmVsb2FkX2NsYXNzKTogUmVxdWlyZSBhIEdSIHdoZW4gbW92aW5nIHRvIGEgUFIuCgkoc3RydWN0IHJlZ193cml0ZV9zdGF0ZSk6IEFkZCB3cml0dGVuX2J5X2FuZC9vci4KCShzdHJ1Y3QgcmVnX2ZsYWdzKTogQWRkIGlzX2FuZC9vci4KCShyd3NfdXBkYXRlKTogU2V0IHRoZW0uCgkocndzX2FjY2Vzc19yZWdubyk6IFRlc3QgdGhlbSB0byBhbGxvdyBwYXJhbGxlbCBjb21wYXJpc29ucy4KCShydHhfbmVlZHNfYmFycmllcik6IFJlY29nbml6ZSBwYXJhbGxlbCBjb21wYXJpc29ucy4KCShlbWl0X2luc25fZ3JvdXBfYmFycmllcnMpOiBTZXQgcHJldl9pbnNuIGFmdGVyIGEgY2FsbCBzdG9wIGJpdC4KCUNhbGwgcmVjb2dfbWVtb2l6ZWQ7IGlnbm9yZSBwcmVkX3JlbF9tdXRleC4KCShlbWl0X3ByZWRpY2F0ZV9yZWxhdGlvbl9pbmZvKTogRG9uJ3QgY2FsbCBmaW5kX2Jhc2ljX2Jsb2NrcyBoZXJlLgoJKGlhNjRfcmVvcmcpOiBEbyBpdCBoZXJlIGluc3RlYWQuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaDogcy9DQ21vZGUvQkltb2RlL2cKCShNT0RFU19USUVBQkxFX1ApOiBEb24ndCB0aWUgQkltb2RlLgoJKFBSRUZFUlJFRF9SRUxPQURfQ0xBU1MpOiBEbyBub3QgcmVsb2FkIG9wZXJhdGlvbnMgaW50byBBUiByZWdzLgoJKENPTlNUX0NPU1RTKTogUGljayBzZW5zaWJsZSB2YWx1ZXMgZm9yIENPTlNUX0lOVCBiYXNlZCBvbiBjb250ZXh0LgoJKFJUWF9DT1NUUyk6IE1ha2UgbXVsdGlwbHkgNCBpbnNucy4KCShNRU1PUllfTU9WRV9DT1NUKTogTmV3LgoJKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZDogcy9DQ21vZGUvQkltb2RlL2cKCShtb3ZjY2ksIG1vdmJpKTogTmV3LgoJKGFuZGJpMywgYW5kY21iaTMsIGlvcmJpMywgaW9yY21iaTMsIG9uZV9jbXBsYmkyKTogTmV3LgoJKGNtcHNpX2FuZF8wLCBjbXBzaV9hbmRfMSwgY21wc2lfYW5kbm90XzAsIGNtcHNpX2FuZG5vdF8xKTogTmV3LgoJKGNtcGRpX2FuZF8wLCBjbXBkaV9hbmRfMSwgY21wZGlfYW5kbm90XzAsIGNtcGRpX2FuZG5vdF8xKTogTmV3LgoJKHRiaXRfYW5kXzAsIHRiaXRfYW5kXzEsIHRiaXRfYW5kXzIsIHRiaXRfYW5kXzMpOiBOZXcuCgkoY21wc2lfb3JfMCwgY21wc2lfb3JfMSwgY21wc2lfb3JjbV8wLCBjbXBzaV9vcmNtXzEpOiBOZXcuCgkoY21wZGlfb3JfMCwgY21wZGlfb3JfMSwgY21wZGlfb3JjbV8wLCBjbXBkaV9vcmNtXzEpOiBOZXcuCgkodGJpdF9vcl8wLCB0Yml0X29yXzEsIHRiaXRfb3JfMiwgdGJpdF9vcl8zKTogTmV3LgoJKG11bHNpLCBtdWxkaSk6IFVzZSB4bXB5IG5vdCB4bWEuCgkoY21wYmkpOiBOZXcuCgkobW92Y2MsIG1vdmNjX2ludGVybmFsKTogUmVtb3ZlLgoJKGJyYW5jaCBleHBhbmRlcnMpOiBVc2UgaWE2NF9leHBhbmRfY29tcGFyZS4KCShzZXRjYyBleHBhbmRlcnMpOiBMaWtld2lzZS4KCShjbW92IGluc25zKTogVXNlIG1vdmVfb3BlcmFuZCBhbmQgaWE2NF9tb3ZlX29rLgoJKHByZWRfcmVsX211dGV4KTogVXNlIHVuc3BlYyBub3QgdW5zcGVjX3ZvbGF0aWxlLiAgUHJldmVudCB0aGUKCXNjaGVkdWxlciBmcm9tIG1vdmluZyBpdCBwYXN0IGEgdXNlLgoJKiBjb25maWcvaWE2NC9idWlsZC5oYWNrczogUmVtb3ZlLgoKTW9uIDE4LVNlcC0yMDAwIDE5OjIxOjM1IEJTVCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBoYXNoLmggKEhBU0hTVEVQKTogVGFrZSBjaGFyYWN0ZXIgcmF0aGVyIHRoYW4gcG9pbnRlcgoJdG8gY2hhcmFjdGVyLgoJKF9jcHBfY2hlY2tfZGlyZWN0aXZlLCBfY3BwX2NoZWNrX2xpbmVtYXJrZXIpOiBVcGRhdGUgcHJvdG90eXBlcy4KCgkqIGNwcGhhc2guYyAoY3BwX2xvb29rdXApOiBVcGRhdGUgZm9yIG5ldyBIQVNIU1RFUC4KCgkqIGNwcGxleC5jIChhdXRvX2V4cGFuZF9uYW1lX3NwYWNlLCB0cmlncmFwaF9yZXBsYWNlLAoJYmFja3NsYXNoX3N0YXJ0LCBoYW5kbGVfbmV3bGluZSwgcGFyc2VfbmFtZSwgSU5JVF9UT0tFTl9TVFIsCglJTU1FRF9UT0tFTiwgUFJFVl9UT0tFTl9UWVBFLCBQVVNIX1RPS0VOLCBSRVZJU0VfVE9LRU4sCglCQUNLVVBfVE9LRU4sIEJBQ0tVUF9UUklHUkFQSCwgTUlHSFRfQkVfRElSRUNUSVZFLAoJS05PV05fRElSRUNUSVZFKTogRGVsZXRlLgoKCShoYW5kbGVfbmV3bGluZSwgY2hlY2tfbG9uZ190b2tlbiwgc2tpcF9lc2NhcGVkX25ld2xpbmVzLAoJdW50ZXJtaW5hdGVkKTogTmV3IGZ1bmN0aW9ucy4KCShBQ0NFUFRfQ0hBUiwgU0FWRV9TVEFURSwgUkVTVE9SRV9TVEFURSk6IE5ldyBtYWNyb3MuCgoJKHBhcnNlX2lkZW50aWZpZXIpOiBXYXMgcGFyc2VfbmFtZSwgbmV3IGltcGxlbWVudGF0aW9uLgoJKHNraXBfbGluZV9jb21tZW50LCBza2lwX2Jsb2NrX2NvbW1lbnQsIHNraXBfd2hpdGVzcGFjZSwKCXBhcnNlX251bWJlciwgcGFyc2Vfc3RyaW5nLCB0cmlncmFwaF9vaywgc2F2ZV9jb21tZW50LAoJYWRqdXN0X2NvbHVtbiwgX2NwcF9nZXRfbGluZSk6IE5ldyBpbXBsZW1lbnRhdGlvbnMuCgoJKGxleF90b2tlbik6IE5ldyBmdW5jdGlvbi4gIExleGVzIGEgdG9rZW4gYXQgYSB0aW1lLCBsb29raW5nCglmb3J3YXJkcy4gIENvbnRhaW5zIG1vc3Qgb2YgdGhlIGd1dHMgb2YgdGhlIG9sZCBsZXhfbGluZS4KCShsZXhfbGluZSk6IE5ldyBpbXBsZW1lbnRhdGlvbiwgdXNpbmcgbGV4X3Rva2VuIHRvIG9idGFpbgoJaW5kaXZpZHVhbCB0b2tlbnMuCgkoY3BwX3NjYW5fYnVmZmVyKTogVXNlIHRoZSB0b2tlbidzIGxpbmUsIG5vdCB0aGUgbGlzdCdzIGxpbmUuCgoJKiBjcHBsaWIuYyAoX2NwcF9jaGVja19kaXJlY3RpdmUsIF9jcHBfY2hlY2tfbGluZW1hcmtlcik6CgkgTmV3IGltcGxlbWVudGF0aW9ucy4KCShkb19hc3NlcnQpOiBEb24ndCBib3RoZXIgc2V0dGluZyB0aGUgYW5zd2VyJ3MgbGlzdCdzIGxpbmUuCgkoY3BwX3B1c2hfYnVmZmVyKTogSW5pdGlhbGlzZSBuZXcgcGZpbGUgYW5kIHJlYWRfYWhlYWQgbWVtYmVycwoJb2Ygc3RydWN0IGNwcF9idWZmZXIuCgoJKiBjcHBsaWIuaCAoY3BwY2hhcl90KTogTmV3IHR5cGVkZWYuCgkoc3RydWN0IGNwcF9idWZmZXIpOiByZWFkX2FoZWFkLCBwZmlsZSBhbmQgY29sX2FkanVzdCBhcmUKCW5ldyBtZW1iZXJzLgoJKHN0cnVjdCBsZXhlcl9zdGF0ZSk6IE5ldyBzdHJ1Y3R1cmUgdGhhdCBkZXRlcm1pbmVzIHRoZSBzdGF0ZQoJYW5kIGJlaGF2aW91ciBvZiB0aGUgbGV4ZXIuCgkoSU5fRElSRUNUSVZFLCBLTk9XTl9ESVJFQ1RJVkUpOiBOZXcgbWFjcm9zLgoJKHN0cnVjdCBjcHBfcmVhZGVyKTogTmV3IG1lbWJlciAic3RhdGUiLiBSZW5hbWUKCW11bHRpbGluZV9zdHJpbmdfbGluZSBhbmQgbXVsdGlsaW5lX3N0cmluZ19jb2x1bW4uIERlbGV0ZQoJY29sX2FkanVzdCwgaW5fbGV4X2xpbmUgbWVtYmVycy4KCShDUFBfQlVGX0NPTFVNTik6IFVwZGF0ZS4KCjIwMDAtMDktMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb21iaW5lLmMgKHNpbXBsaWZ5X2NvbXBhcmlzb24pOiBTaGlmdCBhIE5PVCBvdXQgb2YgYSBzaW5nbGUKCWJpdCB0ZXN0LgoKCSogY29tYmluZS5jIChpZl90aGVuX2Vsc2VfY29uZCk6IENhbm9uaWNhbGl6ZSBCSW1vZGUgdHJ1ZSB0bwoJU1RPUkVfRkxBR19WQUxVRS4KCSogZXhwbG93LmMgKHRydW5jX2ludF9mb3JfbW9kZSk6IExpa2V3aXNlLgoKCSogY29tYmluZS5jIChjb21iaW5lX3NpbXBsaWZ5X3J0eCk6IFVzZSBnZW5fdW5hcnkgdG8gZGlzdHJpYnV0ZQoJdGhlIE5PVCBmb3IgRGUgTW9yZ2FuJ3MgcnVsZS4KCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3VuYXJ5X29wZXJhdGlvbik6IFNpbXBsaWZ5IGEgQkltb2RlIE5PVAoJb2YgYSBjb21wYXJpc29uIHRvIHRoZSByZXZlcnNlIGNvbXBhcmlzb24uCgoJKiBjb21iaW5lLmMgKHRyeV9jb21iaW5lKTogQWxsb3cgc3BsaXQgdG8gY3JlYXRlIGEgc2luZ2xlIGluc24uCgoJKiBtYWNobW9kZS5kZWY6IEFkZCBCSW1vZGUuICBBZGQgYSBjb2x1bW4gZm9yIGJpdHNpemUuCgkqIG1hY2htb2RlLmggKERFRl9NQUNITU9ERSk6IEFkanVzdCBmb3IgZXh0cmEgY29sdW1uLgoJKEdFVF9NT0RFX0JJVFNJWkUpOiBVc2UgaXQuCgkqIHJ0bC5jIChERUZfTUFDSE1PREUpOiBBZGp1c3QgZm9yIGV4dHJhIGNvbHVtbi4KCShtb2RlX2JpdHNpemUpOiBOZXcuCgkobW9kZV9tYXNrX2FycmF5KTogVXNlIGJpdHNpemUuCgkqIGNvbWJpbmUuYyAoY29tYmluZV9zaW1wbGlmeV9ydHgpOiBSZXF1aXJlIGlubmVyIGFuZCBvdXRlcgoJbW9kZXMgdG8gbWF0Y2ggb24gbm9uemVyb19iaXRzIG9wdGltaXphdGlvbnMuCgoyMDAwLTA5LTE4ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIHJlbG9hZDEuYyAoZm9yZ2V0X29sZF9yZWxvYWRzXzEpOiBJZiBhIGhhcmQgcmVnIGlzIHN0b3JlZCwgY2xlYXIKCWl0cyBlbnRyeSBpbiBzcGlsbF9yZWdfc3RvcmUuCgkqIGNvbmZpZy9zaC9saWIxZnVuY3MuYW1zIChtb3ZzdHJfaTQgZnVuY3Rpb25zKTogQWx3YXlzIGNvbXBpbGUgaW4uCgkqIHNoLmMgKHJlZ19ub19zdWJyZWdfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCSogc2gtcHJvdG9zLmggKHJlZ19ub19zdWJyZWdfb3BlcmFuZCk6IERlY2xhcmUgaXQuCgkqIHNoLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBpdC4KCSogc2gubWQgKGZsb2F0c2lzZjJfaTQsIGZsb2F0c2lkZjJfaSwgZXh0ZW5kc2ZkZjJfaTQpOiBVc2UgaXQgZm9yCglpbnB1dCBvcGVyYW5kIHRoYXQgbmVlZHMgdG8gYmUgaW4gZnB1bC4KCShmaXhfdHJ1bmNzZnNpMiwgZml4X3RydW5jc2ZzaTJfaTQpOiBVc2UgcmVnaXN0ZXJfb3BlcmFuZCBmb3Igb3V0cHV0LgoJKiBzaC5jIChmaW5kX2JhcnJpZXIpOiBUYWtlIGludG8gYWNjb3VudCB0aGF0IG1hY2hpbmVfZGVwZW5kZW50X3Jlb3JnCgltaWdodCBhZGQgbmV3IGluc25zLgoKMjAwMC0wOS0xOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2guYyAoc2hfZXhwYW5kX3Byb2xvZ3VlKTogTWFyayBHT1RhZGRyMnBpY3JlZyBhcwoJTUFZQkVfREVBRC4KCShzaF9leHBhbmRfZXBpbG9ndWUpOiBUYWtlIHRoZSBQSUMgcmVnaXN0ZXIgaW50byBhY2NvdW50IHdoZW4KCWNvbXB1dGluZyB0aGUgZnJhbWUgc2l6ZS4KCgkqIGNvbmZpZy9zaC9zaC5jIChub25waWNfc3ltYm9sX21lbnRpb25lZF9wKTogQ2hlY2sgTEFCRUxfUkVGcy4KCSogY29uZmlnL3NoL3NoLm1kIChzeW1fbGFiZWwycmVnLCBzeW1QTFRfbGFiZWwycmVnKTogUHJvdGVjdAoJTEFCRUxfUkVGcyB3aXRoIGEgUElDLXNhZmUgdW5zcGVjLgoKMjAwMC0wOS0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoY2hlY2tfZm9ybWF0X2luZm8pOiBQcm9wZXJseSBzYXZlIHRoZSBhcmd1bWVudAoJbnVtYmVyIGFuZCBwYXJhbWV0ZXIgZm9yICQgb3BlcmFuZCBudW1iZXIgZm9ybWF0cyBpbiBjYXNlIHdpZHRoCglhbmQgcHJlY2lzaW9uIGFyZ3VtZW50cyBhcmUgYWxzbyB1c2VkLiAgQWxsb3cgcHJpbnRmIHdpZHRoIGFuZAoJcHJlY2lzaW9uIGFyZ3VtZW50cyB0byBoYXZlIG9wZXJhbmQgbnVtYmVycyBldmVuIGlmIG5vbmUgd2FzCglzcGVjaWZpZWQgZm9yIHRoZSBtYWluIGZvcm1hdCwgc2luY2UgdGhpcyBpcyBPSyBmb3IgJSouKm0uICBPbmx5CglvYmplY3QgdG8gbWlzc2luZyAkIG9wZXJhbmQgbnVtYmVyIGlmIHRoZSBmb3JtYXQgdXNlZCByZXF1aXJlcyBhbgoJYXJndW1lbnQuCgoyMDAwLTA5LTE4ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChmb3JtYXRfY2hhcl9pbmZvKTogQWRkICdXJyBmbGFnIHRvIGNvbW1lbnQuCgkocHJpbnRfY2hhcl90YWJsZSwgc2Nhbl9jaGFyX3RhYmxlKTogVXNlIGl0LgoJKGNoZWNrX2Zvcm1hdF9pbmZvKTogVXNlIHRoZSAnVycgZmxhZyB0byBkZXRlcm1pbmUgd2hldGhlciBhCglmb3JtYXQgYXJndW1lbnQgaXMgd3JpdHRlbiBpbnRvLgoKMjAwMC0wOS0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoY2hlY2tfZm9ybWF0X3R5cGVzKTogUmVvcmdhbmlzZSBhbmQgY2xlYW4gdXAsCgljaGVja2luZyBlYXJsaWVyIGZvciBFUlJPUl9NQVJLcyBhbmQgbWFraW5nIGN1cl90eXBlIGludG8gaXRzCglUWVBFX01BSU5fVkFSSUFOVCB3aGVyZSBjb252ZW5pZW50LgoKMjAwMC0wOS0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ2NjLmMgKGNwcF9vcHRpb25zKTogQWRkIHNwZWNzIGZvciBfX1NURENfSE9TVEVEX18uCgoyMDAwLTA5LTE4ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIG9wdGFicy5jIChlbWl0X2xpYmNhbGxfYmxvY2spOiBTZXQgQ09OU1RfQ0FMTF9QIGZvciB0aGUgY2FsbC4KCgkqIGkzODYtcHJvdG9zLmggKGl4ODZfaW5pdF9idWlsdGlucywgaXg4Nl9leHBhbmRfYnVpbHRpbik6IERlY2xhcmUuCgkqIGkzODYuYyAoc3RydWN0IGJ1aWx0aW5fZGVzY3JpcHRpb24pOiBOZXcuCgkoYmRlc2NfY29taSwgYmRlc2NfMmFyZywgYmRlc2NfMWFyZyk6IE5ldyBhcnJheXMuCgkobW14X3JlZ19vcGVyYW5kKTogRGVjbGFyZSBNT0RFIGFyZyBhcyB1bnVzZWQuCgkoaXg4Nl9leHBhbmRfc3NlX2NvbWksIGl4ODZfZXhwYW5kX3NzZV9jb21wYXJlLCBzYWZlX3ZlY3Rvcl9vcGVyYW5kLAoJaXg4Nl9leHBhbmRfdW5vcDFfYnVpbHRpbiwgaXg4Nl9leHBhbmRfdW5vcF9idWlsdGluLAoJaXg4Nl9leHBhbmRfYmlub3BfYnVpbHRpbiwgaXg4Nl9leHBhbmRfc3RvcmVfYnVpbHRpbiwKCWl4ODZfaW5pdF9idWlsdGlucywgaXg4Nl9leHBhbmRfYnVpbHRpbik6IE5ldyBmdW5jdGlvbnMuCgkqIGkzODYuaCAoaXg4Nl9idWlsdGlucyk6IE5ldyBlbnVtZXJhdGlvbi4KCShNRF9JTklUX0JVSUxUSU5TLCBNRF9FWFBBTkRfQlVJTFRJTik6IE5ldyBtYWNyb3MuCgkqIGkzODYubWQgKGF0dHIgbGVuZ3RoX2ltbWVkaWF0ZSk6IDAgZm9yIG1teC9zc2UgdHlwZXMuCgkoYXR0ciBwcmVmaXhfMGYpOiAxIGZvciBtbXgvc3NlIHR5cGVzLgoJKHNldGNjXzIpOiBSZW1vdmUgIioiIHNvIHdlIGdldCBnZW5fc2V0Y2NfMi4KCShlbW1zKTogQWNjb3VudCBmb3IgY2hhbmdlZCByZWdpc3RlciBudW1iZXJpbmcuICBTZXQgIm1lbW9yeSIgYXR0cgoJdG8gdW5rbm93bi4KCShzZmVuY2UpOiBTZXQgIm1lbW9yeSIgYXR0ciB0byB1bmtub3duLgoKMjAwMC0wOS0xOCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogY29uZmlndXJlLmluOiBEZWZpbmUgX0dOVV9TT1VSQ0Ugb25seSB3aGVuIHVzaW5nIHRoZSBHTlUgQwoJTGlicmFyeS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlZC4KCjIwMDAtMDktMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcHBpbml0LmMgKGNwcF9pbml0KTogRG9uJ3QgdXNlIEFOU0kgcHJvdG90eXBlcy4KCSogZmxvdy5jIChmbG93X2R1bXBfbG9vcCk6IExpa2V3aXNlLgoJKGZsb3dfbG9vcHNfZHVtcCk6IExpa2V3aXNlLgoKCSogYy10eXBlY2suYyAoY19zdGFydF9jYXNlKTogRml4IHR5cG8uCgoyMDAwLTA5LTE3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBnaXZlIGEgd2FybmluZyBhYm91dCBkZWZhdWx0aW5nCgl0byBpbnQgZm9yIHBsYWluIGNvbXBsZXggd2hpY2ggZGVmYXVsdHMgdG8gY29tcGxleCBkb3VibGUuICBEbwoJd2FybiBhYm91dCBkZWZhdWx0aW5nIHRvIGNvbXBsZXggZG91YmxlIGlmIHBlZGFudGljLiAgV2FybiBhYm91dAoJY29tcGxleCBpbnRlZ2VyIHR5cGVzIGlmIHBlZGFudGljLiAgV2FybiBhYm91dCBjb21wbGV4IHR5cGVzIGlmCglwZWRhbnRpYyBhbmQgbm90IGluIEM5OSBtb2RlLgoJKiBjLXR5cGVjay5jIChidWlsZF91bmFyeV9vcCk6IElmIHBlZGFudGljLCB3YXJuIGFib3V0IHVzZSBvZiB+Cglmb3IgY29tcGxleCBjb25qdWdhdGlvbi4KCjIwMDAtMDktMTcgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGNvbnRyaWIudGV4aTogVXBkYXRlIG15IGVudHJ5LgoKU3VuIFNlcCAxNyAxODo0ODozMiAyMDAwICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnIubWQgKG1jdV9lbmhhbmNlZCk6IE5ldyBhdHRyaWJ1dGUuCgkobWN1X21lZ2EpOiBMaWtld2lzZS4KCShleHRlbmRoaXNpMik6IFVzZSBtY3VfZW5oYW5jZWQuCgkoemVyb19leHRlbmRoaXNpMik6IExpa2V3aXNlLgoJKGNhbGxfaW5zbik6IFVzZSBtY3VfZW5oYW5jZWQgYW5kIG1jdV9tZWdhLgoJKGNhbGxfdmFsdWVfaW5zbik6IExpa2V3aXNlLgoJKCpzYnJ4X2JyYW5jaCk6IFVzZSBtY3VfbWVnYS4KCSgqc2JyeF9hbmRfYnJhbmNoc2kpOiBMaWtld2lzZS4KCSgqc2JyeF9hbmRfYnJhbmNoaGkpOiBMaWtld2lzZS4KCSgqdGFibGVqdW1wX2xpYik6IExpa2V3aXNlLgoKU3VuIFNlcCAxNyAxMDo0NjoxNyAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYWxpYXMuYyAodHJ1ZV9kZXBlbmRlbmNlKTogQWxsb3cgbm9uLXVuY2hhbmdpbmcgcmVhZCB0byBjb25mbGljdAoJd2l0aCB1bmNoYW5naW5nIHdyaXRlLgoKCSogZXhwci5jIChzdG9yZV9jb25zdHJ1Y3Rvcl9maWVsZCk6IEFjY2VwdCBBTElBU19TRVQgYXJnLgoJKHN0b3JlX2NvbnN0cnVjdG9yKTogUGFzcyBhbGlhc19zZXQgdG8gaXQuCgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZW9yZGVyIHRlc3RzIHRvIGF2b2lkIGxvb2tpbmcgYXQKCVRZUEVfTUFJTl9WQVJJQU5UIG9mIEVSUk9SX01BUksuCgkqIGMtbGV4LmMgKHJlYWRlc2NhcGUpOiBBdm9pZCB1c2luZyBwcmludGYgc3ludGF4IHdlIGRvbid0IHJlY29nbml6ZS4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV91bmFyeV9vcGVyYXRpb24pOiBBZGQgY2FzZXMKCUZMT0FUX0VYVEVORCBhbmQgRkxPQVRfVFJVTkNBVEUgdG8gb25lcyB0aGF0IHJldHVybiAwLgoKMjAwMC0wOS0xNyAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBleHByLmggKGVtaXRfbGlicmFyeV9jYWxsLCBlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZSk6IERlbGV0ZQoJZGVjbGFyYXRpb25zLgoJKiBydGwuaCAoZW51bSBsaWJjYWxsX3R5cGUpOiBOZXcuCgkoZW1pdF9saWJyYXJ5X2NhbGwsIGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlKTogQ2hhbmdlIGZuX3R5cGUgYXJnIHRvCgliZSBvZiB0eXBlIGVudW0gbGliY2FsbF90eXBlLgoJKiBjYWxscy5jOiBMaWtld2lzZSBmb3IgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgU2V2ZXJhbCBjYWxsZXJzCgl0aHJvdWdob3V0IGNoYW5nZWQgdG8gdXNlIHRoZSBuZXcgZW51bWVyYXRpb24gYXBwcm9wcmlhdGVseS4KCShlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogTGlrZXdpc2UuICBQdXQgYmFjayBjb2RlIHRvIG1ha2UgbGliY2FsbAoJYmxvY2tzIG9mIGVxdWFsIGZvcm0sIGJ1dCBvbmx5IHVzZSBpdCBmb3IgdGhlIHR3byBuZXcgaGlnaGVyCgllbnVtZXJhdGlvbiB2YWx1ZXMuCgoyMDAwLTA5LTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCUNvbnZlcnQgdGhlIEMgZnJvbnQtZW5kIHRvIHVzZSBmdW5jdGlvbi1hdC1hLXRpbWUgbW9kZS4KCSogYy1jb21tb24uaDogSW5jbHVkZSBzcGxheS10cmVlLmguCgkoQ19ERUNMQVJFRF9MQUJFTF9GTEFHKTogTmV3IG1hY3JvLgoJKHN0cnVjdCBsYW5ndWFnZV9mdW5jdGlvbik6IEFkZCB4X3Njb3BlX3N0bXRfc3RhY2sgYW5kCgl4X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWRfcC4KCShSRUNIQUlOX1NUTVRTKTogTW92ZSBkZWZpbml0aW9uLgoJKGxhbmdfc3RhdGVtZW50X2NvZGVfcCk6IExpa2V3aXNlLgoJKGxhbmdfZXhwYW5kX3N0bXQpOiBMaWtld2lzZS4KCShsYW5nX2V4cGFuZF9kZWNsX3N0bXQpOiBOZXcgdmFyaWFibGUuCgkobGFuZ19leHBhbmRfZnVuY3Rpb25fZW5kKTogTGlrZXdpc2UuCgkoY3VycmVudF9zY29wZV9zdG10X3N0YWNrKTogTmV3IGZ1bmN0aW9uLgoJKGFkZF9kZWNsX3N0bXQpOiBMaWtld2lzZS4KCShhZGRfc2NvcGVfc3RtdCk6IExpa2V3aXNlLgoJKG1hcmtfc3RtdF90cmVlKTogTGlrZXdpc2UuCgkoc3RydWN0IGNfbGFuZ19kZWNsKTogTmV3IHN0cnVjdHVyZS4KCShERUNMX1NBVkVEX1RSRUUpOiBEZWZpbmUuCgkoY19tYXJrX2xhbmdfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShjX2V4cGFuZF9zdGFydF9jb25kKTogQ2hhbmdlIHByb3RvdHlwZS4KCShjX2ZpbmlzaF90aGVuKTogTmV3IGZ1bmN0aW9uLgoJKGNfZmluaXNoX2Vsc2UpOiBMaWtld2lzZS4KCShjdXJyZW50X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWQpOiBSZW1vdmUuCgkoc2V0X2N1cnJlbnRfZnVuY3Rpb25fbmFtZV9kZWNsYXJlZCk6IExpa2V3aXNlLgoJKG1hcmtfY19sYW5ndWFnZV9mdW5jdGlvbik6IERlY2xhcmUuCgkoY2FzZV9jb21wYXJlKTogTGlrZXdpc2UuCgkoY19hZGRfY2FzZV9sYWJlbCk6IExpa2V3aXNlLgoJKGNfZXhwYW5kX2V4cHIpOiBMaWtld2lzZS4KCShjX3NhZmVfZnJvbV9wKTogTGlrZXdpc2UuCgkqIGMtY29tbW9uLmMgKGxhbmdfZXhwYW5kX2Z1bmN0aW9uX2VuZCk6IE5ldyB2YXJpYWJsZS4KCShzdHJ1Y3QgaWZfZWx0KTogQWRkIGlmX3N0bXQuCgkoY19leHBhbmRfc3RhcnRfY29uZCk6IEFkZCB0aGUgaWYtc3RhdGVtZW50IHRvIHRoZSBzdGF0ZW1lbnQtdHJlZSwKCXJhdGhlciB0aGFuIGdlbmVyYXRpbmcgUlRMLgoJKGNfZmluaXNoX3RoZW4pOiBOZXcgZnVuY3Rpb24uCgkoY19leHBhbmRfc3RhcnRfZWxzZSk6IERvbid0IGdlbmVyYXRlIFJUTC4KCShjX2ZpbmlzaF9lbHNlKTogTmV3IGZ1bmN0aW9uLgoJKGNfZXhwYW5kX2V4cHJfc3RtdCk6IERvbid0IGdlbmVyYXRlIFJUTC4KCShzdGF0ZW1lbnRfY29kZV9wKTogQWRkIFNDT1BFX1NUTVQuCgkoY2FzZV9jb21wYXJlKTogTmV3IGZ1bmN0aW9uLgoJKGNfYWRkX2Nhc2VfbGFiZWwpOiBMaWtld2lzZS4KCShtYXJrX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKGNfbWFya19sYW5nX2RlY2wpOiBMaWtld2lzZS4KCShtYXJrX2NfbGFuZ3VhZ2VfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShjX2V4cGFuZF9leHByKTogTGlrZXdpc2UuCgkoY19zYWZlX2Zyb21fcCk6IExpa2V3aXNlLgoJKiBjLWRlY2wuYyAoY19zdG10X3RyZWUpOiBOZXcgdmFyaWFibGUKCShjX3Njb3BlX3N0bXRfc3RhY2spOiBMaWtld2lzZS4KCShjX2Z1bmN0aW9uX25hbWVfZGVjbGFyZWRfcCk6IExpa2V3aXNlLgoJKGxhbmdfZXhwYW5kX2V4cHJfc3RtdCk6IFJlbW92ZS4KCShwb3BsZXZlbCk6IERvbid0IGNhbGwgb3V0cHV0X2lubGluZV9mdW5jdGlvbiBmb3IgbmVzdGVkCglmdW5jdGlvbnMuCgkocHVzaGRlY2wpOiBEb24ndCBzZXQgREVDTF9DT05URVhUIGZvciBhIGxvY2FsIGRlY2xhcmF0aW9uIG9mIGFuCglgZXh0ZXJuJyBmdW5jdGlvbi4KCShyZWRlY2xhcmF0aW9uX2Vycm9yX21lc3NhZ2UpOiBDaGFuZ2UgbWVhbnMgb2YgY29tcHV0aW5nIHdoZXRoZXIKCW9yIG5vdCBhIGZ1bmN0aW9uIGlzIG5lc3RlZC4KCShsb29rdXBfbGFiZWwpOiBEb24ndCBjYWxsIGxhYmVsX3J0eC4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkZCBtb3JlIEdDIHJvb3RzLgoJKHN0YXJ0X2RlY2wpOiBBZGQgREVDTF9TVE1UcyB0byB0aGUgc3RhdGVtZW50LXRyZWUsIHJhdGhlciB0aGFuCgljYWxsaW5nIHJlc3Rfb2ZfZGVjbF9jb21waWxhdGlvbi4KCShmaW5pc2hfZGVjbCk6IERvbid0IGNhbGwgZXhwYW5kX2RlY2wuCgkoc3RvcmVfcGFybV9kZWNscyk6IEJlZ2luIHRoZSBzdGF0ZW1lbnQtdHJlZSwgYnV0IGRvbid0IGdlbmVyYXRlCglSVEwuCgkoZmluaXNoX2Z1bmN0aW9uKTogVGllIG9mZiB0aGUgc3RhdGVtZW50LXRyZWUuICBDYWxsIGNfZXhwYW5kX2JvZHkKCWlmIGFwcHJvcHJpYXRlLgoJKGNfZXhwYW5kX2JvZHkpOiBOZXcgZnVuY3Rpb24uCgkocHVzaF9jX2Z1bmN0aW9uX2NvbnRleHQpOiBTYXZlIG1vcmUgaW5mb3JtYXRpb24uCgkocG9wX2NfZnVuY3Rpb25fY29udHh0KTogTGlrZXdpc2UuCgkoY29weV9sYW5nX2RlY2wpOiBOb3cgdGhhdCB3ZSB1c2UgREVDTF9MQU5HX1NQRUNJRklDLCBjb3B5IGl0LgoJKGxhbmdfbWFya190cmVlKTogTWFyayBpdC4KCShjdXJyZW50X3N0bXRfdHJlZSk6IEFkanVzdC4KCShjdXJyZW50X3Njb3BlX3N0bXRfc3RhY2spOiBOZXcgZnVuY3Rpb24uCgkoZG9fY2FzZSk6IFJlbW92ZS4KCShzZXRfY3VycmVudF9uYW1lX2RlY2xhcmVkKTogTGlrZXdpc2UuCgkoY19iZWdpbl9jb21wb3VuZF9zdG10KTogRGVmaW5lLgoJKGNfZXhwYW5kX2RlY2xfc3RtdCk6IExpa2V3aXNlLgoJKiBjLWxhbmcuYzogSW5jbHVkZSBydGwuaCBhbmQgZXhwci5oLgoJKGxhbmdfaW5pdCk6IFNldCBtb3JlIGxhbmd1YWdlLXNwZWNpZmljIGhvb2tzLgoJKiBjLWxleC5jOiBJbmNsdWRlIGV4cHIuaC4KCSogYy1wYXJzZS5pbjogQ2hhbmdlcyB0aHJvdWdob3V0IHRvIGFkZCBzdGF0ZW1lbnRzIHRvIHRoZQoJc3RhdGVtZW50LXRyZWUsIHJhdGhlciB0aGFuIGdlbmVyYXRpbmcgUlRMIGFmdGVyIGV2ZXJ5IHN0YXRlbWVudC4KCSogYy1zZW1hbnRpY3MuYyAobGFuZ19leHBhbmRfZGVjbF9zdG10KTogRGVmaW5lLgoJKGFkZF9kZWNsX3N0bXQpOiBOZXcgZnVuY3Rpb24uCgkoYWRkX3Njb3BlX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RtdF90cmVlKTogVHdlYWsuCgkoZ2VucnRsX2V4cHJfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9kZWNsX3N0bXQpOiBIYW5kbGUgbG9jYWwgbGFiZWxzLCBhbmQgY2FsbAoJbGFuZ19leHBhbmRfZGVjbF9zdG10IGlmIHJlcXVpcmVkLgoJKGdlbnJ0bF9mb3Jfc3RtdCk6IEZpeCBsaW5lLW51bWJlciBoYW5kbGluZy4KCShnZW5ydGxfY2FzZV9sYWJlbCk6IEhhbmRsZSBjbGVhbnVwcy4KCShnZW5ydGxfYXNtX3N0bXQpOiBEb24ndCBjYWxsIGNvbWJpbmVfc3RyaW5ncy4KCShnZW5ydGxfY29tcG91bmRfc3RtdCk6IFNpbXBsaWZ5LgoJKGV4cGFuZF9zdG10KTogSGFuZGxlIFNDT1BFX1NUTVRzLgoJKiBjLXRyZWUuaCAoc3RydWN0IGxhbmdfZGVjbCk6IE5ldyBzdHJ1Y3R1cmUuCgkoQ19ERUNMQVJFRF9MQUJFTF9GTEFHKTogUmVtb3ZlLgoJKGNfYmVnaW5fY29tcG91bmRfc3RtdCk6IERlY2xhcmUuCgkoY19leHBhbmRfZGVjbF9zdG10KTogTGlrZXdpc2UuCgkoY19leHBhbmRfc3RhcnRfY2FzZSk6IFJlbmFtZSB0byBjX3N0YXJ0X2Nhc2UuCgkoY19maW5pc2hfY2FzZSk6IE5ldyBmdW5jdGlvbi4KCSogYy10eXBlY2suYyAoc3RhcnRfaW5pdCk6IFR3ZWFrIHNldHRpbmcgb2YKCWNvbnN0cnVjdG9yX2luY3JlbWVudGFsLgoJKGNfZXhwYW5kX2FzbV9vcGVyYW5kcyk6IFR3ZWFrIGVycm9yLWhhbmRsaW5nLiAgQWRkIHRvIHRoZQoJc3RhdGVtZW50LXRyZWUuCgkoY19leHBhbmRfcmV0dXJuKTogQWRkIHRvIHRoZSBzdGF0ZW1lbnQtdHJlZS4KCShjX2V4cGFuZF9zdGFydF9jYXNlKTogUmVuYW1lIHRvIC4uLgoJKGNfc3RhcnRfY2FzZSk6IC4uLiB0aGlzLgoJKHN0cnVjdCBjX3N3aXRjaCk6IE5ldyB0eXBlLgoJKHN3aXRjaF9zdGFjayk6IE5ldyB2YXJpYWJsZS4KCShkb19jYXNlKTogU2ltcGxpZnkuCgkoY19maW5pc2hfY2FzZSk6IE5ldyBmdW5jdGlvbi4KCSogZGVwZW5kZW5jZS5jOiBJbmNsdWRlIGV4cHIuaC4KCShlbnVtIGRlcGVuZGVuY2VfdHlwZSk6IENoYW5nZSBzcGVsbGluZyBvZiBlbnVtZXJhbHMuCgkoY2hlY2tfbm9kZV9kZXBlbmRlbmNlKTogQWRqdXN0LgoJKiBleHByLmggKGxhbmdfc2FmZV9mcm9tX3ApOiBEZWNsYXJlLgoJKHNhZmVfZnJvbV9wKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAobGFuZ19zYWZlX2Zyb21fcCk6IE5ldyB2YXJpYWJsZS4KCShzYWZlX2Zyb21fcCk6IEdpdmUgaXQgZXh0ZXJuYWwgbGlua2FnZS4gIFVzZSBsYW5nX3NhZmVfZnJvbV9wLgoJKiBzdG10LmMgKGV4cGFuZF9leHByX3N0bXQpOiBBdm9pZCBjbG9iYmVycmluZyBvZiBsYXN0X2V4cHJfdHlwZS4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfZGVjbF9jb21waWxhdGlvbik6IFJvYnVzdGlmeS4KCSogdHJlZS5jIChjb250YWluc19wbGFjZWhvbGRlcl9wKTogTGlrZXdpc2UuCgkqIE1ha2VmaWxlLmluOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKiBvYmpjL29iamMtYWN0Lmg6IEFkanVzdCBjYWxjdWxhdGlvbiBvZiB2YWx1ZSBmb3IgZHVtbXlfdHJlZV9jb2RlLgoJKiBvYmpjL29iamMtYWN0LmM6IEluY2x1ZGUgcnRsLmgsIGV4cHIuaCwgYW5kIGMtY29tbW9uLmguCgkob2JqY19leHBhbmRfZnVuY3Rpb25fZW5kKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF9tZXRob2RfZGVmKTogVXNlIGl0LgoJKGluaXRfb2JqYyk6IEluaXRpYWxpemUgbW9yZSBsYW5ndWFnZS1zcGVjaWZpYyBob29rcy4KCSogb2JqYy9NYWtlLWxhbmcuaW46IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgoyMDAwLTA5LTE2ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IERlZmluZSBtYWNyb3MgdGhhdCBhZmZlY3QgZmVhdHVyZXMgYmVmb3JlCgl0ZXN0aW5nIGZvciBmZWF0dXJlcy4gIERvbid0IGRlZmluZSBfWE9QRU5fU09VUkNFLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGVkLgoKU2F0IFNlcCAxNiAxOTo0Mjo1MCBFRFQgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogcnRsYW5hbC5jIChydHhfdmFyaWVzX3ApOiBWb2xhdGlsZSBhc21zIHZhcnkuCgkocnR4X3Vuc3RhYmxlX3ApOiBSZXN0cnVjdHVyZSBjb2RlLiAgVm9sYXRpbGUgYXNtcwoJYXJlIHVuc3RhYmxlLgoKU2F0IFNlcCAxNiAxNDozNTo1NSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZnVuY3Rpb24uaCAobm9fZGVidWdnaW5nX3N5bWJvbHMpOiBOZXcgZmllbGQuCgkqIGludGVncmF0ZS5jIChzYXZlX2Zvcl9pbmxpbmUpOiBSZW5hbWVkIGZyb20gc2F2ZV9mb3JfaW5saW5lX25vY29weS4KCUluaXRpYWxpemUgbm9fZGVidWdnaW5nX3N5bWJvbHMuCgkob3V0cHV0X2lubGluZV9mdW5jdGlvbik6IFNhdmUgYW5kIHJlc3RvcmUgd3JpdGVfc3ltYm9scyBhbmQgc2V0IGZyb20KCW5vX2RlYnVnZ2luZ19zeW1ib2xzLgoJKiB0b3BsZXYuYyAocmVzdF9vZl9jb21waWxhdGlvbik6IENhbGwgc2F2ZV9mb3JfaW5saW5lLgoJKiB0cmVlLmg6IFVwZGF0ZSBjb21tZW50LgoKCSogc3Rvci1sYXlvdXQuYyAocGxhY2VfZmllbGQpOiBEb24ndCBkbyBhbnl0aGluZyBpZiBmaWVsZCBvcgoJaXRzIHR5cGUgYXJlIEVSUk9SX01BUksuCgpTYXQgU2VwIDE2IDE5OjE0OjAwIDIwMDAgIExhdXJ5bmFzIEJpdmVpbmlzIDxsYXVyYXNAc29mdGhvbWUubmV0PgoKCSogY3BwZmlsZXMuYyAocHVyZ2VfY2FjaGUpOiBVc2UgbXVubWFwIG9ubHkgaWYgTU1BUF9USFJFU0hPTEQgZGVmaW5lZC4KCShyZWFkX2luY2x1ZGVfZmlsZSk6IEVuc3VyZSBpbmMtPm1tYXBlZCBpcyBpbml0aWFsaXplZC4KCjIwMDAtMDktMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjcHBpbGVzLmMgKHB1cmdlX2NhY2hlKTogVXNlIFBUUiBub3QgY2FkZHJfdC4KCjIwMDAtMDktMTYgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogZ2NjLmM6IEluIGRlc2NyaXB0aW9uIGZvciAlezxTfSwgc2F5IHRoZSBvcHRpb24gcmVtb3ZlZCBpcyAtUy4KCSogaW52b2tlLnRleGkgKFNwZWMgRmlsZXMpOiBEaXR0by4KCjIwMDAtMDktMTYgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGNvbmZpZ3VyZS5pbjogQWx3YXlzIGRlZmluZSBfR05VX1NPVVJDRSB0byBtYWtlIGludGVyZmFjZXMKCXZpc2libGUgdGhhdCB3ZXJlIGhpZGRlbiBieSBvbmx5IGRlZmluaW5nIF9HTlVfU09VUkNFLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKU2F0IDE2LVNlcC0yMDAwIDA4OjEzOjQ1IEJTVCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAocHVzaF9tYWNyb19jb250ZXh0KTogU2V0IGFuIGFyZ3VtZW50J3MgbGV2ZWwgYWZ0ZXIKCWNhbGxpbmcgcGFyc2VfYXJncy4gIFdlIGNvdWxkIGxvb3AgaW5maW5pdGVseSBvdGhlcndpc2UuCgoyMDAwLTA5LTE1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVidWlsdC4KCSogY29uZmlndXJlLmluOiBDaGVjayBmb3IgaWNvbnYuaC4gIERlZmluZSBfWE9QRU5fU09VUkNFLgoKMjAwMC0wOS0xNSAgR3JlZyBNY0dhcnkgIDxncmVnQG1jZ2FyeS5vcmc+CgoJKiBjcHBtYWNyby5jIChjaGVja190cmFkX3N0cmluZ2lmaWNhdGlvbik6IENoZWNrIHRva2VuCgl0ZXh0IHBvaW50ZXJzIGFnYWluc3QgbGltaXQgYmVmb3JlIGRlcmVmZXJlbmNpbmcuCgoyMDAwLTA5LTE1ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChmb3JtYXRfd2FudGVkX3R5cGUpOiBOZXcgc3RydWN0dXJlLgoJKGNoZWNrX2Zvcm1hdF90eXBlcyk6IE5ldyBmdW5jdGlvbi4KCShjaGVja19mb3JtYXRfaW5mbyk6IFBhc3MgYWxsIGNoZWNraW5nIG9mIHR5cGVzIG9mIGZvcm1hdAoJYXJndW1lbnRzLCBpbmNsdWRpbmcgd2lkdGggYW5kIHByZWNpc2lvbiBhcmd1bWVudHMsIHRvIHRoaXMgbmV3CglmdW5jdGlvbi4KCjIwMDAtMDktMTUgIEdlcmFsZCBQZmVpZmVyICA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCgkqIEJVR1M6IFJlbW92ZSBmaWxlLgoKMjAwMC0wOS0xNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IGV2NiBjYWNoZSBsYXRlbmNpZXMKCWZyb20gUmljaGFyZCBIZW5kZXJzb24uICBEb24ndCBhbGxvdyAtbW1lbW9yeS1sYXRlbmN5PUwwLgoKCSogY29uZmlnL2FscGhhL2FscGhhLmggKFRBUkdFVF9DUFVfRVY1LCBUQVJHRVRfQ1BVX0VWNik6IERlZmluZS4KCShUQVJHRVRfT1BUSU9OUyk6IEFkZCB0dW5lPS4KCShhbHBoYV90dW5lX3N0cmluZyk6IERlY2xhcmUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChvdmVycmlkZV9vcHRpb25zKTogQWRkIGNwdV90YWJsZS4KCVVzZSBhbHBoYV9jcHVfc3RyaW5nIGZpcnN0IHRvIHNldCBib3RoIGFscGhhX2NwdSBhbmQgdGFyZ2V0X2ZsYWdzCglhbmQgdGhlbiBhbHBoYV90dW5lX3N0cmluZyB0byBzZXQgYWxwaGFfY3B1IG9ubHkuCglSZXBsYWNlIHRlc3RzIGZvciBQUk9DRVNTT1JfRVYqIHdpdGggVEFSR0VUX0NQVV9FViogdGVzdHMuCgkqIGNvbmZpZy9hbHBoYS9lbGYuaCAoQVNNX0ZJTEVfU1RBUlQpOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL29zZi5oIChBU01fRklMRV9TVEFSVCk6IExpa2V3aXNlLgoJKiBjb25maWcvYWxwaGEvb3BlbmJzZC5oIChBU01fRklMRV9TVEFSVCk6IExpa2V3aXNlLgoKRnJpIFNlcCAxNSAxOTo0NTo1NSBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYtcHJvdG9zLmggKG5vX2NvbXBhcmlzb25fb3BlcmF0b3IsIHVub19jb21wYXJpc29uX29wZXJhdG9yKToKCVJlbW92ZS4KCShpeDg2X2NvbXBhcmlzb25fb3BlcmF0b3IsIGl4ODZfY2NfbW9kZSk6IERlY2xhcmUKCSogaTM4Ni5oIChDQ0dDLCBDQ0dDTyk6IE5ldyBtb2Rlcy4KCShTRUxFQ1RfQ0NfTU9ERSk6IE1vdmUgb2ZmbGluZSB0byAuLi4uCgkqIGkzODYuYyAoaXg4Nl9jY19tb2RlKTogLi4uLiBoZXJlOyB1c2UgbmV3IG1vZGVzLgoJKGl4ODZfY29tcGFyaXNvbl9vcGVyYXRvcik6IE5ldy4KCShmY21vdl9jb21wYXJpc29uX29wZXJhdG9yKTogRW5zdXJlIHByb3BlciBtb2RlLgoJKHB1dF9jb25kaXRpb25fbW9kZSk6IE1vcmUgc2FuaXR5IGNoZWNraW5nLgoJKGl4ODZfbWF0Y2hfY2Ntb2RlKTogSGFuZGxlIG5ldyBtb2Rlcy4KCShpeDg2X2V4cGFuZF9mcF9jb21wYXJlKTogR0VVIHJlcXVpcmVzIENDbW9kZS4KCShpeDg2X2V4cGFuZF9zdHJsZW5zaV91bnJvbGxfMSk6IFVzZSBlbWl0X2NtcF9hbmRfanVtcF9pbnNuIGluc3RlYWQgb2YKCWRvaW5nIGl0IGJ5IGhhbmQuCgkqIGkzODYubWQgKGNtcD9pX2Njel8xKTogUmVtb3ZlCgkoY21wP2lfY2Nub18xKTogVXNlIGl4ODZfbWF0Y2hfY2Ntb2RlLgoJKGNtcD9pX21pbnVzXzEpOiBOZXcuCgkoY21wc2lfMSk6IE5ldyBleHBhbmRlci4KCShjbXBxaV9leHRfMSk6IFVzZSBtYXRjaF9jY21vZGUKCShjbXBxaV9leHRfMyk6IE5ldyBleHBhbmRlci4KCShjbXBxaV9leHRfM19pbnNuKTogUmVuYW1lIGZyb20gY21wcWlfZXh0XzMuCgkoY21wcWlfZXh0XzQpOiBVc2UgbWF0Y2hfY2Ntb2RlLgoJKGFkZD9pXz8pOiBVc2UgbWF0Y2hfY2Ntb2RlLgoJKGFkZD9pXzYpOiBOZXcuCgkodGVzdD9pX2Njel8xKTogUmVtb3ZlCgkodGVzdD9pXzEpOiBOZXcuCgkodGVzdHNpX2Njbm9fMSwgdGVzdHFpX2Njel8xLCB0ZXN0cWlfZXh0X2Njbm9fMCk6IE5ldyBleHBhbmRlci4KCSh0ZXN0cWlfZXh0XzApOiBVc2UgaXg4Nl9tYXRjaF9jY21vZGUuCgkoKnhvcnFpX2NjX2V4dF8xKTogVXNlIGl4ODZfbWF0Y2hfY2Ntb2RlLgoJKHhvcnFpX2NjX2V4dF8xKTogTmV3IGV4cGFuZGVyLgoJKHNoaWZ0IHBhdHRlcm5zKTogVXNlIENDR09DbW9kZSBmb3IgYWxsIHNoaWZ0cyBleGNlcHQgZm9yIHNhci4KCShzZXRjY18/LCBqY2NfPywgbWl2P2ljY19uaWMpOiBVc2UgaXg4Nl9jb21wYXJpc29uX29wZXJhdG9yLgoJKHNldGNjXzMsIGpjY18zLCBtaXY/aWNjX2MpOiBSZW1vdmUuCgoyMDAwLTA5LTE1ICBXaWxsIENvaGVuICA8d2NvaGVuQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoYWRkX2NvbnN0X3ZhbHVlX2F0dHJpYnV0ZSk6IENoYW5nZWQgYXJyYXkgaW50byBhCgl4bWFsbG9jZWQgb2JqZWN0LCBzbyBpdCBleGlzdHMgYWZ0ZXIgZnVuY3Rpb24gZXhpdC4KCShmcmVlX0FUKTogQWRkZWQgY2FzZSBmb3IgZHdfdmFsX2NsYXNzX2Zsb2F0IHRvIGZyZWUgYWxsb2NhdGVkCgltZW1vcnkuCgoyMDAwLTA5LTE1ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQ6IEZpeCBhIGNvbW1lbnQgdHlwby4KCSogZ2NjLmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wOS0xNSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBvcHRhYnMuYyAoZW1pdF9saWJjYWxsX2Jsb2NrKTogSWYgdGFyZ2V0IGlzIGEgdXNlciB2YXJpYWJsZSwKCWNvcHkgdG8gYSB0ZW1wb3JhcnkgZmlyc3QuCgkqIGV4cHIuYyAoY29udmVydF9tb3ZlKTogV2hlbiBnZW5lcmF0aW5nIGEgbGliY2FsbCwgbWFrZSBhIGxpYmNhbGwKCWJsb2NrLgoJKiBjYWxscy5jIChlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogRG9uJ3QgY3JlYXRlIGEgbGliY2FsbAoJc2VxdWVuY2UgaGVyZTsgb3VyIGNhbGxlciB3aWxsIGluIG1vc3QgY2FzZXMgZG8gaXQuCgoJKiBzaC5oIChTRUNPTkRBUllfSU5QVVRfUkVMT0FEX0NMQVNTKTogSGFuZGxlIG1vdmluZyBULCBNQUNMIG9yCglNQUNIIGludG8gRlBVTC4KCShTRUNPTkRBUllfT1VUUFVUX1JFTE9BRF9DTEFTUyk6IFNpbWlsYXIgY2FzZS4KCSogc2gubWQgKHJlbG9hZF9vdXRzZik6IEdlbmVyYXRlIHJlY29nbml6YWJsZSBwYXR0ZXJucyBmb3IKCVRBUkdFVF9TSDNFLgoJKGZsb2F0c2lzZjIsIGZsb2F0c2lzZjJfaWUsIGZsb2F0c2lzZjJfaTQsIGZpeF90cnVuY3Nmc2kyLAoJZml4X3RydW5jc2ZzaTJfaTQsIGZpeHNmc2ksIGZsb2F0c2lkZjIsIGZsb2F0c2lkZjJfaSwgZml4X3RydW5jZGZzaTIsCglmaXhfdHJ1bmNkZnNpMl9pLCBleHRlbmRzZmRmMiwgZXh0ZW5kc2ZkZjJfaTQsIHRydW5jZGZzZjIsCgl0cnVuY2Rmc2YyX2k0KTogQ2hhbmdlIG5vdCB0byB1c2UgZXhwbGljaXQgcmVmZXJlbmNlcyB0byBmcHVsLgoJKGZsb2F0c2lzZjJfaWUpOiBSZW1vdmUgVVNFIG9mIGZwc2NyLgoJKGZsb2F0c2lzZjIpOiBDaGFuZ2UgZGVmYXVsdCBleHBhbnNpb24gdG8gbWF0Y2ggdGhpcy4KCShmaXhfdHJ1bmNzZnNpMl9pNF8yLCBmaXhfdHJ1bmNkZnNpMl9pNCAmIHNwbGl0dGVycyk6IENvbW1lbnQgb3V0Cgl1bnVzZWQgcGF0dGVybnMuCgoyMDAwLTA5LTE1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZXhwbWVkLmMgKHN0b3JlX2JpdF9maWVsZCk6IENvbnNpZGVyIG5hdHVyYWxseSBhbGlnbmVkCgltZW1vcnkgZm9yIGRpcmVjdCByZWZlcmVuY2UuCgoyMDAwLTA5LTE1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2V4cGFuZF91bmFsaWduZWRfbG9hZCk6IEZvcmNlIGFsbAoJQU5EIGFkZHJlc3NlcyBpbnRvIGFsaWFzIHNldCAwLgoJKGFscGhhX2V4cGFuZF91bmFsaWduZWRfc3RvcmUpOiBMaWtld2lzZS4KCShhbHBoYV9leHBhbmRfdW5hbGlnbmVkX2xvYWRfd29yZHMpOiBMaWtld2lzZS4KCShhbHBoYV9leHBhbmRfdW5hbGlnbmVkX3N0b3JlX3dvcmRzKTogTGlrZXdpc2UuCgoyMDAwLTA5LTE1ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIGNvbmZpZy9zaC9zaC5oIChDUFBfU1BFQyk6IEZvciAtbTQtbm9mcHUsIGRlZmluZSBfX1NINF9OT0ZQVV9fLgoJKiBjb25maWcvc2gvbGliMWZ1bmNzLmFzbSAobW92c3RyX2k0KTogQWxzbyBjb21waWxlIGlmIF9fU0g0X05PRlBVX18KCWlzIGRlZmluZWQuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc192YV9hcmcpOiBBcmdzIHBhc3NlZCBieSByZWZlcmVuY2UgaGF2ZSBhCglyc2l6ZSBvZiBVTklUU19QRVJfV09SRC4KCkZyaSAxNS1TZXAtMjAwMCAwNjo0OTowNyBCU1QgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGV4LmMgKE9OX1JFU1RfQVJHKTogQ29ycmVjdCB0aGUgdGVzdC4KCShtYXliZV9wYXN0ZV93aXRoX25leHQpOiBEdXBsaWNhdGUgYSB0b2tlbiB0aGF0IGZhaWwgcGFzdGluZywKCWFuZCBjbGVhciBpdHMgUEFTVEVfTEVGVCBmbGFnLCBzbyB0aGF0IG5lc3RlZCBwYXN0aW5nIGF0dGVtcHRzCglkbyBub3Qgb2NjdXIuCgoyMDAwLTA5LTE0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY2FsbHMuYyAocHJlY29tcHV0ZV9yZWdpc3Rlcl9wYXJhbWV0ZXJzKTogVXNlIENPU1RTX05fSU5TTlMsIG5vdCAyLgoJKiBjc2UuYyAocnR4X2Nvc3QpOiBMaWtld2lzZS4KCSogb3B0YWJscy5jIChleHBhbmRfYmlub3ApOiBMaWtld2lzZS4KCShleHBhbmRfdHdvdmFsX2Jpbm9wLCBwcmVwYXJlX2NtcF9pbnNuKTogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmMgKGNvcHlfY29zdCk6IExpa2V3aXNlLgoJKiByZWxvYWQxLmMgKHJlbG9hZF9jc2VfbW92ZTJhZGQpOiBMaWtld2lzZS4KCjIwMDAtMDktMTQgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtcGFyc2UuaW4gKHJlc3dvcmRzKTogQWRkIF9Db21wbGV4LgoKMjAwMC0wOS0xNCAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBnY2MuMTogRGVsZXRlIGRvY3VtZW50YXRpb24gZm9yIC11bmRlZiBwcmVwcm9jZXNzb3Igb3B0aW9uLgoKMjAwMC0wOS0xNCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2guaCAoSU5JVF9TRUNUSU9OX0FTTV9PUCwgRklOSV9TRUNUSU9OX0FTTV9PUCwKCVNUQVJURklMRV9TUEVDLCBFTkRGSUxFX1NQRUMpOiBSZW1vdmUgZGVmaW5lLgoJKiBjb25maWcvc2gvZWxmLmggKElOSVRfU0VDVElPTl9BU01fT1AsIEZJTklfU0VDVElPTl9BU01fT1ApOgoJUmVtb3ZlIHVuZGVmaW5lIGJlZm9yZSBjb25maWcvZWxmb3MuaC4KCSogY29uZmlnL3NoL3Qtc2ggKEVYVFJBX01VTFRJTElCX1BBUlRTKTogQ29tbWVudCBvdXQuCgoyMDAwLTA5LTE0ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGludm9rZS50ZXhpIChIOC8zMDAgT3B0aW9ucyk6IEFkZCAtbXMyNjAwLgoJKiBjb25maWcvaDgzMDAuYyAoaDgzMDBfaW5pdF9vbmNlKTogT3V0cHV0IGFuIGVycm9yIHdoZW4gLW1zMjYwMAoJaXMgdXNlZCB3aXRob3V0IC1tcy4KCSogY29uZmlnL2g4MzAwLmggKFRBUkdFVF9NQUMpOiBOZXcuCgkoVEFSR0VUX1NXSVRDSEVTKTogQWRkIC1tczI2MDAgYW5kIC1tbm8tczI2MDAuCgkoQ09ORElUSU9OQV9SRUdJU1RFUl9VU0FHRSk6IERpc2FibGUgdGhlIG1hYyByZWdpc3RlciBvbiBhbnkKCW1hY2hpbmUgb3RoZXIgdGhhbiBIOC9TMjYwMC4KCSogY29uZmlnL2g4MzAwLm1kOiBBY2NlcHQgbWFjIGluc3RydWN0aW9ucyBvbiB0aGUgSDgvUzI2MDAgaW5zdGVhZAoJb2YgdGhlIEg4L1MyMDAwLgoKMjAwMC0wOS0xNCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+LCBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHNfYWRkcmVzc18xKTogR2VuZXJhdGUgcmVsb2FkcyBmb3IgYXV0b19pbmMKCXBzZXVkb3MgdGhhdCByZWZlciB0byB0aGUgb3JpZ2luYWwgcHNldWRvcywgbm90IG9ubHkgdG8gdGhlaXIKCWVxdWl2YWxlbnQgbWVtb3J5IGxvY2F0aW9ucy4KClRodSBTZXAgMTQgMTI6MTA6MTYgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIsIGNhc2UgQ09NUE9ORU5UX0VYUFIpOiBDb3B5IG1lbW9yeSBhdHRyaWJ1dGVzCgl3aGVuIG1ha2luZyBuZXcgTUVNLgoKCSogTWFrZWZpbGUuaW4gKExOKTogUmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9uLgoKMjAwMC0wOS0xMiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJRnJvbSBKb2VybiBSZW5uZWNrZToKCSogbG9jYWwtYWxsb2MuYyAodXBkYXRlX2VxdWl2X3JlZ3MpOiBJZiB0aGVyZSBpcyBubyBSRUdfRVFVQUwgbm90ZQoJb24gYW4gaW5zbiBhbmQgZnVuY3Rpb25faW52YXJpYW50X3AgcmV0dXJucyBub256ZXJvIGZvciB0aGUgc291cmNlLAoJYWRkIGEgUkVHX0VRVUFMIG5vdGUuCgpUaHUgU2VwIDE0IDAwOjUxOjU3IEVEVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBhbGlhcy5jIChtZW1yZWZzX2NvbmZsaWN0X3ApOiBBbiBBRERSRVNTT0YgZG9lc24ndAoJY29uZmxpY3Qgd2l0aCBmcmFtZV9wb2ludGVyX3J0eC4KCjIwMDAtMDktMTMgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogbG9vcC5jOiBGaXggZm9ybWF0dGluZy4KCSogbG9vcC5oOiBMaWtld2lzZS4KCjIwMDAtMDktMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChkaXZzZjMpOiBOZXcuCgkoZGl2c2YzX2ludGVybmFsX2xhdCwgZGl2c2YzX2ludGVybmFsX3Rocik6IE5ldy4KCShkaXZkZjMsIGRpdmRmM19pbnRlcm5hbF9sYXQsIGRpdmRmM19pbnRlcm5hbF90aHIpOiBOZXcuCgkoZGl2dGYzLCBkaXZ0ZjNfaW50ZXJuYWxfbGF0LCBkaXZ0ZjNfaW50ZXJuYWxfdGhyKTogTmV3LgoJKGFkZGRmM190cnVuYywgc3ViZGYzX3RydW5jLCBtdWxkZjNfdHJ1bmMpOiBOZXcuCgkobWFkZGRmNF90cnVuYywgbXN1YmRmNF90cnVuYywgbm11bGRmM190cnVuYyk6IE5ldy4KCShubWFkZGRmNF9hbHRzLCBubWFkZGRmNF90cnVuYyk6IE5ldy4KCShhZGR0ZjNfdHJ1bmNzZiwgYWRkdGYzX3RydW5jZGYsIHN1YnRmM190cnVuY3NmKTogTmV3LgoJKHN1YnRmM190cnVuY2RmLCBtdWx0ZjNfdHJ1bmNzZiwgbXVsdGYzX3RydW5jZGYpOiBOZXcuCgkobXVsdGYzX3RydW5jc2ZfYWx0cywgbXVsdGYzX3RydW5jZGZfYWx0cyk6IE5ldy4KCShtYWRkdGY0X3RydW5jc2YsIG1hZGR0ZjRfdHJ1bmNkZiwgbWFkZHRmNF9hbHRzX3RydW5jZGYpOiBOZXcuCgkobXN1YnRmNF90cnVuY3NmLCBtc3VidGY0X3RydW5jZGYsIG5tdWx0ZjNfdHJ1bmNzZik6IE5ldy4KCShubXVsdGYzX3RydW5jZGYsIG5tYWRkdGY0X3RydW5jc2YsIG5tYWRkdGY0X3RydW5jZGYpOiBOZXcuCgkobm1hZGR0ZjRfdHJ1bmNkZl9hbHRzKTogTmV3LgoJKHJlY2lwX2FwcHJveCk6IERvbid0IHByZWRpY2F0ZS4KCjIwMDAtMDktMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9saWIxZnVuY3MuYXNtIChfX2RpdnNmMyk6IFByb3RlY3QgZm5vcm0ucyB3aXRoIHA2LgoKMjAwMC0wOS0xMyAgU3RlcGhhbmUgQ2FycmV6ICA8U3RlcGhhbmUuQ2FycmV6QHdvcmxkbmV0LmZyPgoKCSogZmxhZ3MuaCAoZmxhZ19kdW1wX3J0bF9pbl9hc20pOiBEZWNsYXJlLgoJKiB0b3BsZXYuYyAoZmxhZ19kdW1wX3J0bF9pbl9hc20pOiBEZWZpbmUuCgkoZGVjb2RlX2Rfb3B0aW9uKTogU2V0IGZsYWdfZHVtcF9ydGxfaW5fYXNtIGFuZCBmbGFnX3ByaW50X2FzbV9uYW1lCglpZiAtZFAgaXMgc3BlY2lmaWVkLgoJKiBydGwuaCAocHJpbnRfcnR4X2hlYWQpOiBEZWNsYXJlLgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4X2hlYWQpOiBEZWZpbmUuCgkocHJpbnRfcnR4KTogUHJpbnQgdGhlIHN0cmluZyBwb2ludGVkIHRvIGJ5IHByaW50X3J0eF9oZWFkCglhdCBiZWdpbm5pbmcgb2YgZWFjaCBkdW1wIGxpbmUuCgkocHJpbnRfcnRsKTogTGlrZXdpc2UuCgkocHJpbnRfcnRsX3NpbmdsZSk6IExpa2V3aXNlLgoJKiBmaW5hbC5jIChmaW5hbF9zY2FuX2luc24pOiBEdW1wIHRoZSBpbnNuIGluIHRoZSBhc3NlbWJseQoJZmlsZSBmb3IgZGVidWdnaW5nLgoJKiBnY2MuMTogRG9jdW1lbnQgLWRQIG9wdGlvbi4KCSogaW52b2tlLnRleGkgKERlYnVnZ2luZyBPcHRpb25zKTogTGlrZXdpc2UuCgoyMDAwLTA5LTEzICBTdGVwaGFuZSBDYXJyZXogIDxTdGVwaGFuZS5DYXJyZXpAd29ybGRuZXQuZnI+CgoJKiBtZC50ZXhpIChNYWNoaW5lIENvbnN0cmFpbnRzKTogRG9jdW1lbnQgdGhlIDY4SEMxMSBjb25zdHJhaW50cy4KCSogaW5zdGFsbC50ZXhpIChDb25maWd1cmF0aW9ucyk6IERvY3VtZW50IHRoZSA2OEhDMTEmNjhIQzEyIHBvcnQuCgkqIGludm9rZS50ZXhpIChPcHRpb24gU3VtbWFyeSwgTTY4aGMxeCBPcHRpb25zKTogRG9jdW1lbnQgdGhlIG9wdGlvbnMuCgpUdWUgU2VwIDEyIDEzOjUxOjEzIDIwMDAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjb25maWcvYXZyL2F2ci5oIChBU1NFTUJMRVJfRElBTEVDVCk6IE5ldyBtYWNybyBkZWNsYXJlZC4KCSogY29uZmlnL2F2ci9hdnIubWQgKCptb3ZzdHJxaV9pbnNuKTogQ2xlYW51cCBvdXRwdXQgdGVtcGxhdGUuCgkoKmNscnN0cnFpKTogTGlrZXdpc2UuCgkoeG9yaGkzLHhvcnNpMyxhYnNxaTIpOiBMaWtld2lzZS4KCShvbmVfY21wbGhpMixvbmVfY21wbHNpMik6IExpa2V3aXNlLgoJKGFkZHNpMyk6IFR3byBzdHVwaWQgY29uc3RyYWludCBhbHRlcm5hdGl2ZXMgcmVtb3ZlZC4KCShleHRlbmRoaXNpMik6IFVzZSBgbW92dycgZm9yIGVuaGFuY2VkIGF2ciBjb3Jlcy4KCSh6ZXJvX2V4dGVuZGhpc2kyKTogTGlrZXdpc2UuCgpXZWQgU2VwIDEzIDAyOjMxOjIzIEVEVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBhbGlhcy5jIChmaW5kX2Jhc2VfdGVybSk6IFVzZSBmcmFtZV9wb2ludGVyX3J0eAoJd2hlbiBoYW5kbGluZyBhbiBBRERSRVNTT0YuCgoJKiBjc2UuYyAoY2Fub25faGFzaCk6IEhhbmRsZSBVU0Ugb2YgQkxLbW9kZSBtZW1vcnkuCgkoY3NlX2luc24pOiBPdXRnb2luZyBhcmd1bWVudHMgZm9yIGEgbGliY2FsbCBkb24ndAoJYWZmZWN0IGFueSByZWNvcmRlZCBleHByZXNzaW9ucy4KCjIwMDAtMDktMTIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWJ1aWx0LgoJKiBjb25maWd1cmUuaW46IENoZWNrIGZvciBpY29udiwgbmxfbGFuZ2luZm8sIGxhbmdpbmZvLmguCgoyMDAwLTA5LTEyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGMtbGV4LmMgKGxleF9zdHJpbmcpOiBVc2UgY2hhcndpZHRoIHRvIGNvbXB1dGUgYnl0ZW1hc2suCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBEb24ndCBvcHRpbWl6ZSBjb25zdGFudCBhcnJheSByZWZlcmVuY2VzCglpbml0aWFsaXplZCB3aXRoIHdpZGUgc3RyaW5nIGNvbnN0YW50cy4KCjIwMDAtMDktMTMgIE1pY2hhZWwgSGF5ZXMgIDxtaGF5ZXNAY3lnbnVzLmNvbT4KCgkqIGxvb3AuYyAobm90ZV9zZXRfcHNldWRvX211bHRpcGxlX3VzZXMpOiBDb3JyZWN0LgoKMjAwMC0wOS0xMiAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogaWZjdnQuYyAobm9jZV9wcm9jZXNzX2lmX2Jsb2NrKTogSWYgQSBhbmQgQiBhcmUgdGhlIHNhbWUsIGFuZCBubwoJZWxzZSBibG9jaywgYW5kIFggaGFzIHNpZGUtZWZmZWN0cywgdGhlbiBmYWlsLgoKMjAwMC0wOS0xMiAgR3JlZyBNY0dhcnkgIDxncmVnQG1jZ2FyeS5vcmc+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oCgkodHJhcF9jbXBfb3AsIG1pcHNfZ2VuX2NvbmRpdGlvbmFsX3RyYXApOiBOZXcgZnVuYyBkZWNscy4KCSogY29uZmlnL21pcHMvbWlwcy5oIChJU0FfSEFTX0NPTkRfVFJBUCk6IE5ldyBtYWNyby4KCShQUkVESUNBVEVfQ09ERVMpOiBBZGQgInRyYXBfY21wX29wIi4KCSogY29uZmlnL21pcHMvbWlwcy5jCgkodHJhcF9jbXBfb3AsIG1pcHNfZ2VuX2NvbmRpdGlvbmFsX3RyYXApOiBOZXcgZnVuY3Rpb25zLgoJKiBjb25maWcvbWlwcy9taXBzLm1kICh0cmFwLCBjb25kaXRpb25hbF90cmFwKTogTmV3IHBhdHRlcm5zLgoKMjAwMC0wOS0xMiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBmbG93LmMgKHRyeV9wcmVfaW5jcmVtZW50XzEpOiBEb24ndCBkbyBhbnl0aGluZyB0byBzZXRzIG9mIHRoZSBzdGFjawoJcG9pbnRlci4KCjIwMDAtMDktMTIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmMgKGJ1aWx0X2luX2RlY2xzKTogTmV3IGFycmF5LgoJKGV4cGFuZF9idWlsdGluX2ZwdXRzKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9idWlsdGluKTogSGFuZGxlIEJVSUxUX0lOX0ZQVVRDIGFuZCBCVUlMVF9JTl9GUFVUUy4KCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fRlBVVEMsIEJVSUxUX0lOX0ZQVVRTKTogTmV3IG1lbWJlcnMuCgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMpOiBIYW5kbGUgZnB1dGMvZnB1dHMuCgoJKiB0cmVlLmggKGJ1aWx0X2luX2RlY2xzKTogTmV3IGFycmF5LgoKVHVlIFNlcCAxMiAwODo1Mzo1NyAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBjb252ZXgubWQ6IFVzZSAiKyIgaW5zdGVhZCBvZiAiPSIgZm9yIG91dHB1dHMgd3JhcHBlZCBpbiBhCglTVFJJQ1RfTE9XX1BBUlQuCgkqIGkzNzAubWQsIGkzODYubWQsIG5zMzJrLm1kLCBzaC5tZCwgdmF4Lm1kOiBMaWtld2lzZS4KCjIwMDAtMDktMTIgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaGFpZmEtc2NoZWQuYzogRml4IGZvcm1hdHRpbmcuCgoJKiBnZW5hdHRydGFiLmM6IEZpeCBmb3JtYXR0aW5nLgoKCSogdW5yb2xsLmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wOS0xMiAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvZml4Zml4ZXMuYzogbWFrZSBhIHR5cGUgZm9yIHRoZSBmaXggcHJvY2VkdXJlICYgdXNlIGl0LAoJcmVtb3ZlIG9ic29sZXRlIGNvZGUKCSogZml4aW5jL2ZpeGluY2wuYzogVXNlIFBBUkFNUywgbm90IF9QXy4gIEFkZCBuby1vcCBkZWZhdWx0IHRvIHN3aXRjaC4KCSogZml4aW5jL2ZpeGluY2wudHBsOiBtYWtlIG5vbi1leHBvcnRlZCBhcnJheXMgc3RhdGljIHNjb3BlCgkqIGZpeGluYy9maXhpbmNsLng6IHJlZ2VuZXJhdGUKCSogZml4aW5jL2ZpeGxpYi5oOiBVc2UgUEFSQU1TLCBub3QgX1BfCgkqIGZpeGluYy9maXh0ZXN0cy5jOiBtYWtlIGEgdHlwZSBmb3IgdGhlIHRlc3QgcHJvYyAmIHVzZSBpdAoJKiBmaXhpbmMvc2VydmVyLmg6IFVzZSBQQVJBTVMsIG5vdCBfUF8KCjIwMDAtMDktMTIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtdHlwZWNrLmMgKHByb2Nlc3NfaW5pdF9lbGVtZW50KTogQXZvaWQgdW5pb24gaW5pdCB3YXJuaW5ncyBvbgoJZmxvYXRpbmcgcG9pbnQgemVyby4gIERvbid0IGNyYXNoIG9uIHVuaW9ucyBjb250YWluaW5nIHN0cnVjdHMuCgoyMDAwLTA5LTEyICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5oIChQUkVESUNBVEVfQ09ERVMpOiBBZGQgQ09OU1RfRE9VQkxFIHRvCglnZW5lcmFsX21vdnNyY19vcGVyYW5kLCBhbmQgcmVtb3ZlIENPTlNUX0lOVCBmcm9tCglnZW5lcmFsX21vdmRzdF9vcGVyYW5kLgoKMjAwMC0wOS0xMiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBjc2UuYyAoYXBwcm94X3JlZ19jb3N0KTogSWYgU01BTExfUkVHSVNURVJfQ0xBU1NFUywgcmV0dXJuIElOVF9NQVgKCWlmIGEgcmVmZXJlbmNlIHRvIG5vbi1maXhlZCBoYXJkcmVnIGlzIHNlZW4uICBPdGhlcndpc2UsIGNvdW50IGhhcmQKCXJlZ3Mgd2l0aCBhIGhpZ2hlciBjb3N0LgoJKHByZWZlcnJhYmxlKTogRGVhbCB3aXRoIGNhc2VzIHdoZXJlIGVpdGhlciBjb3N0IG9yIHJlZ2Nvc3QgaXMKCU1BWF9DT1NULgoJKGNzZV9pbnNuKTogVXNlIE1BWF9DT1NUIHJhdGhlciB0aGFuIDEwMDAwLiAgQWx3YXlzIGluaXRpYWxpemUKCXJlZ2Nvc3QgdmFsdWVzLgoJKENPU1RTX05fSU5TTlMpOiBNb3ZlIGRlZmluaXRpb24uLi4KCSogcnRsLmg6IC4uLmhlcmUuCgkoTUFYX0NPU1QpOiBOZXcgbWFjcm8uCgkqIGxvb3AuYyAoaW5pdF9sb29wKTogVXNlIENPU1RTX05fSU5TTlMgbWFjcm8gaW5zdGVhZCBvZiBoYXJkY29kZWQKCWNvbnN0YW50LgoKMjAwMC0wOS0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtY29tbW9uLmggKGdlbnJ0bF9jbGVhcl9vdXRfYmxvY2spOiBSZW1vdmUuCgkqIGMtc2VtYW50aWNzLmMgKGdlbnJ0bF9jbGVhcl9vdXRfYmxvY2spOiBSZW1vdmUuCgkoZ2VucnRsX3doaWxlX3N0bXQpOiBEb24ndCBjYWxsIGl0LgoJKGdlbnJ0bF9mb3Jfc3RtdCk6IExpa2V3aXNlLgoKMjAwMC0wOS0xMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZmlsZXMuYzogTW92ZSBhbGwgZGVmYXVsdC0jZGVmaW5lcyB0byB0b3Agb2YgZmlsZS4KCShvcGVuX2luY2x1ZGVfZmlsZSk6IFJlcGxhY2UgYnkgbG9va3VwX2luY2x1ZGVfZmlsZS4KCShyZWFkX3dpdGhfcmVhZCwgcmVhZF9maWxlKTogTWVyZ2VkIGludG8gcmVhZF9pbmNsdWRlX2ZpbGUuCgkoc3RhY2tfaW5jbHVkZV9maWxlLCBwdXJnZV9jYWNoZSk6IE5ldyBmdW5jdGlvbnMuCgkoY2xvc2VfY2FjaGVkX2ZkKTogRGVsZXRlLgoJKGxvb2t1cF9pbmNsdWRlX2ZpbGUsIHJlYWRfaW5jbHVkZV9maWxlLCBfY3BwX3BvcF9maWxlX2J1ZmZlcik6CglDYWNoZSB0aGUgaW4tbWVtb3J5IGJ1ZmZlciwgbm90IHRoZSBmaWxlIGRlc2NyaXB0b3IuCgoJKiBjcHBoYXNoLmggKHN0cnVjdCBpbmNsdWRlX2ZpbGUpOiBBZGQgYnVmZmVyLCBzdCwgcmVmY250LAoJbWFwcGVkIGZpZWxkcy4KCSh4Y25ldyk6IE5ldyB1dGlsaXR5IG1hY3JvLgoJKERPX05PVF9SRVJFQUQsIE5FVkVSX1JFUkVBRCk6IE1vdmUgdXAgYnkgc3RydWN0IGluY2x1ZGVfZmlsZS4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfYnVmZmVyKTogUmVtb3ZlIG1hcHBlZCBmaWVsZC4KCjIwMDAtMDktMTEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxleC5jIChwYXJzZV9zdHJpbmcpOiBBY2NlcHQgYmFja3NsYXNoIHNwYWNlIG5ld2xpbmUgYXMgYQoJbGluZSBjb250aW51YXRpb24uCgkobGV4X2xpbmUpOiBMaWtld2lzZS4KCShfY3BwX2dldF90b2tlbik6IFJlbW92ZSBoYXJkIGxpbWl0IG9uIG1hY3JvIG5lc3RpbmcuCgoyMDAwLTA5LTEyICBQaGlsaXBwIFRob21hcyAgPHB0aG9tYXNAc3VzZS5kZT4KCgkqIGFjbG9jYWwubTQgKEFNX1dJVEhfTkxTKTogRG9uJ3QgZm9yY2UgdXNlIG9mIGluY2x1ZGVkIGdldHRleHQuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDAtMDktMTMgIE1pY2hhZWwgSGF5ZXMgIDxtaGF5ZXNAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoc3BsaXRfYmxvY2spOiBGaXggdXBkYXRlIG9mIHJlZ2lzdGVycyBsaXZlIGF0CgllbmQgb2Ygc3BsaXQgYmxvY2suCgpUdWUgU2VwIDEyIDAxOjUxOjM4IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoYWRkP2lfMywgYWRkP2lfNSk6IE5ldy4KCShhZGQ/aV80KTogUmVuYW1lIGZyb20gYWRkP2lfMzsgIEZpeCBjb21wYXJlIHBhdHRlcm4uCgkoc3ViP2lfMywgeG9yP2lfMywgaW9yP2lfMyk6IE5ldy4KCgkqIGdlbnJlY29nLmMgKHdyaXRlX3RyZWUpOiBPdXRwdXQgY29kZSB0byBjbGVhciBpbnNuX2V4dHJhY3QgY2FjaGUuCgkqIGdlbmF0dHJ0YWIuYyAod3JpdGVfYXR0cl9jYXNlKTogR2VuIGNhbGwgdG8gZXh0cmFjdF9pbnNuX2NhY2hlCglpbnN0ZWFkIG9mIGV4dHJhY3RfaW5zbiBhbmQgZXh0cmFjdF9jb25zdHJhaW5faW5zbl9jYWNoZSBpbnN0ZWFkIG9mCglleHRyYWN0X2luc24gYW5kIGNvbnN0cmFpbl9vcGVyYW5kcy4KCSogcmVjb2cuYyAoZXh0cmFjdF9pbnNuX2NhY2hlZCwgZXh0cmFjdF9jb25zdHJhaW5faW5zbl9jYWNoZWQpOgoJTmV3IGZ1bmN0aW9ucy4KCShleHRyYWN0X2luc24pOiBDbGVhciB3aGljaF9hbHRlcm5hdGl2ZS4KCShjb25zdHJhaW5fb3BlcmFuZHMpOiBTZXQgd2hpY2hfYWx0ZXJuYXRpdmUgdG8gLTEgd2hlbiBmYWlsZWQuCgkqIHJlY29nLmggKGV4dHJhY3RfY29uc3RyYWluX2luc25fY2FjaGVkLCBleHRyYWN0X2luc25fY2FjaGVkKToKCURlY2xhcmUuCgoyMDAwLTA5LTExICBNYXR0aGV3IEhpbGxlciAgPGhpbGxlckByZWRoYXQuY29tPgoKCSogY29uZmlnL2g4MzAwL2g4MzAwLm1kIChtb3ZzdHJpY3RxaSk6IENoYW5nZWQgY29uc3RyYWludCBtb2RpZmllcgoJb24gb3BlcmFuZCAwIHRvICcrJy4KCShtb3ZzdHJpY3RoaSk6IExpa2V3aXNlLgoKMjAwMC0wOS0xMiAgTWljaGFlbCBIYXllcyAgPG1oYXllc0BjeWdudXMuY29tPgoKCSogbG9vcC5oIChMT09QX0lWUyk6IE5ldyBtYWNyby4KCShSRUdfSVZfVFlQRSwgUkVHX0lWX0lORk8pOiBBZGQgaXZzIGFyZ3VtZW50LgoJKHN0cnVjdCBsb29wX2l2cyk6IE5ldy4KCShzdHJ1Y3QgbG9vcF9pbmZvKTogQWRkIGl2cyBmaWVsZC4KCShyZWdfaXZfdHlwZSwgcmVnX2l2X2luZm8pOiBEZWxldGUgcHJvdG90eXBlLgoJKHJlZ19iaXZfY2xhc3MsIGxvb3BfaXZfbGlzdCk6IExpa2V3aXNlLgoJKiBsb29wLmMgKHJlY29yZF9iaXYsIGZpbmRfbGlmZV9lbmQpOiBQYXNzIGxvb3AgYXJndW1lbnQuCgkocmVnX2l2X3R5cGUpOiBSZW1vdmUgZ2xvYmFsIGFycmF5IGFuZCB1c2UKCWZpZWxkIGluIGxvb3BfcmVncyBzdHJ1Y3R1cmUgd2l0aGluIGxvb3BfaXZzIHN0cnVjdHVyZS4KCShyZWdfaXZfaW5mbywgcmVnX2Jpdl9jbGFzcywgbG9vcF9pdl9saXN0KTogTGlrZXdpc2UuCgkoZmlyc3RfaW5jcmVtZW50X2dpdiwgbGFzdF9pbmNyZW1lbnRfZ2l2KTogVXNlIGVudHJ5IGluCglsb29wX2l2cyBzdHJ1Y3R1cmUuCgkocmVjb3JkX2luaXRpYWwpOiBQYXNzIGl2cyBwb2ludGVyLgoJKiB1bnJvbGwuYyAoY29weV9sb29wX2JvZHksIHJlbWFwX3NwbGl0X2JpdnMpOiBBZGQgbG9vcCBhcmd1bWVudC4KCjIwMDAtMDktMTIgIE1pY2hhZWwgSGF5ZXMgIDxtaGF5ZXNAY3lnbnVzLmNvbT4KCgkqIGxvb3AuaCAoTE9PUF9SRUdTKTogTmV3IG1hY3JvLgoJKHN0cnVjdCBsb29wX3JlZ3MpOiBOZXcuCgkoc3RydWN0IGxvb3BfaW5mbyk6IEFkZCByZWdzIGZpZWxkLgoJKiBsb29wLmMgKHNldF9pbl9sb29wKTogUmVtb3ZlIGdsb2JhbCBhcnJheSBhbmQgc3RvcmUKCWluIGxvb3BfcmVncyBzdHJ1Y3R1cmUgYXMgcGFydCBvZiBsb29wX2luZm8gc3RydWN0dXJlLgoJKG5fdGltZXNfc2V0LCBtYXlfbm90X29wdGltaXplKTogTGlrZXdpc2UuCgkocmVnX3NpbmdsZV91c2FnZSwgbW92ZWRfb25jZSk6IExpa2V3aXNlLgoJKGNvdW50X29uZV9zZXQpOiBBZGQgcmVncyBhcmd1bWVudC4KCShjb21iaW5lX21vdmFibGVzLCBydHhfZXF1YWxfZm9yX2xvb3BfcCwgY29tYmluZV9naXZzKTogTGlrZXdpc2UuCgkoc2V0X3BzZXVkb19tdWx0aXBsZV91c2VzKTogUGFzcyByZWdzIHBvaW50ZXIuCgoyMDAwLTA5LTEyICBNaWNoYWVsIEhheWVzICA8bWhheWVzQGN5Z251cy5jb20+CgoJKiB1bnJvbGwuYyAoaXRlcmF0aW9uX2luZm8pOiBTdWJzdW1lIGludG8gbG9vcF9pdGVyYXRpb25zLgoJKiBsb29wLmggKGxvb3BfaW5mbyk6IE5ldyBmaWVsZCBpdi4KCjIwMDAtMDktMTIgIE1pY2hhZWwgSGF5ZXMgIDxtaGF5ZXNAY3lnbnVzLmNvbT4KCgkqIGJhc2ljLWJsb2NrLmggKExPT1BfVFJFRSwgTE9PUF9QUkVfSEVBREVSLCBMT09QX0VER0VTKTogTmV3LgoJKExPT1BfRVhJVFNfRE9NUywgTE9PUF9BTEwpOiBMaWtld2lzZS4KCShmbG93X2xvb3BzX3VwZGF0ZSk6IE5ldyBwcm90b3R5cGUuCgkoZmxvd19sb29wc19maW5kKTogQWRkIGZsYWdzIHRvIHByb3RvdHlwZS4KCShzdHJ1Y3QgbG9vcCk6IEFkZCBgcHJlX2hlYWRlcl9yb290JyBhbmQgYHByZV9oZWFkZXJfdHJhY2UnIGZpZWxkcy4KCSogZmxvdy5jIChmbG93X2xvb3BfcHJlX2hlYWRlcl9zY2FuKTogTmV3LgoJKGZsb3dfbG9vcF9kdW1wKTogRHVtcCBwcmUtaGVhZGVyIHJvb3QgYW5kIHRyYWNlIGFuZCBleGl0IGRvbWluYXRvcnMuCgkoZmxvd19sb29wX2ZyZWUpOiBGcmVlIHByZS1oZWFkZXIgcm9vdCBhbmQgdHJhY2UgYW5kIGV4aXQgZG9taW5hdG9ycy4KCShmbG93X2xvb3BzX2ZpbmQpOiBOZXcgYXJndW1lbnQgZmxhZ3MuCgkoZmxvd19sb29wc191cGRhdGUpOiBOZXcgZnVuY3Rpb24uCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogQWRkIGZsYWcgYXJndW1lbnQgdG8gZmxvd19sb29wc19maW5kLgoKMjAwMC0wOS0xMiAgTWljaGFlbCBIYXllcyAgPG1oYXllc0BjeWdudXMuY29tPgoKCSogYmFzaWMtYmxvY2suaCAoc3BsaXRfYmxvY2ssIHVwZGF0ZV9iYl9mb3JfaW5zbik6IE5ldyBwcm90b3R5cGVzLgoJKiBmbG93LmMgKHNwbGl0X2Jsb2NrLCB1cGRhdGVfYmJfZm9yX2luc24pOiBOZXcgZnVuY3Rpb25zLgoKMjAwMC0wOS0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNzZS5jIChmb2xkX3J0eCk6IEhvbm9yIE5PX0ZVTkNUSU9OX0NTRS4KCjIwMDAtMDktMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oIChmcl9ub25pbW1lZGlhdGVfb3BlcmFuZCk6IERlY2xhcmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoZnJfbm9uaW1tZWRpYXRlX29wZXJhbmQpOiBOZXcuCgkoaWE2NF9vdmVycmlkZV9vcHRpb25zKTogUHJldmVudCBvcHRpbWl6aW5nIGRpdmlzaW9uIGZvciBib3RoCglsYXRlbmN5IGFuZCB0aHJvdWdocHV0LgoJKHJ0eF9uZWVkc19iYXJyaWVyKTogSGFuZGxlIGZyY3BhLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKE1BU0tfSU5MSU5FX0RJVl9MQVQpOiBOZXcuCgkoTUFTS19JTkxJTkVfRElWX1RIUiwgVEFSR0VUX0lOTElORV9ESVZfTEFUKTogTmV3LgoJKFRBUkdFVF9JTkxJTkVfRElWX1RIUiwgVEFSR0VUX0lOTElORV9ESVYpOiBOZXcuCgkoVEFSR0VUX1NXSVRDSEVTKTogQWRkIC1taW5saW5lLWRpdmlkZS1taW4tbGF0ZW5jeSBhbmQKCS1taW5saW5lLWRpdmlkZS1tYXgtdGhyb3VnaHB1dC4KCShQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGV4dGVuZHNpZGkyKTogUmVtb3ZlICogZnJvbSBmIGNhc2UuCgkoemVyb19leHRlbmRzaWRpMik6IExpa2V3aXNlLiAgRml4IHR5cG8gaW4gZiBjYXNlIGluc24uCgkoZXh0ZW5kc2ZkZjIpOiBBZGQgY2FzZXMgZm9yIGdyPC0+ZnIgYW5kIGZyPC0+bWVtLgoJKGV4dGVuZHNmdGYyKTogTGlrZXdpc2UuCgkoZXh0ZW5kZGZ0ZjIpOiBMaWtld2lzZS4KCShmaXhfdHJ1bmN0ZmRpMl9hbHRzKTogTmV3LgoJKGZpeHVuc190cnVuY3RmZGkyX2FsdHMpOiBOZXcuCgkobWFkZCo0KTogUmVuYW1lIGZyb20gbWFkZCozLgoJKGRpdnNpMywgbW9kc2kzLCB1ZGl2c2kzLCB1bW9kc2kzKTogTmV3LgoJKGRpdnNpM19pbnRlcm5hbCk6IE5ldy4KCShkaXZkaTMsIG1vZGRpMywgdWRpdmRpMywgdW1vZGRpMyk6IE5ldy4KCShkaXZkaTNfaW50ZXJuYWxfbGF0LCBkaXZkaTNfaW50ZXJuYWxfdGhyKTogTmV3LgoJKG11bHRmM19hbHRzLCBtYWRkdGY0X2FsdHMsIG5tYWRkdGY0X2FsdHMpOiBOZXcuCgkocmVjaXBfYXBwcm94KTogTmV3LgoKMjAwMC0wOS0xMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBwcmludC1ydGwuYyAoZGVidWdfY2FsbF9wbGFjZWhvbGRlcl92ZXJib3NlKTogTmV3IHZhcmlhYmxlLgoJKHByaW50X3J0eCkgW0NBTExfUExBQ0VIT0xERVJdOiBEdW1wIGFsbCBjYWxsIHNlcXVlbmNlcyBpZiBpdCBpcwoJc2V0LgoJKiBpbnRlZ3JhdGUuYyAoY29weV9ydHhfYW5kX3N1YnN0aXR1dGUpOiBEb24ndCBzaGFyZQoJTEVBRl9SRUdfUkVNQVBwYWJsZSByZWdpc3RlcnMgd2l0aCB0aGUgaW5saW5lZCBmdW5jdGlvbi4gIERvbid0CglzaGFyZSB0aGUgZnVuY3Rpb24gdmFsdWUgd2l0aCBjYWxsaW5nIHNlcXVlbmNlcy4KCjIwMDAtMDktMTEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogYy1kZWNsLmMgKGRvX2Nhc2UpOiBGaXggYSB0eXBvLgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9pZl90aGVuX2Vsc2UpOiBEb24ndCBjb252ZXJ0IGEgPT0gYiA/IGIgOiBhCgl0byBhIGlmIHRoZSBjb21wYXJpc29uIGlzIGZsb2F0aW5nIG1vZGUgYW5kIG5vdCAtZmZhc3QtbWF0aC4KCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3Rlcm5hcnlfb3BlcmF0aW9uKTogTGlrZXdpc2UuCgpNb24gU2VwIDExIDIwOjA3OjQ4IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jby51az4KCgkqIHNoLmggKElOSVRJQUxJWkVfVFJBTVBPTElORSk6IFJlbW92ZSBzdHJheSBjYWxsIHRvCglnZW5faWNfaW52YWxpZGF0ZV9saW5lLgoKMjAwMC0wOS0xMSAgUGhpbGlwIEJsdW5kZWxsICA8cGJAZnV0dXJldHYuY29tPgoKCSogY29uZmlnL2FybS9lbGYuaCAoU1VCVEFSR0VUX0NQUF9TUEVDKTogRG9uJ3QgZGVmaW5lIGBhcm1fZWxmJy4KCk1vbiBTZXAgMTEgMTA6NDg6NDEgMjAwMCAgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAcmVkaGF0LmNvbT4KCgkqIGluc3RhbGwudGV4aSAoTEFOR1VBR0VTKTogVXBkYXRlIHRvIGluY2x1ZGUgbmV3IGxhbmd1YWdlcy4KCSogSU5TVEFMTDogUmVidWlsdC4KCjIwMDAtMDktMTEgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogZ2NjLmMgKG1haW4pOiBEb24ndCB3YXJuIGFib3V0IHVudXNlZCAtQiBwcmVmaXhlcwoJKHVudXNlZF9wcmVmaXhfd2FybmluZ3MpOiByZW1vdmUKCjIwMDAtMDktMTEgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogZmluYWwuYzogRml4IGZvcm1hdHRpbmcuCgoJKiBpbnRlZ3JhdGUuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTA5LTExICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBhbGlhcy5jIChtZW1yZWZzX2NvbmZsaWN0X3ApOiBBbiBBRERSRVNTT0YgZG9lcyBjb25mbGljdCwgc29ycnkuCgoyMDAwLTA5LTExICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIHJlbG9hZC5jIChyZWdub19jbG9iYmVyZWRfcCk6IEZpeCB0aGlua28gaW4gcHJldmlvdXMgY2hhbmdlLgoKMjAwMC0wOS0xMCAgU3RlcGhhbmUgQ2FycmV6ICA8U3RlcGhhbmUuQ2FycmV6QHdvcmxkbmV0LmZyPgoKCSogZ2NjLjE6IERvY3VtZW50IDY4aGMxMSBzcGVjaWZpYyBvcHRpb25zLgoKMjAwMC0wOS0xMCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChNQVNLX0xPTkdfRE9VQkxFXzEyOCk6IERlZmluZS4KCShUQVJHRVRfTE9OR19ET1VCTEVfMTI4KTogRGVmaW5lLgoJKFNVQlRBUkdFVF9TV0lUQ0hFUyk6IEFkZCAtbWxvbmctZG91YmxlLTY0IGFuZCAtbWxvbmctZG91YmxlLTEyOC4KCShMT05HX0RPVUJMRV9UWVBFX1NJWkUpOiBSZWRlZmluZS4KCShNQVhfTE9OR19ET1VCTEVfVFlQRV9TSVpFKTogRGVmaW5lLgoJKExJQkdDQzJfTE9OR19ET1VCTEVfVFlQRV9TSVpFKTogRGVmaW5lIGRlcGVuZGluZyBvbiBkZWZpbml0aW9uCglvZiBfX0xPTkdfRE9VQkxFXzEyOF9fLgoJKENQUF9TWVNWX1NQRUMpOiBEZWZpbmUgX19MT05HX0RPVUJMRV8xMjhfXyBpZiAtbWxvbmctZG91YmxlLTEyOAoJcGFzc2VkLgoJKENQUF9MT05HRE9VQkxFX0RFRkFVTFRfU1BFQyk6IERlZmluZS4KCShDUFBfU1lTVl9ERUZBVUxUX1NQRUMpOiBEZWZpbmUuCgkoU1VCVEFSR0VUX0VYVFJBX1NQRUNTKTogQWRkIGNwcF9sb25nZG91YmxlX2RlZmF1bHQuCgkoSU5JVF9UQVJHRVRfT1BUQUJTKTogRGVmaW5lLgoKCSogY29uZmlnL3JzNjAwMC9haXguaCAoUlM2MDAwX0lUUlVOQyk6IE1vdmVkIGZyb20gcnM2MDAwLmguCgkoUlM2MDAwX1VJVFJVTkMpOiBMaWtld2lzZS4KCShJTklUX1RBUkdFVF9PUFRBQlMpOiBOZXcgbWFjcm8uCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF90cnVuY191c2VkKTogRGVsZXRlLgoJKHRydW5jX2RlZmluZWQpOiBEZWxldGUuCgkob3V0cHV0X3Byb2xvZyk6IERvbid0IG91dHB1dCAuZXh0ZXJuIGRlZmluaXRpb25zIGZvciBmcC0+aW50Cgljb252ZXJzaW9uIHJvdXRpbmVzLCBBU01fT1VUUFVUX0VYVEVSTkFMX0xJQkNBTEwgd2lsbCBkbyBpdC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAocnM2MDAwX3RydW5jX3VzZWQpOiBEZWxldGUuCgkodHJ1bmNfZGVmaW5lZCk6IERlbGV0ZS4KCShSUzYwMDBfSVRSVU5DKTogTW92ZWQgdG8gYWl4LmguCgkoUlM2MDAwX1VJVFJVTkMpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGZpeF90cnVuY2Rmc2kyKTogRmFpbCBpZiBpdCB3b3VsZAoJb25seSBlbWl0IGEgbGliY2FsbC4KCShmaXh1bnNfdHJ1bmNkZnNpMik6IERlbGV0ZS4KCSh0cnVuY19jYWxsKTogRGVsZXRlLgoJKHRydW5jX2NhbGxfcnRsKTogRGVsZXRlLgoKMjAwMC0wOS0xMCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogdmFyYXNtLmMgKG1ha2VfZGVjbF9ydGwpOiBSZXN0b3JlIGxlYWRpbmcgc3RhciBvbgoJREVDTF9BU1NFTUJMRVJfTkFNRSBzZXQgZm9yIGRlY2xzIHdpdGggYW4gYXNtc3BlYy4KCjIwMDAtMDktMTAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtcHJhZ21hLmMgKGhhbmRsZV9wcmFnbWFfcGFjayk6IENvcnJlY3QgcGFyc2luZyBsb2dpYyBzbyBpdAoJd29uJ3QgZ2l2ZSBhIHNwdXJpb3VzIGVycm9yIGZvciAnI3ByYWdtYSBwYWNrKCknLiAgU2ltcGxpZnkKCWNvbnRyb2wgZmxvdyBmb3IgcmVhZGFiaWxpdHkuICAncmVzZXQnIGFjdGlvbiBpcyBub3QgbmVjZXNzYXJ5LgoKMjAwMC0wOS0xMCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZGVmYXVsdHMuaDogUHJvdmlkZSBkZWZhdWx0IGRlZmluaXRpb25zIGZvcjogQ0hBUl9UWVBFX1NJWkUsCglTSE9SVF9UWVBFX1NJWkUsIElOVF9UWVBFX1NJWkUsIExPTkdfVFlQRV9TSVpFLAoJTE9OR19MT05HX1RZUEVfU0laRSwgV0NIQVJfVFlQRV9TSVpFLCBGTE9BVF9UWVBFX1NJWkUsCglET1VCTEVfVFlQRV9TSVpFLCBMT05HX0RPVUJMRV9UWVBFX1NJWkUsIGFuZCBXQ0hBUl9VTlNJR05FRC4KCgkqIGNwcGV4cC5jLCBkd2FyZm91dC5jLCBkd2FyZjJvdXQuYywgZW1pdC1ydGwuYywgZmluYWwuYywgb3B0YWJzLmMsCglwcm9maWxlLmMsIHNkYm91dC5jLCB0cmFkY2lmLnksIHRyZWUuYzoKCUluY2x1ZGUgZGVmYXVsdHMuaCBpZiBub3QgYWxyZWFkeSBpbmNsdWRlZC4KCURvbid0IGRlZmluZSB0aGUgYWJvdmUgbWFjcm9zLgoKCSogTWFrZWZpbGUuaW46IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgoyMDAwLTA5LTEwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uaCAoYWRkX3N0bXQpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKFJFQ0hBSU5fU1RNVFMpOiBOZXcgbWFjcm8uCgkoQ0FTRV9MQUJFTF9ERUNMKTogTGlrZXdpc2UuCgkoZ2VucnRsX2Nhc2VfbGFiZWwpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGNfZXhwYW5kX3N0YXJ0X2Nhc2UpOiBSZW1vdmUgcHJvdG90eXBlLgoJKGJ1aWxkX2Nhc2VfbGFiZWwpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGRlY2xfY29uc3RhbnRfdmFsdWUpOiBEZWNsYXJlLgoJKiBjLWNvbW1vbi5jIChjaGVja19jYXNlX3ZhbHVlKTogSGFuZGxlIEMrKydzIGV4dGVuc2lvbnMgdG8gQwoJc2VtYW50aWNzLgoJKiBjLWNvbW1ub24uZGVmIChDQVNFX0xBQkVMKTogQWRkIHJvb20gZm9yIHRoZSBDQVNFX0xBQkVMX0RFQ0wKCWZpZWxkLgoJKiBjLXBhcnNlLmluIChzdG10KTogQWRqdXN0IGhhbmRsaW5nIG9mIHJldHVybiBzdGF0ZW1lbnRzIGFuZCBjYXNlCglsYWVscy4KCSogYy1zZW1hbnRpY3MuYyAoYWRkX3N0bXQpOiBSZXR1cm4gdGhlIG5ldyBzdGF0ZW1lbnQuCgkoZ2VucnRsX3JldHVybl9zdG10KTogVGFrZSB0aGUgUkVUVVJOX1NUTVQgYXMgaW5wdXQsIG5vdCB0aGUKCXJldHVybmVkIGV4cHJlc3Npb24uICBEaXJlY3RseSBnZW5lcmF0ZSBSVEwsIHJhdGhlciB0aGFuIGNhbGxpbmcKCWNfZXhwYW5kX3JldHVybi4KCShnZW5ydGxfc3dpdGNoX3N0bXQpOiBEb24ndCBjYWxsIGNfZXhwYW5kX3N0YXJ0X2Nhc2UuCgkoYnVpbGRfY2FzZV9sYWJlbCk6IFRha2UgdGhlIExBQkVMX0RFQ0wgYXMgaW5wdXQsIHRvby4KCShnZW5ydGxfY2FzZV9sYWJlbCk6IEp1c3QgY2FsbCBhZGRfY2FzZV9ub2RlLgoJKGV4cGFuZF9zdG10KTogQWRqdXN0IGNhbGxzIHRvIGdlbnJ0bF9yZXR1cm5fc3RtdCBhbmQKCWdlbnJ0bF9jYXNlX2xhYmVsLgoJKiBjLXRyZWUuaCAoY19leHBhbmRfc3RhcnRfY2FzZSk6IERlY2xhcmUuCgkqIGMtdHlwZWNrLmMgKGRlY2xfY29uc3RhbnRfdmFsdWUpOiBHaXZlIGl0IGV4dGVybmFsIGxpbmthZ2UuCgkoY19leHBhbmRfcmV0dXJuKTogRG9uJ3QgY2FsbCBleHBhbmRfcmV0dXJuIG9yIGV4cGFuZF9udWxsX3JldHVybjsKCXVzZSBnZW5ydGxfcmV0dXJuX3N0bXQgaW5zdGVhZC4KCSogc3RtdC5jIChzdHJ1Y3QgbmVzdGluZyk6IFJlbW92ZSBudW1fcmFuZ2VzIGZpZWxkLgoJKGFkZF9jYXNlX25vZGUpOiBHaXZlIGl0IGV4dGVybmFsIGxpbmthZ2UuCgkoZXhwYW5kX3N0YXJ0X2Nhc2UpOiBEb24ndCBzZXQgbnVtX3Jhbmdlcy4KCShleHBhbmRfc3RhcnRfY2FzZV9kdW1teSk6IERvbid0IGNsZWFyIGl0LgoJKHB1c2hjYXNlKTogUmVseSBvbiBhZGRfY2FzZV9ub2RlIHRvIGhhbmRsZSBgZGVmYXVsdCcgbGFiZWxzLgoJKGFkZF9jYXNlX25vZGUpOiBIYW5kbGUgYGRlZmF1bHQnIGxhYmVscy4KCSogdHJlZS5jICh0cmVlX2ludF9jc3RfY29tcGFyZSk6IE5ldyBmdW5jdGlvbi4KCSogdHJlZS5oICh0cmVlX2ludF9jc3RfY29tcGFyZSk6IERlY2xhcmUuCgkoYWRkX2Nhc2Vfbm9kZSk6IExpa2V3aXNlLgoKMjAwMC0wOS0xMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGMtcGFyc2UuaW46IFJldmVydCBsYXN0IGNoYW5nZS4KCShpbml0X3Jlc3dvcmRzKTogRG8gbm90IGVudGVyIGRpc2FibGVkIGtleXdvcmRzIGludG8gdGhlIHJpZHBvaW50ZXJzCgl0YWJsZSwgbW9kdWxvIG9iamMgd2VpcmRuZXNzLgoJKF95eWxleCk6IFJldHVybiB0aGUgY2Fub25pY2FsIHNwZWxsaW5nIGZvciBhIGtleXdvcmQuCgoyMDAwLTA5LTEwICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogY29uZmlnL2FybS9hcm0uaCAoQ1BQX0lTQV9TUEVDKTogRG9uJ3QgZGVmaW5lIGBhcm0nIG9yIGB0aHVtYicuCgkqIGNvbmZpZy9hcm0vbGludXgtZWxmLmggKENQUF9QUkVERUZJTkVTKTogRG9uJ3QgZGVmaW5lIGBfX2FybV9fJy4KClN1biBTZXAgMTAgMTQ6MzA6MjggRURUIDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIGFsaWFzLmMgKGZpbmRfYmFzZV90ZXJtKTogSGFuZGxlIEFERFJFU1NPRi4KCShtZW1yZWZzX2NvbmZsaWN0X3ApOiBBbiBBRERSRVNTT0YgZG9lc24ndCBjb25mbGljdC4KCjIwMDAtMDktMTAgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBnZW5vdXRwdXQuYyAob3V0cHV0X2luc25fZGF0YSk6IFRyYW5zbGF0ZSA8TkVXTElORT4gdG8gXG5cIHdoaWxlCglvdXRwdXR0aW5nIHRlbXBsYXRlcyB3aXRoIG1hbnkgbGluZXMuCgoyMDAwLTA5LTEwICBTdGVwaGFuZSBDYXJyZXogIDxTdGVwaGFuZS5DYXJyZXpAd29ybGRuZXQuZnI+CgoJKiBsaWJnY2MyLmg6IFVzZSBMT05HX0xPTkdfVFlQRV9TSVpFIGluc3RlYWQgb2YgTUlOX1VOSVRTX1BFUl9XT1JECgl0byBkZWNpZGUgd2hldGhlciA2NC1iaXQgc3VwcG9ydCBtdXN0IGJlIGdlbmVyYXRlZC4KCjIwMDAtMDktMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjLXBhcnNlLmluIChhc20gcGF0dGVybnMpOiBGaXggdm9sYXRpbGUgY2hlY2suCgoyMDAwLTA5LTA5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcHBtYWNyby5jIChjaGVja190cmFkX3N0cmluZ2lmaWNhdGlvbik6IE5ldyBmdW5jdGlvbi4KCShzYXZlX2V4cGFuc2lvbik6IElmIC1XdHJhZGl0aW9uYWwsIHdhcm4gYWJvdXQgc3RyaW5naWZpY2F0aW9uIG9mCgltYWNybyBhcmd1bWVudHMuCgoyMDAwLTA5LTExICBNaWNoYWVsIEhheWVzICA8bWhheWVzQGN5Z251cy5jb20+CgoJKiBsb29wLmggKHN0cnVjdCBsb29wX21lbV9pbmZvKTogTW92ZSBmcm9tIGxvb3AuYwoJKHN0cnVjdCBsb29wX2luZm8pOiBBZGQgZmllbGRzIHN0b3JlX21lbXMsIG1lbXMsIG1lbXNfaWR4LAoJbWVtc19hbGxvY2F0ZWQsIHVua25vd25fYWRkcmVzc19hbHRlcmVkLAoJdW5rbm93bl9jb25zdGFudF9hZGRyZXNzX2FsdGVyZWQsIG51bV9tZW1fc2V0cywgYW5kCglmaXJzdF9sb29wX3N0b3JlX2luc24uCgoJKiBsb29wLmMgKGxvb3Bfc3RvcmVfbWVtcyk6IFJlcGxhY2Ugd2l0aCBmaWVsZCBpbiBsb29wX2luZm8gc3RydWN0LgoJKGxvb3BfbWVtcywgbG9vcF9tZW1zX2lkeCwgbG9vcF9tZW1zX2FsbG9jYXRlZCk6IExpa2V3aXNlLgoJKHVua25vd25fYWRkcmVzc19hbHRlcmVkLCB1bmtub3duX2NvbnN0YW50X2FkZHJlc3NfYWx0ZXJlZCk6IExpa2V3aXNlLgoJKG51bV9tZW1fc2V0cyk6IExpa2V3aXNlLgoJKHJlcGxhY2VfbG9vcF9tZW1zLCByZXBsYWNlX2xvb3BfcmVncyk6IE5ldy4KCShzdHJ1Y3QgbG9vcF9yZXBsYWNlX2FyZ3MpOiBOZXcuCgkobG9hZF9tZW1zKTogVXNlIHJlcGxhY2VfbG9vcF9tZW1zLgoJKHRyeV9jb3B5X3Byb3ApOiBVc2UgcmVwbGFjZV9sb29wX3JlZ3MuCgkocmVwbGFjZV9sb29wX3JlZywgcmVwbGFjZV9sb29wX21lbSk6IFVzZSBsb29wX3JlcGxhY2VfYXJncyBzdHJ1Y3R1cmUuCgoyMDAwLTA5LTA5ICBTdGVwaGFuZSBDYXJyZXogIDxTdGVwaGFuZS5DYXJyZXpAd29ybGRuZXQuZnI+CgoJKiBjb25maWd1cmUuaW46IFJlY29nbml6ZSBtNjgxMS1lbGYgYW5kIG02ODEyLWVsZi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0wOS0wOSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogcmVjb2cuYyAodmFsaWRhdGVfcmVwbGFjZV9ydHhfMSk6IENvcnJlY3QgTU9ERSBwYXJhbWV0ZXIgaW4gY2FsbAoJdG8gb3BlcmFuZF9zdWJ3b3JkLgoKMjAwMC0wOS0xMCAgTWljaGFlbCBIYXllcyAgPG1oYXllc0BjeWdudXMuY29tPgoKCSogbG9vcC5jIChzdHJ1Y3QgbW92YWJsZXMpOiBOZXcuCgkobnVtX21vdmFibGVzKTogTW92ZSBpbnRvIHN0cnVjdCBtb3ZhYmxlcy4KCSh0aGVfbW92YWJsZXMpOiBDaGFuZ2UgdHlwZSB0byBzdHJ1Y3QgbW92YWJsZXMuCgkoaWdub3JlX3NvbWVfbW92YWJsZXMpOiBDaGFuZ2Ugc3RydWN0IG1vdmFibGUgYXJnIHRvIHN0cnVjdCBtb3ZhYmxlcy4KCShmb3JjZV9tb3ZhYmxlcywgY29tYmluZV9tb3ZhYmxlcywgcmVnc19tYXRjaF9wKTogTGlrZXdpc2UuCgkocnR4X2VxdWFsX2Zvcl9sb29wX3AsIG1vdmVfbW92YWJsZXMpOiBMaWtld2lzZS4KCShzY2FuX2xvb3ApOiBDaGFuZ2UgbW92YWJsZXMgdG8gYmUgb2YgdHlwZSBzdHJ1Y3QgbW92YWJsZXMuCglSZXBsYWNlIGxhc3RfbW92YWJsZSB3aXRoIGZpZWxkIGluIG1vdmFibGVzIHN0cnVjdHVyZS4KCjIwMDAtMDktMDggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtcHJhZ21hLmM6IERvbid0IGVsaWRlIGVudGlyZSBmaWxlIGlmICFIQU5ETEVfR0VORVJJQ19QUkFHTUFTLgoJKGluaXRfcHJhZ21hKTogQXZvaWQgd2FybmluZyBpZiBwZmlsZSBoYXBwZW5zIHRvIGJlIHVudXNlZC4KCSogYy1wcmFnbWEuaDogTmV2ZXIgZGVmaW5lIEhBTkRMRV9HRU5FUklDX1BSQUdNQVMuICBOZXZlcgoJZGVmaW5lIGluaXRfcHJhZ21hIHRvIG5vdGhpbmcuICBBbHdheXMgcHJvdG90eXBlCglpbml0X3ByYWdtYS4gIFByb3RvdHlwZSBkaXNwYXRjaF9wcmFnbWEgaWYgIVVTRV9DUFBMSUIuCgoJKiBjLWxleC5jIChwcm9jZXNzX2RpcmVjdGl2ZSk6IEFsd2F5cyBjYWxsIGRpc3BhdGNoX3ByYWdtYS4KCUluaXRpYWxpemUgZW50ZXJpbmdfY19oZWFkZXIgdG8gMC4KCjIwMDAtMDktMDggIFN0ZXBoYW5lIENhcnJleiAgPFN0ZXBoYW5lLkNhcnJlekB3b3JsZG5ldC5mcj4KCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEubWQ6IE5ldyBmaWxlLCBtYWNoaW5lIGRlc2NyaXB0aW9uIGZvcgoJNjhIQzExICYgNjhIQzEyLgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmg6IE5ldyBmaWxlLCBkZWZpbml0aW9ucyBmb3IgNjhIQzExICYgNjhIQzEyLgoJKiBjb25maWcvbTY4aGMxMS9tNjhoYzExLmM6IE5ldyBmaWxlLCBmdW5jdGlvbnMgZm9yIDY4SEMxMSAmIDY4SEMxMi4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMi5oOiBOZXcgZmlsZSwgZGVmaW5pdGlvbnMgZm9yIDY4SEMxMi4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS1wcm90b3MuaDogTmV3IGZpbGUuCgkqIGNvbmZpZy9tNjhoYzExL202OGhjMTEtY3J0MC5TOiBOZXcgZmlsZSwgc3RhcnR1cCBjb2RlLgoJKiBjb25maWcvbTY4aGMxMS90LW02OGhjMTEtZ2FzOiBOZXcgZmlsZSwgbWFrZWZpbGUgZnJhZ21lbnQuCgkqIGNvbmZpZy9tNjhoYzExL3htLW02OGhjMTEuaDogTmV3IGZpbGUsIHRhcmdldCBkZWZzLgoJKiBjb25maWcvbTY4aGMxMS9sYXJpdGguYXNtOiBOZXcgZmlsZSwgbGliZ2NjIHJvdXRpbmVzLgoKMjAwMC0wOS0wOCAgU3RlcGhhbmUgQ2FycmV6ICA8U3RlcGhhbmUuQ2FycmV6QHdvcmxkbmV0LmZyPgoKCSogTWFrZWZpbGUuaW4gKERQQklUX0ZVTkNTKTogQWRkIF91c2lfdG9fZGYuCgkoRlBCSVRfRlVOQ1MpOiBBZGQgX3VzaV90b19zZi4KCSogY29uZmlnL2ZwLWJpdC5jICh1c2lfdG9fZmxvYXQpOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9mcC1iaXQuaCAoTF91c2lfdG9fc2YsIExfdXNpX3RvX2RmKTogRGVmaW5lLgoJKHVzaV90b19mbG9hdCk6IEFkZCBhcHByb3ByaWF0ZSAjZGVmaW5lLgoKMjAwMC0wOS0wOCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBpMzg2LXByb3Rvcy5oIChzc2VfY29tcGFyaXNvbl9vcGVyYXRvciwgbW14X3JlZ19vcGVyYW5kKTogRGVjbGFyZQoJbmV3IGZ1bmN0aW9ucy4KCSogaTM4Ni5jIChzc2VfY29tcGFyaXNvbl9vcGVyYXRvciwgbW14X3JlZ19vcGVyYW5kKTogTmV3IGZ1bmN0aW9ucy4KCSogaTM4Ni5tZCAoYXR0ciAidHlwZSIpOiBBZGQgc3NlIGFuZCBtbXggdHlwZXMuCgkoYXR0ciAibWVtb3J5Iik6IEhhbmRsZSB0aGVtIHdpdGhvdXQgYSBjcmFzaC4KCShtb3ZzaV8xLCBtb3ZkaV8yKTogQWxsb3cgTU1YIHJlZ3MuCgkobW92ZGkgc3BsaXRzKTogRG9uJ3Qgc3BsaXQgbW92ZXMgaW52b2x2aW5nIE1NWCByZWdzLgoJKHNldGNjXzQpOiBSZW1vdmUgJyonIGZyb20gcGF0dGVybiBuYW1lIHNvIHdlIGdldCBhIGdlbl9zZXRjYzQuCgkobW92djRzZl9pbnRlcm5hbCwgbW92djRzaV9pbnRlcm5hbCwgbW92djhxaV9pbnRlcm5hbCwKCW1vdnY0aGlfaW50ZXJuYWwsIG1vdnYyc2lfaW50ZXJuYWwsIG1vdnY4cWksIG1vdnY0aGksIG1vdnYyc2ksCgltb3Z2NHNmLCBtb3Z2NHNpLCBwdXNodjRzZiwgcHVzaHY0c2ksIHB1c2h2OHFpLCBwdXNodjRoaSwgcHVzaHYyc2ksCglzc2VfbW92YXBzLCBzc2VfbW92dXBzLCBzc2VfbW92bXNrcHMsIG1teF9wbW92bXNrYiwgbW14X21hc2ttb3ZxLAoJc3NlX21vdm50djRzZiwgc3NlX21vdm50ZGksIHNzZV9tb3ZobHBzLCBzc2VfbW92bGhwcywgc3NlX21vdmhwcywKCXNzZV9tb3ZscHMsIHNzZV9sb2Fkc3MsIHNzZV9tb3Zzcywgc3NlX3N0b3Jlc3MsIHNzZV9zaHVmcHMsCglhZGR2NHNmMywgdm1hZGR2NHNmMywgc3VidjRzZjMsIHZtc3VidjRzZjMsIG11bHY0c2YzLCB2bW11bHY0c2YzLAoJZGl2djRzZjMsIHZtZGl2djRzZjMsIHJjcHY0c2YyLCB2bXJjcHY0c2YyLCByc3FydHY0c2YyLCB2bXJzcXJ0djRzZjIsCglzcXJ0djRzZjIsIHZtc3FydHY0c2YyLCBzc2VfYW5kdGkzLCBzc2VfbmFuZHRpMywgc3NlX2lvcnRpMywKCXNzZV94b3J0aTMsIG1hc2tjbXB2NHNmMywgbWFza25jbXB2NHNmMywgdm1tYXNrY21wdjRzZjMsCgl2bW1hc2tuY21wdjRzZjMsIHNzZV9jb21pLCBzc2VfdWNvbWksIHNzZV91bnBja2hwcywgc3NlX3VucGNrbHBzLAoJc21heHY0c2YzLCB2bXNtYXh2NHNmMywgc21pbnY0c2YzLCB2bXNtaW52NHNmMywgY3Z0cGkycHMsIGN2dHBzMnBpLAoJY3Z0dHBzMnBpLCBjdnRzaTJzcywgY3Z0c3Myc2ksIGN2dHRzczJzaSwgYWRkdjhxaTMsIGFkZHY0aGkzLAoJYWRkdjJzaTMsIHNzYWRkdjhxaTMsIHNzYWRkdjRoaTMsIHVzYWRkdjhxaTMsIHVzYWRkdjRoaTMsIHN1YnY4cWkzLAoJc3VidjRoaTMsIHN1YnYyc2kzLCBzc3N1YnY4cWkzLCBzc3N1YnY0aGkzLCB1c3N1YnY4cWkzLCB1c3N1YnY0aGkzLAoJbXVsdjRoaTMsIHNtdWx2NGhpM19oaWdocGFydCwgdW11bHY0aGkzX2hpZ2hwYXJ0LCBtbXhfcG1hZGR3ZCwKCW1teF9pb3JkaTMsIG1teF94b3JkaTMsIG1teF9hbmRkaTMsIG1teF9uYW5kZGkzLCBtbXhfdWF2Z3Y4cWkzLAoJbW14X3Vhdmd2NGhpMywgbW14X3BzYWRidywgbW14X3BpbnNydywgbW14X3BleHRydywgbW14X3BzaHVmdywKCWVxdjhxaTMsIGVxdjRoaTMsIGVxdjJzaTMsIGd0djhxaTMsIGd0djRoaTMsIGd0djJzaTMsIHVtYXh2OHFpMywKCXNtYXh2NGhpMywgdW1pbnY4cWkzLCBzbWludjRoaTMsIGFzaHJ2NGhpMywgYXNocnYyc2kzLCBsc2hydjRoaTMsCglsc2hydjJzaTMsIG1teF9sc2hyZGkzLCBhc2hsdjRoaTMsIGFzaGx2MnNpMywgbW14X2FzaGxkaTMsCgltbXhfcGFja3Nzd2IsIG1teF9wYWNrc3NkdywgbW14X3BhY2t1c3diLCBtbXhfcHVucGNraGJ3LAoJbW14X3B1bnBja2h3ZCwgbW14X3B1bnBja2hkcSwgbW14X3B1bnBja2xidywgbW14X3B1bnBja2x3ZCwKCW1teF9wdW5wY2tsZHEsIGVtbXMsIHNmZW5jZSwgbGRteGNzciwgcHJlZmV0Y2gsIHN0bXhjc3IsIHNzZV9jbHJ0aSwKCW1teF9jbHJkaSk6IE5ldyBwYXR0ZXJucy4KCjIwMDAtMDktMDggIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLmM6IERvbid0IGluY2x1ZGUgdG0uaCBkaXJlY3RseS4KCkZyaSBTZXAgIDggMTQ6MzQ6NTYgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiByZWNvZy5jICh2YWxpZGF0ZV9yZXBsYWNlX3J0eF8xKTogRml4IGNvbmZ1c2lvbiBhYm91dCBlcXVhbGl0eQoJdGVzdGluZzsgc2ltcGxpZnkgc3VicmVncyBvZiBjb25zdGFudHMgYW5kIG5lc3RlZCBzdWJyZWdzLgoKMjAwMC0wOS0wOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2gubWQgKHN5bVBMVF9sYWJlbDJyZWcpOiBVc2Ugb3BlcmFuZDMgZm9yIFBJQyByZWcuCgoyMDAwLTA5LTA4ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIGNvbWJpbmUuYyAoY29tYmluZV9zaW1wbGlmeV9ydHgpOiBUcnkgdG8gc2ltcGxpZnkgVkVDX1NFTEVDVCBvZiBhCglWRUNfQ09OQ0FULgoJKiBydGwudGV4aSAoZGVzY3JpcHRpb24gb2YgVVNFKTogQWRkIG5vdGUgYWJvdXQgcG9zc2libGUgcGl0ZmFsbHMKCXdpdGggdGhpcyBydHguCglGcm9tIFJpY2hhcmQgSGVuZGVyc29uOgoJKiByZWxvYWQxLmMgKGNob29zZV9yZWxvYWRfcmVncyk6IENvbXB1dGUgbmVlZF9tb2RlIHByb3Blcmx5LgoKMjAwMC0wOS0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2xpYjFmdW5jcy5hc20gKF9fZGl2c2kzKTogVXNlIC5zMSBmb3IgZnJjcGEuCgkoX19tb2RzaTMsIF9fdW1vZHNpMyk6IExpa2V3aXNlLgoJKF9fdWRpdnNpMyk6IExpa2V3aXNlLiAgTm9ybWFsaXplIHRoZSBURm1vZGUgdmFsdWVzLgoKMjAwMC0wOS0wNyAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlnL3JzNjAwMC9zb2wtYzAuYyAoX3N0YXJ0KTogRGVjbGFyZSBgdGVybWZ1bmMnIHBhcmFtZXRlcgoJd2l0aCBhIHByb3RvdHlwZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoUlM2MDAwX0FSR19TSVpFKTogVXNlIGNhc3QgdG8gc3VwcHJlc3MKCXdhcm5pbmcuCgpGcmkgU2VwICA4IDAzOjI2OjM4IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jby51az4KCgkqIHNoLm1kIChjbXBlcXNpX2lvcl90LCBjbXBlcXNpX2FuZF90KTogUmVtb3ZlLgoJKGNtcGVxZGlfdCk6IEFkZCBvdXRwdXQgcGF0dGVybi4KCShjbXBlcWRpX3QrMSk6IERvbid0IHNwbGl0IHdoZW4gbm90IG9wdGltaXppbmcuCglSZXN0b3JlIHByb3BlciBzcGxpdHRpbmcgb3BlcmF0aW9uLgoKMjAwMC0wOS0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGMtbGV4LmMgKHByb2Nlc3NfZGlyZWN0aXZlKTogSWYgbm90IEhBTkRMRV9HRU5FUklDX1BSQUdNQVMsCglkbyBub3QgY2FsbCBkaXNwYXRjaF9wcmFnbWEuCgoyMDAwLTA5LTA3ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiByZWxvYWQuYyAocHVzaF9yZWxvYWQpOiBVc2UgQ0xBU1NfQ0FOTk9UX0NIQU5HRV9NT0RFX1AgaW4gYWRkaXRpb24KCXRvIENMQVNTX0NBTk5PVF9DSEFOR0VfTU9ERS4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChDTEFTU19DQU5OT1RfQ0hBTkdFX01PREVfUCk6IFRydWUgb25seSBpZiB0aGUKCW1vZGUgY2xhc3NlcyBhcmUgZGlmZmVyZW50LgoKMjAwMC0wOS0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGliLmggKHN0cnVjdCBjcHBfb3B0aW9ucyk6IEFkZCB1c2VyX2xhYmVsX3ByZWZpeCBtZW1iZXIsCglsZWZ0IG91dCBvZiBjb21taXQgd2hpY2ggcmVtb3ZlZCBjcHB1bHAuYy4KCjIwMDAtMDktMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBiYi1yZW9yZGVyLmMgKGZpeHVwX3Jlb3JkZXJfY2hhaW4pOiBBZGQganVtcCBpbiBuZXcgYmxvY2sKCWFmdGVyIHN3aXRjaCBmb3IgQ0FTRV9EUk9QU19USFJPVUdILgoKMjAwMC0wOS0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGxvb3AuYyAoc3RyZW5ndGhfcmVkdWNlKTogQ2FsbCBjaGVja19leHRfZGVwZW5kYW50X2dpdnMuCglQcm9wZXJseSBleHRlbmQgdGhlIGJpdiBpbml0aWFsIHZhbHVlIGZvciB0aGUgZ2l2LgoJKHJlY29yZF9iaXYpOiBaZXJvIGV4dF9kZXBlbmRhbnQuCgkocmVjb3JkX2dpdik6IE5ldyBhcmd1bWVudCBleHRfdmFsLiAgVXBkYXRlIGFsbCBjYWxsZXJzLgoJKGdlbmVyYWxfaW5kdWN0aW9uX3Zhcik6IExpa2V3aXNlLgoJKGNvbnNlY19zZXRzX2dpdik6IExpa2V3aXNlLgoJKHNpbXBsaWZ5X2dpdl9leHByKTogTGlrZXdpc2UuICBGaWxsIGluIGV4dF92YWwgaWYgd2UgZmluZAoJYSBzaWduLWV4dGVuZCwgemVyby1leHRlbmQsIG9yIHRydW5jYXRlLgoJKGNvbWJpbmVfZ2l2c19wKTogTWFrZSBzdXJlIG1vZGVzIGFyZSBjb21wYXRpYmxlLgoJKGNoZWNrX2V4dF9kZXBlbmRhbnRfZ2l2cyk6IE5ldy4KCShleHRlbmRfdmFsdWVfZm9yX2dpdik6IE5ldy4KCSogbG9vcC5oIChzdHJ1Y3QgaW5kdWN0aW9uKTogQWRkIGV4dF9kZXBlbmRhbnQuCgkqIHVucm9sbC5jIChpdGVyYXRpb25faW5mbyk6IEV4dGVuZCB0aGUgYml2IGluaXRpYWwgdmFsdWUgZm9yIHRoZSBnaXYuCgkoZmluZF9zcGxpdHRhYmxlX2dpdnMpOiBMaWtld2lzZS4KCShmaW5hbF9naXZfdmFsdWUpOiBMaWtld2lzZS4KCjIwMDAtMDktMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtcHJhZ21hLmg6IERlZmluZSBIQU5ETEVfR0VORVJJQ19QUkFHTUFTIGlmCglSRUdJU1RFUl9UQVJHRVRfUFJBR01BUyBpcyBkZWZpbmVkLiAgRHVwbGljYXRlIHNvbWUKCWRlZmluaXRpb25zIGZyb20gY3BwbGliLmguCgkqIGNwcGxpYi5oOiBEb24ndCB0eXBlZGVmIHN0cnVjdCBjcHBfcmVhZGVyIGlmIGMtcHJhZ21hLmggaGFzCglhbHJlYWR5IGRvbmUgaXQuCgkqIHRtLnRleGk6IERvY3VtZW50IEhBTkRMRV9QUkFHTUEgYXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gIEFkZAoJZG9jdW1lbnRhdGlvbiBmb3IgUkVHSVNURVJfVEFSR0VUX1BSQUdNQVMuCgoJKiBjLWxleC5jOiBJbmNsdWRlIGNwcGxpYi5oIGJlZm9yZSBjLXByYWdtYS5oLiAgRGVmaW5lIGEKCWRlZmF1bHQtcHJhZ21hIGNhbGxiYWNrIHRvIGltcGxlbWVudCAtV3Vua25vd24tcHJhZ21hcyBpZgoJVVNFX0NQUExJQi4KCSogYy1wYXJzZS5pbjogTW92ZSBhbGwgaW5jbHVkZXMgdG8gdG9wIG9mIGZpbGUuCgkqIGMtcHJhZ21hLmM6IEluY2x1ZGUgY3BwbGliLmggYmVmb3JlIGMtcHJhZ21hLmguICBJbmNsdWRlCgl0bV9wLmguCgkoZGlzcGF0Y2hfcHJhZ21hKTogUHV0IHRoZSBuYW1lc3BhY2UgaW4gdGhlIC1XdW5rbm93bi1wcmFnbWFzCgl3YXJuaW5nLgoJKGluaXRfcHJhZ21hKTogSWYgUkVHSVNURVJfVEFSR0VUX1BSQUdNQVMgaXMgZGVmaW5lZCwgY2FsbCBpdC4KCgkqIGFybS5oLCBhcm0tcHJvdG9zLmgsIGFybS5jLAoJICBjNHguaCwgYzR4LXByb3Rvcy5oLCBjNHguYywKCSAgaDgzMDAuaCwgaDgzMDAtcHJvdG9zLmgsIGg4MzAwLmMsCgkgIGkzNzAuaCwgaTM3MC1wcm90b3MuaCwgaTM3MC5jLAoJICBpOTYwLmgsIGk5NjAtcHJvdG9zLmgsIGk5NjAuYywKCSAgc2guaCwgc2gtcHJvdG9zLmgsIHNoLmMsCgkgIHY4NTAuaCwgdjg1MC1wcm90b3MuaCwgdjg1MC5jOiBDb252ZXJ0IEhBTkRMRV9QUkFHTUEtYmFzZWQKCXByYWdtYXRhIHNjaGVtZSB0byB1c2UgUkVHSVNURVJfVEFSR0VUX1BSQUdNQVMgaW5zdGVhZC4KCgkqIGQzMHYuaDogRG9uJ3QgbWVudGlvbiBIQU5ETEVfUFJBR01BIGluIGNvbW1lbnQuICBBZGQKCW11bHRpcGxlIGluY2x1ZGUgZ3VhcmQuCgkqIGkzNzAubWQgKHVudHlwZWRfY2FsbCk6IFVzZSBHRU5fQ0FMTC4KCSh1bW9kc2kzKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCSogc2gvZWxmLmg6IERvbid0IHVuZGVmIEhBTkRMRV9TWVNWX1BSQUdNQS4KCSogdjg1MC5jIChvdXRwdXRfbW92ZV9zaW5nbGUsIG91dHB1dF9tb3ZlX2RvdWJsZSk6IENvbnN0aWZ5CglyZXR1cm4gdmFsdWUuCgkocHJpbnRfb3BlcmFuZCk6IENvbnN0aWZ5IGEgY2hhciAqLgoJKiB2ODUwLmggKHN0cnVjdCBzbWFsbF9tZW1vcnlfaW5mbyk6IENvbnN0aWZ5IG5hbWUgbWVtYmVyLgoKMjAwMC0wOS0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb25maWcvaDgzMDAuaDogRml4IGNvbW1lbnQgdHlwb3MuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9oODMwMC9saWIxZnVuY3MuYXNtOiBMaWtld2lzZS4KClRodSAwNy1TZXAtMjAwMCAyMToyOTowMCBCU1QgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSByZWZlcmVuY2VzIHRvIGNwcHVscC57YyxvfS4KCSogY3BwaW5pdC5jIChpbml0aWFsaXplX2J1aWx0aW5zLCBjcHBfc3RhcnRfcmVhZCwKCWNwcF9oYW5kbGVfb3B0aW9uKTogVXBkYXRlIHRvIHVzZSBjcHBfb3B0aW9ucyBzdHJ1Y3R1cmUuCgkqIGNwcHVscC5jOiBSZW1vdmUuCgoyMDAwLTA5LTA3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jICh0aW1lX2NoYXJfdGFibGUpOiBBbGxvdyAlI2IgYW5kICUjaC4KCjIwMDAtMDktMDcgSGVybWFuIEEuSi4gdGVuIEJydWdnZSA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCgkqIHJlb3JnLmMgKGZpbmRfZW5kX2xhYmVsKTogSWYgdGhlIGJhc2ljIGJsb2NrIHJlb3JkZXIgcGFzcyBtb3ZlcyB0aGUKCXJldHVybiBpbnNuIHRvIHNvbWUgb3RoZXIgcGxhY2UgdHJ5IHRvIGxvY2F0ZSBpdCBhZ2FpbiBhbmQgcHV0IG91cgoJZW5kX29mX2Z1bmN0aW9uX2xhYmVsIHRoZXJlLgoJKiByZW9yZy5jIChyZWxheF9kZWxheV9zbG90cyk6IENoZWNrIGlmIGZpbmRfZW5kX2xhYmVsIGNyZWF0ZWQgYQoJbmV3IGxhYmVsIHRoYXQgaW52YWxpZGF0ZXMgdGhlIGN1cnJlbnQgb3B0aW1hemF0aW9uLgoKMjAwMC0wOS0wNyAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQHJlZGhhdC5jb20+CgoJKiB1bnJvbGwuYyAodW5yb2xsX2xvb3ApOiBDaGVjayBmb3IgdW5jb25kaXRpb25hbCBqdW1wcwoJdG8gbG9vcCBjb250aW51YXRpb24uICBEZWxldGUgaWYgbl9pdGVyYXRpb25zIGlzIDEuCgkodWp1bXBfdG9fbG9vcF9jb250KTogTmV3IHJvdXRpbmUuCgoyMDAwLTA5LTA3ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIHJ0bC5jIChjbGFzc19uYXJyb3dlc3RfbW9kZSk6IEFkZCBlbnRyaWVzIGZvciBNT0RFX1ZFQ1RPUl9JTlQgYW5kCglNT0RFX1ZFQ1RPUl9GTE9BVC4KCSogcmVsb2FkLmMgKHJlZ25vX2Nsb2JiZXJlZF9wKTogQWNjZXB0IG5ldyBhcmcsIE1PREUsIGFuZCB1c2UgaXQKCXRvIGhhbmRsZSBtdWx0aXdvcmQgbW9kZXMgY29ycmVjdGx5LiAgQWxsIGNhbGxlcnMgYW5kIHRoZSBkZWNsYXJhdGlvbgoJY2hhbmdlZC4KCjIwMDAtMDktMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5oIChwcmVwX3N0bXQpOiBEZWNsYXJlLgoJKGxhbmdfZXhwYW5kX3N0bXQpOiBMaWtld2lzZS4KCSogYy1kZWNsLmMgKGxhbmdfZXhwYW5kX3N0bXQpOiBSZW1vdmUuCgkqIGMtc2VtYW50aWNzLmMgKGxhbmdfZXhwYW5kX3N0bXQpOiBEZWZpbmUuCgkocHJlcF9zdG10KTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9zdG10KTogSGFuZGxlIGNvbW1vbiBzdGF0ZW1lbnQgdHlwZXMgaGVyZS4KCjIwMDAtMDktMDcgIE5paWJlIFl1dGFrYSAgPGduaWliZUBtMTduLm9yZz4sIEtheiBLb2ppbWEgIDxra29qaW1hQHJyLmlpajR1Lm9yLmpwPiwgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW4gKHNoLSotbGludXgqKTogQWRkZWQuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCSogY29uZmlnL3NoL3QtbGludXg6IE5ldyBmaWxlLgoJKiBjb25maWcvc2gvc2guaCAoVVNFUk1PREVfQklUKTogRGVmaW5lLgoJKFRBUkdFVF9VU0VSTU9ERSk6IExpa2V3aXNlLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IE5ldyBzd2l0Y2hlcyBmb3IgdGhlIGJpdHMgYWJvdmUuCgkoSU5JVElBTElaRV9UUkFNUE9MSU5FKTogQ2FsbCBfX2ljX2ludmFsaWRhdGUgaW4gVVNFUk1PREUuCgkqIGNvbmZpZy9zaC9saW51eC5oOiBOZXcgZmlsZS4KCSogY29uZmlnL3NoL2xpYjFmdW5jcy5hc20gKEdMT0JBTCk6IERvbid0IHByZWZpeCBzeW1ib2xzIHdpdGgKCXVuZGVyc2NvcmUgb24gbGludXguCgkoTF9zZGl2c2kzLCBMX3VkaXZzaTMpOiBEZWZpbmUgZm9yIGxpbnV4LgoJKExfaWNfaW52YWxpZGF0ZSk6IERlZmluZS4KCSogaW52b2tlLnRleGkgKFNIIE9wdGlvbnMpOiBEb2N1bWVudCAtbXVzZXJtb2RlLgoKMjAwMC0wOS0wNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2guaCAoT1ZFUlJJREVfT1BUSU9OUyk6IERvbid0IGRpc2FibGUgZnVuY3Rpb24KCUNTRSB1bmxlc3MgZ2VuZXJhdGluZyBQSUMuCgoJKiBjb25maWcvc2gvc2gubWQgKHN5bVBMVF9sYWJlbDJyZWcpOiBGb3JjZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YKCXRoZSBQSUMgcmVnaXN0ZXIuCgoyMDAwLTA5LTA2ICBILkouIEx1ICAoaGpsQGdudS5vcmcpCgoJKiBNYWtlZmlsZS5pbiAoY2xlYW5fczEpOiBEZXBlbmQgb24gc3RhZ2VfYi4KCShjbGVhbl9zMik6IERlcGVuZCBvbiBzdGFnZV9kLiBEb24ndCByZW1vdmUgJChWT0xfRklMRVMpIGluCglzdGFnZTIuIFRoZXkgYXJlIHVzZWQgZm9yICJtYWtlIGNvbXBhcmUiLgoKMjAwMC0wOS0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglNb3ZlIHN0YXRlbWVudC10cmVlIGZhY2lsaXRpZXMgZnJvbSBDKysgdG8gQyBmcm9udC1lbmQuCgkqIGMtY29tbW9uLmggKGNfdHJlZV9pbmRleCk6IEFkZCBDVElfVk9JRF9aRVJPLgoJKHZvaWRfemVyb19ub2RlKTogTmV3IG1hY3JvLgoJKHN0cnVjdCBzdG10X3RyZWVfcyk6IE5ldyB0eXBlLgoJKHN0bXRfdHJlZSk6IE5ldyB0eXBlZGVmLgoJKHN0cnVjdCBsYW5ndWFnZV9mdW5jdGlvbik6IE5ldyB0eXBlLgoJKGxhc3RfdHJlZSk6IE5ldyBtYWNyby4KCShsYXN0X2V4cHJfdHlwZSk6IExpa2V3aXNlLgoJKHdhbGtfdHJlZV9mbik6IE5ldyB0eXBlZGVmLgoJKGN1cnJlbnRfc3RtdF90cmVlKTogTmV3IGZ1bmN0aW9uLgoJKGJlZ2luX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKGFkZF9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKHN0YXRlbWVudF9jb2RlX3ApOiBMaWtld2lzZS4KCShsYW5nX3N0YXRlbWVudF9jb2RlX3ApOiBOZXcgdmFyaWFibGUuCgkod2Fsa19zdG10X3RyZWUpOiBOZXcgZnVuY3Rpb24uCgkoU1RNVF9JU19GVUxMX0VYUFJfUCk6IE5ldyBtYWNyby4KCSogYy1jb21tb24uYyAobGFuZ19zdGF0ZW1lbnRfY29kZV9wKTogTmV3IHZhcmlhYmxlLgoJKGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucyk6IEluaXRpYWxpemUgdm9pZF96ZXJvX25vZGUuCgkoc3RhdGVtZW50X2NvZGVfcCk6IE5ldyBmdW5jdGlvbi4KCSh3YWxrX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKiBjLWRlY2wuYyAobGFuZ3VhZ2VfZnVuY3Rpb24pOiBSZW5hbWUgdG8gLi4uCgkoY19sYW5ndWFnZV9mdW5jdGlvbik6IC4uLiB0aGlzLiAgSW5jbHVkZSBsYW5ndWFnZV9mdW5jdGlvbi4KCShwdXNoX2NfZnVuY3Rpb25fY29udGV4dCk6IEFkanVzdCBhY2NvcmRpbmdseS4KCShwb3BfY19mdW5jdGlvbl9jb250ZXh0KTogTGlrZXdpc2UuCgkobWFya19jX2Z1bmN0aW9uX2NvbnRleHQpOiBMaWtld2lzZS4KCShjdXJyZW50X3N0bXRfdHJlZSk6IERlZmluZS4KCSogYy1zZW1hbnRpY3MuYyAoYmVnaW5fc3RtdF90cmVlKTogTmV3IGZ1bmN0aW9uLgoJKGFkZF9zdG10KTogTGlrZXdpc2UuCgkocHJ1bmVfdW51c2VkX2RlY2xzKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoKMjAwMC0wOS0wNiBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogZmxvdy5jIChpbnNuX2RlYWRfcCk6IERldGVjdCBkZWFkIG1lbW9yeSBzdG9yZXMgd2l0aCBhdXRvIGluY3JlbWVudHMuCgoyMDAwLTA5LTA2ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNhbGxzLmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wOS0wNiAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtc0BjeWdudXMuY28udWs+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKEFERFJFU1NfQ09TVCk6IEZpeCB0eXBvLgoKMjAwMC0wOS0wNiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCUludGVncmF0ZWQgcHJlcHJvY2Vzc29yLgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byBjLXBhcnNlLmdwZXJmLAoJYy1ncGVyZi5oLCBhbmQgYy1wYXJzZS5oLiAgUmVtb3ZlIC1kIGZyb20geWFjYyBjb21tYW5kIGxpbmUKCWdlbmVyYXRpbmcgYy1wYXJzZS5jLiAgVXBkYXRlIGRlcGVuZGVuY2llcy4KCSogYy1wYXJzZS5ncGVyZiwgYy1ncGVyZi5oOiBEZWxldGUuCgoJKiBjLWNvbW1vbi5jOiBEb24ndCBkZWZpbmUgcGFyc2Vfb3B0aW9ucywgY3BwX3Rva2VuLCB5eV9jdXIsCgl5eV9saW0sIG9yIHl5X2dldF90b2tlbi4gIERvbid0IGRlZmluZSBnZXRfZGlyZWN0aXZlX2xpbmUgaWYKCVVTRV9DUFBMSUIuCgkqIGMtY29tbW9uLmg6IEFkZCBtdWx0aXBsZSBpbmNsdWRlIGd1YXJkLiAgRGVmaW5lIFJJRCB2YWx1ZXMKCWZvciBldmVyeSBrZXl3b3JkIGluIEMsIEMrKywgYW5kIE9iamVjdGl2ZSBDLiAgUHV0IGFsbCB0aGUKCW1vZGlmaWVycyBmaXJzdC4KCShzdHJ1Y3QgY19maWxlaW5mbywgZ2V0X2ZpbGVpbmZvLCBkdW1wX3RpbWVfc3RhdGlzdGljcyk6IE5ldy4KCSogYy1kZWNsLmMgKGNfZGVjb2RlX29wdGlvbik6IEhhbmRsZSAtbGFuZy1vYmpjIGhlcmUuCgkocHJpbnRfbGFuZ19pZGVudGlmaWVyKTogSGFuZGxlIENfSVNfUkVTRVJWRURfV09SRCBjYXNlLgoJKGdyb2tkZWNsYXJhdG9yKTogQWRqdXN0IGZvciBuZXcgUklEIHNjaGVtZS4KCShleHRyYWN0X2ludGVyZmFjZV9pbmZvKTogTmV3IHN0dWIuCgkqIGMtbGFuZy5jOiBEb24ndCBkZWNsYXJlIHl5X2N1ciBvciBwYXJzZV9vcHRpb25zLgoJKGxhbmdfaW5pdF9vcHRpb25zKTogQ2FsbCBjcHBfaW5pdC4gIERvbid0IGNhbGwKCWNwcF9vcHRpb25zX2luaXQuCgkobGFuZ19pbml0KTogRG9uJ3QgY2FsbCBjaGVja19uZXdsaW5lIGlmIFVTRV9DUFBMSUIuCgoJKiBjLWxleC5jOiBEb24ndCBpbmNsdWRlIGMtcGFyc2UuaC4gIERvIGluY2x1ZGUgdGltZXZhci5oLgoJRWxpZGUgbG90cyBvZiB1bm5lY2Vzc2FyeSBjb2RlIGlmIFVTRV9DUFBMSUIuICBEZWxldGUgY29kZQoJcmVuZGVyZWQgdW5uZWNlc3NhcnkgYnkgbmV3IGFyY2hpdGVjdHVyZS4gIE1vdmUgcm91dGluZXMgbm90CglzaGFyZWQgd2l0aCBDKysgdG8gYy1wYXJzZS5pbi4gIE1haW50YWluIGEgbG9jYWwgaWRlYSBvZiB0aGUKCWxpbmUgbnVtYmVyLiAgICBIYW5kbGUgQysrIGFzIHdlbGwgYXMgQy4KCVtVU0VfQ1BQTElCXTogRGVjbGFyZSBhbmQgcmVnaXN0ZXIgY2FsbGJhY2tzIGZvciAjaWRlbnQgYW5kCglmb3IgZW50ZXJpbmcvbGVhdmluZyBmaWxlcy4KCShpbml0X2NfbGV4LCBjX2xleCk6IEFyZSBub3cgdGhlIGVudHJ5IHBvaW50cyB0byB0aGlzIGZpbGUuCgkoY2hlY2tfbmV3bGluZSk6IEJyZWFrIG91dCBkaXJlY3RpdmUgaGFuZGxpbmcgdG8KCXByb2Nlc3NfZGlyZWN0aXZlLgoJKHJlYWRfdWNzLCBpc19leHRlbmRlZF9jaGFyLCB1dGY4X2V4dGVuZF90b2tlbik6IE1vdmVkIGhlcmUKCWZyb20gQysrIGZyb250IGVuZC4KCShyZWFkZXNjYXBlLCBwYXJzZV9mbG9hdCk6IE92ZXJoYXVsLgoJKGxleF9udW1iZXIsIGxleF9zdHJpbmcsIGxleF9jaGFyY29uc3QpOiBCcmVhayBvdXQgb2YgY19sZXgKCShuJ2VlIHl5bGV4KS4KCShnZXRfZmlsZWluZm8sIHVwZGF0ZV9oZWFkZXJfdGltZXMsIGR1bXBfb25lX2hlYWRlciwKCWR1bXBfdGltZV9zdGF0aXN0aWNzKTogTmV3IGFuZC9vciBtb3ZlZCBoZXJlIGZyb20gQysrLgoJU3VwcG9ydCBwZXItZmlsZSBkYXRhIG5lZWRlZCBieSBDKysgYW5kIHBlci1oZWFkZXIgdGltaW5nCglzdGF0aXN0aWNzIChDKysgb25seSwgYXQgdGhlIG1vbWVudCkuCgkqIGMtbGV4Lmg6IFVwZGF0ZSBwcm90b3R5cGVzLiAgQWRkIG11bHRpcGxlIGluY2x1ZGUgZ3VhcmQuCgkqIGMtdHJlZS5oIChzdHJ1Y3QgbGFuZ19pZGVudGlmaWVyKTogQWRkIHJpZF9jb2RlIGZpZWxkLgoJKENfSVNfUkVTRVJWRURfV09SRCwgQ19SSURfQ09ERSk6IE5ldy4KCgkqIGMtcGFyc2UuaW46IEluY2x1ZGUgYy1wcmFnbWEuaC4gUmVtb3ZlIHVubmVjZXNhcnkgY2FsbHMgdG8KCXJlaW5pdF9wYXJzZV9mb3JfZnVuY3Rpb24gYW5kL29yIHBvc2l0aW9uX2FmdGVyX3doaXRlX3NwYWNlLgoJKHNhdmVfZmlsZW5hbWUsIHNhdmVfbGluZW5vKTogTG9vayBhaGVhZCBiZWZvcmUgc2F2aW5nLgoJKGxhYmVsIC0+IGlkZW50aWZpZXIgJzonKTogU2F2ZSBmaWxlIGFuZCBsaW5lIGJlZm9yZSBzaGlmdGluZyAnOicuCgkocmVzZXJ2ZWR3b3Jkcyk6IE5vIG5lZWQgdG8gY2FsbCBnZXRfaWRlbnRpZmllci4KCShpbml0X3BhcnNlLCBmaW5pc2hfcGFyc2UsIHl5ZXJyb3IsIHl5bGV4LCB5eXByaW50LAoJbWFrZV9wb2ludGVyX2RlY2xhcmF0b3IpOiBBcmUgbm93IGhlcmUgZm9yIEMvT2JqQy4KCShyaWRfdG9feXkpOiBDb252ZXJzaW9uIHRhYmxlIGZyb20gUklEIGNvbnN0YW50cyB0byBZYWNjIGNvZGVzLgoKCSogYy1wcmFnbWEuYzogUmV3cml0ZSBwYXJzaW5nIGxvZ2ljIHRvIGZpdCB3aXRoIGNwcGxpYidzCgkjcHJhZ21hIHJlZ2lzdHJ5LiAgUHJvdmlkZSBkdW1teSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0CglpbnRlcmZhY2UgaWYgIVVTRV9DUFBMSUIuCgkqIGMtcHJhZ21hLmg6IFVwZGF0ZSB0byBtYXRjaC4KCgkqIGZsYWdzLmg6IEFkZCBtdWx0aXBsZSBpbmNsdWRlIGd1YXJkLgoJKGZsYWdfZGV0YWlsZWRfc3RhdGlzdGljcyk6IE1vdmVkIGhlcmUgZnJvbSBDKysuCgkqIHRvcGxldi5jOiBEZWZpbmUgZmxhZ19kZXRhaWxlZF9zdGF0aXN0aWNzLgoKCSogZ2NjLmMgKEMgc3BlY3MpOiBVc2UgJSh0cmFkX2NhcGFibGVfY3BwKSBmb3IgLUV8LU18LU1NIGNhc2UKCSNpZiBVU0VfQ1BQTElCLgoJKiB0aW1ldmFyLmRlZiAoVFZfQ1BQLCBUVl9MRVgpOiBOZXcuCgkqIHRpbWV2YXIuaDogQWRkIG11bHRpcGxlIGluY2x1ZGUgZ3VhcmQuCgoJKiBvYmpjL2xhbmctc3BlY3MuaDogVXNlICUodHJhZF9jYXBhYmxlX2NwcCkgZm9yIC1FfC1NfC1NTSBjYXNlCgkjaWYgVVNFX0NQUExJQi4KCSogb2JqYy9vYmpjLWFjdC5jOiBEb24ndCBtZW50aW9uIHl5X2N1ciBvciBwYXJzZV9vcHRpb25zLgoJSW5pdGlhbGl6ZSBjcHBsaWIgcHJvcGVybHkuICBGb3JjZSBsaW5lbm8gdG8gMCBhZnRlciBmaXJzdAoJY2FsbCB0byBjaGVja19uZXdsaW5lLiAgRG9uJ3QgaGFuZGxlIC1sYW5nLW9iamMgaGVyZS4KCU1vdmUgZm9yZ2V0X3Byb3RvY29sX3F1YWxpZmllcnMgYW5kIHJlbWVtYmVyX3Byb3RvY29sX3F1YWxpZmllcnMgaGVyZS4KCjIwMDAtMDktMDYgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIHJzNjAwMC5tZDogQ29ycmVjdCBmdW5jdGlvbiB1bml0IGRlZmluaXRpb25zIGZvciBjcl9sb2dpY2FsIGFuZAoJbXRqbXByLgoJKHNDT05EKTogQWRkaXRpb25hbGx5IGZhaWwgZm9yIHNndCwgc2x0LCBzZ2UsIHNsZSBpZiAhVEFSR0VUX1BPV0VSCglhbmQgdXNlIHBvcnRhYmxlIG1ldGhvZCBmb3IgPj0wIGFuZCBmbG9hdGluZyBwb2ludCA+PS4gIFJlbW92ZQoJYXNzb2NpYXRlZCBtYXRjaGVycy4KCjIwMDAtMDktMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleHRlbmQudGV4aTogTWFyayBuYW1lZCByZXR1cm4gdmFsdWUgZXh0ZW5zaW9uIGFzIGRlcHJlY2F0ZWQuCgoyMDAwLTA5LTA2ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfcmV2ZXJzZV9jb25kaXRpb24pOiBSZXR1cm4KCXRoZSByZXN1bHQuCgoyMDAwLTA5LTA2ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0b3BsZXYuYyAoZGlzcGxheV9oZWxwKTogRml4IHRoaW5rbyBpbiBkb2N1bWVudGF0aW9uLgoKCSogZGlhZ25vc3RpYy5oIChvdXRwdXRfYnVmZmVyOjppbmRlbnRfc2tpcCk6IE5ldyBmaWVsZHMuCgkob3V0cHV0X2luZGVudGF0aW9uKTogTmV3IG1hY3JvLgoKCSogZGlhZ25vc3RpYy5jIChvdXRwdXRfaW5kZW50KTogTmV3IGZ1bmN0aW9uLgoJKG91dHB1dF9zZXRfcHJlZml4LCBjbGVhcl9kaWFnbm9zdGljX2luZm8pOiBVc2UuCgkob3V0cHV0X2VtaXRfcHJlZml4KTogUHJlZGljdCBmdXR1cmUgaW5kZW50YXRpb24uCgoyMDAwLTA5LTA2ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChzdGFnZV8qKTogYWRkIG1vcmUgZGVwZW5kZW5jaWVzIHRvIGVuc3VyZSBwYXJhbGxlbAoJYnVpbGRzIGJ1aWxkIGNvcnJlY3RseQoKMjAwMC0wOS0wNiAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkaEByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKGJvb3RzdHJhcC1sZWFuKTogRGVwZW5kIG9uIGJvb3RzdHJhcC1sZWFuX2csCglub3QgYm9vdHN0cmFwLWxlYW5fZi4KCjIwMDAtMDktMDYgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBta2xpYmdjYy5pbjogRW1pdCBydWxlIGZvciBsaWJnY2Mtc3RhZ2Utc3RhcnQuCgkqIE1ha2VmaWxlLmluIChzdGFnZTEtc3RhcnQsIHN0YWdlMi1zdGFydCwgc3RhZ2UzLXN0YXJ0LAoJc3RhZ2U0LXN0YXJ0KTogRG9uJ3QgaGFuZGxlIGxpYmdjYyBoZXJlLCB1c2UgbGliZ2NjLm1rIGluc3RlYWQuCgoyMDAwLTA5LTA2ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQHJlZGhhdC5jby51az4KCgkqIGxvY2FsLWFsbG9jLmMgKGxvY2FsX2FsbG9jKTogSWdub3JlIENMQVNTX0xJS0VMWV9TUElMTEVELgoJKHVwZGF0ZV9lcXVpdl9yZWdzKTogTGlrZXdpc2UsIGV4Y2VwdCBmb3IgdGhlIG1uMTAyMDAga2x1ZGdlLgoJKGNvbWJpbmVfcmVncyk6IExpa2V3aXNlLgoKCSogTWFrZWZpbGUuaW4gKGNzZS5vKTogRGVwZW5kIG9uICQoQkFTSUNfQkxPQ0tfSCkuCgkqIGNzZS5jOiBJbmNsdWRlICJiYXNpYy1ibG9jay5oIi4KCShzdHJ1Y3QgdGFibGVfZWx0KTogTmV3IGZpZWxkIFJFR0NPU1QuCgkoQ0hFQVBfUkVHKTogRGVsZXRlIG1hY3JvLgoJKENPU1QpOiBSZXR1cm4gMCBmb3IgUkVHcy4KCShhcHByb3hfcmVnX2Nvc3RfMSwgYXBwcm94X3JlZ19jb3N0LCBwcmVmZXJyYWJsZSk6IE5ldyBmdW5jdGlvbnMuCgkobm90cmVnX2Nvc3QpOiBSZXR1cm4gMCBmb3IgYXBwcm9wcmlhdGUgU1VCUkVHcy4KCShDT1NUU19OX0lOU05TKTogUmV0dXJuIE4gKiAyLgoJKHJ0eF9jb3N0KTogUmV0dXJuIDAgZm9yIFJFR3MsIGFuZCB1c2UgY29zdCBvZiBuZXN0ZWQgcnR4IGZvciBjaGVhcAoJU1VCUkVHcy4KCShDSEVBUEVSKTogVXNlIG5ldyBmdW5jdGlvbiBwcmVmZXJyYWJsZS4KCShpbnNlcnQpOiBJbml0aWFsaXplIFJFR0NPU1QgbWVtYmVyLgoJKGZpbmRfYmVzdF9hZGRyKTogVXNlIGFwcHJveF9yZWdfY29zdCBmb3IgZXN0aW1hdGlvbiBvZiByZWdpc3RlcgoJdXNhZ2UuCgkoY3NlX2luc24pOiBMaWtld2lzZS4KCSogbG9vcC5jIChpdl9hZGRfbXVsdF9jb3N0KTogTmV3IGZ1bmN0aW9uLgoJKGFkZF9jb3N0LCBzaGlmdF9jb3N0LCBtdWx0X2Nvc3QpOiBEZWxldGUgdmFyaWFibGVzLgoJKGluaXRfbG9vcCk6IERvbid0IGluaXRpYWxpemUgYWRkX2Nvc3Q7IHJlZHVjZSBjb3B5X2Nvc3QgYnkgaGFsZi4KCShzdHJlbmd0aF9yZWR1Y2UpOiBVc2UgaXZfYWRkX211bHRfY29zdCBpbnN0ZWFkIG9mIGZpeGVkIGFkZF9jb3N0LgoJTWFrZSBjb2RlIHRoYXQgZGV0ZWN0cyBhdXRvaW5jIG9wcG9ydHVuaXRpZXMgc2xpZ2h0bHkgbGVzcyBvcHRpbWlzdGljLgoJKHNpbXBsaWZ5X2dpdl9leHByKTogSWYgZXhwcmVzc2lvbiBjb250YWlucyBvdGhlciByZWcgdGhhdCBpcyBhbHNvIGEKCWdpdiwgb25seSBpbmNyZW1lbnQgYmVuZWZpdCBpZiB0aGlzIGlzIHRoZSBvbmx5IHVzZSBvZiB0aGF0IHJlZy4KCShjb25zZWNfc2V0c19naXYpOiBUYWtlIHRoYXQgY2hhbmdlIGludG8gYWNjb3VudC4KCShjb21iaW5lX2dpdnMpOiBTbGlnaHRseSBtb3JlIHZlcmJvc2Ugb3V0cHV0LgoKCSogaTM4Ni5oIChSVFhfQ09TVFMpOiBGb3IgTVVMVCwgcmV0dXJuIHRydWUgY29zdCBvZiBtdWx0aXBsaWNhdGlvbiwKCW5vdCB0aGUgY29zdCBvZiBhbiBlcXVpdmFsZW50IHNoaWZ0LgoJKiBzaC1wcm90b3MuaCAoYWRkc3ViY29zdHMpOiBEZWNsYXJlLgoJKiBzaC5jIChhZGRzdWJjb3N0cyk6IE5ldyBmdW5jdGlvbi4KCSogc2guaCAoQ09OU1RfQ09TVFMpOiBJZiBDT05TVF9PS19GT1JfSSwgdGhlbiByZXR1cm4gMC4KCShSVFhfQ09TVFMpOiBUd2Vhay4gIFVzZSBhZGRzdWJjb3N0cy4KCShBRERSRVNTX0NPU1QpOiBSZXR1cm4gaGlnaGVyIGNvc3QgZm9yIHJlZytyZWcgYWRkcmVzc2luZy4KCjIwMDAtMDktMDYgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHZhbGlkYXRlX2NvbmRpdGlvbl9tb2RlKTogTmV3IGZ1bmN0aW9uLgoJKGJyYW5jaF9jb21wYXJpc29uX29wZXJhdG9yKTogQ2FsbCB2YWxpZGF0ZV9jb25kaXRpb25fbW9kZSB0bwoJYWJvcnQgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIDAuCgkoYnJhbmNoX3Bvc2l0aXZlX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBOZXcgZnVuY3Rpb24uCgkoc2NjX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBDYWxsIHZhbGlkYXRlX2NvbmRpdGlvbl9tb2RlIHRvIGFib3J0CglyYXRoZXIgdGhhbiByZXR1cm5pbmcgMC4KCShjY3JfYml0KTogQ2FsbCB2YWxpZGF0ZV9jb25kaXRpb25fbW9kZS4gIFVwZGF0ZSBmb3IKCW5ldyBicmFuY2ggc2NoZW1lLgoJKHByaW50X29wZXJhbmQpOiBEZWxldGUgJUMgbW9kaWZpZXIuICBVcGRhdGUgJUUgY2FzZQoJdG8gdXNlIEVRIGJpdCBub3QgU08gYml0LgoJKHJzNjAwMF9yZXZlcnNlX2NvbmRpdGlvbik6IE5ldyBmdW5jdGlvbi4KCShyczYwMDBfZ2VuZXJhdGVfY29tcGFyZSk6IE5ldyBmdW5jdGlvbi4KCShyczYwMDBfZW1pdF9zQ09ORCk6IE5ldyBmdW5jdGlvbi4KCShyczYwMDBfZW1pdF9jYnJhbmNoKTogTmV3IGZ1bmN0aW9uLgoJKG91dHB1dF9jYnJhbmNoKTogVGhlIGxlbmd0aCBvZiBhIGxvbmcgYnJhbmNoIGluc24gaXMKCW5vdyBvbmx5IDggYnl0ZXMuICBBZGQgdmFsaWRhdGVfY29uZGl0aW9uX21vZGUuICBVc2UKCXJzNjAwMF9yZXZlcnNlX2NvbmRpdGlvbi4gIFJlbW92ZSBjcm9yIGdlbmVyYXRpb24uCgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oOiBVcGRhdGUgY29tbWVudHMuCgkoUFJFRElDQVRFX0NPREVTKTogQWRkIG5ldyBwcmVkaWNhdGUuICBVcGRhdGUgY29kZXMgdXNlZAoJYnkgYnJhbmNoX2NvbXBhcmlzb25fb3BlcmF0b3IgYW5kIHNjY19jb21wYXJpc29uX29wZXJhdG9yLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaDogQWRkIHByb3RvdHlwZXMgZm9yCgluZXcgZXh0ZXJuYWwgZnVuY3Rpb25zLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZDogQWRkIG5ldyBzY2hlZHVsaW5nIHBhcmFtZXRlcnMKCWZvciBjcl9sb2dpY2FsIGluc3RydWN0aW9ucy4gIENoYW5nZSBsZW5ndGggb2YgYnJhbmNoCglpbnN0cnVjdGlvbnMuCgkoYkNPTkQgcGF0dGVybnMpOiBDYWxsIHJzNjAwMF9lbWl0X2NicmFuY2guCgkoc0NPTkQgcGF0dGVybnMpOiBDYWxsIHJzNjAwMF9lbWl0X3NDT05ELgoJKGJyYW5jaCBwYXR0ZXJucyk6IENoYW5nZSBsZW5ndGhzIHRvIDQuCgkoY3IgbG9naWNhbCBwYXR0ZXJucyk6IE5ldy4KCjIwMDAtMDktMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChjYWxsX3BvcCk6IEZpeCB0ZXN0IGZvciBzZXR0aW5nCgljdXJyZW50X2Z1bmN0aW9uX3VzZXNfcGljX29mZnNldF90YWJsZS4KCShjYWxsLCBjYWxsX3ZhbHVlX3BvcCwgY2FsbF92YWx1ZSk6IExpa2V3aXNlLgoKMjAwMC0wOS0wNiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogdGltZXZhci5jICh0aW1ldmFyX2FkZCk6IERlbGV0ZS4KCSh0aW1ldmFyX2dldCk6IEFsc28gY291bnQgdGltZSBzaW5jZSB0aGUgc2VsZWN0ZWQgdGltZXIgd2FzCglsYXN0IHVwZGF0ZWQuICBEbyBub3QgZXhhbWluZSB0aGUgdGltZXZhciBzdGFjayBpZiB0aGUKCXNlbGVjdGVkIHRpbWVyIGlzIHN0YW5kYWxvbmUuCgoyMDAwLTA5LTA1ICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIGd0aHItZGNlLmggKF9fZ3RocmVhZF9vYmpjX211dGV4X2RlYWxsb2NhdGUpOiBGcmVlIG11dGV4LT5iYWNrZW5kLgoKMjAwMC0wOS0wNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBjLWRlY2wuYyAoZmluaXNoX2luY29tcGxldGVfZGVjbCk6IERvbid0IGNhbGwgY29tcGxldGVfYXJyYXlfdHlwZQoJZm9yICdleHRlcm4nIGFycmF5cy4KCjIwMDAtMDktMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9saWIxZnVuYy5hc20gKF9fZGl2dGYzKTogUmVidW5kbGUgZm9yIEl0YW5pdW0uCglFbGltaW5hdGUgZmluYWwgY29weSBmcm9tIG5vbi10cmFwcGluZyBjYXNlLgoJKF9fZGl2ZGYzLCBfX2RpdnNmMyk6IExpa2V3aXNlLgoKMjAwMC0wOS0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG11bGhpMyk6IEZpeCB0eXBvIGxhc3QgY2hhbmdlLgoJKiBjb25maWcvaWE2NC9saWIxZnVuYy5hc20gKF9fZGl2ZGkzLCBfX3VkaXZkaTMsIF9fdW1vZHNpMyk6IExpa2V3aXNlLgoKMjAwMC0wOS0wMyAgRG9ubiBUZXJyeSAgPGRvbm5AaW50ZXJpeC5jb20+LCAgTGF1cnluYXMgQml2ZWluaXMgIDxsYXVyYXNAc29mdGhvbWUubmV0PgoKCSogTWFrZWZpbGUuaW46IFJlc3RydWN0dXJlIGJvb3RzdHJhcCBzdGFnZXMgdG8gYWxsb3cgY2xlYW4KCXJlc3RhcnQgYWZ0ZXIgZmFpbHVyZS4KCjIwMDAtMDktMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC5tZCAobW92c2kgYW5kIG1vdmRpIHBhdHRlcm5zKTogQWxsb3cgbW92ZXMgZnJvbQoJOC1iaXQgY29uc3RhbnRzIHRvIEFSIHJlZ2lzdGVycy4KCjIwMDAtMDktMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChtdWxoaTMpOiBOZXcuCgoyMDAwLTA5LTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChJTklUX1RBUkdFVF9PUFRBQlMpOiBSZW1vdmUuCgkqIGNvbmZpZy9pYTY0L2xpYjFmdW5jcy5hc20gKF9fZGl2ZGkzKTogVXBkYXRlIGZyb20gSW50ZWwgSUEtNjQKCU9wdGltaXphdGlvbiBHdWlkZSwgbWluaW11bSBsYXRlbmN5IGFsdGVybmF0aXZlLgoJKF9fbW9kZGkzLCBfX3VkaXZkaTMsIF9fdW1vZGRpMyk6IExpa2V3aXNlLgoJKF9fZGl2c2kzLCBfX21vZHNpMywgX191ZGl2c2kzLCBfX3Vtb2RzaTMpOiBMaWtld2lzZS4KCjIwMDAtMDktMDUgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2ZpeGluY2wuYyAobG9hZF9maWxlKTogYWx3YXlzIHJlYWQgaGVhZGVyIGZpbGVzCgl3aXRoIHNpemVzIHRoYXQgYXJlIGEgbXVsdGlwbGUgb2YgdGhlIHBhZ2Ugc2l6ZS4KCSYgdXNlIGxpYmliZXJ0eSdzIGdldHBhZ2VzaXplIGZvciBkZXRlcm1pbmluZyB0aGF0LgoKMjAwMC0wOS0wNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBnY3NlLmMgKGhhc2hfc3RyaW5nXzEpOiBBZGQgcHJvdG90eXBlLgoJKiBjc2UuYyAoY2Fub25faGFzaF9zdHJpbmcpOiBMaWtld2lzZS4KCjIwMDAtMDktMDQgIENyYWlnIE5ld2VsbCAgPENyYWlnTkBpZWVlLm9yZz4KCgkqIGdjYy5jOiBVbmRlZmluZSAiX19XQ0hBUl9UWVBFX18iIGJlZm9yZSByZWRlZmluaW5nIGl0LgoKMjAwMC0wOS0wNCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIE1ha2VmaWxlLmluIChTVEFHRVNUVUZGKTogUmVtb3ZlIGxpYmdjYy4KCShzdGFnZTEtc3RhcnQsIHN0YWdlMi1zdGFydCwgc3RhZ2UzLXN0YXJ0KTogQ29weSB0aGUgY29udGVudHMgb2YKCXRoZSBsaWJnY2MgZGlyZWN0b3J5IGV4cGxpY2l0bHkuCgkobW9zdGx5Y2xlYW4pOiBDbGVhbiBsaWJnY2MuCgoyMDAwLTA5LTA0ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jOiAoc3RhY2tfYWRqdXN0X29mZnNldCk6IE5ldyBwcm90b3R5cGUuCgpXZWQgSmFuICAxIDAwOjIzOjU5IE1FVCAxOTk3ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjb21iaW5lLmMgKG1ha2VfZXh0cmFjdGlvbik6IEZpeCBydHhfY29zdCBjb21wYXJpc29uIHRvCgltYXRjaCB0aGUgY29tbWVudC4KCldlZCBKYW4gIDEgMDA6MTc6MzIgTUVUIDE5OTcgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYubWQgKHB1c2hzaTIsIHB1c2hoaTIsIHBvcGhpMiwgc3dhcHNmLCBzd2FwZGYsCgl1bXVsc2kzX2hpZ2hwYXJ0LCBzbXVsc2kzX2hpZ2hwYXJ0LCB0ZXN0cWlfY2Nub18xLCB4b3JxaV9leHRfMSk6CglBZGQgJyonIHRvIGluc24gcGF0dGVybiBuYW1lLgoKMjAwMC0wOS0wNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjcHBsZXguYyAoT05fUkVTVF9BUkcpOiBDaGVjayBWQVJfQVJHUyBmbGFnIG9mIGN1cnJlbnQgY29udGV4dCwKCXVzZSBwb3NuIC0gMSB0byBpbmRleCBpbnRvIHRva2VucyBhcnJheS4KCShtYXliZV9wYXN0ZV93aXRoX25leHQpOiBBZGp1c3QgY2FsbGVyLgoKMjAwMC0wOS0wMyAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogaW52b2tlLnRleGk6IERvY3VtZW50IHRoZSAtbXZ4d29ya3Mgb3B0aW9uIGZvciByczYwMDAgRUxGLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaDogVXBkYXRlIHZhcmlvdXMgY29tbWVudHMgYWJvdXQgWEVSX1JFR05PLgoJKFJFR05PX1JFR19DTEFTUyk6IFVzZSBzeW1ib2xpYyByZWdpc3RlcgoJbmFtZXMuCgoyMDAwLTA5LTAzICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jIChmaW5hbF9wcmVzY2FuX2luc24pOiBJZiB0aGUgZm9ybSBvZiBhIGp1bXAgaW5zbiBpc24ndAoJcmVjb2duaXplZCwgZG9uJ3QgdHJ5IHRvIGNvbmRpdGlvbmFsbHkgZXhlY3V0ZSBpdC4KClN1biBTZXAgIDMgMTM6MTA6NTYgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLm1kICgiKnRhYmxlanVtcF9saWIiKTogTmV3IHBhdHRlcm4uCgkoY2FsbF92YWx1ZV9pbnNuKTogUmlnaHQgbGVuZ3RoIGNsYWN1bGF0aW9uLgoJKGNhbGxfaW5zbik6IExpa2V3aXNlLgoKMjAwMC0wOS0wMiAgTWFyZWsgTWljaGFsa2lld2ljeiAgPG1hcmVrbUBsaW51eC5vcmcucGw+CgoJKiBjb25maWcvYXZyL2F2ci1wcm90b3MuaCwgY29uZmlnL2F2ci9hdnIuYyAodW5pcXVlX3NlY3Rpb24sCglnYXNfb3V0cHV0X2xpbWl0ZWRfc3RyaW5nLCBnYXNfb3V0cHV0X2FzY2lpLCBvdXRwdXRfbW92cWksCglvdXRwdXRfbW92aGksIG91dF9tb3ZxaV9yX21yLCBvdXRfbW92cWlfbXJfciwgb3V0X21vdmhpX3JfbXIsCglvdXRfbW92aGlfbXJfciwgb3V0X21vdnNpX3JfbXIsIG91dF9tb3ZzaV9tcl9yLCBvdXRwdXRfbW92c2lzZiwKCW91dF90c3RzaSwgb3V0X3RzdGhpLCByZXRfY29uZF9icmFuY2gsIGFzaGxxaTNfb3V0LCBhc2hsaGkzX291dCwKCWFzaGxzaTNfb3V0LCBhc2hycWkzX291dCwgYXNocmhpM19vdXQsIGFzaHJzaTNfb3V0LCBsc2hycWkzX291dCwKCWxzaHJoaTNfb3V0LCBsc2hyc2kzX291dCwgb3V0cHV0X3JlbG9hZF9pbmhpLCBvdXRwdXRfcmVsb2FkX2luc2lzZiwKCW91dF9zaGlmdF93aXRoX2NudCwgcHRycmVnX3RvX3N0ciwgY29uZF9zdHJpbmcsIGVuY29kZV9zZWN0aW9uX2luZm8pOgoJQWRkICJjb25zdCIgYXMgbmVlZGVkIHRvIHJlbW92ZSB3YXJuaW5ncy4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKGF2cl9vdmVycmlkZV9vcHRpb25zLCBhdnJfaW5pdF9vbmNlLAoJZnVuY3Rpb25fcHJvbG9ndWUsIGZ1bmN0aW9uX2VwaWxvZ3VlLCBmcmFtZV9wb2ludGVyX3JlcXVpcmVkX3AsCgljbGFzc19saWtlbHlfc3BpbGxlZF9wLCBvcmRlcl9yZWdzX2Zvcl9sb2NhbF9hbGxvYywKCWF2cl9hZGRyZXNzX2Nvc3QsIGF2cl9yZXRfcmVnaXN0ZXIpOiBVc2UgSyZSIHN0eWxlIGFyZ3VtZW50cy4KCShpbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCwgZ2FzX291dHB1dF9saW1pdGVkX3N0cmluZyk6CglSZW1vdmUgQVRUUklCVVRFX1VOVVNFRCBmcm9tIHRoZSB1c2VkIGFyZ3VtZW50cy4KCShvdXRwdXRfbW92Kiwgb3V0X21vdipfcl9tciwgb3V0X21vdipfbXJfciwgb3V0cHV0X3JlbG9hZF9pbnNpc2YpOgoJVXNlIGxvY2FsIHZhcmlhYmxlcyBzcmMsIGRlc3QsIGJhc2UgdG8gYWNjZXNzIG9wZXJhbmRzW10uCglSZW5hbWUgcmVnX2Rlc3QgdG8gcmVnX3NyYyBpZiB0aGF0J3Mgd2hhdCBpdCBpcy4KCShvdXRwdXRfbW92aGksIG91dHB1dF9tb3ZzaXNmKTogT3B0aW1pemUgbG9hZGluZyA4LWJpdCBpbW1lZGlhdGUKCWNvbnN0YW50cyB0byBMRF9SRUdTIGlmIHJlZ193YXNfMC4KCShvdXRwdXRfcmVsb2FkX2luc2lzZik6IENoYW5nZSBhcmcgMyB0byBpbnNuIGxlbmd0aCBhbmQgc2V0IGl0LgoJKG91dF9tb3ZoaV9yX21yLCBvdXRfbW92aGlfbXJfcik6IFVzZSBpbi9vdXQgZm9yIG1vcmUgZWZmaWNpZW50CglhY2Nlc3MgdG8gMTYtYml0IEkvTyByZWdpc3RlciBwYWlycy4KCShhdnJfYWRkcmVzc19jb3N0KTogTG93ZXIgY29zdCBmb3IgdGhlIGFib3ZlIGNhc2UuCgkob3V0X3RzdGhpKTogVXNlICJvciIgKGZhc3RlcikgaW5zdGVhZCBvZiAic2JpdyIgaWYgdGhlIG9wZXJhbmQKCW1heSBiZSBjbG9iYmVyZWQsIGFsc28gZm9yIExEX1JFR1MuCgkoYWRqdXN0X2luc25fbGVuZ3RoKTogQ29ycmVjdCBpbnNuIGxlbmd0aCBmb3IgaW9yaGkzIGFuZCBpb3JzaTMKCXdpdGggYSBDT05TVF9JTlQuCgoJKiBjb25maWcvYXZyL2F2ci5oIChQVFJESUZGX1RZUEUpOiBNYWtlIHNpZ25lZC4KCgkqIGNvbmZpZy9hdnIvYXZyLm1kOiBDaGFuZ2UgYWxsIHVzZXMgb2YgdGhlIFRFU1RfSEFSRF9SRUdfQ0xBU1MKCW1hY3JvIHRvIHRlc3RfaGFyZF9yZWdfY2xhc3MgZnVuY3Rpb24uCgkoKm1vdnNpLCAqbW92c2YpOiBDaGFuZ2UgImNjIiBhdHRyaWJ1dGUgZnJvbSAiY2xvYmJlciIgdG8gIm5vbmUiCglmb3IgbG9hZGluZyBpbW1lZGlhdGUgY29uc3RhbnRzIHRvIExEX1JFR1MuCgkoYW5kc2kzLCBjbXBoaSwgY21wc2kpOiBBZGQgcmV0dXJuIHN0YXRlbWVudHMgdG8gYXZvaWQgd2FybmluZ3MuCgoKU2F0IFNlcCAgMiAxMzo1ODoyMyAyMDAwICBNYXJlayBNaWNoYWxraWV3aWN6IDxtYXJla21AbGludXgub3JnLnBsPgoKCSogY29uZmlnL2F2ci9hdnIubWQgKCIqbmVnc2kyIik6IHN1YnN0aXR1dGUgJUAgdG8gX196ZXJvX3JlZ19fCgkqIGNvbmZpZy9hdnIvbGliZ2NjLlM6IExvc3QgcGFydCBvZiB0aGUgcHJldmlvdXMgcGF0Y2guCgoyMDAwLTA4LTMxICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIGd0aHItZGNlLmggKF9fZ3RocmVhZF9vYmpjX211dGV4X2FsbG9jYXRlKTogQ3JlYXRlIGEgcHRocmVhZF9tdXRleF90CglvYmplY3QgYmVmb3JlIGNhbGxpbmcgcHRocmVhZF9tdXRleF9pbml0LgoKMjAwMC0wOS0wMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvdC1lbGYsIGNvbmZpZy9zaC9jcnQxLmFzbSwgY29uZmlnL3NoL2NydGkuYXNtLAoJY29uZmlnL3NoL2NydG4uYXNtOiBOZXcgZmlsZXMuCgkqIGNvbmZpZy9zaC90LXNoIChFWFRSQV9NVUxUSUxJQl9QQVJUUyk6IFNldC4KCShjcnQxLm8sIGNydGkubywgY3J0bi5vKTogTmV3IHRhcmdldHMuCgkqIGNvbmZpZ3VyZS5pbiBbc2gtKi1lbGYqLCBzaC0qLXJ0ZW1zZWxmKl0gKHRtYWtlX2ZpbGUpOiBBZGRlZAoJc2gvdC1lbGYuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCSogY29uZmlnL3NoL3NoLmggKElOSVRfU0VDVElPTl9BU01fT1AsIEZJTklfU0VDVElPTl9BU01fT1AsCglTVEFSVEZJTEVfU1BFQywgRU5ERklMRV9TUEVDLCBDUlRfQ0FMTF9TVEFUSUNfRlVOQ1RJT04pOiBEZWZpbmUuCgkqIGNvbmZpZy9zaC9lbGYuaCAoSU5JVF9TRUNUSU9OX0FTTV9PUCwgRklOSV9TRUNUSU9OX0FTTV9PUCk6CglVbmRlZmluZSBmb3IgY29uZmlnL2VsZm9zLmggdG8gcmVkZWZpbmUuCgkoU1RBUlRGSUxFX1NQRUMsIEVOREZJTEVfU1BFQyk6IFJlZGVmaW5lIGFmdGVyIGNvbmZpZy9lbGZvcy5oLgoKMjAwMC0wOS0wMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+LCBOaWliZSBZdXRha2EgIDxnbmlpYmVAbTE3bi5vcmc+LCBLYXogS29qaW1hICA8a2tvamltYUByci5paWo0dS5vci5qcD4KCgkqIGNvbmZpZy9zaC9zaC1wcm90b3MuaCAobm9ucGljX3N5bWJvbF9tZW50aW9uZWRfcCwKCWxlZ2l0aW1pemVfcGljX2FkZHJlc3MsIG91dHB1dF9waWNfYWRkcl9jb25zdCk6IERlY2xhcmUuCgkqIGNvbmZpZy9zaC9zaC5oIChDT05ESVRJT05BTF9SRUdJU1RFUl9VU0FHRSk6IEZpeCBQSUMgcmVnaXN0ZXIuCgkoUFJFRkVSR09UX0JJVCwgVEFSR0VUX1BSRUZFUkdPVCk6IExpa2V3aXNlLgoJKFRBUkdFVF9TV0lUQ0hFUyk6IE5ldyBzd2l0Y2ggLW1wcmVmZXJnb3QuCgkoT1ZFUlJJREVfT1BUSU9OUyk6IFNldCBmbGFnX25vX2Z1bmN0aW9uX2NzZSB1bmxlc3MgLW1wcmVmZXJnb3QuCgkoUElDX09GRlNFVF9UQUJMRV9SRUdOVU0pOiBEZWZpbmUuCgkoR09UX1NZTUJPTF9UQUJMRSk6IExpa2V3aXNlLgoJKExFR0lUSU1JWkVfQUREUkVTUyk6IFVzZSBsZWdpdGltaXplX3BpY19hZGRyZXNzLgoJKEVOQ09ERV9TRUNUSU9OX0lORk8pOiBEZWZpbmUuCgkoRklOQUxJWkVfUElDKTogTmV3IG1hY3Jvcy4KCShMRUdJVElNQVRFX1BJQ19PUEVSQU5EX1AsIFNZTUJPTElDX0NPTlNUX1ApOiBOZXcgbWFjcm8uCgkoQVNNX09VVFBVVF9JTlQsIEFTTV9PVVRQVVRfU0hPUlQpOiBVc2Ugb3V0cHV0X3BpY19hZGRyX2NvbnN0LgoJKiBjb25maWcvc2gvc2guYyAocHJpbnRfb3BlcmFuZF9hZGRyZXNzKTogVXNlIG91dHB1dF9waWNfYWRkcl9jb25zdC4KCShwcmVwYXJlX21vdmVfb3BlcmFuZHMpOiBDYWxsIGVtaXRfcGljX21vdmUgb3IKCWVtaXRfcGljX2NvbnN0X21vdmUgaWYgYXBwcm9wcmlhdGUuCgkob3V0cHV0X2Zhcl9qdW1wKTogRm9yIFBJQywgdXNlIGJyYWYgYW5kIG91dHB1dCBsb25nIG9mZnNldC4KCShtYWNoaW5lX2RlcGVuZGVudF9yZW9yZyk6Cgkoc2hfZXhwYW5kX3Byb2xvZ3VlKTogU2F2ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgUElDIHJlZ2lzdGVyLgoJKHNoX2V4cGFuZF9lcGlsb2d1ZSk6IFJlc3RvcmUgaXQuCgkoaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQpOiBBY2NvdW50IGZvciBpdC4KCShub25waWNfc3ltYm9sX21lbnRpb25lZF9wKTogTmV3IGZ1bmN0aW9uLgoJKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBMaWtld2lzZS4KCShvdXRwdXRfcGljX2FkZHJfY29uc3QpOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLm1kIChjYWxsaV9wY3JlbCwgY2FsbF92YWx1ZWlfcGNyZWwpOiBOZXcgaW5zbnMuCgkoY2FsbCwgY2FsbF92YWx1ZSk6IFVzZSB0aGVtLgoJKEdPVGFkZHIycGljcmVnLCBzeW1fbGFiZWwycmVnLCBzeW1HT1QycmVnLCBzeW1HT1RPRkYycmVnLAoJc3ltUExUX2xhYmVsMnJlZyk6IE5ldyBleHBhbmRzLgoJKiBpbnZva2UudGV4aSAoU0ggT3B0aW9ucyk6IERvY3VtZW50IC1tcHJlZmVyZ290LgoKMjAwMC0wOS0wMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBydGwuaCAoQVNNX09QRVJBTkRTX0lOUFVUX0NPTlNUUkFJTlRfRVhQKTogTmV3IG1hY3JvLgoJKiBnY3NlLmMgKGhhc2hfc3RyaW5nXzEpOiBOZXcgZnVuY3Rpb24uCgkoaGFzaF9leHByXzEpIDxBU01fT1BFUkFORFM+OiBEaXNyZWdhcmQgZmlsZW5hbWUgYW5kIGxpbmUgbnVtYmVyLgoJKGV4cHJfZXF1aXZfcCkgPEFTTV9PUEVSQU5EUz46IExpa2V3aXNlLgoJKiBjc2UuYyAocnR4X2Nvc3QpOiBEb24ndCBpbmNyZWFzZSB0aGUgY29zdCBvZiBBU01fT1BFUkFORFMuCgkoY2Fub25faGFzaF9zdHJpbmcpOiBOZXcgZnVuY3Rpb24uCgkoY2Fub25faGFzaCkgPEFTTV9PUEVSQU5EUz46IERpc3JlZ2FyZCBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIuCgkoZXhwX2VxdWl2X3ApIDxBU01fT1BFUkFORFM+OiBMaWtld2lzZS4KCShmb2xkX3J0eCk6IFVzZSBBU01fT1BFUkFORFMgYWNjZXNzb3IgbWFjcm9zLgoJKiBlbWl0LXJ0bC5jIChjb3B5X2luc25fMSk6IExpa2V3aXNlLgoJKiBpbnRlZ3JhdGUuYyAoY29weV9ydHhfYW5kX3N1YnN0aXR1dGUpOiBMaWtld2lzZS4KCSogc3RtdC5jIChleHBhbmRfYXNtX29wZXJhbmRzKTogTGlrZXdpc2UuICBHaXZlIGFuCglBU01fT1BFUkFORFMgcnR4IHRoZSBtb2RlIG9mIHRoZSBvdXRwdXQgcmVnIGJlaW5nIHNldCBmcm9tIGl0LgoKMjAwMC0wOS0wMSAgRnJlZCBGaXNoICA8Zm5mQGJlLmNvbT4KCgkqIGZpeC1oZWFkZXIuYyAod3JpdGVfcmJyYWMpOiBBZGQgcHV0YyBhbmQgZ2V0YyB0byBsaXN0IG9mCglmdW5jdGlvbnMgdG8gcHJvdGVjdCBhZ2FpbnN0IHByaW9yIGRlZmluaXRpb24gYXMgYSBtYWNyby4KCjIwMDAtMDktMDEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmggKGVudW0gY190cmVlX2luZGV4KTogQWRkIENUSV9DX1NJWkVfVFlQRS4KCShjX3NpemVfdHlwZV9ub2RlKTogRGVmaW5lLgoJKiBjLWRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplIGNfc2l6ZV90eXBlX25vZGUuCgkqIGMtY29tbW9uLmMgKGVudW0gZm9ybWF0X2xlbmd0aHMsIGVudW0gZm9ybWF0X3N0ZF92ZXJzaW9uLAoJZm9ybWF0X2xlbmd0aF9pbmZvLCBmb3JtYXRfdHlwZV9kZXRhaWwsIEJBRExFTiwgTk9MRU5HVEhTLAoJZm9ybWF0X2tpbmRfaW5mbywgcHJpbnRmX2xlbmd0aF9zcGVjcywgc2NhbmZfbGVuZ3RoX3NwZWNzLCBUODlfSSwKCVQ5OV9JLCBUODlfTCwgVDk5X0xMLCBURVhfTEwsIFQ4OV9TLCBUODlfVUksIFQ5OV9VSSwgVDg5X1VMLAoJVDk5X1VMTCwgVEVYX1VMTCwgVDg5X1VTLCBUODlfRiwgVDk5X0YsIFQ4OV9ELCBUOTlfRCwgVDg5X0xELAoJVDk5X0xELCBUODlfQywgVDk5X1NDLCBUOTlfVUMsIFQ4OV9WLCBUOTRfVywgVEVYX1csIFQ5NF9XSSwKCVRFWF9XSSwgVDk5X1NULCBUOTlfU1NULCBUOTlfUEQsIFQ5OV9VUEQsIFQ5OV9JTSwgVDk5X1VJTSwKCWZvcm1hdF90eXBlcyk6IERlZmluZS4KCShmb3JtYXRfY2hhcl9pbmZvLCBwcmludF9jaGFyX3RhYmxlLCBzY2FuX2NoYXJfdGFibGUsCgl0aW1lX2NoYXJfdGFibGUpOiBSZWFycmFuZ2UgZm9yIG5ldyBvcmdhbml6YXRpb24gb2YgaW5mb3JtYXRpb24KCWFib3V0IGZvcm1hdCBsZW5ndGggbW9kaWZpZXJzIGFuZCBzdGFuZGFyZCB2ZXJzaW9ucy4KCShUX1NUKTogUmVkZWZpbmUgdG8gdXNlIGNfc2l6ZV90eXBlX25vZGUuCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBPYnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgbGVuZ3RoIG1vZGlmaWVycyBhbmQKCXN0YW5kYXJkIHZlcnNpb25zIGZyb20gdGFibGVzLiAgQWRqdXN0IHdhcm5pbmcgbWVzc2FnZSB3b3JkaW5ncy4KCVVzZSB0aGUgbmFtZSBmcm9tIHRoZSB1c2VyJ3MgcHJvZ3JhbSBmb3IgYGxsJyBhbmQgYGhoJyBsZW5ndGgKCW1vZGlmaWVycyBpbiB3YXJuaW5nIG1lc3NhZ2VzLiAgVXNlIG1vcmUgaW5mb3JtYXRpdmUgbmFtZXMgZm9yCgl3YW50ZWQgdHlwZXMgd2hlcmUgYXZhaWxhYmxlIChmb3Igd2NoYXJfdCwgd2ludF90LCBzaXplX3QsIHNpZ25lZAoJc2l6ZV90LCBwdHJkaWZmX3QsIHVuc2lnbmVkIHB0cmRpZmZfdCwgaW50bWF4X3QgYW5kIHVpbnRtYXhfdCkuCgoyMDAwLTA5LTAxICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjYWxscy5jIChlbWl0X2NhbGxfMSk6IEFkZCBSRUdfTk9SRVRVUk4gbm90ZSB0byBjYWxsIGlmIEVDRl9OT1JFVFVSTi4KCSogY29tYmluZS5jIChkaXN0cmlidXRlX25vdGVzKTogSGFuZGxlIFJFR19OT1JFVFVSTi4KCSogcnRsLmMgKHJlZ19ub3RlX25hbWUpOiBBZGQgUkVHX05PUkVUVVJOLgoJKiBydGwuaCAoZW51bSByZWdfbm90ZSk6IExpa2V3aXNlLgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaCAoZW1pdF9zYWZlX2Fjcm9zc19jYWxscyk6IFJlbmFtZWQgZnJvbQoJaWE2NF9maWxlX3N0YXJ0LgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGVtaXRfc2FmZV9hY3Jvc3NfY2FsbHMpOiBMaWtld2lzZS4KCShydHhfbmVlZHNfYmFycmllcik6IEhhbmRsZSB1bnNwZWNfdm9sYXRpbGUgOCBhbmQgOS4KCShlbWl0X3ByZWRpY2F0ZV9yZWxhdGlvbl9pbmZvKTogSGFuZGxlIGNvbmRpdGlvbmFsIGNhbGxzIHdpdGgKCVJFR19OT1JFVFVSTi4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChBU01fRklMRV9TVEFSVCk6IENhbGwgZW1pdF9zYWZlX2Fjcm9zc19jYWxscwoJaW5zdGVhZCBvZiBpYTY0X2ZpbGVfc3RhcnQuCgkqIGNvbmZpZy9pYTY0L3N5c3Y0LmggKEFTTV9GSUxFX1NUQVJUKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKHNhZmVfYWNyb3NzX2NhbGxzX2FsbCwKCXNhdmVfYWNyb3NzX2NhbGxzX25vcm1hbCk6IE5ldyBwYXR0ZXJucy4KCgkqIGxvb3AuYyAoY2hlY2tfZmluYWxfdmFsdWUpOiBDaGVjayBmb3IgYml2IHVzZSBiZWZvcmUgY2hlY2tpbmcgZm9yCglnaXYgdXNlLiAgQ2hlY2sgZm9yIGJvdGggYml2IGFuZCBnaXYgdXNlcy4gIEFsd2F5cyBzZXQgbGFzdF9naXZfdXNlCglpZiB0aGVyZSBpcyBhIGdpdiB1c2UuCgoyMDAwLTA5LTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobXVsc2kzKTogVXNlIGdyZnJfcmVnaXN0ZXJfb3BlcmFuZC4KCShtYWRkZGkzKTogTGlrZXdpc2UuCgkobWFkZHNpMyk6IE5ldy4KCkZyaSBTZXAgIDEgMTA6NTk6NDcgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cHIuYyAoY2xlYXJfc3RvcmFnZSk6IERvbid0IHVzZSBlbWl0X21vdmVfaW5zbiB1bmxlc3MKCWVpdGhlciBCTEttb2RlIG9yIHByb3BlciBzaXplLgoJKHN0b3JlX2NvbnN0cnVjdG9yKTogRG9uJ3QgY2FsbCBjbGVhcl9zdG9yYWdlIGlmIFJFRyBvZiB3cm9uZyBzaXplLgoKCSogZmxvdy5jIChpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogRG9uJ3QgbWFyayBmcmFtZSBkZWFkIGF0IGVuZAoJb2YgZnVuY3Rpb24gaWYgcmV0dXJucyB3aWh0IHN0YWNrIHBvaW50ZXIgZGVwcmVzc2VkLgoKMjAwMC0wOS0wMSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoc3RhY2tfYWRqdXN0X29mZnNldCk6IE5ldyBmdW5jdGlvbi4KCShkd2FyZjJvdXRfc3RhY2tfYWRqdXN0KTogQnJlYWsgb3V0IHN0YWNrIGFkanVzdCBsb2dpYyBpbnRvCgluZXcgc3RhY2tfYWRqdXN0X29mZnNldCBmdW5jdGlvbi4gIExvb2sgaW5zaWRlIHBhcmFsbGVscyBhbmQKCXNlcXVlbmNlcyBmb3Igc3RhY2sgYWRqdXN0bWVudHMuCgoyMDAwLTA4LTMxICBKZWZmIExhdyA8bGF3QGN5Z251cy5jb20+CgoJKiBhcm0ubWQ6IFVzZSBub19uZXdfcHNldWRvcyB0byBkZXRlcm1pbmUgd2hlbiBpdCBpcyBzYWZlCgl0byBjcmVhdGUgbmV3IHBzZXVkbyByZWdpc3RlcnMuCgoJKiBhcm0uYyAobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IFVzZSBub19uZXdfcHNldWRvcyB0byBkZXRlcm1pbmUKCXdoZW4gd2UgY2FuIHNhZmVseSBhbGxvY2F0ZSBuZXcgcmVnaXN0ZXJzLgoKMjAwMC0wOC0zMSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogc3RtdC5jIChleHBhbmRfYXNtX29wZXJhbmRzKTogVHdpZGRsZSBnZW5lcmF0aW5nX2NvbmNhdF9wCglzbyB0aGF0IENPTkNBVHMgYXJlIG5vdCBnZW5lcmF0ZWQgZm9yIEFTTXMuCgkqIGVtaXQtcnRsLmMgKGdlbl9yZWdfcnR4KTogRG9uJ3QgZ2VuZXJhdGUgQ09OQ0FUcyB3aGVuCglub3QgZ2VuZXJhdGluZ19jb25jYXRfcC4KCSogZnVuY3Rpb24uYyAocG9wX2Z1bmN0aW9uX2NvbnRleHRfZnJvbSk6IFJlc2V0CglnZW5lcmF0aW5nX2NvbmNhdF9wLgoJKHByZXBhcmVfZnVuY3Rpb25fc3RhcnQpOiBMaWtld2lzZS4KCSogcnRsLmMgKGdlbmVyYXRpbmdfY29uY2F0X3ApOiBEZWZpbmUuCgkqIHJ0bC5oIChnZW5lcmF0aW5nX2NvbmNhdF9wKTogRGVjbGFyZS4KCSogdG9wbGV2LmMgKHJlc3Rfb2ZfY29tcGlsYXRpb24pOiBObyBDT05DQVRzIGFmdGVyIFJUTCBnZW5lcmF0aW9uLgoKMjAwMC0wOC0yMiAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgkgICAgTWFzYW5vYnUgWXVoYXJhIDx5dWhhcmFAZmxhYi5mdWppdHN1LmNvLmpwPgoKCSogZ21pY3JvLmggKFRBUkdFVF9TV0lUQ0hFUyk6IEFkZCBkZXNjcmlwdGlvbnMgYW5kIG1hcmsgdGhlbQoJZm9yIHRyYW5zbGF0aW9uLgoKMjAwMC0wOC0zMCAgR3JlZyBNY0dhcnkgIDxncmVnQG1jZ2FyeS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoZml4aW5jLnNoKTogUGFzcyBDQywgQ0ZMQUdTIGFuZCBMREZMQUdTIHRvIG1rZml4aW5jLnNoCgkqIGZpeGluYy9NYWtlZmlsZS5pbiAoZml4aW5jbCk6IFBhc3MgJChMREZMQUdTKSB0byAkKENDKS4KCSogZml4aW5jL21rZml4aW5jLnNoOiBQYXNzICRDQywgJENGTEFHUyBhbmQgJExERkxBR1MgdG8gJE1BS0UuCgoyMDAwLTA4LTMwICBHcmVnIE1jR2FyeSAgPGdyZWdAbWNnYXJ5Lm9yZz4KCgkqIHRyZWUuaCAoc3RydWN0IHRyZWVfaW50X2NzdCk6IFdyYXAgbG93IGFuZCBoaWdoIGluIGEgc3ViLXN0cnVjdC4KCShUUkVFX0lOVF9DU1RfTE9XLCBUUkVFX0lOVF9DU1RfSElHSCk6IEFjY2VzcyB0aHJvdWdoIHN1Yi1zdHJ1Y3QuCgkoVFJFRV9JTlRfQ1NUKTogTmV3IG1hY3JvLgoJKiB2YXJhc20uYyAoY29uc3RfaGFzaCwgY29tcGFyZV9jb25zdGFudF8xLCByZWNvcmRfY29uc3RhbnRfMSk6CglVc2UgbmV3IG1hY3JvIFRSRUVfSU5UX0NTVC4KCldlZCAzMC1BdWctMjAwMCAyMzoxODo1OSBCU1QgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY29udHJpYi50ZXhpOiBBZGQgc2VsZi4KCjIwMDAtMDgtMzAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3NoLm1kIChjbXBlcXNpX2lvcl90LCBjbXBlcXNpX2FuZF90KTogTmV3IGluc25zLgoJKGNtcGVxZGlfdCBzcGxpdHRlcik6IFVzZSBjbXBlcXNpX2FuZF90IGluc3RlYWQgb2YgZW1pdHRpbmcganVtcHMKCWFuZCBsYWJlbHMuCgoyMDAwLTA4LTMwICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIGZpeGluYy9nbnUtcmVnZXguYzogRG9uJ3QgZGVmaW5lIGBjb25zdCcuCgpUdWUgQXVnIDI5IDIyOjA5OjU5IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHByLmMgKHN0b3JlX2NvbnN0cnVjdG9yKTogQWxsb3cgdmFyaWFibGUgYm91bmRzIG9mIGFycmF5IHR5cGUuCgkoZXhwYW5kX2V4cHIpOiBEb24ndCBibG93IHVwIGlmIHR5cGUgaXMgRVJST1JfTUFSSy4KCSogdmFyYXNtLmMgKG91dHB1dF9jb25zdHJ1Y3Rvcik6IERvbid0IGFjY2VzcyBsb3dlciBib3VuZCBvZiBhcnJheQoJdHlwZSB1bmxlc3MgbmVlZCBpdCBpZiBpbmRleCBpcyBzdXBwbGllZCAoc28gaXQgY2FuIGJlIGEgdmFyaWFibGUKCWlmIG5vIGluZGV4IGlzIHN1cHBsaWVkKS4KCVVzZSB0cmVlX2xvd19jc3Q7IHVzZSBIT1NUX1dJREVfSU5UIGZvciBzaXplczsgY2hhbmdlIEJJVFBPUyB0byBQT1MuCglPdGhlciBtaW5vciBjbGVhbnVwcy4KCjIwMDAtMDgtMjkgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogTWFrZWZpbGUuaW46IFJldmFtcCBoYW5kbGluZyBvZiBjZmxhZ3MgdG8gYWxsb3cgZGlmZmVyZW50IFdBUk5fQ0ZMQUdTCglmb3IgY29tcGlsYXRpb25zIGluIHN0YWdlIDEgYW5kIHN1YnNlcXVlbnQgc3RhZ2VzLCByZXNwZWN0aXZlbHkuCgkqIGNvbmZpZ3VyZS5pbiAodmF4KTogQWRkIGNvbXBpbGVyLWRlcGVuZGVudCBDRkxBR1MgZm9yIHN0YWdlIDEuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCSogeC12YXgsIHgtdmF4LWdjYzogRGVsZXRlZC4KCjIwMDAtMDgtMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGMtY29tbW9uLmMgKGRlY2xhcmVfZnVuY3Rpb25fbmFtZSk6IFVzZSBmdW5jX2lkX25vZGUsCglmdW5jdGlvbl9pZF9ub2RlLCBhbmQgcHJldHR5X2Z1bmN0aW9uX2lkX25vZGUuICBEbyBub3QgbWFrZQoJX19mdW5jX18gdmlzaWJsZSBhdCBmaWxlIHNjb3BlLgoJKiBjLWNvbW1vbi5oIChjX3RyZWVfaW5kZXgpOiBBZGQgQ1RJX0ZVTkNUSU9OX0lELAoJQ1RJX1BSRVRUWV9GVU5DVElPTl9JRCwgYW5kIENUSV9GVU5DX0lELgoJKGZ1bmN0aW9uX2lkX25vZGUsIHByZXR0eV9mdW5jdGlvbl9pZF9ub2RlLCBmdW5jX2lkX25vZGUpOiBOZXcKCW1hY3Jvcy4KCSogYy1kZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBmdW5jdGlvbl9pZF9ub2RlLAoJcHJldHR5X2Z1bmN0aW9uX2lkX25vZGUsIGFuZCBmdW5jX2lkX25vZGUuCgkoY19tYWtlX2ZuYW1lX2RlY2wpOiBDb3JyZWN0IGNvbW1lbnQuCgoJKiB0cmVlLmggKHN0cnVjdCB0cmVlX2lkZW50aWZpZXIpOiBDb25zdGlmeSBwb2ludGVyIG1lbWJlci4KCgkqIGMtZGVjbC5jIChwdXNoZGVjbCwgaW1wbGljaXRfZGVjbF93YXJuaW5nKTogQ29uc3RpZnkgYSBjaGFyICouCgkqIGMtcHJhZ21hLmggKHN0cnVjdCB3ZWFrX3N5bXMpOiBDb25zdGlmeSBuYW1lIGFuZCB2YWx1ZSBtZW1iZXJzLgoJKGFkZF93ZWFrKTogQ29uc3RpZnkgYXJndW1lbnRzLgoKCSogY2FsbHMuYyAoc3BlY2lhbF9mdW5jdGlvbl9wKTogQ29uc3RpZnkgYSBjaGFyICouCgkoZXhwYW5kX2NhbGwpOiBSZW1vdmUgdmFyaWFibGUgd2hpY2ggaXMgaW5pdGlhbGl6ZWQgYW5kIHRoZW4KCW5ldmVyIHVzZWQuCgkqIGRlcGVuZGVuY2UuYyAoc3RydWN0IGRlZl91c2UsIHN0cnVjdCBpbmR1Y3Rpb24sIHN0cnVjdCBzdWJzY3JpcHQpOgoJQ29uc3RpZnkgJ3ZhcmlhYmxlJyBtZW1iZXIuCgkoZ2V0X2xvd19ib3VuZCwgaGF2ZV9pbmR1Y3Rpb25fdmFyaWFibGUpOiBDb25zdGlmeSBjaGFyICogYXJndW1lbnQuCgkoZmluZF9pbmR1Y3Rpb25fdmFyaWFibGUpOiBBZGQgYnJhY2VzIHRvIGF2b2lkIGRhbmdsaW5nIGVsc2UuCgkoY2xhc3NpZnlfZGVwZW5kZW5jZSk6IENvbnN0aWZ5IGNoYXIgKiBhcnJheXMuCgkqIHByb2ZpbGUuYyAob3V0cHV0X2Z1bmNfc3RhcnRfcHJvZmlsZXIpOiBDb25zdGlmeSBhIGNoYXIgKi4KCSogc3Rvci1sYXlvdXQuYyAoZmluYWxpemVfcmVjb3JkX3NpemUpOiBDb25zdGlmeSBhIGNoYXIgKi4KCSogdHJlZS5jIChpc19hdHRyaWJ1dGVfcCk6IENvbnN0aWZ5IGEgY2hhciAqLgoJKiB2YXJhc20uYyAoYWRkX3dlYWssIHJlbW92ZV9mcm9tX3BlbmRpbmdfd2Vha19saXN0KTogQ29uc3RpZnkgYXJndW1lbnQuCgoJKiB2YXJhc20uYyAobWFrZV9mdW5jdGlvbl9ydGwsIG1ha2VfZGVjbF9ydGwpOiBSZWFycmFuZ2UgY29kZQoJZm9yIGNvbXByZWhlbnNpYmlsaXR5LiAgRG8gbm90IGNhbGwgZ2V0X2lkZW50aWZpZXIgaWYgd2UgZGlkCglub3QgY2hhbmdlIHRoZSBERUNMX0FTU0VNQkxFUl9OQU1FIG9mIHRoZSBkZWNsLiAgVXNlIGFsbG9jYSB0bwoJY3JlYXRlIHRlbXBvcmFyeSBzdHJpbmcgY29uc3RhbnRzLCBub3QgZ2djX2FsbG9jX3N0cmluZy4gIE5vCgluZWVkIHRvIGNvcHkgcmVzdWx0IG9mIEFTTV9GT1JNQVRfUFJJVkFURV9OQU1FLiAgVXNlIGNvbnN0CgljaGFyICogdG8gaG9sZCBJREVOVElGSUVSX1BPSU5URVJzLgoKMjAwMC0wOC0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG11bGRpMyk6IFVzZSBncmZyX3JlZ2lzdGVyX29wZXJhbmQKCWZvciB0aGUgaW5wdXRzLgoKMjAwMC0wOC0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJlbG9hZC5jIChwdXNoX3NlY29uZGFyeV9yZWxvYWQpOiBBbGxvdyBjbGFzcyA9PSByZWxvYWRfY2xhc3MKCWlmIHdlJ3JlIHVzaW5nIGEgcmVsb2FkX2luL291dCBwYXR0ZXJuLgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAocmVsb2FkX2ludGkpOiBVc2UgYSBUSW1vZGUgc2NyYXRjaC4gIFVzZQoJdGhlIGhhbGYgdGhhdCBkb2VzIG5vdCBjb25mbGljdCB3aXRoIHRoZSByZWxvYWQgcmVnaXN0ZXIuCgkocmVsb2FkX291dHRpKTogTGlrZXdpc2UuCgoyMDAwLTA4LTI5ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIHJlbG9hZC5jOiBGaXggZm9ybWF0dGluZy4KCgkqIHN0bXQuYzogRml4IGZvcm1hdHRpbmcuCgoJKiBnY2MuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTA4LTI5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBmbGFncy5oICh0aW1lX3JlcG9ydCwgbWVtX3JlcG9ydCk6IE5ldyBnbG9iYWwgZmxhZ3MuCgkqIHRvcGxldi5jOiBEZWZpbmUgdGltZV9yZXBvcnQgYW5kIG1lbV9yZXBvcnQuCgkoZl9vcHRpb25zKTogQWRkIC1mdGltZS1yZXBvcnQgYW5kIC1mbWVtLXJlcG9ydC4KCShjb21waWxlX2ZpbGUpOiBUdXJuIG9uIHRpbWVfcmVwb3J0IGlmIHF1aWV0X2ZsYWcgaXMgb2ZmLgoJQ2FsbCBnZ2NfcHJpbnRfc3RhdGlzdGljcyBhdCB2ZXJ5IGVuZCBpZiBtZW1fcmVwb3J0IGlzIG9uLgoJKiB0aW1ldmFyLmMgKFRJTUVWQVJfRU5BQkxFKTogRXhhbWluZSB0aW1lX3JlcG9ydCwgbm90IHF1aWV0X2ZsYWcuCgoJKiBnZ2MtY29tbW9uLmMgKGdnY19wcmludF9zdGF0aXN0aWNzKTogUmVuYW1lIHRvCglnZ2NfcHJpbnRfY29tbW9uX3N0YXRpc3RpY3M7IGFsbCBjYWxsZXJzIGNoYW5nZWQuICBTY2FsZQoJcXVhbnRpdGllcyBhYm92ZSAxMEsgdG8ga2lsb2J5dGVzIGFuZCBhYm92ZSAxME0gdG8gbWVnYWJ5dGVzLgoJKiBnZ2MtcGFnZS5jIChnZ2NfcGFnZV9wcmludF9zdGF0aXN0aWNzKTogUmVuYW1lIHRvCglnZ2NfcHJpbnRfc3RhdGlzdGljcy4gIFJlcG9ydCBtZW1vcnkgY29uc3VtZWQgYnkgaW50ZXJuYWwgZGF0YQoJc3RydWN0dXJlcyBmb3IgZWFjaCBhbGxvY2F0aW9uIGJ1Y2tldC4gIFNjYWxlIHF1YW50aXRpZXMgYWJvdmUKCTEwSyB0byBraWxvYnl0ZXMgYW5kIGFib3ZlIDEwTSB0byBtZWdhYnl0ZXMuCgkqIGdnYy1zaW1wbGUuYzogUHJvdG90eXBlIGRlYnVnX2dnY190cmVlIHRvIGF2b2lkIHdhcm5pbmcuCglDYXN0IFBUUl9LRVkocCkgdG8gdW5zaWduZWQgbG9uZyBpbiBmcHJpbnRmIGNhbGwgdG8gYXZvaWQgd2FybmluZy4KCURlZmluZSB0YWxseV9sZWF2ZXMgYWx3YXlzLgoJKGdnY19wcmludF9zdGF0aXN0aWNzKTogTmV3IGZ1bmN0aW9uLgoJKiBnZ2MuaDogQWRqdXN0IGZvciByZW5hbWVkIGZ1bmN0aW9ucy4KCldlZCBBdWcgMzAgMDA6MTE6NDIgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLm1kICgiKm1vdnNmIiwiKm1vdnNpIik6IFBhc3MgTlVMTCB0bwoJb3V0cHV0X21vdnNpc2YgaW5zdGVhZCBvZiB3aGljaF9hbHRlcm5hdGl2ZS4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKG91dHB1dF9yZWxvYWRfaW5oaSk6IENoZWNrIGZvciBOVUxMIHBvbnRlci4KClR1ZSBBdWcgMjkgMjI6Mjk6NTggMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4gJiBNYXJlayBNaWNoYWxraWV3aWN6IDxtYXJla21AbGludXgub3JnLnBsPgoKCSogY29uZmlnL2F2ci9hdnItcHJvdG9zLmg6IChhdnJfb3V0cHV0X2FzY2lpKSBSZW1vdmVkLgoJKGF2cl9wcm9nbWVtX3ApOiBOZXcgcHJvdG90eXBlLgoJKG91dHB1dF9tb3ZzaXNmKTogUHJvdG90eXBlIGRlY2xhcmF0aW9uIGNoYW5nZWQuCgkob3V0cHV0X21vdnFpKTogTmV3IHByb3RvdHlwZS4KCShvdXRwdXRfbW92aGkpOiBOZXcgcHJvdG90eXBlLgoJKGNhbGxfaW5zbl9vcGVyYW5kKTogTGlrZXdpc2UuCgkoZmluYWxfcHJlc2Nhbl9pbnNuKTogTGlrZXdpc2UuCgkoYXZyX3NpbXBsaWZ5X2NvbXBhcmlzaW9uX3ApOiBMaWtld2lzZS4KCShhdnJfbm9ybWFsaXplX2NvbmRpdGlvbik6IExpa2V3aXNlLgoJKGNvbXBhcmVfZXFfcCk6IExpa2V3aXNlLgoJKG91dF9zaGlmdF93aXRoX2NudCk6IExpa2V3aXNlLgoJKGNvbnN0X2ludF9wb3cyX3ApOiBMaWtld2lzZS4KCShvdXRwdXRfcmVsb2FkX2luaGkpOiBQcm90b3R5cGUgZGVjbGFyYXRpb24gY2hhbmdlZC4KCgkqIGNvbmZpZy9hdnIvYXZyLmM6IChkZWJ1Z19oYXJkX3JlZ19zZXQpOiBQcm90b3R5cGUgZGVjbGFyZWQuCgkobGRpX3JlZ19ydHgpOiBOZXcuIHJ0eCBmb3IgcjMxLgoJKGF2cl9pbml0X3N0YWNrKTogSW5pdGlhbGl6ZSBhcyAiX19zdGFjayIuCgkoZnVuY3Rpb25fcHJvbG9ndWUpOiBVc2UgaXQuCglSZXBsYWNlIGFsbCBUQVJHRVRfRU5IQU5DRUQgd2l0aCBBVlJfRU5IQU5DRUQuCgkoYXZyX21jdV9uYW1lKTogSW5pdGlhbGl6ZSBhcyAiYXZyMiIuCgkoYXZyX2VuaGFuY2VkX3AsIGF2cl9tZWdhX3ApOiBOZXcgdmFyaWFibGVzLgoJKG1jdV90eXBlcywgYXZyX292ZXJyaWRlX29wdGlvbnMpOiBIYW5kbGUgYWxsIGtub3duIE1DVSB0eXBlcy4KCUFsc28gaGFuZGxlIGF2cjEgKG9ubHkgcHJlcHJvY2VzcywgYXNzZW1ibGUgYW5kIGxpbmspLgoJKHByaW50X29wZXJhbmQpOiBVc2luZyBvZiBgJUsnIGluIG91dHB1dCB0ZW1wbGF0ZSByZW1vdmVkLgoJKG91dF9tb3ZxaV9yX21yKTogT3B0aW1pemVkLgoJKG91dF9tb3ZoaV9yX21yKTogTGlrZXdpc2UuCgkob3V0cHV0X21vdnFpKTogTmV3IGZ1bmN0aW9uLgoJKG91dHB1dF9tb3ZoaSk6IExpa2V3aXNlLgoJKG91dF9tb3ZzaV9yX21yKTogT3B0aW1pemVkLgoJKG91dHB1dF9tb3ZzaXNmKTogQ29tcHV0ZSBpbnNuIGxlbmd0aCBmb3IgYGFkanVzdF9pbnNuX2xlbmd0aCcKCShvdXRfbW92cWlfbXJfcik6IE9wdGltaXplZC4KCShvdXRfbW92aGlfbXJfcik6IE9wdGltaXplZC4KCShhZGp1c3RfaW5zbl9sZW5ndGgpOiBVc2Ugb3V0cHV0X21vdnNpc2YsIG91dHB1dF9tb3ZxaSwKCW91dHB1dF9tb3ZoaSBmb3IgaW5zbiBsZW5ndGggYWRqdXN0aW5nLgoJKHJlZ191bnVzZWRfYWZ0ZXIpOiBVc2UgZGVhZF9vcl9zZXRfcC4KCShwcmVmZXJyZWRfcmVsb2FkX2NsYXNzKTogTm93IGhhdmVuJ3QgYW55IHJlc3RyaWN0aW9uLgoJKHJlZ193YXNfMCk6IE5ldyBmdW5jdGlvbi4KCShpb19hZGRyZXNzX3ApOiBMaWtld2lzZS4KCShjb25zdF9pbnRfcG93Ml9wKTogTGlrZXdpc2UuCgkob3V0cHV0X3JlbG9hZF9pbmhpKTogTGlrZXdpc2UuCgkob3V0cHV0X3JlbG9hZF9pbnNpc2YpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9hdnIvYXZyLmggKE1VTFRJTElCX0RFRkFVTFRTKTogRGVmaW5lLgoJKExJQl9TUEVDKTogVXNlIC1sYyBmb3IgYWxsIHN1cHBvcnRlZCBkZXZpY2VzLgoJKExJQkdDQ19TUEVDKTogVXNlIC1sZ2NjIGZvciBhbGwgc3VwcG9ydGVkIGRldmljZXMuCgkoQVZSX01FR0EpOiBEZWZpbmUgYXMgYXZyX21lZ2FfcC4KCShBVlJfRU5IQU5DRUQpOiBOZXcsIGRlZmluZSBhcyBhdnJfZW5oYW5jZWRfcC4KCShUQVJHRVRfU1dJVENIRVMpOiBSZW1vdmUgLW1lbmhhbmNlZCwgbm93IGhhbmRsZWQgYnkgLW1tY3U9Li4uCgkoQ1BQX1NQRUMsIExJTktfU1BFQyk6IEhhbmRsZSBhbGwga25vd24gTUNVIHR5cGVzLgoJKENSVF9CSU5VVElMU19TUEVDUyk6IEhhbmRsZSBhbGwga25vd24gTUNVIHR5cGVzLgoJUmVuYW1lIGdjcnQxLSoubyB0byBtYWtlIGZpbGUgbmFtZXMgdW5pcXVlIG9uIDguMyBmaWxlc3lzdGVtcy4KCShFWFRSQV9TUEVDUyk6IEFkZCBDUFBfQVZSWzEtNV1fU1BFQy4KCShBU01fU1BFQyk6IFBhc3MgLW1tY3U9Li4uIHRvIHRoZSBhc3NlbWJsZXIuCglDaGFuZ2UgYWxsIC1EQVZSXyogdG8gLURfX0FWUl8qX18uCgkoSU5JVF9UQVJHRVRfT1BUQUJTKSwgY29uZmlnL2F2ci9saWJnY2MuUzoKCVJlbmFtZSBsaWJyYXJ5IGZ1bmN0aW9ucyB0byBzdGFydCB3aXRoIHR3byB1bmRlcnNjb3Jlcy4KCShBU01fT1VUUFVUX0NPTU1PTik6IE91dHB1dHMgYC5jb21tIFZBUixWQVItU0laRSwxJyB0byBhdm9pZAoJYWxpZ25tZW50LgoJKEFTTV9XRUFLRU5fTEFCRUwpOiBEZWNsYXJlZCBmb3IgX19hdHRyaWJ1dGVfXygod2VhaykpLgoJKFNVUFBPUlRTX1dFQUspOiBMaWtld2lzZS4KCShMRElfUkVHX1JFR05PKTogTmV3LiBSZWdpc3RlciByMzEgd2lsbCBiZSB1c2VkIGFzIHRlbXBvcmFyeQoJcmVnaXN0ZXIgZm9yIGxvYWRpbmcgY29uc3RhbnRzIHRvIHIwLXIxNC4KCgkqIGNvbmZpZy9hdnIvYXZyLm1kOiBSZXBsYWNlIGFsbCBUQVJHRVRfRU5IQU5DRUQgd2l0aAoJQVZSX0VOSEFOQ0VELgoJKCptb3Zfcl9zcCk6IFJlbW92ZWQuIEhhbmRsZWQgYnkgb3V0cHV0X21vdmhpLgoJKCptb3Zfc3Bfcik6IExpa2V3aXNlLgoJKCptb3Zfc3Bfcl9ub19pbnRlcnJ1cHRzKTogTGlrZXdpc2UKCSgqbW92X3NwX3JfdGlueSk6IExpa2V3aXNlLgoJKCptb3ZxaSk6IFVzZSBvdXRwdXRfbW92cWkuCgkoKnJlbG9hZF9pbnFpKTogTmV3LgoJKCptb3ZoaSk6IFVzZSBvdXRwdXRfbW92aGkuCgkoKnJlbG9hZF9pbmhpKTogTmV3LgoJKCpuZWdzaTIpOiBPcHRpbWl6ZWQuCgkoKm5lZ3NmMik6IExpa2V3aXNlLgoJQWRkZWQgcGVlcGhvbGVzIChkZWZpbmVfcGVlcGhvbGUyKSBmb3IgbG9hZGluZyBjb25zdGFudHMgdG8gcjAtcjE0CglhbmQgZm9yIHVzaW5nIGBjcHNlJyBjb21tYW5kLgoKCSogY29uZmlnL2F2ci9saWJnY2MuUzogUmVuYW1lIGxpYnJhcnkgZnVuY3Rpb25zIHRvIHN0YXJ0IHdpdGggdHdvCgl1bmRlcnNjb3Jlcy4KCUFkZCBzdXBwb3J0IGZvciBlbmhhbmNlZCBjb3JlLgoJKF9tb3FoaTMpOiBGaXggdHlwbywgbm93IF9tb2RxaTMuCgkoX19kaXZzaV9yYXcpOiBVc2UgX196ZXJvX3JlZ19fIGFzIGxvb3AgY291bnRlciwgc21hbGxlciBieSAxIHdvcmQuCgkoX19wcm9sb2d1ZV9zYXZlc19fKTogUmVtb3ZlIHRlc3QgZm9yIHN0YWNrIGFkanVzdCBieSAwLgoJKF9fdGFibGVqdW1wX18pOiBOZXcuCgoJKiBjb25maWcvYXZyL3QtYXZyOiBCdWlsZCBsaWJnY2MyIHdpdGggLW1jYWxsLXByb2xvZ3Vlcy4KCUFkZCBtdWx0aWxpYiBzdXBwb3J0LgoKVHVlIEF1ZyAyOSAxNToxNzo1NCBFRFQgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogbG9vcC5jIChwcmVzY2FuX2xvb3ApOiBEb24ndCBjaGVjayB1bmtub3duX2FkZHJlc3NfYWx0ZXJlZAoJd2hlbiBkZWNpZGluZyBpZiBpbnNlcnRfbG9vcF9tZW0gaXMgc2FmZS4gIEFkZCBCTEttb2RlIE1FTXMKCXRvIGxvb3Bfc3RvcmVfbWVtcyBhcyBuZWNlc3NhcnkuCgkobG9vcF9pbnZhcmlhbnRfcCk6IERvbid0IGNoZWNrIHVua25vd25fYWRkcmVzc19hbHRlcmVkCglvciB1bmtub3duX2NvbnN0YW50X2FkZHJlc3NfYWx0ZXJlZC4KCjIwMDAtMDgtMjkgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogdmF4Lm1kIChzbHR1LCBzZ2V1KTogRGVsZXRlIHNsdHUgYW5kIHNnZXUgaW5zbiBwYXR0ZXJucy4KCjIwMDAtMDgtMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGVycm9yLmMgKHByaW50X2ZpbGVfYW5kX2xpbmUpOiBJZiBsaW5lIGlzICh1bnNpZ25lZCBpbnQpLTEsCglwcmludCBqdXN0IHRoZSBmaWxlbmFtZS4KCSogY3BwbGV4LmMgKF9jcHBfcnVuX2RpcmVjdGl2ZSk6IEFkZCBhZGRpdGlvbmFsIGFyZ3VtZW50LCB0aGUKCW5hbWUgdG8gZ2l2ZSB0aGUgc3ludGhldGljIGJ1ZmZlci4gIFRoaXMgZGVmYXVsdHMgdG8KCXRyYW5zbGF0ZWQgIjxjb21tYW5kIGxpbmU+Ii4KCSogY3BwbGliLmMgKGNwcF9kZWZpbmUsIGNwcF91bmRlZiwgY3BwX2Fzc2VydCwgY3BwX3VuYXNzZXJ0KToKCUFkanVzdCB0byBtYXRjaC4KCShfY3BwX2RlZmluZV9idWlsdGluKTogTmV3IGZ1bmN0aW9uLgoJKiBjcHBpbml0LmMgKGluaXRpYWxpemVfYnVpbHRpbnMpOiBVc2UgX2NwcF9kZWZpbmVfYnVpbHRpbi4KCSogY3BwaGFzaC5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCgkqIHRyYWRjcHAuYyAobWFpbik6IFByb2Nlc3MgLUQgYW5kIC1VIHNpbXVsdGFuZW91c2x5LCBpbiB0aGUKCW9yZGVyIHRoZXkgYXBwZWFyZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KCjIwMDAtMDgtMjkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtZGVjbC5jIChkZWZpbmVfbGFiZWwpOiBDYWxsIHdhcm5pbmdfd2l0aF9maWxlX2FuZF9saW5lIGFuZAoJZXJyb3Jfd2l0aF9maWxlX2FuZF9saW5lIGluc3RlYWQgb2YgcGxhaW4gd2FybmluZyBvciBlcnJvci4KCgkqIGMtcGFyc2UuaW4gKGxhYmVsKTogVXNlIHNhdmVfZmlsZW5hbWUvc2F2ZV9saW5lbm8gdG8gZW5zdXJlCgljb3JyZWN0IHZhbHVlcyBmb3IgY2FsbHMgdG8gZGVmaW5lX2xhYmVsLgoKMjAwMC0wOC0yOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogRG9uJ3QgY3JlYXRlIGEgVkFSX0RFQ0wganVzdCB0byB0aHJvdyBpdAoJYXdheS4KCSogZXhwci5jIChleHBhbmRfZXhwciwgY2FzZSBUQVJHRVRfRVhQUik6IERvbid0IGNhbGwKCW1hcmtfYWRkcmVzc2FibGUuCgkqIHRyZWUuaCAoZ2V0X2ZpbGVfZnVuY3Rpb25fbmFtZSk6IFJlbW92ZSB0d28gZHVwbGljYXRlCglkZWNsYXJhdGlvbnMuCgoyMDAwLTA4LTI4ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIHRyZWUuYzogRml4IGZvcm1hdHRpbmcuCgoJKiB4Y29mZm91dC5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMDgtMjggIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKGF0dHJfY2hlY2tzdW0pOiBBbHNvIGlnbm9yZSBEV19BVF9wcm9kdWNlci4KCjIwMDAtMDgtMjggIERhbmllbCBCZXJsaW4gIDxkYmVybGluQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2ZpbmlzaCk6IERvbid0IGJvdGhlciBjYWxsaW5nCglicmVha19vdXRfaW5jbHVkZXMgaWYgaXQgd29uJ3QgZG8gYW55dGhpbmcuCgoyMDAwLTA4LTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcmVsb2FkLmMgKHB1c2hfc2Vjb25kYXJ5X3JlbG9hZCk6IFJldmVydCAyMDAwLTA4LTE2IGNoYW5nZS4KCShmaW5kX3JlbG9hZHMpOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChyZWxvYWRfaW5xaSk6IFJldmVydCAyMDAwLTA4LTExIGNoYW5nZS4KCShyZWxvYWRfaW5oaSk6IExpa2V3aXNlLgoKMjAwMC0wOC0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYzogRG9uJ3QgZXJyb3Igb24gRVhUUkFfQ09OU1RSQUlOVCBkZWZpbmVkLgoJKGNhbGxfaW5zbl9vcGVyYW5kKTogRG9uJ3QgZXhwZWN0IGEgc3Vycm91bmRpbmcgbWVtLgoJKGNvbnN0YW50X2NhbGxfYWRkcmVzc19vcGVyYW5kKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoUFJFRElDQVRFX0NPREVTKTogVXBkYXRlLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChjYWxsIHBhdHRlcm5zKTogTW92ZSB0aGUgbWF0Y2hfb3BlcmFuZAoJZm9yIHRoZSBjYWxsIGRlc3RpbmF0aW9uIGluc2lkZSB0aGUgbWVtLgoKMjAwMC0wOC0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGxvY2FsLWFsbG9jLmMgKHJlcXVpcmVzX2lub3V0KTogRG9uJ3QgdXNlIHJlc2VydmVkIHJhbmdlIGZvcgoJRVhUUkFfQ09OU1RSQUlOVFM7IHVzZSBhbnl0aGluZyBub3QgbWF0Y2hlZCBieSBSRUdfQ0xBU1NfRlJPTV9MRVRURVIuCgkqIHJlY29nLmMgKGFzbV9vcGVyYW5kX29rKTogTGlrZXdpc2UuCgkocHJlcHJvY2Vzc19jb25zdHJhaW50cywgY29uc3RyYWluX29wZXJhbmRzKTogTGlrZXdpc2UuCgkqIHJlZ2NsYXNzLmMgKHJlY29yZF9yZWdfY2xhc3Nlcyk6IExpa2V3aXNlLgoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzKTogTGlrZXdpc2UuCgkqIHJlbG9hZDEuYyAobWF5YmVfZml4X3N0YWNrX2FzbXMpOiBMaWtld2lzZS4KCShyZWxvYWRfY3NlX3NpbXBsaWZ5X29wZXJhbmRzKTogTGlrZXdpc2UuCgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IExpa2V3aXNlLgoKCSogbWQudGV4aTogVXBkYXRlIGNvbnN0cmFpbnRzIGRvY3VtZW50YXRpb24uCgkqIHRtLnRleGkgKEVYVFJBX0NPTlNUUkFJTlQpOiBVcGRhdGUuCgoyMDAwLTA4LTI4ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKERJRV9MQUJFTF9QUkVGSVgpOiBSZW1vdmUgbGVhZGluZyAiX18iLgoJKHByaW50X2RpZSk6IElmIHdlIGRvbid0IGtub3cgdGhlIG9mZnNldCBvZiB0aGUKCXRhcmdldCBkaWUsIHRyeSB0aGUgc3ltYm9sLiAgQWRkIGEgdHJhaWxpbmcgbmV3bGluZS4KCShyZXZlcnNlX2FsbF9kaWVzKTogTmV3IGZuLgoJKGR3YXJmMm91dF9maW5pc2gpOiBDYWxsIGl0LgoJKGJyZWFrX291dF9pbmNsdWRlcyk6IFJlb3JnYW5pemUgZm9yIGNsYXJpdHkuCgkoYWRkX3NpYmxpbmdfYXR0cmlidXRlcyk6IERvbid0IGNhbGwgcmV2ZXJzZV9kaWVfbGlzdHMuCgkob3V0cHV0X2NvbXBfdW5pdCk6IFJlbmFtZSBmcm9tIG91dHB1dF9jb21kYXRfY29tcF91bml0LiAgVXNlIGZvcgoJcHJpbWFyeSBDVSwgdG9vLgoJKiBmbGFncy5oOiBBZGQgZmxhZ19lbGltaW5hdGVfZHdhcmYyX2R1cHMuCgkqIHRvcGxldi5jIChmX29wdGlvbnMpOiBTdXBwb3J0IC1mZWxpbWluYXRlLWR3YXJmMi1kdXBzLgoKMjAwMC0wOC0yOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBkd2FyZjIuaCAoRFdfVEFHX0dOVV9CSU5DTCwgRFdfVEFHX0dOVV9FSU5DTCk6IE5ldyB0YWdzLgoJKiBkd2FyZjJvdXQuYzogI2luY2x1ZGUgIm1kNS5oIi4KCShESUVfTEFCRUxfUFJFRklYKTogTmV3IG1hY3JvLgoJKGR3X3ZhbF9zdHJ1Y3QpOiBBZGQgJ2V4dGVybmFsJyBmbGFnIHRvIHZhbF9kaWVfcmVmLgoJKGFkZF9BVF9kaWVfcmVmLCBBVF9yZWYpOiBBZGp1c3QuCgkoQVRfcmVmX2V4dGVybmFsLCBzZXRfQVRfcmVmX2V4dGVybmFsKTogTmV3IGZucy4KCShidWlsZF9hYmJyZXZfdGFibGUpOiBDYWxsIHNldF9BVF9yZWZfZXh0ZXJuYWwuCgkodmFsdWVfZm9ybWF0KTogQ2FsbCBBVF9yZWZfZXh0ZXJuYWwuCgkoZGllX3N0cnVjdCk6IEFkZCBkaWVfc3ltYm9sIGZpZWxkLgoJKG5ld19kaWUpOiBDbGVhciBpdC4KCShkd2FyZl90YWdfbmFtZSk6IEhhbmRsZSBCSU5DTC9FSU5DTC4KCShkd2FyZjJvdXRfc3RhcnRfc291cmNlX2ZpbGUpOiBBZGQgQklOQ0wgRElFLgoJKGR3YXJmMm91dF9lbmRfc291cmNlX2ZpbGUpOiBBZGQgRUlOQ0wgRElFLgoJKHB1c2hfbmV3X2NvbXBpbGVfdW5pdCwgcG9wX2NvbXBpbGVfdW5pdCwgY2xlYXJfZGllX3NpemVzKTogTmV3IGZucy4KCShsb2NfY2hlY2tzdW0sIGF0dHJfY2hlY2tzdW0sIGRpZV9jaGVja3N1bSk6IE5ldyBmbnMuCgkoaXNfdHlwZV9kaWUsIGlzX2NvbWRhdF9kaWUsIGlzX3N5bWJvbF9kaWUpOiBOZXcgZm5zLgoJKGNvbXB1dGVfc2VjdGlvbl9wcmVmaXgsIGFzc2lnbl9zeW1ib2xfbmFtZXMpOiBOZXcgZm5zLgoJKGdlbl9pbnRlcm5hbF9zeW0sIG91dHB1dF9kaWVfc3ltYm9sLCBvdXRwdXRfc3ltYm9saWNfcmVmKTogTmV3IGZucy4KCShvdXRwdXRfZGllKTogQ2FsbCBvdXRwdXRfZGllX3N5bWJvbCBhbmQgQVRfcmVmX2V4dGVybmFsLgoJKG91dHB1dF9jb21kYXRfY29tcF91bml0KTogTmV3IGZuLCBzcGxpdCBvdXQgZnJvbS4uLgoJKGR3YXJmMm91dF9maW5pc2gpOiAuLi5oZXJlLiAgQWxzbyBjYWxsIGFkZF9zaWJsaW5nX2F0dHJpYnV0ZXMgZm9yCglzZWNvbmRhcnkgQ1VzLgoJKG91dHB1dF9wdWJuYW1lcywgb3V0cHV0X2FyYW5nZXMpOiBBYm9ydCBpZiB3ZSBzZWUgZW50cmllcyBmcm9tCglzZWNvbmRhcnkgQ1VzLgoJKiB0b3BsZXYuaDogRGVjbGFyZSBmaWxlX25hbWVfbm9uZGlyZWN0b3J5LgoJKiB0b3BsZXYuYyAoZmlsZV9uYW1lX25vbmRpcmVjdG9yeSk6IE5ldyBmbiwgbW92ZWQgZnJvbSBDKysgZnJvbnRlbmQuCgkocmVzdF9vZl90eXBlX2NvbXBpbGF0aW9uKTogQ2FsbCBkd2FyZjJvdXRfZGVjbCBpZiBhdCB0b3BsZXZlbC4KCShkZWJ1Z19zdGFydF9zb3VyY2VfZmlsZSk6IENhbGwgZHdhcmYyb3V0X3N0YXJ0X3NvdXJjZV9maWxlCglyZWdhcmRsZXNzIG9mIGRlYnVnIHZlcmJvc2l0eS4KCShkZWJ1Z19lbmRfc291cmNlX2ZpbGUpOiBTaW1pbGFybHkuCgkqIHRyZWUuaDogRGVjbGFyZSBjbGVhbl9zeW1ib2xfbmFtZS4KCSogdHJlZS5jIChjbGVhbl9zeW1ib2xfbmFtZSk6IFNwbGl0IG91dCBmcm9tLi4uCgkoZ2V0X2ZpbGVfZnVuY3Rpb25fbmFtZV9sb25nKTogLi4uaGVyZS4KCgkqIGR3YXJmMm91dC5jIChuZXdfbG9jX2Rlc2NyKTogVXNlIGNhbGxvYy4KCShzcGxpY2VfY2hpbGRfZGllKTogUmVtb3ZlIHRoZSBkaWUgZnJvbSB0aGUgcmlnaHQgcGFyZW50LgoJKGdlbl9zdHJ1Y3Rfb3JfdW5pb25fZGllKTogRG9uJ3QgYWRkIEFUX25hbWUgdG8gYSBzcGVjaWZpY2F0aW9uIERJRS4KCk1vbiBBdWcgMjggMTk6MDI6MTMgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRvcGxldi5jIChkZWNvZGVfZ19vcHRpb24pOiBEb24ndCBnaXZlIHdhcm5pbmcgZm9yIHVua25vd24gLWcKCW9wdGlvbjsgcmV0dXJuIDAgaW5zdGVhZC4KCShtYWluKTogSWYgLWcgb3B0aW9uIGlzIG5vdCByZWNvZ25pemVkIGJ5IGZyb250IGVuZCBvcgoJbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgY29kZSwgZ2l2ZSB3YXJuaW5nLgoKMjAwMC0wOC0yOCAgR3JlZyBNY0dhcnkgIDxncmVnQG1jZ2FyeS5vcmc+CgoJKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIChpeDg2X2V4cGFuZF9jb21wYXJlKTogQWRkIGV4dGVybiBkZWNsLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX2NvbXBhcmUpOiBSZW1vdmUgYHN0YXRpYycuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHRyYXAsIGNvbmRpdGlvbmFsX3RyYXApOiBOZXcgaW5zbiAmIGV4cGFuZC4KCjIwMDAtMDgtMjcgIEdyZWcgTWNHYXJ5ICA8Z3JlZ0BtY2dhcnkub3JnPgoKCSogY3BwbGV4LmMgKHBhcnNlX3N0cmluZyk6IERvbid0IGxvb2sgZm9yIGJhY2tzbGFzaAoJYmVmb3JlIGZpcnN0IGNoYXIgaW4gYG5hbWVidWYnLgoJKiBsb29wLmMgKHN0cmVuZ3RoX3JlZHVjZSk6IFNraXAgTk9URXMuCgoyMDAwLTA4LTI3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBEb24ndCBzZXQgVFJFRV9TVEFUSUMgb3IgY2xlYXIKCURFQ0xfRVhURVJOQUwgb24gYSBsb2NhbCBleHRlcm4uICBEb24ndCBzZXQgREVDTF9JR05PUkVEX1Agb3IKCVRSRUVfQVNNX1dSSVRURU4sIGVpdGhlci4KCShmaW5pc2hfZGVjbCk6IEFkanVzdC4KCjIwMDAtMDgtMjggIFBoaWxpcHAgVGhvbWFzICA8cHRob21hc0BzdXNlLmRlPgoKCSogQUJPVVQtR0NDLU5MUzogUmVtb3ZlIGdldHRleHQgcGF0Y2hlcyBmcm9tIFBhdWwgRWdnZXJ0IGFzCgl0aGV5IGhhdmUgYmVlbiBpbmNvcnBvcmF0ZWQgaW50byB0aGUgZ2V0dGV4dCBDVlMuIENoYW5nZSB0aGUgdGV4dCB0bwoJcmVmbGVjdCB0aGUgY3VycmVudCBzdGF0dXMgb2YgTkxTLiBBZGQgaW5zdHJ1Y3Rpb25zIGZvciBhY2Nlc3NpbmcKCXRoZSBnZXR0ZXh0IENWUyBhbmQgYWRkIHRoZSBwYXRjaCBmcm9tIE1hcnRpbiB2LiBMb2V3aXMuCgoyMDAwLTA4LTI3ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAobW92ZGlfaW50ZXJuYWw2NCs1KTogTWFrZSBTVUJSRUctc2FmZQoJYnkgdXNpbmcgZ2VuX2xvd3BhcnRfY29tbW9uLgoJKG1vdmRpX2ludGVybmFsNjQrNik6IExpa2V3aXNlLgoKMjAwMC0wOC0yNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiB0bS50ZXhpIChGSU5JX1NFQ1RJT05fQVNNX09QLCBDUlRfQ0FMTF9TVEFUSUNfRlVOQ1RJT04pOgoJRG9jdW1lbnQuCgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKERCWF9SRUdJU1RFUl9OVU1CRVIpOiBSZW1hcCByZWdpc3RlcgoJbnVtYmVycyB0byB0aGUgcmFuZ2VzIHVzZWQgYnkgR0RCLgoKMjAwMC0wOC0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24pOiBBZGQgbl92YXJhcmdzLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRfY29tcHV0ZV9mcmFtZV9zaXplKTogVXNlIGl0LgoJKGlhNjRfZXhwYW5kX3Byb2xvZ3VlKTogTGlrZXdpc2UuCgkoaWE2NF9zZXR1cF9pbmNvbWluZ192YXJhcmdzKTogU2V0IGl0LiAgUHJvcGVybHkgc2tpcCB0aGUgY3VycmVudAoJYXJndW1lbnQgZm9yIHN0ZGFyZ3MuCgoyMDAwLTA4LTI1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGludGVncmF0ZS5jIChleHBhbmRfaW5saW5lX2Z1bmN0aW9uKTogUHVsbCBvdXQgdGhlIG9yaWdpbmFsIGRlY2wuCgoyMDAwLTA4LTI1ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjc2UuYyAoY3NlX2luc24pOiBEb24ndCBwYXNzIGxhYmVsIHN1YnRyYWN0aW9uIHRvIGZvcmNlX2NvbnN0X21lbS4KCgkqIGZ1bmN0aW9uLmMgKGdlbl9tZW1fYWRkcmVzc29mKTogQ2xlYXIgTUVNX0FMSUFTX1NFVCBpZiBubyBkZWNsLgoKMjAwMC0wOC0yNSAgR3JlZyBNY0dhcnkgIDxncmVnQG1jZ2FyeS5vcmc+CgoJKiBmbG93LmMgKGR1bXBfZWRnZV9pbmZvKTogVXNlIEFSUkFZX1NJWkUuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9leHBhbmRfYmxvY2tfbW92ZSk6IExpa2V3aXNlLgoKMjAwMC0wOC0yNSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uaCAoU1RSVUNUX1ZBTFVFKTogRGVmaW5lIHRvIDAsIG5vdCBOVUxMLgoKRnJpIEF1ZyAyNSAxMjo1Mjo0OSBFRFQgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogaTM4Ni5jIChpeDg2X2ZpbmRfYmFzZV90ZXJtKTogTmV3LgoJKiBpMzg2LXByb3Rvcy5oIChpeDg2X2ZpbmRfYmFzZV90ZXJtKTogUHJvdG90eXBlLgoJKiBpMzg2LmggKEZJTkRfQkFTRV9URVJNKTogRGVmaW5lLgoJKiBhbGlhcy5jIChmaW5kX2Jhc2VfdGVybSk6IFVzZSBpdC4KCSogdG0udGV4aSAoRklORF9CQVNFX1RFUk0pOiBEb2N1bWVudCBpdC4KCgkqIGFsaWFzLmMgKHRydWVfZGVwZW5kZW5jZSwgd3JpdGVfZGVwZW5kZW5jZV9wKTogVW5jaGFuZ2luZwoJbWVtb3J5IGNhbid0IGNvbmZsaWN0IHdpdGggbm9uLXVuY2hhbmdpbmcgbWVtb3J5LgoKCSogYWxpYXMuYyAobWVtcmVmc19jb25mbGljdF9wKTogQSBCTEttb2RlIHJlZmVyZW5jZQoJdG8gYSBzeW1ib2wgKG9yIENPTlNUX0lOVCBhZGRyZXNzKSBhbHdheXMgY29uZmxpY3RzCgl3aXRoIGEgcmVmZXJlbmNlIHRvIGFub3RoZXIgc3ltYm9sLgoKMjAwMC0wOC0yNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAodGltZV9jaGFyX3RhYmxlKTogRG9uJ3QgYWxsb3cgd2lkdGggYW5kIGZsYWdzIHdpdGgKCSJ6IiBmb3JtYXQuCgoyMDAwLTA4LTI1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfYnJhbmNoKTogVHJlYXQgR0UgYW5kIEdFVSB0aGUgc2FtZQoJd2F5IGFzIExUIGFuZCBMVFUgd2hlbiB0aGUgc2Vjb25kIG9wZXJhbmQgaGFzIDAgaW4gbG93IHdvcmQuCgoyMDAwLTA4LTI2ICBNaWNoYWVsIEhheWVzICA8bWhheWVzQGN5Z251cy5jb20+CgoJKiBiYXNpYy1ibG9jay5oIChzdHJ1Y3QgbG9vcCk6IFJlbmFtZSBgZXhpdHMnIGZpZWxkIHRvCglgZXhpdF9lZGdlcycuICBBZGQgYGVudHJ5X2VkZ2VzJyBhbmQgYG51bV9lbnRyaWVzJyBmaWVsZHMuCgoJKiBmbG93LmMgKGZsb3dfbG9vcF9leGl0X2VkZ2VzX2ZpbmQpOiBSZW5hbWUgZnJvbSBmbG93X2xvb3BfZXhpdHNfZmluZC4KCShmbG93X2xvb3BfZW50cnlfZWRnZXNfZmluZCk6IEFkZC4KCShmbG93X2VkZ2VfbGlzdF9wcmludCk6IFJlbmFtZSBmcm9tIGZsb3dfZXhpdHNfcHJpbnQuCgkoZmxvd19sb29wc19maW5kKTogQ2FsbCBmbG93X2xvb3BfZW50cnlfZWRnZXNfZmluZC4KCShmbG93X2xvb3BfZHVtcCk6IER1bXAgZW50cnlfZWRnZXMgbGlzdC4KCShmbG93X2xvb3BzX2ZyZWUpOiBGcmVlIGVudHJ5X2VkZ2VzLgoKMjAwMC0wOC0yNiAgTWljaGFlbCBIYXllcyAgPG1oYXllc0BjeWdudXMuY29tPgoKCSogbG9vcC5jIChsb29wX2R1bXBfYXV4LCBkZWJ1Z19sb29wKTogTmV3IGZ1bmN0aW9ucy4KCShMT09QX0JMT0NLX05VTV8xLCBMT09QX0JMT0NLX05VTSwgTE9PUF9JTlNOX1VJRCk6IE5ldyBtYWNyb3MuCgoJKiBmbG93LmMgKGZsb3dfbG9vcHNfZHVtcCk6IEFkZCBjYWxsYmFjayBwYXJhbWV0ZXIuCgkoZmxvd19sb29wX2R1bXApOiBBZGQgY2FsbGJhY2sgcGFyYW1ldGVyIGFuZCBjYWxsIGl0LiAgTW92ZQoJbG9vcCBub3RlIGRlYnVnZ2luZyBjb2RlIHRvIGxvb3BfZHVtcF9hdXguCgoJKiBiYXNpYy1ibG9jay5oIChmbG93X2xvb3BfZHVtcCk6IEFkZCBjYWxsYmFjayBwYXJhbWV0ZXIKCShmbG93X2xvb3BzX2R1bXApOiBMaWtld2lzZS4KCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogQWRkIE5VTEwgY2FsbGJhY2sgZnVuY3Rpb24gcG9pbnRlcgoJdG8gY2FsbCB0byBmbG93X2xvb3BzX2R1bXAuCgoyMDAwLTA4LTI2ICBNaWNoYWVsIEhheWVzICA8bWhheWVzQGN5Z251cy5jb20+CgoJKiBsb29wLmMgKGNvdW50X2xvb3BfcmVnc19zZXQpOiBSZXBsYWNlIHN0YXJ0IGFuZCBlbmQgYXJndW1lbnRzCgl3aXRoIGxvb3AgYXJndW1lbnQuICBBbGwgY2FsbGVycyB1ZGF0ZWQuCgoyMDAwLTA4LTI2ICBNaWNoYWVsIEhheWVzICA8bWhheWVzQGN5Z251cy5jb20+CgoJKiBsb29wLmMgKGNvbnN0YW50X2hpZ2hfYnl0ZXMpOiBEZWxldGUuCgoyMDAwLTA4LTI2ICBNaWNoYWVsIEhheWVzICA8bWhheWVzQGN5Z251cy5jb20+CgoJKiBsb29wLmMgKHByZXNjYW5fbG9vcCk6IE1vdmUgY2hlY2tzIGZvciBOT1RFX0lOU05fTE9PUF9DT05UCglhbmQgTk9URV9JTlNOX0xPT1BfVlRPUCB0by4uLgoJKGZpbmRfYW5kX3ZlcmlmeV9sb29wcykgLi4uaGVyZS4KCkZyaSBBdWcgMjUgMDQ6MjE6MTMgMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjcnRzdHVmZi5jIChDUlRfQ0FMTF9TVEFUSUNfRlVOQ1RJT04pOiBEZWZpbmUgZGVmYXVsdC4KCShmaW5pX2R1bW15LCBpbml0X2R1bW15KTogVXNlIGl0LgoKRnJpIDI1LUF1Zy0yMDAwIDA4OjAzOjI3IEJTVCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAoaXNfbWFjcm9fZGlzYWJsZWQpOiBDYWxsZXIgaGFzIGFscmVhZHkgY2hlY2tlZAoJdGhhdCB3ZSdyZSBub3QgYSBwcmVwcm9jZXNzZWQgZmlsZS4KCjIwMDAtMDgtMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoQ19BTkRfT0JKQ19PQkpTKTogUmVtb3ZlIGMtaXRlcmF0ZS5vLgoJKGMtaXRlcmF0ZS5vKTogUmVtb3ZlIHRhcmdldC4KCSogZ2NjL2MtY29tbW9uLmggKGVudW0gcmlkKTogUmVtb3ZlIFJJRF9JVEVSQVRPUi4KCSogZ2NjL2MtZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFJlbW92ZSBjYWxsIHRvIGluaXRfaXRlcmF0b3JzLgoJKGZpbmlzaF9kZWNsKTogRG9uJ3QgaGFuZGxlIGl0ZXJhdG9ycy4KCShncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKiBnY2MvYy1wYXJzZS5ncGVyZjogUmVtb3ZlIF9faXRlcmF0b3IgYW5kIF9faXRlcmF0b3JfXyBrZXl3b3Jkcy4KCSogZ2NjL2MtZ3BlcmYuaDogUmVnZW5lcmF0ZWQuCgkqIGdjYy9jLWl0ZXJhdGUuYzogUmVtb3ZlZC4KCSogZ2NjL2MtbGV4LmMgKGluaXRfbGV4KTogRG9uJ3QgaGFuZGxlIGl0ZXJhdG9ycy4KCSogZ2NjL2MtcGFyc2UuaW4gKHByaW1hcnkpOiBSZW1vdmUgcG9wX2l0ZXJhdG9yX3N0YWNrIGNhbGwuCgkoY29tcHN0bXRfcHJpbWFyeV9zdGFydCk6IFJlbW92ZSBwdXNoX2l0ZXJhdG9yX3N0YWNrIGNhbGwuCgkoc3RtdCk6IERvbid0IGFsbG93IGl0ZXJhdG9yIHN0YXRlbWVudHMuICBSZXBsYWNlIGl0ZXJhdG9yX2V4cGFuZAoJd2l0aCBleHBhbmRfZXhwcl9zdG10LgoJKGFsbF9pdGVyX3N0bXQpOiBSZW1vdmUuCgkoYWxsX2l0ZXJfc3RtdF9zaW1wbGUpOiBMaWtld2lzZS4KCShhbGxfaXRlcl9zdG10X3dpdGhfZGVjbCk6IExpa2V3aXNlLgoJKiBnY2MvYy10cmVlLmggKElURVJBVE9SX1ApOiBSZW1vdmUuCgkoSVRFUkFUT1JfQk9VTkRfUCk6IExpa2V3aXNlLgoJKGluaXRfaXRlcmF0b3JzKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKGl0ZXJhdG9yX2V4cGFuZCk6IExpa2V3aXNlLgoJKGl0ZXJhdG9yX2Zvcl9sb29wX3N0YXJ0KTogTGlrZXdpc2UuCgkoaXRlcmF0b3JfZm9yX2xvb3BfZW5kKTogTGlrZXdpc2UuCgkoaXRlcmF0b3JfZm9yX2xvb3BfcmVjb3JkKTogTGlrZXdpc2UuCgkocHVzaF9pdGVyYXRvcl9zdGFjayk6IExpa2V3aXNlLgoJKHBvcF9pdGVyYXRvcl9zdGFjayk6IExpa2V3aXNlLgoJKiBnY2MvYy10eXBlY2suYyAoZGVjbF9jb25zdGFudF92YWx1ZSk6IERvbid0IGNoZWNrIElURVJBVE9SX1AuCgkocmVhZG9ubHlfd2FybmluZyk6IExpa2V3aXNlLgoJKiBnY2MvdHJlZS5oIChJVEVSQVRPUl9CT1VORF9QKTogRG9uJ3QgbWVudGlvbiBpdC4KCjIwMDAtMDgtMjQgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGMtY29tbW9uLmMgKGRlY2xfYXR0cmlidXRlcywgY2FzZSBBX0FMSUdOKTogUmV2ZXJ0IGxhc3QgY2hhbmdlLgoJQ29weSB0eXBlIGluIGEgVFlQRV9ERUNMLCBqdXN0IGxpa2UgcHVzaGRlY2wgZG9lcy4KCjIwMDAtMDgtMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiB0b3BsZXYuYyAobWFpbik6IEVuYWJsZSBmbGFnX3Jlb3JkZXJfYmxvY2tzIGF0IC1PMi4KCjIwMDAtMDgtMjQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGdnYy1wYWdlLmMgKGFsbG9jX3BhZ2UpOiBJZiBIQVZFX01NQVBfQU5ZV0hFUkUgYW5kIHdlJ3JlCglhc2tlZCBmb3Igb25lIHBhZ2UsIGFsbG9jYXRlIEdHQ19RVUlSRV9TSVpFIG9mIHRoZW0gYW5kIHB1dAoJdGhlIGV4dHJhcyBvbiB0aGUgZnJlZSBsaXN0LgoJKHJlbGVhc2VfcGFnZXMpOiBDbGVhbiB1cC4KCShnZ2Nfc2V0X21hcmspOiBEb24ndCBhZGp1c3QgRy5hbGxvY2F0ZWQgaGVyZS4uLgoJKHN3ZWVwX3BhZ2VzKTogLi4uIGRvIGl0IGhlcmUuCgoyMDAwLTA4LTI0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBmaWxlcy5jIChyZWFkX2luY2x1ZGVfZmlsZSk6IFJlYXJyYW5nZSBpbml0aWFsaXphdGlvbnMuCgoyMDAwLTA4LTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc3RtdC5jIChleHBhbmRfYXNtX29wZXJhbmRzKTogVHJlYXQgRVhUUkFfQ09OU1RSQUlOVCBsaWtlIGcgb3IgWC4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmg6IFVwZGF0ZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChncl9yZWdpc3Rlcl9vcGVyYW5kKTogTmV3LgoJKGZyX3JlZ2lzdGVyX29wZXJhbmQsIGdyZnJfcmVnaXN0ZXJfb3BlcmFuZCk6IE5ldy4KCShncl9ub25pbW1lZGlhdGVfb3BlcmFuZCwgZ3Jmcl9ub25pbW1lZGlhdGVfb3BlcmFuZCk6IE5ldy4KCShncmZyX3JlZ19vcl84Yml0X29wZXJhbmQpOiBOZXcuCgkoZ3JfcmVnX29yXzBfb3BlcmFuZCk6IFJlbmFtZSBmcm9tIHJlZ19vcl8wX29wZXJhbmQgYW5kCgl1c2UgZ3JfcmVnaXN0ZXJfb3BlcmFuZC4KCShncl9yZWdfb3JfNWJpdF9vcGVyYW5kLCBncl9yZWdfb3JfNmJpdF9vcGVyYW5kKTogTGlrZXdpc2UuCgkoZ3JfcmVnX29yXzhiaXRfb3BlcmFuZCwgZ3JfcmVnX29yXzhiaXRfYWRqdXN0ZWRfb3BlcmFuZCk6IExpa2V3aXNlLgoJKGdyX3JlZ19vcl84Yml0X2FuZF9hZGp1c3RlZF9vcGVyYW5kKTogTGlrZXdpc2UuCgkoZ3JfcmVnX29yXzE0Yml0X29wZXJhbmQsIGdyX3JlZ19vcl8yMmJpdF9vcGVyYW5kKTogTGlrZXdpc2UuCgkoZnJfcmVnX29yX2ZwMDFfb3BlcmFuZCk6IExpa2V3aXNlLgoJKG5vdF9wb3N0aW5jX21lbW9yeV9vcGVyYW5kKTogTmV3LgoJKGlhNjRfc3BsaXRfdGltb2RlKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMuCgkocnR4X25lZWRzX2JhcnJpZXIpOiBDaGVjayBhcmd1bWVudHMgdG8gY21weGNoZy4KCShidWlsdGluX2Rlc2NyaXB0aW9uKTogUmVtb3ZlLgoJKGJkZXNjXzJhcmdzaSwgYmRlc2NfMmFyZ2RpKTogUmVtb3ZlLgoJKGlhNjRfaW5pdF9idWlsdGlucyk6IERlY2xhcmUgYWxsIGJ1aWx0aW5zIGRpcmVjdGx5LgoJKGlhNjRfZXhwYW5kX2ZldGNoX2FuZF9vcCk6IFJld3JpdGUgdG8gYmUgY2FsbGVkIGZyb20KCWlhNjRfZXhwYW5kX2J1aWx0aW4gZGlyZWN0bHkuICBVc2UgZXhwYW5kX2Jpbm9wIGFuZCBjby4KCShpYTY0X2V4cGFuZF9vcF9hbmRfZmV0Y2gpOiBMaWtld2lzZS4KCShpYTY0X2V4cGFuZF9jb21wYXJlX2FuZF9zd2FwKTogTGlrZXdpc2UuCgkoaWE2NF9leHBhbmRfYmlub3BfYnVpbHRpbik6IFJlbW92ZS4KCShpYTY0X2V4cGFuZF9sb2NrX3Rlc3RfYW5kX3NldCk6IE5ldy4KCShpYTY0X2V4cGFuZF9sb2NrX3JlbGVhc2UpOiBOZXcuCgkoaWE2NF9leHBhbmRfYnVpbHRpbik6IFVzZSB0aGVtLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKENPTlNUUkFJTlRfT0tfRk9SX1MpOiBOZXcuCgkoRVhUUkFfQ09OU1RSQUlOVCk6IFVzZSBpdC4KCShQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKCopOiBVc2UgZ3JfcmVnaXN0ZXJfb3BlcmFuZCBhbmQgY28uCgkobWYpOiBJbmRpY2F0ZSB0aGF0IHdlIHNldCBtZW1vcnkgYXMgd2VsbCBhcyB1c2UgaXQuCgkoZmV0Y2hhZGRfYWNxX3NpKTogU2hvdyBtZW1vcnkgYmVpbmcgbW9kaWZpZWQgYXMgd2VsbC4KCShmZXRjaGFkZF9hY3FfZGksIGNtcHhjaGdfYWNxX3NpLCBjbXB4Y2hnX2FjcV9kaSk6IExpa2V3aXNlLgoJKHZhbF9jb21wYXJlX2FuZF9zd2FwX3NpLCB2YWxfY29tcGFyZV9hbmRfc3dhcF9kaSk6IFJlbW92ZS4KCShsb2NrX3Rlc3RfYW5kX3NldF9zaSwgbG9ja190ZXN0X2FuZF9zZXRfZGkpOiBSZW1vdmUuCgkoZmV0Y2hfYW5kX2FkZF9zaSwgZmV0Y2hfYW5kX3N1Yl9zaSwgZmV0Y2hfYW5kX29yX3NpKTogUmVtb3ZlLgoJKGZldGNoX2FuZF9hbmRfc2ksIGZldGNoX2FuZF94b3Jfc2ksIGZldGNoX2FuZF9uYW5kX3NpKTogUmVtb3ZlLgoJKGZldGNoX2FuZF9hZGRfZGksIGZldGNoX2FuZF9zdWJfZGksIGZldGNoX2FuZF9vcl9kaSk6IFJlbW92ZS4KCShmZXRjaF9hbmRfYW5kX2RpLCBmZXRjaF9hbmRfeG9yX2RpLCBmZXRjaF9hbmRfbmFuZF9kaSk6IFJlbW92ZS4KCShhZGRfYW5kX2ZldGNoX2RpLCBzdWJfYW5kX2ZldGNoX2RpLCBvcl9hbmRfZmV0Y2hfZGkpOiBSZW1vdmUuCgkoYW5kX2FuZF9mZXRjaF9kaSwgeG9yX2FuZF9mZXRjaF9kaSwgbmFuZF9hbmRfZmV0Y2hfZGkpOiBSZW1vdmUuCgkoYWRkX2FuZF9mZXRjaF9zaSwgc3ViX2FuZF9mZXRjaF9zaSwgb3JfYW5kX2ZldGNoX3NpKTogUmVtb3ZlLgoJKGFuZF9hbmRfZmV0Y2hfc2ksIHhvcl9hbmRfZmV0Y2hfc2ksIG5hbmRfYW5kX2ZldGNoX3NpKTogUmVtb3ZlLgoJKiBjb25maWcvaWE2NC9pYTY0aW50cmluLmggKCopOiBDYXN0IHJlc3VsdCB0byB0aGUgYXBwcm9wcmlhdGUKCXJldHVybiB0eXBlLiAgUHJldHR5IHByaW50IGRlZmluaXRpb25zLgoKMjAwMC0wOC0yNCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobW92ZGkpOiBEb24ndCBjYWxsIGdlbl9tb3ZkaV9zeW1ib2xpYyBpZgoJd2UgaGF2ZSBhIFNZTUJPTF9SRUYgd2l0aCBTWU1CT0xfUkVGX0ZMQUcgc2V0LgoKMjAwMC0wOC0yNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoQVRfZmxhZywgQVRfaW50LCBBVF91bnNpZ25lZCwgQVRfc3RyaW5nLCBBVF9yZWYsCglBVF9sb2MsIEFUX2FkZHIsIEFUX2xibCk6IEFib3J0IG9uIHVuc3VpdGFibGUgaW5wdXQuCgkoZ2V0X0FUX2xvd19wYywgZ2V0X0FUX2hpX3BjLCBnZXRfQVRfc3RyaW5nLCBnZXRfQVRfZmxhZywKCWdldF9BVF91bnNpZ25lZCwgZ2V0X0FUX3JlZik6IERvbid0IGNhbGwgdGhlbSBpZiBnZXRfQVQgZmFpbHMuCgoyMDAwLTA4LTI0ICBHcmVnIE1jR2FyeSAgPGdyZWdAbWNnYXJ5Lm9yZz4KCgkqIG9wdGFicy5jIChpbml0X29wdGFicyk6IEluaXRpYWxpemUgZml4dGFiLCBmaXh0cnVuY3RhYiwgZmxvYXR0YWIsCglhbmQgZXh0ZW5kdGFiIHdpdGhpbiB0aGVpciBwcm9wZXIgYXJyYXkgYm91bmRhcmllcy4KCSogZW1pdC1ydGwuYyAoaW5pdF9lbWl0X29uY2UpOiBQYXNzIGBjb25zdF90aW55X3J0eCcgd2l0aCBib3VuZHMKCWZvciB0aGUgZW50aXJlIGFycmF5LgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX292ZXJyaWRlX29wdGlvbnMpOiBVc2UgQVJSQVlfU0laRS4KCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2xvb2t1cF94ZmxvYXRpbmdfbGliX2Z1bmMpOiBMaWtld2lzZS4KCSogY29uZmlnL2F2ci9hdnIuYyAob3JkZXJfcmVnc19mb3JfbG9jYWxfYWxsb2MpOiBMaWtld2lzZS4KCSogY29uZmlnL2ZyMzAvZnIzMC5jIChmcjMwX3ByaW50X29wZXJhbmQpOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvZGd1eC5jIChvdXRwdXRfb3B0aW9ucyk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9kZ3V4LmggKEFTTV9GSUxFX1NUQVJUKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tODhrL204OGsuYyAob3V0cHV0X29wdGlvbnMpOiBMaWtld2lzZS4KCSogY29uZmlnL204OGsvbTg4ay5oIChBU01fRklMRV9TVEFSVCk6IExpa2V3aXNlLgoJKiBjb25maWcvbWNvcmUvbWNvcmUuYyAobWNvcmVfb3V0cHV0X2lubGluZV9jb25zdF9mb3JjZWQsCglsYXlvdXRfbWNvcmVfZnJhbWUsIGhhbmRsZV9zdHJ1Y3RzX2luX3JlZ3MpOiBMaWtld2lzZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChvdXRwdXRfYmxvY2tfbW92ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucywKCXJzNjAwMF9maWxlX3N0YXJ0KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19hZGRfZ2Nfcm9vdHMpOiBMaWtld2lzZS4KCSogZml4aW5jL2ZpeGZpeGVzLmMgKEZJWF9UQUJMRV9DVCk6IExpa2V3aXNlLgoJKiBmaXhpbmMvZml4dGVzdHMuYyAoVEVTVF9UQUJMRV9DVCk6IExpa2V3aXNlLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zZXRqbXApOiBMaWtld2lzZS4KCSogZXhwci5jIChzYWZlX2Zyb21fcCk6IExpa2V3aXNlLgoJKiBmbG93LmMgKGxpZmVfYW5hbHlzaXMpOiBMaWtld2lzZS4KCSogZm9sZC1jb25zdC5jIChzaXplX2ludF90eXBlX3dpZGUpOiBMaWtld2lzZS4KCSogZ2NjLmMgKHRyYW5zbGF0ZV9vcHRpb25zLCBpbml0X3NwZWMsIHNldF9zcGVjLCBtYWluKTogTGlrZXdpc2UuCgkqIGdlbmF0dHJ0YWIuYyAobWFrZV9sZW5ndGhfYXR0cnMpOiBMaWtld2lzZS4KCSogZ2Vub3Bpbml0LmMgKGdlbl9pbnNuKTogTGlrZXdpc2UuCgkqIGdlbnJlY29nLmMgKE5VTV9LTk9XTl9QUkVEUywgTlVNX1NQRUNJQUxfTU9ERV9QUkVEUyk6IExpa2V3aXNlLgoJKiBnbG9iYWwuYyAoZ2xvYmFsX2FsbG9jKTogTGlrZXdpc2UuCgkqIGxvY2FsLWFsbG9jLmMgKGZpbmRfZnJlZV9yZWcpOiBMaWtld2lzZS4KCSogbWlwcy10ZHVtcC5jIChwcmludF9zeW1ib2wpOiBMaWtld2lzZS4KCSogbWlwcy10ZmlsZS5jIChwYXJzZV9kZWYsIHBhcnNlX2lucHV0KTogTGlrZXdpc2UuCgkqIHJlbG9hZDEuYyAoTlVNX0VMSU1JTkFCTEVfUkVHUyk6IExpa2V3aXNlLgoJKiBzdG10LmMgKGV4cGFuZF9ubF9nb3RvX3JlY2VpdmVyKTogTGlrZXdpc2UuCgkqIHN0b3ItbGF5b3V0LmMgKHNldF9zaXpldHlwZSk6IExpa2V3aXNlLgoJKiB2YXJhc20uYyAoZGVjb2RlX3JlZ19uYW1lKTogTGlrZXdpc2UuCgkqIHRvcGxldi5jIChkZWNvZGVfZl9vcHRpb24sIGRlY29kZV9XX29wdGlvbiwKCXNldF90YXJnZXRfc3dpdGNoLCBwcmludF9zd2l0Y2hfdmFsdWVzKTogTGlrZXdpc2UuCgkoTlVNX0VMRU0pOiBSZW1vdmUgbWFjcm8uCgkoZGlzcGxheV9oZWxwLCBtYWluKTogcy9OVU1fRUxFTS9BUlJBWV9TSVpFLwoKMjAwMC0wOC0yNCAgR3JlZyBNY0dhcnkgIDxncmVnQG1jZ2FyeS5vcmc+CgoJKiB0cmVlLmggKGVudW0gdHJlZV9pbmRleCk6IE5ldyBtZW1iZXIgYFRJX01BSU5fSURFTlRJRklFUicuCgkoTUFJTl9OQU1FX1AsIG1haW5faWRlbnRpZmllcl9ub2RlKTogTmV3IG1hY3Jvcy4KCSogYy1jb21tb24uYyAoY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zKTogSW5pdCBtYWluX2lkZW50aWZpZXJfbm9kZS4KCSogYy1kZWNsLmMgKHN0YXJ0X2RlY2wsIGdyb2tkZWNsYXJhdG9yLCBzdGFydF9mdW5jdGlvbiwKCXN0b3JlX3Bhcm1fZGVjbHMsIGZpbmlzaF9mdW5jdGlvbik6IFVzZSBNQUlOX05BTUVfUC4KCSogY29uZmlnL2F2ci9hdnIuYyAoZnVuY3Rpb25fcHJvbG9ndWUsIGZ1bmN0aW9uX2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2N5Z3dpbi5oIChTVUJUQVJHRVRfUFJPTE9HVUUpOiBMaWtld2lzZS4KCSogY29uZmlnL2kzODYvd2luMzIuaCAoU1VCVEFSR0VUX1BST0xPR1VFKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9wZHAxMS9wZHAxMS5jIChvdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBMaWtld2lzZS4KCjIwMDAtMDgtMjQgIEdyZWcgTWNHYXJ5ICA8Z3JlZ0BtY2dhcnkub3JnPgoKCSogY3BwZmlsZXMuYyAoYWN0dWFsX2RpcmVjdG9yeSk6IERvbid0IHdyaXRlIGJleW9uZCBgZGlyJwoJd2hlbiBpdCBjb250YWlucyAiIi4KCSogcmVhbC5jIChhc2N0b2VnKTogU3RheSB3aXRoaW4gYm91bmRzIG9mIGV0ZW5zW11bXS4KCjIwMDAtMDgtMjQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRlcGVuZGVuY2UuYyAoZGVwZW5kZW5jZV9zdHJpbmcsIGRpcmVjdGlvbl9zdHJpbmcsCglkdW1wX29uZV9ub2RlLCBkdW1wX25vZGVfZGVwZW5kZW5jZSk6IEhpZGUgdW51c2VkIGlkZW50aWZpZXJzLgoJKGdldF9sb3dfYm91bmQsIG5vcm1hbGl6ZV9jb2VmZmljaWVudHMpOiBNYXRjaCBkZWZpbml0aW9uIHRvCglzdGF0aWMgcHJvdG90eXBlLgoJKGdldF9vbmVfY29lZmZpY2llbnQpOiBJbml0aWFsaXplIHZhcmlhYmxlcyBgdmFsdWUwX2lzX2lkeCcgYW5kCglgdmFsdWUxX2lzX2lkeCcuCgkoeml2X3Rlc3QsIGdjZF90ZXN0KTogTWFyayBwYXJhbWV0ZXJzIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCSh6aXZfdGVzdCk6IERlbGV0ZSB2YXJpYWJsZSBgaWR4JywgdXNlIHBhcmFtZXRlciBgc3ViJyBpbnN0ZWFkLgoJKGRpcmVjdGlvbl9tZXJnZSk6IEF2b2lkIGF1dG9tYXRpYyBhZ2dyZWdhdGUgaW5pdGlhbGl6YXRpb24uCgkoaGF2ZV9kZXBlbmRlbmNlX3ApOiBVc2UgYHNyYycgbm90IGBkZXN0JyB0byBzZXQgYHNyY19pZHgnLgoJSW5pdGlhbGl6ZSB2YXJpYWJsZXMgYGRlc3RfaWR4JyBhbmQgYHNyY19pZHgnLgoJKGVuZF9kZXBlbmRlbmNlX2FuYWx5c2lzKTogQXZvaWQgQzg5IHN0eWxlIGZ1bmN0aW9uIGRlZmluaXRpb24uCgoyMDAwLTA4LTI0ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jICh0aW1lX2NoYXJfdGFibGUpOiBEb24ndCBhbGxvdyB3aWR0aCB3aXRoICVGLgoJKGNoZWNrX2Zvcm1hdF9pbmZvKTogRG9uJ3QgYWxsb3cgIloiIGxlbmd0aCB3aXRoIHNjYW5mLgoKMjAwMC0wOC0yNCAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZGlhZ25vc3RpYy5jIChmaW5pc2hfZGlhZ25vc3RpYyk6IERlZmluZS4KCShvdXRwdXRfZG9fcHJpbnRmKTogVXNlIHdyYXBfdGV4dCBpbnN0ZWFkIG9mIG91dHB1dF9hZGRfc3RyaW5nLgoJKGRlZmF1bHRfcHJpbnRfZXJyb3JfZnVuY3Rpb24pOiBBdm9pZCBlbWJlZGRlZCAnXG4nLgoKCSogZGlhZ25vc3RpYy5oIChmbHVzaF9kaWFnbm9zdGljX2J1ZmZlcik6IERlY2xhcmUuCgoyMDAwLTA4LTIzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGRlcGVuZGVuY2UuYzogUmVwbGFjZSBgW11bXScgd2l0aCBgW11bTUFYX1NVQlNDUklQVFNdJy4KCjIwMDAtMDgtMjMgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKEdDQ19QQVNTRVMpOiBBZGQgc3BlY3MuCgoyMDAwLTA4LTIzICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBmcmFtZS5oIChJQTY0X1VOV19FSEFORExFUiwgSUE2NF9VTldfVUhBTkRMRVIpOiBOZXcuCgkqIGNvbmZpZy9pYTY0L2ZyYW1lLWlhNjQuYyAoX19nZXRfcGVyc29uYWxpdHkpOiBSZXR1cm4gemVybyBpZiBuZWl0aGVyCglFSEFORExFUiBub3IgVUhBTkRMRVIgYml0IGlzIHNldC4KCShfX2dldF9leGNlcHRfdGFibGUpOiBMaWtld2lzZS4KCjIwMDAtMDgtMjMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJtL2xpYjFmdW5jcy5hc206IFJlcGxhY2UgdXBwZXIgY2FzZSBjb25kaXRpb24gY29kZXMKCXdpdGggbG93ZXIgY2FzZSB2ZXJzaW9ucy4KCgkqIGNvbmZpZy9hcm0vYXJtLmggKFNUUlVDVF9WQUxVRSk6IERlZmluZS4KCShTVFJVQ1RfVkFMVUVfUkVHTlVNKTogRGVsZXRlLgoKMjAwMC0wOC0yMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwaGFzaC5oIChJTl9JKTogTmV3IGZsYWcgZm9yIGRpcmVjdGl2ZSB0YWJsZS4KCSogY3BwbGliLmMgKERJUkVDVElWRV9UQUJMRSk6IE1hcmsgI2RlZmluZSwgI3VuZGVmLCAjaWRlbnQsIGFuZAoJI3ByYWdtYSB3aXRoIElOX0kuCgkoX2NwcF9jaGVja19kaXJlY3RpdmUpOiBJZiAtZnByZXByb2Nlc3NlZCwgZXhlY3V0ZSBkaXJlY3RpdmVzCgltYXJrZWQgd2l0aCBJTl9JLiAgSXNzdWUgbm8gd2FybmluZ3MgaW4gdGhpcyBjYXNlLgoJKiBjcHBsZXguYyAoX2NwcF9nZXRfdG9rZW4pOiBFeHBhbmQgbm8gbWFjcm9zIGlmIC1mcHJlcHJvY2Vzc2VkLgoKMjAwMC0wOC0yMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAocHJpbnRfY2hhcl90YWJsZSk6IEFsbG93ICdJJyBmbGFnIHdpdGggJWQsICVpIGFuZAoJJXUuCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBTdXBwb3J0IHByaW50ZiAnSScgZmxhZzsgd2FybiBhYm91dCBpdCB3aXRoCgktcGVkYW50aWMuCgoyMDAwLTA4LTIzICBSaWNoYXJkIEVhcm5zaGF3ICAocmVhcm5zaGFAYXJtLmNvbSkKCgkqIGFybS5jIChhcm1fZXhwYW5kX3Byb2xvZ3VlKTogRW5zdXJlIHRoYXQgdGhlIHN0YWNrLWFkanVzdG1lbnQKCWJhcnJpZXIgY2FuJ3QgYmUgaWdub3JlZCBieSB0aGUgYWxpYXMgYW5hbHlzaXMgY29kZS4KCjIwMDAtMDgtMTIgIEVsaSBaYXJldHNraWkgIDxlbGl6QGlzLmVsdGEuY28uaWw+CgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmIChzeXN2Njhfc3RyaW5nKTogRml4IHRoZSBTZWQgc2NyaXB0IHNvIGl0Cgl3b3JrcyBpbnNpZGUgZml4aW5jbC4KCldlZCBBdWcgMjMgMDQ6NTU6NDggMjAwMCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcnR4KTogRG9uJ3QgcGFzcyBWT0lEbW9kZSB0bwoJc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24oKSB1bmxlc3MgYm90aCBvcGVyYW5kcyBhcmUgb2YKCVZPSURtb2RlLgoJKiBjc2UuYyAoZm9sZF9ydHgpOiBMaWtld2lzZS4KClR1ZSBBdWcgMjIgMjM6NTM6MjcgRURUIDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIHJ0bGFuYWwuYyAocnR4X3Vuc3RhYmxlX3ApOiBUaGUgcGljIHJlZ2lzdGVyIGlzIHN0YWJsZQoJKHdpdGhpbiBvbmUgZnVuY3Rpb24pIGFuZCB0aGUgYWN0dWFsIHJ0eCBzaG91bGQgYmUgdXNlZAoJd2hlbiBjaGVja2luZyB0aGUgcmVnaXN0ZXJzLgoJKHJ0eF9hZGRyX2Nhbl90cmFwX3ApOiBQaWMgbWVtb3J5IGFkZHJlc3NlcyBjYW4ndCB0cmFwLgoKCSogYWxpYXMuYyAodHJ1ZV9kZXBlbmRlbmNlLCB3cml0ZV9kZXBlbmRlbmNlX3ApOiBGaXgKCWJ1ZyBpbiBwcmV2aW91cyBwYXRjaC4KCgkqIGkzODYuYyAoaXg4Nl9HT1RfYWxpYXNfc2V0KTogTmV3LgoJKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBVc2UgaXQuCgoJKiBydGxhbmFsLmMgKHJ0eF91bnN0YWJsZV9wKTogQW4gdW5jaGFuZ2luZyBNRU0gaXMKCW9ubHkgc3RhYmxlIGlmIGl0cyBhZGRyZXNzIGlzIHN0YWJsZS4KCShydHhfdmFyaWVzX3ApOiBBbiB1bmNoYW5naW5nIE1FTSBjYW4ndCB2YXJ5IGlmCglpdHMgYWRkcmVzcyBkb2Vzbid0IHZhcnkuCgoyMDAwLTA4LTIyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjLXBhcnNlLmluICh1bm9wICspOiBSZXN0cmljdCAtV3RyYWRpdGlvbmFsIHdhcm5pbmdzIHRvIHVzZXIgY29kZS4KCjIwMDAtMDgtMjIgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogdmF4LmggKEFTTV9TUEVDKTogUGFzcyBgLUonIHRvIGFzc2VtYmxlci4KCSogeC12YXgtZ2NjOiBOZXcgZmlsZSBmb3IgYm9vdHN0cmFwcGluZyB3aXRoIGdjYy4KCSogeC12YXg6IFVzZSBYX0NGTEFHUyByYXRoZXIgdGhhbiBYX0NQUEZMQUdTIHRvIHBhc3MgYC1KJy4KCSogY29uZmlndXJlLmluOiBVc2UgeC12YXgtZ2NjIHdpdGggZ2NjLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgpUdWUgQXVnIDIyIDIxOjIxOjA1IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogUmVidWlsZCBsYWJlbCBub3RlcyBhZnRlcgoJcG9zdC1yZWxvYWQgc3BsaXR0aW5nIHBhc3MgaWYgbmV3IGxhYmVscyBoYXZlIGJlZW4gY3JlYXRlZC4KCjIwMDAtMDgtMjIgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRpYWdub3N0aWMuaCAob3V0cHV0X2J1ZmZlcl9zdGF0ZSk6IE5ldyBtYWNyby4KCSogZGlhZ25vc3RpYy5jIChkaWFnbm9zdGljX2Zvcl9kZWNsLCBzb3JyeSwKCWRlZmF1bHRfcHJpbnRfZXJyb3JfZnVuY3Rpb24sIG91dHB1dF9kb192ZXJiYXRpbSwKCXJlcG9ydF9kaWFnbm9zdGljLCByZXBvcnRfcHJvYmxlbWF0aWNfbW9kdWxlKTogVXNlIGl0LgoJKHdyYXBfdGV4dCk6IFR3ZWFrLgoJKG91dHB1dF9mb3JtYXQpOiBVc2Ugd3JhcF90ZXh0IGluc3RlYWQgb2YgbWF5YmVfd3JhcF90ZXh0LgoKMjAwMC0wOC0yMiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vbGliMWZ1bmNzLmFzbSAoQVJNX0RJVl9NT0RfQk9EWSk6IE5ldyBtYWNyby4KCUNvbW1vbiBjb2RlIGZvciBBUk0gZGl2aWRlIGFuZCBtb2R1bHVzIGZ1bmN0aW9ucy4KCShUSFVNQl9ESVZfTU9EX0JPRFkpOiBOZXcgbWFjcm8uIFRodW1iIGVxdWl2YWxlbnQgb2YKCUFSTV9ESVZfTU9EX0JPRFkuCgkoRlVOQ19FTkQpOiBOZXcgbWFjcm86IENvbW1vbiBjb2RlIGF0IHRoZSBlbmQgb2YgdGhlIGRpdmlzaW9uIGFuZAoJbW9kdWxvIGZ1bmN0aW9ucy4KCShUSFVNQl9GVU5DVElPTl9TVEFSVCk6IE5ldyBtYWNybzogIENvbW1vbiBjb2RlIGF0IHRoZSBzdGFydCBvZgoJVGh1bWIgZnVuY3Rpb25zLgoJKF9fZGl2c2kzLCBfX3VkaXZzaTMsIF9fbW9kc2kzLCBfX3Vtb2RzaTMpOiBVc2UgbmV3IG1hY3Jvcy4KClR1ZSBBdWcgMjIgMjA6MzQ6NTIgMjAwMCAgS2F6IEtvamltYSA8a2tvamltYUByci5paWo0dS5vci5qcD4KCgkqIGNvbmZpZy9zaC9zaC5tZCAoY21wZXFkaV90IHNwbGl0dGVyKTogRml4IGEgcmV2ZXJzZSB0ZXN0aW5nLgoKCSogY29uZmlnL3NoL3NoLmMgKHByZXBhcmVfc2NjX29wZXJhbmRzKTogQXBwbHkgZm9yY2VfcmVnIHRvCglzaF9jb21wYXJlX29wMSB3aGVuIHRoZSBtb2RlIGlzIERJbW9kZSBhbmQgc2hfY29tcGFyZV9vcDEgaXNuJ3QKCWNvbnN0MF9ydHguCgoyMDAwLTA4LTIyICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2FybS9saWIxZnVuY3MuYXNtIChfX3Vtb2RzaTMpOiBCZWZvcmUgcGVyZm9ybWluZyBhbnkKCXJlc3RvcmF0aXZlIGFkZGl0aW9ucywgdGVzdCBmb3IgYm90dG9tIGJpdHMgb2YgSVAgYmVpbmcgc2V0LAoJcmF0aGVyIHRoYW4gcmVseWluZyB1cG9uIHRoZSBST1JzIG5vdCBtYXRjaGluZy4KCShfX21vZHNpMyk6IERpdHRvLgoKMjAwMC0wOC0yMiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogYWl4LmggKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUpOiBDYWxsIG5hbWVkX3NlY3Rpb24oKSBvcgoJdGV4dF9zZWN0aW9uKCkgYXMgYXBwcm9wcmlhdGUgaW5zdGVhZCBvZiBlbWl0dGluZyB0ZXh0IGNzZWN0Cglwc2V1ZG8tb3AgZGlyZWN0bHkuCgkoVEVYVF9TRUNUSU9OX0FTTV9PUCk6IE9ubHkgcmVxdWlyZSBkZWZhdWx0IDMyLWJpdCBhbGlnbm1lbnQuCgkoVU5JUVVFX1NFQ1RJT04pOiBEZWZpbmUgbWFjcm8uCgkoQVNNX09VVFBVVF9TRUNUSU9OX05BTUUpOiBEZWZpbmUgbWFjcm8uCgkqIHJzNjAwMC5jIChyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IERpc2FibGUgLWZmdW5jdGlvbi1zZWN0aW9ucwoJb24gQUlYIGlmIGRlYnVnZ2luZyBhbmQgLWZkYXRhLXNlY3Rpb25zIGFsd2F5cy4KCjIwMDAtMDgtMjIgIFN0ZXZlbiBLaW5nICA8c3hraW5nQHVzd2VzdC5uZXQ+CgoJKiBjb25maWcvZmxvYXQtaTM4Ni5oIChMREJMX0VQU0lMT04pOiBSZW1vdmUgX19jb252ZXJ0X2xvbmdfZG91YmxlCgltYWNoaW5lcnkuCgkoTERCTF9NQVgpOiBTYW1lIGhlcmUuCgoyMDAwLTA4LTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jICh0aWR5X2ZhbGx0aHJ1X2VkZ2UpOiBVcGRhdGUgYi0+ZW5kIHByb3Blcmx5LgoKMjAwMC0wOC0yMiAgU3RhbiBDb3ggIDxzY294QHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoT0JKUyk6IEFkZCBkZXBlbmRlbmNlLm8uCgkqIGRlcGVuZGVuY2UuYzogTmV3IGZpbGUuCgoyMDAwLTA4LTIyICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4sIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLmNhPgoKCSogY2FsbHMuYyAoY2hlY2tfc2liY2FsbF9hcmd1bWVudF9vdmVybGFwXzEpOiBBZGp1c3QgZm9yCglBUkdTX0dST1dfRE9XTldBUkQuCgkoY2hlY2tfc2liY2FsbF9hcmd1bWVudF9vdmVybGFwKTogTGlrZXdpc2UuCgoyMDAwLTA4LTIyICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGludm9rZS50ZXhpIChTSCBPcHRpb25zKTogRG9jdW1lbnQgLW00LW5vZnB1LAoJLW00LXNpbmdsZS1vbmx5LCAtbTQtc2luZ2xlLCAtbTQsIC1tYmlndGFibGUsIC1tZm1vdmQsCgktbWhpdGFjaGksIC1tbm9tYWNzYXZlLCAtbWlzaXplLCAtbXBhZHN0cnVjdCwgLW1zcGFjZS4KCjIwMDAtMDgtMjIgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKGNoZWNrX2Zvcm1hdF9pbmZvKTogR2l2ZSB0aGUgJ3NvbWUgbG9jYWxlcycgd2FybmluZwoJZm9yIHN0cmZ0aW1lICVFeSByYXRoZXIgdGhhbiB0aGUgdW5jb25kaXRpb25hbCAnb25seSBsYXN0IDIgZGlnaXRzCglvZiB5ZWFyJyBvbmUuCgoyMDAwLTA4LTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxpYXMuYyAoaW5pdF9hbGlhc19hbmFseXNpcyk6IERvIG5vdCByZWdpc3RlcgoJc3RydWN0X3ZhbHVlX2luY29taW5nX3J0eCBvciBzdGF0aWNfY2hhaW5fcnR4IGFzIHBvaW50aW5nCgl0byBzdGFjayBtZW1vcnkuCgpUdWUgQXVnIDIyIDAxOjQ0OjQzIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHByb3RvaXplLmMgKG11bmdlX2NvbXBpbGVfcGFyYW1zKTogRml4IHR5cG8gYW5kIGZvcm1hdHRpbmcgYnVnbGV0cy4KCjIwMDAtMDgtMjIgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRpYWdub3N0aWMuaCAocmVwb3J0X3Byb2JsZW1hdGljX21vZHVsZSk6IERlY2xhcmUuCgkqIGRpYWdub3N0aWMuYyAocmVwb3J0X3Byb2JsZW1hdGljX21vZHVsZSk6IE5ldyBmdW5jdGlvbi4KCShyZXBvcnRfZXJyb3JfZnVuY3Rpb24pOiBUd2Vhay4KClR1ZSBBdWcgMjIgMDI6MzE6MjYgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHN0bXQuYyAoZXhwYW5kX2dvdG9faW50ZXJuYWwsIGZpeHVwX2dvdG9zKTogT25seSBjaGVjawoJVFlQRV9SRVRVUk5TX1NUQUNLX0RFUFJFU1NFRCBmb3IgRlVOQ1RJT05fVFlQRS4KCjIwMDAtMDgtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmbG93LmMgKGNhbGN1bGF0ZV9nbG9iYWxfcmVnc19saXZlKTogTWFyayBmcmFtZSBwb2ludGVyIGxpdmUKCWV2ZXJ5d2hlcmUgYmVmb3JlIHJlbG9hZC4KCjIwMDAtMDgtMjEgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIHJlYWwuYyAoZXJlYWxfZnJvbV9pbnQsIGVyZWFsX2Zyb21fdWludCwgc2lnbmlmaWNhbmRfc2l6ZSk6IEhhbmRsZQoJSU5URUxfRVhURU5ERURfSUVFRV9GT1JNQVQuCgkodG9lNjQpOiBEZWxldGUgSU5URUxfRVhURU5ERURfSUVFRV9GT1JNQVQgc3VwcG9ydC4gIFVuY29uZGl0aW9uYWxseQoJY2xlYXIgbGFzdCB0d28gYnl0ZXMgb2Ygb3V0cHV0IEZQIHZhbHVlLgoKMjAwMC0wOC0yMSAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtc0BjeWdudXMuY28udWs+CgoJKiBjb25maWcvaWE2NC9pYTY0LmggKFJFRE9fU0VDVElPTl9JTkZPX1ApOiBDaGFuZ2UgZGVjbCB0byBERUNMLgoKMjAwMC0wOC0yMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiB1bnJvbGwuYyAobG9vcF9maW5kX2VxdWl2X3ZhbHVlKTogSWYgcmV0IGlzIG1vZGlmaWVkIGJldHdlZW4KCWluc24gYW5kIGxvb3Bfc3RhcnQsIHJldCBtaWdodCBub3QgYmUgZXF1aXZhbGVudCB0byByZWcuCgoyMDAwLTA4LTIxICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5jIChpbml0X2RvbGxhcl9mb3JtYXRfY2hlY2tpbmcsCgltYXliZV9yZWFkX2RvbGxhcl9udW1iZXIsIGZpbmlzaF9kb2xsYXJfZm9ybWF0X2NoZWNraW5nKTogTmV3CglmdW5jdGlvbnMuCgkoZG9sbGFyX2FyZ3VtZW50c191c2VkLCBkb2xsYXJfYXJndW1lbnRzX2NvdW50LAoJZG9sbGFyX2ZpcnN0X2FyZ19udW0sIGRvbGxhcl9tYXhfYXJnX3VzZWQsIGRvbGxhcl9mb3JtYXRfd2FybmVkKToKCU5ldyB2YXJpYWJsZXMuCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBTdXBwb3J0ICQgZm9ybWF0cyBmb3Igc2NhbmYgYW5kIHByaW50ZiB3aWR0aAoJYW5kIHByZWNpc2lvbi4gIEFsd2F5cyBpbmNyZW1lbnQgZm9ybWF0X2NoYXJzIHRvIGFkdmFuY2UgcGFzdCB0aGUKCScqJyBvZiBwcmVjaXNpb24sIG5vdCBqdXN0IHdoZW4gdGhlIGZvcm1hdCBwYXJhbWV0ZXJzIGFyZQoJYXZhaWxhYmxlIHRvIGNoZWNrLgoKMjAwMC0wOC0yMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbWlwcy5jIChibG9ja19tb3ZlX2xvb3AsIGV4cGFuZF9ibG9ja19tb3ZlLAoJZnVuY3Rpb25fYXJnX3BhcnRpYWxfbnJlZ3MsIHNhdmVfcmVzdG9yZV9pbnNucywgZnVuY3Rpb25fcHJvbG9ndWUsCgltaXBzX2V4cGFuZF9wcm9sb2d1ZSwgUkFfTUFTSyk6IEF2b2lkIHVzaW5nIHRoZSBgVScgaW50ZWdlcgoJY29uc3RhbnQgc3VmZml4LgoJKGZ1bmN0aW9uX2FyZ19hZHZhbmNlLCBmdW5jdGlvbl9hcmcpOiBNYXRjaCBhcmd1bWVudCB0byBmb3JtYXQKCXNwZWNpZmllciBgJXAnLgoKMjAwMC0wOC0yMSAgTml4ICA8bml4QGVzcGVyaS5kZW1vbi5jby51az4KCgkqIGdjYy5jIChkb19zcGVjXzEpOiBJbXBsZW1lbnQgJWogc3BlYyBmbGFnLgoJUmVtb3ZlIGRlYWQgY29tbWVudC4KCgkqIGdjYy50ZXhpIChUaGUgQ29uZmlndXJhdGlvbiBGaWxlKTogRG9jdW1lbnQgSE9TVF9CSVRfQlVDS0VULgoJKiBzeXN0ZW0uaCAoSE9TVF9CSVRfQlVDS0VUKTogRGVmYXVsdCB0byAiL2Rldi9udWxsIi4KCSogY29uZmlnL2kzODYveG0tZG9zLmggKEhPU1RfQklUX0JVQ0tFVCk6IERlZmluZSBhcyAiTlVMIi4KCSogY29uZmlnL2kzODYveG0tb3MyLmgsIGNvbmZpZy93aW5udC93aW5udC5oOiBMaWtld2lzZS4KCgkqIHByb3RvaXplLmMgKG11bmdlX2NvbXBpbGVfcGFyYW1zKTogVXNlIEhPU1RfQklUX0JVQ0tFVCAoaWYKCXdyaXRhYmxlKSBpbnN0ZWFkIG9mIGhhcmRjb2RlZCB2YWx1ZS4KCgkqIHRvcGxldi5jIChjb21waWxlX2ZpbGUpOiBPdXRwdXQgdG8gYSBmaWxlIGV2ZW4gaWYgLWZzeW50YXgtb25seS4KCgkqIGdjYy5jLCBjb25maWcvaTM4Ni94bS1kb3MuaCwgY29uZmlnL2kzODYveG0tb3MyLmg6IEtpbGwKCU1LVEVNUF9FQUNIX0ZJTEUuCgoJKiBnY2MuYyAoY2MxX29wdGlvbnMpOiBEbyBub3QgcHJvY2VzcyAtbyBvciBydW4gdGhlIGFzc2VtYmxlciBpZgoJLWZzeW50YXgtb25seS4KCSogb2JqYy9sYW5nLXNwZWMuaDogTGlrZXdpc2UuCgoyMDAwLTA4LTIxICBFbGkgWmFyZXRza2lpICA8ZWxpekBpcy5lbHRhLmNvLmlsPgoKCSogZml4aW5jL2ZpeGluY2wuYyAoZml4X3dpdGhfc3lzdGVtKTogUGlwZSB0aGUgb3V0cHV0IG9mCgkiZXh0ZXJuYWwiIGZpeGVzIHRocm91Z2ggYGNhdCcsIHRvIGF2b2lkIHRydW5jYXRpbmcgdGhlIGlucHV0CglmaWxlIGJ5IHJlZGlyZWN0aW9uLgoKMjAwMC0wOC0yMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChsZWFfZ2VuZXJhbF8xKTogQ29weSBpbnNuIGNvbmRpdGlvbiB0byBzcGxpdAoJY29uZGl0aW9uLgoJKGxlYV9nZW5lcmFsXzIsIGxlYV9nZW5lcmFsXzMpOiBMaWtld2lzZS4KCjIwMDAtMDgtMjEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMsIGRlZmluZV9sYWJlbCk6IFJlc3RyaWN0IC1XdHJhZGl0aW9uYWwKCXdhcm5pbmdzIHRvIHVzZXIgY29kZS4KCgkqIGMtbGV4LmMgKHJlYWRlc2NhcGUsIHl5bGV4KTogTGlrZXdpc2UuCgoJKiBjLXR5cGVjay5jIChzdG9yZV9pbml0X3ZhbHVlLCBwcm9jZXNzX2luaXRfZWxlbWVudCk6IExpa2V3aXNlCgkoY19leHBhbmRfc3RhcnRfY2FzZSk6IEZvcm1hdC4KCjIwMDAtMDgtMTggIE1hY2llaiBXLiBSb3p5Y2tpICA8bWFjcm9AZHMyLnBnLmdkYS5wbD4KCgkqIG1pcHMvbGludXguaCAoTElOS19TUEVDKTogVXNlICUoZW5kaWFuX3NwZWMpLgoKCSogbWlwcy9taXBzLmg6IENoYW5nZSBMSU5LRVJfRU5ESUFOX1NQRUMgdG8gRU5ESUFOX1NQRUMKCWFuZCBsaW5rZXJfZW5kaWFuX3NwZWMgdG8gZW5kaWFuX3NwZWMuCgkoRU5ESUFOX1NQRUMpOiBBZGQgJXtFQn0gYW5kICV7RUx9LgoJKExJTktfU1BFQyk6IFJlbW92ZSAle0VCfSBhbmQgJXtFTH0uCgkoQVNNX1NQRUMpOiBMaWtld2lzZS4gIFVzZSAlKGVuZGlhbl9zcGVjKS4KCjIwMDAtMDgtMjEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtdHJlZS5oIChmbGFnX2hvc3RlZCk6IE1vdmUgZGVjbGFyYXRpb24gZnJvbSBoZXJlLi4uCgkqIGMtY29tbW9uLmggKGZsYWdfaG9zdGVkKTogLi4uIHRvIGhlcmUuCgkoZmxhZ19ub25pc29fZGVmYXVsdF9mb3JtYXRfYXR0cmlidXRlcyk6IE5ldyBkZWNsYXJhdGlvbi4KCSogYy1kZWNsLmMgKGZsYWdfbm9uaXNvX2RlZmF1bHRfZm9ybWF0X2F0dHJpYnV0ZXMpOiBOZXcgdmFyaWFibGUuCgkoY19kZWNvZGVfb3B0aW9uKTogU2V0IGl0IGFwcHJvcHJpYXRlbHkgZm9yIG9wdGlvbnMgY2hvb3NpbmcKCWxhbmd1YWdlIHN0YW5kYXJkIHZhcmlhbnQuCgkqIGMtY29tbW9uLmMgKGluaXRfZnVuY3Rpb25fZm9ybWF0X2luZm8pOiBPbmx5IHByb3ZpZGUgZGVmYXVsdAoJZm9ybWF0IGF0dHJpYnV0ZXMgaWYgZmxhZ19ob3N0ZWQuICBPbmx5IHByb3ZpZGUgdGhlIGdldHRleHQKCWZvcm1hdHMgaWYgZmxhZ19ub25pc29fZGVmYXVsdF9mb3JtYXRfYXR0cmlidXRlcy4gIFVwZGF0ZQoJY29tbWVudHMuCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBEaXNhYmxlIHRyZWF0bWVudCBvZiAlYSBhcyBhIHNjYW5mIGZsYWcgaW4KCUM5OSBtb2RlLgoKMjAwMC0wOC0yMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoc2Nhbl9jaGFyX3RhYmxlKTogQWRkICd3JyB0byBmbGFncyBmb3IgYWxsIGZvcm1hdHMKCWV4Y2VwdCAnbicuCgkoY2hlY2tfZm9ybWF0X2luZm8pOiBTZXQgJ3dpZGUnIGZvciBzY2FuZiBmb3JtYXQgd2lkdGhzLiAgV2FybiBmb3IKCWEgemVybyBzY2FuZiB3aWR0aC4gIE1ha2UgdGhlIGNoZWNrIGZvciB3cml0aW5nIGludG8gYSBjb25zdGFudAoJb2JqZWN0IGF0IHRoZSBmaXJzdCBsZXZlbCBvZiBpbmRpcmVjdGlvbjsgYXQgbGF0ZXIgbGV2ZWxzLCB3YXJuIGlmCglhbnkgdHlwZSBxdWFsaWZpZXJzIGFyZSBlbmNvdW50ZXJlZC4KCk1vbiBBdWcgMjEgMDc6NDE6MTIgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogcmVsb2FkLmMgKHJlbG9hZF9pbm5lcl9yZWdfb2Zfc3VicmVnKTogTmV3IGZ1bmN0aW9uIGJyb2tlbiBvdXQgb2YKCXB1c2hfcmVsb2FkLgoJKHB1c2hfcmVsb2FkKTogVXNlIHJlbG9hZF9pbm5lcl9yZWdfb2Zfc3VicmVnLgoJKGNvbWJpbmVfcmVsb2Fkcyk6IERvIG5vdCBjb21iaW5lIHJlbG9hZHMgaWYgdGhlIGlucHV0IHJlbG9hZAoJaXMgYSBTVUJSRUcgaW4gd2hpY2ggdGhlIGlubmVyIHBhcnQgd2lsbCBuZWVkIHJlbG9hZGluZy4KCgkqIGdsb2JhbC5jIChnbG9iYWxfYWxsb2MpOiBBdm9pZCBwYXNzaW5nIGR1bXBmaWxlIGFyZ3VtZW50IHRvCglyZWxvYWQgcm91dGluZXMuCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogTGlrZXdpc2UuCgkqIHJlbG9hZC5oIChyZWxvYWQpOiBSZW1vdmUgZHVtcGZpbGUgYXJndW1lbnQuICBDYWxsZXJzIGNoYW5nZWQuCgkoZGVidWdfcmVsb2FkLCBkZWJ1Z19yZWxvYWRfdG9fc3RyZWFtKTogTW92ZSBwcm90b3R5cGVzIGhlcmUuCgkqIHJ0bC5oICAocmVsb2FkKTogUmVtb3ZlIGR1bXBmaWxlIGFyZ3VtZW50LgoJKiByZWxvYWQuYyAoZGVidWdfcmVsb2FkKTogUmVtb3ZlIHByb3RvdHlwZS4KCShkZWJ1Z19yZWxvYWRfdG9fc3RyZWFtKTogTGlrZXdpc2UuCgkqIHJlbG9hZDEuYzogQXZvaWQgcGFzc2luZyBkdW1wZmlsZSBhcm91bmQsIHJlbHkgb24gcnRsX2R1bXBfZmlsZQoJaW5zdGVhZC4KCjIwMDAtMDgtMjEgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAbWVybGluLmNvZGVzb3VyY2VyeS5jb20+CgoJKiBkaWFnbm9zdGljLmMgKGNvbnRleHRfYXNfcHJlZml4KTogRXhwb3J0LgoJKG5lZWRfZXJyb3JfbmV3bGluZSk6IFJlbW92ZS4KCShsYW5nX2RpYWdub3N0aWNfc3RhcnRlciwgbGFuZ19kaWFnbm9zdGljX2ZpbmFsaXplcik6IE5ldyBvYmplY3RzLgoJKGVycm9yX21vZHVsZV9jaGFuZ2VkLCByZWNvcmRfbGFzdF9lcnJvcl9tb2R1bGUsCgllcnJvcl9mdW5jdGlvbl9jaGFuZ2VkLCByZWNvcmRfbGFzdF9lcnJvcl9mdW5jdGlvbik6IE5ldyBmdW5jdGlvbnMuCgkoaW5pdGlhbGl6ZV9kaWFnbm9zdGljcyk6IERlZmF1bHQgaW5pdGlhbGl6ZQoJbGFuZ19kaWFnbm9zdGljX3N0YXJ0ZXIsIGxhbmdfZGlhZ25vc3RpY19maW5hbGl6ZXIuCgkoaW5pdF9vdXRwdXRfYnVmZmVyKTogVHdlYWsuCgkoZmlsZV9uYW1lX2FzX3ByZWZpeCk6IE5ldyBmdW5jdGlvbi4KCShhbm5vdW5jZV9mdW5jdGlvbiwgZGVmYXVsdF9wcmludF9lcnJvcl9mdW5jdGlvbiwKCXJlcG9ydF9lcnJvcl9mdW5jdGlvbiwgc2V0X2RpYWdub3N0aWNfY29udGV4dCk6IFR3ZWFrLgoKMjAwMC0wOC0yMSAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBmbG93LmMgKGluaXRfcHJvcGFnYXRlX2Jsb2NrX2luZm8pOiBIYW5kbGUgU1VCUkVHIGluIGEganVtcAoJY29uZGl0aW9uIGV4cHJlc3Npb24uCgoyMDAwLTA4LTIwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChtZXJnZV9ibG9ja3Nfbm9tb3ZlKTogRG9uJ3Qgc2VlayBiYWNrIHBhc3QgdGhlIGJiIG5vdGUuCgoyMDAwLTA4LTIwICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBpbml0LmMgKGNwcF9pbml0KTogU2V0IGdsb2JhbCBmbGFnIHdoZW4gY2FsbGVkLgoJKGNwcF9yZWFkZXJfaW5pdCk6IEJvbWIgb3V0IGlmIGNwcF9pbml0IGhhc24ndCBiZWVuIGNhbGxlZC4KClN1biBBdWcgMjAgMDE6NDE6MzUgMjAwMCAgRGVubmlzIENoZXJub2l2YW5vdiAgPGNkaUBzcGFyYy5zcGIuc3U+CgoJKiBjcHBsZXguYyAoY3BwX3NjYW5fYnVmZmVyKTogTW92ZSBgb3V0cHV0X2xpbmVfY29tbWFuZCcganVzdAoJYmVmb3JlIGBwcm9jZXNzX2RpcmVjdGl2ZScgc28gdGhhdCBuZXdsaW5lcyB3b24ndCBiZSBtaXNzZWQKCWZvciBkaXJlY3RpdmVzLgoJKGNwcF9wcmludGYpOiBJbmNyZW1lbnQgYHByaW50LT5saW5lbm8nIHdoZW4gbmV3bGluZSBpcyBlbWl0dGVkLgoKCSogY3BwbWFpbi5jIChjYl9pZGVudCk6IExpa2V3aXNlLgoJKGNiX2RlZmluZSk6IExpa2V3aXNlLgoJKGNiX3VuZGVmKTogTGlrZXdpc2UuCgkoY2JfaW5jbHVkZSk6IExpa2V3aXNlLgoJKGNiX2RlZl9wcmFnbWEpOiBMaWtld2lzZS4KCShkdW1wX21hY3Jvc19oZWxwZXIpOiBMaWtld2lzZS4KCjIwMDAtMDgtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGVtaXRfaW5zbl9ncm91cF9iYXJyaWVycyk6IFN0b3AgaWYgYXIubGMKCWFzc2lnbmVkIGJlZm9yZSBhIGxvb3AuCgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChhc2hsc2kzKTogWmVybyBleHRlbmQgdGhlIHNoaWZ0IGNvdW50LgoJKGFzaHJzaTMsIGxzaHJzaTMpOiBMaWtld2lzZS4KCjIwMDAtMDgtMjAgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtbGFuZy5jOiAjaW5jbHVkZSBkaWFnbm9zdGljLmgKCShjX3RyZWVfcHJpbnRlcik6IE5ldyBmdW5jdGlvbi4KCShsYW5nX2luaXQpOiBJbml0aWFsaXplIGxhbmdfcHJpbnRlci4KCgkqIE1ha2VmaWxlLmluIChjLWxhbmcubyk6IERlcGVuZHMgb24gZGlhZ25vc3RpYy5oCgoyMDAwLTA4LTIwICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWVycm9ycy5jIChwZWR3YXJuX2M5OSk6IEFkanVzdCBjYWxsIHRvIHJlcG9ydF9kaWFnbm9zdGljLgoKCSogZGlhZ25vc3RpYy5jIChkZWZhdWx0X2RpYWdub3N0aWNfc3RhcnRlciwKCWRlZmF1bHRfZGlhZ25vc3RpY19maW5hbGl6ZXIpOiBOZXcgZnVuY3Rpb25zLgoJKGRpYWdub3N0aWNfZm9yX2FzbSwgZGlhZ25vc3RpY19mb3JfZGVjbCk6IFR3ZWFrLgoJKHBlZHdhcm4sIHBlZHdhcm5fd2l0aF9maWxlX2FuZF9saW5lLCBlcnJvciwKCWVycm9yX3dpdGhfZmlsZV9hbmRfbGluZSwgZmF0YWwsIHdhcm5pbmcsCgl3YXJuaW5nX3dpdGhfZmlsZV9hbmRfbGluZSk6IEFkanVzdCBjYWxsIHRvIHJlcG9ydF9kaWFnbm9zdGljLgoJKHJlcG9ydF9kaWFnbm9zdGljKTogUmV3b3JrLgoJKHNldF9kaWFnbm9zdGljX2NvbnRleHQpOiBOZXcgZnVuY3Rpb24uCgoJKiBkaWFnbm9zdGljLmggKHN0cnVjdCBkaWFnbm9zdGljX2NvbnRleHQpOiBOZXcgZGF0YSBzdHJ1Y3R1cmUuCgkoZGlhZ25vc3RpY19tZXNzYWdlLCBkaWFnbm9zdGljX2FyZ3VtZW50X2xpc3QsCglkaWFnbm9zdGljX2ZpbGVfbG9jYXRpb24sIGRpYWdub3N0aWNfbGluZV9sb2NhdGlvbiwKCWRpYWdub3N0aWNfaXNfd2FybmluZywgZGlhZ25vc3RpY19zdGFydGVyLCBkaWFnbm9zdGljX2ZpbmFsaXplciwKCWRpYWdub3N0aWNfZmluYWxpemVyLCBkaWFnbm9zdGljX2F1eGlsaWFyeV9kYXRhKTogTmV3IG1hY3Jvcy4KCShzZXRfZGlhZ25vc3RpY19jb250ZXh0KTogRGVjbGFyZS4KCShyZXBvcnRfZGlhZ25vc3RpYyk6IENoYW5nZSBwcm90b3R5cGUuCgpTdW4gMjAtQXVnLTIwMDAgMDk6MjU6NDUgQlNUICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGZpeC1oZWFkZXIuYyAobWFpbik6IEluaXRpYWxpemUgY3BwbGliLgoKMjAwMC0wOC0xOSAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHJlZGhhdC5jb20+CgoJKiBpZmN2dC5jIChmaW5kX2lmX2Jsb2NrKTogRG8gbm90IGFzc3VtZSB0aGF0IGEgVEhFTiBibG9jayBoYXMgYW55CglpbnN0cnVjdGlvbnMgaW4gaXQgYmVmb3JlIGNoZWNraW5nIGZvciBpbmRpcmVjdCBqdW1wcy4KCgkqIGlmY3Z0LmMgKGZpbmRfaWZfYmxvY2spOiBEbyBub3QgY29uc2lkZXIgYSBUSEVOIGJsb2NrIHRoYXQgZW5kcwoJaW4gYSBpbmRpcmVjdCBqdW1wIGFzIGEgcG90ZW50aWFsIGZvciBjb25kaXRpb25hbCBleGVjdXRpb24uCgoJKiBkMzB2LmggKGQzMHZfaW5pdF9leHBhbmRlcnMpOiBEb24ndCBkZWNsYXJlIGhlcmUuCgkqIGQzMHYtcHJvdG9zLmggKGQzMHZfaW5pdF9leHBhbmRlcnMpOiBEZWNsYXJlIGhlcmUgd2l0aCBhIHZhbGlkCglwcm90b3R5cGUuCgpTYXQgMTktQXVnLTIwMDAgMjE6MTE6NDUgQlNUICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcC50ZXhpOiBBZGQgQHNlY3Rpb24gZm9yIGFzc2VydGlvbnMuCgpTYXQgQXVnIDE5IDEyOjM3OjA4IEVEVCAyMDAwICBKb2huIFdlaGxlICAoam9obkBmZWl0aC5jb20pCgoJKiBsb29wLmMgKHNjYW5fbG9vcCk6IFVzZSBDT05TVF9DQUxMX1AgaW5zdGVhZCBvZgoJY2hlY2tpbmcgZm9yIFJFR19MSUJDQUxMIC8gUkVHX1JFVFZBTC4KClNhdCBBdWcgMTkgMDk6MTg6NDcgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogcmVsb2FkMS5jIChyZWxvYWRfYXNfbmVlZGVkKTogQWNjZXB0IGR1bXBmaWxlIGFyZ3VtZW50LAoJcGFzcyBpdCB0byBlbWl0X3JlbG9hZF9pbnNucy4KCShlbWl0X3JlbG9hZF9pbnNucyk6IEFkZCBuZXcgZHVtcGZpbGUgYXJndW1lbnQuICBJZiBub24tbnVsbAoJdGhlbiBkdW1wIHRoZSByZWxvYWRzIGZvciBlYWNoIGluc24gaW50byB0aGUgZHVtcGZpbGUuCgkocmVsb2FkKTogUGFzcyBkdW1wZmlsZSB0byByZWxvYWRfYXNfbmVlZGVkLgoKCSogaW52b2tlLnRleGk6IENsZWFuIHVwIGxpbnV4LWdudSB2cyBsaW51eCBjb21tZW50cy4KCjIwMDAtMDgtMTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKHJlZ19vcl81Yml0X29wZXJhbmQpOiBOZXcuCgkoaWE2NF9kZXB6X2ZpZWxkX21hc2spOiBOZXcuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoQ09OU1RSQUlOVF9PS19GT1JfUik6IE5ldy4KCShQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQ6IFVwZGF0ZSBjb21tZW50YXJ5LgoJKGRlcHpfaW50ZXJuYWwpOiBOZXcuCgkoYXNobHNpMyk6IEltcGxlbWVudCBkaXJlY3RseS4KCShhc2hyc2kzLCBsc2hyc2kzKTogU2ltcGxpZnk7IHJlbHkgb24gZXh0diBhbmQgZXh0enYgZm9yIGNvbnN0YW50cy4KCShhc2hsZGkzKTogVXNlIHNobGFkZC4KCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaDogVXBkYXRlLgoKMjAwMC0wOC0xOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogdG9wbGV2LmMgKGluZGVwZW5kZW50X2RlY29kZV9vcHRpb24pOiBBbHdheXMgcHJvY2VzcyAtZy4KCVJlbW92ZSB0aGlyZCBhcmd1bWVudCwgbm93IHVudXNlZC4gIEFkanVzdCBjYWxsZXIgdG8gbWF0Y2guCgoyMDAwLTA4LTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29tYmluZS5jIChtYWtlX2NvbXBvdW5kX29wZXJhdGlvbik6IEJyZWFrIGFmdGVyIGNyZWF0aW5nCgl0aGUgZXh0cmFjdGlvbi4KCjIwMDAtMDgtMTggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5jIChjcHBfcmVnaXN0ZXJfcHJhZ21hX3NwYWNlKTogSnVzdCByZXR1cm4gaWYgdGhlCgluYW1lc3BhY2UgaXMgYWxyZWFkeSByZWdpc3RlcmVkLgoKMjAwMC0wOC0xOCAgUmF5IEVzc2ljayA8ZXNzaWNrQGRkbmEubGFicy5tb3QuY29tPiAmIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbWNvcmUvbWNvcmUubWQgKHJvdGxzaTMpOiBBbGxvdyBhbGxvdyByb3RhdGlvbnMgYnkgYQoJY29uc3RhbnQgYW1vdW50LiAgRG8gbm90IGdlbmVyYXRlIFJPVEwgaW5zdHJ1Y3Rpb24uCgpGcmkgQXVnIDE4IDE2OjIyOjIwIDIwMDAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL2VsZi5oOiBEbyBub3QgaW5jbHVkZSBzaC9zaC5oLgoJKiBjb25maWcvc2gvcnRlbXMuaDogTGlrZXdpc2UuCgkqIGNvbmZpZy9zaC9ydGVtc2VsZi5oOiBEbyBub3QgaW5jbHVkZSBzaC9lbGYuaC4KCSogY29uZmlndXJlLmluOiBHZXQgdGhlbSBpbmNsdWRlZCB3aXRoIGB0bV9maWxlJ3MuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCgkqIGNvbmZpZy9zaC9zaC5tZCAoZnB1X3N3aXRjaDAsIGZwdV9zd2l0Y2gxKTogU2ltcGxpZnkuCgkqIGNvbmZpZy9zaC9zaC5jIChmcHNjcl9zZXRfZnJvbV9tZW0pOiBVc2UgdGhlbS4KCkZyaSBBdWcgMTggMTQ6MjM6MTggMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHN0b3ItbGF5b3V0LmMgKGNvbXB1dGVfcmVjb3JkX3R5cGUpOiBEb24ndCB1c2UgbW9kZSBvZiBzaW5nbGUKCWZpZWxkIGFzIG1vZGUgb2YgcmVjb3JkIGlmIG5vdCBpbnRlZ2VyIG1vZGUgb2Ygc2FtZSB0eXBlLgoKCSogcmVnbW92ZS5jIChwZXJoYXBzX2VuZHNfYmJfcCk6IE5ldyBmdW5jdGlvbi4KCShvcHRpbWl6ZV9yZWdfY29weV8xLCBvcHRpbWl6ZV9yZWdfY29weV8yKTogQ2FsbCBpdC4KCShvcHRpbWl6ZV9yZWdfY29weV8zLCBmaXh1cF9tYXRjaF8yLCByZWdtb3ZlX29wdGltaXplKTogTGlrZXdpc2UuCgkoZml4dXBfbWF0Y2hfMSk6IExpa2V3aXNlLgoJKGZpeHVwX21hdGNoXzEsIGNvbWJpbmVfc3RhY2tfYWRqdXN0bWVudHNfZm9yX2Jsb2NrKTogQWRkIGNhc3RzIHRvCglhdm9pZCBzaWduZWQvdW5zaWduZWQgd2FybmluZ3MuCgoJKiBmdW5jdGlvbi5jIChmaXh1cF92YXJfcmVmc18xLCBjYXNlIE1FTSk6IFVwZGF0ZSBDT0RFIGFmdGVyCgl1cGRhdGluZyBYLgoKRnJpIDE4LUF1Zy0yMDAwIDE4OjMzOjQ1IEJTVCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBoYXNoLmg6IFVzZSBIQVZFX0RFU0lHTkFURURfSU5JVElBTElaRVJTLgoJKF9jcHBfdHJpZ3JhcGhfbWFwKTogRGVjbGFyYXRpb24gbW92ZWQgZnJvbSBjcHBsZXguYwoKCSogY3BwaW5pdC5jOiBEZWZpbmUgX2NwcF90cmlncmFwaF9tYXAuICBVc2UgVUNIQVJfTUFYICsgMQoJaW5zdGVhZAlvZiAyNTYuICBVc2UgY29uc2lzdGVudCB0ZXN0IGZvciBkZXNpZ25hdGVkIGluaXRpYWxpemVycy4KCShjcHBfaW5pdCk6IEluaXRpYWxpemUgdHJpZ3JhcGhfbWFwLgoJKGluaXRpYWxpemVfc3RhbmRhcmRfaW5jbHVkZXMsIHBhcnNlX29wdGlvbik6ICBVc2UgbWVtY21wCglpbnN0ZWFkIG9mIHN0cm5jbXAuCgoJKiBjcHBsZXguYyAoaW5pdF90cmlncmFwaF9tYXApOiBSZW1vdmUuCgkodHJpZ3JhcGhfb2ssIHRyaWdyYXBoX3JlcGxhY2UsIGxleF9saW5lKTogUmVmZXIgdG8KCV9jcHBfdHJpZ3JhcGhfbWFwLgoKCSogY3BwbGliLmMgKHN0cl9tYXRjaCwgV0FSTklORywgRVJST1IsIElDRSk6IERlbGV0ZS4KCShkb191bmFzc2VydCk6IFJlbW92ZSB1bnVzZWQgIm5leHQiIGxvY2FsLgoKCSogc3lzdGVtLmggKEhBVkVfREVTSUdOQVRFRF9JTklUSUFMSVpFUlMpOiBOZXcgcHJvdG90eXBlLgoKMjAwMC0wOC0xOCAgRW1tYW51ZWwgTWFydHkgIDxlbWFydHlAc3VudGVjaC5mcj4KCgkqIGFybS9saWIxZnVuY3MuYXNtIChfdW1vZHNpMyBUSFVNQiBWQVJJQU5UKTogUmVzdG9yZSBkZWxldGVkIHJldHVybgoJaW5zbi4KCjIwMDAtMDgtMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKHNwaWxsX3Jlc3RvcmVfbWVtKTogSGFuZGxlIGVtaXR0aW5nCgl0aGUgZmlyc3QgaW5zbiBpbiBhIHNlcXVlbmNlLgoKVGh1IEF1ZyAxNyAyMjo0MDowNSBFRFQgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogYWxpYXMuYyAodHJ1ZV9kZXBlbmRlbmNlLCB3cml0ZV9kZXBlbmRlbmNlX3ApOiBBIHJlYWQKCWludm9sdmluZyBhIGxhYmVsX3JlZiBvciB0aGUgY29uc3RhbnQgcG9vbCBkb2Vzbid0IGNyZWF0ZQoJYSBkZXBlbmRlbmN5LgoKCSogcnRsLmggKHVuY2hhbmdpbmcpOiBJbXByb3ZlIGRvY3VtZW50YXRpb24uCgoyMDAwLTA4LTE3ICBSb2RuZXkgQnJvd24gIDxSb2RuZXlCcm93bkBteW5kLmNvbT4KCgkqIGNzZS5jIChpbnNlcnRfcmVncyk6IFJlbW92ZSB1bnVzZWQgYHJlZ25vJy4KCjIwMDAtMDgtMTcgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogKGNwcGluaXQuYykgbWVyZ2VfaW5jbHVkZV9jaGFpbnM6IFVzZSByZW1vdmVfZHVwX2RpciwKCXJlbW92ZV9kdXBfZGlycy4gIElmIHF0YWlsID09IGJyYWNrLCByZW1vdmUgYnJhY2sgbm90CglxdGFpbC4KCShyZW1vdmVfZHVwX2RpciwgcmVtb3ZlX2R1cF9kaXJzKTogTmV3IGZ1bmN0aW9ucy4KCjIwMDAtMDgtMTcgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaW5pdC5jIChjcHBfY2xlYW51cCk6IEZyZWUgaW5jbHVkZSBkaXIgY2hhaW5zLgoJKiBjcHBsaWIuYyAoZG9fdW5kZWYpOiBMZXQgX2NwcF9mcmVlX2RlZmluaXRpb24gbWFrZSB0aGUgbm9kZSB2b2lkLgoJKGRvX3VuYXNzZXJ0KTogRnJlZSB0aGUgYXNzZXJ0IHdpdGggX2NwcF9mcmVlX2RlZmluaXRpb24uCgkqIGNwcG1hY3JvLmMgKF9jcHBfZnJlZV9kZWZpbml0aW9uKTogRnJlZSBtZW1vcnkgYWxsb2NhdGVkIGZvcgoJYXNzZXJ0aW9ucy4gIE1ha2UgdGhlIG5vZGUgYSBUX1ZPSUQgbm9kZS4KCjIwMDAtMDgtMTcgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaW5pdC5jIChwYXRoX2luY2x1ZGUsIGFwcGVuZF9pbmNsdWRlX2NoYWluKToKCVJlbW92ZSAybmQgcGFyYW1ldGVyIChzdHJ1Y3QgY3BwX3BlbmRpbmcgKikuCgkocGF0aF9pbmNsdWRlLCBpbml0aWFsaXplX3N0YW5kYXJkX2luY2x1ZGVzLCBjcHBfaGFuZGxlX29wdGlvbik6CglVcGRhdGUgY2FsbGVycyBhcHByb3ByaWF0ZWx5LgoJKGNwcF9oYW5kbGVfb3B0aW9uKTogVXNlIHBlbmQuCgoyMDAwLTA4LTE3ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGluaXQuYyAoc29ydF9vcHRpb25zKTogUmVtb3ZlLCBwdXQgZnVuY3Rpb25hbGl0eSBpbgoJY3BwX2luaXQuCgkoY3BwX2luaXQpOiBOZXcuCgkoaW5pdGlhbGl6ZV9idWlsdGlucyk6IEZyZWUgbWVtb3J5LgoJKGNwcF9zdGFydF9yZWFkKTogTW92ZSBpbml0X0lTdGFibGUgdG8gY3BwX2luaXQuCgoJKiBjcHBsaWIuaCAoY3BwX2luaXQpOiBOZXcgcHJvdG90eXBlLgoJKiBjcHBtYWluLmMgKG1haW4pOiBDYWxsIGNwcF9pbml0LgoKVGh1IEF1ZyAxNyAxMzoyMDozMiBFRFQgMjAwMCAgSm9obiBXZWhsZSAgKGpvaG5AZmVpdGguY29tKQoKCSogcnRsYW5hbC5jIChydHhfdW5zdGFibGVfcCk6IFVzZSBDT05TVEFOVF9QLgoJKHJ0eF91bnN0YWJsZV9wLCBydHhfdmFyaWVzX3ApOiBQcm9jZXNzIHZlY3RvcnMuCgoyMDAwLTA4LTE2ICBOaWliZSBZdXRha2EgIDxnbmlpYmVAbTE3bi5vcmc+LCBLYXogS29qaW1hICA8a2tvamltYUByci5paWo0dS5vci5qcD4KCgkqIGNvbmZpZy9zaC9saWIxZnVuY3MuYXNtIChHTE9CQUwpOiBEZWZpbmUuICBVc2UgZm9yIGFsbAoJcmVmZXJlbmNlcyB0byBHTE9CQUwgc3ltYm9scy4gIFVzZSBMT0NBTCB3aGVyZSBhcHByb3ByaWF0ZS4KCjIwMDAtMDgtMTYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmZpZ3VyZS5pbiAoKi1pYm0tYWl4NC5bMTJdKik6IERlbGV0ZSB0ZXN0IGZvciBnbnUgbGQuICBBbHdheXMKCXVzZSB0LWFpeDQxIHdoZW4gaG9zdCA9PSB0YXJnZXQuCgoyMDAwLTA4LTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcmVsb2FkLmMgKHB1c2hfc2Vjb25kYXJ5X3JlbG9hZCk6IFJldmVydCBsYXN0IGNoYW5nZS4KCUlmIHdlIHVzZSBhIHJlbG9hZF9pbi9vdXQgcGF0dGVybiwgbWFrZSB0aGUgd2hlbiB0aGUgc2FtZQoJYXMgdGhlIHByaW1hcnkgcmVsb2FkLgoJKGZpbmRfcmVsb2Fkcyk6IExpa2V3aXNlLgoKMjAwMC0wOC0xNiAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkaEByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmluIChsaWJzdGRjeHgtdjMpOiBGaXggdGVzdC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKV2VkIEF1ZyAxNiAwODoxMDozMiAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY2FsbHMuYyAoY2FsbHNfZnVuY3Rpb25fMSwgZXhwYW5kX2NhbGwpOiBPbmx5IHRlc3QKCVRZUEVfUkVUVVJOU19TVEFDS19ERVBSRVNTRUQgZm9yIEZVTkNUSU9OX1RZUEUuCgkqIGZ1bmN0aW9uLmMgKHRocmVhZF9wcm9sb2d1ZV9hbmRfZXBpbG9ndWVfaW5zbnMpOiBMaWtld2lzZS4KCjIwMDAtMDgtMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb21iaW5lLmMgKHNpbXBsaWZ5X3NoaWZ0X2NvbnN0KTogUmV2ZXJ0IHByZXZpb3VzIHR3bwoJY2hhbmdlcy4gIElmIFNISUZUX0NPVU5UX1RSVU5DQVRFRCwgY3JvcCB0aGUgc2hpZnQgY291bnQKCWJlZm9yZSB0aGUgbWFpbiBsb29wLgoKMjAwMC0wOC0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbWJpbmUuYyAoc2ltcGxpZnlfc2hpZnRfY29uc3QpOiBCb3VuZCBzaGlmdCBjb3VudCB3aGVuCgljb21iaW5pbmcgc2hpZnRzLgoKVHVlIEF1ZyAxNSAxNzozMzowNSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY2FsbHMuYyAoRUNGX1NQX0RFUFJFU1NFRCk6IE5ldyBtYWNyby4KCShjYWxsc19mdW5jdGlvbl8xKTogVHJlYXQgY2FsbGluZyBzcC1kZXByZXNzZWQgZnVuY3Rpb24gYXMgYWxsb2NhLgoJKGVtaXRfY2FsbF8xKTogRG9uJ3QgYWRqdXN0IFNQIGlmIGNhbGxpbmcgc3AtZGVwcmVzc2VkIGZ1bmN0aW9uLgoJKGV4cGFuZF9jYWxsKTogU2V0IEVDRl9TUF9ERVBSRVNTRUQgaWYgVFlQRV9SRVRVUk5TX1NUQUNLX0RFUFJFU1NFRC4KCUlmIHNwLWRlcHJlc3NlZCwgZW5zdXJlIGJsb2NrIHNhdmVzIGFuZCByZXN0b3JlcyBTUC4KCSogZm9sZC1jb25zdC5jIChleHRyYWN0X211bGRpdik6IE9ubHkgY2hlY2sgVFlQRV9JU19TSVpFVFlQRQoJZm9yIElOVEVHRVJfVFlQRS4KCSogZnVuY3Rpb24uYyAoa2VlcF9zdGFja19kZXByZXNzZWQpOiBOZXcgZnVuY3Rpb24uCgkodGhyZWFkX3Byb2xvZ3VlX2FuZF9lcGlsb2d1ZV9pbnNucyk6IENhbGwgaXQuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IFVzZSBIT1NUX1dJREVfSU5UX1BSSU5UX1VOU0lHTkVECgl0byBwcmludCBERUNMX09GRlNFVF9BTElHTi4KCVByaW50IG5vLWZvcmNlLWJsayBhbmQgdHJhbnNwYXJlbnQtdW5pb24gZmxhZ3MgcHJvcGVybHkuCgkqIHN0bXQuYyAoZXhwYW5kX2dvdG9faW50ZXJuYWwpOiBEb24ndCByZXN0b3JlIHN0YWNrIGlmIGxhc3QgYmxvY2sKCWFuZCBmdW5jdGlvbiByZXR1cm5zIHdpdGggc3AgZGVwcmVzc2VkLgoJKGZpeHVwX2dvdG9zKTogTGlrZXdpc2UuCgkoc2F2ZV9zdGFja19wb2ludGVyKTogTmV3IGZ1bmN0aW9uLCBmcm9tIGNvZGUgaW4gZXhwYW5kX2RlY2wuCgkoZXhwYW5kX2RlY2wpOiBDYWxsIG5ldyBmdW5jdGlvbi4KCSogdHJlZS5oIChUWVBFX0lTX1NJWkVUWVBFKTogQ2FsbCBJTlRFR0VSX1RZUEVfQ0hFQ0suCgkoVFlQRV9SRVRVUk5TX1NUQUNLX0RFUFJFU1NFRCk6IE5ldyBtYWNyby4KCShzYXZlX3N0YWNrX3BvaW50ZXIpOiBOZXcgZGVjbGFyYXRpb24uCgoJKiBkaWFnbm9zdGljLmMgKGZhdGFsX2Z1bmN0aW9uKTogTmV3IHZhcmlhYmxlLgoJKHNldF9mYXRhbF9mdW5jdGlvbik6IE5ldyBmdW5jdGlvbi4KCShmYXRhbCk6IENhbGwgaXQuCgkqIGRpYWdub3N0aWMuaCAoc2V0X2ZhdGFsX2Z1bmN0aW9uKTogTmV3IGRlY2xhcmF0aW9uLgoKMjAwMC0wOC0xNSAgV2lsbGlhbSBDb2hlbiAgPHdjb2hlbkByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL2VsZi5oIChEV0FSRjJfREVCVUdHSU5HX0lORk8pOiBEZWZpbmVkLgoJKFBSRUZFUlJFRF9ERUJVR0dJTkdfVFlQRSk6IFNldCB0byBkd2FyZjIgaW5mby4KCShEV0FSRjJfQVNNX0xJTkVfREVCVUdfSU5GTyk6IERlZmluZWQuCgoyMDAwLTA4LTE1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZmxvdy5jIChtYXJrX3VzZWRfcmVnKTogU2V0IHJlZ19jb25kX3JlZyBhcHByb3ByaWF0ZWx5LgoKMjAwMC0wOC0xNSAgUmljaGFyZCBFYXJuc2hhdyA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS5jIChhcm1fZnVuY3Rpb25fb2tfZm9yX3NpYmNhbGwpOiBOZXcgZnVuY3Rpb24uCgkqIGFybS5oIChGVU5DVElPTl9PS19GT1JfU0lCQ0FMTCk6IERlZmluZS4KCSogYXJtLm1kIChjYWxsIGV4cGFuZGVycyk6IERvbid0IGNoZWNrIGhlcmUgZm9yIGNhbGxzIHRoYXQgY2FuJ3QKCWJlIHNpYmxpbmcgY2FsbHMuCgoyMDAwLTA4LTE1ICBSaWNoYXJkIEVhcm5zaGF3IDxyZWFybnNoYUBhcm0uY29tPgoKCSogYXJtLm1kIChzcGxpdHMgZ2VuZXJhdGluZyBjb25kX2V4ZWMpOiBEaXNhYmxlLgoKMjAwMC0wOC0xNSAgUmljaGFyZCBFYXJuc2hhdyA8cmVhcm5zaGFAYXJtLmNvbT4KCgkqIGFybS9saW51eC1lbGYuaCAodGV4dF9zZWN0aW9uKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoKMjAwMC0wOC0xNSAgUmljaGFyZCBFYXJuc2hhdyA8cmVhcm5zaGFAYXJtLmNvbT4KCglBUk0gc3VwcG9ydCBmb3IgdW5vcmRlcmVkIEZQIG9wZXJhdGlvbnMuCgkqIGFybS1wcm90b3MuaCAoYXJtX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBEZWNsYXJlLgoJKiBhcm0uYyAoYXJtX2NvbXBhcmlzb25fb3BlcmF0b3IpOiBOZXcgZnVuY3Rpb24uCgkoYXJtX3NlbGVjdF9jY19tb2RlKTogQWRkIHVub3JkZXJlZCBjb21wYXJpc29uIGNvZGVzLgoJKGdldF9hcm1fY29uZGl0aW9uX2NvZGUpOiBMaWtld2lzZS4KCShhcm1fZmluYWxfcHJlc2Nhbl9pbnNuKTogQ2FuJ3QgaGFuZGxlIHVub3JkZXJlZCBqdW1wcyB0aGF0IGNhbid0CgliZSBkb25lIGluIG9uZSBpbnNuLgoJKiBhcm0uaCAoUFJFRElDQVRFX0NPREVTKTogQWRkIGFybV9jb21wYXJpc29uX29wZXJhdG9yLgoJKiBhcm0ubWQgKGFsbCB1c2VzIG9mIGNvbXBhcmlzb25fb3BlcmF0b3IpOiBSZXBsYWNlIHdpdGgKCWFybV9jb21wYXJpc29uX29wZXJhdG9yLgoJKGJ1bm9yZGVyZWQsIGJvcmRlcmVkLCBidWd0LCBidW5sdCwgYnVuZ2UsIGJ1bmxlLCBidW5lcSwgYmx0Z3QpOiBOZXcKCWV4cGFuZHMuCgkoYXJtX2J1bmVxLCBhcm1fYmx0Z3QsIGFybV9idW5lcV9yZXZlcnNlZCwgYXJtX2JsdGd0X3JldmVyZXNlZCk6IE5ldwoJcGF0dGVybnMuCgpUdWUgQXVnIDE1IDAwOjM2OjM2IDIwMDAgIE92aWRpdSBQcmVkZXNjdSAgPG92aWRpdUBjdXAuaHAuY29tPgoKCSogZ3Roci1wb3NpeC5oOiBDb25kaXRpb25hbGx5IGluY2x1ZGUgPHNjaGVkLmg+OyBpbmNsdWRlCgk8Y29uZmlnLmg+IGZyb20gbGlib2JqYy8uCgoyMDAwLTA4LTE0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChsZWdpdGltaXplX3BpY19hZGRyZXNzKTogVXNlIFBtb2RlCglmb3IgYWxsIENPTlNUcy4KCjIwMDAtMDgtMTQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW4gKGlhNjQtKik6IFNldCBmbG9hdF9mb3JtYXQgZm9yIGkzODYgbG9uZyBkb3VibGUuCgoJKiByZWFsLmMgKEdFVF9SRUFMKTogVHJlYXQgMTI4LWJpdCBJTlRFTF9FWFRFTkRFRF9JRUVFX0ZPUk1BVAoJYXMgd2Ugd291bGQgZm9yIGkzODYgWEZtb2RlLgoJKFBVVF9SRUFMKTogTGlrZXdpc2UuCgkoZW5kaWFuLCBlcmVhbF9hdG9mLCByZWFsX3ZhbHVlX3RydW5jYXRlKTogTGlrZXdpc2UuCgkoZXJlYWxfaXNuZWcsIHRvZTY0LCBldGVucywgbWFrZV9uYW4pOiBMaWtld2lzZS4KCSogcmVhbC5oIChSRUFMX1ZBTFVFX1RPX1RBUkdFVF9MT05HX0RPVUJMRSk6IExpa2V3aXNlLgoKCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaDogVXBkYXRlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGdlbmVyYWxfdGZtb2RlX29wZXJhbmQpOiBOZXcuCgkoZGVzdGluYXRpb25fdGZtb2RlX29wZXJhbmQpOiBOZXcuCgkodGZyZWdfb3JfZnAwMV9vcGVyYW5kKTogTmV3LgoJKGlhNjRfc3BsaXRfdGltb2RlKTogTmV3LgoJKHNwaWxsX3RmbW9kZV9vcGVyYW5kKTogTmV3LgoJKGlhNjRfZXhwYW5kX3Byb2xvZ3VlKTogVXNlIFRGbW9kZSBub3QgWEZtb2RlLgoJKGlhNjRfZXhwYW5kX2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkoaWE2NF9mdW5jdGlvbl9hcmcpOiBMaWtld2lzZS4KCShpYTY0X2Z1bmN0aW9uX2FyZ19hZHZhbmNlKTogTGlrZXdpc2UuCgkoaWE2NF9yZXR1cm5faW5fbWVtb3J5KTogTGlrZXdpc2UuCgkoaWE2NF9mdW5jdGlvbl92YWx1ZSk6IExpa2V3aXNlLgoJKGlhNjRfcHJpbnRfb3BlcmFuZCk6IExpa2V3aXNlLgoJKGlhNjRfcmVnaXN0ZXJfbW92ZV9jb3N0KTogU2V0IEdSPC0+RlIgdG8gNS4KCShpYTY0X3NlY29uZGFyeV9yZWxvYWRfY2xhc3MpOiBHZXQgR1IgZm9yIFRJbW9kZSBtZW1vcnkgb3AuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoUk9VTkRfVFlQRV9TSVpFKTogUmVtb3ZlLgoJKFJPVU5EX1RZUEVfQUxJR04pOiBSZW1vdmUuCgkoTE9OR19ET1VCTEVfVFlQRV9TSVpFKTogU2V0IHRvIDEyOC4KCShJTlRFTF9FWFRFTkRFRF9JRUVFX0ZPUk1BVCk6IERlZmluZS4KCShIQVJEX1JFR05PX05SRUdTKTogVXNlIFRGbW9kZSwgbm90IFhGbW9kZS4KCShIQVJEX1JFR05PX01PREVfT0spOiBMaWtld2lzZS4gIERpc2FsbG93IFRJbW9kZSBpbiBGUnMuCgkoTU9ERVNfVElFQUJMRV9QKTogVXNlIFRGbW9kZSwgbm90IFhGbW9kZS4KCShDTEFTU19NQVhfTlJFR1MpOiBMaWtld2lzZS4KCShBU01fT1VUUFVUX0xPTkdfRE9VQkxFKTogT3V0cHV0IGJ5IDQgYnl0ZSBodW5rcy4KCShQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG1vdnRpKTogTmV3LgoJKG1vdnRpX2ludGVybmFsKTogVXNlIGEgY2xvYmJlciBmb3IgbWVtb3J5IGFsdGVybmF0aXZlcy4KCShyZWxvYWRfaW50aSwgcmVsb2FkX291dHRpKTogTmV3LgoJKG1vdnNmY2NfYXN0ZXApOiBQcmVkaWNhdGUgcHJvcGVybHkuCgkobW92ZGZjY19hc3RlcCk6IExpa2V3aXNlLgoJKG1vdnhmKTogUmVtb3ZlLgoJKG1vdnRmKTogTmV3LgoJKGV4dGVuZHNmdGYyLCBleHRlbmRkZnRmMik6IE5ldy4KCSh0cnVuY3Rmc2YyLCB0cnVuY3RmZGYyKTogTmV3LgoJKGZsb2F0ZGl0ZjIsIGZpeF90cnVuY3RmZGkyKTogTmV3LgoJKGZsb2F0dW5zZGl0ZjIsIGZpeHVuc190cnVuY3RmZGkyKTogTmV3LgoJKGFkZHRmMywgc3VidGYzLCBtdWx0ZjMsIGFic3RmMik6IE5ldy4KCShuZWd0ZjIsIG5hYnN0ZjIsIG1pbnRmMywgbWF4dGYzKTogTmV3LgoJKG1hZGR0ZjMsIG1zdWJ0ZjMsIG5tdWx0ZjMsIG5tYWRkdGYzKTogTmV3LgoJKGNtcHRmKTogTmV3LgoJKGZyX3NwaWxsKTogVXNlIFRGbW9kZSwgbm90IFhGbW9kZS4KCShmcl9yZXN0b3JlKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2xpYjFmdW5jcy5hc20gKF9fZGl2dGYzKTogTmV3LgoJKiBjb25maWcvaWE2NC90LWlhNjQgKExJQjFBU01GVU5DUyk6IEFkZCBpdC4KCjIwMDAtMDgtMTQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNzZS5jIChmb2xkX3J0eCk6IEF2b2lkIGVtcHR5IGJvZHkgaW4gYW4gaWYtc3RhdGVtZW50LgoKCSogZG9sb29wLmMgKGRvbG9vcF9pdGVyYXRpb25zX21heCwgZG9sb29wX21vZGlmeSk6IEF2b2lkIHVzaW5nIHRoZQoJYFUnIGludGVnZXIgY29uc3RhbnQgc3VmZml4LgoKCSogZHdhcmYyb3V0LmMgKGFkZF9zdWJzY3JpcHRfaW5mbyk6IEF2b2lkIGVtcHR5IGJvZHkgaW4gYW4KCWVsc2Utc3RhdGVtZW50LgoKCSogc3BhcmMvc29sMi5oIChfX2VuYWJsZV9leGVjdXRlX3N0YWNrKTogUHJvdG90eXBlLgoKMjAwMC0wOC0xNCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29sbGVjdDIuYzogUmVtb3ZlIHVzZSBvZiBBSVggaW1wb3J0IGZpbGUuCgoJKiBsb25nbG9uZy5oOiBUZXN0IEFSQ0hfUFdSIG5vdCBBUkNIX1BPV0VSLgoKCSogcnM2MDAwLmMgKHByaW50X29wZXJhbmQsIGNhc2UgJ0UnKTogQWRkIGVsc2UuCgoyMDAwLTA4LTE0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobW92ZGkpOiBEZWxheSBjYWxsaW5nIGlhNjRfZXhwYW5kX2xvYWRfYWRkcmVzcy4KCShtb3ZkaV9zeW1ib2xpYyk6IE5ldy4KCjIwMDAtMDgtMTQgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoQVNNX1NQRUMpOiBQYXNzIC1tY29uc3RhbnQtZ3AgYW5kIC1tYXV0by1waWMKCXRvIEdOVSBhcy4gIEZvciBJbnRlbCBhcywgcGFzcyAtTSBjb25zdF9ncCBhbmQgLU0gbm9fcGxhYmVsLgoJKiBjb25maWcvaWE2NC9saW51eC5oIChBU01fU1BFQyk6IFBhc3MgLW1jb25zdGFudC1ncCBhbmQgLW1hdXRvLXBpYwoJdG8gR05VIGFzLgoKMjAwMC0wOC0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoZW1pdF9ncm91cF9sb2FkKTogRG9uJ3QgZm9yY2UgY29uc3RhbnRzIGludG8gcmVnaXN0ZXJzLgoJU3BlY2lhbCBjYXNlIHNvdXJjZSBhbHJlYWR5IGluIHRoZSBjb3JyZWN0IG1vZGUuCgoyMDAwLTA4LTE0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjb25maWd1cmUuaW46IEFjY2VwdCAqLSotbGludXgqIG5vdCBqdXN0ICotKi1saW51eC1nbnUqLgoJKiBmaXhpbmMvaW5jbGhhY2suZGVmOiBMaWtld2lzZS4KCSogZml4aW5jL21rZml4aW5jLnNoOiBMaWtld2lzZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoJKiBpbnN0YWxsLnRleGk6IERvY3VtZW50IGVxdWl2YWxlbmNlIG9mIGxpbnV4IGFuZCBsaW51eC1nbnUuCgpNb24gQXVnIDE0IDE4OjUxOjQ0IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIGNzZS5jIChpbnNlcnRfcmVncyk6IEFsc28gaW4gUkVHIGNhc2U6IFdoZW4gZmluZGluZyBhbiBpbnZhbGlkCgl2YWx1ZSwgYW5kIHdlIG1ha2UgYSBuZXcgcXVhbnRpdHksIG1ha2Ugc3VyZSB0aGF0IGl0IHdvbid0IGJlCgltaXN0YWtlbiBieSBmb3IgYSB2YWxpZCBvbmUgYnkgbWVudGlvbl9yZWdzLgoKMjAwMC0wOC0xMyAgUmFsZiBH/HRsZWluIDxyYWxmLmd1ZXRsZWluQGFyYW5lYS5kZT4KCgkqIGg4MzAwLm1kOiBSZW1vdmUgb2Jzb2xldGUgcGVlcGhvbGVzLgoKMjAwMC0wOC0xMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBpbnZva2UudGV4aSAoSDgvMzAwIE9wdGlvbnMpOiBGaXggdHlwb3MuCgkqIGNvbmZpZy9oODMwMC5jOiBGaXggZm9ybWF0dGluZy4KCSogY29uZmlnL2g4MzAwLmg6IEZpeCBjb21tZW50IHR5cG9zLgoJKE9WRVJSSURFX09QVElPTlMpOiBGaXggZm9ybWF0dGluZy4KCgkqIGZ1bmN0aW9uLmM6IEZpeCBmb3JtYXR0aW5nLgoKCSogY3NlLmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wOC0xMyAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogZmxvdy5jIChhdHRlbXB0X2F1dG9faW5jKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgYmInLgoJKGF0dGVtcHRfYXV0b19pbmMpOiBTdXBwcmVzcyBwYXJlbnRoZXNlcyB3YXJuaW5nLgoJKiBmdW5jdGlvbi5jIChwdXRfcmVnX2ludG9fc3RhY2spOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGB1bnNpZ25lZF9wJy4KCSogbG9vcC5jIChsb2FkX21lbXMpOiBSZW1vdmUgYHUnIHN1ZmZpeCBpbiB0d28gcGxhY2VzLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jOiBSZW1vdmUgdW5uZWNlc3NhcnkgYHUnIHN1ZmZpeGVzIGZyb20KCWhleCBjb25zdGFudHMuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmg6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3NvbC1jMC5jOiBQcm90b3R5cGUgc29tZSBmdW5jdGlvbnMuICBSZW1vdmUgdGhlCglfX2VhYmkgZHVtbXkgcm91dGluZS4KCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChBU01fREVDTEFSRV9GVU5DVElPTl9OQU1FKTogUmVtb3ZlIHVudXNlZAoJdmFyaWFibGUgYGJ1Zl9wdHInLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3NlbGVjdF9zZWN0aW9uKTogUmV3cml0ZSB0bwoJbm90IHB1dCBzdHVmZiBpbiAuc2RhdGEgdW5uZWNlc3NhcmlseS4KCShyczYwMDBfdW5pcXVlX3NlY3Rpb24pOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oOiBBZGQgcnM2MDAwX3VuaXF1ZV9zZWN0aW9uLgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKFVOSVFVRV9TRUNUSU9OKTogRGVmaW5lLgoKCSogYy10eXBlY2suYyAoYnVpbGRfYXJyYXlfcmVmKTogRG9uJ3QgY29tcGxhaW4gYWJvdXQgbm9uLWx2YWx1ZQoJYXJyYXlzIGluIEM5OS4gIERvbid0IHRyeSB0byBsb29rIGF0IERFQ0xfUkVHSVNURVIgb2YgYQoJQ09NUE9ORU5UX1JFRi4gIERvbid0IGNvbXBsYWluIHR3aWNlIGFib3V0IHRoZSBzYW1lIGVycm9yLgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAoYWl4X3B0aHJlYWQpOiBOZXcgZml4LgoJKGFpeF9zeXNtYWNoaW5lKTogTmV3IGZpeC4KCSogZml4aW5jL2ZpeGluY2wueDogUmVnZW5lcmF0ZS4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIpOiBDYWxsIGNvbnZlcnRfbW9kZXMgd2hlbiB0dXJuaW5nIGEgbGFyZ2UKCW11bHRpcGx5IGludG8gYSBzbWFsbCBvbmUuCgoyMDAwLTA4LTEyICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiB0cmVlLmggKERFQ0xfT0ZGU0VUX0FMSUdOKTogTWFrZSB0aGUgb2ZmX2FsaWduIGZpZWxkIG9mCgl0aGUgdHJlZSBzdHJ1Y3R1cmUgYW4gZXhwb25lbnQgcmF0aGVyIHRoYW4gYW4gZXhwbGljaXQgYWxpZ25tZW50CglzbyBpdCBkb2Vzbid0IG92ZXJmbG93LgoJKFNFVF9ERUNMX09GRlNFVF9BTElHTik6IE5ldyBtYWNyby4KCSogc3Rvci1sYXlvdXQuYyAocGxhY2VfdW5pb25fZmllbGQpOiBVc2UgU0VUX0RFQ0xfT0ZGU0VUX0FMSUdOCglyYXRoZXIgdGhhbiBERUNMX09GRlNFVF9BTElHTi4KCShwbGFjZV9maWVsZCk6IExpa2V3aXNlLgoJKiBleHBtZWQuYyAoc3RvcmVfYml0X2ZpZWxkKTogQWJvcnQgb24gYWxpZ249PTAgdG8gYXZvaWQKCWFudGlzb2NpYWwgbWFjaGluZSBiZWhhdmlvdXIuCgoyMDAwLTA4LTEyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc2liY2FsbC5jICh1c2VzX2FkZHJlc3NvZik6IEFjY2VwdCBib3RoIGFkZHJlc3NvZiBhbmQKCWN1cnJlbnRfZnVuY3Rpb25faW50ZXJuYWxfYXJnX3BvaW50ZXIgaW5zaWRlIGEgbWVtLgoJKG9wdGltaXplX3NpYmxpbmdfYW5kX3RhaWxfcmVjdXJzaXZlX2NhbGwpOiBGYWlsIHRhaWwgcmVjdXJzaW9uCglpZiBjdXJyZW50X2Z1bmN0aW9uX3VzZXNfYWRkcmVzc29mLgoJKiBzdG10LmMgKGV4cGFuZF9yZXR1cm4pOiBLaWxsIHRhaWwgcmVjdXJzaW9uIGFuZCBIQVZFX3JldHVybgoJb3B0aW1pemF0aW9ucy4KCjIwMDAtMDgtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChhZGRzaTMpOiBSZW1vdmUgZXhwYW5kZXIuCgkoc3Vic2kzLCBtdWxzaTMsIG5lZ3NpMiwgb25lX2NtcGxzaTIpOiBMaWtld2lzZS4KCSgqYWRkc2kzX3NobGFkZCk6IE5ldy4KCjIwMDAtMDgtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGRvX3NwaWxsKTogUGFzcyBjZmEgb2Zmc2V0IHRvIG1vdmUgZXhwYW5kZXIuCgkoZG9fcmVzdG9yZSk6IExpa2V3aXNlLgoJKGdlbl9tb3ZkaV94LCBnZW5fZnJfc3BpbGxfeCwgZ2VuX2ZyX3Jlc3RvcmVfeCk6IE5ldy4KCShpYTY0X2V4cGFuZF9wcm9sb2d1ZSwgaWE2NF9leHBhbmRfZXBpbG9ndWUpOiBVc2UgdGhlbS4KCShydHhfbmVlZHNfYmFycmllcik6IFRyYWNrIGFjdHVhbCBiaXQgbWFuaXB1bGF0aW9uIGZvcgoJYXIudW5hdCBtb3ZlcywgZ3Jfc3BpbGwsIGFuZCBncl9yZXN0b3JlLgoJKGVtaXRfaW5zbl9ncm91cF9iYXJyaWVycyk6IFNwZWNpYWwgY2FzZSBncl9zcGlsbC9ncl9yZXN0b3JlLgoJKHByb2Nlc3Nfc2V0KTogRG9uJ3QgaGFuZGxlIHZhcmFyZ3Mgc3BpbGxzLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChncl9zcGlsbCk6IEFjY2VwdCBjZmEgb2Zmc2V0LiAgRW1pdAoJLm1lbS5vZmZzZXQgaGVyZSBpbnN0ZWFkIG9mIGluIHByb2Nlc3Nfc2V0LgoJKGdyX3Jlc3RvcmUpOiBMaWtld2lzZS4KCjIwMDAtMDgtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmggKFBST01PVEVfTU9ERSk6IE9ubHkgZXh0ZW5kIHRvIFNJbW9kZS4KCjIwMDAtMDgtMTEgIE1hcmsgRWxicmVjaHQgIDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBnY2MudGV4aSAoVGhlIENvbmZpZ3VyYXRpb24gRmlsZSk6IERvY3VtZW50CglDT0xMRUNUMl9IT1NUX0lOSVRJQUxJWkFUSU9OLCBHQ0NfRFJJVkVSX0hPU1RfSU5JVElBTElaQVRJT04sIGFuZAoJVVBEQVRFX1BBVEhfSE9TVF9DQU5PTklDQUxJWkFUSU9OLgoKMjAwMC0wOC0xMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYy1wYXJzZS5pbiAoY2FzdF9leHByKTogQXZvaWQgLVdzdHJpY3QtcHJvdG90eXBlIHdhcm5pbmdzIGZvcgoJdW5wcm90b3R5cGVkIGZ1bmN0aW9uIHBvaW50ZXIgY2FzdHMgb24gaW50ZWdlciBjb25zdGFudHMuCgoyMDAwLTA4LTExIExhdXJ5bmFzIEJpdmVpbmlzIDxsYXVyYXNAc29mdGhvbWUubmV0PgoKCSogZml4cHJvdG86IFJlY29nbml6ZSBET1MgcGF0aHMgd2l0aCBkcml2ZSBsZXR0ZXJzIGFzIGFic29sdXRlIHBhdGhzLgoKMjAwMC0wOC0xMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGV4dGVuZC50ZXhpIChWb2xhdGlsZXMpOiBGaXggdHlwb3MuCgoyMDAwLTA4LTExICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGZsb3cuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTA4LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogcmVsb2FkLmMgKHB1c2hfc2Vjb25kYXJ5X3JlbG9hZCk6IFdoZW4gaW52b2tpbmcgYSByZWxvYWRfe2luLG91dH0KCXBhdHRlcm4sIGFsd2F5cyBhbGxvY2F0ZSBhIHRlcnRpYXJ5IHNjcmF0Y2ggcmVnaXN0ZXIuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEubWQgKHJlbG9hZF9pbnFpKTogVXNlIGEgREltb2RlIHNjcmF0Y2guCgkocmVsb2FkX2luaGkpOiBMaWtld2lzZS4KCjIwMDAtMDgtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmdW5jdGlvbi5jIChwdXRfcmVnX2ludG9fc3RhY2spOiBBbGxvdyB0eXBlIHRvIGJlIE5VTEwuCgkoc2NoZWR1bGVfZml4dXBfdmFyX3JlZnMpOiBMaWtld2lzZS4KCShnZW5fbWVtX2FkZHJlc3NvZik6IEFsbG93IGRlY2wgdG8gYmUgTlVMTC4KCShwdXRfYWRkcmVzc29mX2ludG9fc3RhY2spOiBMaWtld2lzZS4KCgkqIGZsb3cuYyAobWVyZ2VfYmxvY2tzX25vbW92ZSk6IEJlIG1vcmUgY2FyZWZ1bCBhYm91dAoJbG9jYXRpbmcgdGhlIGJlZ2lubmluZyBvZiBibG9jayBBLgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9zaGlmdF9jb25zdCk6IE9iZXkgU0hJRlRfQ09VTlRfVFJVTkNBVEVELgoKVGh1IEF1ZyAxMCAyMjo0NzowOSAyMDAwICBPdmlkaXUgUHJlZGVzY3UgIDxvdmlkaXVAY3VwLmhwLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjoKCSogY29uZmlndXJlOgoJKiBndGhyLXBvc2l4Lmg6CgkqIGNvbmZpZy5pbjogUmV2ZXJ0ZWQgdGhlIGNoZWNrIGZvciA8c2NoZWQuaD4uCgoyMDAwLTA4LTEwICBDaHJpcyBEZW1ldHJpb3UgIDxjZ2RAc2lieXRlLmNvbT4KCgkqIG1pcHMvZWxmLmggKENUT1JfU0VDVElPTl9OQU1FLCBEVE9SX1NFQ1RJT05fTkFNRSk6IE5ldwoJbWFjcm9zIGRlZmluZSB0aGUgbmFtZSBvZiBDVE9SIGFuZCBEVE9SIHNlY3Rpb25zLgoJKENUT1JfTElTVF9CRUdJTiwgQ1RPUl9MSVNUX0VORCwgRFRPUl9MSVNUX0JFR0lOLAoJRFRPUl9MSVNUX0VORCk6IENoYW5nZSB0byB1c2UgYXR0cmlidXRlcyB0byBzcGVjaWZ5CglzZWN0aW9ucy4KCSogbWlwcy9lbGY2NC5oIChDVE9SX1NFQ1RJT05fTkFNRSwgRFRPUl9TRUNUSU9OX05BTUUsCgkoQ1RPUl9MSVNUX0JFR0lOLCBDVE9SX0xJU1RfRU5ELCBEVE9SX0xJU1RfQkVHSU4sCglEVE9SX0xJU1RfRU5EKTogU2FtZSBhcyBpbiBtaXBzL2VsZi5oLgoKMjAwMC0wOC0xMCAgRHJldyBNb3NlbGV5ICA8ZG1vc2VsZXlAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tbjEwMzAwL21uMTAzMDAuaDogQWRkZWQgbm8tY3J0MCBvcHRpb24gZm9yIGV4cGxpY2l0bHkKCWRpc2FibGluZyBqdXN0IGNydDAuby4KCjIwMDAtMDgtMTAgIFJpY2hhcmQgRWFybnNoYXcgPHJlYXJuc2hhd0Bhcm0uY29tPiAmIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBhcm0uaCAoQ1BQX1NQRUMpOiBVc2Ugc3ViLXNwZWMgY3BwX2ludGVyd29yay4KCShDUFBfSU5URVJXT1JLX1NQRUMsIENQUF9JTlRFUldPUktfREVGQVVMVF9TUEVDKTogTmV3IHN1Yi1zcGVjcy4KCShFWFRSQV9TUEVDUyk6IEFkZCB0aGVtLgoJKiBhcm0vbGliMWZ1bmNzLmFzbTogU3VwcG9ydCBidWlsZHMgZm9yIGludGVyd29ya2luZy4KCVVzZSBtYWNyb3MgdG8gZWxpbWluYXRlIGR1cGxpY2F0ZWQgcGllY2VzIG9mIGNvZGUuCgoyMDAwLTA4LTEwICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGg4MzAwLmMgKGV4cGFuZF9hX3JvdGF0ZSk6IE5ldy4KCShlbWl0X2Ffcm90YXRlKTogTGlrZXdpc2UuCgkoaDgzMDBfYWRqdXN0X2luc25fbGVuZ3RoKTogQWRkIHN1cHBvcnQgZm9yIHRoZSByb3RhdGUgaW5zbnMuCgkqIGg4MzAwLm1kIChyb3RscWkzKTogTmV3LgoJKCpyb3RscWkzXzEpOiBMaWtld2lzZS4KCShyb3RsaGkzKTogTGlrZXdpc2UuCgkoKnJvdGxoaTNfMSk6IExpa2V3aXNlLgoJKHJvdGxoaTMpOiBMaWtld2lzZS4KCSgqcm90bGhpM18xKTogTGlrZXdpc2UuCgkqIGg4MzAwLXByb3RvLmg6IEFkZCBwcm90b3R5cGVzIGZvciBleHBhbmRfYV9yb3RhdGUgYW5kCgllbWl0X2Ffcm90YXRlLgoKCSogaDgzMDAuYzogRml4IGNvbW1lbnQgdHlwb3MuCgkoZG9zaXplKTogRGVjbGFyZSB0aGUgdmFyaWFibGUgYW1vdW50IGFzIHVuc2lnbmVkLgoJKGdldF9zaGlmdF9hbGcpOiBGaXggYSBjb21wYXJpc29uIGJldHdlZW4gc2lnbmVkIGFuZCB1bnNpZ25lZC4KCShlbWl0X2Ffc2hpZnQpOiBMaWtld2lzZS4KCShoODMwMF9hZGp1c3RfaW5zbl9sZW5ndGgpOiBTaW1wbGlmeSB0aGUgY29kZS4KCgkqIGMtZGVjbC5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMDgtMTAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtbGV4LmMgKHBhcnNlX2Zsb2F0LCB5eWxleCk6IEZvciAtV3RyYWRpdGlvbmFsLCBpc3N1ZSBhCgl3YXJuaW5nIGFib3V0IG5vbi10cmFkaXRpb25hbCBudW1lcmljIGNvbnN0YW50IHN1ZmZpeGVzLgoKCSogY3BwZXhwLmMgKHBhcnNlX251bWJlcik6IExpa2V3aXNlLgoKCSogaW52b2tlLnRleGk6ICgtV3RyYWRpdGlvbmFsKTogRG9jdW1lbnQgbmV3IGJlaGF2aW9yLgoKVGh1IEF1ZyAxMCAwMDoxMTowNCAyMDAwICBPdmlkaXUgUHJlZGVzY3UgIDxvdmlkaXVAY3VwLmhwLmNvbT4KCgkqIGd0aHItcG9zaXguaDogSW5jbHVkZSBhdXRvLWhvc3QuaC4gQ29uZGl0aW9uYWxseSBpbmNsdWRlCgk8c2NoZWQuaD4uCgkqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgZm9yIHRoZSA8c2NoZWQuaD4gaGVhZGVyIGZpbGUuCgkqIGNvbmZpZy5pbjogQWRkZWQgZGVmaW5lIGZvciBIQVZFX1NDSEVEX0guCgoyMDAwLTA4LTA5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjLXR5cGVjay5jIChwcm9jZXNzX2luaXRfZWxlbWVudCk6IEZvciAtV3RyYWRpdGlvbmFsLCB3YXJuIGFib3V0Cglpbml0aWFsaXphdGlvbiBvZiB1bmlvbnMuCgoJKiBpbnZva2UudGV4aSAoLVd0cmFkaXRpb25hbCk6IERvY3VtZW50IG5ldyBiZWhhdmlvci4KCjIwMDAtMDgtMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoLS1lbmFibGUtYy1jcHBsaWIpOiBVbmNvbW1lbnQuICBVc2UgQUNfREVGSU5FCglpbnN0ZWFkIG9mIGV4dHJhX2NfZmxhZ3MuCgkoLS1lbmFibGUtYy1tYmNoYXIpOiBVc2UgQUNfREVGSU5FIGluc3RlYWQgb2YgZXh0cmFfY19mbGFncy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgoJKiBjcHBlcnJvci5jIChjcHBfdHlwZTJuYW1lKTogTmV3IGZ1bmN0aW9uLgoJKiBjcHBsZXguYyAobGV4X2xpbmUpOiBJZiB3ZSBpc3N1ZWQgYW4gZXJyb3IgZm9yIGFuIGludmFsaWQKCXByZXByb2Nlc3NpbmcgZGlyZWN0aXZlLCBkaXNjYXJkIHRoYXQgbG9naWNhbCBsaW5lLgoJKiBjcHBsaWIuYyAoZG9fbGluZSk6IENhbGwgYSBob29rIGZ1bmN0aW9uIGlmIHRoZSBjdXJyZW50IGZpbGUKCWlzIHJlbmFtZWQgYnkgI2xpbmUuCgkoZG9faWRlbnQpOiBQYXNzIHRoZSBjb250ZW50cyBvZiB0aGUgc3RyaW5nLCBub3QgdGhlIGVudGlyZQoJdG9rZW4sIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbi4KCSogY3BwbGliLmggKENQUF9MQVNUX1BVTkNUVUFUT1IpOiBOZXcgI2RlZmluZS4KCShjYi5yZW5hbWVfZmlsZSk6IE5ldyBob29rIGZ1bmN0aW9uLgoJKGNiLmlkZW50KTogQWRqdXN0IHByb3RvdHlwZS4KCShjcHBfdHlwZTJuYW1lKTogUHJvdG90eXBlLgoJKiBjcHBtYWNyby5jIChkdW1wX21hY3JvX2FyZ3MpOiBDb3JyZWN0IHByZWNlZGVuY2UgbG9zc2FnZS4KCgkqIGNwcG1haW4uYyAoY2JfaWRlbnQpOiBVcGRhdGUgZm9yIGNoYW5nZWQgaW50ZXJmYWNlLgoJKGNiX3JlbmFtZV9maWxlKTogTmV3IGZ1bmN0aW9uLgoJKG1haW4pOiBTZXQgcmVuYW1lIGNhbGxiYWNrLgoKMjAwMC0wOC0wOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjYWxsZXItc2F2ZS5jIChtYXJrX3JlZmVyZW5jZWRfcmVncyk6IE1hcmsgcGFydGlhbGx5LW92ZXJ3cml0dGVuCgltdWx0aS13b3JkIHJlZ2lzdGVycy4KCjIwMDAtMDgtMDggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKGNvbWJpbmVfc3RyaW5ncywgY2hlY2tfZm9ybWF0X2luZm8pOiBSZWZlciB0byBJU08gQwoJb3IgSVNPIEM4OSBpbnN0ZWFkIG9mIEFOU0kgQy4KCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yLCB4cmVmX3RhZywgZmluaXNoX3N0cnVjdCwKCWJ1aWxkX2VudW1lcmF0b3IsIGRvX2Nhc2UpOiBMaWtld2lzZS4KCSogYy1sZXguYyAocGFyc2VfZmxvYXQsIHl5bGV4KTogTGlrZXdpc2UuCgkqIGMtcGFyc2UuaW46IExpa2V3aXNlLgoJKiBjLXR5cGVjay5jIChjb21tb25fdHlwZSwgYnVpbGRfYXJyYXlfcmVmLCBidWlsZF9iaW5hcnlfb3AsCglidWlsZF91bmFyeV9vcCwgcGVkYW50aWNfbHZhbHVlX3dhcm5pbmcsIGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIsCglidWlsZF9jX2Nhc3QsIGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQsIHNldF9pbml0X2luZGV4LAoJc2V0X2luaXRfbGFiZWwsIGNfZXhwYW5kX3N0YXJ0X2Nhc2UpOiBMaWtld2lzZS4KCSogdG9wbGV2LmMgKGRvY3VtZW50ZWRfbGFuZ19vcHRpb25zLCBkaXNwbGF5X2hlbHApOiBMaWtld2lzZS4KCjIwMDAtMDgtMDggIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaDgzMDAuYzogRml4IGZvcm1hdHRpbmcuCgkqIGg4MzAwLmg6IExpa2V3aXNlLgoJKiBoODMwMC5tZDogTGlrZXdpc2UuCgkobW92c2lfaDgzMDBocyk6IEZpeCBmb3JtYXR0aW5nIG9mIHRoZSByZXN1bHRpbmcgYXNzZW1ibHkgY29kZS4KCgkqIHJlbG9hZDEuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTA4LTA4ICBSb2RuZXkgQnJvd24gIDxSb2RuZXlCcm93bkBteW5kLmNvbT4KCgkqIGFscGhhL2FscGhhLmMgKGFscGhhX2VtaXRfeGZsb2F0aW5nX2xpYmNhbGwpOgoJVXNlIEdFTl9DQUxMX1ZBTFVFIGRlZmluZS4KCSogYWxwaGEvYWxwaGEubWQgKHVudHlwZWRfY2FsbCk6IFVzZSBHRU5fQ0FMTCBkZWZpbmUuCgkqIGNsaXBwZXIvY2xpcHBlci5tZCAodW50eXBlZF9jYWxsKTogTGlrZXdpc2UuCgkqIGRzcDE2eHgvZHNwMTZ4eC5tZCAodW50eXBlZF9jYWxsKTogTGlrZXdpc2UuCgkqIGZ4ODAvZng4MC5tZCAodW50eXBlZF9jYWxsKTogTGlrZXdpc2UuCgkqIG1pcHMvbWlwcy5tZCAodW50eXBlZF9jYWxsKTogTGlrZXdpc2UuCgkqIG5zMzJrL25zMzJrLm1kICh1bnR5cGVkX2NhbGwpOiBMaWtld2lzZS4KCSogcGEvcGEubWQgKHVudHlwZWRfY2FsbCk6IExpa2V3aXNlLgoJKiByb21wL3JvbXAubWQgKHVudHlwZWRfY2FsbCk6IExpa2V3aXNlLgoJKiBzcGFyYy9zcGFyYy5tZCAodW50eXBlZF9jYWxsKTogTGlrZXdpc2UuCgoyMDAwLTA4LTA4ICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogY29uZmlnL2k4NjAvaTg2MC5jIChzaW5nbGVtb3ZlX3N0cmluZyk6IERvIG5vdCBnZW5lcmF0ZSBhc3NlbWJsZXIKCXBzZXVkbyBpbnN0cnVjdGlvbnMgdGhhdCBtdXN0IGJlIGV4cGFuZGVkICh0aGF0IGlzLCB3aXRoIHNpZ25lZAoJY29uc3RhbnRzIGxhcmdlciB0aGFuIDE2IGJpdHMpLgoKMjAwMC0wOC0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAobGlmZV9hbmFseXNpcyk6IE9ubHkgdHVybiBvZmYgUFJPUF9MT0dfTElOS1MgYW5kCglQUk9QX0FVVE9JTkMgYXQgLU8wLiAgRG9uJ3QgY29sbGVjdCBhbGlhcyBpbmZvIGF0IC1PMC4KCShpbml0X3Byb3BhZ2F0ZV9ibG9ja19pbmZvKTogRG9uJ3Qga2lsbCBtZW1vcnkgc3RvcmVzIGF0IC1PMC4KCShtYXJrX3NldF8xLCBtYXJrX3VzZWRfcmVncyk6IExpa2V3aXNlLgoKMjAwMC0wOC0wOCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogcnM2MDAwLmMgKG9wdGltaXphdGlvbl9vcHRpb25zKTogRGVjb3JhdGUgJ2xldmVsJyBhcwoJQVRUUklCVVRFX1VOVVNFRC4KCShtYXNrNjRfb3BlcmFuZCk6IFJlbW92ZSBzaWduLWV4dGVuZCB0aGlua28uCgkocmxkaWNfb3BlcmFuZCk6IE5ldyBmdW5jdGlvbi4KCShsb2FkX211bHRpcGxlX29wZXJhdGlvbik6IHJlZ25vJ3MgYXJlIHVuc2lnbmVkIGludHMuCgkoc3RvcmVfbXVsdGlwbGVfb3BlcmF0aW9uKTogTGlrZXdpc2UuCgkobG13X29wZXJhdGlvbik6IExpa2V3aXNlLgoJKHN0bXdfb3BlcmF0aW9uKTogTGlrZXdpc2UuCgkoaW5jbHVkZXNfbHNoaWZ0X3ApOiBzaGlmdF9tYXNrIGlzIHVuc2lnbmVkIGludC4KCShpbmNsdWRlc19sc2hpZnQ2NF9wKTogTmV3IGZ1bmN0aW9uLgoJKGFkZHJzX29rX2Zvcl9xdWFkX3BlZXApOiB1bnNpZ25lZCBpbnQgcmVnMS4KCShwcmludF9vcGVyYW5kKTogQ29uc2lzdGVudGx5IGFkZCAiZWxzZSIgYWZ0ZXIKCW91dHB1dF9vcGVyYW5kX2xvc3NhZ2UoKS4KCShwcmludF9vcGVyYW5kLCBjYXNlICdiJyk6IEZvbGQgaW4gY2FzZSAnVycuCgkocHJpbnRfb3BlcmFuZCwgY2FzZSAnVycpOiBQcmludCBybGRpYyBNQiB2YWx1ZS4KCShvdXRwdXRfZXBpbG9ndWUpOiBVcGRhdGUgT2JqZWN0aXZlLUMgbGFuZ3VhZ2Ugc3RyaW5nLgoJKG91dHB1dF90b2MpOiB1bnNpZ25lZCBIT1NUX1dJREVfSU5UIGxvdywgY29tcGFyZSB1bnNpZ25lZC4KCSogcnM2MDAwLmggKFBSRURJQ0FURV9DT0RFUyk6IEFkZCBybGRpY19vcGVyYW5kLgoJKiByczYwMDAubWQgKGFzaGxkaTMpOiBBZGQgcmxkaWMgaW5zdHJ1Y3Rpb24uCgkoaW9yZGkzLCB4b3JkaTMpOiBSZW1vdmUgcmVkdW5kYW50ICJlbHNlIGlmIENPTlNUX0RPVUJMRSIuCgkoY21wc2lfaW50ZXJuYWwyLCBjbXBkaV9pbnRlcmFsMik6IFVzZSAnYicgb3V0cHV0IHRlbXBsYXRlCgltb2RpZmllci4KCjIwMDAtMDgtMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oOiBSZW1vdmUgZHVwbGljYXRlcy4gIFVwZGF0ZQoJZm9yIG1hc3NpdmUgY29kZSByZWFycmFuZ2VtZW50cy4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2FycGZzX3JlZ25vKTogUmVtb3ZlLgoJKGlhNjRfcnBfcmVnbm8sIGlhNjRfZnBfcmVnbm8sIGlhNjRfaW5wdXRfcmVncyk6IFJlbW92ZS4KCShpYTY0X2xvY2FsX3JlZ3MsIGlhNjRfbmVlZF9yZWdzdGspOiBSZW1vdmUuCgkoYXJfY2N2X3JlZ19vcGVyYW5kKTogTmV3LgoJKGlhNjRfZ3Bfc2F2ZV9yZWcpOiBOZXcuCgkoc3RydWN0IGlhNjRfZnJhbWVfaW5mbyk6IENvbWJpbmUgbW9zdCBvZiB0aGUgc2l6ZSBlbGVtZW50czsKCWFkZCBuZXcgZ3Igc2F2ZSBlbGVtZW50cy4KCShmaW5kX2dyX3NwaWxsKTogTmV3LgoJKG5leHRfc2NyYXRjaF9ncl9yZWcpOiBOZXcuCgkobWFya19yZWdfZ3JfdXNlZF9tYXNrKTogTmV3LgoJKGlhNjRfY29tcHV0ZV9mcmFtZV9zaXplKTogUmV3cml0ZS4gIEFsbG9jYXRlIHNwZWNpYWwgQVIgcmVncwoJdG8gR1IgYmFja2luZyBzdG9yZSByZWdzIHdoZW4gcG9zc2libGUuCgkoaWE2NF9pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6IE5ldy4KCShpYTY0X3JhcF9mcF9vZmZzZXQpOiBSZW1vdmUuCgkoc2F2ZV9yZXN0b3JlX2luc25zKTogUmVtb3ZlLgoJKHNldHVwX3NwaWxsX3BvaW50ZXJzKTogTmV3LgoJKGZpbmlzaF9zcGlsbF9wb2ludGVycyk6IE5ldy4KCShzcGlsbF9yZXN0b3JlX21lbSk6IE5ldy4KCShkb19zcGlsbCwgZG9fcmVzdG9yZSk6IE5ldy4KCShpYTY0X2V4cGFuZF9wcm9sb2d1ZSk6IFJld3JpdGUgdG8gdXNlIHRoZW0uCgkoaWE2NF9leHBhbmRfZXBpbG9ndWUpOiBMaWtld2lzZS4KCShpYTY0X2RpcmVjdF9yZXR1cm4pOiBVcGRhdGUgZm9yIGN1cnJlbnRfZnJhbWVfaW5mbyBjaGFuZ2VzLgoJKGlhNjRfZnVuY3Rpb25fcHJvbG9ndWUpOiBTaW1wbGlmeSAucHJvbG9ndWUgZW1pc3Npb24uICBFbWl0Cgkuc3BpbGwgd2hlbiBuZWVkZWQuCgkoaWE2NF9zZXR1cF9pbmNvbWluZ192YXJhcmdzKTogRG9uJ3QgZXZlciBlbWl0IHJ0bC4KCShpYTY0X2RieF9yZWdpc3Rlcl9udW1iZXIpOiBOZXcuCgkoaWE2NF9pbml0aWFsaXplX3RyYW1wb2xpbmUpOiBOZXcuCgkoaWE2NF9zZWNvbmRhcnlfcmVsb2FkX2NsYXNzKTogUmVxdWVzdCBHUl9SRUdTIGZvciBpbnRlZ2VyCglhcml0aG1ldGljIGRlc3RpbmVkIGZvciBGUl9SRUdTLgoJKGlhNjRfaW5pdF9tYWNoaW5lX3N0YXR1cyk6IERvbid0IHJlc2V0IHJldHVybl9hZGRyZXNzX3BvaW50ZXJfcnR4LgoJKGlhNjRfbWFya19tYWNoaW5lX3N0YXR1cyk6IE1hcmsgaWE2NF9ncF9zYXZlLgoJKHJ3c19hY2Nlc3NfcmVnbm8pOiBSZW5hbWUgZnJvbSByd3NfYWNjZXNzX3JlZzsgZG9uJ3QgdHJlYXQKCXByZWRpY2F0ZXMgc3BlY2lhbGx5LgoJKHJ3c19hY2Nlc3NfcmVnKTogTmV3LiAgVXBkYXRlIGFsbCBjYWxsZXJzLgoJKHJ0eF9uZWVkc19iYXJyaWVyKTogUmVtb3ZlIGRlYWQgdW5zcGVjcy4KCShpYTY0X2VwaWxvZ3VlX3VzZXMpOiBNYXJrIGFyLnBmcyBhbmQgYXIudW5hdCBsaXZlIG9uIGV4aXQuCgkoaWE2NF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogU2lsZW5jZSBzaWduZWQvdW5zaWduZWQgd2FybmluZ3MuCgkoc3BpbGxfb2Zmc2V0LCBzcF9vZmZzZXQsIHNwaWxsX29mZnNldF9lbWl0dGVkKTogUmVtb3ZlLgoJKHRtcF9yZWcsIHRtcF9zYXZlZCk6IFJlbW92ZS4KCShwcm9jZXNzX3NldCk6IFJld3JpdGUgdG8gZXhwZWN0IGNvbXBsaWNhdGVkIGJpdHMgdmlhCglSRUdfRlJBTUVfUkVMQVRFRF9FWFBSLgoJKGlhNjRfZXhwYW5kX2ZldGNoX2FuZF9vcCk6IFVzZSBlbWl0X21vdmVfaW5zbjsgYmUgZXhwbGljaXQKCWluIHRoZSB1c2Ugb2YgYXIuY2N2OyBuZXZlciBzZXQgUlRYX1VOQ0hBTkdJTkdfUC4KCShpYTY0X2V4cGFuZF9vcF9hbmRfZmV0Y2gpOiBMaWtld2lzZS4KCShpYTY0X2V4cGFuZF9jb21wYXJlX2FuZF9zd2FwKTogTGlrZXdpc2UuCgkoaWE2NF9leHBhbmRfYnVpbHRpbik6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEFSX1VOQVRfUkVHTlVNKTogTmV3LgoJKEZJUlNUX1BTRVVET19SRUdJU1RFUik6IFVwZGF0ZS4KCShBUl9NX1JFR05PX1ApOiBVcGRhdGUuCgkoRklYRURfUkVHUyk6IERvbid0IG1hcmsgdGhyZWUgbG9jYWwgcmVnaXN0ZXJzIGFzIHVzZWQuCgkoRVhUUkFfQ0NfTU9ERVMpOiBOZXcuCgkoU0VMRUNUX0NDX01PREUpOiBOZXcuCgkoSEFSRF9SRUdOT19OUkVHUyk6IEFsbG93IERJbW9kZSBpbiBwMDsgaGFuZGxlIENDSW1vZGUuCgkoSEFSRF9SRUdOT19NT0RFX09LKTogRGlzYWxsb3cgQ0NJbW9kZSBmcm9tIG5vbi1wcmVkaWNhdGVzLgoJKEZSQU1FX0dST1dTX0RPV05XQVJEKTogVW5zZXQuCgkoU1RBUlRJTkdfRlJBTUVfT0ZGU0VUKTogWmVyby4KCShFTElNSU5BQkxFX1JFR1MpOiBFbGltaW5hdGUgZnJvbSB0aGUgc29mdCB0byBoYXJkIGZyYW1lIHBvaW50ZXIuCgkoSU5JVElBTF9FTElNSU5BVElPTl9PRkZTRVQpOiBEZWZlciB0byBvdXQgb2YgbGluZSBmdW5jdGlvbi4KCShIQVJEX0ZSQU1FX1BPSU5URVJfUkVHTlVNKTogTmV3LgoJKENBTl9ERUJVR19XSVRIT1VUX0ZQKTogRGVmaW5lLgoJKFRSQU1QT0xJTkVfVEVNUExBVEUpOiBSZW1vdmUuCgkoVFJBTVBPTElORV9TSVpFKTogTG93ZXIgdG8gMzIuCgkoVFJBTVBPTElORV9BTElHTk1FTlQpOiBMb3dlciB0byA2NC4KCShJTklUSUFMSVpFX1RSQU1QT0xJTkUpOiBEZWZlciB0byBvdXQgb2YgbGluZSBmdW5jdGlvbi4KCShQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUuCgkoc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24pOiBBZGQgaWE2NF9ncF9zYXZlLgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kOiBQdXJnZSB1bnVzZWQgdW5zcGVjcy4KCShtb3ZzaSBwYXR0ZXJucyk6IEFsbG93IG1vdmVzIHRvL2Zyb20gQVJfTV9SRUdTLgoJKG1vdmRpIHBhdHRlcm5zKTogQWxsb3cgbW92ZXMgdG8vZnJvbSBwMC4KCShjYWxsIHBhdHRlcm5zKTogTW92ZSBtb3N0IHNldGptcCBoYWNrZXJ5IHRvIGlhNjRfZ3Bfc2F2ZV9yZWcuCgkoZ3Jfc3BpbGwsIGdyX3Jlc3RvcmUpOiBJbmRpY2F0ZSBhci51bmF0IHJlYWQvd3JpdHRlbi4KCShub25sb2NhbF9nb3RvKTogRG9uJ3QgcGFzcyBvbGQgZnJhbWVfcG9pbnRlci4KCShub25sb2NhbF9nb3RvX3JlY2VpdmVyKTogUmVtb3ZlLgoJKGV4Y2VwdGlvbl9yZWNlaXZlcik6IE5ldy4KCShidWlsdGluX3NldGptcF9zZXR1cCk6IE5ldy4KCShidWlsdGluX3NldGptcF9yZWNlaXZlcik6IE5ldy4KCSogY29uZmlnL2lhNjQvbGliMWZ1bmNzLmFzbSAoX19pYTY0X3NhdmVfc3RhY2tfbm9ubG9jYWwpOiBCdW5kbGUuCgkoX19pYTY0X25vbmxvY2FsX2dvdG8pOiBCdW5kbGUuICBEb24ndCBraWxsIHI3LgoJKF9faWE2NF9yZXN0b3JlX3N0YWNrX25vbmxvY2FsKTogTGlrZXdpc2UuCgkoX19pYTY0X3RyYW1wb2xpbmUpOiBOZXcuCgkqIGNvbmZpZy9pYTY0L3N5c3Y0LmggKERCWF9SRUdJU1RFUl9OVU1CRVIpOiBEZWZlciB0byBvdXQgb2YgbGluZQoJZnVuY3Rpb24uCgkqIGNvbmZpZy9pYTY0L3QtaWE2NCAoTElCMUFTTUZVTkNTKTogQWRkIF9fdHJhbXBvbGluZS4KCjIwMDAtMDgtMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBmcmFtZS5oIChpYTY0X2ZyYW1lX3N0YXRlKTogQWRkIG15X3BzcC4KCSogbGliZ2NjMi5jIChpYTY0X3Rocm93X2hlbHBlcik6IEFkZCB0aHJvd19zcCBhcmd1bWVudC4KCShfX3Rocm93KTogUGFzcyBpdCBpbi4gIERvbid0IGNsb2JiZXIgcjcuCgkqIGNvbmZpZy9pYTY0L2ZyYW1lLWlhNjQuYyAoaW5pdF9pYTY0X3JlZ19sb2MpOiBNYXJrIGlubGluZS4KCShleGVjdXRlX29uZV9pYTY0X2Rlc2NyaXB0b3IpIFttZW1fc3RhY2tfdl06IFNldHMgcHNwLndoZW4KCWFuZCBub3RoaW5nIHRvIGRvIHdpdGggc3AuCgkobm9ybWFsaXplX3JlZ19sb2MpOiBVc2UgZnJhbWUtPm15X3BzcC4KCShmcmFtZV90cmFuc2xhdGUpOiBIYW5kbGUgZnJhbWUtcG9pbnRlci1sZXNzIGZ1bmN0aW9ucy4gIFNldAoJc3BpbGxfYmFzZSBjb3JyZWN0bHksIGluIGFic2VuY2Ugb2YgYmVpbmcgdG9sZC4KCShfX2J1aWxkX2lhNjRfZnJhbWVfc3RhdGUpOiBOZXcgc3AgYXJndW1lbnQuICBGaWxsIGluIGZyYW1lLT5teV9zcC4KCShfX2lhNjRfYmFja3RyYWNlX2hlbHBlcik6IE5ldyBzcCBhcmd1bWVudC4gIFVzZQoJYnVpbHRpbl9yZXR1cm5fYWRkcmVzcyBpbnN0ZWFkIG9mIGxhYmVsIGFkZHJlc3Nlcy4KCShwcmludF9yZWNvcmQpIFttZW1fc3RhY2tfdl06IE5vIHNpemUgbWVtYmVyLgoKMjAwMC0wOC0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJlZ2NsYXNzLmMgKGNob29zZV9oYXJkX3JlZ19tb2RlKTogSXRlcmF0ZSBvdmVyIGFsbCBDQyBtb2Rlcy4KCjIwMDAtMDgtMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiB0bS50ZXhpIChMT0NBTF9SRUdOTyk6IERvY3VtZW50LgoJKiBmbG93LmMgKExPQ0FMX1JFR05PLCBFUElMT0dVRV9VU0VTKTogUHJvdmlkZSBkZWZhdWx0LgoJKG1hcmtfcmVnc19saXZlX2F0X2VuZCk6IERvbid0IG1hcmsgTE9DQUxfUkVHTk8gcmVnaXN0ZXJzLgoJKiByZWxvYWQxLmMgKHJlbG9hZCk6IExpa2V3aXNlIHdoZW4gY29uc2lkZXJpbmcgbm9ubG9jYWwgbGFiZWxzLgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChMT0NBTF9SRUdOTyk6IE5ldy4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmggKExPQ0FMX1JFR05PKTogTmV3LgoKMjAwMC0wOC0wOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1sZXguYyAoeXlsZXgpOiBEb24ndCBhbGxvdyBpbnRlZ2VyIHN1ZmZpeGVzICdMVUwnLCAnTGwnLCAnbEwnLgoKMjAwMC0wOC0wNyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYzogRml4IGNvbXBpbGUgdGltZSB3YXJuaW5nIG1lc3NhZ2VzLgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oOiBBZGQgcHJvdG90eXBlIGZvciBlcXVhbGl0eV9vcC4KCgkqIG1uMTAzMDAuaCAoVEFSR0VUX1NXSVRDSEVTKTogRG9jdW1lbnQgYC1tYW0zMycuCgoyMDAwLTA4LTA3ICBHcmFoYW0gU3RvdHQgIDxncmFoYW1zQGN5Z251cy5jby51az4KCgkqIG1uMTAzMDAubWQ6IFVzZSBub25pbW1lZGlhdGVfb3BlcmFuZCBpbnN0ZWFkIG9mIGdlbmVyYWxfb3BlcmFuZAoJb24gb3V0cHV0IG9wZXJhbmRzLgoKCSogbW4xMDMwMC5oIChQUkVGRVJSRURfUkVMT0FEX0NMQVNTKTogTGltaXQgbWVtb3J5IHJlbG9hZHMuCgoyMDAwLTA4LTA3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIHNoLmggKEVYVFJBX0NPTlNUUkFJTlRfUSk6IEFkanVzdCB0byBHTlUgQ29kaW5nIFN0YW5kYXJkcy4KCSogc2guYyAoZXhwYW5kX2Jsb2NrX21vdmUpOiBCcmVhayBsb25nIGxpbmVzLgoJKGV4cGFuZF9hc2hpZnRydCwgZnBzY3Jfc2V0X2Zyb21fbWVtKTogTGlrZXdpc2UuCgkqIHNoLm1kIChtdWxzaTMpOiBMaWtld2lzZS4KCShtb3ZkaSk6IEFkanVzdCBzcGFjaW5nLgoKMjAwMC0wOC0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGV4cG1lZC5jIChzdG9yZV9iaXRfZmllbGQpOiBEb24ndCByZXF1aXJlIE1FTV9JTl9TVFJVQ1RfUC4KCSogZXhwci5jIChlbWl0X2dyb3VwX3N0b3JlKTogRG9uJ3Qgc2V0IGl0LgoKMjAwMC0wOC0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBpbnZva2UudGV4aSAoT3B0aW9ucyBmb3IgRGVidWdnaW5nIFlvdXIgUHJvZ3JhbSBvciBHQ0MpOiBSZW1vdmUKCWR1cGxpY2F0ZSBlbnRyaWVzIGZvciAndycgYW5kICd6Jy4KCgkqIGZsb3cuYzogRml4IGEgY29tbWVudCB0eXBvLgoKU3VuIEF1ZyAgNiAyMzo0NzozNSAyMDAwICBPdmlkaXUgUHJlZGVzY3UgIDxvdmlkaXVAY3VwLmhwLmNvbT4KCgkqIGMtcGFyc2UuaW46IENoYW5nZWQgdGhlIGxhbmd1YWdlIHN0cmluZyBmb3IgT2JqZWN0aXZlLUMgdG8gIkdOVQoJT2JqZWN0aXZlLUMiLgoKU3VuIEF1ZyAgNiAxMTo1NDowMyAyMDAwICBPdmlkaXUgUHJlZGVzY3UgIDxvdmlkaXVAY3VwLmhwLmNvbT4KCgkqIGd0aHItcG9zaXguaDogSW50ZWdyYXRlZCBDaHJpcyBCYWxsJ3MgPGNiYWxsQGZtY28uY29tPiBjaGFuZ2VzCgl0byBpbXByb3ZlIHRoZSBQb3NpeCB0aHJlYWQgc3VwcG9ydCBmb3IgT2JqZWN0aXZlLUMuCgoyMDAwLTA4LTA2ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5oIChlbnVtIGNfdHJlZV9pbmRleCk6IEFkZCBDVElfU0lHTkVEX1NJWkVfVFlQRSBhbmQKCUNUSV9VTlNJR05FRF9QVFJESUZGX1RZUEUuCgkoc2lnbmVkX3NpemVfdHlwZV9ub2RlKTogRGVmaW5lLgoJKHVuc2lnbmVkX3B0cmRpZmZfdHlwZV9ub2RlKTogRGVmaW5lLgoJKiBjLWRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDcmVhdGUgdGhlCglzaWduZWRfc2l6ZV90eXBlX25vZGUgYW5kIHVuc2lnbmVkX3B0cmRpZmZfdHlwZV9ub2RlIHR5cGVzLgoJKiBjLWNvbW1vbi5jIChUX1NDKTogRGVmaW5lLgoJKFRfU1NUKTogRGVmaW5lLgoJKFRfVVBEKTogRGVmaW5lLgoJKHByaW50X2NoYXJfdGFibGUpOiBVc2UgVF9TU1QgZm9yICV6ZCwgJXppLCAlem4uICBVc2UgVF9VUEQgZm9yCgkldG8sICV0dSwgJXR4LCAldFguICBBbGxvdyAlaGhuIChUX1NDKS4gIEFkZCAiYyIgdG8gdGhlIGZsYWdzIGZvcgoJJXMgYW5kICVwLgoJKHNjYW5fY2hhcl90YWJsZSk6IFVzZSBUX1NDIGZvciAlaGhkLCAlaGhpLCAlaGhuLiAgVXNlIFRfU1NUIGZvcgoJJXpkLCAlemksICV6bi4gIFVzZSBUX1VQRCBmb3IgJXRvLCAldHUsICV0eCwgJXRYLiAgQWRkICJjIiB0byB0aGUKCWZsYWdzIGZvciAlYywgJXMgYW5kICVbLgoJKGNoZWNrX2Zvcm1hdF9pbmZvKTogT25seSBhbGxvdyBsZW5pZW5jeSBmb3Igc2lnbmVkbmVzcyBvZiB0YXJnZXRzCglvZiBjaGFyYWN0ZXIgcG9pbnRlcnMgKHdoZW4gcGVkYW50aWMpIGZvciBmb3JtYXRzIGZsYWdnZWQgd2l0aAoJImMiLCBzbyBmb3Igc3RyaW5ncyBidXQgbm90IGZvciAlaGggZm9ybWF0cy4gIFdoZW4gcGVkYW50aWMsIGRvbid0CglhbGxvdyBjaGFyYWN0ZXIgcG9pbnRlcnMgdG8gc3Vic3RpdHV0ZSBmb3Igdm9pZCBwb2ludGVycyBpZiBhCglzZWNvbmQgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gaXMgcHJlc2VudC4KCjIwMDAtMDgtMDYgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaW52b2tlLnRleGkgKE9wdGlvbnMgZm9yIERlYnVnZ2luZyBZb3VyIFByb2dyYW0gb3IgR0NDKTogVXBkYXRlCgl0aGUgbmFtZXMgb2YgZHVtcCBmaWxlcy4KCgkqIGg4MzAwLmMgKGRvc2l6ZSk6IFJlYXJyYW5nZSBjb2RlIGZvciBjb25jaXNlbmVzcy4KCShzcGxpdF9hZGRzX3N1YnMpOiBMaWtld2lzZS4KCgkqIGxvb3AuYzogRml4IGZvcm1hdHRpbmcuCgoJKiBkd2FyZjJvdXQuYzogRml4IGZvcm1hdHRpbmcuCgoJKiB0bS50ZXhpIChGVU5DVElPTl9BUkdfUEFSVElBTF9OUkVHUyk6IEZpeCBhIHR5cG8uCgoJKiBleHByLmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wOC0wNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcnM2MDAwLmMgKHJzNjAwMF9tYXliZV9kZWFkKTogUHJvdG90eXBlLgoKMjAwMC0wOC0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHN0bXQuYyAoZXhwYW5kX2dvdG8pOiBEbyB2aXJ0dWFsX3N0YWNrX3ZhcnNfcnR4IHJlcGxhY2VtZW50IGZvcgoJSEFWRV9ub25sb2NhbF9nb3RvIGFzIHdlbGwuCgkqIGNvbmZpZy9pOTYwL2k5NjAubWQgKG5vbmxvY2FsX2dvdG8pOiBEb24ndCBkbyBpdCBoZXJlLgoJKiBjb25maWcvcGovcGoubWQgKG5vbmxvY2FsX2dvdG8pOiBMaWtld2lzZS4KCjIwMDAtMDgtMDcgIE1pY2hhZWwgSGF5ZXMgIDxtaGF5ZXNAY3lnbnVzLmNvbT4KCgkqIGxvb3AuYyAodHJ5X3N3YXBfY29weV9wcm9wKTogTmV3IGZ1bmN0aW9uLgoJKGxvYWRfbWVtcyk6IFJlbmFtZSBjb3BpZXMgdG8gbG9hZF9jb3BpZXMgYW5kIGFkZCBuZXcgcmVnc2V0CglzdG9yZV9jb3BpZXMuICBDaGVjayBmb3Igc2V0cyBvZiBzaGFkb3cgcmVnaXN0ZXJzIGFuZCBtYXJrCglpbiBzdG9yZV9jb3BpZXMuICAgQ2FsbCB0cnlfc3dhcF9jb3B5X3Byb3AgZm9yIHJlZ2lzdGVycwoJbWFya2VkIGluIHN0b3JlX2NvcGllcy4KClN1biBBdWcgIDYgMDA6NTQ6NDIgMjAwMCAgT3ZpZGl1IFByZWRlc2N1ICA8b3ZpZGl1QGN1cC5ocC5jb20+CgoJKiBvYmpjL29iamMtYWN0LmM6IE5ldyBjb21tYW5kIGxpbmUgb3B0aW9uIC1mY29uc3RhbnQtc3RyaW5nLWNsYXNzCgl0byBhbGxvdyBzcGVjaWZ5aW5nIGEgdXNlciBkZWZpbmVkIGNvbnN0YW50IHN0cmluZyBjbGFzcywKCWRpZmZlcmVudCBmcm9tIE5YQ29uc3RhbnRTdHJpbmcuCgoJKiB0b3BsZXYuYzogTW92ZWQgdGhlIE9iamVjdGl2ZS1DIHNwZWNpZmljIG9wdGlvbnMgdG8KCW9iamMvbGFuZy1vcHRpb25zLmguCgoJKiBvYmpjL2xhbmctb3B0aW9ucy5oOiBNb3ZlZCB0aGUgT2JqZWN0aXZlLUMgc3BlY2lmaWMgb3B0aW9ucyBmcm9tCgl0b3BsZXYuYy4gQWRkZWQgLWZjb25zdGFudC1zdHJpbmctY2xhc3MuCgoyMDAwLTA4LTA1ICBDaHJpcyBEZW1ldHJpb3UgIDxjZ2RAc2lieXRlLmNvbT4KCgkqIG1pcHMvZWxmLmggKENUT1JfTElTVF9CRUdJTiwgQ1RPUl9MSVNUX0VORCwKCURUT1JfTElTVF9CRUdJTiwgRFRPUl9MSVNUX0VORCk6IGNoYW5nZSB0eXBlIG9mCglfX0NUT1JfTElTVF9fIGZyb20gZnVuY19wdHIgYXJyYXkgdG8ganVzdCBmdW5jX3B0ciwgdG8KCWF2b2lkIGV4dHJhIGFsaWdubWVudCBpbXBvc2VkIG9uIGFycmF5cy4KCSogbWlwcy9lbGY2NC5oIChDVE9SX0xJU1RfQkVHSU4sIENUT1JfTElTVF9FTkQsCglEVE9SX0xJU1RfQkVHSU4sIERUT1JfTElTVF9FTkQpOiBMaWtld2lzZS4KCgkqIG1pcHMuaDogQ2xlYW4gdXAgY29tbWVudHMgYW5kIHNwYWNpbmcgbmVhciBNQVNLcy4KCShUQVJHRVRfVU5JWF9BU00pOiBEZWxldGUuCgkoTUFTS19NSVBTMTYsIE1BU0tfTk9fQ0hFQ0tfWkVST19ESVYsIE1BU0tfQ0hFQ0tfUkFOR0VfRElWLAoJTUFTS19VTklOSVRfQ09OU1RfSU5fUk9EQVRBKTogQ2hhbmdlIHZhbHVlcyB0byBtYWtlIG1hc2sKCXZhbHVlcyBjb250aWd1b3VzLgoKMjAwMC0wOC0wNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAocHJpbnRfY2hhcl90YWJsZSk6IEFkZCBlbnRyaWVzIGZvciB0aGUgWC9PcGVuICcKCWZvcm1hdCBmbGFnIChwcmludCBkZWNpbWFscyB3aXRoIGxvY2FsZSdzIHRob3VzYW5kcyBncm91cGluZwoJY2hhcmFjdGVyKS4gIE1ha2UgJUMgZXhwZWN0IHdpbnRfdC4KCShjaGVja19mb3JtYXRfaW5mbyk6IElmIHBlZGFudGljLCB3YXJuIHdoZW4gdGhlICVuJCBvcGVyYW5kCgludW1iZXIgZm9ybSBpcyB1c2VkLiAgQWxsb3cgZm9yIHRoZSAnIGZsYWc7IHdhcm4gYWJvdXQgaXQgaWYKCXBlZGFudGljLgoKMjAwMC0wOC0wNSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogaTM4Ni5oIChGVU5DVElPTl9PS19GT1JfU0lCQ0FMTCk6ICBOb3QgT0sgaWYgREVDTCdzIHJldHVybgoJdHlwZSBpcyBhIGZsb2F0IG1vZGUsIGNmdW4tPmRlY2wncyByZXR1cm4gdHlwZSBpcyBub3QsIGFuZAoJVEFSR0VUX0ZMT0FUX1JFVFVSTlNfSU5fODAzODcuCgoyMDAwLTA4LTA0ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogY3BwbWFpbi5jIChjYl9kZWZfcHJhZ21hKTogU2tpcCB0aGUgZmlyc3QgdHdvIHRva2VucyBmcm9tIHRoZQoJdG9rZW4gbGlzdCwgd2hpY2ggYXJlIGFsd2F5cyBgIycgYW5kIGBwcmFnbWEnLgoKMjAwMC0wOC0wNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogdHJlZS5jICh0cmVlX2V4cHJfbm9ubmVnYXRpdmVfcCk6IE1vdmUgdG8uLi4KCSogZm9sZC1jb25zdC5jOiAuLi4gaGVyZS4gIEFsc28gaGFuZGxlIEJJTkRfRVhQUiBhbmQgUlRMX0VYUFIuCgkocnRsX2V4cHJfbm9ubmVnYXRpdmVfcCk6IE5ldy4KCSogdHJlZS5oOiBBZGQgcHJvdG90eXBlIGZvciBydGxfZXhwcl9ub25uZWdhdGl2ZV9wLgoKCSogcmVhbC5oIChDT05TVF9ET1VCTEVfTE9XLCBDT05TVF9ET1VCTEVfSElHSCwgQ09OU1RfRE9VQkxFX01FTSwKCUNPTlNUX0RPVUJMRV9DSEFJTjogTW92ZSB0by4uLgoJKiBydGwuaDogLi4uaGVyZS4gIFVzZSBYQ0lOVC9YQ0VYUC4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgdG9wbGV2Lm8gZnJvbSBPQkpTLiAgQWRkIHJ1bGUgdG8gbWFrZQoJbGliYmFja2VuZC5hOyBhZGQgbGliYmFja2VuZC5hIHRvIFNUQUdFU1RVRkYuICBBZGQgQkFDS0VORAoJdmFyaWFibGUuICBVc2UgQkFDS0VORCB3aGVuIGxpbmtpbmcgY2MxLCBub3QgT0JKUy4gIEFkZCBCQUNLRU5ECgl0byBWT0xfRklMRVMuCgoJKiBvYmpjL01ha2UtbGFuZy5pbiAoY2Mxb2JqKTogTGluayB3aXRoICQoQkFDS0VORCkuCgoyMDAwLTA4LTA1ICBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogY29uZmlnL2M0eC9jNHgubWQgKHJldHVybl9pbmRpcmVjdF9pbnRlcm5hbCk6IE5ldy4KCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X2V4cGFuZF9lcGlsb2d1ZSk6IFVzZSBpdC4KCjIwMDAtMDgtMDQgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGMtY29tbW9uLmMgKHRpbWVfY2hhcl90YWJsZSk6IE1hcmsgdXAgZm9ybWF0cyBhZGRlZCBpbiBDOTkgYW5kCgltYWtlIG90aGVyIGNvcnJlY3Rpb25zLiAgJUQgYW5kICVnIHdlcmUgYWRkZWQgaW4gQzk5LiAgJU9nIGlzIGFuCglleHRlbnNpb24uICAlRVggaXMgcGVybWl0dGVkLiAgJVIsICVULCAlbiwgJXIsICV0IHdlcmUgYWRkZWQgaW4KCUM5OS4gICVlIHdhcyBhZGRlZCBpbiBDOTkuICAlT2ogaXMgYW4gZXh0ZW5zaW9uLiAgJUcgYW5kICV6IGFyZSBpbgoJQzk5IHJhdGhlciB0aGFuIEdOVSBleHRlbnNpb25zLCBidXQgJU9HIGFuZCAlT3ogYXJlIGV4dGVuc2lvbnMuCgklaCB3YXMgYWRkZWQgaW4gQzk5LiAgJUMgd2FzIGFkZGVkIGluIEM5OS4gICVPWSBhbmQgJU9DIGFyZQoJZXh0ZW5zaW9ucy4gIEFkZCB0aGUgQzk5IGZvcm1hdCAlRi4KCShjaGVja19mb3JtYXRfaW5mbyk6IElmIHBlZGFudGljIGFuZCBub3QgaW4gQzk5IG1vZGUsIHdhcm4gZm9yIEM5OQoJZm9ybWF0cywgJUUgYW5kICVPLgoKRnJpIEF1ZyAgNCAyMzowMTo1OCAyMDAwICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBmdW5jdGlvbi5jIChzY2hlZHVsZV9maXh1cF92YXJfcmVmcyk6IE5ldyBmdW5jdGlvbiwgYnJva2VuIG91dAoJb2YgcHV0X3JlZ19pbnRvX3N0YWNrLgoJKHB1dF9yZWdfaW50b19zdGFjayk6IFVzZSBpdC4KCShwdXRfdmFyX2ludG9fc3RhY2spOiBJbiBDT05DQVQgY2FzZSwgZml4dXAgdXAgcmVmZXJlbmNlcyBmb3IKCWNvbXBvbmVudHMgb25seSBhZnRlciBmaXhpbmcgdXAgcmVmZXJlbmNlcyB0byB0aGUgd2hvbGUgY29uY2F0LgoKMjAwMC0wOC0wNCAgUm9kbmV5IEJyb3duICA8Um9kbmV5QnJvd25AcG1zYy5jb20+CgoJKiBhbGlhcy5jIChtYXJrX2NvbnN0YW50X2Z1bmN0aW9uKTogVXNlIElOU05fUC4KCShpbml0X2FsaWFzX2FuYWx5c2lzKTogTGlrZXdpc2UuCgkqIGNvbWJpbmUuYyAoY29tYmluZV9pbnN0cnVjdGlvbnMpOiBVc2UgSU5TTl9QLgoJKGNhbl9jb21iaW5lX3ApOiBMaWtld2lzZS4KCSh0cnlfY29tYmluZSk6IExpa2V3aXNlLgoJKGRpc3RyaWJ1dGVfbm90ZXMpOiBMaWtld2lzZS4KCShkaXN0cmlidXRlX2xpbmtzKTogTGlrZXdpc2UuCgkqIGNzZS5jIChjc2VfYXJvdW5kX2xvb3ApOiBVc2UgSU5TTl9QLgoJKGludmFsaWRhdGVfc2tpcHBlZF9ibG9jayk6IExpa2V3aXNlLgoJKGNzZV9zZXRfYXJvdW5kX2xvb3ApOiBMaWtld2lzZS4KCShjc2VfZW5kX29mX2Jhc2ljX2Jsb2NrKTogTGlrZXdpc2UuCgkoZGVsZXRlX3RyaXZpYWxseV9kZWFkX2luc25zKTogTGlrZXdpc2UuCgkqIGVtaXQtcnRsLmMgKHVuc2hhcmVfYWxsX3J0bF9hZ2Fpbik6IFVzZSBJTlNOX1AuCgkodW5zaGFyZV9hbGxfcnRsXzEpOiBMaWtld2lzZS4KCShuZXh0X2NjMF91c2VyKTogTGlrZXdpc2UuCgkodHJ5X3NwbGl0IG1ha2VfaW5zbl9yYXcpOiBMaWtld2lzZS4KCShyZW1vdmVfdW5uZWNlc3Nhcnlfbm90ZXMpOiBMaWtld2lzZS4KCSogZmluYWwuYyAoc2hvcnRlbl9icmFuY2hlcyk6IFVzZSBJTlNOX1AuCgkobGVhZl9yZW51bWJlcl9yZWdzKTogTGlrZXdpc2UuCgkobGVhZl9yZW51bWJlcl9yZWdzX2luc24pOiBMaWtld2lzZS4KCSogZmxvdy5jIChmaW5kX2xhYmVsX3JlZnMpOiBVc2UgSU5TTl9QLgoJKHZlcmlmeV93aWRlX3JlZyk6IExpa2V3aXNlLgoJKG5vdGljZV9zdGFja19wb2ludGVyX21vZGlmaWNhdGlvbik6IExpa2V3aXNlLgoJKGNvdW50X29yX3JlbW92ZV9kZWF0aF9ub3Rlcyk6IExpa2V3aXNlLgoJKHZlcmlmeV9mbG93X2luZm8pOiBMaWtld2lzZS4KCShjbGVhcl9sb2dfbGlua3MpOiBMaWtld2lzZS4KCSogZnVuY3Rpb24uYyAoZml4dXBfdmFyX3JlZnNfaW5zbnMpOiBVc2UgSU5TTl9QLgoJKGNvbXB1dGVfaW5zbnNfZm9yX21lbSk6IExpa2V3aXNlLgoJKiBnY3NlLmMgKGFsbG9jX2djc2VfbWVtKTogVXNlIElOU05fUC4KCShjb21wdXRlX3NldHMpOiBMaWtld2lzZS4KCShjb21wdXRlX2hhc2hfdGFibGUpOiBMaWtld2lzZS4KCShjbGFzc2ljX2djc2UpOiBMaWtld2lzZS4KCShjcHJvcCk6IExpa2V3aXNlLgoJKGluc2VydF9pbnNuX2VuZF9iYik6IExpa2V3aXNlLgoJKGRlbGV0ZV9udWxsX3BvaW50ZXJfY2hlY2tzXzEpOiBMaWtld2lzZS4KCSogZ2xvYmFsLmMgKGV4cGFuZF9wcmVmZXJlbmNlcyk6IFVzZSBJTlNOX1AuCgkoYnVpbGRfaW5zbl9jaGFpbik6IExpa2V3aXNlLgoJKiBncmFwaC5jIChub2RlX2RhdGEpOiBVc2UgSU5TTl9QLgoJKiBoYWlmYS1zY2hlZC5jIChwcmlvcml0eSk6IFVzZSBJTlNOX1AuCgkocm1fbGluZV9ub3Rlcyk6IExpa2V3aXNlLgoJKHJtX290aGVyX25vdGVzKTogTGlrZXdpc2UuCgkoZmluZF9pbnNuX3JlZ193ZWlnaHQpOiBMaWtld2lzZS4KCShpbml0X3RhcmdldF91bml0cyk6IExpa2V3aXNlLgoJKHNjaGVkdWxlX2Jsb2NrKTogTGlrZXdpc2UuCgkoY29tcHV0ZV9ibG9ja19mb3J3YXJkX2RlcGVuZGVuY2VzKTogTGlrZXdpc2UuCgkoZGVidWdfZGVwZW5kZW5jaWVzKTogTGlrZXdpc2UuCgkoc2V0X3ByaW9yaXRpZXMpOiBMaWtld2lzZS4KCSogaW50ZWdyYXRlLmMgKGZ1bmN0aW9uX2Nhbm5vdF9pbmxpbmVfcCk6IFVzZSBJTlNOX1AuCgkoc2F2ZV9wYXJtX2luc25zKTogTGlrZXdpc2UuCgkoY29weV9pbnNuX2xpc3QpOiBMaWtld2lzZS4KCSoganVtcC5jIChtYXJrX2FsbF9sYWJlbHMpOiBVc2UgSU5TTl9QLgoJKG5ldmVyX3JlYWNoZWRfd2FybmluZyk6IExpa2V3aXNlLgoJKiBsY20uYyAob3B0aW1pemVfbW9kZV9zd2l0Y2hpbmcpOiBVc2UgSU5TTl9QLgoJKiBsb2NhbC1hbGxvYy5jICh2YWxpZGF0ZV9lcXVpdl9tZW0pOiBVc2UgSU5TTl9QLgoJKG1lbXJlZl91c2VkX2JldHdlZW5fcCk6IExpa2V3aXNlLgoJKHVwZGF0ZV9lcXVpdl9yZWdzKTogTGlrZXdpc2UuCgkoYmxvY2tfYWxsb2MpOiBMaWtld2lzZS4KCShub19jb25mbGljdF9wKTogTGlrZXdpc2UuCgkqIGxvb3AuYyAoc2Nhbl9sb29wKTogVXNlIElOU05fUC4KCShmaW5kX2FuZF92ZXJpZnlfbG9vcHMpOiBMaWtld2lzZS4KCShjb3VudF9sb29wX3JlZ3Nfc2V0KTogTGlrZXdpc2UuCgkobG9vcF9yZWdfdXNlZF9iZWZvcmVfcCk6IExpa2V3aXNlLgoJKHN0cmVuZ3RoX3JlZHVjZSk6IExpa2V3aXNlLgoJKHJlY29tYmluZV9naXZzKTogTGlrZXdpc2UuCgkoY2hlY2tfZGJyYV9sb29wKTogTGlrZXdpc2UuCgkobG9hZF9tZW1zKTogTGlrZXdpc2UuCgkodHJ5X2NvcHlfcHJvcCk6IExpa2V3aXNlLgoJKiBwcmludC1ydGwuYyAocHJpbnRfcnR4KTogVXNlIElOU05fUC4KCSogcmVjb2cuYyAoZmluZF9zaW5nbGVfdXNlKTogVXNlIElOU05fUC4KCSogcmVnLXN0YWNrLmMgKHN0YWNrX3JlZ3NfbWVudGlvbmVkKTogVXNlIElOU05fUC4KCShuZXh0X2ZsYWdzX3VzZXIpOiBMaWtld2lzZS4KCShzd2FwX3J0eF9jb25kaXRpb24pOiBMaWtld2lzZS4KCSogcmVnbW92ZS5jIChtYXJrX2ZsYWdzX2xpZmVfem9uZXMpOiBVc2UgSU5TTl9QLgoJKG9wdGltaXplX3JlZ19jb3B5XzEpOiBMaWtld2lzZS4KCShvcHRpbWl6ZV9yZWdfY29weV8yKTogTGlrZXdpc2UuCgkob3B0aW1pemVfcmVnX2NvcHlfMyk6IExpa2V3aXNlLgoJKHJlZ19pc19yZW1vdGVfY29uc3RhbnRfcCk6IExpa2V3aXNlLgoJKGZpeHVwX21hdGNoXzIpOiBMaWtld2lzZS4KCShyZWdtb3ZlX29wdGltaXplKTogTGlrZXdpc2UuCgkoZml4dXBfbWF0Y2hfMSk6IExpa2V3aXNlLgoJKiByZWdyZW5hbWUuYyAoYnVpbGRfZGVmX3VzZSk6IFVzZSBJTlNOX1AuCgkocmVwbGFjZV9yZWdfaW5fYmxvY2spOiBMaWtld2lzZS4KCShjb25zaWRlcl91c2UpOiBMaWtld2lzZS4KCSogcmVsb2FkLmMgKGZpbmRfZXF1aXZfcmVnKTogVXNlIElOU05fUC4KCSogcmVsb2FkMS5jIChyZWxvYWQpOiBVc2UgSU5TTl9QLgoJKG1heWJlX2ZpeF9zdGFja19hc21zKTogTGlrZXdpc2UuCgkoY2FsY3VsYXRlX25lZWRzX2FsbF9pbnNucyk6IExpa2V3aXNlLgoJKHJlbG9hZF9hc19uZWVkZWQpOiBMaWtld2lzZS4KCShlbWl0X291dHB1dF9yZWxvYWRfaW5zbnMpOiBMaWtld2lzZS4KCShkZWxldGVfYWRkcmVzc19yZWxvYWRzXzEpOiBMaWtld2lzZS4KCShyZWxvYWRfY3NlX3JlZ3NfMSk6IExpa2V3aXNlLgoJKHJlbG9hZF9jb21iaW5lKTogTGlrZXdpc2UuCgkocmVsb2FkX2NzZV9tb3ZlMmFkZCk6IExpa2V3aXNlLgoJKiByZW9yZy5jIChyZWR1bmRhbnRfaW5zbik6IFVzZSBJTlNOX1AuCgkoZGJyX3NjaGVkdWxlKTogTGlrZXdpc2UuCgkqIHJlc291cmNlLmMgKGZpbmRfZGVhZF9vcl9zZXRfcmVnaXN0ZXJzKTogVXNlIElOU05fUC4KCShtYXJrX3RhcmdldF9saXZlX3JlZ3MpOiBMaWtld2lzZS4KCSogcnRsYW5hbC5jIChyZWdfdXNlZF9iZXR3ZWVuX3ApOiBVc2UgSU5TTl9QLgoJKHJlZ19yZWZlcmVuY2VkX2JldHdlZW5fcCk6IExpa2V3aXNlLgoJKHJlZ19zZXRfYmV0d2Vlbl9wKTogTGlrZXdpc2UuCgkocmVnX3NldF9wKTogTGlrZXdpc2UuCgkoc2luZ2xlX3NldCk6IExpa2V3aXNlLgoJKG11bHRpcGxlX3NldHMpOiBMaWtld2lzZS4KCShmaW5kX2xhc3RfdmFsdWUpOiBMaWtld2lzZS4KCShyZWdfc2V0X2xhc3QpOiBMaWtld2lzZS4KCShmaW5kX3JlZ19ub3RlKTogTGlrZXdpc2UuCgkoZmluZF9yZWdub19ub3RlKTogTGlrZXdpc2UuCgkqIHNpYmNhbGwuYyAoc2VxdWVuY2VfdXNlc19hZGRyZXNzb2YpOiBVc2UgSU5TTl9QLgoJKiBzaW1wbGlmeS1ydHguYyAoY3NlbGliX3Byb2Nlc3NfaW5zbik6IFVzZSBJTlNOX1AuCgkqIHNzYS5jIChmaW5kX2V2YWx1YXRpb25zKTogVXNlIElOU05fUC4KCShyZW5hbWVfYmxvY2spOiBMaWtld2lzZS4KCShyZW5hbWVfZXF1aXZhbGVudF9yZWdzKTogTGlrZXdpc2UuCgkqIHVucm9sbC5jIChsb29wX2ZpbmRfZXF1aXZfdmFsdWUpOiBVc2UgSU5TTl9QLgoJKHNldF9kb21pbmF0ZXNfdXNlKTogTGlrZXdpc2UuCgkqIHZhcmFzbS5jIChtYXJrX2NvbnN0YW50X3Bvb2wpOiBVc2UgSU5TTl9QLgoJKG1hcmtfY29uc3RhbnRzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9hbHBoYS9hbHBoYS5jIChhbHBoYV9kb2VzX2Z1bmN0aW9uX25lZWRfZ3ApOiBVc2UgSU5TTl9QLgoJKGFscGhhZXY0X25leHRfZ3JvdXApOiBMaWtld2lzZS4KCShhbHBoYWV2NV9uZXh0X2dyb3VwKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9jNHgvYzR4LmMgKGM0eF9wcm9jZXNzX2FmdGVyX3JlbG9hZCk6IFVzZSBJTlNOX1AuCgkoYzR4X3JwdGJfcnB0c19wKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwczE2X29wdGltaXplX2dwKTogVXNlIElOU05fUC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAodXNlc19UT0MpOiBVc2UgSU5TTl9QLgoJKHJzNjAwMF9hZGp1c3RfcHJpb3JpdHkpOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLmMgKHNoX2xvb3BfYWxpZ24pOiBVc2UgSU5TTl9QLgoJKG1hY2hpbmVfZGVwZW5kZW50X3Jlb3JnKTogTGlrZXdpc2UuCgkoc3BsaXRfYnJhbmNoZXMpOiBMaWtld2lzZS4KCSogY29uZmlnL3RhaG9lL3RhaG9lLmMgKHRhaG9lX2NtcF9jaGVjayk6IFVzZSBJTlNOX1AuCgpGcmkgQXVnICA0IDExOjQzOjQ5IDIwMDAgIEpvaG4gV2VobGUgIChqb2huQGZlaXRoLmNvbSkKCgkqIGNvbWJpbmUuYyAocmVjb2dfZm9yX2NvbWJpbmUpOiBSZW1vdmUgdGhlIG9sZCBub3RlcwoJcHJpb3IgdG8gYXR0ZW1wdGluZyB0byByZWNvZ25pemUgdGhlIG5ldyBwYXR0ZXJuLgoJKGRpc3RyaWJ1dGVfbm90ZXMpOiBJZ25vcmUgUkVHX05PTk5FRyBub3Rlcy4KCjIwMDAtMDgtMDQgIENoYW5kcmFrYWxhIENoYXZ2YSAgPGNjaGF2dmFAcmVkaGF0LmNvbT4KCgkqIHZhcmFzbS5jIChvdXRwdXRfY29uc3RydWN0b3IpOiBBZGQgLmFsaWduIDAgZm9yIHBhY2tlZCB2YXJzLgoKMjAwMC0wOC0wNCAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBjb25maWd1cmUuaW46IFVzZSBkZWZhdWx0IHRocmVhZF9maWxlIGV2ZW4gd2hlbiBlbmFibGVfdGhyZWFkcyBpcwoJeWVzIG9yIGRjZSBiZWNhdXNlIGhwdXgxMC4yMCBwYSBwb3J0IHVzZXMgTVVMVElMSUIgaW1wbGVtZW50YXRpb24uCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCgkqIGd0aHItZGNlLmggKF9fZ3RocmVhZF9vYmpjX2NvbmRpdGlvbl9hbGxvY2F0ZSk6IEZpeCB0eXBvLgoKMjAwMC0wOC0wNCAgRG9ubiBUZXJyeSAoZG9ubnRlQG1pY3Jvc29mdC5jb20pCgoJKiBwcmVmaXguYyAodHJhbnNsYXRlX25hbWUpOiBEb24ndCBzdHJpcCB0cmFpbGluZyBESVJfU0VQQVJBVE9SLgoKMjAwMC0wOC0wNCAgTWFyayBFbGJyZWNodCAgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIGkzODYveC1kamdwcDogRGVsZXRlIGNvZGUgdGhhdCBjb25kaXRpb25hbGx5IG1vZGlmaWVzIHRhcmdldF9hbGlhcy4KCURlbGV0ZSBjb2RlIHRoYXQgY29uZGl0aW9uYWxseSBtb2RpZmllcyAndmVyc2lvbicuCglEZWxldGUgWF9DUFBGTEFHUy4gQWRkIGNvbW1lbnQgZm9yIFNZU1RFTV9IRUFERVJfRElSLgoJKiBpMzg2L3htLWRqZ3BwLmggKEdDQ19EUklWRVJfSE9TVF9JTklUSUFMSVpBVElPTik6IE5ldyBtYWNyby4KCSogZ2NjLmMgKG1haW4pOiBVc2UgaXQuCgkqIGNvbmZpZy9pMzg2L3htLWRqZ3BwLmggKFVQREFURV9QQVRIX0hPU1RfQ0FOT05JQ0FMSVpFKTogTmV3IG1hY3JvLgoJKiBwcmVmaXguYyAodXBkYXRlX3BhdGgpOiBVc2UgaXQuCgkqIGkzODYvZGpncHAuaCAoU1RBTkRBUkRfSU5DTFVERV9ESVIpOiBEZWZpbmUuCgkoTURfRVhFQ19QUkVGSVgpOiBTZXQgdG8gJy9kZXYvZW52L0RKRElSL2Jpbi8nLgoJKEFTTV9PVVRQVVRfU0VDVElPTl9OQU1FKTogQWRkIGNvZGUgYXR0cmlidXRlIHRvIHNlY3Rpb25zIGNvbnRhaW5pbmcKCWNvZGUuCgkoU1VQUE9SVFNfV0VBSywgU1VQUE9SVFNfT05FX09OTFkpOiBEZWZhdWx0IHRvIHRydWUuCgkoU1VCVEFSR0VUX1NXSVRDSEVTKTogQWRqdXN0LgoJKFdDSEFSX1VOU0lHTkVELCBXQ0hBUl9UWVBFX1NJWkUsIFdDSEFSX1RZUEUpOiBVbmRlZmluZSBiZWZvcmUKCWRlZmluaW5nLgoJKFdJTlRfVFlQRSwgU0laRV9UWVBFLCBQVFJESUZGX1RZUEUpOiBEZWZpbmUuCgoyMDAwLTA4LTA0ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLWNvbW1vbi5oIChmbGFnX2lzb2M5NCk6IERlY2xhcmUuCgkqIGMtZGVjbC5jIChmbGFnX2lzb2M5NCk6IERlZmluZS4KCShjX2RlY29kZV9vcHRpb24pOiBTZXQgZmxhZ19pc29jOTQgYXMgYXBwcm9wcmlhdGUuCgkqIGMtY29tbW9uLmMgKFRfUEQsIFRfSU0sIFRfVUlNKTogRGVmaW5lLgoJKGZvcm1hdF9jaGFyX2luZm8pOiBBZGQgdGxlbiBhbmQgamxlbi4KCShwcmludF9jaGFyX3RhYmxlKTogQWRkIGVudHJpZXMgZm9yICV0IGFuZCAlai4gIEFsbG93ICV6bi4gIEFsbG93CgklRi4gIEFsbG93ICVsZi4KCShzY2FuX2NoYXJfdGFibGUpOiBBZGQgZW50cmllcyBmb3IgJXQgYW5kICVqLiAgQWxsb3cgJUYuICBBbGxvdwoJJWxbLgoJKHRpbWVfY2hhcl90YWJsZSk6IEFkZCBOVUxMIGVudHJpZXMgZm9yICV0IGFuZCAlai4KCShjaGVja19mb3JtYXRfaW5mbyk6IEFsbG93IGZvciAldCBhbmQgJWouICBXYXJuIGZvciAlRiBpZiBwZWRhbnRpYwoJYW5kIG5vdCBDOTkuICBXYXJuIGZvciAlbGMsICVscyBhbmQgJWxbIGlmIHBlZGFudGljIGFuZCBub3QgQzk0LgoJV2FybiBmb3IgcHJpbnRmICVsZiBpZiBwZWRhbnRpYyBhbmQgbm90IEM5OS4gIERvbid0IHdhcm4gZm9yIGVtcHR5CglwcmVjaXNpb24uICBBbGxvdyBwcmVjaXNpb24gYXJndW1lbnQgdG8gYmUgdW5zaWduZWQgaW50LiAgSWYKCXBlZGFudGljLCB3YXJuIGZvciAlcCBwYXNzZWQgYW4gYXJndW1lbnQgbm90IGEgcG9pbnRlciB0byBwb3NzaWJseQoJcXVhbGlmaWVkIHZvaWQgb3IgYSBwb3NzaWJseSBxdWFsaWZpZWQgY2hhcmFjdGVyIHR5cGUsIGFuZCBmb3IKCXBvaW50ZXIgdGFyZ2V0cyBvZiB0aGUgd3Jvbmcgc2lnbiwgZXhjZXB0IGZvciBjaGFyYWN0ZXIgcG9pbnRlcnMuCgoyMDAwLTA4LTA0ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnaW5jbHVkZS9zdGRkZWYuaDogRG9uJ3QgZGVjbGFyZSB3aW50X3QgdW5sZXNzIF9fbmVlZF93aW50X3QuCgkqIGMtY29tbW9uLmggKGVudW0gY190cmVlX2luZGV4KTogQWRkIENUSV9XSU5UX1RZUEUuCgkod2ludF90eXBlX25vZGUpOiBEZWZpbmUuCgkqIGMtZGVjbC5jIChXSU5UX1RZUEUpOiBEZWZpbmUuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDcmVhdGUgdGhlIHdpbnRfdHlwZV9ub2RlIHR5cGUuCgkqIGMtY29tbW9uLmMgKFRfV0kpOiBEZWZpbmUuCgkocHJpbnRfY2hhcl90YWJsZSk6IFVzZSBUX1dJIGZvciAlbGMgZm9ybWF0LgoKMjAwMC0wOC0wNCAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvOiAgVmVyaWZpZWQgdGhhdCB0aGUgTVNET1MgcGF0Y2ggZG9lcyBub3QgYnJlYWsKCXRoZSBVTklYIGZ1bmN0aW9uYWxpdHkgYW5kIGFwcGxpZWQgdGhlIG5leHQgdGhyZWUgcGF0Y2hlcwoJZnJvbSBKdWx5OgoKMjAwMC0wNy0yOCAgRWxpIFphcmV0c2tpaSAgPGVsaXpAaXMuZWx0YS5jby5pbD4KCgkqIGZpeGluYy9maXhmaXhlcy5jIChtYWluKSBbX19NU0RPU19fXTogQXZvaWQgb3ZlcndyaXRpbmcgdGhlCglvdXRwdXQgZmlsZSB3aXRoIHRoZSB0ZW1wb3Jhcnkgb25lIGJ5IGFwcGVuZGluZyAiLlgiIHRvIGdlbmVyYXRlCgl0aGUgdGVtcG9yYXJ5IGZ1aWxlJ3MgbmFtZS4gIElmIHRoZSBvdXRwdXQgZmlsZSBhbHJlYWR5IGhhcyBhbgoJZXh0ZW5zaW9uLCByZXBsYWNlIGl0IHdpdGggIi5YIi4KCgkqIGZpeGluYy9maXhpbmNsLmMgKGZpeF93aXRoX3N5c3RlbSkgW19fTVNET1NfX106IFVzZSAkT1JJR0RJUiwKCW5vdCAkREVTVERJUiwgdG8gZmluZCBhcHBseWZpeC4gIFVzZSBzcHJpbnRmIGluc3RlYWQgb2Ygc25wcmludGY7CglyZWFsbG9jYXRlIHRoZSBjb21tYW5kIGJ1ZmZlciB3aGlsZSBjb3B5aW5nIHRoZSBjb21tYW5kLWxpbmUKCWFyZ3VtZW50LiAgUmVkaXJlY3QgdGhlIG91dHB1dCBkaXJlY3RseSB0byB0aGUgdGVtcG9yYXJ5IGZpbGUsCglpbnN0ZWFkIG9mIGdvaW5nIHRocm91Z2ggYW5vdGhlciB0ZW1wb3JhcnkgZmlsZS4KCShwcm9jZXNzKTogQ2xvc2UgdGhlIHRlbXBvcmFyeSBmaWxlIGJlZm9yZSB1bmxpbmtpbmcgaXQuCgkobWFjaGluZV9tYXRjaGVzKSBbX19NU0RPU19fXTogSWYgdGhlIG1hY2hpbmUgZG9lc24ndCBtYXRjaCwgc2V0Cgl0aGUgRkRfU0tJUF9URVNUIGZsYWcuICBQYXkgYXR0ZW50aW9uIHRvIHRoZSBGRF9NQUNIX0lGTk9UIGZsYWcuCgkocnVuX2NvbXBpbGVzKTogUGFzcyBwX2ZpeGQgYXJndW1lbnQgdG8gbWFjaGluZV9tYXRjaGVzLCBhcyBpdAoJZXhwZWN0cy4KCgkqIGZpeGluYy9maXhpbmNsLnNoOiBFeHBvcnQgT1JJR0RJUi4gIElmICRESkRJUiBpcyBzZXQgaW4gdGhlCgllbnZpcm9ubWVudCwgYXNzdW1lIHRoZXJlIGFyZSBubyBzeW1saW5rcyBpbiB0aGUgaW5jbHVkZQoJZGlyZWN0b3J5LiAgV2hlbiBjbGVhbmluZyB1cCB0aGUgRE9ORSBmaWxlcywgbG9vayBmb3IgdGhlbQoJY2FzZS1pbnNlbnNpdGl2ZWx5LiAgRG9uJ3QgdHJ5IHRvIHJlbW92ZSBzeW1saW5rcyBpZiB0aGV5IGFyZW4ndAoJdGhlcmUuCgoJKiBmaXhpbmMvZml4bGliLmMgKG1ha2VfcmF3X3NoZWxsX3N0cik6IEFjY2VwdCBuZXcgYXJndW1lbnQgc21heDsKCWFsbCBjYWxsZXJzIGNoYW5nZWQuICBEZWNsYXJlIHB6ICJjb25zdCBjaGFyICoiLCB0byBhdm9pZCBjb21waWxlcgoJd2FybmluZ3MuCgoJKiBmaXhpbmMvZml4bGliLmggKEVOVl9UQUJMRSk6IEdldCBPUklHRElSIGZyb20gdGhlIGVudmlyb25tZW50LgoJQ2hhbmdlIHByb3RvdHlwZSBvZiBtYWtlX3Jhd19zaGVsbF9zdHIuCgoyMDAwLTA3LTI3ICBFbGkgWmFyZXRza2lpICA8ZWxpekBpcy5lbHRhLmNvLmlsPgoKCSogZml4aW5jL2ZpeGluY2wuYyBbX19NU0RPU19fXTogRG9uJ3QgaW5jbHVkZSAic2VydmVyLmgiLgoJKGluaXRpYWxpemUpIFtfX01TRE9TX19dOiBVc2UgdGVtcG5hbS4KCShpbml0aWFsaXplKTogRG9uJ3QgdXNlIFNJR1BJUEUgaWYgaXQgaXMgbm90IGRlZmluZWQuCgoJKiBmaXhpbmMvZml4Zml4ZXMuYyAobWFpbikgW19fTVNET1NfX106IGZyZW9wZW4gZm9yIHN0ZG91dCBzaG91bGQKCXJldHVybiBzdGRvdXQuCgoyMDAwLTA3LTI1ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluYy9maXgqLltjaF06IHN1YnN0YW50aWFsbHkgcmV3b3JrZWQgdG8gbWFrZSBpdCBwb3NzaWJsZQoJdG8gcnVuIHRoaXMgcHJvZ3JhbSB3aXRob3V0IHVzaW5nIGZvcmsoMikgb3IgcGlwZSgyKSAoaS5lLiBpbgoJYSBET1MgZW52aXJvbm1lbnQpLgoKMjAwMC0wOC0wNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogY3BwZGVmYXVsdC5oIChXSU5UX1RZUEUpOiBEZWZpbmUuCgkqIGNwcGluaXQuYyAoYnVpbHRpbl9hcnJheSk6IERlZmluZSBfX1dJTlRfVFlQRV9fLgoJKiB0cmFkY3BwLmMgKGluaXRpYWxpemVfYnVpbHRpbnMpOiBEZWZpbmUgX19XSU5UX1RZUEVfXy4KCSogdG0udGV4aSAoTk9fQlVJTFRJTl9XSU5UX1RZUEUsIFdJTlRfVFlQRSk6IERvY3VtZW50LgoKRnJpIEF1ZyAgNCAwNjo1Mzo0NiAyMDAwICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIChtaXBzX2xlZ2l0aW1hdGVfYWRkcmVzc19wKTogRG9uJ3QgYWxsb3cgcmVnaXN0ZXIrb2Zmc2V0CglpZiB0aGUgb2Zmc2V0IGlzIGxhcmdlIGFuZCBuZWdhdGl2ZSwgYW5kIHdlIGFyZSBjb21waWxpbmcKCWZvciA2NCBiaXQgcmVnaXN0ZXJzLgoKMjAwMC0wOC0wNCBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoKCSogZ2VuY29kZXMuYyAobWFpbik6IERlZmluZSBDT0RFX0ZPUl9ub3RoaW5nIGFzIHRoZSBsYXN0IHBvc3NpYmxlCglpbnNuX2NvZGVfbnVtYmVyICsgMS4KCjIwMDAtMDgtMDQgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaDgzMDAuYyAoZnVuY3Rpb25fcHJvbG9ndWUpOiBSZWFycmFuZ2UgY29kZSBmb3IgY29uY2lzZW5lc3MuCgkoZnVuY3Rpb25fZXBpbG9ndWUpOiBMaWtld2lzZS4KCSogaDgzMDAuaCAoT0tfRk9SX1UpOiBGaXggZm9ybWF0dGluZy4KCgkqIGNzZS5jOiBGaXggYSBjb21tZW50IHR5cG8uIEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wOC0wMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHJldHVybl9pbmRpcmVjdF9pbnRlcm5hbCk6IE5ldy4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9lcGlsb2d1ZSk6IFVzZSBpdC4KCjIwMDAtMDgtMDMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxleC5jIChwYXJzZV9uYW1lKTogTWlnaHQgaGF2ZSB0byBnbHVlIGEgQ1BQX09USEVSIHRva2VuCgliZWZvcmUgdGhlIG5hbWUuCgkobGV4X2xpbmUpOiBHbHVlIEAgb250byB0aGUgYmVnaW5uaW5nIG9mIGlkZW50aWZpZXJzIGFuZAoJc3RyaW5nIGNvbnN0YW50cywgaW4gT2JqZWN0aXZlLUMgbW9kZS4KCShvdXRwdXRfdG9rZW4sIHNwZWxsX3Rva2VuKTogSGFuZGxlIENQUF9PU1RSSU5HLgoJKGNhbl9wYXN0ZSwgbWF5YmVfcGFzdGVfd2l0aF9uZXh0KTogSGFuZGxlIHBhc3RpbmcgQCBvbnRvIHRoZQoJYmVnaW5uaW5nIG9mIGEgTkFNRSBvciBhIFNUUklORywgaW4gb2JqYyBtb2RlLgoKCSogY3BwbGliLmMgKGdldF9kZWZpbmVfbm9kZSk6IERvIG5vdCBwZXJtaXQgaWRlbnRpZmllcnMgdGhhdAoJYmVnaW4gd2l0aCBAIHRvIGJlICNkZWZpbmVkLgoJKiBjcHBtYWNyby5jIChDQU5fUEFTVEVfQUZURVIpOiBBZGQgQ1BQX09USEVSLgoJKiBjcHBsaWIuaCAoVFRZUEVfVEFCTEUpOiBBZGQgQ1BQX09TVFJJTkcuCgoJKiBjLWxhbmcuYywgb2JqYy9vYmpjLWFjdC5jIChidWlsZF9vYmpjX3N0cmluZyk6IERlbGV0ZS4KCSogYy10cmVlLmggKGJ1aWxkX29iamNfc3RyaW5nKTogRGVsZXRlIHByb3RvdHlwZS4KCSogb2JqYy9vYmpjLXRyZWUuZGVmOiBEZWxldGUgT0JKQ19TVFJJTkdfQ1NULgoJKiBjLWxleC5jICh5eWxleCk6IFVzZSBidWlsZF9zdHJpbmcgZm9yIGFsbCB0aHJlZSBraW5kcyBvZiBzdHJpbmdzLgoKCSogYy1wYXJzZS5pbiwgb2JqYy9vYmpjLWFjdC5jOiBVcGRhdGUgY29tbWVudGFyeS4KCjIwMDAtMDgtMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleHRlbmQudGV4aTogRml4IHR5cG8gaW4gbGFzdCBjaGFuZ2UuCgoJKiBleHRlbmQudGV4aTogQWRkIGNvbW1lbnRhcnkgb24gc3RhdGVtZW50LWV4cHJlc3Npb25zIGFuZCB0aGVpcgoJaW50ZXJhY3Rpb25zIHdpdGggQysrLgoKMjAwMC0wOC0wMyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGR3YXJmMi5oIChEV19MQU5HX0phdmEpOiBDaGFuZ2UgdmFsdWUgdG8gMHgwMDBiLgoJKiBkd2FyZi5oIChMQU5HX0pBVkEpOiBDaGFuZ2UgdmFsdWUgdG8gMHgwMDBiLgoKMjAwMC0wOC0wMyAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQGN5Z251cy5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZ2VuX2NvbXBpbGVfdW5pdF9kaWUpOiBBZGQgamF2YSBsYW5ndWFnZSBzdXBwb3J0LgoJKGFkZF9ib3VuZF9pbmZvKTogQ2hlY2sgZm9yIGphdmEgbGFuZ3VhZ2UuCgkoaXNfamF2YSk6IE5ldyBmdW5jdGlvbi4KCSogZHdhcmZvdXQuYyAob3V0cHV0X2NvbXBpbGVfdW5pdF9kaWUpOiBEaXR0by4KCSogZHdhcmYuaCAoZHdhcmZfc291cmNlX2xhbmd1YWdlKTogQWRkIGphdmEgc291cmNlIGxhbmd1YWdlIHR5cGUuCgkqIGR3YXJmMi5oIChkd2FyZl9zb3VyY2VfbGFuZ3VhZ2UpOiBEaXR0by4KClRodSBBdWcgIDMgMjA6MzI6MjUgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiByZWctc3RhY2suYyAoc3Vic3Rfc3RhY2tfcmVnc19wYXQpOiAgVXNlIHJlcGxhY2VfcmVnIHRvIHN3YXAKCW9wZXJhbmRzLgoKCSogaTM4Ni5jIChpeDg2X2V4cGFuZF9icmFuY2gpOiBNb2RlIG9mIGNvbXBhcmlzb24gaW4KCUlGX1RIRU5fRUxTRSBpcyBWT0lEbW9kZS4KClRodSBBdWcgIDMgMTA6MDU6NTMgMjAwMCAgQWtpa28gTWF0c3VzaGl0YSA8bWF0dXNpdGFAc3JhLmNvLmpwPgoKCSogZ2VuZ2VucnRsLmMsIHJ0bC5jOiBBdm9pZCAjZWxpZi4KCjIwMDAtMDgtMDMgIE1pY2hhZWwgUG9vbGUgIDxwb29sZUB0cm9pbHVzLm9yZz4KCgkqIHRtLnRleGkgKFJlZ2lzdGVyIENsYXNzZXMpOiBDbGFyaWZ5IG9yZGVyIG9mIHN1Yi1pbml0aWFsaXplcnMKCWluIFJFR19DTEFTU19DT05URU5UUy4KClRodSBBdWcgIDMgMTU6NTM6MDMgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCUZyb20gU0FJVE9IIE1hc2Fub2J1OgoJKiBzaC5oIChBU01fT1VUUFVUX1JFR19QVVNIKTogRml4IHN5bnRheC4KCjIwMDAtMDgtMDMgIERhdmlkIEJpbGxpbmdodXJzdCAgPERhdmlkLkJpbGxpbmdodXJzdEByaW90aW50by5jb20uYXU+CgoJKiBjb25maWcvaTM4Ni9jeWd3aW4uaDogUmVtb3ZlIC1yZW1hcCBmcm9tIENQUF9TUEVDIHNpbmNlIHRoaXMgb3B0aW9uCglpcyBub3Qgc3VwcG9ydGVkIGJ5IHRyYWRjcHAgYW5kIGlzbid0IGFjdHVhbGx5IG5lZWRlZCBmb3IgY3lnd2luLgoKMjAwMC0wOC0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBoODMwMC5jOiBGaXggYSBjb21tZW50IHR5cG8uCgkqIGg4MzAwLmggKE9LX0ZPUl9VKTogQWNjZXB0IGEgMzItYml0IGNvbnN0YW50IGFkZHJlc3Mgb24gSDgvUy4KCgkqIGp1bXAuYzogRml4IGZvcm1hdHRpbmcuCgoJKiB0b3BsZXYuYzogRml4IGZvcm1hdHRpbmcuCgpUaHUgQXVnICAzIDAxOjA1OjMyIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGZsb3cuYyAoZmluZF9hdXRvX2luYyk6IFZlcmlmeSB0aGF0IHdlJ3ZlIGdvdCBhIFJFRyBiZWZvcmUKCXBlZWtpbmcgYXQgaXRzIHJlZ25vLiAgRmFpbCwgZG9uJ3QgYWJvcnQgaWYgd2UgY2FuJ3QgZmluZAoJdGhlIGluY3JlbWVudCBvZiB0aGUgZGVzaXJlZCByZWdpc3Rlci4KCgkqIHBhLm1kIChzaGFkZCBoZWlnaHQgcmVkdWN0aW9uIHBhdHRlcm5zL3NwbGl0dGVycyk6IFJlbW92ZS4KCjIwMDAtMDgtMDIgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmggKGZsYWdfc3NhKTogRGVjbGFyZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobW92dGlfaW50ZXJuYWwsIG1vdnRpX2ludGVybmFsKzEpOiBOZXcuCgoyMDAwLTA4LTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGNlLmM6IFJlbW92ZSBhbGwgdXNlcyBvZiBhc3NlcnQuCgkqIGR3YXJmMm91dC5jOiBMaWtld2lzZS4KCSogZHdhcmZvdXQuYzogTGlrZXdpc2UuCgkqIHNzYS5jOiBMaWtld2lzZS4KCjIwMDAtMDgtMDIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGdjYy5oIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IENvbnN0aWZ5IHNlY29uZCBhcmd1bWVudC4KCSogZ2NjLmMgKHRyYW5zbGF0ZV9vcHRpb25zLCBwcm9jZXNzX2NvbW1hbmQsIG1haW4pOiBMaWtld2lzZS4KCUNvbnN0aWZ5IHZhcmlhYmxlcyB0byBtYXRjaC4gIENhc3Qgc2Vjb25kIGFyZ3VtZW50IHRvCglwZXhlY3V0ZS4KCgkqIGNwcHNwZWMuYywgZ2Njc3BlYy5jOiBBZGp1c3QgdHlwZSBvZiBzZWNvbmQgYXJndW1lbnQgdG8KCWxhbmdfc3BlY2lmaWNfZHJpdmVyLCBhbmQgdXBkYXRlIGNvZGUgYXMgbmVjZXNzYXJ5LgoKMjAwMC0wOC0wMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBsb29wLmMgKHNjYW5fbG9vcCk6IEVuc3VyZSB1cGRhdGVfZW5kIGxhYmVsIGRvZXMgbm90CglnbyBhd2F5IHVudGlsIHJlZ19zY2FuX3VwZGF0ZSBpcyBydW4uCgoyMDAwLTA4LTAyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjLWNvbW1vbi5oOiBQcm90b3R5cGUgbWluX3ByZWNpc2lvbiBhbmQgY19idWlsZF9xdWFsaWZpZWRfdHlwZSBoZXJlLi4uCgkqIGMtdHJlZS5oOiAuLi4gbm90IGhlcmUuCgkqIGVycm9ycy5oOiBQcm90b3R5cGUgZmFuY3lfYWJvcnQuCgoJKiBlbWl0LXJ0bC5jIChnZW5fbG93cGFydF9jb21tb24pOiBNb3ZlIHZhcmlhYmxlICdjJyBpbnRvCglIT1NUX0JJVFNfUEVSX1dJREVfSU5UID09IDY0IGlmZGVmIGJsb2NrLgoJKiByZWdyZW5hbWUuYyAocmVncmVuYW1lX29wdGltaXplKTogTWFrZSBjb250cm9sIGZsb3cgZXhwbGljaXQuCgkocmVwbGFjZV9yZWdfaW5fYmxvY2spOiBJbml0aWFsaXplIHJlZ191c2UgdG8gMC4KCgkqIGkzODYuYyAobGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBSZW5hbWUgZXJyb3IgbGFiZWwgdG8KCXJlcG9ydF9lcnJvciB0byBhdm9pZCBuYW1lc3BhY2UgY2xhc2guCgoyMDAwLTA4LTAyICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGZvbGQtY29uc3QuYzogRml4IGZvcm1hdHRpbmcuCgpXZWQgQXVnICAyIDE2OjI2OjE1IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5jIChsZWdpdGltYXRlX2FkZHJlc3NfcCk6IEFjY2VwdCBvdGhlciBiYXNlcyB0aGFuCglwaWNfb2Zmc2V0X3RhYmxlX3J0eCBmb3IgR09UT0ZGIGNvbnN0cnVjdHMuCgpXZWQgQXVnICAyIDE1OjU5OjM0IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoc2hpZnQgdG8gbGVhIHNwbGl0dGVyKTogVXNlIGNvbnN0X2ludF9vcGVyYW5kLgoKMjAwMC0wOC0wMiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZXhwLmMsIGNwcGluaXQuYywgY3BwbGV4LmMsIGNwcGxpYi5jLCBjcHBtYWNyby5jLAoJY3Bwc3BlYy5jOiBEbyBub3QgdXNlICdsZWdhbCcgb3IgJ2lsbGVnYWwnIGluIGVycm9yIG1lc3NhZ2VzCglhbmQgY29tbWVudHMuCgoJKiBjcHBtYWluLmMgKGNiX2RlZmluZSwgY2JfdW5kZWYpOiBEb24ndCBnZW5lcmF0ZSBhbnkgb3V0cHV0CglpZiBub3QgZG9uZV9pbml0aWFsaXppbmcuCgkqIGNwcGxleC5jIChtYXliZV9wYXN0ZV93aXRoX25leHQpOiBXaGVuIHRoZSB0b2tlbiBhZnRlciBhICMjCglpcyBhbiBvbWl0dGVkIHJlc3QgYXJndW1lbnQsIG9ubHkgZGVsZXRlIHRoZSB0b2tlbiBiZWZvcmUgaXQKCWlmIHRoYXQgdG9rZW4gaXMgYSBjb21tYS4gIERvIG5vdCB3YXJuIGFib3V0IGJvZ3VzIHRva2VuCglwYXN0ZXMgZm9yICwgIyMgcmVzdF9hcmcuCgoJKiBjcHAudGV4aTogVXBkYXRlLgoJKiBjcHAuMTogUmVnZW5lcmF0ZS4KCjIwMDAtMDgtMDIgIEZyZWQgRmlzaCAgPGZuZkBiZS5jb20+CgoJKiBjb25maWcvaTM4Ni9iZW9zLWVsZi5oIChTVEFSVEZJTEVfU1BFQyk6IEFkZCBpMzg2LW1jb3VudC5vCgl3aGVuIHVzZXIgZ2l2ZXMgLXAgb3B0aW9uLiAgQWRkIGluaXRfdGVybV9keW4ubyBmb3IgQmVPUyA1LjAKCWFuZCBsYXRlci4KCgkqIGNvbmZpZy9pMzg2L2Jlb3MtZWxmLmggKElOQ0xVREVfREVGQVVMVFMpOiBBZGQgYWRkaXRpb25hbAoJQmUgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIHBhdGguCgoJUmVtb3ZlIHN1cHBvcnQgZm9yIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBhbmQgX19kZWNsc3BlYyhkbGxleHBvcnQpLgoJVGhpcyBpcyBsZWZ0b3ZlciBjcnVmdCBmcm9tIHRoZSBlYXJsaWVyIEJlT1MgZ2NjIHBvcnQgd2hlbiBCZU9TCgl1c2VkIE1pY3Jvc29mdCdzIFBFIG9iamVjdCBmaWxlIGZvcm1hdC4KCSogY29uZmlndXJlLmluIChpKjg2LSotYmVvc2VsZik6IFJlbW92ZSBleHRyYV9vYmpzPXdpbm50Lm8uCgkqIGNvbmZpZy9pMzg2L3QtYmVvcyAod2lubnQubyk6IFJlbW92ZSBNYWtlZmlsZSBmcmFnLgoJKiBjb25maWcvaTM4Ni9iZW9zLWVsZi5oIChUQVJHRVRfTk9QX0ZVTl9ETExJTVBPUlQpOiBSZW1vdmUuCgkoVkFMSURfTUFDSElORV9ERUNMX0FUVFJJQlVURSk6IFJlbW92ZS4KCShWQUxJRF9NQUNISU5FX1RZUEVfQVRUUklCVVRFKTogUmVtb3ZlLgoJKE1FUkdFX01BQ0hJTkVfREVDTF9BVFRSSUJVVEVTKTogUmVtb3ZlLgoJKFJFRE9fU0VDVElPTl9JTkZPX1ApOiBSZW1vdmUuCgkoQVNNX0VYUE9SVF9ERUNMKTogUmVtb3ZlLgoJKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX05BTUUpOiBSZW1vdmUuCgkoQVNNX0RFQ0xBUkVfT0JKRUNUX05BTUUpOiBSZW1vdmUuCgkoQVNNX09VVFBVVF9BTElHTkVEX0NPTU1PTik6IFJlbW92ZS4KCShBU01fT1VUUFVUX0FMSUdORURfREVDTF9DT01NT04pOiBSZW1vdmUuCgkoQVNNX09VVFBVVF9BTElHTkVEX0xPQ0FMKTogUmVtb3ZlLgoJKFNUUklQX05BTUVfRU5DT0RJTkcpOiBSZW1vdmUuCgoJUmVtb3ZlIHN1cHBvcnQgZm9yIG9ic29sZXRlIHZlcnNpb24gb2YgQmVPUyB0aGF0IGlzIG5vIGxvbmdlcgoJc3VwcG9ydGVkIGJ5IEJlLgoJKiBjb25maWd1cmUuaW4gKGkqODYtKi1iZW9zcGUqKTogUmVtb3ZlLgoJKiBjb25maWcvaTM4Ni9iZW9zLXBlLmg6IFJlbW92ZS4KCjIwMDAtMDgtMDEgIEplZmZyZXkgT2xkaGFtICA8b2xkaGFtQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgTWFyayBNaXRjaGVsbCA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKE9CSlMpOiBBZGRlZCBkY2Uuby4KCShzc2Eubyk6IFVwZGF0ZWQgdGFyZ2V0IHRvIGluY2x1ZGUgc3NhLmguCgkoZmxvdy5vKTogTGlrZXdpc2UuCgkodG9wbGV2Lm8pOiBMaWtld2lzZS4KCShkY2Uubyk6IENyZWF0ZWQgdGFyZ2V0LgoJKiBiYXNpYy1ibG9jay5oOiBBZGRlZCBjb21tZW50cy4KCShJTlZBTElEX0JMT0NLKTogQWRkZWQgZGVmaW5pdGlvbi4KCShjb25uZWN0X2luZmluaXRlX2xvb3BzX3RvX2V4aXQpOiBBZGRlZCBkZWNsYXJhdGlvbi4KCU1vdmVkIFNTQSBkZWNsYXJhdGlvbnMgdG8gc3NhLmguCgkqIGZsb3cuYzogQWRkZWQgaW5jbHVzaW9uIG9mIHNzYS5oLgoJKHN0cnVjdCBkZXB0aF9maXJzdF9zZWFyY2hfZHNTLCBkZXB0aF9maXJzdF9zZWFyY2hfZHMpOgoJQWRkZWQgZGVmaW5pdGlvbnMuCgkoY29tcHV0ZV9pbW1lZGlhdGVfcG9zdGRvbWluYXRvcnMpOiBBZGRlZCBkZWZpbml0aW9uLgoJKGNvbm5lY3RfaW5maW5pdGVfbG9vcHNfdG9fZXhpdCk6IExpa2V3aXNlLgoJKGZsb3dfZGZzX2NvbXB1dGVfcmV2ZXJzZV9pbml0KTogTGlrZXdpc2UuCgkoZmxvd19kZnNfY29tcHV0ZV9yZXZlcnNlX2FkZF9iYik6IExpa2V3aXNlLgoJKGZsb3dfZGZzX2NvbXB1dGVfcmV2ZXJzZV9leGVjdXRlKTogTGlrZXdpc2UuCgkoZmxvd19kZnNfY29tcHV0ZV9yZXZlcnNlX2ZpbmlzaCk6IExpa2V3aXNlLgoJKiBydGwuaCAocnR4L2luX3N0cnVjdCk6IEFkZGVkIHVzZSB0byBkZXRlcm1pbmUgaW5zbiBuZWNlc3NpdHkuCgkoTEFCRUxfUCk6IEFkZGVkIGRlZmluaXRpb24uCgkoSlVNUF9QKTogTGlrZXdpc2UuCgkoTk9URV9QKTogTGlrZXdpc2UuCgkoQkFSUklFUl9QKTogTGlrZXdpc2UuCgkoSlVNUF9UQUJMRV9EQVRBX1ApOiBMaWtld2lzZS4KCShJTlNOX0RFQURfQ09ERV9QKTogTGlrZXdpc2UuCgkqIHNzYS5jOiBSZXBsYWNlZCBpbmNsdXNpb25zIHdpdGggc3NhLmggaW5jbHVzaW9uLgoJKENPTlZFUlRfSEFSRF9SRUdJU1RFUl9UT19TU0FfUCk6IE1vdmVkIHRvIHNzYS5oLgoJKHJlbmFtZV9yZWdpc3RlcnMpOiBSZW1vdmVkIHVubmVjZXNzYXJ5IHZhcmlhYmxlcy4KCSogc3NhLmg6IENyZWF0ZWQgYnkgbW92aW5nIGRlY2xhcmF0aW9ucyBmcm9tIHNzYS5jIGFuZAoJYmFzaWMtYmxvY2suaC4KCSogdGltZXZhci5kZWY6IERlZmluZWQgVFZfREVBRF9DT0RFX0VMSU0uCgkqIHRvcGxldi5jOiBBZGRlZCBzc2EuaCBpbmNsdXNpb24uCgkoZHVtcF9maWxlX2luZGV4KTogQWRkZWQgREZJX2RjZS4KCShkdW1wX2ZpbGUpOiBBZGRlZCAiZGNlIiBlbnRyeS4KCURlZmluZWQgZmxhZ19zc2EuCgkoZl9vcHRpb25zKTogQWRkZWQgZGNlIGVudHJ5LgoJKiBpbnZva2UudGV4aTogRG9jdW1lbnQgLWZkY2UuICBFbXBoYXNpemUgZXhwZXJpbWVudGFsIHN0YXR1cyBvZgoJLWZzc2EuCgkqIGRjZS5jOiBOZXcgZmlsZS4KCjIwMDAtMDgtMDEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGVycm9yLmMgKHZfbWVzc2FnZSk6IFNwbGl0IGludG8gX2NwcF9iZWdpbl9tZXNzYWdlIGFuZAoJdl9tZXNzYWdlIG1hY3JvLiAgQWxsIGNhbGxlcnMgdXBkYXRlZC4KCShfY3BwX2JlZ2luX21lc3NhZ2UpOiBEbyBpbmhpYml0X2Vycm9ycy9pbmhpYml0X3dhcm5pbmdzCgljaGVja3MgaGVyZS4KCgkqIGNwcGZpbGVzLmMgKGNwcF9zeXNoZHJfZmxhZ3MpOiBOZXcgZnVuY3Rpb24uCgkocmVhZF9pbmNsdWRlX2ZpbGUpOiBEb24ndCBjYWxsIGNwcF9vdXRwdXRfdG9rZW5zLiAgQ2FsbAoJZW50ZXJfZmlsZSBob29rLgoJKiBjcHBpbml0LmMgKGR1bXBfbWFjcm9zX2hlbHBlcik6IE1vdmVkIHRvIGNwcG1haW4uYy4KCShjcHBfcmVhZGVyX2luaXQpOiBEb24ndCBpbml0aWFsaXplIHRva2VuX2J1ZmZlci4gIENhbGwKCV9jcHBfaW5pdF9pbnRlcm5hbF9wcmFnbWFzLgoJKGNwcF9jbGVhbnVwKTogRG9uJ3QgY2xlYXIgdG9rZW5fYnVmZmVyLgoJKGNwcF9zdGFydF9yZWFkKTogRG9uJ3Qgd29ycnkgYWJvdXQgb3V0cHV0IGZyb20gLUQgcHJvY2Vzc2luZy4KCURvbid0IGNhbGwgY3BwX291dHB1dF90b2tlbnMuCgkoY3BwX2ZpbmlzaCk6IERvbid0IGR1bXAgbWFjcm9zIGhlcmUuICBEb24ndCBjYWxsCgljcHBfb3V0cHV0X3Rva2Vucy4KCSogY3BwbWFjcm8uYyAoX2NwcF9kdW1wX2RlZmluaXRpb24pOiBSZW5hbWUKCWNwcF9kdW1wX2RlZmluaXRpb24uICBXcml0ZSBkaXJlY3RseSB0byBhIEZJTEUgKi4KCShkdW1wX2Z1bmxpa2VfbWFjcm8pOiBEZWxldGUuCgkoZHVtcF9tYWNyb19hcmdzKTogTmV3LgoKCSogY3BwbGV4LmMgKFRPS0VOX0xFTik6IENvbnZlcnQgdG8gaW5saW5lIGZ1bmN0aW9uLgoJKF9jcHBfZ3Jvd190b2tlbl9idWZmZXIsIHNhZmVfZndyaXRlLCBjcHBfb3V0cHV0X3Rva2VucywKCWNwcF9zY2FuX2xpbmUsIF9jcHBfZHVtcF9saXN0KTogRGVsZXRlLgoJKGNwcF9wcmludGYsIGNwcF9vdXRwdXRfbGlzdCk6IE5ldy4KCShvdXRwdXRfbGluZV9jb21tYW5kKTogRG9uJ3Qgd29ycnkgYWJvdXQgZW50ZXJpbmcgb3IgbGVhdmluZyBmaWxlcy4KCShjcHBfc2Nhbl9idWZmZXIpOiBKdXN0IG91dHB1dCBlYWNoIHRva2VuIGFzIHdlIGhpdCBpdC4KCShwcm9jZXNzX2RpcmVjdGl2ZSk6IERvbid0IGNhbGwgY3BwX291dHB1dF90b2tlbnMuCgkoX2NwcF9nbHVlX2hlYWRlcl9uYW1lKTogRG9uJ3QgdXNlIHRva2VuX2J1ZmZlci4KCShvdXRwdXRfdG9rZW4sIGR1bXBfcGFyYW1fc3BlbGxpbmcpOiBXcml0ZSBkaXJlY3RseSB0byBhIEZJTEUgKi4KCgkqIGNwcGxpYi5jIChwYXNzX3RocnVfZGlyZWN0aXZlLCBkdW1wX21hY3JvX25hbWUsCglwcmFnbWFfZGlzcGF0Y2gsIGRvX3ByYWdtYV9nY2MpOiBEZWxldGUuCgkoZG9fZGVmaW5lLCBkb191bmRlZiwgcGFyc2VfaW5jbHVkZSwgZG9fbGluZSwgZG9faWRlbnQsIGRvX3ByYWdtYSwKCWRvX3ByYWdtYV9wb2lzb24sIGNwcF9wb3BfYnVmZmVyKTogQ2FsbCB0aGUgYXBwcm9wcmlhdGUgaG9vawoJZnVuY3Rpb25zLgoJKGRvX2Vycm9yLCBkb193YXJuaW5nLCBwcmFnbWFfZGVwZW5kZW5jeSk6IENhbGwKCV9jcHBfYmVnaW5fbWVzc2FnZSwgdGhlbiBjcHBfb3V0cHV0X2xpc3QuCgkoY3BwX3JlZ2lzdGVyX3ByYWdtYSwgY3BwX3JlZ2lzdGVyX3ByYWdtYV9zcGFjZSwKCV9jcHBfaW5pdF9pbnRlcm5hbF9wcmFnbWFzKTogTmV3LgoJKGRvX3ByYWdtYSk6IFdhbGsgdGhlIHByYWdtYXMgdGFibGUgaGVyZS4KCShkb19wcmFnbWFfb25jZSwgZG9fcHJhZ21hX3BvaXNvbiwgZG9fcHJhZ21hX3N5c3RlbV9oZWFkZXIsCglkb19wcmFnbWFfZGVwZW5kZW5jeSk6IFJldHVybiB2b2lkLgoJKGRvX3ByYWdtYV9pbXBsZW1lbnRhdGlvbik6IE1vdmVkIHRvIGNwcG1haW4uYy4KCgkqIGNwcGxpYi5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCSAoc3RydWN0IGNwcF9yZWFkZXIpOiBSZW1vdmUgcHJpbnRlciwgdG9rZW5fYnVmZmVyLAoJdG9rZW5fYnVmZmVyX3NpemUsIGFuZCBsaW1pdC4gIEFkZCBzdHJ1Y3QgY2IsIGFuZCBwcmFnbWFzLgoJKHN0cnVjdCBjcHBfcHJpbnRlcik6IFJlbW92ZSBsYXN0X2lkIGFuZCB3cml0dGVuLgoJKENQUF9XUklUVEVOLCBDUFBfUFdSSVRURU4sIENQUF9TRVRfV1JJVFRFTiwKCUNQUF9BREpVU1RfV1JJVFRFTik6IERlbGV0ZS4KCSogY3BwaGFzaC5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCSh1ZnB1dHMpOiBOZXcgd3JhcHBlci4KCgkqIGNwcG1haW4uYyAoY2JfZGVmaW5lLCBjYl91bmRlZiwgY2JfaW5jbHVkZSwgY2JfaWRlbnQsCgljYl9lbnRlcl9maWxlLCBjYl9sZWF2ZV9maWxlLCBjYl9kZWZfcHJhZ21hKTogTmV3IGZ1bmN0aW9ucy4KCShtYWluKTogU2V0IHVwIGNhbGxiYWNrcy4gIFJlZ2lzdGVyICNwcmFnbWEgaW1wbGVtZW50YXRpb24uCglEdW1wIG1hY3JvcyBmcm9tIGhlcmUuCgoyMDAwLTA4LTAxICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBydGwuaCAoZW51bSByZWdfbm90ZSk6IEFkZCBSRUdfTUFZQkVfREVBRC4KCSogcnRsLmMgKHJlZ19ub3RlX25hbWUpOiBBZGQgUkVHX01BWUJFX0RFQUQuCgkqIGZsb3cuYyAocHJvcGFnYXRlX29uZV9pbnNuKTogQWxsb3cgZGVsZXRpb24gb2YgcHJvbG9ndWUvZXBpbG9ndWUKCWluc25zIGlmIHRoZXkgaGF2ZSBhIFJFR19NQVlCRV9ERUFEIG5vdGUgYXR0YWNoZWQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9tYXliZV9kZWFkKTogTmV3IGZ1bmN0aW9uLgoJKHJzNjAwMF9lbWl0X2xvYWRfdG9jX3RhYmxlKTogVE9DIGxvYWRzIG1heSBnbyBkZWFkLgoKMjAwMC0wOC0wMSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2Z1bmN0aW9uX2FyZyk6IEZpeCBsYXN0IGNoYW5nZS4gIFZlcmlmeQoJdHlwZSBleGlzdHMgYmVmb3JlIHVzaW5nIGl0LiAgVXNlIG51bWJlciBvZiB3b3JkcyBhcyBhbGlnbm1lbnQKCW90aGVyd2lzZS4KCShpYTY0X2Z1bmN0aW9uX2FyZ19wYXJ0aWFsX25yZWdzLCBpYTY0X2Z1bmN0aW9uX2FyZ19hZHZhbmNlLAoJaWE2NF92YV9hcmcpOiBQcm9wYWdhdGUgaWE2NF9mdW5jdGlvbl9hcmdzIGNoYW5nZXMgaGVyZS4KCjIwMDAtMDgtMDEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvZWxmb3MuaCAoQVNNX0RFQ0xBUkVfT0JKRUNUX05BTUUpOiBDYXJlIGZvciBudWxsIERFQ0wuCgkqIGNvbmZpZy9pYTY0L3N5c3Y0LmggKEFTTV9PVVRQVVRfQUxJR05FRF9ERUNMX0xPQ0FMKTogTGlrZXdpc2UuCgoyMDAwLTA4LTAxICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCglGcm9tIEpvZXJuIFJlbm5lY2tlOgoJKiBzaC5oIChDUFBfU1BFQywgVEFSR0VUX1NXSVRDSEVTKTogQWRkIG00LW5vZnB1LgoJKiBzaC5tZCAodWRpdnNpMywgZGl2c2kzKTogRG9uJ3QgdXNlIGxpYmNhbGxzIHRoYXQgdXNlIHRoZSBGUFUKCXVubGVzcyBUQVJHRVRfU0gzRSBpcyBzZXQuCgkqIHQtc2ggKE1VTFRJTElCX01BVENIRVMpOiBBZGQgbTI9bTQtbm9mcHUuCgoJKiBzaC5tZCAoYXNobHNpM19kLCBhc2hsc2kzX2spOiBSZW1vdmUsIHJlcGxhY2Ugd2l0aAoJKGFzaGxzaTNfc3RkKTogTmV3IHBhdHRlcm4uCgkoYXNobHNpMyBleHBhbmRlcik6IFVzZSBpdCBmb3IgVEFSR0VUX1NIMy4KCSogc2guYyAoZ2VuX2FzaGlmdCk6IFVzZSBpdCBpbnN0ZWFkIG9mIGFzaGxzaTNfay4KClR1ZSBBdWcgIDEgMTI6MzQ6MjEgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBsb29wLmMgKGNhbm9uaWNhbGl6ZV9jb25kaXRpb24pOiAgVXNlIGRlc3RpbmF0aW9uLCBub3Qgc291cmNlIHRvCglkZXRlcm1pbmUgU0VUJ3MgbW9kZS4KCjIwMDAtMDctMzEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmbG93LmMgKGNsZWFyX2xvZ19saW5rcyk6IEZpeCB0eXBvLgoKTW9uIEp1bCAzMSAyMjoxOToyNCAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBsb29wLmMgKGNoZWNrX2RicmFfbG9vcCk6IE1ha2UgY2hhbmdlIGZyb20gSnVseSAxNywgMjAwMCB3b3JrCglvbiB0YXJnZXRzIHdoaWNoIG5lZWQgbW9yZSB0aGFuIG9uZSBpbnNuIGZvciBhIGNvbXBhcmUvY2JyYW5jaAoJb3BlcmF0aW9uLgoKMjAwMC0wNy0zMSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2Z1bmN0aW9uX2FyZyk6IFVzZSBhbGlnbm1lbnQgbm90IHNpemUKCXdoZW4gY29tcHV0aW5nIG9mZnNldC4KCk1vbiBKdWwgMzEgMjA6MzU6NTAgMjAwMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGdlbnBlZXAuYyAobWFpbik6IEhhbmRsZSBERUZJTkVfUEVFUEhPTEUyLgoKMjAwMC0wNy0zMSAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogZmxvdy5jIChjbGVhcl9sb2dfbGlua3MpOiBOdWtlIGdsb2JhbF9saXZlX2F0X3N0YXJ0IGFuZAoJZ2xvYmFsX2xpdmVfYXRfZW5kIGRhdGEsIHNpbmNlIGlmIHRoZSBsb2dfbGlua3Mgc3R1ZmYgaXMgaW52YWxpZAoJc28gaXMgZ2xvYmFsX2xpdmVfYXRfKi4KCjIwMDAtMDctMzEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiB0bS50ZXhpIChBZGRyZXNzaW5nIE1vZGVzKTogQ2xhcmlmeSBQUkUvUE9TVF9NT0RJRlkgZGVzY3JpcHRpb25zLgoKMjAwMC0wNy0zMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjcHBsZXguYyAoX2NwcF9nZXRfbGluZSk6IElmIGluZGV4IGlzIDAsIHJldHVybiBsaW5lIDAgY29sIDAuCgkoX2NwcF9nZXRfdG9rZW4pOiBEb24ndCBtYWNybyBleHBhbmQgYSBqdXN0IHBhc3RlZCB0b2tlbiBpZiBpdAoJd2FzIHBhc3RlZCBhdCBub19leHBhbmRfbGV2ZWwuCgoyMDAwLTA3LTMxICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBtYWNyby5jIChmaW5kX3BhcmFtLCBjb3VudF9wYXJhbXMsIHNhdmVfZXhwYW5zaW9uKToKCVBlcm1pdCAnZGVmaW5lZCcgYXMgYSBtYWNybyBwYXJhbWV0ZXIgbmFtZS4KCjIwMDAtMDctMzEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIE1ha2VmaWxlLmluOiBSZW5hbWUgY3BwIHRvIGNwcDAsIHRyYWRjcHAgdG8gdHJhZGNwcDAsIGFuZAoJeGNwcCB0byBjcHAgdGhyb3VnaG91dC4KCShuYXRpdmUpOiBSZW1vdmUgdW5uZWNlc3NhcnkgZGVwZW5kZW5jeSBvbiBjcHAuCgoJKiBnY2MuYyAodHJhZF9jYXBhYmxlX2NwcCwgQyBzcGVjcyk6IFJlbmFtZSBjcHAgdG8gY3BwLAoJdHJhZGNwcCB0byB0cmFkY3BwMC4KCSguaSBzcGVjKTogQWRkIG1pc3Npbmcgb3V0cHV0LWZpbGUgc3BlYyB0byBjYzEgY29tbWFuZCBsaW5lLgoJKiBvYmpjL2xhbmctc3BlY3MuaDogUmVuYW1lIGNwcCB0byBjcHAwIGFuZC9vciB0cmFkY3BwIHRvIHRyYWRjcHAwLgoKMjAwMC0wNy0zMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogYy1kZWNsLmMgKG1lc2dfaW1wbGljaXRfZnVuY3Rpb25fZGVjbGFyYXRpb24pOiBJbml0IHRvIC0xLgoJKGltcGxpY2l0X2RlY2xfd2FybmluZyk6IE5ldyBmdW5jdGlvbi4KCShpbXBsaWNpdGx5X2RlY2xhcmUpOiBVc2UgaXQuCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2V4dGVybmFsX3JlZik6IFVzZSBpbXBsaWNpdF9kZWNsX3dhcm5pbmcKCXRvIGNvbXBsYWluIGFib3V0IGltcGxpY2l0IGRlY2xzIG9mIGJ1aWx0aW5zLgoKCSogYy1sYW5nLmMgKGxhbmdfaW5pdCk6IFNldCBtZXNnX2ltcGxpY2l0X2Z1bmN0aW9uX2RlY2xhcmF0aW9uCgliYXNlZCBvbiBwZWRhbnRpYyAmJiBmbGFnX2lzb2M5OSwgaWYgbm90IGFscmVhZHkgc2V0LgoJKiBjLXRyZWUuaDogRGVjbGFyZSBtZXNnX2ltcGxpY2l0X2Z1bmN0aW9uX2RlY2xhcmF0aW9uLgoJUHJvdG90eXBlIGltcGxpY2l0X2RlY2xfd2FybmluZy4KCjIwMDAtMDctMzAgIEplZmZyZXkgRC4gT2xkaGFtICA8b2xkaGFtQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoc3NhLm8pOiBVcGRhdGVkIGhlYWRlciBmaWxlcyBpbiBkZXBlbmRlbmNlcy4KCSogYmFzaWMtYmxvY2suaDogQWRkZWQgY29tcHV0ZV9pbW1lZGlhdGVfcG9zdGRvbWluYXRvcnMgZGVjbGFyYXRpb24uCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoQ09OVkVSVF9IQVJEX1JFR0lTVEVSX1RPX1NTQV9QKTogQWRkZWQKCWRlZmluaXRpb24uCgkqIGZsb3cuYyAoY29tcHV0ZV9pbW1lZGlhdGVfZG9taW5hdG9ycyk6IFVwZGF0ZWQgY29tbWVudC4KCShjb21wdXRlX2ltbWVkaWF0ZV9wb3N0ZG9taW5hdG9ycyk6IEFkZGVkIGRlZmluaXRpb24uCgkqIHJ0bC5oIChIQVJEX1JFR0lTVEVSX1ApOiBBZGRlZCBkZWZpbml0aW9uLgoJKiBzc2EuYzogSW5jbHVkZSBhZGRpdGlvbmFsIGhlYWRlciBmaWxlcy4KCShhc3NlcnQpOiBBZGRlZCBkZWZpbml0aW9uLgoJKHNzYV9yZW5hbWVfdG9fbG9va3VwKTogQWRkZWQgdG8gcmVpbXBsZW1lbnQgc3NhX3JlbmFtZV90byB0bwoJaW5jbHVkZSBzZWxlY3QgaGFyZCByZWdpc3RlcnMuCgkoc3NhX3JlbmFtZV90b19pbnNlcnQpOiBMaWtld2lzZS4KCShzc2FfcmVuYW1lX2Zyb21faW5pdGlhbGl6ZSk6IExpa2V3aXNlLgoJKHNzYV9yZW5hbWVfZnJvbV9sb29rdXApOiBMaWtld2lzZS4KCShvcmlnaW5hbF9yZWdpc3Rlcik6IExpa2V3aXNlLgoJKHNzYV9yZW5hbWVfZnJvbV9pbnNlcnQpOiBBZGRlZCB0byByZWltcGxlbWVudCBzc2FfcmVuYW1lX2Zyb20gdG8KCWluY2x1ZGUgc2VsZWN0IGhhcmQgcmVpZ3N0ZXJzLgoJKHNzYV9yZW5hbWVfZnJvbV90cmF2ZXJzZSk6IExpa2V3aXNlLgoJKHNzYV9yZW5hbWVfZnJvbV9mcmVlKTogTGlrZXdpc2UuCgkoc3NhX3JlbmFtZV9mcm9tX3ByaW50KTogTGlrZXdpc2UuCgkoc3NhX3JlbmFtZV9mcm9tX3ByaW50XzEpOiBMaWtld2lzZS4KCShzc2FfcmVuYW1lX2Zyb21faGFzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKHNzYV9yZW5hbWVfZnJvbV9lcXVhbCk6IExpa2V3aXNlLgoJKHNzYV9yZW5hbWVfZnJvbV9kZWxldGUpOiBMaWtld2lzZS4KCShzaW1wbGlmeV90b19pbW1lZGlhdGVfZG9taW5hdG9ycyk6IFJlbW92ZWQgaW4gZmF2b3Igb2YKCWZsb3cuYzpjb21wdXRlX2ltbWVkaWF0ZV9kb21pbmF0b3JzLgoJKGZpbmRfZXZhbHVhdGlvbnNfMSk6IE1vZGlmaWVkIHRvIHdvcmsgd2l0aCBoYXJkIHJlZ2lzdGVycy4KCShpbnNlcnRfcGhpX25vZGUpOiBMaWtld2lzZS4KCShpbnNlcnRfcGhpX25vZGVzKTogTGlrZXdpc2UuCgkoc3RydWN0IHJlbmFtZV9zZXRfZGF0YSk6IFVwZGF0ZWQgcHJldl9yZWcgY29tbWVudC4KCShjcmVhdGVfZGVsYXllZF9yZW5hbWUpOiBNb2RpZmllZCB0byB3b3JrIHdpdGggaGFyZCByZWdpc3RlcnMuCgkoUkVOQU1FX05PX1JUWCk6IFVwZGF0ZWQgY29tbWVudC4KCShhcHBseV9kZWxheWVkX3JlbmFtZXMpOiBNb2RpZmllZCB0byB3b3JrIHdpdGggaGFyZCByZWdpc3RlcnMuCgkocmVuYW1lX2luc25fMSk6IExpa2V3aXNlIGFuZCBhZGRlZCBoYW5kbGluZyBvZiBDTE9CQkVSIHJ0bHMuCgkocmVuYW1lX2Jsb2NrKTogVXBkYXRlZCB0byB1c2UgcmV2aXNlZCBzc2FfcmVuYW1lX3RvIGludGVyZmFjZS4KCShyZW5hbWVfcmVnaXN0ZXJzKTogVXBkYXRlZCB0byB1c2UgcmV2aXNlZCBzc2FfcmVuYW1lX3RvIGFuZAoJc3NhX3JlbmFtZV9mcm9tIGludGVyZmFjZS4KCShjb252ZXJ0X3RvX3NzYSk6IFJldmlzZWQgdG8gdXNlIGNvbXB1dGVfaW1tZWRpYXRlX2RvbWluYXRvcnMgYW5kCglkZWFsIHdpdGggaGFyZCByZWdpc3RlcnMuCgkobWFrZV9yZWdzX2VxdWl2YWxlbnRfb3Zlcl9iYWRfZWRnZXMpOiBNb2RpZmllZCB0byB3b3JrIHdpdGggaGFyZAoJcmVnaXN0ZXJzLiAgQWRkZWQgY2hlY2sgZm9yIGlsbGVnYWwgdW5pZmljYXRpb24gb2YgaGFyZCByZWdpc3Rlci4KCShtYWtlX2VxdWl2YWxlbnRfcGhpX2FsdGVybmF0aXZlc19lcXVpdmFsZW50KTogTW9kaWZpZWQgdG8gd29yawoJd2l0aCBoYXJkIHJlZ2lzdGVycy4KCShjb21wdXRlX2NvbnNlcnZhdGl2ZV9yZWdfcGFydGl0aW9uKTogTGlrZXdpc2UuCgkoY29hbGVzY2VfaWZfdW5jb25mbGljdGluZyk6IE1vZGlmaWVkIHRvIHdvcmsgd2l0aCBoYXJkIHJlZ2lzdGVycwoJYW5kIGNoZWNrIGZvciBjb25mbGljdGluZyBoYXJkIHJlZ2lzdGVycy4KCShtYXJrX3BoaV9hbmRfY29weV9yZWdzKTogUmV2aXNlZCBsb29wIHRvIHdvcmsgb25seSBvbiBwc2V1ZG8KCXJlZ2lzdGVycy4KCShyZW5hbWVfZXF1aXZhbGVudF9yZWdzX2luX2luc24pOiBNb2RpZmllZCB0byB3b3JrIHdpdGggaGFyZAoJcmVnaXN0ZXJzLgoJKHJlY29yZF9jYW5vbmljYWxfZWxlbWVudF8xKTogQWRkZWQgZGVmaW5pdGlvbi4KCShjaGVja19oYXJkX3JlZ3NfaW5fcGFydGl0aW9uKTogQWRkZWQgZGVmaW5pdGlvbi4KCShjb252ZXJ0X2Zyb21fc3NhKTogQWRkZWQgZGF0YSBzdHJ1Y3R1cmUgZGVhbGxvY2F0aW9uIGFuZCBjaGVjawoJZm9yIGlsbGVnYWwgaGFyZCByZWdpc3RlciB1bmlmaWNhdGlvbi4KCShjb25mbGljdF9oYXJkX3JlZ3NfcCk6IEFkZGVkIGRlZmluaXRpb24uCgkqIHRvcGxldi5jIChyZXN0X29mX2NvbXBpbGF0aW9uKTogQWRkZWQgY29tbWVudC4KCjIwMDAtMDctMzEgIEFudGhvbnkgR3JlZW4gIDxncmVlbkByZWRoYXQuY29tPgoKCSogY29uZmlnL2lhNjQvY3J0YmVnaW4uYXNtIChfX0VIX0ZSQU1FX0JFR0lOX18pOiBBbGlnbiBjb3JyZWN0bHkuCgoyMDAwLTA3LTMxICBKYXNvbiBNY011bGxhbiAgPGptY211bGxhbkBsaW51eGNhcmUuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fYXBwbHkpOiBEb24ndCBkZWZlciBwb3AgZHVyaW5nCglhcmd1bWVudCBzZXR1cC4KCjIwMDAtMDctMzEgSGVybWFuIEEuSi4gdGVuIEJydWdnZSA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCgkqIGNhbGxzLmMgKGNvbWJpbmVfcGVuZGluZ19zdGFja19hZGp1c3RtZW50X2FuZF9jYWxsKTogT25seSB1c2UKCXByZWZlcnJlZF91bml0X3N0YWNrX2JvdW5kYXJ5IHdoZW4gaXQgaXMgPiAxLgoKMjAwMC0wNy0zMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1jb21tb24uYyAoaW5pdF9mdW5jdGlvbl9mb3JtYXRfaW5mbyk6IEFkZCBDOTkgZm9ybWF0IGZ1bmN0aW9ucwoJaW4gQzk5IG1vZGUuCgoJKiBjLWRlY2wuYyAoZ2V0X3Bhcm1faW5mbyk6IERvbid0IHRyZWF0ICdjb25zdCB2b2lkJywgJ3ZvbGF0aWxlCgl2b2lkJyBvciAncmVnaXN0ZXIgdm9pZCcgYXMgYmVpbmcgdGhlIHNwZWNpYWwgY2FzZSBvZiAndm9pZCcgYWxvbmUKCWluIGEgcGFyYW1ldGVyIGxpc3QuCgoJKiBjLXR5cGVjay5jIChidWlsZF9jX2Nhc3QpOiBDaGFuZ2UgLVdjYXN0LXF1YWwgcGVkd2FybiBmb3IKCWRpc2NhcmRpbmcgcXVhbGlmaWVycyBpbnRvIGEgcGxhaW4gd2FybmluZy4KCjIwMDAtMDctMzEgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29tYmluZS5jOiBGaXggZm9ybWF0dGluZy4KCgkqIGg4MzAwLm1kOiBGaXggZm9ybWF0dGluZy4KCgkqIGxvY2FsLWFsbG9jLmM6IEZpeCBmb3JtYXR0aW5nLgoKCSogaDgzMDAuYyAoZ2V0X3NoaWZ0X2FsZyk6IFJlbW92ZSB0aGUgdmFyaWFibGUgYWxnLgoJKGVtaXRfYV9zaGlmdCk6IFJlYXJyYW5nZSBjb2RlIHRvIGltcHJvdmUgcmVhZGFiaWxpdHkuCgoJKiBoODMwMC5tZCAobW92c2lfaDgzMDBocyk6IFJlYXJyYW5nZSBjb2RlIHRvIGltcHJvdmUgcmVhZGFiaWxpdHkuCgoJKiBoODMwMC5oIChNT0RFU19USUVBQkxFX1ApOiBBY2NlcHQgYSBjb21iaW5hdGlvbiBvZiBRSW1vZGUgYW5kCglISW1vZGUgb24gYWxsIGFyY2hpdGVjdHVyZXMgYW5kIGEgY29tYmluYXRpb24gb2YgSEltb2RlIGFuZCBTSW1vZGUKCW9uIEg4LzMwMEggYW5kIEg4L1MuCgoJKiBoODMwMC5jIChzcGxpdF9hZGRzX3N1YnMpOiBSZWFycmFuZ2UgY29kZSBmb3IgY29uY2lzZW5lc3MuCgpNb24gSnVsIDMxIDEyOjI3OjU1IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoYWRkc2kgdG8gbGVhIHNwbGl0dGVyLCBhc2hscWkzXzFfbGVhKTogRml4IGJ1Z3MKCWluIG15IGxhc3QgY2hlY2tpbi4KCk1vbiBKdWwgMzEgMTA6NDE6MDEgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiByZWNvZy5jIChleHRyYWN0X2luc24pOiBTZXQgb3BlcmFuZF9tb2RlIGFjY29yZGluZyB0bwoJb3BlcmFuZCBpZiBtYXRjaF9vcGVyYW5kIGlzIFZPSURtb2RlLgoKTW9uIEp1bCAzMSAxMDozNjozOCBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHJlY29nLmMgKHZhbGlkYXRlX3JlcGxhY2VfcnR4XzEpOiBEbyBub3QgYWJvcnQgZm9yIChuaWwpIGV4cHJlc3Npb24uCgoyMDAwLTA3LTMxICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjLXBhcnNlLmluIChleHRkZWZzKTogQ2FsbCBnZ2NfY29sbGVjdCBiZXR3ZWVuIGV4dGVybmFsCglkZWZpbml0aW9ucy4KCjIwMDAtMDctMzAgIE1pY2hhZWwgSGF5ZXMgIDxtaGF5ZXNAY3lnbnVzLmNvbT4KCSAgICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKE9CSlMpOiBBZGQgZG9sb29wLm8uCgkqIGRvbG9vcC5jOiBOZXcgZmlsZS4KCgkqIGZpbmFsLmMgKGluc25fY3VycmVudF9yZWZlcmVuY2VfYWRkcmVzcyk6IFJldHVybiAwIGJlZm9yZSBmaW5hbC4KCSogZmxhZ3MuaCAoZmxhZ19icmFuY2hfb25fY291bnRfcmVnKTogRml4IHR5cG9zIGluIGNvbW1lbnRhcnkuCgkqIGp1bXAuYyAoYW55X3VuY29uZGp1bXBfcCk6IExpa2V3aXNlLgoJKiBsb29wLmMgKGluZGlyZWN0X2p1bXBfaW5fZnVuY3Rpb24pOiBNYWtlIHN0YXRpYy4KCShzdHJlbmd0aF9yZWR1Y2UpOiBDYWxsIGRvbG9vcF9vcHRpbWl6ZS4KCShpbnNlcnRfYmN0LCBpbnN0cnVtZW50X2xvb3BfYmN0KTogUmVtb3ZlLgoJKiBsb29wLmggKGRvbG9vcF9vcHRpbWl6ZSk6IFByb3RvdHlwZS4KCSogcmVjb2cuYyAoc3BsaXRfYWxsX2luc25zKTogU3BsaXQgYWxsIElOU05fUC4KCSogdG9wbGV2LmMgKGZsYWdfYnJhbmNoX29uX2NvdW50X3JlZyk6IERlZmF1bHQgb24uCgoJKiBjb25maWcvYzR4L2M0eC5jIChjNHhfb3B0aW1pemF0aW9uX29wdGlvbnMpOiBEb24ndCBzZXQKCWZsYWdfYnJhbmNoX29uX2NvdW50X3JlZy4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChvdmVycmlkZV9vcHRpb25zKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKG9wdGltaXphdGlvbl9vcHRpb25zKTogTGlrZXdpc2UuCgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChkZWNyZW1lbnRfYW5kX2JyYW5jaF9vbl9jb3VudCk6IFJlbW92ZS4KCShkb2xvb3BfZW5kKTogTmV3LgoJKGRicmFfZ2UpOiBSZW1vdmUsIGFzIHdlbGwgYXMgYWxsIGl0J3Mgc3BsaXR0ZXJzLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGRlY3JlbWVudF9hbmRfYnJhbmNoX29uX2NvdW50KTogUmVtb3ZlLgoJKGRvbG9vcF9lbmQpOiBOZXcuCgoJKiBjb25maWcvaWE2NC9pYTY0LXByb3Rvcy5oIChhcl9sY19yZWdfb3BlcmFuZCk6IERlY2xhcmUuCgkoaWE2NF9yZWdpc3Rlcl9tb3ZlX2Nvc3QpOiBEZWNsYXJlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGFyX2xjX3JlZ19vcGVyYW5kKTogTmV3LgoJKHN0cnVjdCBpYTY0X2ZyYW1lX2luZm8pOiBBZGQgYXJfc2l6ZS4KCShpYTY0X2NvbXB1dGVfZnJhbWVfc2l6ZSk6IFNldCBpdC4KCShzYXZlX3Jlc3RvcmVfaW5zbnMpOiBTYXZlIGFuZCByZXN0b3JlIGFyLmxjLgoJKGlhNjRfcmVnaXN0ZXJfbW92ZV9jb3N0KTogTmV3LCBtb3ZlZCBmcm9tIGhlYWRlciBmaWxlLiAgSGFuZGxlCglhcHBsaWNhdGlvbiByZWdpc3RlcnMuCgkoUkVHX0FSX1BGUywgUkVHX0FSX0VDKTogUmVtb3ZlLiAgUmVwbGFjZSB3aXRoIEFSXypfUkVHTlVNIG51bWJlcnMuCgkoZW1pdF9pbnNuX2dyb3VwX2JhcnJpZXJzKTogU3BlY2lhbCBjYXNlIGRvbG9vcF9lbmRfaW50ZXJuYWwuCgkoaWE2NF9lcGlsb2d1ZV91c2VzKTogTWFyayBhci5sYyBsaXZlIGF0IGVuZC4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChBUl9DQ1ZfUkVHTlVNLCBBUl9MQ19SRUdOVU0pOiBOZXcgcmVnaXN0ZXJzLgoJKEFSX0VDX1JFR05VTSwgQVJfUEZTX1JFR05VTSk6IE5ldyByZWdpc3RlcnMuCgkoRklSU1RfUFNFVURPX1JFR0lTVEVSKTogTWFrZSByb29tLgoJKEFSX01fUkVHTk9fUCwgQVJfSV9SRUdOT19QLCBBUl9SRUdOT19QKTogTmV3LgoJKEZJWEVEX1JFR0lTVEVSUywgQ0FMTF9VU0VEX1JFR0lTVEVSUyk6IFVwZGF0ZS4KCShSRUdfQUxMT0NfT1JERVIpOiBVcGRhdGUuCgkoSEFSRF9SRUdOT19NT0RFX09LKTogVXBkYXRlLgoJKFJFR0lTVEVSX05BTUVTKTogVXBkYXRlLgoJKGVudW0gcmVnX2NsYXNzKTogQWRkIEFSX01fUkVHUyBhbmQgQVJfSV9SRUdTLgoJKFJFR19DTEFTU19OQU1FUywgUkVHX0NMQVNTX0NPTlRFTlRTKTogVXBkYXRlLgoJKFJFR05PX1JFR19DTEFTUyk6IFVwZGF0ZS4KCShMRUdJVElNQVRFX0FERFJFU1NfRElTUCk6IERpc3BsYWNlbWVudCByYW5nZSBpcyA5IGJpdHMsIG5vdCAxMC4KCShSRUdJU1RFUl9NT1ZFX0NPU1QpOiBNb3ZlIG91dCBvZiBsaW5lLgoJKFBSRURJQ0FURV9DT0RFUyk6IFVwZGF0ZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobW92ZGkgcGF0dGVybnMpOiBIYW5kbGUgYXIgcmVnaXN0ZXIgY2xhc3Nlcy4KCShhZGRzaTNfcGx1czFfYWx0LCBhZGRkaTNfcGx1czFfYWx0KTogTmV3LgoJKHNobGFkZF9lbGltIHNwbGl0dGVyKTogQWxsb3cgY29uc3RhbnRzIGluIHRoZSBwcmVkaWNhdGUuCgkoZG9sb29wX2VuZCwgZG9sb29wX2VuZF9pbnRlcm5hbCk6IE5ldy4KCjIwMDAtMDctMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBnZW5hdHRydGFiLmMgKHN0cnVjdCBpbnNuX2RlZik6IEFkZCBsaW5lbm8gbWVtYmVyLgoJKHN0cnVjdCBpbnNuX2VudCk6IExpa2V3aXNlLgoJKHN0cnVjdCBhdHRyX2Rlc2MpOiBMaWtld2lzZS4KCShzdHJ1Y3QgZGVsYXlfZGVzYyk6IExpa2V3aXNlLgoJKHN0cnVjdCBmdW5jdGlvbl91bml0X29wKTogTGlrZXdpc2UuCgkoc3RydWN0IGZ1bmN0aW9uX3VuaXQpOiBMaWtld2lzZS4KCShjaGVja19hdHRyX3ZhbHVlKTogVXNlIG1lc3NhZ2Vfd2l0aF9saW5lLgoJKGNoZWNrX2RlZnMpOiBMaWtld2lzZS4KCShleHBhbmRfdW5pdHMpOiBMaWtld2lzZS4KCShjaGVja19hdHRyX3Rlc3QpOiBUYWtlIGEgbGluZW5vIGFyZ3VtZW50LgoJKGdlbl9hdHRyKTogTGlrZXdpc2UuCgkoZ2VuX2luc24pOiBMaWtld2lzZS4KCShnZW5fZGVsYXkpOiBMaWtld2lzZS4KCShnZW5fdW5pdCk6IExpa2V3aXNlLgoJKG1haW4pOiBHaXZlIGl0IHRvIHRoZW0uCgkoY29udmVydF9zZXRfYXR0cl9hbHRlcm5hdGl2ZSk6IFRha2UgYW4gaW5zbl9kZWYgYXJndW1lbnQKCWluc3RlYWQgb2YgbnVtX2FsdCBhbmQgaW5zbl9pbmRleC4KCShjb252ZXJ0X3NldF9hdHRyKTogTGlrZXdpc2UuCgkod3JpdGVfdGVzdF9leHByKTogUHJvdGVjdCBJTlNOX0FERFJFU1NFUyBsb2FkCgl3aXRoIElOU05fQUREUkVTU0VTX1NFVF9QLgoKMjAwMC0wNy0zMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZsb3cuYyAoaW5pdF9wcm9wYWdhdGVfYmxvY2tfaW5mbyk6IFVzZSBwY19zZXQuCgpTdW4gSnVsIDMwIDIwOjU4OjM0IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoKmxlYV9nZW5lcmFsX1sxMjNdKSBOZXcgaW5zbnMgYW5kIHNwbGl0cy4KCShhZGRzaTMgdG8gbGVhIHNwbGl0dGVyKTogSGFuZGxlIG90aGVyIG1vZGVzIHRvby4KCShzaGxzaTMgdG8gbGVhIHNwbGl0dGVyKTogTGlrZXdpc2UuCgkoYWRkaGlfMV9sZWEsIHNobGhpXzFfbGVhKTogTmV3IHBhdHRlcm5zLgoJKGFkZGhpXzEsIHNobGhpXzEpOiBDb25kaXRpb25pemUgYnkgUEFSVElBTF9SRUdfU1RBTEwuCgpTdW4gSnVsIDMwIDIwOjUxOjI1IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVjb2cuYyAoZ2VuZXJhbF9vcGVyYW5kLCBub25pbW1lZGlhdGVfb3BlcmFuZCk6IEFjY2VwdAoJYW55IG1vZGUgZm9yIFZPSURtb2RlIENPTlNUQU5UX1Agb3BlcmFuZHMuCgpTdW4gSnVsIDMwIDIwOjQyOjIxIE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZ2NzZS5jICh0cnlfcmVwbGFjZV9yZWcpOiBVc2UgdmFsaWRhdGVfcmVwbGFjZV9ydHhfc3ViZXhwCglpbnN0ZWFkIG9mIHJlcGxhY2VfcnR4LgoJKiByZWNvZy5jICh2YWxpZGF0ZV9yZXBsYWNlX3J0eF9zdWJleHApOiBOZXcgZnVuY3Rpb24uCgkqIHJlY29nLmggKHZhbGlkYXRlX3JlcGxhY2VfcnR4X3N1YmV4cCk6IERlY2xhcmUuCgpTdW4gSnVsIDMwIDIwOjM4OjI2IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9zZXQsIG1ha2VfZXh0cmFjdGlvbiwgbWFrZV9jb21wb3VuZF9vcGVyYXRpb24KCW1ha2VfZmllbGRfYXNzaWdubWVudCk6IFVzZSBmdWxsIG1hc2sgaW5zdGVhZCBvZiBHRVRfTU9ERV9NQVNLIChtb2RlKQoJYXMgZm9yY2VfdG9fbW9kZSBhcmd1bWVudC4KClN1biBKdWwgMzAgMjA6MzA6NDEgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjb21iaW5lLmMgKGlmX3RoZW5fZWxzZV9jb25kKTogQmUgc3VyZSB0aGF0IG1vZGUgZml0cyBpbgoJSE9TVF9XSURFX0lOVC4KClN1biBKdWwgMzAgMjA6Mjc6MzYgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjb21iaW5lLmMgKHJlY29yZF9wcm9tb3RlZF92YWx1ZSk6ICBBbGxvdyBiaXRzaXplIG9mIG1vZGUKCXRvIGJlIGVxdWl2YWxlbnQgdG8gSE9TVF9CSVRTX1BFUl9XSVNFX0lOVC4KClN1biBKdWwgMzAgMjA6MjU6MjEgTUVUIERTVCAyMDAwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBmdW5jdGlvbi5jIChhc3NpZ25fc3RhY2tfbG9jYWxfMSwgYXNzaWduX3N0YWNrX3RlbXBfZm9yX3R5cGUpOgoJRG8gbm90IGNhbGwgZ2VuX21vZGVfYWxpZ25tZW50IHdoZW4gbW9kZSBpcyBCTEttb2RlLgoKU3VuIEp1bCAzMCAyMDoyMTo1NCBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGxvb3AuYyAoZXhwcmVzc19mcm9tXzEpOiBGaXggY2FsbCBvZiBzaW1wbGlmeV9nZW5fYmluYXJ5LgoKU3VuIEp1bCAzMCAyMDowODozNyBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9yZWxhdGlvbmFsX29wZXJhdGlvbik6IFZlcmlmeSB0aGF0IG1vZGUgPT0KCVZPSURtb2RlIGltcGxpZXMgYm90aCBvcGVyYW5kcyB0byBiZSBWT0lEbW9kZS4KCShzaW1wbGlmeV90ZXJuYXJ5X29wZXJhdGlvbik6IENvbXB1dGUgcHJvcGVybHkgdGhlIG1vZGUgb2YgY29tcGFyaXNvbi4KCSogY29tYmluZS5jIChjb21iaW5lX3NpbXBsaWZ5X3J0eCk6IExpa2V3aXNlLgoKMjAwMC0wNy0yNSAgTWljaGFlbCBIYXllcyAgPG1waEBwYXJhZGlzZS5uZXQubno+CgoJKiBiYXNpYy1ibG9jay5oIChzdHJ1Y3QgbG9vcHMpOiBOZXcgZmllbGQgcmNfb3JkZXIuCgkqIGZsb3cuYyAoZmxvd19sb29wc19jZmdfZHVtcCk6IER1bXAgcmNfb3JkZXIgaWYgY29tcHV0ZWQuCgkoZmxvd19sb29wc19mcmVlKTogRnJlZSByY19vcmRlci4KCShmbG93X2RlcHRoX2ZpcnN0X29yZGVyX2NvbXB1dGUpOiBOZXcgcGFyYW1ldGVyIHJjX29yZGVyLgoJKGZsb3dfbG9vcHNfZmluZCk6IEFsbG9jYXRlIHJjX29yZGVyIGFuZCBzd2FwIHVzYWdlIHdpdGgKCWRmc19vcmRlci4KCjIwMDAtMDctMzAgSGVybWFuIEEuSi4gdGVuIEJydWdnZSA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCSAgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4Lm1kIChzZXRfbGRwX3Byb2xvZ3VlKTogQWRkIGZvciBSVEwgcHJvbG9ndWUvZXBpbG9ndWUuCgkocHVzaF9zdCwgcHVzaF9kcCwgcG9wX3N0LCBwb3BfZHAsIHBvcHFpX3Vuc3BlYyk6IExpa2V3aXNlLgoJKG5vZGJfY2FsbCwgcmV0dXJuX2Zyb21fZXBpbG9ndWUpOiBMaWtld2lzZS4KCShyZXR1cm5fZnJvbV9pbnRlcnJ1cHRfZXBpbG9ndWUsIHByb2xvZ3VlLCBlcGlsb2d1ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvYzR4L2M0eC5jIChjNHhfZXhwYW5kX3Byb2xvZ3VlLCBjNHhfZXhwYW5kX2VwbGlsb2d1ZSk6IEFkZC4KCSogY29uZmlnL2M0eC9jNHgtcHJvdG9zLmggKGM0eF9pbnRlcnJ1cHRfZnVuY3Rpb25fcCk6IEFkZC4KCShjNHhfZXhwYW5kX3Byb2xvZ3VlLCBjNHhfZXhwYW5kX2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkoYzR4X3ZhbGlkX3R5cGVfYXR0cmlidXRlX3ApOiBMaWtld2lzZS4KCSogY29uZmlnL2M0eC9jNHguaCAoRlVOQ1RJT05fUFJPTE9HVUUsIEZVTkNUSU9OX0VQSUxPR1VFKTogRGVsZXRlLgoJKEZVTkNUSU9OX0JMT0NLX1BST0ZJTEVSX0VYSVQpOiBDb252ZXJ0IHRvIGVtaXQgUlRMLgoKMjAwMC0wNy0zMCAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguYyAoYzR4X2VtaXRfbW92ZV9zZXF1ZW5jZSk6IFVzZSBsb2FkcWlfYmlnX2NvbnN0YW50CglhbmQgbG9hZGhpX2JpZ19jb25zdGFudCBpZiBhcHBsaWNhYmxlLgoJKiBjb25maWcvYzR4L2M0eC5tZCAobG9hZHFpX2JpZ19jb25zdGFudCwgbG9hZGhpX2JpZ19jb25zdGFudCk6IFR3ZWFrCglhbmQgYWRkIG5ldyBzcGxpdHRlci5zCgoyMDAwLTA3LTMwICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2M0eC5jIChjNHhfcnB0Yl9pbnNlcnQpOiBNYWtlIG1vcmUgcm9idXN0LgoKMjAwMC0wNy0zMCAgTWljaGFlbCBIYXllcyAgPG0uaGF5ZXNAZWxlYy5jYW50ZXJidXJ5LmFjLm56PgoKCSogY29uZmlnL2M0eC9jNHguaCAoQVNNX0ZPUk1BVF9QUklWQVRFX05BTUUpOiBPdXRwdXQgJCBpbiBsYWJlbC4KCjIwMDAtMDctMzAgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvbmZpZy9jNHgvYzR4LmggKElTX1hYWF9SRUdOTyk6IFJld3JpdGUgdG8gYXZvaWQgdW5zaWduZWQgd2FybmluZ3MuCgoyMDAwLTA3LTMwICBNaWNoYWVsIEhheWVzICA8bS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubno+CgoJKiBjb25maWcvYzR4L2xpYmdjYy5TIChkaXZxZjMpOiBJbXByb3ZlIGFjY3VyYWN5LgoKMjAwMC0wNy0yNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQdXQgcGhpIG5vZGVzIGFmdGVyIE5PVEVfSU5TTl9CQVNJQ19CTE9DSy4KCSogcnRsLmggKE5PVEVfSU5TTl9CQVNJQ19CTE9DS19QKTogTmV3IG1hY3JvLgoJKiBiYi1yZW9yZGVyLmMgKGdldF9uZXh0X2JiX25vdGUpOiBVc2UgTk9URV9JTlNOX0JBU0lDX0JMT0NLX1AuCgkoZ2V0X3ByZXZfYmJfbm90ZSk6IExpa2V3aXNlLgoJKHJlbW92ZV9zY29wZV9ub3Rlcyk6IExpa2V3aXNlLgoJKiBmbG93LmMgKGNvbW1pdF9vbmVfZWRnZV9pbnNlcnRpb24pOiBMaWtld2lzZS4KCShtZXJnZV9ibG9ja3Nfbm9tb3ZlKTogTGlrZXdpc2UuCgkodmVyaWZ5X2Zsb3dfaW5mbyk6IExpa2V3aXNlLgoJKiBnY3NlLmMgKGluc2VydF9pbnNuX2VuZF9iYik6IExpa2V3aXNlLgoJKiByZWctc3RhY2suYyAoZW1pdF9zd2FwX2luc24pOiBMaWtld2lzZS4KCSogc3NhLmMgKGZpcnN0X2luc25fYWZ0ZXJfYmFzaWNfYmxvY2tfbm90ZSk6IE5ldyBmdW5jdGlvbi4KCShpbnNlcnRfcGhpX25vZGUpOiBVc2UgaXQuCgkocmVuYW1lX2Jsb2NrKTogTGlrZXdpc2UuCgkoZWxpbWluYXRlX3BoaSk6IExpa2V3aXNlLgoJKG1ha2VfcmVnc19lcXVpdmFsZW50X292ZXJfYmFkX2VkZ2VzKTogTGlrZXdpc2UuCgkobWFrZV9lcXVpdmFsZW50X3BoaV9hbHRlcm5hdGl2ZXNfZXF1aXZhbGVudCk6IExpa2V3aXNlLgoJKGZvcl9lYWNoX3N1Y2Nlc3Nvcl9waGkpOiBMaWtld2lzZS4KCShjb252ZXJ0X2Zyb21fc3NhKTogTW9kaWZ5IHBoaS1ub2RlIGRlbGV0aW9uIGFsZ29yaXRobS4KCjIwMDAtMDctMjkgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGNvbmZpZ3VyZS5pbiAobWlwcyotKi1saW51eCopOiBVc2UgbWlwcyplbCB0byBjaGVjayBmb3IgbGl0dGxlCgllbmRpYW4gTUlQUywgYWRkIHRtYWtlX2ZpbGUuCgoJKiBjb25maWcvbWlwcy9saW51eC5oIChUQVJHRVRfVkVSU0lPTik6IFVzZSBHTlUvTGludXguCgkoU1VCVEFSR0VUX0NQUF9TUEVDKTogRGVmYXVsdCBNSVBTX0lTQSBpcyAxLgoJUGF0Y2hlcyBieSBNYWNpZWogVy4gUm96eWNraSA8bWFjcm9AZHMyLnBnLmdkYS5wbD4uCgoyMDAwLTA3LTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X3ByaW50X29wZXJhbmQpOiBGaXggdHlwb3MuCglTaWduIGV4dGVuZCBtb2RlIHNpemUgYmVmb3JlIG5lZ2F0aW5nLgoKMjAwMC0wNy0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVtaXQtcnRsLmMgKGdlbl9sb3dwYXJ0X2NvbW1vbik6IEFkZCBtaXNzaW5nICdjJyB2YXJpYWJsZS4KCjIwMDAtMDctMjggIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogY3NlLmMgKGNhbm9uX2hhc2gpOiBIYW5kbGUgUFJFX01PRElGWS9QT1NUX01PRElGWS4KCShjc2VfaW5zbik6IExpa2V3aXNlLgoJKGFkZHJfYWZmZWN0c19zcF9wKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAobW92ZV9ieV9waWVjZXMpOiBMaWtld2lzZS4KCShjbGVhcl9ieV9waWVjZXMpOiBMaWtld2lzZS4KCSogZ2NzZS5jIChvcHJzX3VuY2hhbmdlZF9wKTogTGlrZXdpc2UuCgkqIGhhaWZhLXNjaGVkLmMgKHNjaGVkX2FuYWx5emVfMik6IExpa2V3aXNlLgoJKiByZWNvZy5jIChvZmZzZXR0YWJsZV9hZGRyZXNzX3ApOiBMaWtld2lzZS4KCSogcmVnY2xhc3MuYyAocmVjb3JkX2FkZHJlc3NfcmVncyk6IExpa2V3aXNlLgoJKiByZWxvYWQuYyAoZmluZF9yZXVzYWJsZV9yZWxvYWQpOiBMaWtld2lzZS4KCShwdXNoX3JlbG9hZCk6IExpa2V3aXNlLgoJKG9wZXJhbmRzX21hdGNoX3ApOiBMaWtld2lzZS4KCShkZWNvbXBvc2UpOiBMaWtld2lzZS4KCShmaW5kX3JlbG9hZHNfYWRkcmVzc18xKTogTGlrZXdpc2UuCgkoZmluZF9pbmNfYW1vdW50KTogTGlrZXdpc2UuCgkqIHJlbG9hZDEuYyAoZWxpbWluYXRpb25fZWZmZWN0cyk6IExpa2V3aXNlLgoJKiByZXNvdXJjZS5jIChtYXJrX3NldF9yZXNvdXJjZXMpOiBMaWtld2lzZS4KCSogZmxvdy5jIChhdHRlbXB0X2F1dG9faW5jKTogTmV3IGZ1bmN0aW9uOyBtb3N0bHkgYnJva2VuIG91dAoJb2YgZmluZF9hdXRvX2luYy4KCShmaW5kX2F1dG9faW5jKTogU3BsaXQgaW50byB0d28gZnVuY3Rpb25zIGFuZCBlbmhhbmNlZCB0bwoJZ2VuZXJhdGUgUE9TVF9NT0RJRlkuCgkqIHJ0bC5kZWYgKFBSRV9NT0RJRlksIFBPU1RfTU9ESUZZKTogQWRqdXN0IGNvbW1lbnQuCgkqIHJ0bC5oIChjb3VudF9hbGxfb2NjdXJyZW5jZXMpOiAgRGVjbGFyZS4KCShIQVZFX3tQUkUsUE9TVH1fTU9ESUZZX3tESVNQLFJFR30pOiBQcm92aWRlIGRlZmF1bHQgb2YgMCBpZiBub3QKCWRlZmluZWQuCgkqIHJ0bGFuYWwuYyAoY291bnRfYWxsX29jY3VycmVuY2VzKTogTmV3IGZ1bmN0aW9uLgoJKiB0bS50ZXhpIChIQVZFX1BPU1RfTU9ESUZZX0RJU1AsIEhBVkVfUFJFX01PRElGWV9ESVNQLAoJSEFWRV9QT1NUX01PRElGWV9SRUcsIEhBVkVfUFJFX01PRElGWV9SRUcpOiBEb2N1bWVudC4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmggKGRlc3RpbmF0aW9uX29wZXJhbmQpOiBEZWNsYXJlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGRlc3RpbmF0aW9uX29wZXJhbmQpOiBOZXcgZnVuY3Rpb24uCgkoaWE2NF9wcmludF9vcGVyYW5kKTogSGFuZGxlIFBPU1RfTU9ESUZZLgoJKHJ0eF9uZWVkc19iYXJyaWVyKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoSEFWRV9QT1NUX01PRElGWV9ESVNQKTogRGVmaW5lIHRvIDEuCgkoSEFWRV9QT1NUX01PRElGWV9SRUcpOiBEZWZpbmUgdG8gMS4KCShNQVhfUkVHU19QRVJfQUREUkVTUyk6IENoYW5nZSB0byAyLgoJKEdPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IEFjY2VwdCBQT1NUX01PRElGWSB0b28uCgkoTEVHSVRJTUFURV9BRERSRVNTX1JFRyk6IE5ldyBoZWxwZXIgbWFjcm8uCgkoTEVHSVRJTUFURV9BRERSRVNTX0RJU1ApOiBMaWtld2lzZS4KCShQUkVESUNBVEVfQ09ERVMpOiBBZGQgZW50cnkgZm9yIGRlc3RpbmF0aW9uX29wZXJhbmQuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKGFsbCBtb3YgcGF0dGVybnMpOiBVc2UgZGVzdGluYXRpb25fb3BlcmFuZAoJcHJlZGljYXRlIGZvciBvcGVyYW5kIDAuCgoyMDAwLTA3LTI4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkd2FyZjJvdXQuYzogSW5kZW50ICNlcnJvciBkaXJlY3RpdmUuCgoJKiBnYmwtY3RvcnMuaDogRml4IHR5cG8gaW4gY29tbWVudC4KCShfX2RvX2dsb2JhbF9jdG9ycyk6IFByb3RvdHlwZS4KCgkqIGdjc2UuYyAocmVjb3JkX29uZV9zZXQsIHByZV9kZWxldGUpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcy4KCgkqIHJzNjAwMC5jIChyczYwMDBfbWF5YmVfZGVhZCk6IERlbGV0ZSB1bnVzZWQgcHJvdG90eXBlLgoJKHByaW50X29wZXJhbmQpOiBJbml0aWFsaXplIHZhcmlhYmxlIGB0Jy4KCjIwMDAtMDctMjcgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLm1kICgiY2FsbF92YWx1ZSIpOiByZW1vdmVkIGNvbnN0cmFpbnRzLgoJQ29uc3RyYWludHMgYXJlIGlnbm9yZWQgaW4gZXhwYW5kZXJzLgoJKCpjYWxsX3ZhbHVlX3JlZyk6IHNwbGl0ID1yZiBpbnRvIHZhcmlvdXMgY29uc3RyYWludHMuCgkoKmNhbGxfdmFsdWVfbWVtKTogc2FtZQoJKCpjYWxsX3ZhbHVlX3N5bWJvbCk6IHNhbWUKCSgqc2liY2FsbF92YWx1ZV9pbnNuKTogc2FtZQoKMjAwMC0wNy0yOCAgUGhpbGlwcCBUaG9tYXMgIDxwdGhvbWFzQHN1c2UuZGU+CgoJKiBpbnN0YWxsLnRleGkgKC0tZW5hYmxlLW5scyk6IENoYW5nZSB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIE5MUwoJcmVsYXRlZCBjb25maWd1cmUgb3B0aW9ucyB0byBtYXRjaCB0aGUgY3VycmVudCBzdGF0ZS4KCSgtLXdpdGgtaW5jbHVkZWQtZ2V0dGV4dCk6IExpa2V3aXNlLgoJKC0tZW5hYmxlLW1haW50YWluZXItbW9kZSk6IE5ldyBkZXNjcmlwdGlvbiBhZGRlZC4KCSogZXh0ZW5kLnRleGkgKC1mc3RyaWN0LXByb3RvdHlwZSk6IEFkZCBtaXNzaW5nICcuJy4KCjIwMDAtMDctMjcgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGR3YXJmMm91dC5jIChnZW5fZGVjbF9kaWUpOiBEb24ndCBjYWxsIGdlbl9hYnN0cmFjdF9mdW5jdGlvbiBpZgoJREVDTF9JTklUSUFMIChkZWNsKSA9PSBOVUxMX1RSRUUuCgoyMDAwLTA3LTI3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChJTlNOX0FUVFJfSCk6IE5ldyBtYWNyby4gIFJlcGxhY2UgYWxsIGRlcGVuZGVuY2llcwoJb24gaW5zbi1hdHRyLmggd2l0aCBpdC4KCSogZ2VuYXR0ci5jOiBHZW5lcmF0ZSBgI2luY2x1ZGUgImluc24tYWRkci5oIicgaWYgSEFWRV9BVFRSX2xlbmd0aC4KCSogaW5zbi1hZGRyLmg6IE5ldyBoZWFkZXIuCgkoaW5zbl9hZGRyZXNzZXNfKTogUmVuYW1lZCBmcm9tIGluc25fYWRkcmVzc2VzLgoJKElOU05fQUREUkVTU0VTX0RFRk4sIElOU05fQUREUkVTU0VTLCBJTlNOX0FERFJFU1NFU19BTExPQywKCUlOU05fQUREUkVTU0VTX0ZSRUUsIElOU05fQUREUkVTU0VTX1NFVF9QLCBJTlNOX0FERFJFU1NFU19TSVpFLAoJSU5TTl9BRERSRVNTRVNfTkVXKTogTmV3IG1hY3Jvcy4KCSogZ2VuYXR0cnRhYi5jICh3cml0ZV90ZXN0X2V4cHIpOiBVc2UgbmV3IG1hY3Jvcy4KCSogZmluYWwuYyAoaW5zbl9hZGRyZXNzZXMsIGluaXRfaW5zbl9sZW5ndGhzKTogTGlrZXdpc2UuCgkoYWxpZ25fZnV6eiwgc2hvcnRlbl9icmFuY2hlcyk6IExpa2V3aXNlLgoJKGZpbmFsKTogTGlrZXdpc2UuICBEbyBub3QgcmVqZWN0IG5ldyBpbnNucyBpZiB0aGVpciBhZGRyZXNzZXMKCWhhdmUgYmVlbiBhZGRlZCB0byBJTlNOX0FERFJFU1NFUy4KCSogY29uZmlnL2FybS9hcm0uYywgY29uZmlnL2F2ci9hdnIuYzogVXNlIG5ldyBtYWNyb3MuCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jLCBjb25maWcvaTM3MC9pMzcwLmM6IExpa2V3aXNlLgoJKiBjb25maWcvbTg4ay9tODhrLmMsIGNvbmZpZy9wYS9wYS5jLCBjb25maWcvcGEvcGEubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYywgY29uZmlnL3NwYXJjL3NwYXJjLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3NoLmM6IExpa2V3aXNlLgoJKG91dHB1dF9icmFuY2h5X2luc24pOiBVc2UgSU5TTl9BRERSRVNTRVNfTkVXLgoKCSogTWFrZWZpbGUuaW4gKGJvb3RzdHJhcCk6IE1vdmUgLUJzdGFnZU4vIGJhY2sgdG8gdGhlIGJlZ2lubmluZy4KCjIwMDAtMDctMjcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIGdjYy5jIChzdHJ1Y3QgcHJlZml4X2xpc3QpOiBBZGQgbWVtYmVyIHByaW9yaXR5LgoJKGVudW0gcGF0aF9wcmVmaXhfcHJpb3JpdHkpOiBEZWNsYXJlLgoJKGFkZF9wcmVmaXgpOiBSZXBsYWNlIGBgZmlyc3QnJyB3aXRoIGBgcHJpb3JpdHknJy4gIEFwcGVuZCBuZXcKCWVudHJ5IGJ1dCBrZWVwIGxpc3QgaW4gcHJpb3JpdHkgb3JkZXIuCgkocHJvY2Vzc19jb21tYW5kKTogVXBkYXRlLiAgUGFzcyBQUkVGSVhfUFJJT1JJVFlfQl9PUFQgb3IKCVBSRUZJWF9QUklPUklUWV9MQVNUIHRvIGFkZF9wcmVmaXguCgkocHJvY2Vzc19jb21tYW5kKTogTW92ZSBpbmNsdWRlIGtsdWRnZSAtIGZvby9zdGFnZU4gLSB0byBiZWZvcmUKCWZvby9pbmNsdWRlLgoKMjAwMC0wNy0yNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYyAoZ2VuX3R5cGVkZWZfZGllKTogQWJvcnQgaWYgd2UgZ2V0IGlkZW50aWNhbAoJVFJFRV9UWVBFIGFuZCBERUNMX09SSUdJTkFMX1RZUEUgb24gYSB0eXBlZGVmLgoKMjAwMC0wNy0yNyAgUm9kbmV5QnJvd24gIDxSb2RuZXlCcm93bkBwbXNjLmNvbT4KCgkqIGV4cHIuaCAoZ2V0X2FsaWFzX3NldCwgbGFuZ19nZXRfYWxpYXNfc2V0KTogRGVsZXRlIHByb3RvdHlwZXMuCgkqIHRyZWUuaCAoZ2V0X2FsaWFzX3NldCwgbGFuZ19nZXRfYWxpYXNfc2V0KTogUHJvdG90eXBlLgoKMjAwMC0wNy0yNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYy1kZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IERvbid0IHRyZWF0ICdtYWluJyBzcGVjaWFsbHkgdW5sZXNzCglmbGFnX2hvc3RlZC4gIEluIEM5OSBtb2RlLCByZXR1cm4gMCBmcm9tICdtYWluJyB1bmxlc3MKCURFRkFVTFRfTUFJTl9SRVRVUk4gaXMgb3RoZXJ3aXNlIGRlZmluZWQuCgoJKiBjLWRlY2wuYyAoc3RvcmVfcGFybV9kZWNscyk6IEluIEM5OSBtb2RlLCBwZWR3YXJuIGZvciBmdW5jdGlvbgoJcGFyYW1ldGVycyBkZWZhdWx0aW5nIHRvIGludCBpbiBhbiBvbGQtc3R5bGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4KCjIwMDAtMDctMjcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtcGFyc2UuaW4gKHN0cmluZyk6IEZvciAtV3RyYWRpdGlvbmFsLCB3YXJuIGFib3V0IHN0cmluZwoJY29uY2F0ZW5hdGlvbiBvbmx5IG9uY2UgcGVyIGxpbmUuCgpUaHUgSnVsIDI3IDA5OjI1OjE3IDIwMDAgIEFraWtvIE1hdHN1c2hpdGEgIDxtYXR1c2l0YUBzcmEuY28uanA+CgoJKiBwYS94LXBhLWhwdXg6IEFkZCAtRF9ISVVYX1NPVVJDRSB0byBGSVhQUk9UT19ERUZJTkVTCglmb3IgSEktVVgvV0UyIHN5c3RlbXMuCgoyMDAwLTA3LTI0ICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGZpeGluY2wvZml4Zml4ZXMuYyhlbWl0X2dudV90eXBlKTogcmV3cm90ZSB0byAqcmVseSogb24gR0NDCglkZWZpbmluZyB0aGUgX194eHhfVFlQRV9fIG1hY3Jvcy4KCSogZml4aW5jbC9maXhpbmNsLnRwbChnbnVfdHlwZV9tYXApOiBub3cgb2Jzb2xldGUKCSogZml4aW5jbC9maXhsaWIuaDogZG9uJ3QgbmVlZCB0byBpbmNsdWRlICJ0bS5oIiBhbnltb3JlCgkqIGZpeGluY2wvaW5jbGhhY2suZGVmKHR5cGVfbWFwKTogbm93IG9ic29sZXRlCgpUaHUgSnVsIDI3IDExOjU0OjE3IDIwMDAgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIGNwcC50ZXhpOiBBcHBlbmQgYSB0cmFpbGluZyBmdWxsLXN0b3AgdG8geHJlZnMgd2hlcmUgbmVlZGVkLgoKMjAwMC0wNy0yNiAgRGF2ZSBQaXR0cyAgPGRwaXR0c0Bjb3p4LmNvbT4KCgkqIGkzNzAuYzogUmVtb3ZlIExPTkdFWFRFUk5BTCBpZmRlZiBmcm9tIGFsaWFzX251bWJlci4gQWRkZWQgaGFzaAoJcm91dGluZSBjb25zdGFudHMuCgkobXZzX2hhc2hfYWxpYXMpOiBOZXcgZnVuY3Rpb24uCgkobXZzX2FkZF9hbGlhcyk6IENoYW5nZSBhcmd1bWVudCBzcGFjaW5nLgoJKG12c19uZWVkX2FsaWFzKTogQ2hhbmdlIGFsaWFzaW5nIGNyaXRlcmlhLiBBZGRlZCBkb2N1bWVudGF0aW9uLgoJKG12c19nZXRfYWxpYXMpOiBDaGFuZ2UgdG8gdXNlIGhhc2hlZCBuYW1lLiBUaGUgaGFzaGVkIG5hbWUgcHJldmVudHMKCUNTRUNUIG5hbWUgY29sbGlzaW9ucy4KCShtdnNfY2hlY2tfYWxpYXMpOiBMaWtld2lzZS4KCShoYW5kbGVfcHJhZ21hKTogQ2hhbmdlIGRvY3VtZW50YXRpb24uCgkqIGkzNzAubWQgKG11bHNpMywgZGl2c2kzLCB1ZGl2c2kzLCBtb2RzaTMsIHVtb2RzaTMpOiBDaGFuZ2VkIGdlbl9ydHgKCW1vZGUgZnJvbSBTSW1vZGUgdG8gREltb2RlLgoJKGlvcmhpMyk6IENoYW5nZWQgTFRPUkcgc2l6ZSBmb3IgaW5zbi4KCldlZCBKdWwgMjYgMTk6NDQ6MDUgMjAwMCAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkc190b3BsZXYpOiBSZWxvYWQgYSBwYXJhZG94aWNhbCBzdWJyZWcgb2YgYQoJbWVtIGlmIHRoZSBhZGRyZXNzIGlzIGEgbW9kZV9kZXBlbmRlbnRfYWRkcmVzc19wLgoKMjAwMC0wNy0yNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBoODMwMC5jIChwcmludF9vcGVyYW5kKTogUHJpbnQgIjo4IiB3aGVuIHRoZSAnUicgb3BlcmFuZCBpcwoJc3VpdGFibGUgZm9yIDgtYml0IGFic29sdXRlLgoJKiBoODMwMC5oIChFSUdIVEJJVF9DT05TVEFOVF9BRERSRVNTX1ApOiBOZXcuCgkoT0tfRk9SX1UpOiBBZGQgYSBjYXNlIGZvciB0aGUgOC1iaXQgY29uc3RhbnQgYWRkcmVzcyBvbiB0aGUKCUg4LzMwMEguCgpXZWQgSnVsIDI2IDE5OjI2OjIxIDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogdmFyYXNtLmMgKGFzc2VtYmxlX3ZhcmlhYmxlKSBbISBkZWZpbmVkKEFTTV9PVVRQVVRfQUxJR05FRF9DT01NT04pCgkmJiAhIGRlZmluZWQgKEFTTV9PVVRQVVRfQUxJR05FRF9CU1NdKTogQWxzbyB0ZXN0CgkhIGRlZmluZWQoQVNNX09VVFBVVF9BTElHTkVEX0RFQ0xfQ09NTU9OKSBiZWZvcmUgY29tcGxhaW5pbmcgYWJvdXQKCWxhY2sgb2YgaW1wbGVtZW50ZWQgYWxpZ25tZW50LgoKMjAwMC0wNy0yNiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogZW1pdC1ydGwuYyAoZ2VuX2xvd3BhcnRfY29tbW9uKSBbUkVBTF9BUklUSE1FVElDXTogSGFuZGxlCgljcm9zcy1jb21waWxpbmcgYmV0d2VlbiA2NC1iaXQgYW5kIDMyLWJpdCBtYWNoaW5lcy4KCjIwMDAtMDctMjcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChtb3ZxaWNjX2FzdGVwLCBtb3ZxaV9pbnRlcm5hbF9hc3RlcCk6IE5ldy4KCShtb3ZoaWNjX2FzdGVwLCBtb3ZoaV9pbnRlcm5hbF9hc3RlcCk6IE5ldy4KCShtb3ZzaWNjX2FzdGVwLCBtb3ZzaV9pbnRlcm5hbF9hc3RlcCk6IE5ldy4KCShtb3ZkaWNjX2FzdGVwLCBtb3ZkaV9pbnRlcm5hbF9hc3RlcCk6IE5ldy4KCShtb3ZzZmNjX2FzdGVwLCBtb3ZzZl9pbnRlcm5hbF9hc3RlcCk6IE5ldy4KCShtb3ZkZmNjX2FzdGVwLCBtb3ZkZl9pbnRlcm5hbF9hc3RlcCk6IE5ldy4KCShtb3Z4ZmNjX2FzdGVwLCBtb3Z4Zl9pbnRlcm5hbF9hc3RlcCk6IE5ldy4KCShjbW92ZGlfaW50ZXJuYWxfYXN0ZXAsIGNtb3ZzaV9pbnRlcm5hbF9hc3RlcCk6IE5ldy4KCVVuaWZ5IHRoZSBjbW92W2RzXWkgc3BsaXR0ZXJzLgoKMjAwMC0wNy0yNyAgUm9kbmV5IEJyb3duICA8Um9kbmV5QnJvd25AcG1zYy5jb20+CgoJKiByZWFsLmMgKGFzY3RvZWcpOiBSZW5hbWUgYGVycm9yJyBsYWJlbCB0byB1bmV4cGVjdGVkX2NoYXJfZXJyb3IKCjIwMDAtMDctMjYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL3Z4YXJtLmggKENQUF9QUkVERUZJTkVTKTogUmVtb3ZlIGRlZmluaXRpb24gb2YKCV9fYXJtX18uICBBbGxvdyBpdCB0byBiZSBkZWZpbmVkIGJ5IENQUF9JU0FfU1BFQyBpbiBhcm0uaAoKCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9mcmFtZV9kZWJ1Z19leHByKTogQWNjZXB0IFNFUVVFTkNFIGFzCgl3ZWxsIGFzIFBBUkFMTEVMIGJsb2NrcyBpbiBGUkFNRV9SRUxBVEVEX0VYUFIgbm90ZXMuCgoyMDAwLTA3LTI2ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGMtZGVjbC5jIChmaW5pc2hfZW51bSk6IENvbnZlcnQgZW51bWVyYXRpb25zIHRoYXQgZml0IGluIGFuCglgaW50JyB0byBgaW50Jy4KCShidWlsZF9lbnVtZXJhdG9yKTogSW4gcGVkYW50aWMgbW9kZSwgY2FzdCB0byBgaW50JyB0aG9zZSB0aGF0Cglkb24ndC4KCjIwMDAtMDctMjUgIFJvZG5leSBCcm93biAgPFJvZG5leUJyb3duQHBtc2MuY29tPgoKCSogY29uZmlnL2FscGhhL29zZi5oIChTSVpFX1RZUEUsIFBUUkRJRkZfVFlQRSk6IE5ldy4KClR1ZSBKdWwgMjUgMjM6MDg6MzMgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogc2gubWQgKGNtcGd0ZGlfdCk6IE11c3QgYmUgc3BsaXQuCgkoY21wZ3RkaV90KzEpOiBOZXcgc3BsaXR0ZXIuCgoyMDAwLTA3LTI1ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuYyAoX2NwcF9jaGVja19kaXJlY3RpdmUpOiBJc3N1ZSAtV3RyYWRpdGlvbmFsCgl3YXJuaW5ncyBmb3IgaW5kZW50ZWQgZGlyZWN0aXZlcyBldmVuIGlmIHdlIGFyZSBza2lwcGluZy4KCjIwMDAtMDctMjUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpbnZva2UudGV4aSAoc3RyaWN0LXByb3RvdHlwZXMpOiBSZW1vdmUuCgkqIGV4dGVuZC50ZXhpIChEZXByZWNhdGVkIEZlYXR1cmVzKTogQWRkIHN0cmljdC1wcm90b3R5cGVzLgoJKEJhY2t3YXJkcyBDb21wYXRpYmlsaXR5KTogTmV3IG5vZGUuCgoyMDAwLTA3LTI1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGFuZHNpXzErMSk6IEFsbG93IEhJbW9kZS4KCShhbmRzaV8xKzIpOiBSZXF1aXJlIHFfcmVnc19vcGVyYW5kLgoKMjAwMC0wNy0yNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChjYWxsX3BvcCk6IENoZWNrIG9wZXJhbmRzWzBdLAoJbm90IG9wZXJhbmRzWzFdLiBPbmx5IGNoZWNrIFNZTUJPTF9SRUZfRkxBRyBmb3IgYSBTWU1CT0xfUkVGLgoJKGNhbGwpOiBMaWtld2lzZS4KCShjYWxsX3ZhbHVlX3BvcCk6IE9ubHkgY2hlY2sgU1lNQk9MX1JFRl9GTEFHIGZvciBhIFNZTUJPTF9SRUYuCgkoY2FsbF92YWx1ZSk6IExpa2V3aXNlLgoKMjAwMC0wNy0yNSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogdG9wbGV2LmMgKHBpcGVfY2xvc2VkKTogRGVsZXRlLgoJKGNyYXNoX3NpZ25hbCk6IE5ldy4gIEdlbmVyYXRlIElDRSBmb3IgYSBmYXRhbCBzaWduYWwuCgkoZmxvYXRfc2lnbmFsKTogQ2FsbCBjcmFzaF9zaWduYWwgb3V0c2lkZSBhIGZsb2F0LWhhbmRsZXIKCWJsb2NrLCBub3QgYWJvcnQuCgkobWFpbik6IEluc3RhbGwgY3Jhc2hfc2lnbmFsIGFzIGhhbmRsZXIgZm9yIGNvcmUtZHVtcGluZyBzaWduYWxzLgoKMjAwMC0wNy0yNSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogcnM2MDAwLmMgKHByaW50X29wZXJhbmQsIGNhc2UgJ1QnKTogTmV3IGNhc2UuCgoJKiByczYwMDAubWQgKGNhbGxfaW5kaXJlY3RfYWl4MzIpOiBDb252ZXJ0IHRvIGV4cGFuZGVyIG9mCglzY2hlZHVsZWQgaW5zdHJ1Y3Rpb25zLgoJKGNhbGxfaW5kaXJlY3RfYWl4NjQpOiBMaWtld2lzZS4KCShjYWxsX3ZhbHVlX2luZGlyZWN0X2FpeHszMiw2NH0pOiBMaWtld2lzZS4KCShjYWxsLCBjYWxsX3ZhbHVlKTogSW52b2tlIGV4cGFuZGVycyBmb3IgQUlYLiAgRmFsbCB0aHJvdWdoIHRvCgltYXRjaGVycyBmb3IgU3lzVi4KCShjYWxsX2luZGlyZWN0X25vbmxvY2FsX2FpeHszMiw2NH0pOiBOZXcgcGF0dGVybnMgKGN0ciBhbmQgbHIpLgoJKGNhbGxfdmFsdWVfaW5kaXJlY3Rfbm9ubG9jYWxfYWl4ezMyLDY0fSk6IE5ldyBwYXR0ZXJucy4KCShjYWxsX25vbmxvY2FsX2FpeDMyKTogUmVtb3ZlIENBTExfTE9ORyBhbHRlcm5hdGl2ZS4gIE9wZXJhbmQgMQoJb25seSAiZyIgY29uc3RyYWludC4KCShjYWxsX25vbmxvY2FsX2FpeDY0KTogTGlrZXdpc2UuCgkoY2FsbF92YWx1ZV9ub25sb2NhbF9haXh7MzIsNjR9KTogTGlrZXdpc2UuCgkoY2FsbF9ub25sb2NhbF9zeXN2KTogTmV3IHBhdHRlcm4gZm9yIGN0ciwgbHIsIGFuZCBzeW1ib2xpYwoJb3BlcmFuZHMuCgkoY2FsbF92YWx1ZV9ub25sb2NhbF9zeXN2KTogTmV3IHBhdHRlcm4uCgkoaW5kaXJlY3RfanVtcHtzaSxkaX0pOiBVc2UgbmV3ICdUJyBtb2RpZmllci4KCSh0YWJsZWp1bXB7c2ksZGl9IG1hdGNoZXJzKTogTGlrZXdpc2UuCgkocmV0dXJuX2ludGVybmFsX3tzaSxkaX0pOiBMaWtld2lzZS4KCShyZXR1cm5fZWhfe3NpLGRpfSk6IExpa2V3aXNlLgoKMjAwMC0wNy0yNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9wcmludF9vcGVyYW5kKTogSGFuZGxlICIlLCIuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoUFJJTlRfT1BFUkFORF9QVU5DVF9WQUxJRF9QKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG1vdmRpX2ludGVybmFsKTogVXNlIGl0LgoKMjAwMC0wNy0yNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwZXhwLmM6IFdhcm4gYWJvdXQgdW5hcnkgKyBpZiAtV3RyYWRpdGlvbmFsLgoJKiBjcHBsZXguYyAobGV4X2xpbmUpOiBBbHdheXMgc2V0IEJPTCBvbiB0aGUgZmlyc3QgdG9rZW4gb2YgYSBsaW5lLgoKMjAwMC0wNy0yNCAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHJlZGhhdC5jb20+CgoJKiBkMzB2LmggKEZVTkNUSU9OX0FSR19LRUVQX0FTX1JFRkVSRU5DRSk6IERlbGV0ZSByZWZlcmVuY2VzIHRvCgl1bnN1cHBvcnRlZCBtYWNyby4KCjIwMDAtMDctMjQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jIChlbWl0X211bHRpX3JlZ19wdXNoKTogR2VuZXJhdGUgYQoJUkVHX0ZSQU1FX1JFTEVBVEVEX05PVEUgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIGNvZGUgaW4KCWR3YXJmMm91dF9kZWJ1Z19mcmFtZV9leHByLgoKMjAwMC0wNy0yNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBkd2FyZjJvdXQuYzogQ29tcGxhaW4gaWYgRFdBUkYyX0RFQlVHR0lOR19JTkZPIGlzIGRlZmluZWQgd2l0aG91dAoJVU5BTElHTkVEX0lOVF9BU01fT1AuCgkoZGVmX2NmYV8xKTogRG9uJ3QgZW1pdCBkZWZfY2ZhX3JlZ2lzdGVyIG9yIGRlZl9jZmFfb2Zmc2V0IHRvIGFkanVzdAoJYSBsb2NhdGlvbiBleHByZXNzaW9uLgoJKGR3YXJmMm91dF9mcmFtZV9kZWJ1Z19leHByKTogTG9zZSBjZmFfb2xkX3JlZyBzdHVmZi4gIERvbid0Cglhc3N1bWUgaW5kaXJlY3QgYWNjZXNzIGlmIHdlJ3JlIHNhdmluZyB0aGUgQ0ZBIGFkZHJlc3MgZXhhY3RseS4KCgkqIE1ha2VmaWxlLmluIChib290c3RyYXApOiBNb3ZlIC1Cc3RhZ2VOLyB0byB0aGUgZW5kLgoKMjAwMC0wNy0yNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiB0cmFkY3BwLmMgKG1haW4pOiBVcGRhdGUgbWF4X2luY2x1ZGVfbGVuIGZvciBjcHBfaW5jbHVkZV9kZWZhdWx0cwoJYXMgd2VsbC4KCjIwMDAtMDctMjQgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckByZWRoYXQuY29tPgoKCSogaW52b2tlLnRleGkgKEQzMFYgT3B0aW9ucyk6IEFkZCBkMzB2IG9wdGlvbnMuCgpNb24gSnVsIDI0IDAyOjA0OjUyIDIwMDAgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGdjc2UuYyAoYWxsb2NfcHJlX21lbSk6IERvIG5vdCBhbGxvYyBUUkFOU1BPVVQsIGl0IGlzIG5vdAoJbmVlZGVkIGJ5IG91ciBnY3NlIHBhc3MgYW55bW9yZS4KCShmcmVlX3ByZV9tZW0pOiBDb3JyZXNwb25kaW5nIGNoYW5nZXMuCgkoY29tcHV0ZV9wcmVfZGF0YSk6IERvIG5vdCBjYWxsIGNvbXB1dGVfdHJhbnNwb3V0IGFueW1vcmUuCgoJKiBnY3NlLmMgKGFsbG9jX2F2YWlsX2V4cHJfbWVtKTogS2lsbCB1bnVzZWQgJ3VfYml0bWFwJy4KCShmcmVlX2F2YWlsX2V4cHJfbWVtLCBhbGxvY19wcmVfbWVtLCBmcmVlX3ByZV9tZW0pOiBDb3JyZXNwb25kaW5nCgljaGFuZ2VzLgoKCSogZ2NzZS5jIChmcmVlX3ByZV9tZW0pOiBEbyBub3QgZnJlZSBBTlRMT0MgYW5kIEFFX0tJTEwgaGVyZS4KCShjb21wdXRlX3ByZV9kYXRhKTogRG8gaXQgaGVyZSBpbnN0ZWFkLgoKCSogZ2NzZS5jIChhbGxvY19wcmVfbWVtLCBmcmVlX3ByZV9tZW0pOiBEZWxldGUgdW51c2VkIGJpdG1hcAoJJ3RlbXBfYml0bWFwJy4KCShwcmVfZGVsZXRlKTogQ29ycmVzcG9uZGluZyBjaGFuZ2VzLgoKMjAwMC0wNy0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtc2VtYW50aWNzLmMgKG1ha2VfcnRsX2Zvcl9sb2NhbF9zdGF0aWMpOiBVc2UgVFJFRV9BU01fV1JJVFRFTgoJdG8gZmlndXJlIG91dCB3aGV0aGVyIG9yIG5vdCBhIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gZW1pdHRlZC4KClN1biBKdWwgMjMgMTQ6NDk6MTIgMjAwMCAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pODYwL2k4NjAubWQgKHVudHlwZWRfY2FsbCBleHBhbmRlcik6IFVzZSBHRU5fQ0FMTAoJaW5zdGVhZCBvZiBnZW5fY2FsbC4KClN1biBKdWwgMjMgMTE6NTI6MDMgMjAwMCAgR2VvcmdlIEhlbGZmcmljaCAoZ2VvcmdlQGdseS5icmlzLmFjLnVrKQoKCSogZGJ4b3V0LmMgKGRieG91dF90eXBlLCBjYXNlIENPTVBMRVhfVFlQRSk6IEZpeCBsZW5ndGggZmllbGQgaW4gc3RhYi4KCjIwMDAtMDctMjMgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaDgzMDAuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTA3LTIzICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjLXR5cGVjay5jIChjX2V4cGFuZF9zdGFydF9jYXNlKTogQ2hhbmdlIC1XdHJhZGl0aW9uYWwgcGVkd2FybgoJZm9yIGBsb25nJyBzd2l0Y2ggZXhwcmVzc2lvbiBpbnRvIGEgcGxhaW4gd2FybmluZy4KCgkqIGMtbGV4LmMgKGluaXRfbGV4KTogS2VlcCB0aGUgImlubGluZSIga2V5d29yZCBpbiBDOTkgbW9kZS4KCSh5eWxleCk6IERvbid0IHBlZHdhcm4gZm9yICJpbmxpbmUiIGluIEM5OSBtb2RlLgoKCSogYml0bWFwLmMgKGRlYnVnX2JpdG1hcF9maWxlKTogQ2FzdCBwb2ludGVycyB0byBQVFIgZm9yIHByaW50aW5nCgl3aXRoICVwLgoJKiBnZ2MtcGFnZS5jIChkZWJ1Z19wcmludF9wYWdlX2xpc3QsIGFsbG9jX3BhZ2UsIGZyZWVfcGFnZSwKCWdnY19hbGxvYyk6IExpa2V3aXNlLgoJKiBiYi1yZW9yZGVyLmMgKGR1bXBfc2NvcGVfZm9yZXN0XzEpOiBMaWtld2lzZS4KCjIwMDAtMDctMjIgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHNfdG9wbGV2KTogQWRkIG5ldyBwYXJhbWV0ZXIKCSJhZGRyZXNzX3JlbG9hZGVkIi4KCShmaW5kX3JlbG9hZHMpOiBBZGQgbmV3IHBhcmFtZXRlciB0byBmaW5kX3JlbG9hZHNfdG9wbGV2IGNhbGxzLgoKMjAwMC0wNy0yMiAgSmVmZnJleSBPbGRoYW0gIDxvbGRoYW1AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbGxlY3QyLmMgKG1haW4pOiBUeXBvIGZpeGVkLgoJKiBkaWFnbm9zdGljLmM6IFR5cG8gZml4ZWQuCgkqIGR3YXJmMm91dC5jIChkd2FyZjJvdXRfZnJhbWVfZGVidWdfZXhwcik6IFR5cG8gZml4ZWQuCgkqIGVoLWNvbW1vbi5oOiBUeXBvIGZpeGVkLgoJKiBlbWl0LXJ0bC5jIChzdGFydF9zZXF1ZW5jZSk6IFR5cG8gZml4ZWQuCgkqIGZsb3cuYyAoZmluZF9sYWJlbF9yZWZzKTogVHlwbyBmaXhlZC4KCShjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IFR5cG8gZml4ZWQuCgkobWFya19yZWdub19jb25kX2RlYWQpOiBUeXBvIGZpeGVkLgoJKGNyZWF0ZV9lZGdlX2xpc3QpOiBUeXBvcyBmaXhlZC4KCSh2ZXJpZnlfZWRnZV9saXN0KTogVHlwbyBmaXhlZC4KCSogZ2djLWNvbW1vbi5jIChnZ2NfbWFya19ydHhfY2hpbGRyZW4pOiBUeXBvIGZpeGVkLgoJKiBsb29wLmMgKHN0cmVuZ3RoX3JlZHVjZSk6IFR5cG8gaW4gZnVuY3Rpb24gbmFtZSBmaXhlZC4KCSogcnRsLmg6IEFkZGVkIGNvbW1lbnRzLiAgVHlwbyBpbiBmdW5jdGlvbiBuYW1lIGZpeGVkLgoJKiBydGxhbmFsLmM6IFR5cG8gaW4gZnVuY3Rpb24gbmFtZSBmaXhlZC4KCShpbnNuX2RlcGVuZGFudF9wKTogUmVuYW1lIHRvIC4uLgoJKGluc25fZGVwZW5kZW50X3ApOiAuLi4gdGhpcy4KCShjb21wdXRlZF9qdW1vX3ApOiBUeXBvIGZpeGVkLgoKMjAwMC0wNy0yMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogc3lzdGVtLmggKF9fRlVOQ1RJT05fXyk6IFdyYXAgZGVmaW5pdGlvbiBpbiAjaWZuZGVmLgoKMjAwMC0wNy0yMSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogcnM2MDAwLmggKFNJWkVfVFlQRSk6IERlZmluZS4KCjIwMDAtMDctMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzc2EuYyAocmVuYW1lX2luc25fMSk6IERvbid0IHJlbmFtZSByZWdpc3RlcnMgdGhhdCBhcmUKCUNMT0JCRVJlZC4KCjIwMDAtMDctMjEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGRpYWdub3N0aWMuYyAodHJpbV9maWxlbmFtZSwgZmFuY3lfYWJvcnQpOiBNb3ZlZCBoZXJlIGZyb20KCXJ0bC5jLgoJKGZhdGFsX2Z1bmN0aW9uLCBzZXRfZmF0YWxfZnVuY3Rpb24pOiBSZW1vdmVkLgoJKGZhdGFsKTogRG9uJ3QgcHJlcGFyZSBmb3Igb3IgY2FsbCB0aGUgZmF0YWxfZnVuY3Rpb24uCgkoZGlhZ25vc3RpY19sb2NrLCBlcnJvcl9yZWN1cnNpb24pOiBOZXcuCgkoZGlhZ25vc3RpY19mb3JfZGVjbCwgcmVwb3J0X2RpYWdub3N0aWMpOiBHdWFyZCBhZ2FpbnN0CglyZS1lbnRlcmluZyB0aGUgZXJyb3IgcmVwb3J0aW5nIHJvdXRpbmVzLgoJKGZhbmN5X2Fib3J0KTogQXNzdW1lIGZ1bmN0aW9uIGlzIG5vdCBOVUxMLgoKCSogZXJyb3JzLmMgKGZhbmN5X2Fib3J0KTogTmV3LiAgQXNzdW1lIGZ1bmN0aW9uIGlzIG5vdCBOVUxMLgoJKiB0cmFkY3BwLmMgKGZhbmN5X2Fib3J0KTogQXNzdW1lIGZ1bmN0aW9uIGlzIG5vdCBOVUxMLgoKCSogc3lzdGVtLmg6IFByb3ZpZGUgZGVmYXVsdCBkZWZpbml0aW9uIG9mIF9fRlVOQ1RJT05fXy4KCSogcnRsLmg6IFVzZSBfX0ZVTkNUSU9OX18gbm90IF9fUFJFVFRZX0ZVTkNUSU9OX18gdGhyb3VnaG91dC4KCUFsd2F5cyB1c2UgX19GVU5DVElPTl9fIGluIGRlZmluaXRpb24gb2YgYWJvcnQuCgkqIHRyZWUuaDogTGlrZXdpc2UuCgkqIHZhcnJheS5oOiBMaWtld2lzZS4KCSogdG9wbGV2Lmg6IExpa2V3aXNlLiAgRG9uJ3QgcHJvdG90eXBlIHNldF9mYXRhbF9mdW5jdGlvbi4KCjIwMDAtMDctMjAgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvYWl4NDMuaCAoQ1BQX1NQRUMpOiBEZWZpbmUgX19MT05HX01BWF9fIGNvcnJlY3RseQoJaW4gNjQtYml0IG1vZGUuCgkqIGdsaW1pdHMuaDogRG9uJ3QgZG8gI2lmIGRlZmluZWQgZm9yIEFSQ0hfUFBDLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoQVNNX09VVFBVVF9TUEVDSUFMX1BPT0xfRU5UUllfUCk6IEFsbAoJY29uc3RhbnRzIG9mIHNpemUgbm8gbGFyZ2VyIHRoYW4gYSBwb2ludGVyIHNob3VsZCBnbyBpbiB0aGUgVE9DLgoJQWRkICdNT0RFJyBwYXJhbWV0ZXIuCgkoTEVHSVRJTUlaRV9SRUxPQURfQUREUkVTUyk6IEFkZCBNT0RFIHBhcmFtZXRlciB0bwoJQVNNX09VVFBVVF9TUEVDSUFMX1BPT0xfRU5UUllfUC4KCShBU01fT1VUUFVUX1NQRUNJQUxfUE9PTF9FTlRSWSk6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL2FpeC5oIChTRUxFQ1RfUlRYX1NFQ1RJT04pOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9uZXR3YXJlLmggKFNFTEVDVF9SVFhfU0VDVElPTik6IExpa2V3aXNlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChjb25zdGFudF9wb29sX2V4cHJfMSk6IExpa2V3aXNlLgoJKHJzNjAwMF9sZWdpdGltaXplX2FkZHJlc3MpOiBMaWtld2lzZS4KCShyczYwMDBfZW1pdF9tb3ZlKTogTGlrZXdpc2UuCgkocnM2MDAwX3NlbGVjdF9ydHhfc2VjdGlvbik6IExpa2V3aXNlLgoJKG91dHB1dF90b2MpOiBEZWFsIHByb3Blcmx5IHdpdGggb3V0cHV0dGluZyBzbWFsbCBjb25zdGFudHMgbGlrZQoJSEltb2RlLCBhbmQgU0Ztb2RlIGluIDMyLWJpdCBtb2RlLCBhbmQgREZtb2RlIGluIDY0LWJpdCBtb2RlLgoJKiBjb25maWcvcnM2MDAwL3N5c3Y0LmggKEFTTV9PVVRQVVRfU1BFQ0lBTF9QT09MX0VOVFJZX1ApOiBBZGQKCU1PREUgcGFyYW1ldGVyLiAgUHV0IHNtYWxsIGNvbnN0YW50cyBpbiB0aGUgVE9DLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoZWFzeV9mcF9jb25zdGFudF9wKTogQWxsIGNvbnN0YW50cyBhcmUKCWVhc3kgaW4gU0ltb2RlLgoJKHJzNjAwMF9lbWl0X21vdmUpOiBXaGVuIHJlbG9hZCBjYWxscyB1cyB3aXRoIGFuIGlsbGVnaXRpbWF0ZQoJYWRkcmVzcywgZXhpdCBlYXJseS4gIE1vdmUgdGhlIGNoYW5nZV9hZGRyZXNzIGNhbGxzIHRvIG9uZSBwbGFjZQoJYXQgdGhlIGVuZCBvZiB0aGUgcm91dGluZS4gIE1lcmdlIHRoZSBTSW1vZGUgYW5kIERJbW9kZSBleHBhbmRlcnMuCglXaGVuIGNhbGxlZCBieSByZWxvYWQgdG8gcHV0IGFuIGludGVnZXIgaW50byBhIEZQIHJlZ2lzdGVyLCBmb3JjZQoJaXQgdG8gbWVtb3J5LgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoc3RydWN0IHRvY19oYXNoX3N0cnVjdCk6IEFkZCAna2V5X21vZGUnCglmaWVsZC4KCShyczYwMDBfaGFzaF9jb25zdGFudCk6IEhhc2ggbW9kZSB0b28uCgkodG9jX2hhc2hfZnVuY3Rpb24pOiBBbGxvdyBmb3Iga2V5X21vZGUuCgkodG9jX2hhc2hfZXEpOiBTdHJ1Y3R1cmVzIGFyZSBkaWZmZXJlbnQgaWYga2V5X21vZGUgZGlmZmVycy4KCShvdXRwdXRfdG9jKTogQWRkICdtb2RlJyBwYXJhbWV0ZXIuICBTYXZlIGtleV9tb2RlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChBU01fT1VUUFVUX1NQRUNJQUxfUE9PTF9FTlRSWSk6CglQYXNzICdtb2RlJyBwYXJhbWV0ZXIuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oIChvdXRwdXRfdG9jKTogQWRkICdtb2RlJyBwYXJhbS4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKG91dHB1dF90b2MpOiBVc2UgUlM2MDAwX09VVFBVVF9CQVNFTkFNRQoJZm9yIHZ0YWJsZSByZWZlcmVuY2VzLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoUFJFRkVSUkVEX1JFTE9BRF9DTEFTUyk6IElmIHdlIGhhdmUgYQoJY2hvaWNlLCBkb24ndCBwdXQgaW50ZWdlciB2YWx1ZXMgaW4gRlAgcmVncy4KClRodSBKdWwgMjAgMTg6MTM6NTIgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZmxvdy5jICh2ZXJpZnlfZmxvd19pbmZvKTogUmV2YW1wIGNvZGUgdG8gdmVyaWZ5IHRoYXQgdGhlCgloZWFkIGFuZCBlbmQgb2YgZWFjaCBiYXNpYyBibG9jayBhcmUgaW4gdGhlIGluc24gY2hhaW4uCgpUaHUgSnVsIDIwIDE4OjAyOjM1IDIwMDAgIE1pY2hhZWwgTWF0eiA8bWF0em1pY2hAY3MudHUtYmVybGluLmRlPgoKCSogZ2NzZS5jIChyZWNvcmRfb25lX3NldCk6IFByZXBlbmQgaW5zdGVhZCBvZiBhcHBlbmQgb250bwoJcmVnX3NldF90YWJsZSwgbWFraW5nIGl0IE8obikgaW5zdGVhZCBPKG5eMikuCgkqIGxjbS5jIChjb21wdXRlX2FudGlub3V0X2VkZ2UsY29tcHV0ZV9sYXRlcmluLGNvbXB1dGVfYXZhaWxhYmxlKToKCVVzZSBhIHF1ZXVlIGluc3RlYWQgb2YgYSBzdGFjayBhcyB3b3JrbGlzdC4KCjIwMDAtMDctMjAgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaDgzMDAuYyAodHdvX2luc25fYWRkc19zdWJzX29wZXJhbmQpOiBGaXggYSB0eXBvLgoJKiBoODMwMC5oIChPS19GT1JfVCk6IE5ldy4KCShFWFRSQV9DT05TVFJBSU5UKTogU3VwcG9ydCBPS19GT1JfVC4KCSogaDgzMDAubWQ6IFVzZSBpbmMvZGVjLlt3bF0gZm9yIGluY3JlbWVudC9kZWNyZW1lbnQKCWJ5IDEgYW5kIDIgaW4gSEkgYW5kIFNJIG1vZGVzLgoKMjAwMC0wNy0yMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChBU01fT1VUUFVUX01JX1RIVU5LKTogSGFuZGxlIERFTFRBIHZhbHVlcwoJbGFyZ2VyIHRoYW4gMTQgYml0cy4KCjIwMDAtMDctMjAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcG1hY3JvLmMgKENBTl9QQVNURV9BRlRFUik6IE5ldyBtYWNyby4KCShjb3VudF9wYXJhbXMpOiBEb24ndCBzZXQgR05VX1JFU1RfQVJHUyBvbiBhbnl0aGluZy4KCShzYXZlX2V4cGFuc2lvbik6IFNldCBQQVNURV9MRUZUIG9ubHkgb24gdG9rZW5zIGZvciB3aGljaAoJQ0FOX1BBU1RFX0FGVEVSIGlzIHRydWUsIG9yIHdoaWNoIGFyZSBuYW1lZCBvcGVyYXRvcnMuCgoJKiBjcHBsZXguYyAocGFyc2VfYXJncyk6IERpc3Rpbmd1aXNoIGJldHdlZW4gYSByZXN0IGFyZ3VtZW50CglnaXZlbiBvbmUgZW1wdHkgYXJndW1lbnQsIGFuZCBhIHJlc3QgYXJndW1lbnQgZ2l2ZW4gemVybyBhcmd1bWVudHMuCgkobWF5YmVfcGFzdGVfd2l0aF9uZXh0KTogTG9vayBmb3IgVk9JRF9SRVNUIHRhZywgYW5kIHRyaWdnZXIKCWRlbGV0aW9uIG9mIHByZXZpb3VzIHRva2VuIGJhc2VkIG9uIHRoYXQuCgkoZ2V0X3Jhd190b2tlbik6IEZsYXR0ZW4gc29tZSBjb250cm9sIHN0cnVjdHVyZS4KCgkqIGNwcGxpYi5oIChDUFBfTEFTVF9FUSk6IENvcnJlY3QuCgkoVk9JRF9SRVNUKTogTmV3IHRva2VuIGZsYWcuCgkoR05VX1JFU1RfQVJHUyk6IERlbGV0ZS4KCgkqIHRyYWRjcHAuYyAobWFpbik6IERvbid0IG11bmdlIC1EIG9wdGlvbnMuCgkobWFrZV9kZWZpbml0aW9uKTogQnJpbmcgLUQgaGFuZGxpbmcgaW4gbGluZSB3aXRoIGNwcGxpYi4KCShkb19kZWZpbmUpOiBTdHJpcCBhbGwgbGVhZGluZyB3aGl0ZXNwYWNlIGZyb20gbWFjcm8gZGVmaW5pdGlvbnMuCgoyMDAwLTA3LTIwICBEYXZpZCBCaWxsaW5naHVyc3QgPERhdmlkLkJpbGxpbmdodXJzdEByaW90aW50by5jb20uYXU+CgoJKiBNYWtlZmlsZS5pbiAodHJhZGNwcCk6IERlcGVuZCBvbiBpbnRsLm8gYW5kIHZlcnNpb24uby4KCjIwMDAtMDctMjAgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jbC9jaGVjay50cGw6IHN0cmlwIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyB0eXBlcyBiZWZvcmUgdGVzdGluZwoJKiBmaXhpbmNsL2ZpeGZpeGVzLmMoZ251X3R5cGVfZml4KTogdXNlIHBsYXRmb3JtIHNwZWNpZmljIHR5cGVzCgkqIGZpeGluY2wvZml4aW5jbC50cGw6IHVzZSBwbGF0Zm9ybSBzcGVjaWZpYyB0eXBlcwoJKiBmaXhpbmNsL2ZpeGxpYi5oOiBpbmNsdWRlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyB0eXBlcwoJKiBmaXhpbmNsL2luY2xoYWNrLmRlZihnbnVfdHlwZXMpOiBkb24ndCBzdXBwbHkgdGhlIHR5cGVzCgkqIGZpeGluY2wvZml4aW5jbC54OiByZWdlbgoKMjAwMC0wNy0xOSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5oIChIQVJEX1JFR05PX01PREVfT0spOiBEb24ndCBhbGxvdyBYRm1vZGUgaW4KCUdSX1JFR1MuCgoyMDAwLTA3LTE5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiB0cmFkY3BwLmMgKHJlc2Nhbik6IERvIG5vdCByZWNvZ25pemUgZGlyZWN0aXZlcyB3aGVuIHRoZSAjCglpcyBpbmRlbnRlZC4KCjIwMDAtMDctMTkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCglJbXBsZW1lbnQgQysrIG5hbWVkIG9wZXJhdG9ycy4KCgkqIGNwcGxpYi5oIChUVFlQRV9UQUJMRSk6IE1vdmUgQ1BQX01JTiBhbmQgQ1BQX01BWCBpbnRvIGJsb2NrCglvZiBvcGVyYXRvcnMgYWxsb3dlZCBpbiAjaWYgYW5kIGhhdmluZyBhbiBfRVEgdmFyaWFudC4gIEFkZAoJQ1BQX01JTl9FUSwgQ1BQX01BWF9FUSwgYW5kIENQUF9ERUZJTkVELgoJKGNwcF90b2tlbiBmbGFncyk6IEFkZCBOQU1FRF9PUC4KCShlbnVtIG5vZGVfdHlwZSk6IEFkZCBUX09QRVJBVE9SLgoJKHN0cnVjdCBjcHBfaGFzaG5vZGUpOiBBZGQgY29kZSBzbG90IHRvIHZhbHVlIHVuaW9uLgoJKiBjcHBoYXNoLmggKHNwZWNfbm9kZXMpOiBSZW1vdmUgbl9kZWZpbmVkLgoKCSogY3BwbGV4LmMgKGxleF9saW5lKTogQ29udmVydCBUX09QRVJBVE9SIG5vZGVzIHRvIHRoZWlyIHByb3BlciB0eXBlcy4KCShzcGVsbF90b2tlbiwgY2FuX3Bhc3RlLCBtYXliZV9wYXN0ZV93aXRoX25leHQpOiBIYW5kbGUgbmFtZWQgb3BlcmF0b3JzLgoJKGlzX21hY3JvX2Rpc2FibGVkKTogVHdlYWsgZXJyb3IgbWVzc2FnZXMuCgoJKiBjcHBsaWIuYyAoZ2V0X2RlZmluZV9ub2RlKTogRGlzYWxsb3cgYWxsIG5hbWVkIG9wZXJhdG9ycyBhcwoJbWFjcm8gbmFtZXMuICBUd2VhayBlcnJvciBtZXNzYWdlcy4KCShfY3BwX2luaXRfc3RhY2tzKTogRG9uJ3Qgc2V0IHVwIHNwZWNfbm9kZXMtPm5fZGVmaW5lZC4KCgkqIGNwcGluaXQuYyAoYnVpbHRpbl9hcnJheSk6IEFkZCBlbnRyaWVzIGZvciB0aGUgbmFtZWQgb3BlcmF0b3JzLgoJKiBjcHBleHAuYyAobGV4KTogQ2hlY2sgZm9yIENQUF9ERUZJTkVEIHRva2VuLgoJKHByaW9yaXR5IHRhYmxlKTogQWRkIGVudHJpZXMgZm9yIENQUF9NSU4gYW5kIENQUF9NQVguCgkoX2NwcF9wYXJzZV9leHByKTogSGFuZGxlIENQUF9NSU4gYW5kIENQUF9NQVguCgoyMDAwLTA3LTE5ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGdjc2UuYyAoSU5TTl9DVUlEKTogSWYgRU5BQkxFX0NIRUNLSU5HLCBhYm9ydCBpZiB0aGUgdWlkIGlzCglsYXJnZXIgdGhhbiB0aGUgYXJyYXkgb2YgY3VpZHMuCgkoYWxsb2NfZ2NzZV9tZW0pOiBVc2UgdWlkX2N1aWQgcmF0aGVyIHRoYW4gSU5TTl9DVUlEIHdoZW4gY29tcHV0aW5nCgljdWlkcy4KCjIwMDAtMDctMTkgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2ZpeGluY2wuYzogIENvbnZlcnQgdG8gdXNpbmcgYSB0YWJsZSBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMKCWFuZCBhY3RpdmF0ZSB0aGUgYXV0by1lZGl0IG1hcmtlciBvbiB0aGUgZml4ZWQgb3V0cHV0IGZpbGVzLgoJKiBmaXhpbmMvZml4bGliLmg6ICBEZWZpbmUgdGhlIGVudmlyb25tZW50IHRhYmxlCgkqIGZpeGluYy9maXhpbmNsLnNoOiBleHBvcnQgdGhlICR7SU5QVVR9IGRpcgoJKiBmaXhpbmMvY2hlY2sudHBsOiBsaWtld2lzZQoKMjAwMC0wNy0xOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZ2NjLmMgKC5oIHNwZWMpOiBGaXggdHlwby4KCldlZCBKdWwgMTkgMDE6MjI6MTUgQ0VTVCAyMDAwICBNYXJjIEVzcGllICA8ZXNwaWVAY3ZzLm9wZW5ic2Qub3JnPgoKCSogTWFrZWZpbGUuaW46IEZpeCB0cmFkY2lmLmMgcGF0aC4KCjIwMDAtMDctMTggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGxpYi5oIChUVFlQRV9UQUJMRSk6IFJlYXJyYW5nZSB0byB1c2Ugb25seSB0d28gcGVyLWVudHJ5CgkgIG1hY3Jvcywgbm90IGZpdmUuCgoJKiBjcHBoYXNoLmggKFRPS0VOX05BTUUpOiBOZXcgbWFjcm8uCgkoX2NwcF9zcGVsbF9vcGVyYXRvcik6IERlbGV0ZWQuCgkodG9rZW5fc3BlbGxpbmdzKTogTm93IF9jcHBfdG9rZW5fc3BlbGxpbmdzLgoKCSogY3BwZXhwLmM6IFVzZSBUT0tFTl9OQU1FIG9yIFRZUEVfTkFNRSwgbm90IF9jcHBfc3BlbGxfb3BlcmF0b3IuCgkqIGNwcGxleC5jOiBVc2UgT1AgYW5kIFRLIG1hY3JvcyB3aGVuIGV4cGFuZGluZyB0aGUKCVRUWVBFX1RBQkxFLiAgRWxpbWluYXRlIHRva2VuX25hbWVzLiAgRm9yIG5vbi1PUEVSQVRPUiB0b2tlbnMsCglzdG9yZSB0aGUgc3RyaW5naWZpY2F0aW9uIG9mIHRoZSBlbnVtZXJhdGlvbiBuYW1lIChDUFBfQ0hBUiwKCWV0Yy4pIGluIHRoZSBuYW1lIHNsb3Qgb2YgdG9rZW5fc3BlbGxpbmdzLgoJVXNlIFRPS0VOX05BTUUgYW5kL29yIFRPS0VOX1NQRUxMLCBkbyBub3QgcmVmZXJlbmNlCgl0b2tlbl9zcGVsbGluZ3MgZGlyZWN0bHkuCgkqIGNwcGxpYi5jOiBVc2UgVE9LRU5fU1BFTEwuCgoJKiBjcHBsZXguYyAoX2NwcF9wdXNoX3Rva2VuKTogSWYgdGhlIHRva2VuIGJlaW5nIHB1c2hlZCBiYWNrCglpcyB0aGUgcHJldmlvdXMgdG9rZW4gaW4gdGhpcyBjb250ZXh0LCBqdXN0IHN1YnRyYWN0IG9uZSBmcm9tCgljb250ZXh0LT5wb3NuLgoJKiBjcHBtYWNyby5jIChzYXZlX2V4cGFuc2lvbik6IENsZWFyIGF1eCBmaWVsZCB3aGVuIHN0b3JpbmcgYQoJcGxhY2VtYXJrZXIuCgoyMDAwLTA3LTE4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNwcGxleC5jIChjcHBfc2Nhbl9idWZmZXIpOiBPdXRwdXQgbGluZSBjb21tYW5kIGV2ZW4gYXQgdGhlIHN0b3AKCWJ1ZmZlciwgcHJvdmlkZWQgaXQgaXMgbm90IE5VTEwuCgoyMDAwLTA3LTE4ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBEbyBub3QgY2FsbCBtYWtlX3Zhcl92b2xhdGlsZSgpIGluCgljYXNlIG9mIGludmFsaWQgdm9sYXRpbGUgcmUtZGVjbGFyYXRpb24uCgoyMDAwLTA3LTE4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNhbGxzLmMgKHN0b3JlX2FyZyk6IFJldHVybiBub24temVybyBpZiBzaWJjYWxsX2ZhaWx1cmUgaXMgZGVzaXJlZC4KCShleHBhbmRfY2FsbCk6IEFkanVzdCBjYWxsZXIuCgoyMDAwLTA3LTE3ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkaWFnbm9zdGljLmggKHJlcG9ydF9kaWFnbm9zdGljKTogQ2hhbmdlIHByb3RvdHlwZS4KCgkqIGRpYWdub3N0aWMuYyAob3V0cHV0X2RvX3ZlcmJhdGltLCBkaWFnbm9zdGljX2Zvcl9hc20sCglkaWFnbm9zdGljX2Zvcl9kZWNsKTogIENoYW5nZSBwcm90b3R5cGUuCgkoZXJyb3Jfd2l0aF9kZWNsLCB3YXJuaW5nX3dpdGhfZGVjbCwgcGVkd2Fybl93aXRoX2RlY2wsIHdhcm5pbmcsCgllcnJvciwgd2FybmluZywgZXJyb3Jfd2l0aF9maWxlX2FuZF9saW5lLAoJd2FybmluZ193aXRoX2ZpbGVfYW5kX2xpbmUsIHBlZHdhcm5fd2l0aF9maWxlX2FuZF9saW5lLCBmYXRhbCk6CglBZGp1c3QgY2FsbCB0byByZXBvcnRfZGlhZ25vc3RpYywgZGlhZ25vc3RpY19mb3JfZGVjbC4KCShlcnJvcl9mb3JfYXNtLCB3YXJuaW5nX2Zvcl9hc20pOiBBZGp1c3QgY2FsbCB0byBkaWFnbm9zdGljX2Zvcl9hc20uCgkob3V0cHV0X3ZlcmJhdGltLCB2ZXJiYXRpbSk6IEFkanVzdCBjYWxsIHRvIG91dHB1dF9kb192ZXJiYXRpbS4KCgkqIGMtZXJyb3JzLmMgKHBlZHdhcm5fYzk5KTogQWRqdXN0IGNhbGwgdG8gcmVwb3J0X2RpYWdub3N0aWMuIEVuZAoJdmFyYWlibGUgYXJndW1lbnQgbGlzdC4KCjIwMDAtMDctMTcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGhhc2guYzogRG9uJ3QgaW5jbHVkZSBoYXNodGFiLmguICBNb3N0IG1hY3JvLWhhbmRsaW5nIGNvZGUKCW1vdmVkIHRvIGNwcG1hY3JvLmMuCgkoaGFzaF9IQVNITk9ERSwgZXFfSEFTSE5PREUsIF9jcHBfZHVtcF9tYWNyb19oYXNoLAoJZHVtcF9oYXNoX2hlbHBlcik6IERlbGV0ZS4KCShleHBhbmRfaGFzaCwgaGlnaGVyX3ByaW1lX251bWJlciwgX2NwcF9sb29rdXBfd2l0aF9oYXNoLAoJY3BwX2ZvcmFsbF9pZGVudGlmaWVycyk6IE5ldy4gSW1wbGVtZW50IHNwZWNpYWxpemVkIHZlcnNpb24gb2YKCVZsYWQncyBleHBhbmRhYmxlIGhhc2ggdGFibGUuCgkoY3BwX2xvb2t1cCk6IFVzZSBuZXcgZnVuY3Rpb25zLgoJKF9jcHBfaW5pdF9tYWNyb3MsIF9jcHBfY2xlYW51cF9tYWNyb3MpOiBBZGp1c3QgZm9yIG5ldwoJaW1wbGVtZW50YXRpb24uCgkqIGNwcG1hY3JvLmM6IE5ldyBmaWxlLgoJKiBjcHBpbml0LmMgKGR1bXBfbWFjcm9zX2hlbHBlcik6IE5ldy4KCShjcHBfZmluaXNoKTogSXRlcmF0ZSBvdmVyIHRoZSBpZGVudGlmaWVyIHRhYmxlIGRpcmVjdGx5LgoJKiBjcHBsZXguYyAocGFyc2VfbmFtZSk6IENhbGN1bGF0ZSB0aGUgaGFzaCBvZiB0aGUgaWRlbnRpZmllcgoJd2hpbGUgd2Ugc2NhbiBpdC4gIFVzZSBfY3BwX2xvb2t1cF93aXRoX2hhc2ggd2hlbiB3ZSBjYW4uCgoJKiBjcHBoYXNoLmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoJKHhjbmV3dmVjLCBIQVNIU1RFUCk6IE5ldyBoZWxwZXIgbWFjcm9zLgoJKiBjcHBsaWIuaDogVXBkYXRlIHByb3RvdHlwZXMuCgkqIE1ha2VmaWxlLmluIChMSUJDUFBfT0JKUyk6IEFkZCBjcHBtYWNyby5vLgoJKGNwcG1hY3JvLm8pOiBOZXcgcnVsZS4KCShjcHBoYXNoLm8pOiBVcGRhdGUgZGVwcy4KCgkqIGNwcG1haW4uYzogRG8gbm90IHNldCBwZmlsZS0+cHJpbnRlciBpZiBub19vdXRwdXQgaXMgb24uCgoyMDAwLTA3LTE1ICBOZWlsIEJvb3RoICA8bmVpbGJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxpYi5jOiBDaGFuZ2UgYWxsIGRpcmVjdGl2ZS1oYW5kbGVyIGZ1bmN0aW9ucyB0byByZXR1cm4KCXZvaWQsIG5vdCBpbnQuCgkqIGNwcGhhc2guaDogVXBkYXRlIHR5cGVkZWZzLgoKMjAwMC0wNy0xNyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogZXh0ZW5kLnRleGkgKEV4dGVuZGVkIEFzbSk6IE1lbnRpb24gdGhhdCBhIG1lbW9yeSBjbG9iYmVyCglkb2VzIG5vdCBjb3VudCBhcyBhIHNpZGUtZWZmZWN0LgoKCSogdW5yb2xsLmMgKGNvcHlfbG9vcF9ib2R5KTogRml4IG9uZSBpbnN0YW5jZSBvZiB1c2luZyBob3N0Cglhcml0aG1ldGljIG9uIHRoZSB0YXJnZXQ7IGZpeGVzIGxvb3AtNCBvbiBhIDMyLWJpdCAtPiA2NC1iaXQKCWNyb3NzLWNvbXBpbGUuCgoJKiB0bGluay5jIChzY2FuX2xpbmtlcl9vdXRwdXQpOiBUd2VhayBmb3Igb3V0cHV0IG9mIEFJWCBsZC4KCjIwMDAtMDctMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm1kIChtb3ZkaSk6IFNwbGl0IG91dCBsb2FkIGFkZHJlc3MgY29kZS4KCU5ldyBwb3N0LXJlbG9hZCBzcGxpdHRlciBmb3Igc3ltYm9saWMgb3BlcmFuZHMuCgkobW92ZGlfaW50ZXJuYWwpOiBBYm9ydCBpZiB3ZSBkaWRuJ3Qgc3BsaXQgc3ltYm9saWMgb3BlcmFuZHMKCXdoZW4gd2Ugc2hvdWxkIGhhdmUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9leHBhbmRfbG9hZF9hZGRyZXNzKTogTmV3LCBmcm9tIG1vdmRpIGJpdHMuCgkoaWE2NF9yZW9yZyk6IFNwbGl0IGluc25zIHdoZW4gbm90IG9wdGltaXppbmcuCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmggKGlhNjRfZXhwYW5kX2xvYWRfYWRkcmVzcyk6IERlY2xhcmUuCgpNb24gSnVsIDE3IDIzOjQzOjI2IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVhbC5oIChSRUFMX1ZBTFVFX1RPX1RBUkdFVF9MT05HX0RPVUJMRSk6IFVzZSBMT05HX0RPVUJMRV9UWVBFX1NJWkUKCWluc3RlYWQgb2YgTUFYX0xPTkdfRE9VQkxFX1RZUEVfU0laRSB0byBkZWNpZGUgb3V0cHV0IGZvcm1hdC4KCjIwMDAtMDctMTcgIENoYW5kcmFrYWxhIENoYXZ2YSAgIDxjY2hhdnZhQGN5Z251cy5jb20+CgoJKiBsb29wLmMgKGNoZWNrX2RicmFfbG9vcCkgOiBDaGFuZ2VkIGxvb3BfY29udGludWUgdG8gbG9vcC0+Y29udC4KCjIwMDAtMDctMTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKGNsZWFuKTogUmVtb3ZlIGxpYmdjYyBkaXJlY3RvcnkuCgoJKiBjb25maWd1cmUuaW4gKC1Xbm8tbG9uZy1sb25nIGNoZWNrKTogVXNlIGhpZ2hlci1sZXZlbCBtYWNyb3MuCgoyMDAwLTA3LTE3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfYmluYXJ5X29wZXJhdGlvbik6IFJlY29nbml6ZQoJICAgKGNvbXBhcmUgKGd0W3VdIChjYykgMCkgKGx0W3VdIChjYykgMCkpLgoJKHNpbXBsaWZ5X3Rlcm5hcnlfb3BlcmF0aW9uKTogIERvIG5vdCBleGFtaW5lIE1PREVfQklUU0laRSBvZgoJICAgYSBDT05TVF9JTlQsIGl0IHdpbGwgYWx3YXlzIGJlIHplcm8uCgoyMDAwLTA3LTE3ICBDaGFuZHJha2FsYSBDaGF2dmEgICA8Y2NoYXZ2YUBjeWdudXMuY29tPgoKCSogbG9vcC5jIChjaGVja19kYnJhX2xvb3ApIDogUmV0dXJuIGlmIG1vcmUgdGhhbiBvbmUgY29uZGl0aW9uIGlzCglwcmVzZW50IHRvIGNvbnRyb2wgdGhlIGxvb3AuCgpNb24gSnVsIDE3IDA4OjI2OjM1IDIwMDAgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogbWlwcy5jIChtaXBzX2V4cGFuZF9wcm9sb2d1ZSk6IERvbid0IGNhbGN1bGF0ZSB0aGUgbGFzdCBhcmd1bWVudAoJcmVnaXN0ZXIgdW5sZXNzIHdlIG5lZWQgaXQuICBXaGVuIHdlIGFyZSBjYWxjdWxhdGluZyB0aGlzLCBtYWtlCglzdXJlIEZVTkNUSU9OX0FSRyBpcyBnaXZpbmcgdXMgYSBSRUcuCgoyMDAwLTA3LTE3ICBTdGVwaGFuZSBDYXJyZXogIDxTdGVwaGFuZS5DYXJyZXpAd29ybGRuZXQuZnI+CgoJKiBmbG93LmMgKGxpYmNhbGxfZGVhZF9wKTogVXNlIHNpbmdsZV9zZXQgdG8gdmVyaWZ5IHRoZSBpbnNuCgloYXMgb25seSBvbmUgc2V0IGFuZCBnZXQgZm9yIGFuYWx5c2lzLgoJKHByb3BhZ2F0ZV9vbmVfaW5zbik6IERvbid0IHBhc3MgdGhlIFBBVFRFUk4gb2YgdGhlIGluc24uCgoyMDAwLTA3LTE3ICBNYXJrIEtsZWluIDxta2xlaW5AZGlzLmNvbT4KCgkgKiBwYS5jIChlbWl0X2hwZGl2X2NvbnN0KTogVXBkYXRlIHRvIG1hdGNoIG5ldyBwYXR0ZXJuIGZvciB1ZGl2c2kzLgoKMjAwMC0wNy0xNyAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBNYWtlZmlsZS5pbiAoVEFSR0VUX0dFVEdST1VQU19UKTogTmV3IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuCgkqIGNvbmZpZ3VyZS5pbiAoVEFSR0VUX0dFVEdST1VQU19UKTogRXZhbHVhdGUuCgkqIHN5cy1wcm90b3MuaCAoZ2V0Z3JvdXBzKTogVXNlIFRBUkdFVF9HRVRHUk9VUFNfVCBmb3IgYXJyYXkgdHlwZQoJb2Ygc2Vjb25kIGFyZ3VtZW50IG9mIGdldGdyb3Vwcy4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlYnVpbHQuCgoyMDAwLTA3LTE3ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24pOiBUd28gc2lnbmVkCgl2YWx1ZXMgd2l0aCBlcXVhbCBoaWdoIHdvcmRzIGFyZSBsZXNzL2dyZWF0ZXIgdGhhbiBlYWNoIG90aGVyIGlmCgl0aGVpciBsb3cgd29yZHMgYXJlIGxlc3MvZ3JlYXRlciB3aGVuIGNvbnNpZGVyZWQgYXMgdW5zaWduZWQuCgpNb24gSnVsIDE3IDAyOjM3OjA2IDIwMDAgIE1hcmMgRXNwaWUgPGVzcGllQG9wZW5ic2Qub3JnPgoKCSogY29uZmlndXJlLmluICh2YXgtKi1vcGVuYnNkKTogIENoYW5nZSB0byBuZXcgc3R5bGUgY29uZmlndXJhdGlvbiwKCWFkZCBjb2xsZWN0Mi9mbG9hdF9mb3JtYXQgaW5mb3JtYXRpb24uCgkqIGNvbmZpZ3VyZTogIFJlYnVpbHQuCgkqIGNvbmZpZy92YXgvb3BlbmJzZDEuaDogIE5ldy4KCSogY29uZmlnL3ZheC9vcGVuYnNkLmg6ICBOZXcuCgkqIGNvbmZpZy92YXgvdC1vcGVuYnNkOiAgTmV3LgoKMjAwMC0wNy0xNyAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEB2YWxpbnV4LmNvbT4KCgkqIGMtY29tbW9uLmMgKHNob3J0ZW5fY29tcGFyZSk6IFF1aWV0IHdhcm5pbmdzIGFib3V0IHVuc2lnbmVkCgljb21wYXJpc29ucyB3aXRoIHplcm8gd2hlbiB0aGV5IG9jY3VyIGluIGEgc3lzdGVtIGhlYWRlci4KCjIwMDAtMDctMTcgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGludm9rZS50ZXhpICgtcGVkYW50aWMpOiBSZWZlciB0byBJU08gQyBpbnN0ZWFkIG9mIEFOU0kgQywgYW5kCgl1cGRhdGUgdG8gZGVzY3JpYmUgY3VycmVudCBwcmFjdGljZS4KCgkqIGdsaW1pdHMuaCAoTExPTkdfTUlOLCBMTE9OR19NQVgsIFVMTE9OR19NQVgpOiBEZWZpbmUgZm9yIEM5OS4KCgkqIGNvbnRyaWIudGV4aSwgY3BwLnRleGksIGV4dGVuZC50ZXhpLCBpbnZva2UudGV4aTogVXBkYXRlCglyZWZlcmVuY2VzIHRvIEM5WC4gIENoYW5nZSByZWZlcmVuY2VzIHRvIC1mc3RkIGFuZCAtZmxhbmctaXNvYzl4Cgl0byByZWZlciB0byAtc3RkLgoKCSogYy1jb21tb24uYyAoc2Nhbl9jaGFyX3RhYmxlKTogQWxsb3cgInoiIGxlbmd0aCBtb2RpZmllcnMgb24KCWRpb3V4WG4gZm9ybWF0cy4KCShjaGVja19mb3JtYXRfaW5mbyk6IFVzZSBUWVBFX0RPTUFJTiBvbiB0aGUgdHlwZSBtYXRjaGVkIGFnYWluc3QKCWZvciAieiIgZm9ybWF0cywgdG8gcmV0cmlldmUgdGhlIGxhbmd1YWdlIHNpemVfdCByYXRoZXIgdGhhbiB0aGUKCWludGVybmFsIG9uZS4KCgkqIGMtY29tbW9uLmMgKGNoZWNrX2Zvcm1hdF9pbmZvKTogRG8gbm90IG1ha2UgYSBwZWRhbnRpYyBvYmplY3Rpb24KCXRvIHRoZSAnTCcgbGVuZ3RoIG1vZGlmaWVyIGlmIHVzZWQgd2l0aCBhIGZsb2F0aW5nIHBvaW50IHR5cGUKCWNoYXJhY3Rlci4KCgkqIGMtbGV4LmMgKHl5bGV4KTogRG9uJ3QgcGVkd2FybiBmb3IgaGV4YWRlY2ltYWwgZmxvYXRpbmcgcG9pbnQKCWNvbnN0YW50cyBpbiBDOTkgbW9kZS4KCjIwMDAtMDctMTcgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaDgzMDAubWQ6IEZpeCB0aGUgZm9ybWF0IG9mIG1hYy4KCShtb3ZzaV9oODMwMGhzKTogT3V0cHV0IGEgdGFiIGFmdGVyIHN0bWFjIGluc3RlYWQgb2YgYSBzcGFjZS4KCgkqIGg4MzAwLmMgKHR3b19pbnNuX2FkZHNfc3Vic19vcGVyYW5kKTogSW1wcm92ZSBjb2RlIGZvciBkZXRlY3RpbmcKCXByb2ZpdGFibGUgYWRkcy9zdWJzIHNlcXVlbmNlcy4KCgkqIGZvbGQtY29uc3QuYzogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDAwLTA3LTE2ICBMYXVyeW5hcyBCaXZlaW5pcyAgPGxhdXJhc0Bzb2Z0aG9tZS5uZXQ+CgoJKiBjcHBmaWxlcy5jIChyZWFkX25hbWVfbWFwKTogU2V0IG1hcF9saXN0X3B0ci0+bWFwX2xpc3RfbWFwIHRvIE5VTEwuCgoyMDAwLTA3LTE2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBmaXhpbmMvZml4Zml4ZXMuYyAoZW1pdF9nbnVfdHlwZSk6IEF2b2lkIHN0cmluZyBjb25jYXRlbmF0aW9uLgoKMjAwMC0wNy0xNiAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYzogVXBkYXRlIGNvbW1lbnRzLgoJKiBSRUFETUUuUG9ydGFiaWxpdHk6IFNtYWxsIHVwZGF0ZS4KCjIwMDAtMDctMTYgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogUkVBRE1FLlBvcnRhYmlsaXR5OiAgU21hbGwgdXBkYXRlLgoKMjAwMC0wNy0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmggKGlhNjRfbW92ZV9vayk6IFByb3RvdHlwZS4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X21vdmVfb2spOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9pYTY0L2lhNjQubWQgKG1vdnFpLCBtb3ZxaV9pbnRlcm5hbCk6IFVzZSBpdC4KCShtb3ZoaSwgbW92c2ksIG1vdmRpLCBtb3ZzZiwgbW92ZGYsIG1vdnhmKTogTGlrZXdpc2UuCgoyMDAwLTA3LTE1ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBoYXNoLmMgKHNhdmVfZXhwYW5zaW9uKTogQ2xlYXIgUFJFVl9XSElURSBvbiB0b2tlbnMKCWltbWVkaWF0ZWx5IGZvbGxvd2luZyBhIHBhc3RlIG9wZXJhdG9yLgoJKiBjcHBpbml0LmMgKHNvcnRfb3B0aW9ucyk6IE5ldyBmdW5jdGlvbiAob25seSBmb3IgSE9TVF9FQkNESUMpLgoJKGNwcF9yZWFkZXJfaW5pdCk6IENhbGwgaXQsIGlmIEhPU1RfRUJDRElDLgoJKGNwcF9oYW5kbGVfb3B0aW9ucyk6IERvIG5vdCBzb3J0IG9wdGlvbiBsaXN0IGhlcmUuCgkoaGFuZGxlX29wdGlvbik6IFJlbmFtZSB0byBjcHBfaGFuZGxlX29wdGlvbiBhbmQgZXhwb3J0LgoJKiBjcHBsZXguYyAoY3BwX3NjYW5fYnVmZmVyX25vb3V0cHV0LCBjcHBfc2Nhbl9idWZmZXIpOiBVc2UKCV9jcHBfZ2V0X3Rva2VuIGRpcmVjdGx5LgoJKGNwcF9zY2FuX2xpbmUpOiBSZXR1cm4gMCBhdCBFT0YsIDEgb3RoZXJ3aXNlLgoJKiBjcHBsaWIuYyAoY3BwX3B1c2hfYnVmZmVyKTogRG9uJ3Qgc2V0IG5ldy0+bGluZW5vIHRvIDEuCgkqIGNwcGxpYi5oOiBQcm90b3R5cGUgY3BwX2hhbmRsZV9vcHRpb24uICBVcGRhdGUgcHJvdG90eXBlIG9mCgljcHBfc2Nhbl9saW5lLgoKMjAwMC0wNy0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZXh0cmFjdF9tdWxkaXYpOiBEb24ndCBvcHRpbWl6ZSBwYXN0IGFuIHVuc2lnbmVkCgljYXN0IGFyb3VuZCBhbiBleHByZXNzaW9uLiAgVGlkeSBvdGhlciB1bnNpZ25lZCB0ZXN0cy4KCjIwMDAtMDctMTUgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRpYWdub3N0aWMuYyAoZG9pbmdfbGluZV93cmFwcGluZywgbGluZV93cmFwcGVyX3ByaW50Ziwgbm90aWNlLAoJdl9lcnJvcl93aXRoX2RlY2wsIHZfd2FybmluZ193aXRoX2RlY2wsIHZfcGVkd2Fybl93aXRoX2RlY2wpOiBSZW1vdmUuCgkodl9tZXNzYWdlX3dpdGhfZGVjbCk6IFJlbmFtZSB0byAuLi4KCShmb3JtYXRfd2l0aF9kZWNsKTogLi4uIHRoaXMuIFR3ZWFrCgkoZGlhZ25vc3RpY19mb3JfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShmYXRhbF9pb19lcnJvcik6IFVzZSB2ZXJiYXRpbSBpbiBsaWV1IG9mIG5vdGljZS4KCShhbm5vdW5jZV9mdW5jdGlvbik6IFVzZSB2ZXJiYXRpbS4KCShkZWZhdWx0X3ByaW50X2Vycm9yX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoZXJyb3Jfd2l0aF9kZWNsLCB3YXJuaW5nX3dpdGhfZGVjbCwgcGVkd2Fybl93aXRoX2RlY2wpOiBVc2UgbmV3CglpbmZyYXRydWN0dXJlLgoKMjAwMC0wNy0xNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbWlwcy5jIChmdW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVuY2UpOiBEb24ndCBkbyBhdXRvbWF0aWMKCWFnZ3JlZ2F0ZSBpbml0aWFsaXphdGlvbi4KCShtYWNoaW5lX2RlcGVuZGVudF9yZW9yZyk6IEluaXRpYWxpemUgdmFyaWFibGUgYG1vZGUnLgoKCSogbWlwcy5tZCAoYWJzZGkyKTogQ2hhbmdlIHZhcmlhYmxlIGByZWdubzEnIHRvIHVuc2lnbmVkIGludC4KCShyZWxvYWRfaW5kaSk6IFJlbmFtZSBsb3dvcmQvaGl3b3JkIHRvIGxvX3dvcmQvaGlfd29yZCB0byBhdm9pZAoJY29uZmxpY3RzIHdpdGggc3lzL3BhcmFtLmggbWFjcm8gb2YgdGhlIHNhbWUgbmFtZS4KCShyZWxvYWRfb3V0ZGkpOiBMaWtld2lzZS4KCjIwMDAtMDctMTUgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckByZWRoYXQuY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkKTogV2hlbiBvcHRpbWl6aW5nIEZPTysrID09IENPTlNUIGludG8gKytGT08KCT09IENPTlNUICsgSU5DUkVNRU5ULCBkb24ndCBvdmVyd3JpdGUgdGhlIHRyZWUgbm9kZSBmb3IgRk9PKyssCgljcmVhdGUgYSBuZXcgbm9kZSBpbnN0ZWFkLgoKMjAwMC0wNy0xNSAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBSRUFETUUuUG9ydGFiaWxpdHk6IENvcnJlY3QgZXhhbXBsZSBhYm91dCBjYWxsaW5nIGEgZnVuY3Rpb24KCXRocm91Z2ggYSBwb2ludGVyIHRvIGZ1bmN0aW9uLiAgRm9ybWF0IHdpZGUgcGFyYWdyYXBocy4KCjIwMDAtMDctMTUgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckByZWRoYXQuY29tPgoKCSogUkVBRE1FLlBvcnRhYmlsaXR5OiBVcGRhdGUgaW50ZWdlciBzdWZmaXhlcyBhbmQgZnVuY3Rpb24KCXByb3RvdHlwZSBzZWN0aW9ucy4KCjIwMDAtMDctMTUgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogUkVBRE1FLlBvcnRhYmlsaXR5OiBTbWFsbCB1cGRhdGUuCgoyMDAwLTA3LTE1ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIFJFQURNRS5Qb3J0YWJpbGl0eTogTmV3IGZpbGUuCgpGcmkgSnVsIDE0IDE4OjEzOjUzIDIwMDAgIE1hcmsgUCBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIElOU1RBTEw6IEdpdmUgc3BlY2lhbCBpbnN0cnVjdGlvbnMgZm9yIGJ1aWxkaW5nIEdDQyBvbiBJcml4IDYuCgkqIGNvbmZpZy9taXBzL3gtaXJpczYgKENDKTogRG9uJ3Qgc2V0IGl0LgoJKE9MRENDKTogTGlrZXdpc2UuCgoyMDAwLTA3LTE0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChkd2FyZjJvdXRfZnJhbWVfZGVidWdfZXhwcik6IElmIHdlIHN0b3JlIHRoZSBDRkEKCXJlZ2lzdGVyIGluIHRoZSBzdGFjayBhbmQgbGF0ZXIgaW4gYW5vdGhlciByZWdpc3RlciwgdXNlIHRoZSBuZXcKCXJlZ2lzdGVyLgoKRnJpIEp1bCAxNCAxMDoyNTo1MyAyMDAwICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IChhYnNkaTIpOiBIYW5kbGUgc2lnbl9leHRlbmQgZm9yCglzZWNvbmQgb3BlcmFuZC4KCjIwMDAtMDctMTQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcHBsaWIuYyAoZG9fcHJhZ21hX2RlcGVuZGVuY3kpOiBUaWR5IHdhcm5pbmcgbWVzc2FnZXMuCgoyMDAwLTA3LTE0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiAuY3ZzaWdub3JlOiBDb3JyZWN0IHR5cG8uCgoyMDAwLTA3LTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogLmN2c2lnbm9yZTogQWRkIGdlbmVyYXRlZCBZQUNDIGZpbGVzLgoJKiBvYmpjLy5jdnNpZ25vcmU6IE5ldyBmaWxlLgoKMjAwMC0wNy0xNCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBsZXguYyAoYWRqdXN0X2NvbHVtbik6IE5ldyBmdW5jdGlvbi4KCShza2lwX3doaXRlc3BhY2UpOiBVc2UgaXQuCgkoc2tpcF9ibG9ja19jb21tZW50KTogVXNlIGl0LCBhbmQgd2FybiBhYm91dCAvKi8qIHdpdGgKCS1XY29tbWVudHMuCgoyMDAwLTA3LTE0ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGhhc2guYyAoc3RydWN0IG1hY3JvX2luZm8pOiBBZGQgbmV3IG1lbWJlcnMuCgkoX2NwcF9mcmVlX2RlZmluaXRpb24pOiBEZWxldGUgdGhlIG1hY3JvIGRpcmVjdGx5LgoJKGNvdW50X3BhcmFtcyk6IFJldHVybiB2b2lkLCB3aXRoIGZpcnN0IHRva2VuIG9mCglleHBhbnNpb24gaW4gc3RydWN0IG1hY3JvX2luZm8gb24gc3VjY2Vzcy4KCShwYXJzZV9kZWZpbmUpOiBSZXR1cm4gaW50LiAgSG9pc3Qgc3ludGF4IGNoZWNraW5nIGZyb20KCXNhdmVfbWFjcm9fZXhwYW5zaW9uLiAgTGVhdmUgY2FsbCB0byBzYXZlX2V4cGFuc2lvbiB0bwoJX2NwcF9jcmVhdGVfZGVmaW5pdGlvbi4KCShhbGxvY19tYWNybyk6IE5lZWRzIGp1c3QgMiBhcmd1bWVudHMuCgkoZnJlZV9tYWNybyk6IERlbGV0ZS4KCShzYXZlX2V4cGFuc2lvbik6IERvbid0IHBlcmZvcm0gc3ludGF4IGNoZWNrLgoJKF9jcHBfY3JlYXRlX2RlZmluaXRpb24pOiBDYWxsIHNhdmVfZXhwYW5zaW9uLgoKMjAwMC0wNy0xMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ2VucmVjb2cuYyAod3JpdGVfaGVhZGVyKTogU3BsaXQgbG9uZyBzdHJpbmcuCgoJKiBjcHBoYXNoLmMgKG1hY3JvX2luZm8pOiBEb24ndCB1c2UgdGhlIGBzaWduZWQnIGtleXdvcmQuCgoJKiBzeXN0ZW0uaCAoYWxsb2NhKTogUHJvdG90eXBlIGlmIF9fR05VQ19fICYmIF9fU0laRV9UWVBFX18uCgoyMDAwLTA3LTEzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNhbGxzLmMgKHN0b3JlZF9hcmdzX21hcCk6IE5ldyB2YXJpYWJsZS4KCShjaGVja19zaWJjYWxsX2FyZ3VtZW50X292ZXJsYXBfMSk6IE5ldy4KCShjaGVja19zaWJjYWxsX2FyZ3VtZW50X292ZXJsYXApOiBOZXcuCgkoZXhwYW5kX2NhbGwpOiBJbml0aWFsaXplIHN0b3JlZF9hcmdzX21hcC4KCUNhbGwgY2hlY2tfc2liY2FsbF9hcmd1bWVudF9vdmVybGFwLgoKMjAwMC0wNy0xMyAgQnJ1Y2UgS29yYiAgPGJrb3JiQGdudS5vcmc+CgoJKiBmaXhpbmMvZml4Zml4ZXMuYzogbW92ZSBFWElUX0JST0tFTiB0byBoZWFkZXIsIGFkZCBzdWItZXhwciBtYXggY291bnQKCShlbWl0X2dudV90eXBlKTogdXRpbGl0eSBwcm9jZWR1cmUgZm9yIGdudV90eXBlX2ZpeAoJKGdudV90eXBlX2ZpeCk6IGltcGxlbWVudCB2YXJpb3VzIHByZS1wcm9jZXNzb3IgZ3VhcmRzIGFyb3VuZAoJc3RhbmRhcmQgdHlwZXMgc28gdGhlc2UgdHlwZXMgY2FuIGJlIGRlZmluZWQgb3ZlciBhbmQgb3ZlcgoJKiBmaXhpbmMvZml4aW5jbC50cGw6IGFkZCBhICJnbnVfdHlwZV9tYXAiIHRoYXQgZm9yY2VzIHRoZSBzdGFuZGFyZAoJdHlwZXMgYWxsdWRlZCB0byBhYm92ZSB3aWxsIGhhdmUgR05VLWNvbXBsaWFudCBiYXNlIHR5cGVzCgkqIGZpeGluYy9maXhsaWIuaDogYWRkIEVYSVRfQlJPS0VOIGRlZmluZSBhbmQgdGhlIGdudV90eXBlX21hcCBzdHJ1Y3QKCSogZml4aW5jL2luY2xoYWNrLmRlZjogYWRkIHRlc3RfdGV4dCBlbnRyaWVzIGFuZCB1dGlsaXplIHRoZSBuZXcKCSJnbnVfdHlwZXMiIGZpeCBmb3IgdGhlIHB0cmRpZmZfdCwgc2l6ZV90IGFuZCB3Y2hhcl90IHR5cGVzLgoJKiBmaXhpbmMvZml4aW5jbC54OiByZWdlbmVyYXRlCgoyMDAwLTA3LTEyICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQG1lcmxpbi5jb2Rlc291cmNlcnkuY29tPgoKCSogZGlhZ25vc3RpYy5jICh2bGluZV93cmFwcGVyX21lc3NhZ2Vfd2l0aF9sb2NhdGlvbiwKCXZfbWVzc2FnZV93aXRoX2ZpbGVfYW5kX2xpbmUsIHZfZXJyb3Jfd2l0aF9maWxlX2FuZF9maWxlLAoJdl9lcnJvcl9mb3JfYXNtLCB2X3dhcm5pbmdfZm9yX2FzbSwgdmZhdGFsLAoJdl93YXJuaW5nX3dpdGhfZmlsZV9hbmRfbGluZSwgdl9wZWR3YXJuX3dpdGhfZmlsZV9hbmRfbGluZSwKCXZzb3JyeSwgdmVycm9yLCB2d2FybmluZywgdnBlZHdhcm4pOiBSZW1vdmUuCgkoZGlhZ25vc3RpY19mb3JfYXNtKTogTmV3IGZ1bmN0aW9uLgoJKHBlZHdhcm4sIGVycm9yLCB3YXJuaW5nLCBwZWR3YXJuX3dpdGhfZmlsZV9hbmRfbGluZSwKCWVycm9yX3dpdGhfZmlsZV9hbmRfbGluZSwgd2FybmluZ193aXRoX2ZpbGVfYW5kX2xpbmUsIHNvcnJ5LAoJZXJyb3JfZm9yX2FzbSwgd2FybmluZ19mb3JfYXNtLCBmYXRhbCk6IFJlaW1wbGVtZW50LgoJKGZpbmlzaF9kaWFnbm9zdGljKTogQ2xlYXIgZGlhZ25vc3RpYyBpbmZvIGFzIHdlbGwuCgoyMDAwLTA3LTEzICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGMtY29tbW9uLmggKGZsYWdfZGlncmFwaHMpOiBOZXcuCgkqIGMtZGVjbC5jIChjX2RlY29kZV9vcHRpb24pOiBTZXQgZmxhZ19kaWdyYXBocyBhcyBhcHByb3ByaWF0ZS4KCSogYy1sZXguYyAoeXlsZXgpOiBVc2UgZmxhZ19kaWdyYXBocyB0byBkZWNpZGUgd2hldGhlciB0bwoJaG9ub3VyIGRpZ3JhcGhzLgoKMjAwMC0wNy0xMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZ2NjLmMgKGRvX3NwZWNfMSk6IEFkZCBuZXcgJUIgb3BlcmF0b3IuCgkoc2V0X2lucHV0KTogUHJlcGFyZSBmb3IgJUIuCgoJKGxpbmtfY29tbWFuZF9zcGVjKTogTW92ZSB1cCB3aXRoIHRoZSBvdGhlciB0bS5oLQoJb3ZlcnJpZGVhYmxlIHNwZWNzLiAgRmFjdG9yIG91dCB0aGUgcG9ydGlvbiBjb25kaXRpb25hbCBvbgoJTElOS19MSUJHQ0NfU1BFQ0lBTCBpbnRvIGEgbmV3IHNwZWMsICUobGlua19saWJnY2MpLgoJKHN0cnVjdCBjb21waWxlcik6IEp1c3QgaGF2ZSBhIHNpbmdsZSBzcGVjIHN0cmluZy4gIEFsbCB1c2VycwoJdXBkYXRlZC4KCShkZWZhdWx0X2NvbXBpbGVycyk6IFJlbW92ZSB1bm5lY2Vzc2FyeSBicmFjZXMuCgkoc3RhdGljX3NwZWNzKTogVXBkYXRlLgoKCSh0cmFkX2NhcGFibGVfY3BwLCBjcHBfb3B0aW9ucywgY2MxX29wdGlvbnMsIGFzbV9vcHRpb25zKTogTmV3CgluYW1lZCBzcGVjcy4KCShDIGFuZCBhc3NlbWJseSBzcGVjcyk6IFVzZSB0aGUgbmV3IG5hbWVkIHNwZWNzLCBhcyBhcHByb3ByaWF0ZS4KCgkqIG9iamMvbGFuZy1zcGVjcy5oOiBVc2UgdGhlIG5ldyBuYW1lZCBzcGVjcy4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBicmFjZXMuCgoyMDAwLTA3LTEyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBnY2MuYyAoZXhlY3V0ZSk6IElmIGEgc3VicHJvY2VzcyBnZXRzIGEgZmF0YWwgc2lnbmFsLCByZXBvcnQKCXN0cnNpZ25hbCgpIG9mIHRoZSBzaWduYWwgbnVtYmVyLCBhbmQgYXNrIGZvciBhIGJ1ZyByZXBvcnQuCglEbyBub3QgZG8gdGhpcyBmb3IgU0lHUElQRSBpZiB0aGVyZSdzIGFscmVhZHkgYmVlbiBhbiBlcnJvci4KCgkqIHRyYWRjcHAuYzogRG9uJ3QgaW5jbHVkZSBzaWduYWwuaC4gIERvbid0IGNhdGNoIFNJR1BJUEUuCglEZWxldGUgcGlwZV9jbG9zZWQuCgoJKiB0cmFkY2lmLmM6IFJlbW92ZS4KCjIwMDAtMDctMTIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGZpbmFsLmMgKHByb2ZpbGVfZnVuY3Rpb24pOiBEbyBub3QgZW1pdCBwcm9maWxlIGNvdW50ZXJzIGluCgl0aGUgZGF0YSBzZWN0aW9uLCBpZiBOT19QUk9GSUxFX0NPVU5URVJTIGlzIGRlZmluZWQuCgkqIHRtLnRleGk6IERvY3VtZW50IE5PX1BST0ZJTEVfQ09VTlRFUlMuICBVcGRhdGUgZG9jIGZvcgoJRlVOQ1RJT05fUFJPRklMRVIuCgoJKiBjb25maWcvaTM4Ni9saW51eC5oIChOT19QUk9GSUxFX0NPVU5URVJTKTogRGVmaW5lLgoJKEZVTkNUSU9OX1BST0ZJTEVSKTogSnVzdCBlbWl0IGEgY2FsbCB0byBtY291bnQuCgoyMDAwLTA3LTEyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiB0cmFkY3BwLmMgKG1haW4pOiBSZW5hbWUgJ3BlcnJvcicgbGFiZWwgdG8gJ3N5c19lcnJvcicuCgoJKiBjcHBleHAuYywgY3BwaGFzaC5jLCBjcHBoYXNoLmgsIGNwcGluaXQuYywgY3BwbGV4LmMsCgljcHBsaWIuYywgY3BwbGliLmg6IEVyYWRpY2F0ZSBhbGwgdHJhY2VzIG9mIGNvZGUgZGVwZW5kZW50IG9uCgl0cmFkaXRpb25hbCwgbGFuZ19jaGlsbCwgb3IgbGFuZ19mb3J0cmFuLgoKCSogY3BwZmlsZXMuYzogI3VuZGVmIHN0cmNtcCB0byBzdXBwcmVzcyB3YXJuaW5nIGFib3V0IG1hY3JvcwoJdXNlZCB3aXRob3V0IGFyZ3VtZW50cy4KCShfY3BwX2V4ZWN1dGVfaW5jbHVkZSk6IFVzZSBmLCBub3QgZm5hbWUsIGluICJObyBpbmNsdWRlIHBhdGgiCgllcnJvci4KCShfY3BwX3BvcF9maWxlX2J1ZmZlcik6IE5ldyBmdW5jdGlvbi4KCSogY3BwbGliLmM6IERvbid0IGluY2x1ZGUgPHN5cy9tbWFuLmg+LgoJKGNwcF9wdXNoX2J1ZmZlcik6IFNldCBsaW5lX2Jhc2UgYW5kIGxpbmVubyBpbiBuZXcgYnVmZmVyLgoJKGNwcF9wb3BfYnVmZmVyKTogVXNlIF9jcHBfcG9wX2ZpbGVfYnVmZmVyLgoKCSogY3BwbGV4LmM6IE1vdmUgYWxsIHByb3RvdHlwZXMgYW5kIHN0cnVjdHVyZSBkZWNsYXJhdGlvbnMgdG8gdGhlCgl0b3Agb2YgdGhlIGZpbGUuICBQcm9wZXJseSBwYXJlbnRoZXNpc2Ugc29tZSBtYWNybyBhcmd1bWVudHMuCgkoY3BwX3NjYW5fbGluZSk6IE5ldyBmdW5jdGlvbi4KCShzcGVjaWFsX3N5bWJvbCBbY2FzZSBUX0lOQ0xVREVfREVQVEhdKTogVXNlIHBmaWxlLT5pbmNsdWRlX2RlcHRoLAoJZG9uJ3QgbmVlZCB0byB3YWxrIHVwIHRoZSBzdGFjayBjb3VudGluZy4KCjIwMDAtMDctMTIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtY29tbW9uLmMgKGNvbWJpbmVfc3RyaW5ncyk6IEVtaXQgYSBwZWRhbnRpYyB3YXJuaW5nIHdoZW4gYQoJc3RyaW5nIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gdGhlIG1pbmltdW0gQU5TSSBDIGlzIHJlcXVpcmVkCgl0byBzdXBwb3J0LgoKV2VkIEp1bCAxMiAxMzoyNDozMCAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBwYS94bS1wYTY0LmggKE5PX1NZU19TSUdMSVNUKTogS2lsbC4KCSogZDMwdi94bS1kMzB2LmggKE5PX1NZU19TSUdMSVNUKTogS2lsbC4KCjIwMDAtMDctMTIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGMtZGVjbC5jIChkZWZpbmVfbGFiZWwpOiBXYXJuIGFib3V0IGlkZW50aWZpZXIgY29uZmxpY3RzIHdpdGgKCWxhYmVscyBpbiB0cmFkaXRpb25hbCBDLgoKCSogYy1wYXJzZS5pbiAodW5vcCArKTogV2FybiBhYm91dCB0aGUgdW5hcnkgcGx1cyBvcGVyYXRvciBmb3IKCXRyYWRpdGlvbmFsIEMuCgoJKiBjLXR5cGVjay5jIChzdG9yZV9pbml0X3ZhbHVlKTogV2FybiBhYm91dCBhdXRvbWF0aWMgYWdncmVnYXRlCglpbml0aWFsaXphdGlvbiBmb3IgdHJhZGl0aW9uYWwgQy4KCgkqIGludm9rZS50ZXhpICgtV3RyYWRpdGlvbmFsKTogRG9jdW1lbnQgbmV3IHdhcm5pbmdzLgoKMjAwMC0wNy0xMiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKGMtZXJyb3JzLm8pOiBGaXggdGhpbmtvIGluIGRlcGVuZGVuY3kuCgoyMDAwLTA3LTEyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBnY2MuYyAoQyBzcGVjcyBbIVVTRV9DUFBMSUJdKTogSW52b2tlIHRyYWRjcHAgaWYgYW55IG9mCgktdHJhZGl0aW9uYWwsIC1mdHJhZGl0aW9uYWwsIG9yIC10cmFkaXRpb25hbC1jcHAgd2FzIGdpdmVuLgoJRG8gbm90IHBhc3MgLXRyYWRpdGlvbmFsIHRvIHRoZSBwcmVwcm9jZXNzb3IuCgkoLlMgc3BlYyk6IExpa2V3aXNlLiAgRG9uJ3QgYm90aGVyIGRlZmluaW5nIF9fQVNTRU1CTEVSX18sIHRoZQoJcHJlcHJvY2Vzc29yIGRvZXMgaXQgYXV0b21hdGljYWxseS4KCSogb2JqYy9sYW5nLXNwZWNzLmg6IExpa2V3aXNlLiAgRG9uJ3QgYm90aGVyIGRlZmluaW5nIF9fT0JKQ19fLgoKCSogY2gvbGFuZy1zcGVjcy5oOiBBbHdheXMgdXNlIHRyYWRjcHAuICBEbyBub3QgcGFzcwoJLXRyYWRpdGlvbmFsLCAtdHJpZ3JhcGhzLCBvciAtcGVkYW50aWMgdG8gdGhlIHByZXByb2Nlc3Nvci4KCSogZi9sYW5nLXNwZWNzLmggKC5GIHNwZWMpOiBMaWtld2lzZS4gIERvbid0IGJvdGhlciBkZWZpbmluZwoJX0xBTkdVQUdFX0ZPUlRSQU4uCgoyMDAwLTA3LTEyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBleHAuYyAoTE9HSUNBTCk6IERlbGV0ZSBtYWNyby4KCShfY3BwX3BhcnNlX2V4cHIpOiBEbyBub3QgdXNlIFVOQVJZIGZvciB1bmFyeSArLiAgSW1wbGVtZW50IHx8CglhbmQgJiYgZGlyZWN0bHkuCgoJKiBjcHBoYXNoLmMgKEhBU0hTSVpFKTogSW5jcmVhc2UgdG8gNDA5Ni4KCShzdHJ1Y3QgaGFzaGR1bW15KTogQWRkIGhhc2ggZmllbGQuCgkoZXFfSEFTSE5PREUpOiBDb21wYXJlIHVucmVkdWNlZCBoYXNoZXMsIHRoZW4gbGVuZ3RocywgdGhlbgoJdGhlIHN0cmluZyB2YWx1ZXMgdXNpbmcgbWVtY21wLgoJKGNwcF9sb29rdXApOiBTZXQgZHVtbXkuaGFzaC4KCldlZCBKdWwgMTIgMTM6MTU6MTYgMjAwMCAgTWFyYyBFc3BpZSA8ZXNwaWVAb3BlbmJzZC5vcmc+CgoJKiBjb25maWd1cmUuaW4gKG04OGstb3BlbmJzZCk6IEV4cHJlc3MgY29uZmlndXJhdGlvbiB1c2luZyBuZXcgZnJhZ21lbnQKCXN0eWxlLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgkqIG04OGsvYW91dC1kYnguaDogTmV3LgoJKiBtODhrL29wZW5ic2QuaDogTmV3LgoJKiBtODhrL3htLW9wZW5ic2QuaDogTmV3LgoKMjAwMC0wNy0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZXhwci5jIChleHBhbmRfZXhwcik6IFJldHVybiBjb25zdDBfcnR4LCBub3QgZXJyb3JfbWFya19ub2RlLgoKMjAwMC0wNy0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHJlbG9hZC5jIChwdXNoX3NlY29uZGFyeV9yZWxvYWQpOiBNYWtlIHN1cmUgdG8gYWRkIHRoZSBuZXcKCXJlbG9hZCBhdCB0aGUgZW5kLCBhZnRlciBhY3F1aXJpbmcgc2Vjb25kYXJ5IG1lbW9yeS4KCjIwMDAtMDctMTIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwcGxleC5jIChpc19tYWNyb19kaXNhYmxlZCk6IFVzZSBDUFBfV1RSQURJVElPTkFMLgoKCSogYy1kZWNsLmMgKHNldF9jdXJyZW50X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWQsIGFub25fYWdncl90eXBlX3AsCglsYW5nX2V4cGFuZF9zdG10KTogTWFyayBwYXJhbWV0ZXJzIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCgkqIGMtcGFyc2UuaW4gKHN0bXQpOiBEZWxldGUgdW51c2VkIHZhcmlhYmxlcy4KCgkqIGNvbnZlcnQuYyAoY29udmVydF90b192ZWN0b3IpOiBMaWtld2lzZS4KCgkqIGdlbnN1cHBvcnQuYyAocHJvY2Vzc19ydHgpOiBEZWNsYXJlIGF0dHIgYXMgYHJ0dmVjJyBub3QgYHJ0eCcuCgoJKiB0cmVlLmMgKGZpbmlzaF92ZWN0b3JfdHlwZSk6IFByb3RvdHlwZS4KCjIwMDAtMDctMTIgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2ZpeGZpeGVzLmM6IHVzZSB4bWFsbG9jCgkqIGZpeGluYy9maXhpbmNsLmMoaW5pdGlhbGl6ZSk6IHNldCBwcm9ncmFtIG5hbWUgZm9yIHhtYWxsb2MKCSogZml4aW5jL2ZpeGxpYi5jKG11c3RfbWFsbG9jKTogb2Jzb2xldGUKCShpc19jeHhfaGVhZGVyKTogbm8gbG9uZ2VyIHVzZWQgLSBkaXNhYmxlZAoJKHNraXBfcXVvdGUpOiBpbnNlcnRlZCBhbmQgZGlzYWJsZWQgZm9yIGZ1dHVyZSB1c2UKCSogZml4aW5jL2ZpeGxpYi5oOiByZWZsZWN0cyBhYm92ZQoJKiBmaXhpbmMvZml4dGVzdHMuYzogcmVtb3ZlZCBkaW5rbGViZXJyaWVzCgoyMDAwLTA3LTEyICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGhhc2guaDogKFRPS0VOX1NQRUxMKSBQdWxsZWQgZnJvbSBjcHBsZXguYy4KCSogY3BwbGV4LmMgKFRPS0VOX1NQRUxMKSBNb3ZlIHRvIGNwcGhhc2guaC4KCgkqIGNwcGhhc2guYzogKHN0cnVjdCBtYWNyb19pbmZvLCBhbGxvY19tYWNybywgZnJlZV9tYWNybywKCXN0cnVjdCB0b2tsaXN0X2R1bW15KTogTmV3LgoJKGNwcF9mcmVlX2RlZmluaXRpb24pOiBGcmVlIG1hY3JvcyB3aXRoIGZyZWVfbWFjcm8uCgkoY291bnRfcGFyYW1zKTogRG9uJ3Qgc2F2ZSBwYXJhbWV0ZXIgc3BlbGxpbmdzLiAgU2F2ZSBtYWNybwoJaW5mb3JtYXRpb24gaW4gYSBzdHJ1Y3QgbWFjcm9faW5mby4KCShwYXJzZV9kZWZpbmUpOiBEb24ndCBhbGxvY2F0ZSBhIHRva2VuIGxpc3QuCgkoc2F2ZV9leHBhbnNpb24pOiBBbGxvY2F0ZSB0aGUgbWFjcm8ncyB0b2tlbiBsaXN0LCBhbmQKCXNhdmUgcGFyYW1ldGVyIHNwZWxsaW5ncyBpZiBuZWNlc3NhcnkuICBVc2UgVE9LRU5fU1BFTEwuCgkoY3BwX2NyZWF0ZV9kZWZpbml0aW9uKTogTWFrZSBsaXN0IGNvbnN0LgoKMjAwMC0wNy0xMiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogYy10eXBlY2suYyAocGVkd2Fybl9jOTkpOiBNb3ZlIHRvCgkqIGMtZXJyb3JzLmM6IC4uLiBIZXJlLgoJKiB0b3BsZXYuaCAodmVycm9yLCB2d2FybmluZywgdnBlZHdhcm4pOiBSZW1vdmUgcHJvdG90eXBlcy4KCSogZGlhZ25vc3RpYy5jICh2ZXJyb3IsIHZ3YXJuaW5nLCB2cGVkd2Fybik6IE1ha2Ugc3RhdGljLgoJKiBNYWtlZmlsZS5pbiAoQ19BTkRfT0JKQ19PQkpTKTogSW5jbHVkZSBjLWVycm9ycy5vCgkoYy1lcnJvcnMubyk6IExpc3QgZGVwZW5kZW5jeS4KCjIwMDAtMDctMTIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLXBhcnNlLmM6IFJlbW92ZS4KCSogYy1wYXJzZS5oOiBMaWtld2lzZS4KCSogYy1wYXJzZS55OiBMaWtld2lzZS4KCSogb2JqYy9vYmpjLXBhcnNlLmM6IExpa2V3aXNlLgoJKiBvYmpjL29iamMtcGFzcmUueTogTGlrZXdpc2UuCgoyMDAwLTA3LTExICBSb2RuZXkgQnJvd24gIDxSb2RuZXlCcm93bkBwbXNjLmNvbT4KCgkqIGdjYy50ZXhpOiBGaXggbWlub3IgdHlwb3MKCSogZXh0ZW5kLnRleGk6IEZpeCBtaW5vciB0eXBvcwoKMjAwMC0wNy0xMSAgTWFyYyBFc3BpZSA8ZXNwaWVAb3BlbmJzZC5vcmc+CgoJKiBjb2xsZWN0Mi5jIChtYWluKTogUmVjb2duaXplIC5sbyBhcyBvYmplY3QgZmlsZXMuCgoyMDAwLTA3LTExICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIHBhLmMgKGhwcGFfZW5jb2RlX2xhYmVsKTogU3RvcmUgbGFiZWxzIGluIGdjIG1lbW9yeSB3aGVuIGdnY19wIGlzCgl0cnVlLgoKCSogYWNsb2NhbC5tNCAoQUNfRlVOQ19NTUFQX0FOWVdIRVJFKTogRXh0ZW5kIHRlc3QgdG8gZGV0ZWN0IHN5c3RlbXMKCXdpdGggTUFQX0FOT05ZTU9VUyBhbmQgTUFQX0FOT04uCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWJ1aWx0LgoKMjAwMC0wNy0xMiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZGlhZ25vc3RpYy5jIChzYXZlX291dHB1dF9zdGF0ZSk6IFJlbW92ZS4KCShyZXN0b3JlX291dHB1dF9zdGF0ZSk6IExpa2V3aXNlLgoJKGNsZWFyX3RleHRfaW5mbyk6IE5ldyBmdW5jdGlvbi4KCShjbGVhcl9kaWFnbm9zdGljX2luZm8pOiBMaWtld2lzZS4KCShvdXRwdXRfdGV4dF9sZW5ndGgsIGlzX3N0YXJ0aW5nX25ld2xpbmUsIG91dHB1dF9wcmVmaXgsCglsaW5lX3dyYXBfY3V0b2ZmLCBpZGVhbF9saW5lX3dyYXBfY3V0b2ZmLCBwcmVmaXhfd2FzX2VtaXR0ZWRfZm9yLAoJcHJlZml4aW5nX3BvbGljeSwgb3V0cHV0X2J1ZmZlcl9wdHJfdG9fZm9ybWF0X2FyZ3MpOiBOZXcgbWFjcm9zCgkoc2V0X3JlYWxfbWF4aW11bV9sZW5ndGgsIG91dHB1dF9zZXRfbWF4aW11bV9sZW5ndGgsCglvdXRwdXRfc2V0X3ByZWZpeCwgb3V0cHV0X2dldF9wcmVmaXgsIG91dHB1dF9zZXRfbWF4aW11bV9sZW5ndGgsCglvdXRwdXRfZGVzdHJveV9wcmVmaXgsIGluaXRfb3V0cHV0X2J1ZmZlciwKCXJlc2hhcGVfZGlhZ25vc3RpY19idWZmZXIsIG91dHB1dF9zcGFjZV9sZWZ0LCBvdXRwdXRfZW1pdF9wcmVmaXgsCglvdXRwdXRfYWRkX25ld2xpbmUsIG91dHB1dF9hZGRfY2hhcmFjdGVyLCBvdXRwdXRfYWRkX3NwYWNlLAoJb3V0cHV0X2FwcGVuZF9yLCBvdXRwdXRfYXBwZW5kLCB3cmFwX3RleHQsIG91dHB1dF9mb3JtYXQsCglvdXRwdXRfZG9fcHJpbnRmLCBvdXRwdXRfcHJpbnRmLCBvdXRwdXRfZG9fdmVyYmF0aW0sCglvdXRwdXRfdmVyYmF0aW0sIHZlcmJhdGltKTogVXNlIHRoZW0uCgkob3V0cHV0X2NsZWFyKTogU3BsaXQgaW50byBjbGVhdF90ZXh0X2luZm8gYW5kCgljbGVhcl9kaWFnbm9zdGljX2luZm8uCgkoc3RydWN0IG91dHB1dF9zdGF0ZSk6IE1vdmUgdG8uLi4KCgkqIGRpYWdub3N0aWMuaDogLi4uSGVyZQoJKHN0cnVjdCBvdXRwdXRfYnVmZmVyKTogQWRqdXN0LgoKMjAwMC0wNy0xMSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogY3BwbGV4LmMgKHBhcnNlX25hbWUpOiBObyBsb25nZXIgaW5saW5lIChwcmVtYXR1cmUgb3B0aW1pemF0aW9uKS4KCShkb19wb3BfY29udGV4dCk6IEZvbGQgaW50byBwb3BfY29udGV4dC4KCShwb3BfY29udGV4dCk6IFJldHVybnMgaW50LgoJKGxleF9uZXh0KTogSG9pc3QgdGVzdCBmb3IgZW5kIG9mIGRpcmVjdGl2ZSBpbnRvIHBvcF9jb250ZXh0LgoJKHB1c2hfbWFjcm9fY29udGV4dCk6IFJldHVybnMgaW50OyB0YWtlcyBqdXN0IHJlYWRlciBhbmQgdG9rZW4uCglIb2lzdCB0ZXN0IGZvciBleGNlc3NpdmUgbmVzdGluZyB0byBjYWxsZXIuCgkocHVzaF9hcmdfY29udGV4dCk6IFJldHVybnMgdm9pZDsgdGFrZXMganVzdCByZWFkZXIgYW5kIHRva2VuLgoJRG8gbm90IGNhbGwgc3RyaW5naWZ5X2FyZyBvciBnZXRfcmF3X3Rva2VuLgoJKGdldF9yYXdfdG9rZW4pOiBDb252ZXJ0IHRhaWwgcmVjdXJzaW9uIHRocm91Z2gJcHVzaF9hcmdfY29udGV4dAoJdG8gYSBsb29wIGF0IHRoaXMgbGV2ZWwuICBDYWxsIHN0cmluZ2lmeV9hcmcgaGVyZSBpZiBhcHByb3ByaWF0ZS4KCShtYXliZV9wYXN0ZV93aXRoX25leHQpOiBDb252ZXJ0IHRhaWwgcmVjdXJzaW9uIHRvIGEgd2hpbGUgbG9vcC4KCUhvaXN0IHRlc3Qgb2YgcGFzdGVfbGV2ZWwgdG8gY2FsbGVyLgoKCShzdHJpbmdpZnlfYXJnKTogUHVzaCBhcmcgY29udGV4dCBhdCBiZWdpbm5pbmcuCgkoY3BwX2dldF90b2tlbik6IFNwbGl0IG91dCBjb3JlIGludG8gX2NwcF9nZXRfdG9rZW4uICBDYWxsCglwcm9jZXNzX2RpcmVjdGl2ZSBoZXJlLiAgVGhyb3cgYXdheSBDUFBfUExBQ0VNQVJLRVIgdG9rZW5zLgoJKF9jcHBfZ2V0X3Rva2VuKTogQ29udmVydCB0YWlsIHJlY3Vyc2lvbiB0aHJvdWdoCglwdXNoX21hY3JvX2NvbnRleHQgdG8gYSBsb29wIGF0IHRoaXMgbGV2ZWwuCgkoX2NwcF9nbHVlX2hlYWRlcl9uYW1lLCBpc19tYWNyb19kaXNhYmxlZCwgc3RyaW5naWZ5X2FyZywKCV9jcHBfZ2V0X3Jhd190b2tlbik6IFVzZSBfY3BwX2dldF90b2tlbi4KCShfY3BwX3NraXBfcmVzdF9vZl9saW5lKTogRHJvcCB0aGUgY29udGV4dCBzdGFjayBkaXJlY3RseTsgZG8KCW5vdCBjYWxsIHBvcF9jb250ZXh0LgoJKF9jcHBfcnVuX2RpcmVjdGl2ZSk6IENhbGwgbGV4X25leHQgZGlyZWN0bHkuCgoJKiBjcHBoYXNoLmg6IFByb3RvdHlwZSBfY3BwX2dldF90b2tlbi4KCSogY3BwZXhwLmMgKGxleCk6IFVzZSBpdC4KCSogY3BwaGFzaC5jIChwYXJzZV9kZWZpbmUpOiBVc2UgaXQuCgkqIGNwcGxpYi5jIChnZXRfZGVmaW5lX25vZGUsIGRvX3VuZGVmLCBwYXJzZV9pbmNsdWRlLAoJcmVhZF9saW5lX251bWJlciwgZG9fbGluZSwgZG9faWRlbnQsIGRvX3ByYWdtYSwgZG9fcHJhZ21hX2djYywKCWRvX3ByYWdtYV9pbXBsZW1lbnRhdGlvbiwgZG9fcHJhZ21hX3BvaXNvbiwgZG9fcHJhZ21hX2RlcGVuZGVuY3ksCglwYXJzZV9pZmRlZiwgdmFsaWRhdGVfZWxzZSk6IFVzZSBpdC4KCShjcHBfcHVzaF9idWZmZXIpOiBUd2VhayBlcnJvciBtZXNzYWdlOyBhYm9ydCBpZiBhbnlvbmUgdHJpZXMKCXRvIHB1c2ggYSBidWZmZXIgd2hpbGUgbWFjcm8gZXhwYW5zaW9ucyBhcmUgc3RhY2tlZC4KCjIwMDAtMDctMTEgIERvbm4gVGVycnkgIDxkb25udGVAbWljcm9zb2Z0LmNvbT4KCgkqIGNwcGxleC5jIChmcmVlX21hY3JvX2FyZ3MsIHNhdmVfdG9rZW4pOiBDYXN0IGFyZyBvZiBmcmVlCglhbmQvb3IgeHJlYWxsb2MgdG8gUFRSLgoJKF9jcHBfaW5pdF9pbnB1dF9idWZmZXIpOiBDbGVhciBhbGwgZmllbGRzIG9mIHRoZSBiYXNlIGNvbnRleHQuCgpUdWUgSnVsIDExIDE1OjI4OjIxIENEVCAyMDAwICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGdlbnN1cHBvcnQuYyAocHJvY2Vzc19ydHgpOiBNYWtlIHJ0bCBjaGVja2luZyBzdG9wCgljb21wbGFpbmluZyBhYm91dCB0aGUgZGVmaW5lX2luc24gd2hpbGUgaXQgaXMgYmVpbmcKCWNvbnZlcnRlZCBmcm9tIGEgZGVmaW5lX2luc25fYW5kX3NwbGl0LgoKVHVlIEp1bCAxMSAxNjoyNjoxNyAyMDAwICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoc2ltcGxlX21lbW9yeV9vcGVyYW5kKTogQWNjZXNzIHRoZQoJSU5UVkFMIG9mIHRoZSBhZGRyZXNzLCBub3QgaXQncyBjb250YWluaW5nIE1FTS4KCjIwMDAtMDctMTEgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2ZpeHRlc3RzLmMoZG91YmxlX3NsYXNoKTogb2Jzb2xldGUKCShlbHNlX2VuZGlmX2xhYmVsKTogbGlrZXdpc2UKCSogZml4aW5jL2luY2xoYWNrLmRlZihpcml4X211bHRpbGluZV9jbW50KTogb2Jzb2xldGUKCShsaWJjMV9pZmRlZmRfbWVteCk6IGNvcnJlY3QgaW5pdGlhbCBjb21tZW50CglhbmQgb21pdCB0aGUgI2lmLyNlbmRpZiBwYWlyIGZyb20gdGhlIG1lbXh4eCBkZWNsYXJhdGlvbnMKCSogZml4aW5jL2ZpeGluY2wueDogcmVnZW4KCjIwMDAtMDctMTEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwcGxleC5jIChULCBJLCBTLCBDLCBOKTogQXZvaWQgbm9uLWNvbnN0YW50IGluaXRpYWxpemVycy4KCjIwMDAtMDctMTEgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwLnRleGk6IFVwZGF0ZS4KCjIwMDAtMDctMTEgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaW5pdC5jOiAoY3BwX3JlYWRlcl9pbml0KTogQWxsb3cgZGlncmFwaHMgYnkgZGVmYXVsdC4KCShoYW5kbGVfb3B0aW9uKTogU2V0IGRpZ3JhcGhzIGFjY29yZGluZyB0byBzdGFuZGFyZC4KCU1lcmdlIE9QVF9sYW5nX2M4OSBoYW5kbGVyIHdpdGggT1BUX3N0ZF9jODkuCgoJKiBjcHBsZXguYzogKGxleF9saW5lLCBjYW5fcGFzdGUpOiBIb25vdXIgZGlncmFwaHMgaW4KCWFjY29yZGFuY2Ugd2l0aAl0aGUgZGlncmFwaHMgZmxhZy4KCgkqIGNwcGxpYi5oOiAoc3RydWN0IGNwcF9vcHRpb25zKTogTmV3IG9wdGlvbiBkaWdyYXBocy4KCjIwMDAtMDctMTAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoJICAgIEJydWNlIEtvcmIgIDxia29yYkBnbnUub3JnPgoKCSogZml4aW5jL2luY2xoYWNrLmRlZiAobGliYzFfaWZkZWZkX21lbXgpOiBOZXcgZml4LgoJKiBmaXhpbmMvZml4aW5jbC54OiBSZWdlbmVyYXRlLgoJKiBmaXhpbmMvdGVzdHMvYmFzZS90ZXN0aW5nLmg6IEFkZCB0ZXN0Y2FzZS4KCjIwMDAtMDctMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGdvdF9zeW1ib2xpY19vcGVyYW5kKTogTmV3LgoJKHN5bWJvbGljX29wZXJhbmQsIG1vdmVfb3BlcmFuZCk6IFJldmVydCAwNzAxIGNoYW5nZS4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChQUkVESUNBVEVfQ09ERVMpOiBVcGRhdGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQtcHJvdG9zLmggKGdvdF9zeW1ib2xpY19vcGVyYW5kKTogRGVjbGFyZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobW92ZGkpOiBSZXZlcnQgMDcwMSB3cnQgc3ltYm9saWNfb3BlcmFuZDsKCXNwbGl0IHRoZSBvZmZzZXQgaW50byBhIDE0LWJpdCBsb3cgcGFydCBpbnN0ZWFkIG9mIGEgMTMtYml0IGxvdyBwYXJ0LgoJKGxvYWRfZnB0cik6IE1hcmsgdGhlIG1lbSBhcyB1bmNoYW5naW5nLgoJKGxvYWRfc3ltcHRyKTogVXNlIGdvdF9zeW1ib2xpY19vcGVyYW5kLgoKMjAwMC0wNy0xMCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGxpYmdjYzIuYyAobmV4dF9zdGFja19sZXZlbCk6IENhc3QgcmVzdWx0IG9mIGNvbXB1dGF0aW9uIHRvCgkodm9pZCAqKikgc28gdGhhdCB0aGUgYXNzaWdubWVudCBkb2VzIG5vdCBnZW5lcmF0ZSBhIHdhcm5pbmcuCgoyMDAwLTA3LTEwICBDaGFuZHJha2FsYSBDaGF2dmEgIDxjY2hhdnZhQHJlZGhhdC5jb20+CgoJKiBmbGFncy5oIDogQWRkIG5ldyB2YXJpYWJsZSBmbGFnX3NpbmdsZV9wcmVjaXNpb25fY29uc3RhbnQuCgkqIHRvcGxldi5jIChkaXNwbGF5X2hlbHApIDogQWRkIC1mc2luZ2xlLXByZWNpc2lvbi1jb25zdGFudCBvcHRpb24uCgkoZmxhZ19zaW5nbGVfcHJlY2lzaW9uX2NvbnN0YW50KTogTmV3LgoJKiBjLWxleC5jICh5eWxleCk6IENvbnZlcnQgZmxvYXRpbmcgcG9pbnQgY29uc3RhbnQgdG8gc2luZ2xlCglwcmVjaXNpb24gY29uc3RhbnQuCgkqIGludm9rZS50ZXhpIDogQWRkIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgbmV3IG9wdGlvbi4KCjIwMDAtMDctMTAgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRpYWdub3N0aWMuYyAob3V0cHV0X29jdGFsKTogU2Vjb25kIHBhcmFtZXRlciBpcyB1bnNpZ25lZC4KCShvdXRwdXRfbG9uZ19vY3RhbCk6IExpa2V3aXNlLgoJKG91dHB1dF9oZXhhZGVjaW1hbCk6IExpa2V3aXNlLgoJKG91dHB1dF9sb25nX2hleGFkZWNpbWFsKTogTGlrZXdpc2UuCgkob3V0cHV0X2Zvcm1hdCk6IEFkanVzdCBhcmd1bWVudHMgZXh0cmFjdGlvbi4gVHdlYWsuCgkob3V0cHV0X3ZlcmJhdGltLCB2ZXJiYXRpbSk6IEVuZCB2YXJpYWJsZSBhcmd1bWVudCBsaXN0LgoJKHJlcG9ydF9kaWFnbm9zdGljKTogSW1wcm92ZSBkb2N1bWVudGF0aW9uLgoKMjAwMC0wNy0xMCAgQmVuamFtaW4gQ2hlbGYgIDxjaGVsZkBjb2Rlc291cmNlcnkuY29tPgoKCSogYy1jb21tb24uaCAoYnVpbGRfc3RtdCk6IERlY2xhcmUuCgkoYnVpbGRfY29udGludWVfc3RtdCk6IExpa2V3aXNlLgoJKGJ1aWxkX2JyZWFrX3N0bXQpOiBMaWtld2lzZS4KCShidWlsZF9yZXR1cm5fc3RtdCk6IExpa2V3aXNlLgoKCSogYy1kZWNsLmMgKGRvX2Nhc2UpOiBSZXdyaXRlIHRvIGRvIHdoYXQgcHJldmlvdXNseSBkb25lIGluCgljLXBhcnNlLmluLgoKCSogYy1zZW1hbnRpY3MuYyAoYnVpbGRfc3RtdCk6IERlZmluZS4KCShidWlsZF9yZXR1cm5fc3RtdCk6IExpa2V3aXNlLgoJKGJ1aWxkX2JyZWFrX3N0bXQpOiBMaWtld2lzZS4KCShidWlsZF9jb250aW51ZV9zdG10KTogTGlrZXdpc2UuCgkoYnVpbGRfY2FzZV9sYWJlbCk6IExpa2V3aXNlLgoKCSogYy1wYXJzZS5pbiAoQlJFQUspOiBDaGFuZ2UgdG8gYnVpbGQgdHJlZSwgdGhlbiBnZW5lcmF0ZSBSVEwuCgkoQ09OVElOVUUpOiBMaWtld2lzZS4KCShSRVRVUk4pOiBMaWtld2lzZS4KCShDQVNFKTogTGlrZXdpc2UuCgkoREVGQVVMVCk6IExpa2V3aXNlLgoKCSogYy1wYXJzZS55OiBSZWdlbmVyYXRlLgoJKiBjLXBhc3JlLmM6IExpa2V3aXNlLgoKMjAwMC0wNy0wOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9leHByKTogQmFpbCBlYXJsaWVyIGlmIHdlIGdldCBhbiBlcnJvcl9tYXJrX25vZGUuCgoJKiB0cmVlLmggKFNUUklQX05PUFMpOiBDaGVjayBmb3IgZXJyb3JfbWFya19ub2RlLgoJKFNUUklQX1NJR05fTk9QUywgU1RSSVBfVFlQRV9OT1BTKTogTGlrZXdpc2UuCgkoZHdhcmYyb3V0XyopOiBSZW1vdmUgZHVwbGljYXRlIGRlY2xhcmF0aW9ucy4KCgkqIGMtZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBDb3B5IERFQ0xfQUJTVFJBQ1RfT1JJR0lOIGZyb20KCURFQ0xfQUJTVFJBQ1RfT1JJR0lOLCBub3QgREVDTF9PUklHSU4uCgoyMDAwLTA3LTEwICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkaWFnbm9zdGljLmMgKHdyYXBfdGV4dCk6IE5ldyBmdW5jdGlvbi4KCShtYXliZV93cmFwX3RleHQpOiBMaWtld2lzZS4KCShvdXRwdXRfYWRkX3N0cmluZyk6IFVzZSBpdC4KCShvdXRwdXRfZm9ybWF0KTogTGlrZXdpc2UuCgkoY291bnRfZXJyb3IpOiBVc2UgdmVyYmF0aW0gaW5zdGVhZCBvZiBub3RpY2UuCgkocmVwb3J0X2Vycm9yX2Z1bmN0aW9uKTogTGlrZXdpc2UuIERvbid0IHVzZSBwbGFpbiBmcHJpbnRmLgoJKGZpbmlzaF9kaWFnbm9zdGljKTogTmV3IGZ1bmN0aW9uLgoJKG91dHB1dF9kb192ZXJiYXRpbSk6IFR3ZWFrLiAgQ29tbW9uYWxpemUgZnVuY3Rpb25hbGl0aWVzIGluCglvdXRwdXRfdmVyYmF0aW0gYW5kIHZlcmJhdGltLgoJKG91dHB1dF92ZXJiYXRpbSk6IEFkanVzdC4KCSh2ZXJiYXRpbSk6IExpa2V3aXNlLgoJKHJlcG9ydF9kaWFnbm9zdGljKTogRGVmaW5lLgoKCSogZGlhZ25vc3RpYy5oIChyZXBvcnRfZGlhZ25vc3RpYyk6IFByb3RvdHlwZS4KCjIwMDAtMDctMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGV4cC5jIChfY3BwX3BhcnNlX2V4cHIpOiBEb24ndCB1c2UgdW5hcnkgcGx1cy4KCjIwMDAtMDctMDkgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwaGFzaC5oOiBJU3ZzcGFjZSwgaXNfdnNwYWNlLCBpc19udnNwYWNlOiBOZXcuCglJU2hzcGFjZSwgSVNzcGFjZTogVXBkYXRlLgoKCSogY3BwaW5pdC5jOiBJU1RBQkxFOiBVcGRhdGUuCglWOiBOZXcuCgoJKiBjcHBsZXguYyAoSVNfSFNQQUNFLCBTX05FV0xJTkUpOiBSZW1vdmUuCgkoSVNfRElSRUNUSVZFKTogUmVuYW1lIEtOT1dOX0RJUkVDVElWRS4KCShza2lwX2Jsb2NrX2NvbW1lbnQsIHNraXBfbGluZV9jb21tZW50LAlwYXJzZV9zdHJpbmcsCglsZXhfbGluZSk6IFVzZSBpc192c3BhY2UgcmF0aGVyIHRoYW4gSVNfTkVXTElORS4KCShza2lwX3doaXRlc3BhY2UsIGxleF9saW5lKTogQ2xlYW4gdXAgdG8gdXNlIGlzX252c3BhY2UuCgkobGV4X2xpbmUpOiBVc2UgS05PV05fRElSRUNUSVZFLiAgQW55IGtpbmQgb2YgZGlyZWN0aXZlCglnZXRzIGEgQk9MIGZsYWcuCgkobGV4X25leHQpOiBVbmNvbmRpdGlvbmFsbHkgc3RvcCBpZiB3aXRoaW4gYSBkaXJlY3RpdmUuCglUcmVhdCBkaXJlY3RpdmVzIHdpdGhpbiBtYWNybyBpbnZvY2F0aW9ucyBhcyBkaXJlY3RpdmVzCgkoYWZ0ZXIgcGFyc2VfYXJncyBlbWl0cyBlcnJvciksIG5vdCBhcyB0aGUgYXJndW1lbnQuCgoyMDAwLTA3LTA5ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkaWFnbm9zdGljLmMgKGRpYWdub3N0aWNfYXJncyk6IE5ldyBtYWNyby4KCShkaWFnbm9zdGljX21zZyk6IExpa2V3aXNlLgoJKG91dHB1dF9mb3JtYXR0ZWRfaW50ZWdlcik6IExpa2V3aXNlLgoJKG91dHB1dF9zdGF0ZSk6IE5ldyBkYXRhIHR5cGUuCgkoZGlnaXRfYnVmZmVyKTogTWFrZSBnbG9iYWwuCgkob3V0cHV0X2FkZF9pbnRlZ2VyKTogUmVuYW1lIHRvIG91dHB1dF9kZWNpbWFsLiBTcXVlZXplCglkaWdpdF9idWZmZXIuCgkob3V0cHV0X2xvbmdfZGVjaW1hbCwgb3V0cHV0X3Vuc2lnbmVkX2RlY2ltYWwsCglvdXRwdXRfbG9uZ191bnNpZ25lZF9kZWNpbWFsLCBvdXRwdXRfb2N0YWwsIG91dHB1dF9sb25nX29jdGFsLAoJb3V0cHV0X2hleGFkZWNpbWFsLCBvdXRwdXRfbG9uZ19oZXhhZGVjaW1hbCk6IE5ldyBmdW5jdGlvbnMuCgkob3V0cHV0X2FwcGVuZF9yKTogTmV3IGZ1bmN0aW9uLgoJKG91dHB1dF9hcHBlbmQpOiBUd2Vhay4KCShvdXRwdXRfZmx1c2hfb24pOiBSZW5hbWUgdG8gb3V0cHV0X3RvX3N0cmVhbS4KCShvdXRwdXRfZm9ybWF0KTogQ2hhbmdlIHByb3RvdHlwZS4gIEltcHJvdmUgZG9jdW1lbnRhdGlvbi4gSGFuZGxlCgltb3JlIGZvcm1hdCBzcGVjaWZpZXJzLgoJKGJ1aWxkX2xvY2F0aW9uX3ByZWZpeCk6IFJlbmFtZSB0byBjb250ZXh0X2FzX3ByZWZpeC4KCShvdXRwdXRfbm90aWNlKTogUmVuYW1lIHRvIG91dHB1dF9kb19wcmludGYuCgkob3V0cHV0X3ByaW50Zik6IFR3ZWFrLgoJKGxpbmVfd3JhcHBlcl9wcmludGYpOiBMaWtld2lzZS4KCSh2bGluZV93cmFwcGVyX21lc3NhZ2Vfd2l0aF9sb2NhdGlvbik6IEFkanVzdCBjYWxsIHRvIHJlbmFtZWQKCWZ1bmN0aW9ucy4KCSh2X21lc3NhZ2Vfd2l0aF9kZWNsKTogTGlrZXdpc2UuCgkoZGVmYXVsdF9wcmludF9lcnJvcl9mdW5jdGlvbik6IExpa2V3aXNlLgoJKHNhdmVfb3V0cHV0X3N0YXRlKTogTmV3IGZ1bmN0aW9uLgoJKHJlc3RvcmVfb3V0cHV0X3N0YXRlKTogTGlrZXdpc2UuCgkob3V0cHV0X2RvX3ZlcmJhdGltKTogTGlrZXdpc2UuCgkob3V0cHV0X3ZlcmJhdGltKTogRGVmaW5lLgoJKHZlcmJhdGltKTogTGlrZXdpc2UuCgoJKiBkaWFnbm9zdGljLmggKHByaW50ZXJfZm4pOiBDaGFuZ2UgcmV0dXJuIHR5cGUgZnJvbSB2b2lkIHRvIGludC4KCUltcHJvdmUgZG9jdW1lbnRhdGlvbi4KCShvdXRwdXRfYWRkX2ludGVnZXIpOiBSZW5hbWUgdG8gb3V0cHV0X2RlY2ltYWwuCgkob3V0cHV0X2ZsdXNoX29uLCBvdXRwdXRfZm9ybWF0KTogRG9uJ3QgZXhwb3J0LgoJKG91dHB1dF92ZXJiYXRpbSwgdmVyYmF0aW0pOiBEZWNsYXJlLgoKMjAwMC0wNy0wOCAgVG9vbiBNb2VuZSAgPHRvb25AbW9lbmUuaW5kaXYubmx1dWcubmw+CgoJKiBmb2xkLWNvbnN0LmMgKGV4dHJhY3RfbXVsZGl2KSBjYXNlIFBMVVNfRVhQUiwgTUlOVVNfRVhQUjoKCUNoZWNrIHdoZXRoZXIgYyBkaXZpZGVzIG9wMSBleGFjdGx5IGlmIG9wZXJhdGlvbiBpcyBub3QKCW11bHRpcGxpY2F0aW9uLgoKMjAwMC0wNy0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGZpbmFsLmMgKGZpbmFsKTogRG8gbm90IGFib3J0IHdoZW4gcmVnLXN0YWNrIGludHJvZHVjZXMKCWEgbmV3IGluc24uCgoyMDAwLTA3LTA4ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuaCAoc3RydWN0IGNwcF9uYW1lKTogTm93IHN0cnVjdCBjcHBfc3RyaW5nLgoJKENQUF9JTlQsIENQUF9GTE9BVCwgQ1BQX05VTUJFUiwgQ1BQX0NPTU1FTlQsCglDUFBfSEVBREVSX05BTUUpOiBDaGFuZ2UgdG8gdHlwZSBTLgoJKHN0cnVjdCBjcHBfdG9rZW4pOiBSZW5hbWUgJ25hbWUnIGZpZWxkIHRvICdzdHInLiAgQWRkICdub2RlJwoJZmllbGQsIGEgY3BwX2hhc2hub2RlICouICBBbGwgcmVmZXJlbmNlcyB0byB2YWwubmFtZSB1cGRhdGVkCgl0byB1c2UgdmFsLnN0ciBvciB2YWwubm9kZSBhcyBhcHByb3ByaWF0ZS4KCShzdHJ1Y3QgY3BwX3JlYWRlcik6IEFkZCBzcGVjX25vZGVzIGZpZWxkLgoJKGNwcF9pZGNtcCk6IE5vdyBjcHBfaWRlcTsgdGFrZXMgYSB0b2tlbiAqIGFuZCBhIGNoYXIgKi4KCgkqIGNwcGhhc2guaCAoc3RydWN0IHNwZWNfbm9kZXMpOiBOZXcuCgkoZW51bSBzcGVsbF90eXBlKTogUmVvcmRlci4gIE9ubHkgU1BFTExfU1RSSU5HIHRva2VucyB1c2UKCXZhbC5zdHIuICBBbGwgcmVmZXJlbmNlcyB0byAnc3BlbGxpbmcgPiBTUEVMTF9OT05FJyB1cGRhdGVkIHRvCgltYXRjaC4KCgkoQ1BQX0lOX1NZU1RFTV9IRUFERVIpOiBDaGVjayBwZmlsZS0+YnVmZmVyIGFuZAoJcGZpbGUtPmJ1ZmZlci0+aW5jIGFyZSBub3QgTlVMTCBiZWZvcmUgZGVyZWZlcmVuY2luZyB0aGVtLgoKCSogY3BwbGV4LmMgKHBhcnNlX25hbWUpOiBUYWtlIGEgcG9pbnRlciB0byB0aGUgY3VycmVudCB0b2tlbiwKCXBsdXMgY3VycmVudCBwb3NpdGlvbiBhbmQgbGltaXQgYXMgYXJnczsgcmV0dXJuIHRoZSBuZXcKCXBvc2l0aW9uOyBkb24ndCBjb3B5IHRoZSB0ZXh0IG9mIGEgbmFtZSBpbnRvIHRoZSBzdHJpbmcKCWJ1ZmZlciwgaW5zdGVhZCBjYWxsIGNwcF9sb29rdXAgYW5kIHN0b3JlIHRoZSBub2RlIHBvaW50ZXIuCglJZiBleHRlbmRpbmcgYSB0b2tlbiwgY29weSBvdXQgdGhlIHRleHQgb2YgdGhlIG9sZCBpbnRvIGEKCXNjcmF0Y2ggYnVmZmVyLCBhcHBlbmQgdGhlIG5ldywgbG9vayB0aGF0IHVwIGFuZCBzdG9yZSB0aGUgbmV3Cglub2RlIHBvaW50ZXIuICBJbmxpbmUuCgkobWF5YmVfcGFzdGVfd2l0aF9uZXh0KTogSWYgdGhlIHJlc3VsdCBvZiBwYXN0ZSBpcyBhIE5BTUUsCgl0aGVuIGxvb2sgdXAgdGhlIHBhc3RlZCB0ZXh0IGFuZCBzdG9yZSBpdHMgbm9kZSBwb2ludGVyLgoJKGxleF9saW5lKTogQWRqdXN0IGZvciBuZXcgcGFyc2VfbmFtZSBpbnRlcmZhY2UuCglDaGVjayBmb3IgTCJzdHIiLCBMJ3N0cicgdXNpbmcgc3BlY19ub2Rlcy0+bl9MLgoJKHNwZWxsX3Rva2VuKTogU1BFTExfSURFTlQgdG9rZW5zIGhhdmUgdGhlaXIgc3BlbGxpbmcgaW4KCXZhbC5ub2RlLT5uYW1lLiAgSGFuZGxlIFNQRUxMX1NUUklORyB0b2tlbnMgdGhhdCBkb24ndCBoYXZlCglzdHJpbmcgZGVsaW1pdGVycy4KCShfY3BwX2V4cGFuZF9uYW1lX3NwYWNlLAoJKGNhbl9wYXN0ZSk6IENoZWNrIGZvciBMICMjICJzdHIiIHVzaW5nIHNwZWNfbm9kZXMtPm5fTC4KCShjcHBfZ2V0X3Rva2VuLCBzcGVjaWFsX3N5bWJvbCk6IE5vIG5lZWQgdG8gY2FsbCBjcHBfbG9va3VwLgoJKGNwcF9pZGNtcCk6IE5vdyBjcHBfaWRlcTsgdGFrZSBhIHRva2VuICogYW5kIGEgY29uc3QgY2hhciAqOwoJcmV0dXJuIDE9ZXF1YWwgMD1ub3QsIG5vdCBhIHRyaXN0YXRlLgoKCSogY3BwaGFzaC5jICh2YXJfYXJnc19zdHIpOiBEZWxldGUuCgkoZmluZF9wYXJhbSk6IENvbXBhcmUgbm9kZSBmaWVsZHMgZGlyZWN0bHkuCgkoaXNfX3ZhX2FyZ3NfXyk6IFVzZSBDUFBfUEVEQU5USUMuICBKdXN0IGNvbXBhcmUKCXRva2VuLT52YWwubm9kZSB3aXRoIHNwZWNfbm9kZXMtPm5fX1ZBX0FSR1NfXy4KCShkdW1wX2Z1bmxpa2VfbWFjcm8pOiBEb24ndCB1c2UgdmFyX2FyZ3Nfc3RyLgoKCSogY3BwbGliLmMgKF9jcHBfY2hlY2tfZGlyZWN0aXZlKTogSnVzdCB3YWxrIHRocm91Z2gKCXNwZWNfbm9kZXMtPmRpcnMgY29tcGFyaW5nIHBvaW50ZXJzLgoJKGdldF9kZWZpbmVfbm9kZSwgZG9fcHJhZ21hX3BvaXNvbiwgZGV0ZWN0X2lmX25vdF9kZWZpbmVkLAoJcGFyc2VfaWZkZWYpOiBUaGUgaWRlbnRpZmllciBoYXMgYWxyZWFkeSBiZWVuIGxvb2tlZCB1cC4KCShkb19pZmRlZiwgZG9faWZuZGVmKTogcGFyc2VfaWZkZWYgd29uJ3QgcmV0dXJuIGEgcG9pc29uZWQKCW5vZGUuCgkoZG9faWYpOiBPbmx5IGNhbGwgZGV0ZWN0X2lmX25vdF9kZWZpbmVkIGF0IGJlZ2lubmluZyBvZiBmaWxlLgoJKF9jcHBfcGFyc2VfYXNzZXJ0aW9uKTogT25seSBjb3B5IHN0cmluZyBwb2ludGVycyBmb3IKCVNQRUxMX1NUUklORyB0b2tlbnMuCgkocHJhZ21hX2Rpc3BhdGNoKTogVGFrZSBhIG5vZGUgcG9pbnRlciBhbmQgZXhhbWluZSBpdHMgbmFtZQoJZmllbGQuCgkoX2NwcF9pbml0X3N0YWNrcyk6IEFsc28gaW5pdGlhbGl6ZSB0aGUgc3BlY19ub2RlcyBzdHJ1Y3R1cmUuCgoJKiBjcHBpbml0LmMgKGNwcF9yZWFkZXJfaW5pdCk6IENhbGwgX2NwcF9pbml0X3N0YWNrcyBhZnRlcgoJX2NwcF9pbml0X21hY3Jvcy4KCShjcHBfY2xlYW51cCk6IEZyZWUgcGZpbGUtPnNwZWNfbm9kZXMuICBDYWxsIF9jcHBfY2xlYW51cF8qIGluCglyZXZlcnNlIG9yZGVyIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgX2NwcF9pbml0Xyogcm91dGluZXMuCgoJKiBjcHBleHAuYyAocGFyc2VfbnVtYmVyLCBwYXJzZV9jaGFyY29uc3QsIHBhcnNlX2RlZmluZWQsCglsZXgpOiBDaGVjayB2YWwubm9kZS0+dHlwZSBpbnN0ZWFkIG9mIGNhbGxpbmcgY3BwX2RlZmluZWQuCglVc2Ugc3BlY19ub2RlcyBlbnRyaWVzIHdoZXJlIGFwcHJvcHJpYXRlLgoKCSogZml4LWhlYWRlci5jLCBzY2FuLWRlY2xzLmM6IFVwZGF0ZSBmb3IgaW50ZXJmYWNlIGNoYW5nZXMuCgoyMDAwLTA3LTA4ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZW1pdF9tb3ZlKTogRml4IGNvbmRpdGlvbnMgZm9yCgllbWl0dGluZyBhdXhfdHJ1bmNkZnNmMi4KCjIwMDAtMDctMDMgIERvbm4gVGVycnkgIChkb25udGVAbWljcm9zb2Z0LmNvbSkKCgkqIGNwcGluaXQuYyAocHJpbnRfaGVscCk6IHNwbGl0IG92ZXJsb25nIGxpbmUgaW50byBJU08gQzg5CgltYXhpbXVtIGNodW5rcy4KCjIwMDAtMDctMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcGV4cC5jOiBVcGRhdGUgYWxsIGNvZGUgZm9yIG5ldyBsZXhlciBpbnRlcmZhY2UuCgkob3BfdCwgb3BlcmF0b3IgY29kZXMsIHN0cnVjdCB0b2tlbiwgdG9rZW50YWIyLCBvcF90b19zdHIpOiBSZW1vdmUuCgkoc3RydWN0IHN1ZmZpeCwgdnN1Zl8xLCB2c3VmXzIsIHZzdWZfMywgb3BfdG9fcHJpbyk6IE5ldy4KCSogY3BwbGV4LmMgKHRva2VuX25hbWVzKTogVHJpbSBsZWFkaW5nIENQUF8gZnJvbSBuYW1lczsgbWFrZQoJdGhlIHN0cmluZ3MgdW5zaWduZWQuCgkoX2NwcF9zcGVsbF9vcGVyYXRvcik6IE5ldy4KCShpc19tYWNyb19kaXNhYmxlZCk6IERpc2FibGUgYWxsIG1hY3JvcyBpZiByZXNjYW5uaW5nCglwcmVwcm9jZXNzZWQgdGV4dC4KCShfY3BwX2dldF9kaXJlY3RpdmVfdG9rZW4pOiBSZW1vdmUuCgoJKiBjcHBpbml0LmM6IERvbid0IHNldCBub19tYWNyb19leHBhbmQuCgkqIGNwcGxpYi5jIChyZWFkX2xpbmVfbnVtYmVyLCBkb19saW5lKTogQ2hlY2sgb25seSBmb3IgRU9GLAoJbm90IFZTUEFDRS4KCSogY3BwaGFzaC5oOiBVcGRhdGUgcHJvdG90eXBlcy4KCSogY3BwbGliLmggKENQUF9WU1BBQ0UpOiBSZW1vdmUuCgkoc3RydWN0IGNwcF9yZWFkZXIpOiBSZW1vdmUgbm9fbWFjcm9fZXhwYW5kLgoKMjAwMC0wNy0wOCAgTmVpbCBCb290aCAgPE5laWxCQGVhcnRobGluZy5uZXQ+CgoJKiBjcHBoYXNoLmMgKGlzX192YV9hcmdzX18pOiBOZXcgZnVuY3Rpb24uCgkoY291bnRfcGFyYW1zKTogRml4IGxpbmUgcmVwb3J0ZWQgaW4gZXJyb3IgbWVzc2FnZXMuICBVc2UKCWlzX192YV9hcmdzX18uICBEb24ndCByZXR1cm4gJyknIG9uIGVycm9yLiAgRmxhZyBHTlUgc3R5bGUKCXJlc3QgYXJncyBtYWNybyBkZWZpbml0aW9ucy4KCShwYXJzZV9kZWZpbmUpOiBDaGVjayBtYWNybyBuYW1lIGlzIG5vdCBfX1ZBX0FSR1NfXy4KCShzYXZlX2V4cGFuc2lvbik6IENoZWNrIGlkZW50aWZpZXIgaW4gbm9uLXZhcmFyZ3MtbWFjcm8gaXMKCW5vdCBfX1ZBX0FSR1NfXy4gIERvbid0IGZsYWcgR05VX1ZBUkFSR1MuCgkqIGNwcGxleC5jIChwYXJzZV9hcmdzKTogQWNjZXB0IG5vIGFyZ3VtZW50IGlmZiBHTlVfUkVTVF9BUkdTLgoJKG1heWJlX3Bhc3RlX3dpdGhfbmV4dCk6IFVzZSBwZXItbWFjcm8gR05VX1JFU1RfQVJHUyByYXRoZXIKCSB0aGFuIHBlci10b2tlbiBHTlVfVkFSQVJHUy4KCSogY3BwbGliLmggKEdOVV9WQVJBUkdTKTogUmVtb3ZlLgoJKEdOVV9SRVNUX0FSR1MpOiBOZXcuCgpTYXQgSnVsICA4IDAxOjM4OjI1IE1FVCBEU1QgMjAwMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogaTM4Ni5tZCAoY2FsbF9wb3AsIGNhbGwsIGNhbGxfdmFsdWVfcG9wKTogRG8gbm90IHNldAoJY3VycmVudF9mdW5jdGlvbl91c2VzX3BpY19vZmZzZXRfdGFibGUgZm9yIGNhbGxzIHRvIHN0YXRpYwoJZnVuY3Rpb25zIG9yIGluZGlyZWN0IGNhbGxzLgoKMjAwMC0wNy0wNyAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChyd3NfYWNjZXNzX3JlZyk6IE5ldyBsb2NhbCB3cml0ZV9jb3VudC4gIElmCglpc19wcmVkaWNhdGVfcmVnLCB0aGVuIHRha2UgbWF4IHdyaXRlX2NvdW50IG9mIHJlZ2lzdGVyIHBhaXIuCgoyMDAwLTA3LTA3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB0cmFkY3BwLmMgKG1haW4pOiBSZW5hbWUgbGFiZWwgYGluY2x1ZGUnIHRvIGBhZGRfaW5jbHVkZScgdG8KCWF2b2lkIGNvbmZsaWN0cyB3aXRoIHZhcmlhYmxlIGBpbmNsdWRlJyBpbiB0cmFkaXRpb25hbCBDLgoKMjAwMC0wNy0wNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBpbnRlZ3JhdGUuYyAoY29weV9pbnNuX2xpc3QpOiBSZW1vdmUgUkVHX0xBQkVMIG5vdGVzLgoKMjAwMC0wNy0wNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBzaWJjYWxsLmMgKHVzZXNfYWRkcmVzc29mKTogQWRkIElOTUVNIGFyZ3VtZW50LCBjaGVjayBmb3IKCWN1cnJlbnRfZnVuY3Rpb25faW50ZXJuYWxfYXJnX3BvaW50ZXIgb3V0c2lkZSBvZiBNRU0gcnR4cyBpbiBhZGRpdGlvbgoJdG8gQUREUkVTU09Gcy4KCShzZXF1ZW5jZV91c2VzX2FkZHJlc3NvZik6IFVwZGF0ZSBjYWxsZXIuCgoyMDAwLTA3LTA3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiB0cmFkY3BwLmMgKGluaXRpYWxpemVfYnVpbHRpbnMpOiBIb25vciBOT19CVUlMVElOX1NJWkVfVFlQRQoJYW5kIGZyaWVuZHMuCgoyMDAwLTA3LTA3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzeXN0ZW0uaCAoVU5JT05fSU5JVF9aRVJPKTogTmV3IG1hY3JvIGZvciBpbml0aWFsaXppbmcgdW5pb24KCW1lbWJlcnMgaW4gc3RydWN0cy4KCgkqIGNwcGxleC5jIChwbGFjZW1hcmtlcl90b2tlbiwgZW9mX3Rva2VuKTogVXNlIFVOSU9OX0lOSVRfWkVSTy4KCjIwMDAtMDctMDcgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwLnRleGk6IFVwZGF0ZS4KCkZyaSBKdWwgIDcgMDc6NDc6MzUgMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZmluYWwuYyAoZmluYWwpOiBEZXRlY3Qgb3V0IG9mIGJvdW5kcyBhcnJheSBhY2Nlc3MgdG8KCXRoZSBpbnNuX2xlbmd0aHMgYXJyYXkuCgoyMDAwLTA3LTA3ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZCk6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDAtMDctMDcgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwLnRleGk6IFVwZGF0ZSB0byBuZXcgbGV4ZXIuCgoyMDAwLTA3LTA2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiB0cmFkY3BwLmM6IE5ldyBmaWxlLgoJKiB0cmFkY2lmLnk6IE5ldyBmaWxlLgoJKiB0cmFkY2lmLmM6IE5ldyBnZW5lcmF0ZWQgZmlsZS4KCgkqIE1ha2VmaWxlLmluOiBBZGQgcnVsZXMgdG8gYnVpbGQgdHJhZGNwcC5vLCB0cmFkY2lmLm8sCgkkKHNyY2RpcikvdHJhZGNpZi5jLiAgQWRkIHRyYWRjcHAgdG8gU1RBR0VTVFVGRiBhbmQKCWRlcGVuZGVuY2llcyBvZiBDLiAgSW5zdGFsbCB0cmFkY3BwIGZyb20gaW5zdGFsbC1jb21tb24sIGluCgkkKGxpYnN1YmRpcikuCgoyMDAwLTA3LTA2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBpbml0LmM6IEluY2x1ZGUgY3BwZGVmYXVsdC5oLiAgUmVmZXIgdG8KCWNwcF9HQ0NfSU5DTFVERV9ESVIgYW5kIGNwcF9HQ0NfSU5DTFVERV9ESVJfbGVuLCBub3QgZGlyZWN0bHkKCXRvIEdDQ19JTkNMVURFX0RJUiBhbmQgaXRzIGxlbmd0aC4KCShTSVpFX1RZUEUsIFBUUkRJRkZfVFlQRSwgV0NIQVJfVFlQRSwKCVVTRVJfTEFCRUxfUFJFRklYLCBSRUdJU1RFUl9QUkVGSVgsIHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUsCglTVEFOREFSRF9JTkNMVURFX0RJUiwgU1RBTkRBUkRfSU5DTFVERV9DT01QT05FTlQpOiAgTW92ZSB0bwoJY3BwZGVmYXVsdC5oLgoJKGluY2x1ZGVfZGVmYXVsdHNfYXJyYXkpOiBNb3ZlIHRvIGNwcGRlZmF1bHQuYy4KCgkqIGNwcGRlZmF1bHQuaDogTmV3IGZpbGUuCgkqIGNwcGRlZmF1bHQuYzogTmV3IGZpbGUuCgoJKiBNYWtlZmlsZS5pbiAoTElCQ1BQX09CSlMpOiBBZGQgY3BwZGVmYXVsdC5vLgoJKGNwcGluaXQubyk6IERvbid0IGFwcGx5ICQoUFJFUFJPQ0VTU09SX0RFRklORVMpIHRvIHRoaXMgZmlsZS4KCShjcHBkZWZhdWx0Lm8pOiBOZXcgcnVsZTsgYXBwbHkgJChQUkVQUk9DRVNTT1JfREVGSU5FUykgdG8KCXRoaXMgZmlsZS4KClRodSBKdWwgIDYgMTg6MzA6MzYgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHJlbG9hZC5jIChwdXNoX3JlbG9hZCk6IFdoZW4gc2VlaW5nIGlmIGNhbiByZXVzZSBhIHJlZ2lzdGVyLAoJY2hlY2sgZXh0cmEgcmVnaXN0ZXJzIGFnYWluc3Qgd2lkZXN0IG9mIElOTU9ERSBhbmQgT1VUTU9ERS4KCjIwMDAtMDctMDYgIE5laWwgQm9vdGggIDxOZWlsQkBlYXJ0aGxpbmcubmV0PgoKCSogY3BwbGliLmM6IChfY3BwX3BhcnNlX2Fzc2VydGlvbik6ICBQZXJmb3JtIGhhc2ggbG9va3VwcwoJYmFzZWQgb24gZnVsbCBsZW5ndGggb2YgcHJlZGljYXRlLgoKMjAwMC0wNy0wNiAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiB0aW1ldmFyLmM6IFtIQVZFX1NZU19SRVNPVVJDRV9IXTogSW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+LgoJW05FRURfREVDTEFSQVRJT05fR0VUUlVTQUdFXTogRGVjbGFyZSBnZXRydXNhZ2UuCgoyMDAwLTA3LTA1ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGg4MzAwLXByb3RvLmg6IEZpeCBmb3JtYXR0aW5nLgoJKiBoODMwMC5jOiBMaWtld2lzZS4KCSogaDgzMDAuaDogTGlrZXdpc2UuCgoyMDAwLTA3LTA1ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEhBUkRfUkVHTk9fTU9ERV9PSyk6IElmIEZSX1JFR05PX1AsIGRpc2FsbG93CglDQ21vZGUuCgoyMDAwLTA3LTA1ICBSb2RuZXkgQnJvd24gIDxSb2RuZXlCcm93bkBwbXNjLmNvbT4KCgkqIGludm9rZS50ZXhpOiBGaXggbWlub3IgdHlwb3MKCSogbWQudGV4aTogRml4IG1pbm9yIHR5cG9zCgoyMDAwLTA3LTA1ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuYyAoX2NwcF9wYXJzZV9hc3NlcnRpb24pOiBGaXggYnVmZmVyIG92ZXJydW4uCgoyMDAwLTA3LTA0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsZXguYzogRG9uJ3QgaW5jbHVkZSBzeXMvbW1hbi5oLgoJKGNwcF9wdXNoX2J1ZmZlciwgY3BwX3BvcF9idWZmZXIpOiBNb3ZlZCB0byBjcHBsaWIuYy4KCgkqIGNwcGxpYi5jOiBJbmNsdWRlIHN5cy9tbWFuLmggYW5kIG9ic3RhY2suaC4KCShjcHBfcHVzaF9idWZmZXIpOiBNb3ZlZCBmcm9tIGNwcGxleC5jOyBhbGxvY2F0ZSBidWZmZXJzIG9uIGFuCglvYnN0YWNrLgoJKGNwcF9wb3BfYnVmZmVyKTogTW92ZWQgZnJvbSBjcHBsZXguYzsgZnJlZSBidWZmZXJzIGZyb20gYW4gb2JzdGFjay4KCShfY3BwX3Vud2luZF9pZl9zdGFjayk6IE5vdyBzdGF0aWMsIHVud2luZF9pZl9zdGFjay4gIERvbid0Cglib3RoZXIgZnJlZWluZyBpZiBzdGFjayBlbnRyaWVzICh0aGV5IHdpbGwgYmUgZnJlZWQgd2l0aCB0aGVpciBidWZmZXIpLgoJKGRvX2VuZGlmKTogRnJlZSBpZiBzdGFjayBlbnRyaWVzIGZyb20gdGhlIGJ1ZmZlciBvYnN0YWNrLgoJKHB1c2hfY29uZGl0aW9uYWwpOiBBbGxvY2F0ZSBpZiBzdGFjayBlbnRyaWVzIGZyb20gdGhlIGJ1ZmZlciBvYnN0YWNrLgoKCShmaW5kX2Fuc3dlcik6IFJlbmFtZSB0byBfY3BwX2ZpbmRfYW5zd2VyLgoJKGRvX2Fzc2VydCwgZG9fdW5hc3NlcnQpOiBVcGRhdGUuCgoJKiBjcHBoYXNoLmg6IFVwZGF0ZSBwcm90b3R5cGVzLgoJKHhvYm5ldyk6IE5ldyBjb252ZW5pZW5jZSBtYWNyby4KCSogY3BwbGliLmggKHN0cnVjdCBjcHBfcmVhZGVyKTogQWRkIGhhc2hfb2IgYW5kIGJ1ZmZlcl9vYiBmaWVsZHMuCglVcGRhdGUgY29tbWVudHMuCgkoc3RydWN0IGNwcF9oYXNobm9kZSk6IFJlbW92ZSBkaXNhYmxlZCBmaWVsZC4KCgkqIGNwcGluaXQuYzogRG9uJ3QgaW5jbHVkZSBoYXNodGFiLmggb3Igc3BsYXktdHJlZS5oLgoJKHJlcG9ydF9taXNzaW5nX2d1YXJkKTogTW92ZWQgdG8gY3BwZmlsZXMuYy4KCShjcHBfcmVhZGVyX2luaXQpOiBDYWxsIGNwcF9pbml0X3N0YWNrcywgY3BwX2luaXRfbWFjcm9zLAoJY3BwX2luaXRfaW5jbHVkZXMuCgkoY3BwX2NsZWFudXApOiBDYWxsIGNwcF9jbGVhbnVwX3N0YWNrcywgY3BwX2NsZWFudXBfbWFjcm9zLAoJY3BwX2NsZWFudXBfaW5jbHVkZXMuICBEb24ndCBkZXN0cm95IGhhc2h0YWIgb3IKCWFsbF9pbmNsdWRlX2ZpbGVzIGhlcmUuCgkoY3BwX2ZpbmlzaCk6IFVzZSBfY3BwX3JlcG9ydF9taXNzaW5nX2d1YXJkcy4KCgkqIGNwcGZpbGVzLmMgKHJlcG9ydF9taXNzaW5nX2d1YXJkKTogTW92ZWQgZnJvbSBjcHBpbml0LmMuCgkoX2NwcF9pbml0X2luY2x1ZGVfdGFibGUpOiBSZW5hbWUgX2NwcF9pbml0X2luY2x1ZGVzLgoJKF9jcHBfY2xlYW51cF9pbmNsdWRlcywgX2NwcF9yZXBvcnRfbWlzc2luZ19ndWFyZHMpOiBOZXcuCgoJKiBjcHBleHAuYyAocGFyc2VfYXNzZXJ0aW9uKTogVXBkYXRlIGZvciBuZXcgbmFtZSBvZgoJZmluZF9hbnN3ZXIuCgoJKiBNYWtlZmlsZS5pbiAoY3BwbGliLm8sIGNwcGhhc2gubywgY3BwaW5pdC5vKTogVXBkYXRlIGRlcHMuCgoyMDAwLTA3LTA0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcHBsaWIuYyAoZG9faWRlbnQpOiBzL1ZTUEFDRS9FT0YvCgoyMDAwLTA3LTA1ICBOZWlsIEJvb3RoICA8TmVpbEJAZWFydGhsaW5nLm5ldD4KCgkqIGNwcGxleC5jOiBGaXggdHJpZ3JhcGggcmVwbGFjZW1lbnQgd2l0aGluIHN0cmluZ3MuCgoyMDAwLTA3LTA0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiByczYwMDAvYWl4LmggKEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCk6IEZpeCBmb3JtYXQgc3BlY2lmaWVyLgoKCSogeGNvZmZvdXQuYyAoYXNzaWduX3R5cGVfbnVtYmVyKTogQ29uc3RpZnkuCgkoeGNvZmZvdXRfc291cmNlX2ZpbGUpOiBBZGQgc3RhdGljIHByb3RvdHlwZS4gIERvbid0IG5lZWRsZXNzbHkKCWNhc3QgYXdheSBjb25zdC1uZXNzLgoKMjAwMC0wNy0wNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBmcmFtZS5oIChmcmFtZV9zdGF0ZSk6IE1vdmUgYmFzZV9vZmZzZXQgdG8gZW5kLgoKTW9uIEp1bCAgMyAyMTozMTo0MyAyMDAwICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNhbGxzLmMgKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpOiBSZXZlcnQgcHJldmlvdXMgY2hhbmdlLgoKMjAwMC0wNy0wMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZml4LWhlYWRlci5jIChzdHJ1Y3QgcGFydGlhbF9wcm90byk6IFJlbW92ZSB1bm5lY2Vzc2FyeSBmaWVsZHMuCgkocmVjb2duaXplZF9leHRlcm4sIHJlY29nbml6ZWRfZnVuY3Rpb24sIHJlYWRfc2Nhbl9maWxlKToKCVVwZGF0ZSBmb3IgbmV3IHNjaGVtZS4KCShjaGVja19wcm90ZWN0aW9uKTogSXQncyBzdGlsbCBhIG11bHRpcGxlIGluY2x1ZGUgZ3VhcmQgZXZlbgoJaWYgaXQgZG9lc24ndCBhbHdheXMgdHJpZ2dlci4KCSogc2Nhbi1kZWNscy5jIChza2lwX3RvX2Nsb3NpbmdfYnJhY2UsIHNjYW5fZGVjbHMpOiBVcGRhdGUgZm9yCgluZXcgc2NoZW1lLgoJKiBzY2FuLmg6IERlY2xhcmUgc3RydWN0IGNwcF90b2tlbi4gIFVwZGF0ZSBwcm90b3R5cGVzLgoKMjAwMC0wNy0wMyAgTmVpbCBCb290aCAgPG5laWxiQGVhcnRobGluZy5uZXQ+CgkgICAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCUNvbXBsZXRlIG92ZXJoYXVsIG9mIHRoZSBsZXhlciBhbmQgbWFjcm8gZXhwYW5kZXIuCgoJKiBjcHBoYXNoLmMgKG9iamVjdF9kZWZuLCBmdW5jdF9kZWZuLCBwdXNoX21hY3JvX2V4cGFuc2lvbiwKCWFyZywgYXJnbGlzdCwgYXJnZGF0YSwgcmVmbGlzdCwgY29sbGVjdF9vYmpsaWtlX2V4cGFuc2lvbiwKCWNvbGxlY3RfZnVubGlrZV9leHBhbnNpb24sIGNvbGxlY3RfcGFyYW1zLAoJd2Fybl90cmFkX3N0cmluZ2lmeSwgdHJhZF9zdHJpbmdpZnksIGR1cGxpY2F0ZV9hcmdfcCwgYWRkX3BhdCwKCXVuc2FmZV9jaGFycywgbWFjYXJnLCBjb21wYXJlX2RlZnMsIHNwZWNpYWxfc3ltYm9sLAoJc2Nhbl9hcmd1bWVudHMsIHN0cmluZ2lmeSwgZnVubGlrZV9tYWNyb2V4cGFuZCwKCV9jcHBfcXVvdGVfc3RyaW5nLCBtb250aG5hbWVzKTogRGVsZXRlLgoJKGNwcF9sb29rdXAsIF9jcHBfZnJlZV9kZWZpbml0aW9uLCBkdW1wX2Z1bmxpa2VfbWFjcm8sCglfY3BwX2NyZWF0ZV9kZWZpbml0aW9uLCBfY3BwX2R1bXBfZGVmaW5pdGlvbiwKCWR1bXBfaGFzaF9oZWxwZXIpOiBBZGp1c3QuCgkoZmluZF9wYXJhbSwgY291bnRfcGFyYW1zLCBwYXJzZV9kZWZpbmUsIHZhcl9hcmdzX3N0ciwKCWNoZWNrX21hY3JvX3JlZGVmaW5pdGlvbiwgc2F2ZV9leHBhbnNpb24pOiBOZXcuCgoJKiBjcHBsZXguYyAoc2tpcF9ibG9ja19jb21tZW50LCBza2lwX2xpbmVfY29tbWVudCwgcGFyc2VfbmFtZSwKCXBhcnNlX3N0cmluZywgb3V0cHV0X2xpbmVfY29tbWFuZCwgdHJpZ3JhcGhfcmVwbGFjZSwKCWxleF9saW5lLCBjcHBfcHVzaF9idWZmZXIsIGNwcF9wb3BfYnVmZmVyLCBjcHBfb3V0cHV0X3Rva2VucywKCWNwcF9zY2FuX2J1ZmZlcl9ub291dHB1dCwgY3BwX3NjYW5fYnVmZmVyLCBjcHBfZnJlZV90b2tsaXN0LAoJY3BwX2lkY21wLCBfY3BwX2dldF9kaXJlY3RpdmVfdG9rZW4sIF9jcHBfaW5pdF9pbnB1dF9idWZmZXIsCglfY3BwX3NraXBfcmVzdF9vZl9saW5lKTogTW9kaWZ5LgoKCShtYXliZV9tYWNyb2V4cGFuZCwgc2tpcF9jb21tZW50LCBjb3B5X2NvbW1lbnQsIHNraXBfc3RyaW5nLAoJZmluZF9wb3NpdGlvbiwgbnVsbF93YXJuaW5nLCBidW1wX2NvbHVtbiwgZXhwYW5kX25hbWVfc3BhY2UsCglwZWRhbnRpY193aGl0ZXNwYWNlLCBfY3BwX291dHB1dF9saXN0LCBfY3BwX3NsaWNlX3Rva2xpc3QsCglfY3BwX3NxdWVlemVfdG9rbGlzdCwgX2NwcF9zY2FuX3VudGlsLCBfY3BwX3NraXBfaHNwYWNlLAoJX2NwcF9wYXJzZV9uYW1lLCBfY3BwX2xleF90b2tlbiwgY3BwX2dldF9ub25fc3BhY2VfdG9rZW4sCglfY3BwX3ByZXNjYW4pOiBEZWxldGUuCgoJKGR1bXBfcGFyYW1fc3BlbGxpbmcsIHByb2Nlc3NfZGlyZWN0aXZlLCBsZXhfbmV4dCwKCWlzX21hY3JvX2Rpc2FibGVkLCBzdHJpbmdpZnlfYXJnLCBleHBhbmRfY29udGV4dF9zdGFjaywKCW91dHB1dF90b2tlbiwgbWFrZV9zdHJpbmdfdG9rZW4sIGFsbG9jX251bWJlcl90b2tlbiwKCXNwZWNpYWxfc3ltYm9sLCBkdXBsaWNhdGVfdG9rZW4sIG1heWJlX3Bhc3RlX3dpdGhfbmV4dCwKCWNhbl9wYXN0ZSwgcHJldmVudF9tYWNyb19leHBhbnNpb24sIHJlc3RvcmVfbWFjcm9fZXhwYW5zaW9uLAoJZ2V0X3RlbXBfdG9rZW4sIHJlbGVhc2VfdGVtcF90b2tlbnMsIHF1b3RlX3N0cmluZywKCXRva2VuX25hbWVzLCB0b2tlbl9zcGVsbGluZ3MsIF9jcHBfZXhwYW5kX25hbWVfc3BhY2UsCglfY3BwX2dsdWVfaGVhZGVyX25hbWUsIF9jcHBfcmVzZXJ2ZV9uYW1lX3NwYWNlLAoJZGlncmFwaF9zcGVsbGluZ3MsIHRyaWdyYXBoX29rLCBza2lwX3doaXRlc3BhY2UsIHNhdmVfY29tbWVudCwKCXBsYWNlbWFya2VyX3Rva2VuLCBlb2ZfdG9rZW4sIGNwcF9jb250ZXh0LCBtYWNyb19hcmdzLAoJZ2V0X3Jhd190b2tlbiwgcGFyc2VfYXJnLCBwYXJzZV9hcmdzLCBzYXZlX3Rva2VuLAoJcHVzaF9hcmdfY29udGV4dCwgcHVzaF9tYWNyb19jb250ZXh0LCBwb3BfY29udGV4dCwKCWRvX3BvcF9jb250ZXh0LCBmcmVlX21hY3JvX2FyZ3MsIF9jcHBfZ2V0X2xpbmUsCglfY3BwX3J1bl9kaXJlY3RpdmUpOiBOZXcuCgoJKiBjcHBsaWIuYyAodmFsaWRhdGVfZWxzZSwgcGFyc2VfaW5jbHVkZSwgcHVzaF9jb25kaXRpb25hbCwKCXBhc3NfdGhydV9kaXJlY3RpdmUsIHJlYWRfbGluZV9udW1iZXIsIHBhcnNlX2lmZGVmLAoJZGV0ZWN0X2lmX25vdF9kZWZpbmVkLCBfY3BwX2NoZWNrX2RpcmVjdGl2ZSwgZG9fZGVmaW5lLAoJZG9fdW5kZWYsIGRvX2luY2x1ZGUsIGRvX2ltcG9ydCwgZG9faW5jbHVkZV9uZXh0LCBkb19lcnJvciwKCWRvX3dhcm5pbmcsIGRvX2lkZW50LCBkb19wcmFnbWEsIHByYWdtYV9kaXNwYXRjaCwgZ2NjX3ByYWdtYXMsCgl0b3BfcHJhZ21hcywgZG9fcHJhZ21hX2djYywgZG9fcHJhZ21hX2ltcGxlbWVudGF0aW9uLAoJZG9fcHJhZ21hX3BvaXNvbiwgZG9fcHJhZ21hX3N5c3RlbV9oZWFkZXIsCglkb19wcmFnbWFfZGVwZW5kZW5jeSwgZG9fc2NjcywgZG9faWZkZWYsIGRvX2lmbmRlZiwgZG9fZWxzZSwKCWRsX2VsaWYsIGRvX2VuZGlmLCBfY3BwX3Vud2luZF9pZl9zdGFjaywgZG9fYXNzZXJ0LAoJZG9fdW5hc3NlcnQsIGNwcF9kZWZpbmUsIGNwcF91bmRlZiwgY3BwX2Fzc2VydCwgY3BwX3VuYXNzZXJ0LAoJY3BwX2RlZmluZWQpOiBVcGRhdGUgZm9yIG5ldyBzY2hlbWUuCgkoc3RydG91bF9mb3JfbGluZSwgZ2V0X2RlZmluZV9ub2RlLCBkdW1wX21hY3JvX25hbWUsCglfY3BwX2NoZWNrX2xpbmVtYXJrZXIsIF9jcHBfcGFyc2VfYXNzZXJ0aW9uKTogTmV3LgoJKF9jcHBfaGFuZGxlX2RpcmVjdGl2ZSwgZG9fcHJhZ21hX2RlZmF1bHQpOiBEZWxldGUuCgoJKiBjcHBoYXNoLmggKHN0cnVjdCBwcmVkaWNhdGUpOiBOb3cgc3RydWN0IGFuc3dlci4KCShlbnVtIHNwZWxsX3R5cGUsIHN0cnVjdCB0b2tlbl9zcGVsbGluZywgc3RydWN0IGRpcmVjdGl2ZSwKCWRpcmVjdGl2ZV9oYW5kbGVyKTogTmV3LgoJVXBkYXRlIHByb3RvdHlwZXMuICBSZW1vdmUgdW51c2VkIG1hY3Jvcy4KCSogY3BwbGliLmg6IFVwZGF0ZSBwcm90b3R5cGVzLiAgUmVtb3ZlIHVudXNlZCBtYWNyb3MsCglzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMsIGFuZCBmaWVsZHMuCgoJKiBjcHBlcnJvci5jIChwcmludF9jb250YWluaW5nX2ZpbGVzLCB2X21lc3NhZ2UpOiBBZGp1c3QuCgkqIGNwcGV4cC5jIChwYXJzZV9hc3NlcnRpb24sIGxleCwgcGFyc2VfZXNjYXBlLAoJX2NwcF9wYXJzZV9leHByKTogQWRqdXN0LgoJKiBjcHBmaWxlcy5jIChvcGVuX2luY2x1ZGVfZmlsZSwgX2NwcF9leGVjdXRlX2luY2x1ZGUsCglfY3BwX2NvbXBhcmVfZmlsZV9kYXRlLCBjcHBfcmVhZF9maWxlLCByZWFkX2luY2x1ZGVfZmlsZSk6CglBZGp1c3QuCgkqIGNwcGluaXQuYyAoZHVtcF9zcGVjaWFsX3RvX2J1ZmZlcik6IERlbGV0ZS4KCShhcHBlbmRfaW5jbHVkZV9jaGFpbiwgbWVyZ2VfaW5jbHVkZV9jaGFpbnMsIGNwcF9yZWFkZXJfaW5pdCwKCWNwcF9jbGVhbnVwLCBpbml0aWFsaXplX2J1aWx0aW5zLCBidWlsdGluX2FycmF5LCBjcHBfc3RhcnRfcmVhZCwKCWNwcF9maW5pc2gsIGhhbmRsZV9vcHRpb24sIHByaW50X2hlbHApOiBBZGp1c3QuCgkqIGNwcG1haW4uYyAobWFpbik6IEFkanVzdC4KCjIwMDAtMDctMDMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwcHNwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBVc2UgZG91YmxlIHF1b3RlcyBpbiBlcnJvcgoJbWVzc2FnZS4KCk1vbiBKdWwgIDMgMTY6NTM6NDMgMjAwMCAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBjYWxscy5jIChlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogVXNlIHZhbHJlZyBpbnN0ZWFkCglvZiBoYXJkX2xpYmNhbGxfdmFsdWUuCgoyMDAwLTA3LTAzICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZW1pdF9tb3ZlKTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90by5oOiBQcm90b3R5cGUgcnM2MDAwX2VtaXRfbW92ZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG1vdnNpKTogVXNlIHJzNjAwMF9lbWl0X21vdmUuCgkobW92aGkpOiBMaWtld2lzZS4KCShtb3ZxaSk6IExpa2V3aXNlLgoJKG1vdmRmKTogTGlrZXdpc2UuCgkobW92c2YpOiBMaWtld2lzZS4KCShtb3ZkaSk6IExpa2V3aXNlLgoJKG1vdnRpKTogTGlrZXdpc2UuCgoJKiBleHBtZWQuYyAoZXhwYW5kX211bHRfaGlnaHBhcnQpOiBVc2Ugb3AxIGluc3RlYWQgb2Ygd2lkZV9vcDEgd2hlbgoJbW9kZSBpbnN0ZWFkIG9mIHdpZGVyX21vZGUgaXMgYmVpbmcgdXNlZC4KCjIwMDAtMDctMDMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5tZCAobW92c3RyaWN0cWlfeG9yKTogVXNlICdxJyBjb25zdHJhaW50IGluc3RlYWQKCW9mICdyJy4gVXNlIHFfcmVnc19vcGVyYW5kLgoJKGFuZHNpXzErMik6IFVzZSBxX3JlZ3Nfb3BlcmFuZC4KCjIwMDAtMDctMDMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuYyAoZ2V0X21lbW9yeV9ydHgpOiBBbHdheXMgcHV0IGludG8gYWxpYXMgc2V0IDAuCgoyMDAwLTA3LTAzICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnL2FybS9hcm0ubWQ6IEZpeCBwb3N0IGluY3JlbWVudCBhbmQgcHJlIGluY3JlbWVudAoJcGVlcGhvbGVzIHNvIHRoYXQgdGhleSBkbyBub3QgZ2VuZXJhdGUgVU5QUkVESUNBVEJMRSBvcGNvZGVzLgoJKGllIG9uZXMgd2hlcmUgdGhlIGluY3JlbWVudCBjbG9iYmVycyB0aGUgc291cmNlL2Rlc3RpbmF0aW9uKS4KCjIwMDAtMDctMDEgIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPgoKCSogY29uZmlnL2F2ci9hdnIuYyAob3V0X2Fkal9mcmFtZV9wdHIpOiBNYWtlICJmcmFtZSBwb2ludGVyCgljaGFuZ2UgdG9vIGJpZyBmb3IgLW10aW55LXN0YWNrIiBhIHdhcm5pbmcsIGlmIGxhcmdlciB0aGFuIDYzLgoJKG91dF9zZXRfc3RhY2tfcHRyKTogQ2hhbmdlIHRoZSBsb2dpYyBzbyAtbW5vLWludGVycnVwdHMgaXMKCWFsd2F5cyBzYWZlIHRvIHVzZSBvbiBwb3NzaWJsZSBmdXR1cmUgZGV2aWNlcy4KCShmdW5jdGlvbl9wcm9sb2d1ZSk6IFdyaXRlIFNQSCBiZWZvcmUgU1BMLCBmb3IgY29uc2lzdGVuY3kuCglJZiBpbnRlcnJ1cHRfZnVuY19wIHRydWUsIHdlIGtub3cgd2UgaGF2ZSBlbmFibGVkIGludGVycnVwdHMuCgkoYXZyX251bV9hcmdfcmVncyk6IE5ldyBmdW5jdGlvbi4gIFJvdW5kIHVwIHRvIGV2ZW4gbnVtYmVyIG9mCglieXRlcyBpZiBubyAtbXBhY2stYXJncyBvciBpZiBjYWxsaW5nIGEgbGliZ2NjIGZ1bmN0aW9uLgoJKGZ1bmN0aW9uX2FyZywgZnVuY3Rpb25fYXJnX2FkdmFuY2UpOiBVc2UgaXQuCgkob3V0cHV0X21vdnNpc2YsIGFzaGxzaTNfb3V0LCBhc2hyc2kzX291dCwgbHNocnNpM19vdXQpOgoJT3V0cHV0ICJtb3Z3IiBpZiBhdmFpbGFibGUuCgkob3V0X3RzdGhpLCBvdXRfdHN0c2ksIGFzaGxxaTNfb3V0LCBsc2hycWkzX291dCk6IENoYW5nZSB1c2VzCglvZiBURVNUX0hBUkRfUkVHX0NMQVNTIG1hY3JvIHRvIHRlc3RfaGFyZF9yZWdfY2xhc3MgZnVuY3Rpb24uCgkoYXNtX291dHB1dF9zZWN0aW9uX25hbWUpOiBBZGQgYmxhbmtzIGZvciBjb25zaXN0ZW50IG91dHB1dC4KCShlbmNvZGVfc2VjdGlvbl9pbmZvKTogU2V0IFRSRUVfUkVBRE9OTFkgZm9yIHByb2dtZW0gZGF0YSB0bwoJYXZvaWQgZ2FzIHdhcm5pbmdzIGFib3V0IGNoYW5nZWQgc2VjdGlvbiBhdHRyaWJ1dGVzLgoJKGF2cl9oYXJkX3JlZ25vX21vZGVfb2spOiBGb3JjZSBub24tUUltb2RlIGRhdGEgdG8gc3RhcnQgaW4KCWV2ZW4gbnVtYmVyZWQgcmVnaXN0ZXJzIG9uIGRldmljZXMgd2l0aCAibW92dyIuCgkqIGNvbmZpZy9hdnIvYXZyLmggKE1BU0tfKik6IERlZmluZSBiaXRzIGZvciB0YXJnZXRfZmxhZ3MuCgkoVEFSR0VUX1NXSVRDSEVTKTogTWFyayBoZWxwIHN0cmluZ3MgZm9yIHRyYW5zbGF0aW9uLgoJQWRkIG5ldyAtbXBhY2stYXJncyBhbmQgLW1lbmhhbmNlZCBzd2l0Y2hlcy4KCShUQVJHRVRfT1BUSU9OUyk6IE1hcmsgaGVscCBzdHJpbmdzIGZvciB0cmFuc2xhdGlvbi4KCShwcm9nbWVtX3NlY3Rpb24pOiBBZGQgc2VjdGlvbiBhdHRyaWJ1dGVzLgoJKiBjb25maWcvYXZyL2F2ci5tZCAoKm1vdmhpLCBjYWxsX2luc24sIGNhbGxfdmFsdWVfaW5zbik6CglPdXRwdXQgIm1vdnciIGlmIGF2YWlsYWJsZS4KCShtdWxxaTMsIG11bHFpaGkzLCB1bXVscWloaTMsIG11bGhpMywgKnRhYmxlanVtcF9lbmgpOgoJTmV3IHBhdHRlcm5zLgoJKiBjb25maWcvYXZyL2xpYmdjYy5TIChfbXVscWkzLCBfZGl2cWkzKTogVXBkYXRlIHRvIHRoZSBuZXcKCWNhbGwgY29udmVudGlvbiAoYXJndW1lbnRzIGFsaWduZWQgb24gZXZlbiByZWdpc3RlcnMpLgoJKF9jbGVhbnVwLCBfZXhpdCk6IE1ha2Ugd2VhayBzeW1ib2xzIGxpYmMgY2FuIG92ZXJyaWRlLgoKMjAwMC0wNy0wMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZnAtYml0Lmg6IE5ldyBmaWxlLgoKCSogZnAtYml0LmM6IE1vdmUgY29tbW9uIGNvZGUsIHByb3RvdHlwZXMsIGV0YyBpbnRvIGZwLWJpdC5oLgoJQ29tbWVudCAjZW5kaWYgc3RhdGVtZW50cy4KCShfX3RoZW5hbl9zZiwgX190aGVuYW5fZGYpOiBBZGQgbWlzc2luZyBicmFjZXMgYXJvdW5kIGluaXRpYWxpemVyLgoKTW9uIEp1bCAgMyAwMDozMjo0NyAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBnY3NlLmMgKGNvbXB1dGVfcHJlX2RhdGEpOiBDb21wdXRlIGFlX2tpbGwgdXNpbmcgb3RoZXIgbG9jYWwKCXByb3BlcnRpZXMgaW5zdGVhZCBvZiBjYWxsaW5nIGNvbXB1dGVfYWVfa2lsbC4KCgkqIGFsaWFzLmMgKGluaXRfYWxpYXNfYW5hbHlzaXMpOiBEbyBub3QgY2FsbAoJcHJvbG9ndWVfZXBpbG9ndWVfY29udGFpbnMgdW50aWwgYWZ0ZXIgcmVsb2FkIGhhcyBjb21wbGV0ZWQuCgoyMDAwLTA3LTAyICBCZW5qYW1pbiBDaGVsZiAgPGNoZWxmQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5oIChnZW5ydGxfYmVnaW5fY29tcG91bmRfc3RtdCk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCShnZW5ydGxfZmluaXNoX2NvbXBvdW5kX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfY29tcG91bmRfc3RtdCk6IENoYW5nZSB0byByZXR1cm4gdm9pZC4KCgkqIGMtc2VtYW50aWNzLmMgKGdlbnJ0bF9iZWdpbl9jb21wb3VuZF9zdG10KTogUmVtb3ZlIGZ1bmN0aW9uIGFuZAoJbW92ZSBjb2RlIGZyb20gaGVyZSB0byAuLi4KCShnZW5ydGxfY29tcG91bmRfc3RtdCk6IC4uLiBoZXJlLgoJKGdlbnJ0bF9maW5pc2hfY29tcG91bmRfc3RtdCk6IFJlbW92ZS4KCShleHBhbmRfc3RtdCk6IEFkZCBjb21tZW50LgoKMjAwMC0wNy0wMiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogYy10eXBlY2suYyAoYnVpbGRfaW5kaXJlY3RfcmVmKTogVXNlIENPTVBMRVRFX09SX1ZPSURfVFlQRV9QCglhbmQgVk9JRF9UWVBFX1AuCgoyMDAwLTA3LTAyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNwcGxpYi5oIChzdHJ1Y3QgY3BwX3JlYWRlcik6IE5ldyBmaWVsZCBpbmNsdWRlX2RlcHRoLgoJKHN0cnVjdCBjcHBfcHJpbnRlcik6IFJlbmFtZSBsYXN0X2JzZCB0byBsYXN0X2lkLgoJKiBjcHBmaWxlcy5jIChyZWFkX2luY2x1ZGVfZmlsZSk6IEJ1bXAgaW5jbHVkZV9kZXB0aC4KCSogY3BwbGV4LmMgKGNwcF9wb3BfYnVmZmVyKTogRGVjcmVtZW50IGluY2x1ZGVfZGVwdGguCgkob3V0cHV0X2xpbmVfY29tbWFuZCk6IE91dHB1dCBjb3JyZWN0ICNsaW5lIGlmIGEgaGVhZGVyCglpcyBpbmNsdWRpbmcgaXRzZWxmIGFuZCBpcyBub3QgcHJvdGVjdGVkIGFnYWluc3QgbXVsdGlwbGUgaW5jbHVzaW9uLgoJVXNlIGluY2x1ZGVfZGVwdGggaW5zdGVhZCBvZiBidWZmZXJfc3RhY2tfZGVwdGgsIGxhc3RfaWQgaW5zdGVhZCBvZgoJbGFzdF9ic2QuCgkqIGNwcGluaXQuYyAoY3BwX3N0YXJ0X3JlYWQpOiBJbml0aWFsaXplIGxhc3RfaWQgaW5zdGVhZCBvZgoJbGFzdF9ic2QuCgoyMDAwLTA3LTAxICBCZW5qYW1pbiBDaGVsZiAgPGNoZWxmQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoQ19BTkRfT0JKQ19PQkpTKTogQWRkZWQgYy1zZW1hbnRpY3Muby4KCShjLXNlbWFudGljcy5vKTogTmV3IHRhcmdldC4KCgkqIGMtY29tbW9uLmggKFRSRUVfTEFOR19GTEFHXz8pOiBBZGRlZCBkb2N1bWVudGF0aW9uLgoJKGdlbnJ0bF9kb19wdXNobGV2ZWwpOiBNb3ZlZCBmcm9tIGNwL2NwLXRyZWUuaC4KCShnZW5ydGxfY2xlYXJfb3V0X2Jsb2NrKTogTGlrZXdpc2UuCgkoZ2VucnRsX2dvdG9fc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9leHByX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfZGVjbF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2lmX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfd2hpbGVfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9kb19zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX3JldHVybl9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2Zvcl9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2JyZWFrX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfY29udGludWVfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9zY29wZV9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX3N3aXRjaF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2Nhc2VfbGFiZWwpOiBMaWtld2lzZS4KCShnZW5ydGxfYmVnaW5fY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGdlcm50bF9maW5pc2hfY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9jb21wb3VuZF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2FzbV9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2RlY2xfY2xlYW51cCk6IExpa2V3aXNlLgoJKERFQ0xfQU5PTl9VTklPTl9FTEVNUyk6IExpa2V3aXNlLgoJKGVtaXRfbG9jYWxfdmFyKTogTGlrZXdpc2UuCgkobWFrZV9ydGxfZm9yX2xvY2FsX3N0YXRpYyk6IExpa2V3aXNlLgoJKGV4cGFuZF9jb25kKTogTGlrZXdpc2UuCgkoZXhwYW5kX3N0bXQpOiBMaWtld2lzZS4KCShjX2V4cGFuZF9yZXR1cm4pOiBMaWtld2lzZS4KCShjX2V4cGFuZF9zdGFydF9jYXNlKTogTGlrZXdpc2UuCgkoZG9fY2FzZSk6IExpa2V3aXNlLgoJKENPTVBPVU5EX1NUTVRfTk9fU0NPUEUpOiBMaWtld2lzZS4KCShjX2V4cGFuZF9hc21fb3BlcmFuZHMpOiBMaWtld2lzZS4KCShORVdfRk9SX1NDT1BFX1ApOiBOZXcgbWFjcm8uCgkoZXhwYW5kX2V4cHJfc3RtdF9mbik6IE5ldyB0eXBlLgoKCShzZXRfY3VycmVudF9mdW5jdGlvbl9uYW1lX2RlY2xhcmVkKTogTGlrZXdpc2UuCgkoY3VycmVudF9mdW5jdGlvbl9uYW1lX2RlY2xhcmVkKTogTGlrZXdpc2UuCgkobGFuZ19leHBhbmRfc3RtdCk6IExpa2V3aXNlLgoJKHN0bXRzX2FyZV9mdWxsX2V4cHJzX3ApOiBMaWtld2lzZS4KCShhbm9uX2FnZ3JfdHlwZV9wKTogTGlrZXdpc2UuCgkobGFuZ19leHBhbmRfZXhwcl9zdG10KTogTGlrZXdpc2UuCgkoYnVpbGRfY2FzZV9sYWJlbCk6IExpa2V3aXNlLgoKCSogYy1kZWNsLmMgKGxhbmdfZXhwYW5kX2V4cHJfc3RtdCk6IEluaXRpYWxpemUuCgkoc3RtdHNfYXJlX2Z1bGxfZXhwcnNfcCk6IERlZmluZS4KCShjdXJyZW50X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWQpOiBMaWtld2lzZS4KCShkb19jYXNlKTogTGlrZXdpc2UuCgkobGFuZ19leHBhbmRfc3RtdCk6IExpa2V3aXNlLgoJKHNldF9jdXJyZW50X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWQpOiBMaWtld2lzZS4KCShhbm9uX2FnZ3JfdHlwZV9wKTogTGlrZXdpc2UuCgoJKiBjLXNlbWFudGljcy5jOiBOZXcgZmlsZS4KCShleHBhbmRfY29uZCk6IE1vdmVkIGZyb20gY3Avc2VtYW50aWNzLmMuCgkoZ2VucnRsX2RvX3B1c2hsZXZlbCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9jbGVhcl9vdXRfYmxvY2spOiBMaWtld2lzZS4KCShnZW5ydGxfZ290b19zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2V4cHJfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9kZWNsX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfaWZfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF93aGlsZV9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2RvX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfcmV0dXJuX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfZm9yX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfYnJlYWtfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9jb250aW51ZV9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX3Njb3BlX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfc3dpdGNoX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfY2FzZV9sYWJlbCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9iZWdpbl9jb21wb3VuZF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2ZpbmlzaF9jb21wb3VuZF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2NvbXBvdW5kX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfYXNtX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfZGVjbF9jbGVhbnVwKTogTGlrZXdpc2UuCgkobWFrZV9ydGxfZm9yX2xvY2FsX3N0YXRpYyk6IE1vdmVkIGZyb20gY3AvZGVjbC5jLgoJKGVtaXRfbG9jYWxfdmFyKTogTGlrZXdpc2UuCgkoZXhwYW5kX3N0bXQpOiBEZWZpbmUuCgoJKiBjLXRyZWUuaDogKGNfZXhwYW5kX2FzbV9vcGVyYW5kcyk6IE1vdmVkIHRvIGMtY29tbW9uLmguCgkoY19leHBhbmRfcmV0dXJuKTogTGlrZXdpc2UuCgkoY19leHBhbmRfc3RhcnRfY2FzZSk6IExpa2V3aXNlLgoKMjAwMC0wNy0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoc3ltYm9saWNfb3BlcmFuZCk6IFJlamVjdCBDT05TVCBleHByZXNzaW9ucwoJd2l0aCB0aGUgbG93IDEzIGJpdHMgc2V0LgoJKG1vdmVfb3BlcmFuZCk6IENoZWNrIGZvciBDT05TVHxTWU1CT0xfUkVGfExBQkVMX1JFRiBkaXJlY3RseS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAobW92ZGkpOiBMaWtld2lzZS4gIEV4cGFuZCBhIENPTlNUIHdpdGggb25lCglvZiB0aGUgbG93IDEzIGJpdHMgaW50byBhIENPTlNUIHBsdXMgYW4gYWRkZGkzLgoJKGxvYWRfc3ltcHRyKTogU2V0IFJUWF9VTkNIQU5HSU5HX1AuCgpTZWUgQ2hhbmdlTG9nLjMgZm9yIGVhcmxpZXIgY2hhbmdlcy4K