Name: series-workflowbc7xv Phase: Succeeded StartedAt: 2026-08-04 10:09:02 +0000 UTC FinishedAt: 2026-08-04 15:24:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[0] Phase: Succeeded StartedAt: 2026-08-04 10:09:02 +0000 UTC FinishedAt: 2026-08-04 11:41:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 10:09:02 +0000 UTC FinishedAt: 2026-08-04 11:41:43 +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": "2a33516f9ef59ad11844d4fc152f889449b5daf3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6_SEG6_LWTUNNEL", "NET_L3_MASTER_DEV" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2a33516f9ef59ad11844d4fc152f889449b5daf3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6_SEG6_LWTUNNEL", "NET_L3_MASTER_DEV" ], "series_id": "61344096-f6d8-42b2-8cc8-06773830e2d7" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "input_action_end_dt4", "input_action_end_dt46" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjZfU0VHNl9MV1RVTk5FTCYjMzQ7LAogICAgJiMzNDtORVRfTDNfTUFTVEVSX0RFViYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lucHV0X2FjdGlvbl9lbmRfZHQ0JiMzNDssCiAgICAmIzM0O2lucHV0X2FjdGlvbl9lbmRfZHQ0NiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBpbiB0aGUgSVB2NiBTZWdtZW50IFJvdXRpbmcgKFNSdjYpIGxvY2FsIHByb2Nlc3NpbmcgY29kZSB3aGVuIGRlY2Fwc3VsYXRpbmcgSVB2NCBwYWNrZXRzIChFbmQuRFQ0L0VuZC5EVDQ2IGFjdGlvbnMpLiBJdCBjbGVhcnMgdGhlIElQQ0IgY29udHJvbCBibG9jayBhbmQgc2V0cyB0aGUgaWlmLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDZmYmM4YzgyMDI5YjFmM2Y3NzliNmVjNDQxYjU5YjJkZjhhN2JlZWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDExOjQwOjI5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L3NlZzZfbG9jYWwuYyBiL25ldC9pcHY2L3NlZzZfbG9jYWwuY1xuaW5kZXggMmI0MWU0YzBkZGRkMS4uZDAzYjM3N2Y1ZGE5ZSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3NlZzZfbG9jYWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvc2VnNl9sb2NhbC5jXG5AQCAtMTE4Niw2ICYjNDM7MTE4Niw5IEBAIHN0YXRpYyBpbnQgaW5wdXRfYWN0aW9uX2VuZF9kdDQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZihzdHJ1Y3QgaXBoZHIpKSlcbiBcdFx0Z290byBkcm9wO1xuIFxuJiM0MztcdG1lbXNldChJUENCKHNrYiksIDAsIHNpemVvZigqSVBDQihza2IpKSk7XG4mIzQzO1x0SVBDQihza2IpLVx1MDAzZWlpZiA9IHNrYi1cdTAwM2Vza2JfaWlmO1xuJiM0MztcbiBcdHNrYiA9IGVuZF9kdF92cmZfY29yZShza2IsIHNsd3QsIEFGX0lORVQpO1xuIFx0aWYgKCFza2IpXG4gXHRcdC8qIHBhY2tldCBoYXMgYmVlbiBwcm9jZXNzZWQgYW5kIGNvbnN1bWVkIGJ5IHRoZSBWUkYgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWNl9TRUc2X0xXVFVOTkVMJiMzNDssCiAgICAmIzM0O05FVF9MM19NQVNURVJfREVWJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW5wdXRfYWN0aW9uX2VuZF9kdDQmIzM0OywKICAgICYjMzQ7aW5wdXRfYWN0aW9uX2VuZF9kdDQ2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlIGluIHRoZSBJUHY2IFNlZ21lbnQgUm91dGluZyAoU1J2NikgbG9jYWwgcHJvY2Vzc2luZyBjb2RlIHdoZW4gZGVjYXBzdWxhdGluZyBJUHY0IHBhY2tldHMgKEVuZC5EVDQvRW5kLkRUNDYgYWN0aW9ucykuIEl0IGNsZWFycyB0aGUgSVBDQiBjb250cm9sIGJsb2NrIGFuZCBzZXRzIHRoZSBpaWYuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNmZiYzhjODIwMjliMWYzZjc3OWI2ZWM0NDFiNTliMmRmOGE3YmVlYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDQgMTE6NDA6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9zZWc2X2xvY2FsLmMgYi9uZXQvaXB2Ni9zZWc2X2xvY2FsLmMKaW5kZXggMmI0MWU0YzBkZGRkMS4uZDAzYjM3N2Y1ZGE5ZSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvc2VnNl9sb2NhbC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L3NlZzZfbG9jYWwuYwpAQCAtMTE4Niw2ICYjNDM7MTE4Niw5IEBAIHN0YXRpYyBpbnQgaW5wdXRfYWN0aW9uX2VuZF9kdDQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBzaXplb2Yoc3RydWN0IGlwaGRyKSkpCiAJCWdvdG8gZHJvcDsKIAomIzQzOwltZW1zZXQoSVBDQihza2IpLCAwLCBzaXplb2YoKklQQ0Ioc2tiKSkpOwomIzQzOwlJUENCKHNrYiktJmd0O2lpZiA9IHNrYi0mZ3Q7c2tiX2lpZjsKJiM0MzsKIAlza2IgPSBlbmRfZHRfdnJmX2NvcmUoc2tiLCBzbHd0LCBBRl9JTkVUKTsKIAlpZiAoIXNrYikKIAkJLyogcGFja2V0IGhhcyBiZWVuIHByb2Nlc3NlZCBhbmQgY29uc3VtZWQgYnkgdGhlIFZSRiAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDk1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgU3RhY2sgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG5ldC9pcHY2L3NlZzZfbG9jYWwuY2AsIHNwZWNpZmljYWxseSB0aGUgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRpbmcgYSBjb3VwbGUgb2YgaW1wb3J0YW50IGxpbmVzOiBgbWVtc2V0KElQQ0Ioc2tiKSwgMCwgc2l6ZW9mKCpJUENCKHNrYikpKTtgIGFuZCBgSVBDQihza2IpLSZndDtpaWYgPSBza2ItJmd0O3NrYl9paWY7YC4gUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgSVB2NiBTZWdtZW50IFJvdXRpbmcgKFNSdjYpIGxvY2FsIHByb2Nlc3NpbmcgY29kZSDigJMgcHJvYmFibHkgY2xlYW5pbmcgdXAgc29tZSBjb250cm9sIGJsb2NrIG9yIHNldHRpbmcgdGhlIGluZ3Jlc3MgaW50ZXJmYWNlLiBJbnRlcmVzdGluZy4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBhbmQgaWRlbnRpZnkgaG93IHRoaXMgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBmdW5jdGlvbiBpcyBpbnZva2VkLiBXZSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aGlzIGZ1bmN0aW9uOyB3aGF0IGNvbmZpZ3VyYXRpb25zLCBtb2R1bGVzLCBvciBuZXR3b3JrIGNvbmRpdGlvbnMgd291bGQgY2F1c2UgdGhpcyBjb2RlIHRvIGV4ZWN1dGU/IFRvIGdldCBhIHF1aWNrIG92ZXJ2aWV3LCBJIG5lZWQgdG8gZ3JlcCB0aGUgY29kZWJhc2UuIEkgd2lsbCBzdGFydCBieSBzZWFyY2hpbmcgZm9yIHRoZSBmdW5jdGlvbiBuYW1lIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgaXRzZWxmIGFuZCB0aGVuIGFsc28gYHNlZzZfbG9jYWwuY2AgdG8gc2VlIHRoZSBicm9hZGVyIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW5wdXRfYWN0aW9uX2VuZF9kdDQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9zZWc2X2xvY2FsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvc2VnNl9sb2NhbC5jPTExMzE9c3RhdGljIHN0cnVjdCBza19idWZmICplbmRfZHRfdnJmX2NvcmUoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTE3Ni1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMTc3OnN0YXRpYyBpbnQgaW5wdXRfYWN0aW9uX2VuZF9kdDQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMTc4LVx0XHRcdFx0c3RydWN0IHNlZzZfbG9jYWxfbHd0ICpzbHd0KVxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0xMzA0PXN0YXRpYyBpbnQgc2VnNl9lbmRfZHQ0Nl9idWlsZChzdHJ1Y3Qgc2VnNl9sb2NhbF9sd3QgKnNsd3QsIGNvbnN0IHZvaWQgKmNmZyxcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTMwOS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMzEwOnN0YXRpYyBpbnQgaW5wdXRfYWN0aW9uX2VuZF9kdDQ2KHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTMxMS1cdFx0XHRcdCBzdHJ1Y3Qgc2VnNl9sb2NhbF9sd3QgKnNsd3QpXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTEzMjEtXHRjYXNlIElQUFJPVE9fSVBJUDpcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMzIyOlx0XHRyZXR1cm4gaW5wdXRfYWN0aW9uX2VuZF9kdDQoc2tiLCBzbHd0KTtcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMzIzLVx0Y2FzZSBJUFBST1RPX0lQVjY6XG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTE0NzQ9c3RhdGljIHN0cnVjdCBzZWc2X2FjdGlvbl9kZXNjIHNlZzZfYWN0aW9uX3RhYmxlW10gPSB7XG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1MTgtI2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1MTk6XHRcdC5pbnB1dFx0XHQ9IGlucHV0X2FjdGlvbl9lbmRfZHQ0LFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1MjAtXHRcdC5zbHd0X29wc1x0PSB7XG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1NDUtI2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1NDY6XHRcdC5pbnB1dFx0XHQ9IGlucHV0X2FjdGlvbl9lbmRfZHQ0Nixcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTQ3LVx0XHQuc2x3dF9vcHNcdD0ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMDcKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OgoKKipEZWx2aW5nIGludG8gYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBhbmQgYHNlZzZfbG9jYWwuY2AqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAsIGFuZCBpbW1lZGlhdGVseSBJJiMzOTttIHRoaW5raW5nLCAmIzM0O3JpZ2h0LCB0aGlzIGlzIGNvbm5lY3RlZCB0byB0aGUgYENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVmAgY29uZmlndXJhdGlvbiBvcHRpb24uIEFuZCBpdCYjMzk7cyB0dWNrZWQgYXdheSBpbiB0aGUgYHNlZzZfYWN0aW9uX3RhYmxlYCwgd2hpY2ggZ2l2ZXMgbWUgYSBjbHVlIGFib3V0IGl0cyByb2xlLiYjMzQ7IEl0JiMzOTtzIGRlZmluaXRlbHkgYSBjb21wb25lbnQgb2YgdGhhdCBsYXJnZXIgbmV0d29yayBsYXllciBmdW5jdGlvbmFsaXR5LiBHaXZlbiB0aGF0IGNvbnRleHQsIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmb3IgYHNlZzZfbG9jYWwuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGludGVyYWN0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZXhhY3RseSB3aGF0IHRoaXMgZnVuY3Rpb24gZG9lcyB3aXRoaW4gdGhhdCBzcGVjaWZpYyBtb2R1bGUuIEkgbmVlZCB0byBnZXQgYSByZWFsbHkgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgaW50ZWdyYXRlcyB3aXRoIHRoZSBvdmVyYWxsIHN5c3RlbSBiZWhhdmlvciwgZ2l2ZW4gdGhlIGNvbmZpZ3VyYXRpb24gc2V0dXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VnNl9sb2NhbC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvTWFrZWZpbGU9MjQ9aXB2Ni0kKENPTkZJR19ORVRMQUJFTCkgJiM0Mzs9IGNhbGlwc28ub1xubmV0L2lwdjYvTWFrZWZpbGU6MjU6aXB2Ni0kKENPTkZJR19JUFY2X1NFRzZfTFdUVU5ORUwpICYjNDM7PSBzZWc2X2lwdHVubmVsLm8gc2VnNl9sb2NhbC5vXG5uZXQvaXB2Ni9NYWtlZmlsZS0yNi1pcHY2LSQoQ09ORklHX0lQVjZfU0VHNl9ITUFDKSAmIzQzOz0gc2VnNl9obWFjLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTEwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipDaGVja2luZyB0aGUgRm91bmRhdGlvbjogSVB2NiBTZWdtZW50IFJvdXRpbmcgYW5kIGl0cyBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJIHNlZSB0aGF0IGBDT05GSUdfSVBWNl9TRUc2X0xXVFVOTkVMYCBpcyByZXF1aXJlZC4gVGhhdCB0ZWxscyBtZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIElQdjYgU2VnbWVudCBSb3V0aW5nIG92ZXIgTHdUdW4uIEJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyIGRvd24gdGhpcyBwYXRoLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGF2YWlsYWJsZSBhbmQsIGlkZWFsbHksIGVuYWJsZWQuIEl0JiMzOTtzIGNydWNpYWwgZm9yIHRoZSBzdWJzZXF1ZW50IHN0ZXBzLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgYEtjb25maWdgIGZpbGVzIGFuZCB2ZXJpZnkgdGhlIGRlZmluaXRpb24sIGRlcGVuZGVuY2llcywgYW5kIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucyBhc3NvY2lhdGVkIHdpdGggYENPTkZJR19JUFY2X1NFRzZfTFdUVU5ORUxgLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgY2x1ZXMgYWJvdXQgaXRzIGRlcGVuZGVuY2llcyBvbiBvdGhlciBmZWF0dXJlcyBvciBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBJJiMzOTttIGNvbnNpZGVyaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWc9Mjc5PWNvbmZpZyBJUFY2X1BJTVNNX1YyXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yODUtXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTI4Ny1cdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODY5CgkJCQkJCQlvdXRwdXQ6IDc0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqRGVjb25zdHJ1Y3RpbmcgSVBWNl9TRUc2X0xXVFVOTkVMIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBJUFY2X1NFRzZfTFdUVU5ORUxgLiBUaGF0IG1lYW5zIGRpdmluZyBkZWVwLiBJdCYjMzk7cyBub3QganVzdCBhIG1hdHRlciBvZiBsaXN0aW5nIHRoZW07IEkgbmVlZCB0byAqdW5kZXJzdGFuZCogdGhlbS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBwdWxsaW5nIHVwIHRoZSByZWxldmFudCBkb2N1bWVudGF0aW9uLCBjb2RlLCB3aGF0ZXZlciBzb3VyY2VzIGFyZSBhdmFpbGFibGUuIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgbG9vayBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBtb2R1bGUgZGVjbGFyYXRpb25zIGFuZCBhbnkgcmVsZXZhbnQgaW5jbHVkZSBmaWxlcyBmaXJzdC4gV2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkIHRvIG1ha2UgYElQVjZfU0VHNl9MV1RVTk5FTGAgZnVuY3Rpb25hbD8gV2hhdCBvdGhlciB1bmRlcmx5aW5nIG5ldHdvcmsgY29tcG9uZW50cywgb3Igc3Vic3lzdGVtcyBpcyB0aGlzIGxpa2VseSB0byBkZXBlbmQgb24/IFRoaW5raW5nIGFib3V0IHRoaXMsIEkgbmVlZCB0byBjb25zaWRlciB0aGF0IGl0JiMzOTtzIGxpa2VseSBkZXBlbmRlbnQgb24gSVB2NiwgYW5kIHByb2JhYmx5IGEgc3BlY2lmaWMgY29udHJvbCBwYXRoLgpJJiMzOTtsbCBhbHNvIGhhdmUgdG8gY29uc2lkZXIgdGhlIHBvdGVudGlhbCBpbnRlcnBsYXkgYmV0d2VlbiB0aGUgZGVwZW5kZW5jaWVzIGFuZCwgc2F5LCBmZWF0dXJlcy4gQSBkZXBlbmRlbmN5IGNvdWxkIGJlIGhhcmQsIG9yIHNvZnQuIEkgaGF2ZSB0byBzZWUgaG93IGl0IGNhbiBhZmZlY3QgdGhpbmdzIGRvd24gc3RyZWFtLgoKSSYjMzk7bGwgYmUgdGFraW5nIG5vdGVzIGFzIEkgZ287IHNrZXRjaGluZyBvdXQgYSBkaWFncmFtIHBlcmhhcHMuIEkgbmVlZCB0byBjbGVhcmx5IGRlZmluZSB0aGUgYm91bmRhcnkgYXJvdW5kIHRoaXMgZmVhdHVyZSwgc28gSSBjYW4gYmV0dGVyIHVuZGVyc3RhbmQgaXRzIGZ1bmN0aW9uLiBXaGF0IGFyZSB0aGUgKm1pbmltYWwqIGRlcGVuZGVuY2llcyBmb3IgYmFzaWMgZnVuY3Rpb25hbGl0eSwgYW5kIHRoZW4gd2hhdCBhcmUgdGhlIGRlcGVuZGVuY2llcyBmb3IgKmFkdmFuY2VkKiBmZWF0dXJlcy4gVGhpcyB3aWxsIHNob3cgbWUgd2hlcmUgdGhlIGNvbXBsZXhpdGllcyBjb3VsZCBhcmlzZSBhbmQgd2hlcmUgdG8gZm9jdXMgdGhlIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWc9Mjc5PWNvbmZpZyBJUFY2X1BJTVNNX1YyXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yODUtXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTI4Ny1cdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyODA6XHRcdGJvb2wgXCYjMzQ7SVB2NjogUElNLVNNIHZlcnNpb24gMiBzdXBwb3J0XCYjMzQ7XG4gMjgxOlx0XHRkZXBlbmRzIG9uIElQVjZfTVJPVVRFXG4gMjgyOlx0XHRoZWxwXG4gMjgzOlx0XHQgIFN1cHBvcnQgZm9yIElQdjYgUElNIG11bHRpY2FzdCByb3V0aW5nIHByb3RvY29sIFBJTS1TTXYyLlxuIDI4NDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIDI4NTpcdFxuIDI4NjpcdGNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcbiAyODc6XHRcdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbiAyODg6XHRcdGRlcGVuZHMgb24gSVBWNlxuIDI4OTpcdFx0c2VsZWN0IExXVFVOTkVMXG4gMjkwOlx0XHRzZWxlY3QgRFNUX0NBQ0hFXG4gMjkxOlx0XHRzZWxlY3QgSVBWNl9NVUxUSVBMRV9UQUJMRVNcbiAyOTI6XHRcdGhlbHBcbiAyOTM6XHRcdCAgU3VwcG9ydCBmb3IgZW5jYXBzdWxhdGlvbiBvZiBwYWNrZXRzIHdpdGhpbiBhbiBvdXRlciBJUHY2XG4gMjk0Olx0XHQgIGhlYWRlciBhbmQgYSBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIHVzaW5nIHRoZSBsaWdodHdlaWdodFxuIDI5NTpcdFx0ICB0dW5uZWxzIG1lY2hhbmlzbS4gQWxzbyBlbmFibGUgc3VwcG9ydCBmb3IgYWR2YW5jZWQgbG9jYWxcbiAyOTY6XHRcdCAgcHJvY2Vzc2luZyBvZiBTUnY2IHBhY2tldHMgYmFzZWQgb24gdGhlaXIgYWN0aXZlIHNlZ21lbnQuXG4gMjk3Olx0XG4gMjk4Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gMjk5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NTQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEZXBlbmRlbmNpZXMgYW5kIENvbmZpZ3VyYXRpb24gU2NydXRpbnkqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBjb2RlLCBhbmQgaXQmIzM5O3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCBgSVBWNl9TRUc2X0xXVFVOTkVMYCBoYXMgYSBkaXJlY3QgZGVwZW5kZW5jeSBvbiBgSVBWNmAuIFRoYXQgbWFrZXMgc2Vuc2UsIGJ1dCBJIGFsd2F5cyBsaWtlIHRvIGNvbmZpcm0gdGhlc2UgdGhpbmdzLiBNb3Zpbmcgb24sIEkgc2VlIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgaXMgZ3VhcmRlZCBieSBhbiBgI2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVmAuIFJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGJldHRlci4gQ2xlYXJseSwgdGhlIHdheSBpdCYjMzk7cyB1c2VkIHN1Z2dlc3RzIGl0IG1pZ2h0IGJlIGNyaXRpY2FsIGZvciBob3cgdGhpcyBwYXJ0aWN1bGFyIGZlYXR1cmUgZnVuY3Rpb25zLiBJJiMzOTtsbCBtYWtlIGEgbWVudGFsIG5vdGUgdG8gZGlnIGludG8gdGhlIGRlZmluaXRpb24gb2YgYENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVmAgYW5kIHdoYXQgaXQgYWN0dWFsbHkgY29udHJvbHMgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYW5kIGhvdyB0aGF0IGltcGFjdHMgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBJIHdhbnQgdG8gaGF2ZSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9MM19NQVNURVJfREVWJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTU4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE5ldHdvcmsgQ29yZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBkaWdnaW5nLiBJIG5lZWQgdG8gZmluZCBzb21ldGhpbmcgcmVsYXRlZCB0byBgTkVUX0wzX01BU1RFUl9ERVZgLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJiMzOTttIHByZXR0eSBzdXJlIHRoYXQmIzM5O3MgZ29pbmcgdG8gYmUgYSBrZXkgbWFjcm8gb3IgdmFyaWFibGUgdXNlZCB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCYjMzk7cyBuZXR3b3JrIHN0YWNrLiBBbmQgd2hlcmUgaXMgdGhhdCB1c3VhbGx5IGxvY2F0ZWQ/IFByZWNpc2VseSwgYG5ldC9gIOKAkyB0aGF0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIGJlZ2luIG15IHNlYXJjaC4gVGhlIG5ldHdvcmsgZGlyZWN0b3J5IGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciBhbnl0aGluZyBsb3ctbGV2ZWwgbGlrZSB0aGlzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgdHVybiB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9MM19NQVNURVJfREVWJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbDNtZGV2L0tjb25maWctNS1cbm5ldC9sM21kZXYvS2NvbmZpZzo2OmNvbmZpZyBORVRfTDNfTUFTVEVSX0RFVlxubmV0L2wzbWRldi9LY29uZmlnLTctXHRib29sIFwmIzM0O0wzIE1hc3RlciBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjA0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSBwZXJzcGVjdGl2ZSBvZiBzb21lb25lIGtub3dsZWRnZWFibGUgaW4gdGhlIGZpZWxkOgoKKipEaWdnaW5nIGludG8gTmV0d29yayBMYXllciBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFzc29jaWF0ZWQgd2l0aCBgTkVUX0wzX01BU1RFUl9ERVZgLiBUaGlzIGlzIGEgY3JpdGljYWwgY29tcG9uZW50LCBhbmQga25vd2luZyBpdHMgcmVsYXRpb25zaGlwcyBpcyBmdW5kYW1lbnRhbCBmb3IgdHJvdWJsZXNob290aW5nLCBvcHRpbWl6YXRpb24sIG9yIG1ha2luZyBhbnkgY2hhbmdlcyB3aXRob3V0IGludHJvZHVjaW5nIHVuZm9yZXNlZW4gY29uc2VxdWVuY2VzLiBJIGhhdmUgdG8gZ3Jhc3AgZXZlcnl0aGluZyB0aGF0IGRlcGVuZHMgb24gaXQgdG8gZW5zdXJlIEkgZ2V0IGEgaG9saXN0aWMgdmlldy4gVGltZSB0byBtYXAgdGhlIGxhbmRzY2FwZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbDNtZGV2L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBDb25maWd1cmF0aW9uIGZvciBMMyBtYXN0ZXIgZGV2aWNlIHN1cHBvcnRcbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE5FVF9MM19NQVNURVJfREVWXG4gICA3Olx0XHRib29sIFwmIzM0O0wzIE1hc3RlciBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBJTkVUIHx8IElQVjZcbiAgIDk6XHRcdGhlbHBcbiAgMTA6XHRcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgZ2x1ZSBiZXR3ZWVuIGNvcmUgbmV0d29ya2luZyBjb2RlIGFuZCBkZXZpY2VcbiAgMTE6XHRcdCAgZHJpdmVycyB0byBzdXBwb3J0IEwzIG1hc3RlciBkZXZpY2VzIGxpa2UgVlJGLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTA4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyB0aGUgUmVsZXZhbnQgQ29uZmlndXJhdGlvbnMgYW5kIENvZGUqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGNvbmZpZ3VyYXRpb25zLCBzcGVjaWZpY2FsbHkgYE5FVF9MM19NQVNURVJfREVWYCBhbmQgYElQVjZfU0VHNl9MV1RVTk5FTGAuIFRoYXQmIzM5O3MgdGhlIHNldHVwLiBUaGlzIHBhdGNoIHRhcmdldHMgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCB3aXRoaW4gYG5ldC9pcHY2L3NlZzZfbG9jYWwuY2AuIFRoYXQgZnVuY3Rpb24gKmlzKiByZWFjaGFibGUgYW5kIGl0IGZ1bmN0aW9ucyBhcyBleHBlY3RlZCwgdGhhdCYjMzk7cyBnb29kIHRvIGtub3cuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRlZXBseSBleGFtaW5lIHRoZSBsb2dpYyB3aXRoaW4gYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBhbmQgYWxzbyBgaW5wdXRfYWN0aW9uX2VuZF9kdDQ2YCwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIGFueSBpbnRlcmFjdGlvbnMgb3IgaW1wbGljYXRpb25zIHJlbGF0ZWQgdG8gYEZvY3VzU3ltYm9sc2AuIExldCYjMzk7cyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lucHV0X2FjdGlvbl9lbmRfZHQ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvc2VnNl9sb2NhbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L3NlZzZfbG9jYWwuYz0xMTMxPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZW5kX2R0X3ZyZl9jb3JlKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTExNzYtXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTE3NzpzdGF0aWMgaW50IGlucHV0X2FjdGlvbl9lbmRfZHQ0KHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTE3OC1cdFx0XHRcdHN0cnVjdCBzZWc2X2xvY2FsX2x3dCAqc2x3dClcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM9MTMwND1zdGF0aWMgaW50IHNlZzZfZW5kX2R0NDZfYnVpbGQoc3RydWN0IHNlZzZfbG9jYWxfbHd0ICpzbHd0LCBjb25zdCB2b2lkICpjZmcsXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTEzMDktXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTMxMDpzdGF0aWMgaW50IGlucHV0X2FjdGlvbl9lbmRfZHQ0NihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTEzMTEtXHRcdFx0XHQgc3RydWN0IHNlZzZfbG9jYWxfbHd0ICpzbHd0KVxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMzIxLVx0Y2FzZSBJUFBST1RPX0lQSVA6XG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTMyMjpcdFx0cmV0dXJuIGlucHV0X2FjdGlvbl9lbmRfZHQ0KHNrYiwgc2x3dCk7XG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTMyMy1cdGNhc2UgSVBQUk9UT19JUFY2OlxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0xNDc0PXN0YXRpYyBzdHJ1Y3Qgc2VnNl9hY3Rpb25fZGVzYyBzZWc2X2FjdGlvbl90YWJsZVtdID0ge1xuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTE4LSNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNTE5Olx0XHQuaW5wdXRcdFx0PSBpbnB1dF9hY3Rpb25fZW5kX2R0NCxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTIwLVx0XHQuc2x3dF9vcHNcdD0ge1xuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTQ1LSNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNTQ2Olx0XHQuaW5wdXRcdFx0PSBpbnB1dF9hY3Rpb25fZW5kX2R0NDYsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU0Ny1cdFx0LnNsd3Rfb3BzXHQ9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM5MgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgRnVuY3Rpb24qKgoKT2theSwgc28gYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgY2hlY2sgaWYgaXQmIzM5O3MgcG90ZW50aWFsbHkgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIExldCYjMzk7cyBzZWUgaWYgaXQmIzM5O3MgdHJlYXRlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgYW55d2hlcmUuIEFoLCB0aGVyZSBpdCBpcyEgSXQmIzM5O3MgYmVpbmcgYXNzaWduZWQgdG8gdGhlIGAuaW5wdXRgIG1lbWJlciBvZiBgc2VnNl9hY3Rpb25fdGFibGVgLiBSaWdodCwgdGhhdCBtZWFucyBpdCAqd29uJiMzOTt0KiBiZSBpbmxpbmVkLiAKCkhvbGQgb24sIHRob3VnaC4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZ5IGEgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIHJhdGhlciB0aGFuIGludGVybmFsIHN0YXRpYyBoZWxwZXJzLCB3aGljaCAqd291bGQqIGJlIGlubGluZWQuIFNpbmNlIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgaXMgYmVpbmcgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciwgaXQgKndpbGwqIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gU28sIHRoYXQmIzM5O3MgZmluZS4KCkJ1dCBhIGNyaXRpY2FsIHF1ZXN0aW9uIHJlbWFpbnM6IHdoYXQmIzM5O3MgdGhlIGFjdHVhbCBlbnRyeSBwb2ludOKAlHRoZSBmdW5jdGlvbiB0aGF0JiMzOTtzICpjYWxsaW5nKiB0aGlzIGAuaW5wdXRgIGhhbmRsZXI/IEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhlIGBzZWc2X2FjdGlvbl90YWJsZWAgdG8gZmluZCB0aGUgY2FsbGluZyBmdW5jdGlvbi4gSSBuZWVkIHRoYXQgZm9yIGEgY29tcGxldGUgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XFwuaW5wdXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9zZWc2X2xvY2FsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvc2VnNl9sb2NhbC5jPTE0NzQ9c3RhdGljIHN0cnVjdCBzZWc2X2FjdGlvbl9kZXNjIHNlZzZfYWN0aW9uX3RhYmxlW10gPSB7XG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE0NzktXHRcdFx0XHQgIFNFRzZfRl9MT0NBTF9GTEFWT1JTLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE0ODA6XHRcdC5pbnB1dFx0XHQ9IGlucHV0X2FjdGlvbl9lbmQsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTQ4MS1cdH0sXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE0ODctXHRcdFx0XHQgIFNFRzZfRl9BVFRSKFNFRzZfTE9DQUxfT0lGKSxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNDg4Olx0XHQuaW5wdXRcdFx0PSBpbnB1dF9hY3Rpb25fZW5kX3gsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTQ4OS1cdH0sXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE0OTMtXHRcdC5vcHRhdHRyc1x0PSBTRUc2X0ZfTE9DQUxfQ09VTlRFUlMsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTQ5NDpcdFx0LmlucHV0XHRcdD0gaW5wdXRfYWN0aW9uX2VuZF90LFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE0OTUtXHR9LFxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNDk5LVx0XHQub3B0YXR0cnNcdD0gU0VHNl9GX0xPQ0FMX0NPVU5URVJTLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1MDA6XHRcdC5pbnB1dFx0XHQ9IGlucHV0X2FjdGlvbl9lbmRfZHgyLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1MDEtXHR9LFxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTA1LVx0XHQub3B0YXR0cnNcdD0gU0VHNl9GX0xPQ0FMX0NPVU5URVJTLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1MDY6XHRcdC5pbnB1dFx0XHQ9IGlucHV0X2FjdGlvbl9lbmRfZHg2LFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1MDctXHR9LFxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTExLVx0XHQub3B0YXR0cnNcdD0gU0VHNl9GX0xPQ0FMX0NPVU5URVJTLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1MTI6XHRcdC5pbnB1dFx0XHQ9IGlucHV0X2FjdGlvbl9lbmRfZHg0LFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1MTMtXHR9LFxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTE4LSNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNTE5Olx0XHQuaW5wdXRcdFx0PSBpbnB1dF9hY3Rpb25fZW5kX2R0NCxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTIwLVx0XHQuc2x3dF9vcHNcdD0ge1xuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTM4LSNlbmRpZlxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1Mzk6XHRcdC5pbnB1dFx0XHQ9IGlucHV0X2FjdGlvbl9lbmRfZHQ2LFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1NDAtXHR9LFxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTQ1LSNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNTQ2Olx0XHQuaW5wdXRcdFx0PSBpbnB1dF9hY3Rpb25fZW5kX2R0NDYsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU0Ny1cdFx0LnNsd3Rfb3BzXHQ9IHtcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU1NS1cdFx0Lm9wdGF0dHJzXHQ9IFNFRzZfRl9MT0NBTF9DT1VOVEVSUyxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNTU2Olx0XHQuaW5wdXRcdFx0PSBpbnB1dF9hY3Rpb25fZW5kX2I2LFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1NTctXHR9LFxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTYxLVx0XHQub3B0YXR0cnNcdD0gU0VHNl9GX0xPQ0FMX0NPVU5URVJTLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1NjI6XHRcdC5pbnB1dFx0XHQ9IGlucHV0X2FjdGlvbl9lbmRfYjZfZW5jYXAsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU2My1cdFx0LnN0YXRpY19oZWFkcm9vbVx0PSBzaXplb2Yoc3RydWN0IGlwdjZoZHIpLFxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTY4LVx0XHQub3B0YXR0cnNcdD0gU0VHNl9GX0xPQ0FMX0NPVU5URVJTLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1Njk6XHRcdC5pbnB1dFx0XHQ9IGlucHV0X2FjdGlvbl9lbmRfYnBmLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1NzAtXHR9LFxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0yNjc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbHd0dW5uZWxfZW5jYXBfb3BzIHNlZzZfbG9jYWxfb3BzID0ge1xuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0yNjc2LVx0LmRlc3Ryb3lfc3RhdGVcdD0gc2VnNl9sb2NhbF9kZXN0cm95X3N0YXRlLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjI2Nzc6XHQuaW5wdXRcdFx0PSBzZWc2X2xvY2FsX2lucHV0LFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTI2NzgtXHQuZmlsbF9lbmNhcFx0PSBzZWc2X2xvY2FsX2ZpbGxfZW5jYXAsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwNTIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5hdmlnYXRpbmcgdGhlIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGNvZGUsIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBncmFicyBteSBhdHRlbnRpb24gaXMgYHNlZzZfbG9jYWxfaW5wdXRgLiBUaGF0JiMzOTtzIHdoZXJlIHdlJiMzOTtyZSBzdGFydGluZy4gTXkgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIHplcm8gaW4gb24gdGhhdCBmdW5jdGlvbi4gSXTigJlzIHRoZSBlbnRyeSBwb2ludCwgdGhlIHN0YXJ0aW5nIGxpbmUuIE5vdywgd2hhdCYjMzk7cyBpdCBkb2luZz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYHNlZzZfbG9jYWxfaW5wdXRgIGluc2lkZSBhbmQgb3V0LiBJdOKAmXMgdGhlIGtleS4gTGV0JiMzOTtzIHN0YXJ0IHRoZSBpbnZlc3RpZ2F0aW9uIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWc2X2xvY2FsX2lucHV0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvc2VnNl9sb2NhbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L3NlZzZfbG9jYWwuYz0xNTk0PXN0YXRpYyB2b2lkIHNlZzZfbG9jYWxfdXBkYXRlX2NvdW50ZXJzKHN0cnVjdCBzZWc2X2xvY2FsX2x3dCAqc2x3dCxcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTYxMS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNjEyOnN0YXRpYyBpbnQgc2VnNl9sb2NhbF9pbnB1dF9jb3JlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE2MTMtXHRcdFx0XHQgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTYzMy1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNjM0OnN0YXRpYyBpbnQgc2VnNl9sb2NhbF9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE2MzUte1xuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNjQzLVx0XHRcdCAgICAgICBkZXZfbmV0KHNrYi1cdTAwM2VkZXYpLCBOVUxMLCBza2IsIHNrYi1cdTAwM2VkZXYsIE5VTEwsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTY0NDpcdFx0XHQgICAgICAgc2VnNl9sb2NhbF9pbnB1dF9jb3JlKTtcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNjQ1LVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE2NDY6XHRyZXR1cm4gc2VnNl9sb2NhbF9pbnB1dF9jb3JlKGRldl9uZXQoc2tiLVx1MDAzZWRldiksIE5VTEwsIHNrYik7XG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTY0Ny19XG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTI2NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBsd3R1bm5lbF9lbmNhcF9vcHMgc2VnNl9sb2NhbF9vcHMgPSB7XG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTI2NzYtXHQuZGVzdHJveV9zdGF0ZVx0PSBzZWc2X2xvY2FsX2Rlc3Ryb3lfc3RhdGUsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MjY3NzpcdC5pbnB1dFx0XHQ9IHNlZzZfbG9jYWxfaW5wdXQsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMjY3OC1cdC5maWxsX2VuY2FwXHQ9IHNlZzZfbG9jYWxfZmlsbF9lbmNhcCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODc0NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBgc2VnNl9sb2NhbF9pbnB1dF9jb3JlYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyBkYXRhIGlzIHByb2Nlc3NlZCBpbiB0aGlzIGBzZWc2X2xvY2FsX2lucHV0X2NvcmVgIGNvbnRleHQuIEl0ICpsb29rcyogbGlrZSB0aGUgY29yZSBvZiB0aGUgaW5wdXQgcHJvY2Vzc2luZyBwcm9iYWJseSBoYXBwZW5zIHZpYSBhIGNhbGwgdG8gYGRlc2MtJmd0O2lucHV0KHNrYiwgc2x3dCk7YC4gVGhhdCBmZWVscyBsaWtlIHRoZSBsaWtlbHkgZW50cnkgcG9pbnQuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSYjMzk7bSBnb2luZyB0byBqdW1wIHJpZ2h0IGludG8gZXhhbWluaW5nIHRoZSBgc2VnNl9sb2NhbF9pbnB1dF9jb3JlYCBmdW5jdGlvbiBpdHNlbGYuIFVuZGVyc3RhbmRpbmcgdGhpcyBmdW5jdGlvbiBpcyBnb2luZyB0byBiZSBrZXkgdG8gZGlzc2VjdGluZyB0aGUgZGF0YSBmbG93LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgZ29pbmcgb24gaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjYvc2VnNl9sb2NhbC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTYxMiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNjEyOlx0c3RhdGljIGludCBzZWc2X2xvY2FsX2lucHV0X2NvcmUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXG4xNjEzOlx0XHRcdFx0XHQgc3RydWN0IHNrX2J1ZmYgKnNrYilcbjE2MTQ6XHR7XG4xNjE1Olx0XHRzdHJ1Y3QgZHN0X2VudHJ5ICpvcmlnX2RzdCA9IHNrYl9kc3Qoc2tiKTtcbjE2MTY6XHRcdHN0cnVjdCBzZWc2X2FjdGlvbl9kZXNjICpkZXNjO1xuMTYxNzpcdFx0c3RydWN0IHNlZzZfbG9jYWxfbHd0ICpzbHd0O1xuMTYxODpcdFx0dW5zaWduZWQgaW50IGxlbiA9IHNrYi1cdTAwM2VsZW47XG4xNjE5Olx0XHRpbnQgcmM7XG4xNjIwOlx0XG4xNjIxOlx0XHRzbHd0ID0gc2VnNl9sb2NhbF9sd3R1bm5lbChvcmlnX2RzdC1cdTAwM2Vsd3RzdGF0ZSk7XG4xNjIyOlx0XHRkZXNjID0gc2x3dC1cdTAwM2VkZXNjO1xuMTYyMzpcdFxuMTYyNDpcdFx0cmMgPSBkZXNjLVx1MDAzZWlucHV0KHNrYiwgc2x3dCk7XG4xNjI1Olx0XG4xNjI2Olx0XHRpZiAoIXNlZzZfbHd0dW5uZWxfY291bnRlcnNfZW5hYmxlZChzbHd0KSlcbjE2Mjc6XHRcdFx0cmV0dXJuIHJjO1xuMTYyODpcdFxuMTYyOTpcdFx0c2VnNl9sb2NhbF91cGRhdGVfY291bnRlcnMoc2x3dCwgbGVuLCByYyk7XG4xNjMwOlx0XG4xNjMxOlx0XHRyZXR1cm4gcmM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyODcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA0OTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFNFRzYgTG9jYWwgSW5wdXQgYW5kIEFjdGlvbiBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGUgU0VHNiBsb2NhbCBpbnB1dCBpcyBoYW5kbGVkLiBgc2VnNl9sb2NhbF9pbnB1dF9jb3JlYCBpcyB0aGUgY29yZSBmdW5jdGlvbiwgYnV0IGl0JiMzOTtzIHN0YXRpYywgc28gaXQmIzM5O3Mgbm90IGRpcmVjdGx5IGV4cG9zZWQuIGBzZWc2X2xvY2FsX2lucHV0YCBpcyBhbHNvIHN0YXRpYywgYnV0IGl0JiMzOTtzIGFzc2lnbmVkIHRvIHRoZSBgLmlucHV0YCBtZW1iZXIgb2YgYHNlZzZfbG9jYWxfb3BzYC4gSW50ZXJlc3RpbmcsIGJ1dCBub3QgdGhlIHdob2xlIHBpY3R1cmUuIFRoZW4gSSBzZWUgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBpcyBhbHNvIGFzc2lnbmVkIHRvIGAuaW5wdXRgLCBidXQgaW4gdGhlIGBzZWc2X2FjdGlvbl90YWJsZWAuCgpUaGlzIG1lYW5zIGJvdGggYHNlZzZfbG9jYWxfaW5wdXRgIGFuZCBgaW5wdXRfYWN0aW9uX2VuZF9kdDRgIGFyZSBmdW5jdGlvbiBwb2ludGVycyBhbmQgd2lsbCBoYXZlIHRoZWlyIG93biBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBHaXZlbiB0aGlzLCBJIGNhbiBmb2N1cyBvbiB0aG9zZSB0d28uIFdhaXQsIGFuZCBgaW5wdXRfYWN0aW9uX2VuZF9kdDQ2YCBjYWxscyBgaW5wdXRfYWN0aW9uX2VuZF9kdDRgIGZvciBJUHY0Li4uIFNvIGxldCYjMzk7cyBpbmNsdWRlIHRoYXQgb25lIHRvbyEKCkkgbmVlZCB0byBjb25maXJtIGlmIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgaXMgYWxzbyBzdGF0aWMuIEl0IGlzIHN0YXRpYywgYnV0IGJlY2F1c2UgaXQmIzM5O3MgYXNzaWduZWQgdG8gYSBzdHJ1Y3QgbWVtYmVyLCBpdCYjMzk7cyBub3QgaW5saW5lZC4gSXQmIzM5O3Mgc2FmZSB0byBhZGQgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBhbmQgYGlucHV0X2FjdGlvbl9lbmRfZHQ0NmAgdG8gYEZvY3VzU3ltYm9sc2AuIEFjdHVhbGx5LCBnaXZlbiB0aGUgY2FsbCBzdHJ1Y3R1cmUsIEkgY2FuIGZvY3VzIHNvbGVseSBvbiB0aGVzZSB0d28sIGl0JiMzOTtzIGEgY2xlYW5lciBhcHByb2FjaC4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgcmlnaHQga2VybmVsIGNvbmZpZ3MgZW5hYmxlZC4gSSBrbm93IEkgbmVlZCBgSVBWNl9TRUc2X0xXVFVOTkVMYCBhbmQgYE5FVF9MM19NQVNURVJfREVWYCwgYnV0IGFyZSB0aGVyZSBhbnkgb3RoZXJzPyBgSVBWNl9TRUc2X0xXVFVOTkVMYCBkZXBlbmRzIG9uIGBJUFY2YCwgYW5kIGBORVRfTDNfTUFTVEVSX0RFVmAgZGVwZW5kcyBvbiBlaXRoZXIgYElORVRgIG9yIGBJUFY2YC4gU28sIHRoZSBmaW5hbCBsaXN0IGZvciBgRW5hYmxlQ29uZmlnc2AgaXM6IGBJUFY2YCwgYElQVjZfU0VHNl9MV1RVTk5FTGAsIGFuZCBgTkVUX0wzX01BU1RFUl9ERVZgLgoKSSYjMzk7bGwgZG91YmxlLWNoZWNrIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgZGVmaW5pdGlvbiBpbiBgbmV0L2lwdjYvc2VnNl9sb2NhbC5jYCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY2L3NlZzZfbG9jYWwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExNzcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTE3NzpcdHN0YXRpYyBpbnQgaW5wdXRfYWN0aW9uX2VuZF9kdDQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbjExNzg6XHRcdFx0XHRcdHN0cnVjdCBzZWc2X2xvY2FsX2x3dCAqc2x3dClcbjExNzk6XHR7XG4xMTgwOlx0XHRlbnVtIHNrYl9kcm9wX3JlYXNvbiByZWFzb247XG4xMTgxOlx0XHRzdHJ1Y3QgaXBoZHIgKmlwaDtcbjExODI6XHRcbjExODM6XHRcdGlmICghZGVjYXBfYW5kX3ZhbGlkYXRlKHNrYiwgSVBQUk9UT19JUElQKSlcbjExODQ6XHRcdFx0Z290byBkcm9wO1xuMTE4NTpcdFxuMTE4NjpcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCBpcGhkcikpKVxuMTE4NzpcdFx0XHRnb3RvIGRyb3A7XG4xMTg4Olx0XG4xMTg5Olx0XHRtZW1zZXQoSVBDQihza2IpLCAwLCBzaXplb2YoKklQQ0Ioc2tiKSkpO1xuMTE5MDpcdFx0SVBDQihza2IpLVx1MDAzZWlpZiA9IHNrYi1cdTAwM2Vza2JfaWlmO1xuMTE5MTpcdFxuMTE5MjpcdFx0c2tiID0gZW5kX2R0X3ZyZl9jb3JlKHNrYiwgc2x3dCwgQUZfSU5FVCk7XG4xMTkzOlx0XHRpZiAoIXNrYilcbjExOTQ6XHRcdFx0LyogcGFja2V0IGhhcyBiZWVuIHByb2Nlc3NlZCBhbmQgY29uc3VtZWQgYnkgdGhlIFZSRiAqL1xuMTE5NTpcdFx0XHRyZXR1cm4gMDtcbjExOTY6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2MjIKCQkJCQkJCW91dHB1dDogMTQ0CgkJCQkJCQl0aG91Z2h0czogMjM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIElQdjYgU1J2NiBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgdHdvIGtleSBsaW5lczogYG1lbXNldChJUENCKHNrYiksIDAsIHNpemVvZigqSVBDQihza2IpKSk7YCBhbmQgYElQQ0Ioc2tiKS0mZ3Q7aWlmID0gc2tiLSZndDtza2JfaWlmO2AuIEZyb20gYSBmdW5jdGlvbmFsIHN0YW5kcG9pbnQsIHRoaXMgaXMgYSBkZWZpbml0ZSBpbXByb3ZlbWVudC4gSXQmIzM5O3MgZGVzaWduZWQgdG8gcHJldmVudCB0aGUgSVB2NCBzdGFjayBmcm9tIGFjY2lkZW50YWxseSB1c2luZyB1bmluaXRpYWxpemVkIGRhdGEgd2l0aGluIHRoZSBgSVBDQmAgY29udHJvbCBibG9jayBhZnRlciBhbiBJUHY2LXRvLUlQdjQgZGVjYXBzdWxhdGlvbiwgc3BlY2lmaWNhbGx5IHdoZW4gZGVhbGluZyB3aXRoIFNlZ21lbnQgUm91dGluZyAoU1J2NikgYW5kIGl0cyBFbmQuRFQ0L0VuZC5EVDQ2IGFjdGlvbnMuIFRoYXQgbWFrZXMgaXQgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlLiBVbmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MgaXMgYWx3YXlzIGEgcG90ZW50aWFsIHZlY3RvciBmb3IgZXhwbG9pdGF0aW9uLCBzbyB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgd2FudCB0byBmdXp6IHRob3JvdWdobHkuCgpUaGUgcGF0Y2ggYXBwZWFycyB0byBiZSByZWxldmFudCBpZiBgSVBWNl9TRUc2X0xXVFVOTkVMYCBhbmQgYE5FVF9MM19NQVNURVJfREVWYCBhcmUgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZy4KCk15IGZvY3VzIHNob3VsZCBiZSBvbiB0aGUgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBhbmQgYGlucHV0X2FjdGlvbl9lbmRfZHQ0NmAgZnVuY3Rpb25zOyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBhY3R1YWwgcHJvY2Vzc2luZyB0YWtlcyBwbGFjZS4gVGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBwYXRjaCBpcyBzb3VuZDogaXQgYWRkcmVzc2VzIGEgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWUgd2l0aGluIGEgY3JpdGljYWwgYXJlYSBvZiB0aGUgbmV0d29yayBzdGFjay4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIG5vdyB0b3VjaGVkIHdoZW4gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBkZWNhcHN1bGF0aW5nIElQdjQgcGFja2V0cyB3aXRoaW4gdGhlIFNSdjYgY29udGV4dC4KCkkmIzM5O20gbWFya2luZyB0aGlzIGFzIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2X1NFRzZfTFdUVU5ORUwmIzM0OywKICAgICYjMzQ7TkVUX0wzX01BU1RFUl9ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpbnB1dF9hY3Rpb25fZW5kX2R0NCYjMzQ7LAogICAgJiMzNDtpbnB1dF9hY3Rpb25fZW5kX2R0NDYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gdGhlIElQdjYgU2VnbWVudCBSb3V0aW5nIChTUnY2KSBsb2NhbCBwcm9jZXNzaW5nIGNvZGUgd2hlbiBkZWNhcHN1bGF0aW5nIElQdjQgcGFja2V0cyAoRW5kLkRUNC9FbmQuRFQ0NiBhY3Rpb25zKS4gSXQgY2xlYXJzIHRoZSBJUENCIGNvbnRyb2wgYmxvY2sgYW5kIHNldHMgdGhlIGlpZi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjZfU0VHNl9MV1RVTk5FTCYjMzQ7LAogICAgJiMzNDtORVRfTDNfTUFTVEVSX0RFViYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lucHV0X2FjdGlvbl9lbmRfZHQ0JiMzNDssCiAgICAmIzM0O2lucHV0X2FjdGlvbl9lbmRfZHQ0NiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBpbiB0aGUgSVB2NiBTZWdtZW50IFJvdXRpbmcgKFNSdjYpIGxvY2FsIHByb2Nlc3NpbmcgY29kZSB3aGVuIGRlY2Fwc3VsYXRpbmcgSVB2NCBwYWNrZXRzIChFbmQuRFQ0L0VuZC5EVDQ2IGFjdGlvbnMpLiBJdCBjbGVhcnMgdGhlIElQQ0IgY29udHJvbCBibG9jayBhbmQgc2V0cyB0aGUgaWlmLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQwOjMxLjc1MTgxNDY1M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwODAyNTUyOTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZfU0VHNl9MV1RVTk5FTFwiLFxuICAgIFwiTkVUX0wzX01BU1RFUl9ERVZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpbnB1dF9hY3Rpb25fZW5kX2R0NFwiLFxuICAgIFwiaW5wdXRfYWN0aW9uX2VuZF9kdDQ2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gdGhlIElQdjYgU2VnbWVudCBSb3V0aW5nIChTUnY2KSBsb2NhbCBwcm9jZXNzaW5nIGNvZGUgd2hlbiBkZWNhcHN1bGF0aW5nIElQdjQgcGFja2V0cyAoRW5kLkRUNC9FbmQuRFQ0NiBhY3Rpb25zKS4gSXQgY2xlYXJzIHRoZSBJUENCIGNvbnRyb2wgYmxvY2sgYW5kIHNldHMgdGhlIGlpZi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQwOjMxLjc1MTgyMTQwM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwMjkwMTU2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDZmYmM4YzgyMDI5YjFmM2Y3NzliNmVjNDQxYjU5YjJkZjhhN2JlZWJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgNCAxMTo0MDoyOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9zZWc2X2xvY2FsLmMgYi9uZXQvaXB2Ni9zZWc2X2xvY2FsLmNcXG5pbmRleCAyYjQxZTRjMGRkZGQxLi5kMDNiMzc3ZjVkYTllIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY2L3NlZzZfbG9jYWwuY1xcbisrKyBiL25ldC9pcHY2L3NlZzZfbG9jYWwuY1xcbkBAIC0xMTg2LDYgKzExODYsOSBAQCBzdGF0aWMgaW50IGlucHV0X2FjdGlvbl9lbmRfZHQ0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZihzdHJ1Y3QgaXBoZHIpKSlcXG4gXFx0XFx0Z290byBkcm9wO1xcbiBcXG4rXFx0bWVtc2V0KElQQ0Ioc2tiKSwgMCwgc2l6ZW9mKCpJUENCKHNrYikpKTtcXG4rXFx0SVBDQihza2IpLVxcdTAwM2VpaWYgPSBza2ItXFx1MDAzZXNrYl9paWY7XFxuK1xcbiBcXHRza2IgPSBlbmRfZHRfdnJmX2NvcmUoc2tiLCBzbHd0LCBBRl9JTkVUKTtcXG4gXFx0aWYgKCFza2IpXFxuIFxcdFxcdC8qIHBhY2tldCBoYXMgYmVlbiBwcm9jZXNzZWQgYW5kIGNvbnN1bWVkIGJ5IHRoZSBWUkYgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6MzMuMDU1MjkzMTk0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTk0OTkwNjU2ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNl9TRUc2X0xXVFVOTkVMXCIsXG4gICAgXCJORVRfTDNfTUFTVEVSX0RFVlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlucHV0X2FjdGlvbl9lbmRfZHQ0XCIsXG4gICAgXCJpbnB1dF9hY3Rpb25fZW5kX2R0NDZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBpbiB0aGUgSVB2NiBTZWdtZW50IFJvdXRpbmcgKFNSdjYpIGxvY2FsIHByb2Nlc3NpbmcgY29kZSB3aGVuIGRlY2Fwc3VsYXRpbmcgSVB2NCBwYWNrZXRzIChFbmQuRFQ0L0VuZC5EVDQ2IGFjdGlvbnMpLiBJdCBjbGVhcnMgdGhlIElQQ0IgY29udHJvbCBibG9jayBhbmQgc2V0cyB0aGUgaWlmLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNmZiYzhjODIwMjliMWYzZjc3OWI2ZWM0NDFiNTliMmRmOGE3YmVlYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTE6NDA6MjkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9zZWc2X2xvY2FsLmMgYi9uZXQvaXB2Ni9zZWc2X2xvY2FsLmNcbmluZGV4IDJiNDFlNGMwZGRkZDEuLmQwM2IzNzdmNWRhOWUgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9zZWc2X2xvY2FsLmNcbisrKyBiL25ldC9pcHY2L3NlZzZfbG9jYWwuY1xuQEAgLTExODYsNiArMTE4Niw5IEBAIHN0YXRpYyBpbnQgaW5wdXRfYWN0aW9uX2VuZF9kdDQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZihzdHJ1Y3QgaXBoZHIpKSlcbiBcdFx0Z290byBkcm9wO1xuIFxuK1x0bWVtc2V0KElQQ0Ioc2tiKSwgMCwgc2l6ZW9mKCpJUENCKHNrYikpKTtcbitcdElQQ0Ioc2tiKS1cdTAwM2VpaWYgPSBza2ItXHUwMDNlc2tiX2lpZjtcbitcbiBcdHNrYiA9IGVuZF9kdF92cmZfY29yZShza2IsIHNsd3QsIEFGX0lORVQpO1xuIFx0aWYgKCFza2IpXG4gXHRcdC8qIHBhY2tldCBoYXMgYmVlbiBwcm9jZXNzZWQgYW5kIGNvbnN1bWVkIGJ5IHRoZSBWUkYgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQwOjMzLjA1NTI5NDI1NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxODc0MzQ3MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29yayBTdGFjayBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBuZXQvaXB2Ni9zZWc2X2xvY2FsLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgYSBjb3VwbGUgb2YgaW1wb3J0YW50IGxpbmVzOiBgbWVtc2V0KElQQ0Ioc2tiKSwgMCwgc2l6ZW9mKCpJUENCKHNrYikpKTtgIGFuZCBgSVBDQihza2IpLVx1MDAzZWlpZiA9IHNrYi1cdTAwM2Vza2JfaWlmO2AuIFJpZ2h0IGF3YXksIEkgcmVjb2duaXplIHRoaXMgYXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIElQdjYgU2VnbWVudCBSb3V0aW5nIChTUnY2KSBsb2NhbCBwcm9jZXNzaW5nIGNvZGUg4oCTIHByb2JhYmx5IGNsZWFuaW5nIHVwIHNvbWUgY29udHJvbCBibG9jayBvciBzZXR0aW5nIHRoZSBpbmdyZXNzIGludGVyZmFjZS4gSW50ZXJlc3RpbmcuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBhbmQgaWRlbnRpZnkgaG93IHRoaXMgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBmdW5jdGlvbiBpcyBpbnZva2VkLiBXZSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aGlzIGZ1bmN0aW9uOyB3aGF0IGNvbmZpZ3VyYXRpb25zLCBtb2R1bGVzLCBvciBuZXR3b3JrIGNvbmRpdGlvbnMgd291bGQgY2F1c2UgdGhpcyBjb2RlIHRvIGV4ZWN1dGU/IFRvIGdldCBhIHF1aWNrIG92ZXJ2aWV3LCBJIG5lZWQgdG8gZ3JlcCB0aGUgY29kZWJhc2UuIEkgd2lsbCBzdGFydCBieSBzZWFyY2hpbmcgZm9yIHRoZSBmdW5jdGlvbiBuYW1lIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgaXRzZWxmIGFuZCB0aGVuIGFsc28gYHNlZzZfbG9jYWwuY2AgdG8gc2VlIHRoZSBicm9hZGVyIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMTo0MDozNy4yNDI3MzE3MjlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzMDY3NDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlucHV0X2FjdGlvbl9lbmRfZHQ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L3NlZzZfbG9jYWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9zZWc2X2xvY2FsLmM9MTEzMT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmVuZF9kdF92cmZfY29yZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTExNzYtXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjExNzc6c3RhdGljIGludCBpbnB1dF9hY3Rpb25fZW5kX2R0NChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMTc4LVxcdFxcdFxcdFxcdHN0cnVjdCBzZWc2X2xvY2FsX2x3dCAqc2x3dClcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0xMzA0PXN0YXRpYyBpbnQgc2VnNl9lbmRfZHQ0Nl9idWlsZChzdHJ1Y3Qgc2VnNl9sb2NhbF9sd3QgKnNsd3QsIGNvbnN0IHZvaWQgKmNmZyxcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMzA5LVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMzEwOnN0YXRpYyBpbnQgaW5wdXRfYWN0aW9uX2VuZF9kdDQ2KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTEzMTEtXFx0XFx0XFx0XFx0IHN0cnVjdCBzZWc2X2xvY2FsX2x3dCAqc2x3dClcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMzIxLVxcdGNhc2UgSVBQUk9UT19JUElQOlxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMzIyOlxcdFxcdHJldHVybiBpbnB1dF9hY3Rpb25fZW5kX2R0NChza2IsIHNsd3QpO1xcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMzIzLVxcdGNhc2UgSVBQUk9UT19JUFY2Olxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTE0NzQ9c3RhdGljIHN0cnVjdCBzZWc2X2FjdGlvbl9kZXNjIHNlZzZfYWN0aW9uX3RhYmxlW10gPSB7XFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUxOC0jaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1MTk6XFx0XFx0LmlucHV0XFx0XFx0PSBpbnB1dF9hY3Rpb25fZW5kX2R0NCxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUyMC1cXHRcXHQuc2x3dF9vcHNcXHQ9IHtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTQ1LSNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTU0NjpcXHRcXHQuaW5wdXRcXHRcXHQ9IGlucHV0X2FjdGlvbl9lbmRfZHQ0NixcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU0Ny1cXHRcXHQuc2x3dF9vcHNcXHQ9IHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6MzcuMzU1ODAzNDIxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYxMzIyMzIxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6XG5cbioqRGVsdmluZyBpbnRvIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgYW5kIGBzZWc2X2xvY2FsLmNgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCwgYW5kIGltbWVkaWF0ZWx5IEknbSB0aGlua2luZywgXCJyaWdodCwgdGhpcyBpcyBjb25uZWN0ZWQgdG8gdGhlIGBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBBbmQgaXQncyB0dWNrZWQgYXdheSBpbiB0aGUgYHNlZzZfYWN0aW9uX3RhYmxlYCwgd2hpY2ggZ2l2ZXMgbWUgYSBjbHVlIGFib3V0IGl0cyByb2xlLlwiIEl0J3MgZGVmaW5pdGVseSBhIGNvbXBvbmVudCBvZiB0aGF0IGxhcmdlciBuZXR3b3JrIGxheWVyIGZ1bmN0aW9uYWxpdHkuIEdpdmVuIHRoYXQgY29udGV4dCwgbXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZvciBgc2VnNl9sb2NhbC5jYC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBjb25maXJtIHRoZSBpbnRlcmFjdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGV4YWN0bHkgd2hhdCB0aGlzIGZ1bmN0aW9uIGRvZXMgd2l0aGluIHRoYXQgc3BlY2lmaWMgbW9kdWxlLiBJIG5lZWQgdG8gZ2V0IGEgcmVhbGx5IGdvb2QgdW5kZXJzdGFuZGluZyBvZiBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGludGVncmF0ZXMgd2l0aCB0aGUgb3ZlcmFsbCBzeXN0ZW0gYmVoYXZpb3IsIGdpdmVuIHRoZSBjb25maWd1cmF0aW9uIHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTA3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6NDAuOTY5MDI5MTU1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMTU3NzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlZzZfbG9jYWwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZT0yND1pcHY2LSQoQ09ORklHX05FVExBQkVMKSArPSBjYWxpcHNvLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZToyNTppcHY2LSQoQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTCkgKz0gc2VnNl9pcHR1bm5lbC5vIHNlZzZfbG9jYWwub1xcbm5ldC9pcHY2L01ha2VmaWxlLTI2LWlwdjYtJChDT05GSUdfSVBWNl9TRUc2X0hNQUMpICs9IHNlZzZfaG1hYy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQwOjQxLjA1MjE5MTQxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5MTgyNzAyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkNoZWNraW5nIHRoZSBGb3VuZGF0aW9uOiBJUHY2IFNlZ21lbnQgUm91dGluZyBhbmQgaXRzIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gSSBzZWUgdGhhdCBgQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTGAgaXMgcmVxdWlyZWQuIFRoYXQgdGVsbHMgbWUgd2UncmUgZGVhbGluZyB3aXRoIElQdjYgU2VnbWVudCBSb3V0aW5nIG92ZXIgTHdUdW4uIEJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyIGRvd24gdGhpcyBwYXRoLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGF2YWlsYWJsZSBhbmQsIGlkZWFsbHksIGVuYWJsZWQuIEl0J3MgY3J1Y2lhbCBmb3IgdGhlIHN1YnNlcXVlbnQgc3RlcHMuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgS2NvbmZpZ2AgZmlsZXMgYW5kIHZlcmlmeSB0aGUgZGVmaW5pdGlvbiwgZGVwZW5kZW5jaWVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFzc29jaWF0ZWQgd2l0aCBgQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTGAuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGNsdWVzIGFib3V0IGl0cyBkZXBlbmRlbmNpZXMgb24gb3RoZXIgZmVhdHVyZXMgb3IgYW55IHBvdGVudGlhbCBjb25mbGljdHMgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGUgaW1wbGVtZW50YXRpb24gSSdtIGNvbnNpZGVyaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTEwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6NDQuODQ0MDIyNTYyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTc0MzA0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvS2NvbmZpZz0yNzk9Y29uZmlnIElQVjZfUElNU01fVjJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjg1LVxcbm5ldC9pcHY2L0tjb25maWc6Mjg2OmNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTI4Ny1cXHRib29sIFxcXCJJUHY2OiBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6NDQuOTUzNzcxMTg0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc0MzIzNTgxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqRGVjb25zdHJ1Y3RpbmcgSVBWNl9TRUc2X0xXVFVOTkVMIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgYElQVjZfU0VHNl9MV1RVTk5FTGAuIFRoYXQgbWVhbnMgZGl2aW5nIGRlZXAuIEl0J3Mgbm90IGp1c3QgYSBtYXR0ZXIgb2YgbGlzdGluZyB0aGVtOyBJIG5lZWQgdG8gKnVuZGVyc3RhbmQqIHRoZW0uIEknbSBnb2luZyB0byBzdGFydCBieSBwdWxsaW5nIHVwIHRoZSByZWxldmFudCBkb2N1bWVudGF0aW9uLCBjb2RlLCB3aGF0ZXZlciBzb3VyY2VzIGFyZSBhdmFpbGFibGUuIEknbSB0aGlua2luZyBJJ2xsIGxvb2sgZm9yIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgbW9kdWxlIGRlY2xhcmF0aW9ucyBhbmQgYW55IHJlbGV2YW50IGluY2x1ZGUgZmlsZXMgZmlyc3QuIFdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgYXJlIG5lZWRlZCB0byBtYWtlIGBJUFY2X1NFRzZfTFdUVU5ORUxgIGZ1bmN0aW9uYWw/IFdoYXQgb3RoZXIgdW5kZXJseWluZyBuZXR3b3JrIGNvbXBvbmVudHMsIG9yIHN1YnN5c3RlbXMgaXMgdGhpcyBsaWtlbHkgdG8gZGVwZW5kIG9uPyBUaGlua2luZyBhYm91dCB0aGlzLCBJIG5lZWQgdG8gY29uc2lkZXIgdGhhdCBpdCdzIGxpa2VseSBkZXBlbmRlbnQgb24gSVB2NiwgYW5kIHByb2JhYmx5IGEgc3BlY2lmaWMgY29udHJvbCBwYXRoLlxuSSdsbCBhbHNvIGhhdmUgdG8gY29uc2lkZXIgdGhlIHBvdGVudGlhbCBpbnRlcnBsYXkgYmV0d2VlbiB0aGUgZGVwZW5kZW5jaWVzIGFuZCwgc2F5LCBmZWF0dXJlcy4gQSBkZXBlbmRlbmN5IGNvdWxkIGJlIGhhcmQsIG9yIHNvZnQuIEkgaGF2ZSB0byBzZWUgaG93IGl0IGNhbiBhZmZlY3QgdGhpbmdzIGRvd24gc3RyZWFtLlxuXG5JJ2xsIGJlIHRha2luZyBub3RlcyBhcyBJIGdvOyBza2V0Y2hpbmcgb3V0IGEgZGlhZ3JhbSBwZXJoYXBzLiBJIG5lZWQgdG8gY2xlYXJseSBkZWZpbmUgdGhlIGJvdW5kYXJ5IGFyb3VuZCB0aGlzIGZlYXR1cmUsIHNvIEkgY2FuIGJldHRlciB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbi4gV2hhdCBhcmUgdGhlICptaW5pbWFsKiBkZXBlbmRlbmNpZXMgZm9yIGJhc2ljIGZ1bmN0aW9uYWxpdHksIGFuZCB0aGVuIHdoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXMgZm9yICphZHZhbmNlZCogZmVhdHVyZXMuIFRoaXMgd2lsbCBzaG93IG1lIHdoZXJlIHRoZSBjb21wbGV4aXRpZXMgY291bGQgYXJpc2UgYW5kIHdoZXJlIHRvIGZvY3VzIHRoZSBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODY5LCJPdXRwdXRUb2tlbnMiOjc0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6NDkuNjk3MDEwODAxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDIyNjIyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvS2NvbmZpZz0yNzk9Y29uZmlnIElQVjZfUElNU01fVjJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjg1LVxcbm5ldC9pcHY2L0tjb25maWc6Mjg2OmNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTI4Ny1cXHRib29sIFxcXCJJUHY2OiBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6NDkuNzY3MjQwMDc2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY2L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjgwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjgwOlxcdFxcdGJvb2wgXFxcIklQdjY6IFBJTS1TTSB2ZXJzaW9uIDIgc3VwcG9ydFxcXCJcXG4gMjgxOlxcdFxcdGRlcGVuZHMgb24gSVBWNl9NUk9VVEVcXG4gMjgyOlxcdFxcdGhlbHBcXG4gMjgzOlxcdFxcdCAgU3VwcG9ydCBmb3IgSVB2NiBQSU0gbXVsdGljYXN0IHJvdXRpbmcgcHJvdG9jb2wgUElNLVNNdjIuXFxuIDI4NDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDI4NTpcXHRcXG4gMjg2OlxcdGNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcXG4gMjg3OlxcdFxcdGJvb2wgXFxcIklQdjY6IFNlZ21lbnQgUm91dGluZyBIZWFkZXIgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XFxcIlxcbiAyODg6XFx0XFx0ZGVwZW5kcyBvbiBJUFY2XFxuIDI4OTpcXHRcXHRzZWxlY3QgTFdUVU5ORUxcXG4gMjkwOlxcdFxcdHNlbGVjdCBEU1RfQ0FDSEVcXG4gMjkxOlxcdFxcdHNlbGVjdCBJUFY2X01VTFRJUExFX1RBQkxFU1xcbiAyOTI6XFx0XFx0aGVscFxcbiAyOTM6XFx0XFx0ICBTdXBwb3J0IGZvciBlbmNhcHN1bGF0aW9uIG9mIHBhY2tldHMgd2l0aGluIGFuIG91dGVyIElQdjZcXG4gMjk0OlxcdFxcdCAgaGVhZGVyIGFuZCBhIFNlZ21lbnQgUm91dGluZyBIZWFkZXIgdXNpbmcgdGhlIGxpZ2h0d2VpZ2h0XFxuIDI5NTpcXHRcXHQgIHR1bm5lbHMgbWVjaGFuaXNtLiBBbHNvIGVuYWJsZSBzdXBwb3J0IGZvciBhZHZhbmNlZCBsb2NhbFxcbiAyOTY6XFx0XFx0ICBwcm9jZXNzaW5nIG9mIFNSdjYgcGFja2V0cyBiYXNlZCBvbiB0aGVpciBhY3RpdmUgc2VnbWVudC5cXG4gMjk3OlxcdFxcbiAyOTg6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAyOTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQwOjQ5Ljc2NzMyNjc2N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTkzNTk5ODI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEZXBlbmRlbmNpZXMgYW5kIENvbmZpZ3VyYXRpb24gU2NydXRpbnkqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSwgYW5kIGl0J3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCBgSVBWNl9TRUc2X0xXVFVOTkVMYCBoYXMgYSBkaXJlY3QgZGVwZW5kZW5jeSBvbiBgSVBWNmAuIFRoYXQgbWFrZXMgc2Vuc2UsIGJ1dCBJIGFsd2F5cyBsaWtlIHRvIGNvbmZpcm0gdGhlc2UgdGhpbmdzLiBNb3Zpbmcgb24sIEkgc2VlIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgaXMgZ3VhcmRlZCBieSBhbiBgI2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVmAuIFJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGJldHRlci4gQ2xlYXJseSwgdGhlIHdheSBpdCdzIHVzZWQgc3VnZ2VzdHMgaXQgbWlnaHQgYmUgY3JpdGljYWwgZm9yIGhvdyB0aGlzIHBhcnRpY3VsYXIgZmVhdHVyZSBmdW5jdGlvbnMuIEknbGwgbWFrZSBhIG1lbnRhbCBub3RlIHRvIGRpZyBpbnRvIHRoZSBkZWZpbml0aW9uIG9mIGBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZgIGFuZCB3aGF0IGl0IGFjdHVhbGx5IGNvbnRyb2xzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGFuZCBob3cgdGhhdCBpbXBhY3RzIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4gSSB3YW50IHRvIGhhdmUgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjU0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6NTMuNzYwOTI5MTA0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQ1MDc3NjQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfTDNfTUFTVEVSX0RFVlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6NTMuODY1NDQ2NTI4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzM2MTgzMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOZXR3b3JrIENvcmUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBkaWdnaW5nLiBJIG5lZWQgdG8gZmluZCBzb21ldGhpbmcgcmVsYXRlZCB0byBgTkVUX0wzX01BU1RFUl9ERVZgLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gcHJldHR5IHN1cmUgdGhhdCdzIGdvaW5nIHRvIGJlIGEga2V5IG1hY3JvIG9yIHZhcmlhYmxlIHVzZWQgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwncyBuZXR3b3JrIHN0YWNrLiBBbmQgd2hlcmUgaXMgdGhhdCB1c3VhbGx5IGxvY2F0ZWQ/IFByZWNpc2VseSwgYG5ldC9gIOKAkyB0aGF0J3Mgd2hlcmUgSSdsbCBiZWdpbiBteSBzZWFyY2guIFRoZSBuZXR3b3JrIGRpcmVjdG9yeSBpcyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgYW55dGhpbmcgbG93LWxldmVsIGxpa2UgdGhpcy4gTGV0J3Mgc2VlIHdoYXQgd2UgdHVybiB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk1OCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQwOjU3LjEzOTA2Nzg2NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM5MTg3ODcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfTDNfTUFTVEVSX0RFVlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9sM21kZXYvS2NvbmZpZy01LVxcbm5ldC9sM21kZXYvS2NvbmZpZzo2OmNvbmZpZyBORVRfTDNfTUFTVEVSX0RFVlxcbm5ldC9sM21kZXYvS2NvbmZpZy03LVxcdGJvb2wgXFxcIkwzIE1hc3RlciBkZXZpY2Ugc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6NTcuMjc4MjU5ODE1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNjkxODk1MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUga25vd2xlZGdlYWJsZSBpbiB0aGUgZmllbGQ6XG5cbioqRGlnZ2luZyBpbnRvIE5ldHdvcmsgTGF5ZXIgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYXNzb2NpYXRlZCB3aXRoIGBORVRfTDNfTUFTVEVSX0RFVmAuIFRoaXMgaXMgYSBjcml0aWNhbCBjb21wb25lbnQsIGFuZCBrbm93aW5nIGl0cyByZWxhdGlvbnNoaXBzIGlzIGZ1bmRhbWVudGFsIGZvciB0cm91Ymxlc2hvb3RpbmcsIG9wdGltaXphdGlvbiwgb3IgbWFraW5nIGFueSBjaGFuZ2VzIHdpdGhvdXQgaW50cm9kdWNpbmcgdW5mb3Jlc2VlbiBjb25zZXF1ZW5jZXMuIEkgaGF2ZSB0byBncmFzcCBldmVyeXRoaW5nIHRoYXQgZGVwZW5kcyBvbiBpdCB0byBlbnN1cmUgSSBnZXQgYSBob2xpc3RpYyB2aWV3LiBUaW1lIHRvIG1hcCB0aGUgbGFuZHNjYXBlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjA0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDE6MDIuNjQ3NDUyNjZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUxMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2wzbWRldi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIENvbmZpZ3VyYXRpb24gZm9yIEwzIG1hc3RlciBkZXZpY2Ugc3VwcG9ydFxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTkVUX0wzX01BU1RFUl9ERVZcXG4gICA3OlxcdFxcdGJvb2wgXFxcIkwzIE1hc3RlciBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gSU5FVCB8fCBJUFY2XFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGdsdWUgYmV0d2VlbiBjb3JlIG5ldHdvcmtpbmcgY29kZSBhbmQgZGV2aWNlXFxuICAxMTpcXHRcXHQgIGRyaXZlcnMgdG8gc3VwcG9ydCBMMyBtYXN0ZXIgZGV2aWNlcyBsaWtlIFZSRi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDE6MDIuNjQ3NTI5NjVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzNTgwOTY2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyB0aGUgUmVsZXZhbnQgQ29uZmlndXJhdGlvbnMgYW5kIENvZGUqKlxuXG5SaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBjb25maWd1cmF0aW9ucywgc3BlY2lmaWNhbGx5IGBORVRfTDNfTUFTVEVSX0RFVmAgYW5kIGBJUFY2X1NFRzZfTFdUVU5ORUxgLiBUaGF0J3MgdGhlIHNldHVwLiBUaGlzIHBhdGNoIHRhcmdldHMgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCB3aXRoaW4gYG5ldC9pcHY2L3NlZzZfbG9jYWwuY2AuIFRoYXQgZnVuY3Rpb24gKmlzKiByZWFjaGFibGUgYW5kIGl0IGZ1bmN0aW9ucyBhcyBleHBlY3RlZCwgdGhhdCdzIGdvb2QgdG8ga25vdy4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGVlcGx5IGV4YW1pbmUgdGhlIGxvZ2ljIHdpdGhpbiBgaW5wdXRfYWN0aW9uX2VuZF9kdDRgIGFuZCBhbHNvIGBpbnB1dF9hY3Rpb25fZW5kX2R0NDZgLCBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYW55IGludGVyYWN0aW9ucyBvciBpbXBsaWNhdGlvbnMgcmVsYXRlZCB0byBgRm9jdXNTeW1ib2xzYC4gTGV0J3MgZ2V0IHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTA4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMTo0MTowNi4xODMzNDMyMDlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MjAwODI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlucHV0X2FjdGlvbl9lbmRfZHQ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L3NlZzZfbG9jYWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9zZWc2X2xvY2FsLmM9MTEzMT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmVuZF9kdF92cmZfY29yZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTExNzYtXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjExNzc6c3RhdGljIGludCBpbnB1dF9hY3Rpb25fZW5kX2R0NChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMTc4LVxcdFxcdFxcdFxcdHN0cnVjdCBzZWc2X2xvY2FsX2x3dCAqc2x3dClcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0xMzA0PXN0YXRpYyBpbnQgc2VnNl9lbmRfZHQ0Nl9idWlsZChzdHJ1Y3Qgc2VnNl9sb2NhbF9sd3QgKnNsd3QsIGNvbnN0IHZvaWQgKmNmZyxcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMzA5LVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMzEwOnN0YXRpYyBpbnQgaW5wdXRfYWN0aW9uX2VuZF9kdDQ2KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTEzMTEtXFx0XFx0XFx0XFx0IHN0cnVjdCBzZWc2X2xvY2FsX2x3dCAqc2x3dClcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMzIxLVxcdGNhc2UgSVBQUk9UT19JUElQOlxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMzIyOlxcdFxcdHJldHVybiBpbnB1dF9hY3Rpb25fZW5kX2R0NChza2IsIHNsd3QpO1xcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMzIzLVxcdGNhc2UgSVBQUk9UT19JUFY2Olxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTE0NzQ9c3RhdGljIHN0cnVjdCBzZWc2X2FjdGlvbl9kZXNjIHNlZzZfYWN0aW9uX3RhYmxlW10gPSB7XFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUxOC0jaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1MTk6XFx0XFx0LmlucHV0XFx0XFx0PSBpbnB1dF9hY3Rpb25fZW5kX2R0NCxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUyMC1cXHRcXHQuc2x3dF9vcHNcXHQ9IHtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTQ1LSNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTU0NjpcXHRcXHQuaW5wdXRcXHRcXHQ9IGlucHV0X2FjdGlvbl9lbmRfZHQ0NixcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU0Ny1cXHRcXHQuc2x3dF9vcHNcXHQ9IHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDE6MDYuMjY3NTQ4OTEzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NjgyNjIyNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgaW5wdXRfYWN0aW9uX2VuZF9kdDRgIEZ1bmN0aW9uKipcblxuT2theSwgc28gYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgY2hlY2sgaWYgaXQncyBwb3RlbnRpYWxseSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gTGV0J3Mgc2VlIGlmIGl0J3MgdHJlYXRlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgYW55d2hlcmUuIEFoLCB0aGVyZSBpdCBpcyEgSXQncyBiZWluZyBhc3NpZ25lZCB0byB0aGUgYC5pbnB1dGAgbWVtYmVyIG9mIGBzZWc2X2FjdGlvbl90YWJsZWAuIFJpZ2h0LCB0aGF0IG1lYW5zIGl0ICp3b24ndCogYmUgaW5saW5lZC4gXG5cbkhvbGQgb24sIHRob3VnaC4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZ5IGEgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIHJhdGhlciB0aGFuIGludGVybmFsIHN0YXRpYyBoZWxwZXJzLCB3aGljaCAqd291bGQqIGJlIGlubGluZWQuIFNpbmNlIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgaXMgYmVpbmcgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciwgaXQgKndpbGwqIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gU28sIHRoYXQncyBmaW5lLlxuXG5CdXQgYSBjcml0aWNhbCBxdWVzdGlvbiByZW1haW5zOiB3aGF0J3MgdGhlIGFjdHVhbCBlbnRyeSBwb2ludOKAlHRoZSBmdW5jdGlvbiB0aGF0J3MgKmNhbGxpbmcqIHRoaXMgYC5pbnB1dGAgaGFuZGxlcj8gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGUgYHNlZzZfYWN0aW9uX3RhYmxlYCB0byBmaW5kIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiBJIG5lZWQgdGhhdCBmb3IgYSBjb21wbGV0ZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzkyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQxOjExLjAzNTgxNDAzOVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAxNTM1MDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXFxcXC5pbnB1dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9zZWc2X2xvY2FsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvc2VnNl9sb2NhbC5jPTE0NzQ9c3RhdGljIHN0cnVjdCBzZWc2X2FjdGlvbl9kZXNjIHNlZzZfYWN0aW9uX3RhYmxlW10gPSB7XFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTQ3OS1cXHRcXHRcXHRcXHQgIFNFRzZfRl9MT0NBTF9GTEFWT1JTLFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNDgwOlxcdFxcdC5pbnB1dFxcdFxcdD0gaW5wdXRfYWN0aW9uX2VuZCxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTQ4MS1cXHR9LFxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE0ODctXFx0XFx0XFx0XFx0ICBTRUc2X0ZfQVRUUihTRUc2X0xPQ0FMX09JRiksXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE0ODg6XFx0XFx0LmlucHV0XFx0XFx0PSBpbnB1dF9hY3Rpb25fZW5kX3gsXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE0ODktXFx0fSxcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNDkzLVxcdFxcdC5vcHRhdHRyc1xcdD0gU0VHNl9GX0xPQ0FMX0NPVU5URVJTLFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNDk0OlxcdFxcdC5pbnB1dFxcdFxcdD0gaW5wdXRfYWN0aW9uX2VuZF90LFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNDk1LVxcdH0sXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTQ5OS1cXHRcXHQub3B0YXR0cnNcXHQ9IFNFRzZfRl9MT0NBTF9DT1VOVEVSUyxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTUwMDpcXHRcXHQuaW5wdXRcXHRcXHQ9IGlucHV0X2FjdGlvbl9lbmRfZHgyLFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTAxLVxcdH0sXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUwNS1cXHRcXHQub3B0YXR0cnNcXHQ9IFNFRzZfRl9MT0NBTF9DT1VOVEVSUyxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTUwNjpcXHRcXHQuaW5wdXRcXHRcXHQ9IGlucHV0X2FjdGlvbl9lbmRfZHg2LFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTA3LVxcdH0sXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUxMS1cXHRcXHQub3B0YXR0cnNcXHQ9IFNFRzZfRl9MT0NBTF9DT1VOVEVSUyxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTUxMjpcXHRcXHQuaW5wdXRcXHRcXHQ9IGlucHV0X2FjdGlvbl9lbmRfZHg0LFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTEzLVxcdH0sXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUxOC0jaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1MTk6XFx0XFx0LmlucHV0XFx0XFx0PSBpbnB1dF9hY3Rpb25fZW5kX2R0NCxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUyMC1cXHRcXHQuc2x3dF9vcHNcXHQ9IHtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTM4LSNlbmRpZlxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNTM5OlxcdFxcdC5pbnB1dFxcdFxcdD0gaW5wdXRfYWN0aW9uX2VuZF9kdDYsXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1NDAtXFx0fSxcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTQ1LSNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTU0NjpcXHRcXHQuaW5wdXRcXHRcXHQ9IGlucHV0X2FjdGlvbl9lbmRfZHQ0NixcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU0Ny1cXHRcXHQuc2x3dF9vcHNcXHQ9IHtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTU1LVxcdFxcdC5vcHRhdHRyc1xcdD0gU0VHNl9GX0xPQ0FMX0NPVU5URVJTLFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNTU2OlxcdFxcdC5pbnB1dFxcdFxcdD0gaW5wdXRfYWN0aW9uX2VuZF9iNixcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU1Ny1cXHR9LFxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1NjEtXFx0XFx0Lm9wdGF0dHJzXFx0PSBTRUc2X0ZfTE9DQUxfQ09VTlRFUlMsXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1NjI6XFx0XFx0LmlucHV0XFx0XFx0PSBpbnB1dF9hY3Rpb25fZW5kX2I2X2VuY2FwLFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTYzLVxcdFxcdC5zdGF0aWNfaGVhZHJvb21cXHQ9IHNpemVvZihzdHJ1Y3QgaXB2NmhkciksXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU2OC1cXHRcXHQub3B0YXR0cnNcXHQ9IFNFRzZfRl9MT0NBTF9DT1VOVEVSUyxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTU2OTpcXHRcXHQuaW5wdXRcXHRcXHQ9IGlucHV0X2FjdGlvbl9lbmRfYnBmLFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTcwLVxcdH0sXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM9MjY3ND1zdGF0aWMgY29uc3Qgc3RydWN0IGx3dHVubmVsX2VuY2FwX29wcyBzZWc2X2xvY2FsX29wcyA9IHtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0yNjc2LVxcdC5kZXN0cm95X3N0YXRlXFx0PSBzZWc2X2xvY2FsX2Rlc3Ryb3lfc3RhdGUsXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjI2Nzc6XFx0LmlucHV0XFx0XFx0PSBzZWc2X2xvY2FsX2lucHV0LFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0yNjc4LVxcdC5maWxsX2VuY2FwXFx0PSBzZWc2X2xvY2FsX2ZpbGxfZW5jYXAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQxOjExLjEwNTk3MzI0NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDEyNzcyMjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5hdmlnYXRpbmcgdGhlIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBjb2RlLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQgZ3JhYnMgbXkgYXR0ZW50aW9uIGlzIGBzZWc2X2xvY2FsX2lucHV0YC4gVGhhdCdzIHdoZXJlIHdlJ3JlIHN0YXJ0aW5nLiBNeSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMgdG8gemVybyBpbiBvbiB0aGF0IGZ1bmN0aW9uLiBJdOKAmXMgdGhlIGVudHJ5IHBvaW50LCB0aGUgc3RhcnRpbmcgbGluZS4gTm93LCB3aGF0J3MgaXQgZG9pbmc/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGBzZWc2X2xvY2FsX2lucHV0YCBpbnNpZGUgYW5kIG91dC4gSXTigJlzIHRoZSBrZXkuIExldCdzIHN0YXJ0IHRoZSBpbnZlc3RpZ2F0aW9uIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDUyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDE6MTQuNTE4NzQ4ODMxWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTQ0ODEwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWc2X2xvY2FsX2lucHV0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L3NlZzZfbG9jYWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9zZWc2X2xvY2FsLmM9MTU5ND1zdGF0aWMgdm9pZCBzZWc2X2xvY2FsX3VwZGF0ZV9jb3VudGVycyhzdHJ1Y3Qgc2VnNl9sb2NhbF9sd3QgKnNsd3QsXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTYxMS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTYxMjpzdGF0aWMgaW50IHNlZzZfbG9jYWxfaW5wdXRfY29yZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTYxMy1cXHRcXHRcXHRcXHQgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNjMzLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNjM0OnN0YXRpYyBpbnQgc2VnNl9sb2NhbF9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNjM1LXtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNjQzLVxcdFxcdFxcdCAgICAgICBkZXZfbmV0KHNrYi1cXHUwMDNlZGV2KSwgTlVMTCwgc2tiLCBza2ItXFx1MDAzZWRldiwgTlVMTCxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTY0NDpcXHRcXHRcXHQgICAgICAgc2VnNl9sb2NhbF9pbnB1dF9jb3JlKTtcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTY0NS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTY0NjpcXHRyZXR1cm4gc2VnNl9sb2NhbF9pbnB1dF9jb3JlKGRldl9uZXQoc2tiLVxcdTAwM2VkZXYpLCBOVUxMLCBza2IpO1xcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNjQ3LX1cXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0yNjc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbHd0dW5uZWxfZW5jYXBfb3BzIHNlZzZfbG9jYWxfb3BzID0ge1xcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTI2NzYtXFx0LmRlc3Ryb3lfc3RhdGVcXHQ9IHNlZzZfbG9jYWxfZGVzdHJveV9zdGF0ZSxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MjY3NzpcXHQuaW5wdXRcXHRcXHQ9IHNlZzZfbG9jYWxfaW5wdXQsXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTI2NzgtXFx0LmZpbGxfZW5jYXBcXHQ9IHNlZzZfbG9jYWxfZmlsbF9lbmNhcCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDE6MTQuNTc0MjAwNzE4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1ODcxNjU1MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgc2VnNl9sb2NhbF9pbnB1dF9jb3JlYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgZGF0YSBpcyBwcm9jZXNzZWQgaW4gdGhpcyBgc2VnNl9sb2NhbF9pbnB1dF9jb3JlYCBjb250ZXh0LiBJdCAqbG9va3MqIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGlucHV0IHByb2Nlc3NpbmcgcHJvYmFibHkgaGFwcGVucyB2aWEgYSBjYWxsIHRvIGBkZXNjLVx1MDAzZWlucHV0KHNrYiwgc2x3dCk7YC4gVGhhdCBmZWVscyBsaWtlIHRoZSBsaWtlbHkgZW50cnkgcG9pbnQuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSdtIGdvaW5nIHRvIGp1bXAgcmlnaHQgaW50byBleGFtaW5pbmcgdGhlIGBzZWc2X2xvY2FsX2lucHV0X2NvcmVgIGZ1bmN0aW9uIGl0c2VsZi4gVW5kZXJzdGFuZGluZyB0aGlzIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIGJlIGtleSB0byBkaXNzZWN0aW5nIHRoZSBkYXRhIGZsb3cuIExldCdzIHNlZSB3aGF0J3MgYWN0dWFsbHkgZ29pbmcgb24gaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3NDQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMTo0MToxOC4xNjEzNjg0MjNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc4MTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY2L3NlZzZfbG9jYWwuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjEyLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjEyOlxcdHN0YXRpYyBpbnQgc2VnNl9sb2NhbF9pbnB1dF9jb3JlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxcbjE2MTM6XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IpXFxuMTYxNDpcXHR7XFxuMTYxNTpcXHRcXHRzdHJ1Y3QgZHN0X2VudHJ5ICpvcmlnX2RzdCA9IHNrYl9kc3Qoc2tiKTtcXG4xNjE2OlxcdFxcdHN0cnVjdCBzZWc2X2FjdGlvbl9kZXNjICpkZXNjO1xcbjE2MTc6XFx0XFx0c3RydWN0IHNlZzZfbG9jYWxfbHd0ICpzbHd0O1xcbjE2MTg6XFx0XFx0dW5zaWduZWQgaW50IGxlbiA9IHNrYi1cXHUwMDNlbGVuO1xcbjE2MTk6XFx0XFx0aW50IHJjO1xcbjE2MjA6XFx0XFxuMTYyMTpcXHRcXHRzbHd0ID0gc2VnNl9sb2NhbF9sd3R1bm5lbChvcmlnX2RzdC1cXHUwMDNlbHd0c3RhdGUpO1xcbjE2MjI6XFx0XFx0ZGVzYyA9IHNsd3QtXFx1MDAzZWRlc2M7XFxuMTYyMzpcXHRcXG4xNjI0OlxcdFxcdHJjID0gZGVzYy1cXHUwMDNlaW5wdXQoc2tiLCBzbHd0KTtcXG4xNjI1OlxcdFxcbjE2MjY6XFx0XFx0aWYgKCFzZWc2X2x3dHVubmVsX2NvdW50ZXJzX2VuYWJsZWQoc2x3dCkpXFxuMTYyNzpcXHRcXHRcXHRyZXR1cm4gcmM7XFxuMTYyODpcXHRcXG4xNjI5OlxcdFxcdHNlZzZfbG9jYWxfdXBkYXRlX2NvdW50ZXJzKHNsd3QsIGxlbiwgcmMpO1xcbjE2MzA6XFx0XFxuMTYzMTpcXHRcXHRyZXR1cm4gcmM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQxOjE4LjE2MTU0Nzk4M1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTg4ODU1NTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBTRUc2IExvY2FsIElucHV0IGFuZCBBY3Rpb24gRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBTRUc2IGxvY2FsIGlucHV0IGlzIGhhbmRsZWQuIGBzZWc2X2xvY2FsX2lucHV0X2NvcmVgIGlzIHRoZSBjb3JlIGZ1bmN0aW9uLCBidXQgaXQncyBzdGF0aWMsIHNvIGl0J3Mgbm90IGRpcmVjdGx5IGV4cG9zZWQuIGBzZWc2X2xvY2FsX2lucHV0YCBpcyBhbHNvIHN0YXRpYywgYnV0IGl0J3MgYXNzaWduZWQgdG8gdGhlIGAuaW5wdXRgIG1lbWJlciBvZiBgc2VnNl9sb2NhbF9vcHNgLiBJbnRlcmVzdGluZywgYnV0IG5vdCB0aGUgd2hvbGUgcGljdHVyZS4gVGhlbiBJIHNlZSBgaW5wdXRfYWN0aW9uX2VuZF9kdDRgIGlzIGFsc28gYXNzaWduZWQgdG8gYC5pbnB1dGAsIGJ1dCBpbiB0aGUgYHNlZzZfYWN0aW9uX3RhYmxlYC5cblxuVGhpcyBtZWFucyBib3RoIGBzZWc2X2xvY2FsX2lucHV0YCBhbmQgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBhcmUgZnVuY3Rpb24gcG9pbnRlcnMgYW5kIHdpbGwgaGF2ZSB0aGVpciBvd24gZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gR2l2ZW4gdGhpcywgSSBjYW4gZm9jdXMgb24gdGhvc2UgdHdvLiBXYWl0LCBhbmQgYGlucHV0X2FjdGlvbl9lbmRfZHQ0NmAgY2FsbHMgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBmb3IgSVB2NC4uLiBTbyBsZXQncyBpbmNsdWRlIHRoYXQgb25lIHRvbyFcblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBpcyBhbHNvIHN0YXRpYy4gSXQgaXMgc3RhdGljLCBidXQgYmVjYXVzZSBpdCdzIGFzc2lnbmVkIHRvIGEgc3RydWN0IG1lbWJlciwgaXQncyBub3QgaW5saW5lZC4gSXQncyBzYWZlIHRvIGFkZCBgaW5wdXRfYWN0aW9uX2VuZF9kdDRgIGFuZCBgaW5wdXRfYWN0aW9uX2VuZF9kdDQ2YCB0byBgRm9jdXNTeW1ib2xzYC4gQWN0dWFsbHksIGdpdmVuIHRoZSBjYWxsIHN0cnVjdHVyZSwgSSBjYW4gZm9jdXMgc29sZWx5IG9uIHRoZXNlIHR3bywgaXQncyBhIGNsZWFuZXIgYXBwcm9hY2guXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIHRoZSByaWdodCBrZXJuZWwgY29uZmlncyBlbmFibGVkLiBJIGtub3cgSSBuZWVkIGBJUFY2X1NFRzZfTFdUVU5ORUxgIGFuZCBgTkVUX0wzX01BU1RFUl9ERVZgLCBidXQgYXJlIHRoZXJlIGFueSBvdGhlcnM/IGBJUFY2X1NFRzZfTFdUVU5ORUxgIGRlcGVuZHMgb24gYElQVjZgLCBhbmQgYE5FVF9MM19NQVNURVJfREVWYCBkZXBlbmRzIG9uIGVpdGhlciBgSU5FVGAgb3IgYElQVjZgLiBTbywgdGhlIGZpbmFsIGxpc3QgZm9yIGBFbmFibGVDb25maWdzYCBpczogYElQVjZgLCBgSVBWNl9TRUc2X0xXVFVOTkVMYCwgYW5kIGBORVRfTDNfTUFTVEVSX0RFVmAuXG5cbkknbGwgZG91YmxlLWNoZWNrIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgZGVmaW5pdGlvbiBpbiBgbmV0L2lwdjYvc2VnNl9sb2NhbC5jYCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5Mjg3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDkzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDE6MjYuMTUwNDA2OVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzIwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjYvc2VnNl9sb2NhbC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExNzcsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjExNzc6XFx0c3RhdGljIGludCBpbnB1dF9hY3Rpb25fZW5kX2R0NChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbjExNzg6XFx0XFx0XFx0XFx0XFx0c3RydWN0IHNlZzZfbG9jYWxfbHd0ICpzbHd0KVxcbjExNzk6XFx0e1xcbjExODA6XFx0XFx0ZW51bSBza2JfZHJvcF9yZWFzb24gcmVhc29uO1xcbjExODE6XFx0XFx0c3RydWN0IGlwaGRyICppcGg7XFxuMTE4MjpcXHRcXG4xMTgzOlxcdFxcdGlmICghZGVjYXBfYW5kX3ZhbGlkYXRlKHNrYiwgSVBQUk9UT19JUElQKSlcXG4xMTg0OlxcdFxcdFxcdGdvdG8gZHJvcDtcXG4xMTg1OlxcdFxcbjExODY6XFx0XFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCBpcGhkcikpKVxcbjExODc6XFx0XFx0XFx0Z290byBkcm9wO1xcbjExODg6XFx0XFxuMTE4OTpcXHRcXHRtZW1zZXQoSVBDQihza2IpLCAwLCBzaXplb2YoKklQQ0Ioc2tiKSkpO1xcbjExOTA6XFx0XFx0SVBDQihza2IpLVxcdTAwM2VpaWYgPSBza2ItXFx1MDAzZXNrYl9paWY7XFxuMTE5MTpcXHRcXG4xMTkyOlxcdFxcdHNrYiA9IGVuZF9kdF92cmZfY29yZShza2IsIHNsd3QsIEFGX0lORVQpO1xcbjExOTM6XFx0XFx0aWYgKCFza2IpXFxuMTE5NDpcXHRcXHRcXHQvKiBwYWNrZXQgaGFzIGJlZW4gcHJvY2Vzc2VkIGFuZCBjb25zdW1lZCBieSB0aGUgVlJGICovXFxuMTE5NTpcXHRcXHRcXHRyZXR1cm4gMDtcXG4xMTk2OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMTo0MToyNi4xNTA2NDA4NVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjU5NTUxNzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIElQdjYgU1J2NiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0d28ga2V5IGxpbmVzOiBgbWVtc2V0KElQQ0Ioc2tiKSwgMCwgc2l6ZW9mKCpJUENCKHNrYikpKTtgIGFuZCBgSVBDQihza2IpLVx1MDAzZWlpZiA9IHNrYi1cdTAwM2Vza2JfaWlmO2AuIEZyb20gYSBmdW5jdGlvbmFsIHN0YW5kcG9pbnQsIHRoaXMgaXMgYSBkZWZpbml0ZSBpbXByb3ZlbWVudC4gSXQncyBkZXNpZ25lZCB0byBwcmV2ZW50IHRoZSBJUHY0IHN0YWNrIGZyb20gYWNjaWRlbnRhbGx5IHVzaW5nIHVuaW5pdGlhbGl6ZWQgZGF0YSB3aXRoaW4gdGhlIGBJUENCYCBjb250cm9sIGJsb2NrIGFmdGVyIGFuIElQdjYtdG8tSVB2NCBkZWNhcHN1bGF0aW9uLCBzcGVjaWZpY2FsbHkgd2hlbiBkZWFsaW5nIHdpdGggU2VnbWVudCBSb3V0aW5nIChTUnY2KSBhbmQgaXRzIEVuZC5EVDQvRW5kLkRUNDYgYWN0aW9ucy4gVGhhdCBtYWtlcyBpdCBpbW1lZGlhdGVseSBpbnRlcmVzdGluZyBmcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUuIFVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2VzcyBpcyBhbHdheXMgYSBwb3RlbnRpYWwgdmVjdG9yIGZvciBleHBsb2l0YXRpb24sIHNvIHRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgSSB3YW50IHRvIGZ1enogdGhvcm91Z2hseS5cblxuVGhlIHBhdGNoIGFwcGVhcnMgdG8gYmUgcmVsZXZhbnQgaWYgYElQVjZfU0VHNl9MV1RVTk5FTGAgYW5kIGBORVRfTDNfTUFTVEVSX0RFVmAgYXJlIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcuXG5cbk15IGZvY3VzIHNob3VsZCBiZSBvbiB0aGUgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBhbmQgYGlucHV0X2FjdGlvbl9lbmRfZHQ0NmAgZnVuY3Rpb25zOyB0aGF0J3Mgd2hlcmUgdGhlIGFjdHVhbCBwcm9jZXNzaW5nIHRha2VzIHBsYWNlLiBUaGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIHBhdGNoIGlzIHNvdW5kOiBpdCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSB3aXRoaW4gYSBjcml0aWNhbCBhcmVhIG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGlzIGNvZGUgcGF0aCBpcyBub3cgdG91Y2hlZCB3aGVuIHdlJ3JlIGRlYWxpbmcgd2l0aCBkZWNhcHN1bGF0aW5nIElQdjQgcGFja2V0cyB3aXRoaW4gdGhlIFNSdjYgY29udGV4dC5cblxuSSdtIG1hcmtpbmcgdGhpcyBhcyBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDYyMiwiT3V0cHV0VG9rZW5zIjoxNDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMTo0MTozMi40MTAxOTYzNTNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQxNTk2MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZfU0VHNl9MV1RVTk5FTFwiLFxuICAgIFwiTkVUX0wzX01BU1RFUl9ERVZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpbnB1dF9hY3Rpb25fZW5kX2R0NFwiLFxuICAgIFwiaW5wdXRfYWN0aW9uX2VuZF9kdDQ2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gdGhlIElQdjYgU2VnbWVudCBSb3V0aW5nIChTUnY2KSBsb2NhbCBwcm9jZXNzaW5nIGNvZGUgd2hlbiBkZWNhcHN1bGF0aW5nIElQdjQgcGFja2V0cyAoRW5kLkRUNC9FbmQuRFQ0NiBhY3Rpb25zKS4gSXQgY2xlYXJzIHRoZSBJUENCIGNvbnRyb2wgYmxvY2sgYW5kIHNldHMgdGhlIGlpZi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNl9TRUc2X0xXVFVOTkVMXCIsXG4gICAgXCJORVRfTDNfTUFTVEVSX0RFVlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlucHV0X2FjdGlvbl9lbmRfZHQ0XCIsXG4gICAgXCJpbnB1dF9hY3Rpb25fZW5kX2R0NDZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBpbiB0aGUgSVB2NiBTZWdtZW50IFJvdXRpbmcgKFNSdjYpIGxvY2FsIHByb2Nlc3NpbmcgY29kZSB3aGVuIGRlY2Fwc3VsYXRpbmcgSVB2NCBwYWNrZXRzIChFbmQuRFQ0L0VuZC5EVDQ2IGFjdGlvbnMpLiBJdCBjbGVhcnMgdGhlIElQQ0IgY29udHJvbCBibG9jayBhbmQgc2V0cyB0aGUgaWlmLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbc7xv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 10:09:02 +0000 UTC FinishedAt: 2026-08-04 11:41:33 +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": "2a33516f9ef59ad11844d4fc152f889449b5daf3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6_SEG6_LWTUNNEL", "NET_L3_MASTER_DEV" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2a33516f9ef59ad11844d4fc152f889449b5daf3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6_SEG6_LWTUNNEL", "NET_L3_MASTER_DEV" ], "series_id": "61344096-f6d8-42b2-8cc8-06773830e2d7" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "input_action_end_dt4", "input_action_end_dt46" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjZfU0VHNl9MV1RVTk5FTCYjMzQ7LAogICAgJiMzNDtORVRfTDNfTUFTVEVSX0RFViYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lucHV0X2FjdGlvbl9lbmRfZHQ0JiMzNDssCiAgICAmIzM0O2lucHV0X2FjdGlvbl9lbmRfZHQ0NiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBpbiB0aGUgSVB2NiBTZWdtZW50IFJvdXRpbmcgKFNSdjYpIGxvY2FsIHByb2Nlc3NpbmcgY29kZSB3aGVuIGRlY2Fwc3VsYXRpbmcgSVB2NCBwYWNrZXRzIChFbmQuRFQ0L0VuZC5EVDQ2IGFjdGlvbnMpLiBJdCBjbGVhcnMgdGhlIElQQ0IgY29udHJvbCBibG9jayBhbmQgc2V0cyB0aGUgaWlmLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDZmYmM4YzgyMDI5YjFmM2Y3NzliNmVjNDQxYjU5YjJkZjhhN2JlZWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDExOjQwOjI5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L3NlZzZfbG9jYWwuYyBiL25ldC9pcHY2L3NlZzZfbG9jYWwuY1xuaW5kZXggMmI0MWU0YzBkZGRkMS4uZDAzYjM3N2Y1ZGE5ZSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3NlZzZfbG9jYWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvc2VnNl9sb2NhbC5jXG5AQCAtMTE4Niw2ICYjNDM7MTE4Niw5IEBAIHN0YXRpYyBpbnQgaW5wdXRfYWN0aW9uX2VuZF9kdDQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZihzdHJ1Y3QgaXBoZHIpKSlcbiBcdFx0Z290byBkcm9wO1xuIFxuJiM0MztcdG1lbXNldChJUENCKHNrYiksIDAsIHNpemVvZigqSVBDQihza2IpKSk7XG4mIzQzO1x0SVBDQihza2IpLVx1MDAzZWlpZiA9IHNrYi1cdTAwM2Vza2JfaWlmO1xuJiM0MztcbiBcdHNrYiA9IGVuZF9kdF92cmZfY29yZShza2IsIHNsd3QsIEFGX0lORVQpO1xuIFx0aWYgKCFza2IpXG4gXHRcdC8qIHBhY2tldCBoYXMgYmVlbiBwcm9jZXNzZWQgYW5kIGNvbnN1bWVkIGJ5IHRoZSBWUkYgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWNl9TRUc2X0xXVFVOTkVMJiMzNDssCiAgICAmIzM0O05FVF9MM19NQVNURVJfREVWJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW5wdXRfYWN0aW9uX2VuZF9kdDQmIzM0OywKICAgICYjMzQ7aW5wdXRfYWN0aW9uX2VuZF9kdDQ2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlIGluIHRoZSBJUHY2IFNlZ21lbnQgUm91dGluZyAoU1J2NikgbG9jYWwgcHJvY2Vzc2luZyBjb2RlIHdoZW4gZGVjYXBzdWxhdGluZyBJUHY0IHBhY2tldHMgKEVuZC5EVDQvRW5kLkRUNDYgYWN0aW9ucykuIEl0IGNsZWFycyB0aGUgSVBDQiBjb250cm9sIGJsb2NrIGFuZCBzZXRzIHRoZSBpaWYuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNmZiYzhjODIwMjliMWYzZjc3OWI2ZWM0NDFiNTliMmRmOGE3YmVlYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDQgMTE6NDA6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9zZWc2X2xvY2FsLmMgYi9uZXQvaXB2Ni9zZWc2X2xvY2FsLmMKaW5kZXggMmI0MWU0YzBkZGRkMS4uZDAzYjM3N2Y1ZGE5ZSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvc2VnNl9sb2NhbC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L3NlZzZfbG9jYWwuYwpAQCAtMTE4Niw2ICYjNDM7MTE4Niw5IEBAIHN0YXRpYyBpbnQgaW5wdXRfYWN0aW9uX2VuZF9kdDQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBzaXplb2Yoc3RydWN0IGlwaGRyKSkpCiAJCWdvdG8gZHJvcDsKIAomIzQzOwltZW1zZXQoSVBDQihza2IpLCAwLCBzaXplb2YoKklQQ0Ioc2tiKSkpOwomIzQzOwlJUENCKHNrYiktJmd0O2lpZiA9IHNrYi0mZ3Q7c2tiX2lpZjsKJiM0MzsKIAlza2IgPSBlbmRfZHRfdnJmX2NvcmUoc2tiLCBzbHd0LCBBRl9JTkVUKTsKIAlpZiAoIXNrYikKIAkJLyogcGFja2V0IGhhcyBiZWVuIHByb2Nlc3NlZCBhbmQgY29uc3VtZWQgYnkgdGhlIFZSRiAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDk1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgU3RhY2sgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG5ldC9pcHY2L3NlZzZfbG9jYWwuY2AsIHNwZWNpZmljYWxseSB0aGUgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRpbmcgYSBjb3VwbGUgb2YgaW1wb3J0YW50IGxpbmVzOiBgbWVtc2V0KElQQ0Ioc2tiKSwgMCwgc2l6ZW9mKCpJUENCKHNrYikpKTtgIGFuZCBgSVBDQihza2IpLSZndDtpaWYgPSBza2ItJmd0O3NrYl9paWY7YC4gUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgSVB2NiBTZWdtZW50IFJvdXRpbmcgKFNSdjYpIGxvY2FsIHByb2Nlc3NpbmcgY29kZSDigJMgcHJvYmFibHkgY2xlYW5pbmcgdXAgc29tZSBjb250cm9sIGJsb2NrIG9yIHNldHRpbmcgdGhlIGluZ3Jlc3MgaW50ZXJmYWNlLiBJbnRlcmVzdGluZy4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBhbmQgaWRlbnRpZnkgaG93IHRoaXMgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBmdW5jdGlvbiBpcyBpbnZva2VkLiBXZSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aGlzIGZ1bmN0aW9uOyB3aGF0IGNvbmZpZ3VyYXRpb25zLCBtb2R1bGVzLCBvciBuZXR3b3JrIGNvbmRpdGlvbnMgd291bGQgY2F1c2UgdGhpcyBjb2RlIHRvIGV4ZWN1dGU/IFRvIGdldCBhIHF1aWNrIG92ZXJ2aWV3LCBJIG5lZWQgdG8gZ3JlcCB0aGUgY29kZWJhc2UuIEkgd2lsbCBzdGFydCBieSBzZWFyY2hpbmcgZm9yIHRoZSBmdW5jdGlvbiBuYW1lIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgaXRzZWxmIGFuZCB0aGVuIGFsc28gYHNlZzZfbG9jYWwuY2AgdG8gc2VlIHRoZSBicm9hZGVyIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW5wdXRfYWN0aW9uX2VuZF9kdDQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9zZWc2X2xvY2FsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvc2VnNl9sb2NhbC5jPTExMzE9c3RhdGljIHN0cnVjdCBza19idWZmICplbmRfZHRfdnJmX2NvcmUoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTE3Ni1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMTc3OnN0YXRpYyBpbnQgaW5wdXRfYWN0aW9uX2VuZF9kdDQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMTc4LVx0XHRcdFx0c3RydWN0IHNlZzZfbG9jYWxfbHd0ICpzbHd0KVxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0xMzA0PXN0YXRpYyBpbnQgc2VnNl9lbmRfZHQ0Nl9idWlsZChzdHJ1Y3Qgc2VnNl9sb2NhbF9sd3QgKnNsd3QsIGNvbnN0IHZvaWQgKmNmZyxcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTMwOS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMzEwOnN0YXRpYyBpbnQgaW5wdXRfYWN0aW9uX2VuZF9kdDQ2KHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTMxMS1cdFx0XHRcdCBzdHJ1Y3Qgc2VnNl9sb2NhbF9sd3QgKnNsd3QpXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTEzMjEtXHRjYXNlIElQUFJPVE9fSVBJUDpcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMzIyOlx0XHRyZXR1cm4gaW5wdXRfYWN0aW9uX2VuZF9kdDQoc2tiLCBzbHd0KTtcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMzIzLVx0Y2FzZSBJUFBST1RPX0lQVjY6XG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTE0NzQ9c3RhdGljIHN0cnVjdCBzZWc2X2FjdGlvbl9kZXNjIHNlZzZfYWN0aW9uX3RhYmxlW10gPSB7XG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1MTgtI2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1MTk6XHRcdC5pbnB1dFx0XHQ9IGlucHV0X2FjdGlvbl9lbmRfZHQ0LFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1MjAtXHRcdC5zbHd0X29wc1x0PSB7XG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1NDUtI2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVlxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1NDY6XHRcdC5pbnB1dFx0XHQ9IGlucHV0X2FjdGlvbl9lbmRfZHQ0Nixcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTQ3LVx0XHQuc2x3dF9vcHNcdD0ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMDcKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OgoKKipEZWx2aW5nIGludG8gYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBhbmQgYHNlZzZfbG9jYWwuY2AqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAsIGFuZCBpbW1lZGlhdGVseSBJJiMzOTttIHRoaW5raW5nLCAmIzM0O3JpZ2h0LCB0aGlzIGlzIGNvbm5lY3RlZCB0byB0aGUgYENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVmAgY29uZmlndXJhdGlvbiBvcHRpb24uIEFuZCBpdCYjMzk7cyB0dWNrZWQgYXdheSBpbiB0aGUgYHNlZzZfYWN0aW9uX3RhYmxlYCwgd2hpY2ggZ2l2ZXMgbWUgYSBjbHVlIGFib3V0IGl0cyByb2xlLiYjMzQ7IEl0JiMzOTtzIGRlZmluaXRlbHkgYSBjb21wb25lbnQgb2YgdGhhdCBsYXJnZXIgbmV0d29yayBsYXllciBmdW5jdGlvbmFsaXR5LiBHaXZlbiB0aGF0IGNvbnRleHQsIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmb3IgYHNlZzZfbG9jYWwuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGludGVyYWN0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZXhhY3RseSB3aGF0IHRoaXMgZnVuY3Rpb24gZG9lcyB3aXRoaW4gdGhhdCBzcGVjaWZpYyBtb2R1bGUuIEkgbmVlZCB0byBnZXQgYSByZWFsbHkgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgaW50ZWdyYXRlcyB3aXRoIHRoZSBvdmVyYWxsIHN5c3RlbSBiZWhhdmlvciwgZ2l2ZW4gdGhlIGNvbmZpZ3VyYXRpb24gc2V0dXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VnNl9sb2NhbC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvTWFrZWZpbGU9MjQ9aXB2Ni0kKENPTkZJR19ORVRMQUJFTCkgJiM0Mzs9IGNhbGlwc28ub1xubmV0L2lwdjYvTWFrZWZpbGU6MjU6aXB2Ni0kKENPTkZJR19JUFY2X1NFRzZfTFdUVU5ORUwpICYjNDM7PSBzZWc2X2lwdHVubmVsLm8gc2VnNl9sb2NhbC5vXG5uZXQvaXB2Ni9NYWtlZmlsZS0yNi1pcHY2LSQoQ09ORklHX0lQVjZfU0VHNl9ITUFDKSAmIzQzOz0gc2VnNl9obWFjLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTEwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipDaGVja2luZyB0aGUgRm91bmRhdGlvbjogSVB2NiBTZWdtZW50IFJvdXRpbmcgYW5kIGl0cyBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJIHNlZSB0aGF0IGBDT05GSUdfSVBWNl9TRUc2X0xXVFVOTkVMYCBpcyByZXF1aXJlZC4gVGhhdCB0ZWxscyBtZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIElQdjYgU2VnbWVudCBSb3V0aW5nIG92ZXIgTHdUdW4uIEJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyIGRvd24gdGhpcyBwYXRoLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGF2YWlsYWJsZSBhbmQsIGlkZWFsbHksIGVuYWJsZWQuIEl0JiMzOTtzIGNydWNpYWwgZm9yIHRoZSBzdWJzZXF1ZW50IHN0ZXBzLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgYEtjb25maWdgIGZpbGVzIGFuZCB2ZXJpZnkgdGhlIGRlZmluaXRpb24sIGRlcGVuZGVuY2llcywgYW5kIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucyBhc3NvY2lhdGVkIHdpdGggYENPTkZJR19JUFY2X1NFRzZfTFdUVU5ORUxgLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgY2x1ZXMgYWJvdXQgaXRzIGRlcGVuZGVuY2llcyBvbiBvdGhlciBmZWF0dXJlcyBvciBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBJJiMzOTttIGNvbnNpZGVyaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWc9Mjc5PWNvbmZpZyBJUFY2X1BJTVNNX1YyXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yODUtXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTI4Ny1cdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODY5CgkJCQkJCQlvdXRwdXQ6IDc0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqRGVjb25zdHJ1Y3RpbmcgSVBWNl9TRUc2X0xXVFVOTkVMIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBJUFY2X1NFRzZfTFdUVU5ORUxgLiBUaGF0IG1lYW5zIGRpdmluZyBkZWVwLiBJdCYjMzk7cyBub3QganVzdCBhIG1hdHRlciBvZiBsaXN0aW5nIHRoZW07IEkgbmVlZCB0byAqdW5kZXJzdGFuZCogdGhlbS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBwdWxsaW5nIHVwIHRoZSByZWxldmFudCBkb2N1bWVudGF0aW9uLCBjb2RlLCB3aGF0ZXZlciBzb3VyY2VzIGFyZSBhdmFpbGFibGUuIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgbG9vayBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBtb2R1bGUgZGVjbGFyYXRpb25zIGFuZCBhbnkgcmVsZXZhbnQgaW5jbHVkZSBmaWxlcyBmaXJzdC4gV2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkIHRvIG1ha2UgYElQVjZfU0VHNl9MV1RVTk5FTGAgZnVuY3Rpb25hbD8gV2hhdCBvdGhlciB1bmRlcmx5aW5nIG5ldHdvcmsgY29tcG9uZW50cywgb3Igc3Vic3lzdGVtcyBpcyB0aGlzIGxpa2VseSB0byBkZXBlbmQgb24/IFRoaW5raW5nIGFib3V0IHRoaXMsIEkgbmVlZCB0byBjb25zaWRlciB0aGF0IGl0JiMzOTtzIGxpa2VseSBkZXBlbmRlbnQgb24gSVB2NiwgYW5kIHByb2JhYmx5IGEgc3BlY2lmaWMgY29udHJvbCBwYXRoLgpJJiMzOTtsbCBhbHNvIGhhdmUgdG8gY29uc2lkZXIgdGhlIHBvdGVudGlhbCBpbnRlcnBsYXkgYmV0d2VlbiB0aGUgZGVwZW5kZW5jaWVzIGFuZCwgc2F5LCBmZWF0dXJlcy4gQSBkZXBlbmRlbmN5IGNvdWxkIGJlIGhhcmQsIG9yIHNvZnQuIEkgaGF2ZSB0byBzZWUgaG93IGl0IGNhbiBhZmZlY3QgdGhpbmdzIGRvd24gc3RyZWFtLgoKSSYjMzk7bGwgYmUgdGFraW5nIG5vdGVzIGFzIEkgZ287IHNrZXRjaGluZyBvdXQgYSBkaWFncmFtIHBlcmhhcHMuIEkgbmVlZCB0byBjbGVhcmx5IGRlZmluZSB0aGUgYm91bmRhcnkgYXJvdW5kIHRoaXMgZmVhdHVyZSwgc28gSSBjYW4gYmV0dGVyIHVuZGVyc3RhbmQgaXRzIGZ1bmN0aW9uLiBXaGF0IGFyZSB0aGUgKm1pbmltYWwqIGRlcGVuZGVuY2llcyBmb3IgYmFzaWMgZnVuY3Rpb25hbGl0eSwgYW5kIHRoZW4gd2hhdCBhcmUgdGhlIGRlcGVuZGVuY2llcyBmb3IgKmFkdmFuY2VkKiBmZWF0dXJlcy4gVGhpcyB3aWxsIHNob3cgbWUgd2hlcmUgdGhlIGNvbXBsZXhpdGllcyBjb3VsZCBhcmlzZSBhbmQgd2hlcmUgdG8gZm9jdXMgdGhlIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWc9Mjc5PWNvbmZpZyBJUFY2X1BJTVNNX1YyXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yODUtXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTI4Ny1cdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyODA6XHRcdGJvb2wgXCYjMzQ7SVB2NjogUElNLVNNIHZlcnNpb24gMiBzdXBwb3J0XCYjMzQ7XG4gMjgxOlx0XHRkZXBlbmRzIG9uIElQVjZfTVJPVVRFXG4gMjgyOlx0XHRoZWxwXG4gMjgzOlx0XHQgIFN1cHBvcnQgZm9yIElQdjYgUElNIG11bHRpY2FzdCByb3V0aW5nIHByb3RvY29sIFBJTS1TTXYyLlxuIDI4NDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIDI4NTpcdFxuIDI4NjpcdGNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcbiAyODc6XHRcdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbiAyODg6XHRcdGRlcGVuZHMgb24gSVBWNlxuIDI4OTpcdFx0c2VsZWN0IExXVFVOTkVMXG4gMjkwOlx0XHRzZWxlY3QgRFNUX0NBQ0hFXG4gMjkxOlx0XHRzZWxlY3QgSVBWNl9NVUxUSVBMRV9UQUJMRVNcbiAyOTI6XHRcdGhlbHBcbiAyOTM6XHRcdCAgU3VwcG9ydCBmb3IgZW5jYXBzdWxhdGlvbiBvZiBwYWNrZXRzIHdpdGhpbiBhbiBvdXRlciBJUHY2XG4gMjk0Olx0XHQgIGhlYWRlciBhbmQgYSBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIHVzaW5nIHRoZSBsaWdodHdlaWdodFxuIDI5NTpcdFx0ICB0dW5uZWxzIG1lY2hhbmlzbS4gQWxzbyBlbmFibGUgc3VwcG9ydCBmb3IgYWR2YW5jZWQgbG9jYWxcbiAyOTY6XHRcdCAgcHJvY2Vzc2luZyBvZiBTUnY2IHBhY2tldHMgYmFzZWQgb24gdGhlaXIgYWN0aXZlIHNlZ21lbnQuXG4gMjk3Olx0XG4gMjk4Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gMjk5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NTQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEZXBlbmRlbmNpZXMgYW5kIENvbmZpZ3VyYXRpb24gU2NydXRpbnkqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBjb2RlLCBhbmQgaXQmIzM5O3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCBgSVBWNl9TRUc2X0xXVFVOTkVMYCBoYXMgYSBkaXJlY3QgZGVwZW5kZW5jeSBvbiBgSVBWNmAuIFRoYXQgbWFrZXMgc2Vuc2UsIGJ1dCBJIGFsd2F5cyBsaWtlIHRvIGNvbmZpcm0gdGhlc2UgdGhpbmdzLiBNb3Zpbmcgb24sIEkgc2VlIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgaXMgZ3VhcmRlZCBieSBhbiBgI2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVmAuIFJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGJldHRlci4gQ2xlYXJseSwgdGhlIHdheSBpdCYjMzk7cyB1c2VkIHN1Z2dlc3RzIGl0IG1pZ2h0IGJlIGNyaXRpY2FsIGZvciBob3cgdGhpcyBwYXJ0aWN1bGFyIGZlYXR1cmUgZnVuY3Rpb25zLiBJJiMzOTtsbCBtYWtlIGEgbWVudGFsIG5vdGUgdG8gZGlnIGludG8gdGhlIGRlZmluaXRpb24gb2YgYENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVmAgYW5kIHdoYXQgaXQgYWN0dWFsbHkgY29udHJvbHMgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYW5kIGhvdyB0aGF0IGltcGFjdHMgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBJIHdhbnQgdG8gaGF2ZSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9MM19NQVNURVJfREVWJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTU4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE5ldHdvcmsgQ29yZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBkaWdnaW5nLiBJIG5lZWQgdG8gZmluZCBzb21ldGhpbmcgcmVsYXRlZCB0byBgTkVUX0wzX01BU1RFUl9ERVZgLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJiMzOTttIHByZXR0eSBzdXJlIHRoYXQmIzM5O3MgZ29pbmcgdG8gYmUgYSBrZXkgbWFjcm8gb3IgdmFyaWFibGUgdXNlZCB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCYjMzk7cyBuZXR3b3JrIHN0YWNrLiBBbmQgd2hlcmUgaXMgdGhhdCB1c3VhbGx5IGxvY2F0ZWQ/IFByZWNpc2VseSwgYG5ldC9gIOKAkyB0aGF0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIGJlZ2luIG15IHNlYXJjaC4gVGhlIG5ldHdvcmsgZGlyZWN0b3J5IGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciBhbnl0aGluZyBsb3ctbGV2ZWwgbGlrZSB0aGlzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgdHVybiB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9MM19NQVNURVJfREVWJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbDNtZGV2L0tjb25maWctNS1cbm5ldC9sM21kZXYvS2NvbmZpZzo2OmNvbmZpZyBORVRfTDNfTUFTVEVSX0RFVlxubmV0L2wzbWRldi9LY29uZmlnLTctXHRib29sIFwmIzM0O0wzIE1hc3RlciBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjA0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSBwZXJzcGVjdGl2ZSBvZiBzb21lb25lIGtub3dsZWRnZWFibGUgaW4gdGhlIGZpZWxkOgoKKipEaWdnaW5nIGludG8gTmV0d29yayBMYXllciBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFzc29jaWF0ZWQgd2l0aCBgTkVUX0wzX01BU1RFUl9ERVZgLiBUaGlzIGlzIGEgY3JpdGljYWwgY29tcG9uZW50LCBhbmQga25vd2luZyBpdHMgcmVsYXRpb25zaGlwcyBpcyBmdW5kYW1lbnRhbCBmb3IgdHJvdWJsZXNob290aW5nLCBvcHRpbWl6YXRpb24sIG9yIG1ha2luZyBhbnkgY2hhbmdlcyB3aXRob3V0IGludHJvZHVjaW5nIHVuZm9yZXNlZW4gY29uc2VxdWVuY2VzLiBJIGhhdmUgdG8gZ3Jhc3AgZXZlcnl0aGluZyB0aGF0IGRlcGVuZHMgb24gaXQgdG8gZW5zdXJlIEkgZ2V0IGEgaG9saXN0aWMgdmlldy4gVGltZSB0byBtYXAgdGhlIGxhbmRzY2FwZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbDNtZGV2L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBDb25maWd1cmF0aW9uIGZvciBMMyBtYXN0ZXIgZGV2aWNlIHN1cHBvcnRcbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE5FVF9MM19NQVNURVJfREVWXG4gICA3Olx0XHRib29sIFwmIzM0O0wzIE1hc3RlciBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBJTkVUIHx8IElQVjZcbiAgIDk6XHRcdGhlbHBcbiAgMTA6XHRcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgZ2x1ZSBiZXR3ZWVuIGNvcmUgbmV0d29ya2luZyBjb2RlIGFuZCBkZXZpY2VcbiAgMTE6XHRcdCAgZHJpdmVycyB0byBzdXBwb3J0IEwzIG1hc3RlciBkZXZpY2VzIGxpa2UgVlJGLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTA4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyB0aGUgUmVsZXZhbnQgQ29uZmlndXJhdGlvbnMgYW5kIENvZGUqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGNvbmZpZ3VyYXRpb25zLCBzcGVjaWZpY2FsbHkgYE5FVF9MM19NQVNURVJfREVWYCBhbmQgYElQVjZfU0VHNl9MV1RVTk5FTGAuIFRoYXQmIzM5O3MgdGhlIHNldHVwLiBUaGlzIHBhdGNoIHRhcmdldHMgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCB3aXRoaW4gYG5ldC9pcHY2L3NlZzZfbG9jYWwuY2AuIFRoYXQgZnVuY3Rpb24gKmlzKiByZWFjaGFibGUgYW5kIGl0IGZ1bmN0aW9ucyBhcyBleHBlY3RlZCwgdGhhdCYjMzk7cyBnb29kIHRvIGtub3cuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRlZXBseSBleGFtaW5lIHRoZSBsb2dpYyB3aXRoaW4gYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBhbmQgYWxzbyBgaW5wdXRfYWN0aW9uX2VuZF9kdDQ2YCwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIGFueSBpbnRlcmFjdGlvbnMgb3IgaW1wbGljYXRpb25zIHJlbGF0ZWQgdG8gYEZvY3VzU3ltYm9sc2AuIExldCYjMzk7cyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lucHV0X2FjdGlvbl9lbmRfZHQ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvc2VnNl9sb2NhbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L3NlZzZfbG9jYWwuYz0xMTMxPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZW5kX2R0X3ZyZl9jb3JlKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTExNzYtXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTE3NzpzdGF0aWMgaW50IGlucHV0X2FjdGlvbl9lbmRfZHQ0KHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTE3OC1cdFx0XHRcdHN0cnVjdCBzZWc2X2xvY2FsX2x3dCAqc2x3dClcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM9MTMwND1zdGF0aWMgaW50IHNlZzZfZW5kX2R0NDZfYnVpbGQoc3RydWN0IHNlZzZfbG9jYWxfbHd0ICpzbHd0LCBjb25zdCB2b2lkICpjZmcsXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTEzMDktXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTMxMDpzdGF0aWMgaW50IGlucHV0X2FjdGlvbl9lbmRfZHQ0NihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTEzMTEtXHRcdFx0XHQgc3RydWN0IHNlZzZfbG9jYWxfbHd0ICpzbHd0KVxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMzIxLVx0Y2FzZSBJUFBST1RPX0lQSVA6XG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTMyMjpcdFx0cmV0dXJuIGlucHV0X2FjdGlvbl9lbmRfZHQ0KHNrYiwgc2x3dCk7XG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTMyMy1cdGNhc2UgSVBQUk9UT19JUFY2OlxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0xNDc0PXN0YXRpYyBzdHJ1Y3Qgc2VnNl9hY3Rpb25fZGVzYyBzZWc2X2FjdGlvbl90YWJsZVtdID0ge1xuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTE4LSNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNTE5Olx0XHQuaW5wdXRcdFx0PSBpbnB1dF9hY3Rpb25fZW5kX2R0NCxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTIwLVx0XHQuc2x3dF9vcHNcdD0ge1xuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTQ1LSNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNTQ2Olx0XHQuaW5wdXRcdFx0PSBpbnB1dF9hY3Rpb25fZW5kX2R0NDYsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU0Ny1cdFx0LnNsd3Rfb3BzXHQ9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM5MgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgRnVuY3Rpb24qKgoKT2theSwgc28gYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgY2hlY2sgaWYgaXQmIzM5O3MgcG90ZW50aWFsbHkgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIExldCYjMzk7cyBzZWUgaWYgaXQmIzM5O3MgdHJlYXRlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgYW55d2hlcmUuIEFoLCB0aGVyZSBpdCBpcyEgSXQmIzM5O3MgYmVpbmcgYXNzaWduZWQgdG8gdGhlIGAuaW5wdXRgIG1lbWJlciBvZiBgc2VnNl9hY3Rpb25fdGFibGVgLiBSaWdodCwgdGhhdCBtZWFucyBpdCAqd29uJiMzOTt0KiBiZSBpbmxpbmVkLiAKCkhvbGQgb24sIHRob3VnaC4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZ5IGEgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIHJhdGhlciB0aGFuIGludGVybmFsIHN0YXRpYyBoZWxwZXJzLCB3aGljaCAqd291bGQqIGJlIGlubGluZWQuIFNpbmNlIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgaXMgYmVpbmcgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciwgaXQgKndpbGwqIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gU28sIHRoYXQmIzM5O3MgZmluZS4KCkJ1dCBhIGNyaXRpY2FsIHF1ZXN0aW9uIHJlbWFpbnM6IHdoYXQmIzM5O3MgdGhlIGFjdHVhbCBlbnRyeSBwb2ludOKAlHRoZSBmdW5jdGlvbiB0aGF0JiMzOTtzICpjYWxsaW5nKiB0aGlzIGAuaW5wdXRgIGhhbmRsZXI/IEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhlIGBzZWc2X2FjdGlvbl90YWJsZWAgdG8gZmluZCB0aGUgY2FsbGluZyBmdW5jdGlvbi4gSSBuZWVkIHRoYXQgZm9yIGEgY29tcGxldGUgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XFwuaW5wdXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9zZWc2X2xvY2FsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvc2VnNl9sb2NhbC5jPTE0NzQ9c3RhdGljIHN0cnVjdCBzZWc2X2FjdGlvbl9kZXNjIHNlZzZfYWN0aW9uX3RhYmxlW10gPSB7XG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE0NzktXHRcdFx0XHQgIFNFRzZfRl9MT0NBTF9GTEFWT1JTLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE0ODA6XHRcdC5pbnB1dFx0XHQ9IGlucHV0X2FjdGlvbl9lbmQsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTQ4MS1cdH0sXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE0ODctXHRcdFx0XHQgIFNFRzZfRl9BVFRSKFNFRzZfTE9DQUxfT0lGKSxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNDg4Olx0XHQuaW5wdXRcdFx0PSBpbnB1dF9hY3Rpb25fZW5kX3gsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTQ4OS1cdH0sXG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE0OTMtXHRcdC5vcHRhdHRyc1x0PSBTRUc2X0ZfTE9DQUxfQ09VTlRFUlMsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTQ5NDpcdFx0LmlucHV0XHRcdD0gaW5wdXRfYWN0aW9uX2VuZF90LFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE0OTUtXHR9LFxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNDk5LVx0XHQub3B0YXR0cnNcdD0gU0VHNl9GX0xPQ0FMX0NPVU5URVJTLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1MDA6XHRcdC5pbnB1dFx0XHQ9IGlucHV0X2FjdGlvbl9lbmRfZHgyLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1MDEtXHR9LFxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTA1LVx0XHQub3B0YXR0cnNcdD0gU0VHNl9GX0xPQ0FMX0NPVU5URVJTLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1MDY6XHRcdC5pbnB1dFx0XHQ9IGlucHV0X2FjdGlvbl9lbmRfZHg2LFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1MDctXHR9LFxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTExLVx0XHQub3B0YXR0cnNcdD0gU0VHNl9GX0xPQ0FMX0NPVU5URVJTLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1MTI6XHRcdC5pbnB1dFx0XHQ9IGlucHV0X2FjdGlvbl9lbmRfZHg0LFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1MTMtXHR9LFxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTE4LSNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNTE5Olx0XHQuaW5wdXRcdFx0PSBpbnB1dF9hY3Rpb25fZW5kX2R0NCxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTIwLVx0XHQuc2x3dF9vcHNcdD0ge1xuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTM4LSNlbmRpZlxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1Mzk6XHRcdC5pbnB1dFx0XHQ9IGlucHV0X2FjdGlvbl9lbmRfZHQ2LFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1NDAtXHR9LFxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTQ1LSNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNTQ2Olx0XHQuaW5wdXRcdFx0PSBpbnB1dF9hY3Rpb25fZW5kX2R0NDYsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU0Ny1cdFx0LnNsd3Rfb3BzXHQ9IHtcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU1NS1cdFx0Lm9wdGF0dHJzXHQ9IFNFRzZfRl9MT0NBTF9DT1VOVEVSUyxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNTU2Olx0XHQuaW5wdXRcdFx0PSBpbnB1dF9hY3Rpb25fZW5kX2I2LFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1NTctXHR9LFxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTYxLVx0XHQub3B0YXR0cnNcdD0gU0VHNl9GX0xPQ0FMX0NPVU5URVJTLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1NjI6XHRcdC5pbnB1dFx0XHQ9IGlucHV0X2FjdGlvbl9lbmRfYjZfZW5jYXAsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU2My1cdFx0LnN0YXRpY19oZWFkcm9vbVx0PSBzaXplb2Yoc3RydWN0IGlwdjZoZHIpLFxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTY4LVx0XHQub3B0YXR0cnNcdD0gU0VHNl9GX0xPQ0FMX0NPVU5URVJTLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1Njk6XHRcdC5pbnB1dFx0XHQ9IGlucHV0X2FjdGlvbl9lbmRfYnBmLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1NzAtXHR9LFxuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0yNjc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbHd0dW5uZWxfZW5jYXBfb3BzIHNlZzZfbG9jYWxfb3BzID0ge1xuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0yNjc2LVx0LmRlc3Ryb3lfc3RhdGVcdD0gc2VnNl9sb2NhbF9kZXN0cm95X3N0YXRlLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjI2Nzc6XHQuaW5wdXRcdFx0PSBzZWc2X2xvY2FsX2lucHV0LFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTI2NzgtXHQuZmlsbF9lbmNhcFx0PSBzZWc2X2xvY2FsX2ZpbGxfZW5jYXAsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwNTIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5hdmlnYXRpbmcgdGhlIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGNvZGUsIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBncmFicyBteSBhdHRlbnRpb24gaXMgYHNlZzZfbG9jYWxfaW5wdXRgLiBUaGF0JiMzOTtzIHdoZXJlIHdlJiMzOTtyZSBzdGFydGluZy4gTXkgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIHplcm8gaW4gb24gdGhhdCBmdW5jdGlvbi4gSXTigJlzIHRoZSBlbnRyeSBwb2ludCwgdGhlIHN0YXJ0aW5nIGxpbmUuIE5vdywgd2hhdCYjMzk7cyBpdCBkb2luZz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYHNlZzZfbG9jYWxfaW5wdXRgIGluc2lkZSBhbmQgb3V0LiBJdOKAmXMgdGhlIGtleS4gTGV0JiMzOTtzIHN0YXJ0IHRoZSBpbnZlc3RpZ2F0aW9uIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWc2X2xvY2FsX2lucHV0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvc2VnNl9sb2NhbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L3NlZzZfbG9jYWwuYz0xNTk0PXN0YXRpYyB2b2lkIHNlZzZfbG9jYWxfdXBkYXRlX2NvdW50ZXJzKHN0cnVjdCBzZWc2X2xvY2FsX2x3dCAqc2x3dCxcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTYxMS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNjEyOnN0YXRpYyBpbnQgc2VnNl9sb2NhbF9pbnB1dF9jb3JlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE2MTMtXHRcdFx0XHQgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTYzMy1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNjM0OnN0YXRpYyBpbnQgc2VnNl9sb2NhbF9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE2MzUte1xuLS1cbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNjQzLVx0XHRcdCAgICAgICBkZXZfbmV0KHNrYi1cdTAwM2VkZXYpLCBOVUxMLCBza2IsIHNrYi1cdTAwM2VkZXYsIE5VTEwsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTY0NDpcdFx0XHQgICAgICAgc2VnNl9sb2NhbF9pbnB1dF9jb3JlKTtcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNjQ1LVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE2NDY6XHRyZXR1cm4gc2VnNl9sb2NhbF9pbnB1dF9jb3JlKGRldl9uZXQoc2tiLVx1MDAzZWRldiksIE5VTEwsIHNrYik7XG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTY0Ny19XG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTI2NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBsd3R1bm5lbF9lbmNhcF9vcHMgc2VnNl9sb2NhbF9vcHMgPSB7XG4tLVxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTI2NzYtXHQuZGVzdHJveV9zdGF0ZVx0PSBzZWc2X2xvY2FsX2Rlc3Ryb3lfc3RhdGUsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MjY3NzpcdC5pbnB1dFx0XHQ9IHNlZzZfbG9jYWxfaW5wdXQsXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMjY3OC1cdC5maWxsX2VuY2FwXHQ9IHNlZzZfbG9jYWxfZmlsbF9lbmNhcCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODc0NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBgc2VnNl9sb2NhbF9pbnB1dF9jb3JlYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyBkYXRhIGlzIHByb2Nlc3NlZCBpbiB0aGlzIGBzZWc2X2xvY2FsX2lucHV0X2NvcmVgIGNvbnRleHQuIEl0ICpsb29rcyogbGlrZSB0aGUgY29yZSBvZiB0aGUgaW5wdXQgcHJvY2Vzc2luZyBwcm9iYWJseSBoYXBwZW5zIHZpYSBhIGNhbGwgdG8gYGRlc2MtJmd0O2lucHV0KHNrYiwgc2x3dCk7YC4gVGhhdCBmZWVscyBsaWtlIHRoZSBsaWtlbHkgZW50cnkgcG9pbnQuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSYjMzk7bSBnb2luZyB0byBqdW1wIHJpZ2h0IGludG8gZXhhbWluaW5nIHRoZSBgc2VnNl9sb2NhbF9pbnB1dF9jb3JlYCBmdW5jdGlvbiBpdHNlbGYuIFVuZGVyc3RhbmRpbmcgdGhpcyBmdW5jdGlvbiBpcyBnb2luZyB0byBiZSBrZXkgdG8gZGlzc2VjdGluZyB0aGUgZGF0YSBmbG93LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgZ29pbmcgb24gaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjYvc2VnNl9sb2NhbC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTYxMiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNjEyOlx0c3RhdGljIGludCBzZWc2X2xvY2FsX2lucHV0X2NvcmUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssXG4xNjEzOlx0XHRcdFx0XHQgc3RydWN0IHNrX2J1ZmYgKnNrYilcbjE2MTQ6XHR7XG4xNjE1Olx0XHRzdHJ1Y3QgZHN0X2VudHJ5ICpvcmlnX2RzdCA9IHNrYl9kc3Qoc2tiKTtcbjE2MTY6XHRcdHN0cnVjdCBzZWc2X2FjdGlvbl9kZXNjICpkZXNjO1xuMTYxNzpcdFx0c3RydWN0IHNlZzZfbG9jYWxfbHd0ICpzbHd0O1xuMTYxODpcdFx0dW5zaWduZWQgaW50IGxlbiA9IHNrYi1cdTAwM2VsZW47XG4xNjE5Olx0XHRpbnQgcmM7XG4xNjIwOlx0XG4xNjIxOlx0XHRzbHd0ID0gc2VnNl9sb2NhbF9sd3R1bm5lbChvcmlnX2RzdC1cdTAwM2Vsd3RzdGF0ZSk7XG4xNjIyOlx0XHRkZXNjID0gc2x3dC1cdTAwM2VkZXNjO1xuMTYyMzpcdFxuMTYyNDpcdFx0cmMgPSBkZXNjLVx1MDAzZWlucHV0KHNrYiwgc2x3dCk7XG4xNjI1Olx0XG4xNjI2Olx0XHRpZiAoIXNlZzZfbHd0dW5uZWxfY291bnRlcnNfZW5hYmxlZChzbHd0KSlcbjE2Mjc6XHRcdFx0cmV0dXJuIHJjO1xuMTYyODpcdFxuMTYyOTpcdFx0c2VnNl9sb2NhbF91cGRhdGVfY291bnRlcnMoc2x3dCwgbGVuLCByYyk7XG4xNjMwOlx0XG4xNjMxOlx0XHRyZXR1cm4gcmM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyODcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA0OTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFNFRzYgTG9jYWwgSW5wdXQgYW5kIEFjdGlvbiBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGUgU0VHNiBsb2NhbCBpbnB1dCBpcyBoYW5kbGVkLiBgc2VnNl9sb2NhbF9pbnB1dF9jb3JlYCBpcyB0aGUgY29yZSBmdW5jdGlvbiwgYnV0IGl0JiMzOTtzIHN0YXRpYywgc28gaXQmIzM5O3Mgbm90IGRpcmVjdGx5IGV4cG9zZWQuIGBzZWc2X2xvY2FsX2lucHV0YCBpcyBhbHNvIHN0YXRpYywgYnV0IGl0JiMzOTtzIGFzc2lnbmVkIHRvIHRoZSBgLmlucHV0YCBtZW1iZXIgb2YgYHNlZzZfbG9jYWxfb3BzYC4gSW50ZXJlc3RpbmcsIGJ1dCBub3QgdGhlIHdob2xlIHBpY3R1cmUuIFRoZW4gSSBzZWUgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBpcyBhbHNvIGFzc2lnbmVkIHRvIGAuaW5wdXRgLCBidXQgaW4gdGhlIGBzZWc2X2FjdGlvbl90YWJsZWAuCgpUaGlzIG1lYW5zIGJvdGggYHNlZzZfbG9jYWxfaW5wdXRgIGFuZCBgaW5wdXRfYWN0aW9uX2VuZF9kdDRgIGFyZSBmdW5jdGlvbiBwb2ludGVycyBhbmQgd2lsbCBoYXZlIHRoZWlyIG93biBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBHaXZlbiB0aGlzLCBJIGNhbiBmb2N1cyBvbiB0aG9zZSB0d28uIFdhaXQsIGFuZCBgaW5wdXRfYWN0aW9uX2VuZF9kdDQ2YCBjYWxscyBgaW5wdXRfYWN0aW9uX2VuZF9kdDRgIGZvciBJUHY0Li4uIFNvIGxldCYjMzk7cyBpbmNsdWRlIHRoYXQgb25lIHRvbyEKCkkgbmVlZCB0byBjb25maXJtIGlmIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgaXMgYWxzbyBzdGF0aWMuIEl0IGlzIHN0YXRpYywgYnV0IGJlY2F1c2UgaXQmIzM5O3MgYXNzaWduZWQgdG8gYSBzdHJ1Y3QgbWVtYmVyLCBpdCYjMzk7cyBub3QgaW5saW5lZC4gSXQmIzM5O3Mgc2FmZSB0byBhZGQgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBhbmQgYGlucHV0X2FjdGlvbl9lbmRfZHQ0NmAgdG8gYEZvY3VzU3ltYm9sc2AuIEFjdHVhbGx5LCBnaXZlbiB0aGUgY2FsbCBzdHJ1Y3R1cmUsIEkgY2FuIGZvY3VzIHNvbGVseSBvbiB0aGVzZSB0d28sIGl0JiMzOTtzIGEgY2xlYW5lciBhcHByb2FjaC4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgcmlnaHQga2VybmVsIGNvbmZpZ3MgZW5hYmxlZC4gSSBrbm93IEkgbmVlZCBgSVBWNl9TRUc2X0xXVFVOTkVMYCBhbmQgYE5FVF9MM19NQVNURVJfREVWYCwgYnV0IGFyZSB0aGVyZSBhbnkgb3RoZXJzPyBgSVBWNl9TRUc2X0xXVFVOTkVMYCBkZXBlbmRzIG9uIGBJUFY2YCwgYW5kIGBORVRfTDNfTUFTVEVSX0RFVmAgZGVwZW5kcyBvbiBlaXRoZXIgYElORVRgIG9yIGBJUFY2YC4gU28sIHRoZSBmaW5hbCBsaXN0IGZvciBgRW5hYmxlQ29uZmlnc2AgaXM6IGBJUFY2YCwgYElQVjZfU0VHNl9MV1RVTk5FTGAsIGFuZCBgTkVUX0wzX01BU1RFUl9ERVZgLgoKSSYjMzk7bGwgZG91YmxlLWNoZWNrIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgZGVmaW5pdGlvbiBpbiBgbmV0L2lwdjYvc2VnNl9sb2NhbC5jYCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY2L3NlZzZfbG9jYWwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExNzcsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTE3NzpcdHN0YXRpYyBpbnQgaW5wdXRfYWN0aW9uX2VuZF9kdDQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbjExNzg6XHRcdFx0XHRcdHN0cnVjdCBzZWc2X2xvY2FsX2x3dCAqc2x3dClcbjExNzk6XHR7XG4xMTgwOlx0XHRlbnVtIHNrYl9kcm9wX3JlYXNvbiByZWFzb247XG4xMTgxOlx0XHRzdHJ1Y3QgaXBoZHIgKmlwaDtcbjExODI6XHRcbjExODM6XHRcdGlmICghZGVjYXBfYW5kX3ZhbGlkYXRlKHNrYiwgSVBQUk9UT19JUElQKSlcbjExODQ6XHRcdFx0Z290byBkcm9wO1xuMTE4NTpcdFxuMTE4NjpcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCBpcGhkcikpKVxuMTE4NzpcdFx0XHRnb3RvIGRyb3A7XG4xMTg4Olx0XG4xMTg5Olx0XHRtZW1zZXQoSVBDQihza2IpLCAwLCBzaXplb2YoKklQQ0Ioc2tiKSkpO1xuMTE5MDpcdFx0SVBDQihza2IpLVx1MDAzZWlpZiA9IHNrYi1cdTAwM2Vza2JfaWlmO1xuMTE5MTpcdFxuMTE5MjpcdFx0c2tiID0gZW5kX2R0X3ZyZl9jb3JlKHNrYiwgc2x3dCwgQUZfSU5FVCk7XG4xMTkzOlx0XHRpZiAoIXNrYilcbjExOTQ6XHRcdFx0LyogcGFja2V0IGhhcyBiZWVuIHByb2Nlc3NlZCBhbmQgY29uc3VtZWQgYnkgdGhlIFZSRiAqL1xuMTE5NTpcdFx0XHRyZXR1cm4gMDtcbjExOTY6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2MjIKCQkJCQkJCW91dHB1dDogMTQ0CgkJCQkJCQl0aG91Z2h0czogMjM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIElQdjYgU1J2NiBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgdHdvIGtleSBsaW5lczogYG1lbXNldChJUENCKHNrYiksIDAsIHNpemVvZigqSVBDQihza2IpKSk7YCBhbmQgYElQQ0Ioc2tiKS0mZ3Q7aWlmID0gc2tiLSZndDtza2JfaWlmO2AuIEZyb20gYSBmdW5jdGlvbmFsIHN0YW5kcG9pbnQsIHRoaXMgaXMgYSBkZWZpbml0ZSBpbXByb3ZlbWVudC4gSXQmIzM5O3MgZGVzaWduZWQgdG8gcHJldmVudCB0aGUgSVB2NCBzdGFjayBmcm9tIGFjY2lkZW50YWxseSB1c2luZyB1bmluaXRpYWxpemVkIGRhdGEgd2l0aGluIHRoZSBgSVBDQmAgY29udHJvbCBibG9jayBhZnRlciBhbiBJUHY2LXRvLUlQdjQgZGVjYXBzdWxhdGlvbiwgc3BlY2lmaWNhbGx5IHdoZW4gZGVhbGluZyB3aXRoIFNlZ21lbnQgUm91dGluZyAoU1J2NikgYW5kIGl0cyBFbmQuRFQ0L0VuZC5EVDQ2IGFjdGlvbnMuIFRoYXQgbWFrZXMgaXQgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlLiBVbmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MgaXMgYWx3YXlzIGEgcG90ZW50aWFsIHZlY3RvciBmb3IgZXhwbG9pdGF0aW9uLCBzbyB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgd2FudCB0byBmdXp6IHRob3JvdWdobHkuCgpUaGUgcGF0Y2ggYXBwZWFycyB0byBiZSByZWxldmFudCBpZiBgSVBWNl9TRUc2X0xXVFVOTkVMYCBhbmQgYE5FVF9MM19NQVNURVJfREVWYCBhcmUgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZy4KCk15IGZvY3VzIHNob3VsZCBiZSBvbiB0aGUgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBhbmQgYGlucHV0X2FjdGlvbl9lbmRfZHQ0NmAgZnVuY3Rpb25zOyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBhY3R1YWwgcHJvY2Vzc2luZyB0YWtlcyBwbGFjZS4gVGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBwYXRjaCBpcyBzb3VuZDogaXQgYWRkcmVzc2VzIGEgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWUgd2l0aGluIGEgY3JpdGljYWwgYXJlYSBvZiB0aGUgbmV0d29yayBzdGFjay4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIG5vdyB0b3VjaGVkIHdoZW4gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBkZWNhcHN1bGF0aW5nIElQdjQgcGFja2V0cyB3aXRoaW4gdGhlIFNSdjYgY29udGV4dC4KCkkmIzM5O20gbWFya2luZyB0aGlzIGFzIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2X1NFRzZfTFdUVU5ORUwmIzM0OywKICAgICYjMzQ7TkVUX0wzX01BU1RFUl9ERVYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpbnB1dF9hY3Rpb25fZW5kX2R0NCYjMzQ7LAogICAgJiMzNDtpbnB1dF9hY3Rpb25fZW5kX2R0NDYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gdGhlIElQdjYgU2VnbWVudCBSb3V0aW5nIChTUnY2KSBsb2NhbCBwcm9jZXNzaW5nIGNvZGUgd2hlbiBkZWNhcHN1bGF0aW5nIElQdjQgcGFja2V0cyAoRW5kLkRUNC9FbmQuRFQ0NiBhY3Rpb25zKS4gSXQgY2xlYXJzIHRoZSBJUENCIGNvbnRyb2wgYmxvY2sgYW5kIHNldHMgdGhlIGlpZi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjZfU0VHNl9MV1RVTk5FTCYjMzQ7LAogICAgJiMzNDtORVRfTDNfTUFTVEVSX0RFViYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lucHV0X2FjdGlvbl9lbmRfZHQ0JiMzNDssCiAgICAmIzM0O2lucHV0X2FjdGlvbl9lbmRfZHQ0NiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBpbiB0aGUgSVB2NiBTZWdtZW50IFJvdXRpbmcgKFNSdjYpIGxvY2FsIHByb2Nlc3NpbmcgY29kZSB3aGVuIGRlY2Fwc3VsYXRpbmcgSVB2NCBwYWNrZXRzIChFbmQuRFQ0L0VuZC5EVDQ2IGFjdGlvbnMpLiBJdCBjbGVhcnMgdGhlIElQQ0IgY29udHJvbCBibG9jayBhbmQgc2V0cyB0aGUgaWlmLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQwOjMxLjc1MTgxNDY1M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwODAyNTUyOTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZfU0VHNl9MV1RVTk5FTFwiLFxuICAgIFwiTkVUX0wzX01BU1RFUl9ERVZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpbnB1dF9hY3Rpb25fZW5kX2R0NFwiLFxuICAgIFwiaW5wdXRfYWN0aW9uX2VuZF9kdDQ2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gdGhlIElQdjYgU2VnbWVudCBSb3V0aW5nIChTUnY2KSBsb2NhbCBwcm9jZXNzaW5nIGNvZGUgd2hlbiBkZWNhcHN1bGF0aW5nIElQdjQgcGFja2V0cyAoRW5kLkRUNC9FbmQuRFQ0NiBhY3Rpb25zKS4gSXQgY2xlYXJzIHRoZSBJUENCIGNvbnRyb2wgYmxvY2sgYW5kIHNldHMgdGhlIGlpZi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQwOjMxLjc1MTgyMTQwM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwMjkwMTU2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDZmYmM4YzgyMDI5YjFmM2Y3NzliNmVjNDQxYjU5YjJkZjhhN2JlZWJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgNCAxMTo0MDoyOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9zZWc2X2xvY2FsLmMgYi9uZXQvaXB2Ni9zZWc2X2xvY2FsLmNcXG5pbmRleCAyYjQxZTRjMGRkZGQxLi5kMDNiMzc3ZjVkYTllIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY2L3NlZzZfbG9jYWwuY1xcbisrKyBiL25ldC9pcHY2L3NlZzZfbG9jYWwuY1xcbkBAIC0xMTg2LDYgKzExODYsOSBAQCBzdGF0aWMgaW50IGlucHV0X2FjdGlvbl9lbmRfZHQ0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZihzdHJ1Y3QgaXBoZHIpKSlcXG4gXFx0XFx0Z290byBkcm9wO1xcbiBcXG4rXFx0bWVtc2V0KElQQ0Ioc2tiKSwgMCwgc2l6ZW9mKCpJUENCKHNrYikpKTtcXG4rXFx0SVBDQihza2IpLVxcdTAwM2VpaWYgPSBza2ItXFx1MDAzZXNrYl9paWY7XFxuK1xcbiBcXHRza2IgPSBlbmRfZHRfdnJmX2NvcmUoc2tiLCBzbHd0LCBBRl9JTkVUKTtcXG4gXFx0aWYgKCFza2IpXFxuIFxcdFxcdC8qIHBhY2tldCBoYXMgYmVlbiBwcm9jZXNzZWQgYW5kIGNvbnN1bWVkIGJ5IHRoZSBWUkYgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6MzMuMDU1MjkzMTk0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTk0OTkwNjU2ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNl9TRUc2X0xXVFVOTkVMXCIsXG4gICAgXCJORVRfTDNfTUFTVEVSX0RFVlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlucHV0X2FjdGlvbl9lbmRfZHQ0XCIsXG4gICAgXCJpbnB1dF9hY3Rpb25fZW5kX2R0NDZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBpbiB0aGUgSVB2NiBTZWdtZW50IFJvdXRpbmcgKFNSdjYpIGxvY2FsIHByb2Nlc3NpbmcgY29kZSB3aGVuIGRlY2Fwc3VsYXRpbmcgSVB2NCBwYWNrZXRzIChFbmQuRFQ0L0VuZC5EVDQ2IGFjdGlvbnMpLiBJdCBjbGVhcnMgdGhlIElQQ0IgY29udHJvbCBibG9jayBhbmQgc2V0cyB0aGUgaWlmLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNmZiYzhjODIwMjliMWYzZjc3OWI2ZWM0NDFiNTliMmRmOGE3YmVlYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTE6NDA6MjkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9zZWc2X2xvY2FsLmMgYi9uZXQvaXB2Ni9zZWc2X2xvY2FsLmNcbmluZGV4IDJiNDFlNGMwZGRkZDEuLmQwM2IzNzdmNWRhOWUgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9zZWc2X2xvY2FsLmNcbisrKyBiL25ldC9pcHY2L3NlZzZfbG9jYWwuY1xuQEAgLTExODYsNiArMTE4Niw5IEBAIHN0YXRpYyBpbnQgaW5wdXRfYWN0aW9uX2VuZF9kdDQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIHNpemVvZihzdHJ1Y3QgaXBoZHIpKSlcbiBcdFx0Z290byBkcm9wO1xuIFxuK1x0bWVtc2V0KElQQ0Ioc2tiKSwgMCwgc2l6ZW9mKCpJUENCKHNrYikpKTtcbitcdElQQ0Ioc2tiKS1cdTAwM2VpaWYgPSBza2ItXHUwMDNlc2tiX2lpZjtcbitcbiBcdHNrYiA9IGVuZF9kdF92cmZfY29yZShza2IsIHNsd3QsIEFGX0lORVQpO1xuIFx0aWYgKCFza2IpXG4gXHRcdC8qIHBhY2tldCBoYXMgYmVlbiBwcm9jZXNzZWQgYW5kIGNvbnN1bWVkIGJ5IHRoZSBWUkYgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQwOjMzLjA1NTI5NDI1NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxODc0MzQ3MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29yayBTdGFjayBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBuZXQvaXB2Ni9zZWc2X2xvY2FsLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgYSBjb3VwbGUgb2YgaW1wb3J0YW50IGxpbmVzOiBgbWVtc2V0KElQQ0Ioc2tiKSwgMCwgc2l6ZW9mKCpJUENCKHNrYikpKTtgIGFuZCBgSVBDQihza2IpLVx1MDAzZWlpZiA9IHNrYi1cdTAwM2Vza2JfaWlmO2AuIFJpZ2h0IGF3YXksIEkgcmVjb2duaXplIHRoaXMgYXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIElQdjYgU2VnbWVudCBSb3V0aW5nIChTUnY2KSBsb2NhbCBwcm9jZXNzaW5nIGNvZGUg4oCTIHByb2JhYmx5IGNsZWFuaW5nIHVwIHNvbWUgY29udHJvbCBibG9jayBvciBzZXR0aW5nIHRoZSBpbmdyZXNzIGludGVyZmFjZS4gSW50ZXJlc3RpbmcuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBhbmQgaWRlbnRpZnkgaG93IHRoaXMgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBmdW5jdGlvbiBpcyBpbnZva2VkLiBXZSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aGlzIGZ1bmN0aW9uOyB3aGF0IGNvbmZpZ3VyYXRpb25zLCBtb2R1bGVzLCBvciBuZXR3b3JrIGNvbmRpdGlvbnMgd291bGQgY2F1c2UgdGhpcyBjb2RlIHRvIGV4ZWN1dGU/IFRvIGdldCBhIHF1aWNrIG92ZXJ2aWV3LCBJIG5lZWQgdG8gZ3JlcCB0aGUgY29kZWJhc2UuIEkgd2lsbCBzdGFydCBieSBzZWFyY2hpbmcgZm9yIHRoZSBmdW5jdGlvbiBuYW1lIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgaXRzZWxmIGFuZCB0aGVuIGFsc28gYHNlZzZfbG9jYWwuY2AgdG8gc2VlIHRoZSBicm9hZGVyIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMTo0MDozNy4yNDI3MzE3MjlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzMDY3NDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlucHV0X2FjdGlvbl9lbmRfZHQ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L3NlZzZfbG9jYWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9zZWc2X2xvY2FsLmM9MTEzMT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmVuZF9kdF92cmZfY29yZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTExNzYtXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjExNzc6c3RhdGljIGludCBpbnB1dF9hY3Rpb25fZW5kX2R0NChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMTc4LVxcdFxcdFxcdFxcdHN0cnVjdCBzZWc2X2xvY2FsX2x3dCAqc2x3dClcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0xMzA0PXN0YXRpYyBpbnQgc2VnNl9lbmRfZHQ0Nl9idWlsZChzdHJ1Y3Qgc2VnNl9sb2NhbF9sd3QgKnNsd3QsIGNvbnN0IHZvaWQgKmNmZyxcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMzA5LVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMzEwOnN0YXRpYyBpbnQgaW5wdXRfYWN0aW9uX2VuZF9kdDQ2KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTEzMTEtXFx0XFx0XFx0XFx0IHN0cnVjdCBzZWc2X2xvY2FsX2x3dCAqc2x3dClcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMzIxLVxcdGNhc2UgSVBQUk9UT19JUElQOlxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMzIyOlxcdFxcdHJldHVybiBpbnB1dF9hY3Rpb25fZW5kX2R0NChza2IsIHNsd3QpO1xcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMzIzLVxcdGNhc2UgSVBQUk9UT19JUFY2Olxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTE0NzQ9c3RhdGljIHN0cnVjdCBzZWc2X2FjdGlvbl9kZXNjIHNlZzZfYWN0aW9uX3RhYmxlW10gPSB7XFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUxOC0jaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1MTk6XFx0XFx0LmlucHV0XFx0XFx0PSBpbnB1dF9hY3Rpb25fZW5kX2R0NCxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUyMC1cXHRcXHQuc2x3dF9vcHNcXHQ9IHtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTQ1LSNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTU0NjpcXHRcXHQuaW5wdXRcXHRcXHQ9IGlucHV0X2FjdGlvbl9lbmRfZHQ0NixcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU0Ny1cXHRcXHQuc2x3dF9vcHNcXHQ9IHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6MzcuMzU1ODAzNDIxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYxMzIyMzIxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6XG5cbioqRGVsdmluZyBpbnRvIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgYW5kIGBzZWc2X2xvY2FsLmNgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCwgYW5kIGltbWVkaWF0ZWx5IEknbSB0aGlua2luZywgXCJyaWdodCwgdGhpcyBpcyBjb25uZWN0ZWQgdG8gdGhlIGBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBBbmQgaXQncyB0dWNrZWQgYXdheSBpbiB0aGUgYHNlZzZfYWN0aW9uX3RhYmxlYCwgd2hpY2ggZ2l2ZXMgbWUgYSBjbHVlIGFib3V0IGl0cyByb2xlLlwiIEl0J3MgZGVmaW5pdGVseSBhIGNvbXBvbmVudCBvZiB0aGF0IGxhcmdlciBuZXR3b3JrIGxheWVyIGZ1bmN0aW9uYWxpdHkuIEdpdmVuIHRoYXQgY29udGV4dCwgbXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZvciBgc2VnNl9sb2NhbC5jYC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBjb25maXJtIHRoZSBpbnRlcmFjdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGV4YWN0bHkgd2hhdCB0aGlzIGZ1bmN0aW9uIGRvZXMgd2l0aGluIHRoYXQgc3BlY2lmaWMgbW9kdWxlLiBJIG5lZWQgdG8gZ2V0IGEgcmVhbGx5IGdvb2QgdW5kZXJzdGFuZGluZyBvZiBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGludGVncmF0ZXMgd2l0aCB0aGUgb3ZlcmFsbCBzeXN0ZW0gYmVoYXZpb3IsIGdpdmVuIHRoZSBjb25maWd1cmF0aW9uIHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTA3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6NDAuOTY5MDI5MTU1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMTU3NzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlZzZfbG9jYWwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZT0yND1pcHY2LSQoQ09ORklHX05FVExBQkVMKSArPSBjYWxpcHNvLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZToyNTppcHY2LSQoQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTCkgKz0gc2VnNl9pcHR1bm5lbC5vIHNlZzZfbG9jYWwub1xcbm5ldC9pcHY2L01ha2VmaWxlLTI2LWlwdjYtJChDT05GSUdfSVBWNl9TRUc2X0hNQUMpICs9IHNlZzZfaG1hYy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQwOjQxLjA1MjE5MTQxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5MTgyNzAyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkNoZWNraW5nIHRoZSBGb3VuZGF0aW9uOiBJUHY2IFNlZ21lbnQgUm91dGluZyBhbmQgaXRzIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gSSBzZWUgdGhhdCBgQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTGAgaXMgcmVxdWlyZWQuIFRoYXQgdGVsbHMgbWUgd2UncmUgZGVhbGluZyB3aXRoIElQdjYgU2VnbWVudCBSb3V0aW5nIG92ZXIgTHdUdW4uIEJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyIGRvd24gdGhpcyBwYXRoLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGF2YWlsYWJsZSBhbmQsIGlkZWFsbHksIGVuYWJsZWQuIEl0J3MgY3J1Y2lhbCBmb3IgdGhlIHN1YnNlcXVlbnQgc3RlcHMuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgS2NvbmZpZ2AgZmlsZXMgYW5kIHZlcmlmeSB0aGUgZGVmaW5pdGlvbiwgZGVwZW5kZW5jaWVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFzc29jaWF0ZWQgd2l0aCBgQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTGAuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGNsdWVzIGFib3V0IGl0cyBkZXBlbmRlbmNpZXMgb24gb3RoZXIgZmVhdHVyZXMgb3IgYW55IHBvdGVudGlhbCBjb25mbGljdHMgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGUgaW1wbGVtZW50YXRpb24gSSdtIGNvbnNpZGVyaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTEwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6NDQuODQ0MDIyNTYyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTc0MzA0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvS2NvbmZpZz0yNzk9Y29uZmlnIElQVjZfUElNU01fVjJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjg1LVxcbm5ldC9pcHY2L0tjb25maWc6Mjg2OmNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTI4Ny1cXHRib29sIFxcXCJJUHY2OiBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6NDQuOTUzNzcxMTg0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc0MzIzNTgxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqRGVjb25zdHJ1Y3RpbmcgSVBWNl9TRUc2X0xXVFVOTkVMIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgYElQVjZfU0VHNl9MV1RVTk5FTGAuIFRoYXQgbWVhbnMgZGl2aW5nIGRlZXAuIEl0J3Mgbm90IGp1c3QgYSBtYXR0ZXIgb2YgbGlzdGluZyB0aGVtOyBJIG5lZWQgdG8gKnVuZGVyc3RhbmQqIHRoZW0uIEknbSBnb2luZyB0byBzdGFydCBieSBwdWxsaW5nIHVwIHRoZSByZWxldmFudCBkb2N1bWVudGF0aW9uLCBjb2RlLCB3aGF0ZXZlciBzb3VyY2VzIGFyZSBhdmFpbGFibGUuIEknbSB0aGlua2luZyBJJ2xsIGxvb2sgZm9yIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgbW9kdWxlIGRlY2xhcmF0aW9ucyBhbmQgYW55IHJlbGV2YW50IGluY2x1ZGUgZmlsZXMgZmlyc3QuIFdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgYXJlIG5lZWRlZCB0byBtYWtlIGBJUFY2X1NFRzZfTFdUVU5ORUxgIGZ1bmN0aW9uYWw/IFdoYXQgb3RoZXIgdW5kZXJseWluZyBuZXR3b3JrIGNvbXBvbmVudHMsIG9yIHN1YnN5c3RlbXMgaXMgdGhpcyBsaWtlbHkgdG8gZGVwZW5kIG9uPyBUaGlua2luZyBhYm91dCB0aGlzLCBJIG5lZWQgdG8gY29uc2lkZXIgdGhhdCBpdCdzIGxpa2VseSBkZXBlbmRlbnQgb24gSVB2NiwgYW5kIHByb2JhYmx5IGEgc3BlY2lmaWMgY29udHJvbCBwYXRoLlxuSSdsbCBhbHNvIGhhdmUgdG8gY29uc2lkZXIgdGhlIHBvdGVudGlhbCBpbnRlcnBsYXkgYmV0d2VlbiB0aGUgZGVwZW5kZW5jaWVzIGFuZCwgc2F5LCBmZWF0dXJlcy4gQSBkZXBlbmRlbmN5IGNvdWxkIGJlIGhhcmQsIG9yIHNvZnQuIEkgaGF2ZSB0byBzZWUgaG93IGl0IGNhbiBhZmZlY3QgdGhpbmdzIGRvd24gc3RyZWFtLlxuXG5JJ2xsIGJlIHRha2luZyBub3RlcyBhcyBJIGdvOyBza2V0Y2hpbmcgb3V0IGEgZGlhZ3JhbSBwZXJoYXBzLiBJIG5lZWQgdG8gY2xlYXJseSBkZWZpbmUgdGhlIGJvdW5kYXJ5IGFyb3VuZCB0aGlzIGZlYXR1cmUsIHNvIEkgY2FuIGJldHRlciB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbi4gV2hhdCBhcmUgdGhlICptaW5pbWFsKiBkZXBlbmRlbmNpZXMgZm9yIGJhc2ljIGZ1bmN0aW9uYWxpdHksIGFuZCB0aGVuIHdoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXMgZm9yICphZHZhbmNlZCogZmVhdHVyZXMuIFRoaXMgd2lsbCBzaG93IG1lIHdoZXJlIHRoZSBjb21wbGV4aXRpZXMgY291bGQgYXJpc2UgYW5kIHdoZXJlIHRvIGZvY3VzIHRoZSBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODY5LCJPdXRwdXRUb2tlbnMiOjc0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6NDkuNjk3MDEwODAxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDIyNjIyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvS2NvbmZpZz0yNzk9Y29uZmlnIElQVjZfUElNU01fVjJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjg1LVxcbm5ldC9pcHY2L0tjb25maWc6Mjg2OmNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTI4Ny1cXHRib29sIFxcXCJJUHY2OiBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6NDkuNzY3MjQwMDc2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY2L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjgwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjgwOlxcdFxcdGJvb2wgXFxcIklQdjY6IFBJTS1TTSB2ZXJzaW9uIDIgc3VwcG9ydFxcXCJcXG4gMjgxOlxcdFxcdGRlcGVuZHMgb24gSVBWNl9NUk9VVEVcXG4gMjgyOlxcdFxcdGhlbHBcXG4gMjgzOlxcdFxcdCAgU3VwcG9ydCBmb3IgSVB2NiBQSU0gbXVsdGljYXN0IHJvdXRpbmcgcHJvdG9jb2wgUElNLVNNdjIuXFxuIDI4NDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDI4NTpcXHRcXG4gMjg2OlxcdGNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcXG4gMjg3OlxcdFxcdGJvb2wgXFxcIklQdjY6IFNlZ21lbnQgUm91dGluZyBIZWFkZXIgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XFxcIlxcbiAyODg6XFx0XFx0ZGVwZW5kcyBvbiBJUFY2XFxuIDI4OTpcXHRcXHRzZWxlY3QgTFdUVU5ORUxcXG4gMjkwOlxcdFxcdHNlbGVjdCBEU1RfQ0FDSEVcXG4gMjkxOlxcdFxcdHNlbGVjdCBJUFY2X01VTFRJUExFX1RBQkxFU1xcbiAyOTI6XFx0XFx0aGVscFxcbiAyOTM6XFx0XFx0ICBTdXBwb3J0IGZvciBlbmNhcHN1bGF0aW9uIG9mIHBhY2tldHMgd2l0aGluIGFuIG91dGVyIElQdjZcXG4gMjk0OlxcdFxcdCAgaGVhZGVyIGFuZCBhIFNlZ21lbnQgUm91dGluZyBIZWFkZXIgdXNpbmcgdGhlIGxpZ2h0d2VpZ2h0XFxuIDI5NTpcXHRcXHQgIHR1bm5lbHMgbWVjaGFuaXNtLiBBbHNvIGVuYWJsZSBzdXBwb3J0IGZvciBhZHZhbmNlZCBsb2NhbFxcbiAyOTY6XFx0XFx0ICBwcm9jZXNzaW5nIG9mIFNSdjYgcGFja2V0cyBiYXNlZCBvbiB0aGVpciBhY3RpdmUgc2VnbWVudC5cXG4gMjk3OlxcdFxcbiAyOTg6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAyOTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQwOjQ5Ljc2NzMyNjc2N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTkzNTk5ODI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEZXBlbmRlbmNpZXMgYW5kIENvbmZpZ3VyYXRpb24gU2NydXRpbnkqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSwgYW5kIGl0J3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCBgSVBWNl9TRUc2X0xXVFVOTkVMYCBoYXMgYSBkaXJlY3QgZGVwZW5kZW5jeSBvbiBgSVBWNmAuIFRoYXQgbWFrZXMgc2Vuc2UsIGJ1dCBJIGFsd2F5cyBsaWtlIHRvIGNvbmZpcm0gdGhlc2UgdGhpbmdzLiBNb3Zpbmcgb24sIEkgc2VlIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgaXMgZ3VhcmRlZCBieSBhbiBgI2lmZGVmIENPTkZJR19ORVRfTDNfTUFTVEVSX0RFVmAuIFJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGJldHRlci4gQ2xlYXJseSwgdGhlIHdheSBpdCdzIHVzZWQgc3VnZ2VzdHMgaXQgbWlnaHQgYmUgY3JpdGljYWwgZm9yIGhvdyB0aGlzIHBhcnRpY3VsYXIgZmVhdHVyZSBmdW5jdGlvbnMuIEknbGwgbWFrZSBhIG1lbnRhbCBub3RlIHRvIGRpZyBpbnRvIHRoZSBkZWZpbml0aW9uIG9mIGBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZgIGFuZCB3aGF0IGl0IGFjdHVhbGx5IGNvbnRyb2xzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGFuZCBob3cgdGhhdCBpbXBhY3RzIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4gSSB3YW50IHRvIGhhdmUgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjU0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6NTMuNzYwOTI5MTA0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQ1MDc3NjQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfTDNfTUFTVEVSX0RFVlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6NTMuODY1NDQ2NTI4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzM2MTgzMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOZXR3b3JrIENvcmUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBkaWdnaW5nLiBJIG5lZWQgdG8gZmluZCBzb21ldGhpbmcgcmVsYXRlZCB0byBgTkVUX0wzX01BU1RFUl9ERVZgLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gcHJldHR5IHN1cmUgdGhhdCdzIGdvaW5nIHRvIGJlIGEga2V5IG1hY3JvIG9yIHZhcmlhYmxlIHVzZWQgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwncyBuZXR3b3JrIHN0YWNrLiBBbmQgd2hlcmUgaXMgdGhhdCB1c3VhbGx5IGxvY2F0ZWQ/IFByZWNpc2VseSwgYG5ldC9gIOKAkyB0aGF0J3Mgd2hlcmUgSSdsbCBiZWdpbiBteSBzZWFyY2guIFRoZSBuZXR3b3JrIGRpcmVjdG9yeSBpcyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgYW55dGhpbmcgbG93LWxldmVsIGxpa2UgdGhpcy4gTGV0J3Mgc2VlIHdoYXQgd2UgdHVybiB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk1OCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQwOjU3LjEzOTA2Nzg2NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM5MTg3ODcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfTDNfTUFTVEVSX0RFVlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9sM21kZXYvS2NvbmZpZy01LVxcbm5ldC9sM21kZXYvS2NvbmZpZzo2OmNvbmZpZyBORVRfTDNfTUFTVEVSX0RFVlxcbm5ldC9sM21kZXYvS2NvbmZpZy03LVxcdGJvb2wgXFxcIkwzIE1hc3RlciBkZXZpY2Ugc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6NTcuMjc4MjU5ODE1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNjkxODk1MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUga25vd2xlZGdlYWJsZSBpbiB0aGUgZmllbGQ6XG5cbioqRGlnZ2luZyBpbnRvIE5ldHdvcmsgTGF5ZXIgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYXNzb2NpYXRlZCB3aXRoIGBORVRfTDNfTUFTVEVSX0RFVmAuIFRoaXMgaXMgYSBjcml0aWNhbCBjb21wb25lbnQsIGFuZCBrbm93aW5nIGl0cyByZWxhdGlvbnNoaXBzIGlzIGZ1bmRhbWVudGFsIGZvciB0cm91Ymxlc2hvb3RpbmcsIG9wdGltaXphdGlvbiwgb3IgbWFraW5nIGFueSBjaGFuZ2VzIHdpdGhvdXQgaW50cm9kdWNpbmcgdW5mb3Jlc2VlbiBjb25zZXF1ZW5jZXMuIEkgaGF2ZSB0byBncmFzcCBldmVyeXRoaW5nIHRoYXQgZGVwZW5kcyBvbiBpdCB0byBlbnN1cmUgSSBnZXQgYSBob2xpc3RpYyB2aWV3LiBUaW1lIHRvIG1hcCB0aGUgbGFuZHNjYXBlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjA0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDE6MDIuNjQ3NDUyNjZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUxMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2wzbWRldi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIENvbmZpZ3VyYXRpb24gZm9yIEwzIG1hc3RlciBkZXZpY2Ugc3VwcG9ydFxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTkVUX0wzX01BU1RFUl9ERVZcXG4gICA3OlxcdFxcdGJvb2wgXFxcIkwzIE1hc3RlciBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gSU5FVCB8fCBJUFY2XFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGdsdWUgYmV0d2VlbiBjb3JlIG5ldHdvcmtpbmcgY29kZSBhbmQgZGV2aWNlXFxuICAxMTpcXHRcXHQgIGRyaXZlcnMgdG8gc3VwcG9ydCBMMyBtYXN0ZXIgZGV2aWNlcyBsaWtlIFZSRi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDE6MDIuNjQ3NTI5NjVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzNTgwOTY2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyB0aGUgUmVsZXZhbnQgQ29uZmlndXJhdGlvbnMgYW5kIENvZGUqKlxuXG5SaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBjb25maWd1cmF0aW9ucywgc3BlY2lmaWNhbGx5IGBORVRfTDNfTUFTVEVSX0RFVmAgYW5kIGBJUFY2X1NFRzZfTFdUVU5ORUxgLiBUaGF0J3MgdGhlIHNldHVwLiBUaGlzIHBhdGNoIHRhcmdldHMgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCB3aXRoaW4gYG5ldC9pcHY2L3NlZzZfbG9jYWwuY2AuIFRoYXQgZnVuY3Rpb24gKmlzKiByZWFjaGFibGUgYW5kIGl0IGZ1bmN0aW9ucyBhcyBleHBlY3RlZCwgdGhhdCdzIGdvb2QgdG8ga25vdy4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGVlcGx5IGV4YW1pbmUgdGhlIGxvZ2ljIHdpdGhpbiBgaW5wdXRfYWN0aW9uX2VuZF9kdDRgIGFuZCBhbHNvIGBpbnB1dF9hY3Rpb25fZW5kX2R0NDZgLCBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYW55IGludGVyYWN0aW9ucyBvciBpbXBsaWNhdGlvbnMgcmVsYXRlZCB0byBgRm9jdXNTeW1ib2xzYC4gTGV0J3MgZ2V0IHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTA4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMTo0MTowNi4xODMzNDMyMDlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MjAwODI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlucHV0X2FjdGlvbl9lbmRfZHQ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L3NlZzZfbG9jYWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9zZWc2X2xvY2FsLmM9MTEzMT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmVuZF9kdF92cmZfY29yZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTExNzYtXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjExNzc6c3RhdGljIGludCBpbnB1dF9hY3Rpb25fZW5kX2R0NChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMTc4LVxcdFxcdFxcdFxcdHN0cnVjdCBzZWc2X2xvY2FsX2x3dCAqc2x3dClcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0xMzA0PXN0YXRpYyBpbnQgc2VnNl9lbmRfZHQ0Nl9idWlsZChzdHJ1Y3Qgc2VnNl9sb2NhbF9sd3QgKnNsd3QsIGNvbnN0IHZvaWQgKmNmZyxcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMzA5LVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMzEwOnN0YXRpYyBpbnQgaW5wdXRfYWN0aW9uX2VuZF9kdDQ2KHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTEzMTEtXFx0XFx0XFx0XFx0IHN0cnVjdCBzZWc2X2xvY2FsX2x3dCAqc2x3dClcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMzIxLVxcdGNhc2UgSVBQUk9UT19JUElQOlxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxMzIyOlxcdFxcdHJldHVybiBpbnB1dF9hY3Rpb25fZW5kX2R0NChza2IsIHNsd3QpO1xcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xMzIzLVxcdGNhc2UgSVBQUk9UT19JUFY2Olxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jPTE0NzQ9c3RhdGljIHN0cnVjdCBzZWc2X2FjdGlvbl9kZXNjIHNlZzZfYWN0aW9uX3RhYmxlW10gPSB7XFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUxOC0jaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1MTk6XFx0XFx0LmlucHV0XFx0XFx0PSBpbnB1dF9hY3Rpb25fZW5kX2R0NCxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUyMC1cXHRcXHQuc2x3dF9vcHNcXHQ9IHtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTQ1LSNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTU0NjpcXHRcXHQuaW5wdXRcXHRcXHQ9IGlucHV0X2FjdGlvbl9lbmRfZHQ0NixcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU0Ny1cXHRcXHQuc2x3dF9vcHNcXHQ9IHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDE6MDYuMjY3NTQ4OTEzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NjgyNjIyNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgaW5wdXRfYWN0aW9uX2VuZF9kdDRgIEZ1bmN0aW9uKipcblxuT2theSwgc28gYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgY2hlY2sgaWYgaXQncyBwb3RlbnRpYWxseSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gTGV0J3Mgc2VlIGlmIGl0J3MgdHJlYXRlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgYW55d2hlcmUuIEFoLCB0aGVyZSBpdCBpcyEgSXQncyBiZWluZyBhc3NpZ25lZCB0byB0aGUgYC5pbnB1dGAgbWVtYmVyIG9mIGBzZWc2X2FjdGlvbl90YWJsZWAuIFJpZ2h0LCB0aGF0IG1lYW5zIGl0ICp3b24ndCogYmUgaW5saW5lZC4gXG5cbkhvbGQgb24sIHRob3VnaC4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZ5IGEgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIHJhdGhlciB0aGFuIGludGVybmFsIHN0YXRpYyBoZWxwZXJzLCB3aGljaCAqd291bGQqIGJlIGlubGluZWQuIFNpbmNlIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgaXMgYmVpbmcgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciwgaXQgKndpbGwqIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gU28sIHRoYXQncyBmaW5lLlxuXG5CdXQgYSBjcml0aWNhbCBxdWVzdGlvbiByZW1haW5zOiB3aGF0J3MgdGhlIGFjdHVhbCBlbnRyeSBwb2ludOKAlHRoZSBmdW5jdGlvbiB0aGF0J3MgKmNhbGxpbmcqIHRoaXMgYC5pbnB1dGAgaGFuZGxlcj8gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGUgYHNlZzZfYWN0aW9uX3RhYmxlYCB0byBmaW5kIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiBJIG5lZWQgdGhhdCBmb3IgYSBjb21wbGV0ZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzkyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQxOjExLjAzNTgxNDAzOVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAxNTM1MDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXFxcXC5pbnB1dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9zZWc2X2xvY2FsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvc2VnNl9sb2NhbC5jPTE0NzQ9c3RhdGljIHN0cnVjdCBzZWc2X2FjdGlvbl9kZXNjIHNlZzZfYWN0aW9uX3RhYmxlW10gPSB7XFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTQ3OS1cXHRcXHRcXHRcXHQgIFNFRzZfRl9MT0NBTF9GTEFWT1JTLFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNDgwOlxcdFxcdC5pbnB1dFxcdFxcdD0gaW5wdXRfYWN0aW9uX2VuZCxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTQ4MS1cXHR9LFxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE0ODctXFx0XFx0XFx0XFx0ICBTRUc2X0ZfQVRUUihTRUc2X0xPQ0FMX09JRiksXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE0ODg6XFx0XFx0LmlucHV0XFx0XFx0PSBpbnB1dF9hY3Rpb25fZW5kX3gsXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE0ODktXFx0fSxcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNDkzLVxcdFxcdC5vcHRhdHRyc1xcdD0gU0VHNl9GX0xPQ0FMX0NPVU5URVJTLFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNDk0OlxcdFxcdC5pbnB1dFxcdFxcdD0gaW5wdXRfYWN0aW9uX2VuZF90LFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNDk1LVxcdH0sXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTQ5OS1cXHRcXHQub3B0YXR0cnNcXHQ9IFNFRzZfRl9MT0NBTF9DT1VOVEVSUyxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTUwMDpcXHRcXHQuaW5wdXRcXHRcXHQ9IGlucHV0X2FjdGlvbl9lbmRfZHgyLFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTAxLVxcdH0sXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUwNS1cXHRcXHQub3B0YXR0cnNcXHQ9IFNFRzZfRl9MT0NBTF9DT1VOVEVSUyxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTUwNjpcXHRcXHQuaW5wdXRcXHRcXHQ9IGlucHV0X2FjdGlvbl9lbmRfZHg2LFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTA3LVxcdH0sXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUxMS1cXHRcXHQub3B0YXR0cnNcXHQ9IFNFRzZfRl9MT0NBTF9DT1VOVEVSUyxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTUxMjpcXHRcXHQuaW5wdXRcXHRcXHQ9IGlucHV0X2FjdGlvbl9lbmRfZHg0LFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTEzLVxcdH0sXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUxOC0jaWZkZWYgQ09ORklHX05FVF9MM19NQVNURVJfREVWXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1MTk6XFx0XFx0LmlucHV0XFx0XFx0PSBpbnB1dF9hY3Rpb25fZW5kX2R0NCxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTUyMC1cXHRcXHQuc2x3dF9vcHNcXHQ9IHtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTM4LSNlbmRpZlxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNTM5OlxcdFxcdC5pbnB1dFxcdFxcdD0gaW5wdXRfYWN0aW9uX2VuZF9kdDYsXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1NDAtXFx0fSxcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTQ1LSNpZmRlZiBDT05GSUdfTkVUX0wzX01BU1RFUl9ERVZcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTU0NjpcXHRcXHQuaW5wdXRcXHRcXHQ9IGlucHV0X2FjdGlvbl9lbmRfZHQ0NixcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU0Ny1cXHRcXHQuc2x3dF9vcHNcXHQ9IHtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTU1LVxcdFxcdC5vcHRhdHRyc1xcdD0gU0VHNl9GX0xPQ0FMX0NPVU5URVJTLFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNTU2OlxcdFxcdC5pbnB1dFxcdFxcdD0gaW5wdXRfYWN0aW9uX2VuZF9iNixcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU1Ny1cXHR9LFxcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTE1NjEtXFx0XFx0Lm9wdGF0dHJzXFx0PSBTRUc2X0ZfTE9DQUxfQ09VTlRFUlMsXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjE1NjI6XFx0XFx0LmlucHV0XFx0XFx0PSBpbnB1dF9hY3Rpb25fZW5kX2I2X2VuY2FwLFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTYzLVxcdFxcdC5zdGF0aWNfaGVhZHJvb21cXHQ9IHNpemVvZihzdHJ1Y3QgaXB2NmhkciksXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTU2OC1cXHRcXHQub3B0YXR0cnNcXHQ9IFNFRzZfRl9MT0NBTF9DT1VOVEVSUyxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTU2OTpcXHRcXHQuaW5wdXRcXHRcXHQ9IGlucHV0X2FjdGlvbl9lbmRfYnBmLFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNTcwLVxcdH0sXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM9MjY3ND1zdGF0aWMgY29uc3Qgc3RydWN0IGx3dHVubmVsX2VuY2FwX29wcyBzZWc2X2xvY2FsX29wcyA9IHtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0yNjc2LVxcdC5kZXN0cm95X3N0YXRlXFx0PSBzZWc2X2xvY2FsX2Rlc3Ryb3lfc3RhdGUsXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jOjI2Nzc6XFx0LmlucHV0XFx0XFx0PSBzZWc2X2xvY2FsX2lucHV0LFxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0yNjc4LVxcdC5maWxsX2VuY2FwXFx0PSBzZWc2X2xvY2FsX2ZpbGxfZW5jYXAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQxOjExLjEwNTk3MzI0NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDEyNzcyMjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5hdmlnYXRpbmcgdGhlIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBjb2RlLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQgZ3JhYnMgbXkgYXR0ZW50aW9uIGlzIGBzZWc2X2xvY2FsX2lucHV0YC4gVGhhdCdzIHdoZXJlIHdlJ3JlIHN0YXJ0aW5nLiBNeSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMgdG8gemVybyBpbiBvbiB0aGF0IGZ1bmN0aW9uLiBJdOKAmXMgdGhlIGVudHJ5IHBvaW50LCB0aGUgc3RhcnRpbmcgbGluZS4gTm93LCB3aGF0J3MgaXQgZG9pbmc/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGBzZWc2X2xvY2FsX2lucHV0YCBpbnNpZGUgYW5kIG91dC4gSXTigJlzIHRoZSBrZXkuIExldCdzIHN0YXJ0IHRoZSBpbnZlc3RpZ2F0aW9uIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDUyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDE6MTQuNTE4NzQ4ODMxWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTQ0ODEwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWc2X2xvY2FsX2lucHV0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L3NlZzZfbG9jYWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9zZWc2X2xvY2FsLmM9MTU5ND1zdGF0aWMgdm9pZCBzZWc2X2xvY2FsX3VwZGF0ZV9jb3VudGVycyhzdHJ1Y3Qgc2VnNl9sb2NhbF9sd3QgKnNsd3QsXFxuLS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTYxMS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTYxMjpzdGF0aWMgaW50IHNlZzZfbG9jYWxfaW5wdXRfY29yZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzayxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTYxMy1cXHRcXHRcXHRcXHQgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNjMzLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYzoxNjM0OnN0YXRpYyBpbnQgc2VnNl9sb2NhbF9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNjM1LXtcXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNjQzLVxcdFxcdFxcdCAgICAgICBkZXZfbmV0KHNrYi1cXHUwMDNlZGV2KSwgTlVMTCwgc2tiLCBza2ItXFx1MDAzZWRldiwgTlVMTCxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTY0NDpcXHRcXHRcXHQgICAgICAgc2VnNl9sb2NhbF9pbnB1dF9jb3JlKTtcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmMtMTY0NS1cXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MTY0NjpcXHRyZXR1cm4gc2VnNl9sb2NhbF9pbnB1dF9jb3JlKGRldl9uZXQoc2tiLVxcdTAwM2VkZXYpLCBOVUxMLCBza2IpO1xcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYy0xNjQ3LX1cXG4tLVxcbm5ldC9pcHY2L3NlZzZfbG9jYWwuYz0yNjc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbHd0dW5uZWxfZW5jYXBfb3BzIHNlZzZfbG9jYWxfb3BzID0ge1xcbi0tXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTI2NzYtXFx0LmRlc3Ryb3lfc3RhdGVcXHQ9IHNlZzZfbG9jYWxfZGVzdHJveV9zdGF0ZSxcXG5uZXQvaXB2Ni9zZWc2X2xvY2FsLmM6MjY3NzpcXHQuaW5wdXRcXHRcXHQ9IHNlZzZfbG9jYWxfaW5wdXQsXFxubmV0L2lwdjYvc2VnNl9sb2NhbC5jLTI2NzgtXFx0LmZpbGxfZW5jYXBcXHQ9IHNlZzZfbG9jYWxfZmlsbF9lbmNhcCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDE6MTQuNTc0MjAwNzE4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1ODcxNjU1MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgc2VnNl9sb2NhbF9pbnB1dF9jb3JlYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgZGF0YSBpcyBwcm9jZXNzZWQgaW4gdGhpcyBgc2VnNl9sb2NhbF9pbnB1dF9jb3JlYCBjb250ZXh0LiBJdCAqbG9va3MqIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGlucHV0IHByb2Nlc3NpbmcgcHJvYmFibHkgaGFwcGVucyB2aWEgYSBjYWxsIHRvIGBkZXNjLVx1MDAzZWlucHV0KHNrYiwgc2x3dCk7YC4gVGhhdCBmZWVscyBsaWtlIHRoZSBsaWtlbHkgZW50cnkgcG9pbnQuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSdtIGdvaW5nIHRvIGp1bXAgcmlnaHQgaW50byBleGFtaW5pbmcgdGhlIGBzZWc2X2xvY2FsX2lucHV0X2NvcmVgIGZ1bmN0aW9uIGl0c2VsZi4gVW5kZXJzdGFuZGluZyB0aGlzIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIGJlIGtleSB0byBkaXNzZWN0aW5nIHRoZSBkYXRhIGZsb3cuIExldCdzIHNlZSB3aGF0J3MgYWN0dWFsbHkgZ29pbmcgb24gaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3NDQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMTo0MToxOC4xNjEzNjg0MjNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc4MTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY2L3NlZzZfbG9jYWwuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjEyLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjEyOlxcdHN0YXRpYyBpbnQgc2VnNl9sb2NhbF9pbnB1dF9jb3JlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLFxcbjE2MTM6XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IpXFxuMTYxNDpcXHR7XFxuMTYxNTpcXHRcXHRzdHJ1Y3QgZHN0X2VudHJ5ICpvcmlnX2RzdCA9IHNrYl9kc3Qoc2tiKTtcXG4xNjE2OlxcdFxcdHN0cnVjdCBzZWc2X2FjdGlvbl9kZXNjICpkZXNjO1xcbjE2MTc6XFx0XFx0c3RydWN0IHNlZzZfbG9jYWxfbHd0ICpzbHd0O1xcbjE2MTg6XFx0XFx0dW5zaWduZWQgaW50IGxlbiA9IHNrYi1cXHUwMDNlbGVuO1xcbjE2MTk6XFx0XFx0aW50IHJjO1xcbjE2MjA6XFx0XFxuMTYyMTpcXHRcXHRzbHd0ID0gc2VnNl9sb2NhbF9sd3R1bm5lbChvcmlnX2RzdC1cXHUwMDNlbHd0c3RhdGUpO1xcbjE2MjI6XFx0XFx0ZGVzYyA9IHNsd3QtXFx1MDAzZWRlc2M7XFxuMTYyMzpcXHRcXG4xNjI0OlxcdFxcdHJjID0gZGVzYy1cXHUwMDNlaW5wdXQoc2tiLCBzbHd0KTtcXG4xNjI1OlxcdFxcbjE2MjY6XFx0XFx0aWYgKCFzZWc2X2x3dHVubmVsX2NvdW50ZXJzX2VuYWJsZWQoc2x3dCkpXFxuMTYyNzpcXHRcXHRcXHRyZXR1cm4gcmM7XFxuMTYyODpcXHRcXG4xNjI5OlxcdFxcdHNlZzZfbG9jYWxfdXBkYXRlX2NvdW50ZXJzKHNsd3QsIGxlbiwgcmMpO1xcbjE2MzA6XFx0XFxuMTYzMTpcXHRcXHRyZXR1cm4gcmM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQxOjE4LjE2MTU0Nzk4M1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTg4ODU1NTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBTRUc2IExvY2FsIElucHV0IGFuZCBBY3Rpb24gRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBTRUc2IGxvY2FsIGlucHV0IGlzIGhhbmRsZWQuIGBzZWc2X2xvY2FsX2lucHV0X2NvcmVgIGlzIHRoZSBjb3JlIGZ1bmN0aW9uLCBidXQgaXQncyBzdGF0aWMsIHNvIGl0J3Mgbm90IGRpcmVjdGx5IGV4cG9zZWQuIGBzZWc2X2xvY2FsX2lucHV0YCBpcyBhbHNvIHN0YXRpYywgYnV0IGl0J3MgYXNzaWduZWQgdG8gdGhlIGAuaW5wdXRgIG1lbWJlciBvZiBgc2VnNl9sb2NhbF9vcHNgLiBJbnRlcmVzdGluZywgYnV0IG5vdCB0aGUgd2hvbGUgcGljdHVyZS4gVGhlbiBJIHNlZSBgaW5wdXRfYWN0aW9uX2VuZF9kdDRgIGlzIGFsc28gYXNzaWduZWQgdG8gYC5pbnB1dGAsIGJ1dCBpbiB0aGUgYHNlZzZfYWN0aW9uX3RhYmxlYC5cblxuVGhpcyBtZWFucyBib3RoIGBzZWc2X2xvY2FsX2lucHV0YCBhbmQgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBhcmUgZnVuY3Rpb24gcG9pbnRlcnMgYW5kIHdpbGwgaGF2ZSB0aGVpciBvd24gZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gR2l2ZW4gdGhpcywgSSBjYW4gZm9jdXMgb24gdGhvc2UgdHdvLiBXYWl0LCBhbmQgYGlucHV0X2FjdGlvbl9lbmRfZHQ0NmAgY2FsbHMgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBmb3IgSVB2NC4uLiBTbyBsZXQncyBpbmNsdWRlIHRoYXQgb25lIHRvbyFcblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBpcyBhbHNvIHN0YXRpYy4gSXQgaXMgc3RhdGljLCBidXQgYmVjYXVzZSBpdCdzIGFzc2lnbmVkIHRvIGEgc3RydWN0IG1lbWJlciwgaXQncyBub3QgaW5saW5lZC4gSXQncyBzYWZlIHRvIGFkZCBgaW5wdXRfYWN0aW9uX2VuZF9kdDRgIGFuZCBgaW5wdXRfYWN0aW9uX2VuZF9kdDQ2YCB0byBgRm9jdXNTeW1ib2xzYC4gQWN0dWFsbHksIGdpdmVuIHRoZSBjYWxsIHN0cnVjdHVyZSwgSSBjYW4gZm9jdXMgc29sZWx5IG9uIHRoZXNlIHR3bywgaXQncyBhIGNsZWFuZXIgYXBwcm9hY2guXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIHRoZSByaWdodCBrZXJuZWwgY29uZmlncyBlbmFibGVkLiBJIGtub3cgSSBuZWVkIGBJUFY2X1NFRzZfTFdUVU5ORUxgIGFuZCBgTkVUX0wzX01BU1RFUl9ERVZgLCBidXQgYXJlIHRoZXJlIGFueSBvdGhlcnM/IGBJUFY2X1NFRzZfTFdUVU5ORUxgIGRlcGVuZHMgb24gYElQVjZgLCBhbmQgYE5FVF9MM19NQVNURVJfREVWYCBkZXBlbmRzIG9uIGVpdGhlciBgSU5FVGAgb3IgYElQVjZgLiBTbywgdGhlIGZpbmFsIGxpc3QgZm9yIGBFbmFibGVDb25maWdzYCBpczogYElQVjZgLCBgSVBWNl9TRUc2X0xXVFVOTkVMYCwgYW5kIGBORVRfTDNfTUFTVEVSX0RFVmAuXG5cbkknbGwgZG91YmxlLWNoZWNrIGBpbnB1dF9hY3Rpb25fZW5kX2R0NGAgZGVmaW5pdGlvbiBpbiBgbmV0L2lwdjYvc2VnNl9sb2NhbC5jYCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5Mjg3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDkzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDE6MjYuMTUwNDA2OVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzIwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjYvc2VnNl9sb2NhbC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExNzcsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjExNzc6XFx0c3RhdGljIGludCBpbnB1dF9hY3Rpb25fZW5kX2R0NChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbjExNzg6XFx0XFx0XFx0XFx0XFx0c3RydWN0IHNlZzZfbG9jYWxfbHd0ICpzbHd0KVxcbjExNzk6XFx0e1xcbjExODA6XFx0XFx0ZW51bSBza2JfZHJvcF9yZWFzb24gcmVhc29uO1xcbjExODE6XFx0XFx0c3RydWN0IGlwaGRyICppcGg7XFxuMTE4MjpcXHRcXG4xMTgzOlxcdFxcdGlmICghZGVjYXBfYW5kX3ZhbGlkYXRlKHNrYiwgSVBQUk9UT19JUElQKSlcXG4xMTg0OlxcdFxcdFxcdGdvdG8gZHJvcDtcXG4xMTg1OlxcdFxcbjExODY6XFx0XFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCBpcGhkcikpKVxcbjExODc6XFx0XFx0XFx0Z290byBkcm9wO1xcbjExODg6XFx0XFxuMTE4OTpcXHRcXHRtZW1zZXQoSVBDQihza2IpLCAwLCBzaXplb2YoKklQQ0Ioc2tiKSkpO1xcbjExOTA6XFx0XFx0SVBDQihza2IpLVxcdTAwM2VpaWYgPSBza2ItXFx1MDAzZXNrYl9paWY7XFxuMTE5MTpcXHRcXG4xMTkyOlxcdFxcdHNrYiA9IGVuZF9kdF92cmZfY29yZShza2IsIHNsd3QsIEFGX0lORVQpO1xcbjExOTM6XFx0XFx0aWYgKCFza2IpXFxuMTE5NDpcXHRcXHRcXHQvKiBwYWNrZXQgaGFzIGJlZW4gcHJvY2Vzc2VkIGFuZCBjb25zdW1lZCBieSB0aGUgVlJGICovXFxuMTE5NTpcXHRcXHRcXHRyZXR1cm4gMDtcXG4xMTk2OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMTo0MToyNi4xNTA2NDA4NVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjU5NTUxNzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIElQdjYgU1J2NiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0d28ga2V5IGxpbmVzOiBgbWVtc2V0KElQQ0Ioc2tiKSwgMCwgc2l6ZW9mKCpJUENCKHNrYikpKTtgIGFuZCBgSVBDQihza2IpLVx1MDAzZWlpZiA9IHNrYi1cdTAwM2Vza2JfaWlmO2AuIEZyb20gYSBmdW5jdGlvbmFsIHN0YW5kcG9pbnQsIHRoaXMgaXMgYSBkZWZpbml0ZSBpbXByb3ZlbWVudC4gSXQncyBkZXNpZ25lZCB0byBwcmV2ZW50IHRoZSBJUHY0IHN0YWNrIGZyb20gYWNjaWRlbnRhbGx5IHVzaW5nIHVuaW5pdGlhbGl6ZWQgZGF0YSB3aXRoaW4gdGhlIGBJUENCYCBjb250cm9sIGJsb2NrIGFmdGVyIGFuIElQdjYtdG8tSVB2NCBkZWNhcHN1bGF0aW9uLCBzcGVjaWZpY2FsbHkgd2hlbiBkZWFsaW5nIHdpdGggU2VnbWVudCBSb3V0aW5nIChTUnY2KSBhbmQgaXRzIEVuZC5EVDQvRW5kLkRUNDYgYWN0aW9ucy4gVGhhdCBtYWtlcyBpdCBpbW1lZGlhdGVseSBpbnRlcmVzdGluZyBmcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUuIFVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2VzcyBpcyBhbHdheXMgYSBwb3RlbnRpYWwgdmVjdG9yIGZvciBleHBsb2l0YXRpb24sIHNvIHRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgSSB3YW50IHRvIGZ1enogdGhvcm91Z2hseS5cblxuVGhlIHBhdGNoIGFwcGVhcnMgdG8gYmUgcmVsZXZhbnQgaWYgYElQVjZfU0VHNl9MV1RVTk5FTGAgYW5kIGBORVRfTDNfTUFTVEVSX0RFVmAgYXJlIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWcuXG5cbk15IGZvY3VzIHNob3VsZCBiZSBvbiB0aGUgYGlucHV0X2FjdGlvbl9lbmRfZHQ0YCBhbmQgYGlucHV0X2FjdGlvbl9lbmRfZHQ0NmAgZnVuY3Rpb25zOyB0aGF0J3Mgd2hlcmUgdGhlIGFjdHVhbCBwcm9jZXNzaW5nIHRha2VzIHBsYWNlLiBUaGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIHBhdGNoIGlzIHNvdW5kOiBpdCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSB3aXRoaW4gYSBjcml0aWNhbCBhcmVhIG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGlzIGNvZGUgcGF0aCBpcyBub3cgdG91Y2hlZCB3aGVuIHdlJ3JlIGRlYWxpbmcgd2l0aCBkZWNhcHN1bGF0aW5nIElQdjQgcGFja2V0cyB3aXRoaW4gdGhlIFNSdjYgY29udGV4dC5cblxuSSdtIG1hcmtpbmcgdGhpcyBhcyBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDYyMiwiT3V0cHV0VG9rZW5zIjoxNDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMTo0MTozMi40MTAxOTYzNTNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQxNTk2MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZfU0VHNl9MV1RVTk5FTFwiLFxuICAgIFwiTkVUX0wzX01BU1RFUl9ERVZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpbnB1dF9hY3Rpb25fZW5kX2R0NFwiLFxuICAgIFwiaW5wdXRfYWN0aW9uX2VuZF9kdDQ2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gdGhlIElQdjYgU2VnbWVudCBSb3V0aW5nIChTUnY2KSBsb2NhbCBwcm9jZXNzaW5nIGNvZGUgd2hlbiBkZWNhcHN1bGF0aW5nIElQdjQgcGFja2V0cyAoRW5kLkRUNC9FbmQuRFQ0NiBhY3Rpb25zKS4gSXQgY2xlYXJzIHRoZSBJUENCIGNvbnRyb2wgYmxvY2sgYW5kIHNldHMgdGhlIGlpZi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNl9TRUc2X0xXVFVOTkVMXCIsXG4gICAgXCJORVRfTDNfTUFTVEVSX0RFVlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlucHV0X2FjdGlvbl9lbmRfZHQ0XCIsXG4gICAgXCJpbnB1dF9hY3Rpb25fZW5kX2R0NDZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBpbiB0aGUgSVB2NiBTZWdtZW50IFJvdXRpbmcgKFNSdjYpIGxvY2FsIHByb2Nlc3NpbmcgY29kZSB3aGVuIGRlY2Fwc3VsYXRpbmcgSVB2NCBwYWNrZXRzIChFbmQuRFQ0L0VuZC5EVDQ2IGFjdGlvbnMpLiBJdCBjbGVhcnMgdGhlIElQQ0IgY29udHJvbCBibG9jayBhbmQgc2V0cyB0aGUgaWlmLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbc7xv[1] Phase: Succeeded StartedAt: 2026-08-04 11:41:43 +0000 UTC FinishedAt: 2026-08-04 11:41:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-04 11:41:43 +0000 UTC FinishedAt: 2026-08-04 11:41:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[2] Phase: Succeeded StartedAt: 2026-08-04 11:41:43 +0000 UTC FinishedAt: 2026-08-04 15:24:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 11:41:43 +0000 UTC FinishedAt: 2026-08-04 15:24:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 11:41:43 +0000 UTC FinishedAt: 2026-08-04 11:41:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 11:41:43 +0000 UTC FinishedAt: 2026-08-04 11:41:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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-workflowbc7xv/series-workflowbc7xv-convert-artifact-1468078170/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 11:41:53 +0000 UTC FinishedAt: 2026-08-04 11:57:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 11:41:53 +0000 UTC FinishedAt: 2026-08-04 11:57:46 +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:*2f223174-d6de-42d7-b3b7-176b22bf6889,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-workflowbc7xv/series-workflowbc7xv-convert-artifact-1468078170/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": "85fe37e3-b052-47fd-9051-a4949c1ff6f7", "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-workflowbc7xv/series-workflowbc7xv-build-action-4105129224/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 11:41:53 +0000 UTC FinishedAt: 2026-08-04 11:57:36 +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:*2f223174-d6de-42d7-b3b7-176b22bf6889,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-workflowbc7xv/series-workflowbc7xv-convert-artifact-1468078170/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": "85fe37e3-b052-47fd-9051-a4949c1ff6f7", "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-workflowbc7xv/series-workflowbc7xv-build-action-4105129224/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 11:57:46 +0000 UTC FinishedAt: 2026-08-04 11:57:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 11:57:46 +0000 UTC FinishedAt: 2026-08-04 11:57:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 11:57:46 +0000 UTC FinishedAt: 2026-08-04 11:57:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 11:57:46 +0000 UTC FinishedAt: 2026-08-04 11:57:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-workflowbc7xv/series-workflowbc7xv-convert-artifact-2592022709/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 11:57:57 +0000 UTC FinishedAt: 2026-08-04 12:00:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 11:57:57 +0000 UTC FinishedAt: 2026-08-04 11:59:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*85fe37e3-b052-47fd-9051-a4949c1ff6f7,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-workflowbc7xv/series-workflowbc7xv-build-action-4105129224/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-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 12:00:21 +0000 UTC FinishedAt: 2026-08-04 12:00:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 12:00:21 +0000 UTC FinishedAt: 2026-08-04 12:00:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 12:00:21 +0000 UTC FinishedAt: 2026-08-04 12:20:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 12:00:21 +0000 UTC FinishedAt: 2026-08-04 12:20:22 +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:*2f223174-d6de-42d7-b3b7-176b22bf6889,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-workflowbc7xv/series-workflowbc7xv-convert-artifact-2592022709/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": "f1a9cc99-2ac8-469c-a056-c322827d98b7", "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-workflowbc7xv/series-workflowbc7xv-build-action-789270977/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 12:00:21 +0000 UTC FinishedAt: 2026-08-04 12:20:11 +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:*2f223174-d6de-42d7-b3b7-176b22bf6889,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-workflowbc7xv/series-workflowbc7xv-convert-artifact-2592022709/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": "f1a9cc99-2ac8-469c-a056-c322827d98b7", "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-workflowbc7xv/series-workflowbc7xv-build-action-789270977/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 12:20:22 +0000 UTC FinishedAt: 2026-08-04 12:20:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 12:20:22 +0000 UTC FinishedAt: 2026-08-04 12:20:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 12:20:22 +0000 UTC FinishedAt: 2026-08-04 12:22:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 12:20:22 +0000 UTC FinishedAt: 2026-08-04 12:22:22 +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:*f1a9cc99-2ac8-469c-a056-c322827d98b7,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-workflowbc7xv/series-workflowbc7xv-build-action-789270977/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-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 12:22:33 +0000 UTC FinishedAt: 2026-08-04 15:24:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 12:22:33 +0000 UTC FinishedAt: 2026-08-04 15:24:29 +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":["input_action_end_dt4","input_action_end_dt46"],"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:*85fe37e3-b052-47fd-9051-a4949c1ff6f7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f1a9cc99-2ac8-469c-a056-c322827d98b7,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-workflowbc7xv/series-workflowbc7xv-build-action-4105129224/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-workflowbc7xv/series-workflowbc7xv-build-action-789270977/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 12:22:33 +0000 UTC FinishedAt: 2026-08-04 12:22:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 12:22:33 +0000 UTC FinishedAt: 2026-08-04 12:22:52 +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":["input_action_end_dt4","input_action_end_dt46"],"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-workflowbc7xv/series-workflowbc7xv-convert-artifact-504246938/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 12:22:33 +0000 UTC FinishedAt: 2026-08-04 12:22:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 12:22:33 +0000 UTC FinishedAt: 2026-08-04 12:22:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 12:22:33 +0000 UTC FinishedAt: 2026-08-04 12:22:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 12:22:58 +0000 UTC FinishedAt: 2026-08-04 15:24:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbc7xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"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":["input_action_end_dt4","input_action_end_dt46"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6_SEG6_LWTUNNEL","NET_L3_MASTER_DEV"],"series_id":"61344096-f6d8-42b2-8cc8-06773830e2d7","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-04 12:22:58 +0000 UTC FinishedAt: 2026-08-04 15:24:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*85fe37e3-b052-47fd-9051-a4949c1ff6f7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f1a9cc99-2ac8-469c-a056-c322827d98b7,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-workflowbc7xv/series-workflowbc7xv-build-action-4105129224/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-workflowbc7xv/series-workflowbc7xv-build-action-789270977/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-workflowbc7xv/series-workflowbc7xv-convert-artifact-504246938/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,}