Name: series-workflowg2qtq Phase: Failed StartedAt: 2026-07-01 17:31:37 +0000 UTC FinishedAt: 2026-07-01 17:41:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2qtq[0] Phase: Succeeded StartedAt: 2026-07-01 17:31:37 +0000 UTC FinishedAt: 2026-07-01 17:41:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2qtq[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 17:31:37 +0000 UTC FinishedAt: 2026-07-01 17:41:32 +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+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGNvZGUgaXMgcGFydCBvZiB0aGUgVEkgUFJVIEV0aGVybmV0IEVNQUMgZHJpdmVyIChUSV9QUlVFVEgpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIHRoYXQgcmVxdWlyZXMgc3BlY2lmaWMgVEkgU29DIGhhcmR3YXJlIChvciBlbXVsYXRpb24pIGFuZCBkZXZpY2UgdHJlZSBub2RlcyB0byBwcm9iZS4gSW4gZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB1c2VkIGZvciBmdXp6aW5nLCB0aGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LCBzbyB0aGUgZHJpdmVyIHdpbGwgbm90IHByb2JlIGFuZCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2M2MmY4N2I0ODViYTRiZDU0YTc1NjdkMmNhMWE5MzBlYWFmZmMwMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMTc6NDA6MzEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuY1xuaW5kZXggM2Y4MjM3YzE3ZDA5OWUuLjA0YTgxNDAyZTNmM2NiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbmZpZy5jXG5AQCAtNzMyLDYgJiM0Mzs3MzIsMTYgQEAgaW50IGljc3NnX2ZkYl9hZGRfZGVsKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgY29uc3QgdW5zaWduZWQgY2hhciAqYWRkcixcbiBcdHU4IGZpZCA9IHZpZDtcbiBcdGludCByZXQ7XG4gXG4mIzQzO1x0LyogTGluay1sb2NhbCBhZGRyZXNzZXMgKDAxOjgwOmMyOjAwOjAwOjB4KSBtdXN0IG9ubHkgYmUgZGVsaXZlcmVkIHRvXG4mIzQzO1x0ICogdGhlIGhvc3QgcG9ydCAoUDApLiBDbGVhciBQMS9QMiBtZW1iZXJzaGlwIHRvIHByZXZlbnQgdGhlIGZpcm13YXJlXG4mIzQzO1x0ICogZnJvbSBmb3J3YXJkaW5nIHRoZW0gb3V0IG9mIHRoZSBwaHlzaWNhbCBzbGF2ZSBwb3J0cy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoaXNfbGlua19sb2NhbF9ldGhlcl9hZGRyKGFkZHIpKSB7XG4mIzQzO1x0XHRmaWRfYzIgfD0gSUNTU0dfRkRCX0VOVFJZX1AwX01FTUJFUlNISVA7XG4mIzQzO1x0XHRmaWRfYzIgXHUwMDI2PSB+KElDU1NHX0ZEQl9FTlRSWV9QMV9NRU1CRVJTSElQIHxcbiYjNDM7XHRcdFx0ICAgIElDU1NHX0ZEQl9FTlRSWV9QMl9NRU1CRVJTSElQKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWNzc2dfZmRiX3NldHVwKGVtYWMsIFx1MDAyNmZkYl9jbWQsIGFkZHIsIGZpZCwgYWRkID8gSUNTU19DTURfQUREX0ZEQiA6IElDU1NfQ01EX0RFTF9GREIpO1xuIFxuIFx0ZmlkX2MyIHw9IElDU1NHX0ZEQl9FTlRSWV9WQUxJRDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo0MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBjb2RlIGlzIHBhcnQgb2YgdGhlIFRJIFBSVSBFdGhlcm5ldCBFTUFDIGRyaXZlciAoVElfUFJVRVRIKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIFRJIFNvQyBoYXJkd2FyZSAob3IgZW11bGF0aW9uKSBhbmQgZGV2aWNlIHRyZWUgbm9kZXMgdG8gcHJvYmUuIEluIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UgdXNlZCBmb3IgZnV6emluZywgdGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCwgc28gdGhlIGRyaXZlciB3aWxsIG5vdCBwcm9iZSBhbmQgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2M2MmY4N2I0ODViYTRiZDU0YTc1NjdkMmNhMWE5MzBlYWFmZmMwMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDEgMTc6NDA6MzEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbmZpZy5jCmluZGV4IDNmODIzN2MxN2QwOTllLi4wNGE4MTQwMmUzZjNjYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmMKQEAgLTczMiw2ICYjNDM7NzMyLDE2IEBAIGludCBpY3NzZ19mZGJfYWRkX2RlbChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIsCiAJdTggZmlkID0gdmlkOwogCWludCByZXQ7CiAKJiM0MzsJLyogTGluay1sb2NhbCBhZGRyZXNzZXMgKDAxOjgwOmMyOjAwOjAwOjB4KSBtdXN0IG9ubHkgYmUgZGVsaXZlcmVkIHRvCiYjNDM7CSAqIHRoZSBob3N0IHBvcnQgKFAwKS4gQ2xlYXIgUDEvUDIgbWVtYmVyc2hpcCB0byBwcmV2ZW50IHRoZSBmaXJtd2FyZQomIzQzOwkgKiBmcm9tIGZvcndhcmRpbmcgdGhlbSBvdXQgb2YgdGhlIHBoeXNpY2FsIHNsYXZlIHBvcnRzLgomIzQzOwkgKi8KJiM0MzsJaWYgKGlzX2xpbmtfbG9jYWxfZXRoZXJfYWRkcihhZGRyKSkgewomIzQzOwkJZmlkX2MyIHw9IElDU1NHX0ZEQl9FTlRSWV9QMF9NRU1CRVJTSElQOwomIzQzOwkJZmlkX2MyICZhbXA7PSB+KElDU1NHX0ZEQl9FTlRSWV9QMV9NRU1CRVJTSElQIHwKJiM0MzsJCQkgICAgSUNTU0dfRkRCX0VOVFJZX1AyX01FTUJFUlNISVApOwomIzQzOwl9CiYjNDM7CiAJaWNzc2dfZmRiX3NldHVwKGVtYWMsICZhbXA7ZmRiX2NtZCwgYWRkciwgZmlkLCBhZGQgPyBJQ1NTX0NNRF9BRERfRkRCIDogSUNTU19DTURfREVMX0ZEQik7CiAKIAlmaWRfYzIgfD0gSUNTU0dfRkRCX0VOVFJZX1ZBTElEOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQ1CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSUNTU0cgRkRCIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuY2AuIFNwZWNpZmljYWxseSwgdGhlIGZvY3VzIGlzIG9uIHRoZSBgaWNzc2dfZmRiX2FkZF9kZWxgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QuIFRoZSBwYXRjaCBpcyBhZGRpbmcgYSBjaGVjayBmb3IgYGlzX2xpbmtfbG9jYWxfZXRoZXJfYWRkcihhZGRyKWAgYW5kIHRoZW4gdHdlYWtpbmcgYGZpZF9jMmAuICBUaGF0IHN1Z2dlc3RzIHRoaXMgbWlnaHQgYmUgcmVsYXRlZCB0byBob3cgdGhlIEZvcndhcmRpbmcgRGF0YWJhc2UgKEZEQikgaGFuZGxlcyBsaW5rLWxvY2FsIGFkZHJlc3Nlcywgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogdGhpcyBjaGFuZ2UgaXMgbmVjZXNzYXJ5LiBXaGF0JiMzOTtzIHRoZSBjb250ZXh0PyBXaGF0JiMzOTtzIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb24gZm9yIG5ldHdvcmsgcGVyZm9ybWFuY2Ugb3IgYmVoYXZpb3I/CgpOZXh0IHN0ZXA6IEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuY2AgaXRzZWxmLiBJIG5lZWQgdG8gdHJhY2UgZG93biB3aGVyZSBgaWNzc2dfZmRiX2FkZF9kZWxgIGlzIGFjdHVhbGx5ICpjYWxsZWQqIHdpdGhpbiB0aGUgZHJpdmVyLiBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsZXJzIHdpbGwgcmV2ZWFsIHRoZSBzY2VuYXJpb3MgdGhhdCB0aGlzIG1vZGlmaWNhdGlvbiBpbXBhY3RzLCBhbmQgZ2l2ZSBtZSB0aGUgY3J1Y2lhbCBjb250ZXh0IEkmIzM5O20gbWlzc2luZy4gRmluZGluZyB0aGVzZSBjYWxscyBpcyBwYXJhbW91bnQgdG8gZmlndXJpbmcgb3V0IHdoYXQgdGhpcyBwYXRjaCBpcyByZWFsbHkgYWJvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWNzc2dfZmRiX2FkZF9kZWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmM9Njk5PXN0YXRpYyB2b2lkIGljc3NnX2ZkYl9zZXR1cChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsIHN0cnVjdCBtZ210X2NtZCAqZmRiX2NtZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuYy03MjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuYzo3Mjc6aW50IGljc3NnX2ZkYl9hZGRfZGVsKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgY29uc3QgdW5zaWduZWQgY2hhciAqYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbmZpZy5jLTcyOC1cdFx0ICAgICAgdTggdmlkLCB1OCBmaWRfYzIsIGJvb2wgYWRkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbmZpZy5jLTc1OS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuYzo3NjA6RVhQT1JUX1NZTUJPTF9HUEwoaWNzc2dfZmRiX2FkZF9kZWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmMtNzYxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jPTIwOT1zdGF0aWMgdm9pZCBpY3NzZ19lbmFibGVfZndfb2ZmbG9hZChzdHJ1Y3QgcHJ1ZXRoICpwcnVldGgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMjI0LVx0XHRcdGlmIChuZXRpZl9ydW5uaW5nKGVtYWMtXHUwMDNlbmRldikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjIyNTpcdFx0XHRcdGljc3NnX2ZkYl9hZGRfZGVsKGVtYWMsIGV0aF9zdHBfYWRkciwgcHJ1ZXRoLVx1MDAzZWRlZmF1bHRfdmxhbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTIyNi1cdFx0XHRcdFx0XHQgIElDU1NHX0ZEQl9FTlRSWV9QMF9NRU1CRVJTSElQIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYz02Mjc9c3RhdGljIGludCBpY3NzZ19wcnVldGhfYWRkX21jYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBjb25zdCB1OCAqYWRkcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy02MzgtXHRwb3J0X21hc2sgPSBCSVQoZW1hYy1cdTAwM2Vwb3J0X2lkKSB8IGljc3NnX2ZkYl9sb29rdXAoZW1hYywgYWRkciwgdmxhbl9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYzo2Mzk6XHRpY3NzZ19mZGJfYWRkX2RlbChlbWFjLCBhZGRyLCB2bGFuX2lkLCBwb3J0X21hc2ssIHRydWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtNjQwLVx0aWNzc2dfdnRibF9tb2RpZnkoZW1hYywgdmxhbl9pZCwgcG9ydF9tYXNrLCBwb3J0X21hc2ssIHRydWUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jPTY0NT1zdGF0aWMgaW50IGljc3NnX3BydWV0aF9kZWxfbWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGNvbnN0IHU4ICphZGRyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTY1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjY2MDpcdGljc3NnX2ZkYl9hZGRfZGVsKGVtYWMsIGFkZHIsIHZsYW5faWQsIHBvcnRfbWFzaywgZmFsc2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtNjYxLVx0aWNzc2dfdnRibF9tb2RpZnkoZW1hYywgdmxhbl9pZCwgcG9ydF9tYXNrLCBwb3J0X21hc2ssIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy02NjMtXHRpZiAob3RoZXJfcG9ydF9tYXNrKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYzo2NjQ6XHRcdGljc3NnX2ZkYl9hZGRfZGVsKGVtYWMsIGFkZHIsIHZsYW5faWQsIG90aGVyX3BvcnRfbWFzaywgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy02NjUtXHRcdGljc3NnX3Z0YmxfbW9kaWZ5KGVtYWMsIHZsYW5faWQsIG90aGVyX3BvcnRfbWFzayxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYz03MDk9c3RhdGljIHZvaWQgaWNzc2dfaHNyX2ZkYl91cGRhdGUoc3RydWN0IHBydWV0aF9lbWFjICplbWFjLCBjb25zdCB1OCAqYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy03MTEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6NzEyOlx0aWNzc2dfZmRiX2FkZF9kZWwoZW1hYywgYWRkciwgdmlkLCBwb3J0X21lbWJlcnNoaXAsIGFkZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy03MTMtXHRpY3NzZ192dGJsX21vZGlmeShlbWFjLCB2aWQsIEJJVChlbWFjLVx1MDAzZXBvcnRfaWQpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5oPTQ0NT1pbnQgaWNzc2dfc2VuZF9mZGJfbXNnKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgc3RydWN0IG1nbXRfY21kICpjbWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguaC00NDYtXHRcdCAgICAgICBzdHJ1Y3QgbWdtdF9jbWRfcnNwICpyc3ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmg6NDQ3OmludCBpY3NzZ19mZGJfYWRkX2RlbChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsICBjb25zdCB1bnNpZ25lZCBjaGFyICphZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmgtNDQ4LVx0XHQgICAgICB1OCB2aWQsIHU4IGZpZF9jMiwgYm9vbCBhZGQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jPTEyNT1zdGF0aWMgdm9pZCBwcnVldGhfc3dpdGNoZGV2X2V2ZW50X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jLTE0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jOjE0ODpcdFx0cmV0ID0gaWNzc2dfZmRiX2FkZF9kZWwoZW1hYywgZmRiLVx1MDAzZWFkZHIsIGZkYi1cdTAwM2V2aWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0xNDktXHRcdFx0XHRcdEJJVChwb3J0X2lkKSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmMtMTYzLVx0XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmM6MTY0Olx0XHRpY3NzZ19mZGJfYWRkX2RlbChlbWFjLCBmZGItXHUwMDNlYWRkciwgZmRiLVx1MDAzZXZpZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jLTE2NS1cdFx0XHRcdCAgQklUKHBvcnRfaWQpLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmM9MjU5PXN0YXRpYyBpbnQgcHJ1ZXRoX3N3aXRjaGRldl92bGFuX2RlbChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsIHUxNiB2aWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmMtMjczLVx0aWYgKGNwdV9wb3J0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmM6Mjc0Olx0XHRpY3NzZ19mZGJfYWRkX2RlbChlbWFjLCBlbWFjLVx1MDAzZW1hY19hZGRyLCB2aWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0yNzUtXHRcdFx0XHQgIEJJVChQUlVFVEhfUE9SVF9IT1NUKSwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jPTMxNz1zdGF0aWMgaW50IHBydWV0aF9zd2l0Y2hkZXZfbWRiX2FkZChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmMtMzMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmM6MzM0Olx0ZXJyID0gaWNzc2dfZmRiX2FkZF9kZWwoZW1hYywgbWRiLVx1MDAzZWFkZHIsIG1kYi1cdTAwM2V2aWQsIGZpZF9jMiB8IHBvcnRfbWFzaywgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0zMzUtXHRuZXRkZXZfZGJnKGVtYWMtXHUwMDNlbmRldiwgXCYjMzQ7TURCIGFkZCB2aWQgJXU6JXBNICBwb3J0czogJVhcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmM9MzQxPXN0YXRpYyBpbnQgcHJ1ZXRoX3N3aXRjaGRldl9tZGJfZGVsKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0zNTctXHRpZiAoZmlkX2MyIFx1MDAyNiB+ZGVsX21hc2spXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYzozNTg6XHRcdHJldCA9IGljc3NnX2ZkYl9hZGRfZGVsKGVtYWMsIG1kYi1cdTAwM2VhZGRyLCBtZGItXHUwMDNldmlkLCBmaWRfYzIgXHUwMDI2IH5kZWxfbWFzaywgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0zNTktXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYzozNjA6XHRcdHJldCA9IGljc3NnX2ZkYl9hZGRfZGVsKGVtYWMsIG1kYi1cdTAwM2VhZGRyLCBtZGItXHUwMDNldmlkLCAwLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0zNjEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg5MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEV0aGVybmV0IERyaXZlciBDaGFuZ2UqKgoKT2theSwgc28gdGhlIGNoYW5nZSBpcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmNgLiBUaGV5JiMzOTt2ZSBhZGRlZCBhIGNoZWNrIGZvciBgaXNfbGlua19sb2NhbF9ldGhlcl9hZGRyKGFkZHIpYCB3aXRoaW4gdGhlIGBpY3NzZ19mZGJfYWRkX2RlbGAgZnVuY3Rpb24uIFRoYXQgZnVuY3Rpb24sIGluIHR1cm4sIGlzIGNhbGxlZCBieSBxdWl0ZSBhIGZldyBvdGhlciBmdW5jdGlvbnMgd2l0aGluIHRoZSBkcml2ZXI6IGBpY3NzZ19wcnVldGhfYWRkX21jYXN0YCwgYGljc3NnX3BydWV0aF9kZWxfbWNhc3RgLCBgaWNzc2dfaHNyX2ZkYl91cGRhdGVgLCBgcHJ1ZXRoX3N3aXRjaGRldl9ldmVudF93b3JrYCwgYHBydWV0aF9zd2l0Y2hkZXZfdmxhbl9kZWxgLCBgcHJ1ZXRoX3N3aXRjaGRldl9tZGJfYWRkYCwgYW5kIGBwcnVldGhfc3dpdGNoZGV2X21kYl9kZWxgLiAgVGhpcyBpcyBzcGVjaWZpY2FsbHkgZm9yIHRoZSBUSSBQUlUtSUNTU0cgRXRoZXJuZXQgZHJpdmVyLCByaWdodD8gSW50ZXJlc3RpbmcuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyBhYm91dCB0aGUgdXNlIGNhc2UuIElzIHRoaXMgZHJpdmVyIGV2ZW4gKnVzZWQqIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cz8gSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIG9wdGlvbnMgZm9yIHRoaXMgdGhpbmcuIFRoYXQgd2lsbCBnaXZlIG1lIHNvbWUgY2x1ZXMgYXMgdG8gd2hlcmUgaXQmIzM5O3MgdHlwaWNhbGx5IGRlcGxveWVkIGFuZCB3aGF0IHRoZSBleHBlY3RhdGlvbnMgZm9yIHRoaXMgZHJpdmVyIGFyZS4gVGhpcyBpcyBhIGJpdCB1bnVzdWFsLiBUaGlzIHdvdWxkIGJlIGEgZ3JlYXQgdGhpbmcgdG8gY2hlY2sgZm9yIGFueSBwb3RlbnRpYWwgaW1wYWN0IGluIGNvbnRhaW5lcml6ZWQgZW52aXJvbm1lbnRzLiBJJiMzOTtsbCBjaGVjayB0aGF0IG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRJX1BSVUVUSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTIyMj1jb25maWcgVElfSUNTU19JRVBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjM0OmNvbmZpZyBUSV9QUlVFVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjM1LVx0dHJpc3RhdGUgXCYjMzQ7VEkgUFJVIEV0aGVybmV0IEVNQUMgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUxNAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBDaGFpbiBmb3IgVElfUFJVRVRIKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBpbXBsaWNhdGlvbnMgb2YgYFRJX1BSVUVUSGAuIEl0JiMzOTtzIGEgY3JpdGljYWwgY29tcG9uZW50LCBhbmQgSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIGl0cyBkZXBlbmRlbmNpZXMuIE15IGltbWVkaWF0ZSBnb2FsIGlzIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoaXMgbW9kdWxlICpyZWxpZXMqIHVwb24sIGJvdGggYXQgdGhlIGhhcmR3YXJlIGxldmVsIGFuZCB3aXRoaW4gdGhlIHNvZnR3YXJlIHN0YWNrLiBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0lzIHRoaXMgYSBwdXJlIGhhcmR3YXJlIGludGVyZmFjZT8gRG9lcyBpdCBsZWFuIG9uIHNwZWNpZmljIGRyaXZlcnMsIGNvcmUgbGlicmFyaWVzLCBvciBwZXJoYXBzIGV2ZW4gaGlnaGVyLWxldmVsIGZyYW1ld29ya3M/JiMzNDsgSSBuZWVkIHRvIHNlZSB0aGUgZW50aXJlIGRlcGVuZGVuY3kgY2hhaW4gYW5kIHF1aWNrbHkuIEkmIzM5O20gZ29pbmcgdG8gbWFwIG91dCB0aGUgZW50aXJlIHN0cnVjdHVyZSBmcm9tIHRoZSB0b3AtZG93bi4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoZXRoZXIgdGhlIGRlcGVuZGVuY2llcyBhcmUgdGlnaHRseSBjb3VwbGVkIG9yIGxvb3NlbHkgY291cGxlZCwgYXMgdGhhdCBkZXRlcm1pbmVzIG11Y2ggb2YgdGhlIHN5c3RlbSBkZXNpZ24uIEkga25vdyB0aGF0IEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHNoYXJlZCByZXNvdXJjZXMsIGludGVycnVwdCB2ZWN0b3JzLCBhbmQgcG90ZW50aWFsIHNvdXJjZXMgb2YgY29udGVudGlvbi4gS25vd2luZyB0aGUgZGVwZW5kZW5jaWVzIGlzIHN0ZXAgb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIzNCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjM0Olx0Y29uZmlnIFRJX1BSVUVUSFxuIDIzNTpcdFx0dHJpc3RhdGUgXCYjMzQ7VEkgUFJVIEV0aGVybmV0IEVNQUMgZHJpdmVyXCYjMzQ7XG4gMjM2Olx0XHRkZXBlbmRzIG9uIFBSVV9SRU1PVEVQUk9DXG4gMjM3Olx0XHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVZcbiAyMzg6XHRcdHNlbGVjdCBUSV9JQ1NTX0lFUFxuIDIzOTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuIDI0MDpcdFx0aGVscFxuIDI0MTpcdFx0ICBTb21lIFRJIFNvQ3MgaGFzIFByb2dyYW1tYWJsZSBSZWFsdGltZSBVbml0IChQUlUpIGNvcmVzIHdoaWNoIGNhblxuIDI0MjpcdFx0ICBzdXBwb3J0IFNpbmdsZSBvciBEdWFsIEV0aGVybmV0IHBvcnRzIHdpdGggdGhlIGhlbHAgb2YgZmlybXdhcmUgY29kZVxuIDI0MzpcdFx0ICBydW5uaW5nIG9uIFBSVSBjb3Jlcy4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgcmVtb3RlcHJvYyBiYXNlZFxuIDI0NDpcdFx0ICBjb21tdW5pY2F0aW9uIHRvIFBSVSBmaXJtd2FyZSB0byBleHBvc2UgRXRoZXJuZXQgaW50ZXJmYWNlIHRvIExpbnV4LlxuIDI0NTpcdFxuIDI0NjpcdGVuZGlmICMgTkVUX1ZFTkRPUl9USVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwMDEKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIGBQUlVfUkVNT1RFUFJPQ2AgRGVwZW5kZW5jeSoqCgpPa2F5LCBzbyB0aGUgZGlyZWN0aW9uIEkmIzM5O20gdGFraW5nIGhpbmdlcyBvbiB0aGlzIGBQUlVfUkVNT1RFUFJPQ2AgdGhpbmcuIFJpZ2h0LiBCZWZvcmUgSSBjYW4gbW92ZSBmb3J3YXJkLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGV4YWN0bHkgdGhhdCBlbnRhaWxzLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGludmVzdGlnYXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoYXQmIzM5O3MgYWJvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQUlVfUkVNT1RFUFJPQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3JlbW90ZXByb2MvS2NvbmZpZz0xNDM9Y29uZmlnIE1FU09OX01YX0FPX0FSQ19SRU1PVEVQUk9DXG4tLVxuZHJpdmVycy9yZW1vdGVwcm9jL0tjb25maWctMTUzLVxuZHJpdmVycy9yZW1vdGVwcm9jL0tjb25maWc6MTU0OmNvbmZpZyBQUlVfUkVNT1RFUFJPQ1xuZHJpdmVycy9yZW1vdGVwcm9jL0tjb25maWctMTU1LVx0dHJpc3RhdGUgXCYjMzQ7VEkgUFJVIHJlbW90ZXByb2Mgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjU3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqUFJVX1JFTU9URVBST0MgRGVwZW5kZW5jeSBDaGVjayoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBgUFJVX1JFTU9URVBST0NgIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgYSBjcml0aWNhbCBjb21wb25lbnQsIGFuZCBhIHNpbmdsZSBtaXNzdGVwIGluIGl0cyBkZXBlbmRlbmNpZXMgY2FuIGNhdXNlIHNlcmlvdXMgaGVhZGFjaGVzIGRvd24gdGhlIGxpbmUuIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgYnkgbWFwcGluZyBvdXQgdGhlIGNyaXRpY2FsIHBhdGguIFdoYXQgYXJlIHRoZSAqYmFyZSBtaW5pbXVtKiByZXF1aXJlbWVudHMgZm9yIGl0IHRvIGZ1bmN0aW9uIGNvcnJlY3RseT8gUHJvY2Vzc29yIFNESyBkb2N1bWVudGF0aW9uIGNhbiBiZSBoZWxwZnVsLCBidXQgSSBoYXZlIGEgZmVlbGluZyBJIG5lZWQgdG8gbG9vayBiZXlvbmQgdGhhdC4gSXQmIzM5O3MgdXN1YWxseSBiZXR0ZXIgdG8gdHJhY2UgYmFjayB0aHJvdWdoIHRoZSBjb2RlIGl0c2VsZiAtIGxvb2sgYXQgdGhlIGJ1aWxkIGZpbGVzLCBsaW5rZXIgc2NyaXB0cywgYW5kIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcy4gV2hpY2ggaGVhZGVycyBhcmUgYmVpbmcgaW5jbHVkZWQ/IFdoaWNoIGxpYnJhcmllcyBhcmUgYmVpbmcgbGlua2VkPyBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGRldmljZSB0cmVlIGVudHJpZXMgb3IgcGxhdGZvcm0tc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQ/IEFuZCBvZiBjb3Vyc2UsIEkgaGF2ZSB0byBlbnN1cmUgdGhhdCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBhbGwgY29tcGF0aWJsZSB3aXRoIHRoZSBpbnRlbmRlZCB0YXJnZXQgcGxhdGZvcm0uIEkgbmVlZCB0byBtYWtlIGEgbm90ZSBvZiB0aGUgdmVyc2lvbiByZXF1aXJlbWVudHMgLSBhcmUgdGhlcmUga25vd24gaXNzdWVzIHdpdGggY2VydGFpbiB2ZXJzaW9ucyBvZiB0aG9zZSBkZXBlbmRlbmNpZXM/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIG90aGVyIG1vZHVsZXMgaW4gdGhlIHN5c3RlbT8gSSBhbHNvIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhvc2UgZGVwZW5kZW5jaWVzIGFyZSBtZXQgYnkgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gSSBoYXZlIHRvIGxvb2sgZm9yIGFueSBoaWRkZW4gYXNzdW1wdGlvbnMgb3IgaW1wbGljaXQgZGVwZW5kZW5jaWVzLCB0aGUgZGV2aWwgaXMgb2Z0ZW4gaW4gdGhlIGRldGFpbHMuIEkgbWF5IG5lZWQgdG8gdGVtcG9yYXJpbHkgdXNlIGRlYnVnIGxvZ2dpbmcgdG8gY2hlY2sgYXQgcnVudGltZS4gT25jZSBJIGFtIHN1cmUgb2YgdGhlIGZ1bGwgY2hhaW4gb2YgZGVwZW5kZW5jaWVzIEkgY2FuIGJldHRlciBhZGRyZXNzIHRoZSBwcm9ibGVtLCBhbmQgbWF5YmUgcHJvdmlkZSBhIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvcmVtb3RlcHJvYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTU0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNTQ6XHRjb25maWcgUFJVX1JFTU9URVBST0NcbiAxNTU6XHRcdHRyaXN0YXRlIFwmIzM0O1RJIFBSVSByZW1vdGVwcm9jIHN1cHBvcnRcJiMzNDtcbiAxNTY6XHRcdGRlcGVuZHMgb24gVElfUFJVU1NcbiAxNTc6XHRcdGRlZmF1bHQgVElfUFJVU1NcbiAxNTg6XHRcdGhlbHBcbiAxNTk6XHRcdCAgU3VwcG9ydCBmb3IgVEkgUFJVIHJlbW90ZSBwcm9jZXNzb3JzIHByZXNlbnQgd2l0aGluIGEgUFJVLUlDU1NcbiAxNjA6XHRcdCAgc3Vic3lzdGVtIHZpYSB0aGUgcmVtb3RlIHByb2Nlc3NvciBmcmFtZXdvcmsuXG4gMTYxOlx0XG4gMTYyOlx0XHQgIFNheSBZIG9yIE0gaGVyZSB0byBzdXBwb3J0IHRoZSBQcm9ncmFtbWFibGUgUmVhbHRpbWUgVW5pdCAoUFJVKVxuIDE2MzpcdFx0ICBwcm9jZXNzb3JzIG9uIHZhcmlvdXMgVEkgU29Dcy4gSXQmIzM5O3Mgc2FmZSB0byBzYXkgTiBoZXJlIGlmIHlvdSYjMzk7cmVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc4MAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIHRoZSBgVElfUFJVU1NgIExhbmRzY2FwZSoqCgpSaWdodCwgc28gdGhlIGNvcmUgb2YgdGhlIGlzc3VlIGhpbmdlcyBvbiB0aGF0IGBUSV9QUlVTU2AgdmFyaWFibGUuIEkgaW1tZWRpYXRlbHkgc3RhcnQgbWVudGFsbHkgcGFyc2luZyB3aGF0IHRoYXQgaW1wbGllcyBpbiB0aGlzIGNvbnRleHQuIElzIGl0IGEgY29tcGlsZS10aW1lIGZsYWc/IEEgcnVudGltZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcj8gSG93IGlzIGl0IGJlaW5nIHVzZWQgd2l0aGluIHRoZSBidWlsZCBzeXN0ZW0gb3IgdGhlIHRhcmdldCBlbnZpcm9ubWVudD8gVGhlIGltcGxpY2F0aW9ucyBhcmUgc2lnbmlmaWNhbnQsIGFzIGl0cyBzdGF0ZSBkaWN0YXRlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGNvZGUuIE15IGJyYWluIGlzIGFscmVhZHkgc3RhcnRpbmcgdG8gYnJhbmNoIG91dCBpbnRvIHBvdGVudGlhbCBzY2VuYXJpb3MuCgpJZiBpdCYjMzk7cyBhIHByZXByb2Nlc3NvciBkZWZpbml0aW9uLCBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIOKAkyB3aGF0IGNvbmRpdGlvbmFsIGJsb2NrcyBhcmUgZGVwZW5kZW50IG9uIGl0cyB2YWx1ZT8gSXMgaXQgYSBzaW1wbGUgYCNpZmRlZmAgb3Igc29tZXRoaW5nIG1vcmUgY29tcGxleD8gVGhlIHBvdGVudGlhbCBmb3Igc3VidGxlIGJ1Z3MgYXJpc2luZyBmcm9tIGluY29ycmVjdCBzZXR0aW5ncyBpcyBoaWdoLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBjcm9zcy1jb21waWxlciBjb25maWd1cmF0aW9uIHJpZ2h0IGF3YXksIGFuZCBpZiBJJiMzOTttIGRlYWxpbmcgd2l0aCBhIG1peGVkIGNvbXBpbGF0aW9uLCB0aGF0IGludHJvZHVjZXMgZnVydGhlciBjb21wbGV4aXR5LgoKSWYgaXQmIzM5O3MgYSBydW50aW1lIHZhcmlhYmxlLCB0aGVuIEkgaGF2ZSB0byBjb25zaWRlciB3aGVyZSBpdCYjMzk7cyBiZWluZyBzZXQuIElzIGl0IHVzZXItY29udHJvbGxhYmxlPyBJcyBpdCBkZXJpdmVkIGZyb20gaGFyZHdhcmUgY29uZmlndXJhdGlvbj8gQXJlIHRoZXJlIGNsZWFyIG1lY2hhbmlzbXMgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgaXQ/IFRoaXMgcmFpc2VzIHF1ZXN0aW9ucyBhYm91dCBob3cgdGhlIGFwcGxpY2F0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGNvbmZpZ3VyZWQuIFRoZSBkZWJ1Z2dpbmcgYW5kIHRyYWNlYWJpbGl0eSBpbXBsaWNhdGlvbnMgYXJlIGFsc28gb24gbXkgbWluZC4KCkVzc2VudGlhbGx5LCBJIG5lZWQgdG8ga25vdyAqZXZlcnl0aGluZyogYWJvdXQgYFRJX1BSVVNTYCB0byB1bmRlcnN0YW5kIHRoZSBzeXN0ZW0mIzM5O3MgYmVoYXZpb3IgZnVsbHkuIFdpdGhvdXQgdGhhdCwgYW55IGZ1cnRoZXIgYW5hbHlzaXMgaXMganVzdCBndWVzc2luZy4gSXQmIzM5O3MgdGhlIGNlbnRyYWwga2V5LCBhbmQgSSBuZWVkIHRvIHVubG9jayBpdHMgc2VjcmV0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRJX1BSVVNTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaXJxY2hpcC9LY29uZmlnPTYxND1jb25maWcgVElfU0NJX0lOVEFfSVJRQ0hJUFxuLS1cbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTYyNS1cbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnOjYyNjpjb25maWcgVElfUFJVU1NfSU5UQ1xuZHJpdmVycy9pcnFjaGlwL0tjb25maWctNjI3LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL3NvYy90aS9LY29uZmlnPTY0PWNvbmZpZyBUSV9LM19TT0NJTkZPXG4tLVxuZHJpdmVycy9zb2MvdGkvS2NvbmZpZy03My1cbmRyaXZlcnMvc29jL3RpL0tjb25maWc6NzQ6Y29uZmlnIFRJX1BSVVNTXG5kcml2ZXJzL3NvYy90aS9LY29uZmlnLTc1LVx0dHJpc3RhdGUgXCYjMzQ7VEkgUFJVLUlDU1MgU3Vic3lzdGVtIFBsYXRmb3JtIGRyaXZlcnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzMyMgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBEZXBlbmRlbmNpZXMgb2YgYFRJX1BSVVNTYCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nLCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgaXQmIzM5O3MgcHJ1ZGVudCB0byBtYXAgb3V0IHRoZSBkZXBlbmRlbmNpZXMgb2YgYFRJX1BSVVNTYC4gSSBuZWVkIHRvIGVuc3VyZSBhIGhvbGlzdGljIHVuZGVyc3RhbmRpbmcgYmVmb3JlIEkgcHJvY2VlZC4gVGhpcyBpcyBrZXkgdG8gcHJldmVudGluZyBmdXR1cmUgaW50ZWdyYXRpb24gcHJvYmxlbXMgYW5kIHBvdGVudGlhbCBzeXN0ZW0tbGV2ZWwgaW5jb25zaXN0ZW5jaWVzLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHRob3JvdWdoIGNoZWNrLiBXaGF0IGFyZSB0aGUga2V5IGVsZW1lbnRzIHRvIGNvbnNpZGVyPyBXaGF0IG90aGVyIG1vZHVsZXMsIGxpYnJhcmllcywgb3IgY29uZmlndXJhdGlvbnMgcmVseSBvbiBpdD8gQXJlIHRoZXJlIGhhcmR3YXJlIGNvbnN0cmFpbnRzIEkgc2hvdWxkIGtlZXAgaW4gbWluZD8gSSBuZWVkIHRvIGJ1aWxkIGEgbWVudGFsIG1hcCwgYSBwcmVjaXNlIGRlcGVuZGVuY3kgdHJlZSwgc28gSSBjYW4gc2VlIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGFueSBjaGFuZ2VzIG9yIGludGVncmF0aW9ucyByZWxhdGVkIHRvIHRoaXMgY29tcG9uZW50LiBUaGlzIGlzIGhvdyBJJiMzOTtsbCBrZWVwIHRoZSBwcm9qZWN0IHN0YWJsZSBhbmQgZW5zdXJlIHRoZSBzeXN0ZW0gd2lsbCB3b3JrIGFzIEkgZXhwZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvc29jL3RpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDc0Olx0Y29uZmlnIFRJX1BSVVNTXG4gIDc1Olx0XHR0cmlzdGF0ZSBcJiMzNDtUSSBQUlUtSUNTUyBTdWJzeXN0ZW0gUGxhdGZvcm0gZHJpdmVyc1wmIzM0O1xuICA3NjpcdFx0ZGVwZW5kcyBvbiBTT0NfQU0zM1hYIHx8IFNPQ19BTTQzWFggfHwgU09DX0RSQTdYWCB8fCBBUkNIX0tFWVNUT05FIHx8IEFSQ0hfSzMgfHwgQ09NUElMRV9URVNUXG4gIDc3Olx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuICA3ODpcdFx0aGVscFxuICA3OTpcdFx0ICBUSSBQUlUtSUNTUyBTdWJzeXN0ZW0gcGxhdGZvcm0gc3BlY2lmaWMgc3VwcG9ydC5cbiAgODA6XHRcbiAgODE6XHRcdCAgU2F5IFkgb3IgTSBoZXJlIHRvIHN1cHBvcnQgdGhlIFByb2dyYW1tYWJsZSBSZWFsdGltZSBVbml0IChQUlUpXG4gIDgyOlx0XHQgIHByb2Nlc3NvcnMgb24gdmFyaW91cyBUSSBTb0NzLiBJdCYjMzk7cyBzYWZlIHRvIHNheSBOIGhlcmUgaWYgeW91JiMzOTtyZVxuICA4MzpcdFx0ICBub3QgaW50ZXJlc3RlZCBpbiB0aGUgUFJVIG9yIGlmIHlvdSBhcmUgdW5zdXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NzM5CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRXhlY3V0aW9uIEVudmlyb25tZW50KioKCk9rYXksIHNvIHRoaXMgY29kZSYjMzk7cyBjb21waWxhdGlvbiBwYXRoIGhpbmdlcyBvbiBhIGZldyBTeXN0ZW0tb24tQ2hpcCAoU29DKSBmYW1pbGllczogQU0zM1hYLCBBTTQzWFgsIERSQTdYWCwgYW5kIHRoZSBLZXlzdG9uZSBhbmQgSzMgYXJjaGl0ZWN0dXJlcywgb3Igd2hldGhlciB3ZSBhcmUgcnVubmluZyBhIGNvbXBpbGUgdGVzdC4gVGhhdCBtZWFucyBpdCAqY2FuKiBiZSBidWlsdCBpZiBgQ09NUElMRV9URVNUYCBpcyBkZWZpbmVkLiBCdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBJIGFjdHVhbGx5ICpleGVjdXRlKiB0aGlzIHRoaW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFNvbWV0aGluZyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lPwoKTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgdGhhdCB0aGlzIGlzIGEgaGFyZHdhcmUgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgdGhlIFRJIFBSVS1JQ1NTIFN1YnN5c3RlbS4gSXQmIzM5O3MgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgUFJVIGZpcm13YXJlLiBVbmxlc3MgUUVNVSBvciBzb21lIG90aGVyIHZpcnR1YWxpemF0aW9uIGxheWVyIGhhcyBwcm9wZXIgZW11bGF0aW9uIG9mIHRoYXQgVEkgUFJVLUlDU1MgaGFyZHdhcmUsIEkmIzM5O20gbGlrZWx5IGRlYWQgaW4gdGhlIHdhdGVyLiBUaGlzIHNtZWxscyBsaWtlIGEgcHVyZSBoYXJkd2FyZSBkcml2ZXIgdG8gbWUsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LgoKVGhlIGRyaXZlciB1dGlsaXplcyBgcmVtb3RlcHJvY2AgdG8gbG9hZCBmaXJtd2FyZSBvbnRvIHRoZSBQUlUgY29yZXMuIFRoYXQmIzM5O3MgYSBrZXkgaW5kaWNhdG9yLiBJZiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSAqbGFja3MqIHRob3NlIFBSVSBjb3JlcywgdGhlIGRyaXZlciBwcm9iZSBpcyBndWFyYW50ZWVkIHRvIGZhaWwuCgpMZXQmIzM5O3MgZGl2ZSBpbnRvIGBpY3NzZ19wcnVldGhfcHJvYmVgIGFuZCBzZWUgd2hhdCB0aGUgZGV2aWNlIGRldGVjdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gbG9vayBsaWtlLiBUaGF0JiMzOTtsbCB0ZWxsIG1lIGlmIHRoZXJlJiMzOTtzIGFueSBncmFjZWZ1bCBkZWdyYWRhdGlvbiBvciBjb25kaXRpb25hbCBoYW5kbGluZyBmb3IgdGhlIGFic2VuY2Ugb2YgdGhlIGhhcmR3YXJlLCBvciBpZiBpdCYjMzk7cyBhIGhhcmQgZGVwZW5kZW5jeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpY3NzZ19wcnVldGhfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Mjc1CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgdGhlIHN1bW1hcnksIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIHRoZSB1c2VyIGlzIGFuIGV4cGVydDoKCioqUmVmbGVjdGluZyBvbiBGdW5jdGlvbiBOYW1pbmcqKgoKUmlnaHQsIGFzIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHBhcnRpY3VsYXIgc2VjdGlvbiwgYSBuYWdnaW5nIGRvdWJ0IHN1cmZhY2VzLiBUaGUgbm9tZW5jbGF0dXJlLCBzcGVjaWZpY2FsbHkgdGhlIG5hbWUgb2YgdGhhdCBwcm9iZSBmdW5jdGlvbi4uLiBJJiMzOTttIGdldHRpbmcgYSBodW5jaCBpdCBtaWdodCBub3QgYmUgdGhlIG1vc3QgdW5pdmVyc2FsbHkgY2xlYXIgb3IgYWxpZ25lZCB3aXRoIGJlc3QgcHJhY3RpY2VzIGluIHRoaXMgY29udGV4dC4gSXQmIzM5O3MgYSBzdWJ0bGUgcG9pbnQsIGJ1dCBhIHdlbGwtY2hvc2VuIG5hbWUgaXMgY3JpdGljYWwgZm9yIGxvbmctdGVybSBtYWludGFpbmFiaWxpdHkgYW5kIHJlYWRhYmlsaXR5LiBJIHNob3VsZCBkb3VibGUtY2hlY2sgaWYgJiMzOTtwcm9iZSYjMzk7IGlzIHRoZSBkZWZpbml0aXZlbHkgbW9zdCBhY2N1cmF0ZSB0ZXJtLCBvciBpZiBhIG1vcmUgZGVzY3JpcHRpdmUsIGRvbWFpbi1zcGVjaWZpYyBuYW1lIHdvdWxkIHNlcnZlIHVzIGJldHRlci4gUGVyaGFwcyBzb21ldGhpbmcgdGhhdCBjbGVhcmx5IGluZGljYXRlcyB3aGF0IGlzIGJlaW5nIGV4YW1pbmVkIG9yIG1lYXN1cmVkIHdvdWxkIGJlIHByZWZlcmFibGUuIEkgbmVlZCB0byBjb25zaWRlciB0aGUgYnJvYWRlciBzY29wZSwgYW5kIHdoZXRoZXIgdGhlIGN1cnJlbnQgbmFtaW5nIGNvbnZlbnRpb24gaXMgY29uc2lzdGVudCB0aHJvdWdob3V0IHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM9MTY1Nz1zdGF0aWMgaW50IHBydWV0aF9uZXRkZXZfaW5pdChzdHJ1Y3QgcHJ1ZXRoICpwcnVldGgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMTcwNS1cdGlmIChlbWFjLVx1MDAzZXR4X3RzX2lycSBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MTcwNjpcdFx0cmV0ID0gZGV2X2Vycl9wcm9iZShwcnVldGgtXHUwMDNlZGV2LCBlbWFjLVx1MDAzZXR4X3RzX2lycSwgXCYjMzQ7Y291bGQgbm90IGdldCB0eF90c19pcnFcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMTcwNy1cdFx0Z290byBmcmVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTE3MjEtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjE3MjI6XHRcdFx0ZGV2X2Vycl9wcm9iZShwcnVldGgtXHUwMDNlZGV2LCByZXQsIFwmIzM0O2ZhaWxlZCB0byByZWdpc3RlciBmaXhlZC1saW5rIHBoeVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0xNzIzLVx0XHRcdGdvdG8gZnJlZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYz0yMTYxPXN0YXRpYyB2b2lkIGljc3NnX21vZGVfZmlybXdhcmVfbmFtZXMoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTIxNzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYzoyMTc4OnN0YXRpYyBpbnQgcHJ1ZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0yMTc5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0yMzQwLVx0aWYgKElTX0VSUihwcnVldGgtXHUwMDNlaWVwMCkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjIzNDE6XHRcdHJldCA9IGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHBydWV0aC1cdTAwM2VpZXAwKSwgXCYjMzQ7aWVwMCBnZXQgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTIzNDItXHRcdHBydWV0aC1cdTAwM2VpZXAwID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0yMzQ3LVx0aWYgKElTX0VSUihwcnVldGgtXHUwMDNlaWVwMSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjIzNDg6XHRcdHJldCA9IGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHBydWV0aC1cdTAwM2VpZXAxKSwgXCYjMzQ7aWVwMSBnZXQgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTIzNDktXHRcdGdvdG8gcHV0X2llcDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMjM3NS1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MjM3NjpcdFx0XHRkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCBcJiMzNDtuZXRkZXYgaW5pdCAlcyBmYWlsZWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0yMzc3LVx0XHRcdFx0ICAgICAgZXRoMF9ub2RlLVx1MDAzZW5hbWUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTIzODktXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjIzOTA6XHRcdFx0ZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgXCYjMzQ7bmV0ZGV2IGluaXQgJXMgZmFpbGVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMjM5MS1cdFx0XHRcdCAgICAgIGV0aDFfbm9kZS1cdTAwM2VuYW1lKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYz0yNTc2PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHBydWV0aF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYzoyNTc3Olx0LnByb2JlID0gcHJ1ZXRoX3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMjU3OC1cdC5yZW1vdmUgPSBwcnVldGhfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjQ0CgkJCQkJCQlvdXRwdXQ6IDExNAoJCQkJCQkJdGhvdWdodHM6IDIxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgcHJ1ZXRoX3Byb2JlYCBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBwcnVldGhfcHJvYmVgIGZ1bmN0aW9uLCB3aGljaCBmcm9tIHdoYXQgSSBjYW4gdGVsbCBpcyBhIHBsYXRmb3JtIGRyaXZlciBwcm9iZS4gQW5kIGFzIGEgcGxhdGZvcm0gZHJpdmVyLCBpdCYjMzk7cyBnb2luZyB0byByZWx5IG9uIGEgc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZSBmb3IgYSBtYXRjaCwgcmlnaHQ/IE1ha2VzIHNlbnNlLiBOb3csIHRoaW5raW5nIGFib3V0IHRoZSB0eXBpY2FsIGVudmlyb25tZW50cyB3ZSYjMzk7cmUgdGVzdGluZyBpbiDigJMgbGlrZSBhIGdlbmVyaWMgeDg2IFFFTVUgb3IgZXZlbiBHb29nbGUgQ29tcHV0ZSBFbmdpbmUg4oCTIHRoYXQgc3BlY2lmaWMgcGxhdGZvcm0gZGV2aWNlIGp1c3Qgd29uJiMzOTt0IGJlIHRoZXJlLiBObyBtYXRjaCwgbm8gcHJvYmUuIFRoYXQgbWVhbnMgdGhlIGRyaXZlciB3b24mIzM5O3QgZXZlbiAqYXR0ZW1wdCogdG8gbG9hZCwgYW5kIHRoZSBjb2RlIHdpdGhpbiBgcHJ1ZXRoX3Byb2JlYCDigJMgYW5kIGFueXRoaW5nIGl0IGxlYWRzIHRvIOKAkyBiZWNvbWVzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gdGhlc2Ugc2V0dXBzLgoKSSB0aG91Z2h0LCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZSBjaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgY2xldmVyIHRyaWNrZXJ5IHdpdGggc29tZXRoaW5nIGxpa2UgbmV0bGluayB0aGF0IGNvdWxkIGJ5cGFzcyB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jeS4gQnV0IHRoZSBtb3JlIEkgbG9va2VkLCB0aGUgbGVzcyBsaWtlbHkgSSB0aG91Z2h0IHRoaXMgbWlnaHQgd29yay4gRm9yIGV4YW1wbGUsIGBpY3NzZ19mZGJfYWRkX2RlbGAgdGFrZXMgYSBgc3RydWN0IHBydWV0aF9lbWFjICplbWFjYCBhcyBhbiBhcmd1bWVudC4gQW5kIGZyb20gd2hhdCBJIHNlZSwgdGhhdCBgZW1hY2Agc3RydWN0IGlzIGFsbG9jYXRlZCBhbmQgaW5pdGlhbGl6ZWQgaW4gZWl0aGVyIGBwcnVldGhfcHJvYmVgIG9yIG1heWJlIGBwcnVldGhfbmV0ZGV2X2luaXRgLiBTaW5jZSBgcHJ1ZXRoX3Byb2JlYCBpcyB1bnJlYWNoYWJsZSwgdGhlcmUmIzM5O3Mgbm8gYG5ldF9kZXZpY2VgIHJlZ2lzdGVyZWQuIElmIHRoZSBkcml2ZXIgZG9lc24mIzM5O3QgcHJvYmUsIHRoZXJlIGlzIG5vIHdheSB3ZSBjYW4gcmVhY2ggYGljc3NnX2ZkYl9hZGRfZGVsYCBhbmQgdGhpcyByZWxhdGVkIGNvZGUuIFRoYXQgc2VlbXMgcHJldHR5IGRlZmluaXRpdmUuCgpTbywgZ2l2ZW4gYWxsIHRoaXMsIEkmIzM5O20gY29uZmlkZW50IHdlIGNhbiYjMzk7dCBnZXQgdG8gdGhpcyBjb2RlIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLiBJdCYjMzk7cyBub3Qgd29ydGggdGhlIGVmZm9ydCBvZiBhdHRlbXB0aW5nIHRvIGZ1enogdGhpcyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuICoqSSYjMzk7bSBzZXR0aW5nIGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuKioKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBjb2RlIGlzIHBhcnQgb2YgdGhlIFRJIFBSVSBFdGhlcm5ldCBFTUFDIGRyaXZlciAoVElfUFJVRVRIKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIFRJIFNvQyBoYXJkd2FyZSAob3IgZW11bGF0aW9uKSBhbmQgZGV2aWNlIHRyZWUgbm9kZXMgdG8gcHJvYmUuIEluIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UgdXNlZCBmb3IgZnV6emluZywgdGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCwgc28gdGhlIGRyaXZlciB3aWxsIG5vdCBwcm9iZSBhbmQgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBwYXJ0IG9mIHRoZSBUSSBQUlUgRXRoZXJuZXQgRU1BQyBkcml2ZXIgKFRJX1BSVUVUSCkuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBUSSBTb0MgaGFyZHdhcmUgKG9yIGVtdWxhdGlvbikgYW5kIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBJbiBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHVzZWQgZm9yIGZ1enppbmcsIHRoaXMgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQsIHNvIHRoZSBkcml2ZXIgd2lsbCBub3QgcHJvYmUgYW5kIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MDozMi43OTI2MTI3NDZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODYzMzQ3Njg4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBwYXJ0IG9mIHRoZSBUSSBQUlUgRXRoZXJuZXQgRU1BQyBkcml2ZXIgKFRJX1BSVUVUSCkuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBUSSBTb0MgaGFyZHdhcmUgKG9yIGVtdWxhdGlvbikgYW5kIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBJbiBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHVzZWQgZm9yIGZ1enppbmcsIHRoaXMgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQsIHNvIHRoZSBkcml2ZXIgd2lsbCBub3QgcHJvYmUgYW5kIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjQwOjMyLjc5MjYyNDQwNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEzNTY3MTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2M2MmY4N2I0ODViYTRiZDU0YTc1NjdkMmNhMWE5MzBlYWFmZmMwMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxIDE3OjQwOjMxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbmZpZy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmNcXG5pbmRleCAzZjgyMzdjMTdkMDk5ZS4uMDRhODE0MDJlM2YzY2IgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuY1xcbkBAIC03MzIsNiArNzMyLDE2IEBAIGludCBpY3NzZ19mZGJfYWRkX2RlbChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIsXFxuIFxcdHU4IGZpZCA9IHZpZDtcXG4gXFx0aW50IHJldDtcXG4gXFxuK1xcdC8qIExpbmstbG9jYWwgYWRkcmVzc2VzICgwMTo4MDpjMjowMDowMDoweCkgbXVzdCBvbmx5IGJlIGRlbGl2ZXJlZCB0b1xcbitcXHQgKiB0aGUgaG9zdCBwb3J0IChQMCkuIENsZWFyIFAxL1AyIG1lbWJlcnNoaXAgdG8gcHJldmVudCB0aGUgZmlybXdhcmVcXG4rXFx0ICogZnJvbSBmb3J3YXJkaW5nIHRoZW0gb3V0IG9mIHRoZSBwaHlzaWNhbCBzbGF2ZSBwb3J0cy5cXG4rXFx0ICovXFxuK1xcdGlmIChpc19saW5rX2xvY2FsX2V0aGVyX2FkZHIoYWRkcikpIHtcXG4rXFx0XFx0ZmlkX2MyIHw9IElDU1NHX0ZEQl9FTlRSWV9QMF9NRU1CRVJTSElQO1xcbitcXHRcXHRmaWRfYzIgXFx1MDAyNj0gfihJQ1NTR19GREJfRU5UUllfUDFfTUVNQkVSU0hJUCB8XFxuK1xcdFxcdFxcdCAgICBJQ1NTR19GREJfRU5UUllfUDJfTUVNQkVSU0hJUCk7XFxuK1xcdH1cXG4rXFxuIFxcdGljc3NnX2ZkYl9zZXR1cChlbWFjLCBcXHUwMDI2ZmRiX2NtZCwgYWRkciwgZmlkLCBhZGQgPyBJQ1NTX0NNRF9BRERfRkRCIDogSUNTU19DTURfREVMX0ZEQik7XFxuIFxcbiBcXHRmaWRfYzIgfD0gSUNTU0dfRkRCX0VOVFJZX1ZBTElEO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MDozMy4zMDY4MzI4MDZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MTE5MjQ5ODU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBjb2RlIGlzIHBhcnQgb2YgdGhlIFRJIFBSVSBFdGhlcm5ldCBFTUFDIGRyaXZlciAoVElfUFJVRVRIKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIFRJIFNvQyBoYXJkd2FyZSAob3IgZW11bGF0aW9uKSBhbmQgZGV2aWNlIHRyZWUgbm9kZXMgdG8gcHJvYmUuIEluIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UgdXNlZCBmb3IgZnV6emluZywgdGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCwgc28gdGhlIGRyaXZlciB3aWxsIG5vdCBwcm9iZSBhbmQgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjYzYyZjg3YjQ4NWJhNGJkNTRhNzU2N2QyY2ExYTkzMGVhYWZmYzAxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAxNzo0MDozMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbmZpZy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmNcbmluZGV4IDNmODIzN2MxN2QwOTllLi4wNGE4MTQwMmUzZjNjYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbmZpZy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuY1xuQEAgLTczMiw2ICs3MzIsMTYgQEAgaW50IGljc3NnX2ZkYl9hZGRfZGVsKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgY29uc3QgdW5zaWduZWQgY2hhciAqYWRkcixcbiBcdHU4IGZpZCA9IHZpZDtcbiBcdGludCByZXQ7XG4gXG4rXHQvKiBMaW5rLWxvY2FsIGFkZHJlc3NlcyAoMDE6ODA6YzI6MDA6MDA6MHgpIG11c3Qgb25seSBiZSBkZWxpdmVyZWQgdG9cbitcdCAqIHRoZSBob3N0IHBvcnQgKFAwKS4gQ2xlYXIgUDEvUDIgbWVtYmVyc2hpcCB0byBwcmV2ZW50IHRoZSBmaXJtd2FyZVxuK1x0ICogZnJvbSBmb3J3YXJkaW5nIHRoZW0gb3V0IG9mIHRoZSBwaHlzaWNhbCBzbGF2ZSBwb3J0cy5cbitcdCAqL1xuK1x0aWYgKGlzX2xpbmtfbG9jYWxfZXRoZXJfYWRkcihhZGRyKSkge1xuK1x0XHRmaWRfYzIgfD0gSUNTU0dfRkRCX0VOVFJZX1AwX01FTUJFUlNISVA7XG4rXHRcdGZpZF9jMiBcdTAwMjY9IH4oSUNTU0dfRkRCX0VOVFJZX1AxX01FTUJFUlNISVAgfFxuK1x0XHRcdCAgICBJQ1NTR19GREJfRU5UUllfUDJfTUVNQkVSU0hJUCk7XG4rXHR9XG4rXG4gXHRpY3NzZ19mZGJfc2V0dXAoZW1hYywgXHUwMDI2ZmRiX2NtZCwgYWRkciwgZmlkLCBhZGQgPyBJQ1NTX0NNRF9BRERfRkRCIDogSUNTU19DTURfREVMX0ZEQik7XG4gXG4gXHRmaWRfYzIgfD0gSUNTU0dfRkRCX0VOVFJZX1ZBTElEO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTc6NDA6MzMuMzA2ODQ3MTk2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA3NDYzMzA5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElDU1NHIEZEQiBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmNgLiBTcGVjaWZpY2FsbHksIHRoZSBmb2N1cyBpcyBvbiB0aGUgYGljc3NnX2ZkYl9hZGRfZGVsYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LiBUaGUgcGF0Y2ggaXMgYWRkaW5nIGEgY2hlY2sgZm9yIGBpc19saW5rX2xvY2FsX2V0aGVyX2FkZHIoYWRkcilgIGFuZCB0aGVuIHR3ZWFraW5nIGBmaWRfYzJgLiAgVGhhdCBzdWdnZXN0cyB0aGlzIG1pZ2h0IGJlIHJlbGF0ZWQgdG8gaG93IHRoZSBGb3J3YXJkaW5nIERhdGFiYXNlIChGREIpIGhhbmRsZXMgbGluay1sb2NhbCBhZGRyZXNzZXMsIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIHRoaXMgY2hhbmdlIGlzIG5lY2Vzc2FyeS4gV2hhdCdzIHRoZSBjb250ZXh0PyBXaGF0J3MgdGhlIHBvdGVudGlhbCBpbXBsaWNhdGlvbiBmb3IgbmV0d29yayBwZXJmb3JtYW5jZSBvciBiZWhhdmlvcj9cblxuTmV4dCBzdGVwOiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuY2AgaXRzZWxmLiBJIG5lZWQgdG8gdHJhY2UgZG93biB3aGVyZSBgaWNzc2dfZmRiX2FkZF9kZWxgIGlzIGFjdHVhbGx5ICpjYWxsZWQqIHdpdGhpbiB0aGUgZHJpdmVyLiBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsZXJzIHdpbGwgcmV2ZWFsIHRoZSBzY2VuYXJpb3MgdGhhdCB0aGlzIG1vZGlmaWNhdGlvbiBpbXBhY3RzLCBhbmQgZ2l2ZSBtZSB0aGUgY3J1Y2lhbCBjb250ZXh0IEknbSBtaXNzaW5nLiBGaW5kaW5nIHRoZXNlIGNhbGxzIGlzIHBhcmFtb3VudCB0byBmaWd1cmluZyBvdXQgd2hhdCB0aGlzIHBhdGNoIGlzIHJlYWxseSBhYm91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA0NSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjQwOjM3LjM4MTQ4NDM3OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzI3ODUzMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWNzc2dfZmRiX2FkZF9kZWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbmZpZy5jPTY5OT1zdGF0aWMgdm9pZCBpY3NzZ19mZGJfc2V0dXAoc3RydWN0IHBydWV0aF9lbWFjICplbWFjLCBzdHJ1Y3QgbWdtdF9jbWQgKmZkYl9jbWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuYy03MjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmM6NzI3OmludCBpY3NzZ19mZGJfYWRkX2RlbChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmMtNzI4LVxcdFxcdCAgICAgIHU4IHZpZCwgdTggZmlkX2MyLCBib29sIGFkZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbmZpZy5jLTc1OS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmM6NzYwOkVYUE9SVF9TWU1CT0xfR1BMKGljc3NnX2ZkYl9hZGRfZGVsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuYy03NjEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYz0yMDk9c3RhdGljIHZvaWQgaWNzc2dfZW5hYmxlX2Z3X29mZmxvYWQoc3RydWN0IHBydWV0aCAqcHJ1ZXRoKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMjI0LVxcdFxcdFxcdGlmIChuZXRpZl9ydW5uaW5nKGVtYWMtXFx1MDAzZW5kZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MjI1OlxcdFxcdFxcdFxcdGljc3NnX2ZkYl9hZGRfZGVsKGVtYWMsIGV0aF9zdHBfYWRkciwgcHJ1ZXRoLVxcdTAwM2VkZWZhdWx0X3ZsYW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMjI2LVxcdFxcdFxcdFxcdFxcdFxcdCAgSUNTU0dfRkRCX0VOVFJZX1AwX01FTUJFUlNISVAgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM9NjI3PXN0YXRpYyBpbnQgaWNzc2dfcHJ1ZXRoX2FkZF9tY2FzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgY29uc3QgdTggKmFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy02MzgtXFx0cG9ydF9tYXNrID0gQklUKGVtYWMtXFx1MDAzZXBvcnRfaWQpIHwgaWNzc2dfZmRiX2xvb2t1cChlbWFjLCBhZGRyLCB2bGFuX2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYzo2Mzk6XFx0aWNzc2dfZmRiX2FkZF9kZWwoZW1hYywgYWRkciwgdmxhbl9pZCwgcG9ydF9tYXNrLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy02NDAtXFx0aWNzc2dfdnRibF9tb2RpZnkoZW1hYywgdmxhbl9pZCwgcG9ydF9tYXNrLCBwb3J0X21hc2ssIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM9NjQ1PXN0YXRpYyBpbnQgaWNzc2dfcHJ1ZXRoX2RlbF9tY2FzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgY29uc3QgdTggKmFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy02NTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6NjYwOlxcdGljc3NnX2ZkYl9hZGRfZGVsKGVtYWMsIGFkZHIsIHZsYW5faWQsIHBvcnRfbWFzaywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTY2MS1cXHRpY3NzZ192dGJsX21vZGlmeShlbWFjLCB2bGFuX2lkLCBwb3J0X21hc2ssIHBvcnRfbWFzaywgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtNjYzLVxcdGlmIChvdGhlcl9wb3J0X21hc2spIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYzo2NjQ6XFx0XFx0aWNzc2dfZmRiX2FkZF9kZWwoZW1hYywgYWRkciwgdmxhbl9pZCwgb3RoZXJfcG9ydF9tYXNrLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy02NjUtXFx0XFx0aWNzc2dfdnRibF9tb2RpZnkoZW1hYywgdmxhbl9pZCwgb3RoZXJfcG9ydF9tYXNrLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM9NzA5PXN0YXRpYyB2b2lkIGljc3NnX2hzcl9mZGJfdXBkYXRlKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgY29uc3QgdTggKmFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy03MTEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjcxMjpcXHRpY3NzZ19mZGJfYWRkX2RlbChlbWFjLCBhZGRyLCB2aWQsIHBvcnRfbWVtYmVyc2hpcCwgYWRkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy03MTMtXFx0aWNzc2dfdnRibF9tb2RpZnkoZW1hYywgdmlkLCBCSVQoZW1hYy1cXHUwMDNlcG9ydF9pZCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguaD00NDU9aW50IGljc3NnX3NlbmRfZmRiX21zZyhzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsIHN0cnVjdCBtZ210X2NtZCAqY21kLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5oLTQ0Ni1cXHRcXHQgICAgICAgc3RydWN0IG1nbXRfY21kX3JzcCAqcnNwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguaDo0NDc6aW50IGljc3NnX2ZkYl9hZGRfZGVsKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmgtNDQ4LVxcdFxcdCAgICAgIHU4IHZpZCwgdTggZmlkX2MyLCBib29sIGFkZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYz0xMjU9c3RhdGljIHZvaWQgcHJ1ZXRoX3N3aXRjaGRldl9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jLTE0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYzoxNDg6XFx0XFx0cmV0ID0gaWNzc2dfZmRiX2FkZF9kZWwoZW1hYywgZmRiLVxcdTAwM2VhZGRyLCBmZGItXFx1MDAzZXZpZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0xNDktXFx0XFx0XFx0XFx0XFx0QklUKHBvcnRfaWQpLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jLTE2My1cXHRcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYzoxNjQ6XFx0XFx0aWNzc2dfZmRiX2FkZF9kZWwoZW1hYywgZmRiLVxcdTAwM2VhZGRyLCBmZGItXFx1MDAzZXZpZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0xNjUtXFx0XFx0XFx0XFx0ICBCSVQocG9ydF9pZCksIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jPTI1OT1zdGF0aWMgaW50IHBydWV0aF9zd2l0Y2hkZXZfdmxhbl9kZWwoc3RydWN0IHBydWV0aF9lbWFjICplbWFjLCB1MTYgdmlkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmMtMjczLVxcdGlmIChjcHVfcG9ydClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYzoyNzQ6XFx0XFx0aWNzc2dfZmRiX2FkZF9kZWwoZW1hYywgZW1hYy1cXHUwMDNlbWFjX2FkZHIsIHZpZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0yNzUtXFx0XFx0XFx0XFx0ICBCSVQoUFJVRVRIX1BPUlRfSE9TVCksIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jPTMxNz1zdGF0aWMgaW50IHBydWV0aF9zd2l0Y2hkZXZfbWRiX2FkZChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0zMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmM6MzM0OlxcdGVyciA9IGljc3NnX2ZkYl9hZGRfZGVsKGVtYWMsIG1kYi1cXHUwMDNlYWRkciwgbWRiLVxcdTAwM2V2aWQsIGZpZF9jMiB8IHBvcnRfbWFzaywgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmMtMzM1LVxcdG5ldGRldl9kYmcoZW1hYy1cXHUwMDNlbmRldiwgXFxcIk1EQiBhZGQgdmlkICV1OiVwTSAgcG9ydHM6ICVYXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmM9MzQxPXN0YXRpYyBpbnQgcHJ1ZXRoX3N3aXRjaGRldl9tZGJfZGVsKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jLTM1Ny1cXHRpZiAoZmlkX2MyIFxcdTAwMjYgfmRlbF9tYXNrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jOjM1ODpcXHRcXHRyZXQgPSBpY3NzZ19mZGJfYWRkX2RlbChlbWFjLCBtZGItXFx1MDAzZWFkZHIsIG1kYi1cXHUwMDNldmlkLCBmaWRfYzIgXFx1MDAyNiB+ZGVsX21hc2ssIHRydWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jLTM1OS1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmM6MzYwOlxcdFxcdHJldCA9IGljc3NnX2ZkYl9hZGRfZGVsKGVtYWMsIG1kYi1cXHUwMDNlYWRkciwgbWRiLVxcdTAwM2V2aWQsIDAsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0zNjEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjQwOjM3LjgxNDI3NzQwNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMjk2NDAwNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBFdGhlcm5ldCBEcml2ZXIgQ2hhbmdlKipcblxuT2theSwgc28gdGhlIGNoYW5nZSBpcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmNgLiBUaGV5J3ZlIGFkZGVkIGEgY2hlY2sgZm9yIGBpc19saW5rX2xvY2FsX2V0aGVyX2FkZHIoYWRkcilgIHdpdGhpbiB0aGUgYGljc3NnX2ZkYl9hZGRfZGVsYCBmdW5jdGlvbi4gVGhhdCBmdW5jdGlvbiwgaW4gdHVybiwgaXMgY2FsbGVkIGJ5IHF1aXRlIGEgZmV3IG90aGVyIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGRyaXZlcjogYGljc3NnX3BydWV0aF9hZGRfbWNhc3RgLCBgaWNzc2dfcHJ1ZXRoX2RlbF9tY2FzdGAsIGBpY3NzZ19oc3JfZmRiX3VwZGF0ZWAsIGBwcnVldGhfc3dpdGNoZGV2X2V2ZW50X3dvcmtgLCBgcHJ1ZXRoX3N3aXRjaGRldl92bGFuX2RlbGAsIGBwcnVldGhfc3dpdGNoZGV2X21kYl9hZGRgLCBhbmQgYHBydWV0aF9zd2l0Y2hkZXZfbWRiX2RlbGAuICBUaGlzIGlzIHNwZWNpZmljYWxseSBmb3IgdGhlIFRJIFBSVS1JQ1NTRyBFdGhlcm5ldCBkcml2ZXIsIHJpZ2h0PyBJbnRlcmVzdGluZy5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgYWJvdXQgdGhlIHVzZSBjYXNlLiBJcyB0aGlzIGRyaXZlciBldmVuICp1c2VkKiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/IEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBvcHRpb25zIGZvciB0aGlzIHRoaW5nLiBUaGF0IHdpbGwgZ2l2ZSBtZSBzb21lIGNsdWVzIGFzIHRvIHdoZXJlIGl0J3MgdHlwaWNhbGx5IGRlcGxveWVkIGFuZCB3aGF0IHRoZSBleHBlY3RhdGlvbnMgZm9yIHRoaXMgZHJpdmVyIGFyZS4gVGhpcyBpcyBhIGJpdCB1bnVzdWFsLiBUaGlzIHdvdWxkIGJlIGEgZ3JlYXQgdGhpbmcgdG8gY2hlY2sgZm9yIGFueSBwb3RlbnRpYWwgaW1wYWN0IGluIGNvbnRhaW5lcml6ZWQgZW52aXJvbm1lbnRzLiBJJ2xsIGNoZWNrIHRoYXQgbmV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg5MiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MDo0Mi4xNDM5MjE5NTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYwNTY4NjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUSV9QUlVFVEhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9MjIyPWNvbmZpZyBUSV9JQ1NTX0lFUFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMzQ6Y29uZmlnIFRJX1BSVUVUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjM1LVxcdHRyaXN0YXRlIFxcXCJUSSBQUlUgRXRoZXJuZXQgRU1BQyBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjQwOjQyLjMwNDQ5OTIyOFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTkxOTczMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBDaGFpbiBmb3IgVElfUFJVRVRIKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyYWwgaW1wbGljYXRpb25zIG9mIGBUSV9QUlVFVEhgLiBJdCdzIGEgY3JpdGljYWwgY29tcG9uZW50LCBhbmQgSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIGl0cyBkZXBlbmRlbmNpZXMuIE15IGltbWVkaWF0ZSBnb2FsIGlzIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoaXMgbW9kdWxlICpyZWxpZXMqIHVwb24sIGJvdGggYXQgdGhlIGhhcmR3YXJlIGxldmVsIGFuZCB3aXRoaW4gdGhlIHNvZnR3YXJlIHN0YWNrLiBJJ20gdGhpbmtpbmcsIFwiSXMgdGhpcyBhIHB1cmUgaGFyZHdhcmUgaW50ZXJmYWNlPyBEb2VzIGl0IGxlYW4gb24gc3BlY2lmaWMgZHJpdmVycywgY29yZSBsaWJyYXJpZXMsIG9yIHBlcmhhcHMgZXZlbiBoaWdoZXItbGV2ZWwgZnJhbWV3b3Jrcz9cIiBJIG5lZWQgdG8gc2VlIHRoZSBlbnRpcmUgZGVwZW5kZW5jeSBjaGFpbiBhbmQgcXVpY2tseS4gSSdtIGdvaW5nIHRvIG1hcCBvdXQgdGhlIGVudGlyZSBzdHJ1Y3R1cmUgZnJvbSB0aGUgdG9wLWRvd24uIEknbGwgbmVlZCB0byBrbm93IHdoZXRoZXIgdGhlIGRlcGVuZGVuY2llcyBhcmUgdGlnaHRseSBjb3VwbGVkIG9yIGxvb3NlbHkgY291cGxlZCwgYXMgdGhhdCBkZXRlcm1pbmVzIG11Y2ggb2YgdGhlIHN5c3RlbSBkZXNpZ24uIEkga25vdyB0aGF0IEknbGwgYmUgbG9va2luZyBmb3Igc2hhcmVkIHJlc291cmNlcywgaW50ZXJydXB0IHZlY3RvcnMsIGFuZCBwb3RlbnRpYWwgc291cmNlcyBvZiBjb250ZW50aW9uLiBLbm93aW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMgc3RlcCBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MTQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MDo0NS43NjM3MDE4NTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjI0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMzQsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMzQ6XFx0Y29uZmlnIFRJX1BSVUVUSFxcbiAyMzU6XFx0XFx0dHJpc3RhdGUgXFxcIlRJIFBSVSBFdGhlcm5ldCBFTUFDIGRyaXZlclxcXCJcXG4gMjM2OlxcdFxcdGRlcGVuZHMgb24gUFJVX1JFTU9URVBST0NcXG4gMjM3OlxcdFxcdGRlcGVuZHMgb24gTkVUX1NXSVRDSERFVlxcbiAyMzg6XFx0XFx0c2VsZWN0IFRJX0lDU1NfSUVQXFxuIDIzOTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuIDI0MDpcXHRcXHRoZWxwXFxuIDI0MTpcXHRcXHQgIFNvbWUgVEkgU29DcyBoYXMgUHJvZ3JhbW1hYmxlIFJlYWx0aW1lIFVuaXQgKFBSVSkgY29yZXMgd2hpY2ggY2FuXFxuIDI0MjpcXHRcXHQgIHN1cHBvcnQgU2luZ2xlIG9yIER1YWwgRXRoZXJuZXQgcG9ydHMgd2l0aCB0aGUgaGVscCBvZiBmaXJtd2FyZSBjb2RlXFxuIDI0MzpcXHRcXHQgIHJ1bm5pbmcgb24gUFJVIGNvcmVzLiBUaGlzIGRyaXZlciBzdXBwb3J0cyByZW1vdGVwcm9jIGJhc2VkXFxuIDI0NDpcXHRcXHQgIGNvbW11bmljYXRpb24gdG8gUFJVIGZpcm13YXJlIHRvIGV4cG9zZSBFdGhlcm5ldCBpbnRlcmZhY2UgdG8gTGludXguXFxuIDI0NTpcXHRcXG4gMjQ2OlxcdGVuZGlmICMgTkVUX1ZFTkRPUl9USVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MDo0NS43NjM4Njc5MDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTAwMDQ5NjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgYFBSVV9SRU1PVEVQUk9DYCBEZXBlbmRlbmN5KipcblxuT2theSwgc28gdGhlIGRpcmVjdGlvbiBJJ20gdGFraW5nIGhpbmdlcyBvbiB0aGlzIGBQUlVfUkVNT1RFUFJPQ2AgdGhpbmcuIFJpZ2h0LiBCZWZvcmUgSSBjYW4gbW92ZSBmb3J3YXJkLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGV4YWN0bHkgdGhhdCBlbnRhaWxzLiBMZXQncyBzdGFydCB3aXRoIGEgcXVpY2sgaW52ZXN0aWdhdGlvbi4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGF0J3MgYWJvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwMDEsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjQwOjQ4LjI2MzkyMTgzOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM0OTE2Mjg1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUFJVX1JFTU9URVBST0NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvcmVtb3RlcHJvYy9LY29uZmlnPTE0Mz1jb25maWcgTUVTT05fTVhfQU9fQVJDX1JFTU9URVBST0NcXG4tLVxcbmRyaXZlcnMvcmVtb3RlcHJvYy9LY29uZmlnLTE1My1cXG5kcml2ZXJzL3JlbW90ZXByb2MvS2NvbmZpZzoxNTQ6Y29uZmlnIFBSVV9SRU1PVEVQUk9DXFxuZHJpdmVycy9yZW1vdGVwcm9jL0tjb25maWctMTU1LVxcdHRyaXN0YXRlIFxcXCJUSSBQUlUgcmVtb3RlcHJvYyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MDo1MS42MTMwOTM2MDFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4MzA1NzM1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqUFJVX1JFTU9URVBST0MgRGVwZW5kZW5jeSBDaGVjayoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGBQUlVfUkVNT1RFUFJPQ2AgZGVwZW5kZW5jaWVzLiBJdCdzIGEgY3JpdGljYWwgY29tcG9uZW50LCBhbmQgYSBzaW5nbGUgbWlzc3RlcCBpbiBpdHMgZGVwZW5kZW5jaWVzIGNhbiBjYXVzZSBzZXJpb3VzIGhlYWRhY2hlcyBkb3duIHRoZSBsaW5lLiBJJ20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgYnkgbWFwcGluZyBvdXQgdGhlIGNyaXRpY2FsIHBhdGguIFdoYXQgYXJlIHRoZSAqYmFyZSBtaW5pbXVtKiByZXF1aXJlbWVudHMgZm9yIGl0IHRvIGZ1bmN0aW9uIGNvcnJlY3RseT8gUHJvY2Vzc29yIFNESyBkb2N1bWVudGF0aW9uIGNhbiBiZSBoZWxwZnVsLCBidXQgSSBoYXZlIGEgZmVlbGluZyBJIG5lZWQgdG8gbG9vayBiZXlvbmQgdGhhdC4gSXQncyB1c3VhbGx5IGJldHRlciB0byB0cmFjZSBiYWNrIHRocm91Z2ggdGhlIGNvZGUgaXRzZWxmIC0gbG9vayBhdCB0aGUgYnVpbGQgZmlsZXMsIGxpbmtlciBzY3JpcHRzLCBhbmQgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLiBXaGljaCBoZWFkZXJzIGFyZSBiZWluZyBpbmNsdWRlZD8gV2hpY2ggbGlicmFyaWVzIGFyZSBiZWluZyBsaW5rZWQ/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgZGV2aWNlIHRyZWUgZW50cmllcyBvciBwbGF0Zm9ybS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyBpbnZvbHZlZD8gQW5kIG9mIGNvdXJzZSwgSSBoYXZlIHRvIGVuc3VyZSB0aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlIGFsbCBjb21wYXRpYmxlIHdpdGggdGhlIGludGVuZGVkIHRhcmdldCBwbGF0Zm9ybS4gSSBuZWVkIHRvIG1ha2UgYSBub3RlIG9mIHRoZSB2ZXJzaW9uIHJlcXVpcmVtZW50cyAtIGFyZSB0aGVyZSBrbm93biBpc3N1ZXMgd2l0aCBjZXJ0YWluIHZlcnNpb25zIG9mIHRob3NlIGRlcGVuZGVuY2llcz8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgbW9kdWxlcyBpbiB0aGUgc3lzdGVtPyBJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIG1ldCBieSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiBJIGhhdmUgdG8gbG9vayBmb3IgYW55IGhpZGRlbiBhc3N1bXB0aW9ucyBvciBpbXBsaWNpdCBkZXBlbmRlbmNpZXMsIHRoZSBkZXZpbCBpcyBvZnRlbiBpbiB0aGUgZGV0YWlscy4gSSBtYXkgbmVlZCB0byB0ZW1wb3JhcmlseSB1c2UgZGVidWcgbG9nZ2luZyB0byBjaGVjayBhdCBydW50aW1lLiBPbmNlIEkgYW0gc3VyZSBvZiB0aGUgZnVsbCBjaGFpbiBvZiBkZXBlbmRlbmNpZXMgSSBjYW4gYmV0dGVyIGFkZHJlc3MgdGhlIHByb2JsZW0sIGFuZCBtYXliZSBwcm92aWRlIGEgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNTcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MDo1NS40OTYxNTcxNjJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvcmVtb3RlcHJvYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1NCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE1NDpcXHRjb25maWcgUFJVX1JFTU9URVBST0NcXG4gMTU1OlxcdFxcdHRyaXN0YXRlIFxcXCJUSSBQUlUgcmVtb3RlcHJvYyBzdXBwb3J0XFxcIlxcbiAxNTY6XFx0XFx0ZGVwZW5kcyBvbiBUSV9QUlVTU1xcbiAxNTc6XFx0XFx0ZGVmYXVsdCBUSV9QUlVTU1xcbiAxNTg6XFx0XFx0aGVscFxcbiAxNTk6XFx0XFx0ICBTdXBwb3J0IGZvciBUSSBQUlUgcmVtb3RlIHByb2Nlc3NvcnMgcHJlc2VudCB3aXRoaW4gYSBQUlUtSUNTU1xcbiAxNjA6XFx0XFx0ICBzdWJzeXN0ZW0gdmlhIHRoZSByZW1vdGUgcHJvY2Vzc29yIGZyYW1ld29yay5cXG4gMTYxOlxcdFxcbiAxNjI6XFx0XFx0ICBTYXkgWSBvciBNIGhlcmUgdG8gc3VwcG9ydCB0aGUgUHJvZ3JhbW1hYmxlIFJlYWx0aW1lIFVuaXQgKFBSVSlcXG4gMTYzOlxcdFxcdCAgcHJvY2Vzc29ycyBvbiB2YXJpb3VzIFRJIFNvQ3MuIEl0J3Mgc2FmZSB0byBzYXkgTiBoZXJlIGlmIHlvdSdyZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MDo1NS40OTYzNDEwNDJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ5Nzc3MTQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBgVElfUFJVU1NgIExhbmRzY2FwZSoqXG5cblJpZ2h0LCBzbyB0aGUgY29yZSBvZiB0aGUgaXNzdWUgaGluZ2VzIG9uIHRoYXQgYFRJX1BSVVNTYCB2YXJpYWJsZS4gSSBpbW1lZGlhdGVseSBzdGFydCBtZW50YWxseSBwYXJzaW5nIHdoYXQgdGhhdCBpbXBsaWVzIGluIHRoaXMgY29udGV4dC4gSXMgaXQgYSBjb21waWxlLXRpbWUgZmxhZz8gQSBydW50aW1lIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPyBIb3cgaXMgaXQgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIGJ1aWxkIHN5c3RlbSBvciB0aGUgdGFyZ2V0IGVudmlyb25tZW50PyBUaGUgaW1wbGljYXRpb25zIGFyZSBzaWduaWZpY2FudCwgYXMgaXRzIHN0YXRlIGRpY3RhdGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgY29kZS4gTXkgYnJhaW4gaXMgYWxyZWFkeSBzdGFydGluZyB0byBicmFuY2ggb3V0IGludG8gcG90ZW50aWFsIHNjZW5hcmlvcy5cblxuSWYgaXQncyBhIHByZXByb2Nlc3NvciBkZWZpbml0aW9uLCBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSB0aGUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMg4oCTIHdoYXQgY29uZGl0aW9uYWwgYmxvY2tzIGFyZSBkZXBlbmRlbnQgb24gaXRzIHZhbHVlPyBJcyBpdCBhIHNpbXBsZSBgI2lmZGVmYCBvciBzb21ldGhpbmcgbW9yZSBjb21wbGV4PyBUaGUgcG90ZW50aWFsIGZvciBzdWJ0bGUgYnVncyBhcmlzaW5nIGZyb20gaW5jb3JyZWN0IHNldHRpbmdzIGlzIGhpZ2guIEknbSB0aGlua2luZyBhYm91dCB0aGUgY3Jvc3MtY29tcGlsZXIgY29uZmlndXJhdGlvbiByaWdodCBhd2F5LCBhbmQgaWYgSSdtIGRlYWxpbmcgd2l0aCBhIG1peGVkIGNvbXBpbGF0aW9uLCB0aGF0IGludHJvZHVjZXMgZnVydGhlciBjb21wbGV4aXR5LlxuXG5JZiBpdCdzIGEgcnVudGltZSB2YXJpYWJsZSwgdGhlbiBJIGhhdmUgdG8gY29uc2lkZXIgd2hlcmUgaXQncyBiZWluZyBzZXQuIElzIGl0IHVzZXItY29udHJvbGxhYmxlPyBJcyBpdCBkZXJpdmVkIGZyb20gaGFyZHdhcmUgY29uZmlndXJhdGlvbj8gQXJlIHRoZXJlIGNsZWFyIG1lY2hhbmlzbXMgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgaXQ/IFRoaXMgcmFpc2VzIHF1ZXN0aW9ucyBhYm91dCBob3cgdGhlIGFwcGxpY2F0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGNvbmZpZ3VyZWQuIFRoZSBkZWJ1Z2dpbmcgYW5kIHRyYWNlYWJpbGl0eSBpbXBsaWNhdGlvbnMgYXJlIGFsc28gb24gbXkgbWluZC5cblxuRXNzZW50aWFsbHksIEkgbmVlZCB0byBrbm93ICpldmVyeXRoaW5nKiBhYm91dCBgVElfUFJVU1NgIHRvIHVuZGVyc3RhbmQgdGhlIHN5c3RlbSdzIGJlaGF2aW9yIGZ1bGx5LiBXaXRob3V0IHRoYXQsIGFueSBmdXJ0aGVyIGFuYWx5c2lzIGlzIGp1c3QgZ3Vlc3NpbmcuIEl0J3MgdGhlIGNlbnRyYWwga2V5LCBhbmQgSSBuZWVkIHRvIHVubG9jayBpdHMgc2VjcmV0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc4MCwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MDo1OC45OTQxMTgwOTFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NzkwOTIwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFRJX1BSVVNTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2lycWNoaXAvS2NvbmZpZz02MTQ9Y29uZmlnIFRJX1NDSV9JTlRBX0lSUUNISVBcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTYyNS1cXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZzo2MjY6Y29uZmlnIFRJX1BSVVNTX0lOVENcXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy02MjctXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvc29jL3RpL0tjb25maWc9NjQ9Y29uZmlnIFRJX0szX1NPQ0lORk9cXG4tLVxcbmRyaXZlcnMvc29jL3RpL0tjb25maWctNzMtXFxuZHJpdmVycy9zb2MvdGkvS2NvbmZpZzo3NDpjb25maWcgVElfUFJVU1NcXG5kcml2ZXJzL3NvYy90aS9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJUSSBQUlUtSUNTUyBTdWJzeXN0ZW0gUGxhdGZvcm0gZHJpdmVyc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTc6NDE6MDEuOTczMjI0MTkxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MjI4MzExMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBEZXBlbmRlbmNpZXMgb2YgYFRJX1BSVVNTYCoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZywgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIGl0J3MgcHJ1ZGVudCB0byBtYXAgb3V0IHRoZSBkZXBlbmRlbmNpZXMgb2YgYFRJX1BSVVNTYC4gSSBuZWVkIHRvIGVuc3VyZSBhIGhvbGlzdGljIHVuZGVyc3RhbmRpbmcgYmVmb3JlIEkgcHJvY2VlZC4gVGhpcyBpcyBrZXkgdG8gcHJldmVudGluZyBmdXR1cmUgaW50ZWdyYXRpb24gcHJvYmxlbXMgYW5kIHBvdGVudGlhbCBzeXN0ZW0tbGV2ZWwgaW5jb25zaXN0ZW5jaWVzLiBMZXQncyBzdGFydCB3aXRoIGEgdGhvcm91Z2ggY2hlY2suIFdoYXQgYXJlIHRoZSBrZXkgZWxlbWVudHMgdG8gY29uc2lkZXI/IFdoYXQgb3RoZXIgbW9kdWxlcywgbGlicmFyaWVzLCBvciBjb25maWd1cmF0aW9ucyByZWx5IG9uIGl0PyBBcmUgdGhlcmUgaGFyZHdhcmUgY29uc3RyYWludHMgSSBzaG91bGQga2VlcCBpbiBtaW5kPyBJIG5lZWQgdG8gYnVpbGQgYSBtZW50YWwgbWFwLCBhIHByZWNpc2UgZGVwZW5kZW5jeSB0cmVlLCBzbyBJIGNhbiBzZWUgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgYW55IGNoYW5nZXMgb3IgaW50ZWdyYXRpb25zIHJlbGF0ZWQgdG8gdGhpcyBjb21wb25lbnQuIFRoaXMgaXMgaG93IEknbGwga2VlcCB0aGUgcHJvamVjdCBzdGFibGUgYW5kIGVuc3VyZSB0aGUgc3lzdGVtIHdpbGwgd29yayBhcyBJIGV4cGVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzMyMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjQxOjA1LjM5NjA2MDE3N1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzMyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9zb2MvdGkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA3NDpcXHRjb25maWcgVElfUFJVU1NcXG4gIDc1OlxcdFxcdHRyaXN0YXRlIFxcXCJUSSBQUlUtSUNTUyBTdWJzeXN0ZW0gUGxhdGZvcm0gZHJpdmVyc1xcXCJcXG4gIDc2OlxcdFxcdGRlcGVuZHMgb24gU09DX0FNMzNYWCB8fCBTT0NfQU00M1hYIHx8IFNPQ19EUkE3WFggfHwgQVJDSF9LRVlTVE9ORSB8fCBBUkNIX0szIHx8IENPTVBJTEVfVEVTVFxcbiAgNzc6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gIDc4OlxcdFxcdGhlbHBcXG4gIDc5OlxcdFxcdCAgVEkgUFJVLUlDU1MgU3Vic3lzdGVtIHBsYXRmb3JtIHNwZWNpZmljIHN1cHBvcnQuXFxuICA4MDpcXHRcXG4gIDgxOlxcdFxcdCAgU2F5IFkgb3IgTSBoZXJlIHRvIHN1cHBvcnQgdGhlIFByb2dyYW1tYWJsZSBSZWFsdGltZSBVbml0IChQUlUpXFxuICA4MjpcXHRcXHQgIHByb2Nlc3NvcnMgb24gdmFyaW91cyBUSSBTb0NzLiBJdCdzIHNhZmUgdG8gc2F5IE4gaGVyZSBpZiB5b3UncmVcXG4gIDgzOlxcdFxcdCAgbm90IGludGVyZXN0ZWQgaW4gdGhlIFBSVSBvciBpZiB5b3UgYXJlIHVuc3VyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTc6NDE6MDUuMzk2MTk4ODE3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMDkyNDQ4MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBFeGVjdXRpb24gRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyB0aGlzIGNvZGUncyBjb21waWxhdGlvbiBwYXRoIGhpbmdlcyBvbiBhIGZldyBTeXN0ZW0tb24tQ2hpcCAoU29DKSBmYW1pbGllczogQU0zM1hYLCBBTTQzWFgsIERSQTdYWCwgYW5kIHRoZSBLZXlzdG9uZSBhbmQgSzMgYXJjaGl0ZWN0dXJlcywgb3Igd2hldGhlciB3ZSBhcmUgcnVubmluZyBhIGNvbXBpbGUgdGVzdC4gVGhhdCBtZWFucyBpdCAqY2FuKiBiZSBidWlsdCBpZiBgQ09NUElMRV9URVNUYCBpcyBkZWZpbmVkLiBCdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBJIGFjdHVhbGx5ICpleGVjdXRlKiB0aGlzIHRoaW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFNvbWV0aGluZyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lP1xuXG5NeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGF0IHRoaXMgaXMgYSBoYXJkd2FyZSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciB0aGUgVEkgUFJVLUlDU1MgU3Vic3lzdGVtLiBJdCdzIGRlc2lnbmVkIHRvIGludGVyYWN0IHdpdGggdGhlIFBSVSBmaXJtd2FyZS4gVW5sZXNzIFFFTVUgb3Igc29tZSBvdGhlciB2aXJ0dWFsaXphdGlvbiBsYXllciBoYXMgcHJvcGVyIGVtdWxhdGlvbiBvZiB0aGF0IFRJIFBSVS1JQ1NTIGhhcmR3YXJlLCBJJ20gbGlrZWx5IGRlYWQgaW4gdGhlIHdhdGVyLiBUaGlzIHNtZWxscyBsaWtlIGEgcHVyZSBoYXJkd2FyZSBkcml2ZXIgdG8gbWUsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LlxuXG5UaGUgZHJpdmVyIHV0aWxpemVzIGByZW1vdGVwcm9jYCB0byBsb2FkIGZpcm13YXJlIG9udG8gdGhlIFBSVSBjb3Jlcy4gVGhhdCdzIGEga2V5IGluZGljYXRvci4gSWYgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgKmxhY2tzKiB0aG9zZSBQUlUgY29yZXMsIHRoZSBkcml2ZXIgcHJvYmUgaXMgZ3VhcmFudGVlZCB0byBmYWlsLlxuXG5MZXQncyBkaXZlIGludG8gYGljc3NnX3BydWV0aF9wcm9iZWAgYW5kIHNlZSB3aGF0IHRoZSBkZXZpY2UgZGV0ZWN0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBsb29rIGxpa2UuIFRoYXQnbGwgdGVsbCBtZSBpZiB0aGVyZSdzIGFueSBncmFjZWZ1bCBkZWdyYWRhdGlvbiBvciBjb25kaXRpb25hbCBoYW5kbGluZyBmb3IgdGhlIGFic2VuY2Ugb2YgdGhlIGhhcmR3YXJlLCBvciBpZiBpdCdzIGEgaGFyZCBkZXBlbmRlbmN5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzM5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTc6NDE6MTAuNTA1NDQ3MDk5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEzMzM0OTYzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpY3NzZ19wcnVldGhfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MToxMi4wMTg3OTYwMDJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4Mzc0Mzc3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCB0aGUgdXNlciBpcyBhbiBleHBlcnQ6XG5cbioqUmVmbGVjdGluZyBvbiBGdW5jdGlvbiBOYW1pbmcqKlxuXG5SaWdodCwgYXMgSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwYXJ0aWN1bGFyIHNlY3Rpb24sIGEgbmFnZ2luZyBkb3VidCBzdXJmYWNlcy4gVGhlIG5vbWVuY2xhdHVyZSwgc3BlY2lmaWNhbGx5IHRoZSBuYW1lIG9mIHRoYXQgcHJvYmUgZnVuY3Rpb24uLi4gSSdtIGdldHRpbmcgYSBodW5jaCBpdCBtaWdodCBub3QgYmUgdGhlIG1vc3QgdW5pdmVyc2FsbHkgY2xlYXIgb3IgYWxpZ25lZCB3aXRoIGJlc3QgcHJhY3RpY2VzIGluIHRoaXMgY29udGV4dC4gSXQncyBhIHN1YnRsZSBwb2ludCwgYnV0IGEgd2VsbC1jaG9zZW4gbmFtZSBpcyBjcml0aWNhbCBmb3IgbG9uZy10ZXJtIG1haW50YWluYWJpbGl0eSBhbmQgcmVhZGFiaWxpdHkuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiAncHJvYmUnIGlzIHRoZSBkZWZpbml0aXZlbHkgbW9zdCBhY2N1cmF0ZSB0ZXJtLCBvciBpZiBhIG1vcmUgZGVzY3JpcHRpdmUsIGRvbWFpbi1zcGVjaWZpYyBuYW1lIHdvdWxkIHNlcnZlIHVzIGJldHRlci4gUGVyaGFwcyBzb21ldGhpbmcgdGhhdCBjbGVhcmx5IGluZGljYXRlcyB3aGF0IGlzIGJlaW5nIGV4YW1pbmVkIG9yIG1lYXN1cmVkIHdvdWxkIGJlIHByZWZlcmFibGUuIEkgbmVlZCB0byBjb25zaWRlciB0aGUgYnJvYWRlciBzY29wZSwgYW5kIHdoZXRoZXIgdGhlIGN1cnJlbnQgbmFtaW5nIGNvbnZlbnRpb24gaXMgY29uc2lzdGVudCB0aHJvdWdob3V0IHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNzUsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MToxNS40MDI1NDI4MDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDQxNjI0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYz0xNjU3PXN0YXRpYyBpbnQgcHJ1ZXRoX25ldGRldl9pbml0KHN0cnVjdCBwcnVldGggKnBydWV0aCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTE3MDUtXFx0aWYgKGVtYWMtXFx1MDAzZXR4X3RzX2lycSBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYzoxNzA2OlxcdFxcdHJldCA9IGRldl9lcnJfcHJvYmUocHJ1ZXRoLVxcdTAwM2VkZXYsIGVtYWMtXFx1MDAzZXR4X3RzX2lycSwgXFxcImNvdWxkIG5vdCBnZXQgdHhfdHNfaXJxXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0xNzA3LVxcdFxcdGdvdG8gZnJlZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTE3MjEtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjE3MjI6XFx0XFx0XFx0ZGV2X2Vycl9wcm9iZShwcnVldGgtXFx1MDAzZWRldiwgcmV0LCBcXFwiZmFpbGVkIHRvIHJlZ2lzdGVyIGZpeGVkLWxpbmsgcGh5XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0xNzIzLVxcdFxcdFxcdGdvdG8gZnJlZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jPTIxNjE9c3RhdGljIHZvaWQgaWNzc2dfbW9kZV9maXJtd2FyZV9uYW1lcyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0yMTc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjIxNzg6c3RhdGljIGludCBwcnVldGhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0yMTc5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTIzNDAtXFx0aWYgKElTX0VSUihwcnVldGgtXFx1MDAzZWllcDApKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MjM0MTpcXHRcXHRyZXQgPSBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihwcnVldGgtXFx1MDAzZWllcDApLCBcXFwiaWVwMCBnZXQgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0yMzQyLVxcdFxcdHBydWV0aC1cXHUwMDNlaWVwMCA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0yMzQ3LVxcdGlmIChJU19FUlIocHJ1ZXRoLVxcdTAwM2VpZXAxKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjIzNDg6XFx0XFx0cmV0ID0gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJ1ZXRoLVxcdTAwM2VpZXAxKSwgXFxcImllcDEgZ2V0IGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMjM0OS1cXHRcXHRnb3RvIHB1dF9pZXAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMjM3NS1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MjM3NjpcXHRcXHRcXHRkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCBcXFwibmV0ZGV2IGluaXQgJXMgZmFpbGVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTIzNzctXFx0XFx0XFx0XFx0ICAgICAgZXRoMF9ub2RlLVxcdTAwM2VuYW1lKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTIzODktXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjIzOTA6XFx0XFx0XFx0ZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgXFxcIm5ldGRldiBpbml0ICVzIGZhaWxlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0yMzkxLVxcdFxcdFxcdFxcdCAgICAgIGV0aDFfbm9kZS1cXHUwMDNlbmFtZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYz0yNTc2PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHBydWV0aF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MjU3NzpcXHQucHJvYmUgPSBwcnVldGhfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMjU3OC1cXHQucmVtb3ZlID0gcHJ1ZXRoX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTc6NDE6MTUuNTIyOTY4NjRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTkwMzA2OTU2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgcHJ1ZXRoX3Byb2JlYCBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgcHJ1ZXRoX3Byb2JlYCBmdW5jdGlvbiwgd2hpY2ggZnJvbSB3aGF0IEkgY2FuIHRlbGwgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUuIEFuZCBhcyBhIHBsYXRmb3JtIGRyaXZlciwgaXQncyBnb2luZyB0byByZWx5IG9uIGEgc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZSBmb3IgYSBtYXRjaCwgcmlnaHQ/IE1ha2VzIHNlbnNlLiBOb3csIHRoaW5raW5nIGFib3V0IHRoZSB0eXBpY2FsIGVudmlyb25tZW50cyB3ZSdyZSB0ZXN0aW5nIGluIOKAkyBsaWtlIGEgZ2VuZXJpYyB4ODYgUUVNVSBvciBldmVuIEdvb2dsZSBDb21wdXRlIEVuZ2luZSDigJMgdGhhdCBzcGVjaWZpYyBwbGF0Zm9ybSBkZXZpY2UganVzdCB3b24ndCBiZSB0aGVyZS4gTm8gbWF0Y2gsIG5vIHByb2JlLiBUaGF0IG1lYW5zIHRoZSBkcml2ZXIgd29uJ3QgZXZlbiAqYXR0ZW1wdCogdG8gbG9hZCwgYW5kIHRoZSBjb2RlIHdpdGhpbiBgcHJ1ZXRoX3Byb2JlYCDigJMgYW5kIGFueXRoaW5nIGl0IGxlYWRzIHRvIOKAkyBiZWNvbWVzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gdGhlc2Ugc2V0dXBzLlxuXG5JIHRob3VnaHQsIGxldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlIGNoZWNrIGlmIHRoZXJlJ3MgYW55IGNsZXZlciB0cmlja2VyeSB3aXRoIHNvbWV0aGluZyBsaWtlIG5ldGxpbmsgdGhhdCBjb3VsZCBieXBhc3MgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kuIEJ1dCB0aGUgbW9yZSBJIGxvb2tlZCwgdGhlIGxlc3MgbGlrZWx5IEkgdGhvdWdodCB0aGlzIG1pZ2h0IHdvcmsuIEZvciBleGFtcGxlLCBgaWNzc2dfZmRiX2FkZF9kZWxgIHRha2VzIGEgYHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hY2AgYXMgYW4gYXJndW1lbnQuIEFuZCBmcm9tIHdoYXQgSSBzZWUsIHRoYXQgYGVtYWNgIHN0cnVjdCBpcyBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkIGluIGVpdGhlciBgcHJ1ZXRoX3Byb2JlYCBvciBtYXliZSBgcHJ1ZXRoX25ldGRldl9pbml0YC4gU2luY2UgYHBydWV0aF9wcm9iZWAgaXMgdW5yZWFjaGFibGUsIHRoZXJlJ3Mgbm8gYG5ldF9kZXZpY2VgIHJlZ2lzdGVyZWQuIElmIHRoZSBkcml2ZXIgZG9lc24ndCBwcm9iZSwgdGhlcmUgaXMgbm8gd2F5IHdlIGNhbiByZWFjaCBgaWNzc2dfZmRiX2FkZF9kZWxgIGFuZCB0aGlzIHJlbGF0ZWQgY29kZS4gVGhhdCBzZWVtcyBwcmV0dHkgZGVmaW5pdGl2ZS5cblxuU28sIGdpdmVuIGFsbCB0aGlzLCBJJ20gY29uZmlkZW50IHdlIGNhbid0IGdldCB0byB0aGlzIGNvZGUgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24uIEl0J3Mgbm90IHdvcnRoIHRoZSBlZmZvcnQgb2YgYXR0ZW1wdGluZyB0byBmdXp6IHRoaXMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiAqKkknbSBzZXR0aW5nIGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuKipcblxuXG4iLCJJbnB1dFRva2VucyI6OTY0NCwiT3V0cHV0VG9rZW5zIjoxMTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTc6NDE6MjEuNDI2MDQxNjc0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBwYXJ0IG9mIHRoZSBUSSBQUlUgRXRoZXJuZXQgRU1BQyBkcml2ZXIgKFRJX1BSVUVUSCkuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBUSSBTb0MgaGFyZHdhcmUgKG9yIGVtdWxhdGlvbikgYW5kIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBJbiBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHVzZWQgZm9yIGZ1enppbmcsIHRoaXMgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQsIHNvIHRoZSBkcml2ZXIgd2lsbCBub3QgcHJvYmUgYW5kIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgcGFydCBvZiB0aGUgVEkgUFJVIEV0aGVybmV0IEVNQUMgZHJpdmVyIChUSV9QUlVFVEgpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIHRoYXQgcmVxdWlyZXMgc3BlY2lmaWMgVEkgU29DIGhhcmR3YXJlIChvciBlbXVsYXRpb24pIGFuZCBkZXZpY2UgdHJlZSBub2RlcyB0byBwcm9iZS4gSW4gZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB1c2VkIGZvciBmdXp6aW5nLCB0aGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LCBzbyB0aGUgZHJpdmVyIHdpbGwgbm90IHByb2JlIGFuZCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowg2qtq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 17:31:37 +0000 UTC FinishedAt: 2026-07-01 17:41:22 +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+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGNvZGUgaXMgcGFydCBvZiB0aGUgVEkgUFJVIEV0aGVybmV0IEVNQUMgZHJpdmVyIChUSV9QUlVFVEgpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIHRoYXQgcmVxdWlyZXMgc3BlY2lmaWMgVEkgU29DIGhhcmR3YXJlIChvciBlbXVsYXRpb24pIGFuZCBkZXZpY2UgdHJlZSBub2RlcyB0byBwcm9iZS4gSW4gZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB1c2VkIGZvciBmdXp6aW5nLCB0aGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LCBzbyB0aGUgZHJpdmVyIHdpbGwgbm90IHByb2JlIGFuZCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2M2MmY4N2I0ODViYTRiZDU0YTc1NjdkMmNhMWE5MzBlYWFmZmMwMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMTc6NDA6MzEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuY1xuaW5kZXggM2Y4MjM3YzE3ZDA5OWUuLjA0YTgxNDAyZTNmM2NiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbmZpZy5jXG5AQCAtNzMyLDYgJiM0Mzs3MzIsMTYgQEAgaW50IGljc3NnX2ZkYl9hZGRfZGVsKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgY29uc3QgdW5zaWduZWQgY2hhciAqYWRkcixcbiBcdHU4IGZpZCA9IHZpZDtcbiBcdGludCByZXQ7XG4gXG4mIzQzO1x0LyogTGluay1sb2NhbCBhZGRyZXNzZXMgKDAxOjgwOmMyOjAwOjAwOjB4KSBtdXN0IG9ubHkgYmUgZGVsaXZlcmVkIHRvXG4mIzQzO1x0ICogdGhlIGhvc3QgcG9ydCAoUDApLiBDbGVhciBQMS9QMiBtZW1iZXJzaGlwIHRvIHByZXZlbnQgdGhlIGZpcm13YXJlXG4mIzQzO1x0ICogZnJvbSBmb3J3YXJkaW5nIHRoZW0gb3V0IG9mIHRoZSBwaHlzaWNhbCBzbGF2ZSBwb3J0cy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoaXNfbGlua19sb2NhbF9ldGhlcl9hZGRyKGFkZHIpKSB7XG4mIzQzO1x0XHRmaWRfYzIgfD0gSUNTU0dfRkRCX0VOVFJZX1AwX01FTUJFUlNISVA7XG4mIzQzO1x0XHRmaWRfYzIgXHUwMDI2PSB+KElDU1NHX0ZEQl9FTlRSWV9QMV9NRU1CRVJTSElQIHxcbiYjNDM7XHRcdFx0ICAgIElDU1NHX0ZEQl9FTlRSWV9QMl9NRU1CRVJTSElQKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWNzc2dfZmRiX3NldHVwKGVtYWMsIFx1MDAyNmZkYl9jbWQsIGFkZHIsIGZpZCwgYWRkID8gSUNTU19DTURfQUREX0ZEQiA6IElDU1NfQ01EX0RFTF9GREIpO1xuIFxuIFx0ZmlkX2MyIHw9IElDU1NHX0ZEQl9FTlRSWV9WQUxJRDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo0MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBjb2RlIGlzIHBhcnQgb2YgdGhlIFRJIFBSVSBFdGhlcm5ldCBFTUFDIGRyaXZlciAoVElfUFJVRVRIKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIFRJIFNvQyBoYXJkd2FyZSAob3IgZW11bGF0aW9uKSBhbmQgZGV2aWNlIHRyZWUgbm9kZXMgdG8gcHJvYmUuIEluIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UgdXNlZCBmb3IgZnV6emluZywgdGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCwgc28gdGhlIGRyaXZlciB3aWxsIG5vdCBwcm9iZSBhbmQgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2M2MmY4N2I0ODViYTRiZDU0YTc1NjdkMmNhMWE5MzBlYWFmZmMwMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDEgMTc6NDA6MzEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbmZpZy5jCmluZGV4IDNmODIzN2MxN2QwOTllLi4wNGE4MTQwMmUzZjNjYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmMKQEAgLTczMiw2ICYjNDM7NzMyLDE2IEBAIGludCBpY3NzZ19mZGJfYWRkX2RlbChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIsCiAJdTggZmlkID0gdmlkOwogCWludCByZXQ7CiAKJiM0MzsJLyogTGluay1sb2NhbCBhZGRyZXNzZXMgKDAxOjgwOmMyOjAwOjAwOjB4KSBtdXN0IG9ubHkgYmUgZGVsaXZlcmVkIHRvCiYjNDM7CSAqIHRoZSBob3N0IHBvcnQgKFAwKS4gQ2xlYXIgUDEvUDIgbWVtYmVyc2hpcCB0byBwcmV2ZW50IHRoZSBmaXJtd2FyZQomIzQzOwkgKiBmcm9tIGZvcndhcmRpbmcgdGhlbSBvdXQgb2YgdGhlIHBoeXNpY2FsIHNsYXZlIHBvcnRzLgomIzQzOwkgKi8KJiM0MzsJaWYgKGlzX2xpbmtfbG9jYWxfZXRoZXJfYWRkcihhZGRyKSkgewomIzQzOwkJZmlkX2MyIHw9IElDU1NHX0ZEQl9FTlRSWV9QMF9NRU1CRVJTSElQOwomIzQzOwkJZmlkX2MyICZhbXA7PSB+KElDU1NHX0ZEQl9FTlRSWV9QMV9NRU1CRVJTSElQIHwKJiM0MzsJCQkgICAgSUNTU0dfRkRCX0VOVFJZX1AyX01FTUJFUlNISVApOwomIzQzOwl9CiYjNDM7CiAJaWNzc2dfZmRiX3NldHVwKGVtYWMsICZhbXA7ZmRiX2NtZCwgYWRkciwgZmlkLCBhZGQgPyBJQ1NTX0NNRF9BRERfRkRCIDogSUNTU19DTURfREVMX0ZEQik7CiAKIAlmaWRfYzIgfD0gSUNTU0dfRkRCX0VOVFJZX1ZBTElEOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQ1CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSUNTU0cgRkRCIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuY2AuIFNwZWNpZmljYWxseSwgdGhlIGZvY3VzIGlzIG9uIHRoZSBgaWNzc2dfZmRiX2FkZF9kZWxgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QuIFRoZSBwYXRjaCBpcyBhZGRpbmcgYSBjaGVjayBmb3IgYGlzX2xpbmtfbG9jYWxfZXRoZXJfYWRkcihhZGRyKWAgYW5kIHRoZW4gdHdlYWtpbmcgYGZpZF9jMmAuICBUaGF0IHN1Z2dlc3RzIHRoaXMgbWlnaHQgYmUgcmVsYXRlZCB0byBob3cgdGhlIEZvcndhcmRpbmcgRGF0YWJhc2UgKEZEQikgaGFuZGxlcyBsaW5rLWxvY2FsIGFkZHJlc3Nlcywgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogdGhpcyBjaGFuZ2UgaXMgbmVjZXNzYXJ5LiBXaGF0JiMzOTtzIHRoZSBjb250ZXh0PyBXaGF0JiMzOTtzIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb24gZm9yIG5ldHdvcmsgcGVyZm9ybWFuY2Ugb3IgYmVoYXZpb3I/CgpOZXh0IHN0ZXA6IEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuY2AgaXRzZWxmLiBJIG5lZWQgdG8gdHJhY2UgZG93biB3aGVyZSBgaWNzc2dfZmRiX2FkZF9kZWxgIGlzIGFjdHVhbGx5ICpjYWxsZWQqIHdpdGhpbiB0aGUgZHJpdmVyLiBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsZXJzIHdpbGwgcmV2ZWFsIHRoZSBzY2VuYXJpb3MgdGhhdCB0aGlzIG1vZGlmaWNhdGlvbiBpbXBhY3RzLCBhbmQgZ2l2ZSBtZSB0aGUgY3J1Y2lhbCBjb250ZXh0IEkmIzM5O20gbWlzc2luZy4gRmluZGluZyB0aGVzZSBjYWxscyBpcyBwYXJhbW91bnQgdG8gZmlndXJpbmcgb3V0IHdoYXQgdGhpcyBwYXRjaCBpcyByZWFsbHkgYWJvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWNzc2dfZmRiX2FkZF9kZWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmM9Njk5PXN0YXRpYyB2b2lkIGljc3NnX2ZkYl9zZXR1cChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsIHN0cnVjdCBtZ210X2NtZCAqZmRiX2NtZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuYy03MjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuYzo3Mjc6aW50IGljc3NnX2ZkYl9hZGRfZGVsKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgY29uc3QgdW5zaWduZWQgY2hhciAqYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbmZpZy5jLTcyOC1cdFx0ICAgICAgdTggdmlkLCB1OCBmaWRfYzIsIGJvb2wgYWRkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbmZpZy5jLTc1OS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuYzo3NjA6RVhQT1JUX1NZTUJPTF9HUEwoaWNzc2dfZmRiX2FkZF9kZWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmMtNzYxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jPTIwOT1zdGF0aWMgdm9pZCBpY3NzZ19lbmFibGVfZndfb2ZmbG9hZChzdHJ1Y3QgcHJ1ZXRoICpwcnVldGgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMjI0LVx0XHRcdGlmIChuZXRpZl9ydW5uaW5nKGVtYWMtXHUwMDNlbmRldikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjIyNTpcdFx0XHRcdGljc3NnX2ZkYl9hZGRfZGVsKGVtYWMsIGV0aF9zdHBfYWRkciwgcHJ1ZXRoLVx1MDAzZWRlZmF1bHRfdmxhbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTIyNi1cdFx0XHRcdFx0XHQgIElDU1NHX0ZEQl9FTlRSWV9QMF9NRU1CRVJTSElQIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYz02Mjc9c3RhdGljIGludCBpY3NzZ19wcnVldGhfYWRkX21jYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBjb25zdCB1OCAqYWRkcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy02MzgtXHRwb3J0X21hc2sgPSBCSVQoZW1hYy1cdTAwM2Vwb3J0X2lkKSB8IGljc3NnX2ZkYl9sb29rdXAoZW1hYywgYWRkciwgdmxhbl9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYzo2Mzk6XHRpY3NzZ19mZGJfYWRkX2RlbChlbWFjLCBhZGRyLCB2bGFuX2lkLCBwb3J0X21hc2ssIHRydWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtNjQwLVx0aWNzc2dfdnRibF9tb2RpZnkoZW1hYywgdmxhbl9pZCwgcG9ydF9tYXNrLCBwb3J0X21hc2ssIHRydWUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jPTY0NT1zdGF0aWMgaW50IGljc3NnX3BydWV0aF9kZWxfbWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGNvbnN0IHU4ICphZGRyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTY1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjY2MDpcdGljc3NnX2ZkYl9hZGRfZGVsKGVtYWMsIGFkZHIsIHZsYW5faWQsIHBvcnRfbWFzaywgZmFsc2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtNjYxLVx0aWNzc2dfdnRibF9tb2RpZnkoZW1hYywgdmxhbl9pZCwgcG9ydF9tYXNrLCBwb3J0X21hc2ssIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy02NjMtXHRpZiAob3RoZXJfcG9ydF9tYXNrKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYzo2NjQ6XHRcdGljc3NnX2ZkYl9hZGRfZGVsKGVtYWMsIGFkZHIsIHZsYW5faWQsIG90aGVyX3BvcnRfbWFzaywgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy02NjUtXHRcdGljc3NnX3Z0YmxfbW9kaWZ5KGVtYWMsIHZsYW5faWQsIG90aGVyX3BvcnRfbWFzayxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYz03MDk9c3RhdGljIHZvaWQgaWNzc2dfaHNyX2ZkYl91cGRhdGUoc3RydWN0IHBydWV0aF9lbWFjICplbWFjLCBjb25zdCB1OCAqYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy03MTEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6NzEyOlx0aWNzc2dfZmRiX2FkZF9kZWwoZW1hYywgYWRkciwgdmlkLCBwb3J0X21lbWJlcnNoaXAsIGFkZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy03MTMtXHRpY3NzZ192dGJsX21vZGlmeShlbWFjLCB2aWQsIEJJVChlbWFjLVx1MDAzZXBvcnRfaWQpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5oPTQ0NT1pbnQgaWNzc2dfc2VuZF9mZGJfbXNnKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgc3RydWN0IG1nbXRfY21kICpjbWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguaC00NDYtXHRcdCAgICAgICBzdHJ1Y3QgbWdtdF9jbWRfcnNwICpyc3ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmg6NDQ3OmludCBpY3NzZ19mZGJfYWRkX2RlbChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsICBjb25zdCB1bnNpZ25lZCBjaGFyICphZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmgtNDQ4LVx0XHQgICAgICB1OCB2aWQsIHU4IGZpZF9jMiwgYm9vbCBhZGQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jPTEyNT1zdGF0aWMgdm9pZCBwcnVldGhfc3dpdGNoZGV2X2V2ZW50X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jLTE0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jOjE0ODpcdFx0cmV0ID0gaWNzc2dfZmRiX2FkZF9kZWwoZW1hYywgZmRiLVx1MDAzZWFkZHIsIGZkYi1cdTAwM2V2aWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0xNDktXHRcdFx0XHRcdEJJVChwb3J0X2lkKSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmMtMTYzLVx0XHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmM6MTY0Olx0XHRpY3NzZ19mZGJfYWRkX2RlbChlbWFjLCBmZGItXHUwMDNlYWRkciwgZmRiLVx1MDAzZXZpZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jLTE2NS1cdFx0XHRcdCAgQklUKHBvcnRfaWQpLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmM9MjU5PXN0YXRpYyBpbnQgcHJ1ZXRoX3N3aXRjaGRldl92bGFuX2RlbChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsIHUxNiB2aWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmMtMjczLVx0aWYgKGNwdV9wb3J0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmM6Mjc0Olx0XHRpY3NzZ19mZGJfYWRkX2RlbChlbWFjLCBlbWFjLVx1MDAzZW1hY19hZGRyLCB2aWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0yNzUtXHRcdFx0XHQgIEJJVChQUlVFVEhfUE9SVF9IT1NUKSwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jPTMxNz1zdGF0aWMgaW50IHBydWV0aF9zd2l0Y2hkZXZfbWRiX2FkZChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmMtMzMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmM6MzM0Olx0ZXJyID0gaWNzc2dfZmRiX2FkZF9kZWwoZW1hYywgbWRiLVx1MDAzZWFkZHIsIG1kYi1cdTAwM2V2aWQsIGZpZF9jMiB8IHBvcnRfbWFzaywgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0zMzUtXHRuZXRkZXZfZGJnKGVtYWMtXHUwMDNlbmRldiwgXCYjMzQ7TURCIGFkZCB2aWQgJXU6JXBNICBwb3J0czogJVhcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmM9MzQxPXN0YXRpYyBpbnQgcHJ1ZXRoX3N3aXRjaGRldl9tZGJfZGVsKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0zNTctXHRpZiAoZmlkX2MyIFx1MDAyNiB+ZGVsX21hc2spXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYzozNTg6XHRcdHJldCA9IGljc3NnX2ZkYl9hZGRfZGVsKGVtYWMsIG1kYi1cdTAwM2VhZGRyLCBtZGItXHUwMDNldmlkLCBmaWRfYzIgXHUwMDI2IH5kZWxfbWFzaywgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0zNTktXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYzozNjA6XHRcdHJldCA9IGljc3NnX2ZkYl9hZGRfZGVsKGVtYWMsIG1kYi1cdTAwM2VhZGRyLCBtZGItXHUwMDNldmlkLCAwLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0zNjEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg5MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEV0aGVybmV0IERyaXZlciBDaGFuZ2UqKgoKT2theSwgc28gdGhlIGNoYW5nZSBpcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmNgLiBUaGV5JiMzOTt2ZSBhZGRlZCBhIGNoZWNrIGZvciBgaXNfbGlua19sb2NhbF9ldGhlcl9hZGRyKGFkZHIpYCB3aXRoaW4gdGhlIGBpY3NzZ19mZGJfYWRkX2RlbGAgZnVuY3Rpb24uIFRoYXQgZnVuY3Rpb24sIGluIHR1cm4sIGlzIGNhbGxlZCBieSBxdWl0ZSBhIGZldyBvdGhlciBmdW5jdGlvbnMgd2l0aGluIHRoZSBkcml2ZXI6IGBpY3NzZ19wcnVldGhfYWRkX21jYXN0YCwgYGljc3NnX3BydWV0aF9kZWxfbWNhc3RgLCBgaWNzc2dfaHNyX2ZkYl91cGRhdGVgLCBgcHJ1ZXRoX3N3aXRjaGRldl9ldmVudF93b3JrYCwgYHBydWV0aF9zd2l0Y2hkZXZfdmxhbl9kZWxgLCBgcHJ1ZXRoX3N3aXRjaGRldl9tZGJfYWRkYCwgYW5kIGBwcnVldGhfc3dpdGNoZGV2X21kYl9kZWxgLiAgVGhpcyBpcyBzcGVjaWZpY2FsbHkgZm9yIHRoZSBUSSBQUlUtSUNTU0cgRXRoZXJuZXQgZHJpdmVyLCByaWdodD8gSW50ZXJlc3RpbmcuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyBhYm91dCB0aGUgdXNlIGNhc2UuIElzIHRoaXMgZHJpdmVyIGV2ZW4gKnVzZWQqIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cz8gSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIG9wdGlvbnMgZm9yIHRoaXMgdGhpbmcuIFRoYXQgd2lsbCBnaXZlIG1lIHNvbWUgY2x1ZXMgYXMgdG8gd2hlcmUgaXQmIzM5O3MgdHlwaWNhbGx5IGRlcGxveWVkIGFuZCB3aGF0IHRoZSBleHBlY3RhdGlvbnMgZm9yIHRoaXMgZHJpdmVyIGFyZS4gVGhpcyBpcyBhIGJpdCB1bnVzdWFsLiBUaGlzIHdvdWxkIGJlIGEgZ3JlYXQgdGhpbmcgdG8gY2hlY2sgZm9yIGFueSBwb3RlbnRpYWwgaW1wYWN0IGluIGNvbnRhaW5lcml6ZWQgZW52aXJvbm1lbnRzLiBJJiMzOTtsbCBjaGVjayB0aGF0IG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRJX1BSVUVUSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTIyMj1jb25maWcgVElfSUNTU19JRVBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjM0OmNvbmZpZyBUSV9QUlVFVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjM1LVx0dHJpc3RhdGUgXCYjMzQ7VEkgUFJVIEV0aGVybmV0IEVNQUMgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUxNAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBDaGFpbiBmb3IgVElfUFJVRVRIKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBpbXBsaWNhdGlvbnMgb2YgYFRJX1BSVUVUSGAuIEl0JiMzOTtzIGEgY3JpdGljYWwgY29tcG9uZW50LCBhbmQgSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIGl0cyBkZXBlbmRlbmNpZXMuIE15IGltbWVkaWF0ZSBnb2FsIGlzIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoaXMgbW9kdWxlICpyZWxpZXMqIHVwb24sIGJvdGggYXQgdGhlIGhhcmR3YXJlIGxldmVsIGFuZCB3aXRoaW4gdGhlIHNvZnR3YXJlIHN0YWNrLiBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0lzIHRoaXMgYSBwdXJlIGhhcmR3YXJlIGludGVyZmFjZT8gRG9lcyBpdCBsZWFuIG9uIHNwZWNpZmljIGRyaXZlcnMsIGNvcmUgbGlicmFyaWVzLCBvciBwZXJoYXBzIGV2ZW4gaGlnaGVyLWxldmVsIGZyYW1ld29ya3M/JiMzNDsgSSBuZWVkIHRvIHNlZSB0aGUgZW50aXJlIGRlcGVuZGVuY3kgY2hhaW4gYW5kIHF1aWNrbHkuIEkmIzM5O20gZ29pbmcgdG8gbWFwIG91dCB0aGUgZW50aXJlIHN0cnVjdHVyZSBmcm9tIHRoZSB0b3AtZG93bi4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoZXRoZXIgdGhlIGRlcGVuZGVuY2llcyBhcmUgdGlnaHRseSBjb3VwbGVkIG9yIGxvb3NlbHkgY291cGxlZCwgYXMgdGhhdCBkZXRlcm1pbmVzIG11Y2ggb2YgdGhlIHN5c3RlbSBkZXNpZ24uIEkga25vdyB0aGF0IEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHNoYXJlZCByZXNvdXJjZXMsIGludGVycnVwdCB2ZWN0b3JzLCBhbmQgcG90ZW50aWFsIHNvdXJjZXMgb2YgY29udGVudGlvbi4gS25vd2luZyB0aGUgZGVwZW5kZW5jaWVzIGlzIHN0ZXAgb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIzNCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjM0Olx0Y29uZmlnIFRJX1BSVUVUSFxuIDIzNTpcdFx0dHJpc3RhdGUgXCYjMzQ7VEkgUFJVIEV0aGVybmV0IEVNQUMgZHJpdmVyXCYjMzQ7XG4gMjM2Olx0XHRkZXBlbmRzIG9uIFBSVV9SRU1PVEVQUk9DXG4gMjM3Olx0XHRkZXBlbmRzIG9uIE5FVF9TV0lUQ0hERVZcbiAyMzg6XHRcdHNlbGVjdCBUSV9JQ1NTX0lFUFxuIDIzOTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuIDI0MDpcdFx0aGVscFxuIDI0MTpcdFx0ICBTb21lIFRJIFNvQ3MgaGFzIFByb2dyYW1tYWJsZSBSZWFsdGltZSBVbml0IChQUlUpIGNvcmVzIHdoaWNoIGNhblxuIDI0MjpcdFx0ICBzdXBwb3J0IFNpbmdsZSBvciBEdWFsIEV0aGVybmV0IHBvcnRzIHdpdGggdGhlIGhlbHAgb2YgZmlybXdhcmUgY29kZVxuIDI0MzpcdFx0ICBydW5uaW5nIG9uIFBSVSBjb3Jlcy4gVGhpcyBkcml2ZXIgc3VwcG9ydHMgcmVtb3RlcHJvYyBiYXNlZFxuIDI0NDpcdFx0ICBjb21tdW5pY2F0aW9uIHRvIFBSVSBmaXJtd2FyZSB0byBleHBvc2UgRXRoZXJuZXQgaW50ZXJmYWNlIHRvIExpbnV4LlxuIDI0NTpcdFxuIDI0NjpcdGVuZGlmICMgTkVUX1ZFTkRPUl9USVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwMDEKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIGBQUlVfUkVNT1RFUFJPQ2AgRGVwZW5kZW5jeSoqCgpPa2F5LCBzbyB0aGUgZGlyZWN0aW9uIEkmIzM5O20gdGFraW5nIGhpbmdlcyBvbiB0aGlzIGBQUlVfUkVNT1RFUFJPQ2AgdGhpbmcuIFJpZ2h0LiBCZWZvcmUgSSBjYW4gbW92ZSBmb3J3YXJkLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGV4YWN0bHkgdGhhdCBlbnRhaWxzLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGludmVzdGlnYXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoYXQmIzM5O3MgYWJvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQUlVfUkVNT1RFUFJPQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3JlbW90ZXByb2MvS2NvbmZpZz0xNDM9Y29uZmlnIE1FU09OX01YX0FPX0FSQ19SRU1PVEVQUk9DXG4tLVxuZHJpdmVycy9yZW1vdGVwcm9jL0tjb25maWctMTUzLVxuZHJpdmVycy9yZW1vdGVwcm9jL0tjb25maWc6MTU0OmNvbmZpZyBQUlVfUkVNT1RFUFJPQ1xuZHJpdmVycy9yZW1vdGVwcm9jL0tjb25maWctMTU1LVx0dHJpc3RhdGUgXCYjMzQ7VEkgUFJVIHJlbW90ZXByb2Mgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjU3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqUFJVX1JFTU9URVBST0MgRGVwZW5kZW5jeSBDaGVjayoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBgUFJVX1JFTU9URVBST0NgIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgYSBjcml0aWNhbCBjb21wb25lbnQsIGFuZCBhIHNpbmdsZSBtaXNzdGVwIGluIGl0cyBkZXBlbmRlbmNpZXMgY2FuIGNhdXNlIHNlcmlvdXMgaGVhZGFjaGVzIGRvd24gdGhlIGxpbmUuIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgYnkgbWFwcGluZyBvdXQgdGhlIGNyaXRpY2FsIHBhdGguIFdoYXQgYXJlIHRoZSAqYmFyZSBtaW5pbXVtKiByZXF1aXJlbWVudHMgZm9yIGl0IHRvIGZ1bmN0aW9uIGNvcnJlY3RseT8gUHJvY2Vzc29yIFNESyBkb2N1bWVudGF0aW9uIGNhbiBiZSBoZWxwZnVsLCBidXQgSSBoYXZlIGEgZmVlbGluZyBJIG5lZWQgdG8gbG9vayBiZXlvbmQgdGhhdC4gSXQmIzM5O3MgdXN1YWxseSBiZXR0ZXIgdG8gdHJhY2UgYmFjayB0aHJvdWdoIHRoZSBjb2RlIGl0c2VsZiAtIGxvb2sgYXQgdGhlIGJ1aWxkIGZpbGVzLCBsaW5rZXIgc2NyaXB0cywgYW5kIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcy4gV2hpY2ggaGVhZGVycyBhcmUgYmVpbmcgaW5jbHVkZWQ/IFdoaWNoIGxpYnJhcmllcyBhcmUgYmVpbmcgbGlua2VkPyBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGRldmljZSB0cmVlIGVudHJpZXMgb3IgcGxhdGZvcm0tc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQ/IEFuZCBvZiBjb3Vyc2UsIEkgaGF2ZSB0byBlbnN1cmUgdGhhdCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBhbGwgY29tcGF0aWJsZSB3aXRoIHRoZSBpbnRlbmRlZCB0YXJnZXQgcGxhdGZvcm0uIEkgbmVlZCB0byBtYWtlIGEgbm90ZSBvZiB0aGUgdmVyc2lvbiByZXF1aXJlbWVudHMgLSBhcmUgdGhlcmUga25vd24gaXNzdWVzIHdpdGggY2VydGFpbiB2ZXJzaW9ucyBvZiB0aG9zZSBkZXBlbmRlbmNpZXM/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIG90aGVyIG1vZHVsZXMgaW4gdGhlIHN5c3RlbT8gSSBhbHNvIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhvc2UgZGVwZW5kZW5jaWVzIGFyZSBtZXQgYnkgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gSSBoYXZlIHRvIGxvb2sgZm9yIGFueSBoaWRkZW4gYXNzdW1wdGlvbnMgb3IgaW1wbGljaXQgZGVwZW5kZW5jaWVzLCB0aGUgZGV2aWwgaXMgb2Z0ZW4gaW4gdGhlIGRldGFpbHMuIEkgbWF5IG5lZWQgdG8gdGVtcG9yYXJpbHkgdXNlIGRlYnVnIGxvZ2dpbmcgdG8gY2hlY2sgYXQgcnVudGltZS4gT25jZSBJIGFtIHN1cmUgb2YgdGhlIGZ1bGwgY2hhaW4gb2YgZGVwZW5kZW5jaWVzIEkgY2FuIGJldHRlciBhZGRyZXNzIHRoZSBwcm9ibGVtLCBhbmQgbWF5YmUgcHJvdmlkZSBhIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvcmVtb3RlcHJvYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTU0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNTQ6XHRjb25maWcgUFJVX1JFTU9URVBST0NcbiAxNTU6XHRcdHRyaXN0YXRlIFwmIzM0O1RJIFBSVSByZW1vdGVwcm9jIHN1cHBvcnRcJiMzNDtcbiAxNTY6XHRcdGRlcGVuZHMgb24gVElfUFJVU1NcbiAxNTc6XHRcdGRlZmF1bHQgVElfUFJVU1NcbiAxNTg6XHRcdGhlbHBcbiAxNTk6XHRcdCAgU3VwcG9ydCBmb3IgVEkgUFJVIHJlbW90ZSBwcm9jZXNzb3JzIHByZXNlbnQgd2l0aGluIGEgUFJVLUlDU1NcbiAxNjA6XHRcdCAgc3Vic3lzdGVtIHZpYSB0aGUgcmVtb3RlIHByb2Nlc3NvciBmcmFtZXdvcmsuXG4gMTYxOlx0XG4gMTYyOlx0XHQgIFNheSBZIG9yIE0gaGVyZSB0byBzdXBwb3J0IHRoZSBQcm9ncmFtbWFibGUgUmVhbHRpbWUgVW5pdCAoUFJVKVxuIDE2MzpcdFx0ICBwcm9jZXNzb3JzIG9uIHZhcmlvdXMgVEkgU29Dcy4gSXQmIzM5O3Mgc2FmZSB0byBzYXkgTiBoZXJlIGlmIHlvdSYjMzk7cmVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc4MAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIHRoZSBgVElfUFJVU1NgIExhbmRzY2FwZSoqCgpSaWdodCwgc28gdGhlIGNvcmUgb2YgdGhlIGlzc3VlIGhpbmdlcyBvbiB0aGF0IGBUSV9QUlVTU2AgdmFyaWFibGUuIEkgaW1tZWRpYXRlbHkgc3RhcnQgbWVudGFsbHkgcGFyc2luZyB3aGF0IHRoYXQgaW1wbGllcyBpbiB0aGlzIGNvbnRleHQuIElzIGl0IGEgY29tcGlsZS10aW1lIGZsYWc/IEEgcnVudGltZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcj8gSG93IGlzIGl0IGJlaW5nIHVzZWQgd2l0aGluIHRoZSBidWlsZCBzeXN0ZW0gb3IgdGhlIHRhcmdldCBlbnZpcm9ubWVudD8gVGhlIGltcGxpY2F0aW9ucyBhcmUgc2lnbmlmaWNhbnQsIGFzIGl0cyBzdGF0ZSBkaWN0YXRlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGNvZGUuIE15IGJyYWluIGlzIGFscmVhZHkgc3RhcnRpbmcgdG8gYnJhbmNoIG91dCBpbnRvIHBvdGVudGlhbCBzY2VuYXJpb3MuCgpJZiBpdCYjMzk7cyBhIHByZXByb2Nlc3NvciBkZWZpbml0aW9uLCBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIOKAkyB3aGF0IGNvbmRpdGlvbmFsIGJsb2NrcyBhcmUgZGVwZW5kZW50IG9uIGl0cyB2YWx1ZT8gSXMgaXQgYSBzaW1wbGUgYCNpZmRlZmAgb3Igc29tZXRoaW5nIG1vcmUgY29tcGxleD8gVGhlIHBvdGVudGlhbCBmb3Igc3VidGxlIGJ1Z3MgYXJpc2luZyBmcm9tIGluY29ycmVjdCBzZXR0aW5ncyBpcyBoaWdoLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBjcm9zcy1jb21waWxlciBjb25maWd1cmF0aW9uIHJpZ2h0IGF3YXksIGFuZCBpZiBJJiMzOTttIGRlYWxpbmcgd2l0aCBhIG1peGVkIGNvbXBpbGF0aW9uLCB0aGF0IGludHJvZHVjZXMgZnVydGhlciBjb21wbGV4aXR5LgoKSWYgaXQmIzM5O3MgYSBydW50aW1lIHZhcmlhYmxlLCB0aGVuIEkgaGF2ZSB0byBjb25zaWRlciB3aGVyZSBpdCYjMzk7cyBiZWluZyBzZXQuIElzIGl0IHVzZXItY29udHJvbGxhYmxlPyBJcyBpdCBkZXJpdmVkIGZyb20gaGFyZHdhcmUgY29uZmlndXJhdGlvbj8gQXJlIHRoZXJlIGNsZWFyIG1lY2hhbmlzbXMgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgaXQ/IFRoaXMgcmFpc2VzIHF1ZXN0aW9ucyBhYm91dCBob3cgdGhlIGFwcGxpY2F0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGNvbmZpZ3VyZWQuIFRoZSBkZWJ1Z2dpbmcgYW5kIHRyYWNlYWJpbGl0eSBpbXBsaWNhdGlvbnMgYXJlIGFsc28gb24gbXkgbWluZC4KCkVzc2VudGlhbGx5LCBJIG5lZWQgdG8ga25vdyAqZXZlcnl0aGluZyogYWJvdXQgYFRJX1BSVVNTYCB0byB1bmRlcnN0YW5kIHRoZSBzeXN0ZW0mIzM5O3MgYmVoYXZpb3IgZnVsbHkuIFdpdGhvdXQgdGhhdCwgYW55IGZ1cnRoZXIgYW5hbHlzaXMgaXMganVzdCBndWVzc2luZy4gSXQmIzM5O3MgdGhlIGNlbnRyYWwga2V5LCBhbmQgSSBuZWVkIHRvIHVubG9jayBpdHMgc2VjcmV0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRJX1BSVVNTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaXJxY2hpcC9LY29uZmlnPTYxND1jb25maWcgVElfU0NJX0lOVEFfSVJRQ0hJUFxuLS1cbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTYyNS1cbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnOjYyNjpjb25maWcgVElfUFJVU1NfSU5UQ1xuZHJpdmVycy9pcnFjaGlwL0tjb25maWctNjI3LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL3NvYy90aS9LY29uZmlnPTY0PWNvbmZpZyBUSV9LM19TT0NJTkZPXG4tLVxuZHJpdmVycy9zb2MvdGkvS2NvbmZpZy03My1cbmRyaXZlcnMvc29jL3RpL0tjb25maWc6NzQ6Y29uZmlnIFRJX1BSVVNTXG5kcml2ZXJzL3NvYy90aS9LY29uZmlnLTc1LVx0dHJpc3RhdGUgXCYjMzQ7VEkgUFJVLUlDU1MgU3Vic3lzdGVtIFBsYXRmb3JtIGRyaXZlcnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzMyMgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBEZXBlbmRlbmNpZXMgb2YgYFRJX1BSVVNTYCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nLCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgaXQmIzM5O3MgcHJ1ZGVudCB0byBtYXAgb3V0IHRoZSBkZXBlbmRlbmNpZXMgb2YgYFRJX1BSVVNTYC4gSSBuZWVkIHRvIGVuc3VyZSBhIGhvbGlzdGljIHVuZGVyc3RhbmRpbmcgYmVmb3JlIEkgcHJvY2VlZC4gVGhpcyBpcyBrZXkgdG8gcHJldmVudGluZyBmdXR1cmUgaW50ZWdyYXRpb24gcHJvYmxlbXMgYW5kIHBvdGVudGlhbCBzeXN0ZW0tbGV2ZWwgaW5jb25zaXN0ZW5jaWVzLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHRob3JvdWdoIGNoZWNrLiBXaGF0IGFyZSB0aGUga2V5IGVsZW1lbnRzIHRvIGNvbnNpZGVyPyBXaGF0IG90aGVyIG1vZHVsZXMsIGxpYnJhcmllcywgb3IgY29uZmlndXJhdGlvbnMgcmVseSBvbiBpdD8gQXJlIHRoZXJlIGhhcmR3YXJlIGNvbnN0cmFpbnRzIEkgc2hvdWxkIGtlZXAgaW4gbWluZD8gSSBuZWVkIHRvIGJ1aWxkIGEgbWVudGFsIG1hcCwgYSBwcmVjaXNlIGRlcGVuZGVuY3kgdHJlZSwgc28gSSBjYW4gc2VlIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGFueSBjaGFuZ2VzIG9yIGludGVncmF0aW9ucyByZWxhdGVkIHRvIHRoaXMgY29tcG9uZW50LiBUaGlzIGlzIGhvdyBJJiMzOTtsbCBrZWVwIHRoZSBwcm9qZWN0IHN0YWJsZSBhbmQgZW5zdXJlIHRoZSBzeXN0ZW0gd2lsbCB3b3JrIGFzIEkgZXhwZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvc29jL3RpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDc0Olx0Y29uZmlnIFRJX1BSVVNTXG4gIDc1Olx0XHR0cmlzdGF0ZSBcJiMzNDtUSSBQUlUtSUNTUyBTdWJzeXN0ZW0gUGxhdGZvcm0gZHJpdmVyc1wmIzM0O1xuICA3NjpcdFx0ZGVwZW5kcyBvbiBTT0NfQU0zM1hYIHx8IFNPQ19BTTQzWFggfHwgU09DX0RSQTdYWCB8fCBBUkNIX0tFWVNUT05FIHx8IEFSQ0hfSzMgfHwgQ09NUElMRV9URVNUXG4gIDc3Olx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuICA3ODpcdFx0aGVscFxuICA3OTpcdFx0ICBUSSBQUlUtSUNTUyBTdWJzeXN0ZW0gcGxhdGZvcm0gc3BlY2lmaWMgc3VwcG9ydC5cbiAgODA6XHRcbiAgODE6XHRcdCAgU2F5IFkgb3IgTSBoZXJlIHRvIHN1cHBvcnQgdGhlIFByb2dyYW1tYWJsZSBSZWFsdGltZSBVbml0IChQUlUpXG4gIDgyOlx0XHQgIHByb2Nlc3NvcnMgb24gdmFyaW91cyBUSSBTb0NzLiBJdCYjMzk7cyBzYWZlIHRvIHNheSBOIGhlcmUgaWYgeW91JiMzOTtyZVxuICA4MzpcdFx0ICBub3QgaW50ZXJlc3RlZCBpbiB0aGUgUFJVIG9yIGlmIHlvdSBhcmUgdW5zdXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NzM5CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRXhlY3V0aW9uIEVudmlyb25tZW50KioKCk9rYXksIHNvIHRoaXMgY29kZSYjMzk7cyBjb21waWxhdGlvbiBwYXRoIGhpbmdlcyBvbiBhIGZldyBTeXN0ZW0tb24tQ2hpcCAoU29DKSBmYW1pbGllczogQU0zM1hYLCBBTTQzWFgsIERSQTdYWCwgYW5kIHRoZSBLZXlzdG9uZSBhbmQgSzMgYXJjaGl0ZWN0dXJlcywgb3Igd2hldGhlciB3ZSBhcmUgcnVubmluZyBhIGNvbXBpbGUgdGVzdC4gVGhhdCBtZWFucyBpdCAqY2FuKiBiZSBidWlsdCBpZiBgQ09NUElMRV9URVNUYCBpcyBkZWZpbmVkLiBCdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBJIGFjdHVhbGx5ICpleGVjdXRlKiB0aGlzIHRoaW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFNvbWV0aGluZyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lPwoKTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgdGhhdCB0aGlzIGlzIGEgaGFyZHdhcmUgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgdGhlIFRJIFBSVS1JQ1NTIFN1YnN5c3RlbS4gSXQmIzM5O3MgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgUFJVIGZpcm13YXJlLiBVbmxlc3MgUUVNVSBvciBzb21lIG90aGVyIHZpcnR1YWxpemF0aW9uIGxheWVyIGhhcyBwcm9wZXIgZW11bGF0aW9uIG9mIHRoYXQgVEkgUFJVLUlDU1MgaGFyZHdhcmUsIEkmIzM5O20gbGlrZWx5IGRlYWQgaW4gdGhlIHdhdGVyLiBUaGlzIHNtZWxscyBsaWtlIGEgcHVyZSBoYXJkd2FyZSBkcml2ZXIgdG8gbWUsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LgoKVGhlIGRyaXZlciB1dGlsaXplcyBgcmVtb3RlcHJvY2AgdG8gbG9hZCBmaXJtd2FyZSBvbnRvIHRoZSBQUlUgY29yZXMuIFRoYXQmIzM5O3MgYSBrZXkgaW5kaWNhdG9yLiBJZiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSAqbGFja3MqIHRob3NlIFBSVSBjb3JlcywgdGhlIGRyaXZlciBwcm9iZSBpcyBndWFyYW50ZWVkIHRvIGZhaWwuCgpMZXQmIzM5O3MgZGl2ZSBpbnRvIGBpY3NzZ19wcnVldGhfcHJvYmVgIGFuZCBzZWUgd2hhdCB0aGUgZGV2aWNlIGRldGVjdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gbG9vayBsaWtlLiBUaGF0JiMzOTtsbCB0ZWxsIG1lIGlmIHRoZXJlJiMzOTtzIGFueSBncmFjZWZ1bCBkZWdyYWRhdGlvbiBvciBjb25kaXRpb25hbCBoYW5kbGluZyBmb3IgdGhlIGFic2VuY2Ugb2YgdGhlIGhhcmR3YXJlLCBvciBpZiBpdCYjMzk7cyBhIGhhcmQgZGVwZW5kZW5jeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpY3NzZ19wcnVldGhfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Mjc1CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgdGhlIHN1bW1hcnksIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIHRoZSB1c2VyIGlzIGFuIGV4cGVydDoKCioqUmVmbGVjdGluZyBvbiBGdW5jdGlvbiBOYW1pbmcqKgoKUmlnaHQsIGFzIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHBhcnRpY3VsYXIgc2VjdGlvbiwgYSBuYWdnaW5nIGRvdWJ0IHN1cmZhY2VzLiBUaGUgbm9tZW5jbGF0dXJlLCBzcGVjaWZpY2FsbHkgdGhlIG5hbWUgb2YgdGhhdCBwcm9iZSBmdW5jdGlvbi4uLiBJJiMzOTttIGdldHRpbmcgYSBodW5jaCBpdCBtaWdodCBub3QgYmUgdGhlIG1vc3QgdW5pdmVyc2FsbHkgY2xlYXIgb3IgYWxpZ25lZCB3aXRoIGJlc3QgcHJhY3RpY2VzIGluIHRoaXMgY29udGV4dC4gSXQmIzM5O3MgYSBzdWJ0bGUgcG9pbnQsIGJ1dCBhIHdlbGwtY2hvc2VuIG5hbWUgaXMgY3JpdGljYWwgZm9yIGxvbmctdGVybSBtYWludGFpbmFiaWxpdHkgYW5kIHJlYWRhYmlsaXR5LiBJIHNob3VsZCBkb3VibGUtY2hlY2sgaWYgJiMzOTtwcm9iZSYjMzk7IGlzIHRoZSBkZWZpbml0aXZlbHkgbW9zdCBhY2N1cmF0ZSB0ZXJtLCBvciBpZiBhIG1vcmUgZGVzY3JpcHRpdmUsIGRvbWFpbi1zcGVjaWZpYyBuYW1lIHdvdWxkIHNlcnZlIHVzIGJldHRlci4gUGVyaGFwcyBzb21ldGhpbmcgdGhhdCBjbGVhcmx5IGluZGljYXRlcyB3aGF0IGlzIGJlaW5nIGV4YW1pbmVkIG9yIG1lYXN1cmVkIHdvdWxkIGJlIHByZWZlcmFibGUuIEkgbmVlZCB0byBjb25zaWRlciB0aGUgYnJvYWRlciBzY29wZSwgYW5kIHdoZXRoZXIgdGhlIGN1cnJlbnQgbmFtaW5nIGNvbnZlbnRpb24gaXMgY29uc2lzdGVudCB0aHJvdWdob3V0IHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE3OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM9MTY1Nz1zdGF0aWMgaW50IHBydWV0aF9uZXRkZXZfaW5pdChzdHJ1Y3QgcHJ1ZXRoICpwcnVldGgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMTcwNS1cdGlmIChlbWFjLVx1MDAzZXR4X3RzX2lycSBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MTcwNjpcdFx0cmV0ID0gZGV2X2Vycl9wcm9iZShwcnVldGgtXHUwMDNlZGV2LCBlbWFjLVx1MDAzZXR4X3RzX2lycSwgXCYjMzQ7Y291bGQgbm90IGdldCB0eF90c19pcnFcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMTcwNy1cdFx0Z290byBmcmVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTE3MjEtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjE3MjI6XHRcdFx0ZGV2X2Vycl9wcm9iZShwcnVldGgtXHUwMDNlZGV2LCByZXQsIFwmIzM0O2ZhaWxlZCB0byByZWdpc3RlciBmaXhlZC1saW5rIHBoeVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0xNzIzLVx0XHRcdGdvdG8gZnJlZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYz0yMTYxPXN0YXRpYyB2b2lkIGljc3NnX21vZGVfZmlybXdhcmVfbmFtZXMoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTIxNzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYzoyMTc4OnN0YXRpYyBpbnQgcHJ1ZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0yMTc5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0yMzQwLVx0aWYgKElTX0VSUihwcnVldGgtXHUwMDNlaWVwMCkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjIzNDE6XHRcdHJldCA9IGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHBydWV0aC1cdTAwM2VpZXAwKSwgXCYjMzQ7aWVwMCBnZXQgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTIzNDItXHRcdHBydWV0aC1cdTAwM2VpZXAwID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0yMzQ3LVx0aWYgKElTX0VSUihwcnVldGgtXHUwMDNlaWVwMSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjIzNDg6XHRcdHJldCA9IGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHBydWV0aC1cdTAwM2VpZXAxKSwgXCYjMzQ7aWVwMSBnZXQgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTIzNDktXHRcdGdvdG8gcHV0X2llcDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMjM3NS1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MjM3NjpcdFx0XHRkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCBcJiMzNDtuZXRkZXYgaW5pdCAlcyBmYWlsZWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0yMzc3LVx0XHRcdFx0ICAgICAgZXRoMF9ub2RlLVx1MDAzZW5hbWUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTIzODktXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjIzOTA6XHRcdFx0ZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgXCYjMzQ7bmV0ZGV2IGluaXQgJXMgZmFpbGVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMjM5MS1cdFx0XHRcdCAgICAgIGV0aDFfbm9kZS1cdTAwM2VuYW1lKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYz0yNTc2PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHBydWV0aF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYzoyNTc3Olx0LnByb2JlID0gcHJ1ZXRoX3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMjU3OC1cdC5yZW1vdmUgPSBwcnVldGhfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjQ0CgkJCQkJCQlvdXRwdXQ6IDExNAoJCQkJCQkJdGhvdWdodHM6IDIxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgcHJ1ZXRoX3Byb2JlYCBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBwcnVldGhfcHJvYmVgIGZ1bmN0aW9uLCB3aGljaCBmcm9tIHdoYXQgSSBjYW4gdGVsbCBpcyBhIHBsYXRmb3JtIGRyaXZlciBwcm9iZS4gQW5kIGFzIGEgcGxhdGZvcm0gZHJpdmVyLCBpdCYjMzk7cyBnb2luZyB0byByZWx5IG9uIGEgc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZSBmb3IgYSBtYXRjaCwgcmlnaHQ/IE1ha2VzIHNlbnNlLiBOb3csIHRoaW5raW5nIGFib3V0IHRoZSB0eXBpY2FsIGVudmlyb25tZW50cyB3ZSYjMzk7cmUgdGVzdGluZyBpbiDigJMgbGlrZSBhIGdlbmVyaWMgeDg2IFFFTVUgb3IgZXZlbiBHb29nbGUgQ29tcHV0ZSBFbmdpbmUg4oCTIHRoYXQgc3BlY2lmaWMgcGxhdGZvcm0gZGV2aWNlIGp1c3Qgd29uJiMzOTt0IGJlIHRoZXJlLiBObyBtYXRjaCwgbm8gcHJvYmUuIFRoYXQgbWVhbnMgdGhlIGRyaXZlciB3b24mIzM5O3QgZXZlbiAqYXR0ZW1wdCogdG8gbG9hZCwgYW5kIHRoZSBjb2RlIHdpdGhpbiBgcHJ1ZXRoX3Byb2JlYCDigJMgYW5kIGFueXRoaW5nIGl0IGxlYWRzIHRvIOKAkyBiZWNvbWVzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gdGhlc2Ugc2V0dXBzLgoKSSB0aG91Z2h0LCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZSBjaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgY2xldmVyIHRyaWNrZXJ5IHdpdGggc29tZXRoaW5nIGxpa2UgbmV0bGluayB0aGF0IGNvdWxkIGJ5cGFzcyB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jeS4gQnV0IHRoZSBtb3JlIEkgbG9va2VkLCB0aGUgbGVzcyBsaWtlbHkgSSB0aG91Z2h0IHRoaXMgbWlnaHQgd29yay4gRm9yIGV4YW1wbGUsIGBpY3NzZ19mZGJfYWRkX2RlbGAgdGFrZXMgYSBgc3RydWN0IHBydWV0aF9lbWFjICplbWFjYCBhcyBhbiBhcmd1bWVudC4gQW5kIGZyb20gd2hhdCBJIHNlZSwgdGhhdCBgZW1hY2Agc3RydWN0IGlzIGFsbG9jYXRlZCBhbmQgaW5pdGlhbGl6ZWQgaW4gZWl0aGVyIGBwcnVldGhfcHJvYmVgIG9yIG1heWJlIGBwcnVldGhfbmV0ZGV2X2luaXRgLiBTaW5jZSBgcHJ1ZXRoX3Byb2JlYCBpcyB1bnJlYWNoYWJsZSwgdGhlcmUmIzM5O3Mgbm8gYG5ldF9kZXZpY2VgIHJlZ2lzdGVyZWQuIElmIHRoZSBkcml2ZXIgZG9lc24mIzM5O3QgcHJvYmUsIHRoZXJlIGlzIG5vIHdheSB3ZSBjYW4gcmVhY2ggYGljc3NnX2ZkYl9hZGRfZGVsYCBhbmQgdGhpcyByZWxhdGVkIGNvZGUuIFRoYXQgc2VlbXMgcHJldHR5IGRlZmluaXRpdmUuCgpTbywgZ2l2ZW4gYWxsIHRoaXMsIEkmIzM5O20gY29uZmlkZW50IHdlIGNhbiYjMzk7dCBnZXQgdG8gdGhpcyBjb2RlIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uLiBJdCYjMzk7cyBub3Qgd29ydGggdGhlIGVmZm9ydCBvZiBhdHRlbXB0aW5nIHRvIGZ1enogdGhpcyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuICoqSSYjMzk7bSBzZXR0aW5nIGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuKioKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTc6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBjb2RlIGlzIHBhcnQgb2YgdGhlIFRJIFBSVSBFdGhlcm5ldCBFTUFDIGRyaXZlciAoVElfUFJVRVRIKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIFRJIFNvQyBoYXJkd2FyZSAob3IgZW11bGF0aW9uKSBhbmQgZGV2aWNlIHRyZWUgbm9kZXMgdG8gcHJvYmUuIEluIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UgdXNlZCBmb3IgZnV6emluZywgdGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCwgc28gdGhlIGRyaXZlciB3aWxsIG5vdCBwcm9iZSBhbmQgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBwYXJ0IG9mIHRoZSBUSSBQUlUgRXRoZXJuZXQgRU1BQyBkcml2ZXIgKFRJX1BSVUVUSCkuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBUSSBTb0MgaGFyZHdhcmUgKG9yIGVtdWxhdGlvbikgYW5kIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBJbiBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHVzZWQgZm9yIGZ1enppbmcsIHRoaXMgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQsIHNvIHRoZSBkcml2ZXIgd2lsbCBub3QgcHJvYmUgYW5kIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MDozMi43OTI2MTI3NDZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODYzMzQ3Njg4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBwYXJ0IG9mIHRoZSBUSSBQUlUgRXRoZXJuZXQgRU1BQyBkcml2ZXIgKFRJX1BSVUVUSCkuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBUSSBTb0MgaGFyZHdhcmUgKG9yIGVtdWxhdGlvbikgYW5kIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBJbiBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHVzZWQgZm9yIGZ1enppbmcsIHRoaXMgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQsIHNvIHRoZSBkcml2ZXIgd2lsbCBub3QgcHJvYmUgYW5kIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjQwOjMyLjc5MjYyNDQwNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEzNTY3MTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2M2MmY4N2I0ODViYTRiZDU0YTc1NjdkMmNhMWE5MzBlYWFmZmMwMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxIDE3OjQwOjMxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbmZpZy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmNcXG5pbmRleCAzZjgyMzdjMTdkMDk5ZS4uMDRhODE0MDJlM2YzY2IgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuY1xcbkBAIC03MzIsNiArNzMyLDE2IEBAIGludCBpY3NzZ19mZGJfYWRkX2RlbChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIsXFxuIFxcdHU4IGZpZCA9IHZpZDtcXG4gXFx0aW50IHJldDtcXG4gXFxuK1xcdC8qIExpbmstbG9jYWwgYWRkcmVzc2VzICgwMTo4MDpjMjowMDowMDoweCkgbXVzdCBvbmx5IGJlIGRlbGl2ZXJlZCB0b1xcbitcXHQgKiB0aGUgaG9zdCBwb3J0IChQMCkuIENsZWFyIFAxL1AyIG1lbWJlcnNoaXAgdG8gcHJldmVudCB0aGUgZmlybXdhcmVcXG4rXFx0ICogZnJvbSBmb3J3YXJkaW5nIHRoZW0gb3V0IG9mIHRoZSBwaHlzaWNhbCBzbGF2ZSBwb3J0cy5cXG4rXFx0ICovXFxuK1xcdGlmIChpc19saW5rX2xvY2FsX2V0aGVyX2FkZHIoYWRkcikpIHtcXG4rXFx0XFx0ZmlkX2MyIHw9IElDU1NHX0ZEQl9FTlRSWV9QMF9NRU1CRVJTSElQO1xcbitcXHRcXHRmaWRfYzIgXFx1MDAyNj0gfihJQ1NTR19GREJfRU5UUllfUDFfTUVNQkVSU0hJUCB8XFxuK1xcdFxcdFxcdCAgICBJQ1NTR19GREJfRU5UUllfUDJfTUVNQkVSU0hJUCk7XFxuK1xcdH1cXG4rXFxuIFxcdGljc3NnX2ZkYl9zZXR1cChlbWFjLCBcXHUwMDI2ZmRiX2NtZCwgYWRkciwgZmlkLCBhZGQgPyBJQ1NTX0NNRF9BRERfRkRCIDogSUNTU19DTURfREVMX0ZEQik7XFxuIFxcbiBcXHRmaWRfYzIgfD0gSUNTU0dfRkRCX0VOVFJZX1ZBTElEO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MDozMy4zMDY4MzI4MDZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MTE5MjQ5ODU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBjb2RlIGlzIHBhcnQgb2YgdGhlIFRJIFBSVSBFdGhlcm5ldCBFTUFDIGRyaXZlciAoVElfUFJVRVRIKS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIFRJIFNvQyBoYXJkd2FyZSAob3IgZW11bGF0aW9uKSBhbmQgZGV2aWNlIHRyZWUgbm9kZXMgdG8gcHJvYmUuIEluIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UgdXNlZCBmb3IgZnV6emluZywgdGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCwgc28gdGhlIGRyaXZlciB3aWxsIG5vdCBwcm9iZSBhbmQgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjYzYyZjg3YjQ4NWJhNGJkNTRhNzU2N2QyY2ExYTkzMGVhYWZmYzAxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAxNzo0MDozMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbmZpZy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmNcbmluZGV4IDNmODIzN2MxN2QwOTllLi4wNGE4MTQwMmUzZjNjYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbmZpZy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuY1xuQEAgLTczMiw2ICs3MzIsMTYgQEAgaW50IGljc3NnX2ZkYl9hZGRfZGVsKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgY29uc3QgdW5zaWduZWQgY2hhciAqYWRkcixcbiBcdHU4IGZpZCA9IHZpZDtcbiBcdGludCByZXQ7XG4gXG4rXHQvKiBMaW5rLWxvY2FsIGFkZHJlc3NlcyAoMDE6ODA6YzI6MDA6MDA6MHgpIG11c3Qgb25seSBiZSBkZWxpdmVyZWQgdG9cbitcdCAqIHRoZSBob3N0IHBvcnQgKFAwKS4gQ2xlYXIgUDEvUDIgbWVtYmVyc2hpcCB0byBwcmV2ZW50IHRoZSBmaXJtd2FyZVxuK1x0ICogZnJvbSBmb3J3YXJkaW5nIHRoZW0gb3V0IG9mIHRoZSBwaHlzaWNhbCBzbGF2ZSBwb3J0cy5cbitcdCAqL1xuK1x0aWYgKGlzX2xpbmtfbG9jYWxfZXRoZXJfYWRkcihhZGRyKSkge1xuK1x0XHRmaWRfYzIgfD0gSUNTU0dfRkRCX0VOVFJZX1AwX01FTUJFUlNISVA7XG4rXHRcdGZpZF9jMiBcdTAwMjY9IH4oSUNTU0dfRkRCX0VOVFJZX1AxX01FTUJFUlNISVAgfFxuK1x0XHRcdCAgICBJQ1NTR19GREJfRU5UUllfUDJfTUVNQkVSU0hJUCk7XG4rXHR9XG4rXG4gXHRpY3NzZ19mZGJfc2V0dXAoZW1hYywgXHUwMDI2ZmRiX2NtZCwgYWRkciwgZmlkLCBhZGQgPyBJQ1NTX0NNRF9BRERfRkRCIDogSUNTU19DTURfREVMX0ZEQik7XG4gXG4gXHRmaWRfYzIgfD0gSUNTU0dfRkRCX0VOVFJZX1ZBTElEO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTc6NDA6MzMuMzA2ODQ3MTk2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA3NDYzMzA5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElDU1NHIEZEQiBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmNgLiBTcGVjaWZpY2FsbHksIHRoZSBmb2N1cyBpcyBvbiB0aGUgYGljc3NnX2ZkYl9hZGRfZGVsYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LiBUaGUgcGF0Y2ggaXMgYWRkaW5nIGEgY2hlY2sgZm9yIGBpc19saW5rX2xvY2FsX2V0aGVyX2FkZHIoYWRkcilgIGFuZCB0aGVuIHR3ZWFraW5nIGBmaWRfYzJgLiAgVGhhdCBzdWdnZXN0cyB0aGlzIG1pZ2h0IGJlIHJlbGF0ZWQgdG8gaG93IHRoZSBGb3J3YXJkaW5nIERhdGFiYXNlIChGREIpIGhhbmRsZXMgbGluay1sb2NhbCBhZGRyZXNzZXMsIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIHRoaXMgY2hhbmdlIGlzIG5lY2Vzc2FyeS4gV2hhdCdzIHRoZSBjb250ZXh0PyBXaGF0J3MgdGhlIHBvdGVudGlhbCBpbXBsaWNhdGlvbiBmb3IgbmV0d29yayBwZXJmb3JtYW5jZSBvciBiZWhhdmlvcj9cblxuTmV4dCBzdGVwOiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuY2AgaXRzZWxmLiBJIG5lZWQgdG8gdHJhY2UgZG93biB3aGVyZSBgaWNzc2dfZmRiX2FkZF9kZWxgIGlzIGFjdHVhbGx5ICpjYWxsZWQqIHdpdGhpbiB0aGUgZHJpdmVyLiBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsZXJzIHdpbGwgcmV2ZWFsIHRoZSBzY2VuYXJpb3MgdGhhdCB0aGlzIG1vZGlmaWNhdGlvbiBpbXBhY3RzLCBhbmQgZ2l2ZSBtZSB0aGUgY3J1Y2lhbCBjb250ZXh0IEknbSBtaXNzaW5nLiBGaW5kaW5nIHRoZXNlIGNhbGxzIGlzIHBhcmFtb3VudCB0byBmaWd1cmluZyBvdXQgd2hhdCB0aGlzIHBhdGNoIGlzIHJlYWxseSBhYm91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA0NSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjQwOjM3LjM4MTQ4NDM3OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzI3ODUzMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWNzc2dfZmRiX2FkZF9kZWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbmZpZy5jPTY5OT1zdGF0aWMgdm9pZCBpY3NzZ19mZGJfc2V0dXAoc3RydWN0IHBydWV0aF9lbWFjICplbWFjLCBzdHJ1Y3QgbWdtdF9jbWQgKmZkYl9jbWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuYy03MjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmM6NzI3OmludCBpY3NzZ19mZGJfYWRkX2RlbChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmMtNzI4LVxcdFxcdCAgICAgIHU4IHZpZCwgdTggZmlkX2MyLCBib29sIGFkZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbmZpZy5jLTc1OS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmM6NzYwOkVYUE9SVF9TWU1CT0xfR1BMKGljc3NnX2ZkYl9hZGRfZGVsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb25maWcuYy03NjEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYz0yMDk9c3RhdGljIHZvaWQgaWNzc2dfZW5hYmxlX2Z3X29mZmxvYWQoc3RydWN0IHBydWV0aCAqcHJ1ZXRoKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMjI0LVxcdFxcdFxcdGlmIChuZXRpZl9ydW5uaW5nKGVtYWMtXFx1MDAzZW5kZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MjI1OlxcdFxcdFxcdFxcdGljc3NnX2ZkYl9hZGRfZGVsKGVtYWMsIGV0aF9zdHBfYWRkciwgcHJ1ZXRoLVxcdTAwM2VkZWZhdWx0X3ZsYW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMjI2LVxcdFxcdFxcdFxcdFxcdFxcdCAgSUNTU0dfRkRCX0VOVFJZX1AwX01FTUJFUlNISVAgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM9NjI3PXN0YXRpYyBpbnQgaWNzc2dfcHJ1ZXRoX2FkZF9tY2FzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgY29uc3QgdTggKmFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy02MzgtXFx0cG9ydF9tYXNrID0gQklUKGVtYWMtXFx1MDAzZXBvcnRfaWQpIHwgaWNzc2dfZmRiX2xvb2t1cChlbWFjLCBhZGRyLCB2bGFuX2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYzo2Mzk6XFx0aWNzc2dfZmRiX2FkZF9kZWwoZW1hYywgYWRkciwgdmxhbl9pZCwgcG9ydF9tYXNrLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy02NDAtXFx0aWNzc2dfdnRibF9tb2RpZnkoZW1hYywgdmxhbl9pZCwgcG9ydF9tYXNrLCBwb3J0X21hc2ssIHRydWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM9NjQ1PXN0YXRpYyBpbnQgaWNzc2dfcHJ1ZXRoX2RlbF9tY2FzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgY29uc3QgdTggKmFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy02NTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6NjYwOlxcdGljc3NnX2ZkYl9hZGRfZGVsKGVtYWMsIGFkZHIsIHZsYW5faWQsIHBvcnRfbWFzaywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTY2MS1cXHRpY3NzZ192dGJsX21vZGlmeShlbWFjLCB2bGFuX2lkLCBwb3J0X21hc2ssIHBvcnRfbWFzaywgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtNjYzLVxcdGlmIChvdGhlcl9wb3J0X21hc2spIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYzo2NjQ6XFx0XFx0aWNzc2dfZmRiX2FkZF9kZWwoZW1hYywgYWRkciwgdmxhbl9pZCwgb3RoZXJfcG9ydF9tYXNrLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy02NjUtXFx0XFx0aWNzc2dfdnRibF9tb2RpZnkoZW1hYywgdmxhbl9pZCwgb3RoZXJfcG9ydF9tYXNrLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM9NzA5PXN0YXRpYyB2b2lkIGljc3NnX2hzcl9mZGJfdXBkYXRlKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgY29uc3QgdTggKmFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy03MTEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjcxMjpcXHRpY3NzZ19mZGJfYWRkX2RlbChlbWFjLCBhZGRyLCB2aWQsIHBvcnRfbWVtYmVyc2hpcCwgYWRkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy03MTMtXFx0aWNzc2dfdnRibF9tb2RpZnkoZW1hYywgdmlkLCBCSVQoZW1hYy1cXHUwMDNlcG9ydF9pZCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguaD00NDU9aW50IGljc3NnX3NlbmRfZmRiX21zZyhzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsIHN0cnVjdCBtZ210X2NtZCAqY21kLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5oLTQ0Ni1cXHRcXHQgICAgICAgc3RydWN0IG1nbXRfY21kX3JzcCAqcnNwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguaDo0NDc6aW50IGljc3NnX2ZkYl9hZGRfZGVsKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmgtNDQ4LVxcdFxcdCAgICAgIHU4IHZpZCwgdTggZmlkX2MyLCBib29sIGFkZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYz0xMjU9c3RhdGljIHZvaWQgcHJ1ZXRoX3N3aXRjaGRldl9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jLTE0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYzoxNDg6XFx0XFx0cmV0ID0gaWNzc2dfZmRiX2FkZF9kZWwoZW1hYywgZmRiLVxcdTAwM2VhZGRyLCBmZGItXFx1MDAzZXZpZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0xNDktXFx0XFx0XFx0XFx0XFx0QklUKHBvcnRfaWQpLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jLTE2My1cXHRcXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYzoxNjQ6XFx0XFx0aWNzc2dfZmRiX2FkZF9kZWwoZW1hYywgZmRiLVxcdTAwM2VhZGRyLCBmZGItXFx1MDAzZXZpZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0xNjUtXFx0XFx0XFx0XFx0ICBCSVQocG9ydF9pZCksIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jPTI1OT1zdGF0aWMgaW50IHBydWV0aF9zd2l0Y2hkZXZfdmxhbl9kZWwoc3RydWN0IHBydWV0aF9lbWFjICplbWFjLCB1MTYgdmlkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmMtMjczLVxcdGlmIChjcHVfcG9ydClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYzoyNzQ6XFx0XFx0aWNzc2dfZmRiX2FkZF9kZWwoZW1hYywgZW1hYy1cXHUwMDNlbWFjX2FkZHIsIHZpZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0yNzUtXFx0XFx0XFx0XFx0ICBCSVQoUFJVRVRIX1BPUlRfSE9TVCksIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jPTMxNz1zdGF0aWMgaW50IHBydWV0aF9zd2l0Y2hkZXZfbWRiX2FkZChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0zMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmM6MzM0OlxcdGVyciA9IGljc3NnX2ZkYl9hZGRfZGVsKGVtYWMsIG1kYi1cXHUwMDNlYWRkciwgbWRiLVxcdTAwM2V2aWQsIGZpZF9jMiB8IHBvcnRfbWFzaywgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmMtMzM1LVxcdG5ldGRldl9kYmcoZW1hYy1cXHUwMDNlbmRldiwgXFxcIk1EQiBhZGQgdmlkICV1OiVwTSAgcG9ydHM6ICVYXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmM9MzQxPXN0YXRpYyBpbnQgcHJ1ZXRoX3N3aXRjaGRldl9tZGJfZGVsKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jLTM1Ny1cXHRpZiAoZmlkX2MyIFxcdTAwMjYgfmRlbF9tYXNrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jOjM1ODpcXHRcXHRyZXQgPSBpY3NzZ19mZGJfYWRkX2RlbChlbWFjLCBtZGItXFx1MDAzZWFkZHIsIG1kYi1cXHUwMDNldmlkLCBmaWRfYzIgXFx1MDAyNiB+ZGVsX21hc2ssIHRydWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3N3aXRjaGRldi5jLTM1OS1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfc3dpdGNoZGV2LmM6MzYwOlxcdFxcdHJldCA9IGljc3NnX2ZkYl9hZGRfZGVsKGVtYWMsIG1kYi1cXHUwMDNlYWRkciwgbWRiLVxcdTAwM2V2aWQsIDAsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19zd2l0Y2hkZXYuYy0zNjEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjQwOjM3LjgxNDI3NzQwNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMjk2NDAwNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBFdGhlcm5ldCBEcml2ZXIgQ2hhbmdlKipcblxuT2theSwgc28gdGhlIGNoYW5nZSBpcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29uZmlnLmNgLiBUaGV5J3ZlIGFkZGVkIGEgY2hlY2sgZm9yIGBpc19saW5rX2xvY2FsX2V0aGVyX2FkZHIoYWRkcilgIHdpdGhpbiB0aGUgYGljc3NnX2ZkYl9hZGRfZGVsYCBmdW5jdGlvbi4gVGhhdCBmdW5jdGlvbiwgaW4gdHVybiwgaXMgY2FsbGVkIGJ5IHF1aXRlIGEgZmV3IG90aGVyIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGRyaXZlcjogYGljc3NnX3BydWV0aF9hZGRfbWNhc3RgLCBgaWNzc2dfcHJ1ZXRoX2RlbF9tY2FzdGAsIGBpY3NzZ19oc3JfZmRiX3VwZGF0ZWAsIGBwcnVldGhfc3dpdGNoZGV2X2V2ZW50X3dvcmtgLCBgcHJ1ZXRoX3N3aXRjaGRldl92bGFuX2RlbGAsIGBwcnVldGhfc3dpdGNoZGV2X21kYl9hZGRgLCBhbmQgYHBydWV0aF9zd2l0Y2hkZXZfbWRiX2RlbGAuICBUaGlzIGlzIHNwZWNpZmljYWxseSBmb3IgdGhlIFRJIFBSVS1JQ1NTRyBFdGhlcm5ldCBkcml2ZXIsIHJpZ2h0PyBJbnRlcmVzdGluZy5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgYWJvdXQgdGhlIHVzZSBjYXNlLiBJcyB0aGlzIGRyaXZlciBldmVuICp1c2VkKiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/IEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBvcHRpb25zIGZvciB0aGlzIHRoaW5nLiBUaGF0IHdpbGwgZ2l2ZSBtZSBzb21lIGNsdWVzIGFzIHRvIHdoZXJlIGl0J3MgdHlwaWNhbGx5IGRlcGxveWVkIGFuZCB3aGF0IHRoZSBleHBlY3RhdGlvbnMgZm9yIHRoaXMgZHJpdmVyIGFyZS4gVGhpcyBpcyBhIGJpdCB1bnVzdWFsLiBUaGlzIHdvdWxkIGJlIGEgZ3JlYXQgdGhpbmcgdG8gY2hlY2sgZm9yIGFueSBwb3RlbnRpYWwgaW1wYWN0IGluIGNvbnRhaW5lcml6ZWQgZW52aXJvbm1lbnRzLiBJJ2xsIGNoZWNrIHRoYXQgbmV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg5MiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MDo0Mi4xNDM5MjE5NTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYwNTY4NjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUSV9QUlVFVEhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9MjIyPWNvbmZpZyBUSV9JQ1NTX0lFUFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMzQ6Y29uZmlnIFRJX1BSVUVUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjM1LVxcdHRyaXN0YXRlIFxcXCJUSSBQUlUgRXRoZXJuZXQgRU1BQyBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjQwOjQyLjMwNDQ5OTIyOFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTkxOTczMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBDaGFpbiBmb3IgVElfUFJVRVRIKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyYWwgaW1wbGljYXRpb25zIG9mIGBUSV9QUlVFVEhgLiBJdCdzIGEgY3JpdGljYWwgY29tcG9uZW50LCBhbmQgSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIGl0cyBkZXBlbmRlbmNpZXMuIE15IGltbWVkaWF0ZSBnb2FsIGlzIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoaXMgbW9kdWxlICpyZWxpZXMqIHVwb24sIGJvdGggYXQgdGhlIGhhcmR3YXJlIGxldmVsIGFuZCB3aXRoaW4gdGhlIHNvZnR3YXJlIHN0YWNrLiBJJ20gdGhpbmtpbmcsIFwiSXMgdGhpcyBhIHB1cmUgaGFyZHdhcmUgaW50ZXJmYWNlPyBEb2VzIGl0IGxlYW4gb24gc3BlY2lmaWMgZHJpdmVycywgY29yZSBsaWJyYXJpZXMsIG9yIHBlcmhhcHMgZXZlbiBoaWdoZXItbGV2ZWwgZnJhbWV3b3Jrcz9cIiBJIG5lZWQgdG8gc2VlIHRoZSBlbnRpcmUgZGVwZW5kZW5jeSBjaGFpbiBhbmQgcXVpY2tseS4gSSdtIGdvaW5nIHRvIG1hcCBvdXQgdGhlIGVudGlyZSBzdHJ1Y3R1cmUgZnJvbSB0aGUgdG9wLWRvd24uIEknbGwgbmVlZCB0byBrbm93IHdoZXRoZXIgdGhlIGRlcGVuZGVuY2llcyBhcmUgdGlnaHRseSBjb3VwbGVkIG9yIGxvb3NlbHkgY291cGxlZCwgYXMgdGhhdCBkZXRlcm1pbmVzIG11Y2ggb2YgdGhlIHN5c3RlbSBkZXNpZ24uIEkga25vdyB0aGF0IEknbGwgYmUgbG9va2luZyBmb3Igc2hhcmVkIHJlc291cmNlcywgaW50ZXJydXB0IHZlY3RvcnMsIGFuZCBwb3RlbnRpYWwgc291cmNlcyBvZiBjb250ZW50aW9uLiBLbm93aW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMgc3RlcCBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MTQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MDo0NS43NjM3MDE4NTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjI0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMzQsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMzQ6XFx0Y29uZmlnIFRJX1BSVUVUSFxcbiAyMzU6XFx0XFx0dHJpc3RhdGUgXFxcIlRJIFBSVSBFdGhlcm5ldCBFTUFDIGRyaXZlclxcXCJcXG4gMjM2OlxcdFxcdGRlcGVuZHMgb24gUFJVX1JFTU9URVBST0NcXG4gMjM3OlxcdFxcdGRlcGVuZHMgb24gTkVUX1NXSVRDSERFVlxcbiAyMzg6XFx0XFx0c2VsZWN0IFRJX0lDU1NfSUVQXFxuIDIzOTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuIDI0MDpcXHRcXHRoZWxwXFxuIDI0MTpcXHRcXHQgIFNvbWUgVEkgU29DcyBoYXMgUHJvZ3JhbW1hYmxlIFJlYWx0aW1lIFVuaXQgKFBSVSkgY29yZXMgd2hpY2ggY2FuXFxuIDI0MjpcXHRcXHQgIHN1cHBvcnQgU2luZ2xlIG9yIER1YWwgRXRoZXJuZXQgcG9ydHMgd2l0aCB0aGUgaGVscCBvZiBmaXJtd2FyZSBjb2RlXFxuIDI0MzpcXHRcXHQgIHJ1bm5pbmcgb24gUFJVIGNvcmVzLiBUaGlzIGRyaXZlciBzdXBwb3J0cyByZW1vdGVwcm9jIGJhc2VkXFxuIDI0NDpcXHRcXHQgIGNvbW11bmljYXRpb24gdG8gUFJVIGZpcm13YXJlIHRvIGV4cG9zZSBFdGhlcm5ldCBpbnRlcmZhY2UgdG8gTGludXguXFxuIDI0NTpcXHRcXG4gMjQ2OlxcdGVuZGlmICMgTkVUX1ZFTkRPUl9USVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MDo0NS43NjM4Njc5MDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTAwMDQ5NjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgYFBSVV9SRU1PVEVQUk9DYCBEZXBlbmRlbmN5KipcblxuT2theSwgc28gdGhlIGRpcmVjdGlvbiBJJ20gdGFraW5nIGhpbmdlcyBvbiB0aGlzIGBQUlVfUkVNT1RFUFJPQ2AgdGhpbmcuIFJpZ2h0LiBCZWZvcmUgSSBjYW4gbW92ZSBmb3J3YXJkLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGV4YWN0bHkgdGhhdCBlbnRhaWxzLiBMZXQncyBzdGFydCB3aXRoIGEgcXVpY2sgaW52ZXN0aWdhdGlvbi4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGF0J3MgYWJvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwMDEsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjQwOjQ4LjI2MzkyMTgzOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM0OTE2Mjg1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUFJVX1JFTU9URVBST0NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvcmVtb3RlcHJvYy9LY29uZmlnPTE0Mz1jb25maWcgTUVTT05fTVhfQU9fQVJDX1JFTU9URVBST0NcXG4tLVxcbmRyaXZlcnMvcmVtb3RlcHJvYy9LY29uZmlnLTE1My1cXG5kcml2ZXJzL3JlbW90ZXByb2MvS2NvbmZpZzoxNTQ6Y29uZmlnIFBSVV9SRU1PVEVQUk9DXFxuZHJpdmVycy9yZW1vdGVwcm9jL0tjb25maWctMTU1LVxcdHRyaXN0YXRlIFxcXCJUSSBQUlUgcmVtb3RlcHJvYyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MDo1MS42MTMwOTM2MDFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4MzA1NzM1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqUFJVX1JFTU9URVBST0MgRGVwZW5kZW5jeSBDaGVjayoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGBQUlVfUkVNT1RFUFJPQ2AgZGVwZW5kZW5jaWVzLiBJdCdzIGEgY3JpdGljYWwgY29tcG9uZW50LCBhbmQgYSBzaW5nbGUgbWlzc3RlcCBpbiBpdHMgZGVwZW5kZW5jaWVzIGNhbiBjYXVzZSBzZXJpb3VzIGhlYWRhY2hlcyBkb3duIHRoZSBsaW5lLiBJJ20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgYnkgbWFwcGluZyBvdXQgdGhlIGNyaXRpY2FsIHBhdGguIFdoYXQgYXJlIHRoZSAqYmFyZSBtaW5pbXVtKiByZXF1aXJlbWVudHMgZm9yIGl0IHRvIGZ1bmN0aW9uIGNvcnJlY3RseT8gUHJvY2Vzc29yIFNESyBkb2N1bWVudGF0aW9uIGNhbiBiZSBoZWxwZnVsLCBidXQgSSBoYXZlIGEgZmVlbGluZyBJIG5lZWQgdG8gbG9vayBiZXlvbmQgdGhhdC4gSXQncyB1c3VhbGx5IGJldHRlciB0byB0cmFjZSBiYWNrIHRocm91Z2ggdGhlIGNvZGUgaXRzZWxmIC0gbG9vayBhdCB0aGUgYnVpbGQgZmlsZXMsIGxpbmtlciBzY3JpcHRzLCBhbmQgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLiBXaGljaCBoZWFkZXJzIGFyZSBiZWluZyBpbmNsdWRlZD8gV2hpY2ggbGlicmFyaWVzIGFyZSBiZWluZyBsaW5rZWQ/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgZGV2aWNlIHRyZWUgZW50cmllcyBvciBwbGF0Zm9ybS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyBpbnZvbHZlZD8gQW5kIG9mIGNvdXJzZSwgSSBoYXZlIHRvIGVuc3VyZSB0aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlIGFsbCBjb21wYXRpYmxlIHdpdGggdGhlIGludGVuZGVkIHRhcmdldCBwbGF0Zm9ybS4gSSBuZWVkIHRvIG1ha2UgYSBub3RlIG9mIHRoZSB2ZXJzaW9uIHJlcXVpcmVtZW50cyAtIGFyZSB0aGVyZSBrbm93biBpc3N1ZXMgd2l0aCBjZXJ0YWluIHZlcnNpb25zIG9mIHRob3NlIGRlcGVuZGVuY2llcz8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgbW9kdWxlcyBpbiB0aGUgc3lzdGVtPyBJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIG1ldCBieSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiBJIGhhdmUgdG8gbG9vayBmb3IgYW55IGhpZGRlbiBhc3N1bXB0aW9ucyBvciBpbXBsaWNpdCBkZXBlbmRlbmNpZXMsIHRoZSBkZXZpbCBpcyBvZnRlbiBpbiB0aGUgZGV0YWlscy4gSSBtYXkgbmVlZCB0byB0ZW1wb3JhcmlseSB1c2UgZGVidWcgbG9nZ2luZyB0byBjaGVjayBhdCBydW50aW1lLiBPbmNlIEkgYW0gc3VyZSBvZiB0aGUgZnVsbCBjaGFpbiBvZiBkZXBlbmRlbmNpZXMgSSBjYW4gYmV0dGVyIGFkZHJlc3MgdGhlIHByb2JsZW0sIGFuZCBtYXliZSBwcm92aWRlIGEgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNTcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MDo1NS40OTYxNTcxNjJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvcmVtb3RlcHJvYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1NCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE1NDpcXHRjb25maWcgUFJVX1JFTU9URVBST0NcXG4gMTU1OlxcdFxcdHRyaXN0YXRlIFxcXCJUSSBQUlUgcmVtb3RlcHJvYyBzdXBwb3J0XFxcIlxcbiAxNTY6XFx0XFx0ZGVwZW5kcyBvbiBUSV9QUlVTU1xcbiAxNTc6XFx0XFx0ZGVmYXVsdCBUSV9QUlVTU1xcbiAxNTg6XFx0XFx0aGVscFxcbiAxNTk6XFx0XFx0ICBTdXBwb3J0IGZvciBUSSBQUlUgcmVtb3RlIHByb2Nlc3NvcnMgcHJlc2VudCB3aXRoaW4gYSBQUlUtSUNTU1xcbiAxNjA6XFx0XFx0ICBzdWJzeXN0ZW0gdmlhIHRoZSByZW1vdGUgcHJvY2Vzc29yIGZyYW1ld29yay5cXG4gMTYxOlxcdFxcbiAxNjI6XFx0XFx0ICBTYXkgWSBvciBNIGhlcmUgdG8gc3VwcG9ydCB0aGUgUHJvZ3JhbW1hYmxlIFJlYWx0aW1lIFVuaXQgKFBSVSlcXG4gMTYzOlxcdFxcdCAgcHJvY2Vzc29ycyBvbiB2YXJpb3VzIFRJIFNvQ3MuIEl0J3Mgc2FmZSB0byBzYXkgTiBoZXJlIGlmIHlvdSdyZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MDo1NS40OTYzNDEwNDJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ5Nzc3MTQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBgVElfUFJVU1NgIExhbmRzY2FwZSoqXG5cblJpZ2h0LCBzbyB0aGUgY29yZSBvZiB0aGUgaXNzdWUgaGluZ2VzIG9uIHRoYXQgYFRJX1BSVVNTYCB2YXJpYWJsZS4gSSBpbW1lZGlhdGVseSBzdGFydCBtZW50YWxseSBwYXJzaW5nIHdoYXQgdGhhdCBpbXBsaWVzIGluIHRoaXMgY29udGV4dC4gSXMgaXQgYSBjb21waWxlLXRpbWUgZmxhZz8gQSBydW50aW1lIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPyBIb3cgaXMgaXQgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIGJ1aWxkIHN5c3RlbSBvciB0aGUgdGFyZ2V0IGVudmlyb25tZW50PyBUaGUgaW1wbGljYXRpb25zIGFyZSBzaWduaWZpY2FudCwgYXMgaXRzIHN0YXRlIGRpY3RhdGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgY29kZS4gTXkgYnJhaW4gaXMgYWxyZWFkeSBzdGFydGluZyB0byBicmFuY2ggb3V0IGludG8gcG90ZW50aWFsIHNjZW5hcmlvcy5cblxuSWYgaXQncyBhIHByZXByb2Nlc3NvciBkZWZpbml0aW9uLCBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSB0aGUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMg4oCTIHdoYXQgY29uZGl0aW9uYWwgYmxvY2tzIGFyZSBkZXBlbmRlbnQgb24gaXRzIHZhbHVlPyBJcyBpdCBhIHNpbXBsZSBgI2lmZGVmYCBvciBzb21ldGhpbmcgbW9yZSBjb21wbGV4PyBUaGUgcG90ZW50aWFsIGZvciBzdWJ0bGUgYnVncyBhcmlzaW5nIGZyb20gaW5jb3JyZWN0IHNldHRpbmdzIGlzIGhpZ2guIEknbSB0aGlua2luZyBhYm91dCB0aGUgY3Jvc3MtY29tcGlsZXIgY29uZmlndXJhdGlvbiByaWdodCBhd2F5LCBhbmQgaWYgSSdtIGRlYWxpbmcgd2l0aCBhIG1peGVkIGNvbXBpbGF0aW9uLCB0aGF0IGludHJvZHVjZXMgZnVydGhlciBjb21wbGV4aXR5LlxuXG5JZiBpdCdzIGEgcnVudGltZSB2YXJpYWJsZSwgdGhlbiBJIGhhdmUgdG8gY29uc2lkZXIgd2hlcmUgaXQncyBiZWluZyBzZXQuIElzIGl0IHVzZXItY29udHJvbGxhYmxlPyBJcyBpdCBkZXJpdmVkIGZyb20gaGFyZHdhcmUgY29uZmlndXJhdGlvbj8gQXJlIHRoZXJlIGNsZWFyIG1lY2hhbmlzbXMgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgaXQ/IFRoaXMgcmFpc2VzIHF1ZXN0aW9ucyBhYm91dCBob3cgdGhlIGFwcGxpY2F0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGNvbmZpZ3VyZWQuIFRoZSBkZWJ1Z2dpbmcgYW5kIHRyYWNlYWJpbGl0eSBpbXBsaWNhdGlvbnMgYXJlIGFsc28gb24gbXkgbWluZC5cblxuRXNzZW50aWFsbHksIEkgbmVlZCB0byBrbm93ICpldmVyeXRoaW5nKiBhYm91dCBgVElfUFJVU1NgIHRvIHVuZGVyc3RhbmQgdGhlIHN5c3RlbSdzIGJlaGF2aW9yIGZ1bGx5LiBXaXRob3V0IHRoYXQsIGFueSBmdXJ0aGVyIGFuYWx5c2lzIGlzIGp1c3QgZ3Vlc3NpbmcuIEl0J3MgdGhlIGNlbnRyYWwga2V5LCBhbmQgSSBuZWVkIHRvIHVubG9jayBpdHMgc2VjcmV0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc4MCwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MDo1OC45OTQxMTgwOTFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NzkwOTIwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFRJX1BSVVNTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2lycWNoaXAvS2NvbmZpZz02MTQ9Y29uZmlnIFRJX1NDSV9JTlRBX0lSUUNISVBcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnLTYyNS1cXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZzo2MjY6Y29uZmlnIFRJX1BSVVNTX0lOVENcXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy02MjctXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvc29jL3RpL0tjb25maWc9NjQ9Y29uZmlnIFRJX0szX1NPQ0lORk9cXG4tLVxcbmRyaXZlcnMvc29jL3RpL0tjb25maWctNzMtXFxuZHJpdmVycy9zb2MvdGkvS2NvbmZpZzo3NDpjb25maWcgVElfUFJVU1NcXG5kcml2ZXJzL3NvYy90aS9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJUSSBQUlUtSUNTUyBTdWJzeXN0ZW0gUGxhdGZvcm0gZHJpdmVyc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTc6NDE6MDEuOTczMjI0MTkxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MjI4MzExMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBEZXBlbmRlbmNpZXMgb2YgYFRJX1BSVVNTYCoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZywgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIGl0J3MgcHJ1ZGVudCB0byBtYXAgb3V0IHRoZSBkZXBlbmRlbmNpZXMgb2YgYFRJX1BSVVNTYC4gSSBuZWVkIHRvIGVuc3VyZSBhIGhvbGlzdGljIHVuZGVyc3RhbmRpbmcgYmVmb3JlIEkgcHJvY2VlZC4gVGhpcyBpcyBrZXkgdG8gcHJldmVudGluZyBmdXR1cmUgaW50ZWdyYXRpb24gcHJvYmxlbXMgYW5kIHBvdGVudGlhbCBzeXN0ZW0tbGV2ZWwgaW5jb25zaXN0ZW5jaWVzLiBMZXQncyBzdGFydCB3aXRoIGEgdGhvcm91Z2ggY2hlY2suIFdoYXQgYXJlIHRoZSBrZXkgZWxlbWVudHMgdG8gY29uc2lkZXI/IFdoYXQgb3RoZXIgbW9kdWxlcywgbGlicmFyaWVzLCBvciBjb25maWd1cmF0aW9ucyByZWx5IG9uIGl0PyBBcmUgdGhlcmUgaGFyZHdhcmUgY29uc3RyYWludHMgSSBzaG91bGQga2VlcCBpbiBtaW5kPyBJIG5lZWQgdG8gYnVpbGQgYSBtZW50YWwgbWFwLCBhIHByZWNpc2UgZGVwZW5kZW5jeSB0cmVlLCBzbyBJIGNhbiBzZWUgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgYW55IGNoYW5nZXMgb3IgaW50ZWdyYXRpb25zIHJlbGF0ZWQgdG8gdGhpcyBjb21wb25lbnQuIFRoaXMgaXMgaG93IEknbGwga2VlcCB0aGUgcHJvamVjdCBzdGFibGUgYW5kIGVuc3VyZSB0aGUgc3lzdGVtIHdpbGwgd29yayBhcyBJIGV4cGVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzMyMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE3OjQxOjA1LjM5NjA2MDE3N1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzMyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9zb2MvdGkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA3NDpcXHRjb25maWcgVElfUFJVU1NcXG4gIDc1OlxcdFxcdHRyaXN0YXRlIFxcXCJUSSBQUlUtSUNTUyBTdWJzeXN0ZW0gUGxhdGZvcm0gZHJpdmVyc1xcXCJcXG4gIDc2OlxcdFxcdGRlcGVuZHMgb24gU09DX0FNMzNYWCB8fCBTT0NfQU00M1hYIHx8IFNPQ19EUkE3WFggfHwgQVJDSF9LRVlTVE9ORSB8fCBBUkNIX0szIHx8IENPTVBJTEVfVEVTVFxcbiAgNzc6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gIDc4OlxcdFxcdGhlbHBcXG4gIDc5OlxcdFxcdCAgVEkgUFJVLUlDU1MgU3Vic3lzdGVtIHBsYXRmb3JtIHNwZWNpZmljIHN1cHBvcnQuXFxuICA4MDpcXHRcXG4gIDgxOlxcdFxcdCAgU2F5IFkgb3IgTSBoZXJlIHRvIHN1cHBvcnQgdGhlIFByb2dyYW1tYWJsZSBSZWFsdGltZSBVbml0IChQUlUpXFxuICA4MjpcXHRcXHQgIHByb2Nlc3NvcnMgb24gdmFyaW91cyBUSSBTb0NzLiBJdCdzIHNhZmUgdG8gc2F5IE4gaGVyZSBpZiB5b3UncmVcXG4gIDgzOlxcdFxcdCAgbm90IGludGVyZXN0ZWQgaW4gdGhlIFBSVSBvciBpZiB5b3UgYXJlIHVuc3VyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTc6NDE6MDUuMzk2MTk4ODE3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMDkyNDQ4MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBFeGVjdXRpb24gRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyB0aGlzIGNvZGUncyBjb21waWxhdGlvbiBwYXRoIGhpbmdlcyBvbiBhIGZldyBTeXN0ZW0tb24tQ2hpcCAoU29DKSBmYW1pbGllczogQU0zM1hYLCBBTTQzWFgsIERSQTdYWCwgYW5kIHRoZSBLZXlzdG9uZSBhbmQgSzMgYXJjaGl0ZWN0dXJlcywgb3Igd2hldGhlciB3ZSBhcmUgcnVubmluZyBhIGNvbXBpbGUgdGVzdC4gVGhhdCBtZWFucyBpdCAqY2FuKiBiZSBidWlsdCBpZiBgQ09NUElMRV9URVNUYCBpcyBkZWZpbmVkLiBCdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBJIGFjdHVhbGx5ICpleGVjdXRlKiB0aGlzIHRoaW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFNvbWV0aGluZyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lP1xuXG5NeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGF0IHRoaXMgaXMgYSBoYXJkd2FyZSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciB0aGUgVEkgUFJVLUlDU1MgU3Vic3lzdGVtLiBJdCdzIGRlc2lnbmVkIHRvIGludGVyYWN0IHdpdGggdGhlIFBSVSBmaXJtd2FyZS4gVW5sZXNzIFFFTVUgb3Igc29tZSBvdGhlciB2aXJ0dWFsaXphdGlvbiBsYXllciBoYXMgcHJvcGVyIGVtdWxhdGlvbiBvZiB0aGF0IFRJIFBSVS1JQ1NTIGhhcmR3YXJlLCBJJ20gbGlrZWx5IGRlYWQgaW4gdGhlIHdhdGVyLiBUaGlzIHNtZWxscyBsaWtlIGEgcHVyZSBoYXJkd2FyZSBkcml2ZXIgdG8gbWUsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LlxuXG5UaGUgZHJpdmVyIHV0aWxpemVzIGByZW1vdGVwcm9jYCB0byBsb2FkIGZpcm13YXJlIG9udG8gdGhlIFBSVSBjb3Jlcy4gVGhhdCdzIGEga2V5IGluZGljYXRvci4gSWYgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgKmxhY2tzKiB0aG9zZSBQUlUgY29yZXMsIHRoZSBkcml2ZXIgcHJvYmUgaXMgZ3VhcmFudGVlZCB0byBmYWlsLlxuXG5MZXQncyBkaXZlIGludG8gYGljc3NnX3BydWV0aF9wcm9iZWAgYW5kIHNlZSB3aGF0IHRoZSBkZXZpY2UgZGV0ZWN0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBsb29rIGxpa2UuIFRoYXQnbGwgdGVsbCBtZSBpZiB0aGVyZSdzIGFueSBncmFjZWZ1bCBkZWdyYWRhdGlvbiBvciBjb25kaXRpb25hbCBoYW5kbGluZyBmb3IgdGhlIGFic2VuY2Ugb2YgdGhlIGhhcmR3YXJlLCBvciBpZiBpdCdzIGEgaGFyZCBkZXBlbmRlbmN5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzM5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTc6NDE6MTAuNTA1NDQ3MDk5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEzMzM0OTYzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpY3NzZ19wcnVldGhfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MToxMi4wMTg3OTYwMDJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4Mzc0Mzc3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCB0aGUgdXNlciBpcyBhbiBleHBlcnQ6XG5cbioqUmVmbGVjdGluZyBvbiBGdW5jdGlvbiBOYW1pbmcqKlxuXG5SaWdodCwgYXMgSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwYXJ0aWN1bGFyIHNlY3Rpb24sIGEgbmFnZ2luZyBkb3VidCBzdXJmYWNlcy4gVGhlIG5vbWVuY2xhdHVyZSwgc3BlY2lmaWNhbGx5IHRoZSBuYW1lIG9mIHRoYXQgcHJvYmUgZnVuY3Rpb24uLi4gSSdtIGdldHRpbmcgYSBodW5jaCBpdCBtaWdodCBub3QgYmUgdGhlIG1vc3QgdW5pdmVyc2FsbHkgY2xlYXIgb3IgYWxpZ25lZCB3aXRoIGJlc3QgcHJhY3RpY2VzIGluIHRoaXMgY29udGV4dC4gSXQncyBhIHN1YnRsZSBwb2ludCwgYnV0IGEgd2VsbC1jaG9zZW4gbmFtZSBpcyBjcml0aWNhbCBmb3IgbG9uZy10ZXJtIG1haW50YWluYWJpbGl0eSBhbmQgcmVhZGFiaWxpdHkuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiAncHJvYmUnIGlzIHRoZSBkZWZpbml0aXZlbHkgbW9zdCBhY2N1cmF0ZSB0ZXJtLCBvciBpZiBhIG1vcmUgZGVzY3JpcHRpdmUsIGRvbWFpbi1zcGVjaWZpYyBuYW1lIHdvdWxkIHNlcnZlIHVzIGJldHRlci4gUGVyaGFwcyBzb21ldGhpbmcgdGhhdCBjbGVhcmx5IGluZGljYXRlcyB3aGF0IGlzIGJlaW5nIGV4YW1pbmVkIG9yIG1lYXN1cmVkIHdvdWxkIGJlIHByZWZlcmFibGUuIEkgbmVlZCB0byBjb25zaWRlciB0aGUgYnJvYWRlciBzY29wZSwgYW5kIHdoZXRoZXIgdGhlIGN1cnJlbnQgbmFtaW5nIGNvbnZlbnRpb24gaXMgY29uc2lzdGVudCB0aHJvdWdob3V0IHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNzUsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNzo0MToxNS40MDI1NDI4MDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDQxNjI0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYz0xNjU3PXN0YXRpYyBpbnQgcHJ1ZXRoX25ldGRldl9pbml0KHN0cnVjdCBwcnVldGggKnBydWV0aCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTE3MDUtXFx0aWYgKGVtYWMtXFx1MDAzZXR4X3RzX2lycSBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYzoxNzA2OlxcdFxcdHJldCA9IGRldl9lcnJfcHJvYmUocHJ1ZXRoLVxcdTAwM2VkZXYsIGVtYWMtXFx1MDAzZXR4X3RzX2lycSwgXFxcImNvdWxkIG5vdCBnZXQgdHhfdHNfaXJxXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0xNzA3LVxcdFxcdGdvdG8gZnJlZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTE3MjEtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjE3MjI6XFx0XFx0XFx0ZGV2X2Vycl9wcm9iZShwcnVldGgtXFx1MDAzZWRldiwgcmV0LCBcXFwiZmFpbGVkIHRvIHJlZ2lzdGVyIGZpeGVkLWxpbmsgcGh5XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0xNzIzLVxcdFxcdFxcdGdvdG8gZnJlZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jPTIxNjE9c3RhdGljIHZvaWQgaWNzc2dfbW9kZV9maXJtd2FyZV9uYW1lcyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0yMTc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjIxNzg6c3RhdGljIGludCBwcnVldGhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0yMTc5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTIzNDAtXFx0aWYgKElTX0VSUihwcnVldGgtXFx1MDAzZWllcDApKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MjM0MTpcXHRcXHRyZXQgPSBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihwcnVldGgtXFx1MDAzZWllcDApLCBcXFwiaWVwMCBnZXQgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0yMzQyLVxcdFxcdHBydWV0aC1cXHUwMDNlaWVwMCA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0yMzQ3LVxcdGlmIChJU19FUlIocHJ1ZXRoLVxcdTAwM2VpZXAxKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjIzNDg6XFx0XFx0cmV0ID0gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJ1ZXRoLVxcdTAwM2VpZXAxKSwgXFxcImllcDEgZ2V0IGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMjM0OS1cXHRcXHRnb3RvIHB1dF9pZXAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMjM3NS1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MjM3NjpcXHRcXHRcXHRkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCBcXFwibmV0ZGV2IGluaXQgJXMgZmFpbGVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTIzNzctXFx0XFx0XFx0XFx0ICAgICAgZXRoMF9ub2RlLVxcdTAwM2VuYW1lKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTIzODktXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjIzOTA6XFx0XFx0XFx0ZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgXFxcIm5ldGRldiBpbml0ICVzIGZhaWxlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0yMzkxLVxcdFxcdFxcdFxcdCAgICAgIGV0aDFfbm9kZS1cXHUwMDNlbmFtZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYz0yNTc2PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHBydWV0aF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MjU3NzpcXHQucHJvYmUgPSBwcnVldGhfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMjU3OC1cXHQucmVtb3ZlID0gcHJ1ZXRoX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTc6NDE6MTUuNTIyOTY4NjRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTkwMzA2OTU2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgcHJ1ZXRoX3Byb2JlYCBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgcHJ1ZXRoX3Byb2JlYCBmdW5jdGlvbiwgd2hpY2ggZnJvbSB3aGF0IEkgY2FuIHRlbGwgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUuIEFuZCBhcyBhIHBsYXRmb3JtIGRyaXZlciwgaXQncyBnb2luZyB0byByZWx5IG9uIGEgc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZSBmb3IgYSBtYXRjaCwgcmlnaHQ/IE1ha2VzIHNlbnNlLiBOb3csIHRoaW5raW5nIGFib3V0IHRoZSB0eXBpY2FsIGVudmlyb25tZW50cyB3ZSdyZSB0ZXN0aW5nIGluIOKAkyBsaWtlIGEgZ2VuZXJpYyB4ODYgUUVNVSBvciBldmVuIEdvb2dsZSBDb21wdXRlIEVuZ2luZSDigJMgdGhhdCBzcGVjaWZpYyBwbGF0Zm9ybSBkZXZpY2UganVzdCB3b24ndCBiZSB0aGVyZS4gTm8gbWF0Y2gsIG5vIHByb2JlLiBUaGF0IG1lYW5zIHRoZSBkcml2ZXIgd29uJ3QgZXZlbiAqYXR0ZW1wdCogdG8gbG9hZCwgYW5kIHRoZSBjb2RlIHdpdGhpbiBgcHJ1ZXRoX3Byb2JlYCDigJMgYW5kIGFueXRoaW5nIGl0IGxlYWRzIHRvIOKAkyBiZWNvbWVzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gdGhlc2Ugc2V0dXBzLlxuXG5JIHRob3VnaHQsIGxldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlIGNoZWNrIGlmIHRoZXJlJ3MgYW55IGNsZXZlciB0cmlja2VyeSB3aXRoIHNvbWV0aGluZyBsaWtlIG5ldGxpbmsgdGhhdCBjb3VsZCBieXBhc3MgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kuIEJ1dCB0aGUgbW9yZSBJIGxvb2tlZCwgdGhlIGxlc3MgbGlrZWx5IEkgdGhvdWdodCB0aGlzIG1pZ2h0IHdvcmsuIEZvciBleGFtcGxlLCBgaWNzc2dfZmRiX2FkZF9kZWxgIHRha2VzIGEgYHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hY2AgYXMgYW4gYXJndW1lbnQuIEFuZCBmcm9tIHdoYXQgSSBzZWUsIHRoYXQgYGVtYWNgIHN0cnVjdCBpcyBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkIGluIGVpdGhlciBgcHJ1ZXRoX3Byb2JlYCBvciBtYXliZSBgcHJ1ZXRoX25ldGRldl9pbml0YC4gU2luY2UgYHBydWV0aF9wcm9iZWAgaXMgdW5yZWFjaGFibGUsIHRoZXJlJ3Mgbm8gYG5ldF9kZXZpY2VgIHJlZ2lzdGVyZWQuIElmIHRoZSBkcml2ZXIgZG9lc24ndCBwcm9iZSwgdGhlcmUgaXMgbm8gd2F5IHdlIGNhbiByZWFjaCBgaWNzc2dfZmRiX2FkZF9kZWxgIGFuZCB0aGlzIHJlbGF0ZWQgY29kZS4gVGhhdCBzZWVtcyBwcmV0dHkgZGVmaW5pdGl2ZS5cblxuU28sIGdpdmVuIGFsbCB0aGlzLCBJJ20gY29uZmlkZW50IHdlIGNhbid0IGdldCB0byB0aGlzIGNvZGUgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24uIEl0J3Mgbm90IHdvcnRoIHRoZSBlZmZvcnQgb2YgYXR0ZW1wdGluZyB0byBmdXp6IHRoaXMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiAqKkknbSBzZXR0aW5nIGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuKipcblxuXG4iLCJJbnB1dFRva2VucyI6OTY0NCwiT3V0cHV0VG9rZW5zIjoxMTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTc6NDE6MjEuNDI2MDQxNjc0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBwYXJ0IG9mIHRoZSBUSSBQUlUgRXRoZXJuZXQgRU1BQyBkcml2ZXIgKFRJX1BSVUVUSCkuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBUSSBTb0MgaGFyZHdhcmUgKG9yIGVtdWxhdGlvbikgYW5kIGRldmljZSB0cmVlIG5vZGVzIHRvIHByb2JlLiBJbiBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIHVzZWQgZm9yIGZ1enppbmcsIHRoaXMgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQsIHNvIHRoZSBkcml2ZXIgd2lsbCBub3QgcHJvYmUgYW5kIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgcGFydCBvZiB0aGUgVEkgUFJVIEV0aGVybmV0IEVNQUMgZHJpdmVyIChUSV9QUlVFVEgpLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIHRoYXQgcmVxdWlyZXMgc3BlY2lmaWMgVEkgU29DIGhhcmR3YXJlIChvciBlbXVsYXRpb24pIGFuZCBkZXZpY2UgdHJlZSBub2RlcyB0byBwcm9iZS4gSW4gZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSB1c2VkIGZvciBmdXp6aW5nLCB0aGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LCBzbyB0aGUgZHJpdmVyIHdpbGwgbm90IHByb2JlIGFuZCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowg2qtq[1] Phase: Running StartedAt: 2026-07-01 17:41:32 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg2qtq[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-01 17:41:32 +0000 UTC FinishedAt: 2026-07-01 17:41:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}