Name: series-workflowskhlp Phase: Failed StartedAt: 2026-08-02 12:29:01 +0000 UTC FinishedAt: 2026-08-02 12:31:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowskhlp[0] Phase: Succeeded StartedAt: 2026-08-02 12:29:01 +0000 UTC FinishedAt: 2026-08-02 12:31:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowskhlp[0].run-triage Phase: Succeeded StartedAt: 2026-08-02 12:29:01 +0000 UTC FinishedAt: 2026-08-02 12:31:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVwbGFjZXMgJWxkIGFuZCBQVFJfRVJSKHgpIHdpdGggJXBlIGFuZCB4IGluIHByaW50ay1saWtlIGZ1bmN0aW9ucyAoZGV2X2VyciwgcHJfZXJyLCBkZXZfZGJnLCB1c2JfZXJyKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlL2xvZ2dpbmcgY2hhbmdlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlNmViY2ZhMGM4ZTcyZTZmODFiZmIyNjc0MmMyZDdjODI3ZDJkNWY3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAxMjozMDo1NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9hdG0vdXNiYXRtLmMgYi9kcml2ZXJzL3VzYi9hdG0vdXNiYXRtLmNcbmluZGV4IDk2MDBlMWVjMDk5MzAuLmM3OGNhYTFiNTdjOWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9hdG0vdXNiYXRtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uY1xuQEAgLTk3OSw4ICYjNDM7OTc5LDggQEAgc3RhdGljIGludCB1c2JhdG1faGVhdnlfaW5pdChzdHJ1Y3QgdXNiYXRtX2RhdGEgKmluc3RhbmNlKVxuIFx0dCA9IGt0aHJlYWRfY3JlYXRlKHVzYmF0bV9kb19oZWF2eV9pbml0LCBpbnN0YW5jZSwgXCYjMzQ7JXNcJiMzNDssXG4gXHRcdFx0aW5zdGFuY2UtXHUwMDNlZHJpdmVyLVx1MDAzZWRyaXZlcl9uYW1lKTtcbiBcdGlmIChJU19FUlIodCkpIHtcbi1cdFx0dXNiX2VycihpbnN0YW5jZSwgXCYjMzQ7JXM6IGZhaWxlZCB0byBjcmVhdGUga2VybmVsX3RocmVhZCAoJWxkKSFcXG5cJiMzNDssXG4tXHRcdFx0XHRfX2Z1bmNfXywgUFRSX0VSUih0KSk7XG4mIzQzO1x0XHR1c2JfZXJyKGluc3RhbmNlLCBcJiMzNDslczogZmFpbGVkIHRvIGNyZWF0ZSBrZXJuZWxfdGhyZWFkICglcGUpIVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRfX2Z1bmNfXywgdCk7XG4gXHRcdHJldHVybiBQVFJfRVJSKHQpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmMgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jXG5pbmRleCA1NmQyYmE4MjRhMGIyLi43YmZlMzdlZDY4YWViIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguY1xuQEAgLTIxOCw4ICYjNDM7MjE4LDggQEAgc3RhdGljIGludCBpbXhfZ2V0X2Nsa3Moc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHRpZiAoSVNfRVJSKGRhdGEtXHUwMDNlY2xrKSkge1xuIFx0XHRcdHJldCA9IFBUUl9FUlIoZGF0YS1cdTAwM2VjbGspO1xuIFx0XHRcdGRldl9lcnIoZGV2LFxuLVx0XHRcdFx0XCYjMzQ7RmFpbGVkIHRvIGdldCBjbGtzLCBlcnI9JWxkLCVsZFxcblwmIzM0Oyxcbi1cdFx0XHRcdFBUUl9FUlIoZGF0YS1cdTAwM2VjbGspLCBQVFJfRVJSKGRhdGEtXHUwMDNlY2xrX2lwZykpO1xuJiM0MztcdFx0XHRcdFwmIzM0O0ZhaWxlZCB0byBnZXQgY2xrcywgZXJyPSVwZSwlcGVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ZGF0YS1cdTAwM2VjbGssIGRhdGEtXHUwMDNlY2xrX2lwZyk7XG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdFx0fVxuIFx0XHQvKiBHZXQgd2FrZXVwIGNsb2NrLiBOb3QgYWxsIG9mIHRoZSBwbGF0Zm9ybXMgbmVlZCB0b1xuQEAgLTQ0OCw4ICYjNDM7NDQ4LDggQEAgc3RhdGljIGludCBjaV9oZHJjX2lteF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRwaW5jdHJsX2hzaWNfaWRsZSA9IHBpbmN0cmxfbG9va3VwX3N0YXRlKGRhdGEtXHUwMDNlcGluY3RybCwgXCYjMzQ7aWRsZVwmIzM0Oyk7XG4gXHRcdGlmIChJU19FUlIocGluY3RybF9oc2ljX2lkbGUpKSB7XG4gXHRcdFx0ZGV2X2VycihkZXYsXG4tXHRcdFx0XHRcJiMzNDtwaW5jdHJsX2hzaWNfaWRsZSBsb29rdXAgZmFpbGVkLCBlcnI9JWxkXFxuXCYjMzQ7LFxuLVx0XHRcdFx0XHRQVFJfRVJSKHBpbmN0cmxfaHNpY19pZGxlKSk7XG4mIzQzO1x0XHRcdFx0XCYjMzQ7cGluY3RybF9oc2ljX2lkbGUgbG9va3VwIGZhaWxlZCwgZXJyPSVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdHBpbmN0cmxfaHNpY19pZGxlKTtcbiBcdFx0XHRyZXQgPSBQVFJfRVJSKHBpbmN0cmxfaHNpY19pZGxlKTtcbiBcdFx0XHRnb3RvIGVycl9wdXQ7XG4gXHRcdH1cbkBAIC00NjQsOCAmIzQzOzQ2NCw4IEBAIHN0YXRpYyBpbnQgY2lfaGRyY19pbXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0XHRcdFx0XHRcdFx0XCYjMzQ7YWN0aXZlXCYjMzQ7KTtcbiBcdFx0aWYgKElTX0VSUihkYXRhLVx1MDAzZXBpbmN0cmxfaHNpY19hY3RpdmUpKSB7XG4gXHRcdFx0ZGV2X2VycihkZXYsXG4tXHRcdFx0XHRcJiMzNDtwaW5jdHJsX2hzaWNfYWN0aXZlIGxvb2t1cCBmYWlsZWQsIGVycj0lbGRcXG5cJiMzNDssXG4tXHRcdFx0XHRcdFBUUl9FUlIoZGF0YS1cdTAwM2VwaW5jdHJsX2hzaWNfYWN0aXZlKSk7XG4mIzQzO1x0XHRcdFx0XCYjMzQ7cGluY3RybF9oc2ljX2FjdGl2ZSBsb29rdXAgZmFpbGVkLCBlcnI9JXBlXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0ZGF0YS1cdTAwM2VwaW5jdHJsX2hzaWNfYWN0aXZlKTtcbiBcdFx0XHRyZXQgPSBQVFJfRVJSKGRhdGEtXHUwMDNlcGluY3RybF9oc2ljX2FjdGl2ZSk7XG4gXHRcdFx0Z290byBlcnJfcHV0O1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jXG5pbmRleCAwNzU2M2JlMDAxM2Y0Li4wOWRiOGE0ZWFjZTIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmNcbkBAIC02ODAsOCAmIzQzOzY4MCw4IEBAIHN0YXRpYyBpbnQgY2lfZ2V0X3BsYXRkYXRhKHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHQvKiBubyB2YnVzIHJlZ3VsYXRvciBpcyBuZWVkZWQgKi9cbiBcdFx0XHRwbGF0ZGF0YS1cdTAwM2VyZWdfdmJ1cyA9IE5VTEw7XG4gXHRcdH0gZWxzZSBpZiAoSVNfRVJSKHBsYXRkYXRhLVx1MDAzZXJlZ192YnVzKSkge1xuLVx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtHZXR0aW5nIHJlZ3VsYXRvciBlcnJvcjogJWxkXFxuXCYjMzQ7LFxuLVx0XHRcdFx0UFRSX0VSUihwbGF0ZGF0YS1cdTAwM2VyZWdfdmJ1cykpO1xuJiM0MztcdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7R2V0dGluZyByZWd1bGF0b3IgZXJyb3I6ICVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRwbGF0ZGF0YS1cdTAwM2VyZWdfdmJ1cyk7XG4gXHRcdFx0cmV0dXJuIFBUUl9FUlIocGxhdGRhdGEtXHUwMDNlcmVnX3ZidXMpO1xuIFx0XHR9XG4gXHRcdC8qIEdldCBUUEwgc3VwcG9ydCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jXG5pbmRleCA1MjYyZTExYzEyY2QzLi44Yzc1MGE5M2MzNTAwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY29yZS9odWIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvY29yZS9odWIuY1xuQEAgLTU2NzEsOCAmIzQzOzU2NzEsNyBAQCBzdGF0aWMgdm9pZCBodWJfcG9ydF9jb25uZWN0X2NoYW5nZShzdHJ1Y3QgdXNiX2h1YiAqaHViLCBpbnQgcG9ydDEsXG4gXHRcdFx0ZGVzY3IgPSB1c2JfZ2V0X2RldmljZV9kZXNjcmlwdG9yKHVkZXYpO1xuIFx0XHRcdGlmIChJU19FUlIoZGVzY3IpKSB7XG4gXHRcdFx0XHRkZXZfZGJnKFx1MDAyNnVkZXYtXHUwMDNlZGV2LFxuLVx0XHRcdFx0XHRcdFwmIzM0O2NhbiYjMzk7dCByZWFkIGRldmljZSBkZXNjcmlwdG9yICVsZFxcblwmIzM0Oyxcbi1cdFx0XHRcdFx0XHRQVFJfRVJSKGRlc2NyKSk7XG4mIzQzO1x0XHRcdFx0XHRcdFwmIzM0O2NhbiYjMzk7dCByZWFkIGRldmljZSBkZXNjcmlwdG9yICVwZVxcblwmIzM0OywgZGVzY3IpO1xuIFx0XHRcdH0gZWxzZSB7XG4gXHRcdFx0XHRpZiAoZGVzY3JpcHRvcnNfY2hhbmdlZCh1ZGV2LCBkZXNjcixcbiBcdFx0XHRcdFx0XHR1ZGV2LVx1MDAzZWJvcykpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jIGIvZHJpdmVycy91c2IvZHdjMi9wY2kuY1xuaW5kZXggZjNhMWU0MjMyYTMxZC4uN2ZmOWM0ZGY5NDFlMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2R3YzIvcGNpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2R3YzIvcGNpLmNcbkBAIC02OCw4ICYjNDM7NjgsNyBAQCBzdGF0aWMgaW50IGR3YzJfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2ksXG4gXG4gXHRwaHkgPSB1c2JfcGh5X2dlbmVyaWNfcmVnaXN0ZXIoKTtcbiBcdGlmIChJU19FUlIocGh5KSkge1xuLVx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7ZXJyb3IgcmVnaXN0ZXJpbmcgZ2VuZXJpYyBQSFkgKCVsZClcXG5cJiMzNDssXG4tXHRcdFx0UFRSX0VSUihwaHkpKTtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtlcnJvciByZWdpc3RlcmluZyBnZW5lcmljIFBIWSAoJXBlKVxcblwmIzM0OywgcGh5KTtcbiBcdFx0cmV0dXJuIFBUUl9FUlIocGh5KTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV9zZXJpYWwuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jXG5pbmRleCBjZGQxZGZjNjY2YzRmLi5kYTMxZTVjZWEwYTU1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jXG5AQCAtMTMxMSw4ICYjNDM7MTMxMSw4IEBAIGludCBnc2VyaWFsX2FsbG9jX2xpbmVfbm9fY29uc29sZSh1bnNpZ25lZCBjaGFyICpsaW5lX251bSlcbiBcdHR0eV9kZXYgPSB0dHlfcG9ydF9yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2cG9ydC1cdTAwM2Vwb3J0LFxuIFx0XHRcdGdzX3R0eV9kcml2ZXIsIHBvcnRfbnVtLCBOVUxMKTtcbiBcdGlmIChJU19FUlIodHR5X2RldikpIHtcbi1cdFx0cHJfZXJyKFwmIzM0OyVzOiBmYWlsZWQgdG8gcmVnaXN0ZXIgdHR5IGZvciBwb3J0ICVkLCBlcnIgJWxkXFxuXCYjMzQ7LFxuLVx0XHRcdFx0X19mdW5jX18sIHBvcnRfbnVtLCBQVFJfRVJSKHR0eV9kZXYpKTtcbiYjNDM7XHRcdHByX2VycihcJiMzNDslczogZmFpbGVkIHRvIHJlZ2lzdGVyIHR0eSBmb3IgcG9ydCAlZCwgZXJyICVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRfX2Z1bmNfXywgcG9ydF9udW0sIHR0eV9kZXYpO1xuIFxuIFx0XHRyZXQgPSBQVFJfRVJSKHR0eV9kZXYpO1xuIFx0XHRtdXRleF9sb2NrKFx1MDAyNnBvcnRzW3BvcnRfbnVtXS5sb2NrKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuYyBiL2RyaXZlcnMvdXNiL21pc2MvdXNiMzUwMy5jXG5pbmRleCA3NTk3NzBhMTMyNjA2Li4xMTYwZGM1OTRiMWMxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL21pc2MvdXNiMzUwMy5jXG5AQCAtMjAyLDggJiM0MzsyMDIsNyBAQCBzdGF0aWMgaW50IHVzYjM1MDNfcHJvYmUoc3RydWN0IHVzYjM1MDMgKmh1YilcbiBcbiBcdFx0aHViLVx1MDAzZWNsayA9IGRldm1fY2xrX2dldF9vcHRpb25hbChkZXYsIFwmIzM0O3JlZmNsa1wmIzM0Oyk7XG4gXHRcdGlmIChJU19FUlIoaHViLVx1MDAzZWNsaykpIHtcbi1cdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7dW5hYmxlIHRvIHJlcXVlc3QgcmVmY2xrICglbGQpXFxuXCYjMzQ7LFxuLVx0XHRcdFx0XHRQVFJfRVJSKGh1Yi1cdTAwM2VjbGspKTtcbiYjNDM7XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O3VuYWJsZSB0byByZXF1ZXN0IHJlZmNsayAoJXBlKVxcblwmIzM0OywgaHViLVx1MDAzZWNsayk7XG4gXHRcdFx0cmV0dXJuIFBUUl9FUlIoaHViLVx1MDAzZWNsayk7XG4gXHRcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy9tdXgvcGkzdXNiMzA1MzIuYyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jXG5pbmRleCA5ODU2ODNmZTQ5ZTkxLi5iMzJmNGM0MzNkZTk1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jXG5AQCAtMTM5LDggJiM0MzsxMzksNyBAQCBzdGF0aWMgaW50IHBpM3VzYjMwNTMyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gXG4gXHRwaS1cdTAwM2VzdyA9IHR5cGVjX3N3aXRjaF9yZWdpc3RlcihkZXYsIFx1MDAyNnN3X2Rlc2MpO1xuIFx0aWYgKElTX0VSUihwaS1cdTAwM2VzdykpIHtcbi1cdFx0ZGV2X2VycihkZXYsIFwmIzM0O0Vycm9yIHJlZ2lzdGVyaW5nIHR5cGVjIHN3aXRjaDogJWxkXFxuXCYjMzQ7LFxuLVx0XHRcdFBUUl9FUlIocGktXHUwMDNlc3cpKTtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtFcnJvciByZWdpc3RlcmluZyB0eXBlYyBzd2l0Y2g6ICVwZVxcblwmIzM0OywgcGktXHUwMDNlc3cpO1xuIFx0XHRyZXR1cm4gUFRSX0VSUihwaS1cdTAwM2Vzdyk7XG4gXHR9XG4gXG5AQCAtMTUxLDggJiM0MzsxNTAsNyBAQCBzdGF0aWMgaW50IHBpM3VzYjMwNTMyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gXHRwaS1cdTAwM2VtdXggPSB0eXBlY19tdXhfcmVnaXN0ZXIoZGV2LCBcdTAwMjZtdXhfZGVzYyk7XG4gXHRpZiAoSVNfRVJSKHBpLVx1MDAzZW11eCkpIHtcbiBcdFx0dHlwZWNfc3dpdGNoX3VucmVnaXN0ZXIocGktXHUwMDNlc3cpO1xuLVx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgbXV4OiAlbGRcXG5cJiMzNDssXG4tXHRcdFx0UFRSX0VSUihwaS1cdTAwM2VtdXgpKTtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtFcnJvciByZWdpc3RlcmluZyB0eXBlYyBtdXg6ICVwZVxcblwmIzM0OywgcGktXHUwMDNlbXV4KTtcbiBcdFx0cmV0dXJuIFBUUl9FUlIocGktXHUwMDNlbXV4KTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uYyBiL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jXG5pbmRleCA4OWVlYzIwYTIwNjRjLi5hZDEwNDcwZWE3M2IwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jXG5AQCAtNDc5Niw3ICYjNDM7NDc5Niw3IEBAIHN0YXRpYyB2b2lkIHRjcG1fdHlwZWNfY29ubmVjdChzdHJ1Y3QgdGNwbV9wb3J0ICpwb3J0KVxuIFx0XHRcdHBvcnQtXHUwMDNlcGFydG5lcl9kZXNjLmFjY2Vzc29yeSA9IFRZUEVDX0FDQ0VTU09SWV9OT05FO1xuIFx0XHRwYXJ0bmVyID0gdHlwZWNfcmVnaXN0ZXJfcGFydG5lcihwb3J0LVx1MDAzZXR5cGVjX3BvcnQsIFx1MDAyNnBvcnQtXHUwMDNlcGFydG5lcl9kZXNjKTtcbiBcdFx0aWYgKElTX0VSUihwYXJ0bmVyKSkge1xuLVx0XHRcdGRldl9lcnIocG9ydC1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBwYXJ0bmVyICglbGQpXFxuXCYjMzQ7LCBQVFJfRVJSKHBhcnRuZXIpKTtcbiYjNDM7XHRcdFx0ZGV2X2Vycihwb3J0LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIHBhcnRuZXIgKCVwZSlcXG5cJiMzNDssIHBhcnRuZXIpO1xuIFx0XHRcdHJldHVybjtcbiBcdFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmMgYi9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jXG5pbmRleCA2MDYyODc1ZmIwNGE5Li44NmQxM2FiNDE2NzA0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuY1xuQEAgLTI3Nyw4ICYjNDM7Mjc3LDggQEAgc3RhdGljIHZvaWQgd3VzYjM4MDFfaHdfdXBkYXRlKHN0cnVjdCB3dXNiMzgwMSAqd3VzYjM4MDEpXG4gXHRcdGlmIChwYXJ0bmVyX3R5cGUgIT0gV1VTQjM4MDFfU1RBVF9QQVJUTkVSX1NUQU5EQlkpIHtcbiBcdFx0XHR3dXNiMzgwMS1cdTAwM2VwYXJ0bmVyID0gdHlwZWNfcmVnaXN0ZXJfcGFydG5lcihwb3J0LCBcdTAwMjZkZXNjKTtcbiBcdFx0XHRpZiAoSVNfRVJSKHd1c2IzODAxLVx1MDAzZXBhcnRuZXIpKVxuLVx0XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBwYXJ0bmVyOiAlbGRcXG5cJiMzNDssXG4tXHRcdFx0XHRcdFBUUl9FUlIod3VzYjM4MDEtXHUwMDNlcGFydG5lcikpO1xuJiM0MztcdFx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lcjogJXBlXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0d3VzYjM4MDEtXHUwMDNlcGFydG5lcik7XG4gXHRcdH1cbiBcbiBcdFx0ZGF0YV9yb2xlID0gcHdyX3JvbGUgPT0gVFlQRUNfU09VUkNFID8gVFlQRUNfSE9TVCA6IFRZUEVDX0RFVklDRTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSByZXBsYWNlcyAlbGQgYW5kIFBUUl9FUlIoeCkgd2l0aCAlcGUgYW5kIHggaW4gcHJpbnRrLWxpa2UgZnVuY3Rpb25zIChkZXZfZXJyLCBwcl9lcnIsIGRldl9kYmcsIHVzYl9lcnIpLiBUaGlzIGlzIGEgcHVyZWx5IGRlY29yYXRpdmUvbG9nZ2luZyBjaGFuZ2UgYW5kIGRvZXMgbm90IGFsdGVyIGFueSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGU2ZWJjZmEwYzhlNzJlNmY4MWJmYjI2NzQyYzJkN2M4MjdkMmQ1ZjcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyAyIDEyOjMwOjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jIGIvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jCmluZGV4IDk2MDBlMWVjMDk5MzAuLmM3OGNhYTFiNTdjOWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9hdG0vdXNiYXRtLmMKQEAgLTk3OSw4ICYjNDM7OTc5LDggQEAgc3RhdGljIGludCB1c2JhdG1faGVhdnlfaW5pdChzdHJ1Y3QgdXNiYXRtX2RhdGEgKmluc3RhbmNlKQogCXQgPSBrdGhyZWFkX2NyZWF0ZSh1c2JhdG1fZG9faGVhdnlfaW5pdCwgaW5zdGFuY2UsICYjMzQ7JXMmIzM0OywKIAkJCWluc3RhbmNlLSZndDtkcml2ZXItJmd0O2RyaXZlcl9uYW1lKTsKIAlpZiAoSVNfRVJSKHQpKSB7Ci0JCXVzYl9lcnIoaW5zdGFuY2UsICYjMzQ7JXM6IGZhaWxlZCB0byBjcmVhdGUga2VybmVsX3RocmVhZCAoJWxkKSFcbiYjMzQ7LAotCQkJCV9fZnVuY19fLCBQVFJfRVJSKHQpKTsKJiM0MzsJCXVzYl9lcnIoaW5zdGFuY2UsICYjMzQ7JXM6IGZhaWxlZCB0byBjcmVhdGUga2VybmVsX3RocmVhZCAoJXBlKSFcbiYjMzQ7LAomIzQzOwkJCQlfX2Z1bmNfXywgdCk7CiAJCXJldHVybiBQVFJfRVJSKHQpOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguYyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmMKaW5kZXggNTZkMmJhODI0YTBiMi4uN2JmZTM3ZWQ2OGFlYiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jCkBAIC0yMTgsOCAmIzQzOzIxOCw4IEBAIHN0YXRpYyBpbnQgaW14X2dldF9jbGtzKHN0cnVjdCBkZXZpY2UgKmRldikKIAkJaWYgKElTX0VSUihkYXRhLSZndDtjbGspKSB7CiAJCQlyZXQgPSBQVFJfRVJSKGRhdGEtJmd0O2Nsayk7CiAJCQlkZXZfZXJyKGRldiwKLQkJCQkmIzM0O0ZhaWxlZCB0byBnZXQgY2xrcywgZXJyPSVsZCwlbGRcbiYjMzQ7LAotCQkJCVBUUl9FUlIoZGF0YS0mZ3Q7Y2xrKSwgUFRSX0VSUihkYXRhLSZndDtjbGtfaXBnKSk7CiYjNDM7CQkJCSYjMzQ7RmFpbGVkIHRvIGdldCBjbGtzLCBlcnI9JXBlLCVwZVxuJiMzNDssCiYjNDM7CQkJCWRhdGEtJmd0O2NsaywgZGF0YS0mZ3Q7Y2xrX2lwZyk7CiAJCQlyZXR1cm4gcmV0OwogCQl9CiAJCS8qIEdldCB3YWtldXAgY2xvY2suIE5vdCBhbGwgb2YgdGhlIHBsYXRmb3JtcyBuZWVkIHRvCkBAIC00NDgsOCAmIzQzOzQ0OCw4IEBAIHN0YXRpYyBpbnQgY2lfaGRyY19pbXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJcGluY3RybF9oc2ljX2lkbGUgPSBwaW5jdHJsX2xvb2t1cF9zdGF0ZShkYXRhLSZndDtwaW5jdHJsLCAmIzM0O2lkbGUmIzM0Oyk7CiAJCWlmIChJU19FUlIocGluY3RybF9oc2ljX2lkbGUpKSB7CiAJCQlkZXZfZXJyKGRldiwKLQkJCQkmIzM0O3BpbmN0cmxfaHNpY19pZGxlIGxvb2t1cCBmYWlsZWQsIGVycj0lbGRcbiYjMzQ7LAotCQkJCQlQVFJfRVJSKHBpbmN0cmxfaHNpY19pZGxlKSk7CiYjNDM7CQkJCSYjMzQ7cGluY3RybF9oc2ljX2lkbGUgbG9va3VwIGZhaWxlZCwgZXJyPSVwZVxuJiMzNDssCiYjNDM7CQkJCQlwaW5jdHJsX2hzaWNfaWRsZSk7CiAJCQlyZXQgPSBQVFJfRVJSKHBpbmN0cmxfaHNpY19pZGxlKTsKIAkJCWdvdG8gZXJyX3B1dDsKIAkJfQpAQCAtNDY0LDggJiM0Mzs0NjQsOCBAQCBzdGF0aWMgaW50IGNpX2hkcmNfaW14X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCQkJCQkJCSYjMzQ7YWN0aXZlJiMzNDspOwogCQlpZiAoSVNfRVJSKGRhdGEtJmd0O3BpbmN0cmxfaHNpY19hY3RpdmUpKSB7CiAJCQlkZXZfZXJyKGRldiwKLQkJCQkmIzM0O3BpbmN0cmxfaHNpY19hY3RpdmUgbG9va3VwIGZhaWxlZCwgZXJyPSVsZFxuJiMzNDssCi0JCQkJCVBUUl9FUlIoZGF0YS0mZ3Q7cGluY3RybF9oc2ljX2FjdGl2ZSkpOwomIzQzOwkJCQkmIzM0O3BpbmN0cmxfaHNpY19hY3RpdmUgbG9va3VwIGZhaWxlZCwgZXJyPSVwZVxuJiMzNDssCiYjNDM7CQkJCQlkYXRhLSZndDtwaW5jdHJsX2hzaWNfYWN0aXZlKTsKIAkJCXJldCA9IFBUUl9FUlIoZGF0YS0mZ3Q7cGluY3RybF9oc2ljX2FjdGl2ZSk7CiAJCQlnb3RvIGVycl9wdXQ7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NvcmUuYyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NvcmUuYwppbmRleCAwNzU2M2JlMDAxM2Y0Li4wOWRiOGE0ZWFjZTIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jCkBAIC02ODAsOCAmIzQzOzY4MCw4IEBAIHN0YXRpYyBpbnQgY2lfZ2V0X3BsYXRkYXRhKHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJCS8qIG5vIHZidXMgcmVndWxhdG9yIGlzIG5lZWRlZCAqLwogCQkJcGxhdGRhdGEtJmd0O3JlZ192YnVzID0gTlVMTDsKIAkJfSBlbHNlIGlmIChJU19FUlIocGxhdGRhdGEtJmd0O3JlZ192YnVzKSkgewotCQkJZGV2X2VycihkZXYsICYjMzQ7R2V0dGluZyByZWd1bGF0b3IgZXJyb3I6ICVsZFxuJiMzNDssCi0JCQkJUFRSX0VSUihwbGF0ZGF0YS0mZ3Q7cmVnX3ZidXMpKTsKJiM0MzsJCQlkZXZfZXJyKGRldiwgJiMzNDtHZXR0aW5nIHJlZ3VsYXRvciBlcnJvcjogJXBlXG4mIzM0OywKJiM0MzsJCQkJcGxhdGRhdGEtJmd0O3JlZ192YnVzKTsKIAkJCXJldHVybiBQVFJfRVJSKHBsYXRkYXRhLSZndDtyZWdfdmJ1cyk7CiAJCX0KIAkJLyogR2V0IFRQTCBzdXBwb3J0ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jIGIvZHJpdmVycy91c2IvY29yZS9odWIuYwppbmRleCA1MjYyZTExYzEyY2QzLi44Yzc1MGE5M2MzNTAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMKQEAgLTU2NzEsOCAmIzQzOzU2NzEsNyBAQCBzdGF0aWMgdm9pZCBodWJfcG9ydF9jb25uZWN0X2NoYW5nZShzdHJ1Y3QgdXNiX2h1YiAqaHViLCBpbnQgcG9ydDEsCiAJCQlkZXNjciA9IHVzYl9nZXRfZGV2aWNlX2Rlc2NyaXB0b3IodWRldik7CiAJCQlpZiAoSVNfRVJSKGRlc2NyKSkgewogCQkJCWRldl9kYmcoJmFtcDt1ZGV2LSZndDtkZXYsCi0JCQkJCQkmIzM0O2NhbiYjMzk7dCByZWFkIGRldmljZSBkZXNjcmlwdG9yICVsZFxuJiMzNDssCi0JCQkJCQlQVFJfRVJSKGRlc2NyKSk7CiYjNDM7CQkJCQkJJiMzNDtjYW4mIzM5O3QgcmVhZCBkZXZpY2UgZGVzY3JpcHRvciAlcGVcbiYjMzQ7LCBkZXNjcik7CiAJCQl9IGVsc2UgewogCQkJCWlmIChkZXNjcmlwdG9yc19jaGFuZ2VkKHVkZXYsIGRlc2NyLAogCQkJCQkJdWRldi0mZ3Q7Ym9zKSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZHdjMi9wY2kuYyBiL2RyaXZlcnMvdXNiL2R3YzIvcGNpLmMKaW5kZXggZjNhMWU0MjMyYTMxZC4uN2ZmOWM0ZGY5NDFlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZHdjMi9wY2kuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jCkBAIC02OCw4ICYjNDM7NjgsNyBAQCBzdGF0aWMgaW50IGR3YzJfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2ksCiAKIAlwaHkgPSB1c2JfcGh5X2dlbmVyaWNfcmVnaXN0ZXIoKTsKIAlpZiAoSVNfRVJSKHBoeSkpIHsKLQkJZGV2X2VycihkZXYsICYjMzQ7ZXJyb3IgcmVnaXN0ZXJpbmcgZ2VuZXJpYyBQSFkgKCVsZClcbiYjMzQ7LAotCQkJUFRSX0VSUihwaHkpKTsKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O2Vycm9yIHJlZ2lzdGVyaW5nIGdlbmVyaWMgUEhZICglcGUpXG4mIzM0OywgcGh5KTsKIAkJcmV0dXJuIFBUUl9FUlIocGh5KTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmMKaW5kZXggY2RkMWRmYzY2NmM0Zi4uZGEzMWU1Y2VhMGE1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmMKQEAgLTEzMTEsOCAmIzQzOzEzMTEsOCBAQCBpbnQgZ3NlcmlhbF9hbGxvY19saW5lX25vX2NvbnNvbGUodW5zaWduZWQgY2hhciAqbGluZV9udW0pCiAJdHR5X2RldiA9IHR0eV9wb3J0X3JlZ2lzdGVyX2RldmljZSgmYW1wO3BvcnQtJmd0O3BvcnQsCiAJCQlnc190dHlfZHJpdmVyLCBwb3J0X251bSwgTlVMTCk7CiAJaWYgKElTX0VSUih0dHlfZGV2KSkgewotCQlwcl9lcnIoJiMzNDslczogZmFpbGVkIHRvIHJlZ2lzdGVyIHR0eSBmb3IgcG9ydCAlZCwgZXJyICVsZFxuJiMzNDssCi0JCQkJX19mdW5jX18sIHBvcnRfbnVtLCBQVFJfRVJSKHR0eV9kZXYpKTsKJiM0MzsJCXByX2VycigmIzM0OyVzOiBmYWlsZWQgdG8gcmVnaXN0ZXIgdHR5IGZvciBwb3J0ICVkLCBlcnIgJXBlXG4mIzM0OywKJiM0MzsJCQkJX19mdW5jX18sIHBvcnRfbnVtLCB0dHlfZGV2KTsKIAogCQlyZXQgPSBQVFJfRVJSKHR0eV9kZXYpOwogCQltdXRleF9sb2NrKCZhbXA7cG9ydHNbcG9ydF9udW1dLmxvY2spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmMgYi9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuYwppbmRleCA3NTk3NzBhMTMyNjA2Li4xMTYwZGM1OTRiMWMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuYwpAQCAtMjAyLDggJiM0MzsyMDIsNyBAQCBzdGF0aWMgaW50IHVzYjM1MDNfcHJvYmUoc3RydWN0IHVzYjM1MDMgKmh1YikKIAogCQlodWItJmd0O2NsayA9IGRldm1fY2xrX2dldF9vcHRpb25hbChkZXYsICYjMzQ7cmVmY2xrJiMzNDspOwogCQlpZiAoSVNfRVJSKGh1Yi0mZ3Q7Y2xrKSkgewotCQkJZGV2X2VycihkZXYsICYjMzQ7dW5hYmxlIHRvIHJlcXVlc3QgcmVmY2xrICglbGQpXG4mIzM0OywKLQkJCQkJUFRSX0VSUihodWItJmd0O2NsaykpOwomIzQzOwkJCWRldl9lcnIoZGV2LCAmIzM0O3VuYWJsZSB0byByZXF1ZXN0IHJlZmNsayAoJXBlKVxuJiMzNDssIGh1Yi0mZ3Q7Y2xrKTsKIAkJCXJldHVybiBQVFJfRVJSKGh1Yi0mZ3Q7Y2xrKTsKIAkJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy9tdXgvcGkzdXNiMzA1MzIuYyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jCmluZGV4IDk4NTY4M2ZlNDllOTEuLmIzMmY0YzQzM2RlOTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jCkBAIC0xMzksOCAmIzQzOzEzOSw3IEBAIHN0YXRpYyBpbnQgcGkzdXNiMzA1MzJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAogCXBpLSZndDtzdyA9IHR5cGVjX3N3aXRjaF9yZWdpc3RlcihkZXYsICZhbXA7c3dfZGVzYyk7CiAJaWYgKElTX0VSUihwaS0mZ3Q7c3cpKSB7Ci0JCWRldl9lcnIoZGV2LCAmIzM0O0Vycm9yIHJlZ2lzdGVyaW5nIHR5cGVjIHN3aXRjaDogJWxkXG4mIzM0OywKLQkJCVBUUl9FUlIocGktJmd0O3N3KSk7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtFcnJvciByZWdpc3RlcmluZyB0eXBlYyBzd2l0Y2g6ICVwZVxuJiMzNDssIHBpLSZndDtzdyk7CiAJCXJldHVybiBQVFJfRVJSKHBpLSZndDtzdyk7CiAJfQogCkBAIC0xNTEsOCAmIzQzOzE1MCw3IEBAIHN0YXRpYyBpbnQgcGkzdXNiMzA1MzJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAlwaS0mZ3Q7bXV4ID0gdHlwZWNfbXV4X3JlZ2lzdGVyKGRldiwgJmFtcDttdXhfZGVzYyk7CiAJaWYgKElTX0VSUihwaS0mZ3Q7bXV4KSkgewogCQl0eXBlY19zd2l0Y2hfdW5yZWdpc3RlcihwaS0mZ3Q7c3cpOwotCQlkZXZfZXJyKGRldiwgJiMzNDtFcnJvciByZWdpc3RlcmluZyB0eXBlYyBtdXg6ICVsZFxuJiMzNDssCi0JCQlQVFJfRVJSKHBpLSZndDttdXgpKTsKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O0Vycm9yIHJlZ2lzdGVyaW5nIHR5cGVjIG11eDogJXBlXG4mIzM0OywgcGktJmd0O211eCk7CiAJCXJldHVybiBQVFJfRVJSKHBpLSZndDttdXgpOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmMgYi9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uYwppbmRleCA4OWVlYzIwYTIwNjRjLi5hZDEwNDcwZWE3M2IwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uYwpAQCAtNDc5Niw3ICYjNDM7NDc5Niw3IEBAIHN0YXRpYyB2b2lkIHRjcG1fdHlwZWNfY29ubmVjdChzdHJ1Y3QgdGNwbV9wb3J0ICpwb3J0KQogCQkJcG9ydC0mZ3Q7cGFydG5lcl9kZXNjLmFjY2Vzc29yeSA9IFRZUEVDX0FDQ0VTU09SWV9OT05FOwogCQlwYXJ0bmVyID0gdHlwZWNfcmVnaXN0ZXJfcGFydG5lcihwb3J0LSZndDt0eXBlY19wb3J0LCAmYW1wO3BvcnQtJmd0O3BhcnRuZXJfZGVzYyk7CiAJCWlmIChJU19FUlIocGFydG5lcikpIHsKLQkJCWRldl9lcnIocG9ydC0mZ3Q7ZGV2LCAmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBwYXJ0bmVyICglbGQpXG4mIzM0OywgUFRSX0VSUihwYXJ0bmVyKSk7CiYjNDM7CQkJZGV2X2Vycihwb3J0LSZndDtkZXYsICYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIHBhcnRuZXIgKCVwZSlcbiYjMzQ7LCBwYXJ0bmVyKTsKIAkJCXJldHVybjsKIAkJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jIGIvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuYwppbmRleCA2MDYyODc1ZmIwNGE5Li44NmQxM2FiNDE2NzA0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmMKQEAgLTI3Nyw4ICYjNDM7Mjc3LDggQEAgc3RhdGljIHZvaWQgd3VzYjM4MDFfaHdfdXBkYXRlKHN0cnVjdCB3dXNiMzgwMSAqd3VzYjM4MDEpCiAJCWlmIChwYXJ0bmVyX3R5cGUgIT0gV1VTQjM4MDFfU1RBVF9QQVJUTkVSX1NUQU5EQlkpIHsKIAkJCXd1c2IzODAxLSZndDtwYXJ0bmVyID0gdHlwZWNfcmVnaXN0ZXJfcGFydG5lcihwb3J0LCAmYW1wO2Rlc2MpOwogCQkJaWYgKElTX0VSUih3dXNiMzgwMS0mZ3Q7cGFydG5lcikpCi0JCQkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIHBhcnRuZXI6ICVsZFxuJiMzNDssCi0JCQkJCVBUUl9FUlIod3VzYjM4MDEtJmd0O3BhcnRuZXIpKTsKJiM0MzsJCQkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIHBhcnRuZXI6ICVwZVxuJiMzNDssCiYjNDM7CQkJCQl3dXNiMzgwMS0mZ3Q7cGFydG5lcik7CiAJCX0KIAogCQlkYXRhX3JvbGUgPSBwd3Jfcm9sZSA9PSBUWVBFQ19TT1VSQ0UgPyBUWVBFQ19IT1NUIDogVFlQRUNfREVWSUNFOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDMwCgkJCQkJCQlvdXRwdXQ6IDg5CgkJCQkJCQl0aG91Z2h0czogNTY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFRyaXZpYWwgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciB3aGF0JiMzOTtzIGhhcHBlbmluZy4gVGhleSYjMzk7cmUgY2hhbmdpbmcgaG93IGVycm9yIHBvaW50ZXJzIGFyZSBsb2dnZWQgd2l0aGluIHRoZSBVU0Igc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGEgY29zbWV0aWMgY2hhbmdlIOKAkyByZXBsYWNpbmcgYFBUUl9FUlIoeClgIGFuZCB0aGUgYCVsZGAgZm9ybWF0IHNwZWNpZmllciB3aXRoIGAlcGVgIHRvIHByaW50IHRoZSBlcnJvciBwb2ludGVyIGl0c2VsZi4gSXQmIzM5O3MgYSBjbGVhbnVwLCBtYWtpbmcgdGhlIGVycm9yIG1lc3NhZ2VzIGEgbGl0dGxlIG1vcmUgY29uc2lzdGVudCBpbiB0aGVpciBwcmVzZW50YXRpb24sIHRoYXQmIzM5O3MgYWxsLgoKTGV0IG1lIGp1c3QgcXVpY2tseSBydW4gdGhyb3VnaCB0aGUgZGlmZiB0byBjb25maXJtLi4uIFllcCwgYHVzYmF0bS5jYCwgYGNpX2hkcmNfaW14LmNgLCBgY29yZS5jYCwgYGh1Yi5jYCwgYGR3YzIvcGNpLmNgLCBgdV9zZXJpYWwuY2AsIGB1c2IzNTAzLmNgLCBgcGkzdXNiMzA1MzIuY2AsIGB0Y3BtLmNgLCBhbmQgYHd1c2IzODAxLmNgIOKAkyBhbGwgdGhlIHNhbWUgcGF0dGVybi4gSXQmIzM5O3MganVzdCBhIGNvbnNpc3RlbnQgbG9nZ2luZyBpbXByb3ZlbWVudCwgbm90aGluZyBtb3JlLiBObyBmdW5jdGlvbmFsIGNoYW5nZXMsIG5vIGFsdGVyZWQgY29udHJvbCBmbG93LgoKR2l2ZW4gdGhhdCB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWxpdHkgb3IgY2hhbmdlIGV4aXN0aW5nIGJlaGF2aW9yIGluIGEgbWVhbmluZ2Z1bCB3YXksIGl0JiMzOTtzIGRlZmluaXRlbHkgbm90IHNvbWV0aGluZyBJJiMzOTtkIGNvbnNpZGVyIHdvcnRoIGZ1enppbmcuIEl0JiMzOTtzIGEgc3RyYWlnaHRmb3J3YXJkIGxvZ2dpbmcgdHdlYWsuIFNvLCBJJiMzOTtsbCBnbyBhaGVhZCBhbmQgc2V0IHRoZSByZXN1bHRzIGFjY29yZGluZ2x5LiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpdCBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVwbGFjZXMgJWxkIGFuZCBQVFJfRVJSKHgpIHdpdGggJXBlIGFuZCB4IGluIHByaW50ay1saWtlIGZ1bmN0aW9ucyAoZGV2X2VyciwgcHJfZXJyLCBkZXZfZGJnLCB1c2JfZXJyKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlL2xvZ2dpbmcgY2hhbmdlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVwbGFjZXMgJWxkIGFuZCBQVFJfRVJSKHgpIHdpdGggJXBlIGFuZCB4IGluIHByaW50ay1saWtlIGZ1bmN0aW9ucyAoZGV2X2VyciwgcHJfZXJyLCBkZXZfZGJnLCB1c2JfZXJyKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlL2xvZ2dpbmcgY2hhbmdlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMDo1NS4wOTc3OTUyNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTQ0MTIxMDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHJlcGxhY2VzICVsZCBhbmQgUFRSX0VSUih4KSB3aXRoICVwZSBhbmQgeCBpbiBwcmludGstbGlrZSBmdW5jdGlvbnMgKGRldl9lcnIsIHByX2VyciwgZGV2X2RiZywgdXNiX2VycikuIFRoaXMgaXMgYSBwdXJlbHkgZGVjb3JhdGl2ZS9sb2dnaW5nIGNoYW5nZSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMDo1NS4wOTc4MDE4OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk2MTI5NjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTZlYmNmYTBjOGU3MmU2ZjgxYmZiMjY3NDJjMmQ3YzgyN2QyZDVmN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAyIDEyOjMwOjU0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uYyBiL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uY1xcbmluZGV4IDk2MDBlMWVjMDk5MzAuLmM3OGNhYTFiNTdjOWQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jXFxuKysrIGIvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jXFxuQEAgLTk3OSw4ICs5NzksOCBAQCBzdGF0aWMgaW50IHVzYmF0bV9oZWF2eV9pbml0KHN0cnVjdCB1c2JhdG1fZGF0YSAqaW5zdGFuY2UpXFxuIFxcdHQgPSBrdGhyZWFkX2NyZWF0ZSh1c2JhdG1fZG9faGVhdnlfaW5pdCwgaW5zdGFuY2UsIFxcXCIlc1xcXCIsXFxuIFxcdFxcdFxcdGluc3RhbmNlLVxcdTAwM2Vkcml2ZXItXFx1MDAzZWRyaXZlcl9uYW1lKTtcXG4gXFx0aWYgKElTX0VSUih0KSkge1xcbi1cXHRcXHR1c2JfZXJyKGluc3RhbmNlLCBcXFwiJXM6IGZhaWxlZCB0byBjcmVhdGUga2VybmVsX3RocmVhZCAoJWxkKSFcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdF9fZnVuY19fLCBQVFJfRVJSKHQpKTtcXG4rXFx0XFx0dXNiX2VycihpbnN0YW5jZSwgXFxcIiVzOiBmYWlsZWQgdG8gY3JlYXRlIGtlcm5lbF90aHJlYWQgKCVwZSkhXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRfX2Z1bmNfXywgdCk7XFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKHQpO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguY1xcbmluZGV4IDU2ZDJiYTgyNGEwYjIuLjdiZmUzN2VkNjhhZWIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguY1xcbisrKyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmNcXG5AQCAtMjE4LDggKzIxOCw4IEBAIHN0YXRpYyBpbnQgaW14X2dldF9jbGtzKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0XFx0aWYgKElTX0VSUihkYXRhLVxcdTAwM2VjbGspKSB7XFxuIFxcdFxcdFxcdHJldCA9IFBUUl9FUlIoZGF0YS1cXHUwMDNlY2xrKTtcXG4gXFx0XFx0XFx0ZGV2X2VycihkZXYsXFxuLVxcdFxcdFxcdFxcdFxcXCJGYWlsZWQgdG8gZ2V0IGNsa3MsIGVycj0lbGQsJWxkXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRQVFJfRVJSKGRhdGEtXFx1MDAzZWNsayksIFBUUl9FUlIoZGF0YS1cXHUwMDNlY2xrX2lwZykpO1xcbitcXHRcXHRcXHRcXHRcXFwiRmFpbGVkIHRvIGdldCBjbGtzLCBlcnI9JXBlLCVwZVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ZGF0YS1cXHUwMDNlY2xrLCBkYXRhLVxcdTAwM2VjbGtfaXBnKTtcXG4gXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0XFx0fVxcbiBcXHRcXHQvKiBHZXQgd2FrZXVwIGNsb2NrLiBOb3QgYWxsIG9mIHRoZSBwbGF0Zm9ybXMgbmVlZCB0b1xcbkBAIC00NDgsOCArNDQ4LDggQEAgc3RhdGljIGludCBjaV9oZHJjX2lteF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRcXHRwaW5jdHJsX2hzaWNfaWRsZSA9IHBpbmN0cmxfbG9va3VwX3N0YXRlKGRhdGEtXFx1MDAzZXBpbmN0cmwsIFxcXCJpZGxlXFxcIik7XFxuIFxcdFxcdGlmIChJU19FUlIocGluY3RybF9oc2ljX2lkbGUpKSB7XFxuIFxcdFxcdFxcdGRldl9lcnIoZGV2LFxcbi1cXHRcXHRcXHRcXHRcXFwicGluY3RybF9oc2ljX2lkbGUgbG9va3VwIGZhaWxlZCwgZXJyPSVsZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0XFx0UFRSX0VSUihwaW5jdHJsX2hzaWNfaWRsZSkpO1xcbitcXHRcXHRcXHRcXHRcXFwicGluY3RybF9oc2ljX2lkbGUgbG9va3VwIGZhaWxlZCwgZXJyPSVwZVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0cGluY3RybF9oc2ljX2lkbGUpO1xcbiBcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKHBpbmN0cmxfaHNpY19pZGxlKTtcXG4gXFx0XFx0XFx0Z290byBlcnJfcHV0O1xcbiBcXHRcXHR9XFxuQEAgLTQ2NCw4ICs0NjQsOCBAQCBzdGF0aWMgaW50IGNpX2hkcmNfaW14X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXCJhY3RpdmVcXFwiKTtcXG4gXFx0XFx0aWYgKElTX0VSUihkYXRhLVxcdTAwM2VwaW5jdHJsX2hzaWNfYWN0aXZlKSkge1xcbiBcXHRcXHRcXHRkZXZfZXJyKGRldixcXG4tXFx0XFx0XFx0XFx0XFxcInBpbmN0cmxfaHNpY19hY3RpdmUgbG9va3VwIGZhaWxlZCwgZXJyPSVsZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0XFx0UFRSX0VSUihkYXRhLVxcdTAwM2VwaW5jdHJsX2hzaWNfYWN0aXZlKSk7XFxuK1xcdFxcdFxcdFxcdFxcXCJwaW5jdHJsX2hzaWNfYWN0aXZlIGxvb2t1cCBmYWlsZWQsIGVycj0lcGVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdGRhdGEtXFx1MDAzZXBpbmN0cmxfaHNpY19hY3RpdmUpO1xcbiBcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKGRhdGEtXFx1MDAzZXBpbmN0cmxfaHNpY19hY3RpdmUpO1xcbiBcXHRcXHRcXHRnb3RvIGVycl9wdXQ7XFxuIFxcdFxcdH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jXFxuaW5kZXggMDc1NjNiZTAwMTNmNC4uMDlkYjhhNGVhY2UyMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmNcXG5AQCAtNjgwLDggKzY4MCw4IEBAIHN0YXRpYyBpbnQgY2lfZ2V0X3BsYXRkYXRhKHN0cnVjdCBkZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0Lyogbm8gdmJ1cyByZWd1bGF0b3IgaXMgbmVlZGVkICovXFxuIFxcdFxcdFxcdHBsYXRkYXRhLVxcdTAwM2VyZWdfdmJ1cyA9IE5VTEw7XFxuIFxcdFxcdH0gZWxzZSBpZiAoSVNfRVJSKHBsYXRkYXRhLVxcdTAwM2VyZWdfdmJ1cykpIHtcXG4tXFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJHZXR0aW5nIHJlZ3VsYXRvciBlcnJvcjogJWxkXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRQVFJfRVJSKHBsYXRkYXRhLVxcdTAwM2VyZWdfdmJ1cykpO1xcbitcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkdldHRpbmcgcmVndWxhdG9yIGVycm9yOiAlcGVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdHBsYXRkYXRhLVxcdTAwM2VyZWdfdmJ1cyk7XFxuIFxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHBsYXRkYXRhLVxcdTAwM2VyZWdfdmJ1cyk7XFxuIFxcdFxcdH1cXG4gXFx0XFx0LyogR2V0IFRQTCBzdXBwb3J0ICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jXFxuaW5kZXggNTI2MmUxMWMxMmNkMy4uOGM3NTBhOTNjMzUwMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jXFxuKysrIGIvZHJpdmVycy91c2IvY29yZS9odWIuY1xcbkBAIC01NjcxLDggKzU2NzEsNyBAQCBzdGF0aWMgdm9pZCBodWJfcG9ydF9jb25uZWN0X2NoYW5nZShzdHJ1Y3QgdXNiX2h1YiAqaHViLCBpbnQgcG9ydDEsXFxuIFxcdFxcdFxcdGRlc2NyID0gdXNiX2dldF9kZXZpY2VfZGVzY3JpcHRvcih1ZGV2KTtcXG4gXFx0XFx0XFx0aWYgKElTX0VSUihkZXNjcikpIHtcXG4gXFx0XFx0XFx0XFx0ZGV2X2RiZyhcXHUwMDI2dWRldi1cXHUwMDNlZGV2LFxcbi1cXHRcXHRcXHRcXHRcXHRcXHRcXFwiY2FuJ3QgcmVhZCBkZXZpY2UgZGVzY3JpcHRvciAlbGRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFBUUl9FUlIoZGVzY3IpKTtcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFxcImNhbid0IHJlYWQgZGV2aWNlIGRlc2NyaXB0b3IgJXBlXFxcXG5cXFwiLCBkZXNjcik7XFxuIFxcdFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdFxcdGlmIChkZXNjcmlwdG9yc19jaGFuZ2VkKHVkZXYsIGRlc2NyLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHR1ZGV2LVxcdTAwM2Vib3MpKSB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2R3YzIvcGNpLmMgYi9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jXFxuaW5kZXggZjNhMWU0MjMyYTMxZC4uN2ZmOWM0ZGY5NDFlMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jXFxuKysrIGIvZHJpdmVycy91c2IvZHdjMi9wY2kuY1xcbkBAIC02OCw4ICs2OCw3IEBAIHN0YXRpYyBpbnQgZHdjMl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaSxcXG4gXFxuIFxcdHBoeSA9IHVzYl9waHlfZ2VuZXJpY19yZWdpc3RlcigpO1xcbiBcXHRpZiAoSVNfRVJSKHBoeSkpIHtcXG4tXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJlcnJvciByZWdpc3RlcmluZyBnZW5lcmljIFBIWSAoJWxkKVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0UFRSX0VSUihwaHkpKTtcXG4rXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJlcnJvciByZWdpc3RlcmluZyBnZW5lcmljIFBIWSAoJXBlKVxcXFxuXFxcIiwgcGh5KTtcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIocGh5KTtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV9zZXJpYWwuY1xcbmluZGV4IGNkZDFkZmM2NjZjNGYuLmRhMzFlNWNlYTBhNTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV9zZXJpYWwuY1xcbkBAIC0xMzExLDggKzEzMTEsOCBAQCBpbnQgZ3NlcmlhbF9hbGxvY19saW5lX25vX2NvbnNvbGUodW5zaWduZWQgY2hhciAqbGluZV9udW0pXFxuIFxcdHR0eV9kZXYgPSB0dHlfcG9ydF9yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNnBvcnQtXFx1MDAzZXBvcnQsXFxuIFxcdFxcdFxcdGdzX3R0eV9kcml2ZXIsIHBvcnRfbnVtLCBOVUxMKTtcXG4gXFx0aWYgKElTX0VSUih0dHlfZGV2KSkge1xcbi1cXHRcXHRwcl9lcnIoXFxcIiVzOiBmYWlsZWQgdG8gcmVnaXN0ZXIgdHR5IGZvciBwb3J0ICVkLCBlcnIgJWxkXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRfX2Z1bmNfXywgcG9ydF9udW0sIFBUUl9FUlIodHR5X2RldikpO1xcbitcXHRcXHRwcl9lcnIoXFxcIiVzOiBmYWlsZWQgdG8gcmVnaXN0ZXIgdHR5IGZvciBwb3J0ICVkLCBlcnIgJXBlXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRfX2Z1bmNfXywgcG9ydF9udW0sIHR0eV9kZXYpO1xcbiBcXG4gXFx0XFx0cmV0ID0gUFRSX0VSUih0dHlfZGV2KTtcXG4gXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cG9ydHNbcG9ydF9udW1dLmxvY2spO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuYyBiL2RyaXZlcnMvdXNiL21pc2MvdXNiMzUwMy5jXFxuaW5kZXggNzU5NzcwYTEzMjYwNi4uMTE2MGRjNTk0YjFjMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuY1xcbisrKyBiL2RyaXZlcnMvdXNiL21pc2MvdXNiMzUwMy5jXFxuQEAgLTIwMiw4ICsyMDIsNyBAQCBzdGF0aWMgaW50IHVzYjM1MDNfcHJvYmUoc3RydWN0IHVzYjM1MDMgKmh1YilcXG4gXFxuIFxcdFxcdGh1Yi1cXHUwMDNlY2xrID0gZGV2bV9jbGtfZ2V0X29wdGlvbmFsKGRldiwgXFxcInJlZmNsa1xcXCIpO1xcbiBcXHRcXHRpZiAoSVNfRVJSKGh1Yi1cXHUwMDNlY2xrKSkge1xcbi1cXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcInVuYWJsZSB0byByZXF1ZXN0IHJlZmNsayAoJWxkKVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0XFx0UFRSX0VSUihodWItXFx1MDAzZWNsaykpO1xcbitcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcInVuYWJsZSB0byByZXF1ZXN0IHJlZmNsayAoJXBlKVxcXFxuXFxcIiwgaHViLVxcdTAwM2VjbGspO1xcbiBcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihodWItXFx1MDAzZWNsayk7XFxuIFxcdFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jIGIvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmNcXG5pbmRleCA5ODU2ODNmZTQ5ZTkxLi5iMzJmNGM0MzNkZTk1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jXFxuKysrIGIvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmNcXG5AQCAtMTM5LDggKzEzOSw3IEBAIHN0YXRpYyBpbnQgcGkzdXNiMzA1MzJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4gXFxuIFxcdHBpLVxcdTAwM2VzdyA9IHR5cGVjX3N3aXRjaF9yZWdpc3RlcihkZXYsIFxcdTAwMjZzd19kZXNjKTtcXG4gXFx0aWYgKElTX0VSUihwaS1cXHUwMDNlc3cpKSB7XFxuLVxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgc3dpdGNoOiAlbGRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFBUUl9FUlIocGktXFx1MDAzZXN3KSk7XFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiRXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgc3dpdGNoOiAlcGVcXFxcblxcXCIsIHBpLVxcdTAwM2Vzdyk7XFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKHBpLVxcdTAwM2Vzdyk7XFxuIFxcdH1cXG4gXFxuQEAgLTE1MSw4ICsxNTAsNyBAQCBzdGF0aWMgaW50IHBpM3VzYjMwNTMyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuIFxcdHBpLVxcdTAwM2VtdXggPSB0eXBlY19tdXhfcmVnaXN0ZXIoZGV2LCBcXHUwMDI2bXV4X2Rlc2MpO1xcbiBcXHRpZiAoSVNfRVJSKHBpLVxcdTAwM2VtdXgpKSB7XFxuIFxcdFxcdHR5cGVjX3N3aXRjaF91bnJlZ2lzdGVyKHBpLVxcdTAwM2Vzdyk7XFxuLVxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgbXV4OiAlbGRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFBUUl9FUlIocGktXFx1MDAzZW11eCkpO1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkVycm9yIHJlZ2lzdGVyaW5nIHR5cGVjIG11eDogJXBlXFxcXG5cXFwiLCBwaS1cXHUwMDNlbXV4KTtcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIocGktXFx1MDAzZW11eCk7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jIGIvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmNcXG5pbmRleCA4OWVlYzIwYTIwNjRjLi5hZDEwNDcwZWE3M2IwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jXFxuKysrIGIvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmNcXG5AQCAtNDc5Niw3ICs0Nzk2LDcgQEAgc3RhdGljIHZvaWQgdGNwbV90eXBlY19jb25uZWN0KHN0cnVjdCB0Y3BtX3BvcnQgKnBvcnQpXFxuIFxcdFxcdFxcdHBvcnQtXFx1MDAzZXBhcnRuZXJfZGVzYy5hY2Nlc3NvcnkgPSBUWVBFQ19BQ0NFU1NPUllfTk9ORTtcXG4gXFx0XFx0cGFydG5lciA9IHR5cGVjX3JlZ2lzdGVyX3BhcnRuZXIocG9ydC1cXHUwMDNldHlwZWNfcG9ydCwgXFx1MDAyNnBvcnQtXFx1MDAzZXBhcnRuZXJfZGVzYyk7XFxuIFxcdFxcdGlmIChJU19FUlIocGFydG5lcikpIHtcXG4tXFx0XFx0XFx0ZGV2X2Vycihwb3J0LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lciAoJWxkKVxcXFxuXFxcIiwgUFRSX0VSUihwYXJ0bmVyKSk7XFxuK1xcdFxcdFxcdGRldl9lcnIocG9ydC1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIHBhcnRuZXIgKCVwZSlcXFxcblxcXCIsIHBhcnRuZXIpO1xcbiBcXHRcXHRcXHRyZXR1cm47XFxuIFxcdFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmMgYi9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jXFxuaW5kZXggNjA2Mjg3NWZiMDRhOS4uODZkMTNhYjQxNjcwNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jXFxuKysrIGIvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuY1xcbkBAIC0yNzcsOCArMjc3LDggQEAgc3RhdGljIHZvaWQgd3VzYjM4MDFfaHdfdXBkYXRlKHN0cnVjdCB3dXNiMzgwMSAqd3VzYjM4MDEpXFxuIFxcdFxcdGlmIChwYXJ0bmVyX3R5cGUgIT0gV1VTQjM4MDFfU1RBVF9QQVJUTkVSX1NUQU5EQlkpIHtcXG4gXFx0XFx0XFx0d3VzYjM4MDEtXFx1MDAzZXBhcnRuZXIgPSB0eXBlY19yZWdpc3Rlcl9wYXJ0bmVyKHBvcnQsIFxcdTAwMjZkZXNjKTtcXG4gXFx0XFx0XFx0aWYgKElTX0VSUih3dXNiMzgwMS1cXHUwMDNlcGFydG5lcikpXFxuLVxcdFxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIHBhcnRuZXI6ICVsZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0XFx0UFRSX0VSUih3dXNiMzgwMS1cXHUwMDNlcGFydG5lcikpO1xcbitcXHRcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byByZWdpc3RlciBwYXJ0bmVyOiAlcGVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdHd1c2IzODAxLVxcdTAwM2VwYXJ0bmVyKTtcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0ZGF0YV9yb2xlID0gcHdyX3JvbGUgPT0gVFlQRUNfU09VUkNFID8gVFlQRUNfSE9TVCA6IFRZUEVDX0RFVklDRTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzA6NTUuNjk0NjkzNzYyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTQ5NDcyMTE3NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgcmVwbGFjZXMgJWxkIGFuZCBQVFJfRVJSKHgpIHdpdGggJXBlIGFuZCB4IGluIHByaW50ay1saWtlIGZ1bmN0aW9ucyAoZGV2X2VyciwgcHJfZXJyLCBkZXZfZGJnLCB1c2JfZXJyKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlL2xvZ2dpbmcgY2hhbmdlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGU2ZWJjZmEwYzhlNzJlNmY4MWJmYjI2NzQyYzJkN2M4MjdkMmQ1ZjdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDEyOjMwOjU0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jIGIvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jXG5pbmRleCA5NjAwZTFlYzA5OTMwLi5jNzhjYWExYjU3YzlkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jXG4rKysgYi9kcml2ZXJzL3VzYi9hdG0vdXNiYXRtLmNcbkBAIC05NzksOCArOTc5LDggQEAgc3RhdGljIGludCB1c2JhdG1faGVhdnlfaW5pdChzdHJ1Y3QgdXNiYXRtX2RhdGEgKmluc3RhbmNlKVxuIFx0dCA9IGt0aHJlYWRfY3JlYXRlKHVzYmF0bV9kb19oZWF2eV9pbml0LCBpbnN0YW5jZSwgXCIlc1wiLFxuIFx0XHRcdGluc3RhbmNlLVx1MDAzZWRyaXZlci1cdTAwM2Vkcml2ZXJfbmFtZSk7XG4gXHRpZiAoSVNfRVJSKHQpKSB7XG4tXHRcdHVzYl9lcnIoaW5zdGFuY2UsIFwiJXM6IGZhaWxlZCB0byBjcmVhdGUga2VybmVsX3RocmVhZCAoJWxkKSFcXG5cIixcbi1cdFx0XHRcdF9fZnVuY19fLCBQVFJfRVJSKHQpKTtcbitcdFx0dXNiX2VycihpbnN0YW5jZSwgXCIlczogZmFpbGVkIHRvIGNyZWF0ZSBrZXJuZWxfdGhyZWFkICglcGUpIVxcblwiLFxuK1x0XHRcdFx0X19mdW5jX18sIHQpO1xuIFx0XHRyZXR1cm4gUFRSX0VSUih0KTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguY1xuaW5kZXggNTZkMmJhODI0YTBiMi4uN2JmZTM3ZWQ2OGFlYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmNcbisrKyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmNcbkBAIC0yMTgsOCArMjE4LDggQEAgc3RhdGljIGludCBpbXhfZ2V0X2Nsa3Moc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHRpZiAoSVNfRVJSKGRhdGEtXHUwMDNlY2xrKSkge1xuIFx0XHRcdHJldCA9IFBUUl9FUlIoZGF0YS1cdTAwM2VjbGspO1xuIFx0XHRcdGRldl9lcnIoZGV2LFxuLVx0XHRcdFx0XCJGYWlsZWQgdG8gZ2V0IGNsa3MsIGVycj0lbGQsJWxkXFxuXCIsXG4tXHRcdFx0XHRQVFJfRVJSKGRhdGEtXHUwMDNlY2xrKSwgUFRSX0VSUihkYXRhLVx1MDAzZWNsa19pcGcpKTtcbitcdFx0XHRcdFwiRmFpbGVkIHRvIGdldCBjbGtzLCBlcnI9JXBlLCVwZVxcblwiLFxuK1x0XHRcdFx0ZGF0YS1cdTAwM2VjbGssIGRhdGEtXHUwMDNlY2xrX2lwZyk7XG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdFx0fVxuIFx0XHQvKiBHZXQgd2FrZXVwIGNsb2NrLiBOb3QgYWxsIG9mIHRoZSBwbGF0Zm9ybXMgbmVlZCB0b1xuQEAgLTQ0OCw4ICs0NDgsOCBAQCBzdGF0aWMgaW50IGNpX2hkcmNfaW14X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRcdHBpbmN0cmxfaHNpY19pZGxlID0gcGluY3RybF9sb29rdXBfc3RhdGUoZGF0YS1cdTAwM2VwaW5jdHJsLCBcImlkbGVcIik7XG4gXHRcdGlmIChJU19FUlIocGluY3RybF9oc2ljX2lkbGUpKSB7XG4gXHRcdFx0ZGV2X2VycihkZXYsXG4tXHRcdFx0XHRcInBpbmN0cmxfaHNpY19pZGxlIGxvb2t1cCBmYWlsZWQsIGVycj0lbGRcXG5cIixcbi1cdFx0XHRcdFx0UFRSX0VSUihwaW5jdHJsX2hzaWNfaWRsZSkpO1xuK1x0XHRcdFx0XCJwaW5jdHJsX2hzaWNfaWRsZSBsb29rdXAgZmFpbGVkLCBlcnI9JXBlXFxuXCIsXG4rXHRcdFx0XHRcdHBpbmN0cmxfaHNpY19pZGxlKTtcbiBcdFx0XHRyZXQgPSBQVFJfRVJSKHBpbmN0cmxfaHNpY19pZGxlKTtcbiBcdFx0XHRnb3RvIGVycl9wdXQ7XG4gXHRcdH1cbkBAIC00NjQsOCArNDY0LDggQEAgc3RhdGljIGludCBjaV9oZHJjX2lteF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRcdFx0XHRcdFx0XHRcImFjdGl2ZVwiKTtcbiBcdFx0aWYgKElTX0VSUihkYXRhLVx1MDAzZXBpbmN0cmxfaHNpY19hY3RpdmUpKSB7XG4gXHRcdFx0ZGV2X2VycihkZXYsXG4tXHRcdFx0XHRcInBpbmN0cmxfaHNpY19hY3RpdmUgbG9va3VwIGZhaWxlZCwgZXJyPSVsZFxcblwiLFxuLVx0XHRcdFx0XHRQVFJfRVJSKGRhdGEtXHUwMDNlcGluY3RybF9oc2ljX2FjdGl2ZSkpO1xuK1x0XHRcdFx0XCJwaW5jdHJsX2hzaWNfYWN0aXZlIGxvb2t1cCBmYWlsZWQsIGVycj0lcGVcXG5cIixcbitcdFx0XHRcdFx0ZGF0YS1cdTAwM2VwaW5jdHJsX2hzaWNfYWN0aXZlKTtcbiBcdFx0XHRyZXQgPSBQVFJfRVJSKGRhdGEtXHUwMDNlcGluY3RybF9oc2ljX2FjdGl2ZSk7XG4gXHRcdFx0Z290byBlcnJfcHV0O1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jXG5pbmRleCAwNzU2M2JlMDAxM2Y0Li4wOWRiOGE0ZWFjZTIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jXG4rKysgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmNcbkBAIC02ODAsOCArNjgwLDggQEAgc3RhdGljIGludCBjaV9nZXRfcGxhdGRhdGEoc3RydWN0IGRldmljZSAqZGV2LFxuIFx0XHRcdC8qIG5vIHZidXMgcmVndWxhdG9yIGlzIG5lZWRlZCAqL1xuIFx0XHRcdHBsYXRkYXRhLVx1MDAzZXJlZ192YnVzID0gTlVMTDtcbiBcdFx0fSBlbHNlIGlmIChJU19FUlIocGxhdGRhdGEtXHUwMDNlcmVnX3ZidXMpKSB7XG4tXHRcdFx0ZGV2X2VycihkZXYsIFwiR2V0dGluZyByZWd1bGF0b3IgZXJyb3I6ICVsZFxcblwiLFxuLVx0XHRcdFx0UFRSX0VSUihwbGF0ZGF0YS1cdTAwM2VyZWdfdmJ1cykpO1xuK1x0XHRcdGRldl9lcnIoZGV2LCBcIkdldHRpbmcgcmVndWxhdG9yIGVycm9yOiAlcGVcXG5cIixcbitcdFx0XHRcdHBsYXRkYXRhLVx1MDAzZXJlZ192YnVzKTtcbiBcdFx0XHRyZXR1cm4gUFRSX0VSUihwbGF0ZGF0YS1cdTAwM2VyZWdfdmJ1cyk7XG4gXHRcdH1cbiBcdFx0LyogR2V0IFRQTCBzdXBwb3J0ICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9odWIuYyBiL2RyaXZlcnMvdXNiL2NvcmUvaHViLmNcbmluZGV4IDUyNjJlMTFjMTJjZDMuLjhjNzUwYTkzYzM1MDAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jXG4rKysgYi9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jXG5AQCAtNTY3MSw4ICs1NjcxLDcgQEAgc3RhdGljIHZvaWQgaHViX3BvcnRfY29ubmVjdF9jaGFuZ2Uoc3RydWN0IHVzYl9odWIgKmh1YiwgaW50IHBvcnQxLFxuIFx0XHRcdGRlc2NyID0gdXNiX2dldF9kZXZpY2VfZGVzY3JpcHRvcih1ZGV2KTtcbiBcdFx0XHRpZiAoSVNfRVJSKGRlc2NyKSkge1xuIFx0XHRcdFx0ZGV2X2RiZyhcdTAwMjZ1ZGV2LVx1MDAzZWRldixcbi1cdFx0XHRcdFx0XHRcImNhbid0IHJlYWQgZGV2aWNlIGRlc2NyaXB0b3IgJWxkXFxuXCIsXG4tXHRcdFx0XHRcdFx0UFRSX0VSUihkZXNjcikpO1xuK1x0XHRcdFx0XHRcdFwiY2FuJ3QgcmVhZCBkZXZpY2UgZGVzY3JpcHRvciAlcGVcXG5cIiwgZGVzY3IpO1xuIFx0XHRcdH0gZWxzZSB7XG4gXHRcdFx0XHRpZiAoZGVzY3JpcHRvcnNfY2hhbmdlZCh1ZGV2LCBkZXNjcixcbiBcdFx0XHRcdFx0XHR1ZGV2LVx1MDAzZWJvcykpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jIGIvZHJpdmVycy91c2IvZHdjMi9wY2kuY1xuaW5kZXggZjNhMWU0MjMyYTMxZC4uN2ZmOWM0ZGY5NDFlMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2R3YzIvcGNpLmNcbisrKyBiL2RyaXZlcnMvdXNiL2R3YzIvcGNpLmNcbkBAIC02OCw4ICs2OCw3IEBAIHN0YXRpYyBpbnQgZHdjMl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaSxcbiBcbiBcdHBoeSA9IHVzYl9waHlfZ2VuZXJpY19yZWdpc3RlcigpO1xuIFx0aWYgKElTX0VSUihwaHkpKSB7XG4tXHRcdGRldl9lcnIoZGV2LCBcImVycm9yIHJlZ2lzdGVyaW5nIGdlbmVyaWMgUEhZICglbGQpXFxuXCIsXG4tXHRcdFx0UFRSX0VSUihwaHkpKTtcbitcdFx0ZGV2X2VycihkZXYsIFwiZXJyb3IgcmVnaXN0ZXJpbmcgZ2VuZXJpYyBQSFkgKCVwZSlcXG5cIiwgcGh5KTtcbiBcdFx0cmV0dXJuIFBUUl9FUlIocGh5KTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV9zZXJpYWwuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jXG5pbmRleCBjZGQxZGZjNjY2YzRmLi5kYTMxZTVjZWEwYTU1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmNcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jXG5AQCAtMTMxMSw4ICsxMzExLDggQEAgaW50IGdzZXJpYWxfYWxsb2NfbGluZV9ub19jb25zb2xlKHVuc2lnbmVkIGNoYXIgKmxpbmVfbnVtKVxuIFx0dHR5X2RldiA9IHR0eV9wb3J0X3JlZ2lzdGVyX2RldmljZShcdTAwMjZwb3J0LVx1MDAzZXBvcnQsXG4gXHRcdFx0Z3NfdHR5X2RyaXZlciwgcG9ydF9udW0sIE5VTEwpO1xuIFx0aWYgKElTX0VSUih0dHlfZGV2KSkge1xuLVx0XHRwcl9lcnIoXCIlczogZmFpbGVkIHRvIHJlZ2lzdGVyIHR0eSBmb3IgcG9ydCAlZCwgZXJyICVsZFxcblwiLFxuLVx0XHRcdFx0X19mdW5jX18sIHBvcnRfbnVtLCBQVFJfRVJSKHR0eV9kZXYpKTtcbitcdFx0cHJfZXJyKFwiJXM6IGZhaWxlZCB0byByZWdpc3RlciB0dHkgZm9yIHBvcnQgJWQsIGVyciAlcGVcXG5cIixcbitcdFx0XHRcdF9fZnVuY19fLCBwb3J0X251bSwgdHR5X2Rldik7XG4gXG4gXHRcdHJldCA9IFBUUl9FUlIodHR5X2Rldik7XG4gXHRcdG11dGV4X2xvY2soXHUwMDI2cG9ydHNbcG9ydF9udW1dLmxvY2spO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvdXNiMzUwMy5jIGIvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmNcbmluZGV4IDc1OTc3MGExMzI2MDYuLjExNjBkYzU5NGIxYzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuY1xuKysrIGIvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmNcbkBAIC0yMDIsOCArMjAyLDcgQEAgc3RhdGljIGludCB1c2IzNTAzX3Byb2JlKHN0cnVjdCB1c2IzNTAzICpodWIpXG4gXG4gXHRcdGh1Yi1cdTAwM2VjbGsgPSBkZXZtX2Nsa19nZXRfb3B0aW9uYWwoZGV2LCBcInJlZmNsa1wiKTtcbiBcdFx0aWYgKElTX0VSUihodWItXHUwMDNlY2xrKSkge1xuLVx0XHRcdGRldl9lcnIoZGV2LCBcInVuYWJsZSB0byByZXF1ZXN0IHJlZmNsayAoJWxkKVxcblwiLFxuLVx0XHRcdFx0XHRQVFJfRVJSKGh1Yi1cdTAwM2VjbGspKTtcbitcdFx0XHRkZXZfZXJyKGRldiwgXCJ1bmFibGUgdG8gcmVxdWVzdCByZWZjbGsgKCVwZSlcXG5cIiwgaHViLVx1MDAzZWNsayk7XG4gXHRcdFx0cmV0dXJuIFBUUl9FUlIoaHViLVx1MDAzZWNsayk7XG4gXHRcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy9tdXgvcGkzdXNiMzA1MzIuYyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jXG5pbmRleCA5ODU2ODNmZTQ5ZTkxLi5iMzJmNGM0MzNkZTk1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmNcbisrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jXG5AQCAtMTM5LDggKzEzOSw3IEBAIHN0YXRpYyBpbnQgcGkzdXNiMzA1MzJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbiBcbiBcdHBpLVx1MDAzZXN3ID0gdHlwZWNfc3dpdGNoX3JlZ2lzdGVyKGRldiwgXHUwMDI2c3dfZGVzYyk7XG4gXHRpZiAoSVNfRVJSKHBpLVx1MDAzZXN3KSkge1xuLVx0XHRkZXZfZXJyKGRldiwgXCJFcnJvciByZWdpc3RlcmluZyB0eXBlYyBzd2l0Y2g6ICVsZFxcblwiLFxuLVx0XHRcdFBUUl9FUlIocGktXHUwMDNlc3cpKTtcbitcdFx0ZGV2X2VycihkZXYsIFwiRXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgc3dpdGNoOiAlcGVcXG5cIiwgcGktXHUwMDNlc3cpO1xuIFx0XHRyZXR1cm4gUFRSX0VSUihwaS1cdTAwM2Vzdyk7XG4gXHR9XG4gXG5AQCAtMTUxLDggKzE1MCw3IEBAIHN0YXRpYyBpbnQgcGkzdXNiMzA1MzJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbiBcdHBpLVx1MDAzZW11eCA9IHR5cGVjX211eF9yZWdpc3RlcihkZXYsIFx1MDAyNm11eF9kZXNjKTtcbiBcdGlmIChJU19FUlIocGktXHUwMDNlbXV4KSkge1xuIFx0XHR0eXBlY19zd2l0Y2hfdW5yZWdpc3RlcihwaS1cdTAwM2Vzdyk7XG4tXHRcdGRldl9lcnIoZGV2LCBcIkVycm9yIHJlZ2lzdGVyaW5nIHR5cGVjIG11eDogJWxkXFxuXCIsXG4tXHRcdFx0UFRSX0VSUihwaS1cdTAwM2VtdXgpKTtcbitcdFx0ZGV2X2VycihkZXYsIFwiRXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgbXV4OiAlcGVcXG5cIiwgcGktXHUwMDNlbXV4KTtcbiBcdFx0cmV0dXJuIFBUUl9FUlIocGktXHUwMDNlbXV4KTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uYyBiL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jXG5pbmRleCA4OWVlYzIwYTIwNjRjLi5hZDEwNDcwZWE3M2IwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmNcbisrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jXG5AQCAtNDc5Niw3ICs0Nzk2LDcgQEAgc3RhdGljIHZvaWQgdGNwbV90eXBlY19jb25uZWN0KHN0cnVjdCB0Y3BtX3BvcnQgKnBvcnQpXG4gXHRcdFx0cG9ydC1cdTAwM2VwYXJ0bmVyX2Rlc2MuYWNjZXNzb3J5ID0gVFlQRUNfQUNDRVNTT1JZX05PTkU7XG4gXHRcdHBhcnRuZXIgPSB0eXBlY19yZWdpc3Rlcl9wYXJ0bmVyKHBvcnQtXHUwMDNldHlwZWNfcG9ydCwgXHUwMDI2cG9ydC1cdTAwM2VwYXJ0bmVyX2Rlc2MpO1xuIFx0XHRpZiAoSVNfRVJSKHBhcnRuZXIpKSB7XG4tXHRcdFx0ZGV2X2Vycihwb3J0LVx1MDAzZWRldiwgXCJGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lciAoJWxkKVxcblwiLCBQVFJfRVJSKHBhcnRuZXIpKTtcbitcdFx0XHRkZXZfZXJyKHBvcnQtXHUwMDNlZGV2LCBcIkZhaWxlZCB0byByZWdpc3RlciBwYXJ0bmVyICglcGUpXFxuXCIsIHBhcnRuZXIpO1xuIFx0XHRcdHJldHVybjtcbiBcdFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmMgYi9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jXG5pbmRleCA2MDYyODc1ZmIwNGE5Li44NmQxM2FiNDE2NzA0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuY1xuKysrIGIvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuY1xuQEAgLTI3Nyw4ICsyNzcsOCBAQCBzdGF0aWMgdm9pZCB3dXNiMzgwMV9od191cGRhdGUoc3RydWN0IHd1c2IzODAxICp3dXNiMzgwMSlcbiBcdFx0aWYgKHBhcnRuZXJfdHlwZSAhPSBXVVNCMzgwMV9TVEFUX1BBUlRORVJfU1RBTkRCWSkge1xuIFx0XHRcdHd1c2IzODAxLVx1MDAzZXBhcnRuZXIgPSB0eXBlY19yZWdpc3Rlcl9wYXJ0bmVyKHBvcnQsIFx1MDAyNmRlc2MpO1xuIFx0XHRcdGlmIChJU19FUlIod3VzYjM4MDEtXHUwMDNlcGFydG5lcikpXG4tXHRcdFx0XHRkZXZfZXJyKGRldiwgXCJGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lcjogJWxkXFxuXCIsXG4tXHRcdFx0XHRcdFBUUl9FUlIod3VzYjM4MDEtXHUwMDNlcGFydG5lcikpO1xuK1x0XHRcdFx0ZGV2X2VycihkZXYsIFwiRmFpbGVkIHRvIHJlZ2lzdGVyIHBhcnRuZXI6ICVwZVxcblwiLFxuK1x0XHRcdFx0XHR3dXNiMzgwMS1cdTAwM2VwYXJ0bmVyKTtcbiBcdFx0fVxuIFxuIFx0XHRkYXRhX3JvbGUgPSBwd3Jfcm9sZSA9PSBUWVBFQ19TT1VSQ0UgPyBUWVBFQ19IT1NUIDogVFlQRUNfREVWSUNFO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzA6NTUuNjk0Njk1MzgyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ5NDcxNzU0MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVHJpdmlhbCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgcHJldHR5IGNsZWFyIHdoYXQncyBoYXBwZW5pbmcuIFRoZXkncmUgY2hhbmdpbmcgaG93IGVycm9yIHBvaW50ZXJzIGFyZSBsb2dnZWQgd2l0aGluIHRoZSBVU0Igc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0J3MgYSBjb3NtZXRpYyBjaGFuZ2Ug4oCTIHJlcGxhY2luZyBgUFRSX0VSUih4KWAgYW5kIHRoZSBgJWxkYCBmb3JtYXQgc3BlY2lmaWVyIHdpdGggYCVwZWAgdG8gcHJpbnQgdGhlIGVycm9yIHBvaW50ZXIgaXRzZWxmLiBJdCdzIGEgY2xlYW51cCwgbWFraW5nIHRoZSBlcnJvciBtZXNzYWdlcyBhIGxpdHRsZSBtb3JlIGNvbnNpc3RlbnQgaW4gdGhlaXIgcHJlc2VudGF0aW9uLCB0aGF0J3MgYWxsLlxuXG5MZXQgbWUganVzdCBxdWlja2x5IHJ1biB0aHJvdWdoIHRoZSBkaWZmIHRvIGNvbmZpcm0uLi4gWWVwLCBgdXNiYXRtLmNgLCBgY2lfaGRyY19pbXguY2AsIGBjb3JlLmNgLCBgaHViLmNgLCBgZHdjMi9wY2kuY2AsIGB1X3NlcmlhbC5jYCwgYHVzYjM1MDMuY2AsIGBwaTN1c2IzMDUzMi5jYCwgYHRjcG0uY2AsIGFuZCBgd3VzYjM4MDEuY2Ag4oCTIGFsbCB0aGUgc2FtZSBwYXR0ZXJuLiBJdCdzIGp1c3QgYSBjb25zaXN0ZW50IGxvZ2dpbmcgaW1wcm92ZW1lbnQsIG5vdGhpbmcgbW9yZS4gTm8gZnVuY3Rpb25hbCBjaGFuZ2VzLCBubyBhbHRlcmVkIGNvbnRyb2wgZmxvdy5cblxuR2l2ZW4gdGhhdCB0aGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbGl0eSBvciBjaGFuZ2UgZXhpc3RpbmcgYmVoYXZpb3IgaW4gYSBtZWFuaW5nZnVsIHdheSwgaXQncyBkZWZpbml0ZWx5IG5vdCBzb21ldGhpbmcgSSdkIGNvbnNpZGVyIHdvcnRoIGZ1enppbmcuIEl0J3MgYSBzdHJhaWdodGZvcndhcmQgbG9nZ2luZyB0d2Vhay4gU28sIEknbGwgZ28gYWhlYWQgYW5kIHNldCB0aGUgcmVzdWx0cyBhY2NvcmRpbmdseS4gYFdvcnRoRnV6emluZz1mYWxzZWAgaXQgaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMzAsIk91dHB1dFRva2VucyI6ODksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMToxMC42NDE4NzQ0NjFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgcmVwbGFjZXMgJWxkIGFuZCBQVFJfRVJSKHgpIHdpdGggJXBlIGFuZCB4IGluIHByaW50ay1saWtlIGZ1bmN0aW9ucyAoZGV2X2VyciwgcHJfZXJyLCBkZXZfZGJnLCB1c2JfZXJyKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlL2xvZ2dpbmcgY2hhbmdlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgcmVwbGFjZXMgJWxkIGFuZCBQVFJfRVJSKHgpIHdpdGggJXBlIGFuZCB4IGluIHByaW50ay1saWtlIGZ1bmN0aW9ucyAoZGV2X2VyciwgcHJfZXJyLCBkZXZfZGJnLCB1c2JfZXJyKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlL2xvZ2dpbmcgY2hhbmdlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowskhlp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-02 12:29:01 +0000 UTC FinishedAt: 2026-08-02 12:31:11 +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+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVwbGFjZXMgJWxkIGFuZCBQVFJfRVJSKHgpIHdpdGggJXBlIGFuZCB4IGluIHByaW50ay1saWtlIGZ1bmN0aW9ucyAoZGV2X2VyciwgcHJfZXJyLCBkZXZfZGJnLCB1c2JfZXJyKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlL2xvZ2dpbmcgY2hhbmdlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6MzA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlNmViY2ZhMGM4ZTcyZTZmODFiZmIyNjc0MmMyZDdjODI3ZDJkNWY3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAxMjozMDo1NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9hdG0vdXNiYXRtLmMgYi9kcml2ZXJzL3VzYi9hdG0vdXNiYXRtLmNcbmluZGV4IDk2MDBlMWVjMDk5MzAuLmM3OGNhYTFiNTdjOWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9hdG0vdXNiYXRtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uY1xuQEAgLTk3OSw4ICYjNDM7OTc5LDggQEAgc3RhdGljIGludCB1c2JhdG1faGVhdnlfaW5pdChzdHJ1Y3QgdXNiYXRtX2RhdGEgKmluc3RhbmNlKVxuIFx0dCA9IGt0aHJlYWRfY3JlYXRlKHVzYmF0bV9kb19oZWF2eV9pbml0LCBpbnN0YW5jZSwgXCYjMzQ7JXNcJiMzNDssXG4gXHRcdFx0aW5zdGFuY2UtXHUwMDNlZHJpdmVyLVx1MDAzZWRyaXZlcl9uYW1lKTtcbiBcdGlmIChJU19FUlIodCkpIHtcbi1cdFx0dXNiX2VycihpbnN0YW5jZSwgXCYjMzQ7JXM6IGZhaWxlZCB0byBjcmVhdGUga2VybmVsX3RocmVhZCAoJWxkKSFcXG5cJiMzNDssXG4tXHRcdFx0XHRfX2Z1bmNfXywgUFRSX0VSUih0KSk7XG4mIzQzO1x0XHR1c2JfZXJyKGluc3RhbmNlLCBcJiMzNDslczogZmFpbGVkIHRvIGNyZWF0ZSBrZXJuZWxfdGhyZWFkICglcGUpIVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRfX2Z1bmNfXywgdCk7XG4gXHRcdHJldHVybiBQVFJfRVJSKHQpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmMgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jXG5pbmRleCA1NmQyYmE4MjRhMGIyLi43YmZlMzdlZDY4YWViIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguY1xuQEAgLTIxOCw4ICYjNDM7MjE4LDggQEAgc3RhdGljIGludCBpbXhfZ2V0X2Nsa3Moc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHRpZiAoSVNfRVJSKGRhdGEtXHUwMDNlY2xrKSkge1xuIFx0XHRcdHJldCA9IFBUUl9FUlIoZGF0YS1cdTAwM2VjbGspO1xuIFx0XHRcdGRldl9lcnIoZGV2LFxuLVx0XHRcdFx0XCYjMzQ7RmFpbGVkIHRvIGdldCBjbGtzLCBlcnI9JWxkLCVsZFxcblwmIzM0Oyxcbi1cdFx0XHRcdFBUUl9FUlIoZGF0YS1cdTAwM2VjbGspLCBQVFJfRVJSKGRhdGEtXHUwMDNlY2xrX2lwZykpO1xuJiM0MztcdFx0XHRcdFwmIzM0O0ZhaWxlZCB0byBnZXQgY2xrcywgZXJyPSVwZSwlcGVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ZGF0YS1cdTAwM2VjbGssIGRhdGEtXHUwMDNlY2xrX2lwZyk7XG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdFx0fVxuIFx0XHQvKiBHZXQgd2FrZXVwIGNsb2NrLiBOb3QgYWxsIG9mIHRoZSBwbGF0Zm9ybXMgbmVlZCB0b1xuQEAgLTQ0OCw4ICYjNDM7NDQ4LDggQEAgc3RhdGljIGludCBjaV9oZHJjX2lteF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRwaW5jdHJsX2hzaWNfaWRsZSA9IHBpbmN0cmxfbG9va3VwX3N0YXRlKGRhdGEtXHUwMDNlcGluY3RybCwgXCYjMzQ7aWRsZVwmIzM0Oyk7XG4gXHRcdGlmIChJU19FUlIocGluY3RybF9oc2ljX2lkbGUpKSB7XG4gXHRcdFx0ZGV2X2VycihkZXYsXG4tXHRcdFx0XHRcJiMzNDtwaW5jdHJsX2hzaWNfaWRsZSBsb29rdXAgZmFpbGVkLCBlcnI9JWxkXFxuXCYjMzQ7LFxuLVx0XHRcdFx0XHRQVFJfRVJSKHBpbmN0cmxfaHNpY19pZGxlKSk7XG4mIzQzO1x0XHRcdFx0XCYjMzQ7cGluY3RybF9oc2ljX2lkbGUgbG9va3VwIGZhaWxlZCwgZXJyPSVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdHBpbmN0cmxfaHNpY19pZGxlKTtcbiBcdFx0XHRyZXQgPSBQVFJfRVJSKHBpbmN0cmxfaHNpY19pZGxlKTtcbiBcdFx0XHRnb3RvIGVycl9wdXQ7XG4gXHRcdH1cbkBAIC00NjQsOCAmIzQzOzQ2NCw4IEBAIHN0YXRpYyBpbnQgY2lfaGRyY19pbXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0XHRcdFx0XHRcdFx0XCYjMzQ7YWN0aXZlXCYjMzQ7KTtcbiBcdFx0aWYgKElTX0VSUihkYXRhLVx1MDAzZXBpbmN0cmxfaHNpY19hY3RpdmUpKSB7XG4gXHRcdFx0ZGV2X2VycihkZXYsXG4tXHRcdFx0XHRcJiMzNDtwaW5jdHJsX2hzaWNfYWN0aXZlIGxvb2t1cCBmYWlsZWQsIGVycj0lbGRcXG5cJiMzNDssXG4tXHRcdFx0XHRcdFBUUl9FUlIoZGF0YS1cdTAwM2VwaW5jdHJsX2hzaWNfYWN0aXZlKSk7XG4mIzQzO1x0XHRcdFx0XCYjMzQ7cGluY3RybF9oc2ljX2FjdGl2ZSBsb29rdXAgZmFpbGVkLCBlcnI9JXBlXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0ZGF0YS1cdTAwM2VwaW5jdHJsX2hzaWNfYWN0aXZlKTtcbiBcdFx0XHRyZXQgPSBQVFJfRVJSKGRhdGEtXHUwMDNlcGluY3RybF9oc2ljX2FjdGl2ZSk7XG4gXHRcdFx0Z290byBlcnJfcHV0O1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jXG5pbmRleCAwNzU2M2JlMDAxM2Y0Li4wOWRiOGE0ZWFjZTIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmNcbkBAIC02ODAsOCAmIzQzOzY4MCw4IEBAIHN0YXRpYyBpbnQgY2lfZ2V0X3BsYXRkYXRhKHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHQvKiBubyB2YnVzIHJlZ3VsYXRvciBpcyBuZWVkZWQgKi9cbiBcdFx0XHRwbGF0ZGF0YS1cdTAwM2VyZWdfdmJ1cyA9IE5VTEw7XG4gXHRcdH0gZWxzZSBpZiAoSVNfRVJSKHBsYXRkYXRhLVx1MDAzZXJlZ192YnVzKSkge1xuLVx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtHZXR0aW5nIHJlZ3VsYXRvciBlcnJvcjogJWxkXFxuXCYjMzQ7LFxuLVx0XHRcdFx0UFRSX0VSUihwbGF0ZGF0YS1cdTAwM2VyZWdfdmJ1cykpO1xuJiM0MztcdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7R2V0dGluZyByZWd1bGF0b3IgZXJyb3I6ICVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRwbGF0ZGF0YS1cdTAwM2VyZWdfdmJ1cyk7XG4gXHRcdFx0cmV0dXJuIFBUUl9FUlIocGxhdGRhdGEtXHUwMDNlcmVnX3ZidXMpO1xuIFx0XHR9XG4gXHRcdC8qIEdldCBUUEwgc3VwcG9ydCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jXG5pbmRleCA1MjYyZTExYzEyY2QzLi44Yzc1MGE5M2MzNTAwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY29yZS9odWIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvY29yZS9odWIuY1xuQEAgLTU2NzEsOCAmIzQzOzU2NzEsNyBAQCBzdGF0aWMgdm9pZCBodWJfcG9ydF9jb25uZWN0X2NoYW5nZShzdHJ1Y3QgdXNiX2h1YiAqaHViLCBpbnQgcG9ydDEsXG4gXHRcdFx0ZGVzY3IgPSB1c2JfZ2V0X2RldmljZV9kZXNjcmlwdG9yKHVkZXYpO1xuIFx0XHRcdGlmIChJU19FUlIoZGVzY3IpKSB7XG4gXHRcdFx0XHRkZXZfZGJnKFx1MDAyNnVkZXYtXHUwMDNlZGV2LFxuLVx0XHRcdFx0XHRcdFwmIzM0O2NhbiYjMzk7dCByZWFkIGRldmljZSBkZXNjcmlwdG9yICVsZFxcblwmIzM0Oyxcbi1cdFx0XHRcdFx0XHRQVFJfRVJSKGRlc2NyKSk7XG4mIzQzO1x0XHRcdFx0XHRcdFwmIzM0O2NhbiYjMzk7dCByZWFkIGRldmljZSBkZXNjcmlwdG9yICVwZVxcblwmIzM0OywgZGVzY3IpO1xuIFx0XHRcdH0gZWxzZSB7XG4gXHRcdFx0XHRpZiAoZGVzY3JpcHRvcnNfY2hhbmdlZCh1ZGV2LCBkZXNjcixcbiBcdFx0XHRcdFx0XHR1ZGV2LVx1MDAzZWJvcykpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jIGIvZHJpdmVycy91c2IvZHdjMi9wY2kuY1xuaW5kZXggZjNhMWU0MjMyYTMxZC4uN2ZmOWM0ZGY5NDFlMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2R3YzIvcGNpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2R3YzIvcGNpLmNcbkBAIC02OCw4ICYjNDM7NjgsNyBAQCBzdGF0aWMgaW50IGR3YzJfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2ksXG4gXG4gXHRwaHkgPSB1c2JfcGh5X2dlbmVyaWNfcmVnaXN0ZXIoKTtcbiBcdGlmIChJU19FUlIocGh5KSkge1xuLVx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7ZXJyb3IgcmVnaXN0ZXJpbmcgZ2VuZXJpYyBQSFkgKCVsZClcXG5cJiMzNDssXG4tXHRcdFx0UFRSX0VSUihwaHkpKTtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtlcnJvciByZWdpc3RlcmluZyBnZW5lcmljIFBIWSAoJXBlKVxcblwmIzM0OywgcGh5KTtcbiBcdFx0cmV0dXJuIFBUUl9FUlIocGh5KTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV9zZXJpYWwuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jXG5pbmRleCBjZGQxZGZjNjY2YzRmLi5kYTMxZTVjZWEwYTU1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jXG5AQCAtMTMxMSw4ICYjNDM7MTMxMSw4IEBAIGludCBnc2VyaWFsX2FsbG9jX2xpbmVfbm9fY29uc29sZSh1bnNpZ25lZCBjaGFyICpsaW5lX251bSlcbiBcdHR0eV9kZXYgPSB0dHlfcG9ydF9yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2cG9ydC1cdTAwM2Vwb3J0LFxuIFx0XHRcdGdzX3R0eV9kcml2ZXIsIHBvcnRfbnVtLCBOVUxMKTtcbiBcdGlmIChJU19FUlIodHR5X2RldikpIHtcbi1cdFx0cHJfZXJyKFwmIzM0OyVzOiBmYWlsZWQgdG8gcmVnaXN0ZXIgdHR5IGZvciBwb3J0ICVkLCBlcnIgJWxkXFxuXCYjMzQ7LFxuLVx0XHRcdFx0X19mdW5jX18sIHBvcnRfbnVtLCBQVFJfRVJSKHR0eV9kZXYpKTtcbiYjNDM7XHRcdHByX2VycihcJiMzNDslczogZmFpbGVkIHRvIHJlZ2lzdGVyIHR0eSBmb3IgcG9ydCAlZCwgZXJyICVwZVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRfX2Z1bmNfXywgcG9ydF9udW0sIHR0eV9kZXYpO1xuIFxuIFx0XHRyZXQgPSBQVFJfRVJSKHR0eV9kZXYpO1xuIFx0XHRtdXRleF9sb2NrKFx1MDAyNnBvcnRzW3BvcnRfbnVtXS5sb2NrKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuYyBiL2RyaXZlcnMvdXNiL21pc2MvdXNiMzUwMy5jXG5pbmRleCA3NTk3NzBhMTMyNjA2Li4xMTYwZGM1OTRiMWMxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL21pc2MvdXNiMzUwMy5jXG5AQCAtMjAyLDggJiM0MzsyMDIsNyBAQCBzdGF0aWMgaW50IHVzYjM1MDNfcHJvYmUoc3RydWN0IHVzYjM1MDMgKmh1YilcbiBcbiBcdFx0aHViLVx1MDAzZWNsayA9IGRldm1fY2xrX2dldF9vcHRpb25hbChkZXYsIFwmIzM0O3JlZmNsa1wmIzM0Oyk7XG4gXHRcdGlmIChJU19FUlIoaHViLVx1MDAzZWNsaykpIHtcbi1cdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7dW5hYmxlIHRvIHJlcXVlc3QgcmVmY2xrICglbGQpXFxuXCYjMzQ7LFxuLVx0XHRcdFx0XHRQVFJfRVJSKGh1Yi1cdTAwM2VjbGspKTtcbiYjNDM7XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O3VuYWJsZSB0byByZXF1ZXN0IHJlZmNsayAoJXBlKVxcblwmIzM0OywgaHViLVx1MDAzZWNsayk7XG4gXHRcdFx0cmV0dXJuIFBUUl9FUlIoaHViLVx1MDAzZWNsayk7XG4gXHRcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy9tdXgvcGkzdXNiMzA1MzIuYyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jXG5pbmRleCA5ODU2ODNmZTQ5ZTkxLi5iMzJmNGM0MzNkZTk1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jXG5AQCAtMTM5LDggJiM0MzsxMzksNyBAQCBzdGF0aWMgaW50IHBpM3VzYjMwNTMyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gXG4gXHRwaS1cdTAwM2VzdyA9IHR5cGVjX3N3aXRjaF9yZWdpc3RlcihkZXYsIFx1MDAyNnN3X2Rlc2MpO1xuIFx0aWYgKElTX0VSUihwaS1cdTAwM2VzdykpIHtcbi1cdFx0ZGV2X2VycihkZXYsIFwmIzM0O0Vycm9yIHJlZ2lzdGVyaW5nIHR5cGVjIHN3aXRjaDogJWxkXFxuXCYjMzQ7LFxuLVx0XHRcdFBUUl9FUlIocGktXHUwMDNlc3cpKTtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtFcnJvciByZWdpc3RlcmluZyB0eXBlYyBzd2l0Y2g6ICVwZVxcblwmIzM0OywgcGktXHUwMDNlc3cpO1xuIFx0XHRyZXR1cm4gUFRSX0VSUihwaS1cdTAwM2Vzdyk7XG4gXHR9XG4gXG5AQCAtMTUxLDggJiM0MzsxNTAsNyBAQCBzdGF0aWMgaW50IHBpM3VzYjMwNTMyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gXHRwaS1cdTAwM2VtdXggPSB0eXBlY19tdXhfcmVnaXN0ZXIoZGV2LCBcdTAwMjZtdXhfZGVzYyk7XG4gXHRpZiAoSVNfRVJSKHBpLVx1MDAzZW11eCkpIHtcbiBcdFx0dHlwZWNfc3dpdGNoX3VucmVnaXN0ZXIocGktXHUwMDNlc3cpO1xuLVx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgbXV4OiAlbGRcXG5cJiMzNDssXG4tXHRcdFx0UFRSX0VSUihwaS1cdTAwM2VtdXgpKTtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtFcnJvciByZWdpc3RlcmluZyB0eXBlYyBtdXg6ICVwZVxcblwmIzM0OywgcGktXHUwMDNlbXV4KTtcbiBcdFx0cmV0dXJuIFBUUl9FUlIocGktXHUwMDNlbXV4KTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uYyBiL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jXG5pbmRleCA4OWVlYzIwYTIwNjRjLi5hZDEwNDcwZWE3M2IwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jXG5AQCAtNDc5Niw3ICYjNDM7NDc5Niw3IEBAIHN0YXRpYyB2b2lkIHRjcG1fdHlwZWNfY29ubmVjdChzdHJ1Y3QgdGNwbV9wb3J0ICpwb3J0KVxuIFx0XHRcdHBvcnQtXHUwMDNlcGFydG5lcl9kZXNjLmFjY2Vzc29yeSA9IFRZUEVDX0FDQ0VTU09SWV9OT05FO1xuIFx0XHRwYXJ0bmVyID0gdHlwZWNfcmVnaXN0ZXJfcGFydG5lcihwb3J0LVx1MDAzZXR5cGVjX3BvcnQsIFx1MDAyNnBvcnQtXHUwMDNlcGFydG5lcl9kZXNjKTtcbiBcdFx0aWYgKElTX0VSUihwYXJ0bmVyKSkge1xuLVx0XHRcdGRldl9lcnIocG9ydC1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBwYXJ0bmVyICglbGQpXFxuXCYjMzQ7LCBQVFJfRVJSKHBhcnRuZXIpKTtcbiYjNDM7XHRcdFx0ZGV2X2Vycihwb3J0LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIHBhcnRuZXIgKCVwZSlcXG5cJiMzNDssIHBhcnRuZXIpO1xuIFx0XHRcdHJldHVybjtcbiBcdFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmMgYi9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jXG5pbmRleCA2MDYyODc1ZmIwNGE5Li44NmQxM2FiNDE2NzA0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuY1xuQEAgLTI3Nyw4ICYjNDM7Mjc3LDggQEAgc3RhdGljIHZvaWQgd3VzYjM4MDFfaHdfdXBkYXRlKHN0cnVjdCB3dXNiMzgwMSAqd3VzYjM4MDEpXG4gXHRcdGlmIChwYXJ0bmVyX3R5cGUgIT0gV1VTQjM4MDFfU1RBVF9QQVJUTkVSX1NUQU5EQlkpIHtcbiBcdFx0XHR3dXNiMzgwMS1cdTAwM2VwYXJ0bmVyID0gdHlwZWNfcmVnaXN0ZXJfcGFydG5lcihwb3J0LCBcdTAwMjZkZXNjKTtcbiBcdFx0XHRpZiAoSVNfRVJSKHd1c2IzODAxLVx1MDAzZXBhcnRuZXIpKVxuLVx0XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBwYXJ0bmVyOiAlbGRcXG5cJiMzNDssXG4tXHRcdFx0XHRcdFBUUl9FUlIod3VzYjM4MDEtXHUwMDNlcGFydG5lcikpO1xuJiM0MztcdFx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lcjogJXBlXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0d3VzYjM4MDEtXHUwMDNlcGFydG5lcik7XG4gXHRcdH1cbiBcbiBcdFx0ZGF0YV9yb2xlID0gcHdyX3JvbGUgPT0gVFlQRUNfU09VUkNFID8gVFlQRUNfSE9TVCA6IFRZUEVDX0RFVklDRTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSByZXBsYWNlcyAlbGQgYW5kIFBUUl9FUlIoeCkgd2l0aCAlcGUgYW5kIHggaW4gcHJpbnRrLWxpa2UgZnVuY3Rpb25zIChkZXZfZXJyLCBwcl9lcnIsIGRldl9kYmcsIHVzYl9lcnIpLiBUaGlzIGlzIGEgcHVyZWx5IGRlY29yYXRpdmUvbG9nZ2luZyBjaGFuZ2UgYW5kIGRvZXMgbm90IGFsdGVyIGFueSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGU2ZWJjZmEwYzhlNzJlNmY4MWJmYjI2NzQyYzJkN2M4MjdkMmQ1ZjcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyAyIDEyOjMwOjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jIGIvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jCmluZGV4IDk2MDBlMWVjMDk5MzAuLmM3OGNhYTFiNTdjOWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9hdG0vdXNiYXRtLmMKQEAgLTk3OSw4ICYjNDM7OTc5LDggQEAgc3RhdGljIGludCB1c2JhdG1faGVhdnlfaW5pdChzdHJ1Y3QgdXNiYXRtX2RhdGEgKmluc3RhbmNlKQogCXQgPSBrdGhyZWFkX2NyZWF0ZSh1c2JhdG1fZG9faGVhdnlfaW5pdCwgaW5zdGFuY2UsICYjMzQ7JXMmIzM0OywKIAkJCWluc3RhbmNlLSZndDtkcml2ZXItJmd0O2RyaXZlcl9uYW1lKTsKIAlpZiAoSVNfRVJSKHQpKSB7Ci0JCXVzYl9lcnIoaW5zdGFuY2UsICYjMzQ7JXM6IGZhaWxlZCB0byBjcmVhdGUga2VybmVsX3RocmVhZCAoJWxkKSFcbiYjMzQ7LAotCQkJCV9fZnVuY19fLCBQVFJfRVJSKHQpKTsKJiM0MzsJCXVzYl9lcnIoaW5zdGFuY2UsICYjMzQ7JXM6IGZhaWxlZCB0byBjcmVhdGUga2VybmVsX3RocmVhZCAoJXBlKSFcbiYjMzQ7LAomIzQzOwkJCQlfX2Z1bmNfXywgdCk7CiAJCXJldHVybiBQVFJfRVJSKHQpOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguYyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmMKaW5kZXggNTZkMmJhODI0YTBiMi4uN2JmZTM3ZWQ2OGFlYiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jCkBAIC0yMTgsOCAmIzQzOzIxOCw4IEBAIHN0YXRpYyBpbnQgaW14X2dldF9jbGtzKHN0cnVjdCBkZXZpY2UgKmRldikKIAkJaWYgKElTX0VSUihkYXRhLSZndDtjbGspKSB7CiAJCQlyZXQgPSBQVFJfRVJSKGRhdGEtJmd0O2Nsayk7CiAJCQlkZXZfZXJyKGRldiwKLQkJCQkmIzM0O0ZhaWxlZCB0byBnZXQgY2xrcywgZXJyPSVsZCwlbGRcbiYjMzQ7LAotCQkJCVBUUl9FUlIoZGF0YS0mZ3Q7Y2xrKSwgUFRSX0VSUihkYXRhLSZndDtjbGtfaXBnKSk7CiYjNDM7CQkJCSYjMzQ7RmFpbGVkIHRvIGdldCBjbGtzLCBlcnI9JXBlLCVwZVxuJiMzNDssCiYjNDM7CQkJCWRhdGEtJmd0O2NsaywgZGF0YS0mZ3Q7Y2xrX2lwZyk7CiAJCQlyZXR1cm4gcmV0OwogCQl9CiAJCS8qIEdldCB3YWtldXAgY2xvY2suIE5vdCBhbGwgb2YgdGhlIHBsYXRmb3JtcyBuZWVkIHRvCkBAIC00NDgsOCAmIzQzOzQ0OCw4IEBAIHN0YXRpYyBpbnQgY2lfaGRyY19pbXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJcGluY3RybF9oc2ljX2lkbGUgPSBwaW5jdHJsX2xvb2t1cF9zdGF0ZShkYXRhLSZndDtwaW5jdHJsLCAmIzM0O2lkbGUmIzM0Oyk7CiAJCWlmIChJU19FUlIocGluY3RybF9oc2ljX2lkbGUpKSB7CiAJCQlkZXZfZXJyKGRldiwKLQkJCQkmIzM0O3BpbmN0cmxfaHNpY19pZGxlIGxvb2t1cCBmYWlsZWQsIGVycj0lbGRcbiYjMzQ7LAotCQkJCQlQVFJfRVJSKHBpbmN0cmxfaHNpY19pZGxlKSk7CiYjNDM7CQkJCSYjMzQ7cGluY3RybF9oc2ljX2lkbGUgbG9va3VwIGZhaWxlZCwgZXJyPSVwZVxuJiMzNDssCiYjNDM7CQkJCQlwaW5jdHJsX2hzaWNfaWRsZSk7CiAJCQlyZXQgPSBQVFJfRVJSKHBpbmN0cmxfaHNpY19pZGxlKTsKIAkJCWdvdG8gZXJyX3B1dDsKIAkJfQpAQCAtNDY0LDggJiM0Mzs0NjQsOCBAQCBzdGF0aWMgaW50IGNpX2hkcmNfaW14X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCQkJCQkJCSYjMzQ7YWN0aXZlJiMzNDspOwogCQlpZiAoSVNfRVJSKGRhdGEtJmd0O3BpbmN0cmxfaHNpY19hY3RpdmUpKSB7CiAJCQlkZXZfZXJyKGRldiwKLQkJCQkmIzM0O3BpbmN0cmxfaHNpY19hY3RpdmUgbG9va3VwIGZhaWxlZCwgZXJyPSVsZFxuJiMzNDssCi0JCQkJCVBUUl9FUlIoZGF0YS0mZ3Q7cGluY3RybF9oc2ljX2FjdGl2ZSkpOwomIzQzOwkJCQkmIzM0O3BpbmN0cmxfaHNpY19hY3RpdmUgbG9va3VwIGZhaWxlZCwgZXJyPSVwZVxuJiMzNDssCiYjNDM7CQkJCQlkYXRhLSZndDtwaW5jdHJsX2hzaWNfYWN0aXZlKTsKIAkJCXJldCA9IFBUUl9FUlIoZGF0YS0mZ3Q7cGluY3RybF9oc2ljX2FjdGl2ZSk7CiAJCQlnb3RvIGVycl9wdXQ7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NvcmUuYyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NvcmUuYwppbmRleCAwNzU2M2JlMDAxM2Y0Li4wOWRiOGE0ZWFjZTIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jCkBAIC02ODAsOCAmIzQzOzY4MCw4IEBAIHN0YXRpYyBpbnQgY2lfZ2V0X3BsYXRkYXRhKHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJCS8qIG5vIHZidXMgcmVndWxhdG9yIGlzIG5lZWRlZCAqLwogCQkJcGxhdGRhdGEtJmd0O3JlZ192YnVzID0gTlVMTDsKIAkJfSBlbHNlIGlmIChJU19FUlIocGxhdGRhdGEtJmd0O3JlZ192YnVzKSkgewotCQkJZGV2X2VycihkZXYsICYjMzQ7R2V0dGluZyByZWd1bGF0b3IgZXJyb3I6ICVsZFxuJiMzNDssCi0JCQkJUFRSX0VSUihwbGF0ZGF0YS0mZ3Q7cmVnX3ZidXMpKTsKJiM0MzsJCQlkZXZfZXJyKGRldiwgJiMzNDtHZXR0aW5nIHJlZ3VsYXRvciBlcnJvcjogJXBlXG4mIzM0OywKJiM0MzsJCQkJcGxhdGRhdGEtJmd0O3JlZ192YnVzKTsKIAkJCXJldHVybiBQVFJfRVJSKHBsYXRkYXRhLSZndDtyZWdfdmJ1cyk7CiAJCX0KIAkJLyogR2V0IFRQTCBzdXBwb3J0ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jIGIvZHJpdmVycy91c2IvY29yZS9odWIuYwppbmRleCA1MjYyZTExYzEyY2QzLi44Yzc1MGE5M2MzNTAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMKQEAgLTU2NzEsOCAmIzQzOzU2NzEsNyBAQCBzdGF0aWMgdm9pZCBodWJfcG9ydF9jb25uZWN0X2NoYW5nZShzdHJ1Y3QgdXNiX2h1YiAqaHViLCBpbnQgcG9ydDEsCiAJCQlkZXNjciA9IHVzYl9nZXRfZGV2aWNlX2Rlc2NyaXB0b3IodWRldik7CiAJCQlpZiAoSVNfRVJSKGRlc2NyKSkgewogCQkJCWRldl9kYmcoJmFtcDt1ZGV2LSZndDtkZXYsCi0JCQkJCQkmIzM0O2NhbiYjMzk7dCByZWFkIGRldmljZSBkZXNjcmlwdG9yICVsZFxuJiMzNDssCi0JCQkJCQlQVFJfRVJSKGRlc2NyKSk7CiYjNDM7CQkJCQkJJiMzNDtjYW4mIzM5O3QgcmVhZCBkZXZpY2UgZGVzY3JpcHRvciAlcGVcbiYjMzQ7LCBkZXNjcik7CiAJCQl9IGVsc2UgewogCQkJCWlmIChkZXNjcmlwdG9yc19jaGFuZ2VkKHVkZXYsIGRlc2NyLAogCQkJCQkJdWRldi0mZ3Q7Ym9zKSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZHdjMi9wY2kuYyBiL2RyaXZlcnMvdXNiL2R3YzIvcGNpLmMKaW5kZXggZjNhMWU0MjMyYTMxZC4uN2ZmOWM0ZGY5NDFlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZHdjMi9wY2kuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jCkBAIC02OCw4ICYjNDM7NjgsNyBAQCBzdGF0aWMgaW50IGR3YzJfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2ksCiAKIAlwaHkgPSB1c2JfcGh5X2dlbmVyaWNfcmVnaXN0ZXIoKTsKIAlpZiAoSVNfRVJSKHBoeSkpIHsKLQkJZGV2X2VycihkZXYsICYjMzQ7ZXJyb3IgcmVnaXN0ZXJpbmcgZ2VuZXJpYyBQSFkgKCVsZClcbiYjMzQ7LAotCQkJUFRSX0VSUihwaHkpKTsKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O2Vycm9yIHJlZ2lzdGVyaW5nIGdlbmVyaWMgUEhZICglcGUpXG4mIzM0OywgcGh5KTsKIAkJcmV0dXJuIFBUUl9FUlIocGh5KTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmMKaW5kZXggY2RkMWRmYzY2NmM0Zi4uZGEzMWU1Y2VhMGE1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmMKQEAgLTEzMTEsOCAmIzQzOzEzMTEsOCBAQCBpbnQgZ3NlcmlhbF9hbGxvY19saW5lX25vX2NvbnNvbGUodW5zaWduZWQgY2hhciAqbGluZV9udW0pCiAJdHR5X2RldiA9IHR0eV9wb3J0X3JlZ2lzdGVyX2RldmljZSgmYW1wO3BvcnQtJmd0O3BvcnQsCiAJCQlnc190dHlfZHJpdmVyLCBwb3J0X251bSwgTlVMTCk7CiAJaWYgKElTX0VSUih0dHlfZGV2KSkgewotCQlwcl9lcnIoJiMzNDslczogZmFpbGVkIHRvIHJlZ2lzdGVyIHR0eSBmb3IgcG9ydCAlZCwgZXJyICVsZFxuJiMzNDssCi0JCQkJX19mdW5jX18sIHBvcnRfbnVtLCBQVFJfRVJSKHR0eV9kZXYpKTsKJiM0MzsJCXByX2VycigmIzM0OyVzOiBmYWlsZWQgdG8gcmVnaXN0ZXIgdHR5IGZvciBwb3J0ICVkLCBlcnIgJXBlXG4mIzM0OywKJiM0MzsJCQkJX19mdW5jX18sIHBvcnRfbnVtLCB0dHlfZGV2KTsKIAogCQlyZXQgPSBQVFJfRVJSKHR0eV9kZXYpOwogCQltdXRleF9sb2NrKCZhbXA7cG9ydHNbcG9ydF9udW1dLmxvY2spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmMgYi9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuYwppbmRleCA3NTk3NzBhMTMyNjA2Li4xMTYwZGM1OTRiMWMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuYwpAQCAtMjAyLDggJiM0MzsyMDIsNyBAQCBzdGF0aWMgaW50IHVzYjM1MDNfcHJvYmUoc3RydWN0IHVzYjM1MDMgKmh1YikKIAogCQlodWItJmd0O2NsayA9IGRldm1fY2xrX2dldF9vcHRpb25hbChkZXYsICYjMzQ7cmVmY2xrJiMzNDspOwogCQlpZiAoSVNfRVJSKGh1Yi0mZ3Q7Y2xrKSkgewotCQkJZGV2X2VycihkZXYsICYjMzQ7dW5hYmxlIHRvIHJlcXVlc3QgcmVmY2xrICglbGQpXG4mIzM0OywKLQkJCQkJUFRSX0VSUihodWItJmd0O2NsaykpOwomIzQzOwkJCWRldl9lcnIoZGV2LCAmIzM0O3VuYWJsZSB0byByZXF1ZXN0IHJlZmNsayAoJXBlKVxuJiMzNDssIGh1Yi0mZ3Q7Y2xrKTsKIAkJCXJldHVybiBQVFJfRVJSKGh1Yi0mZ3Q7Y2xrKTsKIAkJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy9tdXgvcGkzdXNiMzA1MzIuYyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jCmluZGV4IDk4NTY4M2ZlNDllOTEuLmIzMmY0YzQzM2RlOTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jCkBAIC0xMzksOCAmIzQzOzEzOSw3IEBAIHN0YXRpYyBpbnQgcGkzdXNiMzA1MzJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAogCXBpLSZndDtzdyA9IHR5cGVjX3N3aXRjaF9yZWdpc3RlcihkZXYsICZhbXA7c3dfZGVzYyk7CiAJaWYgKElTX0VSUihwaS0mZ3Q7c3cpKSB7Ci0JCWRldl9lcnIoZGV2LCAmIzM0O0Vycm9yIHJlZ2lzdGVyaW5nIHR5cGVjIHN3aXRjaDogJWxkXG4mIzM0OywKLQkJCVBUUl9FUlIocGktJmd0O3N3KSk7CiYjNDM7CQlkZXZfZXJyKGRldiwgJiMzNDtFcnJvciByZWdpc3RlcmluZyB0eXBlYyBzd2l0Y2g6ICVwZVxuJiMzNDssIHBpLSZndDtzdyk7CiAJCXJldHVybiBQVFJfRVJSKHBpLSZndDtzdyk7CiAJfQogCkBAIC0xNTEsOCAmIzQzOzE1MCw3IEBAIHN0YXRpYyBpbnQgcGkzdXNiMzA1MzJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAlwaS0mZ3Q7bXV4ID0gdHlwZWNfbXV4X3JlZ2lzdGVyKGRldiwgJmFtcDttdXhfZGVzYyk7CiAJaWYgKElTX0VSUihwaS0mZ3Q7bXV4KSkgewogCQl0eXBlY19zd2l0Y2hfdW5yZWdpc3RlcihwaS0mZ3Q7c3cpOwotCQlkZXZfZXJyKGRldiwgJiMzNDtFcnJvciByZWdpc3RlcmluZyB0eXBlYyBtdXg6ICVsZFxuJiMzNDssCi0JCQlQVFJfRVJSKHBpLSZndDttdXgpKTsKJiM0MzsJCWRldl9lcnIoZGV2LCAmIzM0O0Vycm9yIHJlZ2lzdGVyaW5nIHR5cGVjIG11eDogJXBlXG4mIzM0OywgcGktJmd0O211eCk7CiAJCXJldHVybiBQVFJfRVJSKHBpLSZndDttdXgpOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmMgYi9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uYwppbmRleCA4OWVlYzIwYTIwNjRjLi5hZDEwNDcwZWE3M2IwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uYwpAQCAtNDc5Niw3ICYjNDM7NDc5Niw3IEBAIHN0YXRpYyB2b2lkIHRjcG1fdHlwZWNfY29ubmVjdChzdHJ1Y3QgdGNwbV9wb3J0ICpwb3J0KQogCQkJcG9ydC0mZ3Q7cGFydG5lcl9kZXNjLmFjY2Vzc29yeSA9IFRZUEVDX0FDQ0VTU09SWV9OT05FOwogCQlwYXJ0bmVyID0gdHlwZWNfcmVnaXN0ZXJfcGFydG5lcihwb3J0LSZndDt0eXBlY19wb3J0LCAmYW1wO3BvcnQtJmd0O3BhcnRuZXJfZGVzYyk7CiAJCWlmIChJU19FUlIocGFydG5lcikpIHsKLQkJCWRldl9lcnIocG9ydC0mZ3Q7ZGV2LCAmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBwYXJ0bmVyICglbGQpXG4mIzM0OywgUFRSX0VSUihwYXJ0bmVyKSk7CiYjNDM7CQkJZGV2X2Vycihwb3J0LSZndDtkZXYsICYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIHBhcnRuZXIgKCVwZSlcbiYjMzQ7LCBwYXJ0bmVyKTsKIAkJCXJldHVybjsKIAkJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jIGIvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuYwppbmRleCA2MDYyODc1ZmIwNGE5Li44NmQxM2FiNDE2NzA0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmMKQEAgLTI3Nyw4ICYjNDM7Mjc3LDggQEAgc3RhdGljIHZvaWQgd3VzYjM4MDFfaHdfdXBkYXRlKHN0cnVjdCB3dXNiMzgwMSAqd3VzYjM4MDEpCiAJCWlmIChwYXJ0bmVyX3R5cGUgIT0gV1VTQjM4MDFfU1RBVF9QQVJUTkVSX1NUQU5EQlkpIHsKIAkJCXd1c2IzODAxLSZndDtwYXJ0bmVyID0gdHlwZWNfcmVnaXN0ZXJfcGFydG5lcihwb3J0LCAmYW1wO2Rlc2MpOwogCQkJaWYgKElTX0VSUih3dXNiMzgwMS0mZ3Q7cGFydG5lcikpCi0JCQkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIHBhcnRuZXI6ICVsZFxuJiMzNDssCi0JCQkJCVBUUl9FUlIod3VzYjM4MDEtJmd0O3BhcnRuZXIpKTsKJiM0MzsJCQkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIHBhcnRuZXI6ICVwZVxuJiMzNDssCiYjNDM7CQkJCQl3dXNiMzgwMS0mZ3Q7cGFydG5lcik7CiAJCX0KIAogCQlkYXRhX3JvbGUgPSBwd3Jfcm9sZSA9PSBUWVBFQ19TT1VSQ0UgPyBUWVBFQ19IT1NUIDogVFlQRUNfREVWSUNFOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDMwCgkJCQkJCQlvdXRwdXQ6IDg5CgkJCQkJCQl0aG91Z2h0czogNTY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFRyaXZpYWwgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciB3aGF0JiMzOTtzIGhhcHBlbmluZy4gVGhleSYjMzk7cmUgY2hhbmdpbmcgaG93IGVycm9yIHBvaW50ZXJzIGFyZSBsb2dnZWQgd2l0aGluIHRoZSBVU0Igc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGEgY29zbWV0aWMgY2hhbmdlIOKAkyByZXBsYWNpbmcgYFBUUl9FUlIoeClgIGFuZCB0aGUgYCVsZGAgZm9ybWF0IHNwZWNpZmllciB3aXRoIGAlcGVgIHRvIHByaW50IHRoZSBlcnJvciBwb2ludGVyIGl0c2VsZi4gSXQmIzM5O3MgYSBjbGVhbnVwLCBtYWtpbmcgdGhlIGVycm9yIG1lc3NhZ2VzIGEgbGl0dGxlIG1vcmUgY29uc2lzdGVudCBpbiB0aGVpciBwcmVzZW50YXRpb24sIHRoYXQmIzM5O3MgYWxsLgoKTGV0IG1lIGp1c3QgcXVpY2tseSBydW4gdGhyb3VnaCB0aGUgZGlmZiB0byBjb25maXJtLi4uIFllcCwgYHVzYmF0bS5jYCwgYGNpX2hkcmNfaW14LmNgLCBgY29yZS5jYCwgYGh1Yi5jYCwgYGR3YzIvcGNpLmNgLCBgdV9zZXJpYWwuY2AsIGB1c2IzNTAzLmNgLCBgcGkzdXNiMzA1MzIuY2AsIGB0Y3BtLmNgLCBhbmQgYHd1c2IzODAxLmNgIOKAkyBhbGwgdGhlIHNhbWUgcGF0dGVybi4gSXQmIzM5O3MganVzdCBhIGNvbnNpc3RlbnQgbG9nZ2luZyBpbXByb3ZlbWVudCwgbm90aGluZyBtb3JlLiBObyBmdW5jdGlvbmFsIGNoYW5nZXMsIG5vIGFsdGVyZWQgY29udHJvbCBmbG93LgoKR2l2ZW4gdGhhdCB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWxpdHkgb3IgY2hhbmdlIGV4aXN0aW5nIGJlaGF2aW9yIGluIGEgbWVhbmluZ2Z1bCB3YXksIGl0JiMzOTtzIGRlZmluaXRlbHkgbm90IHNvbWV0aGluZyBJJiMzOTtkIGNvbnNpZGVyIHdvcnRoIGZ1enppbmcuIEl0JiMzOTtzIGEgc3RyYWlnaHRmb3J3YXJkIGxvZ2dpbmcgdHdlYWsuIFNvLCBJJiMzOTtsbCBnbyBhaGVhZCBhbmQgc2V0IHRoZSByZXN1bHRzIGFjY29yZGluZ2x5LiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpdCBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVwbGFjZXMgJWxkIGFuZCBQVFJfRVJSKHgpIHdpdGggJXBlIGFuZCB4IGluIHByaW50ay1saWtlIGZ1bmN0aW9ucyAoZGV2X2VyciwgcHJfZXJyLCBkZXZfZGJnLCB1c2JfZXJyKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlL2xvZ2dpbmcgY2hhbmdlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVwbGFjZXMgJWxkIGFuZCBQVFJfRVJSKHgpIHdpdGggJXBlIGFuZCB4IGluIHByaW50ay1saWtlIGZ1bmN0aW9ucyAoZGV2X2VyciwgcHJfZXJyLCBkZXZfZGJnLCB1c2JfZXJyKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlL2xvZ2dpbmcgY2hhbmdlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMDo1NS4wOTc3OTUyNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTQ0MTIxMDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHJlcGxhY2VzICVsZCBhbmQgUFRSX0VSUih4KSB3aXRoICVwZSBhbmQgeCBpbiBwcmludGstbGlrZSBmdW5jdGlvbnMgKGRldl9lcnIsIHByX2VyciwgZGV2X2RiZywgdXNiX2VycikuIFRoaXMgaXMgYSBwdXJlbHkgZGVjb3JhdGl2ZS9sb2dnaW5nIGNoYW5nZSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMDo1NS4wOTc4MDE4OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk2MTI5NjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTZlYmNmYTBjOGU3MmU2ZjgxYmZiMjY3NDJjMmQ3YzgyN2QyZDVmN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAyIDEyOjMwOjU0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uYyBiL2RyaXZlcnMvdXNiL2F0bS91c2JhdG0uY1xcbmluZGV4IDk2MDBlMWVjMDk5MzAuLmM3OGNhYTFiNTdjOWQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jXFxuKysrIGIvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jXFxuQEAgLTk3OSw4ICs5NzksOCBAQCBzdGF0aWMgaW50IHVzYmF0bV9oZWF2eV9pbml0KHN0cnVjdCB1c2JhdG1fZGF0YSAqaW5zdGFuY2UpXFxuIFxcdHQgPSBrdGhyZWFkX2NyZWF0ZSh1c2JhdG1fZG9faGVhdnlfaW5pdCwgaW5zdGFuY2UsIFxcXCIlc1xcXCIsXFxuIFxcdFxcdFxcdGluc3RhbmNlLVxcdTAwM2Vkcml2ZXItXFx1MDAzZWRyaXZlcl9uYW1lKTtcXG4gXFx0aWYgKElTX0VSUih0KSkge1xcbi1cXHRcXHR1c2JfZXJyKGluc3RhbmNlLCBcXFwiJXM6IGZhaWxlZCB0byBjcmVhdGUga2VybmVsX3RocmVhZCAoJWxkKSFcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdF9fZnVuY19fLCBQVFJfRVJSKHQpKTtcXG4rXFx0XFx0dXNiX2VycihpbnN0YW5jZSwgXFxcIiVzOiBmYWlsZWQgdG8gY3JlYXRlIGtlcm5lbF90aHJlYWQgKCVwZSkhXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRfX2Z1bmNfXywgdCk7XFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKHQpO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguY1xcbmluZGV4IDU2ZDJiYTgyNGEwYjIuLjdiZmUzN2VkNjhhZWIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguY1xcbisrKyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmNcXG5AQCAtMjE4LDggKzIxOCw4IEBAIHN0YXRpYyBpbnQgaW14X2dldF9jbGtzKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0XFx0aWYgKElTX0VSUihkYXRhLVxcdTAwM2VjbGspKSB7XFxuIFxcdFxcdFxcdHJldCA9IFBUUl9FUlIoZGF0YS1cXHUwMDNlY2xrKTtcXG4gXFx0XFx0XFx0ZGV2X2VycihkZXYsXFxuLVxcdFxcdFxcdFxcdFxcXCJGYWlsZWQgdG8gZ2V0IGNsa3MsIGVycj0lbGQsJWxkXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRQVFJfRVJSKGRhdGEtXFx1MDAzZWNsayksIFBUUl9FUlIoZGF0YS1cXHUwMDNlY2xrX2lwZykpO1xcbitcXHRcXHRcXHRcXHRcXFwiRmFpbGVkIHRvIGdldCBjbGtzLCBlcnI9JXBlLCVwZVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ZGF0YS1cXHUwMDNlY2xrLCBkYXRhLVxcdTAwM2VjbGtfaXBnKTtcXG4gXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0XFx0fVxcbiBcXHRcXHQvKiBHZXQgd2FrZXVwIGNsb2NrLiBOb3QgYWxsIG9mIHRoZSBwbGF0Zm9ybXMgbmVlZCB0b1xcbkBAIC00NDgsOCArNDQ4LDggQEAgc3RhdGljIGludCBjaV9oZHJjX2lteF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRcXHRwaW5jdHJsX2hzaWNfaWRsZSA9IHBpbmN0cmxfbG9va3VwX3N0YXRlKGRhdGEtXFx1MDAzZXBpbmN0cmwsIFxcXCJpZGxlXFxcIik7XFxuIFxcdFxcdGlmIChJU19FUlIocGluY3RybF9oc2ljX2lkbGUpKSB7XFxuIFxcdFxcdFxcdGRldl9lcnIoZGV2LFxcbi1cXHRcXHRcXHRcXHRcXFwicGluY3RybF9oc2ljX2lkbGUgbG9va3VwIGZhaWxlZCwgZXJyPSVsZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0XFx0UFRSX0VSUihwaW5jdHJsX2hzaWNfaWRsZSkpO1xcbitcXHRcXHRcXHRcXHRcXFwicGluY3RybF9oc2ljX2lkbGUgbG9va3VwIGZhaWxlZCwgZXJyPSVwZVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0cGluY3RybF9oc2ljX2lkbGUpO1xcbiBcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKHBpbmN0cmxfaHNpY19pZGxlKTtcXG4gXFx0XFx0XFx0Z290byBlcnJfcHV0O1xcbiBcXHRcXHR9XFxuQEAgLTQ2NCw4ICs0NjQsOCBAQCBzdGF0aWMgaW50IGNpX2hkcmNfaW14X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXCJhY3RpdmVcXFwiKTtcXG4gXFx0XFx0aWYgKElTX0VSUihkYXRhLVxcdTAwM2VwaW5jdHJsX2hzaWNfYWN0aXZlKSkge1xcbiBcXHRcXHRcXHRkZXZfZXJyKGRldixcXG4tXFx0XFx0XFx0XFx0XFxcInBpbmN0cmxfaHNpY19hY3RpdmUgbG9va3VwIGZhaWxlZCwgZXJyPSVsZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0XFx0UFRSX0VSUihkYXRhLVxcdTAwM2VwaW5jdHJsX2hzaWNfYWN0aXZlKSk7XFxuK1xcdFxcdFxcdFxcdFxcXCJwaW5jdHJsX2hzaWNfYWN0aXZlIGxvb2t1cCBmYWlsZWQsIGVycj0lcGVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdGRhdGEtXFx1MDAzZXBpbmN0cmxfaHNpY19hY3RpdmUpO1xcbiBcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKGRhdGEtXFx1MDAzZXBpbmN0cmxfaHNpY19hY3RpdmUpO1xcbiBcXHRcXHRcXHRnb3RvIGVycl9wdXQ7XFxuIFxcdFxcdH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jXFxuaW5kZXggMDc1NjNiZTAwMTNmNC4uMDlkYjhhNGVhY2UyMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmNcXG5AQCAtNjgwLDggKzY4MCw4IEBAIHN0YXRpYyBpbnQgY2lfZ2V0X3BsYXRkYXRhKHN0cnVjdCBkZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0Lyogbm8gdmJ1cyByZWd1bGF0b3IgaXMgbmVlZGVkICovXFxuIFxcdFxcdFxcdHBsYXRkYXRhLVxcdTAwM2VyZWdfdmJ1cyA9IE5VTEw7XFxuIFxcdFxcdH0gZWxzZSBpZiAoSVNfRVJSKHBsYXRkYXRhLVxcdTAwM2VyZWdfdmJ1cykpIHtcXG4tXFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJHZXR0aW5nIHJlZ3VsYXRvciBlcnJvcjogJWxkXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRQVFJfRVJSKHBsYXRkYXRhLVxcdTAwM2VyZWdfdmJ1cykpO1xcbitcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkdldHRpbmcgcmVndWxhdG9yIGVycm9yOiAlcGVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdHBsYXRkYXRhLVxcdTAwM2VyZWdfdmJ1cyk7XFxuIFxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHBsYXRkYXRhLVxcdTAwM2VyZWdfdmJ1cyk7XFxuIFxcdFxcdH1cXG4gXFx0XFx0LyogR2V0IFRQTCBzdXBwb3J0ICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jXFxuaW5kZXggNTI2MmUxMWMxMmNkMy4uOGM3NTBhOTNjMzUwMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jXFxuKysrIGIvZHJpdmVycy91c2IvY29yZS9odWIuY1xcbkBAIC01NjcxLDggKzU2NzEsNyBAQCBzdGF0aWMgdm9pZCBodWJfcG9ydF9jb25uZWN0X2NoYW5nZShzdHJ1Y3QgdXNiX2h1YiAqaHViLCBpbnQgcG9ydDEsXFxuIFxcdFxcdFxcdGRlc2NyID0gdXNiX2dldF9kZXZpY2VfZGVzY3JpcHRvcih1ZGV2KTtcXG4gXFx0XFx0XFx0aWYgKElTX0VSUihkZXNjcikpIHtcXG4gXFx0XFx0XFx0XFx0ZGV2X2RiZyhcXHUwMDI2dWRldi1cXHUwMDNlZGV2LFxcbi1cXHRcXHRcXHRcXHRcXHRcXHRcXFwiY2FuJ3QgcmVhZCBkZXZpY2UgZGVzY3JpcHRvciAlbGRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFBUUl9FUlIoZGVzY3IpKTtcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFxcImNhbid0IHJlYWQgZGV2aWNlIGRlc2NyaXB0b3IgJXBlXFxcXG5cXFwiLCBkZXNjcik7XFxuIFxcdFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdFxcdGlmIChkZXNjcmlwdG9yc19jaGFuZ2VkKHVkZXYsIGRlc2NyLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHR1ZGV2LVxcdTAwM2Vib3MpKSB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2R3YzIvcGNpLmMgYi9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jXFxuaW5kZXggZjNhMWU0MjMyYTMxZC4uN2ZmOWM0ZGY5NDFlMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jXFxuKysrIGIvZHJpdmVycy91c2IvZHdjMi9wY2kuY1xcbkBAIC02OCw4ICs2OCw3IEBAIHN0YXRpYyBpbnQgZHdjMl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaSxcXG4gXFxuIFxcdHBoeSA9IHVzYl9waHlfZ2VuZXJpY19yZWdpc3RlcigpO1xcbiBcXHRpZiAoSVNfRVJSKHBoeSkpIHtcXG4tXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJlcnJvciByZWdpc3RlcmluZyBnZW5lcmljIFBIWSAoJWxkKVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0UFRSX0VSUihwaHkpKTtcXG4rXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJlcnJvciByZWdpc3RlcmluZyBnZW5lcmljIFBIWSAoJXBlKVxcXFxuXFxcIiwgcGh5KTtcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIocGh5KTtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV9zZXJpYWwuY1xcbmluZGV4IGNkZDFkZmM2NjZjNGYuLmRhMzFlNWNlYTBhNTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV9zZXJpYWwuY1xcbkBAIC0xMzExLDggKzEzMTEsOCBAQCBpbnQgZ3NlcmlhbF9hbGxvY19saW5lX25vX2NvbnNvbGUodW5zaWduZWQgY2hhciAqbGluZV9udW0pXFxuIFxcdHR0eV9kZXYgPSB0dHlfcG9ydF9yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNnBvcnQtXFx1MDAzZXBvcnQsXFxuIFxcdFxcdFxcdGdzX3R0eV9kcml2ZXIsIHBvcnRfbnVtLCBOVUxMKTtcXG4gXFx0aWYgKElTX0VSUih0dHlfZGV2KSkge1xcbi1cXHRcXHRwcl9lcnIoXFxcIiVzOiBmYWlsZWQgdG8gcmVnaXN0ZXIgdHR5IGZvciBwb3J0ICVkLCBlcnIgJWxkXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRfX2Z1bmNfXywgcG9ydF9udW0sIFBUUl9FUlIodHR5X2RldikpO1xcbitcXHRcXHRwcl9lcnIoXFxcIiVzOiBmYWlsZWQgdG8gcmVnaXN0ZXIgdHR5IGZvciBwb3J0ICVkLCBlcnIgJXBlXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRfX2Z1bmNfXywgcG9ydF9udW0sIHR0eV9kZXYpO1xcbiBcXG4gXFx0XFx0cmV0ID0gUFRSX0VSUih0dHlfZGV2KTtcXG4gXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cG9ydHNbcG9ydF9udW1dLmxvY2spO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuYyBiL2RyaXZlcnMvdXNiL21pc2MvdXNiMzUwMy5jXFxuaW5kZXggNzU5NzcwYTEzMjYwNi4uMTE2MGRjNTk0YjFjMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuY1xcbisrKyBiL2RyaXZlcnMvdXNiL21pc2MvdXNiMzUwMy5jXFxuQEAgLTIwMiw4ICsyMDIsNyBAQCBzdGF0aWMgaW50IHVzYjM1MDNfcHJvYmUoc3RydWN0IHVzYjM1MDMgKmh1YilcXG4gXFxuIFxcdFxcdGh1Yi1cXHUwMDNlY2xrID0gZGV2bV9jbGtfZ2V0X29wdGlvbmFsKGRldiwgXFxcInJlZmNsa1xcXCIpO1xcbiBcXHRcXHRpZiAoSVNfRVJSKGh1Yi1cXHUwMDNlY2xrKSkge1xcbi1cXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcInVuYWJsZSB0byByZXF1ZXN0IHJlZmNsayAoJWxkKVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0XFx0UFRSX0VSUihodWItXFx1MDAzZWNsaykpO1xcbitcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcInVuYWJsZSB0byByZXF1ZXN0IHJlZmNsayAoJXBlKVxcXFxuXFxcIiwgaHViLVxcdTAwM2VjbGspO1xcbiBcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihodWItXFx1MDAzZWNsayk7XFxuIFxcdFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jIGIvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmNcXG5pbmRleCA5ODU2ODNmZTQ5ZTkxLi5iMzJmNGM0MzNkZTk1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jXFxuKysrIGIvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmNcXG5AQCAtMTM5LDggKzEzOSw3IEBAIHN0YXRpYyBpbnQgcGkzdXNiMzA1MzJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4gXFxuIFxcdHBpLVxcdTAwM2VzdyA9IHR5cGVjX3N3aXRjaF9yZWdpc3RlcihkZXYsIFxcdTAwMjZzd19kZXNjKTtcXG4gXFx0aWYgKElTX0VSUihwaS1cXHUwMDNlc3cpKSB7XFxuLVxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgc3dpdGNoOiAlbGRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFBUUl9FUlIocGktXFx1MDAzZXN3KSk7XFxuK1xcdFxcdGRldl9lcnIoZGV2LCBcXFwiRXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgc3dpdGNoOiAlcGVcXFxcblxcXCIsIHBpLVxcdTAwM2Vzdyk7XFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKHBpLVxcdTAwM2Vzdyk7XFxuIFxcdH1cXG4gXFxuQEAgLTE1MSw4ICsxNTAsNyBAQCBzdGF0aWMgaW50IHBpM3VzYjMwNTMyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuIFxcdHBpLVxcdTAwM2VtdXggPSB0eXBlY19tdXhfcmVnaXN0ZXIoZGV2LCBcXHUwMDI2bXV4X2Rlc2MpO1xcbiBcXHRpZiAoSVNfRVJSKHBpLVxcdTAwM2VtdXgpKSB7XFxuIFxcdFxcdHR5cGVjX3N3aXRjaF91bnJlZ2lzdGVyKHBpLVxcdTAwM2Vzdyk7XFxuLVxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgbXV4OiAlbGRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFBUUl9FUlIocGktXFx1MDAzZW11eCkpO1xcbitcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkVycm9yIHJlZ2lzdGVyaW5nIHR5cGVjIG11eDogJXBlXFxcXG5cXFwiLCBwaS1cXHUwMDNlbXV4KTtcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIocGktXFx1MDAzZW11eCk7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jIGIvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmNcXG5pbmRleCA4OWVlYzIwYTIwNjRjLi5hZDEwNDcwZWE3M2IwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jXFxuKysrIGIvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmNcXG5AQCAtNDc5Niw3ICs0Nzk2LDcgQEAgc3RhdGljIHZvaWQgdGNwbV90eXBlY19jb25uZWN0KHN0cnVjdCB0Y3BtX3BvcnQgKnBvcnQpXFxuIFxcdFxcdFxcdHBvcnQtXFx1MDAzZXBhcnRuZXJfZGVzYy5hY2Nlc3NvcnkgPSBUWVBFQ19BQ0NFU1NPUllfTk9ORTtcXG4gXFx0XFx0cGFydG5lciA9IHR5cGVjX3JlZ2lzdGVyX3BhcnRuZXIocG9ydC1cXHUwMDNldHlwZWNfcG9ydCwgXFx1MDAyNnBvcnQtXFx1MDAzZXBhcnRuZXJfZGVzYyk7XFxuIFxcdFxcdGlmIChJU19FUlIocGFydG5lcikpIHtcXG4tXFx0XFx0XFx0ZGV2X2Vycihwb3J0LVxcdTAwM2VkZXYsIFxcXCJGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lciAoJWxkKVxcXFxuXFxcIiwgUFRSX0VSUihwYXJ0bmVyKSk7XFxuK1xcdFxcdFxcdGRldl9lcnIocG9ydC1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIHBhcnRuZXIgKCVwZSlcXFxcblxcXCIsIHBhcnRuZXIpO1xcbiBcXHRcXHRcXHRyZXR1cm47XFxuIFxcdFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmMgYi9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jXFxuaW5kZXggNjA2Mjg3NWZiMDRhOS4uODZkMTNhYjQxNjcwNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jXFxuKysrIGIvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuY1xcbkBAIC0yNzcsOCArMjc3LDggQEAgc3RhdGljIHZvaWQgd3VzYjM4MDFfaHdfdXBkYXRlKHN0cnVjdCB3dXNiMzgwMSAqd3VzYjM4MDEpXFxuIFxcdFxcdGlmIChwYXJ0bmVyX3R5cGUgIT0gV1VTQjM4MDFfU1RBVF9QQVJUTkVSX1NUQU5EQlkpIHtcXG4gXFx0XFx0XFx0d3VzYjM4MDEtXFx1MDAzZXBhcnRuZXIgPSB0eXBlY19yZWdpc3Rlcl9wYXJ0bmVyKHBvcnQsIFxcdTAwMjZkZXNjKTtcXG4gXFx0XFx0XFx0aWYgKElTX0VSUih3dXNiMzgwMS1cXHUwMDNlcGFydG5lcikpXFxuLVxcdFxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIHBhcnRuZXI6ICVsZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0XFx0UFRSX0VSUih3dXNiMzgwMS1cXHUwMDNlcGFydG5lcikpO1xcbitcXHRcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byByZWdpc3RlciBwYXJ0bmVyOiAlcGVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdHd1c2IzODAxLVxcdTAwM2VwYXJ0bmVyKTtcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0ZGF0YV9yb2xlID0gcHdyX3JvbGUgPT0gVFlQRUNfU09VUkNFID8gVFlQRUNfSE9TVCA6IFRZUEVDX0RFVklDRTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzA6NTUuNjk0NjkzNzYyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTQ5NDcyMTE3NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgcmVwbGFjZXMgJWxkIGFuZCBQVFJfRVJSKHgpIHdpdGggJXBlIGFuZCB4IGluIHByaW50ay1saWtlIGZ1bmN0aW9ucyAoZGV2X2VyciwgcHJfZXJyLCBkZXZfZGJnLCB1c2JfZXJyKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlL2xvZ2dpbmcgY2hhbmdlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGU2ZWJjZmEwYzhlNzJlNmY4MWJmYjI2NzQyYzJkN2M4MjdkMmQ1ZjdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyIDEyOjMwOjU0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jIGIvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jXG5pbmRleCA5NjAwZTFlYzA5OTMwLi5jNzhjYWExYjU3YzlkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvYXRtL3VzYmF0bS5jXG4rKysgYi9kcml2ZXJzL3VzYi9hdG0vdXNiYXRtLmNcbkBAIC05NzksOCArOTc5LDggQEAgc3RhdGljIGludCB1c2JhdG1faGVhdnlfaW5pdChzdHJ1Y3QgdXNiYXRtX2RhdGEgKmluc3RhbmNlKVxuIFx0dCA9IGt0aHJlYWRfY3JlYXRlKHVzYmF0bV9kb19oZWF2eV9pbml0LCBpbnN0YW5jZSwgXCIlc1wiLFxuIFx0XHRcdGluc3RhbmNlLVx1MDAzZWRyaXZlci1cdTAwM2Vkcml2ZXJfbmFtZSk7XG4gXHRpZiAoSVNfRVJSKHQpKSB7XG4tXHRcdHVzYl9lcnIoaW5zdGFuY2UsIFwiJXM6IGZhaWxlZCB0byBjcmVhdGUga2VybmVsX3RocmVhZCAoJWxkKSFcXG5cIixcbi1cdFx0XHRcdF9fZnVuY19fLCBQVFJfRVJSKHQpKTtcbitcdFx0dXNiX2VycihpbnN0YW5jZSwgXCIlczogZmFpbGVkIHRvIGNyZWF0ZSBrZXJuZWxfdGhyZWFkICglcGUpIVxcblwiLFxuK1x0XHRcdFx0X19mdW5jX18sIHQpO1xuIFx0XHRyZXR1cm4gUFRSX0VSUih0KTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY2lfaGRyY19pbXguY1xuaW5kZXggNTZkMmJhODI0YTBiMi4uN2JmZTM3ZWQ2OGFlYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmNcbisrKyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmNcbkBAIC0yMTgsOCArMjE4LDggQEAgc3RhdGljIGludCBpbXhfZ2V0X2Nsa3Moc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHRpZiAoSVNfRVJSKGRhdGEtXHUwMDNlY2xrKSkge1xuIFx0XHRcdHJldCA9IFBUUl9FUlIoZGF0YS1cdTAwM2VjbGspO1xuIFx0XHRcdGRldl9lcnIoZGV2LFxuLVx0XHRcdFx0XCJGYWlsZWQgdG8gZ2V0IGNsa3MsIGVycj0lbGQsJWxkXFxuXCIsXG4tXHRcdFx0XHRQVFJfRVJSKGRhdGEtXHUwMDNlY2xrKSwgUFRSX0VSUihkYXRhLVx1MDAzZWNsa19pcGcpKTtcbitcdFx0XHRcdFwiRmFpbGVkIHRvIGdldCBjbGtzLCBlcnI9JXBlLCVwZVxcblwiLFxuK1x0XHRcdFx0ZGF0YS1cdTAwM2VjbGssIGRhdGEtXHUwMDNlY2xrX2lwZyk7XG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdFx0fVxuIFx0XHQvKiBHZXQgd2FrZXVwIGNsb2NrLiBOb3QgYWxsIG9mIHRoZSBwbGF0Zm9ybXMgbmVlZCB0b1xuQEAgLTQ0OCw4ICs0NDgsOCBAQCBzdGF0aWMgaW50IGNpX2hkcmNfaW14X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRcdHBpbmN0cmxfaHNpY19pZGxlID0gcGluY3RybF9sb29rdXBfc3RhdGUoZGF0YS1cdTAwM2VwaW5jdHJsLCBcImlkbGVcIik7XG4gXHRcdGlmIChJU19FUlIocGluY3RybF9oc2ljX2lkbGUpKSB7XG4gXHRcdFx0ZGV2X2VycihkZXYsXG4tXHRcdFx0XHRcInBpbmN0cmxfaHNpY19pZGxlIGxvb2t1cCBmYWlsZWQsIGVycj0lbGRcXG5cIixcbi1cdFx0XHRcdFx0UFRSX0VSUihwaW5jdHJsX2hzaWNfaWRsZSkpO1xuK1x0XHRcdFx0XCJwaW5jdHJsX2hzaWNfaWRsZSBsb29rdXAgZmFpbGVkLCBlcnI9JXBlXFxuXCIsXG4rXHRcdFx0XHRcdHBpbmN0cmxfaHNpY19pZGxlKTtcbiBcdFx0XHRyZXQgPSBQVFJfRVJSKHBpbmN0cmxfaHNpY19pZGxlKTtcbiBcdFx0XHRnb3RvIGVycl9wdXQ7XG4gXHRcdH1cbkBAIC00NjQsOCArNDY0LDggQEAgc3RhdGljIGludCBjaV9oZHJjX2lteF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRcdFx0XHRcdFx0XHRcImFjdGl2ZVwiKTtcbiBcdFx0aWYgKElTX0VSUihkYXRhLVx1MDAzZXBpbmN0cmxfaHNpY19hY3RpdmUpKSB7XG4gXHRcdFx0ZGV2X2VycihkZXYsXG4tXHRcdFx0XHRcInBpbmN0cmxfaHNpY19hY3RpdmUgbG9va3VwIGZhaWxlZCwgZXJyPSVsZFxcblwiLFxuLVx0XHRcdFx0XHRQVFJfRVJSKGRhdGEtXHUwMDNlcGluY3RybF9oc2ljX2FjdGl2ZSkpO1xuK1x0XHRcdFx0XCJwaW5jdHJsX2hzaWNfYWN0aXZlIGxvb2t1cCBmYWlsZWQsIGVycj0lcGVcXG5cIixcbitcdFx0XHRcdFx0ZGF0YS1cdTAwM2VwaW5jdHJsX2hzaWNfYWN0aXZlKTtcbiBcdFx0XHRyZXQgPSBQVFJfRVJSKGRhdGEtXHUwMDNlcGluY3RybF9oc2ljX2FjdGl2ZSk7XG4gXHRcdFx0Z290byBlcnJfcHV0O1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jXG5pbmRleCAwNzU2M2JlMDAxM2Y0Li4wOWRiOGE0ZWFjZTIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jXG4rKysgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jb3JlLmNcbkBAIC02ODAsOCArNjgwLDggQEAgc3RhdGljIGludCBjaV9nZXRfcGxhdGRhdGEoc3RydWN0IGRldmljZSAqZGV2LFxuIFx0XHRcdC8qIG5vIHZidXMgcmVndWxhdG9yIGlzIG5lZWRlZCAqL1xuIFx0XHRcdHBsYXRkYXRhLVx1MDAzZXJlZ192YnVzID0gTlVMTDtcbiBcdFx0fSBlbHNlIGlmIChJU19FUlIocGxhdGRhdGEtXHUwMDNlcmVnX3ZidXMpKSB7XG4tXHRcdFx0ZGV2X2VycihkZXYsIFwiR2V0dGluZyByZWd1bGF0b3IgZXJyb3I6ICVsZFxcblwiLFxuLVx0XHRcdFx0UFRSX0VSUihwbGF0ZGF0YS1cdTAwM2VyZWdfdmJ1cykpO1xuK1x0XHRcdGRldl9lcnIoZGV2LCBcIkdldHRpbmcgcmVndWxhdG9yIGVycm9yOiAlcGVcXG5cIixcbitcdFx0XHRcdHBsYXRkYXRhLVx1MDAzZXJlZ192YnVzKTtcbiBcdFx0XHRyZXR1cm4gUFRSX0VSUihwbGF0ZGF0YS1cdTAwM2VyZWdfdmJ1cyk7XG4gXHRcdH1cbiBcdFx0LyogR2V0IFRQTCBzdXBwb3J0ICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9odWIuYyBiL2RyaXZlcnMvdXNiL2NvcmUvaHViLmNcbmluZGV4IDUyNjJlMTFjMTJjZDMuLjhjNzUwYTkzYzM1MDAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jXG4rKysgYi9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jXG5AQCAtNTY3MSw4ICs1NjcxLDcgQEAgc3RhdGljIHZvaWQgaHViX3BvcnRfY29ubmVjdF9jaGFuZ2Uoc3RydWN0IHVzYl9odWIgKmh1YiwgaW50IHBvcnQxLFxuIFx0XHRcdGRlc2NyID0gdXNiX2dldF9kZXZpY2VfZGVzY3JpcHRvcih1ZGV2KTtcbiBcdFx0XHRpZiAoSVNfRVJSKGRlc2NyKSkge1xuIFx0XHRcdFx0ZGV2X2RiZyhcdTAwMjZ1ZGV2LVx1MDAzZWRldixcbi1cdFx0XHRcdFx0XHRcImNhbid0IHJlYWQgZGV2aWNlIGRlc2NyaXB0b3IgJWxkXFxuXCIsXG4tXHRcdFx0XHRcdFx0UFRSX0VSUihkZXNjcikpO1xuK1x0XHRcdFx0XHRcdFwiY2FuJ3QgcmVhZCBkZXZpY2UgZGVzY3JpcHRvciAlcGVcXG5cIiwgZGVzY3IpO1xuIFx0XHRcdH0gZWxzZSB7XG4gXHRcdFx0XHRpZiAoZGVzY3JpcHRvcnNfY2hhbmdlZCh1ZGV2LCBkZXNjcixcbiBcdFx0XHRcdFx0XHR1ZGV2LVx1MDAzZWJvcykpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9kd2MyL3BjaS5jIGIvZHJpdmVycy91c2IvZHdjMi9wY2kuY1xuaW5kZXggZjNhMWU0MjMyYTMxZC4uN2ZmOWM0ZGY5NDFlMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2R3YzIvcGNpLmNcbisrKyBiL2RyaXZlcnMvdXNiL2R3YzIvcGNpLmNcbkBAIC02OCw4ICs2OCw3IEBAIHN0YXRpYyBpbnQgZHdjMl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaSxcbiBcbiBcdHBoeSA9IHVzYl9waHlfZ2VuZXJpY19yZWdpc3RlcigpO1xuIFx0aWYgKElTX0VSUihwaHkpKSB7XG4tXHRcdGRldl9lcnIoZGV2LCBcImVycm9yIHJlZ2lzdGVyaW5nIGdlbmVyaWMgUEhZICglbGQpXFxuXCIsXG4tXHRcdFx0UFRSX0VSUihwaHkpKTtcbitcdFx0ZGV2X2VycihkZXYsIFwiZXJyb3IgcmVnaXN0ZXJpbmcgZ2VuZXJpYyBQSFkgKCVwZSlcXG5cIiwgcGh5KTtcbiBcdFx0cmV0dXJuIFBUUl9FUlIocGh5KTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV9zZXJpYWwuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jXG5pbmRleCBjZGQxZGZjNjY2YzRmLi5kYTMxZTVjZWEwYTU1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3Vfc2VyaWFsLmNcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3NlcmlhbC5jXG5AQCAtMTMxMSw4ICsxMzExLDggQEAgaW50IGdzZXJpYWxfYWxsb2NfbGluZV9ub19jb25zb2xlKHVuc2lnbmVkIGNoYXIgKmxpbmVfbnVtKVxuIFx0dHR5X2RldiA9IHR0eV9wb3J0X3JlZ2lzdGVyX2RldmljZShcdTAwMjZwb3J0LVx1MDAzZXBvcnQsXG4gXHRcdFx0Z3NfdHR5X2RyaXZlciwgcG9ydF9udW0sIE5VTEwpO1xuIFx0aWYgKElTX0VSUih0dHlfZGV2KSkge1xuLVx0XHRwcl9lcnIoXCIlczogZmFpbGVkIHRvIHJlZ2lzdGVyIHR0eSBmb3IgcG9ydCAlZCwgZXJyICVsZFxcblwiLFxuLVx0XHRcdFx0X19mdW5jX18sIHBvcnRfbnVtLCBQVFJfRVJSKHR0eV9kZXYpKTtcbitcdFx0cHJfZXJyKFwiJXM6IGZhaWxlZCB0byByZWdpc3RlciB0dHkgZm9yIHBvcnQgJWQsIGVyciAlcGVcXG5cIixcbitcdFx0XHRcdF9fZnVuY19fLCBwb3J0X251bSwgdHR5X2Rldik7XG4gXG4gXHRcdHJldCA9IFBUUl9FUlIodHR5X2Rldik7XG4gXHRcdG11dGV4X2xvY2soXHUwMDI2cG9ydHNbcG9ydF9udW1dLmxvY2spO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvdXNiMzUwMy5jIGIvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmNcbmluZGV4IDc1OTc3MGExMzI2MDYuLjExNjBkYzU5NGIxYzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9taXNjL3VzYjM1MDMuY1xuKysrIGIvZHJpdmVycy91c2IvbWlzYy91c2IzNTAzLmNcbkBAIC0yMDIsOCArMjAyLDcgQEAgc3RhdGljIGludCB1c2IzNTAzX3Byb2JlKHN0cnVjdCB1c2IzNTAzICpodWIpXG4gXG4gXHRcdGh1Yi1cdTAwM2VjbGsgPSBkZXZtX2Nsa19nZXRfb3B0aW9uYWwoZGV2LCBcInJlZmNsa1wiKTtcbiBcdFx0aWYgKElTX0VSUihodWItXHUwMDNlY2xrKSkge1xuLVx0XHRcdGRldl9lcnIoZGV2LCBcInVuYWJsZSB0byByZXF1ZXN0IHJlZmNsayAoJWxkKVxcblwiLFxuLVx0XHRcdFx0XHRQVFJfRVJSKGh1Yi1cdTAwM2VjbGspKTtcbitcdFx0XHRkZXZfZXJyKGRldiwgXCJ1bmFibGUgdG8gcmVxdWVzdCByZWZjbGsgKCVwZSlcXG5cIiwgaHViLVx1MDAzZWNsayk7XG4gXHRcdFx0cmV0dXJuIFBUUl9FUlIoaHViLVx1MDAzZWNsayk7XG4gXHRcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy9tdXgvcGkzdXNiMzA1MzIuYyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jXG5pbmRleCA5ODU2ODNmZTQ5ZTkxLi5iMzJmNGM0MzNkZTk1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMwNTMyLmNcbisrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9waTN1c2IzMDUzMi5jXG5AQCAtMTM5LDggKzEzOSw3IEBAIHN0YXRpYyBpbnQgcGkzdXNiMzA1MzJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbiBcbiBcdHBpLVx1MDAzZXN3ID0gdHlwZWNfc3dpdGNoX3JlZ2lzdGVyKGRldiwgXHUwMDI2c3dfZGVzYyk7XG4gXHRpZiAoSVNfRVJSKHBpLVx1MDAzZXN3KSkge1xuLVx0XHRkZXZfZXJyKGRldiwgXCJFcnJvciByZWdpc3RlcmluZyB0eXBlYyBzd2l0Y2g6ICVsZFxcblwiLFxuLVx0XHRcdFBUUl9FUlIocGktXHUwMDNlc3cpKTtcbitcdFx0ZGV2X2VycihkZXYsIFwiRXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgc3dpdGNoOiAlcGVcXG5cIiwgcGktXHUwMDNlc3cpO1xuIFx0XHRyZXR1cm4gUFRSX0VSUihwaS1cdTAwM2Vzdyk7XG4gXHR9XG4gXG5AQCAtMTUxLDggKzE1MCw3IEBAIHN0YXRpYyBpbnQgcGkzdXNiMzA1MzJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbiBcdHBpLVx1MDAzZW11eCA9IHR5cGVjX211eF9yZWdpc3RlcihkZXYsIFx1MDAyNm11eF9kZXNjKTtcbiBcdGlmIChJU19FUlIocGktXHUwMDNlbXV4KSkge1xuIFx0XHR0eXBlY19zd2l0Y2hfdW5yZWdpc3RlcihwaS1cdTAwM2Vzdyk7XG4tXHRcdGRldl9lcnIoZGV2LCBcIkVycm9yIHJlZ2lzdGVyaW5nIHR5cGVjIG11eDogJWxkXFxuXCIsXG4tXHRcdFx0UFRSX0VSUihwaS1cdTAwM2VtdXgpKTtcbitcdFx0ZGV2X2VycihkZXYsIFwiRXJyb3IgcmVnaXN0ZXJpbmcgdHlwZWMgbXV4OiAlcGVcXG5cIiwgcGktXHUwMDNlbXV4KTtcbiBcdFx0cmV0dXJuIFBUUl9FUlIocGktXHUwMDNlbXV4KTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL3RjcG0uYyBiL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jXG5pbmRleCA4OWVlYzIwYTIwNjRjLi5hZDEwNDcwZWE3M2IwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmNcbisrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwbS5jXG5AQCAtNDc5Niw3ICs0Nzk2LDcgQEAgc3RhdGljIHZvaWQgdGNwbV90eXBlY19jb25uZWN0KHN0cnVjdCB0Y3BtX3BvcnQgKnBvcnQpXG4gXHRcdFx0cG9ydC1cdTAwM2VwYXJ0bmVyX2Rlc2MuYWNjZXNzb3J5ID0gVFlQRUNfQUNDRVNTT1JZX05PTkU7XG4gXHRcdHBhcnRuZXIgPSB0eXBlY19yZWdpc3Rlcl9wYXJ0bmVyKHBvcnQtXHUwMDNldHlwZWNfcG9ydCwgXHUwMDI2cG9ydC1cdTAwM2VwYXJ0bmVyX2Rlc2MpO1xuIFx0XHRpZiAoSVNfRVJSKHBhcnRuZXIpKSB7XG4tXHRcdFx0ZGV2X2Vycihwb3J0LVx1MDAzZWRldiwgXCJGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lciAoJWxkKVxcblwiLCBQVFJfRVJSKHBhcnRuZXIpKTtcbitcdFx0XHRkZXZfZXJyKHBvcnQtXHUwMDNlZGV2LCBcIkZhaWxlZCB0byByZWdpc3RlciBwYXJ0bmVyICglcGUpXFxuXCIsIHBhcnRuZXIpO1xuIFx0XHRcdHJldHVybjtcbiBcdFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3d1c2IzODAxLmMgYi9kcml2ZXJzL3VzYi90eXBlYy93dXNiMzgwMS5jXG5pbmRleCA2MDYyODc1ZmIwNGE5Li44NmQxM2FiNDE2NzA0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuY1xuKysrIGIvZHJpdmVycy91c2IvdHlwZWMvd3VzYjM4MDEuY1xuQEAgLTI3Nyw4ICsyNzcsOCBAQCBzdGF0aWMgdm9pZCB3dXNiMzgwMV9od191cGRhdGUoc3RydWN0IHd1c2IzODAxICp3dXNiMzgwMSlcbiBcdFx0aWYgKHBhcnRuZXJfdHlwZSAhPSBXVVNCMzgwMV9TVEFUX1BBUlRORVJfU1RBTkRCWSkge1xuIFx0XHRcdHd1c2IzODAxLVx1MDAzZXBhcnRuZXIgPSB0eXBlY19yZWdpc3Rlcl9wYXJ0bmVyKHBvcnQsIFx1MDAyNmRlc2MpO1xuIFx0XHRcdGlmIChJU19FUlIod3VzYjM4MDEtXHUwMDNlcGFydG5lcikpXG4tXHRcdFx0XHRkZXZfZXJyKGRldiwgXCJGYWlsZWQgdG8gcmVnaXN0ZXIgcGFydG5lcjogJWxkXFxuXCIsXG4tXHRcdFx0XHRcdFBUUl9FUlIod3VzYjM4MDEtXHUwMDNlcGFydG5lcikpO1xuK1x0XHRcdFx0ZGV2X2VycihkZXYsIFwiRmFpbGVkIHRvIHJlZ2lzdGVyIHBhcnRuZXI6ICVwZVxcblwiLFxuK1x0XHRcdFx0XHR3dXNiMzgwMS1cdTAwM2VwYXJ0bmVyKTtcbiBcdFx0fVxuIFxuIFx0XHRkYXRhX3JvbGUgPSBwd3Jfcm9sZSA9PSBUWVBFQ19TT1VSQ0UgPyBUWVBFQ19IT1NUIDogVFlQRUNfREVWSUNFO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6MzA6NTUuNjk0Njk1MzgyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ5NDcxNzU0MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVHJpdmlhbCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgcHJldHR5IGNsZWFyIHdoYXQncyBoYXBwZW5pbmcuIFRoZXkncmUgY2hhbmdpbmcgaG93IGVycm9yIHBvaW50ZXJzIGFyZSBsb2dnZWQgd2l0aGluIHRoZSBVU0Igc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0J3MgYSBjb3NtZXRpYyBjaGFuZ2Ug4oCTIHJlcGxhY2luZyBgUFRSX0VSUih4KWAgYW5kIHRoZSBgJWxkYCBmb3JtYXQgc3BlY2lmaWVyIHdpdGggYCVwZWAgdG8gcHJpbnQgdGhlIGVycm9yIHBvaW50ZXIgaXRzZWxmLiBJdCdzIGEgY2xlYW51cCwgbWFraW5nIHRoZSBlcnJvciBtZXNzYWdlcyBhIGxpdHRsZSBtb3JlIGNvbnNpc3RlbnQgaW4gdGhlaXIgcHJlc2VudGF0aW9uLCB0aGF0J3MgYWxsLlxuXG5MZXQgbWUganVzdCBxdWlja2x5IHJ1biB0aHJvdWdoIHRoZSBkaWZmIHRvIGNvbmZpcm0uLi4gWWVwLCBgdXNiYXRtLmNgLCBgY2lfaGRyY19pbXguY2AsIGBjb3JlLmNgLCBgaHViLmNgLCBgZHdjMi9wY2kuY2AsIGB1X3NlcmlhbC5jYCwgYHVzYjM1MDMuY2AsIGBwaTN1c2IzMDUzMi5jYCwgYHRjcG0uY2AsIGFuZCBgd3VzYjM4MDEuY2Ag4oCTIGFsbCB0aGUgc2FtZSBwYXR0ZXJuLiBJdCdzIGp1c3QgYSBjb25zaXN0ZW50IGxvZ2dpbmcgaW1wcm92ZW1lbnQsIG5vdGhpbmcgbW9yZS4gTm8gZnVuY3Rpb25hbCBjaGFuZ2VzLCBubyBhbHRlcmVkIGNvbnRyb2wgZmxvdy5cblxuR2l2ZW4gdGhhdCB0aGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbGl0eSBvciBjaGFuZ2UgZXhpc3RpbmcgYmVoYXZpb3IgaW4gYSBtZWFuaW5nZnVsIHdheSwgaXQncyBkZWZpbml0ZWx5IG5vdCBzb21ldGhpbmcgSSdkIGNvbnNpZGVyIHdvcnRoIGZ1enppbmcuIEl0J3MgYSBzdHJhaWdodGZvcndhcmQgbG9nZ2luZyB0d2Vhay4gU28sIEknbGwgZ28gYWhlYWQgYW5kIHNldCB0aGUgcmVzdWx0cyBhY2NvcmRpbmdseS4gYFdvcnRoRnV6emluZz1mYWxzZWAgaXQgaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMzAsIk91dHB1dFRva2VucyI6ODksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjozMToxMC42NDE4NzQ0NjFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgcmVwbGFjZXMgJWxkIGFuZCBQVFJfRVJSKHgpIHdpdGggJXBlIGFuZCB4IGluIHByaW50ay1saWtlIGZ1bmN0aW9ucyAoZGV2X2VyciwgcHJfZXJyLCBkZXZfZGJnLCB1c2JfZXJyKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlL2xvZ2dpbmcgY2hhbmdlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgcmVwbGFjZXMgJWxkIGFuZCBQVFJfRVJSKHgpIHdpdGggJXBlIGFuZCB4IGluIHByaW50ay1saWtlIGZ1bmN0aW9ucyAoZGV2X2VyciwgcHJfZXJyLCBkZXZfZGJnLCB1c2JfZXJyKS4gVGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlL2xvZ2dpbmcgY2hhbmdlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowskhlp[1] Phase: Running StartedAt: 2026-08-02 12:31:21 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowskhlp[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-02 12:31:21 +0000 UTC FinishedAt: 2026-08-02 12:31:26 +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,}