Name: series-workflowd8q8b Phase: Succeeded StartedAt: 2026-08-26 15:20:19 +0000 UTC FinishedAt: 2026-08-26 19:18:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[0] Phase: Succeeded StartedAt: 2026-08-26 15:20:19 +0000 UTC FinishedAt: 2026-08-26 15:40:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[0].run-triage Phase: Succeeded StartedAt: 2026-08-26 15:20:19 +0000 UTC FinishedAt: 2026-08-26 15:40:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dc4b95b8fee95113587e93ca116356032d271371", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN", "IPV6" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dc4b95b8fee95113587e93ca116356032d271371", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN", "IPV6" ], "series_id": "74c8345d-4470-4ebd-8939-660e04183cee" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "vxlan_mdb_add", "vxlan_mdb_del", "vxlan_mdb_get" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2eGxhbl9tZGJfYWRkJiMzNDssCiAgICAmIzM0O3Z4bGFuX21kYl9kZWwmIzM0OywKICAgICYjMzQ7dnhsYW5fbWRiX2dldCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgaW5wdXQgdmFsaWRhdGlvbiBmb3IgbmV0bGluayBhdHRyaWJ1dGVzIGluIHZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UgdG8gcmVqZWN0IGFsbC16ZXJvcyBzb3VyY2UgYWRkcmVzc2VzIChJTkFERFJfQU5ZIGZvciBJUHY0IGFuZCBpcHY2X2FkZHJfYW55IGZvciBJUHY2KS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIG1vZGlmeSBzdHJ1Y3R1cmUgbGF5b3V0cywgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2UuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgbG9naWNhbCBjaGVja3Mgb24gYWxyZWFkeSBpbml0aWFsaXplZCBkYXRhIHBhcnNlZCBmcm9tIG5ldGxpbmsgbWVzc2FnZXMuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIHRvIHByZXZlbnQgYWxsLXplcm9zIHNvdXJjZSBhZGRyZXNzZXMgaW4gVlhMQU4gTURCIChNdWx0aWNhc3QgRm9yd2FyZGluZyBEYXRhYmFzZSkgZW50cmllcy4gVGhpcyBsb2dpYyBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgUlRNX05FV01EQiwgUlRNX0RFTE1EQiwgYW5kIFJUTV9HRVRNREIgY29tbWFuZHMuIEZ1enppbmcgdGhlIE1EQiBuZXRsaW5rIGhhbmRsZXJzIHdpbGwgaGVscCBlbnN1cmUgdGhlIG5ldyB2YWxpZGF0aW9uIGxvZ2ljIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMWZjZTFjOThmMGFmMzAxMDA4OTgzOTRkYWFlYjYxYWIwNDM1MDMyNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDE1OjM3OjQyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmNcbmluZGV4IGQ3MWUxOTI1ZWNmZGIuLjc5ODZjNWI1ZGM2NzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmNcbkBAIC0zNTQsNiAmIzQzOzM1NCwxMCBAQCBzdGF0aWMgYm9vbCB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsIF9fYmUxNiBwcm90byxcbiBcdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtJUHY0IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZFwmIzM0Oyk7XG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0XHR9XG4mIzQzO1x0XHRpZiAobmxhX2dldF9pbl9hZGRyKGF0dHIpID09IGh0b25sKElOQUREUl9BTlkpKSB7XG4mIzQzO1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O0lQdjQgYWxsLXplcm9zIHNvdXJjZSBhZGRyZXNzIGlzIG5vdCBhbGxvd2VkXCYjMzQ7KTtcbiYjNDM7XHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdFx0fVxuIFx0XHRicmVhaztcbiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbiBcdGNhc2UgaHRvbnMoRVRIX1BfSVBWNik6IHtcbkBAIC0zNjgsNiAmIzQzOzM3MiwxMCBAQCBzdGF0aWMgYm9vbCB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsIF9fYmUxNiBwcm90byxcbiBcdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtJUHY2IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZFwmIzM0Oyk7XG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0XHR9XG4mIzQzO1x0XHRpZiAoaXB2Nl9hZGRyX2FueShcdTAwMjZzcmMpKSB7XG4mIzQzO1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O0lQdjYgYWxsLXplcm9zIHNvdXJjZSBhZGRyZXNzIGlzIG5vdCBhbGxvd2VkXCYjMzQ7KTtcbiYjNDM7XHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdFx0fVxuIFx0XHRicmVhaztcbiBcdH1cbiAjZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNTozNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VlhMQU4mIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Z4bGFuX21kYl9hZGQmIzM0OywKICAgICYjMzQ7dnhsYW5fbWRiX2RlbCYjMzQ7LAogICAgJiMzNDt2eGxhbl9tZGJfZ2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiB0byBwcmV2ZW50IGFsbC16ZXJvcyBzb3VyY2UgYWRkcmVzc2VzIGluIFZYTEFOIE1EQiAoTXVsdGljYXN0IEZvcndhcmRpbmcgRGF0YWJhc2UpIGVudHJpZXMuIFRoaXMgbG9naWMgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIFJUTV9ORVdNREIsIFJUTV9ERUxNREIsIGFuZCBSVE1fR0VUTURCIGNvbW1hbmRzLiBGdXp6aW5nIHRoZSBNREIgbmV0bGluayBoYW5kbGVycyB3aWxsIGhlbHAgZW5zdXJlIHRoZSBuZXcgdmFsaWRhdGlvbiBsb2dpYyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDFmY2UxYzk4ZjBhZjMwMTAwODk4Mzk0ZGFhZWI2MWFiMDQzNTAzMjQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAyNiAxNTozNzo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMKaW5kZXggZDcxZTE5MjVlY2ZkYi4uNzk4NmM1YjVkYzY3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMKQEAgLTM1NCw2ICYjNDM7MzU0LDEwIEBAIHN0YXRpYyBib29sIHZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgX19iZTE2IHByb3RvLAogCQkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtJUHY0IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZCYjMzQ7KTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQomIzQzOwkJaWYgKG5sYV9nZXRfaW5fYWRkcihhdHRyKSA9PSBodG9ubChJTkFERFJfQU5ZKSkgewomIzQzOwkJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssICYjMzQ7SVB2NCBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3MgaXMgbm90IGFsbG93ZWQmIzM0Oyk7CiYjNDM7CQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJfQogCQlicmVhazsKICNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KQogCWNhc2UgaHRvbnMoRVRIX1BfSVBWNik6IHsKQEAgLTM2OCw2ICYjNDM7MzcyLDEwIEBAIHN0YXRpYyBib29sIHZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgX19iZTE2IHByb3RvLAogCQkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtJUHY2IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZCYjMzQ7KTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQomIzQzOwkJaWYgKGlwdjZfYWRkcl9hbnkoJmFtcDtzcmMpKSB7CiYjNDM7CQkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtJUHY2IGFsbC16ZXJvcyBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZCYjMzQ7KTsKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CQl9CiAJCWJyZWFrOwogCX0KICNlbmRpZgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNTozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTk0CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVlhMQU4gTURCIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBhZGRlZCBzb21lIGNoZWNrcyBmb3IgYElOQUREUl9BTllgIGFuZCBgaXB2Nl9hZGRyX2FueWAgd2l0aGluIHRoZSBgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZWAgZnVuY3Rpb24uIFRoYXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseS4gSXQmIzM5O3MgdHdlYWtpbmcgdGhlIE1EQiwgdGhlIE11bHRpY2FzdCBGb3J3YXJkaW5nIERhdGFiYXNlLCB3aGljaCBpcyBjcnVjaWFsIGZvciBWWExBTiYjMzk7cyBtdWx0aWNhc3QgaGFuZGxpbmcuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGF0JiMzOTtzIHRoZSAqY29udGV4dCogaGVyZT8mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZWAgaXMgYmVpbmcgY2FsbGVkIGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMuIEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gbXVsdGljYXN0LCBvciBwZXJoYXBzIGFueSBzcGVjaWZpYyBWWExBTiBzZXR1cCwgdGhhdCB0aGlzIGNoYW5nZSBpcyBhZGRyZXNzaW5nPyBJIHdhbnQgdG8gc2VlIGlmIHRoaXMgaXMgdGFyZ2V0ZWQgYXQgYSBwYXJ0aWN1bGFyIHVzZSBjYXNlIG9yIGlmIGl0JiMzOTtzIGEgbW9yZSBnZW5lcmFsIGltcHJvdmVtZW50LiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGNoYWluIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgYWRkZWQgY2hlY2tzLiBDb250ZXh0IGlzIGtleSB0byBwcm9wZXJseSBhc3Nlc3MgaXRzIGltcGFjdCBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNTozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTMyNz1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdnhsYW5fbWRiZV9hdHRyc19wb2xbTURCRV9BVFRSX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0zNDMtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzozNDQ6c3RhdGljIGJvb2wgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZShjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBfX2JlMTYgcHJvdG8sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0zNDUtXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9NDIxPXN0YXRpYyBpbnQgdnhsYW5fbWRiX2NvbmZpZ19zcmNfZW50cnlfaW5pdChzdHJ1Y3QgdnhsYW5fbWRiX2NvbmZpZyAqY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTQzNy1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjQzODpcdGlmICghdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZSh0YltNREJFX1NSQ0FUVFJfQUREUkVTU10sIHByb3RvLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtNDM5LVx0XHRcdFx0ICAgICAgIGV4dGFjaykpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9NDk4PXN0YXRpYyBpbnQgdnhsYW5fbWRiX2NvbmZpZ19hdHRyc19pbml0KHN0cnVjdCB2eGxhbl9tZGJfY29uZmlnICpjZmcsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtNTE2LVx0aWYgKG1kYmVfYXR0cnNbTURCRV9BVFRSX1NPVVJDRV0gXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzo1MTc6XHQgICAgIXZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UobWRiZV9hdHRyc1tNREJFX0FUVFJfU09VUkNFXSxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTUxOC1cdFx0XHRcdCAgICAgICBlbnRyeS1cdTAwM2VhZGRyLnByb3RvLCBleHRhY2spKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTE0ODA9c3RhdGljIGludCB2eGxhbl9tZGJfZ2V0X3BhcnNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTUwMy1cdGlmIChtZGJlX2F0dHJzW01EQkVfQVRUUl9TT1VSQ0VdIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTUwNDpcdCAgICAhdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZShtZGJlX2F0dHJzW01EQkVfQVRUUl9TT1VSQ0VdLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTUwNS1cdFx0XHRcdCAgICAgICBlbnRyeS1cdTAwM2VhZGRyLnByb3RvLCBleHRhY2spKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxODAKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVlhMQU4gTURCIEluaXRpYWxpemF0aW9uIGFuZCBQYXJzaW5nKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGZyb20gYSBmZXcgcGxhY2VzOiBgdnhsYW5fbWRiX2NvbmZpZ19zcmNfZW50cnlfaW5pdGAsIGB2eGxhbl9tZGJfY29uZmlnX2F0dHJzX2luaXRgLCBhbmQgYHZ4bGFuX21kYl9nZXRfcGFyc2VgLiBCYXNlZCBvbiB0aGUgbmFtaW5nLCBteSBpbW1lZGlhdGUgYXNzdW1wdGlvbiBpcyB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW52b2x2ZWQgaW4gaGFuZGxpbmcgbmV0bGluayBtZXNzYWdlcyByZWxhdGVkIHRvIFZYTEFOIE11bHRpY2FzdCBEYXRhIEJhc2UgKE1EQikgb3BlcmF0aW9ucy4gVGhhdCBtYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIGNvbnRleHQuIFRvIGNvbmZpcm0gdGhpcywgSSBzaG91bGQgcmVhbGx5IGRpZyBpbnRvIGhvdyBgdnhsYW5fbWRiX2NvbmZpZ19hdHRyc19pbml0YCBhbmQgYHZ4bGFuX21kYl9nZXRfcGFyc2VgIGFyZSB1c2VkLCBhcyB0aGF0IHNob3VsZCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBkYXRhIHN0cnVjdHVyZXMgYW5kIHBhcnNpbmcgaW52b2x2ZWQgd2l0aCBzZXR0aW5nIHVwIG9yIHF1ZXJ5aW5nIHRoZSBNREIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnhsYW5fbWRiX2NvbmZpZ19hdHRyc19pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTQ5MD1zdGF0aWMgdm9pZCB2eGxhbl9tZGJfY29uZmlnX3NyY19saXN0X2Zpbmkoc3RydWN0IHZ4bGFuX21kYl9jb25maWcgKmNmZylcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy00OTctXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzo0OTg6c3RhdGljIGludCB2eGxhbl9tZGJfY29uZmlnX2F0dHJzX2luaXQoc3RydWN0IHZ4bGFuX21kYl9jb25maWcgKmNmZyxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTQ5OS1cdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgYnJfbWRiX2VudHJ5ICplbnRyeSxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz02MDk9c3RhdGljIGludCB2eGxhbl9tZGJfY29uZmlnX2luaXQoc3RydWN0IHZ4bGFuX21kYl9jb25maWcgKmNmZyxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy02NjEtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzo2NjI6XHRyZXR1cm4gdnhsYW5fbWRiX2NvbmZpZ19hdHRyc19pbml0KGNmZywgZW50cnksIHRiW01EQkFfU0VUX0VOVFJZX0FUVFJTXSxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTY2My1cdFx0XHRcdFx0ICAgZXh0YWNrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNTozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzQwCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHVuZGVyc3RhbmRpbmcsIGFzIGlmIGl0IHdlcmUgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipVbmRlcnN0YW5kaW5nIHRoZSBWWExBTiBNdWx0aWNhc3QgRGF0YWJhc2UgQ29uZmlndXJhdGlvbiBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGB2eGxhbl9tZGJfY29uZmlnX2luaXRgIGlzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgVlhMQU4gbXVsdGljYXN0IGRhdGFiYXNlIG1hbmFnZW1lbnQuIFdoYXQmIzM5O3MgaW1wb3J0YW50IHRvIGdyYXNwIGltbWVkaWF0ZWx5IGlzIHdoZXJlIGl0JiMzOTtzIGNhbGxlZCBmcm9tLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGludm9rZWQgYnkgYm90aCBgdnhsYW5fbWRiX2FkZGAgYW5kIGB2eGxhbl9tZGJfZGVsYC4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGF0IGB2eGxhbl9tZGJfY29uZmlnX2luaXRgIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIG9yIHJlc2V0dGluZyB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIHRoZSBtdWx0aWNhc3QgZGF0YWJhc2Ugd2hlbmV2ZXIgYSBuZXcgZW50cnkgaXMgYWRkZWQgb3IgYW4gZXhpc3Rpbmcgb25lIGlzIHJlbW92ZWQuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBhY3R1YWwgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCBwcmVjaXNlbHkgd2hhdCB0aGlzIGluaXRpYWxpemF0aW9uIGVudGFpbHMg4oCTIHRoaW5ncyBsaWtlIG1lbW9yeSBhbGxvY2F0aW9uLCBkZWZhdWx0IHZhbHVlcywgb3IgcGVyaGFwcyBldmVuIHJlc291cmNlIGxvY2tpbmcuIEtub3dpbmcgdGhpcyB1cGZyb250IGdpdmVzIG1lIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIHRyb3VibGVzaG9vdGluZyBvciBtb2RpZmljYXRpb24gZG93biB0aGUgbGluZSB3aGVuIGRlYWxpbmcgd2l0aCBWWExBTiBtdWx0aWNhc3Qgb3BlcmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNTozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbl9tZGJfY29uZmlnX2luaXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9NDk4PXN0YXRpYyBpbnQgdnhsYW5fbWRiX2NvbmZpZ19hdHRyc19pbml0KHN0cnVjdCB2eGxhbl9tZGJfY29uZmlnICpjZmcsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtNjA4LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6NjA5OnN0YXRpYyBpbnQgdnhsYW5fbWRiX2NvbmZpZ19pbml0KHN0cnVjdCB2eGxhbl9tZGJfY29uZmlnICpjZmcsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy02MTAtXHRcdFx0XHQgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0xMjk1PWludCB2eGxhbl9tZGJfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sIHUxNiBubG1zZ19mbGFncyxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xMzAyLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTMwMzpcdGVyciA9IHZ4bGFuX21kYl9jb25maWdfaW5pdChcdTAwMjZjZmcsIGRldiwgdGIsIG5sbXNnX2ZsYWdzLCBleHRhY2spO1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTMwNC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9MTMxMz1pbnQgdnhsYW5fbWRiX2RlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTEzMjAtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxMzIxOlx0ZXJyID0gdnhsYW5fbWRiX2NvbmZpZ19pbml0KFx1MDAyNmNmZywgZGV2LCB0YiwgMCwgZXh0YWNrKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTEzMjItXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MTYKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIHRhaWxvcmVkIGZvciBteSBleHBlcnQgcGVyc3BlY3RpdmU6CgoqKkV4YW1pbmluZyBWWExBTiBNdWx0aWNhc3QgRGF0YWJhc2UgT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IFZYTEFOIG11bHRpY2FzdCBkYXRhIGlzIGhhbmRsZWQsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgZnVuY3Rpb25zIGB2eGxhbl9tZGJfYWRkYCBhbmQgYHZ4bGFuX21kYl9kZWxgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtUaGVzZSBhcmUgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzIGZvciBtYW5hZ2luZyB0aGUgbXVsdGljYXN0IGRhdGFiYXNlIHdpdGhpbiB0aGUgVlhMQU4gbW9kdWxlLiYjMzQ7IEdpdmVuIHRoZWlyIG5hbWVzLCBJJiMzOTttIGFzc3VtaW5nIGBhZGRgIGlzIGZvciBjcmVhdGluZyBuZXcgZW50cmllcyBmb3IgbXVsdGljYXN0IGdyb3VwcywgYW5kIGBkZWxgIGlzIHRvIHJlbW92ZSB0aGVtLCBwcm9iYWJseSBmb3IgY2xlYW51cCBvciB3aGVuIGEgVk5JIGlzIG5vIGxvbmdlciBhY3RpdmUgb24gYSBnaXZlbiBub2RlLgoKVGhlIGZhY3QgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGV4cGxpY2l0bHkgKmV4cG9ydGVkKiBvciAqdXNlZCogd2l0aGluIGB2eGxhbl9jb3JlLmNgIChvciBhIHNpbWlsYXIsIGNvcmUgVlhMQU4gZmlsZSkgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhhdCB0aGlzIGlzIGEgY3JpdGljYWwgc2VjdGlvbiBvZiB0aGUgY29kZS4gVGhpcyBmdW5jdGlvbiBsaWtlbHkgc2l0cyBhdCB0aGUgaGVhcnQgb2YgaG93IG11bHRpY2FzdCB0cmFmZmljIGlzIHJlcGxpY2F0ZWQgYW5kIGZvcndhcmRlZCB3aXRoaW4gdGhlIFZYTEFOIG5ldHdvcmssIGFuZCBhbnkgaXNzdWVzIG9yIGluZWZmaWNpZW5jaWVzIGhlcmUgd291bGQgaGF2ZSBhIHNpZ25pZmljYW50IGltcGFjdCBvbiBvdmVyYWxsIHBlcmZvcm1hbmNlIGFuZCBzY2FsYWJpbGl0eS4gVGhpcyBjb3JlIGZpbGUgb3Igc2VjdGlvbiBpcyBsaWtlbHkgd2hlcmUgdGhlIG11bHRpY2FzdCBncm91cCBtZW1iZXJzaGlwLCB0aGUgbWFwcGluZyBmcm9tIFZOSXMgdG8gcGh5c2ljYWwgbmV0d29yayBkZXN0aW5hdGlvbiBncm91cHMsIGFuZCB0aGUgYXNzb2NpYXRlZCBkYXRhIHN0cnVjdHVyZXMgYXJlIG1hbmFnZWQuIFRpbWUgdG8gZ28gZGlnIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNTozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbl9tZGJfYWRkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMjkxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdnhsYW5fbmV0ZGV2X2V0aGVyX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzMwNS1cdC5uZG9fZmRiX2dldFx0XHQ9IHZ4bGFuX2ZkYl9nZXQsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzMwNjpcdC5uZG9fbWRiX2FkZFx0XHQ9IHZ4bGFuX21kYl9hZGQsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzMwNy1cdC5uZG9fbWRiX2RlbFx0XHQ9IHZ4bGFuX21kYl9kZWwsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9ODY9c3RhdGljIGNvbnN0IHN0cnVjdCByaGFzaHRhYmxlX3BhcmFtcyB2eGxhbl9tZGJfcmh0X3BhcmFtcyA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy05Mi1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjkzOnN0YXRpYyBpbnQgX192eGxhbl9tZGJfYWRkKGNvbnN0IHN0cnVjdCB2eGxhbl9tZGJfY29uZmlnICpjZmcsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy05NC1cdFx0XHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTc5Nz12eGxhbl9tZGJfcmVtb3RlX3NyY19md2RfYWRkKGNvbnN0IHN0cnVjdCB2eGxhbl9tZGJfY29uZmlnICpjZmcsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtODE4LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6ODE5Olx0cmV0dXJuIF9fdnhsYW5fbWRiX2FkZChcdTAwMjZzZ19jZmcsIGV4dGFjayk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy04MjAtfVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTEyMjk9c3RhdGljIHZvaWQgdnhsYW5fbWRiX2VudHJ5X3B1dChzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xMjQzLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTI0NDpzdGF0aWMgaW50IF9fdnhsYW5fbWRiX2FkZChjb25zdCBzdHJ1Y3QgdnhsYW5fbWRiX2NvbmZpZyAqY2ZnLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTI0NS1cdFx0XHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9MTI2OD1zdGF0aWMgaW50IF9fdnhsYW5fbWRiX2RlbChjb25zdCBzdHJ1Y3QgdnhsYW5fbWRiX2NvbmZpZyAqY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTEyOTQtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxMjk1OmludCB2eGxhbl9tZGJfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sIHUxNiBubG1zZ19mbGFncyxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTEyOTYtXHRcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTEzMDYtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxMzA3Olx0ZXJyID0gX192eGxhbl9tZGJfYWRkKFx1MDAyNmNmZywgZXh0YWNrKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTEzMDgtXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oPTIzMz1pbnQgdnhsYW5fbWRiX2R1bXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX3ByaXZhdGUuaC0yMzQtXHRcdCAgIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9wcml2YXRlLmg6MjM1OmludCB2eGxhbl9tZGJfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sIHUxNiBubG1zZ19mbGFncyxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX3ByaXZhdGUuaC0yMzYtXHRcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY1NwoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDE1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipWWExBTiBNREIgRW50cnkgVmFsaWRhdGlvbioqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgY29kZSwgYHZ4bGFuX21kYl9hZGRgIGlzIGJlaW5nIHVzZWQgYXMgdGhlIGAubmRvX21kYl9hZGRgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYHZ4bGFuX25ldGRldl9ldGhlcl9vcHNgIHN0cnVjdHVyZS4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBuZXRsaW5rLCBzcGVjaWZpY2FsbHkgd2l0aCB0aGUgYFJUTV9ORVdNREJgIG1lc3NhZ2UgdHlwZS4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuCgpUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIHRoZSBhZGRpdGlvbiBvZiBhIGNoZWNrIGZvciBgSU5BRERSX0FOWWAgYW5kIGBpcHY2X2FkZHJfYW55YCB3aXRoaW4gdGhlIGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYCBmdW5jdGlvbi4gRnVuY3Rpb25hbGx5LCB0aGlzIHByZXZlbnRzIHRoZSBhZGRpdGlvbiBvZiBNdWx0aWNhc3QgRGF0YWJhc2UgKE1EQikgZW50cmllcyB0aGF0IGhhdmUgYW4gYWxsLXplcm9zIHNvdXJjZSBhZGRyZXNzLiBUaGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSB2YWxpZCBhZGRpdGlvbiwgYW5kIEkgc2VlIHRoZSByZWFzb25pbmcuCgpHaXZlbiB0aGlzIG5ldyBjb2RlIHBhdGgsIGFuZCB0aGUgZmFjdCB0aGF0IGl0JiMzOTtzIG5ldGxpbmsgZmFjaW5nLCBmdXp6aW5nIGlzIGFic29sdXRlbHkgd2FycmFudGVkIGhlcmUuIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIG5ldGxpbmsgcGFyc2luZywgdGhlIE1EQiBoYW5kbGluZyBsb2dpYywgYW5kIG5vdyAqdGhpcyogY2hlY2sgYXJlIGFsbCByb2J1c3QgYW5kIGRvbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMuIEkgbmVlZCB0byBnZXQgdGhpcyBpbnRvIG15IGZ1enppbmcgc3RyYXRlZ3kgYW5kIHRhcmdldCB0aGlzIHNwZWNpZmljIGNvZGUgcGF0aCB0byBleGVyY2lzZSBpdC4KCkxldCBtZSBqdXN0IHF1aWNrbHkgY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFyZSByZXF1aXJlZCB0byBnZXQgVlhMQU4gd29ya2luZyBwcm9wZXJseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZYTEFOJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9MjE2PWNvbmZpZyBJUFZUQVBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTIyOS1cbmRyaXZlcnMvbmV0L0tjb25maWc6MjMwOmNvbmZpZyBWWExBTlxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzEtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIGVYdGVuc2libGUgTG9jYWwgQXJlYSBOZXR3b3JrIChWWExBTilcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE5MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKlZYTEFOIERlcGVuZGVuY2llczogQSBRdWljayBNZW50YWwgQ2hlY2sqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBWWExBTiByaWdodCBub3cuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIG1lbnRhbGx5IG1hcCBvdXQgaXRzIGRlcGVuZGVuY2llcy4gV2hhdCBhcmUgdGhlIGZvdW5kYXRpb25hbCBlbGVtZW50cyB0aGlzIHRoaW5nIGlzIGJ1aWx0IG9uPyBJIG5lZWQgdG8gcXVpY2tseSBydW4gdGhyb3VnaCB0aGUgdW5kZXJseWluZyB0ZWNobm9sb2dpZXMgYW5kIG1ha2Ugc3VyZSBJIGhhdmUgYSBzb2xpZCBncmFzcCBvbiBldmVyeXRoaW5nIHRoYXQgVlhMQU4gbGV2ZXJhZ2VzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtaW5kIG9uIHRoZSBjcml0aWNhbCBjb21wb25lbnRzIGFuZCBob3cgdGhleSBpbnRlcmFjdC4gVGhpcyBpcyBwcmV0dHkgZnVuZGFtZW50YWwgc3R1ZmYsIGJ1dCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byBoYXZlIHRoYXQgYmFzZS1sZXZlbCB1bmRlcnN0YW5kaW5nIHByZXNlbnQuIEdvdHRhIGVuc3VyZSBJJiMzOTttIHJlbWVtYmVyaW5nIHRoZSBrZXkgcGllY2VzIGFuZCB0aGVpciByb2xlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMzA6XHRjb25maWcgVlhMQU5cbiAyMzE6XHRcdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgZVh0ZW5zaWJsZSBMb2NhbCBBcmVhIE5ldHdvcmsgKFZYTEFOKVwmIzM0O1xuIDIzMjpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gMjMzOlx0XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbiAyMzQ6XHRcdHNlbGVjdCBHUk9fQ0VMTFNcbiAyMzU6XHRcdGhlbHBcbiAyMzY6XHRcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSB2eGxhbiB2aXJ0dWFsIGludGVyZmFjZXMgdGhhdCBwcm92aWRlXG4gMjM3Olx0XHQgIExheWVyIDIgTmV0d29ya3Mgb3ZlciBMYXllciAzIE5ldHdvcmtzLiBWWExBTiBpcyBvZnRlbiB1c2VkXG4gMjM4Olx0XHQgIHRvIHR1bm5lbCB2aXJ0dWFsIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuIDIzOTpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWU6XG4gMjQwOlx0XHQgICAgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtbWFoYWxpbmdhbS1kdXR0LWRjb3BzLXZ4bGFuLTAyXG4gMjQxOlx0XG4gMjQyOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAyNDM6XHRcdCAgd2lsbCBiZSBjYWxsZWQgdnhsYW4uXG4gMjQ0Olx0XG4gMjQ1Olx0Y29uZmlnIEdFTkVWRVxuIDI0NjpcdFx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBOZXR3b3JrIFZpcnR1YWxpemF0aW9uIEVuY2Fwc3VsYXRpb25cJiMzNDtcbiAyNDc6XHRcdGRlcGVuZHMgb24gSU5FVFxuIDI0ODpcdFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4gMjQ5Olx0XHRzZWxlY3QgR1JPX0NFTExTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2ODQKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgVlhMQU4gQ29uZmlndXJhdGlvbiBKb3VybmV5KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSXQmIzM5O3MgY2xlYXIgdGhhdCB0byBnZXQgYFZYTEFOYCBodW1taW5nLCBJJiMzOTttIGdvaW5nIHRvIG5lZWQgdG8gaGF2ZSBgSU5FVGAgdXAgYW5kIHJ1bm5pbmcuIEEgbm8tYnJhaW5lciwgcmVhbGx5LiBOb3csIHRoZSBuZXh0IHN0ZXAgaXMgdG8gYWN0dWFsbHkgKmVuYWJsZSogYFZYTEFOYC4gU2ltcGxlIGVub3VnaC4KCkJ1dCBiZWZvcmUgSSBnZXQgdG9vIGZhciwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTt2ZSBkb3R0ZWQgYWxsIG15IGkmIzM5O3MgYW5kIGNyb3NzZWQgYWxsIG15IHQmIzM5O3MuIFRoYXQgbWVhbnMgcmV2aXNpdGluZyBgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZWAuIEdvdHRhIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBoaWRkZW4gY29uZmlnIGxhbmRtaW5lcyBsdXJraW5nIGluIHRoZXJlLiBBaCwgYW5kIGhlcmUgd2UgZ28uIFRoZSBjb2RlJiMzOTtzIGdvdCBhIGNvbmRpdGlvbmFsIGNoZWNrIGAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilgLiBTbywgdG8gYXZvaWQgc3VycHJpc2VzIGRvd24gdGhlIGxpbmUsIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGBJUFY2YCBhcyB3ZWxsLiBUaGF04oCZcyBwcm9iYWJseSB0aGUgcmlnaHQgdGhpbmcgdG8gZG8gYW55d2F5LCBmcm9tIGEgZnV0dXJlLXByb29maW5nIHBlcnNwZWN0aXZlLgoKTm93LCBsZXQmIzM5O3Mgc2hhcnBlbiBvdXIgZm9jdXMuIFRoZSBrZXkgZnVuY3Rpb25zIGhlcmUgYXJlIGB2eGxhbl9tZGJfYWRkYCwgYHZ4bGFuX21kYl9kZWxgLCBhbmQsIHBhcnRpY3VsYXJseSwgYHZ4bGFuX21kYl9nZXRfcGFyc2VgIOKAkyB0aGF0IG9uZSBzbWVsbHMgbGlrZSBhIGNyaXRpY2FsIGVudHJ5IHBvaW50LiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgYmVpbmcgdXNlZCB0aHJvdWdob3V0IHRoZSBzeXN0ZW0uIEkmIzM5O20gZ29pbmcgdG8gZGl2ZSBpbnRvIHRoZSBjYWxsIGdyYXBoIGZvciBgdnhsYW5fbWRiX2dldF9wYXJzZWAgbmV4dC4gR290dGEgdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbl9tZGJfZ2V0X3BhcnNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTE0NzM9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHZ4bGFuX21kYmVfYXR0cnNfZ2V0X3BvbFtNREJFX0FUVFJfTUFYICYjNDM7IDFdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE0NzktXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxNDgwOnN0YXRpYyBpbnQgdnhsYW5fbWRiX2dldF9wYXJzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTQ4MS1cdFx0XHQgICAgICAgc3RydWN0IHZ4bGFuX21kYl9lbnRyeV9rZXkgKmdyb3VwLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTE1ODU9aW50IHZ4bGFuX21kYl9nZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSwgdTMyIHBvcnRpZCxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTk1LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTU5NjpcdGVyciA9IHZ4bGFuX21kYl9nZXRfcGFyc2UoZGV2LCB0YiwgXHUwMDI2Z3JvdXAsIGV4dGFjayk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTk3LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ0MQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB1bmRlcnN0YW5kaW5nOgoKKipWWExBTiBNREIgR2V0IEZ1bmN0aW9uIENhbGwqKgoKQWxyaWdodCwgc28gbGV0JiMzOTtzIGNsYXJpZnkgdGhpcy4gSSBzZWUgdGhhdCBgdnhsYW5fbWRiX2dldGAgaXMgYmVpbmcgdXRpbGl6ZWQgYXMgdGhlIGltcGxlbWVudGF0aW9uIGZvciBgLm5kb19tZGJfZ2V0YCB3aXRoaW4gYHZ4bGFuX25ldGRldl9ldGhlcl9vcHNgLiBFZmZlY3RpdmVseSwgdGhpcyBtZWFucyB0aGF0IHRoZSBWWExBTiBtb2R1bGUgaXMgbGV2ZXJhZ2luZyBpdHMgb3duIHNwZWNpZmljIGZ1bmN0aW9uLCBgdnhsYW5fbWRiX2dldGAsIHRvIGhhbmRsZSB0aGUgTURCIChNdWx0aWNhc3QgRGF0YWJhc2UpIHJldHJpZXZhbCBvcGVyYXRpb25zIHJlcXVpcmVkIGJ5IHRoZSBuZXR3b3JrIGRldmljZSBvcGVyYXRpb25zIHN0cnVjdHVyZSBmb3IgRXRoZXJuZXQgZGV2aWNlcyAoYG5kb19gKS4gSW4gZXNzZW5jZSwgaXQmIzM5O3MgcGx1Z2dpbmcgaXRzIGN1c3RvbSBNREIgcmV0cmlldmFsIGxvZ2ljIGludG8gdGhlIGJyb2FkZXIgbmV0d29yayBkZXZpY2UgZnJhbWV3b3JrLiBUaGlzIGlzIHRoZSBtZWNoYW5pc20gYnkgd2hpY2ggdGhlIFZYTEFOIGNvZGUgaW50ZWdyYXRlcyBpbnRvIHRoZSBnZW5lcmljIG5ldHdvcmtpbmcgc3RhY2ssIHNwZWNpZmljYWxseSBoYW5kbGluZyBob3cgbXVsdGljYXN0IGluZm9ybWF0aW9uIGlzIGxvb2tlZCB1cCBhbmQgbWFuYWdlZCBmb3IgVlhMQU4gdHVubmVscy4gR290IGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbl9tZGJfZ2V0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMjkxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdnhsYW5fbmV0ZGV2X2V0aGVyX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzMwOS1cdC5uZG9fbWRiX2R1bXBcdFx0PSB2eGxhbl9tZGJfZHVtcCxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMzEwOlx0Lm5kb19tZGJfZ2V0XHRcdD0gdnhsYW5fbWRiX2dldCxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMzExLVx0Lm5kb19maWxsX21ldGFkYXRhX2RzdFx0PSB2eGxhbl9maWxsX21ldGFkYXRhX2RzdCxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0xNDczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB2eGxhbl9tZGJlX2F0dHJzX2dldF9wb2xbTURCRV9BVFRSX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNDc5LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTQ4MDpzdGF0aWMgaW50IHZ4bGFuX21kYl9nZXRfcGFyc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE0ODEtXHRcdFx0ICAgICAgIHN0cnVjdCB2eGxhbl9tZGJfZW50cnlfa2V5ICpncm91cCxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0xNTE3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxNTE4OnZ4bGFuX21kYl9nZXRfcmVwbHlfYWxsb2MoY29uc3Qgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTE5LVx0XHRcdCAgY29uc3Qgc3RydWN0IHZ4bGFuX21kYl9lbnRyeSAqbWRiX2VudHJ5KVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTE1Mzc9c3RhdGljIGludFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTUzODp2eGxhbl9tZGJfZ2V0X3JlcGx5X2ZpbGwoY29uc3Qgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTM5LVx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE1ODQtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxNTg1OmludCB2eGxhbl9tZGJfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sIHUzMiBwb3J0aWQsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTg2LVx0XHQgIHUzMiBzZXEsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTk1LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTU5NjpcdGVyciA9IHZ4bGFuX21kYl9nZXRfcGFyc2UoZGV2LCB0YiwgXHUwMDI2Z3JvdXAsIGV4dGFjayk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTk3LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNjA1LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTYwNjpcdHNrYiA9IHZ4bGFuX21kYl9nZXRfcmVwbHlfYWxsb2ModnhsYW4sIG1kYl9lbnRyeSk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNjA3LVx0aWYgKCFza2IpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTYwOS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjE2MTA6XHRlcnIgPSB2eGxhbl9tZGJfZ2V0X3JlcGx5X2ZpbGwodnhsYW4sIHNrYiwgbWRiX2VudHJ5LCBwb3J0aWQsIHNlcSk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNjExLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX3ByaXZhdGUuaD0yMzk9aW50IHZ4bGFuX21kYl9kZWxfYnVsayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oLTI0MC1cdFx0ICAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9wcml2YXRlLmg6MjQxOmludCB2eGxhbl9tZGJfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sIHUzMiBwb3J0aWQsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9wcml2YXRlLmgtMjQyLVx0XHQgIHUzMiBzZXEsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3MjQKCQkJCQkJCW91dHB1dDogMTQ5CgkJCQkJCQl0aG91Z2h0czogOTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBWWExBTiBNREIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZHJpbGxlZCBkb3duIGludG8gdGhpcyBwYXRjaC4gVGhlIGtleSBlbnRyeSBwb2ludHMgYXBwZWFyIHRvIGJlIGB2eGxhbl9tZGJfYWRkYCwgYHZ4bGFuX21kYl9kZWxgLCBhbmQgYHZ4bGFuX21kYl9nZXRgIOKAkyB0aG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyB0aGF0IHdpbGwgaGFuZGxlIHRoZSBjb3JlIGxvZ2ljIHJlbGF0ZWQgdG8gdGhlIG11bHRpY2FzdCBkYXRhYmFzZS4gTXkgaW5pdGlhbCBpbnZlc3RpZ2F0aW9uIHNob3dzIHRoZXkmIzM5O3JlIHRoZSB0YXJnZXRzLCBhbmQgdGhleSBhcmUgcmVhY2hhYmxlLiBUaGlzIGlzIHdoYXQgSSBleHBlY3QuCgpUaGUgcGF0Y2ggaXRzZWxmIG1vZGlmaWVzIGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYC4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgYHZ4bGFuX21kYl9jb25maWdfc3JjX2VudHJ5X2luaXRgLCBgdnhsYW5fbWRiX2NvbmZpZ19hdHRyc19pbml0YCwgYW5kIGB2eGxhbl9tZGJfZ2V0X3BhcnNlYCwgd2hpY2ggaW4gdHVybiBhcmUgY2FsbGVkIGJ5IHRoZSBjb3JlIGB2eGxhbl9tZGJfYWRkYCwgYHZ4bGFuX21kYl9kZWxgLCBhbmQgYHZ4bGFuX21kYl9nZXRgIGZ1bmN0aW9ucy4gU28sIGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYCBpcyBkZWZpbml0ZWx5IGEgZm9jYWwgcG9pbnQuCgpJIGNvbmZpcm1lZCB0aGF0IGB2eGxhbl9tZGJfYWRkYCAoYW5kIGJ5IGV4dGVuc2lvbiwgdGhlIG90aGVycykgaXNuJiMzOTt0IHN0YXRpYzsgaXQmIzM5O3MgZXhwb3J0ZWQgYW5kIHVzZWQgYXMgYC5uZG9fbWRiX2FkZGAgaW4gYHZ4bGFuX2NvcmUuY2AsIGFjY2Vzc2VkIHRocm91Z2ggdGhlIG5ldGRldiBvcHMuIEEgbmV0bGluayBpbnRlcmZhY2UgcHJvdmlkZXMgdGhlIHVzZXJzcGFjZSBjb25uZWN0aW9uLiBUaGF0JiMzOTtzIGdvb2Q7IGl0IGNvbmZpcm1zIHRoYXQgaXQmIzM5O3MgYSByZWFsIGVudHJ5IHBvaW50LCBhbmQgbXkgYW5hbHlzaXMgaXMgcHJvZ3Jlc3NpbmcgY29ycmVjdGx5LgoKSSBjaGVja2VkIGZvciByZWxldmFudCBjb25maWd1cmF0aW9ucy4gYFZYTEFOYCBpcywgb2J2aW91c2x5LCB0aGUgcHJpbWFyeSBvbmUuIElQdjYgc3VwcG9ydCAoYElQVjZgKSBpcyBhbHNvIG5lY2Vzc2FyeSwgYW5kIGBJTkVUYCBpcyByZXF1aXJlZCBieSBgVlhMQU5gLiBJJiMzOTttIGdvaW5nIHRvIHNldCB1cCBteSBmdXp6aW5nIGVudmlyb25tZW50IHdpdGggdGhlc2UgY29uZmlndXJhdGlvbnMuCgpOb3csIGFib3V0IGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYC4gIExvb2tpbmcgYXQgdGhlIGNvZGUsIGl0JiMzOTtzIHByZXR0eSBjbGVhcjogaXQmIzM5O3MgYWRkaW5nIHZhbGlkYXRpb24gZm9yIE1EQiBzb3VyY2UgYWRkcmVzc2VzLCBzcGVjaWZpY2FsbHkgcHJldmVudGluZyBhbGwtemVyb3MgYWRkcmVzc2VzIChib3RoIElQdjQgYW5kIElQdjYpLiAgVGhlIGNvZGUgc25pcHBldCBpcyBjbGVhbiBhbmQgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyBiZWhhdmlvci4gVGhlIHZhbGlkYXRpb24gbG9naWMgaXRzZWxmIGlzIHNvbGlkLCBjaGVja2luZyBmb3IgbXVsdGljYXN0IGFuZCB6ZXJvIGFkZHJlc3NlcyBmb3IgYm90aCBJUHY0IGFuZCBJUHY2LgoKVGhlIGdvb2QgbmV3cyBpcywgdGhpcyBwYXRoIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNhbGxzOiBgcnRubF9tZGJfYWRkYCAtJmd0OyBgZGV2LSZndDtuZXRkZXZfb3BzLSZndDtuZG9fbWRiX2FkZGAuICBUaGF0IGdpdmVzIG1lIG15IGF0dGFjayBzdXJmYWNlLgoKVGhlcmVmb3JlLCBteSBhc3Nlc3NtZW50IGlzOiBgV29ydGhGdXp6aW5nOiB0cnVlYC4gIE15IGZvY3VzIHdpbGwgYmUgb24gZnV6emluZyB0aGUgTURCIG5ldGxpbmsgaGFuZGxlcnMgKFJUTV9ORVdNREIsIFJUTV9ERUxNREIsIGFuZCBSVE1fR0VUTURCKSB0byBlbnN1cmUgdGhpcyBuZXcgdmFsaWRhdGlvbiBsb2dpYyBpcyByb2J1c3QgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMgb3IgdnVsbmVyYWJpbGl0aWVzLiBUaGlzIGlzIGEgc29saWQgdGFyZ2V0IGZvciBlbnN1cmluZyB0aGUgbmV0d29yayBzdGFjayYjMzk7cyBzdGFiaWxpdHkgYW5kIHNlY3VyaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VlhMQU4mIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Z4bGFuX21kYl9hZGQmIzM0OywKICAgICYjMzQ7dnhsYW5fbWRiX2RlbCYjMzQ7LAogICAgJiMzNDt2eGxhbl9tZGJfZ2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiB0byBwcmV2ZW50IGFsbC16ZXJvcyBzb3VyY2UgYWRkcmVzc2VzIGluIFZYTEFOIE1EQiAoTXVsdGljYXN0IEZvcndhcmRpbmcgRGF0YWJhc2UpIGVudHJpZXMuIFRoaXMgbG9naWMgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIFJUTV9ORVdNREIsIFJUTV9ERUxNREIsIGFuZCBSVE1fR0VUTURCIGNvbW1hbmRzLiBGdXp6aW5nIHRoZSBNREIgbmV0bGluayBoYW5kbGVycyB3aWxsIGhlbHAgZW5zdXJlIHRoZSBuZXcgdmFsaWRhdGlvbiBsb2dpYyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VlhMQU4mIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Z4bGFuX21kYl9hZGQmIzM0OywKICAgICYjMzQ7dnhsYW5fbWRiX2RlbCYjMzQ7LAogICAgJiMzNDt2eGxhbl9tZGJfZ2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiB0byBwcmV2ZW50IGFsbC16ZXJvcyBzb3VyY2UgYWRkcmVzc2VzIGluIFZYTEFOIE1EQiAoTXVsdGljYXN0IEZvcndhcmRpbmcgRGF0YWJhc2UpIGVudHJpZXMuIFRoaXMgbG9naWMgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIFJUTV9ORVdNREIsIFJUTV9ERUxNREIsIGFuZCBSVE1fR0VUTURCIGNvbW1hbmRzLiBGdXp6aW5nIHRoZSBNREIgbmV0bGluayBoYW5kbGVycyB3aWxsIGhlbHAgZW5zdXJlIHRoZSBuZXcgdmFsaWRhdGlvbiBsb2dpYyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6NDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNTo0MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gZm9yIG5ldGxpbmsgYXR0cmlidXRlcyBpbiB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlIHRvIHJlamVjdCBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3NlcyAoSU5BRERSX0FOWSBmb3IgSVB2NCBhbmQgaXB2Nl9hZGRyX2FueSBmb3IgSVB2NikuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBtb2RpZnkgc3RydWN0dXJlIGxheW91dHMsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IGxvZ2ljYWwgY2hlY2tzIG9uIGFscmVhZHkgaW5pdGlhbGl6ZWQgZGF0YSBwYXJzZWQgZnJvbSBuZXRsaW5rIG1lc3NhZ2VzLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDFmY2UxYzk4ZjBhZjMwMTAwODk4Mzk0ZGFhZWI2MWFiMDQzNTAzMjQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAyNiAxNTozNzo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMKaW5kZXggZDcxZTE5MjVlY2ZkYi4uNzk4NmM1YjVkYzY3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMKQEAgLTM1NCw2ICYjNDM7MzU0LDEwIEBAIHN0YXRpYyBib29sIHZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgX19iZTE2IHByb3RvLAogCQkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtJUHY0IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZCYjMzQ7KTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQomIzQzOwkJaWYgKG5sYV9nZXRfaW5fYWRkcihhdHRyKSA9PSBodG9ubChJTkFERFJfQU5ZKSkgewomIzQzOwkJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssICYjMzQ7SVB2NCBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3MgaXMgbm90IGFsbG93ZWQmIzM0Oyk7CiYjNDM7CQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJfQogCQlicmVhazsKICNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KQogCWNhc2UgaHRvbnMoRVRIX1BfSVBWNik6IHsKQEAgLTM2OCw2ICYjNDM7MzcyLDEwIEBAIHN0YXRpYyBib29sIHZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgX19iZTE2IHByb3RvLAogCQkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtJUHY2IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZCYjMzQ7KTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQomIzQzOwkJaWYgKGlwdjZfYWRkcl9hbnkoJmFtcDtzcmMpKSB7CiYjNDM7CQkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtJUHY2IGFsbC16ZXJvcyBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZCYjMzQ7KTsKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CQl9CiAJCWJyZWFrOwogCX0KICNlbmRpZgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5MQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDIwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgVlhMQU4gU291cmNlIEFkZHJlc3MgVmFsaWRhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYCB3aXRoaW4gYHZ4bGFuX21kYi5jYC4gSXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkOiB0aGV5JiMzOTtyZSBhZGRpbmcgaW5wdXQgdmFsaWRhdGlvbiBvbiB0aGUgc291cmNlIGFkZHJlc3MgdXNlZCBpbiBuZXRsaW5rIGF0dHJpYnV0ZXMuIEdvb2QuIFRoZSBrZXkgdGhpbmcgaXMgdGhhdCBpdCBleHBsaWNpdGx5IGNoZWNrcyBmb3IgdGhlIGFsbC16ZXJvcyBhZGRyZXNzLCBib3RoIElQdjQgKGBJTkFERFJfQU5ZYCkgYW5kIElQdjYgKGBpcHY2X2FkZHJfYW55YCkuIFNtYXJ0LiBQcmV2ZW50cyBwb3RlbnRpYWwgaXNzdWVzLgoKTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIHRocm91Z2ggdGhlIGNvZGUgSSBjYW4gc2VlIHRoYXQgdGhpcyBpc24mIzM5O3QgaW50cm9kdWNpbmcgYW55IG5hc3RpZXMgbGlrZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgbGVha2luZyBpbmZvcm1hdGlvbiwgb3Igb3Zlcmx5IGNvbXBsaWNhdGVkIGFsbG9jYXRpb25zLiBUaGV5JiMzOTtyZSBqdXN0IHJlYWRpbmcgdGhlIHNvdXJjZSBhZGRyZXNzIGZyb20gdGhlIGF0dHJpYnV0ZSB1c2luZyBzdGFuZGFyZCBuZXRsaW5rIG1ldGhvZHM6IGBubGFfZ2V0X2luX2FkZHIoYXR0cilgIGFuZCBgbmxhX2dldF9pbjZfYWRkcihhdHRyKWAsIHdoaWNoIGlzIHBlcmZlY3RseSBmaW5lLiBgc3JjYCBpcyBpbml0aWFsaXplZCBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIElQdjYgY2hlY2sg4oCTIGBzcmMgPSBubGFfZ2V0X2luNl9hZGRyKGF0dHIpYCBpbiB0aGUgY2FzZSBvZiBJUHY2LCBhcyBJIHJlbWVtYmVyLCBidXQgaXQmIzM5O3Mgd29ydGggYSBzZWNvbmQgbG9vayBhdCB0aGUgcmVsZXZhbnQgcG9ydGlvbiB0byBtYWtlIHN1cmUuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBpdCBpcyBzdGFuZGFyZCBuZXRsaW5rIHBhcnNpbmcuIEhvd2V2ZXIsIEkgc2hvdWxkIHN0aWxsIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb2RlIGp1c3QgdG8gYmUgc2FmZS4gSXQgd291bGQgYmUgYSBzaWxseSBvdmVyc2lnaHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Z4bGFuX21kYl9pc192YWxpZF9zb3VyY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0zMjc9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHZ4bGFuX21kYmVfYXR0cnNfcG9sW01EQkVfQVRUUl9NQVggJiM0MzsgMV0gPSB7XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMzQzLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MzQ0OnN0YXRpYyBib29sIHZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgX19iZTE2IHByb3RvLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMzQ1LVx0XHRcdFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTQyMT1zdGF0aWMgaW50IHZ4bGFuX21kYl9jb25maWdfc3JjX2VudHJ5X2luaXQoc3RydWN0IHZ4bGFuX21kYl9jb25maWcgKmNmZyxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy00MzctXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzo0Mzg6XHRpZiAoIXZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UodGJbTURCRV9TUkNBVFRSX0FERFJFU1NdLCBwcm90byxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTQzOS1cdFx0XHRcdCAgICAgICBleHRhY2spKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTQ5OD1zdGF0aWMgaW50IHZ4bGFuX21kYl9jb25maWdfYXR0cnNfaW5pdChzdHJ1Y3QgdnhsYW5fbWRiX2NvbmZpZyAqY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTUxNi1cdGlmIChtZGJlX2F0dHJzW01EQkVfQVRUUl9TT1VSQ0VdIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6NTE3Olx0ICAgICF2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlKG1kYmVfYXR0cnNbTURCRV9BVFRSX1NPVVJDRV0sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy01MTgtXHRcdFx0XHQgICAgICAgZW50cnktXHUwMDNlYWRkci5wcm90bywgZXh0YWNrKSlcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0xNDgwPXN0YXRpYyBpbnQgdnhsYW5fbWRiX2dldF9wYXJzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE1MDMtXHRpZiAobWRiZV9hdHRyc1tNREJFX0FUVFJfU09VUkNFXSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjE1MDQ6XHQgICAgIXZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UobWRiZV9hdHRyc1tNREJFX0FUVFJfU09VUkNFXSxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE1MDUtXHRcdFx0XHQgICAgICAgZW50cnktXHUwMDNlYWRkci5wcm90bywgZXh0YWNrKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMzOAoJCQkJCQkJb3V0cHV0OiAxMzEKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOZXRsaW5rIEF0dHJpYnV0ZSBWYWxpZGF0aW9uIGFuZCBNZW1vcnkgQ29uY2VybnMqKgoKT2theSwgc28gSSYjMzk7dmUgcmV2aWV3ZWQgdGhpcyBwYXRjaCBhbmQgSSYjMzk7bSBzZWVpbmcgdGhhdCBpdCYjMzk7cyBpbnRyb2R1Y2luZyBzb21lIG5lY2Vzc2FyeSB2YWxpZGF0aW9uIGZvciB0aGUgbmV0bGluayBhdHRyaWJ1dGVzLiBUaGF0JiMzOTtzIGdvb2QsIGFsd2F5cyBhIGNydWNpYWwgc3RlcCBmb3IgbWFpbnRhaW5pbmcgc3lzdGVtIGludGVncml0eSBhbmQgcHJldmVudGluZyBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBGcm9tIHdoYXQgSSYjMzk7bSByZWFkaW5nLCBpdCBkb2VzbiYjMzk7dCBhcHBlYXIgdG8gYmUgY3JlYXRpbmcgYW55IG5ldyBhdmVudWVzIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMsIHdoaWNoIGlzIGV4Y2VsbGVudC4gSSYjMzk7bSBhbHdheXMgaHlwZXItdmlnaWxhbnQgYWJvdXQgdGhhdC4gVGhlcmVmb3JlLCBiYXNlZCBvbiBteSBhc3Nlc3NtZW50LCBJJiMzOTtsbCBnbyBhaGVhZCBhbmQgc2V0IGBOZWVkc0tNU0FOPWZhbHNlYC4gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgcGF0Y2ggZG9lc24mIzM5O3Qgd2FycmFudCBmdXJ0aGVyIGludmVzdGlnYXRpb24gZnJvbSBhIGtlcm5lbCBtZW1vcnkgc2FuaXRpemVyIHBlcnNwZWN0aXZlLCBnaXZlbiB0aGUgYWJzZW5jZSBvZiBhbnkgcmVhZGlseSBhcHBhcmVudCBtZW1vcnktcmVsYXRlZCBjb25jZXJucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBpbnB1dCB2YWxpZGF0aW9uIGZvciBuZXRsaW5rIGF0dHJpYnV0ZXMgaW4gdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZSB0byByZWplY3QgYWxsLXplcm9zIHNvdXJjZSBhZGRyZXNzZXMgKElOQUREUl9BTlkgZm9yIElQdjQgYW5kIGlwdjZfYWRkcl9hbnkgZm9yIElQdjYpLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgbW9kaWZ5IHN0cnVjdHVyZSBsYXlvdXRzLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZS4gVGhlIGNoYW5nZXMgYXJlIHB1cmVseSBsb2dpY2FsIGNoZWNrcyBvbiBhbHJlYWR5IGluaXRpYWxpemVkIGRhdGEgcGFyc2VkIGZyb20gbmV0bGluayBtZXNzYWdlcy4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBpbnB1dCB2YWxpZGF0aW9uIGZvciBuZXRsaW5rIGF0dHJpYnV0ZXMgaW4gdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZSB0byByZWplY3QgYWxsLXplcm9zIHNvdXJjZSBhZGRyZXNzZXMgKElOQUREUl9BTlkgZm9yIElQdjQgYW5kIGlwdjZfYWRkcl9hbnkgZm9yIElQdjYpLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgbW9kaWZ5IHN0cnVjdHVyZSBsYXlvdXRzLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZS4gVGhlIGNoYW5nZXMgYXJlIHB1cmVseSBsb2dpY2FsIGNoZWNrcyBvbiBhbHJlYWR5IGluaXRpYWxpemVkIGRhdGEgcGFyc2VkIGZyb20gbmV0bGluayBtZXNzYWdlcy4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNTozNzo0My43MTYxMjE3MzVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODA0NDkxMTk1NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVlhMQU5cIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2eGxhbl9tZGJfYWRkXCIsXG4gICAgXCJ2eGxhbl9tZGJfZGVsXCIsXG4gICAgXCJ2eGxhbl9tZGJfZ2V0XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gZm9yIG5ldGxpbmsgYXR0cmlidXRlcyBpbiB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlIHRvIHJlamVjdCBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3NlcyAoSU5BRERSX0FOWSBmb3IgSVB2NCBhbmQgaXB2Nl9hZGRyX2FueSBmb3IgSVB2NikuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBtb2RpZnkgc3RydWN0dXJlIGxheW91dHMsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IGxvZ2ljYWwgY2hlY2tzIG9uIGFscmVhZHkgaW5pdGlhbGl6ZWQgZGF0YSBwYXJzZWQgZnJvbSBuZXRsaW5rIG1lc3NhZ2VzLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIHRvIHByZXZlbnQgYWxsLXplcm9zIHNvdXJjZSBhZGRyZXNzZXMgaW4gVlhMQU4gTURCIChNdWx0aWNhc3QgRm9yd2FyZGluZyBEYXRhYmFzZSkgZW50cmllcy4gVGhpcyBsb2dpYyBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgUlRNX05FV01EQiwgUlRNX0RFTE1EQiwgYW5kIFJUTV9HRVRNREIgY29tbWFuZHMuIEZ1enppbmcgdGhlIE1EQiBuZXRsaW5rIGhhbmRsZXJzIHdpbGwgaGVscCBlbnN1cmUgdGhlIG5ldyB2YWxpZGF0aW9uIGxvZ2ljIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjM3OjQzLjcxNjEyNjY3NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc0MzYwMTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMWZjZTFjOThmMGFmMzAxMDA4OTgzOTRkYWFlYjYxYWIwNDM1MDMyNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAyNiAxNTozNzo0MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jXFxuaW5kZXggZDcxZTE5MjVlY2ZkYi4uNzk4NmM1YjVkYzY3NSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jXFxuQEAgLTM1NCw2ICszNTQsMTAgQEAgc3RhdGljIGJvb2wgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZShjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBfX2JlMTYgcHJvdG8sXFxuIFxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJJUHY0IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZFxcXCIpO1xcbiBcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcdFxcdH1cXG4rXFx0XFx0aWYgKG5sYV9nZXRfaW5fYWRkcihhdHRyKSA9PSBodG9ubChJTkFERFJfQU5ZKSkge1xcbitcXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwiSVB2NCBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3MgaXMgbm90IGFsbG93ZWRcXFwiKTtcXG4rXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRcXHR9XFxuIFxcdFxcdGJyZWFrO1xcbiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcXG4gXFx0Y2FzZSBodG9ucyhFVEhfUF9JUFY2KToge1xcbkBAIC0zNjgsNiArMzcyLDEwIEBAIHN0YXRpYyBib29sIHZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgX19iZTE2IHByb3RvLFxcbiBcXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwiSVB2NiBtdWx0aWNhc3Qgc291cmNlIGFkZHJlc3MgaXMgbm90IGFsbG93ZWRcXFwiKTtcXG4gXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXHRcXHR9XFxuK1xcdFxcdGlmIChpcHY2X2FkZHJfYW55KFxcdTAwMjZzcmMpKSB7XFxuK1xcdFxcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJJUHY2IGFsbC16ZXJvcyBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZFxcXCIpO1xcbitcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdH1cXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjM3OjQ0LjA5MTM0OTE5OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE2NTA0OTU4OTM1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiLFxuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZ4bGFuX21kYl9hZGRcIixcbiAgICBcInZ4bGFuX21kYl9kZWxcIixcbiAgICBcInZ4bGFuX21kYl9nZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gdG8gcHJldmVudCBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3NlcyBpbiBWWExBTiBNREIgKE11bHRpY2FzdCBGb3J3YXJkaW5nIERhdGFiYXNlKSBlbnRyaWVzLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayBSVE1fTkVXTURCLCBSVE1fREVMTURCLCBhbmQgUlRNX0dFVE1EQiBjb21tYW5kcy4gRnV6emluZyB0aGUgTURCIG5ldGxpbmsgaGFuZGxlcnMgd2lsbCBoZWxwIGVuc3VyZSB0aGUgbmV3IHZhbGlkYXRpb24gbG9naWMgd29ya3MgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMWZjZTFjOThmMGFmMzAxMDA4OTgzOTRkYWFlYjYxYWIwNDM1MDMyNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDE1OjM3OjQyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuY1xuaW5kZXggZDcxZTE5MjVlY2ZkYi4uNzk4NmM1YjVkYzY3NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jXG4rKysgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuY1xuQEAgLTM1NCw2ICszNTQsMTAgQEAgc3RhdGljIGJvb2wgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZShjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBfX2JlMTYgcHJvdG8sXG4gXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJJUHY0IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZFwiKTtcbiBcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRcdH1cbitcdFx0aWYgKG5sYV9nZXRfaW5fYWRkcihhdHRyKSA9PSBodG9ubChJTkFERFJfQU5ZKSkge1xuK1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiSVB2NCBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3MgaXMgbm90IGFsbG93ZWRcIik7XG4rXHRcdFx0cmV0dXJuIGZhbHNlO1xuK1x0XHR9XG4gXHRcdGJyZWFrO1xuICNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuIFx0Y2FzZSBodG9ucyhFVEhfUF9JUFY2KToge1xuQEAgLTM2OCw2ICszNzIsMTAgQEAgc3RhdGljIGJvb2wgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZShjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBfX2JlMTYgcHJvdG8sXG4gXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJJUHY2IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZFwiKTtcbiBcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRcdH1cbitcdFx0aWYgKGlwdjZfYWRkcl9hbnkoXHUwMDI2c3JjKSkge1xuK1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiSVB2NiBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3MgaXMgbm90IGFsbG93ZWRcIik7XG4rXHRcdFx0cmV0dXJuIGZhbHNlO1xuK1x0XHR9XG4gXHRcdGJyZWFrO1xuIFx0fVxuICNlbmRpZlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6Mzc6NDQuMDkxMzUwODE5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY1NTE3MDA4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZYTEFOIE1EQiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuY2AuIEl0IHNlZW1zIHRoZXkndmUgYWRkZWQgc29tZSBjaGVja3MgZm9yIGBJTkFERFJfQU5ZYCBhbmQgYGlwdjZfYWRkcl9hbnlgIHdpdGhpbiB0aGUgYHZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2VgIGZ1bmN0aW9uLiBUaGF0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseS4gSXQncyB0d2Vha2luZyB0aGUgTURCLCB0aGUgTXVsdGljYXN0IEZvcndhcmRpbmcgRGF0YWJhc2UsIHdoaWNoIGlzIGNydWNpYWwgZm9yIFZYTEFOJ3MgbXVsdGljYXN0IGhhbmRsaW5nLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGF0J3MgdGhlICpjb250ZXh0KiBoZXJlP1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYCBpcyBiZWluZyBjYWxsZWQgYW5kIHVuZGVyIHdoYXQgY29uZGl0aW9ucy4gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBtdWx0aWNhc3QsIG9yIHBlcmhhcHMgYW55IHNwZWNpZmljIFZYTEFOIHNldHVwLCB0aGF0IHRoaXMgY2hhbmdlIGlzIGFkZHJlc3Npbmc/IEkgd2FudCB0byBzZWUgaWYgdGhpcyBpcyB0YXJnZXRlZCBhdCBhIHBhcnRpY3VsYXIgdXNlIGNhc2Ugb3IgaWYgaXQncyBhIG1vcmUgZ2VuZXJhbCBpbXByb3ZlbWVudC4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGNoYWluIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgYWRkZWQgY2hlY2tzLiBDb250ZXh0IGlzIGtleSB0byBwcm9wZXJseSBhc3Nlc3MgaXRzIGltcGFjdCBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5NCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjM3OjUwLjc0NjUyMzkzMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzg4NjEyNzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9MzI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB2eGxhbl9tZGJlX2F0dHJzX3BvbFtNREJFX0FUVFJfTUFYICsgMV0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0zNDMtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MzQ0OnN0YXRpYyBib29sIHZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgX19iZTE2IHByb3RvLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTM0NS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz00MjE9c3RhdGljIGludCB2eGxhbl9tZGJfY29uZmlnX3NyY19lbnRyeV9pbml0KHN0cnVjdCB2eGxhbl9tZGJfY29uZmlnICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy00MzctXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6NDM4OlxcdGlmICghdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZSh0YltNREJFX1NSQ0FUVFJfQUREUkVTU10sIHByb3RvLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTQzOS1cXHRcXHRcXHRcXHQgICAgICAgZXh0YWNrKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTQ5OD1zdGF0aWMgaW50IHZ4bGFuX21kYl9jb25maWdfYXR0cnNfaW5pdChzdHJ1Y3QgdnhsYW5fbWRiX2NvbmZpZyAqY2ZnLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtNTE2LVxcdGlmIChtZGJlX2F0dHJzW01EQkVfQVRUUl9TT1VSQ0VdIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6NTE3OlxcdCAgICAhdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZShtZGJlX2F0dHJzW01EQkVfQVRUUl9TT1VSQ0VdLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTUxOC1cXHRcXHRcXHRcXHQgICAgICAgZW50cnktXFx1MDAzZWFkZHIucHJvdG8sIGV4dGFjaykpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0xNDgwPXN0YXRpYyBpbnQgdnhsYW5fbWRiX2dldF9wYXJzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTUwMy1cXHRpZiAobWRiZV9hdHRyc1tNREJFX0FUVFJfU09VUkNFXSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjE1MDQ6XFx0ICAgICF2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlKG1kYmVfYXR0cnNbTURCRV9BVFRSX1NPVVJDRV0sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTUwNS1cXHRcXHRcXHRcXHQgICAgICAgZW50cnktXFx1MDAzZWFkZHIucHJvdG8sIGV4dGFjaykpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjM3OjUyLjUzNTE0MzY2OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0OTEyNjU2MDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBWWExBTiBNREIgSW5pdGlhbGl6YXRpb24gYW5kIFBhcnNpbmcqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGEgZmV3IHBsYWNlczogYHZ4bGFuX21kYl9jb25maWdfc3JjX2VudHJ5X2luaXRgLCBgdnhsYW5fbWRiX2NvbmZpZ19hdHRyc19pbml0YCwgYW5kIGB2eGxhbl9tZGJfZ2V0X3BhcnNlYC4gQmFzZWQgb24gdGhlIG5hbWluZywgbXkgaW1tZWRpYXRlIGFzc3VtcHRpb24gaXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGludm9sdmVkIGluIGhhbmRsaW5nIG5ldGxpbmsgbWVzc2FnZXMgcmVsYXRlZCB0byBWWExBTiBNdWx0aWNhc3QgRGF0YSBCYXNlIChNREIpIG9wZXJhdGlvbnMuIFRoYXQgbWFrZXMgc2Vuc2UsIGdpdmVuIHRoZSBjb250ZXh0LiBUbyBjb25maXJtIHRoaXMsIEkgc2hvdWxkIHJlYWxseSBkaWcgaW50byBob3cgYHZ4bGFuX21kYl9jb25maWdfYXR0cnNfaW5pdGAgYW5kIGB2eGxhbl9tZGJfZ2V0X3BhcnNlYCBhcmUgdXNlZCwgYXMgdGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBwYXJzaW5nIGludm9sdmVkIHdpdGggc2V0dGluZyB1cCBvciBxdWVyeWluZyB0aGUgTURCLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTgwLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6Mzg6MTcuNDQ3ODAxNjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA5MTc0MzkyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2eGxhbl9tZGJfY29uZmlnX2F0dHJzX2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9NDkwPXN0YXRpYyB2b2lkIHZ4bGFuX21kYl9jb25maWdfc3JjX2xpc3RfZmluaShzdHJ1Y3QgdnhsYW5fbWRiX2NvbmZpZyAqY2ZnKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtNDk3LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjQ5ODpzdGF0aWMgaW50IHZ4bGFuX21kYl9jb25maWdfYXR0cnNfaW5pdChzdHJ1Y3QgdnhsYW5fbWRiX2NvbmZpZyAqY2ZnLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTQ5OS1cXHRcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGJyX21kYl9lbnRyeSAqZW50cnksXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz02MDk9c3RhdGljIGludCB2eGxhbl9tZGJfY29uZmlnX2luaXQoc3RydWN0IHZ4bGFuX21kYl9jb25maWcgKmNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTY2MS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzo2NjI6XFx0cmV0dXJuIHZ4bGFuX21kYl9jb25maWdfYXR0cnNfaW5pdChjZmcsIGVudHJ5LCB0YltNREJBX1NFVF9FTlRSWV9BVFRSU10sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtNjYzLVxcdFxcdFxcdFxcdFxcdCAgIGV4dGFjayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjM4OjE5LjUzOTU1MDQyM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNjg3NTMzMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdW5kZXJzdGFuZGluZywgYXMgaWYgaXQgd2VyZSBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqVW5kZXJzdGFuZGluZyB0aGUgVlhMQU4gTXVsdGljYXN0IERhdGFiYXNlIENvbmZpZ3VyYXRpb24gSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGB2eGxhbl9tZGJfY29uZmlnX2luaXRgIGlzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgVlhMQU4gbXVsdGljYXN0IGRhdGFiYXNlIG1hbmFnZW1lbnQuIFdoYXQncyBpbXBvcnRhbnQgdG8gZ3Jhc3AgaW1tZWRpYXRlbHkgaXMgd2hlcmUgaXQncyBjYWxsZWQgZnJvbS4gSXQgbG9va3MgbGlrZSBpdCdzIGludm9rZWQgYnkgYm90aCBgdnhsYW5fbWRiX2FkZGAgYW5kIGB2eGxhbl9tZGJfZGVsYC4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGF0IGB2eGxhbl9tZGJfY29uZmlnX2luaXRgIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIG9yIHJlc2V0dGluZyB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIHRoZSBtdWx0aWNhc3QgZGF0YWJhc2Ugd2hlbmV2ZXIgYSBuZXcgZW50cnkgaXMgYWRkZWQgb3IgYW4gZXhpc3Rpbmcgb25lIGlzIHJlbW92ZWQuIEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGFjdHVhbCBmdW5jdGlvbiB0byB1bmRlcnN0YW5kIHByZWNpc2VseSB3aGF0IHRoaXMgaW5pdGlhbGl6YXRpb24gZW50YWlscyDigJMgdGhpbmdzIGxpa2UgbWVtb3J5IGFsbG9jYXRpb24sIGRlZmF1bHQgdmFsdWVzLCBvciBwZXJoYXBzIGV2ZW4gcmVzb3VyY2UgbG9ja2luZy4gS25vd2luZyB0aGlzIHVwZnJvbnQgZ2l2ZXMgbWUgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgdHJvdWJsZXNob290aW5nIG9yIG1vZGlmaWNhdGlvbiBkb3duIHRoZSBsaW5lIHdoZW4gZGVhbGluZyB3aXRoIFZYTEFOIG11bHRpY2FzdCBvcGVyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzQwLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6Mzg6MjIuNzA4MzA1NjkxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NTUwMjc4NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5fbWRiX2NvbmZpZ19pbml0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTQ5OD1zdGF0aWMgaW50IHZ4bGFuX21kYl9jb25maWdfYXR0cnNfaW5pdChzdHJ1Y3QgdnhsYW5fbWRiX2NvbmZpZyAqY2ZnLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtNjA4LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjYwOTpzdGF0aWMgaW50IHZ4bGFuX21kYl9jb25maWdfaW5pdChzdHJ1Y3QgdnhsYW5fbWRiX2NvbmZpZyAqY2ZnLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTYxMC1cXHRcXHRcXHRcXHQgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTEyOTU9aW50IHZ4bGFuX21kYl9hZGQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSwgdTE2IG5sbXNnX2ZsYWdzLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTMwMi1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxMzAzOlxcdGVyciA9IHZ4bGFuX21kYl9jb25maWdfaW5pdChcXHUwMDI2Y2ZnLCBkZXYsIHRiLCBubG1zZ19mbGFncywgZXh0YWNrKTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xMzA0LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0xMzEzPWludCB2eGxhbl9tZGJfZGVsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xMzIwLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjEzMjE6XFx0ZXJyID0gdnhsYW5fbWRiX2NvbmZpZ19pbml0KFxcdTAwMjZjZmcsIGRldiwgdGIsIDAsIGV4dGFjayk7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTMyMi1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNTozODoyNC4zNjMzNDA0NzJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzE1NTY1NTIwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgdGFpbG9yZWQgZm9yIG15IGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipFeGFtaW5pbmcgVlhMQU4gTXVsdGljYXN0IERhdGFiYXNlIE9wZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgVlhMQU4gbXVsdGljYXN0IGRhdGEgaXMgaGFuZGxlZCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBmdW5jdGlvbnMgYHZ4bGFuX21kYl9hZGRgIGFuZCBgdnhsYW5fbWRiX2RlbGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlRoZXNlIGFyZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3MgZm9yIG1hbmFnaW5nIHRoZSBtdWx0aWNhc3QgZGF0YWJhc2Ugd2l0aGluIHRoZSBWWExBTiBtb2R1bGUuXCIgR2l2ZW4gdGhlaXIgbmFtZXMsIEknbSBhc3N1bWluZyBgYWRkYCBpcyBmb3IgY3JlYXRpbmcgbmV3IGVudHJpZXMgZm9yIG11bHRpY2FzdCBncm91cHMsIGFuZCBgZGVsYCBpcyB0byByZW1vdmUgdGhlbSwgcHJvYmFibHkgZm9yIGNsZWFudXAgb3Igd2hlbiBhIFZOSSBpcyBubyBsb25nZXIgYWN0aXZlIG9uIGEgZ2l2ZW4gbm9kZS5cblxuVGhlIGZhY3QgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGV4cGxpY2l0bHkgKmV4cG9ydGVkKiBvciAqdXNlZCogd2l0aGluIGB2eGxhbl9jb3JlLmNgIChvciBhIHNpbWlsYXIsIGNvcmUgVlhMQU4gZmlsZSkgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhhdCB0aGlzIGlzIGEgY3JpdGljYWwgc2VjdGlvbiBvZiB0aGUgY29kZS4gVGhpcyBmdW5jdGlvbiBsaWtlbHkgc2l0cyBhdCB0aGUgaGVhcnQgb2YgaG93IG11bHRpY2FzdCB0cmFmZmljIGlzIHJlcGxpY2F0ZWQgYW5kIGZvcndhcmRlZCB3aXRoaW4gdGhlIFZYTEFOIG5ldHdvcmssIGFuZCBhbnkgaXNzdWVzIG9yIGluZWZmaWNpZW5jaWVzIGhlcmUgd291bGQgaGF2ZSBhIHNpZ25pZmljYW50IGltcGFjdCBvbiBvdmVyYWxsIHBlcmZvcm1hbmNlIGFuZCBzY2FsYWJpbGl0eS4gVGhpcyBjb3JlIGZpbGUgb3Igc2VjdGlvbiBpcyBsaWtlbHkgd2hlcmUgdGhlIG11bHRpY2FzdCBncm91cCBtZW1iZXJzaGlwLCB0aGUgbWFwcGluZyBmcm9tIFZOSXMgdG8gcGh5c2ljYWwgbmV0d29yayBkZXN0aW5hdGlvbiBncm91cHMsIGFuZCB0aGUgYXNzb2NpYXRlZCBkYXRhIHN0cnVjdHVyZXMgYXJlIG1hbmFnZWQuIFRpbWUgdG8gZ28gZGlnIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDE2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6Mzg6NDEuNTE4OTk4MTg3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzYzMzE2NTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ4bGFuX21kYl9hZGRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMyOTE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB2eGxhbl9uZXRkZXZfZXRoZXJfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMzMDUtXFx0Lm5kb19mZGJfZ2V0XFx0XFx0PSB2eGxhbl9mZGJfZ2V0LFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMzA2OlxcdC5uZG9fbWRiX2FkZFxcdFxcdD0gdnhsYW5fbWRiX2FkZCxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzMwNy1cXHQubmRvX21kYl9kZWxcXHRcXHQ9IHZ4bGFuX21kYl9kZWwsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz04Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHJoYXNodGFibGVfcGFyYW1zIHZ4bGFuX21kYl9yaHRfcGFyYW1zID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtOTItXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6OTM6c3RhdGljIGludCBfX3Z4bGFuX21kYl9hZGQoY29uc3Qgc3RydWN0IHZ4bGFuX21kYl9jb25maWcgKmNmZyxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy05NC1cXHRcXHRcXHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9Nzk3PXZ4bGFuX21kYl9yZW1vdGVfc3JjX2Z3ZF9hZGQoY29uc3Qgc3RydWN0IHZ4bGFuX21kYl9jb25maWcgKmNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTgxOC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzo4MTk6XFx0cmV0dXJuIF9fdnhsYW5fbWRiX2FkZChcXHUwMDI2c2dfY2ZnLCBleHRhY2spO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTgyMC19XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0xMjI5PXN0YXRpYyB2b2lkIHZ4bGFuX21kYl9lbnRyeV9wdXQoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xMjQzLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjEyNDQ6c3RhdGljIGludCBfX3Z4bGFuX21kYl9hZGQoY29uc3Qgc3RydWN0IHZ4bGFuX21kYl9jb25maWcgKmNmZyxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xMjQ1LVxcdFxcdFxcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTEyNjg9c3RhdGljIGludCBfX3Z4bGFuX21kYl9kZWwoY29uc3Qgc3RydWN0IHZ4bGFuX21kYl9jb25maWcgKmNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTEyOTQtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTI5NTppbnQgdnhsYW5fbWRiX2FkZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLCB1MTYgbmxtc2dfZmxhZ3MsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTI5Ni1cXHRcXHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTEzMDYtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTMwNzpcXHRlcnIgPSBfX3Z4bGFuX21kYl9hZGQoXFx1MDAyNmNmZywgZXh0YWNrKTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xMzA4LVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oPTIzMz1pbnQgdnhsYW5fbWRiX2R1bXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9wcml2YXRlLmgtMjM0LVxcdFxcdCAgIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oOjIzNTppbnQgdnhsYW5fbWRiX2FkZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLCB1MTYgbmxtc2dfZmxhZ3MsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oLTIzNi1cXHRcXHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjM4OjQzLjI4MjMyNDkxNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODE2OTYwMDcxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWWExBTiBNREIgRW50cnkgVmFsaWRhdGlvbioqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBgdnhsYW5fbWRiX2FkZGAgaXMgYmVpbmcgdXNlZCBhcyB0aGUgYC5uZG9fbWRiX2FkZGAgZnVuY3Rpb24gd2l0aGluIHRoZSBgdnhsYW5fbmV0ZGV2X2V0aGVyX29wc2Agc3RydWN0dXJlLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIG5ldGxpbmssIHNwZWNpZmljYWxseSB3aXRoIHRoZSBgUlRNX05FV01EQmAgbWVzc2FnZSB0eXBlLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5UaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIHRoZSBhZGRpdGlvbiBvZiBhIGNoZWNrIGZvciBgSU5BRERSX0FOWWAgYW5kIGBpcHY2X2FkZHJfYW55YCB3aXRoaW4gdGhlIGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYCBmdW5jdGlvbi4gRnVuY3Rpb25hbGx5LCB0aGlzIHByZXZlbnRzIHRoZSBhZGRpdGlvbiBvZiBNdWx0aWNhc3QgRGF0YWJhc2UgKE1EQikgZW50cmllcyB0aGF0IGhhdmUgYW4gYWxsLXplcm9zIHNvdXJjZSBhZGRyZXNzLiBUaGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSB2YWxpZCBhZGRpdGlvbiwgYW5kIEkgc2VlIHRoZSByZWFzb25pbmcuXG5cbkdpdmVuIHRoaXMgbmV3IGNvZGUgcGF0aCwgYW5kIHRoZSBmYWN0IHRoYXQgaXQncyBuZXRsaW5rIGZhY2luZywgZnV6emluZyBpcyBhYnNvbHV0ZWx5IHdhcnJhbnRlZCBoZXJlLiBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBuZXRsaW5rIHBhcnNpbmcsIHRoZSBNREIgaGFuZGxpbmcgbG9naWMsIGFuZCBub3cgKnRoaXMqIGNoZWNrIGFyZSBhbGwgcm9idXN0IGFuZCBkb24ndCBpbnRyb2R1Y2UgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMuIEkgbmVlZCB0byBnZXQgdGhpcyBpbnRvIG15IGZ1enppbmcgc3RyYXRlZ3kgYW5kIHRhcmdldCB0aGlzIHNwZWNpZmljIGNvZGUgcGF0aCB0byBleGVyY2lzZSBpdC5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgYXJlIHJlcXVpcmVkIHRvIGdldCBWWExBTiB3b3JraW5nIHByb3Blcmx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjU3LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjM5OjIxLjQ1MTkyOTAzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTg5NjkzODM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWWExBTlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTIxNj1jb25maWcgSVBWVEFQXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIyOS1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzMDpjb25maWcgVlhMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMS1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBlWHRlbnNpYmxlIExvY2FsIEFyZWEgTmV0d29yayAoVlhMQU4pXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNTozOToyMy40NDE2Mjg1MDdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU5NTA2MDQ2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqVlhMQU4gRGVwZW5kZW5jaWVzOiBBIFF1aWNrIE1lbnRhbCBDaGVjayoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBWWExBTiByaWdodCBub3cuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIG1lbnRhbGx5IG1hcCBvdXQgaXRzIGRlcGVuZGVuY2llcy4gV2hhdCBhcmUgdGhlIGZvdW5kYXRpb25hbCBlbGVtZW50cyB0aGlzIHRoaW5nIGlzIGJ1aWx0IG9uPyBJIG5lZWQgdG8gcXVpY2tseSBydW4gdGhyb3VnaCB0aGUgdW5kZXJseWluZyB0ZWNobm9sb2dpZXMgYW5kIG1ha2Ugc3VyZSBJIGhhdmUgYSBzb2xpZCBncmFzcCBvbiBldmVyeXRoaW5nIHRoYXQgVlhMQU4gbGV2ZXJhZ2VzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtaW5kIG9uIHRoZSBjcml0aWNhbCBjb21wb25lbnRzIGFuZCBob3cgdGhleSBpbnRlcmFjdC4gVGhpcyBpcyBwcmV0dHkgZnVuZGFtZW50YWwgc3R1ZmYsIGJ1dCBpdCdzIGFsd2F5cyBnb29kIHRvIGhhdmUgdGhhdCBiYXNlLWxldmVsIHVuZGVyc3RhbmRpbmcgcHJlc2VudC4gR290dGEgZW5zdXJlIEknbSByZW1lbWJlcmluZyB0aGUga2V5IHBpZWNlcyBhbmQgdGhlaXIgcm9sZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxOTIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNTozOToyNy4wMzY2OTE5MzhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMzA6XFx0Y29uZmlnIFZYTEFOXFxuIDIzMTpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBlWHRlbnNpYmxlIExvY2FsIEFyZWEgTmV0d29yayAoVlhMQU4pXFxcIlxcbiAyMzI6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDIzMzpcXHRcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4gMjM0OlxcdFxcdHNlbGVjdCBHUk9fQ0VMTFNcXG4gMjM1OlxcdFxcdGhlbHBcXG4gMjM2OlxcdFxcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSB2eGxhbiB2aXJ0dWFsIGludGVyZmFjZXMgdGhhdCBwcm92aWRlXFxuIDIzNzpcXHRcXHQgIExheWVyIDIgTmV0d29ya3Mgb3ZlciBMYXllciAzIE5ldHdvcmtzLiBWWExBTiBpcyBvZnRlbiB1c2VkXFxuIDIzODpcXHRcXHQgIHRvIHR1bm5lbCB2aXJ0dWFsIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxcbiAyMzk6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWU6XFxuIDI0MDpcXHRcXHQgICAgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtbWFoYWxpbmdhbS1kdXR0LWRjb3BzLXZ4bGFuLTAyXFxuIDI0MTpcXHRcXG4gMjQyOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAyNDM6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCB2eGxhbi5cXG4gMjQ0OlxcdFxcbiAyNDU6XFx0Y29uZmlnIEdFTkVWRVxcbiAyNDY6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgTmV0d29yayBWaXJ0dWFsaXphdGlvbiBFbmNhcHN1bGF0aW9uXFxcIlxcbiAyNDc6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDI0ODpcXHRcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4gMjQ5OlxcdFxcdHNlbGVjdCBHUk9fQ0VMTFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6Mzk6MjcuMDM2NzY4OTg4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NDgxMzM4Njc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFZYTEFOIENvbmZpZ3VyYXRpb24gSm91cm5leSoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJdCdzIGNsZWFyIHRoYXQgdG8gZ2V0IGBWWExBTmAgaHVtbWluZywgSSdtIGdvaW5nIHRvIG5lZWQgdG8gaGF2ZSBgSU5FVGAgdXAgYW5kIHJ1bm5pbmcuIEEgbm8tYnJhaW5lciwgcmVhbGx5LiBOb3csIHRoZSBuZXh0IHN0ZXAgaXMgdG8gYWN0dWFsbHkgKmVuYWJsZSogYFZYTEFOYC4gU2ltcGxlIGVub3VnaC5cblxuQnV0IGJlZm9yZSBJIGdldCB0b28gZmFyLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkndmUgZG90dGVkIGFsbCBteSBpJ3MgYW5kIGNyb3NzZWQgYWxsIG15IHQncy4gVGhhdCBtZWFucyByZXZpc2l0aW5nIGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYC4gR290dGEgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgaGlkZGVuIGNvbmZpZyBsYW5kbWluZXMgbHVya2luZyBpbiB0aGVyZS4gQWgsIGFuZCBoZXJlIHdlIGdvLiBUaGUgY29kZSdzIGdvdCBhIGNvbmRpdGlvbmFsIGNoZWNrIGAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilgLiBTbywgdG8gYXZvaWQgc3VycHJpc2VzIGRvd24gdGhlIGxpbmUsIEknbGwgbmVlZCB0byBlbmFibGUgYElQVjZgIGFzIHdlbGwuIFRoYXTigJlzIHByb2JhYmx5IHRoZSByaWdodCB0aGluZyB0byBkbyBhbnl3YXksIGZyb20gYSBmdXR1cmUtcHJvb2ZpbmcgcGVyc3BlY3RpdmUuXG5cbk5vdywgbGV0J3Mgc2hhcnBlbiBvdXIgZm9jdXMuIFRoZSBrZXkgZnVuY3Rpb25zIGhlcmUgYXJlIGB2eGxhbl9tZGJfYWRkYCwgYHZ4bGFuX21kYl9kZWxgLCBhbmQsIHBhcnRpY3VsYXJseSwgYHZ4bGFuX21kYl9nZXRfcGFyc2VgIOKAkyB0aGF0IG9uZSBzbWVsbHMgbGlrZSBhIGNyaXRpY2FsIGVudHJ5IHBvaW50LiBJdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGJlaW5nIHVzZWQgdGhyb3VnaG91dCB0aGUgc3lzdGVtLiBJJ20gZ29pbmcgdG8gZGl2ZSBpbnRvIHRoZSBjYWxsIGdyYXBoIGZvciBgdnhsYW5fbWRiX2dldF9wYXJzZWAgbmV4dC4gR290dGEgdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Njg0LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6NDA6MDIuNTE4MTEwNzc1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODI1MDI2NDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ4bGFuX21kYl9nZXRfcGFyc2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9MTQ3Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdnhsYW5fbWRiZV9hdHRyc19nZXRfcG9sW01EQkVfQVRUUl9NQVggKyAxXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE0NzktXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTQ4MDpzdGF0aWMgaW50IHZ4bGFuX21kYl9nZXRfcGFyc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNDgxLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgdnhsYW5fbWRiX2VudHJ5X2tleSAqZ3JvdXAsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0xNTg1PWludCB2eGxhbl9tZGJfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sIHUzMiBwb3J0aWQsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTk1LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjE1OTY6XFx0ZXJyID0gdnhsYW5fbWRiX2dldF9wYXJzZShkZXYsIHRiLCBcXHUwMDI2Z3JvdXAsIGV4dGFjayk7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTU5Ny1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNTo0MDowNC4zNDMxNDE4MTlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU3MDc0NjczNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB1bmRlcnN0YW5kaW5nOlxuXG4qKlZYTEFOIE1EQiBHZXQgRnVuY3Rpb24gQ2FsbCoqXG5cbkFscmlnaHQsIHNvIGxldCdzIGNsYXJpZnkgdGhpcy4gSSBzZWUgdGhhdCBgdnhsYW5fbWRiX2dldGAgaXMgYmVpbmcgdXRpbGl6ZWQgYXMgdGhlIGltcGxlbWVudGF0aW9uIGZvciBgLm5kb19tZGJfZ2V0YCB3aXRoaW4gYHZ4bGFuX25ldGRldl9ldGhlcl9vcHNgLiBFZmZlY3RpdmVseSwgdGhpcyBtZWFucyB0aGF0IHRoZSBWWExBTiBtb2R1bGUgaXMgbGV2ZXJhZ2luZyBpdHMgb3duIHNwZWNpZmljIGZ1bmN0aW9uLCBgdnhsYW5fbWRiX2dldGAsIHRvIGhhbmRsZSB0aGUgTURCIChNdWx0aWNhc3QgRGF0YWJhc2UpIHJldHJpZXZhbCBvcGVyYXRpb25zIHJlcXVpcmVkIGJ5IHRoZSBuZXR3b3JrIGRldmljZSBvcGVyYXRpb25zIHN0cnVjdHVyZSBmb3IgRXRoZXJuZXQgZGV2aWNlcyAoYG5kb19gKS4gSW4gZXNzZW5jZSwgaXQncyBwbHVnZ2luZyBpdHMgY3VzdG9tIE1EQiByZXRyaWV2YWwgbG9naWMgaW50byB0aGUgYnJvYWRlciBuZXR3b3JrIGRldmljZSBmcmFtZXdvcmsuIFRoaXMgaXMgdGhlIG1lY2hhbmlzbSBieSB3aGljaCB0aGUgVlhMQU4gY29kZSBpbnRlZ3JhdGVzIGludG8gdGhlIGdlbmVyaWMgbmV0d29ya2luZyBzdGFjaywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIGhvdyBtdWx0aWNhc3QgaW5mb3JtYXRpb24gaXMgbG9va2VkIHVwIGFuZCBtYW5hZ2VkIGZvciBWWExBTiB0dW5uZWxzLiBHb3QgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NDEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNTo0MDowOS45MTM4OTIwMjZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NzAyMjQ5MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5fbWRiX2dldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MzI5MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHZ4bGFuX25ldGRldl9ldGhlcl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzMwOS1cXHQubmRvX21kYl9kdW1wXFx0XFx0PSB2eGxhbl9tZGJfZHVtcCxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzMxMDpcXHQubmRvX21kYl9nZXRcXHRcXHQ9IHZ4bGFuX21kYl9nZXQsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMzMTEtXFx0Lm5kb19maWxsX21ldGFkYXRhX2RzdFxcdD0gdnhsYW5fZmlsbF9tZXRhZGF0YV9kc3QsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0xNDczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB2eGxhbl9tZGJlX2F0dHJzX2dldF9wb2xbTURCRV9BVFRSX01BWCArIDFdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTQ3OS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxNDgwOnN0YXRpYyBpbnQgdnhsYW5fbWRiX2dldF9wYXJzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE0ODEtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCB2eGxhbl9tZGJfZW50cnlfa2V5ICpncm91cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTE1MTc9c3RhdGljIHN0cnVjdCBza19idWZmICpcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxNTE4OnZ4bGFuX21kYl9nZXRfcmVwbHlfYWxsb2MoY29uc3Qgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTUxOS1cXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCB2eGxhbl9tZGJfZW50cnkgKm1kYl9lbnRyeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTE1Mzc9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjE1Mzg6dnhsYW5fbWRiX2dldF9yZXBseV9maWxsKGNvbnN0IHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE1MzktXFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTg0LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjE1ODU6aW50IHZ4bGFuX21kYl9nZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSwgdTMyIHBvcnRpZCxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTg2LVxcdFxcdCAgdTMyIHNlcSwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTU5NS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxNTk2OlxcdGVyciA9IHZ4bGFuX21kYl9nZXRfcGFyc2UoZGV2LCB0YiwgXFx1MDAyNmdyb3VwLCBleHRhY2spO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE1OTctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE2MDUtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTYwNjpcXHRza2IgPSB2eGxhbl9tZGJfZ2V0X3JlcGx5X2FsbG9jKHZ4bGFuLCBtZGJfZW50cnkpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE2MDctXFx0aWYgKCFza2IpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNjA5LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjE2MTA6XFx0ZXJyID0gdnhsYW5fbWRiX2dldF9yZXBseV9maWxsKHZ4bGFuLCBza2IsIG1kYl9lbnRyeSwgcG9ydGlkLCBzZXEpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE2MTEtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oPTIzOT1pbnQgdnhsYW5fbWRiX2RlbF9idWxrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oLTI0MC1cXHRcXHQgICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9wcml2YXRlLmg6MjQxOmludCB2eGxhbl9tZGJfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sIHUzMiBwb3J0aWQsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oLTI0Mi1cXHRcXHQgIHUzMiBzZXEsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjQwOjExLjY4NDEyNDUwM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzM4MzAyMjMzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVlhMQU4gTURCIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBkcmlsbGVkIGRvd24gaW50byB0aGlzIHBhdGNoLiBUaGUga2V5IGVudHJ5IHBvaW50cyBhcHBlYXIgdG8gYmUgYHZ4bGFuX21kYl9hZGRgLCBgdnhsYW5fbWRiX2RlbGAsIGFuZCBgdnhsYW5fbWRiX2dldGAg4oCTIHRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgd2lsbCBoYW5kbGUgdGhlIGNvcmUgbG9naWMgcmVsYXRlZCB0byB0aGUgbXVsdGljYXN0IGRhdGFiYXNlLiBNeSBpbml0aWFsIGludmVzdGlnYXRpb24gc2hvd3MgdGhleSdyZSB0aGUgdGFyZ2V0cywgYW5kIHRoZXkgYXJlIHJlYWNoYWJsZS4gVGhpcyBpcyB3aGF0IEkgZXhwZWN0LlxuXG5UaGUgcGF0Y2ggaXRzZWxmIG1vZGlmaWVzIGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYC4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgYHZ4bGFuX21kYl9jb25maWdfc3JjX2VudHJ5X2luaXRgLCBgdnhsYW5fbWRiX2NvbmZpZ19hdHRyc19pbml0YCwgYW5kIGB2eGxhbl9tZGJfZ2V0X3BhcnNlYCwgd2hpY2ggaW4gdHVybiBhcmUgY2FsbGVkIGJ5IHRoZSBjb3JlIGB2eGxhbl9tZGJfYWRkYCwgYHZ4bGFuX21kYl9kZWxgLCBhbmQgYHZ4bGFuX21kYl9nZXRgIGZ1bmN0aW9ucy4gU28sIGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYCBpcyBkZWZpbml0ZWx5IGEgZm9jYWwgcG9pbnQuXG5cbkkgY29uZmlybWVkIHRoYXQgYHZ4bGFuX21kYl9hZGRgIChhbmQgYnkgZXh0ZW5zaW9uLCB0aGUgb3RoZXJzKSBpc24ndCBzdGF0aWM7IGl0J3MgZXhwb3J0ZWQgYW5kIHVzZWQgYXMgYC5uZG9fbWRiX2FkZGAgaW4gYHZ4bGFuX2NvcmUuY2AsIGFjY2Vzc2VkIHRocm91Z2ggdGhlIG5ldGRldiBvcHMuIEEgbmV0bGluayBpbnRlcmZhY2UgcHJvdmlkZXMgdGhlIHVzZXJzcGFjZSBjb25uZWN0aW9uLiBUaGF0J3MgZ29vZDsgaXQgY29uZmlybXMgdGhhdCBpdCdzIGEgcmVhbCBlbnRyeSBwb2ludCwgYW5kIG15IGFuYWx5c2lzIGlzIHByb2dyZXNzaW5nIGNvcnJlY3RseS5cblxuSSBjaGVja2VkIGZvciByZWxldmFudCBjb25maWd1cmF0aW9ucy4gYFZYTEFOYCBpcywgb2J2aW91c2x5LCB0aGUgcHJpbWFyeSBvbmUuIElQdjYgc3VwcG9ydCAoYElQVjZgKSBpcyBhbHNvIG5lY2Vzc2FyeSwgYW5kIGBJTkVUYCBpcyByZXF1aXJlZCBieSBgVlhMQU5gLiBJJ20gZ29pbmcgdG8gc2V0IHVwIG15IGZ1enppbmcgZW52aXJvbm1lbnQgd2l0aCB0aGVzZSBjb25maWd1cmF0aW9ucy5cblxuTm93LCBhYm91dCBgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZWAuICBMb29raW5nIGF0IHRoZSBjb2RlLCBpdCdzIHByZXR0eSBjbGVhcjogaXQncyBhZGRpbmcgdmFsaWRhdGlvbiBmb3IgTURCIHNvdXJjZSBhZGRyZXNzZXMsIHNwZWNpZmljYWxseSBwcmV2ZW50aW5nIGFsbC16ZXJvcyBhZGRyZXNzZXMgKGJvdGggSVB2NCBhbmQgSVB2NikuICBUaGUgY29kZSBzbmlwcGV0IGlzIGNsZWFuIGFuZCByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGJlaGF2aW9yLiBUaGUgdmFsaWRhdGlvbiBsb2dpYyBpdHNlbGYgaXMgc29saWQsIGNoZWNraW5nIGZvciBtdWx0aWNhc3QgYW5kIHplcm8gYWRkcmVzc2VzIGZvciBib3RoIElQdjQgYW5kIElQdjYuXG5cblRoZSBnb29kIG5ld3MgaXMsIHRoaXMgcGF0aCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB2aWEgbmV0bGluayBjYWxsczogYHJ0bmxfbWRiX2FkZGAgLVx1MDAzZSBgZGV2LVx1MDAzZW5ldGRldl9vcHMtXHUwMDNlbmRvX21kYl9hZGRgLiAgVGhhdCBnaXZlcyBtZSBteSBhdHRhY2sgc3VyZmFjZS5cblxuVGhlcmVmb3JlLCBteSBhc3Nlc3NtZW50IGlzOiBgV29ydGhGdXp6aW5nOiB0cnVlYC4gIE15IGZvY3VzIHdpbGwgYmUgb24gZnV6emluZyB0aGUgTURCIG5ldGxpbmsgaGFuZGxlcnMgKFJUTV9ORVdNREIsIFJUTV9ERUxNREIsIGFuZCBSVE1fR0VUTURCKSB0byBlbnN1cmUgdGhpcyBuZXcgdmFsaWRhdGlvbiBsb2dpYyBpcyByb2J1c3QgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucyBvciB2dWxuZXJhYmlsaXRpZXMuIFRoaXMgaXMgYSBzb2xpZCB0YXJnZXQgZm9yIGVuc3VyaW5nIHRoZSBuZXR3b3JrIHN0YWNrJ3Mgc3RhYmlsaXR5IGFuZCBzZWN1cml0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODcyNCwiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6NDA6MjkuMDY3MTQ5MTE4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM3ODY2NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZYTEFOXCIsXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidnhsYW5fbWRiX2FkZFwiLFxuICAgIFwidnhsYW5fbWRiX2RlbFwiLFxuICAgIFwidnhsYW5fbWRiX2dldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiB0byBwcmV2ZW50IGFsbC16ZXJvcyBzb3VyY2UgYWRkcmVzc2VzIGluIFZYTEFOIE1EQiAoTXVsdGljYXN0IEZvcndhcmRpbmcgRGF0YWJhc2UpIGVudHJpZXMuIFRoaXMgbG9naWMgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIFJUTV9ORVdNREIsIFJUTV9ERUxNREIsIGFuZCBSVE1fR0VUTURCIGNvbW1hbmRzLiBGdXp6aW5nIHRoZSBNREIgbmV0bGluayBoYW5kbGVycyB3aWxsIGhlbHAgZW5zdXJlIHRoZSBuZXcgdmFsaWRhdGlvbiBsb2dpYyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZYTEFOXCIsXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidnhsYW5fbWRiX2FkZFwiLFxuICAgIFwidnhsYW5fbWRiX2RlbFwiLFxuICAgIFwidnhsYW5fbWRiX2dldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiB0byBwcmV2ZW50IGFsbC16ZXJvcyBzb3VyY2UgYWRkcmVzc2VzIGluIFZYTEFOIE1EQiAoTXVsdGljYXN0IEZvcndhcmRpbmcgRGF0YWJhc2UpIGVudHJpZXMuIFRoaXMgbG9naWMgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIFJUTV9ORVdNREIsIFJUTV9ERUxNREIsIGFuZCBSVE1fR0VUTURCIGNvbW1hbmRzLiBGdXp6aW5nIHRoZSBNREIgbmV0bGluayBoYW5kbGVycyB3aWxsIGhlbHAgZW5zdXJlIHRoZSBuZXcgdmFsaWRhdGlvbiBsb2dpYyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNTo0MDoyOS4xNDA5NDIxMTVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDI0Mjg4ODYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6NDA6MjkuMTQxNDY3NzY1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE1MDIzNzU4NDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gZm9yIG5ldGxpbmsgYXR0cmlidXRlcyBpbiB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlIHRvIHJlamVjdCBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3NlcyAoSU5BRERSX0FOWSBmb3IgSVB2NCBhbmQgaXB2Nl9hZGRyX2FueSBmb3IgSVB2NikuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBtb2RpZnkgc3RydWN0dXJlIGxheW91dHMsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IGxvZ2ljYWwgY2hlY2tzIG9uIGFscmVhZHkgaW5pdGlhbGl6ZWQgZGF0YSBwYXJzZWQgZnJvbSBuZXRsaW5rIG1lc3NhZ2VzLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMWZjZTFjOThmMGFmMzAxMDA4OTgzOTRkYWFlYjYxYWIwNDM1MDMyNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDE1OjM3OjQyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuY1xuaW5kZXggZDcxZTE5MjVlY2ZkYi4uNzk4NmM1YjVkYzY3NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jXG4rKysgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuY1xuQEAgLTM1NCw2ICszNTQsMTAgQEAgc3RhdGljIGJvb2wgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZShjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBfX2JlMTYgcHJvdG8sXG4gXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJJUHY0IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZFwiKTtcbiBcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRcdH1cbitcdFx0aWYgKG5sYV9nZXRfaW5fYWRkcihhdHRyKSA9PSBodG9ubChJTkFERFJfQU5ZKSkge1xuK1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiSVB2NCBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3MgaXMgbm90IGFsbG93ZWRcIik7XG4rXHRcdFx0cmV0dXJuIGZhbHNlO1xuK1x0XHR9XG4gXHRcdGJyZWFrO1xuICNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuIFx0Y2FzZSBodG9ucyhFVEhfUF9JUFY2KToge1xuQEAgLTM2OCw2ICszNzIsMTAgQEAgc3RhdGljIGJvb2wgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZShjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBfX2JlMTYgcHJvdG8sXG4gXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJJUHY2IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZFwiKTtcbiBcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRcdH1cbitcdFx0aWYgKGlwdjZfYWRkcl9hbnkoXHUwMDI2c3JjKSkge1xuK1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiSVB2NiBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3MgaXMgbm90IGFsbG93ZWRcIik7XG4rXHRcdFx0cmV0dXJuIGZhbHNlO1xuK1x0XHR9XG4gXHRcdGJyZWFrO1xuIFx0fVxuICNlbmRpZlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6NDA6MjkuMTQxNDY4NDc1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk3NTY1NjM2OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFZYTEFOIFNvdXJjZSBBZGRyZXNzIFZhbGlkYXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYCB3aXRoaW4gYHZ4bGFuX21kYi5jYC4gSXQncyBzdHJhaWdodGZvcndhcmQ6IHRoZXkncmUgYWRkaW5nIGlucHV0IHZhbGlkYXRpb24gb24gdGhlIHNvdXJjZSBhZGRyZXNzIHVzZWQgaW4gbmV0bGluayBhdHRyaWJ1dGVzLiBHb29kLiBUaGUga2V5IHRoaW5nIGlzIHRoYXQgaXQgZXhwbGljaXRseSBjaGVja3MgZm9yIHRoZSBhbGwtemVyb3MgYWRkcmVzcywgYm90aCBJUHY0IChgSU5BRERSX0FOWWApIGFuZCBJUHY2IChgaXB2Nl9hZGRyX2FueWApLiBTbWFydC4gUHJldmVudHMgcG90ZW50aWFsIGlzc3Vlcy5cblxuTGV0J3Mgc2VlLi4uIGxvb2tpbmcgdGhyb3VnaCB0aGUgY29kZSBJIGNhbiBzZWUgdGhhdCB0aGlzIGlzbid0IGludHJvZHVjaW5nIGFueSBuYXN0aWVzIGxpa2UgdW5pbml0aWFsaXplZCBtZW1vcnksIGxlYWtpbmcgaW5mb3JtYXRpb24sIG9yIG92ZXJseSBjb21wbGljYXRlZCBhbGxvY2F0aW9ucy4gVGhleSdyZSBqdXN0IHJlYWRpbmcgdGhlIHNvdXJjZSBhZGRyZXNzIGZyb20gdGhlIGF0dHJpYnV0ZSB1c2luZyBzdGFuZGFyZCBuZXRsaW5rIG1ldGhvZHM6IGBubGFfZ2V0X2luX2FkZHIoYXR0cilgIGFuZCBgbmxhX2dldF9pbjZfYWRkcihhdHRyKWAsIHdoaWNoIGlzIHBlcmZlY3RseSBmaW5lLiBgc3JjYCBpcyBpbml0aWFsaXplZCBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIElQdjYgY2hlY2sg4oCTIGBzcmMgPSBubGFfZ2V0X2luNl9hZGRyKGF0dHIpYCBpbiB0aGUgY2FzZSBvZiBJUHY2LCBhcyBJIHJlbWVtYmVyLCBidXQgaXQncyB3b3J0aCBhIHNlY29uZCBsb29rIGF0IHRoZSByZWxldmFudCBwb3J0aW9uIHRvIG1ha2Ugc3VyZS4gSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXMgc3RhbmRhcmQgbmV0bGluayBwYXJzaW5nLiBIb3dldmVyLCBJIHNob3VsZCBzdGlsbCBjaGVjayB0aGUgc3Vycm91bmRpbmcgY29kZSBqdXN0IHRvIGJlIHNhZmUuIEl0IHdvdWxkIGJlIGEgc2lsbHkgb3ZlcnNpZ2h0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTkxLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6NDA6MzguODk4MDM0ODY4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTMzODI0MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0zMjc9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHZ4bGFuX21kYmVfYXR0cnNfcG9sW01EQkVfQVRUUl9NQVggKyAxXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTM0My1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzozNDQ6c3RhdGljIGJvb2wgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZShjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBfX2JlMTYgcHJvdG8sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMzQ1LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTQyMT1zdGF0aWMgaW50IHZ4bGFuX21kYl9jb25maWdfc3JjX2VudHJ5X2luaXQoc3RydWN0IHZ4bGFuX21kYl9jb25maWcgKmNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTQzNy1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzo0Mzg6XFx0aWYgKCF2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlKHRiW01EQkVfU1JDQVRUUl9BRERSRVNTXSwgcHJvdG8sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtNDM5LVxcdFxcdFxcdFxcdCAgICAgICBleHRhY2spKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9NDk4PXN0YXRpYyBpbnQgdnhsYW5fbWRiX2NvbmZpZ19hdHRyc19pbml0KHN0cnVjdCB2eGxhbl9tZGJfY29uZmlnICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy01MTYtXFx0aWYgKG1kYmVfYXR0cnNbTURCRV9BVFRSX1NPVVJDRV0gXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzo1MTc6XFx0ICAgICF2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlKG1kYmVfYXR0cnNbTURCRV9BVFRSX1NPVVJDRV0sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtNTE4LVxcdFxcdFxcdFxcdCAgICAgICBlbnRyeS1cXHUwMDNlYWRkci5wcm90bywgZXh0YWNrKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTE0ODA9c3RhdGljIGludCB2eGxhbl9tZGJfZ2V0X3BhcnNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTAzLVxcdGlmIChtZGJlX2F0dHJzW01EQkVfQVRUUl9TT1VSQ0VdIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTUwNDpcXHQgICAgIXZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UobWRiZV9hdHRyc1tNREJFX0FUVFJfU09VUkNFXSxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTA1LVxcdFxcdFxcdFxcdCAgICAgICBlbnRyeS1cXHUwMDNlYWRkci5wcm90bywgZXh0YWNrKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6NDA6MzkuMTUxNDIzMjE3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMTM3ODE3NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmV0bGluayBBdHRyaWJ1dGUgVmFsaWRhdGlvbiBhbmQgTWVtb3J5IENvbmNlcm5zKipcblxuT2theSwgc28gSSd2ZSByZXZpZXdlZCB0aGlzIHBhdGNoIGFuZCBJJ20gc2VlaW5nIHRoYXQgaXQncyBpbnRyb2R1Y2luZyBzb21lIG5lY2Vzc2FyeSB2YWxpZGF0aW9uIGZvciB0aGUgbmV0bGluayBhdHRyaWJ1dGVzLiBUaGF0J3MgZ29vZCwgYWx3YXlzIGEgY3J1Y2lhbCBzdGVwIGZvciBtYWludGFpbmluZyBzeXN0ZW0gaW50ZWdyaXR5IGFuZCBwcmV2ZW50aW5nIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIEZyb20gd2hhdCBJJ20gcmVhZGluZywgaXQgZG9lc24ndCBhcHBlYXIgdG8gYmUgY3JlYXRpbmcgYW55IG5ldyBhdmVudWVzIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMsIHdoaWNoIGlzIGV4Y2VsbGVudC4gSSdtIGFsd2F5cyBoeXBlci12aWdpbGFudCBhYm91dCB0aGF0LiBUaGVyZWZvcmUsIGJhc2VkIG9uIG15IGFzc2Vzc21lbnQsIEknbGwgZ28gYWhlYWQgYW5kIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAuIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIHBhdGNoIGRvZXNuJ3Qgd2FycmFudCBmdXJ0aGVyIGludmVzdGlnYXRpb24gZnJvbSBhIGtlcm5lbCBtZW1vcnkgc2FuaXRpemVyIHBlcnNwZWN0aXZlLCBnaXZlbiB0aGUgYWJzZW5jZSBvZiBhbnkgcmVhZGlseSBhcHBhcmVudCBtZW1vcnktcmVsYXRlZCBjb25jZXJucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMzOCwiT3V0cHV0VG9rZW5zIjoxMzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNTo0MDo0NC4xNjUyMDkyODdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgaW5wdXQgdmFsaWRhdGlvbiBmb3IgbmV0bGluayBhdHRyaWJ1dGVzIGluIHZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UgdG8gcmVqZWN0IGFsbC16ZXJvcyBzb3VyY2UgYWRkcmVzc2VzIChJTkFERFJfQU5ZIGZvciBJUHY0IGFuZCBpcHY2X2FkZHJfYW55IGZvciBJUHY2KS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIG1vZGlmeSBzdHJ1Y3R1cmUgbGF5b3V0cywgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2UuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgbG9naWNhbCBjaGVja3Mgb24gYWxyZWFkeSBpbml0aWFsaXplZCBkYXRhIHBhcnNlZCBmcm9tIG5ldGxpbmsgbWVzc2FnZXMuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gZm9yIG5ldGxpbmsgYXR0cmlidXRlcyBpbiB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlIHRvIHJlamVjdCBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3NlcyAoSU5BRERSX0FOWSBmb3IgSVB2NCBhbmQgaXB2Nl9hZGRyX2FueSBmb3IgSVB2NikuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBtb2RpZnkgc3RydWN0dXJlIGxheW91dHMsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IGxvZ2ljYWwgY2hlY2tzIG9uIGFscmVhZHkgaW5pdGlhbGl6ZWQgZGF0YSBwYXJzZWQgZnJvbSBuZXRsaW5rIG1lc3NhZ2VzLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowd8q8b[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-26 15:20:19 +0000 UTC FinishedAt: 2026-08-26 15:40:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dc4b95b8fee95113587e93ca116356032d271371", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN", "IPV6" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "dc4b95b8fee95113587e93ca116356032d271371", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN", "IPV6" ], "series_id": "74c8345d-4470-4ebd-8939-660e04183cee" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "vxlan_mdb_add", "vxlan_mdb_del", "vxlan_mdb_get" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2eGxhbl9tZGJfYWRkJiMzNDssCiAgICAmIzM0O3Z4bGFuX21kYl9kZWwmIzM0OywKICAgICYjMzQ7dnhsYW5fbWRiX2dldCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgaW5wdXQgdmFsaWRhdGlvbiBmb3IgbmV0bGluayBhdHRyaWJ1dGVzIGluIHZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UgdG8gcmVqZWN0IGFsbC16ZXJvcyBzb3VyY2UgYWRkcmVzc2VzIChJTkFERFJfQU5ZIGZvciBJUHY0IGFuZCBpcHY2X2FkZHJfYW55IGZvciBJUHY2KS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIG1vZGlmeSBzdHJ1Y3R1cmUgbGF5b3V0cywgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2UuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgbG9naWNhbCBjaGVja3Mgb24gYWxyZWFkeSBpbml0aWFsaXplZCBkYXRhIHBhcnNlZCBmcm9tIG5ldGxpbmsgbWVzc2FnZXMuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIHRvIHByZXZlbnQgYWxsLXplcm9zIHNvdXJjZSBhZGRyZXNzZXMgaW4gVlhMQU4gTURCIChNdWx0aWNhc3QgRm9yd2FyZGluZyBEYXRhYmFzZSkgZW50cmllcy4gVGhpcyBsb2dpYyBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgUlRNX05FV01EQiwgUlRNX0RFTE1EQiwgYW5kIFJUTV9HRVRNREIgY29tbWFuZHMuIEZ1enppbmcgdGhlIE1EQiBuZXRsaW5rIGhhbmRsZXJzIHdpbGwgaGVscCBlbnN1cmUgdGhlIG5ldyB2YWxpZGF0aW9uIGxvZ2ljIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMWZjZTFjOThmMGFmMzAxMDA4OTgzOTRkYWFlYjYxYWIwNDM1MDMyNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDE1OjM3OjQyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmNcbmluZGV4IGQ3MWUxOTI1ZWNmZGIuLjc5ODZjNWI1ZGM2NzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmNcbkBAIC0zNTQsNiAmIzQzOzM1NCwxMCBAQCBzdGF0aWMgYm9vbCB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsIF9fYmUxNiBwcm90byxcbiBcdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtJUHY0IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZFwmIzM0Oyk7XG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0XHR9XG4mIzQzO1x0XHRpZiAobmxhX2dldF9pbl9hZGRyKGF0dHIpID09IGh0b25sKElOQUREUl9BTlkpKSB7XG4mIzQzO1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O0lQdjQgYWxsLXplcm9zIHNvdXJjZSBhZGRyZXNzIGlzIG5vdCBhbGxvd2VkXCYjMzQ7KTtcbiYjNDM7XHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdFx0fVxuIFx0XHRicmVhaztcbiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbiBcdGNhc2UgaHRvbnMoRVRIX1BfSVBWNik6IHtcbkBAIC0zNjgsNiAmIzQzOzM3MiwxMCBAQCBzdGF0aWMgYm9vbCB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsIF9fYmUxNiBwcm90byxcbiBcdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtJUHY2IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZFwmIzM0Oyk7XG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0XHR9XG4mIzQzO1x0XHRpZiAoaXB2Nl9hZGRyX2FueShcdTAwMjZzcmMpKSB7XG4mIzQzO1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O0lQdjYgYWxsLXplcm9zIHNvdXJjZSBhZGRyZXNzIGlzIG5vdCBhbGxvd2VkXCYjMzQ7KTtcbiYjNDM7XHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdFx0fVxuIFx0XHRicmVhaztcbiBcdH1cbiAjZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNTozNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VlhMQU4mIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Z4bGFuX21kYl9hZGQmIzM0OywKICAgICYjMzQ7dnhsYW5fbWRiX2RlbCYjMzQ7LAogICAgJiMzNDt2eGxhbl9tZGJfZ2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiB0byBwcmV2ZW50IGFsbC16ZXJvcyBzb3VyY2UgYWRkcmVzc2VzIGluIFZYTEFOIE1EQiAoTXVsdGljYXN0IEZvcndhcmRpbmcgRGF0YWJhc2UpIGVudHJpZXMuIFRoaXMgbG9naWMgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIFJUTV9ORVdNREIsIFJUTV9ERUxNREIsIGFuZCBSVE1fR0VUTURCIGNvbW1hbmRzLiBGdXp6aW5nIHRoZSBNREIgbmV0bGluayBoYW5kbGVycyB3aWxsIGhlbHAgZW5zdXJlIHRoZSBuZXcgdmFsaWRhdGlvbiBsb2dpYyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDFmY2UxYzk4ZjBhZjMwMTAwODk4Mzk0ZGFhZWI2MWFiMDQzNTAzMjQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAyNiAxNTozNzo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMKaW5kZXggZDcxZTE5MjVlY2ZkYi4uNzk4NmM1YjVkYzY3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMKQEAgLTM1NCw2ICYjNDM7MzU0LDEwIEBAIHN0YXRpYyBib29sIHZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgX19iZTE2IHByb3RvLAogCQkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtJUHY0IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZCYjMzQ7KTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQomIzQzOwkJaWYgKG5sYV9nZXRfaW5fYWRkcihhdHRyKSA9PSBodG9ubChJTkFERFJfQU5ZKSkgewomIzQzOwkJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssICYjMzQ7SVB2NCBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3MgaXMgbm90IGFsbG93ZWQmIzM0Oyk7CiYjNDM7CQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJfQogCQlicmVhazsKICNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KQogCWNhc2UgaHRvbnMoRVRIX1BfSVBWNik6IHsKQEAgLTM2OCw2ICYjNDM7MzcyLDEwIEBAIHN0YXRpYyBib29sIHZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgX19iZTE2IHByb3RvLAogCQkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtJUHY2IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZCYjMzQ7KTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQomIzQzOwkJaWYgKGlwdjZfYWRkcl9hbnkoJmFtcDtzcmMpKSB7CiYjNDM7CQkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtJUHY2IGFsbC16ZXJvcyBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZCYjMzQ7KTsKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CQl9CiAJCWJyZWFrOwogCX0KICNlbmRpZgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNTozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTk0CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVlhMQU4gTURCIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBhZGRlZCBzb21lIGNoZWNrcyBmb3IgYElOQUREUl9BTllgIGFuZCBgaXB2Nl9hZGRyX2FueWAgd2l0aGluIHRoZSBgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZWAgZnVuY3Rpb24uIFRoYXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseS4gSXQmIzM5O3MgdHdlYWtpbmcgdGhlIE1EQiwgdGhlIE11bHRpY2FzdCBGb3J3YXJkaW5nIERhdGFiYXNlLCB3aGljaCBpcyBjcnVjaWFsIGZvciBWWExBTiYjMzk7cyBtdWx0aWNhc3QgaGFuZGxpbmcuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGF0JiMzOTtzIHRoZSAqY29udGV4dCogaGVyZT8mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZWAgaXMgYmVpbmcgY2FsbGVkIGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMuIEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gbXVsdGljYXN0LCBvciBwZXJoYXBzIGFueSBzcGVjaWZpYyBWWExBTiBzZXR1cCwgdGhhdCB0aGlzIGNoYW5nZSBpcyBhZGRyZXNzaW5nPyBJIHdhbnQgdG8gc2VlIGlmIHRoaXMgaXMgdGFyZ2V0ZWQgYXQgYSBwYXJ0aWN1bGFyIHVzZSBjYXNlIG9yIGlmIGl0JiMzOTtzIGEgbW9yZSBnZW5lcmFsIGltcHJvdmVtZW50LiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGNoYWluIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgYWRkZWQgY2hlY2tzLiBDb250ZXh0IGlzIGtleSB0byBwcm9wZXJseSBhc3Nlc3MgaXRzIGltcGFjdCBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNTozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTMyNz1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdnhsYW5fbWRiZV9hdHRyc19wb2xbTURCRV9BVFRSX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0zNDMtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzozNDQ6c3RhdGljIGJvb2wgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZShjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBfX2JlMTYgcHJvdG8sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0zNDUtXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9NDIxPXN0YXRpYyBpbnQgdnhsYW5fbWRiX2NvbmZpZ19zcmNfZW50cnlfaW5pdChzdHJ1Y3QgdnhsYW5fbWRiX2NvbmZpZyAqY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTQzNy1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjQzODpcdGlmICghdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZSh0YltNREJFX1NSQ0FUVFJfQUREUkVTU10sIHByb3RvLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtNDM5LVx0XHRcdFx0ICAgICAgIGV4dGFjaykpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9NDk4PXN0YXRpYyBpbnQgdnhsYW5fbWRiX2NvbmZpZ19hdHRyc19pbml0KHN0cnVjdCB2eGxhbl9tZGJfY29uZmlnICpjZmcsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtNTE2LVx0aWYgKG1kYmVfYXR0cnNbTURCRV9BVFRSX1NPVVJDRV0gXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzo1MTc6XHQgICAgIXZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UobWRiZV9hdHRyc1tNREJFX0FUVFJfU09VUkNFXSxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTUxOC1cdFx0XHRcdCAgICAgICBlbnRyeS1cdTAwM2VhZGRyLnByb3RvLCBleHRhY2spKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTE0ODA9c3RhdGljIGludCB2eGxhbl9tZGJfZ2V0X3BhcnNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTUwMy1cdGlmIChtZGJlX2F0dHJzW01EQkVfQVRUUl9TT1VSQ0VdIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTUwNDpcdCAgICAhdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZShtZGJlX2F0dHJzW01EQkVfQVRUUl9TT1VSQ0VdLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTUwNS1cdFx0XHRcdCAgICAgICBlbnRyeS1cdTAwM2VhZGRyLnByb3RvLCBleHRhY2spKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxODAKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVlhMQU4gTURCIEluaXRpYWxpemF0aW9uIGFuZCBQYXJzaW5nKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGZyb20gYSBmZXcgcGxhY2VzOiBgdnhsYW5fbWRiX2NvbmZpZ19zcmNfZW50cnlfaW5pdGAsIGB2eGxhbl9tZGJfY29uZmlnX2F0dHJzX2luaXRgLCBhbmQgYHZ4bGFuX21kYl9nZXRfcGFyc2VgLiBCYXNlZCBvbiB0aGUgbmFtaW5nLCBteSBpbW1lZGlhdGUgYXNzdW1wdGlvbiBpcyB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW52b2x2ZWQgaW4gaGFuZGxpbmcgbmV0bGluayBtZXNzYWdlcyByZWxhdGVkIHRvIFZYTEFOIE11bHRpY2FzdCBEYXRhIEJhc2UgKE1EQikgb3BlcmF0aW9ucy4gVGhhdCBtYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIGNvbnRleHQuIFRvIGNvbmZpcm0gdGhpcywgSSBzaG91bGQgcmVhbGx5IGRpZyBpbnRvIGhvdyBgdnhsYW5fbWRiX2NvbmZpZ19hdHRyc19pbml0YCBhbmQgYHZ4bGFuX21kYl9nZXRfcGFyc2VgIGFyZSB1c2VkLCBhcyB0aGF0IHNob3VsZCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBkYXRhIHN0cnVjdHVyZXMgYW5kIHBhcnNpbmcgaW52b2x2ZWQgd2l0aCBzZXR0aW5nIHVwIG9yIHF1ZXJ5aW5nIHRoZSBNREIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnhsYW5fbWRiX2NvbmZpZ19hdHRyc19pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTQ5MD1zdGF0aWMgdm9pZCB2eGxhbl9tZGJfY29uZmlnX3NyY19saXN0X2Zpbmkoc3RydWN0IHZ4bGFuX21kYl9jb25maWcgKmNmZylcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy00OTctXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzo0OTg6c3RhdGljIGludCB2eGxhbl9tZGJfY29uZmlnX2F0dHJzX2luaXQoc3RydWN0IHZ4bGFuX21kYl9jb25maWcgKmNmZyxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTQ5OS1cdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgYnJfbWRiX2VudHJ5ICplbnRyeSxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz02MDk9c3RhdGljIGludCB2eGxhbl9tZGJfY29uZmlnX2luaXQoc3RydWN0IHZ4bGFuX21kYl9jb25maWcgKmNmZyxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy02NjEtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzo2NjI6XHRyZXR1cm4gdnhsYW5fbWRiX2NvbmZpZ19hdHRyc19pbml0KGNmZywgZW50cnksIHRiW01EQkFfU0VUX0VOVFJZX0FUVFJTXSxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTY2My1cdFx0XHRcdFx0ICAgZXh0YWNrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNTozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzQwCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHVuZGVyc3RhbmRpbmcsIGFzIGlmIGl0IHdlcmUgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipVbmRlcnN0YW5kaW5nIHRoZSBWWExBTiBNdWx0aWNhc3QgRGF0YWJhc2UgQ29uZmlndXJhdGlvbiBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGB2eGxhbl9tZGJfY29uZmlnX2luaXRgIGlzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgVlhMQU4gbXVsdGljYXN0IGRhdGFiYXNlIG1hbmFnZW1lbnQuIFdoYXQmIzM5O3MgaW1wb3J0YW50IHRvIGdyYXNwIGltbWVkaWF0ZWx5IGlzIHdoZXJlIGl0JiMzOTtzIGNhbGxlZCBmcm9tLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGludm9rZWQgYnkgYm90aCBgdnhsYW5fbWRiX2FkZGAgYW5kIGB2eGxhbl9tZGJfZGVsYC4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGF0IGB2eGxhbl9tZGJfY29uZmlnX2luaXRgIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIG9yIHJlc2V0dGluZyB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIHRoZSBtdWx0aWNhc3QgZGF0YWJhc2Ugd2hlbmV2ZXIgYSBuZXcgZW50cnkgaXMgYWRkZWQgb3IgYW4gZXhpc3Rpbmcgb25lIGlzIHJlbW92ZWQuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBhY3R1YWwgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCBwcmVjaXNlbHkgd2hhdCB0aGlzIGluaXRpYWxpemF0aW9uIGVudGFpbHMg4oCTIHRoaW5ncyBsaWtlIG1lbW9yeSBhbGxvY2F0aW9uLCBkZWZhdWx0IHZhbHVlcywgb3IgcGVyaGFwcyBldmVuIHJlc291cmNlIGxvY2tpbmcuIEtub3dpbmcgdGhpcyB1cGZyb250IGdpdmVzIG1lIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIHRyb3VibGVzaG9vdGluZyBvciBtb2RpZmljYXRpb24gZG93biB0aGUgbGluZSB3aGVuIGRlYWxpbmcgd2l0aCBWWExBTiBtdWx0aWNhc3Qgb3BlcmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNTozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbl9tZGJfY29uZmlnX2luaXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9NDk4PXN0YXRpYyBpbnQgdnhsYW5fbWRiX2NvbmZpZ19hdHRyc19pbml0KHN0cnVjdCB2eGxhbl9tZGJfY29uZmlnICpjZmcsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtNjA4LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6NjA5OnN0YXRpYyBpbnQgdnhsYW5fbWRiX2NvbmZpZ19pbml0KHN0cnVjdCB2eGxhbl9tZGJfY29uZmlnICpjZmcsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy02MTAtXHRcdFx0XHQgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0xMjk1PWludCB2eGxhbl9tZGJfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sIHUxNiBubG1zZ19mbGFncyxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xMzAyLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTMwMzpcdGVyciA9IHZ4bGFuX21kYl9jb25maWdfaW5pdChcdTAwMjZjZmcsIGRldiwgdGIsIG5sbXNnX2ZsYWdzLCBleHRhY2spO1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTMwNC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9MTMxMz1pbnQgdnhsYW5fbWRiX2RlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTEzMjAtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxMzIxOlx0ZXJyID0gdnhsYW5fbWRiX2NvbmZpZ19pbml0KFx1MDAyNmNmZywgZGV2LCB0YiwgMCwgZXh0YWNrKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTEzMjItXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MTYKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIHRhaWxvcmVkIGZvciBteSBleHBlcnQgcGVyc3BlY3RpdmU6CgoqKkV4YW1pbmluZyBWWExBTiBNdWx0aWNhc3QgRGF0YWJhc2UgT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IFZYTEFOIG11bHRpY2FzdCBkYXRhIGlzIGhhbmRsZWQsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgZnVuY3Rpb25zIGB2eGxhbl9tZGJfYWRkYCBhbmQgYHZ4bGFuX21kYl9kZWxgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtUaGVzZSBhcmUgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzIGZvciBtYW5hZ2luZyB0aGUgbXVsdGljYXN0IGRhdGFiYXNlIHdpdGhpbiB0aGUgVlhMQU4gbW9kdWxlLiYjMzQ7IEdpdmVuIHRoZWlyIG5hbWVzLCBJJiMzOTttIGFzc3VtaW5nIGBhZGRgIGlzIGZvciBjcmVhdGluZyBuZXcgZW50cmllcyBmb3IgbXVsdGljYXN0IGdyb3VwcywgYW5kIGBkZWxgIGlzIHRvIHJlbW92ZSB0aGVtLCBwcm9iYWJseSBmb3IgY2xlYW51cCBvciB3aGVuIGEgVk5JIGlzIG5vIGxvbmdlciBhY3RpdmUgb24gYSBnaXZlbiBub2RlLgoKVGhlIGZhY3QgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGV4cGxpY2l0bHkgKmV4cG9ydGVkKiBvciAqdXNlZCogd2l0aGluIGB2eGxhbl9jb3JlLmNgIChvciBhIHNpbWlsYXIsIGNvcmUgVlhMQU4gZmlsZSkgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhhdCB0aGlzIGlzIGEgY3JpdGljYWwgc2VjdGlvbiBvZiB0aGUgY29kZS4gVGhpcyBmdW5jdGlvbiBsaWtlbHkgc2l0cyBhdCB0aGUgaGVhcnQgb2YgaG93IG11bHRpY2FzdCB0cmFmZmljIGlzIHJlcGxpY2F0ZWQgYW5kIGZvcndhcmRlZCB3aXRoaW4gdGhlIFZYTEFOIG5ldHdvcmssIGFuZCBhbnkgaXNzdWVzIG9yIGluZWZmaWNpZW5jaWVzIGhlcmUgd291bGQgaGF2ZSBhIHNpZ25pZmljYW50IGltcGFjdCBvbiBvdmVyYWxsIHBlcmZvcm1hbmNlIGFuZCBzY2FsYWJpbGl0eS4gVGhpcyBjb3JlIGZpbGUgb3Igc2VjdGlvbiBpcyBsaWtlbHkgd2hlcmUgdGhlIG11bHRpY2FzdCBncm91cCBtZW1iZXJzaGlwLCB0aGUgbWFwcGluZyBmcm9tIFZOSXMgdG8gcGh5c2ljYWwgbmV0d29yayBkZXN0aW5hdGlvbiBncm91cHMsIGFuZCB0aGUgYXNzb2NpYXRlZCBkYXRhIHN0cnVjdHVyZXMgYXJlIG1hbmFnZWQuIFRpbWUgdG8gZ28gZGlnIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNTozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbl9tZGJfYWRkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMjkxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdnhsYW5fbmV0ZGV2X2V0aGVyX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzMwNS1cdC5uZG9fZmRiX2dldFx0XHQ9IHZ4bGFuX2ZkYl9nZXQsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzMwNjpcdC5uZG9fbWRiX2FkZFx0XHQ9IHZ4bGFuX21kYl9hZGQsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzMwNy1cdC5uZG9fbWRiX2RlbFx0XHQ9IHZ4bGFuX21kYl9kZWwsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9ODY9c3RhdGljIGNvbnN0IHN0cnVjdCByaGFzaHRhYmxlX3BhcmFtcyB2eGxhbl9tZGJfcmh0X3BhcmFtcyA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy05Mi1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjkzOnN0YXRpYyBpbnQgX192eGxhbl9tZGJfYWRkKGNvbnN0IHN0cnVjdCB2eGxhbl9tZGJfY29uZmlnICpjZmcsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy05NC1cdFx0XHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTc5Nz12eGxhbl9tZGJfcmVtb3RlX3NyY19md2RfYWRkKGNvbnN0IHN0cnVjdCB2eGxhbl9tZGJfY29uZmlnICpjZmcsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtODE4LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6ODE5Olx0cmV0dXJuIF9fdnhsYW5fbWRiX2FkZChcdTAwMjZzZ19jZmcsIGV4dGFjayk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy04MjAtfVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTEyMjk9c3RhdGljIHZvaWQgdnhsYW5fbWRiX2VudHJ5X3B1dChzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xMjQzLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTI0NDpzdGF0aWMgaW50IF9fdnhsYW5fbWRiX2FkZChjb25zdCBzdHJ1Y3QgdnhsYW5fbWRiX2NvbmZpZyAqY2ZnLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTI0NS1cdFx0XHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9MTI2OD1zdGF0aWMgaW50IF9fdnhsYW5fbWRiX2RlbChjb25zdCBzdHJ1Y3QgdnhsYW5fbWRiX2NvbmZpZyAqY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTEyOTQtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxMjk1OmludCB2eGxhbl9tZGJfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sIHUxNiBubG1zZ19mbGFncyxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTEyOTYtXHRcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTEzMDYtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxMzA3Olx0ZXJyID0gX192eGxhbl9tZGJfYWRkKFx1MDAyNmNmZywgZXh0YWNrKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTEzMDgtXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oPTIzMz1pbnQgdnhsYW5fbWRiX2R1bXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX3ByaXZhdGUuaC0yMzQtXHRcdCAgIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9wcml2YXRlLmg6MjM1OmludCB2eGxhbl9tZGJfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sIHUxNiBubG1zZ19mbGFncyxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX3ByaXZhdGUuaC0yMzYtXHRcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY1NwoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDE1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipWWExBTiBNREIgRW50cnkgVmFsaWRhdGlvbioqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgY29kZSwgYHZ4bGFuX21kYl9hZGRgIGlzIGJlaW5nIHVzZWQgYXMgdGhlIGAubmRvX21kYl9hZGRgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYHZ4bGFuX25ldGRldl9ldGhlcl9vcHNgIHN0cnVjdHVyZS4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBuZXRsaW5rLCBzcGVjaWZpY2FsbHkgd2l0aCB0aGUgYFJUTV9ORVdNREJgIG1lc3NhZ2UgdHlwZS4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuCgpUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIHRoZSBhZGRpdGlvbiBvZiBhIGNoZWNrIGZvciBgSU5BRERSX0FOWWAgYW5kIGBpcHY2X2FkZHJfYW55YCB3aXRoaW4gdGhlIGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYCBmdW5jdGlvbi4gRnVuY3Rpb25hbGx5LCB0aGlzIHByZXZlbnRzIHRoZSBhZGRpdGlvbiBvZiBNdWx0aWNhc3QgRGF0YWJhc2UgKE1EQikgZW50cmllcyB0aGF0IGhhdmUgYW4gYWxsLXplcm9zIHNvdXJjZSBhZGRyZXNzLiBUaGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSB2YWxpZCBhZGRpdGlvbiwgYW5kIEkgc2VlIHRoZSByZWFzb25pbmcuCgpHaXZlbiB0aGlzIG5ldyBjb2RlIHBhdGgsIGFuZCB0aGUgZmFjdCB0aGF0IGl0JiMzOTtzIG5ldGxpbmsgZmFjaW5nLCBmdXp6aW5nIGlzIGFic29sdXRlbHkgd2FycmFudGVkIGhlcmUuIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIG5ldGxpbmsgcGFyc2luZywgdGhlIE1EQiBoYW5kbGluZyBsb2dpYywgYW5kIG5vdyAqdGhpcyogY2hlY2sgYXJlIGFsbCByb2J1c3QgYW5kIGRvbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMuIEkgbmVlZCB0byBnZXQgdGhpcyBpbnRvIG15IGZ1enppbmcgc3RyYXRlZ3kgYW5kIHRhcmdldCB0aGlzIHNwZWNpZmljIGNvZGUgcGF0aCB0byBleGVyY2lzZSBpdC4KCkxldCBtZSBqdXN0IHF1aWNrbHkgY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFyZSByZXF1aXJlZCB0byBnZXQgVlhMQU4gd29ya2luZyBwcm9wZXJseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZYTEFOJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9MjE2PWNvbmZpZyBJUFZUQVBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTIyOS1cbmRyaXZlcnMvbmV0L0tjb25maWc6MjMwOmNvbmZpZyBWWExBTlxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzEtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIGVYdGVuc2libGUgTG9jYWwgQXJlYSBOZXR3b3JrIChWWExBTilcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE5MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKlZYTEFOIERlcGVuZGVuY2llczogQSBRdWljayBNZW50YWwgQ2hlY2sqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBWWExBTiByaWdodCBub3cuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIG1lbnRhbGx5IG1hcCBvdXQgaXRzIGRlcGVuZGVuY2llcy4gV2hhdCBhcmUgdGhlIGZvdW5kYXRpb25hbCBlbGVtZW50cyB0aGlzIHRoaW5nIGlzIGJ1aWx0IG9uPyBJIG5lZWQgdG8gcXVpY2tseSBydW4gdGhyb3VnaCB0aGUgdW5kZXJseWluZyB0ZWNobm9sb2dpZXMgYW5kIG1ha2Ugc3VyZSBJIGhhdmUgYSBzb2xpZCBncmFzcCBvbiBldmVyeXRoaW5nIHRoYXQgVlhMQU4gbGV2ZXJhZ2VzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtaW5kIG9uIHRoZSBjcml0aWNhbCBjb21wb25lbnRzIGFuZCBob3cgdGhleSBpbnRlcmFjdC4gVGhpcyBpcyBwcmV0dHkgZnVuZGFtZW50YWwgc3R1ZmYsIGJ1dCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byBoYXZlIHRoYXQgYmFzZS1sZXZlbCB1bmRlcnN0YW5kaW5nIHByZXNlbnQuIEdvdHRhIGVuc3VyZSBJJiMzOTttIHJlbWVtYmVyaW5nIHRoZSBrZXkgcGllY2VzIGFuZCB0aGVpciByb2xlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMzA6XHRjb25maWcgVlhMQU5cbiAyMzE6XHRcdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgZVh0ZW5zaWJsZSBMb2NhbCBBcmVhIE5ldHdvcmsgKFZYTEFOKVwmIzM0O1xuIDIzMjpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gMjMzOlx0XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbiAyMzQ6XHRcdHNlbGVjdCBHUk9fQ0VMTFNcbiAyMzU6XHRcdGhlbHBcbiAyMzY6XHRcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSB2eGxhbiB2aXJ0dWFsIGludGVyZmFjZXMgdGhhdCBwcm92aWRlXG4gMjM3Olx0XHQgIExheWVyIDIgTmV0d29ya3Mgb3ZlciBMYXllciAzIE5ldHdvcmtzLiBWWExBTiBpcyBvZnRlbiB1c2VkXG4gMjM4Olx0XHQgIHRvIHR1bm5lbCB2aXJ0dWFsIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuIDIzOTpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWU6XG4gMjQwOlx0XHQgICAgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtbWFoYWxpbmdhbS1kdXR0LWRjb3BzLXZ4bGFuLTAyXG4gMjQxOlx0XG4gMjQyOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAyNDM6XHRcdCAgd2lsbCBiZSBjYWxsZWQgdnhsYW4uXG4gMjQ0Olx0XG4gMjQ1Olx0Y29uZmlnIEdFTkVWRVxuIDI0NjpcdFx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBOZXR3b3JrIFZpcnR1YWxpemF0aW9uIEVuY2Fwc3VsYXRpb25cJiMzNDtcbiAyNDc6XHRcdGRlcGVuZHMgb24gSU5FVFxuIDI0ODpcdFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4gMjQ5Olx0XHRzZWxlY3QgR1JPX0NFTExTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2ODQKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgVlhMQU4gQ29uZmlndXJhdGlvbiBKb3VybmV5KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSXQmIzM5O3MgY2xlYXIgdGhhdCB0byBnZXQgYFZYTEFOYCBodW1taW5nLCBJJiMzOTttIGdvaW5nIHRvIG5lZWQgdG8gaGF2ZSBgSU5FVGAgdXAgYW5kIHJ1bm5pbmcuIEEgbm8tYnJhaW5lciwgcmVhbGx5LiBOb3csIHRoZSBuZXh0IHN0ZXAgaXMgdG8gYWN0dWFsbHkgKmVuYWJsZSogYFZYTEFOYC4gU2ltcGxlIGVub3VnaC4KCkJ1dCBiZWZvcmUgSSBnZXQgdG9vIGZhciwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTt2ZSBkb3R0ZWQgYWxsIG15IGkmIzM5O3MgYW5kIGNyb3NzZWQgYWxsIG15IHQmIzM5O3MuIFRoYXQgbWVhbnMgcmV2aXNpdGluZyBgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZWAuIEdvdHRhIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBoaWRkZW4gY29uZmlnIGxhbmRtaW5lcyBsdXJraW5nIGluIHRoZXJlLiBBaCwgYW5kIGhlcmUgd2UgZ28uIFRoZSBjb2RlJiMzOTtzIGdvdCBhIGNvbmRpdGlvbmFsIGNoZWNrIGAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilgLiBTbywgdG8gYXZvaWQgc3VycHJpc2VzIGRvd24gdGhlIGxpbmUsIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGBJUFY2YCBhcyB3ZWxsLiBUaGF04oCZcyBwcm9iYWJseSB0aGUgcmlnaHQgdGhpbmcgdG8gZG8gYW55d2F5LCBmcm9tIGEgZnV0dXJlLXByb29maW5nIHBlcnNwZWN0aXZlLgoKTm93LCBsZXQmIzM5O3Mgc2hhcnBlbiBvdXIgZm9jdXMuIFRoZSBrZXkgZnVuY3Rpb25zIGhlcmUgYXJlIGB2eGxhbl9tZGJfYWRkYCwgYHZ4bGFuX21kYl9kZWxgLCBhbmQsIHBhcnRpY3VsYXJseSwgYHZ4bGFuX21kYl9nZXRfcGFyc2VgIOKAkyB0aGF0IG9uZSBzbWVsbHMgbGlrZSBhIGNyaXRpY2FsIGVudHJ5IHBvaW50LiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgYmVpbmcgdXNlZCB0aHJvdWdob3V0IHRoZSBzeXN0ZW0uIEkmIzM5O20gZ29pbmcgdG8gZGl2ZSBpbnRvIHRoZSBjYWxsIGdyYXBoIGZvciBgdnhsYW5fbWRiX2dldF9wYXJzZWAgbmV4dC4gR290dGEgdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbl9tZGJfZ2V0X3BhcnNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTE0NzM9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHZ4bGFuX21kYmVfYXR0cnNfZ2V0X3BvbFtNREJFX0FUVFJfTUFYICYjNDM7IDFdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE0NzktXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxNDgwOnN0YXRpYyBpbnQgdnhsYW5fbWRiX2dldF9wYXJzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTQ4MS1cdFx0XHQgICAgICAgc3RydWN0IHZ4bGFuX21kYl9lbnRyeV9rZXkgKmdyb3VwLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTE1ODU9aW50IHZ4bGFuX21kYl9nZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSwgdTMyIHBvcnRpZCxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTk1LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTU5NjpcdGVyciA9IHZ4bGFuX21kYl9nZXRfcGFyc2UoZGV2LCB0YiwgXHUwMDI2Z3JvdXAsIGV4dGFjayk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTk3LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ0MQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB1bmRlcnN0YW5kaW5nOgoKKipWWExBTiBNREIgR2V0IEZ1bmN0aW9uIENhbGwqKgoKQWxyaWdodCwgc28gbGV0JiMzOTtzIGNsYXJpZnkgdGhpcy4gSSBzZWUgdGhhdCBgdnhsYW5fbWRiX2dldGAgaXMgYmVpbmcgdXRpbGl6ZWQgYXMgdGhlIGltcGxlbWVudGF0aW9uIGZvciBgLm5kb19tZGJfZ2V0YCB3aXRoaW4gYHZ4bGFuX25ldGRldl9ldGhlcl9vcHNgLiBFZmZlY3RpdmVseSwgdGhpcyBtZWFucyB0aGF0IHRoZSBWWExBTiBtb2R1bGUgaXMgbGV2ZXJhZ2luZyBpdHMgb3duIHNwZWNpZmljIGZ1bmN0aW9uLCBgdnhsYW5fbWRiX2dldGAsIHRvIGhhbmRsZSB0aGUgTURCIChNdWx0aWNhc3QgRGF0YWJhc2UpIHJldHJpZXZhbCBvcGVyYXRpb25zIHJlcXVpcmVkIGJ5IHRoZSBuZXR3b3JrIGRldmljZSBvcGVyYXRpb25zIHN0cnVjdHVyZSBmb3IgRXRoZXJuZXQgZGV2aWNlcyAoYG5kb19gKS4gSW4gZXNzZW5jZSwgaXQmIzM5O3MgcGx1Z2dpbmcgaXRzIGN1c3RvbSBNREIgcmV0cmlldmFsIGxvZ2ljIGludG8gdGhlIGJyb2FkZXIgbmV0d29yayBkZXZpY2UgZnJhbWV3b3JrLiBUaGlzIGlzIHRoZSBtZWNoYW5pc20gYnkgd2hpY2ggdGhlIFZYTEFOIGNvZGUgaW50ZWdyYXRlcyBpbnRvIHRoZSBnZW5lcmljIG5ldHdvcmtpbmcgc3RhY2ssIHNwZWNpZmljYWxseSBoYW5kbGluZyBob3cgbXVsdGljYXN0IGluZm9ybWF0aW9uIGlzIGxvb2tlZCB1cCBhbmQgbWFuYWdlZCBmb3IgVlhMQU4gdHVubmVscy4gR290IGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbl9tZGJfZ2V0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMjkxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdnhsYW5fbmV0ZGV2X2V0aGVyX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzMwOS1cdC5uZG9fbWRiX2R1bXBcdFx0PSB2eGxhbl9tZGJfZHVtcCxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMzEwOlx0Lm5kb19tZGJfZ2V0XHRcdD0gdnhsYW5fbWRiX2dldCxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMzExLVx0Lm5kb19maWxsX21ldGFkYXRhX2RzdFx0PSB2eGxhbl9maWxsX21ldGFkYXRhX2RzdCxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0xNDczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB2eGxhbl9tZGJlX2F0dHJzX2dldF9wb2xbTURCRV9BVFRSX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNDc5LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTQ4MDpzdGF0aWMgaW50IHZ4bGFuX21kYl9nZXRfcGFyc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE0ODEtXHRcdFx0ICAgICAgIHN0cnVjdCB2eGxhbl9tZGJfZW50cnlfa2V5ICpncm91cCxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0xNTE3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxNTE4OnZ4bGFuX21kYl9nZXRfcmVwbHlfYWxsb2MoY29uc3Qgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTE5LVx0XHRcdCAgY29uc3Qgc3RydWN0IHZ4bGFuX21kYl9lbnRyeSAqbWRiX2VudHJ5KVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTE1Mzc9c3RhdGljIGludFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTUzODp2eGxhbl9tZGJfZ2V0X3JlcGx5X2ZpbGwoY29uc3Qgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTM5LVx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE1ODQtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxNTg1OmludCB2eGxhbl9tZGJfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sIHUzMiBwb3J0aWQsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTg2LVx0XHQgIHUzMiBzZXEsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTk1LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTU5NjpcdGVyciA9IHZ4bGFuX21kYl9nZXRfcGFyc2UoZGV2LCB0YiwgXHUwMDI2Z3JvdXAsIGV4dGFjayk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTk3LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNjA1LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTYwNjpcdHNrYiA9IHZ4bGFuX21kYl9nZXRfcmVwbHlfYWxsb2ModnhsYW4sIG1kYl9lbnRyeSk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNjA3LVx0aWYgKCFza2IpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTYwOS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjE2MTA6XHRlcnIgPSB2eGxhbl9tZGJfZ2V0X3JlcGx5X2ZpbGwodnhsYW4sIHNrYiwgbWRiX2VudHJ5LCBwb3J0aWQsIHNlcSk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNjExLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX3ByaXZhdGUuaD0yMzk9aW50IHZ4bGFuX21kYl9kZWxfYnVsayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oLTI0MC1cdFx0ICAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9wcml2YXRlLmg6MjQxOmludCB2eGxhbl9tZGJfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sIHUzMiBwb3J0aWQsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9wcml2YXRlLmgtMjQyLVx0XHQgIHUzMiBzZXEsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3MjQKCQkJCQkJCW91dHB1dDogMTQ5CgkJCQkJCQl0aG91Z2h0czogOTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBWWExBTiBNREIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZHJpbGxlZCBkb3duIGludG8gdGhpcyBwYXRjaC4gVGhlIGtleSBlbnRyeSBwb2ludHMgYXBwZWFyIHRvIGJlIGB2eGxhbl9tZGJfYWRkYCwgYHZ4bGFuX21kYl9kZWxgLCBhbmQgYHZ4bGFuX21kYl9nZXRgIOKAkyB0aG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyB0aGF0IHdpbGwgaGFuZGxlIHRoZSBjb3JlIGxvZ2ljIHJlbGF0ZWQgdG8gdGhlIG11bHRpY2FzdCBkYXRhYmFzZS4gTXkgaW5pdGlhbCBpbnZlc3RpZ2F0aW9uIHNob3dzIHRoZXkmIzM5O3JlIHRoZSB0YXJnZXRzLCBhbmQgdGhleSBhcmUgcmVhY2hhYmxlLiBUaGlzIGlzIHdoYXQgSSBleHBlY3QuCgpUaGUgcGF0Y2ggaXRzZWxmIG1vZGlmaWVzIGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYC4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgYHZ4bGFuX21kYl9jb25maWdfc3JjX2VudHJ5X2luaXRgLCBgdnhsYW5fbWRiX2NvbmZpZ19hdHRyc19pbml0YCwgYW5kIGB2eGxhbl9tZGJfZ2V0X3BhcnNlYCwgd2hpY2ggaW4gdHVybiBhcmUgY2FsbGVkIGJ5IHRoZSBjb3JlIGB2eGxhbl9tZGJfYWRkYCwgYHZ4bGFuX21kYl9kZWxgLCBhbmQgYHZ4bGFuX21kYl9nZXRgIGZ1bmN0aW9ucy4gU28sIGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYCBpcyBkZWZpbml0ZWx5IGEgZm9jYWwgcG9pbnQuCgpJIGNvbmZpcm1lZCB0aGF0IGB2eGxhbl9tZGJfYWRkYCAoYW5kIGJ5IGV4dGVuc2lvbiwgdGhlIG90aGVycykgaXNuJiMzOTt0IHN0YXRpYzsgaXQmIzM5O3MgZXhwb3J0ZWQgYW5kIHVzZWQgYXMgYC5uZG9fbWRiX2FkZGAgaW4gYHZ4bGFuX2NvcmUuY2AsIGFjY2Vzc2VkIHRocm91Z2ggdGhlIG5ldGRldiBvcHMuIEEgbmV0bGluayBpbnRlcmZhY2UgcHJvdmlkZXMgdGhlIHVzZXJzcGFjZSBjb25uZWN0aW9uLiBUaGF0JiMzOTtzIGdvb2Q7IGl0IGNvbmZpcm1zIHRoYXQgaXQmIzM5O3MgYSByZWFsIGVudHJ5IHBvaW50LCBhbmQgbXkgYW5hbHlzaXMgaXMgcHJvZ3Jlc3NpbmcgY29ycmVjdGx5LgoKSSBjaGVja2VkIGZvciByZWxldmFudCBjb25maWd1cmF0aW9ucy4gYFZYTEFOYCBpcywgb2J2aW91c2x5LCB0aGUgcHJpbWFyeSBvbmUuIElQdjYgc3VwcG9ydCAoYElQVjZgKSBpcyBhbHNvIG5lY2Vzc2FyeSwgYW5kIGBJTkVUYCBpcyByZXF1aXJlZCBieSBgVlhMQU5gLiBJJiMzOTttIGdvaW5nIHRvIHNldCB1cCBteSBmdXp6aW5nIGVudmlyb25tZW50IHdpdGggdGhlc2UgY29uZmlndXJhdGlvbnMuCgpOb3csIGFib3V0IGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYC4gIExvb2tpbmcgYXQgdGhlIGNvZGUsIGl0JiMzOTtzIHByZXR0eSBjbGVhcjogaXQmIzM5O3MgYWRkaW5nIHZhbGlkYXRpb24gZm9yIE1EQiBzb3VyY2UgYWRkcmVzc2VzLCBzcGVjaWZpY2FsbHkgcHJldmVudGluZyBhbGwtemVyb3MgYWRkcmVzc2VzIChib3RoIElQdjQgYW5kIElQdjYpLiAgVGhlIGNvZGUgc25pcHBldCBpcyBjbGVhbiBhbmQgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyBiZWhhdmlvci4gVGhlIHZhbGlkYXRpb24gbG9naWMgaXRzZWxmIGlzIHNvbGlkLCBjaGVja2luZyBmb3IgbXVsdGljYXN0IGFuZCB6ZXJvIGFkZHJlc3NlcyBmb3IgYm90aCBJUHY0IGFuZCBJUHY2LgoKVGhlIGdvb2QgbmV3cyBpcywgdGhpcyBwYXRoIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGNhbGxzOiBgcnRubF9tZGJfYWRkYCAtJmd0OyBgZGV2LSZndDtuZXRkZXZfb3BzLSZndDtuZG9fbWRiX2FkZGAuICBUaGF0IGdpdmVzIG1lIG15IGF0dGFjayBzdXJmYWNlLgoKVGhlcmVmb3JlLCBteSBhc3Nlc3NtZW50IGlzOiBgV29ydGhGdXp6aW5nOiB0cnVlYC4gIE15IGZvY3VzIHdpbGwgYmUgb24gZnV6emluZyB0aGUgTURCIG5ldGxpbmsgaGFuZGxlcnMgKFJUTV9ORVdNREIsIFJUTV9ERUxNREIsIGFuZCBSVE1fR0VUTURCKSB0byBlbnN1cmUgdGhpcyBuZXcgdmFsaWRhdGlvbiBsb2dpYyBpcyByb2J1c3QgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMgb3IgdnVsbmVyYWJpbGl0aWVzLiBUaGlzIGlzIGEgc29saWQgdGFyZ2V0IGZvciBlbnN1cmluZyB0aGUgbmV0d29yayBzdGFjayYjMzk7cyBzdGFiaWxpdHkgYW5kIHNlY3VyaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VlhMQU4mIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Z4bGFuX21kYl9hZGQmIzM0OywKICAgICYjMzQ7dnhsYW5fbWRiX2RlbCYjMzQ7LAogICAgJiMzNDt2eGxhbl9tZGJfZ2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiB0byBwcmV2ZW50IGFsbC16ZXJvcyBzb3VyY2UgYWRkcmVzc2VzIGluIFZYTEFOIE1EQiAoTXVsdGljYXN0IEZvcndhcmRpbmcgRGF0YWJhc2UpIGVudHJpZXMuIFRoaXMgbG9naWMgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIFJUTV9ORVdNREIsIFJUTV9ERUxNREIsIGFuZCBSVE1fR0VUTURCIGNvbW1hbmRzLiBGdXp6aW5nIHRoZSBNREIgbmV0bGluayBoYW5kbGVycyB3aWxsIGhlbHAgZW5zdXJlIHRoZSBuZXcgdmFsaWRhdGlvbiBsb2dpYyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VlhMQU4mIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Z4bGFuX21kYl9hZGQmIzM0OywKICAgICYjMzQ7dnhsYW5fbWRiX2RlbCYjMzQ7LAogICAgJiMzNDt2eGxhbl9tZGJfZ2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiB0byBwcmV2ZW50IGFsbC16ZXJvcyBzb3VyY2UgYWRkcmVzc2VzIGluIFZYTEFOIE1EQiAoTXVsdGljYXN0IEZvcndhcmRpbmcgRGF0YWJhc2UpIGVudHJpZXMuIFRoaXMgbG9naWMgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIFJUTV9ORVdNREIsIFJUTV9ERUxNREIsIGFuZCBSVE1fR0VUTURCIGNvbW1hbmRzLiBGdXp6aW5nIHRoZSBNREIgbmV0bGluayBoYW5kbGVycyB3aWxsIGhlbHAgZW5zdXJlIHRoZSBuZXcgdmFsaWRhdGlvbiBsb2dpYyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6NDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxNTo0MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gZm9yIG5ldGxpbmsgYXR0cmlidXRlcyBpbiB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlIHRvIHJlamVjdCBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3NlcyAoSU5BRERSX0FOWSBmb3IgSVB2NCBhbmQgaXB2Nl9hZGRyX2FueSBmb3IgSVB2NikuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBtb2RpZnkgc3RydWN0dXJlIGxheW91dHMsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IGxvZ2ljYWwgY2hlY2tzIG9uIGFscmVhZHkgaW5pdGlhbGl6ZWQgZGF0YSBwYXJzZWQgZnJvbSBuZXRsaW5rIG1lc3NhZ2VzLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDFmY2UxYzk4ZjBhZjMwMTAwODk4Mzk0ZGFhZWI2MWFiMDQzNTAzMjQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAyNiAxNTozNzo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMKaW5kZXggZDcxZTE5MjVlY2ZkYi4uNzk4NmM1YjVkYzY3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMKQEAgLTM1NCw2ICYjNDM7MzU0LDEwIEBAIHN0YXRpYyBib29sIHZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgX19iZTE2IHByb3RvLAogCQkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtJUHY0IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZCYjMzQ7KTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQomIzQzOwkJaWYgKG5sYV9nZXRfaW5fYWRkcihhdHRyKSA9PSBodG9ubChJTkFERFJfQU5ZKSkgewomIzQzOwkJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssICYjMzQ7SVB2NCBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3MgaXMgbm90IGFsbG93ZWQmIzM0Oyk7CiYjNDM7CQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJfQogCQlicmVhazsKICNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KQogCWNhc2UgaHRvbnMoRVRIX1BfSVBWNik6IHsKQEAgLTM2OCw2ICYjNDM7MzcyLDEwIEBAIHN0YXRpYyBib29sIHZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgX19iZTE2IHByb3RvLAogCQkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtJUHY2IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZCYjMzQ7KTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQomIzQzOwkJaWYgKGlwdjZfYWRkcl9hbnkoJmFtcDtzcmMpKSB7CiYjNDM7CQkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtJUHY2IGFsbC16ZXJvcyBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZCYjMzQ7KTsKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CQl9CiAJCWJyZWFrOwogCX0KICNlbmRpZgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5MQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDIwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgVlhMQU4gU291cmNlIEFkZHJlc3MgVmFsaWRhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYCB3aXRoaW4gYHZ4bGFuX21kYi5jYC4gSXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkOiB0aGV5JiMzOTtyZSBhZGRpbmcgaW5wdXQgdmFsaWRhdGlvbiBvbiB0aGUgc291cmNlIGFkZHJlc3MgdXNlZCBpbiBuZXRsaW5rIGF0dHJpYnV0ZXMuIEdvb2QuIFRoZSBrZXkgdGhpbmcgaXMgdGhhdCBpdCBleHBsaWNpdGx5IGNoZWNrcyBmb3IgdGhlIGFsbC16ZXJvcyBhZGRyZXNzLCBib3RoIElQdjQgKGBJTkFERFJfQU5ZYCkgYW5kIElQdjYgKGBpcHY2X2FkZHJfYW55YCkuIFNtYXJ0LiBQcmV2ZW50cyBwb3RlbnRpYWwgaXNzdWVzLgoKTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIHRocm91Z2ggdGhlIGNvZGUgSSBjYW4gc2VlIHRoYXQgdGhpcyBpc24mIzM5O3QgaW50cm9kdWNpbmcgYW55IG5hc3RpZXMgbGlrZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgbGVha2luZyBpbmZvcm1hdGlvbiwgb3Igb3Zlcmx5IGNvbXBsaWNhdGVkIGFsbG9jYXRpb25zLiBUaGV5JiMzOTtyZSBqdXN0IHJlYWRpbmcgdGhlIHNvdXJjZSBhZGRyZXNzIGZyb20gdGhlIGF0dHJpYnV0ZSB1c2luZyBzdGFuZGFyZCBuZXRsaW5rIG1ldGhvZHM6IGBubGFfZ2V0X2luX2FkZHIoYXR0cilgIGFuZCBgbmxhX2dldF9pbjZfYWRkcihhdHRyKWAsIHdoaWNoIGlzIHBlcmZlY3RseSBmaW5lLiBgc3JjYCBpcyBpbml0aWFsaXplZCBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIElQdjYgY2hlY2sg4oCTIGBzcmMgPSBubGFfZ2V0X2luNl9hZGRyKGF0dHIpYCBpbiB0aGUgY2FzZSBvZiBJUHY2LCBhcyBJIHJlbWVtYmVyLCBidXQgaXQmIzM5O3Mgd29ydGggYSBzZWNvbmQgbG9vayBhdCB0aGUgcmVsZXZhbnQgcG9ydGlvbiB0byBtYWtlIHN1cmUuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBpdCBpcyBzdGFuZGFyZCBuZXRsaW5rIHBhcnNpbmcuIEhvd2V2ZXIsIEkgc2hvdWxkIHN0aWxsIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb2RlIGp1c3QgdG8gYmUgc2FmZS4gSXQgd291bGQgYmUgYSBzaWxseSBvdmVyc2lnaHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDE1OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Z4bGFuX21kYl9pc192YWxpZF9zb3VyY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0zMjc9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHZ4bGFuX21kYmVfYXR0cnNfcG9sW01EQkVfQVRUUl9NQVggJiM0MzsgMV0gPSB7XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMzQzLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MzQ0OnN0YXRpYyBib29sIHZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgX19iZTE2IHByb3RvLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMzQ1LVx0XHRcdFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTQyMT1zdGF0aWMgaW50IHZ4bGFuX21kYl9jb25maWdfc3JjX2VudHJ5X2luaXQoc3RydWN0IHZ4bGFuX21kYl9jb25maWcgKmNmZyxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy00MzctXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzo0Mzg6XHRpZiAoIXZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UodGJbTURCRV9TUkNBVFRSX0FERFJFU1NdLCBwcm90byxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTQzOS1cdFx0XHRcdCAgICAgICBleHRhY2spKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTQ5OD1zdGF0aWMgaW50IHZ4bGFuX21kYl9jb25maWdfYXR0cnNfaW5pdChzdHJ1Y3QgdnhsYW5fbWRiX2NvbmZpZyAqY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTUxNi1cdGlmIChtZGJlX2F0dHJzW01EQkVfQVRUUl9TT1VSQ0VdIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6NTE3Olx0ICAgICF2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlKG1kYmVfYXR0cnNbTURCRV9BVFRSX1NPVVJDRV0sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy01MTgtXHRcdFx0XHQgICAgICAgZW50cnktXHUwMDNlYWRkci5wcm90bywgZXh0YWNrKSlcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0xNDgwPXN0YXRpYyBpbnQgdnhsYW5fbWRiX2dldF9wYXJzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE1MDMtXHRpZiAobWRiZV9hdHRyc1tNREJFX0FUVFJfU09VUkNFXSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjE1MDQ6XHQgICAgIXZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UobWRiZV9hdHRyc1tNREJFX0FUVFJfU09VUkNFXSxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE1MDUtXHRcdFx0XHQgICAgICAgZW50cnktXHUwMDNlYWRkci5wcm90bywgZXh0YWNrKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMzOAoJCQkJCQkJb3V0cHV0OiAxMzEKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOZXRsaW5rIEF0dHJpYnV0ZSBWYWxpZGF0aW9uIGFuZCBNZW1vcnkgQ29uY2VybnMqKgoKT2theSwgc28gSSYjMzk7dmUgcmV2aWV3ZWQgdGhpcyBwYXRjaCBhbmQgSSYjMzk7bSBzZWVpbmcgdGhhdCBpdCYjMzk7cyBpbnRyb2R1Y2luZyBzb21lIG5lY2Vzc2FyeSB2YWxpZGF0aW9uIGZvciB0aGUgbmV0bGluayBhdHRyaWJ1dGVzLiBUaGF0JiMzOTtzIGdvb2QsIGFsd2F5cyBhIGNydWNpYWwgc3RlcCBmb3IgbWFpbnRhaW5pbmcgc3lzdGVtIGludGVncml0eSBhbmQgcHJldmVudGluZyBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBGcm9tIHdoYXQgSSYjMzk7bSByZWFkaW5nLCBpdCBkb2VzbiYjMzk7dCBhcHBlYXIgdG8gYmUgY3JlYXRpbmcgYW55IG5ldyBhdmVudWVzIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMsIHdoaWNoIGlzIGV4Y2VsbGVudC4gSSYjMzk7bSBhbHdheXMgaHlwZXItdmlnaWxhbnQgYWJvdXQgdGhhdC4gVGhlcmVmb3JlLCBiYXNlZCBvbiBteSBhc3Nlc3NtZW50LCBJJiMzOTtsbCBnbyBhaGVhZCBhbmQgc2V0IGBOZWVkc0tNU0FOPWZhbHNlYC4gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgcGF0Y2ggZG9lc24mIzM5O3Qgd2FycmFudCBmdXJ0aGVyIGludmVzdGlnYXRpb24gZnJvbSBhIGtlcm5lbCBtZW1vcnkgc2FuaXRpemVyIHBlcnNwZWN0aXZlLCBnaXZlbiB0aGUgYWJzZW5jZSBvZiBhbnkgcmVhZGlseSBhcHBhcmVudCBtZW1vcnktcmVsYXRlZCBjb25jZXJucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTU6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBpbnB1dCB2YWxpZGF0aW9uIGZvciBuZXRsaW5rIGF0dHJpYnV0ZXMgaW4gdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZSB0byByZWplY3QgYWxsLXplcm9zIHNvdXJjZSBhZGRyZXNzZXMgKElOQUREUl9BTlkgZm9yIElQdjQgYW5kIGlwdjZfYWRkcl9hbnkgZm9yIElQdjYpLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgbW9kaWZ5IHN0cnVjdHVyZSBsYXlvdXRzLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZS4gVGhlIGNoYW5nZXMgYXJlIHB1cmVseSBsb2dpY2FsIGNoZWNrcyBvbiBhbHJlYWR5IGluaXRpYWxpemVkIGRhdGEgcGFyc2VkIGZyb20gbmV0bGluayBtZXNzYWdlcy4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBpbnB1dCB2YWxpZGF0aW9uIGZvciBuZXRsaW5rIGF0dHJpYnV0ZXMgaW4gdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZSB0byByZWplY3QgYWxsLXplcm9zIHNvdXJjZSBhZGRyZXNzZXMgKElOQUREUl9BTlkgZm9yIElQdjQgYW5kIGlwdjZfYWRkcl9hbnkgZm9yIElQdjYpLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgbW9kaWZ5IHN0cnVjdHVyZSBsYXlvdXRzLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZS4gVGhlIGNoYW5nZXMgYXJlIHB1cmVseSBsb2dpY2FsIGNoZWNrcyBvbiBhbHJlYWR5IGluaXRpYWxpemVkIGRhdGEgcGFyc2VkIGZyb20gbmV0bGluayBtZXNzYWdlcy4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNTozNzo0My43MTYxMjE3MzVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODA0NDkxMTk1NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVlhMQU5cIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2eGxhbl9tZGJfYWRkXCIsXG4gICAgXCJ2eGxhbl9tZGJfZGVsXCIsXG4gICAgXCJ2eGxhbl9tZGJfZ2V0XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gZm9yIG5ldGxpbmsgYXR0cmlidXRlcyBpbiB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlIHRvIHJlamVjdCBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3NlcyAoSU5BRERSX0FOWSBmb3IgSVB2NCBhbmQgaXB2Nl9hZGRyX2FueSBmb3IgSVB2NikuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBtb2RpZnkgc3RydWN0dXJlIGxheW91dHMsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IGxvZ2ljYWwgY2hlY2tzIG9uIGFscmVhZHkgaW5pdGlhbGl6ZWQgZGF0YSBwYXJzZWQgZnJvbSBuZXRsaW5rIG1lc3NhZ2VzLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIHRvIHByZXZlbnQgYWxsLXplcm9zIHNvdXJjZSBhZGRyZXNzZXMgaW4gVlhMQU4gTURCIChNdWx0aWNhc3QgRm9yd2FyZGluZyBEYXRhYmFzZSkgZW50cmllcy4gVGhpcyBsb2dpYyBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgUlRNX05FV01EQiwgUlRNX0RFTE1EQiwgYW5kIFJUTV9HRVRNREIgY29tbWFuZHMuIEZ1enppbmcgdGhlIE1EQiBuZXRsaW5rIGhhbmRsZXJzIHdpbGwgaGVscCBlbnN1cmUgdGhlIG5ldyB2YWxpZGF0aW9uIGxvZ2ljIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjM3OjQzLjcxNjEyNjY3NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc0MzYwMTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMWZjZTFjOThmMGFmMzAxMDA4OTgzOTRkYWFlYjYxYWIwNDM1MDMyNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAyNiAxNTozNzo0MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jXFxuaW5kZXggZDcxZTE5MjVlY2ZkYi4uNzk4NmM1YjVkYzY3NSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jXFxuQEAgLTM1NCw2ICszNTQsMTAgQEAgc3RhdGljIGJvb2wgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZShjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBfX2JlMTYgcHJvdG8sXFxuIFxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJJUHY0IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZFxcXCIpO1xcbiBcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcdFxcdH1cXG4rXFx0XFx0aWYgKG5sYV9nZXRfaW5fYWRkcihhdHRyKSA9PSBodG9ubChJTkFERFJfQU5ZKSkge1xcbitcXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwiSVB2NCBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3MgaXMgbm90IGFsbG93ZWRcXFwiKTtcXG4rXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRcXHR9XFxuIFxcdFxcdGJyZWFrO1xcbiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcXG4gXFx0Y2FzZSBodG9ucyhFVEhfUF9JUFY2KToge1xcbkBAIC0zNjgsNiArMzcyLDEwIEBAIHN0YXRpYyBib29sIHZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgX19iZTE2IHByb3RvLFxcbiBcXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwiSVB2NiBtdWx0aWNhc3Qgc291cmNlIGFkZHJlc3MgaXMgbm90IGFsbG93ZWRcXFwiKTtcXG4gXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXHRcXHR9XFxuK1xcdFxcdGlmIChpcHY2X2FkZHJfYW55KFxcdTAwMjZzcmMpKSB7XFxuK1xcdFxcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJJUHY2IGFsbC16ZXJvcyBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZFxcXCIpO1xcbitcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdH1cXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjM3OjQ0LjA5MTM0OTE5OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE2NTA0OTU4OTM1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiLFxuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZ4bGFuX21kYl9hZGRcIixcbiAgICBcInZ4bGFuX21kYl9kZWxcIixcbiAgICBcInZ4bGFuX21kYl9nZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gdG8gcHJldmVudCBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3NlcyBpbiBWWExBTiBNREIgKE11bHRpY2FzdCBGb3J3YXJkaW5nIERhdGFiYXNlKSBlbnRyaWVzLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayBSVE1fTkVXTURCLCBSVE1fREVMTURCLCBhbmQgUlRNX0dFVE1EQiBjb21tYW5kcy4gRnV6emluZyB0aGUgTURCIG5ldGxpbmsgaGFuZGxlcnMgd2lsbCBoZWxwIGVuc3VyZSB0aGUgbmV3IHZhbGlkYXRpb24gbG9naWMgd29ya3MgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMWZjZTFjOThmMGFmMzAxMDA4OTgzOTRkYWFlYjYxYWIwNDM1MDMyNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDE1OjM3OjQyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuY1xuaW5kZXggZDcxZTE5MjVlY2ZkYi4uNzk4NmM1YjVkYzY3NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jXG4rKysgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuY1xuQEAgLTM1NCw2ICszNTQsMTAgQEAgc3RhdGljIGJvb2wgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZShjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBfX2JlMTYgcHJvdG8sXG4gXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJJUHY0IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZFwiKTtcbiBcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRcdH1cbitcdFx0aWYgKG5sYV9nZXRfaW5fYWRkcihhdHRyKSA9PSBodG9ubChJTkFERFJfQU5ZKSkge1xuK1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiSVB2NCBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3MgaXMgbm90IGFsbG93ZWRcIik7XG4rXHRcdFx0cmV0dXJuIGZhbHNlO1xuK1x0XHR9XG4gXHRcdGJyZWFrO1xuICNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuIFx0Y2FzZSBodG9ucyhFVEhfUF9JUFY2KToge1xuQEAgLTM2OCw2ICszNzIsMTAgQEAgc3RhdGljIGJvb2wgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZShjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBfX2JlMTYgcHJvdG8sXG4gXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJJUHY2IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZFwiKTtcbiBcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRcdH1cbitcdFx0aWYgKGlwdjZfYWRkcl9hbnkoXHUwMDI2c3JjKSkge1xuK1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiSVB2NiBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3MgaXMgbm90IGFsbG93ZWRcIik7XG4rXHRcdFx0cmV0dXJuIGZhbHNlO1xuK1x0XHR9XG4gXHRcdGJyZWFrO1xuIFx0fVxuICNlbmRpZlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6Mzc6NDQuMDkxMzUwODE5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY1NTE3MDA4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZYTEFOIE1EQiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuY2AuIEl0IHNlZW1zIHRoZXkndmUgYWRkZWQgc29tZSBjaGVja3MgZm9yIGBJTkFERFJfQU5ZYCBhbmQgYGlwdjZfYWRkcl9hbnlgIHdpdGhpbiB0aGUgYHZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2VgIGZ1bmN0aW9uLiBUaGF0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseS4gSXQncyB0d2Vha2luZyB0aGUgTURCLCB0aGUgTXVsdGljYXN0IEZvcndhcmRpbmcgRGF0YWJhc2UsIHdoaWNoIGlzIGNydWNpYWwgZm9yIFZYTEFOJ3MgbXVsdGljYXN0IGhhbmRsaW5nLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGF0J3MgdGhlICpjb250ZXh0KiBoZXJlP1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYCBpcyBiZWluZyBjYWxsZWQgYW5kIHVuZGVyIHdoYXQgY29uZGl0aW9ucy4gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBtdWx0aWNhc3QsIG9yIHBlcmhhcHMgYW55IHNwZWNpZmljIFZYTEFOIHNldHVwLCB0aGF0IHRoaXMgY2hhbmdlIGlzIGFkZHJlc3Npbmc/IEkgd2FudCB0byBzZWUgaWYgdGhpcyBpcyB0YXJnZXRlZCBhdCBhIHBhcnRpY3VsYXIgdXNlIGNhc2Ugb3IgaWYgaXQncyBhIG1vcmUgZ2VuZXJhbCBpbXByb3ZlbWVudC4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGNoYWluIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgYWRkZWQgY2hlY2tzLiBDb250ZXh0IGlzIGtleSB0byBwcm9wZXJseSBhc3Nlc3MgaXRzIGltcGFjdCBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5NCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjM3OjUwLjc0NjUyMzkzMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzg4NjEyNzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9MzI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB2eGxhbl9tZGJlX2F0dHJzX3BvbFtNREJFX0FUVFJfTUFYICsgMV0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0zNDMtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MzQ0OnN0YXRpYyBib29sIHZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgX19iZTE2IHByb3RvLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTM0NS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz00MjE9c3RhdGljIGludCB2eGxhbl9tZGJfY29uZmlnX3NyY19lbnRyeV9pbml0KHN0cnVjdCB2eGxhbl9tZGJfY29uZmlnICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy00MzctXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6NDM4OlxcdGlmICghdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZSh0YltNREJFX1NSQ0FUVFJfQUREUkVTU10sIHByb3RvLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTQzOS1cXHRcXHRcXHRcXHQgICAgICAgZXh0YWNrKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTQ5OD1zdGF0aWMgaW50IHZ4bGFuX21kYl9jb25maWdfYXR0cnNfaW5pdChzdHJ1Y3QgdnhsYW5fbWRiX2NvbmZpZyAqY2ZnLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtNTE2LVxcdGlmIChtZGJlX2F0dHJzW01EQkVfQVRUUl9TT1VSQ0VdIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6NTE3OlxcdCAgICAhdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZShtZGJlX2F0dHJzW01EQkVfQVRUUl9TT1VSQ0VdLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTUxOC1cXHRcXHRcXHRcXHQgICAgICAgZW50cnktXFx1MDAzZWFkZHIucHJvdG8sIGV4dGFjaykpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0xNDgwPXN0YXRpYyBpbnQgdnhsYW5fbWRiX2dldF9wYXJzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTUwMy1cXHRpZiAobWRiZV9hdHRyc1tNREJFX0FUVFJfU09VUkNFXSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjE1MDQ6XFx0ICAgICF2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlKG1kYmVfYXR0cnNbTURCRV9BVFRSX1NPVVJDRV0sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTUwNS1cXHRcXHRcXHRcXHQgICAgICAgZW50cnktXFx1MDAzZWFkZHIucHJvdG8sIGV4dGFjaykpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjM3OjUyLjUzNTE0MzY2OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0OTEyNjU2MDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBWWExBTiBNREIgSW5pdGlhbGl6YXRpb24gYW5kIFBhcnNpbmcqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGEgZmV3IHBsYWNlczogYHZ4bGFuX21kYl9jb25maWdfc3JjX2VudHJ5X2luaXRgLCBgdnhsYW5fbWRiX2NvbmZpZ19hdHRyc19pbml0YCwgYW5kIGB2eGxhbl9tZGJfZ2V0X3BhcnNlYC4gQmFzZWQgb24gdGhlIG5hbWluZywgbXkgaW1tZWRpYXRlIGFzc3VtcHRpb24gaXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGludm9sdmVkIGluIGhhbmRsaW5nIG5ldGxpbmsgbWVzc2FnZXMgcmVsYXRlZCB0byBWWExBTiBNdWx0aWNhc3QgRGF0YSBCYXNlIChNREIpIG9wZXJhdGlvbnMuIFRoYXQgbWFrZXMgc2Vuc2UsIGdpdmVuIHRoZSBjb250ZXh0LiBUbyBjb25maXJtIHRoaXMsIEkgc2hvdWxkIHJlYWxseSBkaWcgaW50byBob3cgYHZ4bGFuX21kYl9jb25maWdfYXR0cnNfaW5pdGAgYW5kIGB2eGxhbl9tZGJfZ2V0X3BhcnNlYCBhcmUgdXNlZCwgYXMgdGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBwYXJzaW5nIGludm9sdmVkIHdpdGggc2V0dGluZyB1cCBvciBxdWVyeWluZyB0aGUgTURCLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTgwLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6Mzg6MTcuNDQ3ODAxNjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA5MTc0MzkyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2eGxhbl9tZGJfY29uZmlnX2F0dHJzX2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9NDkwPXN0YXRpYyB2b2lkIHZ4bGFuX21kYl9jb25maWdfc3JjX2xpc3RfZmluaShzdHJ1Y3QgdnhsYW5fbWRiX2NvbmZpZyAqY2ZnKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtNDk3LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjQ5ODpzdGF0aWMgaW50IHZ4bGFuX21kYl9jb25maWdfYXR0cnNfaW5pdChzdHJ1Y3QgdnhsYW5fbWRiX2NvbmZpZyAqY2ZnLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTQ5OS1cXHRcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGJyX21kYl9lbnRyeSAqZW50cnksXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz02MDk9c3RhdGljIGludCB2eGxhbl9tZGJfY29uZmlnX2luaXQoc3RydWN0IHZ4bGFuX21kYl9jb25maWcgKmNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTY2MS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzo2NjI6XFx0cmV0dXJuIHZ4bGFuX21kYl9jb25maWdfYXR0cnNfaW5pdChjZmcsIGVudHJ5LCB0YltNREJBX1NFVF9FTlRSWV9BVFRSU10sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtNjYzLVxcdFxcdFxcdFxcdFxcdCAgIGV4dGFjayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjM4OjE5LjUzOTU1MDQyM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNjg3NTMzMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdW5kZXJzdGFuZGluZywgYXMgaWYgaXQgd2VyZSBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqVW5kZXJzdGFuZGluZyB0aGUgVlhMQU4gTXVsdGljYXN0IERhdGFiYXNlIENvbmZpZ3VyYXRpb24gSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGB2eGxhbl9tZGJfY29uZmlnX2luaXRgIGlzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgVlhMQU4gbXVsdGljYXN0IGRhdGFiYXNlIG1hbmFnZW1lbnQuIFdoYXQncyBpbXBvcnRhbnQgdG8gZ3Jhc3AgaW1tZWRpYXRlbHkgaXMgd2hlcmUgaXQncyBjYWxsZWQgZnJvbS4gSXQgbG9va3MgbGlrZSBpdCdzIGludm9rZWQgYnkgYm90aCBgdnhsYW5fbWRiX2FkZGAgYW5kIGB2eGxhbl9tZGJfZGVsYC4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGF0IGB2eGxhbl9tZGJfY29uZmlnX2luaXRgIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIG9yIHJlc2V0dGluZyB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIHRoZSBtdWx0aWNhc3QgZGF0YWJhc2Ugd2hlbmV2ZXIgYSBuZXcgZW50cnkgaXMgYWRkZWQgb3IgYW4gZXhpc3Rpbmcgb25lIGlzIHJlbW92ZWQuIEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGFjdHVhbCBmdW5jdGlvbiB0byB1bmRlcnN0YW5kIHByZWNpc2VseSB3aGF0IHRoaXMgaW5pdGlhbGl6YXRpb24gZW50YWlscyDigJMgdGhpbmdzIGxpa2UgbWVtb3J5IGFsbG9jYXRpb24sIGRlZmF1bHQgdmFsdWVzLCBvciBwZXJoYXBzIGV2ZW4gcmVzb3VyY2UgbG9ja2luZy4gS25vd2luZyB0aGlzIHVwZnJvbnQgZ2l2ZXMgbWUgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgdHJvdWJsZXNob290aW5nIG9yIG1vZGlmaWNhdGlvbiBkb3duIHRoZSBsaW5lIHdoZW4gZGVhbGluZyB3aXRoIFZYTEFOIG11bHRpY2FzdCBvcGVyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzQwLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6Mzg6MjIuNzA4MzA1NjkxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NTUwMjc4NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5fbWRiX2NvbmZpZ19pbml0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTQ5OD1zdGF0aWMgaW50IHZ4bGFuX21kYl9jb25maWdfYXR0cnNfaW5pdChzdHJ1Y3QgdnhsYW5fbWRiX2NvbmZpZyAqY2ZnLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtNjA4LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjYwOTpzdGF0aWMgaW50IHZ4bGFuX21kYl9jb25maWdfaW5pdChzdHJ1Y3QgdnhsYW5fbWRiX2NvbmZpZyAqY2ZnLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTYxMC1cXHRcXHRcXHRcXHQgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTEyOTU9aW50IHZ4bGFuX21kYl9hZGQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSwgdTE2IG5sbXNnX2ZsYWdzLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTMwMi1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxMzAzOlxcdGVyciA9IHZ4bGFuX21kYl9jb25maWdfaW5pdChcXHUwMDI2Y2ZnLCBkZXYsIHRiLCBubG1zZ19mbGFncywgZXh0YWNrKTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xMzA0LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0xMzEzPWludCB2eGxhbl9tZGJfZGVsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xMzIwLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjEzMjE6XFx0ZXJyID0gdnhsYW5fbWRiX2NvbmZpZ19pbml0KFxcdTAwMjZjZmcsIGRldiwgdGIsIDAsIGV4dGFjayk7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTMyMi1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNTozODoyNC4zNjMzNDA0NzJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzE1NTY1NTIwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgdGFpbG9yZWQgZm9yIG15IGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipFeGFtaW5pbmcgVlhMQU4gTXVsdGljYXN0IERhdGFiYXNlIE9wZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgVlhMQU4gbXVsdGljYXN0IGRhdGEgaXMgaGFuZGxlZCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBmdW5jdGlvbnMgYHZ4bGFuX21kYl9hZGRgIGFuZCBgdnhsYW5fbWRiX2RlbGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlRoZXNlIGFyZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3MgZm9yIG1hbmFnaW5nIHRoZSBtdWx0aWNhc3QgZGF0YWJhc2Ugd2l0aGluIHRoZSBWWExBTiBtb2R1bGUuXCIgR2l2ZW4gdGhlaXIgbmFtZXMsIEknbSBhc3N1bWluZyBgYWRkYCBpcyBmb3IgY3JlYXRpbmcgbmV3IGVudHJpZXMgZm9yIG11bHRpY2FzdCBncm91cHMsIGFuZCBgZGVsYCBpcyB0byByZW1vdmUgdGhlbSwgcHJvYmFibHkgZm9yIGNsZWFudXAgb3Igd2hlbiBhIFZOSSBpcyBubyBsb25nZXIgYWN0aXZlIG9uIGEgZ2l2ZW4gbm9kZS5cblxuVGhlIGZhY3QgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGV4cGxpY2l0bHkgKmV4cG9ydGVkKiBvciAqdXNlZCogd2l0aGluIGB2eGxhbl9jb3JlLmNgIChvciBhIHNpbWlsYXIsIGNvcmUgVlhMQU4gZmlsZSkgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhhdCB0aGlzIGlzIGEgY3JpdGljYWwgc2VjdGlvbiBvZiB0aGUgY29kZS4gVGhpcyBmdW5jdGlvbiBsaWtlbHkgc2l0cyBhdCB0aGUgaGVhcnQgb2YgaG93IG11bHRpY2FzdCB0cmFmZmljIGlzIHJlcGxpY2F0ZWQgYW5kIGZvcndhcmRlZCB3aXRoaW4gdGhlIFZYTEFOIG5ldHdvcmssIGFuZCBhbnkgaXNzdWVzIG9yIGluZWZmaWNpZW5jaWVzIGhlcmUgd291bGQgaGF2ZSBhIHNpZ25pZmljYW50IGltcGFjdCBvbiBvdmVyYWxsIHBlcmZvcm1hbmNlIGFuZCBzY2FsYWJpbGl0eS4gVGhpcyBjb3JlIGZpbGUgb3Igc2VjdGlvbiBpcyBsaWtlbHkgd2hlcmUgdGhlIG11bHRpY2FzdCBncm91cCBtZW1iZXJzaGlwLCB0aGUgbWFwcGluZyBmcm9tIFZOSXMgdG8gcGh5c2ljYWwgbmV0d29yayBkZXN0aW5hdGlvbiBncm91cHMsIGFuZCB0aGUgYXNzb2NpYXRlZCBkYXRhIHN0cnVjdHVyZXMgYXJlIG1hbmFnZWQuIFRpbWUgdG8gZ28gZGlnIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDE2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6Mzg6NDEuNTE4OTk4MTg3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzYzMzE2NTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ4bGFuX21kYl9hZGRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMyOTE9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB2eGxhbl9uZXRkZXZfZXRoZXJfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMzMDUtXFx0Lm5kb19mZGJfZ2V0XFx0XFx0PSB2eGxhbl9mZGJfZ2V0LFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMzA2OlxcdC5uZG9fbWRiX2FkZFxcdFxcdD0gdnhsYW5fbWRiX2FkZCxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzMwNy1cXHQubmRvX21kYl9kZWxcXHRcXHQ9IHZ4bGFuX21kYl9kZWwsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz04Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHJoYXNodGFibGVfcGFyYW1zIHZ4bGFuX21kYl9yaHRfcGFyYW1zID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtOTItXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6OTM6c3RhdGljIGludCBfX3Z4bGFuX21kYl9hZGQoY29uc3Qgc3RydWN0IHZ4bGFuX21kYl9jb25maWcgKmNmZyxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy05NC1cXHRcXHRcXHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9Nzk3PXZ4bGFuX21kYl9yZW1vdGVfc3JjX2Z3ZF9hZGQoY29uc3Qgc3RydWN0IHZ4bGFuX21kYl9jb25maWcgKmNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTgxOC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzo4MTk6XFx0cmV0dXJuIF9fdnhsYW5fbWRiX2FkZChcXHUwMDI2c2dfY2ZnLCBleHRhY2spO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTgyMC19XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0xMjI5PXN0YXRpYyB2b2lkIHZ4bGFuX21kYl9lbnRyeV9wdXQoc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xMjQzLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjEyNDQ6c3RhdGljIGludCBfX3Z4bGFuX21kYl9hZGQoY29uc3Qgc3RydWN0IHZ4bGFuX21kYl9jb25maWcgKmNmZyxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xMjQ1LVxcdFxcdFxcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTEyNjg9c3RhdGljIGludCBfX3Z4bGFuX21kYl9kZWwoY29uc3Qgc3RydWN0IHZ4bGFuX21kYl9jb25maWcgKmNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTEyOTQtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTI5NTppbnQgdnhsYW5fbWRiX2FkZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLCB1MTYgbmxtc2dfZmxhZ3MsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTI5Ni1cXHRcXHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTEzMDYtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTMwNzpcXHRlcnIgPSBfX3Z4bGFuX21kYl9hZGQoXFx1MDAyNmNmZywgZXh0YWNrKTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xMzA4LVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oPTIzMz1pbnQgdnhsYW5fbWRiX2R1bXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9wcml2YXRlLmgtMjM0LVxcdFxcdCAgIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oOjIzNTppbnQgdnhsYW5fbWRiX2FkZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLCB1MTYgbmxtc2dfZmxhZ3MsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oLTIzNi1cXHRcXHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjM4OjQzLjI4MjMyNDkxNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODE2OTYwMDcxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWWExBTiBNREIgRW50cnkgVmFsaWRhdGlvbioqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBgdnhsYW5fbWRiX2FkZGAgaXMgYmVpbmcgdXNlZCBhcyB0aGUgYC5uZG9fbWRiX2FkZGAgZnVuY3Rpb24gd2l0aGluIHRoZSBgdnhsYW5fbmV0ZGV2X2V0aGVyX29wc2Agc3RydWN0dXJlLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIG5ldGxpbmssIHNwZWNpZmljYWxseSB3aXRoIHRoZSBgUlRNX05FV01EQmAgbWVzc2FnZSB0eXBlLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5UaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIHRoZSBhZGRpdGlvbiBvZiBhIGNoZWNrIGZvciBgSU5BRERSX0FOWWAgYW5kIGBpcHY2X2FkZHJfYW55YCB3aXRoaW4gdGhlIGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYCBmdW5jdGlvbi4gRnVuY3Rpb25hbGx5LCB0aGlzIHByZXZlbnRzIHRoZSBhZGRpdGlvbiBvZiBNdWx0aWNhc3QgRGF0YWJhc2UgKE1EQikgZW50cmllcyB0aGF0IGhhdmUgYW4gYWxsLXplcm9zIHNvdXJjZSBhZGRyZXNzLiBUaGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSB2YWxpZCBhZGRpdGlvbiwgYW5kIEkgc2VlIHRoZSByZWFzb25pbmcuXG5cbkdpdmVuIHRoaXMgbmV3IGNvZGUgcGF0aCwgYW5kIHRoZSBmYWN0IHRoYXQgaXQncyBuZXRsaW5rIGZhY2luZywgZnV6emluZyBpcyBhYnNvbHV0ZWx5IHdhcnJhbnRlZCBoZXJlLiBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBuZXRsaW5rIHBhcnNpbmcsIHRoZSBNREIgaGFuZGxpbmcgbG9naWMsIGFuZCBub3cgKnRoaXMqIGNoZWNrIGFyZSBhbGwgcm9idXN0IGFuZCBkb24ndCBpbnRyb2R1Y2UgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMuIEkgbmVlZCB0byBnZXQgdGhpcyBpbnRvIG15IGZ1enppbmcgc3RyYXRlZ3kgYW5kIHRhcmdldCB0aGlzIHNwZWNpZmljIGNvZGUgcGF0aCB0byBleGVyY2lzZSBpdC5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgYXJlIHJlcXVpcmVkIHRvIGdldCBWWExBTiB3b3JraW5nIHByb3Blcmx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjU3LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjM5OjIxLjQ1MTkyOTAzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTg5NjkzODM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWWExBTlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTIxNj1jb25maWcgSVBWVEFQXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIyOS1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzMDpjb25maWcgVlhMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMS1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBlWHRlbnNpYmxlIExvY2FsIEFyZWEgTmV0d29yayAoVlhMQU4pXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNTozOToyMy40NDE2Mjg1MDdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU5NTA2MDQ2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqVlhMQU4gRGVwZW5kZW5jaWVzOiBBIFF1aWNrIE1lbnRhbCBDaGVjayoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBWWExBTiByaWdodCBub3cuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIG1lbnRhbGx5IG1hcCBvdXQgaXRzIGRlcGVuZGVuY2llcy4gV2hhdCBhcmUgdGhlIGZvdW5kYXRpb25hbCBlbGVtZW50cyB0aGlzIHRoaW5nIGlzIGJ1aWx0IG9uPyBJIG5lZWQgdG8gcXVpY2tseSBydW4gdGhyb3VnaCB0aGUgdW5kZXJseWluZyB0ZWNobm9sb2dpZXMgYW5kIG1ha2Ugc3VyZSBJIGhhdmUgYSBzb2xpZCBncmFzcCBvbiBldmVyeXRoaW5nIHRoYXQgVlhMQU4gbGV2ZXJhZ2VzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtaW5kIG9uIHRoZSBjcml0aWNhbCBjb21wb25lbnRzIGFuZCBob3cgdGhleSBpbnRlcmFjdC4gVGhpcyBpcyBwcmV0dHkgZnVuZGFtZW50YWwgc3R1ZmYsIGJ1dCBpdCdzIGFsd2F5cyBnb29kIHRvIGhhdmUgdGhhdCBiYXNlLWxldmVsIHVuZGVyc3RhbmRpbmcgcHJlc2VudC4gR290dGEgZW5zdXJlIEknbSByZW1lbWJlcmluZyB0aGUga2V5IHBpZWNlcyBhbmQgdGhlaXIgcm9sZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxOTIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNTozOToyNy4wMzY2OTE5MzhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMzA6XFx0Y29uZmlnIFZYTEFOXFxuIDIzMTpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBlWHRlbnNpYmxlIExvY2FsIEFyZWEgTmV0d29yayAoVlhMQU4pXFxcIlxcbiAyMzI6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDIzMzpcXHRcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4gMjM0OlxcdFxcdHNlbGVjdCBHUk9fQ0VMTFNcXG4gMjM1OlxcdFxcdGhlbHBcXG4gMjM2OlxcdFxcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSB2eGxhbiB2aXJ0dWFsIGludGVyZmFjZXMgdGhhdCBwcm92aWRlXFxuIDIzNzpcXHRcXHQgIExheWVyIDIgTmV0d29ya3Mgb3ZlciBMYXllciAzIE5ldHdvcmtzLiBWWExBTiBpcyBvZnRlbiB1c2VkXFxuIDIzODpcXHRcXHQgIHRvIHR1bm5lbCB2aXJ0dWFsIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxcbiAyMzk6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWU6XFxuIDI0MDpcXHRcXHQgICAgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtbWFoYWxpbmdhbS1kdXR0LWRjb3BzLXZ4bGFuLTAyXFxuIDI0MTpcXHRcXG4gMjQyOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAyNDM6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCB2eGxhbi5cXG4gMjQ0OlxcdFxcbiAyNDU6XFx0Y29uZmlnIEdFTkVWRVxcbiAyNDY6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgTmV0d29yayBWaXJ0dWFsaXphdGlvbiBFbmNhcHN1bGF0aW9uXFxcIlxcbiAyNDc6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDI0ODpcXHRcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4gMjQ5OlxcdFxcdHNlbGVjdCBHUk9fQ0VMTFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6Mzk6MjcuMDM2NzY4OTg4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NDgxMzM4Njc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFZYTEFOIENvbmZpZ3VyYXRpb24gSm91cm5leSoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJdCdzIGNsZWFyIHRoYXQgdG8gZ2V0IGBWWExBTmAgaHVtbWluZywgSSdtIGdvaW5nIHRvIG5lZWQgdG8gaGF2ZSBgSU5FVGAgdXAgYW5kIHJ1bm5pbmcuIEEgbm8tYnJhaW5lciwgcmVhbGx5LiBOb3csIHRoZSBuZXh0IHN0ZXAgaXMgdG8gYWN0dWFsbHkgKmVuYWJsZSogYFZYTEFOYC4gU2ltcGxlIGVub3VnaC5cblxuQnV0IGJlZm9yZSBJIGdldCB0b28gZmFyLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkndmUgZG90dGVkIGFsbCBteSBpJ3MgYW5kIGNyb3NzZWQgYWxsIG15IHQncy4gVGhhdCBtZWFucyByZXZpc2l0aW5nIGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYC4gR290dGEgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgaGlkZGVuIGNvbmZpZyBsYW5kbWluZXMgbHVya2luZyBpbiB0aGVyZS4gQWgsIGFuZCBoZXJlIHdlIGdvLiBUaGUgY29kZSdzIGdvdCBhIGNvbmRpdGlvbmFsIGNoZWNrIGAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilgLiBTbywgdG8gYXZvaWQgc3VycHJpc2VzIGRvd24gdGhlIGxpbmUsIEknbGwgbmVlZCB0byBlbmFibGUgYElQVjZgIGFzIHdlbGwuIFRoYXTigJlzIHByb2JhYmx5IHRoZSByaWdodCB0aGluZyB0byBkbyBhbnl3YXksIGZyb20gYSBmdXR1cmUtcHJvb2ZpbmcgcGVyc3BlY3RpdmUuXG5cbk5vdywgbGV0J3Mgc2hhcnBlbiBvdXIgZm9jdXMuIFRoZSBrZXkgZnVuY3Rpb25zIGhlcmUgYXJlIGB2eGxhbl9tZGJfYWRkYCwgYHZ4bGFuX21kYl9kZWxgLCBhbmQsIHBhcnRpY3VsYXJseSwgYHZ4bGFuX21kYl9nZXRfcGFyc2VgIOKAkyB0aGF0IG9uZSBzbWVsbHMgbGlrZSBhIGNyaXRpY2FsIGVudHJ5IHBvaW50LiBJdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGJlaW5nIHVzZWQgdGhyb3VnaG91dCB0aGUgc3lzdGVtLiBJJ20gZ29pbmcgdG8gZGl2ZSBpbnRvIHRoZSBjYWxsIGdyYXBoIGZvciBgdnhsYW5fbWRiX2dldF9wYXJzZWAgbmV4dC4gR290dGEgdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Njg0LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6NDA6MDIuNTE4MTEwNzc1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODI1MDI2NDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ4bGFuX21kYl9nZXRfcGFyc2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9MTQ3Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdnhsYW5fbWRiZV9hdHRyc19nZXRfcG9sW01EQkVfQVRUUl9NQVggKyAxXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE0NzktXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTQ4MDpzdGF0aWMgaW50IHZ4bGFuX21kYl9nZXRfcGFyc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNDgxLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgdnhsYW5fbWRiX2VudHJ5X2tleSAqZ3JvdXAsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0xNTg1PWludCB2eGxhbl9tZGJfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sIHUzMiBwb3J0aWQsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTk1LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjE1OTY6XFx0ZXJyID0gdnhsYW5fbWRiX2dldF9wYXJzZShkZXYsIHRiLCBcXHUwMDI2Z3JvdXAsIGV4dGFjayk7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTU5Ny1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNTo0MDowNC4zNDMxNDE4MTlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU3MDc0NjczNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB1bmRlcnN0YW5kaW5nOlxuXG4qKlZYTEFOIE1EQiBHZXQgRnVuY3Rpb24gQ2FsbCoqXG5cbkFscmlnaHQsIHNvIGxldCdzIGNsYXJpZnkgdGhpcy4gSSBzZWUgdGhhdCBgdnhsYW5fbWRiX2dldGAgaXMgYmVpbmcgdXRpbGl6ZWQgYXMgdGhlIGltcGxlbWVudGF0aW9uIGZvciBgLm5kb19tZGJfZ2V0YCB3aXRoaW4gYHZ4bGFuX25ldGRldl9ldGhlcl9vcHNgLiBFZmZlY3RpdmVseSwgdGhpcyBtZWFucyB0aGF0IHRoZSBWWExBTiBtb2R1bGUgaXMgbGV2ZXJhZ2luZyBpdHMgb3duIHNwZWNpZmljIGZ1bmN0aW9uLCBgdnhsYW5fbWRiX2dldGAsIHRvIGhhbmRsZSB0aGUgTURCIChNdWx0aWNhc3QgRGF0YWJhc2UpIHJldHJpZXZhbCBvcGVyYXRpb25zIHJlcXVpcmVkIGJ5IHRoZSBuZXR3b3JrIGRldmljZSBvcGVyYXRpb25zIHN0cnVjdHVyZSBmb3IgRXRoZXJuZXQgZGV2aWNlcyAoYG5kb19gKS4gSW4gZXNzZW5jZSwgaXQncyBwbHVnZ2luZyBpdHMgY3VzdG9tIE1EQiByZXRyaWV2YWwgbG9naWMgaW50byB0aGUgYnJvYWRlciBuZXR3b3JrIGRldmljZSBmcmFtZXdvcmsuIFRoaXMgaXMgdGhlIG1lY2hhbmlzbSBieSB3aGljaCB0aGUgVlhMQU4gY29kZSBpbnRlZ3JhdGVzIGludG8gdGhlIGdlbmVyaWMgbmV0d29ya2luZyBzdGFjaywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIGhvdyBtdWx0aWNhc3QgaW5mb3JtYXRpb24gaXMgbG9va2VkIHVwIGFuZCBtYW5hZ2VkIGZvciBWWExBTiB0dW5uZWxzLiBHb3QgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NDEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNTo0MDowOS45MTM4OTIwMjZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NzAyMjQ5MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5fbWRiX2dldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MzI5MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHZ4bGFuX25ldGRldl9ldGhlcl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzMwOS1cXHQubmRvX21kYl9kdW1wXFx0XFx0PSB2eGxhbl9tZGJfZHVtcCxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzMxMDpcXHQubmRvX21kYl9nZXRcXHRcXHQ9IHZ4bGFuX21kYl9nZXQsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMzMTEtXFx0Lm5kb19maWxsX21ldGFkYXRhX2RzdFxcdD0gdnhsYW5fZmlsbF9tZXRhZGF0YV9kc3QsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0xNDczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB2eGxhbl9tZGJlX2F0dHJzX2dldF9wb2xbTURCRV9BVFRSX01BWCArIDFdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTQ3OS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxNDgwOnN0YXRpYyBpbnQgdnhsYW5fbWRiX2dldF9wYXJzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE0ODEtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCB2eGxhbl9tZGJfZW50cnlfa2V5ICpncm91cCxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTE1MTc9c3RhdGljIHN0cnVjdCBza19idWZmICpcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxNTE4OnZ4bGFuX21kYl9nZXRfcmVwbHlfYWxsb2MoY29uc3Qgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTUxOS1cXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCB2eGxhbl9tZGJfZW50cnkgKm1kYl9lbnRyeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTE1Mzc9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjE1Mzg6dnhsYW5fbWRiX2dldF9yZXBseV9maWxsKGNvbnN0IHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE1MzktXFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTg0LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjE1ODU6aW50IHZ4bGFuX21kYl9nZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSwgdTMyIHBvcnRpZCxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTg2LVxcdFxcdCAgdTMyIHNlcSwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMTU5NS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzoxNTk2OlxcdGVyciA9IHZ4bGFuX21kYl9nZXRfcGFyc2UoZGV2LCB0YiwgXFx1MDAyNmdyb3VwLCBleHRhY2spO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE1OTctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE2MDUtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTYwNjpcXHRza2IgPSB2eGxhbl9tZGJfZ2V0X3JlcGx5X2FsbG9jKHZ4bGFuLCBtZGJfZW50cnkpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE2MDctXFx0aWYgKCFza2IpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNjA5LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jOjE2MTA6XFx0ZXJyID0gdnhsYW5fbWRiX2dldF9yZXBseV9maWxsKHZ4bGFuLCBza2IsIG1kYl9lbnRyeSwgcG9ydGlkLCBzZXEpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTE2MTEtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oPTIzOT1pbnQgdnhsYW5fbWRiX2RlbF9idWxrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oLTI0MC1cXHRcXHQgICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9wcml2YXRlLmg6MjQxOmludCB2eGxhbl9tZGJfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sIHUzMiBwb3J0aWQsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fcHJpdmF0ZS5oLTI0Mi1cXHRcXHQgIHUzMiBzZXEsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDE1OjQwOjExLjY4NDEyNDUwM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzM4MzAyMjMzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVlhMQU4gTURCIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBkcmlsbGVkIGRvd24gaW50byB0aGlzIHBhdGNoLiBUaGUga2V5IGVudHJ5IHBvaW50cyBhcHBlYXIgdG8gYmUgYHZ4bGFuX21kYl9hZGRgLCBgdnhsYW5fbWRiX2RlbGAsIGFuZCBgdnhsYW5fbWRiX2dldGAg4oCTIHRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgd2lsbCBoYW5kbGUgdGhlIGNvcmUgbG9naWMgcmVsYXRlZCB0byB0aGUgbXVsdGljYXN0IGRhdGFiYXNlLiBNeSBpbml0aWFsIGludmVzdGlnYXRpb24gc2hvd3MgdGhleSdyZSB0aGUgdGFyZ2V0cywgYW5kIHRoZXkgYXJlIHJlYWNoYWJsZS4gVGhpcyBpcyB3aGF0IEkgZXhwZWN0LlxuXG5UaGUgcGF0Y2ggaXRzZWxmIG1vZGlmaWVzIGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYC4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgYHZ4bGFuX21kYl9jb25maWdfc3JjX2VudHJ5X2luaXRgLCBgdnhsYW5fbWRiX2NvbmZpZ19hdHRyc19pbml0YCwgYW5kIGB2eGxhbl9tZGJfZ2V0X3BhcnNlYCwgd2hpY2ggaW4gdHVybiBhcmUgY2FsbGVkIGJ5IHRoZSBjb3JlIGB2eGxhbl9tZGJfYWRkYCwgYHZ4bGFuX21kYl9kZWxgLCBhbmQgYHZ4bGFuX21kYl9nZXRgIGZ1bmN0aW9ucy4gU28sIGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYCBpcyBkZWZpbml0ZWx5IGEgZm9jYWwgcG9pbnQuXG5cbkkgY29uZmlybWVkIHRoYXQgYHZ4bGFuX21kYl9hZGRgIChhbmQgYnkgZXh0ZW5zaW9uLCB0aGUgb3RoZXJzKSBpc24ndCBzdGF0aWM7IGl0J3MgZXhwb3J0ZWQgYW5kIHVzZWQgYXMgYC5uZG9fbWRiX2FkZGAgaW4gYHZ4bGFuX2NvcmUuY2AsIGFjY2Vzc2VkIHRocm91Z2ggdGhlIG5ldGRldiBvcHMuIEEgbmV0bGluayBpbnRlcmZhY2UgcHJvdmlkZXMgdGhlIHVzZXJzcGFjZSBjb25uZWN0aW9uLiBUaGF0J3MgZ29vZDsgaXQgY29uZmlybXMgdGhhdCBpdCdzIGEgcmVhbCBlbnRyeSBwb2ludCwgYW5kIG15IGFuYWx5c2lzIGlzIHByb2dyZXNzaW5nIGNvcnJlY3RseS5cblxuSSBjaGVja2VkIGZvciByZWxldmFudCBjb25maWd1cmF0aW9ucy4gYFZYTEFOYCBpcywgb2J2aW91c2x5LCB0aGUgcHJpbWFyeSBvbmUuIElQdjYgc3VwcG9ydCAoYElQVjZgKSBpcyBhbHNvIG5lY2Vzc2FyeSwgYW5kIGBJTkVUYCBpcyByZXF1aXJlZCBieSBgVlhMQU5gLiBJJ20gZ29pbmcgdG8gc2V0IHVwIG15IGZ1enppbmcgZW52aXJvbm1lbnQgd2l0aCB0aGVzZSBjb25maWd1cmF0aW9ucy5cblxuTm93LCBhYm91dCBgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZWAuICBMb29raW5nIGF0IHRoZSBjb2RlLCBpdCdzIHByZXR0eSBjbGVhcjogaXQncyBhZGRpbmcgdmFsaWRhdGlvbiBmb3IgTURCIHNvdXJjZSBhZGRyZXNzZXMsIHNwZWNpZmljYWxseSBwcmV2ZW50aW5nIGFsbC16ZXJvcyBhZGRyZXNzZXMgKGJvdGggSVB2NCBhbmQgSVB2NikuICBUaGUgY29kZSBzbmlwcGV0IGlzIGNsZWFuIGFuZCByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGJlaGF2aW9yLiBUaGUgdmFsaWRhdGlvbiBsb2dpYyBpdHNlbGYgaXMgc29saWQsIGNoZWNraW5nIGZvciBtdWx0aWNhc3QgYW5kIHplcm8gYWRkcmVzc2VzIGZvciBib3RoIElQdjQgYW5kIElQdjYuXG5cblRoZSBnb29kIG5ld3MgaXMsIHRoaXMgcGF0aCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB2aWEgbmV0bGluayBjYWxsczogYHJ0bmxfbWRiX2FkZGAgLVx1MDAzZSBgZGV2LVx1MDAzZW5ldGRldl9vcHMtXHUwMDNlbmRvX21kYl9hZGRgLiAgVGhhdCBnaXZlcyBtZSBteSBhdHRhY2sgc3VyZmFjZS5cblxuVGhlcmVmb3JlLCBteSBhc3Nlc3NtZW50IGlzOiBgV29ydGhGdXp6aW5nOiB0cnVlYC4gIE15IGZvY3VzIHdpbGwgYmUgb24gZnV6emluZyB0aGUgTURCIG5ldGxpbmsgaGFuZGxlcnMgKFJUTV9ORVdNREIsIFJUTV9ERUxNREIsIGFuZCBSVE1fR0VUTURCKSB0byBlbnN1cmUgdGhpcyBuZXcgdmFsaWRhdGlvbiBsb2dpYyBpcyByb2J1c3QgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucyBvciB2dWxuZXJhYmlsaXRpZXMuIFRoaXMgaXMgYSBzb2xpZCB0YXJnZXQgZm9yIGVuc3VyaW5nIHRoZSBuZXR3b3JrIHN0YWNrJ3Mgc3RhYmlsaXR5IGFuZCBzZWN1cml0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODcyNCwiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6NDA6MjkuMDY3MTQ5MTE4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM3ODY2NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZYTEFOXCIsXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidnhsYW5fbWRiX2FkZFwiLFxuICAgIFwidnhsYW5fbWRiX2RlbFwiLFxuICAgIFwidnhsYW5fbWRiX2dldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiB0byBwcmV2ZW50IGFsbC16ZXJvcyBzb3VyY2UgYWRkcmVzc2VzIGluIFZYTEFOIE1EQiAoTXVsdGljYXN0IEZvcndhcmRpbmcgRGF0YWJhc2UpIGVudHJpZXMuIFRoaXMgbG9naWMgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIFJUTV9ORVdNREIsIFJUTV9ERUxNREIsIGFuZCBSVE1fR0VUTURCIGNvbW1hbmRzLiBGdXp6aW5nIHRoZSBNREIgbmV0bGluayBoYW5kbGVycyB3aWxsIGhlbHAgZW5zdXJlIHRoZSBuZXcgdmFsaWRhdGlvbiBsb2dpYyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZYTEFOXCIsXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidnhsYW5fbWRiX2FkZFwiLFxuICAgIFwidnhsYW5fbWRiX2RlbFwiLFxuICAgIFwidnhsYW5fbWRiX2dldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiB0byBwcmV2ZW50IGFsbC16ZXJvcyBzb3VyY2UgYWRkcmVzc2VzIGluIFZYTEFOIE1EQiAoTXVsdGljYXN0IEZvcndhcmRpbmcgRGF0YWJhc2UpIGVudHJpZXMuIFRoaXMgbG9naWMgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIFJUTV9ORVdNREIsIFJUTV9ERUxNREIsIGFuZCBSVE1fR0VUTURCIGNvbW1hbmRzLiBGdXp6aW5nIHRoZSBNREIgbmV0bGluayBoYW5kbGVycyB3aWxsIGhlbHAgZW5zdXJlIHRoZSBuZXcgdmFsaWRhdGlvbiBsb2dpYyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNTo0MDoyOS4xNDA5NDIxMTVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDI0Mjg4ODYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6NDA6MjkuMTQxNDY3NzY1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE1MDIzNzU4NDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gZm9yIG5ldGxpbmsgYXR0cmlidXRlcyBpbiB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlIHRvIHJlamVjdCBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3NlcyAoSU5BRERSX0FOWSBmb3IgSVB2NCBhbmQgaXB2Nl9hZGRyX2FueSBmb3IgSVB2NikuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBtb2RpZnkgc3RydWN0dXJlIGxheW91dHMsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IGxvZ2ljYWwgY2hlY2tzIG9uIGFscmVhZHkgaW5pdGlhbGl6ZWQgZGF0YSBwYXJzZWQgZnJvbSBuZXRsaW5rIG1lc3NhZ2VzLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMWZjZTFjOThmMGFmMzAxMDA4OTgzOTRkYWFlYjYxYWIwNDM1MDMyNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDE1OjM3OjQyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuY1xuaW5kZXggZDcxZTE5MjVlY2ZkYi4uNzk4NmM1YjVkYzY3NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jXG4rKysgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuY1xuQEAgLTM1NCw2ICszNTQsMTAgQEAgc3RhdGljIGJvb2wgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZShjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBfX2JlMTYgcHJvdG8sXG4gXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJJUHY0IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZFwiKTtcbiBcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRcdH1cbitcdFx0aWYgKG5sYV9nZXRfaW5fYWRkcihhdHRyKSA9PSBodG9ubChJTkFERFJfQU5ZKSkge1xuK1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiSVB2NCBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3MgaXMgbm90IGFsbG93ZWRcIik7XG4rXHRcdFx0cmV0dXJuIGZhbHNlO1xuK1x0XHR9XG4gXHRcdGJyZWFrO1xuICNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuIFx0Y2FzZSBodG9ucyhFVEhfUF9JUFY2KToge1xuQEAgLTM2OCw2ICszNzIsMTAgQEAgc3RhdGljIGJvb2wgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZShjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBfX2JlMTYgcHJvdG8sXG4gXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJJUHY2IG11bHRpY2FzdCBzb3VyY2UgYWRkcmVzcyBpcyBub3QgYWxsb3dlZFwiKTtcbiBcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRcdH1cbitcdFx0aWYgKGlwdjZfYWRkcl9hbnkoXHUwMDI2c3JjKSkge1xuK1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiSVB2NiBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3MgaXMgbm90IGFsbG93ZWRcIik7XG4rXHRcdFx0cmV0dXJuIGZhbHNlO1xuK1x0XHR9XG4gXHRcdGJyZWFrO1xuIFx0fVxuICNlbmRpZlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6NDA6MjkuMTQxNDY4NDc1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk3NTY1NjM2OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFZYTEFOIFNvdXJjZSBBZGRyZXNzIFZhbGlkYXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlYCB3aXRoaW4gYHZ4bGFuX21kYi5jYC4gSXQncyBzdHJhaWdodGZvcndhcmQ6IHRoZXkncmUgYWRkaW5nIGlucHV0IHZhbGlkYXRpb24gb24gdGhlIHNvdXJjZSBhZGRyZXNzIHVzZWQgaW4gbmV0bGluayBhdHRyaWJ1dGVzLiBHb29kLiBUaGUga2V5IHRoaW5nIGlzIHRoYXQgaXQgZXhwbGljaXRseSBjaGVja3MgZm9yIHRoZSBhbGwtemVyb3MgYWRkcmVzcywgYm90aCBJUHY0IChgSU5BRERSX0FOWWApIGFuZCBJUHY2IChgaXB2Nl9hZGRyX2FueWApLiBTbWFydC4gUHJldmVudHMgcG90ZW50aWFsIGlzc3Vlcy5cblxuTGV0J3Mgc2VlLi4uIGxvb2tpbmcgdGhyb3VnaCB0aGUgY29kZSBJIGNhbiBzZWUgdGhhdCB0aGlzIGlzbid0IGludHJvZHVjaW5nIGFueSBuYXN0aWVzIGxpa2UgdW5pbml0aWFsaXplZCBtZW1vcnksIGxlYWtpbmcgaW5mb3JtYXRpb24sIG9yIG92ZXJseSBjb21wbGljYXRlZCBhbGxvY2F0aW9ucy4gVGhleSdyZSBqdXN0IHJlYWRpbmcgdGhlIHNvdXJjZSBhZGRyZXNzIGZyb20gdGhlIGF0dHJpYnV0ZSB1c2luZyBzdGFuZGFyZCBuZXRsaW5rIG1ldGhvZHM6IGBubGFfZ2V0X2luX2FkZHIoYXR0cilgIGFuZCBgbmxhX2dldF9pbjZfYWRkcihhdHRyKWAsIHdoaWNoIGlzIHBlcmZlY3RseSBmaW5lLiBgc3JjYCBpcyBpbml0aWFsaXplZCBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIElQdjYgY2hlY2sg4oCTIGBzcmMgPSBubGFfZ2V0X2luNl9hZGRyKGF0dHIpYCBpbiB0aGUgY2FzZSBvZiBJUHY2LCBhcyBJIHJlbWVtYmVyLCBidXQgaXQncyB3b3J0aCBhIHNlY29uZCBsb29rIGF0IHRoZSByZWxldmFudCBwb3J0aW9uIHRvIG1ha2Ugc3VyZS4gSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXMgc3RhbmRhcmQgbmV0bGluayBwYXJzaW5nLiBIb3dldmVyLCBJIHNob3VsZCBzdGlsbCBjaGVjayB0aGUgc3Vycm91bmRpbmcgY29kZSBqdXN0IHRvIGJlIHNhZmUuIEl0IHdvdWxkIGJlIGEgc2lsbHkgb3ZlcnNpZ2h0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTkxLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6NDA6MzguODk4MDM0ODY4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTMzODI0MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYz0zMjc9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHZ4bGFuX21kYmVfYXR0cnNfcG9sW01EQkVfQVRUUl9NQVggKyAxXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTM0My1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzozNDQ6c3RhdGljIGJvb2wgdnhsYW5fbWRiX2lzX3ZhbGlkX3NvdXJjZShjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBfX2JlMTYgcHJvdG8sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtMzQ1LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTQyMT1zdGF0aWMgaW50IHZ4bGFuX21kYl9jb25maWdfc3JjX2VudHJ5X2luaXQoc3RydWN0IHZ4bGFuX21kYl9jb25maWcgKmNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jLTQzNy1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzo0Mzg6XFx0aWYgKCF2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlKHRiW01EQkVfU1JDQVRUUl9BRERSRVNTXSwgcHJvdG8sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtNDM5LVxcdFxcdFxcdFxcdCAgICAgICBleHRhY2spKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM9NDk4PXN0YXRpYyBpbnQgdnhsYW5fbWRiX2NvbmZpZ19hdHRyc19pbml0KHN0cnVjdCB2eGxhbl9tZGJfY29uZmlnICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy01MTYtXFx0aWYgKG1kYmVfYXR0cnNbTURCRV9BVFRSX1NPVVJDRV0gXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYzo1MTc6XFx0ICAgICF2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlKG1kYmVfYXR0cnNbTURCRV9BVFRSX1NPVVJDRV0sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmMtNTE4LVxcdFxcdFxcdFxcdCAgICAgICBlbnRyeS1cXHUwMDNlYWRkci5wcm90bywgZXh0YWNrKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX21kYi5jPTE0ODA9c3RhdGljIGludCB2eGxhbl9tZGJfZ2V0X3BhcnNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTAzLVxcdGlmIChtZGJlX2F0dHJzW01EQkVfQVRUUl9TT1VSQ0VdIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fbWRiLmM6MTUwNDpcXHQgICAgIXZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UobWRiZV9hdHRyc1tNREJFX0FUVFJfU09VUkNFXSxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9tZGIuYy0xNTA1LVxcdFxcdFxcdFxcdCAgICAgICBlbnRyeS1cXHUwMDNlYWRkci5wcm90bywgZXh0YWNrKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTU6NDA6MzkuMTUxNDIzMjE3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMTM3ODE3NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmV0bGluayBBdHRyaWJ1dGUgVmFsaWRhdGlvbiBhbmQgTWVtb3J5IENvbmNlcm5zKipcblxuT2theSwgc28gSSd2ZSByZXZpZXdlZCB0aGlzIHBhdGNoIGFuZCBJJ20gc2VlaW5nIHRoYXQgaXQncyBpbnRyb2R1Y2luZyBzb21lIG5lY2Vzc2FyeSB2YWxpZGF0aW9uIGZvciB0aGUgbmV0bGluayBhdHRyaWJ1dGVzLiBUaGF0J3MgZ29vZCwgYWx3YXlzIGEgY3J1Y2lhbCBzdGVwIGZvciBtYWludGFpbmluZyBzeXN0ZW0gaW50ZWdyaXR5IGFuZCBwcmV2ZW50aW5nIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIEZyb20gd2hhdCBJJ20gcmVhZGluZywgaXQgZG9lc24ndCBhcHBlYXIgdG8gYmUgY3JlYXRpbmcgYW55IG5ldyBhdmVudWVzIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMsIHdoaWNoIGlzIGV4Y2VsbGVudC4gSSdtIGFsd2F5cyBoeXBlci12aWdpbGFudCBhYm91dCB0aGF0LiBUaGVyZWZvcmUsIGJhc2VkIG9uIG15IGFzc2Vzc21lbnQsIEknbGwgZ28gYWhlYWQgYW5kIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAuIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIHBhdGNoIGRvZXNuJ3Qgd2FycmFudCBmdXJ0aGVyIGludmVzdGlnYXRpb24gZnJvbSBhIGtlcm5lbCBtZW1vcnkgc2FuaXRpemVyIHBlcnNwZWN0aXZlLCBnaXZlbiB0aGUgYWJzZW5jZSBvZiBhbnkgcmVhZGlseSBhcHBhcmVudCBtZW1vcnktcmVsYXRlZCBjb25jZXJucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMzOCwiT3V0cHV0VG9rZW5zIjoxMzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxNTo0MDo0NC4xNjUyMDkyODdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgaW5wdXQgdmFsaWRhdGlvbiBmb3IgbmV0bGluayBhdHRyaWJ1dGVzIGluIHZ4bGFuX21kYl9pc192YWxpZF9zb3VyY2UgdG8gcmVqZWN0IGFsbC16ZXJvcyBzb3VyY2UgYWRkcmVzc2VzIChJTkFERFJfQU5ZIGZvciBJUHY0IGFuZCBpcHY2X2FkZHJfYW55IGZvciBJUHY2KS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIG1vZGlmeSBzdHJ1Y3R1cmUgbGF5b3V0cywgb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2UuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgbG9naWNhbCBjaGVja3Mgb24gYWxyZWFkeSBpbml0aWFsaXplZCBkYXRhIHBhcnNlZCBmcm9tIG5ldGxpbmsgbWVzc2FnZXMuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gZm9yIG5ldGxpbmsgYXR0cmlidXRlcyBpbiB2eGxhbl9tZGJfaXNfdmFsaWRfc291cmNlIHRvIHJlamVjdCBhbGwtemVyb3Mgc291cmNlIGFkZHJlc3NlcyAoSU5BRERSX0FOWSBmb3IgSVB2NCBhbmQgaXB2Nl9hZGRyX2FueSBmb3IgSVB2NikuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBtb2RpZnkgc3RydWN0dXJlIGxheW91dHMsIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IGxvZ2ljYWwgY2hlY2tzIG9uIGFscmVhZHkgaW5pdGlhbGl6ZWQgZGF0YSBwYXJzZWQgZnJvbSBuZXRsaW5rIG1lc3NhZ2VzLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowd8q8b[1] Phase: Succeeded StartedAt: 2026-08-26 15:40:55 +0000 UTC FinishedAt: 2026-08-26 15:40:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-26 15:40:55 +0000 UTC FinishedAt: 2026-08-26 15:40:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[2] Phase: Succeeded StartedAt: 2026-08-26 15:40:55 +0000 UTC FinishedAt: 2026-08-26 19:18:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-26 15:40:55 +0000 UTC FinishedAt: 2026-08-26 19:18:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-26 15:40:55 +0000 UTC FinishedAt: 2026-08-26 15:41:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-26 15:40:55 +0000 UTC FinishedAt: 2026-08-26 15:41:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd8q8b/series-workflowd8q8b-convert-artifact-1658233225/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-26 15:41:05 +0000 UTC FinishedAt: 2026-08-26 15:56:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-26 15:41:05 +0000 UTC FinishedAt: 2026-08-26 15:56:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*c9cbdd5b-1b91-4aa5-8ea8-2fbf138e0ebb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd8q8b/series-workflowd8q8b-convert-artifact-1658233225/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "d0914f04-9c96-4854-91c4-c76ee90afc6f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd8q8b/series-workflowd8q8b-build-action-1735350887/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-26 15:41:05 +0000 UTC FinishedAt: 2026-08-26 15:56:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*c9cbdd5b-1b91-4aa5-8ea8-2fbf138e0ebb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd8q8b/series-workflowd8q8b-convert-artifact-1658233225/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "d0914f04-9c96-4854-91c4-c76ee90afc6f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd8q8b/series-workflowd8q8b-build-action-1735350887/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-26 15:56:51 +0000 UTC FinishedAt: 2026-08-26 15:56:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-26 15:56:51 +0000 UTC FinishedAt: 2026-08-26 15:56:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-26 15:56:51 +0000 UTC FinishedAt: 2026-08-26 15:57:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-26 15:56:51 +0000 UTC FinishedAt: 2026-08-26 15:56:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd8q8b/series-workflowd8q8b-convert-artifact-2734100636/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-26 15:57:01 +0000 UTC FinishedAt: 2026-08-26 15:59:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-26 15:57:01 +0000 UTC FinishedAt: 2026-08-26 15:58:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d0914f04-9c96-4854-91c4-c76ee90afc6f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd8q8b/series-workflowd8q8b-build-action-1735350887/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-26 15:59:03 +0000 UTC FinishedAt: 2026-08-26 15:59:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-26 15:59:03 +0000 UTC FinishedAt: 2026-08-26 15:59:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-26 15:59:03 +0000 UTC FinishedAt: 2026-08-26 16:14:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-26 15:59:03 +0000 UTC FinishedAt: 2026-08-26 16:14:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*c9cbdd5b-1b91-4aa5-8ea8-2fbf138e0ebb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd8q8b/series-workflowd8q8b-convert-artifact-2734100636/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "75cc8861-fc24-4791-ab75-877985ec59bf", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd8q8b/series-workflowd8q8b-build-action-317502456/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-26 15:59:03 +0000 UTC FinishedAt: 2026-08-26 16:14:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*c9cbdd5b-1b91-4aa5-8ea8-2fbf138e0ebb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd8q8b/series-workflowd8q8b-convert-artifact-2734100636/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "75cc8861-fc24-4791-ab75-877985ec59bf", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd8q8b/series-workflowd8q8b-build-action-317502456/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-26 16:14:52 +0000 UTC FinishedAt: 2026-08-26 16:14:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-26 16:14:52 +0000 UTC FinishedAt: 2026-08-26 16:14:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-26 16:14:52 +0000 UTC FinishedAt: 2026-08-26 16:16:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-26 16:14:52 +0000 UTC FinishedAt: 2026-08-26 16:16:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*75cc8861-fc24-4791-ab75-877985ec59bf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd8q8b/series-workflowd8q8b-build-action-317502456/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-26 16:16:58 +0000 UTC FinishedAt: 2026-08-26 19:18:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-26 16:16:58 +0000 UTC FinishedAt: 2026-08-26 19:18:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*d0914f04-9c96-4854-91c4-c76ee90afc6f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*75cc8861-fc24-4791-ab75-877985ec59bf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd8q8b/series-workflowd8q8b-build-action-1735350887/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd8q8b/series-workflowd8q8b-build-action-317502456/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-26 16:16:58 +0000 UTC FinishedAt: 2026-08-26 16:17:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-26 16:16:58 +0000 UTC FinishedAt: 2026-08-26 16:17:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd8q8b/series-workflowd8q8b-convert-artifact-4174390373/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-26 16:16:58 +0000 UTC FinishedAt: 2026-08-26 16:16:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-26 16:16:58 +0000 UTC FinishedAt: 2026-08-26 16:16:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-26 16:16:58 +0000 UTC FinishedAt: 2026-08-26 16:16:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-26 16:17:08 +0000 UTC FinishedAt: 2026-08-26 19:18:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd8q8b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_mdb_add","vxlan_mdb_del","vxlan_mdb_get"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","IPV6"],"series_id":"74c8345d-4470-4ebd-8939-660e04183cee","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-26 16:17:08 +0000 UTC FinishedAt: 2026-08-26 19:18:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d0914f04-9c96-4854-91c4-c76ee90afc6f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*75cc8861-fc24-4791-ab75-877985ec59bf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd8q8b/series-workflowd8q8b-build-action-1735350887/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd8q8b/series-workflowd8q8b-build-action-317502456/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowd8q8b/series-workflowd8q8b-convert-artifact-4174390373/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}