Name: series-workflowmrr8z Phase: Failed StartedAt: 2026-09-15 17:07:03 +0000 UTC FinishedAt: 2026-09-15 17:29:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrr8z[0] Phase: Succeeded StartedAt: 2026-09-15 17:07:03 +0000 UTC FinishedAt: 2026-09-15 17:29:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrr8z[0].run-triage Phase: Succeeded StartedAt: 2026-09-15 17:07:03 +0000 UTC FinishedAt: 2026-09-15 17:29:39 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE3OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEV0aGVybmV0IDgwMCBTZXJpZXMgKGljZSkgZHJpdmVyIChpY2VfY29tbW9uLmMgYW5kIGljZV9ldGh0b29sLmMpLiBUaGlzIGRyaXZlciBkcml2ZXMgcGh5c2ljYWwgSW50ZWwgRTgwMCBzZXJpZXMgUENJZSBuZXR3b3JrIGFkYXB0ZXJzLCB3aGljaCByZXF1aXJlIHNwZWNpYWxpemVkIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoZS5nLiwgUUVNVSkuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNzoyODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJlYzNiZGNiNWE0N2IxYjhmYWJhMzJjZDgyMjFjZDk1MDkxYjYzNDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxNSAxNzoyODo1NyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uY1xuaW5kZXggZWYxY2UxMDZmODFiNS4uZDUzMzA3YjE2OGUyYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcbkBAIC0yNTA3LDcgJiM0MzsyNTA3LDcgQEAgaWNlX3JlY2FsY19wb3J0X2xpbWl0ZWRfY2FwcyhzdHJ1Y3QgaWNlX2h3ICpodywgc3RydWN0IGljZV9od19jb21tb25fY2FwcyAqY2FwcylcbiBcdFx0Y2Fwcy1cdTAwM2VtYXh0YyA9IDQ7XG4gXHRcdGljZV9kZWJ1ZyhodywgSUNFX0RCR19JTklULCBcJiMzNDtyZWR1Y2luZyBtYXh0YyB0byAlZCAoYmFzZWQgb24gI3BvcnRzKVxcblwmIzM0OyxcbiBcdFx0XHQgIGNhcHMtXHUwMDNlbWF4dGMpO1xuLVx0XHRpZiAoY2Fwcy1cdTAwM2VyZG1hKSB7XG4mIzQzO1x0XHRpZiAoY2Fwcy1cdTAwM2VyZG1hIFx1MDAyNlx1MDAyNiBody1cdTAwM2VtYWNfdHlwZSAhPSBJQ0VfTUFDX0U4MzApIHtcbiBcdFx0XHRpY2VfZGVidWcoaHcsIElDRV9EQkdfSU5JVCwgXCYjMzQ7Zm9yY2luZyBSRE1BIG9mZlxcblwmIzM0Oyk7XG4gXHRcdFx0Y2Fwcy1cdTAwM2VyZG1hID0gMDtcbiBcdFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcbmluZGV4IGJmOWE4MjFjNTQzYjcuLjRjZTE5OGY2YTFiNTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcbkBAIC0yMzY1LDggJiM0MzsyMzY1LDkgQEAgaWNlX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRicmVhaztcbiBcdH1cbiBcbi1cdC8qIGZsb3cgY29udHJvbCBpcyBzeW1tZXRyaWMgYW5kIGFsd2F5cyBzdXBwb3J0ZWQgKi9cbiYjNDM7XHQvKiBmbG93IGNvbnRyb2wgaXMgc3ltbWV0cmljIG9yIGFzeW1tZXRyaWMgYW5kIGFsd2F5cyBzdXBwb3J0ZWQgKi9cbiBcdGV0aHRvb2xfbGlua19rc2V0dGluZ3NfYWRkX2xpbmtfbW9kZShrcywgc3VwcG9ydGVkLCBQYXVzZSk7XG4mIzQzO1x0ZXRodG9vbF9saW5rX2tzZXR0aW5nc19hZGRfbGlua19tb2RlKGtzLCBzdXBwb3J0ZWQsIEFzeW1fUGF1c2UpO1xuIFxuIFx0Y2FwcyA9IGt6YWxsb2Nfb2JqKCpjYXBzKTtcbiBcdGlmICghY2FwcylcbkBAIC0yNTAwLDYgJiM0MzsyNTAxLDI4IEBAIGljZV9rc2V0dGluZ3NfZmluZF9hZHZfbGlua19zcGVlZChjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3MpXG4gXHRyZXR1cm4gYWR2X2xpbmtfc3BlZWQ7XG4gfVxuIFxuJiM0MzsvKipcbiYjNDM7ICogaWNlX2F1dG9uZWdfZGlzYWJsZV9hbGxvd2VkIC0gY2hlY2sgaWYgYXV0b25lZyBjYW4gYmUgZGlzYWJsZWRcbiYjNDM7ICogQHA6IHBvcnQgaW5mb1xuJiM0MzsgKlxuJiM0MzsgKiBDaGVjayBpZiBhdXRvbmVnb3RpYXRpb24gY2FuIGJlIGRpc2FibGVkIGJhc2VkIG9uIGxpbmsgc3RhdGUuXG4mIzQzOyAqIElDRV9BUV9MUF9BTl9BQklMSVRZIGlzIG9ubHkgdmFsaWQgd2hlbiB0aGUgbGluayBpcyB1cDsgZ2F0ZSB0aGF0XG4mIzQzOyAqIGNoZWNrIGFjY29yZGluZ2x5IHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlcyBmcm9tIHN0YWxlIGxpbmsgZGF0YS5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuOiB0cnVlIGlmIGF1dG9uZWcgaGFzIGNvbXBsZXRlZCwgb3IgaWYgdGhlIGxpbmsgaXMgdXAgYW5kIHRoZVxuJiM0MzsgKiAgICAgICAgIGxpbmsgcGFydG5lciBkb2VzIG5vdCBhZHZlcnRpc2UgYXV0b25lZ290aWF0aW9uIGNhcGFiaWxpdHkuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgYm9vbCBpY2VfYXV0b25lZ19kaXNhYmxlX2FsbG93ZWQoc3RydWN0IGljZV9wb3J0X2luZm8gKnApXG4mIzQzO3tcbiYjNDM7XHR1OCBhbl9pbmZvID0gcC1cdTAwM2VwaHkubGlua19pbmZvLmFuX2luZm87XG4mIzQzO1xuJiM0MztcdGlmIChhbl9pbmZvIFx1MDAyNiBJQ0VfQVFfQU5fQ09NUExFVEVEKVxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1x0LyogSUNFX0FRX0xQX0FOX0FCSUxJVFkgaXMgb25seSB2YWxpZCB3aGVuIGxpbmsgaXMgdXAgKi9cbiYjNDM7XHRyZXR1cm4gKHAtXHUwMDNlcGh5LmxpbmtfaW5mby5saW5rX2luZm8gXHUwMDI2IElDRV9BUV9MSU5LX1VQKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgICAgIShhbl9pbmZvIFx1MDAyNiBJQ0VfQVFfTFBfQU5fQUJJTElUWSk7XG4mIzQzO31cbiYjNDM7XG4gLyoqXG4gICogaWNlX3NldHVwX2F1dG9uZWdcbiAgKiBAcDogcG9ydCBpbmZvXG5AQCAtMjUzOCw4ICYjNDM7MjU2MSw4IEBAIGljZV9zZXR1cF9hdXRvbmVnKHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwLCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3MsXG4gXHRcdFx0fVxuIFx0XHR9XG4gXHR9IGVsc2Uge1xuLVx0XHQvKiBJZiBhdXRvbmVnIGlzIGN1cnJlbnRseSBlbmFibGVkICovXG4tXHRcdGlmIChwLVx1MDAzZXBoeS5saW5rX2luZm8uYW5faW5mbyBcdTAwMjYgSUNFX0FRX0FOX0NPTVBMRVRFRCkge1xuJiM0MztcdFx0LyogSWYgYXV0b25lZyBjb21wbGV0ZWQgb3IgbGluayBwYXJ0bmVyIGRvZXMgbm90IHN1cHBvcnQgQU4gKi9cbiYjNDM7XHRcdGlmIChpY2VfYXV0b25lZ19kaXNhYmxlX2FsbG93ZWQocCkpIHtcbiBcdFx0XHQvKiBJZiBhdXRvbmVnIGlzIHN1cHBvcnRlZCAxMEdCQVNFX1QgaXMgdGhlIG9ubHkgUEhZXG4gXHRcdFx0ICogdGhhdCBjYW4gZGlzYWJsZSBpdCwgc28gb3RoZXJ3aXNlIHJldHVybiBlcnJvclxuIFx0XHRcdCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE3OjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBFdGhlcm5ldCA4MDAgU2VyaWVzIChpY2UpIGRyaXZlciAoaWNlX2NvbW1vbi5jIGFuZCBpY2VfZXRodG9vbC5jKS4gVGhpcyBkcml2ZXIgZHJpdmVzIHBoeXNpY2FsIEludGVsIEU4MDAgc2VyaWVzIFBDSWUgbmV0d29yayBhZGFwdGVycywgd2hpY2ggcmVxdWlyZSBzcGVjaWFsaXplZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4sIFFFTVUpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyZWMzYmRjYjVhNDdiMWI4ZmFiYTMyY2Q4MjIxY2Q5NTA5MWI2MzQyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgMTUgMTc6Mjg6NTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYwppbmRleCBlZjFjZTEwNmY4MWI1Li5kNTMzMDdiMTY4ZTJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMKQEAgLTI1MDcsNyAmIzQzOzI1MDcsNyBAQCBpY2VfcmVjYWxjX3BvcnRfbGltaXRlZF9jYXBzKHN0cnVjdCBpY2VfaHcgKmh3LCBzdHJ1Y3QgaWNlX2h3X2NvbW1vbl9jYXBzICpjYXBzKQogCQljYXBzLSZndDttYXh0YyA9IDQ7CiAJCWljZV9kZWJ1ZyhodywgSUNFX0RCR19JTklULCAmIzM0O3JlZHVjaW5nIG1heHRjIHRvICVkIChiYXNlZCBvbiAjcG9ydHMpXG4mIzM0OywKIAkJCSAgY2Fwcy0mZ3Q7bWF4dGMpOwotCQlpZiAoY2Fwcy0mZ3Q7cmRtYSkgewomIzQzOwkJaWYgKGNhcHMtJmd0O3JkbWEgJmFtcDsmYW1wOyBody0mZ3Q7bWFjX3R5cGUgIT0gSUNFX01BQ19FODMwKSB7CiAJCQlpY2VfZGVidWcoaHcsIElDRV9EQkdfSU5JVCwgJiMzNDtmb3JjaW5nIFJETUEgb2ZmXG4mIzM0Oyk7CiAJCQljYXBzLSZndDtyZG1hID0gMDsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYwppbmRleCBiZjlhODIxYzU0M2I3Li40Y2UxOThmNmExYjU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYwpAQCAtMjM2NSw4ICYjNDM7MjM2NSw5IEBAIGljZV9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKIAkJYnJlYWs7CiAJfQogCi0JLyogZmxvdyBjb250cm9sIGlzIHN5bW1ldHJpYyBhbmQgYWx3YXlzIHN1cHBvcnRlZCAqLwomIzQzOwkvKiBmbG93IGNvbnRyb2wgaXMgc3ltbWV0cmljIG9yIGFzeW1tZXRyaWMgYW5kIGFsd2F5cyBzdXBwb3J0ZWQgKi8KIAlldGh0b29sX2xpbmtfa3NldHRpbmdzX2FkZF9saW5rX21vZGUoa3MsIHN1cHBvcnRlZCwgUGF1c2UpOwomIzQzOwlldGh0b29sX2xpbmtfa3NldHRpbmdzX2FkZF9saW5rX21vZGUoa3MsIHN1cHBvcnRlZCwgQXN5bV9QYXVzZSk7CiAKIAljYXBzID0ga3phbGxvY19vYmooKmNhcHMpOwogCWlmICghY2FwcykKQEAgLTI1MDAsNiAmIzQzOzI1MDEsMjggQEAgaWNlX2tzZXR0aW5nc19maW5kX2Fkdl9saW5rX3NwZWVkKGNvbnN0IHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICprcykKIAlyZXR1cm4gYWR2X2xpbmtfc3BlZWQ7CiB9CiAKJiM0MzsvKioKJiM0MzsgKiBpY2VfYXV0b25lZ19kaXNhYmxlX2FsbG93ZWQgLSBjaGVjayBpZiBhdXRvbmVnIGNhbiBiZSBkaXNhYmxlZAomIzQzOyAqIEBwOiBwb3J0IGluZm8KJiM0MzsgKgomIzQzOyAqIENoZWNrIGlmIGF1dG9uZWdvdGlhdGlvbiBjYW4gYmUgZGlzYWJsZWQgYmFzZWQgb24gbGluayBzdGF0ZS4KJiM0MzsgKiBJQ0VfQVFfTFBfQU5fQUJJTElUWSBpcyBvbmx5IHZhbGlkIHdoZW4gdGhlIGxpbmsgaXMgdXA7IGdhdGUgdGhhdAomIzQzOyAqIGNoZWNrIGFjY29yZGluZ2x5IHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlcyBmcm9tIHN0YWxlIGxpbmsgZGF0YS4KJiM0MzsgKgomIzQzOyAqIFJldHVybjogdHJ1ZSBpZiBhdXRvbmVnIGhhcyBjb21wbGV0ZWQsIG9yIGlmIHRoZSBsaW5rIGlzIHVwIGFuZCB0aGUKJiM0MzsgKiAgICAgICAgIGxpbmsgcGFydG5lciBkb2VzIG5vdCBhZHZlcnRpc2UgYXV0b25lZ290aWF0aW9uIGNhcGFiaWxpdHkuCiYjNDM7ICovCiYjNDM7c3RhdGljIGJvb2wgaWNlX2F1dG9uZWdfZGlzYWJsZV9hbGxvd2VkKHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwKQomIzQzO3sKJiM0MzsJdTggYW5faW5mbyA9IHAtJmd0O3BoeS5saW5rX2luZm8uYW5faW5mbzsKJiM0MzsKJiM0MzsJaWYgKGFuX2luZm8gJmFtcDsgSUNFX0FRX0FOX0NPTVBMRVRFRCkKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwkvKiBJQ0VfQVFfTFBfQU5fQUJJTElUWSBpcyBvbmx5IHZhbGlkIHdoZW4gbGluayBpcyB1cCAqLwomIzQzOwlyZXR1cm4gKHAtJmd0O3BoeS5saW5rX2luZm8ubGlua19pbmZvICZhbXA7IElDRV9BUV9MSU5LX1VQKSAmYW1wOyZhbXA7CiYjNDM7CSAgICAgICAhKGFuX2luZm8gJmFtcDsgSUNFX0FRX0xQX0FOX0FCSUxJVFkpOwomIzQzO30KJiM0MzsKIC8qKgogICogaWNlX3NldHVwX2F1dG9uZWcKICAqIEBwOiBwb3J0IGluZm8KQEAgLTI1MzgsOCAmIzQzOzI1NjEsOCBAQCBpY2Vfc2V0dXBfYXV0b25lZyhzdHJ1Y3QgaWNlX3BvcnRfaW5mbyAqcCwgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmtzLAogCQkJfQogCQl9CiAJfSBlbHNlIHsKLQkJLyogSWYgYXV0b25lZyBpcyBjdXJyZW50bHkgZW5hYmxlZCAqLwotCQlpZiAocC0mZ3Q7cGh5LmxpbmtfaW5mby5hbl9pbmZvICZhbXA7IElDRV9BUV9BTl9DT01QTEVURUQpIHsKJiM0MzsJCS8qIElmIGF1dG9uZWcgY29tcGxldGVkIG9yIGxpbmsgcGFydG5lciBkb2VzIG5vdCBzdXBwb3J0IEFOICovCiYjNDM7CQlpZiAoaWNlX2F1dG9uZWdfZGlzYWJsZV9hbGxvd2VkKHApKSB7CiAJCQkvKiBJZiBhdXRvbmVnIGlzIHN1cHBvcnRlZCAxMEdCQVNFX1QgaXMgdGhlIG9ubHkgUEhZCiAJCQkgKiB0aGF0IGNhbiBkaXNhYmxlIGl0LCBzbyBvdGhlcndpc2UgcmV0dXJuIGVycm9yCiAJCQkgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTc6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcyNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFdmFsdWF0aW5nIHRoZSBLZXJuZWwgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBhc2tlZCB0byBhc3Nlc3MgdGhpcyBwYXRjaC4gVGhlIGNvbW1pdCBkaWZmIHNwZWNpZmljYWxseSB0b3VjaGVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jYC4gIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBtZWV0cyB0aGUgY3JpdGVyaWEgZm9yIGZ1enppbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBzb21lIG9ic2N1cmUgcmVhc29uIHRvIGF2b2lkIGZ1enppbmcuCgpNeSBwcmltYXJ5IHJ1bGUgaXMsIEkgc2hvdWxkIG9ubHkgKm5vdCogZnV6eiBpZiBhbGwgdGhlIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byBhIHZlcnkgc3BlY2lmaWMgc2V0IG9mIGNhdGVnb3JpZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGlmIHRoaXMgZmFsbHMgdW5kZXIgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuJiMzNDsgVGhhdCBjYXRlZ29yeSBpbmNsdWRlcyB0aGluZ3MgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgc3BlY2lmaWMsIHBoeXNpY2FsIGhhcmR3YXJlLCB0aGF0IGFyZW4mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KCkFscmlnaHQsIHNvIHdoYXQgaXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZWA/ICBBaCwgcmlnaHQhIFRoYXQmIzM5O3MgdGhlIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgwMCBTZXJpZXMgTGludXggRHJpdmVyLCB0aGUgYGljZWAgZHJpdmVyLiBPa2F5LCBzbyBub3cgdGhlIGtleSBxdWVzdGlvbjogSXMgdGhlIEludGVsIEU4MDAgc2VyaWVzIFBDSWUgTklDIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lPwoKTm8uIFRoZSBJbnRlbCBJQ0UgZHJpdmVyIGlzIGZvciBwaHlzaWNhbCBJbnRlbCA4MDAgU2VyaWVzIChFODEwIC8gRTgzMCAvIGV0Yy4pIFBDSWUgMTAwR2JFIC8gMjVHYkUgbmV0d29yayBhZGFwdGVycy4gVGhhdCBtYWtlcyBtZSBuZXJ2b3VzLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGBpY2VgICpyZXF1aXJlcyogcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLCBvciBpZiB0aGVyZSBpcyBzb21lIGVtdWxhdGlvbiwgc29mdHdhcmUgbW9ja3MsIG9yIHZpcnR1YWwgYnVzIGFic3RyYWN0aW9uLgoKRG9lcyBRRU1VIGV2ZW4gZW11bGF0ZSB0aGUgSW50ZWwgRTgwMCBzZXJpZXM/IE5vLiBRRU1VIGVtdWxhdGVzIGUxMDAwLCBlMTAwMGUsIGFuZCBpZ2IsIGJ1dCBub3QgaWNlLiBJIG5lZWQgdG8gYmUgc3VyZSB0aG91Z2guIERvZXMgYGljZWAgc3VwcG9ydCBuZXRraXQvbmV0ZGV2c2ltIG9yIGFueXRoaW5nIHZpcnR1YWw/IE5vLCBhIHF1aWNrIGNoZWNrIG9mIHRoZSBjb2RlIGNvbmZpcm1zIGl0IGlzIGEgUENJIGRyaXZlciAoYGljZV9kcml2ZXJgIGlzIHJlZ2lzdGVyZWQgd2l0aCBgcGNpX3JlZ2lzdGVyX2RyaXZlcmApLiBUbyBiZSBleHRyYSBjZXJ0YWluIEkgc2hvdWxkIHJldmlldyB0aGUgY29kZSBtb3JlIGNsb3NlbHkgb3Igc2VhcmNoIGZvciBgaWNlYCByZWZlcmVuY2VzIGluIHRoZSBrZXJuZWwgdHJlZS4gT2theSwgaXQmIzM5O3MgdmVyeSBsaWtlbHkgdGhpcyB3b24mIzM5O3QgYmUgZnV6emFibGUgZGlyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTc6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGNpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTc6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY1OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBJbnRlbCBJQ0UgRXRoZXJuZXQgRHJpdmVyKioKCk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBgcGNpX2RyaXZlcmAgc3RydWN0dXJlIHJlbGF0ZWQgdG8gdGhlIEludGVsIElDRSBFdGhlcm5ldCBkcml2ZXIuIEdpdmVuIG15IGV4cGVydGlzZSwgSSBrbm93IHRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgZGVidWdnaW5nIGFwcHJvYWNoLiBUaGUgcHJvbXB0IGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludDogYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZWAuIFRoYXQmIzM5O3MgcHJlY2lzZWx5IHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIHJlbGV2YW50IGNvZGUuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaG93IHRoZSBkcml2ZXIgcmVnaXN0ZXJzIGl0c2VsZiB3aXRoIHRoZSBQQ0kgc3Vic3lzdGVtLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaG93IHRoZSBkcml2ZXImIzM5O3MgcHJvYmVkIGFuZCB3aGF0IHN0cnVjdHVyZXMgaXQmIzM5O3MgYnVpbHQgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTc6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0IHBjaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM9NTg1MD1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBpY2VfcGNpX2Vycl9oYW5kbGVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTU4NTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODU4OnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpY2VfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTg1OS1cdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTc6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAwMQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIGBpY2VfZHJpdmVyYCBJbml0aWFsaXphdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgSW50ZWwgRXRoZXJuZXQgYGljZWAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBpY2VfbWFpbi5jYCBmaWxlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoaXMgZHJpdmVyIGlzIGluaXRpYWxpemVkIGFuZCBob3cgaXQgaW50ZWdyYXRlcyBpbnRvIHRoZSBvdmVyYWxsIG5ldHdvcmsgc3RhY2suIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgYGljZV9kcml2ZXJgIHN0cnVjdHVyZS4gSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIGNvZGUuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSB0YWtpbmcgYSBsb29rIGFyb3VuZCBsaW5lIDU4NTggaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgZHJpdmVyJiMzOTtzIHNldHVwIHNlcXVlbmNlIGFuZCBzZWUgaG93IGBpY2VfZHJpdmVyYCBpcyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgbGFyZ2VyIGNvbnRleHQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvcmUgaW5pdGlhbGl6YXRpb24gZmxvdywgYW55IGFzc29jaWF0ZWQgY2FsbGJhY2tzLCBhbmQgdGhlIHJlbGF0aW9uc2hpcCB0byBvdGhlciByZWxldmFudCBkYXRhIHN0cnVjdHVyZXMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTg1NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs1ODU1Olx0XHQucmVzdW1lID0gaWNlX3BjaV9lcnJfcmVzdW1lXG41ODU2Olx0fTtcbjU4NTc6XHRcbjU4NTg6XHRzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaWNlX2RyaXZlciA9IHtcbjU4NTk6XHRcdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG41ODYwOlx0XHQuaWRfdGFibGUgPSBpY2VfcGNpX3RibCxcbjU4NjE6XHRcdC5wcm9iZSA9IGljZV9wcm9iZSxcbjU4NjI6XHRcdC5yZW1vdmUgPSBpY2VfcmVtb3ZlLFxuNTg2MzpcdFx0LmRyaXZlci5wbSA9IHBtX3NsZWVwX3B0cihcdTAwMjZpY2VfcG1fb3BzKSxcbjU4NjQ6XHRcdC5zaHV0ZG93biA9IGljZV9zaHV0ZG93bixcbjU4NjU6XHRcdC5zcmlvdl9jb25maWd1cmUgPSBpY2Vfc3Jpb3ZfY29uZmlndXJlLFxuNTg2NjpcdFx0LnNyaW92X2dldF92Zl90b3RhbF9tc2l4ID0gaWNlX3NyaW92X2dldF92Zl90b3RhbF9tc2l4LFxuNTg2NzpcdFx0LnNyaW92X3NldF9tc2l4X3ZlY19jb3VudCA9IGljZV9zcmlvdl9zZXRfbXNpeF92ZWNfY291bnQsXG41ODY4Olx0XHQuZXJyX2hhbmRsZXIgPSBcdTAwMjZpY2VfcGNpX2Vycl9oYW5kbGVyXG41ODY5Olx0fTtcbjU4NzA6XHRcbjU4NzE6XHQvKipcbjU4NzI6XHQgKiBpY2VfbW9kdWxlX2luaXQgLSBEcml2ZXIgcmVnaXN0cmF0aW9uIHJvdXRpbmVcbjU4NzM6XHQgKlxuNTg3NDpcdCAqIGljZV9tb2R1bGVfaW5pdCBpcyB0aGUgZmlyc3Qgcm91dGluZSBjYWxsZWQgd2hlbiB0aGUgZHJpdmVyIGlzXG41ODc1Olx0ICogbG9hZGVkLiBBbGwgaXQgZG9lcyBpcyByZWdpc3RlciB3aXRoIHRoZSBQQ0kgc3Vic3lzdGVtLlxuNTg3NjpcdCAqL1xuNTg3NzpcdHN0YXRpYyBpbnQgX19pbml0IGljZV9tb2R1bGVfaW5pdCh2b2lkKVxuNTg3ODpcdHtcbjU4Nzk6XHRcdGludCBzdGF0dXMgPSAtRU5PTUVNO1xuNTg4MDpcdFxuNTg4MTpcdFx0cHJfaW5mbyhcJiMzNDslc1xcblwmIzM0OywgaWNlX2RyaXZlcl9zdHJpbmcpO1xuNTg4MjpcdFx0cHJfaW5mbyhcJiMzNDslc1xcblwmIzM0OywgaWNlX2NvcHlyaWdodCk7XG41ODgzOlx0XG41ODg0Olx0XHRpY2VfYWR2X2xua19zcGVlZF9tYXBzX2luaXQoKTtcbjU4ODU6XHRcbjU4ODY6XHRcdGljZV93cSA9IGFsbG9jX3dvcmtxdWV1ZShcJiMzNDslc1wmIzM0OywgV1FfVU5CT1VORCwgMCwgS0JVSUxEX01PRE5BTUUpO1xuNTg4NzpcdFx0aWYgKCFpY2Vfd3EpIHtcbjU4ODg6XHRcdFx0cHJfZXJyKFwmIzM0O0ZhaWxlZCB0byBjcmVhdGUgd29ya3F1ZXVlXFxuXCYjMzQ7KTtcbjU4ODk6XHRcdFx0cmV0dXJuIHN0YXR1cztcbjU4OTA6XHRcdH1cbjU4OTE6XHRcbjU4OTI6XHRcdGljZV9sYWdfd3EgPSBhbGxvY19vcmRlcmVkX3dvcmtxdWV1ZShcJiMzNDtpY2VfbGFnX3dxXCYjMzQ7LCAwKTtcbjU4OTM6XHRcdGlmICghaWNlX2xhZ193cSkge1xuNTg5NDpcdFx0XHRwcl9lcnIoXCYjMzQ7RmFpbGVkIHRvIGNyZWF0ZSBMQUcgd29ya3F1ZXVlXFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNzoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTUwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50OgoKKipFeGFtaW5pbmcgdGhlIERldmljZSBCaW5kaW5nIFRhYmxlKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc3BlY2lmaWMgZGV2aWNlcyB0aGlzIGBpY2VfcGNpX3RibGAgdGFibGUgaXMgcmVzcG9uc2libGUgZm9yIGJpbmRpbmcgdG8uIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpdHMgY29udGVudHMgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHBpbnBvaW50IHRoZSB0YXJnZXQgZGV2aWNlcy4gVGhpcyB0YWJsZSBpcyBrZXkgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGFzc2lnbm1lbnQgb2YgdGhlc2UgcG90ZW50aWFsbHkgc3BlY2lhbGl6ZWQgTklDcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgYmluZGluZyBhY3R1YWxseSBsb29rcyBsaWtlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpY2VfcGNpX3RibCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz01MTI2PXN0YXRpYyBpbnQgaWNlX3Byb2JlX3JlY292ZXJ5X21vZGUoc3RydWN0IGljZV9wZiAqcGYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTE1OC0gKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjUxNTk6ICogQGVudDogZW50cnkgaW4gaWNlX3BjaV90YmxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTUxNjAtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz01NzgwPXN0YXRpYyB2b2lkIGljZV9wY2lfZXJyX3Jlc2V0X2RvbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTc4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU3ODU6LyogaWNlX3BjaV90YmwgLSBQQ0kgRGV2aWNlIElEIFRhYmxlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy01Nzg2LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTc5Mi0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU3OTM6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGljZV9wY2lfdGJsW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy01Nzk0LVx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODEwQ19CQUNLUExBTkUpIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTg0NS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTg0NjpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaWNlX3BjaV90YmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTg0Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz01ODU4PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpY2VfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTg1OS1cdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODYwOlx0LmlkX3RhYmxlID0gaWNlX3BjaV90YmwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy01ODYxLVx0LnByb2JlID0gaWNlX3Byb2JlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNzoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzIxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIFBDSSBEZXZpY2UgSURzIGluIGBpY2VfcGNpX3RibGAqKgoKQWxyaWdodCwgbG9va2luZyBhdCB0aGlzIGNvZGUsIGl0JiMzOTtzIGNsZWFyIHRoZXNlIGRldmljZXMgaW4gYGljZV9wY2lfdGJsYCBhcmUgUENJIGRldmljZXMsIHdpdGggaWRlbnRpZmllcnMgbGlrZSBgSUNFX0RFVl9JRF9FODEwQ19CQUNLUExBTkVgIGFuZCB0aGUgbGlrZS4gSXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmssICpva2F5LCBzbyB3aGF0IGFyZSB0aGVzZSBgSUNFX0RFVl9JRF9gIG1hY3JvcyBkZWZpbmVkIGFzPyogSSBuZWVkIHRvIGRpdmUgaW50byB0aG9zZSBoZWFkZXJzIHJpZ2h0IGF3YXkuIExldCYjMzk7cyBnZXQgdGhlIGRlZmluaXRpb25zIG9mIHRoZXNlIGBJQ0VfREVWX0lEX2AgY29uc3RhbnRzIGFuZCBmaWd1cmUgb3V0IHRoZSBzcGVjaWZpYyBkZXZpY2UgdmVuZG9yIGFuZCBkZXZpY2UgSURzIHRoZXNlIGNvcnJlc3BvbmQgdG8uIFRoYXQmIzM5O2xsIHByb3ZpZGUgdGhlIGNydWNpYWwgY29udGV4dCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgY2FwYWJpbGl0aWVzLCBmdW5jdGlvbmFsaXRpZXMsIGFuZCBleHBlY3RlZCBiZWhhdmlvciBvZiB0aGVzZSBoYXJkd2FyZSBjb21wb25lbnRzIHdpdGhpbiB0aGUgc3lzdGVtLCBsaWtlIHRoZXNlIEU4MTBDLWJhc2VkIGRldmljZXMuIEdldHRpbmcgdGhvc2UgZGV2aWNlIElEcyBtYXBwZWQgY29ycmVjdGx5IGlzIHRoZSBlc3NlbnRpYWwgZmlyc3Qgc3RlcCwgYW5kIHRoZSByZXN0IHdpbGwgZm9sbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJQ0VfREVWX0lEXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYz0xND1zdGF0aWMgREVGSU5FX01VVEVYKGljZV9hZGFwdGVyc19tdXRleCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmMtMTgtI2RlZmluZSBJQ0VfQURBUFRFUl9JTkRFWF9FODI1Q1x0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5jOjE5Olx0KElDRV9ERVZfSURfRTgyNUNfQkFDS1BMQU5FIHwgSUNFX0FEQVBURVJfRklYRURfSU5ERVgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYy0yMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5jPTIxPXN0YXRpYyB1NjQgaWNlX2FkYXB0ZXJfaW5kZXgoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmMtMjMtXHRzd2l0Y2ggKHBkZXYtXHUwMDNlZGV2aWNlKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYzoyNDpcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19CQUNLUExBTkU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYzoyNTpcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19RU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmM6MjY6XHRjYXNlIElDRV9ERVZfSURfRTgyNUNfU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmM6Mjc6XHRjYXNlIElDRV9ERVZfSURfRTgyNUNfU0dNSUk6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYy0yOC1cdFx0LyogRTgyNUMgZGV2aWNlcyBoYXZlIG11bHRpcGxlIE5BQ3Mgd2hpY2ggYXJlIGNvbm5lY3RlZCB0byB0aGVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jPTEyMz1zdGF0aWMgaW50IGljZV9zZXRfbWFjX3R5cGUoc3RydWN0IGljZV9odyAqaHcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYy0xMjgtXHRzd2l0Y2ggKGh3LVx1MDAzZWRldmljZV9pZCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxMjk6XHRjYXNlIElDRV9ERVZfSURfRTgxMENfQkFDS1BMQU5FOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxMzA6XHRjYXNlIElDRV9ERVZfSURfRTgxMENfUVNGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTMxOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MTBDX1NGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTMyOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MTBfWFhWX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTMzOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MTBfWFhWX1FTRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjEzNDpcdGNhc2UgSUNFX0RFVl9JRF9FODEwX1hYVl9TRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jLTEzNS1cdFx0aHctXHUwMDNlbWFjX3R5cGUgPSBJQ0VfTUFDX0U4MTA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jLTEzNi1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjEzNzpcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ18xMEdfQkFTRV9UOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxMzg6XHRjYXNlIElDRV9ERVZfSURfRTgyM0NfQkFDS1BMQU5FOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxMzk6XHRjYXNlIElDRV9ERVZfSURfRTgyM0NfUVNGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTQwOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTQxOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NHTUlJOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNDI6XHRjYXNlIElDRV9ERVZfSURfRTgyMkNfMTBHX0JBU0VfVDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTQzOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MjJDX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTQ0Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjJDX1FTRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE0NTpcdGNhc2UgSUNFX0RFVl9JRF9FODIyQ19TRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE0NjpcdGNhc2UgSUNFX0RFVl9JRF9FODIyQ19TR01JSTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTQ3Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjJMXzEwR19CQVNFX1Q6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE0ODpcdGNhc2UgSUNFX0RFVl9JRF9FODIyTF9CQUNLUExBTkU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE0OTpcdGNhc2UgSUNFX0RFVl9JRF9FODIyTF9TRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE1MDpcdGNhc2UgSUNFX0RFVl9JRF9FODIyTF9TR01JSTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTUxOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMXzEwR19CQVNFX1Q6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE1MjpcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF8xR0JFOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNTM6XHRjYXNlIElDRV9ERVZfSURfRTgyM0xfQkFDS1BMQU5FOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNTQ6XHRjYXNlIElDRV9ERVZfSURfRTgyM0xfUVNGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTU1Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMX1NGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMtMTU2LVx0XHRody1cdTAwM2VtYWNfdHlwZSA9IElDRV9NQUNfR0VORVJJQztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMtMTU3LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTU4Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjVDX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTU5Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjVDX1FTRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE2MDpcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19TRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE2MTpcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19TR01JSTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMtMTYyLVx0XHRody1cdTAwM2VtYWNfdHlwZSA9IElDRV9NQUNfR0VORVJJQ18zS19FODI1O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYy0xNjMtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNjQ6XHRjYXNlIElDRV9ERVZfSURfRTgzMENDX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTY1Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MzBDQ19RU0ZQNTY6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE2NjpcdGNhc2UgSUNFX0RFVl9JRF9FODMwQ0NfU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNjc6XHRjYXNlIElDRV9ERVZfSURfRTgzMENDX1NGUF9ERDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTY4Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MzBDX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTY5Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MzBfWFhWX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTcwOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MzBDX1FTRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE3MTpcdGNhc2UgSUNFX0RFVl9JRF9FODMwX1hYVl9RU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNzI6XHRjYXNlIElDRV9ERVZfSURfRTgzMENfU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNzM6XHRjYXNlIElDRV9ERVZfSURfRTgzMF9YWFZfU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNzQ6XHRjYXNlIElDRV9ERVZfSURfRTgzNUNDX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTc1Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MzVDQ19RU0ZQNTY6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE3NjpcdGNhc2UgSUNFX0RFVl9JRF9FODM1Q0NfU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNzc6XHRjYXNlIElDRV9ERVZfSURfRTgzNUNfQkFDS1BMQU5FOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNzg6XHRjYXNlIElDRV9ERVZfSURfRTgzNUNfUVNGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTc5Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MzVDX1NGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTgwOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MzVfTF9CQUNLUExBTkU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE4MTpcdGNhc2UgSUNFX0RFVl9JRF9FODM1X0xfUVNGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTgyOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MzVfTF9TRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jLTE4My1cdFx0aHctXHUwMDNlbWFjX3R5cGUgPSBJQ0VfTUFDX0U4MzA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYz0zMzU1PWJvb2wgaWNlX2lzXzEwMG1fc3BlZWRfc3VwcG9ydGVkKHN0cnVjdCBpY2VfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMtMzM1Ny1cdHN3aXRjaCAoaHctXHUwMDNlZGV2aWNlX2lkKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjMzNTg6XHRjYXNlIElDRV9ERVZfSURfRTgyMkNfU0dNSUk6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjMzNTk6XHRjYXNlIElDRV9ERVZfSURfRTgyMkxfU0dNSUk6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjMzNjA6XHRjYXNlIElDRV9ERVZfSURfRTgyM0xfMUdCRTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MzM2MTpcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ19TR01JSTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MzM2MjpcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19TR01JSTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMtMzM2My1cdFx0cmV0dXJuIHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYz00MzUxPWludCBpY2VfZ2V0X3BoeV9sYW5lX251bWJlcihzdHJ1Y3QgaWNlX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jLTQzNjMtXHRpZiAoaHctXHUwMDNlbWFjX3R5cGUgPT0gSUNFX01BQ19HRU5FUklDIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjQzNjQ6XHQgICAgaHctXHUwMDNlZGV2aWNlX2lkID09IElDRV9ERVZfSURfRTgyNUNfU0dNSUkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jLTQzNjUtXHRcdHJldHVybiBody1cdTAwM2VwZl9pZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jPTYwNDE9aW50IGljZV9nZXRfcGNhOTU3NV9oYW5kbGUoc3RydWN0IGljZV9odyAqaHcsIHUxNiAqcGNhOTU3NV9oYW5kbGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYy02MDU3LVx0LyogQ2hlY2sgaWYgdGhlIFNXIElPIGV4cGFuZGVyIGNvbnRyb2xsaW5nIFNNQSBleGlzdHMgaW4gdGhlIG5ldGxpc3QuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjYwNTg6XHRpZiAoaHctXHUwMDNlZGV2aWNlX2lkID09IElDRV9ERVZfSURfRTgxMENfU0ZQKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYy02MDU5LVx0XHRpZHggPSBTV19QQ0E5NTc1X1NGUF9UT1BPX0lEWDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6NjA2MDpcdGVsc2UgaWYgKGh3LVx1MDAzZWRldmljZV9pZCA9PSBJQ0VfREVWX0lEX0U4MTBDX1FTRlApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jLTYwNjEtXHRcdGlkeCA9IFNXX1BDQTk1NzVfUVNGUF9UT1BPX0lEWDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTctLyogRGV2aWNlIElEcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo4OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyX1NJX0RGTFQgICAgICAgICAweDE4ODhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtOS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MzUtQ0MgZm9yIGJhY2twbGFuZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoxMDojZGVmaW5lIElDRV9ERVZfSURfRTgzNUNDX0JBQ0tQTEFORVx0MHgxMjQ4XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTExLS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzNS1DQyBmb3IgUVNGUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoxMjojZGVmaW5lIElDRV9ERVZfSURfRTgzNUNDX1FTRlA1Nlx0MHgxMjQ5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTEzLS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzNS1DQyBmb3IgU0ZQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjE0OiNkZWZpbmUgSUNFX0RFVl9JRF9FODM1Q0NfU0ZQXHRcdDB4MTI0QVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xNS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MzUtQyBmb3IgYmFja3BsYW5lICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjE2OiNkZWZpbmUgSUNFX0RFVl9JRF9FODM1Q19CQUNLUExBTkVcdDB4MTI2MVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xNy0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MzUtQyBmb3IgUVNGUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoxODojZGVmaW5lIElDRV9ERVZfSURfRTgzNUNfUVNGUFx0XHQweDEyNjJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMTktLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODM1LUMgZm9yIFNGUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoyMDojZGVmaW5lIElDRV9ERVZfSURfRTgzNUNfU0ZQXHRcdDB4MTI2M1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0yMS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MzUtTCBmb3IgYmFja3BsYW5lICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjIyOiNkZWZpbmUgSUNFX0RFVl9JRF9FODM1X0xfQkFDS1BMQU5FXHQweDEyNjVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMjMtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODM1LUwgZm9yIFFTRlAgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6MjQ6I2RlZmluZSBJQ0VfREVWX0lEX0U4MzVfTF9RU0ZQXHRcdDB4MTI2NlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0yNS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MzUtTCBmb3IgU0ZQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjI2OiNkZWZpbmUgSUNFX0RFVl9JRF9FODM1X0xfU0ZQXHRcdDB4MTI2N1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0yNy0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjMtTCBmb3IgYmFja3BsYW5lICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjI4OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIzTF9CQUNLUExBTkVcdDB4MTI0Q1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0yOS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjMtTCBmb3IgU0ZQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjMwOiNkZWZpbmUgSUNFX0RFVl9JRF9FODIzTF9TRlBcdFx0MHgxMjREXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTMxLS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyMy1ML1g1NTctQVQgMTBHQkFTRS1UICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjMyOiNkZWZpbmUgSUNFX0RFVl9JRF9FODIzTF8xMEdfQkFTRV9UXHQweDEyNEVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMzMtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODIzLUwgMUdiRSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDozNDojZGVmaW5lIElDRV9ERVZfSURfRTgyM0xfMUdCRVx0XHQweDEyNEZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMzUtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODIzLUwgZm9yIFFTRlAgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6MzY6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjNMX1FTRlBcdFx0MHgxNTFEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTM3LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzMC1DQyBmb3IgYmFja3BsYW5lICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjM4OiNkZWZpbmUgSUNFX0RFVl9JRF9FODMwQ0NfQkFDS1BMQU5FXHQweDEyRDFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMzktLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLUNDIGZvciBRU0ZQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjQwOiNkZWZpbmUgSUNFX0RFVl9JRF9FODMwQ0NfUVNGUDU2XHQweDEyRDJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNDEtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLUNDIGZvciBTRlAgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6NDI6I2RlZmluZSBJQ0VfREVWX0lEX0U4MzBDQ19TRlBcdFx0MHgxMkQzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTQzLS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzMC1DQyBmb3IgU0ZQLUREICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjQ0OiNkZWZpbmUgSUNFX0RFVl9JRF9FODMwQ0NfU0ZQX0REXHQweDEyRDRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNDUtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLUMgZm9yIGJhY2twbGFuZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo0NjojZGVmaW5lIElDRV9ERVZfSURfRTgzMENfQkFDS1BMQU5FXHQweDEyRDVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNDctLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLUMgZm9yIFFTRlAgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6NDg6I2RlZmluZSBJQ0VfREVWX0lEX0U4MzBDX1FTRlBcdFx0MHgxMkQ4XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTQ5LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzMC1DIGZvciBTRlAgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6NTA6I2RlZmluZSBJQ0VfREVWX0lEX0U4MzBDX1NGUFx0XHQweDEyREFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNTEtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLVhYViBmb3IgYmFja3BsYW5lICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjUyOiNkZWZpbmUgSUNFX0RFVl9JRF9FODMwX1hYVl9CQUNLUExBTkVcdDB4MTJEQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC01My0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MzAtWFhWIGZvciBRU0ZQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjU0OiNkZWZpbmUgSUNFX0RFVl9JRF9FODMwX1hYVl9RU0ZQXHQweDEyRERcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNTUtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLVhYViBmb3IgU0ZQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjU2OiNkZWZpbmUgSUNFX0RFVl9JRF9FODMwX1hYVl9TRlBcdFx0MHgxMkRFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTU3LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgxMC1DIGZvciBiYWNrcGxhbmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6NTg6I2RlZmluZSBJQ0VfREVWX0lEX0U4MTBDX0JBQ0tQTEFORVx0MHgxNTkxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTU5LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgxMC1DIGZvciBRU0ZQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjYwOiNkZWZpbmUgSUNFX0RFVl9JRF9FODEwQ19RU0ZQXHRcdDB4MTU5MlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC02MS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MTAtQyBmb3IgU0ZQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjYyOiNkZWZpbmUgSUNFX0RFVl9JRF9FODEwQ19TRlBcdFx0MHgxNTkzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTYzLSNkZWZpbmUgSUNFX1NVQkRFVl9JRF9FODEwVFx0XHQweDAwMEVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTcwLS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgxMC1YWFYgZm9yIGJhY2twbGFuZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo3MTojZGVmaW5lIElDRV9ERVZfSURfRTgxMF9YWFZfQkFDS1BMQU5FXHQweDE1OTlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNzItLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODEwLVhYViBmb3IgUVNGUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo3MzojZGVmaW5lIElDRV9ERVZfSURfRTgxMF9YWFZfUVNGUFx0MHgxNTlBXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTc0LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgxMC1YWFYgZm9yIFNGUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo3NTojZGVmaW5lIElDRV9ERVZfSURfRTgxMF9YWFZfU0ZQXHRcdDB4MTU5QlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC03Ni0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjMtQyBmb3IgYmFja3BsYW5lICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjc3OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIzQ19CQUNLUExBTkVcdDB4MTg4QVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC03OC0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjMtQyBmb3IgUVNGUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo3OTojZGVmaW5lIElDRV9ERVZfSURfRTgyM0NfUVNGUFx0XHQweDE4OEJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtODAtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODIzLUMgZm9yIFNGUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo4MTojZGVmaW5lIElDRV9ERVZfSURfRTgyM0NfU0ZQXHRcdDB4MTg4Q1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC04Mi0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjMtQy9YNTU3LUFUIDEwR0JBU0UtVCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo4MzojZGVmaW5lIElDRV9ERVZfSURfRTgyM0NfMTBHX0JBU0VfVFx0MHgxODhEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTg0LS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyMy1DIDFHYkUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6ODU6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjNDX1NHTUlJXHRcdDB4MTg4RVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC04Ni0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjItQyBmb3IgYmFja3BsYW5lICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjg3OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyQ19CQUNLUExBTkVcdDB4MTg5MFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC04OC0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjItQyBmb3IgUVNGUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo4OTojZGVmaW5lIElDRV9ERVZfSURfRTgyMkNfUVNGUFx0XHQweDE4OTFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtOTAtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODIyLUMgZm9yIFNGUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo5MTojZGVmaW5lIElDRV9ERVZfSURfRTgyMkNfU0ZQXHRcdDB4MTg5MlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC05Mi0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjItQy9YNTU3LUFUIDEwR0JBU0UtVCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo5MzojZGVmaW5lIElDRV9ERVZfSURfRTgyMkNfMTBHX0JBU0VfVFx0MHgxODkzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTk0LS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyMi1DIDFHYkUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6OTU6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjJDX1NHTUlJXHRcdDB4MTg5NFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC05Ni0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjItTCBmb3IgYmFja3BsYW5lICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjk3OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyTF9CQUNLUExBTkVcdDB4MTg5N1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC05OC0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjItTCBmb3IgU0ZQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjk5OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyTF9TRlBcdFx0MHgxODk4XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTEwMC0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjItTC9YNTU3LUFUIDEwR0JBU0UtVCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoxMDE6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjJMXzEwR19CQVNFX1RcdDB4MTg5OVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xMDItLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODIyLUwgMUdiRSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoxMDM6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjJMX1NHTUlJXHRcdDB4MTg5QVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xMDQtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODI1LUMgZm9yIGJhY2twbGFuZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoxMDU6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjVDX0JBQ0tQTEFORVx0MHg1NzljXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTEwNi0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjUtQyBmb3IgUVNGUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoxMDc6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjVDX1FTRlBcdFx0MHg1NzlkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTEwOC0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjUtQyBmb3IgU0ZQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjEwOTojZGVmaW5lIElDRV9ERVZfSURfRTgyNUNfU0ZQXHRcdDB4NTc5ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xMTAtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODI1LUMgMUdiRSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoxMTE6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjVDX1NHTUlJXHRcdDB4NTc5ZlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xMTItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmM9MTExPXN0YXRpYyBib29sIGljZV9kcGxsX2lzX3N3X3BpbihzdHJ1Y3QgaWNlX3BmICpwZiwgdTggaW5kZXgsIGJvb2wgaW5wdXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuYy0xMTIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmM6MTEzOlx0aWYgKGlucHV0IFx1MDAyNlx1MDAyNiBwZi1cdTAwM2Vody5kZXZpY2VfaWQgPT0gSUNFX0RFVl9JRF9FODEwQ19RU0ZQKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmMtMTE0LVx0XHRpbmRleCAtPSBJQ0VfRFBMTF9TV19QSU5fSU5QVVRfQkFTRV9RU0ZQIC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuYz0zNDU3PXN0YXRpYyBpbnQgaWNlX2RwbGxfaW5pdF9yZWZfc3luY19pbnB1dHMoc3RydWN0IGljZV9wZiAqcGYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmMtMzUxMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jOjM1MTQ6XHRcdFx0aWYgKGh3LVx1MDAzZWRldmljZV9pZCA9PSBJQ0VfREVWX0lEX0U4MTBDX1NGUCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jLTM1MTUtXHRcdFx0ICAgIHBpbiBcdTAwM2UgSUNFX0RQTExfRTgxMENfU0ZQX05DX1NUQVJUKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jPTQ4NTQ9c3RhdGljIGludCBpY2VfZHBsbF9pbml0X2luZm9fc3dfcGlucyhzdHJ1Y3QgaWNlX3BmICpwZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuYy00ODYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmM6NDg2MzpcdGlmIChwZi1cdTAwM2Vody5kZXZpY2VfaWQgPT0gSUNFX0RFVl9JRF9FODEwQ19RU0ZQKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmMtNDg2NC1cdFx0aW5wdXRfaWR4X29mZnNldCA9IElDRV9FODEwX1JDTEtfUElOU19OVU07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9md191cGRhdGUuYz03NzI9aWNlX29wX3BjaV9tYXRjaF9yZWNvcmQoc3RydWN0IHBsZG1mdyAqY29udGV4dCwgc3RydWN0IHBsZG1md19yZWNvcmQgKnJlY29yZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Z3X3VwZGF0ZS5jLTgxOS1cdCAgICAoaWQuZGV2aWNlID09IFBDSV9BTllfSUQgfHwgaWQuZGV2aWNlID09IHBkZXYtXHUwMDNlZGV2aWNlIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Z3X3VwZGF0ZS5jOjgyMDpcdCAgICBpZC5kZXZpY2UgPT0gSUNFX0RFVl9JRF9FODIyX1NJX0RGTFQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9md191cGRhdGUuYy04MjEtXHQgICAgKGlkLnN1YnN5c3RlbV92ZW5kb3IgPT0gUENJX0FOWV9JRCB8fFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM9Mzk3Mj12b2lkIGljZV9pbml0X2ZlYXR1cmVfc3VwcG9ydChzdHJ1Y3QgaWNlX3BmICpwZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTM5NzQtXHRzd2l0Y2ggKHBmLVx1MDAzZWh3LmRldmljZV9pZCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzozOTc1Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MTBDX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mzk3NjpcdGNhc2UgSUNFX0RFVl9JRF9FODEwQ19RU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzozOTc3Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MTBDX1NGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mzk3ODpcdGNhc2UgSUNFX0RFVl9JRF9FODEwX1hYVl9CQUNLUExBTkU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjM5Nzk6XHRjYXNlIElDRV9ERVZfSURfRTgxMF9YWFZfUVNGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mzk4MDpcdGNhc2UgSUNFX0RFVl9JRF9FODEwX1hYVl9TRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTM5ODEtXHRcdGljZV9zZXRfZmVhdHVyZV9zdXBwb3J0KHBmLCBJQ0VfRl9EU0NQKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz01NzkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpY2VfcGNpX3RibFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTc5NDpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgxMENfQkFDS1BMQU5FKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTc5NTpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgxMENfUVNGUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU3OTY6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MTBDX1NGUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU3OTc6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MTBfWFhWX0JBQ0tQTEFORSkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU3OTg6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MTBfWFhWX1FTRlApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1Nzk5Olx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODEwX1hYVl9TRlApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODAwOlx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODIzQ19CQUNLUExBTkUpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODAxOlx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODIzQ19RU0ZQKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgwMjpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyM0NfU0ZQKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgwMzpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyM0NfMTBHX0JBU0VfVCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MDQ6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjNDX1NHTUlJKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgwNTpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyMkNfQkFDS1BMQU5FKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgwNjpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyMkNfUVNGUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MDc6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjJDX1NGUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MDg6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjJDXzEwR19CQVNFX1QpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODA5Olx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODIyQ19TR01JSSkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MTA6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjJMX0JBQ0tQTEFORSkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MTE6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjJMX1NGUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MTI6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjJMXzEwR19CQVNFX1QpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODEzOlx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODIyTF9TR01JSSkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MTQ6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjNMX0JBQ0tQTEFORSkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MTU6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjNMX1NGUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MTY6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjNMXzEwR19CQVNFX1QpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODE3Olx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODIzTF8xR0JFKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgxODpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyM0xfUVNGUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MTk6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjJfU0lfREZMVCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MjA6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjVDX0JBQ0tQTEFORSksIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODIxOlx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODI1Q19RU0ZQKSwgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MjI6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjVDX1NGUCksIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODIzOlx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODI1Q19TR01JSSksIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODI0Olx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODMwQ0NfQkFDS1BMQU5FKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgyNTpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgzMENDX1FTRlA1NikgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MjY6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MzBDQ19TRlApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODI3Olx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODMwQ0NfU0ZQX0REKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgyODpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgzMENfQkFDS1BMQU5FKSwgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4Mjk6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MzBfWFhWX0JBQ0tQTEFORSksIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODMwOlx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODMwQ19RU0ZQKSwgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MzE6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MzBfWFhWX1FTRlApLCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgzMjpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgzMENfU0ZQKSwgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MzM6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MzBfWFhWX1NGUCksIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODM0Olx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODM1Q0NfQkFDS1BMQU5FKSwgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MzU6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MzVDQ19RU0ZQNTYpLCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgzNjpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgzNUNDX1NGUCksIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODM3Olx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODM1Q19CQUNLUExBTkUpLCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgzODpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgzNUNfUVNGUCksIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODM5Olx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODM1Q19TRlApLCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTg0MDpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgzNV9MX0JBQ0tQTEFORSksIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODQxOlx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODM1X0xfUVNGUCksIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODQyOlx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODM1X0xfU0ZQKSwgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTU4NDMtXHQvKiByZXF1aXJlZCBsYXN0IGVudHJ5ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYz01NzU2PXN0YXRpYyBpbnQgaWNlX2dldF9wZl9jODI3X2lkeChzdHJ1Y3QgaWNlX2h3ICpodywgdTggKmlkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTU3NjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjU3Njc6XHRpZiAoaHctXHUwMDNlZGV2aWNlX2lkICE9IElDRV9ERVZfSURfRTgxMENfUVNGUCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy01NzY4LVx0XHQqaWR4ID0gQzgyN18wO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM9NTk0OT1pY2VfY2d1X2dldF9waW5fZGVzYyhzdHJ1Y3QgaWNlX2h3ICpodywgYm9vbCBpbnB1dCwgaW50ICpzaXplKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNTk1My1cdHN3aXRjaCAoaHctXHUwMDNlZGV2aWNlX2lkKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjU5NTQ6XHRjYXNlIElDRV9ERVZfSURfRTgxMENfU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy01OTU1LVx0XHRpZiAoaW5wdXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTU5NjItXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo1OTYzOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MTBDX1FTRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTU5NjQtXHRcdGlmIChpbnB1dCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNTk3MS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjU5NzI6XHRjYXNlIElDRV9ERVZfSURfRTgyM0xfMTBHX0JBU0VfVDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NTk3MzpcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF8xR0JFOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo1OTc0Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NTk3NTpcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF9RU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo1OTc2Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMX1NGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NTk3NzpcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ18xMEdfQkFTRV9UOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo1OTc4Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NTk3OTpcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ19RU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo1OTgwOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NTk4MTpcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ19TR01JSTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNTk4Mi1cdFx0dCA9IGljZV9jZ3VfZ2V0X3Bpbl9kZXNjX2U4MjMoaHcsIGlucHV0LCBzaXplKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jPTYxNjc9aW50IGljZV9nZXRfY2d1X3JjbGtfcGluX2luZm8oc3RydWN0IGljZV9odyAqaHcsIHU4ICpiYXNlX2lkeCwgdTggKnBpbl9udW0pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy02MTcyLVx0c3dpdGNoIChody1cdTAwM2VkZXZpY2VfaWQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjE3MzpcdGNhc2UgSUNFX0RFVl9JRF9FODEwQ19TRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYxNzQ6XHRjYXNlIElDRV9ERVZfSURfRTgxMENfUVNGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNjE3NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTYxODItXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MTgzOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMXzEwR19CQVNFX1Q6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYxODQ6XHRjYXNlIElDRV9ERVZfSURfRTgyM0xfMUdCRTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjE4NTpcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF9CQUNLUExBTkU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYxODY6XHRjYXNlIElDRV9ERVZfSURfRTgyM0xfUVNGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjE4NzpcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF9TRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYxODg6XHRjYXNlIElDRV9ERVZfSURfRTgyM0NfMTBHX0JBU0VfVDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjE4OTpcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ19CQUNLUExBTkU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYxOTA6XHRjYXNlIElDRV9ERVZfSURfRTgyM0NfUVNGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjE5MTpcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ19TRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYxOTI6XHRjYXNlIElDRV9ERVZfSURfRTgyM0NfU0dNSUk6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTYxOTMtXHRcdCpwaW5fbnVtID0gSUNFX0U4MlhfUkNMS19QSU5TX05VTTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTYyMDMtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjA0Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjVDX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjIwNTpcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19RU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjA2Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjVDX1NGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjIwNzpcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19TR01JSTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNjIwOC1cdFx0KnBpbl9udW0gPSBJQ0VfU1lOQ0VfQ0xLX05VTTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jPTYyMzA9aW50IGljZV9jZ3VfZ2V0X291dHB1dF9waW5fc3RhdGVfY2FwcyhzdHJ1Y3QgaWNlX2h3ICpodywgdTggcGluX2lkLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNjIzNS1cdHN3aXRjaCAoaHctXHUwMDNlZGV2aWNlX2lkKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYyMzY6XHRjYXNlIElDRV9ERVZfSURfRTgxMENfU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy02MjM3LVx0XHRpZiAocGluX2lkID09IFpMX09VVDIgfHwgcGluX2lkID09IFpMX09VVDMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy02MjM5LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjI0MDpcdGNhc2UgSUNFX0RFVl9JRF9FODEwQ19RU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy02MjQxLVx0XHRpZiAocGluX2lkID09IFpMX09VVDIgfHwgcGluX2lkID09IFpMX09VVDMgfHwgcGluX2lkID09IFpMX09VVDQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy02MjQzLVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjI0NDpcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF8xMEdfQkFTRV9UOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjQ1Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMXzFHQkU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYyNDY6XHRjYXNlIElDRV9ERVZfSURfRTgyM0xfQkFDS1BMQU5FOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjQ3Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMX1FTRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYyNDg6XHRjYXNlIElDRV9ERVZfSURfRTgyM0xfU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjQ5Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDXzEwR19CQVNFX1Q6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYyNTA6XHRjYXNlIElDRV9ERVZfSURfRTgyM0NfQkFDS1BMQU5FOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjUxOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1FTRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYyNTI6XHRjYXNlIElDRV9ERVZfSURfRTgyM0NfU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjUzOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NHTUlJOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy02MjU0LVx0XHRpZiAoaHctXHUwMDNlY2d1X3BhcnRfbnVtYmVyID09XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE3OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDEyCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBpY2VgIERyaXZlciBhbmQgaXRzIEhhcmR3YXJlIERlcGVuZGVuY2llcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gRmlyc3QsIEkgbmVlZCB0byByZXZpc2l0IFNlY3Rpb24gMiBvZiB0aGUgaW5zdHJ1Y3Rpb25zLiBUaGUgYml0IGFib3V0ICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsg4oCTIHRoYXQmIzM5O3MgdGhlIGtleS4gU3BlY2lmaWNhbGx5LCB0aGUgbWVudGlvbiBvZiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBHUFUgZHJpdmVycyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBhbmQgYGFtZGdwdWAuIFRoZSBjcml0aWNhbCBwb2ludCBoZXJlIGlzIHRoYXQgdGhlc2UgcmVxdWlyZSBhY3R1YWwgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLCB3aGljaCBhcmVuJiMzOTt0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLgoKTm93LCBjb25zaWRlcmluZyB0aGUgYGljZWAgZHJpdmVyIOKAkyB0aGF0JiMzOTtzIHRoZSBkcml2ZXIgZm9yIEludGVsIEV0aGVybmV0IDgwMCBTZXJpZXMgY2FyZHMsIHRoaW5ncyBsaWtlIHRoZSBFODEwLCBFODIyLCBhbmQgdGhlIHJlc3QuIFRoZXNlIGFyZSBzZXJpb3VzLCBoaWdoLXBlcmZvcm1hbmNlIGVudGVycHJpc2UgRXRoZXJuZXQgUENJZSBjb250cm9sbGVycyDigJMgMTAwR2JFLCAyNUdiRSwgdGhhdCBzb3J0IG9mIHRoaW5nLiBUaGUgaW1wbGljYXRpb24gaXMsIHRoZXNlICpyZXF1aXJlKiBwaHlzaWNhbCBJbnRlbCBFODAwIHNlcmllcyBQQ0llIGhhcmR3YXJlLiBBbmQsIGFzIEkgc3VzcGVjdGVkLCBzdGFuZGFyZCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhvc2UsIG9ubHkgdGhlIG9sZGVyIGFuZCBsZXNzIHBlcmZvcm1hbnQgZTEwMDAsIGUxMDAwZSwgYW5kIGlnYiBkZXZpY2VzLgoKQnV0IGhvbGQgb24uIFRoaXMgYWx3YXlzIHByb21wdHMgdGhlIHF1ZXN0aW9uOiBJcyB0aGVyZSAqYW55KiBwb3NzaWJpbGl0eSBvZiBhIHZpcnR1YWwgb3IgYXV4aWxpYXJ5IGRldmljZSBiaW5kaW5nICp3aXRob3V0KiBwaHlzaWNhbCBoYXJkd2FyZT8gQSBsb25nIHNob3QsIGJ1dCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIEkgc2hvdWxkIGNoZWNrIGhvdyBgaWNlX3Byb2JlYCB3b3Jrcy4gQ2FuIGl0IGJlIHByb2JlZCB3aXRob3V0IGEgcmVhbCBQQ0kgZGV2aWNlPyBUaGUgbG9naWMgaXMgdGhhdCBgaWNlX3Byb2JlYCBpcyB0cmlnZ2VyZWQgYnkgdGhlIFBDSSBjb3JlIHdoZW5ldmVyIGl0IGZpbmRzIGEgbWF0Y2hpbmcgUENJIHZlbmRvciBhbmQgZGV2aWNlIElELiBUaGVyZWZvcmUsIEkgbmVlZCB0byBjaGVjayBgaWNlX3Byb2JlYCBmb3IgbW9yZSBpbnNpZ2h0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTE2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs1MTYwOlx0ICpcbjUxNjE6XHQgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgb24gZmFpbHVyZVxuNTE2MjpcdCAqL1xuNTE2MzpcdHN0YXRpYyBpbnRcbjUxNjQ6XHRpY2VfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIF9fYWx3YXlzX3VudXNlZCAqZW50KVxuNTE2NTpcdHtcbjUxNjY6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuNTE2NzpcdFx0Ym9vbCBuZWVkX2Rldl9kZWluaXQgPSBmYWxzZTtcbjUxNjg6XHRcdHN0cnVjdCBpY2VfYWRhcHRlciAqYWRhcHRlcjtcbjUxNjk6XHRcdHN0cnVjdCBpY2VfcGYgKnBmO1xuNTE3MDpcdFx0c3RydWN0IGljZV9odyAqaHc7XG41MTcxOlx0XHRpbnQgZXJyO1xuNTE3MjpcdFxuNTE3MzpcdFx0aWYgKHBkZXYtXHUwMDNlaXNfdmlydGZuKSB7XG41MTc0Olx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtjYW4mIzM5O3QgcHJvYmUgYSB2aXJ0dWFsIGZ1bmN0aW9uXFxuXCYjMzQ7KTtcbjUxNzU6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG41MTc2Olx0XHR9XG41MTc3Olx0XG41MTc4Olx0XHQvKiB3aGVuIHVuZGVyIGEga2R1bXAga2VybmVsIGluaXRpYXRlIGEgcmVzZXQgYmVmb3JlIGVuYWJsaW5nIHRoZVxuNTE3OTpcdFx0ICogZGV2aWNlIGluIG9yZGVyIHRvIGNsZWFyIG91dCBhbnkgcGVuZGluZyBETUEgdHJhbnNhY3Rpb25zLiBUaGVzZVxuNTE4MDpcdFx0ICogdHJhbnNhY3Rpb25zIGNhbiBjYXVzZSBzb21lIHN5c3RlbXMgdG8gbWFjaGluZSBjaGVjayB3aGVuIGRvaW5nXG41MTgxOlx0XHQgKiB0aGUgcGNpbV9lbmFibGVfZGV2aWNlKCkgYmVsb3cuXG41MTgyOlx0XHQgKi9cbjUxODM6XHRcdGlmIChpc19rZHVtcF9rZXJuZWwoKSkge1xuNTE4NDpcdFx0XHRwY2lfc2F2ZV9zdGF0ZShwZGV2KTtcbjUxODU6XHRcdFx0cGNpX2NsZWFyX21hc3RlcihwZGV2KTtcbjUxODY6XHRcdFx0ZXJyID0gcGNpZV9mbHIocGRldik7XG41MTg3Olx0XHRcdGlmIChlcnIpXG41MTg4Olx0XHRcdFx0cmV0dXJuIGVycjtcbjUxODk6XHRcdFx0cGNpX3Jlc3RvcmVfc3RhdGUocGRldik7XG41MTkwOlx0XHR9XG41MTkxOlx0XG41MTkyOlx0XHQvKiB0aGlzIGRyaXZlciB1c2VzIGRldnJlcywgc2VlXG41MTkzOlx0XHQgKiBEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3RcbjUxOTQ6XHRcdCAqL1xuNTE5NTpcdFx0ZXJyID0gcGNpbV9lbmFibGVfZGV2aWNlKHBkZXYpO1xuNTE5NjpcdFx0aWYgKGVycilcbjUxOTc6XHRcdFx0cmV0dXJuIGVycjtcbjUxOTg6XHRcbjUxOTk6XHRcdGVyciA9IHBjaW1faW9tYXBfcmVnaW9ucyhwZGV2LCBCSVQoSUNFX0JBUjApLCBkZXZfZHJpdmVyX3N0cmluZyhkZXYpKTtcbjUyMDA6XHRcdGlmIChlcnIpIHtcbjUyMDE6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0JBUjAgSS9PIG1hcCBlcnJvciAlZFxcblwmIzM0OywgZXJyKTtcbjUyMDI6XHRcdFx0cmV0dXJuIGVycjtcbjUyMDM6XHRcdH1cbjUyMDQ6XHRcbjUyMDU6XHRcdHBmID0gaWNlX2FsbG9jYXRlX3BmKGRldik7XG41MjA2Olx0XHRpZiAoIXBmKVxuNTIwNzpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbjUyMDg6XHRcbjUyMDk6XHRcdC8qIGluaXRpYWxpemUgQXV4aWxpYXJ5IGluZGV4IHRvIGludmFsaWQgdmFsdWUgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTc6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI0MTIKCQkJCQkJCW91dHB1dDogMTEwCgkJCQkJCQl0aG91Z2h0czogNzM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBQYXRjaCYjMzk7cyBGdXp6aW5nIFdvcnRoaW5lc3MqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBleHBsaWNpdGx5IHRhcmdldHMgdGhlIEludGVsIEU4MDAgc2VyaWVzIE5JQ3MsIHNwZWNpZmljYWxseSBieSB0b3VjaGluZyB0aGUgYGljZWAgZHJpdmVyIGZpbGVzOiBgaWNlX2NvbW1vbi5jYCBhbmQgYGljZV9ldGh0b29sLmNgLiAgSSBrbm93IHRoZSBgaWNlYCBkcml2ZXIuIEl0JiMzOTtzIHRoZSBvbmUgZm9yIHRob3NlIEludGVsIEV0aGVybmV0IDgwMCBTZXJpZXMgZGV2aWNlcy4gQW5kIEkgc2VlIG1vZGlmaWNhdGlvbnMgdG8gZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcG9ydCBjYXBhYmlsaXRpZXMgKGBpY2VfcmVjYWxjX3BvcnRfbGltaXRlZF9jYXBzYCkgYW5kIGV0aHRvb2wgc2V0dGluZ3MgKGBpY2VfZ2V0X2xpbmtfa3NldHRpbmdzYCwgYGljZV9hdXRvbmVnX2Rpc2FibGVfYWxsb3dlZGAsIGBpY2Vfc2V0dXBfYXV0b25lZ2ApLgoKQ3J1Y2lhbGx5LCB0aGUgY29kZSByZWZlcmVuY2VzIHRoZSBgSUNFX01BQ19FODMwYCB3aGljaCBjb25maXJtcyB0aGUgZm9jdXMgb24gdGhhdCBmYW1pbHkgb2YgaGFyZHdhcmUuICBUaGlzIGlzbiYjMzk7dCBnZW5lcmFsIEV0aGVybmV0OyB0aGlzIGlzIHNwZWNpYWxpemVkIGhhcmR3YXJlLgoKTm93LCB0aGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIGNhbiBiZSByZWFjaGVkIGluIGEgdHlwaWNhbCBmdXp6aW5nIHNldHVwLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbGlrZSBRRU1VIGFuZCBHQ0UsIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25zICpjYW5ub3QqIGVtdWxhdGUgdGhpcyB0eXBlIG9mIHBoeXNpY2FsLCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZS4gIFRoZSBkb2N1bWVudGF0aW9uIGV4cGxpY2l0bHkgc3RhdGVzIHRoaXMgbGltaXRhdGlvbjogIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIGFyZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gdGhvc2UgZW52aXJvbm1lbnRzLiAgVGhlIGBpY2VgIGRyaXZlciBkZWZpbml0ZWx5IGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeS4KCkkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHN5emthbGxlciAqY2Fubm90KiBmdXp6IHRoZSBgaWNlYCBkcml2ZXIgdW5sZXNzIGEgcmVhbCBJbnRlbCBFODAwIFBDSWUgZGV2aWNlIGlzIHByZXNlbnQgb3IgZW11bGF0ZWQsIHdoaWNoIHdlIGtub3cgaXNuJiMzOTt0IHRoZSBjYXNlIGluIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25zLgoKVGhlcmVmb3JlLCBhcHBseWluZyB0aGUgdGVzdCBjb25kaXRpb25zLCB0aGlzIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIHdpdGhpbiB0aGUgY29udGV4dCBvZiBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50cy4gVGhlIGluc3RydWN0aW9ucyBhcmUgY2xlYXI7IGlmIHRoZSBjb2RlIGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeSwgd2Ugc2V0IGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuIFNvLCBJJiMzOTtsbCBzZXQgYFdvcnRoRnV6emluZyA9IGZhbHNlYCwgYEZvY3VzU3ltYm9scyA9IFtdYCwgYW5kIGBFbmFibGVDb25maWdzID0gW11gLiBJJiMzOTtsbCBhbHNvIHByb3ZpZGUgYSBjb25jaXNlIHJlYXNvbmluZzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEV0aGVybmV0IDgwMCBTZXJpZXMgKGljZSkgbmV0d29yayBkcml2ZXIgKGljZV9jb21tb24uYyBhbmQgaWNlX2V0aHRvb2wuYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIChJbnRlbCBFODAwIHNlcmllcyBOSUNzKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBFdGhlcm5ldCA4MDAgU2VyaWVzIChpY2UpIGRyaXZlciAoaWNlX2NvbW1vbi5jIGFuZCBpY2VfZXRodG9vbC5jKS4gVGhpcyBkcml2ZXIgZHJpdmVzIHBoeXNpY2FsIEludGVsIEU4MDAgc2VyaWVzIFBDSWUgbmV0d29yayBhZGFwdGVycywgd2hpY2ggcmVxdWlyZSBzcGVjaWFsaXplZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4sIFFFTVUpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBFdGhlcm5ldCA4MDAgU2VyaWVzIChpY2UpIGRyaXZlciAoaWNlX2NvbW1vbi5jIGFuZCBpY2VfZXRodG9vbC5jKS4gVGhpcyBkcml2ZXIgZHJpdmVzIHBoeXNpY2FsIEludGVsIEU4MDAgc2VyaWVzIFBDSWUgbmV0d29yayBhZGFwdGVycywgd2hpY2ggcmVxdWlyZSBzcGVjaWFsaXplZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4sIFFFTVUpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE3OjI5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNzoyODo1OC41Mzk1ODc4MzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDE3NTE0NTA4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBFdGhlcm5ldCA4MDAgU2VyaWVzIChpY2UpIGRyaXZlciAoaWNlX2NvbW1vbi5jIGFuZCBpY2VfZXRodG9vbC5jKS4gVGhpcyBkcml2ZXIgZHJpdmVzIHBoeXNpY2FsIEludGVsIEU4MDAgc2VyaWVzIFBDSWUgbmV0d29yayBhZGFwdGVycywgd2hpY2ggcmVxdWlyZSBzcGVjaWFsaXplZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4sIFFFTVUpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE3OjI4OjU4LjUzOTU5Mjg2OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI1MTQ3MTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmVjM2JkY2I1YTQ3YjFiOGZhYmEzMmNkODIyMWNkOTUwOTFiNjM0MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIFNlcCAxNSAxNzoyODo1NyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uY1xcbmluZGV4IGVmMWNlMTA2ZjgxYjUuLmQ1MzMwN2IxNjhlMmIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcXG5AQCAtMjUwNyw3ICsyNTA3LDcgQEAgaWNlX3JlY2FsY19wb3J0X2xpbWl0ZWRfY2FwcyhzdHJ1Y3QgaWNlX2h3ICpodywgc3RydWN0IGljZV9od19jb21tb25fY2FwcyAqY2FwcylcXG4gXFx0XFx0Y2Fwcy1cXHUwMDNlbWF4dGMgPSA0O1xcbiBcXHRcXHRpY2VfZGVidWcoaHcsIElDRV9EQkdfSU5JVCwgXFxcInJlZHVjaW5nIG1heHRjIHRvICVkIChiYXNlZCBvbiAjcG9ydHMpXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHQgIGNhcHMtXFx1MDAzZW1heHRjKTtcXG4tXFx0XFx0aWYgKGNhcHMtXFx1MDAzZXJkbWEpIHtcXG4rXFx0XFx0aWYgKGNhcHMtXFx1MDAzZXJkbWEgXFx1MDAyNlxcdTAwMjYgaHctXFx1MDAzZW1hY190eXBlICE9IElDRV9NQUNfRTgzMCkge1xcbiBcXHRcXHRcXHRpY2VfZGVidWcoaHcsIElDRV9EQkdfSU5JVCwgXFxcImZvcmNpbmcgUkRNQSBvZmZcXFxcblxcXCIpO1xcbiBcXHRcXHRcXHRjYXBzLVxcdTAwM2VyZG1hID0gMDtcXG4gXFx0XFx0fVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXFxuaW5kZXggYmY5YTgyMWM1NDNiNy4uNGNlMTk4ZjZhMWI1NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXFxuQEAgLTIzNjUsOCArMjM2NSw5IEBAIGljZV9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFxuLVxcdC8qIGZsb3cgY29udHJvbCBpcyBzeW1tZXRyaWMgYW5kIGFsd2F5cyBzdXBwb3J0ZWQgKi9cXG4rXFx0LyogZmxvdyBjb250cm9sIGlzIHN5bW1ldHJpYyBvciBhc3ltbWV0cmljIGFuZCBhbHdheXMgc3VwcG9ydGVkICovXFxuIFxcdGV0aHRvb2xfbGlua19rc2V0dGluZ3NfYWRkX2xpbmtfbW9kZShrcywgc3VwcG9ydGVkLCBQYXVzZSk7XFxuK1xcdGV0aHRvb2xfbGlua19rc2V0dGluZ3NfYWRkX2xpbmtfbW9kZShrcywgc3VwcG9ydGVkLCBBc3ltX1BhdXNlKTtcXG4gXFxuIFxcdGNhcHMgPSBremFsbG9jX29iaigqY2Fwcyk7XFxuIFxcdGlmICghY2FwcylcXG5AQCAtMjUwMCw2ICsyNTAxLDI4IEBAIGljZV9rc2V0dGluZ3NfZmluZF9hZHZfbGlua19zcGVlZChjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3MpXFxuIFxcdHJldHVybiBhZHZfbGlua19zcGVlZDtcXG4gfVxcbiBcXG4rLyoqXFxuKyAqIGljZV9hdXRvbmVnX2Rpc2FibGVfYWxsb3dlZCAtIGNoZWNrIGlmIGF1dG9uZWcgY2FuIGJlIGRpc2FibGVkXFxuKyAqIEBwOiBwb3J0IGluZm9cXG4rICpcXG4rICogQ2hlY2sgaWYgYXV0b25lZ290aWF0aW9uIGNhbiBiZSBkaXNhYmxlZCBiYXNlZCBvbiBsaW5rIHN0YXRlLlxcbisgKiBJQ0VfQVFfTFBfQU5fQUJJTElUWSBpcyBvbmx5IHZhbGlkIHdoZW4gdGhlIGxpbmsgaXMgdXA7IGdhdGUgdGhhdFxcbisgKiBjaGVjayBhY2NvcmRpbmdseSB0byBhdm9pZCBmYWxzZSBwb3NpdGl2ZXMgZnJvbSBzdGFsZSBsaW5rIGRhdGEuXFxuKyAqXFxuKyAqIFJldHVybjogdHJ1ZSBpZiBhdXRvbmVnIGhhcyBjb21wbGV0ZWQsIG9yIGlmIHRoZSBsaW5rIGlzIHVwIGFuZCB0aGVcXG4rICogICAgICAgICBsaW5rIHBhcnRuZXIgZG9lcyBub3QgYWR2ZXJ0aXNlIGF1dG9uZWdvdGlhdGlvbiBjYXBhYmlsaXR5LlxcbisgKi9cXG4rc3RhdGljIGJvb2wgaWNlX2F1dG9uZWdfZGlzYWJsZV9hbGxvd2VkKHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwKVxcbit7XFxuK1xcdHU4IGFuX2luZm8gPSBwLVxcdTAwM2VwaHkubGlua19pbmZvLmFuX2luZm87XFxuK1xcbitcXHRpZiAoYW5faW5mbyBcXHUwMDI2IElDRV9BUV9BTl9DT01QTEVURUQpXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXHQvKiBJQ0VfQVFfTFBfQU5fQUJJTElUWSBpcyBvbmx5IHZhbGlkIHdoZW4gbGluayBpcyB1cCAqL1xcbitcXHRyZXR1cm4gKHAtXFx1MDAzZXBoeS5saW5rX2luZm8ubGlua19pbmZvIFxcdTAwMjYgSUNFX0FRX0xJTktfVVApIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAgICAhKGFuX2luZm8gXFx1MDAyNiBJQ0VfQVFfTFBfQU5fQUJJTElUWSk7XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBpY2Vfc2V0dXBfYXV0b25lZ1xcbiAgKiBAcDogcG9ydCBpbmZvXFxuQEAgLTI1MzgsOCArMjU2MSw4IEBAIGljZV9zZXR1cF9hdXRvbmVnKHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwLCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3MsXFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbiBcXHR9IGVsc2Uge1xcbi1cXHRcXHQvKiBJZiBhdXRvbmVnIGlzIGN1cnJlbnRseSBlbmFibGVkICovXFxuLVxcdFxcdGlmIChwLVxcdTAwM2VwaHkubGlua19pbmZvLmFuX2luZm8gXFx1MDAyNiBJQ0VfQVFfQU5fQ09NUExFVEVEKSB7XFxuK1xcdFxcdC8qIElmIGF1dG9uZWcgY29tcGxldGVkIG9yIGxpbmsgcGFydG5lciBkb2VzIG5vdCBzdXBwb3J0IEFOICovXFxuK1xcdFxcdGlmIChpY2VfYXV0b25lZ19kaXNhYmxlX2FsbG93ZWQocCkpIHtcXG4gXFx0XFx0XFx0LyogSWYgYXV0b25lZyBpcyBzdXBwb3J0ZWQgMTBHQkFTRV9UIGlzIHRoZSBvbmx5IFBIWVxcbiBcXHRcXHRcXHQgKiB0aGF0IGNhbiBkaXNhYmxlIGl0LCBzbyBvdGhlcndpc2UgcmV0dXJuIGVycm9yXFxuIFxcdFxcdFxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNzoyODo1OS4wNjU2NDAyOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6Mjk2NDkwNzg0MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBFdGhlcm5ldCA4MDAgU2VyaWVzIChpY2UpIGRyaXZlciAoaWNlX2NvbW1vbi5jIGFuZCBpY2VfZXRodG9vbC5jKS4gVGhpcyBkcml2ZXIgZHJpdmVzIHBoeXNpY2FsIEludGVsIEU4MDAgc2VyaWVzIFBDSWUgbmV0d29yayBhZGFwdGVycywgd2hpY2ggcmVxdWlyZSBzcGVjaWFsaXplZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4sIFFFTVUpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmVjM2JkY2I1YTQ3YjFiOGZhYmEzMmNkODIyMWNkOTUwOTFiNjM0MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDE1IDE3OjI4OjU3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcbmluZGV4IGVmMWNlMTA2ZjgxYjUuLmQ1MzMwN2IxNjhlMmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jXG5AQCAtMjUwNyw3ICsyNTA3LDcgQEAgaWNlX3JlY2FsY19wb3J0X2xpbWl0ZWRfY2FwcyhzdHJ1Y3QgaWNlX2h3ICpodywgc3RydWN0IGljZV9od19jb21tb25fY2FwcyAqY2FwcylcbiBcdFx0Y2Fwcy1cdTAwM2VtYXh0YyA9IDQ7XG4gXHRcdGljZV9kZWJ1ZyhodywgSUNFX0RCR19JTklULCBcInJlZHVjaW5nIG1heHRjIHRvICVkIChiYXNlZCBvbiAjcG9ydHMpXFxuXCIsXG4gXHRcdFx0ICBjYXBzLVx1MDAzZW1heHRjKTtcbi1cdFx0aWYgKGNhcHMtXHUwMDNlcmRtYSkge1xuK1x0XHRpZiAoY2Fwcy1cdTAwM2VyZG1hIFx1MDAyNlx1MDAyNiBody1cdTAwM2VtYWNfdHlwZSAhPSBJQ0VfTUFDX0U4MzApIHtcbiBcdFx0XHRpY2VfZGVidWcoaHcsIElDRV9EQkdfSU5JVCwgXCJmb3JjaW5nIFJETUEgb2ZmXFxuXCIpO1xuIFx0XHRcdGNhcHMtXHUwMDNlcmRtYSA9IDA7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXG5pbmRleCBiZjlhODIxYzU0M2I3Li40Y2UxOThmNmExYjU0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXG5AQCAtMjM2NSw4ICsyMzY1LDkgQEAgaWNlX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRicmVhaztcbiBcdH1cbiBcbi1cdC8qIGZsb3cgY29udHJvbCBpcyBzeW1tZXRyaWMgYW5kIGFsd2F5cyBzdXBwb3J0ZWQgKi9cbitcdC8qIGZsb3cgY29udHJvbCBpcyBzeW1tZXRyaWMgb3IgYXN5bW1ldHJpYyBhbmQgYWx3YXlzIHN1cHBvcnRlZCAqL1xuIFx0ZXRodG9vbF9saW5rX2tzZXR0aW5nc19hZGRfbGlua19tb2RlKGtzLCBzdXBwb3J0ZWQsIFBhdXNlKTtcbitcdGV0aHRvb2xfbGlua19rc2V0dGluZ3NfYWRkX2xpbmtfbW9kZShrcywgc3VwcG9ydGVkLCBBc3ltX1BhdXNlKTtcbiBcbiBcdGNhcHMgPSBremFsbG9jX29iaigqY2Fwcyk7XG4gXHRpZiAoIWNhcHMpXG5AQCAtMjUwMCw2ICsyNTAxLDI4IEBAIGljZV9rc2V0dGluZ3NfZmluZF9hZHZfbGlua19zcGVlZChjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3MpXG4gXHRyZXR1cm4gYWR2X2xpbmtfc3BlZWQ7XG4gfVxuIFxuKy8qKlxuKyAqIGljZV9hdXRvbmVnX2Rpc2FibGVfYWxsb3dlZCAtIGNoZWNrIGlmIGF1dG9uZWcgY2FuIGJlIGRpc2FibGVkXG4rICogQHA6IHBvcnQgaW5mb1xuKyAqXG4rICogQ2hlY2sgaWYgYXV0b25lZ290aWF0aW9uIGNhbiBiZSBkaXNhYmxlZCBiYXNlZCBvbiBsaW5rIHN0YXRlLlxuKyAqIElDRV9BUV9MUF9BTl9BQklMSVRZIGlzIG9ubHkgdmFsaWQgd2hlbiB0aGUgbGluayBpcyB1cDsgZ2F0ZSB0aGF0XG4rICogY2hlY2sgYWNjb3JkaW5nbHkgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzIGZyb20gc3RhbGUgbGluayBkYXRhLlxuKyAqXG4rICogUmV0dXJuOiB0cnVlIGlmIGF1dG9uZWcgaGFzIGNvbXBsZXRlZCwgb3IgaWYgdGhlIGxpbmsgaXMgdXAgYW5kIHRoZVxuKyAqICAgICAgICAgbGluayBwYXJ0bmVyIGRvZXMgbm90IGFkdmVydGlzZSBhdXRvbmVnb3RpYXRpb24gY2FwYWJpbGl0eS5cbisgKi9cbitzdGF0aWMgYm9vbCBpY2VfYXV0b25lZ19kaXNhYmxlX2FsbG93ZWQoc3RydWN0IGljZV9wb3J0X2luZm8gKnApXG4re1xuK1x0dTggYW5faW5mbyA9IHAtXHUwMDNlcGh5LmxpbmtfaW5mby5hbl9pbmZvO1xuK1xuK1x0aWYgKGFuX2luZm8gXHUwMDI2IElDRV9BUV9BTl9DT01QTEVURUQpXG4rXHRcdHJldHVybiB0cnVlO1xuK1x0LyogSUNFX0FRX0xQX0FOX0FCSUxJVFkgaXMgb25seSB2YWxpZCB3aGVuIGxpbmsgaXMgdXAgKi9cbitcdHJldHVybiAocC1cdTAwM2VwaHkubGlua19pbmZvLmxpbmtfaW5mbyBcdTAwMjYgSUNFX0FRX0xJTktfVVApIFx1MDAyNlx1MDAyNlxuK1x0ICAgICAgICEoYW5faW5mbyBcdTAwMjYgSUNFX0FRX0xQX0FOX0FCSUxJVFkpO1xuK31cbitcbiAvKipcbiAgKiBpY2Vfc2V0dXBfYXV0b25lZ1xuICAqIEBwOiBwb3J0IGluZm9cbkBAIC0yNTM4LDggKzI1NjEsOCBAQCBpY2Vfc2V0dXBfYXV0b25lZyhzdHJ1Y3QgaWNlX3BvcnRfaW5mbyAqcCwgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmtzLFxuIFx0XHRcdH1cbiBcdFx0fVxuIFx0fSBlbHNlIHtcbi1cdFx0LyogSWYgYXV0b25lZyBpcyBjdXJyZW50bHkgZW5hYmxlZCAqL1xuLVx0XHRpZiAocC1cdTAwM2VwaHkubGlua19pbmZvLmFuX2luZm8gXHUwMDI2IElDRV9BUV9BTl9DT01QTEVURUQpIHtcbitcdFx0LyogSWYgYXV0b25lZyBjb21wbGV0ZWQgb3IgbGluayBwYXJ0bmVyIGRvZXMgbm90IHN1cHBvcnQgQU4gKi9cbitcdFx0aWYgKGljZV9hdXRvbmVnX2Rpc2FibGVfYWxsb3dlZChwKSkge1xuIFx0XHRcdC8qIElmIGF1dG9uZWcgaXMgc3VwcG9ydGVkIDEwR0JBU0VfVCBpcyB0aGUgb25seSBQSFlcbiBcdFx0XHQgKiB0aGF0IGNhbiBkaXNhYmxlIGl0LCBzbyBvdGhlcndpc2UgcmV0dXJuIGVycm9yXG4gXHRcdFx0ICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNzoyODo1OS4wNjU2NDMyMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjgwNTg4NTU4NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXZhbHVhdGluZyB0aGUgS2VybmVsIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGFza2VkIHRvIGFzc2VzcyB0aGlzIHBhdGNoLiBUaGUgY29tbWl0IGRpZmYgc3BlY2lmaWNhbGx5IHRvdWNoZXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNgIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNgLiAgQmVmb3JlIEkgZGl2ZSB0b28gZGVlcCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIG1lZXRzIHRoZSBjcml0ZXJpYSBmb3IgZnV6emluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIHNvbWUgb2JzY3VyZSByZWFzb24gdG8gYXZvaWQgZnV6emluZy5cblxuTXkgcHJpbWFyeSBydWxlIGlzLCBJIHNob3VsZCBvbmx5ICpub3QqIGZ1enogaWYgYWxsIHRoZSBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gYSB2ZXJ5IHNwZWNpZmljIHNldCBvZiBjYXRlZ29yaWVzLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBpZiB0aGlzIGZhbGxzIHVuZGVyIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLlwiIFRoYXQgY2F0ZWdvcnkgaW5jbHVkZXMgdGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgdGhhdCByZXF1aXJlIHNwZWNpZmljLCBwaHlzaWNhbCBoYXJkd2FyZSwgdGhhdCBhcmVuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cblxuQWxyaWdodCwgc28gd2hhdCBpcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlYD8gIEFoLCByaWdodCEgVGhhdCdzIHRoZSBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MDAgU2VyaWVzIExpbnV4IERyaXZlciwgdGhlIGBpY2VgIGRyaXZlci4gT2theSwgc28gbm93IHRoZSBrZXkgcXVlc3Rpb246IElzIHRoZSBJbnRlbCBFODAwIHNlcmllcyBQQ0llIE5JQyBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT9cblxuTm8uIFRoZSBJbnRlbCBJQ0UgZHJpdmVyIGlzIGZvciBwaHlzaWNhbCBJbnRlbCA4MDAgU2VyaWVzIChFODEwIC8gRTgzMCAvIGV0Yy4pIFBDSWUgMTAwR2JFIC8gMjVHYkUgbmV0d29yayBhZGFwdGVycy4gVGhhdCBtYWtlcyBtZSBuZXJ2b3VzLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGBpY2VgICpyZXF1aXJlcyogcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLCBvciBpZiB0aGVyZSBpcyBzb21lIGVtdWxhdGlvbiwgc29mdHdhcmUgbW9ja3MsIG9yIHZpcnR1YWwgYnVzIGFic3RyYWN0aW9uLlxuXG5Eb2VzIFFFTVUgZXZlbiBlbXVsYXRlIHRoZSBJbnRlbCBFODAwIHNlcmllcz8gTm8uIFFFTVUgZW11bGF0ZXMgZTEwMDAsIGUxMDAwZSwgYW5kIGlnYiwgYnV0IG5vdCBpY2UuIEkgbmVlZCB0byBiZSBzdXJlIHRob3VnaC4gRG9lcyBgaWNlYCBzdXBwb3J0IG5ldGtpdC9uZXRkZXZzaW0gb3IgYW55dGhpbmcgdmlydHVhbD8gTm8sIGEgcXVpY2sgY2hlY2sgb2YgdGhlIGNvZGUgY29uZmlybXMgaXQgaXMgYSBQQ0kgZHJpdmVyIChgaWNlX2RyaXZlcmAgaXMgcmVnaXN0ZXJlZCB3aXRoIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCkuIFRvIGJlIGV4dHJhIGNlcnRhaW4gSSBzaG91bGQgcmV2aWV3IHRoZSBjb2RlIG1vcmUgY2xvc2VseSBvciBzZWFyY2ggZm9yIGBpY2VgIHJlZmVyZW5jZXMgaW4gdGhlIGtlcm5lbCB0cmVlLiBPa2F5LCBpdCdzIHZlcnkgbGlrZWx5IHRoaXMgd29uJ3QgYmUgZnV6emFibGUgZGlyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MjUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNzoyOTowNy4xMjQ1MDExODdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjkzMTAzODA1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGNpX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE3OjI5OjA3LjQxNzYxNDE4MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE4NjgzMTQ1MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBJbnRlbCBJQ0UgRXRoZXJuZXQgRHJpdmVyKipcblxuT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGBwY2lfZHJpdmVyYCBzdHJ1Y3R1cmUgcmVsYXRlZCB0byB0aGUgSW50ZWwgSUNFIEV0aGVybmV0IGRyaXZlci4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIGtub3cgdGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBkZWJ1Z2dpbmcgYXBwcm9hY2guIFRoZSBwcm9tcHQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50OiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlYC4gVGhhdCdzIHByZWNpc2VseSB3aGVyZSBJJ2QgZXhwZWN0IHRvIGZpbmQgdGhlIHJlbGV2YW50IGNvZGUuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaG93IHRoZSBkcml2ZXIgcmVnaXN0ZXJzIGl0c2VsZiB3aXRoIHRoZSBQQ0kgc3Vic3lzdGVtLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBob3cgdGhlIGRyaXZlcidzIHByb2JlZCBhbmQgd2hhdCBzdHJ1Y3R1cmVzIGl0J3MgYnVpbHQgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NTgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNzoyOTowOS4yODU5MzE5MTJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA1Nzk0NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IHBjaV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jPTU4NTA9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgaWNlX3BjaV9lcnJfaGFuZGxlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTU4NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTg1ODpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaWNlX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy01ODU5LVxcdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE3OjI5OjA5LjMzNjUxOTEyMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI3NjgxNzUxNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYGljZV9kcml2ZXJgIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIEludGVsIEV0aGVybmV0IGBpY2VgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgaWNlX21haW4uY2AgZmlsZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGlzIGRyaXZlciBpcyBpbml0aWFsaXplZCBhbmQgaG93IGl0IGludGVncmF0ZXMgaW50byB0aGUgb3ZlcmFsbCBuZXR3b3JrIHN0YWNrLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGBpY2VfZHJpdmVyYCBzdHJ1Y3R1cmUuIEknbSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIGNvZGUuIExldCdzIHNlZS4uLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgdGFraW5nIGEgbG9vayBhcm91bmQgbGluZSA1ODU4IGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGVudHJ5IHBvaW50IHRvIHVuZGVyc3RhbmQgdGhlIGRyaXZlcidzIHNldHVwIHNlcXVlbmNlIGFuZCBzZWUgaG93IGBpY2VfZHJpdmVyYCBpcyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgbGFyZ2VyIGNvbnRleHQuIEknbSBsb29raW5nIGZvciB0aGUgY29yZSBpbml0aWFsaXphdGlvbiBmbG93LCBhbnkgYXNzb2NpYXRlZCBjYWxsYmFja3MsIGFuZCB0aGUgcmVsYXRpb25zaGlwIHRvIG90aGVyIHJlbGV2YW50IGRhdGEgc3RydWN0dXJlcy4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMDEsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNzoyOToxMi4xMDQ2OTc5NDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDUyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTg1NSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNTg1NTpcXHRcXHQucmVzdW1lID0gaWNlX3BjaV9lcnJfcmVzdW1lXFxuNTg1NjpcXHR9O1xcbjU4NTc6XFx0XFxuNTg1ODpcXHRzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaWNlX2RyaXZlciA9IHtcXG41ODU5OlxcdFxcdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXFxuNTg2MDpcXHRcXHQuaWRfdGFibGUgPSBpY2VfcGNpX3RibCxcXG41ODYxOlxcdFxcdC5wcm9iZSA9IGljZV9wcm9iZSxcXG41ODYyOlxcdFxcdC5yZW1vdmUgPSBpY2VfcmVtb3ZlLFxcbjU4NjM6XFx0XFx0LmRyaXZlci5wbSA9IHBtX3NsZWVwX3B0cihcXHUwMDI2aWNlX3BtX29wcyksXFxuNTg2NDpcXHRcXHQuc2h1dGRvd24gPSBpY2Vfc2h1dGRvd24sXFxuNTg2NTpcXHRcXHQuc3Jpb3ZfY29uZmlndXJlID0gaWNlX3NyaW92X2NvbmZpZ3VyZSxcXG41ODY2OlxcdFxcdC5zcmlvdl9nZXRfdmZfdG90YWxfbXNpeCA9IGljZV9zcmlvdl9nZXRfdmZfdG90YWxfbXNpeCxcXG41ODY3OlxcdFxcdC5zcmlvdl9zZXRfbXNpeF92ZWNfY291bnQgPSBpY2Vfc3Jpb3Zfc2V0X21zaXhfdmVjX2NvdW50LFxcbjU4Njg6XFx0XFx0LmVycl9oYW5kbGVyID0gXFx1MDAyNmljZV9wY2lfZXJyX2hhbmRsZXJcXG41ODY5OlxcdH07XFxuNTg3MDpcXHRcXG41ODcxOlxcdC8qKlxcbjU4NzI6XFx0ICogaWNlX21vZHVsZV9pbml0IC0gRHJpdmVyIHJlZ2lzdHJhdGlvbiByb3V0aW5lXFxuNTg3MzpcXHQgKlxcbjU4NzQ6XFx0ICogaWNlX21vZHVsZV9pbml0IGlzIHRoZSBmaXJzdCByb3V0aW5lIGNhbGxlZCB3aGVuIHRoZSBkcml2ZXIgaXNcXG41ODc1OlxcdCAqIGxvYWRlZC4gQWxsIGl0IGRvZXMgaXMgcmVnaXN0ZXIgd2l0aCB0aGUgUENJIHN1YnN5c3RlbS5cXG41ODc2OlxcdCAqL1xcbjU4Nzc6XFx0c3RhdGljIGludCBfX2luaXQgaWNlX21vZHVsZV9pbml0KHZvaWQpXFxuNTg3ODpcXHR7XFxuNTg3OTpcXHRcXHRpbnQgc3RhdHVzID0gLUVOT01FTTtcXG41ODgwOlxcdFxcbjU4ODE6XFx0XFx0cHJfaW5mbyhcXFwiJXNcXFxcblxcXCIsIGljZV9kcml2ZXJfc3RyaW5nKTtcXG41ODgyOlxcdFxcdHByX2luZm8oXFxcIiVzXFxcXG5cXFwiLCBpY2VfY29weXJpZ2h0KTtcXG41ODgzOlxcdFxcbjU4ODQ6XFx0XFx0aWNlX2Fkdl9sbmtfc3BlZWRfbWFwc19pbml0KCk7XFxuNTg4NTpcXHRcXG41ODg2OlxcdFxcdGljZV93cSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwiJXNcXFwiLCBXUV9VTkJPVU5ELCAwLCBLQlVJTERfTU9ETkFNRSk7XFxuNTg4NzpcXHRcXHRpZiAoIWljZV93cSkge1xcbjU4ODg6XFx0XFx0XFx0cHJfZXJyKFxcXCJGYWlsZWQgdG8gY3JlYXRlIHdvcmtxdWV1ZVxcXFxuXFxcIik7XFxuNTg4OTpcXHRcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbjU4OTA6XFx0XFx0fVxcbjU4OTE6XFx0XFxuNTg5MjpcXHRcXHRpY2VfbGFnX3dxID0gYWxsb2Nfb3JkZXJlZF93b3JrcXVldWUoXFxcImljZV9sYWdfd3FcXFwiLCAwKTtcXG41ODkzOlxcdFxcdGlmICghaWNlX2xhZ193cSkge1xcbjU4OTQ6XFx0XFx0XFx0cHJfZXJyKFxcXCJGYWlsZWQgdG8gY3JlYXRlIExBRyB3b3JrcXVldWVcXFxcblxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNzoyOToxMi4xMDUxMDUxMDZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMTM2NzYyMTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50OlxuXG4qKkV4YW1pbmluZyB0aGUgRGV2aWNlIEJpbmRpbmcgVGFibGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHNwZWNpZmljIGRldmljZXMgdGhpcyBgaWNlX3BjaV90YmxgIHRhYmxlIGlzIHJlc3BvbnNpYmxlIGZvciBiaW5kaW5nIHRvLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpdHMgY29udGVudHMgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHBpbnBvaW50IHRoZSB0YXJnZXQgZGV2aWNlcy4gVGhpcyB0YWJsZSBpcyBrZXkgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGFzc2lnbm1lbnQgb2YgdGhlc2UgcG90ZW50aWFsbHkgc3BlY2lhbGl6ZWQgTklDcy4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBiaW5kaW5nIGFjdHVhbGx5IGxvb2tzIGxpa2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NTAsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE3OjI5OjE0LjI0MTg2OTYxMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA1MDczNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWNlX3BjaV90YmxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jPTUxMjY9c3RhdGljIGludCBpY2VfcHJvYmVfcmVjb3ZlcnlfbW9kZShzdHJ1Y3QgaWNlX3BmICpwZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTUxNTgtICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTE1OTogKiBAZW50OiBlbnRyeSBpbiBpY2VfcGNpX3RibFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTUxNjAtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jPTU3ODA9c3RhdGljIHZvaWQgaWNlX3BjaV9lcnJfcmVzZXRfZG9uZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTU3ODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTc4NTovKiBpY2VfcGNpX3RibCAtIFBDSSBEZXZpY2UgSUQgVGFibGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy01Nzg2LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy01NzkyLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU3OTM6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGljZV9wY2lfdGJsW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTc5NC1cXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MTBDX0JBQ0tQTEFORSkgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTU4NDUtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODQ2Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpY2VfcGNpX3RibCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTg0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jPTU4NTg9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGljZV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTg1OS1cXHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4NjA6XFx0LmlkX3RhYmxlID0gaWNlX3BjaV90YmwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTg2MS1cXHQucHJvYmUgPSBpY2VfcHJvYmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE3OjI5OjE0LjI5MjM4Mjk5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI0NDQ2NjM1NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBQQ0kgRGV2aWNlIElEcyBpbiBgaWNlX3BjaV90YmxgKipcblxuQWxyaWdodCwgbG9va2luZyBhdCB0aGlzIGNvZGUsIGl0J3MgY2xlYXIgdGhlc2UgZGV2aWNlcyBpbiBgaWNlX3BjaV90YmxgIGFyZSBQQ0kgZGV2aWNlcywgd2l0aCBpZGVudGlmaWVycyBsaWtlIGBJQ0VfREVWX0lEX0U4MTBDX0JBQ0tQTEFORWAgYW5kIHRoZSBsaWtlLiBJdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluaywgKm9rYXksIHNvIHdoYXQgYXJlIHRoZXNlIGBJQ0VfREVWX0lEX2AgbWFjcm9zIGRlZmluZWQgYXM/KiBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRob3NlIGhlYWRlcnMgcmlnaHQgYXdheS4gTGV0J3MgZ2V0IHRoZSBkZWZpbml0aW9ucyBvZiB0aGVzZSBgSUNFX0RFVl9JRF9gIGNvbnN0YW50cyBhbmQgZmlndXJlIG91dCB0aGUgc3BlY2lmaWMgZGV2aWNlIHZlbmRvciBhbmQgZGV2aWNlIElEcyB0aGVzZSBjb3JyZXNwb25kIHRvLiBUaGF0J2xsIHByb3ZpZGUgdGhlIGNydWNpYWwgY29udGV4dCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgY2FwYWJpbGl0aWVzLCBmdW5jdGlvbmFsaXRpZXMsIGFuZCBleHBlY3RlZCBiZWhhdmlvciBvZiB0aGVzZSBoYXJkd2FyZSBjb21wb25lbnRzIHdpdGhpbiB0aGUgc3lzdGVtLCBsaWtlIHRoZXNlIEU4MTBDLWJhc2VkIGRldmljZXMuIEdldHRpbmcgdGhvc2UgZGV2aWNlIElEcyBtYXBwZWQgY29ycmVjdGx5IGlzIHRoZSBlc3NlbnRpYWwgZmlyc3Qgc3RlcCwgYW5kIHRoZSByZXN0IHdpbGwgZm9sbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzIxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTc6Mjk6MTYuNzM3MDQ5MTgyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTYxNDUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJQ0VfREVWX0lEX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmM9MTQ9c3RhdGljIERFRklORV9NVVRFWChpY2VfYWRhcHRlcnNfbXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmMtMTgtI2RlZmluZSBJQ0VfQURBUFRFUl9JTkRFWF9FODI1Q1xcdFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYzoxOTpcXHQoSUNFX0RFVl9JRF9FODI1Q19CQUNLUExBTkUgfCBJQ0VfQURBUFRFUl9GSVhFRF9JTkRFWClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYy0yMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYz0yMT1zdGF0aWMgdTY0IGljZV9hZGFwdGVyX2luZGV4KHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmMtMjMtXFx0c3dpdGNoIChwZGV2LVxcdTAwM2VkZXZpY2UpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYzoyNDpcXHRjYXNlIElDRV9ERVZfSURfRTgyNUNfQkFDS1BMQU5FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5jOjI1OlxcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5jOjI2OlxcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmM6Mjc6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjVDX1NHTUlJOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5jLTI4LVxcdFxcdC8qIEU4MjVDIGRldmljZXMgaGF2ZSBtdWx0aXBsZSBOQUNzIHdoaWNoIGFyZSBjb25uZWN0ZWQgdG8gdGhlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jPTEyMz1zdGF0aWMgaW50IGljZV9zZXRfbWFjX3R5cGUoc3RydWN0IGljZV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jLTEyOC1cXHRzd2l0Y2ggKGh3LVxcdTAwM2VkZXZpY2VfaWQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjEyOTpcXHRjYXNlIElDRV9ERVZfSURfRTgxMENfQkFDS1BMQU5FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTMwOlxcdGNhc2UgSUNFX0RFVl9JRF9FODEwQ19RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTMxOlxcdGNhc2UgSUNFX0RFVl9JRF9FODEwQ19TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxMzI6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MTBfWFhWX0JBQ0tQTEFORTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjEzMzpcXHRjYXNlIElDRV9ERVZfSURfRTgxMF9YWFZfUVNGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjEzNDpcXHRjYXNlIElDRV9ERVZfSURfRTgxMF9YWFZfU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMtMTM1LVxcdFxcdGh3LVxcdTAwM2VtYWNfdHlwZSA9IElDRV9NQUNfRTgxMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jLTEzNi1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjEzNzpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0NfMTBHX0JBU0VfVDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjEzODpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0NfQkFDS1BMQU5FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTM5OlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ19RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTQwOlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ19TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNDE6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NHTUlJOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTQyOlxcdGNhc2UgSUNFX0RFVl9JRF9FODIyQ18xMEdfQkFTRV9UOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTQzOlxcdGNhc2UgSUNFX0RFVl9JRF9FODIyQ19CQUNLUExBTkU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNDQ6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjJDX1FTRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNDU6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjJDX1NGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE0NjpcXHRjYXNlIElDRV9ERVZfSURfRTgyMkNfU0dNSUk6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNDc6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjJMXzEwR19CQVNFX1Q6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNDg6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjJMX0JBQ0tQTEFORTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE0OTpcXHRjYXNlIElDRV9ERVZfSURfRTgyMkxfU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTUwOlxcdGNhc2UgSUNFX0RFVl9JRF9FODIyTF9TR01JSTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE1MTpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0xfMTBHX0JBU0VfVDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE1MjpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0xfMUdCRTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE1MzpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0xfQkFDS1BMQU5FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTU0OlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF9RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTU1OlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF9TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYy0xNTYtXFx0XFx0aHctXFx1MDAzZW1hY190eXBlID0gSUNFX01BQ19HRU5FUklDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMtMTU3LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTU4OlxcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19CQUNLUExBTkU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNTk6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjVDX1FTRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNjA6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjVDX1NGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE2MTpcXHRjYXNlIElDRV9ERVZfSURfRTgyNUNfU0dNSUk6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYy0xNjItXFx0XFx0aHctXFx1MDAzZW1hY190eXBlID0gSUNFX01BQ19HRU5FUklDXzNLX0U4MjU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYy0xNjMtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNjQ6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MzBDQ19CQUNLUExBTkU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNjU6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MzBDQ19RU0ZQNTY6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNjY6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MzBDQ19TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNjc6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MzBDQ19TRlBfREQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNjg6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MzBDX0JBQ0tQTEFORTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE2OTpcXHRjYXNlIElDRV9ERVZfSURfRTgzMF9YWFZfQkFDS1BMQU5FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTcwOlxcdGNhc2UgSUNFX0RFVl9JRF9FODMwQ19RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTcxOlxcdGNhc2UgSUNFX0RFVl9JRF9FODMwX1hYVl9RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTcyOlxcdGNhc2UgSUNFX0RFVl9JRF9FODMwQ19TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNzM6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MzBfWFhWX1NGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE3NDpcXHRjYXNlIElDRV9ERVZfSURfRTgzNUNDX0JBQ0tQTEFORTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE3NTpcXHRjYXNlIElDRV9ERVZfSURfRTgzNUNDX1FTRlA1NjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE3NjpcXHRjYXNlIElDRV9ERVZfSURfRTgzNUNDX1NGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE3NzpcXHRjYXNlIElDRV9ERVZfSURfRTgzNUNfQkFDS1BMQU5FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTc4OlxcdGNhc2UgSUNFX0RFVl9JRF9FODM1Q19RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTc5OlxcdGNhc2UgSUNFX0RFVl9JRF9FODM1Q19TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxODA6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MzVfTF9CQUNLUExBTkU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxODE6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MzVfTF9RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTgyOlxcdGNhc2UgSUNFX0RFVl9JRF9FODM1X0xfU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMtMTgzLVxcdFxcdGh3LVxcdTAwM2VtYWNfdHlwZSA9IElDRV9NQUNfRTgzMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM9MzM1NT1ib29sIGljZV9pc18xMDBtX3NwZWVkX3N1cHBvcnRlZChzdHJ1Y3QgaWNlX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMtMzM1Ny1cXHRzd2l0Y2ggKGh3LVxcdTAwM2VkZXZpY2VfaWQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjMzNTg6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjJDX1NHTUlJOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MzM1OTpcXHRjYXNlIElDRV9ERVZfSURfRTgyMkxfU0dNSUk6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzozMzYwOlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF8xR0JFOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MzM2MTpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0NfU0dNSUk6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzozMzYyOlxcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19TR01JSTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jLTMzNjMtXFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jPTQzNTE9aW50IGljZV9nZXRfcGh5X2xhbmVfbnVtYmVyKHN0cnVjdCBpY2VfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYy00MzYzLVxcdGlmIChody1cXHUwMDNlbWFjX3R5cGUgPT0gSUNFX01BQ19HRU5FUklDIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzo0MzY0OlxcdCAgICBody1cXHUwMDNlZGV2aWNlX2lkID09IElDRV9ERVZfSURfRTgyNUNfU0dNSUkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYy00MzY1LVxcdFxcdHJldHVybiBody1cXHUwMDNlcGZfaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jPTYwNDE9aW50IGljZV9nZXRfcGNhOTU3NV9oYW5kbGUoc3RydWN0IGljZV9odyAqaHcsIHUxNiAqcGNhOTU3NV9oYW5kbGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jLTYwNTctXFx0LyogQ2hlY2sgaWYgdGhlIFNXIElPIGV4cGFuZGVyIGNvbnRyb2xsaW5nIFNNQSBleGlzdHMgaW4gdGhlIG5ldGxpc3QuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzo2MDU4OlxcdGlmIChody1cXHUwMDNlZGV2aWNlX2lkID09IElDRV9ERVZfSURfRTgxMENfU0ZQKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMtNjA1OS1cXHRcXHRpZHggPSBTV19QQ0E5NTc1X1NGUF9UT1BPX0lEWDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjYwNjA6XFx0ZWxzZSBpZiAoaHctXFx1MDAzZWRldmljZV9pZCA9PSBJQ0VfREVWX0lEX0U4MTBDX1FTRlApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYy02MDYxLVxcdFxcdGlkeCA9IFNXX1BDQTk1NzVfUVNGUF9UT1BPX0lEWDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNy0vKiBEZXZpY2UgSURzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo4OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyX1NJX0RGTFQgICAgICAgICAweDE4ODhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTktLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODM1LUNDIGZvciBiYWNrcGxhbmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjEwOiNkZWZpbmUgSUNFX0RFVl9JRF9FODM1Q0NfQkFDS1BMQU5FXFx0MHgxMjQ4XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xMS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MzUtQ0MgZm9yIFFTRlAgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjEyOiNkZWZpbmUgSUNFX0RFVl9JRF9FODM1Q0NfUVNGUDU2XFx0MHgxMjQ5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xMy0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MzUtQ0MgZm9yIFNGUCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6MTQ6I2RlZmluZSBJQ0VfREVWX0lEX0U4MzVDQ19TRlBcXHRcXHQweDEyNEFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTE1LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzNS1DIGZvciBiYWNrcGxhbmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjE2OiNkZWZpbmUgSUNFX0RFVl9JRF9FODM1Q19CQUNLUExBTkVcXHQweDEyNjFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTE3LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzNS1DIGZvciBRU0ZQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoxODojZGVmaW5lIElDRV9ERVZfSURfRTgzNUNfUVNGUFxcdFxcdDB4MTI2MlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMTktLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODM1LUMgZm9yIFNGUCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6MjA6I2RlZmluZSBJQ0VfREVWX0lEX0U4MzVDX1NGUFxcdFxcdDB4MTI2M1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMjEtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODM1LUwgZm9yIGJhY2twbGFuZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6MjI6I2RlZmluZSBJQ0VfREVWX0lEX0U4MzVfTF9CQUNLUExBTkVcXHQweDEyNjVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTIzLS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzNS1MIGZvciBRU0ZQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoyNDojZGVmaW5lIElDRV9ERVZfSURfRTgzNV9MX1FTRlBcXHRcXHQweDEyNjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTI1LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzNS1MIGZvciBTRlAgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjI2OiNkZWZpbmUgSUNFX0RFVl9JRF9FODM1X0xfU0ZQXFx0XFx0MHgxMjY3XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0yNy0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjMtTCBmb3IgYmFja3BsYW5lICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoyODojZGVmaW5lIElDRV9ERVZfSURfRTgyM0xfQkFDS1BMQU5FXFx0MHgxMjRDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0yOS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjMtTCBmb3IgU0ZQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDozMDojZGVmaW5lIElDRV9ERVZfSURfRTgyM0xfU0ZQXFx0XFx0MHgxMjREXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0zMS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjMtTC9YNTU3LUFUIDEwR0JBU0UtVCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6MzI6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjNMXzEwR19CQVNFX1RcXHQweDEyNEVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTMzLS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyMy1MIDFHYkUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjM0OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIzTF8xR0JFXFx0XFx0MHgxMjRGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0zNS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjMtTCBmb3IgUVNGUCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6MzY6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjNMX1FTRlBcXHRcXHQweDE1MURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTM3LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzMC1DQyBmb3IgYmFja3BsYW5lICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDozODojZGVmaW5lIElDRV9ERVZfSURfRTgzMENDX0JBQ0tQTEFORVxcdDB4MTJEMVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMzktLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLUNDIGZvciBRU0ZQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo0MDojZGVmaW5lIElDRV9ERVZfSURfRTgzMENDX1FTRlA1NlxcdDB4MTJEMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNDEtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLUNDIGZvciBTRlAgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjQyOiNkZWZpbmUgSUNFX0RFVl9JRF9FODMwQ0NfU0ZQXFx0XFx0MHgxMkQzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC00My0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MzAtQ0MgZm9yIFNGUC1ERCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6NDQ6I2RlZmluZSBJQ0VfREVWX0lEX0U4MzBDQ19TRlBfRERcXHQweDEyRDRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTQ1LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzMC1DIGZvciBiYWNrcGxhbmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjQ2OiNkZWZpbmUgSUNFX0RFVl9JRF9FODMwQ19CQUNLUExBTkVcXHQweDEyRDVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTQ3LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzMC1DIGZvciBRU0ZQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo0ODojZGVmaW5lIElDRV9ERVZfSURfRTgzMENfUVNGUFxcdFxcdDB4MTJEOFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNDktLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLUMgZm9yIFNGUCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6NTA6I2RlZmluZSBJQ0VfREVWX0lEX0U4MzBDX1NGUFxcdFxcdDB4MTJEQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNTEtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLVhYViBmb3IgYmFja3BsYW5lICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo1MjojZGVmaW5lIElDRV9ERVZfSURfRTgzMF9YWFZfQkFDS1BMQU5FXFx0MHgxMkRDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC01My0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MzAtWFhWIGZvciBRU0ZQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo1NDojZGVmaW5lIElDRV9ERVZfSURfRTgzMF9YWFZfUVNGUFxcdDB4MTJERFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNTUtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLVhYViBmb3IgU0ZQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo1NjojZGVmaW5lIElDRV9ERVZfSURfRTgzMF9YWFZfU0ZQXFx0XFx0MHgxMkRFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC01Ny0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MTAtQyBmb3IgYmFja3BsYW5lICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo1ODojZGVmaW5lIElDRV9ERVZfSURfRTgxMENfQkFDS1BMQU5FXFx0MHgxNTkxXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC01OS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MTAtQyBmb3IgUVNGUCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6NjA6I2RlZmluZSBJQ0VfREVWX0lEX0U4MTBDX1FTRlBcXHRcXHQweDE1OTJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTYxLS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgxMC1DIGZvciBTRlAgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjYyOiNkZWZpbmUgSUNFX0RFVl9JRF9FODEwQ19TRlBcXHRcXHQweDE1OTNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTYzLSNkZWZpbmUgSUNFX1NVQkRFVl9JRF9FODEwVFxcdFxcdDB4MDAwRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC03MC0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MTAtWFhWIGZvciBiYWNrcGxhbmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjcxOiNkZWZpbmUgSUNFX0RFVl9JRF9FODEwX1hYVl9CQUNLUExBTkVcXHQweDE1OTlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTcyLS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgxMC1YWFYgZm9yIFFTRlAgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjczOiNkZWZpbmUgSUNFX0RFVl9JRF9FODEwX1hYVl9RU0ZQXFx0MHgxNTlBXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC03NC0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MTAtWFhWIGZvciBTRlAgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjc1OiNkZWZpbmUgSUNFX0RFVl9JRF9FODEwX1hYVl9TRlBcXHRcXHQweDE1OUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTc2LS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyMy1DIGZvciBiYWNrcGxhbmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjc3OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIzQ19CQUNLUExBTkVcXHQweDE4OEFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTc4LS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyMy1DIGZvciBRU0ZQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo3OTojZGVmaW5lIElDRV9ERVZfSURfRTgyM0NfUVNGUFxcdFxcdDB4MTg4QlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtODAtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODIzLUMgZm9yIFNGUCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6ODE6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjNDX1NGUFxcdFxcdDB4MTg4Q1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtODItLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODIzLUMvWDU1Ny1BVCAxMEdCQVNFLVQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjgzOiNkZWZpbmUgSUNFX0RFVl9JRF9FODIzQ18xMEdfQkFTRV9UXFx0MHgxODhEXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC04NC0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjMtQyAxR2JFICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo4NTojZGVmaW5lIElDRV9ERVZfSURfRTgyM0NfU0dNSUlcXHRcXHQweDE4OEVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTg2LS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyMi1DIGZvciBiYWNrcGxhbmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjg3OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyQ19CQUNLUExBTkVcXHQweDE4OTBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTg4LS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyMi1DIGZvciBRU0ZQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo4OTojZGVmaW5lIElDRV9ERVZfSURfRTgyMkNfUVNGUFxcdFxcdDB4MTg5MVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtOTAtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODIyLUMgZm9yIFNGUCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6OTE6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjJDX1NGUFxcdFxcdDB4MTg5MlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtOTItLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODIyLUMvWDU1Ny1BVCAxMEdCQVNFLVQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjkzOiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyQ18xMEdfQkFTRV9UXFx0MHgxODkzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC05NC0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjItQyAxR2JFICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo5NTojZGVmaW5lIElDRV9ERVZfSURfRTgyMkNfU0dNSUlcXHRcXHQweDE4OTRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTk2LS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyMi1MIGZvciBiYWNrcGxhbmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjk3OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyTF9CQUNLUExBTkVcXHQweDE4OTdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTk4LS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyMi1MIGZvciBTRlAgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjk5OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyTF9TRlBcXHRcXHQweDE4OThcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTEwMC0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjItTC9YNTU3LUFUIDEwR0JBU0UtVCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6MTAxOiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyTF8xMEdfQkFTRV9UXFx0MHgxODk5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xMDItLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODIyLUwgMUdiRSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6MTAzOiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyTF9TR01JSVxcdFxcdDB4MTg5QVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMTA0LS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyNS1DIGZvciBiYWNrcGxhbmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjEwNTojZGVmaW5lIElDRV9ERVZfSURfRTgyNUNfQkFDS1BMQU5FXFx0MHg1NzljXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xMDYtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODI1LUMgZm9yIFFTRlAgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjEwNzojZGVmaW5lIElDRV9ERVZfSURfRTgyNUNfUVNGUFxcdFxcdDB4NTc5ZFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMTA4LS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyNS1DIGZvciBTRlAgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjEwOTojZGVmaW5lIElDRV9ERVZfSURfRTgyNUNfU0ZQXFx0XFx0MHg1NzllXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xMTAtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODI1LUMgMUdiRSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6MTExOiNkZWZpbmUgSUNFX0RFVl9JRF9FODI1Q19TR01JSVxcdFxcdDB4NTc5ZlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMTEyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmM9MTExPXN0YXRpYyBib29sIGljZV9kcGxsX2lzX3N3X3BpbihzdHJ1Y3QgaWNlX3BmICpwZiwgdTggaW5kZXgsIGJvb2wgaW5wdXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmMtMTEyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuYzoxMTM6XFx0aWYgKGlucHV0IFxcdTAwMjZcXHUwMDI2IHBmLVxcdTAwM2Vody5kZXZpY2VfaWQgPT0gSUNFX0RFVl9JRF9FODEwQ19RU0ZQKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jLTExNC1cXHRcXHRpbmRleCAtPSBJQ0VfRFBMTF9TV19QSU5fSU5QVVRfQkFTRV9RU0ZQIC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jPTM0NTc9c3RhdGljIGludCBpY2VfZHBsbF9pbml0X3JlZl9zeW5jX2lucHV0cyhzdHJ1Y3QgaWNlX3BmICpwZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jLTM1MTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmM6MzUxNDpcXHRcXHRcXHRpZiAoaHctXFx1MDAzZWRldmljZV9pZCA9PSBJQ0VfREVWX0lEX0U4MTBDX1NGUCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jLTM1MTUtXFx0XFx0XFx0ICAgIHBpbiBcXHUwMDNlIElDRV9EUExMX0U4MTBDX1NGUF9OQ19TVEFSVClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jPTQ4NTQ9c3RhdGljIGludCBpY2VfZHBsbF9pbml0X2luZm9fc3dfcGlucyhzdHJ1Y3QgaWNlX3BmICpwZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jLTQ4NjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmM6NDg2MzpcXHRpZiAocGYtXFx1MDAzZWh3LmRldmljZV9pZCA9PSBJQ0VfREVWX0lEX0U4MTBDX1FTRlApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmMtNDg2NC1cXHRcXHRpbnB1dF9pZHhfb2Zmc2V0ID0gSUNFX0U4MTBfUkNMS19QSU5TX05VTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZndfdXBkYXRlLmM9NzcyPWljZV9vcF9wY2lfbWF0Y2hfcmVjb3JkKHN0cnVjdCBwbGRtZncgKmNvbnRleHQsIHN0cnVjdCBwbGRtZndfcmVjb3JkICpyZWNvcmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Z3X3VwZGF0ZS5jLTgxOS1cXHQgICAgKGlkLmRldmljZSA9PSBQQ0lfQU5ZX0lEIHx8IGlkLmRldmljZSA9PSBwZGV2LVxcdTAwM2VkZXZpY2UgfHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Z3X3VwZGF0ZS5jOjgyMDpcXHQgICAgaWQuZGV2aWNlID09IElDRV9ERVZfSURfRTgyMl9TSV9ERkxUKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZndfdXBkYXRlLmMtODIxLVxcdCAgICAoaWQuc3Vic3lzdGVtX3ZlbmRvciA9PSBQQ0lfQU5ZX0lEIHx8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jPTM5NzI9dm9pZCBpY2VfaW5pdF9mZWF0dXJlX3N1cHBvcnQoc3RydWN0IGljZV9wZiAqcGYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTM5NzQtXFx0c3dpdGNoIChwZi1cXHUwMDNlaHcuZGV2aWNlX2lkKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzozOTc1OlxcdGNhc2UgSUNFX0RFVl9JRF9FODEwQ19CQUNLUExBTkU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzozOTc2OlxcdGNhc2UgSUNFX0RFVl9JRF9FODEwQ19RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mzk3NzpcXHRjYXNlIElDRV9ERVZfSURfRTgxMENfU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mzk3ODpcXHRjYXNlIElDRV9ERVZfSURfRTgxMF9YWFZfQkFDS1BMQU5FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mzk3OTpcXHRjYXNlIElDRV9ERVZfSURfRTgxMF9YWFZfUVNGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjM5ODA6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MTBfWFhWX1NGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTM5ODEtXFx0XFx0aWNlX3NldF9mZWF0dXJlX3N1cHBvcnQocGYsIElDRV9GX0RTQ1ApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM9NTc5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaWNlX3BjaV90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1Nzk0OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgxMENfQkFDS1BMQU5FKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU3OTU6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODEwQ19RU0ZQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU3OTY6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODEwQ19TRlApIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTc5NzpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MTBfWFhWX0JBQ0tQTEFORSkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1Nzk4OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgxMF9YWFZfUVNGUCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1Nzk5OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgxMF9YWFZfU0ZQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MDA6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODIzQ19CQUNLUExBTkUpIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgwMTpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjNDX1FTRlApIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgwMjpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjNDX1NGUCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODAzOlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyM0NfMTBHX0JBU0VfVCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODA0OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyM0NfU0dNSUkpIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgwNTpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjJDX0JBQ0tQTEFORSkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODA2OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyMkNfUVNGUCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODA3OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyMkNfU0ZQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MDg6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODIyQ18xMEdfQkFTRV9UKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MDk6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODIyQ19TR01JSSkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODEwOlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyMkxfQkFDS1BMQU5FKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MTE6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODIyTF9TRlApIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgxMjpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjJMXzEwR19CQVNFX1QpIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgxMzpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjJMX1NHTUlJKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MTQ6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODIzTF9CQUNLUExBTkUpIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgxNTpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjNMX1NGUCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODE2OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyM0xfMTBHX0JBU0VfVCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODE3OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyM0xfMUdCRSkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODE4OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyM0xfUVNGUCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODE5OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyMl9TSV9ERkxUKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MjA6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODI1Q19CQUNLUExBTkUpLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MjE6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODI1Q19RU0ZQKSwgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODIyOlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyNUNfU0ZQKSwgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODIzOlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyNUNfU0dNSUkpLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MjQ6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODMwQ0NfQkFDS1BMQU5FKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MjU6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODMwQ0NfUVNGUDU2KSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MjY6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODMwQ0NfU0ZQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4Mjc6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODMwQ0NfU0ZQX0REKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4Mjg6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODMwQ19CQUNLUExBTkUpLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4Mjk6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODMwX1hYVl9CQUNLUExBTkUpLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MzA6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODMwQ19RU0ZQKSwgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODMxOlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgzMF9YWFZfUVNGUCksIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgzMjpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MzBDX1NGUCksIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgzMzpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MzBfWFhWX1NGUCksIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgzNDpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MzVDQ19CQUNLUExBTkUpLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MzU6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODM1Q0NfUVNGUDU2KSwgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODM2OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgzNUNDX1NGUCksIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgzNzpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MzVDX0JBQ0tQTEFORSksIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgzODpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MzVDX1FTRlApLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4Mzk6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODM1Q19TRlApLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4NDA6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODM1X0xfQkFDS1BMQU5FKSwgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODQxOlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgzNV9MX1FTRlApLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4NDI6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODM1X0xfU0ZQKSwgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy01ODQzLVxcdC8qIHJlcXVpcmVkIGxhc3QgZW50cnkgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM9NTc1Nj1zdGF0aWMgaW50IGljZV9nZXRfcGZfYzgyN19pZHgoc3RydWN0IGljZV9odyAqaHcsIHU4ICppZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTU3NjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo1NzY3OlxcdGlmIChody1cXHUwMDNlZGV2aWNlX2lkICE9IElDRV9ERVZfSURfRTgxMENfUVNGUCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNTc2OC1cXHRcXHQqaWR4ID0gQzgyN18wO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYz01OTQ5PWljZV9jZ3VfZ2V0X3Bpbl9kZXNjKHN0cnVjdCBpY2VfaHcgKmh3LCBib29sIGlucHV0LCBpbnQgKnNpemUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTU5NTMtXFx0c3dpdGNoIChody1cXHUwMDNlZGV2aWNlX2lkKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo1OTU0OlxcdGNhc2UgSUNFX0RFVl9JRF9FODEwQ19TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy01OTU1LVxcdFxcdGlmIChpbnB1dCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy01OTYyLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NTk2MzpcXHRjYXNlIElDRV9ERVZfSURfRTgxMENfUVNGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTU5NjQtXFx0XFx0aWYgKGlucHV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTU5NzEtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo1OTcyOlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF8xMEdfQkFTRV9UOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NTk3MzpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0xfMUdCRTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjU5NzQ6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMX0JBQ0tQTEFORTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjU5NzU6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMX1FTRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo1OTc2OlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF9TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo1OTc3OlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ18xMEdfQkFTRV9UOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NTk3ODpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0NfQkFDS1BMQU5FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NTk3OTpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0NfUVNGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjU5ODA6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjU5ODE6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NHTUlJOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNTk4Mi1cXHRcXHR0ID0gaWNlX2NndV9nZXRfcGluX2Rlc2NfZTgyMyhodywgaW5wdXQsIHNpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYz02MTY3PWludCBpY2VfZ2V0X2NndV9yY2xrX3Bpbl9pbmZvKHN0cnVjdCBpY2VfaHcgKmh3LCB1OCAqYmFzZV9pZHgsIHU4ICpwaW5fbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy02MTcyLVxcdHN3aXRjaCAoaHctXFx1MDAzZWRldmljZV9pZCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjE3MzpcXHRjYXNlIElDRV9ERVZfSURfRTgxMENfU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjE3NDpcXHRjYXNlIElDRV9ERVZfSURfRTgxMENfUVNGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTYxNzUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTYxODItXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MTgzOlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF8xMEdfQkFTRV9UOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjE4NDpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0xfMUdCRTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYxODU6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMX0JBQ0tQTEFORTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYxODY6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMX1FTRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MTg3OlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF9TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MTg4OlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ18xMEdfQkFTRV9UOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjE4OTpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0NfQkFDS1BMQU5FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjE5MDpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0NfUVNGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYxOTE6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYxOTI6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NHTUlJOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNjE5My1cXHRcXHQqcGluX251bSA9IElDRV9FODJYX1JDTEtfUElOU19OVU07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTYyMDMtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjA0OlxcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19CQUNLUExBTkU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjA1OlxcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjIwNjpcXHRjYXNlIElDRV9ERVZfSURfRTgyNUNfU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjIwNzpcXHRjYXNlIElDRV9ERVZfSURfRTgyNUNfU0dNSUk6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy02MjA4LVxcdFxcdCpwaW5fbnVtID0gSUNFX1NZTkNFX0NMS19OVU07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jPTYyMzA9aW50IGljZV9jZ3VfZ2V0X291dHB1dF9waW5fc3RhdGVfY2FwcyhzdHJ1Y3QgaWNlX2h3ICpodywgdTggcGluX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy02MjM1LVxcdHN3aXRjaCAoaHctXFx1MDAzZWRldmljZV9pZCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjIzNjpcXHRjYXNlIElDRV9ERVZfSURfRTgxMENfU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNjIzNy1cXHRcXHRpZiAocGluX2lkID09IFpMX09VVDIgfHwgcGluX2lkID09IFpMX09VVDMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTYyMzktXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjQwOlxcdGNhc2UgSUNFX0RFVl9JRF9FODEwQ19RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNjI0MS1cXHRcXHRpZiAocGluX2lkID09IFpMX09VVDIgfHwgcGluX2lkID09IFpMX09VVDMgfHwgcGluX2lkID09IFpMX09VVDQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTYyNDMtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjQ0OlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF8xMEdfQkFTRV9UOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjI0NTpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0xfMUdCRTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYyNDY6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMX0JBQ0tQTEFORTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYyNDc6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMX1FTRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjQ4OlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF9TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjQ5OlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ18xMEdfQkFTRV9UOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjI1MDpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0NfQkFDS1BMQU5FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjI1MTpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0NfUVNGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYyNTI6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYyNTM6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NHTUlJOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNjI1NC1cXHRcXHRpZiAoaHctXFx1MDAzZWNndV9wYXJ0X251bWJlciA9PVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNzoyOToxNi43ODg2Njg2MTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTAyODYyNzc4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgaWNlYCBEcml2ZXIgYW5kIGl0cyBIYXJkd2FyZSBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBGaXJzdCwgSSBuZWVkIHRvIHJldmlzaXQgU2VjdGlvbiAyIG9mIHRoZSBpbnN0cnVjdGlvbnMuIFRoZSBiaXQgYWJvdXQgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiDigJMgdGhhdCdzIHRoZSBrZXkuIFNwZWNpZmljYWxseSwgdGhlIG1lbnRpb24gb2YgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgYW5kIGBhbWRncHVgLiBUaGUgY3JpdGljYWwgcG9pbnQgaGVyZSBpcyB0aGF0IHRoZXNlIHJlcXVpcmUgYWN0dWFsIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcywgd2hpY2ggYXJlbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQncyB0aGUgYmFzZWxpbmUuXG5cbk5vdywgY29uc2lkZXJpbmcgdGhlIGBpY2VgIGRyaXZlciDigJMgdGhhdCdzIHRoZSBkcml2ZXIgZm9yIEludGVsIEV0aGVybmV0IDgwMCBTZXJpZXMgY2FyZHMsIHRoaW5ncyBsaWtlIHRoZSBFODEwLCBFODIyLCBhbmQgdGhlIHJlc3QuIFRoZXNlIGFyZSBzZXJpb3VzLCBoaWdoLXBlcmZvcm1hbmNlIGVudGVycHJpc2UgRXRoZXJuZXQgUENJZSBjb250cm9sbGVycyDigJMgMTAwR2JFLCAyNUdiRSwgdGhhdCBzb3J0IG9mIHRoaW5nLiBUaGUgaW1wbGljYXRpb24gaXMsIHRoZXNlICpyZXF1aXJlKiBwaHlzaWNhbCBJbnRlbCBFODAwIHNlcmllcyBQQ0llIGhhcmR3YXJlLiBBbmQsIGFzIEkgc3VzcGVjdGVkLCBzdGFuZGFyZCBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aG9zZSwgb25seSB0aGUgb2xkZXIgYW5kIGxlc3MgcGVyZm9ybWFudCBlMTAwMCwgZTEwMDBlLCBhbmQgaWdiIGRldmljZXMuXG5cbkJ1dCBob2xkIG9uLiBUaGlzIGFsd2F5cyBwcm9tcHRzIHRoZSBxdWVzdGlvbjogSXMgdGhlcmUgKmFueSogcG9zc2liaWxpdHkgb2YgYSB2aXJ0dWFsIG9yIGF1eGlsaWFyeSBkZXZpY2UgYmluZGluZyAqd2l0aG91dCogcGh5c2ljYWwgaGFyZHdhcmU/IEEgbG9uZyBzaG90LCBidXQgSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBJIHNob3VsZCBjaGVjayBob3cgYGljZV9wcm9iZWAgd29ya3MuIENhbiBpdCBiZSBwcm9iZWQgd2l0aG91dCBhIHJlYWwgUENJIGRldmljZT8gVGhlIGxvZ2ljIGlzIHRoYXQgYGljZV9wcm9iZWAgaXMgdHJpZ2dlcmVkIGJ5IHRoZSBQQ0kgY29yZSB3aGVuZXZlciBpdCBmaW5kcyBhIG1hdGNoaW5nIFBDSSB2ZW5kb3IgYW5kIGRldmljZSBJRC4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gY2hlY2sgYGljZV9wcm9iZWAgZm9yIG1vcmUgaW5zaWdodC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEwMTIsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTc6Mjk6MjEuODE3Mjk4OTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk2MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUxNjAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjUxNjA6XFx0ICpcXG41MTYxOlxcdCAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBvbiBmYWlsdXJlXFxuNTE2MjpcXHQgKi9cXG41MTYzOlxcdHN0YXRpYyBpbnRcXG41MTY0OlxcdGljZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgX19hbHdheXNfdW51c2VkICplbnQpXFxuNTE2NTpcXHR7XFxuNTE2NjpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbjUxNjc6XFx0XFx0Ym9vbCBuZWVkX2Rldl9kZWluaXQgPSBmYWxzZTtcXG41MTY4OlxcdFxcdHN0cnVjdCBpY2VfYWRhcHRlciAqYWRhcHRlcjtcXG41MTY5OlxcdFxcdHN0cnVjdCBpY2VfcGYgKnBmO1xcbjUxNzA6XFx0XFx0c3RydWN0IGljZV9odyAqaHc7XFxuNTE3MTpcXHRcXHRpbnQgZXJyO1xcbjUxNzI6XFx0XFxuNTE3MzpcXHRcXHRpZiAocGRldi1cXHUwMDNlaXNfdmlydGZuKSB7XFxuNTE3NDpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcImNhbid0IHByb2JlIGEgdmlydHVhbCBmdW5jdGlvblxcXFxuXFxcIik7XFxuNTE3NTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG41MTc2OlxcdFxcdH1cXG41MTc3OlxcdFxcbjUxNzg6XFx0XFx0Lyogd2hlbiB1bmRlciBhIGtkdW1wIGtlcm5lbCBpbml0aWF0ZSBhIHJlc2V0IGJlZm9yZSBlbmFibGluZyB0aGVcXG41MTc5OlxcdFxcdCAqIGRldmljZSBpbiBvcmRlciB0byBjbGVhciBvdXQgYW55IHBlbmRpbmcgRE1BIHRyYW5zYWN0aW9ucy4gVGhlc2VcXG41MTgwOlxcdFxcdCAqIHRyYW5zYWN0aW9ucyBjYW4gY2F1c2Ugc29tZSBzeXN0ZW1zIHRvIG1hY2hpbmUgY2hlY2sgd2hlbiBkb2luZ1xcbjUxODE6XFx0XFx0ICogdGhlIHBjaW1fZW5hYmxlX2RldmljZSgpIGJlbG93LlxcbjUxODI6XFx0XFx0ICovXFxuNTE4MzpcXHRcXHRpZiAoaXNfa2R1bXBfa2VybmVsKCkpIHtcXG41MTg0OlxcdFxcdFxcdHBjaV9zYXZlX3N0YXRlKHBkZXYpO1xcbjUxODU6XFx0XFx0XFx0cGNpX2NsZWFyX21hc3RlcihwZGV2KTtcXG41MTg2OlxcdFxcdFxcdGVyciA9IHBjaWVfZmxyKHBkZXYpO1xcbjUxODc6XFx0XFx0XFx0aWYgKGVycilcXG41MTg4OlxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuNTE4OTpcXHRcXHRcXHRwY2lfcmVzdG9yZV9zdGF0ZShwZGV2KTtcXG41MTkwOlxcdFxcdH1cXG41MTkxOlxcdFxcbjUxOTI6XFx0XFx0LyogdGhpcyBkcml2ZXIgdXNlcyBkZXZyZXMsIHNlZVxcbjUxOTM6XFx0XFx0ICogRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0XFxuNTE5NDpcXHRcXHQgKi9cXG41MTk1OlxcdFxcdGVyciA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcXG41MTk2OlxcdFxcdGlmIChlcnIpXFxuNTE5NzpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbjUxOTg6XFx0XFxuNTE5OTpcXHRcXHRlcnIgPSBwY2ltX2lvbWFwX3JlZ2lvbnMocGRldiwgQklUKElDRV9CQVIwKSwgZGV2X2RyaXZlcl9zdHJpbmcoZGV2KSk7XFxuNTIwMDpcXHRcXHRpZiAoZXJyKSB7XFxuNTIwMTpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkJBUjAgSS9PIG1hcCBlcnJvciAlZFxcXFxuXFxcIiwgZXJyKTtcXG41MjAyOlxcdFxcdFxcdHJldHVybiBlcnI7XFxuNTIwMzpcXHRcXHR9XFxuNTIwNDpcXHRcXG41MjA1OlxcdFxcdHBmID0gaWNlX2FsbG9jYXRlX3BmKGRldik7XFxuNTIwNjpcXHRcXHRpZiAoIXBmKVxcbjUyMDc6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuNTIwODpcXHRcXG41MjA5OlxcdFxcdC8qIGluaXRpYWxpemUgQXV4aWxpYXJ5IGluZGV4IHRvIGludmFsaWQgdmFsdWUgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTc6Mjk6MjEuODE3Nzk3NDdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6Njg5Njg4NTM5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2gncyBGdXp6aW5nIFdvcnRoaW5lc3MqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggZXhwbGljaXRseSB0YXJnZXRzIHRoZSBJbnRlbCBFODAwIHNlcmllcyBOSUNzLCBzcGVjaWZpY2FsbHkgYnkgdG91Y2hpbmcgdGhlIGBpY2VgIGRyaXZlciBmaWxlczogYGljZV9jb21tb24uY2AgYW5kIGBpY2VfZXRodG9vbC5jYC4gIEkga25vdyB0aGUgYGljZWAgZHJpdmVyLiBJdCdzIHRoZSBvbmUgZm9yIHRob3NlIEludGVsIEV0aGVybmV0IDgwMCBTZXJpZXMgZGV2aWNlcy4gQW5kIEkgc2VlIG1vZGlmaWNhdGlvbnMgdG8gZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcG9ydCBjYXBhYmlsaXRpZXMgKGBpY2VfcmVjYWxjX3BvcnRfbGltaXRlZF9jYXBzYCkgYW5kIGV0aHRvb2wgc2V0dGluZ3MgKGBpY2VfZ2V0X2xpbmtfa3NldHRpbmdzYCwgYGljZV9hdXRvbmVnX2Rpc2FibGVfYWxsb3dlZGAsIGBpY2Vfc2V0dXBfYXV0b25lZ2ApLlxuXG5DcnVjaWFsbHksIHRoZSBjb2RlIHJlZmVyZW5jZXMgdGhlIGBJQ0VfTUFDX0U4MzBgIHdoaWNoIGNvbmZpcm1zIHRoZSBmb2N1cyBvbiB0aGF0IGZhbWlseSBvZiBoYXJkd2FyZS4gIFRoaXMgaXNuJ3QgZ2VuZXJhbCBFdGhlcm5ldDsgdGhpcyBpcyBzcGVjaWFsaXplZCBoYXJkd2FyZS5cblxuTm93LCB0aGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIGNhbiBiZSByZWFjaGVkIGluIGEgdHlwaWNhbCBmdXp6aW5nIHNldHVwLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbGlrZSBRRU1VIGFuZCBHQ0UsIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25zICpjYW5ub3QqIGVtdWxhdGUgdGhpcyB0eXBlIG9mIHBoeXNpY2FsLCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZS4gIFRoZSBkb2N1bWVudGF0aW9uIGV4cGxpY2l0bHkgc3RhdGVzIHRoaXMgbGltaXRhdGlvbjogIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIGFyZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gdGhvc2UgZW52aXJvbm1lbnRzLiAgVGhlIGBpY2VgIGRyaXZlciBkZWZpbml0ZWx5IGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeS5cblxuSSd2ZSBjb25maXJtZWQgdGhhdCBzeXprYWxsZXIgKmNhbm5vdCogZnV6eiB0aGUgYGljZWAgZHJpdmVyIHVubGVzcyBhIHJlYWwgSW50ZWwgRTgwMCBQQ0llIGRldmljZSBpcyBwcmVzZW50IG9yIGVtdWxhdGVkLCB3aGljaCB3ZSBrbm93IGlzbid0IHRoZSBjYXNlIGluIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25zLlxuXG5UaGVyZWZvcmUsIGFwcGx5aW5nIHRoZSB0ZXN0IGNvbmRpdGlvbnMsIHRoaXMgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgd2l0aGluIHRoZSBjb250ZXh0IG9mIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjsgaWYgdGhlIGNvZGUgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LCB3ZSBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gU28sIEknbGwgc2V0IGBXb3J0aEZ1enppbmcgPSBmYWxzZWAsIGBGb2N1c1N5bWJvbHMgPSBbXWAsIGFuZCBgRW5hYmxlQ29uZmlncyA9IFtdYC4gSSdsbCBhbHNvIHByb3ZpZGUgYSBjb25jaXNlIHJlYXNvbmluZzogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEV0aGVybmV0IDgwMCBTZXJpZXMgKGljZSkgbmV0d29yayBkcml2ZXIgKGljZV9jb21tb24uYyBhbmQgaWNlX2V0aHRvb2wuYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIChJbnRlbCBFODAwIHNlcmllcyBOSUNzKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjQxMiwiT3V0cHV0VG9rZW5zIjoxMTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNzoyOToyOC43MTQ2ODYyNzNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgRXRoZXJuZXQgODAwIFNlcmllcyAoaWNlKSBkcml2ZXIgKGljZV9jb21tb24uYyBhbmQgaWNlX2V0aHRvb2wuYykuIFRoaXMgZHJpdmVyIGRyaXZlcyBwaHlzaWNhbCBJbnRlbCBFODAwIHNlcmllcyBQQ0llIG5ldHdvcmsgYWRhcHRlcnMsIHdoaWNoIHJlcXVpcmUgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChlLmcuLCBRRU1VKS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgRXRoZXJuZXQgODAwIFNlcmllcyAoaWNlKSBkcml2ZXIgKGljZV9jb21tb24uYyBhbmQgaWNlX2V0aHRvb2wuYykuIFRoaXMgZHJpdmVyIGRyaXZlcyBwaHlzaWNhbCBJbnRlbCBFODAwIHNlcmllcyBQQ0llIG5ldHdvcmsgYWRhcHRlcnMsIHdoaWNoIHJlcXVpcmUgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChlLmcuLCBRRU1VKS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNzoyOToyOC43MTQ3MjA2OTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmrr8z[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-15 17:07:03 +0000 UTC FinishedAt: 2026-09-15 17:29:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE3OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEV0aGVybmV0IDgwMCBTZXJpZXMgKGljZSkgZHJpdmVyIChpY2VfY29tbW9uLmMgYW5kIGljZV9ldGh0b29sLmMpLiBUaGlzIGRyaXZlciBkcml2ZXMgcGh5c2ljYWwgSW50ZWwgRTgwMCBzZXJpZXMgUENJZSBuZXR3b3JrIGFkYXB0ZXJzLCB3aGljaCByZXF1aXJlIHNwZWNpYWxpemVkIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoZS5nLiwgUUVNVSkuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNzoyODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJlYzNiZGNiNWE0N2IxYjhmYWJhMzJjZDgyMjFjZDk1MDkxYjYzNDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxNSAxNzoyODo1NyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uY1xuaW5kZXggZWYxY2UxMDZmODFiNS4uZDUzMzA3YjE2OGUyYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcbkBAIC0yNTA3LDcgJiM0MzsyNTA3LDcgQEAgaWNlX3JlY2FsY19wb3J0X2xpbWl0ZWRfY2FwcyhzdHJ1Y3QgaWNlX2h3ICpodywgc3RydWN0IGljZV9od19jb21tb25fY2FwcyAqY2FwcylcbiBcdFx0Y2Fwcy1cdTAwM2VtYXh0YyA9IDQ7XG4gXHRcdGljZV9kZWJ1ZyhodywgSUNFX0RCR19JTklULCBcJiMzNDtyZWR1Y2luZyBtYXh0YyB0byAlZCAoYmFzZWQgb24gI3BvcnRzKVxcblwmIzM0OyxcbiBcdFx0XHQgIGNhcHMtXHUwMDNlbWF4dGMpO1xuLVx0XHRpZiAoY2Fwcy1cdTAwM2VyZG1hKSB7XG4mIzQzO1x0XHRpZiAoY2Fwcy1cdTAwM2VyZG1hIFx1MDAyNlx1MDAyNiBody1cdTAwM2VtYWNfdHlwZSAhPSBJQ0VfTUFDX0U4MzApIHtcbiBcdFx0XHRpY2VfZGVidWcoaHcsIElDRV9EQkdfSU5JVCwgXCYjMzQ7Zm9yY2luZyBSRE1BIG9mZlxcblwmIzM0Oyk7XG4gXHRcdFx0Y2Fwcy1cdTAwM2VyZG1hID0gMDtcbiBcdFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcbmluZGV4IGJmOWE4MjFjNTQzYjcuLjRjZTE5OGY2YTFiNTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcbkBAIC0yMzY1LDggJiM0MzsyMzY1LDkgQEAgaWNlX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRicmVhaztcbiBcdH1cbiBcbi1cdC8qIGZsb3cgY29udHJvbCBpcyBzeW1tZXRyaWMgYW5kIGFsd2F5cyBzdXBwb3J0ZWQgKi9cbiYjNDM7XHQvKiBmbG93IGNvbnRyb2wgaXMgc3ltbWV0cmljIG9yIGFzeW1tZXRyaWMgYW5kIGFsd2F5cyBzdXBwb3J0ZWQgKi9cbiBcdGV0aHRvb2xfbGlua19rc2V0dGluZ3NfYWRkX2xpbmtfbW9kZShrcywgc3VwcG9ydGVkLCBQYXVzZSk7XG4mIzQzO1x0ZXRodG9vbF9saW5rX2tzZXR0aW5nc19hZGRfbGlua19tb2RlKGtzLCBzdXBwb3J0ZWQsIEFzeW1fUGF1c2UpO1xuIFxuIFx0Y2FwcyA9IGt6YWxsb2Nfb2JqKCpjYXBzKTtcbiBcdGlmICghY2FwcylcbkBAIC0yNTAwLDYgJiM0MzsyNTAxLDI4IEBAIGljZV9rc2V0dGluZ3NfZmluZF9hZHZfbGlua19zcGVlZChjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3MpXG4gXHRyZXR1cm4gYWR2X2xpbmtfc3BlZWQ7XG4gfVxuIFxuJiM0MzsvKipcbiYjNDM7ICogaWNlX2F1dG9uZWdfZGlzYWJsZV9hbGxvd2VkIC0gY2hlY2sgaWYgYXV0b25lZyBjYW4gYmUgZGlzYWJsZWRcbiYjNDM7ICogQHA6IHBvcnQgaW5mb1xuJiM0MzsgKlxuJiM0MzsgKiBDaGVjayBpZiBhdXRvbmVnb3RpYXRpb24gY2FuIGJlIGRpc2FibGVkIGJhc2VkIG9uIGxpbmsgc3RhdGUuXG4mIzQzOyAqIElDRV9BUV9MUF9BTl9BQklMSVRZIGlzIG9ubHkgdmFsaWQgd2hlbiB0aGUgbGluayBpcyB1cDsgZ2F0ZSB0aGF0XG4mIzQzOyAqIGNoZWNrIGFjY29yZGluZ2x5IHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlcyBmcm9tIHN0YWxlIGxpbmsgZGF0YS5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuOiB0cnVlIGlmIGF1dG9uZWcgaGFzIGNvbXBsZXRlZCwgb3IgaWYgdGhlIGxpbmsgaXMgdXAgYW5kIHRoZVxuJiM0MzsgKiAgICAgICAgIGxpbmsgcGFydG5lciBkb2VzIG5vdCBhZHZlcnRpc2UgYXV0b25lZ290aWF0aW9uIGNhcGFiaWxpdHkuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgYm9vbCBpY2VfYXV0b25lZ19kaXNhYmxlX2FsbG93ZWQoc3RydWN0IGljZV9wb3J0X2luZm8gKnApXG4mIzQzO3tcbiYjNDM7XHR1OCBhbl9pbmZvID0gcC1cdTAwM2VwaHkubGlua19pbmZvLmFuX2luZm87XG4mIzQzO1xuJiM0MztcdGlmIChhbl9pbmZvIFx1MDAyNiBJQ0VfQVFfQU5fQ09NUExFVEVEKVxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1x0LyogSUNFX0FRX0xQX0FOX0FCSUxJVFkgaXMgb25seSB2YWxpZCB3aGVuIGxpbmsgaXMgdXAgKi9cbiYjNDM7XHRyZXR1cm4gKHAtXHUwMDNlcGh5LmxpbmtfaW5mby5saW5rX2luZm8gXHUwMDI2IElDRV9BUV9MSU5LX1VQKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgICAgIShhbl9pbmZvIFx1MDAyNiBJQ0VfQVFfTFBfQU5fQUJJTElUWSk7XG4mIzQzO31cbiYjNDM7XG4gLyoqXG4gICogaWNlX3NldHVwX2F1dG9uZWdcbiAgKiBAcDogcG9ydCBpbmZvXG5AQCAtMjUzOCw4ICYjNDM7MjU2MSw4IEBAIGljZV9zZXR1cF9hdXRvbmVnKHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwLCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3MsXG4gXHRcdFx0fVxuIFx0XHR9XG4gXHR9IGVsc2Uge1xuLVx0XHQvKiBJZiBhdXRvbmVnIGlzIGN1cnJlbnRseSBlbmFibGVkICovXG4tXHRcdGlmIChwLVx1MDAzZXBoeS5saW5rX2luZm8uYW5faW5mbyBcdTAwMjYgSUNFX0FRX0FOX0NPTVBMRVRFRCkge1xuJiM0MztcdFx0LyogSWYgYXV0b25lZyBjb21wbGV0ZWQgb3IgbGluayBwYXJ0bmVyIGRvZXMgbm90IHN1cHBvcnQgQU4gKi9cbiYjNDM7XHRcdGlmIChpY2VfYXV0b25lZ19kaXNhYmxlX2FsbG93ZWQocCkpIHtcbiBcdFx0XHQvKiBJZiBhdXRvbmVnIGlzIHN1cHBvcnRlZCAxMEdCQVNFX1QgaXMgdGhlIG9ubHkgUEhZXG4gXHRcdFx0ICogdGhhdCBjYW4gZGlzYWJsZSBpdCwgc28gb3RoZXJ3aXNlIHJldHVybiBlcnJvclxuIFx0XHRcdCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE3OjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBFdGhlcm5ldCA4MDAgU2VyaWVzIChpY2UpIGRyaXZlciAoaWNlX2NvbW1vbi5jIGFuZCBpY2VfZXRodG9vbC5jKS4gVGhpcyBkcml2ZXIgZHJpdmVzIHBoeXNpY2FsIEludGVsIEU4MDAgc2VyaWVzIFBDSWUgbmV0d29yayBhZGFwdGVycywgd2hpY2ggcmVxdWlyZSBzcGVjaWFsaXplZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4sIFFFTVUpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyZWMzYmRjYjVhNDdiMWI4ZmFiYTMyY2Q4MjIxY2Q5NTA5MWI2MzQyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgMTUgMTc6Mjg6NTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYwppbmRleCBlZjFjZTEwNmY4MWI1Li5kNTMzMDdiMTY4ZTJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMKQEAgLTI1MDcsNyAmIzQzOzI1MDcsNyBAQCBpY2VfcmVjYWxjX3BvcnRfbGltaXRlZF9jYXBzKHN0cnVjdCBpY2VfaHcgKmh3LCBzdHJ1Y3QgaWNlX2h3X2NvbW1vbl9jYXBzICpjYXBzKQogCQljYXBzLSZndDttYXh0YyA9IDQ7CiAJCWljZV9kZWJ1ZyhodywgSUNFX0RCR19JTklULCAmIzM0O3JlZHVjaW5nIG1heHRjIHRvICVkIChiYXNlZCBvbiAjcG9ydHMpXG4mIzM0OywKIAkJCSAgY2Fwcy0mZ3Q7bWF4dGMpOwotCQlpZiAoY2Fwcy0mZ3Q7cmRtYSkgewomIzQzOwkJaWYgKGNhcHMtJmd0O3JkbWEgJmFtcDsmYW1wOyBody0mZ3Q7bWFjX3R5cGUgIT0gSUNFX01BQ19FODMwKSB7CiAJCQlpY2VfZGVidWcoaHcsIElDRV9EQkdfSU5JVCwgJiMzNDtmb3JjaW5nIFJETUEgb2ZmXG4mIzM0Oyk7CiAJCQljYXBzLSZndDtyZG1hID0gMDsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYwppbmRleCBiZjlhODIxYzU0M2I3Li40Y2UxOThmNmExYjU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYwpAQCAtMjM2NSw4ICYjNDM7MjM2NSw5IEBAIGljZV9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKIAkJYnJlYWs7CiAJfQogCi0JLyogZmxvdyBjb250cm9sIGlzIHN5bW1ldHJpYyBhbmQgYWx3YXlzIHN1cHBvcnRlZCAqLwomIzQzOwkvKiBmbG93IGNvbnRyb2wgaXMgc3ltbWV0cmljIG9yIGFzeW1tZXRyaWMgYW5kIGFsd2F5cyBzdXBwb3J0ZWQgKi8KIAlldGh0b29sX2xpbmtfa3NldHRpbmdzX2FkZF9saW5rX21vZGUoa3MsIHN1cHBvcnRlZCwgUGF1c2UpOwomIzQzOwlldGh0b29sX2xpbmtfa3NldHRpbmdzX2FkZF9saW5rX21vZGUoa3MsIHN1cHBvcnRlZCwgQXN5bV9QYXVzZSk7CiAKIAljYXBzID0ga3phbGxvY19vYmooKmNhcHMpOwogCWlmICghY2FwcykKQEAgLTI1MDAsNiAmIzQzOzI1MDEsMjggQEAgaWNlX2tzZXR0aW5nc19maW5kX2Fkdl9saW5rX3NwZWVkKGNvbnN0IHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICprcykKIAlyZXR1cm4gYWR2X2xpbmtfc3BlZWQ7CiB9CiAKJiM0MzsvKioKJiM0MzsgKiBpY2VfYXV0b25lZ19kaXNhYmxlX2FsbG93ZWQgLSBjaGVjayBpZiBhdXRvbmVnIGNhbiBiZSBkaXNhYmxlZAomIzQzOyAqIEBwOiBwb3J0IGluZm8KJiM0MzsgKgomIzQzOyAqIENoZWNrIGlmIGF1dG9uZWdvdGlhdGlvbiBjYW4gYmUgZGlzYWJsZWQgYmFzZWQgb24gbGluayBzdGF0ZS4KJiM0MzsgKiBJQ0VfQVFfTFBfQU5fQUJJTElUWSBpcyBvbmx5IHZhbGlkIHdoZW4gdGhlIGxpbmsgaXMgdXA7IGdhdGUgdGhhdAomIzQzOyAqIGNoZWNrIGFjY29yZGluZ2x5IHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlcyBmcm9tIHN0YWxlIGxpbmsgZGF0YS4KJiM0MzsgKgomIzQzOyAqIFJldHVybjogdHJ1ZSBpZiBhdXRvbmVnIGhhcyBjb21wbGV0ZWQsIG9yIGlmIHRoZSBsaW5rIGlzIHVwIGFuZCB0aGUKJiM0MzsgKiAgICAgICAgIGxpbmsgcGFydG5lciBkb2VzIG5vdCBhZHZlcnRpc2UgYXV0b25lZ290aWF0aW9uIGNhcGFiaWxpdHkuCiYjNDM7ICovCiYjNDM7c3RhdGljIGJvb2wgaWNlX2F1dG9uZWdfZGlzYWJsZV9hbGxvd2VkKHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwKQomIzQzO3sKJiM0MzsJdTggYW5faW5mbyA9IHAtJmd0O3BoeS5saW5rX2luZm8uYW5faW5mbzsKJiM0MzsKJiM0MzsJaWYgKGFuX2luZm8gJmFtcDsgSUNFX0FRX0FOX0NPTVBMRVRFRCkKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwkvKiBJQ0VfQVFfTFBfQU5fQUJJTElUWSBpcyBvbmx5IHZhbGlkIHdoZW4gbGluayBpcyB1cCAqLwomIzQzOwlyZXR1cm4gKHAtJmd0O3BoeS5saW5rX2luZm8ubGlua19pbmZvICZhbXA7IElDRV9BUV9MSU5LX1VQKSAmYW1wOyZhbXA7CiYjNDM7CSAgICAgICAhKGFuX2luZm8gJmFtcDsgSUNFX0FRX0xQX0FOX0FCSUxJVFkpOwomIzQzO30KJiM0MzsKIC8qKgogICogaWNlX3NldHVwX2F1dG9uZWcKICAqIEBwOiBwb3J0IGluZm8KQEAgLTI1MzgsOCAmIzQzOzI1NjEsOCBAQCBpY2Vfc2V0dXBfYXV0b25lZyhzdHJ1Y3QgaWNlX3BvcnRfaW5mbyAqcCwgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmtzLAogCQkJfQogCQl9CiAJfSBlbHNlIHsKLQkJLyogSWYgYXV0b25lZyBpcyBjdXJyZW50bHkgZW5hYmxlZCAqLwotCQlpZiAocC0mZ3Q7cGh5LmxpbmtfaW5mby5hbl9pbmZvICZhbXA7IElDRV9BUV9BTl9DT01QTEVURUQpIHsKJiM0MzsJCS8qIElmIGF1dG9uZWcgY29tcGxldGVkIG9yIGxpbmsgcGFydG5lciBkb2VzIG5vdCBzdXBwb3J0IEFOICovCiYjNDM7CQlpZiAoaWNlX2F1dG9uZWdfZGlzYWJsZV9hbGxvd2VkKHApKSB7CiAJCQkvKiBJZiBhdXRvbmVnIGlzIHN1cHBvcnRlZCAxMEdCQVNFX1QgaXMgdGhlIG9ubHkgUEhZCiAJCQkgKiB0aGF0IGNhbiBkaXNhYmxlIGl0LCBzbyBvdGhlcndpc2UgcmV0dXJuIGVycm9yCiAJCQkgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTc6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcyNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFdmFsdWF0aW5nIHRoZSBLZXJuZWwgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBhc2tlZCB0byBhc3Nlc3MgdGhpcyBwYXRjaC4gVGhlIGNvbW1pdCBkaWZmIHNwZWNpZmljYWxseSB0b3VjaGVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jYC4gIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBtZWV0cyB0aGUgY3JpdGVyaWEgZm9yIGZ1enppbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBzb21lIG9ic2N1cmUgcmVhc29uIHRvIGF2b2lkIGZ1enppbmcuCgpNeSBwcmltYXJ5IHJ1bGUgaXMsIEkgc2hvdWxkIG9ubHkgKm5vdCogZnV6eiBpZiBhbGwgdGhlIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byBhIHZlcnkgc3BlY2lmaWMgc2V0IG9mIGNhdGVnb3JpZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGlmIHRoaXMgZmFsbHMgdW5kZXIgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuJiMzNDsgVGhhdCBjYXRlZ29yeSBpbmNsdWRlcyB0aGluZ3MgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgc3BlY2lmaWMsIHBoeXNpY2FsIGhhcmR3YXJlLCB0aGF0IGFyZW4mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KCkFscmlnaHQsIHNvIHdoYXQgaXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZWA/ICBBaCwgcmlnaHQhIFRoYXQmIzM5O3MgdGhlIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgwMCBTZXJpZXMgTGludXggRHJpdmVyLCB0aGUgYGljZWAgZHJpdmVyLiBPa2F5LCBzbyBub3cgdGhlIGtleSBxdWVzdGlvbjogSXMgdGhlIEludGVsIEU4MDAgc2VyaWVzIFBDSWUgTklDIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lPwoKTm8uIFRoZSBJbnRlbCBJQ0UgZHJpdmVyIGlzIGZvciBwaHlzaWNhbCBJbnRlbCA4MDAgU2VyaWVzIChFODEwIC8gRTgzMCAvIGV0Yy4pIFBDSWUgMTAwR2JFIC8gMjVHYkUgbmV0d29yayBhZGFwdGVycy4gVGhhdCBtYWtlcyBtZSBuZXJ2b3VzLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGBpY2VgICpyZXF1aXJlcyogcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLCBvciBpZiB0aGVyZSBpcyBzb21lIGVtdWxhdGlvbiwgc29mdHdhcmUgbW9ja3MsIG9yIHZpcnR1YWwgYnVzIGFic3RyYWN0aW9uLgoKRG9lcyBRRU1VIGV2ZW4gZW11bGF0ZSB0aGUgSW50ZWwgRTgwMCBzZXJpZXM/IE5vLiBRRU1VIGVtdWxhdGVzIGUxMDAwLCBlMTAwMGUsIGFuZCBpZ2IsIGJ1dCBub3QgaWNlLiBJIG5lZWQgdG8gYmUgc3VyZSB0aG91Z2guIERvZXMgYGljZWAgc3VwcG9ydCBuZXRraXQvbmV0ZGV2c2ltIG9yIGFueXRoaW5nIHZpcnR1YWw/IE5vLCBhIHF1aWNrIGNoZWNrIG9mIHRoZSBjb2RlIGNvbmZpcm1zIGl0IGlzIGEgUENJIGRyaXZlciAoYGljZV9kcml2ZXJgIGlzIHJlZ2lzdGVyZWQgd2l0aCBgcGNpX3JlZ2lzdGVyX2RyaXZlcmApLiBUbyBiZSBleHRyYSBjZXJ0YWluIEkgc2hvdWxkIHJldmlldyB0aGUgY29kZSBtb3JlIGNsb3NlbHkgb3Igc2VhcmNoIGZvciBgaWNlYCByZWZlcmVuY2VzIGluIHRoZSBrZXJuZWwgdHJlZS4gT2theSwgaXQmIzM5O3MgdmVyeSBsaWtlbHkgdGhpcyB3b24mIzM5O3QgYmUgZnV6emFibGUgZGlyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTc6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGNpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTc6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY1OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBJbnRlbCBJQ0UgRXRoZXJuZXQgRHJpdmVyKioKCk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBgcGNpX2RyaXZlcmAgc3RydWN0dXJlIHJlbGF0ZWQgdG8gdGhlIEludGVsIElDRSBFdGhlcm5ldCBkcml2ZXIuIEdpdmVuIG15IGV4cGVydGlzZSwgSSBrbm93IHRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgZGVidWdnaW5nIGFwcHJvYWNoLiBUaGUgcHJvbXB0IGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludDogYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZWAuIFRoYXQmIzM5O3MgcHJlY2lzZWx5IHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIHJlbGV2YW50IGNvZGUuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaG93IHRoZSBkcml2ZXIgcmVnaXN0ZXJzIGl0c2VsZiB3aXRoIHRoZSBQQ0kgc3Vic3lzdGVtLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaG93IHRoZSBkcml2ZXImIzM5O3MgcHJvYmVkIGFuZCB3aGF0IHN0cnVjdHVyZXMgaXQmIzM5O3MgYnVpbHQgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTc6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0IHBjaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM9NTg1MD1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyBpY2VfcGNpX2Vycl9oYW5kbGVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTU4NTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODU4OnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpY2VfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTg1OS1cdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTc6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAwMQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIGBpY2VfZHJpdmVyYCBJbml0aWFsaXphdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgSW50ZWwgRXRoZXJuZXQgYGljZWAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBpY2VfbWFpbi5jYCBmaWxlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoaXMgZHJpdmVyIGlzIGluaXRpYWxpemVkIGFuZCBob3cgaXQgaW50ZWdyYXRlcyBpbnRvIHRoZSBvdmVyYWxsIG5ldHdvcmsgc3RhY2suIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgYGljZV9kcml2ZXJgIHN0cnVjdHVyZS4gSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIGNvZGUuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSB0YWtpbmcgYSBsb29rIGFyb3VuZCBsaW5lIDU4NTggaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgZHJpdmVyJiMzOTtzIHNldHVwIHNlcXVlbmNlIGFuZCBzZWUgaG93IGBpY2VfZHJpdmVyYCBpcyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgbGFyZ2VyIGNvbnRleHQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvcmUgaW5pdGlhbGl6YXRpb24gZmxvdywgYW55IGFzc29jaWF0ZWQgY2FsbGJhY2tzLCBhbmQgdGhlIHJlbGF0aW9uc2hpcCB0byBvdGhlciByZWxldmFudCBkYXRhIHN0cnVjdHVyZXMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTg1NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs1ODU1Olx0XHQucmVzdW1lID0gaWNlX3BjaV9lcnJfcmVzdW1lXG41ODU2Olx0fTtcbjU4NTc6XHRcbjU4NTg6XHRzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaWNlX2RyaXZlciA9IHtcbjU4NTk6XHRcdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG41ODYwOlx0XHQuaWRfdGFibGUgPSBpY2VfcGNpX3RibCxcbjU4NjE6XHRcdC5wcm9iZSA9IGljZV9wcm9iZSxcbjU4NjI6XHRcdC5yZW1vdmUgPSBpY2VfcmVtb3ZlLFxuNTg2MzpcdFx0LmRyaXZlci5wbSA9IHBtX3NsZWVwX3B0cihcdTAwMjZpY2VfcG1fb3BzKSxcbjU4NjQ6XHRcdC5zaHV0ZG93biA9IGljZV9zaHV0ZG93bixcbjU4NjU6XHRcdC5zcmlvdl9jb25maWd1cmUgPSBpY2Vfc3Jpb3ZfY29uZmlndXJlLFxuNTg2NjpcdFx0LnNyaW92X2dldF92Zl90b3RhbF9tc2l4ID0gaWNlX3NyaW92X2dldF92Zl90b3RhbF9tc2l4LFxuNTg2NzpcdFx0LnNyaW92X3NldF9tc2l4X3ZlY19jb3VudCA9IGljZV9zcmlvdl9zZXRfbXNpeF92ZWNfY291bnQsXG41ODY4Olx0XHQuZXJyX2hhbmRsZXIgPSBcdTAwMjZpY2VfcGNpX2Vycl9oYW5kbGVyXG41ODY5Olx0fTtcbjU4NzA6XHRcbjU4NzE6XHQvKipcbjU4NzI6XHQgKiBpY2VfbW9kdWxlX2luaXQgLSBEcml2ZXIgcmVnaXN0cmF0aW9uIHJvdXRpbmVcbjU4NzM6XHQgKlxuNTg3NDpcdCAqIGljZV9tb2R1bGVfaW5pdCBpcyB0aGUgZmlyc3Qgcm91dGluZSBjYWxsZWQgd2hlbiB0aGUgZHJpdmVyIGlzXG41ODc1Olx0ICogbG9hZGVkLiBBbGwgaXQgZG9lcyBpcyByZWdpc3RlciB3aXRoIHRoZSBQQ0kgc3Vic3lzdGVtLlxuNTg3NjpcdCAqL1xuNTg3NzpcdHN0YXRpYyBpbnQgX19pbml0IGljZV9tb2R1bGVfaW5pdCh2b2lkKVxuNTg3ODpcdHtcbjU4Nzk6XHRcdGludCBzdGF0dXMgPSAtRU5PTUVNO1xuNTg4MDpcdFxuNTg4MTpcdFx0cHJfaW5mbyhcJiMzNDslc1xcblwmIzM0OywgaWNlX2RyaXZlcl9zdHJpbmcpO1xuNTg4MjpcdFx0cHJfaW5mbyhcJiMzNDslc1xcblwmIzM0OywgaWNlX2NvcHlyaWdodCk7XG41ODgzOlx0XG41ODg0Olx0XHRpY2VfYWR2X2xua19zcGVlZF9tYXBzX2luaXQoKTtcbjU4ODU6XHRcbjU4ODY6XHRcdGljZV93cSA9IGFsbG9jX3dvcmtxdWV1ZShcJiMzNDslc1wmIzM0OywgV1FfVU5CT1VORCwgMCwgS0JVSUxEX01PRE5BTUUpO1xuNTg4NzpcdFx0aWYgKCFpY2Vfd3EpIHtcbjU4ODg6XHRcdFx0cHJfZXJyKFwmIzM0O0ZhaWxlZCB0byBjcmVhdGUgd29ya3F1ZXVlXFxuXCYjMzQ7KTtcbjU4ODk6XHRcdFx0cmV0dXJuIHN0YXR1cztcbjU4OTA6XHRcdH1cbjU4OTE6XHRcbjU4OTI6XHRcdGljZV9sYWdfd3EgPSBhbGxvY19vcmRlcmVkX3dvcmtxdWV1ZShcJiMzNDtpY2VfbGFnX3dxXCYjMzQ7LCAwKTtcbjU4OTM6XHRcdGlmICghaWNlX2xhZ193cSkge1xuNTg5NDpcdFx0XHRwcl9lcnIoXCYjMzQ7RmFpbGVkIHRvIGNyZWF0ZSBMQUcgd29ya3F1ZXVlXFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNzoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTUwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50OgoKKipFeGFtaW5pbmcgdGhlIERldmljZSBCaW5kaW5nIFRhYmxlKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc3BlY2lmaWMgZGV2aWNlcyB0aGlzIGBpY2VfcGNpX3RibGAgdGFibGUgaXMgcmVzcG9uc2libGUgZm9yIGJpbmRpbmcgdG8uIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpdHMgY29udGVudHMgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHBpbnBvaW50IHRoZSB0YXJnZXQgZGV2aWNlcy4gVGhpcyB0YWJsZSBpcyBrZXkgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGFzc2lnbm1lbnQgb2YgdGhlc2UgcG90ZW50aWFsbHkgc3BlY2lhbGl6ZWQgTklDcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgYmluZGluZyBhY3R1YWxseSBsb29rcyBsaWtlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpY2VfcGNpX3RibCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz01MTI2PXN0YXRpYyBpbnQgaWNlX3Byb2JlX3JlY292ZXJ5X21vZGUoc3RydWN0IGljZV9wZiAqcGYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTE1OC0gKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjUxNTk6ICogQGVudDogZW50cnkgaW4gaWNlX3BjaV90YmxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTUxNjAtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz01NzgwPXN0YXRpYyB2b2lkIGljZV9wY2lfZXJyX3Jlc2V0X2RvbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTc4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU3ODU6LyogaWNlX3BjaV90YmwgLSBQQ0kgRGV2aWNlIElEIFRhYmxlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy01Nzg2LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTc5Mi0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU3OTM6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGljZV9wY2lfdGJsW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy01Nzk0LVx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODEwQ19CQUNLUExBTkUpIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTg0NS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTg0NjpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaWNlX3BjaV90YmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTg0Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz01ODU4PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpY2VfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTg1OS1cdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODYwOlx0LmlkX3RhYmxlID0gaWNlX3BjaV90YmwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy01ODYxLVx0LnByb2JlID0gaWNlX3Byb2JlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNzoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzIxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIFBDSSBEZXZpY2UgSURzIGluIGBpY2VfcGNpX3RibGAqKgoKQWxyaWdodCwgbG9va2luZyBhdCB0aGlzIGNvZGUsIGl0JiMzOTtzIGNsZWFyIHRoZXNlIGRldmljZXMgaW4gYGljZV9wY2lfdGJsYCBhcmUgUENJIGRldmljZXMsIHdpdGggaWRlbnRpZmllcnMgbGlrZSBgSUNFX0RFVl9JRF9FODEwQ19CQUNLUExBTkVgIGFuZCB0aGUgbGlrZS4gSXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmssICpva2F5LCBzbyB3aGF0IGFyZSB0aGVzZSBgSUNFX0RFVl9JRF9gIG1hY3JvcyBkZWZpbmVkIGFzPyogSSBuZWVkIHRvIGRpdmUgaW50byB0aG9zZSBoZWFkZXJzIHJpZ2h0IGF3YXkuIExldCYjMzk7cyBnZXQgdGhlIGRlZmluaXRpb25zIG9mIHRoZXNlIGBJQ0VfREVWX0lEX2AgY29uc3RhbnRzIGFuZCBmaWd1cmUgb3V0IHRoZSBzcGVjaWZpYyBkZXZpY2UgdmVuZG9yIGFuZCBkZXZpY2UgSURzIHRoZXNlIGNvcnJlc3BvbmQgdG8uIFRoYXQmIzM5O2xsIHByb3ZpZGUgdGhlIGNydWNpYWwgY29udGV4dCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgY2FwYWJpbGl0aWVzLCBmdW5jdGlvbmFsaXRpZXMsIGFuZCBleHBlY3RlZCBiZWhhdmlvciBvZiB0aGVzZSBoYXJkd2FyZSBjb21wb25lbnRzIHdpdGhpbiB0aGUgc3lzdGVtLCBsaWtlIHRoZXNlIEU4MTBDLWJhc2VkIGRldmljZXMuIEdldHRpbmcgdGhvc2UgZGV2aWNlIElEcyBtYXBwZWQgY29ycmVjdGx5IGlzIHRoZSBlc3NlbnRpYWwgZmlyc3Qgc3RlcCwgYW5kIHRoZSByZXN0IHdpbGwgZm9sbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJQ0VfREVWX0lEXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYz0xND1zdGF0aWMgREVGSU5FX01VVEVYKGljZV9hZGFwdGVyc19tdXRleCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmMtMTgtI2RlZmluZSBJQ0VfQURBUFRFUl9JTkRFWF9FODI1Q1x0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5jOjE5Olx0KElDRV9ERVZfSURfRTgyNUNfQkFDS1BMQU5FIHwgSUNFX0FEQVBURVJfRklYRURfSU5ERVgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYy0yMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5jPTIxPXN0YXRpYyB1NjQgaWNlX2FkYXB0ZXJfaW5kZXgoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmMtMjMtXHRzd2l0Y2ggKHBkZXYtXHUwMDNlZGV2aWNlKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYzoyNDpcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19CQUNLUExBTkU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYzoyNTpcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19RU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmM6MjY6XHRjYXNlIElDRV9ERVZfSURfRTgyNUNfU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmM6Mjc6XHRjYXNlIElDRV9ERVZfSURfRTgyNUNfU0dNSUk6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYy0yOC1cdFx0LyogRTgyNUMgZGV2aWNlcyBoYXZlIG11bHRpcGxlIE5BQ3Mgd2hpY2ggYXJlIGNvbm5lY3RlZCB0byB0aGVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jPTEyMz1zdGF0aWMgaW50IGljZV9zZXRfbWFjX3R5cGUoc3RydWN0IGljZV9odyAqaHcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYy0xMjgtXHRzd2l0Y2ggKGh3LVx1MDAzZWRldmljZV9pZCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxMjk6XHRjYXNlIElDRV9ERVZfSURfRTgxMENfQkFDS1BMQU5FOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxMzA6XHRjYXNlIElDRV9ERVZfSURfRTgxMENfUVNGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTMxOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MTBDX1NGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTMyOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MTBfWFhWX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTMzOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MTBfWFhWX1FTRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjEzNDpcdGNhc2UgSUNFX0RFVl9JRF9FODEwX1hYVl9TRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jLTEzNS1cdFx0aHctXHUwMDNlbWFjX3R5cGUgPSBJQ0VfTUFDX0U4MTA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jLTEzNi1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjEzNzpcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ18xMEdfQkFTRV9UOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxMzg6XHRjYXNlIElDRV9ERVZfSURfRTgyM0NfQkFDS1BMQU5FOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxMzk6XHRjYXNlIElDRV9ERVZfSURfRTgyM0NfUVNGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTQwOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTQxOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NHTUlJOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNDI6XHRjYXNlIElDRV9ERVZfSURfRTgyMkNfMTBHX0JBU0VfVDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTQzOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MjJDX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTQ0Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjJDX1FTRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE0NTpcdGNhc2UgSUNFX0RFVl9JRF9FODIyQ19TRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE0NjpcdGNhc2UgSUNFX0RFVl9JRF9FODIyQ19TR01JSTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTQ3Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjJMXzEwR19CQVNFX1Q6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE0ODpcdGNhc2UgSUNFX0RFVl9JRF9FODIyTF9CQUNLUExBTkU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE0OTpcdGNhc2UgSUNFX0RFVl9JRF9FODIyTF9TRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE1MDpcdGNhc2UgSUNFX0RFVl9JRF9FODIyTF9TR01JSTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTUxOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMXzEwR19CQVNFX1Q6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE1MjpcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF8xR0JFOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNTM6XHRjYXNlIElDRV9ERVZfSURfRTgyM0xfQkFDS1BMQU5FOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNTQ6XHRjYXNlIElDRV9ERVZfSURfRTgyM0xfUVNGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTU1Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMX1NGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMtMTU2LVx0XHRody1cdTAwM2VtYWNfdHlwZSA9IElDRV9NQUNfR0VORVJJQztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMtMTU3LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTU4Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjVDX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTU5Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjVDX1FTRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE2MDpcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19TRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE2MTpcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19TR01JSTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMtMTYyLVx0XHRody1cdTAwM2VtYWNfdHlwZSA9IElDRV9NQUNfR0VORVJJQ18zS19FODI1O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYy0xNjMtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNjQ6XHRjYXNlIElDRV9ERVZfSURfRTgzMENDX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTY1Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MzBDQ19RU0ZQNTY6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE2NjpcdGNhc2UgSUNFX0RFVl9JRF9FODMwQ0NfU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNjc6XHRjYXNlIElDRV9ERVZfSURfRTgzMENDX1NGUF9ERDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTY4Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MzBDX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTY5Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MzBfWFhWX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTcwOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MzBDX1FTRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE3MTpcdGNhc2UgSUNFX0RFVl9JRF9FODMwX1hYVl9RU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNzI6XHRjYXNlIElDRV9ERVZfSURfRTgzMENfU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNzM6XHRjYXNlIElDRV9ERVZfSURfRTgzMF9YWFZfU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNzQ6XHRjYXNlIElDRV9ERVZfSURfRTgzNUNDX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTc1Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MzVDQ19RU0ZQNTY6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE3NjpcdGNhc2UgSUNFX0RFVl9JRF9FODM1Q0NfU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNzc6XHRjYXNlIElDRV9ERVZfSURfRTgzNUNfQkFDS1BMQU5FOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNzg6XHRjYXNlIElDRV9ERVZfSURfRTgzNUNfUVNGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTc5Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MzVDX1NGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTgwOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MzVfTF9CQUNLUExBTkU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE4MTpcdGNhc2UgSUNFX0RFVl9JRF9FODM1X0xfUVNGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTgyOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MzVfTF9TRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jLTE4My1cdFx0aHctXHUwMDNlbWFjX3R5cGUgPSBJQ0VfTUFDX0U4MzA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYz0zMzU1PWJvb2wgaWNlX2lzXzEwMG1fc3BlZWRfc3VwcG9ydGVkKHN0cnVjdCBpY2VfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMtMzM1Ny1cdHN3aXRjaCAoaHctXHUwMDNlZGV2aWNlX2lkKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjMzNTg6XHRjYXNlIElDRV9ERVZfSURfRTgyMkNfU0dNSUk6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjMzNTk6XHRjYXNlIElDRV9ERVZfSURfRTgyMkxfU0dNSUk6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjMzNjA6XHRjYXNlIElDRV9ERVZfSURfRTgyM0xfMUdCRTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MzM2MTpcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ19TR01JSTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MzM2MjpcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19TR01JSTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMtMzM2My1cdFx0cmV0dXJuIHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYz00MzUxPWludCBpY2VfZ2V0X3BoeV9sYW5lX251bWJlcihzdHJ1Y3QgaWNlX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jLTQzNjMtXHRpZiAoaHctXHUwMDNlbWFjX3R5cGUgPT0gSUNFX01BQ19HRU5FUklDIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjQzNjQ6XHQgICAgaHctXHUwMDNlZGV2aWNlX2lkID09IElDRV9ERVZfSURfRTgyNUNfU0dNSUkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jLTQzNjUtXHRcdHJldHVybiBody1cdTAwM2VwZl9pZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jPTYwNDE9aW50IGljZV9nZXRfcGNhOTU3NV9oYW5kbGUoc3RydWN0IGljZV9odyAqaHcsIHUxNiAqcGNhOTU3NV9oYW5kbGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYy02MDU3LVx0LyogQ2hlY2sgaWYgdGhlIFNXIElPIGV4cGFuZGVyIGNvbnRyb2xsaW5nIFNNQSBleGlzdHMgaW4gdGhlIG5ldGxpc3QuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjYwNTg6XHRpZiAoaHctXHUwMDNlZGV2aWNlX2lkID09IElDRV9ERVZfSURfRTgxMENfU0ZQKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYy02MDU5LVx0XHRpZHggPSBTV19QQ0E5NTc1X1NGUF9UT1BPX0lEWDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6NjA2MDpcdGVsc2UgaWYgKGh3LVx1MDAzZWRldmljZV9pZCA9PSBJQ0VfREVWX0lEX0U4MTBDX1FTRlApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jLTYwNjEtXHRcdGlkeCA9IFNXX1BDQTk1NzVfUVNGUF9UT1BPX0lEWDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTctLyogRGV2aWNlIElEcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo4OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyX1NJX0RGTFQgICAgICAgICAweDE4ODhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtOS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MzUtQ0MgZm9yIGJhY2twbGFuZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoxMDojZGVmaW5lIElDRV9ERVZfSURfRTgzNUNDX0JBQ0tQTEFORVx0MHgxMjQ4XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTExLS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzNS1DQyBmb3IgUVNGUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoxMjojZGVmaW5lIElDRV9ERVZfSURfRTgzNUNDX1FTRlA1Nlx0MHgxMjQ5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTEzLS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzNS1DQyBmb3IgU0ZQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjE0OiNkZWZpbmUgSUNFX0RFVl9JRF9FODM1Q0NfU0ZQXHRcdDB4MTI0QVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xNS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MzUtQyBmb3IgYmFja3BsYW5lICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjE2OiNkZWZpbmUgSUNFX0RFVl9JRF9FODM1Q19CQUNLUExBTkVcdDB4MTI2MVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xNy0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MzUtQyBmb3IgUVNGUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoxODojZGVmaW5lIElDRV9ERVZfSURfRTgzNUNfUVNGUFx0XHQweDEyNjJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMTktLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODM1LUMgZm9yIFNGUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoyMDojZGVmaW5lIElDRV9ERVZfSURfRTgzNUNfU0ZQXHRcdDB4MTI2M1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0yMS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MzUtTCBmb3IgYmFja3BsYW5lICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjIyOiNkZWZpbmUgSUNFX0RFVl9JRF9FODM1X0xfQkFDS1BMQU5FXHQweDEyNjVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMjMtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODM1LUwgZm9yIFFTRlAgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6MjQ6I2RlZmluZSBJQ0VfREVWX0lEX0U4MzVfTF9RU0ZQXHRcdDB4MTI2NlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0yNS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MzUtTCBmb3IgU0ZQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjI2OiNkZWZpbmUgSUNFX0RFVl9JRF9FODM1X0xfU0ZQXHRcdDB4MTI2N1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0yNy0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjMtTCBmb3IgYmFja3BsYW5lICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjI4OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIzTF9CQUNLUExBTkVcdDB4MTI0Q1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0yOS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjMtTCBmb3IgU0ZQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjMwOiNkZWZpbmUgSUNFX0RFVl9JRF9FODIzTF9TRlBcdFx0MHgxMjREXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTMxLS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyMy1ML1g1NTctQVQgMTBHQkFTRS1UICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjMyOiNkZWZpbmUgSUNFX0RFVl9JRF9FODIzTF8xMEdfQkFTRV9UXHQweDEyNEVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMzMtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODIzLUwgMUdiRSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDozNDojZGVmaW5lIElDRV9ERVZfSURfRTgyM0xfMUdCRVx0XHQweDEyNEZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMzUtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODIzLUwgZm9yIFFTRlAgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6MzY6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjNMX1FTRlBcdFx0MHgxNTFEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTM3LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzMC1DQyBmb3IgYmFja3BsYW5lICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjM4OiNkZWZpbmUgSUNFX0RFVl9JRF9FODMwQ0NfQkFDS1BMQU5FXHQweDEyRDFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMzktLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLUNDIGZvciBRU0ZQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjQwOiNkZWZpbmUgSUNFX0RFVl9JRF9FODMwQ0NfUVNGUDU2XHQweDEyRDJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNDEtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLUNDIGZvciBTRlAgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6NDI6I2RlZmluZSBJQ0VfREVWX0lEX0U4MzBDQ19TRlBcdFx0MHgxMkQzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTQzLS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzMC1DQyBmb3IgU0ZQLUREICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjQ0OiNkZWZpbmUgSUNFX0RFVl9JRF9FODMwQ0NfU0ZQX0REXHQweDEyRDRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNDUtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLUMgZm9yIGJhY2twbGFuZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo0NjojZGVmaW5lIElDRV9ERVZfSURfRTgzMENfQkFDS1BMQU5FXHQweDEyRDVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNDctLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLUMgZm9yIFFTRlAgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6NDg6I2RlZmluZSBJQ0VfREVWX0lEX0U4MzBDX1FTRlBcdFx0MHgxMkQ4XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTQ5LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzMC1DIGZvciBTRlAgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6NTA6I2RlZmluZSBJQ0VfREVWX0lEX0U4MzBDX1NGUFx0XHQweDEyREFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNTEtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLVhYViBmb3IgYmFja3BsYW5lICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjUyOiNkZWZpbmUgSUNFX0RFVl9JRF9FODMwX1hYVl9CQUNLUExBTkVcdDB4MTJEQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC01My0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MzAtWFhWIGZvciBRU0ZQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjU0OiNkZWZpbmUgSUNFX0RFVl9JRF9FODMwX1hYVl9RU0ZQXHQweDEyRERcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNTUtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLVhYViBmb3IgU0ZQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjU2OiNkZWZpbmUgSUNFX0RFVl9JRF9FODMwX1hYVl9TRlBcdFx0MHgxMkRFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTU3LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgxMC1DIGZvciBiYWNrcGxhbmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6NTg6I2RlZmluZSBJQ0VfREVWX0lEX0U4MTBDX0JBQ0tQTEFORVx0MHgxNTkxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTU5LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgxMC1DIGZvciBRU0ZQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjYwOiNkZWZpbmUgSUNFX0RFVl9JRF9FODEwQ19RU0ZQXHRcdDB4MTU5MlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC02MS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MTAtQyBmb3IgU0ZQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjYyOiNkZWZpbmUgSUNFX0RFVl9JRF9FODEwQ19TRlBcdFx0MHgxNTkzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTYzLSNkZWZpbmUgSUNFX1NVQkRFVl9JRF9FODEwVFx0XHQweDAwMEVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTcwLS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgxMC1YWFYgZm9yIGJhY2twbGFuZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo3MTojZGVmaW5lIElDRV9ERVZfSURfRTgxMF9YWFZfQkFDS1BMQU5FXHQweDE1OTlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNzItLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODEwLVhYViBmb3IgUVNGUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo3MzojZGVmaW5lIElDRV9ERVZfSURfRTgxMF9YWFZfUVNGUFx0MHgxNTlBXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTc0LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgxMC1YWFYgZm9yIFNGUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo3NTojZGVmaW5lIElDRV9ERVZfSURfRTgxMF9YWFZfU0ZQXHRcdDB4MTU5QlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC03Ni0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjMtQyBmb3IgYmFja3BsYW5lICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjc3OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIzQ19CQUNLUExBTkVcdDB4MTg4QVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC03OC0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjMtQyBmb3IgUVNGUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo3OTojZGVmaW5lIElDRV9ERVZfSURfRTgyM0NfUVNGUFx0XHQweDE4OEJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtODAtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODIzLUMgZm9yIFNGUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo4MTojZGVmaW5lIElDRV9ERVZfSURfRTgyM0NfU0ZQXHRcdDB4MTg4Q1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC04Mi0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjMtQy9YNTU3LUFUIDEwR0JBU0UtVCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo4MzojZGVmaW5lIElDRV9ERVZfSURfRTgyM0NfMTBHX0JBU0VfVFx0MHgxODhEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTg0LS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyMy1DIDFHYkUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6ODU6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjNDX1NHTUlJXHRcdDB4MTg4RVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC04Ni0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjItQyBmb3IgYmFja3BsYW5lICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjg3OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyQ19CQUNLUExBTkVcdDB4MTg5MFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC04OC0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjItQyBmb3IgUVNGUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo4OTojZGVmaW5lIElDRV9ERVZfSURfRTgyMkNfUVNGUFx0XHQweDE4OTFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtOTAtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODIyLUMgZm9yIFNGUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo5MTojZGVmaW5lIElDRV9ERVZfSURfRTgyMkNfU0ZQXHRcdDB4MTg5MlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC05Mi0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjItQy9YNTU3LUFUIDEwR0JBU0UtVCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo5MzojZGVmaW5lIElDRV9ERVZfSURfRTgyMkNfMTBHX0JBU0VfVFx0MHgxODkzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTk0LS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyMi1DIDFHYkUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6OTU6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjJDX1NHTUlJXHRcdDB4MTg5NFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC05Ni0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjItTCBmb3IgYmFja3BsYW5lICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjk3OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyTF9CQUNLUExBTkVcdDB4MTg5N1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC05OC0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjItTCBmb3IgU0ZQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjk5OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyTF9TRlBcdFx0MHgxODk4XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTEwMC0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjItTC9YNTU3LUFUIDEwR0JBU0UtVCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoxMDE6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjJMXzEwR19CQVNFX1RcdDB4MTg5OVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xMDItLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODIyLUwgMUdiRSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoxMDM6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjJMX1NHTUlJXHRcdDB4MTg5QVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xMDQtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODI1LUMgZm9yIGJhY2twbGFuZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoxMDU6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjVDX0JBQ0tQTEFORVx0MHg1NzljXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTEwNi0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjUtQyBmb3IgUVNGUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoxMDc6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjVDX1FTRlBcdFx0MHg1NzlkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTEwOC0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjUtQyBmb3IgU0ZQICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjEwOTojZGVmaW5lIElDRV9ERVZfSURfRTgyNUNfU0ZQXHRcdDB4NTc5ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xMTAtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODI1LUMgMUdiRSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoxMTE6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjVDX1NHTUlJXHRcdDB4NTc5ZlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xMTItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmM9MTExPXN0YXRpYyBib29sIGljZV9kcGxsX2lzX3N3X3BpbihzdHJ1Y3QgaWNlX3BmICpwZiwgdTggaW5kZXgsIGJvb2wgaW5wdXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuYy0xMTIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmM6MTEzOlx0aWYgKGlucHV0IFx1MDAyNlx1MDAyNiBwZi1cdTAwM2Vody5kZXZpY2VfaWQgPT0gSUNFX0RFVl9JRF9FODEwQ19RU0ZQKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmMtMTE0LVx0XHRpbmRleCAtPSBJQ0VfRFBMTF9TV19QSU5fSU5QVVRfQkFTRV9RU0ZQIC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuYz0zNDU3PXN0YXRpYyBpbnQgaWNlX2RwbGxfaW5pdF9yZWZfc3luY19pbnB1dHMoc3RydWN0IGljZV9wZiAqcGYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmMtMzUxMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jOjM1MTQ6XHRcdFx0aWYgKGh3LVx1MDAzZWRldmljZV9pZCA9PSBJQ0VfREVWX0lEX0U4MTBDX1NGUCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jLTM1MTUtXHRcdFx0ICAgIHBpbiBcdTAwM2UgSUNFX0RQTExfRTgxMENfU0ZQX05DX1NUQVJUKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jPTQ4NTQ9c3RhdGljIGludCBpY2VfZHBsbF9pbml0X2luZm9fc3dfcGlucyhzdHJ1Y3QgaWNlX3BmICpwZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuYy00ODYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmM6NDg2MzpcdGlmIChwZi1cdTAwM2Vody5kZXZpY2VfaWQgPT0gSUNFX0RFVl9JRF9FODEwQ19RU0ZQKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmMtNDg2NC1cdFx0aW5wdXRfaWR4X29mZnNldCA9IElDRV9FODEwX1JDTEtfUElOU19OVU07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9md191cGRhdGUuYz03NzI9aWNlX29wX3BjaV9tYXRjaF9yZWNvcmQoc3RydWN0IHBsZG1mdyAqY29udGV4dCwgc3RydWN0IHBsZG1md19yZWNvcmQgKnJlY29yZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Z3X3VwZGF0ZS5jLTgxOS1cdCAgICAoaWQuZGV2aWNlID09IFBDSV9BTllfSUQgfHwgaWQuZGV2aWNlID09IHBkZXYtXHUwMDNlZGV2aWNlIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Z3X3VwZGF0ZS5jOjgyMDpcdCAgICBpZC5kZXZpY2UgPT0gSUNFX0RFVl9JRF9FODIyX1NJX0RGTFQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9md191cGRhdGUuYy04MjEtXHQgICAgKGlkLnN1YnN5c3RlbV92ZW5kb3IgPT0gUENJX0FOWV9JRCB8fFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM9Mzk3Mj12b2lkIGljZV9pbml0X2ZlYXR1cmVfc3VwcG9ydChzdHJ1Y3QgaWNlX3BmICpwZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTM5NzQtXHRzd2l0Y2ggKHBmLVx1MDAzZWh3LmRldmljZV9pZCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzozOTc1Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MTBDX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mzk3NjpcdGNhc2UgSUNFX0RFVl9JRF9FODEwQ19RU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzozOTc3Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MTBDX1NGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mzk3ODpcdGNhc2UgSUNFX0RFVl9JRF9FODEwX1hYVl9CQUNLUExBTkU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjM5Nzk6XHRjYXNlIElDRV9ERVZfSURfRTgxMF9YWFZfUVNGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mzk4MDpcdGNhc2UgSUNFX0RFVl9JRF9FODEwX1hYVl9TRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTM5ODEtXHRcdGljZV9zZXRfZmVhdHVyZV9zdXBwb3J0KHBmLCBJQ0VfRl9EU0NQKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz01NzkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpY2VfcGNpX3RibFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTc5NDpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgxMENfQkFDS1BMQU5FKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTc5NTpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgxMENfUVNGUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU3OTY6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MTBDX1NGUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU3OTc6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MTBfWFhWX0JBQ0tQTEFORSkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU3OTg6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MTBfWFhWX1FTRlApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1Nzk5Olx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODEwX1hYVl9TRlApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODAwOlx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODIzQ19CQUNLUExBTkUpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODAxOlx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODIzQ19RU0ZQKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgwMjpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyM0NfU0ZQKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgwMzpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyM0NfMTBHX0JBU0VfVCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MDQ6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjNDX1NHTUlJKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgwNTpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyMkNfQkFDS1BMQU5FKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgwNjpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyMkNfUVNGUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MDc6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjJDX1NGUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MDg6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjJDXzEwR19CQVNFX1QpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODA5Olx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODIyQ19TR01JSSkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MTA6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjJMX0JBQ0tQTEFORSkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MTE6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjJMX1NGUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MTI6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjJMXzEwR19CQVNFX1QpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODEzOlx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODIyTF9TR01JSSkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MTQ6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjNMX0JBQ0tQTEFORSkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MTU6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjNMX1NGUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MTY6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjNMXzEwR19CQVNFX1QpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODE3Olx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODIzTF8xR0JFKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgxODpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyM0xfUVNGUCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MTk6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjJfU0lfREZMVCkgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MjA6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjVDX0JBQ0tQTEFORSksIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODIxOlx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODI1Q19RU0ZQKSwgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MjI6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjVDX1NGUCksIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODIzOlx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODI1Q19TR01JSSksIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODI0Olx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODMwQ0NfQkFDS1BMQU5FKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgyNTpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgzMENDX1FTRlA1NikgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MjY6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MzBDQ19TRlApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODI3Olx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODMwQ0NfU0ZQX0REKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgyODpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgzMENfQkFDS1BMQU5FKSwgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4Mjk6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MzBfWFhWX0JBQ0tQTEFORSksIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODMwOlx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODMwQ19RU0ZQKSwgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MzE6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MzBfWFhWX1FTRlApLCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgzMjpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgzMENfU0ZQKSwgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MzM6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MzBfWFhWX1NGUCksIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODM0Olx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODM1Q0NfQkFDS1BMQU5FKSwgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MzU6XHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MzVDQ19RU0ZQNTYpLCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgzNjpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgzNUNDX1NGUCksIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODM3Olx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODM1Q19CQUNLUExBTkUpLCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgzODpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgzNUNfUVNGUCksIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODM5Olx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODM1Q19TRlApLCB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTg0MDpcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgzNV9MX0JBQ0tQTEFORSksIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODQxOlx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODM1X0xfUVNGUCksIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODQyOlx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODM1X0xfU0ZQKSwgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTU4NDMtXHQvKiByZXF1aXJlZCBsYXN0IGVudHJ5ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYz01NzU2PXN0YXRpYyBpbnQgaWNlX2dldF9wZl9jODI3X2lkeChzdHJ1Y3QgaWNlX2h3ICpodywgdTggKmlkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTU3NjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjU3Njc6XHRpZiAoaHctXHUwMDNlZGV2aWNlX2lkICE9IElDRV9ERVZfSURfRTgxMENfUVNGUCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy01NzY4LVx0XHQqaWR4ID0gQzgyN18wO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM9NTk0OT1pY2VfY2d1X2dldF9waW5fZGVzYyhzdHJ1Y3QgaWNlX2h3ICpodywgYm9vbCBpbnB1dCwgaW50ICpzaXplKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNTk1My1cdHN3aXRjaCAoaHctXHUwMDNlZGV2aWNlX2lkKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjU5NTQ6XHRjYXNlIElDRV9ERVZfSURfRTgxMENfU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy01OTU1LVx0XHRpZiAoaW5wdXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTU5NjItXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo1OTYzOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MTBDX1FTRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTU5NjQtXHRcdGlmIChpbnB1dCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNTk3MS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjU5NzI6XHRjYXNlIElDRV9ERVZfSURfRTgyM0xfMTBHX0JBU0VfVDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NTk3MzpcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF8xR0JFOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo1OTc0Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NTk3NTpcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF9RU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo1OTc2Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMX1NGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NTk3NzpcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ18xMEdfQkFTRV9UOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo1OTc4Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NTk3OTpcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ19RU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo1OTgwOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NTk4MTpcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ19TR01JSTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNTk4Mi1cdFx0dCA9IGljZV9jZ3VfZ2V0X3Bpbl9kZXNjX2U4MjMoaHcsIGlucHV0LCBzaXplKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jPTYxNjc9aW50IGljZV9nZXRfY2d1X3JjbGtfcGluX2luZm8oc3RydWN0IGljZV9odyAqaHcsIHU4ICpiYXNlX2lkeCwgdTggKnBpbl9udW0pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy02MTcyLVx0c3dpdGNoIChody1cdTAwM2VkZXZpY2VfaWQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjE3MzpcdGNhc2UgSUNFX0RFVl9JRF9FODEwQ19TRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYxNzQ6XHRjYXNlIElDRV9ERVZfSURfRTgxMENfUVNGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNjE3NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTYxODItXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MTgzOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMXzEwR19CQVNFX1Q6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYxODQ6XHRjYXNlIElDRV9ERVZfSURfRTgyM0xfMUdCRTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjE4NTpcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF9CQUNLUExBTkU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYxODY6XHRjYXNlIElDRV9ERVZfSURfRTgyM0xfUVNGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjE4NzpcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF9TRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYxODg6XHRjYXNlIElDRV9ERVZfSURfRTgyM0NfMTBHX0JBU0VfVDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjE4OTpcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ19CQUNLUExBTkU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYxOTA6XHRjYXNlIElDRV9ERVZfSURfRTgyM0NfUVNGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjE5MTpcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ19TRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYxOTI6XHRjYXNlIElDRV9ERVZfSURfRTgyM0NfU0dNSUk6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTYxOTMtXHRcdCpwaW5fbnVtID0gSUNFX0U4MlhfUkNMS19QSU5TX05VTTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTYyMDMtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjA0Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjVDX0JBQ0tQTEFORTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjIwNTpcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19RU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjA2Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjVDX1NGUDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjIwNzpcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19TR01JSTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNjIwOC1cdFx0KnBpbl9udW0gPSBJQ0VfU1lOQ0VfQ0xLX05VTTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jPTYyMzA9aW50IGljZV9jZ3VfZ2V0X291dHB1dF9waW5fc3RhdGVfY2FwcyhzdHJ1Y3QgaWNlX2h3ICpodywgdTggcGluX2lkLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNjIzNS1cdHN3aXRjaCAoaHctXHUwMDNlZGV2aWNlX2lkKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYyMzY6XHRjYXNlIElDRV9ERVZfSURfRTgxMENfU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy02MjM3LVx0XHRpZiAocGluX2lkID09IFpMX09VVDIgfHwgcGluX2lkID09IFpMX09VVDMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy02MjM5LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjI0MDpcdGNhc2UgSUNFX0RFVl9JRF9FODEwQ19RU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy02MjQxLVx0XHRpZiAocGluX2lkID09IFpMX09VVDIgfHwgcGluX2lkID09IFpMX09VVDMgfHwgcGluX2lkID09IFpMX09VVDQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy02MjQzLVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjI0NDpcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF8xMEdfQkFTRV9UOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjQ1Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMXzFHQkU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYyNDY6XHRjYXNlIElDRV9ERVZfSURfRTgyM0xfQkFDS1BMQU5FOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjQ3Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMX1FTRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYyNDg6XHRjYXNlIElDRV9ERVZfSURfRTgyM0xfU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjQ5Olx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDXzEwR19CQVNFX1Q6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYyNTA6XHRjYXNlIElDRV9ERVZfSURfRTgyM0NfQkFDS1BMQU5FOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjUxOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1FTRlA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYyNTI6XHRjYXNlIElDRV9ERVZfSURfRTgyM0NfU0ZQOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjUzOlx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NHTUlJOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy02MjU0LVx0XHRpZiAoaHctXHUwMDNlY2d1X3BhcnRfbnVtYmVyID09XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE3OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDEyCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBpY2VgIERyaXZlciBhbmQgaXRzIEhhcmR3YXJlIERlcGVuZGVuY2llcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gRmlyc3QsIEkgbmVlZCB0byByZXZpc2l0IFNlY3Rpb24gMiBvZiB0aGUgaW5zdHJ1Y3Rpb25zLiBUaGUgYml0IGFib3V0ICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsg4oCTIHRoYXQmIzM5O3MgdGhlIGtleS4gU3BlY2lmaWNhbGx5LCB0aGUgbWVudGlvbiBvZiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBHUFUgZHJpdmVycyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBhbmQgYGFtZGdwdWAuIFRoZSBjcml0aWNhbCBwb2ludCBoZXJlIGlzIHRoYXQgdGhlc2UgcmVxdWlyZSBhY3R1YWwgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLCB3aGljaCBhcmVuJiMzOTt0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLgoKTm93LCBjb25zaWRlcmluZyB0aGUgYGljZWAgZHJpdmVyIOKAkyB0aGF0JiMzOTtzIHRoZSBkcml2ZXIgZm9yIEludGVsIEV0aGVybmV0IDgwMCBTZXJpZXMgY2FyZHMsIHRoaW5ncyBsaWtlIHRoZSBFODEwLCBFODIyLCBhbmQgdGhlIHJlc3QuIFRoZXNlIGFyZSBzZXJpb3VzLCBoaWdoLXBlcmZvcm1hbmNlIGVudGVycHJpc2UgRXRoZXJuZXQgUENJZSBjb250cm9sbGVycyDigJMgMTAwR2JFLCAyNUdiRSwgdGhhdCBzb3J0IG9mIHRoaW5nLiBUaGUgaW1wbGljYXRpb24gaXMsIHRoZXNlICpyZXF1aXJlKiBwaHlzaWNhbCBJbnRlbCBFODAwIHNlcmllcyBQQ0llIGhhcmR3YXJlLiBBbmQsIGFzIEkgc3VzcGVjdGVkLCBzdGFuZGFyZCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhvc2UsIG9ubHkgdGhlIG9sZGVyIGFuZCBsZXNzIHBlcmZvcm1hbnQgZTEwMDAsIGUxMDAwZSwgYW5kIGlnYiBkZXZpY2VzLgoKQnV0IGhvbGQgb24uIFRoaXMgYWx3YXlzIHByb21wdHMgdGhlIHF1ZXN0aW9uOiBJcyB0aGVyZSAqYW55KiBwb3NzaWJpbGl0eSBvZiBhIHZpcnR1YWwgb3IgYXV4aWxpYXJ5IGRldmljZSBiaW5kaW5nICp3aXRob3V0KiBwaHlzaWNhbCBoYXJkd2FyZT8gQSBsb25nIHNob3QsIGJ1dCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIEkgc2hvdWxkIGNoZWNrIGhvdyBgaWNlX3Byb2JlYCB3b3Jrcy4gQ2FuIGl0IGJlIHByb2JlZCB3aXRob3V0IGEgcmVhbCBQQ0kgZGV2aWNlPyBUaGUgbG9naWMgaXMgdGhhdCBgaWNlX3Byb2JlYCBpcyB0cmlnZ2VyZWQgYnkgdGhlIFBDSSBjb3JlIHdoZW5ldmVyIGl0IGZpbmRzIGEgbWF0Y2hpbmcgUENJIHZlbmRvciBhbmQgZGV2aWNlIElELiBUaGVyZWZvcmUsIEkgbmVlZCB0byBjaGVjayBgaWNlX3Byb2JlYCBmb3IgbW9yZSBpbnNpZ2h0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTE2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs1MTYwOlx0ICpcbjUxNjE6XHQgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgb24gZmFpbHVyZVxuNTE2MjpcdCAqL1xuNTE2MzpcdHN0YXRpYyBpbnRcbjUxNjQ6XHRpY2VfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIF9fYWx3YXlzX3VudXNlZCAqZW50KVxuNTE2NTpcdHtcbjUxNjY6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuNTE2NzpcdFx0Ym9vbCBuZWVkX2Rldl9kZWluaXQgPSBmYWxzZTtcbjUxNjg6XHRcdHN0cnVjdCBpY2VfYWRhcHRlciAqYWRhcHRlcjtcbjUxNjk6XHRcdHN0cnVjdCBpY2VfcGYgKnBmO1xuNTE3MDpcdFx0c3RydWN0IGljZV9odyAqaHc7XG41MTcxOlx0XHRpbnQgZXJyO1xuNTE3MjpcdFxuNTE3MzpcdFx0aWYgKHBkZXYtXHUwMDNlaXNfdmlydGZuKSB7XG41MTc0Olx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtjYW4mIzM5O3QgcHJvYmUgYSB2aXJ0dWFsIGZ1bmN0aW9uXFxuXCYjMzQ7KTtcbjUxNzU6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG41MTc2Olx0XHR9XG41MTc3Olx0XG41MTc4Olx0XHQvKiB3aGVuIHVuZGVyIGEga2R1bXAga2VybmVsIGluaXRpYXRlIGEgcmVzZXQgYmVmb3JlIGVuYWJsaW5nIHRoZVxuNTE3OTpcdFx0ICogZGV2aWNlIGluIG9yZGVyIHRvIGNsZWFyIG91dCBhbnkgcGVuZGluZyBETUEgdHJhbnNhY3Rpb25zLiBUaGVzZVxuNTE4MDpcdFx0ICogdHJhbnNhY3Rpb25zIGNhbiBjYXVzZSBzb21lIHN5c3RlbXMgdG8gbWFjaGluZSBjaGVjayB3aGVuIGRvaW5nXG41MTgxOlx0XHQgKiB0aGUgcGNpbV9lbmFibGVfZGV2aWNlKCkgYmVsb3cuXG41MTgyOlx0XHQgKi9cbjUxODM6XHRcdGlmIChpc19rZHVtcF9rZXJuZWwoKSkge1xuNTE4NDpcdFx0XHRwY2lfc2F2ZV9zdGF0ZShwZGV2KTtcbjUxODU6XHRcdFx0cGNpX2NsZWFyX21hc3RlcihwZGV2KTtcbjUxODY6XHRcdFx0ZXJyID0gcGNpZV9mbHIocGRldik7XG41MTg3Olx0XHRcdGlmIChlcnIpXG41MTg4Olx0XHRcdFx0cmV0dXJuIGVycjtcbjUxODk6XHRcdFx0cGNpX3Jlc3RvcmVfc3RhdGUocGRldik7XG41MTkwOlx0XHR9XG41MTkxOlx0XG41MTkyOlx0XHQvKiB0aGlzIGRyaXZlciB1c2VzIGRldnJlcywgc2VlXG41MTkzOlx0XHQgKiBEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3RcbjUxOTQ6XHRcdCAqL1xuNTE5NTpcdFx0ZXJyID0gcGNpbV9lbmFibGVfZGV2aWNlKHBkZXYpO1xuNTE5NjpcdFx0aWYgKGVycilcbjUxOTc6XHRcdFx0cmV0dXJuIGVycjtcbjUxOTg6XHRcbjUxOTk6XHRcdGVyciA9IHBjaW1faW9tYXBfcmVnaW9ucyhwZGV2LCBCSVQoSUNFX0JBUjApLCBkZXZfZHJpdmVyX3N0cmluZyhkZXYpKTtcbjUyMDA6XHRcdGlmIChlcnIpIHtcbjUyMDE6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0JBUjAgSS9PIG1hcCBlcnJvciAlZFxcblwmIzM0OywgZXJyKTtcbjUyMDI6XHRcdFx0cmV0dXJuIGVycjtcbjUyMDM6XHRcdH1cbjUyMDQ6XHRcbjUyMDU6XHRcdHBmID0gaWNlX2FsbG9jYXRlX3BmKGRldik7XG41MjA2Olx0XHRpZiAoIXBmKVxuNTIwNzpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbjUyMDg6XHRcbjUyMDk6XHRcdC8qIGluaXRpYWxpemUgQXV4aWxpYXJ5IGluZGV4IHRvIGludmFsaWQgdmFsdWUgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTc6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI0MTIKCQkJCQkJCW91dHB1dDogMTEwCgkJCQkJCQl0aG91Z2h0czogNzM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBQYXRjaCYjMzk7cyBGdXp6aW5nIFdvcnRoaW5lc3MqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBleHBsaWNpdGx5IHRhcmdldHMgdGhlIEludGVsIEU4MDAgc2VyaWVzIE5JQ3MsIHNwZWNpZmljYWxseSBieSB0b3VjaGluZyB0aGUgYGljZWAgZHJpdmVyIGZpbGVzOiBgaWNlX2NvbW1vbi5jYCBhbmQgYGljZV9ldGh0b29sLmNgLiAgSSBrbm93IHRoZSBgaWNlYCBkcml2ZXIuIEl0JiMzOTtzIHRoZSBvbmUgZm9yIHRob3NlIEludGVsIEV0aGVybmV0IDgwMCBTZXJpZXMgZGV2aWNlcy4gQW5kIEkgc2VlIG1vZGlmaWNhdGlvbnMgdG8gZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcG9ydCBjYXBhYmlsaXRpZXMgKGBpY2VfcmVjYWxjX3BvcnRfbGltaXRlZF9jYXBzYCkgYW5kIGV0aHRvb2wgc2V0dGluZ3MgKGBpY2VfZ2V0X2xpbmtfa3NldHRpbmdzYCwgYGljZV9hdXRvbmVnX2Rpc2FibGVfYWxsb3dlZGAsIGBpY2Vfc2V0dXBfYXV0b25lZ2ApLgoKQ3J1Y2lhbGx5LCB0aGUgY29kZSByZWZlcmVuY2VzIHRoZSBgSUNFX01BQ19FODMwYCB3aGljaCBjb25maXJtcyB0aGUgZm9jdXMgb24gdGhhdCBmYW1pbHkgb2YgaGFyZHdhcmUuICBUaGlzIGlzbiYjMzk7dCBnZW5lcmFsIEV0aGVybmV0OyB0aGlzIGlzIHNwZWNpYWxpemVkIGhhcmR3YXJlLgoKTm93LCB0aGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIGNhbiBiZSByZWFjaGVkIGluIGEgdHlwaWNhbCBmdXp6aW5nIHNldHVwLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbGlrZSBRRU1VIGFuZCBHQ0UsIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25zICpjYW5ub3QqIGVtdWxhdGUgdGhpcyB0eXBlIG9mIHBoeXNpY2FsLCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZS4gIFRoZSBkb2N1bWVudGF0aW9uIGV4cGxpY2l0bHkgc3RhdGVzIHRoaXMgbGltaXRhdGlvbjogIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIGFyZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gdGhvc2UgZW52aXJvbm1lbnRzLiAgVGhlIGBpY2VgIGRyaXZlciBkZWZpbml0ZWx5IGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeS4KCkkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHN5emthbGxlciAqY2Fubm90KiBmdXp6IHRoZSBgaWNlYCBkcml2ZXIgdW5sZXNzIGEgcmVhbCBJbnRlbCBFODAwIFBDSWUgZGV2aWNlIGlzIHByZXNlbnQgb3IgZW11bGF0ZWQsIHdoaWNoIHdlIGtub3cgaXNuJiMzOTt0IHRoZSBjYXNlIGluIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25zLgoKVGhlcmVmb3JlLCBhcHBseWluZyB0aGUgdGVzdCBjb25kaXRpb25zLCB0aGlzIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIHdpdGhpbiB0aGUgY29udGV4dCBvZiBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50cy4gVGhlIGluc3RydWN0aW9ucyBhcmUgY2xlYXI7IGlmIHRoZSBjb2RlIGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeSwgd2Ugc2V0IGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuIFNvLCBJJiMzOTtsbCBzZXQgYFdvcnRoRnV6emluZyA9IGZhbHNlYCwgYEZvY3VzU3ltYm9scyA9IFtdYCwgYW5kIGBFbmFibGVDb25maWdzID0gW11gLiBJJiMzOTtsbCBhbHNvIHByb3ZpZGUgYSBjb25jaXNlIHJlYXNvbmluZzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEV0aGVybmV0IDgwMCBTZXJpZXMgKGljZSkgbmV0d29yayBkcml2ZXIgKGljZV9jb21tb24uYyBhbmQgaWNlX2V0aHRvb2wuYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIChJbnRlbCBFODAwIHNlcmllcyBOSUNzKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBFdGhlcm5ldCA4MDAgU2VyaWVzIChpY2UpIGRyaXZlciAoaWNlX2NvbW1vbi5jIGFuZCBpY2VfZXRodG9vbC5jKS4gVGhpcyBkcml2ZXIgZHJpdmVzIHBoeXNpY2FsIEludGVsIEU4MDAgc2VyaWVzIFBDSWUgbmV0d29yayBhZGFwdGVycywgd2hpY2ggcmVxdWlyZSBzcGVjaWFsaXplZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4sIFFFTVUpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBFdGhlcm5ldCA4MDAgU2VyaWVzIChpY2UpIGRyaXZlciAoaWNlX2NvbW1vbi5jIGFuZCBpY2VfZXRodG9vbC5jKS4gVGhpcyBkcml2ZXIgZHJpdmVzIHBoeXNpY2FsIEludGVsIEU4MDAgc2VyaWVzIFBDSWUgbmV0d29yayBhZGFwdGVycywgd2hpY2ggcmVxdWlyZSBzcGVjaWFsaXplZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4sIFFFTVUpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE3OjI5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNzoyODo1OC41Mzk1ODc4MzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDE3NTE0NTA4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBFdGhlcm5ldCA4MDAgU2VyaWVzIChpY2UpIGRyaXZlciAoaWNlX2NvbW1vbi5jIGFuZCBpY2VfZXRodG9vbC5jKS4gVGhpcyBkcml2ZXIgZHJpdmVzIHBoeXNpY2FsIEludGVsIEU4MDAgc2VyaWVzIFBDSWUgbmV0d29yayBhZGFwdGVycywgd2hpY2ggcmVxdWlyZSBzcGVjaWFsaXplZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4sIFFFTVUpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE3OjI4OjU4LjUzOTU5Mjg2OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI1MTQ3MTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmVjM2JkY2I1YTQ3YjFiOGZhYmEzMmNkODIyMWNkOTUwOTFiNjM0MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIFNlcCAxNSAxNzoyODo1NyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uY1xcbmluZGV4IGVmMWNlMTA2ZjgxYjUuLmQ1MzMwN2IxNjhlMmIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcXG5AQCAtMjUwNyw3ICsyNTA3LDcgQEAgaWNlX3JlY2FsY19wb3J0X2xpbWl0ZWRfY2FwcyhzdHJ1Y3QgaWNlX2h3ICpodywgc3RydWN0IGljZV9od19jb21tb25fY2FwcyAqY2FwcylcXG4gXFx0XFx0Y2Fwcy1cXHUwMDNlbWF4dGMgPSA0O1xcbiBcXHRcXHRpY2VfZGVidWcoaHcsIElDRV9EQkdfSU5JVCwgXFxcInJlZHVjaW5nIG1heHRjIHRvICVkIChiYXNlZCBvbiAjcG9ydHMpXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHQgIGNhcHMtXFx1MDAzZW1heHRjKTtcXG4tXFx0XFx0aWYgKGNhcHMtXFx1MDAzZXJkbWEpIHtcXG4rXFx0XFx0aWYgKGNhcHMtXFx1MDAzZXJkbWEgXFx1MDAyNlxcdTAwMjYgaHctXFx1MDAzZW1hY190eXBlICE9IElDRV9NQUNfRTgzMCkge1xcbiBcXHRcXHRcXHRpY2VfZGVidWcoaHcsIElDRV9EQkdfSU5JVCwgXFxcImZvcmNpbmcgUkRNQSBvZmZcXFxcblxcXCIpO1xcbiBcXHRcXHRcXHRjYXBzLVxcdTAwM2VyZG1hID0gMDtcXG4gXFx0XFx0fVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXFxuaW5kZXggYmY5YTgyMWM1NDNiNy4uNGNlMTk4ZjZhMWI1NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXFxuQEAgLTIzNjUsOCArMjM2NSw5IEBAIGljZV9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFxuLVxcdC8qIGZsb3cgY29udHJvbCBpcyBzeW1tZXRyaWMgYW5kIGFsd2F5cyBzdXBwb3J0ZWQgKi9cXG4rXFx0LyogZmxvdyBjb250cm9sIGlzIHN5bW1ldHJpYyBvciBhc3ltbWV0cmljIGFuZCBhbHdheXMgc3VwcG9ydGVkICovXFxuIFxcdGV0aHRvb2xfbGlua19rc2V0dGluZ3NfYWRkX2xpbmtfbW9kZShrcywgc3VwcG9ydGVkLCBQYXVzZSk7XFxuK1xcdGV0aHRvb2xfbGlua19rc2V0dGluZ3NfYWRkX2xpbmtfbW9kZShrcywgc3VwcG9ydGVkLCBBc3ltX1BhdXNlKTtcXG4gXFxuIFxcdGNhcHMgPSBremFsbG9jX29iaigqY2Fwcyk7XFxuIFxcdGlmICghY2FwcylcXG5AQCAtMjUwMCw2ICsyNTAxLDI4IEBAIGljZV9rc2V0dGluZ3NfZmluZF9hZHZfbGlua19zcGVlZChjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3MpXFxuIFxcdHJldHVybiBhZHZfbGlua19zcGVlZDtcXG4gfVxcbiBcXG4rLyoqXFxuKyAqIGljZV9hdXRvbmVnX2Rpc2FibGVfYWxsb3dlZCAtIGNoZWNrIGlmIGF1dG9uZWcgY2FuIGJlIGRpc2FibGVkXFxuKyAqIEBwOiBwb3J0IGluZm9cXG4rICpcXG4rICogQ2hlY2sgaWYgYXV0b25lZ290aWF0aW9uIGNhbiBiZSBkaXNhYmxlZCBiYXNlZCBvbiBsaW5rIHN0YXRlLlxcbisgKiBJQ0VfQVFfTFBfQU5fQUJJTElUWSBpcyBvbmx5IHZhbGlkIHdoZW4gdGhlIGxpbmsgaXMgdXA7IGdhdGUgdGhhdFxcbisgKiBjaGVjayBhY2NvcmRpbmdseSB0byBhdm9pZCBmYWxzZSBwb3NpdGl2ZXMgZnJvbSBzdGFsZSBsaW5rIGRhdGEuXFxuKyAqXFxuKyAqIFJldHVybjogdHJ1ZSBpZiBhdXRvbmVnIGhhcyBjb21wbGV0ZWQsIG9yIGlmIHRoZSBsaW5rIGlzIHVwIGFuZCB0aGVcXG4rICogICAgICAgICBsaW5rIHBhcnRuZXIgZG9lcyBub3QgYWR2ZXJ0aXNlIGF1dG9uZWdvdGlhdGlvbiBjYXBhYmlsaXR5LlxcbisgKi9cXG4rc3RhdGljIGJvb2wgaWNlX2F1dG9uZWdfZGlzYWJsZV9hbGxvd2VkKHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwKVxcbit7XFxuK1xcdHU4IGFuX2luZm8gPSBwLVxcdTAwM2VwaHkubGlua19pbmZvLmFuX2luZm87XFxuK1xcbitcXHRpZiAoYW5faW5mbyBcXHUwMDI2IElDRV9BUV9BTl9DT01QTEVURUQpXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXHQvKiBJQ0VfQVFfTFBfQU5fQUJJTElUWSBpcyBvbmx5IHZhbGlkIHdoZW4gbGluayBpcyB1cCAqL1xcbitcXHRyZXR1cm4gKHAtXFx1MDAzZXBoeS5saW5rX2luZm8ubGlua19pbmZvIFxcdTAwMjYgSUNFX0FRX0xJTktfVVApIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAgICAhKGFuX2luZm8gXFx1MDAyNiBJQ0VfQVFfTFBfQU5fQUJJTElUWSk7XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBpY2Vfc2V0dXBfYXV0b25lZ1xcbiAgKiBAcDogcG9ydCBpbmZvXFxuQEAgLTI1MzgsOCArMjU2MSw4IEBAIGljZV9zZXR1cF9hdXRvbmVnKHN0cnVjdCBpY2VfcG9ydF9pbmZvICpwLCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3MsXFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbiBcXHR9IGVsc2Uge1xcbi1cXHRcXHQvKiBJZiBhdXRvbmVnIGlzIGN1cnJlbnRseSBlbmFibGVkICovXFxuLVxcdFxcdGlmIChwLVxcdTAwM2VwaHkubGlua19pbmZvLmFuX2luZm8gXFx1MDAyNiBJQ0VfQVFfQU5fQ09NUExFVEVEKSB7XFxuK1xcdFxcdC8qIElmIGF1dG9uZWcgY29tcGxldGVkIG9yIGxpbmsgcGFydG5lciBkb2VzIG5vdCBzdXBwb3J0IEFOICovXFxuK1xcdFxcdGlmIChpY2VfYXV0b25lZ19kaXNhYmxlX2FsbG93ZWQocCkpIHtcXG4gXFx0XFx0XFx0LyogSWYgYXV0b25lZyBpcyBzdXBwb3J0ZWQgMTBHQkFTRV9UIGlzIHRoZSBvbmx5IFBIWVxcbiBcXHRcXHRcXHQgKiB0aGF0IGNhbiBkaXNhYmxlIGl0LCBzbyBvdGhlcndpc2UgcmV0dXJuIGVycm9yXFxuIFxcdFxcdFxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNzoyODo1OS4wNjU2NDAyOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6Mjk2NDkwNzg0MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBFdGhlcm5ldCA4MDAgU2VyaWVzIChpY2UpIGRyaXZlciAoaWNlX2NvbW1vbi5jIGFuZCBpY2VfZXRodG9vbC5jKS4gVGhpcyBkcml2ZXIgZHJpdmVzIHBoeXNpY2FsIEludGVsIEU4MDAgc2VyaWVzIFBDSWUgbmV0d29yayBhZGFwdGVycywgd2hpY2ggcmVxdWlyZSBzcGVjaWFsaXplZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4sIFFFTVUpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmVjM2JkY2I1YTQ3YjFiOGZhYmEzMmNkODIyMWNkOTUwOTFiNjM0MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDE1IDE3OjI4OjU3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNcbmluZGV4IGVmMWNlMTA2ZjgxYjUuLmQ1MzMwN2IxNjhlMmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jXG5AQCAtMjUwNyw3ICsyNTA3LDcgQEAgaWNlX3JlY2FsY19wb3J0X2xpbWl0ZWRfY2FwcyhzdHJ1Y3QgaWNlX2h3ICpodywgc3RydWN0IGljZV9od19jb21tb25fY2FwcyAqY2FwcylcbiBcdFx0Y2Fwcy1cdTAwM2VtYXh0YyA9IDQ7XG4gXHRcdGljZV9kZWJ1ZyhodywgSUNFX0RCR19JTklULCBcInJlZHVjaW5nIG1heHRjIHRvICVkIChiYXNlZCBvbiAjcG9ydHMpXFxuXCIsXG4gXHRcdFx0ICBjYXBzLVx1MDAzZW1heHRjKTtcbi1cdFx0aWYgKGNhcHMtXHUwMDNlcmRtYSkge1xuK1x0XHRpZiAoY2Fwcy1cdTAwM2VyZG1hIFx1MDAyNlx1MDAyNiBody1cdTAwM2VtYWNfdHlwZSAhPSBJQ0VfTUFDX0U4MzApIHtcbiBcdFx0XHRpY2VfZGVidWcoaHcsIElDRV9EQkdfSU5JVCwgXCJmb3JjaW5nIFJETUEgb2ZmXFxuXCIpO1xuIFx0XHRcdGNhcHMtXHUwMDNlcmRtYSA9IDA7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXG5pbmRleCBiZjlhODIxYzU0M2I3Li40Y2UxOThmNmExYjU0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jXG5AQCAtMjM2NSw4ICsyMzY1LDkgQEAgaWNlX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRicmVhaztcbiBcdH1cbiBcbi1cdC8qIGZsb3cgY29udHJvbCBpcyBzeW1tZXRyaWMgYW5kIGFsd2F5cyBzdXBwb3J0ZWQgKi9cbitcdC8qIGZsb3cgY29udHJvbCBpcyBzeW1tZXRyaWMgb3IgYXN5bW1ldHJpYyBhbmQgYWx3YXlzIHN1cHBvcnRlZCAqL1xuIFx0ZXRodG9vbF9saW5rX2tzZXR0aW5nc19hZGRfbGlua19tb2RlKGtzLCBzdXBwb3J0ZWQsIFBhdXNlKTtcbitcdGV0aHRvb2xfbGlua19rc2V0dGluZ3NfYWRkX2xpbmtfbW9kZShrcywgc3VwcG9ydGVkLCBBc3ltX1BhdXNlKTtcbiBcbiBcdGNhcHMgPSBremFsbG9jX29iaigqY2Fwcyk7XG4gXHRpZiAoIWNhcHMpXG5AQCAtMjUwMCw2ICsyNTAxLDI4IEBAIGljZV9rc2V0dGluZ3NfZmluZF9hZHZfbGlua19zcGVlZChjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3MpXG4gXHRyZXR1cm4gYWR2X2xpbmtfc3BlZWQ7XG4gfVxuIFxuKy8qKlxuKyAqIGljZV9hdXRvbmVnX2Rpc2FibGVfYWxsb3dlZCAtIGNoZWNrIGlmIGF1dG9uZWcgY2FuIGJlIGRpc2FibGVkXG4rICogQHA6IHBvcnQgaW5mb1xuKyAqXG4rICogQ2hlY2sgaWYgYXV0b25lZ290aWF0aW9uIGNhbiBiZSBkaXNhYmxlZCBiYXNlZCBvbiBsaW5rIHN0YXRlLlxuKyAqIElDRV9BUV9MUF9BTl9BQklMSVRZIGlzIG9ubHkgdmFsaWQgd2hlbiB0aGUgbGluayBpcyB1cDsgZ2F0ZSB0aGF0XG4rICogY2hlY2sgYWNjb3JkaW5nbHkgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzIGZyb20gc3RhbGUgbGluayBkYXRhLlxuKyAqXG4rICogUmV0dXJuOiB0cnVlIGlmIGF1dG9uZWcgaGFzIGNvbXBsZXRlZCwgb3IgaWYgdGhlIGxpbmsgaXMgdXAgYW5kIHRoZVxuKyAqICAgICAgICAgbGluayBwYXJ0bmVyIGRvZXMgbm90IGFkdmVydGlzZSBhdXRvbmVnb3RpYXRpb24gY2FwYWJpbGl0eS5cbisgKi9cbitzdGF0aWMgYm9vbCBpY2VfYXV0b25lZ19kaXNhYmxlX2FsbG93ZWQoc3RydWN0IGljZV9wb3J0X2luZm8gKnApXG4re1xuK1x0dTggYW5faW5mbyA9IHAtXHUwMDNlcGh5LmxpbmtfaW5mby5hbl9pbmZvO1xuK1xuK1x0aWYgKGFuX2luZm8gXHUwMDI2IElDRV9BUV9BTl9DT01QTEVURUQpXG4rXHRcdHJldHVybiB0cnVlO1xuK1x0LyogSUNFX0FRX0xQX0FOX0FCSUxJVFkgaXMgb25seSB2YWxpZCB3aGVuIGxpbmsgaXMgdXAgKi9cbitcdHJldHVybiAocC1cdTAwM2VwaHkubGlua19pbmZvLmxpbmtfaW5mbyBcdTAwMjYgSUNFX0FRX0xJTktfVVApIFx1MDAyNlx1MDAyNlxuK1x0ICAgICAgICEoYW5faW5mbyBcdTAwMjYgSUNFX0FRX0xQX0FOX0FCSUxJVFkpO1xuK31cbitcbiAvKipcbiAgKiBpY2Vfc2V0dXBfYXV0b25lZ1xuICAqIEBwOiBwb3J0IGluZm9cbkBAIC0yNTM4LDggKzI1NjEsOCBAQCBpY2Vfc2V0dXBfYXV0b25lZyhzdHJ1Y3QgaWNlX3BvcnRfaW5mbyAqcCwgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmtzLFxuIFx0XHRcdH1cbiBcdFx0fVxuIFx0fSBlbHNlIHtcbi1cdFx0LyogSWYgYXV0b25lZyBpcyBjdXJyZW50bHkgZW5hYmxlZCAqL1xuLVx0XHRpZiAocC1cdTAwM2VwaHkubGlua19pbmZvLmFuX2luZm8gXHUwMDI2IElDRV9BUV9BTl9DT01QTEVURUQpIHtcbitcdFx0LyogSWYgYXV0b25lZyBjb21wbGV0ZWQgb3IgbGluayBwYXJ0bmVyIGRvZXMgbm90IHN1cHBvcnQgQU4gKi9cbitcdFx0aWYgKGljZV9hdXRvbmVnX2Rpc2FibGVfYWxsb3dlZChwKSkge1xuIFx0XHRcdC8qIElmIGF1dG9uZWcgaXMgc3VwcG9ydGVkIDEwR0JBU0VfVCBpcyB0aGUgb25seSBQSFlcbiBcdFx0XHQgKiB0aGF0IGNhbiBkaXNhYmxlIGl0LCBzbyBvdGhlcndpc2UgcmV0dXJuIGVycm9yXG4gXHRcdFx0ICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNzoyODo1OS4wNjU2NDMyMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjgwNTg4NTU4NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXZhbHVhdGluZyB0aGUgS2VybmVsIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGFza2VkIHRvIGFzc2VzcyB0aGlzIHBhdGNoLiBUaGUgY29tbWl0IGRpZmYgc3BlY2lmaWNhbGx5IHRvdWNoZXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmNgIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmNgLiAgQmVmb3JlIEkgZGl2ZSB0b28gZGVlcCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIG1lZXRzIHRoZSBjcml0ZXJpYSBmb3IgZnV6emluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIHNvbWUgb2JzY3VyZSByZWFzb24gdG8gYXZvaWQgZnV6emluZy5cblxuTXkgcHJpbWFyeSBydWxlIGlzLCBJIHNob3VsZCBvbmx5ICpub3QqIGZ1enogaWYgYWxsIHRoZSBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gYSB2ZXJ5IHNwZWNpZmljIHNldCBvZiBjYXRlZ29yaWVzLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBpZiB0aGlzIGZhbGxzIHVuZGVyIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLlwiIFRoYXQgY2F0ZWdvcnkgaW5jbHVkZXMgdGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgdGhhdCByZXF1aXJlIHNwZWNpZmljLCBwaHlzaWNhbCBoYXJkd2FyZSwgdGhhdCBhcmVuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cblxuQWxyaWdodCwgc28gd2hhdCBpcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlYD8gIEFoLCByaWdodCEgVGhhdCdzIHRoZSBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MDAgU2VyaWVzIExpbnV4IERyaXZlciwgdGhlIGBpY2VgIGRyaXZlci4gT2theSwgc28gbm93IHRoZSBrZXkgcXVlc3Rpb246IElzIHRoZSBJbnRlbCBFODAwIHNlcmllcyBQQ0llIE5JQyBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT9cblxuTm8uIFRoZSBJbnRlbCBJQ0UgZHJpdmVyIGlzIGZvciBwaHlzaWNhbCBJbnRlbCA4MDAgU2VyaWVzIChFODEwIC8gRTgzMCAvIGV0Yy4pIFBDSWUgMTAwR2JFIC8gMjVHYkUgbmV0d29yayBhZGFwdGVycy4gVGhhdCBtYWtlcyBtZSBuZXJ2b3VzLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGBpY2VgICpyZXF1aXJlcyogcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLCBvciBpZiB0aGVyZSBpcyBzb21lIGVtdWxhdGlvbiwgc29mdHdhcmUgbW9ja3MsIG9yIHZpcnR1YWwgYnVzIGFic3RyYWN0aW9uLlxuXG5Eb2VzIFFFTVUgZXZlbiBlbXVsYXRlIHRoZSBJbnRlbCBFODAwIHNlcmllcz8gTm8uIFFFTVUgZW11bGF0ZXMgZTEwMDAsIGUxMDAwZSwgYW5kIGlnYiwgYnV0IG5vdCBpY2UuIEkgbmVlZCB0byBiZSBzdXJlIHRob3VnaC4gRG9lcyBgaWNlYCBzdXBwb3J0IG5ldGtpdC9uZXRkZXZzaW0gb3IgYW55dGhpbmcgdmlydHVhbD8gTm8sIGEgcXVpY2sgY2hlY2sgb2YgdGhlIGNvZGUgY29uZmlybXMgaXQgaXMgYSBQQ0kgZHJpdmVyIChgaWNlX2RyaXZlcmAgaXMgcmVnaXN0ZXJlZCB3aXRoIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCkuIFRvIGJlIGV4dHJhIGNlcnRhaW4gSSBzaG91bGQgcmV2aWV3IHRoZSBjb2RlIG1vcmUgY2xvc2VseSBvciBzZWFyY2ggZm9yIGBpY2VgIHJlZmVyZW5jZXMgaW4gdGhlIGtlcm5lbCB0cmVlLiBPa2F5LCBpdCdzIHZlcnkgbGlrZWx5IHRoaXMgd29uJ3QgYmUgZnV6emFibGUgZGlyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MjUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNzoyOTowNy4xMjQ1MDExODdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjkzMTAzODA1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGNpX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE3OjI5OjA3LjQxNzYxNDE4MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE4NjgzMTQ1MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBJbnRlbCBJQ0UgRXRoZXJuZXQgRHJpdmVyKipcblxuT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGBwY2lfZHJpdmVyYCBzdHJ1Y3R1cmUgcmVsYXRlZCB0byB0aGUgSW50ZWwgSUNFIEV0aGVybmV0IGRyaXZlci4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIGtub3cgdGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBkZWJ1Z2dpbmcgYXBwcm9hY2guIFRoZSBwcm9tcHQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50OiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlYC4gVGhhdCdzIHByZWNpc2VseSB3aGVyZSBJJ2QgZXhwZWN0IHRvIGZpbmQgdGhlIHJlbGV2YW50IGNvZGUuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaG93IHRoZSBkcml2ZXIgcmVnaXN0ZXJzIGl0c2VsZiB3aXRoIHRoZSBQQ0kgc3Vic3lzdGVtLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBob3cgdGhlIGRyaXZlcidzIHByb2JlZCBhbmQgd2hhdCBzdHJ1Y3R1cmVzIGl0J3MgYnVpbHQgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NTgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNzoyOTowOS4yODU5MzE5MTJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA1Nzk0NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IHBjaV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jPTU4NTA9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgaWNlX3BjaV9lcnJfaGFuZGxlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTU4NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTg1ODpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaWNlX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy01ODU5LVxcdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE3OjI5OjA5LjMzNjUxOTEyMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI3NjgxNzUxNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYGljZV9kcml2ZXJgIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIEludGVsIEV0aGVybmV0IGBpY2VgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgaWNlX21haW4uY2AgZmlsZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGlzIGRyaXZlciBpcyBpbml0aWFsaXplZCBhbmQgaG93IGl0IGludGVncmF0ZXMgaW50byB0aGUgb3ZlcmFsbCBuZXR3b3JrIHN0YWNrLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGBpY2VfZHJpdmVyYCBzdHJ1Y3R1cmUuIEknbSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIGNvZGUuIExldCdzIHNlZS4uLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgdGFraW5nIGEgbG9vayBhcm91bmQgbGluZSA1ODU4IGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGVudHJ5IHBvaW50IHRvIHVuZGVyc3RhbmQgdGhlIGRyaXZlcidzIHNldHVwIHNlcXVlbmNlIGFuZCBzZWUgaG93IGBpY2VfZHJpdmVyYCBpcyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgbGFyZ2VyIGNvbnRleHQuIEknbSBsb29raW5nIGZvciB0aGUgY29yZSBpbml0aWFsaXphdGlvbiBmbG93LCBhbnkgYXNzb2NpYXRlZCBjYWxsYmFja3MsIGFuZCB0aGUgcmVsYXRpb25zaGlwIHRvIG90aGVyIHJlbGV2YW50IGRhdGEgc3RydWN0dXJlcy4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMDEsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNzoyOToxMi4xMDQ2OTc5NDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDUyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTg1NSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNTg1NTpcXHRcXHQucmVzdW1lID0gaWNlX3BjaV9lcnJfcmVzdW1lXFxuNTg1NjpcXHR9O1xcbjU4NTc6XFx0XFxuNTg1ODpcXHRzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaWNlX2RyaXZlciA9IHtcXG41ODU5OlxcdFxcdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXFxuNTg2MDpcXHRcXHQuaWRfdGFibGUgPSBpY2VfcGNpX3RibCxcXG41ODYxOlxcdFxcdC5wcm9iZSA9IGljZV9wcm9iZSxcXG41ODYyOlxcdFxcdC5yZW1vdmUgPSBpY2VfcmVtb3ZlLFxcbjU4NjM6XFx0XFx0LmRyaXZlci5wbSA9IHBtX3NsZWVwX3B0cihcXHUwMDI2aWNlX3BtX29wcyksXFxuNTg2NDpcXHRcXHQuc2h1dGRvd24gPSBpY2Vfc2h1dGRvd24sXFxuNTg2NTpcXHRcXHQuc3Jpb3ZfY29uZmlndXJlID0gaWNlX3NyaW92X2NvbmZpZ3VyZSxcXG41ODY2OlxcdFxcdC5zcmlvdl9nZXRfdmZfdG90YWxfbXNpeCA9IGljZV9zcmlvdl9nZXRfdmZfdG90YWxfbXNpeCxcXG41ODY3OlxcdFxcdC5zcmlvdl9zZXRfbXNpeF92ZWNfY291bnQgPSBpY2Vfc3Jpb3Zfc2V0X21zaXhfdmVjX2NvdW50LFxcbjU4Njg6XFx0XFx0LmVycl9oYW5kbGVyID0gXFx1MDAyNmljZV9wY2lfZXJyX2hhbmRsZXJcXG41ODY5OlxcdH07XFxuNTg3MDpcXHRcXG41ODcxOlxcdC8qKlxcbjU4NzI6XFx0ICogaWNlX21vZHVsZV9pbml0IC0gRHJpdmVyIHJlZ2lzdHJhdGlvbiByb3V0aW5lXFxuNTg3MzpcXHQgKlxcbjU4NzQ6XFx0ICogaWNlX21vZHVsZV9pbml0IGlzIHRoZSBmaXJzdCByb3V0aW5lIGNhbGxlZCB3aGVuIHRoZSBkcml2ZXIgaXNcXG41ODc1OlxcdCAqIGxvYWRlZC4gQWxsIGl0IGRvZXMgaXMgcmVnaXN0ZXIgd2l0aCB0aGUgUENJIHN1YnN5c3RlbS5cXG41ODc2OlxcdCAqL1xcbjU4Nzc6XFx0c3RhdGljIGludCBfX2luaXQgaWNlX21vZHVsZV9pbml0KHZvaWQpXFxuNTg3ODpcXHR7XFxuNTg3OTpcXHRcXHRpbnQgc3RhdHVzID0gLUVOT01FTTtcXG41ODgwOlxcdFxcbjU4ODE6XFx0XFx0cHJfaW5mbyhcXFwiJXNcXFxcblxcXCIsIGljZV9kcml2ZXJfc3RyaW5nKTtcXG41ODgyOlxcdFxcdHByX2luZm8oXFxcIiVzXFxcXG5cXFwiLCBpY2VfY29weXJpZ2h0KTtcXG41ODgzOlxcdFxcbjU4ODQ6XFx0XFx0aWNlX2Fkdl9sbmtfc3BlZWRfbWFwc19pbml0KCk7XFxuNTg4NTpcXHRcXG41ODg2OlxcdFxcdGljZV93cSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwiJXNcXFwiLCBXUV9VTkJPVU5ELCAwLCBLQlVJTERfTU9ETkFNRSk7XFxuNTg4NzpcXHRcXHRpZiAoIWljZV93cSkge1xcbjU4ODg6XFx0XFx0XFx0cHJfZXJyKFxcXCJGYWlsZWQgdG8gY3JlYXRlIHdvcmtxdWV1ZVxcXFxuXFxcIik7XFxuNTg4OTpcXHRcXHRcXHRyZXR1cm4gc3RhdHVzO1xcbjU4OTA6XFx0XFx0fVxcbjU4OTE6XFx0XFxuNTg5MjpcXHRcXHRpY2VfbGFnX3dxID0gYWxsb2Nfb3JkZXJlZF93b3JrcXVldWUoXFxcImljZV9sYWdfd3FcXFwiLCAwKTtcXG41ODkzOlxcdFxcdGlmICghaWNlX2xhZ193cSkge1xcbjU4OTQ6XFx0XFx0XFx0cHJfZXJyKFxcXCJGYWlsZWQgdG8gY3JlYXRlIExBRyB3b3JrcXVldWVcXFxcblxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNzoyOToxMi4xMDUxMDUxMDZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMTM2NzYyMTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50OlxuXG4qKkV4YW1pbmluZyB0aGUgRGV2aWNlIEJpbmRpbmcgVGFibGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHNwZWNpZmljIGRldmljZXMgdGhpcyBgaWNlX3BjaV90YmxgIHRhYmxlIGlzIHJlc3BvbnNpYmxlIGZvciBiaW5kaW5nIHRvLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpdHMgY29udGVudHMgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHBpbnBvaW50IHRoZSB0YXJnZXQgZGV2aWNlcy4gVGhpcyB0YWJsZSBpcyBrZXkgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGFzc2lnbm1lbnQgb2YgdGhlc2UgcG90ZW50aWFsbHkgc3BlY2lhbGl6ZWQgTklDcy4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBiaW5kaW5nIGFjdHVhbGx5IGxvb2tzIGxpa2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NTAsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE3OjI5OjE0LjI0MTg2OTYxMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA1MDczNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWNlX3BjaV90YmxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jPTUxMjY9c3RhdGljIGludCBpY2VfcHJvYmVfcmVjb3ZlcnlfbW9kZShzdHJ1Y3QgaWNlX3BmICpwZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTUxNTgtICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTE1OTogKiBAZW50OiBlbnRyeSBpbiBpY2VfcGNpX3RibFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTUxNjAtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jPTU3ODA9c3RhdGljIHZvaWQgaWNlX3BjaV9lcnJfcmVzZXRfZG9uZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTU3ODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTc4NTovKiBpY2VfcGNpX3RibCAtIFBDSSBEZXZpY2UgSUQgVGFibGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy01Nzg2LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy01NzkyLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU3OTM6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGljZV9wY2lfdGJsW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTc5NC1cXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MTBDX0JBQ0tQTEFORSkgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTU4NDUtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODQ2Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpY2VfcGNpX3RibCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTg0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jPTU4NTg9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGljZV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTg1OS1cXHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4NjA6XFx0LmlkX3RhYmxlID0gaWNlX3BjaV90YmwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtNTg2MS1cXHQucHJvYmUgPSBpY2VfcHJvYmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE3OjI5OjE0LjI5MjM4Mjk5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI0NDQ2NjM1NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBQQ0kgRGV2aWNlIElEcyBpbiBgaWNlX3BjaV90YmxgKipcblxuQWxyaWdodCwgbG9va2luZyBhdCB0aGlzIGNvZGUsIGl0J3MgY2xlYXIgdGhlc2UgZGV2aWNlcyBpbiBgaWNlX3BjaV90YmxgIGFyZSBQQ0kgZGV2aWNlcywgd2l0aCBpZGVudGlmaWVycyBsaWtlIGBJQ0VfREVWX0lEX0U4MTBDX0JBQ0tQTEFORWAgYW5kIHRoZSBsaWtlLiBJdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluaywgKm9rYXksIHNvIHdoYXQgYXJlIHRoZXNlIGBJQ0VfREVWX0lEX2AgbWFjcm9zIGRlZmluZWQgYXM/KiBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRob3NlIGhlYWRlcnMgcmlnaHQgYXdheS4gTGV0J3MgZ2V0IHRoZSBkZWZpbml0aW9ucyBvZiB0aGVzZSBgSUNFX0RFVl9JRF9gIGNvbnN0YW50cyBhbmQgZmlndXJlIG91dCB0aGUgc3BlY2lmaWMgZGV2aWNlIHZlbmRvciBhbmQgZGV2aWNlIElEcyB0aGVzZSBjb3JyZXNwb25kIHRvLiBUaGF0J2xsIHByb3ZpZGUgdGhlIGNydWNpYWwgY29udGV4dCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgY2FwYWJpbGl0aWVzLCBmdW5jdGlvbmFsaXRpZXMsIGFuZCBleHBlY3RlZCBiZWhhdmlvciBvZiB0aGVzZSBoYXJkd2FyZSBjb21wb25lbnRzIHdpdGhpbiB0aGUgc3lzdGVtLCBsaWtlIHRoZXNlIEU4MTBDLWJhc2VkIGRldmljZXMuIEdldHRpbmcgdGhvc2UgZGV2aWNlIElEcyBtYXBwZWQgY29ycmVjdGx5IGlzIHRoZSBlc3NlbnRpYWwgZmlyc3Qgc3RlcCwgYW5kIHRoZSByZXN0IHdpbGwgZm9sbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzIxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTc6Mjk6MTYuNzM3MDQ5MTgyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTYxNDUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJQ0VfREVWX0lEX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmM9MTQ9c3RhdGljIERFRklORV9NVVRFWChpY2VfYWRhcHRlcnNfbXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmMtMTgtI2RlZmluZSBJQ0VfQURBUFRFUl9JTkRFWF9FODI1Q1xcdFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYzoxOTpcXHQoSUNFX0RFVl9JRF9FODI1Q19CQUNLUExBTkUgfCBJQ0VfQURBUFRFUl9GSVhFRF9JTkRFWClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYy0yMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYz0yMT1zdGF0aWMgdTY0IGljZV9hZGFwdGVyX2luZGV4KHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmMtMjMtXFx0c3dpdGNoIChwZGV2LVxcdTAwM2VkZXZpY2UpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2FkYXB0ZXIuYzoyNDpcXHRjYXNlIElDRV9ERVZfSURfRTgyNUNfQkFDS1BMQU5FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5jOjI1OlxcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5jOjI2OlxcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9hZGFwdGVyLmM6Mjc6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjVDX1NHTUlJOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYWRhcHRlci5jLTI4LVxcdFxcdC8qIEU4MjVDIGRldmljZXMgaGF2ZSBtdWx0aXBsZSBOQUNzIHdoaWNoIGFyZSBjb25uZWN0ZWQgdG8gdGhlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jPTEyMz1zdGF0aWMgaW50IGljZV9zZXRfbWFjX3R5cGUoc3RydWN0IGljZV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jLTEyOC1cXHRzd2l0Y2ggKGh3LVxcdTAwM2VkZXZpY2VfaWQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjEyOTpcXHRjYXNlIElDRV9ERVZfSURfRTgxMENfQkFDS1BMQU5FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTMwOlxcdGNhc2UgSUNFX0RFVl9JRF9FODEwQ19RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTMxOlxcdGNhc2UgSUNFX0RFVl9JRF9FODEwQ19TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxMzI6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MTBfWFhWX0JBQ0tQTEFORTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjEzMzpcXHRjYXNlIElDRV9ERVZfSURfRTgxMF9YWFZfUVNGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjEzNDpcXHRjYXNlIElDRV9ERVZfSURfRTgxMF9YWFZfU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMtMTM1LVxcdFxcdGh3LVxcdTAwM2VtYWNfdHlwZSA9IElDRV9NQUNfRTgxMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jLTEzNi1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjEzNzpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0NfMTBHX0JBU0VfVDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjEzODpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0NfQkFDS1BMQU5FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTM5OlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ19RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTQwOlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ19TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNDE6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NHTUlJOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTQyOlxcdGNhc2UgSUNFX0RFVl9JRF9FODIyQ18xMEdfQkFTRV9UOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTQzOlxcdGNhc2UgSUNFX0RFVl9JRF9FODIyQ19CQUNLUExBTkU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNDQ6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjJDX1FTRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNDU6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjJDX1NGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE0NjpcXHRjYXNlIElDRV9ERVZfSURfRTgyMkNfU0dNSUk6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNDc6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjJMXzEwR19CQVNFX1Q6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNDg6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjJMX0JBQ0tQTEFORTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE0OTpcXHRjYXNlIElDRV9ERVZfSURfRTgyMkxfU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTUwOlxcdGNhc2UgSUNFX0RFVl9JRF9FODIyTF9TR01JSTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE1MTpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0xfMTBHX0JBU0VfVDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE1MjpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0xfMUdCRTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE1MzpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0xfQkFDS1BMQU5FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTU0OlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF9RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTU1OlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF9TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYy0xNTYtXFx0XFx0aHctXFx1MDAzZW1hY190eXBlID0gSUNFX01BQ19HRU5FUklDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMtMTU3LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTU4OlxcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19CQUNLUExBTkU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNTk6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjVDX1FTRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNjA6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjVDX1NGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE2MTpcXHRjYXNlIElDRV9ERVZfSURfRTgyNUNfU0dNSUk6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYy0xNjItXFx0XFx0aHctXFx1MDAzZW1hY190eXBlID0gSUNFX01BQ19HRU5FUklDXzNLX0U4MjU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYy0xNjMtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNjQ6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MzBDQ19CQUNLUExBTkU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNjU6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MzBDQ19RU0ZQNTY6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNjY6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MzBDQ19TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNjc6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MzBDQ19TRlBfREQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNjg6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MzBDX0JBQ0tQTEFORTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE2OTpcXHRjYXNlIElDRV9ERVZfSURfRTgzMF9YWFZfQkFDS1BMQU5FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTcwOlxcdGNhc2UgSUNFX0RFVl9JRF9FODMwQ19RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTcxOlxcdGNhc2UgSUNFX0RFVl9JRF9FODMwX1hYVl9RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTcyOlxcdGNhc2UgSUNFX0RFVl9JRF9FODMwQ19TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxNzM6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MzBfWFhWX1NGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE3NDpcXHRjYXNlIElDRV9ERVZfSURfRTgzNUNDX0JBQ0tQTEFORTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE3NTpcXHRjYXNlIElDRV9ERVZfSURfRTgzNUNDX1FTRlA1NjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE3NjpcXHRjYXNlIElDRV9ERVZfSURfRTgzNUNDX1NGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjE3NzpcXHRjYXNlIElDRV9ERVZfSURfRTgzNUNfQkFDS1BMQU5FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTc4OlxcdGNhc2UgSUNFX0RFVl9JRF9FODM1Q19RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTc5OlxcdGNhc2UgSUNFX0RFVl9JRF9FODM1Q19TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxODA6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MzVfTF9CQUNLUExBTkU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzoxODE6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MzVfTF9RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MTgyOlxcdGNhc2UgSUNFX0RFVl9JRF9FODM1X0xfU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMtMTgzLVxcdFxcdGh3LVxcdTAwM2VtYWNfdHlwZSA9IElDRV9NQUNfRTgzMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM9MzM1NT1ib29sIGljZV9pc18xMDBtX3NwZWVkX3N1cHBvcnRlZChzdHJ1Y3QgaWNlX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMtMzM1Ny1cXHRzd2l0Y2ggKGh3LVxcdTAwM2VkZXZpY2VfaWQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjMzNTg6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjJDX1NHTUlJOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MzM1OTpcXHRjYXNlIElDRV9ERVZfSURfRTgyMkxfU0dNSUk6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzozMzYwOlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF8xR0JFOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmM6MzM2MTpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0NfU0dNSUk6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzozMzYyOlxcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19TR01JSTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jLTMzNjMtXFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jPTQzNTE9aW50IGljZV9nZXRfcGh5X2xhbmVfbnVtYmVyKHN0cnVjdCBpY2VfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYy00MzYzLVxcdGlmIChody1cXHUwMDNlbWFjX3R5cGUgPT0gSUNFX01BQ19HRU5FUklDIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzo0MzY0OlxcdCAgICBody1cXHUwMDNlZGV2aWNlX2lkID09IElDRV9ERVZfSURfRTgyNUNfU0dNSUkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYy00MzY1LVxcdFxcdHJldHVybiBody1cXHUwMDNlcGZfaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jPTYwNDE9aW50IGljZV9nZXRfcGNhOTU3NV9oYW5kbGUoc3RydWN0IGljZV9odyAqaHcsIHUxNiAqcGNhOTU3NV9oYW5kbGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jLTYwNTctXFx0LyogQ2hlY2sgaWYgdGhlIFNXIElPIGV4cGFuZGVyIGNvbnRyb2xsaW5nIFNNQSBleGlzdHMgaW4gdGhlIG5ldGxpc3QuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYzo2MDU4OlxcdGlmIChody1cXHUwMDNlZGV2aWNlX2lkID09IElDRV9ERVZfSURfRTgxMENfU0ZQKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfY29tbW9uLmMtNjA1OS1cXHRcXHRpZHggPSBTV19QQ0E5NTc1X1NGUF9UT1BPX0lEWDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2NvbW1vbi5jOjYwNjA6XFx0ZWxzZSBpZiAoaHctXFx1MDAzZWRldmljZV9pZCA9PSBJQ0VfREVWX0lEX0U4MTBDX1FTRlApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9jb21tb24uYy02MDYxLVxcdFxcdGlkeCA9IFNXX1BDQTk1NzVfUVNGUF9UT1BPX0lEWDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNy0vKiBEZXZpY2UgSURzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo4OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyX1NJX0RGTFQgICAgICAgICAweDE4ODhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTktLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODM1LUNDIGZvciBiYWNrcGxhbmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjEwOiNkZWZpbmUgSUNFX0RFVl9JRF9FODM1Q0NfQkFDS1BMQU5FXFx0MHgxMjQ4XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xMS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MzUtQ0MgZm9yIFFTRlAgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjEyOiNkZWZpbmUgSUNFX0RFVl9JRF9FODM1Q0NfUVNGUDU2XFx0MHgxMjQ5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xMy0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MzUtQ0MgZm9yIFNGUCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6MTQ6I2RlZmluZSBJQ0VfREVWX0lEX0U4MzVDQ19TRlBcXHRcXHQweDEyNEFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTE1LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzNS1DIGZvciBiYWNrcGxhbmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjE2OiNkZWZpbmUgSUNFX0RFVl9JRF9FODM1Q19CQUNLUExBTkVcXHQweDEyNjFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTE3LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzNS1DIGZvciBRU0ZQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoxODojZGVmaW5lIElDRV9ERVZfSURfRTgzNUNfUVNGUFxcdFxcdDB4MTI2MlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMTktLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODM1LUMgZm9yIFNGUCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6MjA6I2RlZmluZSBJQ0VfREVWX0lEX0U4MzVDX1NGUFxcdFxcdDB4MTI2M1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMjEtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODM1LUwgZm9yIGJhY2twbGFuZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6MjI6I2RlZmluZSBJQ0VfREVWX0lEX0U4MzVfTF9CQUNLUExBTkVcXHQweDEyNjVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTIzLS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzNS1MIGZvciBRU0ZQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoyNDojZGVmaW5lIElDRV9ERVZfSURfRTgzNV9MX1FTRlBcXHRcXHQweDEyNjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTI1LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzNS1MIGZvciBTRlAgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjI2OiNkZWZpbmUgSUNFX0RFVl9JRF9FODM1X0xfU0ZQXFx0XFx0MHgxMjY3XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0yNy0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjMtTCBmb3IgYmFja3BsYW5lICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDoyODojZGVmaW5lIElDRV9ERVZfSURfRTgyM0xfQkFDS1BMQU5FXFx0MHgxMjRDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0yOS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjMtTCBmb3IgU0ZQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDozMDojZGVmaW5lIElDRV9ERVZfSURfRTgyM0xfU0ZQXFx0XFx0MHgxMjREXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0zMS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjMtTC9YNTU3LUFUIDEwR0JBU0UtVCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6MzI6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjNMXzEwR19CQVNFX1RcXHQweDEyNEVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTMzLS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyMy1MIDFHYkUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjM0OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIzTF8xR0JFXFx0XFx0MHgxMjRGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0zNS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjMtTCBmb3IgUVNGUCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6MzY6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjNMX1FTRlBcXHRcXHQweDE1MURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTM3LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzMC1DQyBmb3IgYmFja3BsYW5lICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDozODojZGVmaW5lIElDRV9ERVZfSURfRTgzMENDX0JBQ0tQTEFORVxcdDB4MTJEMVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMzktLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLUNDIGZvciBRU0ZQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo0MDojZGVmaW5lIElDRV9ERVZfSURfRTgzMENDX1FTRlA1NlxcdDB4MTJEMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNDEtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLUNDIGZvciBTRlAgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjQyOiNkZWZpbmUgSUNFX0RFVl9JRF9FODMwQ0NfU0ZQXFx0XFx0MHgxMkQzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC00My0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MzAtQ0MgZm9yIFNGUC1ERCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6NDQ6I2RlZmluZSBJQ0VfREVWX0lEX0U4MzBDQ19TRlBfRERcXHQweDEyRDRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTQ1LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzMC1DIGZvciBiYWNrcGxhbmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjQ2OiNkZWZpbmUgSUNFX0RFVl9JRF9FODMwQ19CQUNLUExBTkVcXHQweDEyRDVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTQ3LS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgzMC1DIGZvciBRU0ZQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo0ODojZGVmaW5lIElDRV9ERVZfSURfRTgzMENfUVNGUFxcdFxcdDB4MTJEOFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNDktLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLUMgZm9yIFNGUCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6NTA6I2RlZmluZSBJQ0VfREVWX0lEX0U4MzBDX1NGUFxcdFxcdDB4MTJEQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNTEtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLVhYViBmb3IgYmFja3BsYW5lICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo1MjojZGVmaW5lIElDRV9ERVZfSURfRTgzMF9YWFZfQkFDS1BMQU5FXFx0MHgxMkRDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC01My0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MzAtWFhWIGZvciBRU0ZQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo1NDojZGVmaW5lIElDRV9ERVZfSURfRTgzMF9YWFZfUVNGUFxcdDB4MTJERFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtNTUtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29udHJvbGxlciBFODMwLVhYViBmb3IgU0ZQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo1NjojZGVmaW5lIElDRV9ERVZfSURfRTgzMF9YWFZfU0ZQXFx0XFx0MHgxMkRFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC01Ny0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MTAtQyBmb3IgYmFja3BsYW5lICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo1ODojZGVmaW5lIElDRV9ERVZfSURfRTgxMENfQkFDS1BMQU5FXFx0MHgxNTkxXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC01OS0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MTAtQyBmb3IgUVNGUCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6NjA6I2RlZmluZSBJQ0VfREVWX0lEX0U4MTBDX1FTRlBcXHRcXHQweDE1OTJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTYxLS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgxMC1DIGZvciBTRlAgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjYyOiNkZWZpbmUgSUNFX0RFVl9JRF9FODEwQ19TRlBcXHRcXHQweDE1OTNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTYzLSNkZWZpbmUgSUNFX1NVQkRFVl9JRF9FODEwVFxcdFxcdDB4MDAwRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC03MC0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MTAtWFhWIGZvciBiYWNrcGxhbmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjcxOiNkZWZpbmUgSUNFX0RFVl9JRF9FODEwX1hYVl9CQUNLUExBTkVcXHQweDE1OTlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTcyLS8qIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgRTgxMC1YWFYgZm9yIFFTRlAgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjczOiNkZWZpbmUgSUNFX0RFVl9JRF9FODEwX1hYVl9RU0ZQXFx0MHgxNTlBXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC03NC0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIEU4MTAtWFhWIGZvciBTRlAgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjc1OiNkZWZpbmUgSUNFX0RFVl9JRF9FODEwX1hYVl9TRlBcXHRcXHQweDE1OUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTc2LS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyMy1DIGZvciBiYWNrcGxhbmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjc3OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIzQ19CQUNLUExBTkVcXHQweDE4OEFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTc4LS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyMy1DIGZvciBRU0ZQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo3OTojZGVmaW5lIElDRV9ERVZfSURfRTgyM0NfUVNGUFxcdFxcdDB4MTg4QlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtODAtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODIzLUMgZm9yIFNGUCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6ODE6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjNDX1NGUFxcdFxcdDB4MTg4Q1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtODItLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODIzLUMvWDU1Ny1BVCAxMEdCQVNFLVQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjgzOiNkZWZpbmUgSUNFX0RFVl9JRF9FODIzQ18xMEdfQkFTRV9UXFx0MHgxODhEXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC04NC0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjMtQyAxR2JFICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo4NTojZGVmaW5lIElDRV9ERVZfSURfRTgyM0NfU0dNSUlcXHRcXHQweDE4OEVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTg2LS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyMi1DIGZvciBiYWNrcGxhbmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjg3OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyQ19CQUNLUExBTkVcXHQweDE4OTBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTg4LS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyMi1DIGZvciBRU0ZQICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo4OTojZGVmaW5lIElDRV9ERVZfSURfRTgyMkNfUVNGUFxcdFxcdDB4MTg5MVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtOTAtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODIyLUMgZm9yIFNGUCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6OTE6I2RlZmluZSBJQ0VfREVWX0lEX0U4MjJDX1NGUFxcdFxcdDB4MTg5MlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtOTItLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODIyLUMvWDU1Ny1BVCAxMEdCQVNFLVQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjkzOiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyQ18xMEdfQkFTRV9UXFx0MHgxODkzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC05NC0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjItQyAxR2JFICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaDo5NTojZGVmaW5lIElDRV9ERVZfSURfRTgyMkNfU0dNSUlcXHRcXHQweDE4OTRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTk2LS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyMi1MIGZvciBiYWNrcGxhbmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjk3OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyTF9CQUNLUExBTkVcXHQweDE4OTdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTk4LS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyMi1MIGZvciBTRlAgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjk5OiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyTF9TRlBcXHRcXHQweDE4OThcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oLTEwMC0vKiBJbnRlbChSKSBFdGhlcm5ldCBDb25uZWN0aW9uIEU4MjItTC9YNTU3LUFUIDEwR0JBU0UtVCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6MTAxOiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyTF8xMEdfQkFTRV9UXFx0MHgxODk5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xMDItLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODIyLUwgMUdiRSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6MTAzOiNkZWZpbmUgSUNFX0RFVl9JRF9FODIyTF9TR01JSVxcdFxcdDB4MTg5QVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMTA0LS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyNS1DIGZvciBiYWNrcGxhbmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjEwNTojZGVmaW5lIElDRV9ERVZfSURfRTgyNUNfQkFDS1BMQU5FXFx0MHg1NzljXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xMDYtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODI1LUMgZm9yIFFTRlAgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjEwNzojZGVmaW5lIElDRV9ERVZfSURfRTgyNUNfUVNGUFxcdFxcdDB4NTc5ZFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMTA4LS8qIEludGVsKFIpIEV0aGVybmV0IENvbm5lY3Rpb24gRTgyNS1DIGZvciBTRlAgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Rldmlkcy5oOjEwOTojZGVmaW5lIElDRV9ERVZfSURfRTgyNUNfU0ZQXFx0XFx0MHg1NzllXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZXZpZHMuaC0xMTAtLyogSW50ZWwoUikgRXRoZXJuZXQgQ29ubmVjdGlvbiBFODI1LUMgMUdiRSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmg6MTExOiNkZWZpbmUgSUNFX0RFVl9JRF9FODI1Q19TR01JSVxcdFxcdDB4NTc5ZlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGV2aWRzLmgtMTEyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmM9MTExPXN0YXRpYyBib29sIGljZV9kcGxsX2lzX3N3X3BpbihzdHJ1Y3QgaWNlX3BmICpwZiwgdTggaW5kZXgsIGJvb2wgaW5wdXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmMtMTEyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RwbGwuYzoxMTM6XFx0aWYgKGlucHV0IFxcdTAwMjZcXHUwMDI2IHBmLVxcdTAwM2Vody5kZXZpY2VfaWQgPT0gSUNFX0RFVl9JRF9FODEwQ19RU0ZQKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jLTExNC1cXHRcXHRpbmRleCAtPSBJQ0VfRFBMTF9TV19QSU5fSU5QVVRfQkFTRV9RU0ZQIC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jPTM0NTc9c3RhdGljIGludCBpY2VfZHBsbF9pbml0X3JlZl9zeW5jX2lucHV0cyhzdHJ1Y3QgaWNlX3BmICpwZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jLTM1MTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmM6MzUxNDpcXHRcXHRcXHRpZiAoaHctXFx1MDAzZWRldmljZV9pZCA9PSBJQ0VfREVWX0lEX0U4MTBDX1NGUCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jLTM1MTUtXFx0XFx0XFx0ICAgIHBpbiBcXHUwMDNlIElDRV9EUExMX0U4MTBDX1NGUF9OQ19TVEFSVClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jPTQ4NTQ9c3RhdGljIGludCBpY2VfZHBsbF9pbml0X2luZm9fc3dfcGlucyhzdHJ1Y3QgaWNlX3BmICpwZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZHBsbC5jLTQ4NjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmM6NDg2MzpcXHRpZiAocGYtXFx1MDAzZWh3LmRldmljZV9pZCA9PSBJQ0VfREVWX0lEX0U4MTBDX1FTRlApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kcGxsLmMtNDg2NC1cXHRcXHRpbnB1dF9pZHhfb2Zmc2V0ID0gSUNFX0U4MTBfUkNMS19QSU5TX05VTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZndfdXBkYXRlLmM9NzcyPWljZV9vcF9wY2lfbWF0Y2hfcmVjb3JkKHN0cnVjdCBwbGRtZncgKmNvbnRleHQsIHN0cnVjdCBwbGRtZndfcmVjb3JkICpyZWNvcmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Z3X3VwZGF0ZS5jLTgxOS1cXHQgICAgKGlkLmRldmljZSA9PSBQQ0lfQU5ZX0lEIHx8IGlkLmRldmljZSA9PSBwZGV2LVxcdTAwM2VkZXZpY2UgfHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Z3X3VwZGF0ZS5jOjgyMDpcXHQgICAgaWQuZGV2aWNlID09IElDRV9ERVZfSURfRTgyMl9TSV9ERkxUKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZndfdXBkYXRlLmMtODIxLVxcdCAgICAoaWQuc3Vic3lzdGVtX3ZlbmRvciA9PSBQQ0lfQU5ZX0lEIHx8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jPTM5NzI9dm9pZCBpY2VfaW5pdF9mZWF0dXJlX3N1cHBvcnQoc3RydWN0IGljZV9wZiAqcGYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTM5NzQtXFx0c3dpdGNoIChwZi1cXHUwMDNlaHcuZGV2aWNlX2lkKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzozOTc1OlxcdGNhc2UgSUNFX0RFVl9JRF9FODEwQ19CQUNLUExBTkU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzozOTc2OlxcdGNhc2UgSUNFX0RFVl9JRF9FODEwQ19RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mzk3NzpcXHRjYXNlIElDRV9ERVZfSURfRTgxMENfU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mzk3ODpcXHRjYXNlIElDRV9ERVZfSURfRTgxMF9YWFZfQkFDS1BMQU5FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mzk3OTpcXHRjYXNlIElDRV9ERVZfSURfRTgxMF9YWFZfUVNGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjM5ODA6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MTBfWFhWX1NGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTM5ODEtXFx0XFx0aWNlX3NldF9mZWF0dXJlX3N1cHBvcnQocGYsIElDRV9GX0RTQ1ApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM9NTc5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaWNlX3BjaV90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1Nzk0OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgxMENfQkFDS1BMQU5FKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU3OTU6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODEwQ19RU0ZQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU3OTY6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODEwQ19TRlApIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTc5NzpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MTBfWFhWX0JBQ0tQTEFORSkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1Nzk4OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgxMF9YWFZfUVNGUCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1Nzk5OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgxMF9YWFZfU0ZQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MDA6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODIzQ19CQUNLUExBTkUpIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgwMTpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjNDX1FTRlApIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgwMjpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjNDX1NGUCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODAzOlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyM0NfMTBHX0JBU0VfVCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODA0OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyM0NfU0dNSUkpIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgwNTpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjJDX0JBQ0tQTEFORSkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODA2OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyMkNfUVNGUCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODA3OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyMkNfU0ZQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MDg6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODIyQ18xMEdfQkFTRV9UKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MDk6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODIyQ19TR01JSSkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODEwOlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyMkxfQkFDS1BMQU5FKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MTE6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODIyTF9TRlApIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgxMjpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjJMXzEwR19CQVNFX1QpIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgxMzpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjJMX1NHTUlJKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MTQ6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODIzTF9CQUNLUExBTkUpIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgxNTpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MjNMX1NGUCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODE2OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyM0xfMTBHX0JBU0VfVCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODE3OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyM0xfMUdCRSkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODE4OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyM0xfUVNGUCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODE5OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyMl9TSV9ERkxUKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MjA6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODI1Q19CQUNLUExBTkUpLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MjE6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODI1Q19RU0ZQKSwgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODIyOlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyNUNfU0ZQKSwgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODIzOlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgyNUNfU0dNSUkpLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MjQ6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODMwQ0NfQkFDS1BMQU5FKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MjU6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODMwQ0NfUVNGUDU2KSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MjY6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODMwQ0NfU0ZQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4Mjc6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODMwQ0NfU0ZQX0REKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4Mjg6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODMwQ19CQUNLUExBTkUpLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4Mjk6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODMwX1hYVl9CQUNLUExBTkUpLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MzA6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODMwQ19RU0ZQKSwgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODMxOlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgzMF9YWFZfUVNGUCksIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgzMjpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MzBDX1NGUCksIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgzMzpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MzBfWFhWX1NGUCksIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgzNDpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MzVDQ19CQUNLUExBTkUpLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4MzU6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODM1Q0NfUVNGUDU2KSwgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODM2OlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgzNUNDX1NGUCksIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgzNzpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MzVDX0JBQ0tQTEFORSksIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6NTgzODpcXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJQ0VfREVWX0lEX0U4MzVDX1FTRlApLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4Mzk6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODM1Q19TRlApLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4NDA6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODM1X0xfQkFDS1BMQU5FKSwgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzo1ODQxOlxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElDRV9ERVZfSURfRTgzNV9MX1FTRlApLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjU4NDI6XFx0eyBQQ0lfVkRFVklDRShJTlRFTCwgSUNFX0RFVl9JRF9FODM1X0xfU0ZQKSwgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy01ODQzLVxcdC8qIHJlcXVpcmVkIGxhc3QgZW50cnkgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM9NTc1Nj1zdGF0aWMgaW50IGljZV9nZXRfcGZfYzgyN19pZHgoc3RydWN0IGljZV9odyAqaHcsIHU4ICppZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTU3NjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo1NzY3OlxcdGlmIChody1cXHUwMDNlZGV2aWNlX2lkICE9IElDRV9ERVZfSURfRTgxMENfUVNGUCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNTc2OC1cXHRcXHQqaWR4ID0gQzgyN18wO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYz01OTQ5PWljZV9jZ3VfZ2V0X3Bpbl9kZXNjKHN0cnVjdCBpY2VfaHcgKmh3LCBib29sIGlucHV0LCBpbnQgKnNpemUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTU5NTMtXFx0c3dpdGNoIChody1cXHUwMDNlZGV2aWNlX2lkKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo1OTU0OlxcdGNhc2UgSUNFX0RFVl9JRF9FODEwQ19TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy01OTU1LVxcdFxcdGlmIChpbnB1dCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy01OTYyLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NTk2MzpcXHRjYXNlIElDRV9ERVZfSURfRTgxMENfUVNGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTU5NjQtXFx0XFx0aWYgKGlucHV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTU5NzEtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo1OTcyOlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF8xMEdfQkFTRV9UOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NTk3MzpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0xfMUdCRTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjU5NzQ6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMX0JBQ0tQTEFORTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjU5NzU6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMX1FTRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo1OTc2OlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF9TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo1OTc3OlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ18xMEdfQkFTRV9UOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NTk3ODpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0NfQkFDS1BMQU5FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NTk3OTpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0NfUVNGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjU5ODA6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjU5ODE6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NHTUlJOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNTk4Mi1cXHRcXHR0ID0gaWNlX2NndV9nZXRfcGluX2Rlc2NfZTgyMyhodywgaW5wdXQsIHNpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYz02MTY3PWludCBpY2VfZ2V0X2NndV9yY2xrX3Bpbl9pbmZvKHN0cnVjdCBpY2VfaHcgKmh3LCB1OCAqYmFzZV9pZHgsIHU4ICpwaW5fbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy02MTcyLVxcdHN3aXRjaCAoaHctXFx1MDAzZWRldmljZV9pZCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjE3MzpcXHRjYXNlIElDRV9ERVZfSURfRTgxMENfU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjE3NDpcXHRjYXNlIElDRV9ERVZfSURfRTgxMENfUVNGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTYxNzUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTYxODItXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MTgzOlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF8xMEdfQkFTRV9UOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjE4NDpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0xfMUdCRTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYxODU6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMX0JBQ0tQTEFORTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYxODY6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMX1FTRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MTg3OlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF9TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MTg4OlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ18xMEdfQkFTRV9UOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjE4OTpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0NfQkFDS1BMQU5FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjE5MDpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0NfUVNGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYxOTE6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYxOTI6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NHTUlJOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNjE5My1cXHRcXHQqcGluX251bSA9IElDRV9FODJYX1JDTEtfUElOU19OVU07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTYyMDMtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjA0OlxcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19CQUNLUExBTkU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjA1OlxcdGNhc2UgSUNFX0RFVl9JRF9FODI1Q19RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjIwNjpcXHRjYXNlIElDRV9ERVZfSURfRTgyNUNfU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjIwNzpcXHRjYXNlIElDRV9ERVZfSURfRTgyNUNfU0dNSUk6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy02MjA4LVxcdFxcdCpwaW5fbnVtID0gSUNFX1NZTkNFX0NMS19OVU07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jPTYyMzA9aW50IGljZV9jZ3VfZ2V0X291dHB1dF9waW5fc3RhdGVfY2FwcyhzdHJ1Y3QgaWNlX2h3ICpodywgdTggcGluX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYy02MjM1LVxcdHN3aXRjaCAoaHctXFx1MDAzZWRldmljZV9pZCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjIzNjpcXHRjYXNlIElDRV9ERVZfSURfRTgxMENfU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNjIzNy1cXHRcXHRpZiAocGluX2lkID09IFpMX09VVDIgfHwgcGluX2lkID09IFpMX09VVDMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTYyMzktXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjQwOlxcdGNhc2UgSUNFX0RFVl9JRF9FODEwQ19RU0ZQOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNjI0MS1cXHRcXHRpZiAocGluX2lkID09IFpMX09VVDIgfHwgcGluX2lkID09IFpMX09VVDMgfHwgcGluX2lkID09IFpMX09VVDQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jLTYyNDMtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjQ0OlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF8xMEdfQkFTRV9UOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjI0NTpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0xfMUdCRTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYyNDY6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMX0JBQ0tQTEFORTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYyNDc6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNMX1FTRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjQ4OlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzTF9TRlA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wdHBfaHcuYzo2MjQ5OlxcdGNhc2UgSUNFX0RFVl9JRF9FODIzQ18xMEdfQkFTRV9UOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjI1MDpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0NfQkFDS1BMQU5FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmM6NjI1MTpcXHRjYXNlIElDRV9ERVZfSURfRTgyM0NfUVNGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYyNTI6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NGUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3B0cF9ody5jOjYyNTM6XFx0Y2FzZSBJQ0VfREVWX0lEX0U4MjNDX1NHTUlJOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHRwX2h3LmMtNjI1NC1cXHRcXHRpZiAoaHctXFx1MDAzZWNndV9wYXJ0X251bWJlciA9PVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNzoyOToxNi43ODg2Njg2MTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTAyODYyNzc4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgaWNlYCBEcml2ZXIgYW5kIGl0cyBIYXJkd2FyZSBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBGaXJzdCwgSSBuZWVkIHRvIHJldmlzaXQgU2VjdGlvbiAyIG9mIHRoZSBpbnN0cnVjdGlvbnMuIFRoZSBiaXQgYWJvdXQgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiDigJMgdGhhdCdzIHRoZSBrZXkuIFNwZWNpZmljYWxseSwgdGhlIG1lbnRpb24gb2YgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgYW5kIGBhbWRncHVgLiBUaGUgY3JpdGljYWwgcG9pbnQgaGVyZSBpcyB0aGF0IHRoZXNlIHJlcXVpcmUgYWN0dWFsIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcywgd2hpY2ggYXJlbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQncyB0aGUgYmFzZWxpbmUuXG5cbk5vdywgY29uc2lkZXJpbmcgdGhlIGBpY2VgIGRyaXZlciDigJMgdGhhdCdzIHRoZSBkcml2ZXIgZm9yIEludGVsIEV0aGVybmV0IDgwMCBTZXJpZXMgY2FyZHMsIHRoaW5ncyBsaWtlIHRoZSBFODEwLCBFODIyLCBhbmQgdGhlIHJlc3QuIFRoZXNlIGFyZSBzZXJpb3VzLCBoaWdoLXBlcmZvcm1hbmNlIGVudGVycHJpc2UgRXRoZXJuZXQgUENJZSBjb250cm9sbGVycyDigJMgMTAwR2JFLCAyNUdiRSwgdGhhdCBzb3J0IG9mIHRoaW5nLiBUaGUgaW1wbGljYXRpb24gaXMsIHRoZXNlICpyZXF1aXJlKiBwaHlzaWNhbCBJbnRlbCBFODAwIHNlcmllcyBQQ0llIGhhcmR3YXJlLiBBbmQsIGFzIEkgc3VzcGVjdGVkLCBzdGFuZGFyZCBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aG9zZSwgb25seSB0aGUgb2xkZXIgYW5kIGxlc3MgcGVyZm9ybWFudCBlMTAwMCwgZTEwMDBlLCBhbmQgaWdiIGRldmljZXMuXG5cbkJ1dCBob2xkIG9uLiBUaGlzIGFsd2F5cyBwcm9tcHRzIHRoZSBxdWVzdGlvbjogSXMgdGhlcmUgKmFueSogcG9zc2liaWxpdHkgb2YgYSB2aXJ0dWFsIG9yIGF1eGlsaWFyeSBkZXZpY2UgYmluZGluZyAqd2l0aG91dCogcGh5c2ljYWwgaGFyZHdhcmU/IEEgbG9uZyBzaG90LCBidXQgSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBJIHNob3VsZCBjaGVjayBob3cgYGljZV9wcm9iZWAgd29ya3MuIENhbiBpdCBiZSBwcm9iZWQgd2l0aG91dCBhIHJlYWwgUENJIGRldmljZT8gVGhlIGxvZ2ljIGlzIHRoYXQgYGljZV9wcm9iZWAgaXMgdHJpZ2dlcmVkIGJ5IHRoZSBQQ0kgY29yZSB3aGVuZXZlciBpdCBmaW5kcyBhIG1hdGNoaW5nIFBDSSB2ZW5kb3IgYW5kIGRldmljZSBJRC4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gY2hlY2sgYGljZV9wcm9iZWAgZm9yIG1vcmUgaW5zaWdodC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEwMTIsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTc6Mjk6MjEuODE3Mjk4OTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk2MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUxNjAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjUxNjA6XFx0ICpcXG41MTYxOlxcdCAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBvbiBmYWlsdXJlXFxuNTE2MjpcXHQgKi9cXG41MTYzOlxcdHN0YXRpYyBpbnRcXG41MTY0OlxcdGljZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgX19hbHdheXNfdW51c2VkICplbnQpXFxuNTE2NTpcXHR7XFxuNTE2NjpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbjUxNjc6XFx0XFx0Ym9vbCBuZWVkX2Rldl9kZWluaXQgPSBmYWxzZTtcXG41MTY4OlxcdFxcdHN0cnVjdCBpY2VfYWRhcHRlciAqYWRhcHRlcjtcXG41MTY5OlxcdFxcdHN0cnVjdCBpY2VfcGYgKnBmO1xcbjUxNzA6XFx0XFx0c3RydWN0IGljZV9odyAqaHc7XFxuNTE3MTpcXHRcXHRpbnQgZXJyO1xcbjUxNzI6XFx0XFxuNTE3MzpcXHRcXHRpZiAocGRldi1cXHUwMDNlaXNfdmlydGZuKSB7XFxuNTE3NDpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcImNhbid0IHByb2JlIGEgdmlydHVhbCBmdW5jdGlvblxcXFxuXFxcIik7XFxuNTE3NTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG41MTc2OlxcdFxcdH1cXG41MTc3OlxcdFxcbjUxNzg6XFx0XFx0Lyogd2hlbiB1bmRlciBhIGtkdW1wIGtlcm5lbCBpbml0aWF0ZSBhIHJlc2V0IGJlZm9yZSBlbmFibGluZyB0aGVcXG41MTc5OlxcdFxcdCAqIGRldmljZSBpbiBvcmRlciB0byBjbGVhciBvdXQgYW55IHBlbmRpbmcgRE1BIHRyYW5zYWN0aW9ucy4gVGhlc2VcXG41MTgwOlxcdFxcdCAqIHRyYW5zYWN0aW9ucyBjYW4gY2F1c2Ugc29tZSBzeXN0ZW1zIHRvIG1hY2hpbmUgY2hlY2sgd2hlbiBkb2luZ1xcbjUxODE6XFx0XFx0ICogdGhlIHBjaW1fZW5hYmxlX2RldmljZSgpIGJlbG93LlxcbjUxODI6XFx0XFx0ICovXFxuNTE4MzpcXHRcXHRpZiAoaXNfa2R1bXBfa2VybmVsKCkpIHtcXG41MTg0OlxcdFxcdFxcdHBjaV9zYXZlX3N0YXRlKHBkZXYpO1xcbjUxODU6XFx0XFx0XFx0cGNpX2NsZWFyX21hc3RlcihwZGV2KTtcXG41MTg2OlxcdFxcdFxcdGVyciA9IHBjaWVfZmxyKHBkZXYpO1xcbjUxODc6XFx0XFx0XFx0aWYgKGVycilcXG41MTg4OlxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuNTE4OTpcXHRcXHRcXHRwY2lfcmVzdG9yZV9zdGF0ZShwZGV2KTtcXG41MTkwOlxcdFxcdH1cXG41MTkxOlxcdFxcbjUxOTI6XFx0XFx0LyogdGhpcyBkcml2ZXIgdXNlcyBkZXZyZXMsIHNlZVxcbjUxOTM6XFx0XFx0ICogRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0XFxuNTE5NDpcXHRcXHQgKi9cXG41MTk1OlxcdFxcdGVyciA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcXG41MTk2OlxcdFxcdGlmIChlcnIpXFxuNTE5NzpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbjUxOTg6XFx0XFxuNTE5OTpcXHRcXHRlcnIgPSBwY2ltX2lvbWFwX3JlZ2lvbnMocGRldiwgQklUKElDRV9CQVIwKSwgZGV2X2RyaXZlcl9zdHJpbmcoZGV2KSk7XFxuNTIwMDpcXHRcXHRpZiAoZXJyKSB7XFxuNTIwMTpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkJBUjAgSS9PIG1hcCBlcnJvciAlZFxcXFxuXFxcIiwgZXJyKTtcXG41MjAyOlxcdFxcdFxcdHJldHVybiBlcnI7XFxuNTIwMzpcXHRcXHR9XFxuNTIwNDpcXHRcXG41MjA1OlxcdFxcdHBmID0gaWNlX2FsbG9jYXRlX3BmKGRldik7XFxuNTIwNjpcXHRcXHRpZiAoIXBmKVxcbjUyMDc6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuNTIwODpcXHRcXG41MjA5OlxcdFxcdC8qIGluaXRpYWxpemUgQXV4aWxpYXJ5IGluZGV4IHRvIGludmFsaWQgdmFsdWUgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTc6Mjk6MjEuODE3Nzk3NDdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6Njg5Njg4NTM5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2gncyBGdXp6aW5nIFdvcnRoaW5lc3MqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggZXhwbGljaXRseSB0YXJnZXRzIHRoZSBJbnRlbCBFODAwIHNlcmllcyBOSUNzLCBzcGVjaWZpY2FsbHkgYnkgdG91Y2hpbmcgdGhlIGBpY2VgIGRyaXZlciBmaWxlczogYGljZV9jb21tb24uY2AgYW5kIGBpY2VfZXRodG9vbC5jYC4gIEkga25vdyB0aGUgYGljZWAgZHJpdmVyLiBJdCdzIHRoZSBvbmUgZm9yIHRob3NlIEludGVsIEV0aGVybmV0IDgwMCBTZXJpZXMgZGV2aWNlcy4gQW5kIEkgc2VlIG1vZGlmaWNhdGlvbnMgdG8gZnVuY3Rpb25zIHJlbGF0ZWQgdG8gcG9ydCBjYXBhYmlsaXRpZXMgKGBpY2VfcmVjYWxjX3BvcnRfbGltaXRlZF9jYXBzYCkgYW5kIGV0aHRvb2wgc2V0dGluZ3MgKGBpY2VfZ2V0X2xpbmtfa3NldHRpbmdzYCwgYGljZV9hdXRvbmVnX2Rpc2FibGVfYWxsb3dlZGAsIGBpY2Vfc2V0dXBfYXV0b25lZ2ApLlxuXG5DcnVjaWFsbHksIHRoZSBjb2RlIHJlZmVyZW5jZXMgdGhlIGBJQ0VfTUFDX0U4MzBgIHdoaWNoIGNvbmZpcm1zIHRoZSBmb2N1cyBvbiB0aGF0IGZhbWlseSBvZiBoYXJkd2FyZS4gIFRoaXMgaXNuJ3QgZ2VuZXJhbCBFdGhlcm5ldDsgdGhpcyBpcyBzcGVjaWFsaXplZCBoYXJkd2FyZS5cblxuTm93LCB0aGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIGNhbiBiZSByZWFjaGVkIGluIGEgdHlwaWNhbCBmdXp6aW5nIHNldHVwLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbGlrZSBRRU1VIGFuZCBHQ0UsIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25zICpjYW5ub3QqIGVtdWxhdGUgdGhpcyB0eXBlIG9mIHBoeXNpY2FsLCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZS4gIFRoZSBkb2N1bWVudGF0aW9uIGV4cGxpY2l0bHkgc3RhdGVzIHRoaXMgbGltaXRhdGlvbjogIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIGFyZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gdGhvc2UgZW52aXJvbm1lbnRzLiAgVGhlIGBpY2VgIGRyaXZlciBkZWZpbml0ZWx5IGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeS5cblxuSSd2ZSBjb25maXJtZWQgdGhhdCBzeXprYWxsZXIgKmNhbm5vdCogZnV6eiB0aGUgYGljZWAgZHJpdmVyIHVubGVzcyBhIHJlYWwgSW50ZWwgRTgwMCBQQ0llIGRldmljZSBpcyBwcmVzZW50IG9yIGVtdWxhdGVkLCB3aGljaCB3ZSBrbm93IGlzbid0IHRoZSBjYXNlIGluIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25zLlxuXG5UaGVyZWZvcmUsIGFwcGx5aW5nIHRoZSB0ZXN0IGNvbmRpdGlvbnMsIHRoaXMgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgd2l0aGluIHRoZSBjb250ZXh0IG9mIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjsgaWYgdGhlIGNvZGUgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LCB3ZSBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gU28sIEknbGwgc2V0IGBXb3J0aEZ1enppbmcgPSBmYWxzZWAsIGBGb2N1c1N5bWJvbHMgPSBbXWAsIGFuZCBgRW5hYmxlQ29uZmlncyA9IFtdYC4gSSdsbCBhbHNvIHByb3ZpZGUgYSBjb25jaXNlIHJlYXNvbmluZzogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEV0aGVybmV0IDgwMCBTZXJpZXMgKGljZSkgbmV0d29yayBkcml2ZXIgKGljZV9jb21tb24uYyBhbmQgaWNlX2V0aHRvb2wuYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIChJbnRlbCBFODAwIHNlcmllcyBOSUNzKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjQxMiwiT3V0cHV0VG9rZW5zIjoxMTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNzoyOToyOC43MTQ2ODYyNzNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgRXRoZXJuZXQgODAwIFNlcmllcyAoaWNlKSBkcml2ZXIgKGljZV9jb21tb24uYyBhbmQgaWNlX2V0aHRvb2wuYykuIFRoaXMgZHJpdmVyIGRyaXZlcyBwaHlzaWNhbCBJbnRlbCBFODAwIHNlcmllcyBQQ0llIG5ldHdvcmsgYWRhcHRlcnMsIHdoaWNoIHJlcXVpcmUgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChlLmcuLCBRRU1VKS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgRXRoZXJuZXQgODAwIFNlcmllcyAoaWNlKSBkcml2ZXIgKGljZV9jb21tb24uYyBhbmQgaWNlX2V0aHRvb2wuYykuIFRoaXMgZHJpdmVyIGRyaXZlcyBwaHlzaWNhbCBJbnRlbCBFODAwIHNlcmllcyBQQ0llIG5ldHdvcmsgYWRhcHRlcnMsIHdoaWNoIHJlcXVpcmUgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChlLmcuLCBRRU1VKS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNzoyOToyOC43MTQ3MjA2OTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmrr8z[1] Phase: Running StartedAt: 2026-09-15 17:29:39 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmrr8z[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-15 17:29:39 +0000 UTC FinishedAt: 2026-09-15 17:29:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}