Name: series-workflow5fp92 Phase: Failed StartedAt: 2026-07-16 16:57:21 +0000 UTC FinishedAt: 2026-07-16 17:29:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fp92[0] Phase: Succeeded StartedAt: 2026-07-16 16:57:21 +0000 UTC FinishedAt: 2026-07-16 17:28:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fp92[0].run-triage Phase: Succeeded StartedAt: 2026-07-16 16:57:21 +0000 UTC FinishedAt: 2026-07-16 17:28:52 +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+CgkJCTx0ZD4yMDI2LzA3LzE2IDE3OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybS1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIuIFBsYXRmb3JtIGRldmljZXMgbGlrZSB0aGlzIGNhbm5vdCBiZSBkeW5hbWljYWxseSBpbnN0YW50aWF0ZWQgb3IgcHJvYmVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VJiMzOTtzIHEzNSBvciB2aXJ0IG1hY2hpbmVzKSB1c2VkIGJ5IHN5emthbGxlciB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiBhbmQgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbnMuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxNzoyODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGU0MjA2MTVjMDdiYWNhMzIwZmYyZWI4MDg5YzYxZmE0NGJhZjcxZjdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAxNzoyODoxNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xuaW5kZXggZmNmNTE3MDY5ZDE2MWEuLjI5MDUwYzhkMDRlMmYxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xuQEAgLTEwMTgsNiAmIzQzOzEwMTgsMTMgQEAgc3RhdGljIGludCBheGllbmV0X3R4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuIFx0XHRcdG5ldGlmX3dha2VfcXVldWUobmRldik7XG4gXHR9XG4gXG4mIzQzO1x0LyogQ2xlYXIgc3RhbGUgSU9DL0RFTEFZIGJpdHMgdGhhdCBtYXkgaGF2ZSBsYXRjaGVkIGR1cmluZyB0aGVcbiYjNDM7XHQgKiBwb2xsIHdpbmRvdyB0byBwcmV2ZW50IGEgc3RhbGUgaW50ZXJydXB0IHdoZW4gdGhlcmUgaXMgbm9cbiYjNDM7XHQgKiB3b3JrIHBlbmRpbmcuXG4mIzQzO1x0ICovXG4mIzQzO1x0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfVFhfU1JfT0ZGU0VULFxuJiM0MztcdFx0XHQgIFhBWElETUFfSVJRX0lPQ19NQVNLIHwgWEFYSURNQV9JUlFfREVMQVlfTUFTSyk7XG4mIzQzO1xuIFx0aWYgKHBhY2tldHMgXHUwMDNjIGJ1ZGdldCBcdTAwMjZcdTAwMjYgbmFwaV9jb21wbGV0ZV9kb25lKG5hcGksIHBhY2tldHMpKSB7XG4gXHRcdC8qIFJlLWVuYWJsZSBUWCBjb21wbGV0aW9uIGludGVycnVwdHMuIFRoaXMgc2hvdWxkXG4gXHRcdCAqIGNhdXNlIGFuIGltbWVkaWF0ZSBpbnRlcnJ1cHQgaWYgYW55IFRYIHBhY2tldHMgYXJlXG5AQCAtMTI5Myw2ICYjNDM7MTMwMCwxMyBAQCBzdGF0aWMgaW50IGF4aWVuZXRfcnhfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXG4gXHRcdGN1cl9wID0gXHUwMDI2bHAtXHUwMDNlcnhfYmRfdltscC1cdTAwM2VyeF9iZF9jaV07XG4gXHR9XG4gXG4mIzQzO1x0LyogQ2xlYXIgc3RhbGUgSU9DL0RFTEFZIGJpdHMgdGhhdCBtYXkgaGF2ZSBsYXRjaGVkIGR1cmluZyB0aGVcbiYjNDM7XHQgKiBwb2xsIHdpbmRvdyB0byBwcmV2ZW50IGEgc3RhbGUgaW50ZXJydXB0IHdoZW4gdGhlcmUgaXMgbm9cbiYjNDM7XHQgKiB3b3JrIHBlbmRpbmcuXG4mIzQzO1x0ICovXG4mIzQzO1x0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfUlhfU1JfT0ZGU0VULFxuJiM0MztcdFx0XHQgIFhBWElETUFfSVJRX0lPQ19NQVNLIHwgWEFYSURNQV9JUlFfREVMQVlfTUFTSyk7XG4mIzQzO1xuIFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZscC1cdTAwM2VyeF9zdGF0X3N5bmMpO1xuIFx0dTY0X3N0YXRzX2FkZChcdTAwMjZscC1cdTAwM2VyeF9wYWNrZXRzLCBwYWNrZXRzKTtcbiBcdHU2NF9zdGF0c19hZGQoXHUwMDI2bHAtXHUwMDNlcnhfYnl0ZXMsIHNpemUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDE3OjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybS1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIuIFBsYXRmb3JtIGRldmljZXMgbGlrZSB0aGlzIGNhbm5vdCBiZSBkeW5hbWljYWxseSBpbnN0YW50aWF0ZWQgb3IgcHJvYmVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VJiMzOTtzIHEzNSBvciB2aXJ0IG1hY2hpbmVzKSB1c2VkIGJ5IHN5emthbGxlciB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiBhbmQgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbnMuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTQyMDYxNWMwN2JhY2EzMjBmZjJlYjgwODljNjFmYTQ0YmFmNzFmNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDE2IDE3OjI4OjE0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMKaW5kZXggZmNmNTE3MDY5ZDE2MWEuLjI5MDUwYzhkMDRlMmYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMKQEAgLTEwMTgsNiAmIzQzOzEwMTgsMTMgQEAgc3RhdGljIGludCBheGllbmV0X3R4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KQogCQkJbmV0aWZfd2FrZV9xdWV1ZShuZGV2KTsKIAl9CiAKJiM0MzsJLyogQ2xlYXIgc3RhbGUgSU9DL0RFTEFZIGJpdHMgdGhhdCBtYXkgaGF2ZSBsYXRjaGVkIGR1cmluZyB0aGUKJiM0MzsJICogcG9sbCB3aW5kb3cgdG8gcHJldmVudCBhIHN0YWxlIGludGVycnVwdCB3aGVuIHRoZXJlIGlzIG5vCiYjNDM7CSAqIHdvcmsgcGVuZGluZy4KJiM0MzsJICovCiYjNDM7CWF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1RYX1NSX09GRlNFVCwKJiM0MzsJCQkgIFhBWElETUFfSVJRX0lPQ19NQVNLIHwgWEFYSURNQV9JUlFfREVMQVlfTUFTSyk7CiYjNDM7CiAJaWYgKHBhY2tldHMgJmx0OyBidWRnZXQgJmFtcDsmYW1wOyBuYXBpX2NvbXBsZXRlX2RvbmUobmFwaSwgcGFja2V0cykpIHsKIAkJLyogUmUtZW5hYmxlIFRYIGNvbXBsZXRpb24gaW50ZXJydXB0cy4gVGhpcyBzaG91bGQKIAkJICogY2F1c2UgYW4gaW1tZWRpYXRlIGludGVycnVwdCBpZiBhbnkgVFggcGFja2V0cyBhcmUKQEAgLTEyOTMsNiAmIzQzOzEzMDAsMTMgQEAgc3RhdGljIGludCBheGllbmV0X3J4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KQogCQljdXJfcCA9ICZhbXA7bHAtJmd0O3J4X2JkX3ZbbHAtJmd0O3J4X2JkX2NpXTsKIAl9CiAKJiM0MzsJLyogQ2xlYXIgc3RhbGUgSU9DL0RFTEFZIGJpdHMgdGhhdCBtYXkgaGF2ZSBsYXRjaGVkIGR1cmluZyB0aGUKJiM0MzsJICogcG9sbCB3aW5kb3cgdG8gcHJldmVudCBhIHN0YWxlIGludGVycnVwdCB3aGVuIHRoZXJlIGlzIG5vCiYjNDM7CSAqIHdvcmsgcGVuZGluZy4KJiM0MzsJICovCiYjNDM7CWF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1JYX1NSX09GRlNFVCwKJiM0MzsJCQkgIFhBWElETUFfSVJRX0lPQ19NQVNLIHwgWEFYSURNQV9JUlFfREVMQVlfTUFTSyk7CiYjNDM7CiAJdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbigmYW1wO2xwLSZndDtyeF9zdGF0X3N5bmMpOwogCXU2NF9zdGF0c19hZGQoJmFtcDtscC0mZ3Q7cnhfcGFja2V0cywgcGFja2V0cyk7CiAJdTY0X3N0YXRzX2FkZCgmYW1wO2xwLSZndDtyeF9ieXRlcywgc2l6ZSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDE3OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTEKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgWGlsaW54IEFYSSBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY2AuIEltbWVkaWF0ZWx5LCBteSBicmFpbiBmbGFncyB0aGF0IHRoaXMgaXMgYSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciDigJMgSSBrbm93IHRoYXQgb25lIHdlbGwuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIGNhbGwgdG8gYGF4aWVuZXRfZG1hX291dDMyYCB3aXRoaW4gdGhlIGBheGllbmV0X3R4X3BvbGxgIGFuZCBgYXhpZW5ldF9yeF9wb2xsYCBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSB0byBjbGVhciAmIzM0O3N0YWxlIElPQy9ERUxBWSBiaXRzLiYjMzQ7IFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIHN1Z2dlc3RpbmcgcG90ZW50aWFsIGludGVycnVwdCBjb2FsZXNjaW5nIG9yIGZsb3cgY29udHJvbCBpc3N1ZXMgYmVpbmcgYWRkcmVzc2VkLgoKTXkgZmlyc3QgdGhvdWdodCwgdGhvdWdoLCBpcyBhYm91dCB0aGUgZGVwbG95bWVudCBjb250ZXh0LiBYaWxpbnggQVhJIEV0aGVybmV0IGlzICp0eXBpY2FsbHkqIGEgcGxhdGZvcm0gZGV2aWNlLCB0aWdodGx5IGNvdXBsZWQgd2l0aCB0aGUgU29DIGl0JiMzOTtzIHJ1bm5pbmcgb24uIFdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rLCBjYW4gSSBldmVuICp0cmlnZ2VyKiB0aGlzIGluIGEgdmlydHVhbGl6ZWQgc2V0dXAgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gSWYgaXTigJlzIHRpZWQgdG8gc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXJzLCBpdCBtaWdodCBub3QgYmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0JiMzOTtzIGdvdCBhIG1vZHVsZSBwbGF0Zm9ybSBkcml2ZXIgZGVmaW5lZCBzbyBJJiMzOTtsbCBxdWlja2x5IGxvb2sgaW4gdGhlIGRyaXZlciBmaWxlIGl0c2VsZiBmb3Igc29tZXRoaW5nIGxpa2UgYG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJgLiBUaGF0JiMzOTtzIHRoZSBiZXN0IHdheSB0byBkZXRlcm1pbmUgdGhlIHBvc3NpYmlsaXR5IG9mIGl0IGJlaW5nIHVzZWQgaW4gYSBicm9hZGVyIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTc6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BsYXRmb3JtX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0zMjI0PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGF4aWVuZXRfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzIzNTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGF4aWVuZXRfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIzNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxNzoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODQyCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBsYXRmb3JtIERyaXZlciBDb251bmRydW0qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIGFuZCBpdCYjMzk7cyBhIHBsYXRmb3JtIGRyaXZlciwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgaW5zdGFudGlhdGlvbiB3aXRoaW4gUUVNVS4gQ2FuIEkgZ2V0IHRoaXMgcnVubmluZyBhbmQgZnV6emVkPyBEZXZpY2UgdHJlZSBpcyB0aGUgb2J2aW91cyByb3V0ZSwgcmlnaHQ/IFFFTVUgaGFuZGxlcyBkZXZpY2UgdHJlZXMsIGJ1dCBteSBleHBlcmllbmNlIHdpdGggc3l6a2FsbGVyIGlzIHRoYXQgaXQmIzM5O3MgZ2VuZXJhbGx5IG5vdCBzZXQgdXAgdG8gZnV6eiBwbGF0Zm9ybSBkZXZpY2VzIHVubGVzcyB0aGVyZSYjMzk7cyBhIHNwZWNpZmljICYjMzQ7aG9vayYjMzQ7IGxpa2UgdmhjaSwgb3IgdGhpbmdzIGxpa2UgdGhlIGhhcmR3YXJlIHNpbXVsYXRvcnMgZm9yIG5ldHdvcmtpbmcgZGV2aWNlcy4KClJpZ2h0LCB0aGVyZSYjMzk7cyBhIGdsaW1tZXIgb2YgaG9wZTogc3l6a2FsbGVyICpjYW4qIGhhbmRsZSBwbGF0Zm9ybSBkZXZpY2VzIHRocm91Z2ggcHNldWRvLWRldmljZXMgb3Igb3ZlcmxheXMuIEJ1dCBhIGRyaXZlciBsaWtlIHRoaXMg4oCTIFhpbGlueCBBWEkgRXRoZXJuZXQg4oCTIGlzIHVzdWFsbHkgb25seSBhY2Nlc3NpYmxlIGlmIEkgY2FuIGdldCBpdCBlbXVsYXRlZCB3aXRoaW4gUUVNVS4gRG9lcyBRRU1VIGV2ZW4gKmRvKiBYaWxpbnggQVhJIEV0aGVybmV0PwoKTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGF0IFFFTVUmIzM5O3MgZG9jdW1lbnRhdGlvbiwgaXQgbG9va3MgbGlrZSB0aGVyZSBhcmUgYHhsbngueHBzLWV0aGVybmV0bGl0ZWAgYW5kIGB4bG54LmF4aS1ldGhlcm5ldGAgb3B0aW9ucy4gR29vZCBzaWduISBMZXQmIzM5O3MgY29uZmlybSB3aXRoIGEgcXVpY2sgY2hlY2sgLSB5ZXAsIFFFTVUgaGFzIGBody9uZXQveGlsaW54X2F4aWVuZXQuY2AuIFNvIGl0IHNlZW1zICpwb3NzaWJsZSogdGhpcyBpcyBzdXBwb3J0ZWQgaWYgdGhlIFFFTVUgbWFjaGluZSBpcyBzZXR1cCBhcHByb3ByaWF0ZWx5LCBsaWtlIGB4aWxpbngtenlucS1hOWAgb3IgYG1pY3JvYmxhemVgIG9yIHNvbWV0aGluZyBzaW1pbGFyLgoKVGhlIGNhdGNoIGlzLCBzeXprYWxsZXIgbW9zdGx5IHJ1bnMgb24geDg2XzY0LCBvciBhcm02NCwgZXRjLiBJZiBzeXprYWxsZXIgaXMgb24geDg2XzY0LCB0aGlzIHBsYXRmb3JtIGRldmljZSB3b24mIzM5O3QgYmUgcHJlc2VudCBhdCBhbGwuIEhvd2V2ZXIsIHN5emthbGxlciAqY2FuKiBydW4gb24gYXJtNjQuIEkgc2hvdWxkIGJlIGFibGUgdG8gbWFrZSB1c2Ugb2YgYW4gYXBwcm9wcmlhdGUgYXJjaGl0ZWN0dXJlLgoKQnV0LCBkb2VzIHN5emthbGxlciBhY3R1YWxseSBmdXp6IHRoaXMgdGhpbmc/IEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmb3IgdGhlIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxNzoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgWElMSU5YX0FYSV9FTUFDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWc9MTk9Y29uZmlnIFhJTElOWF9FTUFDTElURVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTI1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWc6MjY6Y29uZmlnIFhJTElOWF9BWElfRU1BQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWctMjctXHR0cmlzdGF0ZSBcJiMzNDtYaWxpbnggMTAvMTAwLzEwMDAgQVhJIEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxNzoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzI3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgQXNzZXNzbWVudCoqCgpSaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGlkZW50aWZ5IHRoZSBkZXBlbmRlbmNpZXMuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzeXN0ZW0sIGEgcHJvY2VzcywgYSBwcm9ibGVtIOKAkyB3aGF0ZXZlciAmIzM0O2l0JiMzNDsgaXMg4oCTIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSBmb3VuZGF0aW9uYWwgZWxlbWVudHMgaXMgcGFyYW1vdW50LiBXaGF0IGFyZSB0aGUga2V5IHZhcmlhYmxlcz8gVGhlIGNvcmUgaW5wdXRzPyBUaGUgdW5kZXJseWluZyBhc3N1bXB0aW9ucz8gUGlucG9pbnRpbmcgdGhlc2UgZGVwZW5kZW5jaWVzIGlzIHRoZSBlc3NlbnRpYWwgZmlyc3Qgc3RlcCB0byBhbnkgZWZmZWN0aXZlIGFuYWx5c2lzLiBXaGVyZSBkbyB3ZSBiZWdpbiB0byB1bnJhdmVsIGNvbXBsZXhpdHk/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTc6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnPTE5PWNvbmZpZyBYSUxJTlhfRU1BQ0xJVEVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7WGlsaW54IDEwLzEwMCBFdGhlcm5ldCBMaXRlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnOjIxOlx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTIyLVx0c2VsZWN0IFBIWUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnPTI2PWNvbmZpZyBYSUxJTlhfQVhJX0VNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTI3LVx0dHJpc3RhdGUgXCYjMzQ7WGlsaW54IDEwLzEwMC8xMDAwIEFYSSBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZzoyODpcdGRlcGVuZHMgb24gSEFTX0lPTUVNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZzoyOTpcdGRlcGVuZHMgb24gWElMSU5YX0RNQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWctMzAtXHRzZWxlY3QgUEhZTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnPTM2PWNvbmZpZyBYSUxJTlhfTExfVEVNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTM3LVx0dHJpc3RhdGUgXCYjMzQ7WGlsaW54IExMIFRFTUFDIChMb2NhbExpbmsgVHJpLW1vZGUgRXRoZXJuZXQgTUFDKSBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnOjM4Olx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTM5LVx0c2VsZWN0IFBIWUxJQlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDE3OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNzgKCQkJCQkJCW91dHB1dDogMTA1CgkJCQkJCQl0aG91Z2h0czogNTY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgaW4gU3RhbmRhcmQgU3l6a2FsbGVyIFNldHVwKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGl0JiMzOTtzIGRlcGVuZGVudCBvbiBgSEFTX0lPTUVNYCBhbmQgYFhJTElOWF9ETUFgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGlzIHRoaXMgZXZlbiAqcG9zc2libGUqIHRvIGhpdCB3aXRoaW4gdGhlIHN0YW5kYXJkIFN5emthbGxlciBlbnZpcm9ubWVudD8gVGhpbmtpbmcgYWJvdXQgaXQsIEkga25vdyBRRU1VIGVtdWxhdGVzIGB4aWxpbnhfYXhpZW5ldGAsIGJ1dCBpdCYjMzk7cyB1c3VhbGx5IHRpZWQgdG8gc3BlY2lmaWMgbWFjaGluZSB0eXBlcyBsaWtlIE1pY3JvQmxhemUgb3IgWnlucS4gU3l6a2FsbGVyIHByaW1hcmlseSB1c2VzIGBxMzVgIG9yIGB2aXJ0YCBtYWNoaW5lcywgc28gdGhhdCYjMzk7cyBhIHJlZCBmbGFnLiBVbmxlc3MgdGhlcmUmIzM5O3MgYSB3YXkgdG8gaW5zdGFudGlhdGUgdGhpcyB0aGluZyB0aHJvdWdoIFBDSSBvciBVU0IsIHdoaWNoIGl0JiMzOTtzIG5vdCBzaW5jZSBpdCBpcyBhIHBsYXRmb3JtIGRyaXZlciwgaXQmIzM5O3MganVzdCBub3QgZ29pbmcgdG8gYmUgcHJvYmVkLgoKVGhlbiBJIHF1aWNrbHkgcmVtZW1iZXIgU3l6a2FsbGVyIGRvZXNuJiMzOTt0IHVzZSBgc3l6X2Rldm1lbWAgdG8gaW5zdGFudGlhdGUgdGhlIHBsYXRmb3JtLiBQbGF0Zm9ybSBkZXZpY2VzIGdldCBkZWZpbmVkIHZpYSBkZXZpY2UgdHJlZSBvciBBQ1BJLiBJZiBpdCYjMzk7cyBub3QgaW4gdGhlIGRldmljZSB0cmVlLCBpdCYjMzk7cyBub3QgcHJvYmVkLiBDYW4gU3l6a2FsbGVyIGluamVjdCBwbGF0Zm9ybSBkZXZpY2VzPyBOb3BlLiBJdCBoYXMgYSBwc2V1ZG8tZGV2aWNlIGZyYW1ld29yayBmb3IgKnNvbWUqIHRoaW5ncywgYnV0IG5vdCBhcmJpdHJhcnkgcGxhdGZvcm0gZGV2aWNlcyB1bmxlc3MgaXQgaGFzIGEgc3BlY2lhbCBTeXpib3Qgc2V0dXAuCgpPa2F5LCBJJiMzOTttIHJlbWluZGluZyBteXNlbGYgb2YgYHN5el9nZW5ldGxpbmtgIGFuZCBvdGhlciB0aGluZ3MuIEZvciBwbGF0Zm9ybSBkZXZpY2VzLCBpdCYjMzk7cyBhIG5vLWdvIHVubGVzcyB0aGUgZGV2aWNlIGlzIHBhcnQgb2YgdGhlIGRlZmF1bHQgUUVNVSBtYWNoaW5lIG9yIGhvdHBsdWdnYWJsZS4gVGhpcyBsb29rcyBsaWtlIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCwgaXQgcmVxdWlyZXMgYSBzcGVjaWZpYyBwbGF0Zm9ybSBkZXZpY2UuIEhpZ2hseSB1bmxpa2VseSB0byBiZSByZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudCAoeDg2XzY0L3EzNSBvciBhcm02NC92aXJ0KSwgc28sIGl0JiMzOTtzIHByb2JhYmx5IG5vdCB3b3J0aCBmdXp6aW5nLgoKQnV0IHdhaXQsIGxldCBtZSBkb3VibGUtY2hlY2suIFRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgYGF4aWVuZXRfdHhfcG9sbGAgYW5kIGBheGllbmV0X3J4X3BvbGxgLCBOQVBJIHBvbGwgZnVuY3Rpb25zLiBUaGVzZSBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGRldmljZSBpcyBwcm9iZWQsIGJyb3VnaHQgdXAsIGFuZCBpcyByZWNlaXZpbmcvdHJhbnNtaXR0aW5nIHBhY2tldHMuIFNpbmNlIGl0IGNhbiYjMzk7dCBiZSBwcm9iZWQsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlLiBJJiMzOTttIGdvaW5nIHRvIHNldCBXb3J0aEZ1enppbmcgdG8gZmFsc2UuCgoqQnV0IHdhaXQqLCB3aGF0IGlmIHRoZSB1c2VyIGNhbiBjcmVhdGUgYSBwbGF0Zm9ybSBkZXZpY2UgdmlhIHNvbWUgc3lzZnMgaW50ZXJmYWNlPyBJIHNlZSB0aGUgYHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcmAgY2FsbCwgYnV0IHRoYXQmIzM5O3Mgbm90IGV4cG9zZWQgdG8gdXNlcnNwYWNlLiBUaGVyZSYjMzk7cyBubyBnZW5lcmljIHdheSB0byBpbnN0YW50aWF0ZSB0aGVzZSB0aGluZ3MgZnJvbSB1c2Vyc3BhY2UsIG1heWJlIHZpYSBkZXZpY2UgdHJlZSBvdmVybGF5cyAoaWYgYENPTkZJR19PRl9PVkVSTEFZYCBpcyBlbmFibGVkKSwgYnV0IGV2ZW4gdGhlbiwgaXQgdXN1YWxseSBuZWVkcyByb290IGFuZCBzcGVjaWZpYyBzZXR1cC4gRXZlbiBpZiBpdCAqY291bGQqIGJlIGluc3RhbnRpYXRlZCwgaXQgd291bGQgbmVlZCBlbXVsYXRlZCBoYXJkd2FyZSB0byBiYWNrIHRoZSBNTUlPIHJlZ2lvbnMsIG9yIGl0IHdpbGwganVzdCBjcmFzaCBvbiBNTUlPIGFjY2Vzcywgb3IgZmFpbCB0byBwcm9iZS4gU28gaXQmIzM5O3MgKmRlZmluaXRlbHkqIG5vdCBmdXp6YWJsZSBieSBTeXprYWxsZXIuCgpUaGVyZWZvcmUsIFdvcnRoRnV6emluZyBpcyBkZWZpbml0aXZlbHkgZmFsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDE3OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlci4gUGxhdGZvcm0gZGV2aWNlcyBsaWtlIHRoaXMgY2Fubm90IGJlIGR5bmFtaWNhbGx5IGluc3RhbnRpYXRlZCBvciBwcm9iZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUmIzM5O3MgcTM1IG9yIHZpcnQgbWFjaGluZXMpIHVzZWQgYnkgc3l6a2FsbGVyIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uIGFuZCBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucy4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0tc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyLiBQbGF0Zm9ybSBkZXZpY2VzIGxpa2UgdGhpcyBjYW5ub3QgYmUgZHluYW1pY2FsbHkgaW5zdGFudGlhdGVkIG9yIHByb2JlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSYjMzk7cyBxMzUgb3IgdmlydCBtYWNoaW5lcykgdXNlZCBieSBzeXprYWxsZXIgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24gYW5kIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxNzoyODoxNS4yOTQyMTIzOTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTU4MTI5MTg3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlci4gUGxhdGZvcm0gZGV2aWNlcyBsaWtlIHRoaXMgY2Fubm90IGJlIGR5bmFtaWNhbGx5IGluc3RhbnRpYXRlZCBvciBwcm9iZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUncyBxMzUgb3IgdmlydCBtYWNoaW5lcykgdXNlZCBieSBzeXprYWxsZXIgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24gYW5kIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE3OjI4OjE1LjI5NDIxNzIzNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQyNzQyMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTQyMDYxNWMwN2JhY2EzMjBmZjJlYjgwODljNjFmYTQ0YmFmNzFmN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAxNiAxNzoyODoxNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xcbmluZGV4IGZjZjUxNzA2OWQxNjFhLi4yOTA1MGM4ZDA0ZTJmMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xcbkBAIC0xMDE4LDYgKzEwMTgsMTMgQEAgc3RhdGljIGludCBheGllbmV0X3R4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbiBcXHRcXHRcXHRuZXRpZl93YWtlX3F1ZXVlKG5kZXYpO1xcbiBcXHR9XFxuIFxcbitcXHQvKiBDbGVhciBzdGFsZSBJT0MvREVMQVkgYml0cyB0aGF0IG1heSBoYXZlIGxhdGNoZWQgZHVyaW5nIHRoZVxcbitcXHQgKiBwb2xsIHdpbmRvdyB0byBwcmV2ZW50IGEgc3RhbGUgaW50ZXJydXB0IHdoZW4gdGhlcmUgaXMgbm9cXG4rXFx0ICogd29yayBwZW5kaW5nLlxcbitcXHQgKi9cXG4rXFx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfVFhfU1JfT0ZGU0VULFxcbitcXHRcXHRcXHQgIFhBWElETUFfSVJRX0lPQ19NQVNLIHwgWEFYSURNQV9JUlFfREVMQVlfTUFTSyk7XFxuK1xcbiBcXHRpZiAocGFja2V0cyBcXHUwMDNjIGJ1ZGdldCBcXHUwMDI2XFx1MDAyNiBuYXBpX2NvbXBsZXRlX2RvbmUobmFwaSwgcGFja2V0cykpIHtcXG4gXFx0XFx0LyogUmUtZW5hYmxlIFRYIGNvbXBsZXRpb24gaW50ZXJydXB0cy4gVGhpcyBzaG91bGRcXG4gXFx0XFx0ICogY2F1c2UgYW4gaW1tZWRpYXRlIGludGVycnVwdCBpZiBhbnkgVFggcGFja2V0cyBhcmVcXG5AQCAtMTI5Myw2ICsxMzAwLDEzIEBAIHN0YXRpYyBpbnQgYXhpZW5ldF9yeF9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcXG4gXFx0XFx0Y3VyX3AgPSBcXHUwMDI2bHAtXFx1MDAzZXJ4X2JkX3ZbbHAtXFx1MDAzZXJ4X2JkX2NpXTtcXG4gXFx0fVxcbiBcXG4rXFx0LyogQ2xlYXIgc3RhbGUgSU9DL0RFTEFZIGJpdHMgdGhhdCBtYXkgaGF2ZSBsYXRjaGVkIGR1cmluZyB0aGVcXG4rXFx0ICogcG9sbCB3aW5kb3cgdG8gcHJldmVudCBhIHN0YWxlIGludGVycnVwdCB3aGVuIHRoZXJlIGlzIG5vXFxuK1xcdCAqIHdvcmsgcGVuZGluZy5cXG4rXFx0ICovXFxuK1xcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1JYX1NSX09GRlNFVCxcXG4rXFx0XFx0XFx0ICBYQVhJRE1BX0lSUV9JT0NfTUFTSyB8IFhBWElETUFfSVJRX0RFTEFZX01BU0spO1xcbitcXG4gXFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcXHUwMDI2bHAtXFx1MDAzZXJ4X3N0YXRfc3luYyk7XFxuIFxcdHU2NF9zdGF0c19hZGQoXFx1MDAyNmxwLVxcdTAwM2VyeF9wYWNrZXRzLCBwYWNrZXRzKTtcXG4gXFx0dTY0X3N0YXRzX2FkZChcXHUwMDI2bHAtXFx1MDAzZXJ4X2J5dGVzLCBzaXplKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTc6Mjg6MTUuNjM3NDc3ODM2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTIzODAxOTQxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlci4gUGxhdGZvcm0gZGV2aWNlcyBsaWtlIHRoaXMgY2Fubm90IGJlIGR5bmFtaWNhbGx5IGluc3RhbnRpYXRlZCBvciBwcm9iZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUncyBxMzUgb3IgdmlydCBtYWNoaW5lcykgdXNlZCBieSBzeXprYWxsZXIgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24gYW5kIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTQyMDYxNWMwN2JhY2EzMjBmZjJlYjgwODljNjFmYTQ0YmFmNzFmN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDE2IDE3OjI4OjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcbmluZGV4IGZjZjUxNzA2OWQxNjFhLi4yOTA1MGM4ZDA0ZTJmMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcbkBAIC0xMDE4LDYgKzEwMTgsMTMgQEAgc3RhdGljIGludCBheGllbmV0X3R4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuIFx0XHRcdG5ldGlmX3dha2VfcXVldWUobmRldik7XG4gXHR9XG4gXG4rXHQvKiBDbGVhciBzdGFsZSBJT0MvREVMQVkgYml0cyB0aGF0IG1heSBoYXZlIGxhdGNoZWQgZHVyaW5nIHRoZVxuK1x0ICogcG9sbCB3aW5kb3cgdG8gcHJldmVudCBhIHN0YWxlIGludGVycnVwdCB3aGVuIHRoZXJlIGlzIG5vXG4rXHQgKiB3b3JrIHBlbmRpbmcuXG4rXHQgKi9cbitcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1RYX1NSX09GRlNFVCxcbitcdFx0XHQgIFhBWElETUFfSVJRX0lPQ19NQVNLIHwgWEFYSURNQV9JUlFfREVMQVlfTUFTSyk7XG4rXG4gXHRpZiAocGFja2V0cyBcdTAwM2MgYnVkZ2V0IFx1MDAyNlx1MDAyNiBuYXBpX2NvbXBsZXRlX2RvbmUobmFwaSwgcGFja2V0cykpIHtcbiBcdFx0LyogUmUtZW5hYmxlIFRYIGNvbXBsZXRpb24gaW50ZXJydXB0cy4gVGhpcyBzaG91bGRcbiBcdFx0ICogY2F1c2UgYW4gaW1tZWRpYXRlIGludGVycnVwdCBpZiBhbnkgVFggcGFja2V0cyBhcmVcbkBAIC0xMjkzLDYgKzEzMDAsMTMgQEAgc3RhdGljIGludCBheGllbmV0X3J4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuIFx0XHRjdXJfcCA9IFx1MDAyNmxwLVx1MDAzZXJ4X2JkX3ZbbHAtXHUwMDNlcnhfYmRfY2ldO1xuIFx0fVxuIFxuK1x0LyogQ2xlYXIgc3RhbGUgSU9DL0RFTEFZIGJpdHMgdGhhdCBtYXkgaGF2ZSBsYXRjaGVkIGR1cmluZyB0aGVcbitcdCAqIHBvbGwgd2luZG93IHRvIHByZXZlbnQgYSBzdGFsZSBpbnRlcnJ1cHQgd2hlbiB0aGVyZSBpcyBub1xuK1x0ICogd29yayBwZW5kaW5nLlxuK1x0ICovXG4rXHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9SWF9TUl9PRkZTRVQsXG4rXHRcdFx0ICBYQVhJRE1BX0lSUV9JT0NfTUFTSyB8IFhBWElETUFfSVJRX0RFTEFZX01BU0spO1xuK1xuIFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZscC1cdTAwM2VyeF9zdGF0X3N5bmMpO1xuIFx0dTY0X3N0YXRzX2FkZChcdTAwMjZscC1cdTAwM2VyeF9wYWNrZXRzLCBwYWNrZXRzKTtcbiBcdHU2NF9zdGF0c19hZGQoXHUwMDI2bHAtXHUwMDNlcnhfYnl0ZXMsIHNpemUpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTc6Mjg6MTUuNjM3NDc4OTk2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMzOTI2MzU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBYaWxpbnggQVhJIEV0aGVybmV0IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNgLiBJbW1lZGlhdGVseSwgbXkgYnJhaW4gZmxhZ3MgdGhhdCB0aGlzIGlzIGEgWGlsaW54IEFYSSBFdGhlcm5ldCBkcml2ZXIg4oCTIEkga25vdyB0aGF0IG9uZSB3ZWxsLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYSBjYWxsIHRvIGBheGllbmV0X2RtYV9vdXQzMmAgd2l0aGluIHRoZSBgYXhpZW5ldF90eF9wb2xsYCBhbmQgYGF4aWVuZXRfcnhfcG9sbGAgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgdG8gY2xlYXIgXCJzdGFsZSBJT0MvREVMQVkgYml0cy5cIiBUaGF0J3MgaW50ZXJlc3RpbmcsIHN1Z2dlc3RpbmcgcG90ZW50aWFsIGludGVycnVwdCBjb2FsZXNjaW5nIG9yIGZsb3cgY29udHJvbCBpc3N1ZXMgYmVpbmcgYWRkcmVzc2VkLlxuXG5NeSBmaXJzdCB0aG91Z2h0LCB0aG91Z2gsIGlzIGFib3V0IHRoZSBkZXBsb3ltZW50IGNvbnRleHQuIFhpbGlueCBBWEkgRXRoZXJuZXQgaXMgKnR5cGljYWxseSogYSBwbGF0Zm9ybSBkZXZpY2UsIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBTb0MgaXQncyBydW5uaW5nIG9uLiBXaGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluaywgY2FuIEkgZXZlbiAqdHJpZ2dlciogdGhpcyBpbiBhIHZpcnR1YWxpemVkIHNldHVwIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IElmIGl04oCZcyB0aWVkIHRvIHNwZWNpZmljIGhhcmR3YXJlIHJlZ2lzdGVycywgaXQgbWlnaHQgbm90IGJlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCdzIGdvdCBhIG1vZHVsZSBwbGF0Zm9ybSBkcml2ZXIgZGVmaW5lZCBzbyBJJ2xsIHF1aWNrbHkgbG9vayBpbiB0aGUgZHJpdmVyIGZpbGUgaXRzZWxmIGZvciBzb21ldGhpbmcgbGlrZSBgbW9kdWxlX3BsYXRmb3JtX2RyaXZlcmAuIFRoYXQncyB0aGUgYmVzdCB3YXkgdG8gZGV0ZXJtaW5lIHRoZSBwb3NzaWJpbGl0eSBvZiBpdCBiZWluZyB1c2VkIGluIGEgYnJvYWRlciBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTkxLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTczLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTc6Mjg6MTkuOTc2NzQ1MTIyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDE3ODg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTMyMjQ9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXhpZW5ldF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyMzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMjM1Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYXhpZW5ldF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIzNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTc6Mjg6MjAuMDM3NzY3Mjc4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU3MDk0MTQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQbGF0Zm9ybSBEcml2ZXIgQ29udW5kcnVtKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIgYW5kIGl0J3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IGluc3RhbnRpYXRpb24gd2l0aGluIFFFTVUuIENhbiBJIGdldCB0aGlzIHJ1bm5pbmcgYW5kIGZ1enplZD8gRGV2aWNlIHRyZWUgaXMgdGhlIG9idmlvdXMgcm91dGUsIHJpZ2h0PyBRRU1VIGhhbmRsZXMgZGV2aWNlIHRyZWVzLCBidXQgbXkgZXhwZXJpZW5jZSB3aXRoIHN5emthbGxlciBpcyB0aGF0IGl0J3MgZ2VuZXJhbGx5IG5vdCBzZXQgdXAgdG8gZnV6eiBwbGF0Zm9ybSBkZXZpY2VzIHVubGVzcyB0aGVyZSdzIGEgc3BlY2lmaWMgXCJob29rXCIgbGlrZSB2aGNpLCBvciB0aGluZ3MgbGlrZSB0aGUgaGFyZHdhcmUgc2ltdWxhdG9ycyBmb3IgbmV0d29ya2luZyBkZXZpY2VzLlxuXG5SaWdodCwgdGhlcmUncyBhIGdsaW1tZXIgb2YgaG9wZTogc3l6a2FsbGVyICpjYW4qIGhhbmRsZSBwbGF0Zm9ybSBkZXZpY2VzIHRocm91Z2ggcHNldWRvLWRldmljZXMgb3Igb3ZlcmxheXMuIEJ1dCBhIGRyaXZlciBsaWtlIHRoaXMg4oCTIFhpbGlueCBBWEkgRXRoZXJuZXQg4oCTIGlzIHVzdWFsbHkgb25seSBhY2Nlc3NpYmxlIGlmIEkgY2FuIGdldCBpdCBlbXVsYXRlZCB3aXRoaW4gUUVNVS4gRG9lcyBRRU1VIGV2ZW4gKmRvKiBYaWxpbnggQVhJIEV0aGVybmV0P1xuXG5MZXQncyBzZWUuLi4gbG9va2luZyBhdCBRRU1VJ3MgZG9jdW1lbnRhdGlvbiwgaXQgbG9va3MgbGlrZSB0aGVyZSBhcmUgYHhsbngueHBzLWV0aGVybmV0bGl0ZWAgYW5kIGB4bG54LmF4aS1ldGhlcm5ldGAgb3B0aW9ucy4gR29vZCBzaWduISBMZXQncyBjb25maXJtIHdpdGggYSBxdWljayBjaGVjayAtIHllcCwgUUVNVSBoYXMgYGh3L25ldC94aWxpbnhfYXhpZW5ldC5jYC4gU28gaXQgc2VlbXMgKnBvc3NpYmxlKiB0aGlzIGlzIHN1cHBvcnRlZCBpZiB0aGUgUUVNVSBtYWNoaW5lIGlzIHNldHVwIGFwcHJvcHJpYXRlbHksIGxpa2UgYHhpbGlueC16eW5xLWE5YCBvciBgbWljcm9ibGF6ZWAgb3Igc29tZXRoaW5nIHNpbWlsYXIuXG5cblRoZSBjYXRjaCBpcywgc3l6a2FsbGVyIG1vc3RseSBydW5zIG9uIHg4Nl82NCwgb3IgYXJtNjQsIGV0Yy4gSWYgc3l6a2FsbGVyIGlzIG9uIHg4Nl82NCwgdGhpcyBwbGF0Zm9ybSBkZXZpY2Ugd29uJ3QgYmUgcHJlc2VudCBhdCBhbGwuIEhvd2V2ZXIsIHN5emthbGxlciAqY2FuKiBydW4gb24gYXJtNjQuIEkgc2hvdWxkIGJlIGFibGUgdG8gbWFrZSB1c2Ugb2YgYW4gYXBwcm9wcmlhdGUgYXJjaGl0ZWN0dXJlLlxuXG5CdXQsIGRvZXMgc3l6a2FsbGVyIGFjdHVhbGx5IGZ1enogdGhpcyB0aGluZz8gSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZvciB0aGUgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODQyLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE3OjI4OjI2LjYwODcxMDI3M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTQzMDUyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWElMSU5YX0FYSV9FTUFDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnPTE5PWNvbmZpZyBYSUxJTlhfRU1BQ0xJVEVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnOjI2OmNvbmZpZyBYSUxJTlhfQVhJX0VNQUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0yNy1cXHR0cmlzdGF0ZSBcXFwiWGlsaW54IDEwLzEwMC8xMDAwIEFYSSBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxNzoyODoyNi42NjQxNDQyNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MjM3ODUzNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuUmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGlkZW50aWZ5IHRoZSBkZXBlbmRlbmNpZXMuIFdlJ3JlIGRlYWxpbmcgd2l0aCBhIHN5c3RlbSwgYSBwcm9jZXNzLCBhIHByb2JsZW0g4oCTIHdoYXRldmVyIFwiaXRcIiBpcyDigJMgYW5kIHVuZGVyc3RhbmRpbmcgdGhlIGZvdW5kYXRpb25hbCBlbGVtZW50cyBpcyBwYXJhbW91bnQuIFdoYXQgYXJlIHRoZSBrZXkgdmFyaWFibGVzPyBUaGUgY29yZSBpbnB1dHM/IFRoZSB1bmRlcmx5aW5nIGFzc3VtcHRpb25zPyBQaW5wb2ludGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgdGhlIGVzc2VudGlhbCBmaXJzdCBzdGVwIHRvIGFueSBlZmZlY3RpdmUgYW5hbHlzaXMuIFdoZXJlIGRvIHdlIGJlZ2luIHRvIHVucmF2ZWwgY29tcGxleGl0eT9cblxuXG4iLCJJbnB1dFRva2VucyI6MzcyNywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTc6Mjg6MjkuNDg3OTMxNDE0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MzAwOTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWc9MTk9Y29uZmlnIFhJTElOWF9FTUFDTElURVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJYaWxpbnggMTAvMTAwIEV0aGVybmV0IExpdGUgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZzoyMTpcXHRkZXBlbmRzIG9uIEhBU19JT01FTVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTIyLVxcdHNlbGVjdCBQSFlMSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnPTI2PWNvbmZpZyBYSUxJTlhfQVhJX0VNQUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0yNy1cXHR0cmlzdGF0ZSBcXFwiWGlsaW54IDEwLzEwMC8xMDAwIEFYSSBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnOjI4OlxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWc6Mjk6XFx0ZGVwZW5kcyBvbiBYSUxJTlhfRE1BXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWctMzAtXFx0c2VsZWN0IFBIWUxJTktcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnPTM2PWNvbmZpZyBYSUxJTlhfTExfVEVNQUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0zNy1cXHR0cmlzdGF0ZSBcXFwiWGlsaW54IExMIFRFTUFDIChMb2NhbExpbmsgVHJpLW1vZGUgRXRoZXJuZXQgTUFDKSBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWc6Mzg6XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0zOS1cXHRzZWxlY3QgUEhZTElCXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE3OjI4OjI5LjU0MjIzNjc5MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMzMzMjMyMTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgaW4gU3RhbmRhcmQgU3l6a2FsbGVyIFNldHVwKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBpdCdzIGRlcGVuZGVudCBvbiBgSEFTX0lPTUVNYCBhbmQgYFhJTElOWF9ETUFgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGlzIHRoaXMgZXZlbiAqcG9zc2libGUqIHRvIGhpdCB3aXRoaW4gdGhlIHN0YW5kYXJkIFN5emthbGxlciBlbnZpcm9ubWVudD8gVGhpbmtpbmcgYWJvdXQgaXQsIEkga25vdyBRRU1VIGVtdWxhdGVzIGB4aWxpbnhfYXhpZW5ldGAsIGJ1dCBpdCdzIHVzdWFsbHkgdGllZCB0byBzcGVjaWZpYyBtYWNoaW5lIHR5cGVzIGxpa2UgTWljcm9CbGF6ZSBvciBaeW5xLiBTeXprYWxsZXIgcHJpbWFyaWx5IHVzZXMgYHEzNWAgb3IgYHZpcnRgIG1hY2hpbmVzLCBzbyB0aGF0J3MgYSByZWQgZmxhZy4gVW5sZXNzIHRoZXJlJ3MgYSB3YXkgdG8gaW5zdGFudGlhdGUgdGhpcyB0aGluZyB0aHJvdWdoIFBDSSBvciBVU0IsIHdoaWNoIGl0J3Mgbm90IHNpbmNlIGl0IGlzIGEgcGxhdGZvcm0gZHJpdmVyLCBpdCdzIGp1c3Qgbm90IGdvaW5nIHRvIGJlIHByb2JlZC5cblxuVGhlbiBJIHF1aWNrbHkgcmVtZW1iZXIgU3l6a2FsbGVyIGRvZXNuJ3QgdXNlIGBzeXpfZGV2bWVtYCB0byBpbnN0YW50aWF0ZSB0aGUgcGxhdGZvcm0uIFBsYXRmb3JtIGRldmljZXMgZ2V0IGRlZmluZWQgdmlhIGRldmljZSB0cmVlIG9yIEFDUEkuIElmIGl0J3Mgbm90IGluIHRoZSBkZXZpY2UgdHJlZSwgaXQncyBub3QgcHJvYmVkLiBDYW4gU3l6a2FsbGVyIGluamVjdCBwbGF0Zm9ybSBkZXZpY2VzPyBOb3BlLiBJdCBoYXMgYSBwc2V1ZG8tZGV2aWNlIGZyYW1ld29yayBmb3IgKnNvbWUqIHRoaW5ncywgYnV0IG5vdCBhcmJpdHJhcnkgcGxhdGZvcm0gZGV2aWNlcyB1bmxlc3MgaXQgaGFzIGEgc3BlY2lhbCBTeXpib3Qgc2V0dXAuXG5cbk9rYXksIEknbSByZW1pbmRpbmcgbXlzZWxmIG9mIGBzeXpfZ2VuZXRsaW5rYCBhbmQgb3RoZXIgdGhpbmdzLiBGb3IgcGxhdGZvcm0gZGV2aWNlcywgaXQncyBhIG5vLWdvIHVubGVzcyB0aGUgZGV2aWNlIGlzIHBhcnQgb2YgdGhlIGRlZmF1bHQgUUVNVSBtYWNoaW5lIG9yIGhvdHBsdWdnYWJsZS4gVGhpcyBsb29rcyBsaWtlIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCwgaXQgcmVxdWlyZXMgYSBzcGVjaWZpYyBwbGF0Zm9ybSBkZXZpY2UuIEhpZ2hseSB1bmxpa2VseSB0byBiZSByZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudCAoeDg2XzY0L3EzNSBvciBhcm02NC92aXJ0KSwgc28sIGl0J3MgcHJvYmFibHkgbm90IHdvcnRoIGZ1enppbmcuXG5cbkJ1dCB3YWl0LCBsZXQgbWUgZG91YmxlLWNoZWNrLiBUaGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBheGllbmV0X3R4X3BvbGxgIGFuZCBgYXhpZW5ldF9yeF9wb2xsYCwgTkFQSSBwb2xsIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBkZXZpY2UgaXMgcHJvYmVkLCBicm91Z2h0IHVwLCBhbmQgaXMgcmVjZWl2aW5nL3RyYW5zbWl0dGluZyBwYWNrZXRzLiBTaW5jZSBpdCBjYW4ndCBiZSBwcm9iZWQsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlLiBJJ20gZ29pbmcgdG8gc2V0IFdvcnRoRnV6emluZyB0byBmYWxzZS5cblxuKkJ1dCB3YWl0Kiwgd2hhdCBpZiB0aGUgdXNlciBjYW4gY3JlYXRlIGEgcGxhdGZvcm0gZGV2aWNlIHZpYSBzb21lIHN5c2ZzIGludGVyZmFjZT8gSSBzZWUgdGhlIGBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJgIGNhbGwsIGJ1dCB0aGF0J3Mgbm90IGV4cG9zZWQgdG8gdXNlcnNwYWNlLiBUaGVyZSdzIG5vIGdlbmVyaWMgd2F5IHRvIGluc3RhbnRpYXRlIHRoZXNlIHRoaW5ncyBmcm9tIHVzZXJzcGFjZSwgbWF5YmUgdmlhIGRldmljZSB0cmVlIG92ZXJsYXlzIChpZiBgQ09ORklHX09GX09WRVJMQVlgIGlzIGVuYWJsZWQpLCBidXQgZXZlbiB0aGVuLCBpdCB1c3VhbGx5IG5lZWRzIHJvb3QgYW5kIHNwZWNpZmljIHNldHVwLiBFdmVuIGlmIGl0ICpjb3VsZCogYmUgaW5zdGFudGlhdGVkLCBpdCB3b3VsZCBuZWVkIGVtdWxhdGVkIGhhcmR3YXJlIHRvIGJhY2sgdGhlIE1NSU8gcmVnaW9ucywgb3IgaXQgd2lsbCBqdXN0IGNyYXNoIG9uIE1NSU8gYWNjZXNzLCBvciBmYWlsIHRvIHByb2JlLiBTbyBpdCdzICpkZWZpbml0ZWx5KiBub3QgZnV6emFibGUgYnkgU3l6a2FsbGVyLlxuXG5UaGVyZWZvcmUsIFdvcnRoRnV6emluZyBpcyBkZWZpbml0aXZlbHkgZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNzgsIk91dHB1dFRva2VucyI6MTA1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTY2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE3OjI4OjQwLjg3NTQ3MDczN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybS1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIuIFBsYXRmb3JtIGRldmljZXMgbGlrZSB0aGlzIGNhbm5vdCBiZSBkeW5hbWljYWxseSBpbnN0YW50aWF0ZWQgb3IgcHJvYmVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VJ3MgcTM1IG9yIHZpcnQgbWFjaGluZXMpIHVzZWQgYnkgc3l6a2FsbGVyIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uIGFuZCBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucy4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0tc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyLiBQbGF0Zm9ybSBkZXZpY2VzIGxpa2UgdGhpcyBjYW5ub3QgYmUgZHluYW1pY2FsbHkgaW5zdGFudGlhdGVkIG9yIHByb2JlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSdzIHEzNSBvciB2aXJ0IG1hY2hpbmVzKSB1c2VkIGJ5IHN5emthbGxlciB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiBhbmQgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbnMuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow5fp92[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-16 16:57:21 +0000 UTC FinishedAt: 2026-07-16 17:28:42 +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+CgkJCTx0ZD4yMDI2LzA3LzE2IDE3OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybS1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIuIFBsYXRmb3JtIGRldmljZXMgbGlrZSB0aGlzIGNhbm5vdCBiZSBkeW5hbWljYWxseSBpbnN0YW50aWF0ZWQgb3IgcHJvYmVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VJiMzOTtzIHEzNSBvciB2aXJ0IG1hY2hpbmVzKSB1c2VkIGJ5IHN5emthbGxlciB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiBhbmQgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbnMuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxNzoyODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGU0MjA2MTVjMDdiYWNhMzIwZmYyZWI4MDg5YzYxZmE0NGJhZjcxZjdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAxNzoyODoxNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xuaW5kZXggZmNmNTE3MDY5ZDE2MWEuLjI5MDUwYzhkMDRlMmYxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xuQEAgLTEwMTgsNiAmIzQzOzEwMTgsMTMgQEAgc3RhdGljIGludCBheGllbmV0X3R4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuIFx0XHRcdG5ldGlmX3dha2VfcXVldWUobmRldik7XG4gXHR9XG4gXG4mIzQzO1x0LyogQ2xlYXIgc3RhbGUgSU9DL0RFTEFZIGJpdHMgdGhhdCBtYXkgaGF2ZSBsYXRjaGVkIGR1cmluZyB0aGVcbiYjNDM7XHQgKiBwb2xsIHdpbmRvdyB0byBwcmV2ZW50IGEgc3RhbGUgaW50ZXJydXB0IHdoZW4gdGhlcmUgaXMgbm9cbiYjNDM7XHQgKiB3b3JrIHBlbmRpbmcuXG4mIzQzO1x0ICovXG4mIzQzO1x0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfVFhfU1JfT0ZGU0VULFxuJiM0MztcdFx0XHQgIFhBWElETUFfSVJRX0lPQ19NQVNLIHwgWEFYSURNQV9JUlFfREVMQVlfTUFTSyk7XG4mIzQzO1xuIFx0aWYgKHBhY2tldHMgXHUwMDNjIGJ1ZGdldCBcdTAwMjZcdTAwMjYgbmFwaV9jb21wbGV0ZV9kb25lKG5hcGksIHBhY2tldHMpKSB7XG4gXHRcdC8qIFJlLWVuYWJsZSBUWCBjb21wbGV0aW9uIGludGVycnVwdHMuIFRoaXMgc2hvdWxkXG4gXHRcdCAqIGNhdXNlIGFuIGltbWVkaWF0ZSBpbnRlcnJ1cHQgaWYgYW55IFRYIHBhY2tldHMgYXJlXG5AQCAtMTI5Myw2ICYjNDM7MTMwMCwxMyBAQCBzdGF0aWMgaW50IGF4aWVuZXRfcnhfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXG4gXHRcdGN1cl9wID0gXHUwMDI2bHAtXHUwMDNlcnhfYmRfdltscC1cdTAwM2VyeF9iZF9jaV07XG4gXHR9XG4gXG4mIzQzO1x0LyogQ2xlYXIgc3RhbGUgSU9DL0RFTEFZIGJpdHMgdGhhdCBtYXkgaGF2ZSBsYXRjaGVkIGR1cmluZyB0aGVcbiYjNDM7XHQgKiBwb2xsIHdpbmRvdyB0byBwcmV2ZW50IGEgc3RhbGUgaW50ZXJydXB0IHdoZW4gdGhlcmUgaXMgbm9cbiYjNDM7XHQgKiB3b3JrIHBlbmRpbmcuXG4mIzQzO1x0ICovXG4mIzQzO1x0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfUlhfU1JfT0ZGU0VULFxuJiM0MztcdFx0XHQgIFhBWElETUFfSVJRX0lPQ19NQVNLIHwgWEFYSURNQV9JUlFfREVMQVlfTUFTSyk7XG4mIzQzO1xuIFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZscC1cdTAwM2VyeF9zdGF0X3N5bmMpO1xuIFx0dTY0X3N0YXRzX2FkZChcdTAwMjZscC1cdTAwM2VyeF9wYWNrZXRzLCBwYWNrZXRzKTtcbiBcdHU2NF9zdGF0c19hZGQoXHUwMDI2bHAtXHUwMDNlcnhfYnl0ZXMsIHNpemUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDE3OjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybS1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIuIFBsYXRmb3JtIGRldmljZXMgbGlrZSB0aGlzIGNhbm5vdCBiZSBkeW5hbWljYWxseSBpbnN0YW50aWF0ZWQgb3IgcHJvYmVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VJiMzOTtzIHEzNSBvciB2aXJ0IG1hY2hpbmVzKSB1c2VkIGJ5IHN5emthbGxlciB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiBhbmQgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbnMuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTQyMDYxNWMwN2JhY2EzMjBmZjJlYjgwODljNjFmYTQ0YmFmNzFmNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDE2IDE3OjI4OjE0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMKaW5kZXggZmNmNTE3MDY5ZDE2MWEuLjI5MDUwYzhkMDRlMmYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMKQEAgLTEwMTgsNiAmIzQzOzEwMTgsMTMgQEAgc3RhdGljIGludCBheGllbmV0X3R4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KQogCQkJbmV0aWZfd2FrZV9xdWV1ZShuZGV2KTsKIAl9CiAKJiM0MzsJLyogQ2xlYXIgc3RhbGUgSU9DL0RFTEFZIGJpdHMgdGhhdCBtYXkgaGF2ZSBsYXRjaGVkIGR1cmluZyB0aGUKJiM0MzsJICogcG9sbCB3aW5kb3cgdG8gcHJldmVudCBhIHN0YWxlIGludGVycnVwdCB3aGVuIHRoZXJlIGlzIG5vCiYjNDM7CSAqIHdvcmsgcGVuZGluZy4KJiM0MzsJICovCiYjNDM7CWF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1RYX1NSX09GRlNFVCwKJiM0MzsJCQkgIFhBWElETUFfSVJRX0lPQ19NQVNLIHwgWEFYSURNQV9JUlFfREVMQVlfTUFTSyk7CiYjNDM7CiAJaWYgKHBhY2tldHMgJmx0OyBidWRnZXQgJmFtcDsmYW1wOyBuYXBpX2NvbXBsZXRlX2RvbmUobmFwaSwgcGFja2V0cykpIHsKIAkJLyogUmUtZW5hYmxlIFRYIGNvbXBsZXRpb24gaW50ZXJydXB0cy4gVGhpcyBzaG91bGQKIAkJICogY2F1c2UgYW4gaW1tZWRpYXRlIGludGVycnVwdCBpZiBhbnkgVFggcGFja2V0cyBhcmUKQEAgLTEyOTMsNiAmIzQzOzEzMDAsMTMgQEAgc3RhdGljIGludCBheGllbmV0X3J4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KQogCQljdXJfcCA9ICZhbXA7bHAtJmd0O3J4X2JkX3ZbbHAtJmd0O3J4X2JkX2NpXTsKIAl9CiAKJiM0MzsJLyogQ2xlYXIgc3RhbGUgSU9DL0RFTEFZIGJpdHMgdGhhdCBtYXkgaGF2ZSBsYXRjaGVkIGR1cmluZyB0aGUKJiM0MzsJICogcG9sbCB3aW5kb3cgdG8gcHJldmVudCBhIHN0YWxlIGludGVycnVwdCB3aGVuIHRoZXJlIGlzIG5vCiYjNDM7CSAqIHdvcmsgcGVuZGluZy4KJiM0MzsJICovCiYjNDM7CWF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1JYX1NSX09GRlNFVCwKJiM0MzsJCQkgIFhBWElETUFfSVJRX0lPQ19NQVNLIHwgWEFYSURNQV9JUlFfREVMQVlfTUFTSyk7CiYjNDM7CiAJdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbigmYW1wO2xwLSZndDtyeF9zdGF0X3N5bmMpOwogCXU2NF9zdGF0c19hZGQoJmFtcDtscC0mZ3Q7cnhfcGFja2V0cywgcGFja2V0cyk7CiAJdTY0X3N0YXRzX2FkZCgmYW1wO2xwLSZndDtyeF9ieXRlcywgc2l6ZSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDE3OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTEKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgWGlsaW54IEFYSSBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY2AuIEltbWVkaWF0ZWx5LCBteSBicmFpbiBmbGFncyB0aGF0IHRoaXMgaXMgYSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciDigJMgSSBrbm93IHRoYXQgb25lIHdlbGwuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIGNhbGwgdG8gYGF4aWVuZXRfZG1hX291dDMyYCB3aXRoaW4gdGhlIGBheGllbmV0X3R4X3BvbGxgIGFuZCBgYXhpZW5ldF9yeF9wb2xsYCBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSB0byBjbGVhciAmIzM0O3N0YWxlIElPQy9ERUxBWSBiaXRzLiYjMzQ7IFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIHN1Z2dlc3RpbmcgcG90ZW50aWFsIGludGVycnVwdCBjb2FsZXNjaW5nIG9yIGZsb3cgY29udHJvbCBpc3N1ZXMgYmVpbmcgYWRkcmVzc2VkLgoKTXkgZmlyc3QgdGhvdWdodCwgdGhvdWdoLCBpcyBhYm91dCB0aGUgZGVwbG95bWVudCBjb250ZXh0LiBYaWxpbnggQVhJIEV0aGVybmV0IGlzICp0eXBpY2FsbHkqIGEgcGxhdGZvcm0gZGV2aWNlLCB0aWdodGx5IGNvdXBsZWQgd2l0aCB0aGUgU29DIGl0JiMzOTtzIHJ1bm5pbmcgb24uIFdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rLCBjYW4gSSBldmVuICp0cmlnZ2VyKiB0aGlzIGluIGEgdmlydHVhbGl6ZWQgc2V0dXAgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gSWYgaXTigJlzIHRpZWQgdG8gc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXJzLCBpdCBtaWdodCBub3QgYmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0JiMzOTtzIGdvdCBhIG1vZHVsZSBwbGF0Zm9ybSBkcml2ZXIgZGVmaW5lZCBzbyBJJiMzOTtsbCBxdWlja2x5IGxvb2sgaW4gdGhlIGRyaXZlciBmaWxlIGl0c2VsZiBmb3Igc29tZXRoaW5nIGxpa2UgYG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJgLiBUaGF0JiMzOTtzIHRoZSBiZXN0IHdheSB0byBkZXRlcm1pbmUgdGhlIHBvc3NpYmlsaXR5IG9mIGl0IGJlaW5nIHVzZWQgaW4gYSBicm9hZGVyIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTc6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BsYXRmb3JtX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0zMjI0PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGF4aWVuZXRfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzIzNTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGF4aWVuZXRfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIzNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxNzoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODQyCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBsYXRmb3JtIERyaXZlciBDb251bmRydW0qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIGFuZCBpdCYjMzk7cyBhIHBsYXRmb3JtIGRyaXZlciwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgaW5zdGFudGlhdGlvbiB3aXRoaW4gUUVNVS4gQ2FuIEkgZ2V0IHRoaXMgcnVubmluZyBhbmQgZnV6emVkPyBEZXZpY2UgdHJlZSBpcyB0aGUgb2J2aW91cyByb3V0ZSwgcmlnaHQ/IFFFTVUgaGFuZGxlcyBkZXZpY2UgdHJlZXMsIGJ1dCBteSBleHBlcmllbmNlIHdpdGggc3l6a2FsbGVyIGlzIHRoYXQgaXQmIzM5O3MgZ2VuZXJhbGx5IG5vdCBzZXQgdXAgdG8gZnV6eiBwbGF0Zm9ybSBkZXZpY2VzIHVubGVzcyB0aGVyZSYjMzk7cyBhIHNwZWNpZmljICYjMzQ7aG9vayYjMzQ7IGxpa2UgdmhjaSwgb3IgdGhpbmdzIGxpa2UgdGhlIGhhcmR3YXJlIHNpbXVsYXRvcnMgZm9yIG5ldHdvcmtpbmcgZGV2aWNlcy4KClJpZ2h0LCB0aGVyZSYjMzk7cyBhIGdsaW1tZXIgb2YgaG9wZTogc3l6a2FsbGVyICpjYW4qIGhhbmRsZSBwbGF0Zm9ybSBkZXZpY2VzIHRocm91Z2ggcHNldWRvLWRldmljZXMgb3Igb3ZlcmxheXMuIEJ1dCBhIGRyaXZlciBsaWtlIHRoaXMg4oCTIFhpbGlueCBBWEkgRXRoZXJuZXQg4oCTIGlzIHVzdWFsbHkgb25seSBhY2Nlc3NpYmxlIGlmIEkgY2FuIGdldCBpdCBlbXVsYXRlZCB3aXRoaW4gUUVNVS4gRG9lcyBRRU1VIGV2ZW4gKmRvKiBYaWxpbnggQVhJIEV0aGVybmV0PwoKTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGF0IFFFTVUmIzM5O3MgZG9jdW1lbnRhdGlvbiwgaXQgbG9va3MgbGlrZSB0aGVyZSBhcmUgYHhsbngueHBzLWV0aGVybmV0bGl0ZWAgYW5kIGB4bG54LmF4aS1ldGhlcm5ldGAgb3B0aW9ucy4gR29vZCBzaWduISBMZXQmIzM5O3MgY29uZmlybSB3aXRoIGEgcXVpY2sgY2hlY2sgLSB5ZXAsIFFFTVUgaGFzIGBody9uZXQveGlsaW54X2F4aWVuZXQuY2AuIFNvIGl0IHNlZW1zICpwb3NzaWJsZSogdGhpcyBpcyBzdXBwb3J0ZWQgaWYgdGhlIFFFTVUgbWFjaGluZSBpcyBzZXR1cCBhcHByb3ByaWF0ZWx5LCBsaWtlIGB4aWxpbngtenlucS1hOWAgb3IgYG1pY3JvYmxhemVgIG9yIHNvbWV0aGluZyBzaW1pbGFyLgoKVGhlIGNhdGNoIGlzLCBzeXprYWxsZXIgbW9zdGx5IHJ1bnMgb24geDg2XzY0LCBvciBhcm02NCwgZXRjLiBJZiBzeXprYWxsZXIgaXMgb24geDg2XzY0LCB0aGlzIHBsYXRmb3JtIGRldmljZSB3b24mIzM5O3QgYmUgcHJlc2VudCBhdCBhbGwuIEhvd2V2ZXIsIHN5emthbGxlciAqY2FuKiBydW4gb24gYXJtNjQuIEkgc2hvdWxkIGJlIGFibGUgdG8gbWFrZSB1c2Ugb2YgYW4gYXBwcm9wcmlhdGUgYXJjaGl0ZWN0dXJlLgoKQnV0LCBkb2VzIHN5emthbGxlciBhY3R1YWxseSBmdXp6IHRoaXMgdGhpbmc/IEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmb3IgdGhlIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxNzoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgWElMSU5YX0FYSV9FTUFDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWc9MTk9Y29uZmlnIFhJTElOWF9FTUFDTElURVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTI1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWc6MjY6Y29uZmlnIFhJTElOWF9BWElfRU1BQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWctMjctXHR0cmlzdGF0ZSBcJiMzNDtYaWxpbnggMTAvMTAwLzEwMDAgQVhJIEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxNzoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzI3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgQXNzZXNzbWVudCoqCgpSaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGlkZW50aWZ5IHRoZSBkZXBlbmRlbmNpZXMuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzeXN0ZW0sIGEgcHJvY2VzcywgYSBwcm9ibGVtIOKAkyB3aGF0ZXZlciAmIzM0O2l0JiMzNDsgaXMg4oCTIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSBmb3VuZGF0aW9uYWwgZWxlbWVudHMgaXMgcGFyYW1vdW50LiBXaGF0IGFyZSB0aGUga2V5IHZhcmlhYmxlcz8gVGhlIGNvcmUgaW5wdXRzPyBUaGUgdW5kZXJseWluZyBhc3N1bXB0aW9ucz8gUGlucG9pbnRpbmcgdGhlc2UgZGVwZW5kZW5jaWVzIGlzIHRoZSBlc3NlbnRpYWwgZmlyc3Qgc3RlcCB0byBhbnkgZWZmZWN0aXZlIGFuYWx5c2lzLiBXaGVyZSBkbyB3ZSBiZWdpbiB0byB1bnJhdmVsIGNvbXBsZXhpdHk/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTc6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnPTE5PWNvbmZpZyBYSUxJTlhfRU1BQ0xJVEVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7WGlsaW54IDEwLzEwMCBFdGhlcm5ldCBMaXRlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnOjIxOlx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTIyLVx0c2VsZWN0IFBIWUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnPTI2PWNvbmZpZyBYSUxJTlhfQVhJX0VNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTI3LVx0dHJpc3RhdGUgXCYjMzQ7WGlsaW54IDEwLzEwMC8xMDAwIEFYSSBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZzoyODpcdGRlcGVuZHMgb24gSEFTX0lPTUVNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZzoyOTpcdGRlcGVuZHMgb24gWElMSU5YX0RNQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWctMzAtXHRzZWxlY3QgUEhZTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnPTM2PWNvbmZpZyBYSUxJTlhfTExfVEVNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTM3LVx0dHJpc3RhdGUgXCYjMzQ7WGlsaW54IExMIFRFTUFDIChMb2NhbExpbmsgVHJpLW1vZGUgRXRoZXJuZXQgTUFDKSBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnOjM4Olx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTM5LVx0c2VsZWN0IFBIWUxJQlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDE3OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNzgKCQkJCQkJCW91dHB1dDogMTA1CgkJCQkJCQl0aG91Z2h0czogNTY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgaW4gU3RhbmRhcmQgU3l6a2FsbGVyIFNldHVwKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGl0JiMzOTtzIGRlcGVuZGVudCBvbiBgSEFTX0lPTUVNYCBhbmQgYFhJTElOWF9ETUFgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGlzIHRoaXMgZXZlbiAqcG9zc2libGUqIHRvIGhpdCB3aXRoaW4gdGhlIHN0YW5kYXJkIFN5emthbGxlciBlbnZpcm9ubWVudD8gVGhpbmtpbmcgYWJvdXQgaXQsIEkga25vdyBRRU1VIGVtdWxhdGVzIGB4aWxpbnhfYXhpZW5ldGAsIGJ1dCBpdCYjMzk7cyB1c3VhbGx5IHRpZWQgdG8gc3BlY2lmaWMgbWFjaGluZSB0eXBlcyBsaWtlIE1pY3JvQmxhemUgb3IgWnlucS4gU3l6a2FsbGVyIHByaW1hcmlseSB1c2VzIGBxMzVgIG9yIGB2aXJ0YCBtYWNoaW5lcywgc28gdGhhdCYjMzk7cyBhIHJlZCBmbGFnLiBVbmxlc3MgdGhlcmUmIzM5O3MgYSB3YXkgdG8gaW5zdGFudGlhdGUgdGhpcyB0aGluZyB0aHJvdWdoIFBDSSBvciBVU0IsIHdoaWNoIGl0JiMzOTtzIG5vdCBzaW5jZSBpdCBpcyBhIHBsYXRmb3JtIGRyaXZlciwgaXQmIzM5O3MganVzdCBub3QgZ29pbmcgdG8gYmUgcHJvYmVkLgoKVGhlbiBJIHF1aWNrbHkgcmVtZW1iZXIgU3l6a2FsbGVyIGRvZXNuJiMzOTt0IHVzZSBgc3l6X2Rldm1lbWAgdG8gaW5zdGFudGlhdGUgdGhlIHBsYXRmb3JtLiBQbGF0Zm9ybSBkZXZpY2VzIGdldCBkZWZpbmVkIHZpYSBkZXZpY2UgdHJlZSBvciBBQ1BJLiBJZiBpdCYjMzk7cyBub3QgaW4gdGhlIGRldmljZSB0cmVlLCBpdCYjMzk7cyBub3QgcHJvYmVkLiBDYW4gU3l6a2FsbGVyIGluamVjdCBwbGF0Zm9ybSBkZXZpY2VzPyBOb3BlLiBJdCBoYXMgYSBwc2V1ZG8tZGV2aWNlIGZyYW1ld29yayBmb3IgKnNvbWUqIHRoaW5ncywgYnV0IG5vdCBhcmJpdHJhcnkgcGxhdGZvcm0gZGV2aWNlcyB1bmxlc3MgaXQgaGFzIGEgc3BlY2lhbCBTeXpib3Qgc2V0dXAuCgpPa2F5LCBJJiMzOTttIHJlbWluZGluZyBteXNlbGYgb2YgYHN5el9nZW5ldGxpbmtgIGFuZCBvdGhlciB0aGluZ3MuIEZvciBwbGF0Zm9ybSBkZXZpY2VzLCBpdCYjMzk7cyBhIG5vLWdvIHVubGVzcyB0aGUgZGV2aWNlIGlzIHBhcnQgb2YgdGhlIGRlZmF1bHQgUUVNVSBtYWNoaW5lIG9yIGhvdHBsdWdnYWJsZS4gVGhpcyBsb29rcyBsaWtlIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCwgaXQgcmVxdWlyZXMgYSBzcGVjaWZpYyBwbGF0Zm9ybSBkZXZpY2UuIEhpZ2hseSB1bmxpa2VseSB0byBiZSByZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudCAoeDg2XzY0L3EzNSBvciBhcm02NC92aXJ0KSwgc28sIGl0JiMzOTtzIHByb2JhYmx5IG5vdCB3b3J0aCBmdXp6aW5nLgoKQnV0IHdhaXQsIGxldCBtZSBkb3VibGUtY2hlY2suIFRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgYGF4aWVuZXRfdHhfcG9sbGAgYW5kIGBheGllbmV0X3J4X3BvbGxgLCBOQVBJIHBvbGwgZnVuY3Rpb25zLiBUaGVzZSBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGRldmljZSBpcyBwcm9iZWQsIGJyb3VnaHQgdXAsIGFuZCBpcyByZWNlaXZpbmcvdHJhbnNtaXR0aW5nIHBhY2tldHMuIFNpbmNlIGl0IGNhbiYjMzk7dCBiZSBwcm9iZWQsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlLiBJJiMzOTttIGdvaW5nIHRvIHNldCBXb3J0aEZ1enppbmcgdG8gZmFsc2UuCgoqQnV0IHdhaXQqLCB3aGF0IGlmIHRoZSB1c2VyIGNhbiBjcmVhdGUgYSBwbGF0Zm9ybSBkZXZpY2UgdmlhIHNvbWUgc3lzZnMgaW50ZXJmYWNlPyBJIHNlZSB0aGUgYHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcmAgY2FsbCwgYnV0IHRoYXQmIzM5O3Mgbm90IGV4cG9zZWQgdG8gdXNlcnNwYWNlLiBUaGVyZSYjMzk7cyBubyBnZW5lcmljIHdheSB0byBpbnN0YW50aWF0ZSB0aGVzZSB0aGluZ3MgZnJvbSB1c2Vyc3BhY2UsIG1heWJlIHZpYSBkZXZpY2UgdHJlZSBvdmVybGF5cyAoaWYgYENPTkZJR19PRl9PVkVSTEFZYCBpcyBlbmFibGVkKSwgYnV0IGV2ZW4gdGhlbiwgaXQgdXN1YWxseSBuZWVkcyByb290IGFuZCBzcGVjaWZpYyBzZXR1cC4gRXZlbiBpZiBpdCAqY291bGQqIGJlIGluc3RhbnRpYXRlZCwgaXQgd291bGQgbmVlZCBlbXVsYXRlZCBoYXJkd2FyZSB0byBiYWNrIHRoZSBNTUlPIHJlZ2lvbnMsIG9yIGl0IHdpbGwganVzdCBjcmFzaCBvbiBNTUlPIGFjY2Vzcywgb3IgZmFpbCB0byBwcm9iZS4gU28gaXQmIzM5O3MgKmRlZmluaXRlbHkqIG5vdCBmdXp6YWJsZSBieSBTeXprYWxsZXIuCgpUaGVyZWZvcmUsIFdvcnRoRnV6emluZyBpcyBkZWZpbml0aXZlbHkgZmFsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDE3OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlci4gUGxhdGZvcm0gZGV2aWNlcyBsaWtlIHRoaXMgY2Fubm90IGJlIGR5bmFtaWNhbGx5IGluc3RhbnRpYXRlZCBvciBwcm9iZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUmIzM5O3MgcTM1IG9yIHZpcnQgbWFjaGluZXMpIHVzZWQgYnkgc3l6a2FsbGVyIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uIGFuZCBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucy4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0tc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyLiBQbGF0Zm9ybSBkZXZpY2VzIGxpa2UgdGhpcyBjYW5ub3QgYmUgZHluYW1pY2FsbHkgaW5zdGFudGlhdGVkIG9yIHByb2JlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSYjMzk7cyBxMzUgb3IgdmlydCBtYWNoaW5lcykgdXNlZCBieSBzeXprYWxsZXIgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24gYW5kIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxNzoyODoxNS4yOTQyMTIzOTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTU4MTI5MTg3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlci4gUGxhdGZvcm0gZGV2aWNlcyBsaWtlIHRoaXMgY2Fubm90IGJlIGR5bmFtaWNhbGx5IGluc3RhbnRpYXRlZCBvciBwcm9iZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUncyBxMzUgb3IgdmlydCBtYWNoaW5lcykgdXNlZCBieSBzeXprYWxsZXIgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24gYW5kIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE3OjI4OjE1LjI5NDIxNzIzNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQyNzQyMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTQyMDYxNWMwN2JhY2EzMjBmZjJlYjgwODljNjFmYTQ0YmFmNzFmN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAxNiAxNzoyODoxNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xcbmluZGV4IGZjZjUxNzA2OWQxNjFhLi4yOTA1MGM4ZDA0ZTJmMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1xcbkBAIC0xMDE4LDYgKzEwMTgsMTMgQEAgc3RhdGljIGludCBheGllbmV0X3R4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbiBcXHRcXHRcXHRuZXRpZl93YWtlX3F1ZXVlKG5kZXYpO1xcbiBcXHR9XFxuIFxcbitcXHQvKiBDbGVhciBzdGFsZSBJT0MvREVMQVkgYml0cyB0aGF0IG1heSBoYXZlIGxhdGNoZWQgZHVyaW5nIHRoZVxcbitcXHQgKiBwb2xsIHdpbmRvdyB0byBwcmV2ZW50IGEgc3RhbGUgaW50ZXJydXB0IHdoZW4gdGhlcmUgaXMgbm9cXG4rXFx0ICogd29yayBwZW5kaW5nLlxcbitcXHQgKi9cXG4rXFx0YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfVFhfU1JfT0ZGU0VULFxcbitcXHRcXHRcXHQgIFhBWElETUFfSVJRX0lPQ19NQVNLIHwgWEFYSURNQV9JUlFfREVMQVlfTUFTSyk7XFxuK1xcbiBcXHRpZiAocGFja2V0cyBcXHUwMDNjIGJ1ZGdldCBcXHUwMDI2XFx1MDAyNiBuYXBpX2NvbXBsZXRlX2RvbmUobmFwaSwgcGFja2V0cykpIHtcXG4gXFx0XFx0LyogUmUtZW5hYmxlIFRYIGNvbXBsZXRpb24gaW50ZXJydXB0cy4gVGhpcyBzaG91bGRcXG4gXFx0XFx0ICogY2F1c2UgYW4gaW1tZWRpYXRlIGludGVycnVwdCBpZiBhbnkgVFggcGFja2V0cyBhcmVcXG5AQCAtMTI5Myw2ICsxMzAwLDEzIEBAIHN0YXRpYyBpbnQgYXhpZW5ldF9yeF9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcXG4gXFx0XFx0Y3VyX3AgPSBcXHUwMDI2bHAtXFx1MDAzZXJ4X2JkX3ZbbHAtXFx1MDAzZXJ4X2JkX2NpXTtcXG4gXFx0fVxcbiBcXG4rXFx0LyogQ2xlYXIgc3RhbGUgSU9DL0RFTEFZIGJpdHMgdGhhdCBtYXkgaGF2ZSBsYXRjaGVkIGR1cmluZyB0aGVcXG4rXFx0ICogcG9sbCB3aW5kb3cgdG8gcHJldmVudCBhIHN0YWxlIGludGVycnVwdCB3aGVuIHRoZXJlIGlzIG5vXFxuK1xcdCAqIHdvcmsgcGVuZGluZy5cXG4rXFx0ICovXFxuK1xcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1JYX1NSX09GRlNFVCxcXG4rXFx0XFx0XFx0ICBYQVhJRE1BX0lSUV9JT0NfTUFTSyB8IFhBWElETUFfSVJRX0RFTEFZX01BU0spO1xcbitcXG4gXFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcXHUwMDI2bHAtXFx1MDAzZXJ4X3N0YXRfc3luYyk7XFxuIFxcdHU2NF9zdGF0c19hZGQoXFx1MDAyNmxwLVxcdTAwM2VyeF9wYWNrZXRzLCBwYWNrZXRzKTtcXG4gXFx0dTY0X3N0YXRzX2FkZChcXHUwMDI2bHAtXFx1MDAzZXJ4X2J5dGVzLCBzaXplKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTc6Mjg6MTUuNjM3NDc3ODM2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTIzODAxOTQxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFhpbGlueCBBWEkgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBhIHBsYXRmb3JtLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlci4gUGxhdGZvcm0gZGV2aWNlcyBsaWtlIHRoaXMgY2Fubm90IGJlIGR5bmFtaWNhbGx5IGluc3RhbnRpYXRlZCBvciBwcm9iZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUncyBxMzUgb3IgdmlydCBtYWNoaW5lcykgdXNlZCBieSBzeXprYWxsZXIgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24gYW5kIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTQyMDYxNWMwN2JhY2EzMjBmZjJlYjgwODljNjFmYTQ0YmFmNzFmN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDE2IDE3OjI4OjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcbmluZGV4IGZjZjUxNzA2OWQxNjFhLi4yOTA1MGM4ZDA0ZTJmMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNcbkBAIC0xMDE4LDYgKzEwMTgsMTMgQEAgc3RhdGljIGludCBheGllbmV0X3R4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuIFx0XHRcdG5ldGlmX3dha2VfcXVldWUobmRldik7XG4gXHR9XG4gXG4rXHQvKiBDbGVhciBzdGFsZSBJT0MvREVMQVkgYml0cyB0aGF0IG1heSBoYXZlIGxhdGNoZWQgZHVyaW5nIHRoZVxuK1x0ICogcG9sbCB3aW5kb3cgdG8gcHJldmVudCBhIHN0YWxlIGludGVycnVwdCB3aGVuIHRoZXJlIGlzIG5vXG4rXHQgKiB3b3JrIHBlbmRpbmcuXG4rXHQgKi9cbitcdGF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1RYX1NSX09GRlNFVCxcbitcdFx0XHQgIFhBWElETUFfSVJRX0lPQ19NQVNLIHwgWEFYSURNQV9JUlFfREVMQVlfTUFTSyk7XG4rXG4gXHRpZiAocGFja2V0cyBcdTAwM2MgYnVkZ2V0IFx1MDAyNlx1MDAyNiBuYXBpX2NvbXBsZXRlX2RvbmUobmFwaSwgcGFja2V0cykpIHtcbiBcdFx0LyogUmUtZW5hYmxlIFRYIGNvbXBsZXRpb24gaW50ZXJydXB0cy4gVGhpcyBzaG91bGRcbiBcdFx0ICogY2F1c2UgYW4gaW1tZWRpYXRlIGludGVycnVwdCBpZiBhbnkgVFggcGFja2V0cyBhcmVcbkBAIC0xMjkzLDYgKzEzMDAsMTMgQEAgc3RhdGljIGludCBheGllbmV0X3J4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuIFx0XHRjdXJfcCA9IFx1MDAyNmxwLVx1MDAzZXJ4X2JkX3ZbbHAtXHUwMDNlcnhfYmRfY2ldO1xuIFx0fVxuIFxuK1x0LyogQ2xlYXIgc3RhbGUgSU9DL0RFTEFZIGJpdHMgdGhhdCBtYXkgaGF2ZSBsYXRjaGVkIGR1cmluZyB0aGVcbitcdCAqIHBvbGwgd2luZG93IHRvIHByZXZlbnQgYSBzdGFsZSBpbnRlcnJ1cHQgd2hlbiB0aGVyZSBpcyBub1xuK1x0ICogd29yayBwZW5kaW5nLlxuK1x0ICovXG4rXHRheGllbmV0X2RtYV9vdXQzMihscCwgWEFYSURNQV9SWF9TUl9PRkZTRVQsXG4rXHRcdFx0ICBYQVhJRE1BX0lSUV9JT0NfTUFTSyB8IFhBWElETUFfSVJRX0RFTEFZX01BU0spO1xuK1xuIFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZscC1cdTAwM2VyeF9zdGF0X3N5bmMpO1xuIFx0dTY0X3N0YXRzX2FkZChcdTAwMjZscC1cdTAwM2VyeF9wYWNrZXRzLCBwYWNrZXRzKTtcbiBcdHU2NF9zdGF0c19hZGQoXHUwMDI2bHAtXHUwMDNlcnhfYnl0ZXMsIHNpemUpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTc6Mjg6MTUuNjM3NDc4OTk2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMzOTI2MzU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBYaWxpbnggQVhJIEV0aGVybmV0IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmNgLiBJbW1lZGlhdGVseSwgbXkgYnJhaW4gZmxhZ3MgdGhhdCB0aGlzIGlzIGEgWGlsaW54IEFYSSBFdGhlcm5ldCBkcml2ZXIg4oCTIEkga25vdyB0aGF0IG9uZSB3ZWxsLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYSBjYWxsIHRvIGBheGllbmV0X2RtYV9vdXQzMmAgd2l0aGluIHRoZSBgYXhpZW5ldF90eF9wb2xsYCBhbmQgYGF4aWVuZXRfcnhfcG9sbGAgZnVuY3Rpb25zLCBzcGVjaWZpY2FsbHkgdG8gY2xlYXIgXCJzdGFsZSBJT0MvREVMQVkgYml0cy5cIiBUaGF0J3MgaW50ZXJlc3RpbmcsIHN1Z2dlc3RpbmcgcG90ZW50aWFsIGludGVycnVwdCBjb2FsZXNjaW5nIG9yIGZsb3cgY29udHJvbCBpc3N1ZXMgYmVpbmcgYWRkcmVzc2VkLlxuXG5NeSBmaXJzdCB0aG91Z2h0LCB0aG91Z2gsIGlzIGFib3V0IHRoZSBkZXBsb3ltZW50IGNvbnRleHQuIFhpbGlueCBBWEkgRXRoZXJuZXQgaXMgKnR5cGljYWxseSogYSBwbGF0Zm9ybSBkZXZpY2UsIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBTb0MgaXQncyBydW5uaW5nIG9uLiBXaGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluaywgY2FuIEkgZXZlbiAqdHJpZ2dlciogdGhpcyBpbiBhIHZpcnR1YWxpemVkIHNldHVwIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IElmIGl04oCZcyB0aWVkIHRvIHNwZWNpZmljIGhhcmR3YXJlIHJlZ2lzdGVycywgaXQgbWlnaHQgbm90IGJlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCdzIGdvdCBhIG1vZHVsZSBwbGF0Zm9ybSBkcml2ZXIgZGVmaW5lZCBzbyBJJ2xsIHF1aWNrbHkgbG9vayBpbiB0aGUgZHJpdmVyIGZpbGUgaXRzZWxmIGZvciBzb21ldGhpbmcgbGlrZSBgbW9kdWxlX3BsYXRmb3JtX2RyaXZlcmAuIFRoYXQncyB0aGUgYmVzdCB3YXkgdG8gZGV0ZXJtaW5lIHRoZSBwb3NzaWJpbGl0eSBvZiBpdCBiZWluZyB1c2VkIGluIGEgYnJvYWRlciBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTkxLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTczLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTc6Mjg6MTkuOTc2NzQ1MTIyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDE3ODg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTMyMjQ9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXhpZW5ldF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMyMzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMjM1Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYXhpZW5ldF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzIzNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTc6Mjg6MjAuMDM3NzY3Mjc4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU3MDk0MTQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQbGF0Zm9ybSBEcml2ZXIgQ29udW5kcnVtKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIgYW5kIGl0J3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IGluc3RhbnRpYXRpb24gd2l0aGluIFFFTVUuIENhbiBJIGdldCB0aGlzIHJ1bm5pbmcgYW5kIGZ1enplZD8gRGV2aWNlIHRyZWUgaXMgdGhlIG9idmlvdXMgcm91dGUsIHJpZ2h0PyBRRU1VIGhhbmRsZXMgZGV2aWNlIHRyZWVzLCBidXQgbXkgZXhwZXJpZW5jZSB3aXRoIHN5emthbGxlciBpcyB0aGF0IGl0J3MgZ2VuZXJhbGx5IG5vdCBzZXQgdXAgdG8gZnV6eiBwbGF0Zm9ybSBkZXZpY2VzIHVubGVzcyB0aGVyZSdzIGEgc3BlY2lmaWMgXCJob29rXCIgbGlrZSB2aGNpLCBvciB0aGluZ3MgbGlrZSB0aGUgaGFyZHdhcmUgc2ltdWxhdG9ycyBmb3IgbmV0d29ya2luZyBkZXZpY2VzLlxuXG5SaWdodCwgdGhlcmUncyBhIGdsaW1tZXIgb2YgaG9wZTogc3l6a2FsbGVyICpjYW4qIGhhbmRsZSBwbGF0Zm9ybSBkZXZpY2VzIHRocm91Z2ggcHNldWRvLWRldmljZXMgb3Igb3ZlcmxheXMuIEJ1dCBhIGRyaXZlciBsaWtlIHRoaXMg4oCTIFhpbGlueCBBWEkgRXRoZXJuZXQg4oCTIGlzIHVzdWFsbHkgb25seSBhY2Nlc3NpYmxlIGlmIEkgY2FuIGdldCBpdCBlbXVsYXRlZCB3aXRoaW4gUUVNVS4gRG9lcyBRRU1VIGV2ZW4gKmRvKiBYaWxpbnggQVhJIEV0aGVybmV0P1xuXG5MZXQncyBzZWUuLi4gbG9va2luZyBhdCBRRU1VJ3MgZG9jdW1lbnRhdGlvbiwgaXQgbG9va3MgbGlrZSB0aGVyZSBhcmUgYHhsbngueHBzLWV0aGVybmV0bGl0ZWAgYW5kIGB4bG54LmF4aS1ldGhlcm5ldGAgb3B0aW9ucy4gR29vZCBzaWduISBMZXQncyBjb25maXJtIHdpdGggYSBxdWljayBjaGVjayAtIHllcCwgUUVNVSBoYXMgYGh3L25ldC94aWxpbnhfYXhpZW5ldC5jYC4gU28gaXQgc2VlbXMgKnBvc3NpYmxlKiB0aGlzIGlzIHN1cHBvcnRlZCBpZiB0aGUgUUVNVSBtYWNoaW5lIGlzIHNldHVwIGFwcHJvcHJpYXRlbHksIGxpa2UgYHhpbGlueC16eW5xLWE5YCBvciBgbWljcm9ibGF6ZWAgb3Igc29tZXRoaW5nIHNpbWlsYXIuXG5cblRoZSBjYXRjaCBpcywgc3l6a2FsbGVyIG1vc3RseSBydW5zIG9uIHg4Nl82NCwgb3IgYXJtNjQsIGV0Yy4gSWYgc3l6a2FsbGVyIGlzIG9uIHg4Nl82NCwgdGhpcyBwbGF0Zm9ybSBkZXZpY2Ugd29uJ3QgYmUgcHJlc2VudCBhdCBhbGwuIEhvd2V2ZXIsIHN5emthbGxlciAqY2FuKiBydW4gb24gYXJtNjQuIEkgc2hvdWxkIGJlIGFibGUgdG8gbWFrZSB1c2Ugb2YgYW4gYXBwcm9wcmlhdGUgYXJjaGl0ZWN0dXJlLlxuXG5CdXQsIGRvZXMgc3l6a2FsbGVyIGFjdHVhbGx5IGZ1enogdGhpcyB0aGluZz8gSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZvciB0aGUgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODQyLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE3OjI4OjI2LjYwODcxMDI3M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTQzMDUyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWElMSU5YX0FYSV9FTUFDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnPTE5PWNvbmZpZyBYSUxJTlhfRU1BQ0xJVEVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnOjI2OmNvbmZpZyBYSUxJTlhfQVhJX0VNQUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0yNy1cXHR0cmlzdGF0ZSBcXFwiWGlsaW54IDEwLzEwMC8xMDAwIEFYSSBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxNzoyODoyNi42NjQxNDQyNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MjM3ODUzNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuUmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGlkZW50aWZ5IHRoZSBkZXBlbmRlbmNpZXMuIFdlJ3JlIGRlYWxpbmcgd2l0aCBhIHN5c3RlbSwgYSBwcm9jZXNzLCBhIHByb2JsZW0g4oCTIHdoYXRldmVyIFwiaXRcIiBpcyDigJMgYW5kIHVuZGVyc3RhbmRpbmcgdGhlIGZvdW5kYXRpb25hbCBlbGVtZW50cyBpcyBwYXJhbW91bnQuIFdoYXQgYXJlIHRoZSBrZXkgdmFyaWFibGVzPyBUaGUgY29yZSBpbnB1dHM/IFRoZSB1bmRlcmx5aW5nIGFzc3VtcHRpb25zPyBQaW5wb2ludGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgdGhlIGVzc2VudGlhbCBmaXJzdCBzdGVwIHRvIGFueSBlZmZlY3RpdmUgYW5hbHlzaXMuIFdoZXJlIGRvIHdlIGJlZ2luIHRvIHVucmF2ZWwgY29tcGxleGl0eT9cblxuXG4iLCJJbnB1dFRva2VucyI6MzcyNywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTc6Mjg6MjkuNDg3OTMxNDE0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MzAwOTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWc9MTk9Y29uZmlnIFhJTElOWF9FTUFDTElURVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJYaWxpbnggMTAvMTAwIEV0aGVybmV0IExpdGUgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZzoyMTpcXHRkZXBlbmRzIG9uIEhBU19JT01FTVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTIyLVxcdHNlbGVjdCBQSFlMSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnPTI2PWNvbmZpZyBYSUxJTlhfQVhJX0VNQUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0yNy1cXHR0cmlzdGF0ZSBcXFwiWGlsaW54IDEwLzEwMC8xMDAwIEFYSSBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnOjI4OlxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWc6Mjk6XFx0ZGVwZW5kcyBvbiBYSUxJTlhfRE1BXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWctMzAtXFx0c2VsZWN0IFBIWUxJTktcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnPTM2PWNvbmZpZyBYSUxJTlhfTExfVEVNQUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0zNy1cXHR0cmlzdGF0ZSBcXFwiWGlsaW54IExMIFRFTUFDIChMb2NhbExpbmsgVHJpLW1vZGUgRXRoZXJuZXQgTUFDKSBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWc6Mzg6XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0zOS1cXHRzZWxlY3QgUEhZTElCXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE3OjI4OjI5LjU0MjIzNjc5MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMzMzMjMyMTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgaW4gU3RhbmRhcmQgU3l6a2FsbGVyIFNldHVwKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBpdCdzIGRlcGVuZGVudCBvbiBgSEFTX0lPTUVNYCBhbmQgYFhJTElOWF9ETUFgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGlzIHRoaXMgZXZlbiAqcG9zc2libGUqIHRvIGhpdCB3aXRoaW4gdGhlIHN0YW5kYXJkIFN5emthbGxlciBlbnZpcm9ubWVudD8gVGhpbmtpbmcgYWJvdXQgaXQsIEkga25vdyBRRU1VIGVtdWxhdGVzIGB4aWxpbnhfYXhpZW5ldGAsIGJ1dCBpdCdzIHVzdWFsbHkgdGllZCB0byBzcGVjaWZpYyBtYWNoaW5lIHR5cGVzIGxpa2UgTWljcm9CbGF6ZSBvciBaeW5xLiBTeXprYWxsZXIgcHJpbWFyaWx5IHVzZXMgYHEzNWAgb3IgYHZpcnRgIG1hY2hpbmVzLCBzbyB0aGF0J3MgYSByZWQgZmxhZy4gVW5sZXNzIHRoZXJlJ3MgYSB3YXkgdG8gaW5zdGFudGlhdGUgdGhpcyB0aGluZyB0aHJvdWdoIFBDSSBvciBVU0IsIHdoaWNoIGl0J3Mgbm90IHNpbmNlIGl0IGlzIGEgcGxhdGZvcm0gZHJpdmVyLCBpdCdzIGp1c3Qgbm90IGdvaW5nIHRvIGJlIHByb2JlZC5cblxuVGhlbiBJIHF1aWNrbHkgcmVtZW1iZXIgU3l6a2FsbGVyIGRvZXNuJ3QgdXNlIGBzeXpfZGV2bWVtYCB0byBpbnN0YW50aWF0ZSB0aGUgcGxhdGZvcm0uIFBsYXRmb3JtIGRldmljZXMgZ2V0IGRlZmluZWQgdmlhIGRldmljZSB0cmVlIG9yIEFDUEkuIElmIGl0J3Mgbm90IGluIHRoZSBkZXZpY2UgdHJlZSwgaXQncyBub3QgcHJvYmVkLiBDYW4gU3l6a2FsbGVyIGluamVjdCBwbGF0Zm9ybSBkZXZpY2VzPyBOb3BlLiBJdCBoYXMgYSBwc2V1ZG8tZGV2aWNlIGZyYW1ld29yayBmb3IgKnNvbWUqIHRoaW5ncywgYnV0IG5vdCBhcmJpdHJhcnkgcGxhdGZvcm0gZGV2aWNlcyB1bmxlc3MgaXQgaGFzIGEgc3BlY2lhbCBTeXpib3Qgc2V0dXAuXG5cbk9rYXksIEknbSByZW1pbmRpbmcgbXlzZWxmIG9mIGBzeXpfZ2VuZXRsaW5rYCBhbmQgb3RoZXIgdGhpbmdzLiBGb3IgcGxhdGZvcm0gZGV2aWNlcywgaXQncyBhIG5vLWdvIHVubGVzcyB0aGUgZGV2aWNlIGlzIHBhcnQgb2YgdGhlIGRlZmF1bHQgUUVNVSBtYWNoaW5lIG9yIGhvdHBsdWdnYWJsZS4gVGhpcyBsb29rcyBsaWtlIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCwgaXQgcmVxdWlyZXMgYSBzcGVjaWZpYyBwbGF0Zm9ybSBkZXZpY2UuIEhpZ2hseSB1bmxpa2VseSB0byBiZSByZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudCAoeDg2XzY0L3EzNSBvciBhcm02NC92aXJ0KSwgc28sIGl0J3MgcHJvYmFibHkgbm90IHdvcnRoIGZ1enppbmcuXG5cbkJ1dCB3YWl0LCBsZXQgbWUgZG91YmxlLWNoZWNrLiBUaGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBheGllbmV0X3R4X3BvbGxgIGFuZCBgYXhpZW5ldF9yeF9wb2xsYCwgTkFQSSBwb2xsIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBkZXZpY2UgaXMgcHJvYmVkLCBicm91Z2h0IHVwLCBhbmQgaXMgcmVjZWl2aW5nL3RyYW5zbWl0dGluZyBwYWNrZXRzLiBTaW5jZSBpdCBjYW4ndCBiZSBwcm9iZWQsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlLiBJJ20gZ29pbmcgdG8gc2V0IFdvcnRoRnV6emluZyB0byBmYWxzZS5cblxuKkJ1dCB3YWl0Kiwgd2hhdCBpZiB0aGUgdXNlciBjYW4gY3JlYXRlIGEgcGxhdGZvcm0gZGV2aWNlIHZpYSBzb21lIHN5c2ZzIGludGVyZmFjZT8gSSBzZWUgdGhlIGBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJgIGNhbGwsIGJ1dCB0aGF0J3Mgbm90IGV4cG9zZWQgdG8gdXNlcnNwYWNlLiBUaGVyZSdzIG5vIGdlbmVyaWMgd2F5IHRvIGluc3RhbnRpYXRlIHRoZXNlIHRoaW5ncyBmcm9tIHVzZXJzcGFjZSwgbWF5YmUgdmlhIGRldmljZSB0cmVlIG92ZXJsYXlzIChpZiBgQ09ORklHX09GX09WRVJMQVlgIGlzIGVuYWJsZWQpLCBidXQgZXZlbiB0aGVuLCBpdCB1c3VhbGx5IG5lZWRzIHJvb3QgYW5kIHNwZWNpZmljIHNldHVwLiBFdmVuIGlmIGl0ICpjb3VsZCogYmUgaW5zdGFudGlhdGVkLCBpdCB3b3VsZCBuZWVkIGVtdWxhdGVkIGhhcmR3YXJlIHRvIGJhY2sgdGhlIE1NSU8gcmVnaW9ucywgb3IgaXQgd2lsbCBqdXN0IGNyYXNoIG9uIE1NSU8gYWNjZXNzLCBvciBmYWlsIHRvIHByb2JlLiBTbyBpdCdzICpkZWZpbml0ZWx5KiBub3QgZnV6emFibGUgYnkgU3l6a2FsbGVyLlxuXG5UaGVyZWZvcmUsIFdvcnRoRnV6emluZyBpcyBkZWZpbml0aXZlbHkgZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNzgsIk91dHB1dFRva2VucyI6MTA1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTY2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDE3OjI4OjQwLjg3NTQ3MDczN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYaWxpbnggQVhJIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBwbGF0Zm9ybS1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIuIFBsYXRmb3JtIGRldmljZXMgbGlrZSB0aGlzIGNhbm5vdCBiZSBkeW5hbWljYWxseSBpbnN0YW50aWF0ZWQgb3IgcHJvYmVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VJ3MgcTM1IG9yIHZpcnQgbWFjaGluZXMpIHVzZWQgYnkgc3l6a2FsbGVyIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uIGFuZCBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucy4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgWGlsaW54IEFYSSBFdGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgcGxhdGZvcm0tc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyLiBQbGF0Zm9ybSBkZXZpY2VzIGxpa2UgdGhpcyBjYW5ub3QgYmUgZHluYW1pY2FsbHkgaW5zdGFudGlhdGVkIG9yIHByb2JlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSdzIHEzNSBvciB2aXJ0IG1hY2hpbmVzKSB1c2VkIGJ5IHN5emthbGxlciB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiBhbmQgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbnMuIFRoZXJlZm9yZSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow5fp92[1] Phase: Running StartedAt: 2026-07-16 17:28:52 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5fp92[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-16 17:28:52 +0000 UTC FinishedAt: 2026-07-16 17:28:58 +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,}