Name: series-workflowlrv2v Phase: Succeeded StartedAt: 2026-08-11 21:21:37 +0000 UTC FinishedAt: 2026-08-12 01:10:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[0] Phase: Succeeded StartedAt: 2026-08-11 21:21:37 +0000 UTC FinishedAt: 2026-08-11 21:23:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[0].run-triage Phase: Succeeded StartedAt: 2026-08-11 21:21:37 +0000 UTC FinishedAt: 2026-08-11 21:23:54 +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": "cba9ccb47e9fa4cc77692fb896cc5ab57a667882", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET", "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": "cba9ccb47e9fa4cc77692fb896cc5ab57a667882", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET", "IPV6" ], "series_id": "70149b91-efa9-4acd-9871-d57bd33bf379" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tcp_v4_syn_recv_sock", "tcp_v6_syn_recv_sock" ], "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+CgkJCTx0ZD4yMDI2LzA4LzExIDIxOjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjcF92NF9zeW5fcmVjdl9zb2NrJiMzNDssCiAgICAmIzM0O3RjcF92Nl9zeW5fcmVjdl9zb2NrJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgaW4gdGhlIFRDUCBTWU4gcmVjZWl2ZSBwYXRocyAoYHRjcF92NF9zeW5fcmVjdl9zb2NrYCBhbmQgYHRjcF92Nl9zeW5fcmVjdl9zb2NrYCkgdG8gc2VuZCBhIFRDUCByZXNldCBpZiBgX19pbmV0X2luaGVyaXRfcG9ydGAgcmV0dXJucyBgLUVOT0VOVGAuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IGNvbnRyb2wgZmxvdyByZWxhdGVkLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlcyAobGlrZSB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB0aGF0IG1pZ2h0IGFyaXNlIGZyb20gdGhpcyBjaGFuZ2UuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBpbiBUQ1AgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IChTWU4tUkVDViBzdGF0ZSkgZm9yIGJvdGggSVB2NCBhbmQgSVB2Ni4gU3BlY2lmaWNhbGx5LCBpdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciB3aGVuIGBfX2luZXRfaW5oZXJpdF9wb3J0YCByZXR1cm5zIGAtRU5PRU5UYCB0byBzZW5kIGEgVENQIHJlc2V0IGluc3RlYWQgb2YganVzdCBkcm9wcGluZyB0aGUgY29ubmVjdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFRDUCBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0d29yayB0cmFmZmljIGFuZCBzb2NrZXQgb3BlcmF0aW9ucywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDcxZjI3MWVjYWMzZGI1ODhkMmZhY2U1YTNjZjY0MGFmZGY3ZGMzMGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxMSAyMToyMjo0NiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaXB2NC5jIGIvbmV0L2lwdjQvdGNwX2lwdjQuY1xuaW5kZXggYjg4ODdjZGQ2NmM1Ny4uOWExNGMyZTU2ZWMzYSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF9pcHY0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcF9pcHY0LmNcbkBAIC0xNjkwLDYgJiM0MzsxNjkwLDcgQEAgc3RydWN0IHNvY2sgKnRjcF92NF9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGludCBsM2luZGV4O1xuICNlbmRpZlxuIFx0c3RydWN0IGlwX29wdGlvbnNfcmN1ICppbmV0X29wdDtcbiYjNDM7XHRpbnQgcmV0O1xuIFxuIFx0aWYgKHNrX2FjY2VwdHFfaXNfZnVsbChzaykpXG4gXHRcdGdvdG8gZXhpdF9vdmVyZmxvdztcbkBAIC0xNzU2LDggJiM0MzsxNzU3LDEyIEBAIHN0cnVjdCBzb2NrICp0Y3BfdjRfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGdvdG8gcHV0X2FuZF9leGl0OyAvKiBPT00sIHJlbGVhc2UgYmFjayBtZW1vcnkgKi9cbiAjZW5kaWZcbiBcbi1cdGlmIChfX2luZXRfaW5oZXJpdF9wb3J0KHNrLCBuZXdzaykgXHUwMDNjIDApXG4mIzQzO1x0cmV0ID0gX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spO1xuJiM0MztcdGlmICh1bmxpa2VseShyZXQgXHUwMDNjIDApKSB7XG4mIzQzO1x0XHRpZiAocmV0ID09IC1FTk9FTlQpXG4mIzQzO1x0XHRcdGdvdG8gc2VuZF9yZXNldF9hbmRfZXhpdDtcbiBcdFx0Z290byBwdXRfYW5kX2V4aXQ7XG4mIzQzO1x0fVxuIFx0Km93bl9yZXEgPSBpbmV0X2VoYXNoX25vbGlzdGVuKG5ld3NrLCByZXFfdG9fc2socmVxX3VuaGFzaCksXG4gXHRcdFx0XHQgICAgICAgXHUwMDI2Zm91bmRfZHVwX3NrKTtcbiBcdGlmIChsaWtlbHkoKm93bl9yZXEpKSB7XG5AQCAtMTc4NCw2ICYjNDM7MTc4OSw4IEBAIHN0cnVjdCBzb2NrICp0Y3BfdjRfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gZXhpdDpcbiBcdHRjcF9saXN0ZW5kcm9wKHNrKTtcbiBcdHJldHVybiBOVUxMO1xuJiM0MztzZW5kX3Jlc2V0X2FuZF9leGl0OlxuJiM0MztcdHRjcF92NF9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1NUQVRFKTtcbiBwdXRfYW5kX2V4aXQ6XG4gXHRuZXdpbmV0LVx1MDAzZWluZXRfb3B0ID0gTlVMTDtcbiBcdGluZXRfY3NrX3ByZXBhcmVfZm9yY2VkX2Nsb3NlKG5ld3NrKTtcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni90Y3BfaXB2Ni5jIGIvbmV0L2lwdjYvdGNwX2lwdjYuY1xuaW5kZXggOWU5MTU1YjFiM2FhNy4uZWNiMGI0MDU3MDNjMyAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3RjcF9pcHY2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L3RjcF9pcHY2LmNcbkBAIC0xNDAwLDYgJiM0MzsxNDAwLDcgQEAgc3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpcbiBcdGludCBsM2luZGV4O1xuICNlbmRpZlxuIFx0c3RydWN0IGZsb3dpNiBmbDY7XG4mIzQzO1x0aW50IHJldDtcbiBcbiBcdGlmIChza2ItXHUwMDNlcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApKVxuIFx0XHRyZXR1cm4gdGNwX3Y0X3N5bl9yZWN2X3NvY2soc2ssIHNrYiwgcmVxLCBkc3QsXG5AQCAtMTUxMiw4ICYjNDM7MTUxMywxMiBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKnRjcF92Nl9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKlxuIFx0XHRnb3RvIHB1dF9hbmRfZXhpdDsgLyogT09NICovXG4gI2VuZGlmXG4gXG4tXHRpZiAoX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spIFx1MDAzYyAwKVxuJiM0MztcdHJldCA9IF9faW5ldF9pbmhlcml0X3BvcnQoc2ssIG5ld3NrKTtcbiYjNDM7XHRpZiAodW5saWtlbHkocmV0IFx1MDAzYyAwKSkge1xuJiM0MztcdFx0aWYgKHJldCA9PSAtRU5PRU5UKVxuJiM0MztcdFx0XHRnb3RvIHNlbmRfcmVzZXRfYW5kX2V4aXQ7XG4gXHRcdGdvdG8gcHV0X2FuZF9leGl0O1xuJiM0MztcdH1cbiBcdCpvd25fcmVxID0gaW5ldF9laGFzaF9ub2xpc3RlbihuZXdzaywgcmVxX3RvX3NrKHJlcV91bmhhc2gpLFxuIFx0XHRcdFx0ICAgICAgIFx1MDAyNmZvdW5kX2R1cF9zayk7XG4gXHRpZiAoKm93bl9yZXEpIHtcbkBAIC0xNTQ3LDYgJiM0MzsxNTUyLDggQEAgc3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpcbiBleGl0OlxuIFx0dGNwX2xpc3RlbmRyb3Aoc2spO1xuIFx0cmV0dXJuIE5VTEw7XG4mIzQzO3NlbmRfcmVzZXRfYW5kX2V4aXQ6XG4mIzQzO1x0dGNwX3Y2X3NlbmRfcmVzZXQoc2ssIHNrYiwgU0tfUlNUX1JFQVNPTl9UQ1BfU1RBVEUpO1xuIHB1dF9hbmRfZXhpdDpcbiBcdGluZXRfY3NrX3ByZXBhcmVfZm9yY2VkX2Nsb3NlKG5ld3NrKTtcbiBcdHRjcF9kb25lKG5ld3NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5FVCYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX3Y0X3N5bl9yZWN2X3NvY2smIzM0OywKICAgICYjMzQ7dGNwX3Y2X3N5bl9yZWN2X3NvY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIGluIFRDUCBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgKFNZTi1SRUNWIHN0YXRlKSBmb3IgYm90aCBJUHY0IGFuZCBJUHY2LiBTcGVjaWZpY2FsbHksIGl0IGNoYW5nZXMgdGhlIGJlaGF2aW9yIHdoZW4gYF9faW5ldF9pbmhlcml0X3BvcnRgIHJldHVybnMgYC1FTk9FTlRgIHRvIHNlbmQgYSBUQ1AgcmVzZXQgaW5zdGVhZCBvZiBqdXN0IGRyb3BwaW5nIHRoZSBjb25uZWN0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgVENQIHN0YWNrIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBuZXR3b3JrIHRyYWZmaWMgYW5kIHNvY2tldCBvcGVyYXRpb25zLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzFmMjcxZWNhYzNkYjU4OGQyZmFjZTVhM2NmNjQwYWZkZjdkYzMwZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDExIDIxOjIyOjQ2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lwdjQuYyBiL25ldC9pcHY0L3RjcF9pcHY0LmMKaW5kZXggYjg4ODdjZGQ2NmM1Ny4uOWExNGMyZTU2ZWMzYSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX2lwdjQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfaXB2NC5jCkBAIC0xNjkwLDYgJiM0MzsxNjkwLDcgQEAgc3RydWN0IHNvY2sgKnRjcF92NF9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlpbnQgbDNpbmRleDsKICNlbmRpZgogCXN0cnVjdCBpcF9vcHRpb25zX3JjdSAqaW5ldF9vcHQ7CiYjNDM7CWludCByZXQ7CiAKIAlpZiAoc2tfYWNjZXB0cV9pc19mdWxsKHNrKSkKIAkJZ290byBleGl0X292ZXJmbG93OwpAQCAtMTc1Niw4ICYjNDM7MTc1NywxMiBAQCBzdHJ1Y3Qgc29jayAqdGNwX3Y0X3N5bl9yZWN2X3NvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlnb3RvIHB1dF9hbmRfZXhpdDsgLyogT09NLCByZWxlYXNlIGJhY2sgbWVtb3J5ICovCiAjZW5kaWYKIAotCWlmIChfX2luZXRfaW5oZXJpdF9wb3J0KHNrLCBuZXdzaykgJmx0OyAwKQomIzQzOwlyZXQgPSBfX2luZXRfaW5oZXJpdF9wb3J0KHNrLCBuZXdzayk7CiYjNDM7CWlmICh1bmxpa2VseShyZXQgJmx0OyAwKSkgewomIzQzOwkJaWYgKHJldCA9PSAtRU5PRU5UKQomIzQzOwkJCWdvdG8gc2VuZF9yZXNldF9hbmRfZXhpdDsKIAkJZ290byBwdXRfYW5kX2V4aXQ7CiYjNDM7CX0KIAkqb3duX3JlcSA9IGluZXRfZWhhc2hfbm9saXN0ZW4obmV3c2ssIHJlcV90b19zayhyZXFfdW5oYXNoKSwKIAkJCQkgICAgICAgJmFtcDtmb3VuZF9kdXBfc2spOwogCWlmIChsaWtlbHkoKm93bl9yZXEpKSB7CkBAIC0xNzg0LDYgJiM0MzsxNzg5LDggQEAgc3RydWN0IHNvY2sgKnRjcF92NF9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIGV4aXQ6CiAJdGNwX2xpc3RlbmRyb3Aoc2spOwogCXJldHVybiBOVUxMOwomIzQzO3NlbmRfcmVzZXRfYW5kX2V4aXQ6CiYjNDM7CXRjcF92NF9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1NUQVRFKTsKIHB1dF9hbmRfZXhpdDoKIAluZXdpbmV0LSZndDtpbmV0X29wdCA9IE5VTEw7CiAJaW5ldF9jc2tfcHJlcGFyZV9mb3JjZWRfY2xvc2UobmV3c2spOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvdGNwX2lwdjYuYyBiL25ldC9pcHY2L3RjcF9pcHY2LmMKaW5kZXggOWU5MTU1YjFiM2FhNy4uZWNiMGI0MDU3MDNjMyAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvdGNwX2lwdjYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni90Y3BfaXB2Ni5jCkBAIC0xNDAwLDYgJiM0MzsxNDAwLDcgQEAgc3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICoKIAlpbnQgbDNpbmRleDsKICNlbmRpZgogCXN0cnVjdCBmbG93aTYgZmw2OwomIzQzOwlpbnQgcmV0OwogCiAJaWYgKHNrYi0mZ3Q7cHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApKQogCQlyZXR1cm4gdGNwX3Y0X3N5bl9yZWN2X3NvY2soc2ssIHNrYiwgcmVxLCBkc3QsCkBAIC0xNTEyLDggJiM0MzsxNTEzLDEyIEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqdGNwX3Y2X3N5bl9yZWN2X3NvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqCiAJCWdvdG8gcHV0X2FuZF9leGl0OyAvKiBPT00gKi8KICNlbmRpZgogCi0JaWYgKF9faW5ldF9pbmhlcml0X3BvcnQoc2ssIG5ld3NrKSAmbHQ7IDApCiYjNDM7CXJldCA9IF9faW5ldF9pbmhlcml0X3BvcnQoc2ssIG5ld3NrKTsKJiM0MzsJaWYgKHVubGlrZWx5KHJldCAmbHQ7IDApKSB7CiYjNDM7CQlpZiAocmV0ID09IC1FTk9FTlQpCiYjNDM7CQkJZ290byBzZW5kX3Jlc2V0X2FuZF9leGl0OwogCQlnb3RvIHB1dF9hbmRfZXhpdDsKJiM0MzsJfQogCSpvd25fcmVxID0gaW5ldF9laGFzaF9ub2xpc3RlbihuZXdzaywgcmVxX3RvX3NrKHJlcV91bmhhc2gpLAogCQkJCSAgICAgICAmYW1wO2ZvdW5kX2R1cF9zayk7CiAJaWYgKCpvd25fcmVxKSB7CkBAIC0xNTQ3LDYgJiM0MzsxNTUyLDggQEAgc3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICoKIGV4aXQ6CiAJdGNwX2xpc3RlbmRyb3Aoc2spOwogCXJldHVybiBOVUxMOwomIzQzO3NlbmRfcmVzZXRfYW5kX2V4aXQ6CiYjNDM7CXRjcF92Nl9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1NUQVRFKTsKIHB1dF9hbmRfZXhpdDoKIAlpbmV0X2Nza19wcmVwYXJlX2ZvcmNlZF9jbG9zZShuZXdzayk7CiAJdGNwX2RvbmUobmV3c2spOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODY4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNTk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFRDUCBTdGFjayBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgVENQIHN0YWNrLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgZXJyb3JzIGR1cmluZyB0aGUgU1lOLVJFQ0VJVkVEIHN0YXRlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZTsgaXQmIzM5O3MgYWx0ZXJpbmcgdGhlIGVycm9yIHBhdGggb2YgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGZvciBib3RoIElQdjQgYW5kIElQdjYuIFdoZW5ldmVyIGEgY29yZSBuZXR3b3JrIGNvbXBvbmVudCBsaWtlIHRoaXMgZ2V0cyBtb2RpZmllZCwgbXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzOiBGdXp6aW5nIHRhcmdldCEgV2UgYWJzb2x1dGVseSBuZWVkIHRvIHN1YmplY3QgdGhpcyB0byByaWdvcm91cyB0ZXN0aW5nLgoKVGhlIGNvZGUgbW9kaWZpZXMgYHRjcF92NF9zeW5fcmVjdl9zb2NrYCBpbiBgbmV0L2lwdjQvdGNwX2lwdjQuY2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AgaW4gYG5ldC9pcHY2L3RjcF9pcHY2LmNgLiBJdCBmb2N1c2VzIG9uIHdoYXQgaGFwcGVucyB3aGVuIGBfX2luZXRfaW5oZXJpdF9wb3J0YCByZXR1cm5zIGAtRU5PRU5UYC4gUHJldmlvdXNseSwgaXQganVzdCBkcm9wcGVkIHRoZSBjb25uZWN0aW9uLiBOb3csIHdpdGggdGhpcyBwYXRjaCwgaXQmIzM5O3Mgc2VuZGluZyBhIHJlc2V0IOKAkyBhIFRDUCBSU1Qg4oCTIHVzaW5nIGB0Y3BfdjRfc2VuZF9yZXNldGAgb3IgYHRjcF92Nl9zZW5kX3Jlc2V0YCwgd2l0aCB0aGUgcmVhc29uIGBTS19SU1RfUkVBU09OX1RDUF9TVEFURWAuIFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBzaGlmdCBpbiBob3cgdGhlIHN0YWNrIHJlc3BvbmRzIHRvIHRoaXMgc3BlY2lmaWMgZXJyb3IuCgpUbyBzdGFydCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZyBpbXBsaWNhdGlvbnMuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCB0aGUgYmFzZSBUQ1AgZnVuY3Rpb25hbGl0eSBpcyBhbHdheXMgY29tcGlsZWQgd2l0aCBgSVBfVENQYCBvciBzb21ldGhpbmcgc2ltaWxhciwgYnV0IElQdjYgcHJvYmFibHkgZGVwZW5kcyBvbiBgSVBWNmAgYmVpbmcgZW5hYmxlZC4gVGltZSB0byB2ZXJpZnkuCgpPa2F5LCBjaGVja2luZyB0aGUgZmlsZXMgZGlyZWN0bHkuLi4gYG5ldC9pcHY0L3RjcF9pcHY0LmNgIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19JTkVUYCBpcyBlbmFibGVkLCB0aGF0IG11Y2ggaXMgY2xlYXIuIEFuZCwgYG5ldC9pcHY2L3RjcF9pcHY2LmNgIGdldHMgaW5jbHVkZWQgd2hlbiBgQ09ORklHX0lQVjZgIGlzIGVuYWJsZWQuIE1ha2VzIHNlbnNlLgoKTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyBhY2Nlc3NpYmxlIHRoZXNlIGZ1bmN0aW9ucyBhcmUuIEFyZSB0aGV5IGV4cG9ydGVkPyBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiBlYXNpbHkgcmVhY2ggdGhlbS4gQ2hlY2tpbmcgYG5ldC9pcHY0L3RjcF9pcHY0LmNgLCBgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGlzIGluZGVlZCBleHBvcnRlZCB1c2luZyBgRVhQT1JUX1NZTUJPTGAuIEdvb2QuCgpOb3cgZm9yIGBuZXQvaXB2Ni90Y3BfaXB2Ni5jYC4gV2FpdC4uLiAqc3RhdGljKiBgdGNwX3Y2X3N5bl9yZWN2X3NvY2tgPyBUaGF0IGluaXRpYWxseSB0aHJvd3MgYSByZWQgZmxhZy4gQnV0IHdhaXQsIGl0JiMzOTtzIGFzc2lnbmVkIHRvIGEgYHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29ja19hZl9vcHMgaXB2Nl9zcGVjaWZpY2Agb3Igc2ltaWxhci4gQWgsIHJpZ2h0LiBJdCYjMzk7cyB1c2VkIHRocm91Z2ggdGhhdCBjb25uZWN0aW9uLiBTbywgZXZlbiB0aG91Z2ggaXQmIzM5O3Mgc3RhdGljLCBpdCYjMzk7cyBpbmRpcmVjdGx5IGFjY2Vzc2libGUgdGhyb3VnaCB0aGF0IGZ1bmN0aW9uIHBvaW50ZXIuIEV4Y2VsbGVudC4gV2UgY2FuIHN0aWxsIHJlYWNoIGl0LiBUaW1lIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgSVB2NiBzaWRlIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMjE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX3Y2X3N5bl9yZWN2X3NvY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni90Y3BfaXB2Ni5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L3RjcF9pcHY2LmM9MTM0OD1zdGF0aWMgdm9pZCB0Y3BfdjZfbWFwcGVkX2NoaWxkX2luaXQoc3RydWN0IHNvY2sgKm5ld3NrLCBjb25zdCBzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0xMzgxLVxubmV0L2lwdjYvdGNwX2lwdjYuYzoxMzgyOnN0YXRpYyBzdHJ1Y3Qgc29jayAqdGNwX3Y2X3N5bl9yZWN2X3NvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xMzgzLVx0XHRcdFx0XHQgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmM9MjAxND1jb25zdCBzdHJ1Y3QgaW5ldF9jb25uZWN0aW9uX3NvY2tfYWZfb3BzIGlwdjZfc3BlY2lmaWMgPSB7XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0yMDE4LVx0LmNvbm5fcmVxdWVzdFx0ICAgPSB0Y3BfdjZfY29ubl9yZXF1ZXN0LFxubmV0L2lwdjYvdGNwX2lwdjYuYzoyMDE5Olx0LnN5bl9yZWN2X3NvY2tcdCAgID0gdGNwX3Y2X3N5bl9yZWN2X3NvY2ssXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIwMjAtXHQubmV0X2hlYWRlcl9sZW5cdCAgID0gc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSxcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTIwNDU9c3RhdGljIGNvbnN0IHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29ja19hZl9vcHMgaXB2Nl9tYXBwZWQgPSB7XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0yMDQ5LVx0LmNvbm5fcmVxdWVzdFx0ICAgPSB0Y3BfdjZfY29ubl9yZXF1ZXN0LFxubmV0L2lwdjYvdGNwX2lwdjYuYzoyMDUwOlx0LnN5bl9yZWN2X3NvY2tcdCAgID0gdGNwX3Y2X3N5bl9yZWN2X3NvY2ssXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIwNTEtXHQubmV0X2hlYWRlcl9sZW5cdCAgID0gc2l6ZW9mKHN0cnVjdCBpcGhkciksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMjE6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUwNgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQVBJIEVudHJ5cG9pbnRzIGZvciB0aGUgS2VybmVsJiMzOTtzIFRDUC9JUCBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IGJlc3QgdG8gaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgZm9yIHRoaXMgYW5hbHlzaXMsIGFuZCBJIG5lZWQgdG8gYmUgcHJlY2lzZS4gSW5pdGlhbGx5LCBJIHRob3VnaHQgdGhhdCBzaW5jZSBgdGNwX3Y2X3N5bl9yZWN2X3NvY2tgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLCBJIHNob3VsZCBleGNsdWRlIGl0IGZyb20gdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QuIEhvd2V2ZXIsIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhlIGV4cGxpY2l0IGluc3RydWN0aW9uIHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFRoYXTigJlzIHRoZSBrZXkuCgpUaGVuLCBJIHN0b3BwZWQgYW5kIHJldGhvdWdodDogYHRjcF92Nl9zeW5fcmVjdl9zb2NrYCwgZXZlbiB0aG91Z2ggaXQgaXMgc3RhdGljLCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIgKGAuc3luX3JlY3Zfc29ja2ApLiBUaGlzIG1lYW5zIGl0IGxpa2VseSB3b24mIzM5O3QgYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGhhcyBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBUaGF0JiMzOTtzIGEgZ29vZCBhcmd1bWVudCB0byBrZWVwIGl0LiBUaGUgc2FtZSBsb2dpYyBtaWdodCBhcHBseSB0byBvdGhlciBmdW5jdGlvbnMgbGlrZSBgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGFuZCBgdGNwX3Y2X2Nvbm5fcmVxdWVzdGAuCgpCYWNrIHRvIHRoZSBwcm9tcHQ6IG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBhcmUgcHJlZmVycmVkLiBgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGlzIG5vdCBzdGF0aWMuIFNpbmNlIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AgaXMgYSBjYWxsYmFjayBmdW5jdGlvbiBwb2ludGVyLCBpdCB3b24mIzM5O3QgYmUgaW5saW5lZC4gVGhpcyBtZWFucyBib3RoIGFyZSB2YWxpZC4KCkkmIzM5O3ZlIGp1c3QgY29uZmlybWVkIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AgaXMgaW5kZWVkIGRlY2xhcmVkIHN0YXRpYy4gVGh1cywgYmFzZWQgb24gdGhlIHByaW5jaXBsZSwgSSBzaG91bGQgaW5jbHVkZSBib3RoIGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AgYmVjYXVzZSB0aGV5IGFyZSB0aGUgZXhhY3QgZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkLCBhbmQgdGhleSBhcmUgbm90IGlubGluZWQuIE9uZSBpcyBleHBvcnRlZCwgdGhlIG90aGVyIGlzIGEgY2FsbGJhY2sgZnVuY3Rpb24gcG9pbnRlci4KCk5vdywgbGV0JiMzOTtzIGV4cGxvcmUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucy4gYHRjcF92NF9zZW5kX3Jlc2V0YCBhbmQgYHRjcF92Nl9zZW5kX3Jlc2V0YCBzZWVtIHJlbGV2YW50LCBidXQgdGhleSYjMzk7cmUganVzdCBjYWxsZWQgYnkgb3RoZXIgZnVuY3Rpb25zLCBub3QgdGhlIGVudHJ5IHBvaW50cy4KCkkmIzM5O2xsIHByb2NlZWQgYnkgY2hlY2tpbmcgYHRjcF92NF9zeW5fcmVjdl9zb2NrYCB3aXRoaW4gYG5ldC9pcHY0L3RjcF9pcHY0LmNgIHRvIGNvbmZpcm0gdGhlIGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMjE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX3Y0X3N5bl9yZWN2X3NvY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaXB2NC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmM9MTY1NT1pbnQgdGNwX3Y0X2Nvbm5fcmVxdWVzdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0xNjczLSAqL1xubmV0L2lwdjQvdGNwX2lwdjQuYzoxNjc0OnN0cnVjdCBzb2NrICp0Y3BfdjRfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTE2NzUtXHRcdFx0XHQgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSxcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTIzNjU9Y29uc3Qgc3RydWN0IGluZXRfY29ubmVjdGlvbl9zb2NrX2FmX29wcyBpcHY0X3NwZWNpZmljID0ge1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjM2OS1cdC5jb25uX3JlcXVlc3RcdCAgID0gdGNwX3Y0X2Nvbm5fcmVxdWVzdCxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MjM3MDpcdC5zeW5fcmVjdl9zb2NrXHQgICA9IHRjcF92NF9zeW5fcmVjdl9zb2NrLFxubmV0L2lwdjQvdGNwX2lwdjQuYy0yMzcxLVx0Lm5ldF9oZWFkZXJfbGVuXHQgICA9IHNpemVvZihzdHJ1Y3QgaXBoZHIpLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDIxOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NzMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFNZTiBSZWNlaXZlIFNvY2tldCBDYWxsYmFja3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIHR3byBmdW5jdGlvbnMsIGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AuIFRoZXkmIzM5O3JlIGJvdGggdXNlZCBhcyBjYWxsYmFja3MgZm9yIHRoZSBgLnN5bl9yZWN2X3NvY2tgIG9wZXJhdGlvbiwgd2hpY2ggaXMgc3RhbmRhcmQgaW4gdGhpcyBhcmVhLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaW5jbHVkZSB0aGVtIGluIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0LCB0byB0cmFjayB0aGVtIHByb3Blcmx5LgoKTm93LCBjb25jZXJuaW5nIHRoZSBjb25maWd1cmF0aW9ucywgSSBzZWUgdGhhdCBgSVBWNmAgaXMgcmVxdWlyZWQgZm9yIHRoZSBgbmV0L2lwdjYvdGNwX2lwdjYuY2AgZmlsZSwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gU2ltaWxhcmx5LCBgSU5FVGAgaXMgbmVlZGVkIGZvciBgbmV0L2lwdjQvdGNwX2lwdjQuY2AuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgSU5FVGAgaXMgdGhlIGFwcHJvcHJpYXRlIGNvbmZpZyBmb3IgdGhhdCBwYXJ0aWN1bGFyIHVzZSBjYXNlIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gSXQgd291bGQgYmUgYSBzaWxseSBvdmVyc2lnaHQgaWYgaXQgd2FzbiYjMzk7dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfaXB2NC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcbi0tXG5uZXQvaXB2NC9NYWtlZmlsZS05LVx0ICAgICBpbmV0X3RpbWV3YWl0X3NvY2subyBpbmV0X2Nvbm5lY3Rpb25fc29jay5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxMDpcdCAgICAgdGNwLm8gdGNwX2lucHV0Lm8gdGNwX291dHB1dC5vIHRjcF90aW1lci5vIHRjcF9pcHY0Lm8gXFxcbm5ldC9pcHY0L01ha2VmaWxlLTExLVx0ICAgICB0Y3BfbWluaXNvY2tzLm8gdGNwX2NvbmcubyB0Y3BfbWV0cmljcy5vIHRjcF9mYXN0b3Blbi5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMjE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE0MQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBhbmQgSVB2NCBDb21waWxhdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUga2VybmVsJiMzOTtzIGJ1aWxkIHByb2Nlc3MsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgdGhlIElQdjQgc3RhY2suIEkga25vdyB0aGlzIGlzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgbmV0d29yayBzdGFjaywgc28gaXQgbWFrZXMgc2Vuc2UgdGhhdCBpdCYjMzk7cyBoYW5kbGVkIHByZXR0eSBjYXJlZnVsbHkuIFdoYXQgSSYjMzk7bSBzZWVpbmcgaXMgdGhhdCB0aGUgY29kZSBmb3IgSVB2NCBpcyBjb21waWxlZCB1bmNvbmRpdGlvbmFsbHkuIEl04oCZcyBiYWtlZCByaWdodCBpbnRvIHRoZSBrZXJuZWwgdmlhIGBuZXQvaXB2NC9NYWtlZmlsZWAuIFRoYXQgaW5jbHVzaW9uIGlzIHRyaWdnZXJlZCAqb25seSogaWYgYENPTkZJR19JTkVUYCBpcyBzZXQsIG1lYW5pbmcgdGhlIGtlcm5lbCBpcyBiZWluZyBidWlsdCB3aXRoIGdlbmVyYWwgbmV0d29ya2luZyBzdXBwb3J0IGluIHRoZSBmaXJzdCBwbGFjZS4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlIGZvciBtb2R1bGFyaXR5IGFuZCBrZWVwaW5nIHRoZSBjb25maWd1cmF0aW9uIGNsZWFuLiBJZiBJIGRpc2FibGUgbmV0d29ya2luZyBlbnRpcmVseSwgSVB2NCBpc24mIzM5O3QgZXZlbiBwYXJ0IG9mIHRoZSBidWlsZC4gVGhhdCYjMzk7cyBnb29kIG9wdGltaXphdGlvbi4gSXQgaGVscHMgYXZvaWQgY29kZSBibG9hdCB3aGVuIGl0JiMzOTtzIG5vdCBuZWVkZWQsIGFuZCBlbnN1cmVzIGRlcGVuZGVuY2llcyBhcmUgbWFuYWdlZCBjb3JyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDIxOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV0L2lwdjQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDA3CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipDaGVja2luZyB0aGUgYG5ldC9NYWtlZmlsZWAqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gQmVmb3JlIEkgcHJvY2VlZCBhbnkgZnVydGhlciwgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgY3J1Y2lhbC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBgbmV0L01ha2VmaWxlYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBidWlsZCBzeXN0ZW0mIzM5O3MgZGVwZW5kZW5jaWVzIGFuZCBjb21waWxhdGlvbiBmbGFncyB3aXRoaW4gdGhhdCBwYXJ0aWN1bGFyIGRpcmVjdG9yeSBoYXZlbiYjMzk7dCBjaGFuZ2VkIGluIGEgd2F5IHRoYXQgd291bGQgc3VidGx5IGltcGFjdCBteSBjdXJyZW50IHRhc2suIFRoaXMgaXMganVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBlbGltaW5hdGUgYSBjb21tb24gc291cmNlIG9mIHVuZXhwZWN0ZWQgYmVoYXZpb3Ig4oCTIEkmIzM5O3ZlIGJlZW4gYnVybmVkIGJ5IGZvcmdldHRpbmcgdGhpcyBiZWZvcmUhIEdvdHRhIG1ha2Ugc3VyZSB0aGUgdG9vbGNoYWluLCBvcHRpbWl6YXRpb24gc2V0dGluZ3MsIGFuZCBsaW5rZXIgZmxhZ3MgYXJlIHN0aWxsIGFzIGV4cGVjdGVkIGZvciB0aGlzIG5ldHdvcmsgbW9kdWxlLiBUaGlzIGNvdWxkIHNhdmUgbWUgaG91cnMgb2YgZGVidWdnaW5nIGxhdGVyIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcHY0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9NYWtlZmlsZT0xNj1vYmotJChDT05GSUdfTkVURklMVEVSKVx0XHQmIzQzOz0gbmV0ZmlsdGVyL1xubmV0L01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19JTkVUKVx0XHQmIzQzOz0gaXB2NC9cbm5ldC9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfVExTKVx0XHQmIzQzOz0gdGxzL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjY4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSVB2NiBNYWtlZmlsZSBFeGFtaW5hdGlvbioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIG5ldHdvcmtpbmcgaGVyZSwgYW5kIHNwZWNpZmljYWxseSBJUHY2LiBUaGUgaW5pdGlhbCBwcm9tcHQgY29uZmlybWVkIGBDT05GSUdfSU5FVGAsIHdoaWNoIGlzIGdvb2Qg4oCTIHRoYXQgdGVsbHMgbWUgdGhlIGJhc2UgSVB2NC9JUHY2IHN1cHBvcnQgaXMgZW5hYmxlZC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAsIGZyb20gYW4gYXJjaGl0ZWN0dXJhbCBzdGFuZHBvaW50LCBpcyB0byBkaWcgaW50byB0aGUgYG5ldC9pcHY2L01ha2VmaWxlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBJUHY2IGNvbXBvbmVudHMgYXJlIGJlaW5nIGJ1aWx0IGFuZCBsaW5rZWQsIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoZSBicm9hZGVyIG5ldHdvcmtpbmcgc3RhY2suIFRoaXMgTWFrZWZpbGUgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gdG8gc3BlYWsuIFVuZGVyc3RhbmRpbmcgaXRzIHN0cnVjdHVyZSB3aWxsIGdpdmUgbWUgYSBzb2xpZCBncmFzcCBvZiB0aGUgSVB2NiBzdWJzeXN0ZW0mIzM5O3MgYnVpbGQgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMjE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX2lwdjYubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L01ha2VmaWxlPTg9aXB2Ni15IDo9XHRhZl9pbmV0Ni5vIGFueWNhc3QubyBpcDZfb3V0cHV0Lm8gaXA2X2lucHV0Lm8gYWRkcmNvbmYubyBcXFxuLS1cbm5ldC9pcHY2L01ha2VmaWxlLTEwLVx0XHRyb3V0ZS5vIGlwNl9maWIubyBpcHY2X3NvY2tnbHVlLm8gbmRpc2MubyB1ZHAubyBcXFxubmV0L2lwdjYvTWFrZWZpbGU6MTE6XHRcdHJhdy5vIGljbXAubyBtY2FzdC5vIHJlYXNzZW1ibHkubyB0Y3BfaXB2Ni5vIHBpbmcubyBcXFxubmV0L2lwdjYvTWFrZWZpbGUtMTItXHRcdGV4dGhkcnMubyBkYXRhZ3JhbS5vIGlwNl9mbG93bGFiZWwubyBpbmV0Nl9jb25uZWN0aW9uX3NvY2subyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDIyCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJUHY2IGFuZCB0aGUgTmV0d29yayBNYWtlZmlsZSoqCgpBbHJpZ2h0LCBteSBtaW5kJiMzOTtzIGp1bXBlZCB0byB0aGUgYG5ldC9NYWtlZmlsZWAuIEkmIzM5O20gaW1tZWRpYXRlbHkgdGhpbmtpbmcsICYjMzQ7V2hhdCBhYm91dCBJUHY2PyYjMzQ7IEl0JiMzOTtzIHN1Y2ggYW4gaW50ZWdyYWwgcGFydCBvZiBtb2Rlcm4gbmV0d29ya2luZyBub3csIGFuZCBJIG5lZWQgdG8gZW5zdXJlIGl0JiMzOTtzIHByb3Blcmx5IGhhbmRsZWQgaW4gdGhlIGJ1aWxkIHByb2Nlc3MuIEkgbmVlZCB0byByZWZyZXNoIG15c2VsZiBvbiBob3cgdGhlIElQdjYgY29uZmlndXJhdGlvbiBpbXBhY3RzIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbXBpbGF0aW9uIHRhcmdldHMgd2l0aGluIHRoYXQgTWFrZWZpbGUuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgYmUgbG9va2luZyBmb3Igd2hlcmUgSVB2Ni1yZWxhdGVkIGZpbGVzLCBmbGFncywgb3IgY29uZGl0aW9uYWwgbG9naWMgYXJlIGludHJvZHVjZWQuIFRoZXJlIGNvdWxkIGJlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMgYmFzZWQgb24gdGhlIHByZXNlbmNlIG9mIElQdjYgc3VwcG9ydC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHJldmlldyBpdCB0byB2ZXJpZnkgdGhlIGJ1aWxkIHByb2Nlc3MgY29ycmVjdGx5IGxpbmtzIHRoZSBuZWNlc3NhcnkgSVB2NiBsaWJyYXJpZXMgYW5kIGluY2x1ZGVzIHRoZSBhcHByb3ByaWF0ZSBoZWFkZXIgZmlsZXMuIElzIHRoZXJlIGEgc2VwYXJhdGUgc2VjdGlvbiBkZWRpY2F0ZWQgdG8gSVB2Niwgb3IgaXMgaXQgd292ZW4gdGhyb3VnaG91dD8gSSBuZWVkIHRvIG1ha2UgY2VydGFpbiB0aGF0IHRoZSBJUHY2IGJ1aWxkIGlzIHJvYnVzdCBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSB1bmZvcmVzZWVuIGlzc3VlcyBvciBkZXBlbmRlbmNpZXMgb24gbGVnYWN5IElQdjQgY29tcG9uZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMjE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXB2NiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvTWFrZWZpbGU9MjE9b2JqLSQoQ09ORklHX0lORVRfUFNQKVx0XHQmIzQzOz0gcHNwL1xubmV0L01ha2VmaWxlOjIyOm9iai15XHRcdFx0XHQmIzQzOz0gaXB2Ni9cbm5ldC9NYWtlZmlsZS0yMy1vYmotJChDT05GSUdfUEFDS0VUKVx0XHQmIzQzOz0gcGFja2V0L1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzQ0CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbGx5IFVubmVjZXNzYXJ5IElQdjYgRGVwZW5kZW5jeSoqCgpIbW0sIHRoaXMgaXMgcGVjdWxpYXIuIFRoZSBgbmV0L01ha2VmaWxlYCBzZWVtcyB0byBhbHdheXMgaW5jbHVkZSB0aGUgYGlwdjYvYCBkaXJlY3RvcnkgdW5jb25kaXRpb25hbGx5LiBUaGF0IGZlZWxz4oCmIGEgbGl0dGxlIG9mZiwgZG9lc24mIzM5O3QgaXQ/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgbXkgdW5kZXJzdGFuZGluZy4gSSYjMzk7bSBnb2luZyB0byByZXZpc2l0IGBuZXQvaXB2Ni9NYWtlZmlsZWAgYW5kIHNlZSBpZiB0aGVyZSYjMzk7cyBzb21ldGhpbmcgSSYjMzk7bSBtaXNzaW5nLiBQZXJoYXBzIHRoZXJlJiMzOTtzIGEgZ29vZCByZWFzb24gZm9yIHRoaXMgaW1wbGljaXQgaW5jbHVzaW9uLCBzb21lIHN1YnRsZSBpbnRlcmFjdGlvbiBJJiMzOTttIG5vdCBpbW1lZGlhdGVseSBncmFzcGluZywgb3IgYSBzcGVjaWZpYyBkZXNpZ24gY29uc3RyYWludCBkcml2aW5nIHRoaXMuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBpbmNsdXNpb24gaXMgYXMgc3RyYWlnaHRmb3J3YXJkIGFzIGl0IGFwcGVhcnMsIG9yIGlmIHRoZXJlJiMzOTtzIGEgbW9yZSBudWFuY2VkIGV4cGxhbmF0aW9uIHRoYXQgSSYjMzk7bSBvdmVybG9va2luZy4gSSBzdXNwZWN0IHRoZXJlJiMzOTtzIG1vcmUgY29udGV4dCBuZWVkZWQgYmVmb3JlIGEgZGVjaXNpb24gaXMgd2FycmFudGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvYmotJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvTWFrZWZpbGUtNS1cbm5ldC9pcHY2L01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0lQVjYpICYjNDM7PSBpcHY2Lm9cbm5ldC9pcHY2L01ha2VmaWxlLTctXG4tLVxubmV0L2lwdjYvTWFrZWZpbGU9Mjg9aXB2Ni0kKENPTkZJR19JUFY2X0lPQU02X0xXVFVOTkVMKSAmIzQzOz0gaW9hbTZfaXB0dW5uZWwub1xubmV0L2lwdjYvTWFrZWZpbGUtMjktXG5uZXQvaXB2Ni9NYWtlZmlsZTozMDpvYmotJChDT05GSUdfSU5FVDZfQUgpICYjNDM7PSBhaDYub1xubmV0L2lwdjYvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX0lORVQ2X0VTUCkgJiM0Mzs9IGVzcDYub1xubmV0L2lwdjYvTWFrZWZpbGU6MzI6b2JqLSQoQ09ORklHX0lORVQ2X0VTUF9PRkZMT0FEKSAmIzQzOz0gZXNwNl9vZmZsb2FkLm9cbm5ldC9pcHY2L01ha2VmaWxlOjMzOm9iai0kKENPTkZJR19JTkVUNl9JUENPTVApICYjNDM7PSBpcGNvbXA2Lm9cbm5ldC9pcHY2L01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19JTkVUNl9YRlJNX1RVTk5FTCkgJiM0Mzs9IHhmcm02X3R1bm5lbC5vXG5uZXQvaXB2Ni9NYWtlZmlsZTozNTpvYmotJChDT05GSUdfSU5FVDZfVFVOTkVMKSAmIzQzOz0gdHVubmVsNi5vXG5uZXQvaXB2Ni9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfSVBWNl9NSVA2KSAmIzQzOz0gbWlwNi5vXG5uZXQvaXB2Ni9NYWtlZmlsZTozNzpvYmotJChDT05GSUdfSVBWNl9JTEEpICYjNDM7PSBpbGEvXG5uZXQvaXB2Ni9NYWtlZmlsZTozODpvYmotJChDT05GSUdfTkVURklMVEVSKVx0JiM0Mzs9IG5ldGZpbHRlci9cbm5ldC9pcHY2L01ha2VmaWxlLTM5LVxubmV0L2lwdjYvTWFrZWZpbGU6NDA6b2JqLSQoQ09ORklHX0lQVjZfVlRJKSAmIzQzOz0gaXA2X3Z0aS5vXG5uZXQvaXB2Ni9NYWtlZmlsZTo0MTpvYmotJChDT05GSUdfSVBWNl9TSVQpICYjNDM7PSBzaXQub1xubmV0L2lwdjYvTWFrZWZpbGU6NDI6b2JqLSQoQ09ORklHX0lQVjZfVFVOTkVMKSAmIzQzOz0gaXA2X3R1bm5lbC5vXG5uZXQvaXB2Ni9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfSVBWNl9HUkUpICYjNDM7PSBpcDZfZ3JlLm9cbm5ldC9pcHY2L01ha2VmaWxlOjQ0Om9iai0kKENPTkZJR19JUFY2X0ZPVSkgJiM0Mzs9IGZvdTYub1xubmV0L2lwdjYvTWFrZWZpbGUtNDUtXG5uZXQvaXB2Ni9NYWtlZmlsZTo0NjpvYmoteSAmIzQzOz0gYWRkcmNvbmZfY29yZS5vIGV4dGhkcnNfY29yZS5vIGlwNl9jaGVja3N1bS5vIGlwNl9pY21wLm9cbm5ldC9pcHY2L01ha2VmaWxlOjQ3Om9iai0kKENPTkZJR19JTkVUKSAmIzQzOz0gb3V0cHV0X2NvcmUubyBwcm90b2NvbC5vIFxcXG5uZXQvaXB2Ni9NYWtlZmlsZS00OC1cdFx0XHRpcDZfb2ZmbG9hZC5vIGV4dGhkcnNfb2ZmbG9hZC5vXG5uZXQvaXB2Ni9NYWtlZmlsZS00OS1cbm5ldC9pcHY2L01ha2VmaWxlOjUwOm9iai0kKHN1YnN0IG0seSwkKENPTkZJR19JUFY2KSkgJiM0Mzs9IGluZXQ2X2hhc2h0YWJsZXMub1xubmV0L2lwdjYvTWFrZWZpbGUtNTEtXG5uZXQvaXB2Ni9NYWtlZmlsZT01Mj1pZm5lcSAoJChDT05GSUdfSVBWNiksKVxubmV0L2lwdjYvTWFrZWZpbGU6NTM6b2JqLSQoQ09ORklHX05FVF9VRFBfVFVOTkVMKSAmIzQzOz0gaXA2X3VkcF90dW5uZWwub1xubmV0L2lwdjYvTWFrZWZpbGU6NTQ6b2JqLXkgJiM0Mzs9IG1jYXN0X3Nub29wLm9cbm5ldC9pcHY2L01ha2VmaWxlOjU1Om9iai0kKENPTkZJR19UQ1BfQU8pICYjNDM7PSB0Y3BfYW8ub1xubmV0L2lwdjYvTWFrZWZpbGUtNTYtZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMjE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODM2MgoJCQkJCQkJb3V0cHV0OiAxNDkKCQkJCQkJCXRob3VnaHRzOiAxNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVENQIENvbm5lY3Rpb24gRXN0YWJsaXNobWVudCBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBleHBlcnQgZXllIGhvbmVzIGluIG9uIHRoZSBjb3JlIGNoYW5nZS4gSXQmIzM5O3MgdG91Y2hpbmcgaG93IGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AgaGFuZGxlIGVycm9ycyBjb21pbmcgYmFjayBmcm9tIGBfX2luZXRfaW5oZXJpdF9wb3J0YC4gU3BlY2lmaWNhbGx5LCBpdCBhcHBlYXJzIHRoZSBwYXRjaCBpcyBhbHRlcmluZyBob3cgdGhlIHN5c3RlbSByZWFjdHMgdG8gYW4gYC1FTk9FTlRgIHJldHVybiBmcm9tIHRoYXQgZnVuY3Rpb24uIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBgX19pbmV0X2luaGVyaXRfcG9ydGAgaXMgcmlnaHQgaW4gdGhlIGhlYXJ0IG9mIHRoZSBTWU4tUkVDViBzdGF0ZSBkdXJpbmcgVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudC4KCldlIGtub3cgYENPTkZJR19JUFY2YCBpcyByZWxldmFudCBoZXJlLCB3aGljaCBtZWFucyBgaXB2Ni5vYCBpcyBpbiB0aGUgcGljdHVyZSwgYW5kIGNvbnNlcXVlbnRseSBgdGNwX2lwdjYub2AuIFNpbmNlIHRoaXMgZGlyZWN0bHkgaW1wYWN0cyB0aGUgVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCwgYSBmdW5jdGlvbiBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBpcyBhIGRpcmVjdCBjb25zZXF1ZW5jZSBvZiBuZXR3b3JrIHRyYWZmaWMsIGl0JiMzOTtzIGEgKmRlZmluaXRlKiBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEFueSBjaGFuZ2UgbGlrZSB0aGlzLCBlc3BlY2lhbGx5IGR1cmluZyB0aGUgU1lOLVJFQ1Ygc3RhZ2UsIGlzIHdvcnRoIGEgdGhvcm91Z2ggaW52ZXN0aWdhdGlvbi4gTXkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhvc2UgdHdvIGNydWNpYWwgZnVuY3Rpb25zLCBgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGFuZCBgdGNwX3Y2X3N5bl9yZWN2X3NvY2tgLCBhbmQgSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIHZlcmlmeSBgSU5FVGAgYW5kIGBJUFY2YCBhcmUgZW5hYmxlZCwgb2YgY291cnNlLgoKSSYjMzk7bGwgYmUgdXNpbmcgdGhlIHNldC1yZXN1bHRzIHRvb2wgZm9yIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDIxOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfdjRfc3luX3JlY3Zfc29jayYjMzQ7LAogICAgJiMzNDt0Y3BfdjZfc3luX3JlY3Zfc29jayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCAoU1lOLVJFQ1Ygc3RhdGUpIGZvciBib3RoIElQdjQgYW5kIElQdjYuIFNwZWNpZmljYWxseSwgaXQgY2hhbmdlcyB0aGUgYmVoYXZpb3Igd2hlbiBgX19pbmV0X2luaGVyaXRfcG9ydGAgcmV0dXJucyBgLUVOT0VOVGAgdG8gc2VuZCBhIFRDUCByZXNldCBpbnN0ZWFkIG9mIGp1c3QgZHJvcHBpbmcgdGhlIGNvbm5lY3Rpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2sgdGhhdCBpcyByZWFjaGFibGUgdmlhIG5ldHdvcmsgdHJhZmZpYyBhbmQgc29ja2V0IG9wZXJhdGlvbnMsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjcF92NF9zeW5fcmVjdl9zb2NrJiMzNDssCiAgICAmIzM0O3RjcF92Nl9zeW5fcmVjdl9zb2NrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBpbiBUQ1AgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IChTWU4tUkVDViBzdGF0ZSkgZm9yIGJvdGggSVB2NCBhbmQgSVB2Ni4gU3BlY2lmaWNhbGx5LCBpdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciB3aGVuIGBfX2luZXRfaW5oZXJpdF9wb3J0YCByZXR1cm5zIGAtRU5PRU5UYCB0byBzZW5kIGEgVENQIHJlc2V0IGluc3RlYWQgb2YganVzdCBkcm9wcGluZyB0aGUgY29ubmVjdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFRDUCBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0d29yayB0cmFmZmljIGFuZCBzb2NrZXQgb3BlcmF0aW9ucywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMjE6MjM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBpbiB0aGUgVENQIFNZTiByZWNlaXZlIHBhdGhzIChgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGFuZCBgdGNwX3Y2X3N5bl9yZWN2X3NvY2tgKSB0byBzZW5kIGEgVENQIHJlc2V0IGlmIGBfX2luZXRfaW5oZXJpdF9wb3J0YCByZXR1cm5zIGAtRU5PRU5UYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgY29udHJvbCBmbG93IHJlbGF0ZWQuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzIChsaWtlIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHRoYXQgbWlnaHQgYXJpc2UgZnJvbSB0aGlzIGNoYW5nZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzFmMjcxZWNhYzNkYjU4OGQyZmFjZTVhM2NmNjQwYWZkZjdkYzMwZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDExIDIxOjIyOjQ2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lwdjQuYyBiL25ldC9pcHY0L3RjcF9pcHY0LmMKaW5kZXggYjg4ODdjZGQ2NmM1Ny4uOWExNGMyZTU2ZWMzYSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX2lwdjQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfaXB2NC5jCkBAIC0xNjkwLDYgJiM0MzsxNjkwLDcgQEAgc3RydWN0IHNvY2sgKnRjcF92NF9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlpbnQgbDNpbmRleDsKICNlbmRpZgogCXN0cnVjdCBpcF9vcHRpb25zX3JjdSAqaW5ldF9vcHQ7CiYjNDM7CWludCByZXQ7CiAKIAlpZiAoc2tfYWNjZXB0cV9pc19mdWxsKHNrKSkKIAkJZ290byBleGl0X292ZXJmbG93OwpAQCAtMTc1Niw4ICYjNDM7MTc1NywxMiBAQCBzdHJ1Y3Qgc29jayAqdGNwX3Y0X3N5bl9yZWN2X3NvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlnb3RvIHB1dF9hbmRfZXhpdDsgLyogT09NLCByZWxlYXNlIGJhY2sgbWVtb3J5ICovCiAjZW5kaWYKIAotCWlmIChfX2luZXRfaW5oZXJpdF9wb3J0KHNrLCBuZXdzaykgJmx0OyAwKQomIzQzOwlyZXQgPSBfX2luZXRfaW5oZXJpdF9wb3J0KHNrLCBuZXdzayk7CiYjNDM7CWlmICh1bmxpa2VseShyZXQgJmx0OyAwKSkgewomIzQzOwkJaWYgKHJldCA9PSAtRU5PRU5UKQomIzQzOwkJCWdvdG8gc2VuZF9yZXNldF9hbmRfZXhpdDsKIAkJZ290byBwdXRfYW5kX2V4aXQ7CiYjNDM7CX0KIAkqb3duX3JlcSA9IGluZXRfZWhhc2hfbm9saXN0ZW4obmV3c2ssIHJlcV90b19zayhyZXFfdW5oYXNoKSwKIAkJCQkgICAgICAgJmFtcDtmb3VuZF9kdXBfc2spOwogCWlmIChsaWtlbHkoKm93bl9yZXEpKSB7CkBAIC0xNzg0LDYgJiM0MzsxNzg5LDggQEAgc3RydWN0IHNvY2sgKnRjcF92NF9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIGV4aXQ6CiAJdGNwX2xpc3RlbmRyb3Aoc2spOwogCXJldHVybiBOVUxMOwomIzQzO3NlbmRfcmVzZXRfYW5kX2V4aXQ6CiYjNDM7CXRjcF92NF9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1NUQVRFKTsKIHB1dF9hbmRfZXhpdDoKIAluZXdpbmV0LSZndDtpbmV0X29wdCA9IE5VTEw7CiAJaW5ldF9jc2tfcHJlcGFyZV9mb3JjZWRfY2xvc2UobmV3c2spOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvdGNwX2lwdjYuYyBiL25ldC9pcHY2L3RjcF9pcHY2LmMKaW5kZXggOWU5MTU1YjFiM2FhNy4uZWNiMGI0MDU3MDNjMyAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvdGNwX2lwdjYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni90Y3BfaXB2Ni5jCkBAIC0xNDAwLDYgJiM0MzsxNDAwLDcgQEAgc3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICoKIAlpbnQgbDNpbmRleDsKICNlbmRpZgogCXN0cnVjdCBmbG93aTYgZmw2OwomIzQzOwlpbnQgcmV0OwogCiAJaWYgKHNrYi0mZ3Q7cHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApKQogCQlyZXR1cm4gdGNwX3Y0X3N5bl9yZWN2X3NvY2soc2ssIHNrYiwgcmVxLCBkc3QsCkBAIC0xNTEyLDggJiM0MzsxNTEzLDEyIEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqdGNwX3Y2X3N5bl9yZWN2X3NvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqCiAJCWdvdG8gcHV0X2FuZF9leGl0OyAvKiBPT00gKi8KICNlbmRpZgogCi0JaWYgKF9faW5ldF9pbmhlcml0X3BvcnQoc2ssIG5ld3NrKSAmbHQ7IDApCiYjNDM7CXJldCA9IF9faW5ldF9pbmhlcml0X3BvcnQoc2ssIG5ld3NrKTsKJiM0MzsJaWYgKHVubGlrZWx5KHJldCAmbHQ7IDApKSB7CiYjNDM7CQlpZiAocmV0ID09IC1FTk9FTlQpCiYjNDM7CQkJZ290byBzZW5kX3Jlc2V0X2FuZF9leGl0OwogCQlnb3RvIHB1dF9hbmRfZXhpdDsKJiM0MzsJfQogCSpvd25fcmVxID0gaW5ldF9laGFzaF9ub2xpc3RlbihuZXdzaywgcmVxX3RvX3NrKHJlcV91bmhhc2gpLAogCQkJCSAgICAgICAmYW1wO2ZvdW5kX2R1cF9zayk7CiAJaWYgKCpvd25fcmVxKSB7CkBAIC0xNTQ3LDYgJiM0MzsxNTUyLDggQEAgc3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICoKIGV4aXQ6CiAJdGNwX2xpc3RlbmRyb3Aoc2spOwogCXJldHVybiBOVUxMOwomIzQzO3NlbmRfcmVzZXRfYW5kX2V4aXQ6CiYjNDM7CXRjcF92Nl9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1NUQVRFKTsKIHB1dF9hbmRfZXhpdDoKIAlpbmV0X2Nza19wcmVwYXJlX2ZvcmNlZF9jbG9zZShuZXdzayk7CiAJdGNwX2RvbmUobmV3c2spOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMjE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg2NQoJCQkJCQkJb3V0cHV0OiAxNDkKCQkJCQkJCXRob3VnaHRzOiA0NDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgVGhpcyBUQ1AgU1lOIFJlY2VpdmUgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0d2Vha2luZyBgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGFuZCBgdGNwX3Y2X3N5bl9yZWN2X3NvY2tgIGluIHRoZSBJUHY0IGFuZCBJUHY2IFRDUCBpbXBsZW1lbnRhdGlvbnMsIHJlc3BlY3RpdmVseS4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgY2hlY2tpbmcgdGhlIHJldHVybiB2YWx1ZSBvZiBgX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spYC4gSWYgdGhhdCBmdW5jdGlvbiB0aHJvd3MgYW4gYC1FTk9FTlRgIGVycm9yLCB0aGUgcGF0Y2ggZGl2ZXJ0cyBleGVjdXRpb24gdG8gYHNlbmRfcmVzZXRfYW5kX2V4aXRgLiBGcm9tIHRoZXJlLCBpdCBjYWxscyBlaXRoZXIgYHRjcF92NF9zZW5kX3Jlc2V0YCBvciBgdGNwX3Y2X3NlbmRfcmVzZXRgIHdpdGggdGhlIHNvY2tldCAoYHNrYCkgYW5kIHNvY2tldCBidWZmZXIgKGBza2JgKSBiZWZvcmUgZXhpdGluZy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgYW55IHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSBhIHF1aWNrIHNjYW4sIGl0IGxvb2tzIGxpa2UgdGhpcyBpcyBwdXJlbHkgYSBjb250cm9sLWZsb3cgY2hhbmdlOyBlcnJvciBoYW5kbGluZywgc3BlY2lmaWNhbGx5LiBUaGUga2V5IGFyZ3VtZW50cyB0byBgdGNwX3Y0X3NlbmRfcmVzZXRgIGFuZCBgdGNwX3Y2X3NlbmRfcmVzZXRgIChzayBhbmQgc2tiKSBhcmUgYWxyZWFkeSBpbml0aWFsaXplZCB3aXRoaW4gdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgdGhlbSwgcmlnaHQ/IFRoZXkmIzM5O3JlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gYHRjcF92NF9zeW5fcmVjdl9zb2NrYCBhbmQgYHRjcF92Nl9zeW5fcmVjdl9zb2NrYC4gSSBkb24mIzM5O3Qgc2VlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIGFsbG9jYXRlZCwgb3IgYW55IG5ldyBmaWVsZHMgYmVpbmcgaW50cm9kdWNlZCB0aGF0IG1pZ2h0IG5vdCBiZSBpbml0aWFsaXplZCwgbm9yIGFueSBtZW1vcnkgY29waWVkIHRvIHVzZXJzcGFjZS4gU28sIEkmIzM5O2Qgc2F5IHRoZSBsaWtlbGlob29kIG9mIGludHJvZHVjaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIGhlcmUgaXMgbmVnbGlnaWJsZSwgemVybyBldmVuLiBTdGFuZGFyZCBLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIgKEtBU0FOKSwgTG9ja2RlcCwgYW5kIG90aGVyIHN0YW5kYXJkIGRlYnVnZ2luZyB0b29scyBhcmUgYWxyZWFkeSBpbiBwbGFjZSBhbmQgc2hvdWxkIGNhdGNoIGFueSAqZ2VuZXJhbCogYnVncy4gQnV0LCB0aGlzIGRvZXNuJiMzOTt0IGV2ZW4gaW50cm9kdWNlIGEgbWVtb3J5IGNvcnJ1cHRpb24gcmlzaywgaXQmIzM5O3MganVzdCBhYm91dCBlcnJvciBoYW5kbGluZy4KClRvIGJlIGV4dHJhIHRob3JvdWdoLCBsZXQmIzM5O3MgdmVyaWZ5IHdoYXQgYHRjcF92NF9zZW5kX3Jlc2V0YCBhbmQgYHRjcF92Nl9zZW5kX3Jlc2V0YCBhcmUgZG9pbmcuIFRoZXkgYXJlIHN0YW5kYXJkIGZ1bmN0aW9ucyBmb3Igc2VuZGluZyBhIFRDUCBSU1QgcGFja2V0IGFuZCwgYXMgZmFyIGFzIEkgY2FuIHNlZSwgZG9uJiMzOTt0IHRoZW1zZWx2ZXMgaW52b2x2ZSB0aGUgdXNlIG9mIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4KClRoZXJlZm9yZSwgdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBuZWVkIEtNU0FOIHNwZWNpZmljYWxseS4gTXkgcmVhc29uaW5nIGlzIHRoYXQgdGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgVENQIFNZTiByZWNlaXZlIHBhdGhzLCBidXQgb25seSB0byBoYW5kbGUgYSBzcGVjaWZpYyBlcnJvciBjb25kaXRpb24gZnJvbSBgX19pbmV0X2luaGVyaXRfcG9ydGAuIEl0JiMzOTtzIGp1c3Qgc2VuZGluZyBhIFRDUCByZXNldCBpbiB0aGF0IGNhc2UuIEl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zIG9yIGFueSBkYXRhIHN0cnVjdHVyZXMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBLQVNBTiBmdXp6aW5nIGFuZCB0aGUgZXhpc3RpbmcgZGVidWdnaW5nIGluZnJhc3RydWN0dXJlIGFyZSBtb3JlIHRoYW4gYWRlcXVhdGUgZm9yIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBpbiB0aGUgVENQIFNZTiByZWNlaXZlIHBhdGhzIChgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGFuZCBgdGNwX3Y2X3N5bl9yZWN2X3NvY2tgKSB0byBzZW5kIGEgVENQIHJlc2V0IGlmIGBfX2luZXRfaW5oZXJpdF9wb3J0YCByZXR1cm5zIGAtRU5PRU5UYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgY29udHJvbCBmbG93IHJlbGF0ZWQuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzIChsaWtlIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHRoYXQgbWlnaHQgYXJpc2UgZnJvbSB0aGlzIGNoYW5nZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIHRoZSBUQ1AgU1lOIHJlY2VpdmUgcGF0aHMgKGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2ApIHRvIHNlbmQgYSBUQ1AgcmVzZXQgaWYgYF9faW5ldF9pbmhlcml0X3BvcnRgIHJldHVybnMgYC1FTk9FTlRgLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGNoYW5nZXMgYXJlIHB1cmVseSBjb250cm9sIGZsb3cgcmVsYXRlZC4gU3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgKGxpa2UgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgdGhhdCBtaWdodCBhcmlzZSBmcm9tIHRoaXMgY2hhbmdlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMVQyMToyMjo0Ny42NjkyODUwMDlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTU1NzcwOTU2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCIsXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX3Y0X3N5bl9yZWN2X3NvY2tcIixcbiAgICBcInRjcF92Nl9zeW5fcmVjdl9zb2NrXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBpbiB0aGUgVENQIFNZTiByZWNlaXZlIHBhdGhzIChgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGFuZCBgdGNwX3Y2X3N5bl9yZWN2X3NvY2tgKSB0byBzZW5kIGEgVENQIHJlc2V0IGlmIGBfX2luZXRfaW5oZXJpdF9wb3J0YCByZXR1cm5zIGAtRU5PRU5UYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgY29udHJvbCBmbG93IHJlbGF0ZWQuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzIChsaWtlIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHRoYXQgbWlnaHQgYXJpc2UgZnJvbSB0aGlzIGNoYW5nZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCAoU1lOLVJFQ1Ygc3RhdGUpIGZvciBib3RoIElQdjQgYW5kIElQdjYuIFNwZWNpZmljYWxseSwgaXQgY2hhbmdlcyB0aGUgYmVoYXZpb3Igd2hlbiBgX19pbmV0X2luaGVyaXRfcG9ydGAgcmV0dXJucyBgLUVOT0VOVGAgdG8gc2VuZCBhIFRDUCByZXNldCBpbnN0ZWFkIG9mIGp1c3QgZHJvcHBpbmcgdGhlIGNvbm5lY3Rpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2sgdGhhdCBpcyByZWFjaGFibGUgdmlhIG5ldHdvcmsgdHJhZmZpYyBhbmQgc29ja2V0IG9wZXJhdGlvbnMsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDIxOjIyOjQ3LjY2OTI5MTQzOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkzOTY0MTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzFmMjcxZWNhYzNkYjU4OGQyZmFjZTVhM2NmNjQwYWZkZjdkYzMwZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAxMSAyMToyMjo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaXB2NC5jIGIvbmV0L2lwdjQvdGNwX2lwdjQuY1xcbmluZGV4IGI4ODg3Y2RkNjZjNTcuLjlhMTRjMmU1NmVjM2EgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdGNwX2lwdjQuY1xcbisrKyBiL25ldC9pcHY0L3RjcF9pcHY0LmNcXG5AQCAtMTY5MCw2ICsxNjkwLDcgQEAgc3RydWN0IHNvY2sgKnRjcF92NF9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0aW50IGwzaW5kZXg7XFxuICNlbmRpZlxcbiBcXHRzdHJ1Y3QgaXBfb3B0aW9uc19yY3UgKmluZXRfb3B0O1xcbitcXHRpbnQgcmV0O1xcbiBcXG4gXFx0aWYgKHNrX2FjY2VwdHFfaXNfZnVsbChzaykpXFxuIFxcdFxcdGdvdG8gZXhpdF9vdmVyZmxvdztcXG5AQCAtMTc1Niw4ICsxNzU3LDEyIEBAIHN0cnVjdCBzb2NrICp0Y3BfdjRfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdGdvdG8gcHV0X2FuZF9leGl0OyAvKiBPT00sIHJlbGVhc2UgYmFjayBtZW1vcnkgKi9cXG4gI2VuZGlmXFxuIFxcbi1cXHRpZiAoX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spIFxcdTAwM2MgMClcXG4rXFx0cmV0ID0gX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spO1xcbitcXHRpZiAodW5saWtlbHkocmV0IFxcdTAwM2MgMCkpIHtcXG4rXFx0XFx0aWYgKHJldCA9PSAtRU5PRU5UKVxcbitcXHRcXHRcXHRnb3RvIHNlbmRfcmVzZXRfYW5kX2V4aXQ7XFxuIFxcdFxcdGdvdG8gcHV0X2FuZF9leGl0O1xcbitcXHR9XFxuIFxcdCpvd25fcmVxID0gaW5ldF9laGFzaF9ub2xpc3RlbihuZXdzaywgcmVxX3RvX3NrKHJlcV91bmhhc2gpLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmZvdW5kX2R1cF9zayk7XFxuIFxcdGlmIChsaWtlbHkoKm93bl9yZXEpKSB7XFxuQEAgLTE3ODQsNiArMTc4OSw4IEBAIHN0cnVjdCBzb2NrICp0Y3BfdjRfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuIGV4aXQ6XFxuIFxcdHRjcF9saXN0ZW5kcm9wKHNrKTtcXG4gXFx0cmV0dXJuIE5VTEw7XFxuK3NlbmRfcmVzZXRfYW5kX2V4aXQ6XFxuK1xcdHRjcF92NF9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1NUQVRFKTtcXG4gcHV0X2FuZF9leGl0OlxcbiBcXHRuZXdpbmV0LVxcdTAwM2VpbmV0X29wdCA9IE5VTEw7XFxuIFxcdGluZXRfY3NrX3ByZXBhcmVfZm9yY2VkX2Nsb3NlKG5ld3NrKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvdGNwX2lwdjYuYyBiL25ldC9pcHY2L3RjcF9pcHY2LmNcXG5pbmRleCA5ZTkxNTViMWIzYWE3Li5lY2IwYjQwNTcwM2MzIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY2L3RjcF9pcHY2LmNcXG4rKysgYi9uZXQvaXB2Ni90Y3BfaXB2Ni5jXFxuQEAgLTE0MDAsNiArMTQwMCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqdGNwX3Y2X3N5bl9yZWN2X3NvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqXFxuIFxcdGludCBsM2luZGV4O1xcbiAjZW5kaWZcXG4gXFx0c3RydWN0IGZsb3dpNiBmbDY7XFxuK1xcdGludCByZXQ7XFxuIFxcbiBcXHRpZiAoc2tiLVxcdTAwM2Vwcm90b2NvbCA9PSBodG9ucyhFVEhfUF9JUCkpXFxuIFxcdFxcdHJldHVybiB0Y3BfdjRfc3luX3JlY3Zfc29jayhzaywgc2tiLCByZXEsIGRzdCxcXG5AQCAtMTUxMiw4ICsxNTEzLDEyIEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqdGNwX3Y2X3N5bl9yZWN2X3NvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqXFxuIFxcdFxcdGdvdG8gcHV0X2FuZF9leGl0OyAvKiBPT00gKi9cXG4gI2VuZGlmXFxuIFxcbi1cXHRpZiAoX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spIFxcdTAwM2MgMClcXG4rXFx0cmV0ID0gX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spO1xcbitcXHRpZiAodW5saWtlbHkocmV0IFxcdTAwM2MgMCkpIHtcXG4rXFx0XFx0aWYgKHJldCA9PSAtRU5PRU5UKVxcbitcXHRcXHRcXHRnb3RvIHNlbmRfcmVzZXRfYW5kX2V4aXQ7XFxuIFxcdFxcdGdvdG8gcHV0X2FuZF9leGl0O1xcbitcXHR9XFxuIFxcdCpvd25fcmVxID0gaW5ldF9laGFzaF9ub2xpc3RlbihuZXdzaywgcmVxX3RvX3NrKHJlcV91bmhhc2gpLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmZvdW5kX2R1cF9zayk7XFxuIFxcdGlmICgqb3duX3JlcSkge1xcbkBAIC0xNTQ3LDYgKzE1NTIsOCBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKnRjcF92Nl9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKlxcbiBleGl0OlxcbiBcXHR0Y3BfbGlzdGVuZHJvcChzayk7XFxuIFxcdHJldHVybiBOVUxMO1xcbitzZW5kX3Jlc2V0X2FuZF9leGl0OlxcbitcXHR0Y3BfdjZfc2VuZF9yZXNldChzaywgc2tiLCBTS19SU1RfUkVBU09OX1RDUF9TVEFURSk7XFxuIHB1dF9hbmRfZXhpdDpcXG4gXFx0aW5ldF9jc2tfcHJlcGFyZV9mb3JjZWRfY2xvc2UobmV3c2spO1xcbiBcXHR0Y3BfZG9uZShuZXdzayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDIxOjIyOjQ4LjA2Mzk4NjExOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ2NzgwMzA1MjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORVRcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfdjRfc3luX3JlY3Zfc29ja1wiLFxuICAgIFwidGNwX3Y2X3N5bl9yZWN2X3NvY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCAoU1lOLVJFQ1Ygc3RhdGUpIGZvciBib3RoIElQdjQgYW5kIElQdjYuIFNwZWNpZmljYWxseSwgaXQgY2hhbmdlcyB0aGUgYmVoYXZpb3Igd2hlbiBgX19pbmV0X2luaGVyaXRfcG9ydGAgcmV0dXJucyBgLUVOT0VOVGAgdG8gc2VuZCBhIFRDUCByZXNldCBpbnN0ZWFkIG9mIGp1c3QgZHJvcHBpbmcgdGhlIGNvbm5lY3Rpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2sgdGhhdCBpcyByZWFjaGFibGUgdmlhIG5ldHdvcmsgdHJhZmZpYyBhbmQgc29ja2V0IG9wZXJhdGlvbnMsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcxZjI3MWVjYWMzZGI1ODhkMmZhY2U1YTNjZjY0MGFmZGY3ZGMzMGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxMSAyMToyMjo0NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pcHY0LmMgYi9uZXQvaXB2NC90Y3BfaXB2NC5jXG5pbmRleCBiODg4N2NkZDY2YzU3Li45YTE0YzJlNTZlYzNhIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX2lwdjQuY1xuKysrIGIvbmV0L2lwdjQvdGNwX2lwdjQuY1xuQEAgLTE2OTAsNiArMTY5MCw3IEBAIHN0cnVjdCBzb2NrICp0Y3BfdjRfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRpbnQgbDNpbmRleDtcbiAjZW5kaWZcbiBcdHN0cnVjdCBpcF9vcHRpb25zX3JjdSAqaW5ldF9vcHQ7XG4rXHRpbnQgcmV0O1xuIFxuIFx0aWYgKHNrX2FjY2VwdHFfaXNfZnVsbChzaykpXG4gXHRcdGdvdG8gZXhpdF9vdmVyZmxvdztcbkBAIC0xNzU2LDggKzE3NTcsMTIgQEAgc3RydWN0IHNvY2sgKnRjcF92NF9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0Z290byBwdXRfYW5kX2V4aXQ7IC8qIE9PTSwgcmVsZWFzZSBiYWNrIG1lbW9yeSAqL1xuICNlbmRpZlxuIFxuLVx0aWYgKF9faW5ldF9pbmhlcml0X3BvcnQoc2ssIG5ld3NrKSBcdTAwM2MgMClcbitcdHJldCA9IF9faW5ldF9pbmhlcml0X3BvcnQoc2ssIG5ld3NrKTtcbitcdGlmICh1bmxpa2VseShyZXQgXHUwMDNjIDApKSB7XG4rXHRcdGlmIChyZXQgPT0gLUVOT0VOVClcbitcdFx0XHRnb3RvIHNlbmRfcmVzZXRfYW5kX2V4aXQ7XG4gXHRcdGdvdG8gcHV0X2FuZF9leGl0O1xuK1x0fVxuIFx0Km93bl9yZXEgPSBpbmV0X2VoYXNoX25vbGlzdGVuKG5ld3NrLCByZXFfdG9fc2socmVxX3VuaGFzaCksXG4gXHRcdFx0XHQgICAgICAgXHUwMDI2Zm91bmRfZHVwX3NrKTtcbiBcdGlmIChsaWtlbHkoKm93bl9yZXEpKSB7XG5AQCAtMTc4NCw2ICsxNzg5LDggQEAgc3RydWN0IHNvY2sgKnRjcF92NF9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBleGl0OlxuIFx0dGNwX2xpc3RlbmRyb3Aoc2spO1xuIFx0cmV0dXJuIE5VTEw7XG4rc2VuZF9yZXNldF9hbmRfZXhpdDpcbitcdHRjcF92NF9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1NUQVRFKTtcbiBwdXRfYW5kX2V4aXQ6XG4gXHRuZXdpbmV0LVx1MDAzZWluZXRfb3B0ID0gTlVMTDtcbiBcdGluZXRfY3NrX3ByZXBhcmVfZm9yY2VkX2Nsb3NlKG5ld3NrKTtcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni90Y3BfaXB2Ni5jIGIvbmV0L2lwdjYvdGNwX2lwdjYuY1xuaW5kZXggOWU5MTU1YjFiM2FhNy4uZWNiMGI0MDU3MDNjMyAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3RjcF9pcHY2LmNcbisrKyBiL25ldC9pcHY2L3RjcF9pcHY2LmNcbkBAIC0xNDAwLDYgKzE0MDAsNyBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKnRjcF92Nl9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKlxuIFx0aW50IGwzaW5kZXg7XG4gI2VuZGlmXG4gXHRzdHJ1Y3QgZmxvd2k2IGZsNjtcbitcdGludCByZXQ7XG4gXG4gXHRpZiAoc2tiLVx1MDAzZXByb3RvY29sID09IGh0b25zKEVUSF9QX0lQKSlcbiBcdFx0cmV0dXJuIHRjcF92NF9zeW5fcmVjdl9zb2NrKHNrLCBza2IsIHJlcSwgZHN0LFxuQEAgLTE1MTIsOCArMTUxMywxMiBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKnRjcF92Nl9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKlxuIFx0XHRnb3RvIHB1dF9hbmRfZXhpdDsgLyogT09NICovXG4gI2VuZGlmXG4gXG4tXHRpZiAoX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spIFx1MDAzYyAwKVxuK1x0cmV0ID0gX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spO1xuK1x0aWYgKHVubGlrZWx5KHJldCBcdTAwM2MgMCkpIHtcbitcdFx0aWYgKHJldCA9PSAtRU5PRU5UKVxuK1x0XHRcdGdvdG8gc2VuZF9yZXNldF9hbmRfZXhpdDtcbiBcdFx0Z290byBwdXRfYW5kX2V4aXQ7XG4rXHR9XG4gXHQqb3duX3JlcSA9IGluZXRfZWhhc2hfbm9saXN0ZW4obmV3c2ssIHJlcV90b19zayhyZXFfdW5oYXNoKSxcbiBcdFx0XHRcdCAgICAgICBcdTAwMjZmb3VuZF9kdXBfc2spO1xuIFx0aWYgKCpvd25fcmVxKSB7XG5AQCAtMTU0Nyw2ICsxNTUyLDggQEAgc3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpcbiBleGl0OlxuIFx0dGNwX2xpc3RlbmRyb3Aoc2spO1xuIFx0cmV0dXJuIE5VTEw7XG4rc2VuZF9yZXNldF9hbmRfZXhpdDpcbitcdHRjcF92Nl9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1NUQVRFKTtcbiBwdXRfYW5kX2V4aXQ6XG4gXHRpbmV0X2Nza19wcmVwYXJlX2ZvcmNlZF9jbG9zZShuZXdzayk7XG4gXHR0Y3BfZG9uZShuZXdzayk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQyMToyMjo0OC4wNjM5ODcyODlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzA0NTYzOTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRDUCBTdGFjayBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIFRDUCBzdGFjaywgc3BlY2lmaWNhbGx5IGhvdyBpdCBoYW5kbGVzIGVycm9ycyBkdXJpbmcgdGhlIFNZTi1SRUNFSVZFRCBzdGF0ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2U7IGl0J3MgYWx0ZXJpbmcgdGhlIGVycm9yIHBhdGggb2YgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGZvciBib3RoIElQdjQgYW5kIElQdjYuIFdoZW5ldmVyIGEgY29yZSBuZXR3b3JrIGNvbXBvbmVudCBsaWtlIHRoaXMgZ2V0cyBtb2RpZmllZCwgbXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzOiBGdXp6aW5nIHRhcmdldCEgV2UgYWJzb2x1dGVseSBuZWVkIHRvIHN1YmplY3QgdGhpcyB0byByaWdvcm91cyB0ZXN0aW5nLlxuXG5UaGUgY29kZSBtb2RpZmllcyBgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGluIGBuZXQvaXB2NC90Y3BfaXB2NC5jYCBhbmQgYHRjcF92Nl9zeW5fcmVjdl9zb2NrYCBpbiBgbmV0L2lwdjYvdGNwX2lwdjYuY2AuIEl0IGZvY3VzZXMgb24gd2hhdCBoYXBwZW5zIHdoZW4gYF9faW5ldF9pbmhlcml0X3BvcnRgIHJldHVybnMgYC1FTk9FTlRgLiBQcmV2aW91c2x5LCBpdCBqdXN0IGRyb3BwZWQgdGhlIGNvbm5lY3Rpb24uIE5vdywgd2l0aCB0aGlzIHBhdGNoLCBpdCdzIHNlbmRpbmcgYSByZXNldCDigJMgYSBUQ1AgUlNUIOKAkyB1c2luZyBgdGNwX3Y0X3NlbmRfcmVzZXRgIG9yIGB0Y3BfdjZfc2VuZF9yZXNldGAsIHdpdGggdGhlIHJlYXNvbiBgU0tfUlNUX1JFQVNPTl9UQ1BfU1RBVEVgLiBUaGF0J3MgYSBmdW5kYW1lbnRhbCBzaGlmdCBpbiBob3cgdGhlIHN0YWNrIHJlc3BvbmRzIHRvIHRoaXMgc3BlY2lmaWMgZXJyb3IuXG5cblRvIHN0YXJ0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlnIGltcGxpY2F0aW9ucy4gSSdtIGFzc3VtaW5nIHRoYXQgdGhlIGJhc2UgVENQIGZ1bmN0aW9uYWxpdHkgaXMgYWx3YXlzIGNvbXBpbGVkIHdpdGggYElQX1RDUGAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCBJUHY2IHByb2JhYmx5IGRlcGVuZHMgb24gYElQVjZgIGJlaW5nIGVuYWJsZWQuIFRpbWUgdG8gdmVyaWZ5LlxuXG5Pa2F5LCBjaGVja2luZyB0aGUgZmlsZXMgZGlyZWN0bHkuLi4gYG5ldC9pcHY0L3RjcF9pcHY0LmNgIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19JTkVUYCBpcyBlbmFibGVkLCB0aGF0IG11Y2ggaXMgY2xlYXIuIEFuZCwgYG5ldC9pcHY2L3RjcF9pcHY2LmNgIGdldHMgaW5jbHVkZWQgd2hlbiBgQ09ORklHX0lQVjZgIGlzIGVuYWJsZWQuIE1ha2VzIHNlbnNlLlxuXG5Ob3csIEknbSB0aGlua2luZyBhYm91dCBob3cgYWNjZXNzaWJsZSB0aGVzZSBmdW5jdGlvbnMgYXJlLiBBcmUgdGhleSBleHBvcnRlZD8gSSBuZWVkIHRvIGtub3cgaWYgSSBjYW4gZWFzaWx5IHJlYWNoIHRoZW0uIENoZWNraW5nIGBuZXQvaXB2NC90Y3BfaXB2NC5jYCwgYHRjcF92NF9zeW5fcmVjdl9zb2NrYCBpcyBpbmRlZWQgZXhwb3J0ZWQgdXNpbmcgYEVYUE9SVF9TWU1CT0xgLiBHb29kLlxuXG5Ob3cgZm9yIGBuZXQvaXB2Ni90Y3BfaXB2Ni5jYC4gV2FpdC4uLiAqc3RhdGljKiBgdGNwX3Y2X3N5bl9yZWN2X3NvY2tgPyBUaGF0IGluaXRpYWxseSB0aHJvd3MgYSByZWQgZmxhZy4gQnV0IHdhaXQsIGl0J3MgYXNzaWduZWQgdG8gYSBgc3RydWN0IGluZXRfY29ubmVjdGlvbl9zb2NrX2FmX29wcyBpcHY2X3NwZWNpZmljYCBvciBzaW1pbGFyLiBBaCwgcmlnaHQuIEl0J3MgdXNlZCB0aHJvdWdoIHRoYXQgY29ubmVjdGlvbi4gU28sIGV2ZW4gdGhvdWdoIGl0J3Mgc3RhdGljLCBpdCdzIGluZGlyZWN0bHkgYWNjZXNzaWJsZSB0aHJvdWdoIHRoYXQgZnVuY3Rpb24gcG9pbnRlci4gRXhjZWxsZW50LiBXZSBjYW4gc3RpbGwgcmVhY2ggaXQuIFRpbWUgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBJUHY2IHNpZGUgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg2OCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDIxOjIyOjU2Ljc2ODU1NjExMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjA4MzU1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfdjZfc3luX3JlY3Zfc29ja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni90Y3BfaXB2Ni5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L3RjcF9pcHY2LmM9MTM0OD1zdGF0aWMgdm9pZCB0Y3BfdjZfbWFwcGVkX2NoaWxkX2luaXQoc3RydWN0IHNvY2sgKm5ld3NrLCBjb25zdCBzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTEzODEtXFxubmV0L2lwdjYvdGNwX2lwdjYuYzoxMzgyOnN0YXRpYyBzdHJ1Y3Qgc29jayAqdGNwX3Y2X3N5bl9yZWN2X3NvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTM4My1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0yMDE0PWNvbnN0IHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29ja19hZl9vcHMgaXB2Nl9zcGVjaWZpYyA9IHtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjAxOC1cXHQuY29ubl9yZXF1ZXN0XFx0ICAgPSB0Y3BfdjZfY29ubl9yZXF1ZXN0LFxcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MjAxOTpcXHQuc3luX3JlY3Zfc29ja1xcdCAgID0gdGNwX3Y2X3N5bl9yZWN2X3NvY2ssXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0yMDIwLVxcdC5uZXRfaGVhZGVyX2xlblxcdCAgID0gc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSxcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM9MjA0NT1zdGF0aWMgY29uc3Qgc3RydWN0IGluZXRfY29ubmVjdGlvbl9zb2NrX2FmX29wcyBpcHY2X21hcHBlZCA9IHtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjA0OS1cXHQuY29ubl9yZXF1ZXN0XFx0ICAgPSB0Y3BfdjZfY29ubl9yZXF1ZXN0LFxcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MjA1MDpcXHQuc3luX3JlY3Zfc29ja1xcdCAgID0gdGNwX3Y2X3N5bl9yZWN2X3NvY2ssXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0yMDUxLVxcdC5uZXRfaGVhZGVyX2xlblxcdCAgID0gc2l6ZW9mKHN0cnVjdCBpcGhkciksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDIxOjIyOjU2LjgxNDY0MzkwNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5NjEwOTIxMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEFQSSBFbnRyeXBvaW50cyBmb3IgdGhlIEtlcm5lbCdzIFRDUC9JUCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBiZXN0IHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIGZvciB0aGlzIGFuYWx5c2lzLCBhbmQgSSBuZWVkIHRvIGJlIHByZWNpc2UuIEluaXRpYWxseSwgSSB0aG91Z2h0IHRoYXQgc2luY2UgYHRjcF92Nl9zeW5fcmVjdl9zb2NrYCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYCwgSSBzaG91bGQgZXhjbHVkZSBpdCBmcm9tIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0LiBIb3dldmVyLCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoZSBleHBsaWNpdCBpbnN0cnVjdGlvbiB0byBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBUaGF04oCZcyB0aGUga2V5LlxuXG5UaGVuLCBJIHN0b3BwZWQgYW5kIHJldGhvdWdodDogYHRjcF92Nl9zeW5fcmVjdl9zb2NrYCwgZXZlbiB0aG91Z2ggaXQgaXMgc3RhdGljLCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIgKGAuc3luX3JlY3Zfc29ja2ApLiBUaGlzIG1lYW5zIGl0IGxpa2VseSB3b24ndCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgaGFzIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIFRoYXQncyBhIGdvb2QgYXJndW1lbnQgdG8ga2VlcCBpdC4gVGhlIHNhbWUgbG9naWMgbWlnaHQgYXBwbHkgdG8gb3RoZXIgZnVuY3Rpb25zIGxpa2UgYHRjcF92NF9zeW5fcmVjdl9zb2NrYCBhbmQgYHRjcF92Nl9jb25uX3JlcXVlc3RgLlxuXG5CYWNrIHRvIHRoZSBwcm9tcHQ6IG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBhcmUgcHJlZmVycmVkLiBgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGlzIG5vdCBzdGF0aWMuIFNpbmNlIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AgaXMgYSBjYWxsYmFjayBmdW5jdGlvbiBwb2ludGVyLCBpdCB3b24ndCBiZSBpbmxpbmVkLiBUaGlzIG1lYW5zIGJvdGggYXJlIHZhbGlkLlxuXG5JJ3ZlIGp1c3QgY29uZmlybWVkIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AgaXMgaW5kZWVkIGRlY2xhcmVkIHN0YXRpYy4gVGh1cywgYmFzZWQgb24gdGhlIHByaW5jaXBsZSwgSSBzaG91bGQgaW5jbHVkZSBib3RoIGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AgYmVjYXVzZSB0aGV5IGFyZSB0aGUgZXhhY3QgZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkLCBhbmQgdGhleSBhcmUgbm90IGlubGluZWQuIE9uZSBpcyBleHBvcnRlZCwgdGhlIG90aGVyIGlzIGEgY2FsbGJhY2sgZnVuY3Rpb24gcG9pbnRlci5cblxuTm93LCBsZXQncyBleHBsb3JlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMuIGB0Y3BfdjRfc2VuZF9yZXNldGAgYW5kIGB0Y3BfdjZfc2VuZF9yZXNldGAgc2VlbSByZWxldmFudCwgYnV0IHRoZXkncmUganVzdCBjYWxsZWQgYnkgb3RoZXIgZnVuY3Rpb25zLCBub3QgdGhlIGVudHJ5IHBvaW50cy5cblxuSSdsbCBwcm9jZWVkIGJ5IGNoZWNraW5nIGB0Y3BfdjRfc3luX3JlY3Zfc29ja2Agd2l0aGluIGBuZXQvaXB2NC90Y3BfaXB2NC5jYCB0byBjb25maXJtIHRoZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTA2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDIxOjIzOjAzLjc3NTc0MDYwOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzE3MDc3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfdjRfc3luX3JlY3Zfc29ja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9pcHY0LmM9MTY1NT1pbnQgdGNwX3Y0X2Nvbm5fcmVxdWVzdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTE2NzMtICovXFxubmV0L2lwdjQvdGNwX2lwdjQuYzoxNjc0OnN0cnVjdCBzb2NrICp0Y3BfdjRfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0xNjc1LVxcdFxcdFxcdFxcdCAgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0yMzY1PWNvbnN0IHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29ja19hZl9vcHMgaXB2NF9zcGVjaWZpYyA9IHtcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjM2OS1cXHQuY29ubl9yZXF1ZXN0XFx0ICAgPSB0Y3BfdjRfY29ubl9yZXF1ZXN0LFxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MjM3MDpcXHQuc3luX3JlY3Zfc29ja1xcdCAgID0gdGNwX3Y0X3N5bl9yZWN2X3NvY2ssXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0yMzcxLVxcdC5uZXRfaGVhZGVyX2xlblxcdCAgID0gc2l6ZW9mKHN0cnVjdCBpcGhkciksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDIxOjIzOjAzLjgyMjkyNTE0M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NTE2MjQ0MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFNZTiBSZWNlaXZlIFNvY2tldCBDYWxsYmFja3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSB0d28gZnVuY3Rpb25zLCBgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGFuZCBgdGNwX3Y2X3N5bl9yZWN2X3NvY2tgLiBUaGV5J3JlIGJvdGggdXNlZCBhcyBjYWxsYmFja3MgZm9yIHRoZSBgLnN5bl9yZWN2X3NvY2tgIG9wZXJhdGlvbiwgd2hpY2ggaXMgc3RhbmRhcmQgaW4gdGhpcyBhcmVhLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaW5jbHVkZSB0aGVtIGluIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0LCB0byB0cmFjayB0aGVtIHByb3Blcmx5LlxuXG5Ob3csIGNvbmNlcm5pbmcgdGhlIGNvbmZpZ3VyYXRpb25zLCBJIHNlZSB0aGF0IGBJUFY2YCBpcyByZXF1aXJlZCBmb3IgdGhlIGBuZXQvaXB2Ni90Y3BfaXB2Ni5jYCBmaWxlLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBTaW1pbGFybHksIGBJTkVUYCBpcyBuZWVkZWQgZm9yIGBuZXQvaXB2NC90Y3BfaXB2NC5jYC4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBJTkVUYCBpcyB0aGUgYXBwcm9wcmlhdGUgY29uZmlnIGZvciB0aGF0IHBhcnRpY3VsYXIgdXNlIGNhc2UgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBJdCB3b3VsZCBiZSBhIHNpbGx5IG92ZXJzaWdodCBpZiBpdCB3YXNuJ3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NzMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMjE6MjM6MDkuNDc0NTUyOTUxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MjY2MTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9pcHY0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGUtOS1cXHQgICAgIGluZXRfdGltZXdhaXRfc29jay5vIGluZXRfY29ubmVjdGlvbl9zb2NrLm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlOjEwOlxcdCAgICAgdGNwLm8gdGNwX2lucHV0Lm8gdGNwX291dHB1dC5vIHRjcF90aW1lci5vIHRjcF9pcHY0Lm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlLTExLVxcdCAgICAgdGNwX21pbmlzb2Nrcy5vIHRjcF9jb25nLm8gdGNwX21ldHJpY3MubyB0Y3BfZmFzdG9wZW4ubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDIxOjIzOjA5LjUyMDgyNTQyNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMTM5Mzk4MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBhbmQgSVB2NCBDb21waWxhdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGtlcm5lbCdzIGJ1aWxkIHByb2Nlc3MsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgdGhlIElQdjQgc3RhY2suIEkga25vdyB0aGlzIGlzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgbmV0d29yayBzdGFjaywgc28gaXQgbWFrZXMgc2Vuc2UgdGhhdCBpdCdzIGhhbmRsZWQgcHJldHR5IGNhcmVmdWxseS4gV2hhdCBJJ20gc2VlaW5nIGlzIHRoYXQgdGhlIGNvZGUgZm9yIElQdjQgaXMgY29tcGlsZWQgdW5jb25kaXRpb25hbGx5LiBJdOKAmXMgYmFrZWQgcmlnaHQgaW50byB0aGUga2VybmVsIHZpYSBgbmV0L2lwdjQvTWFrZWZpbGVgLiBUaGF0IGluY2x1c2lvbiBpcyB0cmlnZ2VyZWQgKm9ubHkqIGlmIGBDT05GSUdfSU5FVGAgaXMgc2V0LCBtZWFuaW5nIHRoZSBrZXJuZWwgaXMgYmVpbmcgYnVpbHQgd2l0aCBnZW5lcmFsIG5ldHdvcmtpbmcgc3VwcG9ydCBpbiB0aGUgZmlyc3QgcGxhY2UuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZSBmb3IgbW9kdWxhcml0eSBhbmQga2VlcGluZyB0aGUgY29uZmlndXJhdGlvbiBjbGVhbi4gSWYgSSBkaXNhYmxlIG5ldHdvcmtpbmcgZW50aXJlbHksIElQdjQgaXNuJ3QgZXZlbiBwYXJ0IG9mIHRoZSBidWlsZC4gVGhhdCdzIGdvb2Qgb3B0aW1pemF0aW9uLiBJdCBoZWxwcyBhdm9pZCBjb2RlIGJsb2F0IHdoZW4gaXQncyBub3QgbmVlZGVkLCBhbmQgZW5zdXJlcyBkZXBlbmRlbmNpZXMgYXJlIG1hbmFnZWQgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTQxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMjE6MjM6MTIuNzM0NzY3NzE1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njc3NzI2NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0L2lwdjRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQyMToyMzoxMi43ODE1NTM2M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODY5NDEyOTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNoZWNraW5nIHRoZSBgbmV0L01ha2VmaWxlYCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEJlZm9yZSBJIHByb2NlZWQgYW55IGZ1cnRoZXIsIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nIGNydWNpYWwuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBgbmV0L01ha2VmaWxlYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBidWlsZCBzeXN0ZW0ncyBkZXBlbmRlbmNpZXMgYW5kIGNvbXBpbGF0aW9uIGZsYWdzIHdpdGhpbiB0aGF0IHBhcnRpY3VsYXIgZGlyZWN0b3J5IGhhdmVuJ3QgY2hhbmdlZCBpbiBhIHdheSB0aGF0IHdvdWxkIHN1YnRseSBpbXBhY3QgbXkgY3VycmVudCB0YXNrLiBUaGlzIGlzIGp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gZWxpbWluYXRlIGEgY29tbW9uIHNvdXJjZSBvZiB1bmV4cGVjdGVkIGJlaGF2aW9yIOKAkyBJJ3ZlIGJlZW4gYnVybmVkIGJ5IGZvcmdldHRpbmcgdGhpcyBiZWZvcmUhIEdvdHRhIG1ha2Ugc3VyZSB0aGUgdG9vbGNoYWluLCBvcHRpbWl6YXRpb24gc2V0dGluZ3MsIGFuZCBsaW5rZXIgZmxhZ3MgYXJlIHN0aWxsIGFzIGV4cGVjdGVkIGZvciB0aGlzIG5ldHdvcmsgbW9kdWxlLiBUaGlzIGNvdWxkIHNhdmUgbWUgaG91cnMgb2YgZGVidWdnaW5nIGxhdGVyIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDA3LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMjE6MjM6MTguNjUwOTY5NzE0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjAzNzI1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcHY0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX05FVEZJTFRFUilcXHRcXHQrPSBuZXRmaWx0ZXIvXFxubmV0L01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19JTkVUKVxcdFxcdCs9IGlwdjQvXFxubmV0L01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19UTFMpXFx0XFx0Kz0gdGxzL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQyMToyMzoxOC42OTcwMTEzOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTI0ODQ4MTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKklQdjYgTWFrZWZpbGUgRXhhbWluYXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBkZWFsaW5nIHdpdGggbmV0d29ya2luZyBoZXJlLCBhbmQgc3BlY2lmaWNhbGx5IElQdjYuIFRoZSBpbml0aWFsIHByb21wdCBjb25maXJtZWQgYENPTkZJR19JTkVUYCwgd2hpY2ggaXMgZ29vZCDigJMgdGhhdCB0ZWxscyBtZSB0aGUgYmFzZSBJUHY0L0lQdjYgc3VwcG9ydCBpcyBlbmFibGVkLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCwgZnJvbSBhbiBhcmNoaXRlY3R1cmFsIHN0YW5kcG9pbnQsIGlzIHRvIGRpZyBpbnRvIHRoZSBgbmV0L2lwdjYvTWFrZWZpbGVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIElQdjYgY29tcG9uZW50cyBhcmUgYmVpbmcgYnVpbHQgYW5kIGxpbmtlZCwgYW5kIGhvdyB0aGV5IGludGVyYWN0IHdpdGggdGhlIGJyb2FkZXIgbmV0d29ya2luZyBzdGFjay4gVGhpcyBNYWtlZmlsZSBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCBzbyB0byBzcGVhay4gVW5kZXJzdGFuZGluZyBpdHMgc3RydWN0dXJlIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGdyYXNwIG9mIHRoZSBJUHY2IHN1YnN5c3RlbSdzIGJ1aWxkIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2NjgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQyMToyMzoyMi4yMjE4NjIyMjZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNTgzOTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9pcHY2Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvTWFrZWZpbGU9OD1pcHY2LXkgOj1cXHRhZl9pbmV0Ni5vIGFueWNhc3QubyBpcDZfb3V0cHV0Lm8gaXA2X2lucHV0Lm8gYWRkcmNvbmYubyBcXFxcXFxuLS1cXG5uZXQvaXB2Ni9NYWtlZmlsZS0xMC1cXHRcXHRyb3V0ZS5vIGlwNl9maWIubyBpcHY2X3NvY2tnbHVlLm8gbmRpc2MubyB1ZHAubyBcXFxcXFxubmV0L2lwdjYvTWFrZWZpbGU6MTE6XFx0XFx0cmF3Lm8gaWNtcC5vIG1jYXN0Lm8gcmVhc3NlbWJseS5vIHRjcF9pcHY2Lm8gcGluZy5vIFxcXFxcXG5uZXQvaXB2Ni9NYWtlZmlsZS0xMi1cXHRcXHRleHRoZHJzLm8gZGF0YWdyYW0ubyBpcDZfZmxvd2xhYmVsLm8gaW5ldDZfY29ubmVjdGlvbl9zb2NrLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQyMToyMzoyMi4yNjU0NTA0OTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxMjkwOTg3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJUHY2IGFuZCB0aGUgTmV0d29yayBNYWtlZmlsZSoqXG5cbkFscmlnaHQsIG15IG1pbmQncyBqdW1wZWQgdG8gdGhlIGBuZXQvTWFrZWZpbGVgLiBJJ20gaW1tZWRpYXRlbHkgdGhpbmtpbmcsIFwiV2hhdCBhYm91dCBJUHY2P1wiIEl0J3Mgc3VjaCBhbiBpbnRlZ3JhbCBwYXJ0IG9mIG1vZGVybiBuZXR3b3JraW5nIG5vdywgYW5kIEkgbmVlZCB0byBlbnN1cmUgaXQncyBwcm9wZXJseSBoYW5kbGVkIGluIHRoZSBidWlsZCBwcm9jZXNzLiBJIG5lZWQgdG8gcmVmcmVzaCBteXNlbGYgb24gaG93IHRoZSBJUHY2IGNvbmZpZ3VyYXRpb24gaW1wYWN0cyB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb21waWxhdGlvbiB0YXJnZXRzIHdpdGhpbiB0aGF0IE1ha2VmaWxlLiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGJlIGxvb2tpbmcgZm9yIHdoZXJlIElQdjYtcmVsYXRlZCBmaWxlcywgZmxhZ3MsIG9yIGNvbmRpdGlvbmFsIGxvZ2ljIGFyZSBpbnRyb2R1Y2VkLiBUaGVyZSBjb3VsZCBiZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIGJhc2VkIG9uIHRoZSBwcmVzZW5jZSBvZiBJUHY2IHN1cHBvcnQuIEknbSBnb2luZyB0byBxdWlja2x5IHJldmlldyBpdCB0byB2ZXJpZnkgdGhlIGJ1aWxkIHByb2Nlc3MgY29ycmVjdGx5IGxpbmtzIHRoZSBuZWNlc3NhcnkgSVB2NiBsaWJyYXJpZXMgYW5kIGluY2x1ZGVzIHRoZSBhcHByb3ByaWF0ZSBoZWFkZXIgZmlsZXMuIElzIHRoZXJlIGEgc2VwYXJhdGUgc2VjdGlvbiBkZWRpY2F0ZWQgdG8gSVB2Niwgb3IgaXMgaXQgd292ZW4gdGhyb3VnaG91dD8gSSBuZWVkIHRvIG1ha2UgY2VydGFpbiB0aGF0IHRoZSBJUHY2IGJ1aWxkIGlzIHJvYnVzdCBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHVuZm9yZXNlZW4gaXNzdWVzIG9yIGRlcGVuZGVuY2llcyBvbiBsZWdhY3kgSVB2NCBjb21wb25lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDIyLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMjE6MjM6MjUuOTc4MzYzMjc5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTQxMzYzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcHY2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvTWFrZWZpbGU9MjE9b2JqLSQoQ09ORklHX0lORVRfUFNQKVxcdFxcdCs9IHBzcC9cXG5uZXQvTWFrZWZpbGU6MjI6b2JqLXlcXHRcXHRcXHRcXHQrPSBpcHY2L1xcbm5ldC9NYWtlZmlsZS0yMy1vYmotJChDT05GSUdfUEFDS0VUKVxcdFxcdCs9IHBhY2tldC9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMjE6MjM6MjYuMDIzNzgxNzk0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTM3MDk5NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWxseSBVbm5lY2Vzc2FyeSBJUHY2IERlcGVuZGVuY3kqKlxuXG5IbW0sIHRoaXMgaXMgcGVjdWxpYXIuIFRoZSBgbmV0L01ha2VmaWxlYCBzZWVtcyB0byBhbHdheXMgaW5jbHVkZSB0aGUgYGlwdjYvYCBkaXJlY3RvcnkgdW5jb25kaXRpb25hbGx5LiBUaGF0IGZlZWxz4oCmIGEgbGl0dGxlIG9mZiwgZG9lc24ndCBpdD8gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSB1bmRlcnN0YW5kaW5nLiBJJ20gZ29pbmcgdG8gcmV2aXNpdCBgbmV0L2lwdjYvTWFrZWZpbGVgIGFuZCBzZWUgaWYgdGhlcmUncyBzb21ldGhpbmcgSSdtIG1pc3NpbmcuIFBlcmhhcHMgdGhlcmUncyBhIGdvb2QgcmVhc29uIGZvciB0aGlzIGltcGxpY2l0IGluY2x1c2lvbiwgc29tZSBzdWJ0bGUgaW50ZXJhY3Rpb24gSSdtIG5vdCBpbW1lZGlhdGVseSBncmFzcGluZywgb3IgYSBzcGVjaWZpYyBkZXNpZ24gY29uc3RyYWludCBkcml2aW5nIHRoaXMuIExldCdzIHNlZSBpZiB0aGlzIGluY2x1c2lvbiBpcyBhcyBzdHJhaWdodGZvcndhcmQgYXMgaXQgYXBwZWFycywgb3IgaWYgdGhlcmUncyBhIG1vcmUgbnVhbmNlZCBleHBsYW5hdGlvbiB0aGF0IEknbSBvdmVybG9va2luZy4gSSBzdXNwZWN0IHRoZXJlJ3MgbW9yZSBjb250ZXh0IG5lZWRlZCBiZWZvcmUgYSBkZWNpc2lvbiBpcyB3YXJyYW50ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNDQsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQyMToyMzoyOS4wNzc0OTQzODlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NTQyOTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9iai1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvTWFrZWZpbGUtNS1cXG5uZXQvaXB2Ni9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19JUFY2KSArPSBpcHY2Lm9cXG5uZXQvaXB2Ni9NYWtlZmlsZS03LVxcbi0tXFxubmV0L2lwdjYvTWFrZWZpbGU9Mjg9aXB2Ni0kKENPTkZJR19JUFY2X0lPQU02X0xXVFVOTkVMKSArPSBpb2FtNl9pcHR1bm5lbC5vXFxubmV0L2lwdjYvTWFrZWZpbGUtMjktXFxubmV0L2lwdjYvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX0lORVQ2X0FIKSArPSBhaDYub1xcbm5ldC9pcHY2L01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19JTkVUNl9FU1ApICs9IGVzcDYub1xcbm5ldC9pcHY2L01ha2VmaWxlOjMyOm9iai0kKENPTkZJR19JTkVUNl9FU1BfT0ZGTE9BRCkgKz0gZXNwNl9vZmZsb2FkLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZTozMzpvYmotJChDT05GSUdfSU5FVDZfSVBDT01QKSArPSBpcGNvbXA2Lm9cXG5uZXQvaXB2Ni9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfSU5FVDZfWEZSTV9UVU5ORUwpICs9IHhmcm02X3R1bm5lbC5vXFxubmV0L2lwdjYvTWFrZWZpbGU6MzU6b2JqLSQoQ09ORklHX0lORVQ2X1RVTk5FTCkgKz0gdHVubmVsNi5vXFxubmV0L2lwdjYvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0lQVjZfTUlQNikgKz0gbWlwNi5vXFxubmV0L2lwdjYvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX0lQVjZfSUxBKSArPSBpbGEvXFxubmV0L2lwdjYvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX05FVEZJTFRFUilcXHQrPSBuZXRmaWx0ZXIvXFxubmV0L2lwdjYvTWFrZWZpbGUtMzktXFxubmV0L2lwdjYvTWFrZWZpbGU6NDA6b2JqLSQoQ09ORklHX0lQVjZfVlRJKSArPSBpcDZfdnRpLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZTo0MTpvYmotJChDT05GSUdfSVBWNl9TSVQpICs9IHNpdC5vXFxubmV0L2lwdjYvTWFrZWZpbGU6NDI6b2JqLSQoQ09ORklHX0lQVjZfVFVOTkVMKSArPSBpcDZfdHVubmVsLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfSVBWNl9HUkUpICs9IGlwNl9ncmUub1xcbm5ldC9pcHY2L01ha2VmaWxlOjQ0Om9iai0kKENPTkZJR19JUFY2X0ZPVSkgKz0gZm91Ni5vXFxubmV0L2lwdjYvTWFrZWZpbGUtNDUtXFxubmV0L2lwdjYvTWFrZWZpbGU6NDY6b2JqLXkgKz0gYWRkcmNvbmZfY29yZS5vIGV4dGhkcnNfY29yZS5vIGlwNl9jaGVja3N1bS5vIGlwNl9pY21wLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZTo0NzpvYmotJChDT05GSUdfSU5FVCkgKz0gb3V0cHV0X2NvcmUubyBwcm90b2NvbC5vIFxcXFxcXG5uZXQvaXB2Ni9NYWtlZmlsZS00OC1cXHRcXHRcXHRpcDZfb2ZmbG9hZC5vIGV4dGhkcnNfb2ZmbG9hZC5vXFxubmV0L2lwdjYvTWFrZWZpbGUtNDktXFxubmV0L2lwdjYvTWFrZWZpbGU6NTA6b2JqLSQoc3Vic3QgbSx5LCQoQ09ORklHX0lQVjYpKSArPSBpbmV0Nl9oYXNodGFibGVzLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZS01MS1cXG5uZXQvaXB2Ni9NYWtlZmlsZT01Mj1pZm5lcSAoJChDT05GSUdfSVBWNiksKVxcbm5ldC9pcHY2L01ha2VmaWxlOjUzOm9iai0kKENPTkZJR19ORVRfVURQX1RVTk5FTCkgKz0gaXA2X3VkcF90dW5uZWwub1xcbm5ldC9pcHY2L01ha2VmaWxlOjU0Om9iai15ICs9IG1jYXN0X3Nub29wLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZTo1NTpvYmotJChDT05GSUdfVENQX0FPKSArPSB0Y3BfYW8ub1xcbm5ldC9pcHY2L01ha2VmaWxlLTU2LWVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDIxOjIzOjI5LjEyMjA0MzI0NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjQwOTIxNjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRDUCBDb25uZWN0aW9uIEVzdGFibGlzaG1lbnQgQ2hhbmdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGV4cGVydCBleWUgaG9uZXMgaW4gb24gdGhlIGNvcmUgY2hhbmdlLiBJdCdzIHRvdWNoaW5nIGhvdyBgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGFuZCBgdGNwX3Y2X3N5bl9yZWN2X3NvY2tgIGhhbmRsZSBlcnJvcnMgY29taW5nIGJhY2sgZnJvbSBgX19pbmV0X2luaGVyaXRfcG9ydGAuIFNwZWNpZmljYWxseSwgaXQgYXBwZWFycyB0aGUgcGF0Y2ggaXMgYWx0ZXJpbmcgaG93IHRoZSBzeXN0ZW0gcmVhY3RzIHRvIGFuIGAtRU5PRU5UYCByZXR1cm4gZnJvbSB0aGF0IGZ1bmN0aW9uLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgYF9faW5ldF9pbmhlcml0X3BvcnRgIGlzIHJpZ2h0IGluIHRoZSBoZWFydCBvZiB0aGUgU1lOLVJFQ1Ygc3RhdGUgZHVyaW5nIFRDUCBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQuXG5cbldlIGtub3cgYENPTkZJR19JUFY2YCBpcyByZWxldmFudCBoZXJlLCB3aGljaCBtZWFucyBgaXB2Ni5vYCBpcyBpbiB0aGUgcGljdHVyZSwgYW5kIGNvbnNlcXVlbnRseSBgdGNwX2lwdjYub2AuIFNpbmNlIHRoaXMgZGlyZWN0bHkgaW1wYWN0cyB0aGUgVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCwgYSBmdW5jdGlvbiBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBpcyBhIGRpcmVjdCBjb25zZXF1ZW5jZSBvZiBuZXR3b3JrIHRyYWZmaWMsIGl0J3MgYSAqZGVmaW5pdGUqIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gQW55IGNoYW5nZSBsaWtlIHRoaXMsIGVzcGVjaWFsbHkgZHVyaW5nIHRoZSBTWU4tUkVDViBzdGFnZSwgaXMgd29ydGggYSB0aG9yb3VnaCBpbnZlc3RpZ2F0aW9uLiBNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB0aG9zZSB0d28gY3J1Y2lhbCBmdW5jdGlvbnMsIGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AsIGFuZCBJJ20gZ29pbmcgdG8gd2FudCB0byB2ZXJpZnkgYElORVRgIGFuZCBgSVBWNmAgYXJlIGVuYWJsZWQsIG9mIGNvdXJzZS5cblxuSSdsbCBiZSB1c2luZyB0aGUgc2V0LXJlc3VsdHMgdG9vbCBmb3IgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM2MiwiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMjE6MjM6MzQuNzYyOTY4MDQzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODEzMTk3NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORVRcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfdjRfc3luX3JlY3Zfc29ja1wiLFxuICAgIFwidGNwX3Y2X3N5bl9yZWN2X3NvY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCAoU1lOLVJFQ1Ygc3RhdGUpIGZvciBib3RoIElQdjQgYW5kIElQdjYuIFNwZWNpZmljYWxseSwgaXQgY2hhbmdlcyB0aGUgYmVoYXZpb3Igd2hlbiBgX19pbmV0X2luaGVyaXRfcG9ydGAgcmV0dXJucyBgLUVOT0VOVGAgdG8gc2VuZCBhIFRDUCByZXNldCBpbnN0ZWFkIG9mIGp1c3QgZHJvcHBpbmcgdGhlIGNvbm5lY3Rpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2sgdGhhdCBpcyByZWFjaGFibGUgdmlhIG5ldHdvcmsgdHJhZmZpYyBhbmQgc29ja2V0IG9wZXJhdGlvbnMsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiLFxuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjcF92NF9zeW5fcmVjdl9zb2NrXCIsXG4gICAgXCJ0Y3BfdjZfc3luX3JlY3Zfc29ja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBpbiBUQ1AgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IChTWU4tUkVDViBzdGF0ZSkgZm9yIGJvdGggSVB2NCBhbmQgSVB2Ni4gU3BlY2lmaWNhbGx5LCBpdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciB3aGVuIGBfX2luZXRfaW5oZXJpdF9wb3J0YCByZXR1cm5zIGAtRU5PRU5UYCB0byBzZW5kIGEgVENQIHJlc2V0IGluc3RlYWQgb2YganVzdCBkcm9wcGluZyB0aGUgY29ubmVjdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFRDUCBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0d29yayB0cmFmZmljIGFuZCBzb2NrZXQgb3BlcmF0aW9ucywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMjE6MjM6MzQuODQ0Mjk0OTg1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzgyNjkwMzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMjE6MjM6MzQuODQ0ODQwMTg1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjgzODIxNDEyMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIHRoZSBUQ1AgU1lOIHJlY2VpdmUgcGF0aHMgKGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2ApIHRvIHNlbmQgYSBUQ1AgcmVzZXQgaWYgYF9faW5ldF9pbmhlcml0X3BvcnRgIHJldHVybnMgYC1FTk9FTlRgLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGNoYW5nZXMgYXJlIHB1cmVseSBjb250cm9sIGZsb3cgcmVsYXRlZC4gU3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgKGxpa2UgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgdGhhdCBtaWdodCBhcmlzZSBmcm9tIHRoaXMgY2hhbmdlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcxZjI3MWVjYWMzZGI1ODhkMmZhY2U1YTNjZjY0MGFmZGY3ZGMzMGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxMSAyMToyMjo0NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pcHY0LmMgYi9uZXQvaXB2NC90Y3BfaXB2NC5jXG5pbmRleCBiODg4N2NkZDY2YzU3Li45YTE0YzJlNTZlYzNhIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX2lwdjQuY1xuKysrIGIvbmV0L2lwdjQvdGNwX2lwdjQuY1xuQEAgLTE2OTAsNiArMTY5MCw3IEBAIHN0cnVjdCBzb2NrICp0Y3BfdjRfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRpbnQgbDNpbmRleDtcbiAjZW5kaWZcbiBcdHN0cnVjdCBpcF9vcHRpb25zX3JjdSAqaW5ldF9vcHQ7XG4rXHRpbnQgcmV0O1xuIFxuIFx0aWYgKHNrX2FjY2VwdHFfaXNfZnVsbChzaykpXG4gXHRcdGdvdG8gZXhpdF9vdmVyZmxvdztcbkBAIC0xNzU2LDggKzE3NTcsMTIgQEAgc3RydWN0IHNvY2sgKnRjcF92NF9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0Z290byBwdXRfYW5kX2V4aXQ7IC8qIE9PTSwgcmVsZWFzZSBiYWNrIG1lbW9yeSAqL1xuICNlbmRpZlxuIFxuLVx0aWYgKF9faW5ldF9pbmhlcml0X3BvcnQoc2ssIG5ld3NrKSBcdTAwM2MgMClcbitcdHJldCA9IF9faW5ldF9pbmhlcml0X3BvcnQoc2ssIG5ld3NrKTtcbitcdGlmICh1bmxpa2VseShyZXQgXHUwMDNjIDApKSB7XG4rXHRcdGlmIChyZXQgPT0gLUVOT0VOVClcbitcdFx0XHRnb3RvIHNlbmRfcmVzZXRfYW5kX2V4aXQ7XG4gXHRcdGdvdG8gcHV0X2FuZF9leGl0O1xuK1x0fVxuIFx0Km93bl9yZXEgPSBpbmV0X2VoYXNoX25vbGlzdGVuKG5ld3NrLCByZXFfdG9fc2socmVxX3VuaGFzaCksXG4gXHRcdFx0XHQgICAgICAgXHUwMDI2Zm91bmRfZHVwX3NrKTtcbiBcdGlmIChsaWtlbHkoKm93bl9yZXEpKSB7XG5AQCAtMTc4NCw2ICsxNzg5LDggQEAgc3RydWN0IHNvY2sgKnRjcF92NF9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBleGl0OlxuIFx0dGNwX2xpc3RlbmRyb3Aoc2spO1xuIFx0cmV0dXJuIE5VTEw7XG4rc2VuZF9yZXNldF9hbmRfZXhpdDpcbitcdHRjcF92NF9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1NUQVRFKTtcbiBwdXRfYW5kX2V4aXQ6XG4gXHRuZXdpbmV0LVx1MDAzZWluZXRfb3B0ID0gTlVMTDtcbiBcdGluZXRfY3NrX3ByZXBhcmVfZm9yY2VkX2Nsb3NlKG5ld3NrKTtcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni90Y3BfaXB2Ni5jIGIvbmV0L2lwdjYvdGNwX2lwdjYuY1xuaW5kZXggOWU5MTU1YjFiM2FhNy4uZWNiMGI0MDU3MDNjMyAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3RjcF9pcHY2LmNcbisrKyBiL25ldC9pcHY2L3RjcF9pcHY2LmNcbkBAIC0xNDAwLDYgKzE0MDAsNyBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKnRjcF92Nl9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKlxuIFx0aW50IGwzaW5kZXg7XG4gI2VuZGlmXG4gXHRzdHJ1Y3QgZmxvd2k2IGZsNjtcbitcdGludCByZXQ7XG4gXG4gXHRpZiAoc2tiLVx1MDAzZXByb3RvY29sID09IGh0b25zKEVUSF9QX0lQKSlcbiBcdFx0cmV0dXJuIHRjcF92NF9zeW5fcmVjdl9zb2NrKHNrLCBza2IsIHJlcSwgZHN0LFxuQEAgLTE1MTIsOCArMTUxMywxMiBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKnRjcF92Nl9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKlxuIFx0XHRnb3RvIHB1dF9hbmRfZXhpdDsgLyogT09NICovXG4gI2VuZGlmXG4gXG4tXHRpZiAoX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spIFx1MDAzYyAwKVxuK1x0cmV0ID0gX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spO1xuK1x0aWYgKHVubGlrZWx5KHJldCBcdTAwM2MgMCkpIHtcbitcdFx0aWYgKHJldCA9PSAtRU5PRU5UKVxuK1x0XHRcdGdvdG8gc2VuZF9yZXNldF9hbmRfZXhpdDtcbiBcdFx0Z290byBwdXRfYW5kX2V4aXQ7XG4rXHR9XG4gXHQqb3duX3JlcSA9IGluZXRfZWhhc2hfbm9saXN0ZW4obmV3c2ssIHJlcV90b19zayhyZXFfdW5oYXNoKSxcbiBcdFx0XHRcdCAgICAgICBcdTAwMjZmb3VuZF9kdXBfc2spO1xuIFx0aWYgKCpvd25fcmVxKSB7XG5AQCAtMTU0Nyw2ICsxNTUyLDggQEAgc3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpcbiBleGl0OlxuIFx0dGNwX2xpc3RlbmRyb3Aoc2spO1xuIFx0cmV0dXJuIE5VTEw7XG4rc2VuZF9yZXNldF9hbmRfZXhpdDpcbitcdHRjcF92Nl9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1NUQVRFKTtcbiBwdXRfYW5kX2V4aXQ6XG4gXHRpbmV0X2Nza19wcmVwYXJlX2ZvcmNlZF9jbG9zZShuZXdzayk7XG4gXHR0Y3BfZG9uZShuZXdzayk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQyMToyMzozNC44NDQ4NDA4NzVaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODM4MjEyMDQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBUaGlzIFRDUCBTWU4gUmVjZWl2ZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdHdlYWtpbmcgYHRjcF92NF9zeW5fcmVjdl9zb2NrYCBhbmQgYHRjcF92Nl9zeW5fcmVjdl9zb2NrYCBpbiB0aGUgSVB2NCBhbmQgSVB2NiBUQ1AgaW1wbGVtZW50YXRpb25zLCByZXNwZWN0aXZlbHkuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGNoZWNraW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgYF9faW5ldF9pbmhlcml0X3BvcnQoc2ssIG5ld3NrKWAuIElmIHRoYXQgZnVuY3Rpb24gdGhyb3dzIGFuIGAtRU5PRU5UYCBlcnJvciwgdGhlIHBhdGNoIGRpdmVydHMgZXhlY3V0aW9uIHRvIGBzZW5kX3Jlc2V0X2FuZF9leGl0YC4gRnJvbSB0aGVyZSwgaXQgY2FsbHMgZWl0aGVyIGB0Y3BfdjRfc2VuZF9yZXNldGAgb3IgYHRjcF92Nl9zZW5kX3Jlc2V0YCB3aXRoIHRoZSBzb2NrZXQgKGBza2ApIGFuZCBzb2NrZXQgYnVmZmVyIChgc2tiYCkgYmVmb3JlIGV4aXRpbmcuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgYW55IHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gTGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgcXVpY2sgc2NhbiwgaXQgbG9va3MgbGlrZSB0aGlzIGlzIHB1cmVseSBhIGNvbnRyb2wtZmxvdyBjaGFuZ2U7IGVycm9yIGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkuIFRoZSBrZXkgYXJndW1lbnRzIHRvIGB0Y3BfdjRfc2VuZF9yZXNldGAgYW5kIGB0Y3BfdjZfc2VuZF9yZXNldGAgKHNrIGFuZCBza2IpIGFyZSBhbHJlYWR5IGluaXRpYWxpemVkIHdpdGhpbiB0aGUgZnVuY3Rpb25zIHRoYXQgY2FsbCB0aGVtLCByaWdodD8gVGhleSdyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvIGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AuIEkgZG9uJ3Qgc2VlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIGFsbG9jYXRlZCwgb3IgYW55IG5ldyBmaWVsZHMgYmVpbmcgaW50cm9kdWNlZCB0aGF0IG1pZ2h0IG5vdCBiZSBpbml0aWFsaXplZCwgbm9yIGFueSBtZW1vcnkgY29waWVkIHRvIHVzZXJzcGFjZS4gU28sIEknZCBzYXkgdGhlIGxpa2VsaWhvb2Qgb2YgaW50cm9kdWNpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgaGVyZSBpcyBuZWdsaWdpYmxlLCB6ZXJvIGV2ZW4uIFN0YW5kYXJkIEtlcm5lbCBBZGRyZXNzIFNhbml0aXplciAoS0FTQU4pLCBMb2NrZGVwLCBhbmQgb3RoZXIgc3RhbmRhcmQgZGVidWdnaW5nIHRvb2xzIGFyZSBhbHJlYWR5IGluIHBsYWNlIGFuZCBzaG91bGQgY2F0Y2ggYW55ICpnZW5lcmFsKiBidWdzLiBCdXQsIHRoaXMgZG9lc24ndCBldmVuIGludHJvZHVjZSBhIG1lbW9yeSBjb3JydXB0aW9uIHJpc2ssIGl0J3MganVzdCBhYm91dCBlcnJvciBoYW5kbGluZy5cblxuVG8gYmUgZXh0cmEgdGhvcm91Z2gsIGxldCdzIHZlcmlmeSB3aGF0IGB0Y3BfdjRfc2VuZF9yZXNldGAgYW5kIGB0Y3BfdjZfc2VuZF9yZXNldGAgYXJlIGRvaW5nLiBUaGV5IGFyZSBzdGFuZGFyZCBmdW5jdGlvbnMgZm9yIHNlbmRpbmcgYSBUQ1AgUlNUIHBhY2tldCBhbmQsIGFzIGZhciBhcyBJIGNhbiBzZWUsIGRvbid0IHRoZW1zZWx2ZXMgaW52b2x2ZSB0aGUgdXNlIG9mIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS5cblxuVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGRvZXNuJ3QgbmVlZCBLTVNBTiBzcGVjaWZpY2FsbHkuIE15IHJlYXNvbmluZyBpcyB0aGF0IHRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIFRDUCBTWU4gcmVjZWl2ZSBwYXRocywgYnV0IG9ubHkgdG8gaGFuZGxlIGEgc3BlY2lmaWMgZXJyb3IgY29uZGl0aW9uIGZyb20gYF9faW5ldF9pbmhlcml0X3BvcnRgLiBJdCdzIGp1c3Qgc2VuZGluZyBhIFRDUCByZXNldCBpbiB0aGF0IGNhc2UuIEl0IGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMgb3IgYW55IGRhdGEgc3RydWN0dXJlcyB0aGF0IGNvdWxkIGxlYWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkuIEtBU0FOIGZ1enppbmcgYW5kIHRoZSBleGlzdGluZyBkZWJ1Z2dpbmcgaW5mcmFzdHJ1Y3R1cmUgYXJlIG1vcmUgdGhhbiBhZGVxdWF0ZSBmb3IgdGhpcyBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NjUsIk91dHB1dFRva2VucyI6MTQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQ4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMjE6MjM6NDMuMjI2OTY0MjRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIHRoZSBUQ1AgU1lOIHJlY2VpdmUgcGF0aHMgKGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2ApIHRvIHNlbmQgYSBUQ1AgcmVzZXQgaWYgYF9faW5ldF9pbmhlcml0X3BvcnRgIHJldHVybnMgYC1FTk9FTlRgLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGNoYW5nZXMgYXJlIHB1cmVseSBjb250cm9sIGZsb3cgcmVsYXRlZC4gU3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgKGxpa2UgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgdGhhdCBtaWdodCBhcmlzZSBmcm9tIHRoaXMgY2hhbmdlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIHRoZSBUQ1AgU1lOIHJlY2VpdmUgcGF0aHMgKGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2ApIHRvIHNlbmQgYSBUQ1AgcmVzZXQgaWYgYF9faW5ldF9pbmhlcml0X3BvcnRgIHJldHVybnMgYC1FTk9FTlRgLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGNoYW5nZXMgYXJlIHB1cmVseSBjb250cm9sIGZsb3cgcmVsYXRlZC4gU3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgKGxpa2UgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgdGhhdCBtaWdodCBhcmlzZSBmcm9tIHRoaXMgY2hhbmdlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowlrv2v[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-11 21:21:37 +0000 UTC FinishedAt: 2026-08-11 21:23:44 +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": "cba9ccb47e9fa4cc77692fb896cc5ab57a667882", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET", "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": "cba9ccb47e9fa4cc77692fb896cc5ab57a667882", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET", "IPV6" ], "series_id": "70149b91-efa9-4acd-9871-d57bd33bf379" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tcp_v4_syn_recv_sock", "tcp_v6_syn_recv_sock" ], "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+CgkJCTx0ZD4yMDI2LzA4LzExIDIxOjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjcF92NF9zeW5fcmVjdl9zb2NrJiMzNDssCiAgICAmIzM0O3RjcF92Nl9zeW5fcmVjdl9zb2NrJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgaW4gdGhlIFRDUCBTWU4gcmVjZWl2ZSBwYXRocyAoYHRjcF92NF9zeW5fcmVjdl9zb2NrYCBhbmQgYHRjcF92Nl9zeW5fcmVjdl9zb2NrYCkgdG8gc2VuZCBhIFRDUCByZXNldCBpZiBgX19pbmV0X2luaGVyaXRfcG9ydGAgcmV0dXJucyBgLUVOT0VOVGAuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IGNvbnRyb2wgZmxvdyByZWxhdGVkLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlcyAobGlrZSB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB0aGF0IG1pZ2h0IGFyaXNlIGZyb20gdGhpcyBjaGFuZ2UuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBpbiBUQ1AgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IChTWU4tUkVDViBzdGF0ZSkgZm9yIGJvdGggSVB2NCBhbmQgSVB2Ni4gU3BlY2lmaWNhbGx5LCBpdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciB3aGVuIGBfX2luZXRfaW5oZXJpdF9wb3J0YCByZXR1cm5zIGAtRU5PRU5UYCB0byBzZW5kIGEgVENQIHJlc2V0IGluc3RlYWQgb2YganVzdCBkcm9wcGluZyB0aGUgY29ubmVjdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFRDUCBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0d29yayB0cmFmZmljIGFuZCBzb2NrZXQgb3BlcmF0aW9ucywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDcxZjI3MWVjYWMzZGI1ODhkMmZhY2U1YTNjZjY0MGFmZGY3ZGMzMGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxMSAyMToyMjo0NiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaXB2NC5jIGIvbmV0L2lwdjQvdGNwX2lwdjQuY1xuaW5kZXggYjg4ODdjZGQ2NmM1Ny4uOWExNGMyZTU2ZWMzYSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF9pcHY0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcF9pcHY0LmNcbkBAIC0xNjkwLDYgJiM0MzsxNjkwLDcgQEAgc3RydWN0IHNvY2sgKnRjcF92NF9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGludCBsM2luZGV4O1xuICNlbmRpZlxuIFx0c3RydWN0IGlwX29wdGlvbnNfcmN1ICppbmV0X29wdDtcbiYjNDM7XHRpbnQgcmV0O1xuIFxuIFx0aWYgKHNrX2FjY2VwdHFfaXNfZnVsbChzaykpXG4gXHRcdGdvdG8gZXhpdF9vdmVyZmxvdztcbkBAIC0xNzU2LDggJiM0MzsxNzU3LDEyIEBAIHN0cnVjdCBzb2NrICp0Y3BfdjRfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGdvdG8gcHV0X2FuZF9leGl0OyAvKiBPT00sIHJlbGVhc2UgYmFjayBtZW1vcnkgKi9cbiAjZW5kaWZcbiBcbi1cdGlmIChfX2luZXRfaW5oZXJpdF9wb3J0KHNrLCBuZXdzaykgXHUwMDNjIDApXG4mIzQzO1x0cmV0ID0gX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spO1xuJiM0MztcdGlmICh1bmxpa2VseShyZXQgXHUwMDNjIDApKSB7XG4mIzQzO1x0XHRpZiAocmV0ID09IC1FTk9FTlQpXG4mIzQzO1x0XHRcdGdvdG8gc2VuZF9yZXNldF9hbmRfZXhpdDtcbiBcdFx0Z290byBwdXRfYW5kX2V4aXQ7XG4mIzQzO1x0fVxuIFx0Km93bl9yZXEgPSBpbmV0X2VoYXNoX25vbGlzdGVuKG5ld3NrLCByZXFfdG9fc2socmVxX3VuaGFzaCksXG4gXHRcdFx0XHQgICAgICAgXHUwMDI2Zm91bmRfZHVwX3NrKTtcbiBcdGlmIChsaWtlbHkoKm93bl9yZXEpKSB7XG5AQCAtMTc4NCw2ICYjNDM7MTc4OSw4IEBAIHN0cnVjdCBzb2NrICp0Y3BfdjRfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gZXhpdDpcbiBcdHRjcF9saXN0ZW5kcm9wKHNrKTtcbiBcdHJldHVybiBOVUxMO1xuJiM0MztzZW5kX3Jlc2V0X2FuZF9leGl0OlxuJiM0MztcdHRjcF92NF9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1NUQVRFKTtcbiBwdXRfYW5kX2V4aXQ6XG4gXHRuZXdpbmV0LVx1MDAzZWluZXRfb3B0ID0gTlVMTDtcbiBcdGluZXRfY3NrX3ByZXBhcmVfZm9yY2VkX2Nsb3NlKG5ld3NrKTtcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni90Y3BfaXB2Ni5jIGIvbmV0L2lwdjYvdGNwX2lwdjYuY1xuaW5kZXggOWU5MTU1YjFiM2FhNy4uZWNiMGI0MDU3MDNjMyAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3RjcF9pcHY2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L3RjcF9pcHY2LmNcbkBAIC0xNDAwLDYgJiM0MzsxNDAwLDcgQEAgc3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpcbiBcdGludCBsM2luZGV4O1xuICNlbmRpZlxuIFx0c3RydWN0IGZsb3dpNiBmbDY7XG4mIzQzO1x0aW50IHJldDtcbiBcbiBcdGlmIChza2ItXHUwMDNlcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApKVxuIFx0XHRyZXR1cm4gdGNwX3Y0X3N5bl9yZWN2X3NvY2soc2ssIHNrYiwgcmVxLCBkc3QsXG5AQCAtMTUxMiw4ICYjNDM7MTUxMywxMiBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKnRjcF92Nl9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKlxuIFx0XHRnb3RvIHB1dF9hbmRfZXhpdDsgLyogT09NICovXG4gI2VuZGlmXG4gXG4tXHRpZiAoX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spIFx1MDAzYyAwKVxuJiM0MztcdHJldCA9IF9faW5ldF9pbmhlcml0X3BvcnQoc2ssIG5ld3NrKTtcbiYjNDM7XHRpZiAodW5saWtlbHkocmV0IFx1MDAzYyAwKSkge1xuJiM0MztcdFx0aWYgKHJldCA9PSAtRU5PRU5UKVxuJiM0MztcdFx0XHRnb3RvIHNlbmRfcmVzZXRfYW5kX2V4aXQ7XG4gXHRcdGdvdG8gcHV0X2FuZF9leGl0O1xuJiM0MztcdH1cbiBcdCpvd25fcmVxID0gaW5ldF9laGFzaF9ub2xpc3RlbihuZXdzaywgcmVxX3RvX3NrKHJlcV91bmhhc2gpLFxuIFx0XHRcdFx0ICAgICAgIFx1MDAyNmZvdW5kX2R1cF9zayk7XG4gXHRpZiAoKm93bl9yZXEpIHtcbkBAIC0xNTQ3LDYgJiM0MzsxNTUyLDggQEAgc3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpcbiBleGl0OlxuIFx0dGNwX2xpc3RlbmRyb3Aoc2spO1xuIFx0cmV0dXJuIE5VTEw7XG4mIzQzO3NlbmRfcmVzZXRfYW5kX2V4aXQ6XG4mIzQzO1x0dGNwX3Y2X3NlbmRfcmVzZXQoc2ssIHNrYiwgU0tfUlNUX1JFQVNPTl9UQ1BfU1RBVEUpO1xuIHB1dF9hbmRfZXhpdDpcbiBcdGluZXRfY3NrX3ByZXBhcmVfZm9yY2VkX2Nsb3NlKG5ld3NrKTtcbiBcdHRjcF9kb25lKG5ld3NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5FVCYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX3Y0X3N5bl9yZWN2X3NvY2smIzM0OywKICAgICYjMzQ7dGNwX3Y2X3N5bl9yZWN2X3NvY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIGluIFRDUCBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgKFNZTi1SRUNWIHN0YXRlKSBmb3IgYm90aCBJUHY0IGFuZCBJUHY2LiBTcGVjaWZpY2FsbHksIGl0IGNoYW5nZXMgdGhlIGJlaGF2aW9yIHdoZW4gYF9faW5ldF9pbmhlcml0X3BvcnRgIHJldHVybnMgYC1FTk9FTlRgIHRvIHNlbmQgYSBUQ1AgcmVzZXQgaW5zdGVhZCBvZiBqdXN0IGRyb3BwaW5nIHRoZSBjb25uZWN0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgVENQIHN0YWNrIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBuZXR3b3JrIHRyYWZmaWMgYW5kIHNvY2tldCBvcGVyYXRpb25zLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzFmMjcxZWNhYzNkYjU4OGQyZmFjZTVhM2NmNjQwYWZkZjdkYzMwZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDExIDIxOjIyOjQ2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lwdjQuYyBiL25ldC9pcHY0L3RjcF9pcHY0LmMKaW5kZXggYjg4ODdjZGQ2NmM1Ny4uOWExNGMyZTU2ZWMzYSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX2lwdjQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfaXB2NC5jCkBAIC0xNjkwLDYgJiM0MzsxNjkwLDcgQEAgc3RydWN0IHNvY2sgKnRjcF92NF9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlpbnQgbDNpbmRleDsKICNlbmRpZgogCXN0cnVjdCBpcF9vcHRpb25zX3JjdSAqaW5ldF9vcHQ7CiYjNDM7CWludCByZXQ7CiAKIAlpZiAoc2tfYWNjZXB0cV9pc19mdWxsKHNrKSkKIAkJZ290byBleGl0X292ZXJmbG93OwpAQCAtMTc1Niw4ICYjNDM7MTc1NywxMiBAQCBzdHJ1Y3Qgc29jayAqdGNwX3Y0X3N5bl9yZWN2X3NvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlnb3RvIHB1dF9hbmRfZXhpdDsgLyogT09NLCByZWxlYXNlIGJhY2sgbWVtb3J5ICovCiAjZW5kaWYKIAotCWlmIChfX2luZXRfaW5oZXJpdF9wb3J0KHNrLCBuZXdzaykgJmx0OyAwKQomIzQzOwlyZXQgPSBfX2luZXRfaW5oZXJpdF9wb3J0KHNrLCBuZXdzayk7CiYjNDM7CWlmICh1bmxpa2VseShyZXQgJmx0OyAwKSkgewomIzQzOwkJaWYgKHJldCA9PSAtRU5PRU5UKQomIzQzOwkJCWdvdG8gc2VuZF9yZXNldF9hbmRfZXhpdDsKIAkJZ290byBwdXRfYW5kX2V4aXQ7CiYjNDM7CX0KIAkqb3duX3JlcSA9IGluZXRfZWhhc2hfbm9saXN0ZW4obmV3c2ssIHJlcV90b19zayhyZXFfdW5oYXNoKSwKIAkJCQkgICAgICAgJmFtcDtmb3VuZF9kdXBfc2spOwogCWlmIChsaWtlbHkoKm93bl9yZXEpKSB7CkBAIC0xNzg0LDYgJiM0MzsxNzg5LDggQEAgc3RydWN0IHNvY2sgKnRjcF92NF9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIGV4aXQ6CiAJdGNwX2xpc3RlbmRyb3Aoc2spOwogCXJldHVybiBOVUxMOwomIzQzO3NlbmRfcmVzZXRfYW5kX2V4aXQ6CiYjNDM7CXRjcF92NF9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1NUQVRFKTsKIHB1dF9hbmRfZXhpdDoKIAluZXdpbmV0LSZndDtpbmV0X29wdCA9IE5VTEw7CiAJaW5ldF9jc2tfcHJlcGFyZV9mb3JjZWRfY2xvc2UobmV3c2spOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvdGNwX2lwdjYuYyBiL25ldC9pcHY2L3RjcF9pcHY2LmMKaW5kZXggOWU5MTU1YjFiM2FhNy4uZWNiMGI0MDU3MDNjMyAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvdGNwX2lwdjYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni90Y3BfaXB2Ni5jCkBAIC0xNDAwLDYgJiM0MzsxNDAwLDcgQEAgc3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICoKIAlpbnQgbDNpbmRleDsKICNlbmRpZgogCXN0cnVjdCBmbG93aTYgZmw2OwomIzQzOwlpbnQgcmV0OwogCiAJaWYgKHNrYi0mZ3Q7cHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApKQogCQlyZXR1cm4gdGNwX3Y0X3N5bl9yZWN2X3NvY2soc2ssIHNrYiwgcmVxLCBkc3QsCkBAIC0xNTEyLDggJiM0MzsxNTEzLDEyIEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqdGNwX3Y2X3N5bl9yZWN2X3NvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqCiAJCWdvdG8gcHV0X2FuZF9leGl0OyAvKiBPT00gKi8KICNlbmRpZgogCi0JaWYgKF9faW5ldF9pbmhlcml0X3BvcnQoc2ssIG5ld3NrKSAmbHQ7IDApCiYjNDM7CXJldCA9IF9faW5ldF9pbmhlcml0X3BvcnQoc2ssIG5ld3NrKTsKJiM0MzsJaWYgKHVubGlrZWx5KHJldCAmbHQ7IDApKSB7CiYjNDM7CQlpZiAocmV0ID09IC1FTk9FTlQpCiYjNDM7CQkJZ290byBzZW5kX3Jlc2V0X2FuZF9leGl0OwogCQlnb3RvIHB1dF9hbmRfZXhpdDsKJiM0MzsJfQogCSpvd25fcmVxID0gaW5ldF9laGFzaF9ub2xpc3RlbihuZXdzaywgcmVxX3RvX3NrKHJlcV91bmhhc2gpLAogCQkJCSAgICAgICAmYW1wO2ZvdW5kX2R1cF9zayk7CiAJaWYgKCpvd25fcmVxKSB7CkBAIC0xNTQ3LDYgJiM0MzsxNTUyLDggQEAgc3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICoKIGV4aXQ6CiAJdGNwX2xpc3RlbmRyb3Aoc2spOwogCXJldHVybiBOVUxMOwomIzQzO3NlbmRfcmVzZXRfYW5kX2V4aXQ6CiYjNDM7CXRjcF92Nl9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1NUQVRFKTsKIHB1dF9hbmRfZXhpdDoKIAlpbmV0X2Nza19wcmVwYXJlX2ZvcmNlZF9jbG9zZShuZXdzayk7CiAJdGNwX2RvbmUobmV3c2spOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODY4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNTk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFRDUCBTdGFjayBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgVENQIHN0YWNrLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgZXJyb3JzIGR1cmluZyB0aGUgU1lOLVJFQ0VJVkVEIHN0YXRlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZTsgaXQmIzM5O3MgYWx0ZXJpbmcgdGhlIGVycm9yIHBhdGggb2YgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGZvciBib3RoIElQdjQgYW5kIElQdjYuIFdoZW5ldmVyIGEgY29yZSBuZXR3b3JrIGNvbXBvbmVudCBsaWtlIHRoaXMgZ2V0cyBtb2RpZmllZCwgbXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzOiBGdXp6aW5nIHRhcmdldCEgV2UgYWJzb2x1dGVseSBuZWVkIHRvIHN1YmplY3QgdGhpcyB0byByaWdvcm91cyB0ZXN0aW5nLgoKVGhlIGNvZGUgbW9kaWZpZXMgYHRjcF92NF9zeW5fcmVjdl9zb2NrYCBpbiBgbmV0L2lwdjQvdGNwX2lwdjQuY2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AgaW4gYG5ldC9pcHY2L3RjcF9pcHY2LmNgLiBJdCBmb2N1c2VzIG9uIHdoYXQgaGFwcGVucyB3aGVuIGBfX2luZXRfaW5oZXJpdF9wb3J0YCByZXR1cm5zIGAtRU5PRU5UYC4gUHJldmlvdXNseSwgaXQganVzdCBkcm9wcGVkIHRoZSBjb25uZWN0aW9uLiBOb3csIHdpdGggdGhpcyBwYXRjaCwgaXQmIzM5O3Mgc2VuZGluZyBhIHJlc2V0IOKAkyBhIFRDUCBSU1Qg4oCTIHVzaW5nIGB0Y3BfdjRfc2VuZF9yZXNldGAgb3IgYHRjcF92Nl9zZW5kX3Jlc2V0YCwgd2l0aCB0aGUgcmVhc29uIGBTS19SU1RfUkVBU09OX1RDUF9TVEFURWAuIFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBzaGlmdCBpbiBob3cgdGhlIHN0YWNrIHJlc3BvbmRzIHRvIHRoaXMgc3BlY2lmaWMgZXJyb3IuCgpUbyBzdGFydCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZyBpbXBsaWNhdGlvbnMuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCB0aGUgYmFzZSBUQ1AgZnVuY3Rpb25hbGl0eSBpcyBhbHdheXMgY29tcGlsZWQgd2l0aCBgSVBfVENQYCBvciBzb21ldGhpbmcgc2ltaWxhciwgYnV0IElQdjYgcHJvYmFibHkgZGVwZW5kcyBvbiBgSVBWNmAgYmVpbmcgZW5hYmxlZC4gVGltZSB0byB2ZXJpZnkuCgpPa2F5LCBjaGVja2luZyB0aGUgZmlsZXMgZGlyZWN0bHkuLi4gYG5ldC9pcHY0L3RjcF9pcHY0LmNgIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19JTkVUYCBpcyBlbmFibGVkLCB0aGF0IG11Y2ggaXMgY2xlYXIuIEFuZCwgYG5ldC9pcHY2L3RjcF9pcHY2LmNgIGdldHMgaW5jbHVkZWQgd2hlbiBgQ09ORklHX0lQVjZgIGlzIGVuYWJsZWQuIE1ha2VzIHNlbnNlLgoKTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyBhY2Nlc3NpYmxlIHRoZXNlIGZ1bmN0aW9ucyBhcmUuIEFyZSB0aGV5IGV4cG9ydGVkPyBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiBlYXNpbHkgcmVhY2ggdGhlbS4gQ2hlY2tpbmcgYG5ldC9pcHY0L3RjcF9pcHY0LmNgLCBgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGlzIGluZGVlZCBleHBvcnRlZCB1c2luZyBgRVhQT1JUX1NZTUJPTGAuIEdvb2QuCgpOb3cgZm9yIGBuZXQvaXB2Ni90Y3BfaXB2Ni5jYC4gV2FpdC4uLiAqc3RhdGljKiBgdGNwX3Y2X3N5bl9yZWN2X3NvY2tgPyBUaGF0IGluaXRpYWxseSB0aHJvd3MgYSByZWQgZmxhZy4gQnV0IHdhaXQsIGl0JiMzOTtzIGFzc2lnbmVkIHRvIGEgYHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29ja19hZl9vcHMgaXB2Nl9zcGVjaWZpY2Agb3Igc2ltaWxhci4gQWgsIHJpZ2h0LiBJdCYjMzk7cyB1c2VkIHRocm91Z2ggdGhhdCBjb25uZWN0aW9uLiBTbywgZXZlbiB0aG91Z2ggaXQmIzM5O3Mgc3RhdGljLCBpdCYjMzk7cyBpbmRpcmVjdGx5IGFjY2Vzc2libGUgdGhyb3VnaCB0aGF0IGZ1bmN0aW9uIHBvaW50ZXIuIEV4Y2VsbGVudC4gV2UgY2FuIHN0aWxsIHJlYWNoIGl0LiBUaW1lIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgSVB2NiBzaWRlIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMjE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX3Y2X3N5bl9yZWN2X3NvY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni90Y3BfaXB2Ni5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L3RjcF9pcHY2LmM9MTM0OD1zdGF0aWMgdm9pZCB0Y3BfdjZfbWFwcGVkX2NoaWxkX2luaXQoc3RydWN0IHNvY2sgKm5ld3NrLCBjb25zdCBzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0xMzgxLVxubmV0L2lwdjYvdGNwX2lwdjYuYzoxMzgyOnN0YXRpYyBzdHJ1Y3Qgc29jayAqdGNwX3Y2X3N5bl9yZWN2X3NvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xMzgzLVx0XHRcdFx0XHQgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmM9MjAxND1jb25zdCBzdHJ1Y3QgaW5ldF9jb25uZWN0aW9uX3NvY2tfYWZfb3BzIGlwdjZfc3BlY2lmaWMgPSB7XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0yMDE4LVx0LmNvbm5fcmVxdWVzdFx0ICAgPSB0Y3BfdjZfY29ubl9yZXF1ZXN0LFxubmV0L2lwdjYvdGNwX2lwdjYuYzoyMDE5Olx0LnN5bl9yZWN2X3NvY2tcdCAgID0gdGNwX3Y2X3N5bl9yZWN2X3NvY2ssXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIwMjAtXHQubmV0X2hlYWRlcl9sZW5cdCAgID0gc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSxcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTIwNDU9c3RhdGljIGNvbnN0IHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29ja19hZl9vcHMgaXB2Nl9tYXBwZWQgPSB7XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0yMDQ5LVx0LmNvbm5fcmVxdWVzdFx0ICAgPSB0Y3BfdjZfY29ubl9yZXF1ZXN0LFxubmV0L2lwdjYvdGNwX2lwdjYuYzoyMDUwOlx0LnN5bl9yZWN2X3NvY2tcdCAgID0gdGNwX3Y2X3N5bl9yZWN2X3NvY2ssXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTIwNTEtXHQubmV0X2hlYWRlcl9sZW5cdCAgID0gc2l6ZW9mKHN0cnVjdCBpcGhkciksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMjE6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUwNgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQVBJIEVudHJ5cG9pbnRzIGZvciB0aGUgS2VybmVsJiMzOTtzIFRDUC9JUCBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IGJlc3QgdG8gaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgZm9yIHRoaXMgYW5hbHlzaXMsIGFuZCBJIG5lZWQgdG8gYmUgcHJlY2lzZS4gSW5pdGlhbGx5LCBJIHRob3VnaHQgdGhhdCBzaW5jZSBgdGNwX3Y2X3N5bl9yZWN2X3NvY2tgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLCBJIHNob3VsZCBleGNsdWRlIGl0IGZyb20gdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QuIEhvd2V2ZXIsIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhlIGV4cGxpY2l0IGluc3RydWN0aW9uIHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFRoYXTigJlzIHRoZSBrZXkuCgpUaGVuLCBJIHN0b3BwZWQgYW5kIHJldGhvdWdodDogYHRjcF92Nl9zeW5fcmVjdl9zb2NrYCwgZXZlbiB0aG91Z2ggaXQgaXMgc3RhdGljLCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIgKGAuc3luX3JlY3Zfc29ja2ApLiBUaGlzIG1lYW5zIGl0IGxpa2VseSB3b24mIzM5O3QgYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGhhcyBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBUaGF0JiMzOTtzIGEgZ29vZCBhcmd1bWVudCB0byBrZWVwIGl0LiBUaGUgc2FtZSBsb2dpYyBtaWdodCBhcHBseSB0byBvdGhlciBmdW5jdGlvbnMgbGlrZSBgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGFuZCBgdGNwX3Y2X2Nvbm5fcmVxdWVzdGAuCgpCYWNrIHRvIHRoZSBwcm9tcHQ6IG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBhcmUgcHJlZmVycmVkLiBgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGlzIG5vdCBzdGF0aWMuIFNpbmNlIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AgaXMgYSBjYWxsYmFjayBmdW5jdGlvbiBwb2ludGVyLCBpdCB3b24mIzM5O3QgYmUgaW5saW5lZC4gVGhpcyBtZWFucyBib3RoIGFyZSB2YWxpZC4KCkkmIzM5O3ZlIGp1c3QgY29uZmlybWVkIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AgaXMgaW5kZWVkIGRlY2xhcmVkIHN0YXRpYy4gVGh1cywgYmFzZWQgb24gdGhlIHByaW5jaXBsZSwgSSBzaG91bGQgaW5jbHVkZSBib3RoIGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AgYmVjYXVzZSB0aGV5IGFyZSB0aGUgZXhhY3QgZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkLCBhbmQgdGhleSBhcmUgbm90IGlubGluZWQuIE9uZSBpcyBleHBvcnRlZCwgdGhlIG90aGVyIGlzIGEgY2FsbGJhY2sgZnVuY3Rpb24gcG9pbnRlci4KCk5vdywgbGV0JiMzOTtzIGV4cGxvcmUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucy4gYHRjcF92NF9zZW5kX3Jlc2V0YCBhbmQgYHRjcF92Nl9zZW5kX3Jlc2V0YCBzZWVtIHJlbGV2YW50LCBidXQgdGhleSYjMzk7cmUganVzdCBjYWxsZWQgYnkgb3RoZXIgZnVuY3Rpb25zLCBub3QgdGhlIGVudHJ5IHBvaW50cy4KCkkmIzM5O2xsIHByb2NlZWQgYnkgY2hlY2tpbmcgYHRjcF92NF9zeW5fcmVjdl9zb2NrYCB3aXRoaW4gYG5ldC9pcHY0L3RjcF9pcHY0LmNgIHRvIGNvbmZpcm0gdGhlIGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMjE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX3Y0X3N5bl9yZWN2X3NvY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaXB2NC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmM9MTY1NT1pbnQgdGNwX3Y0X2Nvbm5fcmVxdWVzdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0xNjczLSAqL1xubmV0L2lwdjQvdGNwX2lwdjQuYzoxNjc0OnN0cnVjdCBzb2NrICp0Y3BfdjRfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTE2NzUtXHRcdFx0XHQgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSxcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTIzNjU9Y29uc3Qgc3RydWN0IGluZXRfY29ubmVjdGlvbl9zb2NrX2FmX29wcyBpcHY0X3NwZWNpZmljID0ge1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjM2OS1cdC5jb25uX3JlcXVlc3RcdCAgID0gdGNwX3Y0X2Nvbm5fcmVxdWVzdCxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MjM3MDpcdC5zeW5fcmVjdl9zb2NrXHQgICA9IHRjcF92NF9zeW5fcmVjdl9zb2NrLFxubmV0L2lwdjQvdGNwX2lwdjQuYy0yMzcxLVx0Lm5ldF9oZWFkZXJfbGVuXHQgICA9IHNpemVvZihzdHJ1Y3QgaXBoZHIpLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDIxOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NzMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFNZTiBSZWNlaXZlIFNvY2tldCBDYWxsYmFja3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIHR3byBmdW5jdGlvbnMsIGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AuIFRoZXkmIzM5O3JlIGJvdGggdXNlZCBhcyBjYWxsYmFja3MgZm9yIHRoZSBgLnN5bl9yZWN2X3NvY2tgIG9wZXJhdGlvbiwgd2hpY2ggaXMgc3RhbmRhcmQgaW4gdGhpcyBhcmVhLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaW5jbHVkZSB0aGVtIGluIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0LCB0byB0cmFjayB0aGVtIHByb3Blcmx5LgoKTm93LCBjb25jZXJuaW5nIHRoZSBjb25maWd1cmF0aW9ucywgSSBzZWUgdGhhdCBgSVBWNmAgaXMgcmVxdWlyZWQgZm9yIHRoZSBgbmV0L2lwdjYvdGNwX2lwdjYuY2AgZmlsZSwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gU2ltaWxhcmx5LCBgSU5FVGAgaXMgbmVlZGVkIGZvciBgbmV0L2lwdjQvdGNwX2lwdjQuY2AuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgSU5FVGAgaXMgdGhlIGFwcHJvcHJpYXRlIGNvbmZpZyBmb3IgdGhhdCBwYXJ0aWN1bGFyIHVzZSBjYXNlIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gSXQgd291bGQgYmUgYSBzaWxseSBvdmVyc2lnaHQgaWYgaXQgd2FzbiYjMzk7dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfaXB2NC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcbi0tXG5uZXQvaXB2NC9NYWtlZmlsZS05LVx0ICAgICBpbmV0X3RpbWV3YWl0X3NvY2subyBpbmV0X2Nvbm5lY3Rpb25fc29jay5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxMDpcdCAgICAgdGNwLm8gdGNwX2lucHV0Lm8gdGNwX291dHB1dC5vIHRjcF90aW1lci5vIHRjcF9pcHY0Lm8gXFxcbm5ldC9pcHY0L01ha2VmaWxlLTExLVx0ICAgICB0Y3BfbWluaXNvY2tzLm8gdGNwX2NvbmcubyB0Y3BfbWV0cmljcy5vIHRjcF9mYXN0b3Blbi5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMjE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE0MQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBhbmQgSVB2NCBDb21waWxhdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUga2VybmVsJiMzOTtzIGJ1aWxkIHByb2Nlc3MsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgdGhlIElQdjQgc3RhY2suIEkga25vdyB0aGlzIGlzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgbmV0d29yayBzdGFjaywgc28gaXQgbWFrZXMgc2Vuc2UgdGhhdCBpdCYjMzk7cyBoYW5kbGVkIHByZXR0eSBjYXJlZnVsbHkuIFdoYXQgSSYjMzk7bSBzZWVpbmcgaXMgdGhhdCB0aGUgY29kZSBmb3IgSVB2NCBpcyBjb21waWxlZCB1bmNvbmRpdGlvbmFsbHkuIEl04oCZcyBiYWtlZCByaWdodCBpbnRvIHRoZSBrZXJuZWwgdmlhIGBuZXQvaXB2NC9NYWtlZmlsZWAuIFRoYXQgaW5jbHVzaW9uIGlzIHRyaWdnZXJlZCAqb25seSogaWYgYENPTkZJR19JTkVUYCBpcyBzZXQsIG1lYW5pbmcgdGhlIGtlcm5lbCBpcyBiZWluZyBidWlsdCB3aXRoIGdlbmVyYWwgbmV0d29ya2luZyBzdXBwb3J0IGluIHRoZSBmaXJzdCBwbGFjZS4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlIGZvciBtb2R1bGFyaXR5IGFuZCBrZWVwaW5nIHRoZSBjb25maWd1cmF0aW9uIGNsZWFuLiBJZiBJIGRpc2FibGUgbmV0d29ya2luZyBlbnRpcmVseSwgSVB2NCBpc24mIzM5O3QgZXZlbiBwYXJ0IG9mIHRoZSBidWlsZC4gVGhhdCYjMzk7cyBnb29kIG9wdGltaXphdGlvbi4gSXQgaGVscHMgYXZvaWQgY29kZSBibG9hdCB3aGVuIGl0JiMzOTtzIG5vdCBuZWVkZWQsIGFuZCBlbnN1cmVzIGRlcGVuZGVuY2llcyBhcmUgbWFuYWdlZCBjb3JyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDIxOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV0L2lwdjQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDA3CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipDaGVja2luZyB0aGUgYG5ldC9NYWtlZmlsZWAqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gQmVmb3JlIEkgcHJvY2VlZCBhbnkgZnVydGhlciwgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgY3J1Y2lhbC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBgbmV0L01ha2VmaWxlYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBidWlsZCBzeXN0ZW0mIzM5O3MgZGVwZW5kZW5jaWVzIGFuZCBjb21waWxhdGlvbiBmbGFncyB3aXRoaW4gdGhhdCBwYXJ0aWN1bGFyIGRpcmVjdG9yeSBoYXZlbiYjMzk7dCBjaGFuZ2VkIGluIGEgd2F5IHRoYXQgd291bGQgc3VidGx5IGltcGFjdCBteSBjdXJyZW50IHRhc2suIFRoaXMgaXMganVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBlbGltaW5hdGUgYSBjb21tb24gc291cmNlIG9mIHVuZXhwZWN0ZWQgYmVoYXZpb3Ig4oCTIEkmIzM5O3ZlIGJlZW4gYnVybmVkIGJ5IGZvcmdldHRpbmcgdGhpcyBiZWZvcmUhIEdvdHRhIG1ha2Ugc3VyZSB0aGUgdG9vbGNoYWluLCBvcHRpbWl6YXRpb24gc2V0dGluZ3MsIGFuZCBsaW5rZXIgZmxhZ3MgYXJlIHN0aWxsIGFzIGV4cGVjdGVkIGZvciB0aGlzIG5ldHdvcmsgbW9kdWxlLiBUaGlzIGNvdWxkIHNhdmUgbWUgaG91cnMgb2YgZGVidWdnaW5nIGxhdGVyIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcHY0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9NYWtlZmlsZT0xNj1vYmotJChDT05GSUdfTkVURklMVEVSKVx0XHQmIzQzOz0gbmV0ZmlsdGVyL1xubmV0L01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19JTkVUKVx0XHQmIzQzOz0gaXB2NC9cbm5ldC9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfVExTKVx0XHQmIzQzOz0gdGxzL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjY4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSVB2NiBNYWtlZmlsZSBFeGFtaW5hdGlvbioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIG5ldHdvcmtpbmcgaGVyZSwgYW5kIHNwZWNpZmljYWxseSBJUHY2LiBUaGUgaW5pdGlhbCBwcm9tcHQgY29uZmlybWVkIGBDT05GSUdfSU5FVGAsIHdoaWNoIGlzIGdvb2Qg4oCTIHRoYXQgdGVsbHMgbWUgdGhlIGJhc2UgSVB2NC9JUHY2IHN1cHBvcnQgaXMgZW5hYmxlZC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAsIGZyb20gYW4gYXJjaGl0ZWN0dXJhbCBzdGFuZHBvaW50LCBpcyB0byBkaWcgaW50byB0aGUgYG5ldC9pcHY2L01ha2VmaWxlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBJUHY2IGNvbXBvbmVudHMgYXJlIGJlaW5nIGJ1aWx0IGFuZCBsaW5rZWQsIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoZSBicm9hZGVyIG5ldHdvcmtpbmcgc3RhY2suIFRoaXMgTWFrZWZpbGUgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gdG8gc3BlYWsuIFVuZGVyc3RhbmRpbmcgaXRzIHN0cnVjdHVyZSB3aWxsIGdpdmUgbWUgYSBzb2xpZCBncmFzcCBvZiB0aGUgSVB2NiBzdWJzeXN0ZW0mIzM5O3MgYnVpbGQgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMjE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX2lwdjYubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L01ha2VmaWxlPTg9aXB2Ni15IDo9XHRhZl9pbmV0Ni5vIGFueWNhc3QubyBpcDZfb3V0cHV0Lm8gaXA2X2lucHV0Lm8gYWRkcmNvbmYubyBcXFxuLS1cbm5ldC9pcHY2L01ha2VmaWxlLTEwLVx0XHRyb3V0ZS5vIGlwNl9maWIubyBpcHY2X3NvY2tnbHVlLm8gbmRpc2MubyB1ZHAubyBcXFxubmV0L2lwdjYvTWFrZWZpbGU6MTE6XHRcdHJhdy5vIGljbXAubyBtY2FzdC5vIHJlYXNzZW1ibHkubyB0Y3BfaXB2Ni5vIHBpbmcubyBcXFxubmV0L2lwdjYvTWFrZWZpbGUtMTItXHRcdGV4dGhkcnMubyBkYXRhZ3JhbS5vIGlwNl9mbG93bGFiZWwubyBpbmV0Nl9jb25uZWN0aW9uX3NvY2subyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDIyCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJUHY2IGFuZCB0aGUgTmV0d29yayBNYWtlZmlsZSoqCgpBbHJpZ2h0LCBteSBtaW5kJiMzOTtzIGp1bXBlZCB0byB0aGUgYG5ldC9NYWtlZmlsZWAuIEkmIzM5O20gaW1tZWRpYXRlbHkgdGhpbmtpbmcsICYjMzQ7V2hhdCBhYm91dCBJUHY2PyYjMzQ7IEl0JiMzOTtzIHN1Y2ggYW4gaW50ZWdyYWwgcGFydCBvZiBtb2Rlcm4gbmV0d29ya2luZyBub3csIGFuZCBJIG5lZWQgdG8gZW5zdXJlIGl0JiMzOTtzIHByb3Blcmx5IGhhbmRsZWQgaW4gdGhlIGJ1aWxkIHByb2Nlc3MuIEkgbmVlZCB0byByZWZyZXNoIG15c2VsZiBvbiBob3cgdGhlIElQdjYgY29uZmlndXJhdGlvbiBpbXBhY3RzIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbXBpbGF0aW9uIHRhcmdldHMgd2l0aGluIHRoYXQgTWFrZWZpbGUuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgYmUgbG9va2luZyBmb3Igd2hlcmUgSVB2Ni1yZWxhdGVkIGZpbGVzLCBmbGFncywgb3IgY29uZGl0aW9uYWwgbG9naWMgYXJlIGludHJvZHVjZWQuIFRoZXJlIGNvdWxkIGJlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMgYmFzZWQgb24gdGhlIHByZXNlbmNlIG9mIElQdjYgc3VwcG9ydC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHJldmlldyBpdCB0byB2ZXJpZnkgdGhlIGJ1aWxkIHByb2Nlc3MgY29ycmVjdGx5IGxpbmtzIHRoZSBuZWNlc3NhcnkgSVB2NiBsaWJyYXJpZXMgYW5kIGluY2x1ZGVzIHRoZSBhcHByb3ByaWF0ZSBoZWFkZXIgZmlsZXMuIElzIHRoZXJlIGEgc2VwYXJhdGUgc2VjdGlvbiBkZWRpY2F0ZWQgdG8gSVB2Niwgb3IgaXMgaXQgd292ZW4gdGhyb3VnaG91dD8gSSBuZWVkIHRvIG1ha2UgY2VydGFpbiB0aGF0IHRoZSBJUHY2IGJ1aWxkIGlzIHJvYnVzdCBhbmQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSB1bmZvcmVzZWVuIGlzc3VlcyBvciBkZXBlbmRlbmNpZXMgb24gbGVnYWN5IElQdjQgY29tcG9uZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMjE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXB2NiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvTWFrZWZpbGU9MjE9b2JqLSQoQ09ORklHX0lORVRfUFNQKVx0XHQmIzQzOz0gcHNwL1xubmV0L01ha2VmaWxlOjIyOm9iai15XHRcdFx0XHQmIzQzOz0gaXB2Ni9cbm5ldC9NYWtlZmlsZS0yMy1vYmotJChDT05GSUdfUEFDS0VUKVx0XHQmIzQzOz0gcGFja2V0L1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzQ0CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbGx5IFVubmVjZXNzYXJ5IElQdjYgRGVwZW5kZW5jeSoqCgpIbW0sIHRoaXMgaXMgcGVjdWxpYXIuIFRoZSBgbmV0L01ha2VmaWxlYCBzZWVtcyB0byBhbHdheXMgaW5jbHVkZSB0aGUgYGlwdjYvYCBkaXJlY3RvcnkgdW5jb25kaXRpb25hbGx5LiBUaGF0IGZlZWxz4oCmIGEgbGl0dGxlIG9mZiwgZG9lc24mIzM5O3QgaXQ/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgbXkgdW5kZXJzdGFuZGluZy4gSSYjMzk7bSBnb2luZyB0byByZXZpc2l0IGBuZXQvaXB2Ni9NYWtlZmlsZWAgYW5kIHNlZSBpZiB0aGVyZSYjMzk7cyBzb21ldGhpbmcgSSYjMzk7bSBtaXNzaW5nLiBQZXJoYXBzIHRoZXJlJiMzOTtzIGEgZ29vZCByZWFzb24gZm9yIHRoaXMgaW1wbGljaXQgaW5jbHVzaW9uLCBzb21lIHN1YnRsZSBpbnRlcmFjdGlvbiBJJiMzOTttIG5vdCBpbW1lZGlhdGVseSBncmFzcGluZywgb3IgYSBzcGVjaWZpYyBkZXNpZ24gY29uc3RyYWludCBkcml2aW5nIHRoaXMuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBpbmNsdXNpb24gaXMgYXMgc3RyYWlnaHRmb3J3YXJkIGFzIGl0IGFwcGVhcnMsIG9yIGlmIHRoZXJlJiMzOTtzIGEgbW9yZSBudWFuY2VkIGV4cGxhbmF0aW9uIHRoYXQgSSYjMzk7bSBvdmVybG9va2luZy4gSSBzdXNwZWN0IHRoZXJlJiMzOTtzIG1vcmUgY29udGV4dCBuZWVkZWQgYmVmb3JlIGEgZGVjaXNpb24gaXMgd2FycmFudGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvYmotJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvTWFrZWZpbGUtNS1cbm5ldC9pcHY2L01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0lQVjYpICYjNDM7PSBpcHY2Lm9cbm5ldC9pcHY2L01ha2VmaWxlLTctXG4tLVxubmV0L2lwdjYvTWFrZWZpbGU9Mjg9aXB2Ni0kKENPTkZJR19JUFY2X0lPQU02X0xXVFVOTkVMKSAmIzQzOz0gaW9hbTZfaXB0dW5uZWwub1xubmV0L2lwdjYvTWFrZWZpbGUtMjktXG5uZXQvaXB2Ni9NYWtlZmlsZTozMDpvYmotJChDT05GSUdfSU5FVDZfQUgpICYjNDM7PSBhaDYub1xubmV0L2lwdjYvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX0lORVQ2X0VTUCkgJiM0Mzs9IGVzcDYub1xubmV0L2lwdjYvTWFrZWZpbGU6MzI6b2JqLSQoQ09ORklHX0lORVQ2X0VTUF9PRkZMT0FEKSAmIzQzOz0gZXNwNl9vZmZsb2FkLm9cbm5ldC9pcHY2L01ha2VmaWxlOjMzOm9iai0kKENPTkZJR19JTkVUNl9JUENPTVApICYjNDM7PSBpcGNvbXA2Lm9cbm5ldC9pcHY2L01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19JTkVUNl9YRlJNX1RVTk5FTCkgJiM0Mzs9IHhmcm02X3R1bm5lbC5vXG5uZXQvaXB2Ni9NYWtlZmlsZTozNTpvYmotJChDT05GSUdfSU5FVDZfVFVOTkVMKSAmIzQzOz0gdHVubmVsNi5vXG5uZXQvaXB2Ni9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfSVBWNl9NSVA2KSAmIzQzOz0gbWlwNi5vXG5uZXQvaXB2Ni9NYWtlZmlsZTozNzpvYmotJChDT05GSUdfSVBWNl9JTEEpICYjNDM7PSBpbGEvXG5uZXQvaXB2Ni9NYWtlZmlsZTozODpvYmotJChDT05GSUdfTkVURklMVEVSKVx0JiM0Mzs9IG5ldGZpbHRlci9cbm5ldC9pcHY2L01ha2VmaWxlLTM5LVxubmV0L2lwdjYvTWFrZWZpbGU6NDA6b2JqLSQoQ09ORklHX0lQVjZfVlRJKSAmIzQzOz0gaXA2X3Z0aS5vXG5uZXQvaXB2Ni9NYWtlZmlsZTo0MTpvYmotJChDT05GSUdfSVBWNl9TSVQpICYjNDM7PSBzaXQub1xubmV0L2lwdjYvTWFrZWZpbGU6NDI6b2JqLSQoQ09ORklHX0lQVjZfVFVOTkVMKSAmIzQzOz0gaXA2X3R1bm5lbC5vXG5uZXQvaXB2Ni9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfSVBWNl9HUkUpICYjNDM7PSBpcDZfZ3JlLm9cbm5ldC9pcHY2L01ha2VmaWxlOjQ0Om9iai0kKENPTkZJR19JUFY2X0ZPVSkgJiM0Mzs9IGZvdTYub1xubmV0L2lwdjYvTWFrZWZpbGUtNDUtXG5uZXQvaXB2Ni9NYWtlZmlsZTo0NjpvYmoteSAmIzQzOz0gYWRkcmNvbmZfY29yZS5vIGV4dGhkcnNfY29yZS5vIGlwNl9jaGVja3N1bS5vIGlwNl9pY21wLm9cbm5ldC9pcHY2L01ha2VmaWxlOjQ3Om9iai0kKENPTkZJR19JTkVUKSAmIzQzOz0gb3V0cHV0X2NvcmUubyBwcm90b2NvbC5vIFxcXG5uZXQvaXB2Ni9NYWtlZmlsZS00OC1cdFx0XHRpcDZfb2ZmbG9hZC5vIGV4dGhkcnNfb2ZmbG9hZC5vXG5uZXQvaXB2Ni9NYWtlZmlsZS00OS1cbm5ldC9pcHY2L01ha2VmaWxlOjUwOm9iai0kKHN1YnN0IG0seSwkKENPTkZJR19JUFY2KSkgJiM0Mzs9IGluZXQ2X2hhc2h0YWJsZXMub1xubmV0L2lwdjYvTWFrZWZpbGUtNTEtXG5uZXQvaXB2Ni9NYWtlZmlsZT01Mj1pZm5lcSAoJChDT05GSUdfSVBWNiksKVxubmV0L2lwdjYvTWFrZWZpbGU6NTM6b2JqLSQoQ09ORklHX05FVF9VRFBfVFVOTkVMKSAmIzQzOz0gaXA2X3VkcF90dW5uZWwub1xubmV0L2lwdjYvTWFrZWZpbGU6NTQ6b2JqLXkgJiM0Mzs9IG1jYXN0X3Nub29wLm9cbm5ldC9pcHY2L01ha2VmaWxlOjU1Om9iai0kKENPTkZJR19UQ1BfQU8pICYjNDM7PSB0Y3BfYW8ub1xubmV0L2lwdjYvTWFrZWZpbGUtNTYtZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMjE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODM2MgoJCQkJCQkJb3V0cHV0OiAxNDkKCQkJCQkJCXRob3VnaHRzOiAxNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVENQIENvbm5lY3Rpb24gRXN0YWJsaXNobWVudCBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBleHBlcnQgZXllIGhvbmVzIGluIG9uIHRoZSBjb3JlIGNoYW5nZS4gSXQmIzM5O3MgdG91Y2hpbmcgaG93IGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AgaGFuZGxlIGVycm9ycyBjb21pbmcgYmFjayBmcm9tIGBfX2luZXRfaW5oZXJpdF9wb3J0YC4gU3BlY2lmaWNhbGx5LCBpdCBhcHBlYXJzIHRoZSBwYXRjaCBpcyBhbHRlcmluZyBob3cgdGhlIHN5c3RlbSByZWFjdHMgdG8gYW4gYC1FTk9FTlRgIHJldHVybiBmcm9tIHRoYXQgZnVuY3Rpb24uIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBgX19pbmV0X2luaGVyaXRfcG9ydGAgaXMgcmlnaHQgaW4gdGhlIGhlYXJ0IG9mIHRoZSBTWU4tUkVDViBzdGF0ZSBkdXJpbmcgVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudC4KCldlIGtub3cgYENPTkZJR19JUFY2YCBpcyByZWxldmFudCBoZXJlLCB3aGljaCBtZWFucyBgaXB2Ni5vYCBpcyBpbiB0aGUgcGljdHVyZSwgYW5kIGNvbnNlcXVlbnRseSBgdGNwX2lwdjYub2AuIFNpbmNlIHRoaXMgZGlyZWN0bHkgaW1wYWN0cyB0aGUgVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCwgYSBmdW5jdGlvbiBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBpcyBhIGRpcmVjdCBjb25zZXF1ZW5jZSBvZiBuZXR3b3JrIHRyYWZmaWMsIGl0JiMzOTtzIGEgKmRlZmluaXRlKiBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEFueSBjaGFuZ2UgbGlrZSB0aGlzLCBlc3BlY2lhbGx5IGR1cmluZyB0aGUgU1lOLVJFQ1Ygc3RhZ2UsIGlzIHdvcnRoIGEgdGhvcm91Z2ggaW52ZXN0aWdhdGlvbi4gTXkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhvc2UgdHdvIGNydWNpYWwgZnVuY3Rpb25zLCBgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGFuZCBgdGNwX3Y2X3N5bl9yZWN2X3NvY2tgLCBhbmQgSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIHZlcmlmeSBgSU5FVGAgYW5kIGBJUFY2YCBhcmUgZW5hYmxlZCwgb2YgY291cnNlLgoKSSYjMzk7bGwgYmUgdXNpbmcgdGhlIHNldC1yZXN1bHRzIHRvb2wgZm9yIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDIxOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfdjRfc3luX3JlY3Zfc29jayYjMzQ7LAogICAgJiMzNDt0Y3BfdjZfc3luX3JlY3Zfc29jayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCAoU1lOLVJFQ1Ygc3RhdGUpIGZvciBib3RoIElQdjQgYW5kIElQdjYuIFNwZWNpZmljYWxseSwgaXQgY2hhbmdlcyB0aGUgYmVoYXZpb3Igd2hlbiBgX19pbmV0X2luaGVyaXRfcG9ydGAgcmV0dXJucyBgLUVOT0VOVGAgdG8gc2VuZCBhIFRDUCByZXNldCBpbnN0ZWFkIG9mIGp1c3QgZHJvcHBpbmcgdGhlIGNvbm5lY3Rpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2sgdGhhdCBpcyByZWFjaGFibGUgdmlhIG5ldHdvcmsgdHJhZmZpYyBhbmQgc29ja2V0IG9wZXJhdGlvbnMsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjcF92NF9zeW5fcmVjdl9zb2NrJiMzNDssCiAgICAmIzM0O3RjcF92Nl9zeW5fcmVjdl9zb2NrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBpbiBUQ1AgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IChTWU4tUkVDViBzdGF0ZSkgZm9yIGJvdGggSVB2NCBhbmQgSVB2Ni4gU3BlY2lmaWNhbGx5LCBpdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciB3aGVuIGBfX2luZXRfaW5oZXJpdF9wb3J0YCByZXR1cm5zIGAtRU5PRU5UYCB0byBzZW5kIGEgVENQIHJlc2V0IGluc3RlYWQgb2YganVzdCBkcm9wcGluZyB0aGUgY29ubmVjdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFRDUCBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0d29yayB0cmFmZmljIGFuZCBzb2NrZXQgb3BlcmF0aW9ucywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMjE6MjM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBpbiB0aGUgVENQIFNZTiByZWNlaXZlIHBhdGhzIChgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGFuZCBgdGNwX3Y2X3N5bl9yZWN2X3NvY2tgKSB0byBzZW5kIGEgVENQIHJlc2V0IGlmIGBfX2luZXRfaW5oZXJpdF9wb3J0YCByZXR1cm5zIGAtRU5PRU5UYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgY29udHJvbCBmbG93IHJlbGF0ZWQuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzIChsaWtlIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHRoYXQgbWlnaHQgYXJpc2UgZnJvbSB0aGlzIGNoYW5nZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzFmMjcxZWNhYzNkYjU4OGQyZmFjZTVhM2NmNjQwYWZkZjdkYzMwZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDExIDIxOjIyOjQ2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lwdjQuYyBiL25ldC9pcHY0L3RjcF9pcHY0LmMKaW5kZXggYjg4ODdjZGQ2NmM1Ny4uOWExNGMyZTU2ZWMzYSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX2lwdjQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfaXB2NC5jCkBAIC0xNjkwLDYgJiM0MzsxNjkwLDcgQEAgc3RydWN0IHNvY2sgKnRjcF92NF9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlpbnQgbDNpbmRleDsKICNlbmRpZgogCXN0cnVjdCBpcF9vcHRpb25zX3JjdSAqaW5ldF9vcHQ7CiYjNDM7CWludCByZXQ7CiAKIAlpZiAoc2tfYWNjZXB0cV9pc19mdWxsKHNrKSkKIAkJZ290byBleGl0X292ZXJmbG93OwpAQCAtMTc1Niw4ICYjNDM7MTc1NywxMiBAQCBzdHJ1Y3Qgc29jayAqdGNwX3Y0X3N5bl9yZWN2X3NvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlnb3RvIHB1dF9hbmRfZXhpdDsgLyogT09NLCByZWxlYXNlIGJhY2sgbWVtb3J5ICovCiAjZW5kaWYKIAotCWlmIChfX2luZXRfaW5oZXJpdF9wb3J0KHNrLCBuZXdzaykgJmx0OyAwKQomIzQzOwlyZXQgPSBfX2luZXRfaW5oZXJpdF9wb3J0KHNrLCBuZXdzayk7CiYjNDM7CWlmICh1bmxpa2VseShyZXQgJmx0OyAwKSkgewomIzQzOwkJaWYgKHJldCA9PSAtRU5PRU5UKQomIzQzOwkJCWdvdG8gc2VuZF9yZXNldF9hbmRfZXhpdDsKIAkJZ290byBwdXRfYW5kX2V4aXQ7CiYjNDM7CX0KIAkqb3duX3JlcSA9IGluZXRfZWhhc2hfbm9saXN0ZW4obmV3c2ssIHJlcV90b19zayhyZXFfdW5oYXNoKSwKIAkJCQkgICAgICAgJmFtcDtmb3VuZF9kdXBfc2spOwogCWlmIChsaWtlbHkoKm93bl9yZXEpKSB7CkBAIC0xNzg0LDYgJiM0MzsxNzg5LDggQEAgc3RydWN0IHNvY2sgKnRjcF92NF9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIGV4aXQ6CiAJdGNwX2xpc3RlbmRyb3Aoc2spOwogCXJldHVybiBOVUxMOwomIzQzO3NlbmRfcmVzZXRfYW5kX2V4aXQ6CiYjNDM7CXRjcF92NF9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1NUQVRFKTsKIHB1dF9hbmRfZXhpdDoKIAluZXdpbmV0LSZndDtpbmV0X29wdCA9IE5VTEw7CiAJaW5ldF9jc2tfcHJlcGFyZV9mb3JjZWRfY2xvc2UobmV3c2spOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvdGNwX2lwdjYuYyBiL25ldC9pcHY2L3RjcF9pcHY2LmMKaW5kZXggOWU5MTU1YjFiM2FhNy4uZWNiMGI0MDU3MDNjMyAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvdGNwX2lwdjYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni90Y3BfaXB2Ni5jCkBAIC0xNDAwLDYgJiM0MzsxNDAwLDcgQEAgc3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICoKIAlpbnQgbDNpbmRleDsKICNlbmRpZgogCXN0cnVjdCBmbG93aTYgZmw2OwomIzQzOwlpbnQgcmV0OwogCiAJaWYgKHNrYi0mZ3Q7cHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApKQogCQlyZXR1cm4gdGNwX3Y0X3N5bl9yZWN2X3NvY2soc2ssIHNrYiwgcmVxLCBkc3QsCkBAIC0xNTEyLDggJiM0MzsxNTEzLDEyIEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqdGNwX3Y2X3N5bl9yZWN2X3NvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqCiAJCWdvdG8gcHV0X2FuZF9leGl0OyAvKiBPT00gKi8KICNlbmRpZgogCi0JaWYgKF9faW5ldF9pbmhlcml0X3BvcnQoc2ssIG5ld3NrKSAmbHQ7IDApCiYjNDM7CXJldCA9IF9faW5ldF9pbmhlcml0X3BvcnQoc2ssIG5ld3NrKTsKJiM0MzsJaWYgKHVubGlrZWx5KHJldCAmbHQ7IDApKSB7CiYjNDM7CQlpZiAocmV0ID09IC1FTk9FTlQpCiYjNDM7CQkJZ290byBzZW5kX3Jlc2V0X2FuZF9leGl0OwogCQlnb3RvIHB1dF9hbmRfZXhpdDsKJiM0MzsJfQogCSpvd25fcmVxID0gaW5ldF9laGFzaF9ub2xpc3RlbihuZXdzaywgcmVxX3RvX3NrKHJlcV91bmhhc2gpLAogCQkJCSAgICAgICAmYW1wO2ZvdW5kX2R1cF9zayk7CiAJaWYgKCpvd25fcmVxKSB7CkBAIC0xNTQ3LDYgJiM0MzsxNTUyLDggQEAgc3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICoKIGV4aXQ6CiAJdGNwX2xpc3RlbmRyb3Aoc2spOwogCXJldHVybiBOVUxMOwomIzQzO3NlbmRfcmVzZXRfYW5kX2V4aXQ6CiYjNDM7CXRjcF92Nl9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1NUQVRFKTsKIHB1dF9hbmRfZXhpdDoKIAlpbmV0X2Nza19wcmVwYXJlX2ZvcmNlZF9jbG9zZShuZXdzayk7CiAJdGNwX2RvbmUobmV3c2spOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMjE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg2NQoJCQkJCQkJb3V0cHV0OiAxNDkKCQkJCQkJCXRob3VnaHRzOiA0NDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgVGhpcyBUQ1AgU1lOIFJlY2VpdmUgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0d2Vha2luZyBgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGFuZCBgdGNwX3Y2X3N5bl9yZWN2X3NvY2tgIGluIHRoZSBJUHY0IGFuZCBJUHY2IFRDUCBpbXBsZW1lbnRhdGlvbnMsIHJlc3BlY3RpdmVseS4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgY2hlY2tpbmcgdGhlIHJldHVybiB2YWx1ZSBvZiBgX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spYC4gSWYgdGhhdCBmdW5jdGlvbiB0aHJvd3MgYW4gYC1FTk9FTlRgIGVycm9yLCB0aGUgcGF0Y2ggZGl2ZXJ0cyBleGVjdXRpb24gdG8gYHNlbmRfcmVzZXRfYW5kX2V4aXRgLiBGcm9tIHRoZXJlLCBpdCBjYWxscyBlaXRoZXIgYHRjcF92NF9zZW5kX3Jlc2V0YCBvciBgdGNwX3Y2X3NlbmRfcmVzZXRgIHdpdGggdGhlIHNvY2tldCAoYHNrYCkgYW5kIHNvY2tldCBidWZmZXIgKGBza2JgKSBiZWZvcmUgZXhpdGluZy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgYW55IHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSBhIHF1aWNrIHNjYW4sIGl0IGxvb2tzIGxpa2UgdGhpcyBpcyBwdXJlbHkgYSBjb250cm9sLWZsb3cgY2hhbmdlOyBlcnJvciBoYW5kbGluZywgc3BlY2lmaWNhbGx5LiBUaGUga2V5IGFyZ3VtZW50cyB0byBgdGNwX3Y0X3NlbmRfcmVzZXRgIGFuZCBgdGNwX3Y2X3NlbmRfcmVzZXRgIChzayBhbmQgc2tiKSBhcmUgYWxyZWFkeSBpbml0aWFsaXplZCB3aXRoaW4gdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgdGhlbSwgcmlnaHQ/IFRoZXkmIzM5O3JlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gYHRjcF92NF9zeW5fcmVjdl9zb2NrYCBhbmQgYHRjcF92Nl9zeW5fcmVjdl9zb2NrYC4gSSBkb24mIzM5O3Qgc2VlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIGFsbG9jYXRlZCwgb3IgYW55IG5ldyBmaWVsZHMgYmVpbmcgaW50cm9kdWNlZCB0aGF0IG1pZ2h0IG5vdCBiZSBpbml0aWFsaXplZCwgbm9yIGFueSBtZW1vcnkgY29waWVkIHRvIHVzZXJzcGFjZS4gU28sIEkmIzM5O2Qgc2F5IHRoZSBsaWtlbGlob29kIG9mIGludHJvZHVjaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIGhlcmUgaXMgbmVnbGlnaWJsZSwgemVybyBldmVuLiBTdGFuZGFyZCBLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIgKEtBU0FOKSwgTG9ja2RlcCwgYW5kIG90aGVyIHN0YW5kYXJkIGRlYnVnZ2luZyB0b29scyBhcmUgYWxyZWFkeSBpbiBwbGFjZSBhbmQgc2hvdWxkIGNhdGNoIGFueSAqZ2VuZXJhbCogYnVncy4gQnV0LCB0aGlzIGRvZXNuJiMzOTt0IGV2ZW4gaW50cm9kdWNlIGEgbWVtb3J5IGNvcnJ1cHRpb24gcmlzaywgaXQmIzM5O3MganVzdCBhYm91dCBlcnJvciBoYW5kbGluZy4KClRvIGJlIGV4dHJhIHRob3JvdWdoLCBsZXQmIzM5O3MgdmVyaWZ5IHdoYXQgYHRjcF92NF9zZW5kX3Jlc2V0YCBhbmQgYHRjcF92Nl9zZW5kX3Jlc2V0YCBhcmUgZG9pbmcuIFRoZXkgYXJlIHN0YW5kYXJkIGZ1bmN0aW9ucyBmb3Igc2VuZGluZyBhIFRDUCBSU1QgcGFja2V0IGFuZCwgYXMgZmFyIGFzIEkgY2FuIHNlZSwgZG9uJiMzOTt0IHRoZW1zZWx2ZXMgaW52b2x2ZSB0aGUgdXNlIG9mIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4KClRoZXJlZm9yZSwgdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBuZWVkIEtNU0FOIHNwZWNpZmljYWxseS4gTXkgcmVhc29uaW5nIGlzIHRoYXQgdGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgVENQIFNZTiByZWNlaXZlIHBhdGhzLCBidXQgb25seSB0byBoYW5kbGUgYSBzcGVjaWZpYyBlcnJvciBjb25kaXRpb24gZnJvbSBgX19pbmV0X2luaGVyaXRfcG9ydGAuIEl0JiMzOTtzIGp1c3Qgc2VuZGluZyBhIFRDUCByZXNldCBpbiB0aGF0IGNhc2UuIEl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zIG9yIGFueSBkYXRhIHN0cnVjdHVyZXMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBLQVNBTiBmdXp6aW5nIGFuZCB0aGUgZXhpc3RpbmcgZGVidWdnaW5nIGluZnJhc3RydWN0dXJlIGFyZSBtb3JlIHRoYW4gYWRlcXVhdGUgZm9yIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAyMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBpbiB0aGUgVENQIFNZTiByZWNlaXZlIHBhdGhzIChgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGFuZCBgdGNwX3Y2X3N5bl9yZWN2X3NvY2tgKSB0byBzZW5kIGEgVENQIHJlc2V0IGlmIGBfX2luZXRfaW5oZXJpdF9wb3J0YCByZXR1cm5zIGAtRU5PRU5UYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgY29udHJvbCBmbG93IHJlbGF0ZWQuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzIChsaWtlIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHRoYXQgbWlnaHQgYXJpc2UgZnJvbSB0aGlzIGNoYW5nZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIHRoZSBUQ1AgU1lOIHJlY2VpdmUgcGF0aHMgKGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2ApIHRvIHNlbmQgYSBUQ1AgcmVzZXQgaWYgYF9faW5ldF9pbmhlcml0X3BvcnRgIHJldHVybnMgYC1FTk9FTlRgLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGNoYW5nZXMgYXJlIHB1cmVseSBjb250cm9sIGZsb3cgcmVsYXRlZC4gU3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgKGxpa2UgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgdGhhdCBtaWdodCBhcmlzZSBmcm9tIHRoaXMgY2hhbmdlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMVQyMToyMjo0Ny42NjkyODUwMDlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTU1NzcwOTU2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCIsXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX3Y0X3N5bl9yZWN2X3NvY2tcIixcbiAgICBcInRjcF92Nl9zeW5fcmVjdl9zb2NrXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBpbiB0aGUgVENQIFNZTiByZWNlaXZlIHBhdGhzIChgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGFuZCBgdGNwX3Y2X3N5bl9yZWN2X3NvY2tgKSB0byBzZW5kIGEgVENQIHJlc2V0IGlmIGBfX2luZXRfaW5oZXJpdF9wb3J0YCByZXR1cm5zIGAtRU5PRU5UYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgY29udHJvbCBmbG93IHJlbGF0ZWQuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzIChsaWtlIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHRoYXQgbWlnaHQgYXJpc2UgZnJvbSB0aGlzIGNoYW5nZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCAoU1lOLVJFQ1Ygc3RhdGUpIGZvciBib3RoIElQdjQgYW5kIElQdjYuIFNwZWNpZmljYWxseSwgaXQgY2hhbmdlcyB0aGUgYmVoYXZpb3Igd2hlbiBgX19pbmV0X2luaGVyaXRfcG9ydGAgcmV0dXJucyBgLUVOT0VOVGAgdG8gc2VuZCBhIFRDUCByZXNldCBpbnN0ZWFkIG9mIGp1c3QgZHJvcHBpbmcgdGhlIGNvbm5lY3Rpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2sgdGhhdCBpcyByZWFjaGFibGUgdmlhIG5ldHdvcmsgdHJhZmZpYyBhbmQgc29ja2V0IG9wZXJhdGlvbnMsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDIxOjIyOjQ3LjY2OTI5MTQzOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkzOTY0MTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzFmMjcxZWNhYzNkYjU4OGQyZmFjZTVhM2NmNjQwYWZkZjdkYzMwZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAxMSAyMToyMjo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaXB2NC5jIGIvbmV0L2lwdjQvdGNwX2lwdjQuY1xcbmluZGV4IGI4ODg3Y2RkNjZjNTcuLjlhMTRjMmU1NmVjM2EgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdGNwX2lwdjQuY1xcbisrKyBiL25ldC9pcHY0L3RjcF9pcHY0LmNcXG5AQCAtMTY5MCw2ICsxNjkwLDcgQEAgc3RydWN0IHNvY2sgKnRjcF92NF9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0aW50IGwzaW5kZXg7XFxuICNlbmRpZlxcbiBcXHRzdHJ1Y3QgaXBfb3B0aW9uc19yY3UgKmluZXRfb3B0O1xcbitcXHRpbnQgcmV0O1xcbiBcXG4gXFx0aWYgKHNrX2FjY2VwdHFfaXNfZnVsbChzaykpXFxuIFxcdFxcdGdvdG8gZXhpdF9vdmVyZmxvdztcXG5AQCAtMTc1Niw4ICsxNzU3LDEyIEBAIHN0cnVjdCBzb2NrICp0Y3BfdjRfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdGdvdG8gcHV0X2FuZF9leGl0OyAvKiBPT00sIHJlbGVhc2UgYmFjayBtZW1vcnkgKi9cXG4gI2VuZGlmXFxuIFxcbi1cXHRpZiAoX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spIFxcdTAwM2MgMClcXG4rXFx0cmV0ID0gX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spO1xcbitcXHRpZiAodW5saWtlbHkocmV0IFxcdTAwM2MgMCkpIHtcXG4rXFx0XFx0aWYgKHJldCA9PSAtRU5PRU5UKVxcbitcXHRcXHRcXHRnb3RvIHNlbmRfcmVzZXRfYW5kX2V4aXQ7XFxuIFxcdFxcdGdvdG8gcHV0X2FuZF9leGl0O1xcbitcXHR9XFxuIFxcdCpvd25fcmVxID0gaW5ldF9laGFzaF9ub2xpc3RlbihuZXdzaywgcmVxX3RvX3NrKHJlcV91bmhhc2gpLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmZvdW5kX2R1cF9zayk7XFxuIFxcdGlmIChsaWtlbHkoKm93bl9yZXEpKSB7XFxuQEAgLTE3ODQsNiArMTc4OSw4IEBAIHN0cnVjdCBzb2NrICp0Y3BfdjRfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuIGV4aXQ6XFxuIFxcdHRjcF9saXN0ZW5kcm9wKHNrKTtcXG4gXFx0cmV0dXJuIE5VTEw7XFxuK3NlbmRfcmVzZXRfYW5kX2V4aXQ6XFxuK1xcdHRjcF92NF9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1NUQVRFKTtcXG4gcHV0X2FuZF9leGl0OlxcbiBcXHRuZXdpbmV0LVxcdTAwM2VpbmV0X29wdCA9IE5VTEw7XFxuIFxcdGluZXRfY3NrX3ByZXBhcmVfZm9yY2VkX2Nsb3NlKG5ld3NrKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvdGNwX2lwdjYuYyBiL25ldC9pcHY2L3RjcF9pcHY2LmNcXG5pbmRleCA5ZTkxNTViMWIzYWE3Li5lY2IwYjQwNTcwM2MzIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY2L3RjcF9pcHY2LmNcXG4rKysgYi9uZXQvaXB2Ni90Y3BfaXB2Ni5jXFxuQEAgLTE0MDAsNiArMTQwMCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqdGNwX3Y2X3N5bl9yZWN2X3NvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqXFxuIFxcdGludCBsM2luZGV4O1xcbiAjZW5kaWZcXG4gXFx0c3RydWN0IGZsb3dpNiBmbDY7XFxuK1xcdGludCByZXQ7XFxuIFxcbiBcXHRpZiAoc2tiLVxcdTAwM2Vwcm90b2NvbCA9PSBodG9ucyhFVEhfUF9JUCkpXFxuIFxcdFxcdHJldHVybiB0Y3BfdjRfc3luX3JlY3Zfc29jayhzaywgc2tiLCByZXEsIGRzdCxcXG5AQCAtMTUxMiw4ICsxNTEzLDEyIEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqdGNwX3Y2X3N5bl9yZWN2X3NvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqXFxuIFxcdFxcdGdvdG8gcHV0X2FuZF9leGl0OyAvKiBPT00gKi9cXG4gI2VuZGlmXFxuIFxcbi1cXHRpZiAoX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spIFxcdTAwM2MgMClcXG4rXFx0cmV0ID0gX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spO1xcbitcXHRpZiAodW5saWtlbHkocmV0IFxcdTAwM2MgMCkpIHtcXG4rXFx0XFx0aWYgKHJldCA9PSAtRU5PRU5UKVxcbitcXHRcXHRcXHRnb3RvIHNlbmRfcmVzZXRfYW5kX2V4aXQ7XFxuIFxcdFxcdGdvdG8gcHV0X2FuZF9leGl0O1xcbitcXHR9XFxuIFxcdCpvd25fcmVxID0gaW5ldF9laGFzaF9ub2xpc3RlbihuZXdzaywgcmVxX3RvX3NrKHJlcV91bmhhc2gpLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmZvdW5kX2R1cF9zayk7XFxuIFxcdGlmICgqb3duX3JlcSkge1xcbkBAIC0xNTQ3LDYgKzE1NTIsOCBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKnRjcF92Nl9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKlxcbiBleGl0OlxcbiBcXHR0Y3BfbGlzdGVuZHJvcChzayk7XFxuIFxcdHJldHVybiBOVUxMO1xcbitzZW5kX3Jlc2V0X2FuZF9leGl0OlxcbitcXHR0Y3BfdjZfc2VuZF9yZXNldChzaywgc2tiLCBTS19SU1RfUkVBU09OX1RDUF9TVEFURSk7XFxuIHB1dF9hbmRfZXhpdDpcXG4gXFx0aW5ldF9jc2tfcHJlcGFyZV9mb3JjZWRfY2xvc2UobmV3c2spO1xcbiBcXHR0Y3BfZG9uZShuZXdzayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDIxOjIyOjQ4LjA2Mzk4NjExOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ2NzgwMzA1MjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORVRcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfdjRfc3luX3JlY3Zfc29ja1wiLFxuICAgIFwidGNwX3Y2X3N5bl9yZWN2X3NvY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCAoU1lOLVJFQ1Ygc3RhdGUpIGZvciBib3RoIElQdjQgYW5kIElQdjYuIFNwZWNpZmljYWxseSwgaXQgY2hhbmdlcyB0aGUgYmVoYXZpb3Igd2hlbiBgX19pbmV0X2luaGVyaXRfcG9ydGAgcmV0dXJucyBgLUVOT0VOVGAgdG8gc2VuZCBhIFRDUCByZXNldCBpbnN0ZWFkIG9mIGp1c3QgZHJvcHBpbmcgdGhlIGNvbm5lY3Rpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2sgdGhhdCBpcyByZWFjaGFibGUgdmlhIG5ldHdvcmsgdHJhZmZpYyBhbmQgc29ja2V0IG9wZXJhdGlvbnMsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcxZjI3MWVjYWMzZGI1ODhkMmZhY2U1YTNjZjY0MGFmZGY3ZGMzMGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxMSAyMToyMjo0NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pcHY0LmMgYi9uZXQvaXB2NC90Y3BfaXB2NC5jXG5pbmRleCBiODg4N2NkZDY2YzU3Li45YTE0YzJlNTZlYzNhIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX2lwdjQuY1xuKysrIGIvbmV0L2lwdjQvdGNwX2lwdjQuY1xuQEAgLTE2OTAsNiArMTY5MCw3IEBAIHN0cnVjdCBzb2NrICp0Y3BfdjRfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRpbnQgbDNpbmRleDtcbiAjZW5kaWZcbiBcdHN0cnVjdCBpcF9vcHRpb25zX3JjdSAqaW5ldF9vcHQ7XG4rXHRpbnQgcmV0O1xuIFxuIFx0aWYgKHNrX2FjY2VwdHFfaXNfZnVsbChzaykpXG4gXHRcdGdvdG8gZXhpdF9vdmVyZmxvdztcbkBAIC0xNzU2LDggKzE3NTcsMTIgQEAgc3RydWN0IHNvY2sgKnRjcF92NF9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0Z290byBwdXRfYW5kX2V4aXQ7IC8qIE9PTSwgcmVsZWFzZSBiYWNrIG1lbW9yeSAqL1xuICNlbmRpZlxuIFxuLVx0aWYgKF9faW5ldF9pbmhlcml0X3BvcnQoc2ssIG5ld3NrKSBcdTAwM2MgMClcbitcdHJldCA9IF9faW5ldF9pbmhlcml0X3BvcnQoc2ssIG5ld3NrKTtcbitcdGlmICh1bmxpa2VseShyZXQgXHUwMDNjIDApKSB7XG4rXHRcdGlmIChyZXQgPT0gLUVOT0VOVClcbitcdFx0XHRnb3RvIHNlbmRfcmVzZXRfYW5kX2V4aXQ7XG4gXHRcdGdvdG8gcHV0X2FuZF9leGl0O1xuK1x0fVxuIFx0Km93bl9yZXEgPSBpbmV0X2VoYXNoX25vbGlzdGVuKG5ld3NrLCByZXFfdG9fc2socmVxX3VuaGFzaCksXG4gXHRcdFx0XHQgICAgICAgXHUwMDI2Zm91bmRfZHVwX3NrKTtcbiBcdGlmIChsaWtlbHkoKm93bl9yZXEpKSB7XG5AQCAtMTc4NCw2ICsxNzg5LDggQEAgc3RydWN0IHNvY2sgKnRjcF92NF9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBleGl0OlxuIFx0dGNwX2xpc3RlbmRyb3Aoc2spO1xuIFx0cmV0dXJuIE5VTEw7XG4rc2VuZF9yZXNldF9hbmRfZXhpdDpcbitcdHRjcF92NF9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1NUQVRFKTtcbiBwdXRfYW5kX2V4aXQ6XG4gXHRuZXdpbmV0LVx1MDAzZWluZXRfb3B0ID0gTlVMTDtcbiBcdGluZXRfY3NrX3ByZXBhcmVfZm9yY2VkX2Nsb3NlKG5ld3NrKTtcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni90Y3BfaXB2Ni5jIGIvbmV0L2lwdjYvdGNwX2lwdjYuY1xuaW5kZXggOWU5MTU1YjFiM2FhNy4uZWNiMGI0MDU3MDNjMyAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3RjcF9pcHY2LmNcbisrKyBiL25ldC9pcHY2L3RjcF9pcHY2LmNcbkBAIC0xNDAwLDYgKzE0MDAsNyBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKnRjcF92Nl9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKlxuIFx0aW50IGwzaW5kZXg7XG4gI2VuZGlmXG4gXHRzdHJ1Y3QgZmxvd2k2IGZsNjtcbitcdGludCByZXQ7XG4gXG4gXHRpZiAoc2tiLVx1MDAzZXByb3RvY29sID09IGh0b25zKEVUSF9QX0lQKSlcbiBcdFx0cmV0dXJuIHRjcF92NF9zeW5fcmVjdl9zb2NrKHNrLCBza2IsIHJlcSwgZHN0LFxuQEAgLTE1MTIsOCArMTUxMywxMiBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKnRjcF92Nl9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKlxuIFx0XHRnb3RvIHB1dF9hbmRfZXhpdDsgLyogT09NICovXG4gI2VuZGlmXG4gXG4tXHRpZiAoX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spIFx1MDAzYyAwKVxuK1x0cmV0ID0gX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spO1xuK1x0aWYgKHVubGlrZWx5KHJldCBcdTAwM2MgMCkpIHtcbitcdFx0aWYgKHJldCA9PSAtRU5PRU5UKVxuK1x0XHRcdGdvdG8gc2VuZF9yZXNldF9hbmRfZXhpdDtcbiBcdFx0Z290byBwdXRfYW5kX2V4aXQ7XG4rXHR9XG4gXHQqb3duX3JlcSA9IGluZXRfZWhhc2hfbm9saXN0ZW4obmV3c2ssIHJlcV90b19zayhyZXFfdW5oYXNoKSxcbiBcdFx0XHRcdCAgICAgICBcdTAwMjZmb3VuZF9kdXBfc2spO1xuIFx0aWYgKCpvd25fcmVxKSB7XG5AQCAtMTU0Nyw2ICsxNTUyLDggQEAgc3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpcbiBleGl0OlxuIFx0dGNwX2xpc3RlbmRyb3Aoc2spO1xuIFx0cmV0dXJuIE5VTEw7XG4rc2VuZF9yZXNldF9hbmRfZXhpdDpcbitcdHRjcF92Nl9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1NUQVRFKTtcbiBwdXRfYW5kX2V4aXQ6XG4gXHRpbmV0X2Nza19wcmVwYXJlX2ZvcmNlZF9jbG9zZShuZXdzayk7XG4gXHR0Y3BfZG9uZShuZXdzayk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQyMToyMjo0OC4wNjM5ODcyODlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzA0NTYzOTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRDUCBTdGFjayBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIFRDUCBzdGFjaywgc3BlY2lmaWNhbGx5IGhvdyBpdCBoYW5kbGVzIGVycm9ycyBkdXJpbmcgdGhlIFNZTi1SRUNFSVZFRCBzdGF0ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2U7IGl0J3MgYWx0ZXJpbmcgdGhlIGVycm9yIHBhdGggb2YgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGZvciBib3RoIElQdjQgYW5kIElQdjYuIFdoZW5ldmVyIGEgY29yZSBuZXR3b3JrIGNvbXBvbmVudCBsaWtlIHRoaXMgZ2V0cyBtb2RpZmllZCwgbXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzOiBGdXp6aW5nIHRhcmdldCEgV2UgYWJzb2x1dGVseSBuZWVkIHRvIHN1YmplY3QgdGhpcyB0byByaWdvcm91cyB0ZXN0aW5nLlxuXG5UaGUgY29kZSBtb2RpZmllcyBgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGluIGBuZXQvaXB2NC90Y3BfaXB2NC5jYCBhbmQgYHRjcF92Nl9zeW5fcmVjdl9zb2NrYCBpbiBgbmV0L2lwdjYvdGNwX2lwdjYuY2AuIEl0IGZvY3VzZXMgb24gd2hhdCBoYXBwZW5zIHdoZW4gYF9faW5ldF9pbmhlcml0X3BvcnRgIHJldHVybnMgYC1FTk9FTlRgLiBQcmV2aW91c2x5LCBpdCBqdXN0IGRyb3BwZWQgdGhlIGNvbm5lY3Rpb24uIE5vdywgd2l0aCB0aGlzIHBhdGNoLCBpdCdzIHNlbmRpbmcgYSByZXNldCDigJMgYSBUQ1AgUlNUIOKAkyB1c2luZyBgdGNwX3Y0X3NlbmRfcmVzZXRgIG9yIGB0Y3BfdjZfc2VuZF9yZXNldGAsIHdpdGggdGhlIHJlYXNvbiBgU0tfUlNUX1JFQVNPTl9UQ1BfU1RBVEVgLiBUaGF0J3MgYSBmdW5kYW1lbnRhbCBzaGlmdCBpbiBob3cgdGhlIHN0YWNrIHJlc3BvbmRzIHRvIHRoaXMgc3BlY2lmaWMgZXJyb3IuXG5cblRvIHN0YXJ0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlnIGltcGxpY2F0aW9ucy4gSSdtIGFzc3VtaW5nIHRoYXQgdGhlIGJhc2UgVENQIGZ1bmN0aW9uYWxpdHkgaXMgYWx3YXlzIGNvbXBpbGVkIHdpdGggYElQX1RDUGAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCBJUHY2IHByb2JhYmx5IGRlcGVuZHMgb24gYElQVjZgIGJlaW5nIGVuYWJsZWQuIFRpbWUgdG8gdmVyaWZ5LlxuXG5Pa2F5LCBjaGVja2luZyB0aGUgZmlsZXMgZGlyZWN0bHkuLi4gYG5ldC9pcHY0L3RjcF9pcHY0LmNgIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19JTkVUYCBpcyBlbmFibGVkLCB0aGF0IG11Y2ggaXMgY2xlYXIuIEFuZCwgYG5ldC9pcHY2L3RjcF9pcHY2LmNgIGdldHMgaW5jbHVkZWQgd2hlbiBgQ09ORklHX0lQVjZgIGlzIGVuYWJsZWQuIE1ha2VzIHNlbnNlLlxuXG5Ob3csIEknbSB0aGlua2luZyBhYm91dCBob3cgYWNjZXNzaWJsZSB0aGVzZSBmdW5jdGlvbnMgYXJlLiBBcmUgdGhleSBleHBvcnRlZD8gSSBuZWVkIHRvIGtub3cgaWYgSSBjYW4gZWFzaWx5IHJlYWNoIHRoZW0uIENoZWNraW5nIGBuZXQvaXB2NC90Y3BfaXB2NC5jYCwgYHRjcF92NF9zeW5fcmVjdl9zb2NrYCBpcyBpbmRlZWQgZXhwb3J0ZWQgdXNpbmcgYEVYUE9SVF9TWU1CT0xgLiBHb29kLlxuXG5Ob3cgZm9yIGBuZXQvaXB2Ni90Y3BfaXB2Ni5jYC4gV2FpdC4uLiAqc3RhdGljKiBgdGNwX3Y2X3N5bl9yZWN2X3NvY2tgPyBUaGF0IGluaXRpYWxseSB0aHJvd3MgYSByZWQgZmxhZy4gQnV0IHdhaXQsIGl0J3MgYXNzaWduZWQgdG8gYSBgc3RydWN0IGluZXRfY29ubmVjdGlvbl9zb2NrX2FmX29wcyBpcHY2X3NwZWNpZmljYCBvciBzaW1pbGFyLiBBaCwgcmlnaHQuIEl0J3MgdXNlZCB0aHJvdWdoIHRoYXQgY29ubmVjdGlvbi4gU28sIGV2ZW4gdGhvdWdoIGl0J3Mgc3RhdGljLCBpdCdzIGluZGlyZWN0bHkgYWNjZXNzaWJsZSB0aHJvdWdoIHRoYXQgZnVuY3Rpb24gcG9pbnRlci4gRXhjZWxsZW50LiBXZSBjYW4gc3RpbGwgcmVhY2ggaXQuIFRpbWUgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBJUHY2IHNpZGUgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg2OCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDIxOjIyOjU2Ljc2ODU1NjExMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjA4MzU1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfdjZfc3luX3JlY3Zfc29ja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni90Y3BfaXB2Ni5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L3RjcF9pcHY2LmM9MTM0OD1zdGF0aWMgdm9pZCB0Y3BfdjZfbWFwcGVkX2NoaWxkX2luaXQoc3RydWN0IHNvY2sgKm5ld3NrLCBjb25zdCBzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTEzODEtXFxubmV0L2lwdjYvdGNwX2lwdjYuYzoxMzgyOnN0YXRpYyBzdHJ1Y3Qgc29jayAqdGNwX3Y2X3N5bl9yZWN2X3NvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTM4My1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0yMDE0PWNvbnN0IHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29ja19hZl9vcHMgaXB2Nl9zcGVjaWZpYyA9IHtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjAxOC1cXHQuY29ubl9yZXF1ZXN0XFx0ICAgPSB0Y3BfdjZfY29ubl9yZXF1ZXN0LFxcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MjAxOTpcXHQuc3luX3JlY3Zfc29ja1xcdCAgID0gdGNwX3Y2X3N5bl9yZWN2X3NvY2ssXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0yMDIwLVxcdC5uZXRfaGVhZGVyX2xlblxcdCAgID0gc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSxcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM9MjA0NT1zdGF0aWMgY29uc3Qgc3RydWN0IGluZXRfY29ubmVjdGlvbl9zb2NrX2FmX29wcyBpcHY2X21hcHBlZCA9IHtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMjA0OS1cXHQuY29ubl9yZXF1ZXN0XFx0ICAgPSB0Y3BfdjZfY29ubl9yZXF1ZXN0LFxcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MjA1MDpcXHQuc3luX3JlY3Zfc29ja1xcdCAgID0gdGNwX3Y2X3N5bl9yZWN2X3NvY2ssXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0yMDUxLVxcdC5uZXRfaGVhZGVyX2xlblxcdCAgID0gc2l6ZW9mKHN0cnVjdCBpcGhkciksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDIxOjIyOjU2LjgxNDY0MzkwNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5NjEwOTIxMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEFQSSBFbnRyeXBvaW50cyBmb3IgdGhlIEtlcm5lbCdzIFRDUC9JUCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBiZXN0IHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIGZvciB0aGlzIGFuYWx5c2lzLCBhbmQgSSBuZWVkIHRvIGJlIHByZWNpc2UuIEluaXRpYWxseSwgSSB0aG91Z2h0IHRoYXQgc2luY2UgYHRjcF92Nl9zeW5fcmVjdl9zb2NrYCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYCwgSSBzaG91bGQgZXhjbHVkZSBpdCBmcm9tIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0LiBIb3dldmVyLCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoZSBleHBsaWNpdCBpbnN0cnVjdGlvbiB0byBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBUaGF04oCZcyB0aGUga2V5LlxuXG5UaGVuLCBJIHN0b3BwZWQgYW5kIHJldGhvdWdodDogYHRjcF92Nl9zeW5fcmVjdl9zb2NrYCwgZXZlbiB0aG91Z2ggaXQgaXMgc3RhdGljLCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIgKGAuc3luX3JlY3Zfc29ja2ApLiBUaGlzIG1lYW5zIGl0IGxpa2VseSB3b24ndCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgaGFzIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIFRoYXQncyBhIGdvb2QgYXJndW1lbnQgdG8ga2VlcCBpdC4gVGhlIHNhbWUgbG9naWMgbWlnaHQgYXBwbHkgdG8gb3RoZXIgZnVuY3Rpb25zIGxpa2UgYHRjcF92NF9zeW5fcmVjdl9zb2NrYCBhbmQgYHRjcF92Nl9jb25uX3JlcXVlc3RgLlxuXG5CYWNrIHRvIHRoZSBwcm9tcHQ6IG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBhcmUgcHJlZmVycmVkLiBgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGlzIG5vdCBzdGF0aWMuIFNpbmNlIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AgaXMgYSBjYWxsYmFjayBmdW5jdGlvbiBwb2ludGVyLCBpdCB3b24ndCBiZSBpbmxpbmVkLiBUaGlzIG1lYW5zIGJvdGggYXJlIHZhbGlkLlxuXG5JJ3ZlIGp1c3QgY29uZmlybWVkIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AgaXMgaW5kZWVkIGRlY2xhcmVkIHN0YXRpYy4gVGh1cywgYmFzZWQgb24gdGhlIHByaW5jaXBsZSwgSSBzaG91bGQgaW5jbHVkZSBib3RoIGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AgYmVjYXVzZSB0aGV5IGFyZSB0aGUgZXhhY3QgZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkLCBhbmQgdGhleSBhcmUgbm90IGlubGluZWQuIE9uZSBpcyBleHBvcnRlZCwgdGhlIG90aGVyIGlzIGEgY2FsbGJhY2sgZnVuY3Rpb24gcG9pbnRlci5cblxuTm93LCBsZXQncyBleHBsb3JlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMuIGB0Y3BfdjRfc2VuZF9yZXNldGAgYW5kIGB0Y3BfdjZfc2VuZF9yZXNldGAgc2VlbSByZWxldmFudCwgYnV0IHRoZXkncmUganVzdCBjYWxsZWQgYnkgb3RoZXIgZnVuY3Rpb25zLCBub3QgdGhlIGVudHJ5IHBvaW50cy5cblxuSSdsbCBwcm9jZWVkIGJ5IGNoZWNraW5nIGB0Y3BfdjRfc3luX3JlY3Zfc29ja2Agd2l0aGluIGBuZXQvaXB2NC90Y3BfaXB2NC5jYCB0byBjb25maXJtIHRoZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTA2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDIxOjIzOjAzLjc3NTc0MDYwOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzE3MDc3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfdjRfc3luX3JlY3Zfc29ja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9pcHY0LmM9MTY1NT1pbnQgdGNwX3Y0X2Nvbm5fcmVxdWVzdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTE2NzMtICovXFxubmV0L2lwdjQvdGNwX2lwdjQuYzoxNjc0OnN0cnVjdCBzb2NrICp0Y3BfdjRfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0xNjc1LVxcdFxcdFxcdFxcdCAgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0yMzY1PWNvbnN0IHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29ja19hZl9vcHMgaXB2NF9zcGVjaWZpYyA9IHtcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjM2OS1cXHQuY29ubl9yZXF1ZXN0XFx0ICAgPSB0Y3BfdjRfY29ubl9yZXF1ZXN0LFxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MjM3MDpcXHQuc3luX3JlY3Zfc29ja1xcdCAgID0gdGNwX3Y0X3N5bl9yZWN2X3NvY2ssXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0yMzcxLVxcdC5uZXRfaGVhZGVyX2xlblxcdCAgID0gc2l6ZW9mKHN0cnVjdCBpcGhkciksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDIxOjIzOjAzLjgyMjkyNTE0M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NTE2MjQ0MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFNZTiBSZWNlaXZlIFNvY2tldCBDYWxsYmFja3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSB0d28gZnVuY3Rpb25zLCBgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGFuZCBgdGNwX3Y2X3N5bl9yZWN2X3NvY2tgLiBUaGV5J3JlIGJvdGggdXNlZCBhcyBjYWxsYmFja3MgZm9yIHRoZSBgLnN5bl9yZWN2X3NvY2tgIG9wZXJhdGlvbiwgd2hpY2ggaXMgc3RhbmRhcmQgaW4gdGhpcyBhcmVhLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaW5jbHVkZSB0aGVtIGluIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0LCB0byB0cmFjayB0aGVtIHByb3Blcmx5LlxuXG5Ob3csIGNvbmNlcm5pbmcgdGhlIGNvbmZpZ3VyYXRpb25zLCBJIHNlZSB0aGF0IGBJUFY2YCBpcyByZXF1aXJlZCBmb3IgdGhlIGBuZXQvaXB2Ni90Y3BfaXB2Ni5jYCBmaWxlLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBTaW1pbGFybHksIGBJTkVUYCBpcyBuZWVkZWQgZm9yIGBuZXQvaXB2NC90Y3BfaXB2NC5jYC4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBJTkVUYCBpcyB0aGUgYXBwcm9wcmlhdGUgY29uZmlnIGZvciB0aGF0IHBhcnRpY3VsYXIgdXNlIGNhc2UgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBJdCB3b3VsZCBiZSBhIHNpbGx5IG92ZXJzaWdodCBpZiBpdCB3YXNuJ3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NzMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMjE6MjM6MDkuNDc0NTUyOTUxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MjY2MTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9pcHY0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGUtOS1cXHQgICAgIGluZXRfdGltZXdhaXRfc29jay5vIGluZXRfY29ubmVjdGlvbl9zb2NrLm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlOjEwOlxcdCAgICAgdGNwLm8gdGNwX2lucHV0Lm8gdGNwX291dHB1dC5vIHRjcF90aW1lci5vIHRjcF9pcHY0Lm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlLTExLVxcdCAgICAgdGNwX21pbmlzb2Nrcy5vIHRjcF9jb25nLm8gdGNwX21ldHJpY3MubyB0Y3BfZmFzdG9wZW4ubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDIxOjIzOjA5LjUyMDgyNTQyNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMTM5Mzk4MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBhbmQgSVB2NCBDb21waWxhdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGtlcm5lbCdzIGJ1aWxkIHByb2Nlc3MsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgdGhlIElQdjQgc3RhY2suIEkga25vdyB0aGlzIGlzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgbmV0d29yayBzdGFjaywgc28gaXQgbWFrZXMgc2Vuc2UgdGhhdCBpdCdzIGhhbmRsZWQgcHJldHR5IGNhcmVmdWxseS4gV2hhdCBJJ20gc2VlaW5nIGlzIHRoYXQgdGhlIGNvZGUgZm9yIElQdjQgaXMgY29tcGlsZWQgdW5jb25kaXRpb25hbGx5LiBJdOKAmXMgYmFrZWQgcmlnaHQgaW50byB0aGUga2VybmVsIHZpYSBgbmV0L2lwdjQvTWFrZWZpbGVgLiBUaGF0IGluY2x1c2lvbiBpcyB0cmlnZ2VyZWQgKm9ubHkqIGlmIGBDT05GSUdfSU5FVGAgaXMgc2V0LCBtZWFuaW5nIHRoZSBrZXJuZWwgaXMgYmVpbmcgYnVpbHQgd2l0aCBnZW5lcmFsIG5ldHdvcmtpbmcgc3VwcG9ydCBpbiB0aGUgZmlyc3QgcGxhY2UuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZSBmb3IgbW9kdWxhcml0eSBhbmQga2VlcGluZyB0aGUgY29uZmlndXJhdGlvbiBjbGVhbi4gSWYgSSBkaXNhYmxlIG5ldHdvcmtpbmcgZW50aXJlbHksIElQdjQgaXNuJ3QgZXZlbiBwYXJ0IG9mIHRoZSBidWlsZC4gVGhhdCdzIGdvb2Qgb3B0aW1pemF0aW9uLiBJdCBoZWxwcyBhdm9pZCBjb2RlIGJsb2F0IHdoZW4gaXQncyBub3QgbmVlZGVkLCBhbmQgZW5zdXJlcyBkZXBlbmRlbmNpZXMgYXJlIG1hbmFnZWQgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTQxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMjE6MjM6MTIuNzM0NzY3NzE1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njc3NzI2NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0L2lwdjRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQyMToyMzoxMi43ODE1NTM2M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODY5NDEyOTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNoZWNraW5nIHRoZSBgbmV0L01ha2VmaWxlYCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEJlZm9yZSBJIHByb2NlZWQgYW55IGZ1cnRoZXIsIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nIGNydWNpYWwuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBgbmV0L01ha2VmaWxlYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBidWlsZCBzeXN0ZW0ncyBkZXBlbmRlbmNpZXMgYW5kIGNvbXBpbGF0aW9uIGZsYWdzIHdpdGhpbiB0aGF0IHBhcnRpY3VsYXIgZGlyZWN0b3J5IGhhdmVuJ3QgY2hhbmdlZCBpbiBhIHdheSB0aGF0IHdvdWxkIHN1YnRseSBpbXBhY3QgbXkgY3VycmVudCB0YXNrLiBUaGlzIGlzIGp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gZWxpbWluYXRlIGEgY29tbW9uIHNvdXJjZSBvZiB1bmV4cGVjdGVkIGJlaGF2aW9yIOKAkyBJJ3ZlIGJlZW4gYnVybmVkIGJ5IGZvcmdldHRpbmcgdGhpcyBiZWZvcmUhIEdvdHRhIG1ha2Ugc3VyZSB0aGUgdG9vbGNoYWluLCBvcHRpbWl6YXRpb24gc2V0dGluZ3MsIGFuZCBsaW5rZXIgZmxhZ3MgYXJlIHN0aWxsIGFzIGV4cGVjdGVkIGZvciB0aGlzIG5ldHdvcmsgbW9kdWxlLiBUaGlzIGNvdWxkIHNhdmUgbWUgaG91cnMgb2YgZGVidWdnaW5nIGxhdGVyIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDA3LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMjE6MjM6MTguNjUwOTY5NzE0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjAzNzI1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcHY0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX05FVEZJTFRFUilcXHRcXHQrPSBuZXRmaWx0ZXIvXFxubmV0L01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19JTkVUKVxcdFxcdCs9IGlwdjQvXFxubmV0L01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19UTFMpXFx0XFx0Kz0gdGxzL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQyMToyMzoxOC42OTcwMTEzOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTI0ODQ4MTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKklQdjYgTWFrZWZpbGUgRXhhbWluYXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBkZWFsaW5nIHdpdGggbmV0d29ya2luZyBoZXJlLCBhbmQgc3BlY2lmaWNhbGx5IElQdjYuIFRoZSBpbml0aWFsIHByb21wdCBjb25maXJtZWQgYENPTkZJR19JTkVUYCwgd2hpY2ggaXMgZ29vZCDigJMgdGhhdCB0ZWxscyBtZSB0aGUgYmFzZSBJUHY0L0lQdjYgc3VwcG9ydCBpcyBlbmFibGVkLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCwgZnJvbSBhbiBhcmNoaXRlY3R1cmFsIHN0YW5kcG9pbnQsIGlzIHRvIGRpZyBpbnRvIHRoZSBgbmV0L2lwdjYvTWFrZWZpbGVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIElQdjYgY29tcG9uZW50cyBhcmUgYmVpbmcgYnVpbHQgYW5kIGxpbmtlZCwgYW5kIGhvdyB0aGV5IGludGVyYWN0IHdpdGggdGhlIGJyb2FkZXIgbmV0d29ya2luZyBzdGFjay4gVGhpcyBNYWtlZmlsZSBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCBzbyB0byBzcGVhay4gVW5kZXJzdGFuZGluZyBpdHMgc3RydWN0dXJlIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGdyYXNwIG9mIHRoZSBJUHY2IHN1YnN5c3RlbSdzIGJ1aWxkIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2NjgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQyMToyMzoyMi4yMjE4NjIyMjZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNTgzOTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9pcHY2Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvTWFrZWZpbGU9OD1pcHY2LXkgOj1cXHRhZl9pbmV0Ni5vIGFueWNhc3QubyBpcDZfb3V0cHV0Lm8gaXA2X2lucHV0Lm8gYWRkcmNvbmYubyBcXFxcXFxuLS1cXG5uZXQvaXB2Ni9NYWtlZmlsZS0xMC1cXHRcXHRyb3V0ZS5vIGlwNl9maWIubyBpcHY2X3NvY2tnbHVlLm8gbmRpc2MubyB1ZHAubyBcXFxcXFxubmV0L2lwdjYvTWFrZWZpbGU6MTE6XFx0XFx0cmF3Lm8gaWNtcC5vIG1jYXN0Lm8gcmVhc3NlbWJseS5vIHRjcF9pcHY2Lm8gcGluZy5vIFxcXFxcXG5uZXQvaXB2Ni9NYWtlZmlsZS0xMi1cXHRcXHRleHRoZHJzLm8gZGF0YWdyYW0ubyBpcDZfZmxvd2xhYmVsLm8gaW5ldDZfY29ubmVjdGlvbl9zb2NrLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQyMToyMzoyMi4yNjU0NTA0OTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxMjkwOTg3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJUHY2IGFuZCB0aGUgTmV0d29yayBNYWtlZmlsZSoqXG5cbkFscmlnaHQsIG15IG1pbmQncyBqdW1wZWQgdG8gdGhlIGBuZXQvTWFrZWZpbGVgLiBJJ20gaW1tZWRpYXRlbHkgdGhpbmtpbmcsIFwiV2hhdCBhYm91dCBJUHY2P1wiIEl0J3Mgc3VjaCBhbiBpbnRlZ3JhbCBwYXJ0IG9mIG1vZGVybiBuZXR3b3JraW5nIG5vdywgYW5kIEkgbmVlZCB0byBlbnN1cmUgaXQncyBwcm9wZXJseSBoYW5kbGVkIGluIHRoZSBidWlsZCBwcm9jZXNzLiBJIG5lZWQgdG8gcmVmcmVzaCBteXNlbGYgb24gaG93IHRoZSBJUHY2IGNvbmZpZ3VyYXRpb24gaW1wYWN0cyB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb21waWxhdGlvbiB0YXJnZXRzIHdpdGhpbiB0aGF0IE1ha2VmaWxlLiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGJlIGxvb2tpbmcgZm9yIHdoZXJlIElQdjYtcmVsYXRlZCBmaWxlcywgZmxhZ3MsIG9yIGNvbmRpdGlvbmFsIGxvZ2ljIGFyZSBpbnRyb2R1Y2VkLiBUaGVyZSBjb3VsZCBiZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIGJhc2VkIG9uIHRoZSBwcmVzZW5jZSBvZiBJUHY2IHN1cHBvcnQuIEknbSBnb2luZyB0byBxdWlja2x5IHJldmlldyBpdCB0byB2ZXJpZnkgdGhlIGJ1aWxkIHByb2Nlc3MgY29ycmVjdGx5IGxpbmtzIHRoZSBuZWNlc3NhcnkgSVB2NiBsaWJyYXJpZXMgYW5kIGluY2x1ZGVzIHRoZSBhcHByb3ByaWF0ZSBoZWFkZXIgZmlsZXMuIElzIHRoZXJlIGEgc2VwYXJhdGUgc2VjdGlvbiBkZWRpY2F0ZWQgdG8gSVB2Niwgb3IgaXMgaXQgd292ZW4gdGhyb3VnaG91dD8gSSBuZWVkIHRvIG1ha2UgY2VydGFpbiB0aGF0IHRoZSBJUHY2IGJ1aWxkIGlzIHJvYnVzdCBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHVuZm9yZXNlZW4gaXNzdWVzIG9yIGRlcGVuZGVuY2llcyBvbiBsZWdhY3kgSVB2NCBjb21wb25lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDIyLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMjE6MjM6MjUuOTc4MzYzMjc5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTQxMzYzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcHY2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvTWFrZWZpbGU9MjE9b2JqLSQoQ09ORklHX0lORVRfUFNQKVxcdFxcdCs9IHBzcC9cXG5uZXQvTWFrZWZpbGU6MjI6b2JqLXlcXHRcXHRcXHRcXHQrPSBpcHY2L1xcbm5ldC9NYWtlZmlsZS0yMy1vYmotJChDT05GSUdfUEFDS0VUKVxcdFxcdCs9IHBhY2tldC9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMjE6MjM6MjYuMDIzNzgxNzk0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTM3MDk5NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWxseSBVbm5lY2Vzc2FyeSBJUHY2IERlcGVuZGVuY3kqKlxuXG5IbW0sIHRoaXMgaXMgcGVjdWxpYXIuIFRoZSBgbmV0L01ha2VmaWxlYCBzZWVtcyB0byBhbHdheXMgaW5jbHVkZSB0aGUgYGlwdjYvYCBkaXJlY3RvcnkgdW5jb25kaXRpb25hbGx5LiBUaGF0IGZlZWxz4oCmIGEgbGl0dGxlIG9mZiwgZG9lc24ndCBpdD8gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSB1bmRlcnN0YW5kaW5nLiBJJ20gZ29pbmcgdG8gcmV2aXNpdCBgbmV0L2lwdjYvTWFrZWZpbGVgIGFuZCBzZWUgaWYgdGhlcmUncyBzb21ldGhpbmcgSSdtIG1pc3NpbmcuIFBlcmhhcHMgdGhlcmUncyBhIGdvb2QgcmVhc29uIGZvciB0aGlzIGltcGxpY2l0IGluY2x1c2lvbiwgc29tZSBzdWJ0bGUgaW50ZXJhY3Rpb24gSSdtIG5vdCBpbW1lZGlhdGVseSBncmFzcGluZywgb3IgYSBzcGVjaWZpYyBkZXNpZ24gY29uc3RyYWludCBkcml2aW5nIHRoaXMuIExldCdzIHNlZSBpZiB0aGlzIGluY2x1c2lvbiBpcyBhcyBzdHJhaWdodGZvcndhcmQgYXMgaXQgYXBwZWFycywgb3IgaWYgdGhlcmUncyBhIG1vcmUgbnVhbmNlZCBleHBsYW5hdGlvbiB0aGF0IEknbSBvdmVybG9va2luZy4gSSBzdXNwZWN0IHRoZXJlJ3MgbW9yZSBjb250ZXh0IG5lZWRlZCBiZWZvcmUgYSBkZWNpc2lvbiBpcyB3YXJyYW50ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNDQsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQyMToyMzoyOS4wNzc0OTQzODlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NTQyOTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9iai1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvTWFrZWZpbGUtNS1cXG5uZXQvaXB2Ni9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19JUFY2KSArPSBpcHY2Lm9cXG5uZXQvaXB2Ni9NYWtlZmlsZS03LVxcbi0tXFxubmV0L2lwdjYvTWFrZWZpbGU9Mjg9aXB2Ni0kKENPTkZJR19JUFY2X0lPQU02X0xXVFVOTkVMKSArPSBpb2FtNl9pcHR1bm5lbC5vXFxubmV0L2lwdjYvTWFrZWZpbGUtMjktXFxubmV0L2lwdjYvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX0lORVQ2X0FIKSArPSBhaDYub1xcbm5ldC9pcHY2L01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19JTkVUNl9FU1ApICs9IGVzcDYub1xcbm5ldC9pcHY2L01ha2VmaWxlOjMyOm9iai0kKENPTkZJR19JTkVUNl9FU1BfT0ZGTE9BRCkgKz0gZXNwNl9vZmZsb2FkLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZTozMzpvYmotJChDT05GSUdfSU5FVDZfSVBDT01QKSArPSBpcGNvbXA2Lm9cXG5uZXQvaXB2Ni9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfSU5FVDZfWEZSTV9UVU5ORUwpICs9IHhmcm02X3R1bm5lbC5vXFxubmV0L2lwdjYvTWFrZWZpbGU6MzU6b2JqLSQoQ09ORklHX0lORVQ2X1RVTk5FTCkgKz0gdHVubmVsNi5vXFxubmV0L2lwdjYvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0lQVjZfTUlQNikgKz0gbWlwNi5vXFxubmV0L2lwdjYvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX0lQVjZfSUxBKSArPSBpbGEvXFxubmV0L2lwdjYvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX05FVEZJTFRFUilcXHQrPSBuZXRmaWx0ZXIvXFxubmV0L2lwdjYvTWFrZWZpbGUtMzktXFxubmV0L2lwdjYvTWFrZWZpbGU6NDA6b2JqLSQoQ09ORklHX0lQVjZfVlRJKSArPSBpcDZfdnRpLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZTo0MTpvYmotJChDT05GSUdfSVBWNl9TSVQpICs9IHNpdC5vXFxubmV0L2lwdjYvTWFrZWZpbGU6NDI6b2JqLSQoQ09ORklHX0lQVjZfVFVOTkVMKSArPSBpcDZfdHVubmVsLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfSVBWNl9HUkUpICs9IGlwNl9ncmUub1xcbm5ldC9pcHY2L01ha2VmaWxlOjQ0Om9iai0kKENPTkZJR19JUFY2X0ZPVSkgKz0gZm91Ni5vXFxubmV0L2lwdjYvTWFrZWZpbGUtNDUtXFxubmV0L2lwdjYvTWFrZWZpbGU6NDY6b2JqLXkgKz0gYWRkcmNvbmZfY29yZS5vIGV4dGhkcnNfY29yZS5vIGlwNl9jaGVja3N1bS5vIGlwNl9pY21wLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZTo0NzpvYmotJChDT05GSUdfSU5FVCkgKz0gb3V0cHV0X2NvcmUubyBwcm90b2NvbC5vIFxcXFxcXG5uZXQvaXB2Ni9NYWtlZmlsZS00OC1cXHRcXHRcXHRpcDZfb2ZmbG9hZC5vIGV4dGhkcnNfb2ZmbG9hZC5vXFxubmV0L2lwdjYvTWFrZWZpbGUtNDktXFxubmV0L2lwdjYvTWFrZWZpbGU6NTA6b2JqLSQoc3Vic3QgbSx5LCQoQ09ORklHX0lQVjYpKSArPSBpbmV0Nl9oYXNodGFibGVzLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZS01MS1cXG5uZXQvaXB2Ni9NYWtlZmlsZT01Mj1pZm5lcSAoJChDT05GSUdfSVBWNiksKVxcbm5ldC9pcHY2L01ha2VmaWxlOjUzOm9iai0kKENPTkZJR19ORVRfVURQX1RVTk5FTCkgKz0gaXA2X3VkcF90dW5uZWwub1xcbm5ldC9pcHY2L01ha2VmaWxlOjU0Om9iai15ICs9IG1jYXN0X3Nub29wLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZTo1NTpvYmotJChDT05GSUdfVENQX0FPKSArPSB0Y3BfYW8ub1xcbm5ldC9pcHY2L01ha2VmaWxlLTU2LWVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDIxOjIzOjI5LjEyMjA0MzI0NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjQwOTIxNjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRDUCBDb25uZWN0aW9uIEVzdGFibGlzaG1lbnQgQ2hhbmdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGV4cGVydCBleWUgaG9uZXMgaW4gb24gdGhlIGNvcmUgY2hhbmdlLiBJdCdzIHRvdWNoaW5nIGhvdyBgdGNwX3Y0X3N5bl9yZWN2X3NvY2tgIGFuZCBgdGNwX3Y2X3N5bl9yZWN2X3NvY2tgIGhhbmRsZSBlcnJvcnMgY29taW5nIGJhY2sgZnJvbSBgX19pbmV0X2luaGVyaXRfcG9ydGAuIFNwZWNpZmljYWxseSwgaXQgYXBwZWFycyB0aGUgcGF0Y2ggaXMgYWx0ZXJpbmcgaG93IHRoZSBzeXN0ZW0gcmVhY3RzIHRvIGFuIGAtRU5PRU5UYCByZXR1cm4gZnJvbSB0aGF0IGZ1bmN0aW9uLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgYF9faW5ldF9pbmhlcml0X3BvcnRgIGlzIHJpZ2h0IGluIHRoZSBoZWFydCBvZiB0aGUgU1lOLVJFQ1Ygc3RhdGUgZHVyaW5nIFRDUCBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQuXG5cbldlIGtub3cgYENPTkZJR19JUFY2YCBpcyByZWxldmFudCBoZXJlLCB3aGljaCBtZWFucyBgaXB2Ni5vYCBpcyBpbiB0aGUgcGljdHVyZSwgYW5kIGNvbnNlcXVlbnRseSBgdGNwX2lwdjYub2AuIFNpbmNlIHRoaXMgZGlyZWN0bHkgaW1wYWN0cyB0aGUgVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCwgYSBmdW5jdGlvbiBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBpcyBhIGRpcmVjdCBjb25zZXF1ZW5jZSBvZiBuZXR3b3JrIHRyYWZmaWMsIGl0J3MgYSAqZGVmaW5pdGUqIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gQW55IGNoYW5nZSBsaWtlIHRoaXMsIGVzcGVjaWFsbHkgZHVyaW5nIHRoZSBTWU4tUkVDViBzdGFnZSwgaXMgd29ydGggYSB0aG9yb3VnaCBpbnZlc3RpZ2F0aW9uLiBNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB0aG9zZSB0d28gY3J1Y2lhbCBmdW5jdGlvbnMsIGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AsIGFuZCBJJ20gZ29pbmcgdG8gd2FudCB0byB2ZXJpZnkgYElORVRgIGFuZCBgSVBWNmAgYXJlIGVuYWJsZWQsIG9mIGNvdXJzZS5cblxuSSdsbCBiZSB1c2luZyB0aGUgc2V0LXJlc3VsdHMgdG9vbCBmb3IgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM2MiwiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMjE6MjM6MzQuNzYyOTY4MDQzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODEzMTk3NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORVRcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfdjRfc3luX3JlY3Zfc29ja1wiLFxuICAgIFwidGNwX3Y2X3N5bl9yZWN2X3NvY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCAoU1lOLVJFQ1Ygc3RhdGUpIGZvciBib3RoIElQdjQgYW5kIElQdjYuIFNwZWNpZmljYWxseSwgaXQgY2hhbmdlcyB0aGUgYmVoYXZpb3Igd2hlbiBgX19pbmV0X2luaGVyaXRfcG9ydGAgcmV0dXJucyBgLUVOT0VOVGAgdG8gc2VuZCBhIFRDUCByZXNldCBpbnN0ZWFkIG9mIGp1c3QgZHJvcHBpbmcgdGhlIGNvbm5lY3Rpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2sgdGhhdCBpcyByZWFjaGFibGUgdmlhIG5ldHdvcmsgdHJhZmZpYyBhbmQgc29ja2V0IG9wZXJhdGlvbnMsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiLFxuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjcF92NF9zeW5fcmVjdl9zb2NrXCIsXG4gICAgXCJ0Y3BfdjZfc3luX3JlY3Zfc29ja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBpbiBUQ1AgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IChTWU4tUkVDViBzdGF0ZSkgZm9yIGJvdGggSVB2NCBhbmQgSVB2Ni4gU3BlY2lmaWNhbGx5LCBpdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciB3aGVuIGBfX2luZXRfaW5oZXJpdF9wb3J0YCByZXR1cm5zIGAtRU5PRU5UYCB0byBzZW5kIGEgVENQIHJlc2V0IGluc3RlYWQgb2YganVzdCBkcm9wcGluZyB0aGUgY29ubmVjdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFRDUCBzdGFjayB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgbmV0d29yayB0cmFmZmljIGFuZCBzb2NrZXQgb3BlcmF0aW9ucywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMjE6MjM6MzQuODQ0Mjk0OTg1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzgyNjkwMzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMjE6MjM6MzQuODQ0ODQwMTg1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjgzODIxNDEyMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIHRoZSBUQ1AgU1lOIHJlY2VpdmUgcGF0aHMgKGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2ApIHRvIHNlbmQgYSBUQ1AgcmVzZXQgaWYgYF9faW5ldF9pbmhlcml0X3BvcnRgIHJldHVybnMgYC1FTk9FTlRgLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGNoYW5nZXMgYXJlIHB1cmVseSBjb250cm9sIGZsb3cgcmVsYXRlZC4gU3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgKGxpa2UgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgdGhhdCBtaWdodCBhcmlzZSBmcm9tIHRoaXMgY2hhbmdlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcxZjI3MWVjYWMzZGI1ODhkMmZhY2U1YTNjZjY0MGFmZGY3ZGMzMGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxMSAyMToyMjo0NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pcHY0LmMgYi9uZXQvaXB2NC90Y3BfaXB2NC5jXG5pbmRleCBiODg4N2NkZDY2YzU3Li45YTE0YzJlNTZlYzNhIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX2lwdjQuY1xuKysrIGIvbmV0L2lwdjQvdGNwX2lwdjQuY1xuQEAgLTE2OTAsNiArMTY5MCw3IEBAIHN0cnVjdCBzb2NrICp0Y3BfdjRfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRpbnQgbDNpbmRleDtcbiAjZW5kaWZcbiBcdHN0cnVjdCBpcF9vcHRpb25zX3JjdSAqaW5ldF9vcHQ7XG4rXHRpbnQgcmV0O1xuIFxuIFx0aWYgKHNrX2FjY2VwdHFfaXNfZnVsbChzaykpXG4gXHRcdGdvdG8gZXhpdF9vdmVyZmxvdztcbkBAIC0xNzU2LDggKzE3NTcsMTIgQEAgc3RydWN0IHNvY2sgKnRjcF92NF9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0Z290byBwdXRfYW5kX2V4aXQ7IC8qIE9PTSwgcmVsZWFzZSBiYWNrIG1lbW9yeSAqL1xuICNlbmRpZlxuIFxuLVx0aWYgKF9faW5ldF9pbmhlcml0X3BvcnQoc2ssIG5ld3NrKSBcdTAwM2MgMClcbitcdHJldCA9IF9faW5ldF9pbmhlcml0X3BvcnQoc2ssIG5ld3NrKTtcbitcdGlmICh1bmxpa2VseShyZXQgXHUwMDNjIDApKSB7XG4rXHRcdGlmIChyZXQgPT0gLUVOT0VOVClcbitcdFx0XHRnb3RvIHNlbmRfcmVzZXRfYW5kX2V4aXQ7XG4gXHRcdGdvdG8gcHV0X2FuZF9leGl0O1xuK1x0fVxuIFx0Km93bl9yZXEgPSBpbmV0X2VoYXNoX25vbGlzdGVuKG5ld3NrLCByZXFfdG9fc2socmVxX3VuaGFzaCksXG4gXHRcdFx0XHQgICAgICAgXHUwMDI2Zm91bmRfZHVwX3NrKTtcbiBcdGlmIChsaWtlbHkoKm93bl9yZXEpKSB7XG5AQCAtMTc4NCw2ICsxNzg5LDggQEAgc3RydWN0IHNvY2sgKnRjcF92NF9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBleGl0OlxuIFx0dGNwX2xpc3RlbmRyb3Aoc2spO1xuIFx0cmV0dXJuIE5VTEw7XG4rc2VuZF9yZXNldF9hbmRfZXhpdDpcbitcdHRjcF92NF9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1NUQVRFKTtcbiBwdXRfYW5kX2V4aXQ6XG4gXHRuZXdpbmV0LVx1MDAzZWluZXRfb3B0ID0gTlVMTDtcbiBcdGluZXRfY3NrX3ByZXBhcmVfZm9yY2VkX2Nsb3NlKG5ld3NrKTtcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni90Y3BfaXB2Ni5jIGIvbmV0L2lwdjYvdGNwX2lwdjYuY1xuaW5kZXggOWU5MTU1YjFiM2FhNy4uZWNiMGI0MDU3MDNjMyAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3RjcF9pcHY2LmNcbisrKyBiL25ldC9pcHY2L3RjcF9pcHY2LmNcbkBAIC0xNDAwLDYgKzE0MDAsNyBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKnRjcF92Nl9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKlxuIFx0aW50IGwzaW5kZXg7XG4gI2VuZGlmXG4gXHRzdHJ1Y3QgZmxvd2k2IGZsNjtcbitcdGludCByZXQ7XG4gXG4gXHRpZiAoc2tiLVx1MDAzZXByb3RvY29sID09IGh0b25zKEVUSF9QX0lQKSlcbiBcdFx0cmV0dXJuIHRjcF92NF9zeW5fcmVjdl9zb2NrKHNrLCBza2IsIHJlcSwgZHN0LFxuQEAgLTE1MTIsOCArMTUxMywxMiBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKnRjcF92Nl9zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKlxuIFx0XHRnb3RvIHB1dF9hbmRfZXhpdDsgLyogT09NICovXG4gI2VuZGlmXG4gXG4tXHRpZiAoX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spIFx1MDAzYyAwKVxuK1x0cmV0ID0gX19pbmV0X2luaGVyaXRfcG9ydChzaywgbmV3c2spO1xuK1x0aWYgKHVubGlrZWx5KHJldCBcdTAwM2MgMCkpIHtcbitcdFx0aWYgKHJldCA9PSAtRU5PRU5UKVxuK1x0XHRcdGdvdG8gc2VuZF9yZXNldF9hbmRfZXhpdDtcbiBcdFx0Z290byBwdXRfYW5kX2V4aXQ7XG4rXHR9XG4gXHQqb3duX3JlcSA9IGluZXRfZWhhc2hfbm9saXN0ZW4obmV3c2ssIHJlcV90b19zayhyZXFfdW5oYXNoKSxcbiBcdFx0XHRcdCAgICAgICBcdTAwMjZmb3VuZF9kdXBfc2spO1xuIFx0aWYgKCpvd25fcmVxKSB7XG5AQCAtMTU0Nyw2ICsxNTUyLDggQEAgc3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpcbiBleGl0OlxuIFx0dGNwX2xpc3RlbmRyb3Aoc2spO1xuIFx0cmV0dXJuIE5VTEw7XG4rc2VuZF9yZXNldF9hbmRfZXhpdDpcbitcdHRjcF92Nl9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1NUQVRFKTtcbiBwdXRfYW5kX2V4aXQ6XG4gXHRpbmV0X2Nza19wcmVwYXJlX2ZvcmNlZF9jbG9zZShuZXdzayk7XG4gXHR0Y3BfZG9uZShuZXdzayk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQyMToyMzozNC44NDQ4NDA4NzVaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODM4MjEyMDQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBUaGlzIFRDUCBTWU4gUmVjZWl2ZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdHdlYWtpbmcgYHRjcF92NF9zeW5fcmVjdl9zb2NrYCBhbmQgYHRjcF92Nl9zeW5fcmVjdl9zb2NrYCBpbiB0aGUgSVB2NCBhbmQgSVB2NiBUQ1AgaW1wbGVtZW50YXRpb25zLCByZXNwZWN0aXZlbHkuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGNoZWNraW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgYF9faW5ldF9pbmhlcml0X3BvcnQoc2ssIG5ld3NrKWAuIElmIHRoYXQgZnVuY3Rpb24gdGhyb3dzIGFuIGAtRU5PRU5UYCBlcnJvciwgdGhlIHBhdGNoIGRpdmVydHMgZXhlY3V0aW9uIHRvIGBzZW5kX3Jlc2V0X2FuZF9leGl0YC4gRnJvbSB0aGVyZSwgaXQgY2FsbHMgZWl0aGVyIGB0Y3BfdjRfc2VuZF9yZXNldGAgb3IgYHRjcF92Nl9zZW5kX3Jlc2V0YCB3aXRoIHRoZSBzb2NrZXQgKGBza2ApIGFuZCBzb2NrZXQgYnVmZmVyIChgc2tiYCkgYmVmb3JlIGV4aXRpbmcuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgYW55IHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gTGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgcXVpY2sgc2NhbiwgaXQgbG9va3MgbGlrZSB0aGlzIGlzIHB1cmVseSBhIGNvbnRyb2wtZmxvdyBjaGFuZ2U7IGVycm9yIGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkuIFRoZSBrZXkgYXJndW1lbnRzIHRvIGB0Y3BfdjRfc2VuZF9yZXNldGAgYW5kIGB0Y3BfdjZfc2VuZF9yZXNldGAgKHNrIGFuZCBza2IpIGFyZSBhbHJlYWR5IGluaXRpYWxpemVkIHdpdGhpbiB0aGUgZnVuY3Rpb25zIHRoYXQgY2FsbCB0aGVtLCByaWdodD8gVGhleSdyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvIGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2AuIEkgZG9uJ3Qgc2VlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIGFsbG9jYXRlZCwgb3IgYW55IG5ldyBmaWVsZHMgYmVpbmcgaW50cm9kdWNlZCB0aGF0IG1pZ2h0IG5vdCBiZSBpbml0aWFsaXplZCwgbm9yIGFueSBtZW1vcnkgY29waWVkIHRvIHVzZXJzcGFjZS4gU28sIEknZCBzYXkgdGhlIGxpa2VsaWhvb2Qgb2YgaW50cm9kdWNpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgaGVyZSBpcyBuZWdsaWdpYmxlLCB6ZXJvIGV2ZW4uIFN0YW5kYXJkIEtlcm5lbCBBZGRyZXNzIFNhbml0aXplciAoS0FTQU4pLCBMb2NrZGVwLCBhbmQgb3RoZXIgc3RhbmRhcmQgZGVidWdnaW5nIHRvb2xzIGFyZSBhbHJlYWR5IGluIHBsYWNlIGFuZCBzaG91bGQgY2F0Y2ggYW55ICpnZW5lcmFsKiBidWdzLiBCdXQsIHRoaXMgZG9lc24ndCBldmVuIGludHJvZHVjZSBhIG1lbW9yeSBjb3JydXB0aW9uIHJpc2ssIGl0J3MganVzdCBhYm91dCBlcnJvciBoYW5kbGluZy5cblxuVG8gYmUgZXh0cmEgdGhvcm91Z2gsIGxldCdzIHZlcmlmeSB3aGF0IGB0Y3BfdjRfc2VuZF9yZXNldGAgYW5kIGB0Y3BfdjZfc2VuZF9yZXNldGAgYXJlIGRvaW5nLiBUaGV5IGFyZSBzdGFuZGFyZCBmdW5jdGlvbnMgZm9yIHNlbmRpbmcgYSBUQ1AgUlNUIHBhY2tldCBhbmQsIGFzIGZhciBhcyBJIGNhbiBzZWUsIGRvbid0IHRoZW1zZWx2ZXMgaW52b2x2ZSB0aGUgdXNlIG9mIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS5cblxuVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGRvZXNuJ3QgbmVlZCBLTVNBTiBzcGVjaWZpY2FsbHkuIE15IHJlYXNvbmluZyBpcyB0aGF0IHRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIFRDUCBTWU4gcmVjZWl2ZSBwYXRocywgYnV0IG9ubHkgdG8gaGFuZGxlIGEgc3BlY2lmaWMgZXJyb3IgY29uZGl0aW9uIGZyb20gYF9faW5ldF9pbmhlcml0X3BvcnRgLiBJdCdzIGp1c3Qgc2VuZGluZyBhIFRDUCByZXNldCBpbiB0aGF0IGNhc2UuIEl0IGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMgb3IgYW55IGRhdGEgc3RydWN0dXJlcyB0aGF0IGNvdWxkIGxlYWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkuIEtBU0FOIGZ1enppbmcgYW5kIHRoZSBleGlzdGluZyBkZWJ1Z2dpbmcgaW5mcmFzdHJ1Y3R1cmUgYXJlIG1vcmUgdGhhbiBhZGVxdWF0ZSBmb3IgdGhpcyBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NjUsIk91dHB1dFRva2VucyI6MTQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQ4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMjE6MjM6NDMuMjI2OTY0MjRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIHRoZSBUQ1AgU1lOIHJlY2VpdmUgcGF0aHMgKGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2ApIHRvIHNlbmQgYSBUQ1AgcmVzZXQgaWYgYF9faW5ldF9pbmhlcml0X3BvcnRgIHJldHVybnMgYC1FTk9FTlRgLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGNoYW5nZXMgYXJlIHB1cmVseSBjb250cm9sIGZsb3cgcmVsYXRlZC4gU3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgKGxpa2UgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgdGhhdCBtaWdodCBhcmlzZSBmcm9tIHRoaXMgY2hhbmdlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGluIHRoZSBUQ1AgU1lOIHJlY2VpdmUgcGF0aHMgKGB0Y3BfdjRfc3luX3JlY3Zfc29ja2AgYW5kIGB0Y3BfdjZfc3luX3JlY3Zfc29ja2ApIHRvIHNlbmQgYSBUQ1AgcmVzZXQgaWYgYF9faW5ldF9pbmhlcml0X3BvcnRgIHJldHVybnMgYC1FTk9FTlRgLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGNoYW5nZXMgYXJlIHB1cmVseSBjb250cm9sIGZsb3cgcmVsYXRlZC4gU3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgKGxpa2UgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgdGhhdCBtaWdodCBhcmlzZSBmcm9tIHRoaXMgY2hhbmdlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowlrv2v[1] Phase: Succeeded StartedAt: 2026-08-11 21:23:54 +0000 UTC FinishedAt: 2026-08-11 21:23:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-11 21:23:54 +0000 UTC FinishedAt: 2026-08-11 21:23:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[2] Phase: Succeeded StartedAt: 2026-08-11 21:23:54 +0000 UTC FinishedAt: 2026-08-12 01:10:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 21:23:54 +0000 UTC FinishedAt: 2026-08-12 01:10:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 21:23:54 +0000 UTC FinishedAt: 2026-08-11 21:24:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 21:23:54 +0000 UTC FinishedAt: 2026-08-11 21:23:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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-workflowlrv2v/series-workflowlrv2v-convert-artifact-973032197/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 21:24:04 +0000 UTC FinishedAt: 2026-08-11 21:40:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 21:24:04 +0000 UTC FinishedAt: 2026-08-11 21:40:50 +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:*2249ac0b-a41e-4fb1-9c63-cc0e1b2dc519,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-workflowlrv2v/series-workflowlrv2v-convert-artifact-973032197/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": "2037545e-5a2b-4250-a95f-a0e53c9f1f94", "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-workflowlrv2v/series-workflowlrv2v-build-action-717096619/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 21:24:04 +0000 UTC FinishedAt: 2026-08-11 21:40:40 +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:*2249ac0b-a41e-4fb1-9c63-cc0e1b2dc519,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-workflowlrv2v/series-workflowlrv2v-convert-artifact-973032197/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": "2037545e-5a2b-4250-a95f-a0e53c9f1f94", "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-workflowlrv2v/series-workflowlrv2v-build-action-717096619/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 21:40:50 +0000 UTC FinishedAt: 2026-08-11 21:40:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 21:40:50 +0000 UTC FinishedAt: 2026-08-11 21:40:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 21:40:50 +0000 UTC FinishedAt: 2026-08-11 21:41:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 21:40:50 +0000 UTC FinishedAt: 2026-08-11 21:40:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-workflowlrv2v/series-workflowlrv2v-convert-artifact-4159310560/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 21:41:01 +0000 UTC FinishedAt: 2026-08-11 21:43:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 21:41:01 +0000 UTC FinishedAt: 2026-08-11 21:42:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2037545e-5a2b-4250-a95f-a0e53c9f1f94,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-workflowlrv2v/series-workflowlrv2v-build-action-717096619/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-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 21:43:05 +0000 UTC FinishedAt: 2026-08-11 21:43:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 21:43:05 +0000 UTC FinishedAt: 2026-08-11 21:43:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 21:43:05 +0000 UTC FinishedAt: 2026-08-11 22:00:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 21:43:05 +0000 UTC FinishedAt: 2026-08-11 22:00:53 +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:*2249ac0b-a41e-4fb1-9c63-cc0e1b2dc519,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-workflowlrv2v/series-workflowlrv2v-convert-artifact-4159310560/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": "858cf51d-735e-4b8b-9300-45ea64210d94", "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-workflowlrv2v/series-workflowlrv2v-build-action-1381791644/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 21:43:05 +0000 UTC FinishedAt: 2026-08-11 22:00:43 +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:*2249ac0b-a41e-4fb1-9c63-cc0e1b2dc519,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-workflowlrv2v/series-workflowlrv2v-convert-artifact-4159310560/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": "858cf51d-735e-4b8b-9300-45ea64210d94", "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-workflowlrv2v/series-workflowlrv2v-build-action-1381791644/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 22:00:53 +0000 UTC FinishedAt: 2026-08-11 22:00:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 22:00:53 +0000 UTC FinishedAt: 2026-08-11 22:00:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 22:00:53 +0000 UTC FinishedAt: 2026-08-11 22:03:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 22:00:53 +0000 UTC FinishedAt: 2026-08-11 22:02:50 +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:*858cf51d-735e-4b8b-9300-45ea64210d94,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-workflowlrv2v/series-workflowlrv2v-build-action-1381791644/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-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 22:03:00 +0000 UTC FinishedAt: 2026-08-12 01:10:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 22:03:00 +0000 UTC FinishedAt: 2026-08-12 01:10:23 +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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"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:*2037545e-5a2b-4250-a95f-a0e53c9f1f94,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*858cf51d-735e-4b8b-9300-45ea64210d94,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-workflowlrv2v/series-workflowlrv2v-build-action-717096619/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-workflowlrv2v/series-workflowlrv2v-build-action-1381791644/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 22:03:00 +0000 UTC FinishedAt: 2026-08-11 22:03:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 22:03:00 +0000 UTC FinishedAt: 2026-08-11 22:03:07 +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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"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-workflowlrv2v/series-workflowlrv2v-convert-artifact-123827769/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 22:03:00 +0000 UTC FinishedAt: 2026-08-11 22:03:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 22:03:00 +0000 UTC FinishedAt: 2026-08-11 22:03:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 22:03:00 +0000 UTC FinishedAt: 2026-08-11 22:03:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 22:03:10 +0000 UTC FinishedAt: 2026-08-12 01:10:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrv2v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","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":["tcp_v4_syn_recv_sock","tcp_v6_syn_recv_sock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cba9ccb47e9fa4cc77692fb896cc5ab57a667882","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET","IPV6"],"series_id":"70149b91-efa9-4acd-9871-d57bd33bf379","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-11 22:03:10 +0000 UTC FinishedAt: 2026-08-12 01:10:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2037545e-5a2b-4250-a95f-a0e53c9f1f94,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*858cf51d-735e-4b8b-9300-45ea64210d94,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-workflowlrv2v/series-workflowlrv2v-build-action-717096619/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-workflowlrv2v/series-workflowlrv2v-build-action-1381791644/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-workflowlrv2v/series-workflowlrv2v-convert-artifact-123827769/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,}