Name: series-workflow2bsr4 Phase: Failed StartedAt: 2026-09-10 01:31:02 +0000 UTC FinishedAt: 2026-09-10 02:18:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bsr4[0] Phase: Succeeded StartedAt: 2026-09-10 01:31:02 +0000 UTC FinishedAt: 2026-09-10 02:18:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bsr4[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 01:31:02 +0000 UTC FinishedAt: 2026-09-10 02:18:31 +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+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQUNQSSBTQVIgKFNwZWNpZmljIEFic29ycHRpb24gUmF0ZSkgcG93ZXIgbGltaXQgaGFuZGxpbmcgaW4gdGhlIE1lZGlhVGVrIG10NzkyeCB3aXJlbGVzcyBkcml2ZXIgKG10NzkyeF9hY3BpX3Nhci5jKS4gVGhlc2UgY29kZSBwYXRocyBhcmUgb25seSBleGVjdXRlZCB3aGVuIHByb3ByaWV0YXJ5IE1lZGlhVGVrIEFDUEkgU0FSIG1ldGhvZHMgKE1URFMsIE1UR1MpIGFyZSBldmFsdWF0ZWQgZnJvbSBwbGF0Zm9ybSBmaXJtd2FyZSBvbiBwaHlzaWNhbCBoYXJkd2FyZSB3aXRoIE1lZGlhVGVrIFdpLUZpIGFkYXB0ZXJzLiBJbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBubyBzdWNoIEFDUEkgdGFibGVzIG9yIGhhcmR3YXJlIGFyZSBwcmVzZW50LCBtYWtpbmcgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjE3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjhhY2Y0OTExYjk4ZDVkZDRiMDVlOWNjMWJkZmUzZDQxOGI2NTE0Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDAyOjE3OjA0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jXG5pbmRleCA5NDZkZDc5NTZlNGEwLi45ZjBlYTNkMjNlMGY1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY1xuQEAgLTI3OSwxMCAmIzQzOzI3OSwxOCBAQCBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxuIFx0aWYgKGlkeCBcdTAwM2U9IG1heClcbiBcdFx0cmV0dXJuIGR5bl9wb3dlcjtcbiBcbi1cdGdlb19wb3dlciA9IChiYW5kX3B3ciAmIzQzOyBpZHgpLVx1MDAzZXB3cjtcbi1cdGR5bl9wb3dlciAmIzQzOz0gKGJhbmRfcHdyICYjNDM7IGlkeCktXHUwMDNlb2Zmc2V0O1xuJiM0MztcdGJhbmRfcHdyICYjNDM7PSBpZHg7XG4gXG4tXHRyZXR1cm4gbWluKGdlb19wb3dlciwgZHluX3Bvd2VyKTtcbiYjNDM7XHQvKiBTb21lIE9FTSB0YWJsZXMgY2FycnkgMHhmZiBoZXJlOyBuYXJyb3dlZCB0byBzOCB0aGF0IGlzIC0xIGFuZFxuJiM0MztcdCAqIHdpbnMgdGhlIG1pbigpIGJlbG93LiBUYWtlIGl0IGFzIG5vIGxpbWl0LlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChiYW5kX3B3ci1cdTAwM2Vwd3IgPT0gMHhmZilcbiYjNDM7XHRcdHJldHVybiBkeW5fcG93ZXI7XG4mIzQzO1xuJiM0MztcdGdlb19wb3dlciA9IGJhbmRfcHdyLVx1MDAzZXB3cjtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG1pbl90KGludCwgZ2VvX3Bvd2VyLFxuJiM0MztcdFx0ICAgICBtaW5fdChpbnQsIGR5bl9wb3dlciAmIzQzOyBiYW5kX3B3ci1cdTAwM2VvZmZzZXQsIDEyNykpO1xuIH1cbiBcbiBzdGF0aWMgczhcbkBAIC0zMTUsNyAmIzQzOzMyMyw5IEBAIG10NzkyeF9hc2FyX3JhbmdlX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxuIFx0ZWxzZVxuIFx0XHRiYW5kID0gTkw4MDIxMV9CQU5EXzJHSFo7XG4gXG4tXHRyZXR1cm4gbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3IocGh5LCBiYW5kLCBsaW1pdFtpZHhdKTtcbiYjNDM7XHQvKiAweGZmOiBubyBkeW5hbWljIGxpbWl0LCBzZWUgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3IoKSAqL1xuJiM0MztcdHJldHVybiBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cihwaHksIGJhbmQsXG4mIzQzO1x0XHRcdFx0ICAgICAgIGxpbWl0W2lkeF0gPT0gMHhmZiA/IDEyNyA6IGxpbWl0W2lkeF0pO1xuIH1cbiBcbiBpbnQgbXQ3OTJ4X2luaXRfYWNwaV9zYXJfcG93ZXIoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgYm9vbCBzZXRfZGVmYXVsdClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjoxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBBQ1BJIFNBUiAoU3BlY2lmaWMgQWJzb3JwdGlvbiBSYXRlKSBwb3dlciBsaW1pdCBoYW5kbGluZyBpbiB0aGUgTWVkaWFUZWsgbXQ3OTJ4IHdpcmVsZXNzIGRyaXZlciAobXQ3OTJ4X2FjcGlfc2FyLmMpLiBUaGVzZSBjb2RlIHBhdGhzIGFyZSBvbmx5IGV4ZWN1dGVkIHdoZW4gcHJvcHJpZXRhcnkgTWVkaWFUZWsgQUNQSSBTQVIgbWV0aG9kcyAoTVREUywgTVRHUykgYXJlIGV2YWx1YXRlZCBmcm9tIHBsYXRmb3JtIGZpcm13YXJlIG9uIHBoeXNpY2FsIGhhcmR3YXJlIHdpdGggTWVkaWFUZWsgV2ktRmkgYWRhcHRlcnMuIEluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG5vIHN1Y2ggQUNQSSB0YWJsZXMgb3IgaGFyZHdhcmUgYXJlIHByZXNlbnQsIG1ha2luZyB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2OGFjZjQ5MTFiOThkNWRkNGIwNWU5Y2MxYmRmZTNkNDE4YjY1MTRjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMTAgMDI6MTc6MDQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYwppbmRleCA5NDZkZDc5NTZlNGEwLi45ZjBlYTNkMjNlMGY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMKQEAgLTI3OSwxMCAmIzQzOzI3OSwxOCBAQCBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LAogCWlmIChpZHggJmd0Oz0gbWF4KQogCQlyZXR1cm4gZHluX3Bvd2VyOwogCi0JZ2VvX3Bvd2VyID0gKGJhbmRfcHdyICYjNDM7IGlkeCktJmd0O3B3cjsKLQlkeW5fcG93ZXIgJiM0Mzs9IChiYW5kX3B3ciAmIzQzOyBpZHgpLSZndDtvZmZzZXQ7CiYjNDM7CWJhbmRfcHdyICYjNDM7PSBpZHg7CiAKLQlyZXR1cm4gbWluKGdlb19wb3dlciwgZHluX3Bvd2VyKTsKJiM0MzsJLyogU29tZSBPRU0gdGFibGVzIGNhcnJ5IDB4ZmYgaGVyZTsgbmFycm93ZWQgdG8gczggdGhhdCBpcyAtMSBhbmQKJiM0MzsJICogd2lucyB0aGUgbWluKCkgYmVsb3cuIFRha2UgaXQgYXMgbm8gbGltaXQuCiYjNDM7CSAqLwomIzQzOwlpZiAoYmFuZF9wd3ItJmd0O3B3ciA9PSAweGZmKQomIzQzOwkJcmV0dXJuIGR5bl9wb3dlcjsKJiM0MzsKJiM0MzsJZ2VvX3Bvd2VyID0gYmFuZF9wd3ItJmd0O3B3cjsKJiM0MzsKJiM0MzsJcmV0dXJuIG1pbl90KGludCwgZ2VvX3Bvd2VyLAomIzQzOwkJICAgICBtaW5fdChpbnQsIGR5bl9wb3dlciAmIzQzOyBiYW5kX3B3ci0mZ3Q7b2Zmc2V0LCAxMjcpKTsKIH0KIAogc3RhdGljIHM4CkBAIC0zMTUsNyAmIzQzOzMyMyw5IEBAIG10NzkyeF9hc2FyX3JhbmdlX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LAogCWVsc2UKIAkJYmFuZCA9IE5MODAyMTFfQkFORF8yR0haOwogCi0JcmV0dXJuIG10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHBoeSwgYmFuZCwgbGltaXRbaWR4XSk7CiYjNDM7CS8qIDB4ZmY6IG5vIGR5bmFtaWMgbGltaXQsIHNlZSBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cigpICovCiYjNDM7CXJldHVybiBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cihwaHksIGJhbmQsCiYjNDM7CQkJCSAgICAgICBsaW1pdFtpZHhdID09IDB4ZmYgPyAxMjcgOiBsaW1pdFtpZHhdKTsKIH0KIAogaW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNjkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIENvZGUgUGF0Y2gqKgoKT2theSwgc28gdGhlIHBhdGNoIGlzIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtSaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyBjb2RlIGJlZm9yZSBJIGNhbiBhc3Nlc3MgaXRzIGltcGFjdC4mIzM0OyBNeSBleHBlcnQgaW5zdGluY3QgaXMgdG8gZGlzc2VjdCB0aGlzIHBpZWNlIGJ5IHBpZWNlLgoKRmlyc3QsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgZXhhY3QgZHJpdmVyIGluIHF1ZXN0aW9uLiAmIzM0O01UNzkyeCYjMzQ7IHN1Z2dlc3RzIE1lZGlhVGVrLCBzbyB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgc3BlY2lmaWMgZHJpdmVyIGlzIHV0aWxpemVkLiBJcyBpdCBmb3IgYSBwaHlzaWNhbCBoYXJkd2FyZSBpbnRlcmZhY2UgbGlrZSBQQ0llLCBVU0IsIFNESU8sIG9yIGlzIGl0IGFuIGludGVncmF0ZWQgU29DIHNvbHV0aW9uPyBEb2VzIGl0IGhhdmUgYW55IGltcGxpY2F0aW9ucyBmb3IgdmlydHVhbGl6YXRpb24sIGxpa2UgUUVNVSwgb3IgZXZlbiBjbG91ZC1uYXRpdmUgZW52aXJvbm1lbnRzPyBUaGlzIGlzIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIHdoZXJlIHRoaXMgcGF0Y2ggbWlnaHQgYmUgcmVsZXZhbnQgYW5kIGlmIGl0IGNvdWxkIHBvdGVudGlhbGx5IGludHJvZHVjZSBhbnkgY29tcGF0aWJpbGl0eSBpc3N1ZXMgaW4gdmlydHVhbGl6ZWQgc2V0dXBzLCB3aGljaCBpcyBhbHdheXMgYSBjb25jZXJuLgoKVG8gYWNoaWV2ZSB0aGF0LCBJIHdpbGwgaW1tZWRpYXRlbHkgbGV2ZXJhZ2UgYGdyZXBwZXJgIGFuZCBgcmVhZC1maWxlYCB0byBnZXQgYSBxdWljayBvdmVydmlldyBvZiBpdHMgdXNhZ2UuIFdpdGggdGhvc2UgdHdvIHRvb2xzLCBJIGNhbiBzdGFydCB0byBidWlsZCBhIHBpY3R1cmUgb2YgaXRzIHJvbGUgaW4gdGhlIGtlcm5lbCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIG1vZHVsZXMgYW5kIHRoZSB3aWRlciBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTJ4X2FzYXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9OTI9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzo5MzptdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRjbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlLCB1OCAqdmVyc2lvbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtOTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxMDE6XHRpZiAobGVuID09IHNpemVvZihzdHJ1Y3QgbXQ3OTJ4X2FzYXJfY2wpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxMDI6XHRcdCp2ZXJzaW9uID0gKChzdHJ1Y3QgbXQ3OTJ4X2FzYXJfY2wgKikqdGFibGUpLVx1MDAzZXZlcnNpb247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjEwMzpcdGVsc2UgaWYgKGxlbiA9PSBzaXplb2Yoc3RydWN0IG10NzkyeF9hc2FyX2NsX3YzKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTA0Olx0XHQqdmVyc2lvbiA9ICgoc3RydWN0IG10NzkyeF9hc2FyX2NsX3YzICopKnRhYmxlKS1cdTAwM2V2ZXJzaW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xMDUtXHRlbHNlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0xMTI9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxMTM6bXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210ZHMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKip0YWJsZSwgdTggdmVyc2lvbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTE0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTEyNC1cdGNhc2UgMTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTI1Olx0XHRlbmFibGUgPSAoKHN0cnVjdCBtdDc5MnhfYXNhcl9keW4gKikqdGFibGUpLVx1MDAzZWVuYWJsZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTI2Olx0XHRzYXJsZW4gPSBzaXplb2Yoc3RydWN0IG10NzkyeF9hc2FyX2R5bl9saW1pdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjEyNzpcdFx0cHJlbGVuID0gc2l6ZW9mKHN0cnVjdCBtdDc5MnhfYXNhcl9keW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xMjgtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xMjktXHRjYXNlIDI6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjEzMDpcdFx0ZW5hYmxlID0gKChzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZHluX3YyICopKnRhYmxlKS1cdTAwM2VlbmFibGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjEzMTpcdFx0c2FybGVuID0gc2l6ZW9mKHN0cnVjdCBtdDc5MnhfYXNhcl9keW5fbGltaXRfdjIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxMzI6XHRcdHByZWxlbiA9IHNpemVvZihzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZHluX3YyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTMzLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTE0Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjE0ODptdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRncyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlLCB1OCB2ZXJzaW9uKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xNDkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTU4LVx0Y2FzZSAxOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxNTk6XHRcdHNhcmxlbiA9IHNpemVvZihzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvX2xpbWl0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTYwOlx0XHRwcmVsZW4gPSBzaXplb2Yoc3RydWN0IG10NzkyeF9hc2FyX2dlbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTE2MS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTE2Mi1cdGNhc2UgMjpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTYzOlx0XHRzYXJsZW4gPSBzaXplb2Yoc3RydWN0IG10NzkyeF9hc2FyX2dlb19saW1pdF92Mik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjE2NDpcdFx0cHJlbGVuID0gc2l6ZW9mKHN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fdjIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xNjUtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MTc4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTc5Om10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGZnKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICoqdGFibGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTE4MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0xOTM9aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjIwMjpcdHJldCA9IG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGNsKGRldiwgKHU4ICoqKVx1MDAyNmFzYXItXHUwMDNlY291bnRyeWxpc3QsIFx1MDAyNmFzYXItXHUwMDNldmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjAzLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoyMDg6XHRyZXQgPSBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRkcyhkZXYsICh1OCAqKilcdTAwMjZhc2FyLVx1MDAzZWR5biwgYXNhci1cdTAwM2V2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMDktXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMTQtXHQvKiBNVEdTIGlzIG9wdGlvbmFsICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjIxNTpcdHJldCA9IG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzKGRldiwgKHU4ICoqKVx1MDAyNmFzYXItXHUwMDNlZ2VvLCBhc2FyLVx1MDAzZXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIxNi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIyMS1cdC8qIE1URkcgaXMgb3B0aW9uYWwgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjIyOlx0cmV0ID0gbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210ZmcoZGV2LCAodTggKiopXHUwMDI2YXNhci1cdTAwM2VmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIyMy1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTIzMz1zdGF0aWMgczhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjM0Om10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIzNS1cdFx0XHRlbnVtIG5sODAyMTFfYmFuZCBiYW5kLCBzOCBkeW5fcG93ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMzctXHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphc2FyID0gcGh5LVx1MDAzZWFjcGlzYXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjIzODpcdHN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fYmFuZCAqYmFuZF9wd3I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIzOS1cdHM4IGdlb19wb3dlcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTI5Nj1zdGF0aWMgczhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6Mjk3Om10NzkyeF9hc2FyX3JhbmdlX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yOTgtXHRcdCAgICAgIGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9zYXJfZnJlcV9yYW5nZXMgKnJhbmdlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozMjY6XHQvKiAweGZmOiBubyBkeW5hbWljIGxpbWl0LCBzZWUgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3IoKSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozMjc6XHRyZXR1cm4gbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3IocGh5LCBiYW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zMjgtXHRcdFx0XHQgICAgICAgbGltaXRbaWR4XSA9PSAweGZmID8gMTI3IDogbGltaXRbaWR4XSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0zMzE9aW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNTAtXHRcdGZycC1cdTAwM2Vwb3dlciA9IG1pbl90KHM4LCBzZXRfZGVmYXVsdCA/IDEyNyA6IGZycC1cdTAwM2Vwb3dlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MzUxOlx0XHRcdFx0ICAgbXQ3OTJ4X2FzYXJfcmFuZ2VfcHdyKHBoeSwgZnJwLVx1MDAzZXJhbmdlLCBpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM1Mi1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTM1OD11OCBtdDc5MnhfYWNwaV9nZXRfZmxhZ3Moc3RydWN0IG10NzkyeF9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM2MC1cdHN0cnVjdCBtdDc5MnhfYWNwaV9zYXIgKmFjcGlzYXIgPSBwaHktXHUwMDNlYWNwaXNhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MzYxOlx0c3RydWN0IG10NzkyeF9hc2FyX2ZnICpmZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzYyLVx0c3RydWN0IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTM5NT1zdGF0aWMgdTMyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjM5NjptdDc5MnhfYWNwaV9nZXRfbXRjbF9tYXBfdjMoaW50IHJvdywgaW50IGNvbHVtbiwgc3RydWN0IG10NzkyeF9hc2FyX2NsX3YzICpjbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzk3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTQwOT1zdGF0aWMgdTMyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjQxMDptdDc5MnhfYWNwaV9nZXRfbXRjbF9tYXAoaW50IHJvdywgaW50IGNvbHVtbiwgc3RydWN0IG10NzkyeF9hc2FyX2NsICpjbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtNDExLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTQyNz1tdDc5MnhfYWNwaV9wYXJzZV9tdGNsX3RibF92MyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBjaGFyICphbHBoYTIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy00MjktXHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICpzYXIgPSBwaHktXHUwMDNlYWNwaXNhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6NDMwOlx0c3RydWN0IG10NzkyeF9hc2FyX2NsX3YzICpjbCA9IHNhci1cdTAwM2Vjb3VudHJ5bGlzdF92MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtNDMxLVx0aW50IGNvbCwgcm93LCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9NDU2PW10NzkyeF9hY3BpX3BhcnNlX210Y2xfdGJsKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGNoYXIgKmFscGhhMilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTQ1OC1cdHN0cnVjdCBtdDc5MnhfYWNwaV9zYXIgKnNhciA9IHBoeS1cdTAwM2VhY3Bpc2FyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzo0NTk6XHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfY2wgKmNsID0gc2FyLVx1MDAzZWNvdW50cnlsaXN0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy00NjAtXHRpbnQgY29sLCByb3csIGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6MjA6c3RydWN0IG10NzkyeF9hc2FyX2R5bl9saW1pdCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTIxLVx0dTggaWR4O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjI1OnN0cnVjdCBtdDc5MnhfYXNhcl9keW4ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC0yNi1cdHU4IG5hbWVzWzRdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMjgtXHR1OCBucl90Ymw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjI5Olx0REVDTEFSRV9GTEVYX0FSUkFZKHN0cnVjdCBtdDc5MnhfYXNhcl9keW5fbGltaXQsIHRibCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTMwLX0gX19wYWNrZWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDozMjpzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZHluX2xpbWl0X3YyIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMzMtXHR1OCBpZHg7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6Mzc6c3RydWN0IG10NzkyeF9hc2FyX2R5bl92MiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTM4LVx0dTggbmFtZXNbNF07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC00MS1cdHU4IG5yX3RibDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6NDI6XHRERUNMQVJFX0ZMRVhfQVJSQVkoc3RydWN0IG10NzkyeF9hc2FyX2R5bl9saW1pdF92MiwgdGJsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNDMtfSBfX3BhY2tlZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjQ1OnN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fYmFuZCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTQ2LVx0dTggcHdyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjUwOnN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fbGltaXQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC01MS1cdHU4IGlkeDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNTItXHQvKiAwOjJHLCAxOjVHICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjUzOlx0c3RydWN0IG10NzkyeF9hc2FyX2dlb19iYW5kIGJhbmRbMl07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTU0LX0gX19wYWNrZWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDo1NjpzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNTctXHR1OCBuYW1lc1s0XTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTU5LVx0dTggbnJfdGJsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDo2MDpcdERFQ0xBUkVfRkxFWF9BUlJBWShzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvX2xpbWl0LCB0YmwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC02MS19IF9fcGFja2VkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC02Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6NjM6c3RydWN0IG10NzkyeF9hc2FyX2dlb19saW1pdF92MiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTY0LVx0dTggaWR4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC02NS1cdC8qIDA6MkcsIDE6NUcsIDI6NkcgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6NjY6XHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvX2JhbmQgYmFuZFszXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNjctfSBfX3BhY2tlZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjY5OnN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fdjIge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC03MC1cdHU4IG5hbWVzWzRdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNzMtXHR1OCBucl90Ymw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjc0Olx0REVDTEFSRV9GTEVYX0FSUkFZKHN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fbGltaXRfdjIsIHRibCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTc1LX0gX19wYWNrZWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDo3NzpzdHJ1Y3QgbXQ3OTJ4X2FzYXJfY2xfdjMge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC03OC1cdHU4IG5hbWVzWzRdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjg4OnN0cnVjdCBtdDc5MnhfYXNhcl9jbCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTg5LVx0dTggbmFtZXNbNF07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC05Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6OTc6c3RydWN0IG10NzkyeF9hc2FyX2ZnIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtOTgtXHR1OCBuYW1lc1s0XTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oPTEwNj1zdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTEwOC1cdHVuaW9uIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6MTA5Olx0XHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZHluICpkeW47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjExMDpcdFx0c3RydWN0IG10NzkyeF9hc2FyX2R5bl92MiAqZHluX3YyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC0xMTEtXHR9O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC0xMTItXHR1bmlvbiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjExMzpcdFx0c3RydWN0IG10NzkyeF9hc2FyX2dlbyAqZ2VvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDoxMTQ6XHRcdHN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fdjIgKmdlb192MjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMTE1LVx0fTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMTE2LVx0dW5pb24ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDoxMTc6XHRcdHN0cnVjdCBtdDc5MnhfYXNhcl9jbCAqY291bnRyeWxpc3Q7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjExODpcdFx0c3RydWN0IG10NzkyeF9hc2FyX2NsX3YzICpjb3VudHJ5bGlzdF92MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMTE5LVx0fTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6MTIwOlx0c3RydWN0IG10NzkyeF9hc2FyX2ZnICpmZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMTIxLX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzMDUKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEFDUEkgU0FSIENvbXBpbGF0aW9uIGFuZCBVc2FnZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGUgYG10NzkyeF9hY3BpX3Nhci5jYCBmaWxlIGZpdHMgaW50byB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgaG93IGl0JiMzOTtzIHV0aWxpemVkLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGRlbHZlIGludG8gdGhlIGBNYWtlZmlsZWAuIFRoYXQmIzM5O2xsIHRlbGwgbWUgaG93IHRoaXMgc3BlY2lmaWMgc291cmNlIGZpbGUgaXMgY29tcGlsZWQgYW5kIGxpbmtlZC4gSSBuZWVkIHRvIGlkZW50aWZ5IGFueSBkZXBlbmRlbmNpZXMsIGFueSBzcGVjaWZpYyBmbGFncyBiZWluZyB1c2VkLi4uIHRoZSB3aG9sZSBuaW5lIHlhcmRzLiBPbmNlIEkmIzM5O3ZlIGdvdCBhIGhhbmRsZSBvbiB0aGUgYnVpbGQgZW52aXJvbm1lbnQsIEkmIzM5O2xsIHRoZW4gbW92ZSBvbiB0byBwaW5wb2ludGluZyB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGNyaXRpY2FsIGhlcmU6IGBtdDc5MnhfaW5pdF9hY3BpX3NhcmAgYW5kIGBtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcmAuIEkmIzM5O20gZ29pbmcgdG8gdHJhY2sgZG93biBldmVyeSBpbnN0YW5jZSB3aGVyZSBlaXRoZXIgb2YgdGhlc2UgYXJlIGNhbGxlZC4gVGhpcyB3aWxsIHBhaW50IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhlc2UgU0FSIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyBhcmUgYmVpbmcgaW50ZWdyYXRlZCBpbnRvIHRoZSBkcml2ZXIgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB3aGVuIGFuZCB3aHkgdGhleSYjMzk7cmUgYmVpbmcgZXhlY3V0ZWQuIEZyb20gdGhlcmUgSSBjYW4gZGV0ZXJtaW5lIHRoZSBvdmVyYWxsIGZsb3cgYW5kIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyeF9pbml0X2FjcGlfc2FyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9MTcwPWludCBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyMjE6XHRtdDc5MnhfaW5pdF9hY3BpX3NhcihkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIyMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9MTI4Nj1pbnQgbXQ3OTIxX3NldF90eF9zYXJfcHdyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0xMjk2LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjEyOTc6XHRtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihtdDc5MnhfaHdfcGh5KGh3KSwgIXNhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMTI5OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM9MjQzPWludCBtdDc5MjVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyOTI6XHRtdDc5MnhfaW5pdF9hY3BpX3NhcihkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI5My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MTg3OT1pbnQgbXQ3OTI1X3NldF90eF9zYXJfcHdyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xODg5LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE4OTA6XHRtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihtdDc5MnhfaHdfcGh5KGh3KSwgIXNhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTg5MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oPTYzMD1pbnQgbXQ3OTJ4ZV9tY3VfZndfcG1jdHJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtNjMyLSNpZmRlZiBDT05GSUdfQUNQSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2MzM6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2MzQ6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC02MzUtdTggbXQ3OTJ4X2FjcGlfZ2V0X2ZsYWdzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD02MzY9dTMyIG10NzkyeF9hY3BpX2dldF9tdGNsX2NvbmYoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtNjM3LSNlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oOjYzODpzdGF0aWMgaW5saW5lIGludCBtdDc5MnhfaW5pdF9hY3BpX3NhcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC02Mzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtNjQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2NDM6c3RhdGljIGlubGluZSBpbnQgbXQ3OTJ4X2luaXRfYWNwaV9zYXJfcG93ZXIoc3RydWN0IG10NzkyeF9waHkgKnBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtNjQ0LVx0XHRcdFx0XHQgICAgIGJvb2wgc2V0X2RlZmF1bHQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0xNzk9bXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Zmcoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKip0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTE5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTkzOmludCBtdDc5MnhfaW5pdF9hY3BpX3NhcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xOTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjMwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjMxOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeF9pbml0X2FjcGlfc2FyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjMyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9Mjk3PW10NzkyeF9hc2FyX3JhbmdlX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozMzE6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTMzMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNTUtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozNTY6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTJ4X2luaXRfYWNwaV9zYXJfcG93ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNTctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI0MzgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgbXQ3OTIxYCBhbmQgYG10NzkyNWAgQ2hpcHNldHMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgZGV2aWNlcyB0aGF0IHV0aWxpemUgdGhlIGBtdDc5MjFgIGFuZCBgbXQ3OTI1YCBjaGlwc2V0cy4gV2hhdCYjMzk7cyB0aGUgbGFuZHNjYXBlIGhlcmU/IEFyZSB3ZSBwcmltYXJpbHkgbG9va2luZyBhdCBlbWJlZGRlZCBzb2x1dGlvbnMsIG9yIGFyZSB0aGVyZSBVU0IgdmVyc2lvbnMgbWFraW5nIHRoZSByb3VuZHM/IEFuZCB3aGF0IGFib3V0IFBDSWUgb3IgU0RJTyBpbXBsZW1lbnRhdGlvbnM/IE5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBpbnRlcmZhY2UgdmFyaWF0aW9ucy4gQWxyaWdodCwgdGltZSB0byBjcmFjayBvcGVuIHRoZSBrZXJuZWwgc291cmNlIGFuZCBzdGFydCBkaWdnaW5nLiBJJiMzOTtsbCB6ZXJvIGluIG9uIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9gIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGludG8gdGhlIGBtdDc5MjEvYCBhbmQgYG10NzkyNS9gIHN1YmRpcmVjdG9yaWVzIHRvIHNlZSB3aGF0IGtpbmQgb2YgYXJjaGl0ZWN0dXJlIGFuZCBkZXZpY2UgaW1wbGVtZW50YXRpb25zIHdlIGhhdmUgaGVyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgYmFzZWxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtkZWJ1Z2ZzLmMmIzM0OywKICAgICYjMzQ7aW5pdC5jJiMzNDssCiAgICAmIzM0O21hYy5jJiMzNDssCiAgICAmIzM0O21haW4uYyYjMzQ7LAogICAgJiMzNDttY3UuYyYjMzQ7LAogICAgJiMzNDttY3UuaCYjMzQ7LAogICAgJiMzNDttdDc5MjEuaCYjMzQ7LAogICAgJiMzNDtwY2kuYyYjMzQ7LAogICAgJiMzNDtwY2lfbWFjLmMmIzM0OywKICAgICYjMzQ7cGNpX21jdS5jJiMzNDssCiAgICAmIzM0O3JlZ2QuYyYjMzQ7LAogICAgJiMzNDtyZWdkLmgmIzM0OywKICAgICYjMzQ7cmVncy5oJiMzNDssCiAgICAmIzM0O3NkaW8uYyYjMzQ7LAogICAgJiMzNDtzZGlvX21hYy5jJiMzNDssCiAgICAmIzM0O3NkaW9fbWN1LmMmIzM0OywKICAgICYjMzQ7dGVzdG1vZGUuYyYjMzQ7LAogICAgJiMzNDt1c2IuYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4ODMKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiA5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVU0IgRGV2aWNlIGFuZCBBQ1BJIFNBUiBJbnZlc3RpZ2F0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBzcG90dGVkIGB1c2IuY2Ag4oCTIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZSBNVDc5MjEgYW5kIE1UNzkyNSBjaGlwc2V0czsgSSYjMzk7bGwgY2hlY2sgYG10NzkyMS91c2IuY2AgYW5kIGBtdDc5MjUvdXNiLmNgIG5leHQsIHNlZWluZyB3aGF0IHRoZXkmIzM5O3JlIGRvaW5nIG9uIHRoZSBVU0IgZnJvbnQuIEJ1dCB0aGVuLCBhIHJlZCBmbGFnIHBvcHBlZCB1cDogd2hhdCBhYm91dCBBQ1BJIFNBUj8gQ2FuIGEgVVNCIGRldmljZSBldmVuICp1c2UqIEFDUEkgU0FSPyBUaGF0JiMzOTtzIHRoZSBxdWVzdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IEFDUEkgU0FSIGlzIHByb2JlZCBhbmQgaW5pdGlhbGl6ZWQgaW4gcmVsYXRpb24gdG8gdGhlc2UgZGV2aWNlcy4gTGV0JiMzOTtzIGRpZyBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgbG93ZG93biBvbiBob3cgdGhlIEFDUEkgU0FSIGZ1bmN0aW9uYWxpdHkgaXMgaGFuZGxlZCBpbiB0aGlzIE1lZGlhdGVrIGNvbnRleHQuIEkmIzM5O20gaG9waW5nIEkgY2FuIHBpZWNlIHRvZ2V0aGVyIHRoZSBpbnRlcnJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBVU0IgZGV2aWNlIGFuZCBBQ1BJIFNBUiBmcm9tIHRoYXQgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHQvKiBDb3B5cmlnaHQgKEMpIDIwMjMgTWVkaWFUZWsgSW5jLiAqL1xuICAgMzpcdFxuICAgNDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2FjcGkuaFx1MDAzZVxuICAgNTpcdCNpbmNsdWRlIFwmIzM0O210NzkyeC5oXCYjMzQ7XG4gICA2Olx0XG4gICA3Olx0c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBjY19saXN0X2FsbFtdID0ge1xuICAgODpcdFx0XCYjMzQ7MDBcJiMzNDssIFwmIzM0O0VVXCYjMzQ7LCBcJiMzNDtBUlwmIzM0OywgXCYjMzQ7QVVcJiMzNDssIFwmIzM0O0FaXCYjMzQ7LCBcJiMzNDtCWVwmIzM0OywgXCYjMzQ7Qk9cJiMzNDssIFwmIzM0O0JSXCYjMzQ7LFxuICAgOTpcdFx0XCYjMzQ7Q0FcJiMzNDssIFwmIzM0O0NMXCYjMzQ7LCBcJiMzNDtDTlwmIzM0OywgXCYjMzQ7SURcJiMzNDssIFwmIzM0O0pQXCYjMzQ7LCBcJiMzNDtNWVwmIzM0OywgXCYjMzQ7TVhcJiMzNDssIFwmIzM0O01FXCYjMzQ7LFxuICAxMDpcdFx0XCYjMzQ7TUFcJiMzNDssIFwmIzM0O05aXCYjMzQ7LCBcJiMzNDtOR1wmIzM0OywgXCYjMzQ7UEhcJiMzNDssIFwmIzM0O1JVXCYjMzQ7LCBcJiMzNDtSU1wmIzM0OywgXCYjMzQ7U0dcJiMzNDssIFwmIzM0O0tSXCYjMzQ7LFxuICAxMTpcdFx0XCYjMzQ7VFdcJiMzNDssIFwmIzM0O1RIXCYjMzQ7LCBcJiMzNDtVQVwmIzM0OywgXCYjMzQ7R0JcJiMzNDssIFwmIzM0O1VTXCYjMzQ7LCBcJiMzNDtWTlwmIzM0OywgXCYjMzQ7S0hcJiMzNDssIFwmIzM0O1BZXCYjMzQ7LFxuICAxMjpcdH07XG4gIDEzOlx0XG4gIDE0Olx0c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBjY19saXN0X2V1W10gPSB7XG4gIDE1Olx0XHRcJiMzNDtBRFwmIzM0OywgXCYjMzQ7QVRcJiMzNDssIFwmIzM0O0JFXCYjMzQ7LCBcJiMzNDtCR1wmIzM0OywgXCYjMzQ7Q1lcJiMzNDssIFwmIzM0O0NaXCYjMzQ7LCBcJiMzNDtIUlwmIzM0OywgXCYjMzQ7REtcJiMzNDssXG4gIDE2Olx0XHRcJiMzNDtFRVwmIzM0OywgXCYjMzQ7RklcJiMzNDssIFwmIzM0O0ZSXCYjMzQ7LCBcJiMzNDtERVwmIzM0OywgXCYjMzQ7R1JcJiMzNDssIFwmIzM0O0hVXCYjMzQ7LCBcJiMzNDtJU1wmIzM0OywgXCYjMzQ7SUVcJiMzNDssXG4gIDE3Olx0XHRcJiMzNDtJVFwmIzM0OywgXCYjMzQ7TFZcJiMzNDssIFwmIzM0O0xJXCYjMzQ7LCBcJiMzNDtMVFwmIzM0OywgXCYjMzQ7TFVcJiMzNDssIFwmIzM0O01DXCYjMzQ7LCBcJiMzNDtNVFwmIzM0OywgXCYjMzQ7TkxcJiMzNDssXG4gIDE4Olx0XHRcJiMzNDtOT1wmIzM0OywgXCYjMzQ7UExcJiMzNDssIFwmIzM0O1BUXCYjMzQ7LCBcJiMzNDtST1wmIzM0OywgXCYjMzQ7U0tcJiMzNDssIFwmIzM0O1NJXCYjMzQ7LCBcJiMzNDtFU1wmIzM0OywgXCYjMzQ7U0VcJiMzNDssXG4gIDE5Olx0XHRcJiMzNDtDSFwmIzM0OyxcbiAgMjA6XHR9O1xuICAyMTpcdFxuICAyMjpcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY2NfbGlzdF9iZVtdID0ge1xuICAyMzpcdFx0XCYjMzQ7QVJcJiMzNDssIFwmIzM0O0JSXCYjMzQ7LCBcJiMzNDtCWVwmIzM0OywgXCYjMzQ7Q0xcJiMzNDssIFwmIzM0O0lRXCYjMzQ7LCBcJiMzNDtNWFwmIzM0OywgXCYjMzQ7T01cJiMzNDssIFwmIzM0O1JVXCYjMzQ7LFxuICAyNDpcdFx0XCYjMzQ7UldcJiMzNDssIFwmIzM0O1ZOXCYjMzQ7LCBcJiMzNDtLUlwmIzM0OywgXCYjMzQ7VUFcJiMzNDssIFwmIzM0O1wmIzM0OywgXCYjMzQ7XCYjMzQ7LCBcJiMzNDtcJiMzNDssIFwmIzM0O1wmIzM0OyxcbiAgMjU6XHRcdFwmIzM0O0VVXCYjMzQ7LCBcJiMzNDtBVFwmIzM0OywgXCYjMzQ7Q05cJiMzNDssIFwmIzM0O0NBXCYjMzQ7LCBcJiMzNDtUV1wmIzM0OywgXCYjMzQ7TlpcJiMzNDssIFwmIzM0O1BIXCYjMzQ7LCBcJiMzNDtVS1wmIzM0OyxcbiAgMjY6XHRcdFwmIzM0O1VTXCYjMzQ7LFxuICAyNzpcdH07XG4gIDI4Olx0XG4gIDI5Olx0c3RhdGljIGludFxuICAzMDpcdG10NzkyeF9hY3BpX3JlYWQoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKm1ldGhvZCwgdTggKip0YmwsIHUzMiAqbGVuKVxuICAzMTpcdHtcbiAgMzI6XHRcdHN0cnVjdCBhY3BpX2J1ZmZlciBidWYgPSB7IEFDUElfQUxMT0NBVEVfQlVGRkVSLCBOVUxMIH07XG4gIDMzOlx0XHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSBcdTAwMjZkZXYtXHUwMDNlbXQ3NjtcbiAgMzQ6XHRcdHVuaW9uIGFjcGlfb2JqZWN0ICpzYXJfcm9vdDtcbiAgMzU6XHRcdGFjcGlfaGFuZGxlIHJvb3QsIGhhbmRsZTtcbiAgMzY6XHRcdGFjcGlfc3RhdHVzIHN0YXR1cztcbiAgMzc6XHRcdHUzMiBpID0gMDtcbiAgMzg6XHRcdGludCByZXQ7XG4gIDM5Olx0XG4gIDQwOlx0XHRyb290ID0gQUNQSV9IQU5ETEUobWRldi1cdTAwM2VkZXYpO1xuICA0MTpcdFx0aWYgKCFyb290KVxuICA0MjpcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gIDQzOlx0XG4gIDQ0Olx0XHRzdGF0dXMgPSBhY3BpX2dldF9oYW5kbGUocm9vdCwgbWV0aG9kLCBcdTAwMjZoYW5kbGUpO1xuICA0NTpcdFx0aWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKVxuICA0NjpcdFx0XHRyZXR1cm4gLUVJTztcbiAgNDc6XHRcbiAgNDg6XHRcdHN0YXR1cyA9IGFjcGlfZXZhbHVhdGVfb2JqZWN0KGhhbmRsZSwgTlVMTCwgTlVMTCwgXHUwMDI2YnVmKTtcbiAgNDk6XHRcdGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSlcbiAgNTA6XHRcdFx0cmV0dXJuIC1FSU87XG4gIDUxOlx0XG4gIDUyOlx0XHRzYXJfcm9vdCA9IGJ1Zi5wb2ludGVyO1xuICA1MzpcdFx0aWYgKHNhcl9yb290LVx1MDAzZXR5cGUgIT0gQUNQSV9UWVBFX1BBQ0tBR0UgfHxcbiAgNTQ6XHRcdCAgICBzYXJfcm9vdC1cdTAwM2VwYWNrYWdlLmNvdW50IFx1MDAzYyA0IHx8XG4gIDU1Olx0XHQgICAgc2FyX3Jvb3QtXHUwMDNlcGFja2FnZS5lbGVtZW50c1swXS50eXBlICE9IEFDUElfVFlQRV9JTlRFR0VSKSB7XG4gIDU2Olx0XHRcdGRldl9lcnIobWRldi1cdTAwM2VkZXYsIFwmIzM0O3NhciBjbnQgPSAlZFxcblwmIzM0OyxcbiAgNTc6XHRcdFx0XHRzYXJfcm9vdC1cdTAwM2VwYWNrYWdlLmNvdW50KTtcbiAgNTg6XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiAgNTk6XHRcdFx0Z290byBmcmVlO1xuICA2MDpcdFx0fVxuICA2MTpcdFxuICA2MjpcdFx0aWYgKCEqdGJsKSB7XG4gIDYzOlx0XHRcdCp0YmwgPSBkZXZtX2t6YWxsb2MobWRldi1cdTAwM2VkZXYsIHNhcl9yb290LVx1MDAzZXBhY2thZ2UuY291bnQsXG4gIDY0Olx0XHRcdFx0XHQgICAgR0ZQX0tFUk5FTCk7XG4gIDY1Olx0XHRcdGlmICghKnRibCkge1xuICA2NjpcdFx0XHRcdHJldCA9IC1FTk9NRU07XG4gIDY3Olx0XHRcdFx0Z290byBmcmVlO1xuICA2ODpcdFx0XHR9XG4gIDY5Olx0XHR9XG4gIDcwOlx0XG4gIDcxOlx0XHRpZiAobGVuKVxuICA3MjpcdFx0XHQqbGVuID0gc2FyX3Jvb3QtXHUwMDNlcGFja2FnZS5jb3VudDtcbiAgNzM6XHRcbiAgNzQ6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHNhcl9yb290LVx1MDAzZXBhY2thZ2UuY291bnQ7IGkmIzQzOyYjNDM7KSB7XG4gIDc1Olx0XHRcdHVuaW9uIGFjcGlfb2JqZWN0ICpzYXJfdW5pdCA9IFx1MDAyNnNhcl9yb290LVx1MDAzZXBhY2thZ2UuZWxlbWVudHNbaV07XG4gIDc2Olx0XG4gIDc3Olx0XHRcdGlmIChzYXJfdW5pdC1cdTAwM2V0eXBlICE9IEFDUElfVFlQRV9JTlRFR0VSKVxuICA3ODpcdFx0XHRcdGJyZWFrO1xuICA3OTpcdFxuICA4MDpcdFx0XHQqKCp0YmwgJiM0MzsgaSkgPSAodTgpc2FyX3VuaXQtXHUwMDNlaW50ZWdlci52YWx1ZTtcbiAgODE6XHRcdH1cbiAgODI6XHRcbiAgODM6XHRcdHJldCA9IGkgPT0gc2FyX3Jvb3QtXHUwMDNlcGFja2FnZS5jb3VudCA/IDAgOiAtRUlOVkFMO1xuICA4NDpcdGZyZWU6XG4gIDg1Olx0XHRrZnJlZShzYXJfcm9vdCk7XG4gIDg2Olx0XG4gIDg3Olx0XHRyZXR1cm4gcmV0O1xuICA4ODpcdH1cbiAgODk6XHRcbiAgOTA6XHQvKiBNVENMIDogQ291bnRyeSBMaXN0IFRhYmxlIGZvciA2RyBiYW5kICovXG4gIDkxOlx0LyogTVRDTCA6IENvdW50cnkgTGlzdCBUYWJsZSBmb3IgNkcgYmFuZCBhbmQgMTFCRSAqL1xuICA5MjpcdHN0YXRpYyBpbnRcbiAgOTM6XHRtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRjbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlLCB1OCAqdmVyc2lvbilcbiAgOTQ6XHR7XG4gIDk1Olx0XHRpbnQgbGVuLCByZXQ7XG4gIDk2Olx0XG4gIDk3Olx0XHRyZXQgPSBtdDc5MnhfYWNwaV9yZWFkKGRldiwgTVQ3OTJ4X0FDUElfTVRDTCwgdGFibGUsIFx1MDAyNmxlbik7XG4gIDk4Olx0XHRpZiAocmV0KVxuICA5OTpcdFx0XHRyZXR1cm4gcmV0O1xuIDEwMDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDgwMQoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDE4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgbXQ3OTJ4IEFDUEkgSGFuZGxpbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSBzZWUgdGhhdCBgQUNQSV9IQU5ETEUobWRldi0mZ3Q7ZGV2KWAgaXMgYmVpbmcgZXhhbWluZWQgaW4gdGhlIGBtdDc5MnhfYWNwaV9yZWFkYCBmdW5jdGlvbi4gVGhlIGNvZGUgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogaWYgdGhlcmUmIzM5O3Mgbm8gQUNQSSBub2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGV2aWNlICh0aGF0IGAhcm9vdGAgY2hlY2spLCBpdCByZXR1cm5zIGFuIGAtRU9QTk9UU1VQUGAgZXJyb3IuIE5hdHVyYWxseSwgdGhpcyBmbGFncyBteSBhdHRlbnRpb24g4oCTIHdoZW4gKmRvZXMqIGEgZGV2aWNlIGFjdHVhbGx5ICpoYXZlKiBvbmUgb2YgdGhlc2UgQUNQSSBub2Rlcz8gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRob3NlIE1lZGlhVGVrLXNwZWNpZmljIEFDUEkgbWV0aG9kczogJiMzNDtNVENMLCYjMzQ7ICYjMzQ7TVREUywmIzM0OyAmIzM0O01UR1MsJiMzNDsgYW5kICYjMzQ7TVRGRy4mIzM0OwoKQWgsIHJpZ2h0LCB0aGlzIGlzIGFsbW9zdCBjZXJ0YWlubHkgb25seSBnb2luZyB0byBiZSBwcmVzZW50IHdoZW4gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucy4gU3BlY2lmaWNhbGx5LCBNZWRpYVRlayBXaS1GaSBjYXJkcyAqaW4qIGxhcHRvcHMgdGhhdCBoYXZlIE9FTSBBQ1BJIERTRFQgdGFibGVzIHRoYXQgZGVmaW5lIHRob3NlICYjMzQ7TVRDTC9NVERTL01UR1MvTVRGRyYjMzQ7IG1ldGhvZHMuIFN0YW5kYXJkIHN0dWZmLCByZWFsbHkuCgpIb2xkIG9uIGEgc2Vjb25kLCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBJIHNob3VsZCByZXZpZXcgaG93IGBtdDc5MnhfaW5pdF9hY3BpX3NhcmAgaXMgYWN0dWFsbHkgY29uZmlndXJlZC4gTGV0IG1lIGdvIG92ZXIgbGluZXMgMTgwLTI1MCBvZiBgbXQ3OTJ4X2FjcGlfc2FyLmNgIGp1c3QgdG8gYmUgY2VydGFpbi4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGFtIGFjY291bnRpbmcgZm9yIGFueSBvZiB0aGUgZmluZXIgZGV0YWlscyBvZiB0aGUgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTgwOlx0e1xuIDE4MTpcdFx0aW50IGxlbiwgcmV0O1xuIDE4MjpcdFxuIDE4MzpcdFx0cmV0ID0gbXQ3OTJ4X2FjcGlfcmVhZChkZXYsIE1UNzkyeF9BQ1BJX01URkcsIHRhYmxlLCBcdTAwMjZsZW4pO1xuIDE4NDpcdFx0aWYgKHJldClcbiAxODU6XHRcdFx0cmV0dXJuIHJldDtcbiAxODY6XHRcbiAxODc6XHRcdGlmIChsZW4gXHUwMDNjIE1UNzkyeF9BU0FSX01JTl9GRylcbiAxODg6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMTg5Olx0XG4gMTkwOlx0XHRyZXR1cm4gMDtcbiAxOTE6XHR9XG4gMTkyOlx0XG4gMTkzOlx0aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gMTk0Olx0e1xuIDE5NTpcdFx0c3RydWN0IG10NzkyeF9hY3BpX3NhciAqYXNhcjtcbiAxOTY6XHRcdGludCByZXQ7XG4gMTk3Olx0XG4gMTk4Olx0XHRhc2FyID0gZGV2bV9remFsbG9jKGRldi1cdTAwM2VtdDc2LmRldiwgc2l6ZW9mKCphc2FyKSwgR0ZQX0tFUk5FTCk7XG4gMTk5Olx0XHRpZiAoIWFzYXIpXG4gMjAwOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDIwMTpcdFxuIDIwMjpcdFx0cmV0ID0gbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Y2woZGV2LCAodTggKiopXHUwMDI2YXNhci1cdTAwM2Vjb3VudHJ5bGlzdCwgXHUwMDI2YXNhci1cdTAwM2V2ZXIpO1xuIDIwMzpcdFx0aWYgKHJldCkge1xuIDIwNDpcdFx0XHRkZXZtX2tmcmVlKGRldi1cdTAwM2VtdDc2LmRldiwgYXNhci1cdTAwM2Vjb3VudHJ5bGlzdCk7XG4gMjA1Olx0XHRcdGFzYXItXHUwMDNlY291bnRyeWxpc3QgPSBOVUxMO1xuIDIwNjpcdFx0fVxuIDIwNzpcdFxuIDIwODpcdFx0cmV0ID0gbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210ZHMoZGV2LCAodTggKiopXHUwMDI2YXNhci1cdTAwM2VkeW4sIGFzYXItXHUwMDNldmVyKTtcbiAyMDk6XHRcdGlmIChyZXQpIHtcbiAyMTA6XHRcdFx0ZGV2bV9rZnJlZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIGFzYXItXHUwMDNlZHluKTtcbiAyMTE6XHRcdFx0YXNhci1cdTAwM2VkeW4gPSBOVUxMO1xuIDIxMjpcdFx0fVxuIDIxMzpcdFxuIDIxNDpcdFx0LyogTVRHUyBpcyBvcHRpb25hbCAqL1xuIDIxNTpcdFx0cmV0ID0gbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Z3MoZGV2LCAodTggKiopXHUwMDI2YXNhci1cdTAwM2VnZW8sIGFzYXItXHUwMDNldmVyKTtcbiAyMTY6XHRcdGlmIChyZXQpIHtcbiAyMTc6XHRcdFx0ZGV2bV9rZnJlZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIGFzYXItXHUwMDNlZ2VvKTtcbiAyMTg6XHRcdFx0YXNhci1cdTAwM2VnZW8gPSBOVUxMO1xuIDIxOTpcdFx0fVxuIDIyMDpcdFxuIDIyMTpcdFx0LyogTVRGRyBpcyBvcHRpb25hbCAqL1xuIDIyMjpcdFx0cmV0ID0gbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210ZmcoZGV2LCAodTggKiopXHUwMDI2YXNhci1cdTAwM2VmZyk7XG4gMjIzOlx0XHRpZiAocmV0KSB7XG4gMjI0Olx0XHRcdGRldm1fa2ZyZWUoZGV2LVx1MDAzZW10NzYuZGV2LCBhc2FyLVx1MDAzZWZnKTtcbiAyMjU6XHRcdFx0YXNhci1cdTAwM2VmZyA9IE5VTEw7XG4gMjI2Olx0XHR9XG4gMjI3Olx0XHRkZXYtXHUwMDNlcGh5LmFjcGlzYXIgPSBhc2FyO1xuIDIyODpcdFxuIDIyOTpcdFx0cmV0dXJuIDA7XG4gMjMwOlx0fVxuIDIzMTpcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeF9pbml0X2FjcGlfc2FyKTtcbiAyMzI6XHRcbiAyMzM6XHRzdGF0aWMgczhcbiAyMzQ6XHRtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxuIDIzNTpcdFx0XHRcdGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsIHM4IGR5bl9wb3dlcilcbiAyMzY6XHR7XG4gMjM3Olx0XHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphc2FyID0gcGh5LVx1MDAzZWFjcGlzYXI7XG4gMjM4Olx0XHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvX2JhbmQgKmJhbmRfcHdyO1xuIDIzOTpcdFx0czggZ2VvX3Bvd2VyO1xuIDI0MDpcdFx0dTggaWR4LCBtYXg7XG4gMjQxOlx0XG4gMjQyOlx0XHRpZiAoIWFzYXItXHUwMDNlZ2VvKVxuIDI0MzpcdFx0XHRyZXR1cm4gZHluX3Bvd2VyO1xuIDI0NDpcdFxuIDI0NTpcdFx0c3dpdGNoIChwaHktXHUwMDNlbXQ3Ni1cdTAwM2VkZXYtXHUwMDNlcmVnaW9uKSB7XG4gMjQ2Olx0XHRjYXNlIE5MODAyMTFfREZTX0ZDQzpcbiAyNDc6XHRcdFx0aWR4ID0gMDtcbiAyNDg6XHRcdFx0YnJlYWs7XG4gMjQ5Olx0XHRjYXNlIE5MODAyMTFfREZTX0VUU0k6XG4gMjUwOlx0XHRcdGlkeCA9IDE7XG4gMjUxOlx0XHRcdGJyZWFrO1xuIDI1MjpcdFx0ZGVmYXVsdDogLyogV1cgKi9cbiAyNTM6XHRcdFx0aWR4ID0gMjtcbiAyNTQ6XHRcdFx0YnJlYWs7XG4gMjU1Olx0XHR9XG4gMjU2Olx0XG4gMjU3Olx0XHRpZiAoYXNhci1cdTAwM2V2ZXIgPT0gMSkge1xuIDI1ODpcdFx0XHRiYW5kX3B3ciA9IFx1MDAyNmFzYXItXHUwMDNlZ2VvLVx1MDAzZXRibFtpZHhdLmJhbmRbMF07XG4gMjU5Olx0XHRcdG1heCA9IEFSUkFZX1NJWkUoYXNhci1cdTAwM2VnZW8tXHUwMDNldGJsW2lkeF0uYmFuZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTkyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3IgRnVuY3Rpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cmAgc3RhcnRzIHdpdGggYSBjcml0aWNhbCBjaGVjazogYGlmICghYXNhci0mZ3Q7Z2VvKSByZXR1cm4gZHluX3Bvd2VyO2AuIFNvLCBpZiBgYXNhci0mZ3Q7Z2VvYCBpc24mIzM5O3Qgc2V0LCBpdCBpbW1lZGlhdGVseSByZXR1cm5zIGBkeW5fcG93ZXJgLiBNYWtlcyBzZW5zZSDigJMgaWYgd2UgZG9uJiMzOTt0IGhhdmUgZ2VvLWxvY2F0aW9uIGRhdGEsIHdlIGZhbGwgYmFjayB0byBhIGR5bmFtaWMgcG93ZXIgc2V0dGluZy4gQnV0LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyBob3cgYGFzYXItJmd0O2dlb2AgZ2V0cyBwb3B1bGF0ZWQuCgpJdCBhcHBlYXJzIGBhc2FyLSZndDtnZW9gIGlzIG9ubHkgaW5pdGlhbGl6ZWQgaWYgYG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzYCBpcyBzdWNjZXNzZnVsLiBBbmQgKnRoYXQqIGZ1bmN0aW9uIGlzIGNhbGxpbmcgYW4gQUNQSSBtZXRob2QgY2FsbGVkICYjMzQ7TVRHUyYjMzQ7IG9uIHRoZSBBQ1BJIGhhbmRsZSBhc3NvY2lhdGVkIHdpdGggYG1kZXYtJmd0O2RldmAuIE9rYXksIHNvIHdlJiMzOTtyZSByZWx5aW5nIG9uIEFDUEkgdG8gcHJvdmlkZSB0aGUgZ2VvZ3JhcGhpY2FsIHBvd2VyIGRhdGEuIFRoYXQmIzM5O3MgYSByZWFzb25hYmxlIGFwcHJvYWNoLCBhc3N1bWluZyB0aGUgQUNQSSB0YWJsZXMgYXJlIHByb3Blcmx5IGNvbmZpZ3VyZWQgb24gdGhlIHN5c3RlbS4KCk5vdywgSSBuZWVkIHRvIGJlICphYnNvbHV0ZWx5KiBzdXJlIG9mIHRoaXMgbG9naWMuIEkgbmVlZCB0byBiZSAxMDAlIHN1cmUgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBwbGFjZXMgd2hlcmUgYGFzYXItJmd0O2dlb2AsIGBhc2FyLSZndDtkeW5gLCBvciBldmVuIGp1c3QgdGhlIGBhc2FyYCBzdHJ1Y3R1cmUgaXRzZWxmLCBnZXRzIG1vZGlmaWVkLiBBbnkgb3RoZXIgbW9kaWZpY2F0aW9uIGNvdWxkIGFmZmVjdCB0aGUgZmxvdyBvZiB0aGlzIGNvZGUuIEl0IGNvdWxkIGNhdXNlIHJhY2UgY29uZGl0aW9ucy4gSXQgY291bGQgY2F1c2UgdGhlIGdlby1sb2NhdGlvbiBzeXN0ZW0gdG8gcmV0dXJuIGluY29ycmVjdCB2YWx1ZXMuIFRpbWUgdG8gZG8gYSB0aG9yb3VnaCBzZWFyY2ggZm9yIGFueSBvdGhlciB1c2FnZSBvZiBgYWNwaXNhcmAgb3IgYGdlb2Agd2l0aGluIHRoZSBgbXQ3NmAgY29kZWJhc2UuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgYW55IG90aGVyIHBsYWNlcyB3aGVyZSB0aGVzZSB2YXJpYWJsZXMgbWF5IGJlIGdldHRpbmcgc2V0IG9yIG1vZGlmaWVkIHRvIHZlcmlmeSB0aGlzIGxvZ2ljLiBBIGJyb2FkIHNlYXJjaCB3b3VsZCBpbnZvbHZlIHNlYXJjaGluZyBmb3IgYWxsIGluc3RhbmNlcyBvZiAmIzM0O2FjcGlzYXImIzM0OyBhbmQgJiMzNDtnZW8mIzM0OyBpbiBgbXQ3NmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FjcGlzYXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg9MjA0PXN0cnVjdCBtdDc5MnhfcGh5IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTIyOC0jaWZkZWYgQ09ORklHX0FDUElcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6MjI5Olx0dm9pZCAqYWNwaXNhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMjMwLSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MTkzPWludCBtdDc5MnhfaW5pdF9hY3BpX3NhcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjI2LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoyMjc6XHRkZXYtXHUwMDNlcGh5LmFjcGlzYXIgPSBhc2FyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMjgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0yMzQ9bXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIzNi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjIzNzpcdHN0cnVjdCBtdDc5MnhfYWNwaV9zYXIgKmFzYXIgPSBwaHktXHUwMDNlYWNwaXNhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjM4LVx0c3RydWN0IG10NzkyeF9hc2FyX2dlb19iYW5kICpiYW5kX3B3cjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTI5Nz1tdDc5MnhfYXNhcl9yYW5nZV9wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTMwMS1cdGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9zYXJfY2FwYSAqY2FwYSA9IHBoeS1cdTAwM2VtdDc2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LVx1MDAzZXNhcl9jYXBhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozMDI6XHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphc2FyID0gcGh5LVx1MDAzZWFjcGlzYXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTMwMy1cdHU4ICpsaW1pdCwgYmFuZCwgbWF4O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MzMxPWludCBtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBib29sIHNldF9kZWZhdWx0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozMzY6XHRpZiAoIXBoeS1cdTAwM2VhY3Bpc2FyIHx8ICEoKHN0cnVjdCBtdDc5MnhfYWNwaV9zYXIgKilwaHktXHUwMDNlYWNwaXNhciktXHUwMDNlZHluKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zMzctXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MzU4PXU4IG10NzkyeF9hY3BpX2dldF9mbGFncyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNTkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozNjA6XHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphY3Bpc2FyID0gcGh5LVx1MDAzZWFjcGlzYXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM2MS1cdHN0cnVjdCBtdDc5MnhfYXNhcl9mZyAqZmc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjM3MjpcdGlmICghYWNwaXNhcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzczLVx0XHRyZXR1cm4gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozNzU6XHRmZyA9IGFjcGlzYXItXHUwMDNlZmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM3Ni1cdGlmICghZmcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz00Mjc9bXQ3OTJ4X2FjcGlfcGFyc2VfbXRjbF90YmxfdjMoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy00Mjgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzo0Mjk6XHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICpzYXIgPSBwaHktXHUwMDNlYWNwaXNhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtNDMwLVx0c3RydWN0IG10NzkyeF9hc2FyX2NsX3YzICpjbCA9IHNhci1cdTAwM2Vjb3VudHJ5bGlzdF92Mztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTQ1Nj1tdDc5MnhfYWNwaV9wYXJzZV9tdGNsX3RibChzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBjaGFyICphbHBoYTIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTQ1Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjQ1ODpcdHN0cnVjdCBtdDc5MnhfYWNwaV9zYXIgKnNhciA9IHBoeS1cdTAwM2VhY3Bpc2FyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy00NTktXHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfY2wgKmNsID0gc2FyLVx1MDAzZWNvdW50cnlsaXN0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9NDc5PXUzMiBtdDc5MnhfYWNwaV9nZXRfbXRjbF9jb25mKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGNoYXIgKmFscGhhMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtNDgwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6NDgxOlx0c3RydWN0IG10NzkyeF9hY3BpX3NhciAqc2FyID0gcGh5LVx1MDAzZWFjcGlzYXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTQ4Mi1cdHUzMiBjb25maWcgPSAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTA3OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gdGhlIEhhcmR3YXJlIExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBjbGFyaWZ5IHRoZSBzcGVjaWZpY3Mgb2Ygd2hhdCB0aGUgTVQ3OTIxIGFuZCBNVDc5MjUgY2hpcHNldHMgYWN0dWFsbHkgc3VwcG9ydCBmcm9tIGEgaGFyZHdhcmUgc3RhbmRwb2ludC4gQmV5b25kIHRoYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBtdDc2LCBtdDc5MjEsIGFuZCBtdDc5MjUgZGVzaWduYXRpb25zIGV4Y2x1c2l2ZWx5IHJlZmVyIHRvIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGlmIHRoZXJlJiMzOTtzIG1vcmUgdG8gaXQgdGhhbiBtZWV0cyB0aGUgZXllLiBNeSBuZXh0IHN0ZXAgaW52b2x2ZXMgZGl2aW5nIGludG8gdGhlIEtjb25maWcgZmlsZXMgZm9yIE1UNzkyMSwgTVQ3OTI1LCBhbmQgTVQ3Ni4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGVpciBjYXBhYmlsaXRpZXMgYW5kIHJlbGF0aW9uc2hpcHMgd2l0aGluIHRoZSBjb25maWd1cmF0aW9uIGZyYW1ld29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzkyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9Mjg9Y29uZmlnIE1UNzZfQ09OTkFDX0xJQlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzozMjpjb25maWcgTVQ3OTJ4X0xJQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMzLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MzY6Y29uZmlnIE1UNzkyeF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zNy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyOmNvbmZpZyBNVDc5MjFfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Nzpjb25maWcgTVQ3OTIxRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy04LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTIxRSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjE3OmNvbmZpZyBNVDc5MjFTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTIxUyAoU0RJTykgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI4OmNvbmZpZyBNVDc5MjFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyOmNvbmZpZyBNVDc5MjVfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Nzpjb25maWcgTVQ3OTI1RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy04LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjE5OmNvbmZpZyBNVDc5MjVVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjUyCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBVU0IgRHJpdmVyIFNBUiBDb21wYXRpYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZSBNVDc5MjFVIGFuZCBNVDc5MjVVIGRyaXZlcnMsIGtub3dpbmcgdGhleSYjMzk7cmUgVVNCLWJhc2VkLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgd2hldGhlciBVU0IgZGV2aWNlcyBjYW4gZXZlbiAqaGF2ZSogQUNQSSBTQVIgY29uc2lkZXJhdGlvbnMuIEl0IHNlZW1zIGEgYml0IHVudXN1YWwsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlIHRvIGNvbmZpcm0gb25lIHdheSBvciB0aGUgb3RoZXIuIE15IGZpcnN0IHN0ZXAgd2lsbCBiZSB0byBleGFtaW5lIHRoZSBgbXQ3OTIxdV9wcm9iZWAgYW5kIGBtdDc5MjV1X3Byb2JlYCBmdW5jdGlvbnMsIG9yIHBlcmhhcHMgYG10NzkyMV9yZWdpc3Rlcl9kZXZpY2VgLCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55dGhpbmcgcmVsYXRlZCB0byBTQVIgb3IgcG93ZXIgbWFuYWdlbWVudCB3aXRoaW4gdGhlIFVTQiBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gcm91dGluZXMuIFNpbmNlIEkmIzM5O20gd29ya2luZyB3aXRoIHRoZSBNVDc5MjEgc3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBmb2N1cyBteSBpbml0aWFsIGV4YW1pbmF0aW9uIG9uIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuY2AuIFRoYXQgc2VlbXMgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBsb29raW5nIGZvciByZWxhdGVkIGNvZGUuIEZyb20gdGhlcmUsIEkmIzM5O2xsIHNlZSB3aGVyZSB0byBnbyBuZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNTA6XHRcdHJldHVybiAwO1xuIDI1MTpcdFxuIDI1MjpcdGVycm9yOlxuIDI1MzpcdFx0bXQ3NnVfcXVldWVzX2RlaW5pdChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMjU0Olx0XHRtdDc5Mnh1X3Jlc2V0X3dvcmtfY2xlYW51cChkZXYpO1xuIDI1NTpcdFxuIDI1NjpcdFx0dXNiX3NldF9pbnRmZGF0YSh1c2JfaW50ZiwgTlVMTCk7XG4gMjU3Olx0XG4gMjU4Olx0XHRtdDc2X2ZyZWVfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbiAyNTk6XHRcbiAyNjA6XHRcdHJldHVybiByZXQ7XG4gMjYxOlx0fVxuIDI2MjpcdFxuIDI2MzpcdCNpZmRlZiBDT05GSUdfUE1cbiAyNjQ6XHRzdGF0aWMgaW50IG10NzkyMXVfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IHN0YXRlKVxuIDI2NTpcdHtcbiAyNjY6XHRcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xuIDI2NzpcdFx0c3RydWN0IG10NzZfY29ubmFjX3BtICpwbSA9IFx1MDAyNmRldi1cdTAwM2VwbTtcbiAyNjg6XHRcdGludCBlcnI7XG4gMjY5Olx0XG4gMjcwOlx0XHRwbS1cdTAwM2VzdXNwZW5kZWQgPSB0cnVlO1xuIDI3MTpcdFx0Zmx1c2hfd29yayhcdTAwMjZkZXYtXHUwMDNlcmVzZXRfd29yayk7XG4gMjcyOlx0XG4gMjczOlx0XHRlcnIgPSBtdDc2X2Nvbm5hY19tY3Vfc2V0X2hpZl9zdXNwZW5kKFx1MDAyNmRldi1cdTAwM2VtdDc2LCB0cnVlLCB0cnVlKTtcbiAyNzQ6XHRcdGlmIChlcnIpXG4gMjc1Olx0XHRcdGdvdG8gZmFpbGVkO1xuIDI3NjpcdFxuIDI3NzpcdFx0bXQ3NnVfc3RvcF9yeChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMjc4Olx0XHRtdDc2dV9zdG9wX3R4KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbiAyNzk6XHRcbiAyODA6XHRcdHJldHVybiAwO1xuIDI4MTpcdFxuIDI4MjpcdGZhaWxlZDpcbiAyODM6XHRcdHBtLVx1MDAzZXN1c3BlbmRlZCA9IGZhbHNlO1xuIDI4NDpcdFxuIDI4NTpcdFx0aWYgKGVyciBcdTAwM2MgMClcbiAyODY6XHRcdFx0bXQ3OTJ4X3Jlc2V0KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbiAyODc6XHRcbiAyODg6XHRcdHJldHVybiBlcnI7XG4gMjg5Olx0fVxuIDI5MDpcdFxuIDI5MTpcdHN0YXRpYyBpbnQgbXQ3OTIxdV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4gMjkyOlx0e1xuIDI5MzpcdFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XG4gMjk0Olx0XHRzdHJ1Y3QgbXQ3Nl9jb25uYWNfcG0gKnBtID0gXHUwMDI2ZGV2LVx1MDAzZXBtO1xuIDI5NTpcdFx0Ym9vbCByZWluaXQgPSB0cnVlO1xuIDI5NjpcdFx0aW50IGVyciwgaTtcbiAyOTc6XHRcbiAyOTg6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIDEwOyBpJiM0MzsmIzQzOykge1xuIDI5OTpcdFx0XHR1MzIgdmFsID0gbXQ3Nl9ycihkZXYsIE1UX1dGX1NXX0RFRl9DUl9VU0JfTUNVX0VWRU5UKTtcbiAzMDA6XHRcbiAzMDE6XHRcdFx0aWYgKCEodmFsIFx1MDAyNiBNVF9XRl9TV19TRVJfVFJJR0dFUl9TVVNQRU5EKSkge1xuIDMwMjpcdFx0XHRcdHJlaW5pdCA9IGZhbHNlO1xuIDMwMzpcdFx0XHRcdGJyZWFrO1xuIDMwNDpcdFx0XHR9XG4gMzA1Olx0XHRcdGlmICh2YWwgXHUwMDI2IE1UX1dGX1NXX1NFUl9ET05FX1NVU1BFTkQpIHtcbiAzMDY6XHRcdFx0XHRtdDc2X3dyKGRldiwgTVRfV0ZfU1dfREVGX0NSX1VTQl9NQ1VfRVZFTlQsIDApO1xuIDMwNzpcdFx0XHRcdGJyZWFrO1xuIDMwODpcdFx0XHR9XG4gMzA5Olx0XG4gMzEwOlx0XHRcdG1zbGVlcCgyMCk7XG4gMzExOlx0XHR9XG4gMzEyOlx0XG4gMzEzOlx0XHRpZiAocmVpbml0IHx8IG10NzkyeF9kbWFfbmVlZF9yZWluaXQoZGV2KSkge1xuIDMxNDpcdFx0XHRlcnIgPSBtdDc5Mnh1X2RtYV9pbml0KGRldiwgdHJ1ZSk7XG4gMzE1Olx0XHRcdGlmIChlcnIpXG4gMzE2Olx0XHRcdFx0Z290byBmYWlsZWQ7XG4gMzE3Olx0XHR9XG4gMzE4Olx0XG4gMzE5Olx0XHRlcnIgPSBtdDc2dV9yZXN1bWVfcngoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuIDMyMDpcdFx0aWYgKGVyciBcdTAwM2MgMClcbiAzMjE6XHRcdFx0Z290byBmYWlsZWQ7XG4gMzIyOlx0XG4gMzIzOlx0XHRlcnIgPSBtdDc2X2Nvbm5hY19tY3Vfc2V0X2hpZl9zdXNwZW5kKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBmYWxzZSwgdHJ1ZSk7XG4gMzI0Olx0ZmFpbGVkOlxuIDMyNTpcdFx0cG0tXHUwMDNlc3VzcGVuZGVkID0gZmFsc2U7XG4gMzI2Olx0XG4gMzI3Olx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuIDMyODpcdFx0XHRtdDc5MnhfcmVzZXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuIDMyOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTc4OQoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBzbmlwcGV0LCBmcmFtZWQgYXMgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3OTIxVSBEcml2ZXIgUHJvYmUgYW5kIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBzdGFydGluZyB3aXRoIGBtdDc5MjF1X3Byb2JlYC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQsIHRoZSBmaXJzdCBwbGFjZSB0aGUgZHJpdmVyIGdldHMgaW52b2x2ZWQgd2l0aCB0aGUgZGV2aWNlLiBOYXR1cmFsbHksIHRoZSBuZXh0IGNhbGwgaXMgdG8gYG10NzkyMXVfaW5pdGAsIHRoZSBtYWluIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiBUbyB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgc3lzdGVtIGlzIHNldHRpbmcgdXAgdGhlIGNoaXAuCgpMZXQmIzM5O3MgcXVpY2tseSBqdW1wIGludG8gdGhlIGNvZGUuIExpbmVzIDIwMCB0aHJvdWdoIDI1MCBpbiBgbXQ3OTIxL3VzYi5jYCBzaG91bGQgZ2l2ZSBtZSBhIHByZXR0eSBnb29kIG92ZXJ2aWV3IG9mIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGR1cmluZyB0aGUgaW5pdGlhbCBzZXR1cC4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIHRoaW5ncyBsaWtlIGRldmljZSByZXNvdXJjZSBhbGxvY2F0aW9uLCBwb3RlbnRpYWxseSBzb21lIGJhc2ljIGhhcmR3YXJlIHJlc2V0cywgYW5kIG1heWJlIHRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gb2YgdGhlIFVTQiBlbmRwb2ludHMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHJlZ2lzdGVyIGFjY2VzcyBwYXR0ZXJucyBhbmQgbWVtb3J5IGFsbG9jYXRpb25zIC0gdGhvc2UgYXJlIGFsd2F5cyBnb29kIGluZGljYXRvcnMgb2YgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcgd2l0aGluIHRob3NlIGxpbmVzLiBUaGF0JiMzOTtzIGEgY3JpdGljYWwgYXJlYSBmb3IgZGV2aWNlIHByb2JpbmcsIHdoZXJlIHRoaW5ncyBjYW4gZ28gd3JvbmcgaWYgdGhlIGRldmljZSBpc24mIzM5O3QgcHJvcGVybHkgY29ubmVjdGVkIG9yIHN1cHBvcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjAwOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDIwMTpcdFxuIDIwMjpcdFx0ZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcbiAyMDM6XHRcdGRldi1cdTAwM2Vmd19mZWF0dXJlcyA9IGZlYXR1cmVzO1xuIDIwNDpcdFx0ZGV2LVx1MDAzZWhpZl9vcHMgPSBcdTAwMjZoaWZfb3BzO1xuIDIwNTpcdFx0YXRvbWljX3NldChcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5idXNfaHVuZywgZmFsc2UpO1xuIDIwNjpcdFx0bXQ3OTJ4dV9yZXNldF93b3JrX2luaXQoZGV2KTtcbiAyMDc6XHRcbiAyMDg6XHRcdHVzYl9yZXNldF9kZXZpY2UodWRldik7XG4gMjA5Olx0XG4gMjEwOlx0XHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBkZXYpO1xuIDIxMTpcdFxuIDIxMjpcdFx0cmV0ID0gX19tdDc2dV9pbml0KG1kZXYsIHVzYl9pbnRmLCBcdTAwMjZidXNfb3BzKTtcbiAyMTM6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gMjE0Olx0XHRcdGdvdG8gZXJyb3I7XG4gMjE1Olx0XG4gMjE2Olx0XHRtZGV2LVx1MDAzZXJldiA9IChtdDc2X3JyKGRldiwgTVRfSFdfQ0hJUElEKSBcdTAwM2NcdTAwM2MgMTYpIHxcbiAyMTc6XHRcdFx0ICAgIChtdDc2X3JyKGRldiwgTVRfSFdfUkVWKSBcdTAwMjYgMHhmZik7XG4gMjE4Olx0XHRkZXZfZGJnKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtBU0lDIHJldmlzaW9uOiAlMDR4XFxuXCYjMzQ7LCBtZGV2LVx1MDAzZXJldik7XG4gMjE5Olx0XG4gMjIwOlx0XHRpZiAobXQ3Nl9nZXRfZmllbGQoZGV2LCBNVF9DT05OX09OX01JU0MsIE1UX1RPUF9NSVNDMl9GV19OOV9SRFkpKSB7XG4gMjIxOlx0XHRcdHJldCA9IG10NzkyeHVfd2ZzeXNfcmVzZXQoZGV2KTtcbiAyMjI6XHRcdFx0aWYgKHJldClcbiAyMjM6XHRcdFx0XHRnb3RvIGVycm9yO1xuIDIyNDpcdFx0fVxuIDIyNTpcdFxuIDIyNjpcdFx0cmV0ID0gbXQ3OTJ4dV9tY3VfcG93ZXJfb24oZGV2KTtcbiAyMjc6XHRcdGlmIChyZXQpXG4gMjI4Olx0XHRcdGdvdG8gZXJyb3I7XG4gMjI5Olx0XG4gMjMwOlx0XHRyZXQgPSBtdDc2dV9hbGxvY19tY3VfcXVldWUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuIDIzMTpcdFx0aWYgKHJldClcbiAyMzI6XHRcdFx0Z290byBlcnJvcjtcbiAyMzM6XHRcbiAyMzQ6XHRcdHJldCA9IG10NzZ1X2FsbG9jX3F1ZXVlcyhcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMjM1Olx0XHRpZiAocmV0KVxuIDIzNjpcdFx0XHRnb3RvIGVycm9yO1xuIDIzNzpcdFxuIDIzODpcdFx0cmV0ID0gbXQ3OTJ4dV9kbWFfaW5pdChkZXYsIGZhbHNlKTtcbiAyMzk6XHRcdGlmIChyZXQpXG4gMjQwOlx0XHRcdGdvdG8gZXJyb3I7XG4gMjQxOlx0XG4gMjQyOlx0XHRodyA9IG10NzZfaHcoZGV2KTtcbiAyNDM6XHRcdC8qIGNoZWNrIGh3IHNnIHN1cHBvcnQgaW4gb3JkZXIgdG8gZW5hYmxlIEFNU0RVICovXG4gMjQ0Olx0XHRody1cdTAwM2VtYXhfdHhfZnJhZ21lbnRzID0gbWRldi1cdTAwM2V1c2Iuc2dfZW4gPyBNVF9IV19UWFBfTUFYX0JVRl9OVU0gOiAxO1xuIDI0NTpcdFxuIDI0NjpcdFx0cmV0ID0gbXQ3OTIxX3JlZ2lzdGVyX2RldmljZShkZXYpO1xuIDI0NzpcdFx0aWYgKHJldClcbiAyNDg6XHRcdFx0Z290byBlcnJvcjtcbiAyNDk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI5NTUKCQkJCQkJCW91dHB1dDogMTM5CgkJCQkJCQl0aG91Z2h0czogMjY0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgTVQ3OTJ4IEFDUEkgU0FSIFBvd2VyIENhbGN1bGF0aW9uIENvZGUgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGNvZGUgaW4gYG10NzkyeF9hY3BpX3Nhci5jYCBpcyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgU3BlY2lmaWMgQWJzb3JwdGlvbiBSYXRlIChTQVIpIHBvd2VyIGNhbGN1bGF0aW9ucyBmb3IgTWVkaWFUZWsgTVQ3OTJ4IFdpLUZpIGRldmljZXMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBtdDc2YCB3aXJlbGVzcyBkcml2ZXIuIFRoZSBpbml0aWFsIGNhbGwgaXMgdHJpZ2dlcmVkIGJ5IGBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlYCB3aGljaCBjYWxscyBgbXQ3OTJ4X2luaXRfYWNwaV9zYXJgLiAgVGhpcyBmdW5jdGlvbiBjYWxscyBzZXZlcmFsIEFDUEkgcmVhZCBmdW5jdGlvbnMsIG5hbWVseSBgbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Y2xgLCBgbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210ZHNgLCBgbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Z3NgLCBhbmQgYG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGZnYCB3aGljaCBhdHRlbXB0IHRvIHJlYWQgcHJvcHJpZXRhcnkgTWVkaWFUZWsgQUNQSSBtZXRob2RzIHN1Y2ggYXMgYE1UQ0xgLCBgTVREU2AsIGBNVEdTYCwgYW5kIGBNVEZHYCBmcm9tIHRoZSBBQ1BJIERTRFQvU1NEVCB0YWJsZXMuIFRoZXNlIGZ1bmN0aW9ucyBhbGwgY2FsbCBgbXQ3OTJ4X2FjcGlfcmVhZGAsIHdoaWNoIGF0dGVtcHRzIHRvIHJldHJpZXZlIGFuIEFDUEkgaGFuZGxlIGZyb20gdGhlIGRldmljZS4KCk5vdywgaGVyZSYjMzk7cyB0aGUgY3J1Y2lhbCBwb2ludDogSSBrbm93IHRoYXQgaW4gc3RhbmRhcmQgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSkgZW52aXJvbm1lbnRzLCB3aGljaCBhcmUgd2hhdCB3ZSB1c2UgZm9yIGZ1enppbmcsIHRoZXNlIE1lZGlhVGVrLXNwZWNpZmljIEFDUEkgbWV0aG9kcyBzaW1wbHkgKmRvbiYjMzk7dCBleGlzdCouIFFFTVUgZ2VuZXJhdGVzIGl0cyBvd24gQUNQSSB0YWJsZXMgZm9yIGVtdWxhdGVkIGRldmljZXMsIGFuZCB0aGVzZSB0YWJsZXMgY29udGFpbiBzdGFuZGFyZCBBQ1BJIG9iamVjdHMsIGJ1dCBub3QgdGhlIE1lZGlhVGVrIHByb3ByaWV0YXJ5IG9uZXMuICBFdmVuIGlmIHdlIHdlcmUgdG8gZW11bGF0ZSBhIFVTQiBvciBQQ0llIGRldmljZSwgdGhlIEFDUEkgdGFibGVzIGNvbnRhaW5pbmcgYE1UQ0xgLCBgTVREU2AsIGFuZCBmcmllbmRzIGFyZSBkZWZpbmVkIG9uIHJlYWwtd29ybGQgTWVkaWFUZWsgT0VNIGhhcmR3YXJlLCBzdWNoIGFzIG9uIGxhcHRvcHMgZnJvbSBBU1VTLCBMZW5vdm8sIG9yIEhQLiBUaGVyZWZvcmUsIGBtdDc5MnhfYWNwaV9yZWFkYCBpcyBhbHdheXMgZ29pbmcgdG8gZmFpbCB3aXRoIGAtRU9QTk9UU1VQUGAgb3IgYC1FSU9gLiBUaGlzIHRoZW4gbWVhbnMgdGhhdCB0aGUgY29ycmVzcG9uZGluZyBgYXNhci0mZ3Q7ZHluYCwgYGFzYXItJmd0O2dlb2AsIGBhc2FyLSZndDtjb3VudHJ5bGlzdGAgYW5kIGBhc2FyLSZndDtmZ2Agd2lsbCBiZSBOVUxMLgoKVGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyBgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3JgIGFuZCBgbXQ3OTJ4X2FzYXJfcmFuZ2VfcHdyYC4gVGhlIGNyaXRpY2FsIGZhY3RvciBpcyB0aGVpciBjYWxsaW5nIGNvbnRleHQuIEJvdGggdGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBieSBgbXQ3OTJ4X2luaXRfYWNwaV9zYXJfcG93ZXIoKWAuIEJ1dCB3YWl0LCBgbXQ3OTJ4X2luaXRfYWNwaV9zYXJfcG93ZXJgIGhhcyBhbiBlYXJseSByZXR1cm4gY29uZGl0aW9uOiBgaWYgKCFwaHktJmd0O2FjcGlzYXIgfHwgISgoc3RydWN0IG10NzkyeF9hY3BpX3NhciAqKXBoeS0mZ3Q7YWNwaXNhciktJmd0O2R5bikgcmV0dXJuIDA7YC4gVGhpcyBtZWFucyBpZiBgZHluYCBpcyBOVUxMLCB0aGUgZnVuY3Rpb24gaW1tZWRpYXRlbHkgcmV0dXJucyB3aXRob3V0IGV2ZXIgZXhlY3V0aW5nIGBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cmAgb3IgYG10NzkyeF9hc2FyX3JhbmdlX3B3cmAuICBSZW1lbWJlciBgZHluYCBpcyBwb3B1bGF0ZWQgdGhyb3VnaCBgbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210ZHNgIGFmdGVyIHN1Y2Nlc3NmdWxseSByZWFkaW5nIHRoZSBNVERTIHRhYmxlLgoKQ29uc2lkZXJpbmcgYWxsIHRoaXMsIGV2ZW4gaWYgd2UgKmNvdWxkKiBzb21laG93IGdldCBhIE1lZGlhVGVrIE1UNzkyMS9NVDc5MjUgUENJZS9VU0IgZGV2aWNlIHByb2JlZCBpbiBRRU1VLCB3aGljaCBpdHNlbGYgaXMgaGlnaGx5IGltcHJvYmFibGUgZHVlIHRvIHRoZSBoYXJkd2FyZS1zcGVjaWZpYyByZWdpc3RlciBhY2Nlc3MgYW5kIGZpcm13YXJlIGxvYWRpbmcgcmVxdWlyZW1lbnRzIG9mIGBtdDc5MjF1X3Byb2JlYCBvciBzaW1pbGFyIHJvdXRpbmVzLCB3ZSB3b3VsZCBzdGlsbCBmYWlsIHRvIGV4ZWN1dGUgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aC4gUUVNVSBkb2VzIG5vdCBlbXVsYXRlIHRoZSBNVDc5Mnggd2lyZWxlc3MgY2hpcHNldCwgYW5kIFFFTVUmIzM5O3MgQUNQSSB0YWJsZXMgKm5ldmVyKiBpbmNsdWRlIE1lZGlhVGVrJiMzOTtzIHByb3ByaWV0YXJ5IGBNVERTYC9gTVRHU2AgU0FSIG1ldGhvZHMuCgpDb25zZXF1ZW50bHksIHNpbmNlIHRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgYXJlIHVucmVhY2hhYmxlIGluIG91ciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cywgdGhlcmUmIzM5O3Mgbm8gbmVlZCB0byBmdXp6IHRoaXMuIEl0IGlzIGEgZGVhZCBlbmQuIE5vIG5lZWQgdG8gZW5hYmxlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBvciBmb2N1cyBvbiBhbnkgc3ltYm9scy4gVGhlIGVudGlyZSBjb2RlIHBhdGggaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEFDUEkgU0FSIChTcGVjaWZpYyBBYnNvcnB0aW9uIFJhdGUpIHBvd2VyIGxpbWl0IGhhbmRsaW5nIGluIHRoZSBNZWRpYVRlayBtdDc5Mnggd2lyZWxlc3MgZHJpdmVyIChtdDc5MnhfYWNwaV9zYXIuYykuIFRoZXNlIGNvZGUgcGF0aHMgYXJlIG9ubHkgZXhlY3V0ZWQgd2hlbiBwcm9wcmlldGFyeSBNZWRpYVRlayBBQ1BJIFNBUiBtZXRob2RzIChNVERTLCBNVEdTKSBhcmUgZXZhbHVhdGVkIGZyb20gcGxhdGZvcm0gZmlybXdhcmUgb24gcGh5c2ljYWwgaGFyZHdhcmUgd2l0aCBNZWRpYVRlayBXaS1GaSBhZGFwdGVycy4gSW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbm8gc3VjaCBBQ1BJIHRhYmxlcyBvciBoYXJkd2FyZSBhcmUgcHJlc2VudCwgbWFraW5nIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQUNQSSBTQVIgKFNwZWNpZmljIEFic29ycHRpb24gUmF0ZSkgcG93ZXIgbGltaXQgaGFuZGxpbmcgaW4gdGhlIE1lZGlhVGVrIG10NzkyeCB3aXJlbGVzcyBkcml2ZXIgKG10NzkyeF9hY3BpX3Nhci5jKS4gVGhlc2UgY29kZSBwYXRocyBhcmUgb25seSBleGVjdXRlZCB3aGVuIHByb3ByaWV0YXJ5IE1lZGlhVGVrIEFDUEkgU0FSIG1ldGhvZHMgKE1URFMsIE1UR1MpIGFyZSBldmFsdWF0ZWQgZnJvbSBwbGF0Zm9ybSBmaXJtd2FyZSBvbiBwaHlzaWNhbCBoYXJkd2FyZSB3aXRoIE1lZGlhVGVrIFdpLUZpIGFkYXB0ZXJzLiBJbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBubyBzdWNoIEFDUEkgdGFibGVzIG9yIGhhcmR3YXJlIGFyZSBwcmVzZW50LCBtYWtpbmcgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjoxODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6MTc6MDUuMDQ1MTU4ODYyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUyOTA3ODE3NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBBQ1BJIFNBUiAoU3BlY2lmaWMgQWJzb3JwdGlvbiBSYXRlKSBwb3dlciBsaW1pdCBoYW5kbGluZyBpbiB0aGUgTWVkaWFUZWsgbXQ3OTJ4IHdpcmVsZXNzIGRyaXZlciAobXQ3OTJ4X2FjcGlfc2FyLmMpLiBUaGVzZSBjb2RlIHBhdGhzIGFyZSBvbmx5IGV4ZWN1dGVkIHdoZW4gcHJvcHJpZXRhcnkgTWVkaWFUZWsgQUNQSSBTQVIgbWV0aG9kcyAoTVREUywgTVRHUykgYXJlIGV2YWx1YXRlZCBmcm9tIHBsYXRmb3JtIGZpcm13YXJlIG9uIHBoeXNpY2FsIGhhcmR3YXJlIHdpdGggTWVkaWFUZWsgV2ktRmkgYWRhcHRlcnMuIEluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG5vIHN1Y2ggQUNQSSB0YWJsZXMgb3IgaGFyZHdhcmUgYXJlIHByZXNlbnQsIG1ha2luZyB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDAyOjE3OjA1LjA0NTE2NDMzMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMwMDcxMTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjhhY2Y0OTExYjk4ZDVkZDRiMDVlOWNjMWJkZmUzZDQxOGI2NTE0Y1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IFNlcCAxMCAwMjoxNzowNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY1xcbmluZGV4IDk0NmRkNzk1NmU0YTAuLjlmMGVhM2QyM2UwZjUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmNcXG5AQCAtMjc5LDEwICsyNzksMTggQEAgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcXG4gXFx0aWYgKGlkeCBcXHUwMDNlPSBtYXgpXFxuIFxcdFxcdHJldHVybiBkeW5fcG93ZXI7XFxuIFxcbi1cXHRnZW9fcG93ZXIgPSAoYmFuZF9wd3IgKyBpZHgpLVxcdTAwM2Vwd3I7XFxuLVxcdGR5bl9wb3dlciArPSAoYmFuZF9wd3IgKyBpZHgpLVxcdTAwM2VvZmZzZXQ7XFxuK1xcdGJhbmRfcHdyICs9IGlkeDtcXG4gXFxuLVxcdHJldHVybiBtaW4oZ2VvX3Bvd2VyLCBkeW5fcG93ZXIpO1xcbitcXHQvKiBTb21lIE9FTSB0YWJsZXMgY2FycnkgMHhmZiBoZXJlOyBuYXJyb3dlZCB0byBzOCB0aGF0IGlzIC0xIGFuZFxcbitcXHQgKiB3aW5zIHRoZSBtaW4oKSBiZWxvdy4gVGFrZSBpdCBhcyBubyBsaW1pdC5cXG4rXFx0ICovXFxuK1xcdGlmIChiYW5kX3B3ci1cXHUwMDNlcHdyID09IDB4ZmYpXFxuK1xcdFxcdHJldHVybiBkeW5fcG93ZXI7XFxuK1xcbitcXHRnZW9fcG93ZXIgPSBiYW5kX3B3ci1cXHUwMDNlcHdyO1xcbitcXG4rXFx0cmV0dXJuIG1pbl90KGludCwgZ2VvX3Bvd2VyLFxcbitcXHRcXHQgICAgIG1pbl90KGludCwgZHluX3Bvd2VyICsgYmFuZF9wd3ItXFx1MDAzZW9mZnNldCwgMTI3KSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBzOFxcbkBAIC0zMTUsNyArMzIzLDkgQEAgbXQ3OTJ4X2FzYXJfcmFuZ2VfcHdyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksXFxuIFxcdGVsc2VcXG4gXFx0XFx0YmFuZCA9IE5MODAyMTFfQkFORF8yR0haO1xcbiBcXG4tXFx0cmV0dXJuIG10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHBoeSwgYmFuZCwgbGltaXRbaWR4XSk7XFxuK1xcdC8qIDB4ZmY6IG5vIGR5bmFtaWMgbGltaXQsIHNlZSBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cigpICovXFxuK1xcdHJldHVybiBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cihwaHksIGJhbmQsXFxuK1xcdFxcdFxcdFxcdCAgICAgICBsaW1pdFtpZHhdID09IDB4ZmYgPyAxMjcgOiBsaW1pdFtpZHhdKTtcXG4gfVxcbiBcXG4gaW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDAyOjE3OjA1LjU3NTg2MDE1NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NzQ3NjAwNjg1MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEFDUEkgU0FSIChTcGVjaWZpYyBBYnNvcnB0aW9uIFJhdGUpIHBvd2VyIGxpbWl0IGhhbmRsaW5nIGluIHRoZSBNZWRpYVRlayBtdDc5Mnggd2lyZWxlc3MgZHJpdmVyIChtdDc5MnhfYWNwaV9zYXIuYykuIFRoZXNlIGNvZGUgcGF0aHMgYXJlIG9ubHkgZXhlY3V0ZWQgd2hlbiBwcm9wcmlldGFyeSBNZWRpYVRlayBBQ1BJIFNBUiBtZXRob2RzIChNVERTLCBNVEdTKSBhcmUgZXZhbHVhdGVkIGZyb20gcGxhdGZvcm0gZmlybXdhcmUgb24gcGh5c2ljYWwgaGFyZHdhcmUgd2l0aCBNZWRpYVRlayBXaS1GaSBhZGFwdGVycy4gSW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbm8gc3VjaCBBQ1BJIHRhYmxlcyBvciBoYXJkd2FyZSBhcmUgcHJlc2VudCwgbWFraW5nIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2OGFjZjQ5MTFiOThkNWRkNGIwNWU5Y2MxYmRmZTNkNDE4YjY1MTRjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMDI6MTc6MDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY1xuaW5kZXggOTQ2ZGQ3OTU2ZTRhMC4uOWYwZWEzZDIzZTBmNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmNcbkBAIC0yNzksMTAgKzI3OSwxOCBAQCBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxuIFx0aWYgKGlkeCBcdTAwM2U9IG1heClcbiBcdFx0cmV0dXJuIGR5bl9wb3dlcjtcbiBcbi1cdGdlb19wb3dlciA9IChiYW5kX3B3ciArIGlkeCktXHUwMDNlcHdyO1xuLVx0ZHluX3Bvd2VyICs9IChiYW5kX3B3ciArIGlkeCktXHUwMDNlb2Zmc2V0O1xuK1x0YmFuZF9wd3IgKz0gaWR4O1xuIFxuLVx0cmV0dXJuIG1pbihnZW9fcG93ZXIsIGR5bl9wb3dlcik7XG4rXHQvKiBTb21lIE9FTSB0YWJsZXMgY2FycnkgMHhmZiBoZXJlOyBuYXJyb3dlZCB0byBzOCB0aGF0IGlzIC0xIGFuZFxuK1x0ICogd2lucyB0aGUgbWluKCkgYmVsb3cuIFRha2UgaXQgYXMgbm8gbGltaXQuXG4rXHQgKi9cbitcdGlmIChiYW5kX3B3ci1cdTAwM2Vwd3IgPT0gMHhmZilcbitcdFx0cmV0dXJuIGR5bl9wb3dlcjtcbitcbitcdGdlb19wb3dlciA9IGJhbmRfcHdyLVx1MDAzZXB3cjtcbitcbitcdHJldHVybiBtaW5fdChpbnQsIGdlb19wb3dlcixcbitcdFx0ICAgICBtaW5fdChpbnQsIGR5bl9wb3dlciArIGJhbmRfcHdyLVx1MDAzZW9mZnNldCwgMTI3KSk7XG4gfVxuIFxuIHN0YXRpYyBzOFxuQEAgLTMxNSw3ICszMjMsOSBAQCBtdDc5MnhfYXNhcl9yYW5nZV9wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcbiBcdGVsc2VcbiBcdFx0YmFuZCA9IE5MODAyMTFfQkFORF8yR0haO1xuIFxuLVx0cmV0dXJuIG10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHBoeSwgYmFuZCwgbGltaXRbaWR4XSk7XG4rXHQvKiAweGZmOiBubyBkeW5hbWljIGxpbWl0LCBzZWUgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3IoKSAqL1xuK1x0cmV0dXJuIG10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHBoeSwgYmFuZCxcbitcdFx0XHRcdCAgICAgICBsaW1pdFtpZHhdID09IDB4ZmYgPyAxMjcgOiBsaW1pdFtpZHhdKTtcbiB9XG4gXG4gaW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjoxNzowNS41NzU4NjI5MDNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NTA0Mjk1Mzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgQ29kZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBwYXRjaCBpcyBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiUmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoaXMgY29kZSBiZWZvcmUgSSBjYW4gYXNzZXNzIGl0cyBpbXBhY3QuXCIgTXkgZXhwZXJ0IGluc3RpbmN0IGlzIHRvIGRpc3NlY3QgdGhpcyBwaWVjZSBieSBwaWVjZS5cblxuRmlyc3QsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgZXhhY3QgZHJpdmVyIGluIHF1ZXN0aW9uLiBcIk1UNzkyeFwiIHN1Z2dlc3RzIE1lZGlhVGVrLCBzbyB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBzcGVjaWZpYyBkcml2ZXIgaXMgdXRpbGl6ZWQuIElzIGl0IGZvciBhIHBoeXNpY2FsIGhhcmR3YXJlIGludGVyZmFjZSBsaWtlIFBDSWUsIFVTQiwgU0RJTywgb3IgaXMgaXQgYW4gaW50ZWdyYXRlZCBTb0Mgc29sdXRpb24/IERvZXMgaXQgaGF2ZSBhbnkgaW1wbGljYXRpb25zIGZvciB2aXJ0dWFsaXphdGlvbiwgbGlrZSBRRU1VLCBvciBldmVuIGNsb3VkLW5hdGl2ZSBlbnZpcm9ubWVudHM/IFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgd2hlcmUgdGhpcyBwYXRjaCBtaWdodCBiZSByZWxldmFudCBhbmQgaWYgaXQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIGFueSBjb21wYXRpYmlsaXR5IGlzc3VlcyBpbiB2aXJ0dWFsaXplZCBzZXR1cHMsIHdoaWNoIGlzIGFsd2F5cyBhIGNvbmNlcm4uXG5cblRvIGFjaGlldmUgdGhhdCwgSSB3aWxsIGltbWVkaWF0ZWx5IGxldmVyYWdlIGBncmVwcGVyYCBhbmQgYHJlYWQtZmlsZWAgdG8gZ2V0IGEgcXVpY2sgb3ZlcnZpZXcgb2YgaXRzIHVzYWdlLiBXaXRoIHRob3NlIHR3byB0b29scywgSSBjYW4gc3RhcnQgdG8gYnVpbGQgYSBwaWN0dXJlIG9mIGl0cyByb2xlIGluIHRoZSBrZXJuZWwgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBtb2R1bGVzIGFuZCB0aGUgd2lkZXIgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjY5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjoxNzoxMS4wODAxNjAxODlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgzNTY3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTJ4X2FzYXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTkyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjkzOm10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGNsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICoqdGFibGUsIHU4ICp2ZXJzaW9uKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xMDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxMDE6XFx0aWYgKGxlbiA9PSBzaXplb2Yoc3RydWN0IG10NzkyeF9hc2FyX2NsKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjEwMjpcXHRcXHQqdmVyc2lvbiA9ICgoc3RydWN0IG10NzkyeF9hc2FyX2NsICopKnRhYmxlKS1cXHUwMDNldmVyc2lvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjEwMzpcXHRlbHNlIGlmIChsZW4gPT0gc2l6ZW9mKHN0cnVjdCBtdDc5MnhfYXNhcl9jbF92MykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxMDQ6XFx0XFx0KnZlcnNpb24gPSAoKHN0cnVjdCBtdDc5MnhfYXNhcl9jbF92MyAqKSp0YWJsZSktXFx1MDAzZXZlcnNpb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xMDUtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0xMTI9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTEzOm10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGRzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICoqdGFibGUsIHU4IHZlcnNpb24pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xMjQtXFx0Y2FzZSAxOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTI1OlxcdFxcdGVuYWJsZSA9ICgoc3RydWN0IG10NzkyeF9hc2FyX2R5biAqKSp0YWJsZSktXFx1MDAzZWVuYWJsZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjEyNjpcXHRcXHRzYXJsZW4gPSBzaXplb2Yoc3RydWN0IG10NzkyeF9hc2FyX2R5bl9saW1pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxMjc6XFx0XFx0cHJlbGVuID0gc2l6ZW9mKHN0cnVjdCBtdDc5MnhfYXNhcl9keW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTI4LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTI5LVxcdGNhc2UgMjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjEzMDpcXHRcXHRlbmFibGUgPSAoKHN0cnVjdCBtdDc5MnhfYXNhcl9keW5fdjIgKikqdGFibGUpLVxcdTAwM2VlbmFibGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxMzE6XFx0XFx0c2FybGVuID0gc2l6ZW9mKHN0cnVjdCBtdDc5MnhfYXNhcl9keW5fbGltaXRfdjIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTMyOlxcdFxcdHByZWxlbiA9IHNpemVvZihzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZHluX3YyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTEzMy1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MTQ3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjE0ODptdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRncyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlLCB1OCB2ZXJzaW9uKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTU4LVxcdGNhc2UgMTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjE1OTpcXHRcXHRzYXJsZW4gPSBzaXplb2Yoc3RydWN0IG10NzkyeF9hc2FyX2dlb19saW1pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxNjA6XFx0XFx0cHJlbGVuID0gc2l6ZW9mKHN0cnVjdCBtdDc5MnhfYXNhcl9nZW8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTYxLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTYyLVxcdGNhc2UgMjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjE2MzpcXHRcXHRzYXJsZW4gPSBzaXplb2Yoc3RydWN0IG10NzkyeF9hc2FyX2dlb19saW1pdF92Mik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxNjQ6XFx0XFx0cHJlbGVuID0gc2l6ZW9mKHN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fdjIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTY1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0xNzg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTc5Om10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGZnKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICoqdGFibGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xODAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0xOTM9aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjIwMjpcXHRyZXQgPSBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRjbChkZXYsICh1OCAqKilcXHUwMDI2YXNhci1cXHUwMDNlY291bnRyeWxpc3QsIFxcdTAwMjZhc2FyLVxcdTAwM2V2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjAzLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjA4OlxcdHJldCA9IG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGRzKGRldiwgKHU4ICoqKVxcdTAwMjZhc2FyLVxcdTAwM2VkeW4sIGFzYXItXFx1MDAzZXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMDktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMTQtXFx0LyogTVRHUyBpcyBvcHRpb25hbCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjE1OlxcdHJldCA9IG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzKGRldiwgKHU4ICoqKVxcdTAwMjZhc2FyLVxcdTAwM2VnZW8sIGFzYXItXFx1MDAzZXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMTYtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMjEtXFx0LyogTVRGRyBpcyBvcHRpb25hbCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjIyOlxcdHJldCA9IG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGZnKGRldiwgKHU4ICoqKVxcdTAwMjZhc2FyLVxcdTAwM2VmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMjMtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0yMzM9c3RhdGljIHM4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoyMzQ6bXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIzNS1cXHRcXHRcXHRlbnVtIG5sODAyMTFfYmFuZCBiYW5kLCBzOCBkeW5fcG93ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIzNy1cXHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphc2FyID0gcGh5LVxcdTAwM2VhY3Bpc2FyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjM4OlxcdHN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fYmFuZCAqYmFuZF9wd3I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMzktXFx0czggZ2VvX3Bvd2VyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0yOTY9c3RhdGljIHM4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoyOTc6bXQ3OTJ4X2FzYXJfcmFuZ2VfcHdyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yOTgtXFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGNmZzgwMjExX3Nhcl9mcmVxX3JhbmdlcyAqcmFuZ2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTMyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjMyNjpcXHQvKiAweGZmOiBubyBkeW5hbWljIGxpbWl0LCBzZWUgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3IoKSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MzI3OlxcdHJldHVybiBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cihwaHksIGJhbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zMjgtXFx0XFx0XFx0XFx0ICAgICAgIGxpbWl0W2lkeF0gPT0gMHhmZiA/IDEyNyA6IGxpbWl0W2lkeF0pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0zMzE9aW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM1MC1cXHRcXHRmcnAtXFx1MDAzZXBvd2VyID0gbWluX3QoczgsIHNldF9kZWZhdWx0ID8gMTI3IDogZnJwLVxcdTAwM2Vwb3dlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjM1MTpcXHRcXHRcXHRcXHQgICBtdDc5MnhfYXNhcl9yYW5nZV9wd3IocGh5LCBmcnAtXFx1MDAzZXJhbmdlLCBpKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNTItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0zNTg9dTggbXQ3OTJ4X2FjcGlfZ2V0X2ZsYWdzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM2MC1cXHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphY3Bpc2FyID0gcGh5LVxcdTAwM2VhY3Bpc2FyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MzYxOlxcdHN0cnVjdCBtdDc5MnhfYXNhcl9mZyAqZmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNjItXFx0c3RydWN0IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9Mzk1PXN0YXRpYyB1MzJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjM5NjptdDc5MnhfYWNwaV9nZXRfbXRjbF9tYXBfdjMoaW50IHJvdywgaW50IGNvbHVtbiwgc3RydWN0IG10NzkyeF9hc2FyX2NsX3YzICpjbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM5Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTQwOT1zdGF0aWMgdTMyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzo0MTA6bXQ3OTJ4X2FjcGlfZ2V0X210Y2xfbWFwKGludCByb3csIGludCBjb2x1bW4sIHN0cnVjdCBtdDc5MnhfYXNhcl9jbCAqY2wpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy00MTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz00Mjc9bXQ3OTJ4X2FjcGlfcGFyc2VfbXRjbF90YmxfdjMoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy00MjktXFx0c3RydWN0IG10NzkyeF9hY3BpX3NhciAqc2FyID0gcGh5LVxcdTAwM2VhY3Bpc2FyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6NDMwOlxcdHN0cnVjdCBtdDc5MnhfYXNhcl9jbF92MyAqY2wgPSBzYXItXFx1MDAzZWNvdW50cnlsaXN0X3YzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtNDMxLVxcdGludCBjb2wsIHJvdywgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9NDU2PW10NzkyeF9hY3BpX3BhcnNlX210Y2xfdGJsKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGNoYXIgKmFscGhhMilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtNDU4LVxcdHN0cnVjdCBtdDc5MnhfYWNwaV9zYXIgKnNhciA9IHBoeS1cXHUwMDNlYWNwaXNhcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjQ1OTpcXHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfY2wgKmNsID0gc2FyLVxcdTAwM2Vjb3VudHJ5bGlzdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTQ2MC1cXHRpbnQgY29sLCByb3csIGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6MjA6c3RydWN0IG10NzkyeF9hc2FyX2R5bl9saW1pdCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC0yMS1cXHR1OCBpZHg7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6MjU6c3RydWN0IG10NzkyeF9hc2FyX2R5biB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC0yNi1cXHR1OCBuYW1lc1s0XTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMjgtXFx0dTggbnJfdGJsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6Mjk6XFx0REVDTEFSRV9GTEVYX0FSUkFZKHN0cnVjdCBtdDc5MnhfYXNhcl9keW5fbGltaXQsIHRibCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC0zMC19IF9fcGFja2VkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDozMjpzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZHluX2xpbWl0X3YyIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTMzLVxcdHU4IGlkeDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDozNzpzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZHluX3YyIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTM4LVxcdHU4IG5hbWVzWzRdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC00MS1cXHR1OCBucl90Ymw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDo0MjpcXHRERUNMQVJFX0ZMRVhfQVJSQVkoc3RydWN0IG10NzkyeF9hc2FyX2R5bl9saW1pdF92MiwgdGJsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTQzLX0gX19wYWNrZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC00NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjQ1OnN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fYmFuZCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC00Ni1cXHR1OCBwd3I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6NTA6c3RydWN0IG10NzkyeF9hc2FyX2dlb19saW1pdCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC01MS1cXHR1OCBpZHg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC01Mi1cXHQvKiAwOjJHLCAxOjVHICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDo1MzpcXHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvX2JhbmQgYmFuZFsyXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTU0LX0gX19wYWNrZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC01NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjU2OnN0cnVjdCBtdDc5MnhfYXNhcl9nZW8ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNTctXFx0dTggbmFtZXNbNF07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTU5LVxcdHU4IG5yX3RibDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjYwOlxcdERFQ0xBUkVfRkxFWF9BUlJBWShzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvX2xpbWl0LCB0YmwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNjEtfSBfX3BhY2tlZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6NjM6c3RydWN0IG10NzkyeF9hc2FyX2dlb19saW1pdF92MiB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC02NC1cXHR1OCBpZHg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC02NS1cXHQvKiAwOjJHLCAxOjVHLCAyOjZHICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDo2NjpcXHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvX2JhbmQgYmFuZFszXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTY3LX0gX19wYWNrZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC02OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjY5OnN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fdjIge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNzAtXFx0dTggbmFtZXNbNF07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTczLVxcdHU4IG5yX3RibDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjc0OlxcdERFQ0xBUkVfRkxFWF9BUlJBWShzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvX2xpbWl0X3YyLCB0YmwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNzUtfSBfX3BhY2tlZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6Nzc6c3RydWN0IG10NzkyeF9hc2FyX2NsX3YzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTc4LVxcdHU4IG5hbWVzWzRdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC04Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjg4OnN0cnVjdCBtdDc5MnhfYXNhcl9jbCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC04OS1cXHR1OCBuYW1lc1s0XTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtOTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDo5NzpzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZmcge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtOTgtXFx0dTggbmFtZXNbNF07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oPTEwNj1zdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMTA4LVxcdHVuaW9uIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjEwOTpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZHluICpkeW47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDoxMTA6XFx0XFx0c3RydWN0IG10NzkyeF9hc2FyX2R5bl92MiAqZHluX3YyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMTExLVxcdH07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC0xMTItXFx0dW5pb24ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6MTEzOlxcdFxcdHN0cnVjdCBtdDc5MnhfYXNhcl9nZW8gKmdlbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjExNDpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvX3YyICpnZW9fdjI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC0xMTUtXFx0fTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTExNi1cXHR1bmlvbiB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDoxMTc6XFx0XFx0c3RydWN0IG10NzkyeF9hc2FyX2NsICpjb3VudHJ5bGlzdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjExODpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfY2xfdjMgKmNvdW50cnlsaXN0X3YzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMTE5LVxcdH07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDoxMjA6XFx0c3RydWN0IG10NzkyeF9hc2FyX2ZnICpmZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTEyMS19O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjoxNzoxMS4xMjg1MjExMzhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NzY2NTgxNDkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQUNQSSBTQVIgQ29tcGlsYXRpb24gYW5kIFVzYWdlKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlIGBtdDc5MnhfYWNwaV9zYXIuY2AgZmlsZSBmaXRzIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGhvdyBpdCdzIHV0aWxpemVkLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGRlbHZlIGludG8gdGhlIGBNYWtlZmlsZWAuIFRoYXQnbGwgdGVsbCBtZSBob3cgdGhpcyBzcGVjaWZpYyBzb3VyY2UgZmlsZSBpcyBjb21waWxlZCBhbmQgbGlua2VkLiBJIG5lZWQgdG8gaWRlbnRpZnkgYW55IGRlcGVuZGVuY2llcywgYW55IHNwZWNpZmljIGZsYWdzIGJlaW5nIHVzZWQuLi4gdGhlIHdob2xlIG5pbmUgeWFyZHMuIE9uY2UgSSd2ZSBnb3QgYSBoYW5kbGUgb24gdGhlIGJ1aWxkIGVudmlyb25tZW50LCBJJ2xsIHRoZW4gbW92ZSBvbiB0byBwaW5wb2ludGluZyB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGNyaXRpY2FsIGhlcmU6IGBtdDc5MnhfaW5pdF9hY3BpX3NhcmAgYW5kIGBtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcmAuIEknbSBnb2luZyB0byB0cmFjayBkb3duIGV2ZXJ5IGluc3RhbmNlIHdoZXJlIGVpdGhlciBvZiB0aGVzZSBhcmUgY2FsbGVkLiBUaGlzIHdpbGwgcGFpbnQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGVzZSBTQVIgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zIGFyZSBiZWluZyBpbnRlZ3JhdGVkIGludG8gdGhlIGRyaXZlciBhbmQsIG1vcmUgaW1wb3J0YW50bHksIHdoZW4gYW5kIHdoeSB0aGV5J3JlIGJlaW5nIGV4ZWN1dGVkLiBGcm9tIHRoZXJlIEkgY2FuIGRldGVybWluZSB0aGUgb3ZlcmFsbCBmbG93IGFuZCBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzMDUsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjoxNzoxNi44OTUxMDQ3ODFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAyMjcwMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTJ4X2luaXRfYWNwaV9zYXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9MTcwPWludCBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyMjE6XFx0bXQ3OTJ4X2luaXRfYWNwaV9zYXIoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjIyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jPTEyODY9aW50IG10NzkyMV9zZXRfdHhfc2FyX3B3cihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0xMjk2LVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MTI5NzpcXHRtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihtdDc5MnhfaHdfcGh5KGh3KSwgIXNhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTEyOTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM9MjQzPWludCBtdDc5MjVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyOTI6XFx0bXQ3OTJ4X2luaXRfYWNwaV9zYXIoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjkzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTE4Nzk9aW50IG10NzkyNV9zZXRfdHhfc2FyX3B3cihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xODg5LVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTg5MDpcXHRtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihtdDc5MnhfaHdfcGh5KGh3KSwgIXNhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE4OTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oPTYzMD1pbnQgbXQ3OTJ4ZV9tY3VfZndfcG1jdHJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC02MzItI2lmZGVmIENPTkZJR19BQ1BJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2MzM6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6NjM0OmludCBtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBib29sIHNldF9kZWZhdWx0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTYzNS11OCBtdDc5MnhfYWNwaV9nZXRfZmxhZ3Moc3RydWN0IG10NzkyeF9waHkgKnBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD02MzY9dTMyIG10NzkyeF9hY3BpX2dldF9tdGNsX2NvbmYoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTYzNy0jZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6NjM4OnN0YXRpYyBpbmxpbmUgaW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC02Mzkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC02NDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2NDM6c3RhdGljIGlubGluZSBpbnQgbXQ3OTJ4X2luaXRfYWNwaV9zYXJfcG93ZXIoc3RydWN0IG10NzkyeF9waHkgKnBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTY0NC1cXHRcXHRcXHRcXHRcXHQgICAgIGJvb2wgc2V0X2RlZmF1bHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTE3OT1tdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRmZyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxOTM6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMzAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjMxOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeF9pbml0X2FjcGlfc2FyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIzMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9Mjk3PW10NzkyeF9hc2FyX3JhbmdlX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozMzE6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zMzIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNTUtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MzU2OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM1Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6MTc6MTYuOTQ1MzM5OTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MDM4Mjg3ODQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIGBtdDc5MjFgIGFuZCBgbXQ3OTI1YCBDaGlwc2V0cyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgZGV2aWNlcyB0aGF0IHV0aWxpemUgdGhlIGBtdDc5MjFgIGFuZCBgbXQ3OTI1YCBjaGlwc2V0cy4gV2hhdCdzIHRoZSBsYW5kc2NhcGUgaGVyZT8gQXJlIHdlIHByaW1hcmlseSBsb29raW5nIGF0IGVtYmVkZGVkIHNvbHV0aW9ucywgb3IgYXJlIHRoZXJlIFVTQiB2ZXJzaW9ucyBtYWtpbmcgdGhlIHJvdW5kcz8gQW5kIHdoYXQgYWJvdXQgUENJZSBvciBTRElPIGltcGxlbWVudGF0aW9ucz8gTmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGludGVyZmFjZSB2YXJpYXRpb25zLiBBbHJpZ2h0LCB0aW1lIHRvIGNyYWNrIG9wZW4gdGhlIGtlcm5lbCBzb3VyY2UgYW5kIHN0YXJ0IGRpZ2dpbmcuIEknbGwgemVybyBpbiBvbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYCBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSdsbCBiZSBsb29raW5nIGludG8gdGhlIGBtdDc5MjEvYCBhbmQgYG10NzkyNS9gIHN1YmRpcmVjdG9yaWVzIHRvIHNlZSB3aGF0IGtpbmQgb2YgYXJjaGl0ZWN0dXJlIGFuZCBkZXZpY2UgaW1wbGVtZW50YXRpb25zIHdlIGhhdmUgaGVyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgYmFzZWxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNDM4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6MTc6MjIuOTgzNjI5NzI3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImRlYnVnZnMuY1wiLFxuICAgIFwiaW5pdC5jXCIsXG4gICAgXCJtYWMuY1wiLFxuICAgIFwibWFpbi5jXCIsXG4gICAgXCJtY3UuY1wiLFxuICAgIFwibWN1LmhcIixcbiAgICBcIm10NzkyMS5oXCIsXG4gICAgXCJwY2kuY1wiLFxuICAgIFwicGNpX21hYy5jXCIsXG4gICAgXCJwY2lfbWN1LmNcIixcbiAgICBcInJlZ2QuY1wiLFxuICAgIFwicmVnZC5oXCIsXG4gICAgXCJyZWdzLmhcIixcbiAgICBcInNkaW8uY1wiLFxuICAgIFwic2Rpb19tYWMuY1wiLFxuICAgIFwic2Rpb19tY3UuY1wiLFxuICAgIFwidGVzdG1vZGUuY1wiLFxuICAgIFwidXNiLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6MTc6MjIuOTgzNjkxNjc3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTU0MDUyMTczMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVVNCIERldmljZSBhbmQgQUNQSSBTQVIgSW52ZXN0aWdhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHNwb3R0ZWQgYHVzYi5jYCDigJMgdGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byB0aGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgTVQ3OTIxIGFuZCBNVDc5MjUgY2hpcHNldHM7IEknbGwgY2hlY2sgYG10NzkyMS91c2IuY2AgYW5kIGBtdDc5MjUvdXNiLmNgIG5leHQsIHNlZWluZyB3aGF0IHRoZXkncmUgZG9pbmcgb24gdGhlIFVTQiBmcm9udC4gQnV0IHRoZW4sIGEgcmVkIGZsYWcgcG9wcGVkIHVwOiB3aGF0IGFib3V0IEFDUEkgU0FSPyBDYW4gYSBVU0IgZGV2aWNlIGV2ZW4gKnVzZSogQUNQSSBTQVI/IFRoYXQncyB0aGUgcXVlc3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBBQ1BJIFNBUiBpcyBwcm9iZWQgYW5kIGluaXRpYWxpemVkIGluIHJlbGF0aW9uIHRvIHRoZXNlIGRldmljZXMuIExldCdzIGRpZyBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgbG93ZG93biBvbiBob3cgdGhlIEFDUEkgU0FSIGZ1bmN0aW9uYWxpdHkgaXMgaGFuZGxlZCBpbiB0aGlzIE1lZGlhdGVrIGNvbnRleHQuIEknbSBob3BpbmcgSSBjYW4gcGllY2UgdG9nZXRoZXIgdGhlIGludGVycmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIFVTQiBkZXZpY2UgYW5kIEFDUEkgU0FSIGZyb20gdGhhdCBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjg4MywiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjoxNzozOC4zODg5MTA5MDJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTAyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHQvKiBDb3B5cmlnaHQgKEMpIDIwMjMgTWVkaWFUZWsgSW5jLiAqL1xcbiAgIDM6XFx0XFxuICAgNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvYWNwaS5oXFx1MDAzZVxcbiAgIDU6XFx0I2luY2x1ZGUgXFxcIm10NzkyeC5oXFxcIlxcbiAgIDY6XFx0XFxuICAgNzpcXHRzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGNjX2xpc3RfYWxsW10gPSB7XFxuICAgODpcXHRcXHRcXFwiMDBcXFwiLCBcXFwiRVVcXFwiLCBcXFwiQVJcXFwiLCBcXFwiQVVcXFwiLCBcXFwiQVpcXFwiLCBcXFwiQllcXFwiLCBcXFwiQk9cXFwiLCBcXFwiQlJcXFwiLFxcbiAgIDk6XFx0XFx0XFxcIkNBXFxcIiwgXFxcIkNMXFxcIiwgXFxcIkNOXFxcIiwgXFxcIklEXFxcIiwgXFxcIkpQXFxcIiwgXFxcIk1ZXFxcIiwgXFxcIk1YXFxcIiwgXFxcIk1FXFxcIixcXG4gIDEwOlxcdFxcdFxcXCJNQVxcXCIsIFxcXCJOWlxcXCIsIFxcXCJOR1xcXCIsIFxcXCJQSFxcXCIsIFxcXCJSVVxcXCIsIFxcXCJSU1xcXCIsIFxcXCJTR1xcXCIsIFxcXCJLUlxcXCIsXFxuICAxMTpcXHRcXHRcXFwiVFdcXFwiLCBcXFwiVEhcXFwiLCBcXFwiVUFcXFwiLCBcXFwiR0JcXFwiLCBcXFwiVVNcXFwiLCBcXFwiVk5cXFwiLCBcXFwiS0hcXFwiLCBcXFwiUFlcXFwiLFxcbiAgMTI6XFx0fTtcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBjY19saXN0X2V1W10gPSB7XFxuICAxNTpcXHRcXHRcXFwiQURcXFwiLCBcXFwiQVRcXFwiLCBcXFwiQkVcXFwiLCBcXFwiQkdcXFwiLCBcXFwiQ1lcXFwiLCBcXFwiQ1pcXFwiLCBcXFwiSFJcXFwiLCBcXFwiREtcXFwiLFxcbiAgMTY6XFx0XFx0XFxcIkVFXFxcIiwgXFxcIkZJXFxcIiwgXFxcIkZSXFxcIiwgXFxcIkRFXFxcIiwgXFxcIkdSXFxcIiwgXFxcIkhVXFxcIiwgXFxcIklTXFxcIiwgXFxcIklFXFxcIixcXG4gIDE3OlxcdFxcdFxcXCJJVFxcXCIsIFxcXCJMVlxcXCIsIFxcXCJMSVxcXCIsIFxcXCJMVFxcXCIsIFxcXCJMVVxcXCIsIFxcXCJNQ1xcXCIsIFxcXCJNVFxcXCIsIFxcXCJOTFxcXCIsXFxuICAxODpcXHRcXHRcXFwiTk9cXFwiLCBcXFwiUExcXFwiLCBcXFwiUFRcXFwiLCBcXFwiUk9cXFwiLCBcXFwiU0tcXFwiLCBcXFwiU0lcXFwiLCBcXFwiRVNcXFwiLCBcXFwiU0VcXFwiLFxcbiAgMTk6XFx0XFx0XFxcIkNIXFxcIixcXG4gIDIwOlxcdH07XFxuICAyMTpcXHRcXG4gIDIyOlxcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY2NfbGlzdF9iZVtdID0ge1xcbiAgMjM6XFx0XFx0XFxcIkFSXFxcIiwgXFxcIkJSXFxcIiwgXFxcIkJZXFxcIiwgXFxcIkNMXFxcIiwgXFxcIklRXFxcIiwgXFxcIk1YXFxcIiwgXFxcIk9NXFxcIiwgXFxcIlJVXFxcIixcXG4gIDI0OlxcdFxcdFxcXCJSV1xcXCIsIFxcXCJWTlxcXCIsIFxcXCJLUlxcXCIsIFxcXCJVQVxcXCIsIFxcXCJcXFwiLCBcXFwiXFxcIiwgXFxcIlxcXCIsIFxcXCJcXFwiLFxcbiAgMjU6XFx0XFx0XFxcIkVVXFxcIiwgXFxcIkFUXFxcIiwgXFxcIkNOXFxcIiwgXFxcIkNBXFxcIiwgXFxcIlRXXFxcIiwgXFxcIk5aXFxcIiwgXFxcIlBIXFxcIiwgXFxcIlVLXFxcIixcXG4gIDI2OlxcdFxcdFxcXCJVU1xcXCIsXFxuICAyNzpcXHR9O1xcbiAgMjg6XFx0XFxuICAyOTpcXHRzdGF0aWMgaW50XFxuICAzMDpcXHRtdDc5MnhfYWNwaV9yZWFkKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICptZXRob2QsIHU4ICoqdGJsLCB1MzIgKmxlbilcXG4gIDMxOlxcdHtcXG4gIDMyOlxcdFxcdHN0cnVjdCBhY3BpX2J1ZmZlciBidWYgPSB7IEFDUElfQUxMT0NBVEVfQlVGRkVSLCBOVUxMIH07XFxuICAzMzpcXHRcXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2O1xcbiAgMzQ6XFx0XFx0dW5pb24gYWNwaV9vYmplY3QgKnNhcl9yb290O1xcbiAgMzU6XFx0XFx0YWNwaV9oYW5kbGUgcm9vdCwgaGFuZGxlO1xcbiAgMzY6XFx0XFx0YWNwaV9zdGF0dXMgc3RhdHVzO1xcbiAgMzc6XFx0XFx0dTMyIGkgPSAwO1xcbiAgMzg6XFx0XFx0aW50IHJldDtcXG4gIDM5OlxcdFxcbiAgNDA6XFx0XFx0cm9vdCA9IEFDUElfSEFORExFKG1kZXYtXFx1MDAzZWRldik7XFxuICA0MTpcXHRcXHRpZiAoIXJvb3QpXFxuICA0MjpcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuICA0MzpcXHRcXG4gIDQ0OlxcdFxcdHN0YXR1cyA9IGFjcGlfZ2V0X2hhbmRsZShyb290LCBtZXRob2QsIFxcdTAwMjZoYW5kbGUpO1xcbiAgNDU6XFx0XFx0aWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKVxcbiAgNDY6XFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuICA0NzpcXHRcXG4gIDQ4OlxcdFxcdHN0YXR1cyA9IGFjcGlfZXZhbHVhdGVfb2JqZWN0KGhhbmRsZSwgTlVMTCwgTlVMTCwgXFx1MDAyNmJ1Zik7XFxuICA0OTpcXHRcXHRpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpXFxuICA1MDpcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4gIDUxOlxcdFxcbiAgNTI6XFx0XFx0c2FyX3Jvb3QgPSBidWYucG9pbnRlcjtcXG4gIDUzOlxcdFxcdGlmIChzYXJfcm9vdC1cXHUwMDNldHlwZSAhPSBBQ1BJX1RZUEVfUEFDS0FHRSB8fFxcbiAgNTQ6XFx0XFx0ICAgIHNhcl9yb290LVxcdTAwM2VwYWNrYWdlLmNvdW50IFxcdTAwM2MgNCB8fFxcbiAgNTU6XFx0XFx0ICAgIHNhcl9yb290LVxcdTAwM2VwYWNrYWdlLmVsZW1lbnRzWzBdLnR5cGUgIT0gQUNQSV9UWVBFX0lOVEVHRVIpIHtcXG4gIDU2OlxcdFxcdFxcdGRldl9lcnIobWRldi1cXHUwMDNlZGV2LCBcXFwic2FyIGNudCA9ICVkXFxcXG5cXFwiLFxcbiAgNTc6XFx0XFx0XFx0XFx0c2FyX3Jvb3QtXFx1MDAzZXBhY2thZ2UuY291bnQpO1xcbiAgNTg6XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gIDU5OlxcdFxcdFxcdGdvdG8gZnJlZTtcXG4gIDYwOlxcdFxcdH1cXG4gIDYxOlxcdFxcbiAgNjI6XFx0XFx0aWYgKCEqdGJsKSB7XFxuICA2MzpcXHRcXHRcXHQqdGJsID0gZGV2bV9remFsbG9jKG1kZXYtXFx1MDAzZWRldiwgc2FyX3Jvb3QtXFx1MDAzZXBhY2thZ2UuY291bnQsXFxuICA2NDpcXHRcXHRcXHRcXHRcXHQgICAgR0ZQX0tFUk5FTCk7XFxuICA2NTpcXHRcXHRcXHRpZiAoISp0YmwpIHtcXG4gIDY2OlxcdFxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuICA2NzpcXHRcXHRcXHRcXHRnb3RvIGZyZWU7XFxuICA2ODpcXHRcXHRcXHR9XFxuICA2OTpcXHRcXHR9XFxuICA3MDpcXHRcXG4gIDcxOlxcdFxcdGlmIChsZW4pXFxuICA3MjpcXHRcXHRcXHQqbGVuID0gc2FyX3Jvb3QtXFx1MDAzZXBhY2thZ2UuY291bnQ7XFxuICA3MzpcXHRcXG4gIDc0OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBzYXJfcm9vdC1cXHUwMDNlcGFja2FnZS5jb3VudDsgaSsrKSB7XFxuICA3NTpcXHRcXHRcXHR1bmlvbiBhY3BpX29iamVjdCAqc2FyX3VuaXQgPSBcXHUwMDI2c2FyX3Jvb3QtXFx1MDAzZXBhY2thZ2UuZWxlbWVudHNbaV07XFxuICA3NjpcXHRcXG4gIDc3OlxcdFxcdFxcdGlmIChzYXJfdW5pdC1cXHUwMDNldHlwZSAhPSBBQ1BJX1RZUEVfSU5URUdFUilcXG4gIDc4OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAgNzk6XFx0XFxuICA4MDpcXHRcXHRcXHQqKCp0YmwgKyBpKSA9ICh1OClzYXJfdW5pdC1cXHUwMDNlaW50ZWdlci52YWx1ZTtcXG4gIDgxOlxcdFxcdH1cXG4gIDgyOlxcdFxcbiAgODM6XFx0XFx0cmV0ID0gaSA9PSBzYXJfcm9vdC1cXHUwMDNlcGFja2FnZS5jb3VudCA/IDAgOiAtRUlOVkFMO1xcbiAgODQ6XFx0ZnJlZTpcXG4gIDg1OlxcdFxcdGtmcmVlKHNhcl9yb290KTtcXG4gIDg2OlxcdFxcbiAgODc6XFx0XFx0cmV0dXJuIHJldDtcXG4gIDg4OlxcdH1cXG4gIDg5OlxcdFxcbiAgOTA6XFx0LyogTVRDTCA6IENvdW50cnkgTGlzdCBUYWJsZSBmb3IgNkcgYmFuZCAqL1xcbiAgOTE6XFx0LyogTVRDTCA6IENvdW50cnkgTGlzdCBUYWJsZSBmb3IgNkcgYmFuZCBhbmQgMTFCRSAqL1xcbiAgOTI6XFx0c3RhdGljIGludFxcbiAgOTM6XFx0bXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Y2woc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKip0YWJsZSwgdTggKnZlcnNpb24pXFxuICA5NDpcXHR7XFxuICA5NTpcXHRcXHRpbnQgbGVuLCByZXQ7XFxuICA5NjpcXHRcXG4gIDk3OlxcdFxcdHJldCA9IG10NzkyeF9hY3BpX3JlYWQoZGV2LCBNVDc5MnhfQUNQSV9NVENMLCB0YWJsZSwgXFx1MDAyNmxlbik7XFxuICA5ODpcXHRcXHRpZiAocmV0KVxcbiAgOTk6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMTAwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjoxNzozOC4zODkwMDMxMDJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDY4NDQ5OTQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgbXQ3OTJ4IEFDUEkgSGFuZGxpbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEkgc2VlIHRoYXQgYEFDUElfSEFORExFKG1kZXYtXHUwMDNlZGV2KWAgaXMgYmVpbmcgZXhhbWluZWQgaW4gdGhlIGBtdDc5MnhfYWNwaV9yZWFkYCBmdW5jdGlvbi4gVGhlIGNvZGUgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogaWYgdGhlcmUncyBubyBBQ1BJIG5vZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXZpY2UgKHRoYXQgYCFyb290YCBjaGVjayksIGl0IHJldHVybnMgYW4gYC1FT1BOT1RTVVBQYCBlcnJvci4gTmF0dXJhbGx5LCB0aGlzIGZsYWdzIG15IGF0dGVudGlvbiDigJMgd2hlbiAqZG9lcyogYSBkZXZpY2UgYWN0dWFsbHkgKmhhdmUqIG9uZSBvZiB0aGVzZSBBQ1BJIG5vZGVzPyBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aG9zZSBNZWRpYVRlay1zcGVjaWZpYyBBQ1BJIG1ldGhvZHM6IFwiTVRDTCxcIiBcIk1URFMsXCIgXCJNVEdTLFwiIGFuZCBcIk1URkcuXCJcblxuQWgsIHJpZ2h0LCB0aGlzIGlzIGFsbW9zdCBjZXJ0YWlubHkgb25seSBnb2luZyB0byBiZSBwcmVzZW50IHdoZW4gd2UncmUgZGVhbGluZyB3aXRoIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zLiBTcGVjaWZpY2FsbHksIE1lZGlhVGVrIFdpLUZpIGNhcmRzICppbiogbGFwdG9wcyB0aGF0IGhhdmUgT0VNIEFDUEkgRFNEVCB0YWJsZXMgdGhhdCBkZWZpbmUgdGhvc2UgXCJNVENML01URFMvTVRHUy9NVEZHXCIgbWV0aG9kcy4gU3RhbmRhcmQgc3R1ZmYsIHJlYWxseS5cblxuSG9sZCBvbiBhIHNlY29uZCwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gSSBzaG91bGQgcmV2aWV3IGhvdyBgbXQ3OTJ4X2luaXRfYWNwaV9zYXJgIGlzIGFjdHVhbGx5IGNvbmZpZ3VyZWQuIExldCBtZSBnbyBvdmVyIGxpbmVzIDE4MC0yNTAgb2YgYG10NzkyeF9hY3BpX3Nhci5jYCBqdXN0IHRvIGJlIGNlcnRhaW4uIEkgd2FudCB0byBtYWtlIHN1cmUgSSBhbSBhY2NvdW50aW5nIGZvciBhbnkgb2YgdGhlIGZpbmVyIGRldGFpbHMgb2YgdGhlIGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDgwMSwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDAyOjE3OjQzLjA3MzUwNDI2MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHR7XFxuIDE4MTpcXHRcXHRpbnQgbGVuLCByZXQ7XFxuIDE4MjpcXHRcXG4gMTgzOlxcdFxcdHJldCA9IG10NzkyeF9hY3BpX3JlYWQoZGV2LCBNVDc5MnhfQUNQSV9NVEZHLCB0YWJsZSwgXFx1MDAyNmxlbik7XFxuIDE4NDpcXHRcXHRpZiAocmV0KVxcbiAxODU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMTg2OlxcdFxcbiAxODc6XFx0XFx0aWYgKGxlbiBcXHUwMDNjIE1UNzkyeF9BU0FSX01JTl9GRylcXG4gMTg4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAxODk6XFx0XFxuIDE5MDpcXHRcXHRyZXR1cm4gMDtcXG4gMTkxOlxcdH1cXG4gMTkyOlxcdFxcbiAxOTM6XFx0aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuIDE5NDpcXHR7XFxuIDE5NTpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphc2FyO1xcbiAxOTY6XFx0XFx0aW50IHJldDtcXG4gMTk3OlxcdFxcbiAxOTg6XFx0XFx0YXNhciA9IGRldm1fa3phbGxvYyhkZXYtXFx1MDAzZW10NzYuZGV2LCBzaXplb2YoKmFzYXIpLCBHRlBfS0VSTkVMKTtcXG4gMTk5OlxcdFxcdGlmICghYXNhcilcXG4gMjAwOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAyMDE6XFx0XFxuIDIwMjpcXHRcXHRyZXQgPSBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRjbChkZXYsICh1OCAqKilcXHUwMDI2YXNhci1cXHUwMDNlY291bnRyeWxpc3QsIFxcdTAwMjZhc2FyLVxcdTAwM2V2ZXIpO1xcbiAyMDM6XFx0XFx0aWYgKHJldCkge1xcbiAyMDQ6XFx0XFx0XFx0ZGV2bV9rZnJlZShkZXYtXFx1MDAzZW10NzYuZGV2LCBhc2FyLVxcdTAwM2Vjb3VudHJ5bGlzdCk7XFxuIDIwNTpcXHRcXHRcXHRhc2FyLVxcdTAwM2Vjb3VudHJ5bGlzdCA9IE5VTEw7XFxuIDIwNjpcXHRcXHR9XFxuIDIwNzpcXHRcXG4gMjA4OlxcdFxcdHJldCA9IG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGRzKGRldiwgKHU4ICoqKVxcdTAwMjZhc2FyLVxcdTAwM2VkeW4sIGFzYXItXFx1MDAzZXZlcik7XFxuIDIwOTpcXHRcXHRpZiAocmV0KSB7XFxuIDIxMDpcXHRcXHRcXHRkZXZtX2tmcmVlKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIGFzYXItXFx1MDAzZWR5bik7XFxuIDIxMTpcXHRcXHRcXHRhc2FyLVxcdTAwM2VkeW4gPSBOVUxMO1xcbiAyMTI6XFx0XFx0fVxcbiAyMTM6XFx0XFxuIDIxNDpcXHRcXHQvKiBNVEdTIGlzIG9wdGlvbmFsICovXFxuIDIxNTpcXHRcXHRyZXQgPSBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRncyhkZXYsICh1OCAqKilcXHUwMDI2YXNhci1cXHUwMDNlZ2VvLCBhc2FyLVxcdTAwM2V2ZXIpO1xcbiAyMTY6XFx0XFx0aWYgKHJldCkge1xcbiAyMTc6XFx0XFx0XFx0ZGV2bV9rZnJlZShkZXYtXFx1MDAzZW10NzYuZGV2LCBhc2FyLVxcdTAwM2VnZW8pO1xcbiAyMTg6XFx0XFx0XFx0YXNhci1cXHUwMDNlZ2VvID0gTlVMTDtcXG4gMjE5OlxcdFxcdH1cXG4gMjIwOlxcdFxcbiAyMjE6XFx0XFx0LyogTVRGRyBpcyBvcHRpb25hbCAqL1xcbiAyMjI6XFx0XFx0cmV0ID0gbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210ZmcoZGV2LCAodTggKiopXFx1MDAyNmFzYXItXFx1MDAzZWZnKTtcXG4gMjIzOlxcdFxcdGlmIChyZXQpIHtcXG4gMjI0OlxcdFxcdFxcdGRldm1fa2ZyZWUoZGV2LVxcdTAwM2VtdDc2LmRldiwgYXNhci1cXHUwMDNlZmcpO1xcbiAyMjU6XFx0XFx0XFx0YXNhci1cXHUwMDNlZmcgPSBOVUxMO1xcbiAyMjY6XFx0XFx0fVxcbiAyMjc6XFx0XFx0ZGV2LVxcdTAwM2VwaHkuYWNwaXNhciA9IGFzYXI7XFxuIDIyODpcXHRcXG4gMjI5OlxcdFxcdHJldHVybiAwO1xcbiAyMzA6XFx0fVxcbiAyMzE6XFx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTJ4X2luaXRfYWNwaV9zYXIpO1xcbiAyMzI6XFx0XFxuIDIzMzpcXHRzdGF0aWMgczhcXG4gMjM0OlxcdG10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksXFxuIDIzNTpcXHRcXHRcXHRcXHRlbnVtIG5sODAyMTFfYmFuZCBiYW5kLCBzOCBkeW5fcG93ZXIpXFxuIDIzNjpcXHR7XFxuIDIzNzpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphc2FyID0gcGh5LVxcdTAwM2VhY3Bpc2FyO1xcbiAyMzg6XFx0XFx0c3RydWN0IG10NzkyeF9hc2FyX2dlb19iYW5kICpiYW5kX3B3cjtcXG4gMjM5OlxcdFxcdHM4IGdlb19wb3dlcjtcXG4gMjQwOlxcdFxcdHU4IGlkeCwgbWF4O1xcbiAyNDE6XFx0XFxuIDI0MjpcXHRcXHRpZiAoIWFzYXItXFx1MDAzZWdlbylcXG4gMjQzOlxcdFxcdFxcdHJldHVybiBkeW5fcG93ZXI7XFxuIDI0NDpcXHRcXG4gMjQ1OlxcdFxcdHN3aXRjaCAocGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VkZXYtXFx1MDAzZXJlZ2lvbikge1xcbiAyNDY6XFx0XFx0Y2FzZSBOTDgwMjExX0RGU19GQ0M6XFxuIDI0NzpcXHRcXHRcXHRpZHggPSAwO1xcbiAyNDg6XFx0XFx0XFx0YnJlYWs7XFxuIDI0OTpcXHRcXHRjYXNlIE5MODAyMTFfREZTX0VUU0k6XFxuIDI1MDpcXHRcXHRcXHRpZHggPSAxO1xcbiAyNTE6XFx0XFx0XFx0YnJlYWs7XFxuIDI1MjpcXHRcXHRkZWZhdWx0OiAvKiBXVyAqL1xcbiAyNTM6XFx0XFx0XFx0aWR4ID0gMjtcXG4gMjU0OlxcdFxcdFxcdGJyZWFrO1xcbiAyNTU6XFx0XFx0fVxcbiAyNTY6XFx0XFxuIDI1NzpcXHRcXHRpZiAoYXNhci1cXHUwMDNldmVyID09IDEpIHtcXG4gMjU4OlxcdFxcdFxcdGJhbmRfcHdyID0gXFx1MDAyNmFzYXItXFx1MDAzZWdlby1cXHUwMDNldGJsW2lkeF0uYmFuZFswXTtcXG4gMjU5OlxcdFxcdFxcdG1heCA9IEFSUkFZX1NJWkUoYXNhci1cXHUwMDNlZ2VvLVxcdTAwM2V0YmxbaWR4XS5iYW5kKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6MTc6NDMuMDczNTgyNDYxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk2NTcxNTgwMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3ciBGdW5jdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cmAgc3RhcnRzIHdpdGggYSBjcml0aWNhbCBjaGVjazogYGlmICghYXNhci1cdTAwM2VnZW8pIHJldHVybiBkeW5fcG93ZXI7YC4gU28sIGlmIGBhc2FyLVx1MDAzZWdlb2AgaXNuJ3Qgc2V0LCBpdCBpbW1lZGlhdGVseSByZXR1cm5zIGBkeW5fcG93ZXJgLiBNYWtlcyBzZW5zZSDigJMgaWYgd2UgZG9uJ3QgaGF2ZSBnZW8tbG9jYXRpb24gZGF0YSwgd2UgZmFsbCBiYWNrIHRvIGEgZHluYW1pYyBwb3dlciBzZXR0aW5nLiBCdXQsIHRoZSByZWFsIHF1ZXN0aW9uIGlzIGhvdyBgYXNhci1cdTAwM2VnZW9gIGdldHMgcG9wdWxhdGVkLlxuXG5JdCBhcHBlYXJzIGBhc2FyLVx1MDAzZWdlb2AgaXMgb25seSBpbml0aWFsaXplZCBpZiBgbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Z3NgIGlzIHN1Y2Nlc3NmdWwuIEFuZCAqdGhhdCogZnVuY3Rpb24gaXMgY2FsbGluZyBhbiBBQ1BJIG1ldGhvZCBjYWxsZWQgXCJNVEdTXCIgb24gdGhlIEFDUEkgaGFuZGxlIGFzc29jaWF0ZWQgd2l0aCBgbWRldi1cdTAwM2VkZXZgLiBPa2F5LCBzbyB3ZSdyZSByZWx5aW5nIG9uIEFDUEkgdG8gcHJvdmlkZSB0aGUgZ2VvZ3JhcGhpY2FsIHBvd2VyIGRhdGEuIFRoYXQncyBhIHJlYXNvbmFibGUgYXBwcm9hY2gsIGFzc3VtaW5nIHRoZSBBQ1BJIHRhYmxlcyBhcmUgcHJvcGVybHkgY29uZmlndXJlZCBvbiB0aGUgc3lzdGVtLlxuXG5Ob3csIEkgbmVlZCB0byBiZSAqYWJzb2x1dGVseSogc3VyZSBvZiB0aGlzIGxvZ2ljLiBJIG5lZWQgdG8gYmUgMTAwJSBzdXJlIHRoYXQgdGhlcmUgYXJlbid0IGFueSBvdGhlciBwbGFjZXMgd2hlcmUgYGFzYXItXHUwMDNlZ2VvYCwgYGFzYXItXHUwMDNlZHluYCwgb3IgZXZlbiBqdXN0IHRoZSBgYXNhcmAgc3RydWN0dXJlIGl0c2VsZiwgZ2V0cyBtb2RpZmllZC4gQW55IG90aGVyIG1vZGlmaWNhdGlvbiBjb3VsZCBhZmZlY3QgdGhlIGZsb3cgb2YgdGhpcyBjb2RlLiBJdCBjb3VsZCBjYXVzZSByYWNlIGNvbmRpdGlvbnMuIEl0IGNvdWxkIGNhdXNlIHRoZSBnZW8tbG9jYXRpb24gc3lzdGVtIHRvIHJldHVybiBpbmNvcnJlY3QgdmFsdWVzLiBUaW1lIHRvIGRvIGEgdGhvcm91Z2ggc2VhcmNoIGZvciBhbnkgb3RoZXIgdXNhZ2Ugb2YgYGFjcGlzYXJgIG9yIGBnZW9gIHdpdGhpbiB0aGUgYG10NzZgIGNvZGViYXNlLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgYW55IG90aGVyIHBsYWNlcyB3aGVyZSB0aGVzZSB2YXJpYWJsZXMgbWF5IGJlIGdldHRpbmcgc2V0IG9yIG1vZGlmaWVkIHRvIHZlcmlmeSB0aGlzIGxvZ2ljLiBBIGJyb2FkIHNlYXJjaCB3b3VsZCBpbnZvbHZlIHNlYXJjaGluZyBmb3IgYWxsIGluc3RhbmNlcyBvZiBcImFjcGlzYXJcIiBhbmQgXCJnZW9cIiBpbiBgbXQ3NmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NTkyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6MTc6NTIuNzMwNzQzNDIzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTAxNjMwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhY3Bpc2FyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD0yMDQ9c3RydWN0IG10NzkyeF9waHkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC0yMjgtI2lmZGVmIENPTkZJR19BQ1BJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDoyMjk6XFx0dm9pZCAqYWNwaXNhcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTIzMC0jZW5kaWZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MTkzPWludCBtdDc5MnhfaW5pdF9hY3BpX3NhcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMjYtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjI3OlxcdGRldi1cXHUwMDNlcGh5LmFjcGlzYXIgPSBhc2FyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjI4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0yMzQ9bXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjM2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjIzNzpcXHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphc2FyID0gcGh5LVxcdTAwM2VhY3Bpc2FyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjM4LVxcdHN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fYmFuZCAqYmFuZF9wd3I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTI5Nz1tdDc5MnhfYXNhcl9yYW5nZV9wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzAxLVxcdGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9zYXJfY2FwYSAqY2FwYSA9IHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LVxcdTAwM2VzYXJfY2FwYTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjMwMjpcXHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphc2FyID0gcGh5LVxcdTAwM2VhY3Bpc2FyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzAzLVxcdHU4ICpsaW1pdCwgYmFuZCwgbWF4O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0zMzE9aW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTMzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjMzNjpcXHRpZiAoIXBoeS1cXHUwMDNlYWNwaXNhciB8fCAhKChzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICopcGh5LVxcdTAwM2VhY3Bpc2FyKS1cXHUwMDNlZHluKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzM3LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0zNTg9dTggbXQ3OTJ4X2FjcGlfZ2V0X2ZsYWdzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MzYwOlxcdHN0cnVjdCBtdDc5MnhfYWNwaV9zYXIgKmFjcGlzYXIgPSBwaHktXFx1MDAzZWFjcGlzYXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNjEtXFx0c3RydWN0IG10NzkyeF9hc2FyX2ZnICpmZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MzcyOlxcdGlmICghYWNwaXNhcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM3My1cXHRcXHRyZXR1cm4gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjM3NTpcXHRmZyA9IGFjcGlzYXItXFx1MDAzZWZnO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzc2LVxcdGlmICghZmcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTQyNz1tdDc5MnhfYWNwaV9wYXJzZV9tdGNsX3RibF92MyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBjaGFyICphbHBoYTIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy00Mjgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6NDI5OlxcdHN0cnVjdCBtdDc5MnhfYWNwaV9zYXIgKnNhciA9IHBoeS1cXHUwMDNlYWNwaXNhcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTQzMC1cXHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfY2xfdjMgKmNsID0gc2FyLVxcdTAwM2Vjb3VudHJ5bGlzdF92MztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9NDU2PW10NzkyeF9hY3BpX3BhcnNlX210Y2xfdGJsKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGNoYXIgKmFscGhhMilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTQ1Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzo0NTg6XFx0c3RydWN0IG10NzkyeF9hY3BpX3NhciAqc2FyID0gcGh5LVxcdTAwM2VhY3Bpc2FyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtNDU5LVxcdHN0cnVjdCBtdDc5MnhfYXNhcl9jbCAqY2wgPSBzYXItXFx1MDAzZWNvdW50cnlsaXN0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz00Nzk9dTMyIG10NzkyeF9hY3BpX2dldF9tdGNsX2NvbmYoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtNDgwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjQ4MTpcXHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICpzYXIgPSBwaHktXFx1MDAzZWFjcGlzYXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy00ODItXFx0dTMyIGNvbmZpZyA9IDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDAyOjE3OjUyLjc3OTc2Mzc3MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2Mzc2OTEyMDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyBpdDpcblxuKipEaWdnaW5nIGludG8gdGhlIEhhcmR3YXJlIExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gY2xhcmlmeSB0aGUgc3BlY2lmaWNzIG9mIHdoYXQgdGhlIE1UNzkyMSBhbmQgTVQ3OTI1IGNoaXBzZXRzIGFjdHVhbGx5IHN1cHBvcnQgZnJvbSBhIGhhcmR3YXJlIHN0YW5kcG9pbnQuIEJleW9uZCB0aGF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgbXQ3NiwgbXQ3OTIxLCBhbmQgbXQ3OTI1IGRlc2lnbmF0aW9ucyBleGNsdXNpdmVseSByZWZlciB0byBwaHlzaWNhbCBoYXJkd2FyZSBvciBpZiB0aGVyZSdzIG1vcmUgdG8gaXQgdGhhbiBtZWV0cyB0aGUgZXllLiBNeSBuZXh0IHN0ZXAgaW52b2x2ZXMgZGl2aW5nIGludG8gdGhlIEtjb25maWcgZmlsZXMgZm9yIE1UNzkyMSwgTVQ3OTI1LCBhbmQgTVQ3Ni4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGVpciBjYXBhYmlsaXRpZXMgYW5kIHJlbGF0aW9uc2hpcHMgd2l0aGluIHRoZSBjb25maWd1cmF0aW9uIGZyYW1ld29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwNzksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjoxNzo1OS4xNTY2Nzc5MTZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MDEwMTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc5MlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZz0yOD1jb25maWcgTVQ3Nl9DT05OQUNfTElCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjMyOmNvbmZpZyBNVDc5MnhfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMzLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjM2OmNvbmZpZyBNVDc5MnhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTM3LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyOmNvbmZpZyBNVDc5MjFfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzo3OmNvbmZpZyBNVDc5MjFFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy04LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFFIChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjE3OmNvbmZpZyBNVDc5MjFTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxUyAoU0RJTykgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyODpjb25maWcgTVQ3OTIxVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMjktXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyNV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDAyOjE3OjU5LjIwNDY5MjI4NVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODQwMDcxODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgVVNCIERyaXZlciBTQVIgQ29tcGF0aWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhlIE1UNzkyMVUgYW5kIE1UNzkyNVUgZHJpdmVycywga25vd2luZyB0aGV5J3JlIFVTQi1iYXNlZC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgVVNCIGRldmljZXMgY2FuIGV2ZW4gKmhhdmUqIEFDUEkgU0FSIGNvbnNpZGVyYXRpb25zLiBJdCBzZWVtcyBhIGJpdCB1bnVzdWFsLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZS4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlIHRvIGNvbmZpcm0gb25lIHdheSBvciB0aGUgb3RoZXIuIE15IGZpcnN0IHN0ZXAgd2lsbCBiZSB0byBleGFtaW5lIHRoZSBgbXQ3OTIxdV9wcm9iZWAgYW5kIGBtdDc5MjV1X3Byb2JlYCBmdW5jdGlvbnMsIG9yIHBlcmhhcHMgYG10NzkyMV9yZWdpc3Rlcl9kZXZpY2VgLCB0byBzZWUgaWYgdGhlcmUncyBhbnl0aGluZyByZWxhdGVkIHRvIFNBUiBvciBwb3dlciBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgVVNCIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLiBTaW5jZSBJJ20gd29ya2luZyB3aXRoIHRoZSBNVDc5MjEgc3BlY2lmaWNhbGx5LCBJJ2xsIGZvY3VzIG15IGluaXRpYWwgZXhhbWluYXRpb24gb24gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jYC4gVGhhdCBzZWVtcyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHJlbGF0ZWQgY29kZS4gRnJvbSB0aGVyZSwgSSdsbCBzZWUgd2hlcmUgdG8gZ28gbmV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyNTIsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjoxODowMi4wNDQ3NjY0ODFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjUwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjUwOlxcdFxcdHJldHVybiAwO1xcbiAyNTE6XFx0XFxuIDI1MjpcXHRlcnJvcjpcXG4gMjUzOlxcdFxcdG10NzZ1X3F1ZXVlc19kZWluaXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDI1NDpcXHRcXHRtdDc5Mnh1X3Jlc2V0X3dvcmtfY2xlYW51cChkZXYpO1xcbiAyNTU6XFx0XFxuIDI1NjpcXHRcXHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcXG4gMjU3OlxcdFxcbiAyNTg6XFx0XFx0bXQ3Nl9mcmVlX2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMjU5OlxcdFxcbiAyNjA6XFx0XFx0cmV0dXJuIHJldDtcXG4gMjYxOlxcdH1cXG4gMjYyOlxcdFxcbiAyNjM6XFx0I2lmZGVmIENPTkZJR19QTVxcbiAyNjQ6XFx0c3RhdGljIGludCBtdDc5MjF1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcXG4gMjY1OlxcdHtcXG4gMjY2OlxcdFxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xcbiAyNjc6XFx0XFx0c3RydWN0IG10NzZfY29ubmFjX3BtICpwbSA9IFxcdTAwMjZkZXYtXFx1MDAzZXBtO1xcbiAyNjg6XFx0XFx0aW50IGVycjtcXG4gMjY5OlxcdFxcbiAyNzA6XFx0XFx0cG0tXFx1MDAzZXN1c3BlbmRlZCA9IHRydWU7XFxuIDI3MTpcXHRcXHRmbHVzaF93b3JrKFxcdTAwMjZkZXYtXFx1MDAzZXJlc2V0X3dvcmspO1xcbiAyNzI6XFx0XFxuIDI3MzpcXHRcXHRlcnIgPSBtdDc2X2Nvbm5hY19tY3Vfc2V0X2hpZl9zdXNwZW5kKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHRydWUsIHRydWUpO1xcbiAyNzQ6XFx0XFx0aWYgKGVycilcXG4gMjc1OlxcdFxcdFxcdGdvdG8gZmFpbGVkO1xcbiAyNzY6XFx0XFxuIDI3NzpcXHRcXHRtdDc2dV9zdG9wX3J4KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbiAyNzg6XFx0XFx0bXQ3NnVfc3RvcF90eChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMjc5OlxcdFxcbiAyODA6XFx0XFx0cmV0dXJuIDA7XFxuIDI4MTpcXHRcXG4gMjgyOlxcdGZhaWxlZDpcXG4gMjgzOlxcdFxcdHBtLVxcdTAwM2VzdXNwZW5kZWQgPSBmYWxzZTtcXG4gMjg0OlxcdFxcbiAyODU6XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIDI4NjpcXHRcXHRcXHRtdDc5MnhfcmVzZXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDI4NzpcXHRcXG4gMjg4OlxcdFxcdHJldHVybiBlcnI7XFxuIDI4OTpcXHR9XFxuIDI5MDpcXHRcXG4gMjkxOlxcdHN0YXRpYyBpbnQgbXQ3OTIxdV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuIDI5MjpcXHR7XFxuIDI5MzpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcXG4gMjk0OlxcdFxcdHN0cnVjdCBtdDc2X2Nvbm5hY19wbSAqcG0gPSBcXHUwMDI2ZGV2LVxcdTAwM2VwbTtcXG4gMjk1OlxcdFxcdGJvb2wgcmVpbml0ID0gdHJ1ZTtcXG4gMjk2OlxcdFxcdGludCBlcnIsIGk7XFxuIDI5NzpcXHRcXG4gMjk4OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAxMDsgaSsrKSB7XFxuIDI5OTpcXHRcXHRcXHR1MzIgdmFsID0gbXQ3Nl9ycihkZXYsIE1UX1dGX1NXX0RFRl9DUl9VU0JfTUNVX0VWRU5UKTtcXG4gMzAwOlxcdFxcbiAzMDE6XFx0XFx0XFx0aWYgKCEodmFsIFxcdTAwMjYgTVRfV0ZfU1dfU0VSX1RSSUdHRVJfU1VTUEVORCkpIHtcXG4gMzAyOlxcdFxcdFxcdFxcdHJlaW5pdCA9IGZhbHNlO1xcbiAzMDM6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDMwNDpcXHRcXHRcXHR9XFxuIDMwNTpcXHRcXHRcXHRpZiAodmFsIFxcdTAwMjYgTVRfV0ZfU1dfU0VSX0RPTkVfU1VTUEVORCkge1xcbiAzMDY6XFx0XFx0XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1dGX1NXX0RFRl9DUl9VU0JfTUNVX0VWRU5ULCAwKTtcXG4gMzA3OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAzMDg6XFx0XFx0XFx0fVxcbiAzMDk6XFx0XFxuIDMxMDpcXHRcXHRcXHRtc2xlZXAoMjApO1xcbiAzMTE6XFx0XFx0fVxcbiAzMTI6XFx0XFxuIDMxMzpcXHRcXHRpZiAocmVpbml0IHx8IG10NzkyeF9kbWFfbmVlZF9yZWluaXQoZGV2KSkge1xcbiAzMTQ6XFx0XFx0XFx0ZXJyID0gbXQ3OTJ4dV9kbWFfaW5pdChkZXYsIHRydWUpO1xcbiAzMTU6XFx0XFx0XFx0aWYgKGVycilcXG4gMzE2OlxcdFxcdFxcdFxcdGdvdG8gZmFpbGVkO1xcbiAzMTc6XFx0XFx0fVxcbiAzMTg6XFx0XFxuIDMxOTpcXHRcXHRlcnIgPSBtdDc2dV9yZXN1bWVfcngoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDMyMDpcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4gMzIxOlxcdFxcdFxcdGdvdG8gZmFpbGVkO1xcbiAzMjI6XFx0XFxuIDMyMzpcXHRcXHRlcnIgPSBtdDc2X2Nvbm5hY19tY3Vfc2V0X2hpZl9zdXNwZW5kKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIGZhbHNlLCB0cnVlKTtcXG4gMzI0OlxcdGZhaWxlZDpcXG4gMzI1OlxcdFxcdHBtLVxcdTAwM2VzdXNwZW5kZWQgPSBmYWxzZTtcXG4gMzI2OlxcdFxcbiAzMjc6XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIDMyODpcXHRcXHRcXHRtdDc5MnhfcmVzZXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDMyOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6MTg6MDIuMDQ0ODQ1NzQxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQyNzQyNTUzNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgc25pcHBldCwgZnJhbWVkIGFzIG15IGludGVybmFsIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgTVQ3OTIxVSBEcml2ZXIgUHJvYmUgYW5kIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gd2UncmUgc3RhcnRpbmcgd2l0aCBgbXQ3OTIxdV9wcm9iZWAuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQsIHRoZSBmaXJzdCBwbGFjZSB0aGUgZHJpdmVyIGdldHMgaW52b2x2ZWQgd2l0aCB0aGUgZGV2aWNlLiBOYXR1cmFsbHksIHRoZSBuZXh0IGNhbGwgaXMgdG8gYG10NzkyMXVfaW5pdGAsIHRoZSBtYWluIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiBUbyB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIEknbGwgbmVlZCB0byBzZWUgaG93IHRoZSBzeXN0ZW0gaXMgc2V0dGluZyB1cCB0aGUgY2hpcC5cblxuTGV0J3MgcXVpY2tseSBqdW1wIGludG8gdGhlIGNvZGUuIExpbmVzIDIwMCB0aHJvdWdoIDI1MCBpbiBgbXQ3OTIxL3VzYi5jYCBzaG91bGQgZ2l2ZSBtZSBhIHByZXR0eSBnb29kIG92ZXJ2aWV3IG9mIHdoYXQncyBoYXBwZW5pbmcgZHVyaW5nIHRoZSBpbml0aWFsIHNldHVwLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSB0aGluZ3MgbGlrZSBkZXZpY2UgcmVzb3VyY2UgYWxsb2NhdGlvbiwgcG90ZW50aWFsbHkgc29tZSBiYXNpYyBoYXJkd2FyZSByZXNldHMsIGFuZCBtYXliZSB0aGUgaW5pdGlhbCBjb25maWd1cmF0aW9uIG9mIHRoZSBVU0IgZW5kcG9pbnRzLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHJlZ2lzdGVyIGFjY2VzcyBwYXR0ZXJucyBhbmQgbWVtb3J5IGFsbG9jYXRpb25zIC0gdGhvc2UgYXJlIGFsd2F5cyBnb29kIGluZGljYXRvcnMgb2YgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4gSSdsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBlcnJvciBoYW5kbGluZyB3aXRoaW4gdGhvc2UgbGluZXMuIFRoYXQncyBhIGNyaXRpY2FsIGFyZWEgZm9yIGRldmljZSBwcm9iaW5nLCB3aGVyZSB0aGluZ3MgY2FuIGdvIHdyb25nIGlmIHRoZSBkZXZpY2UgaXNuJ3QgcHJvcGVybHkgY29ubmVjdGVkIG9yIHN1cHBvcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE3ODksIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDAyOjE4OjA2LjMxOTEwMzM5NloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTIyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjAwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjAwOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAyMDE6XFx0XFxuIDIwMjpcXHRcXHRkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkyeF9kZXYsIG10NzYpO1xcbiAyMDM6XFx0XFx0ZGV2LVxcdTAwM2Vmd19mZWF0dXJlcyA9IGZlYXR1cmVzO1xcbiAyMDQ6XFx0XFx0ZGV2LVxcdTAwM2VoaWZfb3BzID0gXFx1MDAyNmhpZl9vcHM7XFxuIDIwNTpcXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYuYnVzX2h1bmcsIGZhbHNlKTtcXG4gMjA2OlxcdFxcdG10NzkyeHVfcmVzZXRfd29ya19pbml0KGRldik7XFxuIDIwNzpcXHRcXG4gMjA4OlxcdFxcdHVzYl9yZXNldF9kZXZpY2UodWRldik7XFxuIDIwOTpcXHRcXG4gMjEwOlxcdFxcdHVzYl9zZXRfaW50ZmRhdGEodXNiX2ludGYsIGRldik7XFxuIDIxMTpcXHRcXG4gMjEyOlxcdFxcdHJldCA9IF9fbXQ3NnVfaW5pdChtZGV2LCB1c2JfaW50ZiwgXFx1MDAyNmJ1c19vcHMpO1xcbiAyMTM6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDIxNDpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiAyMTU6XFx0XFxuIDIxNjpcXHRcXHRtZGV2LVxcdTAwM2VyZXYgPSAobXQ3Nl9ycihkZXYsIE1UX0hXX0NISVBJRCkgXFx1MDAzY1xcdTAwM2MgMTYpIHxcXG4gMjE3OlxcdFxcdFxcdCAgICAobXQ3Nl9ycihkZXYsIE1UX0hXX1JFVikgXFx1MDAyNiAweGZmKTtcXG4gMjE4OlxcdFxcdGRldl9kYmcobWRldi1cXHUwMDNlZGV2LCBcXFwiQVNJQyByZXZpc2lvbjogJTA0eFxcXFxuXFxcIiwgbWRldi1cXHUwMDNlcmV2KTtcXG4gMjE5OlxcdFxcbiAyMjA6XFx0XFx0aWYgKG10NzZfZ2V0X2ZpZWxkKGRldiwgTVRfQ09OTl9PTl9NSVNDLCBNVF9UT1BfTUlTQzJfRldfTjlfUkRZKSkge1xcbiAyMjE6XFx0XFx0XFx0cmV0ID0gbXQ3OTJ4dV93ZnN5c19yZXNldChkZXYpO1xcbiAyMjI6XFx0XFx0XFx0aWYgKHJldClcXG4gMjIzOlxcdFxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDIyNDpcXHRcXHR9XFxuIDIyNTpcXHRcXG4gMjI2OlxcdFxcdHJldCA9IG10NzkyeHVfbWN1X3Bvd2VyX29uKGRldik7XFxuIDIyNzpcXHRcXHRpZiAocmV0KVxcbiAyMjg6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gMjI5OlxcdFxcbiAyMzA6XFx0XFx0cmV0ID0gbXQ3NnVfYWxsb2NfbWN1X3F1ZXVlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbiAyMzE6XFx0XFx0aWYgKHJldClcXG4gMjMyOlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDIzMzpcXHRcXG4gMjM0OlxcdFxcdHJldCA9IG10NzZ1X2FsbG9jX3F1ZXVlcyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMjM1OlxcdFxcdGlmIChyZXQpXFxuIDIzNjpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiAyMzc6XFx0XFxuIDIzODpcXHRcXHRyZXQgPSBtdDc5Mnh1X2RtYV9pbml0KGRldiwgZmFsc2UpO1xcbiAyMzk6XFx0XFx0aWYgKHJldClcXG4gMjQwOlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDI0MTpcXHRcXG4gMjQyOlxcdFxcdGh3ID0gbXQ3Nl9odyhkZXYpO1xcbiAyNDM6XFx0XFx0LyogY2hlY2sgaHcgc2cgc3VwcG9ydCBpbiBvcmRlciB0byBlbmFibGUgQU1TRFUgKi9cXG4gMjQ0OlxcdFxcdGh3LVxcdTAwM2VtYXhfdHhfZnJhZ21lbnRzID0gbWRldi1cXHUwMDNldXNiLnNnX2VuID8gTVRfSFdfVFhQX01BWF9CVUZfTlVNIDogMTtcXG4gMjQ1OlxcdFxcbiAyNDY6XFx0XFx0cmV0ID0gbXQ3OTIxX3JlZ2lzdGVyX2RldmljZShkZXYpO1xcbiAyNDc6XFx0XFx0aWYgKHJldClcXG4gMjQ4OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDI0OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6MTg6MDYuMzE5MjE3Mjk2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE0MDE2NjgyODM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBNVDc5MnggQUNQSSBTQVIgUG93ZXIgQ2FsY3VsYXRpb24gQ29kZSBmb3IgRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGNvZGUgaW4gYG10NzkyeF9hY3BpX3Nhci5jYCBpcyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgU3BlY2lmaWMgQWJzb3JwdGlvbiBSYXRlIChTQVIpIHBvd2VyIGNhbGN1bGF0aW9ucyBmb3IgTWVkaWFUZWsgTVQ3OTJ4IFdpLUZpIGRldmljZXMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBtdDc2YCB3aXJlbGVzcyBkcml2ZXIuIFRoZSBpbml0aWFsIGNhbGwgaXMgdHJpZ2dlcmVkIGJ5IGBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlYCB3aGljaCBjYWxscyBgbXQ3OTJ4X2luaXRfYWNwaV9zYXJgLiAgVGhpcyBmdW5jdGlvbiBjYWxscyBzZXZlcmFsIEFDUEkgcmVhZCBmdW5jdGlvbnMsIG5hbWVseSBgbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Y2xgLCBgbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210ZHNgLCBgbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Z3NgLCBhbmQgYG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGZnYCB3aGljaCBhdHRlbXB0IHRvIHJlYWQgcHJvcHJpZXRhcnkgTWVkaWFUZWsgQUNQSSBtZXRob2RzIHN1Y2ggYXMgYE1UQ0xgLCBgTVREU2AsIGBNVEdTYCwgYW5kIGBNVEZHYCBmcm9tIHRoZSBBQ1BJIERTRFQvU1NEVCB0YWJsZXMuIFRoZXNlIGZ1bmN0aW9ucyBhbGwgY2FsbCBgbXQ3OTJ4X2FjcGlfcmVhZGAsIHdoaWNoIGF0dGVtcHRzIHRvIHJldHJpZXZlIGFuIEFDUEkgaGFuZGxlIGZyb20gdGhlIGRldmljZS5cblxuTm93LCBoZXJlJ3MgdGhlIGNydWNpYWwgcG9pbnQ6IEkga25vdyB0aGF0IGluIHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpIGVudmlyb25tZW50cywgd2hpY2ggYXJlIHdoYXQgd2UgdXNlIGZvciBmdXp6aW5nLCB0aGVzZSBNZWRpYVRlay1zcGVjaWZpYyBBQ1BJIG1ldGhvZHMgc2ltcGx5ICpkb24ndCBleGlzdCouIFFFTVUgZ2VuZXJhdGVzIGl0cyBvd24gQUNQSSB0YWJsZXMgZm9yIGVtdWxhdGVkIGRldmljZXMsIGFuZCB0aGVzZSB0YWJsZXMgY29udGFpbiBzdGFuZGFyZCBBQ1BJIG9iamVjdHMsIGJ1dCBub3QgdGhlIE1lZGlhVGVrIHByb3ByaWV0YXJ5IG9uZXMuICBFdmVuIGlmIHdlIHdlcmUgdG8gZW11bGF0ZSBhIFVTQiBvciBQQ0llIGRldmljZSwgdGhlIEFDUEkgdGFibGVzIGNvbnRhaW5pbmcgYE1UQ0xgLCBgTVREU2AsIGFuZCBmcmllbmRzIGFyZSBkZWZpbmVkIG9uIHJlYWwtd29ybGQgTWVkaWFUZWsgT0VNIGhhcmR3YXJlLCBzdWNoIGFzIG9uIGxhcHRvcHMgZnJvbSBBU1VTLCBMZW5vdm8sIG9yIEhQLiBUaGVyZWZvcmUsIGBtdDc5MnhfYWNwaV9yZWFkYCBpcyBhbHdheXMgZ29pbmcgdG8gZmFpbCB3aXRoIGAtRU9QTk9UU1VQUGAgb3IgYC1FSU9gLiBUaGlzIHRoZW4gbWVhbnMgdGhhdCB0aGUgY29ycmVzcG9uZGluZyBgYXNhci1cdTAwM2VkeW5gLCBgYXNhci1cdTAwM2VnZW9gLCBgYXNhci1cdTAwM2Vjb3VudHJ5bGlzdGAgYW5kIGBhc2FyLVx1MDAzZWZnYCB3aWxsIGJlIE5VTEwuXG5cblRoZSBwYXRjaCBpdHNlbGYgbW9kaWZpZXMgYG10NzkyeF9hc2FyX2dldF9nZW9fcHdyYCBhbmQgYG10NzkyeF9hc2FyX3JhbmdlX3B3cmAuIFRoZSBjcml0aWNhbCBmYWN0b3IgaXMgdGhlaXIgY2FsbGluZyBjb250ZXh0LiBCb3RoIHRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgYnkgYG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKClgLiBCdXQgd2FpdCwgYG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyYCBoYXMgYW4gZWFybHkgcmV0dXJuIGNvbmRpdGlvbjogYGlmICghcGh5LVx1MDAzZWFjcGlzYXIgfHwgISgoc3RydWN0IG10NzkyeF9hY3BpX3NhciAqKXBoeS1cdTAwM2VhY3Bpc2FyKS1cdTAwM2VkeW4pIHJldHVybiAwO2AuIFRoaXMgbWVhbnMgaWYgYGR5bmAgaXMgTlVMTCwgdGhlIGZ1bmN0aW9uIGltbWVkaWF0ZWx5IHJldHVybnMgd2l0aG91dCBldmVyIGV4ZWN1dGluZyBgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3JgIG9yIGBtdDc5MnhfYXNhcl9yYW5nZV9wd3JgLiAgUmVtZW1iZXIgYGR5bmAgaXMgcG9wdWxhdGVkIHRocm91Z2ggYG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGRzYCBhZnRlciBzdWNjZXNzZnVsbHkgcmVhZGluZyB0aGUgTVREUyB0YWJsZS5cblxuQ29uc2lkZXJpbmcgYWxsIHRoaXMsIGV2ZW4gaWYgd2UgKmNvdWxkKiBzb21laG93IGdldCBhIE1lZGlhVGVrIE1UNzkyMS9NVDc5MjUgUENJZS9VU0IgZGV2aWNlIHByb2JlZCBpbiBRRU1VLCB3aGljaCBpdHNlbGYgaXMgaGlnaGx5IGltcHJvYmFibGUgZHVlIHRvIHRoZSBoYXJkd2FyZS1zcGVjaWZpYyByZWdpc3RlciBhY2Nlc3MgYW5kIGZpcm13YXJlIGxvYWRpbmcgcmVxdWlyZW1lbnRzIG9mIGBtdDc5MjF1X3Byb2JlYCBvciBzaW1pbGFyIHJvdXRpbmVzLCB3ZSB3b3VsZCBzdGlsbCBmYWlsIHRvIGV4ZWN1dGUgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aC4gUUVNVSBkb2VzIG5vdCBlbXVsYXRlIHRoZSBNVDc5Mnggd2lyZWxlc3MgY2hpcHNldCwgYW5kIFFFTVUncyBBQ1BJIHRhYmxlcyAqbmV2ZXIqIGluY2x1ZGUgTWVkaWFUZWsncyBwcm9wcmlldGFyeSBgTVREU2AvYE1UR1NgIFNBUiBtZXRob2RzLlxuXG5Db25zZXF1ZW50bHksIHNpbmNlIHRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgYXJlIHVucmVhY2hhYmxlIGluIG91ciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cywgdGhlcmUncyBubyBuZWVkIHRvIGZ1enogdGhpcy4gSXQgaXMgYSBkZWFkIGVuZC4gTm8gbmVlZCB0byBlbmFibGUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIG9yIGZvY3VzIG9uIGFueSBzeW1ib2xzLiBUaGUgZW50aXJlIGNvZGUgcGF0aCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyOTU1LCJPdXRwdXRUb2tlbnMiOjEzOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NDUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjoxODoyMC4zMzU5MDM0NTJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzIxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBBQ1BJIFNBUiAoU3BlY2lmaWMgQWJzb3JwdGlvbiBSYXRlKSBwb3dlciBsaW1pdCBoYW5kbGluZyBpbiB0aGUgTWVkaWFUZWsgbXQ3OTJ4IHdpcmVsZXNzIGRyaXZlciAobXQ3OTJ4X2FjcGlfc2FyLmMpLiBUaGVzZSBjb2RlIHBhdGhzIGFyZSBvbmx5IGV4ZWN1dGVkIHdoZW4gcHJvcHJpZXRhcnkgTWVkaWFUZWsgQUNQSSBTQVIgbWV0aG9kcyAoTVREUywgTVRHUykgYXJlIGV2YWx1YXRlZCBmcm9tIHBsYXRmb3JtIGZpcm13YXJlIG9uIHBoeXNpY2FsIGhhcmR3YXJlIHdpdGggTWVkaWFUZWsgV2ktRmkgYWRhcHRlcnMuIEluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG5vIHN1Y2ggQUNQSSB0YWJsZXMgb3IgaGFyZHdhcmUgYXJlIHByZXNlbnQsIG1ha2luZyB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEFDUEkgU0FSIChTcGVjaWZpYyBBYnNvcnB0aW9uIFJhdGUpIHBvd2VyIGxpbWl0IGhhbmRsaW5nIGluIHRoZSBNZWRpYVRlayBtdDc5Mnggd2lyZWxlc3MgZHJpdmVyIChtdDc5MnhfYWNwaV9zYXIuYykuIFRoZXNlIGNvZGUgcGF0aHMgYXJlIG9ubHkgZXhlY3V0ZWQgd2hlbiBwcm9wcmlldGFyeSBNZWRpYVRlayBBQ1BJIFNBUiBtZXRob2RzIChNVERTLCBNVEdTKSBhcmUgZXZhbHVhdGVkIGZyb20gcGxhdGZvcm0gZmlybXdhcmUgb24gcGh5c2ljYWwgaGFyZHdhcmUgd2l0aCBNZWRpYVRlayBXaS1GaSBhZGFwdGVycy4gSW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbm8gc3VjaCBBQ1BJIHRhYmxlcyBvciBoYXJkd2FyZSBhcmUgcHJlc2VudCwgbWFraW5nIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6MTg6MjAuMzM1OTMwODAyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2bsr4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 01:31:02 +0000 UTC FinishedAt: 2026-09-10 02:18:21 +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+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQUNQSSBTQVIgKFNwZWNpZmljIEFic29ycHRpb24gUmF0ZSkgcG93ZXIgbGltaXQgaGFuZGxpbmcgaW4gdGhlIE1lZGlhVGVrIG10NzkyeCB3aXJlbGVzcyBkcml2ZXIgKG10NzkyeF9hY3BpX3Nhci5jKS4gVGhlc2UgY29kZSBwYXRocyBhcmUgb25seSBleGVjdXRlZCB3aGVuIHByb3ByaWV0YXJ5IE1lZGlhVGVrIEFDUEkgU0FSIG1ldGhvZHMgKE1URFMsIE1UR1MpIGFyZSBldmFsdWF0ZWQgZnJvbSBwbGF0Zm9ybSBmaXJtd2FyZSBvbiBwaHlzaWNhbCBoYXJkd2FyZSB3aXRoIE1lZGlhVGVrIFdpLUZpIGFkYXB0ZXJzLiBJbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBubyBzdWNoIEFDUEkgdGFibGVzIG9yIGhhcmR3YXJlIGFyZSBwcmVzZW50LCBtYWtpbmcgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjE3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjhhY2Y0OTExYjk4ZDVkZDRiMDVlOWNjMWJkZmUzZDQxOGI2NTE0Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDAyOjE3OjA0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jXG5pbmRleCA5NDZkZDc5NTZlNGEwLi45ZjBlYTNkMjNlMGY1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY1xuQEAgLTI3OSwxMCAmIzQzOzI3OSwxOCBAQCBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxuIFx0aWYgKGlkeCBcdTAwM2U9IG1heClcbiBcdFx0cmV0dXJuIGR5bl9wb3dlcjtcbiBcbi1cdGdlb19wb3dlciA9IChiYW5kX3B3ciAmIzQzOyBpZHgpLVx1MDAzZXB3cjtcbi1cdGR5bl9wb3dlciAmIzQzOz0gKGJhbmRfcHdyICYjNDM7IGlkeCktXHUwMDNlb2Zmc2V0O1xuJiM0MztcdGJhbmRfcHdyICYjNDM7PSBpZHg7XG4gXG4tXHRyZXR1cm4gbWluKGdlb19wb3dlciwgZHluX3Bvd2VyKTtcbiYjNDM7XHQvKiBTb21lIE9FTSB0YWJsZXMgY2FycnkgMHhmZiBoZXJlOyBuYXJyb3dlZCB0byBzOCB0aGF0IGlzIC0xIGFuZFxuJiM0MztcdCAqIHdpbnMgdGhlIG1pbigpIGJlbG93LiBUYWtlIGl0IGFzIG5vIGxpbWl0LlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChiYW5kX3B3ci1cdTAwM2Vwd3IgPT0gMHhmZilcbiYjNDM7XHRcdHJldHVybiBkeW5fcG93ZXI7XG4mIzQzO1xuJiM0MztcdGdlb19wb3dlciA9IGJhbmRfcHdyLVx1MDAzZXB3cjtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG1pbl90KGludCwgZ2VvX3Bvd2VyLFxuJiM0MztcdFx0ICAgICBtaW5fdChpbnQsIGR5bl9wb3dlciAmIzQzOyBiYW5kX3B3ci1cdTAwM2VvZmZzZXQsIDEyNykpO1xuIH1cbiBcbiBzdGF0aWMgczhcbkBAIC0zMTUsNyAmIzQzOzMyMyw5IEBAIG10NzkyeF9hc2FyX3JhbmdlX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxuIFx0ZWxzZVxuIFx0XHRiYW5kID0gTkw4MDIxMV9CQU5EXzJHSFo7XG4gXG4tXHRyZXR1cm4gbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3IocGh5LCBiYW5kLCBsaW1pdFtpZHhdKTtcbiYjNDM7XHQvKiAweGZmOiBubyBkeW5hbWljIGxpbWl0LCBzZWUgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3IoKSAqL1xuJiM0MztcdHJldHVybiBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cihwaHksIGJhbmQsXG4mIzQzO1x0XHRcdFx0ICAgICAgIGxpbWl0W2lkeF0gPT0gMHhmZiA/IDEyNyA6IGxpbWl0W2lkeF0pO1xuIH1cbiBcbiBpbnQgbXQ3OTJ4X2luaXRfYWNwaV9zYXJfcG93ZXIoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgYm9vbCBzZXRfZGVmYXVsdClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjoxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBBQ1BJIFNBUiAoU3BlY2lmaWMgQWJzb3JwdGlvbiBSYXRlKSBwb3dlciBsaW1pdCBoYW5kbGluZyBpbiB0aGUgTWVkaWFUZWsgbXQ3OTJ4IHdpcmVsZXNzIGRyaXZlciAobXQ3OTJ4X2FjcGlfc2FyLmMpLiBUaGVzZSBjb2RlIHBhdGhzIGFyZSBvbmx5IGV4ZWN1dGVkIHdoZW4gcHJvcHJpZXRhcnkgTWVkaWFUZWsgQUNQSSBTQVIgbWV0aG9kcyAoTVREUywgTVRHUykgYXJlIGV2YWx1YXRlZCBmcm9tIHBsYXRmb3JtIGZpcm13YXJlIG9uIHBoeXNpY2FsIGhhcmR3YXJlIHdpdGggTWVkaWFUZWsgV2ktRmkgYWRhcHRlcnMuIEluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG5vIHN1Y2ggQUNQSSB0YWJsZXMgb3IgaGFyZHdhcmUgYXJlIHByZXNlbnQsIG1ha2luZyB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2OGFjZjQ5MTFiOThkNWRkNGIwNWU5Y2MxYmRmZTNkNDE4YjY1MTRjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMTAgMDI6MTc6MDQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYwppbmRleCA5NDZkZDc5NTZlNGEwLi45ZjBlYTNkMjNlMGY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMKQEAgLTI3OSwxMCAmIzQzOzI3OSwxOCBAQCBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LAogCWlmIChpZHggJmd0Oz0gbWF4KQogCQlyZXR1cm4gZHluX3Bvd2VyOwogCi0JZ2VvX3Bvd2VyID0gKGJhbmRfcHdyICYjNDM7IGlkeCktJmd0O3B3cjsKLQlkeW5fcG93ZXIgJiM0Mzs9IChiYW5kX3B3ciAmIzQzOyBpZHgpLSZndDtvZmZzZXQ7CiYjNDM7CWJhbmRfcHdyICYjNDM7PSBpZHg7CiAKLQlyZXR1cm4gbWluKGdlb19wb3dlciwgZHluX3Bvd2VyKTsKJiM0MzsJLyogU29tZSBPRU0gdGFibGVzIGNhcnJ5IDB4ZmYgaGVyZTsgbmFycm93ZWQgdG8gczggdGhhdCBpcyAtMSBhbmQKJiM0MzsJICogd2lucyB0aGUgbWluKCkgYmVsb3cuIFRha2UgaXQgYXMgbm8gbGltaXQuCiYjNDM7CSAqLwomIzQzOwlpZiAoYmFuZF9wd3ItJmd0O3B3ciA9PSAweGZmKQomIzQzOwkJcmV0dXJuIGR5bl9wb3dlcjsKJiM0MzsKJiM0MzsJZ2VvX3Bvd2VyID0gYmFuZF9wd3ItJmd0O3B3cjsKJiM0MzsKJiM0MzsJcmV0dXJuIG1pbl90KGludCwgZ2VvX3Bvd2VyLAomIzQzOwkJICAgICBtaW5fdChpbnQsIGR5bl9wb3dlciAmIzQzOyBiYW5kX3B3ci0mZ3Q7b2Zmc2V0LCAxMjcpKTsKIH0KIAogc3RhdGljIHM4CkBAIC0zMTUsNyAmIzQzOzMyMyw5IEBAIG10NzkyeF9hc2FyX3JhbmdlX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LAogCWVsc2UKIAkJYmFuZCA9IE5MODAyMTFfQkFORF8yR0haOwogCi0JcmV0dXJuIG10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHBoeSwgYmFuZCwgbGltaXRbaWR4XSk7CiYjNDM7CS8qIDB4ZmY6IG5vIGR5bmFtaWMgbGltaXQsIHNlZSBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cigpICovCiYjNDM7CXJldHVybiBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cihwaHksIGJhbmQsCiYjNDM7CQkJCSAgICAgICBsaW1pdFtpZHhdID09IDB4ZmYgPyAxMjcgOiBsaW1pdFtpZHhdKTsKIH0KIAogaW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNjkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIENvZGUgUGF0Y2gqKgoKT2theSwgc28gdGhlIHBhdGNoIGlzIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtSaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyBjb2RlIGJlZm9yZSBJIGNhbiBhc3Nlc3MgaXRzIGltcGFjdC4mIzM0OyBNeSBleHBlcnQgaW5zdGluY3QgaXMgdG8gZGlzc2VjdCB0aGlzIHBpZWNlIGJ5IHBpZWNlLgoKRmlyc3QsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgZXhhY3QgZHJpdmVyIGluIHF1ZXN0aW9uLiAmIzM0O01UNzkyeCYjMzQ7IHN1Z2dlc3RzIE1lZGlhVGVrLCBzbyB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgc3BlY2lmaWMgZHJpdmVyIGlzIHV0aWxpemVkLiBJcyBpdCBmb3IgYSBwaHlzaWNhbCBoYXJkd2FyZSBpbnRlcmZhY2UgbGlrZSBQQ0llLCBVU0IsIFNESU8sIG9yIGlzIGl0IGFuIGludGVncmF0ZWQgU29DIHNvbHV0aW9uPyBEb2VzIGl0IGhhdmUgYW55IGltcGxpY2F0aW9ucyBmb3IgdmlydHVhbGl6YXRpb24sIGxpa2UgUUVNVSwgb3IgZXZlbiBjbG91ZC1uYXRpdmUgZW52aXJvbm1lbnRzPyBUaGlzIGlzIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIHdoZXJlIHRoaXMgcGF0Y2ggbWlnaHQgYmUgcmVsZXZhbnQgYW5kIGlmIGl0IGNvdWxkIHBvdGVudGlhbGx5IGludHJvZHVjZSBhbnkgY29tcGF0aWJpbGl0eSBpc3N1ZXMgaW4gdmlydHVhbGl6ZWQgc2V0dXBzLCB3aGljaCBpcyBhbHdheXMgYSBjb25jZXJuLgoKVG8gYWNoaWV2ZSB0aGF0LCBJIHdpbGwgaW1tZWRpYXRlbHkgbGV2ZXJhZ2UgYGdyZXBwZXJgIGFuZCBgcmVhZC1maWxlYCB0byBnZXQgYSBxdWljayBvdmVydmlldyBvZiBpdHMgdXNhZ2UuIFdpdGggdGhvc2UgdHdvIHRvb2xzLCBJIGNhbiBzdGFydCB0byBidWlsZCBhIHBpY3R1cmUgb2YgaXRzIHJvbGUgaW4gdGhlIGtlcm5lbCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIG1vZHVsZXMgYW5kIHRoZSB3aWRlciBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTJ4X2FzYXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9OTI9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzo5MzptdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRjbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlLCB1OCAqdmVyc2lvbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtOTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxMDE6XHRpZiAobGVuID09IHNpemVvZihzdHJ1Y3QgbXQ3OTJ4X2FzYXJfY2wpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxMDI6XHRcdCp2ZXJzaW9uID0gKChzdHJ1Y3QgbXQ3OTJ4X2FzYXJfY2wgKikqdGFibGUpLVx1MDAzZXZlcnNpb247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjEwMzpcdGVsc2UgaWYgKGxlbiA9PSBzaXplb2Yoc3RydWN0IG10NzkyeF9hc2FyX2NsX3YzKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTA0Olx0XHQqdmVyc2lvbiA9ICgoc3RydWN0IG10NzkyeF9hc2FyX2NsX3YzICopKnRhYmxlKS1cdTAwM2V2ZXJzaW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xMDUtXHRlbHNlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0xMTI9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxMTM6bXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210ZHMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKip0YWJsZSwgdTggdmVyc2lvbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTE0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTEyNC1cdGNhc2UgMTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTI1Olx0XHRlbmFibGUgPSAoKHN0cnVjdCBtdDc5MnhfYXNhcl9keW4gKikqdGFibGUpLVx1MDAzZWVuYWJsZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTI2Olx0XHRzYXJsZW4gPSBzaXplb2Yoc3RydWN0IG10NzkyeF9hc2FyX2R5bl9saW1pdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjEyNzpcdFx0cHJlbGVuID0gc2l6ZW9mKHN0cnVjdCBtdDc5MnhfYXNhcl9keW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xMjgtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xMjktXHRjYXNlIDI6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjEzMDpcdFx0ZW5hYmxlID0gKChzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZHluX3YyICopKnRhYmxlKS1cdTAwM2VlbmFibGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjEzMTpcdFx0c2FybGVuID0gc2l6ZW9mKHN0cnVjdCBtdDc5MnhfYXNhcl9keW5fbGltaXRfdjIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxMzI6XHRcdHByZWxlbiA9IHNpemVvZihzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZHluX3YyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTMzLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTE0Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjE0ODptdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRncyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlLCB1OCB2ZXJzaW9uKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xNDkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTU4LVx0Y2FzZSAxOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxNTk6XHRcdHNhcmxlbiA9IHNpemVvZihzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvX2xpbWl0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTYwOlx0XHRwcmVsZW4gPSBzaXplb2Yoc3RydWN0IG10NzkyeF9hc2FyX2dlbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTE2MS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTE2Mi1cdGNhc2UgMjpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTYzOlx0XHRzYXJsZW4gPSBzaXplb2Yoc3RydWN0IG10NzkyeF9hc2FyX2dlb19saW1pdF92Mik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjE2NDpcdFx0cHJlbGVuID0gc2l6ZW9mKHN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fdjIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xNjUtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MTc4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTc5Om10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGZnKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICoqdGFibGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTE4MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0xOTM9aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjIwMjpcdHJldCA9IG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGNsKGRldiwgKHU4ICoqKVx1MDAyNmFzYXItXHUwMDNlY291bnRyeWxpc3QsIFx1MDAyNmFzYXItXHUwMDNldmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjAzLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoyMDg6XHRyZXQgPSBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRkcyhkZXYsICh1OCAqKilcdTAwMjZhc2FyLVx1MDAzZWR5biwgYXNhci1cdTAwM2V2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMDktXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMTQtXHQvKiBNVEdTIGlzIG9wdGlvbmFsICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjIxNTpcdHJldCA9IG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzKGRldiwgKHU4ICoqKVx1MDAyNmFzYXItXHUwMDNlZ2VvLCBhc2FyLVx1MDAzZXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIxNi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIyMS1cdC8qIE1URkcgaXMgb3B0aW9uYWwgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjIyOlx0cmV0ID0gbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210ZmcoZGV2LCAodTggKiopXHUwMDI2YXNhci1cdTAwM2VmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIyMy1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTIzMz1zdGF0aWMgczhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjM0Om10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIzNS1cdFx0XHRlbnVtIG5sODAyMTFfYmFuZCBiYW5kLCBzOCBkeW5fcG93ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMzctXHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphc2FyID0gcGh5LVx1MDAzZWFjcGlzYXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjIzODpcdHN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fYmFuZCAqYmFuZF9wd3I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIzOS1cdHM4IGdlb19wb3dlcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTI5Nj1zdGF0aWMgczhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6Mjk3Om10NzkyeF9hc2FyX3JhbmdlX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yOTgtXHRcdCAgICAgIGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9zYXJfZnJlcV9yYW5nZXMgKnJhbmdlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozMjY6XHQvKiAweGZmOiBubyBkeW5hbWljIGxpbWl0LCBzZWUgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3IoKSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozMjc6XHRyZXR1cm4gbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3IocGh5LCBiYW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zMjgtXHRcdFx0XHQgICAgICAgbGltaXRbaWR4XSA9PSAweGZmID8gMTI3IDogbGltaXRbaWR4XSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0zMzE9aW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNTAtXHRcdGZycC1cdTAwM2Vwb3dlciA9IG1pbl90KHM4LCBzZXRfZGVmYXVsdCA/IDEyNyA6IGZycC1cdTAwM2Vwb3dlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MzUxOlx0XHRcdFx0ICAgbXQ3OTJ4X2FzYXJfcmFuZ2VfcHdyKHBoeSwgZnJwLVx1MDAzZXJhbmdlLCBpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM1Mi1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTM1OD11OCBtdDc5MnhfYWNwaV9nZXRfZmxhZ3Moc3RydWN0IG10NzkyeF9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM2MC1cdHN0cnVjdCBtdDc5MnhfYWNwaV9zYXIgKmFjcGlzYXIgPSBwaHktXHUwMDNlYWNwaXNhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MzYxOlx0c3RydWN0IG10NzkyeF9hc2FyX2ZnICpmZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzYyLVx0c3RydWN0IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTM5NT1zdGF0aWMgdTMyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjM5NjptdDc5MnhfYWNwaV9nZXRfbXRjbF9tYXBfdjMoaW50IHJvdywgaW50IGNvbHVtbiwgc3RydWN0IG10NzkyeF9hc2FyX2NsX3YzICpjbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzk3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTQwOT1zdGF0aWMgdTMyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjQxMDptdDc5MnhfYWNwaV9nZXRfbXRjbF9tYXAoaW50IHJvdywgaW50IGNvbHVtbiwgc3RydWN0IG10NzkyeF9hc2FyX2NsICpjbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtNDExLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTQyNz1tdDc5MnhfYWNwaV9wYXJzZV9tdGNsX3RibF92MyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBjaGFyICphbHBoYTIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy00MjktXHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICpzYXIgPSBwaHktXHUwMDNlYWNwaXNhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6NDMwOlx0c3RydWN0IG10NzkyeF9hc2FyX2NsX3YzICpjbCA9IHNhci1cdTAwM2Vjb3VudHJ5bGlzdF92MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtNDMxLVx0aW50IGNvbCwgcm93LCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9NDU2PW10NzkyeF9hY3BpX3BhcnNlX210Y2xfdGJsKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGNoYXIgKmFscGhhMilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTQ1OC1cdHN0cnVjdCBtdDc5MnhfYWNwaV9zYXIgKnNhciA9IHBoeS1cdTAwM2VhY3Bpc2FyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzo0NTk6XHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfY2wgKmNsID0gc2FyLVx1MDAzZWNvdW50cnlsaXN0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy00NjAtXHRpbnQgY29sLCByb3csIGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6MjA6c3RydWN0IG10NzkyeF9hc2FyX2R5bl9saW1pdCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTIxLVx0dTggaWR4O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjI1OnN0cnVjdCBtdDc5MnhfYXNhcl9keW4ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC0yNi1cdHU4IG5hbWVzWzRdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMjgtXHR1OCBucl90Ymw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjI5Olx0REVDTEFSRV9GTEVYX0FSUkFZKHN0cnVjdCBtdDc5MnhfYXNhcl9keW5fbGltaXQsIHRibCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTMwLX0gX19wYWNrZWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDozMjpzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZHluX2xpbWl0X3YyIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMzMtXHR1OCBpZHg7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6Mzc6c3RydWN0IG10NzkyeF9hc2FyX2R5bl92MiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTM4LVx0dTggbmFtZXNbNF07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC00MS1cdHU4IG5yX3RibDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6NDI6XHRERUNMQVJFX0ZMRVhfQVJSQVkoc3RydWN0IG10NzkyeF9hc2FyX2R5bl9saW1pdF92MiwgdGJsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNDMtfSBfX3BhY2tlZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjQ1OnN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fYmFuZCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTQ2LVx0dTggcHdyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjUwOnN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fbGltaXQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC01MS1cdHU4IGlkeDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNTItXHQvKiAwOjJHLCAxOjVHICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjUzOlx0c3RydWN0IG10NzkyeF9hc2FyX2dlb19iYW5kIGJhbmRbMl07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTU0LX0gX19wYWNrZWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDo1NjpzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNTctXHR1OCBuYW1lc1s0XTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTU5LVx0dTggbnJfdGJsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDo2MDpcdERFQ0xBUkVfRkxFWF9BUlJBWShzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvX2xpbWl0LCB0YmwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC02MS19IF9fcGFja2VkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC02Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6NjM6c3RydWN0IG10NzkyeF9hc2FyX2dlb19saW1pdF92MiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTY0LVx0dTggaWR4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC02NS1cdC8qIDA6MkcsIDE6NUcsIDI6NkcgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6NjY6XHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvX2JhbmQgYmFuZFszXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNjctfSBfX3BhY2tlZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjY5OnN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fdjIge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC03MC1cdHU4IG5hbWVzWzRdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNzMtXHR1OCBucl90Ymw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjc0Olx0REVDTEFSRV9GTEVYX0FSUkFZKHN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fbGltaXRfdjIsIHRibCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTc1LX0gX19wYWNrZWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDo3NzpzdHJ1Y3QgbXQ3OTJ4X2FzYXJfY2xfdjMge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC03OC1cdHU4IG5hbWVzWzRdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjg4OnN0cnVjdCBtdDc5MnhfYXNhcl9jbCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTg5LVx0dTggbmFtZXNbNF07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC05Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6OTc6c3RydWN0IG10NzkyeF9hc2FyX2ZnIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtOTgtXHR1OCBuYW1lc1s0XTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oPTEwNj1zdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTEwOC1cdHVuaW9uIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6MTA5Olx0XHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZHluICpkeW47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjExMDpcdFx0c3RydWN0IG10NzkyeF9hc2FyX2R5bl92MiAqZHluX3YyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC0xMTEtXHR9O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC0xMTItXHR1bmlvbiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjExMzpcdFx0c3RydWN0IG10NzkyeF9hc2FyX2dlbyAqZ2VvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDoxMTQ6XHRcdHN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fdjIgKmdlb192MjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMTE1LVx0fTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMTE2LVx0dW5pb24ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDoxMTc6XHRcdHN0cnVjdCBtdDc5MnhfYXNhcl9jbCAqY291bnRyeWxpc3Q7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjExODpcdFx0c3RydWN0IG10NzkyeF9hc2FyX2NsX3YzICpjb3VudHJ5bGlzdF92MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMTE5LVx0fTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6MTIwOlx0c3RydWN0IG10NzkyeF9hc2FyX2ZnICpmZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMTIxLX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzMDUKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEFDUEkgU0FSIENvbXBpbGF0aW9uIGFuZCBVc2FnZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGUgYG10NzkyeF9hY3BpX3Nhci5jYCBmaWxlIGZpdHMgaW50byB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgaG93IGl0JiMzOTtzIHV0aWxpemVkLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGRlbHZlIGludG8gdGhlIGBNYWtlZmlsZWAuIFRoYXQmIzM5O2xsIHRlbGwgbWUgaG93IHRoaXMgc3BlY2lmaWMgc291cmNlIGZpbGUgaXMgY29tcGlsZWQgYW5kIGxpbmtlZC4gSSBuZWVkIHRvIGlkZW50aWZ5IGFueSBkZXBlbmRlbmNpZXMsIGFueSBzcGVjaWZpYyBmbGFncyBiZWluZyB1c2VkLi4uIHRoZSB3aG9sZSBuaW5lIHlhcmRzLiBPbmNlIEkmIzM5O3ZlIGdvdCBhIGhhbmRsZSBvbiB0aGUgYnVpbGQgZW52aXJvbm1lbnQsIEkmIzM5O2xsIHRoZW4gbW92ZSBvbiB0byBwaW5wb2ludGluZyB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGNyaXRpY2FsIGhlcmU6IGBtdDc5MnhfaW5pdF9hY3BpX3NhcmAgYW5kIGBtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcmAuIEkmIzM5O20gZ29pbmcgdG8gdHJhY2sgZG93biBldmVyeSBpbnN0YW5jZSB3aGVyZSBlaXRoZXIgb2YgdGhlc2UgYXJlIGNhbGxlZC4gVGhpcyB3aWxsIHBhaW50IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhlc2UgU0FSIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyBhcmUgYmVpbmcgaW50ZWdyYXRlZCBpbnRvIHRoZSBkcml2ZXIgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB3aGVuIGFuZCB3aHkgdGhleSYjMzk7cmUgYmVpbmcgZXhlY3V0ZWQuIEZyb20gdGhlcmUgSSBjYW4gZGV0ZXJtaW5lIHRoZSBvdmVyYWxsIGZsb3cgYW5kIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyeF9pbml0X2FjcGlfc2FyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9MTcwPWludCBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyMjE6XHRtdDc5MnhfaW5pdF9hY3BpX3NhcihkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIyMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM9MTI4Nj1pbnQgbXQ3OTIxX3NldF90eF9zYXJfcHdyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0xMjk2LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjEyOTc6XHRtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihtdDc5MnhfaHdfcGh5KGh3KSwgIXNhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMTI5OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM9MjQzPWludCBtdDc5MjVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyOTI6XHRtdDc5MnhfaW5pdF9hY3BpX3NhcihkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI5My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MTg3OT1pbnQgbXQ3OTI1X3NldF90eF9zYXJfcHdyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xODg5LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE4OTA6XHRtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihtdDc5MnhfaHdfcGh5KGh3KSwgIXNhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTg5MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oPTYzMD1pbnQgbXQ3OTJ4ZV9tY3VfZndfcG1jdHJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtNjMyLSNpZmRlZiBDT05GSUdfQUNQSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2MzM6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2MzQ6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC02MzUtdTggbXQ3OTJ4X2FjcGlfZ2V0X2ZsYWdzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD02MzY9dTMyIG10NzkyeF9hY3BpX2dldF9tdGNsX2NvbmYoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtNjM3LSNlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oOjYzODpzdGF0aWMgaW5saW5lIGludCBtdDc5MnhfaW5pdF9hY3BpX3NhcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC02Mzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtNjQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2NDM6c3RhdGljIGlubGluZSBpbnQgbXQ3OTJ4X2luaXRfYWNwaV9zYXJfcG93ZXIoc3RydWN0IG10NzkyeF9waHkgKnBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtNjQ0LVx0XHRcdFx0XHQgICAgIGJvb2wgc2V0X2RlZmF1bHQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0xNzk9bXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Zmcoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKip0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTE5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTkzOmludCBtdDc5MnhfaW5pdF9hY3BpX3NhcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xOTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjMwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjMxOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeF9pbml0X2FjcGlfc2FyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjMyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9Mjk3PW10NzkyeF9hc2FyX3JhbmdlX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozMzE6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTMzMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNTUtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozNTY6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTJ4X2luaXRfYWNwaV9zYXJfcG93ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNTctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI0MzgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgbXQ3OTIxYCBhbmQgYG10NzkyNWAgQ2hpcHNldHMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgZGV2aWNlcyB0aGF0IHV0aWxpemUgdGhlIGBtdDc5MjFgIGFuZCBgbXQ3OTI1YCBjaGlwc2V0cy4gV2hhdCYjMzk7cyB0aGUgbGFuZHNjYXBlIGhlcmU/IEFyZSB3ZSBwcmltYXJpbHkgbG9va2luZyBhdCBlbWJlZGRlZCBzb2x1dGlvbnMsIG9yIGFyZSB0aGVyZSBVU0IgdmVyc2lvbnMgbWFraW5nIHRoZSByb3VuZHM/IEFuZCB3aGF0IGFib3V0IFBDSWUgb3IgU0RJTyBpbXBsZW1lbnRhdGlvbnM/IE5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBpbnRlcmZhY2UgdmFyaWF0aW9ucy4gQWxyaWdodCwgdGltZSB0byBjcmFjayBvcGVuIHRoZSBrZXJuZWwgc291cmNlIGFuZCBzdGFydCBkaWdnaW5nLiBJJiMzOTtsbCB6ZXJvIGluIG9uIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9gIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGludG8gdGhlIGBtdDc5MjEvYCBhbmQgYG10NzkyNS9gIHN1YmRpcmVjdG9yaWVzIHRvIHNlZSB3aGF0IGtpbmQgb2YgYXJjaGl0ZWN0dXJlIGFuZCBkZXZpY2UgaW1wbGVtZW50YXRpb25zIHdlIGhhdmUgaGVyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgYmFzZWxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtkZWJ1Z2ZzLmMmIzM0OywKICAgICYjMzQ7aW5pdC5jJiMzNDssCiAgICAmIzM0O21hYy5jJiMzNDssCiAgICAmIzM0O21haW4uYyYjMzQ7LAogICAgJiMzNDttY3UuYyYjMzQ7LAogICAgJiMzNDttY3UuaCYjMzQ7LAogICAgJiMzNDttdDc5MjEuaCYjMzQ7LAogICAgJiMzNDtwY2kuYyYjMzQ7LAogICAgJiMzNDtwY2lfbWFjLmMmIzM0OywKICAgICYjMzQ7cGNpX21jdS5jJiMzNDssCiAgICAmIzM0O3JlZ2QuYyYjMzQ7LAogICAgJiMzNDtyZWdkLmgmIzM0OywKICAgICYjMzQ7cmVncy5oJiMzNDssCiAgICAmIzM0O3NkaW8uYyYjMzQ7LAogICAgJiMzNDtzZGlvX21hYy5jJiMzNDssCiAgICAmIzM0O3NkaW9fbWN1LmMmIzM0OywKICAgICYjMzQ7dGVzdG1vZGUuYyYjMzQ7LAogICAgJiMzNDt1c2IuYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4ODMKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiA5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVU0IgRGV2aWNlIGFuZCBBQ1BJIFNBUiBJbnZlc3RpZ2F0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBzcG90dGVkIGB1c2IuY2Ag4oCTIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZSBNVDc5MjEgYW5kIE1UNzkyNSBjaGlwc2V0czsgSSYjMzk7bGwgY2hlY2sgYG10NzkyMS91c2IuY2AgYW5kIGBtdDc5MjUvdXNiLmNgIG5leHQsIHNlZWluZyB3aGF0IHRoZXkmIzM5O3JlIGRvaW5nIG9uIHRoZSBVU0IgZnJvbnQuIEJ1dCB0aGVuLCBhIHJlZCBmbGFnIHBvcHBlZCB1cDogd2hhdCBhYm91dCBBQ1BJIFNBUj8gQ2FuIGEgVVNCIGRldmljZSBldmVuICp1c2UqIEFDUEkgU0FSPyBUaGF0JiMzOTtzIHRoZSBxdWVzdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IEFDUEkgU0FSIGlzIHByb2JlZCBhbmQgaW5pdGlhbGl6ZWQgaW4gcmVsYXRpb24gdG8gdGhlc2UgZGV2aWNlcy4gTGV0JiMzOTtzIGRpZyBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgbG93ZG93biBvbiBob3cgdGhlIEFDUEkgU0FSIGZ1bmN0aW9uYWxpdHkgaXMgaGFuZGxlZCBpbiB0aGlzIE1lZGlhdGVrIGNvbnRleHQuIEkmIzM5O20gaG9waW5nIEkgY2FuIHBpZWNlIHRvZ2V0aGVyIHRoZSBpbnRlcnJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBVU0IgZGV2aWNlIGFuZCBBQ1BJIFNBUiBmcm9tIHRoYXQgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHQvKiBDb3B5cmlnaHQgKEMpIDIwMjMgTWVkaWFUZWsgSW5jLiAqL1xuICAgMzpcdFxuICAgNDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2FjcGkuaFx1MDAzZVxuICAgNTpcdCNpbmNsdWRlIFwmIzM0O210NzkyeC5oXCYjMzQ7XG4gICA2Olx0XG4gICA3Olx0c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBjY19saXN0X2FsbFtdID0ge1xuICAgODpcdFx0XCYjMzQ7MDBcJiMzNDssIFwmIzM0O0VVXCYjMzQ7LCBcJiMzNDtBUlwmIzM0OywgXCYjMzQ7QVVcJiMzNDssIFwmIzM0O0FaXCYjMzQ7LCBcJiMzNDtCWVwmIzM0OywgXCYjMzQ7Qk9cJiMzNDssIFwmIzM0O0JSXCYjMzQ7LFxuICAgOTpcdFx0XCYjMzQ7Q0FcJiMzNDssIFwmIzM0O0NMXCYjMzQ7LCBcJiMzNDtDTlwmIzM0OywgXCYjMzQ7SURcJiMzNDssIFwmIzM0O0pQXCYjMzQ7LCBcJiMzNDtNWVwmIzM0OywgXCYjMzQ7TVhcJiMzNDssIFwmIzM0O01FXCYjMzQ7LFxuICAxMDpcdFx0XCYjMzQ7TUFcJiMzNDssIFwmIzM0O05aXCYjMzQ7LCBcJiMzNDtOR1wmIzM0OywgXCYjMzQ7UEhcJiMzNDssIFwmIzM0O1JVXCYjMzQ7LCBcJiMzNDtSU1wmIzM0OywgXCYjMzQ7U0dcJiMzNDssIFwmIzM0O0tSXCYjMzQ7LFxuICAxMTpcdFx0XCYjMzQ7VFdcJiMzNDssIFwmIzM0O1RIXCYjMzQ7LCBcJiMzNDtVQVwmIzM0OywgXCYjMzQ7R0JcJiMzNDssIFwmIzM0O1VTXCYjMzQ7LCBcJiMzNDtWTlwmIzM0OywgXCYjMzQ7S0hcJiMzNDssIFwmIzM0O1BZXCYjMzQ7LFxuICAxMjpcdH07XG4gIDEzOlx0XG4gIDE0Olx0c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBjY19saXN0X2V1W10gPSB7XG4gIDE1Olx0XHRcJiMzNDtBRFwmIzM0OywgXCYjMzQ7QVRcJiMzNDssIFwmIzM0O0JFXCYjMzQ7LCBcJiMzNDtCR1wmIzM0OywgXCYjMzQ7Q1lcJiMzNDssIFwmIzM0O0NaXCYjMzQ7LCBcJiMzNDtIUlwmIzM0OywgXCYjMzQ7REtcJiMzNDssXG4gIDE2Olx0XHRcJiMzNDtFRVwmIzM0OywgXCYjMzQ7RklcJiMzNDssIFwmIzM0O0ZSXCYjMzQ7LCBcJiMzNDtERVwmIzM0OywgXCYjMzQ7R1JcJiMzNDssIFwmIzM0O0hVXCYjMzQ7LCBcJiMzNDtJU1wmIzM0OywgXCYjMzQ7SUVcJiMzNDssXG4gIDE3Olx0XHRcJiMzNDtJVFwmIzM0OywgXCYjMzQ7TFZcJiMzNDssIFwmIzM0O0xJXCYjMzQ7LCBcJiMzNDtMVFwmIzM0OywgXCYjMzQ7TFVcJiMzNDssIFwmIzM0O01DXCYjMzQ7LCBcJiMzNDtNVFwmIzM0OywgXCYjMzQ7TkxcJiMzNDssXG4gIDE4Olx0XHRcJiMzNDtOT1wmIzM0OywgXCYjMzQ7UExcJiMzNDssIFwmIzM0O1BUXCYjMzQ7LCBcJiMzNDtST1wmIzM0OywgXCYjMzQ7U0tcJiMzNDssIFwmIzM0O1NJXCYjMzQ7LCBcJiMzNDtFU1wmIzM0OywgXCYjMzQ7U0VcJiMzNDssXG4gIDE5Olx0XHRcJiMzNDtDSFwmIzM0OyxcbiAgMjA6XHR9O1xuICAyMTpcdFxuICAyMjpcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY2NfbGlzdF9iZVtdID0ge1xuICAyMzpcdFx0XCYjMzQ7QVJcJiMzNDssIFwmIzM0O0JSXCYjMzQ7LCBcJiMzNDtCWVwmIzM0OywgXCYjMzQ7Q0xcJiMzNDssIFwmIzM0O0lRXCYjMzQ7LCBcJiMzNDtNWFwmIzM0OywgXCYjMzQ7T01cJiMzNDssIFwmIzM0O1JVXCYjMzQ7LFxuICAyNDpcdFx0XCYjMzQ7UldcJiMzNDssIFwmIzM0O1ZOXCYjMzQ7LCBcJiMzNDtLUlwmIzM0OywgXCYjMzQ7VUFcJiMzNDssIFwmIzM0O1wmIzM0OywgXCYjMzQ7XCYjMzQ7LCBcJiMzNDtcJiMzNDssIFwmIzM0O1wmIzM0OyxcbiAgMjU6XHRcdFwmIzM0O0VVXCYjMzQ7LCBcJiMzNDtBVFwmIzM0OywgXCYjMzQ7Q05cJiMzNDssIFwmIzM0O0NBXCYjMzQ7LCBcJiMzNDtUV1wmIzM0OywgXCYjMzQ7TlpcJiMzNDssIFwmIzM0O1BIXCYjMzQ7LCBcJiMzNDtVS1wmIzM0OyxcbiAgMjY6XHRcdFwmIzM0O1VTXCYjMzQ7LFxuICAyNzpcdH07XG4gIDI4Olx0XG4gIDI5Olx0c3RhdGljIGludFxuICAzMDpcdG10NzkyeF9hY3BpX3JlYWQoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKm1ldGhvZCwgdTggKip0YmwsIHUzMiAqbGVuKVxuICAzMTpcdHtcbiAgMzI6XHRcdHN0cnVjdCBhY3BpX2J1ZmZlciBidWYgPSB7IEFDUElfQUxMT0NBVEVfQlVGRkVSLCBOVUxMIH07XG4gIDMzOlx0XHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSBcdTAwMjZkZXYtXHUwMDNlbXQ3NjtcbiAgMzQ6XHRcdHVuaW9uIGFjcGlfb2JqZWN0ICpzYXJfcm9vdDtcbiAgMzU6XHRcdGFjcGlfaGFuZGxlIHJvb3QsIGhhbmRsZTtcbiAgMzY6XHRcdGFjcGlfc3RhdHVzIHN0YXR1cztcbiAgMzc6XHRcdHUzMiBpID0gMDtcbiAgMzg6XHRcdGludCByZXQ7XG4gIDM5Olx0XG4gIDQwOlx0XHRyb290ID0gQUNQSV9IQU5ETEUobWRldi1cdTAwM2VkZXYpO1xuICA0MTpcdFx0aWYgKCFyb290KVxuICA0MjpcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gIDQzOlx0XG4gIDQ0Olx0XHRzdGF0dXMgPSBhY3BpX2dldF9oYW5kbGUocm9vdCwgbWV0aG9kLCBcdTAwMjZoYW5kbGUpO1xuICA0NTpcdFx0aWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKVxuICA0NjpcdFx0XHRyZXR1cm4gLUVJTztcbiAgNDc6XHRcbiAgNDg6XHRcdHN0YXR1cyA9IGFjcGlfZXZhbHVhdGVfb2JqZWN0KGhhbmRsZSwgTlVMTCwgTlVMTCwgXHUwMDI2YnVmKTtcbiAgNDk6XHRcdGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSlcbiAgNTA6XHRcdFx0cmV0dXJuIC1FSU87XG4gIDUxOlx0XG4gIDUyOlx0XHRzYXJfcm9vdCA9IGJ1Zi5wb2ludGVyO1xuICA1MzpcdFx0aWYgKHNhcl9yb290LVx1MDAzZXR5cGUgIT0gQUNQSV9UWVBFX1BBQ0tBR0UgfHxcbiAgNTQ6XHRcdCAgICBzYXJfcm9vdC1cdTAwM2VwYWNrYWdlLmNvdW50IFx1MDAzYyA0IHx8XG4gIDU1Olx0XHQgICAgc2FyX3Jvb3QtXHUwMDNlcGFja2FnZS5lbGVtZW50c1swXS50eXBlICE9IEFDUElfVFlQRV9JTlRFR0VSKSB7XG4gIDU2Olx0XHRcdGRldl9lcnIobWRldi1cdTAwM2VkZXYsIFwmIzM0O3NhciBjbnQgPSAlZFxcblwmIzM0OyxcbiAgNTc6XHRcdFx0XHRzYXJfcm9vdC1cdTAwM2VwYWNrYWdlLmNvdW50KTtcbiAgNTg6XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiAgNTk6XHRcdFx0Z290byBmcmVlO1xuICA2MDpcdFx0fVxuICA2MTpcdFxuICA2MjpcdFx0aWYgKCEqdGJsKSB7XG4gIDYzOlx0XHRcdCp0YmwgPSBkZXZtX2t6YWxsb2MobWRldi1cdTAwM2VkZXYsIHNhcl9yb290LVx1MDAzZXBhY2thZ2UuY291bnQsXG4gIDY0Olx0XHRcdFx0XHQgICAgR0ZQX0tFUk5FTCk7XG4gIDY1Olx0XHRcdGlmICghKnRibCkge1xuICA2NjpcdFx0XHRcdHJldCA9IC1FTk9NRU07XG4gIDY3Olx0XHRcdFx0Z290byBmcmVlO1xuICA2ODpcdFx0XHR9XG4gIDY5Olx0XHR9XG4gIDcwOlx0XG4gIDcxOlx0XHRpZiAobGVuKVxuICA3MjpcdFx0XHQqbGVuID0gc2FyX3Jvb3QtXHUwMDNlcGFja2FnZS5jb3VudDtcbiAgNzM6XHRcbiAgNzQ6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHNhcl9yb290LVx1MDAzZXBhY2thZ2UuY291bnQ7IGkmIzQzOyYjNDM7KSB7XG4gIDc1Olx0XHRcdHVuaW9uIGFjcGlfb2JqZWN0ICpzYXJfdW5pdCA9IFx1MDAyNnNhcl9yb290LVx1MDAzZXBhY2thZ2UuZWxlbWVudHNbaV07XG4gIDc2Olx0XG4gIDc3Olx0XHRcdGlmIChzYXJfdW5pdC1cdTAwM2V0eXBlICE9IEFDUElfVFlQRV9JTlRFR0VSKVxuICA3ODpcdFx0XHRcdGJyZWFrO1xuICA3OTpcdFxuICA4MDpcdFx0XHQqKCp0YmwgJiM0MzsgaSkgPSAodTgpc2FyX3VuaXQtXHUwMDNlaW50ZWdlci52YWx1ZTtcbiAgODE6XHRcdH1cbiAgODI6XHRcbiAgODM6XHRcdHJldCA9IGkgPT0gc2FyX3Jvb3QtXHUwMDNlcGFja2FnZS5jb3VudCA/IDAgOiAtRUlOVkFMO1xuICA4NDpcdGZyZWU6XG4gIDg1Olx0XHRrZnJlZShzYXJfcm9vdCk7XG4gIDg2Olx0XG4gIDg3Olx0XHRyZXR1cm4gcmV0O1xuICA4ODpcdH1cbiAgODk6XHRcbiAgOTA6XHQvKiBNVENMIDogQ291bnRyeSBMaXN0IFRhYmxlIGZvciA2RyBiYW5kICovXG4gIDkxOlx0LyogTVRDTCA6IENvdW50cnkgTGlzdCBUYWJsZSBmb3IgNkcgYmFuZCBhbmQgMTFCRSAqL1xuICA5MjpcdHN0YXRpYyBpbnRcbiAgOTM6XHRtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRjbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlLCB1OCAqdmVyc2lvbilcbiAgOTQ6XHR7XG4gIDk1Olx0XHRpbnQgbGVuLCByZXQ7XG4gIDk2Olx0XG4gIDk3Olx0XHRyZXQgPSBtdDc5MnhfYWNwaV9yZWFkKGRldiwgTVQ3OTJ4X0FDUElfTVRDTCwgdGFibGUsIFx1MDAyNmxlbik7XG4gIDk4Olx0XHRpZiAocmV0KVxuICA5OTpcdFx0XHRyZXR1cm4gcmV0O1xuIDEwMDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDgwMQoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDE4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgbXQ3OTJ4IEFDUEkgSGFuZGxpbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSBzZWUgdGhhdCBgQUNQSV9IQU5ETEUobWRldi0mZ3Q7ZGV2KWAgaXMgYmVpbmcgZXhhbWluZWQgaW4gdGhlIGBtdDc5MnhfYWNwaV9yZWFkYCBmdW5jdGlvbi4gVGhlIGNvZGUgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogaWYgdGhlcmUmIzM5O3Mgbm8gQUNQSSBub2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGV2aWNlICh0aGF0IGAhcm9vdGAgY2hlY2spLCBpdCByZXR1cm5zIGFuIGAtRU9QTk9UU1VQUGAgZXJyb3IuIE5hdHVyYWxseSwgdGhpcyBmbGFncyBteSBhdHRlbnRpb24g4oCTIHdoZW4gKmRvZXMqIGEgZGV2aWNlIGFjdHVhbGx5ICpoYXZlKiBvbmUgb2YgdGhlc2UgQUNQSSBub2Rlcz8gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRob3NlIE1lZGlhVGVrLXNwZWNpZmljIEFDUEkgbWV0aG9kczogJiMzNDtNVENMLCYjMzQ7ICYjMzQ7TVREUywmIzM0OyAmIzM0O01UR1MsJiMzNDsgYW5kICYjMzQ7TVRGRy4mIzM0OwoKQWgsIHJpZ2h0LCB0aGlzIGlzIGFsbW9zdCBjZXJ0YWlubHkgb25seSBnb2luZyB0byBiZSBwcmVzZW50IHdoZW4gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucy4gU3BlY2lmaWNhbGx5LCBNZWRpYVRlayBXaS1GaSBjYXJkcyAqaW4qIGxhcHRvcHMgdGhhdCBoYXZlIE9FTSBBQ1BJIERTRFQgdGFibGVzIHRoYXQgZGVmaW5lIHRob3NlICYjMzQ7TVRDTC9NVERTL01UR1MvTVRGRyYjMzQ7IG1ldGhvZHMuIFN0YW5kYXJkIHN0dWZmLCByZWFsbHkuCgpIb2xkIG9uIGEgc2Vjb25kLCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBJIHNob3VsZCByZXZpZXcgaG93IGBtdDc5MnhfaW5pdF9hY3BpX3NhcmAgaXMgYWN0dWFsbHkgY29uZmlndXJlZC4gTGV0IG1lIGdvIG92ZXIgbGluZXMgMTgwLTI1MCBvZiBgbXQ3OTJ4X2FjcGlfc2FyLmNgIGp1c3QgdG8gYmUgY2VydGFpbi4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGFtIGFjY291bnRpbmcgZm9yIGFueSBvZiB0aGUgZmluZXIgZGV0YWlscyBvZiB0aGUgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTgwOlx0e1xuIDE4MTpcdFx0aW50IGxlbiwgcmV0O1xuIDE4MjpcdFxuIDE4MzpcdFx0cmV0ID0gbXQ3OTJ4X2FjcGlfcmVhZChkZXYsIE1UNzkyeF9BQ1BJX01URkcsIHRhYmxlLCBcdTAwMjZsZW4pO1xuIDE4NDpcdFx0aWYgKHJldClcbiAxODU6XHRcdFx0cmV0dXJuIHJldDtcbiAxODY6XHRcbiAxODc6XHRcdGlmIChsZW4gXHUwMDNjIE1UNzkyeF9BU0FSX01JTl9GRylcbiAxODg6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMTg5Olx0XG4gMTkwOlx0XHRyZXR1cm4gMDtcbiAxOTE6XHR9XG4gMTkyOlx0XG4gMTkzOlx0aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gMTk0Olx0e1xuIDE5NTpcdFx0c3RydWN0IG10NzkyeF9hY3BpX3NhciAqYXNhcjtcbiAxOTY6XHRcdGludCByZXQ7XG4gMTk3Olx0XG4gMTk4Olx0XHRhc2FyID0gZGV2bV9remFsbG9jKGRldi1cdTAwM2VtdDc2LmRldiwgc2l6ZW9mKCphc2FyKSwgR0ZQX0tFUk5FTCk7XG4gMTk5Olx0XHRpZiAoIWFzYXIpXG4gMjAwOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDIwMTpcdFxuIDIwMjpcdFx0cmV0ID0gbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Y2woZGV2LCAodTggKiopXHUwMDI2YXNhci1cdTAwM2Vjb3VudHJ5bGlzdCwgXHUwMDI2YXNhci1cdTAwM2V2ZXIpO1xuIDIwMzpcdFx0aWYgKHJldCkge1xuIDIwNDpcdFx0XHRkZXZtX2tmcmVlKGRldi1cdTAwM2VtdDc2LmRldiwgYXNhci1cdTAwM2Vjb3VudHJ5bGlzdCk7XG4gMjA1Olx0XHRcdGFzYXItXHUwMDNlY291bnRyeWxpc3QgPSBOVUxMO1xuIDIwNjpcdFx0fVxuIDIwNzpcdFxuIDIwODpcdFx0cmV0ID0gbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210ZHMoZGV2LCAodTggKiopXHUwMDI2YXNhci1cdTAwM2VkeW4sIGFzYXItXHUwMDNldmVyKTtcbiAyMDk6XHRcdGlmIChyZXQpIHtcbiAyMTA6XHRcdFx0ZGV2bV9rZnJlZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIGFzYXItXHUwMDNlZHluKTtcbiAyMTE6XHRcdFx0YXNhci1cdTAwM2VkeW4gPSBOVUxMO1xuIDIxMjpcdFx0fVxuIDIxMzpcdFxuIDIxNDpcdFx0LyogTVRHUyBpcyBvcHRpb25hbCAqL1xuIDIxNTpcdFx0cmV0ID0gbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Z3MoZGV2LCAodTggKiopXHUwMDI2YXNhci1cdTAwM2VnZW8sIGFzYXItXHUwMDNldmVyKTtcbiAyMTY6XHRcdGlmIChyZXQpIHtcbiAyMTc6XHRcdFx0ZGV2bV9rZnJlZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIGFzYXItXHUwMDNlZ2VvKTtcbiAyMTg6XHRcdFx0YXNhci1cdTAwM2VnZW8gPSBOVUxMO1xuIDIxOTpcdFx0fVxuIDIyMDpcdFxuIDIyMTpcdFx0LyogTVRGRyBpcyBvcHRpb25hbCAqL1xuIDIyMjpcdFx0cmV0ID0gbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210ZmcoZGV2LCAodTggKiopXHUwMDI2YXNhci1cdTAwM2VmZyk7XG4gMjIzOlx0XHRpZiAocmV0KSB7XG4gMjI0Olx0XHRcdGRldm1fa2ZyZWUoZGV2LVx1MDAzZW10NzYuZGV2LCBhc2FyLVx1MDAzZWZnKTtcbiAyMjU6XHRcdFx0YXNhci1cdTAwM2VmZyA9IE5VTEw7XG4gMjI2Olx0XHR9XG4gMjI3Olx0XHRkZXYtXHUwMDNlcGh5LmFjcGlzYXIgPSBhc2FyO1xuIDIyODpcdFxuIDIyOTpcdFx0cmV0dXJuIDA7XG4gMjMwOlx0fVxuIDIzMTpcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeF9pbml0X2FjcGlfc2FyKTtcbiAyMzI6XHRcbiAyMzM6XHRzdGF0aWMgczhcbiAyMzQ6XHRtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxuIDIzNTpcdFx0XHRcdGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsIHM4IGR5bl9wb3dlcilcbiAyMzY6XHR7XG4gMjM3Olx0XHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphc2FyID0gcGh5LVx1MDAzZWFjcGlzYXI7XG4gMjM4Olx0XHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvX2JhbmQgKmJhbmRfcHdyO1xuIDIzOTpcdFx0czggZ2VvX3Bvd2VyO1xuIDI0MDpcdFx0dTggaWR4LCBtYXg7XG4gMjQxOlx0XG4gMjQyOlx0XHRpZiAoIWFzYXItXHUwMDNlZ2VvKVxuIDI0MzpcdFx0XHRyZXR1cm4gZHluX3Bvd2VyO1xuIDI0NDpcdFxuIDI0NTpcdFx0c3dpdGNoIChwaHktXHUwMDNlbXQ3Ni1cdTAwM2VkZXYtXHUwMDNlcmVnaW9uKSB7XG4gMjQ2Olx0XHRjYXNlIE5MODAyMTFfREZTX0ZDQzpcbiAyNDc6XHRcdFx0aWR4ID0gMDtcbiAyNDg6XHRcdFx0YnJlYWs7XG4gMjQ5Olx0XHRjYXNlIE5MODAyMTFfREZTX0VUU0k6XG4gMjUwOlx0XHRcdGlkeCA9IDE7XG4gMjUxOlx0XHRcdGJyZWFrO1xuIDI1MjpcdFx0ZGVmYXVsdDogLyogV1cgKi9cbiAyNTM6XHRcdFx0aWR4ID0gMjtcbiAyNTQ6XHRcdFx0YnJlYWs7XG4gMjU1Olx0XHR9XG4gMjU2Olx0XG4gMjU3Olx0XHRpZiAoYXNhci1cdTAwM2V2ZXIgPT0gMSkge1xuIDI1ODpcdFx0XHRiYW5kX3B3ciA9IFx1MDAyNmFzYXItXHUwMDNlZ2VvLVx1MDAzZXRibFtpZHhdLmJhbmRbMF07XG4gMjU5Olx0XHRcdG1heCA9IEFSUkFZX1NJWkUoYXNhci1cdTAwM2VnZW8tXHUwMDNldGJsW2lkeF0uYmFuZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTkyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3IgRnVuY3Rpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cmAgc3RhcnRzIHdpdGggYSBjcml0aWNhbCBjaGVjazogYGlmICghYXNhci0mZ3Q7Z2VvKSByZXR1cm4gZHluX3Bvd2VyO2AuIFNvLCBpZiBgYXNhci0mZ3Q7Z2VvYCBpc24mIzM5O3Qgc2V0LCBpdCBpbW1lZGlhdGVseSByZXR1cm5zIGBkeW5fcG93ZXJgLiBNYWtlcyBzZW5zZSDigJMgaWYgd2UgZG9uJiMzOTt0IGhhdmUgZ2VvLWxvY2F0aW9uIGRhdGEsIHdlIGZhbGwgYmFjayB0byBhIGR5bmFtaWMgcG93ZXIgc2V0dGluZy4gQnV0LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyBob3cgYGFzYXItJmd0O2dlb2AgZ2V0cyBwb3B1bGF0ZWQuCgpJdCBhcHBlYXJzIGBhc2FyLSZndDtnZW9gIGlzIG9ubHkgaW5pdGlhbGl6ZWQgaWYgYG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzYCBpcyBzdWNjZXNzZnVsLiBBbmQgKnRoYXQqIGZ1bmN0aW9uIGlzIGNhbGxpbmcgYW4gQUNQSSBtZXRob2QgY2FsbGVkICYjMzQ7TVRHUyYjMzQ7IG9uIHRoZSBBQ1BJIGhhbmRsZSBhc3NvY2lhdGVkIHdpdGggYG1kZXYtJmd0O2RldmAuIE9rYXksIHNvIHdlJiMzOTtyZSByZWx5aW5nIG9uIEFDUEkgdG8gcHJvdmlkZSB0aGUgZ2VvZ3JhcGhpY2FsIHBvd2VyIGRhdGEuIFRoYXQmIzM5O3MgYSByZWFzb25hYmxlIGFwcHJvYWNoLCBhc3N1bWluZyB0aGUgQUNQSSB0YWJsZXMgYXJlIHByb3Blcmx5IGNvbmZpZ3VyZWQgb24gdGhlIHN5c3RlbS4KCk5vdywgSSBuZWVkIHRvIGJlICphYnNvbHV0ZWx5KiBzdXJlIG9mIHRoaXMgbG9naWMuIEkgbmVlZCB0byBiZSAxMDAlIHN1cmUgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBwbGFjZXMgd2hlcmUgYGFzYXItJmd0O2dlb2AsIGBhc2FyLSZndDtkeW5gLCBvciBldmVuIGp1c3QgdGhlIGBhc2FyYCBzdHJ1Y3R1cmUgaXRzZWxmLCBnZXRzIG1vZGlmaWVkLiBBbnkgb3RoZXIgbW9kaWZpY2F0aW9uIGNvdWxkIGFmZmVjdCB0aGUgZmxvdyBvZiB0aGlzIGNvZGUuIEl0IGNvdWxkIGNhdXNlIHJhY2UgY29uZGl0aW9ucy4gSXQgY291bGQgY2F1c2UgdGhlIGdlby1sb2NhdGlvbiBzeXN0ZW0gdG8gcmV0dXJuIGluY29ycmVjdCB2YWx1ZXMuIFRpbWUgdG8gZG8gYSB0aG9yb3VnaCBzZWFyY2ggZm9yIGFueSBvdGhlciB1c2FnZSBvZiBgYWNwaXNhcmAgb3IgYGdlb2Agd2l0aGluIHRoZSBgbXQ3NmAgY29kZWJhc2UuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgYW55IG90aGVyIHBsYWNlcyB3aGVyZSB0aGVzZSB2YXJpYWJsZXMgbWF5IGJlIGdldHRpbmcgc2V0IG9yIG1vZGlmaWVkIHRvIHZlcmlmeSB0aGlzIGxvZ2ljLiBBIGJyb2FkIHNlYXJjaCB3b3VsZCBpbnZvbHZlIHNlYXJjaGluZyBmb3IgYWxsIGluc3RhbmNlcyBvZiAmIzM0O2FjcGlzYXImIzM0OyBhbmQgJiMzNDtnZW8mIzM0OyBpbiBgbXQ3NmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FjcGlzYXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg9MjA0PXN0cnVjdCBtdDc5MnhfcGh5IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTIyOC0jaWZkZWYgQ09ORklHX0FDUElcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6MjI5Olx0dm9pZCAqYWNwaXNhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMjMwLSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MTkzPWludCBtdDc5MnhfaW5pdF9hY3BpX3NhcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjI2LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoyMjc6XHRkZXYtXHUwMDNlcGh5LmFjcGlzYXIgPSBhc2FyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMjgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0yMzQ9bXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIzNi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjIzNzpcdHN0cnVjdCBtdDc5MnhfYWNwaV9zYXIgKmFzYXIgPSBwaHktXHUwMDNlYWNwaXNhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjM4LVx0c3RydWN0IG10NzkyeF9hc2FyX2dlb19iYW5kICpiYW5kX3B3cjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTI5Nz1tdDc5MnhfYXNhcl9yYW5nZV9wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTMwMS1cdGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9zYXJfY2FwYSAqY2FwYSA9IHBoeS1cdTAwM2VtdDc2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LVx1MDAzZXNhcl9jYXBhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozMDI6XHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphc2FyID0gcGh5LVx1MDAzZWFjcGlzYXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTMwMy1cdHU4ICpsaW1pdCwgYmFuZCwgbWF4O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MzMxPWludCBtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBib29sIHNldF9kZWZhdWx0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozMzY6XHRpZiAoIXBoeS1cdTAwM2VhY3Bpc2FyIHx8ICEoKHN0cnVjdCBtdDc5MnhfYWNwaV9zYXIgKilwaHktXHUwMDNlYWNwaXNhciktXHUwMDNlZHluKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zMzctXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MzU4PXU4IG10NzkyeF9hY3BpX2dldF9mbGFncyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNTkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozNjA6XHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphY3Bpc2FyID0gcGh5LVx1MDAzZWFjcGlzYXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM2MS1cdHN0cnVjdCBtdDc5MnhfYXNhcl9mZyAqZmc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjM3MjpcdGlmICghYWNwaXNhcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzczLVx0XHRyZXR1cm4gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozNzU6XHRmZyA9IGFjcGlzYXItXHUwMDNlZmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM3Ni1cdGlmICghZmcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz00Mjc9bXQ3OTJ4X2FjcGlfcGFyc2VfbXRjbF90YmxfdjMoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy00Mjgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzo0Mjk6XHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICpzYXIgPSBwaHktXHUwMDNlYWNwaXNhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtNDMwLVx0c3RydWN0IG10NzkyeF9hc2FyX2NsX3YzICpjbCA9IHNhci1cdTAwM2Vjb3VudHJ5bGlzdF92Mztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTQ1Nj1tdDc5MnhfYWNwaV9wYXJzZV9tdGNsX3RibChzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBjaGFyICphbHBoYTIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTQ1Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjQ1ODpcdHN0cnVjdCBtdDc5MnhfYWNwaV9zYXIgKnNhciA9IHBoeS1cdTAwM2VhY3Bpc2FyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy00NTktXHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfY2wgKmNsID0gc2FyLVx1MDAzZWNvdW50cnlsaXN0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9NDc5PXUzMiBtdDc5MnhfYWNwaV9nZXRfbXRjbF9jb25mKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGNoYXIgKmFscGhhMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtNDgwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6NDgxOlx0c3RydWN0IG10NzkyeF9hY3BpX3NhciAqc2FyID0gcGh5LVx1MDAzZWFjcGlzYXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTQ4Mi1cdHUzMiBjb25maWcgPSAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTA3OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gdGhlIEhhcmR3YXJlIExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBjbGFyaWZ5IHRoZSBzcGVjaWZpY3Mgb2Ygd2hhdCB0aGUgTVQ3OTIxIGFuZCBNVDc5MjUgY2hpcHNldHMgYWN0dWFsbHkgc3VwcG9ydCBmcm9tIGEgaGFyZHdhcmUgc3RhbmRwb2ludC4gQmV5b25kIHRoYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBtdDc2LCBtdDc5MjEsIGFuZCBtdDc5MjUgZGVzaWduYXRpb25zIGV4Y2x1c2l2ZWx5IHJlZmVyIHRvIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGlmIHRoZXJlJiMzOTtzIG1vcmUgdG8gaXQgdGhhbiBtZWV0cyB0aGUgZXllLiBNeSBuZXh0IHN0ZXAgaW52b2x2ZXMgZGl2aW5nIGludG8gdGhlIEtjb25maWcgZmlsZXMgZm9yIE1UNzkyMSwgTVQ3OTI1LCBhbmQgTVQ3Ni4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGVpciBjYXBhYmlsaXRpZXMgYW5kIHJlbGF0aW9uc2hpcHMgd2l0aGluIHRoZSBjb25maWd1cmF0aW9uIGZyYW1ld29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzkyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9Mjg9Y29uZmlnIE1UNzZfQ09OTkFDX0xJQlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzozMjpjb25maWcgTVQ3OTJ4X0xJQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMzLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6MzY6Y29uZmlnIE1UNzkyeF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zNy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyOmNvbmZpZyBNVDc5MjFfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Nzpjb25maWcgTVQ3OTIxRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy04LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTIxRSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjE3OmNvbmZpZyBNVDc5MjFTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTIxUyAoU0RJTykgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI4OmNvbmZpZyBNVDc5MjFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyOmNvbmZpZyBNVDc5MjVfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Nzpjb25maWcgTVQ3OTI1RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy04LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjE5OmNvbmZpZyBNVDc5MjVVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDAyOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjUyCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBVU0IgRHJpdmVyIFNBUiBDb21wYXRpYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZSBNVDc5MjFVIGFuZCBNVDc5MjVVIGRyaXZlcnMsIGtub3dpbmcgdGhleSYjMzk7cmUgVVNCLWJhc2VkLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgd2hldGhlciBVU0IgZGV2aWNlcyBjYW4gZXZlbiAqaGF2ZSogQUNQSSBTQVIgY29uc2lkZXJhdGlvbnMuIEl0IHNlZW1zIGEgYml0IHVudXN1YWwsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlIHRvIGNvbmZpcm0gb25lIHdheSBvciB0aGUgb3RoZXIuIE15IGZpcnN0IHN0ZXAgd2lsbCBiZSB0byBleGFtaW5lIHRoZSBgbXQ3OTIxdV9wcm9iZWAgYW5kIGBtdDc5MjV1X3Byb2JlYCBmdW5jdGlvbnMsIG9yIHBlcmhhcHMgYG10NzkyMV9yZWdpc3Rlcl9kZXZpY2VgLCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55dGhpbmcgcmVsYXRlZCB0byBTQVIgb3IgcG93ZXIgbWFuYWdlbWVudCB3aXRoaW4gdGhlIFVTQiBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gcm91dGluZXMuIFNpbmNlIEkmIzM5O20gd29ya2luZyB3aXRoIHRoZSBNVDc5MjEgc3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBmb2N1cyBteSBpbml0aWFsIGV4YW1pbmF0aW9uIG9uIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuY2AuIFRoYXQgc2VlbXMgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBsb29raW5nIGZvciByZWxhdGVkIGNvZGUuIEZyb20gdGhlcmUsIEkmIzM5O2xsIHNlZSB3aGVyZSB0byBnbyBuZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNTA6XHRcdHJldHVybiAwO1xuIDI1MTpcdFxuIDI1MjpcdGVycm9yOlxuIDI1MzpcdFx0bXQ3NnVfcXVldWVzX2RlaW5pdChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMjU0Olx0XHRtdDc5Mnh1X3Jlc2V0X3dvcmtfY2xlYW51cChkZXYpO1xuIDI1NTpcdFxuIDI1NjpcdFx0dXNiX3NldF9pbnRmZGF0YSh1c2JfaW50ZiwgTlVMTCk7XG4gMjU3Olx0XG4gMjU4Olx0XHRtdDc2X2ZyZWVfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbiAyNTk6XHRcbiAyNjA6XHRcdHJldHVybiByZXQ7XG4gMjYxOlx0fVxuIDI2MjpcdFxuIDI2MzpcdCNpZmRlZiBDT05GSUdfUE1cbiAyNjQ6XHRzdGF0aWMgaW50IG10NzkyMXVfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IHN0YXRlKVxuIDI2NTpcdHtcbiAyNjY6XHRcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xuIDI2NzpcdFx0c3RydWN0IG10NzZfY29ubmFjX3BtICpwbSA9IFx1MDAyNmRldi1cdTAwM2VwbTtcbiAyNjg6XHRcdGludCBlcnI7XG4gMjY5Olx0XG4gMjcwOlx0XHRwbS1cdTAwM2VzdXNwZW5kZWQgPSB0cnVlO1xuIDI3MTpcdFx0Zmx1c2hfd29yayhcdTAwMjZkZXYtXHUwMDNlcmVzZXRfd29yayk7XG4gMjcyOlx0XG4gMjczOlx0XHRlcnIgPSBtdDc2X2Nvbm5hY19tY3Vfc2V0X2hpZl9zdXNwZW5kKFx1MDAyNmRldi1cdTAwM2VtdDc2LCB0cnVlLCB0cnVlKTtcbiAyNzQ6XHRcdGlmIChlcnIpXG4gMjc1Olx0XHRcdGdvdG8gZmFpbGVkO1xuIDI3NjpcdFxuIDI3NzpcdFx0bXQ3NnVfc3RvcF9yeChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMjc4Olx0XHRtdDc2dV9zdG9wX3R4KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbiAyNzk6XHRcbiAyODA6XHRcdHJldHVybiAwO1xuIDI4MTpcdFxuIDI4MjpcdGZhaWxlZDpcbiAyODM6XHRcdHBtLVx1MDAzZXN1c3BlbmRlZCA9IGZhbHNlO1xuIDI4NDpcdFxuIDI4NTpcdFx0aWYgKGVyciBcdTAwM2MgMClcbiAyODY6XHRcdFx0bXQ3OTJ4X3Jlc2V0KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbiAyODc6XHRcbiAyODg6XHRcdHJldHVybiBlcnI7XG4gMjg5Olx0fVxuIDI5MDpcdFxuIDI5MTpcdHN0YXRpYyBpbnQgbXQ3OTIxdV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4gMjkyOlx0e1xuIDI5MzpcdFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XG4gMjk0Olx0XHRzdHJ1Y3QgbXQ3Nl9jb25uYWNfcG0gKnBtID0gXHUwMDI2ZGV2LVx1MDAzZXBtO1xuIDI5NTpcdFx0Ym9vbCByZWluaXQgPSB0cnVlO1xuIDI5NjpcdFx0aW50IGVyciwgaTtcbiAyOTc6XHRcbiAyOTg6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIDEwOyBpJiM0MzsmIzQzOykge1xuIDI5OTpcdFx0XHR1MzIgdmFsID0gbXQ3Nl9ycihkZXYsIE1UX1dGX1NXX0RFRl9DUl9VU0JfTUNVX0VWRU5UKTtcbiAzMDA6XHRcbiAzMDE6XHRcdFx0aWYgKCEodmFsIFx1MDAyNiBNVF9XRl9TV19TRVJfVFJJR0dFUl9TVVNQRU5EKSkge1xuIDMwMjpcdFx0XHRcdHJlaW5pdCA9IGZhbHNlO1xuIDMwMzpcdFx0XHRcdGJyZWFrO1xuIDMwNDpcdFx0XHR9XG4gMzA1Olx0XHRcdGlmICh2YWwgXHUwMDI2IE1UX1dGX1NXX1NFUl9ET05FX1NVU1BFTkQpIHtcbiAzMDY6XHRcdFx0XHRtdDc2X3dyKGRldiwgTVRfV0ZfU1dfREVGX0NSX1VTQl9NQ1VfRVZFTlQsIDApO1xuIDMwNzpcdFx0XHRcdGJyZWFrO1xuIDMwODpcdFx0XHR9XG4gMzA5Olx0XG4gMzEwOlx0XHRcdG1zbGVlcCgyMCk7XG4gMzExOlx0XHR9XG4gMzEyOlx0XG4gMzEzOlx0XHRpZiAocmVpbml0IHx8IG10NzkyeF9kbWFfbmVlZF9yZWluaXQoZGV2KSkge1xuIDMxNDpcdFx0XHRlcnIgPSBtdDc5Mnh1X2RtYV9pbml0KGRldiwgdHJ1ZSk7XG4gMzE1Olx0XHRcdGlmIChlcnIpXG4gMzE2Olx0XHRcdFx0Z290byBmYWlsZWQ7XG4gMzE3Olx0XHR9XG4gMzE4Olx0XG4gMzE5Olx0XHRlcnIgPSBtdDc2dV9yZXN1bWVfcngoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuIDMyMDpcdFx0aWYgKGVyciBcdTAwM2MgMClcbiAzMjE6XHRcdFx0Z290byBmYWlsZWQ7XG4gMzIyOlx0XG4gMzIzOlx0XHRlcnIgPSBtdDc2X2Nvbm5hY19tY3Vfc2V0X2hpZl9zdXNwZW5kKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBmYWxzZSwgdHJ1ZSk7XG4gMzI0Olx0ZmFpbGVkOlxuIDMyNTpcdFx0cG0tXHUwMDNlc3VzcGVuZGVkID0gZmFsc2U7XG4gMzI2Olx0XG4gMzI3Olx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuIDMyODpcdFx0XHRtdDc5MnhfcmVzZXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuIDMyOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTc4OQoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBzbmlwcGV0LCBmcmFtZWQgYXMgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3OTIxVSBEcml2ZXIgUHJvYmUgYW5kIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBzdGFydGluZyB3aXRoIGBtdDc5MjF1X3Byb2JlYC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQsIHRoZSBmaXJzdCBwbGFjZSB0aGUgZHJpdmVyIGdldHMgaW52b2x2ZWQgd2l0aCB0aGUgZGV2aWNlLiBOYXR1cmFsbHksIHRoZSBuZXh0IGNhbGwgaXMgdG8gYG10NzkyMXVfaW5pdGAsIHRoZSBtYWluIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiBUbyB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgc3lzdGVtIGlzIHNldHRpbmcgdXAgdGhlIGNoaXAuCgpMZXQmIzM5O3MgcXVpY2tseSBqdW1wIGludG8gdGhlIGNvZGUuIExpbmVzIDIwMCB0aHJvdWdoIDI1MCBpbiBgbXQ3OTIxL3VzYi5jYCBzaG91bGQgZ2l2ZSBtZSBhIHByZXR0eSBnb29kIG92ZXJ2aWV3IG9mIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGR1cmluZyB0aGUgaW5pdGlhbCBzZXR1cC4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIHRoaW5ncyBsaWtlIGRldmljZSByZXNvdXJjZSBhbGxvY2F0aW9uLCBwb3RlbnRpYWxseSBzb21lIGJhc2ljIGhhcmR3YXJlIHJlc2V0cywgYW5kIG1heWJlIHRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gb2YgdGhlIFVTQiBlbmRwb2ludHMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHJlZ2lzdGVyIGFjY2VzcyBwYXR0ZXJucyBhbmQgbWVtb3J5IGFsbG9jYXRpb25zIC0gdGhvc2UgYXJlIGFsd2F5cyBnb29kIGluZGljYXRvcnMgb2YgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcgd2l0aGluIHRob3NlIGxpbmVzLiBUaGF0JiMzOTtzIGEgY3JpdGljYWwgYXJlYSBmb3IgZGV2aWNlIHByb2JpbmcsIHdoZXJlIHRoaW5ncyBjYW4gZ28gd3JvbmcgaWYgdGhlIGRldmljZSBpc24mIzM5O3QgcHJvcGVybHkgY29ubmVjdGVkIG9yIHN1cHBvcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjAwOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDIwMTpcdFxuIDIwMjpcdFx0ZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcbiAyMDM6XHRcdGRldi1cdTAwM2Vmd19mZWF0dXJlcyA9IGZlYXR1cmVzO1xuIDIwNDpcdFx0ZGV2LVx1MDAzZWhpZl9vcHMgPSBcdTAwMjZoaWZfb3BzO1xuIDIwNTpcdFx0YXRvbWljX3NldChcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5idXNfaHVuZywgZmFsc2UpO1xuIDIwNjpcdFx0bXQ3OTJ4dV9yZXNldF93b3JrX2luaXQoZGV2KTtcbiAyMDc6XHRcbiAyMDg6XHRcdHVzYl9yZXNldF9kZXZpY2UodWRldik7XG4gMjA5Olx0XG4gMjEwOlx0XHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBkZXYpO1xuIDIxMTpcdFxuIDIxMjpcdFx0cmV0ID0gX19tdDc2dV9pbml0KG1kZXYsIHVzYl9pbnRmLCBcdTAwMjZidXNfb3BzKTtcbiAyMTM6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gMjE0Olx0XHRcdGdvdG8gZXJyb3I7XG4gMjE1Olx0XG4gMjE2Olx0XHRtZGV2LVx1MDAzZXJldiA9IChtdDc2X3JyKGRldiwgTVRfSFdfQ0hJUElEKSBcdTAwM2NcdTAwM2MgMTYpIHxcbiAyMTc6XHRcdFx0ICAgIChtdDc2X3JyKGRldiwgTVRfSFdfUkVWKSBcdTAwMjYgMHhmZik7XG4gMjE4Olx0XHRkZXZfZGJnKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtBU0lDIHJldmlzaW9uOiAlMDR4XFxuXCYjMzQ7LCBtZGV2LVx1MDAzZXJldik7XG4gMjE5Olx0XG4gMjIwOlx0XHRpZiAobXQ3Nl9nZXRfZmllbGQoZGV2LCBNVF9DT05OX09OX01JU0MsIE1UX1RPUF9NSVNDMl9GV19OOV9SRFkpKSB7XG4gMjIxOlx0XHRcdHJldCA9IG10NzkyeHVfd2ZzeXNfcmVzZXQoZGV2KTtcbiAyMjI6XHRcdFx0aWYgKHJldClcbiAyMjM6XHRcdFx0XHRnb3RvIGVycm9yO1xuIDIyNDpcdFx0fVxuIDIyNTpcdFxuIDIyNjpcdFx0cmV0ID0gbXQ3OTJ4dV9tY3VfcG93ZXJfb24oZGV2KTtcbiAyMjc6XHRcdGlmIChyZXQpXG4gMjI4Olx0XHRcdGdvdG8gZXJyb3I7XG4gMjI5Olx0XG4gMjMwOlx0XHRyZXQgPSBtdDc2dV9hbGxvY19tY3VfcXVldWUoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuIDIzMTpcdFx0aWYgKHJldClcbiAyMzI6XHRcdFx0Z290byBlcnJvcjtcbiAyMzM6XHRcbiAyMzQ6XHRcdHJldCA9IG10NzZ1X2FsbG9jX3F1ZXVlcyhcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gMjM1Olx0XHRpZiAocmV0KVxuIDIzNjpcdFx0XHRnb3RvIGVycm9yO1xuIDIzNzpcdFxuIDIzODpcdFx0cmV0ID0gbXQ3OTJ4dV9kbWFfaW5pdChkZXYsIGZhbHNlKTtcbiAyMzk6XHRcdGlmIChyZXQpXG4gMjQwOlx0XHRcdGdvdG8gZXJyb3I7XG4gMjQxOlx0XG4gMjQyOlx0XHRodyA9IG10NzZfaHcoZGV2KTtcbiAyNDM6XHRcdC8qIGNoZWNrIGh3IHNnIHN1cHBvcnQgaW4gb3JkZXIgdG8gZW5hYmxlIEFNU0RVICovXG4gMjQ0Olx0XHRody1cdTAwM2VtYXhfdHhfZnJhZ21lbnRzID0gbWRldi1cdTAwM2V1c2Iuc2dfZW4gPyBNVF9IV19UWFBfTUFYX0JVRl9OVU0gOiAxO1xuIDI0NTpcdFxuIDI0NjpcdFx0cmV0ID0gbXQ3OTIxX3JlZ2lzdGVyX2RldmljZShkZXYpO1xuIDI0NzpcdFx0aWYgKHJldClcbiAyNDg6XHRcdFx0Z290byBlcnJvcjtcbiAyNDk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDI6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI5NTUKCQkJCQkJCW91dHB1dDogMTM5CgkJCQkJCQl0aG91Z2h0czogMjY0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgTVQ3OTJ4IEFDUEkgU0FSIFBvd2VyIENhbGN1bGF0aW9uIENvZGUgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGNvZGUgaW4gYG10NzkyeF9hY3BpX3Nhci5jYCBpcyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgU3BlY2lmaWMgQWJzb3JwdGlvbiBSYXRlIChTQVIpIHBvd2VyIGNhbGN1bGF0aW9ucyBmb3IgTWVkaWFUZWsgTVQ3OTJ4IFdpLUZpIGRldmljZXMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBtdDc2YCB3aXJlbGVzcyBkcml2ZXIuIFRoZSBpbml0aWFsIGNhbGwgaXMgdHJpZ2dlcmVkIGJ5IGBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlYCB3aGljaCBjYWxscyBgbXQ3OTJ4X2luaXRfYWNwaV9zYXJgLiAgVGhpcyBmdW5jdGlvbiBjYWxscyBzZXZlcmFsIEFDUEkgcmVhZCBmdW5jdGlvbnMsIG5hbWVseSBgbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Y2xgLCBgbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210ZHNgLCBgbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Z3NgLCBhbmQgYG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGZnYCB3aGljaCBhdHRlbXB0IHRvIHJlYWQgcHJvcHJpZXRhcnkgTWVkaWFUZWsgQUNQSSBtZXRob2RzIHN1Y2ggYXMgYE1UQ0xgLCBgTVREU2AsIGBNVEdTYCwgYW5kIGBNVEZHYCBmcm9tIHRoZSBBQ1BJIERTRFQvU1NEVCB0YWJsZXMuIFRoZXNlIGZ1bmN0aW9ucyBhbGwgY2FsbCBgbXQ3OTJ4X2FjcGlfcmVhZGAsIHdoaWNoIGF0dGVtcHRzIHRvIHJldHJpZXZlIGFuIEFDUEkgaGFuZGxlIGZyb20gdGhlIGRldmljZS4KCk5vdywgaGVyZSYjMzk7cyB0aGUgY3J1Y2lhbCBwb2ludDogSSBrbm93IHRoYXQgaW4gc3RhbmRhcmQgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSkgZW52aXJvbm1lbnRzLCB3aGljaCBhcmUgd2hhdCB3ZSB1c2UgZm9yIGZ1enppbmcsIHRoZXNlIE1lZGlhVGVrLXNwZWNpZmljIEFDUEkgbWV0aG9kcyBzaW1wbHkgKmRvbiYjMzk7dCBleGlzdCouIFFFTVUgZ2VuZXJhdGVzIGl0cyBvd24gQUNQSSB0YWJsZXMgZm9yIGVtdWxhdGVkIGRldmljZXMsIGFuZCB0aGVzZSB0YWJsZXMgY29udGFpbiBzdGFuZGFyZCBBQ1BJIG9iamVjdHMsIGJ1dCBub3QgdGhlIE1lZGlhVGVrIHByb3ByaWV0YXJ5IG9uZXMuICBFdmVuIGlmIHdlIHdlcmUgdG8gZW11bGF0ZSBhIFVTQiBvciBQQ0llIGRldmljZSwgdGhlIEFDUEkgdGFibGVzIGNvbnRhaW5pbmcgYE1UQ0xgLCBgTVREU2AsIGFuZCBmcmllbmRzIGFyZSBkZWZpbmVkIG9uIHJlYWwtd29ybGQgTWVkaWFUZWsgT0VNIGhhcmR3YXJlLCBzdWNoIGFzIG9uIGxhcHRvcHMgZnJvbSBBU1VTLCBMZW5vdm8sIG9yIEhQLiBUaGVyZWZvcmUsIGBtdDc5MnhfYWNwaV9yZWFkYCBpcyBhbHdheXMgZ29pbmcgdG8gZmFpbCB3aXRoIGAtRU9QTk9UU1VQUGAgb3IgYC1FSU9gLiBUaGlzIHRoZW4gbWVhbnMgdGhhdCB0aGUgY29ycmVzcG9uZGluZyBgYXNhci0mZ3Q7ZHluYCwgYGFzYXItJmd0O2dlb2AsIGBhc2FyLSZndDtjb3VudHJ5bGlzdGAgYW5kIGBhc2FyLSZndDtmZ2Agd2lsbCBiZSBOVUxMLgoKVGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyBgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3JgIGFuZCBgbXQ3OTJ4X2FzYXJfcmFuZ2VfcHdyYC4gVGhlIGNyaXRpY2FsIGZhY3RvciBpcyB0aGVpciBjYWxsaW5nIGNvbnRleHQuIEJvdGggdGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBieSBgbXQ3OTJ4X2luaXRfYWNwaV9zYXJfcG93ZXIoKWAuIEJ1dCB3YWl0LCBgbXQ3OTJ4X2luaXRfYWNwaV9zYXJfcG93ZXJgIGhhcyBhbiBlYXJseSByZXR1cm4gY29uZGl0aW9uOiBgaWYgKCFwaHktJmd0O2FjcGlzYXIgfHwgISgoc3RydWN0IG10NzkyeF9hY3BpX3NhciAqKXBoeS0mZ3Q7YWNwaXNhciktJmd0O2R5bikgcmV0dXJuIDA7YC4gVGhpcyBtZWFucyBpZiBgZHluYCBpcyBOVUxMLCB0aGUgZnVuY3Rpb24gaW1tZWRpYXRlbHkgcmV0dXJucyB3aXRob3V0IGV2ZXIgZXhlY3V0aW5nIGBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cmAgb3IgYG10NzkyeF9hc2FyX3JhbmdlX3B3cmAuICBSZW1lbWJlciBgZHluYCBpcyBwb3B1bGF0ZWQgdGhyb3VnaCBgbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210ZHNgIGFmdGVyIHN1Y2Nlc3NmdWxseSByZWFkaW5nIHRoZSBNVERTIHRhYmxlLgoKQ29uc2lkZXJpbmcgYWxsIHRoaXMsIGV2ZW4gaWYgd2UgKmNvdWxkKiBzb21laG93IGdldCBhIE1lZGlhVGVrIE1UNzkyMS9NVDc5MjUgUENJZS9VU0IgZGV2aWNlIHByb2JlZCBpbiBRRU1VLCB3aGljaCBpdHNlbGYgaXMgaGlnaGx5IGltcHJvYmFibGUgZHVlIHRvIHRoZSBoYXJkd2FyZS1zcGVjaWZpYyByZWdpc3RlciBhY2Nlc3MgYW5kIGZpcm13YXJlIGxvYWRpbmcgcmVxdWlyZW1lbnRzIG9mIGBtdDc5MjF1X3Byb2JlYCBvciBzaW1pbGFyIHJvdXRpbmVzLCB3ZSB3b3VsZCBzdGlsbCBmYWlsIHRvIGV4ZWN1dGUgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aC4gUUVNVSBkb2VzIG5vdCBlbXVsYXRlIHRoZSBNVDc5Mnggd2lyZWxlc3MgY2hpcHNldCwgYW5kIFFFTVUmIzM5O3MgQUNQSSB0YWJsZXMgKm5ldmVyKiBpbmNsdWRlIE1lZGlhVGVrJiMzOTtzIHByb3ByaWV0YXJ5IGBNVERTYC9gTVRHU2AgU0FSIG1ldGhvZHMuCgpDb25zZXF1ZW50bHksIHNpbmNlIHRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgYXJlIHVucmVhY2hhYmxlIGluIG91ciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cywgdGhlcmUmIzM5O3Mgbm8gbmVlZCB0byBmdXp6IHRoaXMuIEl0IGlzIGEgZGVhZCBlbmQuIE5vIG5lZWQgdG8gZW5hYmxlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBvciBmb2N1cyBvbiBhbnkgc3ltYm9scy4gVGhlIGVudGlyZSBjb2RlIHBhdGggaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEFDUEkgU0FSIChTcGVjaWZpYyBBYnNvcnB0aW9uIFJhdGUpIHBvd2VyIGxpbWl0IGhhbmRsaW5nIGluIHRoZSBNZWRpYVRlayBtdDc5Mnggd2lyZWxlc3MgZHJpdmVyIChtdDc5MnhfYWNwaV9zYXIuYykuIFRoZXNlIGNvZGUgcGF0aHMgYXJlIG9ubHkgZXhlY3V0ZWQgd2hlbiBwcm9wcmlldGFyeSBNZWRpYVRlayBBQ1BJIFNBUiBtZXRob2RzIChNVERTLCBNVEdTKSBhcmUgZXZhbHVhdGVkIGZyb20gcGxhdGZvcm0gZmlybXdhcmUgb24gcGh5c2ljYWwgaGFyZHdhcmUgd2l0aCBNZWRpYVRlayBXaS1GaSBhZGFwdGVycy4gSW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbm8gc3VjaCBBQ1BJIHRhYmxlcyBvciBoYXJkd2FyZSBhcmUgcHJlc2VudCwgbWFraW5nIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQUNQSSBTQVIgKFNwZWNpZmljIEFic29ycHRpb24gUmF0ZSkgcG93ZXIgbGltaXQgaGFuZGxpbmcgaW4gdGhlIE1lZGlhVGVrIG10NzkyeCB3aXJlbGVzcyBkcml2ZXIgKG10NzkyeF9hY3BpX3Nhci5jKS4gVGhlc2UgY29kZSBwYXRocyBhcmUgb25seSBleGVjdXRlZCB3aGVuIHByb3ByaWV0YXJ5IE1lZGlhVGVrIEFDUEkgU0FSIG1ldGhvZHMgKE1URFMsIE1UR1MpIGFyZSBldmFsdWF0ZWQgZnJvbSBwbGF0Zm9ybSBmaXJtd2FyZSBvbiBwaHlzaWNhbCBoYXJkd2FyZSB3aXRoIE1lZGlhVGVrIFdpLUZpIGFkYXB0ZXJzLiBJbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBubyBzdWNoIEFDUEkgdGFibGVzIG9yIGhhcmR3YXJlIGFyZSBwcmVzZW50LCBtYWtpbmcgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwMjoxODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6MTc6MDUuMDQ1MTU4ODYyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUyOTA3ODE3NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBBQ1BJIFNBUiAoU3BlY2lmaWMgQWJzb3JwdGlvbiBSYXRlKSBwb3dlciBsaW1pdCBoYW5kbGluZyBpbiB0aGUgTWVkaWFUZWsgbXQ3OTJ4IHdpcmVsZXNzIGRyaXZlciAobXQ3OTJ4X2FjcGlfc2FyLmMpLiBUaGVzZSBjb2RlIHBhdGhzIGFyZSBvbmx5IGV4ZWN1dGVkIHdoZW4gcHJvcHJpZXRhcnkgTWVkaWFUZWsgQUNQSSBTQVIgbWV0aG9kcyAoTVREUywgTVRHUykgYXJlIGV2YWx1YXRlZCBmcm9tIHBsYXRmb3JtIGZpcm13YXJlIG9uIHBoeXNpY2FsIGhhcmR3YXJlIHdpdGggTWVkaWFUZWsgV2ktRmkgYWRhcHRlcnMuIEluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG5vIHN1Y2ggQUNQSSB0YWJsZXMgb3IgaGFyZHdhcmUgYXJlIHByZXNlbnQsIG1ha2luZyB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDAyOjE3OjA1LjA0NTE2NDMzMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMwMDcxMTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjhhY2Y0OTExYjk4ZDVkZDRiMDVlOWNjMWJkZmUzZDQxOGI2NTE0Y1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IFNlcCAxMCAwMjoxNzowNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY1xcbmluZGV4IDk0NmRkNzk1NmU0YTAuLjlmMGVhM2QyM2UwZjUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmNcXG5AQCAtMjc5LDEwICsyNzksMTggQEAgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcXG4gXFx0aWYgKGlkeCBcXHUwMDNlPSBtYXgpXFxuIFxcdFxcdHJldHVybiBkeW5fcG93ZXI7XFxuIFxcbi1cXHRnZW9fcG93ZXIgPSAoYmFuZF9wd3IgKyBpZHgpLVxcdTAwM2Vwd3I7XFxuLVxcdGR5bl9wb3dlciArPSAoYmFuZF9wd3IgKyBpZHgpLVxcdTAwM2VvZmZzZXQ7XFxuK1xcdGJhbmRfcHdyICs9IGlkeDtcXG4gXFxuLVxcdHJldHVybiBtaW4oZ2VvX3Bvd2VyLCBkeW5fcG93ZXIpO1xcbitcXHQvKiBTb21lIE9FTSB0YWJsZXMgY2FycnkgMHhmZiBoZXJlOyBuYXJyb3dlZCB0byBzOCB0aGF0IGlzIC0xIGFuZFxcbitcXHQgKiB3aW5zIHRoZSBtaW4oKSBiZWxvdy4gVGFrZSBpdCBhcyBubyBsaW1pdC5cXG4rXFx0ICovXFxuK1xcdGlmIChiYW5kX3B3ci1cXHUwMDNlcHdyID09IDB4ZmYpXFxuK1xcdFxcdHJldHVybiBkeW5fcG93ZXI7XFxuK1xcbitcXHRnZW9fcG93ZXIgPSBiYW5kX3B3ci1cXHUwMDNlcHdyO1xcbitcXG4rXFx0cmV0dXJuIG1pbl90KGludCwgZ2VvX3Bvd2VyLFxcbitcXHRcXHQgICAgIG1pbl90KGludCwgZHluX3Bvd2VyICsgYmFuZF9wd3ItXFx1MDAzZW9mZnNldCwgMTI3KSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBzOFxcbkBAIC0zMTUsNyArMzIzLDkgQEAgbXQ3OTJ4X2FzYXJfcmFuZ2VfcHdyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksXFxuIFxcdGVsc2VcXG4gXFx0XFx0YmFuZCA9IE5MODAyMTFfQkFORF8yR0haO1xcbiBcXG4tXFx0cmV0dXJuIG10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHBoeSwgYmFuZCwgbGltaXRbaWR4XSk7XFxuK1xcdC8qIDB4ZmY6IG5vIGR5bmFtaWMgbGltaXQsIHNlZSBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cigpICovXFxuK1xcdHJldHVybiBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cihwaHksIGJhbmQsXFxuK1xcdFxcdFxcdFxcdCAgICAgICBsaW1pdFtpZHhdID09IDB4ZmYgPyAxMjcgOiBsaW1pdFtpZHhdKTtcXG4gfVxcbiBcXG4gaW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDAyOjE3OjA1LjU3NTg2MDE1NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NzQ3NjAwNjg1MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEFDUEkgU0FSIChTcGVjaWZpYyBBYnNvcnB0aW9uIFJhdGUpIHBvd2VyIGxpbWl0IGhhbmRsaW5nIGluIHRoZSBNZWRpYVRlayBtdDc5Mnggd2lyZWxlc3MgZHJpdmVyIChtdDc5MnhfYWNwaV9zYXIuYykuIFRoZXNlIGNvZGUgcGF0aHMgYXJlIG9ubHkgZXhlY3V0ZWQgd2hlbiBwcm9wcmlldGFyeSBNZWRpYVRlayBBQ1BJIFNBUiBtZXRob2RzIChNVERTLCBNVEdTKSBhcmUgZXZhbHVhdGVkIGZyb20gcGxhdGZvcm0gZmlybXdhcmUgb24gcGh5c2ljYWwgaGFyZHdhcmUgd2l0aCBNZWRpYVRlayBXaS1GaSBhZGFwdGVycy4gSW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbm8gc3VjaCBBQ1BJIHRhYmxlcyBvciBoYXJkd2FyZSBhcmUgcHJlc2VudCwgbWFraW5nIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2OGFjZjQ5MTFiOThkNWRkNGIwNWU5Y2MxYmRmZTNkNDE4YjY1MTRjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMDI6MTc6MDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY1xuaW5kZXggOTQ2ZGQ3OTU2ZTRhMC4uOWYwZWEzZDIzZTBmNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmNcbkBAIC0yNzksMTAgKzI3OSwxOCBAQCBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxuIFx0aWYgKGlkeCBcdTAwM2U9IG1heClcbiBcdFx0cmV0dXJuIGR5bl9wb3dlcjtcbiBcbi1cdGdlb19wb3dlciA9IChiYW5kX3B3ciArIGlkeCktXHUwMDNlcHdyO1xuLVx0ZHluX3Bvd2VyICs9IChiYW5kX3B3ciArIGlkeCktXHUwMDNlb2Zmc2V0O1xuK1x0YmFuZF9wd3IgKz0gaWR4O1xuIFxuLVx0cmV0dXJuIG1pbihnZW9fcG93ZXIsIGR5bl9wb3dlcik7XG4rXHQvKiBTb21lIE9FTSB0YWJsZXMgY2FycnkgMHhmZiBoZXJlOyBuYXJyb3dlZCB0byBzOCB0aGF0IGlzIC0xIGFuZFxuK1x0ICogd2lucyB0aGUgbWluKCkgYmVsb3cuIFRha2UgaXQgYXMgbm8gbGltaXQuXG4rXHQgKi9cbitcdGlmIChiYW5kX3B3ci1cdTAwM2Vwd3IgPT0gMHhmZilcbitcdFx0cmV0dXJuIGR5bl9wb3dlcjtcbitcbitcdGdlb19wb3dlciA9IGJhbmRfcHdyLVx1MDAzZXB3cjtcbitcbitcdHJldHVybiBtaW5fdChpbnQsIGdlb19wb3dlcixcbitcdFx0ICAgICBtaW5fdChpbnQsIGR5bl9wb3dlciArIGJhbmRfcHdyLVx1MDAzZW9mZnNldCwgMTI3KSk7XG4gfVxuIFxuIHN0YXRpYyBzOFxuQEAgLTMxNSw3ICszMjMsOSBAQCBtdDc5MnhfYXNhcl9yYW5nZV9wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcbiBcdGVsc2VcbiBcdFx0YmFuZCA9IE5MODAyMTFfQkFORF8yR0haO1xuIFxuLVx0cmV0dXJuIG10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHBoeSwgYmFuZCwgbGltaXRbaWR4XSk7XG4rXHQvKiAweGZmOiBubyBkeW5hbWljIGxpbWl0LCBzZWUgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3IoKSAqL1xuK1x0cmV0dXJuIG10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHBoeSwgYmFuZCxcbitcdFx0XHRcdCAgICAgICBsaW1pdFtpZHhdID09IDB4ZmYgPyAxMjcgOiBsaW1pdFtpZHhdKTtcbiB9XG4gXG4gaW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjoxNzowNS41NzU4NjI5MDNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NTA0Mjk1Mzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgQ29kZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBwYXRjaCBpcyBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiUmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoaXMgY29kZSBiZWZvcmUgSSBjYW4gYXNzZXNzIGl0cyBpbXBhY3QuXCIgTXkgZXhwZXJ0IGluc3RpbmN0IGlzIHRvIGRpc3NlY3QgdGhpcyBwaWVjZSBieSBwaWVjZS5cblxuRmlyc3QsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgZXhhY3QgZHJpdmVyIGluIHF1ZXN0aW9uLiBcIk1UNzkyeFwiIHN1Z2dlc3RzIE1lZGlhVGVrLCBzbyB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBzcGVjaWZpYyBkcml2ZXIgaXMgdXRpbGl6ZWQuIElzIGl0IGZvciBhIHBoeXNpY2FsIGhhcmR3YXJlIGludGVyZmFjZSBsaWtlIFBDSWUsIFVTQiwgU0RJTywgb3IgaXMgaXQgYW4gaW50ZWdyYXRlZCBTb0Mgc29sdXRpb24/IERvZXMgaXQgaGF2ZSBhbnkgaW1wbGljYXRpb25zIGZvciB2aXJ0dWFsaXphdGlvbiwgbGlrZSBRRU1VLCBvciBldmVuIGNsb3VkLW5hdGl2ZSBlbnZpcm9ubWVudHM/IFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgd2hlcmUgdGhpcyBwYXRjaCBtaWdodCBiZSByZWxldmFudCBhbmQgaWYgaXQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIGFueSBjb21wYXRpYmlsaXR5IGlzc3VlcyBpbiB2aXJ0dWFsaXplZCBzZXR1cHMsIHdoaWNoIGlzIGFsd2F5cyBhIGNvbmNlcm4uXG5cblRvIGFjaGlldmUgdGhhdCwgSSB3aWxsIGltbWVkaWF0ZWx5IGxldmVyYWdlIGBncmVwcGVyYCBhbmQgYHJlYWQtZmlsZWAgdG8gZ2V0IGEgcXVpY2sgb3ZlcnZpZXcgb2YgaXRzIHVzYWdlLiBXaXRoIHRob3NlIHR3byB0b29scywgSSBjYW4gc3RhcnQgdG8gYnVpbGQgYSBwaWN0dXJlIG9mIGl0cyByb2xlIGluIHRoZSBrZXJuZWwgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBtb2R1bGVzIGFuZCB0aGUgd2lkZXIgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjY5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjoxNzoxMS4wODAxNjAxODlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgzNTY3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTJ4X2FzYXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTkyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjkzOm10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGNsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICoqdGFibGUsIHU4ICp2ZXJzaW9uKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xMDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxMDE6XFx0aWYgKGxlbiA9PSBzaXplb2Yoc3RydWN0IG10NzkyeF9hc2FyX2NsKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjEwMjpcXHRcXHQqdmVyc2lvbiA9ICgoc3RydWN0IG10NzkyeF9hc2FyX2NsICopKnRhYmxlKS1cXHUwMDNldmVyc2lvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjEwMzpcXHRlbHNlIGlmIChsZW4gPT0gc2l6ZW9mKHN0cnVjdCBtdDc5MnhfYXNhcl9jbF92MykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxMDQ6XFx0XFx0KnZlcnNpb24gPSAoKHN0cnVjdCBtdDc5MnhfYXNhcl9jbF92MyAqKSp0YWJsZSktXFx1MDAzZXZlcnNpb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xMDUtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0xMTI9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTEzOm10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGRzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICoqdGFibGUsIHU4IHZlcnNpb24pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xMjQtXFx0Y2FzZSAxOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTI1OlxcdFxcdGVuYWJsZSA9ICgoc3RydWN0IG10NzkyeF9hc2FyX2R5biAqKSp0YWJsZSktXFx1MDAzZWVuYWJsZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjEyNjpcXHRcXHRzYXJsZW4gPSBzaXplb2Yoc3RydWN0IG10NzkyeF9hc2FyX2R5bl9saW1pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxMjc6XFx0XFx0cHJlbGVuID0gc2l6ZW9mKHN0cnVjdCBtdDc5MnhfYXNhcl9keW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTI4LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTI5LVxcdGNhc2UgMjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjEzMDpcXHRcXHRlbmFibGUgPSAoKHN0cnVjdCBtdDc5MnhfYXNhcl9keW5fdjIgKikqdGFibGUpLVxcdTAwM2VlbmFibGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxMzE6XFx0XFx0c2FybGVuID0gc2l6ZW9mKHN0cnVjdCBtdDc5MnhfYXNhcl9keW5fbGltaXRfdjIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTMyOlxcdFxcdHByZWxlbiA9IHNpemVvZihzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZHluX3YyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTEzMy1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MTQ3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjE0ODptdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRncyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlLCB1OCB2ZXJzaW9uKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTU4LVxcdGNhc2UgMTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjE1OTpcXHRcXHRzYXJsZW4gPSBzaXplb2Yoc3RydWN0IG10NzkyeF9hc2FyX2dlb19saW1pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxNjA6XFx0XFx0cHJlbGVuID0gc2l6ZW9mKHN0cnVjdCBtdDc5MnhfYXNhcl9nZW8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTYxLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTYyLVxcdGNhc2UgMjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjE2MzpcXHRcXHRzYXJsZW4gPSBzaXplb2Yoc3RydWN0IG10NzkyeF9hc2FyX2dlb19saW1pdF92Mik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxNjQ6XFx0XFx0cHJlbGVuID0gc2l6ZW9mKHN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fdjIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMTY1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0xNzg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MTc5Om10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGZnKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICoqdGFibGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xODAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0xOTM9aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjIwMjpcXHRyZXQgPSBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRjbChkZXYsICh1OCAqKilcXHUwMDI2YXNhci1cXHUwMDNlY291bnRyeWxpc3QsIFxcdTAwMjZhc2FyLVxcdTAwM2V2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjAzLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjA4OlxcdHJldCA9IG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGRzKGRldiwgKHU4ICoqKVxcdTAwMjZhc2FyLVxcdTAwM2VkeW4sIGFzYXItXFx1MDAzZXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMDktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMTQtXFx0LyogTVRHUyBpcyBvcHRpb25hbCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjE1OlxcdHJldCA9IG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGdzKGRldiwgKHU4ICoqKVxcdTAwMjZhc2FyLVxcdTAwM2VnZW8sIGFzYXItXFx1MDAzZXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMTYtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMjEtXFx0LyogTVRGRyBpcyBvcHRpb25hbCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjIyOlxcdHJldCA9IG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGZnKGRldiwgKHU4ICoqKVxcdTAwMjZhc2FyLVxcdTAwM2VmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMjMtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0yMzM9c3RhdGljIHM4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoyMzQ6bXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIzNS1cXHRcXHRcXHRlbnVtIG5sODAyMTFfYmFuZCBiYW5kLCBzOCBkeW5fcG93ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIzNy1cXHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphc2FyID0gcGh5LVxcdTAwM2VhY3Bpc2FyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjM4OlxcdHN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fYmFuZCAqYmFuZF9wd3I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMzktXFx0czggZ2VvX3Bvd2VyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0yOTY9c3RhdGljIHM4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoyOTc6bXQ3OTJ4X2FzYXJfcmFuZ2VfcHdyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yOTgtXFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGNmZzgwMjExX3Nhcl9mcmVxX3JhbmdlcyAqcmFuZ2UsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTMyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjMyNjpcXHQvKiAweGZmOiBubyBkeW5hbWljIGxpbWl0LCBzZWUgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3IoKSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MzI3OlxcdHJldHVybiBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cihwaHksIGJhbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zMjgtXFx0XFx0XFx0XFx0ICAgICAgIGxpbWl0W2lkeF0gPT0gMHhmZiA/IDEyNyA6IGxpbWl0W2lkeF0pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0zMzE9aW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM1MC1cXHRcXHRmcnAtXFx1MDAzZXBvd2VyID0gbWluX3QoczgsIHNldF9kZWZhdWx0ID8gMTI3IDogZnJwLVxcdTAwM2Vwb3dlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjM1MTpcXHRcXHRcXHRcXHQgICBtdDc5MnhfYXNhcl9yYW5nZV9wd3IocGh5LCBmcnAtXFx1MDAzZXJhbmdlLCBpKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNTItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0zNTg9dTggbXQ3OTJ4X2FjcGlfZ2V0X2ZsYWdzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM2MC1cXHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphY3Bpc2FyID0gcGh5LVxcdTAwM2VhY3Bpc2FyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MzYxOlxcdHN0cnVjdCBtdDc5MnhfYXNhcl9mZyAqZmc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNjItXFx0c3RydWN0IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9Mzk1PXN0YXRpYyB1MzJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjM5NjptdDc5MnhfYWNwaV9nZXRfbXRjbF9tYXBfdjMoaW50IHJvdywgaW50IGNvbHVtbiwgc3RydWN0IG10NzkyeF9hc2FyX2NsX3YzICpjbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM5Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTQwOT1zdGF0aWMgdTMyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzo0MTA6bXQ3OTJ4X2FjcGlfZ2V0X210Y2xfbWFwKGludCByb3csIGludCBjb2x1bW4sIHN0cnVjdCBtdDc5MnhfYXNhcl9jbCAqY2wpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy00MTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz00Mjc9bXQ3OTJ4X2FjcGlfcGFyc2VfbXRjbF90YmxfdjMoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy00MjktXFx0c3RydWN0IG10NzkyeF9hY3BpX3NhciAqc2FyID0gcGh5LVxcdTAwM2VhY3Bpc2FyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6NDMwOlxcdHN0cnVjdCBtdDc5MnhfYXNhcl9jbF92MyAqY2wgPSBzYXItXFx1MDAzZWNvdW50cnlsaXN0X3YzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtNDMxLVxcdGludCBjb2wsIHJvdywgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9NDU2PW10NzkyeF9hY3BpX3BhcnNlX210Y2xfdGJsKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGNoYXIgKmFscGhhMilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtNDU4LVxcdHN0cnVjdCBtdDc5MnhfYWNwaV9zYXIgKnNhciA9IHBoeS1cXHUwMDNlYWNwaXNhcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjQ1OTpcXHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfY2wgKmNsID0gc2FyLVxcdTAwM2Vjb3VudHJ5bGlzdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTQ2MC1cXHRpbnQgY29sLCByb3csIGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6MjA6c3RydWN0IG10NzkyeF9hc2FyX2R5bl9saW1pdCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC0yMS1cXHR1OCBpZHg7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6MjU6c3RydWN0IG10NzkyeF9hc2FyX2R5biB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC0yNi1cXHR1OCBuYW1lc1s0XTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMjgtXFx0dTggbnJfdGJsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6Mjk6XFx0REVDTEFSRV9GTEVYX0FSUkFZKHN0cnVjdCBtdDc5MnhfYXNhcl9keW5fbGltaXQsIHRibCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC0zMC19IF9fcGFja2VkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDozMjpzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZHluX2xpbWl0X3YyIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTMzLVxcdHU4IGlkeDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDozNzpzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZHluX3YyIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTM4LVxcdHU4IG5hbWVzWzRdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC00MS1cXHR1OCBucl90Ymw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDo0MjpcXHRERUNMQVJFX0ZMRVhfQVJSQVkoc3RydWN0IG10NzkyeF9hc2FyX2R5bl9saW1pdF92MiwgdGJsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTQzLX0gX19wYWNrZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC00NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjQ1OnN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fYmFuZCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC00Ni1cXHR1OCBwd3I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6NTA6c3RydWN0IG10NzkyeF9hc2FyX2dlb19saW1pdCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC01MS1cXHR1OCBpZHg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC01Mi1cXHQvKiAwOjJHLCAxOjVHICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDo1MzpcXHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvX2JhbmQgYmFuZFsyXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTU0LX0gX19wYWNrZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC01NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjU2OnN0cnVjdCBtdDc5MnhfYXNhcl9nZW8ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNTctXFx0dTggbmFtZXNbNF07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTU5LVxcdHU4IG5yX3RibDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjYwOlxcdERFQ0xBUkVfRkxFWF9BUlJBWShzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvX2xpbWl0LCB0YmwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNjEtfSBfX3BhY2tlZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6NjM6c3RydWN0IG10NzkyeF9hc2FyX2dlb19saW1pdF92MiB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC02NC1cXHR1OCBpZHg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC02NS1cXHQvKiAwOjJHLCAxOjVHLCAyOjZHICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDo2NjpcXHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvX2JhbmQgYmFuZFszXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTY3LX0gX19wYWNrZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC02OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjY5OnN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fdjIge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNzAtXFx0dTggbmFtZXNbNF07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTczLVxcdHU4IG5yX3RibDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjc0OlxcdERFQ0xBUkVfRkxFWF9BUlJBWShzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvX2xpbWl0X3YyLCB0YmwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtNzUtfSBfX3BhY2tlZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6Nzc6c3RydWN0IG10NzkyeF9hc2FyX2NsX3YzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTc4LVxcdHU4IG5hbWVzWzRdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC04Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjg4OnN0cnVjdCBtdDc5MnhfYXNhcl9jbCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC04OS1cXHR1OCBuYW1lc1s0XTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtOTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDo5NzpzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZmcge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtOTgtXFx0dTggbmFtZXNbNF07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oPTEwNj1zdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMTA4LVxcdHVuaW9uIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjEwOTpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZHluICpkeW47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDoxMTA6XFx0XFx0c3RydWN0IG10NzkyeF9hc2FyX2R5bl92MiAqZHluX3YyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMTExLVxcdH07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC0xMTItXFx0dW5pb24ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmg6MTEzOlxcdFxcdHN0cnVjdCBtdDc5MnhfYXNhcl9nZW8gKmdlbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjExNDpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfZ2VvX3YyICpnZW9fdjI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaC0xMTUtXFx0fTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTExNi1cXHR1bmlvbiB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDoxMTc6XFx0XFx0c3RydWN0IG10NzkyeF9hc2FyX2NsICpjb3VudHJ5bGlzdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oOjExODpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfY2xfdjMgKmNvdW50cnlsaXN0X3YzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmgtMTE5LVxcdH07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuaDoxMjA6XFx0c3RydWN0IG10NzkyeF9hc2FyX2ZnICpmZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5oLTEyMS19O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjoxNzoxMS4xMjg1MjExMzhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NzY2NTgxNDkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQUNQSSBTQVIgQ29tcGlsYXRpb24gYW5kIFVzYWdlKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlIGBtdDc5MnhfYWNwaV9zYXIuY2AgZmlsZSBmaXRzIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGhvdyBpdCdzIHV0aWxpemVkLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGRlbHZlIGludG8gdGhlIGBNYWtlZmlsZWAuIFRoYXQnbGwgdGVsbCBtZSBob3cgdGhpcyBzcGVjaWZpYyBzb3VyY2UgZmlsZSBpcyBjb21waWxlZCBhbmQgbGlua2VkLiBJIG5lZWQgdG8gaWRlbnRpZnkgYW55IGRlcGVuZGVuY2llcywgYW55IHNwZWNpZmljIGZsYWdzIGJlaW5nIHVzZWQuLi4gdGhlIHdob2xlIG5pbmUgeWFyZHMuIE9uY2UgSSd2ZSBnb3QgYSBoYW5kbGUgb24gdGhlIGJ1aWxkIGVudmlyb25tZW50LCBJJ2xsIHRoZW4gbW92ZSBvbiB0byBwaW5wb2ludGluZyB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGNyaXRpY2FsIGhlcmU6IGBtdDc5MnhfaW5pdF9hY3BpX3NhcmAgYW5kIGBtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcmAuIEknbSBnb2luZyB0byB0cmFjayBkb3duIGV2ZXJ5IGluc3RhbmNlIHdoZXJlIGVpdGhlciBvZiB0aGVzZSBhcmUgY2FsbGVkLiBUaGlzIHdpbGwgcGFpbnQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGVzZSBTQVIgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zIGFyZSBiZWluZyBpbnRlZ3JhdGVkIGludG8gdGhlIGRyaXZlciBhbmQsIG1vcmUgaW1wb3J0YW50bHksIHdoZW4gYW5kIHdoeSB0aGV5J3JlIGJlaW5nIGV4ZWN1dGVkLiBGcm9tIHRoZXJlIEkgY2FuIGRldGVybWluZSB0aGUgb3ZlcmFsbCBmbG93IGFuZCBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzMDUsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjoxNzoxNi44OTUxMDQ3ODFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAyMjcwMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTJ4X2luaXRfYWNwaV9zYXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM9MTcwPWludCBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyMjE6XFx0bXQ3OTJ4X2luaXRfYWNwaV9zYXIoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjIyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jPTEyODY9aW50IG10NzkyMV9zZXRfdHhfc2FyX3B3cihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0xMjk2LVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MTI5NzpcXHRtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihtdDc5MnhfaHdfcGh5KGh3KSwgIXNhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTEyOTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM9MjQzPWludCBtdDc5MjVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyOTI6XFx0bXQ3OTJ4X2luaXRfYWNwaV9zYXIoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjkzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTE4Nzk9aW50IG10NzkyNV9zZXRfdHhfc2FyX3B3cihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xODg5LVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTg5MDpcXHRtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihtdDc5MnhfaHdfcGh5KGh3KSwgIXNhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE4OTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oPTYzMD1pbnQgbXQ3OTJ4ZV9tY3VfZndfcG1jdHJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC02MzItI2lmZGVmIENPTkZJR19BQ1BJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2MzM6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6NjM0OmludCBtdDc5MnhfaW5pdF9hY3BpX3Nhcl9wb3dlcihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBib29sIHNldF9kZWZhdWx0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTYzNS11OCBtdDc5MnhfYWNwaV9nZXRfZmxhZ3Moc3RydWN0IG10NzkyeF9waHkgKnBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD02MzY9dTMyIG10NzkyeF9hY3BpX2dldF9tdGNsX2NvbmYoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTYzNy0jZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6NjM4OnN0YXRpYyBpbmxpbmUgaW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC02Mzkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC02NDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2NDM6c3RhdGljIGlubGluZSBpbnQgbXQ3OTJ4X2luaXRfYWNwaV9zYXJfcG93ZXIoc3RydWN0IG10NzkyeF9waHkgKnBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTY0NC1cXHRcXHRcXHRcXHRcXHQgICAgIGJvb2wgc2V0X2RlZmF1bHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTE3OT1tdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRmZyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCAqKnRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzoxOTM6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0xOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMzAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjMxOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeF9pbml0X2FjcGlfc2FyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTIzMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9Mjk3PW10NzkyeF9hc2FyX3JhbmdlX3B3cihzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzozMzE6aW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zMzIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNTUtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MzU2OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM1Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6MTc6MTYuOTQ1MzM5OTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MDM4Mjg3ODQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIGBtdDc5MjFgIGFuZCBgbXQ3OTI1YCBDaGlwc2V0cyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgZGV2aWNlcyB0aGF0IHV0aWxpemUgdGhlIGBtdDc5MjFgIGFuZCBgbXQ3OTI1YCBjaGlwc2V0cy4gV2hhdCdzIHRoZSBsYW5kc2NhcGUgaGVyZT8gQXJlIHdlIHByaW1hcmlseSBsb29raW5nIGF0IGVtYmVkZGVkIHNvbHV0aW9ucywgb3IgYXJlIHRoZXJlIFVTQiB2ZXJzaW9ucyBtYWtpbmcgdGhlIHJvdW5kcz8gQW5kIHdoYXQgYWJvdXQgUENJZSBvciBTRElPIGltcGxlbWVudGF0aW9ucz8gTmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGludGVyZmFjZSB2YXJpYXRpb25zLiBBbHJpZ2h0LCB0aW1lIHRvIGNyYWNrIG9wZW4gdGhlIGtlcm5lbCBzb3VyY2UgYW5kIHN0YXJ0IGRpZ2dpbmcuIEknbGwgemVybyBpbiBvbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvYCBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSdsbCBiZSBsb29raW5nIGludG8gdGhlIGBtdDc5MjEvYCBhbmQgYG10NzkyNS9gIHN1YmRpcmVjdG9yaWVzIHRvIHNlZSB3aGF0IGtpbmQgb2YgYXJjaGl0ZWN0dXJlIGFuZCBkZXZpY2UgaW1wbGVtZW50YXRpb25zIHdlIGhhdmUgaGVyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgYmFzZWxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNDM4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6MTc6MjIuOTgzNjI5NzI3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImRlYnVnZnMuY1wiLFxuICAgIFwiaW5pdC5jXCIsXG4gICAgXCJtYWMuY1wiLFxuICAgIFwibWFpbi5jXCIsXG4gICAgXCJtY3UuY1wiLFxuICAgIFwibWN1LmhcIixcbiAgICBcIm10NzkyMS5oXCIsXG4gICAgXCJwY2kuY1wiLFxuICAgIFwicGNpX21hYy5jXCIsXG4gICAgXCJwY2lfbWN1LmNcIixcbiAgICBcInJlZ2QuY1wiLFxuICAgIFwicmVnZC5oXCIsXG4gICAgXCJyZWdzLmhcIixcbiAgICBcInNkaW8uY1wiLFxuICAgIFwic2Rpb19tYWMuY1wiLFxuICAgIFwic2Rpb19tY3UuY1wiLFxuICAgIFwidGVzdG1vZGUuY1wiLFxuICAgIFwidXNiLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6MTc6MjIuOTgzNjkxNjc3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTU0MDUyMTczMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVVNCIERldmljZSBhbmQgQUNQSSBTQVIgSW52ZXN0aWdhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHNwb3R0ZWQgYHVzYi5jYCDigJMgdGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byB0aGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgTVQ3OTIxIGFuZCBNVDc5MjUgY2hpcHNldHM7IEknbGwgY2hlY2sgYG10NzkyMS91c2IuY2AgYW5kIGBtdDc5MjUvdXNiLmNgIG5leHQsIHNlZWluZyB3aGF0IHRoZXkncmUgZG9pbmcgb24gdGhlIFVTQiBmcm9udC4gQnV0IHRoZW4sIGEgcmVkIGZsYWcgcG9wcGVkIHVwOiB3aGF0IGFib3V0IEFDUEkgU0FSPyBDYW4gYSBVU0IgZGV2aWNlIGV2ZW4gKnVzZSogQUNQSSBTQVI/IFRoYXQncyB0aGUgcXVlc3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBBQ1BJIFNBUiBpcyBwcm9iZWQgYW5kIGluaXRpYWxpemVkIGluIHJlbGF0aW9uIHRvIHRoZXNlIGRldmljZXMuIExldCdzIGRpZyBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgbG93ZG93biBvbiBob3cgdGhlIEFDUEkgU0FSIGZ1bmN0aW9uYWxpdHkgaXMgaGFuZGxlZCBpbiB0aGlzIE1lZGlhdGVrIGNvbnRleHQuIEknbSBob3BpbmcgSSBjYW4gcGllY2UgdG9nZXRoZXIgdGhlIGludGVycmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIFVTQiBkZXZpY2UgYW5kIEFDUEkgU0FSIGZyb20gdGhhdCBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjg4MywiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjoxNzozOC4zODg5MTA5MDJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTAyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHQvKiBDb3B5cmlnaHQgKEMpIDIwMjMgTWVkaWFUZWsgSW5jLiAqL1xcbiAgIDM6XFx0XFxuICAgNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvYWNwaS5oXFx1MDAzZVxcbiAgIDU6XFx0I2luY2x1ZGUgXFxcIm10NzkyeC5oXFxcIlxcbiAgIDY6XFx0XFxuICAgNzpcXHRzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGNjX2xpc3RfYWxsW10gPSB7XFxuICAgODpcXHRcXHRcXFwiMDBcXFwiLCBcXFwiRVVcXFwiLCBcXFwiQVJcXFwiLCBcXFwiQVVcXFwiLCBcXFwiQVpcXFwiLCBcXFwiQllcXFwiLCBcXFwiQk9cXFwiLCBcXFwiQlJcXFwiLFxcbiAgIDk6XFx0XFx0XFxcIkNBXFxcIiwgXFxcIkNMXFxcIiwgXFxcIkNOXFxcIiwgXFxcIklEXFxcIiwgXFxcIkpQXFxcIiwgXFxcIk1ZXFxcIiwgXFxcIk1YXFxcIiwgXFxcIk1FXFxcIixcXG4gIDEwOlxcdFxcdFxcXCJNQVxcXCIsIFxcXCJOWlxcXCIsIFxcXCJOR1xcXCIsIFxcXCJQSFxcXCIsIFxcXCJSVVxcXCIsIFxcXCJSU1xcXCIsIFxcXCJTR1xcXCIsIFxcXCJLUlxcXCIsXFxuICAxMTpcXHRcXHRcXFwiVFdcXFwiLCBcXFwiVEhcXFwiLCBcXFwiVUFcXFwiLCBcXFwiR0JcXFwiLCBcXFwiVVNcXFwiLCBcXFwiVk5cXFwiLCBcXFwiS0hcXFwiLCBcXFwiUFlcXFwiLFxcbiAgMTI6XFx0fTtcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBjY19saXN0X2V1W10gPSB7XFxuICAxNTpcXHRcXHRcXFwiQURcXFwiLCBcXFwiQVRcXFwiLCBcXFwiQkVcXFwiLCBcXFwiQkdcXFwiLCBcXFwiQ1lcXFwiLCBcXFwiQ1pcXFwiLCBcXFwiSFJcXFwiLCBcXFwiREtcXFwiLFxcbiAgMTY6XFx0XFx0XFxcIkVFXFxcIiwgXFxcIkZJXFxcIiwgXFxcIkZSXFxcIiwgXFxcIkRFXFxcIiwgXFxcIkdSXFxcIiwgXFxcIkhVXFxcIiwgXFxcIklTXFxcIiwgXFxcIklFXFxcIixcXG4gIDE3OlxcdFxcdFxcXCJJVFxcXCIsIFxcXCJMVlxcXCIsIFxcXCJMSVxcXCIsIFxcXCJMVFxcXCIsIFxcXCJMVVxcXCIsIFxcXCJNQ1xcXCIsIFxcXCJNVFxcXCIsIFxcXCJOTFxcXCIsXFxuICAxODpcXHRcXHRcXFwiTk9cXFwiLCBcXFwiUExcXFwiLCBcXFwiUFRcXFwiLCBcXFwiUk9cXFwiLCBcXFwiU0tcXFwiLCBcXFwiU0lcXFwiLCBcXFwiRVNcXFwiLCBcXFwiU0VcXFwiLFxcbiAgMTk6XFx0XFx0XFxcIkNIXFxcIixcXG4gIDIwOlxcdH07XFxuICAyMTpcXHRcXG4gIDIyOlxcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY2NfbGlzdF9iZVtdID0ge1xcbiAgMjM6XFx0XFx0XFxcIkFSXFxcIiwgXFxcIkJSXFxcIiwgXFxcIkJZXFxcIiwgXFxcIkNMXFxcIiwgXFxcIklRXFxcIiwgXFxcIk1YXFxcIiwgXFxcIk9NXFxcIiwgXFxcIlJVXFxcIixcXG4gIDI0OlxcdFxcdFxcXCJSV1xcXCIsIFxcXCJWTlxcXCIsIFxcXCJLUlxcXCIsIFxcXCJVQVxcXCIsIFxcXCJcXFwiLCBcXFwiXFxcIiwgXFxcIlxcXCIsIFxcXCJcXFwiLFxcbiAgMjU6XFx0XFx0XFxcIkVVXFxcIiwgXFxcIkFUXFxcIiwgXFxcIkNOXFxcIiwgXFxcIkNBXFxcIiwgXFxcIlRXXFxcIiwgXFxcIk5aXFxcIiwgXFxcIlBIXFxcIiwgXFxcIlVLXFxcIixcXG4gIDI2OlxcdFxcdFxcXCJVU1xcXCIsXFxuICAyNzpcXHR9O1xcbiAgMjg6XFx0XFxuICAyOTpcXHRzdGF0aWMgaW50XFxuICAzMDpcXHRtdDc5MnhfYWNwaV9yZWFkKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICptZXRob2QsIHU4ICoqdGJsLCB1MzIgKmxlbilcXG4gIDMxOlxcdHtcXG4gIDMyOlxcdFxcdHN0cnVjdCBhY3BpX2J1ZmZlciBidWYgPSB7IEFDUElfQUxMT0NBVEVfQlVGRkVSLCBOVUxMIH07XFxuICAzMzpcXHRcXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2O1xcbiAgMzQ6XFx0XFx0dW5pb24gYWNwaV9vYmplY3QgKnNhcl9yb290O1xcbiAgMzU6XFx0XFx0YWNwaV9oYW5kbGUgcm9vdCwgaGFuZGxlO1xcbiAgMzY6XFx0XFx0YWNwaV9zdGF0dXMgc3RhdHVzO1xcbiAgMzc6XFx0XFx0dTMyIGkgPSAwO1xcbiAgMzg6XFx0XFx0aW50IHJldDtcXG4gIDM5OlxcdFxcbiAgNDA6XFx0XFx0cm9vdCA9IEFDUElfSEFORExFKG1kZXYtXFx1MDAzZWRldik7XFxuICA0MTpcXHRcXHRpZiAoIXJvb3QpXFxuICA0MjpcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuICA0MzpcXHRcXG4gIDQ0OlxcdFxcdHN0YXR1cyA9IGFjcGlfZ2V0X2hhbmRsZShyb290LCBtZXRob2QsIFxcdTAwMjZoYW5kbGUpO1xcbiAgNDU6XFx0XFx0aWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKVxcbiAgNDY6XFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuICA0NzpcXHRcXG4gIDQ4OlxcdFxcdHN0YXR1cyA9IGFjcGlfZXZhbHVhdGVfb2JqZWN0KGhhbmRsZSwgTlVMTCwgTlVMTCwgXFx1MDAyNmJ1Zik7XFxuICA0OTpcXHRcXHRpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpXFxuICA1MDpcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4gIDUxOlxcdFxcbiAgNTI6XFx0XFx0c2FyX3Jvb3QgPSBidWYucG9pbnRlcjtcXG4gIDUzOlxcdFxcdGlmIChzYXJfcm9vdC1cXHUwMDNldHlwZSAhPSBBQ1BJX1RZUEVfUEFDS0FHRSB8fFxcbiAgNTQ6XFx0XFx0ICAgIHNhcl9yb290LVxcdTAwM2VwYWNrYWdlLmNvdW50IFxcdTAwM2MgNCB8fFxcbiAgNTU6XFx0XFx0ICAgIHNhcl9yb290LVxcdTAwM2VwYWNrYWdlLmVsZW1lbnRzWzBdLnR5cGUgIT0gQUNQSV9UWVBFX0lOVEVHRVIpIHtcXG4gIDU2OlxcdFxcdFxcdGRldl9lcnIobWRldi1cXHUwMDNlZGV2LCBcXFwic2FyIGNudCA9ICVkXFxcXG5cXFwiLFxcbiAgNTc6XFx0XFx0XFx0XFx0c2FyX3Jvb3QtXFx1MDAzZXBhY2thZ2UuY291bnQpO1xcbiAgNTg6XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gIDU5OlxcdFxcdFxcdGdvdG8gZnJlZTtcXG4gIDYwOlxcdFxcdH1cXG4gIDYxOlxcdFxcbiAgNjI6XFx0XFx0aWYgKCEqdGJsKSB7XFxuICA2MzpcXHRcXHRcXHQqdGJsID0gZGV2bV9remFsbG9jKG1kZXYtXFx1MDAzZWRldiwgc2FyX3Jvb3QtXFx1MDAzZXBhY2thZ2UuY291bnQsXFxuICA2NDpcXHRcXHRcXHRcXHRcXHQgICAgR0ZQX0tFUk5FTCk7XFxuICA2NTpcXHRcXHRcXHRpZiAoISp0YmwpIHtcXG4gIDY2OlxcdFxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuICA2NzpcXHRcXHRcXHRcXHRnb3RvIGZyZWU7XFxuICA2ODpcXHRcXHRcXHR9XFxuICA2OTpcXHRcXHR9XFxuICA3MDpcXHRcXG4gIDcxOlxcdFxcdGlmIChsZW4pXFxuICA3MjpcXHRcXHRcXHQqbGVuID0gc2FyX3Jvb3QtXFx1MDAzZXBhY2thZ2UuY291bnQ7XFxuICA3MzpcXHRcXG4gIDc0OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBzYXJfcm9vdC1cXHUwMDNlcGFja2FnZS5jb3VudDsgaSsrKSB7XFxuICA3NTpcXHRcXHRcXHR1bmlvbiBhY3BpX29iamVjdCAqc2FyX3VuaXQgPSBcXHUwMDI2c2FyX3Jvb3QtXFx1MDAzZXBhY2thZ2UuZWxlbWVudHNbaV07XFxuICA3NjpcXHRcXG4gIDc3OlxcdFxcdFxcdGlmIChzYXJfdW5pdC1cXHUwMDNldHlwZSAhPSBBQ1BJX1RZUEVfSU5URUdFUilcXG4gIDc4OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAgNzk6XFx0XFxuICA4MDpcXHRcXHRcXHQqKCp0YmwgKyBpKSA9ICh1OClzYXJfdW5pdC1cXHUwMDNlaW50ZWdlci52YWx1ZTtcXG4gIDgxOlxcdFxcdH1cXG4gIDgyOlxcdFxcbiAgODM6XFx0XFx0cmV0ID0gaSA9PSBzYXJfcm9vdC1cXHUwMDNlcGFja2FnZS5jb3VudCA/IDAgOiAtRUlOVkFMO1xcbiAgODQ6XFx0ZnJlZTpcXG4gIDg1OlxcdFxcdGtmcmVlKHNhcl9yb290KTtcXG4gIDg2OlxcdFxcbiAgODc6XFx0XFx0cmV0dXJuIHJldDtcXG4gIDg4OlxcdH1cXG4gIDg5OlxcdFxcbiAgOTA6XFx0LyogTVRDTCA6IENvdW50cnkgTGlzdCBUYWJsZSBmb3IgNkcgYmFuZCAqL1xcbiAgOTE6XFx0LyogTVRDTCA6IENvdW50cnkgTGlzdCBUYWJsZSBmb3IgNkcgYmFuZCBhbmQgMTFCRSAqL1xcbiAgOTI6XFx0c3RhdGljIGludFxcbiAgOTM6XFx0bXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Y2woc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKip0YWJsZSwgdTggKnZlcnNpb24pXFxuICA5NDpcXHR7XFxuICA5NTpcXHRcXHRpbnQgbGVuLCByZXQ7XFxuICA5NjpcXHRcXG4gIDk3OlxcdFxcdHJldCA9IG10NzkyeF9hY3BpX3JlYWQoZGV2LCBNVDc5MnhfQUNQSV9NVENMLCB0YWJsZSwgXFx1MDAyNmxlbik7XFxuICA5ODpcXHRcXHRpZiAocmV0KVxcbiAgOTk6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMTAwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjoxNzozOC4zODkwMDMxMDJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDY4NDQ5OTQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgbXQ3OTJ4IEFDUEkgSGFuZGxpbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEkgc2VlIHRoYXQgYEFDUElfSEFORExFKG1kZXYtXHUwMDNlZGV2KWAgaXMgYmVpbmcgZXhhbWluZWQgaW4gdGhlIGBtdDc5MnhfYWNwaV9yZWFkYCBmdW5jdGlvbi4gVGhlIGNvZGUgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogaWYgdGhlcmUncyBubyBBQ1BJIG5vZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXZpY2UgKHRoYXQgYCFyb290YCBjaGVjayksIGl0IHJldHVybnMgYW4gYC1FT1BOT1RTVVBQYCBlcnJvci4gTmF0dXJhbGx5LCB0aGlzIGZsYWdzIG15IGF0dGVudGlvbiDigJMgd2hlbiAqZG9lcyogYSBkZXZpY2UgYWN0dWFsbHkgKmhhdmUqIG9uZSBvZiB0aGVzZSBBQ1BJIG5vZGVzPyBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aG9zZSBNZWRpYVRlay1zcGVjaWZpYyBBQ1BJIG1ldGhvZHM6IFwiTVRDTCxcIiBcIk1URFMsXCIgXCJNVEdTLFwiIGFuZCBcIk1URkcuXCJcblxuQWgsIHJpZ2h0LCB0aGlzIGlzIGFsbW9zdCBjZXJ0YWlubHkgb25seSBnb2luZyB0byBiZSBwcmVzZW50IHdoZW4gd2UncmUgZGVhbGluZyB3aXRoIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zLiBTcGVjaWZpY2FsbHksIE1lZGlhVGVrIFdpLUZpIGNhcmRzICppbiogbGFwdG9wcyB0aGF0IGhhdmUgT0VNIEFDUEkgRFNEVCB0YWJsZXMgdGhhdCBkZWZpbmUgdGhvc2UgXCJNVENML01URFMvTVRHUy9NVEZHXCIgbWV0aG9kcy4gU3RhbmRhcmQgc3R1ZmYsIHJlYWxseS5cblxuSG9sZCBvbiBhIHNlY29uZCwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHNvbWV0aGluZy4gSSBzaG91bGQgcmV2aWV3IGhvdyBgbXQ3OTJ4X2luaXRfYWNwaV9zYXJgIGlzIGFjdHVhbGx5IGNvbmZpZ3VyZWQuIExldCBtZSBnbyBvdmVyIGxpbmVzIDE4MC0yNTAgb2YgYG10NzkyeF9hY3BpX3Nhci5jYCBqdXN0IHRvIGJlIGNlcnRhaW4uIEkgd2FudCB0byBtYWtlIHN1cmUgSSBhbSBhY2NvdW50aW5nIGZvciBhbnkgb2YgdGhlIGZpbmVyIGRldGFpbHMgb2YgdGhlIGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDgwMSwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDAyOjE3OjQzLjA3MzUwNDI2MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHR7XFxuIDE4MTpcXHRcXHRpbnQgbGVuLCByZXQ7XFxuIDE4MjpcXHRcXG4gMTgzOlxcdFxcdHJldCA9IG10NzkyeF9hY3BpX3JlYWQoZGV2LCBNVDc5MnhfQUNQSV9NVEZHLCB0YWJsZSwgXFx1MDAyNmxlbik7XFxuIDE4NDpcXHRcXHRpZiAocmV0KVxcbiAxODU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMTg2OlxcdFxcbiAxODc6XFx0XFx0aWYgKGxlbiBcXHUwMDNjIE1UNzkyeF9BU0FSX01JTl9GRylcXG4gMTg4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAxODk6XFx0XFxuIDE5MDpcXHRcXHRyZXR1cm4gMDtcXG4gMTkxOlxcdH1cXG4gMTkyOlxcdFxcbiAxOTM6XFx0aW50IG10NzkyeF9pbml0X2FjcGlfc2FyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuIDE5NDpcXHR7XFxuIDE5NTpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphc2FyO1xcbiAxOTY6XFx0XFx0aW50IHJldDtcXG4gMTk3OlxcdFxcbiAxOTg6XFx0XFx0YXNhciA9IGRldm1fa3phbGxvYyhkZXYtXFx1MDAzZW10NzYuZGV2LCBzaXplb2YoKmFzYXIpLCBHRlBfS0VSTkVMKTtcXG4gMTk5OlxcdFxcdGlmICghYXNhcilcXG4gMjAwOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAyMDE6XFx0XFxuIDIwMjpcXHRcXHRyZXQgPSBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRjbChkZXYsICh1OCAqKilcXHUwMDI2YXNhci1cXHUwMDNlY291bnRyeWxpc3QsIFxcdTAwMjZhc2FyLVxcdTAwM2V2ZXIpO1xcbiAyMDM6XFx0XFx0aWYgKHJldCkge1xcbiAyMDQ6XFx0XFx0XFx0ZGV2bV9rZnJlZShkZXYtXFx1MDAzZW10NzYuZGV2LCBhc2FyLVxcdTAwM2Vjb3VudHJ5bGlzdCk7XFxuIDIwNTpcXHRcXHRcXHRhc2FyLVxcdTAwM2Vjb3VudHJ5bGlzdCA9IE5VTEw7XFxuIDIwNjpcXHRcXHR9XFxuIDIwNzpcXHRcXG4gMjA4OlxcdFxcdHJldCA9IG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGRzKGRldiwgKHU4ICoqKVxcdTAwMjZhc2FyLVxcdTAwM2VkeW4sIGFzYXItXFx1MDAzZXZlcik7XFxuIDIwOTpcXHRcXHRpZiAocmV0KSB7XFxuIDIxMDpcXHRcXHRcXHRkZXZtX2tmcmVlKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIGFzYXItXFx1MDAzZWR5bik7XFxuIDIxMTpcXHRcXHRcXHRhc2FyLVxcdTAwM2VkeW4gPSBOVUxMO1xcbiAyMTI6XFx0XFx0fVxcbiAyMTM6XFx0XFxuIDIxNDpcXHRcXHQvKiBNVEdTIGlzIG9wdGlvbmFsICovXFxuIDIxNTpcXHRcXHRyZXQgPSBtdDc5MnhfYXNhcl9hY3BpX3JlYWRfbXRncyhkZXYsICh1OCAqKilcXHUwMDI2YXNhci1cXHUwMDNlZ2VvLCBhc2FyLVxcdTAwM2V2ZXIpO1xcbiAyMTY6XFx0XFx0aWYgKHJldCkge1xcbiAyMTc6XFx0XFx0XFx0ZGV2bV9rZnJlZShkZXYtXFx1MDAzZW10NzYuZGV2LCBhc2FyLVxcdTAwM2VnZW8pO1xcbiAyMTg6XFx0XFx0XFx0YXNhci1cXHUwMDNlZ2VvID0gTlVMTDtcXG4gMjE5OlxcdFxcdH1cXG4gMjIwOlxcdFxcbiAyMjE6XFx0XFx0LyogTVRGRyBpcyBvcHRpb25hbCAqL1xcbiAyMjI6XFx0XFx0cmV0ID0gbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210ZmcoZGV2LCAodTggKiopXFx1MDAyNmFzYXItXFx1MDAzZWZnKTtcXG4gMjIzOlxcdFxcdGlmIChyZXQpIHtcXG4gMjI0OlxcdFxcdFxcdGRldm1fa2ZyZWUoZGV2LVxcdTAwM2VtdDc2LmRldiwgYXNhci1cXHUwMDNlZmcpO1xcbiAyMjU6XFx0XFx0XFx0YXNhci1cXHUwMDNlZmcgPSBOVUxMO1xcbiAyMjY6XFx0XFx0fVxcbiAyMjc6XFx0XFx0ZGV2LVxcdTAwM2VwaHkuYWNwaXNhciA9IGFzYXI7XFxuIDIyODpcXHRcXG4gMjI5OlxcdFxcdHJldHVybiAwO1xcbiAyMzA6XFx0fVxcbiAyMzE6XFx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTJ4X2luaXRfYWNwaV9zYXIpO1xcbiAyMzI6XFx0XFxuIDIzMzpcXHRzdGF0aWMgczhcXG4gMjM0OlxcdG10NzkyeF9hc2FyX2dldF9nZW9fcHdyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksXFxuIDIzNTpcXHRcXHRcXHRcXHRlbnVtIG5sODAyMTFfYmFuZCBiYW5kLCBzOCBkeW5fcG93ZXIpXFxuIDIzNjpcXHR7XFxuIDIzNzpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphc2FyID0gcGh5LVxcdTAwM2VhY3Bpc2FyO1xcbiAyMzg6XFx0XFx0c3RydWN0IG10NzkyeF9hc2FyX2dlb19iYW5kICpiYW5kX3B3cjtcXG4gMjM5OlxcdFxcdHM4IGdlb19wb3dlcjtcXG4gMjQwOlxcdFxcdHU4IGlkeCwgbWF4O1xcbiAyNDE6XFx0XFxuIDI0MjpcXHRcXHRpZiAoIWFzYXItXFx1MDAzZWdlbylcXG4gMjQzOlxcdFxcdFxcdHJldHVybiBkeW5fcG93ZXI7XFxuIDI0NDpcXHRcXG4gMjQ1OlxcdFxcdHN3aXRjaCAocGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VkZXYtXFx1MDAzZXJlZ2lvbikge1xcbiAyNDY6XFx0XFx0Y2FzZSBOTDgwMjExX0RGU19GQ0M6XFxuIDI0NzpcXHRcXHRcXHRpZHggPSAwO1xcbiAyNDg6XFx0XFx0XFx0YnJlYWs7XFxuIDI0OTpcXHRcXHRjYXNlIE5MODAyMTFfREZTX0VUU0k6XFxuIDI1MDpcXHRcXHRcXHRpZHggPSAxO1xcbiAyNTE6XFx0XFx0XFx0YnJlYWs7XFxuIDI1MjpcXHRcXHRkZWZhdWx0OiAvKiBXVyAqL1xcbiAyNTM6XFx0XFx0XFx0aWR4ID0gMjtcXG4gMjU0OlxcdFxcdFxcdGJyZWFrO1xcbiAyNTU6XFx0XFx0fVxcbiAyNTY6XFx0XFxuIDI1NzpcXHRcXHRpZiAoYXNhci1cXHUwMDNldmVyID09IDEpIHtcXG4gMjU4OlxcdFxcdFxcdGJhbmRfcHdyID0gXFx1MDAyNmFzYXItXFx1MDAzZWdlby1cXHUwMDNldGJsW2lkeF0uYmFuZFswXTtcXG4gMjU5OlxcdFxcdFxcdG1heCA9IEFSUkFZX1NJWkUoYXNhci1cXHUwMDNlZ2VvLVxcdTAwM2V0YmxbaWR4XS5iYW5kKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6MTc6NDMuMDczNTgyNDYxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk2NTcxNTgwMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3ciBGdW5jdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBtdDc5MnhfYXNhcl9nZXRfZ2VvX3B3cmAgc3RhcnRzIHdpdGggYSBjcml0aWNhbCBjaGVjazogYGlmICghYXNhci1cdTAwM2VnZW8pIHJldHVybiBkeW5fcG93ZXI7YC4gU28sIGlmIGBhc2FyLVx1MDAzZWdlb2AgaXNuJ3Qgc2V0LCBpdCBpbW1lZGlhdGVseSByZXR1cm5zIGBkeW5fcG93ZXJgLiBNYWtlcyBzZW5zZSDigJMgaWYgd2UgZG9uJ3QgaGF2ZSBnZW8tbG9jYXRpb24gZGF0YSwgd2UgZmFsbCBiYWNrIHRvIGEgZHluYW1pYyBwb3dlciBzZXR0aW5nLiBCdXQsIHRoZSByZWFsIHF1ZXN0aW9uIGlzIGhvdyBgYXNhci1cdTAwM2VnZW9gIGdldHMgcG9wdWxhdGVkLlxuXG5JdCBhcHBlYXJzIGBhc2FyLVx1MDAzZWdlb2AgaXMgb25seSBpbml0aWFsaXplZCBpZiBgbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Z3NgIGlzIHN1Y2Nlc3NmdWwuIEFuZCAqdGhhdCogZnVuY3Rpb24gaXMgY2FsbGluZyBhbiBBQ1BJIG1ldGhvZCBjYWxsZWQgXCJNVEdTXCIgb24gdGhlIEFDUEkgaGFuZGxlIGFzc29jaWF0ZWQgd2l0aCBgbWRldi1cdTAwM2VkZXZgLiBPa2F5LCBzbyB3ZSdyZSByZWx5aW5nIG9uIEFDUEkgdG8gcHJvdmlkZSB0aGUgZ2VvZ3JhcGhpY2FsIHBvd2VyIGRhdGEuIFRoYXQncyBhIHJlYXNvbmFibGUgYXBwcm9hY2gsIGFzc3VtaW5nIHRoZSBBQ1BJIHRhYmxlcyBhcmUgcHJvcGVybHkgY29uZmlndXJlZCBvbiB0aGUgc3lzdGVtLlxuXG5Ob3csIEkgbmVlZCB0byBiZSAqYWJzb2x1dGVseSogc3VyZSBvZiB0aGlzIGxvZ2ljLiBJIG5lZWQgdG8gYmUgMTAwJSBzdXJlIHRoYXQgdGhlcmUgYXJlbid0IGFueSBvdGhlciBwbGFjZXMgd2hlcmUgYGFzYXItXHUwMDNlZ2VvYCwgYGFzYXItXHUwMDNlZHluYCwgb3IgZXZlbiBqdXN0IHRoZSBgYXNhcmAgc3RydWN0dXJlIGl0c2VsZiwgZ2V0cyBtb2RpZmllZC4gQW55IG90aGVyIG1vZGlmaWNhdGlvbiBjb3VsZCBhZmZlY3QgdGhlIGZsb3cgb2YgdGhpcyBjb2RlLiBJdCBjb3VsZCBjYXVzZSByYWNlIGNvbmRpdGlvbnMuIEl0IGNvdWxkIGNhdXNlIHRoZSBnZW8tbG9jYXRpb24gc3lzdGVtIHRvIHJldHVybiBpbmNvcnJlY3QgdmFsdWVzLiBUaW1lIHRvIGRvIGEgdGhvcm91Z2ggc2VhcmNoIGZvciBhbnkgb3RoZXIgdXNhZ2Ugb2YgYGFjcGlzYXJgIG9yIGBnZW9gIHdpdGhpbiB0aGUgYG10NzZgIGNvZGViYXNlLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgYW55IG90aGVyIHBsYWNlcyB3aGVyZSB0aGVzZSB2YXJpYWJsZXMgbWF5IGJlIGdldHRpbmcgc2V0IG9yIG1vZGlmaWVkIHRvIHZlcmlmeSB0aGlzIGxvZ2ljLiBBIGJyb2FkIHNlYXJjaCB3b3VsZCBpbnZvbHZlIHNlYXJjaGluZyBmb3IgYWxsIGluc3RhbmNlcyBvZiBcImFjcGlzYXJcIiBhbmQgXCJnZW9cIiBpbiBgbXQ3NmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NTkyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6MTc6NTIuNzMwNzQzNDIzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTAxNjMwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhY3Bpc2FyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD0yMDQ9c3RydWN0IG10NzkyeF9waHkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC0yMjgtI2lmZGVmIENPTkZJR19BQ1BJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDoyMjk6XFx0dm9pZCAqYWNwaXNhcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTIzMC0jZW5kaWZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9MTkzPWludCBtdDc5MnhfaW5pdF9hY3BpX3NhcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0yMjYtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MjI3OlxcdGRldi1cXHUwMDNlcGh5LmFjcGlzYXIgPSBhc2FyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjI4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0yMzQ9bXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjM2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjIzNzpcXHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphc2FyID0gcGh5LVxcdTAwM2VhY3Bpc2FyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMjM4LVxcdHN0cnVjdCBtdDc5MnhfYXNhcl9nZW9fYmFuZCAqYmFuZF9wd3I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTI5Nz1tdDc5MnhfYXNhcl9yYW5nZV9wd3Ioc3RydWN0IG10NzkyeF9waHkgKnBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzAxLVxcdGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9zYXJfY2FwYSAqY2FwYSA9IHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LVxcdTAwM2VzYXJfY2FwYTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjMwMjpcXHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICphc2FyID0gcGh5LVxcdTAwM2VhY3Bpc2FyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzAzLVxcdHU4ICpsaW1pdCwgYmFuZCwgbWF4O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0zMzE9aW50IG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGJvb2wgc2V0X2RlZmF1bHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTMzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjMzNjpcXHRpZiAoIXBoeS1cXHUwMDNlYWNwaXNhciB8fCAhKChzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICopcGh5LVxcdTAwM2VhY3Bpc2FyKS1cXHUwMDNlZHluKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzM3LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz0zNTg9dTggbXQ3OTJ4X2FjcGlfZ2V0X2ZsYWdzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MzYwOlxcdHN0cnVjdCBtdDc5MnhfYWNwaV9zYXIgKmFjcGlzYXIgPSBwaHktXFx1MDAzZWFjcGlzYXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy0zNjEtXFx0c3RydWN0IG10NzkyeF9hc2FyX2ZnICpmZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6MzcyOlxcdGlmICghYWNwaXNhcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM3My1cXHRcXHRyZXR1cm4gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTM3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjM3NTpcXHRmZyA9IGFjcGlzYXItXFx1MDAzZWZnO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtMzc2LVxcdGlmICghZmcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jPTQyNz1tdDc5MnhfYWNwaV9wYXJzZV9tdGNsX3RibF92MyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBjaGFyICphbHBoYTIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy00Mjgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM6NDI5OlxcdHN0cnVjdCBtdDc5MnhfYWNwaV9zYXIgKnNhciA9IHBoeS1cXHUwMDNlYWNwaXNhcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTQzMC1cXHRzdHJ1Y3QgbXQ3OTJ4X2FzYXJfY2xfdjMgKmNsID0gc2FyLVxcdTAwM2Vjb3VudHJ5bGlzdF92MztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmM9NDU2PW10NzkyeF9hY3BpX3BhcnNlX210Y2xfdGJsKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGNoYXIgKmFscGhhMilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jLTQ1Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYzo0NTg6XFx0c3RydWN0IG10NzkyeF9hY3BpX3NhciAqc2FyID0gcGh5LVxcdTAwM2VhY3Bpc2FyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtNDU5LVxcdHN0cnVjdCBtdDc5MnhfYXNhcl9jbCAqY2wgPSBzYXItXFx1MDAzZWNvdW50cnlsaXN0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYz00Nzk9dTMyIG10NzkyeF9hY3BpX2dldF9tdGNsX2NvbmYoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgY2hhciAqYWxwaGEyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2FjcGlfc2FyLmMtNDgwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9hY3BpX3Nhci5jOjQ4MTpcXHRzdHJ1Y3QgbXQ3OTJ4X2FjcGlfc2FyICpzYXIgPSBwaHktXFx1MDAzZWFjcGlzYXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfYWNwaV9zYXIuYy00ODItXFx0dTMyIGNvbmZpZyA9IDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDAyOjE3OjUyLjc3OTc2Mzc3MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2Mzc2OTEyMDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyBpdDpcblxuKipEaWdnaW5nIGludG8gdGhlIEhhcmR3YXJlIExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gY2xhcmlmeSB0aGUgc3BlY2lmaWNzIG9mIHdoYXQgdGhlIE1UNzkyMSBhbmQgTVQ3OTI1IGNoaXBzZXRzIGFjdHVhbGx5IHN1cHBvcnQgZnJvbSBhIGhhcmR3YXJlIHN0YW5kcG9pbnQuIEJleW9uZCB0aGF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgbXQ3NiwgbXQ3OTIxLCBhbmQgbXQ3OTI1IGRlc2lnbmF0aW9ucyBleGNsdXNpdmVseSByZWZlciB0byBwaHlzaWNhbCBoYXJkd2FyZSBvciBpZiB0aGVyZSdzIG1vcmUgdG8gaXQgdGhhbiBtZWV0cyB0aGUgZXllLiBNeSBuZXh0IHN0ZXAgaW52b2x2ZXMgZGl2aW5nIGludG8gdGhlIEtjb25maWcgZmlsZXMgZm9yIE1UNzkyMSwgTVQ3OTI1LCBhbmQgTVQ3Ni4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGVpciBjYXBhYmlsaXRpZXMgYW5kIHJlbGF0aW9uc2hpcHMgd2l0aGluIHRoZSBjb25maWd1cmF0aW9uIGZyYW1ld29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwNzksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjoxNzo1OS4xNTY2Nzc5MTZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MDEwMTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc5MlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZz0yOD1jb25maWcgTVQ3Nl9DT05OQUNfTElCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjMyOmNvbmZpZyBNVDc5MnhfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMzLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjM2OmNvbmZpZyBNVDc5MnhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTM3LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyOmNvbmZpZyBNVDc5MjFfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzo3OmNvbmZpZyBNVDc5MjFFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy04LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFFIChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjE3OmNvbmZpZyBNVDc5MjFTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxUyAoU0RJTykgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyODpjb25maWcgTVQ3OTIxVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMjktXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyNV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDAyOjE3OjU5LjIwNDY5MjI4NVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODQwMDcxODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgVVNCIERyaXZlciBTQVIgQ29tcGF0aWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhlIE1UNzkyMVUgYW5kIE1UNzkyNVUgZHJpdmVycywga25vd2luZyB0aGV5J3JlIFVTQi1iYXNlZC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgVVNCIGRldmljZXMgY2FuIGV2ZW4gKmhhdmUqIEFDUEkgU0FSIGNvbnNpZGVyYXRpb25zLiBJdCBzZWVtcyBhIGJpdCB1bnVzdWFsLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZS4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlIHRvIGNvbmZpcm0gb25lIHdheSBvciB0aGUgb3RoZXIuIE15IGZpcnN0IHN0ZXAgd2lsbCBiZSB0byBleGFtaW5lIHRoZSBgbXQ3OTIxdV9wcm9iZWAgYW5kIGBtdDc5MjV1X3Byb2JlYCBmdW5jdGlvbnMsIG9yIHBlcmhhcHMgYG10NzkyMV9yZWdpc3Rlcl9kZXZpY2VgLCB0byBzZWUgaWYgdGhlcmUncyBhbnl0aGluZyByZWxhdGVkIHRvIFNBUiBvciBwb3dlciBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgVVNCIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLiBTaW5jZSBJJ20gd29ya2luZyB3aXRoIHRoZSBNVDc5MjEgc3BlY2lmaWNhbGx5LCBJJ2xsIGZvY3VzIG15IGluaXRpYWwgZXhhbWluYXRpb24gb24gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jYC4gVGhhdCBzZWVtcyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHJlbGF0ZWQgY29kZS4gRnJvbSB0aGVyZSwgSSdsbCBzZWUgd2hlcmUgdG8gZ28gbmV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyNTIsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjoxODowMi4wNDQ3NjY0ODFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjUwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjUwOlxcdFxcdHJldHVybiAwO1xcbiAyNTE6XFx0XFxuIDI1MjpcXHRlcnJvcjpcXG4gMjUzOlxcdFxcdG10NzZ1X3F1ZXVlc19kZWluaXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDI1NDpcXHRcXHRtdDc5Mnh1X3Jlc2V0X3dvcmtfY2xlYW51cChkZXYpO1xcbiAyNTU6XFx0XFxuIDI1NjpcXHRcXHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcXG4gMjU3OlxcdFxcbiAyNTg6XFx0XFx0bXQ3Nl9mcmVlX2RldmljZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMjU5OlxcdFxcbiAyNjA6XFx0XFx0cmV0dXJuIHJldDtcXG4gMjYxOlxcdH1cXG4gMjYyOlxcdFxcbiAyNjM6XFx0I2lmZGVmIENPTkZJR19QTVxcbiAyNjQ6XFx0c3RhdGljIGludCBtdDc5MjF1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcXG4gMjY1OlxcdHtcXG4gMjY2OlxcdFxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xcbiAyNjc6XFx0XFx0c3RydWN0IG10NzZfY29ubmFjX3BtICpwbSA9IFxcdTAwMjZkZXYtXFx1MDAzZXBtO1xcbiAyNjg6XFx0XFx0aW50IGVycjtcXG4gMjY5OlxcdFxcbiAyNzA6XFx0XFx0cG0tXFx1MDAzZXN1c3BlbmRlZCA9IHRydWU7XFxuIDI3MTpcXHRcXHRmbHVzaF93b3JrKFxcdTAwMjZkZXYtXFx1MDAzZXJlc2V0X3dvcmspO1xcbiAyNzI6XFx0XFxuIDI3MzpcXHRcXHRlcnIgPSBtdDc2X2Nvbm5hY19tY3Vfc2V0X2hpZl9zdXNwZW5kKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHRydWUsIHRydWUpO1xcbiAyNzQ6XFx0XFx0aWYgKGVycilcXG4gMjc1OlxcdFxcdFxcdGdvdG8gZmFpbGVkO1xcbiAyNzY6XFx0XFxuIDI3NzpcXHRcXHRtdDc2dV9zdG9wX3J4KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbiAyNzg6XFx0XFx0bXQ3NnVfc3RvcF90eChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMjc5OlxcdFxcbiAyODA6XFx0XFx0cmV0dXJuIDA7XFxuIDI4MTpcXHRcXG4gMjgyOlxcdGZhaWxlZDpcXG4gMjgzOlxcdFxcdHBtLVxcdTAwM2VzdXNwZW5kZWQgPSBmYWxzZTtcXG4gMjg0OlxcdFxcbiAyODU6XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIDI4NjpcXHRcXHRcXHRtdDc5MnhfcmVzZXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDI4NzpcXHRcXG4gMjg4OlxcdFxcdHJldHVybiBlcnI7XFxuIDI4OTpcXHR9XFxuIDI5MDpcXHRcXG4gMjkxOlxcdHN0YXRpYyBpbnQgbXQ3OTIxdV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuIDI5MjpcXHR7XFxuIDI5MzpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcXG4gMjk0OlxcdFxcdHN0cnVjdCBtdDc2X2Nvbm5hY19wbSAqcG0gPSBcXHUwMDI2ZGV2LVxcdTAwM2VwbTtcXG4gMjk1OlxcdFxcdGJvb2wgcmVpbml0ID0gdHJ1ZTtcXG4gMjk2OlxcdFxcdGludCBlcnIsIGk7XFxuIDI5NzpcXHRcXG4gMjk4OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAxMDsgaSsrKSB7XFxuIDI5OTpcXHRcXHRcXHR1MzIgdmFsID0gbXQ3Nl9ycihkZXYsIE1UX1dGX1NXX0RFRl9DUl9VU0JfTUNVX0VWRU5UKTtcXG4gMzAwOlxcdFxcbiAzMDE6XFx0XFx0XFx0aWYgKCEodmFsIFxcdTAwMjYgTVRfV0ZfU1dfU0VSX1RSSUdHRVJfU1VTUEVORCkpIHtcXG4gMzAyOlxcdFxcdFxcdFxcdHJlaW5pdCA9IGZhbHNlO1xcbiAzMDM6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDMwNDpcXHRcXHRcXHR9XFxuIDMwNTpcXHRcXHRcXHRpZiAodmFsIFxcdTAwMjYgTVRfV0ZfU1dfU0VSX0RPTkVfU1VTUEVORCkge1xcbiAzMDY6XFx0XFx0XFx0XFx0bXQ3Nl93cihkZXYsIE1UX1dGX1NXX0RFRl9DUl9VU0JfTUNVX0VWRU5ULCAwKTtcXG4gMzA3OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAzMDg6XFx0XFx0XFx0fVxcbiAzMDk6XFx0XFxuIDMxMDpcXHRcXHRcXHRtc2xlZXAoMjApO1xcbiAzMTE6XFx0XFx0fVxcbiAzMTI6XFx0XFxuIDMxMzpcXHRcXHRpZiAocmVpbml0IHx8IG10NzkyeF9kbWFfbmVlZF9yZWluaXQoZGV2KSkge1xcbiAzMTQ6XFx0XFx0XFx0ZXJyID0gbXQ3OTJ4dV9kbWFfaW5pdChkZXYsIHRydWUpO1xcbiAzMTU6XFx0XFx0XFx0aWYgKGVycilcXG4gMzE2OlxcdFxcdFxcdFxcdGdvdG8gZmFpbGVkO1xcbiAzMTc6XFx0XFx0fVxcbiAzMTg6XFx0XFxuIDMxOTpcXHRcXHRlcnIgPSBtdDc2dV9yZXN1bWVfcngoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDMyMDpcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4gMzIxOlxcdFxcdFxcdGdvdG8gZmFpbGVkO1xcbiAzMjI6XFx0XFxuIDMyMzpcXHRcXHRlcnIgPSBtdDc2X2Nvbm5hY19tY3Vfc2V0X2hpZl9zdXNwZW5kKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIGZhbHNlLCB0cnVlKTtcXG4gMzI0OlxcdGZhaWxlZDpcXG4gMzI1OlxcdFxcdHBtLVxcdTAwM2VzdXNwZW5kZWQgPSBmYWxzZTtcXG4gMzI2OlxcdFxcbiAzMjc6XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIDMyODpcXHRcXHRcXHRtdDc5MnhfcmVzZXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuIDMyOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6MTg6MDIuMDQ0ODQ1NzQxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQyNzQyNTUzNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgc25pcHBldCwgZnJhbWVkIGFzIG15IGludGVybmFsIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgTVQ3OTIxVSBEcml2ZXIgUHJvYmUgYW5kIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gd2UncmUgc3RhcnRpbmcgd2l0aCBgbXQ3OTIxdV9wcm9iZWAuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQsIHRoZSBmaXJzdCBwbGFjZSB0aGUgZHJpdmVyIGdldHMgaW52b2x2ZWQgd2l0aCB0aGUgZGV2aWNlLiBOYXR1cmFsbHksIHRoZSBuZXh0IGNhbGwgaXMgdG8gYG10NzkyMXVfaW5pdGAsIHRoZSBtYWluIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiBUbyB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIEknbGwgbmVlZCB0byBzZWUgaG93IHRoZSBzeXN0ZW0gaXMgc2V0dGluZyB1cCB0aGUgY2hpcC5cblxuTGV0J3MgcXVpY2tseSBqdW1wIGludG8gdGhlIGNvZGUuIExpbmVzIDIwMCB0aHJvdWdoIDI1MCBpbiBgbXQ3OTIxL3VzYi5jYCBzaG91bGQgZ2l2ZSBtZSBhIHByZXR0eSBnb29kIG92ZXJ2aWV3IG9mIHdoYXQncyBoYXBwZW5pbmcgZHVyaW5nIHRoZSBpbml0aWFsIHNldHVwLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSB0aGluZ3MgbGlrZSBkZXZpY2UgcmVzb3VyY2UgYWxsb2NhdGlvbiwgcG90ZW50aWFsbHkgc29tZSBiYXNpYyBoYXJkd2FyZSByZXNldHMsIGFuZCBtYXliZSB0aGUgaW5pdGlhbCBjb25maWd1cmF0aW9uIG9mIHRoZSBVU0IgZW5kcG9pbnRzLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHJlZ2lzdGVyIGFjY2VzcyBwYXR0ZXJucyBhbmQgbWVtb3J5IGFsbG9jYXRpb25zIC0gdGhvc2UgYXJlIGFsd2F5cyBnb29kIGluZGljYXRvcnMgb2YgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4gSSdsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBlcnJvciBoYW5kbGluZyB3aXRoaW4gdGhvc2UgbGluZXMuIFRoYXQncyBhIGNyaXRpY2FsIGFyZWEgZm9yIGRldmljZSBwcm9iaW5nLCB3aGVyZSB0aGluZ3MgY2FuIGdvIHdyb25nIGlmIHRoZSBkZXZpY2UgaXNuJ3QgcHJvcGVybHkgY29ubmVjdGVkIG9yIHN1cHBvcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE3ODksIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDAyOjE4OjA2LjMxOTEwMzM5NloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTIyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjAwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjAwOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAyMDE6XFx0XFxuIDIwMjpcXHRcXHRkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkyeF9kZXYsIG10NzYpO1xcbiAyMDM6XFx0XFx0ZGV2LVxcdTAwM2Vmd19mZWF0dXJlcyA9IGZlYXR1cmVzO1xcbiAyMDQ6XFx0XFx0ZGV2LVxcdTAwM2VoaWZfb3BzID0gXFx1MDAyNmhpZl9vcHM7XFxuIDIwNTpcXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYuYnVzX2h1bmcsIGZhbHNlKTtcXG4gMjA2OlxcdFxcdG10NzkyeHVfcmVzZXRfd29ya19pbml0KGRldik7XFxuIDIwNzpcXHRcXG4gMjA4OlxcdFxcdHVzYl9yZXNldF9kZXZpY2UodWRldik7XFxuIDIwOTpcXHRcXG4gMjEwOlxcdFxcdHVzYl9zZXRfaW50ZmRhdGEodXNiX2ludGYsIGRldik7XFxuIDIxMTpcXHRcXG4gMjEyOlxcdFxcdHJldCA9IF9fbXQ3NnVfaW5pdChtZGV2LCB1c2JfaW50ZiwgXFx1MDAyNmJ1c19vcHMpO1xcbiAyMTM6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDIxNDpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiAyMTU6XFx0XFxuIDIxNjpcXHRcXHRtZGV2LVxcdTAwM2VyZXYgPSAobXQ3Nl9ycihkZXYsIE1UX0hXX0NISVBJRCkgXFx1MDAzY1xcdTAwM2MgMTYpIHxcXG4gMjE3OlxcdFxcdFxcdCAgICAobXQ3Nl9ycihkZXYsIE1UX0hXX1JFVikgXFx1MDAyNiAweGZmKTtcXG4gMjE4OlxcdFxcdGRldl9kYmcobWRldi1cXHUwMDNlZGV2LCBcXFwiQVNJQyByZXZpc2lvbjogJTA0eFxcXFxuXFxcIiwgbWRldi1cXHUwMDNlcmV2KTtcXG4gMjE5OlxcdFxcbiAyMjA6XFx0XFx0aWYgKG10NzZfZ2V0X2ZpZWxkKGRldiwgTVRfQ09OTl9PTl9NSVNDLCBNVF9UT1BfTUlTQzJfRldfTjlfUkRZKSkge1xcbiAyMjE6XFx0XFx0XFx0cmV0ID0gbXQ3OTJ4dV93ZnN5c19yZXNldChkZXYpO1xcbiAyMjI6XFx0XFx0XFx0aWYgKHJldClcXG4gMjIzOlxcdFxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDIyNDpcXHRcXHR9XFxuIDIyNTpcXHRcXG4gMjI2OlxcdFxcdHJldCA9IG10NzkyeHVfbWN1X3Bvd2VyX29uKGRldik7XFxuIDIyNzpcXHRcXHRpZiAocmV0KVxcbiAyMjg6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gMjI5OlxcdFxcbiAyMzA6XFx0XFx0cmV0ID0gbXQ3NnVfYWxsb2NfbWN1X3F1ZXVlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbiAyMzE6XFx0XFx0aWYgKHJldClcXG4gMjMyOlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDIzMzpcXHRcXG4gMjM0OlxcdFxcdHJldCA9IG10NzZ1X2FsbG9jX3F1ZXVlcyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG4gMjM1OlxcdFxcdGlmIChyZXQpXFxuIDIzNjpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiAyMzc6XFx0XFxuIDIzODpcXHRcXHRyZXQgPSBtdDc5Mnh1X2RtYV9pbml0KGRldiwgZmFsc2UpO1xcbiAyMzk6XFx0XFx0aWYgKHJldClcXG4gMjQwOlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDI0MTpcXHRcXG4gMjQyOlxcdFxcdGh3ID0gbXQ3Nl9odyhkZXYpO1xcbiAyNDM6XFx0XFx0LyogY2hlY2sgaHcgc2cgc3VwcG9ydCBpbiBvcmRlciB0byBlbmFibGUgQU1TRFUgKi9cXG4gMjQ0OlxcdFxcdGh3LVxcdTAwM2VtYXhfdHhfZnJhZ21lbnRzID0gbWRldi1cXHUwMDNldXNiLnNnX2VuID8gTVRfSFdfVFhQX01BWF9CVUZfTlVNIDogMTtcXG4gMjQ1OlxcdFxcbiAyNDY6XFx0XFx0cmV0ID0gbXQ3OTIxX3JlZ2lzdGVyX2RldmljZShkZXYpO1xcbiAyNDc6XFx0XFx0aWYgKHJldClcXG4gMjQ4OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDI0OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6MTg6MDYuMzE5MjE3Mjk2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE0MDE2NjgyODM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBNVDc5MnggQUNQSSBTQVIgUG93ZXIgQ2FsY3VsYXRpb24gQ29kZSBmb3IgRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGNvZGUgaW4gYG10NzkyeF9hY3BpX3Nhci5jYCBpcyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgU3BlY2lmaWMgQWJzb3JwdGlvbiBSYXRlIChTQVIpIHBvd2VyIGNhbGN1bGF0aW9ucyBmb3IgTWVkaWFUZWsgTVQ3OTJ4IFdpLUZpIGRldmljZXMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBtdDc2YCB3aXJlbGVzcyBkcml2ZXIuIFRoZSBpbml0aWFsIGNhbGwgaXMgdHJpZ2dlcmVkIGJ5IGBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlYCB3aGljaCBjYWxscyBgbXQ3OTJ4X2luaXRfYWNwaV9zYXJgLiAgVGhpcyBmdW5jdGlvbiBjYWxscyBzZXZlcmFsIEFDUEkgcmVhZCBmdW5jdGlvbnMsIG5hbWVseSBgbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Y2xgLCBgbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210ZHNgLCBgbXQ3OTJ4X2FzYXJfYWNwaV9yZWFkX210Z3NgLCBhbmQgYG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGZnYCB3aGljaCBhdHRlbXB0IHRvIHJlYWQgcHJvcHJpZXRhcnkgTWVkaWFUZWsgQUNQSSBtZXRob2RzIHN1Y2ggYXMgYE1UQ0xgLCBgTVREU2AsIGBNVEdTYCwgYW5kIGBNVEZHYCBmcm9tIHRoZSBBQ1BJIERTRFQvU1NEVCB0YWJsZXMuIFRoZXNlIGZ1bmN0aW9ucyBhbGwgY2FsbCBgbXQ3OTJ4X2FjcGlfcmVhZGAsIHdoaWNoIGF0dGVtcHRzIHRvIHJldHJpZXZlIGFuIEFDUEkgaGFuZGxlIGZyb20gdGhlIGRldmljZS5cblxuTm93LCBoZXJlJ3MgdGhlIGNydWNpYWwgcG9pbnQ6IEkga25vdyB0aGF0IGluIHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpIGVudmlyb25tZW50cywgd2hpY2ggYXJlIHdoYXQgd2UgdXNlIGZvciBmdXp6aW5nLCB0aGVzZSBNZWRpYVRlay1zcGVjaWZpYyBBQ1BJIG1ldGhvZHMgc2ltcGx5ICpkb24ndCBleGlzdCouIFFFTVUgZ2VuZXJhdGVzIGl0cyBvd24gQUNQSSB0YWJsZXMgZm9yIGVtdWxhdGVkIGRldmljZXMsIGFuZCB0aGVzZSB0YWJsZXMgY29udGFpbiBzdGFuZGFyZCBBQ1BJIG9iamVjdHMsIGJ1dCBub3QgdGhlIE1lZGlhVGVrIHByb3ByaWV0YXJ5IG9uZXMuICBFdmVuIGlmIHdlIHdlcmUgdG8gZW11bGF0ZSBhIFVTQiBvciBQQ0llIGRldmljZSwgdGhlIEFDUEkgdGFibGVzIGNvbnRhaW5pbmcgYE1UQ0xgLCBgTVREU2AsIGFuZCBmcmllbmRzIGFyZSBkZWZpbmVkIG9uIHJlYWwtd29ybGQgTWVkaWFUZWsgT0VNIGhhcmR3YXJlLCBzdWNoIGFzIG9uIGxhcHRvcHMgZnJvbSBBU1VTLCBMZW5vdm8sIG9yIEhQLiBUaGVyZWZvcmUsIGBtdDc5MnhfYWNwaV9yZWFkYCBpcyBhbHdheXMgZ29pbmcgdG8gZmFpbCB3aXRoIGAtRU9QTk9UU1VQUGAgb3IgYC1FSU9gLiBUaGlzIHRoZW4gbWVhbnMgdGhhdCB0aGUgY29ycmVzcG9uZGluZyBgYXNhci1cdTAwM2VkeW5gLCBgYXNhci1cdTAwM2VnZW9gLCBgYXNhci1cdTAwM2Vjb3VudHJ5bGlzdGAgYW5kIGBhc2FyLVx1MDAzZWZnYCB3aWxsIGJlIE5VTEwuXG5cblRoZSBwYXRjaCBpdHNlbGYgbW9kaWZpZXMgYG10NzkyeF9hc2FyX2dldF9nZW9fcHdyYCBhbmQgYG10NzkyeF9hc2FyX3JhbmdlX3B3cmAuIFRoZSBjcml0aWNhbCBmYWN0b3IgaXMgdGhlaXIgY2FsbGluZyBjb250ZXh0LiBCb3RoIHRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgYnkgYG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyKClgLiBCdXQgd2FpdCwgYG10NzkyeF9pbml0X2FjcGlfc2FyX3Bvd2VyYCBoYXMgYW4gZWFybHkgcmV0dXJuIGNvbmRpdGlvbjogYGlmICghcGh5LVx1MDAzZWFjcGlzYXIgfHwgISgoc3RydWN0IG10NzkyeF9hY3BpX3NhciAqKXBoeS1cdTAwM2VhY3Bpc2FyKS1cdTAwM2VkeW4pIHJldHVybiAwO2AuIFRoaXMgbWVhbnMgaWYgYGR5bmAgaXMgTlVMTCwgdGhlIGZ1bmN0aW9uIGltbWVkaWF0ZWx5IHJldHVybnMgd2l0aG91dCBldmVyIGV4ZWN1dGluZyBgbXQ3OTJ4X2FzYXJfZ2V0X2dlb19wd3JgIG9yIGBtdDc5MnhfYXNhcl9yYW5nZV9wd3JgLiAgUmVtZW1iZXIgYGR5bmAgaXMgcG9wdWxhdGVkIHRocm91Z2ggYG10NzkyeF9hc2FyX2FjcGlfcmVhZF9tdGRzYCBhZnRlciBzdWNjZXNzZnVsbHkgcmVhZGluZyB0aGUgTVREUyB0YWJsZS5cblxuQ29uc2lkZXJpbmcgYWxsIHRoaXMsIGV2ZW4gaWYgd2UgKmNvdWxkKiBzb21laG93IGdldCBhIE1lZGlhVGVrIE1UNzkyMS9NVDc5MjUgUENJZS9VU0IgZGV2aWNlIHByb2JlZCBpbiBRRU1VLCB3aGljaCBpdHNlbGYgaXMgaGlnaGx5IGltcHJvYmFibGUgZHVlIHRvIHRoZSBoYXJkd2FyZS1zcGVjaWZpYyByZWdpc3RlciBhY2Nlc3MgYW5kIGZpcm13YXJlIGxvYWRpbmcgcmVxdWlyZW1lbnRzIG9mIGBtdDc5MjF1X3Byb2JlYCBvciBzaW1pbGFyIHJvdXRpbmVzLCB3ZSB3b3VsZCBzdGlsbCBmYWlsIHRvIGV4ZWN1dGUgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aC4gUUVNVSBkb2VzIG5vdCBlbXVsYXRlIHRoZSBNVDc5Mnggd2lyZWxlc3MgY2hpcHNldCwgYW5kIFFFTVUncyBBQ1BJIHRhYmxlcyAqbmV2ZXIqIGluY2x1ZGUgTWVkaWFUZWsncyBwcm9wcmlldGFyeSBgTVREU2AvYE1UR1NgIFNBUiBtZXRob2RzLlxuXG5Db25zZXF1ZW50bHksIHNpbmNlIHRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgYXJlIHVucmVhY2hhYmxlIGluIG91ciB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cywgdGhlcmUncyBubyBuZWVkIHRvIGZ1enogdGhpcy4gSXQgaXMgYSBkZWFkIGVuZC4gTm8gbmVlZCB0byBlbmFibGUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIG9yIGZvY3VzIG9uIGFueSBzeW1ib2xzLiBUaGUgZW50aXJlIGNvZGUgcGF0aCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyOTU1LCJPdXRwdXRUb2tlbnMiOjEzOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NDUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwMjoxODoyMC4zMzU5MDM0NTJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzIxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBBQ1BJIFNBUiAoU3BlY2lmaWMgQWJzb3JwdGlvbiBSYXRlKSBwb3dlciBsaW1pdCBoYW5kbGluZyBpbiB0aGUgTWVkaWFUZWsgbXQ3OTJ4IHdpcmVsZXNzIGRyaXZlciAobXQ3OTJ4X2FjcGlfc2FyLmMpLiBUaGVzZSBjb2RlIHBhdGhzIGFyZSBvbmx5IGV4ZWN1dGVkIHdoZW4gcHJvcHJpZXRhcnkgTWVkaWFUZWsgQUNQSSBTQVIgbWV0aG9kcyAoTVREUywgTVRHUykgYXJlIGV2YWx1YXRlZCBmcm9tIHBsYXRmb3JtIGZpcm13YXJlIG9uIHBoeXNpY2FsIGhhcmR3YXJlIHdpdGggTWVkaWFUZWsgV2ktRmkgYWRhcHRlcnMuIEluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG5vIHN1Y2ggQUNQSSB0YWJsZXMgb3IgaGFyZHdhcmUgYXJlIHByZXNlbnQsIG1ha2luZyB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEFDUEkgU0FSIChTcGVjaWZpYyBBYnNvcnB0aW9uIFJhdGUpIHBvd2VyIGxpbWl0IGhhbmRsaW5nIGluIHRoZSBNZWRpYVRlayBtdDc5Mnggd2lyZWxlc3MgZHJpdmVyIChtdDc5MnhfYWNwaV9zYXIuYykuIFRoZXNlIGNvZGUgcGF0aHMgYXJlIG9ubHkgZXhlY3V0ZWQgd2hlbiBwcm9wcmlldGFyeSBNZWRpYVRlayBBQ1BJIFNBUiBtZXRob2RzIChNVERTLCBNVEdTKSBhcmUgZXZhbHVhdGVkIGZyb20gcGxhdGZvcm0gZmlybXdhcmUgb24gcGh5c2ljYWwgaGFyZHdhcmUgd2l0aCBNZWRpYVRlayBXaS1GaSBhZGFwdGVycy4gSW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbm8gc3VjaCBBQ1BJIHRhYmxlcyBvciBoYXJkd2FyZSBhcmUgcHJlc2VudCwgbWFraW5nIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDI6MTg6MjAuMzM1OTMwODAyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2bsr4[1] Phase: Running StartedAt: 2026-09-10 02:18:31 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2bsr4[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-10 02:18:31 +0000 UTC FinishedAt: 2026-09-10 02:18:36 +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,}