Name: series-workflow9vzx9 Phase: Failed StartedAt: 2026-09-14 23:44:51 +0000 UTC FinishedAt: 2026-09-15 00:49:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vzx9[0] Phase: Succeeded StartedAt: 2026-09-14 23:44:51 +0000 UTC FinishedAt: 2026-09-15 00:48:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vzx9[0].run-triage Phase: Succeeded StartedAt: 2026-09-14 23:44:51 +0000 UTC FinishedAt: 2026-09-15 00:48:54 +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+CgkJCTx0ZD4yMDI2LzA5LzE1IDAwOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIHBhdGggKGBlcnJfb3V0X2FwZXVubWFwYCBpbiBgdGczX2luaXRfb25lYCkgb2YgdGhlIEJyb2FkY29tIFRpZ29uMyAoYHRnM2ApIEV0aGVybmV0IGRyaXZlci4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBwaHlzaWNhbCBCcm9hZGNvbSBUaWdvbjMvTmV0WHRyZW1lIFBDSS9QQ0llIG5ldHdvcmsgY29udHJvbGxlcnMsIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgYnkgc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGMwNDU2ZTM4MTIxNzMzZmQ1OWVlOTJhZDE0N2Q0ODZkMDhmYzc3NWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxNSAwMDo0NzozMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jXG5pbmRleCA3M2E0YjU2OWIwM2UzLi45MWM3YWQ5OTcwMjRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jXG5AQCAtMTgwNDcsNiAmIzQzOzE4MDQ3LDkgQEAgc3RhdGljIGludCB0ZzNfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gXHRyZXR1cm4gMDtcbiBcbiBlcnJfb3V0X2FwZXVubWFwOlxuJiM0MztcdHRnM19waHlfZmluaSh0cCk7XG4mIzQzO1x0dGczX21kaW9fZmluaSh0cCk7XG4mIzQzO1xuIFx0aWYgKHRwLVx1MDAzZWFwZXJlZ3MpIHtcbiBcdFx0aW91bm1hcCh0cC1cdTAwM2VhcGVyZWdzKTtcbiBcdFx0dHAtXHUwMDNlYXBlcmVncyA9IE5VTEw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDA6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIHBhdGggKGBlcnJfb3V0X2FwZXVubWFwYCBpbiBgdGczX2luaXRfb25lYCkgb2YgdGhlIEJyb2FkY29tIFRpZ29uMyAoYHRnM2ApIEV0aGVybmV0IGRyaXZlci4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBwaHlzaWNhbCBCcm9hZGNvbSBUaWdvbjMvTmV0WHRyZW1lIFBDSS9QQ0llIG5ldHdvcmsgY29udHJvbGxlcnMsIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgYnkgc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMwNDU2ZTM4MTIxNzMzZmQ1OWVlOTJhZDE0N2Q0ODZkMDhmYzc3NWEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxNSAwMDo0NzozMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMKaW5kZXggNzNhNGI1NjliMDNlMy4uOTFjN2FkOTk3MDI0YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMKQEAgLTE4MDQ3LDYgJiM0MzsxODA0Nyw5IEBAIHN0YXRpYyBpbnQgdGczX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogCXJldHVybiAwOwogCiBlcnJfb3V0X2FwZXVubWFwOgomIzQzOwl0ZzNfcGh5X2ZpbmkodHApOwomIzQzOwl0ZzNfbWRpb19maW5pKHRwKTsKJiM0MzsKIAlpZiAodHAtJmd0O2FwZXJlZ3MpIHsKIAkJaW91bm1hcCh0cC0mZ3Q7YXBlcmVncyk7CiAJCXRwLSZndDthcGVyZWdzID0gTlVMTDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg4NwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDEwNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSB0ZzMgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSBhIGRpZmYgYWdhaW5zdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNgLiBUaGlzIGlzIHRoZSBCcm9hZGNvbSBUaWdvbjMgRXRoZXJuZXQgZHJpdmVyLiBOb3csIHRoZSBwYXRjaCBpdHNlbGYgYWRkcyBgdGczX3BoeV9maW5pKHRwKWAgYW5kIGB0ZzNfbWRpb19maW5pKHRwKWAgdG8gdGhlIGBlcnJfb3V0X2FwZXVubWFwYCBsYWJlbCB3aXRoaW4gYHRnM19pbml0X29uZWAuIFJpZ2h0IGF3YXksIHRoYXQgcmFpc2VzIGEgZmxhZy4gYHRnM19pbml0X29uZWAuLi4gdGhhdCYjMzk7cyB0aGUgUENJIHByb2JlIGZ1bmN0aW9uLCBpc24mIzM5O3QgaXQ/IFllcywgaXQgaXM7IGl0JiMzOTtzIHJlZ2lzdGVyZWQgd2l0aCBgcGNpX3JlZ2lzdGVyX2RyaXZlcmAuIFRoaXMgbWVhbnMgdGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIGVycm9yIHVud2luZCBwYXRoIG9mIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24uCgpOb3csIGEgY3JpdGljYWwgcXVlc3Rpb246IGlzIHRoaXMgaGFyZHdhcmUgZW11bGF0ZWQgaW4gUUVNVT8gSSBuZWVkIHRvIHZlcmlmeS4gQnJvYWRjb20gVGlnb24zIChCQ001NzAwIHNlcmllcyBhbmQgc2ltaWxhcikgLSBsZXQmIzM5O3MgYmUgcHJlY2lzZS4gSSBrbm93IFFFTVUgc3VwcG9ydHMgdGhlIHVzdWFsIHN1c3BlY3RzOiBlMTAwMCwgZTEwMDBlLCBydGw4MTM5LCBwY25ldCwgdmlydGlvLW5ldCwgZXRjLiBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBhYm91dCB0ZzMuIEdvaW5nIHRocm91Z2ggUUVNVSYjMzk7cyBzdXBwb3J0ZWQgTklDIGxpc3QsIEkgZG9uJiMzOTt0IHNlZSBhbnl0aGluZyBleHBsaWNpdGx5IG1lbnRpb25pbmcgQnJvYWRjb20gVGlnb24zIG9yIEJDTTU3eHguIE5vLCBRRU1VICpkb2VzbiYjMzk7dCogZW11bGF0ZSBpdC4KClRoYXQmIzM5O3Mgc2lnbmlmaWNhbnQuIFNlY3Rpb24gMiBvZiBteSByZWZlcmVuY2UgbWF0ZXJpYWxzIHRhbGtzIGFib3V0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBhbmQgdW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzLiBUaGlzIHBhdGNoIG1vZGlmaWVzIGNvZGUgdGhhdCBvbmx5IGV4ZWN1dGVzIHdoZW4gdGhlIHByb2JlIGZhaWxzIG9yIGR1cmluZyBQQ0kgZGV2aWNlIHJlbW92YWwuIEluIFFFTVUsIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSwgdGhhdCBwcm9iZSBmdW5jdGlvbiB3aWxsICpuZXZlciogZXhlY3V0ZSBzdWNjZXNzZnVsbHkuIFNvIEkgaGF2ZSB0byBiZSBzdXJlLiBJZiB0aGlzIGlzIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24sIGFuZCB0aGUgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkLCB0aGVuIHRoaXMgY29kZSB3aWxsIG5vdCBiZSByZWFjaGFibGUgaW4gdGhlIFFFTVUvc3l6a2FsbGVyIGVudmlyb25tZW50LiBJIGNhbiYjMzk7dCBmdXp6IHRoaXMgcGF0aCByZWxpYWJseSB1bmxlc3MgdGhlcmUmIzM5O3MgYSB2aXJ0dWFsIGJ1cyBvciBlbXVsYXRpb24uIFN5emthbGxlciBjYW5ub3QgcHJvYmUgYW4gYXJiaXRyYXJ5IFBDSSBkcml2ZXIgd2l0aG91dCBoYXJkd2FyZSBlbXVsYXRpb24uCgpUaGVyZWZvcmUsIHRoaXMgc3BlY2lmaWMgcGF0Y2gsIHdoaWNoIG1vZGlmaWVzIHRoZSBlcnJvciB1bndpbmQgaW4gYHRnM19pbml0X29uZWAsIGlzIGxpa2VseSB1bnJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAsIGJlY2F1c2UgdGczIGlzIG5vdCBlbXVsYXRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgwMzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTgwMzU6XHRcdFx0ICAgIChkZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfUlhDU1VNKSAhPSAwLFxuMTgwMzY6XHRcdFx0ICAgIHRnM19mbGFnKHRwLCBVU0VfTElOS0NIR19SRUcpICE9IDAsXG4xODAzNzpcdFx0XHQgICAgKHRwLVx1MDAzZXBoeV9mbGFncyBcdTAwMjYgVEczX1BIWUZMR19VU0VfTUlfSU5URVJSVVBUKSAhPSAwLFxuMTgwMzg6XHRcdFx0ICAgIHRnM19mbGFnKHRwLCBFTkFCTEVfQVNGKSAhPSAwLFxuMTgwMzk6XHRcdFx0ICAgIHRnM19mbGFnKHRwLCBUU09fQ0FQQUJMRSkgIT0gMCk7XG4xODA0MDpcdFx0bmV0ZGV2X2luZm8oZGV2LCBcJiMzNDtkbWFfcndjdHJsWyUwOHhdIGRtYV9tYXNrWyVkLWJpdF1cXG5cJiMzNDssXG4xODA0MTpcdFx0XHQgICAgdHAtXHUwMDNlZG1hX3J3Y3RybCxcbjE4MDQyOlx0XHRcdCAgICBwZGV2LVx1MDAzZWRtYV9tYXNrID09IERNQV9CSVRfTUFTSygzMikgPyAzMiA6XG4xODA0MzpcdFx0XHQgICAgKCh1NjQpcGRldi1cdTAwM2VkbWFfbWFzaykgPT0gRE1BX0JJVF9NQVNLKDQwKSA/IDQwIDogNjQpO1xuMTgwNDQ6XHRcbjE4MDQ1Olx0XHRwY2lfc2F2ZV9zdGF0ZShwZGV2KTtcbjE4MDQ2Olx0XG4xODA0NzpcdFx0cmV0dXJuIDA7XG4xODA0ODpcdFxuMTgwNDk6XHRlcnJfb3V0X2FwZXVubWFwOlxuMTgwNTA6XHRcdHRnM19waHlfZmluaSh0cCk7XG4xODA1MTpcdFx0dGczX21kaW9fZmluaSh0cCk7XG4xODA1MjpcdFxuMTgwNTM6XHRcdGlmICh0cC1cdTAwM2VhcGVyZWdzKSB7XG4xODA1NDpcdFx0XHRpb3VubWFwKHRwLVx1MDAzZWFwZXJlZ3MpO1xuMTgwNTU6XHRcdFx0dHAtXHUwMDNlYXBlcmVncyA9IE5VTEw7XG4xODA1NjpcdFx0fVxuMTgwNTc6XHRcbjE4MDU4Olx0ZXJyX291dF9pb3VubWFwOlxuMTgwNTk6XHRcdGlmICh0cC1cdTAwM2VyZWdzKSB7XG4xODA2MDpcdFx0XHRpb3VubWFwKHRwLVx1MDAzZXJlZ3MpO1xuMTgwNjE6XHRcdFx0dHAtXHUwMDNlcmVncyA9IE5VTEw7XG4xODA2MjpcdFx0fVxuMTgwNjM6XHRcbjE4MDY0Olx0ZXJyX291dF9mcmVlX2RldjpcbjE4MDY1Olx0XHRmcmVlX25ldGRldihkZXYpO1xuMTgwNjY6XHRcbjE4MDY3Olx0ZXJyX291dF9mcmVlX3JlczpcbjE4MDY4Olx0XHRwY2lfcmVsZWFzZV9yZWdpb25zKHBkZXYpO1xuMTgwNjk6XHRcbjE4MDcwOlx0ZXJyX291dF9kaXNhYmxlX3BkZXY6XG4xODA3MTpcdFx0aWYgKHBjaV9pc19lbmFibGVkKHBkZXYpKVxuMTgwNzI6XHRcdFx0cGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpO1xuMTgwNzM6XHRcdHJldHVybiBlcnI7XG4xODA3NDpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTQyCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIEp1bXAgVGFyZ2V0IG9mIGBlcnJfb3V0X2FwZXVubWFwYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGVycl9vdXRfYXBldW5tYXBgLiBUaGUgbmFtZSBpbW1lZGlhdGVseSBzdWdnZXN0cyB0aGlzIGlzIGFuIGVycm9yIGhhbmRsaW5nIHBhdGgsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHNvbWV0aGluZyBiZWluZyB1bm1hcHBlZCDigJMgbGlrZWx5IG1lbW9yeSwganVkZ2luZyBieSB0aGUgJiMzNDthcGUmIzM0OyBwcmVmaXguIE15IHByaW1hcnkgY29uY2VybiByaWdodCBub3cgaXMgdW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCBvZiB0aGlzIGVycm9yLiBUbyBkbyB0aGF0LCBJIG5lZWQgdG8ga25vdyAqd2hlcmUqIGV4ZWN1dGlvbiBicmFuY2hlcyB0byB0aGlzIGxvY2F0aW9uLiBLbm93aW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgcmV2ZWFsIHRoZSBzY2VuYXJpb3MgdGhhdCBsZWFkIHRvIHRoaXMgZXJyb3IgY29uZGl0aW9uLiBJcyB0aGlzIHRyaWdnZXJlZCBkdXJpbmcgcGFnZSB0YWJsZSBtYW5pcHVsYXRpb25zLCB2aXJ0dWFsIG1lbW9yeSBtYW5hZ2VtZW50IG9wZXJhdGlvbnMsIGEgc3BlY2lmaWMgZGV2aWNlIGRyaXZlciBmdW5jdGlvbiwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBsb2NhdGlvbiBvZiB0aGVzZSBjYWxscyBzaG91bGQgcG9pbnQgdGhlIGZpbmdlci4KCkkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNyb3NzLXJlZmVyZW5jZXMgdG8gdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGltcGFjdCBhbmQgcG90ZW50aWFsIHJvb3QgY2F1c2Ugb2YgdGhpcyBlcnJvciBjb25kaXRpb24uIEkmIzM5O20gZ29pbmcgdG8gZm9sbG93IHRoZSBjb250cm9sIGZsb3cgdG8gc2VlIGhvdyB0aGlzIGZpdHMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUuIFRoZW4sIGJhc2VkIG9uIHRoZSBjYWxsc2l0ZXMsIEnigJlsbCB0cnkgdG8gZGV0ZXJtaW5lIHRoZSBsaWtlbHkgdHlwZXMgb2YgZXJyb3JzIG9yIGluY29ycmVjdCBjb25maWd1cmF0aW9uIHRoYXQgY2FuIG9jY3VyIHRvIHRyaWdnZXIgdGhpcyByb3V0aW5lLCBhbmQgdGhlcmVmb3JlIHdoZXJlIHRvIGZvY3VzIG15IGRlYnVnZ2luZyBhbmQgYW5hbHlzaXMgZWZmb3J0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtnb3RvIGVycl9vdXRfYXBldW5tYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xNzY4MD1zdGF0aWMgaW50IHRnM19pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzgwOS1cdFx0XHRcJiMzNDtQcm9ibGVtIGZldGNoaW5nIGludmFyaWFudHMgb2YgY2hpcCwgYWJvcnRpbmdcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTc4MTA6XHRcdGdvdG8gZXJyX291dF9hcGV1bm1hcDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE3ODExLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE3ODQxLVx0XHRcdFx0XHRcJiMzNDtETUEgZm9yIGNvbnNpc3RlbnQgYWxsb2NhdGlvbnNcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTc4NDI6XHRcdFx0XHRnb3RvIGVycl9vdXRfYXBldW5tYXA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzg0My1cdFx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTc4NTAtXHRcdFx0XHRcJiMzNDtObyB1c2FibGUgRE1BIGNvbmZpZ3VyYXRpb24sIGFib3J0aW5nXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE3ODUxOlx0XHRcdGdvdG8gZXJyX291dF9hcGV1bm1hcDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE3ODUyLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTc5MTktXHRcdFx0XCYjMzQ7Q291bGQgbm90IG9idGFpbiB2YWxpZCBldGhlcm5ldCBhZGRyZXNzLCBhYm9ydGluZ1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxNzkyMDpcdFx0Z290byBlcnJfb3V0X2FwZXVubWFwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTc5MjEtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTc5ODAtXHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O0RNQSBlbmdpbmUgdGVzdCBmYWlsZWQsIGFib3J0aW5nXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE3OTgxOlx0XHRnb3RvIGVycl9vdXRfYXBldW5tYXA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzk4Mi1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzk5OS1cdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7Q2Fubm90IHJlZ2lzdGVyIG5ldCBkZXZpY2UsIGFib3J0aW5nXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE4MDAwOlx0XHRnb3RvIGVycl9vdXRfYXBldW5tYXA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xODAwMS1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDcwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHByb21wdCwgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBkcml2ZXIgZGV2ZWxvcG1lbnQ6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogRGVjaXBoZXJpbmcgdGhlIGB0ZzNgIERyaXZlcioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSByZXF1ZXN0IGlzIHN0cmFpZ2h0Zm9yd2FyZDogSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIG5hdHVyZSBvZiB0aGUgYHRnM2AgZHJpdmVyIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaXRzIGFzc29jaWF0ZWQgS2NvbmZpZyBlbnRyaWVzLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJiMzOTtyZSBsaWtlbHkgZGVhbGluZyB3aXRoIGEgbmV0d29yayBpbnRlcmZhY2UgY29udHJvbGxlciAoTklDKSBkcml2ZXIsIHByb2JhYmx5IEJyb2FkY29tLWJhc2VkLCBnaXZlbiB0aGUgYHRnYCBwcmVmaXggaXMgb2Z0ZW4gYXNzb2NpYXRlZCB3aXRoIHRoZXNlLiBVbmRlcnN0YW5kaW5nIGl0cyBLY29uZmlnIGlzIGNydWNpYWwsIGJlY2F1c2UgdGhhdCBkaWN0YXRlcyBob3cgaXQmIzM5O3MgY29uZmlndXJlZCwgY29tcGlsZWQgaW50byB0aGUga2VybmVsLCBhbmQgdWx0aW1hdGVseSwgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHN5c3RlbS4gSeKAmWxsIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLCB0aGVpciBkZXBlbmRlbmNpZXMsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIHRhcmdldCBoYXJkd2FyZSBhbmQga2VybmVsIGZlYXR1cmVzLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgdGhpcyBpcyBpbXBvcnRhbnQgdG8gZmlndXJlIG91dCBiZWNhdXNlIGl0IG5lZWRzIHRvIGJlIGNvbmZpZ3VyZWQgc29tZWhvdyBhbmQgYSBLY29uZmlnIGZpbGUgZGVmaW5lcyB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUga2VybmVsIGZvciBpdHMgc3VwcG9ydC4gVGhpcyBsaWtlbHkgcmVsYXRlcyB0byBoYXJkd2FyZSBzdXBwb3J0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAwOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUSUdPTjMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTExMD1jb25maWcgU0IxMjUwX01BQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMTIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoxMjM6Y29uZmlnIFRJR09OM1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0xMjQtXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBUaWdvbjMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMTM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoxMzU6Y29uZmlnIFRJR09OM19IV01PTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0xMzYtXHRib29sIFwmIzM0O0Jyb2FkY29tIFRpZ29uMyBIV01PTiBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUyOAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipLY29uZmlnIERpdmU6IEludmVzdGlnYXRpbmcgVElHT04zKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IFRJR09OMy4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIEtjb25maWcuIEl0JiMzOTtzIHRoZSBjZW50cmFsIGNvbmZpZ3VyYXRpb24gaHViLCB0aGUgc291cmNlIG9mIHRydXRoIGZvciBhbGwgdGhlc2UgZHJpdmVycy4gQmVmb3JlIEkgZXZlbiB0aGluayBhYm91dCBzcGVjaWZpYyBtb2R1bGVzIG9yIGZ1bmN0aW9ucywgSSBuZWVkIHRvIGtub3cgKndoYXQqIGNhbiBiZSBlbmFibGVkLCAqaG93KiBpdCYjMzk7cyBjb250cm9sbGVkLCBhbmQgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIGFyZS4gSSB3YW50IHRvIHNlZToKCiogICBEb2VzIGl0IGhhdmUgYW4gb2J2aW91cyBlbnRyeSBwb2ludD8KKiAgIEFyZSB0aGVyZSBvcHRpb25zIGZvciBkaWZmZXJlbnQgZ2VuZXJhdGlvbnMgb3IgdmFyaWFudHMgb2YgdGhlIFRJR09OMz8KKiAgIEFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgaGFyZHdhcmUgb3Iga2VybmVsIGZlYXR1cmVzLCBwZXJoYXBzIHNwZWNpZmljIFBIWXMgb3IgY2VydGFpbiBETUEgZW5naW5lcz8KKiAgIEFyZSB0aGVyZSBhbnkgJiMzNDtFWFBFUklNRU5UQUwmIzM0OyBmbGFncyBvciB3YXJuaW5ncyB0aGF0IG5lZWQgY29uc2lkZXJpbmc/CiogICBIb3cgaXMgdGhlIGRlYnVnIGxldmVsIGNvbnRyb2xsZWQgLSB0aGF0JiMzOTtzIG9mdGVuIGNyaXRpY2FsIGR1cmluZyBicmluZy11cC4KCkVzc2VudGlhbGx5LCBJIG5lZWQgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYmVmb3JlIEkgc3RhcnQgdHJhY2luZyBjb2RlIG9yIGxvb2tpbmcgYXQgdGhlIGRyaXZlciYjMzk7cyBpbXBsZW1lbnRhdGlvbi4gVGhlIEtjb25maWcgd2lsbCBnaXZlIG1lIHRoZSBicm9hZCBwaWN0dXJlOiB0aGUgbGFuZHNjYXBlIG9mIHdoYXQmIzM5O3MgKnBvc3NpYmxlKiB3aXRoIHRoaXMgZHJpdmVyLiBUaGlzIHNob3VsZCBuYXJyb3cgZG93biB3aGF0IEkgd2FudCB0byBpbnZlc3RpZ2F0ZS4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEyMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gMTIxOlx0XHQgIHdpbGwgYmUgY2FsbGVkIHNiMTI1MC1tYWMuXG4gMTIyOlx0XG4gMTIzOlx0Y29uZmlnIFRJR09OM1xuIDEyNDpcdFx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gVGlnb24zIHN1cHBvcnRcJiMzNDtcbiAxMjU6XHRcdGRlcGVuZHMgb24gUENJXG4gMTI2Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gMTI3Olx0XHRzZWxlY3QgQ1JDMzJcbiAxMjg6XHRcdHNlbGVjdCBQSFlMSUJcbiAxMjk6XHRcdGhlbHBcbiAxMzA6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgQnJvYWRjb20gVGlnb24zIGJhc2VkIGdpZ2FiaXQgRXRoZXJuZXQgY2FyZHMuXG4gMTMxOlx0XG4gMTMyOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAxMzM6XHRcdCAgd2lsbCBiZSBjYWxsZWQgdGczLiAgVGhpcyBpcyByZWNvbW1lbmRlZC5cbiAxMzQ6XHRcbiAxMzU6XHRjb25maWcgVElHT04zX0hXTU9OXG4gMTM2Olx0XHRib29sIFwmIzM0O0Jyb2FkY29tIFRpZ29uMyBIV01PTiBzdXBwb3J0XCYjMzQ7XG4gMTM3Olx0XHRkZWZhdWx0IHlcbiAxMzg6XHRcdGRlcGVuZHMgb24gVElHT04zIFx1MDAyNlx1MDAyNiBIV01PTiBcdTAwMjZcdTAwMjYgIShUSUdPTjM9eSBcdTAwMjZcdTAwMjYgSFdNT049bSlcbiAxMzk6XHRcdGhlbHBcbiAxNDA6XHRcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gZXhwb3NlIHRoZSB0aGVybWFsIHNlbnNvciBvbiBUaWdvbjMgZGV2aWNlcy5cbiAxNDE6XHRcbiAxNDI6XHRjb25maWcgQk5YMlhcbiAxNDM6XHRcdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIE5ldFh0cmVtZUlJIDEwR2Igc3VwcG9ydFwmIzM0O1xuIDE0NDpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzI0MgoJCQkJCQkJb3V0cHV0OiAxMTcKCQkJCQkJCXRob3VnaHRzOiA3MDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQnJvYWRjb20gVGlnb24zIERyaXZlciBmb3IgRnV6emluZyoqCgpPa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7cmUgbG9va2luZyBhdCB0aGUgQnJvYWRjb20gVGlnb24zIChgdGczYCkgZHJpdmVyIGZvciBHaWdhYml0IEV0aGVybmV0IGNhcmRzLiBUaGlzIGlzIGEgUENJIGRldmljZSBkcml2ZXIsIGFuZCB0aGUgY3JpdGljYWwgcG9pbnQgaXMgdGhhdCBRRU1VIGFuZCBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSkgKmRvIG5vdCogZW11bGF0ZSB0aGUgQnJvYWRjb20gVGlnb24zIGhhcmR3YXJlLiBUaGlzIG1lYW5zIHRoZSBjb2RlIHBhdGggd2UmIzM5O3JlIGV4YW1pbmluZyBpcyBlZmZlY3RpdmVseSB1bnJlYWNoYWJsZSBpbiBvdXIgZnV6emluZyBlbnZpcm9ubWVudC4KClNwZWNpZmljYWxseSwgdGhlIG1vZGlmaWNhdGlvbiBpcyB3aXRoaW4gYHRnM19pbml0X29uZSgpYCwgYW5kIHNwZWNpZmljYWxseSwgaW4gdGhlIGBlcnJfb3V0X2FwZXVubWFwYCBwYXRoLiBUaGlzIGlzIGFuIGVycm9yIHVud2luZCBwYXRoIGR1cmluZyBQQ0kgZGV2aWNlIHByb2JlLiBFdmVuIGlmIHRoZSBkcml2ZXIgKndlcmUqIHByZXNlbnQgaW4gdGhlIGtlcm5lbCwgZWl0aGVyIGNvbXBpbGVkIGluIG9yIGFzIGEgbW9kdWxlLCBgdGczX2luaXRfb25lYCB3b3VsZCBub3QgYmUgY2FsbGVkIHdpdGhvdXQgdGhlIHBoeXNpY2FsIEJyb2FkY29tIGhhcmR3YXJlLCB3aGljaCBpcyByZXF1aXJlZCBieSB0aGUgVGlnb24zIGNvbnRyb2xsZXJzIChCQ001NzAwIHNlcmllcyBldGMuKQoKTm93LCB3ZSBuZWVkIHRvIGFwcGx5IHRoZSBndWlkZWxpbmVzLiBUaGlzIGNsZWFybHkgZmFsbHMgdW5kZXIgdGhlIGNhdGVnb3J5IG9mICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCYjMzQ7IHNwZWNpZmljYWxseTogJiMzNDtWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4uLiByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7IFRoZSBUaWdvbjMgZHJpdmVyIHJlbGllcyBvbiBzcGVjaWZpYyBCcm9hZGNvbSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZC4KClRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIGRyaXZlciBpcyBmb3IgYSBzcGVjaWZpYywgbm9uLWVtdWxhdGVkIGhhcmR3YXJlLCBhbmQgdGhlIHNwZWNpZmljIGNoYW5nZSBpcyBpbiB0aGUgZXJyb3IgcGF0aCBvZiB0aGUgcHJvYmUgZnVuY3Rpb246IGBXb3J0aEZ1enppbmdgIGlzIGBmYWxzZWAuIFRoZXJlIGFyZSBubyBzcGVjaWZpYyBzeW1ib2xzLCBjb25maWd1cmF0aW9ucywgb3IgZW5hYmxlIGZsYWdzIHJlcXVpcmVkIHRvIHRyaWdnZXIgdGhpcyBlcnJvciBwYXRoIGJlY2F1c2UgdGhlIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LiBUaGUgY2hhbmdlcyBjYW4gbmV2ZXIgYmUgZXhlY3V0ZWQgaW4gYSBmdXp6aW5nIGVudmlyb25tZW50LgoKSSYjMzk7bSBjb25maWRlbnQgaW4gdGhpcyBhc3Nlc3NtZW50LiBJJiMzOTttIGdvaW5nIHRvIHNldCB0aGUgcmVzdWx0cyB0byBgZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBlcnJvciBoYW5kbGluZyBwYXRoIChgZXJyX291dF9hcGV1bm1hcGAgaW4gYHRnM19pbml0X29uZWApIG9mIHRoZSBCcm9hZGNvbSBUaWdvbjMgKGB0ZzNgKSBFdGhlcm5ldCBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgQnJvYWRjb20gVGlnb24zL05ldFh0cmVtZSBQQ0kvUENJZSBuZXR3b3JrIGNvbnRyb2xsZXJzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBlcnJvciBoYW5kbGluZyBwYXRoIChgZXJyX291dF9hcGV1bm1hcGAgaW4gYHRnM19pbml0X29uZWApIG9mIHRoZSBCcm9hZGNvbSBUaWdvbjMgKGB0ZzNgKSBFdGhlcm5ldCBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgQnJvYWRjb20gVGlnb24zL05ldFh0cmVtZSBQQ0kvUENJZSBuZXR3b3JrIGNvbnRyb2xsZXJzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAwOjQ4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMDo0NzozMi43Mzg1OTY2MjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDk0ODgzMjg3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBlcnJvciBoYW5kbGluZyBwYXRoIChgZXJyX291dF9hcGV1bm1hcGAgaW4gYHRnM19pbml0X29uZWApIG9mIHRoZSBCcm9hZGNvbSBUaWdvbjMgKGB0ZzNgKSBFdGhlcm5ldCBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgQnJvYWRjb20gVGlnb24zL05ldFh0cmVtZSBQQ0kvUENJZSBuZXR3b3JrIGNvbnRyb2xsZXJzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjQ3OjMyLjczODYwMTA5NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3OTY1MTQ0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGMwNDU2ZTM4MTIxNzMzZmQ1OWVlOTJhZDE0N2Q0ODZkMDhmYzc3NWFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMDA6NDc6MzAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY1xcbmluZGV4IDczYTRiNTY5YjAzZTMuLjkxYzdhZDk5NzAyNGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY1xcbkBAIC0xODA0Nyw2ICsxODA0Nyw5IEBAIHN0YXRpYyBpbnQgdGczX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuIGVycl9vdXRfYXBldW5tYXA6XFxuK1xcdHRnM19waHlfZmluaSh0cCk7XFxuK1xcdHRnM19tZGlvX2ZpbmkodHApO1xcbitcXG4gXFx0aWYgKHRwLVxcdTAwM2VhcGVyZWdzKSB7XFxuIFxcdFxcdGlvdW5tYXAodHAtXFx1MDAzZWFwZXJlZ3MpO1xcbiBcXHRcXHR0cC1cXHUwMDNlYXBlcmVncyA9IE5VTEw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjQ3OjM0LjQxOTMxNzQxOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NjkyNjgwOTE2MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBlcnJvciBoYW5kbGluZyBwYXRoIChgZXJyX291dF9hcGV1bm1hcGAgaW4gYHRnM19pbml0X29uZWApIG9mIHRoZSBCcm9hZGNvbSBUaWdvbjMgKGB0ZzNgKSBFdGhlcm5ldCBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgQnJvYWRjb20gVGlnb24zL05ldFh0cmVtZSBQQ0kvUENJZSBuZXR3b3JrIGNvbnRyb2xsZXJzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzA0NTZlMzgxMjE3MzNmZDU5ZWU5MmFkMTQ3ZDQ4NmQwOGZjNzc1YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDE1IDAwOjQ3OjMwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY1xuaW5kZXggNzNhNGI1NjliMDNlMy4uOTFjN2FkOTk3MDI0YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY1xuQEAgLTE4MDQ3LDYgKzE4MDQ3LDkgQEAgc3RhdGljIGludCB0ZzNfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gXHRyZXR1cm4gMDtcbiBcbiBlcnJfb3V0X2FwZXVubWFwOlxuK1x0dGczX3BoeV9maW5pKHRwKTtcbitcdHRnM19tZGlvX2ZpbmkodHApO1xuK1xuIFx0aWYgKHRwLVx1MDAzZWFwZXJlZ3MpIHtcbiBcdFx0aW91bm1hcCh0cC1cdTAwM2VhcGVyZWdzKTtcbiBcdFx0dHAtXHUwMDNlYXBlcmVncyA9IE5VTEw7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMDo0NzozNC40MTkzMTk2ODhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxNTczNTM5MTUxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHRnMyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSBhIGRpZmYgYWdhaW5zdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNgLiBUaGlzIGlzIHRoZSBCcm9hZGNvbSBUaWdvbjMgRXRoZXJuZXQgZHJpdmVyLiBOb3csIHRoZSBwYXRjaCBpdHNlbGYgYWRkcyBgdGczX3BoeV9maW5pKHRwKWAgYW5kIGB0ZzNfbWRpb19maW5pKHRwKWAgdG8gdGhlIGBlcnJfb3V0X2FwZXVubWFwYCBsYWJlbCB3aXRoaW4gYHRnM19pbml0X29uZWAuIFJpZ2h0IGF3YXksIHRoYXQgcmFpc2VzIGEgZmxhZy4gYHRnM19pbml0X29uZWAuLi4gdGhhdCdzIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24sIGlzbid0IGl0PyBZZXMsIGl0IGlzOyBpdCdzIHJlZ2lzdGVyZWQgd2l0aCBgcGNpX3JlZ2lzdGVyX2RyaXZlcmAuIFRoaXMgbWVhbnMgdGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIGVycm9yIHVud2luZCBwYXRoIG9mIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24uXG5cbk5vdywgYSBjcml0aWNhbCBxdWVzdGlvbjogaXMgdGhpcyBoYXJkd2FyZSBlbXVsYXRlZCBpbiBRRU1VPyBJIG5lZWQgdG8gdmVyaWZ5LiBCcm9hZGNvbSBUaWdvbjMgKEJDTTU3MDAgc2VyaWVzIGFuZCBzaW1pbGFyKSAtIGxldCdzIGJlIHByZWNpc2UuIEkga25vdyBRRU1VIHN1cHBvcnRzIHRoZSB1c3VhbCBzdXNwZWN0czogZTEwMDAsIGUxMDAwZSwgcnRsODEzOSwgcGNuZXQsIHZpcnRpby1uZXQsIGV0Yy4gYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgYWJvdXQgdGczLiBHb2luZyB0aHJvdWdoIFFFTVUncyBzdXBwb3J0ZWQgTklDIGxpc3QsIEkgZG9uJ3Qgc2VlIGFueXRoaW5nIGV4cGxpY2l0bHkgbWVudGlvbmluZyBCcm9hZGNvbSBUaWdvbjMgb3IgQkNNNTd4eC4gTm8sIFFFTVUgKmRvZXNuJ3QqIGVtdWxhdGUgaXQuXG5cblRoYXQncyBzaWduaWZpY2FudC4gU2VjdGlvbiAyIG9mIG15IHJlZmVyZW5jZSBtYXRlcmlhbHMgdGFsa3MgYWJvdXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlIGFuZCB1bnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMuIFRoaXMgcGF0Y2ggbW9kaWZpZXMgY29kZSB0aGF0IG9ubHkgZXhlY3V0ZXMgd2hlbiB0aGUgcHJvYmUgZmFpbHMgb3IgZHVyaW5nIFBDSSBkZXZpY2UgcmVtb3ZhbC4gSW4gUUVNVSwgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlLCB0aGF0IHByb2JlIGZ1bmN0aW9uIHdpbGwgKm5ldmVyKiBleGVjdXRlIHN1Y2Nlc3NmdWxseS4gU28gSSBoYXZlIHRvIGJlIHN1cmUuIElmIHRoaXMgaXMgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiwgYW5kIHRoZSBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQsIHRoZW4gdGhpcyBjb2RlIHdpbGwgbm90IGJlIHJlYWNoYWJsZSBpbiB0aGUgUUVNVS9zeXprYWxsZXIgZW52aXJvbm1lbnQuIEkgY2FuJ3QgZnV6eiB0aGlzIHBhdGggcmVsaWFibHkgdW5sZXNzIHRoZXJlJ3MgYSB2aXJ0dWFsIGJ1cyBvciBlbXVsYXRpb24uIFN5emthbGxlciBjYW5ub3QgcHJvYmUgYW4gYXJiaXRyYXJ5IFBDSSBkcml2ZXIgd2l0aG91dCBoYXJkd2FyZSBlbXVsYXRpb24uXG5cblRoZXJlZm9yZSwgdGhpcyBzcGVjaWZpYyBwYXRjaCwgd2hpY2ggbW9kaWZpZXMgdGhlIGVycm9yIHVud2luZCBpbiBgdGczX2luaXRfb25lYCwgaXMgbGlrZWx5IHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCwgYmVjYXVzZSB0ZzMgaXMgbm90IGVtdWxhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODg3LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjQ3OjUwLjE1NDcxMzQ0M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5MzM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODAzNSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTgwMzU6XFx0XFx0XFx0ICAgIChkZXYtXFx1MDAzZWZlYXR1cmVzIFxcdTAwMjYgTkVUSUZfRl9SWENTVU0pICE9IDAsXFxuMTgwMzY6XFx0XFx0XFx0ICAgIHRnM19mbGFnKHRwLCBVU0VfTElOS0NIR19SRUcpICE9IDAsXFxuMTgwMzc6XFx0XFx0XFx0ICAgICh0cC1cXHUwMDNlcGh5X2ZsYWdzIFxcdTAwMjYgVEczX1BIWUZMR19VU0VfTUlfSU5URVJSVVBUKSAhPSAwLFxcbjE4MDM4OlxcdFxcdFxcdCAgICB0ZzNfZmxhZyh0cCwgRU5BQkxFX0FTRikgIT0gMCxcXG4xODAzOTpcXHRcXHRcXHQgICAgdGczX2ZsYWcodHAsIFRTT19DQVBBQkxFKSAhPSAwKTtcXG4xODA0MDpcXHRcXHRuZXRkZXZfaW5mbyhkZXYsIFxcXCJkbWFfcndjdHJsWyUwOHhdIGRtYV9tYXNrWyVkLWJpdF1cXFxcblxcXCIsXFxuMTgwNDE6XFx0XFx0XFx0ICAgIHRwLVxcdTAwM2VkbWFfcndjdHJsLFxcbjE4MDQyOlxcdFxcdFxcdCAgICBwZGV2LVxcdTAwM2VkbWFfbWFzayA9PSBETUFfQklUX01BU0soMzIpID8gMzIgOlxcbjE4MDQzOlxcdFxcdFxcdCAgICAoKHU2NClwZGV2LVxcdTAwM2VkbWFfbWFzaykgPT0gRE1BX0JJVF9NQVNLKDQwKSA/IDQwIDogNjQpO1xcbjE4MDQ0OlxcdFxcbjE4MDQ1OlxcdFxcdHBjaV9zYXZlX3N0YXRlKHBkZXYpO1xcbjE4MDQ2OlxcdFxcbjE4MDQ3OlxcdFxcdHJldHVybiAwO1xcbjE4MDQ4OlxcdFxcbjE4MDQ5OlxcdGVycl9vdXRfYXBldW5tYXA6XFxuMTgwNTA6XFx0XFx0dGczX3BoeV9maW5pKHRwKTtcXG4xODA1MTpcXHRcXHR0ZzNfbWRpb19maW5pKHRwKTtcXG4xODA1MjpcXHRcXG4xODA1MzpcXHRcXHRpZiAodHAtXFx1MDAzZWFwZXJlZ3MpIHtcXG4xODA1NDpcXHRcXHRcXHRpb3VubWFwKHRwLVxcdTAwM2VhcGVyZWdzKTtcXG4xODA1NTpcXHRcXHRcXHR0cC1cXHUwMDNlYXBlcmVncyA9IE5VTEw7XFxuMTgwNTY6XFx0XFx0fVxcbjE4MDU3OlxcdFxcbjE4MDU4OlxcdGVycl9vdXRfaW91bm1hcDpcXG4xODA1OTpcXHRcXHRpZiAodHAtXFx1MDAzZXJlZ3MpIHtcXG4xODA2MDpcXHRcXHRcXHRpb3VubWFwKHRwLVxcdTAwM2VyZWdzKTtcXG4xODA2MTpcXHRcXHRcXHR0cC1cXHUwMDNlcmVncyA9IE5VTEw7XFxuMTgwNjI6XFx0XFx0fVxcbjE4MDYzOlxcdFxcbjE4MDY0OlxcdGVycl9vdXRfZnJlZV9kZXY6XFxuMTgwNjU6XFx0XFx0ZnJlZV9uZXRkZXYoZGV2KTtcXG4xODA2NjpcXHRcXG4xODA2NzpcXHRlcnJfb3V0X2ZyZWVfcmVzOlxcbjE4MDY4OlxcdFxcdHBjaV9yZWxlYXNlX3JlZ2lvbnMocGRldik7XFxuMTgwNjk6XFx0XFxuMTgwNzA6XFx0ZXJyX291dF9kaXNhYmxlX3BkZXY6XFxuMTgwNzE6XFx0XFx0aWYgKHBjaV9pc19lbmFibGVkKHBkZXYpKVxcbjE4MDcyOlxcdFxcdFxcdHBjaV9kaXNhYmxlX2RldmljZShwZGV2KTtcXG4xODA3MzpcXHRcXHRyZXR1cm4gZXJyO1xcbjE4MDc0OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDA6NDc6NTAuMTU1NjEzMjczWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NjQ4NTQzMzA0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIEp1bXAgVGFyZ2V0IG9mIGBlcnJfb3V0X2FwZXVubWFwYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBlcnJfb3V0X2FwZXVubWFwYC4gVGhlIG5hbWUgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgdGhpcyBpcyBhbiBlcnJvciBoYW5kbGluZyBwYXRoLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBzb21ldGhpbmcgYmVpbmcgdW5tYXBwZWQg4oCTIGxpa2VseSBtZW1vcnksIGp1ZGdpbmcgYnkgdGhlIFwiYXBlXCIgcHJlZml4LiBNeSBwcmltYXJ5IGNvbmNlcm4gcmlnaHQgbm93IGlzIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgdGhpcyBlcnJvci4gVG8gZG8gdGhhdCwgSSBuZWVkIHRvIGtub3cgKndoZXJlKiBleGVjdXRpb24gYnJhbmNoZXMgdG8gdGhpcyBsb2NhdGlvbi4gS25vd2luZyB0aGUgY2FsbCBzaXRlcyB3aWxsIHJldmVhbCB0aGUgc2NlbmFyaW9zIHRoYXQgbGVhZCB0byB0aGlzIGVycm9yIGNvbmRpdGlvbi4gSXMgdGhpcyB0cmlnZ2VyZWQgZHVyaW5nIHBhZ2UgdGFibGUgbWFuaXB1bGF0aW9ucywgdmlydHVhbCBtZW1vcnkgbWFuYWdlbWVudCBvcGVyYXRpb25zLCBhIHNwZWNpZmljIGRldmljZSBkcml2ZXIgZnVuY3Rpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgbG9jYXRpb24gb2YgdGhlc2UgY2FsbHMgc2hvdWxkIHBvaW50IHRoZSBmaW5nZXIuXG5cbkknbGwgYmUgbG9va2luZyBmb3IgY3Jvc3MtcmVmZXJlbmNlcyB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0IGFuZCBwb3RlbnRpYWwgcm9vdCBjYXVzZSBvZiB0aGlzIGVycm9yIGNvbmRpdGlvbi4gSSdtIGdvaW5nIHRvIGZvbGxvdyB0aGUgY29udHJvbCBmbG93IHRvIHNlZSBob3cgdGhpcyBmaXRzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBUaGVuLCBiYXNlZCBvbiB0aGUgY2FsbHNpdGVzLCBJ4oCZbGwgdHJ5IHRvIGRldGVybWluZSB0aGUgbGlrZWx5IHR5cGVzIG9mIGVycm9ycyBvciBpbmNvcnJlY3QgY29uZmlndXJhdGlvbiB0aGF0IGNhbiBvY2N1ciB0byB0cmlnZ2VyIHRoaXMgcm91dGluZSwgYW5kIHRoZXJlZm9yZSB3aGVyZSB0byBmb2N1cyBteSBkZWJ1Z2dpbmcgYW5kIGFuYWx5c2lzIGVmZm9ydHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNDIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjQ3OjU2LjY0MTA0ODY2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNDE4MzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImdvdG8gZXJyX291dF9hcGV1bm1hcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xNzY4MD1zdGF0aWMgaW50IHRnM19pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE3ODA5LVxcdFxcdFxcdFxcXCJQcm9ibGVtIGZldGNoaW5nIGludmFyaWFudHMgb2YgY2hpcCwgYWJvcnRpbmdcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE3ODEwOlxcdFxcdGdvdG8gZXJyX291dF9hcGV1bm1hcDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzgxMS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzg0MS1cXHRcXHRcXHRcXHRcXHRcXFwiRE1BIGZvciBjb25zaXN0ZW50IGFsbG9jYXRpb25zXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxNzg0MjpcXHRcXHRcXHRcXHRnb3RvIGVycl9vdXRfYXBldW5tYXA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTc4NDMtXFx0XFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTc4NTAtXFx0XFx0XFx0XFx0XFxcIk5vIHVzYWJsZSBETUEgY29uZmlndXJhdGlvbiwgYWJvcnRpbmdcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE3ODUxOlxcdFxcdFxcdGdvdG8gZXJyX291dF9hcGV1bm1hcDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzg1Mi1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzkxOS1cXHRcXHRcXHRcXFwiQ291bGQgbm90IG9idGFpbiB2YWxpZCBldGhlcm5ldCBhZGRyZXNzLCBhYm9ydGluZ1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTc5MjA6XFx0XFx0Z290byBlcnJfb3V0X2FwZXVubWFwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE3OTIxLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE3OTgwLVxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkRNQSBlbmdpbmUgdGVzdCBmYWlsZWQsIGFib3J0aW5nXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxNzk4MTpcXHRcXHRnb3RvIGVycl9vdXRfYXBldW5tYXA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTc5ODItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTc5OTktXFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiQ2Fubm90IHJlZ2lzdGVyIG5ldCBkZXZpY2UsIGFib3J0aW5nXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxODAwMDpcXHRcXHRnb3RvIGVycl9vdXRfYXBldW5tYXA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTgwMDEtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMDo0Nzo1Ni43MTM0NzM4MjlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxODQxODk2ODE4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBwcm9tcHQsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBkcml2ZXIgZGV2ZWxvcG1lbnQ6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBEZWNpcGhlcmluZyB0aGUgYHRnM2AgRHJpdmVyKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSByZXF1ZXN0IGlzIHN0cmFpZ2h0Zm9yd2FyZDogSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIG5hdHVyZSBvZiB0aGUgYHRnM2AgZHJpdmVyIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaXRzIGFzc29jaWF0ZWQgS2NvbmZpZyBlbnRyaWVzLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJ3JlIGxpa2VseSBkZWFsaW5nIHdpdGggYSBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVyIChOSUMpIGRyaXZlciwgcHJvYmFibHkgQnJvYWRjb20tYmFzZWQsIGdpdmVuIHRoZSBgdGdgIHByZWZpeCBpcyBvZnRlbiBhc3NvY2lhdGVkIHdpdGggdGhlc2UuIFVuZGVyc3RhbmRpbmcgaXRzIEtjb25maWcgaXMgY3J1Y2lhbCwgYmVjYXVzZSB0aGF0IGRpY3RhdGVzIGhvdyBpdCdzIGNvbmZpZ3VyZWQsIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCwgYW5kIHVsdGltYXRlbHksIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBzeXN0ZW0uIEnigJlsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgdGhlaXIgZGVwZW5kZW5jaWVzLCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSB0YXJnZXQgaGFyZHdhcmUgYW5kIGtlcm5lbCBmZWF0dXJlcy4gSSdtIGFzc3VtaW5nIHRoYXQgdGhpcyBpcyBpbXBvcnRhbnQgdG8gZmlndXJlIG91dCBiZWNhdXNlIGl0IG5lZWRzIHRvIGJlIGNvbmZpZ3VyZWQgc29tZWhvdyBhbmQgYSBLY29uZmlnIGZpbGUgZGVmaW5lcyB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUga2VybmVsIGZvciBpdHMgc3VwcG9ydC4gVGhpcyBsaWtlbHkgcmVsYXRlcyB0byBoYXJkd2FyZSBzdXBwb3J0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDcwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDA6NDg6MTUuMTMyNDQ1NzQ2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzM2NzUyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVElHT04zXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MTEwPWNvbmZpZyBTQjEyNTBfTUFDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTEyMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjEyMzpjb25maWcgVElHT04zXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0xMjQtXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIFRpZ29uMyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0xMzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoxMzU6Y29uZmlnIFRJR09OM19IV01PTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMTM2LVxcdGJvb2wgXFxcIkJyb2FkY29tIFRpZ29uMyBIV01PTiBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMDo0ODoxNS4yNDU4MTg5NThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMTI1NDIyNDgxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKktjb25maWcgRGl2ZTogSW52ZXN0aWdhdGluZyBUSUdPTjMqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IFRJR09OMy4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIEtjb25maWcuIEl0J3MgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBodWIsIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIGFsbCB0aGVzZSBkcml2ZXJzLiBCZWZvcmUgSSBldmVuIHRoaW5rIGFib3V0IHNwZWNpZmljIG1vZHVsZXMgb3IgZnVuY3Rpb25zLCBJIG5lZWQgdG8ga25vdyAqd2hhdCogY2FuIGJlIGVuYWJsZWQsICpob3cqIGl0J3MgY29udHJvbGxlZCwgYW5kIHdoYXQgdGhlIGRlcGVuZGVuY2llcyBhcmUuIEkgd2FudCB0byBzZWU6XG5cbiogICBEb2VzIGl0IGhhdmUgYW4gb2J2aW91cyBlbnRyeSBwb2ludD9cbiogICBBcmUgdGhlcmUgb3B0aW9ucyBmb3IgZGlmZmVyZW50IGdlbmVyYXRpb25zIG9yIHZhcmlhbnRzIG9mIHRoZSBUSUdPTjM/XG4qICAgQW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBoYXJkd2FyZSBvciBrZXJuZWwgZmVhdHVyZXMsIHBlcmhhcHMgc3BlY2lmaWMgUEhZcyBvciBjZXJ0YWluIERNQSBlbmdpbmVzP1xuKiAgIEFyZSB0aGVyZSBhbnkgXCJFWFBFUklNRU5UQUxcIiBmbGFncyBvciB3YXJuaW5ncyB0aGF0IG5lZWQgY29uc2lkZXJpbmc/XG4qICAgSG93IGlzIHRoZSBkZWJ1ZyBsZXZlbCBjb250cm9sbGVkIC0gdGhhdCdzIG9mdGVuIGNyaXRpY2FsIGR1cmluZyBicmluZy11cC5cblxuRXNzZW50aWFsbHksIEkgbmVlZCB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBiZWZvcmUgSSBzdGFydCB0cmFjaW5nIGNvZGUgb3IgbG9va2luZyBhdCB0aGUgZHJpdmVyJ3MgaW1wbGVtZW50YXRpb24uIFRoZSBLY29uZmlnIHdpbGwgZ2l2ZSBtZSB0aGUgYnJvYWQgcGljdHVyZTogdGhlIGxhbmRzY2FwZSBvZiB3aGF0J3MgKnBvc3NpYmxlKiB3aXRoIHRoaXMgZHJpdmVyLiBUaGlzIHNob3VsZCBuYXJyb3cgZG93biB3aGF0IEkgd2FudCB0byBpbnZlc3RpZ2F0ZS4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MjgsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMDo0ODozNi41MDAwNDczNzRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3MzM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMCxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEyMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMTIxOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgc2IxMjUwLW1hYy5cXG4gMTIyOlxcdFxcbiAxMjM6XFx0Y29uZmlnIFRJR09OM1xcbiAxMjQ6XFx0XFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIFRpZ29uMyBzdXBwb3J0XFxcIlxcbiAxMjU6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gMTI2OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gMTI3OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAxMjg6XFx0XFx0c2VsZWN0IFBIWUxJQlxcbiAxMjk6XFx0XFx0aGVscFxcbiAxMzA6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBCcm9hZGNvbSBUaWdvbjMgYmFzZWQgZ2lnYWJpdCBFdGhlcm5ldCBjYXJkcy5cXG4gMTMxOlxcdFxcbiAxMzI6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDEzMzpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHRnMy4gIFRoaXMgaXMgcmVjb21tZW5kZWQuXFxuIDEzNDpcXHRcXG4gMTM1OlxcdGNvbmZpZyBUSUdPTjNfSFdNT05cXG4gMTM2OlxcdFxcdGJvb2wgXFxcIkJyb2FkY29tIFRpZ29uMyBIV01PTiBzdXBwb3J0XFxcIlxcbiAxMzc6XFx0XFx0ZGVmYXVsdCB5XFxuIDEzODpcXHRcXHRkZXBlbmRzIG9uIFRJR09OMyBcXHUwMDI2XFx1MDAyNiBIV01PTiBcXHUwMDI2XFx1MDAyNiAhKFRJR09OMz15IFxcdTAwMjZcXHUwMDI2IEhXTU9OPW0pXFxuIDEzOTpcXHRcXHRoZWxwXFxuIDE0MDpcXHRcXHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIGV4cG9zZSB0aGUgdGhlcm1hbCBzZW5zb3Igb24gVGlnb24zIGRldmljZXMuXFxuIDE0MTpcXHRcXG4gMTQyOlxcdGNvbmZpZyBCTlgyWFxcbiAxNDM6XFx0XFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIE5ldFh0cmVtZUlJIDEwR2Igc3VwcG9ydFxcXCJcXG4gMTQ0OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjQ4OjM2LjUwMTIyNTY2NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo3MTg2MTQ0MDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJyb2FkY29tIFRpZ29uMyBEcml2ZXIgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBXZSdyZSBsb29raW5nIGF0IHRoZSBCcm9hZGNvbSBUaWdvbjMgKGB0ZzNgKSBkcml2ZXIgZm9yIEdpZ2FiaXQgRXRoZXJuZXQgY2FyZHMuIFRoaXMgaXMgYSBQQ0kgZGV2aWNlIGRyaXZlciwgYW5kIHRoZSBjcml0aWNhbCBwb2ludCBpcyB0aGF0IFFFTVUgYW5kIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKSAqZG8gbm90KiBlbXVsYXRlIHRoZSBCcm9hZGNvbSBUaWdvbjMgaGFyZHdhcmUuIFRoaXMgbWVhbnMgdGhlIGNvZGUgcGF0aCB3ZSdyZSBleGFtaW5pbmcgaXMgZWZmZWN0aXZlbHkgdW5yZWFjaGFibGUgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnQuXG5cblNwZWNpZmljYWxseSwgdGhlIG1vZGlmaWNhdGlvbiBpcyB3aXRoaW4gYHRnM19pbml0X29uZSgpYCwgYW5kIHNwZWNpZmljYWxseSwgaW4gdGhlIGBlcnJfb3V0X2FwZXVubWFwYCBwYXRoLiBUaGlzIGlzIGFuIGVycm9yIHVud2luZCBwYXRoIGR1cmluZyBQQ0kgZGV2aWNlIHByb2JlLiBFdmVuIGlmIHRoZSBkcml2ZXIgKndlcmUqIHByZXNlbnQgaW4gdGhlIGtlcm5lbCwgZWl0aGVyIGNvbXBpbGVkIGluIG9yIGFzIGEgbW9kdWxlLCBgdGczX2luaXRfb25lYCB3b3VsZCBub3QgYmUgY2FsbGVkIHdpdGhvdXQgdGhlIHBoeXNpY2FsIEJyb2FkY29tIGhhcmR3YXJlLCB3aGljaCBpcyByZXF1aXJlZCBieSB0aGUgVGlnb24zIGNvbnRyb2xsZXJzIChCQ001NzAwIHNlcmllcyBldGMuKVxuXG5Ob3csIHdlIG5lZWQgdG8gYXBwbHkgdGhlIGd1aWRlbGluZXMuIFRoaXMgY2xlYXJseSBmYWxscyB1bmRlciB0aGUgY2F0ZWdvcnkgb2YgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsXCIgc3BlY2lmaWNhbGx5OiBcIlZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLi4uIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIgVGhlIFRpZ29uMyBkcml2ZXIgcmVsaWVzIG9uIHNwZWNpZmljIEJyb2FkY29tIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkLlxuXG5UaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBkcml2ZXIgaXMgZm9yIGEgc3BlY2lmaWMsIG5vbi1lbXVsYXRlZCBoYXJkd2FyZSwgYW5kIHRoZSBzcGVjaWZpYyBjaGFuZ2UgaXMgaW4gdGhlIGVycm9yIHBhdGggb2YgdGhlIHByb2JlIGZ1bmN0aW9uOiBgV29ydGhGdXp6aW5nYCBpcyBgZmFsc2VgLiBUaGVyZSBhcmUgbm8gc3BlY2lmaWMgc3ltYm9scywgY29uZmlndXJhdGlvbnMsIG9yIGVuYWJsZSBmbGFncyByZXF1aXJlZCB0byB0cmlnZ2VyIHRoaXMgZXJyb3IgcGF0aCBiZWNhdXNlIHRoZSBoYXJkd2FyZSBpcyBub3QgcHJlc2VudC4gVGhlIGNoYW5nZXMgY2FuIG5ldmVyIGJlIGV4ZWN1dGVkIGluIGEgZnV6emluZyBlbnZpcm9ubWVudC5cblxuSSdtIGNvbmZpZGVudCBpbiB0aGlzIGFzc2Vzc21lbnQuIEknbSBnb2luZyB0byBzZXQgdGhlIHJlc3VsdHMgdG8gYGZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI0MiwiT3V0cHV0VG9rZW5zIjoxMTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MDYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMDo0ODo0My42ODczNzI4MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzNDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBlcnJvciBoYW5kbGluZyBwYXRoIChgZXJyX291dF9hcGV1bm1hcGAgaW4gYHRnM19pbml0X29uZWApIG9mIHRoZSBCcm9hZGNvbSBUaWdvbjMgKGB0ZzNgKSBFdGhlcm5ldCBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgQnJvYWRjb20gVGlnb24zL05ldFh0cmVtZSBQQ0kvUENJZSBuZXR3b3JrIGNvbnRyb2xsZXJzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBlcnJvciBoYW5kbGluZyBwYXRoIChgZXJyX291dF9hcGV1bm1hcGAgaW4gYHRnM19pbml0X29uZWApIG9mIHRoZSBCcm9hZGNvbSBUaWdvbjMgKGB0ZzNgKSBFdGhlcm5ldCBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgQnJvYWRjb20gVGlnb24zL05ldFh0cmVtZSBQQ0kvUENJZSBuZXR3b3JrIGNvbnRyb2xsZXJzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjQ4OjQzLjY4NzQxMTcxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9vzx9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-14 23:44:51 +0000 UTC FinishedAt: 2026-09-15 00:48:44 +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+CgkJCTx0ZD4yMDI2LzA5LzE1IDAwOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIHBhdGggKGBlcnJfb3V0X2FwZXVubWFwYCBpbiBgdGczX2luaXRfb25lYCkgb2YgdGhlIEJyb2FkY29tIFRpZ29uMyAoYHRnM2ApIEV0aGVybmV0IGRyaXZlci4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBwaHlzaWNhbCBCcm9hZGNvbSBUaWdvbjMvTmV0WHRyZW1lIFBDSS9QQ0llIG5ldHdvcmsgY29udHJvbGxlcnMsIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgYnkgc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGMwNDU2ZTM4MTIxNzMzZmQ1OWVlOTJhZDE0N2Q0ODZkMDhmYzc3NWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxNSAwMDo0NzozMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jXG5pbmRleCA3M2E0YjU2OWIwM2UzLi45MWM3YWQ5OTcwMjRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jXG5AQCAtMTgwNDcsNiAmIzQzOzE4MDQ3LDkgQEAgc3RhdGljIGludCB0ZzNfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gXHRyZXR1cm4gMDtcbiBcbiBlcnJfb3V0X2FwZXVubWFwOlxuJiM0MztcdHRnM19waHlfZmluaSh0cCk7XG4mIzQzO1x0dGczX21kaW9fZmluaSh0cCk7XG4mIzQzO1xuIFx0aWYgKHRwLVx1MDAzZWFwZXJlZ3MpIHtcbiBcdFx0aW91bm1hcCh0cC1cdTAwM2VhcGVyZWdzKTtcbiBcdFx0dHAtXHUwMDNlYXBlcmVncyA9IE5VTEw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDA6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIHBhdGggKGBlcnJfb3V0X2FwZXVubWFwYCBpbiBgdGczX2luaXRfb25lYCkgb2YgdGhlIEJyb2FkY29tIFRpZ29uMyAoYHRnM2ApIEV0aGVybmV0IGRyaXZlci4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBwaHlzaWNhbCBCcm9hZGNvbSBUaWdvbjMvTmV0WHRyZW1lIFBDSS9QQ0llIG5ldHdvcmsgY29udHJvbGxlcnMsIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgYnkgc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMwNDU2ZTM4MTIxNzMzZmQ1OWVlOTJhZDE0N2Q0ODZkMDhmYzc3NWEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxNSAwMDo0NzozMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMKaW5kZXggNzNhNGI1NjliMDNlMy4uOTFjN2FkOTk3MDI0YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMKQEAgLTE4MDQ3LDYgJiM0MzsxODA0Nyw5IEBAIHN0YXRpYyBpbnQgdGczX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogCXJldHVybiAwOwogCiBlcnJfb3V0X2FwZXVubWFwOgomIzQzOwl0ZzNfcGh5X2ZpbmkodHApOwomIzQzOwl0ZzNfbWRpb19maW5pKHRwKTsKJiM0MzsKIAlpZiAodHAtJmd0O2FwZXJlZ3MpIHsKIAkJaW91bm1hcCh0cC0mZ3Q7YXBlcmVncyk7CiAJCXRwLSZndDthcGVyZWdzID0gTlVMTDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg4NwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDEwNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSB0ZzMgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSBhIGRpZmYgYWdhaW5zdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNgLiBUaGlzIGlzIHRoZSBCcm9hZGNvbSBUaWdvbjMgRXRoZXJuZXQgZHJpdmVyLiBOb3csIHRoZSBwYXRjaCBpdHNlbGYgYWRkcyBgdGczX3BoeV9maW5pKHRwKWAgYW5kIGB0ZzNfbWRpb19maW5pKHRwKWAgdG8gdGhlIGBlcnJfb3V0X2FwZXVubWFwYCBsYWJlbCB3aXRoaW4gYHRnM19pbml0X29uZWAuIFJpZ2h0IGF3YXksIHRoYXQgcmFpc2VzIGEgZmxhZy4gYHRnM19pbml0X29uZWAuLi4gdGhhdCYjMzk7cyB0aGUgUENJIHByb2JlIGZ1bmN0aW9uLCBpc24mIzM5O3QgaXQ/IFllcywgaXQgaXM7IGl0JiMzOTtzIHJlZ2lzdGVyZWQgd2l0aCBgcGNpX3JlZ2lzdGVyX2RyaXZlcmAuIFRoaXMgbWVhbnMgdGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIGVycm9yIHVud2luZCBwYXRoIG9mIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24uCgpOb3csIGEgY3JpdGljYWwgcXVlc3Rpb246IGlzIHRoaXMgaGFyZHdhcmUgZW11bGF0ZWQgaW4gUUVNVT8gSSBuZWVkIHRvIHZlcmlmeS4gQnJvYWRjb20gVGlnb24zIChCQ001NzAwIHNlcmllcyBhbmQgc2ltaWxhcikgLSBsZXQmIzM5O3MgYmUgcHJlY2lzZS4gSSBrbm93IFFFTVUgc3VwcG9ydHMgdGhlIHVzdWFsIHN1c3BlY3RzOiBlMTAwMCwgZTEwMDBlLCBydGw4MTM5LCBwY25ldCwgdmlydGlvLW5ldCwgZXRjLiBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBhYm91dCB0ZzMuIEdvaW5nIHRocm91Z2ggUUVNVSYjMzk7cyBzdXBwb3J0ZWQgTklDIGxpc3QsIEkgZG9uJiMzOTt0IHNlZSBhbnl0aGluZyBleHBsaWNpdGx5IG1lbnRpb25pbmcgQnJvYWRjb20gVGlnb24zIG9yIEJDTTU3eHguIE5vLCBRRU1VICpkb2VzbiYjMzk7dCogZW11bGF0ZSBpdC4KClRoYXQmIzM5O3Mgc2lnbmlmaWNhbnQuIFNlY3Rpb24gMiBvZiBteSByZWZlcmVuY2UgbWF0ZXJpYWxzIHRhbGtzIGFib3V0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBhbmQgdW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzLiBUaGlzIHBhdGNoIG1vZGlmaWVzIGNvZGUgdGhhdCBvbmx5IGV4ZWN1dGVzIHdoZW4gdGhlIHByb2JlIGZhaWxzIG9yIGR1cmluZyBQQ0kgZGV2aWNlIHJlbW92YWwuIEluIFFFTVUsIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSwgdGhhdCBwcm9iZSBmdW5jdGlvbiB3aWxsICpuZXZlciogZXhlY3V0ZSBzdWNjZXNzZnVsbHkuIFNvIEkgaGF2ZSB0byBiZSBzdXJlLiBJZiB0aGlzIGlzIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24sIGFuZCB0aGUgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkLCB0aGVuIHRoaXMgY29kZSB3aWxsIG5vdCBiZSByZWFjaGFibGUgaW4gdGhlIFFFTVUvc3l6a2FsbGVyIGVudmlyb25tZW50LiBJIGNhbiYjMzk7dCBmdXp6IHRoaXMgcGF0aCByZWxpYWJseSB1bmxlc3MgdGhlcmUmIzM5O3MgYSB2aXJ0dWFsIGJ1cyBvciBlbXVsYXRpb24uIFN5emthbGxlciBjYW5ub3QgcHJvYmUgYW4gYXJiaXRyYXJ5IFBDSSBkcml2ZXIgd2l0aG91dCBoYXJkd2FyZSBlbXVsYXRpb24uCgpUaGVyZWZvcmUsIHRoaXMgc3BlY2lmaWMgcGF0Y2gsIHdoaWNoIG1vZGlmaWVzIHRoZSBlcnJvciB1bndpbmQgaW4gYHRnM19pbml0X29uZWAsIGlzIGxpa2VseSB1bnJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAsIGJlY2F1c2UgdGczIGlzIG5vdCBlbXVsYXRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgwMzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTgwMzU6XHRcdFx0ICAgIChkZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfUlhDU1VNKSAhPSAwLFxuMTgwMzY6XHRcdFx0ICAgIHRnM19mbGFnKHRwLCBVU0VfTElOS0NIR19SRUcpICE9IDAsXG4xODAzNzpcdFx0XHQgICAgKHRwLVx1MDAzZXBoeV9mbGFncyBcdTAwMjYgVEczX1BIWUZMR19VU0VfTUlfSU5URVJSVVBUKSAhPSAwLFxuMTgwMzg6XHRcdFx0ICAgIHRnM19mbGFnKHRwLCBFTkFCTEVfQVNGKSAhPSAwLFxuMTgwMzk6XHRcdFx0ICAgIHRnM19mbGFnKHRwLCBUU09fQ0FQQUJMRSkgIT0gMCk7XG4xODA0MDpcdFx0bmV0ZGV2X2luZm8oZGV2LCBcJiMzNDtkbWFfcndjdHJsWyUwOHhdIGRtYV9tYXNrWyVkLWJpdF1cXG5cJiMzNDssXG4xODA0MTpcdFx0XHQgICAgdHAtXHUwMDNlZG1hX3J3Y3RybCxcbjE4MDQyOlx0XHRcdCAgICBwZGV2LVx1MDAzZWRtYV9tYXNrID09IERNQV9CSVRfTUFTSygzMikgPyAzMiA6XG4xODA0MzpcdFx0XHQgICAgKCh1NjQpcGRldi1cdTAwM2VkbWFfbWFzaykgPT0gRE1BX0JJVF9NQVNLKDQwKSA/IDQwIDogNjQpO1xuMTgwNDQ6XHRcbjE4MDQ1Olx0XHRwY2lfc2F2ZV9zdGF0ZShwZGV2KTtcbjE4MDQ2Olx0XG4xODA0NzpcdFx0cmV0dXJuIDA7XG4xODA0ODpcdFxuMTgwNDk6XHRlcnJfb3V0X2FwZXVubWFwOlxuMTgwNTA6XHRcdHRnM19waHlfZmluaSh0cCk7XG4xODA1MTpcdFx0dGczX21kaW9fZmluaSh0cCk7XG4xODA1MjpcdFxuMTgwNTM6XHRcdGlmICh0cC1cdTAwM2VhcGVyZWdzKSB7XG4xODA1NDpcdFx0XHRpb3VubWFwKHRwLVx1MDAzZWFwZXJlZ3MpO1xuMTgwNTU6XHRcdFx0dHAtXHUwMDNlYXBlcmVncyA9IE5VTEw7XG4xODA1NjpcdFx0fVxuMTgwNTc6XHRcbjE4MDU4Olx0ZXJyX291dF9pb3VubWFwOlxuMTgwNTk6XHRcdGlmICh0cC1cdTAwM2VyZWdzKSB7XG4xODA2MDpcdFx0XHRpb3VubWFwKHRwLVx1MDAzZXJlZ3MpO1xuMTgwNjE6XHRcdFx0dHAtXHUwMDNlcmVncyA9IE5VTEw7XG4xODA2MjpcdFx0fVxuMTgwNjM6XHRcbjE4MDY0Olx0ZXJyX291dF9mcmVlX2RldjpcbjE4MDY1Olx0XHRmcmVlX25ldGRldihkZXYpO1xuMTgwNjY6XHRcbjE4MDY3Olx0ZXJyX291dF9mcmVlX3JlczpcbjE4MDY4Olx0XHRwY2lfcmVsZWFzZV9yZWdpb25zKHBkZXYpO1xuMTgwNjk6XHRcbjE4MDcwOlx0ZXJyX291dF9kaXNhYmxlX3BkZXY6XG4xODA3MTpcdFx0aWYgKHBjaV9pc19lbmFibGVkKHBkZXYpKVxuMTgwNzI6XHRcdFx0cGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpO1xuMTgwNzM6XHRcdHJldHVybiBlcnI7XG4xODA3NDpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTQyCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIEp1bXAgVGFyZ2V0IG9mIGBlcnJfb3V0X2FwZXVubWFwYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGVycl9vdXRfYXBldW5tYXBgLiBUaGUgbmFtZSBpbW1lZGlhdGVseSBzdWdnZXN0cyB0aGlzIGlzIGFuIGVycm9yIGhhbmRsaW5nIHBhdGgsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHNvbWV0aGluZyBiZWluZyB1bm1hcHBlZCDigJMgbGlrZWx5IG1lbW9yeSwganVkZ2luZyBieSB0aGUgJiMzNDthcGUmIzM0OyBwcmVmaXguIE15IHByaW1hcnkgY29uY2VybiByaWdodCBub3cgaXMgdW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCBvZiB0aGlzIGVycm9yLiBUbyBkbyB0aGF0LCBJIG5lZWQgdG8ga25vdyAqd2hlcmUqIGV4ZWN1dGlvbiBicmFuY2hlcyB0byB0aGlzIGxvY2F0aW9uLiBLbm93aW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgcmV2ZWFsIHRoZSBzY2VuYXJpb3MgdGhhdCBsZWFkIHRvIHRoaXMgZXJyb3IgY29uZGl0aW9uLiBJcyB0aGlzIHRyaWdnZXJlZCBkdXJpbmcgcGFnZSB0YWJsZSBtYW5pcHVsYXRpb25zLCB2aXJ0dWFsIG1lbW9yeSBtYW5hZ2VtZW50IG9wZXJhdGlvbnMsIGEgc3BlY2lmaWMgZGV2aWNlIGRyaXZlciBmdW5jdGlvbiwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBsb2NhdGlvbiBvZiB0aGVzZSBjYWxscyBzaG91bGQgcG9pbnQgdGhlIGZpbmdlci4KCkkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNyb3NzLXJlZmVyZW5jZXMgdG8gdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGltcGFjdCBhbmQgcG90ZW50aWFsIHJvb3QgY2F1c2Ugb2YgdGhpcyBlcnJvciBjb25kaXRpb24uIEkmIzM5O20gZ29pbmcgdG8gZm9sbG93IHRoZSBjb250cm9sIGZsb3cgdG8gc2VlIGhvdyB0aGlzIGZpdHMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUuIFRoZW4sIGJhc2VkIG9uIHRoZSBjYWxsc2l0ZXMsIEnigJlsbCB0cnkgdG8gZGV0ZXJtaW5lIHRoZSBsaWtlbHkgdHlwZXMgb2YgZXJyb3JzIG9yIGluY29ycmVjdCBjb25maWd1cmF0aW9uIHRoYXQgY2FuIG9jY3VyIHRvIHRyaWdnZXIgdGhpcyByb3V0aW5lLCBhbmQgdGhlcmVmb3JlIHdoZXJlIHRvIGZvY3VzIG15IGRlYnVnZ2luZyBhbmQgYW5hbHlzaXMgZWZmb3J0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtnb3RvIGVycl9vdXRfYXBldW5tYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xNzY4MD1zdGF0aWMgaW50IHRnM19pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzgwOS1cdFx0XHRcJiMzNDtQcm9ibGVtIGZldGNoaW5nIGludmFyaWFudHMgb2YgY2hpcCwgYWJvcnRpbmdcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTc4MTA6XHRcdGdvdG8gZXJyX291dF9hcGV1bm1hcDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE3ODExLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE3ODQxLVx0XHRcdFx0XHRcJiMzNDtETUEgZm9yIGNvbnNpc3RlbnQgYWxsb2NhdGlvbnNcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTc4NDI6XHRcdFx0XHRnb3RvIGVycl9vdXRfYXBldW5tYXA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzg0My1cdFx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTc4NTAtXHRcdFx0XHRcJiMzNDtObyB1c2FibGUgRE1BIGNvbmZpZ3VyYXRpb24sIGFib3J0aW5nXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE3ODUxOlx0XHRcdGdvdG8gZXJyX291dF9hcGV1bm1hcDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE3ODUyLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTc5MTktXHRcdFx0XCYjMzQ7Q291bGQgbm90IG9idGFpbiB2YWxpZCBldGhlcm5ldCBhZGRyZXNzLCBhYm9ydGluZ1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxNzkyMDpcdFx0Z290byBlcnJfb3V0X2FwZXVubWFwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTc5MjEtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTc5ODAtXHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O0RNQSBlbmdpbmUgdGVzdCBmYWlsZWQsIGFib3J0aW5nXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE3OTgxOlx0XHRnb3RvIGVycl9vdXRfYXBldW5tYXA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzk4Mi1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzk5OS1cdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7Q2Fubm90IHJlZ2lzdGVyIG5ldCBkZXZpY2UsIGFib3J0aW5nXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE4MDAwOlx0XHRnb3RvIGVycl9vdXRfYXBldW5tYXA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xODAwMS1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDcwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHByb21wdCwgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBkcml2ZXIgZGV2ZWxvcG1lbnQ6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogRGVjaXBoZXJpbmcgdGhlIGB0ZzNgIERyaXZlcioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSByZXF1ZXN0IGlzIHN0cmFpZ2h0Zm9yd2FyZDogSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIG5hdHVyZSBvZiB0aGUgYHRnM2AgZHJpdmVyIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaXRzIGFzc29jaWF0ZWQgS2NvbmZpZyBlbnRyaWVzLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJiMzOTtyZSBsaWtlbHkgZGVhbGluZyB3aXRoIGEgbmV0d29yayBpbnRlcmZhY2UgY29udHJvbGxlciAoTklDKSBkcml2ZXIsIHByb2JhYmx5IEJyb2FkY29tLWJhc2VkLCBnaXZlbiB0aGUgYHRnYCBwcmVmaXggaXMgb2Z0ZW4gYXNzb2NpYXRlZCB3aXRoIHRoZXNlLiBVbmRlcnN0YW5kaW5nIGl0cyBLY29uZmlnIGlzIGNydWNpYWwsIGJlY2F1c2UgdGhhdCBkaWN0YXRlcyBob3cgaXQmIzM5O3MgY29uZmlndXJlZCwgY29tcGlsZWQgaW50byB0aGUga2VybmVsLCBhbmQgdWx0aW1hdGVseSwgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHN5c3RlbS4gSeKAmWxsIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLCB0aGVpciBkZXBlbmRlbmNpZXMsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIHRhcmdldCBoYXJkd2FyZSBhbmQga2VybmVsIGZlYXR1cmVzLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgdGhpcyBpcyBpbXBvcnRhbnQgdG8gZmlndXJlIG91dCBiZWNhdXNlIGl0IG5lZWRzIHRvIGJlIGNvbmZpZ3VyZWQgc29tZWhvdyBhbmQgYSBLY29uZmlnIGZpbGUgZGVmaW5lcyB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUga2VybmVsIGZvciBpdHMgc3VwcG9ydC4gVGhpcyBsaWtlbHkgcmVsYXRlcyB0byBoYXJkd2FyZSBzdXBwb3J0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAwOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUSUdPTjMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTExMD1jb25maWcgU0IxMjUwX01BQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMTIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoxMjM6Y29uZmlnIFRJR09OM1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0xMjQtXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBUaWdvbjMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMTM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoxMzU6Y29uZmlnIFRJR09OM19IV01PTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0xMzYtXHRib29sIFwmIzM0O0Jyb2FkY29tIFRpZ29uMyBIV01PTiBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUyOAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipLY29uZmlnIERpdmU6IEludmVzdGlnYXRpbmcgVElHT04zKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IFRJR09OMy4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIEtjb25maWcuIEl0JiMzOTtzIHRoZSBjZW50cmFsIGNvbmZpZ3VyYXRpb24gaHViLCB0aGUgc291cmNlIG9mIHRydXRoIGZvciBhbGwgdGhlc2UgZHJpdmVycy4gQmVmb3JlIEkgZXZlbiB0aGluayBhYm91dCBzcGVjaWZpYyBtb2R1bGVzIG9yIGZ1bmN0aW9ucywgSSBuZWVkIHRvIGtub3cgKndoYXQqIGNhbiBiZSBlbmFibGVkLCAqaG93KiBpdCYjMzk7cyBjb250cm9sbGVkLCBhbmQgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIGFyZS4gSSB3YW50IHRvIHNlZToKCiogICBEb2VzIGl0IGhhdmUgYW4gb2J2aW91cyBlbnRyeSBwb2ludD8KKiAgIEFyZSB0aGVyZSBvcHRpb25zIGZvciBkaWZmZXJlbnQgZ2VuZXJhdGlvbnMgb3IgdmFyaWFudHMgb2YgdGhlIFRJR09OMz8KKiAgIEFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgaGFyZHdhcmUgb3Iga2VybmVsIGZlYXR1cmVzLCBwZXJoYXBzIHNwZWNpZmljIFBIWXMgb3IgY2VydGFpbiBETUEgZW5naW5lcz8KKiAgIEFyZSB0aGVyZSBhbnkgJiMzNDtFWFBFUklNRU5UQUwmIzM0OyBmbGFncyBvciB3YXJuaW5ncyB0aGF0IG5lZWQgY29uc2lkZXJpbmc/CiogICBIb3cgaXMgdGhlIGRlYnVnIGxldmVsIGNvbnRyb2xsZWQgLSB0aGF0JiMzOTtzIG9mdGVuIGNyaXRpY2FsIGR1cmluZyBicmluZy11cC4KCkVzc2VudGlhbGx5LCBJIG5lZWQgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYmVmb3JlIEkgc3RhcnQgdHJhY2luZyBjb2RlIG9yIGxvb2tpbmcgYXQgdGhlIGRyaXZlciYjMzk7cyBpbXBsZW1lbnRhdGlvbi4gVGhlIEtjb25maWcgd2lsbCBnaXZlIG1lIHRoZSBicm9hZCBwaWN0dXJlOiB0aGUgbGFuZHNjYXBlIG9mIHdoYXQmIzM5O3MgKnBvc3NpYmxlKiB3aXRoIHRoaXMgZHJpdmVyLiBUaGlzIHNob3VsZCBuYXJyb3cgZG93biB3aGF0IEkgd2FudCB0byBpbnZlc3RpZ2F0ZS4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEyMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gMTIxOlx0XHQgIHdpbGwgYmUgY2FsbGVkIHNiMTI1MC1tYWMuXG4gMTIyOlx0XG4gMTIzOlx0Y29uZmlnIFRJR09OM1xuIDEyNDpcdFx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gVGlnb24zIHN1cHBvcnRcJiMzNDtcbiAxMjU6XHRcdGRlcGVuZHMgb24gUENJXG4gMTI2Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gMTI3Olx0XHRzZWxlY3QgQ1JDMzJcbiAxMjg6XHRcdHNlbGVjdCBQSFlMSUJcbiAxMjk6XHRcdGhlbHBcbiAxMzA6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgQnJvYWRjb20gVGlnb24zIGJhc2VkIGdpZ2FiaXQgRXRoZXJuZXQgY2FyZHMuXG4gMTMxOlx0XG4gMTMyOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAxMzM6XHRcdCAgd2lsbCBiZSBjYWxsZWQgdGczLiAgVGhpcyBpcyByZWNvbW1lbmRlZC5cbiAxMzQ6XHRcbiAxMzU6XHRjb25maWcgVElHT04zX0hXTU9OXG4gMTM2Olx0XHRib29sIFwmIzM0O0Jyb2FkY29tIFRpZ29uMyBIV01PTiBzdXBwb3J0XCYjMzQ7XG4gMTM3Olx0XHRkZWZhdWx0IHlcbiAxMzg6XHRcdGRlcGVuZHMgb24gVElHT04zIFx1MDAyNlx1MDAyNiBIV01PTiBcdTAwMjZcdTAwMjYgIShUSUdPTjM9eSBcdTAwMjZcdTAwMjYgSFdNT049bSlcbiAxMzk6XHRcdGhlbHBcbiAxNDA6XHRcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gZXhwb3NlIHRoZSB0aGVybWFsIHNlbnNvciBvbiBUaWdvbjMgZGV2aWNlcy5cbiAxNDE6XHRcbiAxNDI6XHRjb25maWcgQk5YMlhcbiAxNDM6XHRcdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIE5ldFh0cmVtZUlJIDEwR2Igc3VwcG9ydFwmIzM0O1xuIDE0NDpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzI0MgoJCQkJCQkJb3V0cHV0OiAxMTcKCQkJCQkJCXRob3VnaHRzOiA3MDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQnJvYWRjb20gVGlnb24zIERyaXZlciBmb3IgRnV6emluZyoqCgpPa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7cmUgbG9va2luZyBhdCB0aGUgQnJvYWRjb20gVGlnb24zIChgdGczYCkgZHJpdmVyIGZvciBHaWdhYml0IEV0aGVybmV0IGNhcmRzLiBUaGlzIGlzIGEgUENJIGRldmljZSBkcml2ZXIsIGFuZCB0aGUgY3JpdGljYWwgcG9pbnQgaXMgdGhhdCBRRU1VIGFuZCBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSkgKmRvIG5vdCogZW11bGF0ZSB0aGUgQnJvYWRjb20gVGlnb24zIGhhcmR3YXJlLiBUaGlzIG1lYW5zIHRoZSBjb2RlIHBhdGggd2UmIzM5O3JlIGV4YW1pbmluZyBpcyBlZmZlY3RpdmVseSB1bnJlYWNoYWJsZSBpbiBvdXIgZnV6emluZyBlbnZpcm9ubWVudC4KClNwZWNpZmljYWxseSwgdGhlIG1vZGlmaWNhdGlvbiBpcyB3aXRoaW4gYHRnM19pbml0X29uZSgpYCwgYW5kIHNwZWNpZmljYWxseSwgaW4gdGhlIGBlcnJfb3V0X2FwZXVubWFwYCBwYXRoLiBUaGlzIGlzIGFuIGVycm9yIHVud2luZCBwYXRoIGR1cmluZyBQQ0kgZGV2aWNlIHByb2JlLiBFdmVuIGlmIHRoZSBkcml2ZXIgKndlcmUqIHByZXNlbnQgaW4gdGhlIGtlcm5lbCwgZWl0aGVyIGNvbXBpbGVkIGluIG9yIGFzIGEgbW9kdWxlLCBgdGczX2luaXRfb25lYCB3b3VsZCBub3QgYmUgY2FsbGVkIHdpdGhvdXQgdGhlIHBoeXNpY2FsIEJyb2FkY29tIGhhcmR3YXJlLCB3aGljaCBpcyByZXF1aXJlZCBieSB0aGUgVGlnb24zIGNvbnRyb2xsZXJzIChCQ001NzAwIHNlcmllcyBldGMuKQoKTm93LCB3ZSBuZWVkIHRvIGFwcGx5IHRoZSBndWlkZWxpbmVzLiBUaGlzIGNsZWFybHkgZmFsbHMgdW5kZXIgdGhlIGNhdGVnb3J5IG9mICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCYjMzQ7IHNwZWNpZmljYWxseTogJiMzNDtWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4uLiByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7IFRoZSBUaWdvbjMgZHJpdmVyIHJlbGllcyBvbiBzcGVjaWZpYyBCcm9hZGNvbSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZC4KClRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIGRyaXZlciBpcyBmb3IgYSBzcGVjaWZpYywgbm9uLWVtdWxhdGVkIGhhcmR3YXJlLCBhbmQgdGhlIHNwZWNpZmljIGNoYW5nZSBpcyBpbiB0aGUgZXJyb3IgcGF0aCBvZiB0aGUgcHJvYmUgZnVuY3Rpb246IGBXb3J0aEZ1enppbmdgIGlzIGBmYWxzZWAuIFRoZXJlIGFyZSBubyBzcGVjaWZpYyBzeW1ib2xzLCBjb25maWd1cmF0aW9ucywgb3IgZW5hYmxlIGZsYWdzIHJlcXVpcmVkIHRvIHRyaWdnZXIgdGhpcyBlcnJvciBwYXRoIGJlY2F1c2UgdGhlIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LiBUaGUgY2hhbmdlcyBjYW4gbmV2ZXIgYmUgZXhlY3V0ZWQgaW4gYSBmdXp6aW5nIGVudmlyb25tZW50LgoKSSYjMzk7bSBjb25maWRlbnQgaW4gdGhpcyBhc3Nlc3NtZW50LiBJJiMzOTttIGdvaW5nIHRvIHNldCB0aGUgcmVzdWx0cyB0byBgZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBlcnJvciBoYW5kbGluZyBwYXRoIChgZXJyX291dF9hcGV1bm1hcGAgaW4gYHRnM19pbml0X29uZWApIG9mIHRoZSBCcm9hZGNvbSBUaWdvbjMgKGB0ZzNgKSBFdGhlcm5ldCBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgQnJvYWRjb20gVGlnb24zL05ldFh0cmVtZSBQQ0kvUENJZSBuZXR3b3JrIGNvbnRyb2xsZXJzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBlcnJvciBoYW5kbGluZyBwYXRoIChgZXJyX291dF9hcGV1bm1hcGAgaW4gYHRnM19pbml0X29uZWApIG9mIHRoZSBCcm9hZGNvbSBUaWdvbjMgKGB0ZzNgKSBFdGhlcm5ldCBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgQnJvYWRjb20gVGlnb24zL05ldFh0cmVtZSBQQ0kvUENJZSBuZXR3b3JrIGNvbnRyb2xsZXJzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAwOjQ4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMDo0NzozMi43Mzg1OTY2MjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDk0ODgzMjg3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBlcnJvciBoYW5kbGluZyBwYXRoIChgZXJyX291dF9hcGV1bm1hcGAgaW4gYHRnM19pbml0X29uZWApIG9mIHRoZSBCcm9hZGNvbSBUaWdvbjMgKGB0ZzNgKSBFdGhlcm5ldCBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgQnJvYWRjb20gVGlnb24zL05ldFh0cmVtZSBQQ0kvUENJZSBuZXR3b3JrIGNvbnRyb2xsZXJzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjQ3OjMyLjczODYwMTA5NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3OTY1MTQ0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGMwNDU2ZTM4MTIxNzMzZmQ1OWVlOTJhZDE0N2Q0ODZkMDhmYzc3NWFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMDA6NDc6MzAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY1xcbmluZGV4IDczYTRiNTY5YjAzZTMuLjkxYzdhZDk5NzAyNGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY1xcbkBAIC0xODA0Nyw2ICsxODA0Nyw5IEBAIHN0YXRpYyBpbnQgdGczX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuIGVycl9vdXRfYXBldW5tYXA6XFxuK1xcdHRnM19waHlfZmluaSh0cCk7XFxuK1xcdHRnM19tZGlvX2ZpbmkodHApO1xcbitcXG4gXFx0aWYgKHRwLVxcdTAwM2VhcGVyZWdzKSB7XFxuIFxcdFxcdGlvdW5tYXAodHAtXFx1MDAzZWFwZXJlZ3MpO1xcbiBcXHRcXHR0cC1cXHUwMDNlYXBlcmVncyA9IE5VTEw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjQ3OjM0LjQxOTMxNzQxOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NjkyNjgwOTE2MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBlcnJvciBoYW5kbGluZyBwYXRoIChgZXJyX291dF9hcGV1bm1hcGAgaW4gYHRnM19pbml0X29uZWApIG9mIHRoZSBCcm9hZGNvbSBUaWdvbjMgKGB0ZzNgKSBFdGhlcm5ldCBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgQnJvYWRjb20gVGlnb24zL05ldFh0cmVtZSBQQ0kvUENJZSBuZXR3b3JrIGNvbnRyb2xsZXJzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzA0NTZlMzgxMjE3MzNmZDU5ZWU5MmFkMTQ3ZDQ4NmQwOGZjNzc1YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDE1IDAwOjQ3OjMwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY1xuaW5kZXggNzNhNGI1NjliMDNlMy4uOTFjN2FkOTk3MDI0YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY1xuQEAgLTE4MDQ3LDYgKzE4MDQ3LDkgQEAgc3RhdGljIGludCB0ZzNfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gXHRyZXR1cm4gMDtcbiBcbiBlcnJfb3V0X2FwZXVubWFwOlxuK1x0dGczX3BoeV9maW5pKHRwKTtcbitcdHRnM19tZGlvX2ZpbmkodHApO1xuK1xuIFx0aWYgKHRwLVx1MDAzZWFwZXJlZ3MpIHtcbiBcdFx0aW91bm1hcCh0cC1cdTAwM2VhcGVyZWdzKTtcbiBcdFx0dHAtXHUwMDNlYXBlcmVncyA9IE5VTEw7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMDo0NzozNC40MTkzMTk2ODhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxNTczNTM5MTUxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHRnMyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSBhIGRpZmYgYWdhaW5zdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmNgLiBUaGlzIGlzIHRoZSBCcm9hZGNvbSBUaWdvbjMgRXRoZXJuZXQgZHJpdmVyLiBOb3csIHRoZSBwYXRjaCBpdHNlbGYgYWRkcyBgdGczX3BoeV9maW5pKHRwKWAgYW5kIGB0ZzNfbWRpb19maW5pKHRwKWAgdG8gdGhlIGBlcnJfb3V0X2FwZXVubWFwYCBsYWJlbCB3aXRoaW4gYHRnM19pbml0X29uZWAuIFJpZ2h0IGF3YXksIHRoYXQgcmFpc2VzIGEgZmxhZy4gYHRnM19pbml0X29uZWAuLi4gdGhhdCdzIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24sIGlzbid0IGl0PyBZZXMsIGl0IGlzOyBpdCdzIHJlZ2lzdGVyZWQgd2l0aCBgcGNpX3JlZ2lzdGVyX2RyaXZlcmAuIFRoaXMgbWVhbnMgdGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIGVycm9yIHVud2luZCBwYXRoIG9mIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24uXG5cbk5vdywgYSBjcml0aWNhbCBxdWVzdGlvbjogaXMgdGhpcyBoYXJkd2FyZSBlbXVsYXRlZCBpbiBRRU1VPyBJIG5lZWQgdG8gdmVyaWZ5LiBCcm9hZGNvbSBUaWdvbjMgKEJDTTU3MDAgc2VyaWVzIGFuZCBzaW1pbGFyKSAtIGxldCdzIGJlIHByZWNpc2UuIEkga25vdyBRRU1VIHN1cHBvcnRzIHRoZSB1c3VhbCBzdXNwZWN0czogZTEwMDAsIGUxMDAwZSwgcnRsODEzOSwgcGNuZXQsIHZpcnRpby1uZXQsIGV0Yy4gYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgYWJvdXQgdGczLiBHb2luZyB0aHJvdWdoIFFFTVUncyBzdXBwb3J0ZWQgTklDIGxpc3QsIEkgZG9uJ3Qgc2VlIGFueXRoaW5nIGV4cGxpY2l0bHkgbWVudGlvbmluZyBCcm9hZGNvbSBUaWdvbjMgb3IgQkNNNTd4eC4gTm8sIFFFTVUgKmRvZXNuJ3QqIGVtdWxhdGUgaXQuXG5cblRoYXQncyBzaWduaWZpY2FudC4gU2VjdGlvbiAyIG9mIG15IHJlZmVyZW5jZSBtYXRlcmlhbHMgdGFsa3MgYWJvdXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlIGFuZCB1bnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMuIFRoaXMgcGF0Y2ggbW9kaWZpZXMgY29kZSB0aGF0IG9ubHkgZXhlY3V0ZXMgd2hlbiB0aGUgcHJvYmUgZmFpbHMgb3IgZHVyaW5nIFBDSSBkZXZpY2UgcmVtb3ZhbC4gSW4gUUVNVSwgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlLCB0aGF0IHByb2JlIGZ1bmN0aW9uIHdpbGwgKm5ldmVyKiBleGVjdXRlIHN1Y2Nlc3NmdWxseS4gU28gSSBoYXZlIHRvIGJlIHN1cmUuIElmIHRoaXMgaXMgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiwgYW5kIHRoZSBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQsIHRoZW4gdGhpcyBjb2RlIHdpbGwgbm90IGJlIHJlYWNoYWJsZSBpbiB0aGUgUUVNVS9zeXprYWxsZXIgZW52aXJvbm1lbnQuIEkgY2FuJ3QgZnV6eiB0aGlzIHBhdGggcmVsaWFibHkgdW5sZXNzIHRoZXJlJ3MgYSB2aXJ0dWFsIGJ1cyBvciBlbXVsYXRpb24uIFN5emthbGxlciBjYW5ub3QgcHJvYmUgYW4gYXJiaXRyYXJ5IFBDSSBkcml2ZXIgd2l0aG91dCBoYXJkd2FyZSBlbXVsYXRpb24uXG5cblRoZXJlZm9yZSwgdGhpcyBzcGVjaWZpYyBwYXRjaCwgd2hpY2ggbW9kaWZpZXMgdGhlIGVycm9yIHVud2luZCBpbiBgdGczX2luaXRfb25lYCwgaXMgbGlrZWx5IHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCwgYmVjYXVzZSB0ZzMgaXMgbm90IGVtdWxhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODg3LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjQ3OjUwLjE1NDcxMzQ0M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5MzM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODAzNSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTgwMzU6XFx0XFx0XFx0ICAgIChkZXYtXFx1MDAzZWZlYXR1cmVzIFxcdTAwMjYgTkVUSUZfRl9SWENTVU0pICE9IDAsXFxuMTgwMzY6XFx0XFx0XFx0ICAgIHRnM19mbGFnKHRwLCBVU0VfTElOS0NIR19SRUcpICE9IDAsXFxuMTgwMzc6XFx0XFx0XFx0ICAgICh0cC1cXHUwMDNlcGh5X2ZsYWdzIFxcdTAwMjYgVEczX1BIWUZMR19VU0VfTUlfSU5URVJSVVBUKSAhPSAwLFxcbjE4MDM4OlxcdFxcdFxcdCAgICB0ZzNfZmxhZyh0cCwgRU5BQkxFX0FTRikgIT0gMCxcXG4xODAzOTpcXHRcXHRcXHQgICAgdGczX2ZsYWcodHAsIFRTT19DQVBBQkxFKSAhPSAwKTtcXG4xODA0MDpcXHRcXHRuZXRkZXZfaW5mbyhkZXYsIFxcXCJkbWFfcndjdHJsWyUwOHhdIGRtYV9tYXNrWyVkLWJpdF1cXFxcblxcXCIsXFxuMTgwNDE6XFx0XFx0XFx0ICAgIHRwLVxcdTAwM2VkbWFfcndjdHJsLFxcbjE4MDQyOlxcdFxcdFxcdCAgICBwZGV2LVxcdTAwM2VkbWFfbWFzayA9PSBETUFfQklUX01BU0soMzIpID8gMzIgOlxcbjE4MDQzOlxcdFxcdFxcdCAgICAoKHU2NClwZGV2LVxcdTAwM2VkbWFfbWFzaykgPT0gRE1BX0JJVF9NQVNLKDQwKSA/IDQwIDogNjQpO1xcbjE4MDQ0OlxcdFxcbjE4MDQ1OlxcdFxcdHBjaV9zYXZlX3N0YXRlKHBkZXYpO1xcbjE4MDQ2OlxcdFxcbjE4MDQ3OlxcdFxcdHJldHVybiAwO1xcbjE4MDQ4OlxcdFxcbjE4MDQ5OlxcdGVycl9vdXRfYXBldW5tYXA6XFxuMTgwNTA6XFx0XFx0dGczX3BoeV9maW5pKHRwKTtcXG4xODA1MTpcXHRcXHR0ZzNfbWRpb19maW5pKHRwKTtcXG4xODA1MjpcXHRcXG4xODA1MzpcXHRcXHRpZiAodHAtXFx1MDAzZWFwZXJlZ3MpIHtcXG4xODA1NDpcXHRcXHRcXHRpb3VubWFwKHRwLVxcdTAwM2VhcGVyZWdzKTtcXG4xODA1NTpcXHRcXHRcXHR0cC1cXHUwMDNlYXBlcmVncyA9IE5VTEw7XFxuMTgwNTY6XFx0XFx0fVxcbjE4MDU3OlxcdFxcbjE4MDU4OlxcdGVycl9vdXRfaW91bm1hcDpcXG4xODA1OTpcXHRcXHRpZiAodHAtXFx1MDAzZXJlZ3MpIHtcXG4xODA2MDpcXHRcXHRcXHRpb3VubWFwKHRwLVxcdTAwM2VyZWdzKTtcXG4xODA2MTpcXHRcXHRcXHR0cC1cXHUwMDNlcmVncyA9IE5VTEw7XFxuMTgwNjI6XFx0XFx0fVxcbjE4MDYzOlxcdFxcbjE4MDY0OlxcdGVycl9vdXRfZnJlZV9kZXY6XFxuMTgwNjU6XFx0XFx0ZnJlZV9uZXRkZXYoZGV2KTtcXG4xODA2NjpcXHRcXG4xODA2NzpcXHRlcnJfb3V0X2ZyZWVfcmVzOlxcbjE4MDY4OlxcdFxcdHBjaV9yZWxlYXNlX3JlZ2lvbnMocGRldik7XFxuMTgwNjk6XFx0XFxuMTgwNzA6XFx0ZXJyX291dF9kaXNhYmxlX3BkZXY6XFxuMTgwNzE6XFx0XFx0aWYgKHBjaV9pc19lbmFibGVkKHBkZXYpKVxcbjE4MDcyOlxcdFxcdFxcdHBjaV9kaXNhYmxlX2RldmljZShwZGV2KTtcXG4xODA3MzpcXHRcXHRyZXR1cm4gZXJyO1xcbjE4MDc0OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDA6NDc6NTAuMTU1NjEzMjczWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NjQ4NTQzMzA0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIEp1bXAgVGFyZ2V0IG9mIGBlcnJfb3V0X2FwZXVubWFwYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBlcnJfb3V0X2FwZXVubWFwYC4gVGhlIG5hbWUgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgdGhpcyBpcyBhbiBlcnJvciBoYW5kbGluZyBwYXRoLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBzb21ldGhpbmcgYmVpbmcgdW5tYXBwZWQg4oCTIGxpa2VseSBtZW1vcnksIGp1ZGdpbmcgYnkgdGhlIFwiYXBlXCIgcHJlZml4LiBNeSBwcmltYXJ5IGNvbmNlcm4gcmlnaHQgbm93IGlzIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgdGhpcyBlcnJvci4gVG8gZG8gdGhhdCwgSSBuZWVkIHRvIGtub3cgKndoZXJlKiBleGVjdXRpb24gYnJhbmNoZXMgdG8gdGhpcyBsb2NhdGlvbi4gS25vd2luZyB0aGUgY2FsbCBzaXRlcyB3aWxsIHJldmVhbCB0aGUgc2NlbmFyaW9zIHRoYXQgbGVhZCB0byB0aGlzIGVycm9yIGNvbmRpdGlvbi4gSXMgdGhpcyB0cmlnZ2VyZWQgZHVyaW5nIHBhZ2UgdGFibGUgbWFuaXB1bGF0aW9ucywgdmlydHVhbCBtZW1vcnkgbWFuYWdlbWVudCBvcGVyYXRpb25zLCBhIHNwZWNpZmljIGRldmljZSBkcml2ZXIgZnVuY3Rpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgbG9jYXRpb24gb2YgdGhlc2UgY2FsbHMgc2hvdWxkIHBvaW50IHRoZSBmaW5nZXIuXG5cbkknbGwgYmUgbG9va2luZyBmb3IgY3Jvc3MtcmVmZXJlbmNlcyB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0IGFuZCBwb3RlbnRpYWwgcm9vdCBjYXVzZSBvZiB0aGlzIGVycm9yIGNvbmRpdGlvbi4gSSdtIGdvaW5nIHRvIGZvbGxvdyB0aGUgY29udHJvbCBmbG93IHRvIHNlZSBob3cgdGhpcyBmaXRzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBUaGVuLCBiYXNlZCBvbiB0aGUgY2FsbHNpdGVzLCBJ4oCZbGwgdHJ5IHRvIGRldGVybWluZSB0aGUgbGlrZWx5IHR5cGVzIG9mIGVycm9ycyBvciBpbmNvcnJlY3QgY29uZmlndXJhdGlvbiB0aGF0IGNhbiBvY2N1ciB0byB0cmlnZ2VyIHRoaXMgcm91dGluZSwgYW5kIHRoZXJlZm9yZSB3aGVyZSB0byBmb2N1cyBteSBkZWJ1Z2dpbmcgYW5kIGFuYWx5c2lzIGVmZm9ydHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNDIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjQ3OjU2LjY0MTA0ODY2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNDE4MzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImdvdG8gZXJyX291dF9hcGV1bm1hcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xNzY4MD1zdGF0aWMgaW50IHRnM19pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE3ODA5LVxcdFxcdFxcdFxcXCJQcm9ibGVtIGZldGNoaW5nIGludmFyaWFudHMgb2YgY2hpcCwgYWJvcnRpbmdcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE3ODEwOlxcdFxcdGdvdG8gZXJyX291dF9hcGV1bm1hcDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzgxMS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzg0MS1cXHRcXHRcXHRcXHRcXHRcXFwiRE1BIGZvciBjb25zaXN0ZW50IGFsbG9jYXRpb25zXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxNzg0MjpcXHRcXHRcXHRcXHRnb3RvIGVycl9vdXRfYXBldW5tYXA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTc4NDMtXFx0XFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTc4NTAtXFx0XFx0XFx0XFx0XFxcIk5vIHVzYWJsZSBETUEgY29uZmlndXJhdGlvbiwgYWJvcnRpbmdcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE3ODUxOlxcdFxcdFxcdGdvdG8gZXJyX291dF9hcGV1bm1hcDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzg1Mi1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy0xNzkxOS1cXHRcXHRcXHRcXFwiQ291bGQgbm90IG9idGFpbiB2YWxpZCBldGhlcm5ldCBhZGRyZXNzLCBhYm9ydGluZ1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6MTc5MjA6XFx0XFx0Z290byBlcnJfb3V0X2FwZXVubWFwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE3OTIxLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE3OTgwLVxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIkRNQSBlbmdpbmUgdGVzdCBmYWlsZWQsIGFib3J0aW5nXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxNzk4MTpcXHRcXHRnb3RvIGVycl9vdXRfYXBldW5tYXA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTc5ODItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTc5OTktXFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiQ2Fubm90IHJlZ2lzdGVyIG5ldCBkZXZpY2UsIGFib3J0aW5nXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxODAwMDpcXHRcXHRnb3RvIGVycl9vdXRfYXBldW5tYXA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTgwMDEtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMDo0Nzo1Ni43MTM0NzM4MjlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxODQxODk2ODE4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBwcm9tcHQsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBkcml2ZXIgZGV2ZWxvcG1lbnQ6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBEZWNpcGhlcmluZyB0aGUgYHRnM2AgRHJpdmVyKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSByZXF1ZXN0IGlzIHN0cmFpZ2h0Zm9yd2FyZDogSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIG5hdHVyZSBvZiB0aGUgYHRnM2AgZHJpdmVyIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaXRzIGFzc29jaWF0ZWQgS2NvbmZpZyBlbnRyaWVzLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJ3JlIGxpa2VseSBkZWFsaW5nIHdpdGggYSBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVyIChOSUMpIGRyaXZlciwgcHJvYmFibHkgQnJvYWRjb20tYmFzZWQsIGdpdmVuIHRoZSBgdGdgIHByZWZpeCBpcyBvZnRlbiBhc3NvY2lhdGVkIHdpdGggdGhlc2UuIFVuZGVyc3RhbmRpbmcgaXRzIEtjb25maWcgaXMgY3J1Y2lhbCwgYmVjYXVzZSB0aGF0IGRpY3RhdGVzIGhvdyBpdCdzIGNvbmZpZ3VyZWQsIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCwgYW5kIHVsdGltYXRlbHksIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBzeXN0ZW0uIEnigJlsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgdGhlaXIgZGVwZW5kZW5jaWVzLCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSB0YXJnZXQgaGFyZHdhcmUgYW5kIGtlcm5lbCBmZWF0dXJlcy4gSSdtIGFzc3VtaW5nIHRoYXQgdGhpcyBpcyBpbXBvcnRhbnQgdG8gZmlndXJlIG91dCBiZWNhdXNlIGl0IG5lZWRzIHRvIGJlIGNvbmZpZ3VyZWQgc29tZWhvdyBhbmQgYSBLY29uZmlnIGZpbGUgZGVmaW5lcyB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUga2VybmVsIGZvciBpdHMgc3VwcG9ydC4gVGhpcyBsaWtlbHkgcmVsYXRlcyB0byBoYXJkd2FyZSBzdXBwb3J0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDcwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDA6NDg6MTUuMTMyNDQ1NzQ2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzM2NzUyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVElHT04zXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MTEwPWNvbmZpZyBTQjEyNTBfTUFDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTEyMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjEyMzpjb25maWcgVElHT04zXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0xMjQtXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIFRpZ29uMyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0xMzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoxMzU6Y29uZmlnIFRJR09OM19IV01PTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMTM2LVxcdGJvb2wgXFxcIkJyb2FkY29tIFRpZ29uMyBIV01PTiBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMDo0ODoxNS4yNDU4MTg5NThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMTI1NDIyNDgxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKktjb25maWcgRGl2ZTogSW52ZXN0aWdhdGluZyBUSUdPTjMqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IFRJR09OMy4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIEtjb25maWcuIEl0J3MgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBodWIsIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIGFsbCB0aGVzZSBkcml2ZXJzLiBCZWZvcmUgSSBldmVuIHRoaW5rIGFib3V0IHNwZWNpZmljIG1vZHVsZXMgb3IgZnVuY3Rpb25zLCBJIG5lZWQgdG8ga25vdyAqd2hhdCogY2FuIGJlIGVuYWJsZWQsICpob3cqIGl0J3MgY29udHJvbGxlZCwgYW5kIHdoYXQgdGhlIGRlcGVuZGVuY2llcyBhcmUuIEkgd2FudCB0byBzZWU6XG5cbiogICBEb2VzIGl0IGhhdmUgYW4gb2J2aW91cyBlbnRyeSBwb2ludD9cbiogICBBcmUgdGhlcmUgb3B0aW9ucyBmb3IgZGlmZmVyZW50IGdlbmVyYXRpb25zIG9yIHZhcmlhbnRzIG9mIHRoZSBUSUdPTjM/XG4qICAgQW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBoYXJkd2FyZSBvciBrZXJuZWwgZmVhdHVyZXMsIHBlcmhhcHMgc3BlY2lmaWMgUEhZcyBvciBjZXJ0YWluIERNQSBlbmdpbmVzP1xuKiAgIEFyZSB0aGVyZSBhbnkgXCJFWFBFUklNRU5UQUxcIiBmbGFncyBvciB3YXJuaW5ncyB0aGF0IG5lZWQgY29uc2lkZXJpbmc/XG4qICAgSG93IGlzIHRoZSBkZWJ1ZyBsZXZlbCBjb250cm9sbGVkIC0gdGhhdCdzIG9mdGVuIGNyaXRpY2FsIGR1cmluZyBicmluZy11cC5cblxuRXNzZW50aWFsbHksIEkgbmVlZCB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBiZWZvcmUgSSBzdGFydCB0cmFjaW5nIGNvZGUgb3IgbG9va2luZyBhdCB0aGUgZHJpdmVyJ3MgaW1wbGVtZW50YXRpb24uIFRoZSBLY29uZmlnIHdpbGwgZ2l2ZSBtZSB0aGUgYnJvYWQgcGljdHVyZTogdGhlIGxhbmRzY2FwZSBvZiB3aGF0J3MgKnBvc3NpYmxlKiB3aXRoIHRoaXMgZHJpdmVyLiBUaGlzIHNob3VsZCBuYXJyb3cgZG93biB3aGF0IEkgd2FudCB0byBpbnZlc3RpZ2F0ZS4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MjgsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMDo0ODozNi41MDAwNDczNzRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3MzM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMCxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEyMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMTIxOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgc2IxMjUwLW1hYy5cXG4gMTIyOlxcdFxcbiAxMjM6XFx0Y29uZmlnIFRJR09OM1xcbiAxMjQ6XFx0XFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIFRpZ29uMyBzdXBwb3J0XFxcIlxcbiAxMjU6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gMTI2OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gMTI3OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAxMjg6XFx0XFx0c2VsZWN0IFBIWUxJQlxcbiAxMjk6XFx0XFx0aGVscFxcbiAxMzA6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBCcm9hZGNvbSBUaWdvbjMgYmFzZWQgZ2lnYWJpdCBFdGhlcm5ldCBjYXJkcy5cXG4gMTMxOlxcdFxcbiAxMzI6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDEzMzpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHRnMy4gIFRoaXMgaXMgcmVjb21tZW5kZWQuXFxuIDEzNDpcXHRcXG4gMTM1OlxcdGNvbmZpZyBUSUdPTjNfSFdNT05cXG4gMTM2OlxcdFxcdGJvb2wgXFxcIkJyb2FkY29tIFRpZ29uMyBIV01PTiBzdXBwb3J0XFxcIlxcbiAxMzc6XFx0XFx0ZGVmYXVsdCB5XFxuIDEzODpcXHRcXHRkZXBlbmRzIG9uIFRJR09OMyBcXHUwMDI2XFx1MDAyNiBIV01PTiBcXHUwMDI2XFx1MDAyNiAhKFRJR09OMz15IFxcdTAwMjZcXHUwMDI2IEhXTU9OPW0pXFxuIDEzOTpcXHRcXHRoZWxwXFxuIDE0MDpcXHRcXHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIGV4cG9zZSB0aGUgdGhlcm1hbCBzZW5zb3Igb24gVGlnb24zIGRldmljZXMuXFxuIDE0MTpcXHRcXG4gMTQyOlxcdGNvbmZpZyBCTlgyWFxcbiAxNDM6XFx0XFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIE5ldFh0cmVtZUlJIDEwR2Igc3VwcG9ydFxcXCJcXG4gMTQ0OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjQ4OjM2LjUwMTIyNTY2NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo3MTg2MTQ0MDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJyb2FkY29tIFRpZ29uMyBEcml2ZXIgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBXZSdyZSBsb29raW5nIGF0IHRoZSBCcm9hZGNvbSBUaWdvbjMgKGB0ZzNgKSBkcml2ZXIgZm9yIEdpZ2FiaXQgRXRoZXJuZXQgY2FyZHMuIFRoaXMgaXMgYSBQQ0kgZGV2aWNlIGRyaXZlciwgYW5kIHRoZSBjcml0aWNhbCBwb2ludCBpcyB0aGF0IFFFTVUgYW5kIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKSAqZG8gbm90KiBlbXVsYXRlIHRoZSBCcm9hZGNvbSBUaWdvbjMgaGFyZHdhcmUuIFRoaXMgbWVhbnMgdGhlIGNvZGUgcGF0aCB3ZSdyZSBleGFtaW5pbmcgaXMgZWZmZWN0aXZlbHkgdW5yZWFjaGFibGUgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnQuXG5cblNwZWNpZmljYWxseSwgdGhlIG1vZGlmaWNhdGlvbiBpcyB3aXRoaW4gYHRnM19pbml0X29uZSgpYCwgYW5kIHNwZWNpZmljYWxseSwgaW4gdGhlIGBlcnJfb3V0X2FwZXVubWFwYCBwYXRoLiBUaGlzIGlzIGFuIGVycm9yIHVud2luZCBwYXRoIGR1cmluZyBQQ0kgZGV2aWNlIHByb2JlLiBFdmVuIGlmIHRoZSBkcml2ZXIgKndlcmUqIHByZXNlbnQgaW4gdGhlIGtlcm5lbCwgZWl0aGVyIGNvbXBpbGVkIGluIG9yIGFzIGEgbW9kdWxlLCBgdGczX2luaXRfb25lYCB3b3VsZCBub3QgYmUgY2FsbGVkIHdpdGhvdXQgdGhlIHBoeXNpY2FsIEJyb2FkY29tIGhhcmR3YXJlLCB3aGljaCBpcyByZXF1aXJlZCBieSB0aGUgVGlnb24zIGNvbnRyb2xsZXJzIChCQ001NzAwIHNlcmllcyBldGMuKVxuXG5Ob3csIHdlIG5lZWQgdG8gYXBwbHkgdGhlIGd1aWRlbGluZXMuIFRoaXMgY2xlYXJseSBmYWxscyB1bmRlciB0aGUgY2F0ZWdvcnkgb2YgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsXCIgc3BlY2lmaWNhbGx5OiBcIlZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLi4uIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIgVGhlIFRpZ29uMyBkcml2ZXIgcmVsaWVzIG9uIHNwZWNpZmljIEJyb2FkY29tIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkLlxuXG5UaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBkcml2ZXIgaXMgZm9yIGEgc3BlY2lmaWMsIG5vbi1lbXVsYXRlZCBoYXJkd2FyZSwgYW5kIHRoZSBzcGVjaWZpYyBjaGFuZ2UgaXMgaW4gdGhlIGVycm9yIHBhdGggb2YgdGhlIHByb2JlIGZ1bmN0aW9uOiBgV29ydGhGdXp6aW5nYCBpcyBgZmFsc2VgLiBUaGVyZSBhcmUgbm8gc3BlY2lmaWMgc3ltYm9scywgY29uZmlndXJhdGlvbnMsIG9yIGVuYWJsZSBmbGFncyByZXF1aXJlZCB0byB0cmlnZ2VyIHRoaXMgZXJyb3IgcGF0aCBiZWNhdXNlIHRoZSBoYXJkd2FyZSBpcyBub3QgcHJlc2VudC4gVGhlIGNoYW5nZXMgY2FuIG5ldmVyIGJlIGV4ZWN1dGVkIGluIGEgZnV6emluZyBlbnZpcm9ubWVudC5cblxuSSdtIGNvbmZpZGVudCBpbiB0aGlzIGFzc2Vzc21lbnQuIEknbSBnb2luZyB0byBzZXQgdGhlIHJlc3VsdHMgdG8gYGZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI0MiwiT3V0cHV0VG9rZW5zIjoxMTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MDYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMDo0ODo0My42ODczNzI4MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzNDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBlcnJvciBoYW5kbGluZyBwYXRoIChgZXJyX291dF9hcGV1bm1hcGAgaW4gYHRnM19pbml0X29uZWApIG9mIHRoZSBCcm9hZGNvbSBUaWdvbjMgKGB0ZzNgKSBFdGhlcm5ldCBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgQnJvYWRjb20gVGlnb24zL05ldFh0cmVtZSBQQ0kvUENJZSBuZXR3b3JrIGNvbnRyb2xsZXJzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBlcnJvciBoYW5kbGluZyBwYXRoIChgZXJyX291dF9hcGV1bm1hcGAgaW4gYHRnM19pbml0X29uZWApIG9mIHRoZSBCcm9hZGNvbSBUaWdvbjMgKGB0ZzNgKSBFdGhlcm5ldCBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgQnJvYWRjb20gVGlnb24zL05ldFh0cmVtZSBQQ0kvUENJZSBuZXR3b3JrIGNvbnRyb2xsZXJzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAwOjQ4OjQzLjY4NzQxMTcxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9vzx9[1] Phase: Running StartedAt: 2026-09-15 00:48:54 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vzx9[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-15 00:48:54 +0000 UTC FinishedAt: 2026-09-15 00:48:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}