Name: series-workflowfdpws Phase: Succeeded StartedAt: 2026-08-12 14:00:50 +0000 UTC FinishedAt: 2026-08-12 18:01:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[0] Phase: Succeeded StartedAt: 2026-08-12 14:00:50 +0000 UTC FinishedAt: 2026-08-12 14:21:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[0].run-triage Phase: Succeeded StartedAt: 2026-08-12 14:00:50 +0000 UTC FinishedAt: 2026-08-12 14:21:02 +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": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6", "LWTUNNEL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6", "LWTUNNEL" ], "series_id": "c177252a-5d06-466a-915c-e962d8e7be95" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip6_finish_output2" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7TFdUVU5ORUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcDZfZmluaXNoX291dHB1dDImIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHN0YWxlIHBvaW50ZXIgaXNzdWUgaW4gYGlwNl9maW5pc2hfb3V0cHV0MmAuIFRoZSBgbHd0dW5uZWxfeG1pdCgpYCBmdW5jdGlvbiBjYW4gbW9kaWZ5IG9yIHJlYWxsb2NhdGUgdGhlIGBza2JgIChlLmcuLCB2aWEgYHBza2JfZXhwYW5kX2hlYWRgKSwgd2hpY2ggaW52YWxpZGF0ZXMgdGhlIHByZXZpb3VzbHkgc3RvcmVkIGBoZHJgIGFuZCBgZGFkZHJgIHBvaW50ZXJzLiBVc2luZyB0aGVzZSBzdGFsZSBwb2ludGVycyBsYXRlciBpbiB0aGUgZnVuY3Rpb24gbGVhZHMgdG8gdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMuIFRoZXNlIHR5cGVzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHRoZSBJUHY2IG91dHB1dCBwYXRoIHdoZW4gbHd0dW5uZWxfeG1pdCBtb2RpZmllcyB0aGUgc2tiLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGVhOTZkZGZhZmRiMTVkZDhlODY3Y2VkNTFiNGMxZDNmNDIxYmI0MjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxNDoxOTozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmNcbmluZGV4IDM2OGU0ZmEzYjQzY2EuLmQ4OTNjM2RhY2ZkNjMgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xuQEAgLTExNiw2ICYjNDM7MTE2LDggQEAgc3RhdGljIGludCBpcDZfZmluaXNoX291dHB1dDIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpcbiBcbiBcdFx0aWYgKHJlcyAhPSBMV1RVTk5FTF9YTUlUX0NPTlRJTlVFKVxuIFx0XHRcdHJldHVybiByZXM7XG4mIzQzO1x0XHRoZHIgPSBpcHY2X2hkcihza2IpO1xuJiM0MztcdFx0ZGFkZHIgPSBcdTAwMjZoZHItXHUwMDNlZGFkZHI7XG4gXHR9XG4gXG4gXHRJUDZfVVBEX1BPX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfT1VULCBza2ItXHUwMDNlbGVuKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWNiYjMzQ7LAogICAgJiMzNDtMV1RVTk5FTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwNl9maW5pc2hfb3V0cHV0MiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gdGhlIElQdjYgb3V0cHV0IHBhdGggd2hlbiBsd3R1bm5lbF94bWl0IG1vZGlmaWVzIHRoZSBza2IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWE5NmRkZmFmZGIxNWRkOGU4NjdjZWQ1MWI0YzFkM2Y0MjFiYjQyNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDE0OjE5OjMyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X291dHB1dC5jIGIvbmV0L2lwdjYvaXA2X291dHB1dC5jCmluZGV4IDM2OGU0ZmEzYjQzY2EuLmQ4OTNjM2RhY2ZkNjMgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2lwNl9vdXRwdXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKQEAgLTExNiw2ICYjNDM7MTE2LDggQEAgc3RhdGljIGludCBpcDZfZmluaXNoX291dHB1dDIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICoKIAogCQlpZiAocmVzICE9IExXVFVOTkVMX1hNSVRfQ09OVElOVUUpCiAJCQlyZXR1cm4gcmVzOwomIzQzOwkJaGRyID0gaXB2Nl9oZHIoc2tiKTsKJiM0MzsJCWRhZGRyID0gJmFtcDtoZHItJmd0O2RhZGRyOwogCX0KIAogCUlQNl9VUERfUE9fU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9PVVQsIHNrYi0mZ3Q7bGVuKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldHdvcmsgT3V0cHV0IEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIGl0JiMzOTtzIG1ha2luZyBhIGNoYW5nZSB0byBgbmV0L2lwdjYvaXA2X291dHB1dC5jYC4gU3BlY2lmaWNhbGx5LCB0aGV5JiMzOTtyZSBtb2RpZnlpbmcgdGhlIGBpcDZfZmluaXNoX291dHB1dDJgIGZ1bmN0aW9uLiBUaGUgY29kZSBzbmlwcGV0IHNob3dzIHRoZW0gYWRkaW5nIGEgY291cGxlIG9mIGxpbmVzOgoKYGBgYwoJCWhkciA9IGlwdjZfaGRyKHNrYik7CgkJZGFkZHIgPSAmYW1wO2hkci0mZ3Q7ZGFkZHI7CmBgYAoKLi4ucmlnaHQgYWZ0ZXIgdGhpcyBgaWZgIHN0YXRlbWVudDoKCmBgYGMKCQlpZiAocmVzICE9IExXVFVOTkVMX1hNSVRfQ09OVElOVUUpCgkJCXJldHVybiByZXM7CmBgYAoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byBgaXA2X2ZpbmlzaF9vdXRwdXQyYCB3aXRoaW4gYG5ldC9pcHY2L2lwNl9vdXRwdXQuY2AgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgd2hhdCB0aGlzIGNoYW5nZSBpcyBhbGwgYWJvdXQuIE5lZWQgdG8gc2VlIHdoYXQgYGhkcmAgYW5kIGBkYWRkcmAgYXJlIGJlaW5nIHVzZWQgZm9yIGhlcmUgaW4gcmVsYXRpb24gdG8gdGhlIG92ZXJhbGwgZnVuY3Rpb24uIEhvcGVmdWxseSBpdCYjMzk7cyBzdHJhaWdodGZvcndhcmQsIGJ1dCBhIGxpdHRsZSBjb250ZXh0IGZyb20gdGhlIG9yaWdpbmFsIGNvZGUgbmV2ZXIgaHVydC4gSSYjMzk7bGwgY2hlY2sgaG93IGl0IGhhbmRsZXMgdGhlIExpZ2h0d2VpZ2h0IFR1bm5lbGluZyAoTFdUVU5ORUwpIHJldHVybiBjb2RlIGZpcnN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjYvaXA2X291dHB1dC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMDA6XHRcdFx0XHRcdFx0ICAgICAgSVBTVEFUU19NSUJfT1VURElTQ0FSRFMpO1xuIDEwMTpcdFx0XHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4gMTAyOlx0XHRcdFx0XHRyZXR1cm4gMDtcbiAxMDM6XHRcdFx0XHR9XG4gMTA0Olx0XHRcdH1cbiAxMDU6XHRcbiAxMDY6XHRcdFx0SVA2X1VQRF9QT19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX09VVE1DQVNULCBza2ItXHUwMDNlbGVuKTtcbiAxMDc6XHRcdFx0aWYgKElQVjZfQUREUl9NQ19TQ09QRShkYWRkcikgXHUwMDNjPSBJUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMIFx1MDAyNlx1MDAyNlxuIDEwODpcdFx0XHQgICAgIShkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9MT09QQkFDSykpIHtcbiAxMDk6XHRcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiAxMTA6XHRcdFx0XHRyZXR1cm4gMDtcbiAxMTE6XHRcdFx0fVxuIDExMjpcdFx0fVxuIDExMzpcdFxuIDExNDpcdFx0aWYgKGx3dHVubmVsX3htaXRfcmVkaXJlY3QoZHN0LVx1MDAzZWx3dHN0YXRlKSkge1xuIDExNTpcdFx0XHRpbnQgcmVzID0gbHd0dW5uZWxfeG1pdChza2IpO1xuIDExNjpcdFxuIDExNzpcdFx0XHRpZiAocmVzICE9IExXVFVOTkVMX1hNSVRfQ09OVElOVUUpXG4gMTE4Olx0XHRcdFx0cmV0dXJuIHJlcztcbiAxMTk6XHRcdFx0aGRyID0gaXB2Nl9oZHIoc2tiKTtcbiAxMjA6XHRcdFx0ZGFkZHIgPSBcdTAwMjZoZHItXHUwMDNlZGFkZHI7XG4gMTIxOlx0XHR9XG4gMTIyOlx0XG4gMTIzOlx0XHRJUDZfVVBEX1BPX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfT1VULCBza2ItXHUwMDNlbGVuKTtcbiAxMjQ6XHRcbiAxMjU6XHRcdG5leHRob3AgPSBydDZfbmV4dGhvcChkc3RfcnQ2X2luZm8oZHN0KSwgZGFkZHIpO1xuIDEyNjpcdFx0bmVpZ2ggPSBfX2lwdjZfbmVpZ2hfbG9va3VwX25vcmVmKGRldiwgbmV4dGhvcCk7XG4gMTI3Olx0XG4gMTI4Olx0XHRpZiAoSVNfRVJSX09SX05VTEwobmVpZ2gpKSB7XG4gMTI5Olx0XHRcdGlmICh1bmxpa2VseSghbmVpZ2gpKVxuIDEzMDpcdFx0XHRcdG5laWdoID0gX19uZWlnaF9jcmVhdGUoXHUwMDI2bmRfdGJsLCBuZXh0aG9wLCBkZXYsIGZhbHNlKTtcbiAxMzE6XHRcdFx0aWYgKElTX0VSUihuZWlnaCkpIHtcbiAxMzI6XHRcdFx0XHRJUDZfSU5DX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfT1VUTk9ST1VURVMpO1xuIDEzMzpcdFx0XHRcdGtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fTkVJR0hfQ1JFQVRFRkFJTCk7XG4gMTM0Olx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMTM1Olx0XHRcdH1cbiAxMzY6XHRcdH1cbiAxMzc6XHRcdHNvY2tfY29uZmlybV9uZWlnaChza2IsIG5laWdoKTtcbiAxMzg6XHRcdHJldCA9IG5laWdoX291dHB1dChuZWlnaCwgc2tiLCBmYWxzZSk7XG4gMTM5Olx0XHRyZXR1cm4gcmV0O1xuIDE0MDpcdH1cbiAxNDE6XHRcbiAxNDI6XHRzdGF0aWMgaW50XG4gMTQzOlx0aXA2X2ZpbmlzaF9vdXRwdXRfZ3NvX3Nsb3dwYXRoX2Ryb3Aoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXG4gMTQ0Olx0XHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IG10dSlcbiAxNDU6XHR7XG4gMTQ2Olx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2VncywgKm5za2I7XG4gMTQ3Olx0XHRuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcztcbiAxNDg6XHRcdGludCByZXQgPSAwO1xuIDE0OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMDUKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUmVjZW50IElQdjYgT3V0cHV0IFBhdGggQnVnIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIHByZXR0eSBjcml0aWNhbCBidWcgcmVsYXRlZCB0byB0aGUgYGx3dHVubmVsX3htaXRgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0aGVyZSB3YXMgYSBzY2VuYXJpbyB3aGVyZSB0aGUgU29ja2V0IEJ1ZmZlciAoYHNrYmApIGNvdWxkIGJlIG1vZGlmaWVkIOKAkyBwb3RlbnRpYWxseSByZWFsbG9jYXRlZCwgSSBhc3N1bWUg4oCTIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBUaGlzLCBpbiB0dXJuLCBjb3VsZCBpbnZhbGlkYXRlIGNyaXRpY2FsIHBvaW50ZXJzIGxpa2UgYGhkcmAgYW5kIGBkYWRkcmAgdGhhdCBvdGhlciBwYXJ0cyBvZiB0aGUgSVB2NiBvdXRwdXQgcGF0aCByZWx5IG9uLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBhbmQgY291bGQgbGVhZCB0byBzb21lIHJlYWxseSBuYXN0eSwgaGFyZC10by1kZWJ1ZyBjcmFzaGVzIG9yIGNvcnJ1cHRpb24uCgpUaGlzIGlzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQdjYgb3V0cHV0IHBhdGgsIHNwZWNpZmljYWxseSBpbXBhY3Rpbmcgc2l0dWF0aW9ucyB3aGVyZSBMV1RVTk5FTCBpcyBiZWluZyB1c2VkLiBHaXZlbiB0aGF0IHBvdGVudGlhbCBmb3Igc3VidGxlIG1lbW9yeSBjb3JydXB0aW9uLCBJJiMzOTttIHRoaW5raW5nIHRoaXMgaXMgKmFic29sdXRlbHkqIHNvbWV0aGluZyB3ZSBuZWVkIHRvIGZ1enogZXh0ZW5zaXZlbHkuIFdlIHNob3VsZCByZWFsbHkgZm9jdXMgb3VyIGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgYGlwNl9maW5pc2hfb3V0cHV0MmAgZnVuY3Rpb24uIEl0JiMzOTtzIGxpa2VseSBpbnZvbHZlZCBkaXJlY3RseS4KCk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBMV1RVTk5FTGAgY29uZmlndXJhdGlvbi4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBwdWxsIHVwIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoYXQgc2VjdGlvbi4gT2theSwgSSYjMzk7dmUgZ290IHRoYXQgcmVhZHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIExXVFVOTkVMJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTQ0Mz1zb3VyY2UgXCYjMzQ7bmV0L2lmZS9LY29uZmlnXCYjMzQ7XG5uZXQvS2NvbmZpZy00NDQtXG5uZXQvS2NvbmZpZzo0NDU6Y29uZmlnIExXVFVOTkVMXG5uZXQvS2NvbmZpZy00NDYtXHRib29sIFwmIzM0O05ldHdvcmsgbGlnaHQgd2VpZ2h0IHR1bm5lbHNcJiMzNDtcbi0tXG5uZXQvS2NvbmZpZy00NTItXG5uZXQvS2NvbmZpZzo0NTM6Y29uZmlnIExXVFVOTkVMX0JQRlxubmV0L0tjb25maWctNDU0LVx0Ym9vbCBcJiMzNDtFeGVjdXRlIEJQRiBwcm9ncmFtIGFzIHJvdXRlIG5leHRob3AgYWN0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcxNQoJCQkJCQkJb3V0cHV0OiA5NQoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgTFdUVU5ORUwvSVBWNiBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uIOKAkyBzZWVtcyBsaWtlIGl0JiMzOTtzIGJ1aWx0IGFyb3VuZCBgTFdUVU5ORUxgLCB3aGljaCBpcyB0aGUga2V5IGNvbXBvbmVudCBoZXJlLiBBbmQsIGFzIGV4cGVjdGVkLCB3ZSBhbHNvIGhhdmUgdG8gZGVhbCB3aXRoIGBJUFY2YC4gVGhhdCYjMzk7cyBzdGFuZGFyZCBmb3IgdGhpcyB0eXBlIG9mIHNldHVwLgoKTm93LCBJIG5lZWQgdG8gemVybyBpbiBvbiBob3cgdGhpcyBpcyBhbGwgaW1wbGVtZW50ZWQuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBgaXA2X2ZpbmlzaF9vdXRwdXQyYCBpcyAqdGhlKiBjZW50cmFsIGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVlbiBtb2RpZmllZCBpbiB0aGUgbGF0ZXN0IGNoYW5nZS4gTmVlZCB0byBjb25maXJtIG5vdGhpbmcgZWxzZSB3YXMgc3VidGx5IGFsdGVyZWQsIHRoYXQmIzM5O3MgY3J1Y2lhbC4gQWgsIHllcywgaXQgYXBwZWFycyB0byBiZSB0aGUgb25seSBvbmUgZGlyZWN0bHkgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UsIHdoaWNoIGFsaWducyB3aXRoIG15IGluaXRpYWwgYXNzZXNzbWVudC4KCk9rYXksIG5leHQgc3RlcC4uLiBsb29rcyBsaWtlIHdlIHdpbGwgY2FsbCBgc2V0LXJlc3VsdHNgIHdoaWNoIGlzIGEgY3JpdGljYWwgZnVuY3Rpb24sIGNvbmZpcm1pbmcgZXZlcnl0aGluZyBpcyBzZXQgdXAgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2JiMzNDssCiAgICAmIzM0O0xXVFVOTkVMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXA2X2ZpbmlzaF9vdXRwdXQyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiB0aGUgSVB2NiBvdXRwdXQgcGF0aCB3aGVuIGx3dHVubmVsX3htaXQgbW9kaWZpZXMgdGhlIHNrYi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2suJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7TFdUVU5ORUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcDZfZmluaXNoX291dHB1dDImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHRoZSBJUHY2IG91dHB1dCBwYXRoIHdoZW4gbHd0dW5uZWxfeG1pdCBtb2RpZmllcyB0aGUgc2tiLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgc3RhbGUgcG9pbnRlciBpc3N1ZSBpbiBgaXA2X2ZpbmlzaF9vdXRwdXQyYC4gVGhlIGBsd3R1bm5lbF94bWl0KClgIGZ1bmN0aW9uIGNhbiBtb2RpZnkgb3IgcmVhbGxvY2F0ZSB0aGUgYHNrYmAgKGUuZy4sIHZpYSBgcHNrYl9leHBhbmRfaGVhZGApLCB3aGljaCBpbnZhbGlkYXRlcyB0aGUgcHJldmlvdXNseSBzdG9yZWQgYGhkcmAgYW5kIGBkYWRkcmAgcG9pbnRlcnMuIFVzaW5nIHRoZXNlIHN0YWxlIHBvaW50ZXJzIGxhdGVyIGluIHRoZSBmdW5jdGlvbiBsZWFkcyB0byB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3Nlcy4gVGhlc2UgdHlwZXMgb2YgbWVtb3J5IGNvcnJ1cHRpb24gYnVncyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlYTk2ZGRmYWZkYjE1ZGQ4ZTg2N2NlZDUxYjRjMWQzZjQyMWJiNDI2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMTIgMTQ6MTk6MzIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKaW5kZXggMzY4ZTRmYTNiNDNjYS4uZDg5M2MzZGFjZmQ2MyAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvaXA2X291dHB1dC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuYwpAQCAtMTE2LDYgJiM0MzsxMTYsOCBAQCBzdGF0aWMgaW50IGlwNl9maW5pc2hfb3V0cHV0MihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKgogCiAJCWlmIChyZXMgIT0gTFdUVU5ORUxfWE1JVF9DT05USU5VRSkKIAkJCXJldHVybiByZXM7CiYjNDM7CQloZHIgPSBpcHY2X2hkcihza2IpOwomIzQzOwkJZGFkZHIgPSAmYW1wO2hkci0mZ3Q7ZGFkZHI7CiAJfQogCiAJSVA2X1VQRF9QT19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX09VVCwgc2tiLSZndDtsZW4pOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgSVB2NiBPdXRwdXQgQnVnIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHNlZW1zIHRvIGJlIHRvdWNoaW5nIGBuZXQvaXB2Ni9pcDZfb3V0cHV0LmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBpcDZfZmluaXNoX291dHB1dDJgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIGFkZGVkIHRoZXNlIGxpbmVzOgoKYGBgYwomIzQzOwkJaGRyID0gaXB2Nl9oZHIoc2tiKTsKJiM0MzsJCWRhZGRyID0gJmFtcDtoZHItJmd0O2RhZGRyOwpgYGAKCnJpZ2h0IGFmdGVyIHRoZSBjaGVjayBgaWYgKHJlcyAhPSBMV1RVTk5FTF9YTUlUX0NPTlRJTlVFKSByZXR1cm4gcmVzO2Agd2l0aGluIGBpcDZfZmluaXNoX291dHB1dDJgLiBIbW0sIHRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGlzIHByb2JhYmx5IGFkZHJlc3NpbmcgYSBzdWJ0bGUgYnVnIHJlbGF0ZWQgdG8gbGlnaHR3ZWlnaHQgdHVubmVscyAoYGx3dHVubmVsYCkuIFRoZSBsaWtlbHkgc2NlbmFyaW8gaXMgdGhhdCB3aXRoaW4gdGhlIGBsd3R1bm5lbF94bWl0YCBwYXRoLCBgaGRyYCBvciBgZGFkZHJgIC0gdGhlIElQdjYgaGVhZGVyIGFuZCBkZXN0aW5hdGlvbiBhZGRyZXNzIHBvaW50ZXJzIC0gKmNvdWxkKiBiZSBpbnZhbGlkYXRlZCwgY2hhbmdlZCwgb3IgdGhhdCB0aGUgYHNrYmAgKHNvY2tldCBidWZmZXIpIGl0c2VsZiBtaWdodCBiZSByZWFsbG9jYXRlZCBvciBtb2RpZmllZCwgbWFraW5nIHRob3NlIHBvaW50ZXJzIHN0YWxlLiBUaGF0IHdvdWxkIGxlYWQgdG8gbWVtb3J5IGNvcnJ1cHRpb24gb3IgaW5jb3JyZWN0IHJvdXRpbmcgaW5mb3JtYXRpb24gbGF0ZXIgb24gd2hlbiB0aGUgY29kZSB0cmllcyB0byB1c2UgdGhvc2UgcG9pbnRlcnMgYWZ0ZXIgYGx3dHVubmVsX3htaXRgIGNvbXBsZXRlcy4gSXQmIzM5O3MgYSBjbGFzc2ljIHJhY2UgY29uZGl0aW9uIGlzc3VlLgoKSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IG9mIGBpcDZfZmluaXNoX291dHB1dDJgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBmaXggYW5kIHRoZSBleGFjdCBuYXR1cmUgb2YgdGhlIHBvc3NpYmxlIHJhY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIGBsd3R1bm5lbF94bWl0YCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBJUHY2IGhlYWRlciBhbmQgZGVzdGluYXRpb24gYWRkcmVzcy4gQnV0IHRoZSBhZGRlZCBjb2RlIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZXkmIzM5O3JlIHRyeWluZyB0byByZS1mZXRjaCB0aGUgaGVhZGVyIGFuZCBkZXN0aW5hdGlvbiBhZGRyZXNzICphZnRlciogYGx3dHVubmVsX3htaXRgIGhhcyBjb21wbGV0ZWQgdG8gZW5zdXJlIHRob3NlIHBvaW50ZXJzIGFyZSB2YWxpZC4gVGhhdCYjMzk7cyB0aGUgbW9zdCBsaWtlbHkgZXhwbGFuYXRpb24sIGdpdmVuIG15IGV4cGVyaWVuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwNl9maW5pc2hfb3V0cHV0MiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L2lwNl9vdXRwdXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9pcDZfb3V0cHV0LmMtNTktXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6NjA6c3RhdGljIGludCBpcDZfZmluaXNoX291dHB1dDIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtNjEte1xuLS1cbm5ldC9pcHY2L2lwNl9vdXRwdXQuYz0xNDM9aXA2X2ZpbmlzaF9vdXRwdXRfZ3NvX3Nsb3dwYXRoX2Ryb3Aoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2lwdjYvaXA2X291dHB1dC5jLTE3MS1cdFx0ZXJyID0gc2Vncy1cdTAwM2VsZW4gXHUwMDNlIG10dSA/XG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MTcyOlx0XHRcdGlwNl9mcmFnbWVudChuZXQsIHNrLCBzZWdzLCBpcDZfZmluaXNoX291dHB1dDIpIDpcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYzoxNzM6XHRcdFx0aXA2X2ZpbmlzaF9vdXRwdXQyKG5ldCwgc2ssIHNlZ3MpO1xubmV0L2lwdjYvaXA2X291dHB1dC5jLTE3NC1cdFx0aWYgKGVyciBcdTAwMjZcdTAwMjYgcmV0ID09IDApXG4tLVxubmV0L2lwdjYvaXA2X291dHB1dC5jPTE4MT1zdGF0aWMgaW50IGlwNl9maW5pc2hfb3V0cHV0X2dzbyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTg2LVxubmV0L2lwdjYvaXA2X291dHB1dC5jOjE4NzpcdHJldHVybiBpcDZfZmluaXNoX291dHB1dDIobmV0LCBzaywgc2tiKTtcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYy0xODgtfVxuLS1cbm5ldC9pcHY2L2lwNl9vdXRwdXQuYz0xOTA9c3RhdGljIGludCBfX2lwNl9maW5pc2hfb3V0cHV0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L2lwNl9vdXRwdXQuYy0yMDctXHQgICAgKElQNkNCKHNrYiktXHUwMDNlZnJhZ19tYXhfc2l6ZSBcdTAwMjZcdTAwMjYgc2tiLVx1MDAzZWxlbiBcdTAwM2UgSVA2Q0Ioc2tiKS1cdTAwM2VmcmFnX21heF9zaXplKSkpXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MjA4Olx0XHRyZXR1cm4gaXA2X2ZyYWdtZW50KG5ldCwgc2ssIHNrYiwgaXA2X2ZpbmlzaF9vdXRwdXQyKTtcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYy0yMDktXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MjEwOlx0cmV0dXJuIGlwNl9maW5pc2hfb3V0cHV0MihuZXQsIHNrLCBza2IpO1xubmV0L2lwdjYvaXA2X291dHB1dC5jLTIxMS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNzUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gYGlwNl9maW5pc2hfb3V0cHV0MmAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBJUHY2IG91dHB1dCBpcyBmaW5hbGl6ZWQuIE15IGd1dCB0ZWxscyBtZSB0aGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHdoZXJlIHRoZSBwYWNrZXQgZ2V0cyBhbGwgaXRzIGZpbmFsIHRvdWNoZXMgYmVmb3JlIGhpdHRpbmcgdGhlIHdpcmUuIFRpbWUgdG8gY3JhY2sgb3BlbiBgbmV0L2lwdjYvaXA2X291dHB1dC5jYCBhbmQgemVybyBpbiBvbiB0aGUgYGlwNl9maW5pc2hfb3V0cHV0MmAgZnVuY3Rpb24uIEkgYW50aWNpcGF0ZSB0aGlzIGZ1bmN0aW9uIGJlaW5nIGNyaXRpY2FsIGluIHRlcm1zIG9mIGVuY2Fwc3VsYXRpb24gZGV0YWlscywgY2hlY2tzdW0gZmluYWxpemF0aW9uIChpZiBub3QgZG9uZSBlYXJsaWVyKSwgYW5kIHBvdGVudGlhbGx5IGhlYWRlciBtb2RpZmljYXRpb25zIGJhc2VkIG9uIHRoZSBzcGVjaWZpYyBuZXR3b3JrIGNoYXJhY3RlcmlzdGljcyBvciBwb2xpY2llcyB0aGF0IGFyZSBhdCBwbGF5LiBJJiMzOTttIGVzcGVjaWFsbHkga2VlbiB0byBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIGxvdy1sZXZlbCBmdW5jdGlvbnMgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgd2FpdGluZyB0byBiZSB1bmNvdmVyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjYvaXA2X291dHB1dC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNjA6XHRzdGF0aWMgaW50IGlwNl9maW5pc2hfb3V0cHV0MihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAgNjE6XHR7XG4gIDYyOlx0XHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QgPSBza2JfZHN0KHNrYik7XG4gIDYzOlx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gZHN0X2Rldl9yY3UoZHN0KTtcbiAgNjQ6XHRcdHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYgPSBpcDZfZHN0X2lkZXYoZHN0KTtcbiAgNjU6XHRcdHVuc2lnbmVkIGludCBoaF9sZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xuICA2NjpcdFx0Y29uc3Qgc3RydWN0IGluNl9hZGRyICpkYWRkciwgKm5leHRob3A7XG4gIDY3Olx0XHRzdHJ1Y3QgaXB2NmhkciAqaGRyO1xuICA2ODpcdFx0c3RydWN0IG5laWdoYm91ciAqbmVpZ2g7XG4gIDY5Olx0XHRpbnQgcmV0O1xuICA3MDpcdFxuICA3MTpcdFx0LyogQmUgcGFyYW5vaWQsIHJhdGhlciB0aGFuIHRvbyBjbGV2ZXIuICovXG4gIDcyOlx0XHRpZiAodW5saWtlbHkoaGhfbGVuIFx1MDAzZSBza2JfaGVhZHJvb20oc2tiKSkgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2VoZWFkZXJfb3BzKSB7XG4gIDczOlx0XHRcdC8qIGlkZXYgc3RheXMgYWxpdmUgYmVjYXVzZSB3ZSBob2xkIHJjdV9yZWFkX2xvY2soKS4gKi9cbiAgNzQ6XHRcdFx0c2tiID0gc2tiX2V4cGFuZF9oZWFkKHNrYiwgaGhfbGVuKTtcbiAgNzU6XHRcdFx0aWYgKCFza2IpIHtcbiAgNzY6XHRcdFx0XHRJUDZfSU5DX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfT1VURElTQ0FSRFMpO1xuICA3NzpcdFx0XHRcdHJldHVybiAtRU5PTUVNO1xuICA3ODpcdFx0XHR9XG4gIDc5Olx0XHR9XG4gIDgwOlx0XG4gIDgxOlx0XHRoZHIgPSBpcHY2X2hkcihza2IpO1xuICA4MjpcdFx0ZGFkZHIgPSBcdTAwMjZoZHItXHUwMDNlZGFkZHI7XG4gIDgzOlx0XHRpZiAodW5saWtlbHkoaXB2Nl9hZGRyX2lzX211bHRpY2FzdChkYWRkcikpKSB7XG4gIDg0Olx0XHRcdGlmICghKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0xPT1BCQUNLKSBcdTAwMjZcdTAwMjYgc2tfbWNfbG9vcChzaykgXHUwMDI2XHUwMDI2XG4gIDg1Olx0XHRcdCAgICAoKG1yb3V0ZTZfaXNfc29ja2V0KG5ldCwgc2tiKSBcdTAwMjZcdTAwMjZcbiAgODY6XHRcdFx0ICAgICAhKElQNkNCKHNrYiktXHUwMDNlZmxhZ3MgXHUwMDI2IElQNlNLQl9GT1JXQVJERUQpKSB8fFxuICA4NzpcdFx0XHQgICAgIGlwdjZfY2hrX21jYXN0X2FkZHIoZGV2LCBkYWRkciwgXHUwMDI2aGRyLVx1MDAzZXNhZGRyKSkpIHtcbiAgODg6XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqbmV3c2tiID0gc2tiX2Nsb25lKHNrYiwgR0ZQX0FUT01JQyk7XG4gIDg5Olx0XG4gIDkwOlx0XHRcdFx0LyogRG8gbm90IGNoZWNrIGZvciBJRkZfQUxMTVVMVEk7IG11bHRpY2FzdCByb3V0aW5nXG4gIDkxOlx0XHRcdFx0ICAgaXMgbm90IHN1cHBvcnRlZCBpbiBhbnkgY2FzZS5cbiAgOTI6XHRcdFx0XHQgKi9cbiAgOTM6XHRcdFx0XHRpZiAobmV3c2tiKVxuICA5NDpcdFx0XHRcdFx0TkZfSE9PSyhORlBST1RPX0lQVjYsIE5GX0lORVRfUE9TVF9ST1VUSU5HLFxuICA5NTpcdFx0XHRcdFx0XHRuZXQsIHNrLCBuZXdza2IsIE5VTEwsIG5ld3NrYi1cdTAwM2VkZXYsXG4gIDk2Olx0XHRcdFx0XHRcdGRldl9sb29wYmFja194bWl0KTtcbiAgOTc6XHRcbiAgOTg6XHRcdFx0XHRpZiAoaGRyLVx1MDAzZWhvcF9saW1pdCA9PSAwKSB7XG4gIDk5Olx0XHRcdFx0XHRJUDZfSU5DX1NUQVRTKG5ldCwgaWRldixcbiAxMDA6XHRcdFx0XHRcdFx0ICAgICAgSVBTVEFUU19NSUJfT1VURElTQ0FSRFMpO1xuIDEwMTpcdFx0XHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4gMTAyOlx0XHRcdFx0XHRyZXR1cm4gMDtcbiAxMDM6XHRcdFx0XHR9XG4gMTA0Olx0XHRcdH1cbiAxMDU6XHRcbiAxMDY6XHRcdFx0SVA2X1VQRF9QT19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX09VVE1DQVNULCBza2ItXHUwMDNlbGVuKTtcbiAxMDc6XHRcdFx0aWYgKElQVjZfQUREUl9NQ19TQ09QRShkYWRkcikgXHUwMDNjPSBJUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMIFx1MDAyNlx1MDAyNlxuIDEwODpcdFx0XHQgICAgIShkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9MT09QQkFDSykpIHtcbiAxMDk6XHRcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiAxMTA6XHRcdFx0XHRyZXR1cm4gMDtcbiAxMTE6XHRcdFx0fVxuIDExMjpcdFx0fVxuIDExMzpcdFxuIDExNDpcdFx0aWYgKGx3dHVubmVsX3htaXRfcmVkaXJlY3QoZHN0LVx1MDAzZWx3dHN0YXRlKSkge1xuIDExNTpcdFx0XHRpbnQgcmVzID0gbHd0dW5uZWxfeG1pdChza2IpO1xuIDExNjpcdFxuIDExNzpcdFx0XHRpZiAocmVzICE9IExXVFVOTkVMX1hNSVRfQ09OVElOVUUpXG4gMTE4Olx0XHRcdFx0cmV0dXJuIHJlcztcbiAxMTk6XHRcdFx0aGRyID0gaXB2Nl9oZHIoc2tiKTtcbiAxMjA6XHRcdFx0ZGFkZHIgPSBcdTAwMjZoZHItXHUwMDNlZGFkZHI7XG4gMTIxOlx0XHR9XG4gMTIyOlx0XG4gMTIzOlx0XHRJUDZfVVBEX1BPX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfT1VULCBza2ItXHUwMDNlbGVuKTtcbiAxMjQ6XHRcbiAxMjU6XHRcdG5leHRob3AgPSBydDZfbmV4dGhvcChkc3RfcnQ2X2luZm8oZHN0KSwgZGFkZHIpO1xuIDEyNjpcdFx0bmVpZ2ggPSBfX2lwdjZfbmVpZ2hfbG9va3VwX25vcmVmKGRldiwgbmV4dGhvcCk7XG4gMTI3Olx0XG4gMTI4Olx0XHRpZiAoSVNfRVJSX09SX05VTEwobmVpZ2gpKSB7XG4gMTI5Olx0XHRcdGlmICh1bmxpa2VseSghbmVpZ2gpKVxuIDEzMDpcdFx0XHRcdG5laWdoID0gX19uZWlnaF9jcmVhdGUoXHUwMDI2bmRfdGJsLCBuZXh0aG9wLCBkZXYsIGZhbHNlKTtcbiAxMzE6XHRcdFx0aWYgKElTX0VSUihuZWlnaCkpIHtcbiAxMzI6XHRcdFx0XHRJUDZfSU5DX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfT1VUTk9ST1VURVMpO1xuIDEzMzpcdFx0XHRcdGtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fTkVJR0hfQ1JFQVRFRkFJTCk7XG4gMTM0Olx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMTM1Olx0XHRcdH1cbiAxMzY6XHRcdH1cbiAxMzc6XHRcdHNvY2tfY29uZmlybV9uZWlnaChza2IsIG5laWdoKTtcbiAxMzg6XHRcdHJldCA9IG5laWdoX291dHB1dChuZWlnaCwgc2tiLCBmYWxzZSk7XG4gMTM5Olx0XHRyZXR1cm4gcmV0O1xuIDE0MDpcdH1cbiAxNDE6XHRcbiAxNDI6XHRzdGF0aWMgaW50XG4gMTQzOlx0aXA2X2ZpbmlzaF9vdXRwdXRfZ3NvX3Nsb3dwYXRoX2Ryb3Aoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXG4gMTQ0Olx0XHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IG10dSlcbiAxNDU6XHR7XG4gMTQ2Olx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2VncywgKm5za2I7XG4gMTQ3Olx0XHRuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcztcbiAxNDg6XHRcdGludCByZXQgPSAwO1xuIDE0OTpcdFxuIDE1MDpcdFx0LyogUGxlYXNlIHNlZSBjb3JyZXNwb25kaW5nIGNvbW1lbnQgaW4gaXBfZmluaXNoX291dHB1dF9nc29cbiAxNTE6XHRcdCAqIGRlc2NyaWJpbmcgdGhlIGNhc2VzIHdoZXJlIEdTTyBzZWdtZW50IGxlbmd0aCBleGNlZWRzIHRoZVxuIDE1MjpcdFx0ICogZWdyZXNzIE1UVS5cbiAxNTM6XHRcdCAqL1xuIDE1NDpcdFx0ZmVhdHVyZXMgPSBuZXRpZl9za2JfZmVhdHVyZXMoc2tiKTtcbiAxNTU6XHRcdHNlZ3MgPSBza2JfZ3NvX3NlZ21lbnQoc2tiLCBmZWF0dXJlcyBcdTAwMjYgfk5FVElGX0ZfR1NPX01BU0spO1xuIDE1NjpcdFx0aWYgKElTX0VSUl9PUl9OVUxMKHNlZ3MpKSB7XG4gMTU3Olx0XHRcdGtmcmVlX3NrYihza2IpO1xuIDE1ODpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAxNTk6XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTExMAoJCQkJCQkJb3V0cHV0OiAxNjEKCQkJCQkJCXRob3VnaHRzOiA1MjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNZW1vcnkgU2FmZXR5IElzc3VlKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBhIGNsYXNzaWMgc3RhbGUgcG9pbnRlciBpc3N1ZSwgc3BlY2lmaWNhbGx5IGEgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlIGBsd3R1bm5lbF94bWl0KHNrYilgIGZ1bmN0aW9uIGNhbiBtb2RpZnkgdGhlIGBza2JgIHN0cnVjdHVyZSwgYW5kIGl0IGxvb2tzIGxpa2UgdGhpcyBpcyB3aGVyZSB0aGUgYHNrYmAmIzM5O3MgaGVhZCBpcyBiZWluZyByZWFsbG9jYXRlZC4gVGhpcyBtZWFucyB0aGF0IGFueSBwb2ludGVycyBkZXJpdmVkIGZyb20gdGhlIGBza2JgICpiZWZvcmUqIHRoZSBjYWxsIHRvIGBsd3R1bm5lbF94bWl0YCwgc3VjaCBhcyBgaGRyYCBhbmQgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgYGRhZGRyYCwgbWlnaHQgYmVjb21lIGludmFsaWQg4oCTIHRoZXkgbWlnaHQgcG9pbnQgdG8gZnJlZWQgbWVtb3J5IG9yLCBldmVuIHdvcnNlLCBqdXN0IHRvIHRoZSB3cm9uZyBvZmZzZXQgd2l0aGluIHRoZSBwYWNrZXQuCgpJZiB3ZSB0aGVuIHRyeSB0byB1c2UgdGhvc2Ugc3RhbGUgcG9pbnRlcnMgbGF0ZXIsIGxpa2UgaW4gYHJ0Nl9uZXh0aG9wKGRzdF9ydDZfaW5mbyhkc3QpLCBkYWRkcilgLCB3ZSYjMzk7cmUgZ29pbmcgdG8gdHJpZ2dlciBhIGNyYXNoLiAgQW5kIGl0JiMzOTtzIG5vdCBkdWUgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkuIGBsd3R1bm5lbF94bWl0YCBtaWdodCBwdXNoIGhlYWRlcnMsIGJ1dCB0aG9zZSBoZWFkZXJzIGdldCBpbml0aWFsaXplZCwgc28gaXQmIzM5O3Mgbm90IGEgY2FzZSB3aGVyZSB3ZSBoYXZlIGFuIGluZm9ybWF0aW9uIGxlYWsuIEl0JiMzOTtzIGEgbWVtb3J5IGNvcnJ1cHRpb24gYnVnLiBUaGUgbWVtb3J5IHRoYXQgdGhlIHBvaW50ZXJzIHBvaW50IHRvIG1heSBub3QgYmUgdmFsaWQgYW55bW9yZS4gU28sIHRoZSBpc3N1ZSBpcyB0aGF0IHRoZSBgc2tiYCYjMzk7cyBkYXRhIHBvaW50ZXIgY2FuIGNoYW5nZSBpZiBgc2tiX2V4cGFuZF9oZWFkYCBvciBgcHNrYl9leHBhbmRfaGVhZGAgZ2V0cyBjYWxsZWQgaW5zaWRlIGBsd3R1bm5lbF94bWl0YC4KClRoaXMgaXMgZXhhY3RseSB0aGUgdHlwZSBvZiBidWcgdGhhdCBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU0FOaXRpemVyKSBpcyBkZXNpZ25lZCB0byBjYXRjaC4gSXQgd2lsbCBkZXRlY3QgdGhlIGlsbGVnYWwgbWVtb3J5IGFjY2Vzcy4gIEtNU0FOIGlzbiYjMzk7dCBuZWVkZWQgaGVyZS4gS0FTQU4gaXMgcGVyZmVjdGx5IHN1aXRhYmxlIGZvciB0aGlzIGtpbmQgb2YgbWVtb3J5IGNvcnJ1cHRpb24uIFRoZXJlZm9yZSwgdGhlIE5lZWRzS01TQU4gZmxhZyB3b3VsZCBiZSBmYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBzdGFsZSBwb2ludGVyIGlzc3VlIGluIGBpcDZfZmluaXNoX291dHB1dDJgLiBUaGUgYGx3dHVubmVsX3htaXQoKWAgZnVuY3Rpb24gY2FuIG1vZGlmeSBvciByZWFsbG9jYXRlIHRoZSBgc2tiYCAoZS5nLiwgdmlhIGBwc2tiX2V4cGFuZF9oZWFkYCksIHdoaWNoIGludmFsaWRhdGVzIHRoZSBwcmV2aW91c2x5IHN0b3JlZCBgaGRyYCBhbmQgYGRhZGRyYCBwb2ludGVycy4gVXNpbmcgdGhlc2Ugc3RhbGUgcG9pbnRlcnMgbGF0ZXIgaW4gdGhlIGZ1bmN0aW9uIGxlYWRzIHRvIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzLiBUaGVzZSB0eXBlcyBvZiBtZW1vcnkgY29ycnVwdGlvbiBidWdzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHN0YWxlIHBvaW50ZXIgaXNzdWUgaW4gYGlwNl9maW5pc2hfb3V0cHV0MmAuIFRoZSBgbHd0dW5uZWxfeG1pdCgpYCBmdW5jdGlvbiBjYW4gbW9kaWZ5IG9yIHJlYWxsb2NhdGUgdGhlIGBza2JgIChlLmcuLCB2aWEgYHBza2JfZXhwYW5kX2hlYWRgKSwgd2hpY2ggaW52YWxpZGF0ZXMgdGhlIHByZXZpb3VzbHkgc3RvcmVkIGBoZHJgIGFuZCBgZGFkZHJgIHBvaW50ZXJzLiBVc2luZyB0aGVzZSBzdGFsZSBwb2ludGVycyBsYXRlciBpbiB0aGUgZnVuY3Rpb24gbGVhZHMgdG8gdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMuIFRoZXNlIHR5cGVzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTk6MzMuNjU5NjU1NTM0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc0NjE0Mjk3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiLFxuICAgIFwiTFdUVU5ORUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcDZfZmluaXNoX291dHB1dDJcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgc3RhbGUgcG9pbnRlciBpc3N1ZSBpbiBgaXA2X2ZpbmlzaF9vdXRwdXQyYC4gVGhlIGBsd3R1bm5lbF94bWl0KClgIGZ1bmN0aW9uIGNhbiBtb2RpZnkgb3IgcmVhbGxvY2F0ZSB0aGUgYHNrYmAgKGUuZy4sIHZpYSBgcHNrYl9leHBhbmRfaGVhZGApLCB3aGljaCBpbnZhbGlkYXRlcyB0aGUgcHJldmlvdXNseSBzdG9yZWQgYGhkcmAgYW5kIGBkYWRkcmAgcG9pbnRlcnMuIFVzaW5nIHRoZXNlIHN0YWxlIHBvaW50ZXJzIGxhdGVyIGluIHRoZSBmdW5jdGlvbiBsZWFkcyB0byB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3Nlcy4gVGhlc2UgdHlwZXMgb2YgbWVtb3J5IGNvcnJ1cHRpb24gYnVncyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiB0aGUgSVB2NiBvdXRwdXQgcGF0aCB3aGVuIGx3dHVubmVsX3htaXQgbW9kaWZpZXMgdGhlIHNrYi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2suXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjE5OjMzLjY1OTY2MTUwNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUzNDM4NDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWE5NmRkZmFmZGIxNWRkOGU4NjdjZWQ1MWI0YzFkM2Y0MjFiYjQyNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxNDoxOTozMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmNcXG5pbmRleCAzNjhlNGZhM2I0M2NhLi5kODkzYzNkYWNmZDYzIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xcbisrKyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xcbkBAIC0xMTYsNiArMTE2LDggQEAgc3RhdGljIGludCBpcDZfZmluaXNoX291dHB1dDIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpcXG4gXFxuIFxcdFxcdGlmIChyZXMgIT0gTFdUVU5ORUxfWE1JVF9DT05USU5VRSlcXG4gXFx0XFx0XFx0cmV0dXJuIHJlcztcXG4rXFx0XFx0aGRyID0gaXB2Nl9oZHIoc2tiKTtcXG4rXFx0XFx0ZGFkZHIgPSBcXHUwMDI2aGRyLVxcdTAwM2VkYWRkcjtcXG4gXFx0fVxcbiBcXG4gXFx0SVA2X1VQRF9QT19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX09VVCwgc2tiLVxcdTAwM2VsZW4pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxOTozNC4xMTM4MDMwNTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyMDgzMDM0NzQ5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCIsXG4gICAgXCJMV1RVTk5FTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwNl9maW5pc2hfb3V0cHV0MlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiB0aGUgSVB2NiBvdXRwdXQgcGF0aCB3aGVuIGx3dHVubmVsX3htaXQgbW9kaWZpZXMgdGhlIHNrYi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2suXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVhOTZkZGZhZmRiMTVkZDhlODY3Y2VkNTFiNGMxZDNmNDIxYmI0MjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxNDoxOTozMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9vdXRwdXQuYyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xuaW5kZXggMzY4ZTRmYTNiNDNjYS4uZDg5M2MzZGFjZmQ2MyAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xuKysrIGIvbmV0L2lwdjYvaXA2X291dHB1dC5jXG5AQCAtMTE2LDYgKzExNiw4IEBAIHN0YXRpYyBpbnQgaXA2X2ZpbmlzaF9vdXRwdXQyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqXG4gXG4gXHRcdGlmIChyZXMgIT0gTFdUVU5ORUxfWE1JVF9DT05USU5VRSlcbiBcdFx0XHRyZXR1cm4gcmVzO1xuK1x0XHRoZHIgPSBpcHY2X2hkcihza2IpO1xuK1x0XHRkYWRkciA9IFx1MDAyNmhkci1cdTAwM2VkYWRkcjtcbiBcdH1cbiBcbiBcdElQNl9VUERfUE9fU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9PVVQsIHNrYi1cdTAwM2VsZW4pO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTk6MzQuMTEzODA0MzA3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODIzMDc2MTgwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldHdvcmsgT3V0cHV0IEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgbGlrZSBpdCdzIG1ha2luZyBhIGNoYW5nZSB0byBgbmV0L2lwdjYvaXA2X291dHB1dC5jYC4gU3BlY2lmaWNhbGx5LCB0aGV5J3JlIG1vZGlmeWluZyB0aGUgYGlwNl9maW5pc2hfb3V0cHV0MmAgZnVuY3Rpb24uIFRoZSBjb2RlIHNuaXBwZXQgc2hvd3MgdGhlbSBhZGRpbmcgYSBjb3VwbGUgb2YgbGluZXM6XG5cbmBgYGNcblx0XHRoZHIgPSBpcHY2X2hkcihza2IpO1xuXHRcdGRhZGRyID0gXHUwMDI2aGRyLVx1MDAzZWRhZGRyO1xuYGBgXG5cbi4uLnJpZ2h0IGFmdGVyIHRoaXMgYGlmYCBzdGF0ZW1lbnQ6XG5cbmBgYGNcblx0XHRpZiAocmVzICE9IExXVFVOTkVMX1hNSVRfQ09OVElOVUUpXG5cdFx0XHRyZXR1cm4gcmVzO1xuYGBgXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIGludG8gYGlwNl9maW5pc2hfb3V0cHV0MmAgd2l0aGluIGBuZXQvaXB2Ni9pcDZfb3V0cHV0LmNgIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIHdoYXQgdGhpcyBjaGFuZ2UgaXMgYWxsIGFib3V0LiBOZWVkIHRvIHNlZSB3aGF0IGBoZHJgIGFuZCBgZGFkZHJgIGFyZSBiZWluZyB1c2VkIGZvciBoZXJlIGluIHJlbGF0aW9uIHRvIHRoZSBvdmVyYWxsIGZ1bmN0aW9uLiBIb3BlZnVsbHkgaXQncyBzdHJhaWdodGZvcndhcmQsIGJ1dCBhIGxpdHRsZSBjb250ZXh0IGZyb20gdGhlIG9yaWdpbmFsIGNvZGUgbmV2ZXIgaHVydC4gSSdsbCBjaGVjayBob3cgaXQgaGFuZGxlcyB0aGUgTGlnaHR3ZWlnaHQgVHVubmVsaW5nIChMV1RVTk5FTCkgcmV0dXJuIGNvZGUgZmlyc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxOTo0Mi4zNDQ1Njk3MjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjYvaXA2X291dHB1dC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEwMDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBJUFNUQVRTX01JQl9PVVRESVNDQVJEUyk7XFxuIDEwMTpcXHRcXHRcXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gMTAyOlxcdFxcdFxcdFxcdFxcdHJldHVybiAwO1xcbiAxMDM6XFx0XFx0XFx0XFx0fVxcbiAxMDQ6XFx0XFx0XFx0fVxcbiAxMDU6XFx0XFxuIDEwNjpcXHRcXHRcXHRJUDZfVVBEX1BPX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfT1VUTUNBU1QsIHNrYi1cXHUwMDNlbGVuKTtcXG4gMTA3OlxcdFxcdFxcdGlmIChJUFY2X0FERFJfTUNfU0NPUEUoZGFkZHIpIFxcdTAwM2M9IElQVjZfQUREUl9TQ09QRV9OT0RFTE9DQUwgXFx1MDAyNlxcdTAwMjZcXG4gMTA4OlxcdFxcdFxcdCAgICAhKGRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfTE9PUEJBQ0spKSB7XFxuIDEwOTpcXHRcXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gMTEwOlxcdFxcdFxcdFxcdHJldHVybiAwO1xcbiAxMTE6XFx0XFx0XFx0fVxcbiAxMTI6XFx0XFx0fVxcbiAxMTM6XFx0XFxuIDExNDpcXHRcXHRpZiAobHd0dW5uZWxfeG1pdF9yZWRpcmVjdChkc3QtXFx1MDAzZWx3dHN0YXRlKSkge1xcbiAxMTU6XFx0XFx0XFx0aW50IHJlcyA9IGx3dHVubmVsX3htaXQoc2tiKTtcXG4gMTE2OlxcdFxcbiAxMTc6XFx0XFx0XFx0aWYgKHJlcyAhPSBMV1RVTk5FTF9YTUlUX0NPTlRJTlVFKVxcbiAxMTg6XFx0XFx0XFx0XFx0cmV0dXJuIHJlcztcXG4gMTE5OlxcdFxcdFxcdGhkciA9IGlwdjZfaGRyKHNrYik7XFxuIDEyMDpcXHRcXHRcXHRkYWRkciA9IFxcdTAwMjZoZHItXFx1MDAzZWRhZGRyO1xcbiAxMjE6XFx0XFx0fVxcbiAxMjI6XFx0XFxuIDEyMzpcXHRcXHRJUDZfVVBEX1BPX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfT1VULCBza2ItXFx1MDAzZWxlbik7XFxuIDEyNDpcXHRcXG4gMTI1OlxcdFxcdG5leHRob3AgPSBydDZfbmV4dGhvcChkc3RfcnQ2X2luZm8oZHN0KSwgZGFkZHIpO1xcbiAxMjY6XFx0XFx0bmVpZ2ggPSBfX2lwdjZfbmVpZ2hfbG9va3VwX25vcmVmKGRldiwgbmV4dGhvcCk7XFxuIDEyNzpcXHRcXG4gMTI4OlxcdFxcdGlmIChJU19FUlJfT1JfTlVMTChuZWlnaCkpIHtcXG4gMTI5OlxcdFxcdFxcdGlmICh1bmxpa2VseSghbmVpZ2gpKVxcbiAxMzA6XFx0XFx0XFx0XFx0bmVpZ2ggPSBfX25laWdoX2NyZWF0ZShcXHUwMDI2bmRfdGJsLCBuZXh0aG9wLCBkZXYsIGZhbHNlKTtcXG4gMTMxOlxcdFxcdFxcdGlmIChJU19FUlIobmVpZ2gpKSB7XFxuIDEzMjpcXHRcXHRcXHRcXHRJUDZfSU5DX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfT1VUTk9ST1VURVMpO1xcbiAxMzM6XFx0XFx0XFx0XFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9ORUlHSF9DUkVBVEVGQUlMKTtcXG4gMTM0OlxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAxMzU6XFx0XFx0XFx0fVxcbiAxMzY6XFx0XFx0fVxcbiAxMzc6XFx0XFx0c29ja19jb25maXJtX25laWdoKHNrYiwgbmVpZ2gpO1xcbiAxMzg6XFx0XFx0cmV0ID0gbmVpZ2hfb3V0cHV0KG5laWdoLCBza2IsIGZhbHNlKTtcXG4gMTM5OlxcdFxcdHJldHVybiByZXQ7XFxuIDE0MDpcXHR9XFxuIDE0MTpcXHRcXG4gMTQyOlxcdHN0YXRpYyBpbnRcXG4gMTQzOlxcdGlwNl9maW5pc2hfb3V0cHV0X2dzb19zbG93cGF0aF9kcm9wKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxcbiAxNDQ6XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBtdHUpXFxuIDE0NTpcXHR7XFxuIDE0NjpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2VncywgKm5za2I7XFxuIDE0NzpcXHRcXHRuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcztcXG4gMTQ4OlxcdFxcdGludCByZXQgPSAwO1xcbiAxNDk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjE5OjQyLjM0NDY4MjA5M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMTE3NDU2NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVjZW50IElQdjYgT3V0cHV0IFBhdGggQnVnIEZpeCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgcHJldHR5IGNyaXRpY2FsIGJ1ZyByZWxhdGVkIHRvIHRoZSBgbHd0dW5uZWxfeG1pdGAgZnVuY3Rpb24uIEl0IHNlZW1zIHRoZXJlIHdhcyBhIHNjZW5hcmlvIHdoZXJlIHRoZSBTb2NrZXQgQnVmZmVyIChgc2tiYCkgY291bGQgYmUgbW9kaWZpZWQg4oCTIHBvdGVudGlhbGx5IHJlYWxsb2NhdGVkLCBJIGFzc3VtZSDigJMgd2l0aGluIHRoYXQgZnVuY3Rpb24uIFRoaXMsIGluIHR1cm4sIGNvdWxkIGludmFsaWRhdGUgY3JpdGljYWwgcG9pbnRlcnMgbGlrZSBgaGRyYCBhbmQgYGRhZGRyYCB0aGF0IG90aGVyIHBhcnRzIG9mIHRoZSBJUHY2IG91dHB1dCBwYXRoIHJlbHkgb24uIFRoYXQncyBhIGNsYXNzaWMgcmFjZSBjb25kaXRpb24gYW5kIGNvdWxkIGxlYWQgdG8gc29tZSByZWFsbHkgbmFzdHksIGhhcmQtdG8tZGVidWcgY3Jhc2hlcyBvciBjb3JydXB0aW9uLlxuXG5UaGlzIGlzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQdjYgb3V0cHV0IHBhdGgsIHNwZWNpZmljYWxseSBpbXBhY3Rpbmcgc2l0dWF0aW9ucyB3aGVyZSBMV1RVTk5FTCBpcyBiZWluZyB1c2VkLiBHaXZlbiB0aGF0IHBvdGVudGlhbCBmb3Igc3VidGxlIG1lbW9yeSBjb3JydXB0aW9uLCBJJ20gdGhpbmtpbmcgdGhpcyBpcyAqYWJzb2x1dGVseSogc29tZXRoaW5nIHdlIG5lZWQgdG8gZnV6eiBleHRlbnNpdmVseS4gV2Ugc2hvdWxkIHJlYWxseSBmb2N1cyBvdXIgZnV6emluZyBlZmZvcnRzIG9uIHRoZSBgaXA2X2ZpbmlzaF9vdXRwdXQyYCBmdW5jdGlvbi4gSXQncyBsaWtlbHkgaW52b2x2ZWQgZGlyZWN0bHkuXG5cbk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBMV1RVTk5FTGAgY29uZmlndXJhdGlvbi4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcy4gTGV0J3Mgc2VlLi4uIEknbGwgcHVsbCB1cCB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGF0IHNlY3Rpb24uIE9rYXksIEkndmUgZ290IHRoYXQgcmVhZHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMDUsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxOTo0Ny40NTY0MzE5NjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2MTc3OTg4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTFdUVU5ORUxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9NDQzPXNvdXJjZSBcXFwibmV0L2lmZS9LY29uZmlnXFxcIlxcbm5ldC9LY29uZmlnLTQ0NC1cXG5uZXQvS2NvbmZpZzo0NDU6Y29uZmlnIExXVFVOTkVMXFxubmV0L0tjb25maWctNDQ2LVxcdGJvb2wgXFxcIk5ldHdvcmsgbGlnaHQgd2VpZ2h0IHR1bm5lbHNcXFwiXFxuLS1cXG5uZXQvS2NvbmZpZy00NTItXFxubmV0L0tjb25maWc6NDUzOmNvbmZpZyBMV1RVTk5FTF9CUEZcXG5uZXQvS2NvbmZpZy00NTQtXFx0Ym9vbCBcXFwiRXhlY3V0ZSBCUEYgcHJvZ3JhbSBhcyByb3V0ZSBuZXh0aG9wIGFjdGlvblxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTk6NDkuMjE4MjE4MzUxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY0MzgzMDUyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBMV1RVTk5FTC9JUFY2IENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uIOKAkyBzZWVtcyBsaWtlIGl0J3MgYnVpbHQgYXJvdW5kIGBMV1RVTk5FTGAsIHdoaWNoIGlzIHRoZSBrZXkgY29tcG9uZW50IGhlcmUuIEFuZCwgYXMgZXhwZWN0ZWQsIHdlIGFsc28gaGF2ZSB0byBkZWFsIHdpdGggYElQVjZgLiBUaGF0J3Mgc3RhbmRhcmQgZm9yIHRoaXMgdHlwZSBvZiBzZXR1cC5cblxuTm93LCBJIG5lZWQgdG8gemVybyBpbiBvbiBob3cgdGhpcyBpcyBhbGwgaW1wbGVtZW50ZWQuIEknbSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSB0aGF0IGBpcDZfZmluaXNoX291dHB1dDJgIGlzICp0aGUqIGNlbnRyYWwgZnVuY3Rpb24gdGhhdCdzIGJlZW4gbW9kaWZpZWQgaW4gdGhlIGxhdGVzdCBjaGFuZ2UuIE5lZWQgdG8gY29uZmlybSBub3RoaW5nIGVsc2Ugd2FzIHN1YnRseSBhbHRlcmVkLCB0aGF0J3MgY3J1Y2lhbC4gQWgsIHllcywgaXQgYXBwZWFycyB0byBiZSB0aGUgb25seSBvbmUgZGlyZWN0bHkgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UsIHdoaWNoIGFsaWducyB3aXRoIG15IGluaXRpYWwgYXNzZXNzbWVudC5cblxuT2theSwgbmV4dCBzdGVwLi4uIGxvb2tzIGxpa2Ugd2Ugd2lsbCBjYWxsIGBzZXQtcmVzdWx0c2Agd2hpY2ggaXMgYSBjcml0aWNhbCBmdW5jdGlvbiwgY29uZmlybWluZyBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MTUsIk91dHB1dFRva2VucyI6OTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxOTo1NC44NjIwNjU2MDhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMDgxNzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCIsXG4gICAgXCJMV1RVTk5FTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwNl9maW5pc2hfb3V0cHV0MlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiB0aGUgSVB2NiBvdXRwdXQgcGF0aCB3aGVuIGx3dHVubmVsX3htaXQgbW9kaWZpZXMgdGhlIHNrYi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2suXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiLFxuICAgIFwiTFdUVU5ORUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcDZfZmluaXNoX291dHB1dDJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gdGhlIElQdjYgb3V0cHV0IHBhdGggd2hlbiBsd3R1bm5lbF94bWl0IG1vZGlmaWVzIHRoZSBza2IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxOTo1NC45NDQxNTQ0OVoiLCJTZXEiOjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjE3NjkyMTUyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjE5OjU0Ljk0NDc2NzIxOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1NjE3NjMwMzkzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBzdGFsZSBwb2ludGVyIGlzc3VlIGluIGBpcDZfZmluaXNoX291dHB1dDJgLiBUaGUgYGx3dHVubmVsX3htaXQoKWAgZnVuY3Rpb24gY2FuIG1vZGlmeSBvciByZWFsbG9jYXRlIHRoZSBgc2tiYCAoZS5nLiwgdmlhIGBwc2tiX2V4cGFuZF9oZWFkYCksIHdoaWNoIGludmFsaWRhdGVzIHRoZSBwcmV2aW91c2x5IHN0b3JlZCBgaGRyYCBhbmQgYGRhZGRyYCBwb2ludGVycy4gVXNpbmcgdGhlc2Ugc3RhbGUgcG9pbnRlcnMgbGF0ZXIgaW4gdGhlIGZ1bmN0aW9uIGxlYWRzIHRvIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzLiBUaGVzZSB0eXBlcyBvZiBtZW1vcnkgY29ycnVwdGlvbiBidWdzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWE5NmRkZmFmZGIxNWRkOGU4NjdjZWQ1MWI0YzFkM2Y0MjFiYjQyNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDE0OjE5OjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X291dHB1dC5jIGIvbmV0L2lwdjYvaXA2X291dHB1dC5jXG5pbmRleCAzNjhlNGZhM2I0M2NhLi5kODkzYzNkYWNmZDYzIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvaXA2X291dHB1dC5jXG4rKysgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmNcbkBAIC0xMTYsNiArMTE2LDggQEAgc3RhdGljIGludCBpcDZfZmluaXNoX291dHB1dDIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpcbiBcbiBcdFx0aWYgKHJlcyAhPSBMV1RVTk5FTF9YTUlUX0NPTlRJTlVFKVxuIFx0XHRcdHJldHVybiByZXM7XG4rXHRcdGhkciA9IGlwdjZfaGRyKHNrYik7XG4rXHRcdGRhZGRyID0gXHUwMDI2aGRyLVx1MDAzZWRhZGRyO1xuIFx0fVxuIFxuIFx0SVA2X1VQRF9QT19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX09VVCwgc2tiLVx1MDAzZWxlbik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxOTo1NC45NDQ3Njg0MTlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTU3MDA1OTMwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgSVB2NiBPdXRwdXQgQnVnIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBzZWVtcyB0byBiZSB0b3VjaGluZyBgbmV0L2lwdjYvaXA2X291dHB1dC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgaXA2X2ZpbmlzaF9vdXRwdXQyYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSB0aGV5J3ZlIGFkZGVkIHRoZXNlIGxpbmVzOlxuXG5gYGBjXG4rXHRcdGhkciA9IGlwdjZfaGRyKHNrYik7XG4rXHRcdGRhZGRyID0gXHUwMDI2aGRyLVx1MDAzZWRhZGRyO1xuYGBgXG5cbnJpZ2h0IGFmdGVyIHRoZSBjaGVjayBgaWYgKHJlcyAhPSBMV1RVTk5FTF9YTUlUX0NPTlRJTlVFKSByZXR1cm4gcmVzO2Agd2l0aGluIGBpcDZfZmluaXNoX291dHB1dDJgLiBIbW0sIHRoYXQncyBpbnRlcmVzdGluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoaXMgaXMgcHJvYmFibHkgYWRkcmVzc2luZyBhIHN1YnRsZSBidWcgcmVsYXRlZCB0byBsaWdodHdlaWdodCB0dW5uZWxzIChgbHd0dW5uZWxgKS4gVGhlIGxpa2VseSBzY2VuYXJpbyBpcyB0aGF0IHdpdGhpbiB0aGUgYGx3dHVubmVsX3htaXRgIHBhdGgsIGBoZHJgIG9yIGBkYWRkcmAgLSB0aGUgSVB2NiBoZWFkZXIgYW5kIGRlc3RpbmF0aW9uIGFkZHJlc3MgcG9pbnRlcnMgLSAqY291bGQqIGJlIGludmFsaWRhdGVkLCBjaGFuZ2VkLCBvciB0aGF0IHRoZSBgc2tiYCAoc29ja2V0IGJ1ZmZlcikgaXRzZWxmIG1pZ2h0IGJlIHJlYWxsb2NhdGVkIG9yIG1vZGlmaWVkLCBtYWtpbmcgdGhvc2UgcG9pbnRlcnMgc3RhbGUuIFRoYXQgd291bGQgbGVhZCB0byBtZW1vcnkgY29ycnVwdGlvbiBvciBpbmNvcnJlY3Qgcm91dGluZyBpbmZvcm1hdGlvbiBsYXRlciBvbiB3aGVuIHRoZSBjb2RlIHRyaWVzIHRvIHVzZSB0aG9zZSBwb2ludGVycyBhZnRlciBgbHd0dW5uZWxfeG1pdGAgY29tcGxldGVzLiBJdCdzIGEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBpc3N1ZS5cblxuSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IG9mIGBpcDZfZmluaXNoX291dHB1dDJgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBmaXggYW5kIHRoZSBleGFjdCBuYXR1cmUgb2YgdGhlIHBvc3NpYmxlIHJhY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgaW4gYGx3dHVubmVsX3htaXRgIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIElQdjYgaGVhZGVyIGFuZCBkZXN0aW5hdGlvbiBhZGRyZXNzLiBCdXQgdGhlIGFkZGVkIGNvZGUgc3Ryb25nbHkgc3VnZ2VzdHMgdGhleSdyZSB0cnlpbmcgdG8gcmUtZmV0Y2ggdGhlIGhlYWRlciBhbmQgZGVzdGluYXRpb24gYWRkcmVzcyAqYWZ0ZXIqIGBsd3R1bm5lbF94bWl0YCBoYXMgY29tcGxldGVkIHRvIGVuc3VyZSB0aG9zZSBwb2ludGVycyBhcmUgdmFsaWQuIFRoYXQncyB0aGUgbW9zdCBsaWtlbHkgZXhwbGFuYXRpb24sIGdpdmVuIG15IGV4cGVyaWVuY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoyMDowNC41MTQ4MzA2NTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NTk3ODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwNl9maW5pc2hfb3V0cHV0MlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9pcDZfb3V0cHV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvaXA2X291dHB1dC5jLTU5LVxcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYzo2MDpzdGF0aWMgaW50IGlwNl9maW5pc2hfb3V0cHV0MihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtNjEte1xcbi0tXFxubmV0L2lwdjYvaXA2X291dHB1dC5jPTE0Mz1pcDZfZmluaXNoX291dHB1dF9nc29fc2xvd3BhdGhfZHJvcChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYy0xNzEtXFx0XFx0ZXJyID0gc2Vncy1cXHUwMDNlbGVuIFxcdTAwM2UgbXR1ID9cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MTcyOlxcdFxcdFxcdGlwNl9mcmFnbWVudChuZXQsIHNrLCBzZWdzLCBpcDZfZmluaXNoX291dHB1dDIpIDpcXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MTczOlxcdFxcdFxcdGlwNl9maW5pc2hfb3V0cHV0MihuZXQsIHNrLCBzZWdzKTtcXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTc0LVxcdFxcdGlmIChlcnIgXFx1MDAyNlxcdTAwMjYgcmV0ID09IDApXFxuLS1cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM9MTgxPXN0YXRpYyBpbnQgaXA2X2ZpbmlzaF9vdXRwdXRfZ3NvKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2lwdjYvaXA2X291dHB1dC5jLTE4Ni1cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MTg3OlxcdHJldHVybiBpcDZfZmluaXNoX291dHB1dDIobmV0LCBzaywgc2tiKTtcXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTg4LX1cXG4tLVxcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYz0xOTA9c3RhdGljIGludCBfX2lwNl9maW5pc2hfb3V0cHV0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvaXA2X291dHB1dC5jLTIwNy1cXHQgICAgKElQNkNCKHNrYiktXFx1MDAzZWZyYWdfbWF4X3NpemUgXFx1MDAyNlxcdTAwMjYgc2tiLVxcdTAwM2VsZW4gXFx1MDAzZSBJUDZDQihza2IpLVxcdTAwM2VmcmFnX21heF9zaXplKSkpXFxubmV0L2lwdjYvaXA2X291dHB1dC5jOjIwODpcXHRcXHRyZXR1cm4gaXA2X2ZyYWdtZW50KG5ldCwgc2ssIHNrYiwgaXA2X2ZpbmlzaF9vdXRwdXQyKTtcXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMjA5LVxcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYzoyMTA6XFx0cmV0dXJuIGlwNl9maW5pc2hfb3V0cHV0MihuZXQsIHNrLCBza2IpO1xcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYy0yMTEtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoyMDowNC41NjA0MzU5NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzkyMjM0OTE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIGBpcDZfZmluaXNoX291dHB1dDJgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IElQdjYgb3V0cHV0IGlzIGZpbmFsaXplZC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgd2hlcmUgdGhlIHBhY2tldCBnZXRzIGFsbCBpdHMgZmluYWwgdG91Y2hlcyBiZWZvcmUgaGl0dGluZyB0aGUgd2lyZS4gVGltZSB0byBjcmFjayBvcGVuIGBuZXQvaXB2Ni9pcDZfb3V0cHV0LmNgIGFuZCB6ZXJvIGluIG9uIHRoZSBgaXA2X2ZpbmlzaF9vdXRwdXQyYCBmdW5jdGlvbi4gSSBhbnRpY2lwYXRlIHRoaXMgZnVuY3Rpb24gYmVpbmcgY3JpdGljYWwgaW4gdGVybXMgb2YgZW5jYXBzdWxhdGlvbiBkZXRhaWxzLCBjaGVja3N1bSBmaW5hbGl6YXRpb24gKGlmIG5vdCBkb25lIGVhcmxpZXIpLCBhbmQgcG90ZW50aWFsbHkgaGVhZGVyIG1vZGlmaWNhdGlvbnMgYmFzZWQgb24gdGhlIHNwZWNpZmljIG5ldHdvcmsgY2hhcmFjdGVyaXN0aWNzIG9yIHBvbGljaWVzIHRoYXQgYXJlIGF0IHBsYXkuIEknbSBlc3BlY2lhbGx5IGtlZW4gdG8gc2VlIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBsb3ctbGV2ZWwgZnVuY3Rpb25zIHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdGFjay4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyBhcmUgd2FpdGluZyB0byBiZSB1bmNvdmVyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNzUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoyMDozOC40ODI3ODc2ODlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3NTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY2L2lwNl9vdXRwdXQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNjA6XFx0c3RhdGljIGludCBpcDZfZmluaXNoX291dHB1dDIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuICA2MTpcXHR7XFxuICA2MjpcXHRcXHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QgPSBza2JfZHN0KHNrYik7XFxuICA2MzpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gZHN0X2Rldl9yY3UoZHN0KTtcXG4gIDY0OlxcdFxcdHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYgPSBpcDZfZHN0X2lkZXYoZHN0KTtcXG4gIDY1OlxcdFxcdHVuc2lnbmVkIGludCBoaF9sZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xcbiAgNjY6XFx0XFx0Y29uc3Qgc3RydWN0IGluNl9hZGRyICpkYWRkciwgKm5leHRob3A7XFxuICA2NzpcXHRcXHRzdHJ1Y3QgaXB2NmhkciAqaGRyO1xcbiAgNjg6XFx0XFx0c3RydWN0IG5laWdoYm91ciAqbmVpZ2g7XFxuICA2OTpcXHRcXHRpbnQgcmV0O1xcbiAgNzA6XFx0XFxuICA3MTpcXHRcXHQvKiBCZSBwYXJhbm9pZCwgcmF0aGVyIHRoYW4gdG9vIGNsZXZlci4gKi9cXG4gIDcyOlxcdFxcdGlmICh1bmxpa2VseShoaF9sZW4gXFx1MDAzZSBza2JfaGVhZHJvb20oc2tiKSkgXFx1MDAyNlxcdTAwMjYgZGV2LVxcdTAwM2VoZWFkZXJfb3BzKSB7XFxuICA3MzpcXHRcXHRcXHQvKiBpZGV2IHN0YXlzIGFsaXZlIGJlY2F1c2Ugd2UgaG9sZCByY3VfcmVhZF9sb2NrKCkuICovXFxuICA3NDpcXHRcXHRcXHRza2IgPSBza2JfZXhwYW5kX2hlYWQoc2tiLCBoaF9sZW4pO1xcbiAgNzU6XFx0XFx0XFx0aWYgKCFza2IpIHtcXG4gIDc2OlxcdFxcdFxcdFxcdElQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9PVVRESVNDQVJEUyk7XFxuICA3NzpcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gIDc4OlxcdFxcdFxcdH1cXG4gIDc5OlxcdFxcdH1cXG4gIDgwOlxcdFxcbiAgODE6XFx0XFx0aGRyID0gaXB2Nl9oZHIoc2tiKTtcXG4gIDgyOlxcdFxcdGRhZGRyID0gXFx1MDAyNmhkci1cXHUwMDNlZGFkZHI7XFxuICA4MzpcXHRcXHRpZiAodW5saWtlbHkoaXB2Nl9hZGRyX2lzX211bHRpY2FzdChkYWRkcikpKSB7XFxuICA4NDpcXHRcXHRcXHRpZiAoIShkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX0xPT1BCQUNLKSBcXHUwMDI2XFx1MDAyNiBza19tY19sb29wKHNrKSBcXHUwMDI2XFx1MDAyNlxcbiAgODU6XFx0XFx0XFx0ICAgICgobXJvdXRlNl9pc19zb2NrZXQobmV0LCBza2IpIFxcdTAwMjZcXHUwMDI2XFxuICA4NjpcXHRcXHRcXHQgICAgICEoSVA2Q0Ioc2tiKS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUDZTS0JfRk9SV0FSREVEKSkgfHxcXG4gIDg3OlxcdFxcdFxcdCAgICAgaXB2Nl9jaGtfbWNhc3RfYWRkcihkZXYsIGRhZGRyLCBcXHUwMDI2aGRyLVxcdTAwM2VzYWRkcikpKSB7XFxuICA4ODpcXHRcXHRcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqbmV3c2tiID0gc2tiX2Nsb25lKHNrYiwgR0ZQX0FUT01JQyk7XFxuICA4OTpcXHRcXG4gIDkwOlxcdFxcdFxcdFxcdC8qIERvIG5vdCBjaGVjayBmb3IgSUZGX0FMTE1VTFRJOyBtdWx0aWNhc3Qgcm91dGluZ1xcbiAgOTE6XFx0XFx0XFx0XFx0ICAgaXMgbm90IHN1cHBvcnRlZCBpbiBhbnkgY2FzZS5cXG4gIDkyOlxcdFxcdFxcdFxcdCAqL1xcbiAgOTM6XFx0XFx0XFx0XFx0aWYgKG5ld3NrYilcXG4gIDk0OlxcdFxcdFxcdFxcdFxcdE5GX0hPT0soTkZQUk9UT19JUFY2LCBORl9JTkVUX1BPU1RfUk9VVElORyxcXG4gIDk1OlxcdFxcdFxcdFxcdFxcdFxcdG5ldCwgc2ssIG5ld3NrYiwgTlVMTCwgbmV3c2tiLVxcdTAwM2VkZXYsXFxuICA5NjpcXHRcXHRcXHRcXHRcXHRcXHRkZXZfbG9vcGJhY2tfeG1pdCk7XFxuICA5NzpcXHRcXG4gIDk4OlxcdFxcdFxcdFxcdGlmIChoZHItXFx1MDAzZWhvcF9saW1pdCA9PSAwKSB7XFxuICA5OTpcXHRcXHRcXHRcXHRcXHRJUDZfSU5DX1NUQVRTKG5ldCwgaWRldixcXG4gMTAwOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIElQU1RBVFNfTUlCX09VVERJU0NBUkRTKTtcXG4gMTAxOlxcdFxcdFxcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbiAxMDI6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDEwMzpcXHRcXHRcXHRcXHR9XFxuIDEwNDpcXHRcXHRcXHR9XFxuIDEwNTpcXHRcXG4gMTA2OlxcdFxcdFxcdElQNl9VUERfUE9fU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9PVVRNQ0FTVCwgc2tiLVxcdTAwM2VsZW4pO1xcbiAxMDc6XFx0XFx0XFx0aWYgKElQVjZfQUREUl9NQ19TQ09QRShkYWRkcikgXFx1MDAzYz0gSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCBcXHUwMDI2XFx1MDAyNlxcbiAxMDg6XFx0XFx0XFx0ICAgICEoZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9MT09QQkFDSykpIHtcXG4gMTA5OlxcdFxcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbiAxMTA6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDExMTpcXHRcXHRcXHR9XFxuIDExMjpcXHRcXHR9XFxuIDExMzpcXHRcXG4gMTE0OlxcdFxcdGlmIChsd3R1bm5lbF94bWl0X3JlZGlyZWN0KGRzdC1cXHUwMDNlbHd0c3RhdGUpKSB7XFxuIDExNTpcXHRcXHRcXHRpbnQgcmVzID0gbHd0dW5uZWxfeG1pdChza2IpO1xcbiAxMTY6XFx0XFxuIDExNzpcXHRcXHRcXHRpZiAocmVzICE9IExXVFVOTkVMX1hNSVRfQ09OVElOVUUpXFxuIDExODpcXHRcXHRcXHRcXHRyZXR1cm4gcmVzO1xcbiAxMTk6XFx0XFx0XFx0aGRyID0gaXB2Nl9oZHIoc2tiKTtcXG4gMTIwOlxcdFxcdFxcdGRhZGRyID0gXFx1MDAyNmhkci1cXHUwMDNlZGFkZHI7XFxuIDEyMTpcXHRcXHR9XFxuIDEyMjpcXHRcXG4gMTIzOlxcdFxcdElQNl9VUERfUE9fU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9PVVQsIHNrYi1cXHUwMDNlbGVuKTtcXG4gMTI0OlxcdFxcbiAxMjU6XFx0XFx0bmV4dGhvcCA9IHJ0Nl9uZXh0aG9wKGRzdF9ydDZfaW5mbyhkc3QpLCBkYWRkcik7XFxuIDEyNjpcXHRcXHRuZWlnaCA9IF9faXB2Nl9uZWlnaF9sb29rdXBfbm9yZWYoZGV2LCBuZXh0aG9wKTtcXG4gMTI3OlxcdFxcbiAxMjg6XFx0XFx0aWYgKElTX0VSUl9PUl9OVUxMKG5laWdoKSkge1xcbiAxMjk6XFx0XFx0XFx0aWYgKHVubGlrZWx5KCFuZWlnaCkpXFxuIDEzMDpcXHRcXHRcXHRcXHRuZWlnaCA9IF9fbmVpZ2hfY3JlYXRlKFxcdTAwMjZuZF90YmwsIG5leHRob3AsIGRldiwgZmFsc2UpO1xcbiAxMzE6XFx0XFx0XFx0aWYgKElTX0VSUihuZWlnaCkpIHtcXG4gMTMyOlxcdFxcdFxcdFxcdElQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9PVVROT1JPVVRFUyk7XFxuIDEzMzpcXHRcXHRcXHRcXHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX05FSUdIX0NSRUFURUZBSUwpO1xcbiAxMzQ6XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDEzNTpcXHRcXHRcXHR9XFxuIDEzNjpcXHRcXHR9XFxuIDEzNzpcXHRcXHRzb2NrX2NvbmZpcm1fbmVpZ2goc2tiLCBuZWlnaCk7XFxuIDEzODpcXHRcXHRyZXQgPSBuZWlnaF9vdXRwdXQobmVpZ2gsIHNrYiwgZmFsc2UpO1xcbiAxMzk6XFx0XFx0cmV0dXJuIHJldDtcXG4gMTQwOlxcdH1cXG4gMTQxOlxcdFxcbiAxNDI6XFx0c3RhdGljIGludFxcbiAxNDM6XFx0aXA2X2ZpbmlzaF9vdXRwdXRfZ3NvX3Nsb3dwYXRoX2Ryb3Aoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXFxuIDE0NDpcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IG10dSlcXG4gMTQ1OlxcdHtcXG4gMTQ2OlxcdFxcdHN0cnVjdCBza19idWZmICpzZWdzLCAqbnNrYjtcXG4gMTQ3OlxcdFxcdG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzO1xcbiAxNDg6XFx0XFx0aW50IHJldCA9IDA7XFxuIDE0OTpcXHRcXG4gMTUwOlxcdFxcdC8qIFBsZWFzZSBzZWUgY29ycmVzcG9uZGluZyBjb21tZW50IGluIGlwX2ZpbmlzaF9vdXRwdXRfZ3NvXFxuIDE1MTpcXHRcXHQgKiBkZXNjcmliaW5nIHRoZSBjYXNlcyB3aGVyZSBHU08gc2VnbWVudCBsZW5ndGggZXhjZWVkcyB0aGVcXG4gMTUyOlxcdFxcdCAqIGVncmVzcyBNVFUuXFxuIDE1MzpcXHRcXHQgKi9cXG4gMTU0OlxcdFxcdGZlYXR1cmVzID0gbmV0aWZfc2tiX2ZlYXR1cmVzKHNrYik7XFxuIDE1NTpcXHRcXHRzZWdzID0gc2tiX2dzb19zZWdtZW50KHNrYiwgZmVhdHVyZXMgXFx1MDAyNiB+TkVUSUZfRl9HU09fTUFTSyk7XFxuIDE1NjpcXHRcXHRpZiAoSVNfRVJSX09SX05VTEwoc2VncykpIHtcXG4gMTU3OlxcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbiAxNTg6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDE1OTpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjIwOjM4LjQ4Mjk0NzE3OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjYzODA5NTI2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1lbW9yeSBTYWZldHkgSXNzdWUqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIG15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSBjbGFzc2ljIHN0YWxlIHBvaW50ZXIgaXNzdWUsIHNwZWNpZmljYWxseSBhIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBUaGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBgbHd0dW5uZWxfeG1pdChza2IpYCBmdW5jdGlvbiBjYW4gbW9kaWZ5IHRoZSBgc2tiYCBzdHJ1Y3R1cmUsIGFuZCBpdCBsb29rcyBsaWtlIHRoaXMgaXMgd2hlcmUgdGhlIGBza2JgJ3MgaGVhZCBpcyBiZWluZyByZWFsbG9jYXRlZC4gVGhpcyBtZWFucyB0aGF0IGFueSBwb2ludGVycyBkZXJpdmVkIGZyb20gdGhlIGBza2JgICpiZWZvcmUqIHRoZSBjYWxsIHRvIGBsd3R1bm5lbF94bWl0YCwgc3VjaCBhcyBgaGRyYCBhbmQgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgYGRhZGRyYCwgbWlnaHQgYmVjb21lIGludmFsaWQg4oCTIHRoZXkgbWlnaHQgcG9pbnQgdG8gZnJlZWQgbWVtb3J5IG9yLCBldmVuIHdvcnNlLCBqdXN0IHRvIHRoZSB3cm9uZyBvZmZzZXQgd2l0aGluIHRoZSBwYWNrZXQuXG5cbklmIHdlIHRoZW4gdHJ5IHRvIHVzZSB0aG9zZSBzdGFsZSBwb2ludGVycyBsYXRlciwgbGlrZSBpbiBgcnQ2X25leHRob3AoZHN0X3J0Nl9pbmZvKGRzdCksIGRhZGRyKWAsIHdlJ3JlIGdvaW5nIHRvIHRyaWdnZXIgYSBjcmFzaC4gIEFuZCBpdCdzIG5vdCBkdWUgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkuIGBsd3R1bm5lbF94bWl0YCBtaWdodCBwdXNoIGhlYWRlcnMsIGJ1dCB0aG9zZSBoZWFkZXJzIGdldCBpbml0aWFsaXplZCwgc28gaXQncyBub3QgYSBjYXNlIHdoZXJlIHdlIGhhdmUgYW4gaW5mb3JtYXRpb24gbGVhay4gSXQncyBhIG1lbW9yeSBjb3JydXB0aW9uIGJ1Zy4gVGhlIG1lbW9yeSB0aGF0IHRoZSBwb2ludGVycyBwb2ludCB0byBtYXkgbm90IGJlIHZhbGlkIGFueW1vcmUuIFNvLCB0aGUgaXNzdWUgaXMgdGhhdCB0aGUgYHNrYmAncyBkYXRhIHBvaW50ZXIgY2FuIGNoYW5nZSBpZiBgc2tiX2V4cGFuZF9oZWFkYCBvciBgcHNrYl9leHBhbmRfaGVhZGAgZ2V0cyBjYWxsZWQgaW5zaWRlIGBsd3R1bm5lbF94bWl0YC5cblxuVGhpcyBpcyBleGFjdGx5IHRoZSB0eXBlIG9mIGJ1ZyB0aGF0IEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTQU5pdGl6ZXIpIGlzIGRlc2lnbmVkIHRvIGNhdGNoLiBJdCB3aWxsIGRldGVjdCB0aGUgaWxsZWdhbCBtZW1vcnkgYWNjZXNzLiAgS01TQU4gaXNuJ3QgbmVlZGVkIGhlcmUuIEtBU0FOIGlzIHBlcmZlY3RseSBzdWl0YWJsZSBmb3IgdGhpcyBraW5kIG9mIG1lbW9yeSBjb3JydXB0aW9uLiBUaGVyZWZvcmUsIHRoZSBOZWVkc0tNU0FOIGZsYWcgd291bGQgYmUgZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMTAsIk91dHB1dFRva2VucyI6MTYxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MjA6NTEuMTIxMDQ2MTUyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHN0YWxlIHBvaW50ZXIgaXNzdWUgaW4gYGlwNl9maW5pc2hfb3V0cHV0MmAuIFRoZSBgbHd0dW5uZWxfeG1pdCgpYCBmdW5jdGlvbiBjYW4gbW9kaWZ5IG9yIHJlYWxsb2NhdGUgdGhlIGBza2JgIChlLmcuLCB2aWEgYHBza2JfZXhwYW5kX2hlYWRgKSwgd2hpY2ggaW52YWxpZGF0ZXMgdGhlIHByZXZpb3VzbHkgc3RvcmVkIGBoZHJgIGFuZCBgZGFkZHJgIHBvaW50ZXJzLiBVc2luZyB0aGVzZSBzdGFsZSBwb2ludGVycyBsYXRlciBpbiB0aGUgZnVuY3Rpb24gbGVhZHMgdG8gdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMuIFRoZXNlIHR5cGVzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHN0YWxlIHBvaW50ZXIgaXNzdWUgaW4gYGlwNl9maW5pc2hfb3V0cHV0MmAuIFRoZSBgbHd0dW5uZWxfeG1pdCgpYCBmdW5jdGlvbiBjYW4gbW9kaWZ5IG9yIHJlYWxsb2NhdGUgdGhlIGBza2JgIChlLmcuLCB2aWEgYHBza2JfZXhwYW5kX2hlYWRgKSwgd2hpY2ggaW52YWxpZGF0ZXMgdGhlIHByZXZpb3VzbHkgc3RvcmVkIGBoZHJgIGFuZCBgZGFkZHJgIHBvaW50ZXJzLiBVc2luZyB0aGVzZSBzdGFsZSBwb2ludGVycyBsYXRlciBpbiB0aGUgZnVuY3Rpb24gbGVhZHMgdG8gdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMuIFRoZXNlIHR5cGVzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowfdpws[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-12 14:00:50 +0000 UTC FinishedAt: 2026-08-12 14:20:53 +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": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6", "LWTUNNEL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6", "LWTUNNEL" ], "series_id": "c177252a-5d06-466a-915c-e962d8e7be95" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip6_finish_output2" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7TFdUVU5ORUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcDZfZmluaXNoX291dHB1dDImIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHN0YWxlIHBvaW50ZXIgaXNzdWUgaW4gYGlwNl9maW5pc2hfb3V0cHV0MmAuIFRoZSBgbHd0dW5uZWxfeG1pdCgpYCBmdW5jdGlvbiBjYW4gbW9kaWZ5IG9yIHJlYWxsb2NhdGUgdGhlIGBza2JgIChlLmcuLCB2aWEgYHBza2JfZXhwYW5kX2hlYWRgKSwgd2hpY2ggaW52YWxpZGF0ZXMgdGhlIHByZXZpb3VzbHkgc3RvcmVkIGBoZHJgIGFuZCBgZGFkZHJgIHBvaW50ZXJzLiBVc2luZyB0aGVzZSBzdGFsZSBwb2ludGVycyBsYXRlciBpbiB0aGUgZnVuY3Rpb24gbGVhZHMgdG8gdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMuIFRoZXNlIHR5cGVzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHRoZSBJUHY2IG91dHB1dCBwYXRoIHdoZW4gbHd0dW5uZWxfeG1pdCBtb2RpZmllcyB0aGUgc2tiLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGVhOTZkZGZhZmRiMTVkZDhlODY3Y2VkNTFiNGMxZDNmNDIxYmI0MjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxNDoxOTozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmNcbmluZGV4IDM2OGU0ZmEzYjQzY2EuLmQ4OTNjM2RhY2ZkNjMgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xuQEAgLTExNiw2ICYjNDM7MTE2LDggQEAgc3RhdGljIGludCBpcDZfZmluaXNoX291dHB1dDIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpcbiBcbiBcdFx0aWYgKHJlcyAhPSBMV1RVTk5FTF9YTUlUX0NPTlRJTlVFKVxuIFx0XHRcdHJldHVybiByZXM7XG4mIzQzO1x0XHRoZHIgPSBpcHY2X2hkcihza2IpO1xuJiM0MztcdFx0ZGFkZHIgPSBcdTAwMjZoZHItXHUwMDNlZGFkZHI7XG4gXHR9XG4gXG4gXHRJUDZfVVBEX1BPX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfT1VULCBza2ItXHUwMDNlbGVuKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWNiYjMzQ7LAogICAgJiMzNDtMV1RVTk5FTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwNl9maW5pc2hfb3V0cHV0MiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gdGhlIElQdjYgb3V0cHV0IHBhdGggd2hlbiBsd3R1bm5lbF94bWl0IG1vZGlmaWVzIHRoZSBza2IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWE5NmRkZmFmZGIxNWRkOGU4NjdjZWQ1MWI0YzFkM2Y0MjFiYjQyNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDE0OjE5OjMyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X291dHB1dC5jIGIvbmV0L2lwdjYvaXA2X291dHB1dC5jCmluZGV4IDM2OGU0ZmEzYjQzY2EuLmQ4OTNjM2RhY2ZkNjMgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2lwNl9vdXRwdXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKQEAgLTExNiw2ICYjNDM7MTE2LDggQEAgc3RhdGljIGludCBpcDZfZmluaXNoX291dHB1dDIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICoKIAogCQlpZiAocmVzICE9IExXVFVOTkVMX1hNSVRfQ09OVElOVUUpCiAJCQlyZXR1cm4gcmVzOwomIzQzOwkJaGRyID0gaXB2Nl9oZHIoc2tiKTsKJiM0MzsJCWRhZGRyID0gJmFtcDtoZHItJmd0O2RhZGRyOwogCX0KIAogCUlQNl9VUERfUE9fU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9PVVQsIHNrYi0mZ3Q7bGVuKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldHdvcmsgT3V0cHV0IEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIGl0JiMzOTtzIG1ha2luZyBhIGNoYW5nZSB0byBgbmV0L2lwdjYvaXA2X291dHB1dC5jYC4gU3BlY2lmaWNhbGx5LCB0aGV5JiMzOTtyZSBtb2RpZnlpbmcgdGhlIGBpcDZfZmluaXNoX291dHB1dDJgIGZ1bmN0aW9uLiBUaGUgY29kZSBzbmlwcGV0IHNob3dzIHRoZW0gYWRkaW5nIGEgY291cGxlIG9mIGxpbmVzOgoKYGBgYwoJCWhkciA9IGlwdjZfaGRyKHNrYik7CgkJZGFkZHIgPSAmYW1wO2hkci0mZ3Q7ZGFkZHI7CmBgYAoKLi4ucmlnaHQgYWZ0ZXIgdGhpcyBgaWZgIHN0YXRlbWVudDoKCmBgYGMKCQlpZiAocmVzICE9IExXVFVOTkVMX1hNSVRfQ09OVElOVUUpCgkJCXJldHVybiByZXM7CmBgYAoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byBgaXA2X2ZpbmlzaF9vdXRwdXQyYCB3aXRoaW4gYG5ldC9pcHY2L2lwNl9vdXRwdXQuY2AgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgd2hhdCB0aGlzIGNoYW5nZSBpcyBhbGwgYWJvdXQuIE5lZWQgdG8gc2VlIHdoYXQgYGhkcmAgYW5kIGBkYWRkcmAgYXJlIGJlaW5nIHVzZWQgZm9yIGhlcmUgaW4gcmVsYXRpb24gdG8gdGhlIG92ZXJhbGwgZnVuY3Rpb24uIEhvcGVmdWxseSBpdCYjMzk7cyBzdHJhaWdodGZvcndhcmQsIGJ1dCBhIGxpdHRsZSBjb250ZXh0IGZyb20gdGhlIG9yaWdpbmFsIGNvZGUgbmV2ZXIgaHVydC4gSSYjMzk7bGwgY2hlY2sgaG93IGl0IGhhbmRsZXMgdGhlIExpZ2h0d2VpZ2h0IFR1bm5lbGluZyAoTFdUVU5ORUwpIHJldHVybiBjb2RlIGZpcnN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjYvaXA2X291dHB1dC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMDA6XHRcdFx0XHRcdFx0ICAgICAgSVBTVEFUU19NSUJfT1VURElTQ0FSRFMpO1xuIDEwMTpcdFx0XHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4gMTAyOlx0XHRcdFx0XHRyZXR1cm4gMDtcbiAxMDM6XHRcdFx0XHR9XG4gMTA0Olx0XHRcdH1cbiAxMDU6XHRcbiAxMDY6XHRcdFx0SVA2X1VQRF9QT19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX09VVE1DQVNULCBza2ItXHUwMDNlbGVuKTtcbiAxMDc6XHRcdFx0aWYgKElQVjZfQUREUl9NQ19TQ09QRShkYWRkcikgXHUwMDNjPSBJUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMIFx1MDAyNlx1MDAyNlxuIDEwODpcdFx0XHQgICAgIShkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9MT09QQkFDSykpIHtcbiAxMDk6XHRcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiAxMTA6XHRcdFx0XHRyZXR1cm4gMDtcbiAxMTE6XHRcdFx0fVxuIDExMjpcdFx0fVxuIDExMzpcdFxuIDExNDpcdFx0aWYgKGx3dHVubmVsX3htaXRfcmVkaXJlY3QoZHN0LVx1MDAzZWx3dHN0YXRlKSkge1xuIDExNTpcdFx0XHRpbnQgcmVzID0gbHd0dW5uZWxfeG1pdChza2IpO1xuIDExNjpcdFxuIDExNzpcdFx0XHRpZiAocmVzICE9IExXVFVOTkVMX1hNSVRfQ09OVElOVUUpXG4gMTE4Olx0XHRcdFx0cmV0dXJuIHJlcztcbiAxMTk6XHRcdFx0aGRyID0gaXB2Nl9oZHIoc2tiKTtcbiAxMjA6XHRcdFx0ZGFkZHIgPSBcdTAwMjZoZHItXHUwMDNlZGFkZHI7XG4gMTIxOlx0XHR9XG4gMTIyOlx0XG4gMTIzOlx0XHRJUDZfVVBEX1BPX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfT1VULCBza2ItXHUwMDNlbGVuKTtcbiAxMjQ6XHRcbiAxMjU6XHRcdG5leHRob3AgPSBydDZfbmV4dGhvcChkc3RfcnQ2X2luZm8oZHN0KSwgZGFkZHIpO1xuIDEyNjpcdFx0bmVpZ2ggPSBfX2lwdjZfbmVpZ2hfbG9va3VwX25vcmVmKGRldiwgbmV4dGhvcCk7XG4gMTI3Olx0XG4gMTI4Olx0XHRpZiAoSVNfRVJSX09SX05VTEwobmVpZ2gpKSB7XG4gMTI5Olx0XHRcdGlmICh1bmxpa2VseSghbmVpZ2gpKVxuIDEzMDpcdFx0XHRcdG5laWdoID0gX19uZWlnaF9jcmVhdGUoXHUwMDI2bmRfdGJsLCBuZXh0aG9wLCBkZXYsIGZhbHNlKTtcbiAxMzE6XHRcdFx0aWYgKElTX0VSUihuZWlnaCkpIHtcbiAxMzI6XHRcdFx0XHRJUDZfSU5DX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfT1VUTk9ST1VURVMpO1xuIDEzMzpcdFx0XHRcdGtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fTkVJR0hfQ1JFQVRFRkFJTCk7XG4gMTM0Olx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMTM1Olx0XHRcdH1cbiAxMzY6XHRcdH1cbiAxMzc6XHRcdHNvY2tfY29uZmlybV9uZWlnaChza2IsIG5laWdoKTtcbiAxMzg6XHRcdHJldCA9IG5laWdoX291dHB1dChuZWlnaCwgc2tiLCBmYWxzZSk7XG4gMTM5Olx0XHRyZXR1cm4gcmV0O1xuIDE0MDpcdH1cbiAxNDE6XHRcbiAxNDI6XHRzdGF0aWMgaW50XG4gMTQzOlx0aXA2X2ZpbmlzaF9vdXRwdXRfZ3NvX3Nsb3dwYXRoX2Ryb3Aoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXG4gMTQ0Olx0XHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IG10dSlcbiAxNDU6XHR7XG4gMTQ2Olx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2VncywgKm5za2I7XG4gMTQ3Olx0XHRuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcztcbiAxNDg6XHRcdGludCByZXQgPSAwO1xuIDE0OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMDUKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUmVjZW50IElQdjYgT3V0cHV0IFBhdGggQnVnIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIHByZXR0eSBjcml0aWNhbCBidWcgcmVsYXRlZCB0byB0aGUgYGx3dHVubmVsX3htaXRgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0aGVyZSB3YXMgYSBzY2VuYXJpbyB3aGVyZSB0aGUgU29ja2V0IEJ1ZmZlciAoYHNrYmApIGNvdWxkIGJlIG1vZGlmaWVkIOKAkyBwb3RlbnRpYWxseSByZWFsbG9jYXRlZCwgSSBhc3N1bWUg4oCTIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBUaGlzLCBpbiB0dXJuLCBjb3VsZCBpbnZhbGlkYXRlIGNyaXRpY2FsIHBvaW50ZXJzIGxpa2UgYGhkcmAgYW5kIGBkYWRkcmAgdGhhdCBvdGhlciBwYXJ0cyBvZiB0aGUgSVB2NiBvdXRwdXQgcGF0aCByZWx5IG9uLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBhbmQgY291bGQgbGVhZCB0byBzb21lIHJlYWxseSBuYXN0eSwgaGFyZC10by1kZWJ1ZyBjcmFzaGVzIG9yIGNvcnJ1cHRpb24uCgpUaGlzIGlzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQdjYgb3V0cHV0IHBhdGgsIHNwZWNpZmljYWxseSBpbXBhY3Rpbmcgc2l0dWF0aW9ucyB3aGVyZSBMV1RVTk5FTCBpcyBiZWluZyB1c2VkLiBHaXZlbiB0aGF0IHBvdGVudGlhbCBmb3Igc3VidGxlIG1lbW9yeSBjb3JydXB0aW9uLCBJJiMzOTttIHRoaW5raW5nIHRoaXMgaXMgKmFic29sdXRlbHkqIHNvbWV0aGluZyB3ZSBuZWVkIHRvIGZ1enogZXh0ZW5zaXZlbHkuIFdlIHNob3VsZCByZWFsbHkgZm9jdXMgb3VyIGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgYGlwNl9maW5pc2hfb3V0cHV0MmAgZnVuY3Rpb24uIEl0JiMzOTtzIGxpa2VseSBpbnZvbHZlZCBkaXJlY3RseS4KCk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBMV1RVTk5FTGAgY29uZmlndXJhdGlvbi4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBwdWxsIHVwIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoYXQgc2VjdGlvbi4gT2theSwgSSYjMzk7dmUgZ290IHRoYXQgcmVhZHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIExXVFVOTkVMJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTQ0Mz1zb3VyY2UgXCYjMzQ7bmV0L2lmZS9LY29uZmlnXCYjMzQ7XG5uZXQvS2NvbmZpZy00NDQtXG5uZXQvS2NvbmZpZzo0NDU6Y29uZmlnIExXVFVOTkVMXG5uZXQvS2NvbmZpZy00NDYtXHRib29sIFwmIzM0O05ldHdvcmsgbGlnaHQgd2VpZ2h0IHR1bm5lbHNcJiMzNDtcbi0tXG5uZXQvS2NvbmZpZy00NTItXG5uZXQvS2NvbmZpZzo0NTM6Y29uZmlnIExXVFVOTkVMX0JQRlxubmV0L0tjb25maWctNDU0LVx0Ym9vbCBcJiMzNDtFeGVjdXRlIEJQRiBwcm9ncmFtIGFzIHJvdXRlIG5leHRob3AgYWN0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcxNQoJCQkJCQkJb3V0cHV0OiA5NQoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgTFdUVU5ORUwvSVBWNiBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uIOKAkyBzZWVtcyBsaWtlIGl0JiMzOTtzIGJ1aWx0IGFyb3VuZCBgTFdUVU5ORUxgLCB3aGljaCBpcyB0aGUga2V5IGNvbXBvbmVudCBoZXJlLiBBbmQsIGFzIGV4cGVjdGVkLCB3ZSBhbHNvIGhhdmUgdG8gZGVhbCB3aXRoIGBJUFY2YC4gVGhhdCYjMzk7cyBzdGFuZGFyZCBmb3IgdGhpcyB0eXBlIG9mIHNldHVwLgoKTm93LCBJIG5lZWQgdG8gemVybyBpbiBvbiBob3cgdGhpcyBpcyBhbGwgaW1wbGVtZW50ZWQuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBgaXA2X2ZpbmlzaF9vdXRwdXQyYCBpcyAqdGhlKiBjZW50cmFsIGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVlbiBtb2RpZmllZCBpbiB0aGUgbGF0ZXN0IGNoYW5nZS4gTmVlZCB0byBjb25maXJtIG5vdGhpbmcgZWxzZSB3YXMgc3VidGx5IGFsdGVyZWQsIHRoYXQmIzM5O3MgY3J1Y2lhbC4gQWgsIHllcywgaXQgYXBwZWFycyB0byBiZSB0aGUgb25seSBvbmUgZGlyZWN0bHkgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UsIHdoaWNoIGFsaWducyB3aXRoIG15IGluaXRpYWwgYXNzZXNzbWVudC4KCk9rYXksIG5leHQgc3RlcC4uLiBsb29rcyBsaWtlIHdlIHdpbGwgY2FsbCBgc2V0LXJlc3VsdHNgIHdoaWNoIGlzIGEgY3JpdGljYWwgZnVuY3Rpb24sIGNvbmZpcm1pbmcgZXZlcnl0aGluZyBpcyBzZXQgdXAgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2JiMzNDssCiAgICAmIzM0O0xXVFVOTkVMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXA2X2ZpbmlzaF9vdXRwdXQyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiB0aGUgSVB2NiBvdXRwdXQgcGF0aCB3aGVuIGx3dHVubmVsX3htaXQgbW9kaWZpZXMgdGhlIHNrYi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2suJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7TFdUVU5ORUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcDZfZmluaXNoX291dHB1dDImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHRoZSBJUHY2IG91dHB1dCBwYXRoIHdoZW4gbHd0dW5uZWxfeG1pdCBtb2RpZmllcyB0aGUgc2tiLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNDoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgc3RhbGUgcG9pbnRlciBpc3N1ZSBpbiBgaXA2X2ZpbmlzaF9vdXRwdXQyYC4gVGhlIGBsd3R1bm5lbF94bWl0KClgIGZ1bmN0aW9uIGNhbiBtb2RpZnkgb3IgcmVhbGxvY2F0ZSB0aGUgYHNrYmAgKGUuZy4sIHZpYSBgcHNrYl9leHBhbmRfaGVhZGApLCB3aGljaCBpbnZhbGlkYXRlcyB0aGUgcHJldmlvdXNseSBzdG9yZWQgYGhkcmAgYW5kIGBkYWRkcmAgcG9pbnRlcnMuIFVzaW5nIHRoZXNlIHN0YWxlIHBvaW50ZXJzIGxhdGVyIGluIHRoZSBmdW5jdGlvbiBsZWFkcyB0byB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3Nlcy4gVGhlc2UgdHlwZXMgb2YgbWVtb3J5IGNvcnJ1cHRpb24gYnVncyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlYTk2ZGRmYWZkYjE1ZGQ4ZTg2N2NlZDUxYjRjMWQzZjQyMWJiNDI2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMTIgMTQ6MTk6MzIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKaW5kZXggMzY4ZTRmYTNiNDNjYS4uZDg5M2MzZGFjZmQ2MyAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvaXA2X291dHB1dC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuYwpAQCAtMTE2LDYgJiM0MzsxMTYsOCBAQCBzdGF0aWMgaW50IGlwNl9maW5pc2hfb3V0cHV0MihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKgogCiAJCWlmIChyZXMgIT0gTFdUVU5ORUxfWE1JVF9DT05USU5VRSkKIAkJCXJldHVybiByZXM7CiYjNDM7CQloZHIgPSBpcHY2X2hkcihza2IpOwomIzQzOwkJZGFkZHIgPSAmYW1wO2hkci0mZ3Q7ZGFkZHI7CiAJfQogCiAJSVA2X1VQRF9QT19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX09VVCwgc2tiLSZndDtsZW4pOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgSVB2NiBPdXRwdXQgQnVnIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHNlZW1zIHRvIGJlIHRvdWNoaW5nIGBuZXQvaXB2Ni9pcDZfb3V0cHV0LmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBpcDZfZmluaXNoX291dHB1dDJgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIGFkZGVkIHRoZXNlIGxpbmVzOgoKYGBgYwomIzQzOwkJaGRyID0gaXB2Nl9oZHIoc2tiKTsKJiM0MzsJCWRhZGRyID0gJmFtcDtoZHItJmd0O2RhZGRyOwpgYGAKCnJpZ2h0IGFmdGVyIHRoZSBjaGVjayBgaWYgKHJlcyAhPSBMV1RVTk5FTF9YTUlUX0NPTlRJTlVFKSByZXR1cm4gcmVzO2Agd2l0aGluIGBpcDZfZmluaXNoX291dHB1dDJgLiBIbW0sIHRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGlzIHByb2JhYmx5IGFkZHJlc3NpbmcgYSBzdWJ0bGUgYnVnIHJlbGF0ZWQgdG8gbGlnaHR3ZWlnaHQgdHVubmVscyAoYGx3dHVubmVsYCkuIFRoZSBsaWtlbHkgc2NlbmFyaW8gaXMgdGhhdCB3aXRoaW4gdGhlIGBsd3R1bm5lbF94bWl0YCBwYXRoLCBgaGRyYCBvciBgZGFkZHJgIC0gdGhlIElQdjYgaGVhZGVyIGFuZCBkZXN0aW5hdGlvbiBhZGRyZXNzIHBvaW50ZXJzIC0gKmNvdWxkKiBiZSBpbnZhbGlkYXRlZCwgY2hhbmdlZCwgb3IgdGhhdCB0aGUgYHNrYmAgKHNvY2tldCBidWZmZXIpIGl0c2VsZiBtaWdodCBiZSByZWFsbG9jYXRlZCBvciBtb2RpZmllZCwgbWFraW5nIHRob3NlIHBvaW50ZXJzIHN0YWxlLiBUaGF0IHdvdWxkIGxlYWQgdG8gbWVtb3J5IGNvcnJ1cHRpb24gb3IgaW5jb3JyZWN0IHJvdXRpbmcgaW5mb3JtYXRpb24gbGF0ZXIgb24gd2hlbiB0aGUgY29kZSB0cmllcyB0byB1c2UgdGhvc2UgcG9pbnRlcnMgYWZ0ZXIgYGx3dHVubmVsX3htaXRgIGNvbXBsZXRlcy4gSXQmIzM5O3MgYSBjbGFzc2ljIHJhY2UgY29uZGl0aW9uIGlzc3VlLgoKSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IG9mIGBpcDZfZmluaXNoX291dHB1dDJgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBmaXggYW5kIHRoZSBleGFjdCBuYXR1cmUgb2YgdGhlIHBvc3NpYmxlIHJhY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIGBsd3R1bm5lbF94bWl0YCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBJUHY2IGhlYWRlciBhbmQgZGVzdGluYXRpb24gYWRkcmVzcy4gQnV0IHRoZSBhZGRlZCBjb2RlIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZXkmIzM5O3JlIHRyeWluZyB0byByZS1mZXRjaCB0aGUgaGVhZGVyIGFuZCBkZXN0aW5hdGlvbiBhZGRyZXNzICphZnRlciogYGx3dHVubmVsX3htaXRgIGhhcyBjb21wbGV0ZWQgdG8gZW5zdXJlIHRob3NlIHBvaW50ZXJzIGFyZSB2YWxpZC4gVGhhdCYjMzk7cyB0aGUgbW9zdCBsaWtlbHkgZXhwbGFuYXRpb24sIGdpdmVuIG15IGV4cGVyaWVuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwNl9maW5pc2hfb3V0cHV0MiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L2lwNl9vdXRwdXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9pcDZfb3V0cHV0LmMtNTktXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6NjA6c3RhdGljIGludCBpcDZfZmluaXNoX291dHB1dDIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtNjEte1xuLS1cbm5ldC9pcHY2L2lwNl9vdXRwdXQuYz0xNDM9aXA2X2ZpbmlzaF9vdXRwdXRfZ3NvX3Nsb3dwYXRoX2Ryb3Aoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2lwdjYvaXA2X291dHB1dC5jLTE3MS1cdFx0ZXJyID0gc2Vncy1cdTAwM2VsZW4gXHUwMDNlIG10dSA/XG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MTcyOlx0XHRcdGlwNl9mcmFnbWVudChuZXQsIHNrLCBzZWdzLCBpcDZfZmluaXNoX291dHB1dDIpIDpcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYzoxNzM6XHRcdFx0aXA2X2ZpbmlzaF9vdXRwdXQyKG5ldCwgc2ssIHNlZ3MpO1xubmV0L2lwdjYvaXA2X291dHB1dC5jLTE3NC1cdFx0aWYgKGVyciBcdTAwMjZcdTAwMjYgcmV0ID09IDApXG4tLVxubmV0L2lwdjYvaXA2X291dHB1dC5jPTE4MT1zdGF0aWMgaW50IGlwNl9maW5pc2hfb3V0cHV0X2dzbyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTg2LVxubmV0L2lwdjYvaXA2X291dHB1dC5jOjE4NzpcdHJldHVybiBpcDZfZmluaXNoX291dHB1dDIobmV0LCBzaywgc2tiKTtcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYy0xODgtfVxuLS1cbm5ldC9pcHY2L2lwNl9vdXRwdXQuYz0xOTA9c3RhdGljIGludCBfX2lwNl9maW5pc2hfb3V0cHV0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L2lwNl9vdXRwdXQuYy0yMDctXHQgICAgKElQNkNCKHNrYiktXHUwMDNlZnJhZ19tYXhfc2l6ZSBcdTAwMjZcdTAwMjYgc2tiLVx1MDAzZWxlbiBcdTAwM2UgSVA2Q0Ioc2tiKS1cdTAwM2VmcmFnX21heF9zaXplKSkpXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MjA4Olx0XHRyZXR1cm4gaXA2X2ZyYWdtZW50KG5ldCwgc2ssIHNrYiwgaXA2X2ZpbmlzaF9vdXRwdXQyKTtcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYy0yMDktXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MjEwOlx0cmV0dXJuIGlwNl9maW5pc2hfb3V0cHV0MihuZXQsIHNrLCBza2IpO1xubmV0L2lwdjYvaXA2X291dHB1dC5jLTIxMS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNzUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gYGlwNl9maW5pc2hfb3V0cHV0MmAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBJUHY2IG91dHB1dCBpcyBmaW5hbGl6ZWQuIE15IGd1dCB0ZWxscyBtZSB0aGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHdoZXJlIHRoZSBwYWNrZXQgZ2V0cyBhbGwgaXRzIGZpbmFsIHRvdWNoZXMgYmVmb3JlIGhpdHRpbmcgdGhlIHdpcmUuIFRpbWUgdG8gY3JhY2sgb3BlbiBgbmV0L2lwdjYvaXA2X291dHB1dC5jYCBhbmQgemVybyBpbiBvbiB0aGUgYGlwNl9maW5pc2hfb3V0cHV0MmAgZnVuY3Rpb24uIEkgYW50aWNpcGF0ZSB0aGlzIGZ1bmN0aW9uIGJlaW5nIGNyaXRpY2FsIGluIHRlcm1zIG9mIGVuY2Fwc3VsYXRpb24gZGV0YWlscywgY2hlY2tzdW0gZmluYWxpemF0aW9uIChpZiBub3QgZG9uZSBlYXJsaWVyKSwgYW5kIHBvdGVudGlhbGx5IGhlYWRlciBtb2RpZmljYXRpb25zIGJhc2VkIG9uIHRoZSBzcGVjaWZpYyBuZXR3b3JrIGNoYXJhY3RlcmlzdGljcyBvciBwb2xpY2llcyB0aGF0IGFyZSBhdCBwbGF5LiBJJiMzOTttIGVzcGVjaWFsbHkga2VlbiB0byBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIGxvdy1sZXZlbCBmdW5jdGlvbnMgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgd2FpdGluZyB0byBiZSB1bmNvdmVyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE0OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjYvaXA2X291dHB1dC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNjA6XHRzdGF0aWMgaW50IGlwNl9maW5pc2hfb3V0cHV0MihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAgNjE6XHR7XG4gIDYyOlx0XHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QgPSBza2JfZHN0KHNrYik7XG4gIDYzOlx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gZHN0X2Rldl9yY3UoZHN0KTtcbiAgNjQ6XHRcdHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYgPSBpcDZfZHN0X2lkZXYoZHN0KTtcbiAgNjU6XHRcdHVuc2lnbmVkIGludCBoaF9sZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xuICA2NjpcdFx0Y29uc3Qgc3RydWN0IGluNl9hZGRyICpkYWRkciwgKm5leHRob3A7XG4gIDY3Olx0XHRzdHJ1Y3QgaXB2NmhkciAqaGRyO1xuICA2ODpcdFx0c3RydWN0IG5laWdoYm91ciAqbmVpZ2g7XG4gIDY5Olx0XHRpbnQgcmV0O1xuICA3MDpcdFxuICA3MTpcdFx0LyogQmUgcGFyYW5vaWQsIHJhdGhlciB0aGFuIHRvbyBjbGV2ZXIuICovXG4gIDcyOlx0XHRpZiAodW5saWtlbHkoaGhfbGVuIFx1MDAzZSBza2JfaGVhZHJvb20oc2tiKSkgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2VoZWFkZXJfb3BzKSB7XG4gIDczOlx0XHRcdC8qIGlkZXYgc3RheXMgYWxpdmUgYmVjYXVzZSB3ZSBob2xkIHJjdV9yZWFkX2xvY2soKS4gKi9cbiAgNzQ6XHRcdFx0c2tiID0gc2tiX2V4cGFuZF9oZWFkKHNrYiwgaGhfbGVuKTtcbiAgNzU6XHRcdFx0aWYgKCFza2IpIHtcbiAgNzY6XHRcdFx0XHRJUDZfSU5DX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfT1VURElTQ0FSRFMpO1xuICA3NzpcdFx0XHRcdHJldHVybiAtRU5PTUVNO1xuICA3ODpcdFx0XHR9XG4gIDc5Olx0XHR9XG4gIDgwOlx0XG4gIDgxOlx0XHRoZHIgPSBpcHY2X2hkcihza2IpO1xuICA4MjpcdFx0ZGFkZHIgPSBcdTAwMjZoZHItXHUwMDNlZGFkZHI7XG4gIDgzOlx0XHRpZiAodW5saWtlbHkoaXB2Nl9hZGRyX2lzX211bHRpY2FzdChkYWRkcikpKSB7XG4gIDg0Olx0XHRcdGlmICghKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0xPT1BCQUNLKSBcdTAwMjZcdTAwMjYgc2tfbWNfbG9vcChzaykgXHUwMDI2XHUwMDI2XG4gIDg1Olx0XHRcdCAgICAoKG1yb3V0ZTZfaXNfc29ja2V0KG5ldCwgc2tiKSBcdTAwMjZcdTAwMjZcbiAgODY6XHRcdFx0ICAgICAhKElQNkNCKHNrYiktXHUwMDNlZmxhZ3MgXHUwMDI2IElQNlNLQl9GT1JXQVJERUQpKSB8fFxuICA4NzpcdFx0XHQgICAgIGlwdjZfY2hrX21jYXN0X2FkZHIoZGV2LCBkYWRkciwgXHUwMDI2aGRyLVx1MDAzZXNhZGRyKSkpIHtcbiAgODg6XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqbmV3c2tiID0gc2tiX2Nsb25lKHNrYiwgR0ZQX0FUT01JQyk7XG4gIDg5Olx0XG4gIDkwOlx0XHRcdFx0LyogRG8gbm90IGNoZWNrIGZvciBJRkZfQUxMTVVMVEk7IG11bHRpY2FzdCByb3V0aW5nXG4gIDkxOlx0XHRcdFx0ICAgaXMgbm90IHN1cHBvcnRlZCBpbiBhbnkgY2FzZS5cbiAgOTI6XHRcdFx0XHQgKi9cbiAgOTM6XHRcdFx0XHRpZiAobmV3c2tiKVxuICA5NDpcdFx0XHRcdFx0TkZfSE9PSyhORlBST1RPX0lQVjYsIE5GX0lORVRfUE9TVF9ST1VUSU5HLFxuICA5NTpcdFx0XHRcdFx0XHRuZXQsIHNrLCBuZXdza2IsIE5VTEwsIG5ld3NrYi1cdTAwM2VkZXYsXG4gIDk2Olx0XHRcdFx0XHRcdGRldl9sb29wYmFja194bWl0KTtcbiAgOTc6XHRcbiAgOTg6XHRcdFx0XHRpZiAoaGRyLVx1MDAzZWhvcF9saW1pdCA9PSAwKSB7XG4gIDk5Olx0XHRcdFx0XHRJUDZfSU5DX1NUQVRTKG5ldCwgaWRldixcbiAxMDA6XHRcdFx0XHRcdFx0ICAgICAgSVBTVEFUU19NSUJfT1VURElTQ0FSRFMpO1xuIDEwMTpcdFx0XHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4gMTAyOlx0XHRcdFx0XHRyZXR1cm4gMDtcbiAxMDM6XHRcdFx0XHR9XG4gMTA0Olx0XHRcdH1cbiAxMDU6XHRcbiAxMDY6XHRcdFx0SVA2X1VQRF9QT19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX09VVE1DQVNULCBza2ItXHUwMDNlbGVuKTtcbiAxMDc6XHRcdFx0aWYgKElQVjZfQUREUl9NQ19TQ09QRShkYWRkcikgXHUwMDNjPSBJUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMIFx1MDAyNlx1MDAyNlxuIDEwODpcdFx0XHQgICAgIShkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9MT09QQkFDSykpIHtcbiAxMDk6XHRcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiAxMTA6XHRcdFx0XHRyZXR1cm4gMDtcbiAxMTE6XHRcdFx0fVxuIDExMjpcdFx0fVxuIDExMzpcdFxuIDExNDpcdFx0aWYgKGx3dHVubmVsX3htaXRfcmVkaXJlY3QoZHN0LVx1MDAzZWx3dHN0YXRlKSkge1xuIDExNTpcdFx0XHRpbnQgcmVzID0gbHd0dW5uZWxfeG1pdChza2IpO1xuIDExNjpcdFxuIDExNzpcdFx0XHRpZiAocmVzICE9IExXVFVOTkVMX1hNSVRfQ09OVElOVUUpXG4gMTE4Olx0XHRcdFx0cmV0dXJuIHJlcztcbiAxMTk6XHRcdFx0aGRyID0gaXB2Nl9oZHIoc2tiKTtcbiAxMjA6XHRcdFx0ZGFkZHIgPSBcdTAwMjZoZHItXHUwMDNlZGFkZHI7XG4gMTIxOlx0XHR9XG4gMTIyOlx0XG4gMTIzOlx0XHRJUDZfVVBEX1BPX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfT1VULCBza2ItXHUwMDNlbGVuKTtcbiAxMjQ6XHRcbiAxMjU6XHRcdG5leHRob3AgPSBydDZfbmV4dGhvcChkc3RfcnQ2X2luZm8oZHN0KSwgZGFkZHIpO1xuIDEyNjpcdFx0bmVpZ2ggPSBfX2lwdjZfbmVpZ2hfbG9va3VwX25vcmVmKGRldiwgbmV4dGhvcCk7XG4gMTI3Olx0XG4gMTI4Olx0XHRpZiAoSVNfRVJSX09SX05VTEwobmVpZ2gpKSB7XG4gMTI5Olx0XHRcdGlmICh1bmxpa2VseSghbmVpZ2gpKVxuIDEzMDpcdFx0XHRcdG5laWdoID0gX19uZWlnaF9jcmVhdGUoXHUwMDI2bmRfdGJsLCBuZXh0aG9wLCBkZXYsIGZhbHNlKTtcbiAxMzE6XHRcdFx0aWYgKElTX0VSUihuZWlnaCkpIHtcbiAxMzI6XHRcdFx0XHRJUDZfSU5DX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfT1VUTk9ST1VURVMpO1xuIDEzMzpcdFx0XHRcdGtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fTkVJR0hfQ1JFQVRFRkFJTCk7XG4gMTM0Olx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMTM1Olx0XHRcdH1cbiAxMzY6XHRcdH1cbiAxMzc6XHRcdHNvY2tfY29uZmlybV9uZWlnaChza2IsIG5laWdoKTtcbiAxMzg6XHRcdHJldCA9IG5laWdoX291dHB1dChuZWlnaCwgc2tiLCBmYWxzZSk7XG4gMTM5Olx0XHRyZXR1cm4gcmV0O1xuIDE0MDpcdH1cbiAxNDE6XHRcbiAxNDI6XHRzdGF0aWMgaW50XG4gMTQzOlx0aXA2X2ZpbmlzaF9vdXRwdXRfZ3NvX3Nsb3dwYXRoX2Ryb3Aoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXG4gMTQ0Olx0XHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IG10dSlcbiAxNDU6XHR7XG4gMTQ2Olx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2VncywgKm5za2I7XG4gMTQ3Olx0XHRuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcztcbiAxNDg6XHRcdGludCByZXQgPSAwO1xuIDE0OTpcdFxuIDE1MDpcdFx0LyogUGxlYXNlIHNlZSBjb3JyZXNwb25kaW5nIGNvbW1lbnQgaW4gaXBfZmluaXNoX291dHB1dF9nc29cbiAxNTE6XHRcdCAqIGRlc2NyaWJpbmcgdGhlIGNhc2VzIHdoZXJlIEdTTyBzZWdtZW50IGxlbmd0aCBleGNlZWRzIHRoZVxuIDE1MjpcdFx0ICogZWdyZXNzIE1UVS5cbiAxNTM6XHRcdCAqL1xuIDE1NDpcdFx0ZmVhdHVyZXMgPSBuZXRpZl9za2JfZmVhdHVyZXMoc2tiKTtcbiAxNTU6XHRcdHNlZ3MgPSBza2JfZ3NvX3NlZ21lbnQoc2tiLCBmZWF0dXJlcyBcdTAwMjYgfk5FVElGX0ZfR1NPX01BU0spO1xuIDE1NjpcdFx0aWYgKElTX0VSUl9PUl9OVUxMKHNlZ3MpKSB7XG4gMTU3Olx0XHRcdGtmcmVlX3NrYihza2IpO1xuIDE1ODpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAxNTk6XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTExMAoJCQkJCQkJb3V0cHV0OiAxNjEKCQkJCQkJCXRob3VnaHRzOiA1MjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNZW1vcnkgU2FmZXR5IElzc3VlKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBhIGNsYXNzaWMgc3RhbGUgcG9pbnRlciBpc3N1ZSwgc3BlY2lmaWNhbGx5IGEgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlIGBsd3R1bm5lbF94bWl0KHNrYilgIGZ1bmN0aW9uIGNhbiBtb2RpZnkgdGhlIGBza2JgIHN0cnVjdHVyZSwgYW5kIGl0IGxvb2tzIGxpa2UgdGhpcyBpcyB3aGVyZSB0aGUgYHNrYmAmIzM5O3MgaGVhZCBpcyBiZWluZyByZWFsbG9jYXRlZC4gVGhpcyBtZWFucyB0aGF0IGFueSBwb2ludGVycyBkZXJpdmVkIGZyb20gdGhlIGBza2JgICpiZWZvcmUqIHRoZSBjYWxsIHRvIGBsd3R1bm5lbF94bWl0YCwgc3VjaCBhcyBgaGRyYCBhbmQgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgYGRhZGRyYCwgbWlnaHQgYmVjb21lIGludmFsaWQg4oCTIHRoZXkgbWlnaHQgcG9pbnQgdG8gZnJlZWQgbWVtb3J5IG9yLCBldmVuIHdvcnNlLCBqdXN0IHRvIHRoZSB3cm9uZyBvZmZzZXQgd2l0aGluIHRoZSBwYWNrZXQuCgpJZiB3ZSB0aGVuIHRyeSB0byB1c2UgdGhvc2Ugc3RhbGUgcG9pbnRlcnMgbGF0ZXIsIGxpa2UgaW4gYHJ0Nl9uZXh0aG9wKGRzdF9ydDZfaW5mbyhkc3QpLCBkYWRkcilgLCB3ZSYjMzk7cmUgZ29pbmcgdG8gdHJpZ2dlciBhIGNyYXNoLiAgQW5kIGl0JiMzOTtzIG5vdCBkdWUgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkuIGBsd3R1bm5lbF94bWl0YCBtaWdodCBwdXNoIGhlYWRlcnMsIGJ1dCB0aG9zZSBoZWFkZXJzIGdldCBpbml0aWFsaXplZCwgc28gaXQmIzM5O3Mgbm90IGEgY2FzZSB3aGVyZSB3ZSBoYXZlIGFuIGluZm9ybWF0aW9uIGxlYWsuIEl0JiMzOTtzIGEgbWVtb3J5IGNvcnJ1cHRpb24gYnVnLiBUaGUgbWVtb3J5IHRoYXQgdGhlIHBvaW50ZXJzIHBvaW50IHRvIG1heSBub3QgYmUgdmFsaWQgYW55bW9yZS4gU28sIHRoZSBpc3N1ZSBpcyB0aGF0IHRoZSBgc2tiYCYjMzk7cyBkYXRhIHBvaW50ZXIgY2FuIGNoYW5nZSBpZiBgc2tiX2V4cGFuZF9oZWFkYCBvciBgcHNrYl9leHBhbmRfaGVhZGAgZ2V0cyBjYWxsZWQgaW5zaWRlIGBsd3R1bm5lbF94bWl0YC4KClRoaXMgaXMgZXhhY3RseSB0aGUgdHlwZSBvZiBidWcgdGhhdCBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU0FOaXRpemVyKSBpcyBkZXNpZ25lZCB0byBjYXRjaC4gSXQgd2lsbCBkZXRlY3QgdGhlIGlsbGVnYWwgbWVtb3J5IGFjY2Vzcy4gIEtNU0FOIGlzbiYjMzk7dCBuZWVkZWQgaGVyZS4gS0FTQU4gaXMgcGVyZmVjdGx5IHN1aXRhYmxlIGZvciB0aGlzIGtpbmQgb2YgbWVtb3J5IGNvcnJ1cHRpb24uIFRoZXJlZm9yZSwgdGhlIE5lZWRzS01TQU4gZmxhZyB3b3VsZCBiZSBmYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTQ6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBzdGFsZSBwb2ludGVyIGlzc3VlIGluIGBpcDZfZmluaXNoX291dHB1dDJgLiBUaGUgYGx3dHVubmVsX3htaXQoKWAgZnVuY3Rpb24gY2FuIG1vZGlmeSBvciByZWFsbG9jYXRlIHRoZSBgc2tiYCAoZS5nLiwgdmlhIGBwc2tiX2V4cGFuZF9oZWFkYCksIHdoaWNoIGludmFsaWRhdGVzIHRoZSBwcmV2aW91c2x5IHN0b3JlZCBgaGRyYCBhbmQgYGRhZGRyYCBwb2ludGVycy4gVXNpbmcgdGhlc2Ugc3RhbGUgcG9pbnRlcnMgbGF0ZXIgaW4gdGhlIGZ1bmN0aW9uIGxlYWRzIHRvIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzLiBUaGVzZSB0eXBlcyBvZiBtZW1vcnkgY29ycnVwdGlvbiBidWdzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHN0YWxlIHBvaW50ZXIgaXNzdWUgaW4gYGlwNl9maW5pc2hfb3V0cHV0MmAuIFRoZSBgbHd0dW5uZWxfeG1pdCgpYCBmdW5jdGlvbiBjYW4gbW9kaWZ5IG9yIHJlYWxsb2NhdGUgdGhlIGBza2JgIChlLmcuLCB2aWEgYHBza2JfZXhwYW5kX2hlYWRgKSwgd2hpY2ggaW52YWxpZGF0ZXMgdGhlIHByZXZpb3VzbHkgc3RvcmVkIGBoZHJgIGFuZCBgZGFkZHJgIHBvaW50ZXJzLiBVc2luZyB0aGVzZSBzdGFsZSBwb2ludGVycyBsYXRlciBpbiB0aGUgZnVuY3Rpb24gbGVhZHMgdG8gdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMuIFRoZXNlIHR5cGVzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTk6MzMuNjU5NjU1NTM0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc0NjE0Mjk3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiLFxuICAgIFwiTFdUVU5ORUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcDZfZmluaXNoX291dHB1dDJcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgc3RhbGUgcG9pbnRlciBpc3N1ZSBpbiBgaXA2X2ZpbmlzaF9vdXRwdXQyYC4gVGhlIGBsd3R1bm5lbF94bWl0KClgIGZ1bmN0aW9uIGNhbiBtb2RpZnkgb3IgcmVhbGxvY2F0ZSB0aGUgYHNrYmAgKGUuZy4sIHZpYSBgcHNrYl9leHBhbmRfaGVhZGApLCB3aGljaCBpbnZhbGlkYXRlcyB0aGUgcHJldmlvdXNseSBzdG9yZWQgYGhkcmAgYW5kIGBkYWRkcmAgcG9pbnRlcnMuIFVzaW5nIHRoZXNlIHN0YWxlIHBvaW50ZXJzIGxhdGVyIGluIHRoZSBmdW5jdGlvbiBsZWFkcyB0byB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3Nlcy4gVGhlc2UgdHlwZXMgb2YgbWVtb3J5IGNvcnJ1cHRpb24gYnVncyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiB0aGUgSVB2NiBvdXRwdXQgcGF0aCB3aGVuIGx3dHVubmVsX3htaXQgbW9kaWZpZXMgdGhlIHNrYi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2suXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjE5OjMzLjY1OTY2MTUwNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUzNDM4NDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWE5NmRkZmFmZGIxNWRkOGU4NjdjZWQ1MWI0YzFkM2Y0MjFiYjQyNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxNDoxOTozMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmNcXG5pbmRleCAzNjhlNGZhM2I0M2NhLi5kODkzYzNkYWNmZDYzIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xcbisrKyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xcbkBAIC0xMTYsNiArMTE2LDggQEAgc3RhdGljIGludCBpcDZfZmluaXNoX291dHB1dDIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpcXG4gXFxuIFxcdFxcdGlmIChyZXMgIT0gTFdUVU5ORUxfWE1JVF9DT05USU5VRSlcXG4gXFx0XFx0XFx0cmV0dXJuIHJlcztcXG4rXFx0XFx0aGRyID0gaXB2Nl9oZHIoc2tiKTtcXG4rXFx0XFx0ZGFkZHIgPSBcXHUwMDI2aGRyLVxcdTAwM2VkYWRkcjtcXG4gXFx0fVxcbiBcXG4gXFx0SVA2X1VQRF9QT19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX09VVCwgc2tiLVxcdTAwM2VsZW4pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxOTozNC4xMTM4MDMwNTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyMDgzMDM0NzQ5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCIsXG4gICAgXCJMV1RVTk5FTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwNl9maW5pc2hfb3V0cHV0MlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiB0aGUgSVB2NiBvdXRwdXQgcGF0aCB3aGVuIGx3dHVubmVsX3htaXQgbW9kaWZpZXMgdGhlIHNrYi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2suXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVhOTZkZGZhZmRiMTVkZDhlODY3Y2VkNTFiNGMxZDNmNDIxYmI0MjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxNDoxOTozMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9vdXRwdXQuYyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xuaW5kZXggMzY4ZTRmYTNiNDNjYS4uZDg5M2MzZGFjZmQ2MyAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L2lwNl9vdXRwdXQuY1xuKysrIGIvbmV0L2lwdjYvaXA2X291dHB1dC5jXG5AQCAtMTE2LDYgKzExNiw4IEBAIHN0YXRpYyBpbnQgaXA2X2ZpbmlzaF9vdXRwdXQyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqXG4gXG4gXHRcdGlmIChyZXMgIT0gTFdUVU5ORUxfWE1JVF9DT05USU5VRSlcbiBcdFx0XHRyZXR1cm4gcmVzO1xuK1x0XHRoZHIgPSBpcHY2X2hkcihza2IpO1xuK1x0XHRkYWRkciA9IFx1MDAyNmhkci1cdTAwM2VkYWRkcjtcbiBcdH1cbiBcbiBcdElQNl9VUERfUE9fU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9PVVQsIHNrYi1cdTAwM2VsZW4pO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTk6MzQuMTEzODA0MzA3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODIzMDc2MTgwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldHdvcmsgT3V0cHV0IEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgbGlrZSBpdCdzIG1ha2luZyBhIGNoYW5nZSB0byBgbmV0L2lwdjYvaXA2X291dHB1dC5jYC4gU3BlY2lmaWNhbGx5LCB0aGV5J3JlIG1vZGlmeWluZyB0aGUgYGlwNl9maW5pc2hfb3V0cHV0MmAgZnVuY3Rpb24uIFRoZSBjb2RlIHNuaXBwZXQgc2hvd3MgdGhlbSBhZGRpbmcgYSBjb3VwbGUgb2YgbGluZXM6XG5cbmBgYGNcblx0XHRoZHIgPSBpcHY2X2hkcihza2IpO1xuXHRcdGRhZGRyID0gXHUwMDI2aGRyLVx1MDAzZWRhZGRyO1xuYGBgXG5cbi4uLnJpZ2h0IGFmdGVyIHRoaXMgYGlmYCBzdGF0ZW1lbnQ6XG5cbmBgYGNcblx0XHRpZiAocmVzICE9IExXVFVOTkVMX1hNSVRfQ09OVElOVUUpXG5cdFx0XHRyZXR1cm4gcmVzO1xuYGBgXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIGludG8gYGlwNl9maW5pc2hfb3V0cHV0MmAgd2l0aGluIGBuZXQvaXB2Ni9pcDZfb3V0cHV0LmNgIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIHdoYXQgdGhpcyBjaGFuZ2UgaXMgYWxsIGFib3V0LiBOZWVkIHRvIHNlZSB3aGF0IGBoZHJgIGFuZCBgZGFkZHJgIGFyZSBiZWluZyB1c2VkIGZvciBoZXJlIGluIHJlbGF0aW9uIHRvIHRoZSBvdmVyYWxsIGZ1bmN0aW9uLiBIb3BlZnVsbHkgaXQncyBzdHJhaWdodGZvcndhcmQsIGJ1dCBhIGxpdHRsZSBjb250ZXh0IGZyb20gdGhlIG9yaWdpbmFsIGNvZGUgbmV2ZXIgaHVydC4gSSdsbCBjaGVjayBob3cgaXQgaGFuZGxlcyB0aGUgTGlnaHR3ZWlnaHQgVHVubmVsaW5nIChMV1RVTk5FTCkgcmV0dXJuIGNvZGUgZmlyc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxOTo0Mi4zNDQ1Njk3MjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjYvaXA2X291dHB1dC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEwMDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBJUFNUQVRTX01JQl9PVVRESVNDQVJEUyk7XFxuIDEwMTpcXHRcXHRcXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gMTAyOlxcdFxcdFxcdFxcdFxcdHJldHVybiAwO1xcbiAxMDM6XFx0XFx0XFx0XFx0fVxcbiAxMDQ6XFx0XFx0XFx0fVxcbiAxMDU6XFx0XFxuIDEwNjpcXHRcXHRcXHRJUDZfVVBEX1BPX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfT1VUTUNBU1QsIHNrYi1cXHUwMDNlbGVuKTtcXG4gMTA3OlxcdFxcdFxcdGlmIChJUFY2X0FERFJfTUNfU0NPUEUoZGFkZHIpIFxcdTAwM2M9IElQVjZfQUREUl9TQ09QRV9OT0RFTE9DQUwgXFx1MDAyNlxcdTAwMjZcXG4gMTA4OlxcdFxcdFxcdCAgICAhKGRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfTE9PUEJBQ0spKSB7XFxuIDEwOTpcXHRcXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gMTEwOlxcdFxcdFxcdFxcdHJldHVybiAwO1xcbiAxMTE6XFx0XFx0XFx0fVxcbiAxMTI6XFx0XFx0fVxcbiAxMTM6XFx0XFxuIDExNDpcXHRcXHRpZiAobHd0dW5uZWxfeG1pdF9yZWRpcmVjdChkc3QtXFx1MDAzZWx3dHN0YXRlKSkge1xcbiAxMTU6XFx0XFx0XFx0aW50IHJlcyA9IGx3dHVubmVsX3htaXQoc2tiKTtcXG4gMTE2OlxcdFxcbiAxMTc6XFx0XFx0XFx0aWYgKHJlcyAhPSBMV1RVTk5FTF9YTUlUX0NPTlRJTlVFKVxcbiAxMTg6XFx0XFx0XFx0XFx0cmV0dXJuIHJlcztcXG4gMTE5OlxcdFxcdFxcdGhkciA9IGlwdjZfaGRyKHNrYik7XFxuIDEyMDpcXHRcXHRcXHRkYWRkciA9IFxcdTAwMjZoZHItXFx1MDAzZWRhZGRyO1xcbiAxMjE6XFx0XFx0fVxcbiAxMjI6XFx0XFxuIDEyMzpcXHRcXHRJUDZfVVBEX1BPX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfT1VULCBza2ItXFx1MDAzZWxlbik7XFxuIDEyNDpcXHRcXG4gMTI1OlxcdFxcdG5leHRob3AgPSBydDZfbmV4dGhvcChkc3RfcnQ2X2luZm8oZHN0KSwgZGFkZHIpO1xcbiAxMjY6XFx0XFx0bmVpZ2ggPSBfX2lwdjZfbmVpZ2hfbG9va3VwX25vcmVmKGRldiwgbmV4dGhvcCk7XFxuIDEyNzpcXHRcXG4gMTI4OlxcdFxcdGlmIChJU19FUlJfT1JfTlVMTChuZWlnaCkpIHtcXG4gMTI5OlxcdFxcdFxcdGlmICh1bmxpa2VseSghbmVpZ2gpKVxcbiAxMzA6XFx0XFx0XFx0XFx0bmVpZ2ggPSBfX25laWdoX2NyZWF0ZShcXHUwMDI2bmRfdGJsLCBuZXh0aG9wLCBkZXYsIGZhbHNlKTtcXG4gMTMxOlxcdFxcdFxcdGlmIChJU19FUlIobmVpZ2gpKSB7XFxuIDEzMjpcXHRcXHRcXHRcXHRJUDZfSU5DX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfT1VUTk9ST1VURVMpO1xcbiAxMzM6XFx0XFx0XFx0XFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9ORUlHSF9DUkVBVEVGQUlMKTtcXG4gMTM0OlxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAxMzU6XFx0XFx0XFx0fVxcbiAxMzY6XFx0XFx0fVxcbiAxMzc6XFx0XFx0c29ja19jb25maXJtX25laWdoKHNrYiwgbmVpZ2gpO1xcbiAxMzg6XFx0XFx0cmV0ID0gbmVpZ2hfb3V0cHV0KG5laWdoLCBza2IsIGZhbHNlKTtcXG4gMTM5OlxcdFxcdHJldHVybiByZXQ7XFxuIDE0MDpcXHR9XFxuIDE0MTpcXHRcXG4gMTQyOlxcdHN0YXRpYyBpbnRcXG4gMTQzOlxcdGlwNl9maW5pc2hfb3V0cHV0X2dzb19zbG93cGF0aF9kcm9wKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxcbiAxNDQ6XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBtdHUpXFxuIDE0NTpcXHR7XFxuIDE0NjpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2VncywgKm5za2I7XFxuIDE0NzpcXHRcXHRuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcztcXG4gMTQ4OlxcdFxcdGludCByZXQgPSAwO1xcbiAxNDk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjE5OjQyLjM0NDY4MjA5M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMTE3NDU2NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVjZW50IElQdjYgT3V0cHV0IFBhdGggQnVnIEZpeCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgcHJldHR5IGNyaXRpY2FsIGJ1ZyByZWxhdGVkIHRvIHRoZSBgbHd0dW5uZWxfeG1pdGAgZnVuY3Rpb24uIEl0IHNlZW1zIHRoZXJlIHdhcyBhIHNjZW5hcmlvIHdoZXJlIHRoZSBTb2NrZXQgQnVmZmVyIChgc2tiYCkgY291bGQgYmUgbW9kaWZpZWQg4oCTIHBvdGVudGlhbGx5IHJlYWxsb2NhdGVkLCBJIGFzc3VtZSDigJMgd2l0aGluIHRoYXQgZnVuY3Rpb24uIFRoaXMsIGluIHR1cm4sIGNvdWxkIGludmFsaWRhdGUgY3JpdGljYWwgcG9pbnRlcnMgbGlrZSBgaGRyYCBhbmQgYGRhZGRyYCB0aGF0IG90aGVyIHBhcnRzIG9mIHRoZSBJUHY2IG91dHB1dCBwYXRoIHJlbHkgb24uIFRoYXQncyBhIGNsYXNzaWMgcmFjZSBjb25kaXRpb24gYW5kIGNvdWxkIGxlYWQgdG8gc29tZSByZWFsbHkgbmFzdHksIGhhcmQtdG8tZGVidWcgY3Jhc2hlcyBvciBjb3JydXB0aW9uLlxuXG5UaGlzIGlzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQdjYgb3V0cHV0IHBhdGgsIHNwZWNpZmljYWxseSBpbXBhY3Rpbmcgc2l0dWF0aW9ucyB3aGVyZSBMV1RVTk5FTCBpcyBiZWluZyB1c2VkLiBHaXZlbiB0aGF0IHBvdGVudGlhbCBmb3Igc3VidGxlIG1lbW9yeSBjb3JydXB0aW9uLCBJJ20gdGhpbmtpbmcgdGhpcyBpcyAqYWJzb2x1dGVseSogc29tZXRoaW5nIHdlIG5lZWQgdG8gZnV6eiBleHRlbnNpdmVseS4gV2Ugc2hvdWxkIHJlYWxseSBmb2N1cyBvdXIgZnV6emluZyBlZmZvcnRzIG9uIHRoZSBgaXA2X2ZpbmlzaF9vdXRwdXQyYCBmdW5jdGlvbi4gSXQncyBsaWtlbHkgaW52b2x2ZWQgZGlyZWN0bHkuXG5cbk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBMV1RVTk5FTGAgY29uZmlndXJhdGlvbi4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcy4gTGV0J3Mgc2VlLi4uIEknbGwgcHVsbCB1cCB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGF0IHNlY3Rpb24uIE9rYXksIEkndmUgZ290IHRoYXQgcmVhZHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMDUsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxOTo0Ny40NTY0MzE5NjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2MTc3OTg4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTFdUVU5ORUxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9NDQzPXNvdXJjZSBcXFwibmV0L2lmZS9LY29uZmlnXFxcIlxcbm5ldC9LY29uZmlnLTQ0NC1cXG5uZXQvS2NvbmZpZzo0NDU6Y29uZmlnIExXVFVOTkVMXFxubmV0L0tjb25maWctNDQ2LVxcdGJvb2wgXFxcIk5ldHdvcmsgbGlnaHQgd2VpZ2h0IHR1bm5lbHNcXFwiXFxuLS1cXG5uZXQvS2NvbmZpZy00NTItXFxubmV0L0tjb25maWc6NDUzOmNvbmZpZyBMV1RVTk5FTF9CUEZcXG5uZXQvS2NvbmZpZy00NTQtXFx0Ym9vbCBcXFwiRXhlY3V0ZSBCUEYgcHJvZ3JhbSBhcyByb3V0ZSBuZXh0aG9wIGFjdGlvblxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MTk6NDkuMjE4MjE4MzUxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY0MzgzMDUyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBMV1RVTk5FTC9JUFY2IENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uIOKAkyBzZWVtcyBsaWtlIGl0J3MgYnVpbHQgYXJvdW5kIGBMV1RVTk5FTGAsIHdoaWNoIGlzIHRoZSBrZXkgY29tcG9uZW50IGhlcmUuIEFuZCwgYXMgZXhwZWN0ZWQsIHdlIGFsc28gaGF2ZSB0byBkZWFsIHdpdGggYElQVjZgLiBUaGF0J3Mgc3RhbmRhcmQgZm9yIHRoaXMgdHlwZSBvZiBzZXR1cC5cblxuTm93LCBJIG5lZWQgdG8gemVybyBpbiBvbiBob3cgdGhpcyBpcyBhbGwgaW1wbGVtZW50ZWQuIEknbSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSB0aGF0IGBpcDZfZmluaXNoX291dHB1dDJgIGlzICp0aGUqIGNlbnRyYWwgZnVuY3Rpb24gdGhhdCdzIGJlZW4gbW9kaWZpZWQgaW4gdGhlIGxhdGVzdCBjaGFuZ2UuIE5lZWQgdG8gY29uZmlybSBub3RoaW5nIGVsc2Ugd2FzIHN1YnRseSBhbHRlcmVkLCB0aGF0J3MgY3J1Y2lhbC4gQWgsIHllcywgaXQgYXBwZWFycyB0byBiZSB0aGUgb25seSBvbmUgZGlyZWN0bHkgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UsIHdoaWNoIGFsaWducyB3aXRoIG15IGluaXRpYWwgYXNzZXNzbWVudC5cblxuT2theSwgbmV4dCBzdGVwLi4uIGxvb2tzIGxpa2Ugd2Ugd2lsbCBjYWxsIGBzZXQtcmVzdWx0c2Agd2hpY2ggaXMgYSBjcml0aWNhbCBmdW5jdGlvbiwgY29uZmlybWluZyBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MTUsIk91dHB1dFRva2VucyI6OTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxOTo1NC44NjIwNjU2MDhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMDgxNzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCIsXG4gICAgXCJMV1RVTk5FTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwNl9maW5pc2hfb3V0cHV0MlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiB0aGUgSVB2NiBvdXRwdXQgcGF0aCB3aGVuIGx3dHVubmVsX3htaXQgbW9kaWZpZXMgdGhlIHNrYi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2suXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiLFxuICAgIFwiTFdUVU5ORUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcDZfZmluaXNoX291dHB1dDJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gdGhlIElQdjYgb3V0cHV0IHBhdGggd2hlbiBsd3R1bm5lbF94bWl0IG1vZGlmaWVzIHRoZSBza2IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxOTo1NC45NDQxNTQ0OVoiLCJTZXEiOjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjE3NjkyMTUyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjE5OjU0Ljk0NDc2NzIxOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1NjE3NjMwMzkzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBzdGFsZSBwb2ludGVyIGlzc3VlIGluIGBpcDZfZmluaXNoX291dHB1dDJgLiBUaGUgYGx3dHVubmVsX3htaXQoKWAgZnVuY3Rpb24gY2FuIG1vZGlmeSBvciByZWFsbG9jYXRlIHRoZSBgc2tiYCAoZS5nLiwgdmlhIGBwc2tiX2V4cGFuZF9oZWFkYCksIHdoaWNoIGludmFsaWRhdGVzIHRoZSBwcmV2aW91c2x5IHN0b3JlZCBgaGRyYCBhbmQgYGRhZGRyYCBwb2ludGVycy4gVXNpbmcgdGhlc2Ugc3RhbGUgcG9pbnRlcnMgbGF0ZXIgaW4gdGhlIGZ1bmN0aW9uIGxlYWRzIHRvIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzLiBUaGVzZSB0eXBlcyBvZiBtZW1vcnkgY29ycnVwdGlvbiBidWdzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWE5NmRkZmFmZGIxNWRkOGU4NjdjZWQ1MWI0YzFkM2Y0MjFiYjQyNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDE0OjE5OjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X291dHB1dC5jIGIvbmV0L2lwdjYvaXA2X291dHB1dC5jXG5pbmRleCAzNjhlNGZhM2I0M2NhLi5kODkzYzNkYWNmZDYzIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvaXA2X291dHB1dC5jXG4rKysgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmNcbkBAIC0xMTYsNiArMTE2LDggQEAgc3RhdGljIGludCBpcDZfZmluaXNoX291dHB1dDIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpcbiBcbiBcdFx0aWYgKHJlcyAhPSBMV1RVTk5FTF9YTUlUX0NPTlRJTlVFKVxuIFx0XHRcdHJldHVybiByZXM7XG4rXHRcdGhkciA9IGlwdjZfaGRyKHNrYik7XG4rXHRcdGRhZGRyID0gXHUwMDI2aGRyLVx1MDAzZWRhZGRyO1xuIFx0fVxuIFxuIFx0SVA2X1VQRF9QT19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX09VVCwgc2tiLVx1MDAzZWxlbik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoxOTo1NC45NDQ3Njg0MTlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTU3MDA1OTMwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgSVB2NiBPdXRwdXQgQnVnIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBzZWVtcyB0byBiZSB0b3VjaGluZyBgbmV0L2lwdjYvaXA2X291dHB1dC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgaXA2X2ZpbmlzaF9vdXRwdXQyYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSB0aGV5J3ZlIGFkZGVkIHRoZXNlIGxpbmVzOlxuXG5gYGBjXG4rXHRcdGhkciA9IGlwdjZfaGRyKHNrYik7XG4rXHRcdGRhZGRyID0gXHUwMDI2aGRyLVx1MDAzZWRhZGRyO1xuYGBgXG5cbnJpZ2h0IGFmdGVyIHRoZSBjaGVjayBgaWYgKHJlcyAhPSBMV1RVTk5FTF9YTUlUX0NPTlRJTlVFKSByZXR1cm4gcmVzO2Agd2l0aGluIGBpcDZfZmluaXNoX291dHB1dDJgLiBIbW0sIHRoYXQncyBpbnRlcmVzdGluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoaXMgaXMgcHJvYmFibHkgYWRkcmVzc2luZyBhIHN1YnRsZSBidWcgcmVsYXRlZCB0byBsaWdodHdlaWdodCB0dW5uZWxzIChgbHd0dW5uZWxgKS4gVGhlIGxpa2VseSBzY2VuYXJpbyBpcyB0aGF0IHdpdGhpbiB0aGUgYGx3dHVubmVsX3htaXRgIHBhdGgsIGBoZHJgIG9yIGBkYWRkcmAgLSB0aGUgSVB2NiBoZWFkZXIgYW5kIGRlc3RpbmF0aW9uIGFkZHJlc3MgcG9pbnRlcnMgLSAqY291bGQqIGJlIGludmFsaWRhdGVkLCBjaGFuZ2VkLCBvciB0aGF0IHRoZSBgc2tiYCAoc29ja2V0IGJ1ZmZlcikgaXRzZWxmIG1pZ2h0IGJlIHJlYWxsb2NhdGVkIG9yIG1vZGlmaWVkLCBtYWtpbmcgdGhvc2UgcG9pbnRlcnMgc3RhbGUuIFRoYXQgd291bGQgbGVhZCB0byBtZW1vcnkgY29ycnVwdGlvbiBvciBpbmNvcnJlY3Qgcm91dGluZyBpbmZvcm1hdGlvbiBsYXRlciBvbiB3aGVuIHRoZSBjb2RlIHRyaWVzIHRvIHVzZSB0aG9zZSBwb2ludGVycyBhZnRlciBgbHd0dW5uZWxfeG1pdGAgY29tcGxldGVzLiBJdCdzIGEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBpc3N1ZS5cblxuSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IG9mIGBpcDZfZmluaXNoX291dHB1dDJgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBmaXggYW5kIHRoZSBleGFjdCBuYXR1cmUgb2YgdGhlIHBvc3NpYmxlIHJhY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgaW4gYGx3dHVubmVsX3htaXRgIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIElQdjYgaGVhZGVyIGFuZCBkZXN0aW5hdGlvbiBhZGRyZXNzLiBCdXQgdGhlIGFkZGVkIGNvZGUgc3Ryb25nbHkgc3VnZ2VzdHMgdGhleSdyZSB0cnlpbmcgdG8gcmUtZmV0Y2ggdGhlIGhlYWRlciBhbmQgZGVzdGluYXRpb24gYWRkcmVzcyAqYWZ0ZXIqIGBsd3R1bm5lbF94bWl0YCBoYXMgY29tcGxldGVkIHRvIGVuc3VyZSB0aG9zZSBwb2ludGVycyBhcmUgdmFsaWQuIFRoYXQncyB0aGUgbW9zdCBsaWtlbHkgZXhwbGFuYXRpb24sIGdpdmVuIG15IGV4cGVyaWVuY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoyMDowNC41MTQ4MzA2NTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NTk3ODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwNl9maW5pc2hfb3V0cHV0MlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9pcDZfb3V0cHV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvaXA2X291dHB1dC5jLTU5LVxcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYzo2MDpzdGF0aWMgaW50IGlwNl9maW5pc2hfb3V0cHV0MihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtNjEte1xcbi0tXFxubmV0L2lwdjYvaXA2X291dHB1dC5jPTE0Mz1pcDZfZmluaXNoX291dHB1dF9nc29fc2xvd3BhdGhfZHJvcChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYy0xNzEtXFx0XFx0ZXJyID0gc2Vncy1cXHUwMDNlbGVuIFxcdTAwM2UgbXR1ID9cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MTcyOlxcdFxcdFxcdGlwNl9mcmFnbWVudChuZXQsIHNrLCBzZWdzLCBpcDZfZmluaXNoX291dHB1dDIpIDpcXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MTczOlxcdFxcdFxcdGlwNl9maW5pc2hfb3V0cHV0MihuZXQsIHNrLCBzZWdzKTtcXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTc0LVxcdFxcdGlmIChlcnIgXFx1MDAyNlxcdTAwMjYgcmV0ID09IDApXFxuLS1cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM9MTgxPXN0YXRpYyBpbnQgaXA2X2ZpbmlzaF9vdXRwdXRfZ3NvKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2lwdjYvaXA2X291dHB1dC5jLTE4Ni1cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MTg3OlxcdHJldHVybiBpcDZfZmluaXNoX291dHB1dDIobmV0LCBzaywgc2tiKTtcXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTg4LX1cXG4tLVxcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYz0xOTA9c3RhdGljIGludCBfX2lwNl9maW5pc2hfb3V0cHV0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvaXA2X291dHB1dC5jLTIwNy1cXHQgICAgKElQNkNCKHNrYiktXFx1MDAzZWZyYWdfbWF4X3NpemUgXFx1MDAyNlxcdTAwMjYgc2tiLVxcdTAwM2VsZW4gXFx1MDAzZSBJUDZDQihza2IpLVxcdTAwM2VmcmFnX21heF9zaXplKSkpXFxubmV0L2lwdjYvaXA2X291dHB1dC5jOjIwODpcXHRcXHRyZXR1cm4gaXA2X2ZyYWdtZW50KG5ldCwgc2ssIHNrYiwgaXA2X2ZpbmlzaF9vdXRwdXQyKTtcXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMjA5LVxcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYzoyMTA6XFx0cmV0dXJuIGlwNl9maW5pc2hfb3V0cHV0MihuZXQsIHNrLCBza2IpO1xcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYy0yMTEtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoyMDowNC41NjA0MzU5NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzkyMjM0OTE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIGBpcDZfZmluaXNoX291dHB1dDJgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IElQdjYgb3V0cHV0IGlzIGZpbmFsaXplZC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgd2hlcmUgdGhlIHBhY2tldCBnZXRzIGFsbCBpdHMgZmluYWwgdG91Y2hlcyBiZWZvcmUgaGl0dGluZyB0aGUgd2lyZS4gVGltZSB0byBjcmFjayBvcGVuIGBuZXQvaXB2Ni9pcDZfb3V0cHV0LmNgIGFuZCB6ZXJvIGluIG9uIHRoZSBgaXA2X2ZpbmlzaF9vdXRwdXQyYCBmdW5jdGlvbi4gSSBhbnRpY2lwYXRlIHRoaXMgZnVuY3Rpb24gYmVpbmcgY3JpdGljYWwgaW4gdGVybXMgb2YgZW5jYXBzdWxhdGlvbiBkZXRhaWxzLCBjaGVja3N1bSBmaW5hbGl6YXRpb24gKGlmIG5vdCBkb25lIGVhcmxpZXIpLCBhbmQgcG90ZW50aWFsbHkgaGVhZGVyIG1vZGlmaWNhdGlvbnMgYmFzZWQgb24gdGhlIHNwZWNpZmljIG5ldHdvcmsgY2hhcmFjdGVyaXN0aWNzIG9yIHBvbGljaWVzIHRoYXQgYXJlIGF0IHBsYXkuIEknbSBlc3BlY2lhbGx5IGtlZW4gdG8gc2VlIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBsb3ctbGV2ZWwgZnVuY3Rpb25zIHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdGFjay4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyBhcmUgd2FpdGluZyB0byBiZSB1bmNvdmVyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNzUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNDoyMDozOC40ODI3ODc2ODlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3NTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY2L2lwNl9vdXRwdXQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNjA6XFx0c3RhdGljIGludCBpcDZfZmluaXNoX291dHB1dDIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuICA2MTpcXHR7XFxuICA2MjpcXHRcXHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QgPSBza2JfZHN0KHNrYik7XFxuICA2MzpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gZHN0X2Rldl9yY3UoZHN0KTtcXG4gIDY0OlxcdFxcdHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYgPSBpcDZfZHN0X2lkZXYoZHN0KTtcXG4gIDY1OlxcdFxcdHVuc2lnbmVkIGludCBoaF9sZW4gPSBMTF9SRVNFUlZFRF9TUEFDRShkZXYpO1xcbiAgNjY6XFx0XFx0Y29uc3Qgc3RydWN0IGluNl9hZGRyICpkYWRkciwgKm5leHRob3A7XFxuICA2NzpcXHRcXHRzdHJ1Y3QgaXB2NmhkciAqaGRyO1xcbiAgNjg6XFx0XFx0c3RydWN0IG5laWdoYm91ciAqbmVpZ2g7XFxuICA2OTpcXHRcXHRpbnQgcmV0O1xcbiAgNzA6XFx0XFxuICA3MTpcXHRcXHQvKiBCZSBwYXJhbm9pZCwgcmF0aGVyIHRoYW4gdG9vIGNsZXZlci4gKi9cXG4gIDcyOlxcdFxcdGlmICh1bmxpa2VseShoaF9sZW4gXFx1MDAzZSBza2JfaGVhZHJvb20oc2tiKSkgXFx1MDAyNlxcdTAwMjYgZGV2LVxcdTAwM2VoZWFkZXJfb3BzKSB7XFxuICA3MzpcXHRcXHRcXHQvKiBpZGV2IHN0YXlzIGFsaXZlIGJlY2F1c2Ugd2UgaG9sZCByY3VfcmVhZF9sb2NrKCkuICovXFxuICA3NDpcXHRcXHRcXHRza2IgPSBza2JfZXhwYW5kX2hlYWQoc2tiLCBoaF9sZW4pO1xcbiAgNzU6XFx0XFx0XFx0aWYgKCFza2IpIHtcXG4gIDc2OlxcdFxcdFxcdFxcdElQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9PVVRESVNDQVJEUyk7XFxuICA3NzpcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gIDc4OlxcdFxcdFxcdH1cXG4gIDc5OlxcdFxcdH1cXG4gIDgwOlxcdFxcbiAgODE6XFx0XFx0aGRyID0gaXB2Nl9oZHIoc2tiKTtcXG4gIDgyOlxcdFxcdGRhZGRyID0gXFx1MDAyNmhkci1cXHUwMDNlZGFkZHI7XFxuICA4MzpcXHRcXHRpZiAodW5saWtlbHkoaXB2Nl9hZGRyX2lzX211bHRpY2FzdChkYWRkcikpKSB7XFxuICA4NDpcXHRcXHRcXHRpZiAoIShkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX0xPT1BCQUNLKSBcXHUwMDI2XFx1MDAyNiBza19tY19sb29wKHNrKSBcXHUwMDI2XFx1MDAyNlxcbiAgODU6XFx0XFx0XFx0ICAgICgobXJvdXRlNl9pc19zb2NrZXQobmV0LCBza2IpIFxcdTAwMjZcXHUwMDI2XFxuICA4NjpcXHRcXHRcXHQgICAgICEoSVA2Q0Ioc2tiKS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUDZTS0JfRk9SV0FSREVEKSkgfHxcXG4gIDg3OlxcdFxcdFxcdCAgICAgaXB2Nl9jaGtfbWNhc3RfYWRkcihkZXYsIGRhZGRyLCBcXHUwMDI2aGRyLVxcdTAwM2VzYWRkcikpKSB7XFxuICA4ODpcXHRcXHRcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqbmV3c2tiID0gc2tiX2Nsb25lKHNrYiwgR0ZQX0FUT01JQyk7XFxuICA4OTpcXHRcXG4gIDkwOlxcdFxcdFxcdFxcdC8qIERvIG5vdCBjaGVjayBmb3IgSUZGX0FMTE1VTFRJOyBtdWx0aWNhc3Qgcm91dGluZ1xcbiAgOTE6XFx0XFx0XFx0XFx0ICAgaXMgbm90IHN1cHBvcnRlZCBpbiBhbnkgY2FzZS5cXG4gIDkyOlxcdFxcdFxcdFxcdCAqL1xcbiAgOTM6XFx0XFx0XFx0XFx0aWYgKG5ld3NrYilcXG4gIDk0OlxcdFxcdFxcdFxcdFxcdE5GX0hPT0soTkZQUk9UT19JUFY2LCBORl9JTkVUX1BPU1RfUk9VVElORyxcXG4gIDk1OlxcdFxcdFxcdFxcdFxcdFxcdG5ldCwgc2ssIG5ld3NrYiwgTlVMTCwgbmV3c2tiLVxcdTAwM2VkZXYsXFxuICA5NjpcXHRcXHRcXHRcXHRcXHRcXHRkZXZfbG9vcGJhY2tfeG1pdCk7XFxuICA5NzpcXHRcXG4gIDk4OlxcdFxcdFxcdFxcdGlmIChoZHItXFx1MDAzZWhvcF9saW1pdCA9PSAwKSB7XFxuICA5OTpcXHRcXHRcXHRcXHRcXHRJUDZfSU5DX1NUQVRTKG5ldCwgaWRldixcXG4gMTAwOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIElQU1RBVFNfTUlCX09VVERJU0NBUkRTKTtcXG4gMTAxOlxcdFxcdFxcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbiAxMDI6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDEwMzpcXHRcXHRcXHRcXHR9XFxuIDEwNDpcXHRcXHRcXHR9XFxuIDEwNTpcXHRcXG4gMTA2OlxcdFxcdFxcdElQNl9VUERfUE9fU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9PVVRNQ0FTVCwgc2tiLVxcdTAwM2VsZW4pO1xcbiAxMDc6XFx0XFx0XFx0aWYgKElQVjZfQUREUl9NQ19TQ09QRShkYWRkcikgXFx1MDAzYz0gSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCBcXHUwMDI2XFx1MDAyNlxcbiAxMDg6XFx0XFx0XFx0ICAgICEoZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9MT09QQkFDSykpIHtcXG4gMTA5OlxcdFxcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbiAxMTA6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDExMTpcXHRcXHRcXHR9XFxuIDExMjpcXHRcXHR9XFxuIDExMzpcXHRcXG4gMTE0OlxcdFxcdGlmIChsd3R1bm5lbF94bWl0X3JlZGlyZWN0KGRzdC1cXHUwMDNlbHd0c3RhdGUpKSB7XFxuIDExNTpcXHRcXHRcXHRpbnQgcmVzID0gbHd0dW5uZWxfeG1pdChza2IpO1xcbiAxMTY6XFx0XFxuIDExNzpcXHRcXHRcXHRpZiAocmVzICE9IExXVFVOTkVMX1hNSVRfQ09OVElOVUUpXFxuIDExODpcXHRcXHRcXHRcXHRyZXR1cm4gcmVzO1xcbiAxMTk6XFx0XFx0XFx0aGRyID0gaXB2Nl9oZHIoc2tiKTtcXG4gMTIwOlxcdFxcdFxcdGRhZGRyID0gXFx1MDAyNmhkci1cXHUwMDNlZGFkZHI7XFxuIDEyMTpcXHRcXHR9XFxuIDEyMjpcXHRcXG4gMTIzOlxcdFxcdElQNl9VUERfUE9fU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9PVVQsIHNrYi1cXHUwMDNlbGVuKTtcXG4gMTI0OlxcdFxcbiAxMjU6XFx0XFx0bmV4dGhvcCA9IHJ0Nl9uZXh0aG9wKGRzdF9ydDZfaW5mbyhkc3QpLCBkYWRkcik7XFxuIDEyNjpcXHRcXHRuZWlnaCA9IF9faXB2Nl9uZWlnaF9sb29rdXBfbm9yZWYoZGV2LCBuZXh0aG9wKTtcXG4gMTI3OlxcdFxcbiAxMjg6XFx0XFx0aWYgKElTX0VSUl9PUl9OVUxMKG5laWdoKSkge1xcbiAxMjk6XFx0XFx0XFx0aWYgKHVubGlrZWx5KCFuZWlnaCkpXFxuIDEzMDpcXHRcXHRcXHRcXHRuZWlnaCA9IF9fbmVpZ2hfY3JlYXRlKFxcdTAwMjZuZF90YmwsIG5leHRob3AsIGRldiwgZmFsc2UpO1xcbiAxMzE6XFx0XFx0XFx0aWYgKElTX0VSUihuZWlnaCkpIHtcXG4gMTMyOlxcdFxcdFxcdFxcdElQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9PVVROT1JPVVRFUyk7XFxuIDEzMzpcXHRcXHRcXHRcXHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX05FSUdIX0NSRUFURUZBSUwpO1xcbiAxMzQ6XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDEzNTpcXHRcXHRcXHR9XFxuIDEzNjpcXHRcXHR9XFxuIDEzNzpcXHRcXHRzb2NrX2NvbmZpcm1fbmVpZ2goc2tiLCBuZWlnaCk7XFxuIDEzODpcXHRcXHRyZXQgPSBuZWlnaF9vdXRwdXQobmVpZ2gsIHNrYiwgZmFsc2UpO1xcbiAxMzk6XFx0XFx0cmV0dXJuIHJldDtcXG4gMTQwOlxcdH1cXG4gMTQxOlxcdFxcbiAxNDI6XFx0c3RhdGljIGludFxcbiAxNDM6XFx0aXA2X2ZpbmlzaF9vdXRwdXRfZ3NvX3Nsb3dwYXRoX2Ryb3Aoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXFxuIDE0NDpcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IG10dSlcXG4gMTQ1OlxcdHtcXG4gMTQ2OlxcdFxcdHN0cnVjdCBza19idWZmICpzZWdzLCAqbnNrYjtcXG4gMTQ3OlxcdFxcdG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzO1xcbiAxNDg6XFx0XFx0aW50IHJldCA9IDA7XFxuIDE0OTpcXHRcXG4gMTUwOlxcdFxcdC8qIFBsZWFzZSBzZWUgY29ycmVzcG9uZGluZyBjb21tZW50IGluIGlwX2ZpbmlzaF9vdXRwdXRfZ3NvXFxuIDE1MTpcXHRcXHQgKiBkZXNjcmliaW5nIHRoZSBjYXNlcyB3aGVyZSBHU08gc2VnbWVudCBsZW5ndGggZXhjZWVkcyB0aGVcXG4gMTUyOlxcdFxcdCAqIGVncmVzcyBNVFUuXFxuIDE1MzpcXHRcXHQgKi9cXG4gMTU0OlxcdFxcdGZlYXR1cmVzID0gbmV0aWZfc2tiX2ZlYXR1cmVzKHNrYik7XFxuIDE1NTpcXHRcXHRzZWdzID0gc2tiX2dzb19zZWdtZW50KHNrYiwgZmVhdHVyZXMgXFx1MDAyNiB+TkVUSUZfRl9HU09fTUFTSyk7XFxuIDE1NjpcXHRcXHRpZiAoSVNfRVJSX09SX05VTEwoc2VncykpIHtcXG4gMTU3OlxcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbiAxNTg6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDE1OTpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE0OjIwOjM4LjQ4Mjk0NzE3OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjYzODA5NTI2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1lbW9yeSBTYWZldHkgSXNzdWUqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIG15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSBjbGFzc2ljIHN0YWxlIHBvaW50ZXIgaXNzdWUsIHNwZWNpZmljYWxseSBhIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBUaGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBgbHd0dW5uZWxfeG1pdChza2IpYCBmdW5jdGlvbiBjYW4gbW9kaWZ5IHRoZSBgc2tiYCBzdHJ1Y3R1cmUsIGFuZCBpdCBsb29rcyBsaWtlIHRoaXMgaXMgd2hlcmUgdGhlIGBza2JgJ3MgaGVhZCBpcyBiZWluZyByZWFsbG9jYXRlZC4gVGhpcyBtZWFucyB0aGF0IGFueSBwb2ludGVycyBkZXJpdmVkIGZyb20gdGhlIGBza2JgICpiZWZvcmUqIHRoZSBjYWxsIHRvIGBsd3R1bm5lbF94bWl0YCwgc3VjaCBhcyBgaGRyYCBhbmQgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgYGRhZGRyYCwgbWlnaHQgYmVjb21lIGludmFsaWQg4oCTIHRoZXkgbWlnaHQgcG9pbnQgdG8gZnJlZWQgbWVtb3J5IG9yLCBldmVuIHdvcnNlLCBqdXN0IHRvIHRoZSB3cm9uZyBvZmZzZXQgd2l0aGluIHRoZSBwYWNrZXQuXG5cbklmIHdlIHRoZW4gdHJ5IHRvIHVzZSB0aG9zZSBzdGFsZSBwb2ludGVycyBsYXRlciwgbGlrZSBpbiBgcnQ2X25leHRob3AoZHN0X3J0Nl9pbmZvKGRzdCksIGRhZGRyKWAsIHdlJ3JlIGdvaW5nIHRvIHRyaWdnZXIgYSBjcmFzaC4gIEFuZCBpdCdzIG5vdCBkdWUgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkuIGBsd3R1bm5lbF94bWl0YCBtaWdodCBwdXNoIGhlYWRlcnMsIGJ1dCB0aG9zZSBoZWFkZXJzIGdldCBpbml0aWFsaXplZCwgc28gaXQncyBub3QgYSBjYXNlIHdoZXJlIHdlIGhhdmUgYW4gaW5mb3JtYXRpb24gbGVhay4gSXQncyBhIG1lbW9yeSBjb3JydXB0aW9uIGJ1Zy4gVGhlIG1lbW9yeSB0aGF0IHRoZSBwb2ludGVycyBwb2ludCB0byBtYXkgbm90IGJlIHZhbGlkIGFueW1vcmUuIFNvLCB0aGUgaXNzdWUgaXMgdGhhdCB0aGUgYHNrYmAncyBkYXRhIHBvaW50ZXIgY2FuIGNoYW5nZSBpZiBgc2tiX2V4cGFuZF9oZWFkYCBvciBgcHNrYl9leHBhbmRfaGVhZGAgZ2V0cyBjYWxsZWQgaW5zaWRlIGBsd3R1bm5lbF94bWl0YC5cblxuVGhpcyBpcyBleGFjdGx5IHRoZSB0eXBlIG9mIGJ1ZyB0aGF0IEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTQU5pdGl6ZXIpIGlzIGRlc2lnbmVkIHRvIGNhdGNoLiBJdCB3aWxsIGRldGVjdCB0aGUgaWxsZWdhbCBtZW1vcnkgYWNjZXNzLiAgS01TQU4gaXNuJ3QgbmVlZGVkIGhlcmUuIEtBU0FOIGlzIHBlcmZlY3RseSBzdWl0YWJsZSBmb3IgdGhpcyBraW5kIG9mIG1lbW9yeSBjb3JydXB0aW9uLiBUaGVyZWZvcmUsIHRoZSBOZWVkc0tNU0FOIGZsYWcgd291bGQgYmUgZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMTAsIk91dHB1dFRva2VucyI6MTYxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTQ6MjA6NTEuMTIxMDQ2MTUyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHN0YWxlIHBvaW50ZXIgaXNzdWUgaW4gYGlwNl9maW5pc2hfb3V0cHV0MmAuIFRoZSBgbHd0dW5uZWxfeG1pdCgpYCBmdW5jdGlvbiBjYW4gbW9kaWZ5IG9yIHJlYWxsb2NhdGUgdGhlIGBza2JgIChlLmcuLCB2aWEgYHBza2JfZXhwYW5kX2hlYWRgKSwgd2hpY2ggaW52YWxpZGF0ZXMgdGhlIHByZXZpb3VzbHkgc3RvcmVkIGBoZHJgIGFuZCBgZGFkZHJgIHBvaW50ZXJzLiBVc2luZyB0aGVzZSBzdGFsZSBwb2ludGVycyBsYXRlciBpbiB0aGUgZnVuY3Rpb24gbGVhZHMgdG8gdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMuIFRoZXNlIHR5cGVzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHN0YWxlIHBvaW50ZXIgaXNzdWUgaW4gYGlwNl9maW5pc2hfb3V0cHV0MmAuIFRoZSBgbHd0dW5uZWxfeG1pdCgpYCBmdW5jdGlvbiBjYW4gbW9kaWZ5IG9yIHJlYWxsb2NhdGUgdGhlIGBza2JgIChlLmcuLCB2aWEgYHBza2JfZXhwYW5kX2hlYWRgKSwgd2hpY2ggaW52YWxpZGF0ZXMgdGhlIHByZXZpb3VzbHkgc3RvcmVkIGBoZHJgIGFuZCBgZGFkZHJgIHBvaW50ZXJzLiBVc2luZyB0aGVzZSBzdGFsZSBwb2ludGVycyBsYXRlciBpbiB0aGUgZnVuY3Rpb24gbGVhZHMgdG8gdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMuIFRoZXNlIHR5cGVzIG9mIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgc28gYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowfdpws[1] Phase: Succeeded StartedAt: 2026-08-12 14:21:02 +0000 UTC FinishedAt: 2026-08-12 14:21:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-12 14:21:02 +0000 UTC FinishedAt: 2026-08-12 14:21:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[2] Phase: Succeeded StartedAt: 2026-08-12 14:21:02 +0000 UTC FinishedAt: 2026-08-12 18:01:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:21:03 +0000 UTC FinishedAt: 2026-08-12 18:01:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:21:03 +0000 UTC FinishedAt: 2026-08-12 14:21:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:21:03 +0000 UTC FinishedAt: 2026-08-12 14:21:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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-workflowfdpws/series-workflowfdpws-convert-artifact-1939975483/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:21:13 +0000 UTC FinishedAt: 2026-08-12 14:37:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:21:13 +0000 UTC FinishedAt: 2026-08-12 14:37:30 +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:*1b754261-ca1e-4d4d-a8aa-f68e11ab06d0,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-workflowfdpws/series-workflowfdpws-convert-artifact-1939975483/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": "d187aaa8-7378-41eb-b06e-38c98fce97e8", "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-workflowfdpws/series-workflowfdpws-build-action-1131854713/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:21:13 +0000 UTC FinishedAt: 2026-08-12 14:37:20 +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:*1b754261-ca1e-4d4d-a8aa-f68e11ab06d0,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-workflowfdpws/series-workflowfdpws-convert-artifact-1939975483/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": "d187aaa8-7378-41eb-b06e-38c98fce97e8", "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-workflowfdpws/series-workflowfdpws-build-action-1131854713/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:37:30 +0000 UTC FinishedAt: 2026-08-12 14:37:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:37:30 +0000 UTC FinishedAt: 2026-08-12 14:37:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:37:30 +0000 UTC FinishedAt: 2026-08-12 14:37:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:37:30 +0000 UTC FinishedAt: 2026-08-12 14:37:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-workflowfdpws/series-workflowfdpws-convert-artifact-4136508306/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:37:40 +0000 UTC FinishedAt: 2026-08-12 14:39:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:37:40 +0000 UTC FinishedAt: 2026-08-12 14:39:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d187aaa8-7378-41eb-b06e-38c98fce97e8,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-workflowfdpws/series-workflowfdpws-build-action-1131854713/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-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:39:45 +0000 UTC FinishedAt: 2026-08-12 14:39:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:39:45 +0000 UTC FinishedAt: 2026-08-12 14:39:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:39:45 +0000 UTC FinishedAt: 2026-08-12 14:57:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:39:45 +0000 UTC FinishedAt: 2026-08-12 14:57:24 +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:*1b754261-ca1e-4d4d-a8aa-f68e11ab06d0,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-workflowfdpws/series-workflowfdpws-convert-artifact-4136508306/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": "b02b3ce9-9cd3-4794-825d-9cde2eceb37b", "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-workflowfdpws/series-workflowfdpws-build-action-2313590822/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:39:45 +0000 UTC FinishedAt: 2026-08-12 14:57:14 +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:*1b754261-ca1e-4d4d-a8aa-f68e11ab06d0,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-workflowfdpws/series-workflowfdpws-convert-artifact-4136508306/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": "b02b3ce9-9cd3-4794-825d-9cde2eceb37b", "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-workflowfdpws/series-workflowfdpws-build-action-2313590822/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:57:24 +0000 UTC FinishedAt: 2026-08-12 14:57:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:57:24 +0000 UTC FinishedAt: 2026-08-12 14:57:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:57:24 +0000 UTC FinishedAt: 2026-08-12 14:59:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:57:24 +0000 UTC FinishedAt: 2026-08-12 14:59:18 +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:*b02b3ce9-9cd3-4794-825d-9cde2eceb37b,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-workflowfdpws/series-workflowfdpws-build-action-2313590822/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-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:59:28 +0000 UTC FinishedAt: 2026-08-12 18:01:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:59:28 +0000 UTC FinishedAt: 2026-08-12 18:01:50 +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":["ip6_finish_output2"],"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:*d187aaa8-7378-41eb-b06e-38c98fce97e8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b02b3ce9-9cd3-4794-825d-9cde2eceb37b,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-workflowfdpws/series-workflowfdpws-build-action-1131854713/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-workflowfdpws/series-workflowfdpws-build-action-2313590822/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:59:28 +0000 UTC FinishedAt: 2026-08-12 14:59:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:59:28 +0000 UTC FinishedAt: 2026-08-12 14:59:33 +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":["ip6_finish_output2"],"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-workflowfdpws/series-workflowfdpws-convert-artifact-261232615/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:59:28 +0000 UTC FinishedAt: 2026-08-12 14:59:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:59:28 +0000 UTC FinishedAt: 2026-08-12 14:59:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:59:28 +0000 UTC FinishedAt: 2026-08-12 14:59:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:59:38 +0000 UTC FinishedAt: 2026-08-12 18:01:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdpws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"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":["ip6_finish_output2"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","LWTUNNEL"],"series_id":"c177252a-5d06-466a-915c-e962d8e7be95","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-12 14:59:38 +0000 UTC FinishedAt: 2026-08-12 18:01:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d187aaa8-7378-41eb-b06e-38c98fce97e8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b02b3ce9-9cd3-4794-825d-9cde2eceb37b,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-workflowfdpws/series-workflowfdpws-build-action-1131854713/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-workflowfdpws/series-workflowfdpws-build-action-2313590822/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-workflowfdpws/series-workflowfdpws-convert-artifact-261232615/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,}