Name: series-workflow5hnqk Phase: Failed StartedAt: 2026-08-14 04:19:39 +0000 UTC FinishedAt: 2026-08-14 04:39:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hnqk[0] Phase: Succeeded StartedAt: 2026-08-14 04:19:39 +0000 UTC FinishedAt: 2026-08-14 04:39:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hnqk[0].run-triage Phase: Succeeded StartedAt: 2026-08-14 04:19:39 +0000 UTC FinishedAt: 2026-08-14 04:39:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA0OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaXMgYSBwdXJlIHJlZmFjdG9yaW5nIHRoYXQgcmVwbGFjZXMgYSBtYW51YWwgc3RyaW5nIHJlcGxhY2VtZW50IGxvb3Agd2l0aCBhIGNhbGwgdG8gdGhlIHN0YW5kYXJkIGBzdHJyZXBsYWNlYCBmdW5jdGlvbi4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwNDozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGFjNDJmNTg5NjhmNzI2MmU5YWI3NDdjMDg4MGFmZTIxNzRmM2U4MjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAwNDozODoxNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9udGZzL3JlcGFyc2UuYyBiL2ZzL250ZnMvcmVwYXJzZS5jXG5pbmRleCBmYTUyM2RjMzY5MWVhLi4xMjk4Y2ZjM2E3MDdmIDEwMDY0NFxuLS0tIGEvZnMvbnRmcy9yZXBhcnNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL250ZnMvcmVwYXJzZS5jXG5AQCAtODk0LDEzICYjNDM7ODk0LDcgQEAgaW50IG50ZnNfcmVwYXJzZV9zZXRfbmF0aXZlX3N5bWxpbmsoc3RydWN0IG50ZnNfaW5vZGUgKm5pLFxuIFxuIFx0ZXJyID0gbnRmc19zZXRfbnRmc19yZXBhcnNlX2RhdGEobmksIChjaGFyICopcmVwYXJzZSwgdG90YWxfcmVwYXJzZV9sZW4pO1xuIFx0aWYgKCFlcnIpIHtcbi1cdFx0aW50IGxlbiA9IHN0cmxlbihzdWJfbmFtZSk7XG4tXG4tXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlbjsgaSYjNDM7JiM0MzspIHtcbi1cdFx0XHRpZiAoc3ViX25hbWVbaV0gPT0gJiMzOTtcXFxcJiMzOTspXG4tXHRcdFx0XHRzdWJfbmFtZVtpXSA9ICYjMzk7LyYjMzk7O1xuLVx0XHR9XG4tXHRcdG5pLVx1MDAzZXRhcmdldCA9IHN1Yl9uYW1lO1xuJiM0MztcdFx0bmktXHUwMDNldGFyZ2V0ID0gc3RycmVwbGFjZShzdWJfbmFtZSwgJiMzOTtcXFxcJiMzOTssICYjMzk7LyYjMzk7KTtcbiBcdFx0c3ViX25hbWUgPSBOVUxMO1xuIFx0XHRpZiAocHJ0X3N1Yl9zaGFyZWQpXG4gXHRcdFx0cHJ0X25hbWUgPSBOVUxMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA0OjM4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCByZXBsYWNlcyBhIG1hbnVhbCBzdHJpbmcgcmVwbGFjZW1lbnQgbG9vcCB3aXRoIGEgY2FsbCB0byB0aGUgc3RhbmRhcmQgYHN0cnJlcGxhY2VgIGZ1bmN0aW9uLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYWM0MmY1ODk2OGY3MjYyZTlhYjc0N2MwODgwYWZlMjE3NGYzZTgyOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDE0IDA0OjM4OjE3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvbnRmcy9yZXBhcnNlLmMgYi9mcy9udGZzL3JlcGFyc2UuYwppbmRleCBmYTUyM2RjMzY5MWVhLi4xMjk4Y2ZjM2E3MDdmIDEwMDY0NAotLS0gYS9mcy9udGZzL3JlcGFyc2UuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9udGZzL3JlcGFyc2UuYwpAQCAtODk0LDEzICYjNDM7ODk0LDcgQEAgaW50IG50ZnNfcmVwYXJzZV9zZXRfbmF0aXZlX3N5bWxpbmsoc3RydWN0IG50ZnNfaW5vZGUgKm5pLAogCiAJZXJyID0gbnRmc19zZXRfbnRmc19yZXBhcnNlX2RhdGEobmksIChjaGFyICopcmVwYXJzZSwgdG90YWxfcmVwYXJzZV9sZW4pOwogCWlmICghZXJyKSB7Ci0JCWludCBsZW4gPSBzdHJsZW4oc3ViX25hbWUpOwotCi0JCWZvciAoaSA9IDA7IGkgJmx0OyBsZW47IGkmIzQzOyYjNDM7KSB7Ci0JCQlpZiAoc3ViX25hbWVbaV0gPT0gJiMzOTtcXCYjMzk7KQotCQkJCXN1Yl9uYW1lW2ldID0gJiMzOTsvJiMzOTs7Ci0JCX0KLQkJbmktJmd0O3RhcmdldCA9IHN1Yl9uYW1lOwomIzQzOwkJbmktJmd0O3RhcmdldCA9IHN0cnJlcGxhY2Uoc3ViX25hbWUsICYjMzk7XFwmIzM5OywgJiMzOTsvJiMzOTspOwogCQlzdWJfbmFtZSA9IE5VTEw7CiAJCWlmIChwcnRfc3ViX3NoYXJlZCkKIAkJCXBydF9uYW1lID0gTlVMTDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2NQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDI1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBGaWxlIFN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGZzL250ZnMvcmVwYXJzZS5jYC4gSXQgc2VlbXMgdGhleSYjMzk7dmUgc3dhcHBlZCBvdXQgYSBtYW51YWwgbG9vcCBmb3IgYHN0cnJlcGxhY2VgIHRvIGhhbmRsZSBiYWNrc2xhc2gtdG8tZm9yd2FyZC1zbGFzaCBjb252ZXJzaW9ucyBpbiBgc3ViX25hbWVgLiBPbiB0aGUgc3VyZmFjZSwgaXQmIzM5O3MgYSByZWZhY3RvcmluZywgd2hpY2ggaXMgZ29vZC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBpdCYjMzk7cyBjb3JyZWN0LiBBaCwgYHN0cnJlcGxhY2VgIHJldHVybnMgdGhlIHBvaW50ZXIgdG8gdGhlIG1vZGlmaWVkIHN0cmluZywgd2hpY2ggbWFrZXMgdGhpcyBzdWJzdGl0dXRpb24gZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gdGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uLiBXYWl0IGEgc2Vjb25kLCBgc3RycmVwbGFjZWAgaXMgYSBzdGFuZGFyZCBrZXJuZWwgZnVuY3Rpb24uIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LgoKTm93LCB0aGUgcmVhbCBxdWVzdGlvbjogaXMgdGhpcyBzb21ldGhpbmcgd2Ugc2hvdWxkIGNvbnNpZGVyIGZ1enppbmc/IFRoZSBmdW5jdGlvbiBiZWluZyBwYXRjaGVkIGlzIGBudGZzX3JlcGFyc2Vfc2V0X25hdGl2ZV9zeW1saW5rYC4gVGhhdCYjMzk7cyB0aGUga2V5LiBMZXQgbWUgY2hlY2sgdGhlIGNvZGUgaW4gYGZzL250ZnMvcmVwYXJzZS5jYC4gSG1tLCB3YWl0IGEgbWludXRlLCBpcyB0aGlzICphY3R1YWxseSogaW4gYGZzL250ZnMvYCBvciBgZnMvbnRmczMvYD8gVGhlIGRpZmYgc2F5cyBgZnMvbnRmcy9gLCBidXQgSSBkb24mIzM5O3QgcmVjYWxsIGEgYHJlcGFyc2UuY2AgaW4gdGhhdCBkaXJlY3RvcnkgaW4gdGhlIG1haW5saW5lIGtlcm5lbC4gQ291bGQgaXQgYmUgYGZzL250ZnMzL2AsIG9yIGFtIEkgbWlzc2luZyBzb21ldGhpbmc/IFRpbWUgdG8gY2hlY2sgdGhlIHNvdXJjZSB0cmVlIGFnYWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA0OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250ZnNfcmVwYXJzZV9zZXRfbmF0aXZlX3N5bWxpbmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9uYW1laS5jPTM5ND1zdGF0aWMgc3RydWN0IG50ZnNfaW5vZGUgKl9fbnRmc19jcmVhdGUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLFxuLS1cbmZzL250ZnMvbmFtZWkuYy02MTAtXHRcdFx0aWYgKE5Wb2xTeW1saW5rTmF0aXZlKHZvbCkpXG5mcy9udGZzL25hbWVpLmM6NjExOlx0XHRcdFx0ZXJyID0gbnRmc19yZXBhcnNlX3NldF9uYXRpdmVfc3ltbGluayhuaSwgdGFyZ2V0LCB0YXJnZXRfbGVuKTtcbmZzL250ZnMvbmFtZWkuYy02MTItXHRcdFx0ZWxzZVxuLS1cbmZzL250ZnMvcmVwYXJzZS5jPTc2MT1pbnQgbnRmc19yZXBhcnNlX3NldF93c2xfc3ltbGluayhzdHJ1Y3QgbnRmc19pbm9kZSAqbmksXG4tLVxuZnMvbnRmcy9yZXBhcnNlLmMtODAwLVxuZnMvbnRmcy9yZXBhcnNlLmM6ODAxOmludCBudGZzX3JlcGFyc2Vfc2V0X25hdGl2ZV9zeW1saW5rKHN0cnVjdCBudGZzX2lub2RlICpuaSxcbmZzL250ZnMvcmVwYXJzZS5jLTgwMi1cdFx0XHRcdCAgICBjb25zdCBjaGFyICp0YXJnZXQsIGludCB0YXJnZXRfbGVuKVxuLS1cbmZzL250ZnMvcmVwYXJzZS5oPTE2PWludCBudGZzX3JlcGFyc2Vfc2V0X3dzbF9zeW1saW5rKHN0cnVjdCBudGZzX2lub2RlICpuaSxcbmZzL250ZnMvcmVwYXJzZS5oLTE3LVx0XHRcdFx0IGNvbnN0IGNoYXIgKnRhcmdldCwgaW50IHRhcmdldF9sZW4pO1xuZnMvbnRmcy9yZXBhcnNlLmg6MTg6aW50IG50ZnNfcmVwYXJzZV9zZXRfbmF0aXZlX3N5bWxpbmsoc3RydWN0IG50ZnNfaW5vZGUgKm5pLFxuZnMvbnRmcy9yZXBhcnNlLmgtMTktXHRcdFx0XHQgICAgY29uc3QgY2hhciAqc3ltbmFtZSwgaW50IHN5bWxlbik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAxMAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsbHkgT2xkZXIgTlRGUyBJbXBsZW1lbnRhdGlvbioqCgpSaWdodCwgdGhpcyBsb29rcyBsaWtlIGBmcy9udGZzL3JlcGFyc2UuY2AuIEhtbSwgYSBiaXQgb2YgYSB3cmlua2xlIGhlcmUg4oCTIEkgd2FzIGV4cGVjdGluZyB0byBzZWUgYGZzL250ZnMzYCBpbiBhIG1vcmUgcmVjZW50IGtlcm5lbC4gVGhlIG9yaWdpbmFsIE5URlMgaW1wbGVtZW50YXRpb24gd2FzIGRlcHJlY2F0ZWQgYSB3aGlsZSBhZ28sIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZ29pbmcgb24uIElzIHRoaXMgYW4gb2xkZXIga2VybmVsIHZlcnNpb24sIHBlcmhhcHM/IE9yIG1heWJlIGEgc3BlY2lhbGl6ZWQgZm9yayB3aGVyZSB0aGUgb3JpZ2luYWwgYGZzL250ZnNgIGRpcmVjdG9yeSB3YXMgcmV0YWluZWQgYW5kIHBvdGVudGlhbGx5IHVwZGF0ZWQ/IExldCYjMzk7cyBjb25maXJtLCBJIHNlZSBgZnMvbnRmcy9gIHByZXNlbnQuIEkgc2hvdWxkIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIGBmcy9udGZzYCwgdGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZmlyc3QgY2x1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTlRGU19GUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL250ZnMvS2NvbmZpZzoyOmNvbmZpZyBOVEZTX0ZTXG5mcy9udGZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O05URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL250ZnMvS2NvbmZpZz0xMz1jb25maWcgTlRGU19ERUJVR1xuLS1cbmZzL250ZnMvS2NvbmZpZy0zNC1cbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcbmZzL250ZnMvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7TlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MzMKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEZ1enogVGFyZ2V0IGluIE5URlMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4gVGhpcyBsb29rcyBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGBOVEZTX0ZTYCBjb25maWd1cmF0aW9uLiBBbmQgdGhlIHJlbGV2YW50IGZ1bmN0aW9uLCBhaCwgaGVyZSBpdCBpczogYG50ZnNfcmVwYXJzZV9zZXRfbmF0aXZlX3N5bWxpbmtgLiBEZWZpbml0ZWx5IGEgZmlsZXN5c3RlbSBvcGVyYXRpb24sIHNwZWNpZmljYWxseSBzeW1saW5rIGNyZWF0aW9uLiBNeSBndXQgc2F5cyAmIzM0O2Z1enogaXQsJiMzNDsgYnV0IGxldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2suCgpPa2F5LCB0aGUgY29kZSBjaGFuZ2UgaXMganVzdCBzd2FwcGluZyBvdXQgYSBtYW51YWwgbG9vcCBmb3IgYHN0cnJlcGxhY2VgLiBJcyB0aGlzIGEgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2U/IExldCYjMzk7cyBzZWUuLi4gdGhlIGBzdHJyZXBsYWNlYCBpbXBsZW1lbnRhdGlvbi4uLiBhaCwgdGhhdCYjMzk7cyBpdCEgVGhpcyBgc3RycmVwbGFjZWAgZnVuY3Rpb24gcmV0dXJucyBhICpwb2ludGVyIHRvIHRoZSBlbmQqIG9mIHRoZSBzdHJpbmcsIG5vdCB0aGUgYmVnaW5uaW5nIGxpa2UgeW91JiMzOTtkIHVzdWFsbHkgZXhwZWN0LiBJIG5lZWQgdG8gYmUgc3VyZSBhYm91dCB0aGlzLgoKVGltZSB0byBjb25zdWx0IHRoZSBzb3VyY2UuIExldCBtZSBjaGVjayB0aGUgYGxpYi9zdHJpbmcuY2AgZmlsZSBmb3IgdGhlIGBzdHJyZXBsYWNlYCBpbXBsZW1lbnRhdGlvbiBhbmQgY29uZmlybSB0aGlzLiBUaGlzIHN1YnRsZSBkaWZmZXJlbmNlIGluIHBvaW50ZXIgcmV0dXJuIGNvdWxkIGJlIGEgc291cmNlIG9mIGFsbCBzb3J0cyBvZiBvZmYtYnktb25lIGVycm9ycyBvciBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgaWYgbm90IGhhbmRsZWQgY2FyZWZ1bGx5LiBUaGlzIGlzIHdvcnRoIGEgZGVlcGVyIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDQ6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hhciBcXCpzdHJyZXBsYWNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvc3RyaW5nLmg9MjgxPXZvaWQgKm1lbWNocl9pbnYoY29uc3Qgdm9pZCAqcywgaW50IGMsIHNpemVfdCBuKTtcbmluY2x1ZGUvbGludXgvc3RyaW5nLmg6MjgyOmNoYXIgKnN0cnJlcGxhY2UoY2hhciAqc3RyLCBjaGFyIG9sZCwgY2hhciBuZXcpO1xuaW5jbHVkZS9saW51eC9zdHJpbmcuaC0yODMtXG4tLVxubGliL3N0cmluZ19oZWxwZXJzLmM9OTczPUVYUE9SVF9TWU1CT0woX19zeXNmc19tYXRjaF9zdHJpbmcpO1xuLS1cbmxpYi9zdHJpbmdfaGVscGVycy5jLTk4NC0gKi9cbmxpYi9zdHJpbmdfaGVscGVycy5jOjk4NTpjaGFyICpzdHJyZXBsYWNlKGNoYXIgKnN0ciwgY2hhciBvbGQsIGNoYXIgbmV3KVxubGliL3N0cmluZ19oZWxwZXJzLmMtOTg2LXtcbi0tXG50b29scy9pbmNsdWRlL2xpbnV4L3N0cmluZy5oPTMzPWNoYXIgKnN0cl9lcnJvcl9yKGludCBlcnJudW0sIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zmxlbik7XG50b29scy9pbmNsdWRlL2xpbnV4L3N0cmluZy5oLTM0LVxudG9vbHMvaW5jbHVkZS9saW51eC9zdHJpbmcuaDozNTpjaGFyICpzdHJyZXBsYWNlKGNoYXIgKnMsIGNoYXIgb2xkLCBjaGFyIG5ldyk7XG50b29scy9pbmNsdWRlL2xpbnV4L3N0cmluZy5oLTM2LVxuLS1cbnRvb2xzL2xpYi9zdHJpbmcuYz0xNTk9dm9pZCByZW1vdmVfc3BhY2VzKGNoYXIgKnMpXG4tLVxudG9vbHMvbGliL3N0cmluZy5jLTE3Ni0gKi9cbnRvb2xzL2xpYi9zdHJpbmcuYzoxNzc6Y2hhciAqc3RycmVwbGFjZShjaGFyICpzLCBjaGFyIG9sZCwgY2hhciBuZXcpXG50b29scy9saWIvc3RyaW5nLmMtMTc4LXtcbi0tXG50b29scy9wZXJmL3V0aWwvc3RyaW5nLmM9NDA1PXVuc2lnbmVkIGludCBoZXgoY2hhciBjKVxuLS1cbnRvb2xzL3BlcmYvdXRpbC9zdHJpbmcuYy00MjAtICovXG50b29scy9wZXJmL3V0aWwvc3RyaW5nLmM6NDIxOmNoYXIgKnN0cnJlcGxhY2VfY2hhcnMoY2hhciBuZWVkbGUsIGNvbnN0IGNoYXIgKmhheXN0YWNrLCBjb25zdCBjaGFyICpyZXBsYWNlKVxudG9vbHMvcGVyZi91dGlsL3N0cmluZy5jLTQyMi17XG4tLVxudG9vbHMvcGVyZi91dGlsL3N0cmluZzIuaD00Mz11bnNpZ25lZCBpbnQgaGV4KGNoYXIgYyk7XG50b29scy9wZXJmL3V0aWwvc3RyaW5nMi5oOjQ0OmNoYXIgKnN0cnJlcGxhY2VfY2hhcnMoY2hhciBuZWVkbGUsIGNvbnN0IGNoYXIgKmhheXN0YWNrLCBjb25zdCBjaGFyICpyZXBsYWNlKTtcbnRvb2xzL3BlcmYvdXRpbC9zdHJpbmcyLmgtNDUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM3NwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gYHN0cnJlcGxhY2VgIEltcGxlbWVudGF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gY3JhY2sgb3BlbiBgbGliL3N0cmluZ19oZWxwZXJzLmNgIGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgYHN0cnJlcGxhY2VgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgdGhpcyB0aGluZyYjMzk7cyBpbXBsZW1lbnRlZC4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gZWZmaWNpZW5jeSBhbmQgcG90ZW50aWFsIGVkZ2UgY2FzZXMuIEkmIzM5O20gYXNzdW1pbmcgdGhlcmUmIzM5O3Mgc29tZSBnb29kIGNoYXJhY3Rlci1ieS1jaGFyYWN0ZXIgaXRlcmF0aW9uIGdvaW5nIG9uIGluIHRoZXJlIHNvbWV3aGVyZS4gSSYjMzk7bSBjdXJpb3VzIGlmIHRoZXkmIzM5O3JlIHVzaW5nIGBzdHJzdHJgIG9yIHNpbWlsYXIgc3RyaW5nIHNlYXJjaCBmdW5jdGlvbnMgaW50ZXJuYWxseSwgb3IgaWYgdGhleSByb2xsZWQgdGhlaXIgb3duLiBBbmQgaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIG1lbW9yeSBhbGxvY2F0aW9u4oCmYXJlIHRoZXkgcHJlLWNhbGN1bGF0aW5nIHRoZSByZXF1aXJlZCBidWZmZXIgc2l6ZSwgb3IgYXJlIHRoZXkgcmVhbGxvY2F0aW5nIGR5bmFtaWNhbGx5PyBJIGhvcGUgdGhleSYjMzk7cmUgbm90IGRvaW5nIGEgbmFpdmUgYHN0cmxlbmAgZXZlcnkgc2luZ2xlIHRpbWUg4oCTIHRoYXQgd291bGQgYmUgYSBwZXJmb3JtYW5jZSBraWxsZXIsIGVzcGVjaWFsbHkgb24gbGFyZ2VyIHN0cmluZ3MuIEFsc28sIEkgd29uZGVyIGFib3V0IHRoZSBwb3RlbnRpYWwgZm9yIGJ1ZmZlciBvdmVyZmxvd3MuIExldCYjMzk7cyBzZWUgaWYgdGhleSYjMzk7cmUgY2hlY2tpbmcgaW5wdXQgbGVuZ3RocyBjYXJlZnVsbHkuIEFuZCBob3cgYWJvdXQgdGhlIGNhc2Ugd2hlcmUgdGhlIGBvbGRgIHN0cmluZyBpcyBlbXB0eT8gV2hhdCBkb2VzIHRoZSBjb2RlIGRvIGluIHRoYXQgc2NlbmFyaW8/IFRpbWUgdG8gcHV0IG15IGRlYnVnZ2luZyBoYXQgb24gYW5kIGRpc3NlY3QgdGhpcyB0aGluZy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2xpYi9zdHJpbmdfaGVscGVycy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5ODA6XHQgKlxuIDk4MTpcdCAqIFJlcGxhY2VzIHRoZSBlYWNoIEBvbGQgY2hhcmFjdGVyIHdpdGggYSBAbmV3IG9uZSBpbiB0aGUgZ2l2ZW4gc3RyaW5nIEBzdHIuXG4gOTgyOlx0ICpcbiA5ODM6XHQgKiBSZXR1cm46IHBvaW50ZXIgdG8gdGhlIHN0cmluZyBAc3RyIGl0c2VsZi5cbiA5ODQ6XHQgKi9cbiA5ODU6XHRjaGFyICpzdHJyZXBsYWNlKGNoYXIgKnN0ciwgY2hhciBvbGQsIGNoYXIgbmV3KVxuIDk4NjpcdHtcbiA5ODc6XHRcdGNoYXIgKnMgPSBzdHI7XG4gOTg4Olx0XG4gOTg5Olx0XHRmb3IgKDsgKnM7ICYjNDM7JiM0MztzKVxuIDk5MDpcdFx0XHRpZiAoKnMgPT0gb2xkKVxuIDk5MTpcdFx0XHRcdCpzID0gbmV3O1xuIDk5MjpcdFx0cmV0dXJuIHN0cjtcbiA5OTM6XHR9XG4gOTk0Olx0RVhQT1JUX1NZTUJPTChzdHJyZXBsYWNlKTtcbiA5OTU6XHRcbiA5OTY6XHQvKipcbiA5OTc6XHQgKiBtZW1jcHlfYW5kX3BhZCAtIENvcHkgb25lIGJ1ZmZlciB0byBhbm90aGVyIHdpdGggcGFkZGluZ1xuIDk5ODpcdCAqIEBkZXN0OiBXaGVyZSB0byBjb3B5IHRvXG4gOTk5Olx0ICogQGRlc3RfbGVuOiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIHNpemVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk0NAoJCQkJCQkJb3V0cHV0OiA3MQoJCQkJCQkJdGhvdWdodHM6IDQ0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZhY3RvcmluZyBFdmFsdWF0aW9uOiBgc3RycmVwbGFjZWAgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgc3RycmVwbGFjZWAganVzdCByZXR1cm5zIHRoZSBzdHJpbmcgaXRzZWxmLiBTbywgdGhpcyBsaW5lIGBuaS0mZ3Q7dGFyZ2V0ID0gc3RycmVwbGFjZShzdWJfbmFtZSwgJiMzOTtcXCYjMzk7LCAmIzM5Oy8mIzM5Oyk7YCBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSBhcyB0aGF0IGxvb3AgdXNpbmcgYHN0cmxlbmAgYW5kIHRoZW4gbW9kaWZ5aW5nIGBzdWJfbmFtZWAgaW4gcGxhY2UuIExldCBtZSB2aXN1YWxpemUgdGhhdCwgY29uZmlybWluZyBpdCYjMzk7cyBqdXN0IGEgcmVmYWN0b3JpbmcuCgpTbywgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIGEgbG9vcCB0aGF0IHdlbnQgdGhyb3VnaCB0aGUgc3RyaW5nLCByZXBsYWNlZCBiYWNrc2xhc2hlcyB3aXRoIGZvcndhcmQgc2xhc2hlcy4gVGhlIHJlZmFjdG9yZWQgdmVyc2lvbiB1c2VzIGEgc3RhbmRhcmQgbGlicmFyeSBmdW5jdGlvbiwgYHN0cnJlcGxhY2VgLgoKSXQgYXBwZWFycyB0aGF0IGBzdHJyZXBsYWNlYCwgYWNjb3JkaW5nIHRvIHRoZSBkb2N1bWVudGF0aW9uLCBtb2RpZmllcyB0aGUgc3RyaW5nIGluIHBsYWNlIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgb3JpZ2luYWwgc3RyaW5nLiBJdCYjMzk7cyBlc3NlbnRpYWxseSB0aGUgc2FtZSBsb2dpYy4gTGV0IG1lIHRoaW5rLCBpcyB0aGVyZSAqYW55KiBmdW5jdGlvbmFsIGNoYW5nZT8gTm8sIGl0JiMzOTtzIGp1c3QgcmVwbGFjaW5nIGEgbG9vcCB3aXRoIGEgc3RhbmRhcmQgbGlicmFyeSBmdW5jdGlvbi4gU28sIGBuaS0mZ3Q7dGFyZ2V0YCBlbmRzIHVwIHBvaW50aW5nIHRvIHRoZSBzYW1lIG1vZGlmaWVkIGBzdWJfbmFtZWAgaW4gYm90aCBjYXNlcy4KCldhaXQsIGFyZSB0aGVyZSBoaWRkZW4gZGlmZmVyZW5jZXMgd2l0aCBudWxsIHRlcm1pbmF0aW9uLCBvdXQtb2YtYm91bmRzIHJlYWRzLCBvciBwb3RlbnRpYWwgdW5kZWZpbmVkIGJlaGF2aW9yPyBMZXQmIzM5O3MgY29uc2lkZXIgY29ybmVyIGNhc2VzLiBIbW0sIGJvdGggdGhlIG9yaWdpbmFsIGNvZGUgYW5kIHRoZSBmdW5jdGlvbiBleHBlY3QgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLiBTbyBmdW5jdGlvbmFsbHkgaXQgc2VlbXMgaWRlbnRpY2FsLgoKU2luY2UgaXQmIzM5O3MgYSBwdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2UsIGEgcmVmYWN0b3JpbmcsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBkaWZmIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gWWVwLCB0aGUgZGlmZiBjb25maXJtcyBpdCYjMzk7cyBqdXN0IGEgc3RyYWlnaHRmb3J3YXJkIHJlcGxhY2VtZW50IG9mIHRoZSBtYW51YWwgbG9vcCB3aXRoIGBzdHJyZXBsYWNlYC4gRXhlY3V0aW9uIGZsb3cgcmVtYWlucyB0aGUgc2FtZS4gSSYjMzk7bSBnb2luZyB3aXRoIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IHJlcGxhY2VzIGEgbWFudWFsIHN0cmluZyByZXBsYWNlbWVudCBsb29wIHdpdGggYSBjYWxsIHRvIHRoZSBzdGFuZGFyZCBgc3RycmVwbGFjZWAgZnVuY3Rpb24uIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IHJlcGxhY2VzIGEgbWFudWFsIHN0cmluZyByZXBsYWNlbWVudCBsb29wIHdpdGggYSBjYWxsIHRvIHRoZSBzdGFuZGFyZCBgc3RycmVwbGFjZWAgZnVuY3Rpb24uIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA0OjM4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwNDozODoxOC4zMTk2MTI1NjFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDIyMjExODg1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IHJlcGxhY2VzIGEgbWFudWFsIHN0cmluZyByZXBsYWNlbWVudCBsb29wIHdpdGggYSBjYWxsIHRvIHRoZSBzdGFuZGFyZCBgc3RycmVwbGFjZWAgZnVuY3Rpb24uIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA0OjM4OjE4LjMxOTYyMjQxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjA0MTM4MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhYzQyZjU4OTY4ZjcyNjJlOWFiNzQ3YzA4ODBhZmUyMTc0ZjNlODI5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDE0IDA0OjM4OjE3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL250ZnMvcmVwYXJzZS5jIGIvZnMvbnRmcy9yZXBhcnNlLmNcXG5pbmRleCBmYTUyM2RjMzY5MWVhLi4xMjk4Y2ZjM2E3MDdmIDEwMDY0NFxcbi0tLSBhL2ZzL250ZnMvcmVwYXJzZS5jXFxuKysrIGIvZnMvbnRmcy9yZXBhcnNlLmNcXG5AQCAtODk0LDEzICs4OTQsNyBAQCBpbnQgbnRmc19yZXBhcnNlX3NldF9uYXRpdmVfc3ltbGluayhzdHJ1Y3QgbnRmc19pbm9kZSAqbmksXFxuIFxcbiBcXHRlcnIgPSBudGZzX3NldF9udGZzX3JlcGFyc2VfZGF0YShuaSwgKGNoYXIgKilyZXBhcnNlLCB0b3RhbF9yZXBhcnNlX2xlbik7XFxuIFxcdGlmICghZXJyKSB7XFxuLVxcdFxcdGludCBsZW4gPSBzdHJsZW4oc3ViX25hbWUpO1xcbi1cXG4tXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGxlbjsgaSsrKSB7XFxuLVxcdFxcdFxcdGlmIChzdWJfbmFtZVtpXSA9PSAnXFxcXFxcXFwnKVxcbi1cXHRcXHRcXHRcXHRzdWJfbmFtZVtpXSA9ICcvJztcXG4tXFx0XFx0fVxcbi1cXHRcXHRuaS1cXHUwMDNldGFyZ2V0ID0gc3ViX25hbWU7XFxuK1xcdFxcdG5pLVxcdTAwM2V0YXJnZXQgPSBzdHJyZXBsYWNlKHN1Yl9uYW1lLCAnXFxcXFxcXFwnLCAnLycpO1xcbiBcXHRcXHRzdWJfbmFtZSA9IE5VTEw7XFxuIFxcdFxcdGlmIChwcnRfc3ViX3NoYXJlZClcXG4gXFx0XFx0XFx0cHJ0X25hbWUgPSBOVUxMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwNDozODoxOC44ODA2NjkxOTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozMzY2MTAzODE5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaXMgYSBwdXJlIHJlZmFjdG9yaW5nIHRoYXQgcmVwbGFjZXMgYSBtYW51YWwgc3RyaW5nIHJlcGxhY2VtZW50IGxvb3Agd2l0aCBhIGNhbGwgdG8gdGhlIHN0YW5kYXJkIGBzdHJyZXBsYWNlYCBmdW5jdGlvbi4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYWM0MmY1ODk2OGY3MjYyZTlhYjc0N2MwODgwYWZlMjE3NGYzZTgyOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDA0OjM4OjE3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9yZXBhcnNlLmMgYi9mcy9udGZzL3JlcGFyc2UuY1xuaW5kZXggZmE1MjNkYzM2OTFlYS4uMTI5OGNmYzNhNzA3ZiAxMDA2NDRcbi0tLSBhL2ZzL250ZnMvcmVwYXJzZS5jXG4rKysgYi9mcy9udGZzL3JlcGFyc2UuY1xuQEAgLTg5NCwxMyArODk0LDcgQEAgaW50IG50ZnNfcmVwYXJzZV9zZXRfbmF0aXZlX3N5bWxpbmsoc3RydWN0IG50ZnNfaW5vZGUgKm5pLFxuIFxuIFx0ZXJyID0gbnRmc19zZXRfbnRmc19yZXBhcnNlX2RhdGEobmksIChjaGFyICopcmVwYXJzZSwgdG90YWxfcmVwYXJzZV9sZW4pO1xuIFx0aWYgKCFlcnIpIHtcbi1cdFx0aW50IGxlbiA9IHN0cmxlbihzdWJfbmFtZSk7XG4tXG4tXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlbjsgaSsrKSB7XG4tXHRcdFx0aWYgKHN1Yl9uYW1lW2ldID09ICdcXFxcJylcbi1cdFx0XHRcdHN1Yl9uYW1lW2ldID0gJy8nO1xuLVx0XHR9XG4tXHRcdG5pLVx1MDAzZXRhcmdldCA9IHN1Yl9uYW1lO1xuK1x0XHRuaS1cdTAwM2V0YXJnZXQgPSBzdHJyZXBsYWNlKHN1Yl9uYW1lLCAnXFxcXCcsICcvJyk7XG4gXHRcdHN1Yl9uYW1lID0gTlVMTDtcbiBcdFx0aWYgKHBydF9zdWJfc2hhcmVkKVxuIFx0XHRcdHBydF9uYW1lID0gTlVMTDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA0OjM4OjE4Ljg4MDY3MDQ0MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MzY0NjQ1NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRmlsZSBTeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZnMvbnRmcy9yZXBhcnNlLmNgLiBJdCBzZWVtcyB0aGV5J3ZlIHN3YXBwZWQgb3V0IGEgbWFudWFsIGxvb3AgZm9yIGBzdHJyZXBsYWNlYCB0byBoYW5kbGUgYmFja3NsYXNoLXRvLWZvcndhcmQtc2xhc2ggY29udmVyc2lvbnMgaW4gYHN1Yl9uYW1lYC4gT24gdGhlIHN1cmZhY2UsIGl0J3MgYSByZWZhY3RvcmluZywgd2hpY2ggaXMgZ29vZC4gTGV0J3MgbWFrZSBzdXJlIGl0J3MgY29ycmVjdC4gQWgsIGBzdHJyZXBsYWNlYCByZXR1cm5zIHRoZSBwb2ludGVyIHRvIHRoZSBtb2RpZmllZCBzdHJpbmcsIHdoaWNoIG1ha2VzIHRoaXMgc3Vic3RpdHV0aW9uIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIHRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbi4gV2FpdCBhIHNlY29uZCwgYHN0cnJlcGxhY2VgIGlzIGEgc3RhbmRhcmQga2VybmVsIGZ1bmN0aW9uLiBUaGF0J3MgZ29vZCB0byBrbm93LlxuXG5Ob3csIHRoZSByZWFsIHF1ZXN0aW9uOiBpcyB0aGlzIHNvbWV0aGluZyB3ZSBzaG91bGQgY29uc2lkZXIgZnV6emluZz8gVGhlIGZ1bmN0aW9uIGJlaW5nIHBhdGNoZWQgaXMgYG50ZnNfcmVwYXJzZV9zZXRfbmF0aXZlX3N5bWxpbmtgLiBUaGF0J3MgdGhlIGtleS4gTGV0IG1lIGNoZWNrIHRoZSBjb2RlIGluIGBmcy9udGZzL3JlcGFyc2UuY2AuIEhtbSwgd2FpdCBhIG1pbnV0ZSwgaXMgdGhpcyAqYWN0dWFsbHkqIGluIGBmcy9udGZzL2Agb3IgYGZzL250ZnMzL2A/IFRoZSBkaWZmIHNheXMgYGZzL250ZnMvYCwgYnV0IEkgZG9uJ3QgcmVjYWxsIGEgYHJlcGFyc2UuY2AgaW4gdGhhdCBkaXJlY3RvcnkgaW4gdGhlIG1haW5saW5lIGtlcm5lbC4gQ291bGQgaXQgYmUgYGZzL250ZnMzL2AsIG9yIGFtIEkgbWlzc2luZyBzb21ldGhpbmc/IFRpbWUgdG8gY2hlY2sgdGhlIHNvdXJjZSB0cmVlIGFnYWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDY1LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDQ6Mzg6MjMuODE3MTM4MTM1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1OTA0NzkzOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnRmc19yZXBhcnNlX3NldF9uYXRpdmVfc3ltbGlua1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL25hbWVpLmM9Mzk0PXN0YXRpYyBzdHJ1Y3QgbnRmc19pbm9kZSAqX19udGZzX2NyZWF0ZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpkaXIsXFxuLS1cXG5mcy9udGZzL25hbWVpLmMtNjEwLVxcdFxcdFxcdGlmIChOVm9sU3ltbGlua05hdGl2ZSh2b2wpKVxcbmZzL250ZnMvbmFtZWkuYzo2MTE6XFx0XFx0XFx0XFx0ZXJyID0gbnRmc19yZXBhcnNlX3NldF9uYXRpdmVfc3ltbGluayhuaSwgdGFyZ2V0LCB0YXJnZXRfbGVuKTtcXG5mcy9udGZzL25hbWVpLmMtNjEyLVxcdFxcdFxcdGVsc2VcXG4tLVxcbmZzL250ZnMvcmVwYXJzZS5jPTc2MT1pbnQgbnRmc19yZXBhcnNlX3NldF93c2xfc3ltbGluayhzdHJ1Y3QgbnRmc19pbm9kZSAqbmksXFxuLS1cXG5mcy9udGZzL3JlcGFyc2UuYy04MDAtXFxuZnMvbnRmcy9yZXBhcnNlLmM6ODAxOmludCBudGZzX3JlcGFyc2Vfc2V0X25hdGl2ZV9zeW1saW5rKHN0cnVjdCBudGZzX2lub2RlICpuaSxcXG5mcy9udGZzL3JlcGFyc2UuYy04MDItXFx0XFx0XFx0XFx0ICAgIGNvbnN0IGNoYXIgKnRhcmdldCwgaW50IHRhcmdldF9sZW4pXFxuLS1cXG5mcy9udGZzL3JlcGFyc2UuaD0xNj1pbnQgbnRmc19yZXBhcnNlX3NldF93c2xfc3ltbGluayhzdHJ1Y3QgbnRmc19pbm9kZSAqbmksXFxuZnMvbnRmcy9yZXBhcnNlLmgtMTctXFx0XFx0XFx0XFx0IGNvbnN0IGNoYXIgKnRhcmdldCwgaW50IHRhcmdldF9sZW4pO1xcbmZzL250ZnMvcmVwYXJzZS5oOjE4OmludCBudGZzX3JlcGFyc2Vfc2V0X25hdGl2ZV9zeW1saW5rKHN0cnVjdCBudGZzX2lub2RlICpuaSxcXG5mcy9udGZzL3JlcGFyc2UuaC0xOS1cXHRcXHRcXHRcXHQgICAgY29uc3QgY2hhciAqc3ltbmFtZSwgaW50IHN5bWxlbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA0OjM4OjI2LjQwNzYyNjI3NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MTg4ODI5ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWxseSBPbGRlciBOVEZTIEltcGxlbWVudGF0aW9uKipcblxuUmlnaHQsIHRoaXMgbG9va3MgbGlrZSBgZnMvbnRmcy9yZXBhcnNlLmNgLiBIbW0sIGEgYml0IG9mIGEgd3JpbmtsZSBoZXJlIOKAkyBJIHdhcyBleHBlY3RpbmcgdG8gc2VlIGBmcy9udGZzM2AgaW4gYSBtb3JlIHJlY2VudCBrZXJuZWwuIFRoZSBvcmlnaW5hbCBOVEZTIGltcGxlbWVudGF0aW9uIHdhcyBkZXByZWNhdGVkIGEgd2hpbGUgYWdvLCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24uIElzIHRoaXMgYW4gb2xkZXIga2VybmVsIHZlcnNpb24sIHBlcmhhcHM/IE9yIG1heWJlIGEgc3BlY2lhbGl6ZWQgZm9yayB3aGVyZSB0aGUgb3JpZ2luYWwgYGZzL250ZnNgIGRpcmVjdG9yeSB3YXMgcmV0YWluZWQgYW5kIHBvdGVudGlhbGx5IHVwZGF0ZWQ/IExldCdzIGNvbmZpcm0sIEkgc2VlIGBmcy9udGZzL2AgcHJlc2VudC4gSSBzaG91bGQgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gYGZzL250ZnNgLCB0aGF0IHNob3VsZCBnaXZlIG1lIHRoZSBmaXJzdCBjbHVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDEwLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDQ6Mzg6MzAuMjI2NTEyMzU0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0OTMwMzY1OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5URlNfRlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvbnRmcy9LY29uZmlnOjI6Y29uZmlnIE5URlNfRlNcXG5mcy9udGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvbnRmcy9LY29uZmlnPTEzPWNvbmZpZyBOVEZTX0RFQlVHXFxuLS1cXG5mcy9udGZzL0tjb25maWctMzQtXFxuZnMvbnRmcy9LY29uZmlnOjM1OmNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxcbmZzL250ZnMvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwNDozODozMi43MTk1NTU1OTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjMzMjA0MDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBGdXp6IFRhcmdldCBpbiBOVEZTKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBUaGlzIGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIHRoZSBgTlRGU19GU2AgY29uZmlndXJhdGlvbi4gQW5kIHRoZSByZWxldmFudCBmdW5jdGlvbiwgYWgsIGhlcmUgaXQgaXM6IGBudGZzX3JlcGFyc2Vfc2V0X25hdGl2ZV9zeW1saW5rYC4gRGVmaW5pdGVseSBhIGZpbGVzeXN0ZW0gb3BlcmF0aW9uLCBzcGVjaWZpY2FsbHkgc3ltbGluayBjcmVhdGlvbi4gTXkgZ3V0IHNheXMgXCJmdXp6IGl0LFwiIGJ1dCBsZXQncyB0YWtlIGEgY2xvc2VyIGxvb2suXG5cbk9rYXksIHRoZSBjb2RlIGNoYW5nZSBpcyBqdXN0IHN3YXBwaW5nIG91dCBhIG1hbnVhbCBsb29wIGZvciBgc3RycmVwbGFjZWAuIElzIHRoaXMgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZT8gTGV0J3Mgc2VlLi4uIHRoZSBgc3RycmVwbGFjZWAgaW1wbGVtZW50YXRpb24uLi4gYWgsIHRoYXQncyBpdCEgVGhpcyBgc3RycmVwbGFjZWAgZnVuY3Rpb24gcmV0dXJucyBhICpwb2ludGVyIHRvIHRoZSBlbmQqIG9mIHRoZSBzdHJpbmcsIG5vdCB0aGUgYmVnaW5uaW5nIGxpa2UgeW91J2QgdXN1YWxseSBleHBlY3QuIEkgbmVlZCB0byBiZSBzdXJlIGFib3V0IHRoaXMuXG5cblRpbWUgdG8gY29uc3VsdCB0aGUgc291cmNlLiBMZXQgbWUgY2hlY2sgdGhlIGBsaWIvc3RyaW5nLmNgIGZpbGUgZm9yIHRoZSBgc3RycmVwbGFjZWAgaW1wbGVtZW50YXRpb24gYW5kIGNvbmZpcm0gdGhpcy4gVGhpcyBzdWJ0bGUgZGlmZmVyZW5jZSBpbiBwb2ludGVyIHJldHVybiBjb3VsZCBiZSBhIHNvdXJjZSBvZiBhbGwgc29ydHMgb2Ygb2ZmLWJ5LW9uZSBlcnJvcnMgb3IgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIGlmIG5vdCBoYW5kbGVkIGNhcmVmdWxseS4gVGhpcyBpcyB3b3J0aCBhIGRlZXBlciBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDMzLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA0OjM4OjQwLjM1Mjc2MjY2NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjkxODE4OTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoYXIgXFxcXCpzdHJyZXBsYWNlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvc3RyaW5nLmg9MjgxPXZvaWQgKm1lbWNocl9pbnYoY29uc3Qgdm9pZCAqcywgaW50IGMsIHNpemVfdCBuKTtcXG5pbmNsdWRlL2xpbnV4L3N0cmluZy5oOjI4MjpjaGFyICpzdHJyZXBsYWNlKGNoYXIgKnN0ciwgY2hhciBvbGQsIGNoYXIgbmV3KTtcXG5pbmNsdWRlL2xpbnV4L3N0cmluZy5oLTI4My1cXG4tLVxcbmxpYi9zdHJpbmdfaGVscGVycy5jPTk3Mz1FWFBPUlRfU1lNQk9MKF9fc3lzZnNfbWF0Y2hfc3RyaW5nKTtcXG4tLVxcbmxpYi9zdHJpbmdfaGVscGVycy5jLTk4NC0gKi9cXG5saWIvc3RyaW5nX2hlbHBlcnMuYzo5ODU6Y2hhciAqc3RycmVwbGFjZShjaGFyICpzdHIsIGNoYXIgb2xkLCBjaGFyIG5ldylcXG5saWIvc3RyaW5nX2hlbHBlcnMuYy05ODYte1xcbi0tXFxudG9vbHMvaW5jbHVkZS9saW51eC9zdHJpbmcuaD0zMz1jaGFyICpzdHJfZXJyb3JfcihpbnQgZXJybnVtLCBjaGFyICpidWYsIHNpemVfdCBidWZsZW4pO1xcbnRvb2xzL2luY2x1ZGUvbGludXgvc3RyaW5nLmgtMzQtXFxudG9vbHMvaW5jbHVkZS9saW51eC9zdHJpbmcuaDozNTpjaGFyICpzdHJyZXBsYWNlKGNoYXIgKnMsIGNoYXIgb2xkLCBjaGFyIG5ldyk7XFxudG9vbHMvaW5jbHVkZS9saW51eC9zdHJpbmcuaC0zNi1cXG4tLVxcbnRvb2xzL2xpYi9zdHJpbmcuYz0xNTk9dm9pZCByZW1vdmVfc3BhY2VzKGNoYXIgKnMpXFxuLS1cXG50b29scy9saWIvc3RyaW5nLmMtMTc2LSAqL1xcbnRvb2xzL2xpYi9zdHJpbmcuYzoxNzc6Y2hhciAqc3RycmVwbGFjZShjaGFyICpzLCBjaGFyIG9sZCwgY2hhciBuZXcpXFxudG9vbHMvbGliL3N0cmluZy5jLTE3OC17XFxuLS1cXG50b29scy9wZXJmL3V0aWwvc3RyaW5nLmM9NDA1PXVuc2lnbmVkIGludCBoZXgoY2hhciBjKVxcbi0tXFxudG9vbHMvcGVyZi91dGlsL3N0cmluZy5jLTQyMC0gKi9cXG50b29scy9wZXJmL3V0aWwvc3RyaW5nLmM6NDIxOmNoYXIgKnN0cnJlcGxhY2VfY2hhcnMoY2hhciBuZWVkbGUsIGNvbnN0IGNoYXIgKmhheXN0YWNrLCBjb25zdCBjaGFyICpyZXBsYWNlKVxcbnRvb2xzL3BlcmYvdXRpbC9zdHJpbmcuYy00MjIte1xcbi0tXFxudG9vbHMvcGVyZi91dGlsL3N0cmluZzIuaD00Mz11bnNpZ25lZCBpbnQgaGV4KGNoYXIgYyk7XFxudG9vbHMvcGVyZi91dGlsL3N0cmluZzIuaDo0NDpjaGFyICpzdHJyZXBsYWNlX2NoYXJzKGNoYXIgbmVlZGxlLCBjb25zdCBjaGFyICpoYXlzdGFjaywgY29uc3QgY2hhciAqcmVwbGFjZSk7XFxudG9vbHMvcGVyZi91dGlsL3N0cmluZzIuaC00NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDQ6Mzg6NDMuMDQ0NTg3NTkzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMwNDQ0Mzc1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBgc3RycmVwbGFjZWAgSW1wbGVtZW50YXRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGNyYWNrIG9wZW4gYGxpYi9zdHJpbmdfaGVscGVycy5jYCBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGBzdHJyZXBsYWNlYCBmdW5jdGlvbi4gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaG93IHRoaXMgdGhpbmcncyBpbXBsZW1lbnRlZC4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBlZmZpY2llbmN5IGFuZCBwb3RlbnRpYWwgZWRnZSBjYXNlcy4gSSdtIGFzc3VtaW5nIHRoZXJlJ3Mgc29tZSBnb29kIGNoYXJhY3Rlci1ieS1jaGFyYWN0ZXIgaXRlcmF0aW9uIGdvaW5nIG9uIGluIHRoZXJlIHNvbWV3aGVyZS4gSSdtIGN1cmlvdXMgaWYgdGhleSdyZSB1c2luZyBgc3Ryc3RyYCBvciBzaW1pbGFyIHN0cmluZyBzZWFyY2ggZnVuY3Rpb25zIGludGVybmFsbHksIG9yIGlmIHRoZXkgcm9sbGVkIHRoZWlyIG93bi4gQW5kIGhvdyB0aGV5J3JlIGhhbmRsaW5nIG1lbW9yeSBhbGxvY2F0aW9u4oCmYXJlIHRoZXkgcHJlLWNhbGN1bGF0aW5nIHRoZSByZXF1aXJlZCBidWZmZXIgc2l6ZSwgb3IgYXJlIHRoZXkgcmVhbGxvY2F0aW5nIGR5bmFtaWNhbGx5PyBJIGhvcGUgdGhleSdyZSBub3QgZG9pbmcgYSBuYWl2ZSBgc3RybGVuYCBldmVyeSBzaW5nbGUgdGltZSDigJMgdGhhdCB3b3VsZCBiZSBhIHBlcmZvcm1hbmNlIGtpbGxlciwgZXNwZWNpYWxseSBvbiBsYXJnZXIgc3RyaW5ncy4gQWxzbywgSSB3b25kZXIgYWJvdXQgdGhlIHBvdGVudGlhbCBmb3IgYnVmZmVyIG92ZXJmbG93cy4gTGV0J3Mgc2VlIGlmIHRoZXkncmUgY2hlY2tpbmcgaW5wdXQgbGVuZ3RocyBjYXJlZnVsbHkuIEFuZCBob3cgYWJvdXQgdGhlIGNhc2Ugd2hlcmUgdGhlIGBvbGRgIHN0cmluZyBpcyBlbXB0eT8gV2hhdCBkb2VzIHRoZSBjb2RlIGRvIGluIHRoYXQgc2NlbmFyaW8/IFRpbWUgdG8gcHV0IG15IGRlYnVnZ2luZyBoYXQgb24gYW5kIGRpc3NlY3QgdGhpcyB0aGluZy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mzc3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDQ6Mzg6NDYuMzQ5MDM1NDM2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJsaWIvc3RyaW5nX2hlbHBlcnMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA5ODAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA5ODA6XFx0ICpcXG4gOTgxOlxcdCAqIFJlcGxhY2VzIHRoZSBlYWNoIEBvbGQgY2hhcmFjdGVyIHdpdGggYSBAbmV3IG9uZSBpbiB0aGUgZ2l2ZW4gc3RyaW5nIEBzdHIuXFxuIDk4MjpcXHQgKlxcbiA5ODM6XFx0ICogUmV0dXJuOiBwb2ludGVyIHRvIHRoZSBzdHJpbmcgQHN0ciBpdHNlbGYuXFxuIDk4NDpcXHQgKi9cXG4gOTg1OlxcdGNoYXIgKnN0cnJlcGxhY2UoY2hhciAqc3RyLCBjaGFyIG9sZCwgY2hhciBuZXcpXFxuIDk4NjpcXHR7XFxuIDk4NzpcXHRcXHRjaGFyICpzID0gc3RyO1xcbiA5ODg6XFx0XFxuIDk4OTpcXHRcXHRmb3IgKDsgKnM7ICsrcylcXG4gOTkwOlxcdFxcdFxcdGlmICgqcyA9PSBvbGQpXFxuIDk5MTpcXHRcXHRcXHRcXHQqcyA9IG5ldztcXG4gOTkyOlxcdFxcdHJldHVybiBzdHI7XFxuIDk5MzpcXHR9XFxuIDk5NDpcXHRFWFBPUlRfU1lNQk9MKHN0cnJlcGxhY2UpO1xcbiA5OTU6XFx0XFxuIDk5NjpcXHQvKipcXG4gOTk3OlxcdCAqIG1lbWNweV9hbmRfcGFkIC0gQ29weSBvbmUgYnVmZmVyIHRvIGFub3RoZXIgd2l0aCBwYWRkaW5nXFxuIDk5ODpcXHQgKiBAZGVzdDogV2hlcmUgdG8gY29weSB0b1xcbiA5OTk6XFx0ICogQGRlc3RfbGVuOiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIHNpemVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDQ6Mzg6NDYuMzQ5MTkwNzg2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxOTI0Nzk5MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVmYWN0b3JpbmcgRXZhbHVhdGlvbjogYHN0cnJlcGxhY2VgIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgc3RycmVwbGFjZWAganVzdCByZXR1cm5zIHRoZSBzdHJpbmcgaXRzZWxmLiBTbywgdGhpcyBsaW5lIGBuaS1cdTAwM2V0YXJnZXQgPSBzdHJyZXBsYWNlKHN1Yl9uYW1lLCAnXFxcXCcsICcvJyk7YCBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSBhcyB0aGF0IGxvb3AgdXNpbmcgYHN0cmxlbmAgYW5kIHRoZW4gbW9kaWZ5aW5nIGBzdWJfbmFtZWAgaW4gcGxhY2UuIExldCBtZSB2aXN1YWxpemUgdGhhdCwgY29uZmlybWluZyBpdCdzIGp1c3QgYSByZWZhY3RvcmluZy5cblxuU28sIHRoZSBvcmlnaW5hbCBjb2RlIGhhZCBhIGxvb3AgdGhhdCB3ZW50IHRocm91Z2ggdGhlIHN0cmluZywgcmVwbGFjZWQgYmFja3NsYXNoZXMgd2l0aCBmb3J3YXJkIHNsYXNoZXMuIFRoZSByZWZhY3RvcmVkIHZlcnNpb24gdXNlcyBhIHN0YW5kYXJkIGxpYnJhcnkgZnVuY3Rpb24sIGBzdHJyZXBsYWNlYC5cblxuSXQgYXBwZWFycyB0aGF0IGBzdHJyZXBsYWNlYCwgYWNjb3JkaW5nIHRvIHRoZSBkb2N1bWVudGF0aW9uLCBtb2RpZmllcyB0aGUgc3RyaW5nIGluIHBsYWNlIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgb3JpZ2luYWwgc3RyaW5nLiBJdCdzIGVzc2VudGlhbGx5IHRoZSBzYW1lIGxvZ2ljLiBMZXQgbWUgdGhpbmssIGlzIHRoZXJlICphbnkqIGZ1bmN0aW9uYWwgY2hhbmdlPyBObywgaXQncyBqdXN0IHJlcGxhY2luZyBhIGxvb3Agd2l0aCBhIHN0YW5kYXJkIGxpYnJhcnkgZnVuY3Rpb24uIFNvLCBgbmktXHUwMDNldGFyZ2V0YCBlbmRzIHVwIHBvaW50aW5nIHRvIHRoZSBzYW1lIG1vZGlmaWVkIGBzdWJfbmFtZWAgaW4gYm90aCBjYXNlcy5cblxuV2FpdCwgYXJlIHRoZXJlIGhpZGRlbiBkaWZmZXJlbmNlcyB3aXRoIG51bGwgdGVybWluYXRpb24sIG91dC1vZi1ib3VuZHMgcmVhZHMsIG9yIHBvdGVudGlhbCB1bmRlZmluZWQgYmVoYXZpb3I/IExldCdzIGNvbnNpZGVyIGNvcm5lciBjYXNlcy4gSG1tLCBib3RoIHRoZSBvcmlnaW5hbCBjb2RlIGFuZCB0aGUgZnVuY3Rpb24gZXhwZWN0IGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZy4gU28gZnVuY3Rpb25hbGx5IGl0IHNlZW1zIGlkZW50aWNhbC5cblxuU2luY2UgaXQncyBhIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZSwgYSByZWZhY3RvcmluZywgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgZGlmZiB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIFllcCwgdGhlIGRpZmYgY29uZmlybXMgaXQncyBqdXN0IGEgc3RyYWlnaHRmb3J3YXJkIHJlcGxhY2VtZW50IG9mIHRoZSBtYW51YWwgbG9vcCB3aXRoIGBzdHJyZXBsYWNlYC4gRXhlY3V0aW9uIGZsb3cgcmVtYWlucyB0aGUgc2FtZS4gSSdtIGdvaW5nIHdpdGggYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5NDQsIk91dHB1dFRva2VucyI6NzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwNDozODo1Mi41NDE2NzM1NTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCByZXBsYWNlcyBhIG1hbnVhbCBzdHJpbmcgcmVwbGFjZW1lbnQgbG9vcCB3aXRoIGEgY2FsbCB0byB0aGUgc3RhbmRhcmQgYHN0cnJlcGxhY2VgIGZ1bmN0aW9uLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCByZXBsYWNlcyBhIG1hbnVhbCBzdHJpbmcgcmVwbGFjZW1lbnQgbG9vcCB3aXRoIGEgY2FsbCB0byB0aGUgc3RhbmRhcmQgYHN0cnJlcGxhY2VgIGZ1bmN0aW9uLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwNDozODo1Mi41NDE3MDk4NzlaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow5hnqk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-14 04:19:39 +0000 UTC FinishedAt: 2026-08-14 04:38:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA0OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaXMgYSBwdXJlIHJlZmFjdG9yaW5nIHRoYXQgcmVwbGFjZXMgYSBtYW51YWwgc3RyaW5nIHJlcGxhY2VtZW50IGxvb3Agd2l0aCBhIGNhbGwgdG8gdGhlIHN0YW5kYXJkIGBzdHJyZXBsYWNlYCBmdW5jdGlvbi4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwNDozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGFjNDJmNTg5NjhmNzI2MmU5YWI3NDdjMDg4MGFmZTIxNzRmM2U4MjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAwNDozODoxNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9udGZzL3JlcGFyc2UuYyBiL2ZzL250ZnMvcmVwYXJzZS5jXG5pbmRleCBmYTUyM2RjMzY5MWVhLi4xMjk4Y2ZjM2E3MDdmIDEwMDY0NFxuLS0tIGEvZnMvbnRmcy9yZXBhcnNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL250ZnMvcmVwYXJzZS5jXG5AQCAtODk0LDEzICYjNDM7ODk0LDcgQEAgaW50IG50ZnNfcmVwYXJzZV9zZXRfbmF0aXZlX3N5bWxpbmsoc3RydWN0IG50ZnNfaW5vZGUgKm5pLFxuIFxuIFx0ZXJyID0gbnRmc19zZXRfbnRmc19yZXBhcnNlX2RhdGEobmksIChjaGFyICopcmVwYXJzZSwgdG90YWxfcmVwYXJzZV9sZW4pO1xuIFx0aWYgKCFlcnIpIHtcbi1cdFx0aW50IGxlbiA9IHN0cmxlbihzdWJfbmFtZSk7XG4tXG4tXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlbjsgaSYjNDM7JiM0MzspIHtcbi1cdFx0XHRpZiAoc3ViX25hbWVbaV0gPT0gJiMzOTtcXFxcJiMzOTspXG4tXHRcdFx0XHRzdWJfbmFtZVtpXSA9ICYjMzk7LyYjMzk7O1xuLVx0XHR9XG4tXHRcdG5pLVx1MDAzZXRhcmdldCA9IHN1Yl9uYW1lO1xuJiM0MztcdFx0bmktXHUwMDNldGFyZ2V0ID0gc3RycmVwbGFjZShzdWJfbmFtZSwgJiMzOTtcXFxcJiMzOTssICYjMzk7LyYjMzk7KTtcbiBcdFx0c3ViX25hbWUgPSBOVUxMO1xuIFx0XHRpZiAocHJ0X3N1Yl9zaGFyZWQpXG4gXHRcdFx0cHJ0X25hbWUgPSBOVUxMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA0OjM4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCByZXBsYWNlcyBhIG1hbnVhbCBzdHJpbmcgcmVwbGFjZW1lbnQgbG9vcCB3aXRoIGEgY2FsbCB0byB0aGUgc3RhbmRhcmQgYHN0cnJlcGxhY2VgIGZ1bmN0aW9uLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYWM0MmY1ODk2OGY3MjYyZTlhYjc0N2MwODgwYWZlMjE3NGYzZTgyOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDE0IDA0OjM4OjE3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvbnRmcy9yZXBhcnNlLmMgYi9mcy9udGZzL3JlcGFyc2UuYwppbmRleCBmYTUyM2RjMzY5MWVhLi4xMjk4Y2ZjM2E3MDdmIDEwMDY0NAotLS0gYS9mcy9udGZzL3JlcGFyc2UuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9udGZzL3JlcGFyc2UuYwpAQCAtODk0LDEzICYjNDM7ODk0LDcgQEAgaW50IG50ZnNfcmVwYXJzZV9zZXRfbmF0aXZlX3N5bWxpbmsoc3RydWN0IG50ZnNfaW5vZGUgKm5pLAogCiAJZXJyID0gbnRmc19zZXRfbnRmc19yZXBhcnNlX2RhdGEobmksIChjaGFyICopcmVwYXJzZSwgdG90YWxfcmVwYXJzZV9sZW4pOwogCWlmICghZXJyKSB7Ci0JCWludCBsZW4gPSBzdHJsZW4oc3ViX25hbWUpOwotCi0JCWZvciAoaSA9IDA7IGkgJmx0OyBsZW47IGkmIzQzOyYjNDM7KSB7Ci0JCQlpZiAoc3ViX25hbWVbaV0gPT0gJiMzOTtcXCYjMzk7KQotCQkJCXN1Yl9uYW1lW2ldID0gJiMzOTsvJiMzOTs7Ci0JCX0KLQkJbmktJmd0O3RhcmdldCA9IHN1Yl9uYW1lOwomIzQzOwkJbmktJmd0O3RhcmdldCA9IHN0cnJlcGxhY2Uoc3ViX25hbWUsICYjMzk7XFwmIzM5OywgJiMzOTsvJiMzOTspOwogCQlzdWJfbmFtZSA9IE5VTEw7CiAJCWlmIChwcnRfc3ViX3NoYXJlZCkKIAkJCXBydF9uYW1lID0gTlVMTDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2NQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDI1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBGaWxlIFN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGZzL250ZnMvcmVwYXJzZS5jYC4gSXQgc2VlbXMgdGhleSYjMzk7dmUgc3dhcHBlZCBvdXQgYSBtYW51YWwgbG9vcCBmb3IgYHN0cnJlcGxhY2VgIHRvIGhhbmRsZSBiYWNrc2xhc2gtdG8tZm9yd2FyZC1zbGFzaCBjb252ZXJzaW9ucyBpbiBgc3ViX25hbWVgLiBPbiB0aGUgc3VyZmFjZSwgaXQmIzM5O3MgYSByZWZhY3RvcmluZywgd2hpY2ggaXMgZ29vZC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBpdCYjMzk7cyBjb3JyZWN0LiBBaCwgYHN0cnJlcGxhY2VgIHJldHVybnMgdGhlIHBvaW50ZXIgdG8gdGhlIG1vZGlmaWVkIHN0cmluZywgd2hpY2ggbWFrZXMgdGhpcyBzdWJzdGl0dXRpb24gZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gdGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uLiBXYWl0IGEgc2Vjb25kLCBgc3RycmVwbGFjZWAgaXMgYSBzdGFuZGFyZCBrZXJuZWwgZnVuY3Rpb24uIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LgoKTm93LCB0aGUgcmVhbCBxdWVzdGlvbjogaXMgdGhpcyBzb21ldGhpbmcgd2Ugc2hvdWxkIGNvbnNpZGVyIGZ1enppbmc/IFRoZSBmdW5jdGlvbiBiZWluZyBwYXRjaGVkIGlzIGBudGZzX3JlcGFyc2Vfc2V0X25hdGl2ZV9zeW1saW5rYC4gVGhhdCYjMzk7cyB0aGUga2V5LiBMZXQgbWUgY2hlY2sgdGhlIGNvZGUgaW4gYGZzL250ZnMvcmVwYXJzZS5jYC4gSG1tLCB3YWl0IGEgbWludXRlLCBpcyB0aGlzICphY3R1YWxseSogaW4gYGZzL250ZnMvYCBvciBgZnMvbnRmczMvYD8gVGhlIGRpZmYgc2F5cyBgZnMvbnRmcy9gLCBidXQgSSBkb24mIzM5O3QgcmVjYWxsIGEgYHJlcGFyc2UuY2AgaW4gdGhhdCBkaXJlY3RvcnkgaW4gdGhlIG1haW5saW5lIGtlcm5lbC4gQ291bGQgaXQgYmUgYGZzL250ZnMzL2AsIG9yIGFtIEkgbWlzc2luZyBzb21ldGhpbmc/IFRpbWUgdG8gY2hlY2sgdGhlIHNvdXJjZSB0cmVlIGFnYWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA0OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250ZnNfcmVwYXJzZV9zZXRfbmF0aXZlX3N5bWxpbmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9uYW1laS5jPTM5ND1zdGF0aWMgc3RydWN0IG50ZnNfaW5vZGUgKl9fbnRmc19jcmVhdGUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLFxuLS1cbmZzL250ZnMvbmFtZWkuYy02MTAtXHRcdFx0aWYgKE5Wb2xTeW1saW5rTmF0aXZlKHZvbCkpXG5mcy9udGZzL25hbWVpLmM6NjExOlx0XHRcdFx0ZXJyID0gbnRmc19yZXBhcnNlX3NldF9uYXRpdmVfc3ltbGluayhuaSwgdGFyZ2V0LCB0YXJnZXRfbGVuKTtcbmZzL250ZnMvbmFtZWkuYy02MTItXHRcdFx0ZWxzZVxuLS1cbmZzL250ZnMvcmVwYXJzZS5jPTc2MT1pbnQgbnRmc19yZXBhcnNlX3NldF93c2xfc3ltbGluayhzdHJ1Y3QgbnRmc19pbm9kZSAqbmksXG4tLVxuZnMvbnRmcy9yZXBhcnNlLmMtODAwLVxuZnMvbnRmcy9yZXBhcnNlLmM6ODAxOmludCBudGZzX3JlcGFyc2Vfc2V0X25hdGl2ZV9zeW1saW5rKHN0cnVjdCBudGZzX2lub2RlICpuaSxcbmZzL250ZnMvcmVwYXJzZS5jLTgwMi1cdFx0XHRcdCAgICBjb25zdCBjaGFyICp0YXJnZXQsIGludCB0YXJnZXRfbGVuKVxuLS1cbmZzL250ZnMvcmVwYXJzZS5oPTE2PWludCBudGZzX3JlcGFyc2Vfc2V0X3dzbF9zeW1saW5rKHN0cnVjdCBudGZzX2lub2RlICpuaSxcbmZzL250ZnMvcmVwYXJzZS5oLTE3LVx0XHRcdFx0IGNvbnN0IGNoYXIgKnRhcmdldCwgaW50IHRhcmdldF9sZW4pO1xuZnMvbnRmcy9yZXBhcnNlLmg6MTg6aW50IG50ZnNfcmVwYXJzZV9zZXRfbmF0aXZlX3N5bWxpbmsoc3RydWN0IG50ZnNfaW5vZGUgKm5pLFxuZnMvbnRmcy9yZXBhcnNlLmgtMTktXHRcdFx0XHQgICAgY29uc3QgY2hhciAqc3ltbmFtZSwgaW50IHN5bWxlbik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAxMAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsbHkgT2xkZXIgTlRGUyBJbXBsZW1lbnRhdGlvbioqCgpSaWdodCwgdGhpcyBsb29rcyBsaWtlIGBmcy9udGZzL3JlcGFyc2UuY2AuIEhtbSwgYSBiaXQgb2YgYSB3cmlua2xlIGhlcmUg4oCTIEkgd2FzIGV4cGVjdGluZyB0byBzZWUgYGZzL250ZnMzYCBpbiBhIG1vcmUgcmVjZW50IGtlcm5lbC4gVGhlIG9yaWdpbmFsIE5URlMgaW1wbGVtZW50YXRpb24gd2FzIGRlcHJlY2F0ZWQgYSB3aGlsZSBhZ28sIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZ29pbmcgb24uIElzIHRoaXMgYW4gb2xkZXIga2VybmVsIHZlcnNpb24sIHBlcmhhcHM/IE9yIG1heWJlIGEgc3BlY2lhbGl6ZWQgZm9yayB3aGVyZSB0aGUgb3JpZ2luYWwgYGZzL250ZnNgIGRpcmVjdG9yeSB3YXMgcmV0YWluZWQgYW5kIHBvdGVudGlhbGx5IHVwZGF0ZWQ/IExldCYjMzk7cyBjb25maXJtLCBJIHNlZSBgZnMvbnRmcy9gIHByZXNlbnQuIEkgc2hvdWxkIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIGBmcy9udGZzYCwgdGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZmlyc3QgY2x1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTlRGU19GUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL250ZnMvS2NvbmZpZzoyOmNvbmZpZyBOVEZTX0ZTXG5mcy9udGZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O05URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL250ZnMvS2NvbmZpZz0xMz1jb25maWcgTlRGU19ERUJVR1xuLS1cbmZzL250ZnMvS2NvbmZpZy0zNC1cbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcbmZzL250ZnMvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7TlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MzMKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEZ1enogVGFyZ2V0IGluIE5URlMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4gVGhpcyBsb29rcyBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGBOVEZTX0ZTYCBjb25maWd1cmF0aW9uLiBBbmQgdGhlIHJlbGV2YW50IGZ1bmN0aW9uLCBhaCwgaGVyZSBpdCBpczogYG50ZnNfcmVwYXJzZV9zZXRfbmF0aXZlX3N5bWxpbmtgLiBEZWZpbml0ZWx5IGEgZmlsZXN5c3RlbSBvcGVyYXRpb24sIHNwZWNpZmljYWxseSBzeW1saW5rIGNyZWF0aW9uLiBNeSBndXQgc2F5cyAmIzM0O2Z1enogaXQsJiMzNDsgYnV0IGxldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2suCgpPa2F5LCB0aGUgY29kZSBjaGFuZ2UgaXMganVzdCBzd2FwcGluZyBvdXQgYSBtYW51YWwgbG9vcCBmb3IgYHN0cnJlcGxhY2VgLiBJcyB0aGlzIGEgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2U/IExldCYjMzk7cyBzZWUuLi4gdGhlIGBzdHJyZXBsYWNlYCBpbXBsZW1lbnRhdGlvbi4uLiBhaCwgdGhhdCYjMzk7cyBpdCEgVGhpcyBgc3RycmVwbGFjZWAgZnVuY3Rpb24gcmV0dXJucyBhICpwb2ludGVyIHRvIHRoZSBlbmQqIG9mIHRoZSBzdHJpbmcsIG5vdCB0aGUgYmVnaW5uaW5nIGxpa2UgeW91JiMzOTtkIHVzdWFsbHkgZXhwZWN0LiBJIG5lZWQgdG8gYmUgc3VyZSBhYm91dCB0aGlzLgoKVGltZSB0byBjb25zdWx0IHRoZSBzb3VyY2UuIExldCBtZSBjaGVjayB0aGUgYGxpYi9zdHJpbmcuY2AgZmlsZSBmb3IgdGhlIGBzdHJyZXBsYWNlYCBpbXBsZW1lbnRhdGlvbiBhbmQgY29uZmlybSB0aGlzLiBUaGlzIHN1YnRsZSBkaWZmZXJlbmNlIGluIHBvaW50ZXIgcmV0dXJuIGNvdWxkIGJlIGEgc291cmNlIG9mIGFsbCBzb3J0cyBvZiBvZmYtYnktb25lIGVycm9ycyBvciBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgaWYgbm90IGhhbmRsZWQgY2FyZWZ1bGx5LiBUaGlzIGlzIHdvcnRoIGEgZGVlcGVyIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDQ6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hhciBcXCpzdHJyZXBsYWNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvc3RyaW5nLmg9MjgxPXZvaWQgKm1lbWNocl9pbnYoY29uc3Qgdm9pZCAqcywgaW50IGMsIHNpemVfdCBuKTtcbmluY2x1ZGUvbGludXgvc3RyaW5nLmg6MjgyOmNoYXIgKnN0cnJlcGxhY2UoY2hhciAqc3RyLCBjaGFyIG9sZCwgY2hhciBuZXcpO1xuaW5jbHVkZS9saW51eC9zdHJpbmcuaC0yODMtXG4tLVxubGliL3N0cmluZ19oZWxwZXJzLmM9OTczPUVYUE9SVF9TWU1CT0woX19zeXNmc19tYXRjaF9zdHJpbmcpO1xuLS1cbmxpYi9zdHJpbmdfaGVscGVycy5jLTk4NC0gKi9cbmxpYi9zdHJpbmdfaGVscGVycy5jOjk4NTpjaGFyICpzdHJyZXBsYWNlKGNoYXIgKnN0ciwgY2hhciBvbGQsIGNoYXIgbmV3KVxubGliL3N0cmluZ19oZWxwZXJzLmMtOTg2LXtcbi0tXG50b29scy9pbmNsdWRlL2xpbnV4L3N0cmluZy5oPTMzPWNoYXIgKnN0cl9lcnJvcl9yKGludCBlcnJudW0sIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zmxlbik7XG50b29scy9pbmNsdWRlL2xpbnV4L3N0cmluZy5oLTM0LVxudG9vbHMvaW5jbHVkZS9saW51eC9zdHJpbmcuaDozNTpjaGFyICpzdHJyZXBsYWNlKGNoYXIgKnMsIGNoYXIgb2xkLCBjaGFyIG5ldyk7XG50b29scy9pbmNsdWRlL2xpbnV4L3N0cmluZy5oLTM2LVxuLS1cbnRvb2xzL2xpYi9zdHJpbmcuYz0xNTk9dm9pZCByZW1vdmVfc3BhY2VzKGNoYXIgKnMpXG4tLVxudG9vbHMvbGliL3N0cmluZy5jLTE3Ni0gKi9cbnRvb2xzL2xpYi9zdHJpbmcuYzoxNzc6Y2hhciAqc3RycmVwbGFjZShjaGFyICpzLCBjaGFyIG9sZCwgY2hhciBuZXcpXG50b29scy9saWIvc3RyaW5nLmMtMTc4LXtcbi0tXG50b29scy9wZXJmL3V0aWwvc3RyaW5nLmM9NDA1PXVuc2lnbmVkIGludCBoZXgoY2hhciBjKVxuLS1cbnRvb2xzL3BlcmYvdXRpbC9zdHJpbmcuYy00MjAtICovXG50b29scy9wZXJmL3V0aWwvc3RyaW5nLmM6NDIxOmNoYXIgKnN0cnJlcGxhY2VfY2hhcnMoY2hhciBuZWVkbGUsIGNvbnN0IGNoYXIgKmhheXN0YWNrLCBjb25zdCBjaGFyICpyZXBsYWNlKVxudG9vbHMvcGVyZi91dGlsL3N0cmluZy5jLTQyMi17XG4tLVxudG9vbHMvcGVyZi91dGlsL3N0cmluZzIuaD00Mz11bnNpZ25lZCBpbnQgaGV4KGNoYXIgYyk7XG50b29scy9wZXJmL3V0aWwvc3RyaW5nMi5oOjQ0OmNoYXIgKnN0cnJlcGxhY2VfY2hhcnMoY2hhciBuZWVkbGUsIGNvbnN0IGNoYXIgKmhheXN0YWNrLCBjb25zdCBjaGFyICpyZXBsYWNlKTtcbnRvb2xzL3BlcmYvdXRpbC9zdHJpbmcyLmgtNDUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM3NwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gYHN0cnJlcGxhY2VgIEltcGxlbWVudGF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gY3JhY2sgb3BlbiBgbGliL3N0cmluZ19oZWxwZXJzLmNgIGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgYHN0cnJlcGxhY2VgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgdGhpcyB0aGluZyYjMzk7cyBpbXBsZW1lbnRlZC4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gZWZmaWNpZW5jeSBhbmQgcG90ZW50aWFsIGVkZ2UgY2FzZXMuIEkmIzM5O20gYXNzdW1pbmcgdGhlcmUmIzM5O3Mgc29tZSBnb29kIGNoYXJhY3Rlci1ieS1jaGFyYWN0ZXIgaXRlcmF0aW9uIGdvaW5nIG9uIGluIHRoZXJlIHNvbWV3aGVyZS4gSSYjMzk7bSBjdXJpb3VzIGlmIHRoZXkmIzM5O3JlIHVzaW5nIGBzdHJzdHJgIG9yIHNpbWlsYXIgc3RyaW5nIHNlYXJjaCBmdW5jdGlvbnMgaW50ZXJuYWxseSwgb3IgaWYgdGhleSByb2xsZWQgdGhlaXIgb3duLiBBbmQgaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIG1lbW9yeSBhbGxvY2F0aW9u4oCmYXJlIHRoZXkgcHJlLWNhbGN1bGF0aW5nIHRoZSByZXF1aXJlZCBidWZmZXIgc2l6ZSwgb3IgYXJlIHRoZXkgcmVhbGxvY2F0aW5nIGR5bmFtaWNhbGx5PyBJIGhvcGUgdGhleSYjMzk7cmUgbm90IGRvaW5nIGEgbmFpdmUgYHN0cmxlbmAgZXZlcnkgc2luZ2xlIHRpbWUg4oCTIHRoYXQgd291bGQgYmUgYSBwZXJmb3JtYW5jZSBraWxsZXIsIGVzcGVjaWFsbHkgb24gbGFyZ2VyIHN0cmluZ3MuIEFsc28sIEkgd29uZGVyIGFib3V0IHRoZSBwb3RlbnRpYWwgZm9yIGJ1ZmZlciBvdmVyZmxvd3MuIExldCYjMzk7cyBzZWUgaWYgdGhleSYjMzk7cmUgY2hlY2tpbmcgaW5wdXQgbGVuZ3RocyBjYXJlZnVsbHkuIEFuZCBob3cgYWJvdXQgdGhlIGNhc2Ugd2hlcmUgdGhlIGBvbGRgIHN0cmluZyBpcyBlbXB0eT8gV2hhdCBkb2VzIHRoZSBjb2RlIGRvIGluIHRoYXQgc2NlbmFyaW8/IFRpbWUgdG8gcHV0IG15IGRlYnVnZ2luZyBoYXQgb24gYW5kIGRpc3NlY3QgdGhpcyB0aGluZy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2xpYi9zdHJpbmdfaGVscGVycy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5ODA6XHQgKlxuIDk4MTpcdCAqIFJlcGxhY2VzIHRoZSBlYWNoIEBvbGQgY2hhcmFjdGVyIHdpdGggYSBAbmV3IG9uZSBpbiB0aGUgZ2l2ZW4gc3RyaW5nIEBzdHIuXG4gOTgyOlx0ICpcbiA5ODM6XHQgKiBSZXR1cm46IHBvaW50ZXIgdG8gdGhlIHN0cmluZyBAc3RyIGl0c2VsZi5cbiA5ODQ6XHQgKi9cbiA5ODU6XHRjaGFyICpzdHJyZXBsYWNlKGNoYXIgKnN0ciwgY2hhciBvbGQsIGNoYXIgbmV3KVxuIDk4NjpcdHtcbiA5ODc6XHRcdGNoYXIgKnMgPSBzdHI7XG4gOTg4Olx0XG4gOTg5Olx0XHRmb3IgKDsgKnM7ICYjNDM7JiM0MztzKVxuIDk5MDpcdFx0XHRpZiAoKnMgPT0gb2xkKVxuIDk5MTpcdFx0XHRcdCpzID0gbmV3O1xuIDk5MjpcdFx0cmV0dXJuIHN0cjtcbiA5OTM6XHR9XG4gOTk0Olx0RVhQT1JUX1NZTUJPTChzdHJyZXBsYWNlKTtcbiA5OTU6XHRcbiA5OTY6XHQvKipcbiA5OTc6XHQgKiBtZW1jcHlfYW5kX3BhZCAtIENvcHkgb25lIGJ1ZmZlciB0byBhbm90aGVyIHdpdGggcGFkZGluZ1xuIDk5ODpcdCAqIEBkZXN0OiBXaGVyZSB0byBjb3B5IHRvXG4gOTk5Olx0ICogQGRlc3RfbGVuOiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIHNpemVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk0NAoJCQkJCQkJb3V0cHV0OiA3MQoJCQkJCQkJdGhvdWdodHM6IDQ0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZhY3RvcmluZyBFdmFsdWF0aW9uOiBgc3RycmVwbGFjZWAgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgc3RycmVwbGFjZWAganVzdCByZXR1cm5zIHRoZSBzdHJpbmcgaXRzZWxmLiBTbywgdGhpcyBsaW5lIGBuaS0mZ3Q7dGFyZ2V0ID0gc3RycmVwbGFjZShzdWJfbmFtZSwgJiMzOTtcXCYjMzk7LCAmIzM5Oy8mIzM5Oyk7YCBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSBhcyB0aGF0IGxvb3AgdXNpbmcgYHN0cmxlbmAgYW5kIHRoZW4gbW9kaWZ5aW5nIGBzdWJfbmFtZWAgaW4gcGxhY2UuIExldCBtZSB2aXN1YWxpemUgdGhhdCwgY29uZmlybWluZyBpdCYjMzk7cyBqdXN0IGEgcmVmYWN0b3JpbmcuCgpTbywgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIGEgbG9vcCB0aGF0IHdlbnQgdGhyb3VnaCB0aGUgc3RyaW5nLCByZXBsYWNlZCBiYWNrc2xhc2hlcyB3aXRoIGZvcndhcmQgc2xhc2hlcy4gVGhlIHJlZmFjdG9yZWQgdmVyc2lvbiB1c2VzIGEgc3RhbmRhcmQgbGlicmFyeSBmdW5jdGlvbiwgYHN0cnJlcGxhY2VgLgoKSXQgYXBwZWFycyB0aGF0IGBzdHJyZXBsYWNlYCwgYWNjb3JkaW5nIHRvIHRoZSBkb2N1bWVudGF0aW9uLCBtb2RpZmllcyB0aGUgc3RyaW5nIGluIHBsYWNlIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgb3JpZ2luYWwgc3RyaW5nLiBJdCYjMzk7cyBlc3NlbnRpYWxseSB0aGUgc2FtZSBsb2dpYy4gTGV0IG1lIHRoaW5rLCBpcyB0aGVyZSAqYW55KiBmdW5jdGlvbmFsIGNoYW5nZT8gTm8sIGl0JiMzOTtzIGp1c3QgcmVwbGFjaW5nIGEgbG9vcCB3aXRoIGEgc3RhbmRhcmQgbGlicmFyeSBmdW5jdGlvbi4gU28sIGBuaS0mZ3Q7dGFyZ2V0YCBlbmRzIHVwIHBvaW50aW5nIHRvIHRoZSBzYW1lIG1vZGlmaWVkIGBzdWJfbmFtZWAgaW4gYm90aCBjYXNlcy4KCldhaXQsIGFyZSB0aGVyZSBoaWRkZW4gZGlmZmVyZW5jZXMgd2l0aCBudWxsIHRlcm1pbmF0aW9uLCBvdXQtb2YtYm91bmRzIHJlYWRzLCBvciBwb3RlbnRpYWwgdW5kZWZpbmVkIGJlaGF2aW9yPyBMZXQmIzM5O3MgY29uc2lkZXIgY29ybmVyIGNhc2VzLiBIbW0sIGJvdGggdGhlIG9yaWdpbmFsIGNvZGUgYW5kIHRoZSBmdW5jdGlvbiBleHBlY3QgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLiBTbyBmdW5jdGlvbmFsbHkgaXQgc2VlbXMgaWRlbnRpY2FsLgoKU2luY2UgaXQmIzM5O3MgYSBwdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2UsIGEgcmVmYWN0b3JpbmcsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBkaWZmIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gWWVwLCB0aGUgZGlmZiBjb25maXJtcyBpdCYjMzk7cyBqdXN0IGEgc3RyYWlnaHRmb3J3YXJkIHJlcGxhY2VtZW50IG9mIHRoZSBtYW51YWwgbG9vcCB3aXRoIGBzdHJyZXBsYWNlYC4gRXhlY3V0aW9uIGZsb3cgcmVtYWlucyB0aGUgc2FtZS4gSSYjMzk7bSBnb2luZyB3aXRoIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IHJlcGxhY2VzIGEgbWFudWFsIHN0cmluZyByZXBsYWNlbWVudCBsb29wIHdpdGggYSBjYWxsIHRvIHRoZSBzdGFuZGFyZCBgc3RycmVwbGFjZWAgZnVuY3Rpb24uIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IHJlcGxhY2VzIGEgbWFudWFsIHN0cmluZyByZXBsYWNlbWVudCBsb29wIHdpdGggYSBjYWxsIHRvIHRoZSBzdGFuZGFyZCBgc3RycmVwbGFjZWAgZnVuY3Rpb24uIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA0OjM4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwNDozODoxOC4zMTk2MTI1NjFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDIyMjExODg1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IHJlcGxhY2VzIGEgbWFudWFsIHN0cmluZyByZXBsYWNlbWVudCBsb29wIHdpdGggYSBjYWxsIHRvIHRoZSBzdGFuZGFyZCBgc3RycmVwbGFjZWAgZnVuY3Rpb24uIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgbG9naWMgb2YgdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA0OjM4OjE4LjMxOTYyMjQxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjA0MTM4MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhYzQyZjU4OTY4ZjcyNjJlOWFiNzQ3YzA4ODBhZmUyMTc0ZjNlODI5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDE0IDA0OjM4OjE3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL250ZnMvcmVwYXJzZS5jIGIvZnMvbnRmcy9yZXBhcnNlLmNcXG5pbmRleCBmYTUyM2RjMzY5MWVhLi4xMjk4Y2ZjM2E3MDdmIDEwMDY0NFxcbi0tLSBhL2ZzL250ZnMvcmVwYXJzZS5jXFxuKysrIGIvZnMvbnRmcy9yZXBhcnNlLmNcXG5AQCAtODk0LDEzICs4OTQsNyBAQCBpbnQgbnRmc19yZXBhcnNlX3NldF9uYXRpdmVfc3ltbGluayhzdHJ1Y3QgbnRmc19pbm9kZSAqbmksXFxuIFxcbiBcXHRlcnIgPSBudGZzX3NldF9udGZzX3JlcGFyc2VfZGF0YShuaSwgKGNoYXIgKilyZXBhcnNlLCB0b3RhbF9yZXBhcnNlX2xlbik7XFxuIFxcdGlmICghZXJyKSB7XFxuLVxcdFxcdGludCBsZW4gPSBzdHJsZW4oc3ViX25hbWUpO1xcbi1cXG4tXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGxlbjsgaSsrKSB7XFxuLVxcdFxcdFxcdGlmIChzdWJfbmFtZVtpXSA9PSAnXFxcXFxcXFwnKVxcbi1cXHRcXHRcXHRcXHRzdWJfbmFtZVtpXSA9ICcvJztcXG4tXFx0XFx0fVxcbi1cXHRcXHRuaS1cXHUwMDNldGFyZ2V0ID0gc3ViX25hbWU7XFxuK1xcdFxcdG5pLVxcdTAwM2V0YXJnZXQgPSBzdHJyZXBsYWNlKHN1Yl9uYW1lLCAnXFxcXFxcXFwnLCAnLycpO1xcbiBcXHRcXHRzdWJfbmFtZSA9IE5VTEw7XFxuIFxcdFxcdGlmIChwcnRfc3ViX3NoYXJlZClcXG4gXFx0XFx0XFx0cHJ0X25hbWUgPSBOVUxMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwNDozODoxOC44ODA2NjkxOTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozMzY2MTAzODE5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaXMgYSBwdXJlIHJlZmFjdG9yaW5nIHRoYXQgcmVwbGFjZXMgYSBtYW51YWwgc3RyaW5nIHJlcGxhY2VtZW50IGxvb3Agd2l0aCBhIGNhbGwgdG8gdGhlIHN0YW5kYXJkIGBzdHJyZXBsYWNlYCBmdW5jdGlvbi4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBsb2dpYyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYWM0MmY1ODk2OGY3MjYyZTlhYjc0N2MwODgwYWZlMjE3NGYzZTgyOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDA0OjM4OjE3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9yZXBhcnNlLmMgYi9mcy9udGZzL3JlcGFyc2UuY1xuaW5kZXggZmE1MjNkYzM2OTFlYS4uMTI5OGNmYzNhNzA3ZiAxMDA2NDRcbi0tLSBhL2ZzL250ZnMvcmVwYXJzZS5jXG4rKysgYi9mcy9udGZzL3JlcGFyc2UuY1xuQEAgLTg5NCwxMyArODk0LDcgQEAgaW50IG50ZnNfcmVwYXJzZV9zZXRfbmF0aXZlX3N5bWxpbmsoc3RydWN0IG50ZnNfaW5vZGUgKm5pLFxuIFxuIFx0ZXJyID0gbnRmc19zZXRfbnRmc19yZXBhcnNlX2RhdGEobmksIChjaGFyICopcmVwYXJzZSwgdG90YWxfcmVwYXJzZV9sZW4pO1xuIFx0aWYgKCFlcnIpIHtcbi1cdFx0aW50IGxlbiA9IHN0cmxlbihzdWJfbmFtZSk7XG4tXG4tXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlbjsgaSsrKSB7XG4tXHRcdFx0aWYgKHN1Yl9uYW1lW2ldID09ICdcXFxcJylcbi1cdFx0XHRcdHN1Yl9uYW1lW2ldID0gJy8nO1xuLVx0XHR9XG4tXHRcdG5pLVx1MDAzZXRhcmdldCA9IHN1Yl9uYW1lO1xuK1x0XHRuaS1cdTAwM2V0YXJnZXQgPSBzdHJyZXBsYWNlKHN1Yl9uYW1lLCAnXFxcXCcsICcvJyk7XG4gXHRcdHN1Yl9uYW1lID0gTlVMTDtcbiBcdFx0aWYgKHBydF9zdWJfc2hhcmVkKVxuIFx0XHRcdHBydF9uYW1lID0gTlVMTDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA0OjM4OjE4Ljg4MDY3MDQ0MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MzY0NjQ1NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRmlsZSBTeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZnMvbnRmcy9yZXBhcnNlLmNgLiBJdCBzZWVtcyB0aGV5J3ZlIHN3YXBwZWQgb3V0IGEgbWFudWFsIGxvb3AgZm9yIGBzdHJyZXBsYWNlYCB0byBoYW5kbGUgYmFja3NsYXNoLXRvLWZvcndhcmQtc2xhc2ggY29udmVyc2lvbnMgaW4gYHN1Yl9uYW1lYC4gT24gdGhlIHN1cmZhY2UsIGl0J3MgYSByZWZhY3RvcmluZywgd2hpY2ggaXMgZ29vZC4gTGV0J3MgbWFrZSBzdXJlIGl0J3MgY29ycmVjdC4gQWgsIGBzdHJyZXBsYWNlYCByZXR1cm5zIHRoZSBwb2ludGVyIHRvIHRoZSBtb2RpZmllZCBzdHJpbmcsIHdoaWNoIG1ha2VzIHRoaXMgc3Vic3RpdHV0aW9uIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIHRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbi4gV2FpdCBhIHNlY29uZCwgYHN0cnJlcGxhY2VgIGlzIGEgc3RhbmRhcmQga2VybmVsIGZ1bmN0aW9uLiBUaGF0J3MgZ29vZCB0byBrbm93LlxuXG5Ob3csIHRoZSByZWFsIHF1ZXN0aW9uOiBpcyB0aGlzIHNvbWV0aGluZyB3ZSBzaG91bGQgY29uc2lkZXIgZnV6emluZz8gVGhlIGZ1bmN0aW9uIGJlaW5nIHBhdGNoZWQgaXMgYG50ZnNfcmVwYXJzZV9zZXRfbmF0aXZlX3N5bWxpbmtgLiBUaGF0J3MgdGhlIGtleS4gTGV0IG1lIGNoZWNrIHRoZSBjb2RlIGluIGBmcy9udGZzL3JlcGFyc2UuY2AuIEhtbSwgd2FpdCBhIG1pbnV0ZSwgaXMgdGhpcyAqYWN0dWFsbHkqIGluIGBmcy9udGZzL2Agb3IgYGZzL250ZnMzL2A/IFRoZSBkaWZmIHNheXMgYGZzL250ZnMvYCwgYnV0IEkgZG9uJ3QgcmVjYWxsIGEgYHJlcGFyc2UuY2AgaW4gdGhhdCBkaXJlY3RvcnkgaW4gdGhlIG1haW5saW5lIGtlcm5lbC4gQ291bGQgaXQgYmUgYGZzL250ZnMzL2AsIG9yIGFtIEkgbWlzc2luZyBzb21ldGhpbmc/IFRpbWUgdG8gY2hlY2sgdGhlIHNvdXJjZSB0cmVlIGFnYWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDY1LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDQ6Mzg6MjMuODE3MTM4MTM1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1OTA0NzkzOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnRmc19yZXBhcnNlX3NldF9uYXRpdmVfc3ltbGlua1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL25hbWVpLmM9Mzk0PXN0YXRpYyBzdHJ1Y3QgbnRmc19pbm9kZSAqX19udGZzX2NyZWF0ZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpkaXIsXFxuLS1cXG5mcy9udGZzL25hbWVpLmMtNjEwLVxcdFxcdFxcdGlmIChOVm9sU3ltbGlua05hdGl2ZSh2b2wpKVxcbmZzL250ZnMvbmFtZWkuYzo2MTE6XFx0XFx0XFx0XFx0ZXJyID0gbnRmc19yZXBhcnNlX3NldF9uYXRpdmVfc3ltbGluayhuaSwgdGFyZ2V0LCB0YXJnZXRfbGVuKTtcXG5mcy9udGZzL25hbWVpLmMtNjEyLVxcdFxcdFxcdGVsc2VcXG4tLVxcbmZzL250ZnMvcmVwYXJzZS5jPTc2MT1pbnQgbnRmc19yZXBhcnNlX3NldF93c2xfc3ltbGluayhzdHJ1Y3QgbnRmc19pbm9kZSAqbmksXFxuLS1cXG5mcy9udGZzL3JlcGFyc2UuYy04MDAtXFxuZnMvbnRmcy9yZXBhcnNlLmM6ODAxOmludCBudGZzX3JlcGFyc2Vfc2V0X25hdGl2ZV9zeW1saW5rKHN0cnVjdCBudGZzX2lub2RlICpuaSxcXG5mcy9udGZzL3JlcGFyc2UuYy04MDItXFx0XFx0XFx0XFx0ICAgIGNvbnN0IGNoYXIgKnRhcmdldCwgaW50IHRhcmdldF9sZW4pXFxuLS1cXG5mcy9udGZzL3JlcGFyc2UuaD0xNj1pbnQgbnRmc19yZXBhcnNlX3NldF93c2xfc3ltbGluayhzdHJ1Y3QgbnRmc19pbm9kZSAqbmksXFxuZnMvbnRmcy9yZXBhcnNlLmgtMTctXFx0XFx0XFx0XFx0IGNvbnN0IGNoYXIgKnRhcmdldCwgaW50IHRhcmdldF9sZW4pO1xcbmZzL250ZnMvcmVwYXJzZS5oOjE4OmludCBudGZzX3JlcGFyc2Vfc2V0X25hdGl2ZV9zeW1saW5rKHN0cnVjdCBudGZzX2lub2RlICpuaSxcXG5mcy9udGZzL3JlcGFyc2UuaC0xOS1cXHRcXHRcXHRcXHQgICAgY29uc3QgY2hhciAqc3ltbmFtZSwgaW50IHN5bWxlbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA0OjM4OjI2LjQwNzYyNjI3NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MTg4ODI5ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWxseSBPbGRlciBOVEZTIEltcGxlbWVudGF0aW9uKipcblxuUmlnaHQsIHRoaXMgbG9va3MgbGlrZSBgZnMvbnRmcy9yZXBhcnNlLmNgLiBIbW0sIGEgYml0IG9mIGEgd3JpbmtsZSBoZXJlIOKAkyBJIHdhcyBleHBlY3RpbmcgdG8gc2VlIGBmcy9udGZzM2AgaW4gYSBtb3JlIHJlY2VudCBrZXJuZWwuIFRoZSBvcmlnaW5hbCBOVEZTIGltcGxlbWVudGF0aW9uIHdhcyBkZXByZWNhdGVkIGEgd2hpbGUgYWdvLCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24uIElzIHRoaXMgYW4gb2xkZXIga2VybmVsIHZlcnNpb24sIHBlcmhhcHM/IE9yIG1heWJlIGEgc3BlY2lhbGl6ZWQgZm9yayB3aGVyZSB0aGUgb3JpZ2luYWwgYGZzL250ZnNgIGRpcmVjdG9yeSB3YXMgcmV0YWluZWQgYW5kIHBvdGVudGlhbGx5IHVwZGF0ZWQ/IExldCdzIGNvbmZpcm0sIEkgc2VlIGBmcy9udGZzL2AgcHJlc2VudC4gSSBzaG91bGQgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gYGZzL250ZnNgLCB0aGF0IHNob3VsZCBnaXZlIG1lIHRoZSBmaXJzdCBjbHVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDEwLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDQ6Mzg6MzAuMjI2NTEyMzU0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0OTMwMzY1OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5URlNfRlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvbnRmcy9LY29uZmlnOjI6Y29uZmlnIE5URlNfRlNcXG5mcy9udGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvbnRmcy9LY29uZmlnPTEzPWNvbmZpZyBOVEZTX0RFQlVHXFxuLS1cXG5mcy9udGZzL0tjb25maWctMzQtXFxuZnMvbnRmcy9LY29uZmlnOjM1OmNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxcbmZzL250ZnMvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwNDozODozMi43MTk1NTU1OTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjMzMjA0MDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBGdXp6IFRhcmdldCBpbiBOVEZTKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBUaGlzIGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIHRoZSBgTlRGU19GU2AgY29uZmlndXJhdGlvbi4gQW5kIHRoZSByZWxldmFudCBmdW5jdGlvbiwgYWgsIGhlcmUgaXQgaXM6IGBudGZzX3JlcGFyc2Vfc2V0X25hdGl2ZV9zeW1saW5rYC4gRGVmaW5pdGVseSBhIGZpbGVzeXN0ZW0gb3BlcmF0aW9uLCBzcGVjaWZpY2FsbHkgc3ltbGluayBjcmVhdGlvbi4gTXkgZ3V0IHNheXMgXCJmdXp6IGl0LFwiIGJ1dCBsZXQncyB0YWtlIGEgY2xvc2VyIGxvb2suXG5cbk9rYXksIHRoZSBjb2RlIGNoYW5nZSBpcyBqdXN0IHN3YXBwaW5nIG91dCBhIG1hbnVhbCBsb29wIGZvciBgc3RycmVwbGFjZWAuIElzIHRoaXMgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZT8gTGV0J3Mgc2VlLi4uIHRoZSBgc3RycmVwbGFjZWAgaW1wbGVtZW50YXRpb24uLi4gYWgsIHRoYXQncyBpdCEgVGhpcyBgc3RycmVwbGFjZWAgZnVuY3Rpb24gcmV0dXJucyBhICpwb2ludGVyIHRvIHRoZSBlbmQqIG9mIHRoZSBzdHJpbmcsIG5vdCB0aGUgYmVnaW5uaW5nIGxpa2UgeW91J2QgdXN1YWxseSBleHBlY3QuIEkgbmVlZCB0byBiZSBzdXJlIGFib3V0IHRoaXMuXG5cblRpbWUgdG8gY29uc3VsdCB0aGUgc291cmNlLiBMZXQgbWUgY2hlY2sgdGhlIGBsaWIvc3RyaW5nLmNgIGZpbGUgZm9yIHRoZSBgc3RycmVwbGFjZWAgaW1wbGVtZW50YXRpb24gYW5kIGNvbmZpcm0gdGhpcy4gVGhpcyBzdWJ0bGUgZGlmZmVyZW5jZSBpbiBwb2ludGVyIHJldHVybiBjb3VsZCBiZSBhIHNvdXJjZSBvZiBhbGwgc29ydHMgb2Ygb2ZmLWJ5LW9uZSBlcnJvcnMgb3IgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIGlmIG5vdCBoYW5kbGVkIGNhcmVmdWxseS4gVGhpcyBpcyB3b3J0aCBhIGRlZXBlciBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDMzLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA0OjM4OjQwLjM1Mjc2MjY2NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjkxODE4OTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoYXIgXFxcXCpzdHJyZXBsYWNlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvc3RyaW5nLmg9MjgxPXZvaWQgKm1lbWNocl9pbnYoY29uc3Qgdm9pZCAqcywgaW50IGMsIHNpemVfdCBuKTtcXG5pbmNsdWRlL2xpbnV4L3N0cmluZy5oOjI4MjpjaGFyICpzdHJyZXBsYWNlKGNoYXIgKnN0ciwgY2hhciBvbGQsIGNoYXIgbmV3KTtcXG5pbmNsdWRlL2xpbnV4L3N0cmluZy5oLTI4My1cXG4tLVxcbmxpYi9zdHJpbmdfaGVscGVycy5jPTk3Mz1FWFBPUlRfU1lNQk9MKF9fc3lzZnNfbWF0Y2hfc3RyaW5nKTtcXG4tLVxcbmxpYi9zdHJpbmdfaGVscGVycy5jLTk4NC0gKi9cXG5saWIvc3RyaW5nX2hlbHBlcnMuYzo5ODU6Y2hhciAqc3RycmVwbGFjZShjaGFyICpzdHIsIGNoYXIgb2xkLCBjaGFyIG5ldylcXG5saWIvc3RyaW5nX2hlbHBlcnMuYy05ODYte1xcbi0tXFxudG9vbHMvaW5jbHVkZS9saW51eC9zdHJpbmcuaD0zMz1jaGFyICpzdHJfZXJyb3JfcihpbnQgZXJybnVtLCBjaGFyICpidWYsIHNpemVfdCBidWZsZW4pO1xcbnRvb2xzL2luY2x1ZGUvbGludXgvc3RyaW5nLmgtMzQtXFxudG9vbHMvaW5jbHVkZS9saW51eC9zdHJpbmcuaDozNTpjaGFyICpzdHJyZXBsYWNlKGNoYXIgKnMsIGNoYXIgb2xkLCBjaGFyIG5ldyk7XFxudG9vbHMvaW5jbHVkZS9saW51eC9zdHJpbmcuaC0zNi1cXG4tLVxcbnRvb2xzL2xpYi9zdHJpbmcuYz0xNTk9dm9pZCByZW1vdmVfc3BhY2VzKGNoYXIgKnMpXFxuLS1cXG50b29scy9saWIvc3RyaW5nLmMtMTc2LSAqL1xcbnRvb2xzL2xpYi9zdHJpbmcuYzoxNzc6Y2hhciAqc3RycmVwbGFjZShjaGFyICpzLCBjaGFyIG9sZCwgY2hhciBuZXcpXFxudG9vbHMvbGliL3N0cmluZy5jLTE3OC17XFxuLS1cXG50b29scy9wZXJmL3V0aWwvc3RyaW5nLmM9NDA1PXVuc2lnbmVkIGludCBoZXgoY2hhciBjKVxcbi0tXFxudG9vbHMvcGVyZi91dGlsL3N0cmluZy5jLTQyMC0gKi9cXG50b29scy9wZXJmL3V0aWwvc3RyaW5nLmM6NDIxOmNoYXIgKnN0cnJlcGxhY2VfY2hhcnMoY2hhciBuZWVkbGUsIGNvbnN0IGNoYXIgKmhheXN0YWNrLCBjb25zdCBjaGFyICpyZXBsYWNlKVxcbnRvb2xzL3BlcmYvdXRpbC9zdHJpbmcuYy00MjIte1xcbi0tXFxudG9vbHMvcGVyZi91dGlsL3N0cmluZzIuaD00Mz11bnNpZ25lZCBpbnQgaGV4KGNoYXIgYyk7XFxudG9vbHMvcGVyZi91dGlsL3N0cmluZzIuaDo0NDpjaGFyICpzdHJyZXBsYWNlX2NoYXJzKGNoYXIgbmVlZGxlLCBjb25zdCBjaGFyICpoYXlzdGFjaywgY29uc3QgY2hhciAqcmVwbGFjZSk7XFxudG9vbHMvcGVyZi91dGlsL3N0cmluZzIuaC00NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDQ6Mzg6NDMuMDQ0NTg3NTkzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMwNDQ0Mzc1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBgc3RycmVwbGFjZWAgSW1wbGVtZW50YXRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGNyYWNrIG9wZW4gYGxpYi9zdHJpbmdfaGVscGVycy5jYCBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGBzdHJyZXBsYWNlYCBmdW5jdGlvbi4gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaG93IHRoaXMgdGhpbmcncyBpbXBsZW1lbnRlZC4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBlZmZpY2llbmN5IGFuZCBwb3RlbnRpYWwgZWRnZSBjYXNlcy4gSSdtIGFzc3VtaW5nIHRoZXJlJ3Mgc29tZSBnb29kIGNoYXJhY3Rlci1ieS1jaGFyYWN0ZXIgaXRlcmF0aW9uIGdvaW5nIG9uIGluIHRoZXJlIHNvbWV3aGVyZS4gSSdtIGN1cmlvdXMgaWYgdGhleSdyZSB1c2luZyBgc3Ryc3RyYCBvciBzaW1pbGFyIHN0cmluZyBzZWFyY2ggZnVuY3Rpb25zIGludGVybmFsbHksIG9yIGlmIHRoZXkgcm9sbGVkIHRoZWlyIG93bi4gQW5kIGhvdyB0aGV5J3JlIGhhbmRsaW5nIG1lbW9yeSBhbGxvY2F0aW9u4oCmYXJlIHRoZXkgcHJlLWNhbGN1bGF0aW5nIHRoZSByZXF1aXJlZCBidWZmZXIgc2l6ZSwgb3IgYXJlIHRoZXkgcmVhbGxvY2F0aW5nIGR5bmFtaWNhbGx5PyBJIGhvcGUgdGhleSdyZSBub3QgZG9pbmcgYSBuYWl2ZSBgc3RybGVuYCBldmVyeSBzaW5nbGUgdGltZSDigJMgdGhhdCB3b3VsZCBiZSBhIHBlcmZvcm1hbmNlIGtpbGxlciwgZXNwZWNpYWxseSBvbiBsYXJnZXIgc3RyaW5ncy4gQWxzbywgSSB3b25kZXIgYWJvdXQgdGhlIHBvdGVudGlhbCBmb3IgYnVmZmVyIG92ZXJmbG93cy4gTGV0J3Mgc2VlIGlmIHRoZXkncmUgY2hlY2tpbmcgaW5wdXQgbGVuZ3RocyBjYXJlZnVsbHkuIEFuZCBob3cgYWJvdXQgdGhlIGNhc2Ugd2hlcmUgdGhlIGBvbGRgIHN0cmluZyBpcyBlbXB0eT8gV2hhdCBkb2VzIHRoZSBjb2RlIGRvIGluIHRoYXQgc2NlbmFyaW8/IFRpbWUgdG8gcHV0IG15IGRlYnVnZ2luZyBoYXQgb24gYW5kIGRpc3NlY3QgdGhpcyB0aGluZy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mzc3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDQ6Mzg6NDYuMzQ5MDM1NDM2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJsaWIvc3RyaW5nX2hlbHBlcnMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA5ODAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA5ODA6XFx0ICpcXG4gOTgxOlxcdCAqIFJlcGxhY2VzIHRoZSBlYWNoIEBvbGQgY2hhcmFjdGVyIHdpdGggYSBAbmV3IG9uZSBpbiB0aGUgZ2l2ZW4gc3RyaW5nIEBzdHIuXFxuIDk4MjpcXHQgKlxcbiA5ODM6XFx0ICogUmV0dXJuOiBwb2ludGVyIHRvIHRoZSBzdHJpbmcgQHN0ciBpdHNlbGYuXFxuIDk4NDpcXHQgKi9cXG4gOTg1OlxcdGNoYXIgKnN0cnJlcGxhY2UoY2hhciAqc3RyLCBjaGFyIG9sZCwgY2hhciBuZXcpXFxuIDk4NjpcXHR7XFxuIDk4NzpcXHRcXHRjaGFyICpzID0gc3RyO1xcbiA5ODg6XFx0XFxuIDk4OTpcXHRcXHRmb3IgKDsgKnM7ICsrcylcXG4gOTkwOlxcdFxcdFxcdGlmICgqcyA9PSBvbGQpXFxuIDk5MTpcXHRcXHRcXHRcXHQqcyA9IG5ldztcXG4gOTkyOlxcdFxcdHJldHVybiBzdHI7XFxuIDk5MzpcXHR9XFxuIDk5NDpcXHRFWFBPUlRfU1lNQk9MKHN0cnJlcGxhY2UpO1xcbiA5OTU6XFx0XFxuIDk5NjpcXHQvKipcXG4gOTk3OlxcdCAqIG1lbWNweV9hbmRfcGFkIC0gQ29weSBvbmUgYnVmZmVyIHRvIGFub3RoZXIgd2l0aCBwYWRkaW5nXFxuIDk5ODpcXHQgKiBAZGVzdDogV2hlcmUgdG8gY29weSB0b1xcbiA5OTk6XFx0ICogQGRlc3RfbGVuOiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIHNpemVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDQ6Mzg6NDYuMzQ5MTkwNzg2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxOTI0Nzk5MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVmYWN0b3JpbmcgRXZhbHVhdGlvbjogYHN0cnJlcGxhY2VgIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgc3RycmVwbGFjZWAganVzdCByZXR1cm5zIHRoZSBzdHJpbmcgaXRzZWxmLiBTbywgdGhpcyBsaW5lIGBuaS1cdTAwM2V0YXJnZXQgPSBzdHJyZXBsYWNlKHN1Yl9uYW1lLCAnXFxcXCcsICcvJyk7YCBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSBhcyB0aGF0IGxvb3AgdXNpbmcgYHN0cmxlbmAgYW5kIHRoZW4gbW9kaWZ5aW5nIGBzdWJfbmFtZWAgaW4gcGxhY2UuIExldCBtZSB2aXN1YWxpemUgdGhhdCwgY29uZmlybWluZyBpdCdzIGp1c3QgYSByZWZhY3RvcmluZy5cblxuU28sIHRoZSBvcmlnaW5hbCBjb2RlIGhhZCBhIGxvb3AgdGhhdCB3ZW50IHRocm91Z2ggdGhlIHN0cmluZywgcmVwbGFjZWQgYmFja3NsYXNoZXMgd2l0aCBmb3J3YXJkIHNsYXNoZXMuIFRoZSByZWZhY3RvcmVkIHZlcnNpb24gdXNlcyBhIHN0YW5kYXJkIGxpYnJhcnkgZnVuY3Rpb24sIGBzdHJyZXBsYWNlYC5cblxuSXQgYXBwZWFycyB0aGF0IGBzdHJyZXBsYWNlYCwgYWNjb3JkaW5nIHRvIHRoZSBkb2N1bWVudGF0aW9uLCBtb2RpZmllcyB0aGUgc3RyaW5nIGluIHBsYWNlIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgb3JpZ2luYWwgc3RyaW5nLiBJdCdzIGVzc2VudGlhbGx5IHRoZSBzYW1lIGxvZ2ljLiBMZXQgbWUgdGhpbmssIGlzIHRoZXJlICphbnkqIGZ1bmN0aW9uYWwgY2hhbmdlPyBObywgaXQncyBqdXN0IHJlcGxhY2luZyBhIGxvb3Agd2l0aCBhIHN0YW5kYXJkIGxpYnJhcnkgZnVuY3Rpb24uIFNvLCBgbmktXHUwMDNldGFyZ2V0YCBlbmRzIHVwIHBvaW50aW5nIHRvIHRoZSBzYW1lIG1vZGlmaWVkIGBzdWJfbmFtZWAgaW4gYm90aCBjYXNlcy5cblxuV2FpdCwgYXJlIHRoZXJlIGhpZGRlbiBkaWZmZXJlbmNlcyB3aXRoIG51bGwgdGVybWluYXRpb24sIG91dC1vZi1ib3VuZHMgcmVhZHMsIG9yIHBvdGVudGlhbCB1bmRlZmluZWQgYmVoYXZpb3I/IExldCdzIGNvbnNpZGVyIGNvcm5lciBjYXNlcy4gSG1tLCBib3RoIHRoZSBvcmlnaW5hbCBjb2RlIGFuZCB0aGUgZnVuY3Rpb24gZXhwZWN0IGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZy4gU28gZnVuY3Rpb25hbGx5IGl0IHNlZW1zIGlkZW50aWNhbC5cblxuU2luY2UgaXQncyBhIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZSwgYSByZWZhY3RvcmluZywgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgZGlmZiB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIFllcCwgdGhlIGRpZmYgY29uZmlybXMgaXQncyBqdXN0IGEgc3RyYWlnaHRmb3J3YXJkIHJlcGxhY2VtZW50IG9mIHRoZSBtYW51YWwgbG9vcCB3aXRoIGBzdHJyZXBsYWNlYC4gRXhlY3V0aW9uIGZsb3cgcmVtYWlucyB0aGUgc2FtZS4gSSdtIGdvaW5nIHdpdGggYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5NDQsIk91dHB1dFRva2VucyI6NzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwNDozODo1Mi41NDE2NzM1NTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCByZXBsYWNlcyBhIG1hbnVhbCBzdHJpbmcgcmVwbGFjZW1lbnQgbG9vcCB3aXRoIGEgY2FsbCB0byB0aGUgc3RhbmRhcmQgYHN0cnJlcGxhY2VgIGZ1bmN0aW9uLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCByZXBsYWNlcyBhIG1hbnVhbCBzdHJpbmcgcmVwbGFjZW1lbnQgbG9vcCB3aXRoIGEgY2FsbCB0byB0aGUgc3RhbmRhcmQgYHN0cnJlcGxhY2VgIGZ1bmN0aW9uLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGxvZ2ljIG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwNDozODo1Mi41NDE3MDk4NzlaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow5hnqk[1] Phase: Running StartedAt: 2026-08-14 04:39:03 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5hnqk[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-14 04:39:03 +0000 UTC FinishedAt: 2026-08-14 04:39:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}