Name: series-workflowflq2v Phase: Failed StartedAt: 2026-07-12 07:42:56 +0000 UTC FinishedAt: 2026-07-12 08:18:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowflq2v[0] Phase: Succeeded StartedAt: 2026-07-12 07:42:56 +0000 UTC FinishedAt: 2026-07-12 08:18:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowflq2v[0].run-triage Phase: Succeeded StartedAt: 2026-07-12 07:42:56 +0000 UTC FinishedAt: 2026-07-12 08:18:01 +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+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRldmljZSB0aGF0IHJlcXVpcmVzIEh5cGVyLVYgYW5kIHNwZWNpZmljIEF6dXJlIGhhcmR3YXJlLiBJdCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIHRoaXMgY29kZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB1c2VkIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE2NWM5Y2E2ZTgyNWFhN2IyNmEzMDRkMjNjOWE2MzYwNDllMGZmZTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxMiAwODoxNjoyMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmNcbmluZGV4IDQ4YTlhY2VhNGFiNmMxLi5hMDkxNmI1MGNmZmNlNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jXG5AQCAtMTUyLDEwICYjNDM7MTUyLDE0IEBAIHN0YXRpYyB2b2lkIG1hbmFfaHdjX2luaXRfZXZlbnRfaGFuZGxlcih2b2lkICpjdHgsIHN0cnVjdCBnZG1hX3F1ZXVlICpxX3NlbGYsXG4gXHRcdFx0YnJlYWs7XG4gXG4gXHRcdGNhc2UgSFdDX0lOSVRfREFUQV9NQVhfUkVRVUVTVDpcbiYjNDM7XHRcdFx0aWYgKHZhbCA9PSAwIHx8IHZhbCBcdTAwM2UgSFdfQ0hBTk5FTF9NQVhfUkVRVUVTVF9TSVpFKVxuJiM0MztcdFx0XHRcdHZhbCA9IEhXX0NIQU5ORUxfTUFYX1JFUVVFU1RfU0laRTtcbiBcdFx0XHRod2MtXHUwMDNlaHdjX2luaXRfbWF4X3JlcV9tc2dfc2l6ZSA9IHZhbDtcbiBcdFx0XHRicmVhaztcbiBcbiBcdFx0Y2FzZSBIV0NfSU5JVF9EQVRBX01BWF9SRVNQT05TRTpcbiYjNDM7XHRcdFx0aWYgKHZhbCA9PSAwIHx8IHZhbCBcdTAwM2UgSFdfQ0hBTk5FTF9NQVhfUkVRVUVTVF9TSVpFKVxuJiM0MztcdFx0XHRcdHZhbCA9IEhXX0NIQU5ORUxfTUFYX1JFUVVFU1RfU0laRTtcbiBcdFx0XHRod2MtXHUwMDNlaHdjX2luaXRfbWF4X3Jlc3BfbXNnX3NpemUgPSB2YWw7XG4gXHRcdFx0YnJlYWs7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDg6MTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZGV2aWNlIHRoYXQgcmVxdWlyZXMgSHlwZXItViBhbmQgc3BlY2lmaWMgQXp1cmUgaGFyZHdhcmUuIEl0IGlzIGltcG9zc2libGUgdG8gcmVhY2ggdGhpcyBjb2RlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VIHVzZWQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhNjVjOWNhNmU4MjVhYTdiMjZhMzA0ZDIzYzlhNjM2MDQ5ZTBmZmU3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMTIgMDg6MTY6MjIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMKaW5kZXggNDhhOWFjZWE0YWI2YzEuLmEwOTE2YjUwY2ZmY2U3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jCkBAIC0xNTIsMTAgJiM0MzsxNTIsMTQgQEAgc3RhdGljIHZvaWQgbWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyKHZvaWQgKmN0eCwgc3RydWN0IGdkbWFfcXVldWUgKnFfc2VsZiwKIAkJCWJyZWFrOwogCiAJCWNhc2UgSFdDX0lOSVRfREFUQV9NQVhfUkVRVUVTVDoKJiM0MzsJCQlpZiAodmFsID09IDAgfHwgdmFsICZndDsgSFdfQ0hBTk5FTF9NQVhfUkVRVUVTVF9TSVpFKQomIzQzOwkJCQl2YWwgPSBIV19DSEFOTkVMX01BWF9SRVFVRVNUX1NJWkU7CiAJCQlod2MtJmd0O2h3Y19pbml0X21heF9yZXFfbXNnX3NpemUgPSB2YWw7CiAJCQlicmVhazsKIAogCQljYXNlIEhXQ19JTklUX0RBVEFfTUFYX1JFU1BPTlNFOgomIzQzOwkJCWlmICh2YWwgPT0gMCB8fCB2YWwgJmd0OyBIV19DSEFOTkVMX01BWF9SRVFVRVNUX1NJWkUpCiYjNDM7CQkJCXZhbCA9IEhXX0NIQU5ORUxfTUFYX1JFUVVFU1RfU0laRTsKIAkJCWh3Yy0mZ3Q7aHdjX2luaXRfbWF4X3Jlc3BfbXNnX3NpemUgPSB2YWw7CiAJCQlicmVhazsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTQ3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgYWZmZWN0aW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZGluZyBzb21lIGJvdW5kcyBjaGVja2luZyB0byBgbWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyYCwgc3BlY2lmaWNhbGx5IGZvciBgSFdDX0lOSVRfREFUQV9NQVhfUkVRVUVTVGAgYW5kIGBIV0NfSU5JVF9EQVRBX01BWF9SRVNQT05TRWAuIFRoYXQgc2VlbXMgbGlrZSBhIHNlbnNpYmxlIGFkZGl0aW9uOyBhbHdheXMgZ29vZCB0byBoYXZlIHRoYXQgZXh0cmEgbGF5ZXIgb2YgdmFsaWRhdGlvbi4KCk5vdywgbXkgbWluZCBqdW1wcyB0byByZWFjaGFiaWxpdHkuIEhvdyBsaWtlbHkgaXMgdGhpcyBjb2RlIHBhdGggdG8gYWN0dWFsbHkgYmUgaGl0PyBUaGlzIGlzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIGRyaXZlciwgYG1pY3Jvc29mdC9tYW5hYC4gVGhlIHF1ZXN0aW9uIGJlY29tZXMsIGNhbiB3ZSBmdXp6IHRoaXM/IEhhcmR3YXJlIGRyaXZlcnMgYXJlIG9mdGVuIGEgcGFpbiBiZWNhdXNlIHRoZXkgdHlwaWNhbGx5IHJlbHkgb24gc3BlY2lmaWMgUENJIGRldmljZXMuIENhbiB3ZSBlbXVsYXRlIHRoaXMsIG9yIGlzIGl0IHB1cmVseSBoYXJkd2FyZS1kZXBlbmRlbnQ/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGEgcHJhY3RpY2FsIHdheSB0byB0ZXN0IHRoaXMgcGF0Y2guIExldCBtZSBzZWUgaWYgZnV6emluZyBgbWFuYWAgaXMgZXZlbiBmZWFzaWJsZS4gVGhpcyBwYXRjaCB0b3VjaGVzIGBtYW5hX2h3Y19pbml0X2V2ZW50X2hhbmRsZXJgLCB3aGljaCBpcyBhIGtleSBhcmVhIHRvIGV4cGxvcmUuIExldCYjMzk7cyBtYWtlIHN1cmUgYG1hbmFgIGlzIGEgUENJIGRyaXZlci4gVGhhdCB3aWxsIGdpdmUgdXMgYW4gaW5pdGlhbCBwZXJzcGVjdGl2ZSBvbiB0aGUgY2hhbGxlbmdlIG9mIHNpbXVsYXRpbmcgdGhpcyBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYz03OT1zdGF0aWMgdm9pZCBtYW5hX2h3Y19oYW5kbGVfcmVzcChzdHJ1Y3QgaHdfY2hhbm5lbF9jb250ZXh0ICpod2MsIHUzMiByZXNwX2xlbixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtMTEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jOjExMzpzdGF0aWMgdm9pZCBtYW5hX2h3Y19pbml0X2V2ZW50X2hhbmRsZXIodm9pZCAqY3R4LCBzdHJ1Y3QgZ2RtYV9xdWV1ZSAqcV9zZWxmLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTExNC1cdFx0XHRcdFx0c3RydWN0IGdkbWFfZXZlbnQgKmV2ZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYz02NjM9c3RhdGljIGludCBtYW5hX2h3Y19lc3RhYmxpc2hfY2hhbm5lbChzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgdTE2ICpxX2RlcHRoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYy02OTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM6NjkyOlx0LyogQm90aCB3ZXJlIHNldCBpbiBtYW5hX2h3Y19pbml0X2V2ZW50X2hhbmRsZXIoKS4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYy02OTMtXHRpZiAoV0FSTl9PTihjcS1cdTAwM2VpZCBcdTAwM2U9IGdjLVx1MDAzZW1heF9udW1fY3FzKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM9NzA1PXN0YXRpYyBpbnQgbWFuYV9od2NfaW5pdF9xdWV1ZXMoc3RydWN0IGh3X2NoYW5uZWxfY29udGV4dCAqaHdjLCB1MTYgcV9kZXB0aCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtNzE3LVx0ZXJyID0gbWFuYV9od2NfY3JlYXRlX2NxKGh3YywgcV9kZXB0aCAqIDIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM6NzE4Olx0XHRcdFx0IG1hbmFfaHdjX2luaXRfZXZlbnRfaGFuZGxlciwgaHdjLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTcxOS1cdFx0XHRcdCBtYW5hX2h3Y19yeF9ldmVudF9oYW5kbGVyLCBod2MsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jPTgwNj12b2lkIG1hbmFfaHdjX2Rlc3Ryb3lfY2hhbm5lbChzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtODEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jOjgxMzpcdC8qIGdjLVx1MDAzZW1heF9udW1fY3FzIGlzIHNldCBpbiBtYW5hX2h3Y19pbml0X2V2ZW50X2hhbmRsZXIoKS4gSWYgaXQmIzM5O3NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYy04MTQtXHQgKiBub24temVybywgdGhlIEhXQyB3b3JrZWQgYW5kIHdlIHNob3VsZCB0ZWFyIGRvd24gdGhlIEhXQyBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIHRoZSBBenVyZSBOZXR3b3JrIEFkYXB0ZXIqKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBleGlzdGluZyBlbXVsYXRpb24gc3VwcG9ydCBvdXQgdGhlcmUgZm9yIHRoaXMgZGV2aWNlLiBNeSBpbml0aWFsIGd1dCBmZWVsaW5nIGlzIHRoYXQgYSByYXcgaGFyZHdhcmUgZHJpdmVyIGxpa2UgdGhpcyBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIHdvdWxkbiYjMzk7dCBiZSBkaXJlY3RseSBmdXp6YWJsZSB1bmxlc3MgaXQmIzM5O3MgcnVubmluZyAqdGhyb3VnaCogc29tZXRoaW5nIGxpa2UgUUVNVS4gRWl0aGVyIHRoYXQsIG9yIGl0JiMzOTtzIGEgdmlydHVhbCBkZXZpY2UgdG8gYmVnaW4gd2l0aCwgd2hpY2ggaXMgbXVjaCBtb3JlIG1hbmFnZWFibGUgZnJvbSBhIHRlc3RpbmcgcGVyc3BlY3RpdmUuIEhvbGQgb24uLi4gcmlnaHQsIE1BTkEgaXMgYSBQQ0kgZGV2aWNlLiBUaGF0IGNoYW5nZXMgdGhpbmdzIGEgYml0Li4uIG5vdyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIFBDSWUgZnV6emluZyBhbmQgcG90ZW50aWFsIHRhcmdldHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yMTc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtYW5hX2lkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIxODM6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hbmFfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE4NC1cdC5uYW1lXHRcdD0gXCYjMzQ7bWFuYVwmIzM0OyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDc3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGhpcyBQQ0kgRHJpdmVyOiBUaGUgQ2hhbGxlbmdlcyBhbmQgTGltaXRhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgUENJIGRyaXZlciBhbmQgbXkgZmlyc3QgaW5zdGluY3QgaXMsICYjMzQ7Q2FuIEkgZnV6eiB0aGlzIHRoaW5nPyYjMzQ7IE15IGluaXRpYWwgdGhvdWdodCBpcywgaG93IGRvIEkgZ28gYWJvdXQgdGhpcyB3aXRoIFN5emthbGxlcj8gSSYjMzk7bSB1c2VkIHRvIHRoZSBgdmhjaWAsIGB2bmV0YCwgYW5kIG90aGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBpdCBvZmZlcnMsIGJ1dCBpdCBzZWVtcyB0aGVyZSYjMzk7cyBubyBlcXVpdmFsZW50IGdlbmVyaWMgbWV0aG9kIGZvciBQQ0kgZGV2aWNlcywgdW5sZXNzIFFFTVUmIzM5O3MgZ290IHRoZSBzcGVjaWZpYyBkZXZpY2UgbW9kZWwgaW1wbGVtZW50ZWQuCgpXYWl0Li4uIGRvZXMgU3l6a2FsbGVyICphbHJlYWR5KiBzdXBwb3J0IHRoaXMgdmlhIGZ1bmN0aW9ucyBsaWtlIGBzeXpfcGNpX2Fzc2lnbl9kZXZpY2VgIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBJIGtlZXAgZ2V0dGluZyB0cmlwcGVkIHVwLiBObywgaG9sZCBvbi4gSXQgcmVsaWVzIG9uIFFFTVUmIzM5O3MgaW1wbGVtZW50YXRpb24sIGFuZCBjb25maWd1cmluZyBpdCB3aXRoaW4gc3l6a2FsbGVyLgoKUmlnaHQsIGJ1dCBkb2VzbiYjMzk7dCBTeXprYWxsZXIgKmRvKiBmdXp6aW5nIG9mIFBDSSB1c2luZyBgc3l6X3BjaV9hc3NpZ25fZGV2aWNlYCBhbmQgYHN5el9wY2lfc2V0dXBgPyBPciBpcyBpdCBzb21ldGhpbmcgbGlrZSB0aGUgYHN5el9rdm1fc2V0dXBfY3B1YCBjYWxscz8gVGhpcyBpcyBjb25mdXNpbmchCgpObywgbXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IFN5emthbGxlciAqZG9lcyogaGF2ZSBzdXBwb3J0IGZvciBQQ0kgZGV2aWNlcyB2aWEgYHN5el9wY2lfYXNzaWduX2RldmljZWAuIEJ1dCB3YWl0LCBpdCBkb2VzbiYjMzk7dCBoYXZlIHRoZSBzYW1lIGVtdWxhdGVkIGluZnJhc3RydWN0dXJlIEkgc2VlIGluIFVTQiwgd2lmaSBhbmQgbmV0d29ya2luZywgdGhlcmUgaXMgbm90aGluZyBsaWtlIGB2aGNpYCBmb3IgVVNCIG9yIGBtYWM4MDIxMV9od3NpbWAgZm9yIHdpZmkgb3IgYHZuZXRgIGZvciBuZXQuIEl0IHNlZW1zIGl0ICpyZXF1aXJlcyogdGhhdCBRRU1VIGFjdHVhbGx5ICplbXVsYXRlKiB0aGUgZGV2aWNlIEkmIzM5O20gdGFyZ2V0aW5nLgoKTm93LCBkb2VzIFFFTVUgZXZlbiBwcm92aWRlIGEgTUFOQSBkZXZpY2U/IEFjdHVhbGx5LCBubywgTUFOQSBpcyBzcGVjaWZpYyB0byBBenVyZSwgcmlnaHQ/IFNvIHRoZSBkcml2ZXIgSSYjMzk7bSBsb29raW5nIGF0IHJlbGllcyBvbiB0aGF0IHNwZWNpZmljIGh5cGVydmlzb3IgZW52aXJvbm1lbnQuCgpUaGlzIGlzIGEgcHJvYmxlbS4gSWYgSSYjMzk7bSB3b3JraW5nIGluIGEgbW9yZSBzdGFuZGFyZCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBRRU1VIHdpdGhvdXQgdGhhdCBzcGVjaWZpYyBNQU5BIGRldmljZSwgaXQmIzM5O3MgdmlydHVhbGx5IGltcG9zc2libGUgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBvYnZpb3VzLCBsZXQgbWUgZG91YmxlLWNoZWNrIGlmIHRoZXJlJiMzOTtzIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoZSBNQU5BIGRldmljZSBhdmFpbGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYz03OT1zdGF0aWMgdm9pZCBtYW5hX2h3Y19oYW5kbGVfcmVzcChzdHJ1Y3QgaHdfY2hhbm5lbF9jb250ZXh0ICpod2MsIHUzMiByZXNwX2xlbixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtMTEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jOjExMzpzdGF0aWMgdm9pZCBtYW5hX2h3Y19pbml0X2V2ZW50X2hhbmRsZXIodm9pZCAqY3R4LCBzdHJ1Y3QgZ2RtYV9xdWV1ZSAqcV9zZWxmLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTExNC1cdFx0XHRcdFx0c3RydWN0IGdkbWFfZXZlbnQgKmV2ZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYz02NjM9c3RhdGljIGludCBtYW5hX2h3Y19lc3RhYmxpc2hfY2hhbm5lbChzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgdTE2ICpxX2RlcHRoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYy02OTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM6NjkyOlx0LyogQm90aCB3ZXJlIHNldCBpbiBtYW5hX2h3Y19pbml0X2V2ZW50X2hhbmRsZXIoKS4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYy02OTMtXHRpZiAoV0FSTl9PTihjcS1cdTAwM2VpZCBcdTAwM2U9IGdjLVx1MDAzZW1heF9udW1fY3FzKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM9NzA1PXN0YXRpYyBpbnQgbWFuYV9od2NfaW5pdF9xdWV1ZXMoc3RydWN0IGh3X2NoYW5uZWxfY29udGV4dCAqaHdjLCB1MTYgcV9kZXB0aCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtNzE3LVx0ZXJyID0gbWFuYV9od2NfY3JlYXRlX2NxKGh3YywgcV9kZXB0aCAqIDIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM6NzE4Olx0XHRcdFx0IG1hbmFfaHdjX2luaXRfZXZlbnRfaGFuZGxlciwgaHdjLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTcxOS1cdFx0XHRcdCBtYW5hX2h3Y19yeF9ldmVudF9oYW5kbGVyLCBod2MsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jPTgwNj12b2lkIG1hbmFfaHdjX2Rlc3Ryb3lfY2hhbm5lbChzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtODEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jOjgxMzpcdC8qIGdjLVx1MDAzZW1heF9udW1fY3FzIGlzIHNldCBpbiBtYW5hX2h3Y19pbml0X2V2ZW50X2hhbmRsZXIoKS4gSWYgaXQmIzM5O3NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYy04MTQtXHQgKiBub24temVybywgdGhlIEhXQyB3b3JrZWQgYW5kIHdlIHNob3VsZCB0ZWFyIGRvd24gdGhlIEhXQyBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MzcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgUENJIEZ1enppbmcgQnJhaW5zdG9ybSoqCgpPa2F5LCB3YWl0IGEgbWludXRlLCBJIHRob3VnaHQgSSByZW1lbWJlcmVkIHNvbWV0aGluZy4uLiBkb2VzbiYjMzk7dCBzeXprYWxsZXIgYWN0dWFsbHkgKmhhdmUqIHNvbWUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzPyBJcyBpdCB0aGUgYHZmaW9gIG9yIHRoZSBgcGNpYCBmdXp6aW5nIG9wdGlvbnM/IEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gd2hldGhlciBzeXprYWxsZXIgY2FuIGRpcmVjdGx5IHRhcmdldCBQQ0kgZGV2aWNlcy4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgc3lzY2FsbCByZWZlcmVuY2VzLiBBaCwgYnV0IGRvZXMgc3l6a2FsbGVyIGhhdmUsIGZvciBpbnN0YW5jZSwgYSBgc3l6X3BjaV9hc3NpZ25fZGV2aWNlYCBzeXNjYWxsPyBObywgdGhhdCYjMzk7cyBub3QgaXQuIE9rYXksIHdhaXQsIEkgc2VlIHRoZSBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYCBhbmQgdGhlIG90aGVycy4gVGhpcyBkb2VzbiYjMzk7dCBkaXJlY3RseSBzcGVhayB0byBQQ0kuCgpTbywgZG9lcyBzeXprYWxsZXIgKnJlYWxseSogZnV6eiBQQ0kgZGV2aWNlcyB0aGVuPyBIb3cgZXhhY3RseSBkb2VzIGl0IGRvIGl0PyBMZXQgbWUgc2NhbiB0aGUga2VybmVsIGZvciBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaWAuLi4gbm90aGluZyBvYnZpb3VzLiBBaCwgcmlnaHQhIEl0IGZ1enplcyBQQ0kgZGV2aWNlcyB0aHJvdWdoIGluZGlyZWN0IG1lYW5zIOKAkyBlaXRoZXIgYnkgaW5qZWN0aW5nIGRpcmVjdGx5IGludG8gdGhlIFBDSSBjb25maWcgc3BhY2UsIG9yIGxldmVyYWdpbmcgUUVNVSYjMzk7cyBQQ0kgZW11bGF0aW9uLiBUaGF0JiMzOTtzIHRoZSBrZXkuCgpTbywgdGhlIG5leHQgcXVlc3Rpb246IGRvZXMgdGhpcyBhcHByb2FjaCBoZWxwIG1lIHdpdGggTUFOQT8KCkFoLCByaWdodC4uLiBNQU5BIGlzIG5vdCBwcmVzZW50IGluIFFFTVUuIEl0JiMzOTtzIGEgSHlwZXItViBzcGVjaWZpYyBkZXZpY2UuCgpIYW5nIG9uLi4uIElzIE1BTkEgYSBWTUJ1cyBkZXZpY2UgdGhlbj8gV2UgbWlnaHQgYmUgY2xvc2VyIHRoYW4gSSBvcmlnaW5hbGx5IHRob3VnaHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm1idXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDczCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgUENJIERldmljZSBJc3N1ZSoqCgpBbHJpZ2h0LCBhIFBDSSBkZXZpY2UsIHRoYXQgbmFycm93cyB0aGluZ3MgZG93biBjb25zaWRlcmFibHkuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiB0aGUgY29udGV4dCwgaXMgdGhhdCB3ZSYjMzk7cmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBhIG5ldHdvcmtpbmcgY29tcG9uZW50LiBDb25zaWRlcmluZyB0aGUgcHJldmFsZW5jZSBvZiBNaWNyb3NvZnQgZHJpdmVycyBpbiB2YXJpb3VzIG5ldHdvcmsgaW50ZXJmYWNlcywgbGV0JiMzOTtzIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UgYW5kIGV4YW1pbmUgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9LY29uZmlnYCBmaWxlLiBUaGlzIEtjb25maWcgZmlsZSB3aWxsIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBwYXJ0aWN1bGFyIE1pY3Jvc29mdCBkZXZpY2UsIHRoZSAmIzM5O21hbmEmIzM5OyBkcml2ZXIsIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBrZXJuZWwuIEl04oCZbGwgdGVsbCB1cyBhbGwgdGhlIGJ1aWxkIG9wdGlvbnMsIGFueSBkZXBlbmRlbmNpZXMsIGFuZCBob3BlZnVsbHkgc2hlZCBsaWdodCBvbiBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIG1pc3NpbmcgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byB0aGlzIFBDSSBkZXZpY2UuIEkgZXhwZWN0IGl0IHRvIGhhdmUgY2x1ZXMgYWJvdXQgd2hhdCBtb2R1bGUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCwgYW5kIHRodXMgd2hhdCBvdGhlciB0aGluZ3MgdG8gY2hlY2sgYWZ0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+dGhlIGZpbGUgZG9lcyBub3QgZXhpc3Q8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O3RoZSBmaWxlIGRvZXMgbm90IGV4aXN0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzQyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gaXQuCgoqKktjb25maWcgRGl2ZTogRXRoZXJuZXQvTWljcm9zb2Z0KioKCkFscmlnaHQsIHRpbWUgdG8gY3JhY2sgb3BlbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIE1pY3Jvc29mdCYjMzk7cyBFdGhlcm5ldCBkcml2ZXJzLiBJdOKAmXMgYWx3YXlzIHRoZSBLY29uZmlnIGZpbGVzIHRoYXQgYXJlIHRoZSBoZWFydCBvZiB1bmRlcnN0YW5kaW5nIGhvdyBhIGRyaXZlciBpcyBpbnRlZ3JhdGVkIGFuZCBjb25maWd1cmFibGUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGxvd2Rvd24gb24gd2hhdCBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkLCB3aGF0IGRlcGVuZGVuY2llcyBleGlzdCwgYW5kIGhvdyB1c2VycyBjYW4gZW5hYmxlIG9yIGRpc2FibGUgdGhlIHZhcmlvdXMgY29tcG9uZW50cy4gSSYjMzk7bSBlc3BlY2lhbGx5IGtlZW4gdG8gc2VlIGhvdyB0aGV5JiMzOTt2ZSBoYW5kbGVkIHRoZSBtb3JlIHJlY2VudCBhZHZhbmNlbWVudHMsIGlmIHRoZXkmIzM5O3JlIHRoZXJlLiBUaW1lIHRvIHNlZSB3aGF0IE1pY3Jvc29mdCYjMzk7cyBlbmdpbmVlcnMgaGF2ZSBiZWVuIHVwIHRvLiBUaGlzIHNob3VsZCBiZSBhIHF1aWNrIGNoZWNrLCBidXQgYWx3YXlzIHJldmVhbGluZy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHN0b3JlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCNcbiAgIDI6XHQjIE1pY3Jvc29mdCBBenVyZSBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXG4gICAzOlx0I1xuICAgNDpcdFxuICAgNTpcdGNvbmZpZyBORVRfVkVORE9SX01JQ1JPU09GVFxuICAgNjpcdFx0Ym9vbCBcJiMzNDtNaWNyb3NvZnQgTmV0d29yayBEZXZpY2VzXCYjMzQ7XG4gICA3Olx0XHRkZWZhdWx0IHlcbiAgIDg6XHRcdGhlbHBcbiAgIDk6XHRcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgZGV2aWNlIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cbiAgMTA6XHRcbiAgMTE6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gIDEyOlx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCB0aGVcbiAgMTM6XHRcdCAgcXVlc3Rpb24gYWJvdXQgTWljcm9zb2Z0IG5ldHdvcmsgZGV2aWNlcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZVxuICAxNDpcdFx0ICBhc2tlZCBmb3IgeW91ciBzcGVjaWZpYyBkZXZpY2UgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbi5cbiAgMTU6XHRcbiAgMTY6XHRpZiBORVRfVkVORE9SX01JQ1JPU09GVFxuICAxNzpcdFxuICAxODpcdGNvbmZpZyBNSUNST1NPRlRfTUFOQVxuICAxOTpcdFx0dHJpc3RhdGUgXCYjMzQ7TWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgc3VwcG9ydFwmIzM0O1xuICAyMDpcdFx0ZGVwZW5kcyBvbiBQQ0lfTVNJXG4gIDIxOlx0XHRkZXBlbmRzIG9uIFg4Nl82NCB8fCAoQVJNNjQgXHUwMDI2XHUwMDI2ICFDUFVfQklHX0VORElBTilcbiAgMjI6XHRcdGRlcGVuZHMgb24gUENJX0hZUEVSVlxuICAyMzpcdFx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbiAgMjQ6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMjU6XHRcdHNlbGVjdCBORVRfU0hBUEVSXG4gIDI2Olx0XHRoZWxwXG4gIDI3Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpLlxuICAyODpcdFx0ICBTbyBmYXIsIHRoZSBkcml2ZXIgaXMgb25seSBzdXBwb3J0ZWQgb24gWDg2XzY0LlxuICAyOTpcdFxuICAzMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAzMTpcdFx0ICBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIG1hbmEuXG4gIDMyOlx0XG4gIDMzOlx0ZW5kaWYgI05FVF9WRU5ET1JfTUlDUk9TT0ZUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MDEKCQkJCQkJCW91dHB1dDogODcKCQkJCQkJCXRob3VnaHRzOiAyODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIERlY2lzaW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBrZXkgZmFjdG9yIGhlcmUgc2VlbXMgdG8gaGluZ2Ugb24gYFBDSV9IWVBFUlZgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIHRoaXMgYXMgYSBQQ0kgZGV2aWNlIGRlc2lnbmVkIGZvciBIeXBlci1WLiBOb3csIEkga25vdyBTeXprYWxsZXIgdXN1YWxseSBydW5zIG9uIEdDRSAoS1ZNKSBvciBRRU1VIChLVk0pLCBub3QgSHlwZXItVi4gQW5kIHRoZSBtZW50aW9uIG9mIGEgTUFOQSBkZXZpY2Ugc3BlY2lmaWNhbGx5IHBvaW50cyB0byBBenVyZSwgd2hpY2ggc29saWRpZmllcyB0aGlzIGFzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLgoKU28sIGluIGEgc3RhbmRhcmQgS1ZNIGVudmlyb25tZW50IOKAkyB0aGUga2luZCB3ZSYjMzk7ZCB0eXBpY2FsbHkgdXNlIGZvciBmdXp6aW5nIOKAkyB0aGVyZSYjMzk7cyBqdXN0IG5vIHdheSB0byB0cmlnZ2VyIHRoaXMgY29kZS4gSXQmIzM5O3Mgc2ltcGx5IHVucmVhY2hhYmxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gYW5zd2VyaW5nIHRoZSByaWdodCBxdWVzdGlvbiAtIHdhaXQsIGxldCBtZSByZS1yZWFkIHRoZSBwcm9tcHQuLi4KClllcywgdGhlIHByb21wdCBleHBsaWNpdGx5IHN0YXRlcyB0aGF0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBsaWtlIHRoaXMgb25lLCBzaG91bGQgcmVzdWx0IGluIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGlzIEF6dXJlL0h5cGVyLVYgc3BlY2lmaWMgZHJpdmVyIGZhbGxzIHNxdWFyZWx5IGludG8gdGhhdCBjYXRlZ29yeS4gTm8gYW1vdW50IG9mIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIHdvdWxkIG1ha2UgdGhpcyByZWFjaGFibGUgdW5kZXIgbm9ybWFsIGZ1enppbmcgY29uZGl0aW9ucy4KClRoZXJlZm9yZSwgdGhlIGFuc3dlciBpcyBjbGVhcjogYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZGV2aWNlIHRoYXQgcmVxdWlyZXMgSHlwZXItViBhbmQgc3BlY2lmaWMgQXp1cmUgaGFyZHdhcmUuIEl0IGlzIGltcG9zc2libGUgdG8gcmVhY2ggdGhpcyBjb2RlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VIHVzZWQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkZXZpY2UgdGhhdCByZXF1aXJlcyBIeXBlci1WIGFuZCBzcGVjaWZpYyBBenVyZSBoYXJkd2FyZS4gSXQgaXMgaW1wb3NzaWJsZSB0byByZWFjaCB0aGlzIGNvZGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgdXNlZCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODoxNjoyMy45NzMyNDY1MzZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDYzNDYyNTEzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZGV2aWNlIHRoYXQgcmVxdWlyZXMgSHlwZXItViBhbmQgc3BlY2lmaWMgQXp1cmUgaGFyZHdhcmUuIEl0IGlzIGltcG9zc2libGUgdG8gcmVhY2ggdGhpcyBjb2RlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VIHVzZWQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODoxNjoyMy45NzMyNTE1MTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxODcxODA3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGE2NWM5Y2E2ZTgyNWFhN2IyNmEzMDRkMjNjOWE2MzYwNDllMGZmZTdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMTIgMDg6MTY6MjIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jXFxuaW5kZXggNDhhOWFjZWE0YWI2YzEuLmEwOTE2YjUwY2ZmY2U3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuY1xcbkBAIC0xNTIsMTAgKzE1MiwxNCBAQCBzdGF0aWMgdm9pZCBtYW5hX2h3Y19pbml0X2V2ZW50X2hhbmRsZXIodm9pZCAqY3R4LCBzdHJ1Y3QgZ2RtYV9xdWV1ZSAqcV9zZWxmLFxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFxuIFxcdFxcdGNhc2UgSFdDX0lOSVRfREFUQV9NQVhfUkVRVUVTVDpcXG4rXFx0XFx0XFx0aWYgKHZhbCA9PSAwIHx8IHZhbCBcXHUwMDNlIEhXX0NIQU5ORUxfTUFYX1JFUVVFU1RfU0laRSlcXG4rXFx0XFx0XFx0XFx0dmFsID0gSFdfQ0hBTk5FTF9NQVhfUkVRVUVTVF9TSVpFO1xcbiBcXHRcXHRcXHRod2MtXFx1MDAzZWh3Y19pbml0X21heF9yZXFfbXNnX3NpemUgPSB2YWw7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXG4gXFx0XFx0Y2FzZSBIV0NfSU5JVF9EQVRBX01BWF9SRVNQT05TRTpcXG4rXFx0XFx0XFx0aWYgKHZhbCA9PSAwIHx8IHZhbCBcXHUwMDNlIEhXX0NIQU5ORUxfTUFYX1JFUVVFU1RfU0laRSlcXG4rXFx0XFx0XFx0XFx0dmFsID0gSFdfQ0hBTk5FTF9NQVhfUkVRVUVTVF9TSVpFO1xcbiBcXHRcXHRcXHRod2MtXFx1MDAzZWh3Y19pbml0X21heF9yZXNwX21zZ19zaXplID0gdmFsO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjE2OjI0LjQ5MjY5OTMwNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQxMTUxNjExOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRldmljZSB0aGF0IHJlcXVpcmVzIEh5cGVyLVYgYW5kIHNwZWNpZmljIEF6dXJlIGhhcmR3YXJlLiBJdCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIHRoaXMgY29kZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB1c2VkIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhNjVjOWNhNmU4MjVhYTdiMjZhMzA0ZDIzYzlhNjM2MDQ5ZTBmZmU3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTIgMDg6MTY6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmNcbmluZGV4IDQ4YTlhY2VhNGFiNmMxLi5hMDkxNmI1MGNmZmNlNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jXG5AQCAtMTUyLDEwICsxNTIsMTQgQEAgc3RhdGljIHZvaWQgbWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyKHZvaWQgKmN0eCwgc3RydWN0IGdkbWFfcXVldWUgKnFfc2VsZixcbiBcdFx0XHRicmVhaztcbiBcbiBcdFx0Y2FzZSBIV0NfSU5JVF9EQVRBX01BWF9SRVFVRVNUOlxuK1x0XHRcdGlmICh2YWwgPT0gMCB8fCB2YWwgXHUwMDNlIEhXX0NIQU5ORUxfTUFYX1JFUVVFU1RfU0laRSlcbitcdFx0XHRcdHZhbCA9IEhXX0NIQU5ORUxfTUFYX1JFUVVFU1RfU0laRTtcbiBcdFx0XHRod2MtXHUwMDNlaHdjX2luaXRfbWF4X3JlcV9tc2dfc2l6ZSA9IHZhbDtcbiBcdFx0XHRicmVhaztcbiBcbiBcdFx0Y2FzZSBIV0NfSU5JVF9EQVRBX01BWF9SRVNQT05TRTpcbitcdFx0XHRpZiAodmFsID09IDAgfHwgdmFsIFx1MDAzZSBIV19DSEFOTkVMX01BWF9SRVFVRVNUX1NJWkUpXG4rXHRcdFx0XHR2YWwgPSBIV19DSEFOTkVMX01BWF9SRVFVRVNUX1NJWkU7XG4gXHRcdFx0aHdjLVx1MDAzZWh3Y19pbml0X21heF9yZXNwX21zZ19zaXplID0gdmFsO1xuIFx0XHRcdGJyZWFrO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDg6MTY6MjQuNDkyNzAxMjc2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY1MjM0NjMyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSBhZmZlY3RpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgc29tZSBib3VuZHMgY2hlY2tpbmcgdG8gYG1hbmFfaHdjX2luaXRfZXZlbnRfaGFuZGxlcmAsIHNwZWNpZmljYWxseSBmb3IgYEhXQ19JTklUX0RBVEFfTUFYX1JFUVVFU1RgIGFuZCBgSFdDX0lOSVRfREFUQV9NQVhfUkVTUE9OU0VgLiBUaGF0IHNlZW1zIGxpa2UgYSBzZW5zaWJsZSBhZGRpdGlvbjsgYWx3YXlzIGdvb2QgdG8gaGF2ZSB0aGF0IGV4dHJhIGxheWVyIG9mIHZhbGlkYXRpb24uXG5cbk5vdywgbXkgbWluZCBqdW1wcyB0byByZWFjaGFiaWxpdHkuIEhvdyBsaWtlbHkgaXMgdGhpcyBjb2RlIHBhdGggdG8gYWN0dWFsbHkgYmUgaGl0PyBUaGlzIGlzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIGRyaXZlciwgYG1pY3Jvc29mdC9tYW5hYC4gVGhlIHF1ZXN0aW9uIGJlY29tZXMsIGNhbiB3ZSBmdXp6IHRoaXM/IEhhcmR3YXJlIGRyaXZlcnMgYXJlIG9mdGVuIGEgcGFpbiBiZWNhdXNlIHRoZXkgdHlwaWNhbGx5IHJlbHkgb24gc3BlY2lmaWMgUENJIGRldmljZXMuIENhbiB3ZSBlbXVsYXRlIHRoaXMsIG9yIGlzIGl0IHB1cmVseSBoYXJkd2FyZS1kZXBlbmRlbnQ/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYSBwcmFjdGljYWwgd2F5IHRvIHRlc3QgdGhpcyBwYXRjaC4gTGV0IG1lIHNlZSBpZiBmdXp6aW5nIGBtYW5hYCBpcyBldmVuIGZlYXNpYmxlLiBUaGlzIHBhdGNoIHRvdWNoZXMgYG1hbmFfaHdjX2luaXRfZXZlbnRfaGFuZGxlcmAsIHdoaWNoIGlzIGEga2V5IGFyZWEgdG8gZXhwbG9yZS4gTGV0J3MgbWFrZSBzdXJlIGBtYW5hYCBpcyBhIFBDSSBkcml2ZXIuIFRoYXQgd2lsbCBnaXZlIHVzIGFuIGluaXRpYWwgcGVyc3BlY3RpdmUgb24gdGhlIGNoYWxsZW5nZSBvZiBzaW11bGF0aW5nIHRoaXMgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTQ3LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDg6MTY6MjkuMTQ1MDUxOTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA4OTQwNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM9Nzk9c3RhdGljIHZvaWQgbWFuYV9od2NfaGFuZGxlX3Jlc3Aoc3RydWN0IGh3X2NoYW5uZWxfY29udGV4dCAqaHdjLCB1MzIgcmVzcF9sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtMTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYzoxMTM6c3RhdGljIHZvaWQgbWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyKHZvaWQgKmN0eCwgc3RydWN0IGdkbWFfcXVldWUgKnFfc2VsZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtMTE0LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBnZG1hX2V2ZW50ICpldmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYz02NjM9c3RhdGljIGludCBtYW5hX2h3Y19lc3RhYmxpc2hfY2hhbm5lbChzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgdTE2ICpxX2RlcHRoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTY5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM6NjkyOlxcdC8qIEJvdGggd2VyZSBzZXQgaW4gbWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyKCkuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTY5My1cXHRpZiAoV0FSTl9PTihjcS1cXHUwMDNlaWQgXFx1MDAzZT0gZ2MtXFx1MDAzZW1heF9udW1fY3FzKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYz03MDU9c3RhdGljIGludCBtYW5hX2h3Y19pbml0X3F1ZXVlcyhzdHJ1Y3QgaHdfY2hhbm5lbF9jb250ZXh0ICpod2MsIHUxNiBxX2RlcHRoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTcxNy1cXHRlcnIgPSBtYW5hX2h3Y19jcmVhdGVfY3EoaHdjLCBxX2RlcHRoICogMixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM6NzE4OlxcdFxcdFxcdFxcdCBtYW5hX2h3Y19pbml0X2V2ZW50X2hhbmRsZXIsIGh3YyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtNzE5LVxcdFxcdFxcdFxcdCBtYW5hX2h3Y19yeF9ldmVudF9oYW5kbGVyLCBod2MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM9ODA2PXZvaWQgbWFuYV9od2NfZGVzdHJveV9jaGFubmVsKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTgxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM6ODEzOlxcdC8qIGdjLVxcdTAwM2VtYXhfbnVtX2NxcyBpcyBzZXQgaW4gbWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyKCkuIElmIGl0J3NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtODE0LVxcdCAqIG5vbi16ZXJvLCB0aGUgSFdDIHdvcmtlZCBhbmQgd2Ugc2hvdWxkIHRlYXIgZG93biB0aGUgSFdDIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjE2OjI5LjIwNTk1MjAyN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzYwODQ2OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiB0aGUgQXp1cmUgTmV0d29yayBBZGFwdGVyKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQncyBzZWUgaWYgdGhlcmUncyBhbnkgZXhpc3RpbmcgZW11bGF0aW9uIHN1cHBvcnQgb3V0IHRoZXJlIGZvciB0aGlzIGRldmljZS4gTXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGF0IGEgcmF3IGhhcmR3YXJlIGRyaXZlciBsaWtlIHRoaXMgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciB3b3VsZG4ndCBiZSBkaXJlY3RseSBmdXp6YWJsZSB1bmxlc3MgaXQncyBydW5uaW5nICp0aHJvdWdoKiBzb21ldGhpbmcgbGlrZSBRRU1VLiBFaXRoZXIgdGhhdCwgb3IgaXQncyBhIHZpcnR1YWwgZGV2aWNlIHRvIGJlZ2luIHdpdGgsIHdoaWNoIGlzIG11Y2ggbW9yZSBtYW5hZ2VhYmxlIGZyb20gYSB0ZXN0aW5nIHBlcnNwZWN0aXZlLiBIb2xkIG9uLi4uIHJpZ2h0LCBNQU5BIGlzIGEgUENJIGRldmljZS4gVGhhdCBjaGFuZ2VzIHRoaW5ncyBhIGJpdC4uLiBub3cgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIFBDSWUgZnV6emluZyBhbmQgcG90ZW50aWFsIHRhcmdldHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwOTIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODoxNjozMi4zODIwMzg4MjlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ5Njk5NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjE3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbWFuYV9pZF90YWJsZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMTgzOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtYW5hX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMTg0LVxcdC5uYW1lXFx0XFx0PSBcXFwibWFuYVxcXCIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjE2OjMyLjQzNzAxNDE1NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2OTA0NzQyOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUaGlzIFBDSSBEcml2ZXI6IFRoZSBDaGFsbGVuZ2VzIGFuZCBMaW1pdGF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgUENJIGRyaXZlciBhbmQgbXkgZmlyc3QgaW5zdGluY3QgaXMsIFwiQ2FuIEkgZnV6eiB0aGlzIHRoaW5nP1wiIE15IGluaXRpYWwgdGhvdWdodCBpcywgaG93IGRvIEkgZ28gYWJvdXQgdGhpcyB3aXRoIFN5emthbGxlcj8gSSdtIHVzZWQgdG8gdGhlIGB2aGNpYCwgYHZuZXRgLCBhbmQgb3RoZXIgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGl0IG9mZmVycywgYnV0IGl0IHNlZW1zIHRoZXJlJ3Mgbm8gZXF1aXZhbGVudCBnZW5lcmljIG1ldGhvZCBmb3IgUENJIGRldmljZXMsIHVubGVzcyBRRU1VJ3MgZ290IHRoZSBzcGVjaWZpYyBkZXZpY2UgbW9kZWwgaW1wbGVtZW50ZWQuXG5cbldhaXQuLi4gZG9lcyBTeXprYWxsZXIgKmFscmVhZHkqIHN1cHBvcnQgdGhpcyB2aWEgZnVuY3Rpb25zIGxpa2UgYHN5el9wY2lfYXNzaWduX2RldmljZWAgb3Igc29tZXRoaW5nIHNpbWlsYXI/IEkga2VlcCBnZXR0aW5nIHRyaXBwZWQgdXAuIE5vLCBob2xkIG9uLiBJdCByZWxpZXMgb24gUUVNVSdzIGltcGxlbWVudGF0aW9uLCBhbmQgY29uZmlndXJpbmcgaXQgd2l0aGluIHN5emthbGxlci5cblxuUmlnaHQsIGJ1dCBkb2Vzbid0IFN5emthbGxlciAqZG8qIGZ1enppbmcgb2YgUENJIHVzaW5nIGBzeXpfcGNpX2Fzc2lnbl9kZXZpY2VgIGFuZCBgc3l6X3BjaV9zZXR1cGA/IE9yIGlzIGl0IHNvbWV0aGluZyBsaWtlIHRoZSBgc3l6X2t2bV9zZXR1cF9jcHVgIGNhbGxzPyBUaGlzIGlzIGNvbmZ1c2luZyFcblxuTm8sIG15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBTeXprYWxsZXIgKmRvZXMqIGhhdmUgc3VwcG9ydCBmb3IgUENJIGRldmljZXMgdmlhIGBzeXpfcGNpX2Fzc2lnbl9kZXZpY2VgLiBCdXQgd2FpdCwgaXQgZG9lc24ndCBoYXZlIHRoZSBzYW1lIGVtdWxhdGVkIGluZnJhc3RydWN0dXJlIEkgc2VlIGluIFVTQiwgd2lmaSBhbmQgbmV0d29ya2luZywgdGhlcmUgaXMgbm90aGluZyBsaWtlIGB2aGNpYCBmb3IgVVNCIG9yIGBtYWM4MDIxMV9od3NpbWAgZm9yIHdpZmkgb3IgYHZuZXRgIGZvciBuZXQuIEl0IHNlZW1zIGl0ICpyZXF1aXJlcyogdGhhdCBRRU1VIGFjdHVhbGx5ICplbXVsYXRlKiB0aGUgZGV2aWNlIEknbSB0YXJnZXRpbmcuXG5cbk5vdywgZG9lcyBRRU1VIGV2ZW4gcHJvdmlkZSBhIE1BTkEgZGV2aWNlPyBBY3R1YWxseSwgbm8sIE1BTkEgaXMgc3BlY2lmaWMgdG8gQXp1cmUsIHJpZ2h0PyBTbyB0aGUgZHJpdmVyIEknbSBsb29raW5nIGF0IHJlbGllcyBvbiB0aGF0IHNwZWNpZmljIGh5cGVydmlzb3IgZW52aXJvbm1lbnQuXG5cblRoaXMgaXMgYSBwcm9ibGVtLiBJZiBJJ20gd29ya2luZyBpbiBhIG1vcmUgc3RhbmRhcmQgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVSB3aXRob3V0IHRoYXQgc3BlY2lmaWMgTUFOQSBkZXZpY2UsIGl0J3MgdmlydHVhbGx5IGltcG9zc2libGUgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3Npbmcgc29tZXRoaW5nIG9idmlvdXMsIGxldCBtZSBkb3VibGUtY2hlY2sgaWYgdGhlcmUncyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGUgTUFOQSBkZXZpY2UgYXZhaWxhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDc3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjE2OjM5LjEyNzQ5MDUzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwOTcyMDU5NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM9Nzk9c3RhdGljIHZvaWQgbWFuYV9od2NfaGFuZGxlX3Jlc3Aoc3RydWN0IGh3X2NoYW5uZWxfY29udGV4dCAqaHdjLCB1MzIgcmVzcF9sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtMTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYzoxMTM6c3RhdGljIHZvaWQgbWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyKHZvaWQgKmN0eCwgc3RydWN0IGdkbWFfcXVldWUgKnFfc2VsZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtMTE0LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBnZG1hX2V2ZW50ICpldmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYz02NjM9c3RhdGljIGludCBtYW5hX2h3Y19lc3RhYmxpc2hfY2hhbm5lbChzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgdTE2ICpxX2RlcHRoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTY5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM6NjkyOlxcdC8qIEJvdGggd2VyZSBzZXQgaW4gbWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyKCkuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTY5My1cXHRpZiAoV0FSTl9PTihjcS1cXHUwMDNlaWQgXFx1MDAzZT0gZ2MtXFx1MDAzZW1heF9udW1fY3FzKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYz03MDU9c3RhdGljIGludCBtYW5hX2h3Y19pbml0X3F1ZXVlcyhzdHJ1Y3QgaHdfY2hhbm5lbF9jb250ZXh0ICpod2MsIHUxNiBxX2RlcHRoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTcxNy1cXHRlcnIgPSBtYW5hX2h3Y19jcmVhdGVfY3EoaHdjLCBxX2RlcHRoICogMixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM6NzE4OlxcdFxcdFxcdFxcdCBtYW5hX2h3Y19pbml0X2V2ZW50X2hhbmRsZXIsIGh3YyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtNzE5LVxcdFxcdFxcdFxcdCBtYW5hX2h3Y19yeF9ldmVudF9oYW5kbGVyLCBod2MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM9ODA2PXZvaWQgbWFuYV9od2NfZGVzdHJveV9jaGFubmVsKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTgxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM6ODEzOlxcdC8qIGdjLVxcdTAwM2VtYXhfbnVtX2NxcyBpcyBzZXQgaW4gbWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyKCkuIElmIGl0J3NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtODE0LVxcdCAqIG5vbi16ZXJvLCB0aGUgSFdDIHdvcmtlZCBhbmQgd2Ugc2hvdWxkIHRlYXIgZG93biB0aGUgSFdDIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjE2OjQxLjIyNDcwMTQ2NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMzcxNDg4NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgUENJIEZ1enppbmcgQnJhaW5zdG9ybSoqXG5cbk9rYXksIHdhaXQgYSBtaW51dGUsIEkgdGhvdWdodCBJIHJlbWVtYmVyZWQgc29tZXRoaW5nLi4uIGRvZXNuJ3Qgc3l6a2FsbGVyIGFjdHVhbGx5ICpoYXZlKiBzb21lIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcz8gSXMgaXQgdGhlIGB2ZmlvYCBvciB0aGUgYHBjaWAgZnV6emluZyBvcHRpb25zPyBJIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIHdoZXRoZXIgc3l6a2FsbGVyIGNhbiBkaXJlY3RseSB0YXJnZXQgUENJIGRldmljZXMuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIHN5c2NhbGwgcmVmZXJlbmNlcy4gQWgsIGJ1dCBkb2VzIHN5emthbGxlciBoYXZlLCBmb3IgaW5zdGFuY2UsIGEgYHN5el9wY2lfYXNzaWduX2RldmljZWAgc3lzY2FsbD8gTm8sIHRoYXQncyBub3QgaXQuIE9rYXksIHdhaXQsIEkgc2VlIHRoZSBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYCBhbmQgdGhlIG90aGVycy4gVGhpcyBkb2Vzbid0IGRpcmVjdGx5IHNwZWFrIHRvIFBDSS5cblxuU28sIGRvZXMgc3l6a2FsbGVyICpyZWFsbHkqIGZ1enogUENJIGRldmljZXMgdGhlbj8gSG93IGV4YWN0bHkgZG9lcyBpdCBkbyBpdD8gTGV0IG1lIHNjYW4gdGhlIGtlcm5lbCBmb3Igc29tZXRoaW5nIGxpa2UgYHN5el9wY2lgLi4uIG5vdGhpbmcgb2J2aW91cy4gQWgsIHJpZ2h0ISBJdCBmdXp6ZXMgUENJIGRldmljZXMgdGhyb3VnaCBpbmRpcmVjdCBtZWFucyDigJMgZWl0aGVyIGJ5IGluamVjdGluZyBkaXJlY3RseSBpbnRvIHRoZSBQQ0kgY29uZmlnIHNwYWNlLCBvciBsZXZlcmFnaW5nIFFFTVUncyBQQ0kgZW11bGF0aW9uLiBUaGF0J3MgdGhlIGtleS5cblxuU28sIHRoZSBuZXh0IHF1ZXN0aW9uOiBkb2VzIHRoaXMgYXBwcm9hY2ggaGVscCBtZSB3aXRoIE1BTkE/XG5cbkFoLCByaWdodC4uLiBNQU5BIGlzIG5vdCBwcmVzZW50IGluIFFFTVUuIEl0J3MgYSBIeXBlci1WIHNwZWNpZmljIGRldmljZS5cblxuSGFuZyBvbi4uLiBJcyBNQU5BIGEgVk1CdXMgZGV2aWNlIHRoZW4/IFdlIG1pZ2h0IGJlIGNsb3NlciB0aGFuIEkgb3JpZ2luYWxseSB0aG91Z2h0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTM3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjE2OjQ2LjI2MTg1MjM1N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1OTg4ODg1OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidm1idXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODoxNjo0Ny42MjE3NDk4MjdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAyNDM3NzM2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBQQ0kgRGV2aWNlIElzc3VlKipcblxuQWxyaWdodCwgYSBQQ0kgZGV2aWNlLCB0aGF0IG5hcnJvd3MgdGhpbmdzIGRvd24gY29uc2lkZXJhYmx5LiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhlIGNvbnRleHQsIGlzIHRoYXQgd2UncmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBhIG5ldHdvcmtpbmcgY29tcG9uZW50LiBDb25zaWRlcmluZyB0aGUgcHJldmFsZW5jZSBvZiBNaWNyb3NvZnQgZHJpdmVycyBpbiB2YXJpb3VzIG5ldHdvcmsgaW50ZXJmYWNlcywgbGV0J3MgZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZSBhbmQgZXhhbWluZSB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL0tjb25maWdgIGZpbGUuIFRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIHBhcnRpY3VsYXIgTWljcm9zb2Z0IGRldmljZSwgdGhlICdtYW5hJyBkcml2ZXIsIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBrZXJuZWwuIEl04oCZbGwgdGVsbCB1cyBhbGwgdGhlIGJ1aWxkIG9wdGlvbnMsIGFueSBkZXBlbmRlbmNpZXMsIGFuZCBob3BlZnVsbHkgc2hlZCBsaWdodCBvbiBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIG1pc3NpbmcgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byB0aGlzIFBDSSBkZXZpY2UuIEkgZXhwZWN0IGl0IHRvIGhhdmUgY2x1ZXMgYWJvdXQgd2hhdCBtb2R1bGUgd2UncmUgZGVhbGluZyB3aXRoLCBhbmQgdGh1cyB3aGF0IG90aGVyIHRoaW5ncyB0byBjaGVjayBhZnRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ3MywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjE2OjUwLjY0NjEyOTQ2OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTU0MCwiRXJyb3IiOiJ0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcInRoZSBmaWxlIGRvZXMgbm90IGV4aXN0XCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjE2OjUwLjY0NjE4MDczOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODI2NTE5MzgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gaXQuXG5cbioqS2NvbmZpZyBEaXZlOiBFdGhlcm5ldC9NaWNyb3NvZnQqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGNyYWNrIG9wZW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBNaWNyb3NvZnQncyBFdGhlcm5ldCBkcml2ZXJzLiBJdOKAmXMgYWx3YXlzIHRoZSBLY29uZmlnIGZpbGVzIHRoYXQgYXJlIHRoZSBoZWFydCBvZiB1bmRlcnN0YW5kaW5nIGhvdyBhIGRyaXZlciBpcyBpbnRlZ3JhdGVkIGFuZCBjb25maWd1cmFibGUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGxvd2Rvd24gb24gd2hhdCBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkLCB3aGF0IGRlcGVuZGVuY2llcyBleGlzdCwgYW5kIGhvdyB1c2VycyBjYW4gZW5hYmxlIG9yIGRpc2FibGUgdGhlIHZhcmlvdXMgY29tcG9uZW50cy4gSSdtIGVzcGVjaWFsbHkga2VlbiB0byBzZWUgaG93IHRoZXkndmUgaGFuZGxlZCB0aGUgbW9yZSByZWNlbnQgYWR2YW5jZW1lbnRzLCBpZiB0aGV5J3JlIHRoZXJlLiBUaW1lIHRvIHNlZSB3aGF0IE1pY3Jvc29mdCdzIGVuZ2luZWVycyBoYXZlIGJlZW4gdXAgdG8uIFRoaXMgc2hvdWxkIGJlIGEgcXVpY2sgY2hlY2ssIGJ1dCBhbHdheXMgcmV2ZWFsaW5nLiBMZXQncyBzZWUgd2hhdCdzIGluIHN0b3JlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzQyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODoxNjo1My40NzI3MDIwNzFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0I1xcbiAgIDI6XFx0IyBNaWNyb3NvZnQgQXp1cmUgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDM6XFx0I1xcbiAgIDQ6XFx0XFxuICAgNTpcXHRjb25maWcgTkVUX1ZFTkRPUl9NSUNST1NPRlRcXG4gICA2OlxcdFxcdGJvb2wgXFxcIk1pY3Jvc29mdCBOZXR3b3JrIERldmljZXNcXFwiXFxuICAgNzpcXHRcXHRkZWZhdWx0IHlcXG4gICA4OlxcdFxcdGhlbHBcXG4gICA5OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgZGV2aWNlIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0XFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJ3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxcbiAgMTI6XFx0XFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgdGhlXFxuICAxMzpcXHRcXHQgIHF1ZXN0aW9uIGFib3V0IE1pY3Jvc29mdCBuZXR3b3JrIGRldmljZXMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmVcXG4gIDE0OlxcdFxcdCAgYXNrZWQgZm9yIHlvdXIgc3BlY2lmaWMgZGV2aWNlIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb24uXFxuICAxNTpcXHRcXG4gIDE2OlxcdGlmIE5FVF9WRU5ET1JfTUlDUk9TT0ZUXFxuICAxNzpcXHRcXG4gIDE4OlxcdGNvbmZpZyBNSUNST1NPRlRfTUFOQVxcbiAgMTk6XFx0XFx0dHJpc3RhdGUgXFxcIk1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIHN1cHBvcnRcXFwiXFxuICAyMDpcXHRcXHRkZXBlbmRzIG9uIFBDSV9NU0lcXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gWDg2XzY0IHx8IChBUk02NCBcXHUwMDI2XFx1MDAyNiAhQ1BVX0JJR19FTkRJQU4pXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIFBDSV9IWVBFUlZcXG4gIDIzOlxcdFxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuICAyNDpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAyNTpcXHRcXHRzZWxlY3QgTkVUX1NIQVBFUlxcbiAgMjY6XFx0XFx0aGVscFxcbiAgMjc6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKS5cXG4gIDI4OlxcdFxcdCAgU28gZmFyLCB0aGUgZHJpdmVyIGlzIG9ubHkgc3VwcG9ydGVkIG9uIFg4Nl82NC5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMzE6XFx0XFx0ICBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIG1hbmEuXFxuICAzMjpcXHRcXG4gIDMzOlxcdGVuZGlmICNORVRfVkVORE9SX01JQ1JPU09GVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODoxNjo1My40NzI3NjkyMDFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEzNTAyNjYwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRGVjaXNpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBrZXkgZmFjdG9yIGhlcmUgc2VlbXMgdG8gaGluZ2Ugb24gYFBDSV9IWVBFUlZgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIHRoaXMgYXMgYSBQQ0kgZGV2aWNlIGRlc2lnbmVkIGZvciBIeXBlci1WLiBOb3csIEkga25vdyBTeXprYWxsZXIgdXN1YWxseSBydW5zIG9uIEdDRSAoS1ZNKSBvciBRRU1VIChLVk0pLCBub3QgSHlwZXItVi4gQW5kIHRoZSBtZW50aW9uIG9mIGEgTUFOQSBkZXZpY2Ugc3BlY2lmaWNhbGx5IHBvaW50cyB0byBBenVyZSwgd2hpY2ggc29saWRpZmllcyB0aGlzIGFzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLlxuXG5TbywgaW4gYSBzdGFuZGFyZCBLVk0gZW52aXJvbm1lbnQg4oCTIHRoZSBraW5kIHdlJ2QgdHlwaWNhbGx5IHVzZSBmb3IgZnV6emluZyDigJMgdGhlcmUncyBqdXN0IG5vIHdheSB0byB0cmlnZ2VyIHRoaXMgY29kZS4gSXQncyBzaW1wbHkgdW5yZWFjaGFibGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBhbnN3ZXJpbmcgdGhlIHJpZ2h0IHF1ZXN0aW9uIC0gd2FpdCwgbGV0IG1lIHJlLXJlYWQgdGhlIHByb21wdC4uLlxuXG5ZZXMsIHRoZSBwcm9tcHQgZXhwbGljaXRseSBzdGF0ZXMgdGhhdCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbGlrZSB0aGlzIG9uZSwgc2hvdWxkIHJlc3VsdCBpbiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhpcyBBenVyZS9IeXBlci1WIHNwZWNpZmljIGRyaXZlciBmYWxscyBzcXVhcmVseSBpbnRvIHRoYXQgY2F0ZWdvcnkuIE5vIGFtb3VudCBvZiBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSB3b3VsZCBtYWtlIHRoaXMgcmVhY2hhYmxlIHVuZGVyIG5vcm1hbCBmdXp6aW5nIGNvbmRpdGlvbnMuXG5cblRoZXJlZm9yZSwgdGhlIGFuc3dlciBpcyBjbGVhcjogYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MDEsIk91dHB1dFRva2VucyI6ODcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODoxNjo1OC42MDc3OTg0NDdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkZXZpY2UgdGhhdCByZXF1aXJlcyBIeXBlci1WIGFuZCBzcGVjaWZpYyBBenVyZSBoYXJkd2FyZS4gSXQgaXMgaW1wb3NzaWJsZSB0byByZWFjaCB0aGlzIGNvZGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgdXNlZCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRldmljZSB0aGF0IHJlcXVpcmVzIEh5cGVyLVYgYW5kIHNwZWNpZmljIEF6dXJlIGhhcmR3YXJlLiBJdCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIHRoaXMgY29kZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB1c2VkIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowflq2v[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-12 07:42:56 +0000 UTC FinishedAt: 2026-07-12 08:17:00 +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+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRldmljZSB0aGF0IHJlcXVpcmVzIEh5cGVyLVYgYW5kIHNwZWNpZmljIEF6dXJlIGhhcmR3YXJlLiBJdCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIHRoaXMgY29kZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB1c2VkIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE2NWM5Y2E2ZTgyNWFhN2IyNmEzMDRkMjNjOWE2MzYwNDllMGZmZTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxMiAwODoxNjoyMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmNcbmluZGV4IDQ4YTlhY2VhNGFiNmMxLi5hMDkxNmI1MGNmZmNlNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jXG5AQCAtMTUyLDEwICYjNDM7MTUyLDE0IEBAIHN0YXRpYyB2b2lkIG1hbmFfaHdjX2luaXRfZXZlbnRfaGFuZGxlcih2b2lkICpjdHgsIHN0cnVjdCBnZG1hX3F1ZXVlICpxX3NlbGYsXG4gXHRcdFx0YnJlYWs7XG4gXG4gXHRcdGNhc2UgSFdDX0lOSVRfREFUQV9NQVhfUkVRVUVTVDpcbiYjNDM7XHRcdFx0aWYgKHZhbCA9PSAwIHx8IHZhbCBcdTAwM2UgSFdfQ0hBTk5FTF9NQVhfUkVRVUVTVF9TSVpFKVxuJiM0MztcdFx0XHRcdHZhbCA9IEhXX0NIQU5ORUxfTUFYX1JFUVVFU1RfU0laRTtcbiBcdFx0XHRod2MtXHUwMDNlaHdjX2luaXRfbWF4X3JlcV9tc2dfc2l6ZSA9IHZhbDtcbiBcdFx0XHRicmVhaztcbiBcbiBcdFx0Y2FzZSBIV0NfSU5JVF9EQVRBX01BWF9SRVNQT05TRTpcbiYjNDM7XHRcdFx0aWYgKHZhbCA9PSAwIHx8IHZhbCBcdTAwM2UgSFdfQ0hBTk5FTF9NQVhfUkVRVUVTVF9TSVpFKVxuJiM0MztcdFx0XHRcdHZhbCA9IEhXX0NIQU5ORUxfTUFYX1JFUVVFU1RfU0laRTtcbiBcdFx0XHRod2MtXHUwMDNlaHdjX2luaXRfbWF4X3Jlc3BfbXNnX3NpemUgPSB2YWw7XG4gXHRcdFx0YnJlYWs7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDg6MTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZGV2aWNlIHRoYXQgcmVxdWlyZXMgSHlwZXItViBhbmQgc3BlY2lmaWMgQXp1cmUgaGFyZHdhcmUuIEl0IGlzIGltcG9zc2libGUgdG8gcmVhY2ggdGhpcyBjb2RlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VIHVzZWQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhNjVjOWNhNmU4MjVhYTdiMjZhMzA0ZDIzYzlhNjM2MDQ5ZTBmZmU3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMTIgMDg6MTY6MjIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMKaW5kZXggNDhhOWFjZWE0YWI2YzEuLmEwOTE2YjUwY2ZmY2U3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jCkBAIC0xNTIsMTAgJiM0MzsxNTIsMTQgQEAgc3RhdGljIHZvaWQgbWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyKHZvaWQgKmN0eCwgc3RydWN0IGdkbWFfcXVldWUgKnFfc2VsZiwKIAkJCWJyZWFrOwogCiAJCWNhc2UgSFdDX0lOSVRfREFUQV9NQVhfUkVRVUVTVDoKJiM0MzsJCQlpZiAodmFsID09IDAgfHwgdmFsICZndDsgSFdfQ0hBTk5FTF9NQVhfUkVRVUVTVF9TSVpFKQomIzQzOwkJCQl2YWwgPSBIV19DSEFOTkVMX01BWF9SRVFVRVNUX1NJWkU7CiAJCQlod2MtJmd0O2h3Y19pbml0X21heF9yZXFfbXNnX3NpemUgPSB2YWw7CiAJCQlicmVhazsKIAogCQljYXNlIEhXQ19JTklUX0RBVEFfTUFYX1JFU1BPTlNFOgomIzQzOwkJCWlmICh2YWwgPT0gMCB8fCB2YWwgJmd0OyBIV19DSEFOTkVMX01BWF9SRVFVRVNUX1NJWkUpCiYjNDM7CQkJCXZhbCA9IEhXX0NIQU5ORUxfTUFYX1JFUVVFU1RfU0laRTsKIAkJCWh3Yy0mZ3Q7aHdjX2luaXRfbWF4X3Jlc3BfbXNnX3NpemUgPSB2YWw7CiAJCQlicmVhazsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTQ3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgYWZmZWN0aW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZGluZyBzb21lIGJvdW5kcyBjaGVja2luZyB0byBgbWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyYCwgc3BlY2lmaWNhbGx5IGZvciBgSFdDX0lOSVRfREFUQV9NQVhfUkVRVUVTVGAgYW5kIGBIV0NfSU5JVF9EQVRBX01BWF9SRVNQT05TRWAuIFRoYXQgc2VlbXMgbGlrZSBhIHNlbnNpYmxlIGFkZGl0aW9uOyBhbHdheXMgZ29vZCB0byBoYXZlIHRoYXQgZXh0cmEgbGF5ZXIgb2YgdmFsaWRhdGlvbi4KCk5vdywgbXkgbWluZCBqdW1wcyB0byByZWFjaGFiaWxpdHkuIEhvdyBsaWtlbHkgaXMgdGhpcyBjb2RlIHBhdGggdG8gYWN0dWFsbHkgYmUgaGl0PyBUaGlzIGlzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIGRyaXZlciwgYG1pY3Jvc29mdC9tYW5hYC4gVGhlIHF1ZXN0aW9uIGJlY29tZXMsIGNhbiB3ZSBmdXp6IHRoaXM/IEhhcmR3YXJlIGRyaXZlcnMgYXJlIG9mdGVuIGEgcGFpbiBiZWNhdXNlIHRoZXkgdHlwaWNhbGx5IHJlbHkgb24gc3BlY2lmaWMgUENJIGRldmljZXMuIENhbiB3ZSBlbXVsYXRlIHRoaXMsIG9yIGlzIGl0IHB1cmVseSBoYXJkd2FyZS1kZXBlbmRlbnQ/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGEgcHJhY3RpY2FsIHdheSB0byB0ZXN0IHRoaXMgcGF0Y2guIExldCBtZSBzZWUgaWYgZnV6emluZyBgbWFuYWAgaXMgZXZlbiBmZWFzaWJsZS4gVGhpcyBwYXRjaCB0b3VjaGVzIGBtYW5hX2h3Y19pbml0X2V2ZW50X2hhbmRsZXJgLCB3aGljaCBpcyBhIGtleSBhcmVhIHRvIGV4cGxvcmUuIExldCYjMzk7cyBtYWtlIHN1cmUgYG1hbmFgIGlzIGEgUENJIGRyaXZlci4gVGhhdCB3aWxsIGdpdmUgdXMgYW4gaW5pdGlhbCBwZXJzcGVjdGl2ZSBvbiB0aGUgY2hhbGxlbmdlIG9mIHNpbXVsYXRpbmcgdGhpcyBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYz03OT1zdGF0aWMgdm9pZCBtYW5hX2h3Y19oYW5kbGVfcmVzcChzdHJ1Y3QgaHdfY2hhbm5lbF9jb250ZXh0ICpod2MsIHUzMiByZXNwX2xlbixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtMTEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jOjExMzpzdGF0aWMgdm9pZCBtYW5hX2h3Y19pbml0X2V2ZW50X2hhbmRsZXIodm9pZCAqY3R4LCBzdHJ1Y3QgZ2RtYV9xdWV1ZSAqcV9zZWxmLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTExNC1cdFx0XHRcdFx0c3RydWN0IGdkbWFfZXZlbnQgKmV2ZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYz02NjM9c3RhdGljIGludCBtYW5hX2h3Y19lc3RhYmxpc2hfY2hhbm5lbChzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgdTE2ICpxX2RlcHRoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYy02OTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM6NjkyOlx0LyogQm90aCB3ZXJlIHNldCBpbiBtYW5hX2h3Y19pbml0X2V2ZW50X2hhbmRsZXIoKS4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYy02OTMtXHRpZiAoV0FSTl9PTihjcS1cdTAwM2VpZCBcdTAwM2U9IGdjLVx1MDAzZW1heF9udW1fY3FzKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM9NzA1PXN0YXRpYyBpbnQgbWFuYV9od2NfaW5pdF9xdWV1ZXMoc3RydWN0IGh3X2NoYW5uZWxfY29udGV4dCAqaHdjLCB1MTYgcV9kZXB0aCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtNzE3LVx0ZXJyID0gbWFuYV9od2NfY3JlYXRlX2NxKGh3YywgcV9kZXB0aCAqIDIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM6NzE4Olx0XHRcdFx0IG1hbmFfaHdjX2luaXRfZXZlbnRfaGFuZGxlciwgaHdjLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTcxOS1cdFx0XHRcdCBtYW5hX2h3Y19yeF9ldmVudF9oYW5kbGVyLCBod2MsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jPTgwNj12b2lkIG1hbmFfaHdjX2Rlc3Ryb3lfY2hhbm5lbChzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtODEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jOjgxMzpcdC8qIGdjLVx1MDAzZW1heF9udW1fY3FzIGlzIHNldCBpbiBtYW5hX2h3Y19pbml0X2V2ZW50X2hhbmRsZXIoKS4gSWYgaXQmIzM5O3NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYy04MTQtXHQgKiBub24temVybywgdGhlIEhXQyB3b3JrZWQgYW5kIHdlIHNob3VsZCB0ZWFyIGRvd24gdGhlIEhXQyBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIHRoZSBBenVyZSBOZXR3b3JrIEFkYXB0ZXIqKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBleGlzdGluZyBlbXVsYXRpb24gc3VwcG9ydCBvdXQgdGhlcmUgZm9yIHRoaXMgZGV2aWNlLiBNeSBpbml0aWFsIGd1dCBmZWVsaW5nIGlzIHRoYXQgYSByYXcgaGFyZHdhcmUgZHJpdmVyIGxpa2UgdGhpcyBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIHdvdWxkbiYjMzk7dCBiZSBkaXJlY3RseSBmdXp6YWJsZSB1bmxlc3MgaXQmIzM5O3MgcnVubmluZyAqdGhyb3VnaCogc29tZXRoaW5nIGxpa2UgUUVNVS4gRWl0aGVyIHRoYXQsIG9yIGl0JiMzOTtzIGEgdmlydHVhbCBkZXZpY2UgdG8gYmVnaW4gd2l0aCwgd2hpY2ggaXMgbXVjaCBtb3JlIG1hbmFnZWFibGUgZnJvbSBhIHRlc3RpbmcgcGVyc3BlY3RpdmUuIEhvbGQgb24uLi4gcmlnaHQsIE1BTkEgaXMgYSBQQ0kgZGV2aWNlLiBUaGF0IGNoYW5nZXMgdGhpbmdzIGEgYml0Li4uIG5vdyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIFBDSWUgZnV6emluZyBhbmQgcG90ZW50aWFsIHRhcmdldHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yMTc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtYW5hX2lkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIxODM6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hbmFfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE4NC1cdC5uYW1lXHRcdD0gXCYjMzQ7bWFuYVwmIzM0OyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDc3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGhpcyBQQ0kgRHJpdmVyOiBUaGUgQ2hhbGxlbmdlcyBhbmQgTGltaXRhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgUENJIGRyaXZlciBhbmQgbXkgZmlyc3QgaW5zdGluY3QgaXMsICYjMzQ7Q2FuIEkgZnV6eiB0aGlzIHRoaW5nPyYjMzQ7IE15IGluaXRpYWwgdGhvdWdodCBpcywgaG93IGRvIEkgZ28gYWJvdXQgdGhpcyB3aXRoIFN5emthbGxlcj8gSSYjMzk7bSB1c2VkIHRvIHRoZSBgdmhjaWAsIGB2bmV0YCwgYW5kIG90aGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBpdCBvZmZlcnMsIGJ1dCBpdCBzZWVtcyB0aGVyZSYjMzk7cyBubyBlcXVpdmFsZW50IGdlbmVyaWMgbWV0aG9kIGZvciBQQ0kgZGV2aWNlcywgdW5sZXNzIFFFTVUmIzM5O3MgZ290IHRoZSBzcGVjaWZpYyBkZXZpY2UgbW9kZWwgaW1wbGVtZW50ZWQuCgpXYWl0Li4uIGRvZXMgU3l6a2FsbGVyICphbHJlYWR5KiBzdXBwb3J0IHRoaXMgdmlhIGZ1bmN0aW9ucyBsaWtlIGBzeXpfcGNpX2Fzc2lnbl9kZXZpY2VgIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBJIGtlZXAgZ2V0dGluZyB0cmlwcGVkIHVwLiBObywgaG9sZCBvbi4gSXQgcmVsaWVzIG9uIFFFTVUmIzM5O3MgaW1wbGVtZW50YXRpb24sIGFuZCBjb25maWd1cmluZyBpdCB3aXRoaW4gc3l6a2FsbGVyLgoKUmlnaHQsIGJ1dCBkb2VzbiYjMzk7dCBTeXprYWxsZXIgKmRvKiBmdXp6aW5nIG9mIFBDSSB1c2luZyBgc3l6X3BjaV9hc3NpZ25fZGV2aWNlYCBhbmQgYHN5el9wY2lfc2V0dXBgPyBPciBpcyBpdCBzb21ldGhpbmcgbGlrZSB0aGUgYHN5el9rdm1fc2V0dXBfY3B1YCBjYWxscz8gVGhpcyBpcyBjb25mdXNpbmchCgpObywgbXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IFN5emthbGxlciAqZG9lcyogaGF2ZSBzdXBwb3J0IGZvciBQQ0kgZGV2aWNlcyB2aWEgYHN5el9wY2lfYXNzaWduX2RldmljZWAuIEJ1dCB3YWl0LCBpdCBkb2VzbiYjMzk7dCBoYXZlIHRoZSBzYW1lIGVtdWxhdGVkIGluZnJhc3RydWN0dXJlIEkgc2VlIGluIFVTQiwgd2lmaSBhbmQgbmV0d29ya2luZywgdGhlcmUgaXMgbm90aGluZyBsaWtlIGB2aGNpYCBmb3IgVVNCIG9yIGBtYWM4MDIxMV9od3NpbWAgZm9yIHdpZmkgb3IgYHZuZXRgIGZvciBuZXQuIEl0IHNlZW1zIGl0ICpyZXF1aXJlcyogdGhhdCBRRU1VIGFjdHVhbGx5ICplbXVsYXRlKiB0aGUgZGV2aWNlIEkmIzM5O20gdGFyZ2V0aW5nLgoKTm93LCBkb2VzIFFFTVUgZXZlbiBwcm92aWRlIGEgTUFOQSBkZXZpY2U/IEFjdHVhbGx5LCBubywgTUFOQSBpcyBzcGVjaWZpYyB0byBBenVyZSwgcmlnaHQ/IFNvIHRoZSBkcml2ZXIgSSYjMzk7bSBsb29raW5nIGF0IHJlbGllcyBvbiB0aGF0IHNwZWNpZmljIGh5cGVydmlzb3IgZW52aXJvbm1lbnQuCgpUaGlzIGlzIGEgcHJvYmxlbS4gSWYgSSYjMzk7bSB3b3JraW5nIGluIGEgbW9yZSBzdGFuZGFyZCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBRRU1VIHdpdGhvdXQgdGhhdCBzcGVjaWZpYyBNQU5BIGRldmljZSwgaXQmIzM5O3MgdmlydHVhbGx5IGltcG9zc2libGUgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBvYnZpb3VzLCBsZXQgbWUgZG91YmxlLWNoZWNrIGlmIHRoZXJlJiMzOTtzIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoZSBNQU5BIGRldmljZSBhdmFpbGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDg6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYz03OT1zdGF0aWMgdm9pZCBtYW5hX2h3Y19oYW5kbGVfcmVzcChzdHJ1Y3QgaHdfY2hhbm5lbF9jb250ZXh0ICpod2MsIHUzMiByZXNwX2xlbixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtMTEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jOjExMzpzdGF0aWMgdm9pZCBtYW5hX2h3Y19pbml0X2V2ZW50X2hhbmRsZXIodm9pZCAqY3R4LCBzdHJ1Y3QgZ2RtYV9xdWV1ZSAqcV9zZWxmLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTExNC1cdFx0XHRcdFx0c3RydWN0IGdkbWFfZXZlbnQgKmV2ZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYz02NjM9c3RhdGljIGludCBtYW5hX2h3Y19lc3RhYmxpc2hfY2hhbm5lbChzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgdTE2ICpxX2RlcHRoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYy02OTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM6NjkyOlx0LyogQm90aCB3ZXJlIHNldCBpbiBtYW5hX2h3Y19pbml0X2V2ZW50X2hhbmRsZXIoKS4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYy02OTMtXHRpZiAoV0FSTl9PTihjcS1cdTAwM2VpZCBcdTAwM2U9IGdjLVx1MDAzZW1heF9udW1fY3FzKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM9NzA1PXN0YXRpYyBpbnQgbWFuYV9od2NfaW5pdF9xdWV1ZXMoc3RydWN0IGh3X2NoYW5uZWxfY29udGV4dCAqaHdjLCB1MTYgcV9kZXB0aCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtNzE3LVx0ZXJyID0gbWFuYV9od2NfY3JlYXRlX2NxKGh3YywgcV9kZXB0aCAqIDIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM6NzE4Olx0XHRcdFx0IG1hbmFfaHdjX2luaXRfZXZlbnRfaGFuZGxlciwgaHdjLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTcxOS1cdFx0XHRcdCBtYW5hX2h3Y19yeF9ldmVudF9oYW5kbGVyLCBod2MsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jPTgwNj12b2lkIG1hbmFfaHdjX2Rlc3Ryb3lfY2hhbm5lbChzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtODEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jOjgxMzpcdC8qIGdjLVx1MDAzZW1heF9udW1fY3FzIGlzIHNldCBpbiBtYW5hX2h3Y19pbml0X2V2ZW50X2hhbmRsZXIoKS4gSWYgaXQmIzM5O3NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYy04MTQtXHQgKiBub24temVybywgdGhlIEhXQyB3b3JrZWQgYW5kIHdlIHNob3VsZCB0ZWFyIGRvd24gdGhlIEhXQyBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MzcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgUENJIEZ1enppbmcgQnJhaW5zdG9ybSoqCgpPa2F5LCB3YWl0IGEgbWludXRlLCBJIHRob3VnaHQgSSByZW1lbWJlcmVkIHNvbWV0aGluZy4uLiBkb2VzbiYjMzk7dCBzeXprYWxsZXIgYWN0dWFsbHkgKmhhdmUqIHNvbWUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzPyBJcyBpdCB0aGUgYHZmaW9gIG9yIHRoZSBgcGNpYCBmdXp6aW5nIG9wdGlvbnM/IEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gd2hldGhlciBzeXprYWxsZXIgY2FuIGRpcmVjdGx5IHRhcmdldCBQQ0kgZGV2aWNlcy4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgc3lzY2FsbCByZWZlcmVuY2VzLiBBaCwgYnV0IGRvZXMgc3l6a2FsbGVyIGhhdmUsIGZvciBpbnN0YW5jZSwgYSBgc3l6X3BjaV9hc3NpZ25fZGV2aWNlYCBzeXNjYWxsPyBObywgdGhhdCYjMzk7cyBub3QgaXQuIE9rYXksIHdhaXQsIEkgc2VlIHRoZSBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYCBhbmQgdGhlIG90aGVycy4gVGhpcyBkb2VzbiYjMzk7dCBkaXJlY3RseSBzcGVhayB0byBQQ0kuCgpTbywgZG9lcyBzeXprYWxsZXIgKnJlYWxseSogZnV6eiBQQ0kgZGV2aWNlcyB0aGVuPyBIb3cgZXhhY3RseSBkb2VzIGl0IGRvIGl0PyBMZXQgbWUgc2NhbiB0aGUga2VybmVsIGZvciBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaWAuLi4gbm90aGluZyBvYnZpb3VzLiBBaCwgcmlnaHQhIEl0IGZ1enplcyBQQ0kgZGV2aWNlcyB0aHJvdWdoIGluZGlyZWN0IG1lYW5zIOKAkyBlaXRoZXIgYnkgaW5qZWN0aW5nIGRpcmVjdGx5IGludG8gdGhlIFBDSSBjb25maWcgc3BhY2UsIG9yIGxldmVyYWdpbmcgUUVNVSYjMzk7cyBQQ0kgZW11bGF0aW9uLiBUaGF0JiMzOTtzIHRoZSBrZXkuCgpTbywgdGhlIG5leHQgcXVlc3Rpb246IGRvZXMgdGhpcyBhcHByb2FjaCBoZWxwIG1lIHdpdGggTUFOQT8KCkFoLCByaWdodC4uLiBNQU5BIGlzIG5vdCBwcmVzZW50IGluIFFFTVUuIEl0JiMzOTtzIGEgSHlwZXItViBzcGVjaWZpYyBkZXZpY2UuCgpIYW5nIG9uLi4uIElzIE1BTkEgYSBWTUJ1cyBkZXZpY2UgdGhlbj8gV2UgbWlnaHQgYmUgY2xvc2VyIHRoYW4gSSBvcmlnaW5hbGx5IHRob3VnaHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm1idXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDczCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgUENJIERldmljZSBJc3N1ZSoqCgpBbHJpZ2h0LCBhIFBDSSBkZXZpY2UsIHRoYXQgbmFycm93cyB0aGluZ3MgZG93biBjb25zaWRlcmFibHkuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiB0aGUgY29udGV4dCwgaXMgdGhhdCB3ZSYjMzk7cmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBhIG5ldHdvcmtpbmcgY29tcG9uZW50LiBDb25zaWRlcmluZyB0aGUgcHJldmFsZW5jZSBvZiBNaWNyb3NvZnQgZHJpdmVycyBpbiB2YXJpb3VzIG5ldHdvcmsgaW50ZXJmYWNlcywgbGV0JiMzOTtzIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UgYW5kIGV4YW1pbmUgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9LY29uZmlnYCBmaWxlLiBUaGlzIEtjb25maWcgZmlsZSB3aWxsIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBwYXJ0aWN1bGFyIE1pY3Jvc29mdCBkZXZpY2UsIHRoZSAmIzM5O21hbmEmIzM5OyBkcml2ZXIsIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBrZXJuZWwuIEl04oCZbGwgdGVsbCB1cyBhbGwgdGhlIGJ1aWxkIG9wdGlvbnMsIGFueSBkZXBlbmRlbmNpZXMsIGFuZCBob3BlZnVsbHkgc2hlZCBsaWdodCBvbiBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIG1pc3NpbmcgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byB0aGlzIFBDSSBkZXZpY2UuIEkgZXhwZWN0IGl0IHRvIGhhdmUgY2x1ZXMgYWJvdXQgd2hhdCBtb2R1bGUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCwgYW5kIHRodXMgd2hhdCBvdGhlciB0aGluZ3MgdG8gY2hlY2sgYWZ0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+dGhlIGZpbGUgZG9lcyBub3QgZXhpc3Q8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O3RoZSBmaWxlIGRvZXMgbm90IGV4aXN0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzQyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gaXQuCgoqKktjb25maWcgRGl2ZTogRXRoZXJuZXQvTWljcm9zb2Z0KioKCkFscmlnaHQsIHRpbWUgdG8gY3JhY2sgb3BlbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIE1pY3Jvc29mdCYjMzk7cyBFdGhlcm5ldCBkcml2ZXJzLiBJdOKAmXMgYWx3YXlzIHRoZSBLY29uZmlnIGZpbGVzIHRoYXQgYXJlIHRoZSBoZWFydCBvZiB1bmRlcnN0YW5kaW5nIGhvdyBhIGRyaXZlciBpcyBpbnRlZ3JhdGVkIGFuZCBjb25maWd1cmFibGUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGxvd2Rvd24gb24gd2hhdCBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkLCB3aGF0IGRlcGVuZGVuY2llcyBleGlzdCwgYW5kIGhvdyB1c2VycyBjYW4gZW5hYmxlIG9yIGRpc2FibGUgdGhlIHZhcmlvdXMgY29tcG9uZW50cy4gSSYjMzk7bSBlc3BlY2lhbGx5IGtlZW4gdG8gc2VlIGhvdyB0aGV5JiMzOTt2ZSBoYW5kbGVkIHRoZSBtb3JlIHJlY2VudCBhZHZhbmNlbWVudHMsIGlmIHRoZXkmIzM5O3JlIHRoZXJlLiBUaW1lIHRvIHNlZSB3aGF0IE1pY3Jvc29mdCYjMzk7cyBlbmdpbmVlcnMgaGF2ZSBiZWVuIHVwIHRvLiBUaGlzIHNob3VsZCBiZSBhIHF1aWNrIGNoZWNrLCBidXQgYWx3YXlzIHJldmVhbGluZy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHN0b3JlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCNcbiAgIDI6XHQjIE1pY3Jvc29mdCBBenVyZSBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXG4gICAzOlx0I1xuICAgNDpcdFxuICAgNTpcdGNvbmZpZyBORVRfVkVORE9SX01JQ1JPU09GVFxuICAgNjpcdFx0Ym9vbCBcJiMzNDtNaWNyb3NvZnQgTmV0d29yayBEZXZpY2VzXCYjMzQ7XG4gICA3Olx0XHRkZWZhdWx0IHlcbiAgIDg6XHRcdGhlbHBcbiAgIDk6XHRcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgZGV2aWNlIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cbiAgMTA6XHRcbiAgMTE6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gIDEyOlx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCB0aGVcbiAgMTM6XHRcdCAgcXVlc3Rpb24gYWJvdXQgTWljcm9zb2Z0IG5ldHdvcmsgZGV2aWNlcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZVxuICAxNDpcdFx0ICBhc2tlZCBmb3IgeW91ciBzcGVjaWZpYyBkZXZpY2UgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbi5cbiAgMTU6XHRcbiAgMTY6XHRpZiBORVRfVkVORE9SX01JQ1JPU09GVFxuICAxNzpcdFxuICAxODpcdGNvbmZpZyBNSUNST1NPRlRfTUFOQVxuICAxOTpcdFx0dHJpc3RhdGUgXCYjMzQ7TWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgc3VwcG9ydFwmIzM0O1xuICAyMDpcdFx0ZGVwZW5kcyBvbiBQQ0lfTVNJXG4gIDIxOlx0XHRkZXBlbmRzIG9uIFg4Nl82NCB8fCAoQVJNNjQgXHUwMDI2XHUwMDI2ICFDUFVfQklHX0VORElBTilcbiAgMjI6XHRcdGRlcGVuZHMgb24gUENJX0hZUEVSVlxuICAyMzpcdFx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbiAgMjQ6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMjU6XHRcdHNlbGVjdCBORVRfU0hBUEVSXG4gIDI2Olx0XHRoZWxwXG4gIDI3Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpLlxuICAyODpcdFx0ICBTbyBmYXIsIHRoZSBkcml2ZXIgaXMgb25seSBzdXBwb3J0ZWQgb24gWDg2XzY0LlxuICAyOTpcdFxuICAzMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAzMTpcdFx0ICBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIG1hbmEuXG4gIDMyOlx0XG4gIDMzOlx0ZW5kaWYgI05FVF9WRU5ET1JfTUlDUk9TT0ZUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MDEKCQkJCQkJCW91dHB1dDogODcKCQkJCQkJCXRob3VnaHRzOiAyODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIERlY2lzaW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBrZXkgZmFjdG9yIGhlcmUgc2VlbXMgdG8gaGluZ2Ugb24gYFBDSV9IWVBFUlZgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIHRoaXMgYXMgYSBQQ0kgZGV2aWNlIGRlc2lnbmVkIGZvciBIeXBlci1WLiBOb3csIEkga25vdyBTeXprYWxsZXIgdXN1YWxseSBydW5zIG9uIEdDRSAoS1ZNKSBvciBRRU1VIChLVk0pLCBub3QgSHlwZXItVi4gQW5kIHRoZSBtZW50aW9uIG9mIGEgTUFOQSBkZXZpY2Ugc3BlY2lmaWNhbGx5IHBvaW50cyB0byBBenVyZSwgd2hpY2ggc29saWRpZmllcyB0aGlzIGFzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLgoKU28sIGluIGEgc3RhbmRhcmQgS1ZNIGVudmlyb25tZW50IOKAkyB0aGUga2luZCB3ZSYjMzk7ZCB0eXBpY2FsbHkgdXNlIGZvciBmdXp6aW5nIOKAkyB0aGVyZSYjMzk7cyBqdXN0IG5vIHdheSB0byB0cmlnZ2VyIHRoaXMgY29kZS4gSXQmIzM5O3Mgc2ltcGx5IHVucmVhY2hhYmxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gYW5zd2VyaW5nIHRoZSByaWdodCBxdWVzdGlvbiAtIHdhaXQsIGxldCBtZSByZS1yZWFkIHRoZSBwcm9tcHQuLi4KClllcywgdGhlIHByb21wdCBleHBsaWNpdGx5IHN0YXRlcyB0aGF0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBsaWtlIHRoaXMgb25lLCBzaG91bGQgcmVzdWx0IGluIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGlzIEF6dXJlL0h5cGVyLVYgc3BlY2lmaWMgZHJpdmVyIGZhbGxzIHNxdWFyZWx5IGludG8gdGhhdCBjYXRlZ29yeS4gTm8gYW1vdW50IG9mIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIHdvdWxkIG1ha2UgdGhpcyByZWFjaGFibGUgdW5kZXIgbm9ybWFsIGZ1enppbmcgY29uZGl0aW9ucy4KClRoZXJlZm9yZSwgdGhlIGFuc3dlciBpcyBjbGVhcjogYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA4OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZGV2aWNlIHRoYXQgcmVxdWlyZXMgSHlwZXItViBhbmQgc3BlY2lmaWMgQXp1cmUgaGFyZHdhcmUuIEl0IGlzIGltcG9zc2libGUgdG8gcmVhY2ggdGhpcyBjb2RlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VIHVzZWQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkZXZpY2UgdGhhdCByZXF1aXJlcyBIeXBlci1WIGFuZCBzcGVjaWZpYyBBenVyZSBoYXJkd2FyZS4gSXQgaXMgaW1wb3NzaWJsZSB0byByZWFjaCB0aGlzIGNvZGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgdXNlZCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODoxNjoyMy45NzMyNDY1MzZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDYzNDYyNTEzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZGV2aWNlIHRoYXQgcmVxdWlyZXMgSHlwZXItViBhbmQgc3BlY2lmaWMgQXp1cmUgaGFyZHdhcmUuIEl0IGlzIGltcG9zc2libGUgdG8gcmVhY2ggdGhpcyBjb2RlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VIHVzZWQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODoxNjoyMy45NzMyNTE1MTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxODcxODA3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGE2NWM5Y2E2ZTgyNWFhN2IyNmEzMDRkMjNjOWE2MzYwNDllMGZmZTdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMTIgMDg6MTY6MjIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jXFxuaW5kZXggNDhhOWFjZWE0YWI2YzEuLmEwOTE2YjUwY2ZmY2U3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuY1xcbkBAIC0xNTIsMTAgKzE1MiwxNCBAQCBzdGF0aWMgdm9pZCBtYW5hX2h3Y19pbml0X2V2ZW50X2hhbmRsZXIodm9pZCAqY3R4LCBzdHJ1Y3QgZ2RtYV9xdWV1ZSAqcV9zZWxmLFxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFxuIFxcdFxcdGNhc2UgSFdDX0lOSVRfREFUQV9NQVhfUkVRVUVTVDpcXG4rXFx0XFx0XFx0aWYgKHZhbCA9PSAwIHx8IHZhbCBcXHUwMDNlIEhXX0NIQU5ORUxfTUFYX1JFUVVFU1RfU0laRSlcXG4rXFx0XFx0XFx0XFx0dmFsID0gSFdfQ0hBTk5FTF9NQVhfUkVRVUVTVF9TSVpFO1xcbiBcXHRcXHRcXHRod2MtXFx1MDAzZWh3Y19pbml0X21heF9yZXFfbXNnX3NpemUgPSB2YWw7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXG4gXFx0XFx0Y2FzZSBIV0NfSU5JVF9EQVRBX01BWF9SRVNQT05TRTpcXG4rXFx0XFx0XFx0aWYgKHZhbCA9PSAwIHx8IHZhbCBcXHUwMDNlIEhXX0NIQU5ORUxfTUFYX1JFUVVFU1RfU0laRSlcXG4rXFx0XFx0XFx0XFx0dmFsID0gSFdfQ0hBTk5FTF9NQVhfUkVRVUVTVF9TSVpFO1xcbiBcXHRcXHRcXHRod2MtXFx1MDAzZWh3Y19pbml0X21heF9yZXNwX21zZ19zaXplID0gdmFsO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjE2OjI0LjQ5MjY5OTMwNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQxMTUxNjExOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRldmljZSB0aGF0IHJlcXVpcmVzIEh5cGVyLVYgYW5kIHNwZWNpZmljIEF6dXJlIGhhcmR3YXJlLiBJdCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIHRoaXMgY29kZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB1c2VkIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhNjVjOWNhNmU4MjVhYTdiMjZhMzA0ZDIzYzlhNjM2MDQ5ZTBmZmU3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTIgMDg6MTY6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmNcbmluZGV4IDQ4YTlhY2VhNGFiNmMxLi5hMDkxNmI1MGNmZmNlNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jXG5AQCAtMTUyLDEwICsxNTIsMTQgQEAgc3RhdGljIHZvaWQgbWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyKHZvaWQgKmN0eCwgc3RydWN0IGdkbWFfcXVldWUgKnFfc2VsZixcbiBcdFx0XHRicmVhaztcbiBcbiBcdFx0Y2FzZSBIV0NfSU5JVF9EQVRBX01BWF9SRVFVRVNUOlxuK1x0XHRcdGlmICh2YWwgPT0gMCB8fCB2YWwgXHUwMDNlIEhXX0NIQU5ORUxfTUFYX1JFUVVFU1RfU0laRSlcbitcdFx0XHRcdHZhbCA9IEhXX0NIQU5ORUxfTUFYX1JFUVVFU1RfU0laRTtcbiBcdFx0XHRod2MtXHUwMDNlaHdjX2luaXRfbWF4X3JlcV9tc2dfc2l6ZSA9IHZhbDtcbiBcdFx0XHRicmVhaztcbiBcbiBcdFx0Y2FzZSBIV0NfSU5JVF9EQVRBX01BWF9SRVNQT05TRTpcbitcdFx0XHRpZiAodmFsID09IDAgfHwgdmFsIFx1MDAzZSBIV19DSEFOTkVMX01BWF9SRVFVRVNUX1NJWkUpXG4rXHRcdFx0XHR2YWwgPSBIV19DSEFOTkVMX01BWF9SRVFVRVNUX1NJWkU7XG4gXHRcdFx0aHdjLVx1MDAzZWh3Y19pbml0X21heF9yZXNwX21zZ19zaXplID0gdmFsO1xuIFx0XHRcdGJyZWFrO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDg6MTY6MjQuNDkyNzAxMjc2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY1MjM0NjMyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSBhZmZlY3RpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgc29tZSBib3VuZHMgY2hlY2tpbmcgdG8gYG1hbmFfaHdjX2luaXRfZXZlbnRfaGFuZGxlcmAsIHNwZWNpZmljYWxseSBmb3IgYEhXQ19JTklUX0RBVEFfTUFYX1JFUVVFU1RgIGFuZCBgSFdDX0lOSVRfREFUQV9NQVhfUkVTUE9OU0VgLiBUaGF0IHNlZW1zIGxpa2UgYSBzZW5zaWJsZSBhZGRpdGlvbjsgYWx3YXlzIGdvb2QgdG8gaGF2ZSB0aGF0IGV4dHJhIGxheWVyIG9mIHZhbGlkYXRpb24uXG5cbk5vdywgbXkgbWluZCBqdW1wcyB0byByZWFjaGFiaWxpdHkuIEhvdyBsaWtlbHkgaXMgdGhpcyBjb2RlIHBhdGggdG8gYWN0dWFsbHkgYmUgaGl0PyBUaGlzIGlzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIGRyaXZlciwgYG1pY3Jvc29mdC9tYW5hYC4gVGhlIHF1ZXN0aW9uIGJlY29tZXMsIGNhbiB3ZSBmdXp6IHRoaXM/IEhhcmR3YXJlIGRyaXZlcnMgYXJlIG9mdGVuIGEgcGFpbiBiZWNhdXNlIHRoZXkgdHlwaWNhbGx5IHJlbHkgb24gc3BlY2lmaWMgUENJIGRldmljZXMuIENhbiB3ZSBlbXVsYXRlIHRoaXMsIG9yIGlzIGl0IHB1cmVseSBoYXJkd2FyZS1kZXBlbmRlbnQ/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYSBwcmFjdGljYWwgd2F5IHRvIHRlc3QgdGhpcyBwYXRjaC4gTGV0IG1lIHNlZSBpZiBmdXp6aW5nIGBtYW5hYCBpcyBldmVuIGZlYXNpYmxlLiBUaGlzIHBhdGNoIHRvdWNoZXMgYG1hbmFfaHdjX2luaXRfZXZlbnRfaGFuZGxlcmAsIHdoaWNoIGlzIGEga2V5IGFyZWEgdG8gZXhwbG9yZS4gTGV0J3MgbWFrZSBzdXJlIGBtYW5hYCBpcyBhIFBDSSBkcml2ZXIuIFRoYXQgd2lsbCBnaXZlIHVzIGFuIGluaXRpYWwgcGVyc3BlY3RpdmUgb24gdGhlIGNoYWxsZW5nZSBvZiBzaW11bGF0aW5nIHRoaXMgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTQ3LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDg6MTY6MjkuMTQ1MDUxOTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA4OTQwNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM9Nzk9c3RhdGljIHZvaWQgbWFuYV9od2NfaGFuZGxlX3Jlc3Aoc3RydWN0IGh3X2NoYW5uZWxfY29udGV4dCAqaHdjLCB1MzIgcmVzcF9sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtMTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYzoxMTM6c3RhdGljIHZvaWQgbWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyKHZvaWQgKmN0eCwgc3RydWN0IGdkbWFfcXVldWUgKnFfc2VsZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtMTE0LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBnZG1hX2V2ZW50ICpldmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYz02NjM9c3RhdGljIGludCBtYW5hX2h3Y19lc3RhYmxpc2hfY2hhbm5lbChzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgdTE2ICpxX2RlcHRoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTY5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM6NjkyOlxcdC8qIEJvdGggd2VyZSBzZXQgaW4gbWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyKCkuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTY5My1cXHRpZiAoV0FSTl9PTihjcS1cXHUwMDNlaWQgXFx1MDAzZT0gZ2MtXFx1MDAzZW1heF9udW1fY3FzKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYz03MDU9c3RhdGljIGludCBtYW5hX2h3Y19pbml0X3F1ZXVlcyhzdHJ1Y3QgaHdfY2hhbm5lbF9jb250ZXh0ICpod2MsIHUxNiBxX2RlcHRoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTcxNy1cXHRlcnIgPSBtYW5hX2h3Y19jcmVhdGVfY3EoaHdjLCBxX2RlcHRoICogMixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM6NzE4OlxcdFxcdFxcdFxcdCBtYW5hX2h3Y19pbml0X2V2ZW50X2hhbmRsZXIsIGh3YyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtNzE5LVxcdFxcdFxcdFxcdCBtYW5hX2h3Y19yeF9ldmVudF9oYW5kbGVyLCBod2MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM9ODA2PXZvaWQgbWFuYV9od2NfZGVzdHJveV9jaGFubmVsKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTgxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM6ODEzOlxcdC8qIGdjLVxcdTAwM2VtYXhfbnVtX2NxcyBpcyBzZXQgaW4gbWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyKCkuIElmIGl0J3NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtODE0LVxcdCAqIG5vbi16ZXJvLCB0aGUgSFdDIHdvcmtlZCBhbmQgd2Ugc2hvdWxkIHRlYXIgZG93biB0aGUgSFdDIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjE2OjI5LjIwNTk1MjAyN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzYwODQ2OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiB0aGUgQXp1cmUgTmV0d29yayBBZGFwdGVyKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQncyBzZWUgaWYgdGhlcmUncyBhbnkgZXhpc3RpbmcgZW11bGF0aW9uIHN1cHBvcnQgb3V0IHRoZXJlIGZvciB0aGlzIGRldmljZS4gTXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGF0IGEgcmF3IGhhcmR3YXJlIGRyaXZlciBsaWtlIHRoaXMgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciB3b3VsZG4ndCBiZSBkaXJlY3RseSBmdXp6YWJsZSB1bmxlc3MgaXQncyBydW5uaW5nICp0aHJvdWdoKiBzb21ldGhpbmcgbGlrZSBRRU1VLiBFaXRoZXIgdGhhdCwgb3IgaXQncyBhIHZpcnR1YWwgZGV2aWNlIHRvIGJlZ2luIHdpdGgsIHdoaWNoIGlzIG11Y2ggbW9yZSBtYW5hZ2VhYmxlIGZyb20gYSB0ZXN0aW5nIHBlcnNwZWN0aXZlLiBIb2xkIG9uLi4uIHJpZ2h0LCBNQU5BIGlzIGEgUENJIGRldmljZS4gVGhhdCBjaGFuZ2VzIHRoaW5ncyBhIGJpdC4uLiBub3cgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIFBDSWUgZnV6emluZyBhbmQgcG90ZW50aWFsIHRhcmdldHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwOTIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODoxNjozMi4zODIwMzg4MjlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ5Njk5NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjE3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbWFuYV9pZF90YWJsZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjE4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMTgzOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtYW5hX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMTg0LVxcdC5uYW1lXFx0XFx0PSBcXFwibWFuYVxcXCIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjE2OjMyLjQzNzAxNDE1NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2OTA0NzQyOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUaGlzIFBDSSBEcml2ZXI6IFRoZSBDaGFsbGVuZ2VzIGFuZCBMaW1pdGF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgUENJIGRyaXZlciBhbmQgbXkgZmlyc3QgaW5zdGluY3QgaXMsIFwiQ2FuIEkgZnV6eiB0aGlzIHRoaW5nP1wiIE15IGluaXRpYWwgdGhvdWdodCBpcywgaG93IGRvIEkgZ28gYWJvdXQgdGhpcyB3aXRoIFN5emthbGxlcj8gSSdtIHVzZWQgdG8gdGhlIGB2aGNpYCwgYHZuZXRgLCBhbmQgb3RoZXIgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGl0IG9mZmVycywgYnV0IGl0IHNlZW1zIHRoZXJlJ3Mgbm8gZXF1aXZhbGVudCBnZW5lcmljIG1ldGhvZCBmb3IgUENJIGRldmljZXMsIHVubGVzcyBRRU1VJ3MgZ290IHRoZSBzcGVjaWZpYyBkZXZpY2UgbW9kZWwgaW1wbGVtZW50ZWQuXG5cbldhaXQuLi4gZG9lcyBTeXprYWxsZXIgKmFscmVhZHkqIHN1cHBvcnQgdGhpcyB2aWEgZnVuY3Rpb25zIGxpa2UgYHN5el9wY2lfYXNzaWduX2RldmljZWAgb3Igc29tZXRoaW5nIHNpbWlsYXI/IEkga2VlcCBnZXR0aW5nIHRyaXBwZWQgdXAuIE5vLCBob2xkIG9uLiBJdCByZWxpZXMgb24gUUVNVSdzIGltcGxlbWVudGF0aW9uLCBhbmQgY29uZmlndXJpbmcgaXQgd2l0aGluIHN5emthbGxlci5cblxuUmlnaHQsIGJ1dCBkb2Vzbid0IFN5emthbGxlciAqZG8qIGZ1enppbmcgb2YgUENJIHVzaW5nIGBzeXpfcGNpX2Fzc2lnbl9kZXZpY2VgIGFuZCBgc3l6X3BjaV9zZXR1cGA/IE9yIGlzIGl0IHNvbWV0aGluZyBsaWtlIHRoZSBgc3l6X2t2bV9zZXR1cF9jcHVgIGNhbGxzPyBUaGlzIGlzIGNvbmZ1c2luZyFcblxuTm8sIG15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBTeXprYWxsZXIgKmRvZXMqIGhhdmUgc3VwcG9ydCBmb3IgUENJIGRldmljZXMgdmlhIGBzeXpfcGNpX2Fzc2lnbl9kZXZpY2VgLiBCdXQgd2FpdCwgaXQgZG9lc24ndCBoYXZlIHRoZSBzYW1lIGVtdWxhdGVkIGluZnJhc3RydWN0dXJlIEkgc2VlIGluIFVTQiwgd2lmaSBhbmQgbmV0d29ya2luZywgdGhlcmUgaXMgbm90aGluZyBsaWtlIGB2aGNpYCBmb3IgVVNCIG9yIGBtYWM4MDIxMV9od3NpbWAgZm9yIHdpZmkgb3IgYHZuZXRgIGZvciBuZXQuIEl0IHNlZW1zIGl0ICpyZXF1aXJlcyogdGhhdCBRRU1VIGFjdHVhbGx5ICplbXVsYXRlKiB0aGUgZGV2aWNlIEknbSB0YXJnZXRpbmcuXG5cbk5vdywgZG9lcyBRRU1VIGV2ZW4gcHJvdmlkZSBhIE1BTkEgZGV2aWNlPyBBY3R1YWxseSwgbm8sIE1BTkEgaXMgc3BlY2lmaWMgdG8gQXp1cmUsIHJpZ2h0PyBTbyB0aGUgZHJpdmVyIEknbSBsb29raW5nIGF0IHJlbGllcyBvbiB0aGF0IHNwZWNpZmljIGh5cGVydmlzb3IgZW52aXJvbm1lbnQuXG5cblRoaXMgaXMgYSBwcm9ibGVtLiBJZiBJJ20gd29ya2luZyBpbiBhIG1vcmUgc3RhbmRhcmQgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVSB3aXRob3V0IHRoYXQgc3BlY2lmaWMgTUFOQSBkZXZpY2UsIGl0J3MgdmlydHVhbGx5IGltcG9zc2libGUgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3Npbmcgc29tZXRoaW5nIG9idmlvdXMsIGxldCBtZSBkb3VibGUtY2hlY2sgaWYgdGhlcmUncyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGUgTUFOQSBkZXZpY2UgYXZhaWxhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDc3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjE2OjM5LjEyNzQ5MDUzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwOTcyMDU5NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM9Nzk9c3RhdGljIHZvaWQgbWFuYV9od2NfaGFuZGxlX3Jlc3Aoc3RydWN0IGh3X2NoYW5uZWxfY29udGV4dCAqaHdjLCB1MzIgcmVzcF9sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtMTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYzoxMTM6c3RhdGljIHZvaWQgbWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyKHZvaWQgKmN0eCwgc3RydWN0IGdkbWFfcXVldWUgKnFfc2VsZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtMTE0LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBnZG1hX2V2ZW50ICpldmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYz02NjM9c3RhdGljIGludCBtYW5hX2h3Y19lc3RhYmxpc2hfY2hhbm5lbChzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgdTE2ICpxX2RlcHRoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTY5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM6NjkyOlxcdC8qIEJvdGggd2VyZSBzZXQgaW4gbWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyKCkuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTY5My1cXHRpZiAoV0FSTl9PTihjcS1cXHUwMDNlaWQgXFx1MDAzZT0gZ2MtXFx1MDAzZW1heF9udW1fY3FzKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2h3X2NoYW5uZWwuYz03MDU9c3RhdGljIGludCBtYW5hX2h3Y19pbml0X3F1ZXVlcyhzdHJ1Y3QgaHdfY2hhbm5lbF9jb250ZXh0ICpod2MsIHUxNiBxX2RlcHRoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTcxNy1cXHRlcnIgPSBtYW5hX2h3Y19jcmVhdGVfY3EoaHdjLCBxX2RlcHRoICogMixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM6NzE4OlxcdFxcdFxcdFxcdCBtYW5hX2h3Y19pbml0X2V2ZW50X2hhbmRsZXIsIGh3YyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtNzE5LVxcdFxcdFxcdFxcdCBtYW5hX2h3Y19yeF9ldmVudF9oYW5kbGVyLCBod2MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM9ODA2PXZvaWQgbWFuYV9od2NfZGVzdHJveV9jaGFubmVsKHN0cnVjdCBnZG1hX2NvbnRleHQgKmdjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvaHdfY2hhbm5lbC5jLTgxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmM6ODEzOlxcdC8qIGdjLVxcdTAwM2VtYXhfbnVtX2NxcyBpcyBzZXQgaW4gbWFuYV9od2NfaW5pdF9ldmVudF9oYW5kbGVyKCkuIElmIGl0J3NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9od19jaGFubmVsLmMtODE0LVxcdCAqIG5vbi16ZXJvLCB0aGUgSFdDIHdvcmtlZCBhbmQgd2Ugc2hvdWxkIHRlYXIgZG93biB0aGUgSFdDIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjE2OjQxLjIyNDcwMTQ2NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMzcxNDg4NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgUENJIEZ1enppbmcgQnJhaW5zdG9ybSoqXG5cbk9rYXksIHdhaXQgYSBtaW51dGUsIEkgdGhvdWdodCBJIHJlbWVtYmVyZWQgc29tZXRoaW5nLi4uIGRvZXNuJ3Qgc3l6a2FsbGVyIGFjdHVhbGx5ICpoYXZlKiBzb21lIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcz8gSXMgaXQgdGhlIGB2ZmlvYCBvciB0aGUgYHBjaWAgZnV6emluZyBvcHRpb25zPyBJIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIHdoZXRoZXIgc3l6a2FsbGVyIGNhbiBkaXJlY3RseSB0YXJnZXQgUENJIGRldmljZXMuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIHN5c2NhbGwgcmVmZXJlbmNlcy4gQWgsIGJ1dCBkb2VzIHN5emthbGxlciBoYXZlLCBmb3IgaW5zdGFuY2UsIGEgYHN5el9wY2lfYXNzaWduX2RldmljZWAgc3lzY2FsbD8gTm8sIHRoYXQncyBub3QgaXQuIE9rYXksIHdhaXQsIEkgc2VlIHRoZSBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYCBhbmQgdGhlIG90aGVycy4gVGhpcyBkb2Vzbid0IGRpcmVjdGx5IHNwZWFrIHRvIFBDSS5cblxuU28sIGRvZXMgc3l6a2FsbGVyICpyZWFsbHkqIGZ1enogUENJIGRldmljZXMgdGhlbj8gSG93IGV4YWN0bHkgZG9lcyBpdCBkbyBpdD8gTGV0IG1lIHNjYW4gdGhlIGtlcm5lbCBmb3Igc29tZXRoaW5nIGxpa2UgYHN5el9wY2lgLi4uIG5vdGhpbmcgb2J2aW91cy4gQWgsIHJpZ2h0ISBJdCBmdXp6ZXMgUENJIGRldmljZXMgdGhyb3VnaCBpbmRpcmVjdCBtZWFucyDigJMgZWl0aGVyIGJ5IGluamVjdGluZyBkaXJlY3RseSBpbnRvIHRoZSBQQ0kgY29uZmlnIHNwYWNlLCBvciBsZXZlcmFnaW5nIFFFTVUncyBQQ0kgZW11bGF0aW9uLiBUaGF0J3MgdGhlIGtleS5cblxuU28sIHRoZSBuZXh0IHF1ZXN0aW9uOiBkb2VzIHRoaXMgYXBwcm9hY2ggaGVscCBtZSB3aXRoIE1BTkE/XG5cbkFoLCByaWdodC4uLiBNQU5BIGlzIG5vdCBwcmVzZW50IGluIFFFTVUuIEl0J3MgYSBIeXBlci1WIHNwZWNpZmljIGRldmljZS5cblxuSGFuZyBvbi4uLiBJcyBNQU5BIGEgVk1CdXMgZGV2aWNlIHRoZW4/IFdlIG1pZ2h0IGJlIGNsb3NlciB0aGFuIEkgb3JpZ2luYWxseSB0aG91Z2h0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTM3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjE2OjQ2LjI2MTg1MjM1N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1OTg4ODg1OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidm1idXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODoxNjo0Ny42MjE3NDk4MjdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAyNDM3NzM2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBQQ0kgRGV2aWNlIElzc3VlKipcblxuQWxyaWdodCwgYSBQQ0kgZGV2aWNlLCB0aGF0IG5hcnJvd3MgdGhpbmdzIGRvd24gY29uc2lkZXJhYmx5LiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhlIGNvbnRleHQsIGlzIHRoYXQgd2UncmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBhIG5ldHdvcmtpbmcgY29tcG9uZW50LiBDb25zaWRlcmluZyB0aGUgcHJldmFsZW5jZSBvZiBNaWNyb3NvZnQgZHJpdmVycyBpbiB2YXJpb3VzIG5ldHdvcmsgaW50ZXJmYWNlcywgbGV0J3MgZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZSBhbmQgZXhhbWluZSB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL0tjb25maWdgIGZpbGUuIFRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIHBhcnRpY3VsYXIgTWljcm9zb2Z0IGRldmljZSwgdGhlICdtYW5hJyBkcml2ZXIsIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBrZXJuZWwuIEl04oCZbGwgdGVsbCB1cyBhbGwgdGhlIGJ1aWxkIG9wdGlvbnMsIGFueSBkZXBlbmRlbmNpZXMsIGFuZCBob3BlZnVsbHkgc2hlZCBsaWdodCBvbiBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIG1pc3NpbmcgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byB0aGlzIFBDSSBkZXZpY2UuIEkgZXhwZWN0IGl0IHRvIGhhdmUgY2x1ZXMgYWJvdXQgd2hhdCBtb2R1bGUgd2UncmUgZGVhbGluZyB3aXRoLCBhbmQgdGh1cyB3aGF0IG90aGVyIHRoaW5ncyB0byBjaGVjayBhZnRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ3MywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjE2OjUwLjY0NjEyOTQ2OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTU0MCwiRXJyb3IiOiJ0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcInRoZSBmaWxlIGRvZXMgbm90IGV4aXN0XCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA4OjE2OjUwLjY0NjE4MDczOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODI2NTE5MzgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gaXQuXG5cbioqS2NvbmZpZyBEaXZlOiBFdGhlcm5ldC9NaWNyb3NvZnQqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGNyYWNrIG9wZW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBNaWNyb3NvZnQncyBFdGhlcm5ldCBkcml2ZXJzLiBJdOKAmXMgYWx3YXlzIHRoZSBLY29uZmlnIGZpbGVzIHRoYXQgYXJlIHRoZSBoZWFydCBvZiB1bmRlcnN0YW5kaW5nIGhvdyBhIGRyaXZlciBpcyBpbnRlZ3JhdGVkIGFuZCBjb25maWd1cmFibGUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGxvd2Rvd24gb24gd2hhdCBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkLCB3aGF0IGRlcGVuZGVuY2llcyBleGlzdCwgYW5kIGhvdyB1c2VycyBjYW4gZW5hYmxlIG9yIGRpc2FibGUgdGhlIHZhcmlvdXMgY29tcG9uZW50cy4gSSdtIGVzcGVjaWFsbHkga2VlbiB0byBzZWUgaG93IHRoZXkndmUgaGFuZGxlZCB0aGUgbW9yZSByZWNlbnQgYWR2YW5jZW1lbnRzLCBpZiB0aGV5J3JlIHRoZXJlLiBUaW1lIHRvIHNlZSB3aGF0IE1pY3Jvc29mdCdzIGVuZ2luZWVycyBoYXZlIGJlZW4gdXAgdG8uIFRoaXMgc2hvdWxkIGJlIGEgcXVpY2sgY2hlY2ssIGJ1dCBhbHdheXMgcmV2ZWFsaW5nLiBMZXQncyBzZWUgd2hhdCdzIGluIHN0b3JlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzQyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODoxNjo1My40NzI3MDIwNzFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0I1xcbiAgIDI6XFx0IyBNaWNyb3NvZnQgQXp1cmUgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDM6XFx0I1xcbiAgIDQ6XFx0XFxuICAgNTpcXHRjb25maWcgTkVUX1ZFTkRPUl9NSUNST1NPRlRcXG4gICA2OlxcdFxcdGJvb2wgXFxcIk1pY3Jvc29mdCBOZXR3b3JrIERldmljZXNcXFwiXFxuICAgNzpcXHRcXHRkZWZhdWx0IHlcXG4gICA4OlxcdFxcdGhlbHBcXG4gICA5OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgZGV2aWNlIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0XFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJ3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxcbiAgMTI6XFx0XFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgdGhlXFxuICAxMzpcXHRcXHQgIHF1ZXN0aW9uIGFib3V0IE1pY3Jvc29mdCBuZXR3b3JrIGRldmljZXMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmVcXG4gIDE0OlxcdFxcdCAgYXNrZWQgZm9yIHlvdXIgc3BlY2lmaWMgZGV2aWNlIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb24uXFxuICAxNTpcXHRcXG4gIDE2OlxcdGlmIE5FVF9WRU5ET1JfTUlDUk9TT0ZUXFxuICAxNzpcXHRcXG4gIDE4OlxcdGNvbmZpZyBNSUNST1NPRlRfTUFOQVxcbiAgMTk6XFx0XFx0dHJpc3RhdGUgXFxcIk1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIHN1cHBvcnRcXFwiXFxuICAyMDpcXHRcXHRkZXBlbmRzIG9uIFBDSV9NU0lcXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gWDg2XzY0IHx8IChBUk02NCBcXHUwMDI2XFx1MDAyNiAhQ1BVX0JJR19FTkRJQU4pXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIFBDSV9IWVBFUlZcXG4gIDIzOlxcdFxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuICAyNDpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAyNTpcXHRcXHRzZWxlY3QgTkVUX1NIQVBFUlxcbiAgMjY6XFx0XFx0aGVscFxcbiAgMjc6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKS5cXG4gIDI4OlxcdFxcdCAgU28gZmFyLCB0aGUgZHJpdmVyIGlzIG9ubHkgc3VwcG9ydGVkIG9uIFg4Nl82NC5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMzE6XFx0XFx0ICBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIG1hbmEuXFxuICAzMjpcXHRcXG4gIDMzOlxcdGVuZGlmICNORVRfVkVORE9SX01JQ1JPU09GVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODoxNjo1My40NzI3NjkyMDFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEzNTAyNjYwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRGVjaXNpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBrZXkgZmFjdG9yIGhlcmUgc2VlbXMgdG8gaGluZ2Ugb24gYFBDSV9IWVBFUlZgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIHRoaXMgYXMgYSBQQ0kgZGV2aWNlIGRlc2lnbmVkIGZvciBIeXBlci1WLiBOb3csIEkga25vdyBTeXprYWxsZXIgdXN1YWxseSBydW5zIG9uIEdDRSAoS1ZNKSBvciBRRU1VIChLVk0pLCBub3QgSHlwZXItVi4gQW5kIHRoZSBtZW50aW9uIG9mIGEgTUFOQSBkZXZpY2Ugc3BlY2lmaWNhbGx5IHBvaW50cyB0byBBenVyZSwgd2hpY2ggc29saWRpZmllcyB0aGlzIGFzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLlxuXG5TbywgaW4gYSBzdGFuZGFyZCBLVk0gZW52aXJvbm1lbnQg4oCTIHRoZSBraW5kIHdlJ2QgdHlwaWNhbGx5IHVzZSBmb3IgZnV6emluZyDigJMgdGhlcmUncyBqdXN0IG5vIHdheSB0byB0cmlnZ2VyIHRoaXMgY29kZS4gSXQncyBzaW1wbHkgdW5yZWFjaGFibGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBhbnN3ZXJpbmcgdGhlIHJpZ2h0IHF1ZXN0aW9uIC0gd2FpdCwgbGV0IG1lIHJlLXJlYWQgdGhlIHByb21wdC4uLlxuXG5ZZXMsIHRoZSBwcm9tcHQgZXhwbGljaXRseSBzdGF0ZXMgdGhhdCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbGlrZSB0aGlzIG9uZSwgc2hvdWxkIHJlc3VsdCBpbiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhpcyBBenVyZS9IeXBlci1WIHNwZWNpZmljIGRyaXZlciBmYWxscyBzcXVhcmVseSBpbnRvIHRoYXQgY2F0ZWdvcnkuIE5vIGFtb3VudCBvZiBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSB3b3VsZCBtYWtlIHRoaXMgcmVhY2hhYmxlIHVuZGVyIG5vcm1hbCBmdXp6aW5nIGNvbmRpdGlvbnMuXG5cblRoZXJlZm9yZSwgdGhlIGFuc3dlciBpcyBjbGVhcjogYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0MDEsIk91dHB1dFRva2VucyI6ODcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwODoxNjo1OC42MDc3OTg0NDdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkZXZpY2UgdGhhdCByZXF1aXJlcyBIeXBlci1WIGFuZCBzcGVjaWZpYyBBenVyZSBoYXJkd2FyZS4gSXQgaXMgaW1wb3NzaWJsZSB0byByZWFjaCB0aGlzIGNvZGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUgdXNlZCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRldmljZSB0aGF0IHJlcXVpcmVzIEh5cGVyLVYgYW5kIHNwZWNpZmljIEF6dXJlIGhhcmR3YXJlLiBJdCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIHRoaXMgY29kZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB1c2VkIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowflq2v[1] Phase: Running StartedAt: 2026-07-12 08:18:01 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowflq2v[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-12 08:18:01 +0000 UTC FinishedAt: 2026-07-12 08:18:08 +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,}