Name: series-workflowtr5c6 Phase: Failed StartedAt: 2026-09-14 22:26:14 +0000 UTC FinishedAt: 2026-09-14 23:14:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtr5c6[0] Phase: Succeeded StartedAt: 2026-09-14 22:26:14 +0000 UTC FinishedAt: 2026-09-14 23:14:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtr5c6[0].run-triage Phase: Succeeded StartedAt: 2026-09-14 22:26:14 +0000 UTC FinishedAt: 2026-09-14 23:14:45 +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+CgkJCTx0ZD4yMDI2LzA5LzE0IDIzOjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVyIHRlYXJkb3duIGZ1bmN0aW9ucyAobXQ3NTMwX3JlbW92ZSBhbmQgbXQ3NTMwX3JlbW92ZV9jb21tb24pIGZvciB0aGUgTWVkaWFUZWsgTVQ3NTMwL01UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggRFNBIGRyaXZlci4gVGhpcyBjb2RlIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgYW5kIGRyaXZlciByZW1vdmUvdGVhcmRvd24gcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMzoxMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGNkNzJhZDkyMGJkYTU0ODc1MDNkZGE0ZDk3MWNmM2YyNDkyN2RlMDhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCAxNCAyMzoxMzo0OSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jXG5pbmRleCA3ODRkZDU4YTcxNTg5Li5kZTQyZjcwYWZjZmExIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jXG5AQCAtMjI3LDE1ICYjNDM7MjI3LDE3IEBAIG10NzUzMF9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuIFx0aWYgKCFwcml2KVxuIFx0XHRyZXR1cm47XG4gXG4tXHRyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShwcml2LVx1MDAzZWNvcmVfcHdyKTtcbi1cdGlmIChyZXQgXHUwMDNjIDApXG4tXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsXG4tXHRcdFx0XCYjMzQ7RmFpbGVkIHRvIGRpc2FibGUgY29yZSBwb3dlcjogJWRcXG5cJiMzNDssIHJldCk7XG4tXG4tXHRyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShwcml2LVx1MDAzZWlvX3B3cik7XG4tXHRpZiAocmV0IFx1MDAzYyAwKVxuLVx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gZGlzYWJsZSBpbyBwd3I6ICVkXFxuXCYjMzQ7LFxuLVx0XHRcdHJldCk7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlaWQgPT0gSURfTVQ3NTMwKSB7XG4mIzQzO1x0XHRyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShwcml2LVx1MDAzZWNvcmVfcHdyKTtcbiYjNDM7XHRcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFx0XCYjMzQ7RmFpbGVkIHRvIGRpc2FibGUgY29yZSBwb3dlcjogJWRcXG5cJiMzNDssIHJldCk7XG4mIzQzO1xuJiM0MztcdFx0cmV0ID0gcmVndWxhdG9yX2Rpc2FibGUocHJpdi1cdTAwM2Vpb19wd3IpO1xuJiM0MztcdFx0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGRpc2FibGUgaW8gcHdyOiAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRyZXQpO1xuJiM0MztcdH1cbiBcbiBcdG10NzUzMF9yZW1vdmVfY29tbW9uKHByaXYpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuaW5kZXggM2U2MWViM2MyYjFlMi4uOTBmZDA0NjY1ZWJmMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG5AQCAtMzU5MywxMSAmIzQzOzM1OTMsMTEgQEAgRVhQT1JUX1NZTUJPTF9HUEwobXQ3NTMwX3Byb2JlX2NvbW1vbik7XG4gdm9pZFxuIG10NzUzMF9yZW1vdmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbiB7XG4mIzQzO1x0ZHNhX3VucmVnaXN0ZXJfc3dpdGNoKHByaXYtXHUwMDNlZHMpO1xuJiM0MztcbiBcdGlmIChwcml2LVx1MDAzZWlycV9kb21haW4pXG4gXHRcdG10NzUzMF9mcmVlX21kaW9faXJxKHByaXYpO1xuIFxuLVx0ZHNhX3VucmVnaXN0ZXJfc3dpdGNoKHByaXYtXHUwMDNlZHMpO1xuLVxuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZXJlZ19tdXRleCk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKG10NzUzMF9yZW1vdmVfY29tbW9uKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMzoxMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXIgdGVhcmRvd24gZnVuY3Rpb25zIChtdDc1MzBfcmVtb3ZlIGFuZCBtdDc1MzBfcmVtb3ZlX2NvbW1vbikgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAvTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBEU0EgZHJpdmVyLiBUaGlzIGNvZGUgcmVxdWlyZXMgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBhbmQgZHJpdmVyIHJlbW92ZS90ZWFyZG93biBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIHN0YW5kYXJkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2Q3MmFkOTIwYmRhNTQ4NzUwM2RkYTRkOTcxY2YzZjI0OTI3ZGUwOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gU2VwIDE0IDIzOjEzOjQ5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYwppbmRleCA3ODRkZDU4YTcxNTg5Li5kZTQyZjcwYWZjZmExIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYwpAQCAtMjI3LDE1ICYjNDM7MjI3LDE3IEBAIG10NzUzMF9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KQogCWlmICghcHJpdikKIAkJcmV0dXJuOwogCi0JcmV0ID0gcmVndWxhdG9yX2Rpc2FibGUocHJpdi0mZ3Q7Y29yZV9wd3IpOwotCWlmIChyZXQgJmx0OyAwKQotCQlkZXZfZXJyKHByaXYtJmd0O2RldiwKLQkJCSYjMzQ7RmFpbGVkIHRvIGRpc2FibGUgY29yZSBwb3dlcjogJWRcbiYjMzQ7LCByZXQpOwotCi0JcmV0ID0gcmVndWxhdG9yX2Rpc2FibGUocHJpdi0mZ3Q7aW9fcHdyKTsKLQlpZiAocmV0ICZsdDsgMCkKLQkJZGV2X2Vycihwcml2LSZndDtkZXYsICYjMzQ7RmFpbGVkIHRvIGRpc2FibGUgaW8gcHdyOiAlZFxuJiMzNDssCi0JCQlyZXQpOwomIzQzOwlpZiAocHJpdi0mZ3Q7aWQgPT0gSURfTVQ3NTMwKSB7CiYjNDM7CQlyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShwcml2LSZndDtjb3JlX3B3cik7CiYjNDM7CQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCQlkZXZfZXJyKHByaXYtJmd0O2RldiwKJiM0MzsJCQkJJiMzNDtGYWlsZWQgdG8gZGlzYWJsZSBjb3JlIHBvd2VyOiAlZFxuJiMzNDssIHJldCk7CiYjNDM7CiYjNDM7CQlyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShwcml2LSZndDtpb19wd3IpOwomIzQzOwkJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQkJZGV2X2Vycihwcml2LSZndDtkZXYsICYjMzQ7RmFpbGVkIHRvIGRpc2FibGUgaW8gcHdyOiAlZFxuJiMzNDssCiYjNDM7CQkJCXJldCk7CiYjNDM7CX0KIAogCW10NzUzMF9yZW1vdmVfY29tbW9uKHByaXYpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMKaW5kZXggM2U2MWViM2MyYjFlMi4uOTBmZDA0NjY1ZWJmMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYwpAQCAtMzU5MywxMSAmIzQzOzM1OTMsMTEgQEAgRVhQT1JUX1NZTUJPTF9HUEwobXQ3NTMwX3Byb2JlX2NvbW1vbik7CiB2b2lkCiBtdDc1MzBfcmVtb3ZlX2NvbW1vbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpCiB7CiYjNDM7CWRzYV91bnJlZ2lzdGVyX3N3aXRjaChwcml2LSZndDtkcyk7CiYjNDM7CiAJaWYgKHByaXYtJmd0O2lycV9kb21haW4pCiAJCW10NzUzMF9mcmVlX21kaW9faXJxKHByaXYpOwogCi0JZHNhX3VucmVnaXN0ZXJfc3dpdGNoKHByaXYtJmd0O2RzKTsKLQogCW11dGV4X2Rlc3Ryb3koJmFtcDtwcml2LSZndDtyZWdfbXV0ZXgpOwogfQogRVhQT1JUX1NZTUJPTF9HUEwobXQ3NTMwX3JlbW92ZV9jb21tb24pOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzU1CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMzQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3NTMwIERyaXZlciBSZW1vdmFsKioKCk9rYXksIHNvIHRoZSBkaWZmIEkmIzM5O20gbG9va2luZyBhdCBpbnZvbHZlcyBjaGFuZ2VzIHRvIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY2AgYW5kIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNgLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYG10NzUzMF9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KWAgYW5kIGBtdDc1MzBfcmVtb3ZlX2NvbW1vbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7ZG9lcyB0aGlzIGZhbGwgdW5kZXIgdGhlICYjMzk7V29ydGhGdXp6aW5nPWZhbHNlJiMzOTsgcnVsZT8mIzM0OyBMZXQmIzM5O3MgYnJlYWsgaXQgZG93bi4KCkkgbmVlZCB0byByZWZlciB0byBzZWN0aW9uIDIsIHRoZSAmIzM0O1dIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSYjMzQ7IHJ1bGVzLiBMZXQmIzM5O3Mgc2VlLi4uIHdlIGhhdmUgdHdvIGNhdGVnb3JpZXMgaGVyZTogJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBhbmQgJiMzNDtVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMmIzM0Oy4KCkhtbSwgdGhlIGZpcnN0IG9uZSB0YWxrcyBhYm91dCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyB0aGF0IG5lZWQgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgbm90IGF2YWlsYWJsZSBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0JiMzOTtzIG5vdCBzb3VuZGluZyBsaWtlIGEgZ29vZCBmaXQuIFdoYXQmIzM5O3MgTVQ3NTMwIGFnYWluPyBBaCwgcmlnaHQsIGl0JiMzOTtzIGEgTWVkaWFUZWsgRXRoZXJuZXQgc3dpdGNoIGNoaXAsIHR5cGljYWxseSB1c2VkIHdpdGggTURJTy9NTUlPIGJ1c2VzIG9uIE1lZGlhVGVrIEFSTS9NSVBTIFNvQ3Mgb3Igcm91dGVycy4gSSBkb24mIzM5O3QgKnRoaW5rKiB0aGF0IGZhbGxzIGludG8gdGhpcyBjYXRlZ29yeSwgYnV0IGl0JiMzOTtzIHdvcnRoIGRvdWJsZS1jaGVja2luZy4KClRoZSBzZWNvbmQgY2F0ZWdvcnksICYjMzQ7VW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzLCYjMzQ7IGlzIGludGVyZXN0aW5nLiBTcGVjaWZpY2FsbHksIGl0IG1lbnRpb25zIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgbGlrZSBgLnJlbW92ZWAgYW5kIGAuc2h1dGRvd25gLCBvciBgcGNpX3VucmVnaXN0ZXJfZHJpdmVyYC4gVGhvc2UgYXJlIHRyaWdnZXJlZCBkdXJpbmcgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgdW5iaW5kaW5nLiBJcyB0aGF0IHdoYXQmIzM5O3MgaGFwcGVuaW5nIGhlcmU/IElzIGBtdDc1MzBfcmVtb3ZlYCBvbmx5IGNhbGxlZCBpbiB0aGF0IHNwZWNpZmljIGNpcmN1bXN0YW5jZT8gSSBuZWVkIG1vcmUgY29udGV4dC4KClNvLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGJldHRlci4gSSYjMzk7bGwgbmVlZCB0byBpbnNwZWN0IGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY2AgYW5kIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNgIHRvIHNlZSBpZiBgbXQ3NTMwX3JlbW92ZWAgaXMgKm9ubHkqIGNhbGxlZCBpbiB0aG9zZSBzaXR1YXRpb25zLiBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIHRvIGNoZWNrIHRoZSBjYWxsIHNpdGVzIGFuZCByZWxhdGVkIGNvbnRleHQgd2l0aGluIHRob3NlIGZpbGVzLiBUaGF0JiMzOTtzIHRoZSBuZXh0IHN0ZXAgdG8gZmlndXJlIG91dCBpZiB0aGlzIHNob3VsZCBiZSBtYXJrZWQgYXMgZnV6emFibGUgb3Igbm90LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDIzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIyMDpcdFxuIDIyMTpcdHN0YXRpYyB2b2lkXG4gMjIyOlx0bXQ3NTMwX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4gMjIzOlx0e1xuIDIyNDpcdFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbiAyMjU6XHRcdGludCByZXQgPSAwLCBpO1xuIDIyNjpcdFxuIDIyNzpcdFx0aWYgKCFwcml2KVxuIDIyODpcdFx0XHRyZXR1cm47XG4gMjI5Olx0XG4gMjMwOlx0XHRpZiAocHJpdi1cdTAwM2VpZCA9PSBJRF9NVDc1MzApIHtcbiAyMzE6XHRcdFx0cmV0ID0gcmVndWxhdG9yX2Rpc2FibGUocHJpdi1cdTAwM2Vjb3JlX3B3cik7XG4gMjMyOlx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gMjMzOlx0XHRcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldixcbiAyMzQ6XHRcdFx0XHRcdFwmIzM0O0ZhaWxlZCB0byBkaXNhYmxlIGNvcmUgcG93ZXI6ICVkXFxuXCYjMzQ7LCByZXQpO1xuIDIzNTpcdFxuIDIzNjpcdFx0XHRyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShwcml2LVx1MDAzZWlvX3B3cik7XG4gMjM3Olx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gMjM4Olx0XHRcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGRpc2FibGUgaW8gcHdyOiAlZFxcblwmIzM0OyxcbiAyMzk6XHRcdFx0XHRcdHJldCk7XG4gMjQwOlx0XHR9XG4gMjQxOlx0XG4gMjQyOlx0XHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihwcml2KTtcbiAyNDM6XHRcbiAyNDQ6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIDI7ICYjNDM7JiM0MztpKVxuIDI0NTpcdFx0XHRtdGtfcGNzX2x5bnhpX2Rlc3Ryb3kocHJpdi1cdTAwM2Vwb3J0c1s1ICYjNDM7IGldLnNnbWlpX3Bjcyk7XG4gMjQ2Olx0fVxuIDI0NzpcdFxuIDI0ODpcdHN0YXRpYyB2b2lkIG10NzUzMF9zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4gMjQ5Olx0e1xuIDI1MDpcdFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbiAyNTE6XHRcbiAyNTI6XHRcdGlmICghcHJpdilcbiAyNTM6XHRcdFx0cmV0dXJuO1xuIDI1NDpcdFxuIDI1NTpcdFx0ZHNhX3N3aXRjaF9zaHV0ZG93bihwcml2LVx1MDAzZWRzKTtcbiAyNTY6XHRcbiAyNTc6XHRcdGRldl9zZXRfZHJ2ZGF0YShcdTAwMjZtZGlvZGV2LVx1MDAzZWRldiwgTlVMTCk7XG4gMjU4Olx0fVxuIDI1OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDIzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MTgKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIG10NzUzMC5jOiBFeGFtaW5pbmcgTGluZSAzNTkwKioKCk9rYXksIEkmIzM5O20gdGhpbmtpbmcgSSBuZWVkIHRvIHplcm8gaW4gb24gYGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY2Ag4oCTIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIE1lZGlhdGVrIE1UNzUzMCBzd2l0Y2ggZHJpdmVyIGxpdmVzLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIGFyb3VuZCBsaW5lIDM1OTAuIE15IGh1bmNoIGlzIHRoYXQgdGhpcyBpcyBzb21ld2hlcmUgYXJvdW5kIHdoZXJlIHRoZSBjb2RlIGhhbmRsZXMgWyoqU3BlY2lmaWMgSXNzdWUgaW4gdGhlIHVzZXJzIGZpZWxkJiMzOTtzIGZpZWxkIG9mIGV4cGVydGlzZSoqXS4gSSBleHBlY3QgbGluZSAzNTkwIGFuZCBhZGphY2VudCBsaW5lcyB3aWxsIHJlbGF0ZSB0byBbKipFeHBlY3RlZCBjb2RlIGJlaGF2aW9yIGJhc2VkIG9uIHRoZSBpc3N1ZSoqXS4gSSBhbnRpY2lwYXRlIHRoZXJlIHdpbGwgYmUgc2V2ZXJhbCBsb2dpY2FsIGZsb3dzIHRoYXQgSSBuZWVkIHRvIGV2YWx1YXRlLiBJJiMzOTttIGhvcGluZyB0byBkaXNjb3ZlciB0aGUgcm9vdCBjYXVzZSBvZiB0aGUgaXNzdWUgYnkgZXZhbHVhdGluZyB0aGUgcmVsZXZhbnQgdmFyaWFibGVzIHdpdGggYXBwcm9wcmlhdGUgdGVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM1ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzU4MDpcdFx0cHJpdi1cdTAwM2Vkcy1cdTAwM2Vwcml2ID0gcHJpdjtcbjM1ODE6XHRcdHByaXYtXHUwMDNlZHMtXHUwMDNlb3BzID0gXHUwMDI2bXQ3NTMwX3N3aXRjaF9vcHM7XG4zNTgyOlx0XHRwcml2LVx1MDAzZWRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNm10NzUzeF9waHlsaW5rX21hY19vcHM7XG4zNTgzOlx0XHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlcmVnX211dGV4KTtcbjM1ODQ6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNnByaXYtXHUwMDNlc3RhdHNfbG9jayk7XG4zNTg1Olx0XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZwcml2LVx1MDAzZXN0YXRzX3dvcmssIG10NzUzMF9zdGF0c19wb2xsKTtcbjM1ODY6XHRcbjM1ODc6XHRcdGRldl9zZXRfZHJ2ZGF0YShkZXYsIHByaXYpO1xuMzU4ODpcdFxuMzU4OTpcdFx0cmV0dXJuIDA7XG4zNTkwOlx0fVxuMzU5MTpcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzUzMF9wcm9iZV9jb21tb24pO1xuMzU5MjpcdFxuMzU5MzpcdHZvaWRcbjM1OTQ6XHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG4zNTk1Olx0e1xuMzU5NjpcdFx0ZHNhX3VucmVnaXN0ZXJfc3dpdGNoKHByaXYtXHUwMDNlZHMpO1xuMzU5NzpcdFxuMzU5ODpcdFx0aWYgKHByaXYtXHUwMDNlaXJxX2RvbWFpbilcbjM1OTk6XHRcdFx0bXQ3NTMwX2ZyZWVfbWRpb19pcnEocHJpdik7XG4zNjAwOlx0XG4zNjAxOlx0XHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlcmVnX211dGV4KTtcbjM2MDI6XHR9XG4zNjAzOlx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3NTMwX3JlbW92ZV9jb21tb24pO1xuMzYwNDpcdFxuMzYwNTpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7U2VhbiBXYW5nIFx1MDAzY3NlYW4ud2FuZ0BtZWRpYXRlay5jb21cdTAwM2VcJiMzNDspO1xuMzYwNjpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtEcml2ZXIgZm9yIE1lZGlhdGVrIE1UNzUzMCBTd2l0Y2hcJiMzNDspO1xuMzYwNzpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU0MgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVtb3ZhbCBGdW5jdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBjb2RlLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBjbGVhbnVwIHByb2Nlc3MsIHNwZWNpZmljYWxseSB0aGUgcmVtb3ZhbCBvZiB0aGUgTVQ3NTMwIGRldmljZS4gSSYjMzk7dmUgZ290IHR3byBmdW5jdGlvbnMgaGlnaGxpZ2h0ZWQ6IGBtdDc1MzBfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilgIGFuZCBgbXQ3NTMwX3JlbW92ZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZW0uIEl0IHNlZW1zIGxpa2UgYG10NzUzMF9yZW1vdmVfY29tbW9uYCBsaWtlbHkgY29udGFpbnMgdGhlIGNvcmUgbG9naWMgZm9yIHRoZSBkZXZpY2UmIzM5O3MgcmVtb3ZhbCwgd2hpbGUgYG10NzUzMF9yZW1vdmVgIG1pZ2h0IGJlIGEgaGlnaGVyLWxldmVsIHdyYXBwZXIgaGFuZGxpbmcgc29tZSBwcmVsaW1pbmFyeSBzdGVwcywgcGVyaGFwcyBNRElPLXNwZWNpZmljLgoKVGhlIGNydWNpYWwgcXVlc3Rpb24gbm93IGlzLCAmIzM0O1doYXQgY2FsbHMgYG10NzUzMF9yZW1vdmVfY29tbW9uYD8mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMgdG8gbWFrZSBzdXJlIHRoaXMgcmVtb3ZhbCBpcyBjbGVhbiBhbmQgY29tcGxldGUuIEkmIzM5O2xsIGZpcmUgdXAgZ3JlcHBlciByaWdodCBhd2F5LiBBIGNyb3NzLXJlZmVyZW5jZSBzZWFyY2ggaXMgZXNzZW50aWFsIGhlcmUuIEkgbmVlZCB0byBiZSAxMDAlIHN1cmUgSSYjMzk7bSBjYXRjaGluZyBhbGwgdGhlIGNhbGxlcnMgb2YgYG10NzUzMF9yZW1vdmVfY29tbW9uYC4gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBhbGwgaW5zdGFuY2VzIG9mIGl0IGluIHRoZSBjb2RlIGJhc2UsIHRvIG1ha2Ugc3VyZSBJIGdldCB0aGUgd2hvbGUgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc1MzBfcmVtb3ZlX2NvbW1vbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0yMjI9bXQ3NTMwX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjQxLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjQyOlx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNDMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9Njc9c3RhdGljIHZvaWQgbXQ3OTg4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTcxLVx0aWYgKHByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo3MjpcdFx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy03My19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTM1OTM9dm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM1OTQ6bXQ3NTMwX3JlbW92ZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM1OTUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNjAyLX1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNjAzOkVYUE9SVF9TWU1CT0xfR1BMKG10NzUzMF9yZW1vdmVfY29tbW9uKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNjA0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaD05NDg9aW50IG10NzUzMF9wcm9iZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaDo5NDk6dm9pZCBtdDc1MzBfcmVtb3ZlX2NvbW1vbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5oLTk1MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDcxCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNjM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1UNzUzMCBDb2RlIENoYW5nZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkmIzM5O20gbG9va2luZyBhdCB0aGUgY2FsbCBzaXRlcyBvZiBgbXQ3NTMwX3JlbW92ZV9jb21tb25gLiBJIHNlZSB0aGF0IGl0JiMzOTtzIG9ubHkgY2FsbGVkIGZyb20gYG10NzUzMF9yZW1vdmVgIGFuZCBgbXQ3OTg4X3JlbW92ZWAsIGJvdGggd2l0aGluIHRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIGRyaXZlciBjb250ZXh0IGZvciB0aGUgTVQ3NTMwIGZhbWlseSBvZiBzd2l0Y2ggaGFyZHdhcmUuIFRoZXNlIGFyZSAqdGVhcmRvd24qIGZ1bmN0aW9ucyDigJMgdGhlIGRyaXZlciByZW1vdmFsIGNhbGxiYWNrcy4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZy4KCk5vdywgSSYjMzk7bSByZWNhbGxpbmcgdGhlIGtleSBwb2ludHM6IHRoZSBNVDc1MzAgaXMgYSAqcGh5c2ljYWwqIEV0aGVybmV0IHN3aXRjaCwgcGFydCBvZiB0aGUgTWVkaWFUZWsgTVQ3NTMwL01UNzUzMS9NVDc5ODggZmFtaWx5LiBJdCYjMzk7cyBjb25uZWN0ZWQgdmlhIGVpdGhlciBhbiBNRElPIGJ1cyBvciBNTUlPLCBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLiBDcml0aWNhbGx5LCBpdCAqaXNuJiMzOTt0KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0JiMzOTtzIGEgbWFqb3IgZmFjdG9yLgoKQ29uc2lkZXJpbmcgdGhlICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSYjMzQ7IGNyaXRlcmlhIG91dGxpbmVkIGluIFNlY3Rpb24gMiwgdGhlIHNpdHVhdGlvbiBoZXJlIHNlZW1zIHRvIGZhbGwgbmVhdGx5IGludG8gYm90aCBleGNsdXNpb24gY2F0ZWdvcmllcy4KCjEuICAqKlN0cnVjdHVyYWxseSBVbnJlYWNoYWJsZSBIYXJkd2FyZToqKiBUaGlzIGhhcmR3YXJlLCB0aGUgTVQ3NTMwLCByZXF1aXJlcyBhIHBoeXNpY2FsIEFTSUMvYm9hcmQsIGFuZCB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgoyLiAgKipVbnJlYWNoYWJsZSBFeGVjdXRpb24gUGF0aHM6KiogQWxsIHRoZSBtb2RpZmljYXRpb25zIGFyZSBjb25maW5lZCB0byBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChgLnJlbW92ZWAgZnVuY3Rpb25zKS4gVGhlc2UgY2FsbGJhY2tzIGFyZSBvbmx5IGV4ZWN1dGVkIGR1cmluZyAqZXhwbGljaXQqIGRyaXZlciB1bmJpbmRpbmcgKHZpYSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBpbnRlcnZlbnRpb24pLiBUaGVyZSYjMzk7cyBubyBzY2VuYXJpbyB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgd291bGQgYmUgZXhlY3V0ZWQgZHVyaW5nIGEgbm9ybWFsIG9wZXJhdGlvbiBvZiBRRU1VLgoKR2l2ZW4gdGhpcywgSSBoYXZlIGEgaGlnaCBkZWdyZWUgb2YgY29uZmlkZW5jZSB0aGF0IHRoZSBtb2RpZmllZCBjb2RlICppc24mIzM5O3QqIGEgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBJdCYjMzk7cyB1bnJlYWNoYWJsZSB3aXRoaW4gdGhlIHRhcmdldCBmdXp6aW5nIGVudmlyb25tZW50LiBUaGUgdGVhcmRvd24gZnVuY3Rpb25zIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgcmVtb3ZhbC4gSSB3aWxsIGV4YW1pbmUgdGhlIEtjb25maWcgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDIzOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfRFNBX01UNzUzMCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvS2NvbmZpZz0yOT1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjMxOmNvbmZpZyBORVRfRFNBX01UNzUzMFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzItXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQyLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDM6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTUzLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NTQ6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01NSU9cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTU1LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIE1NSU8gaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODAyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKktjb25maWcgRGl2ZSBmb3IgRFNBIERldGFpbHMqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIGRyaXZlciBjb25maWd1cmF0aW9uLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGRpZyBpbnRvIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgYGRyaXZlcnMvbmV0L2RzYWAgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHRoZSBnby10byBwbGFjZSBmb3IgYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGhlbHAgdGV4dCByZWxhdGVkIHRvIHRoaXMgc3BlY2lmaWMgc3Vic3lzdGVtLiBUaGlzIGlzIHdoZXJlIEkmIzM5O2xsIGZpbmQgdGhlIG1hY3JvcyBhbmQgc2V0dGluZ3MgdGhhdCBjb250cm9sIHdoaWNoIGZlYXR1cmVzIGFyZSBjb21waWxlZCBhbmQgbGlua2VkIGludG8gdGhlIGtlcm5lbC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6IHRoZSByZWxldmFudCBgQ09ORklHX2Agb3B0aW9ucywgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBkcml2ZXJzIG9yIGZlYXR1cmVzLCBhbmQgb2YgY291cnNlLCBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29udGV4dCBiZWhpbmQgZWFjaCBjb25maWd1cmFibGUgb3B0aW9uIHJlbGF0ZWQgdG8gdGhlIERTQSBkcml2ZXIgaXRzZWxmLiBJdCYjMzk7cyB0aW1lIHRvIGdldCBhIGdvb2QgaGFuZGxlIG9uIGhvdyB0aGlzIHRoaW5nIGNhbiBiZSBzZXQgdXAhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDIzOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDMwOlx0XG4gIDMxOlx0Y29uZmlnIE5FVF9EU0FfTVQ3NTMwXG4gIDMyOlx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuICAzMzpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX01US1xuICAzNDpcdFx0c2VsZWN0IFJFR01BUF9JUlFcbiAgMzU6XHRcdGltcGx5IE5FVF9EU0FfTVQ3NTMwX01ESU9cbiAgMzY6XHRcdGltcGx5IE5FVF9EU0FfTVQ3NTMwX01NSU9cbiAgMzc6XHRcdGhlbHBcbiAgMzg6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldFxuICAzOTpcdFx0ICBzd2l0Y2ggY2hpcHMuIE11bHRpLWNoaXAgbW9kdWxlIE1UNzUzMCBpbiBNVDc2MjFBVCwgTVQ3NjIxREFULFxuICA0MDpcdFx0ICBNVDc2MjFTVCBhbmQgTVQ3NjIzQUkgU29DcywgYW5kIGJ1aWx0LWluIHN3aXRjaCBpbiBNVDc5ODggU29DIGFyZVxuICA0MTpcdFx0ICBzdXBwb3J0ZWQgYXMgd2VsbC5cbiAgNDI6XHRcbiAgNDM6XHRjb25maWcgTkVUX0RTQV9NVDc1MzBfTURJT1xuICA0NDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuICA0NTpcdFx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxuICA0NjpcdFx0c2VsZWN0IE1FRElBVEVLX0dFX1BIWVxuICA0NzpcdFx0c2VsZWN0IFBDU19NVEtfTFlOWElcbiAgNDg6XHRcdGhlbHBcbiAgNDk6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBzd2l0Y2hcbiAgNTA6XHRcdCAgY2hpcHMgd2hpY2ggYXJlIGNvbm5lY3RlZCB2aWEgTURJTywgYXMgd2VsbCBhcyBtdWx0aS1jaGlwXG4gIDUxOlx0XHQgIG1vZHVsZSBNVDc1MzAgd2hpY2ggY2FuIGJlIGZvdW5kIGluIHRoZSBNVDc2MjFBVCwgTVQ3NjIxREFULFxuICA1MjpcdFx0ICBNVDc2MjFTVCBhbmQgTVQ3NjIzQUkgU29Dcy5cbiAgNTM6XHRcbiAgNTQ6XHRjb25maWcgTkVUX0RTQV9NVDc1MzBfTU1JT1xuICA1NTpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIE1NSU8gaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuICA1NjpcdFx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxuICA1NzpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbiAgNTg6XHRcdGltcGx5IE1FRElBVEVLX0dFX1NPQ19QSFlcbiAgNTk6XHRcdGhlbHBcbiAgNjA6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBidWlsdC1pbiBFdGhlcm5ldCBzd2l0Y2ggZm91bmRcbiAgNjE6XHRcdCAgaW4gdGhlIE1lZGlhVGVrIE1UNzk4OCBTb0MuXG4gIDYyOlx0XHQgIFRoZSBzd2l0Y2ggaXMgYSBzaW1pbGFyIGRlc2lnbiBhcyBNVDc1MzEsIGJ1dCB0aGUgc3dpdGNoIHJlZ2lzdGVyc1xuICA2MzpcdFx0ICBhcmUgZGlyZWN0bHkgbWFwcGVkIGludG8gdGhlIFNvQ3MgcmVnaXN0ZXIgc3BhY2UgcmF0aGVyIHRoYW4gYmVpbmdcbiAgNjQ6XHRcdCAgYWNjZXNzaWJsZSB2aWEgTURJTy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODY3NQoJCQkJCQkJb3V0cHV0OiAxMTcKCQkJCQkJCXRob3VnaHRzOiAyMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBUaGlzIFBhdGNoJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHRoaXMgaXMgc3RyYWlnaHRmb3J3YXJkLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYG10NzUzMF9yZW1vdmVgIGFuZCBgbXQ3NTMwX3JlbW92ZV9jb21tb25gLCB3aGljaCBhcmUgZXNzZW50aWFsbHkgdGVhcmRvd24gcm91dGluZXMgZm9yIHRoZSBNVDc1MzAsIE1UNzUzMSwgYW5kIE1UNzk4OCBFdGhlcm5ldCBzd2l0Y2ggY2hpcHMg4oCTIHNwZWNpZmljIGhhcmR3YXJlIHRoYXQmIzM5O3MgKm5vdCogZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gc2V0dXBzIGxpa2UgUUVNVSBvciBHQ0UuCgpUaGUga2V5IGhlcmUgaXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MuIEZyb20gbXkgZXhwZXJpZW5jZSBhbmQgdW5kZXJzdGFuZGluZywgZHJpdmVyIHRlYXJkb3duIGNvZGUsIHBhcnRpY3VsYXJseSBgLnJlbW92ZWAgZnVuY3Rpb25zLCBpcyBqdXN0IG5vdCBnb2luZyB0byBiZSByZWFjaGVkIGR1cmluZyBzeXprYWxsZXIgZnV6emluZy4gSXQmIzM5O3Mgc2ltcGx5IGFuIHVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoIHVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzIGZvciB0aGlzIHR5cGUgb2YgdGVzdGluZy4KClRoZXJlZm9yZSwgbm8sIHRoaXMgaXMgbm90IGEgY2FuZGlkYXRlIGZvciBmdXJ0aGVyIGZ1enppbmcuCgpJJiMzOTttIHNldHRpbmc6CgoqICAgYFdvcnRoRnV6emluZzogZmFsc2VgCiogICBgRW5hYmxlQ29uZmlnczogW11gIChubyBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkIGhlcmUpCiogICBgRm9jdXNTeW1ib2xzOiBbXWAgKG5vIHNwZWNpZmljIHN5bWJvbHMgbmVlZCB0byBiZSB0YXJnZXRlZCkKCkFuZCB0aGUgcmVhc29uaW5nIGlzOiBUaGlzIHBhdGNoIG1vZGlmaWVzIGRyaXZlciB0ZWFyZG93biBmdW5jdGlvbnMgKGBtdDc1MzBfcmVtb3ZlYCBhbmQgYG10NzUzMF9yZW1vdmVfY29tbW9uYCkgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAgRXRoZXJuZXQgc3dpdGNoIGRyaXZlci4gVGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBiZWNhdXNlIGl0IHRhcmdldHMgcGh5c2ljYWwgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgYW5kIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBkcml2ZXIgdGVhcmRvd24vcmVtb3ZlIGNhbGxiYWNrcy4KClRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRyaXZlciB0ZWFyZG93biBmdW5jdGlvbnMgKG10NzUzMF9yZW1vdmUgYW5kIG10NzUzMF9yZW1vdmVfY29tbW9uKSBmb3IgdGhlIE1lZGlhVGVrIE1UNzUzMC9NVDc1MzEgRXRoZXJuZXQgc3dpdGNoIERTQSBkcml2ZXIuIFRoaXMgY29kZSByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIGFuZCBkcml2ZXIgcmVtb3ZlL3RlYXJkb3duIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgc3RhbmRhcmQgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRyaXZlciB0ZWFyZG93biBmdW5jdGlvbnMgKG10NzUzMF9yZW1vdmUgYW5kIG10NzUzMF9yZW1vdmVfY29tbW9uKSBmb3IgdGhlIE1lZGlhVGVrIE1UNzUzMC9NVDc1MzEgRXRoZXJuZXQgc3dpdGNoIERTQSBkcml2ZXIuIFRoaXMgY29kZSByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIGFuZCBkcml2ZXIgcmVtb3ZlL3RlYXJkb3duIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgc3RhbmRhcmQgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDIzOjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMzoxMzo1MC45MDg3NTUzNjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzU1OTA2OTc5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRyaXZlciB0ZWFyZG93biBmdW5jdGlvbnMgKG10NzUzMF9yZW1vdmUgYW5kIG10NzUzMF9yZW1vdmVfY29tbW9uKSBmb3IgdGhlIE1lZGlhVGVrIE1UNzUzMC9NVDc1MzEgRXRoZXJuZXQgc3dpdGNoIERTQSBkcml2ZXIuIFRoaXMgY29kZSByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIGFuZCBkcml2ZXIgcmVtb3ZlL3RlYXJkb3duIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgc3RhbmRhcmQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIzOjEzOjUwLjkwODc2MDE0N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUwNDk4Mjg1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGNkNzJhZDkyMGJkYTU0ODc1MDNkZGE0ZDk3MWNmM2YyNDkyN2RlMDhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBTZXAgMTQgMjM6MTM6NDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY1xcbmluZGV4IDc4NGRkNThhNzE1ODkuLmRlNDJmNzBhZmNmYTEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY1xcbkBAIC0yMjcsMTUgKzIyNywxNyBAQCBtdDc1MzBfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4gXFx0aWYgKCFwcml2KVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHRyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShwcml2LVxcdTAwM2Vjb3JlX3B3cik7XFxuLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi1cXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldixcXG4tXFx0XFx0XFx0XFxcIkZhaWxlZCB0byBkaXNhYmxlIGNvcmUgcG93ZXI6ICVkXFxcXG5cXFwiLCByZXQpO1xcbi1cXG4tXFx0cmV0ID0gcmVndWxhdG9yX2Rpc2FibGUocHJpdi1cXHUwMDNlaW9fcHdyKTtcXG4tXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLVxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGRpc2FibGUgaW8gcHdyOiAlZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0cmV0KTtcXG4rXFx0aWYgKHByaXYtXFx1MDAzZWlkID09IElEX01UNzUzMCkge1xcbitcXHRcXHRyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShwcml2LVxcdTAwM2Vjb3JlX3B3cik7XFxuK1xcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFx0XFxcIkZhaWxlZCB0byBkaXNhYmxlIGNvcmUgcG93ZXI6ICVkXFxcXG5cXFwiLCByZXQpO1xcbitcXG4rXFx0XFx0cmV0ID0gcmVndWxhdG9yX2Rpc2FibGUocHJpdi1cXHUwMDNlaW9fcHdyKTtcXG4rXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGRpc2FibGUgaW8gcHdyOiAlZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0cmV0KTtcXG4rXFx0fVxcbiBcXG4gXFx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcXG5pbmRleCAzZTYxZWIzYzJiMWUyLi45MGZkMDQ2NjVlYmYxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xcbkBAIC0zNTkzLDExICszNTkzLDExIEBAIEVYUE9SVF9TWU1CT0xfR1BMKG10NzUzMF9wcm9iZV9jb21tb24pO1xcbiB2b2lkXFxuIG10NzUzMF9yZW1vdmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG4ge1xcbitcXHRkc2FfdW5yZWdpc3Rlcl9zd2l0Y2gocHJpdi1cXHUwMDNlZHMpO1xcbitcXG4gXFx0aWYgKHByaXYtXFx1MDAzZWlycV9kb21haW4pXFxuIFxcdFxcdG10NzUzMF9mcmVlX21kaW9faXJxKHByaXYpO1xcbiBcXG4tXFx0ZHNhX3VucmVnaXN0ZXJfc3dpdGNoKHByaXYtXFx1MDAzZWRzKTtcXG4tXFxuIFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19tdXRleCk7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwobXQ3NTMwX3JlbW92ZV9jb21tb24pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMzoxMzo1Mi40MTQ0MDMyNjRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQyMDUzNDEwMDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXIgdGVhcmRvd24gZnVuY3Rpb25zIChtdDc1MzBfcmVtb3ZlIGFuZCBtdDc1MzBfcmVtb3ZlX2NvbW1vbikgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAvTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBEU0EgZHJpdmVyLiBUaGlzIGNvZGUgcmVxdWlyZXMgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBhbmQgZHJpdmVyIHJlbW92ZS90ZWFyZG93biBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIHN0YW5kYXJkIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNkNzJhZDkyMGJkYTU0ODc1MDNkZGE0ZDk3MWNmM2YyNDkyN2RlMDhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCAxNCAyMzoxMzo0OSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmNcbmluZGV4IDc4NGRkNThhNzE1ODkuLmRlNDJmNzBhZmNmYTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmNcbkBAIC0yMjcsMTUgKzIyNywxNyBAQCBtdDc1MzBfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbiBcdGlmICghcHJpdilcbiBcdFx0cmV0dXJuO1xuIFxuLVx0cmV0ID0gcmVndWxhdG9yX2Rpc2FibGUocHJpdi1cdTAwM2Vjb3JlX3B3cik7XG4tXHRpZiAocmV0IFx1MDAzYyAwKVxuLVx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LFxuLVx0XHRcdFwiRmFpbGVkIHRvIGRpc2FibGUgY29yZSBwb3dlcjogJWRcXG5cIiwgcmV0KTtcbi1cbi1cdHJldCA9IHJlZ3VsYXRvcl9kaXNhYmxlKHByaXYtXHUwMDNlaW9fcHdyKTtcbi1cdGlmIChyZXQgXHUwMDNjIDApXG4tXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwiRmFpbGVkIHRvIGRpc2FibGUgaW8gcHdyOiAlZFxcblwiLFxuLVx0XHRcdHJldCk7XG4rXHRpZiAocHJpdi1cdTAwM2VpZCA9PSBJRF9NVDc1MzApIHtcbitcdFx0cmV0ID0gcmVndWxhdG9yX2Rpc2FibGUocHJpdi1cdTAwM2Vjb3JlX3B3cik7XG4rXHRcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldixcbitcdFx0XHRcdFwiRmFpbGVkIHRvIGRpc2FibGUgY29yZSBwb3dlcjogJWRcXG5cIiwgcmV0KTtcbitcbitcdFx0cmV0ID0gcmVndWxhdG9yX2Rpc2FibGUocHJpdi1cdTAwM2Vpb19wd3IpO1xuK1x0XHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwiRmFpbGVkIHRvIGRpc2FibGUgaW8gcHdyOiAlZFxcblwiLFxuK1x0XHRcdFx0cmV0KTtcbitcdH1cbiBcbiBcdG10NzUzMF9yZW1vdmVfY29tbW9uKHByaXYpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuaW5kZXggM2U2MWViM2MyYjFlMi4uOTBmZDA0NjY1ZWJmMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG5AQCAtMzU5MywxMSArMzU5MywxMSBAQCBFWFBPUlRfU1lNQk9MX0dQTChtdDc1MzBfcHJvYmVfY29tbW9uKTtcbiB2b2lkXG4gbXQ3NTMwX3JlbW92ZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuIHtcbitcdGRzYV91bnJlZ2lzdGVyX3N3aXRjaChwcml2LVx1MDAzZWRzKTtcbitcbiBcdGlmIChwcml2LVx1MDAzZWlycV9kb21haW4pXG4gXHRcdG10NzUzMF9mcmVlX21kaW9faXJxKHByaXYpO1xuIFxuLVx0ZHNhX3VucmVnaXN0ZXJfc3dpdGNoKHByaXYtXHUwMDNlZHMpO1xuLVxuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZXJlZ19tdXRleCk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKG10NzUzMF9yZW1vdmVfY29tbW9uKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIzOjEzOjUyLjQxNDQwNDcwNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjczODAzNjMzMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc1MzAgRHJpdmVyIFJlbW92YWwqKlxuXG5Pa2F5LCBzbyB0aGUgZGlmZiBJJ20gbG9va2luZyBhdCBpbnZvbHZlcyBjaGFuZ2VzIHRvIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY2AgYW5kIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNgLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYG10NzUzMF9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KWAgYW5kIGBtdDc1MzBfcmVtb3ZlX2NvbW1vbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiZG9lcyB0aGlzIGZhbGwgdW5kZXIgdGhlICdXb3J0aEZ1enppbmc9ZmFsc2UnIHJ1bGU/XCIgTGV0J3MgYnJlYWsgaXQgZG93bi5cblxuSSBuZWVkIHRvIHJlZmVyIHRvIHNlY3Rpb24gMiwgdGhlIFwiV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlXCIgcnVsZXMuIExldCdzIHNlZS4uLiB3ZSBoYXZlIHR3byBjYXRlZ29yaWVzIGhlcmU6IFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgYW5kIFwiVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzXCIuXG5cbkhtbSwgdGhlIGZpcnN0IG9uZSB0YWxrcyBhYm91dCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyB0aGF0IG5lZWQgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgbm90IGF2YWlsYWJsZSBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3Mgbm90IHNvdW5kaW5nIGxpa2UgYSBnb29kIGZpdC4gV2hhdCdzIE1UNzUzMCBhZ2Fpbj8gQWgsIHJpZ2h0LCBpdCdzIGEgTWVkaWFUZWsgRXRoZXJuZXQgc3dpdGNoIGNoaXAsIHR5cGljYWxseSB1c2VkIHdpdGggTURJTy9NTUlPIGJ1c2VzIG9uIE1lZGlhVGVrIEFSTS9NSVBTIFNvQ3Mgb3Igcm91dGVycy4gSSBkb24ndCAqdGhpbmsqIHRoYXQgZmFsbHMgaW50byB0aGlzIGNhdGVnb3J5LCBidXQgaXQncyB3b3J0aCBkb3VibGUtY2hlY2tpbmcuXG5cblRoZSBzZWNvbmQgY2F0ZWdvcnksIFwiVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzLFwiIGlzIGludGVyZXN0aW5nLiBTcGVjaWZpY2FsbHksIGl0IG1lbnRpb25zIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgbGlrZSBgLnJlbW92ZWAgYW5kIGAuc2h1dGRvd25gLCBvciBgcGNpX3VucmVnaXN0ZXJfZHJpdmVyYC4gVGhvc2UgYXJlIHRyaWdnZXJlZCBkdXJpbmcgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgdW5iaW5kaW5nLiBJcyB0aGF0IHdoYXQncyBoYXBwZW5pbmcgaGVyZT8gSXMgYG10NzUzMF9yZW1vdmVgIG9ubHkgY2FsbGVkIGluIHRoYXQgc3BlY2lmaWMgY2lyY3Vtc3RhbmNlPyBJIG5lZWQgbW9yZSBjb250ZXh0LlxuXG5TbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiZXR0ZXIuIEknbGwgbmVlZCB0byBpbnNwZWN0IGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY2AgYW5kIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNgIHRvIHNlZSBpZiBgbXQ3NTMwX3JlbW92ZWAgaXMgKm9ubHkqIGNhbGxlZCBpbiB0aG9zZSBzaXR1YXRpb25zLiBJJ2xsIHVzZSBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gY2hlY2sgdGhlIGNhbGwgc2l0ZXMgYW5kIHJlbGF0ZWQgY29udGV4dCB3aXRoaW4gdGhvc2UgZmlsZXMuIFRoYXQncyB0aGUgbmV4dCBzdGVwIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBzaG91bGQgYmUgbWFya2VkIGFzIGZ1enphYmxlIG9yIG5vdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM1NSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIzOjEzOjU5Ljc5NDc2OTgxN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NTMxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMjAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMjA6XFx0XFxuIDIyMTpcXHRzdGF0aWMgdm9pZFxcbiAyMjI6XFx0bXQ3NTMwX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuIDIyMzpcXHR7XFxuIDIyNDpcXHRcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldik7XFxuIDIyNTpcXHRcXHRpbnQgcmV0ID0gMCwgaTtcXG4gMjI2OlxcdFxcbiAyMjc6XFx0XFx0aWYgKCFwcml2KVxcbiAyMjg6XFx0XFx0XFx0cmV0dXJuO1xcbiAyMjk6XFx0XFxuIDIzMDpcXHRcXHRpZiAocHJpdi1cXHUwMDNlaWQgPT0gSURfTVQ3NTMwKSB7XFxuIDIzMTpcXHRcXHRcXHRyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShwcml2LVxcdTAwM2Vjb3JlX3B3cik7XFxuIDIzMjpcXHRcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gMjMzOlxcdFxcdFxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LFxcbiAyMzQ6XFx0XFx0XFx0XFx0XFx0XFxcIkZhaWxlZCB0byBkaXNhYmxlIGNvcmUgcG93ZXI6ICVkXFxcXG5cXFwiLCByZXQpO1xcbiAyMzU6XFx0XFxuIDIzNjpcXHRcXHRcXHRyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShwcml2LVxcdTAwM2Vpb19wd3IpO1xcbiAyMzc6XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDIzODpcXHRcXHRcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byBkaXNhYmxlIGlvIHB3cjogJWRcXFxcblxcXCIsXFxuIDIzOTpcXHRcXHRcXHRcXHRcXHRyZXQpO1xcbiAyNDA6XFx0XFx0fVxcbiAyNDE6XFx0XFxuIDI0MjpcXHRcXHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihwcml2KTtcXG4gMjQzOlxcdFxcbiAyNDQ6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIDI7ICsraSlcXG4gMjQ1OlxcdFxcdFxcdG10a19wY3NfbHlueGlfZGVzdHJveShwcml2LVxcdTAwM2Vwb3J0c1s1ICsgaV0uc2dtaWlfcGNzKTtcXG4gMjQ2OlxcdH1cXG4gMjQ3OlxcdFxcbiAyNDg6XFx0c3RhdGljIHZvaWQgbXQ3NTMwX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4gMjQ5OlxcdHtcXG4gMjUwOlxcdFxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2KTtcXG4gMjUxOlxcdFxcbiAyNTI6XFx0XFx0aWYgKCFwcml2KVxcbiAyNTM6XFx0XFx0XFx0cmV0dXJuO1xcbiAyNTQ6XFx0XFxuIDI1NTpcXHRcXHRkc2Ffc3dpdGNoX3NodXRkb3duKHByaXYtXFx1MDAzZWRzKTtcXG4gMjU2OlxcdFxcbiAyNTc6XFx0XFx0ZGV2X3NldF9kcnZkYXRhKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYsIE5VTEwpO1xcbiAyNTg6XFx0fVxcbiAyNTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIzOjEzOjU5Ljc5NDk1ODk4N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjYyNjYzMTQ1NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gbXQ3NTMwLmM6IEV4YW1pbmluZyBMaW5lIDM1OTAqKlxuXG5Pa2F5LCBJJ20gdGhpbmtpbmcgSSBuZWVkIHRvIHplcm8gaW4gb24gYGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY2Ag4oCTIHRoYXQncyB3aGVyZSB0aGUgTWVkaWF0ZWsgTVQ3NTMwIHN3aXRjaCBkcml2ZXIgbGl2ZXMuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGZvY3VzIG15IGF0dGVudGlvbiBhcm91bmQgbGluZSAzNTkwLiBNeSBodW5jaCBpcyB0aGF0IHRoaXMgaXMgc29tZXdoZXJlIGFyb3VuZCB3aGVyZSB0aGUgY29kZSBoYW5kbGVzIFsqKlNwZWNpZmljIElzc3VlIGluIHRoZSB1c2VycyBmaWVsZCdzIGZpZWxkIG9mIGV4cGVydGlzZSoqXS4gSSBleHBlY3QgbGluZSAzNTkwIGFuZCBhZGphY2VudCBsaW5lcyB3aWxsIHJlbGF0ZSB0byBbKipFeHBlY3RlZCBjb2RlIGJlaGF2aW9yIGJhc2VkIG9uIHRoZSBpc3N1ZSoqXS4gSSBhbnRpY2lwYXRlIHRoZXJlIHdpbGwgYmUgc2V2ZXJhbCBsb2dpY2FsIGZsb3dzIHRoYXQgSSBuZWVkIHRvIGV2YWx1YXRlLiBJJ20gaG9waW5nIHRvIGRpc2NvdmVyIHRoZSByb290IGNhdXNlIG9mIHRoZSBpc3N1ZSBieSBldmFsdWF0aW5nIHRoZSByZWxldmFudCB2YXJpYWJsZXMgd2l0aCBhcHByb3ByaWF0ZSB0ZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODE4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMzoxNDowNi4wNjEyNzYzNzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTUzMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1ODAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM1ODA6XFx0XFx0cHJpdi1cXHUwMDNlZHMtXFx1MDAzZXByaXYgPSBwcml2O1xcbjM1ODE6XFx0XFx0cHJpdi1cXHUwMDNlZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZtdDc1MzBfc3dpdGNoX29wcztcXG4zNTgyOlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2bXQ3NTN4X3BoeWxpbmtfbWFjX29wcztcXG4zNTgzOlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19tdXRleCk7XFxuMzU4NDpcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2cHJpdi1cXHUwMDNlc3RhdHNfbG9jayk7XFxuMzU4NTpcXHRcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2cHJpdi1cXHUwMDNlc3RhdHNfd29yaywgbXQ3NTMwX3N0YXRzX3BvbGwpO1xcbjM1ODY6XFx0XFxuMzU4NzpcXHRcXHRkZXZfc2V0X2RydmRhdGEoZGV2LCBwcml2KTtcXG4zNTg4OlxcdFxcbjM1ODk6XFx0XFx0cmV0dXJuIDA7XFxuMzU5MDpcXHR9XFxuMzU5MTpcXHRFWFBPUlRfU1lNQk9MX0dQTChtdDc1MzBfcHJvYmVfY29tbW9uKTtcXG4zNTkyOlxcdFxcbjM1OTM6XFx0dm9pZFxcbjM1OTQ6XFx0bXQ3NTMwX3JlbW92ZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbjM1OTU6XFx0e1xcbjM1OTY6XFx0XFx0ZHNhX3VucmVnaXN0ZXJfc3dpdGNoKHByaXYtXFx1MDAzZWRzKTtcXG4zNTk3OlxcdFxcbjM1OTg6XFx0XFx0aWYgKHByaXYtXFx1MDAzZWlycV9kb21haW4pXFxuMzU5OTpcXHRcXHRcXHRtdDc1MzBfZnJlZV9tZGlvX2lycShwcml2KTtcXG4zNjAwOlxcdFxcbjM2MDE6XFx0XFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX211dGV4KTtcXG4zNjAyOlxcdH1cXG4zNjAzOlxcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzUzMF9yZW1vdmVfY29tbW9uKTtcXG4zNjA0OlxcdFxcbjM2MDU6XFx0TU9EVUxFX0FVVEhPUihcXFwiU2VhbiBXYW5nIFxcdTAwM2NzZWFuLndhbmdAbWVkaWF0ZWsuY29tXFx1MDAzZVxcXCIpO1xcbjM2MDY6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJEcml2ZXIgZm9yIE1lZGlhdGVrIE1UNzUzMCBTd2l0Y2hcXFwiKTtcXG4zNjA3OlxcdE1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjM6MTQ6MDYuMDYxNDMzOTI5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NjA0ODQ1MDg2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlbW92YWwgRnVuY3Rpb25zKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIGNvZGUuIEknbSBmb2N1c2luZyBvbiB0aGUgY2xlYW51cCBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgdGhlIHJlbW92YWwgb2YgdGhlIE1UNzUzMCBkZXZpY2UuIEkndmUgZ290IHR3byBmdW5jdGlvbnMgaGlnaGxpZ2h0ZWQ6IGBtdDc1MzBfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilgIGFuZCBgbXQ3NTMwX3JlbW92ZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZW0uIEl0IHNlZW1zIGxpa2UgYG10NzUzMF9yZW1vdmVfY29tbW9uYCBsaWtlbHkgY29udGFpbnMgdGhlIGNvcmUgbG9naWMgZm9yIHRoZSBkZXZpY2UncyByZW1vdmFsLCB3aGlsZSBgbXQ3NTMwX3JlbW92ZWAgbWlnaHQgYmUgYSBoaWdoZXItbGV2ZWwgd3JhcHBlciBoYW5kbGluZyBzb21lIHByZWxpbWluYXJ5IHN0ZXBzLCBwZXJoYXBzIE1ESU8tc3BlY2lmaWMuXG5cblRoZSBjcnVjaWFsIHF1ZXN0aW9uIG5vdyBpcywgXCJXaGF0IGNhbGxzIGBtdDc1MzBfcmVtb3ZlX2NvbW1vbmA/XCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIHRvIG1ha2Ugc3VyZSB0aGlzIHJlbW92YWwgaXMgY2xlYW4gYW5kIGNvbXBsZXRlLiBJJ2xsIGZpcmUgdXAgZ3JlcHBlciByaWdodCBhd2F5LiBBIGNyb3NzLXJlZmVyZW5jZSBzZWFyY2ggaXMgZXNzZW50aWFsIGhlcmUuIEkgbmVlZCB0byBiZSAxMDAlIHN1cmUgSSdtIGNhdGNoaW5nIGFsbCB0aGUgY2FsbGVycyBvZiBgbXQ3NTMwX3JlbW92ZV9jb21tb25gLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgYWxsIGluc3RhbmNlcyBvZiBpdCBpbiB0aGUgY29kZSBiYXNlLCB0byBtYWtlIHN1cmUgSSBnZXQgdGhlIHdob2xlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NDIsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIzOjE0OjEyLjEwOTg4NjkyNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTgyMTkyNjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzUzMF9yZW1vdmVfY29tbW9uXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTIyMj1tdDc1MzBfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI0MS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDI6XFx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjQzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9Njc9c3RhdGljIHZvaWQgbXQ3OTg4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzEtXFx0aWYgKHByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6NzI6XFx0XFx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzMtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTM1OTM9dm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNTk0Om10NzUzMF9yZW1vdmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzU5NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzYwMi19XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM2MDM6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NTMwX3JlbW92ZV9jb21tb24pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNjA0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5oPTk0OD1pbnQgbXQ3NTMwX3Byb2JlX2NvbW1vbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaDo5NDk6dm9pZCBtdDc1MzBfcmVtb3ZlX2NvbW1vbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaC05NTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIzOjE0OjEzLjY5MjA4ODE5MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjYzNDgwMTY3NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTVQ3NTMwIENvZGUgQ2hhbmdlcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEknbSBsb29raW5nIGF0IHRoZSBjYWxsIHNpdGVzIG9mIGBtdDc1MzBfcmVtb3ZlX2NvbW1vbmAuIEkgc2VlIHRoYXQgaXQncyBvbmx5IGNhbGxlZCBmcm9tIGBtdDc1MzBfcmVtb3ZlYCBhbmQgYG10Nzk4OF9yZW1vdmVgLCBib3RoIHdpdGhpbiB0aGUgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBkcml2ZXIgY29udGV4dCBmb3IgdGhlIE1UNzUzMCBmYW1pbHkgb2Ygc3dpdGNoIGhhcmR3YXJlLiBUaGVzZSBhcmUgKnRlYXJkb3duKiBmdW5jdGlvbnMg4oCTIHRoZSBkcml2ZXIgcmVtb3ZhbCBjYWxsYmFja3MuIFRoYXQncyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZy5cblxuTm93LCBJJ20gcmVjYWxsaW5nIHRoZSBrZXkgcG9pbnRzOiB0aGUgTVQ3NTMwIGlzIGEgKnBoeXNpY2FsKiBFdGhlcm5ldCBzd2l0Y2gsIHBhcnQgb2YgdGhlIE1lZGlhVGVrIE1UNzUzMC9NVDc1MzEvTVQ3OTg4IGZhbWlseS4gSXQncyBjb25uZWN0ZWQgdmlhIGVpdGhlciBhbiBNRElPIGJ1cyBvciBNTUlPLCBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLiBDcml0aWNhbGx5LCBpdCAqaXNuJ3QqIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQncyBhIG1ham9yIGZhY3Rvci5cblxuQ29uc2lkZXJpbmcgdGhlIFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZVwiIGNyaXRlcmlhIG91dGxpbmVkIGluIFNlY3Rpb24gMiwgdGhlIHNpdHVhdGlvbiBoZXJlIHNlZW1zIHRvIGZhbGwgbmVhdGx5IGludG8gYm90aCBleGNsdXNpb24gY2F0ZWdvcmllcy5cblxuMS4gICoqU3RydWN0dXJhbGx5IFVucmVhY2hhYmxlIEhhcmR3YXJlOioqIFRoaXMgaGFyZHdhcmUsIHRoZSBNVDc1MzAsIHJlcXVpcmVzIGEgcGh5c2ljYWwgQVNJQy9ib2FyZCwgYW5kIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4yLiAgKipVbnJlYWNoYWJsZSBFeGVjdXRpb24gUGF0aHM6KiogQWxsIHRoZSBtb2RpZmljYXRpb25zIGFyZSBjb25maW5lZCB0byBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChgLnJlbW92ZWAgZnVuY3Rpb25zKS4gVGhlc2UgY2FsbGJhY2tzIGFyZSBvbmx5IGV4ZWN1dGVkIGR1cmluZyAqZXhwbGljaXQqIGRyaXZlciB1bmJpbmRpbmcgKHZpYSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBpbnRlcnZlbnRpb24pLiBUaGVyZSdzIG5vIHNjZW5hcmlvIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyB3b3VsZCBiZSBleGVjdXRlZCBkdXJpbmcgYSBub3JtYWwgb3BlcmF0aW9uIG9mIFFFTVUuXG5cbkdpdmVuIHRoaXMsIEkgaGF2ZSBhIGhpZ2ggZGVncmVlIG9mIGNvbmZpZGVuY2UgdGhhdCB0aGUgbW9kaWZpZWQgY29kZSAqaXNuJ3QqIGEgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBJdCdzIHVucmVhY2hhYmxlIHdpdGhpbiB0aGUgdGFyZ2V0IGZ1enppbmcgZW52aXJvbm1lbnQuIFRoZSB0ZWFyZG93biBmdW5jdGlvbnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSByZW1vdmFsLiBJIHdpbGwgZXhhbWluZSB0aGUgS2NvbmZpZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ3MSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMzoxNDoyMC4wNDAxMjQxM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2NDI4NTc5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0RTQV9NVDc1MzBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL0tjb25maWc9Mjk9c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzE6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDItXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDM6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01ESU9cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00NC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTUzLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjU0OmNvbmZpZyBORVRfRFNBX01UNzUzMF9NTUlPXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTUtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBNTUlPIGludGVyZmFjZSBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIzOjE0OjIxLjcwNDQxNjg1MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxODMyNTA4ODg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBEaXZlIGZvciBEU0EgRGV0YWlscyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBhYm91dCB0aGUgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBkcml2ZXIgY29uZmlndXJhdGlvbi4gTXkgZmlyc3Qgc3RlcCBpcyB0byBkaWcgaW50byB0aGUgYEtjb25maWdgIGZpbGUgaW4gdGhlIGBkcml2ZXJzL25ldC9kc2FgIGRpcmVjdG9yeS4gVGhhdCdzIHRoZSBnby10byBwbGFjZSBmb3IgYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGhlbHAgdGV4dCByZWxhdGVkIHRvIHRoaXMgc3BlY2lmaWMgc3Vic3lzdGVtLiBUaGlzIGlzIHdoZXJlIEknbGwgZmluZCB0aGUgbWFjcm9zIGFuZCBzZXR0aW5ncyB0aGF0IGNvbnRyb2wgd2hpY2ggZmVhdHVyZXMgYXJlIGNvbXBpbGVkIGFuZCBsaW5rZWQgaW50byB0aGUga2VybmVsLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiB0aGUgcmVsZXZhbnQgYENPTkZJR19gIG9wdGlvbnMsIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgZHJpdmVycyBvciBmZWF0dXJlcywgYW5kIG9mIGNvdXJzZSwgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbnRleHQgYmVoaW5kIGVhY2ggY29uZmlndXJhYmxlIG9wdGlvbiByZWxhdGVkIHRvIHRoZSBEU0EgZHJpdmVyIGl0c2VsZi4gSXQncyB0aW1lIHRvIGdldCBhIGdvb2QgaGFuZGxlIG9uIGhvdyB0aGlzIHRoaW5nIGNhbiBiZSBzZXQgdXAhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4MDIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMzoxNDoyMy41MzY5Mjg0NzdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzAsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzA6XFx0XFxuICAzMTpcXHRjb25maWcgTkVUX0RTQV9NVDc1MzBcXG4gIDMyOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4gIDMzOlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19NVEtcXG4gIDM0OlxcdFxcdHNlbGVjdCBSRUdNQVBfSVJRXFxuICAzNTpcXHRcXHRpbXBseSBORVRfRFNBX01UNzUzMF9NRElPXFxuICAzNjpcXHRcXHRpbXBseSBORVRfRFNBX01UNzUzMF9NTUlPXFxuICAzNzpcXHRcXHRoZWxwXFxuICAzODpcXHRcXHQgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgTWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgRXRoZXJuZXRcXG4gIDM5OlxcdFxcdCAgc3dpdGNoIGNoaXBzLiBNdWx0aS1jaGlwIG1vZHVsZSBNVDc1MzAgaW4gTVQ3NjIxQVQsIE1UNzYyMURBVCxcXG4gIDQwOlxcdFxcdCAgTVQ3NjIxU1QgYW5kIE1UNzYyM0FJIFNvQ3MsIGFuZCBidWlsdC1pbiBzd2l0Y2ggaW4gTVQ3OTg4IFNvQyBhcmVcXG4gIDQxOlxcdFxcdCAgc3VwcG9ydGVkIGFzIHdlbGwuXFxuICA0MjpcXHRcXG4gIDQzOlxcdGNvbmZpZyBORVRfRFNBX01UNzUzMF9NRElPXFxuICA0NDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG4gIDQ1OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NVDc1MzBcXG4gIDQ2OlxcdFxcdHNlbGVjdCBNRURJQVRFS19HRV9QSFlcXG4gIDQ3OlxcdFxcdHNlbGVjdCBQQ1NfTVRLX0xZTlhJXFxuICA0ODpcXHRcXHRoZWxwXFxuICA0OTpcXHRcXHQgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgTWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgc3dpdGNoXFxuICA1MDpcXHRcXHQgIGNoaXBzIHdoaWNoIGFyZSBjb25uZWN0ZWQgdmlhIE1ESU8sIGFzIHdlbGwgYXMgbXVsdGktY2hpcFxcbiAgNTE6XFx0XFx0ICBtb2R1bGUgTVQ3NTMwIHdoaWNoIGNhbiBiZSBmb3VuZCBpbiB0aGUgTVQ3NjIxQVQsIE1UNzYyMURBVCxcXG4gIDUyOlxcdFxcdCAgTVQ3NjIxU1QgYW5kIE1UNzYyM0FJIFNvQ3MuXFxuICA1MzpcXHRcXG4gIDU0OlxcdGNvbmZpZyBORVRfRFNBX01UNzUzMF9NTUlPXFxuICA1NTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1NSU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG4gIDU2OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NVDc1MzBcXG4gIDU3OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuICA1ODpcXHRcXHRpbXBseSBNRURJQVRFS19HRV9TT0NfUEhZXFxuICA1OTpcXHRcXHRoZWxwXFxuICA2MDpcXHRcXHQgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgYnVpbHQtaW4gRXRoZXJuZXQgc3dpdGNoIGZvdW5kXFxuICA2MTpcXHRcXHQgIGluIHRoZSBNZWRpYVRlayBNVDc5ODggU29DLlxcbiAgNjI6XFx0XFx0ICBUaGUgc3dpdGNoIGlzIGEgc2ltaWxhciBkZXNpZ24gYXMgTVQ3NTMxLCBidXQgdGhlIHN3aXRjaCByZWdpc3RlcnNcXG4gIDYzOlxcdFxcdCAgYXJlIGRpcmVjdGx5IG1hcHBlZCBpbnRvIHRoZSBTb0NzIHJlZ2lzdGVyIHNwYWNlIHJhdGhlciB0aGFuIGJlaW5nXFxuICA2NDpcXHRcXHQgIGFjY2Vzc2libGUgdmlhIE1ESU8uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIzOjE0OjIzLjUzNjk5Mzk5N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxMDkzMDc5MTU1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFRoaXMgUGF0Y2gncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHRoaXMgaXMgc3RyYWlnaHRmb3J3YXJkLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYG10NzUzMF9yZW1vdmVgIGFuZCBgbXQ3NTMwX3JlbW92ZV9jb21tb25gLCB3aGljaCBhcmUgZXNzZW50aWFsbHkgdGVhcmRvd24gcm91dGluZXMgZm9yIHRoZSBNVDc1MzAsIE1UNzUzMSwgYW5kIE1UNzk4OCBFdGhlcm5ldCBzd2l0Y2ggY2hpcHMg4oCTIHNwZWNpZmljIGhhcmR3YXJlIHRoYXQncyAqbm90KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBzZXR1cHMgbGlrZSBRRU1VIG9yIEdDRS5cblxuVGhlIGtleSBoZXJlIGlzIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzLiBGcm9tIG15IGV4cGVyaWVuY2UgYW5kIHVuZGVyc3RhbmRpbmcsIGRyaXZlciB0ZWFyZG93biBjb2RlLCBwYXJ0aWN1bGFybHkgYC5yZW1vdmVgIGZ1bmN0aW9ucywgaXMganVzdCBub3QgZ29pbmcgdG8gYmUgcmVhY2hlZCBkdXJpbmcgc3l6a2FsbGVyIGZ1enppbmcuIEl0J3Mgc2ltcGx5IGFuIHVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoIHVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzIGZvciB0aGlzIHR5cGUgb2YgdGVzdGluZy5cblxuVGhlcmVmb3JlLCBubywgdGhpcyBpcyBub3QgYSBjYW5kaWRhdGUgZm9yIGZ1cnRoZXIgZnV6emluZy5cblxuSSdtIHNldHRpbmc6XG5cbiogICBgV29ydGhGdXp6aW5nOiBmYWxzZWBcbiogICBgRW5hYmxlQ29uZmlnczogW11gIChubyBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkIGhlcmUpXG4qICAgYEZvY3VzU3ltYm9sczogW11gIChubyBzcGVjaWZpYyBzeW1ib2xzIG5lZWQgdG8gYmUgdGFyZ2V0ZWQpXG5cbkFuZCB0aGUgcmVhc29uaW5nIGlzOiBUaGlzIHBhdGNoIG1vZGlmaWVzIGRyaXZlciB0ZWFyZG93biBmdW5jdGlvbnMgKGBtdDc1MzBfcmVtb3ZlYCBhbmQgYG10NzUzMF9yZW1vdmVfY29tbW9uYCkgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAgRXRoZXJuZXQgc3dpdGNoIGRyaXZlci4gVGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBiZWNhdXNlIGl0IHRhcmdldHMgcGh5c2ljYWwgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgYW5kIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBkcml2ZXIgdGVhcmRvd24vcmVtb3ZlIGNhbGxiYWNrcy5cblxuVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2NzUsIk91dHB1dFRva2VucyI6MTE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjM6MTQ6MzQuNDY3NzkxOTQ5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVyIHRlYXJkb3duIGZ1bmN0aW9ucyAobXQ3NTMwX3JlbW92ZSBhbmQgbXQ3NTMwX3JlbW92ZV9jb21tb24pIGZvciB0aGUgTWVkaWFUZWsgTVQ3NTMwL01UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggRFNBIGRyaXZlci4gVGhpcyBjb2RlIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgYW5kIGRyaXZlciByZW1vdmUvdGVhcmRvd24gcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVyIHRlYXJkb3duIGZ1bmN0aW9ucyAobXQ3NTMwX3JlbW92ZSBhbmQgbXQ3NTMwX3JlbW92ZV9jb21tb24pIGZvciB0aGUgTWVkaWFUZWsgTVQ3NTMwL01UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggRFNBIGRyaXZlci4gVGhpcyBjb2RlIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgYW5kIGRyaXZlciByZW1vdmUvdGVhcmRvd24gcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjM6MTQ6MzQuNDY3ODE0OTM4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtr5c6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-14 22:26:14 +0000 UTC FinishedAt: 2026-09-14 23:14:35 +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+CgkJCTx0ZD4yMDI2LzA5LzE0IDIzOjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVyIHRlYXJkb3duIGZ1bmN0aW9ucyAobXQ3NTMwX3JlbW92ZSBhbmQgbXQ3NTMwX3JlbW92ZV9jb21tb24pIGZvciB0aGUgTWVkaWFUZWsgTVQ3NTMwL01UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggRFNBIGRyaXZlci4gVGhpcyBjb2RlIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgYW5kIGRyaXZlciByZW1vdmUvdGVhcmRvd24gcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMzoxMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGNkNzJhZDkyMGJkYTU0ODc1MDNkZGE0ZDk3MWNmM2YyNDkyN2RlMDhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCAxNCAyMzoxMzo0OSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jXG5pbmRleCA3ODRkZDU4YTcxNTg5Li5kZTQyZjcwYWZjZmExIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jXG5AQCAtMjI3LDE1ICYjNDM7MjI3LDE3IEBAIG10NzUzMF9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuIFx0aWYgKCFwcml2KVxuIFx0XHRyZXR1cm47XG4gXG4tXHRyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShwcml2LVx1MDAzZWNvcmVfcHdyKTtcbi1cdGlmIChyZXQgXHUwMDNjIDApXG4tXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsXG4tXHRcdFx0XCYjMzQ7RmFpbGVkIHRvIGRpc2FibGUgY29yZSBwb3dlcjogJWRcXG5cJiMzNDssIHJldCk7XG4tXG4tXHRyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShwcml2LVx1MDAzZWlvX3B3cik7XG4tXHRpZiAocmV0IFx1MDAzYyAwKVxuLVx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gZGlzYWJsZSBpbyBwd3I6ICVkXFxuXCYjMzQ7LFxuLVx0XHRcdHJldCk7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlaWQgPT0gSURfTVQ3NTMwKSB7XG4mIzQzO1x0XHRyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShwcml2LVx1MDAzZWNvcmVfcHdyKTtcbiYjNDM7XHRcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsXG4mIzQzO1x0XHRcdFx0XCYjMzQ7RmFpbGVkIHRvIGRpc2FibGUgY29yZSBwb3dlcjogJWRcXG5cJiMzNDssIHJldCk7XG4mIzQzO1xuJiM0MztcdFx0cmV0ID0gcmVndWxhdG9yX2Rpc2FibGUocHJpdi1cdTAwM2Vpb19wd3IpO1xuJiM0MztcdFx0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGRpc2FibGUgaW8gcHdyOiAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRyZXQpO1xuJiM0MztcdH1cbiBcbiBcdG10NzUzMF9yZW1vdmVfY29tbW9uKHByaXYpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuaW5kZXggM2U2MWViM2MyYjFlMi4uOTBmZDA0NjY1ZWJmMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG5AQCAtMzU5MywxMSAmIzQzOzM1OTMsMTEgQEAgRVhQT1JUX1NZTUJPTF9HUEwobXQ3NTMwX3Byb2JlX2NvbW1vbik7XG4gdm9pZFxuIG10NzUzMF9yZW1vdmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbiB7XG4mIzQzO1x0ZHNhX3VucmVnaXN0ZXJfc3dpdGNoKHByaXYtXHUwMDNlZHMpO1xuJiM0MztcbiBcdGlmIChwcml2LVx1MDAzZWlycV9kb21haW4pXG4gXHRcdG10NzUzMF9mcmVlX21kaW9faXJxKHByaXYpO1xuIFxuLVx0ZHNhX3VucmVnaXN0ZXJfc3dpdGNoKHByaXYtXHUwMDNlZHMpO1xuLVxuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZXJlZ19tdXRleCk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKG10NzUzMF9yZW1vdmVfY29tbW9uKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMzoxMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXIgdGVhcmRvd24gZnVuY3Rpb25zIChtdDc1MzBfcmVtb3ZlIGFuZCBtdDc1MzBfcmVtb3ZlX2NvbW1vbikgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAvTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBEU0EgZHJpdmVyLiBUaGlzIGNvZGUgcmVxdWlyZXMgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBhbmQgZHJpdmVyIHJlbW92ZS90ZWFyZG93biBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIHN0YW5kYXJkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2Q3MmFkOTIwYmRhNTQ4NzUwM2RkYTRkOTcxY2YzZjI0OTI3ZGUwOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gU2VwIDE0IDIzOjEzOjQ5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYwppbmRleCA3ODRkZDU4YTcxNTg5Li5kZTQyZjcwYWZjZmExIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYwpAQCAtMjI3LDE1ICYjNDM7MjI3LDE3IEBAIG10NzUzMF9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KQogCWlmICghcHJpdikKIAkJcmV0dXJuOwogCi0JcmV0ID0gcmVndWxhdG9yX2Rpc2FibGUocHJpdi0mZ3Q7Y29yZV9wd3IpOwotCWlmIChyZXQgJmx0OyAwKQotCQlkZXZfZXJyKHByaXYtJmd0O2RldiwKLQkJCSYjMzQ7RmFpbGVkIHRvIGRpc2FibGUgY29yZSBwb3dlcjogJWRcbiYjMzQ7LCByZXQpOwotCi0JcmV0ID0gcmVndWxhdG9yX2Rpc2FibGUocHJpdi0mZ3Q7aW9fcHdyKTsKLQlpZiAocmV0ICZsdDsgMCkKLQkJZGV2X2Vycihwcml2LSZndDtkZXYsICYjMzQ7RmFpbGVkIHRvIGRpc2FibGUgaW8gcHdyOiAlZFxuJiMzNDssCi0JCQlyZXQpOwomIzQzOwlpZiAocHJpdi0mZ3Q7aWQgPT0gSURfTVQ3NTMwKSB7CiYjNDM7CQlyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShwcml2LSZndDtjb3JlX3B3cik7CiYjNDM7CQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCQlkZXZfZXJyKHByaXYtJmd0O2RldiwKJiM0MzsJCQkJJiMzNDtGYWlsZWQgdG8gZGlzYWJsZSBjb3JlIHBvd2VyOiAlZFxuJiMzNDssIHJldCk7CiYjNDM7CiYjNDM7CQlyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShwcml2LSZndDtpb19wd3IpOwomIzQzOwkJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQkJZGV2X2Vycihwcml2LSZndDtkZXYsICYjMzQ7RmFpbGVkIHRvIGRpc2FibGUgaW8gcHdyOiAlZFxuJiMzNDssCiYjNDM7CQkJCXJldCk7CiYjNDM7CX0KIAogCW10NzUzMF9yZW1vdmVfY29tbW9uKHByaXYpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMKaW5kZXggM2U2MWViM2MyYjFlMi4uOTBmZDA0NjY1ZWJmMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYwpAQCAtMzU5MywxMSAmIzQzOzM1OTMsMTEgQEAgRVhQT1JUX1NZTUJPTF9HUEwobXQ3NTMwX3Byb2JlX2NvbW1vbik7CiB2b2lkCiBtdDc1MzBfcmVtb3ZlX2NvbW1vbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpCiB7CiYjNDM7CWRzYV91bnJlZ2lzdGVyX3N3aXRjaChwcml2LSZndDtkcyk7CiYjNDM7CiAJaWYgKHByaXYtJmd0O2lycV9kb21haW4pCiAJCW10NzUzMF9mcmVlX21kaW9faXJxKHByaXYpOwogCi0JZHNhX3VucmVnaXN0ZXJfc3dpdGNoKHByaXYtJmd0O2RzKTsKLQogCW11dGV4X2Rlc3Ryb3koJmFtcDtwcml2LSZndDtyZWdfbXV0ZXgpOwogfQogRVhQT1JUX1NZTUJPTF9HUEwobXQ3NTMwX3JlbW92ZV9jb21tb24pOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzU1CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMzQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3NTMwIERyaXZlciBSZW1vdmFsKioKCk9rYXksIHNvIHRoZSBkaWZmIEkmIzM5O20gbG9va2luZyBhdCBpbnZvbHZlcyBjaGFuZ2VzIHRvIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY2AgYW5kIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNgLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYG10NzUzMF9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KWAgYW5kIGBtdDc1MzBfcmVtb3ZlX2NvbW1vbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7ZG9lcyB0aGlzIGZhbGwgdW5kZXIgdGhlICYjMzk7V29ydGhGdXp6aW5nPWZhbHNlJiMzOTsgcnVsZT8mIzM0OyBMZXQmIzM5O3MgYnJlYWsgaXQgZG93bi4KCkkgbmVlZCB0byByZWZlciB0byBzZWN0aW9uIDIsIHRoZSAmIzM0O1dIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSYjMzQ7IHJ1bGVzLiBMZXQmIzM5O3Mgc2VlLi4uIHdlIGhhdmUgdHdvIGNhdGVnb3JpZXMgaGVyZTogJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBhbmQgJiMzNDtVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMmIzM0Oy4KCkhtbSwgdGhlIGZpcnN0IG9uZSB0YWxrcyBhYm91dCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyB0aGF0IG5lZWQgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgbm90IGF2YWlsYWJsZSBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0JiMzOTtzIG5vdCBzb3VuZGluZyBsaWtlIGEgZ29vZCBmaXQuIFdoYXQmIzM5O3MgTVQ3NTMwIGFnYWluPyBBaCwgcmlnaHQsIGl0JiMzOTtzIGEgTWVkaWFUZWsgRXRoZXJuZXQgc3dpdGNoIGNoaXAsIHR5cGljYWxseSB1c2VkIHdpdGggTURJTy9NTUlPIGJ1c2VzIG9uIE1lZGlhVGVrIEFSTS9NSVBTIFNvQ3Mgb3Igcm91dGVycy4gSSBkb24mIzM5O3QgKnRoaW5rKiB0aGF0IGZhbGxzIGludG8gdGhpcyBjYXRlZ29yeSwgYnV0IGl0JiMzOTtzIHdvcnRoIGRvdWJsZS1jaGVja2luZy4KClRoZSBzZWNvbmQgY2F0ZWdvcnksICYjMzQ7VW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzLCYjMzQ7IGlzIGludGVyZXN0aW5nLiBTcGVjaWZpY2FsbHksIGl0IG1lbnRpb25zIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgbGlrZSBgLnJlbW92ZWAgYW5kIGAuc2h1dGRvd25gLCBvciBgcGNpX3VucmVnaXN0ZXJfZHJpdmVyYC4gVGhvc2UgYXJlIHRyaWdnZXJlZCBkdXJpbmcgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgdW5iaW5kaW5nLiBJcyB0aGF0IHdoYXQmIzM5O3MgaGFwcGVuaW5nIGhlcmU/IElzIGBtdDc1MzBfcmVtb3ZlYCBvbmx5IGNhbGxlZCBpbiB0aGF0IHNwZWNpZmljIGNpcmN1bXN0YW5jZT8gSSBuZWVkIG1vcmUgY29udGV4dC4KClNvLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGJldHRlci4gSSYjMzk7bGwgbmVlZCB0byBpbnNwZWN0IGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY2AgYW5kIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNgIHRvIHNlZSBpZiBgbXQ3NTMwX3JlbW92ZWAgaXMgKm9ubHkqIGNhbGxlZCBpbiB0aG9zZSBzaXR1YXRpb25zLiBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIHRvIGNoZWNrIHRoZSBjYWxsIHNpdGVzIGFuZCByZWxhdGVkIGNvbnRleHQgd2l0aGluIHRob3NlIGZpbGVzLiBUaGF0JiMzOTtzIHRoZSBuZXh0IHN0ZXAgdG8gZmlndXJlIG91dCBpZiB0aGlzIHNob3VsZCBiZSBtYXJrZWQgYXMgZnV6emFibGUgb3Igbm90LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDIzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIyMDpcdFxuIDIyMTpcdHN0YXRpYyB2b2lkXG4gMjIyOlx0bXQ3NTMwX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4gMjIzOlx0e1xuIDIyNDpcdFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbiAyMjU6XHRcdGludCByZXQgPSAwLCBpO1xuIDIyNjpcdFxuIDIyNzpcdFx0aWYgKCFwcml2KVxuIDIyODpcdFx0XHRyZXR1cm47XG4gMjI5Olx0XG4gMjMwOlx0XHRpZiAocHJpdi1cdTAwM2VpZCA9PSBJRF9NVDc1MzApIHtcbiAyMzE6XHRcdFx0cmV0ID0gcmVndWxhdG9yX2Rpc2FibGUocHJpdi1cdTAwM2Vjb3JlX3B3cik7XG4gMjMyOlx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gMjMzOlx0XHRcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldixcbiAyMzQ6XHRcdFx0XHRcdFwmIzM0O0ZhaWxlZCB0byBkaXNhYmxlIGNvcmUgcG93ZXI6ICVkXFxuXCYjMzQ7LCByZXQpO1xuIDIzNTpcdFxuIDIzNjpcdFx0XHRyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShwcml2LVx1MDAzZWlvX3B3cik7XG4gMjM3Olx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gMjM4Olx0XHRcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIGRpc2FibGUgaW8gcHdyOiAlZFxcblwmIzM0OyxcbiAyMzk6XHRcdFx0XHRcdHJldCk7XG4gMjQwOlx0XHR9XG4gMjQxOlx0XG4gMjQyOlx0XHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihwcml2KTtcbiAyNDM6XHRcbiAyNDQ6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIDI7ICYjNDM7JiM0MztpKVxuIDI0NTpcdFx0XHRtdGtfcGNzX2x5bnhpX2Rlc3Ryb3kocHJpdi1cdTAwM2Vwb3J0c1s1ICYjNDM7IGldLnNnbWlpX3Bjcyk7XG4gMjQ2Olx0fVxuIDI0NzpcdFxuIDI0ODpcdHN0YXRpYyB2b2lkIG10NzUzMF9zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4gMjQ5Olx0e1xuIDI1MDpcdFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbiAyNTE6XHRcbiAyNTI6XHRcdGlmICghcHJpdilcbiAyNTM6XHRcdFx0cmV0dXJuO1xuIDI1NDpcdFxuIDI1NTpcdFx0ZHNhX3N3aXRjaF9zaHV0ZG93bihwcml2LVx1MDAzZWRzKTtcbiAyNTY6XHRcbiAyNTc6XHRcdGRldl9zZXRfZHJ2ZGF0YShcdTAwMjZtZGlvZGV2LVx1MDAzZWRldiwgTlVMTCk7XG4gMjU4Olx0fVxuIDI1OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDIzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MTgKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIG10NzUzMC5jOiBFeGFtaW5pbmcgTGluZSAzNTkwKioKCk9rYXksIEkmIzM5O20gdGhpbmtpbmcgSSBuZWVkIHRvIHplcm8gaW4gb24gYGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY2Ag4oCTIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIE1lZGlhdGVrIE1UNzUzMCBzd2l0Y2ggZHJpdmVyIGxpdmVzLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIGFyb3VuZCBsaW5lIDM1OTAuIE15IGh1bmNoIGlzIHRoYXQgdGhpcyBpcyBzb21ld2hlcmUgYXJvdW5kIHdoZXJlIHRoZSBjb2RlIGhhbmRsZXMgWyoqU3BlY2lmaWMgSXNzdWUgaW4gdGhlIHVzZXJzIGZpZWxkJiMzOTtzIGZpZWxkIG9mIGV4cGVydGlzZSoqXS4gSSBleHBlY3QgbGluZSAzNTkwIGFuZCBhZGphY2VudCBsaW5lcyB3aWxsIHJlbGF0ZSB0byBbKipFeHBlY3RlZCBjb2RlIGJlaGF2aW9yIGJhc2VkIG9uIHRoZSBpc3N1ZSoqXS4gSSBhbnRpY2lwYXRlIHRoZXJlIHdpbGwgYmUgc2V2ZXJhbCBsb2dpY2FsIGZsb3dzIHRoYXQgSSBuZWVkIHRvIGV2YWx1YXRlLiBJJiMzOTttIGhvcGluZyB0byBkaXNjb3ZlciB0aGUgcm9vdCBjYXVzZSBvZiB0aGUgaXNzdWUgYnkgZXZhbHVhdGluZyB0aGUgcmVsZXZhbnQgdmFyaWFibGVzIHdpdGggYXBwcm9wcmlhdGUgdGVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM1ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzU4MDpcdFx0cHJpdi1cdTAwM2Vkcy1cdTAwM2Vwcml2ID0gcHJpdjtcbjM1ODE6XHRcdHByaXYtXHUwMDNlZHMtXHUwMDNlb3BzID0gXHUwMDI2bXQ3NTMwX3N3aXRjaF9vcHM7XG4zNTgyOlx0XHRwcml2LVx1MDAzZWRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNm10NzUzeF9waHlsaW5rX21hY19vcHM7XG4zNTgzOlx0XHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlcmVnX211dGV4KTtcbjM1ODQ6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNnByaXYtXHUwMDNlc3RhdHNfbG9jayk7XG4zNTg1Olx0XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZwcml2LVx1MDAzZXN0YXRzX3dvcmssIG10NzUzMF9zdGF0c19wb2xsKTtcbjM1ODY6XHRcbjM1ODc6XHRcdGRldl9zZXRfZHJ2ZGF0YShkZXYsIHByaXYpO1xuMzU4ODpcdFxuMzU4OTpcdFx0cmV0dXJuIDA7XG4zNTkwOlx0fVxuMzU5MTpcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzUzMF9wcm9iZV9jb21tb24pO1xuMzU5MjpcdFxuMzU5MzpcdHZvaWRcbjM1OTQ6XHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG4zNTk1Olx0e1xuMzU5NjpcdFx0ZHNhX3VucmVnaXN0ZXJfc3dpdGNoKHByaXYtXHUwMDNlZHMpO1xuMzU5NzpcdFxuMzU5ODpcdFx0aWYgKHByaXYtXHUwMDNlaXJxX2RvbWFpbilcbjM1OTk6XHRcdFx0bXQ3NTMwX2ZyZWVfbWRpb19pcnEocHJpdik7XG4zNjAwOlx0XG4zNjAxOlx0XHRtdXRleF9kZXN0cm95KFx1MDAyNnByaXYtXHUwMDNlcmVnX211dGV4KTtcbjM2MDI6XHR9XG4zNjAzOlx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3NTMwX3JlbW92ZV9jb21tb24pO1xuMzYwNDpcdFxuMzYwNTpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7U2VhbiBXYW5nIFx1MDAzY3NlYW4ud2FuZ0BtZWRpYXRlay5jb21cdTAwM2VcJiMzNDspO1xuMzYwNjpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtEcml2ZXIgZm9yIE1lZGlhdGVrIE1UNzUzMCBTd2l0Y2hcJiMzNDspO1xuMzYwNzpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU0MgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVtb3ZhbCBGdW5jdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBjb2RlLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBjbGVhbnVwIHByb2Nlc3MsIHNwZWNpZmljYWxseSB0aGUgcmVtb3ZhbCBvZiB0aGUgTVQ3NTMwIGRldmljZS4gSSYjMzk7dmUgZ290IHR3byBmdW5jdGlvbnMgaGlnaGxpZ2h0ZWQ6IGBtdDc1MzBfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilgIGFuZCBgbXQ3NTMwX3JlbW92ZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZW0uIEl0IHNlZW1zIGxpa2UgYG10NzUzMF9yZW1vdmVfY29tbW9uYCBsaWtlbHkgY29udGFpbnMgdGhlIGNvcmUgbG9naWMgZm9yIHRoZSBkZXZpY2UmIzM5O3MgcmVtb3ZhbCwgd2hpbGUgYG10NzUzMF9yZW1vdmVgIG1pZ2h0IGJlIGEgaGlnaGVyLWxldmVsIHdyYXBwZXIgaGFuZGxpbmcgc29tZSBwcmVsaW1pbmFyeSBzdGVwcywgcGVyaGFwcyBNRElPLXNwZWNpZmljLgoKVGhlIGNydWNpYWwgcXVlc3Rpb24gbm93IGlzLCAmIzM0O1doYXQgY2FsbHMgYG10NzUzMF9yZW1vdmVfY29tbW9uYD8mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMgdG8gbWFrZSBzdXJlIHRoaXMgcmVtb3ZhbCBpcyBjbGVhbiBhbmQgY29tcGxldGUuIEkmIzM5O2xsIGZpcmUgdXAgZ3JlcHBlciByaWdodCBhd2F5LiBBIGNyb3NzLXJlZmVyZW5jZSBzZWFyY2ggaXMgZXNzZW50aWFsIGhlcmUuIEkgbmVlZCB0byBiZSAxMDAlIHN1cmUgSSYjMzk7bSBjYXRjaGluZyBhbGwgdGhlIGNhbGxlcnMgb2YgYG10NzUzMF9yZW1vdmVfY29tbW9uYC4gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBhbGwgaW5zdGFuY2VzIG9mIGl0IGluIHRoZSBjb2RlIGJhc2UsIHRvIG1ha2Ugc3VyZSBJIGdldCB0aGUgd2hvbGUgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc1MzBfcmVtb3ZlX2NvbW1vbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0yMjI9bXQ3NTMwX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjQxLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjQyOlx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNDMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9Njc9c3RhdGljIHZvaWQgbXQ3OTg4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTcxLVx0aWYgKHByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo3MjpcdFx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy03My19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTM1OTM9dm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM1OTQ6bXQ3NTMwX3JlbW92ZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM1OTUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNjAyLX1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNjAzOkVYUE9SVF9TWU1CT0xfR1BMKG10NzUzMF9yZW1vdmVfY29tbW9uKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNjA0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaD05NDg9aW50IG10NzUzMF9wcm9iZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaDo5NDk6dm9pZCBtdDc1MzBfcmVtb3ZlX2NvbW1vbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5oLTk1MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDcxCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNjM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1UNzUzMCBDb2RlIENoYW5nZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkmIzM5O20gbG9va2luZyBhdCB0aGUgY2FsbCBzaXRlcyBvZiBgbXQ3NTMwX3JlbW92ZV9jb21tb25gLiBJIHNlZSB0aGF0IGl0JiMzOTtzIG9ubHkgY2FsbGVkIGZyb20gYG10NzUzMF9yZW1vdmVgIGFuZCBgbXQ3OTg4X3JlbW92ZWAsIGJvdGggd2l0aGluIHRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIGRyaXZlciBjb250ZXh0IGZvciB0aGUgTVQ3NTMwIGZhbWlseSBvZiBzd2l0Y2ggaGFyZHdhcmUuIFRoZXNlIGFyZSAqdGVhcmRvd24qIGZ1bmN0aW9ucyDigJMgdGhlIGRyaXZlciByZW1vdmFsIGNhbGxiYWNrcy4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZy4KCk5vdywgSSYjMzk7bSByZWNhbGxpbmcgdGhlIGtleSBwb2ludHM6IHRoZSBNVDc1MzAgaXMgYSAqcGh5c2ljYWwqIEV0aGVybmV0IHN3aXRjaCwgcGFydCBvZiB0aGUgTWVkaWFUZWsgTVQ3NTMwL01UNzUzMS9NVDc5ODggZmFtaWx5LiBJdCYjMzk7cyBjb25uZWN0ZWQgdmlhIGVpdGhlciBhbiBNRElPIGJ1cyBvciBNTUlPLCBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLiBDcml0aWNhbGx5LCBpdCAqaXNuJiMzOTt0KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0JiMzOTtzIGEgbWFqb3IgZmFjdG9yLgoKQ29uc2lkZXJpbmcgdGhlICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSYjMzQ7IGNyaXRlcmlhIG91dGxpbmVkIGluIFNlY3Rpb24gMiwgdGhlIHNpdHVhdGlvbiBoZXJlIHNlZW1zIHRvIGZhbGwgbmVhdGx5IGludG8gYm90aCBleGNsdXNpb24gY2F0ZWdvcmllcy4KCjEuICAqKlN0cnVjdHVyYWxseSBVbnJlYWNoYWJsZSBIYXJkd2FyZToqKiBUaGlzIGhhcmR3YXJlLCB0aGUgTVQ3NTMwLCByZXF1aXJlcyBhIHBoeXNpY2FsIEFTSUMvYm9hcmQsIGFuZCB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgoyLiAgKipVbnJlYWNoYWJsZSBFeGVjdXRpb24gUGF0aHM6KiogQWxsIHRoZSBtb2RpZmljYXRpb25zIGFyZSBjb25maW5lZCB0byBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChgLnJlbW92ZWAgZnVuY3Rpb25zKS4gVGhlc2UgY2FsbGJhY2tzIGFyZSBvbmx5IGV4ZWN1dGVkIGR1cmluZyAqZXhwbGljaXQqIGRyaXZlciB1bmJpbmRpbmcgKHZpYSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBpbnRlcnZlbnRpb24pLiBUaGVyZSYjMzk7cyBubyBzY2VuYXJpbyB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgd291bGQgYmUgZXhlY3V0ZWQgZHVyaW5nIGEgbm9ybWFsIG9wZXJhdGlvbiBvZiBRRU1VLgoKR2l2ZW4gdGhpcywgSSBoYXZlIGEgaGlnaCBkZWdyZWUgb2YgY29uZmlkZW5jZSB0aGF0IHRoZSBtb2RpZmllZCBjb2RlICppc24mIzM5O3QqIGEgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBJdCYjMzk7cyB1bnJlYWNoYWJsZSB3aXRoaW4gdGhlIHRhcmdldCBmdXp6aW5nIGVudmlyb25tZW50LiBUaGUgdGVhcmRvd24gZnVuY3Rpb25zIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgcmVtb3ZhbC4gSSB3aWxsIGV4YW1pbmUgdGhlIEtjb25maWcgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDIzOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfRFNBX01UNzUzMCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvS2NvbmZpZz0yOT1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjMxOmNvbmZpZyBORVRfRFNBX01UNzUzMFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzItXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQyLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDM6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTUzLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NTQ6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01NSU9cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTU1LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIE1NSU8gaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODAyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKktjb25maWcgRGl2ZSBmb3IgRFNBIERldGFpbHMqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIGRyaXZlciBjb25maWd1cmF0aW9uLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGRpZyBpbnRvIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGUgYGRyaXZlcnMvbmV0L2RzYWAgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHRoZSBnby10byBwbGFjZSBmb3IgYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGhlbHAgdGV4dCByZWxhdGVkIHRvIHRoaXMgc3BlY2lmaWMgc3Vic3lzdGVtLiBUaGlzIGlzIHdoZXJlIEkmIzM5O2xsIGZpbmQgdGhlIG1hY3JvcyBhbmQgc2V0dGluZ3MgdGhhdCBjb250cm9sIHdoaWNoIGZlYXR1cmVzIGFyZSBjb21waWxlZCBhbmQgbGlua2VkIGludG8gdGhlIGtlcm5lbC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6IHRoZSByZWxldmFudCBgQ09ORklHX2Agb3B0aW9ucywgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBkcml2ZXJzIG9yIGZlYXR1cmVzLCBhbmQgb2YgY291cnNlLCBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29udGV4dCBiZWhpbmQgZWFjaCBjb25maWd1cmFibGUgb3B0aW9uIHJlbGF0ZWQgdG8gdGhlIERTQSBkcml2ZXIgaXRzZWxmLiBJdCYjMzk7cyB0aW1lIHRvIGdldCBhIGdvb2QgaGFuZGxlIG9uIGhvdyB0aGlzIHRoaW5nIGNhbiBiZSBzZXQgdXAhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDIzOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDMwOlx0XG4gIDMxOlx0Y29uZmlnIE5FVF9EU0FfTVQ3NTMwXG4gIDMyOlx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuICAzMzpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX01US1xuICAzNDpcdFx0c2VsZWN0IFJFR01BUF9JUlFcbiAgMzU6XHRcdGltcGx5IE5FVF9EU0FfTVQ3NTMwX01ESU9cbiAgMzY6XHRcdGltcGx5IE5FVF9EU0FfTVQ3NTMwX01NSU9cbiAgMzc6XHRcdGhlbHBcbiAgMzg6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldFxuICAzOTpcdFx0ICBzd2l0Y2ggY2hpcHMuIE11bHRpLWNoaXAgbW9kdWxlIE1UNzUzMCBpbiBNVDc2MjFBVCwgTVQ3NjIxREFULFxuICA0MDpcdFx0ICBNVDc2MjFTVCBhbmQgTVQ3NjIzQUkgU29DcywgYW5kIGJ1aWx0LWluIHN3aXRjaCBpbiBNVDc5ODggU29DIGFyZVxuICA0MTpcdFx0ICBzdXBwb3J0ZWQgYXMgd2VsbC5cbiAgNDI6XHRcbiAgNDM6XHRjb25maWcgTkVUX0RTQV9NVDc1MzBfTURJT1xuICA0NDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuICA0NTpcdFx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxuICA0NjpcdFx0c2VsZWN0IE1FRElBVEVLX0dFX1BIWVxuICA0NzpcdFx0c2VsZWN0IFBDU19NVEtfTFlOWElcbiAgNDg6XHRcdGhlbHBcbiAgNDk6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBzd2l0Y2hcbiAgNTA6XHRcdCAgY2hpcHMgd2hpY2ggYXJlIGNvbm5lY3RlZCB2aWEgTURJTywgYXMgd2VsbCBhcyBtdWx0aS1jaGlwXG4gIDUxOlx0XHQgIG1vZHVsZSBNVDc1MzAgd2hpY2ggY2FuIGJlIGZvdW5kIGluIHRoZSBNVDc2MjFBVCwgTVQ3NjIxREFULFxuICA1MjpcdFx0ICBNVDc2MjFTVCBhbmQgTVQ3NjIzQUkgU29Dcy5cbiAgNTM6XHRcbiAgNTQ6XHRjb25maWcgTkVUX0RTQV9NVDc1MzBfTU1JT1xuICA1NTpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIE1NSU8gaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuICA1NjpcdFx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxuICA1NzpcdFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbiAgNTg6XHRcdGltcGx5IE1FRElBVEVLX0dFX1NPQ19QSFlcbiAgNTk6XHRcdGhlbHBcbiAgNjA6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBidWlsdC1pbiBFdGhlcm5ldCBzd2l0Y2ggZm91bmRcbiAgNjE6XHRcdCAgaW4gdGhlIE1lZGlhVGVrIE1UNzk4OCBTb0MuXG4gIDYyOlx0XHQgIFRoZSBzd2l0Y2ggaXMgYSBzaW1pbGFyIGRlc2lnbiBhcyBNVDc1MzEsIGJ1dCB0aGUgc3dpdGNoIHJlZ2lzdGVyc1xuICA2MzpcdFx0ICBhcmUgZGlyZWN0bHkgbWFwcGVkIGludG8gdGhlIFNvQ3MgcmVnaXN0ZXIgc3BhY2UgcmF0aGVyIHRoYW4gYmVpbmdcbiAgNjQ6XHRcdCAgYWNjZXNzaWJsZSB2aWEgTURJTy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTQgMjM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODY3NQoJCQkJCQkJb3V0cHV0OiAxMTcKCQkJCQkJCXRob3VnaHRzOiAyMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBUaGlzIFBhdGNoJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHRoaXMgaXMgc3RyYWlnaHRmb3J3YXJkLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYG10NzUzMF9yZW1vdmVgIGFuZCBgbXQ3NTMwX3JlbW92ZV9jb21tb25gLCB3aGljaCBhcmUgZXNzZW50aWFsbHkgdGVhcmRvd24gcm91dGluZXMgZm9yIHRoZSBNVDc1MzAsIE1UNzUzMSwgYW5kIE1UNzk4OCBFdGhlcm5ldCBzd2l0Y2ggY2hpcHMg4oCTIHNwZWNpZmljIGhhcmR3YXJlIHRoYXQmIzM5O3MgKm5vdCogZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gc2V0dXBzIGxpa2UgUUVNVSBvciBHQ0UuCgpUaGUga2V5IGhlcmUgaXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MuIEZyb20gbXkgZXhwZXJpZW5jZSBhbmQgdW5kZXJzdGFuZGluZywgZHJpdmVyIHRlYXJkb3duIGNvZGUsIHBhcnRpY3VsYXJseSBgLnJlbW92ZWAgZnVuY3Rpb25zLCBpcyBqdXN0IG5vdCBnb2luZyB0byBiZSByZWFjaGVkIGR1cmluZyBzeXprYWxsZXIgZnV6emluZy4gSXQmIzM5O3Mgc2ltcGx5IGFuIHVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoIHVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzIGZvciB0aGlzIHR5cGUgb2YgdGVzdGluZy4KClRoZXJlZm9yZSwgbm8sIHRoaXMgaXMgbm90IGEgY2FuZGlkYXRlIGZvciBmdXJ0aGVyIGZ1enppbmcuCgpJJiMzOTttIHNldHRpbmc6CgoqICAgYFdvcnRoRnV6emluZzogZmFsc2VgCiogICBgRW5hYmxlQ29uZmlnczogW11gIChubyBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkIGhlcmUpCiogICBgRm9jdXNTeW1ib2xzOiBbXWAgKG5vIHNwZWNpZmljIHN5bWJvbHMgbmVlZCB0byBiZSB0YXJnZXRlZCkKCkFuZCB0aGUgcmVhc29uaW5nIGlzOiBUaGlzIHBhdGNoIG1vZGlmaWVzIGRyaXZlciB0ZWFyZG93biBmdW5jdGlvbnMgKGBtdDc1MzBfcmVtb3ZlYCBhbmQgYG10NzUzMF9yZW1vdmVfY29tbW9uYCkgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAgRXRoZXJuZXQgc3dpdGNoIGRyaXZlci4gVGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBiZWNhdXNlIGl0IHRhcmdldHMgcGh5c2ljYWwgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgYW5kIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBkcml2ZXIgdGVhcmRvd24vcmVtb3ZlIGNhbGxiYWNrcy4KClRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNCAyMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRyaXZlciB0ZWFyZG93biBmdW5jdGlvbnMgKG10NzUzMF9yZW1vdmUgYW5kIG10NzUzMF9yZW1vdmVfY29tbW9uKSBmb3IgdGhlIE1lZGlhVGVrIE1UNzUzMC9NVDc1MzEgRXRoZXJuZXQgc3dpdGNoIERTQSBkcml2ZXIuIFRoaXMgY29kZSByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIGFuZCBkcml2ZXIgcmVtb3ZlL3RlYXJkb3duIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgc3RhbmRhcmQgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRyaXZlciB0ZWFyZG93biBmdW5jdGlvbnMgKG10NzUzMF9yZW1vdmUgYW5kIG10NzUzMF9yZW1vdmVfY29tbW9uKSBmb3IgdGhlIE1lZGlhVGVrIE1UNzUzMC9NVDc1MzEgRXRoZXJuZXQgc3dpdGNoIERTQSBkcml2ZXIuIFRoaXMgY29kZSByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIGFuZCBkcml2ZXIgcmVtb3ZlL3RlYXJkb3duIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgc3RhbmRhcmQgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE0IDIzOjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMzoxMzo1MC45MDg3NTUzNjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzU1OTA2OTc5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRyaXZlciB0ZWFyZG93biBmdW5jdGlvbnMgKG10NzUzMF9yZW1vdmUgYW5kIG10NzUzMF9yZW1vdmVfY29tbW9uKSBmb3IgdGhlIE1lZGlhVGVrIE1UNzUzMC9NVDc1MzEgRXRoZXJuZXQgc3dpdGNoIERTQSBkcml2ZXIuIFRoaXMgY29kZSByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIGFuZCBkcml2ZXIgcmVtb3ZlL3RlYXJkb3duIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgc3RhbmRhcmQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIzOjEzOjUwLjkwODc2MDE0N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUwNDk4Mjg1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGNkNzJhZDkyMGJkYTU0ODc1MDNkZGE0ZDk3MWNmM2YyNDkyN2RlMDhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBTZXAgMTQgMjM6MTM6NDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY1xcbmluZGV4IDc4NGRkNThhNzE1ODkuLmRlNDJmNzBhZmNmYTEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY1xcbkBAIC0yMjcsMTUgKzIyNywxNyBAQCBtdDc1MzBfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4gXFx0aWYgKCFwcml2KVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHRyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShwcml2LVxcdTAwM2Vjb3JlX3B3cik7XFxuLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi1cXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldixcXG4tXFx0XFx0XFx0XFxcIkZhaWxlZCB0byBkaXNhYmxlIGNvcmUgcG93ZXI6ICVkXFxcXG5cXFwiLCByZXQpO1xcbi1cXG4tXFx0cmV0ID0gcmVndWxhdG9yX2Rpc2FibGUocHJpdi1cXHUwMDNlaW9fcHdyKTtcXG4tXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLVxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGRpc2FibGUgaW8gcHdyOiAlZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0cmV0KTtcXG4rXFx0aWYgKHByaXYtXFx1MDAzZWlkID09IElEX01UNzUzMCkge1xcbitcXHRcXHRyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShwcml2LVxcdTAwM2Vjb3JlX3B3cik7XFxuK1xcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFx0XFxcIkZhaWxlZCB0byBkaXNhYmxlIGNvcmUgcG93ZXI6ICVkXFxcXG5cXFwiLCByZXQpO1xcbitcXG4rXFx0XFx0cmV0ID0gcmVndWxhdG9yX2Rpc2FibGUocHJpdi1cXHUwMDNlaW9fcHdyKTtcXG4rXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGRpc2FibGUgaW8gcHdyOiAlZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0cmV0KTtcXG4rXFx0fVxcbiBcXG4gXFx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcXG5pbmRleCAzZTYxZWIzYzJiMWUyLi45MGZkMDQ2NjVlYmYxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xcbkBAIC0zNTkzLDExICszNTkzLDExIEBAIEVYUE9SVF9TWU1CT0xfR1BMKG10NzUzMF9wcm9iZV9jb21tb24pO1xcbiB2b2lkXFxuIG10NzUzMF9yZW1vdmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG4ge1xcbitcXHRkc2FfdW5yZWdpc3Rlcl9zd2l0Y2gocHJpdi1cXHUwMDNlZHMpO1xcbitcXG4gXFx0aWYgKHByaXYtXFx1MDAzZWlycV9kb21haW4pXFxuIFxcdFxcdG10NzUzMF9mcmVlX21kaW9faXJxKHByaXYpO1xcbiBcXG4tXFx0ZHNhX3VucmVnaXN0ZXJfc3dpdGNoKHByaXYtXFx1MDAzZWRzKTtcXG4tXFxuIFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19tdXRleCk7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwobXQ3NTMwX3JlbW92ZV9jb21tb24pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMzoxMzo1Mi40MTQ0MDMyNjRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQyMDUzNDEwMDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkcml2ZXIgdGVhcmRvd24gZnVuY3Rpb25zIChtdDc1MzBfcmVtb3ZlIGFuZCBtdDc1MzBfcmVtb3ZlX2NvbW1vbikgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAvTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBEU0EgZHJpdmVyLiBUaGlzIGNvZGUgcmVxdWlyZXMgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBhbmQgZHJpdmVyIHJlbW92ZS90ZWFyZG93biBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIHN0YW5kYXJkIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNkNzJhZDkyMGJkYTU0ODc1MDNkZGE0ZDk3MWNmM2YyNDkyN2RlMDhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCAxNCAyMzoxMzo0OSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmNcbmluZGV4IDc4NGRkNThhNzE1ODkuLmRlNDJmNzBhZmNmYTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmNcbkBAIC0yMjcsMTUgKzIyNywxNyBAQCBtdDc1MzBfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbiBcdGlmICghcHJpdilcbiBcdFx0cmV0dXJuO1xuIFxuLVx0cmV0ID0gcmVndWxhdG9yX2Rpc2FibGUocHJpdi1cdTAwM2Vjb3JlX3B3cik7XG4tXHRpZiAocmV0IFx1MDAzYyAwKVxuLVx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LFxuLVx0XHRcdFwiRmFpbGVkIHRvIGRpc2FibGUgY29yZSBwb3dlcjogJWRcXG5cIiwgcmV0KTtcbi1cbi1cdHJldCA9IHJlZ3VsYXRvcl9kaXNhYmxlKHByaXYtXHUwMDNlaW9fcHdyKTtcbi1cdGlmIChyZXQgXHUwMDNjIDApXG4tXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwiRmFpbGVkIHRvIGRpc2FibGUgaW8gcHdyOiAlZFxcblwiLFxuLVx0XHRcdHJldCk7XG4rXHRpZiAocHJpdi1cdTAwM2VpZCA9PSBJRF9NVDc1MzApIHtcbitcdFx0cmV0ID0gcmVndWxhdG9yX2Rpc2FibGUocHJpdi1cdTAwM2Vjb3JlX3B3cik7XG4rXHRcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldixcbitcdFx0XHRcdFwiRmFpbGVkIHRvIGRpc2FibGUgY29yZSBwb3dlcjogJWRcXG5cIiwgcmV0KTtcbitcbitcdFx0cmV0ID0gcmVndWxhdG9yX2Rpc2FibGUocHJpdi1cdTAwM2Vpb19wd3IpO1xuK1x0XHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwiRmFpbGVkIHRvIGRpc2FibGUgaW8gcHdyOiAlZFxcblwiLFxuK1x0XHRcdFx0cmV0KTtcbitcdH1cbiBcbiBcdG10NzUzMF9yZW1vdmVfY29tbW9uKHByaXYpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuaW5kZXggM2U2MWViM2MyYjFlMi4uOTBmZDA0NjY1ZWJmMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG5AQCAtMzU5MywxMSArMzU5MywxMSBAQCBFWFBPUlRfU1lNQk9MX0dQTChtdDc1MzBfcHJvYmVfY29tbW9uKTtcbiB2b2lkXG4gbXQ3NTMwX3JlbW92ZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuIHtcbitcdGRzYV91bnJlZ2lzdGVyX3N3aXRjaChwcml2LVx1MDAzZWRzKTtcbitcbiBcdGlmIChwcml2LVx1MDAzZWlycV9kb21haW4pXG4gXHRcdG10NzUzMF9mcmVlX21kaW9faXJxKHByaXYpO1xuIFxuLVx0ZHNhX3VucmVnaXN0ZXJfc3dpdGNoKHByaXYtXHUwMDNlZHMpO1xuLVxuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZwcml2LVx1MDAzZXJlZ19tdXRleCk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKG10NzUzMF9yZW1vdmVfY29tbW9uKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIzOjEzOjUyLjQxNDQwNDcwNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjczODAzNjMzMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc1MzAgRHJpdmVyIFJlbW92YWwqKlxuXG5Pa2F5LCBzbyB0aGUgZGlmZiBJJ20gbG9va2luZyBhdCBpbnZvbHZlcyBjaGFuZ2VzIHRvIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY2AgYW5kIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNgLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYG10NzUzMF9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KWAgYW5kIGBtdDc1MzBfcmVtb3ZlX2NvbW1vbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiZG9lcyB0aGlzIGZhbGwgdW5kZXIgdGhlICdXb3J0aEZ1enppbmc9ZmFsc2UnIHJ1bGU/XCIgTGV0J3MgYnJlYWsgaXQgZG93bi5cblxuSSBuZWVkIHRvIHJlZmVyIHRvIHNlY3Rpb24gMiwgdGhlIFwiV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlXCIgcnVsZXMuIExldCdzIHNlZS4uLiB3ZSBoYXZlIHR3byBjYXRlZ29yaWVzIGhlcmU6IFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgYW5kIFwiVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzXCIuXG5cbkhtbSwgdGhlIGZpcnN0IG9uZSB0YWxrcyBhYm91dCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyB0aGF0IG5lZWQgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgbm90IGF2YWlsYWJsZSBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3Mgbm90IHNvdW5kaW5nIGxpa2UgYSBnb29kIGZpdC4gV2hhdCdzIE1UNzUzMCBhZ2Fpbj8gQWgsIHJpZ2h0LCBpdCdzIGEgTWVkaWFUZWsgRXRoZXJuZXQgc3dpdGNoIGNoaXAsIHR5cGljYWxseSB1c2VkIHdpdGggTURJTy9NTUlPIGJ1c2VzIG9uIE1lZGlhVGVrIEFSTS9NSVBTIFNvQ3Mgb3Igcm91dGVycy4gSSBkb24ndCAqdGhpbmsqIHRoYXQgZmFsbHMgaW50byB0aGlzIGNhdGVnb3J5LCBidXQgaXQncyB3b3J0aCBkb3VibGUtY2hlY2tpbmcuXG5cblRoZSBzZWNvbmQgY2F0ZWdvcnksIFwiVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzLFwiIGlzIGludGVyZXN0aW5nLiBTcGVjaWZpY2FsbHksIGl0IG1lbnRpb25zIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgbGlrZSBgLnJlbW92ZWAgYW5kIGAuc2h1dGRvd25gLCBvciBgcGNpX3VucmVnaXN0ZXJfZHJpdmVyYC4gVGhvc2UgYXJlIHRyaWdnZXJlZCBkdXJpbmcgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgdW5iaW5kaW5nLiBJcyB0aGF0IHdoYXQncyBoYXBwZW5pbmcgaGVyZT8gSXMgYG10NzUzMF9yZW1vdmVgIG9ubHkgY2FsbGVkIGluIHRoYXQgc3BlY2lmaWMgY2lyY3Vtc3RhbmNlPyBJIG5lZWQgbW9yZSBjb250ZXh0LlxuXG5TbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiZXR0ZXIuIEknbGwgbmVlZCB0byBpbnNwZWN0IGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY2AgYW5kIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNgIHRvIHNlZSBpZiBgbXQ3NTMwX3JlbW92ZWAgaXMgKm9ubHkqIGNhbGxlZCBpbiB0aG9zZSBzaXR1YXRpb25zLiBJJ2xsIHVzZSBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gY2hlY2sgdGhlIGNhbGwgc2l0ZXMgYW5kIHJlbGF0ZWQgY29udGV4dCB3aXRoaW4gdGhvc2UgZmlsZXMuIFRoYXQncyB0aGUgbmV4dCBzdGVwIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBzaG91bGQgYmUgbWFya2VkIGFzIGZ1enphYmxlIG9yIG5vdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM1NSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIzOjEzOjU5Ljc5NDc2OTgxN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NTMxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMjAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMjA6XFx0XFxuIDIyMTpcXHRzdGF0aWMgdm9pZFxcbiAyMjI6XFx0bXQ3NTMwX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuIDIyMzpcXHR7XFxuIDIyNDpcXHRcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldik7XFxuIDIyNTpcXHRcXHRpbnQgcmV0ID0gMCwgaTtcXG4gMjI2OlxcdFxcbiAyMjc6XFx0XFx0aWYgKCFwcml2KVxcbiAyMjg6XFx0XFx0XFx0cmV0dXJuO1xcbiAyMjk6XFx0XFxuIDIzMDpcXHRcXHRpZiAocHJpdi1cXHUwMDNlaWQgPT0gSURfTVQ3NTMwKSB7XFxuIDIzMTpcXHRcXHRcXHRyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShwcml2LVxcdTAwM2Vjb3JlX3B3cik7XFxuIDIzMjpcXHRcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gMjMzOlxcdFxcdFxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LFxcbiAyMzQ6XFx0XFx0XFx0XFx0XFx0XFxcIkZhaWxlZCB0byBkaXNhYmxlIGNvcmUgcG93ZXI6ICVkXFxcXG5cXFwiLCByZXQpO1xcbiAyMzU6XFx0XFxuIDIzNjpcXHRcXHRcXHRyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShwcml2LVxcdTAwM2Vpb19wd3IpO1xcbiAyMzc6XFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDIzODpcXHRcXHRcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byBkaXNhYmxlIGlvIHB3cjogJWRcXFxcblxcXCIsXFxuIDIzOTpcXHRcXHRcXHRcXHRcXHRyZXQpO1xcbiAyNDA6XFx0XFx0fVxcbiAyNDE6XFx0XFxuIDI0MjpcXHRcXHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihwcml2KTtcXG4gMjQzOlxcdFxcbiAyNDQ6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIDI7ICsraSlcXG4gMjQ1OlxcdFxcdFxcdG10a19wY3NfbHlueGlfZGVzdHJveShwcml2LVxcdTAwM2Vwb3J0c1s1ICsgaV0uc2dtaWlfcGNzKTtcXG4gMjQ2OlxcdH1cXG4gMjQ3OlxcdFxcbiAyNDg6XFx0c3RhdGljIHZvaWQgbXQ3NTMwX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4gMjQ5OlxcdHtcXG4gMjUwOlxcdFxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2KTtcXG4gMjUxOlxcdFxcbiAyNTI6XFx0XFx0aWYgKCFwcml2KVxcbiAyNTM6XFx0XFx0XFx0cmV0dXJuO1xcbiAyNTQ6XFx0XFxuIDI1NTpcXHRcXHRkc2Ffc3dpdGNoX3NodXRkb3duKHByaXYtXFx1MDAzZWRzKTtcXG4gMjU2OlxcdFxcbiAyNTc6XFx0XFx0ZGV2X3NldF9kcnZkYXRhKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYsIE5VTEwpO1xcbiAyNTg6XFx0fVxcbiAyNTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIzOjEzOjU5Ljc5NDk1ODk4N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjYyNjYzMTQ1NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gbXQ3NTMwLmM6IEV4YW1pbmluZyBMaW5lIDM1OTAqKlxuXG5Pa2F5LCBJJ20gdGhpbmtpbmcgSSBuZWVkIHRvIHplcm8gaW4gb24gYGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY2Ag4oCTIHRoYXQncyB3aGVyZSB0aGUgTWVkaWF0ZWsgTVQ3NTMwIHN3aXRjaCBkcml2ZXIgbGl2ZXMuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGZvY3VzIG15IGF0dGVudGlvbiBhcm91bmQgbGluZSAzNTkwLiBNeSBodW5jaCBpcyB0aGF0IHRoaXMgaXMgc29tZXdoZXJlIGFyb3VuZCB3aGVyZSB0aGUgY29kZSBoYW5kbGVzIFsqKlNwZWNpZmljIElzc3VlIGluIHRoZSB1c2VycyBmaWVsZCdzIGZpZWxkIG9mIGV4cGVydGlzZSoqXS4gSSBleHBlY3QgbGluZSAzNTkwIGFuZCBhZGphY2VudCBsaW5lcyB3aWxsIHJlbGF0ZSB0byBbKipFeHBlY3RlZCBjb2RlIGJlaGF2aW9yIGJhc2VkIG9uIHRoZSBpc3N1ZSoqXS4gSSBhbnRpY2lwYXRlIHRoZXJlIHdpbGwgYmUgc2V2ZXJhbCBsb2dpY2FsIGZsb3dzIHRoYXQgSSBuZWVkIHRvIGV2YWx1YXRlLiBJJ20gaG9waW5nIHRvIGRpc2NvdmVyIHRoZSByb290IGNhdXNlIG9mIHRoZSBpc3N1ZSBieSBldmFsdWF0aW5nIHRoZSByZWxldmFudCB2YXJpYWJsZXMgd2l0aCBhcHByb3ByaWF0ZSB0ZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODE4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMzoxNDowNi4wNjEyNzYzNzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTUzMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1ODAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM1ODA6XFx0XFx0cHJpdi1cXHUwMDNlZHMtXFx1MDAzZXByaXYgPSBwcml2O1xcbjM1ODE6XFx0XFx0cHJpdi1cXHUwMDNlZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZtdDc1MzBfc3dpdGNoX29wcztcXG4zNTgyOlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2bXQ3NTN4X3BoeWxpbmtfbWFjX29wcztcXG4zNTgzOlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19tdXRleCk7XFxuMzU4NDpcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2cHJpdi1cXHUwMDNlc3RhdHNfbG9jayk7XFxuMzU4NTpcXHRcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2cHJpdi1cXHUwMDNlc3RhdHNfd29yaywgbXQ3NTMwX3N0YXRzX3BvbGwpO1xcbjM1ODY6XFx0XFxuMzU4NzpcXHRcXHRkZXZfc2V0X2RydmRhdGEoZGV2LCBwcml2KTtcXG4zNTg4OlxcdFxcbjM1ODk6XFx0XFx0cmV0dXJuIDA7XFxuMzU5MDpcXHR9XFxuMzU5MTpcXHRFWFBPUlRfU1lNQk9MX0dQTChtdDc1MzBfcHJvYmVfY29tbW9uKTtcXG4zNTkyOlxcdFxcbjM1OTM6XFx0dm9pZFxcbjM1OTQ6XFx0bXQ3NTMwX3JlbW92ZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbjM1OTU6XFx0e1xcbjM1OTY6XFx0XFx0ZHNhX3VucmVnaXN0ZXJfc3dpdGNoKHByaXYtXFx1MDAzZWRzKTtcXG4zNTk3OlxcdFxcbjM1OTg6XFx0XFx0aWYgKHByaXYtXFx1MDAzZWlycV9kb21haW4pXFxuMzU5OTpcXHRcXHRcXHRtdDc1MzBfZnJlZV9tZGlvX2lycShwcml2KTtcXG4zNjAwOlxcdFxcbjM2MDE6XFx0XFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX211dGV4KTtcXG4zNjAyOlxcdH1cXG4zNjAzOlxcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzUzMF9yZW1vdmVfY29tbW9uKTtcXG4zNjA0OlxcdFxcbjM2MDU6XFx0TU9EVUxFX0FVVEhPUihcXFwiU2VhbiBXYW5nIFxcdTAwM2NzZWFuLndhbmdAbWVkaWF0ZWsuY29tXFx1MDAzZVxcXCIpO1xcbjM2MDY6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJEcml2ZXIgZm9yIE1lZGlhdGVrIE1UNzUzMCBTd2l0Y2hcXFwiKTtcXG4zNjA3OlxcdE1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjM6MTQ6MDYuMDYxNDMzOTI5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NjA0ODQ1MDg2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlbW92YWwgRnVuY3Rpb25zKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIGNvZGUuIEknbSBmb2N1c2luZyBvbiB0aGUgY2xlYW51cCBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgdGhlIHJlbW92YWwgb2YgdGhlIE1UNzUzMCBkZXZpY2UuIEkndmUgZ290IHR3byBmdW5jdGlvbnMgaGlnaGxpZ2h0ZWQ6IGBtdDc1MzBfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilgIGFuZCBgbXQ3NTMwX3JlbW92ZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZW0uIEl0IHNlZW1zIGxpa2UgYG10NzUzMF9yZW1vdmVfY29tbW9uYCBsaWtlbHkgY29udGFpbnMgdGhlIGNvcmUgbG9naWMgZm9yIHRoZSBkZXZpY2UncyByZW1vdmFsLCB3aGlsZSBgbXQ3NTMwX3JlbW92ZWAgbWlnaHQgYmUgYSBoaWdoZXItbGV2ZWwgd3JhcHBlciBoYW5kbGluZyBzb21lIHByZWxpbWluYXJ5IHN0ZXBzLCBwZXJoYXBzIE1ESU8tc3BlY2lmaWMuXG5cblRoZSBjcnVjaWFsIHF1ZXN0aW9uIG5vdyBpcywgXCJXaGF0IGNhbGxzIGBtdDc1MzBfcmVtb3ZlX2NvbW1vbmA/XCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIHRvIG1ha2Ugc3VyZSB0aGlzIHJlbW92YWwgaXMgY2xlYW4gYW5kIGNvbXBsZXRlLiBJJ2xsIGZpcmUgdXAgZ3JlcHBlciByaWdodCBhd2F5LiBBIGNyb3NzLXJlZmVyZW5jZSBzZWFyY2ggaXMgZXNzZW50aWFsIGhlcmUuIEkgbmVlZCB0byBiZSAxMDAlIHN1cmUgSSdtIGNhdGNoaW5nIGFsbCB0aGUgY2FsbGVycyBvZiBgbXQ3NTMwX3JlbW92ZV9jb21tb25gLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgYWxsIGluc3RhbmNlcyBvZiBpdCBpbiB0aGUgY29kZSBiYXNlLCB0byBtYWtlIHN1cmUgSSBnZXQgdGhlIHdob2xlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NDIsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIzOjE0OjEyLjEwOTg4NjkyNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTgyMTkyNjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzUzMF9yZW1vdmVfY29tbW9uXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTIyMj1tdDc1MzBfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI0MS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDI6XFx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjQzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9Njc9c3RhdGljIHZvaWQgbXQ3OTg4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzEtXFx0aWYgKHByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6NzI6XFx0XFx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzMtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTM1OTM9dm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNTk0Om10NzUzMF9yZW1vdmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzU5NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzYwMi19XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM2MDM6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NTMwX3JlbW92ZV9jb21tb24pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNjA0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5oPTk0OD1pbnQgbXQ3NTMwX3Byb2JlX2NvbW1vbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaDo5NDk6dm9pZCBtdDc1MzBfcmVtb3ZlX2NvbW1vbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaC05NTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIzOjE0OjEzLjY5MjA4ODE5MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjYzNDgwMTY3NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTVQ3NTMwIENvZGUgQ2hhbmdlcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEknbSBsb29raW5nIGF0IHRoZSBjYWxsIHNpdGVzIG9mIGBtdDc1MzBfcmVtb3ZlX2NvbW1vbmAuIEkgc2VlIHRoYXQgaXQncyBvbmx5IGNhbGxlZCBmcm9tIGBtdDc1MzBfcmVtb3ZlYCBhbmQgYG10Nzk4OF9yZW1vdmVgLCBib3RoIHdpdGhpbiB0aGUgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBkcml2ZXIgY29udGV4dCBmb3IgdGhlIE1UNzUzMCBmYW1pbHkgb2Ygc3dpdGNoIGhhcmR3YXJlLiBUaGVzZSBhcmUgKnRlYXJkb3duKiBmdW5jdGlvbnMg4oCTIHRoZSBkcml2ZXIgcmVtb3ZhbCBjYWxsYmFja3MuIFRoYXQncyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZy5cblxuTm93LCBJJ20gcmVjYWxsaW5nIHRoZSBrZXkgcG9pbnRzOiB0aGUgTVQ3NTMwIGlzIGEgKnBoeXNpY2FsKiBFdGhlcm5ldCBzd2l0Y2gsIHBhcnQgb2YgdGhlIE1lZGlhVGVrIE1UNzUzMC9NVDc1MzEvTVQ3OTg4IGZhbWlseS4gSXQncyBjb25uZWN0ZWQgdmlhIGVpdGhlciBhbiBNRElPIGJ1cyBvciBNTUlPLCBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLiBDcml0aWNhbGx5LCBpdCAqaXNuJ3QqIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQncyBhIG1ham9yIGZhY3Rvci5cblxuQ29uc2lkZXJpbmcgdGhlIFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZVwiIGNyaXRlcmlhIG91dGxpbmVkIGluIFNlY3Rpb24gMiwgdGhlIHNpdHVhdGlvbiBoZXJlIHNlZW1zIHRvIGZhbGwgbmVhdGx5IGludG8gYm90aCBleGNsdXNpb24gY2F0ZWdvcmllcy5cblxuMS4gICoqU3RydWN0dXJhbGx5IFVucmVhY2hhYmxlIEhhcmR3YXJlOioqIFRoaXMgaGFyZHdhcmUsIHRoZSBNVDc1MzAsIHJlcXVpcmVzIGEgcGh5c2ljYWwgQVNJQy9ib2FyZCwgYW5kIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4yLiAgKipVbnJlYWNoYWJsZSBFeGVjdXRpb24gUGF0aHM6KiogQWxsIHRoZSBtb2RpZmljYXRpb25zIGFyZSBjb25maW5lZCB0byBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChgLnJlbW92ZWAgZnVuY3Rpb25zKS4gVGhlc2UgY2FsbGJhY2tzIGFyZSBvbmx5IGV4ZWN1dGVkIGR1cmluZyAqZXhwbGljaXQqIGRyaXZlciB1bmJpbmRpbmcgKHZpYSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBpbnRlcnZlbnRpb24pLiBUaGVyZSdzIG5vIHNjZW5hcmlvIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyB3b3VsZCBiZSBleGVjdXRlZCBkdXJpbmcgYSBub3JtYWwgb3BlcmF0aW9uIG9mIFFFTVUuXG5cbkdpdmVuIHRoaXMsIEkgaGF2ZSBhIGhpZ2ggZGVncmVlIG9mIGNvbmZpZGVuY2UgdGhhdCB0aGUgbW9kaWZpZWQgY29kZSAqaXNuJ3QqIGEgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBJdCdzIHVucmVhY2hhYmxlIHdpdGhpbiB0aGUgdGFyZ2V0IGZ1enppbmcgZW52aXJvbm1lbnQuIFRoZSB0ZWFyZG93biBmdW5jdGlvbnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSByZW1vdmFsLiBJIHdpbGwgZXhhbWluZSB0aGUgS2NvbmZpZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ3MSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMzoxNDoyMC4wNDAxMjQxM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2NDI4NTc5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0RTQV9NVDc1MzBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL0tjb25maWc9Mjk9c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzE6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDItXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDM6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01ESU9cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00NC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTUzLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjU0OmNvbmZpZyBORVRfRFNBX01UNzUzMF9NTUlPXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTUtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBNTUlPIGludGVyZmFjZSBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIzOjE0OjIxLjcwNDQxNjg1MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxODMyNTA4ODg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBEaXZlIGZvciBEU0EgRGV0YWlscyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBhYm91dCB0aGUgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBkcml2ZXIgY29uZmlndXJhdGlvbi4gTXkgZmlyc3Qgc3RlcCBpcyB0byBkaWcgaW50byB0aGUgYEtjb25maWdgIGZpbGUgaW4gdGhlIGBkcml2ZXJzL25ldC9kc2FgIGRpcmVjdG9yeS4gVGhhdCdzIHRoZSBnby10byBwbGFjZSBmb3IgYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGhlbHAgdGV4dCByZWxhdGVkIHRvIHRoaXMgc3BlY2lmaWMgc3Vic3lzdGVtLiBUaGlzIGlzIHdoZXJlIEknbGwgZmluZCB0aGUgbWFjcm9zIGFuZCBzZXR0aW5ncyB0aGF0IGNvbnRyb2wgd2hpY2ggZmVhdHVyZXMgYXJlIGNvbXBpbGVkIGFuZCBsaW5rZWQgaW50byB0aGUga2VybmVsLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOiB0aGUgcmVsZXZhbnQgYENPTkZJR19gIG9wdGlvbnMsIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgZHJpdmVycyBvciBmZWF0dXJlcywgYW5kIG9mIGNvdXJzZSwgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbnRleHQgYmVoaW5kIGVhY2ggY29uZmlndXJhYmxlIG9wdGlvbiByZWxhdGVkIHRvIHRoZSBEU0EgZHJpdmVyIGl0c2VsZi4gSXQncyB0aW1lIHRvIGdldCBhIGdvb2QgaGFuZGxlIG9uIGhvdyB0aGlzIHRoaW5nIGNhbiBiZSBzZXQgdXAhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4MDIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNFQyMzoxNDoyMy41MzY5Mjg0NzdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzAsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzA6XFx0XFxuICAzMTpcXHRjb25maWcgTkVUX0RTQV9NVDc1MzBcXG4gIDMyOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4gIDMzOlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19NVEtcXG4gIDM0OlxcdFxcdHNlbGVjdCBSRUdNQVBfSVJRXFxuICAzNTpcXHRcXHRpbXBseSBORVRfRFNBX01UNzUzMF9NRElPXFxuICAzNjpcXHRcXHRpbXBseSBORVRfRFNBX01UNzUzMF9NTUlPXFxuICAzNzpcXHRcXHRoZWxwXFxuICAzODpcXHRcXHQgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgTWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgRXRoZXJuZXRcXG4gIDM5OlxcdFxcdCAgc3dpdGNoIGNoaXBzLiBNdWx0aS1jaGlwIG1vZHVsZSBNVDc1MzAgaW4gTVQ3NjIxQVQsIE1UNzYyMURBVCxcXG4gIDQwOlxcdFxcdCAgTVQ3NjIxU1QgYW5kIE1UNzYyM0FJIFNvQ3MsIGFuZCBidWlsdC1pbiBzd2l0Y2ggaW4gTVQ3OTg4IFNvQyBhcmVcXG4gIDQxOlxcdFxcdCAgc3VwcG9ydGVkIGFzIHdlbGwuXFxuICA0MjpcXHRcXG4gIDQzOlxcdGNvbmZpZyBORVRfRFNBX01UNzUzMF9NRElPXFxuICA0NDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG4gIDQ1OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NVDc1MzBcXG4gIDQ2OlxcdFxcdHNlbGVjdCBNRURJQVRFS19HRV9QSFlcXG4gIDQ3OlxcdFxcdHNlbGVjdCBQQ1NfTVRLX0xZTlhJXFxuICA0ODpcXHRcXHRoZWxwXFxuICA0OTpcXHRcXHQgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgTWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgc3dpdGNoXFxuICA1MDpcXHRcXHQgIGNoaXBzIHdoaWNoIGFyZSBjb25uZWN0ZWQgdmlhIE1ESU8sIGFzIHdlbGwgYXMgbXVsdGktY2hpcFxcbiAgNTE6XFx0XFx0ICBtb2R1bGUgTVQ3NTMwIHdoaWNoIGNhbiBiZSBmb3VuZCBpbiB0aGUgTVQ3NjIxQVQsIE1UNzYyMURBVCxcXG4gIDUyOlxcdFxcdCAgTVQ3NjIxU1QgYW5kIE1UNzYyM0FJIFNvQ3MuXFxuICA1MzpcXHRcXG4gIDU0OlxcdGNvbmZpZyBORVRfRFNBX01UNzUzMF9NTUlPXFxuICA1NTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1NSU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG4gIDU2OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NVDc1MzBcXG4gIDU3OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuICA1ODpcXHRcXHRpbXBseSBNRURJQVRFS19HRV9TT0NfUEhZXFxuICA1OTpcXHRcXHRoZWxwXFxuICA2MDpcXHRcXHQgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgYnVpbHQtaW4gRXRoZXJuZXQgc3dpdGNoIGZvdW5kXFxuICA2MTpcXHRcXHQgIGluIHRoZSBNZWRpYVRlayBNVDc5ODggU29DLlxcbiAgNjI6XFx0XFx0ICBUaGUgc3dpdGNoIGlzIGEgc2ltaWxhciBkZXNpZ24gYXMgTVQ3NTMxLCBidXQgdGhlIHN3aXRjaCByZWdpc3RlcnNcXG4gIDYzOlxcdFxcdCAgYXJlIGRpcmVjdGx5IG1hcHBlZCBpbnRvIHRoZSBTb0NzIHJlZ2lzdGVyIHNwYWNlIHJhdGhlciB0aGFuIGJlaW5nXFxuICA2NDpcXHRcXHQgIGFjY2Vzc2libGUgdmlhIE1ESU8uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE0VDIzOjE0OjIzLjUzNjk5Mzk5N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxMDkzMDc5MTU1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFRoaXMgUGF0Y2gncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHRoaXMgaXMgc3RyYWlnaHRmb3J3YXJkLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYG10NzUzMF9yZW1vdmVgIGFuZCBgbXQ3NTMwX3JlbW92ZV9jb21tb25gLCB3aGljaCBhcmUgZXNzZW50aWFsbHkgdGVhcmRvd24gcm91dGluZXMgZm9yIHRoZSBNVDc1MzAsIE1UNzUzMSwgYW5kIE1UNzk4OCBFdGhlcm5ldCBzd2l0Y2ggY2hpcHMg4oCTIHNwZWNpZmljIGhhcmR3YXJlIHRoYXQncyAqbm90KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBzZXR1cHMgbGlrZSBRRU1VIG9yIEdDRS5cblxuVGhlIGtleSBoZXJlIGlzIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzLiBGcm9tIG15IGV4cGVyaWVuY2UgYW5kIHVuZGVyc3RhbmRpbmcsIGRyaXZlciB0ZWFyZG93biBjb2RlLCBwYXJ0aWN1bGFybHkgYC5yZW1vdmVgIGZ1bmN0aW9ucywgaXMganVzdCBub3QgZ29pbmcgdG8gYmUgcmVhY2hlZCBkdXJpbmcgc3l6a2FsbGVyIGZ1enppbmcuIEl0J3Mgc2ltcGx5IGFuIHVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoIHVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzIGZvciB0aGlzIHR5cGUgb2YgdGVzdGluZy5cblxuVGhlcmVmb3JlLCBubywgdGhpcyBpcyBub3QgYSBjYW5kaWRhdGUgZm9yIGZ1cnRoZXIgZnV6emluZy5cblxuSSdtIHNldHRpbmc6XG5cbiogICBgV29ydGhGdXp6aW5nOiBmYWxzZWBcbiogICBgRW5hYmxlQ29uZmlnczogW11gIChubyBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkIGhlcmUpXG4qICAgYEZvY3VzU3ltYm9sczogW11gIChubyBzcGVjaWZpYyBzeW1ib2xzIG5lZWQgdG8gYmUgdGFyZ2V0ZWQpXG5cbkFuZCB0aGUgcmVhc29uaW5nIGlzOiBUaGlzIHBhdGNoIG1vZGlmaWVzIGRyaXZlciB0ZWFyZG93biBmdW5jdGlvbnMgKGBtdDc1MzBfcmVtb3ZlYCBhbmQgYG10NzUzMF9yZW1vdmVfY29tbW9uYCkgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAgRXRoZXJuZXQgc3dpdGNoIGRyaXZlci4gVGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBiZWNhdXNlIGl0IHRhcmdldHMgcGh5c2ljYWwgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgYW5kIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBkcml2ZXIgdGVhcmRvd24vcmVtb3ZlIGNhbGxiYWNrcy5cblxuVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2NzUsIk91dHB1dFRva2VucyI6MTE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjM6MTQ6MzQuNDY3NzkxOTQ5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVyIHRlYXJkb3duIGZ1bmN0aW9ucyAobXQ3NTMwX3JlbW92ZSBhbmQgbXQ3NTMwX3JlbW92ZV9jb21tb24pIGZvciB0aGUgTWVkaWFUZWsgTVQ3NTMwL01UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggRFNBIGRyaXZlci4gVGhpcyBjb2RlIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgYW5kIGRyaXZlciByZW1vdmUvdGVhcmRvd24gcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZHJpdmVyIHRlYXJkb3duIGZ1bmN0aW9ucyAobXQ3NTMwX3JlbW92ZSBhbmQgbXQ3NTMwX3JlbW92ZV9jb21tb24pIGZvciB0aGUgTWVkaWFUZWsgTVQ3NTMwL01UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggRFNBIGRyaXZlci4gVGhpcyBjb2RlIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgYW5kIGRyaXZlciByZW1vdmUvdGVhcmRvd24gcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTRUMjM6MTQ6MzQuNDY3ODE0OTM4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtr5c6[1] Phase: Running StartedAt: 2026-09-14 23:14:45 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtr5c6[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-14 23:14:45 +0000 UTC FinishedAt: 2026-09-14 23:14:50 +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,}