Name: series-workflowlq625 Phase: Failed StartedAt: 2026-09-05 04:08:16 +0000 UTC FinishedAt: 2026-09-05 04:10:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlq625[0] Phase: Succeeded StartedAt: 2026-09-05 04:08:16 +0000 UTC FinishedAt: 2026-09-05 04:10:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlq625[0].run-triage Phase: Succeeded StartedAt: 2026-09-05 04:08:16 +0000 UTC FinishedAt: 2026-09-05 04:10:18 +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+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGRvY3VtZW50YXRpb24gZm9yIFZGSU8gc2VsZnRlc3RzIChEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdmZpby1zZWxmdGVzdHMucnN0LCBEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvaW5kZXgucnN0KSBhbmQgdXBkYXRlcyB0aGUgTUFJTlRBSU5FUlMgZmlsZS4gTm8ga2VybmVsIGV4ZWN1dGFibGUgY29kZSBvciBoZWFkZXJzIGFyZSBtb2RpZmllZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6MDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmNjBhMmE3NGM1ODg5YmEyMDc0MGUzOWQ1Y2IyMzk0YjgxNzY5ZjIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAwNDowOTozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvaW5kZXgucnN0IGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdFxuaW5kZXggZWFmNzE2MWZmOTU3OC4uNjMwZjMzMjg3YmMwYyAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9pbmRleC5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9pbmRleC5yc3RcbkBAIC00Nyw2ICYjNDM7NDcsNyBAQCBvZiBpbnRlcmVzdCB0byBtb3N0IGRldmVsb3BlcnMgd29ya2luZyBvbiBkZXZpY2UgZHJpdmVycy5cbiAgICB2ZmlvLW1lZGlhdGVkLWRldmljZVxuICAgIHZmaW9cbiAgICB2ZmlvLXBjaS1kZXZpY2Utc3BlY2lmaWMtZHJpdmVyLWFjY2VwdGFuY2VcbiYjNDM7ICAgdmZpby1zZWxmdGVzdHNcbiBcbiBCdXMtbGV2ZWwgZG9jdW1lbnRhdGlvblxuID09PT09PT09PT09PT09PT09PT09PT09XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tc2VsZnRlc3RzLnJzdCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3Rcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi45ZDM5YTIyNTE5ZDZhXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdmZpby1zZWxmdGVzdHMucnN0XG5AQCAtMCwwICYjNDM7MSwyNTIgQEBcbiYjNDM7Li4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7XG4mIzQzOz09PT09PT09PT09PT09XG4mIzQzO1ZGSU8gU2VsZnRlc3RzXG4mIzQzOz09PT09PT09PT09PT09XG4mIzQzO1xuJiM0MztWRklPIHNlbGZ0ZXN0cyBhcmUgYnVpbHQgb24gdG9wIG9mIHRoZSBrZXJuZWwmIzM5O3Mgc2VsZnRlc3RzIGZyYW1ld29yayBhbmQgYXJlXG4mIzQzO2xvY2F0ZWQgaW4gYGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvYGAuXG4mIzQzO1xuJiM0MztWRklPIHNlbGZ0ZXN0cyBlbmFibGUga2VybmVsIGRldmVsb3BlcnMgdG8gd3JpdGUgYW5kIHJ1biB0ZXN0cyB0aGF0IHRha2UgdGhlXG4mIzQzO2Zvcm0gb2YgdXNlcnNwYWNlIHByb2dyYW1zIHRoYXQgaW50ZXJhY3Qgd2l0aCBWRklPIGFuZCBJT01NVUZEIHVBUElzLiBWRklPXG4mIzQzO3NlbGZ0ZXN0cyBjYW4gYmUgdXNlZCB0byB3cml0ZSBmdW5jdGlvbmFsIHRlc3RzIGZvciBuZXcgZmVhdHVyZXMsIHJlZ3Jlc3Npb25cbiYjNDM7dGVzdHMgZm9yIGJ1Z3MsIGFuZCBwZXJmb3JtYW5jZSB0ZXN0cyBmb3Igb3B0aW1pemF0aW9ucy5cbiYjNDM7XG4mIzQzO1RoZXNlIHRlc3RzIGFyZSBkZXNpZ25lZCB0byBpbnRlcmFjdCB3aXRoIHJlYWwgUENJIGRldmljZXMsIGkuZS4gdGhleSBkbyBub3RcbiYjNDM7cmVseSBvbiBtb2NraW5nIG91dCBvciBmYWtpbmcgYW55IGJlaGF2aW9yIGluIHRoZSBrZXJuZWwuIFRoaXMgYWxsb3dzIHRoZSB0ZXN0c1xuJiM0Mzt0byBleGVyY2lzZSBub3Qgb25seSBWRklPIGJ1dCBhbHNvIElPTU1VRkQsIHRoZSBJT01NVSBkcml2ZXIsIGludGVycnVwdFxuJiM0MztyZW1hcHBpbmcsIElSUSBoYW5kbGluZywgZXRjLlxuJiM0MztcbiYjNDM7UnVubmluZyBUZXN0c1xuJiM0Mzs9PT09PT09PT09PT09XG4mIzQzO1xuJiM0MztSdW5uaW5nIFZGSU8gc2VsZnRlc3RzIHJlcXVpcmVzIGEgZGV2aWNlIGJvdW5kIHRvIHRoZSBgYHZmaW8tcGNpYGAgZHJpdmVyLlxuJiM0MztUaGVyZSBhcmUgc2NyaXB0cyBpbiBgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vc2NyaXB0cy9gYCB0byBoZWxwIHdpdGhcbiYjNDM7c2V0dGluZyBvbmUgdXAuXG4mIzQzO1xuJiM0MztQaWNraW5nIGEgRGV2aWNlXG4mIzQzOy0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzO1NvbWUgVkZJTyBzZWxmdGVzdHMgcmVxdWlyZSBhIGRldmljZSB3aXRoIGEgc3VwcG9ydGVkIGRyaXZlciBpbXBsZW1lbnRhdGlvbiBpblxuJiM0Mzt0aGUgc2VsZnRlc3RzIGxpYnJhcnkgKHNlZSBgRHJpdmVyIEZyYW1ld29ya2BfKSwgd2hpbGUgb3RoZXIgdGVzdHMgKHN1Y2ggYXNcbiYjNDM7YmFzaWMgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2Ugb3IgcmVzZXQgdGVzdHMpIGNhbiB1c2UgYW55IGFyYml0cmFyeSBQQ0kgZGV2aWNlLlxuJiM0MztcbiYjNDM7VGhpcyBzZWN0aW9uIHdpbGwgYmUgZXhwYW5kZWQgaW4gdGhlIGZ1dHVyZSB0byBndWlkZSBkZXZlbG9wZXJzIG9uIGhvdyB0byBmaW5kXG4mIzQzO2EgZGV2aWNlIHdpdGggYSBzdXBwb3J0ZWQgZHJpdmVyLiBJbiB0aGUgbWVhbnRpbWUsIHRoZSBzZWxmdGVzdHMgbGlicmFyeVxuJiM0MztpbmNsdWRlcyBkcml2ZXIgc3VwcG9ydCBmb3IgdGhlIGZvbGxvd2luZyBkZXZpY2VzOlxuJiM0MztcbiYjNDM7LSBJbnRlbCBJR0IgR2lnYWJpdCBFdGhlcm5ldCBjb250cm9sbGVyc1xuJiM0MzstIEludGVsIElPQVQgKEkvTyBBY2NlbGVyYXRpb24gVGVjaG5vbG9neSkgRE1BIGVuZ2luZXNcbiYjNDM7LSBJbnRlbCBEU0EgKERhdGEgU3RyZWFtaW5nIEFjY2VsZXJhdG9yKVxuJiM0MzstIE5WSURJQSBGYWxjb24gZW5naW5lcyAoZm91bmQgaW4gbWFueSBOVklESUEgR1BVcywgZS5nLiwgR1RYIDEwODAgb3IgUlRYIDIwODApXG4mIzQzO1xuJiM0MztOb3RlIHRoYXQgdXNpbmcgSW50ZWwgRFNBIGRldmljZXMgcmVxdWlyZXMgc2V0dGluZyB0aGUgbW9kdWxlIHBhcmFtZXRlclxuJiM0MztgYHZmaW9fcGNpLmRpc2FibGVfZGVueWxpc3Q9WWBgIHRvIGFsbG93IGBgdmZpby1wY2lgYCB0byBiaW5kIHRvIERTQSBkZXZpY2VzLlxuJiM0MztcbiYjNDM7U2V0dGluZyB1cCBEZXZpY2VzXG4mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MztcbiYjNDM7Li4gY29kZS1ibG9jazo6IHNoXG4mIzQzO1xuJiM0MzsgICAgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9zY3JpcHRzL3NldHVwLnNoIDAwMDA6MDE6MDAuMFxuJiM0MztcbiYjNDM7VGhlIHNjcmlwdCBoYW5kbGVzIHVuYmluZGluZyB0aGUgZGV2aWNlIGZyb20gaXRzIGN1cnJlbnQgZHJpdmVyIGFuZCBiaW5kaW5nIGl0XG4mIzQzO3RvIGBgdmZpby1wY2lgYC4gTWV0YWRhdGEgYWJvdXQgdGhpcyBkZXZpY2UgaXMgc3RvcmVkIGluXG4mIzQzO2BgL3RtcC92ZmlvLXNlbGZ0ZXN0cy1kZXZpY2VzYGAgc28gdGhhdCB0aGUgZGV2aWNlIGNhbiBiZSBjbGVhbmVkIHVwIGxhdGVyXG4mIzQzOyhib3VuZCBiYWNrIHRvIGl0cyBvcmlnaW5hbCBkcml2ZXIpLlxuJiM0MztcbiYjNDM7RXhlY3V0aW9uXG4mIzQzOy0tLS0tLS0tLVxuJiM0MztcbiYjNDM7VkZJTyBzZWxmdGVzdHMgZXhwZWN0IHRoZSBQQ0kgZGV2aWNlIEJERiBzdHJpbmcgYXMgdGhlaXIgZmluYWwgY29tbWFuZC1saW5lXG4mIzQzO2FyZ3VtZW50LiBlLmcuXG4mIzQzO1xuJiM0MzsuLiBjb2RlLWJsb2NrOjogc2hcbiYjNDM7XG4mIzQzOyAgICB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL3ZmaW9fcGNpX2RldmljZV90ZXN0IDAwMDA6MDE6MDAuMFxuJiM0MztcbiYjNDM7QWx0ZXJuYXRpdmVseSwgdGhlIFBDSSBkZXZpY2UgQkRGIGNhbiBiZSBwYXNzZWQgdmlhIHRoZSBgYFZGSU9fU0VMRlRFU1RTX0JERmBgXG4mIzQzO2Vudmlyb25tZW50IHZhcmlhYmxlLCB3aGljaCBjYW4gYmUgdXNlZnVsIHdoZW4gcnVubmluZyBhbGwgdGVzdHM6XG4mIzQzO1xuJiM0MzsuLiBjb2RlLWJsb2NrOjogc2hcbiYjNDM7XG4mIzQzO1x0ZXhwb3J0IFZGSU9fU0VMRlRFU1RTX0JERj0wMDAwOjAxOjAwLjBcbiYjNDM7XHRtYWtlIC1DIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzIFRBUkdFVFM9dmZpbyBpbnN0YWxsXG4mIzQzO1x0dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3NlbGZ0ZXN0X2luc3RhbGwvcnVuX2tzZWxmdGVzdC5zaCAtYyB2ZmlvXG4mIzQzO1xuJiM0MztDbGVhbnVwXG4mIzQzOy0tLS0tLS1cbiYjNDM7XG4mIzQzOy4uIGNvZGUtYmxvY2s6OiBzaFxuJiM0MztcbiYjNDM7ICAgIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vc2NyaXB0cy9jbGVhbnVwLnNoXG4mIzQzO1xuJiM0MztUaGlzIHNjcmlwdCBoYW5kbGVzIHVuYmluZGluZyBhbGwgcHJldmlvdXNseSBzZXR1cCBkZXZpY2VzIGZyb20gYGB2ZmlvLXBjaWBgXG4mIzQzO2FuZCBiaW5kaW5nIHRoZW0gYmFjayB0byB0aGVpciBvcmlnaW5hbCBkcml2ZXIuIFNwZWNpZmljIGRldmljZXMgY2FuIGJlIGNsZWFuZWRcbiYjNDM7dXAgYnkgcGFzc2luZyB0aGVpciBCREYgc3RyaW5nIHRvIHRoZSBjbGVhbnVwIHNjcmlwdC5cbiYjNDM7XG4mIzQzO1dyaXRpbmcgVGVzdHNcbiYjNDM7PT09PT09PT09PT09PVxuJiM0MztcbiYjNDM7VkZJTyBzZWxmdGVzdHMgbGV2ZXJhZ2UgdGhlIGBga3NlbGZ0ZXN0X2hhcm5lc3MuaGBgIG1hY3JvcyB0byBzdHJ1Y3R1cmUgc2V0dXBcbiYjNDM7YW5kIHRlYXJkb3duIHNjZW5hcmlvcy4gQSBiYXNpYyB0ZXN0IGludm9sdmVzOlxuJiM0MztcbiYjNDM7MS4gRGVjbGFyaW5nIGEgdGVzdCBGSVhUVVJFIGNvbnRhaW5pbmcgdGhlIGRldmljZSBhbmQgSU9NTVUgc3RhdGUuXG4mIzQzOzIuIEdlbmVyYXRpbmcgdGVzdCB2YXJpYW50cyB0aGF0IHNwYW4gdGhlIGRpZmZlcmVudCBJT01NVSBtb2RlcyB1dGlsaXppbmdcbiYjNDM7ICAgYGBGSVhUVVJFX1ZBUklBTlRfQUREX0FMTF9JT01NVV9NT0RFUygpYGAuXG4mIzQzOzMuIEluaXRpYWxpemluZyB0aGUgZGV2aWNlIGFuZCBiaW5kaW5nIHRoZSBkZWZhdWx0IGRyaXZlciBvcHMuXG4mIzQzO1xuJiM0MztGb3IgYSBjb21wbGV0ZSBleGFtcGxlIG9mIHdyaXRpbmcgYSBWRklPIHNlbGZ0ZXN0LCByZWZlciB0b1xuJiM0MztgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vdmZpb19wY2lfZGV2aWNlX3Rlc3QuY2BgLlxuJiM0MztcbiYjNDM7VkZJTyBTZWxmdGVzdHMgTGlicmFyeSAobGlidmZpbylcbiYjNDM7PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiYjNDM7XG4mIzQzO1RoZSBzZWxmdGVzdHMgZGlyZWN0b3J5IGNvbnRhaW5zIGEgaGVscGVyIGxpYnJhcnkgY29tcGlsZWQgZnJvbSB0aGUgYGBsaWIvYGBcbiYjNDM7c3ViZGlyZWN0b3J5LiBJdCBwcm92aWRlcyBzdHJ1Y3R1cmVzIGFuZCBoZWxwZXIgZnVuY3Rpb25zIHRvIGhhbmRsZSBzdGFuZGFyZFxuJiM0MztvcGVyYXRpb25zIGxpa2Ugb3BlbmluZyBWRklPIGRldmljZXMsIGNyZWF0aW5nIFZGSU8gY29udGFpbmVycywgYW5kIGludGVyYWN0aW5nXG4mIzQzO3dpdGggVkZJTyBhbmQgSU9NTVVGRC5cbiYjNDM7XG4mIzQzO0FsbCBWRklPIHNlbGZ0ZXN0cyBoYXZlIGxpYnZmaW8gbGlua2VkIGluIGJ5IGRlZmF1bHQuIFRlc3RzIGNhbiBhY2Nlc3MgdGhlXG4mIzQzO2xpYnJhcnkgYnkgaW5jbHVkaW5nIGBgXHUwMDNjbGlidmZpby5oXHUwMDNlYGAuXG4mIzQzO1xuJiM0MztDb3JlIE9iamVjdHNcbiYjNDM7LS0tLS0tLS0tLS0tXG4mIzQzO1xuJiM0MztUaGUgVkZJTyBzZWxmdGVzdHMgZnJhbWV3b3JrIHJldm9sdmVzIGFyb3VuZCB0d28gZGlzdGluY3QgY29yZSBvYmplY3RzOlxuJiM0MztgYHN0cnVjdCBpb21tdWBgIGFuZCBgYHN0cnVjdCB2ZmlvX3BjaV9kZXZpY2VgYC4gSXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmRcbiYjNDM7dGhlIGRpc3RpbmN0aW9uIGFuZCByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVtOlxuJiM0MztcbiYjNDM7LSBgYHN0cnVjdCBpb21tdWBgIHJlcHJlc2VudHMgYW4gSU9NTVUgZG9tYWluIGFuZCB0aGUgQVBJIHVzZWQgdG8gcHJvZ3JhbSBpdFxuJiM0MzsgIChlLmcuIGxlZ2FjeSBWRklPIFR5cGUxIHZzIElPTU1VRkQpLiBJdCBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIEkvT1xuJiM0MzsgIGFkZHJlc3Mgc3BhY2UsIGhhbmRsaW5nIERNQSBtYXBwaW5ncywgYW5kIHRyYW5zbGF0aW5nIGJldHdlZW4gaG9zdCB2aXJ0dWFsXG4mIzQzOyAgYWRkcmVzc2VzIChIVkEpIGFuZCBJTyB2aXJ0dWFsIGFkZHJlc3NlcyAoSU9WQSkuXG4mIzQzO1xuJiM0MzstIGBgc3RydWN0IHZmaW9fcGNpX2RldmljZWBgIHJlcHJlc2VudHMgYSBzaW5nbGUgUENJIGRldmljZS4gSXQgZW5jYXBzdWxhdGVzXG4mIzQzOyAgdGhlIFZGSU8gZGV2aWNlIGZpbGUgZGVzY3JpcHRvciwgaGFuZGxlcyBhY2Nlc3MgdG8gdGhlIFBDSSBjb25maWd1cmF0aW9uXG4mIzQzOyAgc3BhY2UsIG1hbmFnZXMgbWVtb3J5LW1hcHBlZCBCQVJzLCBhbmQgZHJpdmVzIGRldmljZSBpbnRlcnJ1cHRzLlxuJiM0MztcbiYjNDM7QSB0eXBpY2FsIHRlc3QgaW5pdGlhbGl6ZXMgYW4gSU9NTVUgaW5zdGFuY2UgZmlyc3QsIHRoZW4gcGFzc2VzIGl0IHdoZW5cbiYjNDM7aW5pdGlhbGl6aW5nIG9uZSBvciBtb3JlIFBDSSBkZXZpY2VzLCBsaW5raW5nIHRoZSBkZXZpY2VzIHRvIHRoZSBzaGFyZWQgSU9NTVVcbiYjNDM7ZG9tYWluLlxuJiM0MztcbiYjNDM7YGBzdHJ1Y3QgaW9tbXVgYFxuJiM0MzteXl5eXl5eXl5eXl5eXl5eXG4mIzQzO1xuJiM0MztUaGUgYGBzdHJ1Y3QgaW9tbXVgYCBhYnN0cmFjdHMgYXdheSB0aGUgY29tcGxleGl0eSBvZiBtYW5hZ2luZyBWRklPIGNvbnRhaW5lcnMsXG4mIzQzO0lPTU1VIGdyb3VwcywgYW5kIElPTU1VRkQgY29udGV4dHMuIEEgdGVzdCBhbGxvY2F0ZXMgaXRzIElPTU1VIGhhbmRsZSB1c2luZ1xuJiM0MztgYGlvbW11X2luaXQoKWBgIHBhc3Npbmcgb25lIG9mIHRoZSBzdXBwb3J0ZWQgSU9NTVUgbW9kZXM6XG4mIzQzO1xuJiM0MzsuLiBjb2RlLWJsb2NrOjogY1xuJiM0MztcbiYjNDM7ICAgIHN0cnVjdCBpb21tdSAqaW9tbXUgPSBpb21tdV9pbml0KE1PREVfSU9NTVVGRCk7XG4mIzQzOyAgICAuLi5cbiYjNDM7ICAgIGlvbW11X2NsZWFudXAoaW9tbXUpO1xuJiM0MztcbiYjNDM7VGhlIHNlbGZ0ZXN0IGZyYW1ld29yayBpcyBkZXNpZ25lZCB0byB3b3JrIHVuaWZvcm1seSBhY3Jvc3MgYWxsIHN0YW5kYXJkIGtlcm5lbFxuJiM0MztJT01NVSBBUElzLiBUaGUgZGVmaW5lZCBtb2RlcyAoaW4gYGBpb21tdS5oYGApIGluY2x1ZGU6XG4mIzQzO1xuJiM0MzstIGBgTU9ERV9WRklPX1RZUEUxX0lPTU1VYGBcbiYjNDM7LSBgYE1PREVfVkZJT19UWVBFMVYyX0lPTU1VYGBcbiYjNDM7LSBgYE1PREVfSU9NTVVGRF9DT01QQVRfVFlQRTFgYFxuJiM0MzstIGBgTU9ERV9JT01NVUZEX0NPTVBBVF9UWVBFMVYyYGBcbiYjNDM7LSBgYE1PREVfSU9NTVVGRGBgXG4mIzQzO1xuJiM0MztWRklPIHNlbGZ0ZXN0cyBjYW4gcmVwbGljYXRlIHRoZWlyIHRlc3QgY2FzZXMgYWNyb3NzIGFsbCBwb3NzaWJsZSBJT01NVSBtb2Rlc1xuJiM0Mzt1c2luZyBGSVhUVVJFX1ZBUklBTlRfQUREX0FMTF9JT01NVV9NT0RFUygpIHRvIGVuc3VyZSBrZXJuZWwgSU9NTVUgQVBJcyByZW1haW5cbiYjNDM7Y29tcGF0aWJsZS5cbiYjNDM7XG4mIzQzO2Bgc3RydWN0IHZmaW9fcGNpX2RldmljZWBgXG4mIzQzO15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXG4mIzQzO1xuJiM0MztBIFBDSSBkZXZpY2UgaXMgcmVwcmVzZW50ZWQgYXMgYSBgYHN0cnVjdCB2ZmlvX3BjaV9kZXZpY2VgYC4gVGhlIGRldmljZVxuJiM0MztyZXByZXNlbnRhdGlvbiBpcyBpbml0aWFsaXplZCB1c2luZyBgYHZmaW9fcGNpX2RldmljZV9pbml0KClgYCwgd2hpY2ggdGFrZXMgYVxuJiM0Mzt0YXJnZXQgQkRGIHN0cmluZywgb3BlbnMgdGhlIGRldmljZSBpbiBWRklPLCBhbmQgYmluZHMgaXQgdG8gYW4gZXhpc3RpbmdcbiYjNDM7YGBzdHJ1Y3QgaW9tbXVgYCBpbnN0YW5jZTpcbiYjNDM7XG4mIzQzOy4uIGNvZGUtYmxvY2s6OiBjXG4mIzQzO1xuJiM0MzsgICAgc3RydWN0IHZmaW9fcGNpX2RldmljZSAqZGV2aWNlID0gdmZpb19wY2lfZGV2aWNlX2luaXQoZGV2aWNlX2JkZiwgaW9tbXUpO1xuJiM0MzsgICAgLi4uXG4mIzQzOyAgICB2ZmlvX3BjaV9kZXZpY2VfY2xlYW51cChkZXZpY2UpO1xuJiM0MztcbiYjNDM7YGBzdHJ1Y3QgaW92YV9hbGxvY2F0b3JgYFxuJiM0MzteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXG4mIzQzO1xuJiM0MztUbyBmYWNpbGl0YXRlIERNQSBtYXBwaW5ncyB3aXRob3V0IGhhcmRjb2RpbmcgSU9WQXMgKElPIHZpcnR1YWwgYWRkcmVzc2VzKSB0aGF0XG4mIzQzO21pZ2h0IGNvbmZsaWN0IHdpdGggcmVzZXJ2ZWQgcGxhdGZvcm0gYWRkcmVzcyByYW5nZXMsIHRoZSBsaWJyYXJ5IHByb3ZpZGVzIGFcbiYjNDM7YGBzdHJ1Y3QgaW92YV9hbGxvY2F0b3JgYC5cbiYjNDM7XG4mIzQzO1RoZSBJT1ZBIGFsbG9jYXRvciBxdWVyaWVzIHRoZSB1bmRlcmx5aW5nIElPTU1VICh2aWEgYGBzdHJ1Y3QgaW9tbXVgYCkgZm9yIGl0c1xuJiM0Mzt2YWxpZCB0YXJnZXQgSU9WQSByYW5nZXMuIFRlc3RzIGNhbiBzYWZlbHkgY2FydmUgb3V0IHVuaXF1ZSBjb250aWd1b3VzIGNodW5rc1xuJiM0MztvZiBJT1ZBIHNwYWNlIGZvciBkZXZpY2UgRE1BIGJ5IHJlcGVhdGVkbHkgY2FsbGluZzpcbiYjNDM7XG4mIzQzOy4uIGNvZGUtYmxvY2s6OiBjXG4mIzQzO1xuJiM0MzsgICAgc3RydWN0IGlvdmFfYWxsb2NhdG9yICphbGxvY2F0b3IgPSBpb3ZhX2FsbG9jYXRvcl9pbml0KGlvbW11KTtcbiYjNDM7ICAgIGlvdmFfdCBhZGRyID0gaW92YV9hbGxvY2F0b3JfYWxsb2MoYWxsb2NhdG9yLCBzaXplKTtcbiYjNDM7XG4mIzQzO0RyaXZlciBGcmFtZXdvcmtcbiYjNDM7LS0tLS0tLS0tLS0tLS0tLVxuJiM0MztcbiYjNDM7VGhlIHByaW1hcnkgZ29hbCBvZiBWRklPIHNlbGZ0ZXN0cyBpcyB0byB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSBrZXJuZWxcbiYjNDM7Y29kZSBoYW5kbGluZyBWRklPIGRldmljZXMsIGluY2x1ZGluZyBWRklPIGNvcmUsIElPTU1VRkQsIElPTU1VIGRyaXZlcnMsIHBhZ2VcbiYjNDM7cGlubmluZywgRE1BIG1hcHBpbmcvdW5tYXBwaW5nLCBpbnRlcnJ1cHQgcmVtYXBwaW5nLCBhbmQgSVJRIGRlbGl2ZXJ5LlxuJiM0MztcbiYjNDM7QmVjYXVzZSBkaWZmZXJlbnQgcGh5c2ljYWwgZGV2aWNlcyBoYXZlIHZhc3RseSBkaWZmZXJlbnQgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlc1xuJiM0Mztmb3IgdHJpZ2dlcmluZyB3b3JrLCB0aGUgc2VsZnRlc3RzIGxpYnJhcnkgaW1wbGVtZW50cyBhIHN0YW5kYXJkIGRyaXZlclxuJiM0MztmcmFtZXdvcmsuICBUaGlzIGZyYW1ld29yayBhYnN0cmFjdHMgZGl2ZXJzZSBoYXJkd2FyZSBlbmRwb2ludHMgKHN1Y2ggYXMgSW50ZWxcbiYjNDM7SUdCLCBJT0FULCBvciBEU0EpIGJlaGluZCBhIHVuaWZvcm0gaW50ZXJmYWNlLCBhbGxvd2luZyB0ZXN0cyB0byBwcm92b2tlIGFcbiYjNDM7YnJvYWQgcmFuZ2Ugb2YgZGV2aWNlcyB0byBnZW5lcmF0ZSBETUEgb3BlcmF0aW9ucyBhbmQgaW50ZXJydXB0cyBpbiBhXG4mIzQzO3N0YW5kYXJkaXplZCBtYW5uZXIuXG4mIzQzO1xuJiM0MztCeSBleGVyY2lzaW5nIERNQSBhbmQgaW50ZXJydXB0cyB3aXRoIHJlYWwgZW5kcG9pbnRzLCB0ZXN0cyBjYW4gdGhvcm91Z2hseVxuJiM0MztzdHJlc3MgYW5kIHZhbGlkYXRlIHRoZSB1bmRlcmx5aW5nIGtlcm5lbCBwYXRocywgc3VjaCBhcyBJT01NVSBwYWdlIHRhYmxlXG4mIzQzO21hbmFnZW1lbnQsIGRpcnR5IHBhZ2UgdHJhY2tpbmcsIERldmljZSBUTEIgYW5kIElPVExCIGludmFsaWRhdGlvbnMsIGFuZFxuJiM0MztpbnRlcnJ1cHQgZGVsaXZlcnkgdW5kZXIgYXV0aGVudGljIGhhcmR3YXJlIGNvbmRpdGlvbnMuXG4mIzQzO1xuJiM0MztBbGwgZW5kcG9pbnQgZHJpdmVyIGltcGxlbWVudGF0aW9ucyBwb3B1bGF0ZSBhIGNvbW1vbiBzZXQgb2Ygb3BlcmF0aW9ucyBkZWZpbmVkXG4mIzQzO2luIGBgc3RydWN0IHZmaW9fcGNpX2RyaXZlcl9vcHNgYDpcbiYjNDM7XG4mIzQzOy0gYGBwcm9iZSgpYGA6IFZhbGlkYXRlIHdoZXRoZXIgdGhlIGRyaXZlciBzdXBwb3J0cyB0aGUgY3VycmVudCBQQ0kgZGV2aWNlXG4mIzQzOyAgKGUuZy4gbWF0Y2hpbmcgdmVuZG9yL2RldmljZSBJRHMpLlxuJiM0MzstIGBgaW5pdCgpYGA6IFNldCB1cCBzcGVjaWZpYyBjb250cm9sIHJlZ2lzdGVycyBvciByaW5nLWJ1ZmZlciBkYXRhIHN0cnVjdHVyZXMuXG4mIzQzOy0gYGByZW1vdmUoKWBgOiBDbGVhbiB1cCBzdHJ1Y3R1cmVzIGJlZm9yZSBkZXN0cnVjdGlvbi5cbiYjNDM7LSBgYG1lbWNweV9zdGFydCgpYGA6IEluaXRpYXRlIERNQSBjb3BpZXMgdmlhIHRoZSBkZXZpY2UuXG4mIzQzOy0gYGBtZW1jcHlfd2FpdCgpYGA6IFBvbGwgYW5kIHdhaXQgdW50aWwgcHJldmlvdXNseSBpbml0aWF0ZWQgY29waWVzIGNvbXBsZXRlXG4mIzQzOyAgc2FmZWx5LlxuJiM0MzstIGBgc2VuZF9tc2koKWBgOiBQcm92b2tlIHRoZSBkZXZpY2UgdG8gc2lnbmFsIGFuIE1TSSBpbnRlcnJ1cHQuXG4mIzQzO1xuJiM0MztUZXN0cyBhcmUgcmVxdWlyZWQgdG8gc2V0IHVwIGEgZGVkaWNhdGVkIERNQSByZWdpb24gZm9yIHRoZSBkcml2ZXIgdG8gdXNlXG4mIzQzO3dpdGhpbiBgYHN0cnVjdCB2ZmlvX3BjaV9kcml2ZXJgYCB0byBzZXJ2ZSBhcyB0aGUgZHJpdmVyJiMzOTtzIG1haW4gbWVtb3J5XG4mIzQzO2FsbG9jYXRpb24gcmVnaW9uIChlLmcuIHVzZWQgZm9yIGluLW1lbW9yeSBkZXNjcmlwdG9yIHJpbmdzIGFuZCBoYXJkd2FyZVxuJiM0MztidWZmZXJzKS4gVGVzdHMgbXVzdCBwcm92aXNpb24gYW5kIG1hcCB0aGlzIERNQSByZWdpb24gYmVmb3JlIGNvbXBsZXRpbmcgZHJpdmVyXG4mIzQzO2luaXRpYWxpemF0aW9uLlxuJiM0MztcbiYjNDM7Rm9yIGEgY29tcGxldGUgZXhhbXBsZSBvZiBpbnRlcmFjdGluZyB3aXRoIHRoZSBkcml2ZXIgZnJhbWV3b3JrIGZyb20gYSB0ZXN0XG4mIzQzO3BlcnNwZWN0aXZlLCByZWZlciB0byBgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vdmZpb19wY2lfZHJpdmVyX3Rlc3QuY2BgLlxuJiM0MztcbiYjNDM7V2hlbiBjb250cmlidXRpbmcgYSBuZXcgZHJpdmVyIGltcGxlbWVudGF0aW9uIHRvIHRoZSBzZWxmdGVzdHMgbGlicmFyeSwgdGhlXG4mIzQzO3ByaW1hcnkgYWNjZXB0YW5jZSBjcml0ZXJpYSBpcyB0aGF0IGBgdmZpb19wY2lfZHJpdmVyX3Rlc3RgYCBwYXNzZXMgdXNpbmcgdGhlXG4mIzQzO25ldyBkcml2ZXIgYW5kIHRhcmdldCBkZXZpY2UuXG4mIzQzO1xuJiM0MztJbnRlZ3JhdGlvbiB3aXRoIEtWTSBTZWxmdGVzdHNcbiYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO1xuJiM0MztsaWJ2ZmlvIGlzIG5vdCBzdHJpY3RseSBsaW1pdGVkIHRvIFZGSU8gc2VsZnRlc3RzLCBpdCBpcyBhbHNvIGxldmVyYWdlZCB3aXRoaW5cbiYjNDM7S1ZNIHNlbGZ0ZXN0cyAoYGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYGApLiBLVk0gc2VsZnRlc3RzIGJ1aWxkIHRoZWlyIG93blxuJiM0Mztjb3B5IG9mIGxpYnZmaW8gYW5kIGxpbmsgYWdhaW5zdCBpdCwgZW5hYmxpbmcgbGlidmZpbyB0byBiZSB1c2VkIGluIEtWTVxuJiM0MztzZWxmdGVzdHMuXG4mIzQzO1xuJiM0MztUaGlzIGludGVncmF0aW9uIGVuYWJsZXMgdGVzdGluZyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBLVk0gYW5kIFZGSU8gYW5kXG4mIzQzO0lPTU1VRkQuIEZvciBleGFtcGxlLCB0ZXN0aW5nIHRoZSBlbmQtdG8tZW5kIGRlbGl2ZXJ5IG9mIGRldmljZSBpbnRlcnJ1cHRzIGludG9cbiYjNDM7cnVubmluZyB2Q1BVcy5cbiYjNDM7XG4mIzQzO0NvbnRyaWJ1dGlvbiBHdWlkZWxpbmVzXG4mIzQzOz09PT09PT09PT09PT09PT09PT09PT09XG4mIzQzO1xuJiM0MzstIFByZWZlciB0aGUgc2hvcnRsb2cgcHJlZml4IGBgdmZpbzogc2VsZnRlc3RzOiAuLi5gYCBmb3IgY29tbWl0cyB0aGF0IG1vZGlmeVxuJiM0MzsgIGZpbGVzIGluIGBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9gYC5cbiYjNDM7LSBGb2xsb3cgdGhlIENvZGluZyBTdHlsZSwgQ29tbWVudHMsIENoYW5nZWxvZ3MsIGFuZCBGdW5jdGlvbiBSZWZlcmVuY2VzXG4mIzQzOyAgZ3VpZGVsaW5lcyBmcm9tIHRoZVxuJiM0MzsgIDpkb2M6YEtWTSB4ODYgbWFpbnRhaW5lcnMgaGFuZGJvb2sgXHUwMDNjL3Byb2Nlc3MvbWFpbnRhaW5lci1rdm0teDg2XHUwMDNlYC5cbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXG5pbmRleCA4MDZiZDJkODBkMTUzLi5iYTE3NGRkOGJhMWI4IDEwMDY0NFxuLS0tIGEvTUFJTlRBSU5FUlNcbiYjNDM7JiM0MzsmIzQzOyBiL01BSU5UQUlORVJTXG5AQCAtMjgzOTYsNiAmIzQzOzI4Mzk2LDcgQEAgVkZJTyBTRUxGVEVTVFNcbiBNOlx0RGF2aWQgTWF0bGFjayBcdTAwM2NkbWF0bGFja0Bnb29nbGUuY29tXHUwMDNlXG4gTDpcdGt2bUB2Z2VyLmtlcm5lbC5vcmdcbiBTOlx0TWFpbnRhaW5lZFxuJiM0MztGOlx0RG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tc2VsZnRlc3RzLnJzdFxuIEY6XHR0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL1xuIFxuIFZGSU8gVklSVElPIFBDSSBEUklWRVJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDowOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgZG9jdW1lbnRhdGlvbiBmb3IgVkZJTyBzZWxmdGVzdHMgKERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3QsIERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9pbmRleC5yc3QpIGFuZCB1cGRhdGVzIHRoZSBNQUlOVEFJTkVSUyBmaWxlLiBObyBrZXJuZWwgZXhlY3V0YWJsZSBjb2RlIG9yIGhlYWRlcnMgYXJlIG1vZGlmaWVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGY2MGEyYTc0YzU4ODliYTIwNzQwZTM5ZDVjYjIzOTRiODE3NjlmMjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IFNlcCA1IDA0OjA5OjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9pbmRleC5yc3QKaW5kZXggZWFmNzE2MWZmOTU3OC4uNjMwZjMzMjg3YmMwYyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvaW5kZXgucnN0CkBAIC00Nyw2ICYjNDM7NDcsNyBAQCBvZiBpbnRlcmVzdCB0byBtb3N0IGRldmVsb3BlcnMgd29ya2luZyBvbiBkZXZpY2UgZHJpdmVycy4KICAgIHZmaW8tbWVkaWF0ZWQtZGV2aWNlCiAgICB2ZmlvCiAgICB2ZmlvLXBjaS1kZXZpY2Utc3BlY2lmaWMtZHJpdmVyLWFjY2VwdGFuY2UKJiM0MzsgICB2ZmlvLXNlbGZ0ZXN0cwogCiBCdXMtbGV2ZWwgZG9jdW1lbnRhdGlvbgogPT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3QgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdmZpby1zZWxmdGVzdHMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjlkMzlhMjI1MTlkNmEKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdmZpby1zZWxmdGVzdHMucnN0CkBAIC0wLDAgJiM0MzsxLDI1MiBAQAomIzQzOy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7CiYjNDM7PT09PT09PT09PT09PT0KJiM0MztWRklPIFNlbGZ0ZXN0cwomIzQzOz09PT09PT09PT09PT09CiYjNDM7CiYjNDM7VkZJTyBzZWxmdGVzdHMgYXJlIGJ1aWx0IG9uIHRvcCBvZiB0aGUga2VybmVsJiMzOTtzIHNlbGZ0ZXN0cyBmcmFtZXdvcmsgYW5kIGFyZQomIzQzO2xvY2F0ZWQgaW4gYGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvYGAuCiYjNDM7CiYjNDM7VkZJTyBzZWxmdGVzdHMgZW5hYmxlIGtlcm5lbCBkZXZlbG9wZXJzIHRvIHdyaXRlIGFuZCBydW4gdGVzdHMgdGhhdCB0YWtlIHRoZQomIzQzO2Zvcm0gb2YgdXNlcnNwYWNlIHByb2dyYW1zIHRoYXQgaW50ZXJhY3Qgd2l0aCBWRklPIGFuZCBJT01NVUZEIHVBUElzLiBWRklPCiYjNDM7c2VsZnRlc3RzIGNhbiBiZSB1c2VkIHRvIHdyaXRlIGZ1bmN0aW9uYWwgdGVzdHMgZm9yIG5ldyBmZWF0dXJlcywgcmVncmVzc2lvbgomIzQzO3Rlc3RzIGZvciBidWdzLCBhbmQgcGVyZm9ybWFuY2UgdGVzdHMgZm9yIG9wdGltaXphdGlvbnMuCiYjNDM7CiYjNDM7VGhlc2UgdGVzdHMgYXJlIGRlc2lnbmVkIHRvIGludGVyYWN0IHdpdGggcmVhbCBQQ0kgZGV2aWNlcywgaS5lLiB0aGV5IGRvIG5vdAomIzQzO3JlbHkgb24gbW9ja2luZyBvdXQgb3IgZmFraW5nIGFueSBiZWhhdmlvciBpbiB0aGUga2VybmVsLiBUaGlzIGFsbG93cyB0aGUgdGVzdHMKJiM0Mzt0byBleGVyY2lzZSBub3Qgb25seSBWRklPIGJ1dCBhbHNvIElPTU1VRkQsIHRoZSBJT01NVSBkcml2ZXIsIGludGVycnVwdAomIzQzO3JlbWFwcGluZywgSVJRIGhhbmRsaW5nLCBldGMuCiYjNDM7CiYjNDM7UnVubmluZyBUZXN0cwomIzQzOz09PT09PT09PT09PT0KJiM0MzsKJiM0MztSdW5uaW5nIFZGSU8gc2VsZnRlc3RzIHJlcXVpcmVzIGEgZGV2aWNlIGJvdW5kIHRvIHRoZSBgYHZmaW8tcGNpYGAgZHJpdmVyLgomIzQzO1RoZXJlIGFyZSBzY3JpcHRzIGluIGBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9zY3JpcHRzL2BgIHRvIGhlbHAgd2l0aAomIzQzO3NldHRpbmcgb25lIHVwLgomIzQzOwomIzQzO1BpY2tpbmcgYSBEZXZpY2UKJiM0MzstLS0tLS0tLS0tLS0tLS0tCiYjNDM7CiYjNDM7U29tZSBWRklPIHNlbGZ0ZXN0cyByZXF1aXJlIGEgZGV2aWNlIHdpdGggYSBzdXBwb3J0ZWQgZHJpdmVyIGltcGxlbWVudGF0aW9uIGluCiYjNDM7dGhlIHNlbGZ0ZXN0cyBsaWJyYXJ5IChzZWUgYERyaXZlciBGcmFtZXdvcmtgXyksIHdoaWxlIG90aGVyIHRlc3RzIChzdWNoIGFzCiYjNDM7YmFzaWMgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2Ugb3IgcmVzZXQgdGVzdHMpIGNhbiB1c2UgYW55IGFyYml0cmFyeSBQQ0kgZGV2aWNlLgomIzQzOwomIzQzO1RoaXMgc2VjdGlvbiB3aWxsIGJlIGV4cGFuZGVkIGluIHRoZSBmdXR1cmUgdG8gZ3VpZGUgZGV2ZWxvcGVycyBvbiBob3cgdG8gZmluZAomIzQzO2EgZGV2aWNlIHdpdGggYSBzdXBwb3J0ZWQgZHJpdmVyLiBJbiB0aGUgbWVhbnRpbWUsIHRoZSBzZWxmdGVzdHMgbGlicmFyeQomIzQzO2luY2x1ZGVzIGRyaXZlciBzdXBwb3J0IGZvciB0aGUgZm9sbG93aW5nIGRldmljZXM6CiYjNDM7CiYjNDM7LSBJbnRlbCBJR0IgR2lnYWJpdCBFdGhlcm5ldCBjb250cm9sbGVycwomIzQzOy0gSW50ZWwgSU9BVCAoSS9PIEFjY2VsZXJhdGlvbiBUZWNobm9sb2d5KSBETUEgZW5naW5lcwomIzQzOy0gSW50ZWwgRFNBIChEYXRhIFN0cmVhbWluZyBBY2NlbGVyYXRvcikKJiM0MzstIE5WSURJQSBGYWxjb24gZW5naW5lcyAoZm91bmQgaW4gbWFueSBOVklESUEgR1BVcywgZS5nLiwgR1RYIDEwODAgb3IgUlRYIDIwODApCiYjNDM7CiYjNDM7Tm90ZSB0aGF0IHVzaW5nIEludGVsIERTQSBkZXZpY2VzIHJlcXVpcmVzIHNldHRpbmcgdGhlIG1vZHVsZSBwYXJhbWV0ZXIKJiM0MztgYHZmaW9fcGNpLmRpc2FibGVfZGVueWxpc3Q9WWBgIHRvIGFsbG93IGBgdmZpby1wY2lgYCB0byBiaW5kIHRvIERTQSBkZXZpY2VzLgomIzQzOwomIzQzO1NldHRpbmcgdXAgRGV2aWNlcwomIzQzOy0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzOy4uIGNvZGUtYmxvY2s6OiBzaAomIzQzOwomIzQzOyAgICB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL3NjcmlwdHMvc2V0dXAuc2ggMDAwMDowMTowMC4wCiYjNDM7CiYjNDM7VGhlIHNjcmlwdCBoYW5kbGVzIHVuYmluZGluZyB0aGUgZGV2aWNlIGZyb20gaXRzIGN1cnJlbnQgZHJpdmVyIGFuZCBiaW5kaW5nIGl0CiYjNDM7dG8gYGB2ZmlvLXBjaWBgLiBNZXRhZGF0YSBhYm91dCB0aGlzIGRldmljZSBpcyBzdG9yZWQgaW4KJiM0MztgYC90bXAvdmZpby1zZWxmdGVzdHMtZGV2aWNlc2BgIHNvIHRoYXQgdGhlIGRldmljZSBjYW4gYmUgY2xlYW5lZCB1cCBsYXRlcgomIzQzOyhib3VuZCBiYWNrIHRvIGl0cyBvcmlnaW5hbCBkcml2ZXIpLgomIzQzOwomIzQzO0V4ZWN1dGlvbgomIzQzOy0tLS0tLS0tLQomIzQzOwomIzQzO1ZGSU8gc2VsZnRlc3RzIGV4cGVjdCB0aGUgUENJIGRldmljZSBCREYgc3RyaW5nIGFzIHRoZWlyIGZpbmFsIGNvbW1hbmQtbGluZQomIzQzO2FyZ3VtZW50LiBlLmcuCiYjNDM7CiYjNDM7Li4gY29kZS1ibG9jazo6IHNoCiYjNDM7CiYjNDM7ICAgIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vdmZpb19wY2lfZGV2aWNlX3Rlc3QgMDAwMDowMTowMC4wCiYjNDM7CiYjNDM7QWx0ZXJuYXRpdmVseSwgdGhlIFBDSSBkZXZpY2UgQkRGIGNhbiBiZSBwYXNzZWQgdmlhIHRoZSBgYFZGSU9fU0VMRlRFU1RTX0JERmBgCiYjNDM7ZW52aXJvbm1lbnQgdmFyaWFibGUsIHdoaWNoIGNhbiBiZSB1c2VmdWwgd2hlbiBydW5uaW5nIGFsbCB0ZXN0czoKJiM0MzsKJiM0MzsuLiBjb2RlLWJsb2NrOjogc2gKJiM0MzsKJiM0MzsJZXhwb3J0IFZGSU9fU0VMRlRFU1RTX0JERj0wMDAwOjAxOjAwLjAKJiM0MzsJbWFrZSAtQyB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cyBUQVJHRVRTPXZmaW8gaW5zdGFsbAomIzQzOwl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rc2VsZnRlc3RfaW5zdGFsbC9ydW5fa3NlbGZ0ZXN0LnNoIC1jIHZmaW8KJiM0MzsKJiM0MztDbGVhbnVwCiYjNDM7LS0tLS0tLQomIzQzOwomIzQzOy4uIGNvZGUtYmxvY2s6OiBzaAomIzQzOwomIzQzOyAgICB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL3NjcmlwdHMvY2xlYW51cC5zaAomIzQzOwomIzQzO1RoaXMgc2NyaXB0IGhhbmRsZXMgdW5iaW5kaW5nIGFsbCBwcmV2aW91c2x5IHNldHVwIGRldmljZXMgZnJvbSBgYHZmaW8tcGNpYGAKJiM0MzthbmQgYmluZGluZyB0aGVtIGJhY2sgdG8gdGhlaXIgb3JpZ2luYWwgZHJpdmVyLiBTcGVjaWZpYyBkZXZpY2VzIGNhbiBiZSBjbGVhbmVkCiYjNDM7dXAgYnkgcGFzc2luZyB0aGVpciBCREYgc3RyaW5nIHRvIHRoZSBjbGVhbnVwIHNjcmlwdC4KJiM0MzsKJiM0MztXcml0aW5nIFRlc3RzCiYjNDM7PT09PT09PT09PT09PQomIzQzOwomIzQzO1ZGSU8gc2VsZnRlc3RzIGxldmVyYWdlIHRoZSBgYGtzZWxmdGVzdF9oYXJuZXNzLmhgYCBtYWNyb3MgdG8gc3RydWN0dXJlIHNldHVwCiYjNDM7YW5kIHRlYXJkb3duIHNjZW5hcmlvcy4gQSBiYXNpYyB0ZXN0IGludm9sdmVzOgomIzQzOwomIzQzOzEuIERlY2xhcmluZyBhIHRlc3QgRklYVFVSRSBjb250YWluaW5nIHRoZSBkZXZpY2UgYW5kIElPTU1VIHN0YXRlLgomIzQzOzIuIEdlbmVyYXRpbmcgdGVzdCB2YXJpYW50cyB0aGF0IHNwYW4gdGhlIGRpZmZlcmVudCBJT01NVSBtb2RlcyB1dGlsaXppbmcKJiM0MzsgICBgYEZJWFRVUkVfVkFSSUFOVF9BRERfQUxMX0lPTU1VX01PREVTKClgYC4KJiM0MzszLiBJbml0aWFsaXppbmcgdGhlIGRldmljZSBhbmQgYmluZGluZyB0aGUgZGVmYXVsdCBkcml2ZXIgb3BzLgomIzQzOwomIzQzO0ZvciBhIGNvbXBsZXRlIGV4YW1wbGUgb2Ygd3JpdGluZyBhIFZGSU8gc2VsZnRlc3QsIHJlZmVyIHRvCiYjNDM7YGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL3ZmaW9fcGNpX2RldmljZV90ZXN0LmNgYC4KJiM0MzsKJiM0MztWRklPIFNlbGZ0ZXN0cyBMaWJyYXJ5IChsaWJ2ZmlvKQomIzQzOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiYjNDM7CiYjNDM7VGhlIHNlbGZ0ZXN0cyBkaXJlY3RvcnkgY29udGFpbnMgYSBoZWxwZXIgbGlicmFyeSBjb21waWxlZCBmcm9tIHRoZSBgYGxpYi9gYAomIzQzO3N1YmRpcmVjdG9yeS4gSXQgcHJvdmlkZXMgc3RydWN0dXJlcyBhbmQgaGVscGVyIGZ1bmN0aW9ucyB0byBoYW5kbGUgc3RhbmRhcmQKJiM0MztvcGVyYXRpb25zIGxpa2Ugb3BlbmluZyBWRklPIGRldmljZXMsIGNyZWF0aW5nIFZGSU8gY29udGFpbmVycywgYW5kIGludGVyYWN0aW5nCiYjNDM7d2l0aCBWRklPIGFuZCBJT01NVUZELgomIzQzOwomIzQzO0FsbCBWRklPIHNlbGZ0ZXN0cyBoYXZlIGxpYnZmaW8gbGlua2VkIGluIGJ5IGRlZmF1bHQuIFRlc3RzIGNhbiBhY2Nlc3MgdGhlCiYjNDM7bGlicmFyeSBieSBpbmNsdWRpbmcgYGAmbHQ7bGlidmZpby5oJmd0O2BgLgomIzQzOwomIzQzO0NvcmUgT2JqZWN0cwomIzQzOy0tLS0tLS0tLS0tLQomIzQzOwomIzQzO1RoZSBWRklPIHNlbGZ0ZXN0cyBmcmFtZXdvcmsgcmV2b2x2ZXMgYXJvdW5kIHR3byBkaXN0aW5jdCBjb3JlIG9iamVjdHM6CiYjNDM7YGBzdHJ1Y3QgaW9tbXVgYCBhbmQgYGBzdHJ1Y3QgdmZpb19wY2lfZGV2aWNlYGAuIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kCiYjNDM7dGhlIGRpc3RpbmN0aW9uIGFuZCByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVtOgomIzQzOwomIzQzOy0gYGBzdHJ1Y3QgaW9tbXVgYCByZXByZXNlbnRzIGFuIElPTU1VIGRvbWFpbiBhbmQgdGhlIEFQSSB1c2VkIHRvIHByb2dyYW0gaXQKJiM0MzsgIChlLmcuIGxlZ2FjeSBWRklPIFR5cGUxIHZzIElPTU1VRkQpLiBJdCBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIEkvTwomIzQzOyAgYWRkcmVzcyBzcGFjZSwgaGFuZGxpbmcgRE1BIG1hcHBpbmdzLCBhbmQgdHJhbnNsYXRpbmcgYmV0d2VlbiBob3N0IHZpcnR1YWwKJiM0MzsgIGFkZHJlc3NlcyAoSFZBKSBhbmQgSU8gdmlydHVhbCBhZGRyZXNzZXMgKElPVkEpLgomIzQzOwomIzQzOy0gYGBzdHJ1Y3QgdmZpb19wY2lfZGV2aWNlYGAgcmVwcmVzZW50cyBhIHNpbmdsZSBQQ0kgZGV2aWNlLiBJdCBlbmNhcHN1bGF0ZXMKJiM0MzsgIHRoZSBWRklPIGRldmljZSBmaWxlIGRlc2NyaXB0b3IsIGhhbmRsZXMgYWNjZXNzIHRvIHRoZSBQQ0kgY29uZmlndXJhdGlvbgomIzQzOyAgc3BhY2UsIG1hbmFnZXMgbWVtb3J5LW1hcHBlZCBCQVJzLCBhbmQgZHJpdmVzIGRldmljZSBpbnRlcnJ1cHRzLgomIzQzOwomIzQzO0EgdHlwaWNhbCB0ZXN0IGluaXRpYWxpemVzIGFuIElPTU1VIGluc3RhbmNlIGZpcnN0LCB0aGVuIHBhc3NlcyBpdCB3aGVuCiYjNDM7aW5pdGlhbGl6aW5nIG9uZSBvciBtb3JlIFBDSSBkZXZpY2VzLCBsaW5raW5nIHRoZSBkZXZpY2VzIHRvIHRoZSBzaGFyZWQgSU9NTVUKJiM0Mztkb21haW4uCiYjNDM7CiYjNDM7YGBzdHJ1Y3QgaW9tbXVgYAomIzQzO15eXl5eXl5eXl5eXl5eXl4KJiM0MzsKJiM0MztUaGUgYGBzdHJ1Y3QgaW9tbXVgYCBhYnN0cmFjdHMgYXdheSB0aGUgY29tcGxleGl0eSBvZiBtYW5hZ2luZyBWRklPIGNvbnRhaW5lcnMsCiYjNDM7SU9NTVUgZ3JvdXBzLCBhbmQgSU9NTVVGRCBjb250ZXh0cy4gQSB0ZXN0IGFsbG9jYXRlcyBpdHMgSU9NTVUgaGFuZGxlIHVzaW5nCiYjNDM7YGBpb21tdV9pbml0KClgYCBwYXNzaW5nIG9uZSBvZiB0aGUgc3VwcG9ydGVkIElPTU1VIG1vZGVzOgomIzQzOwomIzQzOy4uIGNvZGUtYmxvY2s6OiBjCiYjNDM7CiYjNDM7ICAgIHN0cnVjdCBpb21tdSAqaW9tbXUgPSBpb21tdV9pbml0KE1PREVfSU9NTVVGRCk7CiYjNDM7ICAgIC4uLgomIzQzOyAgICBpb21tdV9jbGVhbnVwKGlvbW11KTsKJiM0MzsKJiM0MztUaGUgc2VsZnRlc3QgZnJhbWV3b3JrIGlzIGRlc2lnbmVkIHRvIHdvcmsgdW5pZm9ybWx5IGFjcm9zcyBhbGwgc3RhbmRhcmQga2VybmVsCiYjNDM7SU9NTVUgQVBJcy4gVGhlIGRlZmluZWQgbW9kZXMgKGluIGBgaW9tbXUuaGBgKSBpbmNsdWRlOgomIzQzOwomIzQzOy0gYGBNT0RFX1ZGSU9fVFlQRTFfSU9NTVVgYAomIzQzOy0gYGBNT0RFX1ZGSU9fVFlQRTFWMl9JT01NVWBgCiYjNDM7LSBgYE1PREVfSU9NTVVGRF9DT01QQVRfVFlQRTFgYAomIzQzOy0gYGBNT0RFX0lPTU1VRkRfQ09NUEFUX1RZUEUxVjJgYAomIzQzOy0gYGBNT0RFX0lPTU1VRkRgYAomIzQzOwomIzQzO1ZGSU8gc2VsZnRlc3RzIGNhbiByZXBsaWNhdGUgdGhlaXIgdGVzdCBjYXNlcyBhY3Jvc3MgYWxsIHBvc3NpYmxlIElPTU1VIG1vZGVzCiYjNDM7dXNpbmcgRklYVFVSRV9WQVJJQU5UX0FERF9BTExfSU9NTVVfTU9ERVMoKSB0byBlbnN1cmUga2VybmVsIElPTU1VIEFQSXMgcmVtYWluCiYjNDM7Y29tcGF0aWJsZS4KJiM0MzsKJiM0MztgYHN0cnVjdCB2ZmlvX3BjaV9kZXZpY2VgYAomIzQzO15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiYjNDM7CiYjNDM7QSBQQ0kgZGV2aWNlIGlzIHJlcHJlc2VudGVkIGFzIGEgYGBzdHJ1Y3QgdmZpb19wY2lfZGV2aWNlYGAuIFRoZSBkZXZpY2UKJiM0MztyZXByZXNlbnRhdGlvbiBpcyBpbml0aWFsaXplZCB1c2luZyBgYHZmaW9fcGNpX2RldmljZV9pbml0KClgYCwgd2hpY2ggdGFrZXMgYQomIzQzO3RhcmdldCBCREYgc3RyaW5nLCBvcGVucyB0aGUgZGV2aWNlIGluIFZGSU8sIGFuZCBiaW5kcyBpdCB0byBhbiBleGlzdGluZwomIzQzO2Bgc3RydWN0IGlvbW11YGAgaW5zdGFuY2U6CiYjNDM7CiYjNDM7Li4gY29kZS1ibG9jazo6IGMKJiM0MzsKJiM0MzsgICAgc3RydWN0IHZmaW9fcGNpX2RldmljZSAqZGV2aWNlID0gdmZpb19wY2lfZGV2aWNlX2luaXQoZGV2aWNlX2JkZiwgaW9tbXUpOwomIzQzOyAgICAuLi4KJiM0MzsgICAgdmZpb19wY2lfZGV2aWNlX2NsZWFudXAoZGV2aWNlKTsKJiM0MzsKJiM0MztgYHN0cnVjdCBpb3ZhX2FsbG9jYXRvcmBgCiYjNDM7Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgomIzQzOwomIzQzO1RvIGZhY2lsaXRhdGUgRE1BIG1hcHBpbmdzIHdpdGhvdXQgaGFyZGNvZGluZyBJT1ZBcyAoSU8gdmlydHVhbCBhZGRyZXNzZXMpIHRoYXQKJiM0MzttaWdodCBjb25mbGljdCB3aXRoIHJlc2VydmVkIHBsYXRmb3JtIGFkZHJlc3MgcmFuZ2VzLCB0aGUgbGlicmFyeSBwcm92aWRlcyBhCiYjNDM7YGBzdHJ1Y3QgaW92YV9hbGxvY2F0b3JgYC4KJiM0MzsKJiM0MztUaGUgSU9WQSBhbGxvY2F0b3IgcXVlcmllcyB0aGUgdW5kZXJseWluZyBJT01NVSAodmlhIGBgc3RydWN0IGlvbW11YGApIGZvciBpdHMKJiM0Mzt2YWxpZCB0YXJnZXQgSU9WQSByYW5nZXMuIFRlc3RzIGNhbiBzYWZlbHkgY2FydmUgb3V0IHVuaXF1ZSBjb250aWd1b3VzIGNodW5rcwomIzQzO29mIElPVkEgc3BhY2UgZm9yIGRldmljZSBETUEgYnkgcmVwZWF0ZWRseSBjYWxsaW5nOgomIzQzOwomIzQzOy4uIGNvZGUtYmxvY2s6OiBjCiYjNDM7CiYjNDM7ICAgIHN0cnVjdCBpb3ZhX2FsbG9jYXRvciAqYWxsb2NhdG9yID0gaW92YV9hbGxvY2F0b3JfaW5pdChpb21tdSk7CiYjNDM7ICAgIGlvdmFfdCBhZGRyID0gaW92YV9hbGxvY2F0b3JfYWxsb2MoYWxsb2NhdG9yLCBzaXplKTsKJiM0MzsKJiM0MztEcml2ZXIgRnJhbWV3b3JrCiYjNDM7LS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzO1RoZSBwcmltYXJ5IGdvYWwgb2YgVkZJTyBzZWxmdGVzdHMgaXMgdG8gdmVyaWZ5IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUga2VybmVsCiYjNDM7Y29kZSBoYW5kbGluZyBWRklPIGRldmljZXMsIGluY2x1ZGluZyBWRklPIGNvcmUsIElPTU1VRkQsIElPTU1VIGRyaXZlcnMsIHBhZ2UKJiM0MztwaW5uaW5nLCBETUEgbWFwcGluZy91bm1hcHBpbmcsIGludGVycnVwdCByZW1hcHBpbmcsIGFuZCBJUlEgZGVsaXZlcnkuCiYjNDM7CiYjNDM7QmVjYXVzZSBkaWZmZXJlbnQgcGh5c2ljYWwgZGV2aWNlcyBoYXZlIHZhc3RseSBkaWZmZXJlbnQgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlcwomIzQzO2ZvciB0cmlnZ2VyaW5nIHdvcmssIHRoZSBzZWxmdGVzdHMgbGlicmFyeSBpbXBsZW1lbnRzIGEgc3RhbmRhcmQgZHJpdmVyCiYjNDM7ZnJhbWV3b3JrLiAgVGhpcyBmcmFtZXdvcmsgYWJzdHJhY3RzIGRpdmVyc2UgaGFyZHdhcmUgZW5kcG9pbnRzIChzdWNoIGFzIEludGVsCiYjNDM7SUdCLCBJT0FULCBvciBEU0EpIGJlaGluZCBhIHVuaWZvcm0gaW50ZXJmYWNlLCBhbGxvd2luZyB0ZXN0cyB0byBwcm92b2tlIGEKJiM0Mzticm9hZCByYW5nZSBvZiBkZXZpY2VzIHRvIGdlbmVyYXRlIERNQSBvcGVyYXRpb25zIGFuZCBpbnRlcnJ1cHRzIGluIGEKJiM0MztzdGFuZGFyZGl6ZWQgbWFubmVyLgomIzQzOwomIzQzO0J5IGV4ZXJjaXNpbmcgRE1BIGFuZCBpbnRlcnJ1cHRzIHdpdGggcmVhbCBlbmRwb2ludHMsIHRlc3RzIGNhbiB0aG9yb3VnaGx5CiYjNDM7c3RyZXNzIGFuZCB2YWxpZGF0ZSB0aGUgdW5kZXJseWluZyBrZXJuZWwgcGF0aHMsIHN1Y2ggYXMgSU9NTVUgcGFnZSB0YWJsZQomIzQzO21hbmFnZW1lbnQsIGRpcnR5IHBhZ2UgdHJhY2tpbmcsIERldmljZSBUTEIgYW5kIElPVExCIGludmFsaWRhdGlvbnMsIGFuZAomIzQzO2ludGVycnVwdCBkZWxpdmVyeSB1bmRlciBhdXRoZW50aWMgaGFyZHdhcmUgY29uZGl0aW9ucy4KJiM0MzsKJiM0MztBbGwgZW5kcG9pbnQgZHJpdmVyIGltcGxlbWVudGF0aW9ucyBwb3B1bGF0ZSBhIGNvbW1vbiBzZXQgb2Ygb3BlcmF0aW9ucyBkZWZpbmVkCiYjNDM7aW4gYGBzdHJ1Y3QgdmZpb19wY2lfZHJpdmVyX29wc2BgOgomIzQzOwomIzQzOy0gYGBwcm9iZSgpYGA6IFZhbGlkYXRlIHdoZXRoZXIgdGhlIGRyaXZlciBzdXBwb3J0cyB0aGUgY3VycmVudCBQQ0kgZGV2aWNlCiYjNDM7ICAoZS5nLiBtYXRjaGluZyB2ZW5kb3IvZGV2aWNlIElEcykuCiYjNDM7LSBgYGluaXQoKWBgOiBTZXQgdXAgc3BlY2lmaWMgY29udHJvbCByZWdpc3RlcnMgb3IgcmluZy1idWZmZXIgZGF0YSBzdHJ1Y3R1cmVzLgomIzQzOy0gYGByZW1vdmUoKWBgOiBDbGVhbiB1cCBzdHJ1Y3R1cmVzIGJlZm9yZSBkZXN0cnVjdGlvbi4KJiM0MzstIGBgbWVtY3B5X3N0YXJ0KClgYDogSW5pdGlhdGUgRE1BIGNvcGllcyB2aWEgdGhlIGRldmljZS4KJiM0MzstIGBgbWVtY3B5X3dhaXQoKWBgOiBQb2xsIGFuZCB3YWl0IHVudGlsIHByZXZpb3VzbHkgaW5pdGlhdGVkIGNvcGllcyBjb21wbGV0ZQomIzQzOyAgc2FmZWx5LgomIzQzOy0gYGBzZW5kX21zaSgpYGA6IFByb3Zva2UgdGhlIGRldmljZSB0byBzaWduYWwgYW4gTVNJIGludGVycnVwdC4KJiM0MzsKJiM0MztUZXN0cyBhcmUgcmVxdWlyZWQgdG8gc2V0IHVwIGEgZGVkaWNhdGVkIERNQSByZWdpb24gZm9yIHRoZSBkcml2ZXIgdG8gdXNlCiYjNDM7d2l0aGluIGBgc3RydWN0IHZmaW9fcGNpX2RyaXZlcmBgIHRvIHNlcnZlIGFzIHRoZSBkcml2ZXImIzM5O3MgbWFpbiBtZW1vcnkKJiM0MzthbGxvY2F0aW9uIHJlZ2lvbiAoZS5nLiB1c2VkIGZvciBpbi1tZW1vcnkgZGVzY3JpcHRvciByaW5ncyBhbmQgaGFyZHdhcmUKJiM0MztidWZmZXJzKS4gVGVzdHMgbXVzdCBwcm92aXNpb24gYW5kIG1hcCB0aGlzIERNQSByZWdpb24gYmVmb3JlIGNvbXBsZXRpbmcgZHJpdmVyCiYjNDM7aW5pdGlhbGl6YXRpb24uCiYjNDM7CiYjNDM7Rm9yIGEgY29tcGxldGUgZXhhbXBsZSBvZiBpbnRlcmFjdGluZyB3aXRoIHRoZSBkcml2ZXIgZnJhbWV3b3JrIGZyb20gYSB0ZXN0CiYjNDM7cGVyc3BlY3RpdmUsIHJlZmVyIHRvIGBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby92ZmlvX3BjaV9kcml2ZXJfdGVzdC5jYGAuCiYjNDM7CiYjNDM7V2hlbiBjb250cmlidXRpbmcgYSBuZXcgZHJpdmVyIGltcGxlbWVudGF0aW9uIHRvIHRoZSBzZWxmdGVzdHMgbGlicmFyeSwgdGhlCiYjNDM7cHJpbWFyeSBhY2NlcHRhbmNlIGNyaXRlcmlhIGlzIHRoYXQgYGB2ZmlvX3BjaV9kcml2ZXJfdGVzdGBgIHBhc3NlcyB1c2luZyB0aGUKJiM0MztuZXcgZHJpdmVyIGFuZCB0YXJnZXQgZGV2aWNlLgomIzQzOwomIzQzO0ludGVncmF0aW9uIHdpdGggS1ZNIFNlbGZ0ZXN0cwomIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzO2xpYnZmaW8gaXMgbm90IHN0cmljdGx5IGxpbWl0ZWQgdG8gVkZJTyBzZWxmdGVzdHMsIGl0IGlzIGFsc28gbGV2ZXJhZ2VkIHdpdGhpbgomIzQzO0tWTSBzZWxmdGVzdHMgKGBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2BgKS4gS1ZNIHNlbGZ0ZXN0cyBidWlsZCB0aGVpciBvd24KJiM0Mztjb3B5IG9mIGxpYnZmaW8gYW5kIGxpbmsgYWdhaW5zdCBpdCwgZW5hYmxpbmcgbGlidmZpbyB0byBiZSB1c2VkIGluIEtWTQomIzQzO3NlbGZ0ZXN0cy4KJiM0MzsKJiM0MztUaGlzIGludGVncmF0aW9uIGVuYWJsZXMgdGVzdGluZyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBLVk0gYW5kIFZGSU8gYW5kCiYjNDM7SU9NTVVGRC4gRm9yIGV4YW1wbGUsIHRlc3RpbmcgdGhlIGVuZC10by1lbmQgZGVsaXZlcnkgb2YgZGV2aWNlIGludGVycnVwdHMgaW50bwomIzQzO3J1bm5pbmcgdkNQVXMuCiYjNDM7CiYjNDM7Q29udHJpYnV0aW9uIEd1aWRlbGluZXMKJiM0Mzs9PT09PT09PT09PT09PT09PT09PT09PQomIzQzOwomIzQzOy0gUHJlZmVyIHRoZSBzaG9ydGxvZyBwcmVmaXggYGB2ZmlvOiBzZWxmdGVzdHM6IC4uLmBgIGZvciBjb21taXRzIHRoYXQgbW9kaWZ5CiYjNDM7ICBmaWxlcyBpbiBgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vYGAuCiYjNDM7LSBGb2xsb3cgdGhlIENvZGluZyBTdHlsZSwgQ29tbWVudHMsIENoYW5nZWxvZ3MsIGFuZCBGdW5jdGlvbiBSZWZlcmVuY2VzCiYjNDM7ICBndWlkZWxpbmVzIGZyb20gdGhlCiYjNDM7ICA6ZG9jOmBLVk0geDg2IG1haW50YWluZXJzIGhhbmRib29rICZsdDsvcHJvY2Vzcy9tYWludGFpbmVyLWt2bS14ODYmZ3Q7YC4KZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggODA2YmQyZDgwZDE1My4uYmExNzRkZDhiYTFiOCAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlMKQEAgLTI4Mzk2LDYgJiM0MzsyODM5Niw3IEBAIFZGSU8gU0VMRlRFU1RTCiBNOglEYXZpZCBNYXRsYWNrICZsdDtkbWF0bGFja0Bnb29nbGUuY29tJmd0OwogTDoJa3ZtQHZnZXIua2VybmVsLm9yZwogUzoJTWFpbnRhaW5lZAomIzQzO0Y6CURvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3QKIEY6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vCiAKIFZGSU8gVklSVElPIFBDSSBEUklWRVIKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk3NwoJCQkJCQkJb3V0cHV0OiA4NQoJCQkJCQkJdGhvdWdodHM6IDUwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRGVjaXNpb24gZm9yIFRoaXMgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBsb29rIGF0IHRoZSBkaWZmLiBUaGUgcHJvdmlkZWQgcGF0Y2ggdG91Y2hlcyBgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdGAsIGEgKm5ldyogZmlsZSBgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tc2VsZnRlc3RzLnJzdGAsIGFuZCB0aGUgYE1BSU5UQUlORVJTYCBmaWxlLiBObyBjb21waWxlZCBDIGNvZGUgb3Iga2VybmVsIGhlYWRlcnMgY2hhbmdlZC4KCk5vdywgbGV0JiMzOTtzIGNvbnN1bHQgdGhlIHJ1bGVzLiBTZWN0aW9uIDIsIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBmb3IgYFdvcnRoRnV6emluZ2AsIGlzIHRoZSByZWxldmFudCBzZWN0aW9uIGhlcmUuIEl0IGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgd2Ugc2hvdWxkIHJldHVybiBgZmFsc2VgIGlmICphbGwqIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byBzcGVjaWZpYyBjYXRlZ29yaWVzLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBydWxlcyBtZW50aW9uIGRvY3VtZW50YXRpb24gY2hhbmdlcywgdXNlci1zcGFjZSBzZWxmLXRlc3RzIHRoYXQgZG9uJiMzOTt0IGFmZmVjdCB0aGUga2VybmVsIGltYWdlLCBhbmQgYnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcy4gVGhlIGNoYW5nZXMgaW4gdGhpcyBjb21taXQgYXJlIHNvbGVseSB0byBkb2N1bWVudGF0aW9uIGZpbGVzIGluIGBEb2N1bWVudGF0aW9uL2AgYW5kIHRoZSBgTUFJTlRBSU5FUlNgIGZpbGUuIEl0JiMzOTtzIGFsbCBkb2N1bWVudGF0aW9uIGFuZCBtZXRhZGF0YSEgTm8gZXhlY3V0YWJsZSBDIGxvZ2ljIG9yIGtlcm5lbCBoZWFkZXJzIGludm9sdmVkLiAKCkkmIzM5O2xsIGRvdWJsZS1jaGVjayB0aGF0IG5vIG90aGVyIGZpbGVzIGNoYW5nZWQuIEkmIzM5O3ZlIGFscmVhZHkgY29uZmlybWVkIHRoZSBmaWxlcyBsaXN0ZWQgaW4gdGhlIGluaXRpYWwgcHJvbXB0IGFyZSB0aGUgb25seSBvbmVzIGNoYW5nZWQgZnJvbSB0aGUgYGRpZmZgIGRhdGEuIFNvLCB0aGUgcGF0Y2ggaXMgY29tcGxldGVseSBub24tZXhlY3V0YWJsZSBhbmQganVzdCBkb2N1bWVudGF0aW9uL21ldGFkYXRhIGNoYW5nZXMuCgpUaGVyZWZvcmUsIHRoZSB2ZXJkaWN0IGlzIGNsZWFyOiBgV29ydGhGdXp6aW5nOiBmYWxzZWAuIE5vIGZ1enppbmcgaXMgd2FycmFudGVkIGhlcmUuIEkgY2FuIGFsc28gY29uZmlkZW50bHkgc2V0IGBGb2N1c1N5bWJvbHM6IFtdYCBhbmQgYEVuYWJsZUNvbmZpZ3M6IFtdYCBiZWNhdXNlIHRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgZG9jdW1lbnRhdGlvbi1yZWxhdGVkLiBJIHdpbGwgc3BlY2lmeSBteSByZWFzb25pbmcgYXM6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBkb2N1bWVudGF0aW9uIGZvciBWRklPIHNlbGZ0ZXN0cyAoaW4gRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tc2VsZnRlc3RzLnJzdCBhbmQgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdCkgYW5kIHVwZGF0ZXMgdGhlIE1BSU5UQUlORVJTIGZpbGUuIE5vIGtlcm5lbCBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQuJiMzNDsKCkZpbmFsbHksIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCBjYWxsIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgdG8gcHV0IHRoaXMgY29uY2x1c2lvbiBpbnRvIGFjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBkb2N1bWVudGF0aW9uIGZvciBWRklPIHNlbGZ0ZXN0cyAoRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tc2VsZnRlc3RzLnJzdCwgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdCkgYW5kIHVwZGF0ZXMgdGhlIE1BSU5UQUlORVJTIGZpbGUuIE5vIGtlcm5lbCBleGVjdXRhYmxlIGNvZGUgb3IgaGVhZGVycyBhcmUgbW9kaWZpZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgZG9jdW1lbnRhdGlvbiBmb3IgVkZJTyBzZWxmdGVzdHMgKERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3QsIERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9pbmRleC5yc3QpIGFuZCB1cGRhdGVzIHRoZSBNQUlOVEFJTkVSUyBmaWxlLiBObyBrZXJuZWwgZXhlY3V0YWJsZSBjb2RlIG9yIGhlYWRlcnMgYXJlIG1vZGlmaWVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDowOTwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6MDk6MzMuOTI1MzE0NTc3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNjI4NzM1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBkb2N1bWVudGF0aW9uIGZvciBWRklPIHNlbGZ0ZXN0cyAoRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tc2VsZnRlc3RzLnJzdCwgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdCkgYW5kIHVwZGF0ZXMgdGhlIE1BSU5UQUlORVJTIGZpbGUuIE5vIGtlcm5lbCBleGVjdXRhYmxlIGNvZGUgb3IgaGVhZGVycyBhcmUgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDowOTozMy45MjUzMTkxNzdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNzU5OTM4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGY2MGEyYTc0YzU4ODliYTIwNzQwZTM5ZDVjYjIzOTRiODE3NjlmMjBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBTZXAgNSAwNDowOTozMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvaW5kZXgucnN0IGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdFxcbmluZGV4IGVhZjcxNjFmZjk1NzguLjYzMGYzMzI4N2JjMGMgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdFxcbisrKyBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9pbmRleC5yc3RcXG5AQCAtNDcsNiArNDcsNyBAQCBvZiBpbnRlcmVzdCB0byBtb3N0IGRldmVsb3BlcnMgd29ya2luZyBvbiBkZXZpY2UgZHJpdmVycy5cXG4gICAgdmZpby1tZWRpYXRlZC1kZXZpY2VcXG4gICAgdmZpb1xcbiAgICB2ZmlvLXBjaS1kZXZpY2Utc3BlY2lmaWMtZHJpdmVyLWFjY2VwdGFuY2VcXG4rICAgdmZpby1zZWxmdGVzdHNcXG4gXFxuIEJ1cy1sZXZlbCBkb2N1bWVudGF0aW9uXFxuID09PT09PT09PT09PT09PT09PT09PT09XFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3QgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdmZpby1zZWxmdGVzdHMucnN0XFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi45ZDM5YTIyNTE5ZDZhXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3RcXG5AQCAtMCwwICsxLDI1MiBAQFxcbisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbitcXG4rPT09PT09PT09PT09PT1cXG4rVkZJTyBTZWxmdGVzdHNcXG4rPT09PT09PT09PT09PT1cXG4rXFxuK1ZGSU8gc2VsZnRlc3RzIGFyZSBidWlsdCBvbiB0b3Agb2YgdGhlIGtlcm5lbCdzIHNlbGZ0ZXN0cyBmcmFtZXdvcmsgYW5kIGFyZVxcbitsb2NhdGVkIGluIGBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpb2BgLlxcbitcXG4rVkZJTyBzZWxmdGVzdHMgZW5hYmxlIGtlcm5lbCBkZXZlbG9wZXJzIHRvIHdyaXRlIGFuZCBydW4gdGVzdHMgdGhhdCB0YWtlIHRoZVxcbitmb3JtIG9mIHVzZXJzcGFjZSBwcm9ncmFtcyB0aGF0IGludGVyYWN0IHdpdGggVkZJTyBhbmQgSU9NTVVGRCB1QVBJcy4gVkZJT1xcbitzZWxmdGVzdHMgY2FuIGJlIHVzZWQgdG8gd3JpdGUgZnVuY3Rpb25hbCB0ZXN0cyBmb3IgbmV3IGZlYXR1cmVzLCByZWdyZXNzaW9uXFxuK3Rlc3RzIGZvciBidWdzLCBhbmQgcGVyZm9ybWFuY2UgdGVzdHMgZm9yIG9wdGltaXphdGlvbnMuXFxuK1xcbitUaGVzZSB0ZXN0cyBhcmUgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aCByZWFsIFBDSSBkZXZpY2VzLCBpLmUuIHRoZXkgZG8gbm90XFxuK3JlbHkgb24gbW9ja2luZyBvdXQgb3IgZmFraW5nIGFueSBiZWhhdmlvciBpbiB0aGUga2VybmVsLiBUaGlzIGFsbG93cyB0aGUgdGVzdHNcXG4rdG8gZXhlcmNpc2Ugbm90IG9ubHkgVkZJTyBidXQgYWxzbyBJT01NVUZELCB0aGUgSU9NTVUgZHJpdmVyLCBpbnRlcnJ1cHRcXG4rcmVtYXBwaW5nLCBJUlEgaGFuZGxpbmcsIGV0Yy5cXG4rXFxuK1J1bm5pbmcgVGVzdHNcXG4rPT09PT09PT09PT09PVxcbitcXG4rUnVubmluZyBWRklPIHNlbGZ0ZXN0cyByZXF1aXJlcyBhIGRldmljZSBib3VuZCB0byB0aGUgYGB2ZmlvLXBjaWBgIGRyaXZlci5cXG4rVGhlcmUgYXJlIHNjcmlwdHMgaW4gYGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL3NjcmlwdHMvYGAgdG8gaGVscCB3aXRoXFxuK3NldHRpbmcgb25lIHVwLlxcbitcXG4rUGlja2luZyBhIERldmljZVxcbistLS0tLS0tLS0tLS0tLS0tXFxuK1xcbitTb21lIFZGSU8gc2VsZnRlc3RzIHJlcXVpcmUgYSBkZXZpY2Ugd2l0aCBhIHN1cHBvcnRlZCBkcml2ZXIgaW1wbGVtZW50YXRpb24gaW5cXG4rdGhlIHNlbGZ0ZXN0cyBsaWJyYXJ5IChzZWUgYERyaXZlciBGcmFtZXdvcmtgXyksIHdoaWxlIG90aGVyIHRlc3RzIChzdWNoIGFzXFxuK2Jhc2ljIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIG9yIHJlc2V0IHRlc3RzKSBjYW4gdXNlIGFueSBhcmJpdHJhcnkgUENJIGRldmljZS5cXG4rXFxuK1RoaXMgc2VjdGlvbiB3aWxsIGJlIGV4cGFuZGVkIGluIHRoZSBmdXR1cmUgdG8gZ3VpZGUgZGV2ZWxvcGVycyBvbiBob3cgdG8gZmluZFxcbithIGRldmljZSB3aXRoIGEgc3VwcG9ydGVkIGRyaXZlci4gSW4gdGhlIG1lYW50aW1lLCB0aGUgc2VsZnRlc3RzIGxpYnJhcnlcXG4raW5jbHVkZXMgZHJpdmVyIHN1cHBvcnQgZm9yIHRoZSBmb2xsb3dpbmcgZGV2aWNlczpcXG4rXFxuKy0gSW50ZWwgSUdCIEdpZ2FiaXQgRXRoZXJuZXQgY29udHJvbGxlcnNcXG4rLSBJbnRlbCBJT0FUIChJL08gQWNjZWxlcmF0aW9uIFRlY2hub2xvZ3kpIERNQSBlbmdpbmVzXFxuKy0gSW50ZWwgRFNBIChEYXRhIFN0cmVhbWluZyBBY2NlbGVyYXRvcilcXG4rLSBOVklESUEgRmFsY29uIGVuZ2luZXMgKGZvdW5kIGluIG1hbnkgTlZJRElBIEdQVXMsIGUuZy4sIEdUWCAxMDgwIG9yIFJUWCAyMDgwKVxcbitcXG4rTm90ZSB0aGF0IHVzaW5nIEludGVsIERTQSBkZXZpY2VzIHJlcXVpcmVzIHNldHRpbmcgdGhlIG1vZHVsZSBwYXJhbWV0ZXJcXG4rYGB2ZmlvX3BjaS5kaXNhYmxlX2RlbnlsaXN0PVlgYCB0byBhbGxvdyBgYHZmaW8tcGNpYGAgdG8gYmluZCB0byBEU0EgZGV2aWNlcy5cXG4rXFxuK1NldHRpbmcgdXAgRGV2aWNlc1xcbistLS0tLS0tLS0tLS0tLS0tLS1cXG4rXFxuKy4uIGNvZGUtYmxvY2s6OiBzaFxcbitcXG4rICAgIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vc2NyaXB0cy9zZXR1cC5zaCAwMDAwOjAxOjAwLjBcXG4rXFxuK1RoZSBzY3JpcHQgaGFuZGxlcyB1bmJpbmRpbmcgdGhlIGRldmljZSBmcm9tIGl0cyBjdXJyZW50IGRyaXZlciBhbmQgYmluZGluZyBpdFxcbit0byBgYHZmaW8tcGNpYGAuIE1ldGFkYXRhIGFib3V0IHRoaXMgZGV2aWNlIGlzIHN0b3JlZCBpblxcbitgYC90bXAvdmZpby1zZWxmdGVzdHMtZGV2aWNlc2BgIHNvIHRoYXQgdGhlIGRldmljZSBjYW4gYmUgY2xlYW5lZCB1cCBsYXRlclxcbisoYm91bmQgYmFjayB0byBpdHMgb3JpZ2luYWwgZHJpdmVyKS5cXG4rXFxuK0V4ZWN1dGlvblxcbistLS0tLS0tLS1cXG4rXFxuK1ZGSU8gc2VsZnRlc3RzIGV4cGVjdCB0aGUgUENJIGRldmljZSBCREYgc3RyaW5nIGFzIHRoZWlyIGZpbmFsIGNvbW1hbmQtbGluZVxcbithcmd1bWVudC4gZS5nLlxcbitcXG4rLi4gY29kZS1ibG9jazo6IHNoXFxuK1xcbisgICAgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby92ZmlvX3BjaV9kZXZpY2VfdGVzdCAwMDAwOjAxOjAwLjBcXG4rXFxuK0FsdGVybmF0aXZlbHksIHRoZSBQQ0kgZGV2aWNlIEJERiBjYW4gYmUgcGFzc2VkIHZpYSB0aGUgYGBWRklPX1NFTEZURVNUU19CREZgYFxcbitlbnZpcm9ubWVudCB2YXJpYWJsZSwgd2hpY2ggY2FuIGJlIHVzZWZ1bCB3aGVuIHJ1bm5pbmcgYWxsIHRlc3RzOlxcbitcXG4rLi4gY29kZS1ibG9jazo6IHNoXFxuK1xcbitcXHRleHBvcnQgVkZJT19TRUxGVEVTVFNfQkRGPTAwMDA6MDE6MDAuMFxcbitcXHRtYWtlIC1DIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzIFRBUkdFVFM9dmZpbyBpbnN0YWxsXFxuK1xcdHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2tzZWxmdGVzdF9pbnN0YWxsL3J1bl9rc2VsZnRlc3Quc2ggLWMgdmZpb1xcbitcXG4rQ2xlYW51cFxcbistLS0tLS0tXFxuK1xcbisuLiBjb2RlLWJsb2NrOjogc2hcXG4rXFxuKyAgICB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL3NjcmlwdHMvY2xlYW51cC5zaFxcbitcXG4rVGhpcyBzY3JpcHQgaGFuZGxlcyB1bmJpbmRpbmcgYWxsIHByZXZpb3VzbHkgc2V0dXAgZGV2aWNlcyBmcm9tIGBgdmZpby1wY2lgYFxcbithbmQgYmluZGluZyB0aGVtIGJhY2sgdG8gdGhlaXIgb3JpZ2luYWwgZHJpdmVyLiBTcGVjaWZpYyBkZXZpY2VzIGNhbiBiZSBjbGVhbmVkXFxuK3VwIGJ5IHBhc3NpbmcgdGhlaXIgQkRGIHN0cmluZyB0byB0aGUgY2xlYW51cCBzY3JpcHQuXFxuK1xcbitXcml0aW5nIFRlc3RzXFxuKz09PT09PT09PT09PT1cXG4rXFxuK1ZGSU8gc2VsZnRlc3RzIGxldmVyYWdlIHRoZSBgYGtzZWxmdGVzdF9oYXJuZXNzLmhgYCBtYWNyb3MgdG8gc3RydWN0dXJlIHNldHVwXFxuK2FuZCB0ZWFyZG93biBzY2VuYXJpb3MuIEEgYmFzaWMgdGVzdCBpbnZvbHZlczpcXG4rXFxuKzEuIERlY2xhcmluZyBhIHRlc3QgRklYVFVSRSBjb250YWluaW5nIHRoZSBkZXZpY2UgYW5kIElPTU1VIHN0YXRlLlxcbisyLiBHZW5lcmF0aW5nIHRlc3QgdmFyaWFudHMgdGhhdCBzcGFuIHRoZSBkaWZmZXJlbnQgSU9NTVUgbW9kZXMgdXRpbGl6aW5nXFxuKyAgIGBgRklYVFVSRV9WQVJJQU5UX0FERF9BTExfSU9NTVVfTU9ERVMoKWBgLlxcbiszLiBJbml0aWFsaXppbmcgdGhlIGRldmljZSBhbmQgYmluZGluZyB0aGUgZGVmYXVsdCBkcml2ZXIgb3BzLlxcbitcXG4rRm9yIGEgY29tcGxldGUgZXhhbXBsZSBvZiB3cml0aW5nIGEgVkZJTyBzZWxmdGVzdCwgcmVmZXIgdG9cXG4rYGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL3ZmaW9fcGNpX2RldmljZV90ZXN0LmNgYC5cXG4rXFxuK1ZGSU8gU2VsZnRlc3RzIExpYnJhcnkgKGxpYnZmaW8pXFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuK1xcbitUaGUgc2VsZnRlc3RzIGRpcmVjdG9yeSBjb250YWlucyBhIGhlbHBlciBsaWJyYXJ5IGNvbXBpbGVkIGZyb20gdGhlIGBgbGliL2BgXFxuK3N1YmRpcmVjdG9yeS4gSXQgcHJvdmlkZXMgc3RydWN0dXJlcyBhbmQgaGVscGVyIGZ1bmN0aW9ucyB0byBoYW5kbGUgc3RhbmRhcmRcXG4rb3BlcmF0aW9ucyBsaWtlIG9wZW5pbmcgVkZJTyBkZXZpY2VzLCBjcmVhdGluZyBWRklPIGNvbnRhaW5lcnMsIGFuZCBpbnRlcmFjdGluZ1xcbit3aXRoIFZGSU8gYW5kIElPTU1VRkQuXFxuK1xcbitBbGwgVkZJTyBzZWxmdGVzdHMgaGF2ZSBsaWJ2ZmlvIGxpbmtlZCBpbiBieSBkZWZhdWx0LiBUZXN0cyBjYW4gYWNjZXNzIHRoZVxcbitsaWJyYXJ5IGJ5IGluY2x1ZGluZyBgYFxcdTAwM2NsaWJ2ZmlvLmhcXHUwMDNlYGAuXFxuK1xcbitDb3JlIE9iamVjdHNcXG4rLS0tLS0tLS0tLS0tXFxuK1xcbitUaGUgVkZJTyBzZWxmdGVzdHMgZnJhbWV3b3JrIHJldm9sdmVzIGFyb3VuZCB0d28gZGlzdGluY3QgY29yZSBvYmplY3RzOlxcbitgYHN0cnVjdCBpb21tdWBgIGFuZCBgYHN0cnVjdCB2ZmlvX3BjaV9kZXZpY2VgYC4gSXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmRcXG4rdGhlIGRpc3RpbmN0aW9uIGFuZCByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVtOlxcbitcXG4rLSBgYHN0cnVjdCBpb21tdWBgIHJlcHJlc2VudHMgYW4gSU9NTVUgZG9tYWluIGFuZCB0aGUgQVBJIHVzZWQgdG8gcHJvZ3JhbSBpdFxcbisgIChlLmcuIGxlZ2FjeSBWRklPIFR5cGUxIHZzIElPTU1VRkQpLiBJdCBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIEkvT1xcbisgIGFkZHJlc3Mgc3BhY2UsIGhhbmRsaW5nIERNQSBtYXBwaW5ncywgYW5kIHRyYW5zbGF0aW5nIGJldHdlZW4gaG9zdCB2aXJ0dWFsXFxuKyAgYWRkcmVzc2VzIChIVkEpIGFuZCBJTyB2aXJ0dWFsIGFkZHJlc3NlcyAoSU9WQSkuXFxuK1xcbistIGBgc3RydWN0IHZmaW9fcGNpX2RldmljZWBgIHJlcHJlc2VudHMgYSBzaW5nbGUgUENJIGRldmljZS4gSXQgZW5jYXBzdWxhdGVzXFxuKyAgdGhlIFZGSU8gZGV2aWNlIGZpbGUgZGVzY3JpcHRvciwgaGFuZGxlcyBhY2Nlc3MgdG8gdGhlIFBDSSBjb25maWd1cmF0aW9uXFxuKyAgc3BhY2UsIG1hbmFnZXMgbWVtb3J5LW1hcHBlZCBCQVJzLCBhbmQgZHJpdmVzIGRldmljZSBpbnRlcnJ1cHRzLlxcbitcXG4rQSB0eXBpY2FsIHRlc3QgaW5pdGlhbGl6ZXMgYW4gSU9NTVUgaW5zdGFuY2UgZmlyc3QsIHRoZW4gcGFzc2VzIGl0IHdoZW5cXG4raW5pdGlhbGl6aW5nIG9uZSBvciBtb3JlIFBDSSBkZXZpY2VzLCBsaW5raW5nIHRoZSBkZXZpY2VzIHRvIHRoZSBzaGFyZWQgSU9NTVVcXG4rZG9tYWluLlxcbitcXG4rYGBzdHJ1Y3QgaW9tbXVgYFxcbiteXl5eXl5eXl5eXl5eXl5eXFxuK1xcbitUaGUgYGBzdHJ1Y3QgaW9tbXVgYCBhYnN0cmFjdHMgYXdheSB0aGUgY29tcGxleGl0eSBvZiBtYW5hZ2luZyBWRklPIGNvbnRhaW5lcnMsXFxuK0lPTU1VIGdyb3VwcywgYW5kIElPTU1VRkQgY29udGV4dHMuIEEgdGVzdCBhbGxvY2F0ZXMgaXRzIElPTU1VIGhhbmRsZSB1c2luZ1xcbitgYGlvbW11X2luaXQoKWBgIHBhc3Npbmcgb25lIG9mIHRoZSBzdXBwb3J0ZWQgSU9NTVUgbW9kZXM6XFxuK1xcbisuLiBjb2RlLWJsb2NrOjogY1xcbitcXG4rICAgIHN0cnVjdCBpb21tdSAqaW9tbXUgPSBpb21tdV9pbml0KE1PREVfSU9NTVVGRCk7XFxuKyAgICAuLi5cXG4rICAgIGlvbW11X2NsZWFudXAoaW9tbXUpO1xcbitcXG4rVGhlIHNlbGZ0ZXN0IGZyYW1ld29yayBpcyBkZXNpZ25lZCB0byB3b3JrIHVuaWZvcm1seSBhY3Jvc3MgYWxsIHN0YW5kYXJkIGtlcm5lbFxcbitJT01NVSBBUElzLiBUaGUgZGVmaW5lZCBtb2RlcyAoaW4gYGBpb21tdS5oYGApIGluY2x1ZGU6XFxuK1xcbistIGBgTU9ERV9WRklPX1RZUEUxX0lPTU1VYGBcXG4rLSBgYE1PREVfVkZJT19UWVBFMVYyX0lPTU1VYGBcXG4rLSBgYE1PREVfSU9NTVVGRF9DT01QQVRfVFlQRTFgYFxcbistIGBgTU9ERV9JT01NVUZEX0NPTVBBVF9UWVBFMVYyYGBcXG4rLSBgYE1PREVfSU9NTVVGRGBgXFxuK1xcbitWRklPIHNlbGZ0ZXN0cyBjYW4gcmVwbGljYXRlIHRoZWlyIHRlc3QgY2FzZXMgYWNyb3NzIGFsbCBwb3NzaWJsZSBJT01NVSBtb2Rlc1xcbit1c2luZyBGSVhUVVJFX1ZBUklBTlRfQUREX0FMTF9JT01NVV9NT0RFUygpIHRvIGVuc3VyZSBrZXJuZWwgSU9NTVUgQVBJcyByZW1haW5cXG4rY29tcGF0aWJsZS5cXG4rXFxuK2Bgc3RydWN0IHZmaW9fcGNpX2RldmljZWBgXFxuK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXFxuK1xcbitBIFBDSSBkZXZpY2UgaXMgcmVwcmVzZW50ZWQgYXMgYSBgYHN0cnVjdCB2ZmlvX3BjaV9kZXZpY2VgYC4gVGhlIGRldmljZVxcbityZXByZXNlbnRhdGlvbiBpcyBpbml0aWFsaXplZCB1c2luZyBgYHZmaW9fcGNpX2RldmljZV9pbml0KClgYCwgd2hpY2ggdGFrZXMgYVxcbit0YXJnZXQgQkRGIHN0cmluZywgb3BlbnMgdGhlIGRldmljZSBpbiBWRklPLCBhbmQgYmluZHMgaXQgdG8gYW4gZXhpc3RpbmdcXG4rYGBzdHJ1Y3QgaW9tbXVgYCBpbnN0YW5jZTpcXG4rXFxuKy4uIGNvZGUtYmxvY2s6OiBjXFxuK1xcbisgICAgc3RydWN0IHZmaW9fcGNpX2RldmljZSAqZGV2aWNlID0gdmZpb19wY2lfZGV2aWNlX2luaXQoZGV2aWNlX2JkZiwgaW9tbXUpO1xcbisgICAgLi4uXFxuKyAgICB2ZmlvX3BjaV9kZXZpY2VfY2xlYW51cChkZXZpY2UpO1xcbitcXG4rYGBzdHJ1Y3QgaW92YV9hbGxvY2F0b3JgYFxcbiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXFxuK1xcbitUbyBmYWNpbGl0YXRlIERNQSBtYXBwaW5ncyB3aXRob3V0IGhhcmRjb2RpbmcgSU9WQXMgKElPIHZpcnR1YWwgYWRkcmVzc2VzKSB0aGF0XFxuK21pZ2h0IGNvbmZsaWN0IHdpdGggcmVzZXJ2ZWQgcGxhdGZvcm0gYWRkcmVzcyByYW5nZXMsIHRoZSBsaWJyYXJ5IHByb3ZpZGVzIGFcXG4rYGBzdHJ1Y3QgaW92YV9hbGxvY2F0b3JgYC5cXG4rXFxuK1RoZSBJT1ZBIGFsbG9jYXRvciBxdWVyaWVzIHRoZSB1bmRlcmx5aW5nIElPTU1VICh2aWEgYGBzdHJ1Y3QgaW9tbXVgYCkgZm9yIGl0c1xcbit2YWxpZCB0YXJnZXQgSU9WQSByYW5nZXMuIFRlc3RzIGNhbiBzYWZlbHkgY2FydmUgb3V0IHVuaXF1ZSBjb250aWd1b3VzIGNodW5rc1xcbitvZiBJT1ZBIHNwYWNlIGZvciBkZXZpY2UgRE1BIGJ5IHJlcGVhdGVkbHkgY2FsbGluZzpcXG4rXFxuKy4uIGNvZGUtYmxvY2s6OiBjXFxuK1xcbisgICAgc3RydWN0IGlvdmFfYWxsb2NhdG9yICphbGxvY2F0b3IgPSBpb3ZhX2FsbG9jYXRvcl9pbml0KGlvbW11KTtcXG4rICAgIGlvdmFfdCBhZGRyID0gaW92YV9hbGxvY2F0b3JfYWxsb2MoYWxsb2NhdG9yLCBzaXplKTtcXG4rXFxuK0RyaXZlciBGcmFtZXdvcmtcXG4rLS0tLS0tLS0tLS0tLS0tLVxcbitcXG4rVGhlIHByaW1hcnkgZ29hbCBvZiBWRklPIHNlbGZ0ZXN0cyBpcyB0byB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSBrZXJuZWxcXG4rY29kZSBoYW5kbGluZyBWRklPIGRldmljZXMsIGluY2x1ZGluZyBWRklPIGNvcmUsIElPTU1VRkQsIElPTU1VIGRyaXZlcnMsIHBhZ2VcXG4rcGlubmluZywgRE1BIG1hcHBpbmcvdW5tYXBwaW5nLCBpbnRlcnJ1cHQgcmVtYXBwaW5nLCBhbmQgSVJRIGRlbGl2ZXJ5LlxcbitcXG4rQmVjYXVzZSBkaWZmZXJlbnQgcGh5c2ljYWwgZGV2aWNlcyBoYXZlIHZhc3RseSBkaWZmZXJlbnQgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlc1xcbitmb3IgdHJpZ2dlcmluZyB3b3JrLCB0aGUgc2VsZnRlc3RzIGxpYnJhcnkgaW1wbGVtZW50cyBhIHN0YW5kYXJkIGRyaXZlclxcbitmcmFtZXdvcmsuICBUaGlzIGZyYW1ld29yayBhYnN0cmFjdHMgZGl2ZXJzZSBoYXJkd2FyZSBlbmRwb2ludHMgKHN1Y2ggYXMgSW50ZWxcXG4rSUdCLCBJT0FULCBvciBEU0EpIGJlaGluZCBhIHVuaWZvcm0gaW50ZXJmYWNlLCBhbGxvd2luZyB0ZXN0cyB0byBwcm92b2tlIGFcXG4rYnJvYWQgcmFuZ2Ugb2YgZGV2aWNlcyB0byBnZW5lcmF0ZSBETUEgb3BlcmF0aW9ucyBhbmQgaW50ZXJydXB0cyBpbiBhXFxuK3N0YW5kYXJkaXplZCBtYW5uZXIuXFxuK1xcbitCeSBleGVyY2lzaW5nIERNQSBhbmQgaW50ZXJydXB0cyB3aXRoIHJlYWwgZW5kcG9pbnRzLCB0ZXN0cyBjYW4gdGhvcm91Z2hseVxcbitzdHJlc3MgYW5kIHZhbGlkYXRlIHRoZSB1bmRlcmx5aW5nIGtlcm5lbCBwYXRocywgc3VjaCBhcyBJT01NVSBwYWdlIHRhYmxlXFxuK21hbmFnZW1lbnQsIGRpcnR5IHBhZ2UgdHJhY2tpbmcsIERldmljZSBUTEIgYW5kIElPVExCIGludmFsaWRhdGlvbnMsIGFuZFxcbitpbnRlcnJ1cHQgZGVsaXZlcnkgdW5kZXIgYXV0aGVudGljIGhhcmR3YXJlIGNvbmRpdGlvbnMuXFxuK1xcbitBbGwgZW5kcG9pbnQgZHJpdmVyIGltcGxlbWVudGF0aW9ucyBwb3B1bGF0ZSBhIGNvbW1vbiBzZXQgb2Ygb3BlcmF0aW9ucyBkZWZpbmVkXFxuK2luIGBgc3RydWN0IHZmaW9fcGNpX2RyaXZlcl9vcHNgYDpcXG4rXFxuKy0gYGBwcm9iZSgpYGA6IFZhbGlkYXRlIHdoZXRoZXIgdGhlIGRyaXZlciBzdXBwb3J0cyB0aGUgY3VycmVudCBQQ0kgZGV2aWNlXFxuKyAgKGUuZy4gbWF0Y2hpbmcgdmVuZG9yL2RldmljZSBJRHMpLlxcbistIGBgaW5pdCgpYGA6IFNldCB1cCBzcGVjaWZpYyBjb250cm9sIHJlZ2lzdGVycyBvciByaW5nLWJ1ZmZlciBkYXRhIHN0cnVjdHVyZXMuXFxuKy0gYGByZW1vdmUoKWBgOiBDbGVhbiB1cCBzdHJ1Y3R1cmVzIGJlZm9yZSBkZXN0cnVjdGlvbi5cXG4rLSBgYG1lbWNweV9zdGFydCgpYGA6IEluaXRpYXRlIERNQSBjb3BpZXMgdmlhIHRoZSBkZXZpY2UuXFxuKy0gYGBtZW1jcHlfd2FpdCgpYGA6IFBvbGwgYW5kIHdhaXQgdW50aWwgcHJldmlvdXNseSBpbml0aWF0ZWQgY29waWVzIGNvbXBsZXRlXFxuKyAgc2FmZWx5LlxcbistIGBgc2VuZF9tc2koKWBgOiBQcm92b2tlIHRoZSBkZXZpY2UgdG8gc2lnbmFsIGFuIE1TSSBpbnRlcnJ1cHQuXFxuK1xcbitUZXN0cyBhcmUgcmVxdWlyZWQgdG8gc2V0IHVwIGEgZGVkaWNhdGVkIERNQSByZWdpb24gZm9yIHRoZSBkcml2ZXIgdG8gdXNlXFxuK3dpdGhpbiBgYHN0cnVjdCB2ZmlvX3BjaV9kcml2ZXJgYCB0byBzZXJ2ZSBhcyB0aGUgZHJpdmVyJ3MgbWFpbiBtZW1vcnlcXG4rYWxsb2NhdGlvbiByZWdpb24gKGUuZy4gdXNlZCBmb3IgaW4tbWVtb3J5IGRlc2NyaXB0b3IgcmluZ3MgYW5kIGhhcmR3YXJlXFxuK2J1ZmZlcnMpLiBUZXN0cyBtdXN0IHByb3Zpc2lvbiBhbmQgbWFwIHRoaXMgRE1BIHJlZ2lvbiBiZWZvcmUgY29tcGxldGluZyBkcml2ZXJcXG4raW5pdGlhbGl6YXRpb24uXFxuK1xcbitGb3IgYSBjb21wbGV0ZSBleGFtcGxlIG9mIGludGVyYWN0aW5nIHdpdGggdGhlIGRyaXZlciBmcmFtZXdvcmsgZnJvbSBhIHRlc3RcXG4rcGVyc3BlY3RpdmUsIHJlZmVyIHRvIGBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby92ZmlvX3BjaV9kcml2ZXJfdGVzdC5jYGAuXFxuK1xcbitXaGVuIGNvbnRyaWJ1dGluZyBhIG5ldyBkcml2ZXIgaW1wbGVtZW50YXRpb24gdG8gdGhlIHNlbGZ0ZXN0cyBsaWJyYXJ5LCB0aGVcXG4rcHJpbWFyeSBhY2NlcHRhbmNlIGNyaXRlcmlhIGlzIHRoYXQgYGB2ZmlvX3BjaV9kcml2ZXJfdGVzdGBgIHBhc3NlcyB1c2luZyB0aGVcXG4rbmV3IGRyaXZlciBhbmQgdGFyZ2V0IGRldmljZS5cXG4rXFxuK0ludGVncmF0aW9uIHdpdGggS1ZNIFNlbGZ0ZXN0c1xcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rXFxuK2xpYnZmaW8gaXMgbm90IHN0cmljdGx5IGxpbWl0ZWQgdG8gVkZJTyBzZWxmdGVzdHMsIGl0IGlzIGFsc28gbGV2ZXJhZ2VkIHdpdGhpblxcbitLVk0gc2VsZnRlc3RzIChgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9gYCkuIEtWTSBzZWxmdGVzdHMgYnVpbGQgdGhlaXIgb3duXFxuK2NvcHkgb2YgbGlidmZpbyBhbmQgbGluayBhZ2FpbnN0IGl0LCBlbmFibGluZyBsaWJ2ZmlvIHRvIGJlIHVzZWQgaW4gS1ZNXFxuK3NlbGZ0ZXN0cy5cXG4rXFxuK1RoaXMgaW50ZWdyYXRpb24gZW5hYmxlcyB0ZXN0aW5nIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIEtWTSBhbmQgVkZJTyBhbmRcXG4rSU9NTVVGRC4gRm9yIGV4YW1wbGUsIHRlc3RpbmcgdGhlIGVuZC10by1lbmQgZGVsaXZlcnkgb2YgZGV2aWNlIGludGVycnVwdHMgaW50b1xcbitydW5uaW5nIHZDUFVzLlxcbitcXG4rQ29udHJpYnV0aW9uIEd1aWRlbGluZXNcXG4rPT09PT09PT09PT09PT09PT09PT09PT1cXG4rXFxuKy0gUHJlZmVyIHRoZSBzaG9ydGxvZyBwcmVmaXggYGB2ZmlvOiBzZWxmdGVzdHM6IC4uLmBgIGZvciBjb21taXRzIHRoYXQgbW9kaWZ5XFxuKyAgZmlsZXMgaW4gYGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2BgLlxcbistIEZvbGxvdyB0aGUgQ29kaW5nIFN0eWxlLCBDb21tZW50cywgQ2hhbmdlbG9ncywgYW5kIEZ1bmN0aW9uIFJlZmVyZW5jZXNcXG4rICBndWlkZWxpbmVzIGZyb20gdGhlXFxuKyAgOmRvYzpgS1ZNIHg4NiBtYWludGFpbmVycyBoYW5kYm9vayBcXHUwMDNjL3Byb2Nlc3MvbWFpbnRhaW5lci1rdm0teDg2XFx1MDAzZWAuXFxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcXG5pbmRleCA4MDZiZDJkODBkMTUzLi5iYTE3NGRkOGJhMWI4IDEwMDY0NFxcbi0tLSBhL01BSU5UQUlORVJTXFxuKysrIGIvTUFJTlRBSU5FUlNcXG5AQCAtMjgzOTYsNiArMjgzOTYsNyBAQCBWRklPIFNFTEZURVNUU1xcbiBNOlxcdERhdmlkIE1hdGxhY2sgXFx1MDAzY2RtYXRsYWNrQGdvb2dsZS5jb21cXHUwMDNlXFxuIEw6XFx0a3ZtQHZnZXIua2VybmVsLm9yZ1xcbiBTOlxcdE1haW50YWluZWRcXG4rRjpcXHREb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdmZpby1zZWxmdGVzdHMucnN0XFxuIEY6XFx0dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9cXG4gXFxuIFZGSU8gVklSVElPIFBDSSBEUklWRVJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6MDk6MzQuNDQzNTYzMDc1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo0MDA4MDI4OTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgZG9jdW1lbnRhdGlvbiBmb3IgVkZJTyBzZWxmdGVzdHMgKERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3QsIERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9pbmRleC5yc3QpIGFuZCB1cGRhdGVzIHRoZSBNQUlOVEFJTkVSUyBmaWxlLiBObyBrZXJuZWwgZXhlY3V0YWJsZSBjb2RlIG9yIGhlYWRlcnMgYXJlIG1vZGlmaWVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmNjBhMmE3NGM1ODg5YmEyMDc0MGUzOWQ1Y2IyMzk0YjgxNzY5ZjIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAwNDowOTozMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9pbmRleC5yc3QgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvaW5kZXgucnN0XG5pbmRleCBlYWY3MTYxZmY5NTc4Li42MzBmMzMyODdiYzBjIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdFxuQEAgLTQ3LDYgKzQ3LDcgQEAgb2YgaW50ZXJlc3QgdG8gbW9zdCBkZXZlbG9wZXJzIHdvcmtpbmcgb24gZGV2aWNlIGRyaXZlcnMuXG4gICAgdmZpby1tZWRpYXRlZC1kZXZpY2VcbiAgICB2ZmlvXG4gICAgdmZpby1wY2ktZGV2aWNlLXNwZWNpZmljLWRyaXZlci1hY2NlcHRhbmNlXG4rICAgdmZpby1zZWxmdGVzdHNcbiBcbiBCdXMtbGV2ZWwgZG9jdW1lbnRhdGlvblxuID09PT09PT09PT09PT09PT09PT09PT09XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tc2VsZnRlc3RzLnJzdCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3Rcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi45ZDM5YTIyNTE5ZDZhXG4tLS0gL2Rldi9udWxsXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdmZpby1zZWxmdGVzdHMucnN0XG5AQCAtMCwwICsxLDI1MiBAQFxuKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rXG4rPT09PT09PT09PT09PT1cbitWRklPIFNlbGZ0ZXN0c1xuKz09PT09PT09PT09PT09XG4rXG4rVkZJTyBzZWxmdGVzdHMgYXJlIGJ1aWx0IG9uIHRvcCBvZiB0aGUga2VybmVsJ3Mgc2VsZnRlc3RzIGZyYW1ld29yayBhbmQgYXJlXG4rbG9jYXRlZCBpbiBgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW9gYC5cbitcbitWRklPIHNlbGZ0ZXN0cyBlbmFibGUga2VybmVsIGRldmVsb3BlcnMgdG8gd3JpdGUgYW5kIHJ1biB0ZXN0cyB0aGF0IHRha2UgdGhlXG4rZm9ybSBvZiB1c2Vyc3BhY2UgcHJvZ3JhbXMgdGhhdCBpbnRlcmFjdCB3aXRoIFZGSU8gYW5kIElPTU1VRkQgdUFQSXMuIFZGSU9cbitzZWxmdGVzdHMgY2FuIGJlIHVzZWQgdG8gd3JpdGUgZnVuY3Rpb25hbCB0ZXN0cyBmb3IgbmV3IGZlYXR1cmVzLCByZWdyZXNzaW9uXG4rdGVzdHMgZm9yIGJ1Z3MsIGFuZCBwZXJmb3JtYW5jZSB0ZXN0cyBmb3Igb3B0aW1pemF0aW9ucy5cbitcbitUaGVzZSB0ZXN0cyBhcmUgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aCByZWFsIFBDSSBkZXZpY2VzLCBpLmUuIHRoZXkgZG8gbm90XG4rcmVseSBvbiBtb2NraW5nIG91dCBvciBmYWtpbmcgYW55IGJlaGF2aW9yIGluIHRoZSBrZXJuZWwuIFRoaXMgYWxsb3dzIHRoZSB0ZXN0c1xuK3RvIGV4ZXJjaXNlIG5vdCBvbmx5IFZGSU8gYnV0IGFsc28gSU9NTVVGRCwgdGhlIElPTU1VIGRyaXZlciwgaW50ZXJydXB0XG4rcmVtYXBwaW5nLCBJUlEgaGFuZGxpbmcsIGV0Yy5cbitcbitSdW5uaW5nIFRlc3RzXG4rPT09PT09PT09PT09PVxuK1xuK1J1bm5pbmcgVkZJTyBzZWxmdGVzdHMgcmVxdWlyZXMgYSBkZXZpY2UgYm91bmQgdG8gdGhlIGBgdmZpby1wY2lgYCBkcml2ZXIuXG4rVGhlcmUgYXJlIHNjcmlwdHMgaW4gYGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL3NjcmlwdHMvYGAgdG8gaGVscCB3aXRoXG4rc2V0dGluZyBvbmUgdXAuXG4rXG4rUGlja2luZyBhIERldmljZVxuKy0tLS0tLS0tLS0tLS0tLS1cbitcbitTb21lIFZGSU8gc2VsZnRlc3RzIHJlcXVpcmUgYSBkZXZpY2Ugd2l0aCBhIHN1cHBvcnRlZCBkcml2ZXIgaW1wbGVtZW50YXRpb24gaW5cbit0aGUgc2VsZnRlc3RzIGxpYnJhcnkgKHNlZSBgRHJpdmVyIEZyYW1ld29ya2BfKSwgd2hpbGUgb3RoZXIgdGVzdHMgKHN1Y2ggYXNcbitiYXNpYyBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSBvciByZXNldCB0ZXN0cykgY2FuIHVzZSBhbnkgYXJiaXRyYXJ5IFBDSSBkZXZpY2UuXG4rXG4rVGhpcyBzZWN0aW9uIHdpbGwgYmUgZXhwYW5kZWQgaW4gdGhlIGZ1dHVyZSB0byBndWlkZSBkZXZlbG9wZXJzIG9uIGhvdyB0byBmaW5kXG4rYSBkZXZpY2Ugd2l0aCBhIHN1cHBvcnRlZCBkcml2ZXIuIEluIHRoZSBtZWFudGltZSwgdGhlIHNlbGZ0ZXN0cyBsaWJyYXJ5XG4raW5jbHVkZXMgZHJpdmVyIHN1cHBvcnQgZm9yIHRoZSBmb2xsb3dpbmcgZGV2aWNlczpcbitcbistIEludGVsIElHQiBHaWdhYml0IEV0aGVybmV0IGNvbnRyb2xsZXJzXG4rLSBJbnRlbCBJT0FUIChJL08gQWNjZWxlcmF0aW9uIFRlY2hub2xvZ3kpIERNQSBlbmdpbmVzXG4rLSBJbnRlbCBEU0EgKERhdGEgU3RyZWFtaW5nIEFjY2VsZXJhdG9yKVxuKy0gTlZJRElBIEZhbGNvbiBlbmdpbmVzIChmb3VuZCBpbiBtYW55IE5WSURJQSBHUFVzLCBlLmcuLCBHVFggMTA4MCBvciBSVFggMjA4MClcbitcbitOb3RlIHRoYXQgdXNpbmcgSW50ZWwgRFNBIGRldmljZXMgcmVxdWlyZXMgc2V0dGluZyB0aGUgbW9kdWxlIHBhcmFtZXRlclxuK2BgdmZpb19wY2kuZGlzYWJsZV9kZW55bGlzdD1ZYGAgdG8gYWxsb3cgYGB2ZmlvLXBjaWBgIHRvIGJpbmQgdG8gRFNBIGRldmljZXMuXG4rXG4rU2V0dGluZyB1cCBEZXZpY2VzXG4rLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4rLi4gY29kZS1ibG9jazo6IHNoXG4rXG4rICAgIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vc2NyaXB0cy9zZXR1cC5zaCAwMDAwOjAxOjAwLjBcbitcbitUaGUgc2NyaXB0IGhhbmRsZXMgdW5iaW5kaW5nIHRoZSBkZXZpY2UgZnJvbSBpdHMgY3VycmVudCBkcml2ZXIgYW5kIGJpbmRpbmcgaXRcbit0byBgYHZmaW8tcGNpYGAuIE1ldGFkYXRhIGFib3V0IHRoaXMgZGV2aWNlIGlzIHN0b3JlZCBpblxuK2BgL3RtcC92ZmlvLXNlbGZ0ZXN0cy1kZXZpY2VzYGAgc28gdGhhdCB0aGUgZGV2aWNlIGNhbiBiZSBjbGVhbmVkIHVwIGxhdGVyXG4rKGJvdW5kIGJhY2sgdG8gaXRzIG9yaWdpbmFsIGRyaXZlcikuXG4rXG4rRXhlY3V0aW9uXG4rLS0tLS0tLS0tXG4rXG4rVkZJTyBzZWxmdGVzdHMgZXhwZWN0IHRoZSBQQ0kgZGV2aWNlIEJERiBzdHJpbmcgYXMgdGhlaXIgZmluYWwgY29tbWFuZC1saW5lXG4rYXJndW1lbnQuIGUuZy5cbitcbisuLiBjb2RlLWJsb2NrOjogc2hcbitcbisgICAgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby92ZmlvX3BjaV9kZXZpY2VfdGVzdCAwMDAwOjAxOjAwLjBcbitcbitBbHRlcm5hdGl2ZWx5LCB0aGUgUENJIGRldmljZSBCREYgY2FuIGJlIHBhc3NlZCB2aWEgdGhlIGBgVkZJT19TRUxGVEVTVFNfQkRGYGBcbitlbnZpcm9ubWVudCB2YXJpYWJsZSwgd2hpY2ggY2FuIGJlIHVzZWZ1bCB3aGVuIHJ1bm5pbmcgYWxsIHRlc3RzOlxuK1xuKy4uIGNvZGUtYmxvY2s6OiBzaFxuK1xuK1x0ZXhwb3J0IFZGSU9fU0VMRlRFU1RTX0JERj0wMDAwOjAxOjAwLjBcbitcdG1ha2UgLUMgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMgVEFSR0VUUz12ZmlvIGluc3RhbGxcbitcdHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2tzZWxmdGVzdF9pbnN0YWxsL3J1bl9rc2VsZnRlc3Quc2ggLWMgdmZpb1xuK1xuK0NsZWFudXBcbistLS0tLS0tXG4rXG4rLi4gY29kZS1ibG9jazo6IHNoXG4rXG4rICAgIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vc2NyaXB0cy9jbGVhbnVwLnNoXG4rXG4rVGhpcyBzY3JpcHQgaGFuZGxlcyB1bmJpbmRpbmcgYWxsIHByZXZpb3VzbHkgc2V0dXAgZGV2aWNlcyBmcm9tIGBgdmZpby1wY2lgYFxuK2FuZCBiaW5kaW5nIHRoZW0gYmFjayB0byB0aGVpciBvcmlnaW5hbCBkcml2ZXIuIFNwZWNpZmljIGRldmljZXMgY2FuIGJlIGNsZWFuZWRcbit1cCBieSBwYXNzaW5nIHRoZWlyIEJERiBzdHJpbmcgdG8gdGhlIGNsZWFudXAgc2NyaXB0LlxuK1xuK1dyaXRpbmcgVGVzdHNcbis9PT09PT09PT09PT09XG4rXG4rVkZJTyBzZWxmdGVzdHMgbGV2ZXJhZ2UgdGhlIGBga3NlbGZ0ZXN0X2hhcm5lc3MuaGBgIG1hY3JvcyB0byBzdHJ1Y3R1cmUgc2V0dXBcbithbmQgdGVhcmRvd24gc2NlbmFyaW9zLiBBIGJhc2ljIHRlc3QgaW52b2x2ZXM6XG4rXG4rMS4gRGVjbGFyaW5nIGEgdGVzdCBGSVhUVVJFIGNvbnRhaW5pbmcgdGhlIGRldmljZSBhbmQgSU9NTVUgc3RhdGUuXG4rMi4gR2VuZXJhdGluZyB0ZXN0IHZhcmlhbnRzIHRoYXQgc3BhbiB0aGUgZGlmZmVyZW50IElPTU1VIG1vZGVzIHV0aWxpemluZ1xuKyAgIGBgRklYVFVSRV9WQVJJQU5UX0FERF9BTExfSU9NTVVfTU9ERVMoKWBgLlxuKzMuIEluaXRpYWxpemluZyB0aGUgZGV2aWNlIGFuZCBiaW5kaW5nIHRoZSBkZWZhdWx0IGRyaXZlciBvcHMuXG4rXG4rRm9yIGEgY29tcGxldGUgZXhhbXBsZSBvZiB3cml0aW5nIGEgVkZJTyBzZWxmdGVzdCwgcmVmZXIgdG9cbitgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vdmZpb19wY2lfZGV2aWNlX3Rlc3QuY2BgLlxuK1xuK1ZGSU8gU2VsZnRlc3RzIExpYnJhcnkgKGxpYnZmaW8pXG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbitcbitUaGUgc2VsZnRlc3RzIGRpcmVjdG9yeSBjb250YWlucyBhIGhlbHBlciBsaWJyYXJ5IGNvbXBpbGVkIGZyb20gdGhlIGBgbGliL2BgXG4rc3ViZGlyZWN0b3J5LiBJdCBwcm92aWRlcyBzdHJ1Y3R1cmVzIGFuZCBoZWxwZXIgZnVuY3Rpb25zIHRvIGhhbmRsZSBzdGFuZGFyZFxuK29wZXJhdGlvbnMgbGlrZSBvcGVuaW5nIFZGSU8gZGV2aWNlcywgY3JlYXRpbmcgVkZJTyBjb250YWluZXJzLCBhbmQgaW50ZXJhY3Rpbmdcbit3aXRoIFZGSU8gYW5kIElPTU1VRkQuXG4rXG4rQWxsIFZGSU8gc2VsZnRlc3RzIGhhdmUgbGlidmZpbyBsaW5rZWQgaW4gYnkgZGVmYXVsdC4gVGVzdHMgY2FuIGFjY2VzcyB0aGVcbitsaWJyYXJ5IGJ5IGluY2x1ZGluZyBgYFx1MDAzY2xpYnZmaW8uaFx1MDAzZWBgLlxuK1xuK0NvcmUgT2JqZWN0c1xuKy0tLS0tLS0tLS0tLVxuK1xuK1RoZSBWRklPIHNlbGZ0ZXN0cyBmcmFtZXdvcmsgcmV2b2x2ZXMgYXJvdW5kIHR3byBkaXN0aW5jdCBjb3JlIG9iamVjdHM6XG4rYGBzdHJ1Y3QgaW9tbXVgYCBhbmQgYGBzdHJ1Y3QgdmZpb19wY2lfZGV2aWNlYGAuIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kXG4rdGhlIGRpc3RpbmN0aW9uIGFuZCByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVtOlxuK1xuKy0gYGBzdHJ1Y3QgaW9tbXVgYCByZXByZXNlbnRzIGFuIElPTU1VIGRvbWFpbiBhbmQgdGhlIEFQSSB1c2VkIHRvIHByb2dyYW0gaXRcbisgIChlLmcuIGxlZ2FjeSBWRklPIFR5cGUxIHZzIElPTU1VRkQpLiBJdCBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIEkvT1xuKyAgYWRkcmVzcyBzcGFjZSwgaGFuZGxpbmcgRE1BIG1hcHBpbmdzLCBhbmQgdHJhbnNsYXRpbmcgYmV0d2VlbiBob3N0IHZpcnR1YWxcbisgIGFkZHJlc3NlcyAoSFZBKSBhbmQgSU8gdmlydHVhbCBhZGRyZXNzZXMgKElPVkEpLlxuK1xuKy0gYGBzdHJ1Y3QgdmZpb19wY2lfZGV2aWNlYGAgcmVwcmVzZW50cyBhIHNpbmdsZSBQQ0kgZGV2aWNlLiBJdCBlbmNhcHN1bGF0ZXNcbisgIHRoZSBWRklPIGRldmljZSBmaWxlIGRlc2NyaXB0b3IsIGhhbmRsZXMgYWNjZXNzIHRvIHRoZSBQQ0kgY29uZmlndXJhdGlvblxuKyAgc3BhY2UsIG1hbmFnZXMgbWVtb3J5LW1hcHBlZCBCQVJzLCBhbmQgZHJpdmVzIGRldmljZSBpbnRlcnJ1cHRzLlxuK1xuK0EgdHlwaWNhbCB0ZXN0IGluaXRpYWxpemVzIGFuIElPTU1VIGluc3RhbmNlIGZpcnN0LCB0aGVuIHBhc3NlcyBpdCB3aGVuXG4raW5pdGlhbGl6aW5nIG9uZSBvciBtb3JlIFBDSSBkZXZpY2VzLCBsaW5raW5nIHRoZSBkZXZpY2VzIHRvIHRoZSBzaGFyZWQgSU9NTVVcbitkb21haW4uXG4rXG4rYGBzdHJ1Y3QgaW9tbXVgYFxuK15eXl5eXl5eXl5eXl5eXl5cbitcbitUaGUgYGBzdHJ1Y3QgaW9tbXVgYCBhYnN0cmFjdHMgYXdheSB0aGUgY29tcGxleGl0eSBvZiBtYW5hZ2luZyBWRklPIGNvbnRhaW5lcnMsXG4rSU9NTVUgZ3JvdXBzLCBhbmQgSU9NTVVGRCBjb250ZXh0cy4gQSB0ZXN0IGFsbG9jYXRlcyBpdHMgSU9NTVUgaGFuZGxlIHVzaW5nXG4rYGBpb21tdV9pbml0KClgYCBwYXNzaW5nIG9uZSBvZiB0aGUgc3VwcG9ydGVkIElPTU1VIG1vZGVzOlxuK1xuKy4uIGNvZGUtYmxvY2s6OiBjXG4rXG4rICAgIHN0cnVjdCBpb21tdSAqaW9tbXUgPSBpb21tdV9pbml0KE1PREVfSU9NTVVGRCk7XG4rICAgIC4uLlxuKyAgICBpb21tdV9jbGVhbnVwKGlvbW11KTtcbitcbitUaGUgc2VsZnRlc3QgZnJhbWV3b3JrIGlzIGRlc2lnbmVkIHRvIHdvcmsgdW5pZm9ybWx5IGFjcm9zcyBhbGwgc3RhbmRhcmQga2VybmVsXG4rSU9NTVUgQVBJcy4gVGhlIGRlZmluZWQgbW9kZXMgKGluIGBgaW9tbXUuaGBgKSBpbmNsdWRlOlxuK1xuKy0gYGBNT0RFX1ZGSU9fVFlQRTFfSU9NTVVgYFxuKy0gYGBNT0RFX1ZGSU9fVFlQRTFWMl9JT01NVWBgXG4rLSBgYE1PREVfSU9NTVVGRF9DT01QQVRfVFlQRTFgYFxuKy0gYGBNT0RFX0lPTU1VRkRfQ09NUEFUX1RZUEUxVjJgYFxuKy0gYGBNT0RFX0lPTU1VRkRgYFxuK1xuK1ZGSU8gc2VsZnRlc3RzIGNhbiByZXBsaWNhdGUgdGhlaXIgdGVzdCBjYXNlcyBhY3Jvc3MgYWxsIHBvc3NpYmxlIElPTU1VIG1vZGVzXG4rdXNpbmcgRklYVFVSRV9WQVJJQU5UX0FERF9BTExfSU9NTVVfTU9ERVMoKSB0byBlbnN1cmUga2VybmVsIElPTU1VIEFQSXMgcmVtYWluXG4rY29tcGF0aWJsZS5cbitcbitgYHN0cnVjdCB2ZmlvX3BjaV9kZXZpY2VgYFxuK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXG4rXG4rQSBQQ0kgZGV2aWNlIGlzIHJlcHJlc2VudGVkIGFzIGEgYGBzdHJ1Y3QgdmZpb19wY2lfZGV2aWNlYGAuIFRoZSBkZXZpY2VcbityZXByZXNlbnRhdGlvbiBpcyBpbml0aWFsaXplZCB1c2luZyBgYHZmaW9fcGNpX2RldmljZV9pbml0KClgYCwgd2hpY2ggdGFrZXMgYVxuK3RhcmdldCBCREYgc3RyaW5nLCBvcGVucyB0aGUgZGV2aWNlIGluIFZGSU8sIGFuZCBiaW5kcyBpdCB0byBhbiBleGlzdGluZ1xuK2Bgc3RydWN0IGlvbW11YGAgaW5zdGFuY2U6XG4rXG4rLi4gY29kZS1ibG9jazo6IGNcbitcbisgICAgc3RydWN0IHZmaW9fcGNpX2RldmljZSAqZGV2aWNlID0gdmZpb19wY2lfZGV2aWNlX2luaXQoZGV2aWNlX2JkZiwgaW9tbXUpO1xuKyAgICAuLi5cbisgICAgdmZpb19wY2lfZGV2aWNlX2NsZWFudXAoZGV2aWNlKTtcbitcbitgYHN0cnVjdCBpb3ZhX2FsbG9jYXRvcmBgXG4rXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXlxuK1xuK1RvIGZhY2lsaXRhdGUgRE1BIG1hcHBpbmdzIHdpdGhvdXQgaGFyZGNvZGluZyBJT1ZBcyAoSU8gdmlydHVhbCBhZGRyZXNzZXMpIHRoYXRcbittaWdodCBjb25mbGljdCB3aXRoIHJlc2VydmVkIHBsYXRmb3JtIGFkZHJlc3MgcmFuZ2VzLCB0aGUgbGlicmFyeSBwcm92aWRlcyBhXG4rYGBzdHJ1Y3QgaW92YV9hbGxvY2F0b3JgYC5cbitcbitUaGUgSU9WQSBhbGxvY2F0b3IgcXVlcmllcyB0aGUgdW5kZXJseWluZyBJT01NVSAodmlhIGBgc3RydWN0IGlvbW11YGApIGZvciBpdHNcbit2YWxpZCB0YXJnZXQgSU9WQSByYW5nZXMuIFRlc3RzIGNhbiBzYWZlbHkgY2FydmUgb3V0IHVuaXF1ZSBjb250aWd1b3VzIGNodW5rc1xuK29mIElPVkEgc3BhY2UgZm9yIGRldmljZSBETUEgYnkgcmVwZWF0ZWRseSBjYWxsaW5nOlxuK1xuKy4uIGNvZGUtYmxvY2s6OiBjXG4rXG4rICAgIHN0cnVjdCBpb3ZhX2FsbG9jYXRvciAqYWxsb2NhdG9yID0gaW92YV9hbGxvY2F0b3JfaW5pdChpb21tdSk7XG4rICAgIGlvdmFfdCBhZGRyID0gaW92YV9hbGxvY2F0b3JfYWxsb2MoYWxsb2NhdG9yLCBzaXplKTtcbitcbitEcml2ZXIgRnJhbWV3b3JrXG4rLS0tLS0tLS0tLS0tLS0tLVxuK1xuK1RoZSBwcmltYXJ5IGdvYWwgb2YgVkZJTyBzZWxmdGVzdHMgaXMgdG8gdmVyaWZ5IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUga2VybmVsXG4rY29kZSBoYW5kbGluZyBWRklPIGRldmljZXMsIGluY2x1ZGluZyBWRklPIGNvcmUsIElPTU1VRkQsIElPTU1VIGRyaXZlcnMsIHBhZ2VcbitwaW5uaW5nLCBETUEgbWFwcGluZy91bm1hcHBpbmcsIGludGVycnVwdCByZW1hcHBpbmcsIGFuZCBJUlEgZGVsaXZlcnkuXG4rXG4rQmVjYXVzZSBkaWZmZXJlbnQgcGh5c2ljYWwgZGV2aWNlcyBoYXZlIHZhc3RseSBkaWZmZXJlbnQgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlc1xuK2ZvciB0cmlnZ2VyaW5nIHdvcmssIHRoZSBzZWxmdGVzdHMgbGlicmFyeSBpbXBsZW1lbnRzIGEgc3RhbmRhcmQgZHJpdmVyXG4rZnJhbWV3b3JrLiAgVGhpcyBmcmFtZXdvcmsgYWJzdHJhY3RzIGRpdmVyc2UgaGFyZHdhcmUgZW5kcG9pbnRzIChzdWNoIGFzIEludGVsXG4rSUdCLCBJT0FULCBvciBEU0EpIGJlaGluZCBhIHVuaWZvcm0gaW50ZXJmYWNlLCBhbGxvd2luZyB0ZXN0cyB0byBwcm92b2tlIGFcbiticm9hZCByYW5nZSBvZiBkZXZpY2VzIHRvIGdlbmVyYXRlIERNQSBvcGVyYXRpb25zIGFuZCBpbnRlcnJ1cHRzIGluIGFcbitzdGFuZGFyZGl6ZWQgbWFubmVyLlxuK1xuK0J5IGV4ZXJjaXNpbmcgRE1BIGFuZCBpbnRlcnJ1cHRzIHdpdGggcmVhbCBlbmRwb2ludHMsIHRlc3RzIGNhbiB0aG9yb3VnaGx5XG4rc3RyZXNzIGFuZCB2YWxpZGF0ZSB0aGUgdW5kZXJseWluZyBrZXJuZWwgcGF0aHMsIHN1Y2ggYXMgSU9NTVUgcGFnZSB0YWJsZVxuK21hbmFnZW1lbnQsIGRpcnR5IHBhZ2UgdHJhY2tpbmcsIERldmljZSBUTEIgYW5kIElPVExCIGludmFsaWRhdGlvbnMsIGFuZFxuK2ludGVycnVwdCBkZWxpdmVyeSB1bmRlciBhdXRoZW50aWMgaGFyZHdhcmUgY29uZGl0aW9ucy5cbitcbitBbGwgZW5kcG9pbnQgZHJpdmVyIGltcGxlbWVudGF0aW9ucyBwb3B1bGF0ZSBhIGNvbW1vbiBzZXQgb2Ygb3BlcmF0aW9ucyBkZWZpbmVkXG4raW4gYGBzdHJ1Y3QgdmZpb19wY2lfZHJpdmVyX29wc2BgOlxuK1xuKy0gYGBwcm9iZSgpYGA6IFZhbGlkYXRlIHdoZXRoZXIgdGhlIGRyaXZlciBzdXBwb3J0cyB0aGUgY3VycmVudCBQQ0kgZGV2aWNlXG4rICAoZS5nLiBtYXRjaGluZyB2ZW5kb3IvZGV2aWNlIElEcykuXG4rLSBgYGluaXQoKWBgOiBTZXQgdXAgc3BlY2lmaWMgY29udHJvbCByZWdpc3RlcnMgb3IgcmluZy1idWZmZXIgZGF0YSBzdHJ1Y3R1cmVzLlxuKy0gYGByZW1vdmUoKWBgOiBDbGVhbiB1cCBzdHJ1Y3R1cmVzIGJlZm9yZSBkZXN0cnVjdGlvbi5cbistIGBgbWVtY3B5X3N0YXJ0KClgYDogSW5pdGlhdGUgRE1BIGNvcGllcyB2aWEgdGhlIGRldmljZS5cbistIGBgbWVtY3B5X3dhaXQoKWBgOiBQb2xsIGFuZCB3YWl0IHVudGlsIHByZXZpb3VzbHkgaW5pdGlhdGVkIGNvcGllcyBjb21wbGV0ZVxuKyAgc2FmZWx5LlxuKy0gYGBzZW5kX21zaSgpYGA6IFByb3Zva2UgdGhlIGRldmljZSB0byBzaWduYWwgYW4gTVNJIGludGVycnVwdC5cbitcbitUZXN0cyBhcmUgcmVxdWlyZWQgdG8gc2V0IHVwIGEgZGVkaWNhdGVkIERNQSByZWdpb24gZm9yIHRoZSBkcml2ZXIgdG8gdXNlXG4rd2l0aGluIGBgc3RydWN0IHZmaW9fcGNpX2RyaXZlcmBgIHRvIHNlcnZlIGFzIHRoZSBkcml2ZXIncyBtYWluIG1lbW9yeVxuK2FsbG9jYXRpb24gcmVnaW9uIChlLmcuIHVzZWQgZm9yIGluLW1lbW9yeSBkZXNjcmlwdG9yIHJpbmdzIGFuZCBoYXJkd2FyZVxuK2J1ZmZlcnMpLiBUZXN0cyBtdXN0IHByb3Zpc2lvbiBhbmQgbWFwIHRoaXMgRE1BIHJlZ2lvbiBiZWZvcmUgY29tcGxldGluZyBkcml2ZXJcbitpbml0aWFsaXphdGlvbi5cbitcbitGb3IgYSBjb21wbGV0ZSBleGFtcGxlIG9mIGludGVyYWN0aW5nIHdpdGggdGhlIGRyaXZlciBmcmFtZXdvcmsgZnJvbSBhIHRlc3RcbitwZXJzcGVjdGl2ZSwgcmVmZXIgdG8gYGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL3ZmaW9fcGNpX2RyaXZlcl90ZXN0LmNgYC5cbitcbitXaGVuIGNvbnRyaWJ1dGluZyBhIG5ldyBkcml2ZXIgaW1wbGVtZW50YXRpb24gdG8gdGhlIHNlbGZ0ZXN0cyBsaWJyYXJ5LCB0aGVcbitwcmltYXJ5IGFjY2VwdGFuY2UgY3JpdGVyaWEgaXMgdGhhdCBgYHZmaW9fcGNpX2RyaXZlcl90ZXN0YGAgcGFzc2VzIHVzaW5nIHRoZVxuK25ldyBkcml2ZXIgYW5kIHRhcmdldCBkZXZpY2UuXG4rXG4rSW50ZWdyYXRpb24gd2l0aCBLVk0gU2VsZnRlc3RzXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4rbGlidmZpbyBpcyBub3Qgc3RyaWN0bHkgbGltaXRlZCB0byBWRklPIHNlbGZ0ZXN0cywgaXQgaXMgYWxzbyBsZXZlcmFnZWQgd2l0aGluXG4rS1ZNIHNlbGZ0ZXN0cyAoYGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYGApLiBLVk0gc2VsZnRlc3RzIGJ1aWxkIHRoZWlyIG93blxuK2NvcHkgb2YgbGlidmZpbyBhbmQgbGluayBhZ2FpbnN0IGl0LCBlbmFibGluZyBsaWJ2ZmlvIHRvIGJlIHVzZWQgaW4gS1ZNXG4rc2VsZnRlc3RzLlxuK1xuK1RoaXMgaW50ZWdyYXRpb24gZW5hYmxlcyB0ZXN0aW5nIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIEtWTSBhbmQgVkZJTyBhbmRcbitJT01NVUZELiBGb3IgZXhhbXBsZSwgdGVzdGluZyB0aGUgZW5kLXRvLWVuZCBkZWxpdmVyeSBvZiBkZXZpY2UgaW50ZXJydXB0cyBpbnRvXG4rcnVubmluZyB2Q1BVcy5cbitcbitDb250cmlidXRpb24gR3VpZGVsaW5lc1xuKz09PT09PT09PT09PT09PT09PT09PT09XG4rXG4rLSBQcmVmZXIgdGhlIHNob3J0bG9nIHByZWZpeCBgYHZmaW86IHNlbGZ0ZXN0czogLi4uYGAgZm9yIGNvbW1pdHMgdGhhdCBtb2RpZnlcbisgIGZpbGVzIGluIGBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9gYC5cbistIEZvbGxvdyB0aGUgQ29kaW5nIFN0eWxlLCBDb21tZW50cywgQ2hhbmdlbG9ncywgYW5kIEZ1bmN0aW9uIFJlZmVyZW5jZXNcbisgIGd1aWRlbGluZXMgZnJvbSB0aGVcbisgIDpkb2M6YEtWTSB4ODYgbWFpbnRhaW5lcnMgaGFuZGJvb2sgXHUwMDNjL3Byb2Nlc3MvbWFpbnRhaW5lci1rdm0teDg2XHUwMDNlYC5cbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXG5pbmRleCA4MDZiZDJkODBkMTUzLi5iYTE3NGRkOGJhMWI4IDEwMDY0NFxuLS0tIGEvTUFJTlRBSU5FUlNcbisrKyBiL01BSU5UQUlORVJTXG5AQCAtMjgzOTYsNiArMjgzOTYsNyBAQCBWRklPIFNFTEZURVNUU1xuIE06XHREYXZpZCBNYXRsYWNrIFx1MDAzY2RtYXRsYWNrQGdvb2dsZS5jb21cdTAwM2VcbiBMOlx0a3ZtQHZnZXIua2VybmVsLm9yZ1xuIFM6XHRNYWludGFpbmVkXG4rRjpcdERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3RcbiBGOlx0dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9cbiBcbiBWRklPIFZJUlRJTyBQQ0kgRFJJVkVSXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDowOTozNC40NDM1NjUzMTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MDA3OTk5NjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBEZWNpc2lvbiBmb3IgVGhpcyBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBsb29rIGF0IHRoZSBkaWZmLiBUaGUgcHJvdmlkZWQgcGF0Y2ggdG91Y2hlcyBgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdGAsIGEgKm5ldyogZmlsZSBgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tc2VsZnRlc3RzLnJzdGAsIGFuZCB0aGUgYE1BSU5UQUlORVJTYCBmaWxlLiBObyBjb21waWxlZCBDIGNvZGUgb3Iga2VybmVsIGhlYWRlcnMgY2hhbmdlZC5cblxuTm93LCBsZXQncyBjb25zdWx0IHRoZSBydWxlcy4gU2VjdGlvbiAyLCB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgZm9yIGBXb3J0aEZ1enppbmdgLCBpcyB0aGUgcmVsZXZhbnQgc2VjdGlvbiBoZXJlLiBJdCBleHBsaWNpdGx5IHN0YXRlcyB0aGF0IHdlIHNob3VsZCByZXR1cm4gYGZhbHNlYCBpZiAqYWxsKiBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gc3BlY2lmaWMgY2F0ZWdvcmllcy4gTGV0J3Mgc2VlLi4uIHRoZSBydWxlcyBtZW50aW9uIGRvY3VtZW50YXRpb24gY2hhbmdlcywgdXNlci1zcGFjZSBzZWxmLXRlc3RzIHRoYXQgZG9uJ3QgYWZmZWN0IHRoZSBrZXJuZWwgaW1hZ2UsIGFuZCBidWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzLiBUaGUgY2hhbmdlcyBpbiB0aGlzIGNvbW1pdCBhcmUgc29sZWx5IHRvIGRvY3VtZW50YXRpb24gZmlsZXMgaW4gYERvY3VtZW50YXRpb24vYCBhbmQgdGhlIGBNQUlOVEFJTkVSU2AgZmlsZS4gSXQncyBhbGwgZG9jdW1lbnRhdGlvbiBhbmQgbWV0YWRhdGEhIE5vIGV4ZWN1dGFibGUgQyBsb2dpYyBvciBrZXJuZWwgaGVhZGVycyBpbnZvbHZlZC4gXG5cbkknbGwgZG91YmxlLWNoZWNrIHRoYXQgbm8gb3RoZXIgZmlsZXMgY2hhbmdlZC4gSSd2ZSBhbHJlYWR5IGNvbmZpcm1lZCB0aGUgZmlsZXMgbGlzdGVkIGluIHRoZSBpbml0aWFsIHByb21wdCBhcmUgdGhlIG9ubHkgb25lcyBjaGFuZ2VkIGZyb20gdGhlIGBkaWZmYCBkYXRhLiBTbywgdGhlIHBhdGNoIGlzIGNvbXBsZXRlbHkgbm9uLWV4ZWN1dGFibGUgYW5kIGp1c3QgZG9jdW1lbnRhdGlvbi9tZXRhZGF0YSBjaGFuZ2VzLlxuXG5UaGVyZWZvcmUsIHRoZSB2ZXJkaWN0IGlzIGNsZWFyOiBgV29ydGhGdXp6aW5nOiBmYWxzZWAuIE5vIGZ1enppbmcgaXMgd2FycmFudGVkIGhlcmUuIEkgY2FuIGFsc28gY29uZmlkZW50bHkgc2V0IGBGb2N1c1N5bWJvbHM6IFtdYCBhbmQgYEVuYWJsZUNvbmZpZ3M6IFtdYCBiZWNhdXNlIHRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgZG9jdW1lbnRhdGlvbi1yZWxhdGVkLiBJIHdpbGwgc3BlY2lmeSBteSByZWFzb25pbmcgYXM6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBkb2N1bWVudGF0aW9uIGZvciBWRklPIHNlbGZ0ZXN0cyAoaW4gRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tc2VsZnRlc3RzLnJzdCBhbmQgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdCkgYW5kIHVwZGF0ZXMgdGhlIE1BSU5UQUlORVJTIGZpbGUuIE5vIGtlcm5lbCBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQuXCJcblxuRmluYWxseSwgSSdsbCBnbyBhaGVhZCBhbmQgY2FsbCB0aGUgYHNldC1yZXN1bHRzYCB0b29sIHRvIHB1dCB0aGlzIGNvbmNsdXNpb24gaW50byBhY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NzcsIk91dHB1dFRva2VucyI6ODUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MDIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDowOTozOC40NTE1Njc1MThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBkb2N1bWVudGF0aW9uIGZvciBWRklPIHNlbGZ0ZXN0cyAoRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tc2VsZnRlc3RzLnJzdCwgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdCkgYW5kIHVwZGF0ZXMgdGhlIE1BSU5UQUlORVJTIGZpbGUuIE5vIGtlcm5lbCBleGVjdXRhYmxlIGNvZGUgb3IgaGVhZGVycyBhcmUgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgZG9jdW1lbnRhdGlvbiBmb3IgVkZJTyBzZWxmdGVzdHMgKERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3QsIERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9pbmRleC5yc3QpIGFuZCB1cGRhdGVzIHRoZSBNQUlOVEFJTkVSUyBmaWxlLiBObyBrZXJuZWwgZXhlY3V0YWJsZSBjb2RlIG9yIGhlYWRlcnMgYXJlIG1vZGlmaWVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6MDk6MzguNDUxNTkzNjM4WiIsIlNlcSI6NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowlq625[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-05 04:08:16 +0000 UTC FinishedAt: 2026-09-05 04:09:40 +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+CgkJCTx0ZD4yMDI2LzA5LzA1IDA0OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGRvY3VtZW50YXRpb24gZm9yIFZGSU8gc2VsZnRlc3RzIChEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdmZpby1zZWxmdGVzdHMucnN0LCBEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvaW5kZXgucnN0KSBhbmQgdXBkYXRlcyB0aGUgTUFJTlRBSU5FUlMgZmlsZS4gTm8ga2VybmVsIGV4ZWN1dGFibGUgY29kZSBvciBoZWFkZXJzIGFyZSBtb2RpZmllZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6MDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmNjBhMmE3NGM1ODg5YmEyMDc0MGUzOWQ1Y2IyMzk0YjgxNzY5ZjIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAwNDowOTozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvaW5kZXgucnN0IGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdFxuaW5kZXggZWFmNzE2MWZmOTU3OC4uNjMwZjMzMjg3YmMwYyAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9pbmRleC5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9pbmRleC5yc3RcbkBAIC00Nyw2ICYjNDM7NDcsNyBAQCBvZiBpbnRlcmVzdCB0byBtb3N0IGRldmVsb3BlcnMgd29ya2luZyBvbiBkZXZpY2UgZHJpdmVycy5cbiAgICB2ZmlvLW1lZGlhdGVkLWRldmljZVxuICAgIHZmaW9cbiAgICB2ZmlvLXBjaS1kZXZpY2Utc3BlY2lmaWMtZHJpdmVyLWFjY2VwdGFuY2VcbiYjNDM7ICAgdmZpby1zZWxmdGVzdHNcbiBcbiBCdXMtbGV2ZWwgZG9jdW1lbnRhdGlvblxuID09PT09PT09PT09PT09PT09PT09PT09XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tc2VsZnRlc3RzLnJzdCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3Rcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi45ZDM5YTIyNTE5ZDZhXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdmZpby1zZWxmdGVzdHMucnN0XG5AQCAtMCwwICYjNDM7MSwyNTIgQEBcbiYjNDM7Li4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7XG4mIzQzOz09PT09PT09PT09PT09XG4mIzQzO1ZGSU8gU2VsZnRlc3RzXG4mIzQzOz09PT09PT09PT09PT09XG4mIzQzO1xuJiM0MztWRklPIHNlbGZ0ZXN0cyBhcmUgYnVpbHQgb24gdG9wIG9mIHRoZSBrZXJuZWwmIzM5O3Mgc2VsZnRlc3RzIGZyYW1ld29yayBhbmQgYXJlXG4mIzQzO2xvY2F0ZWQgaW4gYGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvYGAuXG4mIzQzO1xuJiM0MztWRklPIHNlbGZ0ZXN0cyBlbmFibGUga2VybmVsIGRldmVsb3BlcnMgdG8gd3JpdGUgYW5kIHJ1biB0ZXN0cyB0aGF0IHRha2UgdGhlXG4mIzQzO2Zvcm0gb2YgdXNlcnNwYWNlIHByb2dyYW1zIHRoYXQgaW50ZXJhY3Qgd2l0aCBWRklPIGFuZCBJT01NVUZEIHVBUElzLiBWRklPXG4mIzQzO3NlbGZ0ZXN0cyBjYW4gYmUgdXNlZCB0byB3cml0ZSBmdW5jdGlvbmFsIHRlc3RzIGZvciBuZXcgZmVhdHVyZXMsIHJlZ3Jlc3Npb25cbiYjNDM7dGVzdHMgZm9yIGJ1Z3MsIGFuZCBwZXJmb3JtYW5jZSB0ZXN0cyBmb3Igb3B0aW1pemF0aW9ucy5cbiYjNDM7XG4mIzQzO1RoZXNlIHRlc3RzIGFyZSBkZXNpZ25lZCB0byBpbnRlcmFjdCB3aXRoIHJlYWwgUENJIGRldmljZXMsIGkuZS4gdGhleSBkbyBub3RcbiYjNDM7cmVseSBvbiBtb2NraW5nIG91dCBvciBmYWtpbmcgYW55IGJlaGF2aW9yIGluIHRoZSBrZXJuZWwuIFRoaXMgYWxsb3dzIHRoZSB0ZXN0c1xuJiM0Mzt0byBleGVyY2lzZSBub3Qgb25seSBWRklPIGJ1dCBhbHNvIElPTU1VRkQsIHRoZSBJT01NVSBkcml2ZXIsIGludGVycnVwdFxuJiM0MztyZW1hcHBpbmcsIElSUSBoYW5kbGluZywgZXRjLlxuJiM0MztcbiYjNDM7UnVubmluZyBUZXN0c1xuJiM0Mzs9PT09PT09PT09PT09XG4mIzQzO1xuJiM0MztSdW5uaW5nIFZGSU8gc2VsZnRlc3RzIHJlcXVpcmVzIGEgZGV2aWNlIGJvdW5kIHRvIHRoZSBgYHZmaW8tcGNpYGAgZHJpdmVyLlxuJiM0MztUaGVyZSBhcmUgc2NyaXB0cyBpbiBgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vc2NyaXB0cy9gYCB0byBoZWxwIHdpdGhcbiYjNDM7c2V0dGluZyBvbmUgdXAuXG4mIzQzO1xuJiM0MztQaWNraW5nIGEgRGV2aWNlXG4mIzQzOy0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzO1NvbWUgVkZJTyBzZWxmdGVzdHMgcmVxdWlyZSBhIGRldmljZSB3aXRoIGEgc3VwcG9ydGVkIGRyaXZlciBpbXBsZW1lbnRhdGlvbiBpblxuJiM0Mzt0aGUgc2VsZnRlc3RzIGxpYnJhcnkgKHNlZSBgRHJpdmVyIEZyYW1ld29ya2BfKSwgd2hpbGUgb3RoZXIgdGVzdHMgKHN1Y2ggYXNcbiYjNDM7YmFzaWMgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2Ugb3IgcmVzZXQgdGVzdHMpIGNhbiB1c2UgYW55IGFyYml0cmFyeSBQQ0kgZGV2aWNlLlxuJiM0MztcbiYjNDM7VGhpcyBzZWN0aW9uIHdpbGwgYmUgZXhwYW5kZWQgaW4gdGhlIGZ1dHVyZSB0byBndWlkZSBkZXZlbG9wZXJzIG9uIGhvdyB0byBmaW5kXG4mIzQzO2EgZGV2aWNlIHdpdGggYSBzdXBwb3J0ZWQgZHJpdmVyLiBJbiB0aGUgbWVhbnRpbWUsIHRoZSBzZWxmdGVzdHMgbGlicmFyeVxuJiM0MztpbmNsdWRlcyBkcml2ZXIgc3VwcG9ydCBmb3IgdGhlIGZvbGxvd2luZyBkZXZpY2VzOlxuJiM0MztcbiYjNDM7LSBJbnRlbCBJR0IgR2lnYWJpdCBFdGhlcm5ldCBjb250cm9sbGVyc1xuJiM0MzstIEludGVsIElPQVQgKEkvTyBBY2NlbGVyYXRpb24gVGVjaG5vbG9neSkgRE1BIGVuZ2luZXNcbiYjNDM7LSBJbnRlbCBEU0EgKERhdGEgU3RyZWFtaW5nIEFjY2VsZXJhdG9yKVxuJiM0MzstIE5WSURJQSBGYWxjb24gZW5naW5lcyAoZm91bmQgaW4gbWFueSBOVklESUEgR1BVcywgZS5nLiwgR1RYIDEwODAgb3IgUlRYIDIwODApXG4mIzQzO1xuJiM0MztOb3RlIHRoYXQgdXNpbmcgSW50ZWwgRFNBIGRldmljZXMgcmVxdWlyZXMgc2V0dGluZyB0aGUgbW9kdWxlIHBhcmFtZXRlclxuJiM0MztgYHZmaW9fcGNpLmRpc2FibGVfZGVueWxpc3Q9WWBgIHRvIGFsbG93IGBgdmZpby1wY2lgYCB0byBiaW5kIHRvIERTQSBkZXZpY2VzLlxuJiM0MztcbiYjNDM7U2V0dGluZyB1cCBEZXZpY2VzXG4mIzQzOy0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MztcbiYjNDM7Li4gY29kZS1ibG9jazo6IHNoXG4mIzQzO1xuJiM0MzsgICAgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9zY3JpcHRzL3NldHVwLnNoIDAwMDA6MDE6MDAuMFxuJiM0MztcbiYjNDM7VGhlIHNjcmlwdCBoYW5kbGVzIHVuYmluZGluZyB0aGUgZGV2aWNlIGZyb20gaXRzIGN1cnJlbnQgZHJpdmVyIGFuZCBiaW5kaW5nIGl0XG4mIzQzO3RvIGBgdmZpby1wY2lgYC4gTWV0YWRhdGEgYWJvdXQgdGhpcyBkZXZpY2UgaXMgc3RvcmVkIGluXG4mIzQzO2BgL3RtcC92ZmlvLXNlbGZ0ZXN0cy1kZXZpY2VzYGAgc28gdGhhdCB0aGUgZGV2aWNlIGNhbiBiZSBjbGVhbmVkIHVwIGxhdGVyXG4mIzQzOyhib3VuZCBiYWNrIHRvIGl0cyBvcmlnaW5hbCBkcml2ZXIpLlxuJiM0MztcbiYjNDM7RXhlY3V0aW9uXG4mIzQzOy0tLS0tLS0tLVxuJiM0MztcbiYjNDM7VkZJTyBzZWxmdGVzdHMgZXhwZWN0IHRoZSBQQ0kgZGV2aWNlIEJERiBzdHJpbmcgYXMgdGhlaXIgZmluYWwgY29tbWFuZC1saW5lXG4mIzQzO2FyZ3VtZW50LiBlLmcuXG4mIzQzO1xuJiM0MzsuLiBjb2RlLWJsb2NrOjogc2hcbiYjNDM7XG4mIzQzOyAgICB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL3ZmaW9fcGNpX2RldmljZV90ZXN0IDAwMDA6MDE6MDAuMFxuJiM0MztcbiYjNDM7QWx0ZXJuYXRpdmVseSwgdGhlIFBDSSBkZXZpY2UgQkRGIGNhbiBiZSBwYXNzZWQgdmlhIHRoZSBgYFZGSU9fU0VMRlRFU1RTX0JERmBgXG4mIzQzO2Vudmlyb25tZW50IHZhcmlhYmxlLCB3aGljaCBjYW4gYmUgdXNlZnVsIHdoZW4gcnVubmluZyBhbGwgdGVzdHM6XG4mIzQzO1xuJiM0MzsuLiBjb2RlLWJsb2NrOjogc2hcbiYjNDM7XG4mIzQzO1x0ZXhwb3J0IFZGSU9fU0VMRlRFU1RTX0JERj0wMDAwOjAxOjAwLjBcbiYjNDM7XHRtYWtlIC1DIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzIFRBUkdFVFM9dmZpbyBpbnN0YWxsXG4mIzQzO1x0dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3NlbGZ0ZXN0X2luc3RhbGwvcnVuX2tzZWxmdGVzdC5zaCAtYyB2ZmlvXG4mIzQzO1xuJiM0MztDbGVhbnVwXG4mIzQzOy0tLS0tLS1cbiYjNDM7XG4mIzQzOy4uIGNvZGUtYmxvY2s6OiBzaFxuJiM0MztcbiYjNDM7ICAgIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vc2NyaXB0cy9jbGVhbnVwLnNoXG4mIzQzO1xuJiM0MztUaGlzIHNjcmlwdCBoYW5kbGVzIHVuYmluZGluZyBhbGwgcHJldmlvdXNseSBzZXR1cCBkZXZpY2VzIGZyb20gYGB2ZmlvLXBjaWBgXG4mIzQzO2FuZCBiaW5kaW5nIHRoZW0gYmFjayB0byB0aGVpciBvcmlnaW5hbCBkcml2ZXIuIFNwZWNpZmljIGRldmljZXMgY2FuIGJlIGNsZWFuZWRcbiYjNDM7dXAgYnkgcGFzc2luZyB0aGVpciBCREYgc3RyaW5nIHRvIHRoZSBjbGVhbnVwIHNjcmlwdC5cbiYjNDM7XG4mIzQzO1dyaXRpbmcgVGVzdHNcbiYjNDM7PT09PT09PT09PT09PVxuJiM0MztcbiYjNDM7VkZJTyBzZWxmdGVzdHMgbGV2ZXJhZ2UgdGhlIGBga3NlbGZ0ZXN0X2hhcm5lc3MuaGBgIG1hY3JvcyB0byBzdHJ1Y3R1cmUgc2V0dXBcbiYjNDM7YW5kIHRlYXJkb3duIHNjZW5hcmlvcy4gQSBiYXNpYyB0ZXN0IGludm9sdmVzOlxuJiM0MztcbiYjNDM7MS4gRGVjbGFyaW5nIGEgdGVzdCBGSVhUVVJFIGNvbnRhaW5pbmcgdGhlIGRldmljZSBhbmQgSU9NTVUgc3RhdGUuXG4mIzQzOzIuIEdlbmVyYXRpbmcgdGVzdCB2YXJpYW50cyB0aGF0IHNwYW4gdGhlIGRpZmZlcmVudCBJT01NVSBtb2RlcyB1dGlsaXppbmdcbiYjNDM7ICAgYGBGSVhUVVJFX1ZBUklBTlRfQUREX0FMTF9JT01NVV9NT0RFUygpYGAuXG4mIzQzOzMuIEluaXRpYWxpemluZyB0aGUgZGV2aWNlIGFuZCBiaW5kaW5nIHRoZSBkZWZhdWx0IGRyaXZlciBvcHMuXG4mIzQzO1xuJiM0MztGb3IgYSBjb21wbGV0ZSBleGFtcGxlIG9mIHdyaXRpbmcgYSBWRklPIHNlbGZ0ZXN0LCByZWZlciB0b1xuJiM0MztgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vdmZpb19wY2lfZGV2aWNlX3Rlc3QuY2BgLlxuJiM0MztcbiYjNDM7VkZJTyBTZWxmdGVzdHMgTGlicmFyeSAobGlidmZpbylcbiYjNDM7PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiYjNDM7XG4mIzQzO1RoZSBzZWxmdGVzdHMgZGlyZWN0b3J5IGNvbnRhaW5zIGEgaGVscGVyIGxpYnJhcnkgY29tcGlsZWQgZnJvbSB0aGUgYGBsaWIvYGBcbiYjNDM7c3ViZGlyZWN0b3J5LiBJdCBwcm92aWRlcyBzdHJ1Y3R1cmVzIGFuZCBoZWxwZXIgZnVuY3Rpb25zIHRvIGhhbmRsZSBzdGFuZGFyZFxuJiM0MztvcGVyYXRpb25zIGxpa2Ugb3BlbmluZyBWRklPIGRldmljZXMsIGNyZWF0aW5nIFZGSU8gY29udGFpbmVycywgYW5kIGludGVyYWN0aW5nXG4mIzQzO3dpdGggVkZJTyBhbmQgSU9NTVVGRC5cbiYjNDM7XG4mIzQzO0FsbCBWRklPIHNlbGZ0ZXN0cyBoYXZlIGxpYnZmaW8gbGlua2VkIGluIGJ5IGRlZmF1bHQuIFRlc3RzIGNhbiBhY2Nlc3MgdGhlXG4mIzQzO2xpYnJhcnkgYnkgaW5jbHVkaW5nIGBgXHUwMDNjbGlidmZpby5oXHUwMDNlYGAuXG4mIzQzO1xuJiM0MztDb3JlIE9iamVjdHNcbiYjNDM7LS0tLS0tLS0tLS0tXG4mIzQzO1xuJiM0MztUaGUgVkZJTyBzZWxmdGVzdHMgZnJhbWV3b3JrIHJldm9sdmVzIGFyb3VuZCB0d28gZGlzdGluY3QgY29yZSBvYmplY3RzOlxuJiM0MztgYHN0cnVjdCBpb21tdWBgIGFuZCBgYHN0cnVjdCB2ZmlvX3BjaV9kZXZpY2VgYC4gSXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmRcbiYjNDM7dGhlIGRpc3RpbmN0aW9uIGFuZCByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVtOlxuJiM0MztcbiYjNDM7LSBgYHN0cnVjdCBpb21tdWBgIHJlcHJlc2VudHMgYW4gSU9NTVUgZG9tYWluIGFuZCB0aGUgQVBJIHVzZWQgdG8gcHJvZ3JhbSBpdFxuJiM0MzsgIChlLmcuIGxlZ2FjeSBWRklPIFR5cGUxIHZzIElPTU1VRkQpLiBJdCBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIEkvT1xuJiM0MzsgIGFkZHJlc3Mgc3BhY2UsIGhhbmRsaW5nIERNQSBtYXBwaW5ncywgYW5kIHRyYW5zbGF0aW5nIGJldHdlZW4gaG9zdCB2aXJ0dWFsXG4mIzQzOyAgYWRkcmVzc2VzIChIVkEpIGFuZCBJTyB2aXJ0dWFsIGFkZHJlc3NlcyAoSU9WQSkuXG4mIzQzO1xuJiM0MzstIGBgc3RydWN0IHZmaW9fcGNpX2RldmljZWBgIHJlcHJlc2VudHMgYSBzaW5nbGUgUENJIGRldmljZS4gSXQgZW5jYXBzdWxhdGVzXG4mIzQzOyAgdGhlIFZGSU8gZGV2aWNlIGZpbGUgZGVzY3JpcHRvciwgaGFuZGxlcyBhY2Nlc3MgdG8gdGhlIFBDSSBjb25maWd1cmF0aW9uXG4mIzQzOyAgc3BhY2UsIG1hbmFnZXMgbWVtb3J5LW1hcHBlZCBCQVJzLCBhbmQgZHJpdmVzIGRldmljZSBpbnRlcnJ1cHRzLlxuJiM0MztcbiYjNDM7QSB0eXBpY2FsIHRlc3QgaW5pdGlhbGl6ZXMgYW4gSU9NTVUgaW5zdGFuY2UgZmlyc3QsIHRoZW4gcGFzc2VzIGl0IHdoZW5cbiYjNDM7aW5pdGlhbGl6aW5nIG9uZSBvciBtb3JlIFBDSSBkZXZpY2VzLCBsaW5raW5nIHRoZSBkZXZpY2VzIHRvIHRoZSBzaGFyZWQgSU9NTVVcbiYjNDM7ZG9tYWluLlxuJiM0MztcbiYjNDM7YGBzdHJ1Y3QgaW9tbXVgYFxuJiM0MzteXl5eXl5eXl5eXl5eXl5eXG4mIzQzO1xuJiM0MztUaGUgYGBzdHJ1Y3QgaW9tbXVgYCBhYnN0cmFjdHMgYXdheSB0aGUgY29tcGxleGl0eSBvZiBtYW5hZ2luZyBWRklPIGNvbnRhaW5lcnMsXG4mIzQzO0lPTU1VIGdyb3VwcywgYW5kIElPTU1VRkQgY29udGV4dHMuIEEgdGVzdCBhbGxvY2F0ZXMgaXRzIElPTU1VIGhhbmRsZSB1c2luZ1xuJiM0MztgYGlvbW11X2luaXQoKWBgIHBhc3Npbmcgb25lIG9mIHRoZSBzdXBwb3J0ZWQgSU9NTVUgbW9kZXM6XG4mIzQzO1xuJiM0MzsuLiBjb2RlLWJsb2NrOjogY1xuJiM0MztcbiYjNDM7ICAgIHN0cnVjdCBpb21tdSAqaW9tbXUgPSBpb21tdV9pbml0KE1PREVfSU9NTVVGRCk7XG4mIzQzOyAgICAuLi5cbiYjNDM7ICAgIGlvbW11X2NsZWFudXAoaW9tbXUpO1xuJiM0MztcbiYjNDM7VGhlIHNlbGZ0ZXN0IGZyYW1ld29yayBpcyBkZXNpZ25lZCB0byB3b3JrIHVuaWZvcm1seSBhY3Jvc3MgYWxsIHN0YW5kYXJkIGtlcm5lbFxuJiM0MztJT01NVSBBUElzLiBUaGUgZGVmaW5lZCBtb2RlcyAoaW4gYGBpb21tdS5oYGApIGluY2x1ZGU6XG4mIzQzO1xuJiM0MzstIGBgTU9ERV9WRklPX1RZUEUxX0lPTU1VYGBcbiYjNDM7LSBgYE1PREVfVkZJT19UWVBFMVYyX0lPTU1VYGBcbiYjNDM7LSBgYE1PREVfSU9NTVVGRF9DT01QQVRfVFlQRTFgYFxuJiM0MzstIGBgTU9ERV9JT01NVUZEX0NPTVBBVF9UWVBFMVYyYGBcbiYjNDM7LSBgYE1PREVfSU9NTVVGRGBgXG4mIzQzO1xuJiM0MztWRklPIHNlbGZ0ZXN0cyBjYW4gcmVwbGljYXRlIHRoZWlyIHRlc3QgY2FzZXMgYWNyb3NzIGFsbCBwb3NzaWJsZSBJT01NVSBtb2Rlc1xuJiM0Mzt1c2luZyBGSVhUVVJFX1ZBUklBTlRfQUREX0FMTF9JT01NVV9NT0RFUygpIHRvIGVuc3VyZSBrZXJuZWwgSU9NTVUgQVBJcyByZW1haW5cbiYjNDM7Y29tcGF0aWJsZS5cbiYjNDM7XG4mIzQzO2Bgc3RydWN0IHZmaW9fcGNpX2RldmljZWBgXG4mIzQzO15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXG4mIzQzO1xuJiM0MztBIFBDSSBkZXZpY2UgaXMgcmVwcmVzZW50ZWQgYXMgYSBgYHN0cnVjdCB2ZmlvX3BjaV9kZXZpY2VgYC4gVGhlIGRldmljZVxuJiM0MztyZXByZXNlbnRhdGlvbiBpcyBpbml0aWFsaXplZCB1c2luZyBgYHZmaW9fcGNpX2RldmljZV9pbml0KClgYCwgd2hpY2ggdGFrZXMgYVxuJiM0Mzt0YXJnZXQgQkRGIHN0cmluZywgb3BlbnMgdGhlIGRldmljZSBpbiBWRklPLCBhbmQgYmluZHMgaXQgdG8gYW4gZXhpc3RpbmdcbiYjNDM7YGBzdHJ1Y3QgaW9tbXVgYCBpbnN0YW5jZTpcbiYjNDM7XG4mIzQzOy4uIGNvZGUtYmxvY2s6OiBjXG4mIzQzO1xuJiM0MzsgICAgc3RydWN0IHZmaW9fcGNpX2RldmljZSAqZGV2aWNlID0gdmZpb19wY2lfZGV2aWNlX2luaXQoZGV2aWNlX2JkZiwgaW9tbXUpO1xuJiM0MzsgICAgLi4uXG4mIzQzOyAgICB2ZmlvX3BjaV9kZXZpY2VfY2xlYW51cChkZXZpY2UpO1xuJiM0MztcbiYjNDM7YGBzdHJ1Y3QgaW92YV9hbGxvY2F0b3JgYFxuJiM0MzteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXG4mIzQzO1xuJiM0MztUbyBmYWNpbGl0YXRlIERNQSBtYXBwaW5ncyB3aXRob3V0IGhhcmRjb2RpbmcgSU9WQXMgKElPIHZpcnR1YWwgYWRkcmVzc2VzKSB0aGF0XG4mIzQzO21pZ2h0IGNvbmZsaWN0IHdpdGggcmVzZXJ2ZWQgcGxhdGZvcm0gYWRkcmVzcyByYW5nZXMsIHRoZSBsaWJyYXJ5IHByb3ZpZGVzIGFcbiYjNDM7YGBzdHJ1Y3QgaW92YV9hbGxvY2F0b3JgYC5cbiYjNDM7XG4mIzQzO1RoZSBJT1ZBIGFsbG9jYXRvciBxdWVyaWVzIHRoZSB1bmRlcmx5aW5nIElPTU1VICh2aWEgYGBzdHJ1Y3QgaW9tbXVgYCkgZm9yIGl0c1xuJiM0Mzt2YWxpZCB0YXJnZXQgSU9WQSByYW5nZXMuIFRlc3RzIGNhbiBzYWZlbHkgY2FydmUgb3V0IHVuaXF1ZSBjb250aWd1b3VzIGNodW5rc1xuJiM0MztvZiBJT1ZBIHNwYWNlIGZvciBkZXZpY2UgRE1BIGJ5IHJlcGVhdGVkbHkgY2FsbGluZzpcbiYjNDM7XG4mIzQzOy4uIGNvZGUtYmxvY2s6OiBjXG4mIzQzO1xuJiM0MzsgICAgc3RydWN0IGlvdmFfYWxsb2NhdG9yICphbGxvY2F0b3IgPSBpb3ZhX2FsbG9jYXRvcl9pbml0KGlvbW11KTtcbiYjNDM7ICAgIGlvdmFfdCBhZGRyID0gaW92YV9hbGxvY2F0b3JfYWxsb2MoYWxsb2NhdG9yLCBzaXplKTtcbiYjNDM7XG4mIzQzO0RyaXZlciBGcmFtZXdvcmtcbiYjNDM7LS0tLS0tLS0tLS0tLS0tLVxuJiM0MztcbiYjNDM7VGhlIHByaW1hcnkgZ29hbCBvZiBWRklPIHNlbGZ0ZXN0cyBpcyB0byB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSBrZXJuZWxcbiYjNDM7Y29kZSBoYW5kbGluZyBWRklPIGRldmljZXMsIGluY2x1ZGluZyBWRklPIGNvcmUsIElPTU1VRkQsIElPTU1VIGRyaXZlcnMsIHBhZ2VcbiYjNDM7cGlubmluZywgRE1BIG1hcHBpbmcvdW5tYXBwaW5nLCBpbnRlcnJ1cHQgcmVtYXBwaW5nLCBhbmQgSVJRIGRlbGl2ZXJ5LlxuJiM0MztcbiYjNDM7QmVjYXVzZSBkaWZmZXJlbnQgcGh5c2ljYWwgZGV2aWNlcyBoYXZlIHZhc3RseSBkaWZmZXJlbnQgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlc1xuJiM0Mztmb3IgdHJpZ2dlcmluZyB3b3JrLCB0aGUgc2VsZnRlc3RzIGxpYnJhcnkgaW1wbGVtZW50cyBhIHN0YW5kYXJkIGRyaXZlclxuJiM0MztmcmFtZXdvcmsuICBUaGlzIGZyYW1ld29yayBhYnN0cmFjdHMgZGl2ZXJzZSBoYXJkd2FyZSBlbmRwb2ludHMgKHN1Y2ggYXMgSW50ZWxcbiYjNDM7SUdCLCBJT0FULCBvciBEU0EpIGJlaGluZCBhIHVuaWZvcm0gaW50ZXJmYWNlLCBhbGxvd2luZyB0ZXN0cyB0byBwcm92b2tlIGFcbiYjNDM7YnJvYWQgcmFuZ2Ugb2YgZGV2aWNlcyB0byBnZW5lcmF0ZSBETUEgb3BlcmF0aW9ucyBhbmQgaW50ZXJydXB0cyBpbiBhXG4mIzQzO3N0YW5kYXJkaXplZCBtYW5uZXIuXG4mIzQzO1xuJiM0MztCeSBleGVyY2lzaW5nIERNQSBhbmQgaW50ZXJydXB0cyB3aXRoIHJlYWwgZW5kcG9pbnRzLCB0ZXN0cyBjYW4gdGhvcm91Z2hseVxuJiM0MztzdHJlc3MgYW5kIHZhbGlkYXRlIHRoZSB1bmRlcmx5aW5nIGtlcm5lbCBwYXRocywgc3VjaCBhcyBJT01NVSBwYWdlIHRhYmxlXG4mIzQzO21hbmFnZW1lbnQsIGRpcnR5IHBhZ2UgdHJhY2tpbmcsIERldmljZSBUTEIgYW5kIElPVExCIGludmFsaWRhdGlvbnMsIGFuZFxuJiM0MztpbnRlcnJ1cHQgZGVsaXZlcnkgdW5kZXIgYXV0aGVudGljIGhhcmR3YXJlIGNvbmRpdGlvbnMuXG4mIzQzO1xuJiM0MztBbGwgZW5kcG9pbnQgZHJpdmVyIGltcGxlbWVudGF0aW9ucyBwb3B1bGF0ZSBhIGNvbW1vbiBzZXQgb2Ygb3BlcmF0aW9ucyBkZWZpbmVkXG4mIzQzO2luIGBgc3RydWN0IHZmaW9fcGNpX2RyaXZlcl9vcHNgYDpcbiYjNDM7XG4mIzQzOy0gYGBwcm9iZSgpYGA6IFZhbGlkYXRlIHdoZXRoZXIgdGhlIGRyaXZlciBzdXBwb3J0cyB0aGUgY3VycmVudCBQQ0kgZGV2aWNlXG4mIzQzOyAgKGUuZy4gbWF0Y2hpbmcgdmVuZG9yL2RldmljZSBJRHMpLlxuJiM0MzstIGBgaW5pdCgpYGA6IFNldCB1cCBzcGVjaWZpYyBjb250cm9sIHJlZ2lzdGVycyBvciByaW5nLWJ1ZmZlciBkYXRhIHN0cnVjdHVyZXMuXG4mIzQzOy0gYGByZW1vdmUoKWBgOiBDbGVhbiB1cCBzdHJ1Y3R1cmVzIGJlZm9yZSBkZXN0cnVjdGlvbi5cbiYjNDM7LSBgYG1lbWNweV9zdGFydCgpYGA6IEluaXRpYXRlIERNQSBjb3BpZXMgdmlhIHRoZSBkZXZpY2UuXG4mIzQzOy0gYGBtZW1jcHlfd2FpdCgpYGA6IFBvbGwgYW5kIHdhaXQgdW50aWwgcHJldmlvdXNseSBpbml0aWF0ZWQgY29waWVzIGNvbXBsZXRlXG4mIzQzOyAgc2FmZWx5LlxuJiM0MzstIGBgc2VuZF9tc2koKWBgOiBQcm92b2tlIHRoZSBkZXZpY2UgdG8gc2lnbmFsIGFuIE1TSSBpbnRlcnJ1cHQuXG4mIzQzO1xuJiM0MztUZXN0cyBhcmUgcmVxdWlyZWQgdG8gc2V0IHVwIGEgZGVkaWNhdGVkIERNQSByZWdpb24gZm9yIHRoZSBkcml2ZXIgdG8gdXNlXG4mIzQzO3dpdGhpbiBgYHN0cnVjdCB2ZmlvX3BjaV9kcml2ZXJgYCB0byBzZXJ2ZSBhcyB0aGUgZHJpdmVyJiMzOTtzIG1haW4gbWVtb3J5XG4mIzQzO2FsbG9jYXRpb24gcmVnaW9uIChlLmcuIHVzZWQgZm9yIGluLW1lbW9yeSBkZXNjcmlwdG9yIHJpbmdzIGFuZCBoYXJkd2FyZVxuJiM0MztidWZmZXJzKS4gVGVzdHMgbXVzdCBwcm92aXNpb24gYW5kIG1hcCB0aGlzIERNQSByZWdpb24gYmVmb3JlIGNvbXBsZXRpbmcgZHJpdmVyXG4mIzQzO2luaXRpYWxpemF0aW9uLlxuJiM0MztcbiYjNDM7Rm9yIGEgY29tcGxldGUgZXhhbXBsZSBvZiBpbnRlcmFjdGluZyB3aXRoIHRoZSBkcml2ZXIgZnJhbWV3b3JrIGZyb20gYSB0ZXN0XG4mIzQzO3BlcnNwZWN0aXZlLCByZWZlciB0byBgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vdmZpb19wY2lfZHJpdmVyX3Rlc3QuY2BgLlxuJiM0MztcbiYjNDM7V2hlbiBjb250cmlidXRpbmcgYSBuZXcgZHJpdmVyIGltcGxlbWVudGF0aW9uIHRvIHRoZSBzZWxmdGVzdHMgbGlicmFyeSwgdGhlXG4mIzQzO3ByaW1hcnkgYWNjZXB0YW5jZSBjcml0ZXJpYSBpcyB0aGF0IGBgdmZpb19wY2lfZHJpdmVyX3Rlc3RgYCBwYXNzZXMgdXNpbmcgdGhlXG4mIzQzO25ldyBkcml2ZXIgYW5kIHRhcmdldCBkZXZpY2UuXG4mIzQzO1xuJiM0MztJbnRlZ3JhdGlvbiB3aXRoIEtWTSBTZWxmdGVzdHNcbiYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO1xuJiM0MztsaWJ2ZmlvIGlzIG5vdCBzdHJpY3RseSBsaW1pdGVkIHRvIFZGSU8gc2VsZnRlc3RzLCBpdCBpcyBhbHNvIGxldmVyYWdlZCB3aXRoaW5cbiYjNDM7S1ZNIHNlbGZ0ZXN0cyAoYGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYGApLiBLVk0gc2VsZnRlc3RzIGJ1aWxkIHRoZWlyIG93blxuJiM0Mztjb3B5IG9mIGxpYnZmaW8gYW5kIGxpbmsgYWdhaW5zdCBpdCwgZW5hYmxpbmcgbGlidmZpbyB0byBiZSB1c2VkIGluIEtWTVxuJiM0MztzZWxmdGVzdHMuXG4mIzQzO1xuJiM0MztUaGlzIGludGVncmF0aW9uIGVuYWJsZXMgdGVzdGluZyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBLVk0gYW5kIFZGSU8gYW5kXG4mIzQzO0lPTU1VRkQuIEZvciBleGFtcGxlLCB0ZXN0aW5nIHRoZSBlbmQtdG8tZW5kIGRlbGl2ZXJ5IG9mIGRldmljZSBpbnRlcnJ1cHRzIGludG9cbiYjNDM7cnVubmluZyB2Q1BVcy5cbiYjNDM7XG4mIzQzO0NvbnRyaWJ1dGlvbiBHdWlkZWxpbmVzXG4mIzQzOz09PT09PT09PT09PT09PT09PT09PT09XG4mIzQzO1xuJiM0MzstIFByZWZlciB0aGUgc2hvcnRsb2cgcHJlZml4IGBgdmZpbzogc2VsZnRlc3RzOiAuLi5gYCBmb3IgY29tbWl0cyB0aGF0IG1vZGlmeVxuJiM0MzsgIGZpbGVzIGluIGBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9gYC5cbiYjNDM7LSBGb2xsb3cgdGhlIENvZGluZyBTdHlsZSwgQ29tbWVudHMsIENoYW5nZWxvZ3MsIGFuZCBGdW5jdGlvbiBSZWZlcmVuY2VzXG4mIzQzOyAgZ3VpZGVsaW5lcyBmcm9tIHRoZVxuJiM0MzsgIDpkb2M6YEtWTSB4ODYgbWFpbnRhaW5lcnMgaGFuZGJvb2sgXHUwMDNjL3Byb2Nlc3MvbWFpbnRhaW5lci1rdm0teDg2XHUwMDNlYC5cbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXG5pbmRleCA4MDZiZDJkODBkMTUzLi5iYTE3NGRkOGJhMWI4IDEwMDY0NFxuLS0tIGEvTUFJTlRBSU5FUlNcbiYjNDM7JiM0MzsmIzQzOyBiL01BSU5UQUlORVJTXG5AQCAtMjgzOTYsNiAmIzQzOzI4Mzk2LDcgQEAgVkZJTyBTRUxGVEVTVFNcbiBNOlx0RGF2aWQgTWF0bGFjayBcdTAwM2NkbWF0bGFja0Bnb29nbGUuY29tXHUwMDNlXG4gTDpcdGt2bUB2Z2VyLmtlcm5lbC5vcmdcbiBTOlx0TWFpbnRhaW5lZFxuJiM0MztGOlx0RG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tc2VsZnRlc3RzLnJzdFxuIEY6XHR0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL1xuIFxuIFZGSU8gVklSVElPIFBDSSBEUklWRVJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDowOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgZG9jdW1lbnRhdGlvbiBmb3IgVkZJTyBzZWxmdGVzdHMgKERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3QsIERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9pbmRleC5yc3QpIGFuZCB1cGRhdGVzIHRoZSBNQUlOVEFJTkVSUyBmaWxlLiBObyBrZXJuZWwgZXhlY3V0YWJsZSBjb2RlIG9yIGhlYWRlcnMgYXJlIG1vZGlmaWVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGY2MGEyYTc0YzU4ODliYTIwNzQwZTM5ZDVjYjIzOTRiODE3NjlmMjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IFNlcCA1IDA0OjA5OjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9pbmRleC5yc3QKaW5kZXggZWFmNzE2MWZmOTU3OC4uNjMwZjMzMjg3YmMwYyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvaW5kZXgucnN0CkBAIC00Nyw2ICYjNDM7NDcsNyBAQCBvZiBpbnRlcmVzdCB0byBtb3N0IGRldmVsb3BlcnMgd29ya2luZyBvbiBkZXZpY2UgZHJpdmVycy4KICAgIHZmaW8tbWVkaWF0ZWQtZGV2aWNlCiAgICB2ZmlvCiAgICB2ZmlvLXBjaS1kZXZpY2Utc3BlY2lmaWMtZHJpdmVyLWFjY2VwdGFuY2UKJiM0MzsgICB2ZmlvLXNlbGZ0ZXN0cwogCiBCdXMtbGV2ZWwgZG9jdW1lbnRhdGlvbgogPT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3QgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdmZpby1zZWxmdGVzdHMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjlkMzlhMjI1MTlkNmEKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdmZpby1zZWxmdGVzdHMucnN0CkBAIC0wLDAgJiM0MzsxLDI1MiBAQAomIzQzOy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7CiYjNDM7PT09PT09PT09PT09PT0KJiM0MztWRklPIFNlbGZ0ZXN0cwomIzQzOz09PT09PT09PT09PT09CiYjNDM7CiYjNDM7VkZJTyBzZWxmdGVzdHMgYXJlIGJ1aWx0IG9uIHRvcCBvZiB0aGUga2VybmVsJiMzOTtzIHNlbGZ0ZXN0cyBmcmFtZXdvcmsgYW5kIGFyZQomIzQzO2xvY2F0ZWQgaW4gYGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvYGAuCiYjNDM7CiYjNDM7VkZJTyBzZWxmdGVzdHMgZW5hYmxlIGtlcm5lbCBkZXZlbG9wZXJzIHRvIHdyaXRlIGFuZCBydW4gdGVzdHMgdGhhdCB0YWtlIHRoZQomIzQzO2Zvcm0gb2YgdXNlcnNwYWNlIHByb2dyYW1zIHRoYXQgaW50ZXJhY3Qgd2l0aCBWRklPIGFuZCBJT01NVUZEIHVBUElzLiBWRklPCiYjNDM7c2VsZnRlc3RzIGNhbiBiZSB1c2VkIHRvIHdyaXRlIGZ1bmN0aW9uYWwgdGVzdHMgZm9yIG5ldyBmZWF0dXJlcywgcmVncmVzc2lvbgomIzQzO3Rlc3RzIGZvciBidWdzLCBhbmQgcGVyZm9ybWFuY2UgdGVzdHMgZm9yIG9wdGltaXphdGlvbnMuCiYjNDM7CiYjNDM7VGhlc2UgdGVzdHMgYXJlIGRlc2lnbmVkIHRvIGludGVyYWN0IHdpdGggcmVhbCBQQ0kgZGV2aWNlcywgaS5lLiB0aGV5IGRvIG5vdAomIzQzO3JlbHkgb24gbW9ja2luZyBvdXQgb3IgZmFraW5nIGFueSBiZWhhdmlvciBpbiB0aGUga2VybmVsLiBUaGlzIGFsbG93cyB0aGUgdGVzdHMKJiM0Mzt0byBleGVyY2lzZSBub3Qgb25seSBWRklPIGJ1dCBhbHNvIElPTU1VRkQsIHRoZSBJT01NVSBkcml2ZXIsIGludGVycnVwdAomIzQzO3JlbWFwcGluZywgSVJRIGhhbmRsaW5nLCBldGMuCiYjNDM7CiYjNDM7UnVubmluZyBUZXN0cwomIzQzOz09PT09PT09PT09PT0KJiM0MzsKJiM0MztSdW5uaW5nIFZGSU8gc2VsZnRlc3RzIHJlcXVpcmVzIGEgZGV2aWNlIGJvdW5kIHRvIHRoZSBgYHZmaW8tcGNpYGAgZHJpdmVyLgomIzQzO1RoZXJlIGFyZSBzY3JpcHRzIGluIGBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9zY3JpcHRzL2BgIHRvIGhlbHAgd2l0aAomIzQzO3NldHRpbmcgb25lIHVwLgomIzQzOwomIzQzO1BpY2tpbmcgYSBEZXZpY2UKJiM0MzstLS0tLS0tLS0tLS0tLS0tCiYjNDM7CiYjNDM7U29tZSBWRklPIHNlbGZ0ZXN0cyByZXF1aXJlIGEgZGV2aWNlIHdpdGggYSBzdXBwb3J0ZWQgZHJpdmVyIGltcGxlbWVudGF0aW9uIGluCiYjNDM7dGhlIHNlbGZ0ZXN0cyBsaWJyYXJ5IChzZWUgYERyaXZlciBGcmFtZXdvcmtgXyksIHdoaWxlIG90aGVyIHRlc3RzIChzdWNoIGFzCiYjNDM7YmFzaWMgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2Ugb3IgcmVzZXQgdGVzdHMpIGNhbiB1c2UgYW55IGFyYml0cmFyeSBQQ0kgZGV2aWNlLgomIzQzOwomIzQzO1RoaXMgc2VjdGlvbiB3aWxsIGJlIGV4cGFuZGVkIGluIHRoZSBmdXR1cmUgdG8gZ3VpZGUgZGV2ZWxvcGVycyBvbiBob3cgdG8gZmluZAomIzQzO2EgZGV2aWNlIHdpdGggYSBzdXBwb3J0ZWQgZHJpdmVyLiBJbiB0aGUgbWVhbnRpbWUsIHRoZSBzZWxmdGVzdHMgbGlicmFyeQomIzQzO2luY2x1ZGVzIGRyaXZlciBzdXBwb3J0IGZvciB0aGUgZm9sbG93aW5nIGRldmljZXM6CiYjNDM7CiYjNDM7LSBJbnRlbCBJR0IgR2lnYWJpdCBFdGhlcm5ldCBjb250cm9sbGVycwomIzQzOy0gSW50ZWwgSU9BVCAoSS9PIEFjY2VsZXJhdGlvbiBUZWNobm9sb2d5KSBETUEgZW5naW5lcwomIzQzOy0gSW50ZWwgRFNBIChEYXRhIFN0cmVhbWluZyBBY2NlbGVyYXRvcikKJiM0MzstIE5WSURJQSBGYWxjb24gZW5naW5lcyAoZm91bmQgaW4gbWFueSBOVklESUEgR1BVcywgZS5nLiwgR1RYIDEwODAgb3IgUlRYIDIwODApCiYjNDM7CiYjNDM7Tm90ZSB0aGF0IHVzaW5nIEludGVsIERTQSBkZXZpY2VzIHJlcXVpcmVzIHNldHRpbmcgdGhlIG1vZHVsZSBwYXJhbWV0ZXIKJiM0MztgYHZmaW9fcGNpLmRpc2FibGVfZGVueWxpc3Q9WWBgIHRvIGFsbG93IGBgdmZpby1wY2lgYCB0byBiaW5kIHRvIERTQSBkZXZpY2VzLgomIzQzOwomIzQzO1NldHRpbmcgdXAgRGV2aWNlcwomIzQzOy0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzOy4uIGNvZGUtYmxvY2s6OiBzaAomIzQzOwomIzQzOyAgICB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL3NjcmlwdHMvc2V0dXAuc2ggMDAwMDowMTowMC4wCiYjNDM7CiYjNDM7VGhlIHNjcmlwdCBoYW5kbGVzIHVuYmluZGluZyB0aGUgZGV2aWNlIGZyb20gaXRzIGN1cnJlbnQgZHJpdmVyIGFuZCBiaW5kaW5nIGl0CiYjNDM7dG8gYGB2ZmlvLXBjaWBgLiBNZXRhZGF0YSBhYm91dCB0aGlzIGRldmljZSBpcyBzdG9yZWQgaW4KJiM0MztgYC90bXAvdmZpby1zZWxmdGVzdHMtZGV2aWNlc2BgIHNvIHRoYXQgdGhlIGRldmljZSBjYW4gYmUgY2xlYW5lZCB1cCBsYXRlcgomIzQzOyhib3VuZCBiYWNrIHRvIGl0cyBvcmlnaW5hbCBkcml2ZXIpLgomIzQzOwomIzQzO0V4ZWN1dGlvbgomIzQzOy0tLS0tLS0tLQomIzQzOwomIzQzO1ZGSU8gc2VsZnRlc3RzIGV4cGVjdCB0aGUgUENJIGRldmljZSBCREYgc3RyaW5nIGFzIHRoZWlyIGZpbmFsIGNvbW1hbmQtbGluZQomIzQzO2FyZ3VtZW50LiBlLmcuCiYjNDM7CiYjNDM7Li4gY29kZS1ibG9jazo6IHNoCiYjNDM7CiYjNDM7ICAgIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vdmZpb19wY2lfZGV2aWNlX3Rlc3QgMDAwMDowMTowMC4wCiYjNDM7CiYjNDM7QWx0ZXJuYXRpdmVseSwgdGhlIFBDSSBkZXZpY2UgQkRGIGNhbiBiZSBwYXNzZWQgdmlhIHRoZSBgYFZGSU9fU0VMRlRFU1RTX0JERmBgCiYjNDM7ZW52aXJvbm1lbnQgdmFyaWFibGUsIHdoaWNoIGNhbiBiZSB1c2VmdWwgd2hlbiBydW5uaW5nIGFsbCB0ZXN0czoKJiM0MzsKJiM0MzsuLiBjb2RlLWJsb2NrOjogc2gKJiM0MzsKJiM0MzsJZXhwb3J0IFZGSU9fU0VMRlRFU1RTX0JERj0wMDAwOjAxOjAwLjAKJiM0MzsJbWFrZSAtQyB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cyBUQVJHRVRTPXZmaW8gaW5zdGFsbAomIzQzOwl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rc2VsZnRlc3RfaW5zdGFsbC9ydW5fa3NlbGZ0ZXN0LnNoIC1jIHZmaW8KJiM0MzsKJiM0MztDbGVhbnVwCiYjNDM7LS0tLS0tLQomIzQzOwomIzQzOy4uIGNvZGUtYmxvY2s6OiBzaAomIzQzOwomIzQzOyAgICB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL3NjcmlwdHMvY2xlYW51cC5zaAomIzQzOwomIzQzO1RoaXMgc2NyaXB0IGhhbmRsZXMgdW5iaW5kaW5nIGFsbCBwcmV2aW91c2x5IHNldHVwIGRldmljZXMgZnJvbSBgYHZmaW8tcGNpYGAKJiM0MzthbmQgYmluZGluZyB0aGVtIGJhY2sgdG8gdGhlaXIgb3JpZ2luYWwgZHJpdmVyLiBTcGVjaWZpYyBkZXZpY2VzIGNhbiBiZSBjbGVhbmVkCiYjNDM7dXAgYnkgcGFzc2luZyB0aGVpciBCREYgc3RyaW5nIHRvIHRoZSBjbGVhbnVwIHNjcmlwdC4KJiM0MzsKJiM0MztXcml0aW5nIFRlc3RzCiYjNDM7PT09PT09PT09PT09PQomIzQzOwomIzQzO1ZGSU8gc2VsZnRlc3RzIGxldmVyYWdlIHRoZSBgYGtzZWxmdGVzdF9oYXJuZXNzLmhgYCBtYWNyb3MgdG8gc3RydWN0dXJlIHNldHVwCiYjNDM7YW5kIHRlYXJkb3duIHNjZW5hcmlvcy4gQSBiYXNpYyB0ZXN0IGludm9sdmVzOgomIzQzOwomIzQzOzEuIERlY2xhcmluZyBhIHRlc3QgRklYVFVSRSBjb250YWluaW5nIHRoZSBkZXZpY2UgYW5kIElPTU1VIHN0YXRlLgomIzQzOzIuIEdlbmVyYXRpbmcgdGVzdCB2YXJpYW50cyB0aGF0IHNwYW4gdGhlIGRpZmZlcmVudCBJT01NVSBtb2RlcyB1dGlsaXppbmcKJiM0MzsgICBgYEZJWFRVUkVfVkFSSUFOVF9BRERfQUxMX0lPTU1VX01PREVTKClgYC4KJiM0MzszLiBJbml0aWFsaXppbmcgdGhlIGRldmljZSBhbmQgYmluZGluZyB0aGUgZGVmYXVsdCBkcml2ZXIgb3BzLgomIzQzOwomIzQzO0ZvciBhIGNvbXBsZXRlIGV4YW1wbGUgb2Ygd3JpdGluZyBhIFZGSU8gc2VsZnRlc3QsIHJlZmVyIHRvCiYjNDM7YGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL3ZmaW9fcGNpX2RldmljZV90ZXN0LmNgYC4KJiM0MzsKJiM0MztWRklPIFNlbGZ0ZXN0cyBMaWJyYXJ5IChsaWJ2ZmlvKQomIzQzOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiYjNDM7CiYjNDM7VGhlIHNlbGZ0ZXN0cyBkaXJlY3RvcnkgY29udGFpbnMgYSBoZWxwZXIgbGlicmFyeSBjb21waWxlZCBmcm9tIHRoZSBgYGxpYi9gYAomIzQzO3N1YmRpcmVjdG9yeS4gSXQgcHJvdmlkZXMgc3RydWN0dXJlcyBhbmQgaGVscGVyIGZ1bmN0aW9ucyB0byBoYW5kbGUgc3RhbmRhcmQKJiM0MztvcGVyYXRpb25zIGxpa2Ugb3BlbmluZyBWRklPIGRldmljZXMsIGNyZWF0aW5nIFZGSU8gY29udGFpbmVycywgYW5kIGludGVyYWN0aW5nCiYjNDM7d2l0aCBWRklPIGFuZCBJT01NVUZELgomIzQzOwomIzQzO0FsbCBWRklPIHNlbGZ0ZXN0cyBoYXZlIGxpYnZmaW8gbGlua2VkIGluIGJ5IGRlZmF1bHQuIFRlc3RzIGNhbiBhY2Nlc3MgdGhlCiYjNDM7bGlicmFyeSBieSBpbmNsdWRpbmcgYGAmbHQ7bGlidmZpby5oJmd0O2BgLgomIzQzOwomIzQzO0NvcmUgT2JqZWN0cwomIzQzOy0tLS0tLS0tLS0tLQomIzQzOwomIzQzO1RoZSBWRklPIHNlbGZ0ZXN0cyBmcmFtZXdvcmsgcmV2b2x2ZXMgYXJvdW5kIHR3byBkaXN0aW5jdCBjb3JlIG9iamVjdHM6CiYjNDM7YGBzdHJ1Y3QgaW9tbXVgYCBhbmQgYGBzdHJ1Y3QgdmZpb19wY2lfZGV2aWNlYGAuIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kCiYjNDM7dGhlIGRpc3RpbmN0aW9uIGFuZCByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVtOgomIzQzOwomIzQzOy0gYGBzdHJ1Y3QgaW9tbXVgYCByZXByZXNlbnRzIGFuIElPTU1VIGRvbWFpbiBhbmQgdGhlIEFQSSB1c2VkIHRvIHByb2dyYW0gaXQKJiM0MzsgIChlLmcuIGxlZ2FjeSBWRklPIFR5cGUxIHZzIElPTU1VRkQpLiBJdCBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIEkvTwomIzQzOyAgYWRkcmVzcyBzcGFjZSwgaGFuZGxpbmcgRE1BIG1hcHBpbmdzLCBhbmQgdHJhbnNsYXRpbmcgYmV0d2VlbiBob3N0IHZpcnR1YWwKJiM0MzsgIGFkZHJlc3NlcyAoSFZBKSBhbmQgSU8gdmlydHVhbCBhZGRyZXNzZXMgKElPVkEpLgomIzQzOwomIzQzOy0gYGBzdHJ1Y3QgdmZpb19wY2lfZGV2aWNlYGAgcmVwcmVzZW50cyBhIHNpbmdsZSBQQ0kgZGV2aWNlLiBJdCBlbmNhcHN1bGF0ZXMKJiM0MzsgIHRoZSBWRklPIGRldmljZSBmaWxlIGRlc2NyaXB0b3IsIGhhbmRsZXMgYWNjZXNzIHRvIHRoZSBQQ0kgY29uZmlndXJhdGlvbgomIzQzOyAgc3BhY2UsIG1hbmFnZXMgbWVtb3J5LW1hcHBlZCBCQVJzLCBhbmQgZHJpdmVzIGRldmljZSBpbnRlcnJ1cHRzLgomIzQzOwomIzQzO0EgdHlwaWNhbCB0ZXN0IGluaXRpYWxpemVzIGFuIElPTU1VIGluc3RhbmNlIGZpcnN0LCB0aGVuIHBhc3NlcyBpdCB3aGVuCiYjNDM7aW5pdGlhbGl6aW5nIG9uZSBvciBtb3JlIFBDSSBkZXZpY2VzLCBsaW5raW5nIHRoZSBkZXZpY2VzIHRvIHRoZSBzaGFyZWQgSU9NTVUKJiM0Mztkb21haW4uCiYjNDM7CiYjNDM7YGBzdHJ1Y3QgaW9tbXVgYAomIzQzO15eXl5eXl5eXl5eXl5eXl4KJiM0MzsKJiM0MztUaGUgYGBzdHJ1Y3QgaW9tbXVgYCBhYnN0cmFjdHMgYXdheSB0aGUgY29tcGxleGl0eSBvZiBtYW5hZ2luZyBWRklPIGNvbnRhaW5lcnMsCiYjNDM7SU9NTVUgZ3JvdXBzLCBhbmQgSU9NTVVGRCBjb250ZXh0cy4gQSB0ZXN0IGFsbG9jYXRlcyBpdHMgSU9NTVUgaGFuZGxlIHVzaW5nCiYjNDM7YGBpb21tdV9pbml0KClgYCBwYXNzaW5nIG9uZSBvZiB0aGUgc3VwcG9ydGVkIElPTU1VIG1vZGVzOgomIzQzOwomIzQzOy4uIGNvZGUtYmxvY2s6OiBjCiYjNDM7CiYjNDM7ICAgIHN0cnVjdCBpb21tdSAqaW9tbXUgPSBpb21tdV9pbml0KE1PREVfSU9NTVVGRCk7CiYjNDM7ICAgIC4uLgomIzQzOyAgICBpb21tdV9jbGVhbnVwKGlvbW11KTsKJiM0MzsKJiM0MztUaGUgc2VsZnRlc3QgZnJhbWV3b3JrIGlzIGRlc2lnbmVkIHRvIHdvcmsgdW5pZm9ybWx5IGFjcm9zcyBhbGwgc3RhbmRhcmQga2VybmVsCiYjNDM7SU9NTVUgQVBJcy4gVGhlIGRlZmluZWQgbW9kZXMgKGluIGBgaW9tbXUuaGBgKSBpbmNsdWRlOgomIzQzOwomIzQzOy0gYGBNT0RFX1ZGSU9fVFlQRTFfSU9NTVVgYAomIzQzOy0gYGBNT0RFX1ZGSU9fVFlQRTFWMl9JT01NVWBgCiYjNDM7LSBgYE1PREVfSU9NTVVGRF9DT01QQVRfVFlQRTFgYAomIzQzOy0gYGBNT0RFX0lPTU1VRkRfQ09NUEFUX1RZUEUxVjJgYAomIzQzOy0gYGBNT0RFX0lPTU1VRkRgYAomIzQzOwomIzQzO1ZGSU8gc2VsZnRlc3RzIGNhbiByZXBsaWNhdGUgdGhlaXIgdGVzdCBjYXNlcyBhY3Jvc3MgYWxsIHBvc3NpYmxlIElPTU1VIG1vZGVzCiYjNDM7dXNpbmcgRklYVFVSRV9WQVJJQU5UX0FERF9BTExfSU9NTVVfTU9ERVMoKSB0byBlbnN1cmUga2VybmVsIElPTU1VIEFQSXMgcmVtYWluCiYjNDM7Y29tcGF0aWJsZS4KJiM0MzsKJiM0MztgYHN0cnVjdCB2ZmlvX3BjaV9kZXZpY2VgYAomIzQzO15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiYjNDM7CiYjNDM7QSBQQ0kgZGV2aWNlIGlzIHJlcHJlc2VudGVkIGFzIGEgYGBzdHJ1Y3QgdmZpb19wY2lfZGV2aWNlYGAuIFRoZSBkZXZpY2UKJiM0MztyZXByZXNlbnRhdGlvbiBpcyBpbml0aWFsaXplZCB1c2luZyBgYHZmaW9fcGNpX2RldmljZV9pbml0KClgYCwgd2hpY2ggdGFrZXMgYQomIzQzO3RhcmdldCBCREYgc3RyaW5nLCBvcGVucyB0aGUgZGV2aWNlIGluIFZGSU8sIGFuZCBiaW5kcyBpdCB0byBhbiBleGlzdGluZwomIzQzO2Bgc3RydWN0IGlvbW11YGAgaW5zdGFuY2U6CiYjNDM7CiYjNDM7Li4gY29kZS1ibG9jazo6IGMKJiM0MzsKJiM0MzsgICAgc3RydWN0IHZmaW9fcGNpX2RldmljZSAqZGV2aWNlID0gdmZpb19wY2lfZGV2aWNlX2luaXQoZGV2aWNlX2JkZiwgaW9tbXUpOwomIzQzOyAgICAuLi4KJiM0MzsgICAgdmZpb19wY2lfZGV2aWNlX2NsZWFudXAoZGV2aWNlKTsKJiM0MzsKJiM0MztgYHN0cnVjdCBpb3ZhX2FsbG9jYXRvcmBgCiYjNDM7Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgomIzQzOwomIzQzO1RvIGZhY2lsaXRhdGUgRE1BIG1hcHBpbmdzIHdpdGhvdXQgaGFyZGNvZGluZyBJT1ZBcyAoSU8gdmlydHVhbCBhZGRyZXNzZXMpIHRoYXQKJiM0MzttaWdodCBjb25mbGljdCB3aXRoIHJlc2VydmVkIHBsYXRmb3JtIGFkZHJlc3MgcmFuZ2VzLCB0aGUgbGlicmFyeSBwcm92aWRlcyBhCiYjNDM7YGBzdHJ1Y3QgaW92YV9hbGxvY2F0b3JgYC4KJiM0MzsKJiM0MztUaGUgSU9WQSBhbGxvY2F0b3IgcXVlcmllcyB0aGUgdW5kZXJseWluZyBJT01NVSAodmlhIGBgc3RydWN0IGlvbW11YGApIGZvciBpdHMKJiM0Mzt2YWxpZCB0YXJnZXQgSU9WQSByYW5nZXMuIFRlc3RzIGNhbiBzYWZlbHkgY2FydmUgb3V0IHVuaXF1ZSBjb250aWd1b3VzIGNodW5rcwomIzQzO29mIElPVkEgc3BhY2UgZm9yIGRldmljZSBETUEgYnkgcmVwZWF0ZWRseSBjYWxsaW5nOgomIzQzOwomIzQzOy4uIGNvZGUtYmxvY2s6OiBjCiYjNDM7CiYjNDM7ICAgIHN0cnVjdCBpb3ZhX2FsbG9jYXRvciAqYWxsb2NhdG9yID0gaW92YV9hbGxvY2F0b3JfaW5pdChpb21tdSk7CiYjNDM7ICAgIGlvdmFfdCBhZGRyID0gaW92YV9hbGxvY2F0b3JfYWxsb2MoYWxsb2NhdG9yLCBzaXplKTsKJiM0MzsKJiM0MztEcml2ZXIgRnJhbWV3b3JrCiYjNDM7LS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzO1RoZSBwcmltYXJ5IGdvYWwgb2YgVkZJTyBzZWxmdGVzdHMgaXMgdG8gdmVyaWZ5IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUga2VybmVsCiYjNDM7Y29kZSBoYW5kbGluZyBWRklPIGRldmljZXMsIGluY2x1ZGluZyBWRklPIGNvcmUsIElPTU1VRkQsIElPTU1VIGRyaXZlcnMsIHBhZ2UKJiM0MztwaW5uaW5nLCBETUEgbWFwcGluZy91bm1hcHBpbmcsIGludGVycnVwdCByZW1hcHBpbmcsIGFuZCBJUlEgZGVsaXZlcnkuCiYjNDM7CiYjNDM7QmVjYXVzZSBkaWZmZXJlbnQgcGh5c2ljYWwgZGV2aWNlcyBoYXZlIHZhc3RseSBkaWZmZXJlbnQgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlcwomIzQzO2ZvciB0cmlnZ2VyaW5nIHdvcmssIHRoZSBzZWxmdGVzdHMgbGlicmFyeSBpbXBsZW1lbnRzIGEgc3RhbmRhcmQgZHJpdmVyCiYjNDM7ZnJhbWV3b3JrLiAgVGhpcyBmcmFtZXdvcmsgYWJzdHJhY3RzIGRpdmVyc2UgaGFyZHdhcmUgZW5kcG9pbnRzIChzdWNoIGFzIEludGVsCiYjNDM7SUdCLCBJT0FULCBvciBEU0EpIGJlaGluZCBhIHVuaWZvcm0gaW50ZXJmYWNlLCBhbGxvd2luZyB0ZXN0cyB0byBwcm92b2tlIGEKJiM0Mzticm9hZCByYW5nZSBvZiBkZXZpY2VzIHRvIGdlbmVyYXRlIERNQSBvcGVyYXRpb25zIGFuZCBpbnRlcnJ1cHRzIGluIGEKJiM0MztzdGFuZGFyZGl6ZWQgbWFubmVyLgomIzQzOwomIzQzO0J5IGV4ZXJjaXNpbmcgRE1BIGFuZCBpbnRlcnJ1cHRzIHdpdGggcmVhbCBlbmRwb2ludHMsIHRlc3RzIGNhbiB0aG9yb3VnaGx5CiYjNDM7c3RyZXNzIGFuZCB2YWxpZGF0ZSB0aGUgdW5kZXJseWluZyBrZXJuZWwgcGF0aHMsIHN1Y2ggYXMgSU9NTVUgcGFnZSB0YWJsZQomIzQzO21hbmFnZW1lbnQsIGRpcnR5IHBhZ2UgdHJhY2tpbmcsIERldmljZSBUTEIgYW5kIElPVExCIGludmFsaWRhdGlvbnMsIGFuZAomIzQzO2ludGVycnVwdCBkZWxpdmVyeSB1bmRlciBhdXRoZW50aWMgaGFyZHdhcmUgY29uZGl0aW9ucy4KJiM0MzsKJiM0MztBbGwgZW5kcG9pbnQgZHJpdmVyIGltcGxlbWVudGF0aW9ucyBwb3B1bGF0ZSBhIGNvbW1vbiBzZXQgb2Ygb3BlcmF0aW9ucyBkZWZpbmVkCiYjNDM7aW4gYGBzdHJ1Y3QgdmZpb19wY2lfZHJpdmVyX29wc2BgOgomIzQzOwomIzQzOy0gYGBwcm9iZSgpYGA6IFZhbGlkYXRlIHdoZXRoZXIgdGhlIGRyaXZlciBzdXBwb3J0cyB0aGUgY3VycmVudCBQQ0kgZGV2aWNlCiYjNDM7ICAoZS5nLiBtYXRjaGluZyB2ZW5kb3IvZGV2aWNlIElEcykuCiYjNDM7LSBgYGluaXQoKWBgOiBTZXQgdXAgc3BlY2lmaWMgY29udHJvbCByZWdpc3RlcnMgb3IgcmluZy1idWZmZXIgZGF0YSBzdHJ1Y3R1cmVzLgomIzQzOy0gYGByZW1vdmUoKWBgOiBDbGVhbiB1cCBzdHJ1Y3R1cmVzIGJlZm9yZSBkZXN0cnVjdGlvbi4KJiM0MzstIGBgbWVtY3B5X3N0YXJ0KClgYDogSW5pdGlhdGUgRE1BIGNvcGllcyB2aWEgdGhlIGRldmljZS4KJiM0MzstIGBgbWVtY3B5X3dhaXQoKWBgOiBQb2xsIGFuZCB3YWl0IHVudGlsIHByZXZpb3VzbHkgaW5pdGlhdGVkIGNvcGllcyBjb21wbGV0ZQomIzQzOyAgc2FmZWx5LgomIzQzOy0gYGBzZW5kX21zaSgpYGA6IFByb3Zva2UgdGhlIGRldmljZSB0byBzaWduYWwgYW4gTVNJIGludGVycnVwdC4KJiM0MzsKJiM0MztUZXN0cyBhcmUgcmVxdWlyZWQgdG8gc2V0IHVwIGEgZGVkaWNhdGVkIERNQSByZWdpb24gZm9yIHRoZSBkcml2ZXIgdG8gdXNlCiYjNDM7d2l0aGluIGBgc3RydWN0IHZmaW9fcGNpX2RyaXZlcmBgIHRvIHNlcnZlIGFzIHRoZSBkcml2ZXImIzM5O3MgbWFpbiBtZW1vcnkKJiM0MzthbGxvY2F0aW9uIHJlZ2lvbiAoZS5nLiB1c2VkIGZvciBpbi1tZW1vcnkgZGVzY3JpcHRvciByaW5ncyBhbmQgaGFyZHdhcmUKJiM0MztidWZmZXJzKS4gVGVzdHMgbXVzdCBwcm92aXNpb24gYW5kIG1hcCB0aGlzIERNQSByZWdpb24gYmVmb3JlIGNvbXBsZXRpbmcgZHJpdmVyCiYjNDM7aW5pdGlhbGl6YXRpb24uCiYjNDM7CiYjNDM7Rm9yIGEgY29tcGxldGUgZXhhbXBsZSBvZiBpbnRlcmFjdGluZyB3aXRoIHRoZSBkcml2ZXIgZnJhbWV3b3JrIGZyb20gYSB0ZXN0CiYjNDM7cGVyc3BlY3RpdmUsIHJlZmVyIHRvIGBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby92ZmlvX3BjaV9kcml2ZXJfdGVzdC5jYGAuCiYjNDM7CiYjNDM7V2hlbiBjb250cmlidXRpbmcgYSBuZXcgZHJpdmVyIGltcGxlbWVudGF0aW9uIHRvIHRoZSBzZWxmdGVzdHMgbGlicmFyeSwgdGhlCiYjNDM7cHJpbWFyeSBhY2NlcHRhbmNlIGNyaXRlcmlhIGlzIHRoYXQgYGB2ZmlvX3BjaV9kcml2ZXJfdGVzdGBgIHBhc3NlcyB1c2luZyB0aGUKJiM0MztuZXcgZHJpdmVyIGFuZCB0YXJnZXQgZGV2aWNlLgomIzQzOwomIzQzO0ludGVncmF0aW9uIHdpdGggS1ZNIFNlbGZ0ZXN0cwomIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzO2xpYnZmaW8gaXMgbm90IHN0cmljdGx5IGxpbWl0ZWQgdG8gVkZJTyBzZWxmdGVzdHMsIGl0IGlzIGFsc28gbGV2ZXJhZ2VkIHdpdGhpbgomIzQzO0tWTSBzZWxmdGVzdHMgKGBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2BgKS4gS1ZNIHNlbGZ0ZXN0cyBidWlsZCB0aGVpciBvd24KJiM0Mztjb3B5IG9mIGxpYnZmaW8gYW5kIGxpbmsgYWdhaW5zdCBpdCwgZW5hYmxpbmcgbGlidmZpbyB0byBiZSB1c2VkIGluIEtWTQomIzQzO3NlbGZ0ZXN0cy4KJiM0MzsKJiM0MztUaGlzIGludGVncmF0aW9uIGVuYWJsZXMgdGVzdGluZyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBLVk0gYW5kIFZGSU8gYW5kCiYjNDM7SU9NTVVGRC4gRm9yIGV4YW1wbGUsIHRlc3RpbmcgdGhlIGVuZC10by1lbmQgZGVsaXZlcnkgb2YgZGV2aWNlIGludGVycnVwdHMgaW50bwomIzQzO3J1bm5pbmcgdkNQVXMuCiYjNDM7CiYjNDM7Q29udHJpYnV0aW9uIEd1aWRlbGluZXMKJiM0Mzs9PT09PT09PT09PT09PT09PT09PT09PQomIzQzOwomIzQzOy0gUHJlZmVyIHRoZSBzaG9ydGxvZyBwcmVmaXggYGB2ZmlvOiBzZWxmdGVzdHM6IC4uLmBgIGZvciBjb21taXRzIHRoYXQgbW9kaWZ5CiYjNDM7ICBmaWxlcyBpbiBgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vYGAuCiYjNDM7LSBGb2xsb3cgdGhlIENvZGluZyBTdHlsZSwgQ29tbWVudHMsIENoYW5nZWxvZ3MsIGFuZCBGdW5jdGlvbiBSZWZlcmVuY2VzCiYjNDM7ICBndWlkZWxpbmVzIGZyb20gdGhlCiYjNDM7ICA6ZG9jOmBLVk0geDg2IG1haW50YWluZXJzIGhhbmRib29rICZsdDsvcHJvY2Vzcy9tYWludGFpbmVyLWt2bS14ODYmZ3Q7YC4KZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggODA2YmQyZDgwZDE1My4uYmExNzRkZDhiYTFiOCAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlMKQEAgLTI4Mzk2LDYgJiM0MzsyODM5Niw3IEBAIFZGSU8gU0VMRlRFU1RTCiBNOglEYXZpZCBNYXRsYWNrICZsdDtkbWF0bGFja0Bnb29nbGUuY29tJmd0OwogTDoJa3ZtQHZnZXIua2VybmVsLm9yZwogUzoJTWFpbnRhaW5lZAomIzQzO0Y6CURvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3QKIEY6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vCiAKIFZGSU8gVklSVElPIFBDSSBEUklWRVIKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk3NwoJCQkJCQkJb3V0cHV0OiA4NQoJCQkJCQkJdGhvdWdodHM6IDUwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRGVjaXNpb24gZm9yIFRoaXMgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBsb29rIGF0IHRoZSBkaWZmLiBUaGUgcHJvdmlkZWQgcGF0Y2ggdG91Y2hlcyBgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdGAsIGEgKm5ldyogZmlsZSBgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tc2VsZnRlc3RzLnJzdGAsIGFuZCB0aGUgYE1BSU5UQUlORVJTYCBmaWxlLiBObyBjb21waWxlZCBDIGNvZGUgb3Iga2VybmVsIGhlYWRlcnMgY2hhbmdlZC4KCk5vdywgbGV0JiMzOTtzIGNvbnN1bHQgdGhlIHJ1bGVzLiBTZWN0aW9uIDIsIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBmb3IgYFdvcnRoRnV6emluZ2AsIGlzIHRoZSByZWxldmFudCBzZWN0aW9uIGhlcmUuIEl0IGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgd2Ugc2hvdWxkIHJldHVybiBgZmFsc2VgIGlmICphbGwqIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byBzcGVjaWZpYyBjYXRlZ29yaWVzLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBydWxlcyBtZW50aW9uIGRvY3VtZW50YXRpb24gY2hhbmdlcywgdXNlci1zcGFjZSBzZWxmLXRlc3RzIHRoYXQgZG9uJiMzOTt0IGFmZmVjdCB0aGUga2VybmVsIGltYWdlLCBhbmQgYnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcy4gVGhlIGNoYW5nZXMgaW4gdGhpcyBjb21taXQgYXJlIHNvbGVseSB0byBkb2N1bWVudGF0aW9uIGZpbGVzIGluIGBEb2N1bWVudGF0aW9uL2AgYW5kIHRoZSBgTUFJTlRBSU5FUlNgIGZpbGUuIEl0JiMzOTtzIGFsbCBkb2N1bWVudGF0aW9uIGFuZCBtZXRhZGF0YSEgTm8gZXhlY3V0YWJsZSBDIGxvZ2ljIG9yIGtlcm5lbCBoZWFkZXJzIGludm9sdmVkLiAKCkkmIzM5O2xsIGRvdWJsZS1jaGVjayB0aGF0IG5vIG90aGVyIGZpbGVzIGNoYW5nZWQuIEkmIzM5O3ZlIGFscmVhZHkgY29uZmlybWVkIHRoZSBmaWxlcyBsaXN0ZWQgaW4gdGhlIGluaXRpYWwgcHJvbXB0IGFyZSB0aGUgb25seSBvbmVzIGNoYW5nZWQgZnJvbSB0aGUgYGRpZmZgIGRhdGEuIFNvLCB0aGUgcGF0Y2ggaXMgY29tcGxldGVseSBub24tZXhlY3V0YWJsZSBhbmQganVzdCBkb2N1bWVudGF0aW9uL21ldGFkYXRhIGNoYW5nZXMuCgpUaGVyZWZvcmUsIHRoZSB2ZXJkaWN0IGlzIGNsZWFyOiBgV29ydGhGdXp6aW5nOiBmYWxzZWAuIE5vIGZ1enppbmcgaXMgd2FycmFudGVkIGhlcmUuIEkgY2FuIGFsc28gY29uZmlkZW50bHkgc2V0IGBGb2N1c1N5bWJvbHM6IFtdYCBhbmQgYEVuYWJsZUNvbmZpZ3M6IFtdYCBiZWNhdXNlIHRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgZG9jdW1lbnRhdGlvbi1yZWxhdGVkLiBJIHdpbGwgc3BlY2lmeSBteSByZWFzb25pbmcgYXM6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBkb2N1bWVudGF0aW9uIGZvciBWRklPIHNlbGZ0ZXN0cyAoaW4gRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tc2VsZnRlc3RzLnJzdCBhbmQgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdCkgYW5kIHVwZGF0ZXMgdGhlIE1BSU5UQUlORVJTIGZpbGUuIE5vIGtlcm5lbCBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQuJiMzNDsKCkZpbmFsbHksIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCBjYWxsIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgdG8gcHV0IHRoaXMgY29uY2x1c2lvbiBpbnRvIGFjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBkb2N1bWVudGF0aW9uIGZvciBWRklPIHNlbGZ0ZXN0cyAoRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tc2VsZnRlc3RzLnJzdCwgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdCkgYW5kIHVwZGF0ZXMgdGhlIE1BSU5UQUlORVJTIGZpbGUuIE5vIGtlcm5lbCBleGVjdXRhYmxlIGNvZGUgb3IgaGVhZGVycyBhcmUgbW9kaWZpZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgZG9jdW1lbnRhdGlvbiBmb3IgVkZJTyBzZWxmdGVzdHMgKERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3QsIERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9pbmRleC5yc3QpIGFuZCB1cGRhdGVzIHRoZSBNQUlOVEFJTkVSUyBmaWxlLiBObyBrZXJuZWwgZXhlY3V0YWJsZSBjb2RlIG9yIGhlYWRlcnMgYXJlIG1vZGlmaWVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwNDowOTwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6MDk6MzMuOTI1MzE0NTc3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNjI4NzM1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBkb2N1bWVudGF0aW9uIGZvciBWRklPIHNlbGZ0ZXN0cyAoRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tc2VsZnRlc3RzLnJzdCwgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdCkgYW5kIHVwZGF0ZXMgdGhlIE1BSU5UQUlORVJTIGZpbGUuIE5vIGtlcm5lbCBleGVjdXRhYmxlIGNvZGUgb3IgaGVhZGVycyBhcmUgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDowOTozMy45MjUzMTkxNzdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNzU5OTM4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGY2MGEyYTc0YzU4ODliYTIwNzQwZTM5ZDVjYjIzOTRiODE3NjlmMjBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBTZXAgNSAwNDowOTozMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvaW5kZXgucnN0IGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdFxcbmluZGV4IGVhZjcxNjFmZjk1NzguLjYzMGYzMzI4N2JjMGMgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdFxcbisrKyBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9pbmRleC5yc3RcXG5AQCAtNDcsNiArNDcsNyBAQCBvZiBpbnRlcmVzdCB0byBtb3N0IGRldmVsb3BlcnMgd29ya2luZyBvbiBkZXZpY2UgZHJpdmVycy5cXG4gICAgdmZpby1tZWRpYXRlZC1kZXZpY2VcXG4gICAgdmZpb1xcbiAgICB2ZmlvLXBjaS1kZXZpY2Utc3BlY2lmaWMtZHJpdmVyLWFjY2VwdGFuY2VcXG4rICAgdmZpby1zZWxmdGVzdHNcXG4gXFxuIEJ1cy1sZXZlbCBkb2N1bWVudGF0aW9uXFxuID09PT09PT09PT09PT09PT09PT09PT09XFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3QgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdmZpby1zZWxmdGVzdHMucnN0XFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi45ZDM5YTIyNTE5ZDZhXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3RcXG5AQCAtMCwwICsxLDI1MiBAQFxcbisuLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbitcXG4rPT09PT09PT09PT09PT1cXG4rVkZJTyBTZWxmdGVzdHNcXG4rPT09PT09PT09PT09PT1cXG4rXFxuK1ZGSU8gc2VsZnRlc3RzIGFyZSBidWlsdCBvbiB0b3Agb2YgdGhlIGtlcm5lbCdzIHNlbGZ0ZXN0cyBmcmFtZXdvcmsgYW5kIGFyZVxcbitsb2NhdGVkIGluIGBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpb2BgLlxcbitcXG4rVkZJTyBzZWxmdGVzdHMgZW5hYmxlIGtlcm5lbCBkZXZlbG9wZXJzIHRvIHdyaXRlIGFuZCBydW4gdGVzdHMgdGhhdCB0YWtlIHRoZVxcbitmb3JtIG9mIHVzZXJzcGFjZSBwcm9ncmFtcyB0aGF0IGludGVyYWN0IHdpdGggVkZJTyBhbmQgSU9NTVVGRCB1QVBJcy4gVkZJT1xcbitzZWxmdGVzdHMgY2FuIGJlIHVzZWQgdG8gd3JpdGUgZnVuY3Rpb25hbCB0ZXN0cyBmb3IgbmV3IGZlYXR1cmVzLCByZWdyZXNzaW9uXFxuK3Rlc3RzIGZvciBidWdzLCBhbmQgcGVyZm9ybWFuY2UgdGVzdHMgZm9yIG9wdGltaXphdGlvbnMuXFxuK1xcbitUaGVzZSB0ZXN0cyBhcmUgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aCByZWFsIFBDSSBkZXZpY2VzLCBpLmUuIHRoZXkgZG8gbm90XFxuK3JlbHkgb24gbW9ja2luZyBvdXQgb3IgZmFraW5nIGFueSBiZWhhdmlvciBpbiB0aGUga2VybmVsLiBUaGlzIGFsbG93cyB0aGUgdGVzdHNcXG4rdG8gZXhlcmNpc2Ugbm90IG9ubHkgVkZJTyBidXQgYWxzbyBJT01NVUZELCB0aGUgSU9NTVUgZHJpdmVyLCBpbnRlcnJ1cHRcXG4rcmVtYXBwaW5nLCBJUlEgaGFuZGxpbmcsIGV0Yy5cXG4rXFxuK1J1bm5pbmcgVGVzdHNcXG4rPT09PT09PT09PT09PVxcbitcXG4rUnVubmluZyBWRklPIHNlbGZ0ZXN0cyByZXF1aXJlcyBhIGRldmljZSBib3VuZCB0byB0aGUgYGB2ZmlvLXBjaWBgIGRyaXZlci5cXG4rVGhlcmUgYXJlIHNjcmlwdHMgaW4gYGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL3NjcmlwdHMvYGAgdG8gaGVscCB3aXRoXFxuK3NldHRpbmcgb25lIHVwLlxcbitcXG4rUGlja2luZyBhIERldmljZVxcbistLS0tLS0tLS0tLS0tLS0tXFxuK1xcbitTb21lIFZGSU8gc2VsZnRlc3RzIHJlcXVpcmUgYSBkZXZpY2Ugd2l0aCBhIHN1cHBvcnRlZCBkcml2ZXIgaW1wbGVtZW50YXRpb24gaW5cXG4rdGhlIHNlbGZ0ZXN0cyBsaWJyYXJ5IChzZWUgYERyaXZlciBGcmFtZXdvcmtgXyksIHdoaWxlIG90aGVyIHRlc3RzIChzdWNoIGFzXFxuK2Jhc2ljIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIG9yIHJlc2V0IHRlc3RzKSBjYW4gdXNlIGFueSBhcmJpdHJhcnkgUENJIGRldmljZS5cXG4rXFxuK1RoaXMgc2VjdGlvbiB3aWxsIGJlIGV4cGFuZGVkIGluIHRoZSBmdXR1cmUgdG8gZ3VpZGUgZGV2ZWxvcGVycyBvbiBob3cgdG8gZmluZFxcbithIGRldmljZSB3aXRoIGEgc3VwcG9ydGVkIGRyaXZlci4gSW4gdGhlIG1lYW50aW1lLCB0aGUgc2VsZnRlc3RzIGxpYnJhcnlcXG4raW5jbHVkZXMgZHJpdmVyIHN1cHBvcnQgZm9yIHRoZSBmb2xsb3dpbmcgZGV2aWNlczpcXG4rXFxuKy0gSW50ZWwgSUdCIEdpZ2FiaXQgRXRoZXJuZXQgY29udHJvbGxlcnNcXG4rLSBJbnRlbCBJT0FUIChJL08gQWNjZWxlcmF0aW9uIFRlY2hub2xvZ3kpIERNQSBlbmdpbmVzXFxuKy0gSW50ZWwgRFNBIChEYXRhIFN0cmVhbWluZyBBY2NlbGVyYXRvcilcXG4rLSBOVklESUEgRmFsY29uIGVuZ2luZXMgKGZvdW5kIGluIG1hbnkgTlZJRElBIEdQVXMsIGUuZy4sIEdUWCAxMDgwIG9yIFJUWCAyMDgwKVxcbitcXG4rTm90ZSB0aGF0IHVzaW5nIEludGVsIERTQSBkZXZpY2VzIHJlcXVpcmVzIHNldHRpbmcgdGhlIG1vZHVsZSBwYXJhbWV0ZXJcXG4rYGB2ZmlvX3BjaS5kaXNhYmxlX2RlbnlsaXN0PVlgYCB0byBhbGxvdyBgYHZmaW8tcGNpYGAgdG8gYmluZCB0byBEU0EgZGV2aWNlcy5cXG4rXFxuK1NldHRpbmcgdXAgRGV2aWNlc1xcbistLS0tLS0tLS0tLS0tLS0tLS1cXG4rXFxuKy4uIGNvZGUtYmxvY2s6OiBzaFxcbitcXG4rICAgIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vc2NyaXB0cy9zZXR1cC5zaCAwMDAwOjAxOjAwLjBcXG4rXFxuK1RoZSBzY3JpcHQgaGFuZGxlcyB1bmJpbmRpbmcgdGhlIGRldmljZSBmcm9tIGl0cyBjdXJyZW50IGRyaXZlciBhbmQgYmluZGluZyBpdFxcbit0byBgYHZmaW8tcGNpYGAuIE1ldGFkYXRhIGFib3V0IHRoaXMgZGV2aWNlIGlzIHN0b3JlZCBpblxcbitgYC90bXAvdmZpby1zZWxmdGVzdHMtZGV2aWNlc2BgIHNvIHRoYXQgdGhlIGRldmljZSBjYW4gYmUgY2xlYW5lZCB1cCBsYXRlclxcbisoYm91bmQgYmFjayB0byBpdHMgb3JpZ2luYWwgZHJpdmVyKS5cXG4rXFxuK0V4ZWN1dGlvblxcbistLS0tLS0tLS1cXG4rXFxuK1ZGSU8gc2VsZnRlc3RzIGV4cGVjdCB0aGUgUENJIGRldmljZSBCREYgc3RyaW5nIGFzIHRoZWlyIGZpbmFsIGNvbW1hbmQtbGluZVxcbithcmd1bWVudC4gZS5nLlxcbitcXG4rLi4gY29kZS1ibG9jazo6IHNoXFxuK1xcbisgICAgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby92ZmlvX3BjaV9kZXZpY2VfdGVzdCAwMDAwOjAxOjAwLjBcXG4rXFxuK0FsdGVybmF0aXZlbHksIHRoZSBQQ0kgZGV2aWNlIEJERiBjYW4gYmUgcGFzc2VkIHZpYSB0aGUgYGBWRklPX1NFTEZURVNUU19CREZgYFxcbitlbnZpcm9ubWVudCB2YXJpYWJsZSwgd2hpY2ggY2FuIGJlIHVzZWZ1bCB3aGVuIHJ1bm5pbmcgYWxsIHRlc3RzOlxcbitcXG4rLi4gY29kZS1ibG9jazo6IHNoXFxuK1xcbitcXHRleHBvcnQgVkZJT19TRUxGVEVTVFNfQkRGPTAwMDA6MDE6MDAuMFxcbitcXHRtYWtlIC1DIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzIFRBUkdFVFM9dmZpbyBpbnN0YWxsXFxuK1xcdHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2tzZWxmdGVzdF9pbnN0YWxsL3J1bl9rc2VsZnRlc3Quc2ggLWMgdmZpb1xcbitcXG4rQ2xlYW51cFxcbistLS0tLS0tXFxuK1xcbisuLiBjb2RlLWJsb2NrOjogc2hcXG4rXFxuKyAgICB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL3NjcmlwdHMvY2xlYW51cC5zaFxcbitcXG4rVGhpcyBzY3JpcHQgaGFuZGxlcyB1bmJpbmRpbmcgYWxsIHByZXZpb3VzbHkgc2V0dXAgZGV2aWNlcyBmcm9tIGBgdmZpby1wY2lgYFxcbithbmQgYmluZGluZyB0aGVtIGJhY2sgdG8gdGhlaXIgb3JpZ2luYWwgZHJpdmVyLiBTcGVjaWZpYyBkZXZpY2VzIGNhbiBiZSBjbGVhbmVkXFxuK3VwIGJ5IHBhc3NpbmcgdGhlaXIgQkRGIHN0cmluZyB0byB0aGUgY2xlYW51cCBzY3JpcHQuXFxuK1xcbitXcml0aW5nIFRlc3RzXFxuKz09PT09PT09PT09PT1cXG4rXFxuK1ZGSU8gc2VsZnRlc3RzIGxldmVyYWdlIHRoZSBgYGtzZWxmdGVzdF9oYXJuZXNzLmhgYCBtYWNyb3MgdG8gc3RydWN0dXJlIHNldHVwXFxuK2FuZCB0ZWFyZG93biBzY2VuYXJpb3MuIEEgYmFzaWMgdGVzdCBpbnZvbHZlczpcXG4rXFxuKzEuIERlY2xhcmluZyBhIHRlc3QgRklYVFVSRSBjb250YWluaW5nIHRoZSBkZXZpY2UgYW5kIElPTU1VIHN0YXRlLlxcbisyLiBHZW5lcmF0aW5nIHRlc3QgdmFyaWFudHMgdGhhdCBzcGFuIHRoZSBkaWZmZXJlbnQgSU9NTVUgbW9kZXMgdXRpbGl6aW5nXFxuKyAgIGBgRklYVFVSRV9WQVJJQU5UX0FERF9BTExfSU9NTVVfTU9ERVMoKWBgLlxcbiszLiBJbml0aWFsaXppbmcgdGhlIGRldmljZSBhbmQgYmluZGluZyB0aGUgZGVmYXVsdCBkcml2ZXIgb3BzLlxcbitcXG4rRm9yIGEgY29tcGxldGUgZXhhbXBsZSBvZiB3cml0aW5nIGEgVkZJTyBzZWxmdGVzdCwgcmVmZXIgdG9cXG4rYGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL3ZmaW9fcGNpX2RldmljZV90ZXN0LmNgYC5cXG4rXFxuK1ZGSU8gU2VsZnRlc3RzIExpYnJhcnkgKGxpYnZmaW8pXFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuK1xcbitUaGUgc2VsZnRlc3RzIGRpcmVjdG9yeSBjb250YWlucyBhIGhlbHBlciBsaWJyYXJ5IGNvbXBpbGVkIGZyb20gdGhlIGBgbGliL2BgXFxuK3N1YmRpcmVjdG9yeS4gSXQgcHJvdmlkZXMgc3RydWN0dXJlcyBhbmQgaGVscGVyIGZ1bmN0aW9ucyB0byBoYW5kbGUgc3RhbmRhcmRcXG4rb3BlcmF0aW9ucyBsaWtlIG9wZW5pbmcgVkZJTyBkZXZpY2VzLCBjcmVhdGluZyBWRklPIGNvbnRhaW5lcnMsIGFuZCBpbnRlcmFjdGluZ1xcbit3aXRoIFZGSU8gYW5kIElPTU1VRkQuXFxuK1xcbitBbGwgVkZJTyBzZWxmdGVzdHMgaGF2ZSBsaWJ2ZmlvIGxpbmtlZCBpbiBieSBkZWZhdWx0LiBUZXN0cyBjYW4gYWNjZXNzIHRoZVxcbitsaWJyYXJ5IGJ5IGluY2x1ZGluZyBgYFxcdTAwM2NsaWJ2ZmlvLmhcXHUwMDNlYGAuXFxuK1xcbitDb3JlIE9iamVjdHNcXG4rLS0tLS0tLS0tLS0tXFxuK1xcbitUaGUgVkZJTyBzZWxmdGVzdHMgZnJhbWV3b3JrIHJldm9sdmVzIGFyb3VuZCB0d28gZGlzdGluY3QgY29yZSBvYmplY3RzOlxcbitgYHN0cnVjdCBpb21tdWBgIGFuZCBgYHN0cnVjdCB2ZmlvX3BjaV9kZXZpY2VgYC4gSXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmRcXG4rdGhlIGRpc3RpbmN0aW9uIGFuZCByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVtOlxcbitcXG4rLSBgYHN0cnVjdCBpb21tdWBgIHJlcHJlc2VudHMgYW4gSU9NTVUgZG9tYWluIGFuZCB0aGUgQVBJIHVzZWQgdG8gcHJvZ3JhbSBpdFxcbisgIChlLmcuIGxlZ2FjeSBWRklPIFR5cGUxIHZzIElPTU1VRkQpLiBJdCBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIEkvT1xcbisgIGFkZHJlc3Mgc3BhY2UsIGhhbmRsaW5nIERNQSBtYXBwaW5ncywgYW5kIHRyYW5zbGF0aW5nIGJldHdlZW4gaG9zdCB2aXJ0dWFsXFxuKyAgYWRkcmVzc2VzIChIVkEpIGFuZCBJTyB2aXJ0dWFsIGFkZHJlc3NlcyAoSU9WQSkuXFxuK1xcbistIGBgc3RydWN0IHZmaW9fcGNpX2RldmljZWBgIHJlcHJlc2VudHMgYSBzaW5nbGUgUENJIGRldmljZS4gSXQgZW5jYXBzdWxhdGVzXFxuKyAgdGhlIFZGSU8gZGV2aWNlIGZpbGUgZGVzY3JpcHRvciwgaGFuZGxlcyBhY2Nlc3MgdG8gdGhlIFBDSSBjb25maWd1cmF0aW9uXFxuKyAgc3BhY2UsIG1hbmFnZXMgbWVtb3J5LW1hcHBlZCBCQVJzLCBhbmQgZHJpdmVzIGRldmljZSBpbnRlcnJ1cHRzLlxcbitcXG4rQSB0eXBpY2FsIHRlc3QgaW5pdGlhbGl6ZXMgYW4gSU9NTVUgaW5zdGFuY2UgZmlyc3QsIHRoZW4gcGFzc2VzIGl0IHdoZW5cXG4raW5pdGlhbGl6aW5nIG9uZSBvciBtb3JlIFBDSSBkZXZpY2VzLCBsaW5raW5nIHRoZSBkZXZpY2VzIHRvIHRoZSBzaGFyZWQgSU9NTVVcXG4rZG9tYWluLlxcbitcXG4rYGBzdHJ1Y3QgaW9tbXVgYFxcbiteXl5eXl5eXl5eXl5eXl5eXFxuK1xcbitUaGUgYGBzdHJ1Y3QgaW9tbXVgYCBhYnN0cmFjdHMgYXdheSB0aGUgY29tcGxleGl0eSBvZiBtYW5hZ2luZyBWRklPIGNvbnRhaW5lcnMsXFxuK0lPTU1VIGdyb3VwcywgYW5kIElPTU1VRkQgY29udGV4dHMuIEEgdGVzdCBhbGxvY2F0ZXMgaXRzIElPTU1VIGhhbmRsZSB1c2luZ1xcbitgYGlvbW11X2luaXQoKWBgIHBhc3Npbmcgb25lIG9mIHRoZSBzdXBwb3J0ZWQgSU9NTVUgbW9kZXM6XFxuK1xcbisuLiBjb2RlLWJsb2NrOjogY1xcbitcXG4rICAgIHN0cnVjdCBpb21tdSAqaW9tbXUgPSBpb21tdV9pbml0KE1PREVfSU9NTVVGRCk7XFxuKyAgICAuLi5cXG4rICAgIGlvbW11X2NsZWFudXAoaW9tbXUpO1xcbitcXG4rVGhlIHNlbGZ0ZXN0IGZyYW1ld29yayBpcyBkZXNpZ25lZCB0byB3b3JrIHVuaWZvcm1seSBhY3Jvc3MgYWxsIHN0YW5kYXJkIGtlcm5lbFxcbitJT01NVSBBUElzLiBUaGUgZGVmaW5lZCBtb2RlcyAoaW4gYGBpb21tdS5oYGApIGluY2x1ZGU6XFxuK1xcbistIGBgTU9ERV9WRklPX1RZUEUxX0lPTU1VYGBcXG4rLSBgYE1PREVfVkZJT19UWVBFMVYyX0lPTU1VYGBcXG4rLSBgYE1PREVfSU9NTVVGRF9DT01QQVRfVFlQRTFgYFxcbistIGBgTU9ERV9JT01NVUZEX0NPTVBBVF9UWVBFMVYyYGBcXG4rLSBgYE1PREVfSU9NTVVGRGBgXFxuK1xcbitWRklPIHNlbGZ0ZXN0cyBjYW4gcmVwbGljYXRlIHRoZWlyIHRlc3QgY2FzZXMgYWNyb3NzIGFsbCBwb3NzaWJsZSBJT01NVSBtb2Rlc1xcbit1c2luZyBGSVhUVVJFX1ZBUklBTlRfQUREX0FMTF9JT01NVV9NT0RFUygpIHRvIGVuc3VyZSBrZXJuZWwgSU9NTVUgQVBJcyByZW1haW5cXG4rY29tcGF0aWJsZS5cXG4rXFxuK2Bgc3RydWN0IHZmaW9fcGNpX2RldmljZWBgXFxuK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXFxuK1xcbitBIFBDSSBkZXZpY2UgaXMgcmVwcmVzZW50ZWQgYXMgYSBgYHN0cnVjdCB2ZmlvX3BjaV9kZXZpY2VgYC4gVGhlIGRldmljZVxcbityZXByZXNlbnRhdGlvbiBpcyBpbml0aWFsaXplZCB1c2luZyBgYHZmaW9fcGNpX2RldmljZV9pbml0KClgYCwgd2hpY2ggdGFrZXMgYVxcbit0YXJnZXQgQkRGIHN0cmluZywgb3BlbnMgdGhlIGRldmljZSBpbiBWRklPLCBhbmQgYmluZHMgaXQgdG8gYW4gZXhpc3RpbmdcXG4rYGBzdHJ1Y3QgaW9tbXVgYCBpbnN0YW5jZTpcXG4rXFxuKy4uIGNvZGUtYmxvY2s6OiBjXFxuK1xcbisgICAgc3RydWN0IHZmaW9fcGNpX2RldmljZSAqZGV2aWNlID0gdmZpb19wY2lfZGV2aWNlX2luaXQoZGV2aWNlX2JkZiwgaW9tbXUpO1xcbisgICAgLi4uXFxuKyAgICB2ZmlvX3BjaV9kZXZpY2VfY2xlYW51cChkZXZpY2UpO1xcbitcXG4rYGBzdHJ1Y3QgaW92YV9hbGxvY2F0b3JgYFxcbiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXFxuK1xcbitUbyBmYWNpbGl0YXRlIERNQSBtYXBwaW5ncyB3aXRob3V0IGhhcmRjb2RpbmcgSU9WQXMgKElPIHZpcnR1YWwgYWRkcmVzc2VzKSB0aGF0XFxuK21pZ2h0IGNvbmZsaWN0IHdpdGggcmVzZXJ2ZWQgcGxhdGZvcm0gYWRkcmVzcyByYW5nZXMsIHRoZSBsaWJyYXJ5IHByb3ZpZGVzIGFcXG4rYGBzdHJ1Y3QgaW92YV9hbGxvY2F0b3JgYC5cXG4rXFxuK1RoZSBJT1ZBIGFsbG9jYXRvciBxdWVyaWVzIHRoZSB1bmRlcmx5aW5nIElPTU1VICh2aWEgYGBzdHJ1Y3QgaW9tbXVgYCkgZm9yIGl0c1xcbit2YWxpZCB0YXJnZXQgSU9WQSByYW5nZXMuIFRlc3RzIGNhbiBzYWZlbHkgY2FydmUgb3V0IHVuaXF1ZSBjb250aWd1b3VzIGNodW5rc1xcbitvZiBJT1ZBIHNwYWNlIGZvciBkZXZpY2UgRE1BIGJ5IHJlcGVhdGVkbHkgY2FsbGluZzpcXG4rXFxuKy4uIGNvZGUtYmxvY2s6OiBjXFxuK1xcbisgICAgc3RydWN0IGlvdmFfYWxsb2NhdG9yICphbGxvY2F0b3IgPSBpb3ZhX2FsbG9jYXRvcl9pbml0KGlvbW11KTtcXG4rICAgIGlvdmFfdCBhZGRyID0gaW92YV9hbGxvY2F0b3JfYWxsb2MoYWxsb2NhdG9yLCBzaXplKTtcXG4rXFxuK0RyaXZlciBGcmFtZXdvcmtcXG4rLS0tLS0tLS0tLS0tLS0tLVxcbitcXG4rVGhlIHByaW1hcnkgZ29hbCBvZiBWRklPIHNlbGZ0ZXN0cyBpcyB0byB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSBrZXJuZWxcXG4rY29kZSBoYW5kbGluZyBWRklPIGRldmljZXMsIGluY2x1ZGluZyBWRklPIGNvcmUsIElPTU1VRkQsIElPTU1VIGRyaXZlcnMsIHBhZ2VcXG4rcGlubmluZywgRE1BIG1hcHBpbmcvdW5tYXBwaW5nLCBpbnRlcnJ1cHQgcmVtYXBwaW5nLCBhbmQgSVJRIGRlbGl2ZXJ5LlxcbitcXG4rQmVjYXVzZSBkaWZmZXJlbnQgcGh5c2ljYWwgZGV2aWNlcyBoYXZlIHZhc3RseSBkaWZmZXJlbnQgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlc1xcbitmb3IgdHJpZ2dlcmluZyB3b3JrLCB0aGUgc2VsZnRlc3RzIGxpYnJhcnkgaW1wbGVtZW50cyBhIHN0YW5kYXJkIGRyaXZlclxcbitmcmFtZXdvcmsuICBUaGlzIGZyYW1ld29yayBhYnN0cmFjdHMgZGl2ZXJzZSBoYXJkd2FyZSBlbmRwb2ludHMgKHN1Y2ggYXMgSW50ZWxcXG4rSUdCLCBJT0FULCBvciBEU0EpIGJlaGluZCBhIHVuaWZvcm0gaW50ZXJmYWNlLCBhbGxvd2luZyB0ZXN0cyB0byBwcm92b2tlIGFcXG4rYnJvYWQgcmFuZ2Ugb2YgZGV2aWNlcyB0byBnZW5lcmF0ZSBETUEgb3BlcmF0aW9ucyBhbmQgaW50ZXJydXB0cyBpbiBhXFxuK3N0YW5kYXJkaXplZCBtYW5uZXIuXFxuK1xcbitCeSBleGVyY2lzaW5nIERNQSBhbmQgaW50ZXJydXB0cyB3aXRoIHJlYWwgZW5kcG9pbnRzLCB0ZXN0cyBjYW4gdGhvcm91Z2hseVxcbitzdHJlc3MgYW5kIHZhbGlkYXRlIHRoZSB1bmRlcmx5aW5nIGtlcm5lbCBwYXRocywgc3VjaCBhcyBJT01NVSBwYWdlIHRhYmxlXFxuK21hbmFnZW1lbnQsIGRpcnR5IHBhZ2UgdHJhY2tpbmcsIERldmljZSBUTEIgYW5kIElPVExCIGludmFsaWRhdGlvbnMsIGFuZFxcbitpbnRlcnJ1cHQgZGVsaXZlcnkgdW5kZXIgYXV0aGVudGljIGhhcmR3YXJlIGNvbmRpdGlvbnMuXFxuK1xcbitBbGwgZW5kcG9pbnQgZHJpdmVyIGltcGxlbWVudGF0aW9ucyBwb3B1bGF0ZSBhIGNvbW1vbiBzZXQgb2Ygb3BlcmF0aW9ucyBkZWZpbmVkXFxuK2luIGBgc3RydWN0IHZmaW9fcGNpX2RyaXZlcl9vcHNgYDpcXG4rXFxuKy0gYGBwcm9iZSgpYGA6IFZhbGlkYXRlIHdoZXRoZXIgdGhlIGRyaXZlciBzdXBwb3J0cyB0aGUgY3VycmVudCBQQ0kgZGV2aWNlXFxuKyAgKGUuZy4gbWF0Y2hpbmcgdmVuZG9yL2RldmljZSBJRHMpLlxcbistIGBgaW5pdCgpYGA6IFNldCB1cCBzcGVjaWZpYyBjb250cm9sIHJlZ2lzdGVycyBvciByaW5nLWJ1ZmZlciBkYXRhIHN0cnVjdHVyZXMuXFxuKy0gYGByZW1vdmUoKWBgOiBDbGVhbiB1cCBzdHJ1Y3R1cmVzIGJlZm9yZSBkZXN0cnVjdGlvbi5cXG4rLSBgYG1lbWNweV9zdGFydCgpYGA6IEluaXRpYXRlIERNQSBjb3BpZXMgdmlhIHRoZSBkZXZpY2UuXFxuKy0gYGBtZW1jcHlfd2FpdCgpYGA6IFBvbGwgYW5kIHdhaXQgdW50aWwgcHJldmlvdXNseSBpbml0aWF0ZWQgY29waWVzIGNvbXBsZXRlXFxuKyAgc2FmZWx5LlxcbistIGBgc2VuZF9tc2koKWBgOiBQcm92b2tlIHRoZSBkZXZpY2UgdG8gc2lnbmFsIGFuIE1TSSBpbnRlcnJ1cHQuXFxuK1xcbitUZXN0cyBhcmUgcmVxdWlyZWQgdG8gc2V0IHVwIGEgZGVkaWNhdGVkIERNQSByZWdpb24gZm9yIHRoZSBkcml2ZXIgdG8gdXNlXFxuK3dpdGhpbiBgYHN0cnVjdCB2ZmlvX3BjaV9kcml2ZXJgYCB0byBzZXJ2ZSBhcyB0aGUgZHJpdmVyJ3MgbWFpbiBtZW1vcnlcXG4rYWxsb2NhdGlvbiByZWdpb24gKGUuZy4gdXNlZCBmb3IgaW4tbWVtb3J5IGRlc2NyaXB0b3IgcmluZ3MgYW5kIGhhcmR3YXJlXFxuK2J1ZmZlcnMpLiBUZXN0cyBtdXN0IHByb3Zpc2lvbiBhbmQgbWFwIHRoaXMgRE1BIHJlZ2lvbiBiZWZvcmUgY29tcGxldGluZyBkcml2ZXJcXG4raW5pdGlhbGl6YXRpb24uXFxuK1xcbitGb3IgYSBjb21wbGV0ZSBleGFtcGxlIG9mIGludGVyYWN0aW5nIHdpdGggdGhlIGRyaXZlciBmcmFtZXdvcmsgZnJvbSBhIHRlc3RcXG4rcGVyc3BlY3RpdmUsIHJlZmVyIHRvIGBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby92ZmlvX3BjaV9kcml2ZXJfdGVzdC5jYGAuXFxuK1xcbitXaGVuIGNvbnRyaWJ1dGluZyBhIG5ldyBkcml2ZXIgaW1wbGVtZW50YXRpb24gdG8gdGhlIHNlbGZ0ZXN0cyBsaWJyYXJ5LCB0aGVcXG4rcHJpbWFyeSBhY2NlcHRhbmNlIGNyaXRlcmlhIGlzIHRoYXQgYGB2ZmlvX3BjaV9kcml2ZXJfdGVzdGBgIHBhc3NlcyB1c2luZyB0aGVcXG4rbmV3IGRyaXZlciBhbmQgdGFyZ2V0IGRldmljZS5cXG4rXFxuK0ludGVncmF0aW9uIHdpdGggS1ZNIFNlbGZ0ZXN0c1xcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rXFxuK2xpYnZmaW8gaXMgbm90IHN0cmljdGx5IGxpbWl0ZWQgdG8gVkZJTyBzZWxmdGVzdHMsIGl0IGlzIGFsc28gbGV2ZXJhZ2VkIHdpdGhpblxcbitLVk0gc2VsZnRlc3RzIChgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9gYCkuIEtWTSBzZWxmdGVzdHMgYnVpbGQgdGhlaXIgb3duXFxuK2NvcHkgb2YgbGlidmZpbyBhbmQgbGluayBhZ2FpbnN0IGl0LCBlbmFibGluZyBsaWJ2ZmlvIHRvIGJlIHVzZWQgaW4gS1ZNXFxuK3NlbGZ0ZXN0cy5cXG4rXFxuK1RoaXMgaW50ZWdyYXRpb24gZW5hYmxlcyB0ZXN0aW5nIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIEtWTSBhbmQgVkZJTyBhbmRcXG4rSU9NTVVGRC4gRm9yIGV4YW1wbGUsIHRlc3RpbmcgdGhlIGVuZC10by1lbmQgZGVsaXZlcnkgb2YgZGV2aWNlIGludGVycnVwdHMgaW50b1xcbitydW5uaW5nIHZDUFVzLlxcbitcXG4rQ29udHJpYnV0aW9uIEd1aWRlbGluZXNcXG4rPT09PT09PT09PT09PT09PT09PT09PT1cXG4rXFxuKy0gUHJlZmVyIHRoZSBzaG9ydGxvZyBwcmVmaXggYGB2ZmlvOiBzZWxmdGVzdHM6IC4uLmBgIGZvciBjb21taXRzIHRoYXQgbW9kaWZ5XFxuKyAgZmlsZXMgaW4gYGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL2BgLlxcbistIEZvbGxvdyB0aGUgQ29kaW5nIFN0eWxlLCBDb21tZW50cywgQ2hhbmdlbG9ncywgYW5kIEZ1bmN0aW9uIFJlZmVyZW5jZXNcXG4rICBndWlkZWxpbmVzIGZyb20gdGhlXFxuKyAgOmRvYzpgS1ZNIHg4NiBtYWludGFpbmVycyBoYW5kYm9vayBcXHUwMDNjL3Byb2Nlc3MvbWFpbnRhaW5lci1rdm0teDg2XFx1MDAzZWAuXFxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcXG5pbmRleCA4MDZiZDJkODBkMTUzLi5iYTE3NGRkOGJhMWI4IDEwMDY0NFxcbi0tLSBhL01BSU5UQUlORVJTXFxuKysrIGIvTUFJTlRBSU5FUlNcXG5AQCAtMjgzOTYsNiArMjgzOTYsNyBAQCBWRklPIFNFTEZURVNUU1xcbiBNOlxcdERhdmlkIE1hdGxhY2sgXFx1MDAzY2RtYXRsYWNrQGdvb2dsZS5jb21cXHUwMDNlXFxuIEw6XFx0a3ZtQHZnZXIua2VybmVsLm9yZ1xcbiBTOlxcdE1haW50YWluZWRcXG4rRjpcXHREb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdmZpby1zZWxmdGVzdHMucnN0XFxuIEY6XFx0dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9cXG4gXFxuIFZGSU8gVklSVElPIFBDSSBEUklWRVJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6MDk6MzQuNDQzNTYzMDc1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo0MDA4MDI4OTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgZG9jdW1lbnRhdGlvbiBmb3IgVkZJTyBzZWxmdGVzdHMgKERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3QsIERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9pbmRleC5yc3QpIGFuZCB1cGRhdGVzIHRoZSBNQUlOVEFJTkVSUyBmaWxlLiBObyBrZXJuZWwgZXhlY3V0YWJsZSBjb2RlIG9yIGhlYWRlcnMgYXJlIG1vZGlmaWVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmNjBhMmE3NGM1ODg5YmEyMDc0MGUzOWQ1Y2IyMzk0YjgxNzY5ZjIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAwNDowOTozMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9pbmRleC5yc3QgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvaW5kZXgucnN0XG5pbmRleCBlYWY3MTYxZmY5NTc4Li42MzBmMzMyODdiYzBjIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdFxuQEAgLTQ3LDYgKzQ3LDcgQEAgb2YgaW50ZXJlc3QgdG8gbW9zdCBkZXZlbG9wZXJzIHdvcmtpbmcgb24gZGV2aWNlIGRyaXZlcnMuXG4gICAgdmZpby1tZWRpYXRlZC1kZXZpY2VcbiAgICB2ZmlvXG4gICAgdmZpby1wY2ktZGV2aWNlLXNwZWNpZmljLWRyaXZlci1hY2NlcHRhbmNlXG4rICAgdmZpby1zZWxmdGVzdHNcbiBcbiBCdXMtbGV2ZWwgZG9jdW1lbnRhdGlvblxuID09PT09PT09PT09PT09PT09PT09PT09XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tc2VsZnRlc3RzLnJzdCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3Rcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi45ZDM5YTIyNTE5ZDZhXG4tLS0gL2Rldi9udWxsXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdmZpby1zZWxmdGVzdHMucnN0XG5AQCAtMCwwICsxLDI1MiBAQFxuKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rXG4rPT09PT09PT09PT09PT1cbitWRklPIFNlbGZ0ZXN0c1xuKz09PT09PT09PT09PT09XG4rXG4rVkZJTyBzZWxmdGVzdHMgYXJlIGJ1aWx0IG9uIHRvcCBvZiB0aGUga2VybmVsJ3Mgc2VsZnRlc3RzIGZyYW1ld29yayBhbmQgYXJlXG4rbG9jYXRlZCBpbiBgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW9gYC5cbitcbitWRklPIHNlbGZ0ZXN0cyBlbmFibGUga2VybmVsIGRldmVsb3BlcnMgdG8gd3JpdGUgYW5kIHJ1biB0ZXN0cyB0aGF0IHRha2UgdGhlXG4rZm9ybSBvZiB1c2Vyc3BhY2UgcHJvZ3JhbXMgdGhhdCBpbnRlcmFjdCB3aXRoIFZGSU8gYW5kIElPTU1VRkQgdUFQSXMuIFZGSU9cbitzZWxmdGVzdHMgY2FuIGJlIHVzZWQgdG8gd3JpdGUgZnVuY3Rpb25hbCB0ZXN0cyBmb3IgbmV3IGZlYXR1cmVzLCByZWdyZXNzaW9uXG4rdGVzdHMgZm9yIGJ1Z3MsIGFuZCBwZXJmb3JtYW5jZSB0ZXN0cyBmb3Igb3B0aW1pemF0aW9ucy5cbitcbitUaGVzZSB0ZXN0cyBhcmUgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aCByZWFsIFBDSSBkZXZpY2VzLCBpLmUuIHRoZXkgZG8gbm90XG4rcmVseSBvbiBtb2NraW5nIG91dCBvciBmYWtpbmcgYW55IGJlaGF2aW9yIGluIHRoZSBrZXJuZWwuIFRoaXMgYWxsb3dzIHRoZSB0ZXN0c1xuK3RvIGV4ZXJjaXNlIG5vdCBvbmx5IFZGSU8gYnV0IGFsc28gSU9NTVVGRCwgdGhlIElPTU1VIGRyaXZlciwgaW50ZXJydXB0XG4rcmVtYXBwaW5nLCBJUlEgaGFuZGxpbmcsIGV0Yy5cbitcbitSdW5uaW5nIFRlc3RzXG4rPT09PT09PT09PT09PVxuK1xuK1J1bm5pbmcgVkZJTyBzZWxmdGVzdHMgcmVxdWlyZXMgYSBkZXZpY2UgYm91bmQgdG8gdGhlIGBgdmZpby1wY2lgYCBkcml2ZXIuXG4rVGhlcmUgYXJlIHNjcmlwdHMgaW4gYGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL3NjcmlwdHMvYGAgdG8gaGVscCB3aXRoXG4rc2V0dGluZyBvbmUgdXAuXG4rXG4rUGlja2luZyBhIERldmljZVxuKy0tLS0tLS0tLS0tLS0tLS1cbitcbitTb21lIFZGSU8gc2VsZnRlc3RzIHJlcXVpcmUgYSBkZXZpY2Ugd2l0aCBhIHN1cHBvcnRlZCBkcml2ZXIgaW1wbGVtZW50YXRpb24gaW5cbit0aGUgc2VsZnRlc3RzIGxpYnJhcnkgKHNlZSBgRHJpdmVyIEZyYW1ld29ya2BfKSwgd2hpbGUgb3RoZXIgdGVzdHMgKHN1Y2ggYXNcbitiYXNpYyBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSBvciByZXNldCB0ZXN0cykgY2FuIHVzZSBhbnkgYXJiaXRyYXJ5IFBDSSBkZXZpY2UuXG4rXG4rVGhpcyBzZWN0aW9uIHdpbGwgYmUgZXhwYW5kZWQgaW4gdGhlIGZ1dHVyZSB0byBndWlkZSBkZXZlbG9wZXJzIG9uIGhvdyB0byBmaW5kXG4rYSBkZXZpY2Ugd2l0aCBhIHN1cHBvcnRlZCBkcml2ZXIuIEluIHRoZSBtZWFudGltZSwgdGhlIHNlbGZ0ZXN0cyBsaWJyYXJ5XG4raW5jbHVkZXMgZHJpdmVyIHN1cHBvcnQgZm9yIHRoZSBmb2xsb3dpbmcgZGV2aWNlczpcbitcbistIEludGVsIElHQiBHaWdhYml0IEV0aGVybmV0IGNvbnRyb2xsZXJzXG4rLSBJbnRlbCBJT0FUIChJL08gQWNjZWxlcmF0aW9uIFRlY2hub2xvZ3kpIERNQSBlbmdpbmVzXG4rLSBJbnRlbCBEU0EgKERhdGEgU3RyZWFtaW5nIEFjY2VsZXJhdG9yKVxuKy0gTlZJRElBIEZhbGNvbiBlbmdpbmVzIChmb3VuZCBpbiBtYW55IE5WSURJQSBHUFVzLCBlLmcuLCBHVFggMTA4MCBvciBSVFggMjA4MClcbitcbitOb3RlIHRoYXQgdXNpbmcgSW50ZWwgRFNBIGRldmljZXMgcmVxdWlyZXMgc2V0dGluZyB0aGUgbW9kdWxlIHBhcmFtZXRlclxuK2BgdmZpb19wY2kuZGlzYWJsZV9kZW55bGlzdD1ZYGAgdG8gYWxsb3cgYGB2ZmlvLXBjaWBgIHRvIGJpbmQgdG8gRFNBIGRldmljZXMuXG4rXG4rU2V0dGluZyB1cCBEZXZpY2VzXG4rLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4rLi4gY29kZS1ibG9jazo6IHNoXG4rXG4rICAgIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vc2NyaXB0cy9zZXR1cC5zaCAwMDAwOjAxOjAwLjBcbitcbitUaGUgc2NyaXB0IGhhbmRsZXMgdW5iaW5kaW5nIHRoZSBkZXZpY2UgZnJvbSBpdHMgY3VycmVudCBkcml2ZXIgYW5kIGJpbmRpbmcgaXRcbit0byBgYHZmaW8tcGNpYGAuIE1ldGFkYXRhIGFib3V0IHRoaXMgZGV2aWNlIGlzIHN0b3JlZCBpblxuK2BgL3RtcC92ZmlvLXNlbGZ0ZXN0cy1kZXZpY2VzYGAgc28gdGhhdCB0aGUgZGV2aWNlIGNhbiBiZSBjbGVhbmVkIHVwIGxhdGVyXG4rKGJvdW5kIGJhY2sgdG8gaXRzIG9yaWdpbmFsIGRyaXZlcikuXG4rXG4rRXhlY3V0aW9uXG4rLS0tLS0tLS0tXG4rXG4rVkZJTyBzZWxmdGVzdHMgZXhwZWN0IHRoZSBQQ0kgZGV2aWNlIEJERiBzdHJpbmcgYXMgdGhlaXIgZmluYWwgY29tbWFuZC1saW5lXG4rYXJndW1lbnQuIGUuZy5cbitcbisuLiBjb2RlLWJsb2NrOjogc2hcbitcbisgICAgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby92ZmlvX3BjaV9kZXZpY2VfdGVzdCAwMDAwOjAxOjAwLjBcbitcbitBbHRlcm5hdGl2ZWx5LCB0aGUgUENJIGRldmljZSBCREYgY2FuIGJlIHBhc3NlZCB2aWEgdGhlIGBgVkZJT19TRUxGVEVTVFNfQkRGYGBcbitlbnZpcm9ubWVudCB2YXJpYWJsZSwgd2hpY2ggY2FuIGJlIHVzZWZ1bCB3aGVuIHJ1bm5pbmcgYWxsIHRlc3RzOlxuK1xuKy4uIGNvZGUtYmxvY2s6OiBzaFxuK1xuK1x0ZXhwb3J0IFZGSU9fU0VMRlRFU1RTX0JERj0wMDAwOjAxOjAwLjBcbitcdG1ha2UgLUMgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMgVEFSR0VUUz12ZmlvIGluc3RhbGxcbitcdHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2tzZWxmdGVzdF9pbnN0YWxsL3J1bl9rc2VsZnRlc3Quc2ggLWMgdmZpb1xuK1xuK0NsZWFudXBcbistLS0tLS0tXG4rXG4rLi4gY29kZS1ibG9jazo6IHNoXG4rXG4rICAgIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vc2NyaXB0cy9jbGVhbnVwLnNoXG4rXG4rVGhpcyBzY3JpcHQgaGFuZGxlcyB1bmJpbmRpbmcgYWxsIHByZXZpb3VzbHkgc2V0dXAgZGV2aWNlcyBmcm9tIGBgdmZpby1wY2lgYFxuK2FuZCBiaW5kaW5nIHRoZW0gYmFjayB0byB0aGVpciBvcmlnaW5hbCBkcml2ZXIuIFNwZWNpZmljIGRldmljZXMgY2FuIGJlIGNsZWFuZWRcbit1cCBieSBwYXNzaW5nIHRoZWlyIEJERiBzdHJpbmcgdG8gdGhlIGNsZWFudXAgc2NyaXB0LlxuK1xuK1dyaXRpbmcgVGVzdHNcbis9PT09PT09PT09PT09XG4rXG4rVkZJTyBzZWxmdGVzdHMgbGV2ZXJhZ2UgdGhlIGBga3NlbGZ0ZXN0X2hhcm5lc3MuaGBgIG1hY3JvcyB0byBzdHJ1Y3R1cmUgc2V0dXBcbithbmQgdGVhcmRvd24gc2NlbmFyaW9zLiBBIGJhc2ljIHRlc3QgaW52b2x2ZXM6XG4rXG4rMS4gRGVjbGFyaW5nIGEgdGVzdCBGSVhUVVJFIGNvbnRhaW5pbmcgdGhlIGRldmljZSBhbmQgSU9NTVUgc3RhdGUuXG4rMi4gR2VuZXJhdGluZyB0ZXN0IHZhcmlhbnRzIHRoYXQgc3BhbiB0aGUgZGlmZmVyZW50IElPTU1VIG1vZGVzIHV0aWxpemluZ1xuKyAgIGBgRklYVFVSRV9WQVJJQU5UX0FERF9BTExfSU9NTVVfTU9ERVMoKWBgLlxuKzMuIEluaXRpYWxpemluZyB0aGUgZGV2aWNlIGFuZCBiaW5kaW5nIHRoZSBkZWZhdWx0IGRyaXZlciBvcHMuXG4rXG4rRm9yIGEgY29tcGxldGUgZXhhbXBsZSBvZiB3cml0aW5nIGEgVkZJTyBzZWxmdGVzdCwgcmVmZXIgdG9cbitgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZmaW8vdmZpb19wY2lfZGV2aWNlX3Rlc3QuY2BgLlxuK1xuK1ZGSU8gU2VsZnRlc3RzIExpYnJhcnkgKGxpYnZmaW8pXG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbitcbitUaGUgc2VsZnRlc3RzIGRpcmVjdG9yeSBjb250YWlucyBhIGhlbHBlciBsaWJyYXJ5IGNvbXBpbGVkIGZyb20gdGhlIGBgbGliL2BgXG4rc3ViZGlyZWN0b3J5LiBJdCBwcm92aWRlcyBzdHJ1Y3R1cmVzIGFuZCBoZWxwZXIgZnVuY3Rpb25zIHRvIGhhbmRsZSBzdGFuZGFyZFxuK29wZXJhdGlvbnMgbGlrZSBvcGVuaW5nIFZGSU8gZGV2aWNlcywgY3JlYXRpbmcgVkZJTyBjb250YWluZXJzLCBhbmQgaW50ZXJhY3Rpbmdcbit3aXRoIFZGSU8gYW5kIElPTU1VRkQuXG4rXG4rQWxsIFZGSU8gc2VsZnRlc3RzIGhhdmUgbGlidmZpbyBsaW5rZWQgaW4gYnkgZGVmYXVsdC4gVGVzdHMgY2FuIGFjY2VzcyB0aGVcbitsaWJyYXJ5IGJ5IGluY2x1ZGluZyBgYFx1MDAzY2xpYnZmaW8uaFx1MDAzZWBgLlxuK1xuK0NvcmUgT2JqZWN0c1xuKy0tLS0tLS0tLS0tLVxuK1xuK1RoZSBWRklPIHNlbGZ0ZXN0cyBmcmFtZXdvcmsgcmV2b2x2ZXMgYXJvdW5kIHR3byBkaXN0aW5jdCBjb3JlIG9iamVjdHM6XG4rYGBzdHJ1Y3QgaW9tbXVgYCBhbmQgYGBzdHJ1Y3QgdmZpb19wY2lfZGV2aWNlYGAuIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kXG4rdGhlIGRpc3RpbmN0aW9uIGFuZCByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVtOlxuK1xuKy0gYGBzdHJ1Y3QgaW9tbXVgYCByZXByZXNlbnRzIGFuIElPTU1VIGRvbWFpbiBhbmQgdGhlIEFQSSB1c2VkIHRvIHByb2dyYW0gaXRcbisgIChlLmcuIGxlZ2FjeSBWRklPIFR5cGUxIHZzIElPTU1VRkQpLiBJdCBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIEkvT1xuKyAgYWRkcmVzcyBzcGFjZSwgaGFuZGxpbmcgRE1BIG1hcHBpbmdzLCBhbmQgdHJhbnNsYXRpbmcgYmV0d2VlbiBob3N0IHZpcnR1YWxcbisgIGFkZHJlc3NlcyAoSFZBKSBhbmQgSU8gdmlydHVhbCBhZGRyZXNzZXMgKElPVkEpLlxuK1xuKy0gYGBzdHJ1Y3QgdmZpb19wY2lfZGV2aWNlYGAgcmVwcmVzZW50cyBhIHNpbmdsZSBQQ0kgZGV2aWNlLiBJdCBlbmNhcHN1bGF0ZXNcbisgIHRoZSBWRklPIGRldmljZSBmaWxlIGRlc2NyaXB0b3IsIGhhbmRsZXMgYWNjZXNzIHRvIHRoZSBQQ0kgY29uZmlndXJhdGlvblxuKyAgc3BhY2UsIG1hbmFnZXMgbWVtb3J5LW1hcHBlZCBCQVJzLCBhbmQgZHJpdmVzIGRldmljZSBpbnRlcnJ1cHRzLlxuK1xuK0EgdHlwaWNhbCB0ZXN0IGluaXRpYWxpemVzIGFuIElPTU1VIGluc3RhbmNlIGZpcnN0LCB0aGVuIHBhc3NlcyBpdCB3aGVuXG4raW5pdGlhbGl6aW5nIG9uZSBvciBtb3JlIFBDSSBkZXZpY2VzLCBsaW5raW5nIHRoZSBkZXZpY2VzIHRvIHRoZSBzaGFyZWQgSU9NTVVcbitkb21haW4uXG4rXG4rYGBzdHJ1Y3QgaW9tbXVgYFxuK15eXl5eXl5eXl5eXl5eXl5cbitcbitUaGUgYGBzdHJ1Y3QgaW9tbXVgYCBhYnN0cmFjdHMgYXdheSB0aGUgY29tcGxleGl0eSBvZiBtYW5hZ2luZyBWRklPIGNvbnRhaW5lcnMsXG4rSU9NTVUgZ3JvdXBzLCBhbmQgSU9NTVVGRCBjb250ZXh0cy4gQSB0ZXN0IGFsbG9jYXRlcyBpdHMgSU9NTVUgaGFuZGxlIHVzaW5nXG4rYGBpb21tdV9pbml0KClgYCBwYXNzaW5nIG9uZSBvZiB0aGUgc3VwcG9ydGVkIElPTU1VIG1vZGVzOlxuK1xuKy4uIGNvZGUtYmxvY2s6OiBjXG4rXG4rICAgIHN0cnVjdCBpb21tdSAqaW9tbXUgPSBpb21tdV9pbml0KE1PREVfSU9NTVVGRCk7XG4rICAgIC4uLlxuKyAgICBpb21tdV9jbGVhbnVwKGlvbW11KTtcbitcbitUaGUgc2VsZnRlc3QgZnJhbWV3b3JrIGlzIGRlc2lnbmVkIHRvIHdvcmsgdW5pZm9ybWx5IGFjcm9zcyBhbGwgc3RhbmRhcmQga2VybmVsXG4rSU9NTVUgQVBJcy4gVGhlIGRlZmluZWQgbW9kZXMgKGluIGBgaW9tbXUuaGBgKSBpbmNsdWRlOlxuK1xuKy0gYGBNT0RFX1ZGSU9fVFlQRTFfSU9NTVVgYFxuKy0gYGBNT0RFX1ZGSU9fVFlQRTFWMl9JT01NVWBgXG4rLSBgYE1PREVfSU9NTVVGRF9DT01QQVRfVFlQRTFgYFxuKy0gYGBNT0RFX0lPTU1VRkRfQ09NUEFUX1RZUEUxVjJgYFxuKy0gYGBNT0RFX0lPTU1VRkRgYFxuK1xuK1ZGSU8gc2VsZnRlc3RzIGNhbiByZXBsaWNhdGUgdGhlaXIgdGVzdCBjYXNlcyBhY3Jvc3MgYWxsIHBvc3NpYmxlIElPTU1VIG1vZGVzXG4rdXNpbmcgRklYVFVSRV9WQVJJQU5UX0FERF9BTExfSU9NTVVfTU9ERVMoKSB0byBlbnN1cmUga2VybmVsIElPTU1VIEFQSXMgcmVtYWluXG4rY29tcGF0aWJsZS5cbitcbitgYHN0cnVjdCB2ZmlvX3BjaV9kZXZpY2VgYFxuK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXG4rXG4rQSBQQ0kgZGV2aWNlIGlzIHJlcHJlc2VudGVkIGFzIGEgYGBzdHJ1Y3QgdmZpb19wY2lfZGV2aWNlYGAuIFRoZSBkZXZpY2VcbityZXByZXNlbnRhdGlvbiBpcyBpbml0aWFsaXplZCB1c2luZyBgYHZmaW9fcGNpX2RldmljZV9pbml0KClgYCwgd2hpY2ggdGFrZXMgYVxuK3RhcmdldCBCREYgc3RyaW5nLCBvcGVucyB0aGUgZGV2aWNlIGluIFZGSU8sIGFuZCBiaW5kcyBpdCB0byBhbiBleGlzdGluZ1xuK2Bgc3RydWN0IGlvbW11YGAgaW5zdGFuY2U6XG4rXG4rLi4gY29kZS1ibG9jazo6IGNcbitcbisgICAgc3RydWN0IHZmaW9fcGNpX2RldmljZSAqZGV2aWNlID0gdmZpb19wY2lfZGV2aWNlX2luaXQoZGV2aWNlX2JkZiwgaW9tbXUpO1xuKyAgICAuLi5cbisgICAgdmZpb19wY2lfZGV2aWNlX2NsZWFudXAoZGV2aWNlKTtcbitcbitgYHN0cnVjdCBpb3ZhX2FsbG9jYXRvcmBgXG4rXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXlxuK1xuK1RvIGZhY2lsaXRhdGUgRE1BIG1hcHBpbmdzIHdpdGhvdXQgaGFyZGNvZGluZyBJT1ZBcyAoSU8gdmlydHVhbCBhZGRyZXNzZXMpIHRoYXRcbittaWdodCBjb25mbGljdCB3aXRoIHJlc2VydmVkIHBsYXRmb3JtIGFkZHJlc3MgcmFuZ2VzLCB0aGUgbGlicmFyeSBwcm92aWRlcyBhXG4rYGBzdHJ1Y3QgaW92YV9hbGxvY2F0b3JgYC5cbitcbitUaGUgSU9WQSBhbGxvY2F0b3IgcXVlcmllcyB0aGUgdW5kZXJseWluZyBJT01NVSAodmlhIGBgc3RydWN0IGlvbW11YGApIGZvciBpdHNcbit2YWxpZCB0YXJnZXQgSU9WQSByYW5nZXMuIFRlc3RzIGNhbiBzYWZlbHkgY2FydmUgb3V0IHVuaXF1ZSBjb250aWd1b3VzIGNodW5rc1xuK29mIElPVkEgc3BhY2UgZm9yIGRldmljZSBETUEgYnkgcmVwZWF0ZWRseSBjYWxsaW5nOlxuK1xuKy4uIGNvZGUtYmxvY2s6OiBjXG4rXG4rICAgIHN0cnVjdCBpb3ZhX2FsbG9jYXRvciAqYWxsb2NhdG9yID0gaW92YV9hbGxvY2F0b3JfaW5pdChpb21tdSk7XG4rICAgIGlvdmFfdCBhZGRyID0gaW92YV9hbGxvY2F0b3JfYWxsb2MoYWxsb2NhdG9yLCBzaXplKTtcbitcbitEcml2ZXIgRnJhbWV3b3JrXG4rLS0tLS0tLS0tLS0tLS0tLVxuK1xuK1RoZSBwcmltYXJ5IGdvYWwgb2YgVkZJTyBzZWxmdGVzdHMgaXMgdG8gdmVyaWZ5IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUga2VybmVsXG4rY29kZSBoYW5kbGluZyBWRklPIGRldmljZXMsIGluY2x1ZGluZyBWRklPIGNvcmUsIElPTU1VRkQsIElPTU1VIGRyaXZlcnMsIHBhZ2VcbitwaW5uaW5nLCBETUEgbWFwcGluZy91bm1hcHBpbmcsIGludGVycnVwdCByZW1hcHBpbmcsIGFuZCBJUlEgZGVsaXZlcnkuXG4rXG4rQmVjYXVzZSBkaWZmZXJlbnQgcGh5c2ljYWwgZGV2aWNlcyBoYXZlIHZhc3RseSBkaWZmZXJlbnQgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlc1xuK2ZvciB0cmlnZ2VyaW5nIHdvcmssIHRoZSBzZWxmdGVzdHMgbGlicmFyeSBpbXBsZW1lbnRzIGEgc3RhbmRhcmQgZHJpdmVyXG4rZnJhbWV3b3JrLiAgVGhpcyBmcmFtZXdvcmsgYWJzdHJhY3RzIGRpdmVyc2UgaGFyZHdhcmUgZW5kcG9pbnRzIChzdWNoIGFzIEludGVsXG4rSUdCLCBJT0FULCBvciBEU0EpIGJlaGluZCBhIHVuaWZvcm0gaW50ZXJmYWNlLCBhbGxvd2luZyB0ZXN0cyB0byBwcm92b2tlIGFcbiticm9hZCByYW5nZSBvZiBkZXZpY2VzIHRvIGdlbmVyYXRlIERNQSBvcGVyYXRpb25zIGFuZCBpbnRlcnJ1cHRzIGluIGFcbitzdGFuZGFyZGl6ZWQgbWFubmVyLlxuK1xuK0J5IGV4ZXJjaXNpbmcgRE1BIGFuZCBpbnRlcnJ1cHRzIHdpdGggcmVhbCBlbmRwb2ludHMsIHRlc3RzIGNhbiB0aG9yb3VnaGx5XG4rc3RyZXNzIGFuZCB2YWxpZGF0ZSB0aGUgdW5kZXJseWluZyBrZXJuZWwgcGF0aHMsIHN1Y2ggYXMgSU9NTVUgcGFnZSB0YWJsZVxuK21hbmFnZW1lbnQsIGRpcnR5IHBhZ2UgdHJhY2tpbmcsIERldmljZSBUTEIgYW5kIElPVExCIGludmFsaWRhdGlvbnMsIGFuZFxuK2ludGVycnVwdCBkZWxpdmVyeSB1bmRlciBhdXRoZW50aWMgaGFyZHdhcmUgY29uZGl0aW9ucy5cbitcbitBbGwgZW5kcG9pbnQgZHJpdmVyIGltcGxlbWVudGF0aW9ucyBwb3B1bGF0ZSBhIGNvbW1vbiBzZXQgb2Ygb3BlcmF0aW9ucyBkZWZpbmVkXG4raW4gYGBzdHJ1Y3QgdmZpb19wY2lfZHJpdmVyX29wc2BgOlxuK1xuKy0gYGBwcm9iZSgpYGA6IFZhbGlkYXRlIHdoZXRoZXIgdGhlIGRyaXZlciBzdXBwb3J0cyB0aGUgY3VycmVudCBQQ0kgZGV2aWNlXG4rICAoZS5nLiBtYXRjaGluZyB2ZW5kb3IvZGV2aWNlIElEcykuXG4rLSBgYGluaXQoKWBgOiBTZXQgdXAgc3BlY2lmaWMgY29udHJvbCByZWdpc3RlcnMgb3IgcmluZy1idWZmZXIgZGF0YSBzdHJ1Y3R1cmVzLlxuKy0gYGByZW1vdmUoKWBgOiBDbGVhbiB1cCBzdHJ1Y3R1cmVzIGJlZm9yZSBkZXN0cnVjdGlvbi5cbistIGBgbWVtY3B5X3N0YXJ0KClgYDogSW5pdGlhdGUgRE1BIGNvcGllcyB2aWEgdGhlIGRldmljZS5cbistIGBgbWVtY3B5X3dhaXQoKWBgOiBQb2xsIGFuZCB3YWl0IHVudGlsIHByZXZpb3VzbHkgaW5pdGlhdGVkIGNvcGllcyBjb21wbGV0ZVxuKyAgc2FmZWx5LlxuKy0gYGBzZW5kX21zaSgpYGA6IFByb3Zva2UgdGhlIGRldmljZSB0byBzaWduYWwgYW4gTVNJIGludGVycnVwdC5cbitcbitUZXN0cyBhcmUgcmVxdWlyZWQgdG8gc2V0IHVwIGEgZGVkaWNhdGVkIERNQSByZWdpb24gZm9yIHRoZSBkcml2ZXIgdG8gdXNlXG4rd2l0aGluIGBgc3RydWN0IHZmaW9fcGNpX2RyaXZlcmBgIHRvIHNlcnZlIGFzIHRoZSBkcml2ZXIncyBtYWluIG1lbW9yeVxuK2FsbG9jYXRpb24gcmVnaW9uIChlLmcuIHVzZWQgZm9yIGluLW1lbW9yeSBkZXNjcmlwdG9yIHJpbmdzIGFuZCBoYXJkd2FyZVxuK2J1ZmZlcnMpLiBUZXN0cyBtdXN0IHByb3Zpc2lvbiBhbmQgbWFwIHRoaXMgRE1BIHJlZ2lvbiBiZWZvcmUgY29tcGxldGluZyBkcml2ZXJcbitpbml0aWFsaXphdGlvbi5cbitcbitGb3IgYSBjb21wbGV0ZSBleGFtcGxlIG9mIGludGVyYWN0aW5nIHdpdGggdGhlIGRyaXZlciBmcmFtZXdvcmsgZnJvbSBhIHRlc3RcbitwZXJzcGVjdGl2ZSwgcmVmZXIgdG8gYGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92ZmlvL3ZmaW9fcGNpX2RyaXZlcl90ZXN0LmNgYC5cbitcbitXaGVuIGNvbnRyaWJ1dGluZyBhIG5ldyBkcml2ZXIgaW1wbGVtZW50YXRpb24gdG8gdGhlIHNlbGZ0ZXN0cyBsaWJyYXJ5LCB0aGVcbitwcmltYXJ5IGFjY2VwdGFuY2UgY3JpdGVyaWEgaXMgdGhhdCBgYHZmaW9fcGNpX2RyaXZlcl90ZXN0YGAgcGFzc2VzIHVzaW5nIHRoZVxuK25ldyBkcml2ZXIgYW5kIHRhcmdldCBkZXZpY2UuXG4rXG4rSW50ZWdyYXRpb24gd2l0aCBLVk0gU2VsZnRlc3RzXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4rbGlidmZpbyBpcyBub3Qgc3RyaWN0bHkgbGltaXRlZCB0byBWRklPIHNlbGZ0ZXN0cywgaXQgaXMgYWxzbyBsZXZlcmFnZWQgd2l0aGluXG4rS1ZNIHNlbGZ0ZXN0cyAoYGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYGApLiBLVk0gc2VsZnRlc3RzIGJ1aWxkIHRoZWlyIG93blxuK2NvcHkgb2YgbGlidmZpbyBhbmQgbGluayBhZ2FpbnN0IGl0LCBlbmFibGluZyBsaWJ2ZmlvIHRvIGJlIHVzZWQgaW4gS1ZNXG4rc2VsZnRlc3RzLlxuK1xuK1RoaXMgaW50ZWdyYXRpb24gZW5hYmxlcyB0ZXN0aW5nIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIEtWTSBhbmQgVkZJTyBhbmRcbitJT01NVUZELiBGb3IgZXhhbXBsZSwgdGVzdGluZyB0aGUgZW5kLXRvLWVuZCBkZWxpdmVyeSBvZiBkZXZpY2UgaW50ZXJydXB0cyBpbnRvXG4rcnVubmluZyB2Q1BVcy5cbitcbitDb250cmlidXRpb24gR3VpZGVsaW5lc1xuKz09PT09PT09PT09PT09PT09PT09PT09XG4rXG4rLSBQcmVmZXIgdGhlIHNob3J0bG9nIHByZWZpeCBgYHZmaW86IHNlbGZ0ZXN0czogLi4uYGAgZm9yIGNvbW1pdHMgdGhhdCBtb2RpZnlcbisgIGZpbGVzIGluIGBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9gYC5cbistIEZvbGxvdyB0aGUgQ29kaW5nIFN0eWxlLCBDb21tZW50cywgQ2hhbmdlbG9ncywgYW5kIEZ1bmN0aW9uIFJlZmVyZW5jZXNcbisgIGd1aWRlbGluZXMgZnJvbSB0aGVcbisgIDpkb2M6YEtWTSB4ODYgbWFpbnRhaW5lcnMgaGFuZGJvb2sgXHUwMDNjL3Byb2Nlc3MvbWFpbnRhaW5lci1rdm0teDg2XHUwMDNlYC5cbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXG5pbmRleCA4MDZiZDJkODBkMTUzLi5iYTE3NGRkOGJhMWI4IDEwMDY0NFxuLS0tIGEvTUFJTlRBSU5FUlNcbisrKyBiL01BSU5UQUlORVJTXG5AQCAtMjgzOTYsNiArMjgzOTYsNyBAQCBWRklPIFNFTEZURVNUU1xuIE06XHREYXZpZCBNYXRsYWNrIFx1MDAzY2RtYXRsYWNrQGdvb2dsZS5jb21cdTAwM2VcbiBMOlx0a3ZtQHZnZXIua2VybmVsLm9yZ1xuIFM6XHRNYWludGFpbmVkXG4rRjpcdERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3RcbiBGOlx0dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdmZpby9cbiBcbiBWRklPIFZJUlRJTyBQQ0kgRFJJVkVSXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDowOTozNC40NDM1NjUzMTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MDA3OTk5NjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBEZWNpc2lvbiBmb3IgVGhpcyBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBsb29rIGF0IHRoZSBkaWZmLiBUaGUgcHJvdmlkZWQgcGF0Y2ggdG91Y2hlcyBgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdGAsIGEgKm5ldyogZmlsZSBgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tc2VsZnRlc3RzLnJzdGAsIGFuZCB0aGUgYE1BSU5UQUlORVJTYCBmaWxlLiBObyBjb21waWxlZCBDIGNvZGUgb3Iga2VybmVsIGhlYWRlcnMgY2hhbmdlZC5cblxuTm93LCBsZXQncyBjb25zdWx0IHRoZSBydWxlcy4gU2VjdGlvbiAyLCB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgZm9yIGBXb3J0aEZ1enppbmdgLCBpcyB0aGUgcmVsZXZhbnQgc2VjdGlvbiBoZXJlLiBJdCBleHBsaWNpdGx5IHN0YXRlcyB0aGF0IHdlIHNob3VsZCByZXR1cm4gYGZhbHNlYCBpZiAqYWxsKiBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gc3BlY2lmaWMgY2F0ZWdvcmllcy4gTGV0J3Mgc2VlLi4uIHRoZSBydWxlcyBtZW50aW9uIGRvY3VtZW50YXRpb24gY2hhbmdlcywgdXNlci1zcGFjZSBzZWxmLXRlc3RzIHRoYXQgZG9uJ3QgYWZmZWN0IHRoZSBrZXJuZWwgaW1hZ2UsIGFuZCBidWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzLiBUaGUgY2hhbmdlcyBpbiB0aGlzIGNvbW1pdCBhcmUgc29sZWx5IHRvIGRvY3VtZW50YXRpb24gZmlsZXMgaW4gYERvY3VtZW50YXRpb24vYCBhbmQgdGhlIGBNQUlOVEFJTkVSU2AgZmlsZS4gSXQncyBhbGwgZG9jdW1lbnRhdGlvbiBhbmQgbWV0YWRhdGEhIE5vIGV4ZWN1dGFibGUgQyBsb2dpYyBvciBrZXJuZWwgaGVhZGVycyBpbnZvbHZlZC4gXG5cbkknbGwgZG91YmxlLWNoZWNrIHRoYXQgbm8gb3RoZXIgZmlsZXMgY2hhbmdlZC4gSSd2ZSBhbHJlYWR5IGNvbmZpcm1lZCB0aGUgZmlsZXMgbGlzdGVkIGluIHRoZSBpbml0aWFsIHByb21wdCBhcmUgdGhlIG9ubHkgb25lcyBjaGFuZ2VkIGZyb20gdGhlIGBkaWZmYCBkYXRhLiBTbywgdGhlIHBhdGNoIGlzIGNvbXBsZXRlbHkgbm9uLWV4ZWN1dGFibGUgYW5kIGp1c3QgZG9jdW1lbnRhdGlvbi9tZXRhZGF0YSBjaGFuZ2VzLlxuXG5UaGVyZWZvcmUsIHRoZSB2ZXJkaWN0IGlzIGNsZWFyOiBgV29ydGhGdXp6aW5nOiBmYWxzZWAuIE5vIGZ1enppbmcgaXMgd2FycmFudGVkIGhlcmUuIEkgY2FuIGFsc28gY29uZmlkZW50bHkgc2V0IGBGb2N1c1N5bWJvbHM6IFtdYCBhbmQgYEVuYWJsZUNvbmZpZ3M6IFtdYCBiZWNhdXNlIHRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgZG9jdW1lbnRhdGlvbi1yZWxhdGVkLiBJIHdpbGwgc3BlY2lmeSBteSByZWFzb25pbmcgYXM6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBkb2N1bWVudGF0aW9uIGZvciBWRklPIHNlbGZ0ZXN0cyAoaW4gRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tc2VsZnRlc3RzLnJzdCBhbmQgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdCkgYW5kIHVwZGF0ZXMgdGhlIE1BSU5UQUlORVJTIGZpbGUuIE5vIGtlcm5lbCBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQuXCJcblxuRmluYWxseSwgSSdsbCBnbyBhaGVhZCBhbmQgY2FsbCB0aGUgYHNldC1yZXN1bHRzYCB0b29sIHRvIHB1dCB0aGlzIGNvbmNsdXNpb24gaW50byBhY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NzcsIk91dHB1dFRva2VucyI6ODUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MDIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwNDowOTozOC40NTE1Njc1MThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBkb2N1bWVudGF0aW9uIGZvciBWRklPIHNlbGZ0ZXN0cyAoRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tc2VsZnRlc3RzLnJzdCwgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2luZGV4LnJzdCkgYW5kIHVwZGF0ZXMgdGhlIE1BSU5UQUlORVJTIGZpbGUuIE5vIGtlcm5lbCBleGVjdXRhYmxlIGNvZGUgb3IgaGVhZGVycyBhcmUgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgZG9jdW1lbnRhdGlvbiBmb3IgVkZJTyBzZWxmdGVzdHMgKERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLXNlbGZ0ZXN0cy5yc3QsIERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9pbmRleC5yc3QpIGFuZCB1cGRhdGVzIHRoZSBNQUlOVEFJTkVSUyBmaWxlLiBObyBrZXJuZWwgZXhlY3V0YWJsZSBjb2RlIG9yIGhlYWRlcnMgYXJlIG1vZGlmaWVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDQ6MDk6MzguNDUxNTkzNjM4WiIsIlNlcSI6NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowlq625[1] Phase: Running StartedAt: 2026-09-05 04:10:18 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlq625[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-05 04:10:18 +0000 UTC FinishedAt: 2026-09-05 04:10:23 +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,}