Name: series-workflowtwgm5 Phase: Failed StartedAt: 2026-07-06 08:02:39 +0000 UTC FinishedAt: 2026-07-06 08:16:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtwgm5[0] Phase: Succeeded StartedAt: 2026-07-06 08:02:39 +0000 UTC FinishedAt: 2026-07-06 08:16:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtwgm5[0].run-triage Phase: Succeeded StartedAt: 2026-07-06 08:02:39 +0000 UTC FinishedAt: 2026-07-06 08:16:48 +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+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGBFUlJfUFRSKDApYCB3aXRoIGBOVUxMYC4gU2luY2UgYEVSUl9QVFIoMClgIGV2YWx1YXRlcyB0byBgKHZvaWQgKikwYCAod2hpY2ggaXMgYE5VTExgKSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdy4gSXQgaXMgcHVyZWx5IGEgY29kZSBjbGVhbnVwIHRvIHJlbW92ZSBjb25mdXNpbmcgdXNhZ2Ugb2YgdGhlIGBFUlJfUFRSYCBtYWNyby4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDg6MTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxMWRiMjkwMWVkZGNjZTU0NDg1MTFjY2VkN2VjZmNlMmI1Njg1OTY1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAwODoxNjowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jIGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuaW5kZXggMDhjMjdiYjQzOGI1OTcuLjdhZGRmMjQzYzZmMTZiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuQEAgLTkzOCw3ICYjNDM7OTM4LDcgQEAgc3RhdGljIGlycXJldHVybl90IHRyZjc5NzBhX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpXG4gXHRcdFx0aWYgKCF0cmYtXHUwMDNldGltZW91dCkge1xuIFx0XHRcdFx0dHJmLVx1MDAzZWlnbm9yZV90aW1lb3V0ID1cbiBcdFx0XHRcdCAgICAhY2FuY2VsX2RlbGF5ZWRfd29yayhcdTAwMjZ0cmYtXHUwMDNldGltZW91dF93b3JrKTtcbi1cdFx0XHRcdHRyZi1cdTAwM2VyeF9za2IgPSBFUlJfUFRSKDApO1xuJiM0MztcdFx0XHRcdHRyZi1cdTAwM2VyeF9za2IgPSBOVUxMO1xuIFx0XHRcdFx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjE2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGBFUlJfUFRSKDApYCB3aXRoIGBOVUxMYC4gU2luY2UgYEVSUl9QVFIoMClgIGV2YWx1YXRlcyB0byBgKHZvaWQgKikwYCAod2hpY2ggaXMgYE5VTExgKSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdy4gSXQgaXMgcHVyZWx5IGEgY29kZSBjbGVhbnVwIHRvIHJlbW92ZSBjb25mdXNpbmcgdXNhZ2Ugb2YgdGhlIGBFUlJfUFRSYCBtYWNyby4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDExZGIyOTAxZWRkY2NlNTQ0ODUxMWNjZWQ3ZWNmY2UyYjU2ODU5NjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCA2IDA4OjE2OjAyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvdHJmNzk3MGEuYyBiL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmMKaW5kZXggMDhjMjdiYjQzOGI1OTcuLjdhZGRmMjQzYzZmMTZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmMKQEAgLTkzOCw3ICYjNDM7OTM4LDcgQEAgc3RhdGljIGlycXJldHVybl90IHRyZjc5NzBhX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiAJCQlpZiAoIXRyZi0mZ3Q7dGltZW91dCkgewogCQkJCXRyZi0mZ3Q7aWdub3JlX3RpbWVvdXQgPQogCQkJCSAgICAhY2FuY2VsX2RlbGF5ZWRfd29yaygmYW1wO3RyZi0mZ3Q7dGltZW91dF93b3JrKTsKLQkJCQl0cmYtJmd0O3J4X3NrYiA9IEVSUl9QVFIoMCk7CiYjNDM7CQkJCXRyZi0mZ3Q7cnhfc2tiID0gTlVMTDsKIAkJCQl0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7CiAJCQkJYnJlYWs7CiAJCQl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NjUKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA0MzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgU3VidGxlIE5GQyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25mYy90cmY3OTcwYS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiBgdHJmNzk3MGFfaXJxYDogdGhlIGNvZGUmIzM5O3Mgc3dpdGNoaW5nIGB0cmYtJmd0O3J4X3NrYmAgZnJvbSBgRVJSX1BUUigwKWAgdG8gYE5VTExgLiBJbml0aWFsbHksIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7SXMgdGhpcyBhY3R1YWxseSBhIGZ1bmN0aW9uYWwgY2hhbmdlPyBgRVJSX1BUUigwKWAgKmlzKiBgTlVMTGAsIGlzbiYjMzk7dCBpdD8mIzM0OwoKV2FpdCBhIG1pbnV0ZSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYEVSUl9QVFIoMClgIGlzICp0ZWNobmljYWxseSogYSBgKHZvaWQgKikwYCwgd2hpY2gsIHllcywgaXMgdGhlIHNhbWUgYXMgYE5VTExgLiBCdXQsIGlzIGl0ICpleGFjdGx5KiBgTlVMTGA/IEkgbmVlZCB0byBiZSBzdXJlIGFib3V0IHRoZSBzZW1hbnRpY3MgaGVyZS4gTGV0JiMzOTtzIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBFUlJfUFRSYCBpbiBgaW5jbHVkZS9saW51eC9lcnIuaGA6CgpgYGBjCnN0YXRpYyBpbmxpbmUgdm9pZCAqIF9fbXVzdF9jaGVjayBFUlJfUFRSKGxvbmcgZXJyb3IpCnsKCXJldHVybiAodm9pZCAqKSBlcnJvcjsKfQpgYGAKClJpZ2h0LCBzbyBgRVJSX1BUUigwKWAgaXMgc2ltcGx5IGNhc3RpbmcgYDBgIHRvIGEgYHZvaWQqYCwgc28gaXQmIzM5O3MgYSBgTlVMTGAgcG9pbnRlci4gT2theSwgc28gZmFyLCBpdCAqc2VlbXMqIGxpa2UgdGhpcyBpcyBqdXN0IGEgY2xlYW51cC4gQnV0LCBJIGtub3cgYmV0dGVyIHRoYW4gdG8ganVtcCB0byBjb25jbHVzaW9ucy4KClRoZSBrZXkgaXMgaWYgdGhpcyBpcyB1c2VkIGVsc2V3aGVyZSwgbGV0JiMzOTtzIGRvdWJsZSBjaGVjayBob3cgYHRyZjc5NzBhX3NlbmRfdXBzdHJlYW1gIGlzIHVzaW5nIGl0LCBzcGVjaWZpY2FsbHkgdGhpcyBjb2RlOgoKYGBgYwpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHN0cnVjdCB0cmY3OTcwYSAqdHJmKQp7CglkZXZfa2ZyZWVfc2tiX2FueSh0cmYtJmd0O3J4X3NrYik7Cgl0cmYtJmd0O3J4X3NrYiA9IE5VTEw7Ci4uLgpgYGAKCkFoLCBoZXJlIGl0IGlzOiBgZGV2X2tmcmVlX3NrYl9hbnkodHJmLSZndDtyeF9za2IpYC4gTm93LCBpZiBgdHJmLSZndDtyeF9za2JgICp3YXMqIGBFUlJfUFRSKDApYCwgaXQmIzM5O3Mgbm93IGBOVUxMYC4gQW5kIGBkZXZfa2ZyZWVfc2tiX2FueShOVUxMKWAgaXMgYSBuby1vcCwgcmlnaHQ/IFNvLCB0aGlzIGNvbmZpcm1zIHRoYXQgaXQgc2VlbXMgdGhlIGNvZGUgaXMgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQuCgpJIHN0aWxsIHdhbnQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHRoYXQgbm8gb3RoZXIgY29kZSBwYXRocyBkZXBlbmQgb24gc29tZSBzcGVjaWZpYyBiZWhhdmlvciBvZiBgRVJSX1BUUigwKWAuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGlzIGlzbiYjMzk7dCB1c2VkIGFueXdoZXJlIGVsc2UgYmV5b25kIGB0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtYC4gSSYjMzk7bGwgaGF2ZSB0byB0aG9yb3VnaGx5IGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb2RlIGZvciBhbnkgcG90ZW50aWFsIHN1YnRsZSBpbXBhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHJmNzk3MGFfc2VuZF91cHN0cmVhbSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3RyZjc5NzBhLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvdHJmNzk3MGEuYz02MTc9c3RhdGljIGludCB0cmY3OTcwYV9tb2RlX2RldGVjdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnJmX3RlY2gpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NDktXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY1MDpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NTEte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9Njc4PXN0YXRpYyB2b2lkIHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZXJybm8pXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODYtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY4NzpcdHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjg4LX1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTc4Mz1zdGF0aWMgdm9pZCB0cmY3OTcwYV9kcmFpbl9maWZvKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCBzdGF0dXMpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NTMtXHRpZiAoc3RhdHVzID09IFRSRjc5NzBBX0lSUV9TVEFUVVNfU1JYKSB7XHQvKiBSZWNlaXZlIGNvbXBsZXRlICovXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg1NDpcdFx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NTUtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTg2NT1zdGF0aWMgaXJxcmV0dXJuX3QgdHJmNzk3MGFfaXJxKGludCBpcnEsIHZvaWQgKmRldl9pZClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk0MS1cdFx0XHRcdHRyZi1cdTAwM2VyeF9za2IgPSBOVUxMO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NDI6XHRcdFx0XHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk0My1cdFx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0OTAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoZSBGdW5jdGlvbjogYHRyZjc5NzBhX3NlbmRfdXBzdHJlYW1gKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgdHJmNzk3MGFfc2VuZF91cHN0cmVhbWAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBjb25zaWRlciBjb250ZXh0LiBJJiMzOTttIGFzc3VtaW5nIHRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiBhbiBSRklEIGRyaXZlciwgbGlrZWx5IGZvciB0aGUgVFJGNzk3MEEgSUMsIGdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbi4gVGhhdCBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGxvdy1sZXZlbCBjb21tdW5pY2F0aW9uIGFuZCBkYXRhIHRyYW5zbWlzc2lvbiwgcHJvYmFibHkgb3ZlciBTUEkgb3IgYSBzaW1pbGFyIGludGVyZmFjZS4KCk15IGZpcnN0IHF1ZXN0aW9ucyBpbW1lZGlhdGVseSByZXZvbHZlIGFyb3VuZCB0aGUgZnVuY3Rpb24mIzM5O3MgcHVycG9zZTogSXMgdGhpcyB0aGUgcHJpbWFyeSBzZW5kIGZ1bmN0aW9uPyBEb2VzIGl0IGhhbmRsZSBwYWNrZXQgZnJhbWluZywgZXJyb3IgY29ycmVjdGlvbiAoQ1JDPyksIGFuZCB0cmFuc21pc3Npb24gdGltaW5nPyBXaGF0IGFyZSB0aGUgaW5wdXQgcGFyYW1ldGVycz8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgYSBidWZmZXIgY29udGFpbmluZyB0aGUgZGF0YSB0byBzZW5kLCBhIGxlbmd0aCBwYXJhbWV0ZXIsIGFuZCBwb3RlbnRpYWxseSBvcHRpb25zIGZsYWdzIGZvciB0aGluZ3MgbGlrZSBwb3dlciBsZXZlbCwgbW9kdWxhdGlvbiB0eXBlLCBvciBldmVuIHRpbWVvdXQgdmFsdWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgZmxleGlibGUgdGhpcyBmdW5jdGlvbiBpcywgYW5kIGhvdyBpdCBoYW5kbGVzIHBvdGVudGlhbCBjb21tdW5pY2F0aW9uIGVycm9ycyAtIGVzcGVjaWFsbHkgaWYgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIG5vaXN5IFJGIGVudmlyb25tZW50LgoKSSYjMzk7bSBhbHNvIHdvbmRlcmluZyBob3cgdGhpcyBmdW5jdGlvbiBpbnRlcmZhY2VzIHdpdGggdGhlIGludGVycnVwdCBoYW5kbGluZyBvZiB0aGUgVFJGNzk3MEEuIERvZXMgaXQgYmxvY2sgdW50aWwgdGhlIHRyYW5zbWlzc2lvbiBpcyBjb21wbGV0ZSwgb3IgZG9lcyBpdCB1dGlsaXplIGludGVycnVwdHMgZm9yIGFzeW5jaHJvbm91cyBvcGVyYXRpb24/IElmIHRoZSBsYXR0ZXIsIGhvdyBkb2VzIGl0IG1hbmFnZSB0aGUgYnVmZmVyIGFuZCBlbnN1cmUgZGF0YSBpbnRlZ3JpdHkgdGhyb3VnaG91dCB0aGUgdHJhbnNtaXQgcHJvY2Vzcz8gSSBuZWVkIHRvIGxvb2sgZm9yIGFueSBtdXRleGVzIG9yIHNlbWFwaG9yZXMgdGhhdCBtaWdodCBiZSB1c2VkIGZvciBzeW5jaHJvbml6YXRpb24sIGVzcGVjaWFsbHkgaWYgbXVsdGlwbGUgdGhyZWFkcyBvciBwcm9jZXNzZXMgbWlnaHQgYmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZHJpdmVyLgoKRmluYWxseSwgSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBwb3RlbnRpYWwgZGVidWdnaW5nIHBvaW50cy4gV2hhdCBhcmUgdGhlIGVycm9yIGNvZGVzIHRoYXQgYXJlIHVzZWQ/IEFyZSB0aGVyZSBhbnkgY2xlYXIgZGVidWcgbWVzc2FnZXMgSSBjYW4gZW5hYmxlPyBBbmQgY3JpdGljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZnVuY3Rpb24gaGFuZGxlcyBwb3RlbnRpYWwgdHJhbnNtaXNzaW9uIGZhaWx1cmVzLiBEb2VzIGl0IGhhdmUgcmV0cnkgbG9naWMsIG9yIGRvZXMgaXQgc2ltcGx5IHJldHVybiBhbiBlcnJvciBjb2RlIGJhY2sgdG8gdGhlIGNhbGxlcj8gSSYjMzk7bSBtZW50YWxseSBzdGFydGluZyB0byBmb3JtdWxhdGUgdGhlIHRlc3Qgc2NlbmFyaW9zIEkmIzM5O2xsIG5lZWQgdG8gcnVuIHRvIHZhbGlkYXRlIHRoaXMgZnVuY3Rpb24mIzM5O3MgYmVoYXZpb3IgdW5kZXIgZGlmZmVyZW50IGNvbmRpdGlvbnMuIEkgbmVlZCB0byBsb29rIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIGJ1ZmZlciBvdmVyZmxvd3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25mYy90cmY3OTcwYS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2NDU6XHRcdCpyZl90ZWNoID0gdGVjaDtcbiA2NDY6XHRcbiA2NDc6XHRcdHJldHVybiByZXQ7XG4gNjQ4Olx0fVxuIDY0OTpcdFxuIDY1MDpcdHN0YXRpYyB2b2lkIHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0oc3RydWN0IHRyZjc5NzBhICp0cmYpXG4gNjUxOlx0e1xuIDY1MjpcdFx0ZGV2X2tmcmVlX3NrYl9hbnkodHJmLVx1MDAzZXR4X3NrYik7XG4gNjUzOlx0XHR0cmYtXHUwMDNldHhfc2tiID0gTlVMTDtcbiA2NTQ6XHRcbiA2NTU6XHRcdGlmICh0cmYtXHUwMDNlcnhfc2tiIFx1MDAyNlx1MDAyNiAhSVNfRVJSKHRyZi1cdTAwM2VyeF9za2IpIFx1MDAyNlx1MDAyNiAhdHJmLVx1MDAzZWFib3J0aW5nKVxuIDY1NjpcdFx0XHRwcmludF9oZXhfZHVtcF9kZWJ1ZyhcJiMzNDt0cmY3OTcwYSByeCBkYXRhOiBcJiMzNDssIERVTVBfUFJFRklYX05PTkUsXG4gNjU3Olx0XHRcdFx0XHQgICAgIDE2LCAxLCB0cmYtXHUwMDNlcnhfc2tiLVx1MDAzZWRhdGEsIHRyZi1cdTAwM2VyeF9za2ItXHUwMDNlbGVuLFxuIDY1ODpcdFx0XHRcdFx0ICAgICBmYWxzZSk7XG4gNjU5Olx0XG4gNjYwOlx0XHR0cmYtXHUwMDNlc3RhdGUgPSBUUkY3OTcwQV9TVF9JRExFO1xuIDY2MTpcdFxuIDY2MjpcdFx0aWYgKHRyZi1cdTAwM2VhYm9ydGluZykge1xuIDY2MzpcdFx0XHRkZXZfZGJnKHRyZi1cdTAwM2VkZXYsIFwmIzM0O0Fib3J0IHByb2Nlc3MgY29tcGxldGVcXG5cJiMzNDspO1xuIDY2NDpcdFxuIDY2NTpcdFx0XHRpZiAoIUlTX0VSUih0cmYtXHUwMDNlcnhfc2tiKSkge1xuIDY2NjpcdFx0XHRcdGtmcmVlX3NrYih0cmYtXHUwMDNlcnhfc2tiKTtcbiA2Njc6XHRcdFx0XHR0cmYtXHUwMDNlcnhfc2tiID0gRVJSX1BUUigtRUNBTkNFTEVEKTtcbiA2Njg6XHRcdFx0fVxuIDY2OTpcdFxuIDY3MDpcdFx0XHR0cmYtXHUwMDNlYWJvcnRpbmcgPSBmYWxzZTtcbiA2NzE6XHRcdH1cbiA2NzI6XHRcbiA2NzM6XHRcdHRyZi1cdTAwM2VjYih0cmYtXHUwMDNlZGRldiwgdHJmLVx1MDAzZWNiX2FyZywgdHJmLVx1MDAzZXJ4X3NrYik7XG4gNjc0Olx0XG4gNjc1Olx0XHR0cmYtXHUwMDNlcnhfc2tiID0gTlVMTDtcbiA2NzY6XHR9XG4gNjc3Olx0XG4gNjc4Olx0c3RhdGljIHZvaWQgdHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0oc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBlcnJubylcbiA2Nzk6XHR7XG4gNjgwOlx0XHRkZXZfZGJnKHRyZi1cdTAwM2VkZXYsIFwmIzM0O0Vycm9yIC0gc3RhdGU6ICVkLCBlcnJubzogJWRcXG5cJiMzNDssIHRyZi1cdTAwM2VzdGF0ZSwgZXJybm8pO1xuIDY4MTpcdFxuIDY4MjpcdFx0Y2FuY2VsX2RlbGF5ZWRfd29yayhcdTAwMjZ0cmYtXHUwMDNldGltZW91dF93b3JrKTtcbiA2ODM6XHRcbiA2ODQ6XHRcdGtmcmVlX3NrYih0cmYtXHUwMDNlcnhfc2tiKTtcbiA2ODU6XHRcdHRyZi1cdTAwM2VyeF9za2IgPSBFUlJfUFRSKGVycm5vKTtcbiA2ODY6XHRcbiA2ODc6XHRcdHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0odHJmKTtcbiA2ODg6XHR9XG4gNjg5Olx0XG4gNjkwOlx0c3RhdGljIGludCB0cmY3OTcwYV90cmFuc21pdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiA2OTE6XHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBsZW4sIGNvbnN0IHU4ICpwcmVmaXgsXG4gNjkyOlx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgcHJlZml4X2xlbilcbiA2OTM6XHR7XG4gNjk0Olx0XHRzdHJ1Y3Qgc3BpX3RyYW5zZmVyIHRbMl07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDg6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgxMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBgRVJSX1BUUigwKWAgdnMuIGBOVUxMYCoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBhbmQgaXQmIzM5O3MgdXNpbmcgYEVSUl9QVFIoMClgIHRvIHNldCBgdHJmLSZndDtyeF9za2JgLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiB3YWl0LCBpc24mIzM5O3QgYEVSUl9QVFIoMClgIGVzc2VudGlhbGx5IHRoZSBzYW1lIGFzIGBOVUxMYD8gTGV0IG1lIGRvdWJsZS1jaGVjay4gWXVwLCBgRVJSX1BUUigwKWAgZXhwYW5kcyB0byBgKHZvaWQgKikwYCwgd2hpY2ggaXMgdGhlIGRlZmluaXRpb24gb2YgYE5VTExgLiBTbywgZnVuY3Rpb25hbGx5LCBgdHJmLSZndDtyeF9za2IgPSBFUlJfUFRSKDApO2AgaXMgaWRlbnRpY2FsIHRvIGB0cmYtJmd0O3J4X3NrYiA9IE5VTEw7YC4KCkJ1dCBpcyB0aGVyZSBzb21lIHN1YnRsZSBzaWRlIGVmZmVjdCBJJiMzOTttIG1pc3Npbmc/IElzIGBFUlJfUFRSKDApYCBpbnRlbmRlZCB0byB0cmlnZ2VyIHNvbWUga2luZCBvZiBzcGFyc2Ugd2FybmluZyBvciBzdGF0aWMgYW5hbHlzaXMgdG9vbD8gVGhhdCYjMzk7cyB0aGUgb25seSB0aGluZyBJIGNhbiB0aGluayBvZi4gQWgsIHJpZ2h0LCBJIHJlbWVtYmVyIG5vdy4gVXNpbmcgYEVSUl9QVFIoMClgIHdoZW4geW91ICpzaG91bGQqIHVzZSBgTlVMTGAsIG9yLCB3b3JzZSwganVzdCB1c2luZyBgRVJSX1BUUigwKWAgaW5zdGVhZCBvZiBhIG1lYW5pbmdmdWwgZXJyb3IgcG9pbnRlciwgKmlzKiBiYWQgcHJhY3RpY2UuIEl0JiMzOTtzIHVzdWFsbHkgYSBzdHlsaXN0aWMgaXNzdWUgYW5kIGNhbiBsZWFkIHRvIGNvbmZ1c2luZyBjb2RlLgoKTGV0JiMzOTtzIHNlZSBpZiB0aGlzIGNyZWF0ZXMgYSBwcm9ibGVtLiBMb29raW5nIGF0IGB0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtYCwgaXQgY2hlY2tzIGAhSVNfRVJSKHRyZi0mZ3Q7cnhfc2tiKWAuIE9rYXksIHNvIGBJU19FUlIoTlVMTClgIHJldHVybnMgZmFsc2UuIEFuZCBzaW5jZSBgRVJSX1BUUigwKWAgZXZhbHVhdGVzIHRvIGBOVUxMYCwgYElTX0VSUihFUlJfUFRSKDApKWAgKmFsc28qIHJldHVybnMgZmFsc2UuIFRoZXJlZm9yZSwgdGhlcmUmIzM5O3MgYWJzb2x1dGVseSBubyBmdW5jdGlvbmFsIGRpZmZlcmVuY2UgaGVyZS4gVGhlIGNvZGUgd2lsbCBiZWhhdmUgZXhhY3RseSB0aGUgc2FtZSB3YXkuIFRoZSBjaGVjayBpcyBlcXVpdmFsZW50IHJlZ2FyZGxlc3MuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIHF1aWNrbHkgcmV2aWV3IHRoZSBgSVNfRVJSYCBtYWNybyBkZWZpbml0aW9uLi4uIFllcCwgaXQmIzM5O3Mgb3BlcmF0aW5nIGFzIEkgZXhwZWN0LiBTbywgdGhlcmUgaXMgbm8gZXJyb3IgaW4gdGhlIGNvZGUuIEl0IGlzIG1lcmVseSBhIHN0eWxpc3RpYyBjb25jZXJuLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhdGljIGlubGluZSBib29sIElTX0VSUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvZXJyLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0OTMKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipOYXZpZ2F0aW5nIHRoZSBMYWJ5cmludGggb2YgS2VybmVsIERlZmluaXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIHdyYXAgbXkgaGVhZCBhcm91bmQgdGhpcyBlcnJvciBoYW5kbGluZywgYW5kIEkmIzM5O20gcHJldHR5IHN1cmUgSSYjMzk7dmUgc2VlbiBgSVNfRVJSYCBmbG9hdGluZyBhcm91bmQgYmVmb3JlLiBXaGVyZSBkaWQgSSBzZWUgdGhhdD8gKkFoLCByaWdodCEqIEl0JiMzOTtzIGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgvZXJyLmhgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGVycm9yIGNoZWNraW5nIG1hY3JvLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBpdCBkb2VzIGV4YWN0bHksIGJ1dCBhdCBsZWFzdCBJIGtub3cgd2hlcmUgdG8gbG9vayBpZiBJIHdhbnQgdG8gZGlnIGRlZXBlciBpbnRvIGl0cyBpbXBsZW1lbnRhdGlvbiBvciBkb2N1bWVudGF0aW9uLiBLbm93aW5nIHdoZXJlIGNvcmUga2VybmVsIGRlZmluaXRpb25zIHJlc2lkZSBpcyBhbHdheXMgdGhlIGZpcnN0IHN0ZXAsIHNvIEkgaGF2ZSBhIG1lbnRhbCBub3RlIGZvciB0aGUgbmV4dCBpbnZlc3RpZ2F0aW9uIGludG8gZXJyb3IgcmV0dXJucy4gTm93IHRvIHByb2NlZWQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmluZSBJU19FUlImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2Vyci5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvZXJyLmgtMjctICovXG5pbmNsdWRlL2xpbnV4L2Vyci5oOjI4OiNkZWZpbmUgSVNfRVJSX1ZBTFVFKHgpIHVubGlrZWx5KCh1bnNpZ25lZCBsb25nKSh2b2lkICopKHgpIFx1MDAzZT0gKHVuc2lnbmVkIGxvbmcpLU1BWF9FUlJOTylcbmluY2x1ZGUvbGludXgvZXJyLmgtMjktXG4tLVxuaW5jbHVkZS9saW51eC9lcnIuaD03Nj1zdGF0aWMgaW5saW5lIGJvb2wgX19tdXN0X2NoZWNrIElTX0VSUihfX2ZvcmNlIGNvbnN0IHZvaWQgKnB0cilcbi0tXG5pbmNsdWRlL2xpbnV4L2Vyci5oLTgxLS8qIFJlYWQgYW4gZXJyb3IgcG9pbnRlciBmcm9tIHRoZSBwZXJjcHUgYWRkcmVzcyBzcGFjZS4gKi9cbmluY2x1ZGUvbGludXgvZXJyLmg6ODI6I2RlZmluZSBJU19FUlJfUENQVShwdHIpIChJU19FUlIoKGNvbnN0IHZvaWQgKikoX19mb3JjZSBjb25zdCB1bnNpZ25lZCBsb25nKShwdHIpKSlcbmluY2x1ZGUvbGludXgvZXJyLmgtODMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4ODYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IElTX0VSUiBJbnF1aXJ5KioKCkFscmlnaHQsIHNvIHRoZSBmaXJzdCBzdGVwIGlzIGNsZWFyOiB3ZSYjMzk7cmUgZGl2aW5nIGludG8gYElTX0VSUmAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAqd2hhdCBjb250ZXh0IGFyZSB3ZSBsb29raW5nIGF0IGhlcmU/KiBJcyB0aGlzIEMsIEMmIzQzOyYjNDM7LCBSdXN0LCBhIHNjcmlwdGluZyBsYW5ndWFnZT8gVGhlIHNwZWNpZmljIHN5bnRheCBhbmQgYmVoYXZpb3Igb2YgYElTX0VSUmAgdmFyaWVzIHF1aXRlIGEgYml0IGRlcGVuZGluZyBvbiB0aGUgZW52aXJvbm1lbnQuIEkmIzM5O20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggdGhlIGNvbW1vbiBpbXBsZW1lbnRhdGlvbnMgaW4gdGhvc2UgZGlmZmVyZW50IGxhbmd1YWdlcy4KClRoZW4sIG15IG1pbmQgcmFjZXMgdG8gcG90ZW50aWFsIGNvbnNpZGVyYXRpb25zOiBJcyBpdCBhIG1hY3JvPyBBIGZ1bmN0aW9uPyBBIGJ1aWx0LWluIGZlYXR1cmU/IEtub3dpbmcgdGhhdCB3aWxsIGluZmx1ZW5jZSBob3cgSSBhcHByb2FjaCB0aGUgYW5hbHlzaXMuIEFsc28sICp3aGF0IGlzIHRoZSBzeXN0ZW0gYXR0ZW1wdGluZyB0byBzaWduYWw/KiBJcyBpdCBhbiBlcnJvciBjaGVjayB3aXRoaW4gYSBsb3ctbGV2ZWwgcm91dGluZSwgb3IgYSBtb3JlIGdlbmVyYWxpemVkIGFwcHJvYWNoIHRvIGhhbmRsaW5nIGV4Y2VwdGlvbnM/IERpZmZlcmVudCBzY2VuYXJpb3MgY2FsbCBmb3IgZGlmZmVyaW5nIGxldmVscyBvZiBzY3J1dGlueS4gSSB3b3VsZCBsb29rIGF0IHRoZSBtYWNybyBleHBhbnNpb24gb2YgYElTX0VSUmAgaWYgSSBoYWQgYWNjZXNzIHRvIGEgcHJlcHJvY2Vzc29yLCBvciB0aGUgZnVuY3Rpb24gZGVjbGFyYXRpb24gYW5kIGFzc29jaWF0ZWQgZXJyb3IgdHlwZXMgaWYgYXZhaWxhYmxlLgoKTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgc3Vycm91bmRpbmcgY29kZS4gV2hhdCBlcnJvciBoYW5kbGluZyBwYXJhZGlnbSBpcyBiZWluZyB1c2VkPyBJcyBpdCBleGNlcHRpb24tYmFzZWQ/IEVycm9yIGNvZGUtYmFzZWQ/IEFyZSB0aGV5IHJldHVybmluZyBwb2ludGVycz8gQSB1bmlvbiBvciBlbnVtPyBJIHdvdWxkIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhpcyBiYXNlZCBvbiBob3cgdGhlIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVkIHRoZSBlcnJvciBzdGF0ZSBoYW5kbGVzIHJldHVybiB2YWx1ZXMuIFRoaXMgd2lsbCBnaXZlIGEgZ29vZCBpbmRpY2F0b3Igb2Ygd2hhdCBJIHNob3VsZCBleHBlY3QgYElTX0VSUmAgdG8gZXZhbHVhdGUgdG8uIElzIGl0IGp1c3QgYSBib29sZWFuIGNoZWNrLCBvciBpcyBpdCBtb3JlIGNvbXBsZXggdGhhbiB0aGF0LCBwZXJoYXBzIGluc3BlY3RpbmcgZXJyb3IgY29kZXMgZW1iZWRkZWQgaW4gZGF0YSBzdHJ1Y3R1cmVzPyBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSBudWFuY2VzIG9mIHRoZSB1bmRlcmx5aW5nIGVycm9yIHJlcHJlc2VudGF0aW9uLgoKSW4gdGhlIGNhc2Ugb2YgbW9yZSBjb21wbGljYXRlZCByZXByZXNlbnRhdGlvbnMsIEkga25vdyB0aGF0IGNhcmVmdWwgYW5hbHlzaXMgb2YgdGhlIGFjdHVhbCBkZWZpbml0aW9ucyBpcyBjcml0aWNhbC4gQSBtaXNwbGFjZWQgYnJhY2Ugb3IgYSBtaXN1bmRlcnN0YW5kaW5nIG9mIGEgYml0ZmllbGQgY2FuIGhhdmUgc2lnbmlmaWNhbnQgcmVwZXJjdXNzaW9ucy4gVW5kZXJzdGFuZGluZyB0aGUgdW5kZXJseWluZyByZXByZXNlbnRhdGlvbiBvZiBlcnJvcnMsIGlmIGl0JiMzOTtzIG1vcmUgdGhhbiBqdXN0IGEgc2ltcGxlIGJvb2xlYW4gZmxhZywgaXMga2V5LgoKSW4gZXNzZW5jZSwgSSYjMzk7bSBmb3JtaW5nIGEgbWVudGFsIGNoZWNrbGlzdDogKipsYW5ndWFnZSBjb250ZXh0LCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBlcnJvciBoYW5kbGluZyBzdHlsZSwgYW5kIGltbWVkaWF0ZSBzdXJyb3VuZGluZyBjb2RlKiouIEkmIzM5O20gcmVhZHkgdG8gZGlnIGludG8gdGhlIGFjdHVhbCBjb2RlIG9yIGRvY3VtZW50YXRpb24gdG8gcmVmaW5lIG15IGFzc3VtcHRpb25zIGFuZCBhbnN3ZXIgdGhvc2UgcXVlc3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvZXJyLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDcwOlx0XG4gIDcxOlx0LyoqXG4gIDcyOlx0ICogSVNfRVJSIC0gRGV0ZWN0IGFuIGVycm9yIHBvaW50ZXIuXG4gIDczOlx0ICogQHB0cjogVGhlIHBvaW50ZXIgdG8gY2hlY2suXG4gIDc0Olx0ICogUmV0dXJuOiB0cnVlIGlmIEBwdHIgaXMgYW4gZXJyb3IgcG9pbnRlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuICA3NTpcdCAqL1xuICA3NjpcdHN0YXRpYyBpbmxpbmUgYm9vbCBfX211c3RfY2hlY2sgSVNfRVJSKF9fZm9yY2UgY29uc3Qgdm9pZCAqcHRyKVxuICA3NzpcdHtcbiAgNzg6XHRcdHJldHVybiBJU19FUlJfVkFMVUUoKHVuc2lnbmVkIGxvbmcpcHRyKTtcbiAgNzk6XHR9XG4gIDgwOlx0XG4gIDgxOlx0LyogUmVhZCBhbiBlcnJvciBwb2ludGVyIGZyb20gdGhlIHBlcmNwdSBhZGRyZXNzIHNwYWNlLiAqL1xuICA4MjpcdCNkZWZpbmUgSVNfRVJSX1BDUFUocHRyKSAoSVNfRVJSKChjb25zdCB2b2lkICopKF9fZm9yY2UgY29uc3QgdW5zaWduZWQgbG9uZykocHRyKSkpXG4gIDgzOlx0XG4gIDg0Olx0LyoqXG4gIDg1Olx0ICogSVNfRVJSX09SX05VTEwgLSBEZXRlY3QgYW4gZXJyb3IgcG9pbnRlciBvciBhIG51bGwgcG9pbnRlci5cbiAgODY6XHQgKiBAcHRyOiBUaGUgcG9pbnRlciB0byBjaGVjay5cbiAgODc6XHQgKlxuICA4ODpcdCAqIExpa2UgSVNfRVJSKCksIGJ1dCBhbHNvIHJldHVybnMgdHJ1ZSBmb3IgYSBudWxsIHBvaW50ZXIuXG4gIDg5Olx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2NzAKCQkJCQkJCW91dHB1dDogOTYKCQkJCQkJCXRob3VnaHRzOiAzNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ29kZSBDbGVhbnVwIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBob25lcyBpbiBvbiB0aGF0IGBJU19FUlJfVkFMVUVgIG1hY3JvLiBJdCBib2lscyBkb3duIHRvIGB1bmxpa2VseSgodW5zaWduZWQgbG9uZykodm9pZCAqKSh4KSAmZ3Q7PSAodW5zaWduZWQgbG9uZyktTUFYX0VSUk5PKWAuIE5vdywgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBmb3IgdGhlIHNwZWNpZmljIGNhc2Ugd2hlcmUgYHhgIGlzIGBFUlJfUFRSKDApYC4gSW4gdGhpcyBzY2VuYXJpbywgYHhgIGlzIGVmZmVjdGl2ZWx5IHplcm8uIFBsdWdnaW5nIHRoYXQgaW4sIHdlIGdldCBgMCAmZ3Q7PSAtTUFYX0VSUk5PYC4gVGhhdCYjMzk7cyBmYWxzZS4gU28sIGBJU19FUlIoRVJSX1BUUigwKSlgIGlzIGZhbHNlLCBhbmQgbGlrZXdpc2UgYElTX0VSUihOVUxMKWAgaXMgZmFsc2UuIFRoaXMgbWVhbnMgYHRyZi0mZ3Q7cnhfc2tiID0gRVJSX1BUUigwKWAgYW5kIGB0cmYtJmd0O3J4X3NrYiA9IE5VTExgIGFyZSwgZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsICppZGVudGljYWwqIGluIHRoZSByZXN1bHRpbmcgYmVoYXZpb3IuIEl0JiMzOTtzIGEgYml0IG9mIGEgY29kZSBzbWVsbCB1c2luZyBgRVJSX1BUUmAgZm9yIGEgemVyby12YWx1ZSwgc2luY2UgYEVSUl9QVFJgIGlzIGludGVuZGVkIHRvIHNpZ25hbCBhbiBlcnJvciBjb25kaXRpb24sIG5vdCBhIHZhbGlkLCBudWxsLWVxdWl2YWxlbnQgdmFsdWUuIFRoaXMgcGF0Y2ggYWltcyB0byBjbGVhbiB0aGF0IHVwLgoKV2FpdCwgaXMgdGhhdCBpdD8gSSBiZXR0ZXIgZG91YmxlLWNoZWNrIHRoZSBlbnRpcmUgZGlmZiwganVzdCB0byBiZSB0aG9yb3VnaC4gT2theSwgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGNoYW5nZSBibG9jazoKCmBgYGMKQEAgLTkzOCw3ICYjNDM7OTM4LDcgQEAgc3RhdGljIGlycXJldHVybl90IHRyZjc5NzBhX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiAJCQlpZiAoIXRyZi0mZ3Q7dGltZW91dCkgewogCQkJCXRyZi0mZ3Q7aWdub3JlX3RpbWVvdXQgPQogCQkJCSAgICAhY2FuY2VsX2RlbGF5ZWRfd29yaygmYW1wO3RyZi0mZ3Q7dGltZW91dF93b3JrKTsKLQkJCQl0cmYtJmd0O3J4X3NrYiA9IEVSUl9QVFIoMCk7CiYjNDM7CQkJCXRyZi0mZ3Q7cnhfc2tiID0gTlVMTDsKIAkJCQl0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7CiAJCQkJYnJlYWs7CiAJCQl9CmBgYAoKWWVwLCB0aGF0JiMzOTtzIHRoZSAqb25seSogY2hhbmdlLiBTbywgdGhlcmUgaXMgbm8gZnVuY3Rpb25hbCBkaWZmZXJlbmNlLiBUaGlzIGlzIHB1cmVseSBhIGNsZWFudXAgcGF0Y2ggYW5kIGRlY29yYXRpdmUgY2hhbmdlIHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LiBUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGBFUlJfUFRSKDApYCB3aXRoIGBOVUxMYC4gU2luY2UgYEVSUl9QVFIoMClgIGV2YWx1YXRlcyB0byBgKHZvaWQgKikwYCAod2hpY2ggaXMgYE5VTExgKSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdy4gSXQgaXMgcHVyZWx5IGEgY29kZSBjbGVhbnVwIHRvIHJlbW92ZSBjb25mdXNpbmcgdXNhZ2Ugb2YgdGhlIGBFUlJfUFRSYCBtYWNyby4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGBFUlJfUFRSKDApYCB3aXRoIGBOVUxMYC4gU2luY2UgYEVSUl9QVFIoMClgIGV2YWx1YXRlcyB0byBgKHZvaWQgKikwYCAod2hpY2ggaXMgYE5VTExgKSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdy4gSXQgaXMgcHVyZWx5IGEgY29kZSBjbGVhbnVwIHRvIHJlbW92ZSBjb25mdXNpbmcgdXNhZ2Ugb2YgdGhlIGBFUlJfUFRSYCBtYWNyby4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODoxNjowMy40OTYzODkyOTNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzYyNzU5MTYwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYEVSUl9QVFIoMClgIHdpdGggYE5VTExgLiBTaW5jZSBgRVJSX1BUUigwKWAgZXZhbHVhdGVzIHRvIGAodm9pZCAqKTBgICh3aGljaCBpcyBgTlVMTGApLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LiBJdCBpcyBwdXJlbHkgYSBjb2RlIGNsZWFudXAgdG8gcmVtb3ZlIGNvbmZ1c2luZyB1c2FnZSBvZiB0aGUgYEVSUl9QVFJgIG1hY3JvLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDg6MTY6MDMuNDk2Mzk2OTMzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTc1MjUwODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxMWRiMjkwMWVkZGNjZTU0NDg1MTFjY2VkN2VjZmNlMmI1Njg1OTY1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDYgMDg6MTY6MDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvdHJmNzk3MGEuYyBiL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcXG5pbmRleCAwOGMyN2JiNDM4YjU5Ny4uN2FkZGYyNDNjNmYxNmIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xcbisrKyBiL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcXG5AQCAtOTM4LDcgKzkzOCw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCB0cmY3OTcwYV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxcbiBcXHRcXHRcXHRpZiAoIXRyZi1cXHUwMDNldGltZW91dCkge1xcbiBcXHRcXHRcXHRcXHR0cmYtXFx1MDAzZWlnbm9yZV90aW1lb3V0ID1cXG4gXFx0XFx0XFx0XFx0ICAgICFjYW5jZWxfZGVsYXllZF93b3JrKFxcdTAwMjZ0cmYtXFx1MDAzZXRpbWVvdXRfd29yayk7XFxuLVxcdFxcdFxcdFxcdHRyZi1cXHUwMDNlcnhfc2tiID0gRVJSX1BUUigwKTtcXG4rXFx0XFx0XFx0XFx0dHJmLVxcdTAwM2VyeF9za2IgPSBOVUxMO1xcbiBcXHRcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XFxuIFxcdFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA4OjE2OjAzLjkxNDgyMTczMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyMDkxNTIzMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGBFUlJfUFRSKDApYCB3aXRoIGBOVUxMYC4gU2luY2UgYEVSUl9QVFIoMClgIGV2YWx1YXRlcyB0byBgKHZvaWQgKikwYCAod2hpY2ggaXMgYE5VTExgKSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdy4gSXQgaXMgcHVyZWx5IGEgY29kZSBjbGVhbnVwIHRvIHJlbW92ZSBjb25mdXNpbmcgdXNhZ2Ugb2YgdGhlIGBFUlJfUFRSYCBtYWNyby5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTFkYjI5MDFlZGRjY2U1NDQ4NTExY2NlZDdlY2ZjZTJiNTY4NTk2NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDYgMDg6MTY6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jIGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuaW5kZXggMDhjMjdiYjQzOGI1OTcuLjdhZGRmMjQzYzZmMTZiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuKysrIGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuQEAgLTkzOCw3ICs5MzgsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgdHJmNzk3MGFfaXJxKGludCBpcnEsIHZvaWQgKmRldl9pZClcbiBcdFx0XHRpZiAoIXRyZi1cdTAwM2V0aW1lb3V0KSB7XG4gXHRcdFx0XHR0cmYtXHUwMDNlaWdub3JlX3RpbWVvdXQgPVxuIFx0XHRcdFx0ICAgICFjYW5jZWxfZGVsYXllZF93b3JrKFx1MDAyNnRyZi1cdTAwM2V0aW1lb3V0X3dvcmspO1xuLVx0XHRcdFx0dHJmLVx1MDAzZXJ4X3NrYiA9IEVSUl9QVFIoMCk7XG4rXHRcdFx0XHR0cmYtXHUwMDNlcnhfc2tiID0gTlVMTDtcbiBcdFx0XHRcdHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0odHJmKTtcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA4OjE2OjAzLjkxNDgyMzc2MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5NzQ0MDI2MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgU3VidGxlIE5GQyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZmMvdHJmNzk3MGEuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgaW4gYHRyZjc5NzBhX2lycWA6IHRoZSBjb2RlJ3Mgc3dpdGNoaW5nIGB0cmYtXHUwMDNlcnhfc2tiYCBmcm9tIGBFUlJfUFRSKDApYCB0byBgTlVMTGAuIEluaXRpYWxseSwgSSdtIHRoaW5raW5nLCBcIklzIHRoaXMgYWN0dWFsbHkgYSBmdW5jdGlvbmFsIGNoYW5nZT8gYEVSUl9QVFIoMClgICppcyogYE5VTExgLCBpc24ndCBpdD9cIlxuXG5XYWl0IGEgbWludXRlLCBsZXQncyBicmVhayB0aGlzIGRvd24uIGBFUlJfUFRSKDApYCBpcyAqdGVjaG5pY2FsbHkqIGEgYCh2b2lkICopMGAsIHdoaWNoLCB5ZXMsIGlzIHRoZSBzYW1lIGFzIGBOVUxMYC4gQnV0LCBpcyBpdCAqZXhhY3RseSogYE5VTExgPyBJIG5lZWQgdG8gYmUgc3VyZSBhYm91dCB0aGUgc2VtYW50aWNzIGhlcmUuIExldCdzIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBFUlJfUFRSYCBpbiBgaW5jbHVkZS9saW51eC9lcnIuaGA6XG5cbmBgYGNcbnN0YXRpYyBpbmxpbmUgdm9pZCAqIF9fbXVzdF9jaGVjayBFUlJfUFRSKGxvbmcgZXJyb3IpXG57XG5cdHJldHVybiAodm9pZCAqKSBlcnJvcjtcbn1cbmBgYFxuXG5SaWdodCwgc28gYEVSUl9QVFIoMClgIGlzIHNpbXBseSBjYXN0aW5nIGAwYCB0byBhIGB2b2lkKmAsIHNvIGl0J3MgYSBgTlVMTGAgcG9pbnRlci4gT2theSwgc28gZmFyLCBpdCAqc2VlbXMqIGxpa2UgdGhpcyBpcyBqdXN0IGEgY2xlYW51cC4gQnV0LCBJIGtub3cgYmV0dGVyIHRoYW4gdG8ganVtcCB0byBjb25jbHVzaW9ucy5cblxuVGhlIGtleSBpcyBpZiB0aGlzIGlzIHVzZWQgZWxzZXdoZXJlLCBsZXQncyBkb3VibGUgY2hlY2sgaG93IGB0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtYCBpcyB1c2luZyBpdCwgc3BlY2lmaWNhbGx5IHRoaXMgY29kZTpcblxuYGBgY1xuc3RhdGljIHZvaWQgdHJmNzk3MGFfc2VuZF91cHN0cmVhbShzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbntcblx0ZGV2X2tmcmVlX3NrYl9hbnkodHJmLVx1MDAzZXJ4X3NrYik7XG5cdHRyZi1cdTAwM2VyeF9za2IgPSBOVUxMO1xuLi4uXG5gYGBcblxuQWgsIGhlcmUgaXQgaXM6IGBkZXZfa2ZyZWVfc2tiX2FueSh0cmYtXHUwMDNlcnhfc2tiKWAuIE5vdywgaWYgYHRyZi1cdTAwM2VyeF9za2JgICp3YXMqIGBFUlJfUFRSKDApYCwgaXQncyBub3cgYE5VTExgLiBBbmQgYGRldl9rZnJlZV9za2JfYW55KE5VTEwpYCBpcyBhIG5vLW9wLCByaWdodD8gU28sIHRoaXMgY29uZmlybXMgdGhhdCBpdCBzZWVtcyB0aGUgY29kZSBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudC5cblxuSSBzdGlsbCB3YW50IHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGF0IG5vIG90aGVyIGNvZGUgcGF0aHMgZGVwZW5kIG9uIHNvbWUgc3BlY2lmaWMgYmVoYXZpb3Igb2YgYEVSUl9QVFIoMClgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhpcyBpc24ndCB1c2VkIGFueXdoZXJlIGVsc2UgYmV5b25kIGB0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtYC4gSSdsbCBoYXZlIHRvIHRob3JvdWdobHkgY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZm9yIGFueSBwb3RlbnRpYWwgc3VidGxlIGltcGFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg2NSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA4OjE2OjExLjg4OTIyODE4NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDM5ODQ1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL3RyZjc5NzBhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvdHJmNzk3MGEuYz02MTc9c3RhdGljIGludCB0cmY3OTcwYV9tb2RlX2RldGVjdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnJmX3RlY2gpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY0OS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY1MDpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjUxLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9Njc4PXN0YXRpYyB2b2lkIHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZXJybm8pXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY4Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY4NzpcXHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODgtfVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz03ODM9c3RhdGljIHZvaWQgdHJmNzk3MGFfZHJhaW5fZmlmbyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggc3RhdHVzKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NTMtXFx0aWYgKHN0YXR1cyA9PSBUUkY3OTcwQV9JUlFfU1RBVFVTX1NSWCkge1xcdC8qIFJlY2VpdmUgY29tcGxldGUgKi9cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg1NDpcXHRcXHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NTUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz04NjU9c3RhdGljIGlycXJldHVybl90IHRyZjc5NzBhX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk0MS1cXHRcXHRcXHRcXHR0cmYtXFx1MDAzZXJ4X3NrYiA9IE5VTEw7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NDI6XFx0XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTQzLVxcdFxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODoxNjoxMS45NDk2MzE0MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODU3OTYyMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIEZ1bmN0aW9uOiBgdHJmNzk3MGFfc2VuZF91cHN0cmVhbWAqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcyBgdHJmNzk3MGFfc2VuZF91cHN0cmVhbWAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBjb25zaWRlciBjb250ZXh0LiBJJ20gYXNzdW1pbmcgdGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIGFuIFJGSUQgZHJpdmVyLCBsaWtlbHkgZm9yIHRoZSBUUkY3OTcwQSBJQywgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLiBUaGF0IHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCBsb3ctbGV2ZWwgY29tbXVuaWNhdGlvbiBhbmQgZGF0YSB0cmFuc21pc3Npb24sIHByb2JhYmx5IG92ZXIgU1BJIG9yIGEgc2ltaWxhciBpbnRlcmZhY2UuXG5cbk15IGZpcnN0IHF1ZXN0aW9ucyBpbW1lZGlhdGVseSByZXZvbHZlIGFyb3VuZCB0aGUgZnVuY3Rpb24ncyBwdXJwb3NlOiBJcyB0aGlzIHRoZSBwcmltYXJ5IHNlbmQgZnVuY3Rpb24/IERvZXMgaXQgaGFuZGxlIHBhY2tldCBmcmFtaW5nLCBlcnJvciBjb3JyZWN0aW9uIChDUkM/KSwgYW5kIHRyYW5zbWlzc2lvbiB0aW1pbmc/IFdoYXQgYXJlIHRoZSBpbnB1dCBwYXJhbWV0ZXJzPyBJJ20gYW50aWNpcGF0aW5nIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gc2VuZCwgYSBsZW5ndGggcGFyYW1ldGVyLCBhbmQgcG90ZW50aWFsbHkgb3B0aW9ucyBmbGFncyBmb3IgdGhpbmdzIGxpa2UgcG93ZXIgbGV2ZWwsIG1vZHVsYXRpb24gdHlwZSwgb3IgZXZlbiB0aW1lb3V0IHZhbHVlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGZsZXhpYmxlIHRoaXMgZnVuY3Rpb24gaXMsIGFuZCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgY29tbXVuaWNhdGlvbiBlcnJvcnMgLSBlc3BlY2lhbGx5IGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIG5vaXN5IFJGIGVudmlyb25tZW50LlxuXG5JJ20gYWxzbyB3b25kZXJpbmcgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJmYWNlcyB3aXRoIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgb2YgdGhlIFRSRjc5NzBBLiBEb2VzIGl0IGJsb2NrIHVudGlsIHRoZSB0cmFuc21pc3Npb24gaXMgY29tcGxldGUsIG9yIGRvZXMgaXQgdXRpbGl6ZSBpbnRlcnJ1cHRzIGZvciBhc3luY2hyb25vdXMgb3BlcmF0aW9uPyBJZiB0aGUgbGF0dGVyLCBob3cgZG9lcyBpdCBtYW5hZ2UgdGhlIGJ1ZmZlciBhbmQgZW5zdXJlIGRhdGEgaW50ZWdyaXR5IHRocm91Z2hvdXQgdGhlIHRyYW5zbWl0IHByb2Nlc3M/IEkgbmVlZCB0byBsb29rIGZvciBhbnkgbXV0ZXhlcyBvciBzZW1hcGhvcmVzIHRoYXQgbWlnaHQgYmUgdXNlZCBmb3Igc3luY2hyb25pemF0aW9uLCBlc3BlY2lhbGx5IGlmIG11bHRpcGxlIHRocmVhZHMgb3IgcHJvY2Vzc2VzIG1pZ2h0IGJlIGludGVyYWN0aW5nIHdpdGggdGhlIGRyaXZlci5cblxuRmluYWxseSwgSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHBvdGVudGlhbCBkZWJ1Z2dpbmcgcG9pbnRzLiBXaGF0IGFyZSB0aGUgZXJyb3IgY29kZXMgdGhhdCBhcmUgdXNlZD8gQXJlIHRoZXJlIGFueSBjbGVhciBkZWJ1ZyBtZXNzYWdlcyBJIGNhbiBlbmFibGU/IEFuZCBjcml0aWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBoYW5kbGVzIHBvdGVudGlhbCB0cmFuc21pc3Npb24gZmFpbHVyZXMuIERvZXMgaXQgaGF2ZSByZXRyeSBsb2dpYywgb3IgZG9lcyBpdCBzaW1wbHkgcmV0dXJuIGFuIGVycm9yIGNvZGUgYmFjayB0byB0aGUgY2FsbGVyPyBJJ20gbWVudGFsbHkgc3RhcnRpbmcgdG8gZm9ybXVsYXRlIHRoZSB0ZXN0IHNjZW5hcmlvcyBJJ2xsIG5lZWQgdG8gcnVuIHRvIHZhbGlkYXRlIHRoaXMgZnVuY3Rpb24ncyBiZWhhdmlvciB1bmRlciBkaWZmZXJlbnQgY29uZGl0aW9ucy4gSSBuZWVkIHRvIGxvb2sgZm9yIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgYnVmZmVyIG92ZXJmbG93cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ5MCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA4OjE2OjE2LjIzNTQyOTIzNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0Mjk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25mYy90cmY3OTcwYS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY0NSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY0NTpcXHRcXHQqcmZfdGVjaCA9IHRlY2g7XFxuIDY0NjpcXHRcXG4gNjQ3OlxcdFxcdHJldHVybiByZXQ7XFxuIDY0ODpcXHR9XFxuIDY0OTpcXHRcXG4gNjUwOlxcdHN0YXRpYyB2b2lkIHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0oc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuIDY1MTpcXHR7XFxuIDY1MjpcXHRcXHRkZXZfa2ZyZWVfc2tiX2FueSh0cmYtXFx1MDAzZXR4X3NrYik7XFxuIDY1MzpcXHRcXHR0cmYtXFx1MDAzZXR4X3NrYiA9IE5VTEw7XFxuIDY1NDpcXHRcXG4gNjU1OlxcdFxcdGlmICh0cmYtXFx1MDAzZXJ4X3NrYiBcXHUwMDI2XFx1MDAyNiAhSVNfRVJSKHRyZi1cXHUwMDNlcnhfc2tiKSBcXHUwMDI2XFx1MDAyNiAhdHJmLVxcdTAwM2VhYm9ydGluZylcXG4gNjU2OlxcdFxcdFxcdHByaW50X2hleF9kdW1wX2RlYnVnKFxcXCJ0cmY3OTcwYSByeCBkYXRhOiBcXFwiLCBEVU1QX1BSRUZJWF9OT05FLFxcbiA2NTc6XFx0XFx0XFx0XFx0XFx0ICAgICAxNiwgMSwgdHJmLVxcdTAwM2VyeF9za2ItXFx1MDAzZWRhdGEsIHRyZi1cXHUwMDNlcnhfc2tiLVxcdTAwM2VsZW4sXFxuIDY1ODpcXHRcXHRcXHRcXHRcXHQgICAgIGZhbHNlKTtcXG4gNjU5OlxcdFxcbiA2NjA6XFx0XFx0dHJmLVxcdTAwM2VzdGF0ZSA9IFRSRjc5NzBBX1NUX0lETEU7XFxuIDY2MTpcXHRcXG4gNjYyOlxcdFxcdGlmICh0cmYtXFx1MDAzZWFib3J0aW5nKSB7XFxuIDY2MzpcXHRcXHRcXHRkZXZfZGJnKHRyZi1cXHUwMDNlZGV2LCBcXFwiQWJvcnQgcHJvY2VzcyBjb21wbGV0ZVxcXFxuXFxcIik7XFxuIDY2NDpcXHRcXG4gNjY1OlxcdFxcdFxcdGlmICghSVNfRVJSKHRyZi1cXHUwMDNlcnhfc2tiKSkge1xcbiA2NjY6XFx0XFx0XFx0XFx0a2ZyZWVfc2tiKHRyZi1cXHUwMDNlcnhfc2tiKTtcXG4gNjY3OlxcdFxcdFxcdFxcdHRyZi1cXHUwMDNlcnhfc2tiID0gRVJSX1BUUigtRUNBTkNFTEVEKTtcXG4gNjY4OlxcdFxcdFxcdH1cXG4gNjY5OlxcdFxcbiA2NzA6XFx0XFx0XFx0dHJmLVxcdTAwM2VhYm9ydGluZyA9IGZhbHNlO1xcbiA2NzE6XFx0XFx0fVxcbiA2NzI6XFx0XFxuIDY3MzpcXHRcXHR0cmYtXFx1MDAzZWNiKHRyZi1cXHUwMDNlZGRldiwgdHJmLVxcdTAwM2VjYl9hcmcsIHRyZi1cXHUwMDNlcnhfc2tiKTtcXG4gNjc0OlxcdFxcbiA2NzU6XFx0XFx0dHJmLVxcdTAwM2VyeF9za2IgPSBOVUxMO1xcbiA2NzY6XFx0fVxcbiA2Nzc6XFx0XFxuIDY3ODpcXHRzdGF0aWMgdm9pZCB0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbShzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IGVycm5vKVxcbiA2Nzk6XFx0e1xcbiA2ODA6XFx0XFx0ZGV2X2RiZyh0cmYtXFx1MDAzZWRldiwgXFxcIkVycm9yIC0gc3RhdGU6ICVkLCBlcnJubzogJWRcXFxcblxcXCIsIHRyZi1cXHUwMDNlc3RhdGUsIGVycm5vKTtcXG4gNjgxOlxcdFxcbiA2ODI6XFx0XFx0Y2FuY2VsX2RlbGF5ZWRfd29yayhcXHUwMDI2dHJmLVxcdTAwM2V0aW1lb3V0X3dvcmspO1xcbiA2ODM6XFx0XFxuIDY4NDpcXHRcXHRrZnJlZV9za2IodHJmLVxcdTAwM2VyeF9za2IpO1xcbiA2ODU6XFx0XFx0dHJmLVxcdTAwM2VyeF9za2IgPSBFUlJfUFRSKGVycm5vKTtcXG4gNjg2OlxcdFxcbiA2ODc6XFx0XFx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xcbiA2ODg6XFx0fVxcbiA2ODk6XFx0XFxuIDY5MDpcXHRzdGF0aWMgaW50IHRyZjc5NzBhX3RyYW5zbWl0KHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiA2OTE6XFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgbGVuLCBjb25zdCB1OCAqcHJlZml4LFxcbiA2OTI6XFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgcHJlZml4X2xlbilcXG4gNjkzOlxcdHtcXG4gNjk0OlxcdFxcdHN0cnVjdCBzcGlfdHJhbnNmZXIgdFsyXTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDg6MTY6MTYuMjM1NTczNzM1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAyNzg1ODE3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBgRVJSX1BUUigwKWAgdnMuIGBOVUxMYCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSwgYW5kIGl0J3MgdXNpbmcgYEVSUl9QVFIoMClgIHRvIHNldCBgdHJmLVx1MDAzZXJ4X3NrYmAuIE15IGZpcnN0IHRob3VnaHQgaXM6IHdhaXQsIGlzbid0IGBFUlJfUFRSKDApYCBlc3NlbnRpYWxseSB0aGUgc2FtZSBhcyBgTlVMTGA/IExldCBtZSBkb3VibGUtY2hlY2suIFl1cCwgYEVSUl9QVFIoMClgIGV4cGFuZHMgdG8gYCh2b2lkICopMGAsIHdoaWNoIGlzIHRoZSBkZWZpbml0aW9uIG9mIGBOVUxMYC4gU28sIGZ1bmN0aW9uYWxseSwgYHRyZi1cdTAwM2VyeF9za2IgPSBFUlJfUFRSKDApO2AgaXMgaWRlbnRpY2FsIHRvIGB0cmYtXHUwMDNlcnhfc2tiID0gTlVMTDtgLlxuXG5CdXQgaXMgdGhlcmUgc29tZSBzdWJ0bGUgc2lkZSBlZmZlY3QgSSdtIG1pc3Npbmc/IElzIGBFUlJfUFRSKDApYCBpbnRlbmRlZCB0byB0cmlnZ2VyIHNvbWUga2luZCBvZiBzcGFyc2Ugd2FybmluZyBvciBzdGF0aWMgYW5hbHlzaXMgdG9vbD8gVGhhdCdzIHRoZSBvbmx5IHRoaW5nIEkgY2FuIHRoaW5rIG9mLiBBaCwgcmlnaHQsIEkgcmVtZW1iZXIgbm93LiBVc2luZyBgRVJSX1BUUigwKWAgd2hlbiB5b3UgKnNob3VsZCogdXNlIGBOVUxMYCwgb3IsIHdvcnNlLCBqdXN0IHVzaW5nIGBFUlJfUFRSKDApYCBpbnN0ZWFkIG9mIGEgbWVhbmluZ2Z1bCBlcnJvciBwb2ludGVyLCAqaXMqIGJhZCBwcmFjdGljZS4gSXQncyB1c3VhbGx5IGEgc3R5bGlzdGljIGlzc3VlIGFuZCBjYW4gbGVhZCB0byBjb25mdXNpbmcgY29kZS5cblxuTGV0J3Mgc2VlIGlmIHRoaXMgY3JlYXRlcyBhIHByb2JsZW0uIExvb2tpbmcgYXQgYHRyZjc5NzBhX3NlbmRfdXBzdHJlYW1gLCBpdCBjaGVja3MgYCFJU19FUlIodHJmLVx1MDAzZXJ4X3NrYilgLiBPa2F5LCBzbyBgSVNfRVJSKE5VTEwpYCByZXR1cm5zIGZhbHNlLiBBbmQgc2luY2UgYEVSUl9QVFIoMClgIGV2YWx1YXRlcyB0byBgTlVMTGAsIGBJU19FUlIoRVJSX1BUUigwKSlgICphbHNvKiByZXR1cm5zIGZhbHNlLiBUaGVyZWZvcmUsIHRoZXJlJ3MgYWJzb2x1dGVseSBubyBmdW5jdGlvbmFsIGRpZmZlcmVuY2UgaGVyZS4gVGhlIGNvZGUgd2lsbCBiZWhhdmUgZXhhY3RseSB0aGUgc2FtZSB3YXkuIFRoZSBjaGVjayBpcyBlcXVpdmFsZW50IHJlZ2FyZGxlc3MuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgcXVpY2tseSByZXZpZXcgdGhlIGBJU19FUlJgIG1hY3JvIGRlZmluaXRpb24uLi4gWWVwLCBpdCdzIG9wZXJhdGluZyBhcyBJIGV4cGVjdC4gU28sIHRoZXJlIGlzIG5vIGVycm9yIGluIHRoZSBjb2RlLiBJdCBpcyBtZXJlbHkgYSBzdHlsaXN0aWMgY29uY2Vybi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgxMywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA4OjE2OjIyLjI2MzQzMzk0OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDE0NDI2NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RhdGljIGlubGluZSBib29sIElTX0VSUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2Vyci5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODoxNjoyMi4zMjM1OTMwMjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDQ4OTQyOTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipOYXZpZ2F0aW5nIHRoZSBMYWJ5cmludGggb2YgS2VybmVsIERlZmluaXRpb25zKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byB3cmFwIG15IGhlYWQgYXJvdW5kIHRoaXMgZXJyb3IgaGFuZGxpbmcsIGFuZCBJJ20gcHJldHR5IHN1cmUgSSd2ZSBzZWVuIGBJU19FUlJgIGZsb2F0aW5nIGFyb3VuZCBiZWZvcmUuIFdoZXJlIGRpZCBJIHNlZSB0aGF0PyAqQWgsIHJpZ2h0ISogSXQncyBkZWZpbmVkIGluIGBpbmNsdWRlL2xpbnV4L2Vyci5oYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQncyBhIGZ1bmRhbWVudGFsIGVycm9yIGNoZWNraW5nIG1hY3JvLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBpdCBkb2VzIGV4YWN0bHksIGJ1dCBhdCBsZWFzdCBJIGtub3cgd2hlcmUgdG8gbG9vayBpZiBJIHdhbnQgdG8gZGlnIGRlZXBlciBpbnRvIGl0cyBpbXBsZW1lbnRhdGlvbiBvciBkb2N1bWVudGF0aW9uLiBLbm93aW5nIHdoZXJlIGNvcmUga2VybmVsIGRlZmluaXRpb25zIHJlc2lkZSBpcyBhbHdheXMgdGhlIGZpcnN0IHN0ZXAsIHNvIEkgaGF2ZSBhIG1lbnRhbCBub3RlIGZvciB0aGUgbmV4dCBpbnZlc3RpZ2F0aW9uIGludG8gZXJyb3IgcmV0dXJucy4gTm93IHRvIHByb2NlZWQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0OTMsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODoxNjoyNS4zNzI1Mzg2MDFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MjYzNzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlZmluZSBJU19FUlJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9lcnIuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2Vyci5oLTI3LSAqL1xcbmluY2x1ZGUvbGludXgvZXJyLmg6Mjg6I2RlZmluZSBJU19FUlJfVkFMVUUoeCkgdW5saWtlbHkoKHVuc2lnbmVkIGxvbmcpKHZvaWQgKikoeCkgXFx1MDAzZT0gKHVuc2lnbmVkIGxvbmcpLU1BWF9FUlJOTylcXG5pbmNsdWRlL2xpbnV4L2Vyci5oLTI5LVxcbi0tXFxuaW5jbHVkZS9saW51eC9lcnIuaD03Nj1zdGF0aWMgaW5saW5lIGJvb2wgX19tdXN0X2NoZWNrIElTX0VSUihfX2ZvcmNlIGNvbnN0IHZvaWQgKnB0cilcXG4tLVxcbmluY2x1ZGUvbGludXgvZXJyLmgtODEtLyogUmVhZCBhbiBlcnJvciBwb2ludGVyIGZyb20gdGhlIHBlcmNwdSBhZGRyZXNzIHNwYWNlLiAqL1xcbmluY2x1ZGUvbGludXgvZXJyLmg6ODI6I2RlZmluZSBJU19FUlJfUENQVShwdHIpIChJU19FUlIoKGNvbnN0IHZvaWQgKikoX19mb3JjZSBjb25zdCB1bnNpZ25lZCBsb25nKShwdHIpKSlcXG5pbmNsdWRlL2xpbnV4L2Vyci5oLTgzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODoxNjoyNS40MzE4MTA4MjdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY5NjYyNDMxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogSVNfRVJSIElucXVpcnkqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmlyc3Qgc3RlcCBpcyBjbGVhcjogd2UncmUgZGl2aW5nIGludG8gYElTX0VSUmAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAqd2hhdCBjb250ZXh0IGFyZSB3ZSBsb29raW5nIGF0IGhlcmU/KiBJcyB0aGlzIEMsIEMrKywgUnVzdCwgYSBzY3JpcHRpbmcgbGFuZ3VhZ2U/IFRoZSBzcGVjaWZpYyBzeW50YXggYW5kIGJlaGF2aW9yIG9mIGBJU19FUlJgIHZhcmllcyBxdWl0ZSBhIGJpdCBkZXBlbmRpbmcgb24gdGhlIGVudmlyb25tZW50LiBJJ20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggdGhlIGNvbW1vbiBpbXBsZW1lbnRhdGlvbnMgaW4gdGhvc2UgZGlmZmVyZW50IGxhbmd1YWdlcy5cblxuVGhlbiwgbXkgbWluZCByYWNlcyB0byBwb3RlbnRpYWwgY29uc2lkZXJhdGlvbnM6IElzIGl0IGEgbWFjcm8/IEEgZnVuY3Rpb24/IEEgYnVpbHQtaW4gZmVhdHVyZT8gS25vd2luZyB0aGF0IHdpbGwgaW5mbHVlbmNlIGhvdyBJIGFwcHJvYWNoIHRoZSBhbmFseXNpcy4gQWxzbywgKndoYXQgaXMgdGhlIHN5c3RlbSBhdHRlbXB0aW5nIHRvIHNpZ25hbD8qIElzIGl0IGFuIGVycm9yIGNoZWNrIHdpdGhpbiBhIGxvdy1sZXZlbCByb3V0aW5lLCBvciBhIG1vcmUgZ2VuZXJhbGl6ZWQgYXBwcm9hY2ggdG8gaGFuZGxpbmcgZXhjZXB0aW9ucz8gRGlmZmVyZW50IHNjZW5hcmlvcyBjYWxsIGZvciBkaWZmZXJpbmcgbGV2ZWxzIG9mIHNjcnV0aW55LiBJIHdvdWxkIGxvb2sgYXQgdGhlIG1hY3JvIGV4cGFuc2lvbiBvZiBgSVNfRVJSYCBpZiBJIGhhZCBhY2Nlc3MgdG8gYSBwcmVwcm9jZXNzb3IsIG9yIHRoZSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBhbmQgYXNzb2NpYXRlZCBlcnJvciB0eXBlcyBpZiBhdmFpbGFibGUuXG5cbk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUuIFdoYXQgZXJyb3IgaGFuZGxpbmcgcGFyYWRpZ20gaXMgYmVpbmcgdXNlZD8gSXMgaXQgZXhjZXB0aW9uLWJhc2VkPyBFcnJvciBjb2RlLWJhc2VkPyBBcmUgdGhleSByZXR1cm5pbmcgcG9pbnRlcnM/IEEgdW5pb24gb3IgZW51bT8gSSB3b3VsZCBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoaXMgYmFzZWQgb24gaG93IHRoZSBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlZCB0aGUgZXJyb3Igc3RhdGUgaGFuZGxlcyByZXR1cm4gdmFsdWVzLiBUaGlzIHdpbGwgZ2l2ZSBhIGdvb2QgaW5kaWNhdG9yIG9mIHdoYXQgSSBzaG91bGQgZXhwZWN0IGBJU19FUlJgIHRvIGV2YWx1YXRlIHRvLiBJcyBpdCBqdXN0IGEgYm9vbGVhbiBjaGVjaywgb3IgaXMgaXQgbW9yZSBjb21wbGV4IHRoYW4gdGhhdCwgcGVyaGFwcyBpbnNwZWN0aW5nIGVycm9yIGNvZGVzIGVtYmVkZGVkIGluIGRhdGEgc3RydWN0dXJlcz8gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSBudWFuY2VzIG9mIHRoZSB1bmRlcmx5aW5nIGVycm9yIHJlcHJlc2VudGF0aW9uLlxuXG5JbiB0aGUgY2FzZSBvZiBtb3JlIGNvbXBsaWNhdGVkIHJlcHJlc2VudGF0aW9ucywgSSBrbm93IHRoYXQgY2FyZWZ1bCBhbmFseXNpcyBvZiB0aGUgYWN0dWFsIGRlZmluaXRpb25zIGlzIGNyaXRpY2FsLiBBIG1pc3BsYWNlZCBicmFjZSBvciBhIG1pc3VuZGVyc3RhbmRpbmcgb2YgYSBiaXRmaWVsZCBjYW4gaGF2ZSBzaWduaWZpY2FudCByZXBlcmN1c3Npb25zLiBVbmRlcnN0YW5kaW5nIHRoZSB1bmRlcmx5aW5nIHJlcHJlc2VudGF0aW9uIG9mIGVycm9ycywgaWYgaXQncyBtb3JlIHRoYW4ganVzdCBhIHNpbXBsZSBib29sZWFuIGZsYWcsIGlzIGtleS5cblxuSW4gZXNzZW5jZSwgSSdtIGZvcm1pbmcgYSBtZW50YWwgY2hlY2tsaXN0OiAqKmxhbmd1YWdlIGNvbnRleHQsIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIGVycm9yIGhhbmRsaW5nIHN0eWxlLCBhbmQgaW1tZWRpYXRlIHN1cnJvdW5kaW5nIGNvZGUqKi4gSSdtIHJlYWR5IHRvIGRpZyBpbnRvIHRoZSBhY3R1YWwgY29kZSBvciBkb2N1bWVudGF0aW9uIHRvIHJlZmluZSBteSBhc3N1bXB0aW9ucyBhbmQgYW5zd2VyIHRob3NlIHF1ZXN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg4NiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDg6MTY6MzAuMTI4NDM3OTUxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5MTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluY2x1ZGUvbGludXgvZXJyLmhcIixcbiAgXCJGaXJzdExpbmVcIjogNzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNzA6XFx0XFxuICA3MTpcXHQvKipcXG4gIDcyOlxcdCAqIElTX0VSUiAtIERldGVjdCBhbiBlcnJvciBwb2ludGVyLlxcbiAgNzM6XFx0ICogQHB0cjogVGhlIHBvaW50ZXIgdG8gY2hlY2suXFxuICA3NDpcXHQgKiBSZXR1cm46IHRydWUgaWYgQHB0ciBpcyBhbiBlcnJvciBwb2ludGVyLCBmYWxzZSBvdGhlcndpc2UuXFxuICA3NTpcXHQgKi9cXG4gIDc2OlxcdHN0YXRpYyBpbmxpbmUgYm9vbCBfX211c3RfY2hlY2sgSVNfRVJSKF9fZm9yY2UgY29uc3Qgdm9pZCAqcHRyKVxcbiAgNzc6XFx0e1xcbiAgNzg6XFx0XFx0cmV0dXJuIElTX0VSUl9WQUxVRSgodW5zaWduZWQgbG9uZylwdHIpO1xcbiAgNzk6XFx0fVxcbiAgODA6XFx0XFxuICA4MTpcXHQvKiBSZWFkIGFuIGVycm9yIHBvaW50ZXIgZnJvbSB0aGUgcGVyY3B1IGFkZHJlc3Mgc3BhY2UuICovXFxuICA4MjpcXHQjZGVmaW5lIElTX0VSUl9QQ1BVKHB0cikgKElTX0VSUigoY29uc3Qgdm9pZCAqKShfX2ZvcmNlIGNvbnN0IHVuc2lnbmVkIGxvbmcpKHB0cikpKVxcbiAgODM6XFx0XFxuICA4NDpcXHQvKipcXG4gIDg1OlxcdCAqIElTX0VSUl9PUl9OVUxMIC0gRGV0ZWN0IGFuIGVycm9yIHBvaW50ZXIgb3IgYSBudWxsIHBvaW50ZXIuXFxuICA4NjpcXHQgKiBAcHRyOiBUaGUgcG9pbnRlciB0byBjaGVjay5cXG4gIDg3OlxcdCAqXFxuICA4ODpcXHQgKiBMaWtlIElTX0VSUigpLCBidXQgYWxzbyByZXR1cm5zIHRydWUgZm9yIGEgbnVsbCBwb2ludGVyLlxcbiAgODk6XFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA4OjE2OjMwLjEyODUxOTA1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5OTU0MTgyMTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ29kZSBDbGVhbnVwIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGV4cGVydCBleWUgaG9uZXMgaW4gb24gdGhhdCBgSVNfRVJSX1ZBTFVFYCBtYWNyby4gSXQgYm9pbHMgZG93biB0byBgdW5saWtlbHkoKHVuc2lnbmVkIGxvbmcpKHZvaWQgKikoeCkgXHUwMDNlPSAodW5zaWduZWQgbG9uZyktTUFYX0VSUk5PKWAuIE5vdywgbGV0J3MgYnJlYWsgdGhpcyBkb3duIGZvciB0aGUgc3BlY2lmaWMgY2FzZSB3aGVyZSBgeGAgaXMgYEVSUl9QVFIoMClgLiBJbiB0aGlzIHNjZW5hcmlvLCBgeGAgaXMgZWZmZWN0aXZlbHkgemVyby4gUGx1Z2dpbmcgdGhhdCBpbiwgd2UgZ2V0IGAwIFx1MDAzZT0gLU1BWF9FUlJOT2AuIFRoYXQncyBmYWxzZS4gU28sIGBJU19FUlIoRVJSX1BUUigwKSlgIGlzIGZhbHNlLCBhbmQgbGlrZXdpc2UgYElTX0VSUihOVUxMKWAgaXMgZmFsc2UuIFRoaXMgbWVhbnMgYHRyZi1cdTAwM2VyeF9za2IgPSBFUlJfUFRSKDApYCBhbmQgYHRyZi1cdTAwM2VyeF9za2IgPSBOVUxMYCBhcmUsIGZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCAqaWRlbnRpY2FsKiBpbiB0aGUgcmVzdWx0aW5nIGJlaGF2aW9yLiBJdCdzIGEgYml0IG9mIGEgY29kZSBzbWVsbCB1c2luZyBgRVJSX1BUUmAgZm9yIGEgemVyby12YWx1ZSwgc2luY2UgYEVSUl9QVFJgIGlzIGludGVuZGVkIHRvIHNpZ25hbCBhbiBlcnJvciBjb25kaXRpb24sIG5vdCBhIHZhbGlkLCBudWxsLWVxdWl2YWxlbnQgdmFsdWUuIFRoaXMgcGF0Y2ggYWltcyB0byBjbGVhbiB0aGF0IHVwLlxuXG5XYWl0LCBpcyB0aGF0IGl0PyBJIGJldHRlciBkb3VibGUtY2hlY2sgdGhlIGVudGlyZSBkaWZmLCBqdXN0IHRvIGJlIHRob3JvdWdoLiBPa2F5LCBsZXQncyBsb29rIGF0IHRoZSBjaGFuZ2UgYmxvY2s6XG5cbmBgYGNcbkBAIC05MzgsNyArOTM4LDcgQEAgc3RhdGljIGlycXJldHVybl90IHRyZjc5NzBhX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpXG4gXHRcdFx0aWYgKCF0cmYtXHUwMDNldGltZW91dCkge1xuIFx0XHRcdFx0dHJmLVx1MDAzZWlnbm9yZV90aW1lb3V0ID1cbiBcdFx0XHRcdCAgICAhY2FuY2VsX2RlbGF5ZWRfd29yayhcdTAwMjZ0cmYtXHUwMDNldGltZW91dF93b3JrKTtcbi1cdFx0XHRcdHRyZi1cdTAwM2VyeF9za2IgPSBFUlJfUFRSKDApO1xuK1x0XHRcdFx0dHJmLVx1MDAzZXJ4X3NrYiA9IE5VTEw7XG4gXHRcdFx0XHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XG4gXHRcdFx0XHRicmVhaztcbiBcdFx0XHR9XG5gYGBcblxuWWVwLCB0aGF0J3MgdGhlICpvbmx5KiBjaGFuZ2UuIFNvLCB0aGVyZSBpcyBubyBmdW5jdGlvbmFsIGRpZmZlcmVuY2UuIFRoaXMgaXMgcHVyZWx5IGEgY2xlYW51cCBwYXRjaCBhbmQgZGVjb3JhdGl2ZSBjaGFuZ2UgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuIFRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGBmYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2NzAsIk91dHB1dFRva2VucyI6OTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODoxNjozNy4xMjM5NDE4MzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDU4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBgRVJSX1BUUigwKWAgd2l0aCBgTlVMTGAuIFNpbmNlIGBFUlJfUFRSKDApYCBldmFsdWF0ZXMgdG8gYCh2b2lkICopMGAgKHdoaWNoIGlzIGBOVUxMYCksIHRoaXMgY2hhbmdlIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuIEl0IGlzIHB1cmVseSBhIGNvZGUgY2xlYW51cCB0byByZW1vdmUgY29uZnVzaW5nIHVzYWdlIG9mIHRoZSBgRVJSX1BUUmAgbWFjcm8uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBgRVJSX1BUUigwKWAgd2l0aCBgTlVMTGAuIFNpbmNlIGBFUlJfUFRSKDApYCBldmFsdWF0ZXMgdG8gYCh2b2lkICopMGAgKHdoaWNoIGlzIGBOVUxMYCksIHRoaXMgY2hhbmdlIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuIEl0IGlzIHB1cmVseSBhIGNvZGUgY2xlYW51cCB0byByZW1vdmUgY29uZnVzaW5nIHVzYWdlIG9mIHRoZSBgRVJSX1BUUmAgbWFjcm8uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtwgm5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-06 08:02:39 +0000 UTC FinishedAt: 2026-07-06 08:16:38 +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+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGBFUlJfUFRSKDApYCB3aXRoIGBOVUxMYC4gU2luY2UgYEVSUl9QVFIoMClgIGV2YWx1YXRlcyB0byBgKHZvaWQgKikwYCAod2hpY2ggaXMgYE5VTExgKSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdy4gSXQgaXMgcHVyZWx5IGEgY29kZSBjbGVhbnVwIHRvIHJlbW92ZSBjb25mdXNpbmcgdXNhZ2Ugb2YgdGhlIGBFUlJfUFRSYCBtYWNyby4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDg6MTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxMWRiMjkwMWVkZGNjZTU0NDg1MTFjY2VkN2VjZmNlMmI1Njg1OTY1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAwODoxNjowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jIGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuaW5kZXggMDhjMjdiYjQzOGI1OTcuLjdhZGRmMjQzYzZmMTZiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuQEAgLTkzOCw3ICYjNDM7OTM4LDcgQEAgc3RhdGljIGlycXJldHVybl90IHRyZjc5NzBhX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpXG4gXHRcdFx0aWYgKCF0cmYtXHUwMDNldGltZW91dCkge1xuIFx0XHRcdFx0dHJmLVx1MDAzZWlnbm9yZV90aW1lb3V0ID1cbiBcdFx0XHRcdCAgICAhY2FuY2VsX2RlbGF5ZWRfd29yayhcdTAwMjZ0cmYtXHUwMDNldGltZW91dF93b3JrKTtcbi1cdFx0XHRcdHRyZi1cdTAwM2VyeF9za2IgPSBFUlJfUFRSKDApO1xuJiM0MztcdFx0XHRcdHRyZi1cdTAwM2VyeF9za2IgPSBOVUxMO1xuIFx0XHRcdFx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjE2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGBFUlJfUFRSKDApYCB3aXRoIGBOVUxMYC4gU2luY2UgYEVSUl9QVFIoMClgIGV2YWx1YXRlcyB0byBgKHZvaWQgKikwYCAod2hpY2ggaXMgYE5VTExgKSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdy4gSXQgaXMgcHVyZWx5IGEgY29kZSBjbGVhbnVwIHRvIHJlbW92ZSBjb25mdXNpbmcgdXNhZ2Ugb2YgdGhlIGBFUlJfUFRSYCBtYWNyby4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDExZGIyOTAxZWRkY2NlNTQ0ODUxMWNjZWQ3ZWNmY2UyYjU2ODU5NjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCA2IDA4OjE2OjAyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvdHJmNzk3MGEuYyBiL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmMKaW5kZXggMDhjMjdiYjQzOGI1OTcuLjdhZGRmMjQzYzZmMTZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmMKQEAgLTkzOCw3ICYjNDM7OTM4LDcgQEAgc3RhdGljIGlycXJldHVybl90IHRyZjc5NzBhX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiAJCQlpZiAoIXRyZi0mZ3Q7dGltZW91dCkgewogCQkJCXRyZi0mZ3Q7aWdub3JlX3RpbWVvdXQgPQogCQkJCSAgICAhY2FuY2VsX2RlbGF5ZWRfd29yaygmYW1wO3RyZi0mZ3Q7dGltZW91dF93b3JrKTsKLQkJCQl0cmYtJmd0O3J4X3NrYiA9IEVSUl9QVFIoMCk7CiYjNDM7CQkJCXRyZi0mZ3Q7cnhfc2tiID0gTlVMTDsKIAkJCQl0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7CiAJCQkJYnJlYWs7CiAJCQl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NjUKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA0MzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgU3VidGxlIE5GQyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25mYy90cmY3OTcwYS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiBgdHJmNzk3MGFfaXJxYDogdGhlIGNvZGUmIzM5O3Mgc3dpdGNoaW5nIGB0cmYtJmd0O3J4X3NrYmAgZnJvbSBgRVJSX1BUUigwKWAgdG8gYE5VTExgLiBJbml0aWFsbHksIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7SXMgdGhpcyBhY3R1YWxseSBhIGZ1bmN0aW9uYWwgY2hhbmdlPyBgRVJSX1BUUigwKWAgKmlzKiBgTlVMTGAsIGlzbiYjMzk7dCBpdD8mIzM0OwoKV2FpdCBhIG1pbnV0ZSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYEVSUl9QVFIoMClgIGlzICp0ZWNobmljYWxseSogYSBgKHZvaWQgKikwYCwgd2hpY2gsIHllcywgaXMgdGhlIHNhbWUgYXMgYE5VTExgLiBCdXQsIGlzIGl0ICpleGFjdGx5KiBgTlVMTGA/IEkgbmVlZCB0byBiZSBzdXJlIGFib3V0IHRoZSBzZW1hbnRpY3MgaGVyZS4gTGV0JiMzOTtzIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBFUlJfUFRSYCBpbiBgaW5jbHVkZS9saW51eC9lcnIuaGA6CgpgYGBjCnN0YXRpYyBpbmxpbmUgdm9pZCAqIF9fbXVzdF9jaGVjayBFUlJfUFRSKGxvbmcgZXJyb3IpCnsKCXJldHVybiAodm9pZCAqKSBlcnJvcjsKfQpgYGAKClJpZ2h0LCBzbyBgRVJSX1BUUigwKWAgaXMgc2ltcGx5IGNhc3RpbmcgYDBgIHRvIGEgYHZvaWQqYCwgc28gaXQmIzM5O3MgYSBgTlVMTGAgcG9pbnRlci4gT2theSwgc28gZmFyLCBpdCAqc2VlbXMqIGxpa2UgdGhpcyBpcyBqdXN0IGEgY2xlYW51cC4gQnV0LCBJIGtub3cgYmV0dGVyIHRoYW4gdG8ganVtcCB0byBjb25jbHVzaW9ucy4KClRoZSBrZXkgaXMgaWYgdGhpcyBpcyB1c2VkIGVsc2V3aGVyZSwgbGV0JiMzOTtzIGRvdWJsZSBjaGVjayBob3cgYHRyZjc5NzBhX3NlbmRfdXBzdHJlYW1gIGlzIHVzaW5nIGl0LCBzcGVjaWZpY2FsbHkgdGhpcyBjb2RlOgoKYGBgYwpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHN0cnVjdCB0cmY3OTcwYSAqdHJmKQp7CglkZXZfa2ZyZWVfc2tiX2FueSh0cmYtJmd0O3J4X3NrYik7Cgl0cmYtJmd0O3J4X3NrYiA9IE5VTEw7Ci4uLgpgYGAKCkFoLCBoZXJlIGl0IGlzOiBgZGV2X2tmcmVlX3NrYl9hbnkodHJmLSZndDtyeF9za2IpYC4gTm93LCBpZiBgdHJmLSZndDtyeF9za2JgICp3YXMqIGBFUlJfUFRSKDApYCwgaXQmIzM5O3Mgbm93IGBOVUxMYC4gQW5kIGBkZXZfa2ZyZWVfc2tiX2FueShOVUxMKWAgaXMgYSBuby1vcCwgcmlnaHQ/IFNvLCB0aGlzIGNvbmZpcm1zIHRoYXQgaXQgc2VlbXMgdGhlIGNvZGUgaXMgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQuCgpJIHN0aWxsIHdhbnQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHRoYXQgbm8gb3RoZXIgY29kZSBwYXRocyBkZXBlbmQgb24gc29tZSBzcGVjaWZpYyBiZWhhdmlvciBvZiBgRVJSX1BUUigwKWAuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGlzIGlzbiYjMzk7dCB1c2VkIGFueXdoZXJlIGVsc2UgYmV5b25kIGB0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtYC4gSSYjMzk7bGwgaGF2ZSB0byB0aG9yb3VnaGx5IGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb2RlIGZvciBhbnkgcG90ZW50aWFsIHN1YnRsZSBpbXBhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHJmNzk3MGFfc2VuZF91cHN0cmVhbSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3RyZjc5NzBhLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvdHJmNzk3MGEuYz02MTc9c3RhdGljIGludCB0cmY3OTcwYV9tb2RlX2RldGVjdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnJmX3RlY2gpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NDktXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY1MDpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02NTEte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9Njc4PXN0YXRpYyB2b2lkIHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZXJybm8pXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODYtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY4NzpcdHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0odHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjg4LX1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTc4Mz1zdGF0aWMgdm9pZCB0cmY3OTcwYV9kcmFpbl9maWZvKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCBzdGF0dXMpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NTMtXHRpZiAoc3RhdHVzID09IFRSRjc5NzBBX0lSUV9TVEFUVVNfU1JYKSB7XHQvKiBSZWNlaXZlIGNvbXBsZXRlICovXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg1NDpcdFx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NTUtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTg2NT1zdGF0aWMgaXJxcmV0dXJuX3QgdHJmNzk3MGFfaXJxKGludCBpcnEsIHZvaWQgKmRldl9pZClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk0MS1cdFx0XHRcdHRyZi1cdTAwM2VyeF9za2IgPSBOVUxMO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NDI6XHRcdFx0XHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk0My1cdFx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0OTAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoZSBGdW5jdGlvbjogYHRyZjc5NzBhX3NlbmRfdXBzdHJlYW1gKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgdHJmNzk3MGFfc2VuZF91cHN0cmVhbWAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBjb25zaWRlciBjb250ZXh0LiBJJiMzOTttIGFzc3VtaW5nIHRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiBhbiBSRklEIGRyaXZlciwgbGlrZWx5IGZvciB0aGUgVFJGNzk3MEEgSUMsIGdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbi4gVGhhdCBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGxvdy1sZXZlbCBjb21tdW5pY2F0aW9uIGFuZCBkYXRhIHRyYW5zbWlzc2lvbiwgcHJvYmFibHkgb3ZlciBTUEkgb3IgYSBzaW1pbGFyIGludGVyZmFjZS4KCk15IGZpcnN0IHF1ZXN0aW9ucyBpbW1lZGlhdGVseSByZXZvbHZlIGFyb3VuZCB0aGUgZnVuY3Rpb24mIzM5O3MgcHVycG9zZTogSXMgdGhpcyB0aGUgcHJpbWFyeSBzZW5kIGZ1bmN0aW9uPyBEb2VzIGl0IGhhbmRsZSBwYWNrZXQgZnJhbWluZywgZXJyb3IgY29ycmVjdGlvbiAoQ1JDPyksIGFuZCB0cmFuc21pc3Npb24gdGltaW5nPyBXaGF0IGFyZSB0aGUgaW5wdXQgcGFyYW1ldGVycz8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgYSBidWZmZXIgY29udGFpbmluZyB0aGUgZGF0YSB0byBzZW5kLCBhIGxlbmd0aCBwYXJhbWV0ZXIsIGFuZCBwb3RlbnRpYWxseSBvcHRpb25zIGZsYWdzIGZvciB0aGluZ3MgbGlrZSBwb3dlciBsZXZlbCwgbW9kdWxhdGlvbiB0eXBlLCBvciBldmVuIHRpbWVvdXQgdmFsdWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgZmxleGlibGUgdGhpcyBmdW5jdGlvbiBpcywgYW5kIGhvdyBpdCBoYW5kbGVzIHBvdGVudGlhbCBjb21tdW5pY2F0aW9uIGVycm9ycyAtIGVzcGVjaWFsbHkgaWYgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIG5vaXN5IFJGIGVudmlyb25tZW50LgoKSSYjMzk7bSBhbHNvIHdvbmRlcmluZyBob3cgdGhpcyBmdW5jdGlvbiBpbnRlcmZhY2VzIHdpdGggdGhlIGludGVycnVwdCBoYW5kbGluZyBvZiB0aGUgVFJGNzk3MEEuIERvZXMgaXQgYmxvY2sgdW50aWwgdGhlIHRyYW5zbWlzc2lvbiBpcyBjb21wbGV0ZSwgb3IgZG9lcyBpdCB1dGlsaXplIGludGVycnVwdHMgZm9yIGFzeW5jaHJvbm91cyBvcGVyYXRpb24/IElmIHRoZSBsYXR0ZXIsIGhvdyBkb2VzIGl0IG1hbmFnZSB0aGUgYnVmZmVyIGFuZCBlbnN1cmUgZGF0YSBpbnRlZ3JpdHkgdGhyb3VnaG91dCB0aGUgdHJhbnNtaXQgcHJvY2Vzcz8gSSBuZWVkIHRvIGxvb2sgZm9yIGFueSBtdXRleGVzIG9yIHNlbWFwaG9yZXMgdGhhdCBtaWdodCBiZSB1c2VkIGZvciBzeW5jaHJvbml6YXRpb24sIGVzcGVjaWFsbHkgaWYgbXVsdGlwbGUgdGhyZWFkcyBvciBwcm9jZXNzZXMgbWlnaHQgYmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZHJpdmVyLgoKRmluYWxseSwgSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBwb3RlbnRpYWwgZGVidWdnaW5nIHBvaW50cy4gV2hhdCBhcmUgdGhlIGVycm9yIGNvZGVzIHRoYXQgYXJlIHVzZWQ/IEFyZSB0aGVyZSBhbnkgY2xlYXIgZGVidWcgbWVzc2FnZXMgSSBjYW4gZW5hYmxlPyBBbmQgY3JpdGljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZnVuY3Rpb24gaGFuZGxlcyBwb3RlbnRpYWwgdHJhbnNtaXNzaW9uIGZhaWx1cmVzLiBEb2VzIGl0IGhhdmUgcmV0cnkgbG9naWMsIG9yIGRvZXMgaXQgc2ltcGx5IHJldHVybiBhbiBlcnJvciBjb2RlIGJhY2sgdG8gdGhlIGNhbGxlcj8gSSYjMzk7bSBtZW50YWxseSBzdGFydGluZyB0byBmb3JtdWxhdGUgdGhlIHRlc3Qgc2NlbmFyaW9zIEkmIzM5O2xsIG5lZWQgdG8gcnVuIHRvIHZhbGlkYXRlIHRoaXMgZnVuY3Rpb24mIzM5O3MgYmVoYXZpb3IgdW5kZXIgZGlmZmVyZW50IGNvbmRpdGlvbnMuIEkgbmVlZCB0byBsb29rIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIGJ1ZmZlciBvdmVyZmxvd3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25mYy90cmY3OTcwYS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2NDU6XHRcdCpyZl90ZWNoID0gdGVjaDtcbiA2NDY6XHRcbiA2NDc6XHRcdHJldHVybiByZXQ7XG4gNjQ4Olx0fVxuIDY0OTpcdFxuIDY1MDpcdHN0YXRpYyB2b2lkIHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0oc3RydWN0IHRyZjc5NzBhICp0cmYpXG4gNjUxOlx0e1xuIDY1MjpcdFx0ZGV2X2tmcmVlX3NrYl9hbnkodHJmLVx1MDAzZXR4X3NrYik7XG4gNjUzOlx0XHR0cmYtXHUwMDNldHhfc2tiID0gTlVMTDtcbiA2NTQ6XHRcbiA2NTU6XHRcdGlmICh0cmYtXHUwMDNlcnhfc2tiIFx1MDAyNlx1MDAyNiAhSVNfRVJSKHRyZi1cdTAwM2VyeF9za2IpIFx1MDAyNlx1MDAyNiAhdHJmLVx1MDAzZWFib3J0aW5nKVxuIDY1NjpcdFx0XHRwcmludF9oZXhfZHVtcF9kZWJ1ZyhcJiMzNDt0cmY3OTcwYSByeCBkYXRhOiBcJiMzNDssIERVTVBfUFJFRklYX05PTkUsXG4gNjU3Olx0XHRcdFx0XHQgICAgIDE2LCAxLCB0cmYtXHUwMDNlcnhfc2tiLVx1MDAzZWRhdGEsIHRyZi1cdTAwM2VyeF9za2ItXHUwMDNlbGVuLFxuIDY1ODpcdFx0XHRcdFx0ICAgICBmYWxzZSk7XG4gNjU5Olx0XG4gNjYwOlx0XHR0cmYtXHUwMDNlc3RhdGUgPSBUUkY3OTcwQV9TVF9JRExFO1xuIDY2MTpcdFxuIDY2MjpcdFx0aWYgKHRyZi1cdTAwM2VhYm9ydGluZykge1xuIDY2MzpcdFx0XHRkZXZfZGJnKHRyZi1cdTAwM2VkZXYsIFwmIzM0O0Fib3J0IHByb2Nlc3MgY29tcGxldGVcXG5cJiMzNDspO1xuIDY2NDpcdFxuIDY2NTpcdFx0XHRpZiAoIUlTX0VSUih0cmYtXHUwMDNlcnhfc2tiKSkge1xuIDY2NjpcdFx0XHRcdGtmcmVlX3NrYih0cmYtXHUwMDNlcnhfc2tiKTtcbiA2Njc6XHRcdFx0XHR0cmYtXHUwMDNlcnhfc2tiID0gRVJSX1BUUigtRUNBTkNFTEVEKTtcbiA2Njg6XHRcdFx0fVxuIDY2OTpcdFxuIDY3MDpcdFx0XHR0cmYtXHUwMDNlYWJvcnRpbmcgPSBmYWxzZTtcbiA2NzE6XHRcdH1cbiA2NzI6XHRcbiA2NzM6XHRcdHRyZi1cdTAwM2VjYih0cmYtXHUwMDNlZGRldiwgdHJmLVx1MDAzZWNiX2FyZywgdHJmLVx1MDAzZXJ4X3NrYik7XG4gNjc0Olx0XG4gNjc1Olx0XHR0cmYtXHUwMDNlcnhfc2tiID0gTlVMTDtcbiA2NzY6XHR9XG4gNjc3Olx0XG4gNjc4Olx0c3RhdGljIHZvaWQgdHJmNzk3MGFfc2VuZF9lcnJfdXBzdHJlYW0oc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBlcnJubylcbiA2Nzk6XHR7XG4gNjgwOlx0XHRkZXZfZGJnKHRyZi1cdTAwM2VkZXYsIFwmIzM0O0Vycm9yIC0gc3RhdGU6ICVkLCBlcnJubzogJWRcXG5cJiMzNDssIHRyZi1cdTAwM2VzdGF0ZSwgZXJybm8pO1xuIDY4MTpcdFxuIDY4MjpcdFx0Y2FuY2VsX2RlbGF5ZWRfd29yayhcdTAwMjZ0cmYtXHUwMDNldGltZW91dF93b3JrKTtcbiA2ODM6XHRcbiA2ODQ6XHRcdGtmcmVlX3NrYih0cmYtXHUwMDNlcnhfc2tiKTtcbiA2ODU6XHRcdHRyZi1cdTAwM2VyeF9za2IgPSBFUlJfUFRSKGVycm5vKTtcbiA2ODY6XHRcbiA2ODc6XHRcdHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0odHJmKTtcbiA2ODg6XHR9XG4gNjg5Olx0XG4gNjkwOlx0c3RhdGljIGludCB0cmY3OTcwYV90cmFuc21pdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiA2OTE6XHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBsZW4sIGNvbnN0IHU4ICpwcmVmaXgsXG4gNjkyOlx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgcHJlZml4X2xlbilcbiA2OTM6XHR7XG4gNjk0Olx0XHRzdHJ1Y3Qgc3BpX3RyYW5zZmVyIHRbMl07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDg6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgxMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBgRVJSX1BUUigwKWAgdnMuIGBOVUxMYCoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBhbmQgaXQmIzM5O3MgdXNpbmcgYEVSUl9QVFIoMClgIHRvIHNldCBgdHJmLSZndDtyeF9za2JgLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiB3YWl0LCBpc24mIzM5O3QgYEVSUl9QVFIoMClgIGVzc2VudGlhbGx5IHRoZSBzYW1lIGFzIGBOVUxMYD8gTGV0IG1lIGRvdWJsZS1jaGVjay4gWXVwLCBgRVJSX1BUUigwKWAgZXhwYW5kcyB0byBgKHZvaWQgKikwYCwgd2hpY2ggaXMgdGhlIGRlZmluaXRpb24gb2YgYE5VTExgLiBTbywgZnVuY3Rpb25hbGx5LCBgdHJmLSZndDtyeF9za2IgPSBFUlJfUFRSKDApO2AgaXMgaWRlbnRpY2FsIHRvIGB0cmYtJmd0O3J4X3NrYiA9IE5VTEw7YC4KCkJ1dCBpcyB0aGVyZSBzb21lIHN1YnRsZSBzaWRlIGVmZmVjdCBJJiMzOTttIG1pc3Npbmc/IElzIGBFUlJfUFRSKDApYCBpbnRlbmRlZCB0byB0cmlnZ2VyIHNvbWUga2luZCBvZiBzcGFyc2Ugd2FybmluZyBvciBzdGF0aWMgYW5hbHlzaXMgdG9vbD8gVGhhdCYjMzk7cyB0aGUgb25seSB0aGluZyBJIGNhbiB0aGluayBvZi4gQWgsIHJpZ2h0LCBJIHJlbWVtYmVyIG5vdy4gVXNpbmcgYEVSUl9QVFIoMClgIHdoZW4geW91ICpzaG91bGQqIHVzZSBgTlVMTGAsIG9yLCB3b3JzZSwganVzdCB1c2luZyBgRVJSX1BUUigwKWAgaW5zdGVhZCBvZiBhIG1lYW5pbmdmdWwgZXJyb3IgcG9pbnRlciwgKmlzKiBiYWQgcHJhY3RpY2UuIEl0JiMzOTtzIHVzdWFsbHkgYSBzdHlsaXN0aWMgaXNzdWUgYW5kIGNhbiBsZWFkIHRvIGNvbmZ1c2luZyBjb2RlLgoKTGV0JiMzOTtzIHNlZSBpZiB0aGlzIGNyZWF0ZXMgYSBwcm9ibGVtLiBMb29raW5nIGF0IGB0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtYCwgaXQgY2hlY2tzIGAhSVNfRVJSKHRyZi0mZ3Q7cnhfc2tiKWAuIE9rYXksIHNvIGBJU19FUlIoTlVMTClgIHJldHVybnMgZmFsc2UuIEFuZCBzaW5jZSBgRVJSX1BUUigwKWAgZXZhbHVhdGVzIHRvIGBOVUxMYCwgYElTX0VSUihFUlJfUFRSKDApKWAgKmFsc28qIHJldHVybnMgZmFsc2UuIFRoZXJlZm9yZSwgdGhlcmUmIzM5O3MgYWJzb2x1dGVseSBubyBmdW5jdGlvbmFsIGRpZmZlcmVuY2UgaGVyZS4gVGhlIGNvZGUgd2lsbCBiZWhhdmUgZXhhY3RseSB0aGUgc2FtZSB3YXkuIFRoZSBjaGVjayBpcyBlcXVpdmFsZW50IHJlZ2FyZGxlc3MuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIHF1aWNrbHkgcmV2aWV3IHRoZSBgSVNfRVJSYCBtYWNybyBkZWZpbml0aW9uLi4uIFllcCwgaXQmIzM5O3Mgb3BlcmF0aW5nIGFzIEkgZXhwZWN0LiBTbywgdGhlcmUgaXMgbm8gZXJyb3IgaW4gdGhlIGNvZGUuIEl0IGlzIG1lcmVseSBhIHN0eWxpc3RpYyBjb25jZXJuLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhdGljIGlubGluZSBib29sIElTX0VSUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvZXJyLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0OTMKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipOYXZpZ2F0aW5nIHRoZSBMYWJ5cmludGggb2YgS2VybmVsIERlZmluaXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIHdyYXAgbXkgaGVhZCBhcm91bmQgdGhpcyBlcnJvciBoYW5kbGluZywgYW5kIEkmIzM5O20gcHJldHR5IHN1cmUgSSYjMzk7dmUgc2VlbiBgSVNfRVJSYCBmbG9hdGluZyBhcm91bmQgYmVmb3JlLiBXaGVyZSBkaWQgSSBzZWUgdGhhdD8gKkFoLCByaWdodCEqIEl0JiMzOTtzIGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgvZXJyLmhgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGVycm9yIGNoZWNraW5nIG1hY3JvLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBpdCBkb2VzIGV4YWN0bHksIGJ1dCBhdCBsZWFzdCBJIGtub3cgd2hlcmUgdG8gbG9vayBpZiBJIHdhbnQgdG8gZGlnIGRlZXBlciBpbnRvIGl0cyBpbXBsZW1lbnRhdGlvbiBvciBkb2N1bWVudGF0aW9uLiBLbm93aW5nIHdoZXJlIGNvcmUga2VybmVsIGRlZmluaXRpb25zIHJlc2lkZSBpcyBhbHdheXMgdGhlIGZpcnN0IHN0ZXAsIHNvIEkgaGF2ZSBhIG1lbnRhbCBub3RlIGZvciB0aGUgbmV4dCBpbnZlc3RpZ2F0aW9uIGludG8gZXJyb3IgcmV0dXJucy4gTm93IHRvIHByb2NlZWQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmluZSBJU19FUlImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2Vyci5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvZXJyLmgtMjctICovXG5pbmNsdWRlL2xpbnV4L2Vyci5oOjI4OiNkZWZpbmUgSVNfRVJSX1ZBTFVFKHgpIHVubGlrZWx5KCh1bnNpZ25lZCBsb25nKSh2b2lkICopKHgpIFx1MDAzZT0gKHVuc2lnbmVkIGxvbmcpLU1BWF9FUlJOTylcbmluY2x1ZGUvbGludXgvZXJyLmgtMjktXG4tLVxuaW5jbHVkZS9saW51eC9lcnIuaD03Nj1zdGF0aWMgaW5saW5lIGJvb2wgX19tdXN0X2NoZWNrIElTX0VSUihfX2ZvcmNlIGNvbnN0IHZvaWQgKnB0cilcbi0tXG5pbmNsdWRlL2xpbnV4L2Vyci5oLTgxLS8qIFJlYWQgYW4gZXJyb3IgcG9pbnRlciBmcm9tIHRoZSBwZXJjcHUgYWRkcmVzcyBzcGFjZS4gKi9cbmluY2x1ZGUvbGludXgvZXJyLmg6ODI6I2RlZmluZSBJU19FUlJfUENQVShwdHIpIChJU19FUlIoKGNvbnN0IHZvaWQgKikoX19mb3JjZSBjb25zdCB1bnNpZ25lZCBsb25nKShwdHIpKSlcbmluY2x1ZGUvbGludXgvZXJyLmgtODMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4ODYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IElTX0VSUiBJbnF1aXJ5KioKCkFscmlnaHQsIHNvIHRoZSBmaXJzdCBzdGVwIGlzIGNsZWFyOiB3ZSYjMzk7cmUgZGl2aW5nIGludG8gYElTX0VSUmAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAqd2hhdCBjb250ZXh0IGFyZSB3ZSBsb29raW5nIGF0IGhlcmU/KiBJcyB0aGlzIEMsIEMmIzQzOyYjNDM7LCBSdXN0LCBhIHNjcmlwdGluZyBsYW5ndWFnZT8gVGhlIHNwZWNpZmljIHN5bnRheCBhbmQgYmVoYXZpb3Igb2YgYElTX0VSUmAgdmFyaWVzIHF1aXRlIGEgYml0IGRlcGVuZGluZyBvbiB0aGUgZW52aXJvbm1lbnQuIEkmIzM5O20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggdGhlIGNvbW1vbiBpbXBsZW1lbnRhdGlvbnMgaW4gdGhvc2UgZGlmZmVyZW50IGxhbmd1YWdlcy4KClRoZW4sIG15IG1pbmQgcmFjZXMgdG8gcG90ZW50aWFsIGNvbnNpZGVyYXRpb25zOiBJcyBpdCBhIG1hY3JvPyBBIGZ1bmN0aW9uPyBBIGJ1aWx0LWluIGZlYXR1cmU/IEtub3dpbmcgdGhhdCB3aWxsIGluZmx1ZW5jZSBob3cgSSBhcHByb2FjaCB0aGUgYW5hbHlzaXMuIEFsc28sICp3aGF0IGlzIHRoZSBzeXN0ZW0gYXR0ZW1wdGluZyB0byBzaWduYWw/KiBJcyBpdCBhbiBlcnJvciBjaGVjayB3aXRoaW4gYSBsb3ctbGV2ZWwgcm91dGluZSwgb3IgYSBtb3JlIGdlbmVyYWxpemVkIGFwcHJvYWNoIHRvIGhhbmRsaW5nIGV4Y2VwdGlvbnM/IERpZmZlcmVudCBzY2VuYXJpb3MgY2FsbCBmb3IgZGlmZmVyaW5nIGxldmVscyBvZiBzY3J1dGlueS4gSSB3b3VsZCBsb29rIGF0IHRoZSBtYWNybyBleHBhbnNpb24gb2YgYElTX0VSUmAgaWYgSSBoYWQgYWNjZXNzIHRvIGEgcHJlcHJvY2Vzc29yLCBvciB0aGUgZnVuY3Rpb24gZGVjbGFyYXRpb24gYW5kIGFzc29jaWF0ZWQgZXJyb3IgdHlwZXMgaWYgYXZhaWxhYmxlLgoKTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgc3Vycm91bmRpbmcgY29kZS4gV2hhdCBlcnJvciBoYW5kbGluZyBwYXJhZGlnbSBpcyBiZWluZyB1c2VkPyBJcyBpdCBleGNlcHRpb24tYmFzZWQ/IEVycm9yIGNvZGUtYmFzZWQ/IEFyZSB0aGV5IHJldHVybmluZyBwb2ludGVycz8gQSB1bmlvbiBvciBlbnVtPyBJIHdvdWxkIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhpcyBiYXNlZCBvbiBob3cgdGhlIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVkIHRoZSBlcnJvciBzdGF0ZSBoYW5kbGVzIHJldHVybiB2YWx1ZXMuIFRoaXMgd2lsbCBnaXZlIGEgZ29vZCBpbmRpY2F0b3Igb2Ygd2hhdCBJIHNob3VsZCBleHBlY3QgYElTX0VSUmAgdG8gZXZhbHVhdGUgdG8uIElzIGl0IGp1c3QgYSBib29sZWFuIGNoZWNrLCBvciBpcyBpdCBtb3JlIGNvbXBsZXggdGhhbiB0aGF0LCBwZXJoYXBzIGluc3BlY3RpbmcgZXJyb3IgY29kZXMgZW1iZWRkZWQgaW4gZGF0YSBzdHJ1Y3R1cmVzPyBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSBudWFuY2VzIG9mIHRoZSB1bmRlcmx5aW5nIGVycm9yIHJlcHJlc2VudGF0aW9uLgoKSW4gdGhlIGNhc2Ugb2YgbW9yZSBjb21wbGljYXRlZCByZXByZXNlbnRhdGlvbnMsIEkga25vdyB0aGF0IGNhcmVmdWwgYW5hbHlzaXMgb2YgdGhlIGFjdHVhbCBkZWZpbml0aW9ucyBpcyBjcml0aWNhbC4gQSBtaXNwbGFjZWQgYnJhY2Ugb3IgYSBtaXN1bmRlcnN0YW5kaW5nIG9mIGEgYml0ZmllbGQgY2FuIGhhdmUgc2lnbmlmaWNhbnQgcmVwZXJjdXNzaW9ucy4gVW5kZXJzdGFuZGluZyB0aGUgdW5kZXJseWluZyByZXByZXNlbnRhdGlvbiBvZiBlcnJvcnMsIGlmIGl0JiMzOTtzIG1vcmUgdGhhbiBqdXN0IGEgc2ltcGxlIGJvb2xlYW4gZmxhZywgaXMga2V5LgoKSW4gZXNzZW5jZSwgSSYjMzk7bSBmb3JtaW5nIGEgbWVudGFsIGNoZWNrbGlzdDogKipsYW5ndWFnZSBjb250ZXh0LCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBlcnJvciBoYW5kbGluZyBzdHlsZSwgYW5kIGltbWVkaWF0ZSBzdXJyb3VuZGluZyBjb2RlKiouIEkmIzM5O20gcmVhZHkgdG8gZGlnIGludG8gdGhlIGFjdHVhbCBjb2RlIG9yIGRvY3VtZW50YXRpb24gdG8gcmVmaW5lIG15IGFzc3VtcHRpb25zIGFuZCBhbnN3ZXIgdGhvc2UgcXVlc3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvZXJyLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDcwOlx0XG4gIDcxOlx0LyoqXG4gIDcyOlx0ICogSVNfRVJSIC0gRGV0ZWN0IGFuIGVycm9yIHBvaW50ZXIuXG4gIDczOlx0ICogQHB0cjogVGhlIHBvaW50ZXIgdG8gY2hlY2suXG4gIDc0Olx0ICogUmV0dXJuOiB0cnVlIGlmIEBwdHIgaXMgYW4gZXJyb3IgcG9pbnRlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuICA3NTpcdCAqL1xuICA3NjpcdHN0YXRpYyBpbmxpbmUgYm9vbCBfX211c3RfY2hlY2sgSVNfRVJSKF9fZm9yY2UgY29uc3Qgdm9pZCAqcHRyKVxuICA3NzpcdHtcbiAgNzg6XHRcdHJldHVybiBJU19FUlJfVkFMVUUoKHVuc2lnbmVkIGxvbmcpcHRyKTtcbiAgNzk6XHR9XG4gIDgwOlx0XG4gIDgxOlx0LyogUmVhZCBhbiBlcnJvciBwb2ludGVyIGZyb20gdGhlIHBlcmNwdSBhZGRyZXNzIHNwYWNlLiAqL1xuICA4MjpcdCNkZWZpbmUgSVNfRVJSX1BDUFUocHRyKSAoSVNfRVJSKChjb25zdCB2b2lkICopKF9fZm9yY2UgY29uc3QgdW5zaWduZWQgbG9uZykocHRyKSkpXG4gIDgzOlx0XG4gIDg0Olx0LyoqXG4gIDg1Olx0ICogSVNfRVJSX09SX05VTEwgLSBEZXRlY3QgYW4gZXJyb3IgcG9pbnRlciBvciBhIG51bGwgcG9pbnRlci5cbiAgODY6XHQgKiBAcHRyOiBUaGUgcG9pbnRlciB0byBjaGVjay5cbiAgODc6XHQgKlxuICA4ODpcdCAqIExpa2UgSVNfRVJSKCksIGJ1dCBhbHNvIHJldHVybnMgdHJ1ZSBmb3IgYSBudWxsIHBvaW50ZXIuXG4gIDg5Olx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2NzAKCQkJCQkJCW91dHB1dDogOTYKCQkJCQkJCXRob3VnaHRzOiAzNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ29kZSBDbGVhbnVwIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBob25lcyBpbiBvbiB0aGF0IGBJU19FUlJfVkFMVUVgIG1hY3JvLiBJdCBib2lscyBkb3duIHRvIGB1bmxpa2VseSgodW5zaWduZWQgbG9uZykodm9pZCAqKSh4KSAmZ3Q7PSAodW5zaWduZWQgbG9uZyktTUFYX0VSUk5PKWAuIE5vdywgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBmb3IgdGhlIHNwZWNpZmljIGNhc2Ugd2hlcmUgYHhgIGlzIGBFUlJfUFRSKDApYC4gSW4gdGhpcyBzY2VuYXJpbywgYHhgIGlzIGVmZmVjdGl2ZWx5IHplcm8uIFBsdWdnaW5nIHRoYXQgaW4sIHdlIGdldCBgMCAmZ3Q7PSAtTUFYX0VSUk5PYC4gVGhhdCYjMzk7cyBmYWxzZS4gU28sIGBJU19FUlIoRVJSX1BUUigwKSlgIGlzIGZhbHNlLCBhbmQgbGlrZXdpc2UgYElTX0VSUihOVUxMKWAgaXMgZmFsc2UuIFRoaXMgbWVhbnMgYHRyZi0mZ3Q7cnhfc2tiID0gRVJSX1BUUigwKWAgYW5kIGB0cmYtJmd0O3J4X3NrYiA9IE5VTExgIGFyZSwgZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsICppZGVudGljYWwqIGluIHRoZSByZXN1bHRpbmcgYmVoYXZpb3IuIEl0JiMzOTtzIGEgYml0IG9mIGEgY29kZSBzbWVsbCB1c2luZyBgRVJSX1BUUmAgZm9yIGEgemVyby12YWx1ZSwgc2luY2UgYEVSUl9QVFJgIGlzIGludGVuZGVkIHRvIHNpZ25hbCBhbiBlcnJvciBjb25kaXRpb24sIG5vdCBhIHZhbGlkLCBudWxsLWVxdWl2YWxlbnQgdmFsdWUuIFRoaXMgcGF0Y2ggYWltcyB0byBjbGVhbiB0aGF0IHVwLgoKV2FpdCwgaXMgdGhhdCBpdD8gSSBiZXR0ZXIgZG91YmxlLWNoZWNrIHRoZSBlbnRpcmUgZGlmZiwganVzdCB0byBiZSB0aG9yb3VnaC4gT2theSwgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGNoYW5nZSBibG9jazoKCmBgYGMKQEAgLTkzOCw3ICYjNDM7OTM4LDcgQEAgc3RhdGljIGlycXJldHVybl90IHRyZjc5NzBhX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiAJCQlpZiAoIXRyZi0mZ3Q7dGltZW91dCkgewogCQkJCXRyZi0mZ3Q7aWdub3JlX3RpbWVvdXQgPQogCQkJCSAgICAhY2FuY2VsX2RlbGF5ZWRfd29yaygmYW1wO3RyZi0mZ3Q7dGltZW91dF93b3JrKTsKLQkJCQl0cmYtJmd0O3J4X3NrYiA9IEVSUl9QVFIoMCk7CiYjNDM7CQkJCXRyZi0mZ3Q7cnhfc2tiID0gTlVMTDsKIAkJCQl0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7CiAJCQkJYnJlYWs7CiAJCQl9CmBgYAoKWWVwLCB0aGF0JiMzOTtzIHRoZSAqb25seSogY2hhbmdlLiBTbywgdGhlcmUgaXMgbm8gZnVuY3Rpb25hbCBkaWZmZXJlbmNlLiBUaGlzIGlzIHB1cmVseSBhIGNsZWFudXAgcGF0Y2ggYW5kIGRlY29yYXRpdmUgY2hhbmdlIHRoYXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LiBUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGBFUlJfUFRSKDApYCB3aXRoIGBOVUxMYC4gU2luY2UgYEVSUl9QVFIoMClgIGV2YWx1YXRlcyB0byBgKHZvaWQgKikwYCAod2hpY2ggaXMgYE5VTExgKSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdy4gSXQgaXMgcHVyZWx5IGEgY29kZSBjbGVhbnVwIHRvIHJlbW92ZSBjb25mdXNpbmcgdXNhZ2Ugb2YgdGhlIGBFUlJfUFRSYCBtYWNyby4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGBFUlJfUFRSKDApYCB3aXRoIGBOVUxMYC4gU2luY2UgYEVSUl9QVFIoMClgIGV2YWx1YXRlcyB0byBgKHZvaWQgKikwYCAod2hpY2ggaXMgYE5VTExgKSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdy4gSXQgaXMgcHVyZWx5IGEgY29kZSBjbGVhbnVwIHRvIHJlbW92ZSBjb25mdXNpbmcgdXNhZ2Ugb2YgdGhlIGBFUlJfUFRSYCBtYWNyby4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODoxNjowMy40OTYzODkyOTNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzYyNzU5MTYwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYEVSUl9QVFIoMClgIHdpdGggYE5VTExgLiBTaW5jZSBgRVJSX1BUUigwKWAgZXZhbHVhdGVzIHRvIGAodm9pZCAqKTBgICh3aGljaCBpcyBgTlVMTGApLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LiBJdCBpcyBwdXJlbHkgYSBjb2RlIGNsZWFudXAgdG8gcmVtb3ZlIGNvbmZ1c2luZyB1c2FnZSBvZiB0aGUgYEVSUl9QVFJgIG1hY3JvLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDg6MTY6MDMuNDk2Mzk2OTMzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTc1MjUwODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxMWRiMjkwMWVkZGNjZTU0NDg1MTFjY2VkN2VjZmNlMmI1Njg1OTY1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDYgMDg6MTY6MDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvdHJmNzk3MGEuYyBiL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcXG5pbmRleCAwOGMyN2JiNDM4YjU5Ny4uN2FkZGYyNDNjNmYxNmIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xcbisrKyBiL2RyaXZlcnMvbmZjL3RyZjc5NzBhLmNcXG5AQCAtOTM4LDcgKzkzOCw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCB0cmY3OTcwYV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxcbiBcXHRcXHRcXHRpZiAoIXRyZi1cXHUwMDNldGltZW91dCkge1xcbiBcXHRcXHRcXHRcXHR0cmYtXFx1MDAzZWlnbm9yZV90aW1lb3V0ID1cXG4gXFx0XFx0XFx0XFx0ICAgICFjYW5jZWxfZGVsYXllZF93b3JrKFxcdTAwMjZ0cmYtXFx1MDAzZXRpbWVvdXRfd29yayk7XFxuLVxcdFxcdFxcdFxcdHRyZi1cXHUwMDNlcnhfc2tiID0gRVJSX1BUUigwKTtcXG4rXFx0XFx0XFx0XFx0dHJmLVxcdTAwM2VyeF9za2IgPSBOVUxMO1xcbiBcXHRcXHRcXHRcXHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XFxuIFxcdFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA4OjE2OjAzLjkxNDgyMTczMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyMDkxNTIzMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGBFUlJfUFRSKDApYCB3aXRoIGBOVUxMYC4gU2luY2UgYEVSUl9QVFIoMClgIGV2YWx1YXRlcyB0byBgKHZvaWQgKikwYCAod2hpY2ggaXMgYE5VTExgKSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdy4gSXQgaXMgcHVyZWx5IGEgY29kZSBjbGVhbnVwIHRvIHJlbW92ZSBjb25mdXNpbmcgdXNhZ2Ugb2YgdGhlIGBFUlJfUFRSYCBtYWNyby5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTFkYjI5MDFlZGRjY2U1NDQ4NTExY2NlZDdlY2ZjZTJiNTY4NTk2NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDYgMDg6MTY6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy90cmY3OTcwYS5jIGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuaW5kZXggMDhjMjdiYjQzOGI1OTcuLjdhZGRmMjQzYzZmMTZiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuKysrIGIvZHJpdmVycy9uZmMvdHJmNzk3MGEuY1xuQEAgLTkzOCw3ICs5MzgsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgdHJmNzk3MGFfaXJxKGludCBpcnEsIHZvaWQgKmRldl9pZClcbiBcdFx0XHRpZiAoIXRyZi1cdTAwM2V0aW1lb3V0KSB7XG4gXHRcdFx0XHR0cmYtXHUwMDNlaWdub3JlX3RpbWVvdXQgPVxuIFx0XHRcdFx0ICAgICFjYW5jZWxfZGVsYXllZF93b3JrKFx1MDAyNnRyZi1cdTAwM2V0aW1lb3V0X3dvcmspO1xuLVx0XHRcdFx0dHJmLVx1MDAzZXJ4X3NrYiA9IEVSUl9QVFIoMCk7XG4rXHRcdFx0XHR0cmYtXHUwMDNlcnhfc2tiID0gTlVMTDtcbiBcdFx0XHRcdHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0odHJmKTtcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA4OjE2OjAzLjkxNDgyMzc2MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5NzQ0MDI2MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgU3VidGxlIE5GQyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZmMvdHJmNzk3MGEuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgaW4gYHRyZjc5NzBhX2lycWA6IHRoZSBjb2RlJ3Mgc3dpdGNoaW5nIGB0cmYtXHUwMDNlcnhfc2tiYCBmcm9tIGBFUlJfUFRSKDApYCB0byBgTlVMTGAuIEluaXRpYWxseSwgSSdtIHRoaW5raW5nLCBcIklzIHRoaXMgYWN0dWFsbHkgYSBmdW5jdGlvbmFsIGNoYW5nZT8gYEVSUl9QVFIoMClgICppcyogYE5VTExgLCBpc24ndCBpdD9cIlxuXG5XYWl0IGEgbWludXRlLCBsZXQncyBicmVhayB0aGlzIGRvd24uIGBFUlJfUFRSKDApYCBpcyAqdGVjaG5pY2FsbHkqIGEgYCh2b2lkICopMGAsIHdoaWNoLCB5ZXMsIGlzIHRoZSBzYW1lIGFzIGBOVUxMYC4gQnV0LCBpcyBpdCAqZXhhY3RseSogYE5VTExgPyBJIG5lZWQgdG8gYmUgc3VyZSBhYm91dCB0aGUgc2VtYW50aWNzIGhlcmUuIExldCdzIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBFUlJfUFRSYCBpbiBgaW5jbHVkZS9saW51eC9lcnIuaGA6XG5cbmBgYGNcbnN0YXRpYyBpbmxpbmUgdm9pZCAqIF9fbXVzdF9jaGVjayBFUlJfUFRSKGxvbmcgZXJyb3IpXG57XG5cdHJldHVybiAodm9pZCAqKSBlcnJvcjtcbn1cbmBgYFxuXG5SaWdodCwgc28gYEVSUl9QVFIoMClgIGlzIHNpbXBseSBjYXN0aW5nIGAwYCB0byBhIGB2b2lkKmAsIHNvIGl0J3MgYSBgTlVMTGAgcG9pbnRlci4gT2theSwgc28gZmFyLCBpdCAqc2VlbXMqIGxpa2UgdGhpcyBpcyBqdXN0IGEgY2xlYW51cC4gQnV0LCBJIGtub3cgYmV0dGVyIHRoYW4gdG8ganVtcCB0byBjb25jbHVzaW9ucy5cblxuVGhlIGtleSBpcyBpZiB0aGlzIGlzIHVzZWQgZWxzZXdoZXJlLCBsZXQncyBkb3VibGUgY2hlY2sgaG93IGB0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtYCBpcyB1c2luZyBpdCwgc3BlY2lmaWNhbGx5IHRoaXMgY29kZTpcblxuYGBgY1xuc3RhdGljIHZvaWQgdHJmNzk3MGFfc2VuZF91cHN0cmVhbShzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbntcblx0ZGV2X2tmcmVlX3NrYl9hbnkodHJmLVx1MDAzZXJ4X3NrYik7XG5cdHRyZi1cdTAwM2VyeF9za2IgPSBOVUxMO1xuLi4uXG5gYGBcblxuQWgsIGhlcmUgaXQgaXM6IGBkZXZfa2ZyZWVfc2tiX2FueSh0cmYtXHUwMDNlcnhfc2tiKWAuIE5vdywgaWYgYHRyZi1cdTAwM2VyeF9za2JgICp3YXMqIGBFUlJfUFRSKDApYCwgaXQncyBub3cgYE5VTExgLiBBbmQgYGRldl9rZnJlZV9za2JfYW55KE5VTEwpYCBpcyBhIG5vLW9wLCByaWdodD8gU28sIHRoaXMgY29uZmlybXMgdGhhdCBpdCBzZWVtcyB0aGUgY29kZSBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudC5cblxuSSBzdGlsbCB3YW50IHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGF0IG5vIG90aGVyIGNvZGUgcGF0aHMgZGVwZW5kIG9uIHNvbWUgc3BlY2lmaWMgYmVoYXZpb3Igb2YgYEVSUl9QVFIoMClgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhpcyBpc24ndCB1c2VkIGFueXdoZXJlIGVsc2UgYmV5b25kIGB0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtYC4gSSdsbCBoYXZlIHRvIHRob3JvdWdobHkgY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZm9yIGFueSBwb3RlbnRpYWwgc3VidGxlIGltcGFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg2NSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA4OjE2OjExLjg4OTIyODE4NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDM5ODQ1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL3RyZjc5NzBhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvdHJmNzk3MGEuYz02MTc9c3RhdGljIGludCB0cmY3OTcwYV9tb2RlX2RldGVjdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnJmX3RlY2gpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY0OS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY1MDpzdGF0aWMgdm9pZCB0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHN0cnVjdCB0cmY3OTcwYSAqdHJmKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjUxLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9Njc4PXN0YXRpYyB2b2lkIHRyZjc5NzBhX3NlbmRfZXJyX3Vwc3RyZWFtKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZXJybm8pXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTY4Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjY4NzpcXHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02ODgtfVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz03ODM9c3RhdGljIHZvaWQgdHJmNzk3MGFfZHJhaW5fZmlmbyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggc3RhdHVzKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NTMtXFx0aWYgKHN0YXR1cyA9PSBUUkY3OTcwQV9JUlFfU1RBVFVTX1NSWCkge1xcdC8qIFJlY2VpdmUgY29tcGxldGUgKi9cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjg1NDpcXHRcXHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04NTUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz04NjU9c3RhdGljIGlycXJldHVybl90IHRyZjc5NzBhX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk0MS1cXHRcXHRcXHRcXHR0cmYtXFx1MDAzZXJ4X3NrYiA9IE5VTEw7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NDI6XFx0XFx0XFx0XFx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTQzLVxcdFxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODoxNjoxMS45NDk2MzE0MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODU3OTYyMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIEZ1bmN0aW9uOiBgdHJmNzk3MGFfc2VuZF91cHN0cmVhbWAqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcyBgdHJmNzk3MGFfc2VuZF91cHN0cmVhbWAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBjb25zaWRlciBjb250ZXh0LiBJJ20gYXNzdW1pbmcgdGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIGFuIFJGSUQgZHJpdmVyLCBsaWtlbHkgZm9yIHRoZSBUUkY3OTcwQSBJQywgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLiBUaGF0IHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCBsb3ctbGV2ZWwgY29tbXVuaWNhdGlvbiBhbmQgZGF0YSB0cmFuc21pc3Npb24sIHByb2JhYmx5IG92ZXIgU1BJIG9yIGEgc2ltaWxhciBpbnRlcmZhY2UuXG5cbk15IGZpcnN0IHF1ZXN0aW9ucyBpbW1lZGlhdGVseSByZXZvbHZlIGFyb3VuZCB0aGUgZnVuY3Rpb24ncyBwdXJwb3NlOiBJcyB0aGlzIHRoZSBwcmltYXJ5IHNlbmQgZnVuY3Rpb24/IERvZXMgaXQgaGFuZGxlIHBhY2tldCBmcmFtaW5nLCBlcnJvciBjb3JyZWN0aW9uIChDUkM/KSwgYW5kIHRyYW5zbWlzc2lvbiB0aW1pbmc/IFdoYXQgYXJlIHRoZSBpbnB1dCBwYXJhbWV0ZXJzPyBJJ20gYW50aWNpcGF0aW5nIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gc2VuZCwgYSBsZW5ndGggcGFyYW1ldGVyLCBhbmQgcG90ZW50aWFsbHkgb3B0aW9ucyBmbGFncyBmb3IgdGhpbmdzIGxpa2UgcG93ZXIgbGV2ZWwsIG1vZHVsYXRpb24gdHlwZSwgb3IgZXZlbiB0aW1lb3V0IHZhbHVlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGZsZXhpYmxlIHRoaXMgZnVuY3Rpb24gaXMsIGFuZCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgY29tbXVuaWNhdGlvbiBlcnJvcnMgLSBlc3BlY2lhbGx5IGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIG5vaXN5IFJGIGVudmlyb25tZW50LlxuXG5JJ20gYWxzbyB3b25kZXJpbmcgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJmYWNlcyB3aXRoIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgb2YgdGhlIFRSRjc5NzBBLiBEb2VzIGl0IGJsb2NrIHVudGlsIHRoZSB0cmFuc21pc3Npb24gaXMgY29tcGxldGUsIG9yIGRvZXMgaXQgdXRpbGl6ZSBpbnRlcnJ1cHRzIGZvciBhc3luY2hyb25vdXMgb3BlcmF0aW9uPyBJZiB0aGUgbGF0dGVyLCBob3cgZG9lcyBpdCBtYW5hZ2UgdGhlIGJ1ZmZlciBhbmQgZW5zdXJlIGRhdGEgaW50ZWdyaXR5IHRocm91Z2hvdXQgdGhlIHRyYW5zbWl0IHByb2Nlc3M/IEkgbmVlZCB0byBsb29rIGZvciBhbnkgbXV0ZXhlcyBvciBzZW1hcGhvcmVzIHRoYXQgbWlnaHQgYmUgdXNlZCBmb3Igc3luY2hyb25pemF0aW9uLCBlc3BlY2lhbGx5IGlmIG11bHRpcGxlIHRocmVhZHMgb3IgcHJvY2Vzc2VzIG1pZ2h0IGJlIGludGVyYWN0aW5nIHdpdGggdGhlIGRyaXZlci5cblxuRmluYWxseSwgSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHBvdGVudGlhbCBkZWJ1Z2dpbmcgcG9pbnRzLiBXaGF0IGFyZSB0aGUgZXJyb3IgY29kZXMgdGhhdCBhcmUgdXNlZD8gQXJlIHRoZXJlIGFueSBjbGVhciBkZWJ1ZyBtZXNzYWdlcyBJIGNhbiBlbmFibGU/IEFuZCBjcml0aWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBoYW5kbGVzIHBvdGVudGlhbCB0cmFuc21pc3Npb24gZmFpbHVyZXMuIERvZXMgaXQgaGF2ZSByZXRyeSBsb2dpYywgb3IgZG9lcyBpdCBzaW1wbHkgcmV0dXJuIGFuIGVycm9yIGNvZGUgYmFjayB0byB0aGUgY2FsbGVyPyBJJ20gbWVudGFsbHkgc3RhcnRpbmcgdG8gZm9ybXVsYXRlIHRoZSB0ZXN0IHNjZW5hcmlvcyBJJ2xsIG5lZWQgdG8gcnVuIHRvIHZhbGlkYXRlIHRoaXMgZnVuY3Rpb24ncyBiZWhhdmlvciB1bmRlciBkaWZmZXJlbnQgY29uZGl0aW9ucy4gSSBuZWVkIHRvIGxvb2sgZm9yIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgYnVmZmVyIG92ZXJmbG93cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ5MCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA4OjE2OjE2LjIzNTQyOTIzNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0Mjk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25mYy90cmY3OTcwYS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY0NSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY0NTpcXHRcXHQqcmZfdGVjaCA9IHRlY2g7XFxuIDY0NjpcXHRcXG4gNjQ3OlxcdFxcdHJldHVybiByZXQ7XFxuIDY0ODpcXHR9XFxuIDY0OTpcXHRcXG4gNjUwOlxcdHN0YXRpYyB2b2lkIHRyZjc5NzBhX3NlbmRfdXBzdHJlYW0oc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuIDY1MTpcXHR7XFxuIDY1MjpcXHRcXHRkZXZfa2ZyZWVfc2tiX2FueSh0cmYtXFx1MDAzZXR4X3NrYik7XFxuIDY1MzpcXHRcXHR0cmYtXFx1MDAzZXR4X3NrYiA9IE5VTEw7XFxuIDY1NDpcXHRcXG4gNjU1OlxcdFxcdGlmICh0cmYtXFx1MDAzZXJ4X3NrYiBcXHUwMDI2XFx1MDAyNiAhSVNfRVJSKHRyZi1cXHUwMDNlcnhfc2tiKSBcXHUwMDI2XFx1MDAyNiAhdHJmLVxcdTAwM2VhYm9ydGluZylcXG4gNjU2OlxcdFxcdFxcdHByaW50X2hleF9kdW1wX2RlYnVnKFxcXCJ0cmY3OTcwYSByeCBkYXRhOiBcXFwiLCBEVU1QX1BSRUZJWF9OT05FLFxcbiA2NTc6XFx0XFx0XFx0XFx0XFx0ICAgICAxNiwgMSwgdHJmLVxcdTAwM2VyeF9za2ItXFx1MDAzZWRhdGEsIHRyZi1cXHUwMDNlcnhfc2tiLVxcdTAwM2VsZW4sXFxuIDY1ODpcXHRcXHRcXHRcXHRcXHQgICAgIGZhbHNlKTtcXG4gNjU5OlxcdFxcbiA2NjA6XFx0XFx0dHJmLVxcdTAwM2VzdGF0ZSA9IFRSRjc5NzBBX1NUX0lETEU7XFxuIDY2MTpcXHRcXG4gNjYyOlxcdFxcdGlmICh0cmYtXFx1MDAzZWFib3J0aW5nKSB7XFxuIDY2MzpcXHRcXHRcXHRkZXZfZGJnKHRyZi1cXHUwMDNlZGV2LCBcXFwiQWJvcnQgcHJvY2VzcyBjb21wbGV0ZVxcXFxuXFxcIik7XFxuIDY2NDpcXHRcXG4gNjY1OlxcdFxcdFxcdGlmICghSVNfRVJSKHRyZi1cXHUwMDNlcnhfc2tiKSkge1xcbiA2NjY6XFx0XFx0XFx0XFx0a2ZyZWVfc2tiKHRyZi1cXHUwMDNlcnhfc2tiKTtcXG4gNjY3OlxcdFxcdFxcdFxcdHRyZi1cXHUwMDNlcnhfc2tiID0gRVJSX1BUUigtRUNBTkNFTEVEKTtcXG4gNjY4OlxcdFxcdFxcdH1cXG4gNjY5OlxcdFxcbiA2NzA6XFx0XFx0XFx0dHJmLVxcdTAwM2VhYm9ydGluZyA9IGZhbHNlO1xcbiA2NzE6XFx0XFx0fVxcbiA2NzI6XFx0XFxuIDY3MzpcXHRcXHR0cmYtXFx1MDAzZWNiKHRyZi1cXHUwMDNlZGRldiwgdHJmLVxcdTAwM2VjYl9hcmcsIHRyZi1cXHUwMDNlcnhfc2tiKTtcXG4gNjc0OlxcdFxcbiA2NzU6XFx0XFx0dHJmLVxcdTAwM2VyeF9za2IgPSBOVUxMO1xcbiA2NzY6XFx0fVxcbiA2Nzc6XFx0XFxuIDY3ODpcXHRzdGF0aWMgdm9pZCB0cmY3OTcwYV9zZW5kX2Vycl91cHN0cmVhbShzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IGVycm5vKVxcbiA2Nzk6XFx0e1xcbiA2ODA6XFx0XFx0ZGV2X2RiZyh0cmYtXFx1MDAzZWRldiwgXFxcIkVycm9yIC0gc3RhdGU6ICVkLCBlcnJubzogJWRcXFxcblxcXCIsIHRyZi1cXHUwMDNlc3RhdGUsIGVycm5vKTtcXG4gNjgxOlxcdFxcbiA2ODI6XFx0XFx0Y2FuY2VsX2RlbGF5ZWRfd29yayhcXHUwMDI2dHJmLVxcdTAwM2V0aW1lb3V0X3dvcmspO1xcbiA2ODM6XFx0XFxuIDY4NDpcXHRcXHRrZnJlZV9za2IodHJmLVxcdTAwM2VyeF9za2IpO1xcbiA2ODU6XFx0XFx0dHJmLVxcdTAwM2VyeF9za2IgPSBFUlJfUFRSKGVycm5vKTtcXG4gNjg2OlxcdFxcbiA2ODc6XFx0XFx0dHJmNzk3MGFfc2VuZF91cHN0cmVhbSh0cmYpO1xcbiA2ODg6XFx0fVxcbiA2ODk6XFx0XFxuIDY5MDpcXHRzdGF0aWMgaW50IHRyZjc5NzBhX3RyYW5zbWl0KHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiA2OTE6XFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgbGVuLCBjb25zdCB1OCAqcHJlZml4LFxcbiA2OTI6XFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgcHJlZml4X2xlbilcXG4gNjkzOlxcdHtcXG4gNjk0OlxcdFxcdHN0cnVjdCBzcGlfdHJhbnNmZXIgdFsyXTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDg6MTY6MTYuMjM1NTczNzM1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAyNzg1ODE3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBgRVJSX1BUUigwKWAgdnMuIGBOVUxMYCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSwgYW5kIGl0J3MgdXNpbmcgYEVSUl9QVFIoMClgIHRvIHNldCBgdHJmLVx1MDAzZXJ4X3NrYmAuIE15IGZpcnN0IHRob3VnaHQgaXM6IHdhaXQsIGlzbid0IGBFUlJfUFRSKDApYCBlc3NlbnRpYWxseSB0aGUgc2FtZSBhcyBgTlVMTGA/IExldCBtZSBkb3VibGUtY2hlY2suIFl1cCwgYEVSUl9QVFIoMClgIGV4cGFuZHMgdG8gYCh2b2lkICopMGAsIHdoaWNoIGlzIHRoZSBkZWZpbml0aW9uIG9mIGBOVUxMYC4gU28sIGZ1bmN0aW9uYWxseSwgYHRyZi1cdTAwM2VyeF9za2IgPSBFUlJfUFRSKDApO2AgaXMgaWRlbnRpY2FsIHRvIGB0cmYtXHUwMDNlcnhfc2tiID0gTlVMTDtgLlxuXG5CdXQgaXMgdGhlcmUgc29tZSBzdWJ0bGUgc2lkZSBlZmZlY3QgSSdtIG1pc3Npbmc/IElzIGBFUlJfUFRSKDApYCBpbnRlbmRlZCB0byB0cmlnZ2VyIHNvbWUga2luZCBvZiBzcGFyc2Ugd2FybmluZyBvciBzdGF0aWMgYW5hbHlzaXMgdG9vbD8gVGhhdCdzIHRoZSBvbmx5IHRoaW5nIEkgY2FuIHRoaW5rIG9mLiBBaCwgcmlnaHQsIEkgcmVtZW1iZXIgbm93LiBVc2luZyBgRVJSX1BUUigwKWAgd2hlbiB5b3UgKnNob3VsZCogdXNlIGBOVUxMYCwgb3IsIHdvcnNlLCBqdXN0IHVzaW5nIGBFUlJfUFRSKDApYCBpbnN0ZWFkIG9mIGEgbWVhbmluZ2Z1bCBlcnJvciBwb2ludGVyLCAqaXMqIGJhZCBwcmFjdGljZS4gSXQncyB1c3VhbGx5IGEgc3R5bGlzdGljIGlzc3VlIGFuZCBjYW4gbGVhZCB0byBjb25mdXNpbmcgY29kZS5cblxuTGV0J3Mgc2VlIGlmIHRoaXMgY3JlYXRlcyBhIHByb2JsZW0uIExvb2tpbmcgYXQgYHRyZjc5NzBhX3NlbmRfdXBzdHJlYW1gLCBpdCBjaGVja3MgYCFJU19FUlIodHJmLVx1MDAzZXJ4X3NrYilgLiBPa2F5LCBzbyBgSVNfRVJSKE5VTEwpYCByZXR1cm5zIGZhbHNlLiBBbmQgc2luY2UgYEVSUl9QVFIoMClgIGV2YWx1YXRlcyB0byBgTlVMTGAsIGBJU19FUlIoRVJSX1BUUigwKSlgICphbHNvKiByZXR1cm5zIGZhbHNlLiBUaGVyZWZvcmUsIHRoZXJlJ3MgYWJzb2x1dGVseSBubyBmdW5jdGlvbmFsIGRpZmZlcmVuY2UgaGVyZS4gVGhlIGNvZGUgd2lsbCBiZWhhdmUgZXhhY3RseSB0aGUgc2FtZSB3YXkuIFRoZSBjaGVjayBpcyBlcXVpdmFsZW50IHJlZ2FyZGxlc3MuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgcXVpY2tseSByZXZpZXcgdGhlIGBJU19FUlJgIG1hY3JvIGRlZmluaXRpb24uLi4gWWVwLCBpdCdzIG9wZXJhdGluZyBhcyBJIGV4cGVjdC4gU28sIHRoZXJlIGlzIG5vIGVycm9yIGluIHRoZSBjb2RlLiBJdCBpcyBtZXJlbHkgYSBzdHlsaXN0aWMgY29uY2Vybi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgxMywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA4OjE2OjIyLjI2MzQzMzk0OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDE0NDI2NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RhdGljIGlubGluZSBib29sIElTX0VSUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2Vyci5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODoxNjoyMi4zMjM1OTMwMjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDQ4OTQyOTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipOYXZpZ2F0aW5nIHRoZSBMYWJ5cmludGggb2YgS2VybmVsIERlZmluaXRpb25zKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byB3cmFwIG15IGhlYWQgYXJvdW5kIHRoaXMgZXJyb3IgaGFuZGxpbmcsIGFuZCBJJ20gcHJldHR5IHN1cmUgSSd2ZSBzZWVuIGBJU19FUlJgIGZsb2F0aW5nIGFyb3VuZCBiZWZvcmUuIFdoZXJlIGRpZCBJIHNlZSB0aGF0PyAqQWgsIHJpZ2h0ISogSXQncyBkZWZpbmVkIGluIGBpbmNsdWRlL2xpbnV4L2Vyci5oYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQncyBhIGZ1bmRhbWVudGFsIGVycm9yIGNoZWNraW5nIG1hY3JvLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBpdCBkb2VzIGV4YWN0bHksIGJ1dCBhdCBsZWFzdCBJIGtub3cgd2hlcmUgdG8gbG9vayBpZiBJIHdhbnQgdG8gZGlnIGRlZXBlciBpbnRvIGl0cyBpbXBsZW1lbnRhdGlvbiBvciBkb2N1bWVudGF0aW9uLiBLbm93aW5nIHdoZXJlIGNvcmUga2VybmVsIGRlZmluaXRpb25zIHJlc2lkZSBpcyBhbHdheXMgdGhlIGZpcnN0IHN0ZXAsIHNvIEkgaGF2ZSBhIG1lbnRhbCBub3RlIGZvciB0aGUgbmV4dCBpbnZlc3RpZ2F0aW9uIGludG8gZXJyb3IgcmV0dXJucy4gTm93IHRvIHByb2NlZWQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0OTMsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODoxNjoyNS4zNzI1Mzg2MDFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MjYzNzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlZmluZSBJU19FUlJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9lcnIuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2Vyci5oLTI3LSAqL1xcbmluY2x1ZGUvbGludXgvZXJyLmg6Mjg6I2RlZmluZSBJU19FUlJfVkFMVUUoeCkgdW5saWtlbHkoKHVuc2lnbmVkIGxvbmcpKHZvaWQgKikoeCkgXFx1MDAzZT0gKHVuc2lnbmVkIGxvbmcpLU1BWF9FUlJOTylcXG5pbmNsdWRlL2xpbnV4L2Vyci5oLTI5LVxcbi0tXFxuaW5jbHVkZS9saW51eC9lcnIuaD03Nj1zdGF0aWMgaW5saW5lIGJvb2wgX19tdXN0X2NoZWNrIElTX0VSUihfX2ZvcmNlIGNvbnN0IHZvaWQgKnB0cilcXG4tLVxcbmluY2x1ZGUvbGludXgvZXJyLmgtODEtLyogUmVhZCBhbiBlcnJvciBwb2ludGVyIGZyb20gdGhlIHBlcmNwdSBhZGRyZXNzIHNwYWNlLiAqL1xcbmluY2x1ZGUvbGludXgvZXJyLmg6ODI6I2RlZmluZSBJU19FUlJfUENQVShwdHIpIChJU19FUlIoKGNvbnN0IHZvaWQgKikoX19mb3JjZSBjb25zdCB1bnNpZ25lZCBsb25nKShwdHIpKSlcXG5pbmNsdWRlL2xpbnV4L2Vyci5oLTgzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODoxNjoyNS40MzE4MTA4MjdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY5NjYyNDMxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogSVNfRVJSIElucXVpcnkqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmlyc3Qgc3RlcCBpcyBjbGVhcjogd2UncmUgZGl2aW5nIGludG8gYElTX0VSUmAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAqd2hhdCBjb250ZXh0IGFyZSB3ZSBsb29raW5nIGF0IGhlcmU/KiBJcyB0aGlzIEMsIEMrKywgUnVzdCwgYSBzY3JpcHRpbmcgbGFuZ3VhZ2U/IFRoZSBzcGVjaWZpYyBzeW50YXggYW5kIGJlaGF2aW9yIG9mIGBJU19FUlJgIHZhcmllcyBxdWl0ZSBhIGJpdCBkZXBlbmRpbmcgb24gdGhlIGVudmlyb25tZW50LiBJJ20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggdGhlIGNvbW1vbiBpbXBsZW1lbnRhdGlvbnMgaW4gdGhvc2UgZGlmZmVyZW50IGxhbmd1YWdlcy5cblxuVGhlbiwgbXkgbWluZCByYWNlcyB0byBwb3RlbnRpYWwgY29uc2lkZXJhdGlvbnM6IElzIGl0IGEgbWFjcm8/IEEgZnVuY3Rpb24/IEEgYnVpbHQtaW4gZmVhdHVyZT8gS25vd2luZyB0aGF0IHdpbGwgaW5mbHVlbmNlIGhvdyBJIGFwcHJvYWNoIHRoZSBhbmFseXNpcy4gQWxzbywgKndoYXQgaXMgdGhlIHN5c3RlbSBhdHRlbXB0aW5nIHRvIHNpZ25hbD8qIElzIGl0IGFuIGVycm9yIGNoZWNrIHdpdGhpbiBhIGxvdy1sZXZlbCByb3V0aW5lLCBvciBhIG1vcmUgZ2VuZXJhbGl6ZWQgYXBwcm9hY2ggdG8gaGFuZGxpbmcgZXhjZXB0aW9ucz8gRGlmZmVyZW50IHNjZW5hcmlvcyBjYWxsIGZvciBkaWZmZXJpbmcgbGV2ZWxzIG9mIHNjcnV0aW55LiBJIHdvdWxkIGxvb2sgYXQgdGhlIG1hY3JvIGV4cGFuc2lvbiBvZiBgSVNfRVJSYCBpZiBJIGhhZCBhY2Nlc3MgdG8gYSBwcmVwcm9jZXNzb3IsIG9yIHRoZSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBhbmQgYXNzb2NpYXRlZCBlcnJvciB0eXBlcyBpZiBhdmFpbGFibGUuXG5cbk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUuIFdoYXQgZXJyb3IgaGFuZGxpbmcgcGFyYWRpZ20gaXMgYmVpbmcgdXNlZD8gSXMgaXQgZXhjZXB0aW9uLWJhc2VkPyBFcnJvciBjb2RlLWJhc2VkPyBBcmUgdGhleSByZXR1cm5pbmcgcG9pbnRlcnM/IEEgdW5pb24gb3IgZW51bT8gSSB3b3VsZCBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoaXMgYmFzZWQgb24gaG93IHRoZSBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlZCB0aGUgZXJyb3Igc3RhdGUgaGFuZGxlcyByZXR1cm4gdmFsdWVzLiBUaGlzIHdpbGwgZ2l2ZSBhIGdvb2QgaW5kaWNhdG9yIG9mIHdoYXQgSSBzaG91bGQgZXhwZWN0IGBJU19FUlJgIHRvIGV2YWx1YXRlIHRvLiBJcyBpdCBqdXN0IGEgYm9vbGVhbiBjaGVjaywgb3IgaXMgaXQgbW9yZSBjb21wbGV4IHRoYW4gdGhhdCwgcGVyaGFwcyBpbnNwZWN0aW5nIGVycm9yIGNvZGVzIGVtYmVkZGVkIGluIGRhdGEgc3RydWN0dXJlcz8gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSBudWFuY2VzIG9mIHRoZSB1bmRlcmx5aW5nIGVycm9yIHJlcHJlc2VudGF0aW9uLlxuXG5JbiB0aGUgY2FzZSBvZiBtb3JlIGNvbXBsaWNhdGVkIHJlcHJlc2VudGF0aW9ucywgSSBrbm93IHRoYXQgY2FyZWZ1bCBhbmFseXNpcyBvZiB0aGUgYWN0dWFsIGRlZmluaXRpb25zIGlzIGNyaXRpY2FsLiBBIG1pc3BsYWNlZCBicmFjZSBvciBhIG1pc3VuZGVyc3RhbmRpbmcgb2YgYSBiaXRmaWVsZCBjYW4gaGF2ZSBzaWduaWZpY2FudCByZXBlcmN1c3Npb25zLiBVbmRlcnN0YW5kaW5nIHRoZSB1bmRlcmx5aW5nIHJlcHJlc2VudGF0aW9uIG9mIGVycm9ycywgaWYgaXQncyBtb3JlIHRoYW4ganVzdCBhIHNpbXBsZSBib29sZWFuIGZsYWcsIGlzIGtleS5cblxuSW4gZXNzZW5jZSwgSSdtIGZvcm1pbmcgYSBtZW50YWwgY2hlY2tsaXN0OiAqKmxhbmd1YWdlIGNvbnRleHQsIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIGVycm9yIGhhbmRsaW5nIHN0eWxlLCBhbmQgaW1tZWRpYXRlIHN1cnJvdW5kaW5nIGNvZGUqKi4gSSdtIHJlYWR5IHRvIGRpZyBpbnRvIHRoZSBhY3R1YWwgY29kZSBvciBkb2N1bWVudGF0aW9uIHRvIHJlZmluZSBteSBhc3N1bXB0aW9ucyBhbmQgYW5zd2VyIHRob3NlIHF1ZXN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg4NiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDg6MTY6MzAuMTI4NDM3OTUxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5MTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluY2x1ZGUvbGludXgvZXJyLmhcIixcbiAgXCJGaXJzdExpbmVcIjogNzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNzA6XFx0XFxuICA3MTpcXHQvKipcXG4gIDcyOlxcdCAqIElTX0VSUiAtIERldGVjdCBhbiBlcnJvciBwb2ludGVyLlxcbiAgNzM6XFx0ICogQHB0cjogVGhlIHBvaW50ZXIgdG8gY2hlY2suXFxuICA3NDpcXHQgKiBSZXR1cm46IHRydWUgaWYgQHB0ciBpcyBhbiBlcnJvciBwb2ludGVyLCBmYWxzZSBvdGhlcndpc2UuXFxuICA3NTpcXHQgKi9cXG4gIDc2OlxcdHN0YXRpYyBpbmxpbmUgYm9vbCBfX211c3RfY2hlY2sgSVNfRVJSKF9fZm9yY2UgY29uc3Qgdm9pZCAqcHRyKVxcbiAgNzc6XFx0e1xcbiAgNzg6XFx0XFx0cmV0dXJuIElTX0VSUl9WQUxVRSgodW5zaWduZWQgbG9uZylwdHIpO1xcbiAgNzk6XFx0fVxcbiAgODA6XFx0XFxuICA4MTpcXHQvKiBSZWFkIGFuIGVycm9yIHBvaW50ZXIgZnJvbSB0aGUgcGVyY3B1IGFkZHJlc3Mgc3BhY2UuICovXFxuICA4MjpcXHQjZGVmaW5lIElTX0VSUl9QQ1BVKHB0cikgKElTX0VSUigoY29uc3Qgdm9pZCAqKShfX2ZvcmNlIGNvbnN0IHVuc2lnbmVkIGxvbmcpKHB0cikpKVxcbiAgODM6XFx0XFxuICA4NDpcXHQvKipcXG4gIDg1OlxcdCAqIElTX0VSUl9PUl9OVUxMIC0gRGV0ZWN0IGFuIGVycm9yIHBvaW50ZXIgb3IgYSBudWxsIHBvaW50ZXIuXFxuICA4NjpcXHQgKiBAcHRyOiBUaGUgcG9pbnRlciB0byBjaGVjay5cXG4gIDg3OlxcdCAqXFxuICA4ODpcXHQgKiBMaWtlIElTX0VSUigpLCBidXQgYWxzbyByZXR1cm5zIHRydWUgZm9yIGEgbnVsbCBwb2ludGVyLlxcbiAgODk6XFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA4OjE2OjMwLjEyODUxOTA1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5OTU0MTgyMTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ29kZSBDbGVhbnVwIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGV4cGVydCBleWUgaG9uZXMgaW4gb24gdGhhdCBgSVNfRVJSX1ZBTFVFYCBtYWNyby4gSXQgYm9pbHMgZG93biB0byBgdW5saWtlbHkoKHVuc2lnbmVkIGxvbmcpKHZvaWQgKikoeCkgXHUwMDNlPSAodW5zaWduZWQgbG9uZyktTUFYX0VSUk5PKWAuIE5vdywgbGV0J3MgYnJlYWsgdGhpcyBkb3duIGZvciB0aGUgc3BlY2lmaWMgY2FzZSB3aGVyZSBgeGAgaXMgYEVSUl9QVFIoMClgLiBJbiB0aGlzIHNjZW5hcmlvLCBgeGAgaXMgZWZmZWN0aXZlbHkgemVyby4gUGx1Z2dpbmcgdGhhdCBpbiwgd2UgZ2V0IGAwIFx1MDAzZT0gLU1BWF9FUlJOT2AuIFRoYXQncyBmYWxzZS4gU28sIGBJU19FUlIoRVJSX1BUUigwKSlgIGlzIGZhbHNlLCBhbmQgbGlrZXdpc2UgYElTX0VSUihOVUxMKWAgaXMgZmFsc2UuIFRoaXMgbWVhbnMgYHRyZi1cdTAwM2VyeF9za2IgPSBFUlJfUFRSKDApYCBhbmQgYHRyZi1cdTAwM2VyeF9za2IgPSBOVUxMYCBhcmUsIGZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCAqaWRlbnRpY2FsKiBpbiB0aGUgcmVzdWx0aW5nIGJlaGF2aW9yLiBJdCdzIGEgYml0IG9mIGEgY29kZSBzbWVsbCB1c2luZyBgRVJSX1BUUmAgZm9yIGEgemVyby12YWx1ZSwgc2luY2UgYEVSUl9QVFJgIGlzIGludGVuZGVkIHRvIHNpZ25hbCBhbiBlcnJvciBjb25kaXRpb24sIG5vdCBhIHZhbGlkLCBudWxsLWVxdWl2YWxlbnQgdmFsdWUuIFRoaXMgcGF0Y2ggYWltcyB0byBjbGVhbiB0aGF0IHVwLlxuXG5XYWl0LCBpcyB0aGF0IGl0PyBJIGJldHRlciBkb3VibGUtY2hlY2sgdGhlIGVudGlyZSBkaWZmLCBqdXN0IHRvIGJlIHRob3JvdWdoLiBPa2F5LCBsZXQncyBsb29rIGF0IHRoZSBjaGFuZ2UgYmxvY2s6XG5cbmBgYGNcbkBAIC05MzgsNyArOTM4LDcgQEAgc3RhdGljIGlycXJldHVybl90IHRyZjc5NzBhX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpXG4gXHRcdFx0aWYgKCF0cmYtXHUwMDNldGltZW91dCkge1xuIFx0XHRcdFx0dHJmLVx1MDAzZWlnbm9yZV90aW1lb3V0ID1cbiBcdFx0XHRcdCAgICAhY2FuY2VsX2RlbGF5ZWRfd29yayhcdTAwMjZ0cmYtXHUwMDNldGltZW91dF93b3JrKTtcbi1cdFx0XHRcdHRyZi1cdTAwM2VyeF9za2IgPSBFUlJfUFRSKDApO1xuK1x0XHRcdFx0dHJmLVx1MDAzZXJ4X3NrYiA9IE5VTEw7XG4gXHRcdFx0XHR0cmY3OTcwYV9zZW5kX3Vwc3RyZWFtKHRyZik7XG4gXHRcdFx0XHRicmVhaztcbiBcdFx0XHR9XG5gYGBcblxuWWVwLCB0aGF0J3MgdGhlICpvbmx5KiBjaGFuZ2UuIFNvLCB0aGVyZSBpcyBubyBmdW5jdGlvbmFsIGRpZmZlcmVuY2UuIFRoaXMgaXMgcHVyZWx5IGEgY2xlYW51cCBwYXRjaCBhbmQgZGVjb3JhdGl2ZSBjaGFuZ2UgdGhhdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuIFRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGBmYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2NzAsIk91dHB1dFRva2VucyI6OTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODoxNjozNy4xMjM5NDE4MzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDU4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBgRVJSX1BUUigwKWAgd2l0aCBgTlVMTGAuIFNpbmNlIGBFUlJfUFRSKDApYCBldmFsdWF0ZXMgdG8gYCh2b2lkICopMGAgKHdoaWNoIGlzIGBOVUxMYCksIHRoaXMgY2hhbmdlIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuIEl0IGlzIHB1cmVseSBhIGNvZGUgY2xlYW51cCB0byByZW1vdmUgY29uZnVzaW5nIHVzYWdlIG9mIHRoZSBgRVJSX1BUUmAgbWFjcm8uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBgRVJSX1BUUigwKWAgd2l0aCBgTlVMTGAuIFNpbmNlIGBFUlJfUFRSKDApYCBldmFsdWF0ZXMgdG8gYCh2b2lkICopMGAgKHdoaWNoIGlzIGBOVUxMYCksIHRoaXMgY2hhbmdlIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuIEl0IGlzIHB1cmVseSBhIGNvZGUgY2xlYW51cCB0byByZW1vdmUgY29uZnVzaW5nIHVzYWdlIG9mIHRoZSBgRVJSX1BUUmAgbWFjcm8uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtwgm5[1] Phase: Running StartedAt: 2026-07-06 08:16:48 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtwgm5[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-06 08:16:48 +0000 UTC FinishedAt: 2026-07-06 08:16:56 +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,}