Name: series-workflowm7vk2 Phase: Failed StartedAt: 2026-07-16 22:23:23 +0000 UTC FinishedAt: 2026-07-16 22:48:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7vk2[0] Phase: Succeeded StartedAt: 2026-07-16 22:23:23 +0000 UTC FinishedAt: 2026-07-16 22:47:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7vk2[0].run-triage Phase: Succeeded StartedAt: 2026-07-16 22:23:23 +0000 UTC FinishedAt: 2026-07-16 22:47:21 +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+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBybnBnYmUgZHJpdmVyLCB3aGljaCBpcyBhIHBoeXNpY2FsIFBDSSBuZXR3b3JrIGRyaXZlciBmb3IgTXVjc2UgaGFyZHdhcmUuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOWE3MGIwOGUyMjMyOWY3ZDMzNjQ0Y2Q1MmI2NjdiYjNmNDYxMjMyOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDE2IDIyOjQ1OjE0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmNcbmluZGV4IDcwYTJiMDA4MmJhODYxLi44MmEzZmJmYjNjMGFiZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uY1xuQEAgLTI0OSw4ICYjNDM7MjQ5LDYgQEAgc3RhdGljIHZvaWQgcm5wZ2JlX3JtX2FkYXB0ZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xuIFx0aW50IGVycjtcbiBcbi1cdGlmICghbXVjc2UpXG4tXHRcdHJldHVybjtcbiBcdG5ldGRldiA9IG11Y3NlLVx1MDAzZW5ldGRldjtcbiBcdHVucmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7XG4gXHRlcnIgPSBybnBnYmVfc2VuZF9ub3RpZnkoaHcsIGZhbHNlLCBtdWNzZV9md19wb3dlcnVwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMjo0NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcm5wZ2JlIGRyaXZlciwgd2hpY2ggaXMgYSBwaHlzaWNhbCBQQ0kgbmV0d29yayBkcml2ZXIgZm9yIE11Y3NlIGhhcmR3YXJlLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOWE3MGIwOGUyMjMyOWY3ZDMzNjQ0Y2Q1MmI2NjdiYjNmNDYxMjMyOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDE2IDIyOjQ1OjE0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYwppbmRleCA3MGEyYjAwODJiYTg2MS4uODJhM2ZiZmIzYzBhYmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jCkBAIC0yNDksOCAmIzQzOzI0OSw2IEBAIHN0YXRpYyB2b2lkIHJucGdiZV9ybV9hZGFwdGVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogCXN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7CiAJaW50IGVycjsKIAotCWlmICghbXVjc2UpCi0JCXJldHVybjsKIAluZXRkZXYgPSBtdWNzZS0mZ3Q7bmV0ZGV2OwogCXVucmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7CiAJZXJyID0gcm5wZ2JlX3NlbmRfbm90aWZ5KGh3LCBmYWxzZSwgbXVjc2VfZndfcG93ZXJ1cCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NzYKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgcmVtb3ZpbmcgYSBudWxsIGNoZWNrIGZvciBgbXVjc2VgIHdpdGhpbiB0aGUgYHJucGdiZV9ybV9hZGFwdGVyYCBmdW5jdGlvbiBpbiB0aGUgYHJucGdiZV9tYWluLmNgIGZpbGUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBtdWNzZWAgZXRoZXJuZXQgZHJpdmVyLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzLCAmIzM0O0htbSwgaW50ZXJlc3RpbmcuIFJlbW92aW5nIGEgbnVsbCBjaGVjayBpcyB1c3VhbGx5IGEgc2lnbiB0aGF0IGVpdGhlciB0aGUgY2hlY2sgd2FzIHVubmVjZXNzYXJ5IG9yIHRoYXQgdGhlIHZhcmlhYmxlIGlzIG5vdyBndWFyYW50ZWVkIHRvIGJlIHZhbGlkIGF0IHRoYXQgcG9pbnQuJiMzNDsKCk15IG5leHQgdGhvdWdodCBpcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHBvdGVudGlhbCBpbXBhY3QsIGVzcGVjaWFsbHkgc2luY2UgaXQmIzM5O3MgYSBkcml2ZXIuIElzIHRoaXMgZHJpdmVyIGV2ZW4gdXNlZCBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQ/IFRoYXQmIzM5O3MgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgZHJpdmVycy4gSXQmIzM5O3MgbGlzdGVkIGFzIGEgUENJIGRyaXZlci4gUmlnaHQsIGBybnBnYmVfcm1fYWRhcHRlcmAgaXMgYSBQQ0kgcmVtb3ZlIGZ1bmN0aW9uLgoKU28sIHRoZSBjcml0aWNhbCBwYXRoIGlzIGBybnBnYmVfbWFpbi5jYC4gVGhpcyBpcyB3aGVyZSBJJiMzOTtsbCBkaWcgZGVlcGVyIGFuZCBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBoYXBwZW5pbmcgYXJvdW5kIHRoYXQgcmVtb3ZlZCBudWxsIGNoZWNrLiBUaW1lIHRvIGdldCBpbnRvIHRoZSBjb2RlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JucGdiZV9ybV9hZGFwdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM9MTk3PXN0YXRpYyBpbnQgcm5wZ2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMjM5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MjQwOiAqIHJucGdiZV9ybV9hZGFwdGVyIC0gUmVtb3ZlIG5ldGRldiBmb3IgdGhpcyBtdWNzZSBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0MS0gKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0Mi0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MjQzOiAqIHJucGdiZV9ybV9hZGFwdGVyIHJlbW92ZSBhIG5ldGRldiBmb3IgdGhpcyBtdWNzZSBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0NC0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYzoyNDU6c3RhdGljIHZvaWQgcm5wZ2JlX3JtX2FkYXB0ZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNDYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jPTI2OT1zdGF0aWMgdm9pZCBybnBnYmVfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMjcwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jOjI3MTpcdHJucGdiZV9ybV9hZGFwdGVyKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMjcyLVx0cGNpX3JlbGVhc2VfbWVtX3JlZ2lvbnMocGRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjI6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc1OQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgYSBQQ0kgRGV2aWNlIERyaXZlcioqCgpBbHJpZ2h0LCBhICYjMzQ7bXVjc2Ugcm5wZ2JlJiMzNDsgUENJIGRldmljZSBkcml2ZXIsIGVoPyBIbW0sIHRoYXQgbmFtZSByaW5ncyBhIGJlbGwuLi4gYnV0IGlzIHRoaXMgYSByZWFsIHBpZWNlIG9mIGhhcmR3YXJlLCBvciBzb21ldGhpbmcgbW9yZSBvYnNjdXJlPyBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB2ZXJpZnkgaXRzIGV4aXN0ZW5jZSBhbmQgcHVycG9zZS4gVGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgYWx3YXlzIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiAoS2NvbmZpZykgZmlsZXMuIFRoZXkmIzM5O2xsIHRlbGwgbWUgaWYgdGhpcyBkcml2ZXIgaXMgYnVpbHQtaW4sIG1vZHVsYXIsIG9yIGlmIGl0JiMzOTtzIGV2ZW4gcGFydCBvZiB0aGUgbWFpbmxpbmUga2VybmVsIGF0IGFsbC4gRnJvbSB0aGVyZSwgSSBjYW4gYmVnaW4gdG8gdW5wYWNrIGl0cyBwdXJwb3NlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJOUEdCRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5ODAKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6CgoqKkRlYnVnZ2luZyB0aGUgS2NvbmZpZyBmb3IgTXVjc2UgRXRoZXJuZXQgRHJpdmVycyoqCgpSaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2h5IHRoaXMgRXRoZXJuZXQgZHJpdmVyIGlzbiYjMzk7dCBiZWhhdmluZyBhcyBleHBlY3RlZC4gTXkgZmlyc3QgaW5zdGluY3QsIGFuZCBob25lc3RseSwgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCwgaXMgd2l0aCB0aGUgS2NvbmZpZyBmaWxlLiBJJiMzOTttIHRoaW5raW5nIHRoZSBpc3N1ZSBpcyBwcm9iYWJseSByZWxhdGVkIHRvIGEgY29uZmlndXJhdGlvbiBvcHRpb24uIEdpdmVuIHRoaXMgaXMgbGlrZWx5IGEgZHJpdmVyIGZvciBhbiBNVUNTRS1iYXNlZCBFdGhlcm5ldCBjb250cm9sbGVyLCBJJiMzOTtsbCBuZWVkIHRvIGhlYWQgc3RyYWlnaHQgaW50byB0aGUgZHJpdmVyIGRpcmVjdG9yeS4gSSYjMzk7bSBiZXR0aW5nIHRoZSBLY29uZmlnIGZpbGUgaXMgbG9jYXRlZCBzb21ld2hlcmUgdW5kZXIgYGRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL2AsIG9yIHBlcmhhcHMgc29tZXRoaW5nIHZlcnkgc2ltaWxhci4gVGhhdCYjMzk7cyB0aGUgZmlyc3Qgc3RvcCBvbiB0aGlzIGRpYWdub3N0aWMgam91cm5leS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGVuYWJsZWQsIGRpc2FibGVkLCBhbmQgd2hhdCBtaWdodCBiZSBjb25mbGljdGluZy4gVGhhdCYjMzk7cyB3aGVyZSBJIHdpbGwgZmluZCB3aGF0IEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMjo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBudWxsLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O3JucGdiZSYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjI6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIzNgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipLY29uZmlnIEZpbGUgQ2hlY2s6IE11Y3NlIEV0aGVybmV0IERyaXZlcioqCgpPa2F5LCBJIG5lZWQgdG8gdmVyaWZ5IHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBNdWNzZSBFdGhlcm5ldCBkcml2ZXIuIFRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpcyB0aGUgS2NvbmZpZyBmaWxlIHdpdGhpbiB0aGUgZHJpdmVyJiMzOTtzIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBjaGVjayBpZiB0aGUgZmlsZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZ2AgZXhpc3RzLiBUaGlzIGZpbGUgdHlwaWNhbGx5IGhvdXNlcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBkcml2ZXIsIHdoaWNoIGlzIHdoZXJlIEkmIzM5O2QgbG9vayBmb3IgaXRzIHN0YXR1cy4gSXQgd2lsbCB0ZWxsIG1lIHdoZXRoZXIgdGhlIE11Y3NlIGRyaXZlciBjb25maWd1cmF0aW9uIGhhcyBiZWVuIGluY2x1ZGVkIGFzIGEgY2hvaWNlLCBvciBpZiBJIG5lZWQgdG8gZGlnIGRlZXBlci4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoZXRoZXIgdGhlIGNvbmZpZ3VyYXRpb24gY2hvaWNlcyBhcmUgYXZhaWxhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMjo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVUNTRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NTIKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBvZiB0aGUgdGhvdWdodCBwcm9jZXNzIGRlc2NyaWJlZDoKCioqRXhhbWluaW5nIHRoZSBSTlBHQkUgS2NvbmZpZyBGaWxlKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBSZW5lc2FzIFItQ2FyIE5ldHdvcmsgUHJvY2Vzc29yIEdpZ2FiaXQgRXRoZXJuZXQgKFJOUEdCRSkgZHJpdmVyLCBwYXJ0aWN1bGFybHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBNVUNTRSBmcmFtZXdvcmsuIEkmIzM5O20gYXNzdW1pbmcgd2UmIzM5O3JlIGxvb2tpbmcgdG8gbW9kaWZ5IG9yIHVuZGVyc3RhbmQgYSBwYXJ0aWN1bGFyIHNldHRpbmcsIHBlcmhhcHMgcmVsYXRlZCB0byBhIG5ldyBmZWF0dXJlLCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIG9yIGEgc3BlY2lmaWMgcGxhdGZvcm0gYWRhcHRhdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhlIGRlcGVuZGVuY2llcywgZGVmYXVsdCB2YWx1ZXMsIGFuZCBoZWxwIHRleHRzIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdmFyaW91cyBmZWF0dXJlcyBhcmUgZW5hYmxlZCBhbmQgZGlzYWJsZWQsIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0uIEkgd2lsbCBiZSBjb25zaWRlcmluZyB3aGF0IGlzIHJlbGV2YW50IHRvIHRoZSBzeXN0ZW0mIzM5O3MgY3VycmVudCBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MTYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5IG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBNVS1DU0UgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaW1lIHRvIHRha2UgYSBsb29rIGF0IHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGlzIGBtdWNzZWAgRXRoZXJuZXQgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLCBzbyBJJiMzOTttIGdvaW5nIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2U6IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnYC4gVGhpcyBmaWxlJiMzOTtzIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyIGZvciBob3cgdGhpcyBkcml2ZXIgaW50ZWdyYXRlcyB3aXRoaW4gdGhlIGJyb2FkZXIga2VybmVsIGNvbmZpZ3VyYXRpb24gc3lzdGVtLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgdmFyaW91cyBmZWF0dXJlcyBhbmQgZnVuY3Rpb25hbGl0aWVzIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyIGFuZCBob3cgdGhleSB0aWUgaW50byB0aGUgb3ZlcmFsbCBidWlsZCBwcm9jZXNzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogdGhlIG9wdGlvbnMgdGhhdCBjYW4gYmUgc2V0LCBhbnkgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIGFuZCBvdGhlciBkcml2ZXIgZGVwZW5kZW5jaWVzIHRoYXQgaXQgbWlnaHQgaGF2ZSwgYW5kIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBwcm9jZXNzb3Igb3IgZGV2aWNlIGZhbWlseSBkZXBlbmRlbmNpZXMuIFRoaXMgZmlsZSB3aWxsIHJlYWxseSBzZXQgdGhlIHN0YWdlIGZvciBob3cgdGhpcyBzcGVjaWZpYyBkcml2ZXIgYmVoYXZlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnICYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZzo2OmNvbmZpZyBORVRfVkVORE9SX01VQ1NFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnLTctXHRib29sIFwmIzM0O011Y3NlIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnPTE3PWlmIE5FVF9WRU5ET1JfTVVDU0VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWctMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnOjE5OmNvbmZpZyBNR0JFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7TXVjc2UoUikgMUdiRSBQQ0kgRXhwcmVzcyBhZGFwdGVycyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNDAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIEZpbGUqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgaW50byB0aGUgZGV0YWlscy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBjb25maWd1cmVkIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBNVS1DU0UgRXRoZXJuZXQgZHJpdmVyIGFyZSBkZWZpbmVkLCByaWdodD8gSSYjMzk7bSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHdoYXQgSSYjMzk7bGwgYmUgbG9va2luZyBmb3I6IHRoZSBjcml0aWNhbCBkZXBlbmRlbmNpZXMsIHRoZSBjb25maWd1cmFibGUgZmVhdHVyZXMsIGFuZCBob3cgZXZlcnl0aGluZyBpcyBzdHJ1Y3R1cmVkLiBUaGlzIEtjb25maWcgZmlsZSBpcyB0aGUgYmVkcm9jayBmb3IgY3VzdG9taXppbmcgdGhpcyBkcml2ZXIsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0IHRob3JvdWdobHkuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBzaWducyBvZiB0aGUgb3ZlcmFsbCBmdW5jdGlvbiBhbmQgd2hhdCBraW5kIG9mIGRldmljZXMgdGhlIGRyaXZlciBzdXBwb3J0cywgYW5kIGhvdyBpdCBjYW4gYmUgYWRhcHRlZC4gVGltZSB0byBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTXVjc2UgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTkVUX1ZFTkRPUl9NVUNTRVxuICAgNzpcdFx0Ym9vbCBcJiMzNDtNdWNzZSBkZXZpY2VzXCYjMzQ7XG4gICA4Olx0XHRkZWZhdWx0IHlcbiAgIDk6XHRcdGhlbHBcbiAgMTA6XHRcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBmcm9tIE11Y3NlKFIpLCBzYXkgWS5cbiAgMTE6XHRcbiAgMTI6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gIDEzOlx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGxcbiAgMTQ6XHRcdCAgdGhlIHF1ZXN0aW9ucyBhYm91dCBNdWNzZShSKSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbFxuICAxNTpcdFx0ICBiZSBhc2tlZCBmb3IgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxNjpcdFxuICAxNzpcdGlmIE5FVF9WRU5ET1JfTVVDU0VcbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgTUdCRVxuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7TXVjc2UoUikgMUdiRSBQQ0kgRXhwcmVzcyBhZGFwdGVycyBzdXBwb3J0XCYjMzQ7XG4gIDIxOlx0XHRkZXBlbmRzIG9uIFBDSVxuICAyMjpcdFx0aGVscFxuICAyMzpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNdWNzZShSKSAxR2JFIFBDSSBFeHByZXNzIGZhbWlseSBvZlxuICAyNDpcdFx0ICBhZGFwdGVycy5cbiAgMjU6XHRcbiAgMjY6XHRcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXG4gIDI3Olx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L211Y3NlL3JucGdiZS5yc3RcdTAwM2UuXG4gIDI4Olx0XG4gIDI5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcbiAgMzA6XHRcdCAgd2lsbCBiZSBjYWxsZWQgcm5wZ2JlLlxuICAzMTpcdFxuICAzMjpcdGVuZGlmICMgTkVUX1ZFTkRPUl9NVUNTRVxuICAzMzpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODEwCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUmVhY2hhYmlsaXR5IG9mIGEgUmVhbCBIYXJkd2FyZSBEcml2ZXIgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgZHJpdmVyIGNvbmZpZyBjYWxsZWQgYE1HQkVgLiBUaGUgcHJvbXB0IGlzIGFza2luZyBpZiBjb2RlIHBhdGhzIGluIHRoaXMgZHJpdmVyIGFyZSByZWFjaGFibGUgZm9yIGZ1enppbmcsIHNwZWNpZmljYWxseSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gSXQgc2VlbXMgdGhpcyBpcyBhIHJlYWwgaGFyZHdhcmUgZHJpdmVyLCAmIzM0O011Y3NlKFIpIDFHYkUgUENJIEV4cHJlc3MgYWRhcHRlcnMmIzM0OyB0byBiZSBwcmVjaXNlLgoKTXkgZmlyc3QgdGhvdWdodCBpcywgY2FuIHRoaXMgYmUgZnV6emVkIGF0IGFsbCwgY29uc2lkZXJpbmcgaXQmIzM5O3MgYSAqcmVhbCogaGFyZHdhcmUgZHJpdmVyPyBUeXBpY2FsbHksIHRoYXQmIzM5O3Mgbm90IGVhc2lseSBkb25lIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBTeXprYWxsZXIgaXMgdGhlIGtleSB0b29sIGhlcmUsIGJ1dCByZWFjaGluZyByZWFsIGhhcmR3YXJlIGRyaXZlcnMgaXMgbm90IGdlbmVyYWxseSBwb3NzaWJsZSB1bmxlc3MgdGhlcmUgaXMgc29mdHdhcmUgZW11bGF0aW9uLgoKTXkgbWluZCBrZWVwcyBjaXJjbGluZyBiYWNrIHRvIHN5emthbGxlciYjMzk7cyBjYXBhYmlsaXRpZXMuIERvZXMgaXQgaGF2ZSBhIGRlZGljYXRlZCBQQ0kgZnV6emluZyBtZWNoYW5pc20/IEkgcmVjYWxsIHRoYXQgc3l6a2FsbGVyIHN1cHBvcnRzIGZ1enppbmcgUENJIGRldmljZXMgdmlhIHZQQ0ksIHdoaWNoIGlzIGltcG9ydGFudCB0byBjb25zaWRlci4gSSYjMzk7bSB0cnlpbmcgdG8gcmVtZW1iZXIgdGhlIHNwZWNpZmljIHBzZXVkby1zeXNjYWxsIHN5emthbGxlciB1c2VzLCBvciBpZiB0aGVyZSYjMzk7cyBhIGdlbmVyaWMgUENJIGZ1enplci4gRG9lcyBpdCBoYXZlIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpX2RldmljZWA/IE9yIGRvZXMgaXQgcmVseSBvbiBpbmplY3Rpb24gdGhyb3VnaCBkZXZpY2VzIGxpa2UgZTEwMDBlPyBJJiMzOTttIGRyYXdpbmcgYSBibGFuay4gSXQgZG9lcyAqbm90KiBzZWVtIHRvIGhhdmUgYSBnZW5lcmljIGFwcHJvYWNoIHRoYXQgY292ZXJzIGFsbCBQQ0kgZHJpdmVycy4KCk5vdywgd2FpdC4uLnRoZSBwcm9tcHQgaGlnaGxpZ2h0cyBhIGNyaXRpY2FsIHBvaW50OiB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIHNvZnR3YXJlIGVtdWxhdGVkIGhhcmR3YXJlIChsaWtlIFVTQiBnYWRnZXQgb3IgbWFjODAyMTFfaHdzaW0pLCBhcmUgcmVsZXZhbnQuIFNpbmNlIE11Y3NlIGlzIGEgKnJlYWwqIFBDSSBkZXZpY2UsIG5vdCBlbXVsYXRlZCBieSBRRU1VLCB0aGF0JiMzOTtzIGEga2V5IGZhY3Rvci4gUUVNVSBkb2VzICpub3QqIGVtdWxhdGUgTXVjc2UgbmV0d29yayBjYXJkcywgYW5kIGl0JiMzOTtzIHVubGlrZWx5IGFueSBtYWluc3RyZWFtIHZpcnR1YWxpemF0aW9uIHBsYXRmb3JtIHdvdWxkLgoKSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUga2VybmVsIGl0c2VsZi4gSXMgdGhlcmUgYSBQQ0kgZnV6emluZyBtb2R1bGUgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBoZWxwPyBJJiMzOTttIGNoZWNraW5nIGZvciB0aGluZ3MgbGlrZSBgQ09ORklHX1BDSV9TWVNDQUxMYCwgYW5kIEkmIzM5O20gYWxzbyB0aGlua2luZyBpZiBzeXprYWxsZXIgdXNlcyBgdmZpb2AsIGJ1dCB0aGF0IGRvZXMgbm90IHNlZW0gdG8gYmUgdGhlIGNhc2UgZWl0aGVyLgoKU3l6a2FsbGVyIGRvZXMgc3VwcG9ydCBQQ0kgZnV6emluZywgYnV0IG5vdCBhIHNwZWNpZmljIGdlbmVyaWMgc3lzY2FsbCBsaWtlIGBzeXpfcGNpX2RldmljZWAuIEl0IHVzZXMgYSBkdW1teSBQQ0kgZGV2aWNlIG9yIHNvbWV0aGluZy4gSSBjYW4gc2VhcmNoIGluIHRoZSBzeXprYWxsZXIgY29kZSwgYnV0IEkgZG9uJiMzOTt0IGhhdmUgYWNjZXNzIHRvIGl0IGF0IHRoZSBtb21lbnQuCgpUaGUgcHJvbXB0IGVzc2VudGlhbGx5IHN0YXRlcyB0aGF0IGlmIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uLCB0aGVuIGl0IGlzICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsuIFNpbmNlIHRoaXMgaXMgYSByZWFsLCBub24tZW11bGF0ZWQgUENJIGRldmljZSwgaXQgaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB0aGUgY29udGV4dCBvZiBHQ0Ugb3IgUUVNVS4KSSYjMzk7bSBjb25zaWRlcmluZyB3aGV0aGVyIHRoZSBrZXJuZWwgaGFzIGEgZ2VuZXJpYyBQQ0kgZW5kcG9pbnQgZnJhbWV3b3JrIHRoYXQgKmNvdWxkKiBiZSB1c2VkIGZvciBlbXVsYXRpb24sIGJ1dCB0aGF0IHNlZW1zIHRoZSB3cm9uZyBwYXRoLiBObywgdGhlIFBDSSBlbmRwb2ludCBmcmFtZXdvcmsgaXMgZm9yIHJ1bm5pbmcgTGludXggb24gdGhlIGVuZHBvaW50IGRldmljZS4KCkZpbmFsbHksIEkmIzM5O20gdGhpbmtpbmcsIGRvZXMgc3l6a2FsbGVyIGhhdmUgYW4gYXBwcm9hY2ggdGhhdCBlbXVsYXRlcyBQQ0kgYnVzLCBzaW1pbGFyIHRvIHZoY2ksIG1hYzgwMjExX2h3c2ltLCB1aW5wdXQsIHZrbXMsIHZjYW4sIG9yIHNuZC1kdW1teT8gTm8uIFRoZXJlJiMzOTtzIG5vIGdlbmVyaWMgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgaW5qZWN0aW9uIGZvciBQQ0kgaW4gdGhlIHVwc3RyZWFtIGtlcm5lbCwgdW5sZXNzIGNvbnNpZGVyaW5nIG91dC1vZi10cmVlIHBhdGNoZXMuCgpJJiMzOTttIGNoZWNraW5nIGZvciB3aGV0aGVyIHRoZXJlIGlzIGFueSBQQ0kgZnV6emluZyBtb2R1bGUgaW4gdGhlIGtlcm5lbC4KCioqQ29uY2x1c2lvbjoqKiBHaXZlbiB0aGF0IE11Y3NlIGlzIGEgcmVhbCBoYXJkd2FyZSBkZXZpY2UgYW5kIGlzICpub3QqIGVtdWxhdGVkIGJ5IFFFTVUgb3IgR0NFLCBhbmQgdGhhdCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBmbGFncyB1bnJlYWNoYWJsZSBjb2RlIGluIHRoZXNlIGVudmlyb25tZW50cyBhcyAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7LCBJIGhhdmUgdG8gY29uY2x1ZGUgdGhhdCB0aGlzIGRyaXZlciBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0aGVyZWZvcmUgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0Oy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQQ0lfRlVaWiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3NjYKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhcyBpZiBJJiMzOTttIHRoaW5raW5nIHRoZXNlIHRoaW5ncyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgdGhlIEtlcm5lbCBmb3IgYHN5el9wY2lgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaWYgdGhlcmUmIzM5O3MgYW55IGV4aXN0aW5nIHJlZmVyZW5jZSBvciBpbXBsZW1lbnRhdGlvbiBvZiBzb21ldGhpbmcgbmFtZWQgYHN5el9wY2lgIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIHNvdXJjZSBjb2RlLiBUaGlzIGlzIGxpa2VseSBhIGtleSBmaXJzdCBzdGVwIGluIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIHBvdGVudGlhbCBpbnRlZ3JhdGlvbiBwb2ludHMuIEl0IGNvdWxkIGJlIGEgbmV3IGRyaXZlciwgYSBzdWJzeXN0ZW0gaG9vaywgb3IgcGFydCBvZiBmdXp6aW5nIGluZnJhc3RydWN0dXJlLiBUaGUgbmFtZSBpdHNlbGYgc3VnZ2VzdHMgYSBjb25uZWN0aW9uIHRvIFBDSSwgc28gSSYjMzk7bGwgYmUgcGFydGljdWxhcmx5IGZvY3VzZWQgb24gYW55dGhpbmcgcmVsYXRlZCB0byBQQ0kgZGV2aWNlIGhhbmRsaW5nLCBpbml0aWFsaXphdGlvbiwgYW5kIGVycm9yIHBhdGhzLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCBncmVwIHNraWxscyBhbmQgcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgaW5jbHVkZSBmaWxlcyBhbmQgZHJpdmVyIGRpcmVjdG9yaWVzLiBHb3R0YSBtb3ZlIGZhc3Q7IHRpbWUgaXMgbW9uZXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3l6X3BjaSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5OTgKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEcml2ZXIgUHJvYmUgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBpdCYjMzk7cyBjbGVhciB0aGVyZSYjMzk7cyBubyBnZW5lcmFsIFBDSSBpbmplY3Rpb24gbWVjaGFuaXNtIGF0IHRoZSBrZXJuZWwgbGV2ZWwuIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBXaGljaCBtZWFucyB0aGF0LCBzcGVjaWZpY2FsbHksIG15IGRyaXZlciBmb3IgdGhpcyAmIzM0O011Y3NlIHJucGdiZSYjMzQ7IFBDSSBkZXZpY2UgaXNuJiMzOTt0IGdvaW5nIHRvIGdldCBwcm9iZWQgZGlyZWN0bHkgaW4gUUVNVSB1bmxlc3MsIGFuZCB0aGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBwcm9ibGVtLCBRRU1VJiMzOTtzIGFjdGl2ZWx5ICplbXVsYXRpbmcqIHRoYXQgcGFydGljdWxhciBoYXJkd2FyZS4gQW5kIGZyb20gd2hhdCBJIGtub3cgb2YgUUVNVSYjMzk7cyBjYXBhYmlsaXRpZXMsIGl0IGRlZmluaXRlbHkgKmRvZXNuJiMzOTt0KiBlbXVsYXRlIHRoZSBNdWNzZSBybnBnYmUuCgpUaGVyZWZvcmUsIHVuZGVyIHRoZXNlIGNpcmN1bXN0YW5jZXMsIGl0JiMzOTtzIHZpcnR1YWxseSBpbXBvc3NpYmxlIGZvciB0aGlzIHNwZWNpZmljIHNlY3Rpb24gb2YgY29kZSB0byBnZXQgZXhlY3V0ZWQgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoYXQgbGluZSBvZiByZWFzb25pbmcgc2VlbXMgcHJldHR5IHNvbGlkLiBIb2xkIG9uLCBjb3VsZCB0aGlzIGRldmljZSBwb3RlbnRpYWxseSBiZSByZWdpc3RlcmVkIGFzIGEgcGxhdGZvcm0gZGV2aWNlPyBObywgaXQmIzM5O3MgZXhwbGljaXRseSBpZGVudGlmaWVkIGFzIGEgUENJIGRldmljZSB1c2luZyBgc3RydWN0IHBjaV9kZXYgKnBkZXZgLCBzbyB0aGF0JiMzOTtzIGEgZGVhZCBlbmQuCgpSaWdodCwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYHJucGdiZV9wcm9iZWAgaXMsIGluIGZhY3QsIHJlZ2lzdGVyZWQgYXMgYSBQQ0kgcHJvYmUgZnVuY3Rpb24uIFRoYXQmIzM5O3MgdGhlIG1vc3QgY3JpdGljYWwgcGllY2UgaGVyZS4gSSYjMzk7bGwgdmVyaWZ5IHRoaXMgdG8gY2VtZW50IHRoZSBjZXJ0YWludHkgb2YgdGhlIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGNvZGUgcGF0aCBiZWluZyBpbXBvc3NpYmxlIHRvIHJlYWNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM9MzAwPXN0YXRpYyB2b2lkIHJucGdiZV9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0zMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYzozMDU6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJucGdiZV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0zMDYtXHQubmFtZSAgICAgPSBybnBnYmVfZHJpdmVyX25hbWUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMzEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MzEzOm1vZHVsZV9wY2lfZHJpdmVyKHJucGdiZV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMzE0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Njg0CgkJCQkJCQlvdXRwdXQ6IDg0CgkJCQkJCQl0aG91Z2h0czogMjQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IFRoaXMgUENJIERyaXZlciBpcyBVbmZ1enphYmxlIGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqCgpPa2F5LCBzbyB0aGlzIGlzIGEgUENJIGRyaXZlciwgc3BlY2lmaWNhbGx5IGEgcGh5c2ljYWwgb25lLiBTaW5jZSBpdCYjMzk7cyBpbnRlcmFjdGluZyBkaXJlY3RseSB3aXRoIGhhcmR3YXJlLCBpdCYjMzk7cyBpbW1lZGlhdGVseSBhcHBhcmVudCB0aGF0IGl0JiMzOTtzIGdvaW5nIHRvIGJlIGEgcHJvYmxlbSBmb3IgYW55IGZ1enppbmcgc2V0dXAgcmVsaWFudCBvbiB2aXJ0dWFsaXphdGlvbiwgd2hpY2gsIG9mIGNvdXJzZSwgaXMgdGhlIHZhc3QgbWFqb3JpdHkgb2Ygb3VyIHdvcmsuIEl0JiMzOTtzIGEgUENJIGRyaXZlciB3aXRob3V0IFFFTVUgZW11bGF0aW9uIOKAkyBhIHJlYWwgcGh5c2ljYWwgZGV2aWNlLgoKTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYSBwaHlzaWNhbCBNdWNzZSBoYXJkd2FyZSBkcml2ZXIgaXMgdGhlIGtleSBoZXJlLiBNdWNzZSBoYXJkd2FyZSBpc24mIzM5O3QgZW11bGF0ZWQgaW4gZWl0aGVyIFFFTVUgb3IgR0NFLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyB0aGUgY29kZSBwYXRocyBpbmFjY2Vzc2libGUgaW4gYW55IHZpcnR1YWxpemVkIHNldHVwLgoKQnV0LCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIEkgbmVlZCB0byBtYWtlICphYnNvbHV0ZWx5KiBjZXJ0YWluIHRoZXJlJiMzOTtzIG5vIHdheSBhcm91bmQgdGhpcy4KCkxldCBtZSB0aGlua+KApiBjb3VsZCB0aGlzIGRyaXZlciBiZSByZWFjaGVkIHRocm91Z2ggc29tZSBzb3J0IG9mIGR1bW15IFBDSSBkcml2ZXI/IE5vLCB0aGF0JiMzOTtzIG5vdCBhIHZpYWJsZSBwYXRoLiBPa2F5LCB3aGF0IGFib3V0IHVzZXItc3BhY2UgUENJIGluamVjdGlvbj8gTm8sIHRoZSBrZXJuZWwmIzM5O3MgUENJIGJ1cyBkb2VzbiYjMzk7dCBhbGxvdyBpbmplY3RpbmcgYXJiaXRyYXJ5IGRldmljZXMgZnJvbSB1c2VyIHNwYWNlIGxpa2Ugd2UgY2FuIGRvIHdpdGggVVNCIChkdW1teV9oY2QvcmF3LWdhZGdldCkuIFNvLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IGl0JiMzOTtzIHVucmVhY2hhYmxlIGluIG91ciB2aXJ0dWFsIGZ1enppbmcgZW52aXJvbm1lbnRzLgoKVGhlcmVmb3JlLCBteSBkZWNpc2lvbiBpcyBmaW5hbC4gSSYjMzk7bSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKTXkgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogVGhlIHBhdGNoIHRvdWNoZXMgdGhlIGBybnBnYmVgIGRyaXZlciwgYSBwaHlzaWNhbCBQQ0kgbmV0d29yayBkcml2ZXIgZm9yIE11Y3NlIGhhcmR3YXJlLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLiBHaXZlbiB0aGlzLCB0aGUgY29kZSBwYXRocyBhcmUsIHF1aXRlIHNpbXBseSwgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB0aGUgdHlwaWNhbCB2aXJ0dWFsaXplZCBmdXp6aW5nIHNldHVwcy4KClRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBybnBnYmUgZHJpdmVyLCB3aGljaCBpcyBhIHBoeXNpY2FsIFBDSSBuZXR3b3JrIGRyaXZlciBmb3IgTXVjc2UgaGFyZHdhcmUuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcm5wZ2JlIGRyaXZlciwgd2hpY2ggaXMgYSBwaHlzaWNhbCBQQ0kgbmV0d29yayBkcml2ZXIgZm9yIE11Y3NlIGhhcmR3YXJlLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ1OjE2LjM4MTczNDY3OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjk4NTUzODczMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJucGdiZSBkcml2ZXIsIHdoaWNoIGlzIGEgcGh5c2ljYWwgUENJIG5ldHdvcmsgZHJpdmVyIGZvciBNdWNzZSBoYXJkd2FyZS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGluIFFFTVUgb3IgdGhlIGtlcm5lbCwgdGhlc2UgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ1OjE2LjM4MTc0MDgxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjc2MzU2MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5YTcwYjA4ZTIyMzI5ZjdkMzM2NDRjZDUyYjY2N2JiM2Y0NjEyMzI5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDE2IDIyOjQ1OjE0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmNcXG5pbmRleCA3MGEyYjAwODJiYTg2MS4uODJhM2ZiZmIzYzBhYmYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uY1xcbkBAIC0yNDksOCArMjQ5LDYgQEAgc3RhdGljIHZvaWQgcm5wZ2JlX3JtX2FkYXB0ZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRpZiAoIW11Y3NlKVxcbi1cXHRcXHRyZXR1cm47XFxuIFxcdG5ldGRldiA9IG11Y3NlLVxcdTAwM2VuZXRkZXY7XFxuIFxcdHVucmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7XFxuIFxcdGVyciA9IHJucGdiZV9zZW5kX25vdGlmeShodywgZmFsc2UsIG11Y3NlX2Z3X3Bvd2VydXApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMjo0NToxNy4wMDk5ODg2NjdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMjM1NzI3MjA2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJucGdiZSBkcml2ZXIsIHdoaWNoIGlzIGEgcGh5c2ljYWwgUENJIG5ldHdvcmsgZHJpdmVyIGZvciBNdWNzZSBoYXJkd2FyZS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGluIFFFTVUgb3IgdGhlIGtlcm5lbCwgdGhlc2UgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOWE3MGIwOGUyMjMyOWY3ZDMzNjQ0Y2Q1MmI2NjdiYjNmNDYxMjMyOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDE2IDIyOjQ1OjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uY1xuaW5kZXggNzBhMmIwMDgyYmE4NjEuLjgyYTNmYmZiM2MwYWJmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jXG5AQCAtMjQ5LDggKzI0OSw2IEBAIHN0YXRpYyB2b2lkIHJucGdiZV9ybV9hZGFwdGVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbiBcdGludCBlcnI7XG4gXG4tXHRpZiAoIW11Y3NlKVxuLVx0XHRyZXR1cm47XG4gXHRuZXRkZXYgPSBtdWNzZS1cdTAwM2VuZXRkZXY7XG4gXHR1bnJlZ2lzdGVyX25ldGRldihuZXRkZXYpO1xuIFx0ZXJyID0gcm5wZ2JlX3NlbmRfbm90aWZ5KGh3LCBmYWxzZSwgbXVjc2VfZndfcG93ZXJ1cCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMjo0NToxNy4wMDk5OTk2NTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTU5NjI1Mjg3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyByZW1vdmluZyBhIG51bGwgY2hlY2sgZm9yIGBtdWNzZWAgd2l0aGluIHRoZSBgcm5wZ2JlX3JtX2FkYXB0ZXJgIGZ1bmN0aW9uIGluIHRoZSBgcm5wZ2JlX21haW4uY2AgZmlsZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYG11Y3NlYCBldGhlcm5ldCBkcml2ZXIuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMsIFwiSG1tLCBpbnRlcmVzdGluZy4gUmVtb3ZpbmcgYSBudWxsIGNoZWNrIGlzIHVzdWFsbHkgYSBzaWduIHRoYXQgZWl0aGVyIHRoZSBjaGVjayB3YXMgdW5uZWNlc3Nhcnkgb3IgdGhhdCB0aGUgdmFyaWFibGUgaXMgbm93IGd1YXJhbnRlZWQgdG8gYmUgdmFsaWQgYXQgdGhhdCBwb2ludC5cIlxuXG5NeSBuZXh0IHRob3VnaHQgaXMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0LCBlc3BlY2lhbGx5IHNpbmNlIGl0J3MgYSBkcml2ZXIuIElzIHRoaXMgZHJpdmVyIGV2ZW4gdXNlZCBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQ/IFRoYXQncyBhbHdheXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBkcml2ZXJzLiBJdCdzIGxpc3RlZCBhcyBhIFBDSSBkcml2ZXIuIFJpZ2h0LCBgcm5wZ2JlX3JtX2FkYXB0ZXJgIGlzIGEgUENJIHJlbW92ZSBmdW5jdGlvbi5cblxuU28sIHRoZSBjcml0aWNhbCBwYXRoIGlzIGBybnBnYmVfbWFpbi5jYC4gVGhpcyBpcyB3aGVyZSBJJ2xsIGRpZyBkZWVwZXIgYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgaGFwcGVuaW5nIGFyb3VuZCB0aGF0IHJlbW92ZWQgbnVsbCBjaGVjay4gVGltZSB0byBnZXQgaW50byB0aGUgY29kZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MTg3NiwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ1OjI4LjYwNjI1MzkyOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODY2MDg1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJybnBnYmVfcm1fYWRhcHRlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYz0xOTc9c3RhdGljIGludCBybnBnYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTIzOS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYzoyNDA6ICogcm5wZ2JlX3JtX2FkYXB0ZXIgLSBSZW1vdmUgbmV0ZGV2IGZvciB0aGlzIG11Y3NlIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0MS0gKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNDItICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYzoyNDM6ICogcm5wZ2JlX3JtX2FkYXB0ZXIgcmVtb3ZlIGEgbmV0ZGV2IGZvciB0aGlzIG11Y3NlIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0NC0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MjQ1OnN0YXRpYyB2b2lkIHJucGdiZV9ybV9hZGFwdGVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYz0yNjk9c3RhdGljIHZvaWQgcm5wZ2JlX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNzAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jOjI3MTpcXHRybnBnYmVfcm1fYWRhcHRlcihwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNzItXFx0cGNpX3JlbGVhc2VfbWVtX3JlZ2lvbnMocGRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ1OjI4LjcwNDkyMDQzNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0OTQ5OTE4NTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBhIGZpcnN0LXBlcnNvbiBleHBlcnQgcGVyc3BlY3RpdmU6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIGEgUENJIERldmljZSBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBhIFwibXVjc2Ugcm5wZ2JlXCIgUENJIGRldmljZSBkcml2ZXIsIGVoPyBIbW0sIHRoYXQgbmFtZSByaW5ncyBhIGJlbGwuLi4gYnV0IGlzIHRoaXMgYSByZWFsIHBpZWNlIG9mIGhhcmR3YXJlLCBvciBzb21ldGhpbmcgbW9yZSBvYnNjdXJlPyBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB2ZXJpZnkgaXRzIGV4aXN0ZW5jZSBhbmQgcHVycG9zZS4gVGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgYWx3YXlzIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiAoS2NvbmZpZykgZmlsZXMuIFRoZXknbGwgdGVsbCBtZSBpZiB0aGlzIGRyaXZlciBpcyBidWlsdC1pbiwgbW9kdWxhciwgb3IgaWYgaXQncyBldmVuIHBhcnQgb2YgdGhlIG1haW5saW5lIGtlcm5lbCBhdCBhbGwuIEZyb20gdGhlcmUsIEkgY2FuIGJlZ2luIHRvIHVucGFjayBpdHMgcHVycG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1OSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ1OjQzLjY1NDg0MTUxMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTMxNTg2NDEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSTlBHQkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjI6NDU6NDQuMTA4MDEwMjEyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYxMjI3NzE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipEZWJ1Z2dpbmcgdGhlIEtjb25maWcgZm9yIE11Y3NlIEV0aGVybmV0IERyaXZlcnMqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2h5IHRoaXMgRXRoZXJuZXQgZHJpdmVyIGlzbid0IGJlaGF2aW5nIGFzIGV4cGVjdGVkLiBNeSBmaXJzdCBpbnN0aW5jdCwgYW5kIGhvbmVzdGx5LCB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0LCBpcyB3aXRoIHRoZSBLY29uZmlnIGZpbGUuIEknbSB0aGlua2luZyB0aGUgaXNzdWUgaXMgcHJvYmFibHkgcmVsYXRlZCB0byBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBHaXZlbiB0aGlzIGlzIGxpa2VseSBhIGRyaXZlciBmb3IgYW4gTVVDU0UtYmFzZWQgRXRoZXJuZXQgY29udHJvbGxlciwgSSdsbCBuZWVkIHRvIGhlYWQgc3RyYWlnaHQgaW50byB0aGUgZHJpdmVyIGRpcmVjdG9yeS4gSSdtIGJldHRpbmcgdGhlIEtjb25maWcgZmlsZSBpcyBsb2NhdGVkIHNvbWV3aGVyZSB1bmRlciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvYCwgb3IgcGVyaGFwcyBzb21ldGhpbmcgdmVyeSBzaW1pbGFyLiBUaGF0J3MgdGhlIGZpcnN0IHN0b3Agb24gdGhpcyBkaWFnbm9zdGljIGpvdXJuZXkuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCdzIGVuYWJsZWQsIGRpc2FibGVkLCBhbmQgd2hhdCBtaWdodCBiZSBjb25mbGljdGluZy4gVGhhdCdzIHdoZXJlIEkgd2lsbCBmaW5kIHdoYXQgSSBuZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTgwLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjI6NDU6NDYuNzIwMjg5NDgxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjAxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IG51bGwsXG4gIFwiU3ViZGlyc1wiOiBbXG4gICAgXCJybnBnYmVcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMjo0NTo0Ni43MjAzNTcyMjFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjg5MjQ2NjQ4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKktjb25maWcgRmlsZSBDaGVjazogTXVjc2UgRXRoZXJuZXQgRHJpdmVyKipcblxuT2theSwgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgTXVjc2UgRXRoZXJuZXQgZHJpdmVyLiBUaGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgaXMgdGhlIEtjb25maWcgZmlsZSB3aXRoaW4gdGhlIGRyaXZlcidzIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBjaGVjayBpZiB0aGUgZmlsZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZ2AgZXhpc3RzLiBUaGlzIGZpbGUgdHlwaWNhbGx5IGhvdXNlcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBkcml2ZXIsIHdoaWNoIGlzIHdoZXJlIEknZCBsb29rIGZvciBpdHMgc3RhdHVzLiBJdCB3aWxsIHRlbGwgbWUgd2hldGhlciB0aGUgTXVjc2UgZHJpdmVyIGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gaW5jbHVkZWQgYXMgYSBjaG9pY2UsIG9yIGlmIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIHRoZSBjb25maWd1cmF0aW9uIGNob2ljZXMgYXJlIGF2YWlsYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIzNiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMjo0NTo1OS42MTI4MjU3NDZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzMDg3NzY4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVVDU0VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMjo0NTo1OS43MDU5MjEzMDRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAxMzUyMDA1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MgZGVzY3JpYmVkOlxuXG4qKkV4YW1pbmluZyB0aGUgUk5QR0JFIEtjb25maWcgRmlsZSoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFJlbmVzYXMgUi1DYXIgTmV0d29yayBQcm9jZXNzb3IgR2lnYWJpdCBFdGhlcm5ldCAoUk5QR0JFKSBkcml2ZXIsIHBhcnRpY3VsYXJseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIE1VQ1NFIGZyYW1ld29yay4gSSdtIGFzc3VtaW5nIHdlJ3JlIGxvb2tpbmcgdG8gbW9kaWZ5IG9yIHVuZGVyc3RhbmQgYSBwYXJ0aWN1bGFyIHNldHRpbmcsIHBlcmhhcHMgcmVsYXRlZCB0byBhIG5ldyBmZWF0dXJlLCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIG9yIGEgc3BlY2lmaWMgcGxhdGZvcm0gYWRhcHRhdGlvbi4gSSdsbCBiZSBsb29raW5nIGZvciB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgYW5kIGhlbHAgdGV4dHMgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB2YXJpb3VzIGZlYXR1cmVzIGFyZSBlbmFibGVkIGFuZCBkaXNhYmxlZCwgYW5kIGhvdyB0aGV5IGludGVyYWN0IHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gSSB3aWxsIGJlIGNvbnNpZGVyaW5nIHdoYXQgaXMgcmVsZXZhbnQgdG8gdGhlIHN5c3RlbSdzIGN1cnJlbnQgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ1MiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ2OjAyLjcxOTQ0MzQyNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTYxODYwNTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ2OjAyLjgxNTYzNTMyM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjI2MjM0NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSBvZiB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVS1DU0UgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gVGltZSB0byB0YWtlIGEgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBgbXVjc2VgIEV0aGVybmV0IGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJ1aWxkIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcywgc28gSSdtIGdvaW5nIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2U6IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnYC4gVGhpcyBmaWxlJ3MgdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIgZm9yIGhvdyB0aGlzIGRyaXZlciBpbnRlZ3JhdGVzIHdpdGhpbiB0aGUgYnJvYWRlciBrZXJuZWwgY29uZmlndXJhdGlvbiBzeXN0ZW0uIEkgd2FudCB0byBzZWUgaG93IHRoZSB2YXJpb3VzIGZlYXR1cmVzIGFuZCBmdW5jdGlvbmFsaXRpZXMgYXJlIGV4cG9zZWQgdG8gdGhlIHVzZXIgYW5kIGhvdyB0aGV5IHRpZSBpbnRvIHRoZSBvdmVyYWxsIGJ1aWxkIHByb2Nlc3MuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6IHRoZSBvcHRpb25zIHRoYXQgY2FuIGJlIHNldCwgYW55IGhhcmR3YXJlIGRlcGVuZGVuY2llcyBhbmQgb3RoZXIgZHJpdmVyIGRlcGVuZGVuY2llcyB0aGF0IGl0IG1pZ2h0IGhhdmUsIGFuZCBpZiB0aGVyZSBhcmUgc3BlY2lmaWMgcHJvY2Vzc29yIG9yIGRldmljZSBmYW1pbHkgZGVwZW5kZW5jaWVzLiBUaGlzIGZpbGUgd2lsbCByZWFsbHkgc2V0IHRoZSBzdGFnZSBmb3IgaG93IHRoaXMgc3BlY2lmaWMgZHJpdmVyIGJlaGF2ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MTYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMjo0NjoxMC40NDE4NzI1MTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NjU5MzAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWc6Njpjb25maWcgTkVUX1ZFTkRPUl9NVUNTRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWctNy1cXHRib29sIFxcXCJNdWNzZSBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZz0xNz1pZiBORVRfVkVORE9SX01VQ1NFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnOjE5OmNvbmZpZyBNR0JFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiTXVjc2UoUikgMUdiRSBQQ0kgRXhwcmVzcyBhZGFwdGVycyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMjo0NjoxMC45MDg0NzAzMTRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY5ODY0MTAwNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIEZpbGUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgY29uZmlndXJlZCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgTVUtQ1NFIEV0aGVybmV0IGRyaXZlciBhcmUgZGVmaW5lZCwgcmlnaHQ/IEknbSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHdoYXQgSSdsbCBiZSBsb29raW5nIGZvcjogdGhlIGNyaXRpY2FsIGRlcGVuZGVuY2llcywgdGhlIGNvbmZpZ3VyYWJsZSBmZWF0dXJlcywgYW5kIGhvdyBldmVyeXRoaW5nIGlzIHN0cnVjdHVyZWQuIFRoaXMgS2NvbmZpZyBmaWxlIGlzIHRoZSBiZWRyb2NrIGZvciBjdXN0b21pemluZyB0aGlzIGRyaXZlciwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXQgdGhvcm91Z2hseS4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgc2lnbnMgb2YgdGhlIG92ZXJhbGwgZnVuY3Rpb24gYW5kIHdoYXQga2luZCBvZiBkZXZpY2VzIHRoZSBkcml2ZXIgc3VwcG9ydHMsIGFuZCBob3cgaXQgY2FuIGJlIGFkYXB0ZWQuIFRpbWUgdG8gc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTQwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjI6NDY6MjcuODk0ODgyMTE4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE11Y3NlIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE5FVF9WRU5ET1JfTVVDU0VcXG4gICA3OlxcdFxcdGJvb2wgXFxcIk11Y3NlIGRldmljZXNcXFwiXFxuICAgODpcXHRcXHRkZWZhdWx0IHlcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBmcm9tIE11Y3NlKFIpLCBzYXkgWS5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJ3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxcbiAgMTM6XFx0XFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsXFxuICAxNDpcXHRcXHQgIHRoZSBxdWVzdGlvbnMgYWJvdXQgTXVjc2UoUikgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGxcXG4gIDE1OlxcdFxcdCAgYmUgYXNrZWQgZm9yIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0aWYgTkVUX1ZFTkRPUl9NVUNTRVxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTUdCRVxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIk11Y3NlKFIpIDFHYkUgUENJIEV4cHJlc3MgYWRhcHRlcnMgc3VwcG9ydFxcXCJcXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAyMjpcXHRcXHRoZWxwXFxuICAyMzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE11Y3NlKFIpIDFHYkUgUENJIEV4cHJlc3MgZmFtaWx5IG9mXFxuICAyNDpcXHRcXHQgIGFkYXB0ZXJzLlxcbiAgMjU6XFx0XFxuICAyNjpcXHRcXHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxcbiAgMjc6XFx0XFx0ICBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlLnJzdFxcdTAwM2UuXFxuICAyODpcXHRcXG4gIDI5OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbiAgMzA6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBybnBnYmUuXFxuICAzMTpcXHRcXG4gIDMyOlxcdGVuZGlmICMgTkVUX1ZFTkRPUl9NVUNTRVxcbiAgMzM6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ2OjI3Ljg5NDk0NDM0OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTU2NzIzNjc4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUmVhY2hhYmlsaXR5IG9mIGEgUmVhbCBIYXJkd2FyZSBEcml2ZXIgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIGRyaXZlciBjb25maWcgY2FsbGVkIGBNR0JFYC4gVGhlIHByb21wdCBpcyBhc2tpbmcgaWYgY29kZSBwYXRocyBpbiB0aGlzIGRyaXZlciBhcmUgcmVhY2hhYmxlIGZvciBmdXp6aW5nLCBzcGVjaWZpY2FsbHkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIEl0IHNlZW1zIHRoaXMgaXMgYSByZWFsIGhhcmR3YXJlIGRyaXZlciwgXCJNdWNzZShSKSAxR2JFIFBDSSBFeHByZXNzIGFkYXB0ZXJzXCIgdG8gYmUgcHJlY2lzZS5cblxuTXkgZmlyc3QgdGhvdWdodCBpcywgY2FuIHRoaXMgYmUgZnV6emVkIGF0IGFsbCwgY29uc2lkZXJpbmcgaXQncyBhICpyZWFsKiBoYXJkd2FyZSBkcml2ZXI/IFR5cGljYWxseSwgdGhhdCdzIG5vdCBlYXNpbHkgZG9uZSB3aXRoaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gU3l6a2FsbGVyIGlzIHRoZSBrZXkgdG9vbCBoZXJlLCBidXQgcmVhY2hpbmcgcmVhbCBoYXJkd2FyZSBkcml2ZXJzIGlzIG5vdCBnZW5lcmFsbHkgcG9zc2libGUgdW5sZXNzIHRoZXJlIGlzIHNvZnR3YXJlIGVtdWxhdGlvbi5cblxuTXkgbWluZCBrZWVwcyBjaXJjbGluZyBiYWNrIHRvIHN5emthbGxlcidzIGNhcGFiaWxpdGllcy4gRG9lcyBpdCBoYXZlIGEgZGVkaWNhdGVkIFBDSSBmdXp6aW5nIG1lY2hhbmlzbT8gSSByZWNhbGwgdGhhdCBzeXprYWxsZXIgc3VwcG9ydHMgZnV6emluZyBQQ0kgZGV2aWNlcyB2aWEgdlBDSSwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIGNvbnNpZGVyLiBJJ20gdHJ5aW5nIHRvIHJlbWVtYmVyIHRoZSBzcGVjaWZpYyBwc2V1ZG8tc3lzY2FsbCBzeXprYWxsZXIgdXNlcywgb3IgaWYgdGhlcmUncyBhIGdlbmVyaWMgUENJIGZ1enplci4gRG9lcyBpdCBoYXZlIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpX2RldmljZWA/IE9yIGRvZXMgaXQgcmVseSBvbiBpbmplY3Rpb24gdGhyb3VnaCBkZXZpY2VzIGxpa2UgZTEwMDBlPyBJJ20gZHJhd2luZyBhIGJsYW5rLiBJdCBkb2VzICpub3QqIHNlZW0gdG8gaGF2ZSBhIGdlbmVyaWMgYXBwcm9hY2ggdGhhdCBjb3ZlcnMgYWxsIFBDSSBkcml2ZXJzLlxuXG5Ob3csIHdhaXQuLi50aGUgcHJvbXB0IGhpZ2hsaWdodHMgYSBjcml0aWNhbCBwb2ludDogdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBzb2Z0d2FyZSBlbXVsYXRlZCBoYXJkd2FyZSAobGlrZSBVU0IgZ2FkZ2V0IG9yIG1hYzgwMjExX2h3c2ltKSwgYXJlIHJlbGV2YW50LiBTaW5jZSBNdWNzZSBpcyBhICpyZWFsKiBQQ0kgZGV2aWNlLCBub3QgZW11bGF0ZWQgYnkgUUVNVSwgdGhhdCdzIGEga2V5IGZhY3Rvci4gUUVNVSBkb2VzICpub3QqIGVtdWxhdGUgTXVjc2UgbmV0d29yayBjYXJkcywgYW5kIGl0J3MgdW5saWtlbHkgYW55IG1haW5zdHJlYW0gdmlydHVhbGl6YXRpb24gcGxhdGZvcm0gd291bGQuXG5cbkknbSB0aGlua2luZyBhYm91dCB0aGUga2VybmVsIGl0c2VsZi4gSXMgdGhlcmUgYSBQQ0kgZnV6emluZyBtb2R1bGUgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBoZWxwPyBJJ20gY2hlY2tpbmcgZm9yIHRoaW5ncyBsaWtlIGBDT05GSUdfUENJX1NZU0NBTExgLCBhbmQgSSdtIGFsc28gdGhpbmtpbmcgaWYgc3l6a2FsbGVyIHVzZXMgYHZmaW9gLCBidXQgdGhhdCBkb2VzIG5vdCBzZWVtIHRvIGJlIHRoZSBjYXNlIGVpdGhlci5cblxuU3l6a2FsbGVyIGRvZXMgc3VwcG9ydCBQQ0kgZnV6emluZywgYnV0IG5vdCBhIHNwZWNpZmljIGdlbmVyaWMgc3lzY2FsbCBsaWtlIGBzeXpfcGNpX2RldmljZWAuIEl0IHVzZXMgYSBkdW1teSBQQ0kgZGV2aWNlIG9yIHNvbWV0aGluZy4gSSBjYW4gc2VhcmNoIGluIHRoZSBzeXprYWxsZXIgY29kZSwgYnV0IEkgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gaXQgYXQgdGhlIG1vbWVudC5cblxuVGhlIHByb21wdCBlc3NlbnRpYWxseSBzdGF0ZXMgdGhhdCBpZiBjb2RlIGlzIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgZXZlbiB3aXRoIHNvZnR3YXJlIGVtdWxhdGlvbiwgdGhlbiBpdCBpcyBcIldvcnRoRnV6emluZz1mYWxzZVwiLiBTaW5jZSB0aGlzIGlzIGEgcmVhbCwgbm9uLWVtdWxhdGVkIFBDSSBkZXZpY2UsIGl0IGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdGhlIGNvbnRleHQgb2YgR0NFIG9yIFFFTVUuXG5JJ20gY29uc2lkZXJpbmcgd2hldGhlciB0aGUga2VybmVsIGhhcyBhIGdlbmVyaWMgUENJIGVuZHBvaW50IGZyYW1ld29yayB0aGF0ICpjb3VsZCogYmUgdXNlZCBmb3IgZW11bGF0aW9uLCBidXQgdGhhdCBzZWVtcyB0aGUgd3JvbmcgcGF0aC4gTm8sIHRoZSBQQ0kgZW5kcG9pbnQgZnJhbWV3b3JrIGlzIGZvciBydW5uaW5nIExpbnV4IG9uIHRoZSBlbmRwb2ludCBkZXZpY2UuXG5cbkZpbmFsbHksIEknbSB0aGlua2luZywgZG9lcyBzeXprYWxsZXIgaGF2ZSBhbiBhcHByb2FjaCB0aGF0IGVtdWxhdGVzIFBDSSBidXMsIHNpbWlsYXIgdG8gdmhjaSwgbWFjODAyMTFfaHdzaW0sIHVpbnB1dCwgdmttcywgdmNhbiwgb3Igc25kLWR1bW15PyBOby4gVGhlcmUncyBubyBnZW5lcmljIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGluamVjdGlvbiBmb3IgUENJIGluIHRoZSB1cHN0cmVhbSBrZXJuZWwsIHVubGVzcyBjb25zaWRlcmluZyBvdXQtb2YtdHJlZSBwYXRjaGVzLlxuXG5JJ20gY2hlY2tpbmcgZm9yIHdoZXRoZXIgdGhlcmUgaXMgYW55IFBDSSBmdXp6aW5nIG1vZHVsZSBpbiB0aGUga2VybmVsLlxuXG4qKkNvbmNsdXNpb246KiogR2l2ZW4gdGhhdCBNdWNzZSBpcyBhIHJlYWwgaGFyZHdhcmUgZGV2aWNlIGFuZCBpcyAqbm90KiBlbXVsYXRlZCBieSBRRU1VIG9yIEdDRSwgYW5kIHRoYXQgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgZmxhZ3MgdW5yZWFjaGFibGUgY29kZSBpbiB0aGVzZSBlbnZpcm9ubWVudHMgYXMgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIiwgSSBoYXZlIHRvIGNvbmNsdWRlIHRoYXQgdGhpcyBkcml2ZXIgaXMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGhlcmVmb3JlIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MTAsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTUwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjI6NDY6NDMuNDYyMTgzNzAxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg0NDU0MjU5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQQ0lfRlVaWlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ2OjQ2LjA0NjY0NjJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA4ODc1MDc5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIEknbSB0aGlua2luZyB0aGVzZSB0aGluZ3MgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEtlcm5lbCBmb3IgYHN5el9wY2lgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIGlmIHRoZXJlJ3MgYW55IGV4aXN0aW5nIHJlZmVyZW5jZSBvciBpbXBsZW1lbnRhdGlvbiBvZiBzb21ldGhpbmcgbmFtZWQgYHN5el9wY2lgIHdpdGhpbiB0aGUga2VybmVsJ3Mgc291cmNlIGNvZGUuIFRoaXMgaXMgbGlrZWx5IGEga2V5IGZpcnN0IHN0ZXAgaW4gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgcG90ZW50aWFsIGludGVncmF0aW9uIHBvaW50cy4gSXQgY291bGQgYmUgYSBuZXcgZHJpdmVyLCBhIHN1YnN5c3RlbSBob29rLCBvciBwYXJ0IG9mIGZ1enppbmcgaW5mcmFzdHJ1Y3R1cmUuIFRoZSBuYW1lIGl0c2VsZiBzdWdnZXN0cyBhIGNvbm5lY3Rpb24gdG8gUENJLCBzbyBJJ2xsIGJlIHBhcnRpY3VsYXJseSBmb2N1c2VkIG9uIGFueXRoaW5nIHJlbGF0ZWQgdG8gUENJIGRldmljZSBoYW5kbGluZywgaW5pdGlhbGl6YXRpb24sIGFuZCBlcnJvciBwYXRocy4gSSdsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCBncmVwIHNraWxscyBhbmQgcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgaW5jbHVkZSBmaWxlcyBhbmQgZHJpdmVyIGRpcmVjdG9yaWVzLiBHb3R0YSBtb3ZlIGZhc3Q7IHRpbWUgaXMgbW9uZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NjYsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMjo0Njo1Mi4xMzUzOTk3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDkwMjY4MjMwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXpfcGNpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjI6NDY6NTQuNjI1Njc2NDcxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxMjMyNDQ4MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEcml2ZXIgUHJvYmUgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIGl0J3MgY2xlYXIgdGhlcmUncyBubyBnZW5lcmFsIFBDSSBpbmplY3Rpb24gbWVjaGFuaXNtIGF0IHRoZSBrZXJuZWwgbGV2ZWwuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIFdoaWNoIG1lYW5zIHRoYXQsIHNwZWNpZmljYWxseSwgbXkgZHJpdmVyIGZvciB0aGlzIFwiTXVjc2Ugcm5wZ2JlXCIgUENJIGRldmljZSBpc24ndCBnb2luZyB0byBnZXQgcHJvYmVkIGRpcmVjdGx5IGluIFFFTVUgdW5sZXNzLCBhbmQgdGhpcyBpcyB0aGUgY3J1eCBvZiB0aGUgcHJvYmxlbSwgUUVNVSdzIGFjdGl2ZWx5ICplbXVsYXRpbmcqIHRoYXQgcGFydGljdWxhciBoYXJkd2FyZS4gQW5kIGZyb20gd2hhdCBJIGtub3cgb2YgUUVNVSdzIGNhcGFiaWxpdGllcywgaXQgZGVmaW5pdGVseSAqZG9lc24ndCogZW11bGF0ZSB0aGUgTXVjc2Ugcm5wZ2JlLlxuXG5UaGVyZWZvcmUsIHVuZGVyIHRoZXNlIGNpcmN1bXN0YW5jZXMsIGl0J3MgdmlydHVhbGx5IGltcG9zc2libGUgZm9yIHRoaXMgc3BlY2lmaWMgc2VjdGlvbiBvZiBjb2RlIHRvIGdldCBleGVjdXRlZCB3aXRoaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhhdCBsaW5lIG9mIHJlYXNvbmluZyBzZWVtcyBwcmV0dHkgc29saWQuIEhvbGQgb24sIGNvdWxkIHRoaXMgZGV2aWNlIHBvdGVudGlhbGx5IGJlIHJlZ2lzdGVyZWQgYXMgYSBwbGF0Zm9ybSBkZXZpY2U/IE5vLCBpdCdzIGV4cGxpY2l0bHkgaWRlbnRpZmllZCBhcyBhIFBDSSBkZXZpY2UgdXNpbmcgYHN0cnVjdCBwY2lfZGV2ICpwZGV2YCwgc28gdGhhdCdzIGEgZGVhZCBlbmQuXG5cblJpZ2h0LCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgcm5wZ2JlX3Byb2JlYCBpcywgaW4gZmFjdCwgcmVnaXN0ZXJlZCBhcyBhIFBDSSBwcm9iZSBmdW5jdGlvbi4gVGhhdCdzIHRoZSBtb3N0IGNyaXRpY2FsIHBpZWNlIGhlcmUuIEknbGwgdmVyaWZ5IHRoaXMgdG8gY2VtZW50IHRoZSBjZXJ0YWludHkgb2YgdGhlIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGNvZGUgcGF0aCBiZWluZyBpbXBvc3NpYmxlIHRvIHJlYWNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTk4LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ3OjAyLjc0ODkyMzcyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDA1NTk3MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYz0zMDA9c3RhdGljIHZvaWQgcm5wZ2JlX3NodXRkb3duKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMzA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jOjMwNTpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgcm5wZ2JlX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0zMDYtXFx0Lm5hbWUgICAgID0gcm5wZ2JlX2RyaXZlcl9uYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMzEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jOjMxMzptb2R1bGVfcGNpX2RyaXZlcihybnBnYmVfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0zMTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ3OjAzLjE4OTUwODQxMVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTc3NzEzMTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQ6IFRoaXMgUENJIERyaXZlciBpcyBVbmZ1enphYmxlIGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIHNvIHRoaXMgaXMgYSBQQ0kgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYSBwaHlzaWNhbCBvbmUuIFNpbmNlIGl0J3MgaW50ZXJhY3RpbmcgZGlyZWN0bHkgd2l0aCBoYXJkd2FyZSwgaXQncyBpbW1lZGlhdGVseSBhcHBhcmVudCB0aGF0IGl0J3MgZ29pbmcgdG8gYmUgYSBwcm9ibGVtIGZvciBhbnkgZnV6emluZyBzZXR1cCByZWxpYW50IG9uIHZpcnR1YWxpemF0aW9uLCB3aGljaCwgb2YgY291cnNlLCBpcyB0aGUgdmFzdCBtYWpvcml0eSBvZiBvdXIgd29yay4gSXQncyBhIFBDSSBkcml2ZXIgd2l0aG91dCBRRU1VIGVtdWxhdGlvbiDigJMgYSByZWFsIHBoeXNpY2FsIGRldmljZS5cblxuTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBmYWN0IHRoYXQgaXQncyBhIHBoeXNpY2FsIE11Y3NlIGhhcmR3YXJlIGRyaXZlciBpcyB0aGUga2V5IGhlcmUuIE11Y3NlIGhhcmR3YXJlIGlzbid0IGVtdWxhdGVkIGluIGVpdGhlciBRRU1VIG9yIEdDRSwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgdGhlIGNvZGUgcGF0aHMgaW5hY2Nlc3NpYmxlIGluIGFueSB2aXJ0dWFsaXplZCBzZXR1cC5cblxuQnV0LCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIEkgbmVlZCB0byBtYWtlICphYnNvbHV0ZWx5KiBjZXJ0YWluIHRoZXJlJ3Mgbm8gd2F5IGFyb3VuZCB0aGlzLlxuXG5MZXQgbWUgdGhpbmvigKYgY291bGQgdGhpcyBkcml2ZXIgYmUgcmVhY2hlZCB0aHJvdWdoIHNvbWUgc29ydCBvZiBkdW1teSBQQ0kgZHJpdmVyPyBObywgdGhhdCdzIG5vdCBhIHZpYWJsZSBwYXRoLiBPa2F5LCB3aGF0IGFib3V0IHVzZXItc3BhY2UgUENJIGluamVjdGlvbj8gTm8sIHRoZSBrZXJuZWwncyBQQ0kgYnVzIGRvZXNuJ3QgYWxsb3cgaW5qZWN0aW5nIGFyYml0cmFyeSBkZXZpY2VzIGZyb20gdXNlciBzcGFjZSBsaWtlIHdlIGNhbiBkbyB3aXRoIFVTQiAoZHVtbXlfaGNkL3Jhdy1nYWRnZXQpLiBTbywgSSdtIGNvbmZpZGVudCB0aGF0IGl0J3MgdW5yZWFjaGFibGUgaW4gb3VyIHZpcnR1YWwgZnV6emluZyBlbnZpcm9ubWVudHMuXG5cblRoZXJlZm9yZSwgbXkgZGVjaXNpb24gaXMgZmluYWwuIEknbSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5NeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiBUaGUgcGF0Y2ggdG91Y2hlcyB0aGUgYHJucGdiZWAgZHJpdmVyLCBhIHBoeXNpY2FsIFBDSSBuZXR3b3JrIGRyaXZlciBmb3IgTXVjc2UgaGFyZHdhcmUuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwuIEdpdmVuIHRoaXMsIHRoZSBjb2RlIHBhdGhzIGFyZSwgcXVpdGUgc2ltcGx5LCBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHRoZSB0eXBpY2FsIHZpcnR1YWxpemVkIGZ1enppbmcgc2V0dXBzLlxuXG5UaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY4NCwiT3V0cHV0VG9rZW5zIjo4NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMjo0NzowOS4zNjcyMjM5OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBybnBnYmUgZHJpdmVyLCB3aGljaCBpcyBhIHBoeXNpY2FsIFBDSSBuZXR3b3JrIGRyaXZlciBmb3IgTXVjc2UgaGFyZHdhcmUuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcm5wZ2JlIGRyaXZlciwgd2hpY2ggaXMgYSBwaHlzaWNhbCBQQ0kgbmV0d29yayBkcml2ZXIgZm9yIE11Y3NlIGhhcmR3YXJlLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowm7vk2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-16 22:23:23 +0000 UTC FinishedAt: 2026-07-16 22:47:11 +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+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBybnBnYmUgZHJpdmVyLCB3aGljaCBpcyBhIHBoeXNpY2FsIFBDSSBuZXR3b3JrIGRyaXZlciBmb3IgTXVjc2UgaGFyZHdhcmUuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOWE3MGIwOGUyMjMyOWY3ZDMzNjQ0Y2Q1MmI2NjdiYjNmNDYxMjMyOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDE2IDIyOjQ1OjE0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmNcbmluZGV4IDcwYTJiMDA4MmJhODYxLi44MmEzZmJmYjNjMGFiZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uY1xuQEAgLTI0OSw4ICYjNDM7MjQ5LDYgQEAgc3RhdGljIHZvaWQgcm5wZ2JlX3JtX2FkYXB0ZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xuIFx0aW50IGVycjtcbiBcbi1cdGlmICghbXVjc2UpXG4tXHRcdHJldHVybjtcbiBcdG5ldGRldiA9IG11Y3NlLVx1MDAzZW5ldGRldjtcbiBcdHVucmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7XG4gXHRlcnIgPSBybnBnYmVfc2VuZF9ub3RpZnkoaHcsIGZhbHNlLCBtdWNzZV9md19wb3dlcnVwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMjo0NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcm5wZ2JlIGRyaXZlciwgd2hpY2ggaXMgYSBwaHlzaWNhbCBQQ0kgbmV0d29yayBkcml2ZXIgZm9yIE11Y3NlIGhhcmR3YXJlLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOWE3MGIwOGUyMjMyOWY3ZDMzNjQ0Y2Q1MmI2NjdiYjNmNDYxMjMyOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDE2IDIyOjQ1OjE0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYwppbmRleCA3MGEyYjAwODJiYTg2MS4uODJhM2ZiZmIzYzBhYmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jCkBAIC0yNDksOCAmIzQzOzI0OSw2IEBAIHN0YXRpYyB2b2lkIHJucGdiZV9ybV9hZGFwdGVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogCXN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7CiAJaW50IGVycjsKIAotCWlmICghbXVjc2UpCi0JCXJldHVybjsKIAluZXRkZXYgPSBtdWNzZS0mZ3Q7bmV0ZGV2OwogCXVucmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7CiAJZXJyID0gcm5wZ2JlX3NlbmRfbm90aWZ5KGh3LCBmYWxzZSwgbXVjc2VfZndfcG93ZXJ1cCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NzYKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgcmVtb3ZpbmcgYSBudWxsIGNoZWNrIGZvciBgbXVjc2VgIHdpdGhpbiB0aGUgYHJucGdiZV9ybV9hZGFwdGVyYCBmdW5jdGlvbiBpbiB0aGUgYHJucGdiZV9tYWluLmNgIGZpbGUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBtdWNzZWAgZXRoZXJuZXQgZHJpdmVyLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzLCAmIzM0O0htbSwgaW50ZXJlc3RpbmcuIFJlbW92aW5nIGEgbnVsbCBjaGVjayBpcyB1c3VhbGx5IGEgc2lnbiB0aGF0IGVpdGhlciB0aGUgY2hlY2sgd2FzIHVubmVjZXNzYXJ5IG9yIHRoYXQgdGhlIHZhcmlhYmxlIGlzIG5vdyBndWFyYW50ZWVkIHRvIGJlIHZhbGlkIGF0IHRoYXQgcG9pbnQuJiMzNDsKCk15IG5leHQgdGhvdWdodCBpcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHBvdGVudGlhbCBpbXBhY3QsIGVzcGVjaWFsbHkgc2luY2UgaXQmIzM5O3MgYSBkcml2ZXIuIElzIHRoaXMgZHJpdmVyIGV2ZW4gdXNlZCBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQ/IFRoYXQmIzM5O3MgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgZHJpdmVycy4gSXQmIzM5O3MgbGlzdGVkIGFzIGEgUENJIGRyaXZlci4gUmlnaHQsIGBybnBnYmVfcm1fYWRhcHRlcmAgaXMgYSBQQ0kgcmVtb3ZlIGZ1bmN0aW9uLgoKU28sIHRoZSBjcml0aWNhbCBwYXRoIGlzIGBybnBnYmVfbWFpbi5jYC4gVGhpcyBpcyB3aGVyZSBJJiMzOTtsbCBkaWcgZGVlcGVyIGFuZCBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBoYXBwZW5pbmcgYXJvdW5kIHRoYXQgcmVtb3ZlZCBudWxsIGNoZWNrLiBUaW1lIHRvIGdldCBpbnRvIHRoZSBjb2RlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JucGdiZV9ybV9hZGFwdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM9MTk3PXN0YXRpYyBpbnQgcm5wZ2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMjM5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MjQwOiAqIHJucGdiZV9ybV9hZGFwdGVyIC0gUmVtb3ZlIG5ldGRldiBmb3IgdGhpcyBtdWNzZSBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0MS0gKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0Mi0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MjQzOiAqIHJucGdiZV9ybV9hZGFwdGVyIHJlbW92ZSBhIG5ldGRldiBmb3IgdGhpcyBtdWNzZSBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0NC0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYzoyNDU6c3RhdGljIHZvaWQgcm5wZ2JlX3JtX2FkYXB0ZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNDYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jPTI2OT1zdGF0aWMgdm9pZCBybnBnYmVfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMjcwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jOjI3MTpcdHJucGdiZV9ybV9hZGFwdGVyKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMjcyLVx0cGNpX3JlbGVhc2VfbWVtX3JlZ2lvbnMocGRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjI6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc1OQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgYSBQQ0kgRGV2aWNlIERyaXZlcioqCgpBbHJpZ2h0LCBhICYjMzQ7bXVjc2Ugcm5wZ2JlJiMzNDsgUENJIGRldmljZSBkcml2ZXIsIGVoPyBIbW0sIHRoYXQgbmFtZSByaW5ncyBhIGJlbGwuLi4gYnV0IGlzIHRoaXMgYSByZWFsIHBpZWNlIG9mIGhhcmR3YXJlLCBvciBzb21ldGhpbmcgbW9yZSBvYnNjdXJlPyBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB2ZXJpZnkgaXRzIGV4aXN0ZW5jZSBhbmQgcHVycG9zZS4gVGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgYWx3YXlzIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiAoS2NvbmZpZykgZmlsZXMuIFRoZXkmIzM5O2xsIHRlbGwgbWUgaWYgdGhpcyBkcml2ZXIgaXMgYnVpbHQtaW4sIG1vZHVsYXIsIG9yIGlmIGl0JiMzOTtzIGV2ZW4gcGFydCBvZiB0aGUgbWFpbmxpbmUga2VybmVsIGF0IGFsbC4gRnJvbSB0aGVyZSwgSSBjYW4gYmVnaW4gdG8gdW5wYWNrIGl0cyBwdXJwb3NlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJOUEdCRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5ODAKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6CgoqKkRlYnVnZ2luZyB0aGUgS2NvbmZpZyBmb3IgTXVjc2UgRXRoZXJuZXQgRHJpdmVycyoqCgpSaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2h5IHRoaXMgRXRoZXJuZXQgZHJpdmVyIGlzbiYjMzk7dCBiZWhhdmluZyBhcyBleHBlY3RlZC4gTXkgZmlyc3QgaW5zdGluY3QsIGFuZCBob25lc3RseSwgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCwgaXMgd2l0aCB0aGUgS2NvbmZpZyBmaWxlLiBJJiMzOTttIHRoaW5raW5nIHRoZSBpc3N1ZSBpcyBwcm9iYWJseSByZWxhdGVkIHRvIGEgY29uZmlndXJhdGlvbiBvcHRpb24uIEdpdmVuIHRoaXMgaXMgbGlrZWx5IGEgZHJpdmVyIGZvciBhbiBNVUNTRS1iYXNlZCBFdGhlcm5ldCBjb250cm9sbGVyLCBJJiMzOTtsbCBuZWVkIHRvIGhlYWQgc3RyYWlnaHQgaW50byB0aGUgZHJpdmVyIGRpcmVjdG9yeS4gSSYjMzk7bSBiZXR0aW5nIHRoZSBLY29uZmlnIGZpbGUgaXMgbG9jYXRlZCBzb21ld2hlcmUgdW5kZXIgYGRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL2AsIG9yIHBlcmhhcHMgc29tZXRoaW5nIHZlcnkgc2ltaWxhci4gVGhhdCYjMzk7cyB0aGUgZmlyc3Qgc3RvcCBvbiB0aGlzIGRpYWdub3N0aWMgam91cm5leS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGVuYWJsZWQsIGRpc2FibGVkLCBhbmQgd2hhdCBtaWdodCBiZSBjb25mbGljdGluZy4gVGhhdCYjMzk7cyB3aGVyZSBJIHdpbGwgZmluZCB3aGF0IEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMjo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBudWxsLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O3JucGdiZSYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjI6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIzNgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipLY29uZmlnIEZpbGUgQ2hlY2s6IE11Y3NlIEV0aGVybmV0IERyaXZlcioqCgpPa2F5LCBJIG5lZWQgdG8gdmVyaWZ5IHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBNdWNzZSBFdGhlcm5ldCBkcml2ZXIuIFRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpcyB0aGUgS2NvbmZpZyBmaWxlIHdpdGhpbiB0aGUgZHJpdmVyJiMzOTtzIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBjaGVjayBpZiB0aGUgZmlsZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZ2AgZXhpc3RzLiBUaGlzIGZpbGUgdHlwaWNhbGx5IGhvdXNlcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBkcml2ZXIsIHdoaWNoIGlzIHdoZXJlIEkmIzM5O2QgbG9vayBmb3IgaXRzIHN0YXR1cy4gSXQgd2lsbCB0ZWxsIG1lIHdoZXRoZXIgdGhlIE11Y3NlIGRyaXZlciBjb25maWd1cmF0aW9uIGhhcyBiZWVuIGluY2x1ZGVkIGFzIGEgY2hvaWNlLCBvciBpZiBJIG5lZWQgdG8gZGlnIGRlZXBlci4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoZXRoZXIgdGhlIGNvbmZpZ3VyYXRpb24gY2hvaWNlcyBhcmUgYXZhaWxhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMjo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVUNTRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NTIKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBvZiB0aGUgdGhvdWdodCBwcm9jZXNzIGRlc2NyaWJlZDoKCioqRXhhbWluaW5nIHRoZSBSTlBHQkUgS2NvbmZpZyBGaWxlKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBSZW5lc2FzIFItQ2FyIE5ldHdvcmsgUHJvY2Vzc29yIEdpZ2FiaXQgRXRoZXJuZXQgKFJOUEdCRSkgZHJpdmVyLCBwYXJ0aWN1bGFybHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBNVUNTRSBmcmFtZXdvcmsuIEkmIzM5O20gYXNzdW1pbmcgd2UmIzM5O3JlIGxvb2tpbmcgdG8gbW9kaWZ5IG9yIHVuZGVyc3RhbmQgYSBwYXJ0aWN1bGFyIHNldHRpbmcsIHBlcmhhcHMgcmVsYXRlZCB0byBhIG5ldyBmZWF0dXJlLCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIG9yIGEgc3BlY2lmaWMgcGxhdGZvcm0gYWRhcHRhdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhlIGRlcGVuZGVuY2llcywgZGVmYXVsdCB2YWx1ZXMsIGFuZCBoZWxwIHRleHRzIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdmFyaW91cyBmZWF0dXJlcyBhcmUgZW5hYmxlZCBhbmQgZGlzYWJsZWQsIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0uIEkgd2lsbCBiZSBjb25zaWRlcmluZyB3aGF0IGlzIHJlbGV2YW50IHRvIHRoZSBzeXN0ZW0mIzM5O3MgY3VycmVudCBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MTYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5IG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBNVS1DU0UgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaW1lIHRvIHRha2UgYSBsb29rIGF0IHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGlzIGBtdWNzZWAgRXRoZXJuZXQgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLCBzbyBJJiMzOTttIGdvaW5nIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2U6IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnYC4gVGhpcyBmaWxlJiMzOTtzIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyIGZvciBob3cgdGhpcyBkcml2ZXIgaW50ZWdyYXRlcyB3aXRoaW4gdGhlIGJyb2FkZXIga2VybmVsIGNvbmZpZ3VyYXRpb24gc3lzdGVtLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgdmFyaW91cyBmZWF0dXJlcyBhbmQgZnVuY3Rpb25hbGl0aWVzIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyIGFuZCBob3cgdGhleSB0aWUgaW50byB0aGUgb3ZlcmFsbCBidWlsZCBwcm9jZXNzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogdGhlIG9wdGlvbnMgdGhhdCBjYW4gYmUgc2V0LCBhbnkgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIGFuZCBvdGhlciBkcml2ZXIgZGVwZW5kZW5jaWVzIHRoYXQgaXQgbWlnaHQgaGF2ZSwgYW5kIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBwcm9jZXNzb3Igb3IgZGV2aWNlIGZhbWlseSBkZXBlbmRlbmNpZXMuIFRoaXMgZmlsZSB3aWxsIHJlYWxseSBzZXQgdGhlIHN0YWdlIGZvciBob3cgdGhpcyBzcGVjaWZpYyBkcml2ZXIgYmVoYXZlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnICYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZzo2OmNvbmZpZyBORVRfVkVORE9SX01VQ1NFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnLTctXHRib29sIFwmIzM0O011Y3NlIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnPTE3PWlmIE5FVF9WRU5ET1JfTVVDU0VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWctMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnOjE5OmNvbmZpZyBNR0JFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7TXVjc2UoUikgMUdiRSBQQ0kgRXhwcmVzcyBhZGFwdGVycyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNDAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIEZpbGUqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgaW50byB0aGUgZGV0YWlscy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBjb25maWd1cmVkIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBNVS1DU0UgRXRoZXJuZXQgZHJpdmVyIGFyZSBkZWZpbmVkLCByaWdodD8gSSYjMzk7bSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHdoYXQgSSYjMzk7bGwgYmUgbG9va2luZyBmb3I6IHRoZSBjcml0aWNhbCBkZXBlbmRlbmNpZXMsIHRoZSBjb25maWd1cmFibGUgZmVhdHVyZXMsIGFuZCBob3cgZXZlcnl0aGluZyBpcyBzdHJ1Y3R1cmVkLiBUaGlzIEtjb25maWcgZmlsZSBpcyB0aGUgYmVkcm9jayBmb3IgY3VzdG9taXppbmcgdGhpcyBkcml2ZXIsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0IHRob3JvdWdobHkuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBzaWducyBvZiB0aGUgb3ZlcmFsbCBmdW5jdGlvbiBhbmQgd2hhdCBraW5kIG9mIGRldmljZXMgdGhlIGRyaXZlciBzdXBwb3J0cywgYW5kIGhvdyBpdCBjYW4gYmUgYWRhcHRlZC4gVGltZSB0byBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTXVjc2UgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTkVUX1ZFTkRPUl9NVUNTRVxuICAgNzpcdFx0Ym9vbCBcJiMzNDtNdWNzZSBkZXZpY2VzXCYjMzQ7XG4gICA4Olx0XHRkZWZhdWx0IHlcbiAgIDk6XHRcdGhlbHBcbiAgMTA6XHRcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBmcm9tIE11Y3NlKFIpLCBzYXkgWS5cbiAgMTE6XHRcbiAgMTI6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gIDEzOlx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGxcbiAgMTQ6XHRcdCAgdGhlIHF1ZXN0aW9ucyBhYm91dCBNdWNzZShSKSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbFxuICAxNTpcdFx0ICBiZSBhc2tlZCBmb3IgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxNjpcdFxuICAxNzpcdGlmIE5FVF9WRU5ET1JfTVVDU0VcbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgTUdCRVxuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7TXVjc2UoUikgMUdiRSBQQ0kgRXhwcmVzcyBhZGFwdGVycyBzdXBwb3J0XCYjMzQ7XG4gIDIxOlx0XHRkZXBlbmRzIG9uIFBDSVxuICAyMjpcdFx0aGVscFxuICAyMzpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNdWNzZShSKSAxR2JFIFBDSSBFeHByZXNzIGZhbWlseSBvZlxuICAyNDpcdFx0ICBhZGFwdGVycy5cbiAgMjU6XHRcbiAgMjY6XHRcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXG4gIDI3Olx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L211Y3NlL3JucGdiZS5yc3RcdTAwM2UuXG4gIDI4Olx0XG4gIDI5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcbiAgMzA6XHRcdCAgd2lsbCBiZSBjYWxsZWQgcm5wZ2JlLlxuICAzMTpcdFxuICAzMjpcdGVuZGlmICMgTkVUX1ZFTkRPUl9NVUNTRVxuICAzMzpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODEwCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUmVhY2hhYmlsaXR5IG9mIGEgUmVhbCBIYXJkd2FyZSBEcml2ZXIgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgZHJpdmVyIGNvbmZpZyBjYWxsZWQgYE1HQkVgLiBUaGUgcHJvbXB0IGlzIGFza2luZyBpZiBjb2RlIHBhdGhzIGluIHRoaXMgZHJpdmVyIGFyZSByZWFjaGFibGUgZm9yIGZ1enppbmcsIHNwZWNpZmljYWxseSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gSXQgc2VlbXMgdGhpcyBpcyBhIHJlYWwgaGFyZHdhcmUgZHJpdmVyLCAmIzM0O011Y3NlKFIpIDFHYkUgUENJIEV4cHJlc3MgYWRhcHRlcnMmIzM0OyB0byBiZSBwcmVjaXNlLgoKTXkgZmlyc3QgdGhvdWdodCBpcywgY2FuIHRoaXMgYmUgZnV6emVkIGF0IGFsbCwgY29uc2lkZXJpbmcgaXQmIzM5O3MgYSAqcmVhbCogaGFyZHdhcmUgZHJpdmVyPyBUeXBpY2FsbHksIHRoYXQmIzM5O3Mgbm90IGVhc2lseSBkb25lIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBTeXprYWxsZXIgaXMgdGhlIGtleSB0b29sIGhlcmUsIGJ1dCByZWFjaGluZyByZWFsIGhhcmR3YXJlIGRyaXZlcnMgaXMgbm90IGdlbmVyYWxseSBwb3NzaWJsZSB1bmxlc3MgdGhlcmUgaXMgc29mdHdhcmUgZW11bGF0aW9uLgoKTXkgbWluZCBrZWVwcyBjaXJjbGluZyBiYWNrIHRvIHN5emthbGxlciYjMzk7cyBjYXBhYmlsaXRpZXMuIERvZXMgaXQgaGF2ZSBhIGRlZGljYXRlZCBQQ0kgZnV6emluZyBtZWNoYW5pc20/IEkgcmVjYWxsIHRoYXQgc3l6a2FsbGVyIHN1cHBvcnRzIGZ1enppbmcgUENJIGRldmljZXMgdmlhIHZQQ0ksIHdoaWNoIGlzIGltcG9ydGFudCB0byBjb25zaWRlci4gSSYjMzk7bSB0cnlpbmcgdG8gcmVtZW1iZXIgdGhlIHNwZWNpZmljIHBzZXVkby1zeXNjYWxsIHN5emthbGxlciB1c2VzLCBvciBpZiB0aGVyZSYjMzk7cyBhIGdlbmVyaWMgUENJIGZ1enplci4gRG9lcyBpdCBoYXZlIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpX2RldmljZWA/IE9yIGRvZXMgaXQgcmVseSBvbiBpbmplY3Rpb24gdGhyb3VnaCBkZXZpY2VzIGxpa2UgZTEwMDBlPyBJJiMzOTttIGRyYXdpbmcgYSBibGFuay4gSXQgZG9lcyAqbm90KiBzZWVtIHRvIGhhdmUgYSBnZW5lcmljIGFwcHJvYWNoIHRoYXQgY292ZXJzIGFsbCBQQ0kgZHJpdmVycy4KCk5vdywgd2FpdC4uLnRoZSBwcm9tcHQgaGlnaGxpZ2h0cyBhIGNyaXRpY2FsIHBvaW50OiB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIHNvZnR3YXJlIGVtdWxhdGVkIGhhcmR3YXJlIChsaWtlIFVTQiBnYWRnZXQgb3IgbWFjODAyMTFfaHdzaW0pLCBhcmUgcmVsZXZhbnQuIFNpbmNlIE11Y3NlIGlzIGEgKnJlYWwqIFBDSSBkZXZpY2UsIG5vdCBlbXVsYXRlZCBieSBRRU1VLCB0aGF0JiMzOTtzIGEga2V5IGZhY3Rvci4gUUVNVSBkb2VzICpub3QqIGVtdWxhdGUgTXVjc2UgbmV0d29yayBjYXJkcywgYW5kIGl0JiMzOTtzIHVubGlrZWx5IGFueSBtYWluc3RyZWFtIHZpcnR1YWxpemF0aW9uIHBsYXRmb3JtIHdvdWxkLgoKSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUga2VybmVsIGl0c2VsZi4gSXMgdGhlcmUgYSBQQ0kgZnV6emluZyBtb2R1bGUgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBoZWxwPyBJJiMzOTttIGNoZWNraW5nIGZvciB0aGluZ3MgbGlrZSBgQ09ORklHX1BDSV9TWVNDQUxMYCwgYW5kIEkmIzM5O20gYWxzbyB0aGlua2luZyBpZiBzeXprYWxsZXIgdXNlcyBgdmZpb2AsIGJ1dCB0aGF0IGRvZXMgbm90IHNlZW0gdG8gYmUgdGhlIGNhc2UgZWl0aGVyLgoKU3l6a2FsbGVyIGRvZXMgc3VwcG9ydCBQQ0kgZnV6emluZywgYnV0IG5vdCBhIHNwZWNpZmljIGdlbmVyaWMgc3lzY2FsbCBsaWtlIGBzeXpfcGNpX2RldmljZWAuIEl0IHVzZXMgYSBkdW1teSBQQ0kgZGV2aWNlIG9yIHNvbWV0aGluZy4gSSBjYW4gc2VhcmNoIGluIHRoZSBzeXprYWxsZXIgY29kZSwgYnV0IEkgZG9uJiMzOTt0IGhhdmUgYWNjZXNzIHRvIGl0IGF0IHRoZSBtb21lbnQuCgpUaGUgcHJvbXB0IGVzc2VudGlhbGx5IHN0YXRlcyB0aGF0IGlmIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uLCB0aGVuIGl0IGlzICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsuIFNpbmNlIHRoaXMgaXMgYSByZWFsLCBub24tZW11bGF0ZWQgUENJIGRldmljZSwgaXQgaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB0aGUgY29udGV4dCBvZiBHQ0Ugb3IgUUVNVS4KSSYjMzk7bSBjb25zaWRlcmluZyB3aGV0aGVyIHRoZSBrZXJuZWwgaGFzIGEgZ2VuZXJpYyBQQ0kgZW5kcG9pbnQgZnJhbWV3b3JrIHRoYXQgKmNvdWxkKiBiZSB1c2VkIGZvciBlbXVsYXRpb24sIGJ1dCB0aGF0IHNlZW1zIHRoZSB3cm9uZyBwYXRoLiBObywgdGhlIFBDSSBlbmRwb2ludCBmcmFtZXdvcmsgaXMgZm9yIHJ1bm5pbmcgTGludXggb24gdGhlIGVuZHBvaW50IGRldmljZS4KCkZpbmFsbHksIEkmIzM5O20gdGhpbmtpbmcsIGRvZXMgc3l6a2FsbGVyIGhhdmUgYW4gYXBwcm9hY2ggdGhhdCBlbXVsYXRlcyBQQ0kgYnVzLCBzaW1pbGFyIHRvIHZoY2ksIG1hYzgwMjExX2h3c2ltLCB1aW5wdXQsIHZrbXMsIHZjYW4sIG9yIHNuZC1kdW1teT8gTm8uIFRoZXJlJiMzOTtzIG5vIGdlbmVyaWMgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgaW5qZWN0aW9uIGZvciBQQ0kgaW4gdGhlIHVwc3RyZWFtIGtlcm5lbCwgdW5sZXNzIGNvbnNpZGVyaW5nIG91dC1vZi10cmVlIHBhdGNoZXMuCgpJJiMzOTttIGNoZWNraW5nIGZvciB3aGV0aGVyIHRoZXJlIGlzIGFueSBQQ0kgZnV6emluZyBtb2R1bGUgaW4gdGhlIGtlcm5lbC4KCioqQ29uY2x1c2lvbjoqKiBHaXZlbiB0aGF0IE11Y3NlIGlzIGEgcmVhbCBoYXJkd2FyZSBkZXZpY2UgYW5kIGlzICpub3QqIGVtdWxhdGVkIGJ5IFFFTVUgb3IgR0NFLCBhbmQgdGhhdCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBmbGFncyB1bnJlYWNoYWJsZSBjb2RlIGluIHRoZXNlIGVudmlyb25tZW50cyBhcyAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7LCBJIGhhdmUgdG8gY29uY2x1ZGUgdGhhdCB0aGlzIGRyaXZlciBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0aGVyZWZvcmUgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0Oy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQQ0lfRlVaWiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3NjYKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhcyBpZiBJJiMzOTttIHRoaW5raW5nIHRoZXNlIHRoaW5ncyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgdGhlIEtlcm5lbCBmb3IgYHN5el9wY2lgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaWYgdGhlcmUmIzM5O3MgYW55IGV4aXN0aW5nIHJlZmVyZW5jZSBvciBpbXBsZW1lbnRhdGlvbiBvZiBzb21ldGhpbmcgbmFtZWQgYHN5el9wY2lgIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIHNvdXJjZSBjb2RlLiBUaGlzIGlzIGxpa2VseSBhIGtleSBmaXJzdCBzdGVwIGluIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIHBvdGVudGlhbCBpbnRlZ3JhdGlvbiBwb2ludHMuIEl0IGNvdWxkIGJlIGEgbmV3IGRyaXZlciwgYSBzdWJzeXN0ZW0gaG9vaywgb3IgcGFydCBvZiBmdXp6aW5nIGluZnJhc3RydWN0dXJlLiBUaGUgbmFtZSBpdHNlbGYgc3VnZ2VzdHMgYSBjb25uZWN0aW9uIHRvIFBDSSwgc28gSSYjMzk7bGwgYmUgcGFydGljdWxhcmx5IGZvY3VzZWQgb24gYW55dGhpbmcgcmVsYXRlZCB0byBQQ0kgZGV2aWNlIGhhbmRsaW5nLCBpbml0aWFsaXphdGlvbiwgYW5kIGVycm9yIHBhdGhzLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCBncmVwIHNraWxscyBhbmQgcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgaW5jbHVkZSBmaWxlcyBhbmQgZHJpdmVyIGRpcmVjdG9yaWVzLiBHb3R0YSBtb3ZlIGZhc3Q7IHRpbWUgaXMgbW9uZXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3l6X3BjaSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5OTgKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEcml2ZXIgUHJvYmUgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyBpdCYjMzk7cyBjbGVhciB0aGVyZSYjMzk7cyBubyBnZW5lcmFsIFBDSSBpbmplY3Rpb24gbWVjaGFuaXNtIGF0IHRoZSBrZXJuZWwgbGV2ZWwuIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBXaGljaCBtZWFucyB0aGF0LCBzcGVjaWZpY2FsbHksIG15IGRyaXZlciBmb3IgdGhpcyAmIzM0O011Y3NlIHJucGdiZSYjMzQ7IFBDSSBkZXZpY2UgaXNuJiMzOTt0IGdvaW5nIHRvIGdldCBwcm9iZWQgZGlyZWN0bHkgaW4gUUVNVSB1bmxlc3MsIGFuZCB0aGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBwcm9ibGVtLCBRRU1VJiMzOTtzIGFjdGl2ZWx5ICplbXVsYXRpbmcqIHRoYXQgcGFydGljdWxhciBoYXJkd2FyZS4gQW5kIGZyb20gd2hhdCBJIGtub3cgb2YgUUVNVSYjMzk7cyBjYXBhYmlsaXRpZXMsIGl0IGRlZmluaXRlbHkgKmRvZXNuJiMzOTt0KiBlbXVsYXRlIHRoZSBNdWNzZSBybnBnYmUuCgpUaGVyZWZvcmUsIHVuZGVyIHRoZXNlIGNpcmN1bXN0YW5jZXMsIGl0JiMzOTtzIHZpcnR1YWxseSBpbXBvc3NpYmxlIGZvciB0aGlzIHNwZWNpZmljIHNlY3Rpb24gb2YgY29kZSB0byBnZXQgZXhlY3V0ZWQgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoYXQgbGluZSBvZiByZWFzb25pbmcgc2VlbXMgcHJldHR5IHNvbGlkLiBIb2xkIG9uLCBjb3VsZCB0aGlzIGRldmljZSBwb3RlbnRpYWxseSBiZSByZWdpc3RlcmVkIGFzIGEgcGxhdGZvcm0gZGV2aWNlPyBObywgaXQmIzM5O3MgZXhwbGljaXRseSBpZGVudGlmaWVkIGFzIGEgUENJIGRldmljZSB1c2luZyBgc3RydWN0IHBjaV9kZXYgKnBkZXZgLCBzbyB0aGF0JiMzOTtzIGEgZGVhZCBlbmQuCgpSaWdodCwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYHJucGdiZV9wcm9iZWAgaXMsIGluIGZhY3QsIHJlZ2lzdGVyZWQgYXMgYSBQQ0kgcHJvYmUgZnVuY3Rpb24uIFRoYXQmIzM5O3MgdGhlIG1vc3QgY3JpdGljYWwgcGllY2UgaGVyZS4gSSYjMzk7bGwgdmVyaWZ5IHRoaXMgdG8gY2VtZW50IHRoZSBjZXJ0YWludHkgb2YgdGhlIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGNvZGUgcGF0aCBiZWluZyBpbXBvc3NpYmxlIHRvIHJlYWNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM9MzAwPXN0YXRpYyB2b2lkIHJucGdiZV9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0zMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYzozMDU6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJucGdiZV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0zMDYtXHQubmFtZSAgICAgPSBybnBnYmVfZHJpdmVyX25hbWUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMzEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MzEzOm1vZHVsZV9wY2lfZHJpdmVyKHJucGdiZV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMzE0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Njg0CgkJCQkJCQlvdXRwdXQ6IDg0CgkJCQkJCQl0aG91Z2h0czogMjQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IFRoaXMgUENJIERyaXZlciBpcyBVbmZ1enphYmxlIGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqCgpPa2F5LCBzbyB0aGlzIGlzIGEgUENJIGRyaXZlciwgc3BlY2lmaWNhbGx5IGEgcGh5c2ljYWwgb25lLiBTaW5jZSBpdCYjMzk7cyBpbnRlcmFjdGluZyBkaXJlY3RseSB3aXRoIGhhcmR3YXJlLCBpdCYjMzk7cyBpbW1lZGlhdGVseSBhcHBhcmVudCB0aGF0IGl0JiMzOTtzIGdvaW5nIHRvIGJlIGEgcHJvYmxlbSBmb3IgYW55IGZ1enppbmcgc2V0dXAgcmVsaWFudCBvbiB2aXJ0dWFsaXphdGlvbiwgd2hpY2gsIG9mIGNvdXJzZSwgaXMgdGhlIHZhc3QgbWFqb3JpdHkgb2Ygb3VyIHdvcmsuIEl0JiMzOTtzIGEgUENJIGRyaXZlciB3aXRob3V0IFFFTVUgZW11bGF0aW9uIOKAkyBhIHJlYWwgcGh5c2ljYWwgZGV2aWNlLgoKTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYSBwaHlzaWNhbCBNdWNzZSBoYXJkd2FyZSBkcml2ZXIgaXMgdGhlIGtleSBoZXJlLiBNdWNzZSBoYXJkd2FyZSBpc24mIzM5O3QgZW11bGF0ZWQgaW4gZWl0aGVyIFFFTVUgb3IgR0NFLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyB0aGUgY29kZSBwYXRocyBpbmFjY2Vzc2libGUgaW4gYW55IHZpcnR1YWxpemVkIHNldHVwLgoKQnV0LCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIEkgbmVlZCB0byBtYWtlICphYnNvbHV0ZWx5KiBjZXJ0YWluIHRoZXJlJiMzOTtzIG5vIHdheSBhcm91bmQgdGhpcy4KCkxldCBtZSB0aGlua+KApiBjb3VsZCB0aGlzIGRyaXZlciBiZSByZWFjaGVkIHRocm91Z2ggc29tZSBzb3J0IG9mIGR1bW15IFBDSSBkcml2ZXI/IE5vLCB0aGF0JiMzOTtzIG5vdCBhIHZpYWJsZSBwYXRoLiBPa2F5LCB3aGF0IGFib3V0IHVzZXItc3BhY2UgUENJIGluamVjdGlvbj8gTm8sIHRoZSBrZXJuZWwmIzM5O3MgUENJIGJ1cyBkb2VzbiYjMzk7dCBhbGxvdyBpbmplY3RpbmcgYXJiaXRyYXJ5IGRldmljZXMgZnJvbSB1c2VyIHNwYWNlIGxpa2Ugd2UgY2FuIGRvIHdpdGggVVNCIChkdW1teV9oY2QvcmF3LWdhZGdldCkuIFNvLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IGl0JiMzOTtzIHVucmVhY2hhYmxlIGluIG91ciB2aXJ0dWFsIGZ1enppbmcgZW52aXJvbm1lbnRzLgoKVGhlcmVmb3JlLCBteSBkZWNpc2lvbiBpcyBmaW5hbC4gSSYjMzk7bSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKTXkgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogVGhlIHBhdGNoIHRvdWNoZXMgdGhlIGBybnBnYmVgIGRyaXZlciwgYSBwaHlzaWNhbCBQQ0kgbmV0d29yayBkcml2ZXIgZm9yIE11Y3NlIGhhcmR3YXJlLiBUaGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLiBHaXZlbiB0aGlzLCB0aGUgY29kZSBwYXRocyBhcmUsIHF1aXRlIHNpbXBseSwgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB0aGUgdHlwaWNhbCB2aXJ0dWFsaXplZCBmdXp6aW5nIHNldHVwcy4KClRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBybnBnYmUgZHJpdmVyLCB3aGljaCBpcyBhIHBoeXNpY2FsIFBDSSBuZXR3b3JrIGRyaXZlciBmb3IgTXVjc2UgaGFyZHdhcmUuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcm5wZ2JlIGRyaXZlciwgd2hpY2ggaXMgYSBwaHlzaWNhbCBQQ0kgbmV0d29yayBkcml2ZXIgZm9yIE11Y3NlIGhhcmR3YXJlLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ1OjE2LjM4MTczNDY3OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjk4NTUzODczMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJucGdiZSBkcml2ZXIsIHdoaWNoIGlzIGEgcGh5c2ljYWwgUENJIG5ldHdvcmsgZHJpdmVyIGZvciBNdWNzZSBoYXJkd2FyZS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGluIFFFTVUgb3IgdGhlIGtlcm5lbCwgdGhlc2UgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ1OjE2LjM4MTc0MDgxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjc2MzU2MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5YTcwYjA4ZTIyMzI5ZjdkMzM2NDRjZDUyYjY2N2JiM2Y0NjEyMzI5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDE2IDIyOjQ1OjE0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmNcXG5pbmRleCA3MGEyYjAwODJiYTg2MS4uODJhM2ZiZmIzYzBhYmYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uY1xcbkBAIC0yNDksOCArMjQ5LDYgQEAgc3RhdGljIHZvaWQgcm5wZ2JlX3JtX2FkYXB0ZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRpZiAoIW11Y3NlKVxcbi1cXHRcXHRyZXR1cm47XFxuIFxcdG5ldGRldiA9IG11Y3NlLVxcdTAwM2VuZXRkZXY7XFxuIFxcdHVucmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7XFxuIFxcdGVyciA9IHJucGdiZV9zZW5kX25vdGlmeShodywgZmFsc2UsIG11Y3NlX2Z3X3Bvd2VydXApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMjo0NToxNy4wMDk5ODg2NjdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMjM1NzI3MjA2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJucGdiZSBkcml2ZXIsIHdoaWNoIGlzIGEgcGh5c2ljYWwgUENJIG5ldHdvcmsgZHJpdmVyIGZvciBNdWNzZSBoYXJkd2FyZS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGluIFFFTVUgb3IgdGhlIGtlcm5lbCwgdGhlc2UgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOWE3MGIwOGUyMjMyOWY3ZDMzNjQ0Y2Q1MmI2NjdiYjNmNDYxMjMyOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDE2IDIyOjQ1OjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uY1xuaW5kZXggNzBhMmIwMDgyYmE4NjEuLjgyYTNmYmZiM2MwYWJmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jXG5AQCAtMjQ5LDggKzI0OSw2IEBAIHN0YXRpYyB2b2lkIHJucGdiZV9ybV9hZGFwdGVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbiBcdGludCBlcnI7XG4gXG4tXHRpZiAoIW11Y3NlKVxuLVx0XHRyZXR1cm47XG4gXHRuZXRkZXYgPSBtdWNzZS1cdTAwM2VuZXRkZXY7XG4gXHR1bnJlZ2lzdGVyX25ldGRldihuZXRkZXYpO1xuIFx0ZXJyID0gcm5wZ2JlX3NlbmRfbm90aWZ5KGh3LCBmYWxzZSwgbXVjc2VfZndfcG93ZXJ1cCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMjo0NToxNy4wMDk5OTk2NTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTU5NjI1Mjg3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyByZW1vdmluZyBhIG51bGwgY2hlY2sgZm9yIGBtdWNzZWAgd2l0aGluIHRoZSBgcm5wZ2JlX3JtX2FkYXB0ZXJgIGZ1bmN0aW9uIGluIHRoZSBgcm5wZ2JlX21haW4uY2AgZmlsZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYG11Y3NlYCBldGhlcm5ldCBkcml2ZXIuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMsIFwiSG1tLCBpbnRlcmVzdGluZy4gUmVtb3ZpbmcgYSBudWxsIGNoZWNrIGlzIHVzdWFsbHkgYSBzaWduIHRoYXQgZWl0aGVyIHRoZSBjaGVjayB3YXMgdW5uZWNlc3Nhcnkgb3IgdGhhdCB0aGUgdmFyaWFibGUgaXMgbm93IGd1YXJhbnRlZWQgdG8gYmUgdmFsaWQgYXQgdGhhdCBwb2ludC5cIlxuXG5NeSBuZXh0IHRob3VnaHQgaXMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0LCBlc3BlY2lhbGx5IHNpbmNlIGl0J3MgYSBkcml2ZXIuIElzIHRoaXMgZHJpdmVyIGV2ZW4gdXNlZCBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQ/IFRoYXQncyBhbHdheXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBkcml2ZXJzLiBJdCdzIGxpc3RlZCBhcyBhIFBDSSBkcml2ZXIuIFJpZ2h0LCBgcm5wZ2JlX3JtX2FkYXB0ZXJgIGlzIGEgUENJIHJlbW92ZSBmdW5jdGlvbi5cblxuU28sIHRoZSBjcml0aWNhbCBwYXRoIGlzIGBybnBnYmVfbWFpbi5jYC4gVGhpcyBpcyB3aGVyZSBJJ2xsIGRpZyBkZWVwZXIgYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgaGFwcGVuaW5nIGFyb3VuZCB0aGF0IHJlbW92ZWQgbnVsbCBjaGVjay4gVGltZSB0byBnZXQgaW50byB0aGUgY29kZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MTg3NiwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ1OjI4LjYwNjI1MzkyOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODY2MDg1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJybnBnYmVfcm1fYWRhcHRlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYz0xOTc9c3RhdGljIGludCBybnBnYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTIzOS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYzoyNDA6ICogcm5wZ2JlX3JtX2FkYXB0ZXIgLSBSZW1vdmUgbmV0ZGV2IGZvciB0aGlzIG11Y3NlIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0MS0gKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNDItICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYzoyNDM6ICogcm5wZ2JlX3JtX2FkYXB0ZXIgcmVtb3ZlIGEgbmV0ZGV2IGZvciB0aGlzIG11Y3NlIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0NC0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MjQ1OnN0YXRpYyB2b2lkIHJucGdiZV9ybV9hZGFwdGVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYz0yNjk9c3RhdGljIHZvaWQgcm5wZ2JlX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNzAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jOjI3MTpcXHRybnBnYmVfcm1fYWRhcHRlcihwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNzItXFx0cGNpX3JlbGVhc2VfbWVtX3JlZ2lvbnMocGRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ1OjI4LjcwNDkyMDQzNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0OTQ5OTE4NTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBhIGZpcnN0LXBlcnNvbiBleHBlcnQgcGVyc3BlY3RpdmU6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIGEgUENJIERldmljZSBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBhIFwibXVjc2Ugcm5wZ2JlXCIgUENJIGRldmljZSBkcml2ZXIsIGVoPyBIbW0sIHRoYXQgbmFtZSByaW5ncyBhIGJlbGwuLi4gYnV0IGlzIHRoaXMgYSByZWFsIHBpZWNlIG9mIGhhcmR3YXJlLCBvciBzb21ldGhpbmcgbW9yZSBvYnNjdXJlPyBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB2ZXJpZnkgaXRzIGV4aXN0ZW5jZSBhbmQgcHVycG9zZS4gVGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgYWx3YXlzIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiAoS2NvbmZpZykgZmlsZXMuIFRoZXknbGwgdGVsbCBtZSBpZiB0aGlzIGRyaXZlciBpcyBidWlsdC1pbiwgbW9kdWxhciwgb3IgaWYgaXQncyBldmVuIHBhcnQgb2YgdGhlIG1haW5saW5lIGtlcm5lbCBhdCBhbGwuIEZyb20gdGhlcmUsIEkgY2FuIGJlZ2luIHRvIHVucGFjayBpdHMgcHVycG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1OSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ1OjQzLjY1NDg0MTUxMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTMxNTg2NDEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSTlBHQkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjI6NDU6NDQuMTA4MDEwMjEyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYxMjI3NzE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipEZWJ1Z2dpbmcgdGhlIEtjb25maWcgZm9yIE11Y3NlIEV0aGVybmV0IERyaXZlcnMqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2h5IHRoaXMgRXRoZXJuZXQgZHJpdmVyIGlzbid0IGJlaGF2aW5nIGFzIGV4cGVjdGVkLiBNeSBmaXJzdCBpbnN0aW5jdCwgYW5kIGhvbmVzdGx5LCB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0LCBpcyB3aXRoIHRoZSBLY29uZmlnIGZpbGUuIEknbSB0aGlua2luZyB0aGUgaXNzdWUgaXMgcHJvYmFibHkgcmVsYXRlZCB0byBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBHaXZlbiB0aGlzIGlzIGxpa2VseSBhIGRyaXZlciBmb3IgYW4gTVVDU0UtYmFzZWQgRXRoZXJuZXQgY29udHJvbGxlciwgSSdsbCBuZWVkIHRvIGhlYWQgc3RyYWlnaHQgaW50byB0aGUgZHJpdmVyIGRpcmVjdG9yeS4gSSdtIGJldHRpbmcgdGhlIEtjb25maWcgZmlsZSBpcyBsb2NhdGVkIHNvbWV3aGVyZSB1bmRlciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvYCwgb3IgcGVyaGFwcyBzb21ldGhpbmcgdmVyeSBzaW1pbGFyLiBUaGF0J3MgdGhlIGZpcnN0IHN0b3Agb24gdGhpcyBkaWFnbm9zdGljIGpvdXJuZXkuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCdzIGVuYWJsZWQsIGRpc2FibGVkLCBhbmQgd2hhdCBtaWdodCBiZSBjb25mbGljdGluZy4gVGhhdCdzIHdoZXJlIEkgd2lsbCBmaW5kIHdoYXQgSSBuZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTgwLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjI6NDU6NDYuNzIwMjg5NDgxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjAxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IG51bGwsXG4gIFwiU3ViZGlyc1wiOiBbXG4gICAgXCJybnBnYmVcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMjo0NTo0Ni43MjAzNTcyMjFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjg5MjQ2NjQ4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKktjb25maWcgRmlsZSBDaGVjazogTXVjc2UgRXRoZXJuZXQgRHJpdmVyKipcblxuT2theSwgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgTXVjc2UgRXRoZXJuZXQgZHJpdmVyLiBUaGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgaXMgdGhlIEtjb25maWcgZmlsZSB3aXRoaW4gdGhlIGRyaXZlcidzIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBjaGVjayBpZiB0aGUgZmlsZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZ2AgZXhpc3RzLiBUaGlzIGZpbGUgdHlwaWNhbGx5IGhvdXNlcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBkcml2ZXIsIHdoaWNoIGlzIHdoZXJlIEknZCBsb29rIGZvciBpdHMgc3RhdHVzLiBJdCB3aWxsIHRlbGwgbWUgd2hldGhlciB0aGUgTXVjc2UgZHJpdmVyIGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gaW5jbHVkZWQgYXMgYSBjaG9pY2UsIG9yIGlmIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIHRoZSBjb25maWd1cmF0aW9uIGNob2ljZXMgYXJlIGF2YWlsYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIzNiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMjo0NTo1OS42MTI4MjU3NDZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzMDg3NzY4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVVDU0VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMjo0NTo1OS43MDU5MjEzMDRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAxMzUyMDA1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MgZGVzY3JpYmVkOlxuXG4qKkV4YW1pbmluZyB0aGUgUk5QR0JFIEtjb25maWcgRmlsZSoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFJlbmVzYXMgUi1DYXIgTmV0d29yayBQcm9jZXNzb3IgR2lnYWJpdCBFdGhlcm5ldCAoUk5QR0JFKSBkcml2ZXIsIHBhcnRpY3VsYXJseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIE1VQ1NFIGZyYW1ld29yay4gSSdtIGFzc3VtaW5nIHdlJ3JlIGxvb2tpbmcgdG8gbW9kaWZ5IG9yIHVuZGVyc3RhbmQgYSBwYXJ0aWN1bGFyIHNldHRpbmcsIHBlcmhhcHMgcmVsYXRlZCB0byBhIG5ldyBmZWF0dXJlLCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIG9yIGEgc3BlY2lmaWMgcGxhdGZvcm0gYWRhcHRhdGlvbi4gSSdsbCBiZSBsb29raW5nIGZvciB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgYW5kIGhlbHAgdGV4dHMgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB2YXJpb3VzIGZlYXR1cmVzIGFyZSBlbmFibGVkIGFuZCBkaXNhYmxlZCwgYW5kIGhvdyB0aGV5IGludGVyYWN0IHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gSSB3aWxsIGJlIGNvbnNpZGVyaW5nIHdoYXQgaXMgcmVsZXZhbnQgdG8gdGhlIHN5c3RlbSdzIGN1cnJlbnQgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ1MiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ2OjAyLjcxOTQ0MzQyNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTYxODYwNTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ2OjAyLjgxNTYzNTMyM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjI2MjM0NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSBvZiB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVS1DU0UgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gVGltZSB0byB0YWtlIGEgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBgbXVjc2VgIEV0aGVybmV0IGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJ1aWxkIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcywgc28gSSdtIGdvaW5nIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2U6IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnYC4gVGhpcyBmaWxlJ3MgdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIgZm9yIGhvdyB0aGlzIGRyaXZlciBpbnRlZ3JhdGVzIHdpdGhpbiB0aGUgYnJvYWRlciBrZXJuZWwgY29uZmlndXJhdGlvbiBzeXN0ZW0uIEkgd2FudCB0byBzZWUgaG93IHRoZSB2YXJpb3VzIGZlYXR1cmVzIGFuZCBmdW5jdGlvbmFsaXRpZXMgYXJlIGV4cG9zZWQgdG8gdGhlIHVzZXIgYW5kIGhvdyB0aGV5IHRpZSBpbnRvIHRoZSBvdmVyYWxsIGJ1aWxkIHByb2Nlc3MuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6IHRoZSBvcHRpb25zIHRoYXQgY2FuIGJlIHNldCwgYW55IGhhcmR3YXJlIGRlcGVuZGVuY2llcyBhbmQgb3RoZXIgZHJpdmVyIGRlcGVuZGVuY2llcyB0aGF0IGl0IG1pZ2h0IGhhdmUsIGFuZCBpZiB0aGVyZSBhcmUgc3BlY2lmaWMgcHJvY2Vzc29yIG9yIGRldmljZSBmYW1pbHkgZGVwZW5kZW5jaWVzLiBUaGlzIGZpbGUgd2lsbCByZWFsbHkgc2V0IHRoZSBzdGFnZSBmb3IgaG93IHRoaXMgc3BlY2lmaWMgZHJpdmVyIGJlaGF2ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MTYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMjo0NjoxMC40NDE4NzI1MTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NjU5MzAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWc6Njpjb25maWcgTkVUX1ZFTkRPUl9NVUNTRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWctNy1cXHRib29sIFxcXCJNdWNzZSBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZz0xNz1pZiBORVRfVkVORE9SX01VQ1NFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnOjE5OmNvbmZpZyBNR0JFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiTXVjc2UoUikgMUdiRSBQQ0kgRXhwcmVzcyBhZGFwdGVycyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMjo0NjoxMC45MDg0NzAzMTRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY5ODY0MTAwNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIEZpbGUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgY29uZmlndXJlZCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgTVUtQ1NFIEV0aGVybmV0IGRyaXZlciBhcmUgZGVmaW5lZCwgcmlnaHQ/IEknbSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHdoYXQgSSdsbCBiZSBsb29raW5nIGZvcjogdGhlIGNyaXRpY2FsIGRlcGVuZGVuY2llcywgdGhlIGNvbmZpZ3VyYWJsZSBmZWF0dXJlcywgYW5kIGhvdyBldmVyeXRoaW5nIGlzIHN0cnVjdHVyZWQuIFRoaXMgS2NvbmZpZyBmaWxlIGlzIHRoZSBiZWRyb2NrIGZvciBjdXN0b21pemluZyB0aGlzIGRyaXZlciwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXQgdGhvcm91Z2hseS4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgc2lnbnMgb2YgdGhlIG92ZXJhbGwgZnVuY3Rpb24gYW5kIHdoYXQga2luZCBvZiBkZXZpY2VzIHRoZSBkcml2ZXIgc3VwcG9ydHMsIGFuZCBob3cgaXQgY2FuIGJlIGFkYXB0ZWQuIFRpbWUgdG8gc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTQwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjI6NDY6MjcuODk0ODgyMTE4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE11Y3NlIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE5FVF9WRU5ET1JfTVVDU0VcXG4gICA3OlxcdFxcdGJvb2wgXFxcIk11Y3NlIGRldmljZXNcXFwiXFxuICAgODpcXHRcXHRkZWZhdWx0IHlcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBmcm9tIE11Y3NlKFIpLCBzYXkgWS5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJ3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxcbiAgMTM6XFx0XFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsXFxuICAxNDpcXHRcXHQgIHRoZSBxdWVzdGlvbnMgYWJvdXQgTXVjc2UoUikgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGxcXG4gIDE1OlxcdFxcdCAgYmUgYXNrZWQgZm9yIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0aWYgTkVUX1ZFTkRPUl9NVUNTRVxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTUdCRVxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIk11Y3NlKFIpIDFHYkUgUENJIEV4cHJlc3MgYWRhcHRlcnMgc3VwcG9ydFxcXCJcXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAyMjpcXHRcXHRoZWxwXFxuICAyMzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE11Y3NlKFIpIDFHYkUgUENJIEV4cHJlc3MgZmFtaWx5IG9mXFxuICAyNDpcXHRcXHQgIGFkYXB0ZXJzLlxcbiAgMjU6XFx0XFxuICAyNjpcXHRcXHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxcbiAgMjc6XFx0XFx0ICBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlLnJzdFxcdTAwM2UuXFxuICAyODpcXHRcXG4gIDI5OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbiAgMzA6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBybnBnYmUuXFxuICAzMTpcXHRcXG4gIDMyOlxcdGVuZGlmICMgTkVUX1ZFTkRPUl9NVUNTRVxcbiAgMzM6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ2OjI3Ljg5NDk0NDM0OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTU2NzIzNjc4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUmVhY2hhYmlsaXR5IG9mIGEgUmVhbCBIYXJkd2FyZSBEcml2ZXIgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIGRyaXZlciBjb25maWcgY2FsbGVkIGBNR0JFYC4gVGhlIHByb21wdCBpcyBhc2tpbmcgaWYgY29kZSBwYXRocyBpbiB0aGlzIGRyaXZlciBhcmUgcmVhY2hhYmxlIGZvciBmdXp6aW5nLCBzcGVjaWZpY2FsbHkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIEl0IHNlZW1zIHRoaXMgaXMgYSByZWFsIGhhcmR3YXJlIGRyaXZlciwgXCJNdWNzZShSKSAxR2JFIFBDSSBFeHByZXNzIGFkYXB0ZXJzXCIgdG8gYmUgcHJlY2lzZS5cblxuTXkgZmlyc3QgdGhvdWdodCBpcywgY2FuIHRoaXMgYmUgZnV6emVkIGF0IGFsbCwgY29uc2lkZXJpbmcgaXQncyBhICpyZWFsKiBoYXJkd2FyZSBkcml2ZXI/IFR5cGljYWxseSwgdGhhdCdzIG5vdCBlYXNpbHkgZG9uZSB3aXRoaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gU3l6a2FsbGVyIGlzIHRoZSBrZXkgdG9vbCBoZXJlLCBidXQgcmVhY2hpbmcgcmVhbCBoYXJkd2FyZSBkcml2ZXJzIGlzIG5vdCBnZW5lcmFsbHkgcG9zc2libGUgdW5sZXNzIHRoZXJlIGlzIHNvZnR3YXJlIGVtdWxhdGlvbi5cblxuTXkgbWluZCBrZWVwcyBjaXJjbGluZyBiYWNrIHRvIHN5emthbGxlcidzIGNhcGFiaWxpdGllcy4gRG9lcyBpdCBoYXZlIGEgZGVkaWNhdGVkIFBDSSBmdXp6aW5nIG1lY2hhbmlzbT8gSSByZWNhbGwgdGhhdCBzeXprYWxsZXIgc3VwcG9ydHMgZnV6emluZyBQQ0kgZGV2aWNlcyB2aWEgdlBDSSwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIGNvbnNpZGVyLiBJJ20gdHJ5aW5nIHRvIHJlbWVtYmVyIHRoZSBzcGVjaWZpYyBwc2V1ZG8tc3lzY2FsbCBzeXprYWxsZXIgdXNlcywgb3IgaWYgdGhlcmUncyBhIGdlbmVyaWMgUENJIGZ1enplci4gRG9lcyBpdCBoYXZlIHNvbWV0aGluZyBsaWtlIGBzeXpfcGNpX2RldmljZWA/IE9yIGRvZXMgaXQgcmVseSBvbiBpbmplY3Rpb24gdGhyb3VnaCBkZXZpY2VzIGxpa2UgZTEwMDBlPyBJJ20gZHJhd2luZyBhIGJsYW5rLiBJdCBkb2VzICpub3QqIHNlZW0gdG8gaGF2ZSBhIGdlbmVyaWMgYXBwcm9hY2ggdGhhdCBjb3ZlcnMgYWxsIFBDSSBkcml2ZXJzLlxuXG5Ob3csIHdhaXQuLi50aGUgcHJvbXB0IGhpZ2hsaWdodHMgYSBjcml0aWNhbCBwb2ludDogdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBzb2Z0d2FyZSBlbXVsYXRlZCBoYXJkd2FyZSAobGlrZSBVU0IgZ2FkZ2V0IG9yIG1hYzgwMjExX2h3c2ltKSwgYXJlIHJlbGV2YW50LiBTaW5jZSBNdWNzZSBpcyBhICpyZWFsKiBQQ0kgZGV2aWNlLCBub3QgZW11bGF0ZWQgYnkgUUVNVSwgdGhhdCdzIGEga2V5IGZhY3Rvci4gUUVNVSBkb2VzICpub3QqIGVtdWxhdGUgTXVjc2UgbmV0d29yayBjYXJkcywgYW5kIGl0J3MgdW5saWtlbHkgYW55IG1haW5zdHJlYW0gdmlydHVhbGl6YXRpb24gcGxhdGZvcm0gd291bGQuXG5cbkknbSB0aGlua2luZyBhYm91dCB0aGUga2VybmVsIGl0c2VsZi4gSXMgdGhlcmUgYSBQQ0kgZnV6emluZyBtb2R1bGUgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBoZWxwPyBJJ20gY2hlY2tpbmcgZm9yIHRoaW5ncyBsaWtlIGBDT05GSUdfUENJX1NZU0NBTExgLCBhbmQgSSdtIGFsc28gdGhpbmtpbmcgaWYgc3l6a2FsbGVyIHVzZXMgYHZmaW9gLCBidXQgdGhhdCBkb2VzIG5vdCBzZWVtIHRvIGJlIHRoZSBjYXNlIGVpdGhlci5cblxuU3l6a2FsbGVyIGRvZXMgc3VwcG9ydCBQQ0kgZnV6emluZywgYnV0IG5vdCBhIHNwZWNpZmljIGdlbmVyaWMgc3lzY2FsbCBsaWtlIGBzeXpfcGNpX2RldmljZWAuIEl0IHVzZXMgYSBkdW1teSBQQ0kgZGV2aWNlIG9yIHNvbWV0aGluZy4gSSBjYW4gc2VhcmNoIGluIHRoZSBzeXprYWxsZXIgY29kZSwgYnV0IEkgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gaXQgYXQgdGhlIG1vbWVudC5cblxuVGhlIHByb21wdCBlc3NlbnRpYWxseSBzdGF0ZXMgdGhhdCBpZiBjb2RlIGlzIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgZXZlbiB3aXRoIHNvZnR3YXJlIGVtdWxhdGlvbiwgdGhlbiBpdCBpcyBcIldvcnRoRnV6emluZz1mYWxzZVwiLiBTaW5jZSB0aGlzIGlzIGEgcmVhbCwgbm9uLWVtdWxhdGVkIFBDSSBkZXZpY2UsIGl0IGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdGhlIGNvbnRleHQgb2YgR0NFIG9yIFFFTVUuXG5JJ20gY29uc2lkZXJpbmcgd2hldGhlciB0aGUga2VybmVsIGhhcyBhIGdlbmVyaWMgUENJIGVuZHBvaW50IGZyYW1ld29yayB0aGF0ICpjb3VsZCogYmUgdXNlZCBmb3IgZW11bGF0aW9uLCBidXQgdGhhdCBzZWVtcyB0aGUgd3JvbmcgcGF0aC4gTm8sIHRoZSBQQ0kgZW5kcG9pbnQgZnJhbWV3b3JrIGlzIGZvciBydW5uaW5nIExpbnV4IG9uIHRoZSBlbmRwb2ludCBkZXZpY2UuXG5cbkZpbmFsbHksIEknbSB0aGlua2luZywgZG9lcyBzeXprYWxsZXIgaGF2ZSBhbiBhcHByb2FjaCB0aGF0IGVtdWxhdGVzIFBDSSBidXMsIHNpbWlsYXIgdG8gdmhjaSwgbWFjODAyMTFfaHdzaW0sIHVpbnB1dCwgdmttcywgdmNhbiwgb3Igc25kLWR1bW15PyBOby4gVGhlcmUncyBubyBnZW5lcmljIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGluamVjdGlvbiBmb3IgUENJIGluIHRoZSB1cHN0cmVhbSBrZXJuZWwsIHVubGVzcyBjb25zaWRlcmluZyBvdXQtb2YtdHJlZSBwYXRjaGVzLlxuXG5JJ20gY2hlY2tpbmcgZm9yIHdoZXRoZXIgdGhlcmUgaXMgYW55IFBDSSBmdXp6aW5nIG1vZHVsZSBpbiB0aGUga2VybmVsLlxuXG4qKkNvbmNsdXNpb246KiogR2l2ZW4gdGhhdCBNdWNzZSBpcyBhIHJlYWwgaGFyZHdhcmUgZGV2aWNlIGFuZCBpcyAqbm90KiBlbXVsYXRlZCBieSBRRU1VIG9yIEdDRSwgYW5kIHRoYXQgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgZmxhZ3MgdW5yZWFjaGFibGUgY29kZSBpbiB0aGVzZSBlbnZpcm9ubWVudHMgYXMgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIiwgSSBoYXZlIHRvIGNvbmNsdWRlIHRoYXQgdGhpcyBkcml2ZXIgaXMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGhlcmVmb3JlIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MTAsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTUwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjI6NDY6NDMuNDYyMTgzNzAxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg0NDU0MjU5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQQ0lfRlVaWlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ2OjQ2LjA0NjY0NjJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA4ODc1MDc5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIEknbSB0aGlua2luZyB0aGVzZSB0aGluZ3MgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEtlcm5lbCBmb3IgYHN5el9wY2lgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIGlmIHRoZXJlJ3MgYW55IGV4aXN0aW5nIHJlZmVyZW5jZSBvciBpbXBsZW1lbnRhdGlvbiBvZiBzb21ldGhpbmcgbmFtZWQgYHN5el9wY2lgIHdpdGhpbiB0aGUga2VybmVsJ3Mgc291cmNlIGNvZGUuIFRoaXMgaXMgbGlrZWx5IGEga2V5IGZpcnN0IHN0ZXAgaW4gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgcG90ZW50aWFsIGludGVncmF0aW9uIHBvaW50cy4gSXQgY291bGQgYmUgYSBuZXcgZHJpdmVyLCBhIHN1YnN5c3RlbSBob29rLCBvciBwYXJ0IG9mIGZ1enppbmcgaW5mcmFzdHJ1Y3R1cmUuIFRoZSBuYW1lIGl0c2VsZiBzdWdnZXN0cyBhIGNvbm5lY3Rpb24gdG8gUENJLCBzbyBJJ2xsIGJlIHBhcnRpY3VsYXJseSBmb2N1c2VkIG9uIGFueXRoaW5nIHJlbGF0ZWQgdG8gUENJIGRldmljZSBoYW5kbGluZywgaW5pdGlhbGl6YXRpb24sIGFuZCBlcnJvciBwYXRocy4gSSdsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCBncmVwIHNraWxscyBhbmQgcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgaW5jbHVkZSBmaWxlcyBhbmQgZHJpdmVyIGRpcmVjdG9yaWVzLiBHb3R0YSBtb3ZlIGZhc3Q7IHRpbWUgaXMgbW9uZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NjYsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMjo0Njo1Mi4xMzUzOTk3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDkwMjY4MjMwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzeXpfcGNpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjI6NDY6NTQuNjI1Njc2NDcxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxMjMyNDQ4MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEcml2ZXIgUHJvYmUgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIGl0J3MgY2xlYXIgdGhlcmUncyBubyBnZW5lcmFsIFBDSSBpbmplY3Rpb24gbWVjaGFuaXNtIGF0IHRoZSBrZXJuZWwgbGV2ZWwuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIFdoaWNoIG1lYW5zIHRoYXQsIHNwZWNpZmljYWxseSwgbXkgZHJpdmVyIGZvciB0aGlzIFwiTXVjc2Ugcm5wZ2JlXCIgUENJIGRldmljZSBpc24ndCBnb2luZyB0byBnZXQgcHJvYmVkIGRpcmVjdGx5IGluIFFFTVUgdW5sZXNzLCBhbmQgdGhpcyBpcyB0aGUgY3J1eCBvZiB0aGUgcHJvYmxlbSwgUUVNVSdzIGFjdGl2ZWx5ICplbXVsYXRpbmcqIHRoYXQgcGFydGljdWxhciBoYXJkd2FyZS4gQW5kIGZyb20gd2hhdCBJIGtub3cgb2YgUUVNVSdzIGNhcGFiaWxpdGllcywgaXQgZGVmaW5pdGVseSAqZG9lc24ndCogZW11bGF0ZSB0aGUgTXVjc2Ugcm5wZ2JlLlxuXG5UaGVyZWZvcmUsIHVuZGVyIHRoZXNlIGNpcmN1bXN0YW5jZXMsIGl0J3MgdmlydHVhbGx5IGltcG9zc2libGUgZm9yIHRoaXMgc3BlY2lmaWMgc2VjdGlvbiBvZiBjb2RlIHRvIGdldCBleGVjdXRlZCB3aXRoaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhhdCBsaW5lIG9mIHJlYXNvbmluZyBzZWVtcyBwcmV0dHkgc29saWQuIEhvbGQgb24sIGNvdWxkIHRoaXMgZGV2aWNlIHBvdGVudGlhbGx5IGJlIHJlZ2lzdGVyZWQgYXMgYSBwbGF0Zm9ybSBkZXZpY2U/IE5vLCBpdCdzIGV4cGxpY2l0bHkgaWRlbnRpZmllZCBhcyBhIFBDSSBkZXZpY2UgdXNpbmcgYHN0cnVjdCBwY2lfZGV2ICpwZGV2YCwgc28gdGhhdCdzIGEgZGVhZCBlbmQuXG5cblJpZ2h0LCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgcm5wZ2JlX3Byb2JlYCBpcywgaW4gZmFjdCwgcmVnaXN0ZXJlZCBhcyBhIFBDSSBwcm9iZSBmdW5jdGlvbi4gVGhhdCdzIHRoZSBtb3N0IGNyaXRpY2FsIHBpZWNlIGhlcmUuIEknbGwgdmVyaWZ5IHRoaXMgdG8gY2VtZW50IHRoZSBjZXJ0YWludHkgb2YgdGhlIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGNvZGUgcGF0aCBiZWluZyBpbXBvc3NpYmxlIHRvIHJlYWNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTk4LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ3OjAyLjc0ODkyMzcyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDA1NTk3MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYz0zMDA9c3RhdGljIHZvaWQgcm5wZ2JlX3NodXRkb3duKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMzA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jOjMwNTpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgcm5wZ2JlX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0zMDYtXFx0Lm5hbWUgICAgID0gcm5wZ2JlX2RyaXZlcl9uYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMzEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jOjMxMzptb2R1bGVfcGNpX2RyaXZlcihybnBnYmVfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0zMTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIyOjQ3OjAzLjE4OTUwODQxMVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTc3NzEzMTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQ6IFRoaXMgUENJIERyaXZlciBpcyBVbmZ1enphYmxlIGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIHNvIHRoaXMgaXMgYSBQQ0kgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYSBwaHlzaWNhbCBvbmUuIFNpbmNlIGl0J3MgaW50ZXJhY3RpbmcgZGlyZWN0bHkgd2l0aCBoYXJkd2FyZSwgaXQncyBpbW1lZGlhdGVseSBhcHBhcmVudCB0aGF0IGl0J3MgZ29pbmcgdG8gYmUgYSBwcm9ibGVtIGZvciBhbnkgZnV6emluZyBzZXR1cCByZWxpYW50IG9uIHZpcnR1YWxpemF0aW9uLCB3aGljaCwgb2YgY291cnNlLCBpcyB0aGUgdmFzdCBtYWpvcml0eSBvZiBvdXIgd29yay4gSXQncyBhIFBDSSBkcml2ZXIgd2l0aG91dCBRRU1VIGVtdWxhdGlvbiDigJMgYSByZWFsIHBoeXNpY2FsIGRldmljZS5cblxuTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBmYWN0IHRoYXQgaXQncyBhIHBoeXNpY2FsIE11Y3NlIGhhcmR3YXJlIGRyaXZlciBpcyB0aGUga2V5IGhlcmUuIE11Y3NlIGhhcmR3YXJlIGlzbid0IGVtdWxhdGVkIGluIGVpdGhlciBRRU1VIG9yIEdDRSwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgdGhlIGNvZGUgcGF0aHMgaW5hY2Nlc3NpYmxlIGluIGFueSB2aXJ0dWFsaXplZCBzZXR1cC5cblxuQnV0LCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIEkgbmVlZCB0byBtYWtlICphYnNvbHV0ZWx5KiBjZXJ0YWluIHRoZXJlJ3Mgbm8gd2F5IGFyb3VuZCB0aGlzLlxuXG5MZXQgbWUgdGhpbmvigKYgY291bGQgdGhpcyBkcml2ZXIgYmUgcmVhY2hlZCB0aHJvdWdoIHNvbWUgc29ydCBvZiBkdW1teSBQQ0kgZHJpdmVyPyBObywgdGhhdCdzIG5vdCBhIHZpYWJsZSBwYXRoLiBPa2F5LCB3aGF0IGFib3V0IHVzZXItc3BhY2UgUENJIGluamVjdGlvbj8gTm8sIHRoZSBrZXJuZWwncyBQQ0kgYnVzIGRvZXNuJ3QgYWxsb3cgaW5qZWN0aW5nIGFyYml0cmFyeSBkZXZpY2VzIGZyb20gdXNlciBzcGFjZSBsaWtlIHdlIGNhbiBkbyB3aXRoIFVTQiAoZHVtbXlfaGNkL3Jhdy1nYWRnZXQpLiBTbywgSSdtIGNvbmZpZGVudCB0aGF0IGl0J3MgdW5yZWFjaGFibGUgaW4gb3VyIHZpcnR1YWwgZnV6emluZyBlbnZpcm9ubWVudHMuXG5cblRoZXJlZm9yZSwgbXkgZGVjaXNpb24gaXMgZmluYWwuIEknbSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5NeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiBUaGUgcGF0Y2ggdG91Y2hlcyB0aGUgYHJucGdiZWAgZHJpdmVyLCBhIHBoeXNpY2FsIFBDSSBuZXR3b3JrIGRyaXZlciBmb3IgTXVjc2UgaGFyZHdhcmUuIFRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwuIEdpdmVuIHRoaXMsIHRoZSBjb2RlIHBhdGhzIGFyZSwgcXVpdGUgc2ltcGx5LCBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHRoZSB0eXBpY2FsIHZpcnR1YWxpemVkIGZ1enppbmcgc2V0dXBzLlxuXG5UaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY4NCwiT3V0cHV0VG9rZW5zIjo4NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMjo0NzowOS4zNjcyMjM5OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBybnBnYmUgZHJpdmVyLCB3aGljaCBpcyBhIHBoeXNpY2FsIFBDSSBuZXR3b3JrIGRyaXZlciBmb3IgTXVjc2UgaGFyZHdhcmUuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBpbiBRRU1VIG9yIHRoZSBrZXJuZWwsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcm5wZ2JlIGRyaXZlciwgd2hpY2ggaXMgYSBwaHlzaWNhbCBQQ0kgbmV0d29yayBkcml2ZXIgZm9yIE11Y3NlIGhhcmR3YXJlLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgaW4gUUVNVSBvciB0aGUga2VybmVsLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowm7vk2[1] Phase: Running StartedAt: 2026-07-16 22:47:21 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm7vk2[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-16 22:47:21 +0000 UTC FinishedAt: 2026-07-16 22:47:35 +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,}