Name: series-workflowg7kjp Phase: Failed StartedAt: 2026-08-13 10:50:37 +0000 UTC FinishedAt: 2026-08-13 11:24:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg7kjp[0] Phase: Succeeded StartedAt: 2026-08-13 10:50:37 +0000 UTC FinishedAt: 2026-08-13 11:24:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg7kjp[0].run-triage Phase: Succeeded StartedAt: 2026-08-13 10:50:37 +0000 UTC FinishedAt: 2026-08-13 11:24:07 +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+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gRXRoZXJuZXQgZHJpdmVyIChsaWJ3eCksIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgaGFyZHdhcmUgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMToyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDg1NjRkN2Q5ZTNkZTE0NDgxYjE5NmEzYWIzY2MzMTA2MGE1ZmNmZGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAxMToyMzo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmNcbmluZGV4IDEyMmM0OTUyZDIwM2YuLjA5NmZlN2YzZDg0ZjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuY1xuQEAgLTI4OTMsMTAgJiM0MzsyODkzLDEzIEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXG4gXG4gXHRzcGluX2xvY2soXHUwMDI2d3gtXHUwMDNlaHdfc3RhdHNfbG9jayk7XG4gXG4mIzQzO1x0cmN1X3JlYWRfbG9jaygpO1xuIFx0LyogZ2F0aGVyIHNvbWUgc3RhdHMgdG8gdGhlIHd4IHN0cnVjdCB0aGF0IGFyZSBwZXIgcXVldWUgKi9cbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHd4LVx1MDAzZW51bV9yeF9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gd3gtXHUwMDNlcnhfcmluZ1tpXTtcbiYjNDM7XHRcdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gUkVBRF9PTkNFKHd4LVx1MDAzZXJ4X3JpbmdbaV0pO1xuIFxuJiM0MztcdFx0aWYgKCFyeF9yaW5nKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiBcdFx0bm9uX2VvcF9kZXNjcyAmIzQzOz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5ub25fZW9wX2Rlc2NzO1xuIFx0XHRhbGxvY19yeF9idWZmX2ZhaWxlZCAmIzQzOz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5hbGxvY19yeF9idWZmX2ZhaWxlZDtcbiBcdFx0aHdfY3N1bV9yeF9nb29kICYjNDM7PSByeF9yaW5nLVx1MDAzZXJ4X3N0YXRzLmNzdW1fZ29vZF9jbnQ7XG5AQCAtMjkxMiwxOSAmIzQzOzI5MTUsMjggQEAgdm9pZCB3eF91cGRhdGVfc3RhdHMoc3RydWN0IHd4ICp3eClcbiBcdFx0dTY0IHJzY19mbHVzaCA9IDA7XG4gXG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHd4LVx1MDAzZW51bV9yeF9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdFx0cnNjX2NvdW50ICYjNDM7PSB3eC1cdTAwM2VyeF9yaW5nW2ldLVx1MDAzZXJ4X3N0YXRzLnJzY19jb3VudDtcbi1cdFx0XHRyc2NfZmx1c2ggJiM0Mzs9IHd4LVx1MDAzZXJ4X3JpbmdbaV0tXHUwMDNlcnhfc3RhdHMucnNjX2ZsdXNoO1xuJiM0MztcdFx0XHRzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZyA9IFJFQURfT05DRSh3eC1cdTAwM2VyeF9yaW5nW2ldKTtcbiYjNDM7XG4mIzQzO1x0XHRcdGlmICghcnhfcmluZylcbiYjNDM7XHRcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRcdHJzY19jb3VudCAmIzQzOz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5yc2NfY291bnQ7XG4mIzQzO1x0XHRcdHJzY19mbHVzaCAmIzQzOz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5yc2NfZmx1c2g7XG4gXHRcdH1cbiBcdFx0d3gtXHUwMDNlcnNjX2NvdW50ID0gcnNjX2NvdW50O1xuIFx0XHR3eC1cdTAwM2Vyc2NfZmx1c2ggPSByc2NfZmx1c2g7XG4gXHR9XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fdHhfcXVldWVzOyBpJiM0MzsmIzQzOykge1xuLVx0XHRzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZyA9IHd4LVx1MDAzZXR4X3JpbmdbaV07XG4mIzQzO1x0XHRzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZyA9IFJFQURfT05DRSh3eC1cdTAwM2V0eF9yaW5nW2ldKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoIXR4X3JpbmcpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRyZXN0YXJ0X3F1ZXVlICYjNDM7PSB0eF9yaW5nLVx1MDAzZXR4X3N0YXRzLnJlc3RhcnRfcXVldWU7XG4gXHRcdHR4X2J1c3kgJiM0Mzs9IHR4X3JpbmctXHUwMDNldHhfc3RhdHMudHhfYnVzeTtcbiBcdH1cbiYjNDM7XHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdHd4LVx1MDAzZXJlc3RhcnRfcXVldWUgPSByZXN0YXJ0X3F1ZXVlO1xuIFx0d3gtXHUwMDNldHhfYnVzeSA9IHR4X2J1c3k7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcbmluZGV4IGVkNWFhZDc4NTdiZDkuLmMyMjdlOWFiOGE0YWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXG5AQCAtMjE5MSw3ICYjNDM7MjE5MSw3IEBAIHN0YXRpYyBpbnQgd3hfYWxsb2NfcV92ZWN0b3Ioc3RydWN0IHd4ICp3eCxcbiBcdFx0cmluZy1cdTAwM2VxdWV1ZV9pbmRleCA9IHR4cl9pZHg7XG4gXG4gXHRcdC8qIGFzc2lnbiByaW5nIHRvIHd4ICovXG4tXHRcdHd4LVx1MDAzZXR4X3JpbmdbdHhyX2lkeF0gPSByaW5nO1xuJiM0MztcdFx0V1JJVEVfT05DRSh3eC1cdTAwM2V0eF9yaW5nW3R4cl9pZHhdLCByaW5nKTtcbiBcbiBcdFx0LyogdXBkYXRlIGNvdW50IGFuZCBpbmRleCAqL1xuIFx0XHR0eHJfY291bnQtLTtcbkBAIC0yMjE3LDcgJiM0MzsyMjE3LDcgQEAgc3RhdGljIGludCB3eF9hbGxvY19xX3ZlY3RvcihzdHJ1Y3Qgd3ggKnd4LFxuIFx0XHRyaW5nLVx1MDAzZXF1ZXVlX2luZGV4ID0gcnhyX2lkeDtcbiBcbiBcdFx0LyogYXNzaWduIHJpbmcgdG8gd3ggKi9cbi1cdFx0d3gtXHUwMDNlcnhfcmluZ1tyeHJfaWR4XSA9IHJpbmc7XG4mIzQzO1x0XHRXUklURV9PTkNFKHd4LVx1MDAzZXJ4X3JpbmdbcnhyX2lkeF0sIHJpbmcpO1xuIFxuIFx0XHQvKiB1cGRhdGUgY291bnQgYW5kIGluZGV4ICovXG4gXHRcdHJ4cl9jb3VudC0tO1xuQEAgLTIyNDUsMTAgJiM0MzsyMjQ1LDEwIEBAIHN0YXRpYyB2b2lkIHd4X2ZyZWVfcV92ZWN0b3Ioc3RydWN0IHd4ICp3eCwgaW50IHZfaWR4KVxuIFx0c3RydWN0IHd4X3JpbmcgKnJpbmc7XG4gXG4gXHR3eF9mb3JfZWFjaF9yaW5nKHJpbmcsIHFfdmVjdG9yLVx1MDAzZXR4KVxuLVx0XHR3eC1cdTAwM2V0eF9yaW5nW3JpbmctXHUwMDNlcXVldWVfaW5kZXhdID0gTlVMTDtcbiYjNDM7XHRcdFdSSVRFX09OQ0Uod3gtXHUwMDNldHhfcmluZ1tyaW5nLVx1MDAzZXF1ZXVlX2luZGV4XSwgTlVMTCk7XG4gXG4gXHR3eF9mb3JfZWFjaF9yaW5nKHJpbmcsIHFfdmVjdG9yLVx1MDAzZXJ4KVxuLVx0XHR3eC1cdTAwM2VyeF9yaW5nW3JpbmctXHUwMDNlcXVldWVfaW5kZXhdID0gTlVMTDtcbiYjNDM7XHRcdFdSSVRFX09OQ0Uod3gtXHUwMDNlcnhfcmluZ1tyaW5nLVx1MDAzZXF1ZXVlX2luZGV4XSwgTlVMTCk7XG4gXG4gXHR3eC1cdTAwM2VxX3ZlY3Rvclt2X2lkeF0gPSBOVUxMO1xuIFx0bmV0aWZfbmFwaV9kZWwoXHUwMDI2cV92ZWN0b3ItXHUwMDNlbmFwaSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MjM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIEV0aGVybmV0IGRyaXZlciAobGlid3gpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4NTY0ZDdkOWUzZGUxNDQ4MWIxOTZhM2FiM2NjMzEwNjBhNWZjZmRkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgMTMgMTE6MjM6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMKaW5kZXggMTIyYzQ5NTJkMjAzZi4uMDk2ZmU3ZjNkODRmMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYwpAQCAtMjg5MywxMCAmIzQzOzI4OTMsMTMgQEAgdm9pZCB3eF91cGRhdGVfc3RhdHMoc3RydWN0IHd4ICp3eCkKIAogCXNwaW5fbG9jaygmYW1wO3d4LSZndDtod19zdGF0c19sb2NrKTsKIAomIzQzOwlyY3VfcmVhZF9sb2NrKCk7CiAJLyogZ2F0aGVyIHNvbWUgc3RhdHMgdG8gdGhlIHd4IHN0cnVjdCB0aGF0IGFyZSBwZXIgcXVldWUgKi8KIAlmb3IgKGkgPSAwOyBpICZsdDsgd3gtJmd0O251bV9yeF9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7Ci0JCXN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gd3gtJmd0O3J4X3JpbmdbaV07CiYjNDM7CQlzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZyA9IFJFQURfT05DRSh3eC0mZ3Q7cnhfcmluZ1tpXSk7CiAKJiM0MzsJCWlmICghcnhfcmluZykKJiM0MzsJCQljb250aW51ZTsKIAkJbm9uX2VvcF9kZXNjcyAmIzQzOz0gcnhfcmluZy0mZ3Q7cnhfc3RhdHMubm9uX2VvcF9kZXNjczsKIAkJYWxsb2NfcnhfYnVmZl9mYWlsZWQgJiM0Mzs9IHJ4X3JpbmctJmd0O3J4X3N0YXRzLmFsbG9jX3J4X2J1ZmZfZmFpbGVkOwogCQlod19jc3VtX3J4X2dvb2QgJiM0Mzs9IHJ4X3JpbmctJmd0O3J4X3N0YXRzLmNzdW1fZ29vZF9jbnQ7CkBAIC0yOTEyLDE5ICYjNDM7MjkxNSwyOCBAQCB2b2lkIHd4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3Qgd3ggKnd4KQogCQl1NjQgcnNjX2ZsdXNoID0gMDsKIAogCQlmb3IgKGkgPSAwOyBpICZsdDsgd3gtJmd0O251bV9yeF9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7Ci0JCQlyc2NfY291bnQgJiM0Mzs9IHd4LSZndDtyeF9yaW5nW2ldLSZndDtyeF9zdGF0cy5yc2NfY291bnQ7Ci0JCQlyc2NfZmx1c2ggJiM0Mzs9IHd4LSZndDtyeF9yaW5nW2ldLSZndDtyeF9zdGF0cy5yc2NfZmx1c2g7CiYjNDM7CQkJc3RydWN0IHd4X3JpbmcgKnJ4X3JpbmcgPSBSRUFEX09OQ0Uod3gtJmd0O3J4X3JpbmdbaV0pOwomIzQzOwomIzQzOwkJCWlmICghcnhfcmluZykKJiM0MzsJCQkJY29udGludWU7CiYjNDM7CiYjNDM7CQkJcnNjX2NvdW50ICYjNDM7PSByeF9yaW5nLSZndDtyeF9zdGF0cy5yc2NfY291bnQ7CiYjNDM7CQkJcnNjX2ZsdXNoICYjNDM7PSByeF9yaW5nLSZndDtyeF9zdGF0cy5yc2NfZmx1c2g7CiAJCX0KIAkJd3gtJmd0O3JzY19jb3VudCA9IHJzY19jb3VudDsKIAkJd3gtJmd0O3JzY19mbHVzaCA9IHJzY19mbHVzaDsKIAl9CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgd3gtJmd0O251bV90eF9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7Ci0JCXN0cnVjdCB3eF9yaW5nICp0eF9yaW5nID0gd3gtJmd0O3R4X3JpbmdbaV07CiYjNDM7CQlzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZyA9IFJFQURfT05DRSh3eC0mZ3Q7dHhfcmluZ1tpXSk7CiYjNDM7CiYjNDM7CQlpZiAoIXR4X3JpbmcpCiYjNDM7CQkJY29udGludWU7CiAKIAkJcmVzdGFydF9xdWV1ZSAmIzQzOz0gdHhfcmluZy0mZ3Q7dHhfc3RhdHMucmVzdGFydF9xdWV1ZTsKIAkJdHhfYnVzeSAmIzQzOz0gdHhfcmluZy0mZ3Q7dHhfc3RhdHMudHhfYnVzeTsKIAl9CiYjNDM7CXJjdV9yZWFkX3VubG9jaygpOwogCXd4LSZndDtyZXN0YXJ0X3F1ZXVlID0gcmVzdGFydF9xdWV1ZTsKIAl3eC0mZ3Q7dHhfYnVzeSA9IHR4X2J1c3k7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jCmluZGV4IGVkNWFhZDc4NTdiZDkuLmMyMjdlOWFiOGE0YWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYwpAQCAtMjE5MSw3ICYjNDM7MjE5MSw3IEBAIHN0YXRpYyBpbnQgd3hfYWxsb2NfcV92ZWN0b3Ioc3RydWN0IHd4ICp3eCwKIAkJcmluZy0mZ3Q7cXVldWVfaW5kZXggPSB0eHJfaWR4OwogCiAJCS8qIGFzc2lnbiByaW5nIHRvIHd4ICovCi0JCXd4LSZndDt0eF9yaW5nW3R4cl9pZHhdID0gcmluZzsKJiM0MzsJCVdSSVRFX09OQ0Uod3gtJmd0O3R4X3JpbmdbdHhyX2lkeF0sIHJpbmcpOwogCiAJCS8qIHVwZGF0ZSBjb3VudCBhbmQgaW5kZXggKi8KIAkJdHhyX2NvdW50LS07CkBAIC0yMjE3LDcgJiM0MzsyMjE3LDcgQEAgc3RhdGljIGludCB3eF9hbGxvY19xX3ZlY3RvcihzdHJ1Y3Qgd3ggKnd4LAogCQlyaW5nLSZndDtxdWV1ZV9pbmRleCA9IHJ4cl9pZHg7CiAKIAkJLyogYXNzaWduIHJpbmcgdG8gd3ggKi8KLQkJd3gtJmd0O3J4X3JpbmdbcnhyX2lkeF0gPSByaW5nOwomIzQzOwkJV1JJVEVfT05DRSh3eC0mZ3Q7cnhfcmluZ1tyeHJfaWR4XSwgcmluZyk7CiAKIAkJLyogdXBkYXRlIGNvdW50IGFuZCBpbmRleCAqLwogCQlyeHJfY291bnQtLTsKQEAgLTIyNDUsMTAgJiM0MzsyMjQ1LDEwIEBAIHN0YXRpYyB2b2lkIHd4X2ZyZWVfcV92ZWN0b3Ioc3RydWN0IHd4ICp3eCwgaW50IHZfaWR4KQogCXN0cnVjdCB3eF9yaW5nICpyaW5nOwogCiAJd3hfZm9yX2VhY2hfcmluZyhyaW5nLCBxX3ZlY3Rvci0mZ3Q7dHgpCi0JCXd4LSZndDt0eF9yaW5nW3JpbmctJmd0O3F1ZXVlX2luZGV4XSA9IE5VTEw7CiYjNDM7CQlXUklURV9PTkNFKHd4LSZndDt0eF9yaW5nW3JpbmctJmd0O3F1ZXVlX2luZGV4XSwgTlVMTCk7CiAKIAl3eF9mb3JfZWFjaF9yaW5nKHJpbmcsIHFfdmVjdG9yLSZndDtyeCkKLQkJd3gtJmd0O3J4X3JpbmdbcmluZy0mZ3Q7cXVldWVfaW5kZXhdID0gTlVMTDsKJiM0MzsJCVdSSVRFX09OQ0Uod3gtJmd0O3J4X3JpbmdbcmluZy0mZ3Q7cXVldWVfaW5kZXhdLCBOVUxMKTsKIAogCXd4LSZndDtxX3ZlY3Rvclt2X2lkeF0gPSBOVUxMOwogCW5ldGlmX25hcGlfZGVsKCZhbXA7cV92ZWN0b3ItJmd0O25hcGkpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTE5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdhbmd4dW4gRXRoZXJuZXQgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hpbmcgdGhlIFdhbmd4dW4gRXRoZXJuZXQgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1vZGlmeWluZyBgd3hfaHcuY2AgYW5kIGB3eF9saWIuY2Agd2l0aGluIHRoZSBgbGlid3hgIGRpcmVjdG9yeSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZSBjb3JlIGNoYW5nZSBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBjb25jdXJyZW5jeSBhbmQgbWVtb3J5IGFjY2VzcyBpbiB0aGUgYHd4X3VwZGF0ZV9zdGF0c2AgZnVuY3Rpb24uIEkgc2VlIHRoZXkmIzM5O3ZlIGFkZGVkIGByY3VfcmVhZF9sb2NrKClgIGFuZCBgcmN1X3JlYWRfdW5sb2NrKClgIGFyb3VuZCB0aGUgbG9vcHMgdGhhdCBpdGVyYXRlIHRocm91Z2ggYHd4LSZndDtyeF9yaW5nYCBhbmQgYHd4LSZndDt0eF9yaW5nYC4gUmlnaHQsIHRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgc3VnZ2VzdGluZyB0aGVyZSYjMzk7cyBhIHBvdGVudGlhbCBmb3IgcmVhZC13cml0ZSBjb250ZW50aW9uIG9uIHRob3NlIHJpbmdzLCBhbmQgUkNVIGlzIGEgc29saWQgYXBwcm9hY2ggdG8gaGFuZGxlIHRoYXQgaW4gdGhlIGtlcm5lbC4KClRoZXkmIzM5O3JlIGFsc28gZW1wbG95aW5nIGBSRUFEX09OQ0VgIGFuZCBgV1JJVEVfT05DRWAgZm9yIGFjY2Vzc2luZyBhbmQgbW9kaWZ5aW5nIHRoZSByaW5nIGVudHJpZXMuIFNtYXJ0LCB0aGlzIGlzIGNyaXRpY2FsIHRvIGVuc3VyZSBwcm9wZXIgbWVtb3J5IG9yZGVyaW5nIGFuZCBwcmV2ZW50IGFueSBjb21waWxlciBvcHRpbWl6YXRpb25zIGZyb20gY2F1c2luZyBpc3N1ZXMgd2l0aCBzaGFyZWQgbWVtb3J5LiBJJiMzOTttIGFzc3VtaW5nIHRoZXNlIHJpbmdzIGNvbnRhaW4gZGVzY3JpcHRvcnMgb3IgcGFja2V0IHBvaW50ZXJzLCBhbmQgd2l0aG91dCB0aGUgcHJvcGVyIG1lbW9yeSBiYXJyaWVycywgd2UgY291bGQgc2VlIHN0YWxlIGRhdGEgb3IgZXZlbiBjb3JydXB0aW9uLiBHb29kLCB0aGV5JiMzOTt2ZSBjbGVhcmx5IGNvbnNpZGVyZWQgdGhlIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuCgpGaW5hbGx5LCB0aGUgYWRkZWQgY2hlY2tzIGZvciBgIXJ4X3JpbmdgIGFuZCBgIXR4X3JpbmdgIGFyZSBhIHNpbXBsZSBidXQgZWZmZWN0aXZlIGRlZmVuc2UgYWdhaW5zdCBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcy4gQWx3YXlzIGEgZ29vZCBwcmFjdGljZSwgZXNwZWNpYWxseSB3aXRoaW4gYSBrZXJuZWwgZHJpdmVyLgoKTm93LCBjb25zaWRlcmluZyB0aGlzIGlzIGEgZHJpdmVyIGZvciBhIFdhbmd4dW4gRXRoZXJuZXQgY29udHJvbGxlciwgbXkgbmV4dCB0aG91Z2h0IGlzIGFib3V0IHRoZSBoYXJkd2FyZSBpdHNlbGYuIFdhbmd4dW4gaXMgYSBQQ0llIEV0aGVybmV0IGNvbnRyb2xsZXIgdmVuZG9yLCBzbyBJJiMzOTttIGN1cmlvdXMgaWYgdGhpcyBkcml2ZXIgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBwaHlzaWNhbCBoYXJkd2FyZSBvciBpZiBpdCYjMzk7cyByZWxhdGVkIHRvIHNvbWUga2luZCBvZiBlbXVsYXRpb24gd2l0aGluIFFFTVUuIExldCBtZSBxdWlja2x5IGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgZHJpdmVyIGRpcmVjdG9yeSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBjbHVlcyBhYm91dCB0aGUgaW50ZW5kZWQgdGFyZ2V0LiBVbmRlcnN0YW5kaW5nIHRoZSBoYXJkd2FyZSBjb250ZXh0IGlzIGNydWNpYWwgYmVmb3JlIEkgZGl2ZSBhbnkgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dhbmd4dW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTI4PWNvbmZpZyBOR0JFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTM3LVx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzozODpcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlLnJzdFx1MDAzZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0zOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9NDM9Y29uZmlnIFRYR0JFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTYxLVx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzo2MjpcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS5yc3RcdTAwM2UuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTY3PWNvbmZpZyBUWEdCRVZGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTc5LVx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzo4MDpcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmLnJzdFx1MDAzZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy04MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9ODU9Y29uZmlnIE5HQkVWRlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy05NS1cdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6OTY6XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmLnJzdFx1MDAzZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy05Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjYzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgRGlhZ25vc3RpYyBTdGVwOiBQaHlzaWNhbCBDb21wb25lbnQgVmVyaWZpY2F0aW9uKioKCkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgaW50byB0aGUgZGVlcCBlbmQgb2YgZHJpdmVyIGNvbmZsaWN0cywgQklPUyBzZXR0aW5ncywgb3Igc3lzdGVtIHJlc291cmNlIGFsbG9jYXRpb24sIG15IGZpcnN0IGluc3RpbmN0IGlzIGFsd2F5cyB0byBlc3RhYmxpc2ggdGhlICpwaHlzaWNhbCogcHJlc2VuY2UgYW5kIGNvbm5lY3Rpdml0eS4gSSBuZWVkIHRvIHRyZWF0IHRoaXMgYXMgdGhlIGZvdW5kYXRpb24uIElzIGl0IGFjdHVhbGx5IHRoZXJlPyBJcyBpdCBhIGRpc2NyZXRlIFBDSWUgY2FyZCB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCwgcGh5c2ljYWxseSBpbnN0YWxsZWQgaW4gYSBzbG90PyBUaGlzIHNlZW1pbmdseSBiYXNpYyBzdGVwIHByZXZlbnRzIHdhc3RpbmcgdGltZSBjaGFzaW5nIHBoYW50b20gaXNzdWVzIOKAkyBlc3BlY2lhbGx5IHdpdGggbW9kZXJuIG1vdGhlcmJvYXJkcyB3aGVyZSBpbnRlZ3JhdGVkIGNvbXBvbmVudHMgYW5kIHZpcnR1YWwgZGV2aWNlcyBjYW4gc29tZXRpbWVzIGNyZWF0ZSB0aGUgaWxsdXNpb24gb2Ygc29tZXRoaW5nIGJlaW5nIGluc3RhbGxlZCB3aGVuIGl0IGlzbiYjMzk7dCwgb3IgdmljZS12ZXJzYS4gU28sIHN0ZXAgb25lLCBiZWZvcmUgSSBldmVuIGNvbnNpZGVyIHNvZnR3YXJlLCBJJiMzOTttIHZlcmlmeWluZyB0aGUgaGFyZHdhcmUuIENvbmZpcm1pbmcgdGhlIHBoeXNpY2FsIFBDSWUgY2FyZCBpcyBwcm9wZXJseSBzZWF0ZWQsIHRoZSByZXRhaW5pbmcgY2xpcCBpcyBlbmdhZ2VkLCBhbmQgdGhlIHBvd2VyIGNhYmxlcyAoaWYgYXBwbGljYWJsZSkgYXJlIGNvbm5lY3RlZCBzZWN1cmVseS4gVGhhdCYjMzk7cyB3aGVyZSBJIHN0YXJ0LiBMZXQmIzM5O3MgbWFrZSBzdXJlIHdlIGhhdmUgYSB0YW5naWJsZSBkZXZpY2UgYmVmb3JlIHdlIHByb2NlZWQgd2l0aCB0aGUgcmVzdCBvZiBvdXIgZGVidWdnaW5nIHN0cmF0ZWd5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFdhbmd4dW4gbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTkVUX1ZFTkRPUl9XQU5HWFVOXG4gICA3Olx0XHRib29sIFwmIzM0O1dhbmd4dW4gZGV2aWNlc1wmIzM0O1xuICAgODpcdFx0ZGVmYXVsdCB5XG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIElmIHlvdSBoYXZlIGEgbmV0d29yayAoRXRoZXJuZXQpIGNhcmQgZnJvbSBXYW5neHVuKFIpLCBzYXkgWS5cbiAgMTE6XHRcbiAgMTI6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gIDEzOlx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGxcbiAgMTQ6XHRcdCAgdGhlIHF1ZXN0aW9ucyBhYm91dCBXYW5neHVuKFIpIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsXG4gIDE1Olx0XHQgIGJlIGFza2VkIGZvciB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXG4gIDE2Olx0XG4gIDE3Olx0aWYgTkVUX1ZFTkRPUl9XQU5HWFVOXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIExJQldYXG4gIDIwOlx0XHR0cmlzdGF0ZVxuICAyMTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAyMjpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAyMzpcdFx0c2VsZWN0IERJTUxJQlxuICAyNDpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMjU6XHRcdGhlbHBcbiAgMjY6XHRcdENvbW1vbiBsaWJyYXJ5IGZvciBXYW5neHVuKFIpIEV0aGVybmV0IGRyaXZlcnMuXG4gIDI3Olx0XG4gIDI4Olx0Y29uZmlnIE5HQkVcbiAgMjk6XHRcdHRyaXN0YXRlIFwmIzM0O1dhbmd4dW4oUikgR2JFIFBDSSBFeHByZXNzIGFkYXB0ZXJzIHN1cHBvcnRcJiMzNDtcbiAgMzA6XHRcdGRlcGVuZHMgb24gUENJXG4gIDMxOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDMyOlx0XHRzZWxlY3QgTElCV1hcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgV2FuZ3h1bihSKSBHYkUgUENJIEV4cHJlc3MgZmFtaWx5IG9mXG4gIDM1Olx0XHQgIGFkYXB0ZXJzLlxuICAzNjpcdFxuICAzNzpcdFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cbiAgMzg6XHRcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlLnJzdFx1MDAzZS5cbiAgMzk6XHRcbiAgNDA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxuICA0MTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBuZ2JlLlxuICA0MjpcdFxuICA0MzpcdGNvbmZpZyBUWEdCRVxuICA0NDpcdFx0dHJpc3RhdGUgXCYjMzQ7V2FuZ3h1bihSKSAxMC8yNS80MEdiRSBQQ0kgRXhwcmVzcyBhZGFwdGVycyBzdXBwb3J0XCYjMzQ7XG4gIDQ1Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA0NjpcdFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4gIDQ3Olx0XHRkZXBlbmRzIG9uIEkyQ19ERVNJR05XQVJFX1BMQVRGT1JNXG4gIDQ4Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDQ5Olx0XHRzZWxlY3QgTUFSVkVMTF8xMEdfUEhZXG4gIDUwOlx0XHRzZWxlY3QgUkVHTUFQXG4gIDUxOlx0XHRzZWxlY3QgSFdNT04gaWYgVFhHQkU9eVxuICA1MjpcdFx0c2VsZWN0IFNGUFxuICA1MzpcdFx0c2VsZWN0IEdQSU9MSUJcbiAgNTQ6XHRcdHNlbGVjdCBHUElPTElCX0lSUUNISVBcbiAgNTU6XHRcdHNlbGVjdCBQQ1NfWFBDU1xuICA1NjpcdFx0c2VsZWN0IExJQldYXG4gIDU3Olx0XHRoZWxwXG4gIDU4Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIFdhbmd4dW4oUikgMTAvMjUvNDBHYkUgUENJIEV4cHJlc3MgZmFtaWx5IG9mXG4gIDU5Olx0XHQgIGFkYXB0ZXJzLlxuICA2MDpcdFxuICA2MTpcdFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cbiAgNjI6XHRcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS5yc3RcdTAwM2UuXG4gIDYzOlx0XG4gIDY0Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcbiAgNjU6XHRcdCAgd2lsbCBiZSBjYWxsZWQgdHhnYmUuXG4gIDY2Olx0XG4gIDY3Olx0Y29uZmlnIFRYR0JFVkZcbiAgNjg6XHRcdHRyaXN0YXRlIFwmIzM0O1dhbmd4dW4oUikgMTAvMjUvNDBHIFZpcnR1YWwgRnVuY3Rpb24gRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuICA2OTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNzA6XHRcdGRlcGVuZHMgb24gUENJX01TSVxuICA3MTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICA3MjpcdFx0c2VsZWN0IExJQldYXG4gIDczOlx0XHRoZWxwXG4gIDc0Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHZpcnR1YWwgZnVuY3Rpb25zIGZvciBTUDEwMDBBLCBXWDE4MjBBTCxcbiAgNzU6XHRcdCAgV1g1WFhYLCBXWDVYWFhBTC5cbiAgNzY6XHRcbiAgNzc6XHRcdCAgVGhpcyBkcml2ZXIgd2FzIGZvcm1lcmx5IG5hbWVkIHR4Z2JldmYuXG4gIDc4Olx0XG4gIDc5Olx0XHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxuICA4MDpcdFx0ICBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYucnN0XHUwMDNlLlxuICA4MTpcdFxuICA4MjpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBNU0ktWCBpbnRlcnJ1cHRcbiAgODM6XHRcdCAgc3VwcG9ydCBpcyByZXF1aXJlZCBmb3IgdGhpcyBkcml2ZXIgdG8gd29yayBjb3JyZWN0bHkuXG4gIDg0Olx0XG4gIDg1Olx0Y29uZmlnIE5HQkVWRlxuICA4NjpcdFx0dHJpc3RhdGUgXCYjMzQ7V2FuZ3h1bihSKSBHYkUgVmlydHVhbCBGdW5jdGlvbiBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDg3Olx0XHRkZXBlbmRzIG9uIFBDSV9NU0lcbiAgODg6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgODk6XHRcdHNlbGVjdCBMSUJXWFxuICA5MDpcdFx0aGVscFxuICA5MTpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB2aXJ0dWFsIGZ1bmN0aW9ucyBmb3IgV1gxODYwLCBXWDE4NjBBTC5cbiAgOTI6XHRcbiAgOTM6XHRcdCAgVGhpcyBkcml2ZXIgd2FzIGZvcm1lcmx5IG5hbWVkIG5nYmV2Zi5cbiAgOTQ6XHRcbiAgOTU6XHRcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXG4gIDk2Olx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmLnJzdFx1MDAzZS5cbiAgOTc6XHRcbiAgOTg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gTVNJLVggaW50ZXJydXB0XG4gIDk5Olx0XHQgIHN1cHBvcnQgaXMgcmVxdWlyZWQgZm9yIHRoaXMgZHJpdmVyIHRvIHdvcmsgY29ycmVjdGx5LlxuIDEwMDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5MzYKCQkJCQkJCW91dHB1dDogNzkKCQkJCQkJCXRob3VnaHRzOiAxNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgV29ydGhGdXp6aW5nIEV2YWx1YXRpb24qKgoKT2theSwgc28gdGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIFdhbmd4dW4gR2JFIGFuZCAxMC8yNS80MEdiRSBQQ0llIGFkYXB0ZXJzLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGEgcmVkIGxpZ2h0IGluIG15IG1pbmQuIFRoaXMgaXNuJiMzOTt0IHNvbWUgZ2VuZXJpYyB2aXJ0dWFsIGRldmljZTsgdGhpcyBpcyBwaHlzaWNhbCwgKmFjdHVhbCogUENJZSBoYXJkd2FyZS4gSXQmIzM5O3Mgbm90IHRoZSBzb3J0IG9mIHRoaW5nIHlvdSYjMzk7ZCBmaW5kIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgd2hpY2ggaW1tZWRpYXRlbHkgbWVhbnMgaXQmIzM5O3MgYWxzbyBub3QgZ29pbmcgdG8gYmUgYWNjZXNzaWJsZSB3aXRoaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFLiBUaGUgY29udGV4dCBoZXJlIGlzIGZ1enppbmcsIHdoaWNoIG1lYW5zIHRoZSBpbnN0cnVjdGlvbiBpcyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgd2hlbiB0aGUgcGF0Y2ggdG91Y2hlcyBkcml2ZXJzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gUUVNVS4gR2l2ZW4gd2hhdCBJIGtub3cgYWJvdXQgdGhpcyBkcml2ZXIgYW5kIHRoZSBQQ0llIGFkYXB0ZXJzIGl0JiMzOTtzIHRhcmdldGluZywgYW5kIHRoZSBleHBsaWNpdCBpbnN0cnVjdGlvbiwgdGhlIGRlY2lzaW9uIGlzIGNsZWFyLiBJJiMzOTttIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIEV0aGVybmV0IGRyaXZlciAobGlid3gpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIEV0aGVybmV0IGRyaXZlciAobGlid3gpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MjM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjIzOjQyLjQzMDg0MTc2NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDYzMzgwMzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gRXRoZXJuZXQgZHJpdmVyIChsaWJ3eCksIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgaGFyZHdhcmUgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MjM6NDIuNDMwODUzMTQ1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTM5MTc4MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4NTY0ZDdkOWUzZGUxNDQ4MWIxOTZhM2FiM2NjMzEwNjBhNWZjZmRkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDEzIDExOjIzOjQxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuY1xcbmluZGV4IDEyMmM0OTUyZDIwM2YuLjA5NmZlN2YzZDg0ZjMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jXFxuQEAgLTI4OTMsMTAgKzI4OTMsMTMgQEAgdm9pZCB3eF91cGRhdGVfc3RhdHMoc3RydWN0IHd4ICp3eClcXG4gXFxuIFxcdHNwaW5fbG9jayhcXHUwMDI2d3gtXFx1MDAzZWh3X3N0YXRzX2xvY2spO1xcbiBcXG4rXFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXHQvKiBnYXRoZXIgc29tZSBzdGF0cyB0byB0aGUgd3ggc3RydWN0IHRoYXQgYXJlIHBlciBxdWV1ZSAqL1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgd3gtXFx1MDAzZW51bV9yeF9xdWV1ZXM7IGkrKykge1xcbi1cXHRcXHRzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZyA9IHd4LVxcdTAwM2VyeF9yaW5nW2ldO1xcbitcXHRcXHRzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZyA9IFJFQURfT05DRSh3eC1cXHUwMDNlcnhfcmluZ1tpXSk7XFxuIFxcbitcXHRcXHRpZiAoIXJ4X3JpbmcpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHRub25fZW9wX2Rlc2NzICs9IHJ4X3JpbmctXFx1MDAzZXJ4X3N0YXRzLm5vbl9lb3BfZGVzY3M7XFxuIFxcdFxcdGFsbG9jX3J4X2J1ZmZfZmFpbGVkICs9IHJ4X3JpbmctXFx1MDAzZXJ4X3N0YXRzLmFsbG9jX3J4X2J1ZmZfZmFpbGVkO1xcbiBcXHRcXHRod19jc3VtX3J4X2dvb2QgKz0gcnhfcmluZy1cXHUwMDNlcnhfc3RhdHMuY3N1bV9nb29kX2NudDtcXG5AQCAtMjkxMiwxOSArMjkxNSwyOCBAQCB2b2lkIHd4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3Qgd3ggKnd4KVxcbiBcXHRcXHR1NjQgcnNjX2ZsdXNoID0gMDtcXG4gXFxuIFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB3eC1cXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSsrKSB7XFxuLVxcdFxcdFxcdHJzY19jb3VudCArPSB3eC1cXHUwMDNlcnhfcmluZ1tpXS1cXHUwMDNlcnhfc3RhdHMucnNjX2NvdW50O1xcbi1cXHRcXHRcXHRyc2NfZmx1c2ggKz0gd3gtXFx1MDAzZXJ4X3JpbmdbaV0tXFx1MDAzZXJ4X3N0YXRzLnJzY19mbHVzaDtcXG4rXFx0XFx0XFx0c3RydWN0IHd4X3JpbmcgKnJ4X3JpbmcgPSBSRUFEX09OQ0Uod3gtXFx1MDAzZXJ4X3JpbmdbaV0pO1xcbitcXG4rXFx0XFx0XFx0aWYgKCFyeF9yaW5nKVxcbitcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuK1xcdFxcdFxcdHJzY19jb3VudCArPSByeF9yaW5nLVxcdTAwM2VyeF9zdGF0cy5yc2NfY291bnQ7XFxuK1xcdFxcdFxcdHJzY19mbHVzaCArPSByeF9yaW5nLVxcdTAwM2VyeF9zdGF0cy5yc2NfZmx1c2g7XFxuIFxcdFxcdH1cXG4gXFx0XFx0d3gtXFx1MDAzZXJzY19jb3VudCA9IHJzY19jb3VudDtcXG4gXFx0XFx0d3gtXFx1MDAzZXJzY19mbHVzaCA9IHJzY19mbHVzaDtcXG4gXFx0fVxcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHd4LVxcdTAwM2VudW1fdHhfcXVldWVzOyBpKyspIHtcXG4tXFx0XFx0c3RydWN0IHd4X3JpbmcgKnR4X3JpbmcgPSB3eC1cXHUwMDNldHhfcmluZ1tpXTtcXG4rXFx0XFx0c3RydWN0IHd4X3JpbmcgKnR4X3JpbmcgPSBSRUFEX09OQ0Uod3gtXFx1MDAzZXR4X3JpbmdbaV0pO1xcbitcXG4rXFx0XFx0aWYgKCF0eF9yaW5nKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdHJlc3RhcnRfcXVldWUgKz0gdHhfcmluZy1cXHUwMDNldHhfc3RhdHMucmVzdGFydF9xdWV1ZTtcXG4gXFx0XFx0dHhfYnVzeSArPSB0eF9yaW5nLVxcdTAwM2V0eF9zdGF0cy50eF9idXN5O1xcbiBcXHR9XFxuK1xcdHJjdV9yZWFkX3VubG9jaygpO1xcbiBcXHR3eC1cXHUwMDNlcmVzdGFydF9xdWV1ZSA9IHJlc3RhcnRfcXVldWU7XFxuIFxcdHd4LVxcdTAwM2V0eF9idXN5ID0gdHhfYnVzeTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXFxuaW5kZXggZWQ1YWFkNzg1N2JkOS4uYzIyN2U5YWI4YTRhZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xcbkBAIC0yMTkxLDcgKzIxOTEsNyBAQCBzdGF0aWMgaW50IHd4X2FsbG9jX3FfdmVjdG9yKHN0cnVjdCB3eCAqd3gsXFxuIFxcdFxcdHJpbmctXFx1MDAzZXF1ZXVlX2luZGV4ID0gdHhyX2lkeDtcXG4gXFxuIFxcdFxcdC8qIGFzc2lnbiByaW5nIHRvIHd4ICovXFxuLVxcdFxcdHd4LVxcdTAwM2V0eF9yaW5nW3R4cl9pZHhdID0gcmluZztcXG4rXFx0XFx0V1JJVEVfT05DRSh3eC1cXHUwMDNldHhfcmluZ1t0eHJfaWR4XSwgcmluZyk7XFxuIFxcbiBcXHRcXHQvKiB1cGRhdGUgY291bnQgYW5kIGluZGV4ICovXFxuIFxcdFxcdHR4cl9jb3VudC0tO1xcbkBAIC0yMjE3LDcgKzIyMTcsNyBAQCBzdGF0aWMgaW50IHd4X2FsbG9jX3FfdmVjdG9yKHN0cnVjdCB3eCAqd3gsXFxuIFxcdFxcdHJpbmctXFx1MDAzZXF1ZXVlX2luZGV4ID0gcnhyX2lkeDtcXG4gXFxuIFxcdFxcdC8qIGFzc2lnbiByaW5nIHRvIHd4ICovXFxuLVxcdFxcdHd4LVxcdTAwM2VyeF9yaW5nW3J4cl9pZHhdID0gcmluZztcXG4rXFx0XFx0V1JJVEVfT05DRSh3eC1cXHUwMDNlcnhfcmluZ1tyeHJfaWR4XSwgcmluZyk7XFxuIFxcbiBcXHRcXHQvKiB1cGRhdGUgY291bnQgYW5kIGluZGV4ICovXFxuIFxcdFxcdHJ4cl9jb3VudC0tO1xcbkBAIC0yMjQ1LDEwICsyMjQ1LDEwIEBAIHN0YXRpYyB2b2lkIHd4X2ZyZWVfcV92ZWN0b3Ioc3RydWN0IHd4ICp3eCwgaW50IHZfaWR4KVxcbiBcXHRzdHJ1Y3Qgd3hfcmluZyAqcmluZztcXG4gXFxuIFxcdHd4X2Zvcl9lYWNoX3JpbmcocmluZywgcV92ZWN0b3ItXFx1MDAzZXR4KVxcbi1cXHRcXHR3eC1cXHUwMDNldHhfcmluZ1tyaW5nLVxcdTAwM2VxdWV1ZV9pbmRleF0gPSBOVUxMO1xcbitcXHRcXHRXUklURV9PTkNFKHd4LVxcdTAwM2V0eF9yaW5nW3JpbmctXFx1MDAzZXF1ZXVlX2luZGV4XSwgTlVMTCk7XFxuIFxcbiBcXHR3eF9mb3JfZWFjaF9yaW5nKHJpbmcsIHFfdmVjdG9yLVxcdTAwM2VyeClcXG4tXFx0XFx0d3gtXFx1MDAzZXJ4X3JpbmdbcmluZy1cXHUwMDNlcXVldWVfaW5kZXhdID0gTlVMTDtcXG4rXFx0XFx0V1JJVEVfT05DRSh3eC1cXHUwMDNlcnhfcmluZ1tyaW5nLVxcdTAwM2VxdWV1ZV9pbmRleF0sIE5VTEwpO1xcbiBcXG4gXFx0d3gtXFx1MDAzZXFfdmVjdG9yW3ZfaWR4XSA9IE5VTEw7XFxuIFxcdG5ldGlmX25hcGlfZGVsKFxcdTAwMjZxX3ZlY3Rvci1cXHUwMDNlbmFwaSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjIzOjQyLjg0NTQxNzcwM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE0MDQ4NzkxOTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biBFdGhlcm5ldCBkcml2ZXIgKGxpYnd4KSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4NTY0ZDdkOWUzZGUxNDQ4MWIxOTZhM2FiM2NjMzEwNjBhNWZjZmRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTE6MjM6NDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmNcbmluZGV4IDEyMmM0OTUyZDIwM2YuLjA5NmZlN2YzZDg0ZjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuY1xuQEAgLTI4OTMsMTAgKzI4OTMsMTMgQEAgdm9pZCB3eF91cGRhdGVfc3RhdHMoc3RydWN0IHd4ICp3eClcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZ3eC1cdTAwM2Vod19zdGF0c19sb2NrKTtcbiBcbitcdHJjdV9yZWFkX2xvY2soKTtcbiBcdC8qIGdhdGhlciBzb21lIHN0YXRzIHRvIHRoZSB3eCBzdHJ1Y3QgdGhhdCBhcmUgcGVyIHF1ZXVlICovXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fcnhfcXVldWVzOyBpKyspIHtcbi1cdFx0c3RydWN0IHd4X3JpbmcgKnJ4X3JpbmcgPSB3eC1cdTAwM2VyeF9yaW5nW2ldO1xuK1x0XHRzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZyA9IFJFQURfT05DRSh3eC1cdTAwM2VyeF9yaW5nW2ldKTtcbiBcbitcdFx0aWYgKCFyeF9yaW5nKVxuK1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRub25fZW9wX2Rlc2NzICs9IHJ4X3JpbmctXHUwMDNlcnhfc3RhdHMubm9uX2VvcF9kZXNjcztcbiBcdFx0YWxsb2NfcnhfYnVmZl9mYWlsZWQgKz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5hbGxvY19yeF9idWZmX2ZhaWxlZDtcbiBcdFx0aHdfY3N1bV9yeF9nb29kICs9IHJ4X3JpbmctXHUwMDNlcnhfc3RhdHMuY3N1bV9nb29kX2NudDtcbkBAIC0yOTEyLDE5ICsyOTE1LDI4IEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXG4gXHRcdHU2NCByc2NfZmx1c2ggPSAwO1xuIFxuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fcnhfcXVldWVzOyBpKyspIHtcbi1cdFx0XHRyc2NfY291bnQgKz0gd3gtXHUwMDNlcnhfcmluZ1tpXS1cdTAwM2VyeF9zdGF0cy5yc2NfY291bnQ7XG4tXHRcdFx0cnNjX2ZsdXNoICs9IHd4LVx1MDAzZXJ4X3JpbmdbaV0tXHUwMDNlcnhfc3RhdHMucnNjX2ZsdXNoO1xuK1x0XHRcdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gUkVBRF9PTkNFKHd4LVx1MDAzZXJ4X3JpbmdbaV0pO1xuK1xuK1x0XHRcdGlmICghcnhfcmluZylcbitcdFx0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRcdHJzY19jb3VudCArPSByeF9yaW5nLVx1MDAzZXJ4X3N0YXRzLnJzY19jb3VudDtcbitcdFx0XHRyc2NfZmx1c2ggKz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5yc2NfZmx1c2g7XG4gXHRcdH1cbiBcdFx0d3gtXHUwMDNlcnNjX2NvdW50ID0gcnNjX2NvdW50O1xuIFx0XHR3eC1cdTAwM2Vyc2NfZmx1c2ggPSByc2NfZmx1c2g7XG4gXHR9XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fdHhfcXVldWVzOyBpKyspIHtcbi1cdFx0c3RydWN0IHd4X3JpbmcgKnR4X3JpbmcgPSB3eC1cdTAwM2V0eF9yaW5nW2ldO1xuK1x0XHRzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZyA9IFJFQURfT05DRSh3eC1cdTAwM2V0eF9yaW5nW2ldKTtcbitcbitcdFx0aWYgKCF0eF9yaW5nKVxuK1x0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRyZXN0YXJ0X3F1ZXVlICs9IHR4X3JpbmctXHUwMDNldHhfc3RhdHMucmVzdGFydF9xdWV1ZTtcbiBcdFx0dHhfYnVzeSArPSB0eF9yaW5nLVx1MDAzZXR4X3N0YXRzLnR4X2J1c3k7XG4gXHR9XG4rXHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdHd4LVx1MDAzZXJlc3RhcnRfcXVldWUgPSByZXN0YXJ0X3F1ZXVlO1xuIFx0d3gtXHUwMDNldHhfYnVzeSA9IHR4X2J1c3k7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcbmluZGV4IGVkNWFhZDc4NTdiZDkuLmMyMjdlOWFiOGE0YWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXG5AQCAtMjE5MSw3ICsyMTkxLDcgQEAgc3RhdGljIGludCB3eF9hbGxvY19xX3ZlY3RvcihzdHJ1Y3Qgd3ggKnd4LFxuIFx0XHRyaW5nLVx1MDAzZXF1ZXVlX2luZGV4ID0gdHhyX2lkeDtcbiBcbiBcdFx0LyogYXNzaWduIHJpbmcgdG8gd3ggKi9cbi1cdFx0d3gtXHUwMDNldHhfcmluZ1t0eHJfaWR4XSA9IHJpbmc7XG4rXHRcdFdSSVRFX09OQ0Uod3gtXHUwMDNldHhfcmluZ1t0eHJfaWR4XSwgcmluZyk7XG4gXG4gXHRcdC8qIHVwZGF0ZSBjb3VudCBhbmQgaW5kZXggKi9cbiBcdFx0dHhyX2NvdW50LS07XG5AQCAtMjIxNyw3ICsyMjE3LDcgQEAgc3RhdGljIGludCB3eF9hbGxvY19xX3ZlY3RvcihzdHJ1Y3Qgd3ggKnd4LFxuIFx0XHRyaW5nLVx1MDAzZXF1ZXVlX2luZGV4ID0gcnhyX2lkeDtcbiBcbiBcdFx0LyogYXNzaWduIHJpbmcgdG8gd3ggKi9cbi1cdFx0d3gtXHUwMDNlcnhfcmluZ1tyeHJfaWR4XSA9IHJpbmc7XG4rXHRcdFdSSVRFX09OQ0Uod3gtXHUwMDNlcnhfcmluZ1tyeHJfaWR4XSwgcmluZyk7XG4gXG4gXHRcdC8qIHVwZGF0ZSBjb3VudCBhbmQgaW5kZXggKi9cbiBcdFx0cnhyX2NvdW50LS07XG5AQCAtMjI0NSwxMCArMjI0NSwxMCBAQCBzdGF0aWMgdm9pZCB3eF9mcmVlX3FfdmVjdG9yKHN0cnVjdCB3eCAqd3gsIGludCB2X2lkeClcbiBcdHN0cnVjdCB3eF9yaW5nICpyaW5nO1xuIFxuIFx0d3hfZm9yX2VhY2hfcmluZyhyaW5nLCBxX3ZlY3Rvci1cdTAwM2V0eClcbi1cdFx0d3gtXHUwMDNldHhfcmluZ1tyaW5nLVx1MDAzZXF1ZXVlX2luZGV4XSA9IE5VTEw7XG4rXHRcdFdSSVRFX09OQ0Uod3gtXHUwMDNldHhfcmluZ1tyaW5nLVx1MDAzZXF1ZXVlX2luZGV4XSwgTlVMTCk7XG4gXG4gXHR3eF9mb3JfZWFjaF9yaW5nKHJpbmcsIHFfdmVjdG9yLVx1MDAzZXJ4KVxuLVx0XHR3eC1cdTAwM2VyeF9yaW5nW3JpbmctXHUwMDNlcXVldWVfaW5kZXhdID0gTlVMTDtcbitcdFx0V1JJVEVfT05DRSh3eC1cdTAwM2VyeF9yaW5nW3JpbmctXHUwMDNlcXVldWVfaW5kZXhdLCBOVUxMKTtcbiBcbiBcdHd4LVx1MDAzZXFfdmVjdG9yW3ZfaWR4XSA9IE5VTEw7XG4gXHRuZXRpZl9uYXBpX2RlbChcdTAwMjZxX3ZlY3Rvci1cdTAwM2VuYXBpKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjIzOjQyLjg0NTQxOTI5M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNTEwOTAyMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgV2FuZ3h1biBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0b3VjaGluZyB0aGUgV2FuZ3h1biBFdGhlcm5ldCBkcml2ZXIuIFNwZWNpZmljYWxseSwgaXQncyBtb2RpZnlpbmcgYHd4X2h3LmNgIGFuZCBgd3hfbGliLmNgIHdpdGhpbiB0aGUgYGxpYnd4YCBkaXJlY3RvcnksIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGUgY29yZSBjaGFuZ2Ugc2VlbXMgdG8gcmV2b2x2ZSBhcm91bmQgY29uY3VycmVuY3kgYW5kIG1lbW9yeSBhY2Nlc3MgaW4gdGhlIGB3eF91cGRhdGVfc3RhdHNgIGZ1bmN0aW9uLiBJIHNlZSB0aGV5J3ZlIGFkZGVkIGByY3VfcmVhZF9sb2NrKClgIGFuZCBgcmN1X3JlYWRfdW5sb2NrKClgIGFyb3VuZCB0aGUgbG9vcHMgdGhhdCBpdGVyYXRlIHRocm91Z2ggYHd4LVx1MDAzZXJ4X3JpbmdgIGFuZCBgd3gtXHUwMDNldHhfcmluZ2AuIFJpZ2h0LCB0aGF0J3MgaW1tZWRpYXRlbHkgc3VnZ2VzdGluZyB0aGVyZSdzIGEgcG90ZW50aWFsIGZvciByZWFkLXdyaXRlIGNvbnRlbnRpb24gb24gdGhvc2UgcmluZ3MsIGFuZCBSQ1UgaXMgYSBzb2xpZCBhcHByb2FjaCB0byBoYW5kbGUgdGhhdCBpbiB0aGUga2VybmVsLlxuXG5UaGV5J3JlIGFsc28gZW1wbG95aW5nIGBSRUFEX09OQ0VgIGFuZCBgV1JJVEVfT05DRWAgZm9yIGFjY2Vzc2luZyBhbmQgbW9kaWZ5aW5nIHRoZSByaW5nIGVudHJpZXMuIFNtYXJ0LCB0aGlzIGlzIGNyaXRpY2FsIHRvIGVuc3VyZSBwcm9wZXIgbWVtb3J5IG9yZGVyaW5nIGFuZCBwcmV2ZW50IGFueSBjb21waWxlciBvcHRpbWl6YXRpb25zIGZyb20gY2F1c2luZyBpc3N1ZXMgd2l0aCBzaGFyZWQgbWVtb3J5LiBJJ20gYXNzdW1pbmcgdGhlc2UgcmluZ3MgY29udGFpbiBkZXNjcmlwdG9ycyBvciBwYWNrZXQgcG9pbnRlcnMsIGFuZCB3aXRob3V0IHRoZSBwcm9wZXIgbWVtb3J5IGJhcnJpZXJzLCB3ZSBjb3VsZCBzZWUgc3RhbGUgZGF0YSBvciBldmVuIGNvcnJ1cHRpb24uIEdvb2QsIHRoZXkndmUgY2xlYXJseSBjb25zaWRlcmVkIHRoZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLlxuXG5GaW5hbGx5LCB0aGUgYWRkZWQgY2hlY2tzIGZvciBgIXJ4X3JpbmdgIGFuZCBgIXR4X3JpbmdgIGFyZSBhIHNpbXBsZSBidXQgZWZmZWN0aXZlIGRlZmVuc2UgYWdhaW5zdCBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcy4gQWx3YXlzIGEgZ29vZCBwcmFjdGljZSwgZXNwZWNpYWxseSB3aXRoaW4gYSBrZXJuZWwgZHJpdmVyLlxuXG5Ob3csIGNvbnNpZGVyaW5nIHRoaXMgaXMgYSBkcml2ZXIgZm9yIGEgV2FuZ3h1biBFdGhlcm5ldCBjb250cm9sbGVyLCBteSBuZXh0IHRob3VnaHQgaXMgYWJvdXQgdGhlIGhhcmR3YXJlIGl0c2VsZi4gV2FuZ3h1biBpcyBhIFBDSWUgRXRoZXJuZXQgY29udHJvbGxlciB2ZW5kb3IsIHNvIEknbSBjdXJpb3VzIGlmIHRoaXMgZHJpdmVyIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgcGh5c2ljYWwgaGFyZHdhcmUgb3IgaWYgaXQncyByZWxhdGVkIHRvIHNvbWUga2luZCBvZiBlbXVsYXRpb24gd2l0aGluIFFFTVUuIExldCBtZSBxdWlja2x5IGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgZHJpdmVyIGRpcmVjdG9yeSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBjbHVlcyBhYm91dCB0aGUgaW50ZW5kZWQgdGFyZ2V0LiBVbmRlcnN0YW5kaW5nIHRoZSBoYXJkd2FyZSBjb250ZXh0IGlzIGNydWNpYWwgYmVmb3JlIEkgZGl2ZSBhbnkgZGVlcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTE5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MjM6NDguODk2NTExNzIxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNDE5Nzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndhbmd4dW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz0yOD1jb25maWcgTkdCRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTM3LVxcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjM4OlxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3dhbmd4dW4vbmdiZS5yc3RcXHUwMDNlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0zOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz00Mz1jb25maWcgVFhHQkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy02MS1cXHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzo2MjpcXHQgIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL3R4Z2JlLnJzdFxcdTAwM2UuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTYzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTY3PWNvbmZpZyBUWEdCRVZGXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNzktXFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6ODA6XFx0ICBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmLnJzdFxcdTAwM2UuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTgxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTg1PWNvbmZpZyBOR0JFVkZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy05NS1cXHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzo5NjpcXHQgIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL25nYmV2Zi5yc3RcXHUwMDNlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy05Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MjM6NDguOTM5OTM3MTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzg0MjE0MDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBEaWFnbm9zdGljIFN0ZXA6IFBoeXNpY2FsIENvbXBvbmVudCBWZXJpZmljYXRpb24qKlxuXG5BbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIGludG8gdGhlIGRlZXAgZW5kIG9mIGRyaXZlciBjb25mbGljdHMsIEJJT1Mgc2V0dGluZ3MsIG9yIHN5c3RlbSByZXNvdXJjZSBhbGxvY2F0aW9uLCBteSBmaXJzdCBpbnN0aW5jdCBpcyBhbHdheXMgdG8gZXN0YWJsaXNoIHRoZSAqcGh5c2ljYWwqIHByZXNlbmNlIGFuZCBjb25uZWN0aXZpdHkuIEkgbmVlZCB0byB0cmVhdCB0aGlzIGFzIHRoZSBmb3VuZGF0aW9uLiBJcyBpdCBhY3R1YWxseSB0aGVyZT8gSXMgaXQgYSBkaXNjcmV0ZSBQQ0llIGNhcmQgd2UncmUgdGFsa2luZyBhYm91dCwgcGh5c2ljYWxseSBpbnN0YWxsZWQgaW4gYSBzbG90PyBUaGlzIHNlZW1pbmdseSBiYXNpYyBzdGVwIHByZXZlbnRzIHdhc3RpbmcgdGltZSBjaGFzaW5nIHBoYW50b20gaXNzdWVzIOKAkyBlc3BlY2lhbGx5IHdpdGggbW9kZXJuIG1vdGhlcmJvYXJkcyB3aGVyZSBpbnRlZ3JhdGVkIGNvbXBvbmVudHMgYW5kIHZpcnR1YWwgZGV2aWNlcyBjYW4gc29tZXRpbWVzIGNyZWF0ZSB0aGUgaWxsdXNpb24gb2Ygc29tZXRoaW5nIGJlaW5nIGluc3RhbGxlZCB3aGVuIGl0IGlzbid0LCBvciB2aWNlLXZlcnNhLiBTbywgc3RlcCBvbmUsIGJlZm9yZSBJIGV2ZW4gY29uc2lkZXIgc29mdHdhcmUsIEknbSB2ZXJpZnlpbmcgdGhlIGhhcmR3YXJlLiBDb25maXJtaW5nIHRoZSBwaHlzaWNhbCBQQ0llIGNhcmQgaXMgcHJvcGVybHkgc2VhdGVkLCB0aGUgcmV0YWluaW5nIGNsaXAgaXMgZW5nYWdlZCwgYW5kIHRoZSBwb3dlciBjYWJsZXMgKGlmIGFwcGxpY2FibGUpIGFyZSBjb25uZWN0ZWQgc2VjdXJlbHkuIFRoYXQncyB3aGVyZSBJIHN0YXJ0LiBMZXQncyBtYWtlIHN1cmUgd2UgaGF2ZSBhIHRhbmdpYmxlIGRldmljZSBiZWZvcmUgd2UgcHJvY2VlZCB3aXRoIHRoZSByZXN0IG9mIG91ciBkZWJ1Z2dpbmcgc3RyYXRlZ3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNjMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMToyMzo1Mi4zMjQxNTM4MzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFdhbmd4dW4gbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTkVUX1ZFTkRPUl9XQU5HWFVOXFxuICAgNzpcXHRcXHRib29sIFxcXCJXYW5neHVuIGRldmljZXNcXFwiXFxuICAgODpcXHRcXHRkZWZhdWx0IHlcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBmcm9tIFdhbmd4dW4oUiksIHNheSBZLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRcXHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24ndCBkaXJlY3RseSBhZmZlY3QgdGhlXFxuICAxMzpcXHRcXHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGxcXG4gIDE0OlxcdFxcdCAgdGhlIHF1ZXN0aW9ucyBhYm91dCBXYW5neHVuKFIpIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsXFxuICAxNTpcXHRcXHQgIGJlIGFza2VkIGZvciB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXFxuICAxNjpcXHRcXG4gIDE3OlxcdGlmIE5FVF9WRU5ET1JfV0FOR1hVTlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTElCV1hcXG4gIDIwOlxcdFxcdHRyaXN0YXRlXFxuICAyMTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAyMjpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAyMzpcXHRcXHRzZWxlY3QgRElNTElCXFxuICAyNDpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMjU6XFx0XFx0aGVscFxcbiAgMjY6XFx0XFx0Q29tbW9uIGxpYnJhcnkgZm9yIFdhbmd4dW4oUikgRXRoZXJuZXQgZHJpdmVycy5cXG4gIDI3OlxcdFxcbiAgMjg6XFx0Y29uZmlnIE5HQkVcXG4gIDI5OlxcdFxcdHRyaXN0YXRlIFxcXCJXYW5neHVuKFIpIEdiRSBQQ0kgRXhwcmVzcyBhZGFwdGVycyBzdXBwb3J0XFxcIlxcbiAgMzA6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDMxOlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDMyOlxcdFxcdHNlbGVjdCBMSUJXWFxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBXYW5neHVuKFIpIEdiRSBQQ0kgRXhwcmVzcyBmYW1pbHkgb2ZcXG4gIDM1OlxcdFxcdCAgYWRhcHRlcnMuXFxuICAzNjpcXHRcXG4gIDM3OlxcdFxcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXFxuICAzODpcXHRcXHQgIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL25nYmUucnN0XFx1MDAzZS5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXFxuICA0MTpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIG5nYmUuXFxuICA0MjpcXHRcXG4gIDQzOlxcdGNvbmZpZyBUWEdCRVxcbiAgNDQ6XFx0XFx0dHJpc3RhdGUgXFxcIldhbmd4dW4oUikgMTAvMjUvNDBHYkUgUENJIEV4cHJlc3MgYWRhcHRlcnMgc3VwcG9ydFxcXCJcXG4gIDQ1OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA0NjpcXHRcXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG4gIDQ3OlxcdFxcdGRlcGVuZHMgb24gSTJDX0RFU0lHTldBUkVfUExBVEZPUk1cXG4gIDQ4OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDQ5OlxcdFxcdHNlbGVjdCBNQVJWRUxMXzEwR19QSFlcXG4gIDUwOlxcdFxcdHNlbGVjdCBSRUdNQVBcXG4gIDUxOlxcdFxcdHNlbGVjdCBIV01PTiBpZiBUWEdCRT15XFxuICA1MjpcXHRcXHRzZWxlY3QgU0ZQXFxuICA1MzpcXHRcXHRzZWxlY3QgR1BJT0xJQlxcbiAgNTQ6XFx0XFx0c2VsZWN0IEdQSU9MSUJfSVJRQ0hJUFxcbiAgNTU6XFx0XFx0c2VsZWN0IFBDU19YUENTXFxuICA1NjpcXHRcXHRzZWxlY3QgTElCV1hcXG4gIDU3OlxcdFxcdGhlbHBcXG4gIDU4OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgV2FuZ3h1bihSKSAxMC8yNS80MEdiRSBQQ0kgRXhwcmVzcyBmYW1pbHkgb2ZcXG4gIDU5OlxcdFxcdCAgYWRhcHRlcnMuXFxuICA2MDpcXHRcXG4gIDYxOlxcdFxcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXFxuICA2MjpcXHRcXHQgIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL3R4Z2JlLnJzdFxcdTAwM2UuXFxuICA2MzpcXHRcXG4gIDY0OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbiAgNjU6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCB0eGdiZS5cXG4gIDY2OlxcdFxcbiAgNjc6XFx0Y29uZmlnIFRYR0JFVkZcXG4gIDY4OlxcdFxcdHRyaXN0YXRlIFxcXCJXYW5neHVuKFIpIDEwLzI1LzQwRyBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuICA2OTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgNzA6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lfTVNJXFxuICA3MTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICA3MjpcXHRcXHRzZWxlY3QgTElCV1hcXG4gIDczOlxcdFxcdGhlbHBcXG4gIDc0OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdmlydHVhbCBmdW5jdGlvbnMgZm9yIFNQMTAwMEEsIFdYMTgyMEFMLFxcbiAgNzU6XFx0XFx0ICBXWDVYWFgsIFdYNVhYWEFMLlxcbiAgNzY6XFx0XFxuICA3NzpcXHRcXHQgIFRoaXMgZHJpdmVyIHdhcyBmb3JtZXJseSBuYW1lZCB0eGdiZXZmLlxcbiAgNzg6XFx0XFxuICA3OTpcXHRcXHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxcbiAgODA6XFx0XFx0ICBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmLnJzdFxcdTAwM2UuXFxuICA4MTpcXHRcXG4gIDgyOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gTVNJLVggaW50ZXJydXB0XFxuICA4MzpcXHRcXHQgIHN1cHBvcnQgaXMgcmVxdWlyZWQgZm9yIHRoaXMgZHJpdmVyIHRvIHdvcmsgY29ycmVjdGx5LlxcbiAgODQ6XFx0XFxuICA4NTpcXHRjb25maWcgTkdCRVZGXFxuICA4NjpcXHRcXHR0cmlzdGF0ZSBcXFwiV2FuZ3h1bihSKSBHYkUgVmlydHVhbCBGdW5jdGlvbiBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbiAgODc6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lfTVNJXFxuICA4ODpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICA4OTpcXHRcXHRzZWxlY3QgTElCV1hcXG4gIDkwOlxcdFxcdGhlbHBcXG4gIDkxOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdmlydHVhbCBmdW5jdGlvbnMgZm9yIFdYMTg2MCwgV1gxODYwQUwuXFxuICA5MjpcXHRcXG4gIDkzOlxcdFxcdCAgVGhpcyBkcml2ZXIgd2FzIGZvcm1lcmx5IG5hbWVkIG5nYmV2Zi5cXG4gIDk0OlxcdFxcbiAgOTU6XFx0XFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG4gIDk2OlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmLnJzdFxcdTAwM2UuXFxuICA5NzpcXHRcXG4gIDk4OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gTVNJLVggaW50ZXJydXB0XFxuICA5OTpcXHRcXHQgIHN1cHBvcnQgaXMgcmVxdWlyZWQgZm9yIHRoaXMgZHJpdmVyIHRvIHdvcmsgY29ycmVjdGx5LlxcbiAxMDA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjIzOjUyLjMyNDIzMTA0OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1Njk5NDkwMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgV29ydGhGdXp6aW5nIEV2YWx1YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgZHJpdmVyIGluIHF1ZXN0aW9uIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgV2FuZ3h1biBHYkUgYW5kIDEwLzI1LzQwR2JFIFBDSWUgYWRhcHRlcnMuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSByZWQgbGlnaHQgaW4gbXkgbWluZC4gVGhpcyBpc24ndCBzb21lIGdlbmVyaWMgdmlydHVhbCBkZXZpY2U7IHRoaXMgaXMgcGh5c2ljYWwsICphY3R1YWwqIFBDSWUgaGFyZHdhcmUuIEl0J3Mgbm90IHRoZSBzb3J0IG9mIHRoaW5nIHlvdSdkIGZpbmQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCB3aGljaCBpbW1lZGlhdGVseSBtZWFucyBpdCdzIGFsc28gbm90IGdvaW5nIHRvIGJlIGFjY2Vzc2libGUgd2l0aGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRS4gVGhlIGNvbnRleHQgaGVyZSBpcyBmdXp6aW5nLCB3aGljaCBtZWFucyB0aGUgaW5zdHJ1Y3Rpb24gaXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIHdoZW4gdGhlIHBhdGNoIHRvdWNoZXMgZHJpdmVycyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIFFFTVUuIEdpdmVuIHdoYXQgSSBrbm93IGFib3V0IHRoaXMgZHJpdmVyIGFuZCB0aGUgUENJZSBhZGFwdGVycyBpdCdzIHRhcmdldGluZywgYW5kIHRoZSBleHBsaWNpdCBpbnN0cnVjdGlvbiwgdGhlIGRlY2lzaW9uIGlzIGNsZWFyLiBJJ20gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTM2LCJPdXRwdXRUb2tlbnMiOjc5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MjM6NTYuODk0MTgyNDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIEV0aGVybmV0IGRyaXZlciAobGlid3gpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIEV0aGVybmV0IGRyaXZlciAobGlid3gpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjIzOjU2Ljg5NDIxMTU4WiIsIlNlcSI6OSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowg7kjp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-13 10:50:37 +0000 UTC FinishedAt: 2026-08-13 11:23:57 +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+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gRXRoZXJuZXQgZHJpdmVyIChsaWJ3eCksIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgaGFyZHdhcmUgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMToyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDg1NjRkN2Q5ZTNkZTE0NDgxYjE5NmEzYWIzY2MzMTA2MGE1ZmNmZGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAxMToyMzo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmNcbmluZGV4IDEyMmM0OTUyZDIwM2YuLjA5NmZlN2YzZDg0ZjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuY1xuQEAgLTI4OTMsMTAgJiM0MzsyODkzLDEzIEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXG4gXG4gXHRzcGluX2xvY2soXHUwMDI2d3gtXHUwMDNlaHdfc3RhdHNfbG9jayk7XG4gXG4mIzQzO1x0cmN1X3JlYWRfbG9jaygpO1xuIFx0LyogZ2F0aGVyIHNvbWUgc3RhdHMgdG8gdGhlIHd4IHN0cnVjdCB0aGF0IGFyZSBwZXIgcXVldWUgKi9cbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHd4LVx1MDAzZW51bV9yeF9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gd3gtXHUwMDNlcnhfcmluZ1tpXTtcbiYjNDM7XHRcdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gUkVBRF9PTkNFKHd4LVx1MDAzZXJ4X3JpbmdbaV0pO1xuIFxuJiM0MztcdFx0aWYgKCFyeF9yaW5nKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiBcdFx0bm9uX2VvcF9kZXNjcyAmIzQzOz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5ub25fZW9wX2Rlc2NzO1xuIFx0XHRhbGxvY19yeF9idWZmX2ZhaWxlZCAmIzQzOz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5hbGxvY19yeF9idWZmX2ZhaWxlZDtcbiBcdFx0aHdfY3N1bV9yeF9nb29kICYjNDM7PSByeF9yaW5nLVx1MDAzZXJ4X3N0YXRzLmNzdW1fZ29vZF9jbnQ7XG5AQCAtMjkxMiwxOSAmIzQzOzI5MTUsMjggQEAgdm9pZCB3eF91cGRhdGVfc3RhdHMoc3RydWN0IHd4ICp3eClcbiBcdFx0dTY0IHJzY19mbHVzaCA9IDA7XG4gXG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHd4LVx1MDAzZW51bV9yeF9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdFx0cnNjX2NvdW50ICYjNDM7PSB3eC1cdTAwM2VyeF9yaW5nW2ldLVx1MDAzZXJ4X3N0YXRzLnJzY19jb3VudDtcbi1cdFx0XHRyc2NfZmx1c2ggJiM0Mzs9IHd4LVx1MDAzZXJ4X3JpbmdbaV0tXHUwMDNlcnhfc3RhdHMucnNjX2ZsdXNoO1xuJiM0MztcdFx0XHRzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZyA9IFJFQURfT05DRSh3eC1cdTAwM2VyeF9yaW5nW2ldKTtcbiYjNDM7XG4mIzQzO1x0XHRcdGlmICghcnhfcmluZylcbiYjNDM7XHRcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRcdHJzY19jb3VudCAmIzQzOz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5yc2NfY291bnQ7XG4mIzQzO1x0XHRcdHJzY19mbHVzaCAmIzQzOz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5yc2NfZmx1c2g7XG4gXHRcdH1cbiBcdFx0d3gtXHUwMDNlcnNjX2NvdW50ID0gcnNjX2NvdW50O1xuIFx0XHR3eC1cdTAwM2Vyc2NfZmx1c2ggPSByc2NfZmx1c2g7XG4gXHR9XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fdHhfcXVldWVzOyBpJiM0MzsmIzQzOykge1xuLVx0XHRzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZyA9IHd4LVx1MDAzZXR4X3JpbmdbaV07XG4mIzQzO1x0XHRzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZyA9IFJFQURfT05DRSh3eC1cdTAwM2V0eF9yaW5nW2ldKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoIXR4X3JpbmcpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRyZXN0YXJ0X3F1ZXVlICYjNDM7PSB0eF9yaW5nLVx1MDAzZXR4X3N0YXRzLnJlc3RhcnRfcXVldWU7XG4gXHRcdHR4X2J1c3kgJiM0Mzs9IHR4X3JpbmctXHUwMDNldHhfc3RhdHMudHhfYnVzeTtcbiBcdH1cbiYjNDM7XHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdHd4LVx1MDAzZXJlc3RhcnRfcXVldWUgPSByZXN0YXJ0X3F1ZXVlO1xuIFx0d3gtXHUwMDNldHhfYnVzeSA9IHR4X2J1c3k7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcbmluZGV4IGVkNWFhZDc4NTdiZDkuLmMyMjdlOWFiOGE0YWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXG5AQCAtMjE5MSw3ICYjNDM7MjE5MSw3IEBAIHN0YXRpYyBpbnQgd3hfYWxsb2NfcV92ZWN0b3Ioc3RydWN0IHd4ICp3eCxcbiBcdFx0cmluZy1cdTAwM2VxdWV1ZV9pbmRleCA9IHR4cl9pZHg7XG4gXG4gXHRcdC8qIGFzc2lnbiByaW5nIHRvIHd4ICovXG4tXHRcdHd4LVx1MDAzZXR4X3JpbmdbdHhyX2lkeF0gPSByaW5nO1xuJiM0MztcdFx0V1JJVEVfT05DRSh3eC1cdTAwM2V0eF9yaW5nW3R4cl9pZHhdLCByaW5nKTtcbiBcbiBcdFx0LyogdXBkYXRlIGNvdW50IGFuZCBpbmRleCAqL1xuIFx0XHR0eHJfY291bnQtLTtcbkBAIC0yMjE3LDcgJiM0MzsyMjE3LDcgQEAgc3RhdGljIGludCB3eF9hbGxvY19xX3ZlY3RvcihzdHJ1Y3Qgd3ggKnd4LFxuIFx0XHRyaW5nLVx1MDAzZXF1ZXVlX2luZGV4ID0gcnhyX2lkeDtcbiBcbiBcdFx0LyogYXNzaWduIHJpbmcgdG8gd3ggKi9cbi1cdFx0d3gtXHUwMDNlcnhfcmluZ1tyeHJfaWR4XSA9IHJpbmc7XG4mIzQzO1x0XHRXUklURV9PTkNFKHd4LVx1MDAzZXJ4X3JpbmdbcnhyX2lkeF0sIHJpbmcpO1xuIFxuIFx0XHQvKiB1cGRhdGUgY291bnQgYW5kIGluZGV4ICovXG4gXHRcdHJ4cl9jb3VudC0tO1xuQEAgLTIyNDUsMTAgJiM0MzsyMjQ1LDEwIEBAIHN0YXRpYyB2b2lkIHd4X2ZyZWVfcV92ZWN0b3Ioc3RydWN0IHd4ICp3eCwgaW50IHZfaWR4KVxuIFx0c3RydWN0IHd4X3JpbmcgKnJpbmc7XG4gXG4gXHR3eF9mb3JfZWFjaF9yaW5nKHJpbmcsIHFfdmVjdG9yLVx1MDAzZXR4KVxuLVx0XHR3eC1cdTAwM2V0eF9yaW5nW3JpbmctXHUwMDNlcXVldWVfaW5kZXhdID0gTlVMTDtcbiYjNDM7XHRcdFdSSVRFX09OQ0Uod3gtXHUwMDNldHhfcmluZ1tyaW5nLVx1MDAzZXF1ZXVlX2luZGV4XSwgTlVMTCk7XG4gXG4gXHR3eF9mb3JfZWFjaF9yaW5nKHJpbmcsIHFfdmVjdG9yLVx1MDAzZXJ4KVxuLVx0XHR3eC1cdTAwM2VyeF9yaW5nW3JpbmctXHUwMDNlcXVldWVfaW5kZXhdID0gTlVMTDtcbiYjNDM7XHRcdFdSSVRFX09OQ0Uod3gtXHUwMDNlcnhfcmluZ1tyaW5nLVx1MDAzZXF1ZXVlX2luZGV4XSwgTlVMTCk7XG4gXG4gXHR3eC1cdTAwM2VxX3ZlY3Rvclt2X2lkeF0gPSBOVUxMO1xuIFx0bmV0aWZfbmFwaV9kZWwoXHUwMDI2cV92ZWN0b3ItXHUwMDNlbmFwaSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MjM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIEV0aGVybmV0IGRyaXZlciAobGlid3gpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4NTY0ZDdkOWUzZGUxNDQ4MWIxOTZhM2FiM2NjMzEwNjBhNWZjZmRkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgMTMgMTE6MjM6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMKaW5kZXggMTIyYzQ5NTJkMjAzZi4uMDk2ZmU3ZjNkODRmMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYwpAQCAtMjg5MywxMCAmIzQzOzI4OTMsMTMgQEAgdm9pZCB3eF91cGRhdGVfc3RhdHMoc3RydWN0IHd4ICp3eCkKIAogCXNwaW5fbG9jaygmYW1wO3d4LSZndDtod19zdGF0c19sb2NrKTsKIAomIzQzOwlyY3VfcmVhZF9sb2NrKCk7CiAJLyogZ2F0aGVyIHNvbWUgc3RhdHMgdG8gdGhlIHd4IHN0cnVjdCB0aGF0IGFyZSBwZXIgcXVldWUgKi8KIAlmb3IgKGkgPSAwOyBpICZsdDsgd3gtJmd0O251bV9yeF9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7Ci0JCXN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gd3gtJmd0O3J4X3JpbmdbaV07CiYjNDM7CQlzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZyA9IFJFQURfT05DRSh3eC0mZ3Q7cnhfcmluZ1tpXSk7CiAKJiM0MzsJCWlmICghcnhfcmluZykKJiM0MzsJCQljb250aW51ZTsKIAkJbm9uX2VvcF9kZXNjcyAmIzQzOz0gcnhfcmluZy0mZ3Q7cnhfc3RhdHMubm9uX2VvcF9kZXNjczsKIAkJYWxsb2NfcnhfYnVmZl9mYWlsZWQgJiM0Mzs9IHJ4X3JpbmctJmd0O3J4X3N0YXRzLmFsbG9jX3J4X2J1ZmZfZmFpbGVkOwogCQlod19jc3VtX3J4X2dvb2QgJiM0Mzs9IHJ4X3JpbmctJmd0O3J4X3N0YXRzLmNzdW1fZ29vZF9jbnQ7CkBAIC0yOTEyLDE5ICYjNDM7MjkxNSwyOCBAQCB2b2lkIHd4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3Qgd3ggKnd4KQogCQl1NjQgcnNjX2ZsdXNoID0gMDsKIAogCQlmb3IgKGkgPSAwOyBpICZsdDsgd3gtJmd0O251bV9yeF9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7Ci0JCQlyc2NfY291bnQgJiM0Mzs9IHd4LSZndDtyeF9yaW5nW2ldLSZndDtyeF9zdGF0cy5yc2NfY291bnQ7Ci0JCQlyc2NfZmx1c2ggJiM0Mzs9IHd4LSZndDtyeF9yaW5nW2ldLSZndDtyeF9zdGF0cy5yc2NfZmx1c2g7CiYjNDM7CQkJc3RydWN0IHd4X3JpbmcgKnJ4X3JpbmcgPSBSRUFEX09OQ0Uod3gtJmd0O3J4X3JpbmdbaV0pOwomIzQzOwomIzQzOwkJCWlmICghcnhfcmluZykKJiM0MzsJCQkJY29udGludWU7CiYjNDM7CiYjNDM7CQkJcnNjX2NvdW50ICYjNDM7PSByeF9yaW5nLSZndDtyeF9zdGF0cy5yc2NfY291bnQ7CiYjNDM7CQkJcnNjX2ZsdXNoICYjNDM7PSByeF9yaW5nLSZndDtyeF9zdGF0cy5yc2NfZmx1c2g7CiAJCX0KIAkJd3gtJmd0O3JzY19jb3VudCA9IHJzY19jb3VudDsKIAkJd3gtJmd0O3JzY19mbHVzaCA9IHJzY19mbHVzaDsKIAl9CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgd3gtJmd0O251bV90eF9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7Ci0JCXN0cnVjdCB3eF9yaW5nICp0eF9yaW5nID0gd3gtJmd0O3R4X3JpbmdbaV07CiYjNDM7CQlzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZyA9IFJFQURfT05DRSh3eC0mZ3Q7dHhfcmluZ1tpXSk7CiYjNDM7CiYjNDM7CQlpZiAoIXR4X3JpbmcpCiYjNDM7CQkJY29udGludWU7CiAKIAkJcmVzdGFydF9xdWV1ZSAmIzQzOz0gdHhfcmluZy0mZ3Q7dHhfc3RhdHMucmVzdGFydF9xdWV1ZTsKIAkJdHhfYnVzeSAmIzQzOz0gdHhfcmluZy0mZ3Q7dHhfc3RhdHMudHhfYnVzeTsKIAl9CiYjNDM7CXJjdV9yZWFkX3VubG9jaygpOwogCXd4LSZndDtyZXN0YXJ0X3F1ZXVlID0gcmVzdGFydF9xdWV1ZTsKIAl3eC0mZ3Q7dHhfYnVzeSA9IHR4X2J1c3k7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jCmluZGV4IGVkNWFhZDc4NTdiZDkuLmMyMjdlOWFiOGE0YWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYwpAQCAtMjE5MSw3ICYjNDM7MjE5MSw3IEBAIHN0YXRpYyBpbnQgd3hfYWxsb2NfcV92ZWN0b3Ioc3RydWN0IHd4ICp3eCwKIAkJcmluZy0mZ3Q7cXVldWVfaW5kZXggPSB0eHJfaWR4OwogCiAJCS8qIGFzc2lnbiByaW5nIHRvIHd4ICovCi0JCXd4LSZndDt0eF9yaW5nW3R4cl9pZHhdID0gcmluZzsKJiM0MzsJCVdSSVRFX09OQ0Uod3gtJmd0O3R4X3JpbmdbdHhyX2lkeF0sIHJpbmcpOwogCiAJCS8qIHVwZGF0ZSBjb3VudCBhbmQgaW5kZXggKi8KIAkJdHhyX2NvdW50LS07CkBAIC0yMjE3LDcgJiM0MzsyMjE3LDcgQEAgc3RhdGljIGludCB3eF9hbGxvY19xX3ZlY3RvcihzdHJ1Y3Qgd3ggKnd4LAogCQlyaW5nLSZndDtxdWV1ZV9pbmRleCA9IHJ4cl9pZHg7CiAKIAkJLyogYXNzaWduIHJpbmcgdG8gd3ggKi8KLQkJd3gtJmd0O3J4X3JpbmdbcnhyX2lkeF0gPSByaW5nOwomIzQzOwkJV1JJVEVfT05DRSh3eC0mZ3Q7cnhfcmluZ1tyeHJfaWR4XSwgcmluZyk7CiAKIAkJLyogdXBkYXRlIGNvdW50IGFuZCBpbmRleCAqLwogCQlyeHJfY291bnQtLTsKQEAgLTIyNDUsMTAgJiM0MzsyMjQ1LDEwIEBAIHN0YXRpYyB2b2lkIHd4X2ZyZWVfcV92ZWN0b3Ioc3RydWN0IHd4ICp3eCwgaW50IHZfaWR4KQogCXN0cnVjdCB3eF9yaW5nICpyaW5nOwogCiAJd3hfZm9yX2VhY2hfcmluZyhyaW5nLCBxX3ZlY3Rvci0mZ3Q7dHgpCi0JCXd4LSZndDt0eF9yaW5nW3JpbmctJmd0O3F1ZXVlX2luZGV4XSA9IE5VTEw7CiYjNDM7CQlXUklURV9PTkNFKHd4LSZndDt0eF9yaW5nW3JpbmctJmd0O3F1ZXVlX2luZGV4XSwgTlVMTCk7CiAKIAl3eF9mb3JfZWFjaF9yaW5nKHJpbmcsIHFfdmVjdG9yLSZndDtyeCkKLQkJd3gtJmd0O3J4X3JpbmdbcmluZy0mZ3Q7cXVldWVfaW5kZXhdID0gTlVMTDsKJiM0MzsJCVdSSVRFX09OQ0Uod3gtJmd0O3J4X3JpbmdbcmluZy0mZ3Q7cXVldWVfaW5kZXhdLCBOVUxMKTsKIAogCXd4LSZndDtxX3ZlY3Rvclt2X2lkeF0gPSBOVUxMOwogCW5ldGlmX25hcGlfZGVsKCZhbXA7cV92ZWN0b3ItJmd0O25hcGkpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTE5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdhbmd4dW4gRXRoZXJuZXQgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hpbmcgdGhlIFdhbmd4dW4gRXRoZXJuZXQgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1vZGlmeWluZyBgd3hfaHcuY2AgYW5kIGB3eF9saWIuY2Agd2l0aGluIHRoZSBgbGlid3hgIGRpcmVjdG9yeSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZSBjb3JlIGNoYW5nZSBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBjb25jdXJyZW5jeSBhbmQgbWVtb3J5IGFjY2VzcyBpbiB0aGUgYHd4X3VwZGF0ZV9zdGF0c2AgZnVuY3Rpb24uIEkgc2VlIHRoZXkmIzM5O3ZlIGFkZGVkIGByY3VfcmVhZF9sb2NrKClgIGFuZCBgcmN1X3JlYWRfdW5sb2NrKClgIGFyb3VuZCB0aGUgbG9vcHMgdGhhdCBpdGVyYXRlIHRocm91Z2ggYHd4LSZndDtyeF9yaW5nYCBhbmQgYHd4LSZndDt0eF9yaW5nYC4gUmlnaHQsIHRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgc3VnZ2VzdGluZyB0aGVyZSYjMzk7cyBhIHBvdGVudGlhbCBmb3IgcmVhZC13cml0ZSBjb250ZW50aW9uIG9uIHRob3NlIHJpbmdzLCBhbmQgUkNVIGlzIGEgc29saWQgYXBwcm9hY2ggdG8gaGFuZGxlIHRoYXQgaW4gdGhlIGtlcm5lbC4KClRoZXkmIzM5O3JlIGFsc28gZW1wbG95aW5nIGBSRUFEX09OQ0VgIGFuZCBgV1JJVEVfT05DRWAgZm9yIGFjY2Vzc2luZyBhbmQgbW9kaWZ5aW5nIHRoZSByaW5nIGVudHJpZXMuIFNtYXJ0LCB0aGlzIGlzIGNyaXRpY2FsIHRvIGVuc3VyZSBwcm9wZXIgbWVtb3J5IG9yZGVyaW5nIGFuZCBwcmV2ZW50IGFueSBjb21waWxlciBvcHRpbWl6YXRpb25zIGZyb20gY2F1c2luZyBpc3N1ZXMgd2l0aCBzaGFyZWQgbWVtb3J5LiBJJiMzOTttIGFzc3VtaW5nIHRoZXNlIHJpbmdzIGNvbnRhaW4gZGVzY3JpcHRvcnMgb3IgcGFja2V0IHBvaW50ZXJzLCBhbmQgd2l0aG91dCB0aGUgcHJvcGVyIG1lbW9yeSBiYXJyaWVycywgd2UgY291bGQgc2VlIHN0YWxlIGRhdGEgb3IgZXZlbiBjb3JydXB0aW9uLiBHb29kLCB0aGV5JiMzOTt2ZSBjbGVhcmx5IGNvbnNpZGVyZWQgdGhlIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuCgpGaW5hbGx5LCB0aGUgYWRkZWQgY2hlY2tzIGZvciBgIXJ4X3JpbmdgIGFuZCBgIXR4X3JpbmdgIGFyZSBhIHNpbXBsZSBidXQgZWZmZWN0aXZlIGRlZmVuc2UgYWdhaW5zdCBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcy4gQWx3YXlzIGEgZ29vZCBwcmFjdGljZSwgZXNwZWNpYWxseSB3aXRoaW4gYSBrZXJuZWwgZHJpdmVyLgoKTm93LCBjb25zaWRlcmluZyB0aGlzIGlzIGEgZHJpdmVyIGZvciBhIFdhbmd4dW4gRXRoZXJuZXQgY29udHJvbGxlciwgbXkgbmV4dCB0aG91Z2h0IGlzIGFib3V0IHRoZSBoYXJkd2FyZSBpdHNlbGYuIFdhbmd4dW4gaXMgYSBQQ0llIEV0aGVybmV0IGNvbnRyb2xsZXIgdmVuZG9yLCBzbyBJJiMzOTttIGN1cmlvdXMgaWYgdGhpcyBkcml2ZXIgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBwaHlzaWNhbCBoYXJkd2FyZSBvciBpZiBpdCYjMzk7cyByZWxhdGVkIHRvIHNvbWUga2luZCBvZiBlbXVsYXRpb24gd2l0aGluIFFFTVUuIExldCBtZSBxdWlja2x5IGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgZHJpdmVyIGRpcmVjdG9yeSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBjbHVlcyBhYm91dCB0aGUgaW50ZW5kZWQgdGFyZ2V0LiBVbmRlcnN0YW5kaW5nIHRoZSBoYXJkd2FyZSBjb250ZXh0IGlzIGNydWNpYWwgYmVmb3JlIEkgZGl2ZSBhbnkgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dhbmd4dW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTI4PWNvbmZpZyBOR0JFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTM3LVx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzozODpcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlLnJzdFx1MDAzZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0zOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9NDM9Y29uZmlnIFRYR0JFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTYxLVx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzo2MjpcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS5yc3RcdTAwM2UuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTY3PWNvbmZpZyBUWEdCRVZGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTc5LVx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzo4MDpcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmLnJzdFx1MDAzZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy04MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9ODU9Y29uZmlnIE5HQkVWRlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy05NS1cdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6OTY6XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmLnJzdFx1MDAzZS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy05Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjYzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgRGlhZ25vc3RpYyBTdGVwOiBQaHlzaWNhbCBDb21wb25lbnQgVmVyaWZpY2F0aW9uKioKCkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgaW50byB0aGUgZGVlcCBlbmQgb2YgZHJpdmVyIGNvbmZsaWN0cywgQklPUyBzZXR0aW5ncywgb3Igc3lzdGVtIHJlc291cmNlIGFsbG9jYXRpb24sIG15IGZpcnN0IGluc3RpbmN0IGlzIGFsd2F5cyB0byBlc3RhYmxpc2ggdGhlICpwaHlzaWNhbCogcHJlc2VuY2UgYW5kIGNvbm5lY3Rpdml0eS4gSSBuZWVkIHRvIHRyZWF0IHRoaXMgYXMgdGhlIGZvdW5kYXRpb24uIElzIGl0IGFjdHVhbGx5IHRoZXJlPyBJcyBpdCBhIGRpc2NyZXRlIFBDSWUgY2FyZCB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCwgcGh5c2ljYWxseSBpbnN0YWxsZWQgaW4gYSBzbG90PyBUaGlzIHNlZW1pbmdseSBiYXNpYyBzdGVwIHByZXZlbnRzIHdhc3RpbmcgdGltZSBjaGFzaW5nIHBoYW50b20gaXNzdWVzIOKAkyBlc3BlY2lhbGx5IHdpdGggbW9kZXJuIG1vdGhlcmJvYXJkcyB3aGVyZSBpbnRlZ3JhdGVkIGNvbXBvbmVudHMgYW5kIHZpcnR1YWwgZGV2aWNlcyBjYW4gc29tZXRpbWVzIGNyZWF0ZSB0aGUgaWxsdXNpb24gb2Ygc29tZXRoaW5nIGJlaW5nIGluc3RhbGxlZCB3aGVuIGl0IGlzbiYjMzk7dCwgb3IgdmljZS12ZXJzYS4gU28sIHN0ZXAgb25lLCBiZWZvcmUgSSBldmVuIGNvbnNpZGVyIHNvZnR3YXJlLCBJJiMzOTttIHZlcmlmeWluZyB0aGUgaGFyZHdhcmUuIENvbmZpcm1pbmcgdGhlIHBoeXNpY2FsIFBDSWUgY2FyZCBpcyBwcm9wZXJseSBzZWF0ZWQsIHRoZSByZXRhaW5pbmcgY2xpcCBpcyBlbmdhZ2VkLCBhbmQgdGhlIHBvd2VyIGNhYmxlcyAoaWYgYXBwbGljYWJsZSkgYXJlIGNvbm5lY3RlZCBzZWN1cmVseS4gVGhhdCYjMzk7cyB3aGVyZSBJIHN0YXJ0LiBMZXQmIzM5O3MgbWFrZSBzdXJlIHdlIGhhdmUgYSB0YW5naWJsZSBkZXZpY2UgYmVmb3JlIHdlIHByb2NlZWQgd2l0aCB0aGUgcmVzdCBvZiBvdXIgZGVidWdnaW5nIHN0cmF0ZWd5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFdhbmd4dW4gbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTkVUX1ZFTkRPUl9XQU5HWFVOXG4gICA3Olx0XHRib29sIFwmIzM0O1dhbmd4dW4gZGV2aWNlc1wmIzM0O1xuICAgODpcdFx0ZGVmYXVsdCB5XG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIElmIHlvdSBoYXZlIGEgbmV0d29yayAoRXRoZXJuZXQpIGNhcmQgZnJvbSBXYW5neHVuKFIpLCBzYXkgWS5cbiAgMTE6XHRcbiAgMTI6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gIDEzOlx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGxcbiAgMTQ6XHRcdCAgdGhlIHF1ZXN0aW9ucyBhYm91dCBXYW5neHVuKFIpIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsXG4gIDE1Olx0XHQgIGJlIGFza2VkIGZvciB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXG4gIDE2Olx0XG4gIDE3Olx0aWYgTkVUX1ZFTkRPUl9XQU5HWFVOXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIExJQldYXG4gIDIwOlx0XHR0cmlzdGF0ZVxuICAyMTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAyMjpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAyMzpcdFx0c2VsZWN0IERJTUxJQlxuICAyNDpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMjU6XHRcdGhlbHBcbiAgMjY6XHRcdENvbW1vbiBsaWJyYXJ5IGZvciBXYW5neHVuKFIpIEV0aGVybmV0IGRyaXZlcnMuXG4gIDI3Olx0XG4gIDI4Olx0Y29uZmlnIE5HQkVcbiAgMjk6XHRcdHRyaXN0YXRlIFwmIzM0O1dhbmd4dW4oUikgR2JFIFBDSSBFeHByZXNzIGFkYXB0ZXJzIHN1cHBvcnRcJiMzNDtcbiAgMzA6XHRcdGRlcGVuZHMgb24gUENJXG4gIDMxOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDMyOlx0XHRzZWxlY3QgTElCV1hcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgV2FuZ3h1bihSKSBHYkUgUENJIEV4cHJlc3MgZmFtaWx5IG9mXG4gIDM1Olx0XHQgIGFkYXB0ZXJzLlxuICAzNjpcdFxuICAzNzpcdFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cbiAgMzg6XHRcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlLnJzdFx1MDAzZS5cbiAgMzk6XHRcbiAgNDA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxuICA0MTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBuZ2JlLlxuICA0MjpcdFxuICA0MzpcdGNvbmZpZyBUWEdCRVxuICA0NDpcdFx0dHJpc3RhdGUgXCYjMzQ7V2FuZ3h1bihSKSAxMC8yNS80MEdiRSBQQ0kgRXhwcmVzcyBhZGFwdGVycyBzdXBwb3J0XCYjMzQ7XG4gIDQ1Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA0NjpcdFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4gIDQ3Olx0XHRkZXBlbmRzIG9uIEkyQ19ERVNJR05XQVJFX1BMQVRGT1JNXG4gIDQ4Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDQ5Olx0XHRzZWxlY3QgTUFSVkVMTF8xMEdfUEhZXG4gIDUwOlx0XHRzZWxlY3QgUkVHTUFQXG4gIDUxOlx0XHRzZWxlY3QgSFdNT04gaWYgVFhHQkU9eVxuICA1MjpcdFx0c2VsZWN0IFNGUFxuICA1MzpcdFx0c2VsZWN0IEdQSU9MSUJcbiAgNTQ6XHRcdHNlbGVjdCBHUElPTElCX0lSUUNISVBcbiAgNTU6XHRcdHNlbGVjdCBQQ1NfWFBDU1xuICA1NjpcdFx0c2VsZWN0IExJQldYXG4gIDU3Olx0XHRoZWxwXG4gIDU4Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIFdhbmd4dW4oUikgMTAvMjUvNDBHYkUgUENJIEV4cHJlc3MgZmFtaWx5IG9mXG4gIDU5Olx0XHQgIGFkYXB0ZXJzLlxuICA2MDpcdFxuICA2MTpcdFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cbiAgNjI6XHRcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS5yc3RcdTAwM2UuXG4gIDYzOlx0XG4gIDY0Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcbiAgNjU6XHRcdCAgd2lsbCBiZSBjYWxsZWQgdHhnYmUuXG4gIDY2Olx0XG4gIDY3Olx0Y29uZmlnIFRYR0JFVkZcbiAgNjg6XHRcdHRyaXN0YXRlIFwmIzM0O1dhbmd4dW4oUikgMTAvMjUvNDBHIFZpcnR1YWwgRnVuY3Rpb24gRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuICA2OTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNzA6XHRcdGRlcGVuZHMgb24gUENJX01TSVxuICA3MTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICA3MjpcdFx0c2VsZWN0IExJQldYXG4gIDczOlx0XHRoZWxwXG4gIDc0Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHZpcnR1YWwgZnVuY3Rpb25zIGZvciBTUDEwMDBBLCBXWDE4MjBBTCxcbiAgNzU6XHRcdCAgV1g1WFhYLCBXWDVYWFhBTC5cbiAgNzY6XHRcbiAgNzc6XHRcdCAgVGhpcyBkcml2ZXIgd2FzIGZvcm1lcmx5IG5hbWVkIHR4Z2JldmYuXG4gIDc4Olx0XG4gIDc5Olx0XHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxuICA4MDpcdFx0ICBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYucnN0XHUwMDNlLlxuICA4MTpcdFxuICA4MjpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBNU0ktWCBpbnRlcnJ1cHRcbiAgODM6XHRcdCAgc3VwcG9ydCBpcyByZXF1aXJlZCBmb3IgdGhpcyBkcml2ZXIgdG8gd29yayBjb3JyZWN0bHkuXG4gIDg0Olx0XG4gIDg1Olx0Y29uZmlnIE5HQkVWRlxuICA4NjpcdFx0dHJpc3RhdGUgXCYjMzQ7V2FuZ3h1bihSKSBHYkUgVmlydHVhbCBGdW5jdGlvbiBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDg3Olx0XHRkZXBlbmRzIG9uIFBDSV9NU0lcbiAgODg6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgODk6XHRcdHNlbGVjdCBMSUJXWFxuICA5MDpcdFx0aGVscFxuICA5MTpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB2aXJ0dWFsIGZ1bmN0aW9ucyBmb3IgV1gxODYwLCBXWDE4NjBBTC5cbiAgOTI6XHRcbiAgOTM6XHRcdCAgVGhpcyBkcml2ZXIgd2FzIGZvcm1lcmx5IG5hbWVkIG5nYmV2Zi5cbiAgOTQ6XHRcbiAgOTU6XHRcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXG4gIDk2Olx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmLnJzdFx1MDAzZS5cbiAgOTc6XHRcbiAgOTg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gTVNJLVggaW50ZXJydXB0XG4gIDk5Olx0XHQgIHN1cHBvcnQgaXMgcmVxdWlyZWQgZm9yIHRoaXMgZHJpdmVyIHRvIHdvcmsgY29ycmVjdGx5LlxuIDEwMDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5MzYKCQkJCQkJCW91dHB1dDogNzkKCQkJCQkJCXRob3VnaHRzOiAxNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgV29ydGhGdXp6aW5nIEV2YWx1YXRpb24qKgoKT2theSwgc28gdGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIFdhbmd4dW4gR2JFIGFuZCAxMC8yNS80MEdiRSBQQ0llIGFkYXB0ZXJzLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGEgcmVkIGxpZ2h0IGluIG15IG1pbmQuIFRoaXMgaXNuJiMzOTt0IHNvbWUgZ2VuZXJpYyB2aXJ0dWFsIGRldmljZTsgdGhpcyBpcyBwaHlzaWNhbCwgKmFjdHVhbCogUENJZSBoYXJkd2FyZS4gSXQmIzM5O3Mgbm90IHRoZSBzb3J0IG9mIHRoaW5nIHlvdSYjMzk7ZCBmaW5kIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgd2hpY2ggaW1tZWRpYXRlbHkgbWVhbnMgaXQmIzM5O3MgYWxzbyBub3QgZ29pbmcgdG8gYmUgYWNjZXNzaWJsZSB3aXRoaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFLiBUaGUgY29udGV4dCBoZXJlIGlzIGZ1enppbmcsIHdoaWNoIG1lYW5zIHRoZSBpbnN0cnVjdGlvbiBpcyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgd2hlbiB0aGUgcGF0Y2ggdG91Y2hlcyBkcml2ZXJzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gUUVNVS4gR2l2ZW4gd2hhdCBJIGtub3cgYWJvdXQgdGhpcyBkcml2ZXIgYW5kIHRoZSBQQ0llIGFkYXB0ZXJzIGl0JiMzOTtzIHRhcmdldGluZywgYW5kIHRoZSBleHBsaWNpdCBpbnN0cnVjdGlvbiwgdGhlIGRlY2lzaW9uIGlzIGNsZWFyLiBJJiMzOTttIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIEV0aGVybmV0IGRyaXZlciAobGlid3gpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIEV0aGVybmV0IGRyaXZlciAobGlid3gpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MjM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjIzOjQyLjQzMDg0MTc2NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDYzMzgwMzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gRXRoZXJuZXQgZHJpdmVyIChsaWJ3eCksIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgaGFyZHdhcmUgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MjM6NDIuNDMwODUzMTQ1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTM5MTc4MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4NTY0ZDdkOWUzZGUxNDQ4MWIxOTZhM2FiM2NjMzEwNjBhNWZjZmRkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDEzIDExOjIzOjQxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuY1xcbmluZGV4IDEyMmM0OTUyZDIwM2YuLjA5NmZlN2YzZDg0ZjMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jXFxuQEAgLTI4OTMsMTAgKzI4OTMsMTMgQEAgdm9pZCB3eF91cGRhdGVfc3RhdHMoc3RydWN0IHd4ICp3eClcXG4gXFxuIFxcdHNwaW5fbG9jayhcXHUwMDI2d3gtXFx1MDAzZWh3X3N0YXRzX2xvY2spO1xcbiBcXG4rXFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXHQvKiBnYXRoZXIgc29tZSBzdGF0cyB0byB0aGUgd3ggc3RydWN0IHRoYXQgYXJlIHBlciBxdWV1ZSAqL1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgd3gtXFx1MDAzZW51bV9yeF9xdWV1ZXM7IGkrKykge1xcbi1cXHRcXHRzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZyA9IHd4LVxcdTAwM2VyeF9yaW5nW2ldO1xcbitcXHRcXHRzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZyA9IFJFQURfT05DRSh3eC1cXHUwMDNlcnhfcmluZ1tpXSk7XFxuIFxcbitcXHRcXHRpZiAoIXJ4X3JpbmcpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHRub25fZW9wX2Rlc2NzICs9IHJ4X3JpbmctXFx1MDAzZXJ4X3N0YXRzLm5vbl9lb3BfZGVzY3M7XFxuIFxcdFxcdGFsbG9jX3J4X2J1ZmZfZmFpbGVkICs9IHJ4X3JpbmctXFx1MDAzZXJ4X3N0YXRzLmFsbG9jX3J4X2J1ZmZfZmFpbGVkO1xcbiBcXHRcXHRod19jc3VtX3J4X2dvb2QgKz0gcnhfcmluZy1cXHUwMDNlcnhfc3RhdHMuY3N1bV9nb29kX2NudDtcXG5AQCAtMjkxMiwxOSArMjkxNSwyOCBAQCB2b2lkIHd4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3Qgd3ggKnd4KVxcbiBcXHRcXHR1NjQgcnNjX2ZsdXNoID0gMDtcXG4gXFxuIFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB3eC1cXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSsrKSB7XFxuLVxcdFxcdFxcdHJzY19jb3VudCArPSB3eC1cXHUwMDNlcnhfcmluZ1tpXS1cXHUwMDNlcnhfc3RhdHMucnNjX2NvdW50O1xcbi1cXHRcXHRcXHRyc2NfZmx1c2ggKz0gd3gtXFx1MDAzZXJ4X3JpbmdbaV0tXFx1MDAzZXJ4X3N0YXRzLnJzY19mbHVzaDtcXG4rXFx0XFx0XFx0c3RydWN0IHd4X3JpbmcgKnJ4X3JpbmcgPSBSRUFEX09OQ0Uod3gtXFx1MDAzZXJ4X3JpbmdbaV0pO1xcbitcXG4rXFx0XFx0XFx0aWYgKCFyeF9yaW5nKVxcbitcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuK1xcdFxcdFxcdHJzY19jb3VudCArPSByeF9yaW5nLVxcdTAwM2VyeF9zdGF0cy5yc2NfY291bnQ7XFxuK1xcdFxcdFxcdHJzY19mbHVzaCArPSByeF9yaW5nLVxcdTAwM2VyeF9zdGF0cy5yc2NfZmx1c2g7XFxuIFxcdFxcdH1cXG4gXFx0XFx0d3gtXFx1MDAzZXJzY19jb3VudCA9IHJzY19jb3VudDtcXG4gXFx0XFx0d3gtXFx1MDAzZXJzY19mbHVzaCA9IHJzY19mbHVzaDtcXG4gXFx0fVxcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHd4LVxcdTAwM2VudW1fdHhfcXVldWVzOyBpKyspIHtcXG4tXFx0XFx0c3RydWN0IHd4X3JpbmcgKnR4X3JpbmcgPSB3eC1cXHUwMDNldHhfcmluZ1tpXTtcXG4rXFx0XFx0c3RydWN0IHd4X3JpbmcgKnR4X3JpbmcgPSBSRUFEX09OQ0Uod3gtXFx1MDAzZXR4X3JpbmdbaV0pO1xcbitcXG4rXFx0XFx0aWYgKCF0eF9yaW5nKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdHJlc3RhcnRfcXVldWUgKz0gdHhfcmluZy1cXHUwMDNldHhfc3RhdHMucmVzdGFydF9xdWV1ZTtcXG4gXFx0XFx0dHhfYnVzeSArPSB0eF9yaW5nLVxcdTAwM2V0eF9zdGF0cy50eF9idXN5O1xcbiBcXHR9XFxuK1xcdHJjdV9yZWFkX3VubG9jaygpO1xcbiBcXHR3eC1cXHUwMDNlcmVzdGFydF9xdWV1ZSA9IHJlc3RhcnRfcXVldWU7XFxuIFxcdHd4LVxcdTAwM2V0eF9idXN5ID0gdHhfYnVzeTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXFxuaW5kZXggZWQ1YWFkNzg1N2JkOS4uYzIyN2U5YWI4YTRhZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xcbkBAIC0yMTkxLDcgKzIxOTEsNyBAQCBzdGF0aWMgaW50IHd4X2FsbG9jX3FfdmVjdG9yKHN0cnVjdCB3eCAqd3gsXFxuIFxcdFxcdHJpbmctXFx1MDAzZXF1ZXVlX2luZGV4ID0gdHhyX2lkeDtcXG4gXFxuIFxcdFxcdC8qIGFzc2lnbiByaW5nIHRvIHd4ICovXFxuLVxcdFxcdHd4LVxcdTAwM2V0eF9yaW5nW3R4cl9pZHhdID0gcmluZztcXG4rXFx0XFx0V1JJVEVfT05DRSh3eC1cXHUwMDNldHhfcmluZ1t0eHJfaWR4XSwgcmluZyk7XFxuIFxcbiBcXHRcXHQvKiB1cGRhdGUgY291bnQgYW5kIGluZGV4ICovXFxuIFxcdFxcdHR4cl9jb3VudC0tO1xcbkBAIC0yMjE3LDcgKzIyMTcsNyBAQCBzdGF0aWMgaW50IHd4X2FsbG9jX3FfdmVjdG9yKHN0cnVjdCB3eCAqd3gsXFxuIFxcdFxcdHJpbmctXFx1MDAzZXF1ZXVlX2luZGV4ID0gcnhyX2lkeDtcXG4gXFxuIFxcdFxcdC8qIGFzc2lnbiByaW5nIHRvIHd4ICovXFxuLVxcdFxcdHd4LVxcdTAwM2VyeF9yaW5nW3J4cl9pZHhdID0gcmluZztcXG4rXFx0XFx0V1JJVEVfT05DRSh3eC1cXHUwMDNlcnhfcmluZ1tyeHJfaWR4XSwgcmluZyk7XFxuIFxcbiBcXHRcXHQvKiB1cGRhdGUgY291bnQgYW5kIGluZGV4ICovXFxuIFxcdFxcdHJ4cl9jb3VudC0tO1xcbkBAIC0yMjQ1LDEwICsyMjQ1LDEwIEBAIHN0YXRpYyB2b2lkIHd4X2ZyZWVfcV92ZWN0b3Ioc3RydWN0IHd4ICp3eCwgaW50IHZfaWR4KVxcbiBcXHRzdHJ1Y3Qgd3hfcmluZyAqcmluZztcXG4gXFxuIFxcdHd4X2Zvcl9lYWNoX3JpbmcocmluZywgcV92ZWN0b3ItXFx1MDAzZXR4KVxcbi1cXHRcXHR3eC1cXHUwMDNldHhfcmluZ1tyaW5nLVxcdTAwM2VxdWV1ZV9pbmRleF0gPSBOVUxMO1xcbitcXHRcXHRXUklURV9PTkNFKHd4LVxcdTAwM2V0eF9yaW5nW3JpbmctXFx1MDAzZXF1ZXVlX2luZGV4XSwgTlVMTCk7XFxuIFxcbiBcXHR3eF9mb3JfZWFjaF9yaW5nKHJpbmcsIHFfdmVjdG9yLVxcdTAwM2VyeClcXG4tXFx0XFx0d3gtXFx1MDAzZXJ4X3JpbmdbcmluZy1cXHUwMDNlcXVldWVfaW5kZXhdID0gTlVMTDtcXG4rXFx0XFx0V1JJVEVfT05DRSh3eC1cXHUwMDNlcnhfcmluZ1tyaW5nLVxcdTAwM2VxdWV1ZV9pbmRleF0sIE5VTEwpO1xcbiBcXG4gXFx0d3gtXFx1MDAzZXFfdmVjdG9yW3ZfaWR4XSA9IE5VTEw7XFxuIFxcdG5ldGlmX25hcGlfZGVsKFxcdTAwMjZxX3ZlY3Rvci1cXHUwMDNlbmFwaSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjIzOjQyLjg0NTQxNzcwM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE0MDQ4NzkxOTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biBFdGhlcm5ldCBkcml2ZXIgKGxpYnd4KSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4NTY0ZDdkOWUzZGUxNDQ4MWIxOTZhM2FiM2NjMzEwNjBhNWZjZmRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTE6MjM6NDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmNcbmluZGV4IDEyMmM0OTUyZDIwM2YuLjA5NmZlN2YzZDg0ZjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuY1xuQEAgLTI4OTMsMTAgKzI4OTMsMTMgQEAgdm9pZCB3eF91cGRhdGVfc3RhdHMoc3RydWN0IHd4ICp3eClcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZ3eC1cdTAwM2Vod19zdGF0c19sb2NrKTtcbiBcbitcdHJjdV9yZWFkX2xvY2soKTtcbiBcdC8qIGdhdGhlciBzb21lIHN0YXRzIHRvIHRoZSB3eCBzdHJ1Y3QgdGhhdCBhcmUgcGVyIHF1ZXVlICovXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fcnhfcXVldWVzOyBpKyspIHtcbi1cdFx0c3RydWN0IHd4X3JpbmcgKnJ4X3JpbmcgPSB3eC1cdTAwM2VyeF9yaW5nW2ldO1xuK1x0XHRzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZyA9IFJFQURfT05DRSh3eC1cdTAwM2VyeF9yaW5nW2ldKTtcbiBcbitcdFx0aWYgKCFyeF9yaW5nKVxuK1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRub25fZW9wX2Rlc2NzICs9IHJ4X3JpbmctXHUwMDNlcnhfc3RhdHMubm9uX2VvcF9kZXNjcztcbiBcdFx0YWxsb2NfcnhfYnVmZl9mYWlsZWQgKz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5hbGxvY19yeF9idWZmX2ZhaWxlZDtcbiBcdFx0aHdfY3N1bV9yeF9nb29kICs9IHJ4X3JpbmctXHUwMDNlcnhfc3RhdHMuY3N1bV9nb29kX2NudDtcbkBAIC0yOTEyLDE5ICsyOTE1LDI4IEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXG4gXHRcdHU2NCByc2NfZmx1c2ggPSAwO1xuIFxuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fcnhfcXVldWVzOyBpKyspIHtcbi1cdFx0XHRyc2NfY291bnQgKz0gd3gtXHUwMDNlcnhfcmluZ1tpXS1cdTAwM2VyeF9zdGF0cy5yc2NfY291bnQ7XG4tXHRcdFx0cnNjX2ZsdXNoICs9IHd4LVx1MDAzZXJ4X3JpbmdbaV0tXHUwMDNlcnhfc3RhdHMucnNjX2ZsdXNoO1xuK1x0XHRcdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gUkVBRF9PTkNFKHd4LVx1MDAzZXJ4X3JpbmdbaV0pO1xuK1xuK1x0XHRcdGlmICghcnhfcmluZylcbitcdFx0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRcdHJzY19jb3VudCArPSByeF9yaW5nLVx1MDAzZXJ4X3N0YXRzLnJzY19jb3VudDtcbitcdFx0XHRyc2NfZmx1c2ggKz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5yc2NfZmx1c2g7XG4gXHRcdH1cbiBcdFx0d3gtXHUwMDNlcnNjX2NvdW50ID0gcnNjX2NvdW50O1xuIFx0XHR3eC1cdTAwM2Vyc2NfZmx1c2ggPSByc2NfZmx1c2g7XG4gXHR9XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fdHhfcXVldWVzOyBpKyspIHtcbi1cdFx0c3RydWN0IHd4X3JpbmcgKnR4X3JpbmcgPSB3eC1cdTAwM2V0eF9yaW5nW2ldO1xuK1x0XHRzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZyA9IFJFQURfT05DRSh3eC1cdTAwM2V0eF9yaW5nW2ldKTtcbitcbitcdFx0aWYgKCF0eF9yaW5nKVxuK1x0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRyZXN0YXJ0X3F1ZXVlICs9IHR4X3JpbmctXHUwMDNldHhfc3RhdHMucmVzdGFydF9xdWV1ZTtcbiBcdFx0dHhfYnVzeSArPSB0eF9yaW5nLVx1MDAzZXR4X3N0YXRzLnR4X2J1c3k7XG4gXHR9XG4rXHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdHd4LVx1MDAzZXJlc3RhcnRfcXVldWUgPSByZXN0YXJ0X3F1ZXVlO1xuIFx0d3gtXHUwMDNldHhfYnVzeSA9IHR4X2J1c3k7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcbmluZGV4IGVkNWFhZDc4NTdiZDkuLmMyMjdlOWFiOGE0YWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXG5AQCAtMjE5MSw3ICsyMTkxLDcgQEAgc3RhdGljIGludCB3eF9hbGxvY19xX3ZlY3RvcihzdHJ1Y3Qgd3ggKnd4LFxuIFx0XHRyaW5nLVx1MDAzZXF1ZXVlX2luZGV4ID0gdHhyX2lkeDtcbiBcbiBcdFx0LyogYXNzaWduIHJpbmcgdG8gd3ggKi9cbi1cdFx0d3gtXHUwMDNldHhfcmluZ1t0eHJfaWR4XSA9IHJpbmc7XG4rXHRcdFdSSVRFX09OQ0Uod3gtXHUwMDNldHhfcmluZ1t0eHJfaWR4XSwgcmluZyk7XG4gXG4gXHRcdC8qIHVwZGF0ZSBjb3VudCBhbmQgaW5kZXggKi9cbiBcdFx0dHhyX2NvdW50LS07XG5AQCAtMjIxNyw3ICsyMjE3LDcgQEAgc3RhdGljIGludCB3eF9hbGxvY19xX3ZlY3RvcihzdHJ1Y3Qgd3ggKnd4LFxuIFx0XHRyaW5nLVx1MDAzZXF1ZXVlX2luZGV4ID0gcnhyX2lkeDtcbiBcbiBcdFx0LyogYXNzaWduIHJpbmcgdG8gd3ggKi9cbi1cdFx0d3gtXHUwMDNlcnhfcmluZ1tyeHJfaWR4XSA9IHJpbmc7XG4rXHRcdFdSSVRFX09OQ0Uod3gtXHUwMDNlcnhfcmluZ1tyeHJfaWR4XSwgcmluZyk7XG4gXG4gXHRcdC8qIHVwZGF0ZSBjb3VudCBhbmQgaW5kZXggKi9cbiBcdFx0cnhyX2NvdW50LS07XG5AQCAtMjI0NSwxMCArMjI0NSwxMCBAQCBzdGF0aWMgdm9pZCB3eF9mcmVlX3FfdmVjdG9yKHN0cnVjdCB3eCAqd3gsIGludCB2X2lkeClcbiBcdHN0cnVjdCB3eF9yaW5nICpyaW5nO1xuIFxuIFx0d3hfZm9yX2VhY2hfcmluZyhyaW5nLCBxX3ZlY3Rvci1cdTAwM2V0eClcbi1cdFx0d3gtXHUwMDNldHhfcmluZ1tyaW5nLVx1MDAzZXF1ZXVlX2luZGV4XSA9IE5VTEw7XG4rXHRcdFdSSVRFX09OQ0Uod3gtXHUwMDNldHhfcmluZ1tyaW5nLVx1MDAzZXF1ZXVlX2luZGV4XSwgTlVMTCk7XG4gXG4gXHR3eF9mb3JfZWFjaF9yaW5nKHJpbmcsIHFfdmVjdG9yLVx1MDAzZXJ4KVxuLVx0XHR3eC1cdTAwM2VyeF9yaW5nW3JpbmctXHUwMDNlcXVldWVfaW5kZXhdID0gTlVMTDtcbitcdFx0V1JJVEVfT05DRSh3eC1cdTAwM2VyeF9yaW5nW3JpbmctXHUwMDNlcXVldWVfaW5kZXhdLCBOVUxMKTtcbiBcbiBcdHd4LVx1MDAzZXFfdmVjdG9yW3ZfaWR4XSA9IE5VTEw7XG4gXHRuZXRpZl9uYXBpX2RlbChcdTAwMjZxX3ZlY3Rvci1cdTAwM2VuYXBpKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjIzOjQyLjg0NTQxOTI5M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNTEwOTAyMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgV2FuZ3h1biBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0b3VjaGluZyB0aGUgV2FuZ3h1biBFdGhlcm5ldCBkcml2ZXIuIFNwZWNpZmljYWxseSwgaXQncyBtb2RpZnlpbmcgYHd4X2h3LmNgIGFuZCBgd3hfbGliLmNgIHdpdGhpbiB0aGUgYGxpYnd4YCBkaXJlY3RvcnksIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGUgY29yZSBjaGFuZ2Ugc2VlbXMgdG8gcmV2b2x2ZSBhcm91bmQgY29uY3VycmVuY3kgYW5kIG1lbW9yeSBhY2Nlc3MgaW4gdGhlIGB3eF91cGRhdGVfc3RhdHNgIGZ1bmN0aW9uLiBJIHNlZSB0aGV5J3ZlIGFkZGVkIGByY3VfcmVhZF9sb2NrKClgIGFuZCBgcmN1X3JlYWRfdW5sb2NrKClgIGFyb3VuZCB0aGUgbG9vcHMgdGhhdCBpdGVyYXRlIHRocm91Z2ggYHd4LVx1MDAzZXJ4X3JpbmdgIGFuZCBgd3gtXHUwMDNldHhfcmluZ2AuIFJpZ2h0LCB0aGF0J3MgaW1tZWRpYXRlbHkgc3VnZ2VzdGluZyB0aGVyZSdzIGEgcG90ZW50aWFsIGZvciByZWFkLXdyaXRlIGNvbnRlbnRpb24gb24gdGhvc2UgcmluZ3MsIGFuZCBSQ1UgaXMgYSBzb2xpZCBhcHByb2FjaCB0byBoYW5kbGUgdGhhdCBpbiB0aGUga2VybmVsLlxuXG5UaGV5J3JlIGFsc28gZW1wbG95aW5nIGBSRUFEX09OQ0VgIGFuZCBgV1JJVEVfT05DRWAgZm9yIGFjY2Vzc2luZyBhbmQgbW9kaWZ5aW5nIHRoZSByaW5nIGVudHJpZXMuIFNtYXJ0LCB0aGlzIGlzIGNyaXRpY2FsIHRvIGVuc3VyZSBwcm9wZXIgbWVtb3J5IG9yZGVyaW5nIGFuZCBwcmV2ZW50IGFueSBjb21waWxlciBvcHRpbWl6YXRpb25zIGZyb20gY2F1c2luZyBpc3N1ZXMgd2l0aCBzaGFyZWQgbWVtb3J5LiBJJ20gYXNzdW1pbmcgdGhlc2UgcmluZ3MgY29udGFpbiBkZXNjcmlwdG9ycyBvciBwYWNrZXQgcG9pbnRlcnMsIGFuZCB3aXRob3V0IHRoZSBwcm9wZXIgbWVtb3J5IGJhcnJpZXJzLCB3ZSBjb3VsZCBzZWUgc3RhbGUgZGF0YSBvciBldmVuIGNvcnJ1cHRpb24uIEdvb2QsIHRoZXkndmUgY2xlYXJseSBjb25zaWRlcmVkIHRoZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLlxuXG5GaW5hbGx5LCB0aGUgYWRkZWQgY2hlY2tzIGZvciBgIXJ4X3JpbmdgIGFuZCBgIXR4X3JpbmdgIGFyZSBhIHNpbXBsZSBidXQgZWZmZWN0aXZlIGRlZmVuc2UgYWdhaW5zdCBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcy4gQWx3YXlzIGEgZ29vZCBwcmFjdGljZSwgZXNwZWNpYWxseSB3aXRoaW4gYSBrZXJuZWwgZHJpdmVyLlxuXG5Ob3csIGNvbnNpZGVyaW5nIHRoaXMgaXMgYSBkcml2ZXIgZm9yIGEgV2FuZ3h1biBFdGhlcm5ldCBjb250cm9sbGVyLCBteSBuZXh0IHRob3VnaHQgaXMgYWJvdXQgdGhlIGhhcmR3YXJlIGl0c2VsZi4gV2FuZ3h1biBpcyBhIFBDSWUgRXRoZXJuZXQgY29udHJvbGxlciB2ZW5kb3IsIHNvIEknbSBjdXJpb3VzIGlmIHRoaXMgZHJpdmVyIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgcGh5c2ljYWwgaGFyZHdhcmUgb3IgaWYgaXQncyByZWxhdGVkIHRvIHNvbWUga2luZCBvZiBlbXVsYXRpb24gd2l0aGluIFFFTVUuIExldCBtZSBxdWlja2x5IGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgZHJpdmVyIGRpcmVjdG9yeSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBjbHVlcyBhYm91dCB0aGUgaW50ZW5kZWQgdGFyZ2V0LiBVbmRlcnN0YW5kaW5nIHRoZSBoYXJkd2FyZSBjb250ZXh0IGlzIGNydWNpYWwgYmVmb3JlIEkgZGl2ZSBhbnkgZGVlcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTE5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MjM6NDguODk2NTExNzIxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNDE5Nzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndhbmd4dW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz0yOD1jb25maWcgTkdCRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTM3LVxcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjM4OlxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3dhbmd4dW4vbmdiZS5yc3RcXHUwMDNlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0zOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz00Mz1jb25maWcgVFhHQkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy02MS1cXHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzo2MjpcXHQgIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL3R4Z2JlLnJzdFxcdTAwM2UuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTYzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTY3PWNvbmZpZyBUWEdCRVZGXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNzktXFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6ODA6XFx0ICBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmLnJzdFxcdTAwM2UuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTgxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTg1PWNvbmZpZyBOR0JFVkZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy05NS1cXHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzo5NjpcXHQgIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL25nYmV2Zi5yc3RcXHUwMDNlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy05Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MjM6NDguOTM5OTM3MTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzg0MjE0MDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBEaWFnbm9zdGljIFN0ZXA6IFBoeXNpY2FsIENvbXBvbmVudCBWZXJpZmljYXRpb24qKlxuXG5BbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIGludG8gdGhlIGRlZXAgZW5kIG9mIGRyaXZlciBjb25mbGljdHMsIEJJT1Mgc2V0dGluZ3MsIG9yIHN5c3RlbSByZXNvdXJjZSBhbGxvY2F0aW9uLCBteSBmaXJzdCBpbnN0aW5jdCBpcyBhbHdheXMgdG8gZXN0YWJsaXNoIHRoZSAqcGh5c2ljYWwqIHByZXNlbmNlIGFuZCBjb25uZWN0aXZpdHkuIEkgbmVlZCB0byB0cmVhdCB0aGlzIGFzIHRoZSBmb3VuZGF0aW9uLiBJcyBpdCBhY3R1YWxseSB0aGVyZT8gSXMgaXQgYSBkaXNjcmV0ZSBQQ0llIGNhcmQgd2UncmUgdGFsa2luZyBhYm91dCwgcGh5c2ljYWxseSBpbnN0YWxsZWQgaW4gYSBzbG90PyBUaGlzIHNlZW1pbmdseSBiYXNpYyBzdGVwIHByZXZlbnRzIHdhc3RpbmcgdGltZSBjaGFzaW5nIHBoYW50b20gaXNzdWVzIOKAkyBlc3BlY2lhbGx5IHdpdGggbW9kZXJuIG1vdGhlcmJvYXJkcyB3aGVyZSBpbnRlZ3JhdGVkIGNvbXBvbmVudHMgYW5kIHZpcnR1YWwgZGV2aWNlcyBjYW4gc29tZXRpbWVzIGNyZWF0ZSB0aGUgaWxsdXNpb24gb2Ygc29tZXRoaW5nIGJlaW5nIGluc3RhbGxlZCB3aGVuIGl0IGlzbid0LCBvciB2aWNlLXZlcnNhLiBTbywgc3RlcCBvbmUsIGJlZm9yZSBJIGV2ZW4gY29uc2lkZXIgc29mdHdhcmUsIEknbSB2ZXJpZnlpbmcgdGhlIGhhcmR3YXJlLiBDb25maXJtaW5nIHRoZSBwaHlzaWNhbCBQQ0llIGNhcmQgaXMgcHJvcGVybHkgc2VhdGVkLCB0aGUgcmV0YWluaW5nIGNsaXAgaXMgZW5nYWdlZCwgYW5kIHRoZSBwb3dlciBjYWJsZXMgKGlmIGFwcGxpY2FibGUpIGFyZSBjb25uZWN0ZWQgc2VjdXJlbHkuIFRoYXQncyB3aGVyZSBJIHN0YXJ0LiBMZXQncyBtYWtlIHN1cmUgd2UgaGF2ZSBhIHRhbmdpYmxlIGRldmljZSBiZWZvcmUgd2UgcHJvY2VlZCB3aXRoIHRoZSByZXN0IG9mIG91ciBkZWJ1Z2dpbmcgc3RyYXRlZ3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNjMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMToyMzo1Mi4zMjQxNTM4MzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFdhbmd4dW4gbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTkVUX1ZFTkRPUl9XQU5HWFVOXFxuICAgNzpcXHRcXHRib29sIFxcXCJXYW5neHVuIGRldmljZXNcXFwiXFxuICAgODpcXHRcXHRkZWZhdWx0IHlcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBmcm9tIFdhbmd4dW4oUiksIHNheSBZLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRcXHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24ndCBkaXJlY3RseSBhZmZlY3QgdGhlXFxuICAxMzpcXHRcXHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGxcXG4gIDE0OlxcdFxcdCAgdGhlIHF1ZXN0aW9ucyBhYm91dCBXYW5neHVuKFIpIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsXFxuICAxNTpcXHRcXHQgIGJlIGFza2VkIGZvciB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXFxuICAxNjpcXHRcXG4gIDE3OlxcdGlmIE5FVF9WRU5ET1JfV0FOR1hVTlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTElCV1hcXG4gIDIwOlxcdFxcdHRyaXN0YXRlXFxuICAyMTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAyMjpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAyMzpcXHRcXHRzZWxlY3QgRElNTElCXFxuICAyNDpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMjU6XFx0XFx0aGVscFxcbiAgMjY6XFx0XFx0Q29tbW9uIGxpYnJhcnkgZm9yIFdhbmd4dW4oUikgRXRoZXJuZXQgZHJpdmVycy5cXG4gIDI3OlxcdFxcbiAgMjg6XFx0Y29uZmlnIE5HQkVcXG4gIDI5OlxcdFxcdHRyaXN0YXRlIFxcXCJXYW5neHVuKFIpIEdiRSBQQ0kgRXhwcmVzcyBhZGFwdGVycyBzdXBwb3J0XFxcIlxcbiAgMzA6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDMxOlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDMyOlxcdFxcdHNlbGVjdCBMSUJXWFxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBXYW5neHVuKFIpIEdiRSBQQ0kgRXhwcmVzcyBmYW1pbHkgb2ZcXG4gIDM1OlxcdFxcdCAgYWRhcHRlcnMuXFxuICAzNjpcXHRcXG4gIDM3OlxcdFxcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXFxuICAzODpcXHRcXHQgIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL25nYmUucnN0XFx1MDAzZS5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXFxuICA0MTpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIG5nYmUuXFxuICA0MjpcXHRcXG4gIDQzOlxcdGNvbmZpZyBUWEdCRVxcbiAgNDQ6XFx0XFx0dHJpc3RhdGUgXFxcIldhbmd4dW4oUikgMTAvMjUvNDBHYkUgUENJIEV4cHJlc3MgYWRhcHRlcnMgc3VwcG9ydFxcXCJcXG4gIDQ1OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA0NjpcXHRcXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG4gIDQ3OlxcdFxcdGRlcGVuZHMgb24gSTJDX0RFU0lHTldBUkVfUExBVEZPUk1cXG4gIDQ4OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDQ5OlxcdFxcdHNlbGVjdCBNQVJWRUxMXzEwR19QSFlcXG4gIDUwOlxcdFxcdHNlbGVjdCBSRUdNQVBcXG4gIDUxOlxcdFxcdHNlbGVjdCBIV01PTiBpZiBUWEdCRT15XFxuICA1MjpcXHRcXHRzZWxlY3QgU0ZQXFxuICA1MzpcXHRcXHRzZWxlY3QgR1BJT0xJQlxcbiAgNTQ6XFx0XFx0c2VsZWN0IEdQSU9MSUJfSVJRQ0hJUFxcbiAgNTU6XFx0XFx0c2VsZWN0IFBDU19YUENTXFxuICA1NjpcXHRcXHRzZWxlY3QgTElCV1hcXG4gIDU3OlxcdFxcdGhlbHBcXG4gIDU4OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgV2FuZ3h1bihSKSAxMC8yNS80MEdiRSBQQ0kgRXhwcmVzcyBmYW1pbHkgb2ZcXG4gIDU5OlxcdFxcdCAgYWRhcHRlcnMuXFxuICA2MDpcXHRcXG4gIDYxOlxcdFxcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXFxuICA2MjpcXHRcXHQgIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC93YW5neHVuL3R4Z2JlLnJzdFxcdTAwM2UuXFxuICA2MzpcXHRcXG4gIDY0OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbiAgNjU6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCB0eGdiZS5cXG4gIDY2OlxcdFxcbiAgNjc6XFx0Y29uZmlnIFRYR0JFVkZcXG4gIDY4OlxcdFxcdHRyaXN0YXRlIFxcXCJXYW5neHVuKFIpIDEwLzI1LzQwRyBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuICA2OTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgNzA6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lfTVNJXFxuICA3MTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICA3MjpcXHRcXHRzZWxlY3QgTElCV1hcXG4gIDczOlxcdFxcdGhlbHBcXG4gIDc0OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdmlydHVhbCBmdW5jdGlvbnMgZm9yIFNQMTAwMEEsIFdYMTgyMEFMLFxcbiAgNzU6XFx0XFx0ICBXWDVYWFgsIFdYNVhYWEFMLlxcbiAgNzY6XFx0XFxuICA3NzpcXHRcXHQgIFRoaXMgZHJpdmVyIHdhcyBmb3JtZXJseSBuYW1lZCB0eGdiZXZmLlxcbiAgNzg6XFx0XFxuICA3OTpcXHRcXHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxcbiAgODA6XFx0XFx0ICBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmLnJzdFxcdTAwM2UuXFxuICA4MTpcXHRcXG4gIDgyOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gTVNJLVggaW50ZXJydXB0XFxuICA4MzpcXHRcXHQgIHN1cHBvcnQgaXMgcmVxdWlyZWQgZm9yIHRoaXMgZHJpdmVyIHRvIHdvcmsgY29ycmVjdGx5LlxcbiAgODQ6XFx0XFxuICA4NTpcXHRjb25maWcgTkdCRVZGXFxuICA4NjpcXHRcXHR0cmlzdGF0ZSBcXFwiV2FuZ3h1bihSKSBHYkUgVmlydHVhbCBGdW5jdGlvbiBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbiAgODc6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lfTVNJXFxuICA4ODpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICA4OTpcXHRcXHRzZWxlY3QgTElCV1hcXG4gIDkwOlxcdFxcdGhlbHBcXG4gIDkxOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdmlydHVhbCBmdW5jdGlvbnMgZm9yIFdYMTg2MCwgV1gxODYwQUwuXFxuICA5MjpcXHRcXG4gIDkzOlxcdFxcdCAgVGhpcyBkcml2ZXIgd2FzIGZvcm1lcmx5IG5hbWVkIG5nYmV2Zi5cXG4gIDk0OlxcdFxcbiAgOTU6XFx0XFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG4gIDk2OlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmLnJzdFxcdTAwM2UuXFxuICA5NzpcXHRcXG4gIDk4OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gTVNJLVggaW50ZXJydXB0XFxuICA5OTpcXHRcXHQgIHN1cHBvcnQgaXMgcmVxdWlyZWQgZm9yIHRoaXMgZHJpdmVyIHRvIHdvcmsgY29ycmVjdGx5LlxcbiAxMDA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjIzOjUyLjMyNDIzMTA0OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1Njk5NDkwMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgV29ydGhGdXp6aW5nIEV2YWx1YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgZHJpdmVyIGluIHF1ZXN0aW9uIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgV2FuZ3h1biBHYkUgYW5kIDEwLzI1LzQwR2JFIFBDSWUgYWRhcHRlcnMuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSByZWQgbGlnaHQgaW4gbXkgbWluZC4gVGhpcyBpc24ndCBzb21lIGdlbmVyaWMgdmlydHVhbCBkZXZpY2U7IHRoaXMgaXMgcGh5c2ljYWwsICphY3R1YWwqIFBDSWUgaGFyZHdhcmUuIEl0J3Mgbm90IHRoZSBzb3J0IG9mIHRoaW5nIHlvdSdkIGZpbmQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCB3aGljaCBpbW1lZGlhdGVseSBtZWFucyBpdCdzIGFsc28gbm90IGdvaW5nIHRvIGJlIGFjY2Vzc2libGUgd2l0aGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRS4gVGhlIGNvbnRleHQgaGVyZSBpcyBmdXp6aW5nLCB3aGljaCBtZWFucyB0aGUgaW5zdHJ1Y3Rpb24gaXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIHdoZW4gdGhlIHBhdGNoIHRvdWNoZXMgZHJpdmVycyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIFFFTVUuIEdpdmVuIHdoYXQgSSBrbm93IGFib3V0IHRoaXMgZHJpdmVyIGFuZCB0aGUgUENJZSBhZGFwdGVycyBpdCdzIHRhcmdldGluZywgYW5kIHRoZSBleHBsaWNpdCBpbnN0cnVjdGlvbiwgdGhlIGRlY2lzaW9uIGlzIGNsZWFyLiBJJ20gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTM2LCJPdXRwdXRUb2tlbnMiOjc5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MjM6NTYuODk0MTgyNDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIEV0aGVybmV0IGRyaXZlciAobGlid3gpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIEV0aGVybmV0IGRyaXZlciAobGlid3gpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjIzOjU2Ljg5NDIxMTU4WiIsIlNlcSI6OSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowg7kjp[1] Phase: Running StartedAt: 2026-08-13 11:24:07 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg7kjp[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-13 11:24:07 +0000 UTC FinishedAt: 2026-08-13 11:24:12 +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,}