Name: series-workflowwqtlm Phase: Failed StartedAt: 2026-08-30 14:32:48 +0000 UTC FinishedAt: 2026-08-30 14:51:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwqtlm[0] Phase: Succeeded StartedAt: 2026-08-30 14:32:48 +0000 UTC FinishedAt: 2026-08-30 14:50:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwqtlm[0].run-triage Phase: Succeeded StartedAt: 2026-08-30 14:32:48 +0000 UTC FinishedAt: 2026-08-30 14:50:51 +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+CgkJCTx0ZD4yMDI2LzA4LzMwIDE0OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTZtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9wY2kuYywgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2ggQVNJQyBkcml2ZXIgKE1hcnZlbGwgUHJlc3RlcmEpLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIHN3aXRjaCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNDozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDRhYmJmMGZjMWE4OWQ0OTM2ZGM5YmFmMWFlZjJiOGU4NzJjMjdhNzlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAzMCAxNDozNDozNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX3BjaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9wY2kuY1xuaW5kZXggMWFkMGU2MmE4NDMzYi4uOWIzZDZlNWE4MWQxYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmNcbkBAIC01ODksMTcgJiM0Mzs1ODksMjYgQEAgc3RhdGljIHU4IF9faW9tZW0gKnByZXN0ZXJhX2xkcl93cl9wdHIoc3RydWN0IHByZXN0ZXJhX2Z3ICpmdylcbiBcbiBzdGF0aWMgaW50IHByZXN0ZXJhX2xkcl9zZW5kKHN0cnVjdCBwcmVzdGVyYV9mdyAqZncsIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXG4ge1xuJiM0MztcdHNpemVfdCB3cml0ZV9sZW4gPSBBTElHTihsZW4sIHNpemVvZih1MzIpKTtcbiYjNDM7XHRzaXplX3QgaTtcbiBcdGludCBlcnI7XG4tXHRpbnQgaTtcbiBcbi1cdGVyciA9IHByZXN0ZXJhX2xkcl93YWl0X2J1ZihmdywgbGVuKTtcbiYjNDM7XHRlcnIgPSBwcmVzdGVyYV9sZHJfd2FpdF9idWYoZncsIHdyaXRlX2xlbik7XG4gXHRpZiAoZXJyKSB7XG4gXHRcdGRldl9lcnIoZnctXHUwMDNlZGV2LmRldiwgXCYjMzQ7ZmFpbGVkIHdhaXQgZm9yIHNlbmRpbmcgZmlybXdhcmVcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbGVuOyBpICYjNDM7PSA0KSB7XG4tXHRcdHdyaXRlbF9yZWxheGVkKCoodTMyICopKGJ1ZiAmIzQzOyBpKSwgcHJlc3RlcmFfbGRyX3dyX3B0cihmdykpO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgJiM0Mzsgc2l6ZW9mKHUzMikgXHUwMDNjPSBsZW47IGkgJiM0Mzs9IHNpemVvZih1MzIpKSB7XG4mIzQzO1x0XHR3cml0ZWxfcmVsYXhlZChnZXRfdW5hbGlnbmVkKCh1MzIgKikoYnVmICYjNDM7IGkpKSxcbiYjNDM7XHRcdFx0ICAgICAgIHByZXN0ZXJhX2xkcl93cl9wdHIoZncpKTtcbiYjNDM7XHRcdHByZXN0ZXJhX2xkcl93cl9pZHhfbW92ZShmdywgNCk7XG4mIzQzO1x0fVxuJiM0MztcdGlmIChpIFx1MDAzYyBsZW4pIHtcbiYjNDM7XHRcdHUzMiBsYXN0ID0gMDtcbiYjNDM7XG4mIzQzO1x0XHRtZW1jcHkoXHUwMDI2bGFzdCwgYnVmICYjNDM7IGksIGxlbiAtIGkpO1xuJiM0MztcdFx0d3JpdGVsX3JlbGF4ZWQobGFzdCwgcHJlc3RlcmFfbGRyX3dyX3B0cihmdykpO1xuIFx0XHRwcmVzdGVyYV9sZHJfd3JfaWR4X21vdmUoZncsIDQpO1xuIFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE0OjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjE2bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBjb2RlIGlzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmMsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIEFTSUMgZHJpdmVyIChNYXJ2ZWxsIFByZXN0ZXJhKS4gSXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBzd2l0Y2ggaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0YWJiZjBmYzFhODlkNDkzNmRjOWJhZjFhZWYyYjhlODcyYzI3YTc5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMzAgMTQ6MzQ6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX3BjaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9wY2kuYwppbmRleCAxYWQwZTYyYTg0MzNiLi45YjNkNmU1YTgxZDFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX3BjaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmMKQEAgLTU4OSwxNyAmIzQzOzU4OSwyNiBAQCBzdGF0aWMgdTggX19pb21lbSAqcHJlc3RlcmFfbGRyX3dyX3B0cihzdHJ1Y3QgcHJlc3RlcmFfZncgKmZ3KQogCiBzdGF0aWMgaW50IHByZXN0ZXJhX2xkcl9zZW5kKHN0cnVjdCBwcmVzdGVyYV9mdyAqZncsIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pCiB7CiYjNDM7CXNpemVfdCB3cml0ZV9sZW4gPSBBTElHTihsZW4sIHNpemVvZih1MzIpKTsKJiM0MzsJc2l6ZV90IGk7CiAJaW50IGVycjsKLQlpbnQgaTsKIAotCWVyciA9IHByZXN0ZXJhX2xkcl93YWl0X2J1ZihmdywgbGVuKTsKJiM0MzsJZXJyID0gcHJlc3RlcmFfbGRyX3dhaXRfYnVmKGZ3LCB3cml0ZV9sZW4pOwogCWlmIChlcnIpIHsKIAkJZGV2X2Vycihmdy0mZ3Q7ZGV2LmRldiwgJiMzNDtmYWlsZWQgd2FpdCBmb3Igc2VuZGluZyBmaXJtd2FyZVxuJiMzNDspOwogCQlyZXR1cm4gZXJyOwogCX0KIAotCWZvciAoaSA9IDA7IGkgJmx0OyBsZW47IGkgJiM0Mzs9IDQpIHsKLQkJd3JpdGVsX3JlbGF4ZWQoKih1MzIgKikoYnVmICYjNDM7IGkpLCBwcmVzdGVyYV9sZHJfd3JfcHRyKGZ3KSk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJiM0Mzsgc2l6ZW9mKHUzMikgJmx0Oz0gbGVuOyBpICYjNDM7PSBzaXplb2YodTMyKSkgewomIzQzOwkJd3JpdGVsX3JlbGF4ZWQoZ2V0X3VuYWxpZ25lZCgodTMyICopKGJ1ZiAmIzQzOyBpKSksCiYjNDM7CQkJICAgICAgIHByZXN0ZXJhX2xkcl93cl9wdHIoZncpKTsKJiM0MzsJCXByZXN0ZXJhX2xkcl93cl9pZHhfbW92ZShmdywgNCk7CiYjNDM7CX0KJiM0MzsJaWYgKGkgJmx0OyBsZW4pIHsKJiM0MzsJCXUzMiBsYXN0ID0gMDsKJiM0MzsKJiM0MzsJCW1lbWNweSgmYW1wO2xhc3QsIGJ1ZiAmIzQzOyBpLCBsZW4gLSBpKTsKJiM0MzsJCXdyaXRlbF9yZWxheGVkKGxhc3QsIHByZXN0ZXJhX2xkcl93cl9wdHIoZncpKTsKIAkJcHJlc3RlcmFfbGRyX3dyX2lkeF9tb3ZlKGZ3LCA0KTsKIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTQ6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjhtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQxOAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGFza2VkIHRvIGFzc2VzcyB0aGlzIHBhdGNoIGFuZCBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZywgc3BlY2lmaWNhbGx5IGJ5IHNldHRpbmcgYFdvcnRoRnV6emluZz10cnVlYCBvciBgZmFsc2VgLiBMZXQmIzM5O3MgZGl2ZSBpbi4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX3BjaS5jYCwgd2hpY2ggcmluZ3Mgc29tZSBiZWxscyBiZWNhdXNlIHRoYXQmIzM5O3MgdXN1YWxseSBhIGdvb2QgcGxhY2UgdG8gZmluZCBpbnRlcmVzdGluZyBuZXR3b3JrIGludGVyYWN0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBpbnZvbHZlcyB0aGUgYHByZXN0ZXJhX2xkcl9zZW5kYCBmdW5jdGlvbiwgd2hpY2ggaW1wbGllcyBzb21lIGtpbmQgb2YgbG93LWxldmVsIGRhdGEgdHJhbnNmZXIgd2l0aGluIGEgTWFydmVsbCBQcmVzdGVyYSBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyLgoKQmVmb3JlIEkgZ2V0IHRvbyBleGNpdGVkLCBJIG5lZWQgdG8gY29uc3VsdCB0aGUgZXN0YWJsaXNoZWQgZ3VpZGVsaW5lcyBmb3IgZnV6emluZyB0YXJnZXRzLiBNeSBpbW1lZGlhdGUgY29uY2VybnMgYXJlOiBkb2VzIHRoaXMgY29kZSByZXF1aXJlIHNwZWNpYWxpemVkIGhhcmR3YXJlLCBhbmQgaXMgdGhpcyBhY2Nlc3NpYmxlIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJJiMzOTt2ZSBnb3QgdG8gbWFrZSBzdXJlIHRoaXMgY29kZSBpc24mIzM5O3QgdGllZCB0byBzb21lIHNwZWNpZmljIFBDSWUgY2FyZCB0aGF0JiMzOTtzIGltcG9zc2libGUgdG8gZW11bGF0ZSB3ZWxsIGluIGEgc3RhbmRhcmQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4gQ29kZSB0aWVkIHRvIHRoaW5ncyBsaWtlIFNtYXJ0TklDcywgR1BVcyBvciB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBjYW4mIzM5O3QgYmUgd2VsbCBlbXVsYXRlZCBhcmUgZ2VuZXJhbGx5IG5vdCBzdWl0YWJsZS4gU2ltaWxhcmx5LCBpZiB0aGUgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSwgaXQmIzM5O3MgYSBuby1nby4KClRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSYjMzk7bSBnb2luZyB0byBsZXZlcmFnZSBteSBmYW1pbGlhcml0eSB3aXRoIHRoZSBjb2RlYmFzZSBhbmQgbWFrZSBzb21lIHF1aWNrIGNoZWNrcy4gSSYjMzk7bGwgdXNlIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBjaGVjayB0aGUgS2NvbmZpZyBhbmQgYHByZXN0ZXJhX3BjaS5jYCBzb3VyY2UgY29kZSwgc28gSSBjYW4gc2VlIHdoYXQgYHByZXN0ZXJhYCBpcyBhbmQgd2hlcmUgdGhpcyBgcHJlc3RlcmFfcGNpLmNgIGZpbGUgaXMgdXNlZC4gSSYjMzk7bGwgbG9vayBmb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb24sIGhhcmR3YXJlIGRlcGVuZGVuY2llcywgYW5kIGFueSBtZW50aW9ucyBvZiBzcGVjaWZpYyBQQ0llIGRldmljZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiBvZiB0aGlzIGRyaXZlciBhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlIGBwcmVzdGVyYV9sZHJfc2VuZGAgZnVuY3Rpb24gaXMgY2FsbGVkLiBXaXRoIHRoYXQgaW5mb3JtYXRpb24sIEkgY2FuIG1ha2UgYSBkZWNpc2lvbiBhYm91dCB0aGUgZnV6emluZyB3b3J0aGluZXNzIG9mIHRoZSBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfUFJFU1RFUkEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1BSRVNURVJBKVx0JiM0Mzs9IHByZXN0ZXJhLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvTWFrZWZpbGUtMy1wcmVzdGVyYS1vYmpzXHRcdDo9IHByZXN0ZXJhX21haW4ubyBwcmVzdGVyYV9ody5vIHByZXN0ZXJhX2RzYS5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9NYWtlZmlsZS04LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19QUkVTVEVSQV9QQ0kpXHQmIzQzOz0gcHJlc3RlcmFfcGNpLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzIxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGZpbGU6CgoqKkludmVzdGlnYXRpbmcgdGhlIE1hcnZlbGwgUHJlc3RlcmEgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZ2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgTWFydmVsbCBQcmVzdGVyYSBFdGhlcm5ldCBkcml2ZXIuIEkmIzM5O20gYWxyZWFkeSBwcmV0dHkgZmFtaWxpYXIgd2l0aCB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgS2NvbmZpZyBmaWxlcywgc28gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYSBmZXcga2V5IHRoaW5ncyByaWdodCBvZmYgdGhlIGJhdC4gRmlyc3QsIEkmIzM5O2xsIGJlIHNjYW5uaW5nIGZvciB0aGUgbWFpbiBgY29uZmlnYCBzeW1ib2xzIHRoYXQgZW5hYmxlIG9yIGRpc2FibGUgdGhlIGRyaXZlciBpdHNlbGYg4oCTIHRoZSB0b3AtbGV2ZWwgY29uZmlndXJhdGlvbiBrbm9icy4gVGhlbiwgSSYjMzk7bGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGVwZW5kZW5jaWVzLiBXaGljaCBvdGhlciBtb2R1bGVzIG9yIGhhcmR3YXJlIGZlYXR1cmVzIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUgdGhpcyBkcml2ZXIgY2FuIGV2ZW4gYmUgY29uc2lkZXJlZD8gSSBleHBlY3QgdGhlcmUgdG8gYmUgZGVwZW5kZW5jaWVzIG9uIHRoaW5ncyBsaWtlIHRoZSBNYXJ2ZWxsIHBsYXRmb3JtIGNvZGUsIFBIWSBkcml2ZXJzLCBhbmQgcG90ZW50aWFsbHkgZXZlbiBzcGVjaWZpYyBFdGhlcm5ldCBjb250cm9sbGVyIHJldmlzaW9ucy4KCk5leHQsIEkmIzM5O2xsIG5lZWQgdG8gaWRlbnRpZnkgYW55IHNwZWNpZmljIGZlYXR1cmVzIHRoZSBQcmVzdGVyYSBkcml2ZXIgZXhwb3NlcyB0aHJvdWdoIGl0cyBLY29uZmlnIG9wdGlvbnMuIFRoaW5ncyBsaWtlIHN1cHBvcnQgZm9yIGRpZmZlcmVudCBzcGVlZCBncmFkZXMsIFZMQU4gaGFuZGxpbmcsIFFvUyBmZWF0dXJlcywgc3BlY2lmaWMgaGFyZHdhcmUgb2ZmbG9hZCBjYXBhYmlsaXRpZXMg4oCTIHRoZXNlIGFyZSB3aGF0IHJlYWxseSBpbnRlcmVzdCBtZS4gSSYjMzk7bGwgYmUgcGFyc2luZyB0aGUgaGVscCB0ZXh0IGFzc29jaWF0ZWQgd2l0aCBlYWNoIG9wdGlvbiB0byBnZXQgYSBwcmVjaXNlIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCB0aGV5IGRvIGFuZCBob3cgdGhleSBtaWdodCBhZmZlY3QgcGVyZm9ybWFuY2Ugb3IgcmVzb3VyY2UgdXNhZ2UuIEkmIzM5O2xsIGFsc28gYmUgd2F0Y2hpbmcgZm9yIGFueSBgc2VsZWN0YCBzdGF0ZW1lbnRzIHRoYXQgbWlnaHQgYXV0b21hdGljYWxseSBlbmFibGUgb3RoZXIgb3B0aW9ucyBiYXNlZCBvbiB0aGUgY2hvc2VuIGNvbmZpZ3VyYXRpb24uIEZpbmFsbHksIEkmIzM5O2xsIGNoZWNrIGZvciBhbnkgdHJpc3RhdGUgb3IgYm9vbGVhbiBvcHRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgdG8gbXkgYXJlYSBvZiBleHBlcnRpc2UuIEkmIzM5O20ga2VlbiB0byB1bmNvdmVyIGFueXRoaW5nIHRoYXQgbWlnaHQgYWZmZWN0IG15IHNwZWNpZmljIHVzZSBjYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE0OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTWFydmVsbCBQcmVzdGVyYSBkcml2ZXJzIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIFBSRVNURVJBXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFByZXN0ZXJhIFN3aXRjaCBBU0lDcyBzdXBwb3J0XCYjMzQ7XG4gICA4Olx0XHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVYgXHUwMDI2XHUwMDI2IFZMQU5fODAyMVFcbiAgIDk6XHRcdGRlcGVuZHMgb24gQlJJREdFIHx8IEJSSURHRT1uXG4gIDEwOlx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAgMTE6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwgUHJlc3RlcmEgU3dpdGNoIEFTSUNzIGZhbWlseS5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDE2Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBwcmVzdGVyYS5cbiAgMTc6XHRcbiAgMTg6XHRjb25maWcgUFJFU1RFUkFfUENJXG4gIDE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtQQ0kgaW50ZXJmYWNlIGRyaXZlciBmb3IgTWFydmVsbCBQcmVzdGVyYSBTd2l0Y2ggQVNJQ3MgZmFtaWx5XCYjMzQ7XG4gIDIwOlx0XHRkZXBlbmRzIG9uIFBDSSBcdTAwMjZcdTAwMjYgSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBQUkVTVEVSQVxuICAyMTpcdFx0ZGVmYXVsdCBQUkVTVEVSQVxuICAyMjpcdFx0aGVscFxuICAyMzpcdFx0ICBUaGlzIGlzIGltcGxlbWVudGF0aW9uIG9mIFBDSSBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgTWFydmVsbCBQcmVzdGVyYVxuICAyNDpcdFx0ICBTd2l0Y2ggQVNJQ3MgZmFtaWx5LlxuICAyNTpcdFxuICAyNjpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAgMjc6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHByZXN0ZXJhX3BjaS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNDo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDcxCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IG93biB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBQcmVzdGVyYSBQQ0kgRHJpdmVyKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBwcmVzdGVyYV9wY2kuY2AsIHdoaWNoIGlzIHRoZSBQQ0kgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgTWFydmVsbCYjMzk7cyBQcmVzdGVyYSBTd2l0Y2ggQVNJQ3MuIFRoYXQgbmFycm93cyB0aGUgc2NvcGUgY29uc2lkZXJhYmx5LiBHaXZlbiB0aGF0LCBJIHdhbnQgdG8gemVybyBpbiBvbiB0aGUgYHByZXN0ZXJhX2xkcl9zZW5kYCBmdW5jdGlvbiB3aXRoaW4gdGhhdCBmaWxlLiBJdCYjMzk7cyBhIGtleSBmdW5jdGlvbiwgbGlrZWx5IHJlbGF0ZWQgdG8gbG9hZGluZyBvciBzZW5kaW5nIGRhdGEgdG8gdGhlIHN3aXRjaCwgcHJvYmFibHkgZmlybXdhcmUgb3IgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBQcmVzdGVyYSBBU0lDIHZpYSBQQ0ksIGFuZCB1bmRlcnN0YW5kaW5nIGBwcmVzdGVyYV9sZHJfc2VuZGAgd2lsbCBiZSBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoYXQgcHV6emxlLiBMZXQmIzM5O3Mgc2VlIGhvdyBpdCYjMzk7cyBpbXBsZW1lbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNDo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU4MDpcdHN0YXRpYyB2b2lkIHByZXN0ZXJhX2xkcl93cl9pZHhfY29tbWl0KHN0cnVjdCBwcmVzdGVyYV9mdyAqZncpXG4gNTgxOlx0e1xuIDU4MjpcdFx0cHJlc3RlcmFfbGRyX3dyaXRlKGZ3LCBQUkVTVEVSQV9MRFJfQlVGX1dSX1JFRywgZnctXHUwMDNlbGRyX3dyX2lkeCk7XG4gNTgzOlx0fVxuIDU4NDpcdFxuIDU4NTpcdHN0YXRpYyB1OCBfX2lvbWVtICpwcmVzdGVyYV9sZHJfd3JfcHRyKHN0cnVjdCBwcmVzdGVyYV9mdyAqZncpXG4gNTg2Olx0e1xuIDU4NzpcdFx0cmV0dXJuIGZ3LVx1MDAzZWxkcl9yaW5nX2J1ZiAmIzQzOyBmdy1cdTAwM2VsZHJfd3JfaWR4O1xuIDU4ODpcdH1cbiA1ODk6XHRcbiA1OTA6XHRzdGF0aWMgaW50IHByZXN0ZXJhX2xkcl9zZW5kKHN0cnVjdCBwcmVzdGVyYV9mdyAqZncsIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXG4gNTkxOlx0e1xuIDU5MjpcdFx0c2l6ZV90IHdyaXRlX2xlbiA9IEFMSUdOKGxlbiwgc2l6ZW9mKHUzMikpO1xuIDU5MzpcdFx0c2l6ZV90IGk7XG4gNTk0Olx0XHRpbnQgZXJyO1xuIDU5NTpcdFxuIDU5NjpcdFx0ZXJyID0gcHJlc3RlcmFfbGRyX3dhaXRfYnVmKGZ3LCB3cml0ZV9sZW4pO1xuIDU5NzpcdFx0aWYgKGVycikge1xuIDU5ODpcdFx0XHRkZXZfZXJyKGZ3LVx1MDAzZWRldi5kZXYsIFwmIzM0O2ZhaWxlZCB3YWl0IGZvciBzZW5kaW5nIGZpcm13YXJlXFxuXCYjMzQ7KTtcbiA1OTk6XHRcdFx0cmV0dXJuIGVycjtcbiA2MDA6XHRcdH1cbiA2MDE6XHRcbiA2MDI6XHRcdGZvciAoaSA9IDA7IGkgJiM0Mzsgc2l6ZW9mKHUzMikgXHUwMDNjPSBsZW47IGkgJiM0Mzs9IHNpemVvZih1MzIpKSB7XG4gNjAzOlx0XHRcdHdyaXRlbF9yZWxheGVkKGdldF91bmFsaWduZWQoKHUzMiAqKShidWYgJiM0MzsgaSkpLFxuIDYwNDpcdFx0XHRcdCAgICAgICBwcmVzdGVyYV9sZHJfd3JfcHRyKGZ3KSk7XG4gNjA1Olx0XHRcdHByZXN0ZXJhX2xkcl93cl9pZHhfbW92ZShmdywgNCk7XG4gNjA2Olx0XHR9XG4gNjA3Olx0XHRpZiAoaSBcdTAwM2MgbGVuKSB7XG4gNjA4Olx0XHRcdHUzMiBsYXN0ID0gMDtcbiA2MDk6XHRcbiA2MTA6XHRcdFx0bWVtY3B5KFx1MDAyNmxhc3QsIGJ1ZiAmIzQzOyBpLCBsZW4gLSBpKTtcbiA2MTE6XHRcdFx0d3JpdGVsX3JlbGF4ZWQobGFzdCwgcHJlc3RlcmFfbGRyX3dyX3B0cihmdykpO1xuIDYxMjpcdFx0XHRwcmVzdGVyYV9sZHJfd3JfaWR4X21vdmUoZncsIDQpO1xuIDYxMzpcdFx0fVxuIDYxNDpcdFxuIDYxNTpcdFx0cHJlc3RlcmFfbGRyX3dyX2lkeF9jb21taXQoZncpO1xuIDYxNjpcdFx0cmV0dXJuIDA7XG4gNjE3Olx0fVxuIDYxODpcdFxuIDYxOTpcdHN0YXRpYyBpbnQgcHJlc3RlcmFfbGRyX2Z3X3NlbmQoc3RydWN0IHByZXN0ZXJhX2Z3ICpmdyxcbiA2MjA6XHRcdFx0XHRcdGNvbnN0IGNoYXIgKmltZywgdTMyIGZ3X3NpemUpXG4gNjIxOlx0e1xuIDYyMjpcdFx0dTMyIHN0YXR1cztcbiA2MjM6XHRcdHUzMiBwb3M7XG4gNjI0Olx0XHRpbnQgZXJyO1xuIDYyNTpcdFxuIDYyNjpcdFx0ZXJyID0gcHJlc3RlcmFfbGRyX3dhaXRfcmVnMzIoZncsIFBSRVNURVJBX0xEUl9TVEFUVVNfUkVHLFxuIDYyNzpcdFx0XHRcdFx0ICAgICAgUFJFU1RFUkFfTERSX1NUQVRVU19JTUdfREwsXG4gNjI4Olx0XHRcdFx0XHQgICAgICA1ICogTVNFQ19QRVJfU0VDKTtcbiA2Mjk6XHRcdGlmIChlcnIpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTQwCgkJCQkJCQlvdXRwdXQ6IDk2CgkJCQkJCQl0aG91Z2h0czogMzg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCByaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgaXQmIzM5O3MgZGVhbGluZyB3aXRoIGBwcmVzdGVyYV9wY2kuY2AsIHRoZSBkcml2ZXIgZm9yIE1hcnZlbGwmIzM5O3MgUHJlc3RlcmEgc3dpdGNoIEFTSUNzLiBUaGF0JiMzOTtzIGEgdmVuZG9yLXNwZWNpZmljIFBDSSBoYXJkd2FyZSBkcml2ZXIsIHdoaWNoIGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgbWVudGFsIGNoZWNrbGlzdC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBJJiMzOTttIGZvbGxvd2luZyB0aGUgcnVsZXMgaGVyZS4uLiBSaWdodCwgSSByZWNhbGwgdGhlIGd1aWRhbmNlIGNsZWFybHk6IGNvZGUgdG91Y2hpbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIGRyaXZlcnMgdGhhdCByZWx5IG9uICpwaHlzaWNhbCogaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGVudmlyb25tZW50cywgbGlrZSBRRU1VLCBnZXRzIGEgYFdvcnRoRnV6emluZz1mYWxzZWAuCgpOb3csIE1hcnZlbGwgUHJlc3RlcmEgKmlzKiBwcmVjaXNlbHkgdGhhdCDigJMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJIHN3aXRjaCBBU0lDLiBJdCYjMzk7cyBpbiB0aGUgc2FtZSBjYXRlZ29yeSBhcyB0aGluZ3MgbGlrZSBtbHhzdywgd2hpY2ggSSB1bmRlcnN0YW5kIHdlbGwuIEl0IG5lZWRzIHRoYXQgc3BlY2lmaWMgQVNJQyBvciBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlOyBzdGFuZGFyZCBRRU1VIGp1c3Qgd29uJiMzOTt0IGN1dCBpdC4gVGhpbmtpbmcgYWJvdXQgdGhlIGNvZGUgaXRzZWxmLCB0aGlzIGBwcmVzdGVyYV9sZHJfc2VuZGAgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZyB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzLiBJIHRyYWNlIHRoYXQgdGhyb3VnaCBgcHJlc3RlcmFfbGRyX2Z3X3NlbmRgLCB0aGVuIGBwcmVzdGVyYV9md19sb2FkYCwgYW5kIGZpbmFsbHksIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgYHByZXN0ZXJhX3BjaV9wcm9iZWAuIFRoaXMgaXMgYWxsIGhhcHBlbmluZyBkdXJpbmcgaGFyZHdhcmUgcHJvYmluZywgd2hpY2ggaGFwcGVucyBvbmx5IHdpdGggdGhlIHByZXNlbmNlIG9mIHRoZSBwaHlzaWNhbCBoYXJkd2FyZS4KClNvLCBsb2dpY2FsbHksIGdpdmVuIHRoZSBjb250ZXh0IGFuZCB0aGUgcnVsZXMsIGBXb3J0aEZ1enppbmdgIGhhcyB0byBiZSBgZmFsc2VgLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIGdvIHRocm91Z2ggdGhlIGZpZWxkczoKCiogICAqKkZvY3VzU3ltYm9sczoqKiBUaGlzIGlzIGVtcHR5IOKAkyBubyBzcGVjaWZpYyBzeW1ib2xzIG5lZWQgdGFyZ2V0ZWQgZnV6emluZwoqICAgKipFbmFibGVDb25maWdzOioqIFNpbWlsYXJseSwgYW4gZW1wdHkgbGlzdC4KKiAgICoqV29ydGhGdXp6aW5nOioqIFdlJiMzOTt2ZSBlc3RhYmxpc2hlZCwgd2l0aCBjZXJ0YWludHksIGFzIGBmYWxzZWAuCiogICAqKlJlYXNvbmluZzoqKiBUbyBzdW1tYXJpemUsIHRoaXMgY2hhbmdlIG1vZGlmaWVzIGBwcmVzdGVyYV9sZHJfc2VuZGAgd2l0aGluIGBwcmVzdGVyYV9wY2kuY2AsIHdoaWNoLCBhcyBhIE1hcnZlbGwgUHJlc3RlcmEgU3dpdGNoIEFTSUMgUENJZSBkcml2ZXIsIHJlbGllcyBvbiAqc3BlY2lmaWMqIHBoeXNpY2FsIFBDSWUgc3dpdGNoIGhhcmR3YXJlIHRoYXQmIzM5O3Mgbm90IGVtdWxhdGVkIGluIHR5cGljYWwgUUVNVSBvciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4gVGhpcyBjb25maXJtcyBteSBqdWRnZW1lbnQuCgpBbHJpZ2h0LCB3aXRoIHRoYXQgc29saWRpZmllZCwgSSBhbSByZWFkeSB0byBwcmVwYXJlIHRoZSB0b29sIGNhbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE0OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX3BjaS5jLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCBBU0lDIGRyaXZlciAoTWFydmVsbCBQcmVzdGVyYSkuIEl0IHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgc3dpdGNoIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBjb2RlIGlzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmMsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIEFTSUMgZHJpdmVyIChNYXJ2ZWxsIFByZXN0ZXJhKS4gSXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBzd2l0Y2ggaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE0OjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNDozNDozOC40ODAzNzM1NTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjEwNTAxNzU5MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBjb2RlIGlzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmMsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIEFTSUMgZHJpdmVyIChNYXJ2ZWxsIFByZXN0ZXJhKS4gSXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBzd2l0Y2ggaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE0OjM0OjM4LjQ4MDM3ODIxNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY4MzU0OTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNGFiYmYwZmMxYTg5ZDQ5MzZkYzliYWYxYWVmMmI4ZTg3MmMyN2E3OVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAzMCAxNDozNDozNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX3BjaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9wY2kuY1xcbmluZGV4IDFhZDBlNjJhODQzM2IuLjliM2Q2ZTVhODFkMWMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9wY2kuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmNcXG5AQCAtNTg5LDE3ICs1ODksMjYgQEAgc3RhdGljIHU4IF9faW9tZW0gKnByZXN0ZXJhX2xkcl93cl9wdHIoc3RydWN0IHByZXN0ZXJhX2Z3ICpmdylcXG4gXFxuIHN0YXRpYyBpbnQgcHJlc3RlcmFfbGRyX3NlbmQoc3RydWN0IHByZXN0ZXJhX2Z3ICpmdywgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcXG4ge1xcbitcXHRzaXplX3Qgd3JpdGVfbGVuID0gQUxJR04obGVuLCBzaXplb2YodTMyKSk7XFxuK1xcdHNpemVfdCBpO1xcbiBcXHRpbnQgZXJyO1xcbi1cXHRpbnQgaTtcXG4gXFxuLVxcdGVyciA9IHByZXN0ZXJhX2xkcl93YWl0X2J1ZihmdywgbGVuKTtcXG4rXFx0ZXJyID0gcHJlc3RlcmFfbGRyX3dhaXRfYnVmKGZ3LCB3cml0ZV9sZW4pO1xcbiBcXHRpZiAoZXJyKSB7XFxuIFxcdFxcdGRldl9lcnIoZnctXFx1MDAzZWRldi5kZXYsIFxcXCJmYWlsZWQgd2FpdCBmb3Igc2VuZGluZyBmaXJtd2FyZVxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcdH1cXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBsZW47IGkgKz0gNCkge1xcbi1cXHRcXHR3cml0ZWxfcmVsYXhlZCgqKHUzMiAqKShidWYgKyBpKSwgcHJlc3RlcmFfbGRyX3dyX3B0cihmdykpO1xcbitcXHRmb3IgKGkgPSAwOyBpICsgc2l6ZW9mKHUzMikgXFx1MDAzYz0gbGVuOyBpICs9IHNpemVvZih1MzIpKSB7XFxuK1xcdFxcdHdyaXRlbF9yZWxheGVkKGdldF91bmFsaWduZWQoKHUzMiAqKShidWYgKyBpKSksXFxuK1xcdFxcdFxcdCAgICAgICBwcmVzdGVyYV9sZHJfd3JfcHRyKGZ3KSk7XFxuK1xcdFxcdHByZXN0ZXJhX2xkcl93cl9pZHhfbW92ZShmdywgNCk7XFxuK1xcdH1cXG4rXFx0aWYgKGkgXFx1MDAzYyBsZW4pIHtcXG4rXFx0XFx0dTMyIGxhc3QgPSAwO1xcbitcXG4rXFx0XFx0bWVtY3B5KFxcdTAwMjZsYXN0LCBidWYgKyBpLCBsZW4gLSBpKTtcXG4rXFx0XFx0d3JpdGVsX3JlbGF4ZWQobGFzdCwgcHJlc3RlcmFfbGRyX3dyX3B0cihmdykpO1xcbiBcXHRcXHRwcmVzdGVyYV9sZHJfd3JfaWR4X21vdmUoZncsIDQpO1xcbiBcXHR9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNDozNDozOC44NDkzNjgyOTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjk2MDY4MTE2MjMxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX3BjaS5jLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCBBU0lDIGRyaXZlciAoTWFydmVsbCBQcmVzdGVyYSkuIEl0IHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgc3dpdGNoIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0YWJiZjBmYzFhODlkNDkzNmRjOWJhZjFhZWYyYjhlODcyYzI3YTc5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMzAgMTQ6MzQ6MzcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX3BjaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9wY2kuY1xuaW5kZXggMWFkMGU2MmE4NDMzYi4uOWIzZDZlNWE4MWQxYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmNcbkBAIC01ODksMTcgKzU4OSwyNiBAQCBzdGF0aWMgdTggX19pb21lbSAqcHJlc3RlcmFfbGRyX3dyX3B0cihzdHJ1Y3QgcHJlc3RlcmFfZncgKmZ3KVxuIFxuIHN0YXRpYyBpbnQgcHJlc3RlcmFfbGRyX3NlbmQoc3RydWN0IHByZXN0ZXJhX2Z3ICpmdywgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcbiB7XG4rXHRzaXplX3Qgd3JpdGVfbGVuID0gQUxJR04obGVuLCBzaXplb2YodTMyKSk7XG4rXHRzaXplX3QgaTtcbiBcdGludCBlcnI7XG4tXHRpbnQgaTtcbiBcbi1cdGVyciA9IHByZXN0ZXJhX2xkcl93YWl0X2J1ZihmdywgbGVuKTtcbitcdGVyciA9IHByZXN0ZXJhX2xkcl93YWl0X2J1Zihmdywgd3JpdGVfbGVuKTtcbiBcdGlmIChlcnIpIHtcbiBcdFx0ZGV2X2Vycihmdy1cdTAwM2VkZXYuZGV2LCBcImZhaWxlZCB3YWl0IGZvciBzZW5kaW5nIGZpcm13YXJlXFxuXCIpO1xuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbGVuOyBpICs9IDQpIHtcbi1cdFx0d3JpdGVsX3JlbGF4ZWQoKih1MzIgKikoYnVmICsgaSksIHByZXN0ZXJhX2xkcl93cl9wdHIoZncpKTtcbitcdGZvciAoaSA9IDA7IGkgKyBzaXplb2YodTMyKSBcdTAwM2M9IGxlbjsgaSArPSBzaXplb2YodTMyKSkge1xuK1x0XHR3cml0ZWxfcmVsYXhlZChnZXRfdW5hbGlnbmVkKCh1MzIgKikoYnVmICsgaSkpLFxuK1x0XHRcdCAgICAgICBwcmVzdGVyYV9sZHJfd3JfcHRyKGZ3KSk7XG4rXHRcdHByZXN0ZXJhX2xkcl93cl9pZHhfbW92ZShmdywgNCk7XG4rXHR9XG4rXHRpZiAoaSBcdTAwM2MgbGVuKSB7XG4rXHRcdHUzMiBsYXN0ID0gMDtcbitcbitcdFx0bWVtY3B5KFx1MDAyNmxhc3QsIGJ1ZiArIGksIGxlbiAtIGkpO1xuK1x0XHR3cml0ZWxfcmVsYXhlZChsYXN0LCBwcmVzdGVyYV9sZHJfd3JfcHRyKGZ3KSk7XG4gXHRcdHByZXN0ZXJhX2xkcl93cl9pZHhfbW92ZShmdywgNCk7XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNDozNDozOC44NDkzNzEzNjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MzQxNDMyMTgzNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBhc2tlZCB0byBhc3Nlc3MgdGhpcyBwYXRjaCBhbmQgZGV0ZXJtaW5lIGlmIGl0J3MgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZywgc3BlY2lmaWNhbGx5IGJ5IHNldHRpbmcgYFdvcnRoRnV6emluZz10cnVlYCBvciBgZmFsc2VgLiBMZXQncyBkaXZlIGluLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmNgLCB3aGljaCByaW5ncyBzb21lIGJlbGxzIGJlY2F1c2UgdGhhdCdzIHVzdWFsbHkgYSBnb29kIHBsYWNlIHRvIGZpbmQgaW50ZXJlc3RpbmcgbmV0d29yayBpbnRlcmFjdGlvbnMuIFNwZWNpZmljYWxseSwgaXQgaW52b2x2ZXMgdGhlIGBwcmVzdGVyYV9sZHJfc2VuZGAgZnVuY3Rpb24sIHdoaWNoIGltcGxpZXMgc29tZSBraW5kIG9mIGxvdy1sZXZlbCBkYXRhIHRyYW5zZmVyIHdpdGhpbiBhIE1hcnZlbGwgUHJlc3RlcmEgRXRoZXJuZXQgc3dpdGNoIGRyaXZlci5cblxuQmVmb3JlIEkgZ2V0IHRvbyBleGNpdGVkLCBJIG5lZWQgdG8gY29uc3VsdCB0aGUgZXN0YWJsaXNoZWQgZ3VpZGVsaW5lcyBmb3IgZnV6emluZyB0YXJnZXRzLiBNeSBpbW1lZGlhdGUgY29uY2VybnMgYXJlOiBkb2VzIHRoaXMgY29kZSByZXF1aXJlIHNwZWNpYWxpemVkIGhhcmR3YXJlLCBhbmQgaXMgdGhpcyBhY2Nlc3NpYmxlIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJJ3ZlIGdvdCB0byBtYWtlIHN1cmUgdGhpcyBjb2RlIGlzbid0IHRpZWQgdG8gc29tZSBzcGVjaWZpYyBQQ0llIGNhcmQgdGhhdCdzIGltcG9zc2libGUgdG8gZW11bGF0ZSB3ZWxsIGluIGEgc3RhbmRhcmQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4gQ29kZSB0aWVkIHRvIHRoaW5ncyBsaWtlIFNtYXJ0TklDcywgR1BVcyBvciB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBjYW4ndCBiZSB3ZWxsIGVtdWxhdGVkIGFyZSBnZW5lcmFsbHkgbm90IHN1aXRhYmxlLiBTaW1pbGFybHksIGlmIHRoZSBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLCBpdCdzIGEgbm8tZ28uXG5cblRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSdtIGdvaW5nIHRvIGxldmVyYWdlIG15IGZhbWlsaWFyaXR5IHdpdGggdGhlIGNvZGViYXNlIGFuZCBtYWtlIHNvbWUgcXVpY2sgY2hlY2tzLiBJJ2xsIHVzZSBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gY2hlY2sgdGhlIEtjb25maWcgYW5kIGBwcmVzdGVyYV9wY2kuY2Agc291cmNlIGNvZGUsIHNvIEkgY2FuIHNlZSB3aGF0IGBwcmVzdGVyYWAgaXMgYW5kIHdoZXJlIHRoaXMgYHByZXN0ZXJhX3BjaS5jYCBmaWxlIGlzIHVzZWQuIEknbGwgbG9vayBmb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb24sIGhhcmR3YXJlIGRlcGVuZGVuY2llcywgYW5kIGFueSBtZW50aW9ucyBvZiBzcGVjaWZpYyBQQ0llIGRldmljZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiBvZiB0aGlzIGRyaXZlciBhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlIGBwcmVzdGVyYV9sZHJfc2VuZGAgZnVuY3Rpb24gaXMgY2FsbGVkLiBXaXRoIHRoYXQgaW5mb3JtYXRpb24sIEkgY2FuIG1ha2UgYSBkZWNpc2lvbiBhYm91dCB0aGUgZnV6emluZyB3b3J0aGluZXNzIG9mIHRoZSBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQxOCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE0OjQzOjMyLjk5MjU5MjQ1M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzMyMDMxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfUFJFU1RFUkFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfUFJFU1RFUkEpXFx0Kz0gcHJlc3RlcmEub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvTWFrZWZpbGUtMy1wcmVzdGVyYS1vYmpzXFx0XFx0Oj0gcHJlc3RlcmFfbWFpbi5vIHByZXN0ZXJhX2h3Lm8gcHJlc3RlcmFfZHNhLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9NYWtlZmlsZS04LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfUFJFU1RFUkFfUENJKVxcdCs9IHByZXN0ZXJhX3BjaS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE0OjQzOjMzLjAzOTkxNjk5OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgzNjI5NDI0ODMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGZpbGU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTWFydmVsbCBQcmVzdGVyYSBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWdgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIE1hcnZlbGwgUHJlc3RlcmEgRXRoZXJuZXQgZHJpdmVyLiBJJ20gYWxyZWFkeSBwcmV0dHkgZmFtaWxpYXIgd2l0aCB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgS2NvbmZpZyBmaWxlcywgc28gSSdsbCBiZSBsb29raW5nIGZvciBhIGZldyBrZXkgdGhpbmdzIHJpZ2h0IG9mZiB0aGUgYmF0LiBGaXJzdCwgSSdsbCBiZSBzY2FubmluZyBmb3IgdGhlIG1haW4gYGNvbmZpZ2Agc3ltYm9scyB0aGF0IGVuYWJsZSBvciBkaXNhYmxlIHRoZSBkcml2ZXIgaXRzZWxmIOKAkyB0aGUgdG9wLWxldmVsIGNvbmZpZ3VyYXRpb24ga25vYnMuIFRoZW4sIEknbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGVwZW5kZW5jaWVzLiBXaGljaCBvdGhlciBtb2R1bGVzIG9yIGhhcmR3YXJlIGZlYXR1cmVzIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUgdGhpcyBkcml2ZXIgY2FuIGV2ZW4gYmUgY29uc2lkZXJlZD8gSSBleHBlY3QgdGhlcmUgdG8gYmUgZGVwZW5kZW5jaWVzIG9uIHRoaW5ncyBsaWtlIHRoZSBNYXJ2ZWxsIHBsYXRmb3JtIGNvZGUsIFBIWSBkcml2ZXJzLCBhbmQgcG90ZW50aWFsbHkgZXZlbiBzcGVjaWZpYyBFdGhlcm5ldCBjb250cm9sbGVyIHJldmlzaW9ucy5cblxuTmV4dCwgSSdsbCBuZWVkIHRvIGlkZW50aWZ5IGFueSBzcGVjaWZpYyBmZWF0dXJlcyB0aGUgUHJlc3RlcmEgZHJpdmVyIGV4cG9zZXMgdGhyb3VnaCBpdHMgS2NvbmZpZyBvcHRpb25zLiBUaGluZ3MgbGlrZSBzdXBwb3J0IGZvciBkaWZmZXJlbnQgc3BlZWQgZ3JhZGVzLCBWTEFOIGhhbmRsaW5nLCBRb1MgZmVhdHVyZXMsIHNwZWNpZmljIGhhcmR3YXJlIG9mZmxvYWQgY2FwYWJpbGl0aWVzIOKAkyB0aGVzZSBhcmUgd2hhdCByZWFsbHkgaW50ZXJlc3QgbWUuIEknbGwgYmUgcGFyc2luZyB0aGUgaGVscCB0ZXh0IGFzc29jaWF0ZWQgd2l0aCBlYWNoIG9wdGlvbiB0byBnZXQgYSBwcmVjaXNlIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCB0aGV5IGRvIGFuZCBob3cgdGhleSBtaWdodCBhZmZlY3QgcGVyZm9ybWFuY2Ugb3IgcmVzb3VyY2UgdXNhZ2UuIEknbGwgYWxzbyBiZSB3YXRjaGluZyBmb3IgYW55IGBzZWxlY3RgIHN0YXRlbWVudHMgdGhhdCBtaWdodCBhdXRvbWF0aWNhbGx5IGVuYWJsZSBvdGhlciBvcHRpb25zIGJhc2VkIG9uIHRoZSBjaG9zZW4gY29uZmlndXJhdGlvbi4gRmluYWxseSwgSSdsbCBjaGVjayBmb3IgYW55IHRyaXN0YXRlIG9yIGJvb2xlYW4gb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIG15IGFyZWEgb2YgZXhwZXJ0aXNlLiBJJ20ga2VlbiB0byB1bmNvdmVyIGFueXRoaW5nIHRoYXQgbWlnaHQgYWZmZWN0IG15IHNwZWNpZmljIHVzZSBjYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzIxLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTQ6NDQ6NTYuNjY5MzQ0MzAxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUzODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1hcnZlbGwgUHJlc3RlcmEgZHJpdmVycyBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBQUkVTVEVSQVxcbiAgIDc6XFx0XFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgUHJlc3RlcmEgU3dpdGNoIEFTSUNzIHN1cHBvcnRcXFwiXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVYgXFx1MDAyNlxcdTAwMjYgVkxBTl84MDIxUVxcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cXG4gIDEwOlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAgMTE6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCBQcmVzdGVyYSBTd2l0Y2ggQVNJQ3MgZmFtaWx5LlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAgMTY6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgcHJlc3RlcmEuXFxuICAxNzpcXHRcXG4gIDE4OlxcdGNvbmZpZyBQUkVTVEVSQV9QQ0lcXG4gIDE5OlxcdFxcdHRyaXN0YXRlIFxcXCJQQ0kgaW50ZXJmYWNlIGRyaXZlciBmb3IgTWFydmVsbCBQcmVzdGVyYSBTd2l0Y2ggQVNJQ3MgZmFtaWx5XFxcIlxcbiAgMjA6XFx0XFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IFBSRVNURVJBXFxuICAyMTpcXHRcXHRkZWZhdWx0IFBSRVNURVJBXFxuICAyMjpcXHRcXHRoZWxwXFxuICAyMzpcXHRcXHQgIFRoaXMgaXMgaW1wbGVtZW50YXRpb24gb2YgUENJIGludGVyZmFjZSBzdXBwb3J0IGZvciBNYXJ2ZWxsIFByZXN0ZXJhXFxuICAyNDpcXHRcXHQgIFN3aXRjaCBBU0lDcyBmYW1pbHkuXFxuICAyNTpcXHRcXG4gIDI2OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuICAyNzpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBwcmVzdGVyYV9wY2kuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE0OjQ0OjU2LjY2OTQwMTQ5MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk2ODM4OTU5MTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IG93biB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIFByZXN0ZXJhIFBDSSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGBwcmVzdGVyYV9wY2kuY2AsIHdoaWNoIGlzIHRoZSBQQ0kgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgTWFydmVsbCdzIFByZXN0ZXJhIFN3aXRjaCBBU0lDcy4gVGhhdCBuYXJyb3dzIHRoZSBzY29wZSBjb25zaWRlcmFibHkuIEdpdmVuIHRoYXQsIEkgd2FudCB0byB6ZXJvIGluIG9uIHRoZSBgcHJlc3RlcmFfbGRyX3NlbmRgIGZ1bmN0aW9uIHdpdGhpbiB0aGF0IGZpbGUuIEl0J3MgYSBrZXkgZnVuY3Rpb24sIGxpa2VseSByZWxhdGVkIHRvIGxvYWRpbmcgb3Igc2VuZGluZyBkYXRhIHRvIHRoZSBzd2l0Y2gsIHByb2JhYmx5IGZpcm13YXJlIG9yIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgUHJlc3RlcmEgQVNJQyB2aWEgUENJLCBhbmQgdW5kZXJzdGFuZGluZyBgcHJlc3RlcmFfbGRyX3NlbmRgIHdpbGwgYmUgYSBjcml0aWNhbCBwaWVjZSBvZiB0aGF0IHB1enpsZS4gTGV0J3Mgc2VlIGhvdyBpdCdzIGltcGxlbWVudGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDcxLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNDo0NjozMy41MDgzNjI1NTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDAyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1ODAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1ODA6XFx0c3RhdGljIHZvaWQgcHJlc3RlcmFfbGRyX3dyX2lkeF9jb21taXQoc3RydWN0IHByZXN0ZXJhX2Z3ICpmdylcXG4gNTgxOlxcdHtcXG4gNTgyOlxcdFxcdHByZXN0ZXJhX2xkcl93cml0ZShmdywgUFJFU1RFUkFfTERSX0JVRl9XUl9SRUcsIGZ3LVxcdTAwM2VsZHJfd3JfaWR4KTtcXG4gNTgzOlxcdH1cXG4gNTg0OlxcdFxcbiA1ODU6XFx0c3RhdGljIHU4IF9faW9tZW0gKnByZXN0ZXJhX2xkcl93cl9wdHIoc3RydWN0IHByZXN0ZXJhX2Z3ICpmdylcXG4gNTg2OlxcdHtcXG4gNTg3OlxcdFxcdHJldHVybiBmdy1cXHUwMDNlbGRyX3JpbmdfYnVmICsgZnctXFx1MDAzZWxkcl93cl9pZHg7XFxuIDU4ODpcXHR9XFxuIDU4OTpcXHRcXG4gNTkwOlxcdHN0YXRpYyBpbnQgcHJlc3RlcmFfbGRyX3NlbmQoc3RydWN0IHByZXN0ZXJhX2Z3ICpmdywgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcXG4gNTkxOlxcdHtcXG4gNTkyOlxcdFxcdHNpemVfdCB3cml0ZV9sZW4gPSBBTElHTihsZW4sIHNpemVvZih1MzIpKTtcXG4gNTkzOlxcdFxcdHNpemVfdCBpO1xcbiA1OTQ6XFx0XFx0aW50IGVycjtcXG4gNTk1OlxcdFxcbiA1OTY6XFx0XFx0ZXJyID0gcHJlc3RlcmFfbGRyX3dhaXRfYnVmKGZ3LCB3cml0ZV9sZW4pO1xcbiA1OTc6XFx0XFx0aWYgKGVycikge1xcbiA1OTg6XFx0XFx0XFx0ZGV2X2Vycihmdy1cXHUwMDNlZGV2LmRldiwgXFxcImZhaWxlZCB3YWl0IGZvciBzZW5kaW5nIGZpcm13YXJlXFxcXG5cXFwiKTtcXG4gNTk5OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDYwMDpcXHRcXHR9XFxuIDYwMTpcXHRcXG4gNjAyOlxcdFxcdGZvciAoaSA9IDA7IGkgKyBzaXplb2YodTMyKSBcXHUwMDNjPSBsZW47IGkgKz0gc2l6ZW9mKHUzMikpIHtcXG4gNjAzOlxcdFxcdFxcdHdyaXRlbF9yZWxheGVkKGdldF91bmFsaWduZWQoKHUzMiAqKShidWYgKyBpKSksXFxuIDYwNDpcXHRcXHRcXHRcXHQgICAgICAgcHJlc3RlcmFfbGRyX3dyX3B0cihmdykpO1xcbiA2MDU6XFx0XFx0XFx0cHJlc3RlcmFfbGRyX3dyX2lkeF9tb3ZlKGZ3LCA0KTtcXG4gNjA2OlxcdFxcdH1cXG4gNjA3OlxcdFxcdGlmIChpIFxcdTAwM2MgbGVuKSB7XFxuIDYwODpcXHRcXHRcXHR1MzIgbGFzdCA9IDA7XFxuIDYwOTpcXHRcXG4gNjEwOlxcdFxcdFxcdG1lbWNweShcXHUwMDI2bGFzdCwgYnVmICsgaSwgbGVuIC0gaSk7XFxuIDYxMTpcXHRcXHRcXHR3cml0ZWxfcmVsYXhlZChsYXN0LCBwcmVzdGVyYV9sZHJfd3JfcHRyKGZ3KSk7XFxuIDYxMjpcXHRcXHRcXHRwcmVzdGVyYV9sZHJfd3JfaWR4X21vdmUoZncsIDQpO1xcbiA2MTM6XFx0XFx0fVxcbiA2MTQ6XFx0XFxuIDYxNTpcXHRcXHRwcmVzdGVyYV9sZHJfd3JfaWR4X2NvbW1pdChmdyk7XFxuIDYxNjpcXHRcXHRyZXR1cm4gMDtcXG4gNjE3OlxcdH1cXG4gNjE4OlxcdFxcbiA2MTk6XFx0c3RhdGljIGludCBwcmVzdGVyYV9sZHJfZndfc2VuZChzdHJ1Y3QgcHJlc3RlcmFfZncgKmZ3LFxcbiA2MjA6XFx0XFx0XFx0XFx0XFx0Y29uc3QgY2hhciAqaW1nLCB1MzIgZndfc2l6ZSlcXG4gNjIxOlxcdHtcXG4gNjIyOlxcdFxcdHUzMiBzdGF0dXM7XFxuIDYyMzpcXHRcXHR1MzIgcG9zO1xcbiA2MjQ6XFx0XFx0aW50IGVycjtcXG4gNjI1OlxcdFxcbiA2MjY6XFx0XFx0ZXJyID0gcHJlc3RlcmFfbGRyX3dhaXRfcmVnMzIoZncsIFBSRVNURVJBX0xEUl9TVEFUVVNfUkVHLFxcbiA2Mjc6XFx0XFx0XFx0XFx0XFx0ICAgICAgUFJFU1RFUkFfTERSX1NUQVRVU19JTUdfREwsXFxuIDYyODpcXHRcXHRcXHRcXHRcXHQgICAgICA1ICogTVNFQ19QRVJfU0VDKTtcXG4gNjI5OlxcdFxcdGlmIChlcnIpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTQ6NDY6MzMuNTA4NDY0MTMzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ2MDIyMDMzMzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgcmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIGl0J3MgZGVhbGluZyB3aXRoIGBwcmVzdGVyYV9wY2kuY2AsIHRoZSBkcml2ZXIgZm9yIE1hcnZlbGwncyBQcmVzdGVyYSBzd2l0Y2ggQVNJQ3MuIFRoYXQncyBhIHZlbmRvci1zcGVjaWZpYyBQQ0kgaGFyZHdhcmUgZHJpdmVyLCB3aGljaCBpbW1lZGlhdGVseSB0cmlnZ2VycyBhIG1lbnRhbCBjaGVja2xpc3QuIExldCdzIG1ha2Ugc3VyZSBJJ20gZm9sbG93aW5nIHRoZSBydWxlcyBoZXJlLi4uIFJpZ2h0LCBJIHJlY2FsbCB0aGUgZ3VpZGFuY2UgY2xlYXJseTogY29kZSB0b3VjaGluZyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2ggZHJpdmVycyB0aGF0IHJlbHkgb24gKnBoeXNpY2FsKiBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgZW52aXJvbm1lbnRzLCBsaWtlIFFFTVUsIGdldHMgYSBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuTm93LCBNYXJ2ZWxsIFByZXN0ZXJhICppcyogcHJlY2lzZWx5IHRoYXQg4oCTIGEgdmVuZG9yLXNwZWNpZmljIFBDSSBzd2l0Y2ggQVNJQy4gSXQncyBpbiB0aGUgc2FtZSBjYXRlZ29yeSBhcyB0aGluZ3MgbGlrZSBtbHhzdywgd2hpY2ggSSB1bmRlcnN0YW5kIHdlbGwuIEl0IG5lZWRzIHRoYXQgc3BlY2lmaWMgQVNJQyBvciBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlOyBzdGFuZGFyZCBRRU1VIGp1c3Qgd29uJ3QgY3V0IGl0LiBUaGlua2luZyBhYm91dCB0aGUgY29kZSBpdHNlbGYsIHRoaXMgYHByZXN0ZXJhX2xkcl9zZW5kYCBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MuIEkgdHJhY2UgdGhhdCB0aHJvdWdoIGBwcmVzdGVyYV9sZHJfZndfc2VuZGAsIHRoZW4gYHByZXN0ZXJhX2Z3X2xvYWRgLCBhbmQgZmluYWxseSwgaXQncyBjYWxsZWQgZHVyaW5nIGBwcmVzdGVyYV9wY2lfcHJvYmVgLiBUaGlzIGlzIGFsbCBoYXBwZW5pbmcgZHVyaW5nIGhhcmR3YXJlIHByb2JpbmcsIHdoaWNoIGhhcHBlbnMgb25seSB3aXRoIHRoZSBwcmVzZW5jZSBvZiB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuXG5cblNvLCBsb2dpY2FsbHksIGdpdmVuIHRoZSBjb250ZXh0IGFuZCB0aGUgcnVsZXMsIGBXb3J0aEZ1enppbmdgIGhhcyB0byBiZSBgZmFsc2VgLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdsbCBnbyB0aHJvdWdoIHRoZSBmaWVsZHM6XG5cbiogICAqKkZvY3VzU3ltYm9sczoqKiBUaGlzIGlzIGVtcHR5IOKAkyBubyBzcGVjaWZpYyBzeW1ib2xzIG5lZWQgdGFyZ2V0ZWQgZnV6emluZ1xuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBTaW1pbGFybHksIGFuIGVtcHR5IGxpc3QuXG4qICAgKipXb3J0aEZ1enppbmc6KiogV2UndmUgZXN0YWJsaXNoZWQsIHdpdGggY2VydGFpbnR5LCBhcyBgZmFsc2VgLlxuKiAgICoqUmVhc29uaW5nOioqIFRvIHN1bW1hcml6ZSwgdGhpcyBjaGFuZ2UgbW9kaWZpZXMgYHByZXN0ZXJhX2xkcl9zZW5kYCB3aXRoaW4gYHByZXN0ZXJhX3BjaS5jYCwgd2hpY2gsIGFzIGEgTWFydmVsbCBQcmVzdGVyYSBTd2l0Y2ggQVNJQyBQQ0llIGRyaXZlciwgcmVsaWVzIG9uICpzcGVjaWZpYyogcGh5c2ljYWwgUENJZSBzd2l0Y2ggaGFyZHdhcmUgdGhhdCdzIG5vdCBlbXVsYXRlZCBpbiB0eXBpY2FsIFFFTVUgb3IgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuIFRoaXMgY29uZmlybXMgbXkganVkZ2VtZW50LlxuXG5BbHJpZ2h0LCB3aXRoIHRoYXQgc29saWRpZmllZCwgSSBhbSByZWFkeSB0byBwcmVwYXJlIHRoZSB0b29sIGNhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNDAsIk91dHB1dFRva2VucyI6OTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNDo1MDozOS41MzA1MDA1MjRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjQyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBjb2RlIGlzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmMsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIEFTSUMgZHJpdmVyIChNYXJ2ZWxsIFByZXN0ZXJhKS4gSXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBzd2l0Y2ggaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9wY2kuYywgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2ggQVNJQyBkcml2ZXIgKE1hcnZlbGwgUHJlc3RlcmEpLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIHN3aXRjaCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTQ6NTA6MzkuNTMwNTMyOTE0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwqtlm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-30 14:32:48 +0000 UTC FinishedAt: 2026-08-30 14:50:41 +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+CgkJCTx0ZD4yMDI2LzA4LzMwIDE0OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTZtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9wY2kuYywgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2ggQVNJQyBkcml2ZXIgKE1hcnZlbGwgUHJlc3RlcmEpLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIHN3aXRjaCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNDozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDRhYmJmMGZjMWE4OWQ0OTM2ZGM5YmFmMWFlZjJiOGU4NzJjMjdhNzlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAzMCAxNDozNDozNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX3BjaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9wY2kuY1xuaW5kZXggMWFkMGU2MmE4NDMzYi4uOWIzZDZlNWE4MWQxYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmNcbkBAIC01ODksMTcgJiM0Mzs1ODksMjYgQEAgc3RhdGljIHU4IF9faW9tZW0gKnByZXN0ZXJhX2xkcl93cl9wdHIoc3RydWN0IHByZXN0ZXJhX2Z3ICpmdylcbiBcbiBzdGF0aWMgaW50IHByZXN0ZXJhX2xkcl9zZW5kKHN0cnVjdCBwcmVzdGVyYV9mdyAqZncsIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXG4ge1xuJiM0MztcdHNpemVfdCB3cml0ZV9sZW4gPSBBTElHTihsZW4sIHNpemVvZih1MzIpKTtcbiYjNDM7XHRzaXplX3QgaTtcbiBcdGludCBlcnI7XG4tXHRpbnQgaTtcbiBcbi1cdGVyciA9IHByZXN0ZXJhX2xkcl93YWl0X2J1ZihmdywgbGVuKTtcbiYjNDM7XHRlcnIgPSBwcmVzdGVyYV9sZHJfd2FpdF9idWYoZncsIHdyaXRlX2xlbik7XG4gXHRpZiAoZXJyKSB7XG4gXHRcdGRldl9lcnIoZnctXHUwMDNlZGV2LmRldiwgXCYjMzQ7ZmFpbGVkIHdhaXQgZm9yIHNlbmRpbmcgZmlybXdhcmVcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbGVuOyBpICYjNDM7PSA0KSB7XG4tXHRcdHdyaXRlbF9yZWxheGVkKCoodTMyICopKGJ1ZiAmIzQzOyBpKSwgcHJlc3RlcmFfbGRyX3dyX3B0cihmdykpO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgJiM0Mzsgc2l6ZW9mKHUzMikgXHUwMDNjPSBsZW47IGkgJiM0Mzs9IHNpemVvZih1MzIpKSB7XG4mIzQzO1x0XHR3cml0ZWxfcmVsYXhlZChnZXRfdW5hbGlnbmVkKCh1MzIgKikoYnVmICYjNDM7IGkpKSxcbiYjNDM7XHRcdFx0ICAgICAgIHByZXN0ZXJhX2xkcl93cl9wdHIoZncpKTtcbiYjNDM7XHRcdHByZXN0ZXJhX2xkcl93cl9pZHhfbW92ZShmdywgNCk7XG4mIzQzO1x0fVxuJiM0MztcdGlmIChpIFx1MDAzYyBsZW4pIHtcbiYjNDM7XHRcdHUzMiBsYXN0ID0gMDtcbiYjNDM7XG4mIzQzO1x0XHRtZW1jcHkoXHUwMDI2bGFzdCwgYnVmICYjNDM7IGksIGxlbiAtIGkpO1xuJiM0MztcdFx0d3JpdGVsX3JlbGF4ZWQobGFzdCwgcHJlc3RlcmFfbGRyX3dyX3B0cihmdykpO1xuIFx0XHRwcmVzdGVyYV9sZHJfd3JfaWR4X21vdmUoZncsIDQpO1xuIFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE0OjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjE2bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBjb2RlIGlzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmMsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIEFTSUMgZHJpdmVyIChNYXJ2ZWxsIFByZXN0ZXJhKS4gSXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBzd2l0Y2ggaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0YWJiZjBmYzFhODlkNDkzNmRjOWJhZjFhZWYyYjhlODcyYzI3YTc5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMzAgMTQ6MzQ6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX3BjaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9wY2kuYwppbmRleCAxYWQwZTYyYTg0MzNiLi45YjNkNmU1YTgxZDFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX3BjaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmMKQEAgLTU4OSwxNyAmIzQzOzU4OSwyNiBAQCBzdGF0aWMgdTggX19pb21lbSAqcHJlc3RlcmFfbGRyX3dyX3B0cihzdHJ1Y3QgcHJlc3RlcmFfZncgKmZ3KQogCiBzdGF0aWMgaW50IHByZXN0ZXJhX2xkcl9zZW5kKHN0cnVjdCBwcmVzdGVyYV9mdyAqZncsIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pCiB7CiYjNDM7CXNpemVfdCB3cml0ZV9sZW4gPSBBTElHTihsZW4sIHNpemVvZih1MzIpKTsKJiM0MzsJc2l6ZV90IGk7CiAJaW50IGVycjsKLQlpbnQgaTsKIAotCWVyciA9IHByZXN0ZXJhX2xkcl93YWl0X2J1ZihmdywgbGVuKTsKJiM0MzsJZXJyID0gcHJlc3RlcmFfbGRyX3dhaXRfYnVmKGZ3LCB3cml0ZV9sZW4pOwogCWlmIChlcnIpIHsKIAkJZGV2X2Vycihmdy0mZ3Q7ZGV2LmRldiwgJiMzNDtmYWlsZWQgd2FpdCBmb3Igc2VuZGluZyBmaXJtd2FyZVxuJiMzNDspOwogCQlyZXR1cm4gZXJyOwogCX0KIAotCWZvciAoaSA9IDA7IGkgJmx0OyBsZW47IGkgJiM0Mzs9IDQpIHsKLQkJd3JpdGVsX3JlbGF4ZWQoKih1MzIgKikoYnVmICYjNDM7IGkpLCBwcmVzdGVyYV9sZHJfd3JfcHRyKGZ3KSk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJiM0Mzsgc2l6ZW9mKHUzMikgJmx0Oz0gbGVuOyBpICYjNDM7PSBzaXplb2YodTMyKSkgewomIzQzOwkJd3JpdGVsX3JlbGF4ZWQoZ2V0X3VuYWxpZ25lZCgodTMyICopKGJ1ZiAmIzQzOyBpKSksCiYjNDM7CQkJICAgICAgIHByZXN0ZXJhX2xkcl93cl9wdHIoZncpKTsKJiM0MzsJCXByZXN0ZXJhX2xkcl93cl9pZHhfbW92ZShmdywgNCk7CiYjNDM7CX0KJiM0MzsJaWYgKGkgJmx0OyBsZW4pIHsKJiM0MzsJCXUzMiBsYXN0ID0gMDsKJiM0MzsKJiM0MzsJCW1lbWNweSgmYW1wO2xhc3QsIGJ1ZiAmIzQzOyBpLCBsZW4gLSBpKTsKJiM0MzsJCXdyaXRlbF9yZWxheGVkKGxhc3QsIHByZXN0ZXJhX2xkcl93cl9wdHIoZncpKTsKIAkJcHJlc3RlcmFfbGRyX3dyX2lkeF9tb3ZlKGZ3LCA0KTsKIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTQ6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjhtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQxOAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGFza2VkIHRvIGFzc2VzcyB0aGlzIHBhdGNoIGFuZCBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZywgc3BlY2lmaWNhbGx5IGJ5IHNldHRpbmcgYFdvcnRoRnV6emluZz10cnVlYCBvciBgZmFsc2VgLiBMZXQmIzM5O3MgZGl2ZSBpbi4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX3BjaS5jYCwgd2hpY2ggcmluZ3Mgc29tZSBiZWxscyBiZWNhdXNlIHRoYXQmIzM5O3MgdXN1YWxseSBhIGdvb2QgcGxhY2UgdG8gZmluZCBpbnRlcmVzdGluZyBuZXR3b3JrIGludGVyYWN0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBpbnZvbHZlcyB0aGUgYHByZXN0ZXJhX2xkcl9zZW5kYCBmdW5jdGlvbiwgd2hpY2ggaW1wbGllcyBzb21lIGtpbmQgb2YgbG93LWxldmVsIGRhdGEgdHJhbnNmZXIgd2l0aGluIGEgTWFydmVsbCBQcmVzdGVyYSBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyLgoKQmVmb3JlIEkgZ2V0IHRvbyBleGNpdGVkLCBJIG5lZWQgdG8gY29uc3VsdCB0aGUgZXN0YWJsaXNoZWQgZ3VpZGVsaW5lcyBmb3IgZnV6emluZyB0YXJnZXRzLiBNeSBpbW1lZGlhdGUgY29uY2VybnMgYXJlOiBkb2VzIHRoaXMgY29kZSByZXF1aXJlIHNwZWNpYWxpemVkIGhhcmR3YXJlLCBhbmQgaXMgdGhpcyBhY2Nlc3NpYmxlIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJJiMzOTt2ZSBnb3QgdG8gbWFrZSBzdXJlIHRoaXMgY29kZSBpc24mIzM5O3QgdGllZCB0byBzb21lIHNwZWNpZmljIFBDSWUgY2FyZCB0aGF0JiMzOTtzIGltcG9zc2libGUgdG8gZW11bGF0ZSB3ZWxsIGluIGEgc3RhbmRhcmQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4gQ29kZSB0aWVkIHRvIHRoaW5ncyBsaWtlIFNtYXJ0TklDcywgR1BVcyBvciB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBjYW4mIzM5O3QgYmUgd2VsbCBlbXVsYXRlZCBhcmUgZ2VuZXJhbGx5IG5vdCBzdWl0YWJsZS4gU2ltaWxhcmx5LCBpZiB0aGUgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSwgaXQmIzM5O3MgYSBuby1nby4KClRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSYjMzk7bSBnb2luZyB0byBsZXZlcmFnZSBteSBmYW1pbGlhcml0eSB3aXRoIHRoZSBjb2RlYmFzZSBhbmQgbWFrZSBzb21lIHF1aWNrIGNoZWNrcy4gSSYjMzk7bGwgdXNlIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBjaGVjayB0aGUgS2NvbmZpZyBhbmQgYHByZXN0ZXJhX3BjaS5jYCBzb3VyY2UgY29kZSwgc28gSSBjYW4gc2VlIHdoYXQgYHByZXN0ZXJhYCBpcyBhbmQgd2hlcmUgdGhpcyBgcHJlc3RlcmFfcGNpLmNgIGZpbGUgaXMgdXNlZC4gSSYjMzk7bGwgbG9vayBmb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb24sIGhhcmR3YXJlIGRlcGVuZGVuY2llcywgYW5kIGFueSBtZW50aW9ucyBvZiBzcGVjaWZpYyBQQ0llIGRldmljZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiBvZiB0aGlzIGRyaXZlciBhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlIGBwcmVzdGVyYV9sZHJfc2VuZGAgZnVuY3Rpb24gaXMgY2FsbGVkLiBXaXRoIHRoYXQgaW5mb3JtYXRpb24sIEkgY2FuIG1ha2UgYSBkZWNpc2lvbiBhYm91dCB0aGUgZnV6emluZyB3b3J0aGluZXNzIG9mIHRoZSBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfUFJFU1RFUkEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1BSRVNURVJBKVx0JiM0Mzs9IHByZXN0ZXJhLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvTWFrZWZpbGUtMy1wcmVzdGVyYS1vYmpzXHRcdDo9IHByZXN0ZXJhX21haW4ubyBwcmVzdGVyYV9ody5vIHByZXN0ZXJhX2RzYS5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9NYWtlZmlsZS04LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19QUkVTVEVSQV9QQ0kpXHQmIzQzOz0gcHJlc3RlcmFfcGNpLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzIxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGZpbGU6CgoqKkludmVzdGlnYXRpbmcgdGhlIE1hcnZlbGwgUHJlc3RlcmEgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZ2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgTWFydmVsbCBQcmVzdGVyYSBFdGhlcm5ldCBkcml2ZXIuIEkmIzM5O20gYWxyZWFkeSBwcmV0dHkgZmFtaWxpYXIgd2l0aCB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgS2NvbmZpZyBmaWxlcywgc28gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYSBmZXcga2V5IHRoaW5ncyByaWdodCBvZmYgdGhlIGJhdC4gRmlyc3QsIEkmIzM5O2xsIGJlIHNjYW5uaW5nIGZvciB0aGUgbWFpbiBgY29uZmlnYCBzeW1ib2xzIHRoYXQgZW5hYmxlIG9yIGRpc2FibGUgdGhlIGRyaXZlciBpdHNlbGYg4oCTIHRoZSB0b3AtbGV2ZWwgY29uZmlndXJhdGlvbiBrbm9icy4gVGhlbiwgSSYjMzk7bGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGVwZW5kZW5jaWVzLiBXaGljaCBvdGhlciBtb2R1bGVzIG9yIGhhcmR3YXJlIGZlYXR1cmVzIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUgdGhpcyBkcml2ZXIgY2FuIGV2ZW4gYmUgY29uc2lkZXJlZD8gSSBleHBlY3QgdGhlcmUgdG8gYmUgZGVwZW5kZW5jaWVzIG9uIHRoaW5ncyBsaWtlIHRoZSBNYXJ2ZWxsIHBsYXRmb3JtIGNvZGUsIFBIWSBkcml2ZXJzLCBhbmQgcG90ZW50aWFsbHkgZXZlbiBzcGVjaWZpYyBFdGhlcm5ldCBjb250cm9sbGVyIHJldmlzaW9ucy4KCk5leHQsIEkmIzM5O2xsIG5lZWQgdG8gaWRlbnRpZnkgYW55IHNwZWNpZmljIGZlYXR1cmVzIHRoZSBQcmVzdGVyYSBkcml2ZXIgZXhwb3NlcyB0aHJvdWdoIGl0cyBLY29uZmlnIG9wdGlvbnMuIFRoaW5ncyBsaWtlIHN1cHBvcnQgZm9yIGRpZmZlcmVudCBzcGVlZCBncmFkZXMsIFZMQU4gaGFuZGxpbmcsIFFvUyBmZWF0dXJlcywgc3BlY2lmaWMgaGFyZHdhcmUgb2ZmbG9hZCBjYXBhYmlsaXRpZXMg4oCTIHRoZXNlIGFyZSB3aGF0IHJlYWxseSBpbnRlcmVzdCBtZS4gSSYjMzk7bGwgYmUgcGFyc2luZyB0aGUgaGVscCB0ZXh0IGFzc29jaWF0ZWQgd2l0aCBlYWNoIG9wdGlvbiB0byBnZXQgYSBwcmVjaXNlIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCB0aGV5IGRvIGFuZCBob3cgdGhleSBtaWdodCBhZmZlY3QgcGVyZm9ybWFuY2Ugb3IgcmVzb3VyY2UgdXNhZ2UuIEkmIzM5O2xsIGFsc28gYmUgd2F0Y2hpbmcgZm9yIGFueSBgc2VsZWN0YCBzdGF0ZW1lbnRzIHRoYXQgbWlnaHQgYXV0b21hdGljYWxseSBlbmFibGUgb3RoZXIgb3B0aW9ucyBiYXNlZCBvbiB0aGUgY2hvc2VuIGNvbmZpZ3VyYXRpb24uIEZpbmFsbHksIEkmIzM5O2xsIGNoZWNrIGZvciBhbnkgdHJpc3RhdGUgb3IgYm9vbGVhbiBvcHRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgdG8gbXkgYXJlYSBvZiBleHBlcnRpc2UuIEkmIzM5O20ga2VlbiB0byB1bmNvdmVyIGFueXRoaW5nIHRoYXQgbWlnaHQgYWZmZWN0IG15IHNwZWNpZmljIHVzZSBjYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE0OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTWFydmVsbCBQcmVzdGVyYSBkcml2ZXJzIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIFBSRVNURVJBXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFByZXN0ZXJhIFN3aXRjaCBBU0lDcyBzdXBwb3J0XCYjMzQ7XG4gICA4Olx0XHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVYgXHUwMDI2XHUwMDI2IFZMQU5fODAyMVFcbiAgIDk6XHRcdGRlcGVuZHMgb24gQlJJREdFIHx8IEJSSURHRT1uXG4gIDEwOlx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAgMTE6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwgUHJlc3RlcmEgU3dpdGNoIEFTSUNzIGZhbWlseS5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDE2Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBwcmVzdGVyYS5cbiAgMTc6XHRcbiAgMTg6XHRjb25maWcgUFJFU1RFUkFfUENJXG4gIDE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtQQ0kgaW50ZXJmYWNlIGRyaXZlciBmb3IgTWFydmVsbCBQcmVzdGVyYSBTd2l0Y2ggQVNJQ3MgZmFtaWx5XCYjMzQ7XG4gIDIwOlx0XHRkZXBlbmRzIG9uIFBDSSBcdTAwMjZcdTAwMjYgSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBQUkVTVEVSQVxuICAyMTpcdFx0ZGVmYXVsdCBQUkVTVEVSQVxuICAyMjpcdFx0aGVscFxuICAyMzpcdFx0ICBUaGlzIGlzIGltcGxlbWVudGF0aW9uIG9mIFBDSSBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgTWFydmVsbCBQcmVzdGVyYVxuICAyNDpcdFx0ICBTd2l0Y2ggQVNJQ3MgZmFtaWx5LlxuICAyNTpcdFxuICAyNjpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAgMjc6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHByZXN0ZXJhX3BjaS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNDo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDcxCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IG93biB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBQcmVzdGVyYSBQQ0kgRHJpdmVyKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBwcmVzdGVyYV9wY2kuY2AsIHdoaWNoIGlzIHRoZSBQQ0kgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgTWFydmVsbCYjMzk7cyBQcmVzdGVyYSBTd2l0Y2ggQVNJQ3MuIFRoYXQgbmFycm93cyB0aGUgc2NvcGUgY29uc2lkZXJhYmx5LiBHaXZlbiB0aGF0LCBJIHdhbnQgdG8gemVybyBpbiBvbiB0aGUgYHByZXN0ZXJhX2xkcl9zZW5kYCBmdW5jdGlvbiB3aXRoaW4gdGhhdCBmaWxlLiBJdCYjMzk7cyBhIGtleSBmdW5jdGlvbiwgbGlrZWx5IHJlbGF0ZWQgdG8gbG9hZGluZyBvciBzZW5kaW5nIGRhdGEgdG8gdGhlIHN3aXRjaCwgcHJvYmFibHkgZmlybXdhcmUgb3IgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBQcmVzdGVyYSBBU0lDIHZpYSBQQ0ksIGFuZCB1bmRlcnN0YW5kaW5nIGBwcmVzdGVyYV9sZHJfc2VuZGAgd2lsbCBiZSBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoYXQgcHV6emxlLiBMZXQmIzM5O3Mgc2VlIGhvdyBpdCYjMzk7cyBpbXBsZW1lbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNDo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDU4MDpcdHN0YXRpYyB2b2lkIHByZXN0ZXJhX2xkcl93cl9pZHhfY29tbWl0KHN0cnVjdCBwcmVzdGVyYV9mdyAqZncpXG4gNTgxOlx0e1xuIDU4MjpcdFx0cHJlc3RlcmFfbGRyX3dyaXRlKGZ3LCBQUkVTVEVSQV9MRFJfQlVGX1dSX1JFRywgZnctXHUwMDNlbGRyX3dyX2lkeCk7XG4gNTgzOlx0fVxuIDU4NDpcdFxuIDU4NTpcdHN0YXRpYyB1OCBfX2lvbWVtICpwcmVzdGVyYV9sZHJfd3JfcHRyKHN0cnVjdCBwcmVzdGVyYV9mdyAqZncpXG4gNTg2Olx0e1xuIDU4NzpcdFx0cmV0dXJuIGZ3LVx1MDAzZWxkcl9yaW5nX2J1ZiAmIzQzOyBmdy1cdTAwM2VsZHJfd3JfaWR4O1xuIDU4ODpcdH1cbiA1ODk6XHRcbiA1OTA6XHRzdGF0aWMgaW50IHByZXN0ZXJhX2xkcl9zZW5kKHN0cnVjdCBwcmVzdGVyYV9mdyAqZncsIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXG4gNTkxOlx0e1xuIDU5MjpcdFx0c2l6ZV90IHdyaXRlX2xlbiA9IEFMSUdOKGxlbiwgc2l6ZW9mKHUzMikpO1xuIDU5MzpcdFx0c2l6ZV90IGk7XG4gNTk0Olx0XHRpbnQgZXJyO1xuIDU5NTpcdFxuIDU5NjpcdFx0ZXJyID0gcHJlc3RlcmFfbGRyX3dhaXRfYnVmKGZ3LCB3cml0ZV9sZW4pO1xuIDU5NzpcdFx0aWYgKGVycikge1xuIDU5ODpcdFx0XHRkZXZfZXJyKGZ3LVx1MDAzZWRldi5kZXYsIFwmIzM0O2ZhaWxlZCB3YWl0IGZvciBzZW5kaW5nIGZpcm13YXJlXFxuXCYjMzQ7KTtcbiA1OTk6XHRcdFx0cmV0dXJuIGVycjtcbiA2MDA6XHRcdH1cbiA2MDE6XHRcbiA2MDI6XHRcdGZvciAoaSA9IDA7IGkgJiM0Mzsgc2l6ZW9mKHUzMikgXHUwMDNjPSBsZW47IGkgJiM0Mzs9IHNpemVvZih1MzIpKSB7XG4gNjAzOlx0XHRcdHdyaXRlbF9yZWxheGVkKGdldF91bmFsaWduZWQoKHUzMiAqKShidWYgJiM0MzsgaSkpLFxuIDYwNDpcdFx0XHRcdCAgICAgICBwcmVzdGVyYV9sZHJfd3JfcHRyKGZ3KSk7XG4gNjA1Olx0XHRcdHByZXN0ZXJhX2xkcl93cl9pZHhfbW92ZShmdywgNCk7XG4gNjA2Olx0XHR9XG4gNjA3Olx0XHRpZiAoaSBcdTAwM2MgbGVuKSB7XG4gNjA4Olx0XHRcdHUzMiBsYXN0ID0gMDtcbiA2MDk6XHRcbiA2MTA6XHRcdFx0bWVtY3B5KFx1MDAyNmxhc3QsIGJ1ZiAmIzQzOyBpLCBsZW4gLSBpKTtcbiA2MTE6XHRcdFx0d3JpdGVsX3JlbGF4ZWQobGFzdCwgcHJlc3RlcmFfbGRyX3dyX3B0cihmdykpO1xuIDYxMjpcdFx0XHRwcmVzdGVyYV9sZHJfd3JfaWR4X21vdmUoZncsIDQpO1xuIDYxMzpcdFx0fVxuIDYxNDpcdFxuIDYxNTpcdFx0cHJlc3RlcmFfbGRyX3dyX2lkeF9jb21taXQoZncpO1xuIDYxNjpcdFx0cmV0dXJuIDA7XG4gNjE3Olx0fVxuIDYxODpcdFxuIDYxOTpcdHN0YXRpYyBpbnQgcHJlc3RlcmFfbGRyX2Z3X3NlbmQoc3RydWN0IHByZXN0ZXJhX2Z3ICpmdyxcbiA2MjA6XHRcdFx0XHRcdGNvbnN0IGNoYXIgKmltZywgdTMyIGZ3X3NpemUpXG4gNjIxOlx0e1xuIDYyMjpcdFx0dTMyIHN0YXR1cztcbiA2MjM6XHRcdHUzMiBwb3M7XG4gNjI0Olx0XHRpbnQgZXJyO1xuIDYyNTpcdFxuIDYyNjpcdFx0ZXJyID0gcHJlc3RlcmFfbGRyX3dhaXRfcmVnMzIoZncsIFBSRVNURVJBX0xEUl9TVEFUVVNfUkVHLFxuIDYyNzpcdFx0XHRcdFx0ICAgICAgUFJFU1RFUkFfTERSX1NUQVRVU19JTUdfREwsXG4gNjI4Olx0XHRcdFx0XHQgICAgICA1ICogTVNFQ19QRVJfU0VDKTtcbiA2Mjk6XHRcdGlmIChlcnIpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTQwCgkJCQkJCQlvdXRwdXQ6IDk2CgkJCQkJCQl0aG91Z2h0czogMzg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCByaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgaXQmIzM5O3MgZGVhbGluZyB3aXRoIGBwcmVzdGVyYV9wY2kuY2AsIHRoZSBkcml2ZXIgZm9yIE1hcnZlbGwmIzM5O3MgUHJlc3RlcmEgc3dpdGNoIEFTSUNzLiBUaGF0JiMzOTtzIGEgdmVuZG9yLXNwZWNpZmljIFBDSSBoYXJkd2FyZSBkcml2ZXIsIHdoaWNoIGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgbWVudGFsIGNoZWNrbGlzdC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBJJiMzOTttIGZvbGxvd2luZyB0aGUgcnVsZXMgaGVyZS4uLiBSaWdodCwgSSByZWNhbGwgdGhlIGd1aWRhbmNlIGNsZWFybHk6IGNvZGUgdG91Y2hpbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIGRyaXZlcnMgdGhhdCByZWx5IG9uICpwaHlzaWNhbCogaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGVudmlyb25tZW50cywgbGlrZSBRRU1VLCBnZXRzIGEgYFdvcnRoRnV6emluZz1mYWxzZWAuCgpOb3csIE1hcnZlbGwgUHJlc3RlcmEgKmlzKiBwcmVjaXNlbHkgdGhhdCDigJMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJIHN3aXRjaCBBU0lDLiBJdCYjMzk7cyBpbiB0aGUgc2FtZSBjYXRlZ29yeSBhcyB0aGluZ3MgbGlrZSBtbHhzdywgd2hpY2ggSSB1bmRlcnN0YW5kIHdlbGwuIEl0IG5lZWRzIHRoYXQgc3BlY2lmaWMgQVNJQyBvciBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlOyBzdGFuZGFyZCBRRU1VIGp1c3Qgd29uJiMzOTt0IGN1dCBpdC4gVGhpbmtpbmcgYWJvdXQgdGhlIGNvZGUgaXRzZWxmLCB0aGlzIGBwcmVzdGVyYV9sZHJfc2VuZGAgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZyB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzLiBJIHRyYWNlIHRoYXQgdGhyb3VnaCBgcHJlc3RlcmFfbGRyX2Z3X3NlbmRgLCB0aGVuIGBwcmVzdGVyYV9md19sb2FkYCwgYW5kIGZpbmFsbHksIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgYHByZXN0ZXJhX3BjaV9wcm9iZWAuIFRoaXMgaXMgYWxsIGhhcHBlbmluZyBkdXJpbmcgaGFyZHdhcmUgcHJvYmluZywgd2hpY2ggaGFwcGVucyBvbmx5IHdpdGggdGhlIHByZXNlbmNlIG9mIHRoZSBwaHlzaWNhbCBoYXJkd2FyZS4KClNvLCBsb2dpY2FsbHksIGdpdmVuIHRoZSBjb250ZXh0IGFuZCB0aGUgcnVsZXMsIGBXb3J0aEZ1enppbmdgIGhhcyB0byBiZSBgZmFsc2VgLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIGdvIHRocm91Z2ggdGhlIGZpZWxkczoKCiogICAqKkZvY3VzU3ltYm9sczoqKiBUaGlzIGlzIGVtcHR5IOKAkyBubyBzcGVjaWZpYyBzeW1ib2xzIG5lZWQgdGFyZ2V0ZWQgZnV6emluZwoqICAgKipFbmFibGVDb25maWdzOioqIFNpbWlsYXJseSwgYW4gZW1wdHkgbGlzdC4KKiAgICoqV29ydGhGdXp6aW5nOioqIFdlJiMzOTt2ZSBlc3RhYmxpc2hlZCwgd2l0aCBjZXJ0YWludHksIGFzIGBmYWxzZWAuCiogICAqKlJlYXNvbmluZzoqKiBUbyBzdW1tYXJpemUsIHRoaXMgY2hhbmdlIG1vZGlmaWVzIGBwcmVzdGVyYV9sZHJfc2VuZGAgd2l0aGluIGBwcmVzdGVyYV9wY2kuY2AsIHdoaWNoLCBhcyBhIE1hcnZlbGwgUHJlc3RlcmEgU3dpdGNoIEFTSUMgUENJZSBkcml2ZXIsIHJlbGllcyBvbiAqc3BlY2lmaWMqIHBoeXNpY2FsIFBDSWUgc3dpdGNoIGhhcmR3YXJlIHRoYXQmIzM5O3Mgbm90IGVtdWxhdGVkIGluIHR5cGljYWwgUUVNVSBvciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4gVGhpcyBjb25maXJtcyBteSBqdWRnZW1lbnQuCgpBbHJpZ2h0LCB3aXRoIHRoYXQgc29saWRpZmllZCwgSSBhbSByZWFkeSB0byBwcmVwYXJlIHRoZSB0b29sIGNhbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE0OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX3BjaS5jLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCBBU0lDIGRyaXZlciAoTWFydmVsbCBQcmVzdGVyYSkuIEl0IHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgc3dpdGNoIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBjb2RlIGlzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmMsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIEFTSUMgZHJpdmVyIChNYXJ2ZWxsIFByZXN0ZXJhKS4gSXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBzd2l0Y2ggaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE0OjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNDozNDozOC40ODAzNzM1NTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjEwNTAxNzU5MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBjb2RlIGlzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmMsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIEFTSUMgZHJpdmVyIChNYXJ2ZWxsIFByZXN0ZXJhKS4gSXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBzd2l0Y2ggaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE0OjM0OjM4LjQ4MDM3ODIxNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY4MzU0OTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNGFiYmYwZmMxYTg5ZDQ5MzZkYzliYWYxYWVmMmI4ZTg3MmMyN2E3OVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAzMCAxNDozNDozNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX3BjaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9wY2kuY1xcbmluZGV4IDFhZDBlNjJhODQzM2IuLjliM2Q2ZTVhODFkMWMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9wY2kuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmNcXG5AQCAtNTg5LDE3ICs1ODksMjYgQEAgc3RhdGljIHU4IF9faW9tZW0gKnByZXN0ZXJhX2xkcl93cl9wdHIoc3RydWN0IHByZXN0ZXJhX2Z3ICpmdylcXG4gXFxuIHN0YXRpYyBpbnQgcHJlc3RlcmFfbGRyX3NlbmQoc3RydWN0IHByZXN0ZXJhX2Z3ICpmdywgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcXG4ge1xcbitcXHRzaXplX3Qgd3JpdGVfbGVuID0gQUxJR04obGVuLCBzaXplb2YodTMyKSk7XFxuK1xcdHNpemVfdCBpO1xcbiBcXHRpbnQgZXJyO1xcbi1cXHRpbnQgaTtcXG4gXFxuLVxcdGVyciA9IHByZXN0ZXJhX2xkcl93YWl0X2J1ZihmdywgbGVuKTtcXG4rXFx0ZXJyID0gcHJlc3RlcmFfbGRyX3dhaXRfYnVmKGZ3LCB3cml0ZV9sZW4pO1xcbiBcXHRpZiAoZXJyKSB7XFxuIFxcdFxcdGRldl9lcnIoZnctXFx1MDAzZWRldi5kZXYsIFxcXCJmYWlsZWQgd2FpdCBmb3Igc2VuZGluZyBmaXJtd2FyZVxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcdH1cXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBsZW47IGkgKz0gNCkge1xcbi1cXHRcXHR3cml0ZWxfcmVsYXhlZCgqKHUzMiAqKShidWYgKyBpKSwgcHJlc3RlcmFfbGRyX3dyX3B0cihmdykpO1xcbitcXHRmb3IgKGkgPSAwOyBpICsgc2l6ZW9mKHUzMikgXFx1MDAzYz0gbGVuOyBpICs9IHNpemVvZih1MzIpKSB7XFxuK1xcdFxcdHdyaXRlbF9yZWxheGVkKGdldF91bmFsaWduZWQoKHUzMiAqKShidWYgKyBpKSksXFxuK1xcdFxcdFxcdCAgICAgICBwcmVzdGVyYV9sZHJfd3JfcHRyKGZ3KSk7XFxuK1xcdFxcdHByZXN0ZXJhX2xkcl93cl9pZHhfbW92ZShmdywgNCk7XFxuK1xcdH1cXG4rXFx0aWYgKGkgXFx1MDAzYyBsZW4pIHtcXG4rXFx0XFx0dTMyIGxhc3QgPSAwO1xcbitcXG4rXFx0XFx0bWVtY3B5KFxcdTAwMjZsYXN0LCBidWYgKyBpLCBsZW4gLSBpKTtcXG4rXFx0XFx0d3JpdGVsX3JlbGF4ZWQobGFzdCwgcHJlc3RlcmFfbGRyX3dyX3B0cihmdykpO1xcbiBcXHRcXHRwcmVzdGVyYV9sZHJfd3JfaWR4X21vdmUoZncsIDQpO1xcbiBcXHR9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNDozNDozOC44NDkzNjgyOTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjk2MDY4MTE2MjMxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX3BjaS5jLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCBBU0lDIGRyaXZlciAoTWFydmVsbCBQcmVzdGVyYSkuIEl0IHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgc3dpdGNoIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0YWJiZjBmYzFhODlkNDkzNmRjOWJhZjFhZWYyYjhlODcyYzI3YTc5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMzAgMTQ6MzQ6MzcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX3BjaS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9wY2kuY1xuaW5kZXggMWFkMGU2MmE4NDMzYi4uOWIzZDZlNWE4MWQxYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmNcbkBAIC01ODksMTcgKzU4OSwyNiBAQCBzdGF0aWMgdTggX19pb21lbSAqcHJlc3RlcmFfbGRyX3dyX3B0cihzdHJ1Y3QgcHJlc3RlcmFfZncgKmZ3KVxuIFxuIHN0YXRpYyBpbnQgcHJlc3RlcmFfbGRyX3NlbmQoc3RydWN0IHByZXN0ZXJhX2Z3ICpmdywgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcbiB7XG4rXHRzaXplX3Qgd3JpdGVfbGVuID0gQUxJR04obGVuLCBzaXplb2YodTMyKSk7XG4rXHRzaXplX3QgaTtcbiBcdGludCBlcnI7XG4tXHRpbnQgaTtcbiBcbi1cdGVyciA9IHByZXN0ZXJhX2xkcl93YWl0X2J1ZihmdywgbGVuKTtcbitcdGVyciA9IHByZXN0ZXJhX2xkcl93YWl0X2J1Zihmdywgd3JpdGVfbGVuKTtcbiBcdGlmIChlcnIpIHtcbiBcdFx0ZGV2X2Vycihmdy1cdTAwM2VkZXYuZGV2LCBcImZhaWxlZCB3YWl0IGZvciBzZW5kaW5nIGZpcm13YXJlXFxuXCIpO1xuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbGVuOyBpICs9IDQpIHtcbi1cdFx0d3JpdGVsX3JlbGF4ZWQoKih1MzIgKikoYnVmICsgaSksIHByZXN0ZXJhX2xkcl93cl9wdHIoZncpKTtcbitcdGZvciAoaSA9IDA7IGkgKyBzaXplb2YodTMyKSBcdTAwM2M9IGxlbjsgaSArPSBzaXplb2YodTMyKSkge1xuK1x0XHR3cml0ZWxfcmVsYXhlZChnZXRfdW5hbGlnbmVkKCh1MzIgKikoYnVmICsgaSkpLFxuK1x0XHRcdCAgICAgICBwcmVzdGVyYV9sZHJfd3JfcHRyKGZ3KSk7XG4rXHRcdHByZXN0ZXJhX2xkcl93cl9pZHhfbW92ZShmdywgNCk7XG4rXHR9XG4rXHRpZiAoaSBcdTAwM2MgbGVuKSB7XG4rXHRcdHUzMiBsYXN0ID0gMDtcbitcbitcdFx0bWVtY3B5KFx1MDAyNmxhc3QsIGJ1ZiArIGksIGxlbiAtIGkpO1xuK1x0XHR3cml0ZWxfcmVsYXhlZChsYXN0LCBwcmVzdGVyYV9sZHJfd3JfcHRyKGZ3KSk7XG4gXHRcdHByZXN0ZXJhX2xkcl93cl9pZHhfbW92ZShmdywgNCk7XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNDozNDozOC44NDkzNzEzNjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MzQxNDMyMTgzNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBhc2tlZCB0byBhc3Nlc3MgdGhpcyBwYXRjaCBhbmQgZGV0ZXJtaW5lIGlmIGl0J3MgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZywgc3BlY2lmaWNhbGx5IGJ5IHNldHRpbmcgYFdvcnRoRnV6emluZz10cnVlYCBvciBgZmFsc2VgLiBMZXQncyBkaXZlIGluLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmNgLCB3aGljaCByaW5ncyBzb21lIGJlbGxzIGJlY2F1c2UgdGhhdCdzIHVzdWFsbHkgYSBnb29kIHBsYWNlIHRvIGZpbmQgaW50ZXJlc3RpbmcgbmV0d29yayBpbnRlcmFjdGlvbnMuIFNwZWNpZmljYWxseSwgaXQgaW52b2x2ZXMgdGhlIGBwcmVzdGVyYV9sZHJfc2VuZGAgZnVuY3Rpb24sIHdoaWNoIGltcGxpZXMgc29tZSBraW5kIG9mIGxvdy1sZXZlbCBkYXRhIHRyYW5zZmVyIHdpdGhpbiBhIE1hcnZlbGwgUHJlc3RlcmEgRXRoZXJuZXQgc3dpdGNoIGRyaXZlci5cblxuQmVmb3JlIEkgZ2V0IHRvbyBleGNpdGVkLCBJIG5lZWQgdG8gY29uc3VsdCB0aGUgZXN0YWJsaXNoZWQgZ3VpZGVsaW5lcyBmb3IgZnV6emluZyB0YXJnZXRzLiBNeSBpbW1lZGlhdGUgY29uY2VybnMgYXJlOiBkb2VzIHRoaXMgY29kZSByZXF1aXJlIHNwZWNpYWxpemVkIGhhcmR3YXJlLCBhbmQgaXMgdGhpcyBhY2Nlc3NpYmxlIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJJ3ZlIGdvdCB0byBtYWtlIHN1cmUgdGhpcyBjb2RlIGlzbid0IHRpZWQgdG8gc29tZSBzcGVjaWZpYyBQQ0llIGNhcmQgdGhhdCdzIGltcG9zc2libGUgdG8gZW11bGF0ZSB3ZWxsIGluIGEgc3RhbmRhcmQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZS4gQ29kZSB0aWVkIHRvIHRoaW5ncyBsaWtlIFNtYXJ0TklDcywgR1BVcyBvciB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBjYW4ndCBiZSB3ZWxsIGVtdWxhdGVkIGFyZSBnZW5lcmFsbHkgbm90IHN1aXRhYmxlLiBTaW1pbGFybHksIGlmIHRoZSBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLCBpdCdzIGEgbm8tZ28uXG5cblRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSdtIGdvaW5nIHRvIGxldmVyYWdlIG15IGZhbWlsaWFyaXR5IHdpdGggdGhlIGNvZGViYXNlIGFuZCBtYWtlIHNvbWUgcXVpY2sgY2hlY2tzLiBJJ2xsIHVzZSBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gY2hlY2sgdGhlIEtjb25maWcgYW5kIGBwcmVzdGVyYV9wY2kuY2Agc291cmNlIGNvZGUsIHNvIEkgY2FuIHNlZSB3aGF0IGBwcmVzdGVyYWAgaXMgYW5kIHdoZXJlIHRoaXMgYHByZXN0ZXJhX3BjaS5jYCBmaWxlIGlzIHVzZWQuIEknbGwgbG9vayBmb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb24sIGhhcmR3YXJlIGRlcGVuZGVuY2llcywgYW5kIGFueSBtZW50aW9ucyBvZiBzcGVjaWZpYyBQQ0llIGRldmljZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiBvZiB0aGlzIGRyaXZlciBhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlIGBwcmVzdGVyYV9sZHJfc2VuZGAgZnVuY3Rpb24gaXMgY2FsbGVkLiBXaXRoIHRoYXQgaW5mb3JtYXRpb24sIEkgY2FuIG1ha2UgYSBkZWNpc2lvbiBhYm91dCB0aGUgZnV6emluZyB3b3J0aGluZXNzIG9mIHRoZSBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQxOCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE0OjQzOjMyLjk5MjU5MjQ1M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzMyMDMxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfUFJFU1RFUkFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfUFJFU1RFUkEpXFx0Kz0gcHJlc3RlcmEub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvTWFrZWZpbGUtMy1wcmVzdGVyYS1vYmpzXFx0XFx0Oj0gcHJlc3RlcmFfbWFpbi5vIHByZXN0ZXJhX2h3Lm8gcHJlc3RlcmFfZHNhLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9NYWtlZmlsZS04LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfUFJFU1RFUkFfUENJKVxcdCs9IHByZXN0ZXJhX3BjaS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE0OjQzOjMzLjAzOTkxNjk5OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgzNjI5NDI0ODMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGZpbGU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTWFydmVsbCBQcmVzdGVyYSBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWdgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIE1hcnZlbGwgUHJlc3RlcmEgRXRoZXJuZXQgZHJpdmVyLiBJJ20gYWxyZWFkeSBwcmV0dHkgZmFtaWxpYXIgd2l0aCB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgS2NvbmZpZyBmaWxlcywgc28gSSdsbCBiZSBsb29raW5nIGZvciBhIGZldyBrZXkgdGhpbmdzIHJpZ2h0IG9mZiB0aGUgYmF0LiBGaXJzdCwgSSdsbCBiZSBzY2FubmluZyBmb3IgdGhlIG1haW4gYGNvbmZpZ2Agc3ltYm9scyB0aGF0IGVuYWJsZSBvciBkaXNhYmxlIHRoZSBkcml2ZXIgaXRzZWxmIOKAkyB0aGUgdG9wLWxldmVsIGNvbmZpZ3VyYXRpb24ga25vYnMuIFRoZW4sIEknbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGVwZW5kZW5jaWVzLiBXaGljaCBvdGhlciBtb2R1bGVzIG9yIGhhcmR3YXJlIGZlYXR1cmVzIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUgdGhpcyBkcml2ZXIgY2FuIGV2ZW4gYmUgY29uc2lkZXJlZD8gSSBleHBlY3QgdGhlcmUgdG8gYmUgZGVwZW5kZW5jaWVzIG9uIHRoaW5ncyBsaWtlIHRoZSBNYXJ2ZWxsIHBsYXRmb3JtIGNvZGUsIFBIWSBkcml2ZXJzLCBhbmQgcG90ZW50aWFsbHkgZXZlbiBzcGVjaWZpYyBFdGhlcm5ldCBjb250cm9sbGVyIHJldmlzaW9ucy5cblxuTmV4dCwgSSdsbCBuZWVkIHRvIGlkZW50aWZ5IGFueSBzcGVjaWZpYyBmZWF0dXJlcyB0aGUgUHJlc3RlcmEgZHJpdmVyIGV4cG9zZXMgdGhyb3VnaCBpdHMgS2NvbmZpZyBvcHRpb25zLiBUaGluZ3MgbGlrZSBzdXBwb3J0IGZvciBkaWZmZXJlbnQgc3BlZWQgZ3JhZGVzLCBWTEFOIGhhbmRsaW5nLCBRb1MgZmVhdHVyZXMsIHNwZWNpZmljIGhhcmR3YXJlIG9mZmxvYWQgY2FwYWJpbGl0aWVzIOKAkyB0aGVzZSBhcmUgd2hhdCByZWFsbHkgaW50ZXJlc3QgbWUuIEknbGwgYmUgcGFyc2luZyB0aGUgaGVscCB0ZXh0IGFzc29jaWF0ZWQgd2l0aCBlYWNoIG9wdGlvbiB0byBnZXQgYSBwcmVjaXNlIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCB0aGV5IGRvIGFuZCBob3cgdGhleSBtaWdodCBhZmZlY3QgcGVyZm9ybWFuY2Ugb3IgcmVzb3VyY2UgdXNhZ2UuIEknbGwgYWxzbyBiZSB3YXRjaGluZyBmb3IgYW55IGBzZWxlY3RgIHN0YXRlbWVudHMgdGhhdCBtaWdodCBhdXRvbWF0aWNhbGx5IGVuYWJsZSBvdGhlciBvcHRpb25zIGJhc2VkIG9uIHRoZSBjaG9zZW4gY29uZmlndXJhdGlvbi4gRmluYWxseSwgSSdsbCBjaGVjayBmb3IgYW55IHRyaXN0YXRlIG9yIGJvb2xlYW4gb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIG15IGFyZWEgb2YgZXhwZXJ0aXNlLiBJJ20ga2VlbiB0byB1bmNvdmVyIGFueXRoaW5nIHRoYXQgbWlnaHQgYWZmZWN0IG15IHNwZWNpZmljIHVzZSBjYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzIxLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTQ6NDQ6NTYuNjY5MzQ0MzAxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUzODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1hcnZlbGwgUHJlc3RlcmEgZHJpdmVycyBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBQUkVTVEVSQVxcbiAgIDc6XFx0XFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgUHJlc3RlcmEgU3dpdGNoIEFTSUNzIHN1cHBvcnRcXFwiXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVYgXFx1MDAyNlxcdTAwMjYgVkxBTl84MDIxUVxcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cXG4gIDEwOlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAgMTE6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCBQcmVzdGVyYSBTd2l0Y2ggQVNJQ3MgZmFtaWx5LlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAgMTY6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgcHJlc3RlcmEuXFxuICAxNzpcXHRcXG4gIDE4OlxcdGNvbmZpZyBQUkVTVEVSQV9QQ0lcXG4gIDE5OlxcdFxcdHRyaXN0YXRlIFxcXCJQQ0kgaW50ZXJmYWNlIGRyaXZlciBmb3IgTWFydmVsbCBQcmVzdGVyYSBTd2l0Y2ggQVNJQ3MgZmFtaWx5XFxcIlxcbiAgMjA6XFx0XFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IFBSRVNURVJBXFxuICAyMTpcXHRcXHRkZWZhdWx0IFBSRVNURVJBXFxuICAyMjpcXHRcXHRoZWxwXFxuICAyMzpcXHRcXHQgIFRoaXMgaXMgaW1wbGVtZW50YXRpb24gb2YgUENJIGludGVyZmFjZSBzdXBwb3J0IGZvciBNYXJ2ZWxsIFByZXN0ZXJhXFxuICAyNDpcXHRcXHQgIFN3aXRjaCBBU0lDcyBmYW1pbHkuXFxuICAyNTpcXHRcXG4gIDI2OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuICAyNzpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBwcmVzdGVyYV9wY2kuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE0OjQ0OjU2LjY2OTQwMTQ5MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk2ODM4OTU5MTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IG93biB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIFByZXN0ZXJhIFBDSSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGBwcmVzdGVyYV9wY2kuY2AsIHdoaWNoIGlzIHRoZSBQQ0kgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgTWFydmVsbCdzIFByZXN0ZXJhIFN3aXRjaCBBU0lDcy4gVGhhdCBuYXJyb3dzIHRoZSBzY29wZSBjb25zaWRlcmFibHkuIEdpdmVuIHRoYXQsIEkgd2FudCB0byB6ZXJvIGluIG9uIHRoZSBgcHJlc3RlcmFfbGRyX3NlbmRgIGZ1bmN0aW9uIHdpdGhpbiB0aGF0IGZpbGUuIEl0J3MgYSBrZXkgZnVuY3Rpb24sIGxpa2VseSByZWxhdGVkIHRvIGxvYWRpbmcgb3Igc2VuZGluZyBkYXRhIHRvIHRoZSBzd2l0Y2gsIHByb2JhYmx5IGZpcm13YXJlIG9yIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgUHJlc3RlcmEgQVNJQyB2aWEgUENJLCBhbmQgdW5kZXJzdGFuZGluZyBgcHJlc3RlcmFfbGRyX3NlbmRgIHdpbGwgYmUgYSBjcml0aWNhbCBwaWVjZSBvZiB0aGF0IHB1enpsZS4gTGV0J3Mgc2VlIGhvdyBpdCdzIGltcGxlbWVudGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDcxLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNDo0NjozMy41MDgzNjI1NTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDAyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1ODAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1ODA6XFx0c3RhdGljIHZvaWQgcHJlc3RlcmFfbGRyX3dyX2lkeF9jb21taXQoc3RydWN0IHByZXN0ZXJhX2Z3ICpmdylcXG4gNTgxOlxcdHtcXG4gNTgyOlxcdFxcdHByZXN0ZXJhX2xkcl93cml0ZShmdywgUFJFU1RFUkFfTERSX0JVRl9XUl9SRUcsIGZ3LVxcdTAwM2VsZHJfd3JfaWR4KTtcXG4gNTgzOlxcdH1cXG4gNTg0OlxcdFxcbiA1ODU6XFx0c3RhdGljIHU4IF9faW9tZW0gKnByZXN0ZXJhX2xkcl93cl9wdHIoc3RydWN0IHByZXN0ZXJhX2Z3ICpmdylcXG4gNTg2OlxcdHtcXG4gNTg3OlxcdFxcdHJldHVybiBmdy1cXHUwMDNlbGRyX3JpbmdfYnVmICsgZnctXFx1MDAzZWxkcl93cl9pZHg7XFxuIDU4ODpcXHR9XFxuIDU4OTpcXHRcXG4gNTkwOlxcdHN0YXRpYyBpbnQgcHJlc3RlcmFfbGRyX3NlbmQoc3RydWN0IHByZXN0ZXJhX2Z3ICpmdywgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcXG4gNTkxOlxcdHtcXG4gNTkyOlxcdFxcdHNpemVfdCB3cml0ZV9sZW4gPSBBTElHTihsZW4sIHNpemVvZih1MzIpKTtcXG4gNTkzOlxcdFxcdHNpemVfdCBpO1xcbiA1OTQ6XFx0XFx0aW50IGVycjtcXG4gNTk1OlxcdFxcbiA1OTY6XFx0XFx0ZXJyID0gcHJlc3RlcmFfbGRyX3dhaXRfYnVmKGZ3LCB3cml0ZV9sZW4pO1xcbiA1OTc6XFx0XFx0aWYgKGVycikge1xcbiA1OTg6XFx0XFx0XFx0ZGV2X2Vycihmdy1cXHUwMDNlZGV2LmRldiwgXFxcImZhaWxlZCB3YWl0IGZvciBzZW5kaW5nIGZpcm13YXJlXFxcXG5cXFwiKTtcXG4gNTk5OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDYwMDpcXHRcXHR9XFxuIDYwMTpcXHRcXG4gNjAyOlxcdFxcdGZvciAoaSA9IDA7IGkgKyBzaXplb2YodTMyKSBcXHUwMDNjPSBsZW47IGkgKz0gc2l6ZW9mKHUzMikpIHtcXG4gNjAzOlxcdFxcdFxcdHdyaXRlbF9yZWxheGVkKGdldF91bmFsaWduZWQoKHUzMiAqKShidWYgKyBpKSksXFxuIDYwNDpcXHRcXHRcXHRcXHQgICAgICAgcHJlc3RlcmFfbGRyX3dyX3B0cihmdykpO1xcbiA2MDU6XFx0XFx0XFx0cHJlc3RlcmFfbGRyX3dyX2lkeF9tb3ZlKGZ3LCA0KTtcXG4gNjA2OlxcdFxcdH1cXG4gNjA3OlxcdFxcdGlmIChpIFxcdTAwM2MgbGVuKSB7XFxuIDYwODpcXHRcXHRcXHR1MzIgbGFzdCA9IDA7XFxuIDYwOTpcXHRcXG4gNjEwOlxcdFxcdFxcdG1lbWNweShcXHUwMDI2bGFzdCwgYnVmICsgaSwgbGVuIC0gaSk7XFxuIDYxMTpcXHRcXHRcXHR3cml0ZWxfcmVsYXhlZChsYXN0LCBwcmVzdGVyYV9sZHJfd3JfcHRyKGZ3KSk7XFxuIDYxMjpcXHRcXHRcXHRwcmVzdGVyYV9sZHJfd3JfaWR4X21vdmUoZncsIDQpO1xcbiA2MTM6XFx0XFx0fVxcbiA2MTQ6XFx0XFxuIDYxNTpcXHRcXHRwcmVzdGVyYV9sZHJfd3JfaWR4X2NvbW1pdChmdyk7XFxuIDYxNjpcXHRcXHRyZXR1cm4gMDtcXG4gNjE3OlxcdH1cXG4gNjE4OlxcdFxcbiA2MTk6XFx0c3RhdGljIGludCBwcmVzdGVyYV9sZHJfZndfc2VuZChzdHJ1Y3QgcHJlc3RlcmFfZncgKmZ3LFxcbiA2MjA6XFx0XFx0XFx0XFx0XFx0Y29uc3QgY2hhciAqaW1nLCB1MzIgZndfc2l6ZSlcXG4gNjIxOlxcdHtcXG4gNjIyOlxcdFxcdHUzMiBzdGF0dXM7XFxuIDYyMzpcXHRcXHR1MzIgcG9zO1xcbiA2MjQ6XFx0XFx0aW50IGVycjtcXG4gNjI1OlxcdFxcbiA2MjY6XFx0XFx0ZXJyID0gcHJlc3RlcmFfbGRyX3dhaXRfcmVnMzIoZncsIFBSRVNURVJBX0xEUl9TVEFUVVNfUkVHLFxcbiA2Mjc6XFx0XFx0XFx0XFx0XFx0ICAgICAgUFJFU1RFUkFfTERSX1NUQVRVU19JTUdfREwsXFxuIDYyODpcXHRcXHRcXHRcXHRcXHQgICAgICA1ICogTVNFQ19QRVJfU0VDKTtcXG4gNjI5OlxcdFxcdGlmIChlcnIpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTQ6NDY6MzMuNTA4NDY0MTMzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ2MDIyMDMzMzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgcmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIGl0J3MgZGVhbGluZyB3aXRoIGBwcmVzdGVyYV9wY2kuY2AsIHRoZSBkcml2ZXIgZm9yIE1hcnZlbGwncyBQcmVzdGVyYSBzd2l0Y2ggQVNJQ3MuIFRoYXQncyBhIHZlbmRvci1zcGVjaWZpYyBQQ0kgaGFyZHdhcmUgZHJpdmVyLCB3aGljaCBpbW1lZGlhdGVseSB0cmlnZ2VycyBhIG1lbnRhbCBjaGVja2xpc3QuIExldCdzIG1ha2Ugc3VyZSBJJ20gZm9sbG93aW5nIHRoZSBydWxlcyBoZXJlLi4uIFJpZ2h0LCBJIHJlY2FsbCB0aGUgZ3VpZGFuY2UgY2xlYXJseTogY29kZSB0b3VjaGluZyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2ggZHJpdmVycyB0aGF0IHJlbHkgb24gKnBoeXNpY2FsKiBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgZW52aXJvbm1lbnRzLCBsaWtlIFFFTVUsIGdldHMgYSBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuTm93LCBNYXJ2ZWxsIFByZXN0ZXJhICppcyogcHJlY2lzZWx5IHRoYXQg4oCTIGEgdmVuZG9yLXNwZWNpZmljIFBDSSBzd2l0Y2ggQVNJQy4gSXQncyBpbiB0aGUgc2FtZSBjYXRlZ29yeSBhcyB0aGluZ3MgbGlrZSBtbHhzdywgd2hpY2ggSSB1bmRlcnN0YW5kIHdlbGwuIEl0IG5lZWRzIHRoYXQgc3BlY2lmaWMgQVNJQyBvciBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlOyBzdGFuZGFyZCBRRU1VIGp1c3Qgd29uJ3QgY3V0IGl0LiBUaGlua2luZyBhYm91dCB0aGUgY29kZSBpdHNlbGYsIHRoaXMgYHByZXN0ZXJhX2xkcl9zZW5kYCBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MuIEkgdHJhY2UgdGhhdCB0aHJvdWdoIGBwcmVzdGVyYV9sZHJfZndfc2VuZGAsIHRoZW4gYHByZXN0ZXJhX2Z3X2xvYWRgLCBhbmQgZmluYWxseSwgaXQncyBjYWxsZWQgZHVyaW5nIGBwcmVzdGVyYV9wY2lfcHJvYmVgLiBUaGlzIGlzIGFsbCBoYXBwZW5pbmcgZHVyaW5nIGhhcmR3YXJlIHByb2JpbmcsIHdoaWNoIGhhcHBlbnMgb25seSB3aXRoIHRoZSBwcmVzZW5jZSBvZiB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuXG5cblNvLCBsb2dpY2FsbHksIGdpdmVuIHRoZSBjb250ZXh0IGFuZCB0aGUgcnVsZXMsIGBXb3J0aEZ1enppbmdgIGhhcyB0byBiZSBgZmFsc2VgLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdsbCBnbyB0aHJvdWdoIHRoZSBmaWVsZHM6XG5cbiogICAqKkZvY3VzU3ltYm9sczoqKiBUaGlzIGlzIGVtcHR5IOKAkyBubyBzcGVjaWZpYyBzeW1ib2xzIG5lZWQgdGFyZ2V0ZWQgZnV6emluZ1xuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBTaW1pbGFybHksIGFuIGVtcHR5IGxpc3QuXG4qICAgKipXb3J0aEZ1enppbmc6KiogV2UndmUgZXN0YWJsaXNoZWQsIHdpdGggY2VydGFpbnR5LCBhcyBgZmFsc2VgLlxuKiAgICoqUmVhc29uaW5nOioqIFRvIHN1bW1hcml6ZSwgdGhpcyBjaGFuZ2UgbW9kaWZpZXMgYHByZXN0ZXJhX2xkcl9zZW5kYCB3aXRoaW4gYHByZXN0ZXJhX3BjaS5jYCwgd2hpY2gsIGFzIGEgTWFydmVsbCBQcmVzdGVyYSBTd2l0Y2ggQVNJQyBQQ0llIGRyaXZlciwgcmVsaWVzIG9uICpzcGVjaWZpYyogcGh5c2ljYWwgUENJZSBzd2l0Y2ggaGFyZHdhcmUgdGhhdCdzIG5vdCBlbXVsYXRlZCBpbiB0eXBpY2FsIFFFTVUgb3IgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuIFRoaXMgY29uZmlybXMgbXkganVkZ2VtZW50LlxuXG5BbHJpZ2h0LCB3aXRoIHRoYXQgc29saWRpZmllZCwgSSBhbSByZWFkeSB0byBwcmVwYXJlIHRoZSB0b29sIGNhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNDAsIk91dHB1dFRva2VucyI6OTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNDo1MDozOS41MzA1MDA1MjRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjQyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBjb2RlIGlzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfcGNpLmMsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIEFTSUMgZHJpdmVyIChNYXJ2ZWxsIFByZXN0ZXJhKS4gSXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBzd2l0Y2ggaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS92aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9wY2kuYywgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2ggQVNJQyBkcml2ZXIgKE1hcnZlbGwgUHJlc3RlcmEpLiBJdCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIHN3aXRjaCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTQ6NTA6MzkuNTMwNTMyOTE0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwqtlm[1] Phase: Running StartedAt: 2026-08-30 14:50:51 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwqtlm[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-30 14:50:51 +0000 UTC FinishedAt: 2026-08-30 14:50:55 +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,}