Name: series-workflowwj7rs Phase: Failed StartedAt: 2026-08-11 07:19:17 +0000 UTC FinishedAt: 2026-08-11 07:42:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rs[0] Phase: Succeeded StartedAt: 2026-08-11 07:19:17 +0000 UTC FinishedAt: 2026-08-11 07:42:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rs[0].run-triage Phase: Succeeded StartedAt: 2026-08-11 07:19:17 +0000 UTC FinishedAt: 2026-08-11 07:42:37 +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+CgkJCTx0ZD4yMDI2LzA4LzExIDA3OjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gKHByb2JlKSBhbmQgdGVhcmRvd24gKHJlbW92ZSkgY2FsbGJhY2tzIGZvciB0aGUgSUJNIEVNQUMgcGxhdGZvcm0gZHJpdmVyLCB3aGljaCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgYm9vdCBvciBzeXNmcyBiaW5kL3VuYmluZCBvcGVyYXRpb25zLiBUaGVzZSBwYXRocyBhcmUgbm90IHN1aXRhYmxlIGZvciBjb250aW51b3VzIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA3OjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNmUwYjUwZWE3YjRiYjBiN2RmYzNiZjI3Y2FmMmU2Y2NlYmI0ZmNkNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDA3OjQxOjI1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmNcbmluZGV4IDc0NTI2MDAyZDUyYmQuLjQyMDI3NjY1ZjJhOTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmNcbkBAIC0zNSw2ICYjNDM7MzUsNyBAQCBpbnQgbWFsX3JlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsIHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpXG4ge1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcbiYjNDM7XHRuZXRkZXZfbG9jayhtYWwtXHUwMDNlbmFwaS5kZXYpO1xuIFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2bWFsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcbiBcdE1BTF9EQkcobWFsLCBcJiMzNDtyZWcoJTA4eCwgJTA4eClcJiMzNDsgTkwsXG5AQCAtNDQsMTggJiM0Mzs0NSwyMCBAQCBpbnQgbWFsX3JlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsIHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpXG4gXHRpZiAoKG1hbC1cdTAwM2V0eF9jaGFuX21hc2sgXHUwMDI2IGNvbW1hYy1cdTAwM2V0eF9jaGFuX21hc2spIHx8XG4gXHQgICAgKG1hbC1cdTAwM2VyeF9jaGFuX21hc2sgXHUwMDI2IGNvbW1hYy1cdTAwM2VyeF9jaGFuX21hc2spKSB7XG4gXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2bWFsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRcdG5ldGRldl91bmxvY2sobWFsLVx1MDAzZW5hcGkuZGV2KTtcbiBcdFx0cHJpbnRrKEtFUk5fV0FSTklORyBcJiMzNDttYWwlZDogQ09NTUFDIGNoYW5uZWxzIGNvbmZsaWN0IVxcblwmIzM0OyxcbiBcdFx0ICAgICAgIG1hbC1cdTAwM2VpbmRleCk7XG4gXHRcdHJldHVybiAtRUJVU1k7XG4gXHR9XG4gXG4gXHRpZiAobGlzdF9lbXB0eShcdTAwMjZtYWwtXHUwMDNlbGlzdCkpXG4tXHRcdG5hcGlfZW5hYmxlKFx1MDAyNm1hbC1cdTAwM2VuYXBpKTtcbiYjNDM7XHRcdG5hcGlfZW5hYmxlX2xvY2tlZChcdTAwMjZtYWwtXHUwMDNlbmFwaSk7XG4gXHRtYWwtXHUwMDNldHhfY2hhbl9tYXNrIHw9IGNvbW1hYy1cdTAwM2V0eF9jaGFuX21hc2s7XG4gXHRtYWwtXHUwMDNlcnhfY2hhbl9tYXNrIHw9IGNvbW1hYy1cdTAwM2VyeF9jaGFuX21hc2s7XG4gXHRsaXN0X2FkZChcdTAwMjZjb21tYWMtXHUwMDNlbGlzdCwgXHUwMDI2bWFsLVx1MDAzZWxpc3QpO1xuIFxuIFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZtYWwtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcdG5ldGRldl91bmxvY2sobWFsLVx1MDAzZW5hcGkuZGV2KTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC02NCw3ICYjNDM7NjcsOSBAQCB2b2lkIG1hbF91bnJlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlXHQqbWFsLFxuIFx0XHRzdHJ1Y3QgbWFsX2NvbW1hYyAqY29tbWFjKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4mIzQzO1x0Ym9vbCBkaXNhYmxlX25hcGk7XG4gXG4mIzQzO1x0bmV0ZGV2X2xvY2sobWFsLVx1MDAzZW5hcGkuZGV2KTtcbiBcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNm1hbC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXG4gXHRNQUxfREJHKG1hbCwgXCYjMzQ7dW5yZWcoJTA4eCwgJTA4eClcJiMzNDsgTkwsXG5AQCAtNzMsMTAgJiM0Mzs3OCwxMiBAQCB2b2lkIG1hbF91bnJlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlXHQqbWFsLFxuIFx0bWFsLVx1MDAzZXR4X2NoYW5fbWFzayBcdTAwMjY9IH5jb21tYWMtXHUwMDNldHhfY2hhbl9tYXNrO1xuIFx0bWFsLVx1MDAzZXJ4X2NoYW5fbWFzayBcdTAwMjY9IH5jb21tYWMtXHUwMDNlcnhfY2hhbl9tYXNrO1xuIFx0bGlzdF9kZWxfaW5pdChcdTAwMjZjb21tYWMtXHUwMDNlbGlzdCk7XG4tXHRpZiAobGlzdF9lbXB0eShcdTAwMjZtYWwtXHUwMDNlbGlzdCkpXG4tXHRcdG5hcGlfZGlzYWJsZShcdTAwMjZtYWwtXHUwMDNlbmFwaSk7XG4mIzQzO1x0ZGlzYWJsZV9uYXBpID0gbGlzdF9lbXB0eShcdTAwMjZtYWwtXHUwMDNlbGlzdCk7XG4gXG4gXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNm1hbC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0aWYgKGRpc2FibGVfbmFwaSlcbiYjNDM7XHRcdG5hcGlfZGlzYWJsZV9sb2NrZWQoXHUwMDI2bWFsLVx1MDAzZW5hcGkpO1xuJiM0MztcdG5ldGRldl91bmxvY2sobWFsLVx1MDAzZW5hcGkuZGV2KTtcbiB9XG4gXG4gaW50IG1hbF9zZXRfcmNicyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsIGludCBjaGFubmVsLCB1bnNpZ25lZCBsb25nIHNpemUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDc6NDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgZHJpdmVyIGluaXRpYWxpemF0aW9uIChwcm9iZSkgYW5kIHRlYXJkb3duIChyZW1vdmUpIGNhbGxiYWNrcyBmb3IgdGhlIElCTSBFTUFDIHBsYXRmb3JtIGRyaXZlciwgd2hpY2ggYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGJvb3Qgb3Igc3lzZnMgYmluZC91bmJpbmQgb3BlcmF0aW9ucy4gVGhlc2UgcGF0aHMgYXJlIG5vdCBzdWl0YWJsZSBmb3IgY29udGludW91cyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDZlMGI1MGVhN2I0YmIwYjdkZmMzYmYyN2NhZjJlNmNjZWJiNGZjZDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxMSAwNzo0MToyNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMKaW5kZXggNzQ1MjYwMDJkNTJiZC4uNDIwMjc2NjVmMmE5MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMKQEAgLTM1LDYgJiM0MzszNSw3IEBAIGludCBtYWxfcmVnaXN0ZXJfY29tbWFjKHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCwgc3RydWN0IG1hbF9jb21tYWMgKmNvbW1hYykKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiYjNDM7CW5ldGRldl9sb2NrKG1hbC0mZ3Q7bmFwaS5kZXYpOwogCXNwaW5fbG9ja19pcnFzYXZlKCZhbXA7bWFsLSZndDtsb2NrLCBmbGFncyk7CiAKIAlNQUxfREJHKG1hbCwgJiMzNDtyZWcoJTA4eCwgJTA4eCkmIzM0OyBOTCwKQEAgLTQ0LDE4ICYjNDM7NDUsMjAgQEAgaW50IG1hbF9yZWdpc3Rlcl9jb21tYWMoc3RydWN0IG1hbF9pbnN0YW5jZSAqbWFsLCBzdHJ1Y3QgbWFsX2NvbW1hYyAqY29tbWFjKQogCWlmICgobWFsLSZndDt0eF9jaGFuX21hc2sgJmFtcDsgY29tbWFjLSZndDt0eF9jaGFuX21hc2spIHx8CiAJICAgIChtYWwtJmd0O3J4X2NoYW5fbWFzayAmYW1wOyBjb21tYWMtJmd0O3J4X2NoYW5fbWFzaykpIHsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO21hbC0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwkJbmV0ZGV2X3VubG9jayhtYWwtJmd0O25hcGkuZGV2KTsKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAmIzM0O21hbCVkOiBDT01NQUMgY2hhbm5lbHMgY29uZmxpY3QhXG4mIzM0OywKIAkJICAgICAgIG1hbC0mZ3Q7aW5kZXgpOwogCQlyZXR1cm4gLUVCVVNZOwogCX0KIAogCWlmIChsaXN0X2VtcHR5KCZhbXA7bWFsLSZndDtsaXN0KSkKLQkJbmFwaV9lbmFibGUoJmFtcDttYWwtJmd0O25hcGkpOwomIzQzOwkJbmFwaV9lbmFibGVfbG9ja2VkKCZhbXA7bWFsLSZndDtuYXBpKTsKIAltYWwtJmd0O3R4X2NoYW5fbWFzayB8PSBjb21tYWMtJmd0O3R4X2NoYW5fbWFzazsKIAltYWwtJmd0O3J4X2NoYW5fbWFzayB8PSBjb21tYWMtJmd0O3J4X2NoYW5fbWFzazsKIAlsaXN0X2FkZCgmYW1wO2NvbW1hYy0mZ3Q7bGlzdCwgJmFtcDttYWwtJmd0O2xpc3QpOwogCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO21hbC0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwluZXRkZXZfdW5sb2NrKG1hbC0mZ3Q7bmFwaS5kZXYpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC02NCw3ICYjNDM7NjcsOSBAQCB2b2lkIG1hbF91bnJlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlCSptYWwsCiAJCXN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKJiM0MzsJYm9vbCBkaXNhYmxlX25hcGk7CiAKJiM0MzsJbmV0ZGV2X2xvY2sobWFsLSZndDtuYXBpLmRldik7CiAJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDttYWwtJmd0O2xvY2ssIGZsYWdzKTsKIAogCU1BTF9EQkcobWFsLCAmIzM0O3VucmVnKCUwOHgsICUwOHgpJiMzNDsgTkwsCkBAIC03MywxMCAmIzQzOzc4LDEyIEBAIHZvaWQgbWFsX3VucmVnaXN0ZXJfY29tbWFjKHN0cnVjdCBtYWxfaW5zdGFuY2UJKm1hbCwKIAltYWwtJmd0O3R4X2NoYW5fbWFzayAmYW1wOz0gfmNvbW1hYy0mZ3Q7dHhfY2hhbl9tYXNrOwogCW1hbC0mZ3Q7cnhfY2hhbl9tYXNrICZhbXA7PSB+Y29tbWFjLSZndDtyeF9jaGFuX21hc2s7CiAJbGlzdF9kZWxfaW5pdCgmYW1wO2NvbW1hYy0mZ3Q7bGlzdCk7Ci0JaWYgKGxpc3RfZW1wdHkoJmFtcDttYWwtJmd0O2xpc3QpKQotCQluYXBpX2Rpc2FibGUoJmFtcDttYWwtJmd0O25hcGkpOwomIzQzOwlkaXNhYmxlX25hcGkgPSBsaXN0X2VtcHR5KCZhbXA7bWFsLSZndDtsaXN0KTsKIAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDttYWwtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsJaWYgKGRpc2FibGVfbmFwaSkKJiM0MzsJCW5hcGlfZGlzYWJsZV9sb2NrZWQoJmFtcDttYWwtJmd0O25hcGkpOwomIzQzOwluZXRkZXZfdW5sb2NrKG1hbC0mZ3Q7bmFwaS5kZXYpOwogfQogCiBpbnQgbWFsX3NldF9yY2JzKHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCwgaW50IGNoYW5uZWwsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDc6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYyOQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuY2AuIE15IGluaXRpYWwgc2NhbiBzaG93cyBhZGRpdGlvbnMgb2YgYG5ldGRldl9sb2NrKClgIGFuZCBgbmV0ZGV2X3VubG9jaygpYCBhcm91bmQgYG1hbC0mZ3Q7bmFwaS5kZXZgIGNhbGxzIHdpdGhpbiBgbWFsX3JlZ2lzdGVyX2NvbW1hY2AgYW5kIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgYSBwYXR0ZXJuIC0gbG9ja2luZyBpbiByZWdpc3RlciBhbmQgdW5yZWdpc3RlciBmdW5jdGlvbnMuIEl0IGFsc28gbG9va3MgbGlrZSBgbmFwaV9lbmFibGVgIGFuZCBgbmFwaV9kaXNhYmxlYCBhcmUgYmVpbmcgc3dhcHBlZCBmb3IgdGhlaXIgbG9ja2VkIHZhcmlhbnRzLCBgbmFwaV9lbmFibGVfbG9ja2VkYCBhbmQgYG5hcGlfZGlzYWJsZV9sb2NrZWRgLiBDbGVhcmx5LCB0aGlzIGlzIHJlbGF0ZWQgdG8gTkFQSSBhbmQgbGlrZWx5IHNvbWUga2luZCBvZiBjb250ZW50aW9uIGlzc3VlLgoKU2luY2UgaXQmIzM5O3MgYW4gSUJNIEVNQUMgZHJpdmVyLCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIFBvd2VyUEMgYXJjaGl0ZWN0dXJlcywgZ2l2ZW4gdGhlaXIgaGlzdG9yaWNhbCB1c2Ugb2YgSUJNIGhhcmR3YXJlLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWdgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBhcmNoaXRlY3R1cmUgY29udGV4dCBhbmQgY2xhcmlmeSB3aHkgdGhlc2UgbG9ja2luZyBjaGFuZ2VzIHdlcmUgbmVjZXNzYXJ5LiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHBsYXRmb3JtIHRoaXMgY29kZSB0YXJnZXRzIHRvIGZ1bGx5IGdyYXNwIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDc6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SUJNX0VNQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6Mjpjb25maWcgSUJNX0VNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0lCTSBFTUFDIEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoxMjpjb25maWcgSUJNX0VNQUNfUlhCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTEzLVx0aW50IFwmIzM0O051bWJlciBvZiByZWNlaXZlIGJ1ZmZlcnNcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MTQ6XHRkZXBlbmRzIG9uIElCTV9FTUFDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTE1LVx0ZGVmYXVsdCBcJiMzNDsxMjhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjE3OmNvbmZpZyBJQk1fRU1BQ19UWEJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMTgtXHRpbnQgXCYjMzQ7TnVtYmVyIG9mIHRyYW5zbWl0IGJ1ZmZlcnNcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MTk6XHRkZXBlbmRzIG9uIElCTV9FTUFDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTIwLVx0ZGVmYXVsdCBcJiMzNDs2NFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0yMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MjI6Y29uZmlnIElCTV9FTUFDX1BPTExfV0VJR0hUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTIzLVx0aW50IFwmIzM0O01BTCBOQVBJIHBvbGxpbmcgd2VpZ2h0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjI0Olx0ZGVwZW5kcyBvbiBJQk1fRU1BQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0yNS1cdGRlZmF1bHQgXCYjMzQ7MzJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjI3OmNvbmZpZyBJQk1fRU1BQ19SWF9DT1BZX1RIUkVTSE9MRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0yOC1cdGludCBcJiMzNDtSWCBza2IgY29weSB0aHJlc2hvbGQgKGJ5dGVzKVwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoyOTpcdGRlcGVuZHMgb24gSUJNX0VNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMzAtXHRkZWZhdWx0IFwmIzM0OzI1NlwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0zMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MzI6Y29uZmlnIElCTV9FTUFDX0RFQlVHXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTMzLVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MzQ6XHRkZXBlbmRzIG9uIElCTV9FTUFDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTM1LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0zOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NDA6Y29uZmlnIElCTV9FTUFDX1pNSUlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNDEtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy00My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NDQ6Y29uZmlnIElCTV9FTUFDX1JHTUlJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTQ1LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjQ4OmNvbmZpZyBJQk1fRU1BQ19UQUhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNDktXHRib29sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy01MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NTI6Y29uZmlnIElCTV9FTUFDX0VNQUM0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTUzLVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjU2OmNvbmZpZyBJQk1fRU1BQ19OT19GTE9XX0NUUkxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNTctXHRib29sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy01OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NjA6Y29uZmlnIElCTV9FTUFDX01BTF9DTFJfSUNJTlRTVEFUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTYxLVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjY0OmNvbmZpZyBJQk1fRU1BQ19NQUxfQ09NTU9OX0VSUlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy02NS1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjczCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIElCTSBFTUFDIERyaXZlciYjMzk7cyBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgZ3V0cyBvZiB0aGlzIGBJQk1fRU1BQ2AgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuIFRpbWUgdG8gY3JhY2sgb3BlbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZ2AuIEkgYWxyZWFkeSBoYXZlIGEgcHJldHR5IGdvb2QgZmVlbCBmb3IgdGhlIGtlcm5lbCYjMzk7cyBLY29uZmlnIHN0cnVjdHVyZSwgc28gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBiZSBhIHN0cmFpZ2h0Zm9yd2FyZCBodW50LiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcywgc3BlY2lmaWNhbGx5IHdoYXQgcHJlcmVxdWlzaXRlcyBuZWVkIHRvIGJlIG1ldCBiZWZvcmUgc29tZW9uZSBjYW4gZXZlbiAqY29uc2lkZXIqIGVuYWJsaW5nIHRoaXMgZHJpdmVyLiBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3JtPyBDZXJ0YWluIGtlcm5lbCBmZWF0dXJlcyBuZWVkaW5nIHRvIGJlIGVuYWJsZWQ/IFRoaXMgaXMgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBob3cgYnJvYWRseSBhcHBsaWNhYmxlLCBvciBuaWNoZSwgdGhpcyBkcml2ZXIgbWlnaHQgYmUuIFVuZGVyc3RhbmRpbmcgdGhlc2UgY29uc3RyYWludHMgaXMgZXNzZW50aWFsIGZvciBteSBsYXJnZXIgYXJjaGl0ZWN0dXJlIGNvbnNpZGVyYXRpb25zIGFuZCBpbXBsZW1lbnRhdGlvbiBzdHJhdGVneSwgSSBuZWVkIHRvIGtub3cgd2hlcmUgdGhpcyBmaXRzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgSUJNX0VNQUNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0lCTSBFTUFDIEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gUFBDX0RDUlxuICAgNTpcdFx0c2VsZWN0IENSQzMyXG4gICA2Olx0XHRzZWxlY3QgUEhZTElCXG4gICA3Olx0XHRoZWxwXG4gICA4Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBJQk0gRU1BQyBmYW1pbHkgb2YgRXRoZXJuZXQgY29udHJvbGxlcnNcbiAgIDk6XHRcdCAgdHlwaWNhbGx5IGZvdW5kIG9uIDR4eCBlbWJlZGRlZCBQb3dlclBDIGNoaXBzLCBidXQgYWxzbyBvbiB0aGVcbiAgMTA6XHRcdCAgQXhvbiBzb3V0aGJyaWRnZSBmb3IgQ2VsbC5cbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgSUJNX0VNQUNfUlhCXG4gIDEzOlx0XHRpbnQgXCYjMzQ7TnVtYmVyIG9mIHJlY2VpdmUgYnVmZmVyc1wmIzM0O1xuICAxNDpcdFx0ZGVwZW5kcyBvbiBJQk1fRU1BQ1xuICAxNTpcdFx0ZGVmYXVsdCBcJiMzNDsxMjhcJiMzNDtcbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgSUJNX0VNQUNfVFhCXG4gIDE4Olx0XHRpbnQgXCYjMzQ7TnVtYmVyIG9mIHRyYW5zbWl0IGJ1ZmZlcnNcJiMzNDtcbiAgMTk6XHRcdGRlcGVuZHMgb24gSUJNX0VNQUNcbiAgMjA6XHRcdGRlZmF1bHQgXCYjMzQ7NjRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODA5CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIFBvd2VyUEMgQ29kZSoqCgpPa2F5LCBzbyB0aGlzIGNvZGUgaXMgY2xlYXJseSBQb3dlclBDLXNwZWNpZmljIGJlY2F1c2Ugb2YgdGhlIGBQUENfRENSYCBkZXBlbmRlbmN5LiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgd2UgY2FuIGV2ZW4gaGl0IHRoaXMgY29kZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gUUVNVSAqZG9lcyogaGF2ZSBhIGBwcGNgIHRhcmdldCwgc28gdGhhdCYjMzk7cyBhIGdvb2Qgc2lnbi4gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIGl0IGVtdWxhdGUgdGhlIElCTSBFTUFDPyBJIHJlbWVtYmVyIFFFTVUgZW11bGF0ZXMgKnNvbWUqIFBvd2VyUEMgYm9hcmRzLiBTcGVjaWZpY2FsbHksIHRoZSAmIzM0O2JhbWJvbyYjMzQ7IGJvYXJkIGlzIGEgUG93ZXJQQyA0NDBFUCwgd2hpY2ggKm1pZ2h0KiBpbmNsdWRlIEVNQUMuIEkgYWxzbyByZWNhbGwgdGhlICYjMzQ7c2FtNDYwZXgmIzM0OyBib2FyZCBoYXZpbmcgRU1BQy4KCkJ1dCBob2xkIG9u4oCmIHRoZSBwcm9tcHQgc3BlY2lmaWVzIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLiBIb3dldmVyLCBRRU1VICpkb2VzKiBlbXVsYXRlIFBvd2VyUEMgNHh4LiBUaGlzIG1ha2VzIG1lIHdvbmRlciBpZiB0aGlzIGlzIHdvcnRoIGludmVzdGlnYXRpbmcgZnVydGhlciBmb3IgZnV6emluZyBwb3RlbnRpYWwuCgpOb3csIHR5cGljYWxseSwgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGZvY3VzIG9uIGZ1enppbmcgUG93ZXJQQyA0eHggYm9hcmRzIGluIGl0cyBkZWZhdWx0IHNldHVwLiBJdCAqY2FuKiBydW4gb24gcHBjNjRsZSBvciBwcGMsIGJ1dCB0aGlzIHNwZWNpZmljIHBpZWNlIG9mIGNvZGUgc2VlbXMgdG8gdGFyZ2V0IGFuIGVtYmVkZGVkIFBvd2VyUEMgZXRoZXJuZXQgY29udHJvbGxlci4gSSBzaG91bGQgY2hlY2sgdG8gc2VlIGlmIHN5emthbGxlciBpcyBhbHJlYWR5IGZ1enppbmcgdGhpcy4gVGhlIGF1dGhvciBpcyBsaXN0ZWQgYXMgYHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDtgLCB3aGljaCBzdWdnZXN0cyB0aGF0IHN5emthbGxlciAqZm91bmQqIGEgYnVnIGhlcmU/IE5vLCB0aGUgYXV0aG9yIG9mIHRoZSBwYXRjaCBqdXN0IGhhcHBlbnMgdG8gYmUgYHN5ei1jbHVzdGVyYCwgYXMgdGhpcyBwYXRjaCBpcyBpbiB0aGUgdGVzdCB3b3Jrc3BhY2UuCgpSaWdodCwgc3l6a2FsbGVyICpkb2VzbiYjMzk7dCogZnV6eiBQb3dlclBDIDR4eC4gQnV0LCBjb3VsZCBpdCBiZSBjb21waWxlZCBvbiBvdGhlciBhcmNoaXRlY3R1cmVzPyBIbW0sIGl0IGdvZXMgYmFjayB0byBgUFBDX0RDUmAuIEkgc2hvdWxkIGNoZWNrIHRoZSBgUFBDX0RDUmAgc2V0dGluZyBpbiBgYXJjaC9wb3dlcnBjL0tjb25maWdgIGZvciBtb3JlIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDc6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBQQ19EQ1ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL0tjb25maWc9NDExPWNvbmZpZyBBUkNIX0hBU19BRERfUEFHRVNcbi0tXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy00MTQtXG5hcmNoL3Bvd2VycGMvS2NvbmZpZzo0MTU6Y29uZmlnIFBQQ19EQ1JfTkFUSVZFXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy00MTYtXHRib29sXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy00MTctXG5hcmNoL3Bvd2VycGMvS2NvbmZpZzo0MTg6Y29uZmlnIFBQQ19EQ1JcbmFyY2gvcG93ZXJwYy9LY29uZmlnLTQxOS1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzIzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBFdmFsdWF0aW9uOiBQb3dlclBDIEVtYmVkZGVkIEV0aGVybmV0IENvbnRyb2xsZXIgTG9ja2luZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYFBQQ19EQ1JgIGlzIGEgUG93ZXJQQy1zcGVjaWZpYyBib29sLCB3aGljaCBtZWFucyB0aGlzIGNvZGUgaXMgb25seSBnb2luZyB0byBiZSByZWxldmFudCBvbiBQb3dlclBDIHBsYXRmb3Jtcy4gVGhlIHF1ZXN0aW9uIGlzOiBjYW4gd2UgaGl0IHRoaXMgY29kZSBpbiBzdGFuZGFyZCBRRU1VPyBZZXMsIFFFTVUgaGFzIGBzYW00NjBleGAgYW5kIGBiYW1ib29gLCB3aGljaCBhcmUgUG93ZXJQQyA0eHggYm9hcmRzIGFuZCAqc2hvdWxkKiBhbGxvdyBtZSB0byBnZXQgdGhlcmUuCgpCdXQsIGhvbGQgb24uIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaC9TbWFydE5JQy9HUFUgZHJpdmVycywgd2hpY2ggcmVseSBvbiBwaHlzaWNhbCBQQ0llIGNhcmRzIHRoYXQgYXJlbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGlzIGlzIGFuIGVtYmVkZGVkIEV0aGVybmV0IGNvbnRyb2xsZXIgb24gYSBQb3dlclBDIFNvQy4gSXQmIzM5O3Mgbm90IGEgUENJZSBjYXJkLiBPa2F5LCBzbyB0aGF0IHNob3VsZG4mIzM5O3QgYmUgYSBibG9ja2VyLgoKRG9lcyBRRU1VIGVtdWxhdGUgdGhlIElCTSBFTUFDPyBJIGRvbiYjMzk7dCBoYXZlIGFjY2VzcyB0byB0aGUgUUVNVSBzb3VyY2UgcmlnaHQgbm93IHRvIHZlcmlmeSwgc28gSSYjMzk7bGwgbGVhbiB0b3dhcmRzIGFzc3VtaW5nIHRoYXQgaWYgaXQmIzM5O3MgYSBjb3JlIHBhcnQgb2YgdGhlIFNvQywgaXQmIzM5O3MgKmxpa2VseSogZW11bGF0ZWQgdG8gc29tZSBkZWdyZWUuCgpXYWl0LCBoZXJlJiMzOTtzIGEgY2xhcmlmaWNhdGlvbjogdGhlIHByb21wdCBzYXlzICYjMzQ7aW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgKmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUqJiMzNDsuIFNvLCB0aGUga2V5IGlzIHRoZSBhYmlsaXR5IHRvIGVtdWxhdGUgdGhlIGhhcmR3YXJlLiBUaGUgcGF0Y2ggYWRkcyBsb2NraW5nIGFyb3VuZCBgbmFwaV9lbmFibGVgIGFuZCBgbmFwaV9kaXNhYmxlYCDigJMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBjb25maWd1cmF0aW9uIG9wdGlvbi4KCk5vdywgaXMgdGhpcyAqd29ydGgqIGZ1enppbmc/IEFyY2hpdGVjdHVyZS1zcGVjaWZpYyBlbWJlZGRlZCBkcml2ZXJzIGZvciBsZWdhY3kgcGxhdGZvcm1zIGxpa2UgUG93ZXJQQyA0eHggYXJlbiYjMzk7dCB0eXBpY2FsbHkgYSB0YXJnZXQgZm9yIHN5emthbGxlciwgd2hpY2ggcHJpbWFyaWx5IGZvY3VzZXMgb24geDg2XzY0LCBhcm02NCwgcmlzY3Y2NCwgZXRjLiB3aXRoIHZpcnRpbyBvciBnZW5lcmljIFBDSSBkZXZpY2VzIGluIFFFTVUuIEJ1dCwgc3l6a2FsbGVyICpkb2VzKiBzdXBwb3J0IGBwcGM2NGxlYC4gSG93ZXZlciwgdGhpcyBpcyBhIDMyLWJpdCBQb3dlclBDLCBub3QgYHBwYzY0bGVgLiBUaGUgY3J1Y2lhbCBwb2ludCBpcyB0aGF0IHRoZSBwcm9tcHQgc3BlY2lmaWVzIHRoYXQgaXQmIzM5O3MgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBRRU1VICphbmQqIEdDRSwgbm90IG5lY2Vzc2FyaWx5IGluIHN5emthbGxlciYjMzk7cyBjdXJyZW50IHNldHVwLgoKU2luY2UgUUVNVSAqZG9lcyogZW11bGF0ZSBQb3dlclBDIDR4eCBib2FyZHMgbGlrZSBgYmFtYm9vYCBhbmQgYHNhbTQ2MGV4YCwgaXQmIzM5O3MgKnRlY2huaWNhbGx5KiByZWFjaGFibGUgaW4gUUVNVS4gU28sIHRoZSBxdWVzdGlvbiByZW1haW5zOiBpcyBpdCB3b3J0aCB0aGUgZWZmb3J0PwoKTGV0JiMzOTtzIHJlLWV4YW1pbmUgdGhlIHBhdGNoLiBJdCBhZGRzIGBuZXRkZXZfbG9jayhtYWwtJmd0O25hcGkuZGV2KWAgYW5kIGBuZXRkZXZfdW5sb2NrKG1hbC0mZ3Q7bmFwaS5kZXYpYCBpbiBgbWFsX3JlZ2lzdGVyX2NvbW1hY2AgYW5kIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93bi4gVGhpcyBraW5kIG9mIGxvY2tpbmcgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nIGlmIHRoZSBkcml2ZXIgaXMgdXNlZCwgYW5kIGl0IGlzIHBvdGVudGlhbGx5IHN1c2NlcHRpYmxlIHRvIHJhY2UgY29uZGl0aW9ucy4gVGhlIGNoYWxsZW5nZSBpcyBqdXN0IGdldHRpbmcgdGhlcmUuCgpUaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBjb2RlICppcyogcmVhY2hhYmxlIGluIFFFTVUgKHVzaW5nIFBvd2VyUEMgNHh4IGVtdWxhdGlvbikgYW5kIHRoZSBsb2NraW5nIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHRoZSBhbnN3ZXIgaXMgV29ydGhGdXp6aW5nPXRydWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA3OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hbF9yZWdpc3Rlcl9jb21tYWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM9Mjk5OD1zdGF0aWMgaW50IGVtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTMwODItXHRkZXYtXHUwMDNlY29tbWFjLnJ4X2NoYW5fbWFzayA9IE1BTF9DSEFOX01BU0soZGV2LVx1MDAzZW1hbF9yeF9jaGFuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzozMDgzOlx0ZXJyID0gbWFsX3JlZ2lzdGVyX2NvbW1hYyhkZXYtXHUwMDNlbWFsLCBcdTAwMjZkZXYtXHUwMDNlY29tbWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0zMDg0LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jPTMyPXN0YXRpYyBpbnQgbWFsX2NvdW50O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMtMzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYzozNDppbnQgbWFsX3JlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsIHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYy0zNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmg9MjU3PXZvaWQgbWFsX2V4aXQodm9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuaC0yNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuaDoyNTk6aW50IG1hbF9yZWdpc3Rlcl9jb21tYWMoc3RydWN0IG1hbF9pbnN0YW5jZSAqbWFsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmgtMjYwLVx0XHRcdHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDk2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC4KCioqTXkgQW5hbHlzaXMgb2YgdGhlIGBjb21tYWNgIERyaXZlciBSZWdpc3RyYXRpb24qKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBhbmQgc3BlY2lmaWNhbGx5IGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBgY29tbWFjYCBoYXJkd2FyZSwgYW5kIEkgc2VlIGEgdmVyeSBjbGVhciByZWdpc3RyYXRpb24gYW5kIHVucmVnaXN0cmF0aW9uIHBhdHRlcm4uIGBtYWxfcmVnaXN0ZXJfY29tbWFjYCBpcyBjYWxsZWQgd2l0aGluIHRoZSBgZW1hY19wcm9iZWAgZnVuY3Rpb24uIFRoYXQmIzM5O3MgZXhhY3RseSBhcyB5b3UmIzM5O2QgZXhwZWN0IGluIGEgcHJvcGVyIGRyaXZlci4gYHByb2JlYCBpcyB3aGVyZSB5b3UmIzM5O3JlIGlkZW50aWZ5aW5nIGFuZCBzZXR0aW5nIHVwIHRoZSBoYXJkd2FyZS4gU28sIGByZWdpc3Rlcl9jb21tYWNgIGlzIHBhcnQgb2YgdGhhdCBpbml0aWFsaXphdGlvbiBwcm9jZXNzLCBsaWtlbHkgaW52b2x2aW5nIGNvbmZpZ3VyaW5nIHRoZSByZWxldmFudCBoYXJkd2FyZSByZXNvdXJjZXMsIGVzdGFibGlzaGluZyBjb21tdW5pY2F0aW9uIGNoYW5uZWxzLCBhbmQgZ2V0dGluZyBldmVyeXRoaW5nIHJlYWR5IGZvciBvcGVyYXRpb24uCgpBbmQgaXQmIzM5O3MgZXF1YWxseSBwcmVkaWN0YWJsZSB0byBzZWUgYG1hbF91bnJlZ2lzdGVyX2NvbW1hY2AgY2FsbGVkIHdpdGhpbiBgZW1hY19yZW1vdmVgLiBgcmVtb3ZlYCBpcyB0aGUgY2xlYW51cCBmdW5jdGlvbiB3aGVuIHRoZSBkcml2ZXIgaXMgYmVpbmcgdW5sb2FkZWQgb3Igd2hlbiB0aGUgZGV2aWNlIGlzIGJlaW5nIGRldGFjaGVkLiBUaGlzIG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IHlvdSAqdW5yZWdpc3RlciogdGhlIGBjb21tYWNgIHdoZW4geW91JiMzOTtyZSBkb25lIHdpdGggaXQgdG8gcmVsZWFzZSB0aGUgcmVzb3VyY2VzLCBkZS1hbGxvY2F0ZSBtZW1vcnksIGFuZCBwcm9wZXJseSBzaHV0IGRvd24gdGhlIGhhcmR3YXJlIGludGVyZmFjZS4gVGhpcyBpcyBjcnVjaWFsIGZvciBhdm9pZGluZyByZXNvdXJjZSBsZWFrcyBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cyBkb3duIHRoZSBsaW5lLiBJdCYjMzk7cyB0aGUgc3RhbmRhcmQsIGNsZWFuIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGFwcHJvYWNoLiBJJiMzOTttIHBsZWFzZWQgdG8gc2VlIGl0JiMzOTtzIGltcGxlbWVudGVkIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDc6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFsX3VucmVnaXN0ZXJfY29tbWFjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jPTI5OTg9c3RhdGljIGludCBlbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0zMTk3LSBlcnJfdW5yZWdfY29tbWFjOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjMxOTg6XHRtYWxfdW5yZWdpc3Rlcl9jb21tYWMoZGV2LVx1MDAzZW1hbCwgXHUwMDI2ZGV2LVx1MDAzZWNvbW1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMzE5OS0gZXJyX3JlbF9kZXBzOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0zMjA3PXN0YXRpYyB2b2lkIGVtYWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0zMjMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjMyMzI6XHRtYWxfdW5yZWdpc3Rlcl9jb21tYWMoZGV2LVx1MDAzZW1hbCwgXHUwMDI2ZGV2LVx1MDAzZWNvbW1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMzIzMy1cdGVtYWNfcHV0X2RlcHMoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYz0zND1pbnQgbWFsX3JlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsIHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMtNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYzo2Njp2b2lkIG1hbF91bnJlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlXHQqbWFsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMtNjctXHRcdHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmg9MjU5PWludCBtYWxfcmVnaXN0ZXJfY29tbWFjKHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oLTI2MC1cdFx0XHRzdHJ1Y3QgbWFsX2NvbW1hYyAqY29tbWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oOjI2MTp2b2lkIG1hbF91bnJlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuaC0yNjItXHRcdFx0ICAgc3RydWN0IG1hbF9jb21tYWMgKmNvbW1hYyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA3OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzODcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA5NTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEFuYWx5c2lzOiBJQk0gRU1BQyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHByb21wdCBpcyBhc2tpbmcgbWUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggd2FycmFudHMgZnV6emluZy4gVGhlIGtleSBoZXJlIGlzIHRoZSBleGNsdXNpb24gY3JpdGVyaWE6IHBhdGNoZXMgdGhhdCAqb25seSogdG91Y2ggZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAobGlrZSBgLnJlbW92ZWAsIGAuc2h1dGRvd25gLCBldGMuKSB0aGF0IGFyZSBleGVjdXRlZCBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgdW5iaW5kIG9wZXJhdGlvbnMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLCBiYXNlZCBvbiB0aGUgcHJvbXB0LgoKTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgY2VudGVyZWQgYXJvdW5kIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgLCB3aGljaCBpcyBjYWxsZWQgd2l0aGluIGBlbWFjX3JlbW92ZWAgYW5kIHRoZSBlcnJvciBwYXRoIG9mIGBlbWFjX3Byb2JlYCwgYW5kIGBtYWxfcmVnaXN0ZXJfY29tbWFjYCBjYWxsZWQgd2l0aGluIGBlbWFjX3Byb2JlYC4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYGVtYWNfcHJvYmVgIGlzIGEgaG90IHBhdGggb3IgdGVhcmRvd24gZnVuY3Rpb24gdGhhdCBpcyBvbmx5IGV4ZWN1dGVkIGluIHZlcnkgc3BlY2lmaWMgc2NlbmFyaW9zLgoKYGVtYWNfcHJvYmVgIGl0c2VsZiBpcyBhIHByb2JlIGZ1bmN0aW9uLCBwYXJ0IG9mIGRldmljZSBpbml0aWFsaXphdGlvbi4gQ2FuIGl0IGJlIHRyaWdnZXJlZCBmcm9tIHVzZXJzcGFjZT8gR2VuZXJhbGx5LCBwbGF0Zm9ybSBkZXZpY2VzIGFyZSBwcm9iZWQgYXQgYm9vdCB0aW1lLiBDYW4gSSBjcmVhdGUgYSBwbGF0Zm9ybSBkZXZpY2Ugb3IgdXNlIGRldmljZSB0cmVlIG92ZXJsYXlzIHRvIHRyaWdnZXIgYGVtYWNfcHJvYmVgIGR5bmFtaWNhbGx5PyBQcm9iYWJseSBub3QuIFRoZSBjaGFuZ2VzIGFyZSBzcGVjaWZpY2FsbHkgd2l0aGluIGBtYWxfcmVnaXN0ZXJfY29tbWFjYCBhbmQgYG1hbF91bnJlZ2lzdGVyX2NvbW1hY2AuCgpUaGVuIEkgcmVtZW1iZXIgdGhlIHByb21wdCwgJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiAuLi4gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLiYjMzQ7IElzIGBlbWFjX3Byb2JlYCBjb25zaWRlcmVkIGEgdGVhcmRvd24gY2FsbGJhY2s/IE5vLCBpdCYjMzk7cyBhbiBpbml0aWFsaXphdGlvbiBjYWxsYmFjay4KClRoZW4gSSBnZXQgYSBsaXR0bGUgZXhjaXRlZCBiZWNhdXNlIEkgY2FuIGFjdHVhbGx5IHJlYWNoIGBlbWFjX3Byb2JlYCBpbiBRRU1VIGJlY2F1c2Ugb2YgdGhlIFBvd2VyUEMgNHh4IG1hY2hpbmUuIFNvIGl0IGlzIHJlYWNoYWJsZSBpbiBRRU1VLgoKQnV0IHdhaXQsIEkgbmVlZCB0byBjb25zaWRlciBpZiBTeXprYWxsZXIgd2lsbCBhY3R1YWxseSBiZSBhYmxlIHRvIGhpdCB0aGlzLiBTeXprYWxsZXIgY2FuIGZ1enogcGxhdGZvcm0gZGV2aWNlIHByb2JpbmcgaWYgaXQgY2FuIGluamVjdCBkZXZpY2UgdHJlZSBub2RlcyBvciBpdCBpcyBhIHZpcnR1YWwgZGV2aWNlLiBGb3IgdGhpcyBzcGVjaWZpYyBTb0MgZXRoZXJuZXQgY29udHJvbGxlciwgaXQgaXMgdGllZCB0byB0aGUgU29DLgoKQW5kIHRoZW4gSSByZWFsaXplIHRoZSBwYXRjaCBpcyBqdXN0IGFib3V0IGFkZGluZyBsb2NrcyBhcm91bmQgYG5hcGlfZW5hYmxlYCBhbmQgYG5hcGlfZGlzYWJsZWAgZHVyaW5nIHByb2JlL3JlbW92ZS4gVGhpcyBpcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBmaXggb3IgYSBmaXggZm9yIGEgbG9ja2RlcCB3YXJuaW5nIHJlbGF0ZWQgdG8gZW5hYmxpbmcvZGlzYWJsaW5nIE5BUEkgd2l0aG91dCBob2xkaW5nIHRoZSBuZXRkZXYgbG9jay4gVGhlIHVuZGVybHlpbmcgY29kZSB3YXMgcmVjZW50bHkgY2hhbmdlZCwgcmVxdWlyaW5nIHRoZSBuZXRkZXYgbG9jayBpbiBzb21lIGNhc2VzLgoKSSYjMzk7bSBzdGFydGluZyB0byB0aGluayBhYm91dCB3aGV0aGVyIHRoZSBJQk0gRU1BQyBpcyBlbXVsYXRlZCBpbiBRRU1VLiBJdCYjMzk7cyB0aW1lIHRvIGNoZWNrIHRoZSBRRU1VIHNvdXJjZSBjb2RlLiBCdXQgSSBhbSBhbG1vc3Qgc3VyZSB0aGF0IHRoZSBQb3dlclBDIDQ0MEVQIChCYW1ib28pIGFuZCA0NjBFWCAoU2FtNDYwZXgpIGFyZSBlbXVsYXRlZCBpbiBRRU1VLCBib3RoIGhhdmUgdGhlIElCTSBFTUFDLiBTbyBpdCAqaXMqIHJlYWNoYWJsZS4KCkxldCYjMzk7cyBzdW1tYXJpemUuIFRoZSBtb2RpZmljYXRpb25zIGFyZSBpbiBgbWFsX3JlZ2lzdGVyX2NvbW1hY2AgYW5kIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgLCB3aXRoaW4gYGVtYWNfcHJvYmVgIGFuZCBgZW1hY19yZW1vdmVgLiBJZiB0aGUgbWFpbiB0cmlnZ2VyaW5nIGlzIGR1cmluZyBib290IChwcm9iZSkgb3IgbW9kdWxlIHVubG9hZCAocmVtb3ZlKSwgaXMgaXQgd29ydGggZnV6emluZz8gVXN1YWxseSwgcHJvYmUgZnVuY3Rpb25zIGFyZSBleGVjdXRlZCBvbmNlIGF0IGJvb3QuIEZ1enppbmcgdGhlbSByZXF1aXJlcyBtb2R1bGUgcmVsb2FkIG9yIHN5c2ZzIHVuYmluZC9iaW5kLiBUaGUgcHJvbXB0IGRvZXNuJiMzOTt0IGV4cGxpY2l0bHkgZXhjbHVkZSBgLnByb2JlYCwgYnV0IGl0IGRvZXMgc3Ryb25nbHkgaW1wbHkgaXQuCgpUaGUgY2hhbmdlcyBhcHBlYXIgdG8gcHJpbWFyaWx5IGFkZHJlc3MgaW5pdGlhbGl6YXRpb24gYW5kIHRlYXJkb3duIG9mIHRoZSBlbWFjIGRyaXZlciwgd2l0aCBhIGxvY2sgYWRkaXRpb24gbGlrZWx5IHJlbGF0ZWQgdG8gTkFQSSBoYW5kbGluZy4gR2l2ZW4gdGhhdCwgYW5kIHRoZSBwb3RlbnRpYWwgZGlmZmljdWx0eSBvZiB0cmlnZ2VyaW5nIHRoZXNlIGNvZGUgcGF0aHMgZHluYW1pY2FsbHkgZHVyaW5nIGZ1enppbmcgKnJlbGF0aXZlIHRvIHRoZSBwcm9tcHQmIzM5O3MgZXhjbHVzaW9uIGNyaXRlcmlhKiwgdGhpcyBtaWdodCBub3QgYmUgdGhlIGhpZ2hlc3QgcHJpb3JpdHkgZm9yIGZ1enppbmcsIGdpdmVuIHRoZSByZXNvdXJjZXMgdGhhdCBhcmUgdXN1YWxseSBhbGxvY2F0ZWQgdG8gc3VjaCB0YXNrcy4gSG93ZXZlciwgaXQgKmlzKiByZWFjaGFibGUgaW4gUUVNVSwgc28gbWF5YmUgaXQmIzM5O3Mgc3RpbGwgd29ydGggdGhlIGVmZm9ydC4gVWx0aW1hdGVseSwgdGhpcyByZXF1aXJlcyBhIGRlZXBlciBkaXZlIGludG8gdGhlIHNwZWNpZmljIFN5emthbGxlciBjb25maWd1cmF0aW9uIGFuZCBjYXBhYmlsaXRpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA3OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VtYWNfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM9Mjk4NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVtYWNfZ2lnZV9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yOTk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjI5OTg6c3RhdGljIGludCBlbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI5OTkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0zMjU1PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGVtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0zMjU5LVx0fSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzozMjYwOlx0LnByb2JlID0gZW1hY19wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0zMjYxLVx0LnJlbW92ZSA9IGVtYWNfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQ1OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIFdvcnRoaW5lc3MgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyeWluZyB0byBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gRmlyc3QsIGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyIHByb2JlLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBhY2Nlc3MgY29udHJvbC4gQ2FuIGFuIHVucHJpdmlsZWdlZCB1c2VyIHRyaWdnZXIgdGhpcz8gTm9wZSwgdGhhdCYjMzk7cyBub3QgcG9zc2libGUuIEEgcHJpdmlsZWdlZCB1c2VyLCB0aG91Z2g/IFllcywgdGhyb3VnaCB0aGUgc3lzZnMgYmluZC91bmJpbmQgbWVjaGFuaXNtLgoKVGhlIHByb21wdCwgaG93ZXZlciwgdGhyb3dzIGEgd3JlbmNoIGluIHRoZSB3b3Jrcy4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIG9ubHkgdG91Y2hlcyBgLnJlbW92ZWAsIGAuc2h1dGRvd25gLCBvciBgcGNpX3VucmVnaXN0ZXJfZHJpdmVyYCB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBhcmUgZXhlY3V0ZWQgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIHVuYmluZCBvcGVyYXRpb25zLiBIbW1tLCB0aGUgcGF0Y2ggbW9kaWZpZXMgYG1hbF9yZWdpc3Rlcl9jb21tYWNgIChjYWxsZWQgZnJvbSBwcm9iZSkgYW5kIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgIChjYWxsZWQgZnJvbSByZW1vdmUpLiBUaGVzZSAqc2hvdWxkKiBvbmx5IGJlIGV4ZWN1dGVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIHRlYXJkb3duIOKAkyB3aGljaCwgZm9yIHBsYXRmb3JtIGRldmljZXMsIG1vc3RseSBtZWFucyBib290IGFuZCBzeXNmcyBiaW5kL3VuYmluZCwgcmlnaHQ/CgpFdmVuIHRob3VnaCB0aGUgcHJvbXB0ICpkb2VzbiYjMzk7dCogZXhwbGljaXRseSBtZW50aW9uICYjMzQ7cHJvYmUmIzM0OyBpbiB0aGUgZXhjbHVzaW9uIGxpc3QsIEkgY2FuIHNlZSBob3cgaXQgbWlnaHQgZmFsbCB1bmRlciB0aGUgc3Bpcml0IG9mIHRoZSBleGNsdXNpb24uIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgZHVyaW5nIHRoZSBpbml0aWFsIHNldHVwIG9yIHRlYXJkb3duLCBzbyBmdXp6aW5nIHdvdWxkIGJlIGxpbWl0ZWQgdG8gYm9vdCBhbmQgdW5iaW5kIHNjZW5hcmlvcy4KCkhvbGQgb24uLi4gSSYjMzk7dmUgZ290IHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIExldCBtZSBzZWUsIGBtYWxfcmVnaXN0ZXJfY29tbWFjYCBpcyBjYWxsZWQgZnJvbSBgZW1hY19wcm9iZWAuIFRoYXQmIzM5O3MgdGhlIG9ubHkgY2FsbGVyIGxpc3RlZC4gSXMgdGhlcmUgYW55IG90aGVyIGNhbGxlcj8gSXQmIzM5O3MgaW1wb3J0YW50IHRvIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYWxfcmVnaXN0ZXJfY29tbWFjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jPTI5OTg9c3RhdGljIGludCBlbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0zMDgyLVx0ZGV2LVx1MDAzZWNvbW1hYy5yeF9jaGFuX21hc2sgPSBNQUxfQ0hBTl9NQVNLKGRldi1cdTAwM2VtYWxfcnhfY2hhbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MzA4MzpcdGVyciA9IG1hbF9yZWdpc3Rlcl9jb21tYWMoZGV2LVx1MDAzZW1hbCwgXHUwMDI2ZGV2LVx1MDAzZWNvbW1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMzA4NC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYz0zMj1zdGF0aWMgaW50IG1hbF9jb3VudDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jLTMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmM6MzQ6aW50IG1hbF9yZWdpc3Rlcl9jb21tYWMoc3RydWN0IG1hbF9pbnN0YW5jZSAqbWFsLCBzdHJ1Y3QgbWFsX2NvbW1hYyAqY29tbWFjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMtMzUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oPTI1Nz12b2lkIG1hbF9leGl0KHZvaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmgtMjU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmg6MjU5OmludCBtYWxfcmVnaXN0ZXJfY29tbWFjKHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oLTI2MC1cdFx0XHRzdHJ1Y3QgbWFsX2NvbW1hYyAqY29tbWFjKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDc6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0NDgKCQkJCQkJCW91dHB1dDogNzkKCQkJCQkJCXRob3VnaHRzOiA4NzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nPWZhbHNlOiBSZWFzb25pbmcgZm9yIEV4Y2x1ZGluZyBhIFNwZWNpZmljIEVtYmVkZGVkIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBJIHNlZSB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBzaW5jZSBJIHNlZSBvbmx5IGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93biBmdW5jdGlvbnMgZm9yIGEgcGxhdGZvcm0gZGV2aWNlLCBgbWFsX3JlZ2lzdGVyX2NvbW1hY2AgYW5kIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgLCBhbmQgdGhlIHByb21wdCBleGNsdWRlcyB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgc3lzZnMgdW5iaW5kLCB0aGVuIGl0JiMzOTtzIHByb2JhYmx5IG5vdCB3b3J0aCBmdXp6aW5nLiBCdXQgbGV0IG1lIG1ha2Ugc3VyZS4KCkhtbSwgbGV0IG1lIGNvbnNpZGVyLiBBcmUgdGhlcmUgYW55IG90aGVyIHBvdGVudGlhbCBwYXRocyB0byB0cmlnZ2VyIGBlbWFjX3Byb2JlYD8gUGxhdGZvcm0gZGV2aWNlcyBhcmUgdHlwaWNhbGx5IHN0YXRpY2FsbHkgZGVmaW5lZCBpbiB0aGUgZGV2aWNlIHRyZWUsIHNvIGl0IHVzdWFsbHkgcnVucyBvbmNlIGR1cmluZyBib290LiBGdXp6aW5nIHRoYXQgd291bGQgaW52b2x2ZSByZWJvb3RpbmcgdGhlIFZNIG9yIHVzaW5nIHN5c2ZzIGJpbmQvdW5iaW5kLCB3aGljaCB0aGUgcHJvbXB0IG1lbnRpb25zIGZvciBleGNsdXNpb24uCgpUaGUgcHJvbXB0IGRvZXNuJiMzOTt0ICpleHBsaWNpdGx5KiBleGNsdWRlIGAucHJvYmVgIGNhbGxiYWNrcywgb25seSB0ZWFyZG93biBsaWtlIGAucmVtb3ZlYCBhbmQgYC5zaHV0ZG93bmAuIE9rYXksIHNvIGlmIHRoZSBwYXRjaCAqb25seSogbW9kaWZpZXMgYC5wcm9iZWAgYW5kIGAucmVtb3ZlYCBpbiBhIHBsYXRmb3JtIGRyaXZlciwgc2hvdWxkIEkgZXhjbHVkZSBpdD8gVGhpcyBzcGVjaWZpYyBvbmUgaXMgZm9yIGFuIElCTSBFTUFDIG9uIFBvd2VyUEMgNHh4LCB3aGljaCBpcyBwcmV0dHkgbmljaGUgYW5kIG5vdCBnZW5lcmFsbHkgZnV6emVkIGJ5IHN5emthbGxlci4KCkhvbGQgb24sIEkgYWxzbyBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBlbHNlISBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIHRvIGV4Y2x1ZGUgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gQnV0IHdhaXQsIFFFTVUgKmRvZXMqIGVtdWxhdGUgUG93ZXJQQyA0eHgsIHNwZWNpZmljYWxseSBCYW1ib28gYW5kIFNhbTQ2MGV4LiBTbywgaXQmIzM5O3MgKnRlY2huaWNhbGx5KiByZWFjaGFibGUuIEhvd2V2ZXIsIGlzIGl0ICp3b3J0aCogZnV6emluZz8KCkxldCYjMzk7cyBzZWUsIHdoYXQgaXMgdGhlIHBhdGNoIGFjdHVhbGx5IGRvaW5nPyBPaCwgaXQmIzM5O3MgYXV0aG9yZWQgYnkgdGhlIHN5ei1jbHVzdGVyLCBzbyBpdCYjMzk7cyBhIHRlc3QgY2FzZSwgbm90IGEgcmVhbCB1c2VyLiBMZXQgbWUgZXhhbWluZSB0aGUgY29kZToKCmBgYGMKIAlpZiAobGlzdF9lbXB0eSgmYW1wO21hbC0mZ3Q7bGlzdCkpCi0JCW5hcGlfZW5hYmxlKCZhbXA7bWFsLSZndDtuYXBpKTsKJiM0MzsJCW5hcGlfZW5hYmxlX2xvY2tlZCgmYW1wO21hbC0mZ3Q7bmFwaSk7CmBgYAoKQWgsIGl0IHNlZW1zIHRvIGJlIGZpeGluZyBhIHJlY2VudCBBUEkgY2hhbmdlIHdoZXJlIGBuYXBpX2VuYWJsZWAgcmVxdWlyZXMgdGhlIG5ldGRldiBsb2NrLCBvciBhIGxvY2tkZXAgd2FybmluZy4gVGhpcyBjb2RlIG9ubHkgYWZmZWN0cyBgbWFsX3JlZ2lzdGVyX2NvbW1hY2AgYW5kIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgLCBzbyBlc3NlbnRpYWxseSBpdCYjMzk7cyBhIGxvY2sgZml4aW5nIGEgcHJvYmxlbSBmb3VuZCBvbmx5IG9uIGBwcm9iZWAgYW5kIGByZW1vdmVgLiBJdCYjMzk7cyBzdGlsbCBmb3IgYW4gZW1iZWRkZWQgUG93ZXJQQyBldGhlcm5ldCBjb250cm9sbGVyLiBJIHNob3VsZCBwcm9iYWJseSBleGNsdWRlIGl0LCBidXQgbGV0IG1lIGRvIGEgZG91YmxlIGNoZWNrLgoKTGV0IG1lIGdvIGJhY2sgYW5kIHZlcmlmeTogaXMgYG1hbF9yZWdpc3Rlcl9jb21tYWNgIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2U/IEkgYWxyZWFkeSBncmVwcGVkIGZvciBpdCwgbm9wZS4gSG93IGFib3V0IGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgPyBBbHNvIG5vLiBJcyB0aGVyZSBhbnkgZHluYW1pYyB3YXkgdG8gdHJpZ2dlciBgZW1hY19wcm9iZWAgb3RoZXIgdGhhbiB0aHJvdWdoIHN5c2ZzIGJpbmQvdW5iaW5kIG9yIGRldmljZSB0cmVlIG92ZXJsYXlzPyBOby4KClRoZSBwcm9tcHQgc3BlY2lmaWVzIHRoYXQgYC5yZW1vdmVgIGlzIGV4Y2x1ZGVkLiBTaW5jZSB0aGUgcGF0Y2ggbW9kaWZpZXMgYm90aCByZWdpc3RlciAocHJvYmUpIGFuZCB1bnJlZ2lzdGVyIChyZW1vdmUpLCBhbmQgdGhlIHJlbW92ZSBwYXRoIGlzIGV4Y2x1ZGVkLCBhbmQgdGhlIHByb2JlIHBhdGggaXMganVzdCB0aGUgY291bnRlcnBhcnQgZXhlY3V0ZWQgb25jZSBhdCBib290IG9yIHN5c2ZzIGJpbmQsIGl0IHNlZW1zIHJlYXNvbmFibGUgdG8gZXhjbHVkZSB0aGlzIGFzIHdlbGwuIEl0JiMzOTtzIGFsc28gYW4gZW1iZWRkZWQgUG93ZXJQQyBkcml2ZXIuCgpUaGVyZWZvcmUsIEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDc6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGRyaXZlciBpbml0aWFsaXphdGlvbiAocHJvYmUpIGFuZCB0ZWFyZG93biAocmVtb3ZlKSBjYWxsYmFja3MgZm9yIHRoZSBJQk0gRU1BQyBwbGF0Zm9ybSBkcml2ZXIsIHdoaWNoIGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBib290IG9yIHN5c2ZzIGJpbmQvdW5iaW5kIG9wZXJhdGlvbnMuIFRoZXNlIHBhdGhzIGFyZSBub3Qgc3VpdGFibGUgZm9yIGNvbnRpbnVvdXMgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgZHJpdmVyIGluaXRpYWxpemF0aW9uIChwcm9iZSkgYW5kIHRlYXJkb3duIChyZW1vdmUpIGNhbGxiYWNrcyBmb3IgdGhlIElCTSBFTUFDIHBsYXRmb3JtIGRyaXZlciwgd2hpY2ggYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGJvb3Qgb3Igc3lzZnMgYmluZC91bmJpbmQgb3BlcmF0aW9ucy4gVGhlc2UgcGF0aHMgYXJlIG5vdCBzdWl0YWJsZSBmb3IgY29udGludW91cyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDc6NDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA3OjQxOjI2LjM3MDU3MTY2NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNzM4MDIyMzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gKHByb2JlKSBhbmQgdGVhcmRvd24gKHJlbW92ZSkgY2FsbGJhY2tzIGZvciB0aGUgSUJNIEVNQUMgcGxhdGZvcm0gZHJpdmVyLCB3aGljaCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgYm9vdCBvciBzeXNmcyBiaW5kL3VuYmluZCBvcGVyYXRpb25zLiBUaGVzZSBwYXRocyBhcmUgbm90IHN1aXRhYmxlIGZvciBjb250aW51b3VzIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzo0MToyNi4zNzA1NzcxMzRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NjU5NjI3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDZlMGI1MGVhN2I0YmIwYjdkZmMzYmYyN2NhZjJlNmNjZWJiNGZjZDVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMDc6NDE6MjUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuY1xcbmluZGV4IDc0NTI2MDAyZDUyYmQuLjQyMDI3NjY1ZjJhOTMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuY1xcbkBAIC0zNSw2ICszNSw3IEBAIGludCBtYWxfcmVnaXN0ZXJfY29tbWFjKHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCwgc3RydWN0IG1hbF9jb21tYWMgKmNvbW1hYylcXG4ge1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiBcXG4rXFx0bmV0ZGV2X2xvY2sobWFsLVxcdTAwM2VuYXBpLmRldik7XFxuIFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZtYWwtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gXFxuIFxcdE1BTF9EQkcobWFsLCBcXFwicmVnKCUwOHgsICUwOHgpXFxcIiBOTCxcXG5AQCAtNDQsMTggKzQ1LDIwIEBAIGludCBtYWxfcmVnaXN0ZXJfY29tbWFjKHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCwgc3RydWN0IG1hbF9jb21tYWMgKmNvbW1hYylcXG4gXFx0aWYgKChtYWwtXFx1MDAzZXR4X2NoYW5fbWFzayBcXHUwMDI2IGNvbW1hYy1cXHUwMDNldHhfY2hhbl9tYXNrKSB8fFxcbiBcXHQgICAgKG1hbC1cXHUwMDNlcnhfY2hhbl9tYXNrIFxcdTAwMjYgY29tbWFjLVxcdTAwM2VyeF9jaGFuX21hc2spKSB7XFxuIFxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNm1hbC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRcXHRuZXRkZXZfdW5sb2NrKG1hbC1cXHUwMDNlbmFwaS5kZXYpO1xcbiBcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HIFxcXCJtYWwlZDogQ09NTUFDIGNoYW5uZWxzIGNvbmZsaWN0IVxcXFxuXFxcIixcXG4gXFx0XFx0ICAgICAgIG1hbC1cXHUwMDNlaW5kZXgpO1xcbiBcXHRcXHRyZXR1cm4gLUVCVVNZO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAobGlzdF9lbXB0eShcXHUwMDI2bWFsLVxcdTAwM2VsaXN0KSlcXG4tXFx0XFx0bmFwaV9lbmFibGUoXFx1MDAyNm1hbC1cXHUwMDNlbmFwaSk7XFxuK1xcdFxcdG5hcGlfZW5hYmxlX2xvY2tlZChcXHUwMDI2bWFsLVxcdTAwM2VuYXBpKTtcXG4gXFx0bWFsLVxcdTAwM2V0eF9jaGFuX21hc2sgfD0gY29tbWFjLVxcdTAwM2V0eF9jaGFuX21hc2s7XFxuIFxcdG1hbC1cXHUwMDNlcnhfY2hhbl9tYXNrIHw9IGNvbW1hYy1cXHUwMDNlcnhfY2hhbl9tYXNrO1xcbiBcXHRsaXN0X2FkZChcXHUwMDI2Y29tbWFjLVxcdTAwM2VsaXN0LCBcXHUwMDI2bWFsLVxcdTAwM2VsaXN0KTtcXG4gXFxuIFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNm1hbC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRuZXRkZXZfdW5sb2NrKG1hbC1cXHUwMDNlbmFwaS5kZXYpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5AQCAtNjQsNyArNjcsOSBAQCB2b2lkIG1hbF91bnJlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlXFx0Km1hbCxcXG4gXFx0XFx0c3RydWN0IG1hbF9jb21tYWMgKmNvbW1hYylcXG4ge1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbitcXHRib29sIGRpc2FibGVfbmFwaTtcXG4gXFxuK1xcdG5ldGRldl9sb2NrKG1hbC1cXHUwMDNlbmFwaS5kZXYpO1xcbiBcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2bWFsLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuIFxcbiBcXHRNQUxfREJHKG1hbCwgXFxcInVucmVnKCUwOHgsICUwOHgpXFxcIiBOTCxcXG5AQCAtNzMsMTAgKzc4LDEyIEBAIHZvaWQgbWFsX3VucmVnaXN0ZXJfY29tbWFjKHN0cnVjdCBtYWxfaW5zdGFuY2VcXHQqbWFsLFxcbiBcXHRtYWwtXFx1MDAzZXR4X2NoYW5fbWFzayBcXHUwMDI2PSB+Y29tbWFjLVxcdTAwM2V0eF9jaGFuX21hc2s7XFxuIFxcdG1hbC1cXHUwMDNlcnhfY2hhbl9tYXNrIFxcdTAwMjY9IH5jb21tYWMtXFx1MDAzZXJ4X2NoYW5fbWFzaztcXG4gXFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2Y29tbWFjLVxcdTAwM2VsaXN0KTtcXG4tXFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNm1hbC1cXHUwMDNlbGlzdCkpXFxuLVxcdFxcdG5hcGlfZGlzYWJsZShcXHUwMDI2bWFsLVxcdTAwM2VuYXBpKTtcXG4rXFx0ZGlzYWJsZV9uYXBpID0gbGlzdF9lbXB0eShcXHUwMDI2bWFsLVxcdTAwM2VsaXN0KTtcXG4gXFxuIFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNm1hbC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRpZiAoZGlzYWJsZV9uYXBpKVxcbitcXHRcXHRuYXBpX2Rpc2FibGVfbG9ja2VkKFxcdTAwMjZtYWwtXFx1MDAzZW5hcGkpO1xcbitcXHRuZXRkZXZfdW5sb2NrKG1hbC1cXHUwMDNlbmFwaS5kZXYpO1xcbiB9XFxuIFxcbiBpbnQgbWFsX3NldF9yY2JzKHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCwgaW50IGNoYW5uZWwsIHVuc2lnbmVkIGxvbmcgc2l6ZSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDc6NDE6MjYuODE3ODQ2NzgxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjAyOTA3MzQwMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgZHJpdmVyIGluaXRpYWxpemF0aW9uIChwcm9iZSkgYW5kIHRlYXJkb3duIChyZW1vdmUpIGNhbGxiYWNrcyBmb3IgdGhlIElCTSBFTUFDIHBsYXRmb3JtIGRyaXZlciwgd2hpY2ggYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGJvb3Qgb3Igc3lzZnMgYmluZC91bmJpbmQgb3BlcmF0aW9ucy4gVGhlc2UgcGF0aHMgYXJlIG5vdCBzdWl0YWJsZSBmb3IgY29udGludW91cyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNmUwYjUwZWE3YjRiYjBiN2RmYzNiZjI3Y2FmMmU2Y2NlYmI0ZmNkNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDA3OjQxOjI1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuY1xuaW5kZXggNzQ1MjYwMDJkNTJiZC4uNDIwMjc2NjVmMmE5MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuY1xuQEAgLTM1LDYgKzM1LDcgQEAgaW50IG1hbF9yZWdpc3Rlcl9jb21tYWMoc3RydWN0IG1hbF9pbnN0YW5jZSAqbWFsLCBzdHJ1Y3QgbWFsX2NvbW1hYyAqY29tbWFjKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXG4rXHRuZXRkZXZfbG9jayhtYWwtXHUwMDNlbmFwaS5kZXYpO1xuIFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2bWFsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcbiBcdE1BTF9EQkcobWFsLCBcInJlZyglMDh4LCAlMDh4KVwiIE5MLFxuQEAgLTQ0LDE4ICs0NSwyMCBAQCBpbnQgbWFsX3JlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsIHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpXG4gXHRpZiAoKG1hbC1cdTAwM2V0eF9jaGFuX21hc2sgXHUwMDI2IGNvbW1hYy1cdTAwM2V0eF9jaGFuX21hc2spIHx8XG4gXHQgICAgKG1hbC1cdTAwM2VyeF9jaGFuX21hc2sgXHUwMDI2IGNvbW1hYy1cdTAwM2VyeF9jaGFuX21hc2spKSB7XG4gXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2bWFsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdFx0bmV0ZGV2X3VubG9jayhtYWwtXHUwMDNlbmFwaS5kZXYpO1xuIFx0XHRwcmludGsoS0VSTl9XQVJOSU5HIFwibWFsJWQ6IENPTU1BQyBjaGFubmVscyBjb25mbGljdCFcXG5cIixcbiBcdFx0ICAgICAgIG1hbC1cdTAwM2VpbmRleCk7XG4gXHRcdHJldHVybiAtRUJVU1k7XG4gXHR9XG4gXG4gXHRpZiAobGlzdF9lbXB0eShcdTAwMjZtYWwtXHUwMDNlbGlzdCkpXG4tXHRcdG5hcGlfZW5hYmxlKFx1MDAyNm1hbC1cdTAwM2VuYXBpKTtcbitcdFx0bmFwaV9lbmFibGVfbG9ja2VkKFx1MDAyNm1hbC1cdTAwM2VuYXBpKTtcbiBcdG1hbC1cdTAwM2V0eF9jaGFuX21hc2sgfD0gY29tbWFjLVx1MDAzZXR4X2NoYW5fbWFzaztcbiBcdG1hbC1cdTAwM2VyeF9jaGFuX21hc2sgfD0gY29tbWFjLVx1MDAzZXJ4X2NoYW5fbWFzaztcbiBcdGxpc3RfYWRkKFx1MDAyNmNvbW1hYy1cdTAwM2VsaXN0LCBcdTAwMjZtYWwtXHUwMDNlbGlzdCk7XG4gXG4gXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNm1hbC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHRuZXRkZXZfdW5sb2NrKG1hbC1cdTAwM2VuYXBpLmRldik7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtNjQsNyArNjcsOSBAQCB2b2lkIG1hbF91bnJlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlXHQqbWFsLFxuIFx0XHRzdHJ1Y3QgbWFsX2NvbW1hYyAqY29tbWFjKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4rXHRib29sIGRpc2FibGVfbmFwaTtcbiBcbitcdG5ldGRldl9sb2NrKG1hbC1cdTAwM2VuYXBpLmRldik7XG4gXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZtYWwtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFxuIFx0TUFMX0RCRyhtYWwsIFwidW5yZWcoJTA4eCwgJTA4eClcIiBOTCxcbkBAIC03MywxMCArNzgsMTIgQEAgdm9pZCBtYWxfdW5yZWdpc3Rlcl9jb21tYWMoc3RydWN0IG1hbF9pbnN0YW5jZVx0Km1hbCxcbiBcdG1hbC1cdTAwM2V0eF9jaGFuX21hc2sgXHUwMDI2PSB+Y29tbWFjLVx1MDAzZXR4X2NoYW5fbWFzaztcbiBcdG1hbC1cdTAwM2VyeF9jaGFuX21hc2sgXHUwMDI2PSB+Y29tbWFjLVx1MDAzZXJ4X2NoYW5fbWFzaztcbiBcdGxpc3RfZGVsX2luaXQoXHUwMDI2Y29tbWFjLVx1MDAzZWxpc3QpO1xuLVx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2bWFsLVx1MDAzZWxpc3QpKVxuLVx0XHRuYXBpX2Rpc2FibGUoXHUwMDI2bWFsLVx1MDAzZW5hcGkpO1xuK1x0ZGlzYWJsZV9uYXBpID0gbGlzdF9lbXB0eShcdTAwMjZtYWwtXHUwMDNlbGlzdCk7XG4gXG4gXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNm1hbC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHRpZiAoZGlzYWJsZV9uYXBpKVxuK1x0XHRuYXBpX2Rpc2FibGVfbG9ja2VkKFx1MDAyNm1hbC1cdTAwM2VuYXBpKTtcbitcdG5ldGRldl91bmxvY2sobWFsLVx1MDAzZW5hcGkuZGV2KTtcbiB9XG4gXG4gaW50IG1hbF9zZXRfcmNicyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsIGludCBjaGFubmVsLCB1bnNpZ25lZCBsb25nIHNpemUpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzo0MToyNi44MTc4NDgxMzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTYxNzE3MzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmNgLiBNeSBpbml0aWFsIHNjYW4gc2hvd3MgYWRkaXRpb25zIG9mIGBuZXRkZXZfbG9jaygpYCBhbmQgYG5ldGRldl91bmxvY2soKWAgYXJvdW5kIGBtYWwtXHUwMDNlbmFwaS5kZXZgIGNhbGxzIHdpdGhpbiBgbWFsX3JlZ2lzdGVyX2NvbW1hY2AgYW5kIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgYSBwYXR0ZXJuIC0gbG9ja2luZyBpbiByZWdpc3RlciBhbmQgdW5yZWdpc3RlciBmdW5jdGlvbnMuIEl0IGFsc28gbG9va3MgbGlrZSBgbmFwaV9lbmFibGVgIGFuZCBgbmFwaV9kaXNhYmxlYCBhcmUgYmVpbmcgc3dhcHBlZCBmb3IgdGhlaXIgbG9ja2VkIHZhcmlhbnRzLCBgbmFwaV9lbmFibGVfbG9ja2VkYCBhbmQgYG5hcGlfZGlzYWJsZV9sb2NrZWRgLiBDbGVhcmx5LCB0aGlzIGlzIHJlbGF0ZWQgdG8gTkFQSSBhbmQgbGlrZWx5IHNvbWUga2luZCBvZiBjb250ZW50aW9uIGlzc3VlLlxuXG5TaW5jZSBpdCdzIGFuIElCTSBFTUFDIGRyaXZlciwgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBQb3dlclBDIGFyY2hpdGVjdHVyZXMsIGdpdmVuIHRoZWlyIGhpc3RvcmljYWwgdXNlIG9mIElCTSBoYXJkd2FyZS4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgYXJjaGl0ZWN0dXJlIGNvbnRleHQgYW5kIGNsYXJpZnkgd2h5IHRoZXNlIGxvY2tpbmcgY2hhbmdlcyB3ZXJlIG5lY2Vzc2FyeS4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHBsYXRmb3JtIHRoaXMgY29kZSB0YXJnZXRzIHRvIGZ1bGx5IGdyYXNwIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MjksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzo0MTozMC45Nzk1NjgzOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjc0OTc2NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSUJNX0VNQUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoyOmNvbmZpZyBJQk1fRU1BQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSUJNIEVNQUMgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoxMjpjb25maWcgSUJNX0VNQUNfUlhCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0xMy1cXHRpbnQgXFxcIk51bWJlciBvZiByZWNlaXZlIGJ1ZmZlcnNcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoxNDpcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0xNS1cXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjE3OmNvbmZpZyBJQk1fRU1BQ19UWEJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTE4LVxcdGludCBcXFwiTnVtYmVyIG9mIHRyYW5zbWl0IGJ1ZmZlcnNcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoxOTpcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0yMC1cXHRkZWZhdWx0IFxcXCI2NFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MjI6Y29uZmlnIElCTV9FTUFDX1BPTExfV0VJR0hUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0yMy1cXHRpbnQgXFxcIk1BTCBOQVBJIHBvbGxpbmcgd2VpZ2h0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MjQ6XFx0ZGVwZW5kcyBvbiBJQk1fRU1BQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMjUtXFx0ZGVmYXVsdCBcXFwiMzJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0yNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjI3OmNvbmZpZyBJQk1fRU1BQ19SWF9DT1BZX1RIUkVTSE9MRFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMjgtXFx0aW50IFxcXCJSWCBza2IgY29weSB0aHJlc2hvbGQgKGJ5dGVzKVxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjI5OlxcdGRlcGVuZHMgb24gSUJNX0VNQUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTMwLVxcdGRlZmF1bHQgXFxcIjI1NlxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MzI6Y29uZmlnIElCTV9FTUFDX0RFQlVHXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0zMy1cXHRib29sIFxcXCJEZWJ1Z2dpbmdcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzozNDpcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0zNS1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzo0MDpjb25maWcgSUJNX0VNQUNfWk1JSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNDEtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy00My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjQ0OmNvbmZpZyBJQk1fRU1BQ19SR01JSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNDUtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy00Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjQ4OmNvbmZpZyBJQk1fRU1BQ19UQUhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTQ5LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzo1Mjpjb25maWcgSUJNX0VNQUNfRU1BQzRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTUzLVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzo1Njpjb25maWcgSUJNX0VNQUNfTk9fRkxPV19DVFJMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy01Ny1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NjA6Y29uZmlnIElCTV9FTUFDX01BTF9DTFJfSUNJTlRTVEFUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy02MS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NjQ6Y29uZmlnIElCTV9FTUFDX01BTF9DT01NT05fRVJSXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy02NS1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA3OjQxOjMxLjE0NzA3MTMyNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNDcxNDMzODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIElCTSBFTUFDIERyaXZlcidzIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgZ3V0cyBvZiB0aGlzIGBJQk1fRU1BQ2AgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuIFRpbWUgdG8gY3JhY2sgb3BlbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZ2AuIEkgYWxyZWFkeSBoYXZlIGEgcHJldHR5IGdvb2QgZmVlbCBmb3IgdGhlIGtlcm5lbCdzIEtjb25maWcgc3RydWN0dXJlLCBzbyBJJ20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgYSBzdHJhaWdodGZvcndhcmQgaHVudC4gSSdtIGxvb2tpbmcgZm9yIHRoZSBcImRlcGVuZHMgb25cIiBsaW5lcywgc3BlY2lmaWNhbGx5IHdoYXQgcHJlcmVxdWlzaXRlcyBuZWVkIHRvIGJlIG1ldCBiZWZvcmUgc29tZW9uZSBjYW4gZXZlbiAqY29uc2lkZXIqIGVuYWJsaW5nIHRoaXMgZHJpdmVyLiBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3JtPyBDZXJ0YWluIGtlcm5lbCBmZWF0dXJlcyBuZWVkaW5nIHRvIGJlIGVuYWJsZWQ/IFRoaXMgaXMgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBob3cgYnJvYWRseSBhcHBsaWNhYmxlLCBvciBuaWNoZSwgdGhpcyBkcml2ZXIgbWlnaHQgYmUuIFVuZGVyc3RhbmRpbmcgdGhlc2UgY29uc3RyYWludHMgaXMgZXNzZW50aWFsIGZvciBteSBsYXJnZXIgYXJjaGl0ZWN0dXJlIGNvbnNpZGVyYXRpb25zIGFuZCBpbXBsZW1lbnRhdGlvbiBzdHJhdGVneSwgSSBuZWVkIHRvIGtub3cgd2hlcmUgdGhpcyBmaXRzLiBMZXQncyBzZWUgd2hhdCB3ZSBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjczLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDc6NDE6MzQuMzk0MjE3MDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgSUJNX0VNQUNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJJQk0gRU1BQyBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBQUENfRENSXFxuICAgNTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gICA2OlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIElCTSBFTUFDIGZhbWlseSBvZiBFdGhlcm5ldCBjb250cm9sbGVyc1xcbiAgIDk6XFx0XFx0ICB0eXBpY2FsbHkgZm91bmQgb24gNHh4IGVtYmVkZGVkIFBvd2VyUEMgY2hpcHMsIGJ1dCBhbHNvIG9uIHRoZVxcbiAgMTA6XFx0XFx0ICBBeG9uIHNvdXRoYnJpZGdlIGZvciBDZWxsLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgSUJNX0VNQUNfUlhCXFxuICAxMzpcXHRcXHRpbnQgXFxcIk51bWJlciBvZiByZWNlaXZlIGJ1ZmZlcnNcXFwiXFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuICAxNTpcXHRcXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBJQk1fRU1BQ19UWEJcXG4gIDE4OlxcdFxcdGludCBcXFwiTnVtYmVyIG9mIHRyYW5zbWl0IGJ1ZmZlcnNcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuICAyMDpcXHRcXHRkZWZhdWx0IFxcXCI2NFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDc6NDE6MzQuMzk0MjgwMTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzA2ODM4OTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIFBvd2VyUEMgQ29kZSoqXG5cbk9rYXksIHNvIHRoaXMgY29kZSBpcyBjbGVhcmx5IFBvd2VyUEMtc3BlY2lmaWMgYmVjYXVzZSBvZiB0aGUgYFBQQ19EQ1JgIGRlcGVuZGVuY3kuIE15IGluaXRpYWwgcXVlc3Rpb24gaXMgd2hldGhlciB3ZSBjYW4gZXZlbiBoaXQgdGhpcyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLiBRRU1VICpkb2VzKiBoYXZlIGEgYHBwY2AgdGFyZ2V0LCBzbyB0aGF0J3MgYSBnb29kIHNpZ24uIFRoZSBxdWVzdGlvbiBpcywgZG9lcyBpdCBlbXVsYXRlIHRoZSBJQk0gRU1BQz8gSSByZW1lbWJlciBRRU1VIGVtdWxhdGVzICpzb21lKiBQb3dlclBDIGJvYXJkcy4gU3BlY2lmaWNhbGx5LCB0aGUgXCJiYW1ib29cIiBib2FyZCBpcyBhIFBvd2VyUEMgNDQwRVAsIHdoaWNoICptaWdodCogaW5jbHVkZSBFTUFDLiBJIGFsc28gcmVjYWxsIHRoZSBcInNhbTQ2MGV4XCIgYm9hcmQgaGF2aW5nIEVNQUMuXG5cbkJ1dCBob2xkIG9u4oCmIHRoZSBwcm9tcHQgc3BlY2lmaWVzIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLiBIb3dldmVyLCBRRU1VICpkb2VzKiBlbXVsYXRlIFBvd2VyUEMgNHh4LiBUaGlzIG1ha2VzIG1lIHdvbmRlciBpZiB0aGlzIGlzIHdvcnRoIGludmVzdGlnYXRpbmcgZnVydGhlciBmb3IgZnV6emluZyBwb3RlbnRpYWwuXG5cbk5vdywgdHlwaWNhbGx5LCBzeXprYWxsZXIgZG9lc24ndCBmb2N1cyBvbiBmdXp6aW5nIFBvd2VyUEMgNHh4IGJvYXJkcyBpbiBpdHMgZGVmYXVsdCBzZXR1cC4gSXQgKmNhbiogcnVuIG9uIHBwYzY0bGUgb3IgcHBjLCBidXQgdGhpcyBzcGVjaWZpYyBwaWVjZSBvZiBjb2RlIHNlZW1zIHRvIHRhcmdldCBhbiBlbWJlZGRlZCBQb3dlclBDIGV0aGVybmV0IGNvbnRyb2xsZXIuIEkgc2hvdWxkIGNoZWNrIHRvIHNlZSBpZiBzeXprYWxsZXIgaXMgYWxyZWFkeSBmdXp6aW5nIHRoaXMuIFRoZSBhdXRob3IgaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZWAsIHdoaWNoIHN1Z2dlc3RzIHRoYXQgc3l6a2FsbGVyICpmb3VuZCogYSBidWcgaGVyZT8gTm8sIHRoZSBhdXRob3Igb2YgdGhlIHBhdGNoIGp1c3QgaGFwcGVucyB0byBiZSBgc3l6LWNsdXN0ZXJgLCBhcyB0aGlzIHBhdGNoIGlzIGluIHRoZSB0ZXN0IHdvcmtzcGFjZS5cblxuUmlnaHQsIHN5emthbGxlciAqZG9lc24ndCogZnV6eiBQb3dlclBDIDR4eC4gQnV0LCBjb3VsZCBpdCBiZSBjb21waWxlZCBvbiBvdGhlciBhcmNoaXRlY3R1cmVzPyBIbW0sIGl0IGdvZXMgYmFjayB0byBgUFBDX0RDUmAuIEkgc2hvdWxkIGNoZWNrIHRoZSBgUFBDX0RDUmAgc2V0dGluZyBpbiBgYXJjaC9wb3dlcnBjL0tjb25maWdgIGZvciBtb3JlIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MDksIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzo0MTo0MS4xMDExMjE0NDVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3MzU0MjY5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUFBDX0RDUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wb3dlcnBjL0tjb25maWc9NDExPWNvbmZpZyBBUkNIX0hBU19BRERfUEFHRVNcXG4tLVxcbmFyY2gvcG93ZXJwYy9LY29uZmlnLTQxNC1cXG5hcmNoL3Bvd2VycGMvS2NvbmZpZzo0MTU6Y29uZmlnIFBQQ19EQ1JfTkFUSVZFXFxuYXJjaC9wb3dlcnBjL0tjb25maWctNDE2LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy00MTctXFxuYXJjaC9wb3dlcnBjL0tjb25maWc6NDE4OmNvbmZpZyBQUENfRENSXFxuYXJjaC9wb3dlcnBjL0tjb25maWctNDE5LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDc6NDE6NDIuNzc0NjY4OTc2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAwMzM3ODUzODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEV2YWx1YXRpb246IFBvd2VyUEMgRW1iZWRkZWQgRXRoZXJuZXQgQ29udHJvbGxlciBMb2NraW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYFBQQ19EQ1JgIGlzIGEgUG93ZXJQQy1zcGVjaWZpYyBib29sLCB3aGljaCBtZWFucyB0aGlzIGNvZGUgaXMgb25seSBnb2luZyB0byBiZSByZWxldmFudCBvbiBQb3dlclBDIHBsYXRmb3Jtcy4gVGhlIHF1ZXN0aW9uIGlzOiBjYW4gd2UgaGl0IHRoaXMgY29kZSBpbiBzdGFuZGFyZCBRRU1VPyBZZXMsIFFFTVUgaGFzIGBzYW00NjBleGAgYW5kIGBiYW1ib29gLCB3aGljaCBhcmUgUG93ZXJQQyA0eHggYm9hcmRzIGFuZCAqc2hvdWxkKiBhbGxvdyBtZSB0byBnZXQgdGhlcmUuXG5cbkJ1dCwgaG9sZCBvbi4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoL1NtYXJ0TklDL0dQVSBkcml2ZXJzLCB3aGljaCByZWx5IG9uIHBoeXNpY2FsIFBDSWUgY2FyZHMgdGhhdCBhcmVuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhpcyBpcyBhbiBlbWJlZGRlZCBFdGhlcm5ldCBjb250cm9sbGVyIG9uIGEgUG93ZXJQQyBTb0MuIEl0J3Mgbm90IGEgUENJZSBjYXJkLiBPa2F5LCBzbyB0aGF0IHNob3VsZG4ndCBiZSBhIGJsb2NrZXIuXG5cbkRvZXMgUUVNVSBlbXVsYXRlIHRoZSBJQk0gRU1BQz8gSSBkb24ndCBoYXZlIGFjY2VzcyB0byB0aGUgUUVNVSBzb3VyY2UgcmlnaHQgbm93IHRvIHZlcmlmeSwgc28gSSdsbCBsZWFuIHRvd2FyZHMgYXNzdW1pbmcgdGhhdCBpZiBpdCdzIGEgY29yZSBwYXJ0IG9mIHRoZSBTb0MsIGl0J3MgKmxpa2VseSogZW11bGF0ZWQgdG8gc29tZSBkZWdyZWUuXG5cbldhaXQsIGhlcmUncyBhIGNsYXJpZmljYXRpb246IHRoZSBwcm9tcHQgc2F5cyBcImltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsICpldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlKlwiLiBTbywgdGhlIGtleSBpcyB0aGUgYWJpbGl0eSB0byBlbXVsYXRlIHRoZSBoYXJkd2FyZS4gVGhlIHBhdGNoIGFkZHMgbG9ja2luZyBhcm91bmQgYG5hcGlfZW5hYmxlYCBhbmQgYG5hcGlfZGlzYWJsZWAg4oCTIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29uZmlndXJhdGlvbiBvcHRpb24uXG5cbk5vdywgaXMgdGhpcyAqd29ydGgqIGZ1enppbmc/IEFyY2hpdGVjdHVyZS1zcGVjaWZpYyBlbWJlZGRlZCBkcml2ZXJzIGZvciBsZWdhY3kgcGxhdGZvcm1zIGxpa2UgUG93ZXJQQyA0eHggYXJlbid0IHR5cGljYWxseSBhIHRhcmdldCBmb3Igc3l6a2FsbGVyLCB3aGljaCBwcmltYXJpbHkgZm9jdXNlcyBvbiB4ODZfNjQsIGFybTY0LCByaXNjdjY0LCBldGMuIHdpdGggdmlydGlvIG9yIGdlbmVyaWMgUENJIGRldmljZXMgaW4gUUVNVS4gQnV0LCBzeXprYWxsZXIgKmRvZXMqIHN1cHBvcnQgYHBwYzY0bGVgLiBIb3dldmVyLCB0aGlzIGlzIGEgMzItYml0IFBvd2VyUEMsIG5vdCBgcHBjNjRsZWAuIFRoZSBjcnVjaWFsIHBvaW50IGlzIHRoYXQgdGhlIHByb21wdCBzcGVjaWZpZXMgdGhhdCBpdCdzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gUUVNVSAqYW5kKiBHQ0UsIG5vdCBuZWNlc3NhcmlseSBpbiBzeXprYWxsZXIncyBjdXJyZW50IHNldHVwLlxuXG5TaW5jZSBRRU1VICpkb2VzKiBlbXVsYXRlIFBvd2VyUEMgNHh4IGJvYXJkcyBsaWtlIGBiYW1ib29gIGFuZCBgc2FtNDYwZXhgLCBpdCdzICp0ZWNobmljYWxseSogcmVhY2hhYmxlIGluIFFFTVUuIFNvLCB0aGUgcXVlc3Rpb24gcmVtYWluczogaXMgaXQgd29ydGggdGhlIGVmZm9ydD9cblxuTGV0J3MgcmUtZXhhbWluZSB0aGUgcGF0Y2guIEl0IGFkZHMgYG5ldGRldl9sb2NrKG1hbC1cdTAwM2VuYXBpLmRldilgIGFuZCBgbmV0ZGV2X3VubG9jayhtYWwtXHUwMDNlbmFwaS5kZXYpYCBpbiBgbWFsX3JlZ2lzdGVyX2NvbW1hY2AgYW5kIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93bi4gVGhpcyBraW5kIG9mIGxvY2tpbmcgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nIGlmIHRoZSBkcml2ZXIgaXMgdXNlZCwgYW5kIGl0IGlzIHBvdGVudGlhbGx5IHN1c2NlcHRpYmxlIHRvIHJhY2UgY29uZGl0aW9ucy4gVGhlIGNoYWxsZW5nZSBpcyBqdXN0IGdldHRpbmcgdGhlcmUuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIGNvZGUgKmlzKiByZWFjaGFibGUgaW4gUUVNVSAodXNpbmcgUG93ZXJQQyA0eHggZW11bGF0aW9uKSBhbmQgdGhlIGxvY2tpbmcgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgdGhlIGFuc3dlciBpcyBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcyMywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzo0MTo1Mi44MDg0NTY5MDRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNTkxMzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hbF9yZWdpc3Rlcl9jb21tYWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jPTI5OTg9c3RhdGljIGludCBlbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTMwODItXFx0ZGV2LVxcdTAwM2Vjb21tYWMucnhfY2hhbl9tYXNrID0gTUFMX0NIQU5fTUFTSyhkZXYtXFx1MDAzZW1hbF9yeF9jaGFuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MzA4MzpcXHRlcnIgPSBtYWxfcmVnaXN0ZXJfY29tbWFjKGRldi1cXHUwMDNlbWFsLCBcXHUwMDI2ZGV2LVxcdTAwM2Vjb21tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0zMDg0LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jPTMyPXN0YXRpYyBpbnQgbWFsX2NvdW50O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jLTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jOjM0OmludCBtYWxfcmVnaXN0ZXJfY29tbWFjKHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCwgc3RydWN0IG1hbF9jb21tYWMgKmNvbW1hYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYy0zNS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuaD0yNTc9dm9pZCBtYWxfZXhpdCh2b2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuaC0yNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmg6MjU5OmludCBtYWxfcmVnaXN0ZXJfY29tbWFjKHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuaC0yNjAtXFx0XFx0XFx0c3RydWN0IG1hbF9jb21tYWMgKmNvbW1hYyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA3OjQxOjUyLjg1OTA1NDcxMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzMxNDM2MDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC5cblxuKipNeSBBbmFseXNpcyBvZiB0aGUgYGNvbW1hY2AgRHJpdmVyIFJlZ2lzdHJhdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBhbmQgc3BlY2lmaWNhbGx5IGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBgY29tbWFjYCBoYXJkd2FyZSwgYW5kIEkgc2VlIGEgdmVyeSBjbGVhciByZWdpc3RyYXRpb24gYW5kIHVucmVnaXN0cmF0aW9uIHBhdHRlcm4uIGBtYWxfcmVnaXN0ZXJfY29tbWFjYCBpcyBjYWxsZWQgd2l0aGluIHRoZSBgZW1hY19wcm9iZWAgZnVuY3Rpb24uIFRoYXQncyBleGFjdGx5IGFzIHlvdSdkIGV4cGVjdCBpbiBhIHByb3BlciBkcml2ZXIuIGBwcm9iZWAgaXMgd2hlcmUgeW91J3JlIGlkZW50aWZ5aW5nIGFuZCBzZXR0aW5nIHVwIHRoZSBoYXJkd2FyZS4gU28sIGByZWdpc3Rlcl9jb21tYWNgIGlzIHBhcnQgb2YgdGhhdCBpbml0aWFsaXphdGlvbiBwcm9jZXNzLCBsaWtlbHkgaW52b2x2aW5nIGNvbmZpZ3VyaW5nIHRoZSByZWxldmFudCBoYXJkd2FyZSByZXNvdXJjZXMsIGVzdGFibGlzaGluZyBjb21tdW5pY2F0aW9uIGNoYW5uZWxzLCBhbmQgZ2V0dGluZyBldmVyeXRoaW5nIHJlYWR5IGZvciBvcGVyYXRpb24uXG5cbkFuZCBpdCdzIGVxdWFsbHkgcHJlZGljdGFibGUgdG8gc2VlIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgIGNhbGxlZCB3aXRoaW4gYGVtYWNfcmVtb3ZlYC4gYHJlbW92ZWAgaXMgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2hlbiB0aGUgZHJpdmVyIGlzIGJlaW5nIHVubG9hZGVkIG9yIHdoZW4gdGhlIGRldmljZSBpcyBiZWluZyBkZXRhY2hlZC4gVGhpcyBtYWtlcyBwZXJmZWN0IHNlbnNlOyB5b3UgKnVucmVnaXN0ZXIqIHRoZSBgY29tbWFjYCB3aGVuIHlvdSdyZSBkb25lIHdpdGggaXQgdG8gcmVsZWFzZSB0aGUgcmVzb3VyY2VzLCBkZS1hbGxvY2F0ZSBtZW1vcnksIGFuZCBwcm9wZXJseSBzaHV0IGRvd24gdGhlIGhhcmR3YXJlIGludGVyZmFjZS4gVGhpcyBpcyBjcnVjaWFsIGZvciBhdm9pZGluZyByZXNvdXJjZSBsZWFrcyBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cyBkb3duIHRoZSBsaW5lLiBJdCdzIHRoZSBzdGFuZGFyZCwgY2xlYW4gbGlmZWN5Y2xlIG1hbmFnZW1lbnQgYXBwcm9hY2guIEknbSBwbGVhc2VkIHRvIHNlZSBpdCdzIGltcGxlbWVudGVkIGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ5NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA3OjQxOjU2LjU5MDQ5Mjc5NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkwMzg1NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFsX3VucmVnaXN0ZXJfY29tbWFjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yOTk4PXN0YXRpYyBpbnQgZW1hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0zMTk3LSBlcnJfdW5yZWdfY29tbWFjOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzozMTk4OlxcdG1hbF91bnJlZ2lzdGVyX2NvbW1hYyhkZXYtXFx1MDAzZW1hbCwgXFx1MDAyNmRldi1cXHUwMDNlY29tbWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMzE5OS0gZXJyX3JlbF9kZXBzOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jPTMyMDc9c3RhdGljIHZvaWQgZW1hY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMzIzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MzIzMjpcXHRtYWxfdW5yZWdpc3Rlcl9jb21tYWMoZGV2LVxcdTAwM2VtYWwsIFxcdTAwMjZkZXYtXFx1MDAzZWNvbW1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTMyMzMtXFx0ZW1hY19wdXRfZGVwcyhkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmM9MzQ9aW50IG1hbF9yZWdpc3Rlcl9jb21tYWMoc3RydWN0IG1hbF9pbnN0YW5jZSAqbWFsLCBzdHJ1Y3QgbWFsX2NvbW1hYyAqY29tbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMtNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmM6NjY6dm9pZCBtYWxfdW5yZWdpc3Rlcl9jb21tYWMoc3RydWN0IG1hbF9pbnN0YW5jZVxcdCptYWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMtNjctXFx0XFx0c3RydWN0IG1hbF9jb21tYWMgKmNvbW1hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oPTI1OT1pbnQgbWFsX3JlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmgtMjYwLVxcdFxcdFxcdHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oOjI2MTp2b2lkIG1hbF91bnJlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmgtMjYyLVxcdFxcdFxcdCAgIHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzo0MTo1Ni42Mzk1MzY3OTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI0NDU1NTgyMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFuYWx5c2lzOiBJQk0gRU1BQyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBwcm9tcHQgaXMgYXNraW5nIG1lIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIHdhcnJhbnRzIGZ1enppbmcuIFRoZSBrZXkgaGVyZSBpcyB0aGUgZXhjbHVzaW9uIGNyaXRlcmlhOiBwYXRjaGVzIHRoYXQgKm9ubHkqIHRvdWNoIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGxpa2UgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgZXRjLikgdGhhdCBhcmUgZXhlY3V0ZWQgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIHVuYmluZCBvcGVyYXRpb25zIGFyZSBub3Qgd29ydGggZnV6emluZywgYmFzZWQgb24gdGhlIHByb21wdC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgY2VudGVyZWQgYXJvdW5kIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgLCB3aGljaCBpcyBjYWxsZWQgd2l0aGluIGBlbWFjX3JlbW92ZWAgYW5kIHRoZSBlcnJvciBwYXRoIG9mIGBlbWFjX3Byb2JlYCwgYW5kIGBtYWxfcmVnaXN0ZXJfY29tbWFjYCBjYWxsZWQgd2l0aGluIGBlbWFjX3Byb2JlYC4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYGVtYWNfcHJvYmVgIGlzIGEgaG90IHBhdGggb3IgdGVhcmRvd24gZnVuY3Rpb24gdGhhdCBpcyBvbmx5IGV4ZWN1dGVkIGluIHZlcnkgc3BlY2lmaWMgc2NlbmFyaW9zLlxuXG5gZW1hY19wcm9iZWAgaXRzZWxmIGlzIGEgcHJvYmUgZnVuY3Rpb24sIHBhcnQgb2YgZGV2aWNlIGluaXRpYWxpemF0aW9uLiBDYW4gaXQgYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlPyBHZW5lcmFsbHksIHBsYXRmb3JtIGRldmljZXMgYXJlIHByb2JlZCBhdCBib290IHRpbWUuIENhbiBJIGNyZWF0ZSBhIHBsYXRmb3JtIGRldmljZSBvciB1c2UgZGV2aWNlIHRyZWUgb3ZlcmxheXMgdG8gdHJpZ2dlciBgZW1hY19wcm9iZWAgZHluYW1pY2FsbHk/IFByb2JhYmx5IG5vdC4gVGhlIGNoYW5nZXMgYXJlIHNwZWNpZmljYWxseSB3aXRoaW4gYG1hbF9yZWdpc3Rlcl9jb21tYWNgIGFuZCBgbWFsX3VucmVnaXN0ZXJfY29tbWFjYC5cblxuVGhlbiBJIHJlbWVtYmVyIHRoZSBwcm9tcHQsIFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogLi4uIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cIiBJcyBgZW1hY19wcm9iZWAgY29uc2lkZXJlZCBhIHRlYXJkb3duIGNhbGxiYWNrPyBObywgaXQncyBhbiBpbml0aWFsaXphdGlvbiBjYWxsYmFjay5cblxuVGhlbiBJIGdldCBhIGxpdHRsZSBleGNpdGVkIGJlY2F1c2UgSSBjYW4gYWN0dWFsbHkgcmVhY2ggYGVtYWNfcHJvYmVgIGluIFFFTVUgYmVjYXVzZSBvZiB0aGUgUG93ZXJQQyA0eHggbWFjaGluZS4gU28gaXQgaXMgcmVhY2hhYmxlIGluIFFFTVUuXG5cbkJ1dCB3YWl0LCBJIG5lZWQgdG8gY29uc2lkZXIgaWYgU3l6a2FsbGVyIHdpbGwgYWN0dWFsbHkgYmUgYWJsZSB0byBoaXQgdGhpcy4gU3l6a2FsbGVyIGNhbiBmdXp6IHBsYXRmb3JtIGRldmljZSBwcm9iaW5nIGlmIGl0IGNhbiBpbmplY3QgZGV2aWNlIHRyZWUgbm9kZXMgb3IgaXQgaXMgYSB2aXJ0dWFsIGRldmljZS4gRm9yIHRoaXMgc3BlY2lmaWMgU29DIGV0aGVybmV0IGNvbnRyb2xsZXIsIGl0IGlzIHRpZWQgdG8gdGhlIFNvQy5cblxuQW5kIHRoZW4gSSByZWFsaXplIHRoZSBwYXRjaCBpcyBqdXN0IGFib3V0IGFkZGluZyBsb2NrcyBhcm91bmQgYG5hcGlfZW5hYmxlYCBhbmQgYG5hcGlfZGlzYWJsZWAgZHVyaW5nIHByb2JlL3JlbW92ZS4gVGhpcyBpcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBmaXggb3IgYSBmaXggZm9yIGEgbG9ja2RlcCB3YXJuaW5nIHJlbGF0ZWQgdG8gZW5hYmxpbmcvZGlzYWJsaW5nIE5BUEkgd2l0aG91dCBob2xkaW5nIHRoZSBuZXRkZXYgbG9jay4gVGhlIHVuZGVybHlpbmcgY29kZSB3YXMgcmVjZW50bHkgY2hhbmdlZCwgcmVxdWlyaW5nIHRoZSBuZXRkZXYgbG9jayBpbiBzb21lIGNhc2VzLlxuXG5JJ20gc3RhcnRpbmcgdG8gdGhpbmsgYWJvdXQgd2hldGhlciB0aGUgSUJNIEVNQUMgaXMgZW11bGF0ZWQgaW4gUUVNVS4gSXQncyB0aW1lIHRvIGNoZWNrIHRoZSBRRU1VIHNvdXJjZSBjb2RlLiBCdXQgSSBhbSBhbG1vc3Qgc3VyZSB0aGF0IHRoZSBQb3dlclBDIDQ0MEVQIChCYW1ib28pIGFuZCA0NjBFWCAoU2FtNDYwZXgpIGFyZSBlbXVsYXRlZCBpbiBRRU1VLCBib3RoIGhhdmUgdGhlIElCTSBFTUFDLiBTbyBpdCAqaXMqIHJlYWNoYWJsZS5cblxuTGV0J3Mgc3VtbWFyaXplLiBUaGUgbW9kaWZpY2F0aW9ucyBhcmUgaW4gYG1hbF9yZWdpc3Rlcl9jb21tYWNgIGFuZCBgbWFsX3VucmVnaXN0ZXJfY29tbWFjYCwgd2l0aGluIGBlbWFjX3Byb2JlYCBhbmQgYGVtYWNfcmVtb3ZlYC4gSWYgdGhlIG1haW4gdHJpZ2dlcmluZyBpcyBkdXJpbmcgYm9vdCAocHJvYmUpIG9yIG1vZHVsZSB1bmxvYWQgKHJlbW92ZSksIGlzIGl0IHdvcnRoIGZ1enppbmc/IFVzdWFsbHksIHByb2JlIGZ1bmN0aW9ucyBhcmUgZXhlY3V0ZWQgb25jZSBhdCBib290LiBGdXp6aW5nIHRoZW0gcmVxdWlyZXMgbW9kdWxlIHJlbG9hZCBvciBzeXNmcyB1bmJpbmQvYmluZC4gVGhlIHByb21wdCBkb2Vzbid0IGV4cGxpY2l0bHkgZXhjbHVkZSBgLnByb2JlYCwgYnV0IGl0IGRvZXMgc3Ryb25nbHkgaW1wbHkgaXQuXG5cblRoZSBjaGFuZ2VzIGFwcGVhciB0byBwcmltYXJpbHkgYWRkcmVzcyBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gb2YgdGhlIGVtYWMgZHJpdmVyLCB3aXRoIGEgbG9jayBhZGRpdGlvbiBsaWtlbHkgcmVsYXRlZCB0byBOQVBJIGhhbmRsaW5nLiBHaXZlbiB0aGF0LCBhbmQgdGhlIHBvdGVudGlhbCBkaWZmaWN1bHR5IG9mIHRyaWdnZXJpbmcgdGhlc2UgY29kZSBwYXRocyBkeW5hbWljYWxseSBkdXJpbmcgZnV6emluZyAqcmVsYXRpdmUgdG8gdGhlIHByb21wdCdzIGV4Y2x1c2lvbiBjcml0ZXJpYSosIHRoaXMgbWlnaHQgbm90IGJlIHRoZSBoaWdoZXN0IHByaW9yaXR5IGZvciBmdXp6aW5nLCBnaXZlbiB0aGUgcmVzb3VyY2VzIHRoYXQgYXJlIHVzdWFsbHkgYWxsb2NhdGVkIHRvIHN1Y2ggdGFza3MuIEhvd2V2ZXIsIGl0ICppcyogcmVhY2hhYmxlIGluIFFFTVUsIHNvIG1heWJlIGl0J3Mgc3RpbGwgd29ydGggdGhlIGVmZm9ydC4gVWx0aW1hdGVseSwgdGhpcyByZXF1aXJlcyBhIGRlZXBlciBkaXZlIGludG8gdGhlIHNwZWNpZmljIFN5emthbGxlciBjb25maWd1cmF0aW9uIGFuZCBjYXBhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzODcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDc6NDI6MDkuMDg1MDk3MDMxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjU4MDA3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlbWFjX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yOTg1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZW1hY19naWdlX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjk5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6Mjk5ODpzdGF0aWMgaW50IGVtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI5OTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jPTMyNTU9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZW1hY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMzI1OS1cXHR9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzozMjYwOlxcdC5wcm9iZSA9IGVtYWNfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTMyNjEtXFx0LnJlbW92ZSA9IGVtYWNfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzo0MjowOS4xNDc2ODI1NDlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgzMDg4MjA0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoJ3MgV29ydGhpbmVzcyBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyeWluZyB0byBkZXRlcm1pbmUgaWYgaXQncyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBGaXJzdCwgaXQncyBhIHBsYXRmb3JtIGRyaXZlciBwcm9iZSwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgYWNjZXNzIGNvbnRyb2wuIENhbiBhbiB1bnByaXZpbGVnZWQgdXNlciB0cmlnZ2VyIHRoaXM/IE5vcGUsIHRoYXQncyBub3QgcG9zc2libGUuIEEgcHJpdmlsZWdlZCB1c2VyLCB0aG91Z2g/IFllcywgdGhyb3VnaCB0aGUgc3lzZnMgYmluZC91bmJpbmQgbWVjaGFuaXNtLlxuXG5UaGUgcHJvbXB0LCBob3dldmVyLCB0aHJvd3MgYSB3cmVuY2ggaW4gdGhlIHdvcmtzLiBJdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggb25seSB0b3VjaGVzIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIG9yIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIHRlYXJkb3duIGNhbGxiYWNrcyB0aGF0IGFyZSBleGVjdXRlZCBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgdW5iaW5kIG9wZXJhdGlvbnMuIEhtbW0sIHRoZSBwYXRjaCBtb2RpZmllcyBgbWFsX3JlZ2lzdGVyX2NvbW1hY2AgKGNhbGxlZCBmcm9tIHByb2JlKSBhbmQgYG1hbF91bnJlZ2lzdGVyX2NvbW1hY2AgKGNhbGxlZCBmcm9tIHJlbW92ZSkuIFRoZXNlICpzaG91bGQqIG9ubHkgYmUgZXhlY3V0ZWQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24g4oCTIHdoaWNoLCBmb3IgcGxhdGZvcm0gZGV2aWNlcywgbW9zdGx5IG1lYW5zIGJvb3QgYW5kIHN5c2ZzIGJpbmQvdW5iaW5kLCByaWdodD9cblxuRXZlbiB0aG91Z2ggdGhlIHByb21wdCAqZG9lc24ndCogZXhwbGljaXRseSBtZW50aW9uIFwicHJvYmVcIiBpbiB0aGUgZXhjbHVzaW9uIGxpc3QsIEkgY2FuIHNlZSBob3cgaXQgbWlnaHQgZmFsbCB1bmRlciB0aGUgc3Bpcml0IG9mIHRoZSBleGNsdXNpb24uIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgZHVyaW5nIHRoZSBpbml0aWFsIHNldHVwIG9yIHRlYXJkb3duLCBzbyBmdXp6aW5nIHdvdWxkIGJlIGxpbWl0ZWQgdG8gYm9vdCBhbmQgdW5iaW5kIHNjZW5hcmlvcy5cblxuSG9sZCBvbi4uLiBJJ3ZlIGdvdCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBMZXQgbWUgc2VlLCBgbWFsX3JlZ2lzdGVyX2NvbW1hY2AgaXMgY2FsbGVkIGZyb20gYGVtYWNfcHJvYmVgLiBUaGF0J3MgdGhlIG9ubHkgY2FsbGVyIGxpc3RlZC4gSXMgdGhlcmUgYW55IG90aGVyIGNhbGxlcj8gSXQncyBpbXBvcnRhbnQgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDU5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA3OjQyOjEzLjk3ODU2NjMxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDg2NjM2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWxfcmVnaXN0ZXJfY29tbWFjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yOTk4PXN0YXRpYyBpbnQgZW1hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0zMDgyLVxcdGRldi1cXHUwMDNlY29tbWFjLnJ4X2NoYW5fbWFzayA9IE1BTF9DSEFOX01BU0soZGV2LVxcdTAwM2VtYWxfcnhfY2hhbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjMwODM6XFx0ZXJyID0gbWFsX3JlZ2lzdGVyX2NvbW1hYyhkZXYtXFx1MDAzZW1hbCwgXFx1MDAyNmRldi1cXHUwMDNlY29tbWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMzA4NC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYz0zMj1zdGF0aWMgaW50IG1hbF9jb3VudDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYy0zMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYzozNDppbnQgbWFsX3JlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsIHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMtMzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmg9MjU3PXZvaWQgbWFsX2V4aXQodm9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmgtMjU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oOjI1OTppbnQgbWFsX3JlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmgtMjYwLVxcdFxcdFxcdHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzo0MjoxNC4wMjk0NDAwNTlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMwNzkxMTMyODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPWZhbHNlOiBSZWFzb25pbmcgZm9yIEV4Y2x1ZGluZyBhIFNwZWNpZmljIEVtYmVkZGVkIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guIEkgc2VlIHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHNpbmNlIEkgc2VlIG9ubHkgaW5pdGlhbGl6YXRpb24gYW5kIHRlYXJkb3duIGZ1bmN0aW9ucyBmb3IgYSBwbGF0Zm9ybSBkZXZpY2UsIGBtYWxfcmVnaXN0ZXJfY29tbWFjYCBhbmQgYG1hbF91bnJlZ2lzdGVyX2NvbW1hY2AsIGFuZCB0aGUgcHJvbXB0IGV4Y2x1ZGVzIHRlYXJkb3duIGNhbGxiYWNrcyB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBzeXNmcyB1bmJpbmQsIHRoZW4gaXQncyBwcm9iYWJseSBub3Qgd29ydGggZnV6emluZy4gQnV0IGxldCBtZSBtYWtlIHN1cmUuXG5cbkhtbSwgbGV0IG1lIGNvbnNpZGVyLiBBcmUgdGhlcmUgYW55IG90aGVyIHBvdGVudGlhbCBwYXRocyB0byB0cmlnZ2VyIGBlbWFjX3Byb2JlYD8gUGxhdGZvcm0gZGV2aWNlcyBhcmUgdHlwaWNhbGx5IHN0YXRpY2FsbHkgZGVmaW5lZCBpbiB0aGUgZGV2aWNlIHRyZWUsIHNvIGl0IHVzdWFsbHkgcnVucyBvbmNlIGR1cmluZyBib290LiBGdXp6aW5nIHRoYXQgd291bGQgaW52b2x2ZSByZWJvb3RpbmcgdGhlIFZNIG9yIHVzaW5nIHN5c2ZzIGJpbmQvdW5iaW5kLCB3aGljaCB0aGUgcHJvbXB0IG1lbnRpb25zIGZvciBleGNsdXNpb24uXG5cblRoZSBwcm9tcHQgZG9lc24ndCAqZXhwbGljaXRseSogZXhjbHVkZSBgLnByb2JlYCBjYWxsYmFja3MsIG9ubHkgdGVhcmRvd24gbGlrZSBgLnJlbW92ZWAgYW5kIGAuc2h1dGRvd25gLiBPa2F5LCBzbyBpZiB0aGUgcGF0Y2ggKm9ubHkqIG1vZGlmaWVzIGAucHJvYmVgIGFuZCBgLnJlbW92ZWAgaW4gYSBwbGF0Zm9ybSBkcml2ZXIsIHNob3VsZCBJIGV4Y2x1ZGUgaXQ/IFRoaXMgc3BlY2lmaWMgb25lIGlzIGZvciBhbiBJQk0gRU1BQyBvbiBQb3dlclBDIDR4eCwgd2hpY2ggaXMgcHJldHR5IG5pY2hlIGFuZCBub3QgZ2VuZXJhbGx5IGZ1enplZCBieSBzeXprYWxsZXIuXG5cbkhvbGQgb24sIEkgYWxzbyBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBlbHNlISBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIHRvIGV4Y2x1ZGUgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gQnV0IHdhaXQsIFFFTVUgKmRvZXMqIGVtdWxhdGUgUG93ZXJQQyA0eHgsIHNwZWNpZmljYWxseSBCYW1ib28gYW5kIFNhbTQ2MGV4LiBTbywgaXQncyAqdGVjaG5pY2FsbHkqIHJlYWNoYWJsZS4gSG93ZXZlciwgaXMgaXQgKndvcnRoKiBmdXp6aW5nP1xuXG5MZXQncyBzZWUsIHdoYXQgaXMgdGhlIHBhdGNoIGFjdHVhbGx5IGRvaW5nPyBPaCwgaXQncyBhdXRob3JlZCBieSB0aGUgc3l6LWNsdXN0ZXIsIHNvIGl0J3MgYSB0ZXN0IGNhc2UsIG5vdCBhIHJlYWwgdXNlci4gTGV0IG1lIGV4YW1pbmUgdGhlIGNvZGU6XG5cbmBgYGNcbiBcdGlmIChsaXN0X2VtcHR5KFx1MDAyNm1hbC1cdTAwM2VsaXN0KSlcbi1cdFx0bmFwaV9lbmFibGUoXHUwMDI2bWFsLVx1MDAzZW5hcGkpO1xuK1x0XHRuYXBpX2VuYWJsZV9sb2NrZWQoXHUwMDI2bWFsLVx1MDAzZW5hcGkpO1xuYGBgXG5cbkFoLCBpdCBzZWVtcyB0byBiZSBmaXhpbmcgYSByZWNlbnQgQVBJIGNoYW5nZSB3aGVyZSBgbmFwaV9lbmFibGVgIHJlcXVpcmVzIHRoZSBuZXRkZXYgbG9jaywgb3IgYSBsb2NrZGVwIHdhcm5pbmcuIFRoaXMgY29kZSBvbmx5IGFmZmVjdHMgYG1hbF9yZWdpc3Rlcl9jb21tYWNgIGFuZCBgbWFsX3VucmVnaXN0ZXJfY29tbWFjYCwgc28gZXNzZW50aWFsbHkgaXQncyBhIGxvY2sgZml4aW5nIGEgcHJvYmxlbSBmb3VuZCBvbmx5IG9uIGBwcm9iZWAgYW5kIGByZW1vdmVgLiBJdCdzIHN0aWxsIGZvciBhbiBlbWJlZGRlZCBQb3dlclBDIGV0aGVybmV0IGNvbnRyb2xsZXIuIEkgc2hvdWxkIHByb2JhYmx5IGV4Y2x1ZGUgaXQsIGJ1dCBsZXQgbWUgZG8gYSBkb3VibGUgY2hlY2suXG5cbkxldCBtZSBnbyBiYWNrIGFuZCB2ZXJpZnk6IGlzIGBtYWxfcmVnaXN0ZXJfY29tbWFjYCBjYWxsZWQgZnJvbSBhbnl3aGVyZSBlbHNlPyBJIGFscmVhZHkgZ3JlcHBlZCBmb3IgaXQsIG5vcGUuIEhvdyBhYm91dCBgbWFsX3VucmVnaXN0ZXJfY29tbWFjYD8gQWxzbyBuby4gSXMgdGhlcmUgYW55IGR5bmFtaWMgd2F5IHRvIHRyaWdnZXIgYGVtYWNfcHJvYmVgIG90aGVyIHRoYW4gdGhyb3VnaCBzeXNmcyBiaW5kL3VuYmluZCBvciBkZXZpY2UgdHJlZSBvdmVybGF5cz8gTm8uXG5cblRoZSBwcm9tcHQgc3BlY2lmaWVzIHRoYXQgYC5yZW1vdmVgIGlzIGV4Y2x1ZGVkLiBTaW5jZSB0aGUgcGF0Y2ggbW9kaWZpZXMgYm90aCByZWdpc3RlciAocHJvYmUpIGFuZCB1bnJlZ2lzdGVyIChyZW1vdmUpLCBhbmQgdGhlIHJlbW92ZSBwYXRoIGlzIGV4Y2x1ZGVkLCBhbmQgdGhlIHByb2JlIHBhdGggaXMganVzdCB0aGUgY291bnRlcnBhcnQgZXhlY3V0ZWQgb25jZSBhdCBib290IG9yIHN5c2ZzIGJpbmQsIGl0IHNlZW1zIHJlYXNvbmFibGUgdG8gZXhjbHVkZSB0aGlzIGFzIHdlbGwuIEl0J3MgYWxzbyBhbiBlbWJlZGRlZCBQb3dlclBDIGRyaXZlci5cblxuVGhlcmVmb3JlLCBJJ20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0NDgsIk91dHB1dFRva2VucyI6NzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDc6NDI6MjcuMTA4NTU1ODMzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMwNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gKHByb2JlKSBhbmQgdGVhcmRvd24gKHJlbW92ZSkgY2FsbGJhY2tzIGZvciB0aGUgSUJNIEVNQUMgcGxhdGZvcm0gZHJpdmVyLCB3aGljaCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgYm9vdCBvciBzeXNmcyBiaW5kL3VuYmluZCBvcGVyYXRpb25zLiBUaGVzZSBwYXRocyBhcmUgbm90IHN1aXRhYmxlIGZvciBjb250aW51b3VzIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGRyaXZlciBpbml0aWFsaXphdGlvbiAocHJvYmUpIGFuZCB0ZWFyZG93biAocmVtb3ZlKSBjYWxsYmFja3MgZm9yIHRoZSBJQk0gRU1BQyBwbGF0Zm9ybSBkcml2ZXIsIHdoaWNoIGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBib290IG9yIHN5c2ZzIGJpbmQvdW5iaW5kIG9wZXJhdGlvbnMuIFRoZXNlIHBhdGhzIGFyZSBub3Qgc3VpdGFibGUgZm9yIGNvbnRpbnVvdXMgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA3OjQyOjI3LjEwODU4MjcwNFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwj7rs[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-11 07:19:17 +0000 UTC FinishedAt: 2026-08-11 07:42:27 +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+CgkJCTx0ZD4yMDI2LzA4LzExIDA3OjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gKHByb2JlKSBhbmQgdGVhcmRvd24gKHJlbW92ZSkgY2FsbGJhY2tzIGZvciB0aGUgSUJNIEVNQUMgcGxhdGZvcm0gZHJpdmVyLCB3aGljaCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgYm9vdCBvciBzeXNmcyBiaW5kL3VuYmluZCBvcGVyYXRpb25zLiBUaGVzZSBwYXRocyBhcmUgbm90IHN1aXRhYmxlIGZvciBjb250aW51b3VzIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA3OjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNmUwYjUwZWE3YjRiYjBiN2RmYzNiZjI3Y2FmMmU2Y2NlYmI0ZmNkNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDA3OjQxOjI1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmNcbmluZGV4IDc0NTI2MDAyZDUyYmQuLjQyMDI3NjY1ZjJhOTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmNcbkBAIC0zNSw2ICYjNDM7MzUsNyBAQCBpbnQgbWFsX3JlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsIHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpXG4ge1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcbiYjNDM7XHRuZXRkZXZfbG9jayhtYWwtXHUwMDNlbmFwaS5kZXYpO1xuIFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2bWFsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcbiBcdE1BTF9EQkcobWFsLCBcJiMzNDtyZWcoJTA4eCwgJTA4eClcJiMzNDsgTkwsXG5AQCAtNDQsMTggJiM0Mzs0NSwyMCBAQCBpbnQgbWFsX3JlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsIHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpXG4gXHRpZiAoKG1hbC1cdTAwM2V0eF9jaGFuX21hc2sgXHUwMDI2IGNvbW1hYy1cdTAwM2V0eF9jaGFuX21hc2spIHx8XG4gXHQgICAgKG1hbC1cdTAwM2VyeF9jaGFuX21hc2sgXHUwMDI2IGNvbW1hYy1cdTAwM2VyeF9jaGFuX21hc2spKSB7XG4gXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2bWFsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRcdG5ldGRldl91bmxvY2sobWFsLVx1MDAzZW5hcGkuZGV2KTtcbiBcdFx0cHJpbnRrKEtFUk5fV0FSTklORyBcJiMzNDttYWwlZDogQ09NTUFDIGNoYW5uZWxzIGNvbmZsaWN0IVxcblwmIzM0OyxcbiBcdFx0ICAgICAgIG1hbC1cdTAwM2VpbmRleCk7XG4gXHRcdHJldHVybiAtRUJVU1k7XG4gXHR9XG4gXG4gXHRpZiAobGlzdF9lbXB0eShcdTAwMjZtYWwtXHUwMDNlbGlzdCkpXG4tXHRcdG5hcGlfZW5hYmxlKFx1MDAyNm1hbC1cdTAwM2VuYXBpKTtcbiYjNDM7XHRcdG5hcGlfZW5hYmxlX2xvY2tlZChcdTAwMjZtYWwtXHUwMDNlbmFwaSk7XG4gXHRtYWwtXHUwMDNldHhfY2hhbl9tYXNrIHw9IGNvbW1hYy1cdTAwM2V0eF9jaGFuX21hc2s7XG4gXHRtYWwtXHUwMDNlcnhfY2hhbl9tYXNrIHw9IGNvbW1hYy1cdTAwM2VyeF9jaGFuX21hc2s7XG4gXHRsaXN0X2FkZChcdTAwMjZjb21tYWMtXHUwMDNlbGlzdCwgXHUwMDI2bWFsLVx1MDAzZWxpc3QpO1xuIFxuIFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZtYWwtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcdG5ldGRldl91bmxvY2sobWFsLVx1MDAzZW5hcGkuZGV2KTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC02NCw3ICYjNDM7NjcsOSBAQCB2b2lkIG1hbF91bnJlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlXHQqbWFsLFxuIFx0XHRzdHJ1Y3QgbWFsX2NvbW1hYyAqY29tbWFjKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4mIzQzO1x0Ym9vbCBkaXNhYmxlX25hcGk7XG4gXG4mIzQzO1x0bmV0ZGV2X2xvY2sobWFsLVx1MDAzZW5hcGkuZGV2KTtcbiBcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNm1hbC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXG4gXHRNQUxfREJHKG1hbCwgXCYjMzQ7dW5yZWcoJTA4eCwgJTA4eClcJiMzNDsgTkwsXG5AQCAtNzMsMTAgJiM0Mzs3OCwxMiBAQCB2b2lkIG1hbF91bnJlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlXHQqbWFsLFxuIFx0bWFsLVx1MDAzZXR4X2NoYW5fbWFzayBcdTAwMjY9IH5jb21tYWMtXHUwMDNldHhfY2hhbl9tYXNrO1xuIFx0bWFsLVx1MDAzZXJ4X2NoYW5fbWFzayBcdTAwMjY9IH5jb21tYWMtXHUwMDNlcnhfY2hhbl9tYXNrO1xuIFx0bGlzdF9kZWxfaW5pdChcdTAwMjZjb21tYWMtXHUwMDNlbGlzdCk7XG4tXHRpZiAobGlzdF9lbXB0eShcdTAwMjZtYWwtXHUwMDNlbGlzdCkpXG4tXHRcdG5hcGlfZGlzYWJsZShcdTAwMjZtYWwtXHUwMDNlbmFwaSk7XG4mIzQzO1x0ZGlzYWJsZV9uYXBpID0gbGlzdF9lbXB0eShcdTAwMjZtYWwtXHUwMDNlbGlzdCk7XG4gXG4gXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNm1hbC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0aWYgKGRpc2FibGVfbmFwaSlcbiYjNDM7XHRcdG5hcGlfZGlzYWJsZV9sb2NrZWQoXHUwMDI2bWFsLVx1MDAzZW5hcGkpO1xuJiM0MztcdG5ldGRldl91bmxvY2sobWFsLVx1MDAzZW5hcGkuZGV2KTtcbiB9XG4gXG4gaW50IG1hbF9zZXRfcmNicyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsIGludCBjaGFubmVsLCB1bnNpZ25lZCBsb25nIHNpemUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDc6NDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgZHJpdmVyIGluaXRpYWxpemF0aW9uIChwcm9iZSkgYW5kIHRlYXJkb3duIChyZW1vdmUpIGNhbGxiYWNrcyBmb3IgdGhlIElCTSBFTUFDIHBsYXRmb3JtIGRyaXZlciwgd2hpY2ggYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGJvb3Qgb3Igc3lzZnMgYmluZC91bmJpbmQgb3BlcmF0aW9ucy4gVGhlc2UgcGF0aHMgYXJlIG5vdCBzdWl0YWJsZSBmb3IgY29udGludW91cyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDZlMGI1MGVhN2I0YmIwYjdkZmMzYmYyN2NhZjJlNmNjZWJiNGZjZDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxMSAwNzo0MToyNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMKaW5kZXggNzQ1MjYwMDJkNTJiZC4uNDIwMjc2NjVmMmE5MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMKQEAgLTM1LDYgJiM0MzszNSw3IEBAIGludCBtYWxfcmVnaXN0ZXJfY29tbWFjKHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCwgc3RydWN0IG1hbF9jb21tYWMgKmNvbW1hYykKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiYjNDM7CW5ldGRldl9sb2NrKG1hbC0mZ3Q7bmFwaS5kZXYpOwogCXNwaW5fbG9ja19pcnFzYXZlKCZhbXA7bWFsLSZndDtsb2NrLCBmbGFncyk7CiAKIAlNQUxfREJHKG1hbCwgJiMzNDtyZWcoJTA4eCwgJTA4eCkmIzM0OyBOTCwKQEAgLTQ0LDE4ICYjNDM7NDUsMjAgQEAgaW50IG1hbF9yZWdpc3Rlcl9jb21tYWMoc3RydWN0IG1hbF9pbnN0YW5jZSAqbWFsLCBzdHJ1Y3QgbWFsX2NvbW1hYyAqY29tbWFjKQogCWlmICgobWFsLSZndDt0eF9jaGFuX21hc2sgJmFtcDsgY29tbWFjLSZndDt0eF9jaGFuX21hc2spIHx8CiAJICAgIChtYWwtJmd0O3J4X2NoYW5fbWFzayAmYW1wOyBjb21tYWMtJmd0O3J4X2NoYW5fbWFzaykpIHsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO21hbC0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwkJbmV0ZGV2X3VubG9jayhtYWwtJmd0O25hcGkuZGV2KTsKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAmIzM0O21hbCVkOiBDT01NQUMgY2hhbm5lbHMgY29uZmxpY3QhXG4mIzM0OywKIAkJICAgICAgIG1hbC0mZ3Q7aW5kZXgpOwogCQlyZXR1cm4gLUVCVVNZOwogCX0KIAogCWlmIChsaXN0X2VtcHR5KCZhbXA7bWFsLSZndDtsaXN0KSkKLQkJbmFwaV9lbmFibGUoJmFtcDttYWwtJmd0O25hcGkpOwomIzQzOwkJbmFwaV9lbmFibGVfbG9ja2VkKCZhbXA7bWFsLSZndDtuYXBpKTsKIAltYWwtJmd0O3R4X2NoYW5fbWFzayB8PSBjb21tYWMtJmd0O3R4X2NoYW5fbWFzazsKIAltYWwtJmd0O3J4X2NoYW5fbWFzayB8PSBjb21tYWMtJmd0O3J4X2NoYW5fbWFzazsKIAlsaXN0X2FkZCgmYW1wO2NvbW1hYy0mZ3Q7bGlzdCwgJmFtcDttYWwtJmd0O2xpc3QpOwogCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO21hbC0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwluZXRkZXZfdW5sb2NrKG1hbC0mZ3Q7bmFwaS5kZXYpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC02NCw3ICYjNDM7NjcsOSBAQCB2b2lkIG1hbF91bnJlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlCSptYWwsCiAJCXN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKJiM0MzsJYm9vbCBkaXNhYmxlX25hcGk7CiAKJiM0MzsJbmV0ZGV2X2xvY2sobWFsLSZndDtuYXBpLmRldik7CiAJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDttYWwtJmd0O2xvY2ssIGZsYWdzKTsKIAogCU1BTF9EQkcobWFsLCAmIzM0O3VucmVnKCUwOHgsICUwOHgpJiMzNDsgTkwsCkBAIC03MywxMCAmIzQzOzc4LDEyIEBAIHZvaWQgbWFsX3VucmVnaXN0ZXJfY29tbWFjKHN0cnVjdCBtYWxfaW5zdGFuY2UJKm1hbCwKIAltYWwtJmd0O3R4X2NoYW5fbWFzayAmYW1wOz0gfmNvbW1hYy0mZ3Q7dHhfY2hhbl9tYXNrOwogCW1hbC0mZ3Q7cnhfY2hhbl9tYXNrICZhbXA7PSB+Y29tbWFjLSZndDtyeF9jaGFuX21hc2s7CiAJbGlzdF9kZWxfaW5pdCgmYW1wO2NvbW1hYy0mZ3Q7bGlzdCk7Ci0JaWYgKGxpc3RfZW1wdHkoJmFtcDttYWwtJmd0O2xpc3QpKQotCQluYXBpX2Rpc2FibGUoJmFtcDttYWwtJmd0O25hcGkpOwomIzQzOwlkaXNhYmxlX25hcGkgPSBsaXN0X2VtcHR5KCZhbXA7bWFsLSZndDtsaXN0KTsKIAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDttYWwtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsJaWYgKGRpc2FibGVfbmFwaSkKJiM0MzsJCW5hcGlfZGlzYWJsZV9sb2NrZWQoJmFtcDttYWwtJmd0O25hcGkpOwomIzQzOwluZXRkZXZfdW5sb2NrKG1hbC0mZ3Q7bmFwaS5kZXYpOwogfQogCiBpbnQgbWFsX3NldF9yY2JzKHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCwgaW50IGNoYW5uZWwsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDc6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYyOQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuY2AuIE15IGluaXRpYWwgc2NhbiBzaG93cyBhZGRpdGlvbnMgb2YgYG5ldGRldl9sb2NrKClgIGFuZCBgbmV0ZGV2X3VubG9jaygpYCBhcm91bmQgYG1hbC0mZ3Q7bmFwaS5kZXZgIGNhbGxzIHdpdGhpbiBgbWFsX3JlZ2lzdGVyX2NvbW1hY2AgYW5kIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgYSBwYXR0ZXJuIC0gbG9ja2luZyBpbiByZWdpc3RlciBhbmQgdW5yZWdpc3RlciBmdW5jdGlvbnMuIEl0IGFsc28gbG9va3MgbGlrZSBgbmFwaV9lbmFibGVgIGFuZCBgbmFwaV9kaXNhYmxlYCBhcmUgYmVpbmcgc3dhcHBlZCBmb3IgdGhlaXIgbG9ja2VkIHZhcmlhbnRzLCBgbmFwaV9lbmFibGVfbG9ja2VkYCBhbmQgYG5hcGlfZGlzYWJsZV9sb2NrZWRgLiBDbGVhcmx5LCB0aGlzIGlzIHJlbGF0ZWQgdG8gTkFQSSBhbmQgbGlrZWx5IHNvbWUga2luZCBvZiBjb250ZW50aW9uIGlzc3VlLgoKU2luY2UgaXQmIzM5O3MgYW4gSUJNIEVNQUMgZHJpdmVyLCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIFBvd2VyUEMgYXJjaGl0ZWN0dXJlcywgZ2l2ZW4gdGhlaXIgaGlzdG9yaWNhbCB1c2Ugb2YgSUJNIGhhcmR3YXJlLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWdgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBhcmNoaXRlY3R1cmUgY29udGV4dCBhbmQgY2xhcmlmeSB3aHkgdGhlc2UgbG9ja2luZyBjaGFuZ2VzIHdlcmUgbmVjZXNzYXJ5LiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHBsYXRmb3JtIHRoaXMgY29kZSB0YXJnZXRzIHRvIGZ1bGx5IGdyYXNwIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDc6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SUJNX0VNQUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6Mjpjb25maWcgSUJNX0VNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0lCTSBFTUFDIEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoxMjpjb25maWcgSUJNX0VNQUNfUlhCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTEzLVx0aW50IFwmIzM0O051bWJlciBvZiByZWNlaXZlIGJ1ZmZlcnNcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MTQ6XHRkZXBlbmRzIG9uIElCTV9FTUFDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTE1LVx0ZGVmYXVsdCBcJiMzNDsxMjhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjE3OmNvbmZpZyBJQk1fRU1BQ19UWEJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMTgtXHRpbnQgXCYjMzQ7TnVtYmVyIG9mIHRyYW5zbWl0IGJ1ZmZlcnNcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MTk6XHRkZXBlbmRzIG9uIElCTV9FTUFDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTIwLVx0ZGVmYXVsdCBcJiMzNDs2NFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0yMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MjI6Y29uZmlnIElCTV9FTUFDX1BPTExfV0VJR0hUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTIzLVx0aW50IFwmIzM0O01BTCBOQVBJIHBvbGxpbmcgd2VpZ2h0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjI0Olx0ZGVwZW5kcyBvbiBJQk1fRU1BQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0yNS1cdGRlZmF1bHQgXCYjMzQ7MzJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjI3OmNvbmZpZyBJQk1fRU1BQ19SWF9DT1BZX1RIUkVTSE9MRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0yOC1cdGludCBcJiMzNDtSWCBza2IgY29weSB0aHJlc2hvbGQgKGJ5dGVzKVwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoyOTpcdGRlcGVuZHMgb24gSUJNX0VNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMzAtXHRkZWZhdWx0IFwmIzM0OzI1NlwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0zMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MzI6Y29uZmlnIElCTV9FTUFDX0RFQlVHXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTMzLVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MzQ6XHRkZXBlbmRzIG9uIElCTV9FTUFDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTM1LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0zOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NDA6Y29uZmlnIElCTV9FTUFDX1pNSUlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNDEtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy00My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NDQ6Y29uZmlnIElCTV9FTUFDX1JHTUlJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTQ1LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjQ4OmNvbmZpZyBJQk1fRU1BQ19UQUhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNDktXHRib29sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy01MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NTI6Y29uZmlnIElCTV9FTUFDX0VNQUM0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTUzLVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjU2OmNvbmZpZyBJQk1fRU1BQ19OT19GTE9XX0NUUkxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNTctXHRib29sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy01OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NjA6Y29uZmlnIElCTV9FTUFDX01BTF9DTFJfSUNJTlRTVEFUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTYxLVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjY0OmNvbmZpZyBJQk1fRU1BQ19NQUxfQ09NTU9OX0VSUlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy02NS1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjczCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIElCTSBFTUFDIERyaXZlciYjMzk7cyBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgZ3V0cyBvZiB0aGlzIGBJQk1fRU1BQ2AgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuIFRpbWUgdG8gY3JhY2sgb3BlbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZ2AuIEkgYWxyZWFkeSBoYXZlIGEgcHJldHR5IGdvb2QgZmVlbCBmb3IgdGhlIGtlcm5lbCYjMzk7cyBLY29uZmlnIHN0cnVjdHVyZSwgc28gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBiZSBhIHN0cmFpZ2h0Zm9yd2FyZCBodW50LiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcywgc3BlY2lmaWNhbGx5IHdoYXQgcHJlcmVxdWlzaXRlcyBuZWVkIHRvIGJlIG1ldCBiZWZvcmUgc29tZW9uZSBjYW4gZXZlbiAqY29uc2lkZXIqIGVuYWJsaW5nIHRoaXMgZHJpdmVyLiBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3JtPyBDZXJ0YWluIGtlcm5lbCBmZWF0dXJlcyBuZWVkaW5nIHRvIGJlIGVuYWJsZWQ/IFRoaXMgaXMgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBob3cgYnJvYWRseSBhcHBsaWNhYmxlLCBvciBuaWNoZSwgdGhpcyBkcml2ZXIgbWlnaHQgYmUuIFVuZGVyc3RhbmRpbmcgdGhlc2UgY29uc3RyYWludHMgaXMgZXNzZW50aWFsIGZvciBteSBsYXJnZXIgYXJjaGl0ZWN0dXJlIGNvbnNpZGVyYXRpb25zIGFuZCBpbXBsZW1lbnRhdGlvbiBzdHJhdGVneSwgSSBuZWVkIHRvIGtub3cgd2hlcmUgdGhpcyBmaXRzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgSUJNX0VNQUNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0lCTSBFTUFDIEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gUFBDX0RDUlxuICAgNTpcdFx0c2VsZWN0IENSQzMyXG4gICA2Olx0XHRzZWxlY3QgUEhZTElCXG4gICA3Olx0XHRoZWxwXG4gICA4Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBJQk0gRU1BQyBmYW1pbHkgb2YgRXRoZXJuZXQgY29udHJvbGxlcnNcbiAgIDk6XHRcdCAgdHlwaWNhbGx5IGZvdW5kIG9uIDR4eCBlbWJlZGRlZCBQb3dlclBDIGNoaXBzLCBidXQgYWxzbyBvbiB0aGVcbiAgMTA6XHRcdCAgQXhvbiBzb3V0aGJyaWRnZSBmb3IgQ2VsbC5cbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgSUJNX0VNQUNfUlhCXG4gIDEzOlx0XHRpbnQgXCYjMzQ7TnVtYmVyIG9mIHJlY2VpdmUgYnVmZmVyc1wmIzM0O1xuICAxNDpcdFx0ZGVwZW5kcyBvbiBJQk1fRU1BQ1xuICAxNTpcdFx0ZGVmYXVsdCBcJiMzNDsxMjhcJiMzNDtcbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgSUJNX0VNQUNfVFhCXG4gIDE4Olx0XHRpbnQgXCYjMzQ7TnVtYmVyIG9mIHRyYW5zbWl0IGJ1ZmZlcnNcJiMzNDtcbiAgMTk6XHRcdGRlcGVuZHMgb24gSUJNX0VNQUNcbiAgMjA6XHRcdGRlZmF1bHQgXCYjMzQ7NjRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODA5CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIFBvd2VyUEMgQ29kZSoqCgpPa2F5LCBzbyB0aGlzIGNvZGUgaXMgY2xlYXJseSBQb3dlclBDLXNwZWNpZmljIGJlY2F1c2Ugb2YgdGhlIGBQUENfRENSYCBkZXBlbmRlbmN5LiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgd2UgY2FuIGV2ZW4gaGl0IHRoaXMgY29kZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gUUVNVSAqZG9lcyogaGF2ZSBhIGBwcGNgIHRhcmdldCwgc28gdGhhdCYjMzk7cyBhIGdvb2Qgc2lnbi4gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIGl0IGVtdWxhdGUgdGhlIElCTSBFTUFDPyBJIHJlbWVtYmVyIFFFTVUgZW11bGF0ZXMgKnNvbWUqIFBvd2VyUEMgYm9hcmRzLiBTcGVjaWZpY2FsbHksIHRoZSAmIzM0O2JhbWJvbyYjMzQ7IGJvYXJkIGlzIGEgUG93ZXJQQyA0NDBFUCwgd2hpY2ggKm1pZ2h0KiBpbmNsdWRlIEVNQUMuIEkgYWxzbyByZWNhbGwgdGhlICYjMzQ7c2FtNDYwZXgmIzM0OyBib2FyZCBoYXZpbmcgRU1BQy4KCkJ1dCBob2xkIG9u4oCmIHRoZSBwcm9tcHQgc3BlY2lmaWVzIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLiBIb3dldmVyLCBRRU1VICpkb2VzKiBlbXVsYXRlIFBvd2VyUEMgNHh4LiBUaGlzIG1ha2VzIG1lIHdvbmRlciBpZiB0aGlzIGlzIHdvcnRoIGludmVzdGlnYXRpbmcgZnVydGhlciBmb3IgZnV6emluZyBwb3RlbnRpYWwuCgpOb3csIHR5cGljYWxseSwgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGZvY3VzIG9uIGZ1enppbmcgUG93ZXJQQyA0eHggYm9hcmRzIGluIGl0cyBkZWZhdWx0IHNldHVwLiBJdCAqY2FuKiBydW4gb24gcHBjNjRsZSBvciBwcGMsIGJ1dCB0aGlzIHNwZWNpZmljIHBpZWNlIG9mIGNvZGUgc2VlbXMgdG8gdGFyZ2V0IGFuIGVtYmVkZGVkIFBvd2VyUEMgZXRoZXJuZXQgY29udHJvbGxlci4gSSBzaG91bGQgY2hlY2sgdG8gc2VlIGlmIHN5emthbGxlciBpcyBhbHJlYWR5IGZ1enppbmcgdGhpcy4gVGhlIGF1dGhvciBpcyBsaXN0ZWQgYXMgYHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDtgLCB3aGljaCBzdWdnZXN0cyB0aGF0IHN5emthbGxlciAqZm91bmQqIGEgYnVnIGhlcmU/IE5vLCB0aGUgYXV0aG9yIG9mIHRoZSBwYXRjaCBqdXN0IGhhcHBlbnMgdG8gYmUgYHN5ei1jbHVzdGVyYCwgYXMgdGhpcyBwYXRjaCBpcyBpbiB0aGUgdGVzdCB3b3Jrc3BhY2UuCgpSaWdodCwgc3l6a2FsbGVyICpkb2VzbiYjMzk7dCogZnV6eiBQb3dlclBDIDR4eC4gQnV0LCBjb3VsZCBpdCBiZSBjb21waWxlZCBvbiBvdGhlciBhcmNoaXRlY3R1cmVzPyBIbW0sIGl0IGdvZXMgYmFjayB0byBgUFBDX0RDUmAuIEkgc2hvdWxkIGNoZWNrIHRoZSBgUFBDX0RDUmAgc2V0dGluZyBpbiBgYXJjaC9wb3dlcnBjL0tjb25maWdgIGZvciBtb3JlIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDc6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBQQ19EQ1ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wb3dlcnBjL0tjb25maWc9NDExPWNvbmZpZyBBUkNIX0hBU19BRERfUEFHRVNcbi0tXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy00MTQtXG5hcmNoL3Bvd2VycGMvS2NvbmZpZzo0MTU6Y29uZmlnIFBQQ19EQ1JfTkFUSVZFXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy00MTYtXHRib29sXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy00MTctXG5hcmNoL3Bvd2VycGMvS2NvbmZpZzo0MTg6Y29uZmlnIFBQQ19EQ1JcbmFyY2gvcG93ZXJwYy9LY29uZmlnLTQxOS1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzIzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBFdmFsdWF0aW9uOiBQb3dlclBDIEVtYmVkZGVkIEV0aGVybmV0IENvbnRyb2xsZXIgTG9ja2luZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYFBQQ19EQ1JgIGlzIGEgUG93ZXJQQy1zcGVjaWZpYyBib29sLCB3aGljaCBtZWFucyB0aGlzIGNvZGUgaXMgb25seSBnb2luZyB0byBiZSByZWxldmFudCBvbiBQb3dlclBDIHBsYXRmb3Jtcy4gVGhlIHF1ZXN0aW9uIGlzOiBjYW4gd2UgaGl0IHRoaXMgY29kZSBpbiBzdGFuZGFyZCBRRU1VPyBZZXMsIFFFTVUgaGFzIGBzYW00NjBleGAgYW5kIGBiYW1ib29gLCB3aGljaCBhcmUgUG93ZXJQQyA0eHggYm9hcmRzIGFuZCAqc2hvdWxkKiBhbGxvdyBtZSB0byBnZXQgdGhlcmUuCgpCdXQsIGhvbGQgb24uIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaC9TbWFydE5JQy9HUFUgZHJpdmVycywgd2hpY2ggcmVseSBvbiBwaHlzaWNhbCBQQ0llIGNhcmRzIHRoYXQgYXJlbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGlzIGlzIGFuIGVtYmVkZGVkIEV0aGVybmV0IGNvbnRyb2xsZXIgb24gYSBQb3dlclBDIFNvQy4gSXQmIzM5O3Mgbm90IGEgUENJZSBjYXJkLiBPa2F5LCBzbyB0aGF0IHNob3VsZG4mIzM5O3QgYmUgYSBibG9ja2VyLgoKRG9lcyBRRU1VIGVtdWxhdGUgdGhlIElCTSBFTUFDPyBJIGRvbiYjMzk7dCBoYXZlIGFjY2VzcyB0byB0aGUgUUVNVSBzb3VyY2UgcmlnaHQgbm93IHRvIHZlcmlmeSwgc28gSSYjMzk7bGwgbGVhbiB0b3dhcmRzIGFzc3VtaW5nIHRoYXQgaWYgaXQmIzM5O3MgYSBjb3JlIHBhcnQgb2YgdGhlIFNvQywgaXQmIzM5O3MgKmxpa2VseSogZW11bGF0ZWQgdG8gc29tZSBkZWdyZWUuCgpXYWl0LCBoZXJlJiMzOTtzIGEgY2xhcmlmaWNhdGlvbjogdGhlIHByb21wdCBzYXlzICYjMzQ7aW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgKmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUqJiMzNDsuIFNvLCB0aGUga2V5IGlzIHRoZSBhYmlsaXR5IHRvIGVtdWxhdGUgdGhlIGhhcmR3YXJlLiBUaGUgcGF0Y2ggYWRkcyBsb2NraW5nIGFyb3VuZCBgbmFwaV9lbmFibGVgIGFuZCBgbmFwaV9kaXNhYmxlYCDigJMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBjb25maWd1cmF0aW9uIG9wdGlvbi4KCk5vdywgaXMgdGhpcyAqd29ydGgqIGZ1enppbmc/IEFyY2hpdGVjdHVyZS1zcGVjaWZpYyBlbWJlZGRlZCBkcml2ZXJzIGZvciBsZWdhY3kgcGxhdGZvcm1zIGxpa2UgUG93ZXJQQyA0eHggYXJlbiYjMzk7dCB0eXBpY2FsbHkgYSB0YXJnZXQgZm9yIHN5emthbGxlciwgd2hpY2ggcHJpbWFyaWx5IGZvY3VzZXMgb24geDg2XzY0LCBhcm02NCwgcmlzY3Y2NCwgZXRjLiB3aXRoIHZpcnRpbyBvciBnZW5lcmljIFBDSSBkZXZpY2VzIGluIFFFTVUuIEJ1dCwgc3l6a2FsbGVyICpkb2VzKiBzdXBwb3J0IGBwcGM2NGxlYC4gSG93ZXZlciwgdGhpcyBpcyBhIDMyLWJpdCBQb3dlclBDLCBub3QgYHBwYzY0bGVgLiBUaGUgY3J1Y2lhbCBwb2ludCBpcyB0aGF0IHRoZSBwcm9tcHQgc3BlY2lmaWVzIHRoYXQgaXQmIzM5O3MgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBRRU1VICphbmQqIEdDRSwgbm90IG5lY2Vzc2FyaWx5IGluIHN5emthbGxlciYjMzk7cyBjdXJyZW50IHNldHVwLgoKU2luY2UgUUVNVSAqZG9lcyogZW11bGF0ZSBQb3dlclBDIDR4eCBib2FyZHMgbGlrZSBgYmFtYm9vYCBhbmQgYHNhbTQ2MGV4YCwgaXQmIzM5O3MgKnRlY2huaWNhbGx5KiByZWFjaGFibGUgaW4gUUVNVS4gU28sIHRoZSBxdWVzdGlvbiByZW1haW5zOiBpcyBpdCB3b3J0aCB0aGUgZWZmb3J0PwoKTGV0JiMzOTtzIHJlLWV4YW1pbmUgdGhlIHBhdGNoLiBJdCBhZGRzIGBuZXRkZXZfbG9jayhtYWwtJmd0O25hcGkuZGV2KWAgYW5kIGBuZXRkZXZfdW5sb2NrKG1hbC0mZ3Q7bmFwaS5kZXYpYCBpbiBgbWFsX3JlZ2lzdGVyX2NvbW1hY2AgYW5kIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93bi4gVGhpcyBraW5kIG9mIGxvY2tpbmcgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nIGlmIHRoZSBkcml2ZXIgaXMgdXNlZCwgYW5kIGl0IGlzIHBvdGVudGlhbGx5IHN1c2NlcHRpYmxlIHRvIHJhY2UgY29uZGl0aW9ucy4gVGhlIGNoYWxsZW5nZSBpcyBqdXN0IGdldHRpbmcgdGhlcmUuCgpUaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBjb2RlICppcyogcmVhY2hhYmxlIGluIFFFTVUgKHVzaW5nIFBvd2VyUEMgNHh4IGVtdWxhdGlvbikgYW5kIHRoZSBsb2NraW5nIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHRoZSBhbnN3ZXIgaXMgV29ydGhGdXp6aW5nPXRydWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA3OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hbF9yZWdpc3Rlcl9jb21tYWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM9Mjk5OD1zdGF0aWMgaW50IGVtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTMwODItXHRkZXYtXHUwMDNlY29tbWFjLnJ4X2NoYW5fbWFzayA9IE1BTF9DSEFOX01BU0soZGV2LVx1MDAzZW1hbF9yeF9jaGFuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzozMDgzOlx0ZXJyID0gbWFsX3JlZ2lzdGVyX2NvbW1hYyhkZXYtXHUwMDNlbWFsLCBcdTAwMjZkZXYtXHUwMDNlY29tbWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0zMDg0LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jPTMyPXN0YXRpYyBpbnQgbWFsX2NvdW50O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMtMzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYzozNDppbnQgbWFsX3JlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsIHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYy0zNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmg9MjU3PXZvaWQgbWFsX2V4aXQodm9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuaC0yNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuaDoyNTk6aW50IG1hbF9yZWdpc3Rlcl9jb21tYWMoc3RydWN0IG1hbF9pbnN0YW5jZSAqbWFsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmgtMjYwLVx0XHRcdHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDk2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC4KCioqTXkgQW5hbHlzaXMgb2YgdGhlIGBjb21tYWNgIERyaXZlciBSZWdpc3RyYXRpb24qKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBhbmQgc3BlY2lmaWNhbGx5IGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBgY29tbWFjYCBoYXJkd2FyZSwgYW5kIEkgc2VlIGEgdmVyeSBjbGVhciByZWdpc3RyYXRpb24gYW5kIHVucmVnaXN0cmF0aW9uIHBhdHRlcm4uIGBtYWxfcmVnaXN0ZXJfY29tbWFjYCBpcyBjYWxsZWQgd2l0aGluIHRoZSBgZW1hY19wcm9iZWAgZnVuY3Rpb24uIFRoYXQmIzM5O3MgZXhhY3RseSBhcyB5b3UmIzM5O2QgZXhwZWN0IGluIGEgcHJvcGVyIGRyaXZlci4gYHByb2JlYCBpcyB3aGVyZSB5b3UmIzM5O3JlIGlkZW50aWZ5aW5nIGFuZCBzZXR0aW5nIHVwIHRoZSBoYXJkd2FyZS4gU28sIGByZWdpc3Rlcl9jb21tYWNgIGlzIHBhcnQgb2YgdGhhdCBpbml0aWFsaXphdGlvbiBwcm9jZXNzLCBsaWtlbHkgaW52b2x2aW5nIGNvbmZpZ3VyaW5nIHRoZSByZWxldmFudCBoYXJkd2FyZSByZXNvdXJjZXMsIGVzdGFibGlzaGluZyBjb21tdW5pY2F0aW9uIGNoYW5uZWxzLCBhbmQgZ2V0dGluZyBldmVyeXRoaW5nIHJlYWR5IGZvciBvcGVyYXRpb24uCgpBbmQgaXQmIzM5O3MgZXF1YWxseSBwcmVkaWN0YWJsZSB0byBzZWUgYG1hbF91bnJlZ2lzdGVyX2NvbW1hY2AgY2FsbGVkIHdpdGhpbiBgZW1hY19yZW1vdmVgLiBgcmVtb3ZlYCBpcyB0aGUgY2xlYW51cCBmdW5jdGlvbiB3aGVuIHRoZSBkcml2ZXIgaXMgYmVpbmcgdW5sb2FkZWQgb3Igd2hlbiB0aGUgZGV2aWNlIGlzIGJlaW5nIGRldGFjaGVkLiBUaGlzIG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IHlvdSAqdW5yZWdpc3RlciogdGhlIGBjb21tYWNgIHdoZW4geW91JiMzOTtyZSBkb25lIHdpdGggaXQgdG8gcmVsZWFzZSB0aGUgcmVzb3VyY2VzLCBkZS1hbGxvY2F0ZSBtZW1vcnksIGFuZCBwcm9wZXJseSBzaHV0IGRvd24gdGhlIGhhcmR3YXJlIGludGVyZmFjZS4gVGhpcyBpcyBjcnVjaWFsIGZvciBhdm9pZGluZyByZXNvdXJjZSBsZWFrcyBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cyBkb3duIHRoZSBsaW5lLiBJdCYjMzk7cyB0aGUgc3RhbmRhcmQsIGNsZWFuIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGFwcHJvYWNoLiBJJiMzOTttIHBsZWFzZWQgdG8gc2VlIGl0JiMzOTtzIGltcGxlbWVudGVkIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDc6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFsX3VucmVnaXN0ZXJfY29tbWFjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jPTI5OTg9c3RhdGljIGludCBlbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0zMTk3LSBlcnJfdW5yZWdfY29tbWFjOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjMxOTg6XHRtYWxfdW5yZWdpc3Rlcl9jb21tYWMoZGV2LVx1MDAzZW1hbCwgXHUwMDI2ZGV2LVx1MDAzZWNvbW1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMzE5OS0gZXJyX3JlbF9kZXBzOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0zMjA3PXN0YXRpYyB2b2lkIGVtYWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0zMjMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjMyMzI6XHRtYWxfdW5yZWdpc3Rlcl9jb21tYWMoZGV2LVx1MDAzZW1hbCwgXHUwMDI2ZGV2LVx1MDAzZWNvbW1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMzIzMy1cdGVtYWNfcHV0X2RlcHMoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYz0zND1pbnQgbWFsX3JlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsIHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMtNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYzo2Njp2b2lkIG1hbF91bnJlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlXHQqbWFsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMtNjctXHRcdHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmg9MjU5PWludCBtYWxfcmVnaXN0ZXJfY29tbWFjKHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oLTI2MC1cdFx0XHRzdHJ1Y3QgbWFsX2NvbW1hYyAqY29tbWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oOjI2MTp2b2lkIG1hbF91bnJlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuaC0yNjItXHRcdFx0ICAgc3RydWN0IG1hbF9jb21tYWMgKmNvbW1hYyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA3OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzODcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA5NTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEFuYWx5c2lzOiBJQk0gRU1BQyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHByb21wdCBpcyBhc2tpbmcgbWUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggd2FycmFudHMgZnV6emluZy4gVGhlIGtleSBoZXJlIGlzIHRoZSBleGNsdXNpb24gY3JpdGVyaWE6IHBhdGNoZXMgdGhhdCAqb25seSogdG91Y2ggZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAobGlrZSBgLnJlbW92ZWAsIGAuc2h1dGRvd25gLCBldGMuKSB0aGF0IGFyZSBleGVjdXRlZCBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgdW5iaW5kIG9wZXJhdGlvbnMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLCBiYXNlZCBvbiB0aGUgcHJvbXB0LgoKTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgY2VudGVyZWQgYXJvdW5kIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgLCB3aGljaCBpcyBjYWxsZWQgd2l0aGluIGBlbWFjX3JlbW92ZWAgYW5kIHRoZSBlcnJvciBwYXRoIG9mIGBlbWFjX3Byb2JlYCwgYW5kIGBtYWxfcmVnaXN0ZXJfY29tbWFjYCBjYWxsZWQgd2l0aGluIGBlbWFjX3Byb2JlYC4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYGVtYWNfcHJvYmVgIGlzIGEgaG90IHBhdGggb3IgdGVhcmRvd24gZnVuY3Rpb24gdGhhdCBpcyBvbmx5IGV4ZWN1dGVkIGluIHZlcnkgc3BlY2lmaWMgc2NlbmFyaW9zLgoKYGVtYWNfcHJvYmVgIGl0c2VsZiBpcyBhIHByb2JlIGZ1bmN0aW9uLCBwYXJ0IG9mIGRldmljZSBpbml0aWFsaXphdGlvbi4gQ2FuIGl0IGJlIHRyaWdnZXJlZCBmcm9tIHVzZXJzcGFjZT8gR2VuZXJhbGx5LCBwbGF0Zm9ybSBkZXZpY2VzIGFyZSBwcm9iZWQgYXQgYm9vdCB0aW1lLiBDYW4gSSBjcmVhdGUgYSBwbGF0Zm9ybSBkZXZpY2Ugb3IgdXNlIGRldmljZSB0cmVlIG92ZXJsYXlzIHRvIHRyaWdnZXIgYGVtYWNfcHJvYmVgIGR5bmFtaWNhbGx5PyBQcm9iYWJseSBub3QuIFRoZSBjaGFuZ2VzIGFyZSBzcGVjaWZpY2FsbHkgd2l0aGluIGBtYWxfcmVnaXN0ZXJfY29tbWFjYCBhbmQgYG1hbF91bnJlZ2lzdGVyX2NvbW1hY2AuCgpUaGVuIEkgcmVtZW1iZXIgdGhlIHByb21wdCwgJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiAuLi4gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLiYjMzQ7IElzIGBlbWFjX3Byb2JlYCBjb25zaWRlcmVkIGEgdGVhcmRvd24gY2FsbGJhY2s/IE5vLCBpdCYjMzk7cyBhbiBpbml0aWFsaXphdGlvbiBjYWxsYmFjay4KClRoZW4gSSBnZXQgYSBsaXR0bGUgZXhjaXRlZCBiZWNhdXNlIEkgY2FuIGFjdHVhbGx5IHJlYWNoIGBlbWFjX3Byb2JlYCBpbiBRRU1VIGJlY2F1c2Ugb2YgdGhlIFBvd2VyUEMgNHh4IG1hY2hpbmUuIFNvIGl0IGlzIHJlYWNoYWJsZSBpbiBRRU1VLgoKQnV0IHdhaXQsIEkgbmVlZCB0byBjb25zaWRlciBpZiBTeXprYWxsZXIgd2lsbCBhY3R1YWxseSBiZSBhYmxlIHRvIGhpdCB0aGlzLiBTeXprYWxsZXIgY2FuIGZ1enogcGxhdGZvcm0gZGV2aWNlIHByb2JpbmcgaWYgaXQgY2FuIGluamVjdCBkZXZpY2UgdHJlZSBub2RlcyBvciBpdCBpcyBhIHZpcnR1YWwgZGV2aWNlLiBGb3IgdGhpcyBzcGVjaWZpYyBTb0MgZXRoZXJuZXQgY29udHJvbGxlciwgaXQgaXMgdGllZCB0byB0aGUgU29DLgoKQW5kIHRoZW4gSSByZWFsaXplIHRoZSBwYXRjaCBpcyBqdXN0IGFib3V0IGFkZGluZyBsb2NrcyBhcm91bmQgYG5hcGlfZW5hYmxlYCBhbmQgYG5hcGlfZGlzYWJsZWAgZHVyaW5nIHByb2JlL3JlbW92ZS4gVGhpcyBpcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBmaXggb3IgYSBmaXggZm9yIGEgbG9ja2RlcCB3YXJuaW5nIHJlbGF0ZWQgdG8gZW5hYmxpbmcvZGlzYWJsaW5nIE5BUEkgd2l0aG91dCBob2xkaW5nIHRoZSBuZXRkZXYgbG9jay4gVGhlIHVuZGVybHlpbmcgY29kZSB3YXMgcmVjZW50bHkgY2hhbmdlZCwgcmVxdWlyaW5nIHRoZSBuZXRkZXYgbG9jayBpbiBzb21lIGNhc2VzLgoKSSYjMzk7bSBzdGFydGluZyB0byB0aGluayBhYm91dCB3aGV0aGVyIHRoZSBJQk0gRU1BQyBpcyBlbXVsYXRlZCBpbiBRRU1VLiBJdCYjMzk7cyB0aW1lIHRvIGNoZWNrIHRoZSBRRU1VIHNvdXJjZSBjb2RlLiBCdXQgSSBhbSBhbG1vc3Qgc3VyZSB0aGF0IHRoZSBQb3dlclBDIDQ0MEVQIChCYW1ib28pIGFuZCA0NjBFWCAoU2FtNDYwZXgpIGFyZSBlbXVsYXRlZCBpbiBRRU1VLCBib3RoIGhhdmUgdGhlIElCTSBFTUFDLiBTbyBpdCAqaXMqIHJlYWNoYWJsZS4KCkxldCYjMzk7cyBzdW1tYXJpemUuIFRoZSBtb2RpZmljYXRpb25zIGFyZSBpbiBgbWFsX3JlZ2lzdGVyX2NvbW1hY2AgYW5kIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgLCB3aXRoaW4gYGVtYWNfcHJvYmVgIGFuZCBgZW1hY19yZW1vdmVgLiBJZiB0aGUgbWFpbiB0cmlnZ2VyaW5nIGlzIGR1cmluZyBib290IChwcm9iZSkgb3IgbW9kdWxlIHVubG9hZCAocmVtb3ZlKSwgaXMgaXQgd29ydGggZnV6emluZz8gVXN1YWxseSwgcHJvYmUgZnVuY3Rpb25zIGFyZSBleGVjdXRlZCBvbmNlIGF0IGJvb3QuIEZ1enppbmcgdGhlbSByZXF1aXJlcyBtb2R1bGUgcmVsb2FkIG9yIHN5c2ZzIHVuYmluZC9iaW5kLiBUaGUgcHJvbXB0IGRvZXNuJiMzOTt0IGV4cGxpY2l0bHkgZXhjbHVkZSBgLnByb2JlYCwgYnV0IGl0IGRvZXMgc3Ryb25nbHkgaW1wbHkgaXQuCgpUaGUgY2hhbmdlcyBhcHBlYXIgdG8gcHJpbWFyaWx5IGFkZHJlc3MgaW5pdGlhbGl6YXRpb24gYW5kIHRlYXJkb3duIG9mIHRoZSBlbWFjIGRyaXZlciwgd2l0aCBhIGxvY2sgYWRkaXRpb24gbGlrZWx5IHJlbGF0ZWQgdG8gTkFQSSBoYW5kbGluZy4gR2l2ZW4gdGhhdCwgYW5kIHRoZSBwb3RlbnRpYWwgZGlmZmljdWx0eSBvZiB0cmlnZ2VyaW5nIHRoZXNlIGNvZGUgcGF0aHMgZHluYW1pY2FsbHkgZHVyaW5nIGZ1enppbmcgKnJlbGF0aXZlIHRvIHRoZSBwcm9tcHQmIzM5O3MgZXhjbHVzaW9uIGNyaXRlcmlhKiwgdGhpcyBtaWdodCBub3QgYmUgdGhlIGhpZ2hlc3QgcHJpb3JpdHkgZm9yIGZ1enppbmcsIGdpdmVuIHRoZSByZXNvdXJjZXMgdGhhdCBhcmUgdXN1YWxseSBhbGxvY2F0ZWQgdG8gc3VjaCB0YXNrcy4gSG93ZXZlciwgaXQgKmlzKiByZWFjaGFibGUgaW4gUUVNVSwgc28gbWF5YmUgaXQmIzM5O3Mgc3RpbGwgd29ydGggdGhlIGVmZm9ydC4gVWx0aW1hdGVseSwgdGhpcyByZXF1aXJlcyBhIGRlZXBlciBkaXZlIGludG8gdGhlIHNwZWNpZmljIFN5emthbGxlciBjb25maWd1cmF0aW9uIGFuZCBjYXBhYmlsaXRpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA3OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VtYWNfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM9Mjk4NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVtYWNfZ2lnZV9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yOTk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjI5OTg6c3RhdGljIGludCBlbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI5OTkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0zMjU1PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGVtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0zMjU5LVx0fSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzozMjYwOlx0LnByb2JlID0gZW1hY19wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0zMjYxLVx0LnJlbW92ZSA9IGVtYWNfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQ1OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIFdvcnRoaW5lc3MgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyeWluZyB0byBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gRmlyc3QsIGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyIHByb2JlLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBhY2Nlc3MgY29udHJvbC4gQ2FuIGFuIHVucHJpdmlsZWdlZCB1c2VyIHRyaWdnZXIgdGhpcz8gTm9wZSwgdGhhdCYjMzk7cyBub3QgcG9zc2libGUuIEEgcHJpdmlsZWdlZCB1c2VyLCB0aG91Z2g/IFllcywgdGhyb3VnaCB0aGUgc3lzZnMgYmluZC91bmJpbmQgbWVjaGFuaXNtLgoKVGhlIHByb21wdCwgaG93ZXZlciwgdGhyb3dzIGEgd3JlbmNoIGluIHRoZSB3b3Jrcy4gSXQgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIG9ubHkgdG91Y2hlcyBgLnJlbW92ZWAsIGAuc2h1dGRvd25gLCBvciBgcGNpX3VucmVnaXN0ZXJfZHJpdmVyYCB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBhcmUgZXhlY3V0ZWQgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIHVuYmluZCBvcGVyYXRpb25zLiBIbW1tLCB0aGUgcGF0Y2ggbW9kaWZpZXMgYG1hbF9yZWdpc3Rlcl9jb21tYWNgIChjYWxsZWQgZnJvbSBwcm9iZSkgYW5kIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgIChjYWxsZWQgZnJvbSByZW1vdmUpLiBUaGVzZSAqc2hvdWxkKiBvbmx5IGJlIGV4ZWN1dGVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIHRlYXJkb3duIOKAkyB3aGljaCwgZm9yIHBsYXRmb3JtIGRldmljZXMsIG1vc3RseSBtZWFucyBib290IGFuZCBzeXNmcyBiaW5kL3VuYmluZCwgcmlnaHQ/CgpFdmVuIHRob3VnaCB0aGUgcHJvbXB0ICpkb2VzbiYjMzk7dCogZXhwbGljaXRseSBtZW50aW9uICYjMzQ7cHJvYmUmIzM0OyBpbiB0aGUgZXhjbHVzaW9uIGxpc3QsIEkgY2FuIHNlZSBob3cgaXQgbWlnaHQgZmFsbCB1bmRlciB0aGUgc3Bpcml0IG9mIHRoZSBleGNsdXNpb24uIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgZHVyaW5nIHRoZSBpbml0aWFsIHNldHVwIG9yIHRlYXJkb3duLCBzbyBmdXp6aW5nIHdvdWxkIGJlIGxpbWl0ZWQgdG8gYm9vdCBhbmQgdW5iaW5kIHNjZW5hcmlvcy4KCkhvbGQgb24uLi4gSSYjMzk7dmUgZ290IHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIExldCBtZSBzZWUsIGBtYWxfcmVnaXN0ZXJfY29tbWFjYCBpcyBjYWxsZWQgZnJvbSBgZW1hY19wcm9iZWAuIFRoYXQmIzM5O3MgdGhlIG9ubHkgY2FsbGVyIGxpc3RlZC4gSXMgdGhlcmUgYW55IG90aGVyIGNhbGxlcj8gSXQmIzM5O3MgaW1wb3J0YW50IHRvIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwNzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYWxfcmVnaXN0ZXJfY29tbWFjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jPTI5OTg9c3RhdGljIGludCBlbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0zMDgyLVx0ZGV2LVx1MDAzZWNvbW1hYy5yeF9jaGFuX21hc2sgPSBNQUxfQ0hBTl9NQVNLKGRldi1cdTAwM2VtYWxfcnhfY2hhbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MzA4MzpcdGVyciA9IG1hbF9yZWdpc3Rlcl9jb21tYWMoZGV2LVx1MDAzZW1hbCwgXHUwMDI2ZGV2LVx1MDAzZWNvbW1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMzA4NC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYz0zMj1zdGF0aWMgaW50IG1hbF9jb3VudDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jLTMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmM6MzQ6aW50IG1hbF9yZWdpc3Rlcl9jb21tYWMoc3RydWN0IG1hbF9pbnN0YW5jZSAqbWFsLCBzdHJ1Y3QgbWFsX2NvbW1hYyAqY29tbWFjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMtMzUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oPTI1Nz12b2lkIG1hbF9leGl0KHZvaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmgtMjU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmg6MjU5OmludCBtYWxfcmVnaXN0ZXJfY29tbWFjKHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oLTI2MC1cdFx0XHRzdHJ1Y3QgbWFsX2NvbW1hYyAqY29tbWFjKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDc6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0NDgKCQkJCQkJCW91dHB1dDogNzkKCQkJCQkJCXRob3VnaHRzOiA4NzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nPWZhbHNlOiBSZWFzb25pbmcgZm9yIEV4Y2x1ZGluZyBhIFNwZWNpZmljIEVtYmVkZGVkIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBJIHNlZSB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBzaW5jZSBJIHNlZSBvbmx5IGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93biBmdW5jdGlvbnMgZm9yIGEgcGxhdGZvcm0gZGV2aWNlLCBgbWFsX3JlZ2lzdGVyX2NvbW1hY2AgYW5kIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgLCBhbmQgdGhlIHByb21wdCBleGNsdWRlcyB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgc3lzZnMgdW5iaW5kLCB0aGVuIGl0JiMzOTtzIHByb2JhYmx5IG5vdCB3b3J0aCBmdXp6aW5nLiBCdXQgbGV0IG1lIG1ha2Ugc3VyZS4KCkhtbSwgbGV0IG1lIGNvbnNpZGVyLiBBcmUgdGhlcmUgYW55IG90aGVyIHBvdGVudGlhbCBwYXRocyB0byB0cmlnZ2VyIGBlbWFjX3Byb2JlYD8gUGxhdGZvcm0gZGV2aWNlcyBhcmUgdHlwaWNhbGx5IHN0YXRpY2FsbHkgZGVmaW5lZCBpbiB0aGUgZGV2aWNlIHRyZWUsIHNvIGl0IHVzdWFsbHkgcnVucyBvbmNlIGR1cmluZyBib290LiBGdXp6aW5nIHRoYXQgd291bGQgaW52b2x2ZSByZWJvb3RpbmcgdGhlIFZNIG9yIHVzaW5nIHN5c2ZzIGJpbmQvdW5iaW5kLCB3aGljaCB0aGUgcHJvbXB0IG1lbnRpb25zIGZvciBleGNsdXNpb24uCgpUaGUgcHJvbXB0IGRvZXNuJiMzOTt0ICpleHBsaWNpdGx5KiBleGNsdWRlIGAucHJvYmVgIGNhbGxiYWNrcywgb25seSB0ZWFyZG93biBsaWtlIGAucmVtb3ZlYCBhbmQgYC5zaHV0ZG93bmAuIE9rYXksIHNvIGlmIHRoZSBwYXRjaCAqb25seSogbW9kaWZpZXMgYC5wcm9iZWAgYW5kIGAucmVtb3ZlYCBpbiBhIHBsYXRmb3JtIGRyaXZlciwgc2hvdWxkIEkgZXhjbHVkZSBpdD8gVGhpcyBzcGVjaWZpYyBvbmUgaXMgZm9yIGFuIElCTSBFTUFDIG9uIFBvd2VyUEMgNHh4LCB3aGljaCBpcyBwcmV0dHkgbmljaGUgYW5kIG5vdCBnZW5lcmFsbHkgZnV6emVkIGJ5IHN5emthbGxlci4KCkhvbGQgb24sIEkgYWxzbyBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBlbHNlISBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIHRvIGV4Y2x1ZGUgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gQnV0IHdhaXQsIFFFTVUgKmRvZXMqIGVtdWxhdGUgUG93ZXJQQyA0eHgsIHNwZWNpZmljYWxseSBCYW1ib28gYW5kIFNhbTQ2MGV4LiBTbywgaXQmIzM5O3MgKnRlY2huaWNhbGx5KiByZWFjaGFibGUuIEhvd2V2ZXIsIGlzIGl0ICp3b3J0aCogZnV6emluZz8KCkxldCYjMzk7cyBzZWUsIHdoYXQgaXMgdGhlIHBhdGNoIGFjdHVhbGx5IGRvaW5nPyBPaCwgaXQmIzM5O3MgYXV0aG9yZWQgYnkgdGhlIHN5ei1jbHVzdGVyLCBzbyBpdCYjMzk7cyBhIHRlc3QgY2FzZSwgbm90IGEgcmVhbCB1c2VyLiBMZXQgbWUgZXhhbWluZSB0aGUgY29kZToKCmBgYGMKIAlpZiAobGlzdF9lbXB0eSgmYW1wO21hbC0mZ3Q7bGlzdCkpCi0JCW5hcGlfZW5hYmxlKCZhbXA7bWFsLSZndDtuYXBpKTsKJiM0MzsJCW5hcGlfZW5hYmxlX2xvY2tlZCgmYW1wO21hbC0mZ3Q7bmFwaSk7CmBgYAoKQWgsIGl0IHNlZW1zIHRvIGJlIGZpeGluZyBhIHJlY2VudCBBUEkgY2hhbmdlIHdoZXJlIGBuYXBpX2VuYWJsZWAgcmVxdWlyZXMgdGhlIG5ldGRldiBsb2NrLCBvciBhIGxvY2tkZXAgd2FybmluZy4gVGhpcyBjb2RlIG9ubHkgYWZmZWN0cyBgbWFsX3JlZ2lzdGVyX2NvbW1hY2AgYW5kIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgLCBzbyBlc3NlbnRpYWxseSBpdCYjMzk7cyBhIGxvY2sgZml4aW5nIGEgcHJvYmxlbSBmb3VuZCBvbmx5IG9uIGBwcm9iZWAgYW5kIGByZW1vdmVgLiBJdCYjMzk7cyBzdGlsbCBmb3IgYW4gZW1iZWRkZWQgUG93ZXJQQyBldGhlcm5ldCBjb250cm9sbGVyLiBJIHNob3VsZCBwcm9iYWJseSBleGNsdWRlIGl0LCBidXQgbGV0IG1lIGRvIGEgZG91YmxlIGNoZWNrLgoKTGV0IG1lIGdvIGJhY2sgYW5kIHZlcmlmeTogaXMgYG1hbF9yZWdpc3Rlcl9jb21tYWNgIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2U/IEkgYWxyZWFkeSBncmVwcGVkIGZvciBpdCwgbm9wZS4gSG93IGFib3V0IGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgPyBBbHNvIG5vLiBJcyB0aGVyZSBhbnkgZHluYW1pYyB3YXkgdG8gdHJpZ2dlciBgZW1hY19wcm9iZWAgb3RoZXIgdGhhbiB0aHJvdWdoIHN5c2ZzIGJpbmQvdW5iaW5kIG9yIGRldmljZSB0cmVlIG92ZXJsYXlzPyBOby4KClRoZSBwcm9tcHQgc3BlY2lmaWVzIHRoYXQgYC5yZW1vdmVgIGlzIGV4Y2x1ZGVkLiBTaW5jZSB0aGUgcGF0Y2ggbW9kaWZpZXMgYm90aCByZWdpc3RlciAocHJvYmUpIGFuZCB1bnJlZ2lzdGVyIChyZW1vdmUpLCBhbmQgdGhlIHJlbW92ZSBwYXRoIGlzIGV4Y2x1ZGVkLCBhbmQgdGhlIHByb2JlIHBhdGggaXMganVzdCB0aGUgY291bnRlcnBhcnQgZXhlY3V0ZWQgb25jZSBhdCBib290IG9yIHN5c2ZzIGJpbmQsIGl0IHNlZW1zIHJlYXNvbmFibGUgdG8gZXhjbHVkZSB0aGlzIGFzIHdlbGwuIEl0JiMzOTtzIGFsc28gYW4gZW1iZWRkZWQgUG93ZXJQQyBkcml2ZXIuCgpUaGVyZWZvcmUsIEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDc6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGRyaXZlciBpbml0aWFsaXphdGlvbiAocHJvYmUpIGFuZCB0ZWFyZG93biAocmVtb3ZlKSBjYWxsYmFja3MgZm9yIHRoZSBJQk0gRU1BQyBwbGF0Zm9ybSBkcml2ZXIsIHdoaWNoIGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBib290IG9yIHN5c2ZzIGJpbmQvdW5iaW5kIG9wZXJhdGlvbnMuIFRoZXNlIHBhdGhzIGFyZSBub3Qgc3VpdGFibGUgZm9yIGNvbnRpbnVvdXMgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgZHJpdmVyIGluaXRpYWxpemF0aW9uIChwcm9iZSkgYW5kIHRlYXJkb3duIChyZW1vdmUpIGNhbGxiYWNrcyBmb3IgdGhlIElCTSBFTUFDIHBsYXRmb3JtIGRyaXZlciwgd2hpY2ggYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGJvb3Qgb3Igc3lzZnMgYmluZC91bmJpbmQgb3BlcmF0aW9ucy4gVGhlc2UgcGF0aHMgYXJlIG5vdCBzdWl0YWJsZSBmb3IgY29udGludW91cyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDc6NDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA3OjQxOjI2LjM3MDU3MTY2NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNzM4MDIyMzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gKHByb2JlKSBhbmQgdGVhcmRvd24gKHJlbW92ZSkgY2FsbGJhY2tzIGZvciB0aGUgSUJNIEVNQUMgcGxhdGZvcm0gZHJpdmVyLCB3aGljaCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgYm9vdCBvciBzeXNmcyBiaW5kL3VuYmluZCBvcGVyYXRpb25zLiBUaGVzZSBwYXRocyBhcmUgbm90IHN1aXRhYmxlIGZvciBjb250aW51b3VzIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzo0MToyNi4zNzA1NzcxMzRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NjU5NjI3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDZlMGI1MGVhN2I0YmIwYjdkZmMzYmYyN2NhZjJlNmNjZWJiNGZjZDVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMDc6NDE6MjUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuY1xcbmluZGV4IDc0NTI2MDAyZDUyYmQuLjQyMDI3NjY1ZjJhOTMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuY1xcbkBAIC0zNSw2ICszNSw3IEBAIGludCBtYWxfcmVnaXN0ZXJfY29tbWFjKHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCwgc3RydWN0IG1hbF9jb21tYWMgKmNvbW1hYylcXG4ge1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiBcXG4rXFx0bmV0ZGV2X2xvY2sobWFsLVxcdTAwM2VuYXBpLmRldik7XFxuIFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZtYWwtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gXFxuIFxcdE1BTF9EQkcobWFsLCBcXFwicmVnKCUwOHgsICUwOHgpXFxcIiBOTCxcXG5AQCAtNDQsMTggKzQ1LDIwIEBAIGludCBtYWxfcmVnaXN0ZXJfY29tbWFjKHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCwgc3RydWN0IG1hbF9jb21tYWMgKmNvbW1hYylcXG4gXFx0aWYgKChtYWwtXFx1MDAzZXR4X2NoYW5fbWFzayBcXHUwMDI2IGNvbW1hYy1cXHUwMDNldHhfY2hhbl9tYXNrKSB8fFxcbiBcXHQgICAgKG1hbC1cXHUwMDNlcnhfY2hhbl9tYXNrIFxcdTAwMjYgY29tbWFjLVxcdTAwM2VyeF9jaGFuX21hc2spKSB7XFxuIFxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNm1hbC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRcXHRuZXRkZXZfdW5sb2NrKG1hbC1cXHUwMDNlbmFwaS5kZXYpO1xcbiBcXHRcXHRwcmludGsoS0VSTl9XQVJOSU5HIFxcXCJtYWwlZDogQ09NTUFDIGNoYW5uZWxzIGNvbmZsaWN0IVxcXFxuXFxcIixcXG4gXFx0XFx0ICAgICAgIG1hbC1cXHUwMDNlaW5kZXgpO1xcbiBcXHRcXHRyZXR1cm4gLUVCVVNZO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAobGlzdF9lbXB0eShcXHUwMDI2bWFsLVxcdTAwM2VsaXN0KSlcXG4tXFx0XFx0bmFwaV9lbmFibGUoXFx1MDAyNm1hbC1cXHUwMDNlbmFwaSk7XFxuK1xcdFxcdG5hcGlfZW5hYmxlX2xvY2tlZChcXHUwMDI2bWFsLVxcdTAwM2VuYXBpKTtcXG4gXFx0bWFsLVxcdTAwM2V0eF9jaGFuX21hc2sgfD0gY29tbWFjLVxcdTAwM2V0eF9jaGFuX21hc2s7XFxuIFxcdG1hbC1cXHUwMDNlcnhfY2hhbl9tYXNrIHw9IGNvbW1hYy1cXHUwMDNlcnhfY2hhbl9tYXNrO1xcbiBcXHRsaXN0X2FkZChcXHUwMDI2Y29tbWFjLVxcdTAwM2VsaXN0LCBcXHUwMDI2bWFsLVxcdTAwM2VsaXN0KTtcXG4gXFxuIFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNm1hbC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRuZXRkZXZfdW5sb2NrKG1hbC1cXHUwMDNlbmFwaS5kZXYpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5AQCAtNjQsNyArNjcsOSBAQCB2b2lkIG1hbF91bnJlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlXFx0Km1hbCxcXG4gXFx0XFx0c3RydWN0IG1hbF9jb21tYWMgKmNvbW1hYylcXG4ge1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbitcXHRib29sIGRpc2FibGVfbmFwaTtcXG4gXFxuK1xcdG5ldGRldl9sb2NrKG1hbC1cXHUwMDNlbmFwaS5kZXYpO1xcbiBcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2bWFsLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuIFxcbiBcXHRNQUxfREJHKG1hbCwgXFxcInVucmVnKCUwOHgsICUwOHgpXFxcIiBOTCxcXG5AQCAtNzMsMTAgKzc4LDEyIEBAIHZvaWQgbWFsX3VucmVnaXN0ZXJfY29tbWFjKHN0cnVjdCBtYWxfaW5zdGFuY2VcXHQqbWFsLFxcbiBcXHRtYWwtXFx1MDAzZXR4X2NoYW5fbWFzayBcXHUwMDI2PSB+Y29tbWFjLVxcdTAwM2V0eF9jaGFuX21hc2s7XFxuIFxcdG1hbC1cXHUwMDNlcnhfY2hhbl9tYXNrIFxcdTAwMjY9IH5jb21tYWMtXFx1MDAzZXJ4X2NoYW5fbWFzaztcXG4gXFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2Y29tbWFjLVxcdTAwM2VsaXN0KTtcXG4tXFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNm1hbC1cXHUwMDNlbGlzdCkpXFxuLVxcdFxcdG5hcGlfZGlzYWJsZShcXHUwMDI2bWFsLVxcdTAwM2VuYXBpKTtcXG4rXFx0ZGlzYWJsZV9uYXBpID0gbGlzdF9lbXB0eShcXHUwMDI2bWFsLVxcdTAwM2VsaXN0KTtcXG4gXFxuIFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNm1hbC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRpZiAoZGlzYWJsZV9uYXBpKVxcbitcXHRcXHRuYXBpX2Rpc2FibGVfbG9ja2VkKFxcdTAwMjZtYWwtXFx1MDAzZW5hcGkpO1xcbitcXHRuZXRkZXZfdW5sb2NrKG1hbC1cXHUwMDNlbmFwaS5kZXYpO1xcbiB9XFxuIFxcbiBpbnQgbWFsX3NldF9yY2JzKHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCwgaW50IGNoYW5uZWwsIHVuc2lnbmVkIGxvbmcgc2l6ZSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDc6NDE6MjYuODE3ODQ2NzgxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjAyOTA3MzQwMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgZHJpdmVyIGluaXRpYWxpemF0aW9uIChwcm9iZSkgYW5kIHRlYXJkb3duIChyZW1vdmUpIGNhbGxiYWNrcyBmb3IgdGhlIElCTSBFTUFDIHBsYXRmb3JtIGRyaXZlciwgd2hpY2ggYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIGJvb3Qgb3Igc3lzZnMgYmluZC91bmJpbmQgb3BlcmF0aW9ucy4gVGhlc2UgcGF0aHMgYXJlIG5vdCBzdWl0YWJsZSBmb3IgY29udGludW91cyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNmUwYjUwZWE3YjRiYjBiN2RmYzNiZjI3Y2FmMmU2Y2NlYmI0ZmNkNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDA3OjQxOjI1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuY1xuaW5kZXggNzQ1MjYwMDJkNTJiZC4uNDIwMjc2NjVmMmE5MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuY1xuQEAgLTM1LDYgKzM1LDcgQEAgaW50IG1hbF9yZWdpc3Rlcl9jb21tYWMoc3RydWN0IG1hbF9pbnN0YW5jZSAqbWFsLCBzdHJ1Y3QgbWFsX2NvbW1hYyAqY29tbWFjKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXG4rXHRuZXRkZXZfbG9jayhtYWwtXHUwMDNlbmFwaS5kZXYpO1xuIFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2bWFsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcbiBcdE1BTF9EQkcobWFsLCBcInJlZyglMDh4LCAlMDh4KVwiIE5MLFxuQEAgLTQ0LDE4ICs0NSwyMCBAQCBpbnQgbWFsX3JlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsIHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpXG4gXHRpZiAoKG1hbC1cdTAwM2V0eF9jaGFuX21hc2sgXHUwMDI2IGNvbW1hYy1cdTAwM2V0eF9jaGFuX21hc2spIHx8XG4gXHQgICAgKG1hbC1cdTAwM2VyeF9jaGFuX21hc2sgXHUwMDI2IGNvbW1hYy1cdTAwM2VyeF9jaGFuX21hc2spKSB7XG4gXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2bWFsLVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdFx0bmV0ZGV2X3VubG9jayhtYWwtXHUwMDNlbmFwaS5kZXYpO1xuIFx0XHRwcmludGsoS0VSTl9XQVJOSU5HIFwibWFsJWQ6IENPTU1BQyBjaGFubmVscyBjb25mbGljdCFcXG5cIixcbiBcdFx0ICAgICAgIG1hbC1cdTAwM2VpbmRleCk7XG4gXHRcdHJldHVybiAtRUJVU1k7XG4gXHR9XG4gXG4gXHRpZiAobGlzdF9lbXB0eShcdTAwMjZtYWwtXHUwMDNlbGlzdCkpXG4tXHRcdG5hcGlfZW5hYmxlKFx1MDAyNm1hbC1cdTAwM2VuYXBpKTtcbitcdFx0bmFwaV9lbmFibGVfbG9ja2VkKFx1MDAyNm1hbC1cdTAwM2VuYXBpKTtcbiBcdG1hbC1cdTAwM2V0eF9jaGFuX21hc2sgfD0gY29tbWFjLVx1MDAzZXR4X2NoYW5fbWFzaztcbiBcdG1hbC1cdTAwM2VyeF9jaGFuX21hc2sgfD0gY29tbWFjLVx1MDAzZXJ4X2NoYW5fbWFzaztcbiBcdGxpc3RfYWRkKFx1MDAyNmNvbW1hYy1cdTAwM2VsaXN0LCBcdTAwMjZtYWwtXHUwMDNlbGlzdCk7XG4gXG4gXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNm1hbC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHRuZXRkZXZfdW5sb2NrKG1hbC1cdTAwM2VuYXBpLmRldik7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtNjQsNyArNjcsOSBAQCB2b2lkIG1hbF91bnJlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlXHQqbWFsLFxuIFx0XHRzdHJ1Y3QgbWFsX2NvbW1hYyAqY29tbWFjKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4rXHRib29sIGRpc2FibGVfbmFwaTtcbiBcbitcdG5ldGRldl9sb2NrKG1hbC1cdTAwM2VuYXBpLmRldik7XG4gXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZtYWwtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFxuIFx0TUFMX0RCRyhtYWwsIFwidW5yZWcoJTA4eCwgJTA4eClcIiBOTCxcbkBAIC03MywxMCArNzgsMTIgQEAgdm9pZCBtYWxfdW5yZWdpc3Rlcl9jb21tYWMoc3RydWN0IG1hbF9pbnN0YW5jZVx0Km1hbCxcbiBcdG1hbC1cdTAwM2V0eF9jaGFuX21hc2sgXHUwMDI2PSB+Y29tbWFjLVx1MDAzZXR4X2NoYW5fbWFzaztcbiBcdG1hbC1cdTAwM2VyeF9jaGFuX21hc2sgXHUwMDI2PSB+Y29tbWFjLVx1MDAzZXJ4X2NoYW5fbWFzaztcbiBcdGxpc3RfZGVsX2luaXQoXHUwMDI2Y29tbWFjLVx1MDAzZWxpc3QpO1xuLVx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2bWFsLVx1MDAzZWxpc3QpKVxuLVx0XHRuYXBpX2Rpc2FibGUoXHUwMDI2bWFsLVx1MDAzZW5hcGkpO1xuK1x0ZGlzYWJsZV9uYXBpID0gbGlzdF9lbXB0eShcdTAwMjZtYWwtXHUwMDNlbGlzdCk7XG4gXG4gXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNm1hbC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHRpZiAoZGlzYWJsZV9uYXBpKVxuK1x0XHRuYXBpX2Rpc2FibGVfbG9ja2VkKFx1MDAyNm1hbC1cdTAwM2VuYXBpKTtcbitcdG5ldGRldl91bmxvY2sobWFsLVx1MDAzZW5hcGkuZGV2KTtcbiB9XG4gXG4gaW50IG1hbF9zZXRfcmNicyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsIGludCBjaGFubmVsLCB1bnNpZ25lZCBsb25nIHNpemUpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzo0MToyNi44MTc4NDgxMzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTYxNzE3MzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmNgLiBNeSBpbml0aWFsIHNjYW4gc2hvd3MgYWRkaXRpb25zIG9mIGBuZXRkZXZfbG9jaygpYCBhbmQgYG5ldGRldl91bmxvY2soKWAgYXJvdW5kIGBtYWwtXHUwMDNlbmFwaS5kZXZgIGNhbGxzIHdpdGhpbiBgbWFsX3JlZ2lzdGVyX2NvbW1hY2AgYW5kIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgYSBwYXR0ZXJuIC0gbG9ja2luZyBpbiByZWdpc3RlciBhbmQgdW5yZWdpc3RlciBmdW5jdGlvbnMuIEl0IGFsc28gbG9va3MgbGlrZSBgbmFwaV9lbmFibGVgIGFuZCBgbmFwaV9kaXNhYmxlYCBhcmUgYmVpbmcgc3dhcHBlZCBmb3IgdGhlaXIgbG9ja2VkIHZhcmlhbnRzLCBgbmFwaV9lbmFibGVfbG9ja2VkYCBhbmQgYG5hcGlfZGlzYWJsZV9sb2NrZWRgLiBDbGVhcmx5LCB0aGlzIGlzIHJlbGF0ZWQgdG8gTkFQSSBhbmQgbGlrZWx5IHNvbWUga2luZCBvZiBjb250ZW50aW9uIGlzc3VlLlxuXG5TaW5jZSBpdCdzIGFuIElCTSBFTUFDIGRyaXZlciwgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBQb3dlclBDIGFyY2hpdGVjdHVyZXMsIGdpdmVuIHRoZWlyIGhpc3RvcmljYWwgdXNlIG9mIElCTSBoYXJkd2FyZS4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgYXJjaGl0ZWN0dXJlIGNvbnRleHQgYW5kIGNsYXJpZnkgd2h5IHRoZXNlIGxvY2tpbmcgY2hhbmdlcyB3ZXJlIG5lY2Vzc2FyeS4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHBsYXRmb3JtIHRoaXMgY29kZSB0YXJnZXRzIHRvIGZ1bGx5IGdyYXNwIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MjksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzo0MTozMC45Nzk1NjgzOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjc0OTc2NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSUJNX0VNQUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoyOmNvbmZpZyBJQk1fRU1BQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSUJNIEVNQUMgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoxMjpjb25maWcgSUJNX0VNQUNfUlhCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0xMy1cXHRpbnQgXFxcIk51bWJlciBvZiByZWNlaXZlIGJ1ZmZlcnNcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoxNDpcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0xNS1cXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjE3OmNvbmZpZyBJQk1fRU1BQ19UWEJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTE4LVxcdGludCBcXFwiTnVtYmVyIG9mIHRyYW5zbWl0IGJ1ZmZlcnNcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzoxOTpcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0yMC1cXHRkZWZhdWx0IFxcXCI2NFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MjI6Y29uZmlnIElCTV9FTUFDX1BPTExfV0VJR0hUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0yMy1cXHRpbnQgXFxcIk1BTCBOQVBJIHBvbGxpbmcgd2VpZ2h0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MjQ6XFx0ZGVwZW5kcyBvbiBJQk1fRU1BQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMjUtXFx0ZGVmYXVsdCBcXFwiMzJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0yNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjI3OmNvbmZpZyBJQk1fRU1BQ19SWF9DT1BZX1RIUkVTSE9MRFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMjgtXFx0aW50IFxcXCJSWCBza2IgY29weSB0aHJlc2hvbGQgKGJ5dGVzKVxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjI5OlxcdGRlcGVuZHMgb24gSUJNX0VNQUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTMwLVxcdGRlZmF1bHQgXFxcIjI1NlxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6MzI6Y29uZmlnIElCTV9FTUFDX0RFQlVHXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0zMy1cXHRib29sIFxcXCJEZWJ1Z2dpbmdcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzozNDpcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy0zNS1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzo0MDpjb25maWcgSUJNX0VNQUNfWk1JSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNDEtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy00My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjQ0OmNvbmZpZyBJQk1fRU1BQ19SR01JSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNDUtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy00Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnOjQ4OmNvbmZpZyBJQk1fRU1BQ19UQUhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTQ5LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzo1Mjpjb25maWcgSUJNX0VNQUNfRU1BQzRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTUzLVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWctNTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZzo1Njpjb25maWcgSUJNX0VNQUNfTk9fRkxPV19DVFJMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy01Ny1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NjA6Y29uZmlnIElCTV9FTUFDX01BTF9DTFJfSUNJTlRTVEFUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy02MS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnLTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL0tjb25maWc6NjQ6Y29uZmlnIElCTV9FTUFDX01BTF9DT01NT05fRVJSXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZy02NS1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA3OjQxOjMxLjE0NzA3MTMyNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNDcxNDMzODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIElCTSBFTUFDIERyaXZlcidzIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgZ3V0cyBvZiB0aGlzIGBJQk1fRU1BQ2AgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuIFRpbWUgdG8gY3JhY2sgb3BlbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvS2NvbmZpZ2AuIEkgYWxyZWFkeSBoYXZlIGEgcHJldHR5IGdvb2QgZmVlbCBmb3IgdGhlIGtlcm5lbCdzIEtjb25maWcgc3RydWN0dXJlLCBzbyBJJ20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgYSBzdHJhaWdodGZvcndhcmQgaHVudC4gSSdtIGxvb2tpbmcgZm9yIHRoZSBcImRlcGVuZHMgb25cIiBsaW5lcywgc3BlY2lmaWNhbGx5IHdoYXQgcHJlcmVxdWlzaXRlcyBuZWVkIHRvIGJlIG1ldCBiZWZvcmUgc29tZW9uZSBjYW4gZXZlbiAqY29uc2lkZXIqIGVuYWJsaW5nIHRoaXMgZHJpdmVyLiBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3JtPyBDZXJ0YWluIGtlcm5lbCBmZWF0dXJlcyBuZWVkaW5nIHRvIGJlIGVuYWJsZWQ/IFRoaXMgaXMgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBob3cgYnJvYWRseSBhcHBsaWNhYmxlLCBvciBuaWNoZSwgdGhpcyBkcml2ZXIgbWlnaHQgYmUuIFVuZGVyc3RhbmRpbmcgdGhlc2UgY29uc3RyYWludHMgaXMgZXNzZW50aWFsIGZvciBteSBsYXJnZXIgYXJjaGl0ZWN0dXJlIGNvbnNpZGVyYXRpb25zIGFuZCBpbXBsZW1lbnRhdGlvbiBzdHJhdGVneSwgSSBuZWVkIHRvIGtub3cgd2hlcmUgdGhpcyBmaXRzLiBMZXQncyBzZWUgd2hhdCB3ZSBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjczLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDc6NDE6MzQuMzk0MjE3MDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgSUJNX0VNQUNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJJQk0gRU1BQyBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBQUENfRENSXFxuICAgNTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gICA2OlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIElCTSBFTUFDIGZhbWlseSBvZiBFdGhlcm5ldCBjb250cm9sbGVyc1xcbiAgIDk6XFx0XFx0ICB0eXBpY2FsbHkgZm91bmQgb24gNHh4IGVtYmVkZGVkIFBvd2VyUEMgY2hpcHMsIGJ1dCBhbHNvIG9uIHRoZVxcbiAgMTA6XFx0XFx0ICBBeG9uIHNvdXRoYnJpZGdlIGZvciBDZWxsLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgSUJNX0VNQUNfUlhCXFxuICAxMzpcXHRcXHRpbnQgXFxcIk51bWJlciBvZiByZWNlaXZlIGJ1ZmZlcnNcXFwiXFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuICAxNTpcXHRcXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBJQk1fRU1BQ19UWEJcXG4gIDE4OlxcdFxcdGludCBcXFwiTnVtYmVyIG9mIHRyYW5zbWl0IGJ1ZmZlcnNcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIElCTV9FTUFDXFxuICAyMDpcXHRcXHRkZWZhdWx0IFxcXCI2NFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDc6NDE6MzQuMzk0MjgwMTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzA2ODM4OTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIFBvd2VyUEMgQ29kZSoqXG5cbk9rYXksIHNvIHRoaXMgY29kZSBpcyBjbGVhcmx5IFBvd2VyUEMtc3BlY2lmaWMgYmVjYXVzZSBvZiB0aGUgYFBQQ19EQ1JgIGRlcGVuZGVuY3kuIE15IGluaXRpYWwgcXVlc3Rpb24gaXMgd2hldGhlciB3ZSBjYW4gZXZlbiBoaXQgdGhpcyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLiBRRU1VICpkb2VzKiBoYXZlIGEgYHBwY2AgdGFyZ2V0LCBzbyB0aGF0J3MgYSBnb29kIHNpZ24uIFRoZSBxdWVzdGlvbiBpcywgZG9lcyBpdCBlbXVsYXRlIHRoZSBJQk0gRU1BQz8gSSByZW1lbWJlciBRRU1VIGVtdWxhdGVzICpzb21lKiBQb3dlclBDIGJvYXJkcy4gU3BlY2lmaWNhbGx5LCB0aGUgXCJiYW1ib29cIiBib2FyZCBpcyBhIFBvd2VyUEMgNDQwRVAsIHdoaWNoICptaWdodCogaW5jbHVkZSBFTUFDLiBJIGFsc28gcmVjYWxsIHRoZSBcInNhbTQ2MGV4XCIgYm9hcmQgaGF2aW5nIEVNQUMuXG5cbkJ1dCBob2xkIG9u4oCmIHRoZSBwcm9tcHQgc3BlY2lmaWVzIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLiBIb3dldmVyLCBRRU1VICpkb2VzKiBlbXVsYXRlIFBvd2VyUEMgNHh4LiBUaGlzIG1ha2VzIG1lIHdvbmRlciBpZiB0aGlzIGlzIHdvcnRoIGludmVzdGlnYXRpbmcgZnVydGhlciBmb3IgZnV6emluZyBwb3RlbnRpYWwuXG5cbk5vdywgdHlwaWNhbGx5LCBzeXprYWxsZXIgZG9lc24ndCBmb2N1cyBvbiBmdXp6aW5nIFBvd2VyUEMgNHh4IGJvYXJkcyBpbiBpdHMgZGVmYXVsdCBzZXR1cC4gSXQgKmNhbiogcnVuIG9uIHBwYzY0bGUgb3IgcHBjLCBidXQgdGhpcyBzcGVjaWZpYyBwaWVjZSBvZiBjb2RlIHNlZW1zIHRvIHRhcmdldCBhbiBlbWJlZGRlZCBQb3dlclBDIGV0aGVybmV0IGNvbnRyb2xsZXIuIEkgc2hvdWxkIGNoZWNrIHRvIHNlZSBpZiBzeXprYWxsZXIgaXMgYWxyZWFkeSBmdXp6aW5nIHRoaXMuIFRoZSBhdXRob3IgaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZWAsIHdoaWNoIHN1Z2dlc3RzIHRoYXQgc3l6a2FsbGVyICpmb3VuZCogYSBidWcgaGVyZT8gTm8sIHRoZSBhdXRob3Igb2YgdGhlIHBhdGNoIGp1c3QgaGFwcGVucyB0byBiZSBgc3l6LWNsdXN0ZXJgLCBhcyB0aGlzIHBhdGNoIGlzIGluIHRoZSB0ZXN0IHdvcmtzcGFjZS5cblxuUmlnaHQsIHN5emthbGxlciAqZG9lc24ndCogZnV6eiBQb3dlclBDIDR4eC4gQnV0LCBjb3VsZCBpdCBiZSBjb21waWxlZCBvbiBvdGhlciBhcmNoaXRlY3R1cmVzPyBIbW0sIGl0IGdvZXMgYmFjayB0byBgUFBDX0RDUmAuIEkgc2hvdWxkIGNoZWNrIHRoZSBgUFBDX0RDUmAgc2V0dGluZyBpbiBgYXJjaC9wb3dlcnBjL0tjb25maWdgIGZvciBtb3JlIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MDksIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzo0MTo0MS4xMDExMjE0NDVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3MzU0MjY5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUFBDX0RDUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wb3dlcnBjL0tjb25maWc9NDExPWNvbmZpZyBBUkNIX0hBU19BRERfUEFHRVNcXG4tLVxcbmFyY2gvcG93ZXJwYy9LY29uZmlnLTQxNC1cXG5hcmNoL3Bvd2VycGMvS2NvbmZpZzo0MTU6Y29uZmlnIFBQQ19EQ1JfTkFUSVZFXFxuYXJjaC9wb3dlcnBjL0tjb25maWctNDE2LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMvS2NvbmZpZy00MTctXFxuYXJjaC9wb3dlcnBjL0tjb25maWc6NDE4OmNvbmZpZyBQUENfRENSXFxuYXJjaC9wb3dlcnBjL0tjb25maWctNDE5LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDc6NDE6NDIuNzc0NjY4OTc2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAwMzM3ODUzODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEV2YWx1YXRpb246IFBvd2VyUEMgRW1iZWRkZWQgRXRoZXJuZXQgQ29udHJvbGxlciBMb2NraW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYFBQQ19EQ1JgIGlzIGEgUG93ZXJQQy1zcGVjaWZpYyBib29sLCB3aGljaCBtZWFucyB0aGlzIGNvZGUgaXMgb25seSBnb2luZyB0byBiZSByZWxldmFudCBvbiBQb3dlclBDIHBsYXRmb3Jtcy4gVGhlIHF1ZXN0aW9uIGlzOiBjYW4gd2UgaGl0IHRoaXMgY29kZSBpbiBzdGFuZGFyZCBRRU1VPyBZZXMsIFFFTVUgaGFzIGBzYW00NjBleGAgYW5kIGBiYW1ib29gLCB3aGljaCBhcmUgUG93ZXJQQyA0eHggYm9hcmRzIGFuZCAqc2hvdWxkKiBhbGxvdyBtZSB0byBnZXQgdGhlcmUuXG5cbkJ1dCwgaG9sZCBvbi4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoL1NtYXJ0TklDL0dQVSBkcml2ZXJzLCB3aGljaCByZWx5IG9uIHBoeXNpY2FsIFBDSWUgY2FyZHMgdGhhdCBhcmVuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhpcyBpcyBhbiBlbWJlZGRlZCBFdGhlcm5ldCBjb250cm9sbGVyIG9uIGEgUG93ZXJQQyBTb0MuIEl0J3Mgbm90IGEgUENJZSBjYXJkLiBPa2F5LCBzbyB0aGF0IHNob3VsZG4ndCBiZSBhIGJsb2NrZXIuXG5cbkRvZXMgUUVNVSBlbXVsYXRlIHRoZSBJQk0gRU1BQz8gSSBkb24ndCBoYXZlIGFjY2VzcyB0byB0aGUgUUVNVSBzb3VyY2UgcmlnaHQgbm93IHRvIHZlcmlmeSwgc28gSSdsbCBsZWFuIHRvd2FyZHMgYXNzdW1pbmcgdGhhdCBpZiBpdCdzIGEgY29yZSBwYXJ0IG9mIHRoZSBTb0MsIGl0J3MgKmxpa2VseSogZW11bGF0ZWQgdG8gc29tZSBkZWdyZWUuXG5cbldhaXQsIGhlcmUncyBhIGNsYXJpZmljYXRpb246IHRoZSBwcm9tcHQgc2F5cyBcImltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsICpldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlKlwiLiBTbywgdGhlIGtleSBpcyB0aGUgYWJpbGl0eSB0byBlbXVsYXRlIHRoZSBoYXJkd2FyZS4gVGhlIHBhdGNoIGFkZHMgbG9ja2luZyBhcm91bmQgYG5hcGlfZW5hYmxlYCBhbmQgYG5hcGlfZGlzYWJsZWAg4oCTIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29uZmlndXJhdGlvbiBvcHRpb24uXG5cbk5vdywgaXMgdGhpcyAqd29ydGgqIGZ1enppbmc/IEFyY2hpdGVjdHVyZS1zcGVjaWZpYyBlbWJlZGRlZCBkcml2ZXJzIGZvciBsZWdhY3kgcGxhdGZvcm1zIGxpa2UgUG93ZXJQQyA0eHggYXJlbid0IHR5cGljYWxseSBhIHRhcmdldCBmb3Igc3l6a2FsbGVyLCB3aGljaCBwcmltYXJpbHkgZm9jdXNlcyBvbiB4ODZfNjQsIGFybTY0LCByaXNjdjY0LCBldGMuIHdpdGggdmlydGlvIG9yIGdlbmVyaWMgUENJIGRldmljZXMgaW4gUUVNVS4gQnV0LCBzeXprYWxsZXIgKmRvZXMqIHN1cHBvcnQgYHBwYzY0bGVgLiBIb3dldmVyLCB0aGlzIGlzIGEgMzItYml0IFBvd2VyUEMsIG5vdCBgcHBjNjRsZWAuIFRoZSBjcnVjaWFsIHBvaW50IGlzIHRoYXQgdGhlIHByb21wdCBzcGVjaWZpZXMgdGhhdCBpdCdzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gUUVNVSAqYW5kKiBHQ0UsIG5vdCBuZWNlc3NhcmlseSBpbiBzeXprYWxsZXIncyBjdXJyZW50IHNldHVwLlxuXG5TaW5jZSBRRU1VICpkb2VzKiBlbXVsYXRlIFBvd2VyUEMgNHh4IGJvYXJkcyBsaWtlIGBiYW1ib29gIGFuZCBgc2FtNDYwZXhgLCBpdCdzICp0ZWNobmljYWxseSogcmVhY2hhYmxlIGluIFFFTVUuIFNvLCB0aGUgcXVlc3Rpb24gcmVtYWluczogaXMgaXQgd29ydGggdGhlIGVmZm9ydD9cblxuTGV0J3MgcmUtZXhhbWluZSB0aGUgcGF0Y2guIEl0IGFkZHMgYG5ldGRldl9sb2NrKG1hbC1cdTAwM2VuYXBpLmRldilgIGFuZCBgbmV0ZGV2X3VubG9jayhtYWwtXHUwMDNlbmFwaS5kZXYpYCBpbiBgbWFsX3JlZ2lzdGVyX2NvbW1hY2AgYW5kIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93bi4gVGhpcyBraW5kIG9mIGxvY2tpbmcgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nIGlmIHRoZSBkcml2ZXIgaXMgdXNlZCwgYW5kIGl0IGlzIHBvdGVudGlhbGx5IHN1c2NlcHRpYmxlIHRvIHJhY2UgY29uZGl0aW9ucy4gVGhlIGNoYWxsZW5nZSBpcyBqdXN0IGdldHRpbmcgdGhlcmUuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIGNvZGUgKmlzKiByZWFjaGFibGUgaW4gUUVNVSAodXNpbmcgUG93ZXJQQyA0eHggZW11bGF0aW9uKSBhbmQgdGhlIGxvY2tpbmcgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgdGhlIGFuc3dlciBpcyBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcyMywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzo0MTo1Mi44MDg0NTY5MDRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNTkxMzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hbF9yZWdpc3Rlcl9jb21tYWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jPTI5OTg9c3RhdGljIGludCBlbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTMwODItXFx0ZGV2LVxcdTAwM2Vjb21tYWMucnhfY2hhbl9tYXNrID0gTUFMX0NIQU5fTUFTSyhkZXYtXFx1MDAzZW1hbF9yeF9jaGFuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MzA4MzpcXHRlcnIgPSBtYWxfcmVnaXN0ZXJfY29tbWFjKGRldi1cXHUwMDNlbWFsLCBcXHUwMDI2ZGV2LVxcdTAwM2Vjb21tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0zMDg0LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jPTMyPXN0YXRpYyBpbnQgbWFsX2NvdW50O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jLTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5jOjM0OmludCBtYWxfcmVnaXN0ZXJfY29tbWFjKHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCwgc3RydWN0IG1hbF9jb21tYWMgKmNvbW1hYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYy0zNS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuaD0yNTc9dm9pZCBtYWxfZXhpdCh2b2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuaC0yNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmg6MjU5OmludCBtYWxfcmVnaXN0ZXJfY29tbWFjKHN0cnVjdCBtYWxfaW5zdGFuY2UgKm1hbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuaC0yNjAtXFx0XFx0XFx0c3RydWN0IG1hbF9jb21tYWMgKmNvbW1hYyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA3OjQxOjUyLjg1OTA1NDcxMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzMxNDM2MDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC5cblxuKipNeSBBbmFseXNpcyBvZiB0aGUgYGNvbW1hY2AgRHJpdmVyIFJlZ2lzdHJhdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBhbmQgc3BlY2lmaWNhbGx5IGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBgY29tbWFjYCBoYXJkd2FyZSwgYW5kIEkgc2VlIGEgdmVyeSBjbGVhciByZWdpc3RyYXRpb24gYW5kIHVucmVnaXN0cmF0aW9uIHBhdHRlcm4uIGBtYWxfcmVnaXN0ZXJfY29tbWFjYCBpcyBjYWxsZWQgd2l0aGluIHRoZSBgZW1hY19wcm9iZWAgZnVuY3Rpb24uIFRoYXQncyBleGFjdGx5IGFzIHlvdSdkIGV4cGVjdCBpbiBhIHByb3BlciBkcml2ZXIuIGBwcm9iZWAgaXMgd2hlcmUgeW91J3JlIGlkZW50aWZ5aW5nIGFuZCBzZXR0aW5nIHVwIHRoZSBoYXJkd2FyZS4gU28sIGByZWdpc3Rlcl9jb21tYWNgIGlzIHBhcnQgb2YgdGhhdCBpbml0aWFsaXphdGlvbiBwcm9jZXNzLCBsaWtlbHkgaW52b2x2aW5nIGNvbmZpZ3VyaW5nIHRoZSByZWxldmFudCBoYXJkd2FyZSByZXNvdXJjZXMsIGVzdGFibGlzaGluZyBjb21tdW5pY2F0aW9uIGNoYW5uZWxzLCBhbmQgZ2V0dGluZyBldmVyeXRoaW5nIHJlYWR5IGZvciBvcGVyYXRpb24uXG5cbkFuZCBpdCdzIGVxdWFsbHkgcHJlZGljdGFibGUgdG8gc2VlIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgIGNhbGxlZCB3aXRoaW4gYGVtYWNfcmVtb3ZlYC4gYHJlbW92ZWAgaXMgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2hlbiB0aGUgZHJpdmVyIGlzIGJlaW5nIHVubG9hZGVkIG9yIHdoZW4gdGhlIGRldmljZSBpcyBiZWluZyBkZXRhY2hlZC4gVGhpcyBtYWtlcyBwZXJmZWN0IHNlbnNlOyB5b3UgKnVucmVnaXN0ZXIqIHRoZSBgY29tbWFjYCB3aGVuIHlvdSdyZSBkb25lIHdpdGggaXQgdG8gcmVsZWFzZSB0aGUgcmVzb3VyY2VzLCBkZS1hbGxvY2F0ZSBtZW1vcnksIGFuZCBwcm9wZXJseSBzaHV0IGRvd24gdGhlIGhhcmR3YXJlIGludGVyZmFjZS4gVGhpcyBpcyBjcnVjaWFsIGZvciBhdm9pZGluZyByZXNvdXJjZSBsZWFrcyBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cyBkb3duIHRoZSBsaW5lLiBJdCdzIHRoZSBzdGFuZGFyZCwgY2xlYW4gbGlmZWN5Y2xlIG1hbmFnZW1lbnQgYXBwcm9hY2guIEknbSBwbGVhc2VkIHRvIHNlZSBpdCdzIGltcGxlbWVudGVkIGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ5NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA3OjQxOjU2LjU5MDQ5Mjc5NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkwMzg1NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFsX3VucmVnaXN0ZXJfY29tbWFjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yOTk4PXN0YXRpYyBpbnQgZW1hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0zMTk3LSBlcnJfdW5yZWdfY29tbWFjOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzozMTk4OlxcdG1hbF91bnJlZ2lzdGVyX2NvbW1hYyhkZXYtXFx1MDAzZW1hbCwgXFx1MDAyNmRldi1cXHUwMDNlY29tbWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMzE5OS0gZXJyX3JlbF9kZXBzOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jPTMyMDc9c3RhdGljIHZvaWQgZW1hY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMzIzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MzIzMjpcXHRtYWxfdW5yZWdpc3Rlcl9jb21tYWMoZGV2LVxcdTAwM2VtYWwsIFxcdTAwMjZkZXYtXFx1MDAzZWNvbW1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTMyMzMtXFx0ZW1hY19wdXRfZGVwcyhkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmM9MzQ9aW50IG1hbF9yZWdpc3Rlcl9jb21tYWMoc3RydWN0IG1hbF9pbnN0YW5jZSAqbWFsLCBzdHJ1Y3QgbWFsX2NvbW1hYyAqY29tbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMtNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmM6NjY6dm9pZCBtYWxfdW5yZWdpc3Rlcl9jb21tYWMoc3RydWN0IG1hbF9pbnN0YW5jZVxcdCptYWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMtNjctXFx0XFx0c3RydWN0IG1hbF9jb21tYWMgKmNvbW1hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oPTI1OT1pbnQgbWFsX3JlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmgtMjYwLVxcdFxcdFxcdHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oOjI2MTp2b2lkIG1hbF91bnJlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmgtMjYyLVxcdFxcdFxcdCAgIHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzo0MTo1Ni42Mzk1MzY3OTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI0NDU1NTgyMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFuYWx5c2lzOiBJQk0gRU1BQyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBwcm9tcHQgaXMgYXNraW5nIG1lIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIHdhcnJhbnRzIGZ1enppbmcuIFRoZSBrZXkgaGVyZSBpcyB0aGUgZXhjbHVzaW9uIGNyaXRlcmlhOiBwYXRjaGVzIHRoYXQgKm9ubHkqIHRvdWNoIGRyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGxpa2UgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgZXRjLikgdGhhdCBhcmUgZXhlY3V0ZWQgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIHVuYmluZCBvcGVyYXRpb25zIGFyZSBub3Qgd29ydGggZnV6emluZywgYmFzZWQgb24gdGhlIHByb21wdC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgY2VudGVyZWQgYXJvdW5kIGBtYWxfdW5yZWdpc3Rlcl9jb21tYWNgLCB3aGljaCBpcyBjYWxsZWQgd2l0aGluIGBlbWFjX3JlbW92ZWAgYW5kIHRoZSBlcnJvciBwYXRoIG9mIGBlbWFjX3Byb2JlYCwgYW5kIGBtYWxfcmVnaXN0ZXJfY29tbWFjYCBjYWxsZWQgd2l0aGluIGBlbWFjX3Byb2JlYC4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYGVtYWNfcHJvYmVgIGlzIGEgaG90IHBhdGggb3IgdGVhcmRvd24gZnVuY3Rpb24gdGhhdCBpcyBvbmx5IGV4ZWN1dGVkIGluIHZlcnkgc3BlY2lmaWMgc2NlbmFyaW9zLlxuXG5gZW1hY19wcm9iZWAgaXRzZWxmIGlzIGEgcHJvYmUgZnVuY3Rpb24sIHBhcnQgb2YgZGV2aWNlIGluaXRpYWxpemF0aW9uLiBDYW4gaXQgYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlPyBHZW5lcmFsbHksIHBsYXRmb3JtIGRldmljZXMgYXJlIHByb2JlZCBhdCBib290IHRpbWUuIENhbiBJIGNyZWF0ZSBhIHBsYXRmb3JtIGRldmljZSBvciB1c2UgZGV2aWNlIHRyZWUgb3ZlcmxheXMgdG8gdHJpZ2dlciBgZW1hY19wcm9iZWAgZHluYW1pY2FsbHk/IFByb2JhYmx5IG5vdC4gVGhlIGNoYW5nZXMgYXJlIHNwZWNpZmljYWxseSB3aXRoaW4gYG1hbF9yZWdpc3Rlcl9jb21tYWNgIGFuZCBgbWFsX3VucmVnaXN0ZXJfY29tbWFjYC5cblxuVGhlbiBJIHJlbWVtYmVyIHRoZSBwcm9tcHQsIFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogLi4uIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cIiBJcyBgZW1hY19wcm9iZWAgY29uc2lkZXJlZCBhIHRlYXJkb3duIGNhbGxiYWNrPyBObywgaXQncyBhbiBpbml0aWFsaXphdGlvbiBjYWxsYmFjay5cblxuVGhlbiBJIGdldCBhIGxpdHRsZSBleGNpdGVkIGJlY2F1c2UgSSBjYW4gYWN0dWFsbHkgcmVhY2ggYGVtYWNfcHJvYmVgIGluIFFFTVUgYmVjYXVzZSBvZiB0aGUgUG93ZXJQQyA0eHggbWFjaGluZS4gU28gaXQgaXMgcmVhY2hhYmxlIGluIFFFTVUuXG5cbkJ1dCB3YWl0LCBJIG5lZWQgdG8gY29uc2lkZXIgaWYgU3l6a2FsbGVyIHdpbGwgYWN0dWFsbHkgYmUgYWJsZSB0byBoaXQgdGhpcy4gU3l6a2FsbGVyIGNhbiBmdXp6IHBsYXRmb3JtIGRldmljZSBwcm9iaW5nIGlmIGl0IGNhbiBpbmplY3QgZGV2aWNlIHRyZWUgbm9kZXMgb3IgaXQgaXMgYSB2aXJ0dWFsIGRldmljZS4gRm9yIHRoaXMgc3BlY2lmaWMgU29DIGV0aGVybmV0IGNvbnRyb2xsZXIsIGl0IGlzIHRpZWQgdG8gdGhlIFNvQy5cblxuQW5kIHRoZW4gSSByZWFsaXplIHRoZSBwYXRjaCBpcyBqdXN0IGFib3V0IGFkZGluZyBsb2NrcyBhcm91bmQgYG5hcGlfZW5hYmxlYCBhbmQgYG5hcGlfZGlzYWJsZWAgZHVyaW5nIHByb2JlL3JlbW92ZS4gVGhpcyBpcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBmaXggb3IgYSBmaXggZm9yIGEgbG9ja2RlcCB3YXJuaW5nIHJlbGF0ZWQgdG8gZW5hYmxpbmcvZGlzYWJsaW5nIE5BUEkgd2l0aG91dCBob2xkaW5nIHRoZSBuZXRkZXYgbG9jay4gVGhlIHVuZGVybHlpbmcgY29kZSB3YXMgcmVjZW50bHkgY2hhbmdlZCwgcmVxdWlyaW5nIHRoZSBuZXRkZXYgbG9jayBpbiBzb21lIGNhc2VzLlxuXG5JJ20gc3RhcnRpbmcgdG8gdGhpbmsgYWJvdXQgd2hldGhlciB0aGUgSUJNIEVNQUMgaXMgZW11bGF0ZWQgaW4gUUVNVS4gSXQncyB0aW1lIHRvIGNoZWNrIHRoZSBRRU1VIHNvdXJjZSBjb2RlLiBCdXQgSSBhbSBhbG1vc3Qgc3VyZSB0aGF0IHRoZSBQb3dlclBDIDQ0MEVQIChCYW1ib28pIGFuZCA0NjBFWCAoU2FtNDYwZXgpIGFyZSBlbXVsYXRlZCBpbiBRRU1VLCBib3RoIGhhdmUgdGhlIElCTSBFTUFDLiBTbyBpdCAqaXMqIHJlYWNoYWJsZS5cblxuTGV0J3Mgc3VtbWFyaXplLiBUaGUgbW9kaWZpY2F0aW9ucyBhcmUgaW4gYG1hbF9yZWdpc3Rlcl9jb21tYWNgIGFuZCBgbWFsX3VucmVnaXN0ZXJfY29tbWFjYCwgd2l0aGluIGBlbWFjX3Byb2JlYCBhbmQgYGVtYWNfcmVtb3ZlYC4gSWYgdGhlIG1haW4gdHJpZ2dlcmluZyBpcyBkdXJpbmcgYm9vdCAocHJvYmUpIG9yIG1vZHVsZSB1bmxvYWQgKHJlbW92ZSksIGlzIGl0IHdvcnRoIGZ1enppbmc/IFVzdWFsbHksIHByb2JlIGZ1bmN0aW9ucyBhcmUgZXhlY3V0ZWQgb25jZSBhdCBib290LiBGdXp6aW5nIHRoZW0gcmVxdWlyZXMgbW9kdWxlIHJlbG9hZCBvciBzeXNmcyB1bmJpbmQvYmluZC4gVGhlIHByb21wdCBkb2Vzbid0IGV4cGxpY2l0bHkgZXhjbHVkZSBgLnByb2JlYCwgYnV0IGl0IGRvZXMgc3Ryb25nbHkgaW1wbHkgaXQuXG5cblRoZSBjaGFuZ2VzIGFwcGVhciB0byBwcmltYXJpbHkgYWRkcmVzcyBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gb2YgdGhlIGVtYWMgZHJpdmVyLCB3aXRoIGEgbG9jayBhZGRpdGlvbiBsaWtlbHkgcmVsYXRlZCB0byBOQVBJIGhhbmRsaW5nLiBHaXZlbiB0aGF0LCBhbmQgdGhlIHBvdGVudGlhbCBkaWZmaWN1bHR5IG9mIHRyaWdnZXJpbmcgdGhlc2UgY29kZSBwYXRocyBkeW5hbWljYWxseSBkdXJpbmcgZnV6emluZyAqcmVsYXRpdmUgdG8gdGhlIHByb21wdCdzIGV4Y2x1c2lvbiBjcml0ZXJpYSosIHRoaXMgbWlnaHQgbm90IGJlIHRoZSBoaWdoZXN0IHByaW9yaXR5IGZvciBmdXp6aW5nLCBnaXZlbiB0aGUgcmVzb3VyY2VzIHRoYXQgYXJlIHVzdWFsbHkgYWxsb2NhdGVkIHRvIHN1Y2ggdGFza3MuIEhvd2V2ZXIsIGl0ICppcyogcmVhY2hhYmxlIGluIFFFTVUsIHNvIG1heWJlIGl0J3Mgc3RpbGwgd29ydGggdGhlIGVmZm9ydC4gVWx0aW1hdGVseSwgdGhpcyByZXF1aXJlcyBhIGRlZXBlciBkaXZlIGludG8gdGhlIHNwZWNpZmljIFN5emthbGxlciBjb25maWd1cmF0aW9uIGFuZCBjYXBhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzODcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDc6NDI6MDkuMDg1MDk3MDMxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjU4MDA3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlbWFjX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yOTg1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZW1hY19naWdlX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjk5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6Mjk5ODpzdGF0aWMgaW50IGVtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI5OTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jPTMyNTU9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZW1hY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMzI1OS1cXHR9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzozMjYwOlxcdC5wcm9iZSA9IGVtYWNfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTMyNjEtXFx0LnJlbW92ZSA9IGVtYWNfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzo0MjowOS4xNDc2ODI1NDlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgzMDg4MjA0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoJ3MgV29ydGhpbmVzcyBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyeWluZyB0byBkZXRlcm1pbmUgaWYgaXQncyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBGaXJzdCwgaXQncyBhIHBsYXRmb3JtIGRyaXZlciBwcm9iZSwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgYWNjZXNzIGNvbnRyb2wuIENhbiBhbiB1bnByaXZpbGVnZWQgdXNlciB0cmlnZ2VyIHRoaXM/IE5vcGUsIHRoYXQncyBub3QgcG9zc2libGUuIEEgcHJpdmlsZWdlZCB1c2VyLCB0aG91Z2g/IFllcywgdGhyb3VnaCB0aGUgc3lzZnMgYmluZC91bmJpbmQgbWVjaGFuaXNtLlxuXG5UaGUgcHJvbXB0LCBob3dldmVyLCB0aHJvd3MgYSB3cmVuY2ggaW4gdGhlIHdvcmtzLiBJdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggb25seSB0b3VjaGVzIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIG9yIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIHRlYXJkb3duIGNhbGxiYWNrcyB0aGF0IGFyZSBleGVjdXRlZCBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgdW5iaW5kIG9wZXJhdGlvbnMuIEhtbW0sIHRoZSBwYXRjaCBtb2RpZmllcyBgbWFsX3JlZ2lzdGVyX2NvbW1hY2AgKGNhbGxlZCBmcm9tIHByb2JlKSBhbmQgYG1hbF91bnJlZ2lzdGVyX2NvbW1hY2AgKGNhbGxlZCBmcm9tIHJlbW92ZSkuIFRoZXNlICpzaG91bGQqIG9ubHkgYmUgZXhlY3V0ZWQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24g4oCTIHdoaWNoLCBmb3IgcGxhdGZvcm0gZGV2aWNlcywgbW9zdGx5IG1lYW5zIGJvb3QgYW5kIHN5c2ZzIGJpbmQvdW5iaW5kLCByaWdodD9cblxuRXZlbiB0aG91Z2ggdGhlIHByb21wdCAqZG9lc24ndCogZXhwbGljaXRseSBtZW50aW9uIFwicHJvYmVcIiBpbiB0aGUgZXhjbHVzaW9uIGxpc3QsIEkgY2FuIHNlZSBob3cgaXQgbWlnaHQgZmFsbCB1bmRlciB0aGUgc3Bpcml0IG9mIHRoZSBleGNsdXNpb24uIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgZHVyaW5nIHRoZSBpbml0aWFsIHNldHVwIG9yIHRlYXJkb3duLCBzbyBmdXp6aW5nIHdvdWxkIGJlIGxpbWl0ZWQgdG8gYm9vdCBhbmQgdW5iaW5kIHNjZW5hcmlvcy5cblxuSG9sZCBvbi4uLiBJJ3ZlIGdvdCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBMZXQgbWUgc2VlLCBgbWFsX3JlZ2lzdGVyX2NvbW1hY2AgaXMgY2FsbGVkIGZyb20gYGVtYWNfcHJvYmVgLiBUaGF0J3MgdGhlIG9ubHkgY2FsbGVyIGxpc3RlZC4gSXMgdGhlcmUgYW55IG90aGVyIGNhbGxlcj8gSXQncyBpbXBvcnRhbnQgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDU5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA3OjQyOjEzLjk3ODU2NjMxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDg2NjM2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWxfcmVnaXN0ZXJfY29tbWFjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yOTk4PXN0YXRpYyBpbnQgZW1hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0zMDgyLVxcdGRldi1cXHUwMDNlY29tbWFjLnJ4X2NoYW5fbWFzayA9IE1BTF9DSEFOX01BU0soZGV2LVxcdTAwM2VtYWxfcnhfY2hhbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjMwODM6XFx0ZXJyID0gbWFsX3JlZ2lzdGVyX2NvbW1hYyhkZXYtXFx1MDAzZW1hbCwgXFx1MDAyNmRldi1cXHUwMDNlY29tbWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMzA4NC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYz0zMj1zdGF0aWMgaW50IG1hbF9jb3VudDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYy0zMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9tYWwuYzozNDppbnQgbWFsX3JlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsIHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmMtMzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmg9MjU3PXZvaWQgbWFsX2V4aXQodm9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmgtMjU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL21hbC5oOjI1OTppbnQgbWFsX3JlZ2lzdGVyX2NvbW1hYyhzdHJ1Y3QgbWFsX2luc3RhbmNlICptYWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvbWFsLmgtMjYwLVxcdFxcdFxcdHN0cnVjdCBtYWxfY29tbWFjICpjb21tYWMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwNzo0MjoxNC4wMjk0NDAwNTlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMwNzkxMTMyODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPWZhbHNlOiBSZWFzb25pbmcgZm9yIEV4Y2x1ZGluZyBhIFNwZWNpZmljIEVtYmVkZGVkIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guIEkgc2VlIHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHNpbmNlIEkgc2VlIG9ubHkgaW5pdGlhbGl6YXRpb24gYW5kIHRlYXJkb3duIGZ1bmN0aW9ucyBmb3IgYSBwbGF0Zm9ybSBkZXZpY2UsIGBtYWxfcmVnaXN0ZXJfY29tbWFjYCBhbmQgYG1hbF91bnJlZ2lzdGVyX2NvbW1hY2AsIGFuZCB0aGUgcHJvbXB0IGV4Y2x1ZGVzIHRlYXJkb3duIGNhbGxiYWNrcyB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBzeXNmcyB1bmJpbmQsIHRoZW4gaXQncyBwcm9iYWJseSBub3Qgd29ydGggZnV6emluZy4gQnV0IGxldCBtZSBtYWtlIHN1cmUuXG5cbkhtbSwgbGV0IG1lIGNvbnNpZGVyLiBBcmUgdGhlcmUgYW55IG90aGVyIHBvdGVudGlhbCBwYXRocyB0byB0cmlnZ2VyIGBlbWFjX3Byb2JlYD8gUGxhdGZvcm0gZGV2aWNlcyBhcmUgdHlwaWNhbGx5IHN0YXRpY2FsbHkgZGVmaW5lZCBpbiB0aGUgZGV2aWNlIHRyZWUsIHNvIGl0IHVzdWFsbHkgcnVucyBvbmNlIGR1cmluZyBib290LiBGdXp6aW5nIHRoYXQgd291bGQgaW52b2x2ZSByZWJvb3RpbmcgdGhlIFZNIG9yIHVzaW5nIHN5c2ZzIGJpbmQvdW5iaW5kLCB3aGljaCB0aGUgcHJvbXB0IG1lbnRpb25zIGZvciBleGNsdXNpb24uXG5cblRoZSBwcm9tcHQgZG9lc24ndCAqZXhwbGljaXRseSogZXhjbHVkZSBgLnByb2JlYCBjYWxsYmFja3MsIG9ubHkgdGVhcmRvd24gbGlrZSBgLnJlbW92ZWAgYW5kIGAuc2h1dGRvd25gLiBPa2F5LCBzbyBpZiB0aGUgcGF0Y2ggKm9ubHkqIG1vZGlmaWVzIGAucHJvYmVgIGFuZCBgLnJlbW92ZWAgaW4gYSBwbGF0Zm9ybSBkcml2ZXIsIHNob3VsZCBJIGV4Y2x1ZGUgaXQ/IFRoaXMgc3BlY2lmaWMgb25lIGlzIGZvciBhbiBJQk0gRU1BQyBvbiBQb3dlclBDIDR4eCwgd2hpY2ggaXMgcHJldHR5IG5pY2hlIGFuZCBub3QgZ2VuZXJhbGx5IGZ1enplZCBieSBzeXprYWxsZXIuXG5cbkhvbGQgb24sIEkgYWxzbyBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBlbHNlISBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIHRvIGV4Y2x1ZGUgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gQnV0IHdhaXQsIFFFTVUgKmRvZXMqIGVtdWxhdGUgUG93ZXJQQyA0eHgsIHNwZWNpZmljYWxseSBCYW1ib28gYW5kIFNhbTQ2MGV4LiBTbywgaXQncyAqdGVjaG5pY2FsbHkqIHJlYWNoYWJsZS4gSG93ZXZlciwgaXMgaXQgKndvcnRoKiBmdXp6aW5nP1xuXG5MZXQncyBzZWUsIHdoYXQgaXMgdGhlIHBhdGNoIGFjdHVhbGx5IGRvaW5nPyBPaCwgaXQncyBhdXRob3JlZCBieSB0aGUgc3l6LWNsdXN0ZXIsIHNvIGl0J3MgYSB0ZXN0IGNhc2UsIG5vdCBhIHJlYWwgdXNlci4gTGV0IG1lIGV4YW1pbmUgdGhlIGNvZGU6XG5cbmBgYGNcbiBcdGlmIChsaXN0X2VtcHR5KFx1MDAyNm1hbC1cdTAwM2VsaXN0KSlcbi1cdFx0bmFwaV9lbmFibGUoXHUwMDI2bWFsLVx1MDAzZW5hcGkpO1xuK1x0XHRuYXBpX2VuYWJsZV9sb2NrZWQoXHUwMDI2bWFsLVx1MDAzZW5hcGkpO1xuYGBgXG5cbkFoLCBpdCBzZWVtcyB0byBiZSBmaXhpbmcgYSByZWNlbnQgQVBJIGNoYW5nZSB3aGVyZSBgbmFwaV9lbmFibGVgIHJlcXVpcmVzIHRoZSBuZXRkZXYgbG9jaywgb3IgYSBsb2NrZGVwIHdhcm5pbmcuIFRoaXMgY29kZSBvbmx5IGFmZmVjdHMgYG1hbF9yZWdpc3Rlcl9jb21tYWNgIGFuZCBgbWFsX3VucmVnaXN0ZXJfY29tbWFjYCwgc28gZXNzZW50aWFsbHkgaXQncyBhIGxvY2sgZml4aW5nIGEgcHJvYmxlbSBmb3VuZCBvbmx5IG9uIGBwcm9iZWAgYW5kIGByZW1vdmVgLiBJdCdzIHN0aWxsIGZvciBhbiBlbWJlZGRlZCBQb3dlclBDIGV0aGVybmV0IGNvbnRyb2xsZXIuIEkgc2hvdWxkIHByb2JhYmx5IGV4Y2x1ZGUgaXQsIGJ1dCBsZXQgbWUgZG8gYSBkb3VibGUgY2hlY2suXG5cbkxldCBtZSBnbyBiYWNrIGFuZCB2ZXJpZnk6IGlzIGBtYWxfcmVnaXN0ZXJfY29tbWFjYCBjYWxsZWQgZnJvbSBhbnl3aGVyZSBlbHNlPyBJIGFscmVhZHkgZ3JlcHBlZCBmb3IgaXQsIG5vcGUuIEhvdyBhYm91dCBgbWFsX3VucmVnaXN0ZXJfY29tbWFjYD8gQWxzbyBuby4gSXMgdGhlcmUgYW55IGR5bmFtaWMgd2F5IHRvIHRyaWdnZXIgYGVtYWNfcHJvYmVgIG90aGVyIHRoYW4gdGhyb3VnaCBzeXNmcyBiaW5kL3VuYmluZCBvciBkZXZpY2UgdHJlZSBvdmVybGF5cz8gTm8uXG5cblRoZSBwcm9tcHQgc3BlY2lmaWVzIHRoYXQgYC5yZW1vdmVgIGlzIGV4Y2x1ZGVkLiBTaW5jZSB0aGUgcGF0Y2ggbW9kaWZpZXMgYm90aCByZWdpc3RlciAocHJvYmUpIGFuZCB1bnJlZ2lzdGVyIChyZW1vdmUpLCBhbmQgdGhlIHJlbW92ZSBwYXRoIGlzIGV4Y2x1ZGVkLCBhbmQgdGhlIHByb2JlIHBhdGggaXMganVzdCB0aGUgY291bnRlcnBhcnQgZXhlY3V0ZWQgb25jZSBhdCBib290IG9yIHN5c2ZzIGJpbmQsIGl0IHNlZW1zIHJlYXNvbmFibGUgdG8gZXhjbHVkZSB0aGlzIGFzIHdlbGwuIEl0J3MgYWxzbyBhbiBlbWJlZGRlZCBQb3dlclBDIGRyaXZlci5cblxuVGhlcmVmb3JlLCBJJ20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3IgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0NDgsIk91dHB1dFRva2VucyI6NzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDc6NDI6MjcuMTA4NTU1ODMzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMwNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gKHByb2JlKSBhbmQgdGVhcmRvd24gKHJlbW92ZSkgY2FsbGJhY2tzIGZvciB0aGUgSUJNIEVNQUMgcGxhdGZvcm0gZHJpdmVyLCB3aGljaCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgYm9vdCBvciBzeXNmcyBiaW5kL3VuYmluZCBvcGVyYXRpb25zLiBUaGVzZSBwYXRocyBhcmUgbm90IHN1aXRhYmxlIGZvciBjb250aW51b3VzIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGRyaXZlciBpbml0aWFsaXphdGlvbiAocHJvYmUpIGFuZCB0ZWFyZG93biAocmVtb3ZlKSBjYWxsYmFja3MgZm9yIHRoZSBJQk0gRU1BQyBwbGF0Zm9ybSBkcml2ZXIsIHdoaWNoIGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBib290IG9yIHN5c2ZzIGJpbmQvdW5iaW5kIG9wZXJhdGlvbnMuIFRoZXNlIHBhdGhzIGFyZSBub3Qgc3VpdGFibGUgZm9yIGNvbnRpbnVvdXMgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA3OjQyOjI3LjEwODU4MjcwNFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwj7rs[1] Phase: Running StartedAt: 2026-08-11 07:42:37 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rs[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-11 07:42:37 +0000 UTC FinishedAt: 2026-08-11 07:42:41 +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,}