Name: series-workflowq6kxg Phase: Failed StartedAt: 2026-09-05 17:03:40 +0000 UTC FinishedAt: 2026-09-05 17:06:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq6kxg[0] Phase: Succeeded StartedAt: 2026-09-05 17:03:40 +0000 UTC FinishedAt: 2026-09-05 17:06:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq6kxg[0].run-triage Phase: Succeeded StartedAt: 2026-09-05 17:03:40 +0000 UTC FinishedAt: 2026-09-05 17:06: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+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgVVNCIGRldmljZSBJRCBlbnRyeSAoQ29tcGFsIEVYQy1UMSwgVklEOlBJRCAweDA0Yjc6MHg0ZDIyKSB0byB0aGUgc3RhdGljIHByb2R1Y3RzW10gdGFibGUgaW4gZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMuIEl0IGRvZXMgbm90IGFkZCBvciBhbHRlciBhbnkgZXhlY3V0YWJsZSBjb2RlIG9yIGRyaXZlciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1YTI2YTAyNjE4ZTQ0NzJhMjZjZjA1ZmU4Y2Y0NDFhMDQ0ZDMwNDM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAxNzowNTo1MyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYyBiL2RyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jXG5pbmRleCBmZGZkY2YyNGRkY2Y4Li5iYjk0OTMwMDY2MThmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jXG5AQCAtMTQ0Niw2ICYjNDM7MTQ0Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBwcm9kdWN0c1tdID0ge1xuIFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmM3YywgMHgwMzE2LCAzKX0sXHQvKiBRdWVjdGVsIFJHMjU1QyAqL1xuIFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmNiNywgMHgwMTA0LCA0KX0sXHQvKiBGaWJvY29tIE5MNjc4IHNlcmllcyAqL1xuIFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmNiNywgMHgwMTEyLCAwKX0sXHQvKiBGaWJvY29tIEZHMTMyICovXG4mIzQzO1x0e1FNSV9GSVhFRF9JTlRGKDB4MDRiNywgMHg0ZDIyLCA1KX0sXHQvKiBDb21wYWwgRVhDLVQxICovXG4gXHR7UU1JX1FVSVJLX1NFVF9EVFIoMHgwNGI3LCAweDgyMTcsIDgpfSxcdC8qIENvbXBhbCBFWE0tRzF4ICovXG4gXHR7UU1JX0ZJWEVEX0lOVEYoMHgwNDg5LCAweGUwYjQsIDApfSxcdC8qIEZveGNvbm4gVDc3Vzk2OCBMVEUgKi9cbiBcdHtRTUlfRklYRURfSU5URigweDA0ODksIDB4ZTBiNSwgMCl9LFx0LyogRm94Y29ubiBUNzdXOTY4IExURSB3aXRoIGVTSU0gc3VwcG9ydCovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgVVNCIGRldmljZSBJRCBlbnRyeSAoQ29tcGFsIEVYQy1UMSwgVklEOlBJRCAweDA0Yjc6MHg0ZDIyKSB0byB0aGUgc3RhdGljIHByb2R1Y3RzW10gdGFibGUgaW4gZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMuIEl0IGRvZXMgbm90IGFkZCBvciBhbHRlciBhbnkgZXhlY3V0YWJsZSBjb2RlIG9yIGRyaXZlciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1YTI2YTAyNjE4ZTQ0NzJhMjZjZjA1ZmU4Y2Y0NDFhMDQ0ZDMwNDM0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBTZXAgNSAxNzowNTo1MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jIGIvZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMKaW5kZXggZmRmZGNmMjRkZGNmOC4uYmI5NDkzMDA2NjE4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMKQEAgLTE0NDYsNiAmIzQzOzE0NDYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgcHJvZHVjdHNbXSA9IHsKIAl7UU1JX1FVSVJLX1NFVF9EVFIoMHgyYzdjLCAweDAzMTYsIDMpfSwJLyogUXVlY3RlbCBSRzI1NUMgKi8KIAl7UU1JX1FVSVJLX1NFVF9EVFIoMHgyY2I3LCAweDAxMDQsIDQpfSwJLyogRmlib2NvbSBOTDY3OCBzZXJpZXMgKi8KIAl7UU1JX1FVSVJLX1NFVF9EVFIoMHgyY2I3LCAweDAxMTIsIDApfSwJLyogRmlib2NvbSBGRzEzMiAqLwomIzQzOwl7UU1JX0ZJWEVEX0lOVEYoMHgwNGI3LCAweDRkMjIsIDUpfSwJLyogQ29tcGFsIEVYQy1UMSAqLwogCXtRTUlfUVVJUktfU0VUX0RUUigweDA0YjcsIDB4ODIxNywgOCl9LAkvKiBDb21wYWwgRVhNLUcxeCAqLwogCXtRTUlfRklYRURfSU5URigweDA0ODksIDB4ZTBiNCwgMCl9LAkvKiBGb3hjb25uIFQ3N1c5NjggTFRFICovCiAJe1FNSV9GSVhFRF9JTlRGKDB4MDQ4OSwgMHhlMGI1LCAwKX0sCS8qIEZveGNvbm4gVDc3Vzk2OCBMVEUgd2l0aCBlU0lNIHN1cHBvcnQqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDk0CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFFNSSBXV0FOIERyaXZlciBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgZGlmZiBjbGVhcmx5IHNob3dzIGEgc3RyYWlnaHRmb3J3YXJkIGFkZGl0aW9uIHRvIHRoZSBVU0IgZGV2aWNlIElEIHRhYmxlIHdpdGhpbiB0aGUgYHFtaV93d2FuLmNgIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBpbnRyb2R1Y2luZyBhIG5ldyBlbnRyeSwgYFFNSV9GSVhFRF9JTlRGKDB4MDRiNywgMHg0ZDIyLCA1KWAsIHRvIHRoZSBgcHJvZHVjdHNbXWAgYXJyYXkuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhlIGluY2x1c2lvbiBvZiBzdXBwb3J0IGZvciBhIG5ldyBwaWVjZSBvZiBoYXJkd2FyZSwgYSBDb21wYWwgRVhDLVQxLCB3aGljaCBpcyBnb29kLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBxdWlja2x5LiBJJiMzOTtsbCBwcm9iYWJseSBmaXJlIHVwIGEgYHJlYWQtZmlsZWAgY29tbWFuZCBvciBgZ3JlcHBlcmAgdG8gZXhhbWluZSB0aGUgY29udGV4dCBhcm91bmQgdGhpcyBhcnJheSBpbiB0aGUgc291cmNlIGZpbGUuIEl0IHdvdWxkIGJlIGdvb2QgdG8gc2VlIGlmIHRoZSBkZXZpY2UgSUQgaXMgYXNzaWduZWQgdG8gdGhlIGRyaXZlciBhcyBleHBlY3RlZC4gSWYgc28sIHRoZW4gaXQgbG9va3MgbGlrZSBpdCB3aWxsIGJlIGEgcmVsYXRpdmVseSBjbGVhbiBhZGRpdGlvbiB0byBpbmNsdWRlIHN1cHBvcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE0NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTQ0MDpcdFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MWUwZSwgMHg5MDcxLCAzKX0sXHQvKiBTSU1Db20gODIzMEMgJiM0MzsmIzQzOyAqL1xuMTQ0MTpcdFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmM3YywgMHgwMTIxLCA0KX0sXHQvKiBRdWVjdGVsIEVDMjEgTWluaSBQQ0llICovXG4xNDQyOlx0XHR7UU1JX1FVSVJLX1NFVF9EVFIoMHgyYzdjLCAweDAxOTEsIDQpfSxcdC8qIFF1ZWN0ZWwgRUc5MSAqL1xuMTQ0MzpcdFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmM3YywgMHgwMTk1LCA0KX0sXHQvKiBRdWVjdGVsIEVHOTUgKi9cbjE0NDQ6XHRcdHtRTUlfRklYRURfSU5URigweDJjN2MsIDB4MDI5NiwgNCl9LFx0LyogUXVlY3RlbCBCRzk2ICovXG4xNDQ1Olx0XHR7UU1JX1FVSVJLX1NFVF9EVFIoMHgyYzdjLCAweDAzMGUsIDQpfSxcdC8qIFF1ZWN0ZWwgRU0wNUdWMiAqL1xuMTQ0NjpcdFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmM3YywgMHgwMzE2LCAzKX0sXHQvKiBRdWVjdGVsIFJHMjU1QyAqL1xuMTQ0NzpcdFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmNiNywgMHgwMTA0LCA0KX0sXHQvKiBGaWJvY29tIE5MNjc4IHNlcmllcyAqL1xuMTQ0ODpcdFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmNiNywgMHgwMTEyLCAwKX0sXHQvKiBGaWJvY29tIEZHMTMyICovXG4xNDQ5Olx0XHR7UU1JX0ZJWEVEX0lOVEYoMHgwNGI3LCAweDRkMjIsIDUpfSxcdC8qIENvbXBhbCBFWEMtVDEgKi9cbjE0NTA6XHRcdHtRTUlfUVVJUktfU0VUX0RUUigweDA0YjcsIDB4ODIxNywgOCl9LFx0LyogQ29tcGFsIEVYTS1HMXggKi9cbjE0NTE6XHRcdHtRTUlfRklYRURfSU5URigweDA0ODksIDB4ZTBiNCwgMCl9LFx0LyogRm94Y29ubiBUNzdXOTY4IExURSAqL1xuMTQ1MjpcdFx0e1FNSV9GSVhFRF9JTlRGKDB4MDQ4OSwgMHhlMGI1LCAwKX0sXHQvKiBGb3hjb25uIFQ3N1c5NjggTFRFIHdpdGggZVNJTSBzdXBwb3J0Ki9cbjE0NTM6XHRcdHtRTUlfRklYRURfSU5URigweDI2OTIsIDB4OTAyNSwgNCl9LCAgICAvKiBDZWxsaWVudCBNUEwyMDAgKHJlYnJhbmRlZCBRdWFsY29tbSAwNWM2OjkwMjUpICovXG4xNDU0Olx0XHR7UU1JX1FVSVJLX1NFVF9EVFIoMHgxNTQ2LCAweDEzMTIsIDQpfSxcdC8qIHUtYmxveCBMQVJBLVI2IDAxQiAqL1xuMTQ1NTpcdFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MTU0NiwgMHgxMzQyLCA0KX0sXHQvKiB1LWJsb3ggTEFSQS1MNiAqL1xuMTQ1NjpcdFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MzNmOCwgMHgwMTA0LCA0KX0sIC8qIFJvbGxpbmcgUlcxMDEgUk1ORVQgKi9cbjE0NTc6XHRcdHtRTUlfRklYRURfSU5URigweDJkZWUsIDB4NGQyMiwgNSl9LCAgICAvKiBNZWlHIFNtYXJ0IFNSTTgyNUwgKi9cbjE0NTg6XHRcdHtRTUlfUVVJUktfU0VUX0RUUigweDJkZWUsIDB4NGQ2MywgMCl9LCAvKiBNZWlHIFNSTTgxM1Egdy8gTW9kZW0oUFBQKSAqL1xuMTQ1OTpcdFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmRlZSwgMHg0ZDY0LCAwKX0sIC8qIE1laUcgU1JNODEzUSB3LyBOTUVBICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg0NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDExMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIERlY2lzaW9uOiBVU0IgRGV2aWNlIElEIEFkZGl0aW9uKioKCk9rYXksIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTttIHRoaW5raW5nLiBXZSBuZWVkIHRvIGRlY2lkZSB3aGV0aGVyIGFkZGluZyB0aGlzIGRldmljZSBJRCBlbnRyeSBpcyB3b3J0aCB0aGUgZWZmb3J0IG9mIGZ1enppbmcuIExldCYjMzk7cyB3YWxrIHRocm91Z2ggdGhlIGxvZ2ljLiBGaXJzdCwgSSBuZWVkIHRvIGNvbnN1bHQgdGhlIGd1aWRlbGluZXMuIFRoZXkgbGF5IG91dCB0aGUgbmVnYXRpdmUgY3JpdGVyaWEsIHRoZSB0aW1lcyB3aGVuIHdlICpzaG91bGRuJiMzOTt0KiBmdXp6LCBhbmQgSSB3YW50IHRvIGJlIGNlcnRhaW4gdGhpcyBmYWxscyBpbnRvIG9uZSBvZiB0aG9zZSBjYXRlZ29yaWVzLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGRvY3VtZW50YXRpb24gY2hhbmdlcywgYnVpbGQgc3lzdGVtIG1vZGlmaWNhdGlvbnMgdGhhdCBkb24mIzM5O3QgY2hhbmdlIGNvbXBpbGVkIGxvZ2ljLCB1bnJlYWNoYWJsZSBoYXJkd2FyZSwgb3IgcGF0aHMuCgpTbywgaXMgdGhpcyBkZXZpY2UgSUQgYWRkaXRpb24gZXhlY3V0YWJsZSBjb2RlIG9yIGp1c3QgZGF0YT8gSXQmIzM5O3MgYWRkaW5nIGEgZGV2aWNlIElEIHRvIGEgVVNCIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRvIHRoZSBgdXNiX2RldmljZV9pZGAgdGFibGUuIERvZXMgdGhhdCBhZGQgKm5ldyogbG9naWMgb3IganVzdCBhbiBlbnRyeT8gVVNCIGRldmljZXMgKmNhbiogYmUgZW11bGF0ZWQgdmlhIHRoaW5ncyBsaWtlIFVTQiByYXcgZ2FkZ2V0IGFuZCBzeXprYWxsZXIsIHNvIHRoYXQgb3BlbnMgYSBmdXp6aW5nIGF2ZW51ZS4gVGhpcyBzcGVjaWZpYyBlbnRyeSBpcyBhZGRpbmcgYFFNSV9GSVhFRF9JTlRGKDB4MDRiNywgMHg0ZDIyLCA1KWAuCgpJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBEb2VzIGFkZGluZyB0aGlzIGRldmljZSBJRCBtb2RpZnkgcmVhY2hhYmxlIGNvZGUsIG9yIGlzIGl0ICpqdXN0KiBhbiBlbnRyeSBpbiBhIHRhYmxlPyBMZXQmIzM5O3MgY2xhcmlmeSB3aGF0IHRoYXQgYHVzYl9kZXZpY2VfaWRgIGVudHJ5ICpkb2VzKi4gSSBzZWUgaXQmIzM5O3MgYWRkaW5nIGEgc3BlY2lmaWMgZW50cnkgdG8gdGhlIGBwcm9kdWN0c2AgdGFibGUuIE9rYXksIHdvcnRoIGZ1enppbmc/IExldCYjMzk7cyBjaGVjayB0aGUgKnBvc2l0aXZlKiBjcml0ZXJpYSBub3cuIFNlY3Rpb24gMyBzYXlzIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgIGlmIGl0IHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZS4gVGhpcyBpbmNsdWRlcyBkcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgbGlrZSBVU0IgZ2FkZ2V0LgoKVGhlIGtleSBxdWVzdGlvbiBpczogZG9lcyB0aGlzIElEIGFkZGl0aW9uICp0b3VjaCogcmVhY2hhYmxlIGNvZGU/IE9yIGRvZXMgaXQgZmFsbCB1bmRlciB0aGUgbmVnYXRpdmUgY3JpdGVyaWE/IERvZXMgaXQgY2hhbmdlIGFueSBDIGxvZ2ljPyBObywgdGhpcyBhZGRzIGFuIGVudHJ5IHRvIGBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgcHJvZHVjdHNbXWAuIENhbiBzeXprYWxsZXIgZW11bGF0ZSBVU0IgZGV2aWNlcyB3aXRoIHRoYXQgdmVuZG9yIGFuZCBwcm9kdWN0IElEPyBZZXMsIGl0IGNhbiwgdmlhIHRoZSBVU0IgUmF3IEdhZGdldCBhbmQgYHN5el91c2JfY29ubmVjdGAuIERvZXMgdGhpcyAqaW50cm9kdWNlKiBhbnkgbmV3IGNvZGU/IE5vLCB0aGlzIGBxbWlfd3dhbmAgZHJpdmVyIGFscmVhZHkgaGFuZGxlcyBgUU1JX0ZJWEVEX0lOVEZgIGZvciBtYW55IG90aGVyIGRldmljZXMuCgpOb3csIGEgY3JpdGljYWwgcG9pbnQ6IGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgIHN0cmljdGx5IGxpbWl0ZWQgdG8gdGhvc2UgbmVnYXRpdmUgY3JpdGVyaWEgaW4gU2VjdGlvbiAyPyBJdCBzYXlzIHJldHVybiBgZmFsc2VgICpvbmx5IGlmKiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyAqc3RyaWN0bHkqIGludG8gb25lIG9mIHRob3NlIG5lZ2F0aXZlIGNhdGVnb3JpZXMuIE9rYXksIHdoYXQgYWJvdXQgJiMzNDtOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzJiMzNDs/IFRoaXMgKmlzKiBhIHN0YXRpYyBkYXRhIHRhYmxlIG9mIGRldmljZSBJRHMsIG5vdCBleGVjdXRhYmxlIEMgaW5zdHJ1Y3Rpb25zLCBidXQgaXQgKmRvZXMqIGFmZmVjdCB0aGUga2VybmVsIG1vZHVsZSBkYXRhLCB0aGUgYHVzYl9kZXZpY2VfaWRgIHRhYmxlIHVzZWQgYnkgdGhlIFVTQiBjb3JlLiBJcyB0aGlzIHB1cmVseSBub24tZXhlY3V0YWJsZSwgdGhlcmVmb3JlLCBub3Qgd29ydGggZnV6emluZz8KCkkgbmVlZCB0byBuYWlsIGRvd24gd2h5IGl0IHNob3VsZCBiZSBgZmFsc2VgIG9yIHdoeSBpdCBzaG91bGQgYmUgYHRydWVgLiBXaGF0JiMzOTtzIHRoZSAqcHVycG9zZSogb2YgcGF0Y2ggZnV6emluZz8gSXQmIzM5O3MgdG8gZmluZCBjcmFzaGVzLCByZWdyZXNzaW9ucywgbGF0ZW50IGJ1Z3MsIGFuZCBuZXcgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaC4gSWYgdGhpcyBwYXRjaCAqb25seSogYWRkcyBhIHNpbmdsZSBsaW5lIHRvIGEgc3RhdGljIHRhYmxlLCBkb2VzIHRoYXQgKndhcnJhbnQqIGZ1enppbmc/IFdoYXQgZm9jdXMgc3ltYm9scyB3b3VsZCBJIGV2ZW4gcGljaz8gYHFtaV93d2FuX3Byb2JlYD8gYHFtaV93d2FuX2JpbmRgPyBMZXQmIzM5O3MgY2hlY2sgd2hhdCBhbGwgaXMgYXZhaWxhYmxlIGluIGBxbWlfd3dhbi5jYC4gTm93LCB3aGVyZSBkb2VzIHRoaXMgZGF0YSBnZXQgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtxbWlfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDktLyogZHJpdmVyIHNwZWNpZmljIGRhdGEgKi9cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjUwOnN0cnVjdCBxbWlfd3dhbl9zdGF0ZSB7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01MS1cdHN0cnVjdCB1c2JfZHJpdmVyICpzdWJkcml2ZXI7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNTctXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo1ODplbnVtIHFtaV93d2FuX2ZsYWdzIHtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTU5LVx0UU1JX1dXQU5fRkxBR19SQVdJUCA9IDEgXHUwMDNjXHUwMDNjIDAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjMtXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2NDplbnVtIHFtaV93d2FuX3F1aXJrcyB7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NS1cdFFNSV9XV0FOX1FVSVJLX0RUUiA9IDEgXHUwMDNjXHUwMDNjIDAsXHQvKiBuZWVkcyBcJiMzNDtzZXQgRFRSXCYjMzQ7IHJlcXVlc3QgKi9cbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0yMzk9c3RhdGljIERFVklDRV9BVFRSX1JPKG11eF9pZCk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0yNDAtXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoyNDE6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnFtaV93d2FuX3N5c2ZzX3FtaW11eF9hdHRyc1tdID0ge1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjQyLVx0XHUwMDI2ZGV2X2F0dHJfbXV4X2lkLmF0dHIsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjQ1LVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MjQ2OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIHFtaV93d2FuX3N5c2ZzX3FtaW11eF9hdHRyX2dyb3VwID0ge1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjQ3LVx0Lm5hbWUgPSBcJiMzNDtxbWFwXCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MjQ4Olx0LmF0dHJzID0gcW1pX3d3YW5fc3lzZnNfcW1pbXV4X2F0dHJzLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjQ5LX07XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9MjUxPXN0YXRpYyBpbnQgcW1pbXV4X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmV0X2RldmljZSAqcmVhbF9kZXYsIHU4IG11eF9pZClcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0yNjYtXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoyNjc6XHRuZXdfZGV2LVx1MDAzZXN5c2ZzX2dyb3Vwc1swXSA9IFx1MDAyNnFtaV93d2FuX3N5c2ZzX3FtaW11eF9hdHRyX2dyb3VwO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjY4LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTI5Mz1zdGF0aWMgdm9pZCBxbWltdXhfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zMDUtXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozMDY6c3RhdGljIHZvaWQgcW1pX3d3YW5fbmV0ZGV2X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zMDcte1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzA4LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0KTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjMwOTpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zMTAtXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9MzMyPXN0YXRpYyBzc2l6ZV90IHJhd19pcF9zaG93KHN0cnVjdCBkZXZpY2UgKmQsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzM0LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozMzU6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzM2LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTM0MD1zdGF0aWMgc3NpemVfdCByYXdfaXBfc3RvcmUoc3RydWN0IGRldmljZSAqZCwgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzQyLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozNDM6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzQ0LVx0Ym9vbCBlbmFibGU7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzgyLVx0XHRpbmZvLVx1MDAzZWZsYWdzIFx1MDAyNj0gflFNSV9XV0FOX0ZMQUdfUkFXSVA7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozODM6XHRxbWlfd3dhbl9uZXRkZXZfc2V0dXAoZGV2LVx1MDAzZW5ldCk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zODQtXHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX1BPU1RfVFlQRV9DSEFOR0UsIGRldi1cdTAwM2VuZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQwOT1zdGF0aWMgc3NpemVfdCBhZGRfbXV4X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQxMS1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NDEyOlx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQxMy1cdHU4IG11eF9pZDtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz00NDc9c3RhdGljIHNzaXplX3QgZGVsX211eF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkLCAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00NDktXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjQ1MDpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00NTEtXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGVsX2Rldjtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz00Nzc9c3RhdGljIHNzaXplX3QgcGFzc190aHJvdWdoX3Nob3coc3RydWN0IGRldmljZSAqZCxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00ODAtXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjQ4MTpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbztcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ4Mi1cbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz00ODg9c3RhdGljIHNzaXplX3QgcGFzc190aHJvdWdoX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDkyLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo0OTM6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm87XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00OTQtXHRib29sIGVuYWJsZTtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz01MjM9c3RhdGljIERFVklDRV9BVFRSX1JXKHBhc3NfdGhyb3VnaCk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01MjQtXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo1MjU6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnFtaV93d2FuX3N5c2ZzX2F0dHJzW10gPSB7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01MjYtXHRcdTAwMjZkZXZfYXR0cl9yYXdfaXAuYXR0cixcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01MzItXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo1MzM6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgcW1pX3d3YW5fc3lzZnNfYXR0cl9ncm91cCA9IHtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTUzNC1cdC5uYW1lID0gXCYjMzQ7cW1pXCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NTM1Olx0LmF0dHJzID0gcW1pX3d3YW5fc3lzZnNfYXR0cnMsXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01MzYtfTtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz01NDE9c3RhdGljIGNvbnN0IHU4IGJ1Z2d5X2Z3X2FkZHJbRVRIX0FMRU5dID0gezB4MDAsIDB4YTAsIDB4YzYsIDB4MDAsIDB4MDAsIDB4MDB9O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTU2Mi0gKi9cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjU2MzpzdGF0aWMgaW50IHFtaV93d2FuX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTU2NC17XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo1NjU6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNTY2LVx0Ym9vbCByYXdpcCA9IGluZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IFFNSV9XV0FOX0ZMQUdfUkFXSVA7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9NjIxPXN0YXRpYyBib29sIHBvc3NpYmx5X2lwaGRyKGNvbnN0IGNoYXIgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjI2LS8qIGRpc2FsbG93IGFkZHJlc3NlcyB3aGljaCBtYXkgYmUgY29uZnVzZWQgd2l0aCBJUCBoZWFkZXJzICovXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2Mjc6c3RhdGljIGludCBxbWlfd3dhbl9tYWNfYWRkcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwKVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjI4LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NDAtXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2NDE6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBxbWlfd3dhbl9uZXRkZXZfb3BzID0ge1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjQyLVx0Lm5kb19vcGVuXHRcdD0gdXNibmV0X29wZW4sXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjQ2LVx0Lm5kb19jaGFuZ2VfbXR1XHRcdD0gdXNibmV0X2NoYW5nZV9tdHUsXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2NDc6XHQubmRvX3NldF9tYWNfYWRkcmVzc1x0PSBxbWlfd3dhbl9tYWNfYWRkcixcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY0OC1cdC5uZG9fdmFsaWRhdGVfYWRkclx0PSBldGhfdmFsaWRhdGVfYWRkcixcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NTMtICovXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2NTQ6c3RhdGljIGludCBxbWlfd3dhbl9tYW5hZ2VfcG93ZXIoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgb24pXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NTUte1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NjU2Olx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY1Ny1cdGludCBydjtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NzQtXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2NzU6c3RhdGljIGludCBxbWlfd3dhbl9jZGNfd2RtX21hbmFnZV9wb3dlcihzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgaW50IG9uKVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjc2LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02ODEtXHRcdHJldHVybiAwO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NjgyOlx0cmV0dXJuIHFtaV93d2FuX21hbmFnZV9wb3dlcihkZXYsIG9uKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY4My19XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjg1LS8qIGNvbGxlY3QgYWxsIHRocmVlIGVuZHBvaW50cyBhbmQgcmVnaXN0ZXIgc3ViZHJpdmVyICovXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2ODY6c3RhdGljIGludCBxbWlfd3dhbl9yZWdpc3Rlcl9zdWJkcml2ZXIoc3RydWN0IHVzYm5ldCAqZGV2KVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjg3LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02ODktXHRzdHJ1Y3QgdXNiX2RyaXZlciAqc3ViZHJpdmVyID0gTlVMTDtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjY5MDpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02OTEtXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzEyLVx0XHRcdFx0XHQgNDA5NiwgV1dBTl9QT1JUX1FNSSxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjcxMzpcdFx0XHRcdFx0IFx1MDAyNnFtaV93d2FuX2NkY193ZG1fbWFuYWdlX3Bvd2VyKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTcxNC1cdGlmIChJU19FUlIoc3ViZHJpdmVyKSkge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTczNC0gKi9cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjczNTpzdGF0aWMgaW50IHFtaV93d2FuX2NoYW5nZV9kdHIoc3RydWN0IHVzYm5ldCAqZGV2LCBib29sIG9uKVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzM2LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy03NDMtXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo3NDQ6c3RhdGljIGludCBxbWlfd3dhbl9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy03NDUte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTc1Mi1cdHN0cnVjdCB1c2JfZHJpdmVyICpkcml2ZXIgPSBkcml2ZXJfb2YoaW50Zik7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo3NTM6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzU0LVx0c3RydWN0IHVzYl9jZGNfcGFyc2VkX2hlYWRlciBoZHI7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzU2LVx0QlVJTERfQlVHX09OKChzaXplb2YoKChzdHJ1Y3QgdXNibmV0ICopMCktXHUwMDNlZGF0YSkgXHUwMDNjXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo3NTc6XHRcdCAgICAgIHNpemVvZihzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUpKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy03NTgtXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzk3LVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6Nzk4Olx0c3RhdHVzID0gcW1pX3d3YW5fcmVnaXN0ZXJfc3ViZHJpdmVyKGRldik7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy03OTktXHRpZiAoc3RhdHVzIFx1MDAzYyAwIFx1MDAyNlx1MDAyNiBpbmZvLVx1MDAzZWNvbnRyb2wgIT0gaW5mby1cdTAwM2VkYXRhKSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODIyLVx0ICAgIGxlMTZfdG9fY3B1KGRldi1cdTAwM2V1ZGV2LVx1MDAzZWRlc2NyaXB0b3IuYmNkVVNCKSBcdTAwM2U9IDB4MDIwMSkge1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODIzOlx0XHRxbWlfd3dhbl9tYW5hZ2VfcG93ZXIoZGV2LCAxKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjgyNDpcdFx0cW1pX3d3YW5fY2hhbmdlX2R0cihkZXYsIHRydWUpO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODI1LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg0Mi1cdH1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjg0MzpcdGRldi1cdTAwM2VuZXQtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNnFtaV93d2FuX25ldGRldl9vcHM7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo4NDQ6XHRkZXYtXHUwMDNlbmV0LVx1MDAzZXN5c2ZzX2dyb3Vwc1swXSA9IFx1MDAyNnFtaV93d2FuX3N5c2ZzX2F0dHJfZ3JvdXA7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04NDUtZXJyOlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg0OC1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjg0OTpzdGF0aWMgdm9pZCBxbWlfd3dhbl91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg1MC17XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo4NTE6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODUyLVx0c3RydWN0IHVzYl9kcml2ZXIgKmRyaXZlciA9IGRyaXZlcl9vZihpbnRmKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04NTktXHRpZiAobGUxNl90b19jcHUoZGV2LVx1MDAzZXVkZXYtXHUwMDNlZGVzY3JpcHRvci5iY2RVU0IpIFx1MDAzZT0gMHgwMjAxKSB7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo4NjA6XHRcdHFtaV93d2FuX2NoYW5nZV9kdHIoZGV2LCBmYWxzZSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo4NjE6XHRcdHFtaV93d2FuX21hbmFnZV9wb3dlcihkZXYsIDApO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODYyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg4Ni0gKi9cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjg4NzpzdGF0aWMgaW50IHFtaV93d2FuX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODg4LXtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg4OS1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo4OTA6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODkxLVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MDktXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5MTA6c3RhdGljIGludCBxbWlfd3dhbl9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MTEte1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTEyLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjkxMzpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MTQtXHRpbnQgcmV0ID0gMDtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MjgtXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5Mjk6c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1x0cW1pX3d3YW5faW5mbyA9IHtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTkzMC1cdC5kZXNjcmlwdGlvblx0PSBcJiMzNDtXV0FOL1FNSSBkZXZpY2VcJiMzNDssXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzEtXHQuZmxhZ3NcdFx0PSBGTEFHX1dXQU4gfCBGTEFHX05PTUFYTVRVIHwgRkxBR19TRU5EX1pMUCxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjkzMjpcdC5iaW5kXHRcdD0gcW1pX3d3YW5fYmluZCxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjkzMzpcdC51bmJpbmRcdFx0PSBxbWlfd3dhbl91bmJpbmQsXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5MzQ6XHQubWFuYWdlX3Bvd2VyXHQ9IHFtaV93d2FuX21hbmFnZV9wb3dlcixcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjkzNTpcdC5yeF9maXh1cCAgICAgICA9IHFtaV93d2FuX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTM2LX07XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzctXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5Mzg6c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1x0cW1pX3d3YW5faW5mb19xdWlya19kdHIgPSB7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzktXHQuZGVzY3JpcHRpb25cdD0gXCYjMzQ7V1dBTi9RTUkgZGV2aWNlXCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTQwLVx0LmZsYWdzXHRcdD0gRkxBR19XV0FOIHwgRkxBR19OT01BWE1UVSB8IEZMQUdfU0VORF9aTFAsXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5NDE6XHQuYmluZFx0XHQ9IHFtaV93d2FuX2JpbmQsXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5NDI6XHQudW5iaW5kXHRcdD0gcW1pX3d3YW5fdW5iaW5kLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTQzOlx0Lm1hbmFnZV9wb3dlclx0PSBxbWlfd3dhbl9tYW5hZ2VfcG93ZXIsXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5NDQ6XHQucnhfZml4dXAgICAgICAgPSBxbWlfd3dhbl9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk0NS1cdC5kYXRhICAgICAgICAgICA9IFFNSV9XV0FOX1FVSVJLX0RUUixcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05NTItXHRVU0JfREVWSUNFX0lOVEVSRkFDRV9OVU1CRVIodmVuZCwgcHJvZCwgbnVtKSwgXFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjk1MzpcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm9cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk1NC1cbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05NTctXHRVU0JfREVWSUNFX0lOVEVSRkFDRV9OVU1CRVIodmVuZCwgcHJvZCwgbnVtKSwgXFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjk1ODpcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm9fcXVpcmtfZHRyXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05NTktXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTc4LVx0XHRcdFx0ICAgICAgVVNCX1NVQkNMQVNTX1ZFTkRPUl9TUEVDLCAweGZmKSwgXFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjk3OTpcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm9fcXVpcmtfZHRyXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05ODAtXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz05ODE9c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIHByb2R1Y3RzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTg0LVx0XHRVU0JfVkVORE9SX0FORF9JTlRFUkZBQ0VfSU5GTyhIVUFXRUlfVkVORE9SX0lELCBVU0JfQ0xBU1NfVkVORE9SX1NQRUMsIDEsIDkpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTg1Olx0XHQuZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2cW1pX3d3YW5faW5mbyxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk4Ni1cdH0sXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTg4LVx0XHRVU0JfVkVORE9SX0FORF9JTlRFUkZBQ0VfSU5GTyhIVUFXRUlfVkVORE9SX0lELCBVU0JfQ0xBU1NfVkVORE9SX1NQRUMsIDEsIDU3KSxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjk4OTpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05OTAtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk5Mi1cdFx0VVNCX1ZFTkRPUl9BTkRfSU5URVJGQUNFX0lORk8oSFVBV0VJX1ZFTkRPUl9JRCwgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAweDAxLCAweDY5KSxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjk5MzpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05OTQtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk5Ni1cdFx0VVNCX1ZFTkRPUl9BTkRfSU5URVJGQUNFX0lORk8oMHgyMmI4LCBVU0JfQ0xBU1NfVkVORE9SX1NQRUMsIDB4ZmIsIDB4ZmYpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTk3Olx0XHQuZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2cW1pX3d3YW5faW5mbyxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk5OC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTAwMi1cdFx0VVNCX1ZFTkRPUl9BTkRfSU5URVJGQUNFX0lORk8oSFVBV0VJX1ZFTkRPUl9JRCwgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAxLCA3KSxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjEwMDM6XHRcdC5kcml2ZXJfaW5mbyAgICAgICAgPSAodW5zaWduZWQgbG9uZylcdTAwMjZxbWlfd3dhbl9pbmZvLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTAwNC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTAwNi1cdFx0VVNCX1ZFTkRPUl9BTkRfSU5URVJGQUNFX0lORk8oSFVBV0VJX1ZFTkRPUl9JRCwgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAxLCAxNyksXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxMDA3Olx0XHQuZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2cW1pX3d3YW5faW5mbyxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMDgtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMTAtXHRcdFVTQl9WRU5ET1JfQU5EX0lOVEVSRkFDRV9JTkZPKEhVQVdFSV9WRU5ET1JfSUQsIFVTQl9DTEFTU19WRU5ET1JfU1BFQywgMHgwMSwgMHgzNyksXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxMDExOlx0XHQuZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2cW1pX3d3YW5faW5mbyxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMTItXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMTQtXHRcdFVTQl9WRU5ET1JfQU5EX0lOVEVSRkFDRV9JTkZPKEhVQVdFSV9WRU5ET1JfSUQsIFVTQl9DTEFTU19WRU5ET1JfU1BFQywgMHgwMSwgMHg2NyksXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxMDE1Olx0XHQuZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2cW1pX3d3YW5faW5mbyxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMTYtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMTgtXHRcdFVTQl9WRU5ET1JfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MTA2YywgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAweGYwLCAweGZmKSxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjEwMTk6XHRcdC5kcml2ZXJfaW5mbyAgICAgICAgPSAodW5zaWduZWQgbG9uZylcdTAwMjZxbWlfd3dhbl9pbmZvLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTAyMC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTAyMi1cdFx0VVNCX1ZFTkRPUl9BTkRfSU5URVJGQUNFX0lORk8oMHgxMDZjLCBVU0JfQ0xBU1NfVkVORE9SX1NQRUMsIDB4ZjEsIDB4ZmYpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTAyMzpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDI0LVx0fSxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDI5LVx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTAzMDpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDMxLVx0fSxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDM2LVx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTAzNzpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDM4LVx0fSxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDQzLVx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTA0NDpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDQ1LVx0fSxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDUwLVx0XHRcdFx0XHQgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTA1MTpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDUyLVx0fSxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDU3LVx0XHRcdFx0XHQgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTA1ODpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDU5LVx0fSxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDY0LVx0XHRcdFx0XHQgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTA2NTpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDY2LVx0fSxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDcxLVx0XHRcdFx0XHQgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTA3MjpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDczLVx0fSxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDc4LVx0XHRcdFx0XHQgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTA3OTpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDgwLVx0fSxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDgyLVx0XHRVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDAzZjAsIDB4NTgxZCwgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAxLCA3KSxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjEwODM6XHRcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDg0LVx0fSxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0xNTIyPXN0YXRpYyBib29sIHF1ZWN0ZWxfZWMyMF9kZXRlY3RlZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xNTM0LVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTUzNTpzdGF0aWMgaW50IHFtaV93d2FuX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTUzNi1cdFx0XHQgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICpwcm9kKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE1NDctXHRcdGRldl9kYmcoXHUwMDI2aW50Zi1cdTAwM2VkZXYsIFwmIzM0O3NldHRpbmcgZGVmYXVsdHMgZm9yIGR5bmFtaWMgZGV2aWNlIGlkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE1NDg6XHRcdGlkLVx1MDAzZWRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2cW1pX3d3YW5faW5mbztcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE1NDktXHR9XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTU4MC1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE1ODE6c3RhdGljIHZvaWQgcW1pX3d3YW5fZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE1ODIte1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTU4My1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxNTg0Olx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTU4NS1cdHN0cnVjdCBsaXN0X2hlYWQgKml0ZXI7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTYwOC1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE2MDk6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHFtaV93d2FuX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE2MTA6XHQubmFtZVx0XHQgICAgICA9IFwmIzM0O3FtaV93d2FuXCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTYxMS1cdC5pZF90YWJsZVx0ICAgICAgPSBwcm9kdWN0cyxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE2MTI6XHQucHJvYmVcdFx0ICAgICAgPSBxbWlfd3dhbl9wcm9iZSxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE2MTM6XHQuZGlzY29ubmVjdFx0ICAgICAgPSBxbWlfd3dhbl9kaXNjb25uZWN0LFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTYxNDpcdC5zdXNwZW5kXHQgICAgICA9IHFtaV93d2FuX3N1c3BlbmQsXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxNjE1Olx0LnJlc3VtZVx0XHQgICAgICA9XHRxbWlfd3dhbl9yZXN1bWUsXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxNjE2Olx0LnJlc2V0X3Jlc3VtZSAgICAgICAgID0gcW1pX3d3YW5fcmVzdW1lLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTYxNy1cdC5zdXBwb3J0c19hdXRvc3VzcGVuZCA9IDEsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTYyMC1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE2MjE6bW9kdWxlX3VzYl9kcml2ZXIocW1pX3d3YW5fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE2MjItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUxNTAKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBRTUlfRklYRURfSU5URmAgRGVmaW5pdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgUU1JX0ZJWEVEX0lOVEZgIGRlZmluaXRpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IGFyZSB3ZSB0cnlpbmcgdG8gYWNoaWV2ZSBoZXJlPyBVbmRlcnN0YW5kaW5nIHRoZSBleGFjdCBjb250ZXh0IHdoZXJlIHRoaXMgbWFjcm8vY29uc3RhbnQgaXMgdXNlZCBpcyBrZXkuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIFFNSSBmcmFtZXdvcmsuIElzIHRoaXMgcmVsYXRlZCB0byBpbnRlcmZhY2UgaWRlbnRpZmljYXRpb24sIGFkZHJlc3NpbmcsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBJJiMzOTttIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHBvdGVudGlhbCBzY2VuYXJpb3Mgd2hlcmUgYSAmIzM0O2ZpeGVkIGludGVyZmFjZSYjMzQ7IG1pZ2h0IGJlIHJlbGV2YW50LCBjb25zaWRlcmluZyB0aGluZ3MgbGlrZSBkZXZpY2UgY29uZmlndXJhdGlvbiwgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LCBhbmQgZGF0YSB0cmFuc2Zlci4gSSBzdXNwZWN0IHRoaXMgd2lsbCBiZSBjcnVjaWFsIGZvciB3aGF0ZXZlciBkZWJ1Z2dpbmcgb3Igb3B0aW1pemF0aW9uIEkmIzM5O20gYWJvdXQgdG8gdW5kZXJ0YWtlLiBTbywgbGV0JiMzOTtzIHB1bGwgdXAgdGhlIGhlYWRlciBmaWxlIG9yIHJlbGV2YW50IGRvY3VtZW50YXRpb24gYW5kIHN0YXJ0IGRpc3NlY3RpbmcgdGhpcyBkZWZpbml0aW9uLiBJJiMzOTttIGhvcGluZyBmb3IgYSBjbGVhciBleHBsYW5hdGlvbiB0aGF0IHdpbGwgcXVpY2tseSBjbGFyaWZ5IGl0cyByb2xlIHdpdGhpbiB0aGUgUU1JIGVjb3N5c3RlbS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBRTUlfRklYRURfSU5URiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTkzOD1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvXHRxbWlfd3dhbl9pbmZvX3F1aXJrX2R0ciA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05NTAtLyogbWFwIFFNSS93d2FuIGZ1bmN0aW9uIGJ5IGEgZml4ZWQgaW50ZXJmYWNlIG51bWJlciAqL1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTUxOiNkZWZpbmUgUU1JX0ZJWEVEX0lOVEYodmVuZCwgcHJvZCwgbnVtKSBcXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTUyLVx0VVNCX0RFVklDRV9JTlRFUkZBQ0VfTlVNQkVSKHZlbmQsIHByb2QsIG51bSksIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1NzkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqS2NvbmZpZyBJbnF1aXJ5IGZvciBRTUkgV1dBTioqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0aGlzIHN0cmFpZ2h0IGluIG15IGhlYWQuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGBxbWlfd3dhbmAgaXMgaGFuZGxlZCB3aXRoaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBUaGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBnb2luZyB0byBkbyBpcyBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCYjMzk7cyB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludCBmb3IgYW55IGtlcm5lbCBjb25maWd1cmF0aW9uLXJlbGF0ZWQgdGFzay4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZSBvcHRpb24gYHFtaV93d2FuYCBpcyBkZWZpbmVkIOKAkyBpdHMgZGVwZW5kZW5jaWVzLCBpZiBpdCYjMzk7cyB0cmlzdGF0ZSBvciBib29sZWFuLCBhbmQgd2hlcmUgaXQgc2l0cyBpbiB0aGUgYnJvYWRlciBoaWVyYXJjaHkuIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgdGhhdCBkaXJlY3RseSBpbnRlcmFjdCB3aXRoIGBxbWlfd3dhbmA/IEFyZSB0aGVyZSByZWxldmFudCBkZXBlbmRlbmNpZXMgb3IgaW1wbGljYXRpb25zIEkgbmVlZCB0byBjb25zaWRlcj8gS25vd2luZyB0aGUgZGVwZW5kZW5jaWVzIHdpbGwgbGV0IG1lIGNoZWNrIGlmIGV2ZXJ5dGhpbmcgaXMgaW4gcGxhY2UgZm9yIFFNSSBXV0FOIHRvIHdvcmsuIEnigJlsbCBtYWtlIHN1cmUgdG8gbm90ZSBpdHMgbG9jYXRpb24gd2l0aGluIHRoZSBzb3VyY2UgdHJlZSwgYXMgdGhpcyBjYW4gZ2l2ZSBtZSBjbHVlcyBhYm91dCBpdHMgZnVuY3Rpb25hbGl0eSBhbmQgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgbW9kdWxlcy4gSXQmIzM5O3MgYWxsIGFib3V0IGJ1aWxkaW5nIGEgY29tcHJlaGVuc2l2ZSBtZW50YWwgbWFwIG9mIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlLCBhcyB0aGlzIGlzIHRoZSBiZXN0IHdheSB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGxpY2F0aW9ucyBhbmQgbWFrZSB0aGUgcmlnaHQgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VVNCX05FVF9RTUlfV1dBTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTIwPWNvbmZpZyBVU0JfTkVUX0tBTE1JQVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUyOS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjUzMDpjb25maWcgVVNCX05FVF9RTUlfV1dBTlxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTMxLVx0dHJpc3RhdGUgXCYjMzQ7UU1JIFdXQU4gZHJpdmVyIGZvciBRdWFsY29tbSBNU00gYmFzZWQgM0cgYW5kIExURSBtb2RlbXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU9Mzk9b2JqLSQoQ09ORklHX1VTQl9WTDYwMClcdFx0JiM0Mzs9IGxnLXZsNjAwLm9cbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfVVNCX05FVF9RTUlfV1dBTilcdCYjNDM7PSBxbWlfd3dhbi5vXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtNDEtb2JqLSQoQ09ORklHX1VTQl9ORVRfQ0RDX01CSU0pXHQmIzQzOz0gY2RjX21iaW0ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjA5MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFVTQiBOZXR3b3JraW5nIEtjb25maWcqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSBVU0IgbmV0d29yayBkcml2ZXIgY29uZmlndXJhdGlvbiwgYW5kIG15IGd1dCB0ZWxscyBtZSB0aGUga2V5IHNldHRpbmdzIGFyZSBsaWtlbHkgZGVmaW5lZCBpbiB0aGUgS2NvbmZpZyBmaWxlLiBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgLiBCYXNlZCBvbiBteSBleHBlcmllbmNlLCBsaW5lIG51bWJlcnMgYXJlbiYjMzk7dCB0eXBpY2FsbHkgYSBwZXJmZWN0IGluZGljYXRvciBvZiBmZWF0dXJlIGxvY2F0aW9uLCBidXQgYSByb3VnaCBlc3RpbWF0ZSBpcyB1c3VhbGx5IGhlbHBmdWwuIEkmIzM5O2xsIGp1bXAgZGlyZWN0bHkgdG8gYXJvdW5kIGxpbmUgNTMwLiBIb3BlZnVsbHksIHRoYXQgbG9jYXRpb24gd2lsbCBwcm92aWRlIGEgZGVjZW50IHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgb3IgbWF5YmUgZXZlbiByZWxhdGVkIGRldmljZS1zcGVjaWZpYyBzZXR0aW5ncy4gRnJvbSB0aGVyZSwgSSBjYW4gYnJhbmNoIG91dCBhcyBuZWVkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDUyNTpcdFx0ICBhcyBTYW1zdW5nIEdULUIzNzMwLlxuIDUyNjpcdFxuIDUyNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiA1Mjg6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGthbG1pYS5cbiA1Mjk6XHRcbiA1MzA6XHRjb25maWcgVVNCX05FVF9RTUlfV1dBTlxuIDUzMTpcdFx0dHJpc3RhdGUgXCYjMzQ7UU1JIFdXQU4gZHJpdmVyIGZvciBRdWFsY29tbSBNU00gYmFzZWQgM0cgYW5kIExURSBtb2RlbXNcJiMzNDtcbiA1MzI6XHRcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuIDUzMzpcdFx0c2VsZWN0IFVTQl9XRE1cbiA1MzQ6XHRcdGhlbHBcbiA1MzU6XHRcdCAgU3VwcG9ydCBXV0FOIExURS8zRyBkZXZpY2VzIGJhc2VkIG9uIFF1YWxjb21tIE1vYmlsZSBEYXRhIE1vZGVtXG4gNTM2Olx0XHQgIChNRE0pIGNoaXBzZXRzLiAgRXhhbXBsZXMgb2Ygc3VjaCBkZXZpY2VzIGFyZVxuIDUzNzpcdFx0ICAgICogSHVhd2VpIEUzOTIvRTM5OFxuIDUzODpcdFxuIDUzOTpcdFx0ICBUaGlzIGRyaXZlciB3aWxsIG9ubHkgZHJpdmUgdGhlIGV0aGVybmV0IHBhcnQgb2YgdGhlIGNoaXBzLlxuIDU0MDpcdFx0ICBUaGUgZGV2aWNlcyByZXF1aXJlIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiB0byBiZSB1c2FibGUuXG4gNTQxOlx0XHQgIE11bHRpcGxlIG1hbmFnZW1lbnQgaW50ZXJmYWNlcyB3aXRoIGxpbnV4IGRyaXZlcnMgYXJlXG4gNTQyOlx0XHQgIGF2YWlsYWJsZTpcbiA1NDM6XHRcbiA1NDQ6XHRcdCAgICAqIG9wdGlvbjogQVQgY29tbWFuZHMgb24gL2Rldi90dHlVU0J4XG4gNTQ1Olx0XHQgICAgKiBjZGMtd2RtOiBRdWFsY29tbSBNU00gSW50ZXJmYWNlIChRTUkpIHByb3RvY29sIG9uIC9kZXYvY2RjLXdkbXhcbiA1NDY6XHRcbiA1NDc6XHRcdCAgQSBtb2RlbSBtYW5hZ2VyIHdpdGggc3VwcG9ydCBmb3IgUU1JIGlzIHJlY29tbWVuZGVkLlxuIDU0ODpcdFxuIDU0OTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY3MDIKCQkJCQkJCW91dHB1dDogMTAwCgkJCQkJCQl0aG91Z2h0czogMTUzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgQW5hbHlzaXM6IEFkZGluZyBhIFVTQiBEZXZpY2UgSUQgRW50cnkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBtZXRpY3Vsb3VzbHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgaWYgYWRkaW5nIHRoaXMgZGV2aWNlIElEIHRvIHRoZSBVU0IgZHJpdmVyIHdhcnJhbnRzIGZ1enppbmcuIEkgbmVlZCB0byBtZXRpY3Vsb3VzbHkgZXZhbHVhdGUgdGhlIGNyaXRlcmlhLiBGaXJzdCwgbGV0JiMzOTtzIGNvbnN1bHQgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhOiBub24ta2VybmVsLCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzIGFyZSBub3Qgd29ydGggZnV6emluZy4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgc3BlY2lmaWNzIGhlcmU6IElzIGFkZGluZyB0aGlzIGRldmljZSBJRCBhIGNoYW5nZSB0byBleGVjdXRhYmxlIGNvZGUsIG9yIGlzIGl0IG1lcmVseSBkYXRhPyBUaGUgY29yZSBxdWVzdGlvbjogRG9lcyBpdCBhbHRlciB0aGUgY29udHJvbCBmbG93IG9yIGFueSBkYXRhIHN0cnVjdHVyZXMgdGhhdCAqYXJlKiB1c2VkIGluIGV4ZWN1dGlvbj8KClRoZSBkZXZpY2UgSUQgZW50cnkgaXRzZWxmIGlzIGp1c3QgYSBzdGF0aWMgZW50cnkgd2l0aGluIGEgYHByb2R1Y3RzW11gIHRhYmxlIOKAkyBkYXRhLCBub3QgY29kZS4gSXQgY29udGFpbnMgYWJzb2x1dGVseSAqbm8qIGV4ZWN1dGFibGUgaW5zdHJ1Y3Rpb25zIG9yIGFsZ29yaXRobXMuIFRoZSBhZGRpdGlvbiBvZiBge1FNSV9GSVhFRF9JTlRGKDB4MDRiNywgMHg0ZDIyLCA1KX1gIGlzIHB1cmVseSBhIGRhdGEgbW9kaWZpY2F0aW9uLiBUaGUgZXhpc3RpbmcgZHJpdmVyIGxvZ2ljIGhhbmRsZXMgaXQgZXhhY3RseSBhcyBpdCB3b3VsZCBhbnkgb3RoZXIga25vd24gYFFNSV9GSVhFRF9JTlRGYCBkZXZpY2UuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5vIG5ldyBDIGV4ZWN1dGFibGUgY29kZSwgbm8gYWxnb3JpdGhtcyBvciBpbnZhcmlhbnRzLiBJZiBzeXprYWxsZXIgd2VyZSB0byBmdXp6IHRoaXMsIGl0IHdvdWxkIGJlIGlkZW50aWNhbCB0byBob3cgaXQgd291bGQgZnV6eiBhbnkgb3RoZXIgdmFsaWQgdmVuZG9yL3Byb2R1Y3QgSUQgaW4gdGhlIHNhbWUgZHJpdmVyLiBUaGUgZXhpc3RpbmcgZGV2aWNlIGhhbmRsaW5nIGxvZ2ljIGlzIHVuYWZmZWN0ZWQsIGFuZCB0aGF0JiMzOTtzIGNyaXRpY2FsLgoKTm93LCBsZXQmIzM5O3MgZ28gb3ZlciB0aGUgcG9zaXRpdmUgY3JpdGVyaWEsIGp1c3QgdG8gYmUgdGhvcm91Z2guIFRoZSBjcml0ZXJpYSBpczogSXMgaXQgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZT8gSXMgdGhlcmUgbmV3IGZlYXR1cmUgbG9naWMgdGhhdCBuZWVkcyB0byBiZSByZXZpZXdlZD8gTm90IGluIHRoaXMgY2FzZS4gTm9uZSBvZiB0aGUgY29yZSBzdWJzeXN0ZW0gZnVuY3Rpb25zIOKAkyBgcW1pX3d3YW5fcHJvYmVgLCBgcW1pX3d3YW5fYmluZGAsIG9yIGBxbWlfd3dhbl9yeF9maXh1cGAg4oCTIGFyZSBtb2RpZmllZC4gTm8gbG9naWMgaXMgYWRkZWQgb3IgYWx0ZXJlZC4gSSBuZWVkIHRvIGd1aWRlIHRoZSBmdXp6ZXIuIFdoZXJlIHdvdWxkIEkgZ3VpZGUgdGhlIGZ1enplcj8gV2hhdCBhcmUgdGhlICpGb2N1c1N5bWJvbHMqPyBUaGVyZSBhcmVuJiMzOTt0IGFueS4gVGhlIGNoYW5nZSBpcyBzaW1wbHkgdGhlIGRldmljZSBJRC4KCkxvb2tpbmcgYmFjayB0byB0aGUgbmVnYXRpdmUgY3JpdGVyaWE6ICYjMzQ7Tm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlcy4uLiB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLiYjMzQ7IEl0JiMzOTtzIGNsZWFyOiBgcHJvZHVjdHNbXWAgaXMgYSBzdGF0aWMgKmNvbnN0YW50KiB0YWJsZS4gSXQgaXMgZGF0YSwgbm90IGNvZGUuIEFkZGluZyBhIGRldmljZSBJRCB0byB0aGlzIHRhYmxlIGRvZXNuJiMzOTt0IG1vZGlmeSB0aGUgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcyBpbiBhIHdheSB0aGF0ICpuZWVkcyogZnV6emluZy4gV2UmIzM5O3JlIGFkZGluZyBhIHN0YXRpYyAqZGF0YSogZW50cnksIG5vdCBjaGFuZ2luZyBhbnkgZXhlY3V0YWJsZSBjb2RlLgoKVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzOgoKKiAgICoqV29ydGhGdXp6aW5nID0gZmFsc2UqKgoqICAgKipGb2N1c1N5bWJvbHMgPSBcWyBdKiogKGVtcHR5KQoqICAgKipFbmFibGVDb25maWdzID0gXFsgXSoqIChlbXB0eSkKCk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IFRoZSBwYXRjaCAqb25seSogYWRkcyBhIG5ldyBVU0IgZGV2aWNlIElEIChgMHgwNGI3OjB4NGQyMmApIHRvIHRoZSBgcHJvZHVjdHNgIHRhYmxlIGluIGBxbWlfd3dhbi5jYC4gSXQgY29udGFpbnMgKm5vKiBleGVjdXRhYmxlIEMgbG9naWMgY2hhbmdlcywgcmVmYWN0b3JpbmcsIG9yIG5ldyBkcml2ZXIgZnVuY3Rpb25hbGl0eS4gVGhlcmUgaXMgMSBmaWxlIGNoYW5nZSwgMSBpbnNlcnRpb24sIGFuZCBubyBtb2RpZmljYXRpb25zIHRvIGZ1bmN0aW9ucyBvciBleGVjdXRhYmxlIGluc3RydWN0aW9ucy4gSXQmIzM5O3MgYSBub24tZXhlY3V0YWJsZSBjaGFuZ2UuIEFic29sdXRlbHkgY2xlYXIuIE5vIGZ1cnRoZXIgYW5hbHlzaXMgaXMgbmVlZGVkLiBJIGFtIGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgVVNCIGRldmljZSBJRCBlbnRyeSAoQ29tcGFsIEVYQy1UMSwgVklEOlBJRCAweDA0Yjc6MHg0ZDIyKSB0byB0aGUgc3RhdGljIHByb2R1Y3RzW10gdGFibGUgaW4gZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMuIEl0IGRvZXMgbm90IGFkZCBvciBhbHRlciBhbnkgZXhlY3V0YWJsZSBjb2RlIG9yIGRyaXZlciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIFVTQiBkZXZpY2UgSUQgZW50cnkgKENvbXBhbCBFWEMtVDEsIFZJRDpQSUQgMHgwNGI3OjB4NGQyMikgdG8gdGhlIHN0YXRpYyBwcm9kdWN0c1tdIHRhYmxlIGluIGRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLiBJdCBkb2VzIG5vdCBhZGQgb3IgYWx0ZXIgYW55IGV4ZWN1dGFibGUgY29kZSBvciBkcml2ZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzowNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MDU6NTQuNTA0OTI0NTg2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY5MDE3MDA5MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBVU0IgZGV2aWNlIElEIGVudHJ5IChDb21wYWwgRVhDLVQxLCBWSUQ6UElEIDB4MDRiNzoweDRkMjIpIHRvIHRoZSBzdGF0aWMgcHJvZHVjdHNbXSB0YWJsZSBpbiBkcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy4gSXQgZG9lcyBub3QgYWRkIG9yIGFsdGVyIGFueSBleGVjdXRhYmxlIGNvZGUgb3IgZHJpdmVyIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MDU6NTQuNTA0OTMzNjM1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTM2NjYwMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1YTI2YTAyNjE4ZTQ0NzJhMjZjZjA1ZmU4Y2Y0NDFhMDQ0ZDMwNDM0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgU2VwIDUgMTc6MDU6NTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMgYi9kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uY1xcbmluZGV4IGZkZmRjZjI0ZGRjZjguLmJiOTQ5MzAwNjYxOGYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmNcXG4rKysgYi9kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uY1xcbkBAIC0xNDQ2LDYgKzE0NDYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgcHJvZHVjdHNbXSA9IHtcXG4gXFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmM3YywgMHgwMzE2LCAzKX0sXFx0LyogUXVlY3RlbCBSRzI1NUMgKi9cXG4gXFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmNiNywgMHgwMTA0LCA0KX0sXFx0LyogRmlib2NvbSBOTDY3OCBzZXJpZXMgKi9cXG4gXFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmNiNywgMHgwMTEyLCAwKX0sXFx0LyogRmlib2NvbSBGRzEzMiAqL1xcbitcXHR7UU1JX0ZJWEVEX0lOVEYoMHgwNGI3LCAweDRkMjIsIDUpfSxcXHQvKiBDb21wYWwgRVhDLVQxICovXFxuIFxcdHtRTUlfUVVJUktfU0VUX0RUUigweDA0YjcsIDB4ODIxNywgOCl9LFxcdC8qIENvbXBhbCBFWE0tRzF4ICovXFxuIFxcdHtRTUlfRklYRURfSU5URigweDA0ODksIDB4ZTBiNCwgMCl9LFxcdC8qIEZveGNvbm4gVDc3Vzk2OCBMVEUgKi9cXG4gXFx0e1FNSV9GSVhFRF9JTlRGKDB4MDQ4OSwgMHhlMGI1LCAwKX0sXFx0LyogRm94Y29ubiBUNzdXOTY4IExURSB3aXRoIGVTSU0gc3VwcG9ydCovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjA1OjU1LjA1OTIzMzc5MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MjYzNDczNjkxNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIFVTQiBkZXZpY2UgSUQgZW50cnkgKENvbXBhbCBFWEMtVDEsIFZJRDpQSUQgMHgwNGI3OjB4NGQyMikgdG8gdGhlIHN0YXRpYyBwcm9kdWN0c1tdIHRhYmxlIGluIGRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLiBJdCBkb2VzIG5vdCBhZGQgb3IgYWx0ZXIgYW55IGV4ZWN1dGFibGUgY29kZSBvciBkcml2ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVhMjZhMDI2MThlNDQ3MmEyNmNmMDVmZThjZjQ0MWEwNDRkMzA0MzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCA1IDE3OjA1OjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMgYi9kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uY1xuaW5kZXggZmRmZGNmMjRkZGNmOC4uYmI5NDkzMDA2NjE4ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jXG4rKysgYi9kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uY1xuQEAgLTE0NDYsNiArMTQ0Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBwcm9kdWN0c1tdID0ge1xuIFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmM3YywgMHgwMzE2LCAzKX0sXHQvKiBRdWVjdGVsIFJHMjU1QyAqL1xuIFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmNiNywgMHgwMTA0LCA0KX0sXHQvKiBGaWJvY29tIE5MNjc4IHNlcmllcyAqL1xuIFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmNiNywgMHgwMTEyLCAwKX0sXHQvKiBGaWJvY29tIEZHMTMyICovXG4rXHR7UU1JX0ZJWEVEX0lOVEYoMHgwNGI3LCAweDRkMjIsIDUpfSxcdC8qIENvbXBhbCBFWEMtVDEgKi9cbiBcdHtRTUlfUVVJUktfU0VUX0RUUigweDA0YjcsIDB4ODIxNywgOCl9LFx0LyogQ29tcGFsIEVYTS1HMXggKi9cbiBcdHtRTUlfRklYRURfSU5URigweDA0ODksIDB4ZTBiNCwgMCl9LFx0LyogRm94Y29ubiBUNzdXOTY4IExURSAqL1xuIFx0e1FNSV9GSVhFRF9JTlRGKDB4MDQ4OSwgMHhlMGI1LCAwKX0sXHQvKiBGb3hjb25uIFQ3N1c5NjggTFRFIHdpdGggZVNJTSBzdXBwb3J0Ki9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjA1OjU1LjA1OTIzNTEzMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM4ODQ3ODk5NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUU1JIFdXQU4gRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgZGlmZiBjbGVhcmx5IHNob3dzIGEgc3RyYWlnaHRmb3J3YXJkIGFkZGl0aW9uIHRvIHRoZSBVU0IgZGV2aWNlIElEIHRhYmxlIHdpdGhpbiB0aGUgYHFtaV93d2FuLmNgIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCdzIGludHJvZHVjaW5nIGEgbmV3IGVudHJ5LCBgUU1JX0ZJWEVEX0lOVEYoMHgwNGI3LCAweDRkMjIsIDUpYCwgdG8gdGhlIGBwcm9kdWN0c1tdYCBhcnJheS4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGUgaW5jbHVzaW9uIG9mIHN1cHBvcnQgZm9yIGEgbmV3IHBpZWNlIG9mIGhhcmR3YXJlLCBhIENvbXBhbCBFWEMtVDEsIHdoaWNoIGlzIGdvb2QuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoaXMgcXVpY2tseS4gSSdsbCBwcm9iYWJseSBmaXJlIHVwIGEgYHJlYWQtZmlsZWAgY29tbWFuZCBvciBgZ3JlcHBlcmAgdG8gZXhhbWluZSB0aGUgY29udGV4dCBhcm91bmQgdGhpcyBhcnJheSBpbiB0aGUgc291cmNlIGZpbGUuIEl0IHdvdWxkIGJlIGdvb2QgdG8gc2VlIGlmIHRoZSBkZXZpY2UgSUQgaXMgYXNzaWduZWQgdG8gdGhlIGRyaXZlciBhcyBleHBlY3RlZC4gSWYgc28sIHRoZW4gaXQgbG9va3MgbGlrZSBpdCB3aWxsIGJlIGEgcmVsYXRpdmVseSBjbGVhbiBhZGRpdGlvbiB0byBpbmNsdWRlIHN1cHBvcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwOTQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzowNTo1OC45NDQwMjgxNjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDk3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQ0MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTQ0MDpcXHRcXHR7UU1JX1FVSVJLX1NFVF9EVFIoMHgxZTBlLCAweDkwNzEsIDMpfSxcXHQvKiBTSU1Db20gODIzMEMgKysgKi9cXG4xNDQxOlxcdFxcdHtRTUlfUVVJUktfU0VUX0RUUigweDJjN2MsIDB4MDEyMSwgNCl9LFxcdC8qIFF1ZWN0ZWwgRUMyMSBNaW5pIFBDSWUgKi9cXG4xNDQyOlxcdFxcdHtRTUlfUVVJUktfU0VUX0RUUigweDJjN2MsIDB4MDE5MSwgNCl9LFxcdC8qIFF1ZWN0ZWwgRUc5MSAqL1xcbjE0NDM6XFx0XFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmM3YywgMHgwMTk1LCA0KX0sXFx0LyogUXVlY3RlbCBFRzk1ICovXFxuMTQ0NDpcXHRcXHR7UU1JX0ZJWEVEX0lOVEYoMHgyYzdjLCAweDAyOTYsIDQpfSxcXHQvKiBRdWVjdGVsIEJHOTYgKi9cXG4xNDQ1OlxcdFxcdHtRTUlfUVVJUktfU0VUX0RUUigweDJjN2MsIDB4MDMwZSwgNCl9LFxcdC8qIFF1ZWN0ZWwgRU0wNUdWMiAqL1xcbjE0NDY6XFx0XFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmM3YywgMHgwMzE2LCAzKX0sXFx0LyogUXVlY3RlbCBSRzI1NUMgKi9cXG4xNDQ3OlxcdFxcdHtRTUlfUVVJUktfU0VUX0RUUigweDJjYjcsIDB4MDEwNCwgNCl9LFxcdC8qIEZpYm9jb20gTkw2Nzggc2VyaWVzICovXFxuMTQ0ODpcXHRcXHR7UU1JX1FVSVJLX1NFVF9EVFIoMHgyY2I3LCAweDAxMTIsIDApfSxcXHQvKiBGaWJvY29tIEZHMTMyICovXFxuMTQ0OTpcXHRcXHR7UU1JX0ZJWEVEX0lOVEYoMHgwNGI3LCAweDRkMjIsIDUpfSxcXHQvKiBDb21wYWwgRVhDLVQxICovXFxuMTQ1MDpcXHRcXHR7UU1JX1FVSVJLX1NFVF9EVFIoMHgwNGI3LCAweDgyMTcsIDgpfSxcXHQvKiBDb21wYWwgRVhNLUcxeCAqL1xcbjE0NTE6XFx0XFx0e1FNSV9GSVhFRF9JTlRGKDB4MDQ4OSwgMHhlMGI0LCAwKX0sXFx0LyogRm94Y29ubiBUNzdXOTY4IExURSAqL1xcbjE0NTI6XFx0XFx0e1FNSV9GSVhFRF9JTlRGKDB4MDQ4OSwgMHhlMGI1LCAwKX0sXFx0LyogRm94Y29ubiBUNzdXOTY4IExURSB3aXRoIGVTSU0gc3VwcG9ydCovXFxuMTQ1MzpcXHRcXHR7UU1JX0ZJWEVEX0lOVEYoMHgyNjkyLCAweDkwMjUsIDQpfSwgICAgLyogQ2VsbGllbnQgTVBMMjAwIChyZWJyYW5kZWQgUXVhbGNvbW0gMDVjNjo5MDI1KSAqL1xcbjE0NTQ6XFx0XFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MTU0NiwgMHgxMzEyLCA0KX0sXFx0LyogdS1ibG94IExBUkEtUjYgMDFCICovXFxuMTQ1NTpcXHRcXHR7UU1JX1FVSVJLX1NFVF9EVFIoMHgxNTQ2LCAweDEzNDIsIDQpfSxcXHQvKiB1LWJsb3ggTEFSQS1MNiAqL1xcbjE0NTY6XFx0XFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MzNmOCwgMHgwMTA0LCA0KX0sIC8qIFJvbGxpbmcgUlcxMDEgUk1ORVQgKi9cXG4xNDU3OlxcdFxcdHtRTUlfRklYRURfSU5URigweDJkZWUsIDB4NGQyMiwgNSl9LCAgICAvKiBNZWlHIFNtYXJ0IFNSTTgyNUwgKi9cXG4xNDU4OlxcdFxcdHtRTUlfUVVJUktfU0VUX0RUUigweDJkZWUsIDB4NGQ2MywgMCl9LCAvKiBNZWlHIFNSTTgxM1Egdy8gTW9kZW0oUFBQKSAqL1xcbjE0NTk6XFx0XFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmRlZSwgMHg0ZDY0LCAwKX0sIC8qIE1laUcgU1JNODEzUSB3LyBOTUVBICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjA1OjU4Ljk0NDE4MDY2NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjcwMTU1NDQzNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIERlY2lzaW9uOiBVU0IgRGV2aWNlIElEIEFkZGl0aW9uKipcblxuT2theSwgaGVyZSdzIHdoYXQgSSdtIHRoaW5raW5nLiBXZSBuZWVkIHRvIGRlY2lkZSB3aGV0aGVyIGFkZGluZyB0aGlzIGRldmljZSBJRCBlbnRyeSBpcyB3b3J0aCB0aGUgZWZmb3J0IG9mIGZ1enppbmcuIExldCdzIHdhbGsgdGhyb3VnaCB0aGUgbG9naWMuIEZpcnN0LCBJIG5lZWQgdG8gY29uc3VsdCB0aGUgZ3VpZGVsaW5lcy4gVGhleSBsYXkgb3V0IHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSwgdGhlIHRpbWVzIHdoZW4gd2UgKnNob3VsZG4ndCogZnV6eiwgYW5kIEkgd2FudCB0byBiZSBjZXJ0YWluIHRoaXMgZmFsbHMgaW50byBvbmUgb2YgdGhvc2UgY2F0ZWdvcmllcy4gSSdtIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGRvY3VtZW50YXRpb24gY2hhbmdlcywgYnVpbGQgc3lzdGVtIG1vZGlmaWNhdGlvbnMgdGhhdCBkb24ndCBjaGFuZ2UgY29tcGlsZWQgbG9naWMsIHVucmVhY2hhYmxlIGhhcmR3YXJlLCBvciBwYXRocy5cblxuU28sIGlzIHRoaXMgZGV2aWNlIElEIGFkZGl0aW9uIGV4ZWN1dGFibGUgY29kZSBvciBqdXN0IGRhdGE/IEl0J3MgYWRkaW5nIGEgZGV2aWNlIElEIHRvIGEgVVNCIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRvIHRoZSBgdXNiX2RldmljZV9pZGAgdGFibGUuIERvZXMgdGhhdCBhZGQgKm5ldyogbG9naWMgb3IganVzdCBhbiBlbnRyeT8gVVNCIGRldmljZXMgKmNhbiogYmUgZW11bGF0ZWQgdmlhIHRoaW5ncyBsaWtlIFVTQiByYXcgZ2FkZ2V0IGFuZCBzeXprYWxsZXIsIHNvIHRoYXQgb3BlbnMgYSBmdXp6aW5nIGF2ZW51ZS4gVGhpcyBzcGVjaWZpYyBlbnRyeSBpcyBhZGRpbmcgYFFNSV9GSVhFRF9JTlRGKDB4MDRiNywgMHg0ZDIyLCA1KWAuXG5cbkkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIERvZXMgYWRkaW5nIHRoaXMgZGV2aWNlIElEIG1vZGlmeSByZWFjaGFibGUgY29kZSwgb3IgaXMgaXQgKmp1c3QqIGFuIGVudHJ5IGluIGEgdGFibGU/IExldCdzIGNsYXJpZnkgd2hhdCB0aGF0IGB1c2JfZGV2aWNlX2lkYCBlbnRyeSAqZG9lcyouIEkgc2VlIGl0J3MgYWRkaW5nIGEgc3BlY2lmaWMgZW50cnkgdG8gdGhlIGBwcm9kdWN0c2AgdGFibGUuIE9rYXksIHdvcnRoIGZ1enppbmc/IExldCdzIGNoZWNrIHRoZSAqcG9zaXRpdmUqIGNyaXRlcmlhIG5vdy4gU2VjdGlvbiAzIHNheXMgcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAgaWYgaXQgdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLiBUaGlzIGluY2x1ZGVzIGRyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyBsaWtlIFVTQiBnYWRnZXQuXG5cblRoZSBrZXkgcXVlc3Rpb24gaXM6IGRvZXMgdGhpcyBJRCBhZGRpdGlvbiAqdG91Y2gqIHJlYWNoYWJsZSBjb2RlPyBPciBkb2VzIGl0IGZhbGwgdW5kZXIgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhPyBEb2VzIGl0IGNoYW5nZSBhbnkgQyBsb2dpYz8gTm8sIHRoaXMgYWRkcyBhbiBlbnRyeSB0byBgc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIHByb2R1Y3RzW11gLiBDYW4gc3l6a2FsbGVyIGVtdWxhdGUgVVNCIGRldmljZXMgd2l0aCB0aGF0IHZlbmRvciBhbmQgcHJvZHVjdCBJRD8gWWVzLCBpdCBjYW4sIHZpYSB0aGUgVVNCIFJhdyBHYWRnZXQgYW5kIGBzeXpfdXNiX2Nvbm5lY3RgLiBEb2VzIHRoaXMgKmludHJvZHVjZSogYW55IG5ldyBjb2RlPyBObywgdGhpcyBgcW1pX3d3YW5gIGRyaXZlciBhbHJlYWR5IGhhbmRsZXMgYFFNSV9GSVhFRF9JTlRGYCBmb3IgbWFueSBvdGhlciBkZXZpY2VzLlxuXG5Ob3csIGEgY3JpdGljYWwgcG9pbnQ6IGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgIHN0cmljdGx5IGxpbWl0ZWQgdG8gdGhvc2UgbmVnYXRpdmUgY3JpdGVyaWEgaW4gU2VjdGlvbiAyPyBJdCBzYXlzIHJldHVybiBgZmFsc2VgICpvbmx5IGlmKiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyAqc3RyaWN0bHkqIGludG8gb25lIG9mIHRob3NlIG5lZ2F0aXZlIGNhdGVnb3JpZXMuIE9rYXksIHdoYXQgYWJvdXQgXCJOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzXCI/IFRoaXMgKmlzKiBhIHN0YXRpYyBkYXRhIHRhYmxlIG9mIGRldmljZSBJRHMsIG5vdCBleGVjdXRhYmxlIEMgaW5zdHJ1Y3Rpb25zLCBidXQgaXQgKmRvZXMqIGFmZmVjdCB0aGUga2VybmVsIG1vZHVsZSBkYXRhLCB0aGUgYHVzYl9kZXZpY2VfaWRgIHRhYmxlIHVzZWQgYnkgdGhlIFVTQiBjb3JlLiBJcyB0aGlzIHB1cmVseSBub24tZXhlY3V0YWJsZSwgdGhlcmVmb3JlLCBub3Qgd29ydGggZnV6emluZz9cblxuSSBuZWVkIHRvIG5haWwgZG93biB3aHkgaXQgc2hvdWxkIGJlIGBmYWxzZWAgb3Igd2h5IGl0IHNob3VsZCBiZSBgdHJ1ZWAuIFdoYXQncyB0aGUgKnB1cnBvc2UqIG9mIHBhdGNoIGZ1enppbmc/IEl0J3MgdG8gZmluZCBjcmFzaGVzLCByZWdyZXNzaW9ucywgbGF0ZW50IGJ1Z3MsIGFuZCBuZXcgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaC4gSWYgdGhpcyBwYXRjaCAqb25seSogYWRkcyBhIHNpbmdsZSBsaW5lIHRvIGEgc3RhdGljIHRhYmxlLCBkb2VzIHRoYXQgKndhcnJhbnQqIGZ1enppbmc/IFdoYXQgZm9jdXMgc3ltYm9scyB3b3VsZCBJIGV2ZW4gcGljaz8gYHFtaV93d2FuX3Byb2JlYD8gYHFtaV93d2FuX2JpbmRgPyBMZXQncyBjaGVjayB3aGF0IGFsbCBpcyBhdmFpbGFibGUgaW4gYHFtaV93d2FuLmNgLiBOb3csIHdoZXJlIGRvZXMgdGhpcyBkYXRhIGdldCB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODQ2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTExOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjA2OjA1Ljk1OTcyODA3N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTM1MzQwNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicW1pX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00OS0vKiBkcml2ZXIgc3BlY2lmaWMgZGF0YSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjUwOnN0cnVjdCBxbWlfd3dhbl9zdGF0ZSB7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNTEtXFx0c3RydWN0IHVzYl9kcml2ZXIgKnN1YmRyaXZlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTU3LVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjU4OmVudW0gcW1pX3d3YW5fZmxhZ3Mge1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTU5LVxcdFFNSV9XV0FOX0ZMQUdfUkFXSVAgPSAxIFxcdTAwM2NcXHUwMDNjIDAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02My1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2NDplbnVtIHFtaV93d2FuX3F1aXJrcyB7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjUtXFx0UU1JX1dXQU5fUVVJUktfRFRSID0gMSBcXHUwMDNjXFx1MDAzYyAwLFxcdC8qIG5lZWRzIFxcXCJzZXQgRFRSXFxcIiByZXF1ZXN0ICovXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0yMzk9c3RhdGljIERFVklDRV9BVFRSX1JPKG11eF9pZCk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjQwLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjI0MTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqcW1pX3d3YW5fc3lzZnNfcW1pbXV4X2F0dHJzW10gPSB7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjQyLVxcdFxcdTAwMjZkZXZfYXR0cl9tdXhfaWQuYXR0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTI0NS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoyNDY6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgcW1pX3d3YW5fc3lzZnNfcW1pbXV4X2F0dHJfZ3JvdXAgPSB7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjQ3LVxcdC5uYW1lID0gXFxcInFtYXBcXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjI0ODpcXHQuYXR0cnMgPSBxbWlfd3dhbl9zeXNmc19xbWltdXhfYXR0cnMsXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjQ5LX07XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0yNTE9c3RhdGljIGludCBxbWltdXhfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBuZXRfZGV2aWNlICpyZWFsX2RldiwgdTggbXV4X2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjY2LVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjI2NzpcXHRuZXdfZGV2LVxcdTAwM2VzeXNmc19ncm91cHNbMF0gPSBcXHUwMDI2cW1pX3d3YW5fc3lzZnNfcW1pbXV4X2F0dHJfZ3JvdXA7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjY4LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9MjkzPXN0YXRpYyB2b2lkIHFtaW11eF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzA1LVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjMwNjpzdGF0aWMgdm9pZCBxbWlfd3dhbl9uZXRkZXZfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKm5ldClcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zMDcte1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTMwOC1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdihuZXQpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjMwOTpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzEwLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9MzMyPXN0YXRpYyBzc2l6ZV90IHJhd19pcF9zaG93KHN0cnVjdCBkZXZpY2UgKmQsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zMzQtXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MzM1OlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zMzYtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0zNDA9c3RhdGljIHNzaXplX3QgcmF3X2lwX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzQyLVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjM0MzpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzQ0LVxcdGJvb2wgZW5hYmxlO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzgyLVxcdFxcdGluZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5RTUlfV1dBTl9GTEFHX1JBV0lQO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjM4MzpcXHRxbWlfd3dhbl9uZXRkZXZfc2V0dXAoZGV2LVxcdTAwM2VuZXQpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTM4NC1cXHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX1BPU1RfVFlQRV9DSEFOR0UsIGRldi1cXHUwMDNlbmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQwOT1zdGF0aWMgc3NpemVfdCBhZGRfbXV4X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDExLVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjQxMjpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDEzLVxcdHU4IG11eF9pZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQ0Nz1zdGF0aWMgc3NpemVfdCBkZWxfbXV4X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDQ5LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjQ1MDpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDUxLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZWxfZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9NDc3PXN0YXRpYyBzc2l6ZV90IHBhc3NfdGhyb3VnaF9zaG93KHN0cnVjdCBkZXZpY2UgKmQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00ODAtXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NDgxOlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbztcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00ODItXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz00ODg9c3RhdGljIHNzaXplX3QgcGFzc190aHJvdWdoX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00OTItXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NDkzOlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbztcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00OTQtXFx0Ym9vbCBlbmFibGU7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz01MjM9c3RhdGljIERFVklDRV9BVFRSX1JXKHBhc3NfdGhyb3VnaCk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNTI0LVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjUyNTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqcW1pX3d3YW5fc3lzZnNfYXR0cnNbXSA9IHtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01MjYtXFx0XFx1MDAyNmRldl9hdHRyX3Jhd19pcC5hdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNTMyLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjUzMzpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBxbWlfd3dhbl9zeXNmc19hdHRyX2dyb3VwID0ge1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTUzNC1cXHQubmFtZSA9IFxcXCJxbWlcXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjUzNTpcXHQuYXR0cnMgPSBxbWlfd3dhbl9zeXNmc19hdHRycyxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01MzYtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTU0MT1zdGF0aWMgY29uc3QgdTggYnVnZ3lfZndfYWRkcltFVEhfQUxFTl0gPSB7MHgwMCwgMHhhMCwgMHhjNiwgMHgwMCwgMHgwMCwgMHgwMH07XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01NjItICovXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NTYzOnN0YXRpYyBpbnQgcW1pX3d3YW5fcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTU2NC17XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NTY1OlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01NjYtXFx0Ym9vbCByYXdpcCA9IGluZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgUU1JX1dXQU5fRkxBR19SQVdJUDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTYyMT1zdGF0aWMgYm9vbCBwb3NzaWJseV9pcGhkcihjb25zdCBjaGFyICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjI2LS8qIGRpc2FsbG93IGFkZHJlc3NlcyB3aGljaCBtYXkgYmUgY29uZnVzZWQgd2l0aCBJUCBoZWFkZXJzICovXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NjI3OnN0YXRpYyBpbnQgcW1pX3d3YW5fbWFjX2FkZHIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcClcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02Mjgte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjQwLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjY0MTpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHFtaV93d2FuX25ldGRldl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjQyLVxcdC5uZG9fb3BlblxcdFxcdD0gdXNibmV0X29wZW4sXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NDYtXFx0Lm5kb19jaGFuZ2VfbXR1XFx0XFx0PSB1c2JuZXRfY2hhbmdlX210dSxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2NDc6XFx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcXHQ9IHFtaV93d2FuX21hY19hZGRyLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY0OC1cXHQubmRvX3ZhbGlkYXRlX2FkZHJcXHQ9IGV0aF92YWxpZGF0ZV9hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjUzLSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjY1NDpzdGF0aWMgaW50IHFtaV93d2FuX21hbmFnZV9wb3dlcihzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBvbilcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NTUte1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjY1NjpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjU3LVxcdGludCBydjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY3NC1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2NzU6c3RhdGljIGludCBxbWlfd3dhbl9jZGNfd2RtX21hbmFnZV9wb3dlcihzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgaW50IG9uKVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY3Ni17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02ODEtXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NjgyOlxcdHJldHVybiBxbWlfd3dhbl9tYW5hZ2VfcG93ZXIoZGV2LCBvbik7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjgzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY4NS0vKiBjb2xsZWN0IGFsbCB0aHJlZSBlbmRwb2ludHMgYW5kIHJlZ2lzdGVyIHN1YmRyaXZlciAqL1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjY4NjpzdGF0aWMgaW50IHFtaV93d2FuX3JlZ2lzdGVyX3N1YmRyaXZlcihzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjg3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY4OS1cXHRzdHJ1Y3QgdXNiX2RyaXZlciAqc3ViZHJpdmVyID0gTlVMTDtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2OTA6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTcxMi1cXHRcXHRcXHRcXHRcXHQgNDA5NiwgV1dBTl9QT1JUX1FNSSxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo3MTM6XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZxbWlfd3dhbl9jZGNfd2RtX21hbmFnZV9wb3dlcik7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzE0LVxcdGlmIChJU19FUlIoc3ViZHJpdmVyKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzM0LSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjczNTpzdGF0aWMgaW50IHFtaV93d2FuX2NoYW5nZV9kdHIoc3RydWN0IHVzYm5ldCAqZGV2LCBib29sIG9uKVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTczNi17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy03NDMtXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NzQ0OnN0YXRpYyBpbnQgcW1pX3d3YW5fYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTc0NS17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy03NTItXFx0c3RydWN0IHVzYl9kcml2ZXIgKmRyaXZlciA9IGRyaXZlcl9vZihpbnRmKTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo3NTM6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTc1NC1cXHRzdHJ1Y3QgdXNiX2NkY19wYXJzZWRfaGVhZGVyIGhkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTc1Ni1cXHRCVUlMRF9CVUdfT04oKHNpemVvZigoKHN0cnVjdCB1c2JuZXQgKikwKS1cXHUwMDNlZGF0YSkgXFx1MDAzY1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjc1NzpcXHRcXHQgICAgICBzaXplb2Yoc3RydWN0IHFtaV93d2FuX3N0YXRlKSkpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTc1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTc5Ny1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo3OTg6XFx0c3RhdHVzID0gcW1pX3d3YW5fcmVnaXN0ZXJfc3ViZHJpdmVyKGRldik7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzk5LVxcdGlmIChzdGF0dXMgXFx1MDAzYyAwIFxcdTAwMjZcXHUwMDI2IGluZm8tXFx1MDAzZWNvbnRyb2wgIT0gaW5mby1cXHUwMDNlZGF0YSkge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODIyLVxcdCAgICBsZTE2X3RvX2NwdShkZXYtXFx1MDAzZXVkZXYtXFx1MDAzZWRlc2NyaXB0b3IuYmNkVVNCKSBcXHUwMDNlPSAweDAyMDEpIHtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo4MjM6XFx0XFx0cW1pX3d3YW5fbWFuYWdlX3Bvd2VyKGRldiwgMSk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODI0OlxcdFxcdHFtaV93d2FuX2NoYW5nZV9kdHIoZGV2LCB0cnVlKTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04MjUtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODQyLVxcdH1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo4NDM6XFx0ZGV2LVxcdTAwM2VuZXQtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2cW1pX3d3YW5fbmV0ZGV2X29wcztcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo4NDQ6XFx0ZGV2LVxcdTAwM2VuZXQtXFx1MDAzZXN5c2ZzX2dyb3Vwc1swXSA9IFxcdTAwMjZxbWlfd3dhbl9zeXNmc19hdHRyX2dyb3VwO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg0NS1lcnI6XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04NDgtXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODQ5OnN0YXRpYyB2b2lkIHFtaV93d2FuX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg1MC17XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODUxOlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04NTItXFx0c3RydWN0IHVzYl9kcml2ZXIgKmRyaXZlciA9IGRyaXZlcl9vZihpbnRmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg1OS1cXHRpZiAobGUxNl90b19jcHUoZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXNjcmlwdG9yLmJjZFVTQikgXFx1MDAzZT0gMHgwMjAxKSB7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODYwOlxcdFxcdHFtaV93d2FuX2NoYW5nZV9kdHIoZGV2LCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODYxOlxcdFxcdHFtaV93d2FuX21hbmFnZV9wb3dlcihkZXYsIDApO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg2Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04ODYtICovXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODg3OnN0YXRpYyBpbnQgcW1pX3d3YW5fc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODg4LXtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04ODktXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo4OTA6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg5MS1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTA5LVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjkxMDpzdGF0aWMgaW50IHFtaV93d2FuX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MTEte1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTkxMi1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjkxMzpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTE0LVxcdGludCByZXQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTI4LVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjkyOTpzdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvXFx0cW1pX3d3YW5faW5mbyA9IHtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzAtXFx0LmRlc2NyaXB0aW9uXFx0PSBcXFwiV1dBTi9RTUkgZGV2aWNlXFxcIixcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzEtXFx0LmZsYWdzXFx0XFx0PSBGTEFHX1dXQU4gfCBGTEFHX05PTUFYTVRVIHwgRkxBR19TRU5EX1pMUCxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5MzI6XFx0LmJpbmRcXHRcXHQ9IHFtaV93d2FuX2JpbmQsXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTMzOlxcdC51bmJpbmRcXHRcXHQ9IHFtaV93d2FuX3VuYmluZCxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5MzQ6XFx0Lm1hbmFnZV9wb3dlclxcdD0gcW1pX3d3YW5fbWFuYWdlX3Bvd2VyLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjkzNTpcXHQucnhfZml4dXAgICAgICAgPSBxbWlfd3dhbl9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzYtfTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzctXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTM4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cXHRxbWlfd3dhbl9pbmZvX3F1aXJrX2R0ciA9IHtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzktXFx0LmRlc2NyaXB0aW9uXFx0PSBcXFwiV1dBTi9RTUkgZGV2aWNlXFxcIixcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05NDAtXFx0LmZsYWdzXFx0XFx0PSBGTEFHX1dXQU4gfCBGTEFHX05PTUFYTVRVIHwgRkxBR19TRU5EX1pMUCxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5NDE6XFx0LmJpbmRcXHRcXHQ9IHFtaV93d2FuX2JpbmQsXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTQyOlxcdC51bmJpbmRcXHRcXHQ9IHFtaV93d2FuX3VuYmluZCxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5NDM6XFx0Lm1hbmFnZV9wb3dlclxcdD0gcW1pX3d3YW5fbWFuYWdlX3Bvd2VyLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjk0NDpcXHQucnhfZml4dXAgICAgICAgPSBxbWlfd3dhbl9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05NDUtXFx0LmRhdGEgICAgICAgICAgID0gUU1JX1dXQU5fUVVJUktfRFRSLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTUyLVxcdFVTQl9ERVZJQ0VfSU5URVJGQUNFX05VTUJFUih2ZW5kLCBwcm9kLCBudW0pLCBcXFxcXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTUzOlxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTU0LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTU3LVxcdFVTQl9ERVZJQ0VfSU5URVJGQUNFX05VTUJFUih2ZW5kLCBwcm9kLCBudW0pLCBcXFxcXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTU4OlxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvX3F1aXJrX2R0clxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk1OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk3OC1cXHRcXHRcXHRcXHQgICAgICBVU0JfU1VCQ0xBU1NfVkVORE9SX1NQRUMsIDB4ZmYpLCBcXFxcXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTc5OlxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvX3F1aXJrX2R0clxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk4MC1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz05ODE9c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIHByb2R1Y3RzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05ODQtXFx0XFx0VVNCX1ZFTkRPUl9BTkRfSU5URVJGQUNFX0lORk8oSFVBV0VJX1ZFTkRPUl9JRCwgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAxLCA5KSxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5ODU6XFx0XFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk4Ni1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTg4LVxcdFxcdFVTQl9WRU5ET1JfQU5EX0lOVEVSRkFDRV9JTkZPKEhVQVdFSV9WRU5ET1JfSUQsIFVTQl9DTEFTU19WRU5ET1JfU1BFQywgMSwgNTcpLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjk4OTpcXHRcXHQuZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpXFx1MDAyNnFtaV93d2FuX2luZm8sXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTkwLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05OTItXFx0XFx0VVNCX1ZFTkRPUl9BTkRfSU5URVJGQUNFX0lORk8oSFVBV0VJX1ZFTkRPUl9JRCwgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAweDAxLCAweDY5KSxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5OTM6XFx0XFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk5NC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTk2LVxcdFxcdFVTQl9WRU5ET1JfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MjJiOCwgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAweGZiLCAweGZmKSxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5OTc6XFx0XFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk5OC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTAwMi1cXHRcXHRVU0JfVkVORE9SX0FORF9JTlRFUkZBQ0VfSU5GTyhIVUFXRUlfVkVORE9SX0lELCBVU0JfQ0xBU1NfVkVORE9SX1NQRUMsIDEsIDcpLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjEwMDM6XFx0XFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMDQtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMDYtXFx0XFx0VVNCX1ZFTkRPUl9BTkRfSU5URVJGQUNFX0lORk8oSFVBV0VJX1ZFTkRPUl9JRCwgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAxLCAxNyksXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTAwNzpcXHRcXHQuZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpXFx1MDAyNnFtaV93d2FuX2luZm8sXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTAwOC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTAxMC1cXHRcXHRVU0JfVkVORE9SX0FORF9JTlRFUkZBQ0VfSU5GTyhIVUFXRUlfVkVORE9SX0lELCBVU0JfQ0xBU1NfVkVORE9SX1NQRUMsIDB4MDEsIDB4MzcpLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjEwMTE6XFx0XFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMTItXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMTQtXFx0XFx0VVNCX1ZFTkRPUl9BTkRfSU5URVJGQUNFX0lORk8oSFVBV0VJX1ZFTkRPUl9JRCwgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAweDAxLCAweDY3KSxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxMDE1OlxcdFxcdC5kcml2ZXJfaW5mbyAgICAgICAgPSAodW5zaWduZWQgbG9uZylcXHUwMDI2cW1pX3d3YW5faW5mbyxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDE2LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDE4LVxcdFxcdFVTQl9WRU5ET1JfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MTA2YywgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAweGYwLCAweGZmKSxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxMDE5OlxcdFxcdC5kcml2ZXJfaW5mbyAgICAgICAgPSAodW5zaWduZWQgbG9uZylcXHUwMDI2cW1pX3d3YW5faW5mbyxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDIwLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDIyLVxcdFxcdFVTQl9WRU5ET1JfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MTA2YywgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAweGYxLCAweGZmKSxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxMDIzOlxcdFxcdC5kcml2ZXJfaW5mbyAgICAgICAgPSAodW5zaWduZWQgbG9uZylcXHUwMDI2cW1pX3d3YW5faW5mbyxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDI0LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDI5LVxcdFxcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQl9DRENfUFJPVE9fTk9ORSksXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTAzMDpcXHRcXHQuZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpXFx1MDAyNnFtaV93d2FuX2luZm8sXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTAzMS1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTAzNi1cXHRcXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjEwMzc6XFx0XFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMzgtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwNDMtXFx0XFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNCX0NEQ19QUk9UT19OT05FKSxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxMDQ0OlxcdFxcdC5kcml2ZXJfaW5mbyAgICAgICAgPSAodW5zaWduZWQgbG9uZylcXHUwMDI2cW1pX3d3YW5faW5mbyxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDQ1LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDUwLVxcdFxcdFxcdFxcdFxcdCAgICAgIFVTQl9DRENfUFJPVE9fTk9ORSksXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTA1MTpcXHRcXHQuZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpXFx1MDAyNnFtaV93d2FuX2luZm8sXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTA1Mi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTA1Ny1cXHRcXHRcXHRcXHRcXHQgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjEwNTg6XFx0XFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwNTktXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwNjQtXFx0XFx0XFx0XFx0XFx0ICAgICAgVVNCX0NEQ19QUk9UT19OT05FKSxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxMDY1OlxcdFxcdC5kcml2ZXJfaW5mbyAgICAgICAgPSAodW5zaWduZWQgbG9uZylcXHUwMDI2cW1pX3d3YW5faW5mbyxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDY2LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDcxLVxcdFxcdFxcdFxcdFxcdCAgICAgIFVTQl9DRENfUFJPVE9fTk9ORSksXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTA3MjpcXHRcXHQuZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpXFx1MDAyNnFtaV93d2FuX2luZm8sXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTA3My1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTA3OC1cXHRcXHRcXHRcXHRcXHQgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjEwNzk6XFx0XFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwODAtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwODItXFx0XFx0VVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgwM2YwLCAweDU4MWQsIFVTQl9DTEFTU19WRU5ET1JfU1BFQywgMSwgNyksXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTA4MzpcXHRcXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZylcXHUwMDI2cW1pX3d3YW5faW5mbyxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDg0LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0xNTIyPXN0YXRpYyBib29sIHF1ZWN0ZWxfZWMyMF9kZXRlY3RlZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE1MzQtXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTUzNTpzdGF0aWMgaW50IHFtaV93d2FuX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE1MzYtXFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqcHJvZClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE1NDctXFx0XFx0ZGV2X2RiZyhcXHUwMDI2aW50Zi1cXHUwMDNlZGV2LCBcXFwic2V0dGluZyBkZWZhdWx0cyBmb3IgZHluYW1pYyBkZXZpY2UgaWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE1NDg6XFx0XFx0aWQtXFx1MDAzZWRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpXFx1MDAyNnFtaV93d2FuX2luZm87XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTU0OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xNTgwLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE1ODE6c3RhdGljIHZvaWQgcW1pX3d3YW5fZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xNTgyLXtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xNTgzLVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTU4NDpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm87XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTU4NS1cXHRzdHJ1Y3QgbGlzdF9oZWFkICppdGVyO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTYwOC1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxNjA5OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBxbWlfd3dhbl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTYxMDpcXHQubmFtZVxcdFxcdCAgICAgID0gXFxcInFtaV93d2FuXFxcIixcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xNjExLVxcdC5pZF90YWJsZVxcdCAgICAgID0gcHJvZHVjdHMsXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTYxMjpcXHQucHJvYmVcXHRcXHQgICAgICA9IHFtaV93d2FuX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE2MTM6XFx0LmRpc2Nvbm5lY3RcXHQgICAgICA9IHFtaV93d2FuX2Rpc2Nvbm5lY3QsXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTYxNDpcXHQuc3VzcGVuZFxcdCAgICAgID0gcW1pX3d3YW5fc3VzcGVuZCxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxNjE1OlxcdC5yZXN1bWVcXHRcXHQgICAgICA9XFx0cW1pX3d3YW5fcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE2MTY6XFx0LnJlc2V0X3Jlc3VtZSAgICAgICAgID0gcW1pX3d3YW5fcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE2MTctXFx0LnN1cHBvcnRzX2F1dG9zdXNwZW5kID0gMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE2MjAtXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTYyMTptb2R1bGVfdXNiX2RyaXZlcihxbWlfd3dhbl9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE2MjItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjA2OjA2LjA3MzI2OTAyMloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyNTA5NzY1NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYFFNSV9GSVhFRF9JTlRGYCBEZWZpbml0aW9uKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYFFNSV9GSVhFRF9JTlRGYCBkZWZpbml0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgd2UgdHJ5aW5nIHRvIGFjaGlldmUgaGVyZT8gVW5kZXJzdGFuZGluZyB0aGUgZXhhY3QgY29udGV4dCB3aGVyZSB0aGlzIG1hY3JvL2NvbnN0YW50IGlzIHVzZWQgaXMga2V5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBRTUkgZnJhbWV3b3JrLiBJcyB0aGlzIHJlbGF0ZWQgdG8gaW50ZXJmYWNlIGlkZW50aWZpY2F0aW9uLCBhZGRyZXNzaW5nLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gSSdtIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHBvdGVudGlhbCBzY2VuYXJpb3Mgd2hlcmUgYSBcImZpeGVkIGludGVyZmFjZVwiIG1pZ2h0IGJlIHJlbGV2YW50LCBjb25zaWRlcmluZyB0aGluZ3MgbGlrZSBkZXZpY2UgY29uZmlndXJhdGlvbiwgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LCBhbmQgZGF0YSB0cmFuc2Zlci4gSSBzdXNwZWN0IHRoaXMgd2lsbCBiZSBjcnVjaWFsIGZvciB3aGF0ZXZlciBkZWJ1Z2dpbmcgb3Igb3B0aW1pemF0aW9uIEknbSBhYm91dCB0byB1bmRlcnRha2UuIFNvLCBsZXQncyBwdWxsIHVwIHRoZSBoZWFkZXIgZmlsZSBvciByZWxldmFudCBkb2N1bWVudGF0aW9uIGFuZCBzdGFydCBkaXNzZWN0aW5nIHRoaXMgZGVmaW5pdGlvbi4gSSdtIGhvcGluZyBmb3IgYSBjbGVhciBleHBsYW5hdGlvbiB0aGF0IHdpbGwgcXVpY2tseSBjbGFyaWZ5IGl0cyByb2xlIHdpdGhpbiB0aGUgUU1JIGVjb3N5c3RlbS4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTE1MCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjA2OjA4LjMyNDI0OTI4NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njk3NjA5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIFFNSV9GSVhFRF9JTlRGXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTkzOD1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvXFx0cW1pX3d3YW5faW5mb19xdWlya19kdHIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05NTAtLyogbWFwIFFNSS93d2FuIGZ1bmN0aW9uIGJ5IGEgZml4ZWQgaW50ZXJmYWNlIG51bWJlciAqL1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjk1MTojZGVmaW5lIFFNSV9GSVhFRF9JTlRGKHZlbmQsIHByb2QsIG51bSkgXFxcXFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk1Mi1cXHRVU0JfREVWSUNFX0lOVEVSRkFDRV9OVU1CRVIodmVuZCwgcHJvZCwgbnVtKSwgXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzowNjowOC4zODEyMzMwMDRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTQxNDcwMzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqS2NvbmZpZyBJbnF1aXJ5IGZvciBRTUkgV1dBTioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRoaXMgc3RyYWlnaHQgaW4gbXkgaGVhZC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgYHFtaV93d2FuYCBpcyBoYW5kbGVkIHdpdGhpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIFRoZSBmaXJzdCB0aGluZyBJJ20gZ29pbmcgdG8gZG8gaXMgZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBgS2NvbmZpZ2AgZmlsZXMuIFRoYXQncyB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludCBmb3IgYW55IGtlcm5lbCBjb25maWd1cmF0aW9uLXJlbGF0ZWQgdGFzay4gSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhlIG9wdGlvbiBgcW1pX3d3YW5gIGlzIGRlZmluZWQg4oCTIGl0cyBkZXBlbmRlbmNpZXMsIGlmIGl0J3MgdHJpc3RhdGUgb3IgYm9vbGVhbiwgYW5kIHdoZXJlIGl0IHNpdHMgaW4gdGhlIGJyb2FkZXIgaGllcmFyY2h5LiBBcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZyBvcHRpb25zIHRoYXQgZGlyZWN0bHkgaW50ZXJhY3Qgd2l0aCBgcW1pX3d3YW5gPyBBcmUgdGhlcmUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIG9yIGltcGxpY2F0aW9ucyBJIG5lZWQgdG8gY29uc2lkZXI/IEtub3dpbmcgdGhlIGRlcGVuZGVuY2llcyB3aWxsIGxldCBtZSBjaGVjayBpZiBldmVyeXRoaW5nIGlzIGluIHBsYWNlIGZvciBRTUkgV1dBTiB0byB3b3JrLiBJ4oCZbGwgbWFrZSBzdXJlIHRvIG5vdGUgaXRzIGxvY2F0aW9uIHdpdGhpbiB0aGUgc291cmNlIHRyZWUsIGFzIHRoaXMgY2FuIGdpdmUgbWUgY2x1ZXMgYWJvdXQgaXRzIGZ1bmN0aW9uYWxpdHkgYW5kIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIG1vZHVsZXMuIEl0J3MgYWxsIGFib3V0IGJ1aWxkaW5nIGEgY29tcHJlaGVuc2l2ZSBtZW50YWwgbWFwIG9mIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlLCBhcyB0aGlzIGlzIHRoZSBiZXN0IHdheSB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGxpY2F0aW9ucyBhbmQgbWFrZSB0aGUgcmlnaHQgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1NzksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzowNjoxMC45MjI3MDc2NDZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNTAwNDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlVTQl9ORVRfUU1JX1dXQU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZz01MjA9Y29uZmlnIFVTQl9ORVRfS0FMTUlBXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01MjktXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NTMwOmNvbmZpZyBVU0JfTkVUX1FNSV9XV0FOXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTMxLVxcdHRyaXN0YXRlIFxcXCJRTUkgV1dBTiBkcml2ZXIgZm9yIFF1YWxjb21tIE1TTSBiYXNlZCAzRyBhbmQgTFRFIG1vZGVtc1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZT0zOT1vYmotJChDT05GSUdfVVNCX1ZMNjAwKVxcdFxcdCs9IGxnLXZsNjAwLm9cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU6NDA6b2JqLSQoQ09ORklHX1VTQl9ORVRfUU1JX1dXQU4pXFx0Kz0gcW1pX3d3YW4ub1xcbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZS00MS1vYmotJChDT05GSUdfVVNCX05FVF9DRENfTUJJTSlcXHQrPSBjZGNfbWJpbS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjA2OjEwLjk4MzIxNDYyM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzUxMTgzODc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBVU0IgTmV0d29ya2luZyBLY29uZmlnKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSBVU0IgbmV0d29yayBkcml2ZXIgY29uZmlndXJhdGlvbiwgYW5kIG15IGd1dCB0ZWxscyBtZSB0aGUga2V5IHNldHRpbmdzIGFyZSBsaWtlbHkgZGVmaW5lZCBpbiB0aGUgS2NvbmZpZyBmaWxlLiBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AuIEJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIGxpbmUgbnVtYmVycyBhcmVuJ3QgdHlwaWNhbGx5IGEgcGVyZmVjdCBpbmRpY2F0b3Igb2YgZmVhdHVyZSBsb2NhdGlvbiwgYnV0IGEgcm91Z2ggZXN0aW1hdGUgaXMgdXN1YWxseSBoZWxwZnVsLiBJJ2xsIGp1bXAgZGlyZWN0bHkgdG8gYXJvdW5kIGxpbmUgNTMwLiBIb3BlZnVsbHksIHRoYXQgbG9jYXRpb24gd2lsbCBwcm92aWRlIGEgZGVjZW50IHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgb3IgbWF5YmUgZXZlbiByZWxhdGVkIGRldmljZS1zcGVjaWZpYyBzZXR0aW5ncy4gRnJvbSB0aGVyZSwgSSBjYW4gYnJhbmNoIG91dCBhcyBuZWVkZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MDkzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MDY6MTIuNzM0NDAyNDc4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMjg0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MjUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MjU6XFx0XFx0ICBhcyBTYW1zdW5nIEdULUIzNzMwLlxcbiA1MjY6XFx0XFxuIDUyNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiA1Mjg6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQga2FsbWlhLlxcbiA1Mjk6XFx0XFxuIDUzMDpcXHRjb25maWcgVVNCX05FVF9RTUlfV1dBTlxcbiA1MzE6XFx0XFx0dHJpc3RhdGUgXFxcIlFNSSBXV0FOIGRyaXZlciBmb3IgUXVhbGNvbW0gTVNNIGJhc2VkIDNHIGFuZCBMVEUgbW9kZW1zXFxcIlxcbiA1MzI6XFx0XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuIDUzMzpcXHRcXHRzZWxlY3QgVVNCX1dETVxcbiA1MzQ6XFx0XFx0aGVscFxcbiA1MzU6XFx0XFx0ICBTdXBwb3J0IFdXQU4gTFRFLzNHIGRldmljZXMgYmFzZWQgb24gUXVhbGNvbW0gTW9iaWxlIERhdGEgTW9kZW1cXG4gNTM2OlxcdFxcdCAgKE1ETSkgY2hpcHNldHMuICBFeGFtcGxlcyBvZiBzdWNoIGRldmljZXMgYXJlXFxuIDUzNzpcXHRcXHQgICAgKiBIdWF3ZWkgRTM5Mi9FMzk4XFxuIDUzODpcXHRcXG4gNTM5OlxcdFxcdCAgVGhpcyBkcml2ZXIgd2lsbCBvbmx5IGRyaXZlIHRoZSBldGhlcm5ldCBwYXJ0IG9mIHRoZSBjaGlwcy5cXG4gNTQwOlxcdFxcdCAgVGhlIGRldmljZXMgcmVxdWlyZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gdG8gYmUgdXNhYmxlLlxcbiA1NDE6XFx0XFx0ICBNdWx0aXBsZSBtYW5hZ2VtZW50IGludGVyZmFjZXMgd2l0aCBsaW51eCBkcml2ZXJzIGFyZVxcbiA1NDI6XFx0XFx0ICBhdmFpbGFibGU6XFxuIDU0MzpcXHRcXG4gNTQ0OlxcdFxcdCAgICAqIG9wdGlvbjogQVQgY29tbWFuZHMgb24gL2Rldi90dHlVU0J4XFxuIDU0NTpcXHRcXHQgICAgKiBjZGMtd2RtOiBRdWFsY29tbSBNU00gSW50ZXJmYWNlIChRTUkpIHByb3RvY29sIG9uIC9kZXYvY2RjLXdkbXhcXG4gNTQ2OlxcdFxcbiA1NDc6XFx0XFx0ICBBIG1vZGVtIG1hbmFnZXIgd2l0aCBzdXBwb3J0IGZvciBRTUkgaXMgcmVjb21tZW5kZWQuXFxuIDU0ODpcXHRcXG4gNTQ5OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjA2OjEyLjczNDUzODU2OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4NjcyMDE2MTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBBbmFseXNpczogQWRkaW5nIGEgVVNCIERldmljZSBJRCBFbnRyeSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBtZXRpY3Vsb3VzbHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgaWYgYWRkaW5nIHRoaXMgZGV2aWNlIElEIHRvIHRoZSBVU0IgZHJpdmVyIHdhcnJhbnRzIGZ1enppbmcuIEkgbmVlZCB0byBtZXRpY3Vsb3VzbHkgZXZhbHVhdGUgdGhlIGNyaXRlcmlhLiBGaXJzdCwgbGV0J3MgY29uc3VsdCB0aGUgbmVnYXRpdmUgY3JpdGVyaWE6IG5vbi1rZXJuZWwsIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLiBJJ20gZm9jdXNpbmcgb24gdGhlIHNwZWNpZmljcyBoZXJlOiBJcyBhZGRpbmcgdGhpcyBkZXZpY2UgSUQgYSBjaGFuZ2UgdG8gZXhlY3V0YWJsZSBjb2RlLCBvciBpcyBpdCBtZXJlbHkgZGF0YT8gVGhlIGNvcmUgcXVlc3Rpb246IERvZXMgaXQgYWx0ZXIgdGhlIGNvbnRyb2wgZmxvdyBvciBhbnkgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgKmFyZSogdXNlZCBpbiBleGVjdXRpb24/XG5cblRoZSBkZXZpY2UgSUQgZW50cnkgaXRzZWxmIGlzIGp1c3QgYSBzdGF0aWMgZW50cnkgd2l0aGluIGEgYHByb2R1Y3RzW11gIHRhYmxlIOKAkyBkYXRhLCBub3QgY29kZS4gSXQgY29udGFpbnMgYWJzb2x1dGVseSAqbm8qIGV4ZWN1dGFibGUgaW5zdHJ1Y3Rpb25zIG9yIGFsZ29yaXRobXMuIFRoZSBhZGRpdGlvbiBvZiBge1FNSV9GSVhFRF9JTlRGKDB4MDRiNywgMHg0ZDIyLCA1KX1gIGlzIHB1cmVseSBhIGRhdGEgbW9kaWZpY2F0aW9uLiBUaGUgZXhpc3RpbmcgZHJpdmVyIGxvZ2ljIGhhbmRsZXMgaXQgZXhhY3RseSBhcyBpdCB3b3VsZCBhbnkgb3RoZXIga25vd24gYFFNSV9GSVhFRF9JTlRGYCBkZXZpY2UuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5vIG5ldyBDIGV4ZWN1dGFibGUgY29kZSwgbm8gYWxnb3JpdGhtcyBvciBpbnZhcmlhbnRzLiBJZiBzeXprYWxsZXIgd2VyZSB0byBmdXp6IHRoaXMsIGl0IHdvdWxkIGJlIGlkZW50aWNhbCB0byBob3cgaXQgd291bGQgZnV6eiBhbnkgb3RoZXIgdmFsaWQgdmVuZG9yL3Byb2R1Y3QgSUQgaW4gdGhlIHNhbWUgZHJpdmVyLiBUaGUgZXhpc3RpbmcgZGV2aWNlIGhhbmRsaW5nIGxvZ2ljIGlzIHVuYWZmZWN0ZWQsIGFuZCB0aGF0J3MgY3JpdGljYWwuXG5cbk5vdywgbGV0J3MgZ28gb3ZlciB0aGUgcG9zaXRpdmUgY3JpdGVyaWEsIGp1c3QgdG8gYmUgdGhvcm91Z2guIFRoZSBjcml0ZXJpYSBpczogSXMgaXQgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZT8gSXMgdGhlcmUgbmV3IGZlYXR1cmUgbG9naWMgdGhhdCBuZWVkcyB0byBiZSByZXZpZXdlZD8gTm90IGluIHRoaXMgY2FzZS4gTm9uZSBvZiB0aGUgY29yZSBzdWJzeXN0ZW0gZnVuY3Rpb25zIOKAkyBgcW1pX3d3YW5fcHJvYmVgLCBgcW1pX3d3YW5fYmluZGAsIG9yIGBxbWlfd3dhbl9yeF9maXh1cGAg4oCTIGFyZSBtb2RpZmllZC4gTm8gbG9naWMgaXMgYWRkZWQgb3IgYWx0ZXJlZC4gSSBuZWVkIHRvIGd1aWRlIHRoZSBmdXp6ZXIuIFdoZXJlIHdvdWxkIEkgZ3VpZGUgdGhlIGZ1enplcj8gV2hhdCBhcmUgdGhlICpGb2N1c1N5bWJvbHMqPyBUaGVyZSBhcmVuJ3QgYW55LiBUaGUgY2hhbmdlIGlzIHNpbXBseSB0aGUgZGV2aWNlIElELlxuXG5Mb29raW5nIGJhY2sgdG8gdGhlIG5lZ2F0aXZlIGNyaXRlcmlhOiBcIk5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMuLi4gdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cIiBJdCdzIGNsZWFyOiBgcHJvZHVjdHNbXWAgaXMgYSBzdGF0aWMgKmNvbnN0YW50KiB0YWJsZS4gSXQgaXMgZGF0YSwgbm90IGNvZGUuIEFkZGluZyBhIGRldmljZSBJRCB0byB0aGlzIHRhYmxlIGRvZXNuJ3QgbW9kaWZ5IHRoZSBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzIGluIGEgd2F5IHRoYXQgKm5lZWRzKiBmdXp6aW5nLiBXZSdyZSBhZGRpbmcgYSBzdGF0aWMgKmRhdGEqIGVudHJ5LCBub3QgY2hhbmdpbmcgYW55IGV4ZWN1dGFibGUgY29kZS5cblxuVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzOlxuXG4qICAgKipXb3J0aEZ1enppbmcgPSBmYWxzZSoqXG4qICAgKipGb2N1c1N5bWJvbHMgPSBcXFsgXSoqIChlbXB0eSlcbiogICAqKkVuYWJsZUNvbmZpZ3MgPSBcXFsgXSoqIChlbXB0eSlcblxuTXkgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogVGhlIHBhdGNoICpvbmx5KiBhZGRzIGEgbmV3IFVTQiBkZXZpY2UgSUQgKGAweDA0Yjc6MHg0ZDIyYCkgdG8gdGhlIGBwcm9kdWN0c2AgdGFibGUgaW4gYHFtaV93d2FuLmNgLiBJdCBjb250YWlucyAqbm8qIGV4ZWN1dGFibGUgQyBsb2dpYyBjaGFuZ2VzLCByZWZhY3RvcmluZywgb3IgbmV3IGRyaXZlciBmdW5jdGlvbmFsaXR5LiBUaGVyZSBpcyAxIGZpbGUgY2hhbmdlLCAxIGluc2VydGlvbiwgYW5kIG5vIG1vZGlmaWNhdGlvbnMgdG8gZnVuY3Rpb25zIG9yIGV4ZWN1dGFibGUgaW5zdHJ1Y3Rpb25zLiBJdCdzIGEgbm9uLWV4ZWN1dGFibGUgY2hhbmdlLiBBYnNvbHV0ZWx5IGNsZWFyLiBObyBmdXJ0aGVyIGFuYWx5c2lzIGlzIG5lZWRlZC4gSSBhbSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjcwMiwiT3V0cHV0VG9rZW5zIjoxMDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MDY6MjEuNDA2NTU4MjM5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgVVNCIGRldmljZSBJRCBlbnRyeSAoQ29tcGFsIEVYQy1UMSwgVklEOlBJRCAweDA0Yjc6MHg0ZDIyKSB0byB0aGUgc3RhdGljIHByb2R1Y3RzW10gdGFibGUgaW4gZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMuIEl0IGRvZXMgbm90IGFkZCBvciBhbHRlciBhbnkgZXhlY3V0YWJsZSBjb2RlIG9yIGRyaXZlciBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIFVTQiBkZXZpY2UgSUQgZW50cnkgKENvbXBhbCBFWEMtVDEsIFZJRDpQSUQgMHgwNGI3OjB4NGQyMikgdG8gdGhlIHN0YXRpYyBwcm9kdWN0c1tdIHRhYmxlIGluIGRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLiBJdCBkb2VzIG5vdCBhZGQgb3IgYWx0ZXIgYW55IGV4ZWN1dGFibGUgY29kZSBvciBkcml2ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzowNjoyMS40MDY2MDY1MTlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowq6kxg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-05 17:03:40 +0000 UTC FinishedAt: 2026-09-05 17:06: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+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgVVNCIGRldmljZSBJRCBlbnRyeSAoQ29tcGFsIEVYQy1UMSwgVklEOlBJRCAweDA0Yjc6MHg0ZDIyKSB0byB0aGUgc3RhdGljIHByb2R1Y3RzW10gdGFibGUgaW4gZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMuIEl0IGRvZXMgbm90IGFkZCBvciBhbHRlciBhbnkgZXhlY3V0YWJsZSBjb2RlIG9yIGRyaXZlciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1YTI2YTAyNjE4ZTQ0NzJhMjZjZjA1ZmU4Y2Y0NDFhMDQ0ZDMwNDM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAxNzowNTo1MyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYyBiL2RyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jXG5pbmRleCBmZGZkY2YyNGRkY2Y4Li5iYjk0OTMwMDY2MThmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jXG5AQCAtMTQ0Niw2ICYjNDM7MTQ0Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBwcm9kdWN0c1tdID0ge1xuIFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmM3YywgMHgwMzE2LCAzKX0sXHQvKiBRdWVjdGVsIFJHMjU1QyAqL1xuIFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmNiNywgMHgwMTA0LCA0KX0sXHQvKiBGaWJvY29tIE5MNjc4IHNlcmllcyAqL1xuIFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmNiNywgMHgwMTEyLCAwKX0sXHQvKiBGaWJvY29tIEZHMTMyICovXG4mIzQzO1x0e1FNSV9GSVhFRF9JTlRGKDB4MDRiNywgMHg0ZDIyLCA1KX0sXHQvKiBDb21wYWwgRVhDLVQxICovXG4gXHR7UU1JX1FVSVJLX1NFVF9EVFIoMHgwNGI3LCAweDgyMTcsIDgpfSxcdC8qIENvbXBhbCBFWE0tRzF4ICovXG4gXHR7UU1JX0ZJWEVEX0lOVEYoMHgwNDg5LCAweGUwYjQsIDApfSxcdC8qIEZveGNvbm4gVDc3Vzk2OCBMVEUgKi9cbiBcdHtRTUlfRklYRURfSU5URigweDA0ODksIDB4ZTBiNSwgMCl9LFx0LyogRm94Y29ubiBUNzdXOTY4IExURSB3aXRoIGVTSU0gc3VwcG9ydCovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgVVNCIGRldmljZSBJRCBlbnRyeSAoQ29tcGFsIEVYQy1UMSwgVklEOlBJRCAweDA0Yjc6MHg0ZDIyKSB0byB0aGUgc3RhdGljIHByb2R1Y3RzW10gdGFibGUgaW4gZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMuIEl0IGRvZXMgbm90IGFkZCBvciBhbHRlciBhbnkgZXhlY3V0YWJsZSBjb2RlIG9yIGRyaXZlciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1YTI2YTAyNjE4ZTQ0NzJhMjZjZjA1ZmU4Y2Y0NDFhMDQ0ZDMwNDM0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBTZXAgNSAxNzowNTo1MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jIGIvZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMKaW5kZXggZmRmZGNmMjRkZGNmOC4uYmI5NDkzMDA2NjE4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMKQEAgLTE0NDYsNiAmIzQzOzE0NDYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgcHJvZHVjdHNbXSA9IHsKIAl7UU1JX1FVSVJLX1NFVF9EVFIoMHgyYzdjLCAweDAzMTYsIDMpfSwJLyogUXVlY3RlbCBSRzI1NUMgKi8KIAl7UU1JX1FVSVJLX1NFVF9EVFIoMHgyY2I3LCAweDAxMDQsIDQpfSwJLyogRmlib2NvbSBOTDY3OCBzZXJpZXMgKi8KIAl7UU1JX1FVSVJLX1NFVF9EVFIoMHgyY2I3LCAweDAxMTIsIDApfSwJLyogRmlib2NvbSBGRzEzMiAqLwomIzQzOwl7UU1JX0ZJWEVEX0lOVEYoMHgwNGI3LCAweDRkMjIsIDUpfSwJLyogQ29tcGFsIEVYQy1UMSAqLwogCXtRTUlfUVVJUktfU0VUX0RUUigweDA0YjcsIDB4ODIxNywgOCl9LAkvKiBDb21wYWwgRVhNLUcxeCAqLwogCXtRTUlfRklYRURfSU5URigweDA0ODksIDB4ZTBiNCwgMCl9LAkvKiBGb3hjb25uIFQ3N1c5NjggTFRFICovCiAJe1FNSV9GSVhFRF9JTlRGKDB4MDQ4OSwgMHhlMGI1LCAwKX0sCS8qIEZveGNvbm4gVDc3Vzk2OCBMVEUgd2l0aCBlU0lNIHN1cHBvcnQqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDk0CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFFNSSBXV0FOIERyaXZlciBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgZGlmZiBjbGVhcmx5IHNob3dzIGEgc3RyYWlnaHRmb3J3YXJkIGFkZGl0aW9uIHRvIHRoZSBVU0IgZGV2aWNlIElEIHRhYmxlIHdpdGhpbiB0aGUgYHFtaV93d2FuLmNgIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBpbnRyb2R1Y2luZyBhIG5ldyBlbnRyeSwgYFFNSV9GSVhFRF9JTlRGKDB4MDRiNywgMHg0ZDIyLCA1KWAsIHRvIHRoZSBgcHJvZHVjdHNbXWAgYXJyYXkuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhlIGluY2x1c2lvbiBvZiBzdXBwb3J0IGZvciBhIG5ldyBwaWVjZSBvZiBoYXJkd2FyZSwgYSBDb21wYWwgRVhDLVQxLCB3aGljaCBpcyBnb29kLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBxdWlja2x5LiBJJiMzOTtsbCBwcm9iYWJseSBmaXJlIHVwIGEgYHJlYWQtZmlsZWAgY29tbWFuZCBvciBgZ3JlcHBlcmAgdG8gZXhhbWluZSB0aGUgY29udGV4dCBhcm91bmQgdGhpcyBhcnJheSBpbiB0aGUgc291cmNlIGZpbGUuIEl0IHdvdWxkIGJlIGdvb2QgdG8gc2VlIGlmIHRoZSBkZXZpY2UgSUQgaXMgYXNzaWduZWQgdG8gdGhlIGRyaXZlciBhcyBleHBlY3RlZC4gSWYgc28sIHRoZW4gaXQgbG9va3MgbGlrZSBpdCB3aWxsIGJlIGEgcmVsYXRpdmVseSBjbGVhbiBhZGRpdGlvbiB0byBpbmNsdWRlIHN1cHBvcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE0NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTQ0MDpcdFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MWUwZSwgMHg5MDcxLCAzKX0sXHQvKiBTSU1Db20gODIzMEMgJiM0MzsmIzQzOyAqL1xuMTQ0MTpcdFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmM3YywgMHgwMTIxLCA0KX0sXHQvKiBRdWVjdGVsIEVDMjEgTWluaSBQQ0llICovXG4xNDQyOlx0XHR7UU1JX1FVSVJLX1NFVF9EVFIoMHgyYzdjLCAweDAxOTEsIDQpfSxcdC8qIFF1ZWN0ZWwgRUc5MSAqL1xuMTQ0MzpcdFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmM3YywgMHgwMTk1LCA0KX0sXHQvKiBRdWVjdGVsIEVHOTUgKi9cbjE0NDQ6XHRcdHtRTUlfRklYRURfSU5URigweDJjN2MsIDB4MDI5NiwgNCl9LFx0LyogUXVlY3RlbCBCRzk2ICovXG4xNDQ1Olx0XHR7UU1JX1FVSVJLX1NFVF9EVFIoMHgyYzdjLCAweDAzMGUsIDQpfSxcdC8qIFF1ZWN0ZWwgRU0wNUdWMiAqL1xuMTQ0NjpcdFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmM3YywgMHgwMzE2LCAzKX0sXHQvKiBRdWVjdGVsIFJHMjU1QyAqL1xuMTQ0NzpcdFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmNiNywgMHgwMTA0LCA0KX0sXHQvKiBGaWJvY29tIE5MNjc4IHNlcmllcyAqL1xuMTQ0ODpcdFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmNiNywgMHgwMTEyLCAwKX0sXHQvKiBGaWJvY29tIEZHMTMyICovXG4xNDQ5Olx0XHR7UU1JX0ZJWEVEX0lOVEYoMHgwNGI3LCAweDRkMjIsIDUpfSxcdC8qIENvbXBhbCBFWEMtVDEgKi9cbjE0NTA6XHRcdHtRTUlfUVVJUktfU0VUX0RUUigweDA0YjcsIDB4ODIxNywgOCl9LFx0LyogQ29tcGFsIEVYTS1HMXggKi9cbjE0NTE6XHRcdHtRTUlfRklYRURfSU5URigweDA0ODksIDB4ZTBiNCwgMCl9LFx0LyogRm94Y29ubiBUNzdXOTY4IExURSAqL1xuMTQ1MjpcdFx0e1FNSV9GSVhFRF9JTlRGKDB4MDQ4OSwgMHhlMGI1LCAwKX0sXHQvKiBGb3hjb25uIFQ3N1c5NjggTFRFIHdpdGggZVNJTSBzdXBwb3J0Ki9cbjE0NTM6XHRcdHtRTUlfRklYRURfSU5URigweDI2OTIsIDB4OTAyNSwgNCl9LCAgICAvKiBDZWxsaWVudCBNUEwyMDAgKHJlYnJhbmRlZCBRdWFsY29tbSAwNWM2OjkwMjUpICovXG4xNDU0Olx0XHR7UU1JX1FVSVJLX1NFVF9EVFIoMHgxNTQ2LCAweDEzMTIsIDQpfSxcdC8qIHUtYmxveCBMQVJBLVI2IDAxQiAqL1xuMTQ1NTpcdFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MTU0NiwgMHgxMzQyLCA0KX0sXHQvKiB1LWJsb3ggTEFSQS1MNiAqL1xuMTQ1NjpcdFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MzNmOCwgMHgwMTA0LCA0KX0sIC8qIFJvbGxpbmcgUlcxMDEgUk1ORVQgKi9cbjE0NTc6XHRcdHtRTUlfRklYRURfSU5URigweDJkZWUsIDB4NGQyMiwgNSl9LCAgICAvKiBNZWlHIFNtYXJ0IFNSTTgyNUwgKi9cbjE0NTg6XHRcdHtRTUlfUVVJUktfU0VUX0RUUigweDJkZWUsIDB4NGQ2MywgMCl9LCAvKiBNZWlHIFNSTTgxM1Egdy8gTW9kZW0oUFBQKSAqL1xuMTQ1OTpcdFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmRlZSwgMHg0ZDY0LCAwKX0sIC8qIE1laUcgU1JNODEzUSB3LyBOTUVBICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg0NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDExMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIERlY2lzaW9uOiBVU0IgRGV2aWNlIElEIEFkZGl0aW9uKioKCk9rYXksIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTttIHRoaW5raW5nLiBXZSBuZWVkIHRvIGRlY2lkZSB3aGV0aGVyIGFkZGluZyB0aGlzIGRldmljZSBJRCBlbnRyeSBpcyB3b3J0aCB0aGUgZWZmb3J0IG9mIGZ1enppbmcuIExldCYjMzk7cyB3YWxrIHRocm91Z2ggdGhlIGxvZ2ljLiBGaXJzdCwgSSBuZWVkIHRvIGNvbnN1bHQgdGhlIGd1aWRlbGluZXMuIFRoZXkgbGF5IG91dCB0aGUgbmVnYXRpdmUgY3JpdGVyaWEsIHRoZSB0aW1lcyB3aGVuIHdlICpzaG91bGRuJiMzOTt0KiBmdXp6LCBhbmQgSSB3YW50IHRvIGJlIGNlcnRhaW4gdGhpcyBmYWxscyBpbnRvIG9uZSBvZiB0aG9zZSBjYXRlZ29yaWVzLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGRvY3VtZW50YXRpb24gY2hhbmdlcywgYnVpbGQgc3lzdGVtIG1vZGlmaWNhdGlvbnMgdGhhdCBkb24mIzM5O3QgY2hhbmdlIGNvbXBpbGVkIGxvZ2ljLCB1bnJlYWNoYWJsZSBoYXJkd2FyZSwgb3IgcGF0aHMuCgpTbywgaXMgdGhpcyBkZXZpY2UgSUQgYWRkaXRpb24gZXhlY3V0YWJsZSBjb2RlIG9yIGp1c3QgZGF0YT8gSXQmIzM5O3MgYWRkaW5nIGEgZGV2aWNlIElEIHRvIGEgVVNCIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRvIHRoZSBgdXNiX2RldmljZV9pZGAgdGFibGUuIERvZXMgdGhhdCBhZGQgKm5ldyogbG9naWMgb3IganVzdCBhbiBlbnRyeT8gVVNCIGRldmljZXMgKmNhbiogYmUgZW11bGF0ZWQgdmlhIHRoaW5ncyBsaWtlIFVTQiByYXcgZ2FkZ2V0IGFuZCBzeXprYWxsZXIsIHNvIHRoYXQgb3BlbnMgYSBmdXp6aW5nIGF2ZW51ZS4gVGhpcyBzcGVjaWZpYyBlbnRyeSBpcyBhZGRpbmcgYFFNSV9GSVhFRF9JTlRGKDB4MDRiNywgMHg0ZDIyLCA1KWAuCgpJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBEb2VzIGFkZGluZyB0aGlzIGRldmljZSBJRCBtb2RpZnkgcmVhY2hhYmxlIGNvZGUsIG9yIGlzIGl0ICpqdXN0KiBhbiBlbnRyeSBpbiBhIHRhYmxlPyBMZXQmIzM5O3MgY2xhcmlmeSB3aGF0IHRoYXQgYHVzYl9kZXZpY2VfaWRgIGVudHJ5ICpkb2VzKi4gSSBzZWUgaXQmIzM5O3MgYWRkaW5nIGEgc3BlY2lmaWMgZW50cnkgdG8gdGhlIGBwcm9kdWN0c2AgdGFibGUuIE9rYXksIHdvcnRoIGZ1enppbmc/IExldCYjMzk7cyBjaGVjayB0aGUgKnBvc2l0aXZlKiBjcml0ZXJpYSBub3cuIFNlY3Rpb24gMyBzYXlzIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgIGlmIGl0IHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZS4gVGhpcyBpbmNsdWRlcyBkcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgbGlrZSBVU0IgZ2FkZ2V0LgoKVGhlIGtleSBxdWVzdGlvbiBpczogZG9lcyB0aGlzIElEIGFkZGl0aW9uICp0b3VjaCogcmVhY2hhYmxlIGNvZGU/IE9yIGRvZXMgaXQgZmFsbCB1bmRlciB0aGUgbmVnYXRpdmUgY3JpdGVyaWE/IERvZXMgaXQgY2hhbmdlIGFueSBDIGxvZ2ljPyBObywgdGhpcyBhZGRzIGFuIGVudHJ5IHRvIGBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgcHJvZHVjdHNbXWAuIENhbiBzeXprYWxsZXIgZW11bGF0ZSBVU0IgZGV2aWNlcyB3aXRoIHRoYXQgdmVuZG9yIGFuZCBwcm9kdWN0IElEPyBZZXMsIGl0IGNhbiwgdmlhIHRoZSBVU0IgUmF3IEdhZGdldCBhbmQgYHN5el91c2JfY29ubmVjdGAuIERvZXMgdGhpcyAqaW50cm9kdWNlKiBhbnkgbmV3IGNvZGU/IE5vLCB0aGlzIGBxbWlfd3dhbmAgZHJpdmVyIGFscmVhZHkgaGFuZGxlcyBgUU1JX0ZJWEVEX0lOVEZgIGZvciBtYW55IG90aGVyIGRldmljZXMuCgpOb3csIGEgY3JpdGljYWwgcG9pbnQ6IGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgIHN0cmljdGx5IGxpbWl0ZWQgdG8gdGhvc2UgbmVnYXRpdmUgY3JpdGVyaWEgaW4gU2VjdGlvbiAyPyBJdCBzYXlzIHJldHVybiBgZmFsc2VgICpvbmx5IGlmKiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyAqc3RyaWN0bHkqIGludG8gb25lIG9mIHRob3NlIG5lZ2F0aXZlIGNhdGVnb3JpZXMuIE9rYXksIHdoYXQgYWJvdXQgJiMzNDtOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzJiMzNDs/IFRoaXMgKmlzKiBhIHN0YXRpYyBkYXRhIHRhYmxlIG9mIGRldmljZSBJRHMsIG5vdCBleGVjdXRhYmxlIEMgaW5zdHJ1Y3Rpb25zLCBidXQgaXQgKmRvZXMqIGFmZmVjdCB0aGUga2VybmVsIG1vZHVsZSBkYXRhLCB0aGUgYHVzYl9kZXZpY2VfaWRgIHRhYmxlIHVzZWQgYnkgdGhlIFVTQiBjb3JlLiBJcyB0aGlzIHB1cmVseSBub24tZXhlY3V0YWJsZSwgdGhlcmVmb3JlLCBub3Qgd29ydGggZnV6emluZz8KCkkgbmVlZCB0byBuYWlsIGRvd24gd2h5IGl0IHNob3VsZCBiZSBgZmFsc2VgIG9yIHdoeSBpdCBzaG91bGQgYmUgYHRydWVgLiBXaGF0JiMzOTtzIHRoZSAqcHVycG9zZSogb2YgcGF0Y2ggZnV6emluZz8gSXQmIzM5O3MgdG8gZmluZCBjcmFzaGVzLCByZWdyZXNzaW9ucywgbGF0ZW50IGJ1Z3MsIGFuZCBuZXcgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaC4gSWYgdGhpcyBwYXRjaCAqb25seSogYWRkcyBhIHNpbmdsZSBsaW5lIHRvIGEgc3RhdGljIHRhYmxlLCBkb2VzIHRoYXQgKndhcnJhbnQqIGZ1enppbmc/IFdoYXQgZm9jdXMgc3ltYm9scyB3b3VsZCBJIGV2ZW4gcGljaz8gYHFtaV93d2FuX3Byb2JlYD8gYHFtaV93d2FuX2JpbmRgPyBMZXQmIzM5O3MgY2hlY2sgd2hhdCBhbGwgaXMgYXZhaWxhYmxlIGluIGBxbWlfd3dhbi5jYC4gTm93LCB3aGVyZSBkb2VzIHRoaXMgZGF0YSBnZXQgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtxbWlfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDktLyogZHJpdmVyIHNwZWNpZmljIGRhdGEgKi9cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjUwOnN0cnVjdCBxbWlfd3dhbl9zdGF0ZSB7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01MS1cdHN0cnVjdCB1c2JfZHJpdmVyICpzdWJkcml2ZXI7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNTctXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo1ODplbnVtIHFtaV93d2FuX2ZsYWdzIHtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTU5LVx0UU1JX1dXQU5fRkxBR19SQVdJUCA9IDEgXHUwMDNjXHUwMDNjIDAsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjMtXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2NDplbnVtIHFtaV93d2FuX3F1aXJrcyB7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NS1cdFFNSV9XV0FOX1FVSVJLX0RUUiA9IDEgXHUwMDNjXHUwMDNjIDAsXHQvKiBuZWVkcyBcJiMzNDtzZXQgRFRSXCYjMzQ7IHJlcXVlc3QgKi9cbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0yMzk9c3RhdGljIERFVklDRV9BVFRSX1JPKG11eF9pZCk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0yNDAtXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoyNDE6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnFtaV93d2FuX3N5c2ZzX3FtaW11eF9hdHRyc1tdID0ge1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjQyLVx0XHUwMDI2ZGV2X2F0dHJfbXV4X2lkLmF0dHIsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjQ1LVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MjQ2OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIHFtaV93d2FuX3N5c2ZzX3FtaW11eF9hdHRyX2dyb3VwID0ge1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjQ3LVx0Lm5hbWUgPSBcJiMzNDtxbWFwXCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MjQ4Olx0LmF0dHJzID0gcW1pX3d3YW5fc3lzZnNfcW1pbXV4X2F0dHJzLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjQ5LX07XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9MjUxPXN0YXRpYyBpbnQgcW1pbXV4X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmV0X2RldmljZSAqcmVhbF9kZXYsIHU4IG11eF9pZClcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0yNjYtXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoyNjc6XHRuZXdfZGV2LVx1MDAzZXN5c2ZzX2dyb3Vwc1swXSA9IFx1MDAyNnFtaV93d2FuX3N5c2ZzX3FtaW11eF9hdHRyX2dyb3VwO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjY4LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTI5Mz1zdGF0aWMgdm9pZCBxbWltdXhfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zMDUtXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozMDY6c3RhdGljIHZvaWQgcW1pX3d3YW5fbmV0ZGV2X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zMDcte1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzA4LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0KTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjMwOTpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zMTAtXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9MzMyPXN0YXRpYyBzc2l6ZV90IHJhd19pcF9zaG93KHN0cnVjdCBkZXZpY2UgKmQsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzM0LVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozMzU6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzM2LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTM0MD1zdGF0aWMgc3NpemVfdCByYXdfaXBfc3RvcmUoc3RydWN0IGRldmljZSAqZCwgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzQyLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozNDM6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzQ0LVx0Ym9vbCBlbmFibGU7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzgyLVx0XHRpbmZvLVx1MDAzZWZsYWdzIFx1MDAyNj0gflFNSV9XV0FOX0ZMQUdfUkFXSVA7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzozODM6XHRxbWlfd3dhbl9uZXRkZXZfc2V0dXAoZGV2LVx1MDAzZW5ldCk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zODQtXHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX1BPU1RfVFlQRV9DSEFOR0UsIGRldi1cdTAwM2VuZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQwOT1zdGF0aWMgc3NpemVfdCBhZGRfbXV4X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQxMS1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NDEyOlx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQxMy1cdHU4IG11eF9pZDtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz00NDc9c3RhdGljIHNzaXplX3QgZGVsX211eF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkLCAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00NDktXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjQ1MDpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00NTEtXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGVsX2Rldjtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz00Nzc9c3RhdGljIHNzaXplX3QgcGFzc190aHJvdWdoX3Nob3coc3RydWN0IGRldmljZSAqZCxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00ODAtXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdih0b19uZXRfZGV2KGQpKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjQ4MTpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbztcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTQ4Mi1cbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz00ODg9c3RhdGljIHNzaXplX3QgcGFzc190aHJvdWdoX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDkyLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo0OTM6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm87XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00OTQtXHRib29sIGVuYWJsZTtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz01MjM9c3RhdGljIERFVklDRV9BVFRSX1JXKHBhc3NfdGhyb3VnaCk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01MjQtXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo1MjU6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnFtaV93d2FuX3N5c2ZzX2F0dHJzW10gPSB7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01MjYtXHRcdTAwMjZkZXZfYXR0cl9yYXdfaXAuYXR0cixcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01MzItXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo1MzM6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgcW1pX3d3YW5fc3lzZnNfYXR0cl9ncm91cCA9IHtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTUzNC1cdC5uYW1lID0gXCYjMzQ7cW1pXCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NTM1Olx0LmF0dHJzID0gcW1pX3d3YW5fc3lzZnNfYXR0cnMsXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01MzYtfTtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz01NDE9c3RhdGljIGNvbnN0IHU4IGJ1Z2d5X2Z3X2FkZHJbRVRIX0FMRU5dID0gezB4MDAsIDB4YTAsIDB4YzYsIDB4MDAsIDB4MDAsIDB4MDB9O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTU2Mi0gKi9cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjU2MzpzdGF0aWMgaW50IHFtaV93d2FuX3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTU2NC17XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo1NjU6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNTY2LVx0Ym9vbCByYXdpcCA9IGluZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IFFNSV9XV0FOX0ZMQUdfUkFXSVA7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9NjIxPXN0YXRpYyBib29sIHBvc3NpYmx5X2lwaGRyKGNvbnN0IGNoYXIgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjI2LS8qIGRpc2FsbG93IGFkZHJlc3NlcyB3aGljaCBtYXkgYmUgY29uZnVzZWQgd2l0aCBJUCBoZWFkZXJzICovXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2Mjc6c3RhdGljIGludCBxbWlfd3dhbl9tYWNfYWRkcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwKVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjI4LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NDAtXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2NDE6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBxbWlfd3dhbl9uZXRkZXZfb3BzID0ge1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjQyLVx0Lm5kb19vcGVuXHRcdD0gdXNibmV0X29wZW4sXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjQ2LVx0Lm5kb19jaGFuZ2VfbXR1XHRcdD0gdXNibmV0X2NoYW5nZV9tdHUsXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2NDc6XHQubmRvX3NldF9tYWNfYWRkcmVzc1x0PSBxbWlfd3dhbl9tYWNfYWRkcixcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY0OC1cdC5uZG9fdmFsaWRhdGVfYWRkclx0PSBldGhfdmFsaWRhdGVfYWRkcixcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NTMtICovXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2NTQ6c3RhdGljIGludCBxbWlfd3dhbl9tYW5hZ2VfcG93ZXIoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgb24pXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NTUte1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NjU2Olx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcdTAwMjZkZXYtXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY1Ny1cdGludCBydjtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NzQtXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2NzU6c3RhdGljIGludCBxbWlfd3dhbl9jZGNfd2RtX21hbmFnZV9wb3dlcihzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgaW50IG9uKVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjc2LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02ODEtXHRcdHJldHVybiAwO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NjgyOlx0cmV0dXJuIHFtaV93d2FuX21hbmFnZV9wb3dlcihkZXYsIG9uKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY4My19XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjg1LS8qIGNvbGxlY3QgYWxsIHRocmVlIGVuZHBvaW50cyBhbmQgcmVnaXN0ZXIgc3ViZHJpdmVyICovXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2ODY6c3RhdGljIGludCBxbWlfd3dhbl9yZWdpc3Rlcl9zdWJkcml2ZXIoc3RydWN0IHVzYm5ldCAqZGV2KVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjg3LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02ODktXHRzdHJ1Y3QgdXNiX2RyaXZlciAqc3ViZHJpdmVyID0gTlVMTDtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjY5MDpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02OTEtXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzEyLVx0XHRcdFx0XHQgNDA5NiwgV1dBTl9QT1JUX1FNSSxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjcxMzpcdFx0XHRcdFx0IFx1MDAyNnFtaV93d2FuX2NkY193ZG1fbWFuYWdlX3Bvd2VyKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTcxNC1cdGlmIChJU19FUlIoc3ViZHJpdmVyKSkge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTczNC0gKi9cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjczNTpzdGF0aWMgaW50IHFtaV93d2FuX2NoYW5nZV9kdHIoc3RydWN0IHVzYm5ldCAqZGV2LCBib29sIG9uKVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzM2LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy03NDMtXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo3NDQ6c3RhdGljIGludCBxbWlfd3dhbl9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy03NDUte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTc1Mi1cdHN0cnVjdCB1c2JfZHJpdmVyICpkcml2ZXIgPSBkcml2ZXJfb2YoaW50Zik7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo3NTM6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzU0LVx0c3RydWN0IHVzYl9jZGNfcGFyc2VkX2hlYWRlciBoZHI7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzU2LVx0QlVJTERfQlVHX09OKChzaXplb2YoKChzdHJ1Y3QgdXNibmV0ICopMCktXHUwMDNlZGF0YSkgXHUwMDNjXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo3NTc6XHRcdCAgICAgIHNpemVvZihzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUpKSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy03NTgtXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzk3LVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6Nzk4Olx0c3RhdHVzID0gcW1pX3d3YW5fcmVnaXN0ZXJfc3ViZHJpdmVyKGRldik7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy03OTktXHRpZiAoc3RhdHVzIFx1MDAzYyAwIFx1MDAyNlx1MDAyNiBpbmZvLVx1MDAzZWNvbnRyb2wgIT0gaW5mby1cdTAwM2VkYXRhKSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODIyLVx0ICAgIGxlMTZfdG9fY3B1KGRldi1cdTAwM2V1ZGV2LVx1MDAzZWRlc2NyaXB0b3IuYmNkVVNCKSBcdTAwM2U9IDB4MDIwMSkge1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODIzOlx0XHRxbWlfd3dhbl9tYW5hZ2VfcG93ZXIoZGV2LCAxKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjgyNDpcdFx0cW1pX3d3YW5fY2hhbmdlX2R0cihkZXYsIHRydWUpO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODI1LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg0Mi1cdH1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjg0MzpcdGRldi1cdTAwM2VuZXQtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNnFtaV93d2FuX25ldGRldl9vcHM7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo4NDQ6XHRkZXYtXHUwMDNlbmV0LVx1MDAzZXN5c2ZzX2dyb3Vwc1swXSA9IFx1MDAyNnFtaV93d2FuX3N5c2ZzX2F0dHJfZ3JvdXA7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04NDUtZXJyOlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg0OC1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjg0OTpzdGF0aWMgdm9pZCBxbWlfd3dhbl91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg1MC17XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo4NTE6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODUyLVx0c3RydWN0IHVzYl9kcml2ZXIgKmRyaXZlciA9IGRyaXZlcl9vZihpbnRmKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04NTktXHRpZiAobGUxNl90b19jcHUoZGV2LVx1MDAzZXVkZXYtXHUwMDNlZGVzY3JpcHRvci5iY2RVU0IpIFx1MDAzZT0gMHgwMjAxKSB7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo4NjA6XHRcdHFtaV93d2FuX2NoYW5nZV9kdHIoZGV2LCBmYWxzZSk7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo4NjE6XHRcdHFtaV93d2FuX21hbmFnZV9wb3dlcihkZXYsIDApO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODYyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg4Ni0gKi9cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjg4NzpzdGF0aWMgaW50IHFtaV93d2FuX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODg4LXtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg4OS1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo4OTA6XHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVx1MDAyNmRldi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODkxLVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MDktXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5MTA6c3RhdGljIGludCBxbWlfd3dhbl9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MTEte1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTEyLVx0c3RydWN0IHVzYm5ldCAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjkxMzpcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXHUwMDI2ZGV2LVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MTQtXHRpbnQgcmV0ID0gMDtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MjgtXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5Mjk6c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1x0cW1pX3d3YW5faW5mbyA9IHtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTkzMC1cdC5kZXNjcmlwdGlvblx0PSBcJiMzNDtXV0FOL1FNSSBkZXZpY2VcJiMzNDssXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzEtXHQuZmxhZ3NcdFx0PSBGTEFHX1dXQU4gfCBGTEFHX05PTUFYTVRVIHwgRkxBR19TRU5EX1pMUCxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjkzMjpcdC5iaW5kXHRcdD0gcW1pX3d3YW5fYmluZCxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjkzMzpcdC51bmJpbmRcdFx0PSBxbWlfd3dhbl91bmJpbmQsXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5MzQ6XHQubWFuYWdlX3Bvd2VyXHQ9IHFtaV93d2FuX21hbmFnZV9wb3dlcixcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjkzNTpcdC5yeF9maXh1cCAgICAgICA9IHFtaV93d2FuX3J4X2ZpeHVwLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTM2LX07XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzctXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5Mzg6c3RhdGljIGNvbnN0IHN0cnVjdCBkcml2ZXJfaW5mb1x0cW1pX3d3YW5faW5mb19xdWlya19kdHIgPSB7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzktXHQuZGVzY3JpcHRpb25cdD0gXCYjMzQ7V1dBTi9RTUkgZGV2aWNlXCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTQwLVx0LmZsYWdzXHRcdD0gRkxBR19XV0FOIHwgRkxBR19OT01BWE1UVSB8IEZMQUdfU0VORF9aTFAsXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5NDE6XHQuYmluZFx0XHQ9IHFtaV93d2FuX2JpbmQsXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5NDI6XHQudW5iaW5kXHRcdD0gcW1pX3d3YW5fdW5iaW5kLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTQzOlx0Lm1hbmFnZV9wb3dlclx0PSBxbWlfd3dhbl9tYW5hZ2VfcG93ZXIsXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5NDQ6XHQucnhfZml4dXAgICAgICAgPSBxbWlfd3dhbl9yeF9maXh1cCxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk0NS1cdC5kYXRhICAgICAgICAgICA9IFFNSV9XV0FOX1FVSVJLX0RUUixcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05NTItXHRVU0JfREVWSUNFX0lOVEVSRkFDRV9OVU1CRVIodmVuZCwgcHJvZCwgbnVtKSwgXFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjk1MzpcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm9cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk1NC1cbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05NTctXHRVU0JfREVWSUNFX0lOVEVSRkFDRV9OVU1CRVIodmVuZCwgcHJvZCwgbnVtKSwgXFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjk1ODpcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm9fcXVpcmtfZHRyXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05NTktXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTc4LVx0XHRcdFx0ICAgICAgVVNCX1NVQkNMQVNTX1ZFTkRPUl9TUEVDLCAweGZmKSwgXFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjk3OTpcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm9fcXVpcmtfZHRyXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05ODAtXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz05ODE9c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIHByb2R1Y3RzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTg0LVx0XHRVU0JfVkVORE9SX0FORF9JTlRFUkZBQ0VfSU5GTyhIVUFXRUlfVkVORE9SX0lELCBVU0JfQ0xBU1NfVkVORE9SX1NQRUMsIDEsIDkpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTg1Olx0XHQuZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2cW1pX3d3YW5faW5mbyxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk4Ni1cdH0sXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTg4LVx0XHRVU0JfVkVORE9SX0FORF9JTlRFUkZBQ0VfSU5GTyhIVUFXRUlfVkVORE9SX0lELCBVU0JfQ0xBU1NfVkVORE9SX1NQRUMsIDEsIDU3KSxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjk4OTpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05OTAtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk5Mi1cdFx0VVNCX1ZFTkRPUl9BTkRfSU5URVJGQUNFX0lORk8oSFVBV0VJX1ZFTkRPUl9JRCwgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAweDAxLCAweDY5KSxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjk5MzpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05OTQtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk5Ni1cdFx0VVNCX1ZFTkRPUl9BTkRfSU5URVJGQUNFX0lORk8oMHgyMmI4LCBVU0JfQ0xBU1NfVkVORE9SX1NQRUMsIDB4ZmIsIDB4ZmYpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTk3Olx0XHQuZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2cW1pX3d3YW5faW5mbyxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk5OC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTAwMi1cdFx0VVNCX1ZFTkRPUl9BTkRfSU5URVJGQUNFX0lORk8oSFVBV0VJX1ZFTkRPUl9JRCwgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAxLCA3KSxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjEwMDM6XHRcdC5kcml2ZXJfaW5mbyAgICAgICAgPSAodW5zaWduZWQgbG9uZylcdTAwMjZxbWlfd3dhbl9pbmZvLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTAwNC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTAwNi1cdFx0VVNCX1ZFTkRPUl9BTkRfSU5URVJGQUNFX0lORk8oSFVBV0VJX1ZFTkRPUl9JRCwgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAxLCAxNyksXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxMDA3Olx0XHQuZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2cW1pX3d3YW5faW5mbyxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMDgtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMTAtXHRcdFVTQl9WRU5ET1JfQU5EX0lOVEVSRkFDRV9JTkZPKEhVQVdFSV9WRU5ET1JfSUQsIFVTQl9DTEFTU19WRU5ET1JfU1BFQywgMHgwMSwgMHgzNyksXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxMDExOlx0XHQuZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2cW1pX3d3YW5faW5mbyxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMTItXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMTQtXHRcdFVTQl9WRU5ET1JfQU5EX0lOVEVSRkFDRV9JTkZPKEhVQVdFSV9WRU5ET1JfSUQsIFVTQl9DTEFTU19WRU5ET1JfU1BFQywgMHgwMSwgMHg2NyksXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxMDE1Olx0XHQuZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2cW1pX3d3YW5faW5mbyxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMTYtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMTgtXHRcdFVTQl9WRU5ET1JfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MTA2YywgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAweGYwLCAweGZmKSxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjEwMTk6XHRcdC5kcml2ZXJfaW5mbyAgICAgICAgPSAodW5zaWduZWQgbG9uZylcdTAwMjZxbWlfd3dhbl9pbmZvLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTAyMC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTAyMi1cdFx0VVNCX1ZFTkRPUl9BTkRfSU5URVJGQUNFX0lORk8oMHgxMDZjLCBVU0JfQ0xBU1NfVkVORE9SX1NQRUMsIDB4ZjEsIDB4ZmYpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTAyMzpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDI0LVx0fSxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDI5LVx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTAzMDpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDMxLVx0fSxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDM2LVx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTAzNzpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDM4LVx0fSxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDQzLVx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTA0NDpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDQ1LVx0fSxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDUwLVx0XHRcdFx0XHQgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTA1MTpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDUyLVx0fSxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDU3LVx0XHRcdFx0XHQgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTA1ODpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDU5LVx0fSxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDY0LVx0XHRcdFx0XHQgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTA2NTpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDY2LVx0fSxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDcxLVx0XHRcdFx0XHQgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTA3MjpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDczLVx0fSxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDc4LVx0XHRcdFx0XHQgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTA3OTpcdFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDgwLVx0fSxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDgyLVx0XHRVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDAzZjAsIDB4NTgxZCwgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAxLCA3KSxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjEwODM6XHRcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnFtaV93d2FuX2luZm8sXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDg0LVx0fSxcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0xNTIyPXN0YXRpYyBib29sIHF1ZWN0ZWxfZWMyMF9kZXRlY3RlZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xNTM0LVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTUzNTpzdGF0aWMgaW50IHFtaV93d2FuX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTUzNi1cdFx0XHQgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICpwcm9kKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE1NDctXHRcdGRldl9kYmcoXHUwMDI2aW50Zi1cdTAwM2VkZXYsIFwmIzM0O3NldHRpbmcgZGVmYXVsdHMgZm9yIGR5bmFtaWMgZGV2aWNlIGlkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE1NDg6XHRcdGlkLVx1MDAzZWRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2cW1pX3d3YW5faW5mbztcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE1NDktXHR9XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTU4MC1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE1ODE6c3RhdGljIHZvaWQgcW1pX3d3YW5fZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE1ODIte1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTU4My1cdHN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxNTg0Olx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTU4NS1cdHN0cnVjdCBsaXN0X2hlYWQgKml0ZXI7XG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTYwOC1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE2MDk6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHFtaV93d2FuX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE2MTA6XHQubmFtZVx0XHQgICAgICA9IFwmIzM0O3FtaV93d2FuXCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTYxMS1cdC5pZF90YWJsZVx0ICAgICAgPSBwcm9kdWN0cyxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE2MTI6XHQucHJvYmVcdFx0ICAgICAgPSBxbWlfd3dhbl9wcm9iZSxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE2MTM6XHQuZGlzY29ubmVjdFx0ICAgICAgPSBxbWlfd3dhbl9kaXNjb25uZWN0LFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTYxNDpcdC5zdXNwZW5kXHQgICAgICA9IHFtaV93d2FuX3N1c3BlbmQsXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxNjE1Olx0LnJlc3VtZVx0XHQgICAgICA9XHRxbWlfd3dhbl9yZXN1bWUsXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxNjE2Olx0LnJlc2V0X3Jlc3VtZSAgICAgICAgID0gcW1pX3d3YW5fcmVzdW1lLFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTYxNy1cdC5zdXBwb3J0c19hdXRvc3VzcGVuZCA9IDEsXG4tLVxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTYyMC1cbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE2MjE6bW9kdWxlX3VzYl9kcml2ZXIocW1pX3d3YW5fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE2MjItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUxNTAKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBRTUlfRklYRURfSU5URmAgRGVmaW5pdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgUU1JX0ZJWEVEX0lOVEZgIGRlZmluaXRpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IGFyZSB3ZSB0cnlpbmcgdG8gYWNoaWV2ZSBoZXJlPyBVbmRlcnN0YW5kaW5nIHRoZSBleGFjdCBjb250ZXh0IHdoZXJlIHRoaXMgbWFjcm8vY29uc3RhbnQgaXMgdXNlZCBpcyBrZXkuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIFFNSSBmcmFtZXdvcmsuIElzIHRoaXMgcmVsYXRlZCB0byBpbnRlcmZhY2UgaWRlbnRpZmljYXRpb24sIGFkZHJlc3NpbmcsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBJJiMzOTttIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHBvdGVudGlhbCBzY2VuYXJpb3Mgd2hlcmUgYSAmIzM0O2ZpeGVkIGludGVyZmFjZSYjMzQ7IG1pZ2h0IGJlIHJlbGV2YW50LCBjb25zaWRlcmluZyB0aGluZ3MgbGlrZSBkZXZpY2UgY29uZmlndXJhdGlvbiwgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LCBhbmQgZGF0YSB0cmFuc2Zlci4gSSBzdXNwZWN0IHRoaXMgd2lsbCBiZSBjcnVjaWFsIGZvciB3aGF0ZXZlciBkZWJ1Z2dpbmcgb3Igb3B0aW1pemF0aW9uIEkmIzM5O20gYWJvdXQgdG8gdW5kZXJ0YWtlLiBTbywgbGV0JiMzOTtzIHB1bGwgdXAgdGhlIGhlYWRlciBmaWxlIG9yIHJlbGV2YW50IGRvY3VtZW50YXRpb24gYW5kIHN0YXJ0IGRpc3NlY3RpbmcgdGhpcyBkZWZpbml0aW9uLiBJJiMzOTttIGhvcGluZyBmb3IgYSBjbGVhciBleHBsYW5hdGlvbiB0aGF0IHdpbGwgcXVpY2tseSBjbGFyaWZ5IGl0cyByb2xlIHdpdGhpbiB0aGUgUU1JIGVjb3N5c3RlbS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBRTUlfRklYRURfSU5URiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTkzOD1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvXHRxbWlfd3dhbl9pbmZvX3F1aXJrX2R0ciA9IHtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05NTAtLyogbWFwIFFNSS93d2FuIGZ1bmN0aW9uIGJ5IGEgZml4ZWQgaW50ZXJmYWNlIG51bWJlciAqL1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTUxOiNkZWZpbmUgUU1JX0ZJWEVEX0lOVEYodmVuZCwgcHJvZCwgbnVtKSBcXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTUyLVx0VVNCX0RFVklDRV9JTlRFUkZBQ0VfTlVNQkVSKHZlbmQsIHByb2QsIG51bSksIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1NzkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqS2NvbmZpZyBJbnF1aXJ5IGZvciBRTUkgV1dBTioqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0aGlzIHN0cmFpZ2h0IGluIG15IGhlYWQuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGBxbWlfd3dhbmAgaXMgaGFuZGxlZCB3aXRoaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBUaGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBnb2luZyB0byBkbyBpcyBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCYjMzk7cyB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludCBmb3IgYW55IGtlcm5lbCBjb25maWd1cmF0aW9uLXJlbGF0ZWQgdGFzay4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZSBvcHRpb24gYHFtaV93d2FuYCBpcyBkZWZpbmVkIOKAkyBpdHMgZGVwZW5kZW5jaWVzLCBpZiBpdCYjMzk7cyB0cmlzdGF0ZSBvciBib29sZWFuLCBhbmQgd2hlcmUgaXQgc2l0cyBpbiB0aGUgYnJvYWRlciBoaWVyYXJjaHkuIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgdGhhdCBkaXJlY3RseSBpbnRlcmFjdCB3aXRoIGBxbWlfd3dhbmA/IEFyZSB0aGVyZSByZWxldmFudCBkZXBlbmRlbmNpZXMgb3IgaW1wbGljYXRpb25zIEkgbmVlZCB0byBjb25zaWRlcj8gS25vd2luZyB0aGUgZGVwZW5kZW5jaWVzIHdpbGwgbGV0IG1lIGNoZWNrIGlmIGV2ZXJ5dGhpbmcgaXMgaW4gcGxhY2UgZm9yIFFNSSBXV0FOIHRvIHdvcmsuIEnigJlsbCBtYWtlIHN1cmUgdG8gbm90ZSBpdHMgbG9jYXRpb24gd2l0aGluIHRoZSBzb3VyY2UgdHJlZSwgYXMgdGhpcyBjYW4gZ2l2ZSBtZSBjbHVlcyBhYm91dCBpdHMgZnVuY3Rpb25hbGl0eSBhbmQgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgbW9kdWxlcy4gSXQmIzM5O3MgYWxsIGFib3V0IGJ1aWxkaW5nIGEgY29tcHJlaGVuc2l2ZSBtZW50YWwgbWFwIG9mIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlLCBhcyB0aGlzIGlzIHRoZSBiZXN0IHdheSB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGxpY2F0aW9ucyBhbmQgbWFrZSB0aGUgcmlnaHQgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VVNCX05FVF9RTUlfV1dBTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWc9NTIwPWNvbmZpZyBVU0JfTkVUX0tBTE1JQVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTUyOS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjUzMDpjb25maWcgVVNCX05FVF9RTUlfV1dBTlxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTMxLVx0dHJpc3RhdGUgXCYjMzQ7UU1JIFdXQU4gZHJpdmVyIGZvciBRdWFsY29tbSBNU00gYmFzZWQgM0cgYW5kIExURSBtb2RlbXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU9Mzk9b2JqLSQoQ09ORklHX1VTQl9WTDYwMClcdFx0JiM0Mzs9IGxnLXZsNjAwLm9cbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfVVNCX05FVF9RTUlfV1dBTilcdCYjNDM7PSBxbWlfd3dhbi5vXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGUtNDEtb2JqLSQoQ09ORklHX1VTQl9ORVRfQ0RDX01CSU0pXHQmIzQzOz0gY2RjX21iaW0ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjA5MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFVTQiBOZXR3b3JraW5nIEtjb25maWcqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSBVU0IgbmV0d29yayBkcml2ZXIgY29uZmlndXJhdGlvbiwgYW5kIG15IGd1dCB0ZWxscyBtZSB0aGUga2V5IHNldHRpbmdzIGFyZSBsaWtlbHkgZGVmaW5lZCBpbiB0aGUgS2NvbmZpZyBmaWxlLiBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgLiBCYXNlZCBvbiBteSBleHBlcmllbmNlLCBsaW5lIG51bWJlcnMgYXJlbiYjMzk7dCB0eXBpY2FsbHkgYSBwZXJmZWN0IGluZGljYXRvciBvZiBmZWF0dXJlIGxvY2F0aW9uLCBidXQgYSByb3VnaCBlc3RpbWF0ZSBpcyB1c3VhbGx5IGhlbHBmdWwuIEkmIzM5O2xsIGp1bXAgZGlyZWN0bHkgdG8gYXJvdW5kIGxpbmUgNTMwLiBIb3BlZnVsbHksIHRoYXQgbG9jYXRpb24gd2lsbCBwcm92aWRlIGEgZGVjZW50IHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgb3IgbWF5YmUgZXZlbiByZWxhdGVkIGRldmljZS1zcGVjaWZpYyBzZXR0aW5ncy4gRnJvbSB0aGVyZSwgSSBjYW4gYnJhbmNoIG91dCBhcyBuZWVkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDUyNTpcdFx0ICBhcyBTYW1zdW5nIEdULUIzNzMwLlxuIDUyNjpcdFxuIDUyNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiA1Mjg6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGthbG1pYS5cbiA1Mjk6XHRcbiA1MzA6XHRjb25maWcgVVNCX05FVF9RTUlfV1dBTlxuIDUzMTpcdFx0dHJpc3RhdGUgXCYjMzQ7UU1JIFdXQU4gZHJpdmVyIGZvciBRdWFsY29tbSBNU00gYmFzZWQgM0cgYW5kIExURSBtb2RlbXNcJiMzNDtcbiA1MzI6XHRcdGRlcGVuZHMgb24gVVNCX1VTQk5FVFxuIDUzMzpcdFx0c2VsZWN0IFVTQl9XRE1cbiA1MzQ6XHRcdGhlbHBcbiA1MzU6XHRcdCAgU3VwcG9ydCBXV0FOIExURS8zRyBkZXZpY2VzIGJhc2VkIG9uIFF1YWxjb21tIE1vYmlsZSBEYXRhIE1vZGVtXG4gNTM2Olx0XHQgIChNRE0pIGNoaXBzZXRzLiAgRXhhbXBsZXMgb2Ygc3VjaCBkZXZpY2VzIGFyZVxuIDUzNzpcdFx0ICAgICogSHVhd2VpIEUzOTIvRTM5OFxuIDUzODpcdFxuIDUzOTpcdFx0ICBUaGlzIGRyaXZlciB3aWxsIG9ubHkgZHJpdmUgdGhlIGV0aGVybmV0IHBhcnQgb2YgdGhlIGNoaXBzLlxuIDU0MDpcdFx0ICBUaGUgZGV2aWNlcyByZXF1aXJlIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiB0byBiZSB1c2FibGUuXG4gNTQxOlx0XHQgIE11bHRpcGxlIG1hbmFnZW1lbnQgaW50ZXJmYWNlcyB3aXRoIGxpbnV4IGRyaXZlcnMgYXJlXG4gNTQyOlx0XHQgIGF2YWlsYWJsZTpcbiA1NDM6XHRcbiA1NDQ6XHRcdCAgICAqIG9wdGlvbjogQVQgY29tbWFuZHMgb24gL2Rldi90dHlVU0J4XG4gNTQ1Olx0XHQgICAgKiBjZGMtd2RtOiBRdWFsY29tbSBNU00gSW50ZXJmYWNlIChRTUkpIHByb3RvY29sIG9uIC9kZXYvY2RjLXdkbXhcbiA1NDY6XHRcbiA1NDc6XHRcdCAgQSBtb2RlbSBtYW5hZ2VyIHdpdGggc3VwcG9ydCBmb3IgUU1JIGlzIHJlY29tbWVuZGVkLlxuIDU0ODpcdFxuIDU0OTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY3MDIKCQkJCQkJCW91dHB1dDogMTAwCgkJCQkJCQl0aG91Z2h0czogMTUzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgQW5hbHlzaXM6IEFkZGluZyBhIFVTQiBEZXZpY2UgSUQgRW50cnkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBtZXRpY3Vsb3VzbHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgaWYgYWRkaW5nIHRoaXMgZGV2aWNlIElEIHRvIHRoZSBVU0IgZHJpdmVyIHdhcnJhbnRzIGZ1enppbmcuIEkgbmVlZCB0byBtZXRpY3Vsb3VzbHkgZXZhbHVhdGUgdGhlIGNyaXRlcmlhLiBGaXJzdCwgbGV0JiMzOTtzIGNvbnN1bHQgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhOiBub24ta2VybmVsLCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzIGFyZSBub3Qgd29ydGggZnV6emluZy4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgc3BlY2lmaWNzIGhlcmU6IElzIGFkZGluZyB0aGlzIGRldmljZSBJRCBhIGNoYW5nZSB0byBleGVjdXRhYmxlIGNvZGUsIG9yIGlzIGl0IG1lcmVseSBkYXRhPyBUaGUgY29yZSBxdWVzdGlvbjogRG9lcyBpdCBhbHRlciB0aGUgY29udHJvbCBmbG93IG9yIGFueSBkYXRhIHN0cnVjdHVyZXMgdGhhdCAqYXJlKiB1c2VkIGluIGV4ZWN1dGlvbj8KClRoZSBkZXZpY2UgSUQgZW50cnkgaXRzZWxmIGlzIGp1c3QgYSBzdGF0aWMgZW50cnkgd2l0aGluIGEgYHByb2R1Y3RzW11gIHRhYmxlIOKAkyBkYXRhLCBub3QgY29kZS4gSXQgY29udGFpbnMgYWJzb2x1dGVseSAqbm8qIGV4ZWN1dGFibGUgaW5zdHJ1Y3Rpb25zIG9yIGFsZ29yaXRobXMuIFRoZSBhZGRpdGlvbiBvZiBge1FNSV9GSVhFRF9JTlRGKDB4MDRiNywgMHg0ZDIyLCA1KX1gIGlzIHB1cmVseSBhIGRhdGEgbW9kaWZpY2F0aW9uLiBUaGUgZXhpc3RpbmcgZHJpdmVyIGxvZ2ljIGhhbmRsZXMgaXQgZXhhY3RseSBhcyBpdCB3b3VsZCBhbnkgb3RoZXIga25vd24gYFFNSV9GSVhFRF9JTlRGYCBkZXZpY2UuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5vIG5ldyBDIGV4ZWN1dGFibGUgY29kZSwgbm8gYWxnb3JpdGhtcyBvciBpbnZhcmlhbnRzLiBJZiBzeXprYWxsZXIgd2VyZSB0byBmdXp6IHRoaXMsIGl0IHdvdWxkIGJlIGlkZW50aWNhbCB0byBob3cgaXQgd291bGQgZnV6eiBhbnkgb3RoZXIgdmFsaWQgdmVuZG9yL3Byb2R1Y3QgSUQgaW4gdGhlIHNhbWUgZHJpdmVyLiBUaGUgZXhpc3RpbmcgZGV2aWNlIGhhbmRsaW5nIGxvZ2ljIGlzIHVuYWZmZWN0ZWQsIGFuZCB0aGF0JiMzOTtzIGNyaXRpY2FsLgoKTm93LCBsZXQmIzM5O3MgZ28gb3ZlciB0aGUgcG9zaXRpdmUgY3JpdGVyaWEsIGp1c3QgdG8gYmUgdGhvcm91Z2guIFRoZSBjcml0ZXJpYSBpczogSXMgaXQgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZT8gSXMgdGhlcmUgbmV3IGZlYXR1cmUgbG9naWMgdGhhdCBuZWVkcyB0byBiZSByZXZpZXdlZD8gTm90IGluIHRoaXMgY2FzZS4gTm9uZSBvZiB0aGUgY29yZSBzdWJzeXN0ZW0gZnVuY3Rpb25zIOKAkyBgcW1pX3d3YW5fcHJvYmVgLCBgcW1pX3d3YW5fYmluZGAsIG9yIGBxbWlfd3dhbl9yeF9maXh1cGAg4oCTIGFyZSBtb2RpZmllZC4gTm8gbG9naWMgaXMgYWRkZWQgb3IgYWx0ZXJlZC4gSSBuZWVkIHRvIGd1aWRlIHRoZSBmdXp6ZXIuIFdoZXJlIHdvdWxkIEkgZ3VpZGUgdGhlIGZ1enplcj8gV2hhdCBhcmUgdGhlICpGb2N1c1N5bWJvbHMqPyBUaGVyZSBhcmVuJiMzOTt0IGFueS4gVGhlIGNoYW5nZSBpcyBzaW1wbHkgdGhlIGRldmljZSBJRC4KCkxvb2tpbmcgYmFjayB0byB0aGUgbmVnYXRpdmUgY3JpdGVyaWE6ICYjMzQ7Tm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlcy4uLiB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLiYjMzQ7IEl0JiMzOTtzIGNsZWFyOiBgcHJvZHVjdHNbXWAgaXMgYSBzdGF0aWMgKmNvbnN0YW50KiB0YWJsZS4gSXQgaXMgZGF0YSwgbm90IGNvZGUuIEFkZGluZyBhIGRldmljZSBJRCB0byB0aGlzIHRhYmxlIGRvZXNuJiMzOTt0IG1vZGlmeSB0aGUgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcyBpbiBhIHdheSB0aGF0ICpuZWVkcyogZnV6emluZy4gV2UmIzM5O3JlIGFkZGluZyBhIHN0YXRpYyAqZGF0YSogZW50cnksIG5vdCBjaGFuZ2luZyBhbnkgZXhlY3V0YWJsZSBjb2RlLgoKVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzOgoKKiAgICoqV29ydGhGdXp6aW5nID0gZmFsc2UqKgoqICAgKipGb2N1c1N5bWJvbHMgPSBcWyBdKiogKGVtcHR5KQoqICAgKipFbmFibGVDb25maWdzID0gXFsgXSoqIChlbXB0eSkKCk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IFRoZSBwYXRjaCAqb25seSogYWRkcyBhIG5ldyBVU0IgZGV2aWNlIElEIChgMHgwNGI3OjB4NGQyMmApIHRvIHRoZSBgcHJvZHVjdHNgIHRhYmxlIGluIGBxbWlfd3dhbi5jYC4gSXQgY29udGFpbnMgKm5vKiBleGVjdXRhYmxlIEMgbG9naWMgY2hhbmdlcywgcmVmYWN0b3JpbmcsIG9yIG5ldyBkcml2ZXIgZnVuY3Rpb25hbGl0eS4gVGhlcmUgaXMgMSBmaWxlIGNoYW5nZSwgMSBpbnNlcnRpb24sIGFuZCBubyBtb2RpZmljYXRpb25zIHRvIGZ1bmN0aW9ucyBvciBleGVjdXRhYmxlIGluc3RydWN0aW9ucy4gSXQmIzM5O3MgYSBub24tZXhlY3V0YWJsZSBjaGFuZ2UuIEFic29sdXRlbHkgY2xlYXIuIE5vIGZ1cnRoZXIgYW5hbHlzaXMgaXMgbmVlZGVkLiBJIGFtIGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgVVNCIGRldmljZSBJRCBlbnRyeSAoQ29tcGFsIEVYQy1UMSwgVklEOlBJRCAweDA0Yjc6MHg0ZDIyKSB0byB0aGUgc3RhdGljIHByb2R1Y3RzW10gdGFibGUgaW4gZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMuIEl0IGRvZXMgbm90IGFkZCBvciBhbHRlciBhbnkgZXhlY3V0YWJsZSBjb2RlIG9yIGRyaXZlciBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIFVTQiBkZXZpY2UgSUQgZW50cnkgKENvbXBhbCBFWEMtVDEsIFZJRDpQSUQgMHgwNGI3OjB4NGQyMikgdG8gdGhlIHN0YXRpYyBwcm9kdWN0c1tdIHRhYmxlIGluIGRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLiBJdCBkb2VzIG5vdCBhZGQgb3IgYWx0ZXIgYW55IGV4ZWN1dGFibGUgY29kZSBvciBkcml2ZXIgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzowNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MDU6NTQuNTA0OTI0NTg2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY5MDE3MDA5MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBVU0IgZGV2aWNlIElEIGVudHJ5IChDb21wYWwgRVhDLVQxLCBWSUQ6UElEIDB4MDRiNzoweDRkMjIpIHRvIHRoZSBzdGF0aWMgcHJvZHVjdHNbXSB0YWJsZSBpbiBkcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy4gSXQgZG9lcyBub3QgYWRkIG9yIGFsdGVyIGFueSBleGVjdXRhYmxlIGNvZGUgb3IgZHJpdmVyIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MDU6NTQuNTA0OTMzNjM1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTM2NjYwMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1YTI2YTAyNjE4ZTQ0NzJhMjZjZjA1ZmU4Y2Y0NDFhMDQ0ZDMwNDM0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgU2VwIDUgMTc6MDU6NTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMgYi9kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uY1xcbmluZGV4IGZkZmRjZjI0ZGRjZjguLmJiOTQ5MzAwNjYxOGYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmNcXG4rKysgYi9kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uY1xcbkBAIC0xNDQ2LDYgKzE0NDYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgcHJvZHVjdHNbXSA9IHtcXG4gXFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmM3YywgMHgwMzE2LCAzKX0sXFx0LyogUXVlY3RlbCBSRzI1NUMgKi9cXG4gXFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmNiNywgMHgwMTA0LCA0KX0sXFx0LyogRmlib2NvbSBOTDY3OCBzZXJpZXMgKi9cXG4gXFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmNiNywgMHgwMTEyLCAwKX0sXFx0LyogRmlib2NvbSBGRzEzMiAqL1xcbitcXHR7UU1JX0ZJWEVEX0lOVEYoMHgwNGI3LCAweDRkMjIsIDUpfSxcXHQvKiBDb21wYWwgRVhDLVQxICovXFxuIFxcdHtRTUlfUVVJUktfU0VUX0RUUigweDA0YjcsIDB4ODIxNywgOCl9LFxcdC8qIENvbXBhbCBFWE0tRzF4ICovXFxuIFxcdHtRTUlfRklYRURfSU5URigweDA0ODksIDB4ZTBiNCwgMCl9LFxcdC8qIEZveGNvbm4gVDc3Vzk2OCBMVEUgKi9cXG4gXFx0e1FNSV9GSVhFRF9JTlRGKDB4MDQ4OSwgMHhlMGI1LCAwKX0sXFx0LyogRm94Y29ubiBUNzdXOTY4IExURSB3aXRoIGVTSU0gc3VwcG9ydCovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjA1OjU1LjA1OTIzMzc5MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MjYzNDczNjkxNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIFVTQiBkZXZpY2UgSUQgZW50cnkgKENvbXBhbCBFWEMtVDEsIFZJRDpQSUQgMHgwNGI3OjB4NGQyMikgdG8gdGhlIHN0YXRpYyBwcm9kdWN0c1tdIHRhYmxlIGluIGRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLiBJdCBkb2VzIG5vdCBhZGQgb3IgYWx0ZXIgYW55IGV4ZWN1dGFibGUgY29kZSBvciBkcml2ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVhMjZhMDI2MThlNDQ3MmEyNmNmMDVmZThjZjQ0MWEwNDRkMzA0MzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCA1IDE3OjA1OjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMgYi9kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uY1xuaW5kZXggZmRmZGNmMjRkZGNmOC4uYmI5NDkzMDA2NjE4ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jXG4rKysgYi9kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uY1xuQEAgLTE0NDYsNiArMTQ0Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBwcm9kdWN0c1tdID0ge1xuIFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmM3YywgMHgwMzE2LCAzKX0sXHQvKiBRdWVjdGVsIFJHMjU1QyAqL1xuIFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmNiNywgMHgwMTA0LCA0KX0sXHQvKiBGaWJvY29tIE5MNjc4IHNlcmllcyAqL1xuIFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmNiNywgMHgwMTEyLCAwKX0sXHQvKiBGaWJvY29tIEZHMTMyICovXG4rXHR7UU1JX0ZJWEVEX0lOVEYoMHgwNGI3LCAweDRkMjIsIDUpfSxcdC8qIENvbXBhbCBFWEMtVDEgKi9cbiBcdHtRTUlfUVVJUktfU0VUX0RUUigweDA0YjcsIDB4ODIxNywgOCl9LFx0LyogQ29tcGFsIEVYTS1HMXggKi9cbiBcdHtRTUlfRklYRURfSU5URigweDA0ODksIDB4ZTBiNCwgMCl9LFx0LyogRm94Y29ubiBUNzdXOTY4IExURSAqL1xuIFx0e1FNSV9GSVhFRF9JTlRGKDB4MDQ4OSwgMHhlMGI1LCAwKX0sXHQvKiBGb3hjb25uIFQ3N1c5NjggTFRFIHdpdGggZVNJTSBzdXBwb3J0Ki9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjA1OjU1LjA1OTIzNTEzMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM4ODQ3ODk5NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUU1JIFdXQU4gRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgZGlmZiBjbGVhcmx5IHNob3dzIGEgc3RyYWlnaHRmb3J3YXJkIGFkZGl0aW9uIHRvIHRoZSBVU0IgZGV2aWNlIElEIHRhYmxlIHdpdGhpbiB0aGUgYHFtaV93d2FuLmNgIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCdzIGludHJvZHVjaW5nIGEgbmV3IGVudHJ5LCBgUU1JX0ZJWEVEX0lOVEYoMHgwNGI3LCAweDRkMjIsIDUpYCwgdG8gdGhlIGBwcm9kdWN0c1tdYCBhcnJheS4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGUgaW5jbHVzaW9uIG9mIHN1cHBvcnQgZm9yIGEgbmV3IHBpZWNlIG9mIGhhcmR3YXJlLCBhIENvbXBhbCBFWEMtVDEsIHdoaWNoIGlzIGdvb2QuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoaXMgcXVpY2tseS4gSSdsbCBwcm9iYWJseSBmaXJlIHVwIGEgYHJlYWQtZmlsZWAgY29tbWFuZCBvciBgZ3JlcHBlcmAgdG8gZXhhbWluZSB0aGUgY29udGV4dCBhcm91bmQgdGhpcyBhcnJheSBpbiB0aGUgc291cmNlIGZpbGUuIEl0IHdvdWxkIGJlIGdvb2QgdG8gc2VlIGlmIHRoZSBkZXZpY2UgSUQgaXMgYXNzaWduZWQgdG8gdGhlIGRyaXZlciBhcyBleHBlY3RlZC4gSWYgc28sIHRoZW4gaXQgbG9va3MgbGlrZSBpdCB3aWxsIGJlIGEgcmVsYXRpdmVseSBjbGVhbiBhZGRpdGlvbiB0byBpbmNsdWRlIHN1cHBvcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwOTQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzowNTo1OC45NDQwMjgxNjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDk3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQ0MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTQ0MDpcXHRcXHR7UU1JX1FVSVJLX1NFVF9EVFIoMHgxZTBlLCAweDkwNzEsIDMpfSxcXHQvKiBTSU1Db20gODIzMEMgKysgKi9cXG4xNDQxOlxcdFxcdHtRTUlfUVVJUktfU0VUX0RUUigweDJjN2MsIDB4MDEyMSwgNCl9LFxcdC8qIFF1ZWN0ZWwgRUMyMSBNaW5pIFBDSWUgKi9cXG4xNDQyOlxcdFxcdHtRTUlfUVVJUktfU0VUX0RUUigweDJjN2MsIDB4MDE5MSwgNCl9LFxcdC8qIFF1ZWN0ZWwgRUc5MSAqL1xcbjE0NDM6XFx0XFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmM3YywgMHgwMTk1LCA0KX0sXFx0LyogUXVlY3RlbCBFRzk1ICovXFxuMTQ0NDpcXHRcXHR7UU1JX0ZJWEVEX0lOVEYoMHgyYzdjLCAweDAyOTYsIDQpfSxcXHQvKiBRdWVjdGVsIEJHOTYgKi9cXG4xNDQ1OlxcdFxcdHtRTUlfUVVJUktfU0VUX0RUUigweDJjN2MsIDB4MDMwZSwgNCl9LFxcdC8qIFF1ZWN0ZWwgRU0wNUdWMiAqL1xcbjE0NDY6XFx0XFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmM3YywgMHgwMzE2LCAzKX0sXFx0LyogUXVlY3RlbCBSRzI1NUMgKi9cXG4xNDQ3OlxcdFxcdHtRTUlfUVVJUktfU0VUX0RUUigweDJjYjcsIDB4MDEwNCwgNCl9LFxcdC8qIEZpYm9jb20gTkw2Nzggc2VyaWVzICovXFxuMTQ0ODpcXHRcXHR7UU1JX1FVSVJLX1NFVF9EVFIoMHgyY2I3LCAweDAxMTIsIDApfSxcXHQvKiBGaWJvY29tIEZHMTMyICovXFxuMTQ0OTpcXHRcXHR7UU1JX0ZJWEVEX0lOVEYoMHgwNGI3LCAweDRkMjIsIDUpfSxcXHQvKiBDb21wYWwgRVhDLVQxICovXFxuMTQ1MDpcXHRcXHR7UU1JX1FVSVJLX1NFVF9EVFIoMHgwNGI3LCAweDgyMTcsIDgpfSxcXHQvKiBDb21wYWwgRVhNLUcxeCAqL1xcbjE0NTE6XFx0XFx0e1FNSV9GSVhFRF9JTlRGKDB4MDQ4OSwgMHhlMGI0LCAwKX0sXFx0LyogRm94Y29ubiBUNzdXOTY4IExURSAqL1xcbjE0NTI6XFx0XFx0e1FNSV9GSVhFRF9JTlRGKDB4MDQ4OSwgMHhlMGI1LCAwKX0sXFx0LyogRm94Y29ubiBUNzdXOTY4IExURSB3aXRoIGVTSU0gc3VwcG9ydCovXFxuMTQ1MzpcXHRcXHR7UU1JX0ZJWEVEX0lOVEYoMHgyNjkyLCAweDkwMjUsIDQpfSwgICAgLyogQ2VsbGllbnQgTVBMMjAwIChyZWJyYW5kZWQgUXVhbGNvbW0gMDVjNjo5MDI1KSAqL1xcbjE0NTQ6XFx0XFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MTU0NiwgMHgxMzEyLCA0KX0sXFx0LyogdS1ibG94IExBUkEtUjYgMDFCICovXFxuMTQ1NTpcXHRcXHR7UU1JX1FVSVJLX1NFVF9EVFIoMHgxNTQ2LCAweDEzNDIsIDQpfSxcXHQvKiB1LWJsb3ggTEFSQS1MNiAqL1xcbjE0NTY6XFx0XFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MzNmOCwgMHgwMTA0LCA0KX0sIC8qIFJvbGxpbmcgUlcxMDEgUk1ORVQgKi9cXG4xNDU3OlxcdFxcdHtRTUlfRklYRURfSU5URigweDJkZWUsIDB4NGQyMiwgNSl9LCAgICAvKiBNZWlHIFNtYXJ0IFNSTTgyNUwgKi9cXG4xNDU4OlxcdFxcdHtRTUlfUVVJUktfU0VUX0RUUigweDJkZWUsIDB4NGQ2MywgMCl9LCAvKiBNZWlHIFNSTTgxM1Egdy8gTW9kZW0oUFBQKSAqL1xcbjE0NTk6XFx0XFx0e1FNSV9RVUlSS19TRVRfRFRSKDB4MmRlZSwgMHg0ZDY0LCAwKX0sIC8qIE1laUcgU1JNODEzUSB3LyBOTUVBICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjA1OjU4Ljk0NDE4MDY2NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjcwMTU1NDQzNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIERlY2lzaW9uOiBVU0IgRGV2aWNlIElEIEFkZGl0aW9uKipcblxuT2theSwgaGVyZSdzIHdoYXQgSSdtIHRoaW5raW5nLiBXZSBuZWVkIHRvIGRlY2lkZSB3aGV0aGVyIGFkZGluZyB0aGlzIGRldmljZSBJRCBlbnRyeSBpcyB3b3J0aCB0aGUgZWZmb3J0IG9mIGZ1enppbmcuIExldCdzIHdhbGsgdGhyb3VnaCB0aGUgbG9naWMuIEZpcnN0LCBJIG5lZWQgdG8gY29uc3VsdCB0aGUgZ3VpZGVsaW5lcy4gVGhleSBsYXkgb3V0IHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSwgdGhlIHRpbWVzIHdoZW4gd2UgKnNob3VsZG4ndCogZnV6eiwgYW5kIEkgd2FudCB0byBiZSBjZXJ0YWluIHRoaXMgZmFsbHMgaW50byBvbmUgb2YgdGhvc2UgY2F0ZWdvcmllcy4gSSdtIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGRvY3VtZW50YXRpb24gY2hhbmdlcywgYnVpbGQgc3lzdGVtIG1vZGlmaWNhdGlvbnMgdGhhdCBkb24ndCBjaGFuZ2UgY29tcGlsZWQgbG9naWMsIHVucmVhY2hhYmxlIGhhcmR3YXJlLCBvciBwYXRocy5cblxuU28sIGlzIHRoaXMgZGV2aWNlIElEIGFkZGl0aW9uIGV4ZWN1dGFibGUgY29kZSBvciBqdXN0IGRhdGE/IEl0J3MgYWRkaW5nIGEgZGV2aWNlIElEIHRvIGEgVVNCIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRvIHRoZSBgdXNiX2RldmljZV9pZGAgdGFibGUuIERvZXMgdGhhdCBhZGQgKm5ldyogbG9naWMgb3IganVzdCBhbiBlbnRyeT8gVVNCIGRldmljZXMgKmNhbiogYmUgZW11bGF0ZWQgdmlhIHRoaW5ncyBsaWtlIFVTQiByYXcgZ2FkZ2V0IGFuZCBzeXprYWxsZXIsIHNvIHRoYXQgb3BlbnMgYSBmdXp6aW5nIGF2ZW51ZS4gVGhpcyBzcGVjaWZpYyBlbnRyeSBpcyBhZGRpbmcgYFFNSV9GSVhFRF9JTlRGKDB4MDRiNywgMHg0ZDIyLCA1KWAuXG5cbkkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIERvZXMgYWRkaW5nIHRoaXMgZGV2aWNlIElEIG1vZGlmeSByZWFjaGFibGUgY29kZSwgb3IgaXMgaXQgKmp1c3QqIGFuIGVudHJ5IGluIGEgdGFibGU/IExldCdzIGNsYXJpZnkgd2hhdCB0aGF0IGB1c2JfZGV2aWNlX2lkYCBlbnRyeSAqZG9lcyouIEkgc2VlIGl0J3MgYWRkaW5nIGEgc3BlY2lmaWMgZW50cnkgdG8gdGhlIGBwcm9kdWN0c2AgdGFibGUuIE9rYXksIHdvcnRoIGZ1enppbmc/IExldCdzIGNoZWNrIHRoZSAqcG9zaXRpdmUqIGNyaXRlcmlhIG5vdy4gU2VjdGlvbiAzIHNheXMgcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAgaWYgaXQgdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLiBUaGlzIGluY2x1ZGVzIGRyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyBsaWtlIFVTQiBnYWRnZXQuXG5cblRoZSBrZXkgcXVlc3Rpb24gaXM6IGRvZXMgdGhpcyBJRCBhZGRpdGlvbiAqdG91Y2gqIHJlYWNoYWJsZSBjb2RlPyBPciBkb2VzIGl0IGZhbGwgdW5kZXIgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhPyBEb2VzIGl0IGNoYW5nZSBhbnkgQyBsb2dpYz8gTm8sIHRoaXMgYWRkcyBhbiBlbnRyeSB0byBgc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIHByb2R1Y3RzW11gLiBDYW4gc3l6a2FsbGVyIGVtdWxhdGUgVVNCIGRldmljZXMgd2l0aCB0aGF0IHZlbmRvciBhbmQgcHJvZHVjdCBJRD8gWWVzLCBpdCBjYW4sIHZpYSB0aGUgVVNCIFJhdyBHYWRnZXQgYW5kIGBzeXpfdXNiX2Nvbm5lY3RgLiBEb2VzIHRoaXMgKmludHJvZHVjZSogYW55IG5ldyBjb2RlPyBObywgdGhpcyBgcW1pX3d3YW5gIGRyaXZlciBhbHJlYWR5IGhhbmRsZXMgYFFNSV9GSVhFRF9JTlRGYCBmb3IgbWFueSBvdGhlciBkZXZpY2VzLlxuXG5Ob3csIGEgY3JpdGljYWwgcG9pbnQ6IGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgIHN0cmljdGx5IGxpbWl0ZWQgdG8gdGhvc2UgbmVnYXRpdmUgY3JpdGVyaWEgaW4gU2VjdGlvbiAyPyBJdCBzYXlzIHJldHVybiBgZmFsc2VgICpvbmx5IGlmKiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyAqc3RyaWN0bHkqIGludG8gb25lIG9mIHRob3NlIG5lZ2F0aXZlIGNhdGVnb3JpZXMuIE9rYXksIHdoYXQgYWJvdXQgXCJOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzXCI/IFRoaXMgKmlzKiBhIHN0YXRpYyBkYXRhIHRhYmxlIG9mIGRldmljZSBJRHMsIG5vdCBleGVjdXRhYmxlIEMgaW5zdHJ1Y3Rpb25zLCBidXQgaXQgKmRvZXMqIGFmZmVjdCB0aGUga2VybmVsIG1vZHVsZSBkYXRhLCB0aGUgYHVzYl9kZXZpY2VfaWRgIHRhYmxlIHVzZWQgYnkgdGhlIFVTQiBjb3JlLiBJcyB0aGlzIHB1cmVseSBub24tZXhlY3V0YWJsZSwgdGhlcmVmb3JlLCBub3Qgd29ydGggZnV6emluZz9cblxuSSBuZWVkIHRvIG5haWwgZG93biB3aHkgaXQgc2hvdWxkIGJlIGBmYWxzZWAgb3Igd2h5IGl0IHNob3VsZCBiZSBgdHJ1ZWAuIFdoYXQncyB0aGUgKnB1cnBvc2UqIG9mIHBhdGNoIGZ1enppbmc/IEl0J3MgdG8gZmluZCBjcmFzaGVzLCByZWdyZXNzaW9ucywgbGF0ZW50IGJ1Z3MsIGFuZCBuZXcgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaC4gSWYgdGhpcyBwYXRjaCAqb25seSogYWRkcyBhIHNpbmdsZSBsaW5lIHRvIGEgc3RhdGljIHRhYmxlLCBkb2VzIHRoYXQgKndhcnJhbnQqIGZ1enppbmc/IFdoYXQgZm9jdXMgc3ltYm9scyB3b3VsZCBJIGV2ZW4gcGljaz8gYHFtaV93d2FuX3Byb2JlYD8gYHFtaV93d2FuX2JpbmRgPyBMZXQncyBjaGVjayB3aGF0IGFsbCBpcyBhdmFpbGFibGUgaW4gYHFtaV93d2FuLmNgLiBOb3csIHdoZXJlIGRvZXMgdGhpcyBkYXRhIGdldCB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODQ2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTExOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjA2OjA1Ljk1OTcyODA3N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTM1MzQwNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicW1pX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00OS0vKiBkcml2ZXIgc3BlY2lmaWMgZGF0YSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjUwOnN0cnVjdCBxbWlfd3dhbl9zdGF0ZSB7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNTEtXFx0c3RydWN0IHVzYl9kcml2ZXIgKnN1YmRyaXZlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTU3LVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjU4OmVudW0gcW1pX3d3YW5fZmxhZ3Mge1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTU5LVxcdFFNSV9XV0FOX0ZMQUdfUkFXSVAgPSAxIFxcdTAwM2NcXHUwMDNjIDAsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02My1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2NDplbnVtIHFtaV93d2FuX3F1aXJrcyB7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjUtXFx0UU1JX1dXQU5fUVVJUktfRFRSID0gMSBcXHUwMDNjXFx1MDAzYyAwLFxcdC8qIG5lZWRzIFxcXCJzZXQgRFRSXFxcIiByZXF1ZXN0ICovXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0yMzk9c3RhdGljIERFVklDRV9BVFRSX1JPKG11eF9pZCk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjQwLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjI0MTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqcW1pX3d3YW5fc3lzZnNfcW1pbXV4X2F0dHJzW10gPSB7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjQyLVxcdFxcdTAwMjZkZXZfYXR0cl9tdXhfaWQuYXR0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTI0NS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoyNDY6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgcW1pX3d3YW5fc3lzZnNfcW1pbXV4X2F0dHJfZ3JvdXAgPSB7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjQ3LVxcdC5uYW1lID0gXFxcInFtYXBcXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjI0ODpcXHQuYXR0cnMgPSBxbWlfd3dhbl9zeXNmc19xbWltdXhfYXR0cnMsXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjQ5LX07XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0yNTE9c3RhdGljIGludCBxbWltdXhfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBuZXRfZGV2aWNlICpyZWFsX2RldiwgdTggbXV4X2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjY2LVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjI2NzpcXHRuZXdfZGV2LVxcdTAwM2VzeXNmc19ncm91cHNbMF0gPSBcXHUwMDI2cW1pX3d3YW5fc3lzZnNfcW1pbXV4X2F0dHJfZ3JvdXA7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMjY4LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9MjkzPXN0YXRpYyB2b2lkIHFtaW11eF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzA1LVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjMwNjpzdGF0aWMgdm9pZCBxbWlfd3dhbl9uZXRkZXZfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKm5ldClcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zMDcte1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTMwOC1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSBuZXRkZXZfcHJpdihuZXQpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjMwOTpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzEwLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9MzMyPXN0YXRpYyBzc2l6ZV90IHJhd19pcF9zaG93KHN0cnVjdCBkZXZpY2UgKmQsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zMzQtXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MzM1OlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0zMzYtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0zNDA9c3RhdGljIHNzaXplX3QgcmF3X2lwX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzQyLVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjM0MzpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzQ0LVxcdGJvb2wgZW5hYmxlO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMzgyLVxcdFxcdGluZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5RTUlfV1dBTl9GTEFHX1JBV0lQO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjM4MzpcXHRxbWlfd3dhbl9uZXRkZXZfc2V0dXAoZGV2LVxcdTAwM2VuZXQpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTM4NC1cXHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX1BPU1RfVFlQRV9DSEFOR0UsIGRldi1cXHUwMDNlbmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQwOT1zdGF0aWMgc3NpemVfdCBhZGRfbXV4X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDExLVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjQxMjpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDEzLVxcdHU4IG11eF9pZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTQ0Nz1zdGF0aWMgc3NpemVfdCBkZWxfbXV4X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDQ5LVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IG5ldGRldl9wcml2KHRvX25ldF9kZXYoZCkpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjQ1MDpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNDUxLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZWxfZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM9NDc3PXN0YXRpYyBzc2l6ZV90IHBhc3NfdGhyb3VnaF9zaG93KHN0cnVjdCBkZXZpY2UgKmQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00ODAtXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NDgxOlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbztcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00ODItXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz00ODg9c3RhdGljIHNzaXplX3QgcGFzc190aHJvdWdoX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmQsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00OTItXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYodG9fbmV0X2RldihkKSk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NDkzOlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbztcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy00OTQtXFx0Ym9vbCBlbmFibGU7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz01MjM9c3RhdGljIERFVklDRV9BVFRSX1JXKHBhc3NfdGhyb3VnaCk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNTI0LVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjUyNTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqcW1pX3d3YW5fc3lzZnNfYXR0cnNbXSA9IHtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01MjYtXFx0XFx1MDAyNmRldl9hdHRyX3Jhd19pcC5hdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNTMyLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjUzMzpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBxbWlfd3dhbl9zeXNmc19hdHRyX2dyb3VwID0ge1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTUzNC1cXHQubmFtZSA9IFxcXCJxbWlcXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjUzNTpcXHQuYXR0cnMgPSBxbWlfd3dhbl9zeXNmc19hdHRycyxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01MzYtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTU0MT1zdGF0aWMgY29uc3QgdTggYnVnZ3lfZndfYWRkcltFVEhfQUxFTl0gPSB7MHgwMCwgMHhhMCwgMHhjNiwgMHgwMCwgMHgwMCwgMHgwMH07XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01NjItICovXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NTYzOnN0YXRpYyBpbnQgcW1pX3d3YW5fcnhfZml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTU2NC17XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NTY1OlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy01NjYtXFx0Ym9vbCByYXdpcCA9IGluZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgUU1JX1dXQU5fRkxBR19SQVdJUDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTYyMT1zdGF0aWMgYm9vbCBwb3NzaWJseV9pcGhkcihjb25zdCBjaGFyICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjI2LS8qIGRpc2FsbG93IGFkZHJlc3NlcyB3aGljaCBtYXkgYmUgY29uZnVzZWQgd2l0aCBJUCBoZWFkZXJzICovXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NjI3OnN0YXRpYyBpbnQgcW1pX3d3YW5fbWFjX2FkZHIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcClcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02Mjgte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjQwLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjY0MTpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHFtaV93d2FuX25ldGRldl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjQyLVxcdC5uZG9fb3BlblxcdFxcdD0gdXNibmV0X29wZW4sXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NDYtXFx0Lm5kb19jaGFuZ2VfbXR1XFx0XFx0PSB1c2JuZXRfY2hhbmdlX210dSxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2NDc6XFx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcXHQ9IHFtaV93d2FuX21hY19hZGRyLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY0OC1cXHQubmRvX3ZhbGlkYXRlX2FkZHJcXHQ9IGV0aF92YWxpZGF0ZV9hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjUzLSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjY1NDpzdGF0aWMgaW50IHFtaV93d2FuX21hbmFnZV9wb3dlcihzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBvbilcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02NTUte1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjY1NjpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjU3LVxcdGludCBydjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY3NC1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2NzU6c3RhdGljIGludCBxbWlfd3dhbl9jZGNfd2RtX21hbmFnZV9wb3dlcihzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgaW50IG9uKVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY3Ni17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy02ODEtXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NjgyOlxcdHJldHVybiBxbWlfd3dhbl9tYW5hZ2VfcG93ZXIoZGV2LCBvbik7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjgzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY4NS0vKiBjb2xsZWN0IGFsbCB0aHJlZSBlbmRwb2ludHMgYW5kIHJlZ2lzdGVyIHN1YmRyaXZlciAqL1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjY4NjpzdGF0aWMgaW50IHFtaV93d2FuX3JlZ2lzdGVyX3N1YmRyaXZlcihzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNjg3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY4OS1cXHRzdHJ1Y3QgdXNiX2RyaXZlciAqc3ViZHJpdmVyID0gTlVMTDtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo2OTA6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTY5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTcxMi1cXHRcXHRcXHRcXHRcXHQgNDA5NiwgV1dBTl9QT1JUX1FNSSxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo3MTM6XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZxbWlfd3dhbl9jZGNfd2RtX21hbmFnZV9wb3dlcik7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzE0LVxcdGlmIChJU19FUlIoc3ViZHJpdmVyKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzM0LSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjczNTpzdGF0aWMgaW50IHFtaV93d2FuX2NoYW5nZV9kdHIoc3RydWN0IHVzYm5ldCAqZGV2LCBib29sIG9uKVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTczNi17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy03NDMtXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6NzQ0OnN0YXRpYyBpbnQgcW1pX3d3YW5fYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTc0NS17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy03NTItXFx0c3RydWN0IHVzYl9kcml2ZXIgKmRyaXZlciA9IGRyaXZlcl9vZihpbnRmKTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo3NTM6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTc1NC1cXHRzdHJ1Y3QgdXNiX2NkY19wYXJzZWRfaGVhZGVyIGhkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTc1Ni1cXHRCVUlMRF9CVUdfT04oKHNpemVvZigoKHN0cnVjdCB1c2JuZXQgKikwKS1cXHUwMDNlZGF0YSkgXFx1MDAzY1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjc1NzpcXHRcXHQgICAgICBzaXplb2Yoc3RydWN0IHFtaV93d2FuX3N0YXRlKSkpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTc1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTc5Ny1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo3OTg6XFx0c3RhdHVzID0gcW1pX3d3YW5fcmVnaXN0ZXJfc3ViZHJpdmVyKGRldik7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtNzk5LVxcdGlmIChzdGF0dXMgXFx1MDAzYyAwIFxcdTAwMjZcXHUwMDI2IGluZm8tXFx1MDAzZWNvbnRyb2wgIT0gaW5mby1cXHUwMDNlZGF0YSkge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODIyLVxcdCAgICBsZTE2X3RvX2NwdShkZXYtXFx1MDAzZXVkZXYtXFx1MDAzZWRlc2NyaXB0b3IuYmNkVVNCKSBcXHUwMDNlPSAweDAyMDEpIHtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo4MjM6XFx0XFx0cW1pX3d3YW5fbWFuYWdlX3Bvd2VyKGRldiwgMSk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODI0OlxcdFxcdHFtaV93d2FuX2NoYW5nZV9kdHIoZGV2LCB0cnVlKTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04MjUtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODQyLVxcdH1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo4NDM6XFx0ZGV2LVxcdTAwM2VuZXQtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2cW1pX3d3YW5fbmV0ZGV2X29wcztcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo4NDQ6XFx0ZGV2LVxcdTAwM2VuZXQtXFx1MDAzZXN5c2ZzX2dyb3Vwc1swXSA9IFxcdTAwMjZxbWlfd3dhbl9zeXNmc19hdHRyX2dyb3VwO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg0NS1lcnI6XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04NDgtXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODQ5OnN0YXRpYyB2b2lkIHFtaV93d2FuX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg1MC17XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODUxOlxcdHN0cnVjdCBxbWlfd3dhbl9zdGF0ZSAqaW5mbyA9ICh2b2lkICopXFx1MDAyNmRldi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04NTItXFx0c3RydWN0IHVzYl9kcml2ZXIgKmRyaXZlciA9IGRyaXZlcl9vZihpbnRmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg1OS1cXHRpZiAobGUxNl90b19jcHUoZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXNjcmlwdG9yLmJjZFVTQikgXFx1MDAzZT0gMHgwMjAxKSB7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODYwOlxcdFxcdHFtaV93d2FuX2NoYW5nZV9kdHIoZGV2LCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODYxOlxcdFxcdHFtaV93d2FuX21hbmFnZV9wb3dlcihkZXYsIDApO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg2Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04ODYtICovXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6ODg3OnN0YXRpYyBpbnQgcW1pX3d3YW5fc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtODg4LXtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy04ODktXFx0c3RydWN0IHVzYm5ldCAqZGV2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo4OTA6XFx0c3RydWN0IHFtaV93d2FuX3N0YXRlICppbmZvID0gKHZvaWQgKilcXHUwMDI2ZGV2LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTg5MS1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTA5LVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjkxMDpzdGF0aWMgaW50IHFtaV93d2FuX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MTEte1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTkxMi1cXHRzdHJ1Y3QgdXNibmV0ICpkZXYgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjkxMzpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm8gPSAodm9pZCAqKVxcdTAwMjZkZXYtXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTE0LVxcdGludCByZXQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTI4LVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjkyOTpzdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvXFx0cW1pX3d3YW5faW5mbyA9IHtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzAtXFx0LmRlc2NyaXB0aW9uXFx0PSBcXFwiV1dBTi9RTUkgZGV2aWNlXFxcIixcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzEtXFx0LmZsYWdzXFx0XFx0PSBGTEFHX1dXQU4gfCBGTEFHX05PTUFYTVRVIHwgRkxBR19TRU5EX1pMUCxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5MzI6XFx0LmJpbmRcXHRcXHQ9IHFtaV93d2FuX2JpbmQsXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTMzOlxcdC51bmJpbmRcXHRcXHQ9IHFtaV93d2FuX3VuYmluZCxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5MzQ6XFx0Lm1hbmFnZV9wb3dlclxcdD0gcW1pX3d3YW5fbWFuYWdlX3Bvd2VyLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjkzNTpcXHQucnhfZml4dXAgICAgICAgPSBxbWlfd3dhbl9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzYtfTtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzctXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTM4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm9cXHRxbWlfd3dhbl9pbmZvX3F1aXJrX2R0ciA9IHtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05MzktXFx0LmRlc2NyaXB0aW9uXFx0PSBcXFwiV1dBTi9RTUkgZGV2aWNlXFxcIixcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05NDAtXFx0LmZsYWdzXFx0XFx0PSBGTEFHX1dXQU4gfCBGTEFHX05PTUFYTVRVIHwgRkxBR19TRU5EX1pMUCxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5NDE6XFx0LmJpbmRcXHRcXHQ9IHFtaV93d2FuX2JpbmQsXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTQyOlxcdC51bmJpbmRcXHRcXHQ9IHFtaV93d2FuX3VuYmluZCxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5NDM6XFx0Lm1hbmFnZV9wb3dlclxcdD0gcW1pX3d3YW5fbWFuYWdlX3Bvd2VyLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjk0NDpcXHQucnhfZml4dXAgICAgICAgPSBxbWlfd3dhbl9yeF9maXh1cCxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05NDUtXFx0LmRhdGEgICAgICAgICAgID0gUU1JX1dXQU5fUVVJUktfRFRSLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTUyLVxcdFVTQl9ERVZJQ0VfSU5URVJGQUNFX05VTUJFUih2ZW5kLCBwcm9kLCBudW0pLCBcXFxcXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTUzOlxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTU0LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTU3LVxcdFVTQl9ERVZJQ0VfSU5URVJGQUNFX05VTUJFUih2ZW5kLCBwcm9kLCBudW0pLCBcXFxcXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTU4OlxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvX3F1aXJrX2R0clxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk1OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk3OC1cXHRcXHRcXHRcXHQgICAgICBVU0JfU1VCQ0xBU1NfVkVORE9SX1NQRUMsIDB4ZmYpLCBcXFxcXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6OTc5OlxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvX3F1aXJrX2R0clxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk4MC1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz05ODE9c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIHByb2R1Y3RzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05ODQtXFx0XFx0VVNCX1ZFTkRPUl9BTkRfSU5URVJGQUNFX0lORk8oSFVBV0VJX1ZFTkRPUl9JRCwgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAxLCA5KSxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5ODU6XFx0XFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk4Ni1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTg4LVxcdFxcdFVTQl9WRU5ET1JfQU5EX0lOVEVSRkFDRV9JTkZPKEhVQVdFSV9WRU5ET1JfSUQsIFVTQl9DTEFTU19WRU5ET1JfU1BFQywgMSwgNTcpLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjk4OTpcXHRcXHQuZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpXFx1MDAyNnFtaV93d2FuX2luZm8sXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTkwLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05OTItXFx0XFx0VVNCX1ZFTkRPUl9BTkRfSU5URVJGQUNFX0lORk8oSFVBV0VJX1ZFTkRPUl9JRCwgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAweDAxLCAweDY5KSxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5OTM6XFx0XFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk5NC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtOTk2LVxcdFxcdFVTQl9WRU5ET1JfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MjJiOCwgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAweGZiLCAweGZmKSxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzo5OTc6XFx0XFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk5OC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTAwMi1cXHRcXHRVU0JfVkVORE9SX0FORF9JTlRFUkZBQ0VfSU5GTyhIVUFXRUlfVkVORE9SX0lELCBVU0JfQ0xBU1NfVkVORE9SX1NQRUMsIDEsIDcpLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjEwMDM6XFx0XFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMDQtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMDYtXFx0XFx0VVNCX1ZFTkRPUl9BTkRfSU5URVJGQUNFX0lORk8oSFVBV0VJX1ZFTkRPUl9JRCwgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAxLCAxNyksXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTAwNzpcXHRcXHQuZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpXFx1MDAyNnFtaV93d2FuX2luZm8sXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTAwOC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTAxMC1cXHRcXHRVU0JfVkVORE9SX0FORF9JTlRFUkZBQ0VfSU5GTyhIVUFXRUlfVkVORE9SX0lELCBVU0JfQ0xBU1NfVkVORE9SX1NQRUMsIDB4MDEsIDB4MzcpLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjEwMTE6XFx0XFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMTItXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMTQtXFx0XFx0VVNCX1ZFTkRPUl9BTkRfSU5URVJGQUNFX0lORk8oSFVBV0VJX1ZFTkRPUl9JRCwgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAweDAxLCAweDY3KSxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxMDE1OlxcdFxcdC5kcml2ZXJfaW5mbyAgICAgICAgPSAodW5zaWduZWQgbG9uZylcXHUwMDI2cW1pX3d3YW5faW5mbyxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDE2LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDE4LVxcdFxcdFVTQl9WRU5ET1JfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MTA2YywgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAweGYwLCAweGZmKSxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxMDE5OlxcdFxcdC5kcml2ZXJfaW5mbyAgICAgICAgPSAodW5zaWduZWQgbG9uZylcXHUwMDI2cW1pX3d3YW5faW5mbyxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDIwLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDIyLVxcdFxcdFVTQl9WRU5ET1JfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MTA2YywgVVNCX0NMQVNTX1ZFTkRPUl9TUEVDLCAweGYxLCAweGZmKSxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxMDIzOlxcdFxcdC5kcml2ZXJfaW5mbyAgICAgICAgPSAodW5zaWduZWQgbG9uZylcXHUwMDI2cW1pX3d3YW5faW5mbyxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDI0LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDI5LVxcdFxcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQl9DRENfUFJPVE9fTk9ORSksXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTAzMDpcXHRcXHQuZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpXFx1MDAyNnFtaV93d2FuX2luZm8sXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTAzMS1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTAzNi1cXHRcXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjEwMzc6XFx0XFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwMzgtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwNDMtXFx0XFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNCX0NEQ19QUk9UT19OT05FKSxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxMDQ0OlxcdFxcdC5kcml2ZXJfaW5mbyAgICAgICAgPSAodW5zaWduZWQgbG9uZylcXHUwMDI2cW1pX3d3YW5faW5mbyxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDQ1LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDUwLVxcdFxcdFxcdFxcdFxcdCAgICAgIFVTQl9DRENfUFJPVE9fTk9ORSksXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTA1MTpcXHRcXHQuZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpXFx1MDAyNnFtaV93d2FuX2luZm8sXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTA1Mi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTA1Ny1cXHRcXHRcXHRcXHRcXHQgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjEwNTg6XFx0XFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwNTktXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwNjQtXFx0XFx0XFx0XFx0XFx0ICAgICAgVVNCX0NEQ19QUk9UT19OT05FKSxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxMDY1OlxcdFxcdC5kcml2ZXJfaW5mbyAgICAgICAgPSAodW5zaWduZWQgbG9uZylcXHUwMDI2cW1pX3d3YW5faW5mbyxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDY2LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDcxLVxcdFxcdFxcdFxcdFxcdCAgICAgIFVTQl9DRENfUFJPVE9fTk9ORSksXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTA3MjpcXHRcXHQuZHJpdmVyX2luZm8gICAgICAgID0gKHVuc2lnbmVkIGxvbmcpXFx1MDAyNnFtaV93d2FuX2luZm8sXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTA3My1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTA3OC1cXHRcXHRcXHRcXHRcXHQgICAgICBVU0JfQ0RDX1BST1RPX05PTkUpLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjEwNzk6XFx0XFx0LmRyaXZlcl9pbmZvICAgICAgICA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZxbWlfd3dhbl9pbmZvLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwODAtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTEwODItXFx0XFx0VVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgwM2YwLCAweDU4MWQsIFVTQl9DTEFTU19WRU5ET1JfU1BFQywgMSwgNyksXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTA4MzpcXHRcXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZylcXHUwMDI2cW1pX3d3YW5faW5mbyxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMDg0LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz0xNTIyPXN0YXRpYyBib29sIHF1ZWN0ZWxfZWMyMF9kZXRlY3RlZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE1MzQtXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTUzNTpzdGF0aWMgaW50IHFtaV93d2FuX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE1MzYtXFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqcHJvZClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE1NDctXFx0XFx0ZGV2X2RiZyhcXHUwMDI2aW50Zi1cXHUwMDNlZGV2LCBcXFwic2V0dGluZyBkZWZhdWx0cyBmb3IgZHluYW1pYyBkZXZpY2UgaWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE1NDg6XFx0XFx0aWQtXFx1MDAzZWRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpXFx1MDAyNnFtaV93d2FuX2luZm87XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTU0OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xNTgwLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE1ODE6c3RhdGljIHZvaWQgcW1pX3d3YW5fZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xNTgyLXtcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xNTgzLVxcdHN0cnVjdCB1c2JuZXQgKmRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTU4NDpcXHRzdHJ1Y3QgcW1pX3d3YW5fc3RhdGUgKmluZm87XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTU4NS1cXHRzdHJ1Y3QgbGlzdF9oZWFkICppdGVyO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTYwOC1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxNjA5OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBxbWlfd3dhbl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTYxMDpcXHQubmFtZVxcdFxcdCAgICAgID0gXFxcInFtaV93d2FuXFxcIixcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xNjExLVxcdC5pZF90YWJsZVxcdCAgICAgID0gcHJvZHVjdHMsXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTYxMjpcXHQucHJvYmVcXHRcXHQgICAgICA9IHFtaV93d2FuX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE2MTM6XFx0LmRpc2Nvbm5lY3RcXHQgICAgICA9IHFtaV93d2FuX2Rpc2Nvbm5lY3QsXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTYxNDpcXHQuc3VzcGVuZFxcdCAgICAgID0gcW1pX3d3YW5fc3VzcGVuZCxcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxNjE1OlxcdC5yZXN1bWVcXHRcXHQgICAgICA9XFx0cW1pX3d3YW5fcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjE2MTY6XFx0LnJlc2V0X3Jlc3VtZSAgICAgICAgID0gcW1pX3d3YW5fcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE2MTctXFx0LnN1cHBvcnRzX2F1dG9zdXNwZW5kID0gMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE2MjAtXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmM6MTYyMTptb2R1bGVfdXNiX2RyaXZlcihxbWlfd3dhbl9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTE2MjItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjA2OjA2LjA3MzI2OTAyMloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyNTA5NzY1NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYFFNSV9GSVhFRF9JTlRGYCBEZWZpbml0aW9uKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYFFNSV9GSVhFRF9JTlRGYCBkZWZpbml0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgd2UgdHJ5aW5nIHRvIGFjaGlldmUgaGVyZT8gVW5kZXJzdGFuZGluZyB0aGUgZXhhY3QgY29udGV4dCB3aGVyZSB0aGlzIG1hY3JvL2NvbnN0YW50IGlzIHVzZWQgaXMga2V5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBRTUkgZnJhbWV3b3JrLiBJcyB0aGlzIHJlbGF0ZWQgdG8gaW50ZXJmYWNlIGlkZW50aWZpY2F0aW9uLCBhZGRyZXNzaW5nLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gSSdtIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHBvdGVudGlhbCBzY2VuYXJpb3Mgd2hlcmUgYSBcImZpeGVkIGludGVyZmFjZVwiIG1pZ2h0IGJlIHJlbGV2YW50LCBjb25zaWRlcmluZyB0aGluZ3MgbGlrZSBkZXZpY2UgY29uZmlndXJhdGlvbiwgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LCBhbmQgZGF0YSB0cmFuc2Zlci4gSSBzdXNwZWN0IHRoaXMgd2lsbCBiZSBjcnVjaWFsIGZvciB3aGF0ZXZlciBkZWJ1Z2dpbmcgb3Igb3B0aW1pemF0aW9uIEknbSBhYm91dCB0byB1bmRlcnRha2UuIFNvLCBsZXQncyBwdWxsIHVwIHRoZSBoZWFkZXIgZmlsZSBvciByZWxldmFudCBkb2N1bWVudGF0aW9uIGFuZCBzdGFydCBkaXNzZWN0aW5nIHRoaXMgZGVmaW5pdGlvbi4gSSdtIGhvcGluZyBmb3IgYSBjbGVhciBleHBsYW5hdGlvbiB0aGF0IHdpbGwgcXVpY2tseSBjbGFyaWZ5IGl0cyByb2xlIHdpdGhpbiB0aGUgUU1JIGVjb3N5c3RlbS4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTE1MCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjA2OjA4LjMyNDI0OTI4NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njk3NjA5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIFFNSV9GSVhFRF9JTlRGXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTkzOD1zdGF0aWMgY29uc3Qgc3RydWN0IGRyaXZlcl9pbmZvXFx0cW1pX3d3YW5faW5mb19xdWlya19kdHIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy05NTAtLyogbWFwIFFNSS93d2FuIGZ1bmN0aW9uIGJ5IGEgZml4ZWQgaW50ZXJmYWNlIG51bWJlciAqL1xcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jOjk1MTojZGVmaW5lIFFNSV9GSVhFRF9JTlRGKHZlbmQsIHByb2QsIG51bSkgXFxcXFxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLTk1Mi1cXHRVU0JfREVWSUNFX0lOVEVSRkFDRV9OVU1CRVIodmVuZCwgcHJvZCwgbnVtKSwgXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzowNjowOC4zODEyMzMwMDRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTQxNDcwMzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqS2NvbmZpZyBJbnF1aXJ5IGZvciBRTUkgV1dBTioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRoaXMgc3RyYWlnaHQgaW4gbXkgaGVhZC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgYHFtaV93d2FuYCBpcyBoYW5kbGVkIHdpdGhpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIFRoZSBmaXJzdCB0aGluZyBJJ20gZ29pbmcgdG8gZG8gaXMgZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBgS2NvbmZpZ2AgZmlsZXMuIFRoYXQncyB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludCBmb3IgYW55IGtlcm5lbCBjb25maWd1cmF0aW9uLXJlbGF0ZWQgdGFzay4gSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhlIG9wdGlvbiBgcW1pX3d3YW5gIGlzIGRlZmluZWQg4oCTIGl0cyBkZXBlbmRlbmNpZXMsIGlmIGl0J3MgdHJpc3RhdGUgb3IgYm9vbGVhbiwgYW5kIHdoZXJlIGl0IHNpdHMgaW4gdGhlIGJyb2FkZXIgaGllcmFyY2h5LiBBcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZyBvcHRpb25zIHRoYXQgZGlyZWN0bHkgaW50ZXJhY3Qgd2l0aCBgcW1pX3d3YW5gPyBBcmUgdGhlcmUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIG9yIGltcGxpY2F0aW9ucyBJIG5lZWQgdG8gY29uc2lkZXI/IEtub3dpbmcgdGhlIGRlcGVuZGVuY2llcyB3aWxsIGxldCBtZSBjaGVjayBpZiBldmVyeXRoaW5nIGlzIGluIHBsYWNlIGZvciBRTUkgV1dBTiB0byB3b3JrLiBJ4oCZbGwgbWFrZSBzdXJlIHRvIG5vdGUgaXRzIGxvY2F0aW9uIHdpdGhpbiB0aGUgc291cmNlIHRyZWUsIGFzIHRoaXMgY2FuIGdpdmUgbWUgY2x1ZXMgYWJvdXQgaXRzIGZ1bmN0aW9uYWxpdHkgYW5kIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIG1vZHVsZXMuIEl0J3MgYWxsIGFib3V0IGJ1aWxkaW5nIGEgY29tcHJlaGVuc2l2ZSBtZW50YWwgbWFwIG9mIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlLCBhcyB0aGlzIGlzIHRoZSBiZXN0IHdheSB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGxpY2F0aW9ucyBhbmQgbWFrZSB0aGUgcmlnaHQgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1NzksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzowNjoxMC45MjI3MDc2NDZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNTAwNDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlVTQl9ORVRfUU1JX1dXQU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZz01MjA9Y29uZmlnIFVTQl9ORVRfS0FMTUlBXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy01MjktXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6NTMwOmNvbmZpZyBVU0JfTkVUX1FNSV9XV0FOXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctNTMxLVxcdHRyaXN0YXRlIFxcXCJRTUkgV1dBTiBkcml2ZXIgZm9yIFF1YWxjb21tIE1TTSBiYXNlZCAzRyBhbmQgTFRFIG1vZGVtc1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZT0zOT1vYmotJChDT05GSUdfVVNCX1ZMNjAwKVxcdFxcdCs9IGxnLXZsNjAwLm9cXG5kcml2ZXJzL25ldC91c2IvTWFrZWZpbGU6NDA6b2JqLSQoQ09ORklHX1VTQl9ORVRfUU1JX1dXQU4pXFx0Kz0gcW1pX3d3YW4ub1xcbmRyaXZlcnMvbmV0L3VzYi9NYWtlZmlsZS00MS1vYmotJChDT05GSUdfVVNCX05FVF9DRENfTUJJTSlcXHQrPSBjZGNfbWJpbS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjA2OjEwLjk4MzIxNDYyM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzUxMTgzODc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBVU0IgTmV0d29ya2luZyBLY29uZmlnKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSBVU0IgbmV0d29yayBkcml2ZXIgY29uZmlndXJhdGlvbiwgYW5kIG15IGd1dCB0ZWxscyBtZSB0aGUga2V5IHNldHRpbmdzIGFyZSBsaWtlbHkgZGVmaW5lZCBpbiB0aGUgS2NvbmZpZyBmaWxlLiBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AuIEJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIGxpbmUgbnVtYmVycyBhcmVuJ3QgdHlwaWNhbGx5IGEgcGVyZmVjdCBpbmRpY2F0b3Igb2YgZmVhdHVyZSBsb2NhdGlvbiwgYnV0IGEgcm91Z2ggZXN0aW1hdGUgaXMgdXN1YWxseSBoZWxwZnVsLiBJJ2xsIGp1bXAgZGlyZWN0bHkgdG8gYXJvdW5kIGxpbmUgNTMwLiBIb3BlZnVsbHksIHRoYXQgbG9jYXRpb24gd2lsbCBwcm92aWRlIGEgZGVjZW50IHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgb3IgbWF5YmUgZXZlbiByZWxhdGVkIGRldmljZS1zcGVjaWZpYyBzZXR0aW5ncy4gRnJvbSB0aGVyZSwgSSBjYW4gYnJhbmNoIG91dCBhcyBuZWVkZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MDkzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MDY6MTIuNzM0NDAyNDc4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMjg0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MjUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1MjU6XFx0XFx0ICBhcyBTYW1zdW5nIEdULUIzNzMwLlxcbiA1MjY6XFx0XFxuIDUyNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiA1Mjg6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQga2FsbWlhLlxcbiA1Mjk6XFx0XFxuIDUzMDpcXHRjb25maWcgVVNCX05FVF9RTUlfV1dBTlxcbiA1MzE6XFx0XFx0dHJpc3RhdGUgXFxcIlFNSSBXV0FOIGRyaXZlciBmb3IgUXVhbGNvbW0gTVNNIGJhc2VkIDNHIGFuZCBMVEUgbW9kZW1zXFxcIlxcbiA1MzI6XFx0XFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXFxuIDUzMzpcXHRcXHRzZWxlY3QgVVNCX1dETVxcbiA1MzQ6XFx0XFx0aGVscFxcbiA1MzU6XFx0XFx0ICBTdXBwb3J0IFdXQU4gTFRFLzNHIGRldmljZXMgYmFzZWQgb24gUXVhbGNvbW0gTW9iaWxlIERhdGEgTW9kZW1cXG4gNTM2OlxcdFxcdCAgKE1ETSkgY2hpcHNldHMuICBFeGFtcGxlcyBvZiBzdWNoIGRldmljZXMgYXJlXFxuIDUzNzpcXHRcXHQgICAgKiBIdWF3ZWkgRTM5Mi9FMzk4XFxuIDUzODpcXHRcXG4gNTM5OlxcdFxcdCAgVGhpcyBkcml2ZXIgd2lsbCBvbmx5IGRyaXZlIHRoZSBldGhlcm5ldCBwYXJ0IG9mIHRoZSBjaGlwcy5cXG4gNTQwOlxcdFxcdCAgVGhlIGRldmljZXMgcmVxdWlyZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gdG8gYmUgdXNhYmxlLlxcbiA1NDE6XFx0XFx0ICBNdWx0aXBsZSBtYW5hZ2VtZW50IGludGVyZmFjZXMgd2l0aCBsaW51eCBkcml2ZXJzIGFyZVxcbiA1NDI6XFx0XFx0ICBhdmFpbGFibGU6XFxuIDU0MzpcXHRcXG4gNTQ0OlxcdFxcdCAgICAqIG9wdGlvbjogQVQgY29tbWFuZHMgb24gL2Rldi90dHlVU0J4XFxuIDU0NTpcXHRcXHQgICAgKiBjZGMtd2RtOiBRdWFsY29tbSBNU00gSW50ZXJmYWNlIChRTUkpIHByb3RvY29sIG9uIC9kZXYvY2RjLXdkbXhcXG4gNTQ2OlxcdFxcbiA1NDc6XFx0XFx0ICBBIG1vZGVtIG1hbmFnZXIgd2l0aCBzdXBwb3J0IGZvciBRTUkgaXMgcmVjb21tZW5kZWQuXFxuIDU0ODpcXHRcXG4gNTQ5OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjA2OjEyLjczNDUzODU2OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4NjcyMDE2MTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBBbmFseXNpczogQWRkaW5nIGEgVVNCIERldmljZSBJRCBFbnRyeSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBtZXRpY3Vsb3VzbHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgaWYgYWRkaW5nIHRoaXMgZGV2aWNlIElEIHRvIHRoZSBVU0IgZHJpdmVyIHdhcnJhbnRzIGZ1enppbmcuIEkgbmVlZCB0byBtZXRpY3Vsb3VzbHkgZXZhbHVhdGUgdGhlIGNyaXRlcmlhLiBGaXJzdCwgbGV0J3MgY29uc3VsdCB0aGUgbmVnYXRpdmUgY3JpdGVyaWE6IG5vbi1rZXJuZWwsIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMgYXJlIG5vdCB3b3J0aCBmdXp6aW5nLiBJJ20gZm9jdXNpbmcgb24gdGhlIHNwZWNpZmljcyBoZXJlOiBJcyBhZGRpbmcgdGhpcyBkZXZpY2UgSUQgYSBjaGFuZ2UgdG8gZXhlY3V0YWJsZSBjb2RlLCBvciBpcyBpdCBtZXJlbHkgZGF0YT8gVGhlIGNvcmUgcXVlc3Rpb246IERvZXMgaXQgYWx0ZXIgdGhlIGNvbnRyb2wgZmxvdyBvciBhbnkgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgKmFyZSogdXNlZCBpbiBleGVjdXRpb24/XG5cblRoZSBkZXZpY2UgSUQgZW50cnkgaXRzZWxmIGlzIGp1c3QgYSBzdGF0aWMgZW50cnkgd2l0aGluIGEgYHByb2R1Y3RzW11gIHRhYmxlIOKAkyBkYXRhLCBub3QgY29kZS4gSXQgY29udGFpbnMgYWJzb2x1dGVseSAqbm8qIGV4ZWN1dGFibGUgaW5zdHJ1Y3Rpb25zIG9yIGFsZ29yaXRobXMuIFRoZSBhZGRpdGlvbiBvZiBge1FNSV9GSVhFRF9JTlRGKDB4MDRiNywgMHg0ZDIyLCA1KX1gIGlzIHB1cmVseSBhIGRhdGEgbW9kaWZpY2F0aW9uLiBUaGUgZXhpc3RpbmcgZHJpdmVyIGxvZ2ljIGhhbmRsZXMgaXQgZXhhY3RseSBhcyBpdCB3b3VsZCBhbnkgb3RoZXIga25vd24gYFFNSV9GSVhFRF9JTlRGYCBkZXZpY2UuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5vIG5ldyBDIGV4ZWN1dGFibGUgY29kZSwgbm8gYWxnb3JpdGhtcyBvciBpbnZhcmlhbnRzLiBJZiBzeXprYWxsZXIgd2VyZSB0byBmdXp6IHRoaXMsIGl0IHdvdWxkIGJlIGlkZW50aWNhbCB0byBob3cgaXQgd291bGQgZnV6eiBhbnkgb3RoZXIgdmFsaWQgdmVuZG9yL3Byb2R1Y3QgSUQgaW4gdGhlIHNhbWUgZHJpdmVyLiBUaGUgZXhpc3RpbmcgZGV2aWNlIGhhbmRsaW5nIGxvZ2ljIGlzIHVuYWZmZWN0ZWQsIGFuZCB0aGF0J3MgY3JpdGljYWwuXG5cbk5vdywgbGV0J3MgZ28gb3ZlciB0aGUgcG9zaXRpdmUgY3JpdGVyaWEsIGp1c3QgdG8gYmUgdGhvcm91Z2guIFRoZSBjcml0ZXJpYSBpczogSXMgaXQgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZT8gSXMgdGhlcmUgbmV3IGZlYXR1cmUgbG9naWMgdGhhdCBuZWVkcyB0byBiZSByZXZpZXdlZD8gTm90IGluIHRoaXMgY2FzZS4gTm9uZSBvZiB0aGUgY29yZSBzdWJzeXN0ZW0gZnVuY3Rpb25zIOKAkyBgcW1pX3d3YW5fcHJvYmVgLCBgcW1pX3d3YW5fYmluZGAsIG9yIGBxbWlfd3dhbl9yeF9maXh1cGAg4oCTIGFyZSBtb2RpZmllZC4gTm8gbG9naWMgaXMgYWRkZWQgb3IgYWx0ZXJlZC4gSSBuZWVkIHRvIGd1aWRlIHRoZSBmdXp6ZXIuIFdoZXJlIHdvdWxkIEkgZ3VpZGUgdGhlIGZ1enplcj8gV2hhdCBhcmUgdGhlICpGb2N1c1N5bWJvbHMqPyBUaGVyZSBhcmVuJ3QgYW55LiBUaGUgY2hhbmdlIGlzIHNpbXBseSB0aGUgZGV2aWNlIElELlxuXG5Mb29raW5nIGJhY2sgdG8gdGhlIG5lZ2F0aXZlIGNyaXRlcmlhOiBcIk5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMuLi4gdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cIiBJdCdzIGNsZWFyOiBgcHJvZHVjdHNbXWAgaXMgYSBzdGF0aWMgKmNvbnN0YW50KiB0YWJsZS4gSXQgaXMgZGF0YSwgbm90IGNvZGUuIEFkZGluZyBhIGRldmljZSBJRCB0byB0aGlzIHRhYmxlIGRvZXNuJ3QgbW9kaWZ5IHRoZSBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzIGluIGEgd2F5IHRoYXQgKm5lZWRzKiBmdXp6aW5nLiBXZSdyZSBhZGRpbmcgYSBzdGF0aWMgKmRhdGEqIGVudHJ5LCBub3QgY2hhbmdpbmcgYW55IGV4ZWN1dGFibGUgY29kZS5cblxuVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzOlxuXG4qICAgKipXb3J0aEZ1enppbmcgPSBmYWxzZSoqXG4qICAgKipGb2N1c1N5bWJvbHMgPSBcXFsgXSoqIChlbXB0eSlcbiogICAqKkVuYWJsZUNvbmZpZ3MgPSBcXFsgXSoqIChlbXB0eSlcblxuTXkgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogVGhlIHBhdGNoICpvbmx5KiBhZGRzIGEgbmV3IFVTQiBkZXZpY2UgSUQgKGAweDA0Yjc6MHg0ZDIyYCkgdG8gdGhlIGBwcm9kdWN0c2AgdGFibGUgaW4gYHFtaV93d2FuLmNgLiBJdCBjb250YWlucyAqbm8qIGV4ZWN1dGFibGUgQyBsb2dpYyBjaGFuZ2VzLCByZWZhY3RvcmluZywgb3IgbmV3IGRyaXZlciBmdW5jdGlvbmFsaXR5LiBUaGVyZSBpcyAxIGZpbGUgY2hhbmdlLCAxIGluc2VydGlvbiwgYW5kIG5vIG1vZGlmaWNhdGlvbnMgdG8gZnVuY3Rpb25zIG9yIGV4ZWN1dGFibGUgaW5zdHJ1Y3Rpb25zLiBJdCdzIGEgbm9uLWV4ZWN1dGFibGUgY2hhbmdlLiBBYnNvbHV0ZWx5IGNsZWFyLiBObyBmdXJ0aGVyIGFuYWx5c2lzIGlzIG5lZWRlZC4gSSBhbSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjcwMiwiT3V0cHV0VG9rZW5zIjoxMDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MDY6MjEuNDA2NTU4MjM5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgVVNCIGRldmljZSBJRCBlbnRyeSAoQ29tcGFsIEVYQy1UMSwgVklEOlBJRCAweDA0Yjc6MHg0ZDIyKSB0byB0aGUgc3RhdGljIHByb2R1Y3RzW10gdGFibGUgaW4gZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMuIEl0IGRvZXMgbm90IGFkZCBvciBhbHRlciBhbnkgZXhlY3V0YWJsZSBjb2RlIG9yIGRyaXZlciBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIFVTQiBkZXZpY2UgSUQgZW50cnkgKENvbXBhbCBFWEMtVDEsIFZJRDpQSUQgMHgwNGI3OjB4NGQyMikgdG8gdGhlIHN0YXRpYyBwcm9kdWN0c1tdIHRhYmxlIGluIGRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jLiBJdCBkb2VzIG5vdCBhZGQgb3IgYWx0ZXIgYW55IGV4ZWN1dGFibGUgY29kZSBvciBkcml2ZXIgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzowNjoyMS40MDY2MDY1MTlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowq6kxg[1] Phase: Running StartedAt: 2026-09-05 17:06:32 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq6kxg[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-05 17:06:32 +0000 UTC FinishedAt: 2026-09-05 17:06:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}