Name: series-workflowg5gt9 Phase: Failed StartedAt: 2026-09-01 23:41:12 +0000 UTC FinishedAt: 2026-09-02 01:21:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg5gt9[0] Phase: Succeeded StartedAt: 2026-09-01 23:41:12 +0000 UTC FinishedAt: 2026-09-02 01:21:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg5gt9[0].run-triage Phase: Succeeded StartedAt: 2026-09-01 23:41:12 +0000 UTC FinishedAt: 2026-09-02 01:21:19 +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+CgkJCTx0ZD4yMDI2LzA5LzAyIDAxOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhIHJlZHVuZGFudCBtZW1zZXQoKSBhZnRlciB2emFsbG9jKCkgaW4gdGhlIE1hcnZlbGwgT2N0ZW9uIFBDSSBFbmRwb2ludCBOSUMgZHJpdmVyIChvY3Rlb25fZXApLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIE9jdGVvbiBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSwgYW5kIHRoZSBjaGFuZ2UgaXMgYSBub24tZnVuY3Rpb25hbCBjbGVhbnVwLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMToyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ5MGE2NzExMWJkOTgzMDY5ZThjNzgxNWFiNTIzMzMzOTUxZGE5ODZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCAyIDAxOjIwOjUwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL29jdGVwX3BmdmZfbWJveC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvb2N0ZXBfcGZ2Zl9tYm94LmNcbmluZGV4IDA4NjdmYWI2MWIxOTAuLmU0MTc1ZDViZGIzYmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9vY3RlcF9wZnZmX21ib3guY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvb2N0ZXBfcGZ2Zl9tYm94LmNcbkBAIC0yNzQsNyAmIzQzOzI3NCw2IEBAIGludCBvY3RlcF9zZXR1cF9wZnZmX21ib3goc3RydWN0IG9jdGVwX2RldmljZSAqb2N0KVxuIFx0XHRpZiAoIW9jdC1cdTAwM2VtYm94W3JpbmddKVxuIFx0XHRcdGdvdG8gZnJlZV9tYm94O1xuIFxuLVx0XHRtZW1zZXQob2N0LVx1MDAzZW1ib3hbcmluZ10sIDAsIHNpemVvZihzdHJ1Y3Qgb2N0ZXBfbWJveCkpO1xuIFx0XHRtZW1zZXQoXHUwMDI2b2N0LVx1MDAzZXZmX2luZm9baV0sIDAsIHNpemVvZihzdHJ1Y3Qgb2N0ZXBfcGZ2Zl9pbmZvKSk7XG4gXHRcdG11dGV4X2luaXQoXHUwMDI2b2N0LVx1MDAzZW1ib3hbcmluZ10tXHUwMDNlbG9jayk7XG4gXHRcdElOSVRfV09SSyhcdTAwMjZvY3QtXHUwMDNlbWJveFtyaW5nXS1cdTAwM2V3ay53b3JrLCBvY3RlcF9wZnZmX21ib3hfd29yayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MjA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhIHJlZHVuZGFudCBtZW1zZXQoKSBhZnRlciB2emFsbG9jKCkgaW4gdGhlIE1hcnZlbGwgT2N0ZW9uIFBDSSBFbmRwb2ludCBOSUMgZHJpdmVyIChvY3Rlb25fZXApLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIE9jdGVvbiBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSwgYW5kIHRoZSBjaGFuZ2UgaXMgYSBub24tZnVuY3Rpb25hbCBjbGVhbnVwLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQ5MGE2NzExMWJkOTgzMDY5ZThjNzgxNWFiNTIzMzMzOTUxZGE5ODYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCAyIDAxOjIwOjUwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvb2N0ZXBfcGZ2Zl9tYm94LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9vY3RlcF9wZnZmX21ib3guYwppbmRleCAwODY3ZmFiNjFiMTkwLi5lNDE3NWQ1YmRiM2JiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9vY3RlcF9wZnZmX21ib3guYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9vY3RlcF9wZnZmX21ib3guYwpAQCAtMjc0LDcgJiM0MzsyNzQsNiBAQCBpbnQgb2N0ZXBfc2V0dXBfcGZ2Zl9tYm94KHN0cnVjdCBvY3RlcF9kZXZpY2UgKm9jdCkKIAkJaWYgKCFvY3QtJmd0O21ib3hbcmluZ10pCiAJCQlnb3RvIGZyZWVfbWJveDsKIAotCQltZW1zZXQob2N0LSZndDttYm94W3JpbmddLCAwLCBzaXplb2Yoc3RydWN0IG9jdGVwX21ib3gpKTsKIAkJbWVtc2V0KCZhbXA7b2N0LSZndDt2Zl9pbmZvW2ldLCAwLCBzaXplb2Yoc3RydWN0IG9jdGVwX3BmdmZfaW5mbykpOwogCQltdXRleF9pbml0KCZhbXA7b2N0LSZndDttYm94W3JpbmddLSZndDtsb2NrKTsKIAkJSU5JVF9XT1JLKCZhbXA7b2N0LSZndDttYm94W3JpbmddLSZndDt3ay53b3JrLCBvY3RlcF9wZnZmX21ib3hfd29yayk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAxOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNjMKCQkJCQkJCW91dHB1dDogNTMKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBjb21taXQsIGxldCYjMzk7cyBicmVhayBpdCBkb3duOgoKKipBbmFseXppbmcgYSBLZXJuZWwgQ29tbWl0KioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIGNvbW1pdCYjMzk7cyBnb3QgbXkgYXR0ZW50aW9uLCBzcGVjaWZpY2FsbHkgYmVjYXVzZSBpdCYjMzk7cyBtZXNzaW5nIHdpdGggYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL29jdGVwX3BmdmZfbWJveC5jYC4gTXkgZmlyc3QgbW92ZT8gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGdldCBhIHNlbnNlIG9mIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aGluIHRoYXQgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmUuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGBLY29uZmlnYCBvcHRpb25zIOKAkyBzZWUgd2hhdCBoYXJkd2FyZSBkZXBlbmRlbmNpZXMsIGlmIGFueSwgYXJlIGluIHBsYXkgaGVyZSDigJMgYW5kIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHB1cnBvc2Ugb2YgdGhhdCBjb2RlLgoKQWZ0ZXIgdGhpcyBpbml0aWFsIGFzc2Vzc21lbnQsIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoZSBgb2N0ZW9uX2VwYCBkcml2ZXIgKmlzKi4gSSBjYW4gdXNlIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCBjb21tYW5kcyB0byBnYXRoZXIgY29udGV4dCBhYm91dCB0aGUgZHJpdmVyLiBXaXRoIHRoYXQgaW4gaGFuZCwgSSBjYW4gZm9ybSBhIHNvbGlkIG9waW5pb24gb24gdGhlIGludGVudCBhbmQgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAxOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvb2N0ZXBfcGZ2Zl9tYm94LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI2MDpcdH1cbiAyNjE6XHRcbiAyNjI6XHRpbnQgb2N0ZXBfc2V0dXBfcGZ2Zl9tYm94KHN0cnVjdCBvY3RlcF9kZXZpY2UgKm9jdClcbiAyNjM6XHR7XG4gMjY0Olx0XHRpbnQgaSA9IDAsIG51bV92ZnMgPSAwLCByaW5nc19wZXJfdmYgPSAwO1xuIDI2NTpcdFx0aW50IHJpbmcgPSAwO1xuIDI2NjpcdFxuIDI2NzpcdFx0bnVtX3ZmcyA9IG9jdC1cdTAwM2Vjb25mLVx1MDAzZXNyaW92X2NmZy5hY3RpdmVfdmZzO1xuIDI2ODpcdFx0cmluZ3NfcGVyX3ZmID0gb2N0LVx1MDAzZWNvbmYtXHUwMDNlc3Jpb3ZfY2ZnLm1heF9yaW5nc19wZXJfdmY7XG4gMjY5Olx0XG4gMjcwOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBudW1fdmZzOyBpJiM0MzsmIzQzOykge1xuIDI3MTpcdFx0XHRyaW5nICA9IHJpbmdzX3Blcl92ZiAqIGk7XG4gMjcyOlx0XHRcdG9jdC1cdTAwM2VtYm94W3JpbmddID0gdnphbGxvYyhzaXplb2YoKm9jdC1cdTAwM2VtYm94W3JpbmddKSk7XG4gMjczOlx0XG4gMjc0Olx0XHRcdGlmICghb2N0LVx1MDAzZW1ib3hbcmluZ10pXG4gMjc1Olx0XHRcdFx0Z290byBmcmVlX21ib3g7XG4gMjc2Olx0XG4gMjc3Olx0XHRcdG1lbXNldChcdTAwMjZvY3QtXHUwMDNldmZfaW5mb1tpXSwgMCwgc2l6ZW9mKHN0cnVjdCBvY3RlcF9wZnZmX2luZm8pKTtcbiAyNzg6XHRcdFx0bXV0ZXhfaW5pdChcdTAwMjZvY3QtXHUwMDNlbWJveFtyaW5nXS1cdTAwM2Vsb2NrKTtcbiAyNzk6XHRcdFx0SU5JVF9XT1JLKFx1MDAyNm9jdC1cdTAwM2VtYm94W3JpbmddLVx1MDAzZXdrLndvcmssIG9jdGVwX3BmdmZfbWJveF93b3JrKTtcbiAyODA6XHRcdFx0b2N0LVx1MDAzZW1ib3hbcmluZ10tXHUwMDNld2suY3R4cHRyID0gb2N0LVx1MDAzZW1ib3hbcmluZ107XG4gMjgxOlx0XHRcdG9jdC1cdTAwM2VtYm94W3JpbmddLVx1MDAzZW9jdCA9IG9jdDtcbiAyODI6XHRcdFx0b2N0LVx1MDAzZW1ib3hbcmluZ10tXHUwMDNldmZfaWQgPSBpO1xuIDI4MzpcdFx0XHRvY3QtXHUwMDNlaHdfb3BzLnNldHVwX21ib3hfcmVncyhvY3QsIHJpbmcpO1xuIDI4NDpcdFx0fVxuIDI4NTpcdFx0cmV0dXJuIDA7XG4gMjg2Olx0XG4gMjg3Olx0ZnJlZV9tYm94OlxuIDI4ODpcdFx0d2hpbGUgKGkpIHtcbiAyODk6XHRcdFx0aS0tO1xuIDI5MDpcdFx0XHRyaW5nICA9IHJpbmdzX3Blcl92ZiAqIGk7XG4gMjkxOlx0XHRcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2b2N0LVx1MDAzZW1ib3hbcmluZ10tXHUwMDNld2sud29yayk7XG4gMjkyOlx0XHRcdG11dGV4X2Rlc3Ryb3koXHUwMDI2b2N0LVx1MDAzZW1ib3hbcmluZ10tXHUwMDNlbG9jayk7XG4gMjkzOlx0XHRcdHZmcmVlKG9jdC1cdTAwM2VtYm94W3JpbmddKTtcbiAyOTQ6XHRcdFx0b2N0LVx1MDAzZW1ib3hbcmluZ10gPSBOVUxMO1xuIDI5NTpcdFx0fVxuIDI5NjpcdFx0cmV0dXJuIC1FTk9NRU07XG4gMjk3Olx0fVxuIDI5ODpcdFxuIDI5OTpcdHZvaWQgb2N0ZXBfZGVsZXRlX3BmdmZfbWJveChzdHJ1Y3Qgb2N0ZXBfZGV2aWNlICpvY3QpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE3NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipLY29uZmlnIERpdmUgZm9yIGBvY3Rlb25fZXBgKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzLiBUaGUgdGVybSBgb2N0ZW9uX2VwYCBzdWdnZXN0cyBzb21ldGhpbmcgc3BlY2lmaWMgdG8gdGhlIE9jdGVvbiBwbGF0Zm9ybSYjMzk7cyBFdGhlcm5ldCBwcm90b2NvbC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBpcyBhIGxpa2VseSBjYW5kaWRhdGUgZm9yIGEgbmV0d29yayBpbnRlcmZhY2UgZHJpdmVyLCBvciBhdCBsZWFzdCBhIHJlbGF0ZWQgZmVhdHVyZS4gSSYjMzk7bGwgbmVlZCB0byBsb2NhdGUgdGhlIHJlbGV2YW50IEtjb25maWcgZnJhZ21lbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBvcHRpb24gaXMgY29uZmlndXJlZCwgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzLCBhbmQgd2hhdCBpdCBlbmFibGVzIG9yIGRpc2FibGVzLiBJJiMzOTtsbCBhbHNvIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggYG9jdGVvbl9lcGAsIGFuZCB0aGUgZGVmYXVsdHMuIFdoYXQgb3RoZXIgcmVsYXRlZCBvcHRpb25zIGFyZSB0aGVyZT8gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGBvY3Rlb25fZXBgIGlzIHVzZWQgaW4gdGhlIGJyb2FkZXIgc3lzdGVtIGFuZCBob3cgaXQgaW50ZXJmYWNlcyB3aXRoIG90aGVyIGNvbXBvbmVudHMuIFRpbWUgdG8gZGlnIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAxOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O09DVEVPTl9FUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL0tjb25maWc6Njpjb25maWcgT0NURU9OX0VQXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvbiBQQ0kgRW5kcG9pbnQgTklDIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19PQ1RFT05fRVApICYjNDM7PSBvY3Rlb25fZXAub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvTWFrZWZpbGUtNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcF92Zi9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcF92Zi9LY29uZmlnOjY6Y29uZmlnIE9DVEVPTl9FUF9WRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXBfdmYvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb24gUENJIEVuZHBvaW50IE5JQyBWRiBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcF92Zi9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXBfdmYvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfT0NURU9OX0VQX1ZGKSAmIzQzOz0gb2N0ZW9uX2VwX3ZmLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwX3ZmL01ha2VmaWxlLTctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc5MAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktjb25maWcgRGl2ZSBmb3IgT2N0ZW9uIEV0aGVybmV0KioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGdyYW51bGFyLiBNeSBpbnN0aW5jdCBpcyB0ZWxsaW5nIG1lIHRvIHplcm8gaW4gb24gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL0tjb25maWdgLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCB0aGUgT2N0ZW9uIEV0aGVybmV0IGRyaXZlciwgc28gdGhlIEtjb25maWcgZmlsZSBpcyB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCB1bHRpbWF0ZWx5IHRoZSBidWlsZCBwcm9jZXNzIGFyZSBkZWZpbmVkLiBUaGlzIGlzIHRoZSBiZWRyb2NrOyBpdCYjMzk7cyB3aGVyZSB0aGUgYXJjaGl0ZWN0dXJhbCBwaWVjZXMgb2YgdGhpcyBzcGVjaWZpYyBkcml2ZXIgYXJlIHRpZWQgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHNlZSB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlIOKAkyBhcmUgdGhlcmUgZGVidWcgZmxhZ3MsIGhhcmR3YXJlIG9mZmxvYWQgc2V0dGluZ3MsIGZsb3cgY29udHJvbCBvcHRpb25zLCBNQUMgYWRkcmVzcyBmaWx0ZXJpbmcgZXRjLj8gQXJlIHRoZXJlIGRlcGVuZGVuY2llcyBvbiBzcGVjaWZpYyBPY3Rlb24gU29DIHJldmlzaW9ucyBvciBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcz8gSXMgaXQgYSBtb2R1bGFyIGRyaXZlcj8gSG93IGlzIGl0IGludGVncmF0ZWQsIGFuZCBhcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJsb2NrcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IFRoaXMgS2NvbmZpZyB3aWxsIGV4cG9zZSB0aGUgY29udHJvbCBwb2ludHMgYW5kIGhvdyB0aGlzIGNvZGUgYmFzZSBpcyBhc3NlbWJsZWQuIExldCYjMzk7cyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTWFydmVsbCYjMzk7cyBPY3Rlb24gUENJIEVuZHBvaW50IE5JQyBEcml2ZXIgQ29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgT0NURU9OX0VQXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvbiBQQ0kgRW5kcG9pbnQgTklDIERyaXZlclwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiA2NEJJVFxuICAgOTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMTA6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgMTE6XHRcdGhlbHBcbiAgMTI6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgbmV0d29ya2luZyBmdW5jdGlvbmFsaXR5IG9mIE1hcnZlbGwmIzM5O3NcbiAgMTM6XHRcdCAgT2N0ZW9uIFBDSSBFbmRwb2ludCBOSUMuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIFRvIGtub3cgdGhlIGxpc3Qgb2YgZGV2aWNlcyBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIsIHJlZmVyXG4gIDE2Olx0XHQgIGRvY3VtZW50YXRpb24gaW5cbiAgMTc6XHRcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAucnN0XHUwMDNlLlxuICAxODpcdFxuICAxOTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVycyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gTmFtZSBvZiB0aGVcbiAgMjA6XHRcdCAgbW9kdWxlIGlzIG9jdGVvbl9lcC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzU4CgkJCQkJCQlvdXRwdXQ6IDk3CgkJCQkJCQl0aG91Z2h0czogNDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSBjcml0ZXJpYSBmcm9tIHRoZSBwcm9tcHQuIEl0IGxvb2tzIGxpa2UgSSBuZWVkIHRvIG1hcmsgdGhpcyBwYXRjaCBhcyBub24tZnV6emFibGUgaWYgaXQgZmFsbHMgaW50byBjZXJ0YWluIGNhdGVnb3JpZXMuIFRoZSBrZXkgaGVyZSBpcyB0aGUgc3BlY2lmaWMgY29uZGl0aW9ucyBvdXRsaW5lZCwgd2hpY2ggc2VlbSBwcmV0dHkgY2xlYXIuCgpUaGUgZmlyc3QgdGhpbmcgSSBzZWUgaXMgdGhhdCB0aGlzIHBhdGNoIHRhcmdldHMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJIE5JQyBkcml2ZXI6IHRoZSBNYXJ2ZWxsIE9jdGVvbiBQQ0kgRW5kcG9pbnQgTklDIERyaXZlciAoYE9DVEVPTl9FUGApLiBBbHJpZ2h0LCBiYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nLCB0aGlzIGRyaXZlciByZXF1aXJlcyBhY3R1YWwgTWFydmVsbCBPY3Rlb24gUENJIGhhcmR3YXJlLCB3aGljaCBpcyAqbm90KiBlbXVsYXRlZCBieSBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhhdCBzZWVtcyBsaWtlIGEgc3Ryb25nIGluZGljYXRvciBvZiBub24tZnV6emFiaWxpdHkgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGd1aWRlbGluZXMuCgpGdXJ0aGVybW9yZSwgZGlnZ2luZyBkZWVwZXIgaW50byB0aGUgcGF0Y2gsIGl0IHNlZW1zIHRoZSBjaGFuZ2UgaXMgcmVtb3ZpbmcgYSByZWR1bmRhbnQgYG1lbXNldCgpYCBjYWxsIGFmdGVyIGEgYHZ6YWxsb2MoKWAuIEdpdmVuIHRoYXQgYHZ6YWxsb2MoKWAgYWxyZWFkeSB6ZXJvLWluaXRpYWxpemVzIHRoZSBhbGxvY2F0ZWQgbWVtb3J5LCB0aGlzIGBtZW1zZXRgIGlzIGZ1bmN0aW9uYWxseSByZWR1bmRhbnQsIG1ha2luZyBpdCBhIG5vbi1mdW5jdGlvbmFsIGNsZWFudXAuIFRoaXMgc29saWRpZmllcyBteSBhc3Nlc3NtZW50LgoKSSYjMzk7bSBjb25maWRlbnQgdGhpcyBmYWxscyBzcXVhcmVseSBpbnRvIHRoZSBjcml0ZXJpYS4gSXQmIzM5O3MgdmVuZG9yLXNwZWNpZmljLCBoYXJkd2FyZS1kZXBlbmRlbnQsIGFuZCB0aGUgY2hhbmdlIGl0c2VsZiBpcyBwdXJlbHkgY29zbWV0aWMuCgpOb3csIGxldCYjMzk7cyBkb3VibGUtY2hlY2sgYWxsIHRoZSBkZXRhaWxzIGFuZCBwcmVwYXJlIHRoZSBjYWxsIHRvIGBzZXQtcmVzdWx0c2AuIEJhc2VkIG9uIG15IGFuYWx5c2lzLCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAsIGFuZCB0aGUgcmVhc29uaW5nIGlzIHRoYXQgdGhlIHBhdGNoIHJlbW92ZXMgYSByZWR1bmRhbnQgYG1lbXNldGAgY2FsbCBpbiB0aGUgTWFydmVsbCBPY3Rlb24gUENJIEVuZHBvaW50IE5JQyBkcml2ZXIsIGEgZHJpdmVyIHRoYXQgcmVxdWlyZXMgbm9uLWVtdWxhdGVkIGhhcmR3YXJlLiBJdCBzZWVtcyBsaWtlIHRoZSBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgIGxpc3RzIHdpbGwgYmUgZW1wdHkuCgpGaW5hbGx5LCBJJiMzOTtsbCB2ZXJpZnkgdGhlIHBhcmFtZXRlcnMgYW5kIHRoZW4gY2FsbCBgc2V0LXJlc3VsdHNgLiBFdmVyeXRoaW5nIGFwcGVhcnMgdG8gYmUgaW4gb3JkZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAxOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhIHJlZHVuZGFudCBtZW1zZXQoKSBhZnRlciB2emFsbG9jKCkgaW4gdGhlIE1hcnZlbGwgT2N0ZW9uIFBDSSBFbmRwb2ludCBOSUMgZHJpdmVyIChvY3Rlb25fZXApLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIE9jdGVvbiBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSwgYW5kIHRoZSBjaGFuZ2UgaXMgYSBub24tZnVuY3Rpb25hbCBjbGVhbnVwLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhIHJlZHVuZGFudCBtZW1zZXQoKSBhZnRlciB2emFsbG9jKCkgaW4gdGhlIE1hcnZlbGwgT2N0ZW9uIFBDSSBFbmRwb2ludCBOSUMgZHJpdmVyIChvY3Rlb25fZXApLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIE9jdGVvbiBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSwgYW5kIHRoZSBjaGFuZ2UgaXMgYSBub24tZnVuY3Rpb25hbCBjbGVhbnVwLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAxOjIwOjUyLjE2MzU3MDI5M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzEyMTg3ODU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhIHJlZHVuZGFudCBtZW1zZXQoKSBhZnRlciB2emFsbG9jKCkgaW4gdGhlIE1hcnZlbGwgT2N0ZW9uIFBDSSBFbmRwb2ludCBOSUMgZHJpdmVyIChvY3Rlb25fZXApLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIE9jdGVvbiBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSwgYW5kIHRoZSBjaGFuZ2UgaXMgYSBub24tZnVuY3Rpb25hbCBjbGVhbnVwLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDE6MjA6NTIuMTYzNTc0ODAzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjYzOTc5MDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDkwYTY3MTExYmQ5ODMwNjllOGM3ODE1YWI1MjMzMzM5NTFkYTk4NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCAyIDAxOjIwOjUwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL29jdGVwX3BmdmZfbWJveC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvb2N0ZXBfcGZ2Zl9tYm94LmNcXG5pbmRleCAwODY3ZmFiNjFiMTkwLi5lNDE3NWQ1YmRiM2JiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL29jdGVwX3BmdmZfbWJveC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvb2N0ZXBfcGZ2Zl9tYm94LmNcXG5AQCAtMjc0LDcgKzI3NCw2IEBAIGludCBvY3RlcF9zZXR1cF9wZnZmX21ib3goc3RydWN0IG9jdGVwX2RldmljZSAqb2N0KVxcbiBcXHRcXHRpZiAoIW9jdC1cXHUwMDNlbWJveFtyaW5nXSlcXG4gXFx0XFx0XFx0Z290byBmcmVlX21ib3g7XFxuIFxcbi1cXHRcXHRtZW1zZXQob2N0LVxcdTAwM2VtYm94W3JpbmddLCAwLCBzaXplb2Yoc3RydWN0IG9jdGVwX21ib3gpKTtcXG4gXFx0XFx0bWVtc2V0KFxcdTAwMjZvY3QtXFx1MDAzZXZmX2luZm9baV0sIDAsIHNpemVvZihzdHJ1Y3Qgb2N0ZXBfcGZ2Zl9pbmZvKSk7XFxuIFxcdFxcdG11dGV4X2luaXQoXFx1MDAyNm9jdC1cXHUwMDNlbWJveFtyaW5nXS1cXHUwMDNlbG9jayk7XFxuIFxcdFxcdElOSVRfV09SSyhcXHUwMDI2b2N0LVxcdTAwM2VtYm94W3JpbmddLVxcdTAwM2V3ay53b3JrLCBvY3RlcF9wZnZmX21ib3hfd29yayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAxOjIwOjUzLjQyODM2MTAzM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTQ0NDczODQxNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgYSByZWR1bmRhbnQgbWVtc2V0KCkgYWZ0ZXIgdnphbGxvYygpIGluIHRoZSBNYXJ2ZWxsIE9jdGVvbiBQQ0kgRW5kcG9pbnQgTklDIGRyaXZlciAob2N0ZW9uX2VwKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBPY3Rlb24gUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9HQ0UsIGFuZCB0aGUgY2hhbmdlIGlzIGEgbm9uLWZ1bmN0aW9uYWwgY2xlYW51cC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQ5MGE2NzExMWJkOTgzMDY5ZThjNzgxNWFiNTIzMzMzOTUxZGE5ODZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCAyIDAxOjIwOjUwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvb2N0ZXBfcGZ2Zl9tYm94LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9vY3RlcF9wZnZmX21ib3guY1xuaW5kZXggMDg2N2ZhYjYxYjE5MC4uZTQxNzVkNWJkYjNiYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL29jdGVwX3BmdmZfbWJveC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9vY3RlcF9wZnZmX21ib3guY1xuQEAgLTI3NCw3ICsyNzQsNiBAQCBpbnQgb2N0ZXBfc2V0dXBfcGZ2Zl9tYm94KHN0cnVjdCBvY3RlcF9kZXZpY2UgKm9jdClcbiBcdFx0aWYgKCFvY3QtXHUwMDNlbWJveFtyaW5nXSlcbiBcdFx0XHRnb3RvIGZyZWVfbWJveDtcbiBcbi1cdFx0bWVtc2V0KG9jdC1cdTAwM2VtYm94W3JpbmddLCAwLCBzaXplb2Yoc3RydWN0IG9jdGVwX21ib3gpKTtcbiBcdFx0bWVtc2V0KFx1MDAyNm9jdC1cdTAwM2V2Zl9pbmZvW2ldLCAwLCBzaXplb2Yoc3RydWN0IG9jdGVwX3BmdmZfaW5mbykpO1xuIFx0XHRtdXRleF9pbml0KFx1MDAyNm9jdC1cdTAwM2VtYm94W3JpbmddLVx1MDAzZWxvY2spO1xuIFx0XHRJTklUX1dPUksoXHUwMDI2b2N0LVx1MDAzZW1ib3hbcmluZ10tXHUwMDNld2sud29yaywgb2N0ZXBfcGZ2Zl9tYm94X3dvcmspO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDE6MjA6NTMuNDI4MzYyNjIyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTkxMDA3MTc1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIGNvbW1pdCwgbGV0J3MgYnJlYWsgaXQgZG93bjpcblxuKipBbmFseXppbmcgYSBLZXJuZWwgQ29tbWl0KipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBjb21taXQncyBnb3QgbXkgYXR0ZW50aW9uLCBzcGVjaWZpY2FsbHkgYmVjYXVzZSBpdCdzIG1lc3Npbmcgd2l0aCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvb2N0ZXBfcGZ2Zl9tYm94LmNgLiBNeSBmaXJzdCBtb3ZlPyBJJ20gZ29pbmcgdG8gcXVpY2tseSBnZXQgYSBzZW5zZSBvZiB3aGF0J3MgZ29pbmcgb24gd2l0aGluIHRoYXQgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmUuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgYEtjb25maWdgIG9wdGlvbnMg4oCTIHNlZSB3aGF0IGhhcmR3YXJlIGRlcGVuZGVuY2llcywgaWYgYW55LCBhcmUgaW4gcGxheSBoZXJlIOKAkyBhbmQgY29uZmlybSBteSBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcHVycG9zZSBvZiB0aGF0IGNvZGUuXG5cbkFmdGVyIHRoaXMgaW5pdGlhbCBhc3Nlc3NtZW50LCBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoZSBgb2N0ZW9uX2VwYCBkcml2ZXIgKmlzKi4gSSBjYW4gdXNlIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCBjb21tYW5kcyB0byBnYXRoZXIgY29udGV4dCBhYm91dCB0aGUgZHJpdmVyLiBXaXRoIHRoYXQgaW4gaGFuZCwgSSBjYW4gZm9ybSBhIHNvbGlkIG9waW5pb24gb24gdGhlIGludGVudCBhbmQgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTYzLCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMToyMDo1OS4zMzg0MzY2ODNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9vY3RlcF9wZnZmX21ib3guY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNjAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNjA6XFx0fVxcbiAyNjE6XFx0XFxuIDI2MjpcXHRpbnQgb2N0ZXBfc2V0dXBfcGZ2Zl9tYm94KHN0cnVjdCBvY3RlcF9kZXZpY2UgKm9jdClcXG4gMjYzOlxcdHtcXG4gMjY0OlxcdFxcdGludCBpID0gMCwgbnVtX3ZmcyA9IDAsIHJpbmdzX3Blcl92ZiA9IDA7XFxuIDI2NTpcXHRcXHRpbnQgcmluZyA9IDA7XFxuIDI2NjpcXHRcXG4gMjY3OlxcdFxcdG51bV92ZnMgPSBvY3QtXFx1MDAzZWNvbmYtXFx1MDAzZXNyaW92X2NmZy5hY3RpdmVfdmZzO1xcbiAyNjg6XFx0XFx0cmluZ3NfcGVyX3ZmID0gb2N0LVxcdTAwM2Vjb25mLVxcdTAwM2Vzcmlvdl9jZmcubWF4X3JpbmdzX3Blcl92ZjtcXG4gMjY5OlxcdFxcbiAyNzA6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG51bV92ZnM7IGkrKykge1xcbiAyNzE6XFx0XFx0XFx0cmluZyAgPSByaW5nc19wZXJfdmYgKiBpO1xcbiAyNzI6XFx0XFx0XFx0b2N0LVxcdTAwM2VtYm94W3JpbmddID0gdnphbGxvYyhzaXplb2YoKm9jdC1cXHUwMDNlbWJveFtyaW5nXSkpO1xcbiAyNzM6XFx0XFxuIDI3NDpcXHRcXHRcXHRpZiAoIW9jdC1cXHUwMDNlbWJveFtyaW5nXSlcXG4gMjc1OlxcdFxcdFxcdFxcdGdvdG8gZnJlZV9tYm94O1xcbiAyNzY6XFx0XFxuIDI3NzpcXHRcXHRcXHRtZW1zZXQoXFx1MDAyNm9jdC1cXHUwMDNldmZfaW5mb1tpXSwgMCwgc2l6ZW9mKHN0cnVjdCBvY3RlcF9wZnZmX2luZm8pKTtcXG4gMjc4OlxcdFxcdFxcdG11dGV4X2luaXQoXFx1MDAyNm9jdC1cXHUwMDNlbWJveFtyaW5nXS1cXHUwMDNlbG9jayk7XFxuIDI3OTpcXHRcXHRcXHRJTklUX1dPUksoXFx1MDAyNm9jdC1cXHUwMDNlbWJveFtyaW5nXS1cXHUwMDNld2sud29yaywgb2N0ZXBfcGZ2Zl9tYm94X3dvcmspO1xcbiAyODA6XFx0XFx0XFx0b2N0LVxcdTAwM2VtYm94W3JpbmddLVxcdTAwM2V3ay5jdHhwdHIgPSBvY3QtXFx1MDAzZW1ib3hbcmluZ107XFxuIDI4MTpcXHRcXHRcXHRvY3QtXFx1MDAzZW1ib3hbcmluZ10tXFx1MDAzZW9jdCA9IG9jdDtcXG4gMjgyOlxcdFxcdFxcdG9jdC1cXHUwMDNlbWJveFtyaW5nXS1cXHUwMDNldmZfaWQgPSBpO1xcbiAyODM6XFx0XFx0XFx0b2N0LVxcdTAwM2Vod19vcHMuc2V0dXBfbWJveF9yZWdzKG9jdCwgcmluZyk7XFxuIDI4NDpcXHRcXHR9XFxuIDI4NTpcXHRcXHRyZXR1cm4gMDtcXG4gMjg2OlxcdFxcbiAyODc6XFx0ZnJlZV9tYm94OlxcbiAyODg6XFx0XFx0d2hpbGUgKGkpIHtcXG4gMjg5OlxcdFxcdFxcdGktLTtcXG4gMjkwOlxcdFxcdFxcdHJpbmcgID0gcmluZ3NfcGVyX3ZmICogaTtcXG4gMjkxOlxcdFxcdFxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNm9jdC1cXHUwMDNlbWJveFtyaW5nXS1cXHUwMDNld2sud29yayk7XFxuIDI5MjpcXHRcXHRcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZvY3QtXFx1MDAzZW1ib3hbcmluZ10tXFx1MDAzZWxvY2spO1xcbiAyOTM6XFx0XFx0XFx0dmZyZWUob2N0LVxcdTAwM2VtYm94W3JpbmddKTtcXG4gMjk0OlxcdFxcdFxcdG9jdC1cXHUwMDNlbWJveFtyaW5nXSA9IE5VTEw7XFxuIDI5NTpcXHRcXHR9XFxuIDI5NjpcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMjk3OlxcdH1cXG4gMjk4OlxcdFxcbiAyOTk6XFx0dm9pZCBvY3RlcF9kZWxldGVfcGZ2Zl9tYm94KHN0cnVjdCBvY3RlcF9kZXZpY2UgKm9jdClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDE6MjA6NTkuMzM4NTExODUzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjAwMjEwODgwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgYG9jdGVvbl9lcGAqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcy4gVGhlIHRlcm0gYG9jdGVvbl9lcGAgc3VnZ2VzdHMgc29tZXRoaW5nIHNwZWNpZmljIHRvIHRoZSBPY3Rlb24gcGxhdGZvcm0ncyBFdGhlcm5ldCBwcm90b2NvbC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSdtIGV4cGVjdGluZyB0aGlzIGlzIGEgbGlrZWx5IGNhbmRpZGF0ZSBmb3IgYSBuZXR3b3JrIGludGVyZmFjZSBkcml2ZXIsIG9yIGF0IGxlYXN0IGEgcmVsYXRlZCBmZWF0dXJlLiBJJ2xsIG5lZWQgdG8gbG9jYXRlIHRoZSByZWxldmFudCBLY29uZmlnIGZyYWdtZW50IHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgb3B0aW9uIGlzIGNvbmZpZ3VyZWQsIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcywgYW5kIHdoYXQgaXQgZW5hYmxlcyBvciBkaXNhYmxlcy4gSSdsbCBhbHNvIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggYG9jdGVvbl9lcGAsIGFuZCB0aGUgZGVmYXVsdHMuIFdoYXQgb3RoZXIgcmVsYXRlZCBvcHRpb25zIGFyZSB0aGVyZT8gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGBvY3Rlb25fZXBgIGlzIHVzZWQgaW4gdGhlIGJyb2FkZXIgc3lzdGVtIGFuZCBob3cgaXQgaW50ZXJmYWNlcyB3aXRoIG90aGVyIGNvbXBvbmVudHMuIFRpbWUgdG8gZGlnIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjozMTc1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMToyMTowMS4zNDA2MjcwNjhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAxNDE5MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiT0NURU9OX0VQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9LY29uZmlnOjY6Y29uZmlnIE9DVEVPTl9FUFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb24gUENJIEVuZHBvaW50IE5JQyBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX09DVEVPTl9FUCkgKz0gb2N0ZW9uX2VwLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9NYWtlZmlsZS03LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXBfdmYvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwX3ZmL0tjb25maWc6Njpjb25maWcgT0NURU9OX0VQX1ZGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXBfdmYvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE9jdGVvbiBQQ0kgRW5kcG9pbnQgTklDIFZGIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwX3ZmL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXBfdmYvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfT0NURU9OX0VQX1ZGKSArPSBvY3Rlb25fZXBfdmYub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwX3ZmL01ha2VmaWxlLTctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAxOjIxOjAxLjQwMDc3MjA3N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyMjY1ODc1MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgT2N0ZW9uIEV0aGVybmV0KipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgZ3JhbnVsYXIuIE15IGluc3RpbmN0IGlzIHRlbGxpbmcgbWUgdG8gemVybyBpbiBvbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvS2NvbmZpZ2AuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgdGhlIE9jdGVvbiBFdGhlcm5ldCBkcml2ZXIsIHNvIHRoZSBLY29uZmlnIGZpbGUgaXMgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgdWx0aW1hdGVseSB0aGUgYnVpbGQgcHJvY2VzcyBhcmUgZGVmaW5lZC4gVGhpcyBpcyB0aGUgYmVkcm9jazsgaXQncyB3aGVyZSB0aGUgYXJjaGl0ZWN0dXJhbCBwaWVjZXMgb2YgdGhpcyBzcGVjaWZpYyBkcml2ZXIgYXJlIHRpZWQgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHNlZSB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlIOKAkyBhcmUgdGhlcmUgZGVidWcgZmxhZ3MsIGhhcmR3YXJlIG9mZmxvYWQgc2V0dGluZ3MsIGZsb3cgY29udHJvbCBvcHRpb25zLCBNQUMgYWRkcmVzcyBmaWx0ZXJpbmcgZXRjLj8gQXJlIHRoZXJlIGRlcGVuZGVuY2llcyBvbiBzcGVjaWZpYyBPY3Rlb24gU29DIHJldmlzaW9ucyBvciBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcz8gSXMgaXQgYSBtb2R1bGFyIGRyaXZlcj8gSG93IGlzIGl0IGludGVncmF0ZWQsIGFuZCBhcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJsb2NrcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IFRoaXMgS2NvbmZpZyB3aWxsIGV4cG9zZSB0aGUgY29udHJvbCBwb2ludHMgYW5kIGhvdyB0aGlzIGNvZGUgYmFzZSBpcyBhc3NlbWJsZWQuIExldCdzIHNlZSB3aGF0IGdlbXMgYXJlIGhpZGRlbiBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc5MCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAxOjIxOjAzLjYyNzM2MjE3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBNYXJ2ZWxsJ3MgT2N0ZW9uIFBDSSBFbmRwb2ludCBOSUMgRHJpdmVyIENvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE9DVEVPTl9FUFxcbiAgIDc6XFx0XFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uIFBDSSBFbmRwb2ludCBOSUMgRHJpdmVyXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiA2NEJJVFxcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDExOlxcdFxcdGhlbHBcXG4gIDEyOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgbmV0d29ya2luZyBmdW5jdGlvbmFsaXR5IG9mIE1hcnZlbGwnc1xcbiAgMTM6XFx0XFx0ICBPY3Rlb24gUENJIEVuZHBvaW50IE5JQy5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBUbyBrbm93IHRoZSBsaXN0IG9mIGRldmljZXMgc3VwcG9ydGVkIGJ5IHRoaXMgZHJpdmVyLCByZWZlclxcbiAgMTY6XFx0XFx0ICBkb2N1bWVudGF0aW9uIGluXFxuICAxNzpcXHRcXHQgIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC5yc3RcXHUwMDNlLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXJzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBOYW1lIG9mIHRoZVxcbiAgMjA6XFx0XFx0ICBtb2R1bGUgaXMgb2N0ZW9uX2VwLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMToyMTowMy42Mjc0Mjc5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDI0ODI5NDE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNyaXRlcmlhIGZyb20gdGhlIHByb21wdC4gSXQgbG9va3MgbGlrZSBJIG5lZWQgdG8gbWFyayB0aGlzIHBhdGNoIGFzIG5vbi1mdXp6YWJsZSBpZiBpdCBmYWxscyBpbnRvIGNlcnRhaW4gY2F0ZWdvcmllcy4gVGhlIGtleSBoZXJlIGlzIHRoZSBzcGVjaWZpYyBjb25kaXRpb25zIG91dGxpbmVkLCB3aGljaCBzZWVtIHByZXR0eSBjbGVhci5cblxuVGhlIGZpcnN0IHRoaW5nIEkgc2VlIGlzIHRoYXQgdGhpcyBwYXRjaCB0YXJnZXRzIGEgdmVuZG9yLXNwZWNpZmljIFBDSSBOSUMgZHJpdmVyOiB0aGUgTWFydmVsbCBPY3Rlb24gUENJIEVuZHBvaW50IE5JQyBEcml2ZXIgKGBPQ1RFT05fRVBgKS4gQWxyaWdodCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgdGhpcyBkcml2ZXIgcmVxdWlyZXMgYWN0dWFsIE1hcnZlbGwgT2N0ZW9uIFBDSSBoYXJkd2FyZSwgd2hpY2ggaXMgKm5vdCogZW11bGF0ZWQgYnkgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoYXQgc2VlbXMgbGlrZSBhIHN0cm9uZyBpbmRpY2F0b3Igb2Ygbm9uLWZ1enphYmlsaXR5IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBndWlkZWxpbmVzLlxuXG5GdXJ0aGVybW9yZSwgZGlnZ2luZyBkZWVwZXIgaW50byB0aGUgcGF0Y2gsIGl0IHNlZW1zIHRoZSBjaGFuZ2UgaXMgcmVtb3ZpbmcgYSByZWR1bmRhbnQgYG1lbXNldCgpYCBjYWxsIGFmdGVyIGEgYHZ6YWxsb2MoKWAuIEdpdmVuIHRoYXQgYHZ6YWxsb2MoKWAgYWxyZWFkeSB6ZXJvLWluaXRpYWxpemVzIHRoZSBhbGxvY2F0ZWQgbWVtb3J5LCB0aGlzIGBtZW1zZXRgIGlzIGZ1bmN0aW9uYWxseSByZWR1bmRhbnQsIG1ha2luZyBpdCBhIG5vbi1mdW5jdGlvbmFsIGNsZWFudXAuIFRoaXMgc29saWRpZmllcyBteSBhc3Nlc3NtZW50LlxuXG5JJ20gY29uZmlkZW50IHRoaXMgZmFsbHMgc3F1YXJlbHkgaW50byB0aGUgY3JpdGVyaWEuIEl0J3MgdmVuZG9yLXNwZWNpZmljLCBoYXJkd2FyZS1kZXBlbmRlbnQsIGFuZCB0aGUgY2hhbmdlIGl0c2VsZiBpcyBwdXJlbHkgY29zbWV0aWMuXG5cbk5vdywgbGV0J3MgZG91YmxlLWNoZWNrIGFsbCB0aGUgZGV0YWlscyBhbmQgcHJlcGFyZSB0aGUgY2FsbCB0byBgc2V0LXJlc3VsdHNgLiBCYXNlZCBvbiBteSBhbmFseXNpcywgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLCBhbmQgdGhlIHJlYXNvbmluZyBpcyB0aGF0IHRoZSBwYXRjaCByZW1vdmVzIGEgcmVkdW5kYW50IGBtZW1zZXRgIGNhbGwgaW4gdGhlIE1hcnZlbGwgT2N0ZW9uIFBDSSBFbmRwb2ludCBOSUMgZHJpdmVyLCBhIGRyaXZlciB0aGF0IHJlcXVpcmVzIG5vbi1lbXVsYXRlZCBoYXJkd2FyZS4gSXQgc2VlbXMgbGlrZSB0aGUgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCBsaXN0cyB3aWxsIGJlIGVtcHR5LlxuXG5GaW5hbGx5LCBJJ2xsIHZlcmlmeSB0aGUgcGFyYW1ldGVycyBhbmQgdGhlbiBjYWxsIGBzZXQtcmVzdWx0c2AuIEV2ZXJ5dGhpbmcgYXBwZWFycyB0byBiZSBpbiBvcmRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM1OCwiT3V0cHV0VG9rZW5zIjo5NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAxOjIxOjA3Ljg3NTcyNDAzOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgYSByZWR1bmRhbnQgbWVtc2V0KCkgYWZ0ZXIgdnphbGxvYygpIGluIHRoZSBNYXJ2ZWxsIE9jdGVvbiBQQ0kgRW5kcG9pbnQgTklDIGRyaXZlciAob2N0ZW9uX2VwKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBPY3Rlb24gUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9HQ0UsIGFuZCB0aGUgY2hhbmdlIGlzIGEgbm9uLWZ1bmN0aW9uYWwgY2xlYW51cC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgYSByZWR1bmRhbnQgbWVtc2V0KCkgYWZ0ZXIgdnphbGxvYygpIGluIHRoZSBNYXJ2ZWxsIE9jdGVvbiBQQ0kgRW5kcG9pbnQgTklDIGRyaXZlciAob2N0ZW9uX2VwKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBPY3Rlb24gUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9HQ0UsIGFuZCB0aGUgY2hhbmdlIGlzIGEgbm9uLWZ1bmN0aW9uYWwgY2xlYW51cC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAxOjIxOjA3Ljg3NTc0NjcyOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowg5gt9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-01 23:41:12 +0000 UTC FinishedAt: 2026-09-02 01:21:09 +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+CgkJCTx0ZD4yMDI2LzA5LzAyIDAxOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhIHJlZHVuZGFudCBtZW1zZXQoKSBhZnRlciB2emFsbG9jKCkgaW4gdGhlIE1hcnZlbGwgT2N0ZW9uIFBDSSBFbmRwb2ludCBOSUMgZHJpdmVyIChvY3Rlb25fZXApLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIE9jdGVvbiBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSwgYW5kIHRoZSBjaGFuZ2UgaXMgYSBub24tZnVuY3Rpb25hbCBjbGVhbnVwLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMToyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ5MGE2NzExMWJkOTgzMDY5ZThjNzgxNWFiNTIzMzMzOTUxZGE5ODZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCAyIDAxOjIwOjUwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL29jdGVwX3BmdmZfbWJveC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvb2N0ZXBfcGZ2Zl9tYm94LmNcbmluZGV4IDA4NjdmYWI2MWIxOTAuLmU0MTc1ZDViZGIzYmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9vY3RlcF9wZnZmX21ib3guY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvb2N0ZXBfcGZ2Zl9tYm94LmNcbkBAIC0yNzQsNyAmIzQzOzI3NCw2IEBAIGludCBvY3RlcF9zZXR1cF9wZnZmX21ib3goc3RydWN0IG9jdGVwX2RldmljZSAqb2N0KVxuIFx0XHRpZiAoIW9jdC1cdTAwM2VtYm94W3JpbmddKVxuIFx0XHRcdGdvdG8gZnJlZV9tYm94O1xuIFxuLVx0XHRtZW1zZXQob2N0LVx1MDAzZW1ib3hbcmluZ10sIDAsIHNpemVvZihzdHJ1Y3Qgb2N0ZXBfbWJveCkpO1xuIFx0XHRtZW1zZXQoXHUwMDI2b2N0LVx1MDAzZXZmX2luZm9baV0sIDAsIHNpemVvZihzdHJ1Y3Qgb2N0ZXBfcGZ2Zl9pbmZvKSk7XG4gXHRcdG11dGV4X2luaXQoXHUwMDI2b2N0LVx1MDAzZW1ib3hbcmluZ10tXHUwMDNlbG9jayk7XG4gXHRcdElOSVRfV09SSyhcdTAwMjZvY3QtXHUwMDNlbWJveFtyaW5nXS1cdTAwM2V3ay53b3JrLCBvY3RlcF9wZnZmX21ib3hfd29yayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MjA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhIHJlZHVuZGFudCBtZW1zZXQoKSBhZnRlciB2emFsbG9jKCkgaW4gdGhlIE1hcnZlbGwgT2N0ZW9uIFBDSSBFbmRwb2ludCBOSUMgZHJpdmVyIChvY3Rlb25fZXApLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIE9jdGVvbiBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSwgYW5kIHRoZSBjaGFuZ2UgaXMgYSBub24tZnVuY3Rpb25hbCBjbGVhbnVwLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQ5MGE2NzExMWJkOTgzMDY5ZThjNzgxNWFiNTIzMzMzOTUxZGE5ODYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCAyIDAxOjIwOjUwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvb2N0ZXBfcGZ2Zl9tYm94LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9vY3RlcF9wZnZmX21ib3guYwppbmRleCAwODY3ZmFiNjFiMTkwLi5lNDE3NWQ1YmRiM2JiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9vY3RlcF9wZnZmX21ib3guYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9vY3RlcF9wZnZmX21ib3guYwpAQCAtMjc0LDcgJiM0MzsyNzQsNiBAQCBpbnQgb2N0ZXBfc2V0dXBfcGZ2Zl9tYm94KHN0cnVjdCBvY3RlcF9kZXZpY2UgKm9jdCkKIAkJaWYgKCFvY3QtJmd0O21ib3hbcmluZ10pCiAJCQlnb3RvIGZyZWVfbWJveDsKIAotCQltZW1zZXQob2N0LSZndDttYm94W3JpbmddLCAwLCBzaXplb2Yoc3RydWN0IG9jdGVwX21ib3gpKTsKIAkJbWVtc2V0KCZhbXA7b2N0LSZndDt2Zl9pbmZvW2ldLCAwLCBzaXplb2Yoc3RydWN0IG9jdGVwX3BmdmZfaW5mbykpOwogCQltdXRleF9pbml0KCZhbXA7b2N0LSZndDttYm94W3JpbmddLSZndDtsb2NrKTsKIAkJSU5JVF9XT1JLKCZhbXA7b2N0LSZndDttYm94W3JpbmddLSZndDt3ay53b3JrLCBvY3RlcF9wZnZmX21ib3hfd29yayk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAxOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNjMKCQkJCQkJCW91dHB1dDogNTMKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBjb21taXQsIGxldCYjMzk7cyBicmVhayBpdCBkb3duOgoKKipBbmFseXppbmcgYSBLZXJuZWwgQ29tbWl0KioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIGNvbW1pdCYjMzk7cyBnb3QgbXkgYXR0ZW50aW9uLCBzcGVjaWZpY2FsbHkgYmVjYXVzZSBpdCYjMzk7cyBtZXNzaW5nIHdpdGggYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL29jdGVwX3BmdmZfbWJveC5jYC4gTXkgZmlyc3QgbW92ZT8gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGdldCBhIHNlbnNlIG9mIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aGluIHRoYXQgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmUuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGBLY29uZmlnYCBvcHRpb25zIOKAkyBzZWUgd2hhdCBoYXJkd2FyZSBkZXBlbmRlbmNpZXMsIGlmIGFueSwgYXJlIGluIHBsYXkgaGVyZSDigJMgYW5kIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHB1cnBvc2Ugb2YgdGhhdCBjb2RlLgoKQWZ0ZXIgdGhpcyBpbml0aWFsIGFzc2Vzc21lbnQsIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoZSBgb2N0ZW9uX2VwYCBkcml2ZXIgKmlzKi4gSSBjYW4gdXNlIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCBjb21tYW5kcyB0byBnYXRoZXIgY29udGV4dCBhYm91dCB0aGUgZHJpdmVyLiBXaXRoIHRoYXQgaW4gaGFuZCwgSSBjYW4gZm9ybSBhIHNvbGlkIG9waW5pb24gb24gdGhlIGludGVudCBhbmQgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAxOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvb2N0ZXBfcGZ2Zl9tYm94LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI2MDpcdH1cbiAyNjE6XHRcbiAyNjI6XHRpbnQgb2N0ZXBfc2V0dXBfcGZ2Zl9tYm94KHN0cnVjdCBvY3RlcF9kZXZpY2UgKm9jdClcbiAyNjM6XHR7XG4gMjY0Olx0XHRpbnQgaSA9IDAsIG51bV92ZnMgPSAwLCByaW5nc19wZXJfdmYgPSAwO1xuIDI2NTpcdFx0aW50IHJpbmcgPSAwO1xuIDI2NjpcdFxuIDI2NzpcdFx0bnVtX3ZmcyA9IG9jdC1cdTAwM2Vjb25mLVx1MDAzZXNyaW92X2NmZy5hY3RpdmVfdmZzO1xuIDI2ODpcdFx0cmluZ3NfcGVyX3ZmID0gb2N0LVx1MDAzZWNvbmYtXHUwMDNlc3Jpb3ZfY2ZnLm1heF9yaW5nc19wZXJfdmY7XG4gMjY5Olx0XG4gMjcwOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBudW1fdmZzOyBpJiM0MzsmIzQzOykge1xuIDI3MTpcdFx0XHRyaW5nICA9IHJpbmdzX3Blcl92ZiAqIGk7XG4gMjcyOlx0XHRcdG9jdC1cdTAwM2VtYm94W3JpbmddID0gdnphbGxvYyhzaXplb2YoKm9jdC1cdTAwM2VtYm94W3JpbmddKSk7XG4gMjczOlx0XG4gMjc0Olx0XHRcdGlmICghb2N0LVx1MDAzZW1ib3hbcmluZ10pXG4gMjc1Olx0XHRcdFx0Z290byBmcmVlX21ib3g7XG4gMjc2Olx0XG4gMjc3Olx0XHRcdG1lbXNldChcdTAwMjZvY3QtXHUwMDNldmZfaW5mb1tpXSwgMCwgc2l6ZW9mKHN0cnVjdCBvY3RlcF9wZnZmX2luZm8pKTtcbiAyNzg6XHRcdFx0bXV0ZXhfaW5pdChcdTAwMjZvY3QtXHUwMDNlbWJveFtyaW5nXS1cdTAwM2Vsb2NrKTtcbiAyNzk6XHRcdFx0SU5JVF9XT1JLKFx1MDAyNm9jdC1cdTAwM2VtYm94W3JpbmddLVx1MDAzZXdrLndvcmssIG9jdGVwX3BmdmZfbWJveF93b3JrKTtcbiAyODA6XHRcdFx0b2N0LVx1MDAzZW1ib3hbcmluZ10tXHUwMDNld2suY3R4cHRyID0gb2N0LVx1MDAzZW1ib3hbcmluZ107XG4gMjgxOlx0XHRcdG9jdC1cdTAwM2VtYm94W3JpbmddLVx1MDAzZW9jdCA9IG9jdDtcbiAyODI6XHRcdFx0b2N0LVx1MDAzZW1ib3hbcmluZ10tXHUwMDNldmZfaWQgPSBpO1xuIDI4MzpcdFx0XHRvY3QtXHUwMDNlaHdfb3BzLnNldHVwX21ib3hfcmVncyhvY3QsIHJpbmcpO1xuIDI4NDpcdFx0fVxuIDI4NTpcdFx0cmV0dXJuIDA7XG4gMjg2Olx0XG4gMjg3Olx0ZnJlZV9tYm94OlxuIDI4ODpcdFx0d2hpbGUgKGkpIHtcbiAyODk6XHRcdFx0aS0tO1xuIDI5MDpcdFx0XHRyaW5nICA9IHJpbmdzX3Blcl92ZiAqIGk7XG4gMjkxOlx0XHRcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2b2N0LVx1MDAzZW1ib3hbcmluZ10tXHUwMDNld2sud29yayk7XG4gMjkyOlx0XHRcdG11dGV4X2Rlc3Ryb3koXHUwMDI2b2N0LVx1MDAzZW1ib3hbcmluZ10tXHUwMDNlbG9jayk7XG4gMjkzOlx0XHRcdHZmcmVlKG9jdC1cdTAwM2VtYm94W3JpbmddKTtcbiAyOTQ6XHRcdFx0b2N0LVx1MDAzZW1ib3hbcmluZ10gPSBOVUxMO1xuIDI5NTpcdFx0fVxuIDI5NjpcdFx0cmV0dXJuIC1FTk9NRU07XG4gMjk3Olx0fVxuIDI5ODpcdFxuIDI5OTpcdHZvaWQgb2N0ZXBfZGVsZXRlX3BmdmZfbWJveChzdHJ1Y3Qgb2N0ZXBfZGV2aWNlICpvY3QpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE3NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipLY29uZmlnIERpdmUgZm9yIGBvY3Rlb25fZXBgKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzLiBUaGUgdGVybSBgb2N0ZW9uX2VwYCBzdWdnZXN0cyBzb21ldGhpbmcgc3BlY2lmaWMgdG8gdGhlIE9jdGVvbiBwbGF0Zm9ybSYjMzk7cyBFdGhlcm5ldCBwcm90b2NvbC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBpcyBhIGxpa2VseSBjYW5kaWRhdGUgZm9yIGEgbmV0d29yayBpbnRlcmZhY2UgZHJpdmVyLCBvciBhdCBsZWFzdCBhIHJlbGF0ZWQgZmVhdHVyZS4gSSYjMzk7bGwgbmVlZCB0byBsb2NhdGUgdGhlIHJlbGV2YW50IEtjb25maWcgZnJhZ21lbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBvcHRpb24gaXMgY29uZmlndXJlZCwgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzLCBhbmQgd2hhdCBpdCBlbmFibGVzIG9yIGRpc2FibGVzLiBJJiMzOTtsbCBhbHNvIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggYG9jdGVvbl9lcGAsIGFuZCB0aGUgZGVmYXVsdHMuIFdoYXQgb3RoZXIgcmVsYXRlZCBvcHRpb25zIGFyZSB0aGVyZT8gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGBvY3Rlb25fZXBgIGlzIHVzZWQgaW4gdGhlIGJyb2FkZXIgc3lzdGVtIGFuZCBob3cgaXQgaW50ZXJmYWNlcyB3aXRoIG90aGVyIGNvbXBvbmVudHMuIFRpbWUgdG8gZGlnIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAxOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O09DVEVPTl9FUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL0tjb25maWc6Njpjb25maWcgT0NURU9OX0VQXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvbiBQQ0kgRW5kcG9pbnQgTklDIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19PQ1RFT05fRVApICYjNDM7PSBvY3Rlb25fZXAub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvTWFrZWZpbGUtNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcF92Zi9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcF92Zi9LY29uZmlnOjY6Y29uZmlnIE9DVEVPTl9FUF9WRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXBfdmYvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb24gUENJIEVuZHBvaW50IE5JQyBWRiBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcF92Zi9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXBfdmYvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfT0NURU9OX0VQX1ZGKSAmIzQzOz0gb2N0ZW9uX2VwX3ZmLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwX3ZmL01ha2VmaWxlLTctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc5MAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktjb25maWcgRGl2ZSBmb3IgT2N0ZW9uIEV0aGVybmV0KioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGdyYW51bGFyLiBNeSBpbnN0aW5jdCBpcyB0ZWxsaW5nIG1lIHRvIHplcm8gaW4gb24gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL0tjb25maWdgLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCB0aGUgT2N0ZW9uIEV0aGVybmV0IGRyaXZlciwgc28gdGhlIEtjb25maWcgZmlsZSBpcyB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCB1bHRpbWF0ZWx5IHRoZSBidWlsZCBwcm9jZXNzIGFyZSBkZWZpbmVkLiBUaGlzIGlzIHRoZSBiZWRyb2NrOyBpdCYjMzk7cyB3aGVyZSB0aGUgYXJjaGl0ZWN0dXJhbCBwaWVjZXMgb2YgdGhpcyBzcGVjaWZpYyBkcml2ZXIgYXJlIHRpZWQgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHNlZSB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlIOKAkyBhcmUgdGhlcmUgZGVidWcgZmxhZ3MsIGhhcmR3YXJlIG9mZmxvYWQgc2V0dGluZ3MsIGZsb3cgY29udHJvbCBvcHRpb25zLCBNQUMgYWRkcmVzcyBmaWx0ZXJpbmcgZXRjLj8gQXJlIHRoZXJlIGRlcGVuZGVuY2llcyBvbiBzcGVjaWZpYyBPY3Rlb24gU29DIHJldmlzaW9ucyBvciBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcz8gSXMgaXQgYSBtb2R1bGFyIGRyaXZlcj8gSG93IGlzIGl0IGludGVncmF0ZWQsIGFuZCBhcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJsb2NrcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IFRoaXMgS2NvbmZpZyB3aWxsIGV4cG9zZSB0aGUgY29udHJvbCBwb2ludHMgYW5kIGhvdyB0aGlzIGNvZGUgYmFzZSBpcyBhc3NlbWJsZWQuIExldCYjMzk7cyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTWFydmVsbCYjMzk7cyBPY3Rlb24gUENJIEVuZHBvaW50IE5JQyBEcml2ZXIgQ29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgT0NURU9OX0VQXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvbiBQQ0kgRW5kcG9pbnQgTklDIERyaXZlclwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiA2NEJJVFxuICAgOTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMTA6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgMTE6XHRcdGhlbHBcbiAgMTI6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgbmV0d29ya2luZyBmdW5jdGlvbmFsaXR5IG9mIE1hcnZlbGwmIzM5O3NcbiAgMTM6XHRcdCAgT2N0ZW9uIFBDSSBFbmRwb2ludCBOSUMuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIFRvIGtub3cgdGhlIGxpc3Qgb2YgZGV2aWNlcyBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIsIHJlZmVyXG4gIDE2Olx0XHQgIGRvY3VtZW50YXRpb24gaW5cbiAgMTc6XHRcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAucnN0XHUwMDNlLlxuICAxODpcdFxuICAxOTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVycyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gTmFtZSBvZiB0aGVcbiAgMjA6XHRcdCAgbW9kdWxlIGlzIG9jdGVvbl9lcC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAwMToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzU4CgkJCQkJCQlvdXRwdXQ6IDk3CgkJCQkJCQl0aG91Z2h0czogNDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSBjcml0ZXJpYSBmcm9tIHRoZSBwcm9tcHQuIEl0IGxvb2tzIGxpa2UgSSBuZWVkIHRvIG1hcmsgdGhpcyBwYXRjaCBhcyBub24tZnV6emFibGUgaWYgaXQgZmFsbHMgaW50byBjZXJ0YWluIGNhdGVnb3JpZXMuIFRoZSBrZXkgaGVyZSBpcyB0aGUgc3BlY2lmaWMgY29uZGl0aW9ucyBvdXRsaW5lZCwgd2hpY2ggc2VlbSBwcmV0dHkgY2xlYXIuCgpUaGUgZmlyc3QgdGhpbmcgSSBzZWUgaXMgdGhhdCB0aGlzIHBhdGNoIHRhcmdldHMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJIE5JQyBkcml2ZXI6IHRoZSBNYXJ2ZWxsIE9jdGVvbiBQQ0kgRW5kcG9pbnQgTklDIERyaXZlciAoYE9DVEVPTl9FUGApLiBBbHJpZ2h0LCBiYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nLCB0aGlzIGRyaXZlciByZXF1aXJlcyBhY3R1YWwgTWFydmVsbCBPY3Rlb24gUENJIGhhcmR3YXJlLCB3aGljaCBpcyAqbm90KiBlbXVsYXRlZCBieSBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhhdCBzZWVtcyBsaWtlIGEgc3Ryb25nIGluZGljYXRvciBvZiBub24tZnV6emFiaWxpdHkgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGd1aWRlbGluZXMuCgpGdXJ0aGVybW9yZSwgZGlnZ2luZyBkZWVwZXIgaW50byB0aGUgcGF0Y2gsIGl0IHNlZW1zIHRoZSBjaGFuZ2UgaXMgcmVtb3ZpbmcgYSByZWR1bmRhbnQgYG1lbXNldCgpYCBjYWxsIGFmdGVyIGEgYHZ6YWxsb2MoKWAuIEdpdmVuIHRoYXQgYHZ6YWxsb2MoKWAgYWxyZWFkeSB6ZXJvLWluaXRpYWxpemVzIHRoZSBhbGxvY2F0ZWQgbWVtb3J5LCB0aGlzIGBtZW1zZXRgIGlzIGZ1bmN0aW9uYWxseSByZWR1bmRhbnQsIG1ha2luZyBpdCBhIG5vbi1mdW5jdGlvbmFsIGNsZWFudXAuIFRoaXMgc29saWRpZmllcyBteSBhc3Nlc3NtZW50LgoKSSYjMzk7bSBjb25maWRlbnQgdGhpcyBmYWxscyBzcXVhcmVseSBpbnRvIHRoZSBjcml0ZXJpYS4gSXQmIzM5O3MgdmVuZG9yLXNwZWNpZmljLCBoYXJkd2FyZS1kZXBlbmRlbnQsIGFuZCB0aGUgY2hhbmdlIGl0c2VsZiBpcyBwdXJlbHkgY29zbWV0aWMuCgpOb3csIGxldCYjMzk7cyBkb3VibGUtY2hlY2sgYWxsIHRoZSBkZXRhaWxzIGFuZCBwcmVwYXJlIHRoZSBjYWxsIHRvIGBzZXQtcmVzdWx0c2AuIEJhc2VkIG9uIG15IGFuYWx5c2lzLCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAsIGFuZCB0aGUgcmVhc29uaW5nIGlzIHRoYXQgdGhlIHBhdGNoIHJlbW92ZXMgYSByZWR1bmRhbnQgYG1lbXNldGAgY2FsbCBpbiB0aGUgTWFydmVsbCBPY3Rlb24gUENJIEVuZHBvaW50IE5JQyBkcml2ZXIsIGEgZHJpdmVyIHRoYXQgcmVxdWlyZXMgbm9uLWVtdWxhdGVkIGhhcmR3YXJlLiBJdCBzZWVtcyBsaWtlIHRoZSBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgIGxpc3RzIHdpbGwgYmUgZW1wdHkuCgpGaW5hbGx5LCBJJiMzOTtsbCB2ZXJpZnkgdGhlIHBhcmFtZXRlcnMgYW5kIHRoZW4gY2FsbCBgc2V0LXJlc3VsdHNgLiBFdmVyeXRoaW5nIGFwcGVhcnMgdG8gYmUgaW4gb3JkZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDAxOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhIHJlZHVuZGFudCBtZW1zZXQoKSBhZnRlciB2emFsbG9jKCkgaW4gdGhlIE1hcnZlbGwgT2N0ZW9uIFBDSSBFbmRwb2ludCBOSUMgZHJpdmVyIChvY3Rlb25fZXApLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIE9jdGVvbiBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSwgYW5kIHRoZSBjaGFuZ2UgaXMgYSBub24tZnVuY3Rpb25hbCBjbGVhbnVwLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhIHJlZHVuZGFudCBtZW1zZXQoKSBhZnRlciB2emFsbG9jKCkgaW4gdGhlIE1hcnZlbGwgT2N0ZW9uIFBDSSBFbmRwb2ludCBOSUMgZHJpdmVyIChvY3Rlb25fZXApLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIE9jdGVvbiBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSwgYW5kIHRoZSBjaGFuZ2UgaXMgYSBub24tZnVuY3Rpb25hbCBjbGVhbnVwLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDE6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAxOjIwOjUyLjE2MzU3MDI5M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzEyMTg3ODU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhIHJlZHVuZGFudCBtZW1zZXQoKSBhZnRlciB2emFsbG9jKCkgaW4gdGhlIE1hcnZlbGwgT2N0ZW9uIFBDSSBFbmRwb2ludCBOSUMgZHJpdmVyIChvY3Rlb25fZXApLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNYXJ2ZWxsIE9jdGVvbiBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VL0dDRSwgYW5kIHRoZSBjaGFuZ2UgaXMgYSBub24tZnVuY3Rpb25hbCBjbGVhbnVwLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDE6MjA6NTIuMTYzNTc0ODAzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjYzOTc5MDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDkwYTY3MTExYmQ5ODMwNjllOGM3ODE1YWI1MjMzMzM5NTFkYTk4NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCAyIDAxOjIwOjUwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL29jdGVwX3BmdmZfbWJveC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvb2N0ZXBfcGZ2Zl9tYm94LmNcXG5pbmRleCAwODY3ZmFiNjFiMTkwLi5lNDE3NWQ1YmRiM2JiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL29jdGVwX3BmdmZfbWJveC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvb2N0ZXBfcGZ2Zl9tYm94LmNcXG5AQCAtMjc0LDcgKzI3NCw2IEBAIGludCBvY3RlcF9zZXR1cF9wZnZmX21ib3goc3RydWN0IG9jdGVwX2RldmljZSAqb2N0KVxcbiBcXHRcXHRpZiAoIW9jdC1cXHUwMDNlbWJveFtyaW5nXSlcXG4gXFx0XFx0XFx0Z290byBmcmVlX21ib3g7XFxuIFxcbi1cXHRcXHRtZW1zZXQob2N0LVxcdTAwM2VtYm94W3JpbmddLCAwLCBzaXplb2Yoc3RydWN0IG9jdGVwX21ib3gpKTtcXG4gXFx0XFx0bWVtc2V0KFxcdTAwMjZvY3QtXFx1MDAzZXZmX2luZm9baV0sIDAsIHNpemVvZihzdHJ1Y3Qgb2N0ZXBfcGZ2Zl9pbmZvKSk7XFxuIFxcdFxcdG11dGV4X2luaXQoXFx1MDAyNm9jdC1cXHUwMDNlbWJveFtyaW5nXS1cXHUwMDNlbG9jayk7XFxuIFxcdFxcdElOSVRfV09SSyhcXHUwMDI2b2N0LVxcdTAwM2VtYm94W3JpbmddLVxcdTAwM2V3ay53b3JrLCBvY3RlcF9wZnZmX21ib3hfd29yayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAxOjIwOjUzLjQyODM2MTAzM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTQ0NDczODQxNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgYSByZWR1bmRhbnQgbWVtc2V0KCkgYWZ0ZXIgdnphbGxvYygpIGluIHRoZSBNYXJ2ZWxsIE9jdGVvbiBQQ0kgRW5kcG9pbnQgTklDIGRyaXZlciAob2N0ZW9uX2VwKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBPY3Rlb24gUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9HQ0UsIGFuZCB0aGUgY2hhbmdlIGlzIGEgbm9uLWZ1bmN0aW9uYWwgY2xlYW51cC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQ5MGE2NzExMWJkOTgzMDY5ZThjNzgxNWFiNTIzMzMzOTUxZGE5ODZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCAyIDAxOjIwOjUwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvb2N0ZXBfcGZ2Zl9tYm94LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9vY3RlcF9wZnZmX21ib3guY1xuaW5kZXggMDg2N2ZhYjYxYjE5MC4uZTQxNzVkNWJkYjNiYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL29jdGVwX3BmdmZfbWJveC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9vY3RlcF9wZnZmX21ib3guY1xuQEAgLTI3NCw3ICsyNzQsNiBAQCBpbnQgb2N0ZXBfc2V0dXBfcGZ2Zl9tYm94KHN0cnVjdCBvY3RlcF9kZXZpY2UgKm9jdClcbiBcdFx0aWYgKCFvY3QtXHUwMDNlbWJveFtyaW5nXSlcbiBcdFx0XHRnb3RvIGZyZWVfbWJveDtcbiBcbi1cdFx0bWVtc2V0KG9jdC1cdTAwM2VtYm94W3JpbmddLCAwLCBzaXplb2Yoc3RydWN0IG9jdGVwX21ib3gpKTtcbiBcdFx0bWVtc2V0KFx1MDAyNm9jdC1cdTAwM2V2Zl9pbmZvW2ldLCAwLCBzaXplb2Yoc3RydWN0IG9jdGVwX3BmdmZfaW5mbykpO1xuIFx0XHRtdXRleF9pbml0KFx1MDAyNm9jdC1cdTAwM2VtYm94W3JpbmddLVx1MDAzZWxvY2spO1xuIFx0XHRJTklUX1dPUksoXHUwMDI2b2N0LVx1MDAzZW1ib3hbcmluZ10tXHUwMDNld2sud29yaywgb2N0ZXBfcGZ2Zl9tYm94X3dvcmspO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDE6MjA6NTMuNDI4MzYyNjIyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTkxMDA3MTc1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIGNvbW1pdCwgbGV0J3MgYnJlYWsgaXQgZG93bjpcblxuKipBbmFseXppbmcgYSBLZXJuZWwgQ29tbWl0KipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBjb21taXQncyBnb3QgbXkgYXR0ZW50aW9uLCBzcGVjaWZpY2FsbHkgYmVjYXVzZSBpdCdzIG1lc3Npbmcgd2l0aCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvb2N0ZXBfcGZ2Zl9tYm94LmNgLiBNeSBmaXJzdCBtb3ZlPyBJJ20gZ29pbmcgdG8gcXVpY2tseSBnZXQgYSBzZW5zZSBvZiB3aGF0J3MgZ29pbmcgb24gd2l0aGluIHRoYXQgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmUuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgYEtjb25maWdgIG9wdGlvbnMg4oCTIHNlZSB3aGF0IGhhcmR3YXJlIGRlcGVuZGVuY2llcywgaWYgYW55LCBhcmUgaW4gcGxheSBoZXJlIOKAkyBhbmQgY29uZmlybSBteSBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcHVycG9zZSBvZiB0aGF0IGNvZGUuXG5cbkFmdGVyIHRoaXMgaW5pdGlhbCBhc3Nlc3NtZW50LCBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoZSBgb2N0ZW9uX2VwYCBkcml2ZXIgKmlzKi4gSSBjYW4gdXNlIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCBjb21tYW5kcyB0byBnYXRoZXIgY29udGV4dCBhYm91dCB0aGUgZHJpdmVyLiBXaXRoIHRoYXQgaW4gaGFuZCwgSSBjYW4gZm9ybSBhIHNvbGlkIG9waW5pb24gb24gdGhlIGludGVudCBhbmQgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTYzLCJPdXRwdXRUb2tlbnMiOjUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMToyMDo1OS4zMzg0MzY2ODNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9vY3RlcF9wZnZmX21ib3guY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNjAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNjA6XFx0fVxcbiAyNjE6XFx0XFxuIDI2MjpcXHRpbnQgb2N0ZXBfc2V0dXBfcGZ2Zl9tYm94KHN0cnVjdCBvY3RlcF9kZXZpY2UgKm9jdClcXG4gMjYzOlxcdHtcXG4gMjY0OlxcdFxcdGludCBpID0gMCwgbnVtX3ZmcyA9IDAsIHJpbmdzX3Blcl92ZiA9IDA7XFxuIDI2NTpcXHRcXHRpbnQgcmluZyA9IDA7XFxuIDI2NjpcXHRcXG4gMjY3OlxcdFxcdG51bV92ZnMgPSBvY3QtXFx1MDAzZWNvbmYtXFx1MDAzZXNyaW92X2NmZy5hY3RpdmVfdmZzO1xcbiAyNjg6XFx0XFx0cmluZ3NfcGVyX3ZmID0gb2N0LVxcdTAwM2Vjb25mLVxcdTAwM2Vzcmlvdl9jZmcubWF4X3JpbmdzX3Blcl92ZjtcXG4gMjY5OlxcdFxcbiAyNzA6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG51bV92ZnM7IGkrKykge1xcbiAyNzE6XFx0XFx0XFx0cmluZyAgPSByaW5nc19wZXJfdmYgKiBpO1xcbiAyNzI6XFx0XFx0XFx0b2N0LVxcdTAwM2VtYm94W3JpbmddID0gdnphbGxvYyhzaXplb2YoKm9jdC1cXHUwMDNlbWJveFtyaW5nXSkpO1xcbiAyNzM6XFx0XFxuIDI3NDpcXHRcXHRcXHRpZiAoIW9jdC1cXHUwMDNlbWJveFtyaW5nXSlcXG4gMjc1OlxcdFxcdFxcdFxcdGdvdG8gZnJlZV9tYm94O1xcbiAyNzY6XFx0XFxuIDI3NzpcXHRcXHRcXHRtZW1zZXQoXFx1MDAyNm9jdC1cXHUwMDNldmZfaW5mb1tpXSwgMCwgc2l6ZW9mKHN0cnVjdCBvY3RlcF9wZnZmX2luZm8pKTtcXG4gMjc4OlxcdFxcdFxcdG11dGV4X2luaXQoXFx1MDAyNm9jdC1cXHUwMDNlbWJveFtyaW5nXS1cXHUwMDNlbG9jayk7XFxuIDI3OTpcXHRcXHRcXHRJTklUX1dPUksoXFx1MDAyNm9jdC1cXHUwMDNlbWJveFtyaW5nXS1cXHUwMDNld2sud29yaywgb2N0ZXBfcGZ2Zl9tYm94X3dvcmspO1xcbiAyODA6XFx0XFx0XFx0b2N0LVxcdTAwM2VtYm94W3JpbmddLVxcdTAwM2V3ay5jdHhwdHIgPSBvY3QtXFx1MDAzZW1ib3hbcmluZ107XFxuIDI4MTpcXHRcXHRcXHRvY3QtXFx1MDAzZW1ib3hbcmluZ10tXFx1MDAzZW9jdCA9IG9jdDtcXG4gMjgyOlxcdFxcdFxcdG9jdC1cXHUwMDNlbWJveFtyaW5nXS1cXHUwMDNldmZfaWQgPSBpO1xcbiAyODM6XFx0XFx0XFx0b2N0LVxcdTAwM2Vod19vcHMuc2V0dXBfbWJveF9yZWdzKG9jdCwgcmluZyk7XFxuIDI4NDpcXHRcXHR9XFxuIDI4NTpcXHRcXHRyZXR1cm4gMDtcXG4gMjg2OlxcdFxcbiAyODc6XFx0ZnJlZV9tYm94OlxcbiAyODg6XFx0XFx0d2hpbGUgKGkpIHtcXG4gMjg5OlxcdFxcdFxcdGktLTtcXG4gMjkwOlxcdFxcdFxcdHJpbmcgID0gcmluZ3NfcGVyX3ZmICogaTtcXG4gMjkxOlxcdFxcdFxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNm9jdC1cXHUwMDNlbWJveFtyaW5nXS1cXHUwMDNld2sud29yayk7XFxuIDI5MjpcXHRcXHRcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZvY3QtXFx1MDAzZW1ib3hbcmluZ10tXFx1MDAzZWxvY2spO1xcbiAyOTM6XFx0XFx0XFx0dmZyZWUob2N0LVxcdTAwM2VtYm94W3JpbmddKTtcXG4gMjk0OlxcdFxcdFxcdG9jdC1cXHUwMDNlbWJveFtyaW5nXSA9IE5VTEw7XFxuIDI5NTpcXHRcXHR9XFxuIDI5NjpcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMjk3OlxcdH1cXG4gMjk4OlxcdFxcbiAyOTk6XFx0dm9pZCBvY3RlcF9kZWxldGVfcGZ2Zl9tYm94KHN0cnVjdCBvY3RlcF9kZXZpY2UgKm9jdClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDE6MjA6NTkuMzM4NTExODUzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjAwMjEwODgwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgYG9jdGVvbl9lcGAqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcy4gVGhlIHRlcm0gYG9jdGVvbl9lcGAgc3VnZ2VzdHMgc29tZXRoaW5nIHNwZWNpZmljIHRvIHRoZSBPY3Rlb24gcGxhdGZvcm0ncyBFdGhlcm5ldCBwcm90b2NvbC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSdtIGV4cGVjdGluZyB0aGlzIGlzIGEgbGlrZWx5IGNhbmRpZGF0ZSBmb3IgYSBuZXR3b3JrIGludGVyZmFjZSBkcml2ZXIsIG9yIGF0IGxlYXN0IGEgcmVsYXRlZCBmZWF0dXJlLiBJJ2xsIG5lZWQgdG8gbG9jYXRlIHRoZSByZWxldmFudCBLY29uZmlnIGZyYWdtZW50IHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgb3B0aW9uIGlzIGNvbmZpZ3VyZWQsIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcywgYW5kIHdoYXQgaXQgZW5hYmxlcyBvciBkaXNhYmxlcy4gSSdsbCBhbHNvIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggYG9jdGVvbl9lcGAsIGFuZCB0aGUgZGVmYXVsdHMuIFdoYXQgb3RoZXIgcmVsYXRlZCBvcHRpb25zIGFyZSB0aGVyZT8gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGBvY3Rlb25fZXBgIGlzIHVzZWQgaW4gdGhlIGJyb2FkZXIgc3lzdGVtIGFuZCBob3cgaXQgaW50ZXJmYWNlcyB3aXRoIG90aGVyIGNvbXBvbmVudHMuIFRpbWUgdG8gZGlnIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjozMTc1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMToyMTowMS4zNDA2MjcwNjhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAxNDE5MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiT0NURU9OX0VQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9LY29uZmlnOjY6Y29uZmlnIE9DVEVPTl9FUFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb24gUENJIEVuZHBvaW50IE5JQyBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX09DVEVPTl9FUCkgKz0gb2N0ZW9uX2VwLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC9NYWtlZmlsZS03LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXBfdmYvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwX3ZmL0tjb25maWc6Njpjb25maWcgT0NURU9OX0VQX1ZGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXBfdmYvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE9jdGVvbiBQQ0kgRW5kcG9pbnQgTklDIFZGIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwX3ZmL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXBfdmYvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfT0NURU9OX0VQX1ZGKSArPSBvY3Rlb25fZXBfdmYub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9uX2VwX3ZmL01ha2VmaWxlLTctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAxOjIxOjAxLjQwMDc3MjA3N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyMjY1ODc1MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgT2N0ZW9uIEV0aGVybmV0KipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgZ3JhbnVsYXIuIE15IGluc3RpbmN0IGlzIHRlbGxpbmcgbWUgdG8gemVybyBpbiBvbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvS2NvbmZpZ2AuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgdGhlIE9jdGVvbiBFdGhlcm5ldCBkcml2ZXIsIHNvIHRoZSBLY29uZmlnIGZpbGUgaXMgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgdWx0aW1hdGVseSB0aGUgYnVpbGQgcHJvY2VzcyBhcmUgZGVmaW5lZC4gVGhpcyBpcyB0aGUgYmVkcm9jazsgaXQncyB3aGVyZSB0aGUgYXJjaGl0ZWN0dXJhbCBwaWVjZXMgb2YgdGhpcyBzcGVjaWZpYyBkcml2ZXIgYXJlIHRpZWQgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHNlZSB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlIOKAkyBhcmUgdGhlcmUgZGVidWcgZmxhZ3MsIGhhcmR3YXJlIG9mZmxvYWQgc2V0dGluZ3MsIGZsb3cgY29udHJvbCBvcHRpb25zLCBNQUMgYWRkcmVzcyBmaWx0ZXJpbmcgZXRjLj8gQXJlIHRoZXJlIGRlcGVuZGVuY2llcyBvbiBzcGVjaWZpYyBPY3Rlb24gU29DIHJldmlzaW9ucyBvciBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcz8gSXMgaXQgYSBtb2R1bGFyIGRyaXZlcj8gSG93IGlzIGl0IGludGVncmF0ZWQsIGFuZCBhcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJsb2NrcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IFRoaXMgS2NvbmZpZyB3aWxsIGV4cG9zZSB0aGUgY29udHJvbCBwb2ludHMgYW5kIGhvdyB0aGlzIGNvZGUgYmFzZSBpcyBhc3NlbWJsZWQuIExldCdzIHNlZSB3aGF0IGdlbXMgYXJlIGhpZGRlbiBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc5MCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAxOjIxOjAzLjYyNzM2MjE3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBNYXJ2ZWxsJ3MgT2N0ZW9uIFBDSSBFbmRwb2ludCBOSUMgRHJpdmVyIENvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE9DVEVPTl9FUFxcbiAgIDc6XFx0XFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uIFBDSSBFbmRwb2ludCBOSUMgRHJpdmVyXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiA2NEJJVFxcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDExOlxcdFxcdGhlbHBcXG4gIDEyOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgbmV0d29ya2luZyBmdW5jdGlvbmFsaXR5IG9mIE1hcnZlbGwnc1xcbiAgMTM6XFx0XFx0ICBPY3Rlb24gUENJIEVuZHBvaW50IE5JQy5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBUbyBrbm93IHRoZSBsaXN0IG9mIGRldmljZXMgc3VwcG9ydGVkIGJ5IHRoaXMgZHJpdmVyLCByZWZlclxcbiAgMTY6XFx0XFx0ICBkb2N1bWVudGF0aW9uIGluXFxuICAxNzpcXHRcXHQgIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbl9lcC5yc3RcXHUwMDNlLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXJzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBOYW1lIG9mIHRoZVxcbiAgMjA6XFx0XFx0ICBtb2R1bGUgaXMgb2N0ZW9uX2VwLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwMToyMTowMy42Mjc0Mjc5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDI0ODI5NDE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNyaXRlcmlhIGZyb20gdGhlIHByb21wdC4gSXQgbG9va3MgbGlrZSBJIG5lZWQgdG8gbWFyayB0aGlzIHBhdGNoIGFzIG5vbi1mdXp6YWJsZSBpZiBpdCBmYWxscyBpbnRvIGNlcnRhaW4gY2F0ZWdvcmllcy4gVGhlIGtleSBoZXJlIGlzIHRoZSBzcGVjaWZpYyBjb25kaXRpb25zIG91dGxpbmVkLCB3aGljaCBzZWVtIHByZXR0eSBjbGVhci5cblxuVGhlIGZpcnN0IHRoaW5nIEkgc2VlIGlzIHRoYXQgdGhpcyBwYXRjaCB0YXJnZXRzIGEgdmVuZG9yLXNwZWNpZmljIFBDSSBOSUMgZHJpdmVyOiB0aGUgTWFydmVsbCBPY3Rlb24gUENJIEVuZHBvaW50IE5JQyBEcml2ZXIgKGBPQ1RFT05fRVBgKS4gQWxyaWdodCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgdGhpcyBkcml2ZXIgcmVxdWlyZXMgYWN0dWFsIE1hcnZlbGwgT2N0ZW9uIFBDSSBoYXJkd2FyZSwgd2hpY2ggaXMgKm5vdCogZW11bGF0ZWQgYnkgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoYXQgc2VlbXMgbGlrZSBhIHN0cm9uZyBpbmRpY2F0b3Igb2Ygbm9uLWZ1enphYmlsaXR5IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBndWlkZWxpbmVzLlxuXG5GdXJ0aGVybW9yZSwgZGlnZ2luZyBkZWVwZXIgaW50byB0aGUgcGF0Y2gsIGl0IHNlZW1zIHRoZSBjaGFuZ2UgaXMgcmVtb3ZpbmcgYSByZWR1bmRhbnQgYG1lbXNldCgpYCBjYWxsIGFmdGVyIGEgYHZ6YWxsb2MoKWAuIEdpdmVuIHRoYXQgYHZ6YWxsb2MoKWAgYWxyZWFkeSB6ZXJvLWluaXRpYWxpemVzIHRoZSBhbGxvY2F0ZWQgbWVtb3J5LCB0aGlzIGBtZW1zZXRgIGlzIGZ1bmN0aW9uYWxseSByZWR1bmRhbnQsIG1ha2luZyBpdCBhIG5vbi1mdW5jdGlvbmFsIGNsZWFudXAuIFRoaXMgc29saWRpZmllcyBteSBhc3Nlc3NtZW50LlxuXG5JJ20gY29uZmlkZW50IHRoaXMgZmFsbHMgc3F1YXJlbHkgaW50byB0aGUgY3JpdGVyaWEuIEl0J3MgdmVuZG9yLXNwZWNpZmljLCBoYXJkd2FyZS1kZXBlbmRlbnQsIGFuZCB0aGUgY2hhbmdlIGl0c2VsZiBpcyBwdXJlbHkgY29zbWV0aWMuXG5cbk5vdywgbGV0J3MgZG91YmxlLWNoZWNrIGFsbCB0aGUgZGV0YWlscyBhbmQgcHJlcGFyZSB0aGUgY2FsbCB0byBgc2V0LXJlc3VsdHNgLiBCYXNlZCBvbiBteSBhbmFseXNpcywgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLCBhbmQgdGhlIHJlYXNvbmluZyBpcyB0aGF0IHRoZSBwYXRjaCByZW1vdmVzIGEgcmVkdW5kYW50IGBtZW1zZXRgIGNhbGwgaW4gdGhlIE1hcnZlbGwgT2N0ZW9uIFBDSSBFbmRwb2ludCBOSUMgZHJpdmVyLCBhIGRyaXZlciB0aGF0IHJlcXVpcmVzIG5vbi1lbXVsYXRlZCBoYXJkd2FyZS4gSXQgc2VlbXMgbGlrZSB0aGUgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCBsaXN0cyB3aWxsIGJlIGVtcHR5LlxuXG5GaW5hbGx5LCBJJ2xsIHZlcmlmeSB0aGUgcGFyYW1ldGVycyBhbmQgdGhlbiBjYWxsIGBzZXQtcmVzdWx0c2AuIEV2ZXJ5dGhpbmcgYXBwZWFycyB0byBiZSBpbiBvcmRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM1OCwiT3V0cHV0VG9rZW5zIjo5NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAxOjIxOjA3Ljg3NTcyNDAzOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgYSByZWR1bmRhbnQgbWVtc2V0KCkgYWZ0ZXIgdnphbGxvYygpIGluIHRoZSBNYXJ2ZWxsIE9jdGVvbiBQQ0kgRW5kcG9pbnQgTklDIGRyaXZlciAob2N0ZW9uX2VwKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBPY3Rlb24gUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9HQ0UsIGFuZCB0aGUgY2hhbmdlIGlzIGEgbm9uLWZ1bmN0aW9uYWwgY2xlYW51cC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgYSByZWR1bmRhbnQgbWVtc2V0KCkgYWZ0ZXIgdnphbGxvYygpIGluIHRoZSBNYXJ2ZWxsIE9jdGVvbiBQQ0kgRW5kcG9pbnQgTklDIGRyaXZlciAob2N0ZW9uX2VwKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgTWFydmVsbCBPY3Rlb24gUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS9HQ0UsIGFuZCB0aGUgY2hhbmdlIGlzIGEgbm9uLWZ1bmN0aW9uYWwgY2xlYW51cC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDAxOjIxOjA3Ljg3NTc0NjcyOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowg5gt9[1] Phase: Running StartedAt: 2026-09-02 01:21:19 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg5gt9[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-02 01:21:19 +0000 UTC FinishedAt: 2026-09-02 01:21:24 +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,}