Name: series-workflowlvs5p Phase: Failed StartedAt: 2026-08-14 17:13:51 +0000 UTC FinishedAt: 2026-08-14 17:29:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvs5p[0] Phase: Succeeded StartedAt: 2026-08-14 17:13:51 +0000 UTC FinishedAt: 2026-08-14 17:29:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvs5p[0].run-triage Phase: Succeeded StartedAt: 2026-08-14 17:13:51 +0000 UTC FinishedAt: 2026-08-14 17:29:07 +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+CgkJCTx0ZD4yMDI2LzA4LzE0IDE3OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhIGxvY2FsIHZhcmlhYmxlIGBtaW1vX3BzYCB0aGF0IHdhcyBoYXJkY29kZWQgdG8gYElFRUU4MDIxMV9TTVBTX09GRmAgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGRlYWQgY29kZSBibG9ja3MgdGhhdCBjaGVja2VkIGlmIGl0IHdhcyBgSUVFRTgwMjExX1NNUFNfU1RBVElDYCBvciBgSUVFRTgwMjExX1NNUFNfRFlOQU1JQ2AuIFRoaXMgaXMgcHVyZWx5IGRlYWQgY29kZSByZW1vdmFsIGFuZCBkb2VzIG5vdCBhbHRlciB0aGUgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTc6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4YWRlODhjMmFlYWQ1NDIyMGYyODU4NGFjOTdhOWE2NjRkZjAwMTZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTc6Mjg6MjcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxODhlZS9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxODhlZS9ody5jXG5pbmRleCA1M2MzMmUxZGU3ZTQ3Li45MTBmODM3MmQ4M2QxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxODhlZS9ody5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE4OGVlL2h3LmNcbkBAIC0xOTcwLDcgJiM0MzsxOTcwLDYgQEAgc3RhdGljIHZvaWQgcnRsODhlZV91cGRhdGVfaGFsX3JhdGVfdGFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHR1MzIgcmF0cl92YWx1ZTtcbiBcdHU4IHJhdHJfaW5kZXggPSAwO1xuIFx0dTggYl9ubW9kZSA9IG1hYy1cdTAwM2VodF9lbmFibGU7XG4tXHQvKnU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7Ki9cbiBcdHUxNiBzaG9ydGdpX3JhdGU7XG4gXHR1MzIgdG1wX3JhdHJfdmFsdWU7XG4gXHR1OCBjdXJ0eGJ3XzQwbWh6ID0gbWFjLVx1MDAzZWJ3XzQwO1xuQEAgLTIwNzAsNyAmIzQzOzIwNjksNiBAQCBzdGF0aWMgdm9pZCBydGw4OGVlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0Ym9vbCBiX3Nob3J0Z2kgPSBmYWxzZTtcbiBcdHU4IHJhdGVfbWFza1s1XTtcbiBcdHU4IG1hY2lkID0gMDtcbi1cdC8qdTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsqL1xuIFxuIFx0c3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKilzdGEtXHUwMDNlZHJ2X3ByaXY7XG4gXHR3aXJlbGVzc21vZGUgPSBzdGFfZW50cnktXHUwMDNld2lyZWxlc3NfbW9kZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmVlL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmVlL2h3LmNcbmluZGV4IDQ4YTNjOTQ2MDZiZWYuLjAwMDQ4OTEyOTAwYzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmVlL2h3LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyZWUvaHcuY1xuQEAgLTIyNjYsNyAmIzQzOzIyNjYsNiBAQCBzdGF0aWMgdm9pZCBydGw5MmVlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0Ym9vbCBiX3Nob3J0Z2kgPSBmYWxzZTtcbiBcdHU4IHJhdGVfbWFza1s3XSA9IHswfTtcbiBcdHU4IG1hY2lkID0gMDtcbi1cdC8qdTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsqL1xuIFx0c3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKilzdGEtXHUwMDNlZHJ2X3ByaXY7XG4gXHR3aXJlbGVzc21vZGUgPSBzdGFfZW50cnktXHUwMDNld2lyZWxlc3NfbW9kZTtcbiBcdGlmIChtYWMtXHUwMDNlb3Btb2RlID09IE5MODAyMTFfSUZUWVBFX1NUQVRJT04gfHxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MnNlL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MnNlL2h3LmNcbmluZGV4IGU1Nzc1Yjk0ZjA0ZWUuLjZiOWYyNDdkMTFlMGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MnNlL2h3LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyc2UvaHcuY1xuQEAgLTIwMDEsMTAgJiM0MzsyMDAxLDkgQEAgc3RhdGljIHZvaWQgcnRsOTJzZV91cGRhdGVfaGFsX3JhdGVfdGFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRzdHJ1Y3QgcnRsX3BoeSAqcnRscGh5ID0gXHUwMDI2KHJ0bHByaXYtXHUwMDNlcGh5KTtcbiBcdHN0cnVjdCBydGxfbWFjICptYWMgPSBydGxfbWFjKHJ0bF9wcml2KGh3KSk7XG4gXHRzdHJ1Y3QgcnRsX2hhbCAqcnRsaGFsID0gcnRsX2hhbChydGxfcHJpdihodykpO1xuLVx0dTMyIHJhdHJfdmFsdWU7XG4mIzQzO1x0dTMyIHJhdHJfdmFsdWUsIHJhdHJfbWFzaztcbiBcdHU4IHJhdHJfaW5kZXggPSAwO1xuIFx0dTggbm1vZGUgPSBtYWMtXHUwMDNlaHRfZW5hYmxlO1xuLVx0dTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjtcbiBcdHUxNiBzaG9ydGdpX3JhdGUgPSAwO1xuIFx0dTMyIHRtcF9yYXRyX3ZhbHVlID0gMDtcbiBcdHU4IGN1cnR4YndfNDBtaHogPSBtYWMtXHUwMDNlYndfNDA7XG5AQCAtMjAzMiwyNiAmIzQzOzIwMzEsMjEgQEAgc3RhdGljIHZvaWQgcnRsOTJzZV91cGRhdGVfaGFsX3JhdGVfdGFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRjYXNlIFdJUkVMRVNTX01PREVfTl8yNEc6XG4gXHRjYXNlIFdJUkVMRVNTX01PREVfTl81RzpcbiBcdFx0bm1vZGUgPSAxO1xuLVx0XHRpZiAobWltb19wcyA9PSBJRUVFODAyMTFfU01QU19TVEFUSUMpIHtcbi1cdFx0XHRyYXRyX3ZhbHVlIFx1MDAyNj0gMHgwMDA3RjAwNTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHR1MzIgcmF0cl9tYXNrO1xuLVxuLVx0XHRcdGlmIChnZXRfcmZfdHlwZShydGxwaHkpID09IFJGXzFUMlIgfHxcbi1cdFx0XHQgICAgZ2V0X3JmX3R5cGUocnRscGh5KSA9PSBSRl8xVDFSKSB7XG4tXHRcdFx0XHRpZiAoY3VydHhid180MG1oeilcbi1cdFx0XHRcdFx0cmF0cl9tYXNrID0gMHgwMDBmZjAxNTtcbi1cdFx0XHRcdGVsc2Vcbi1cdFx0XHRcdFx0cmF0cl9tYXNrID0gMHgwMDBmZjAwNTtcbi1cdFx0XHR9IGVsc2Uge1xuLVx0XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopXG4tXHRcdFx0XHRcdHJhdHJfbWFzayA9IDB4MGYwZmYwMTU7XG4tXHRcdFx0XHRlbHNlXG4tXHRcdFx0XHRcdHJhdHJfbWFzayA9IDB4MGYwZmYwMDU7XG4tXHRcdFx0fVxuIFxuLVx0XHRcdHJhdHJfdmFsdWUgXHUwMDI2PSByYXRyX21hc2s7XG4mIzQzO1x0XHRpZiAoZ2V0X3JmX3R5cGUocnRscGh5KSA9PSBSRl8xVDJSIHx8XG4mIzQzO1x0XHQgICAgZ2V0X3JmX3R5cGUocnRscGh5KSA9PSBSRl8xVDFSKSB7XG4mIzQzO1x0XHRcdGlmIChjdXJ0eGJ3XzQwbWh6KVxuJiM0MztcdFx0XHRcdHJhdHJfbWFzayA9IDB4MDAwZmYwMTU7XG4mIzQzO1x0XHRcdGVsc2VcbiYjNDM7XHRcdFx0XHRyYXRyX21hc2sgPSAweDAwMGZmMDA1O1xuJiM0MztcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopXG4mIzQzO1x0XHRcdFx0cmF0cl9tYXNrID0gMHgwZjBmZjAxNTtcbiYjNDM7XHRcdFx0ZWxzZVxuJiM0MztcdFx0XHRcdHJhdHJfbWFzayA9IDB4MGYwZmYwMDU7XG4gXHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRyYXRyX3ZhbHVlIFx1MDAyNj0gcmF0cl9tYXNrO1xuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGlmIChydGxwaHktXHUwMDNlcmZfdHlwZSA9PSBSRl8xVDJSKVxuQEAgLTIxMTksNyAmIzQzOzIxMTMsNiBAQCBzdGF0aWMgdm9pZCBydGw5MnNlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0dTMyIGJhbmQgPSAwO1xuIFx0Ym9vbCBibXVsdGljYXN0ID0gZmFsc2U7XG4gXHR1OCBtYWNpZCA9IDA7XG4tXHR1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGO1xuIFxuIFx0c3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKikgc3RhLVx1MDAzZWRydl9wcml2O1xuIFx0d2lyZWxlc3Ntb2RlID0gc3RhX2VudHJ5LVx1MDAzZXdpcmVsZXNzX21vZGU7XG5AQCAtMjE2Nyw0MSAmIzQzOzIxNjAsMzIgQEAgc3RhdGljIHZvaWQgcnRsOTJzZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0YmFuZCB8PSAoV0lSRUxFU1NfMTFOIHwgV0lSRUxFU1NfMTFHIHwgV0lSRUxFU1NfMTFCKTtcbiBcdFx0cmF0cl9pbmRleCA9IFJBVFJfSU5YX1dJUkVMRVNTX05HQjtcbiBcbi1cdFx0aWYgKG1pbW9fcHMgPT0gSUVFRTgwMjExX1NNUFNfU1RBVElDKSB7XG4tXHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcbi1cdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDA3MDAwMDtcbi1cdFx0XHRlbHNlIGlmIChyc3NpX2xldmVsID09IDIpXG4tXHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwN2YwMDA7XG4tXHRcdFx0ZWxzZVxuLVx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMDdmMDA1O1xuJiM0MztcdFx0aWYgKHJ0bHBoeS1cdTAwM2VyZl90eXBlID09IFJGXzFUMlIgfHxcbiYjNDM7XHRcdCAgICBydGxwaHktXHUwMDNlcmZfdHlwZSA9PSBSRl8xVDFSKSB7XG4mIzQzO1x0XHRcdGlmIChyc3NpX2xldmVsID09IDEpIHtcbiYjNDM7XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZjAwMDA7XG4mIzQzO1x0XHRcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAzKSB7XG4mIzQzO1x0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZjMDAwO1xuJiM0MztcdFx0XHR9IGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gNSkge1xuJiM0MztcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAwMDtcbiYjNDM7XHRcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0XHRpZiAoY3VydHhid180MG1oeilcbiYjNDM7XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAxNTtcbiYjNDM7XHRcdFx0XHRlbHNlXG4mIzQzO1x0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZmYwMDU7XG4mIzQzO1x0XHRcdH1cbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRpZiAocnRscGh5LVx1MDAzZXJmX3R5cGUgPT0gUkZfMVQyUiB8fFxuLVx0XHRcdFx0cnRscGh5LVx1MDAzZXJmX3R5cGUgPT0gUkZfMVQxUikge1xuLVx0XHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSkge1xuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmMDAwMDtcbi1cdFx0XHRcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAzKSB7XG4tXHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmYzAwMDtcbi1cdFx0XHRcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSA1KSB7XG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDAwO1xuLVx0XHRcdFx0fSBlbHNlIHtcbi1cdFx0XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDE1O1xuLVx0XHRcdFx0XHRlbHNlXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDA1O1xuLVx0XHRcdFx0fVxuJiM0MztcdFx0XHRpZiAocnNzaV9sZXZlbCA9PSAxKSB7XG4mIzQzO1x0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGYwMDAwO1xuJiM0MztcdFx0XHR9IGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMykge1xuJiM0MztcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZjhmYzAwMDtcbiYjNDM7XHRcdFx0fSBlbHNlIGlmIChyc3NpX2xldmVsID09IDUpIHtcbiYjNDM7XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGY4ZmYwMDA7XG4gXHRcdFx0fSBlbHNlIHtcbi1cdFx0XHRcdGlmIChyc3NpX2xldmVsID09IDEpIHtcbi1cdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGYwMDAwO1xuLVx0XHRcdFx0fSBlbHNlIGlmIChyc3NpX2xldmVsID09IDMpIHtcbi1cdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZjMDAwO1xuLVx0XHRcdFx0fSBlbHNlIGlmIChyc3NpX2xldmVsID09IDUpIHtcbi1cdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZmMDAwO1xuLVx0XHRcdFx0fSBlbHNlIHtcbi1cdFx0XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZmMDE1O1xuLVx0XHRcdFx0XHRlbHNlXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZmMDA1O1xuLVx0XHRcdFx0fVxuJiM0MztcdFx0XHRcdGlmIChjdXJ0eGJ3XzQwbWh6KVxuJiM0MztcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZmMDE1O1xuJiM0MztcdFx0XHRcdGVsc2VcbiYjNDM7XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZjhmZjAwNTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODcyM2FlL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODcyM2FlL2h3LmNcbmluZGV4IGJkNDVkOWJkNDBiYjcuLjJlNTBmNWMyNGRmODEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODcyM2FlL2h3LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4NzIzYWUvaHcuY1xuQEAgLTE5MjQsNyAmIzQzOzE5MjQsNiBAQCBzdGF0aWMgdm9pZCBydGw4NzIzZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdGJvb2wgc2hvcnRnaSA9IGZhbHNlO1xuIFx0dTggcmF0ZV9tYXNrWzVdO1xuIFx0dTggbWFjaWQgPSAwO1xuLVx0Lyp1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGOyovXG4gXG4gXHRzdGFfZW50cnkgPSAoc3RydWN0IHJ0bF9zdGFfaW5mbyAqKXN0YS1cdTAwM2VkcnZfcHJpdjtcbiBcdHdpcmVsZXNzbW9kZSA9IHN0YV9lbnRyeS1cdTAwM2V3aXJlbGVzc19tb2RlO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4ODIxYWUvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4ODIxYWUvaHcuY1xuaW5kZXggMWJhNTNlNjcxMjA3ZS4uMzFmNDk5YmU5OWEzOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4ODIxYWUvaHcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDg4MjFhZS9ody5jXG5AQCAtMzQ2OCw3ICYjNDM7MzQ2OCw2IEBAIHN0YXRpYyB2b2lkIHJ0bDg4MjFhZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdGJvb2wgYl9zaG9ydGdpID0gZmFsc2U7XG4gXHR1OCByYXRlX21hc2tbN107XG4gXHR1OCBtYWNpZCA9IDA7XG4tXHR1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGO1xuIFx0dTggcmZfdHlwZTtcbiBcbiBcdHN0YV9lbnRyeSA9IChzdHJ1Y3QgcnRsX3N0YV9pbmZvICopc3RhLVx1MDAzZWRydl9wcml2O1xuQEAgLTM1MzUsNDcgJiM0MzszNTM0LDM3IEBAIHN0YXRpYyB2b2lkIHJ0bDg4MjFhZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0ZWxzZVxuIFx0XHRcdHJhdHJfaW5kZXggPSBSQVRSX0lOWF9XSVJFTEVTU19ORztcbiBcbi1cdFx0aWYgKG1pbW9fcHMgPT0gSUVFRTgwMjExX1NNUFNfU1RBVElDXG4tXHRcdFx0fHwgbWltb19wcyA9PSBJRUVFODAyMTFfU01QU19EWU5BTUlDKSB7XG4tXHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcbi1cdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmMDAwMDtcbi1cdFx0XHRlbHNlIGlmIChyc3NpX2xldmVsID09IDIpXG4tXHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZmYwMDA7XG4tXHRcdFx0ZWxzZVxuLVx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDA1O1xuJiM0MztcdFx0aWYgKHJmX3R5cGUgPT0gUkZfMVQxUikge1xuJiM0MztcdFx0XHRpZiAoY3VydHhid180MG1oeikge1xuJiM0MztcdFx0XHRcdGlmIChyc3NpX2xldmVsID09IDEpXG4mIzQzO1x0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZjAwMDA7XG4mIzQzO1x0XHRcdFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxuJiM0MztcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDAwO1xuJiM0MztcdFx0XHRcdGVsc2VcbiYjNDM7XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAxNTtcbiYjNDM7XHRcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0XHRpZiAocnNzaV9sZXZlbCA9PSAxKVxuJiM0MztcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGYwMDAwO1xuJiM0MztcdFx0XHRcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcbiYjNDM7XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAwMDtcbiYjNDM7XHRcdFx0XHRlbHNlXG4mIzQzO1x0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZmYwMDU7XG4mIzQzO1x0XHRcdH1cbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRpZiAocmZfdHlwZSA9PSBSRl8xVDFSKSB7XG4tXHRcdFx0XHRpZiAoY3VydHhid180MG1oeikge1xuLVx0XHRcdFx0XHRpZiAocnNzaV9sZXZlbCA9PSAxKVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmMDAwMDtcbi1cdFx0XHRcdFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAwMDtcbi1cdFx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAxNTtcbi1cdFx0XHRcdH0gZWxzZSB7XG4tXHRcdFx0XHRcdGlmIChyc3NpX2xldmVsID09IDEpXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGYwMDAwO1xuLVx0XHRcdFx0XHRlbHNlIGlmIChyc3NpX2xldmVsID09IDIpXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDAwO1xuLVx0XHRcdFx0XHRlbHNlXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDA1O1xuLVx0XHRcdFx0fVxuJiM0MztcdFx0XHRpZiAoY3VydHhid180MG1oeikge1xuJiM0MztcdFx0XHRcdGlmIChyc3NpX2xldmVsID09IDEpXG4mIzQzO1x0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGZmZjAwMDA7XG4mIzQzO1x0XHRcdFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxuJiM0MztcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmZmZmMDAwO1xuJiM0MztcdFx0XHRcdGVsc2VcbiYjNDM7XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZmZmZjAxNTtcbiBcdFx0XHR9IGVsc2Uge1xuLVx0XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopIHtcbi1cdFx0XHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcbi1cdFx0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGZmZjAwMDA7XG4tXHRcdFx0XHRcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcbi1cdFx0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGZmZmYwMDA7XG4tXHRcdFx0XHRcdGVsc2Vcbi1cdFx0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGZmZmYwMTU7XG4tXHRcdFx0XHR9IGVsc2Uge1xuLVx0XHRcdFx0XHRpZiAocnNzaV9sZXZlbCA9PSAxKVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZmZmMDAwMDtcbi1cdFx0XHRcdFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZmZmZjAwMDtcbi1cdFx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZmZmZjAwNTtcbi1cdFx0XHRcdH1cbiYjNDM7XHRcdFx0XHRpZiAocnNzaV9sZXZlbCA9PSAxKVxuJiM0MztcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmZmYwMDAwO1xuJiM0MztcdFx0XHRcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcbiYjNDM7XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZmZmZjAwMDtcbiYjNDM7XHRcdFx0XHRlbHNlXG4mIzQzO1x0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGZmZmYwMDU7XG4gXHRcdFx0fVxuIFx0XHR9XG4gXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE3OjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGEgbG9jYWwgdmFyaWFibGUgYG1pbW9fcHNgIHRoYXQgd2FzIGhhcmRjb2RlZCB0byBgSUVFRTgwMjExX1NNUFNfT0ZGYCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZGVhZCBjb2RlIGJsb2NrcyB0aGF0IGNoZWNrZWQgaWYgaXQgd2FzIGBJRUVFODAyMTFfU01QU19TVEFUSUNgIG9yIGBJRUVFODAyMTFfU01QU19EWU5BTUlDYC4gVGhpcyBpcyBwdXJlbHkgZGVhZCBjb2RlIHJlbW92YWwgYW5kIGRvZXMgbm90IGFsdGVyIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDhhZGU4OGMyYWVhZDU0MjIwZjI4NTg0YWM5N2E5YTY2NGRmMDAxNmMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAxNCAxNzoyODoyNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTg4ZWUvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTg4ZWUvaHcuYwppbmRleCA1M2MzMmUxZGU3ZTQ3Li45MTBmODM3MmQ4M2QxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE4OGVlL2h3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxODhlZS9ody5jCkBAIC0xOTcwLDcgJiM0MzsxOTcwLDYgQEAgc3RhdGljIHZvaWQgcnRsODhlZV91cGRhdGVfaGFsX3JhdGVfdGFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJdTMyIHJhdHJfdmFsdWU7CiAJdTggcmF0cl9pbmRleCA9IDA7CiAJdTggYl9ubW9kZSA9IG1hYy0mZ3Q7aHRfZW5hYmxlOwotCS8qdTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsqLwogCXUxNiBzaG9ydGdpX3JhdGU7CiAJdTMyIHRtcF9yYXRyX3ZhbHVlOwogCXU4IGN1cnR4YndfNDBtaHogPSBtYWMtJmd0O2J3XzQwOwpAQCAtMjA3MCw3ICYjNDM7MjA2OSw2IEBAIHN0YXRpYyB2b2lkIHJ0bDg4ZWVfdXBkYXRlX2hhbF9yYXRlX21hc2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJYm9vbCBiX3Nob3J0Z2kgPSBmYWxzZTsKIAl1OCByYXRlX21hc2tbNV07CiAJdTggbWFjaWQgPSAwOwotCS8qdTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsqLwogCiAJc3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKilzdGEtJmd0O2Rydl9wcml2OwogCXdpcmVsZXNzbW9kZSA9IHN0YV9lbnRyeS0mZ3Q7d2lyZWxlc3NfbW9kZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyZWUvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyZWUvaHcuYwppbmRleCA0OGEzYzk0NjA2YmVmLi4wMDA0ODkxMjkwMGM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmVlL2h3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJlZS9ody5jCkBAIC0yMjY2LDcgJiM0MzsyMjY2LDYgQEAgc3RhdGljIHZvaWQgcnRsOTJlZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAlib29sIGJfc2hvcnRnaSA9IGZhbHNlOwogCXU4IHJhdGVfbWFza1s3XSA9IHswfTsKIAl1OCBtYWNpZCA9IDA7Ci0JLyp1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGOyovCiAJc3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKilzdGEtJmd0O2Rydl9wcml2OwogCXdpcmVsZXNzbW9kZSA9IHN0YV9lbnRyeS0mZ3Q7d2lyZWxlc3NfbW9kZTsKIAlpZiAobWFjLSZndDtvcG1vZGUgPT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTiB8fApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJzZS9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJzZS9ody5jCmluZGV4IGU1Nzc1Yjk0ZjA0ZWUuLjZiOWYyNDdkMTFlMGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyc2UvaHcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MnNlL2h3LmMKQEAgLTIwMDEsMTAgJiM0MzsyMDAxLDkgQEAgc3RhdGljIHZvaWQgcnRsOTJzZV91cGRhdGVfaGFsX3JhdGVfdGFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJc3RydWN0IHJ0bF9waHkgKnJ0bHBoeSA9ICZhbXA7KHJ0bHByaXYtJmd0O3BoeSk7CiAJc3RydWN0IHJ0bF9tYWMgKm1hYyA9IHJ0bF9tYWMocnRsX3ByaXYoaHcpKTsKIAlzdHJ1Y3QgcnRsX2hhbCAqcnRsaGFsID0gcnRsX2hhbChydGxfcHJpdihodykpOwotCXUzMiByYXRyX3ZhbHVlOwomIzQzOwl1MzIgcmF0cl92YWx1ZSwgcmF0cl9tYXNrOwogCXU4IHJhdHJfaW5kZXggPSAwOwogCXU4IG5tb2RlID0gbWFjLSZndDtodF9lbmFibGU7Ci0JdTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsKIAl1MTYgc2hvcnRnaV9yYXRlID0gMDsKIAl1MzIgdG1wX3JhdHJfdmFsdWUgPSAwOwogCXU4IGN1cnR4YndfNDBtaHogPSBtYWMtJmd0O2J3XzQwOwpAQCAtMjAzMiwyNiAmIzQzOzIwMzEsMjEgQEAgc3RhdGljIHZvaWQgcnRsOTJzZV91cGRhdGVfaGFsX3JhdGVfdGFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJY2FzZSBXSVJFTEVTU19NT0RFX05fMjRHOgogCWNhc2UgV0lSRUxFU1NfTU9ERV9OXzVHOgogCQlubW9kZSA9IDE7Ci0JCWlmIChtaW1vX3BzID09IElFRUU4MDIxMV9TTVBTX1NUQVRJQykgewotCQkJcmF0cl92YWx1ZSAmYW1wOz0gMHgwMDA3RjAwNTsKLQkJfSBlbHNlIHsKLQkJCXUzMiByYXRyX21hc2s7Ci0KLQkJCWlmIChnZXRfcmZfdHlwZShydGxwaHkpID09IFJGXzFUMlIgfHwKLQkJCSAgICBnZXRfcmZfdHlwZShydGxwaHkpID09IFJGXzFUMVIpIHsKLQkJCQlpZiAoY3VydHhid180MG1oeikKLQkJCQkJcmF0cl9tYXNrID0gMHgwMDBmZjAxNTsKLQkJCQllbHNlCi0JCQkJCXJhdHJfbWFzayA9IDB4MDAwZmYwMDU7Ci0JCQl9IGVsc2UgewotCQkJCWlmIChjdXJ0eGJ3XzQwbWh6KQotCQkJCQlyYXRyX21hc2sgPSAweDBmMGZmMDE1OwotCQkJCWVsc2UKLQkJCQkJcmF0cl9tYXNrID0gMHgwZjBmZjAwNTsKLQkJCX0KIAotCQkJcmF0cl92YWx1ZSAmYW1wOz0gcmF0cl9tYXNrOwomIzQzOwkJaWYgKGdldF9yZl90eXBlKHJ0bHBoeSkgPT0gUkZfMVQyUiB8fAomIzQzOwkJICAgIGdldF9yZl90eXBlKHJ0bHBoeSkgPT0gUkZfMVQxUikgewomIzQzOwkJCWlmIChjdXJ0eGJ3XzQwbWh6KQomIzQzOwkJCQlyYXRyX21hc2sgPSAweDAwMGZmMDE1OwomIzQzOwkJCWVsc2UKJiM0MzsJCQkJcmF0cl9tYXNrID0gMHgwMDBmZjAwNTsKJiM0MzsJCX0gZWxzZSB7CiYjNDM7CQkJaWYgKGN1cnR4YndfNDBtaHopCiYjNDM7CQkJCXJhdHJfbWFzayA9IDB4MGYwZmYwMTU7CiYjNDM7CQkJZWxzZQomIzQzOwkJCQlyYXRyX21hc2sgPSAweDBmMGZmMDA1OwogCQl9CiYjNDM7CiYjNDM7CQlyYXRyX3ZhbHVlICZhbXA7PSByYXRyX21hc2s7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWlmIChydGxwaHktJmd0O3JmX3R5cGUgPT0gUkZfMVQyUikKQEAgLTIxMTksNyAmIzQzOzIxMTMsNiBAQCBzdGF0aWMgdm9pZCBydGw5MnNlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCXUzMiBiYW5kID0gMDsKIAlib29sIGJtdWx0aWNhc3QgPSBmYWxzZTsKIAl1OCBtYWNpZCA9IDA7Ci0JdTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsKIAogCXN0YV9lbnRyeSA9IChzdHJ1Y3QgcnRsX3N0YV9pbmZvICopIHN0YS0mZ3Q7ZHJ2X3ByaXY7CiAJd2lyZWxlc3Ntb2RlID0gc3RhX2VudHJ5LSZndDt3aXJlbGVzc19tb2RlOwpAQCAtMjE2Nyw0MSAmIzQzOzIxNjAsMzIgQEAgc3RhdGljIHZvaWQgcnRsOTJzZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAkJYmFuZCB8PSAoV0lSRUxFU1NfMTFOIHwgV0lSRUxFU1NfMTFHIHwgV0lSRUxFU1NfMTFCKTsKIAkJcmF0cl9pbmRleCA9IFJBVFJfSU5YX1dJUkVMRVNTX05HQjsKIAotCQlpZiAobWltb19wcyA9PSBJRUVFODAyMTFfU01QU19TVEFUSUMpIHsKLQkJCWlmIChyc3NpX2xldmVsID09IDEpCi0JCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwNzAwMDA7Ci0JCQllbHNlIGlmIChyc3NpX2xldmVsID09IDIpCi0JCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwN2YwMDA7Ci0JCQllbHNlCi0JCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwN2YwMDU7CiYjNDM7CQlpZiAocnRscGh5LSZndDtyZl90eXBlID09IFJGXzFUMlIgfHwKJiM0MzsJCSAgICBydGxwaHktJmd0O3JmX3R5cGUgPT0gUkZfMVQxUikgewomIzQzOwkJCWlmIChyc3NpX2xldmVsID09IDEpIHsKJiM0MzsJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwZjAwMDA7CiYjNDM7CQkJfSBlbHNlIGlmIChyc3NpX2xldmVsID09IDMpIHsKJiM0MzsJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwZmMwMDA7CiYjNDM7CQkJfSBlbHNlIGlmIChyc3NpX2xldmVsID09IDUpIHsKJiM0MzsJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwZmYwMDA7CiYjNDM7CQkJfSBlbHNlIHsKJiM0MzsJCQkJaWYgKGN1cnR4YndfNDBtaHopCiYjNDM7CQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwMDBmZjAxNTsKJiM0MzsJCQkJZWxzZQomIzQzOwkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwZmYwMDU7CiYjNDM7CQkJfQogCQl9IGVsc2UgewotCQkJaWYgKHJ0bHBoeS0mZ3Q7cmZfdHlwZSA9PSBSRl8xVDJSIHx8Ci0JCQkJcnRscGh5LSZndDtyZl90eXBlID09IFJGXzFUMVIpIHsKLQkJCQlpZiAocnNzaV9sZXZlbCA9PSAxKSB7Ci0JCQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwMDBmMDAwMDsKLQkJCQl9IGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMykgewotCQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwMDBmYzAwMDsKLQkJCQl9IGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gNSkgewotCQkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwZmYwMDA7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJaWYgKGN1cnR4YndfNDBtaHopCi0JCQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwMDBmZjAxNTsKLQkJCQkJZWxzZQotCQkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwZmYwMDU7Ci0JCQkJfQomIzQzOwkJCWlmIChyc3NpX2xldmVsID09IDEpIHsKJiM0MzsJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGY4ZjAwMDA7CiYjNDM7CQkJfSBlbHNlIGlmIChyc3NpX2xldmVsID09IDMpIHsKJiM0MzsJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGY4ZmMwMDA7CiYjNDM7CQkJfSBlbHNlIGlmIChyc3NpX2xldmVsID09IDUpIHsKJiM0MzsJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGY4ZmYwMDA7CiAJCQl9IGVsc2UgewotCQkJCWlmIChyc3NpX2xldmVsID09IDEpIHsKLQkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGY4ZjAwMDA7Ci0JCQkJfSBlbHNlIGlmIChyc3NpX2xldmVsID09IDMpIHsKLQkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGY4ZmMwMDA7Ci0JCQkJfSBlbHNlIGlmIChyc3NpX2xldmVsID09IDUpIHsKLQkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGY4ZmYwMDA7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJaWYgKGN1cnR4YndfNDBtaHopCi0JCQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwZjhmZjAxNTsKLQkJCQkJZWxzZQotCQkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGY4ZmYwMDU7Ci0JCQkJfQomIzQzOwkJCQlpZiAoY3VydHhid180MG1oeikKJiM0MzsJCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDBmOGZmMDE1OwomIzQzOwkJCQllbHNlCiYjNDM7CQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwZjhmZjAwNTsKIAkJCX0KIAkJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODcyM2FlL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODcyM2FlL2h3LmMKaW5kZXggYmQ0NWQ5YmQ0MGJiNy4uMmU1MGY1YzI0ZGY4MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDg3MjNhZS9ody5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4NzIzYWUvaHcuYwpAQCAtMTkyNCw3ICYjNDM7MTkyNCw2IEBAIHN0YXRpYyB2b2lkIHJ0bDg3MjNlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCWJvb2wgc2hvcnRnaSA9IGZhbHNlOwogCXU4IHJhdGVfbWFza1s1XTsKIAl1OCBtYWNpZCA9IDA7Ci0JLyp1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGOyovCiAKIAlzdGFfZW50cnkgPSAoc3RydWN0IHJ0bF9zdGFfaW5mbyAqKXN0YS0mZ3Q7ZHJ2X3ByaXY7CiAJd2lyZWxlc3Ntb2RlID0gc3RhX2VudHJ5LSZndDt3aXJlbGVzc19tb2RlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDg4MjFhZS9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDg4MjFhZS9ody5jCmluZGV4IDFiYTUzZTY3MTIwN2UuLjMxZjQ5OWJlOTlhMzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4ODIxYWUvaHcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODgyMWFlL2h3LmMKQEAgLTM0NjgsNyAmIzQzOzM0NjgsNiBAQCBzdGF0aWMgdm9pZCBydGw4ODIxYWVfdXBkYXRlX2hhbF9yYXRlX21hc2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJYm9vbCBiX3Nob3J0Z2kgPSBmYWxzZTsKIAl1OCByYXRlX21hc2tbN107CiAJdTggbWFjaWQgPSAwOwotCXU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7CiAJdTggcmZfdHlwZTsKIAogCXN0YV9lbnRyeSA9IChzdHJ1Y3QgcnRsX3N0YV9pbmZvICopc3RhLSZndDtkcnZfcHJpdjsKQEAgLTM1MzUsNDcgJiM0MzszNTM0LDM3IEBAIHN0YXRpYyB2b2lkIHJ0bDg4MjFhZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAkJZWxzZQogCQkJcmF0cl9pbmRleCA9IFJBVFJfSU5YX1dJUkVMRVNTX05HOwogCi0JCWlmIChtaW1vX3BzID09IElFRUU4MDIxMV9TTVBTX1NUQVRJQwotCQkJfHwgbWltb19wcyA9PSBJRUVFODAyMTFfU01QU19EWU5BTUlDKSB7Ci0JCQlpZiAocnNzaV9sZXZlbCA9PSAxKQotCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDAwMGYwMDAwOwotCQkJZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKQotCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDAwMGZmMDAwOwotCQkJZWxzZQotCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDAwMGZmMDA1OwomIzQzOwkJaWYgKHJmX3R5cGUgPT0gUkZfMVQxUikgewomIzQzOwkJCWlmIChjdXJ0eGJ3XzQwbWh6KSB7CiYjNDM7CQkJCWlmIChyc3NpX2xldmVsID09IDEpCiYjNDM7CQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwMDBmMDAwMDsKJiM0MzsJCQkJZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKQomIzQzOwkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwZmYwMDA7CiYjNDM7CQkJCWVsc2UKJiM0MzsJCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDAwMGZmMDE1OwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCWlmIChyc3NpX2xldmVsID09IDEpCiYjNDM7CQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwMDBmMDAwMDsKJiM0MzsJCQkJZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKQomIzQzOwkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwZmYwMDA7CiYjNDM7CQkJCWVsc2UKJiM0MzsJCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDAwMGZmMDA1OwomIzQzOwkJCX0KIAkJfSBlbHNlIHsKLQkJCWlmIChyZl90eXBlID09IFJGXzFUMVIpIHsKLQkJCQlpZiAoY3VydHhid180MG1oeikgewotCQkJCQlpZiAocnNzaV9sZXZlbCA9PSAxKQotCQkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwZjAwMDA7Ci0JCQkJCWVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMikKLQkJCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDAwMGZmMDAwOwotCQkJCQllbHNlCi0JCQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwMDBmZjAxNTsKLQkJCQl9IGVsc2UgewotCQkJCQlpZiAocnNzaV9sZXZlbCA9PSAxKQotCQkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwZjAwMDA7Ci0JCQkJCWVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMikKLQkJCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDAwMGZmMDAwOwotCQkJCQllbHNlCi0JCQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwMDBmZjAwNTsKLQkJCQl9CiYjNDM7CQkJaWYgKGN1cnR4YndfNDBtaHopIHsKJiM0MzsJCQkJaWYgKHJzc2lfbGV2ZWwgPT0gMSkKJiM0MzsJCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDBmZmYwMDAwOwomIzQzOwkJCQllbHNlIGlmIChyc3NpX2xldmVsID09IDIpCiYjNDM7CQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwZmZmZjAwMDsKJiM0MzsJCQkJZWxzZQomIzQzOwkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGZmZmYwMTU7CiAJCQl9IGVsc2UgewotCQkJCWlmIChjdXJ0eGJ3XzQwbWh6KSB7Ci0JCQkJCWlmIChyc3NpX2xldmVsID09IDEpCi0JCQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwZmZmMDAwMDsKLQkJCQkJZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKQotCQkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGZmZmYwMDA7Ci0JCQkJCWVsc2UKLQkJCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDBmZmZmMDE1OwotCQkJCX0gZWxzZSB7Ci0JCQkJCWlmIChyc3NpX2xldmVsID09IDEpCi0JCQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwZmZmMDAwMDsKLQkJCQkJZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKQotCQkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGZmZmYwMDA7Ci0JCQkJCWVsc2UKLQkJCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDBmZmZmMDA1OwotCQkJCX0KJiM0MzsJCQkJaWYgKHJzc2lfbGV2ZWwgPT0gMSkKJiM0MzsJCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDBmZmYwMDAwOwomIzQzOwkJCQllbHNlIGlmIChyc3NpX2xldmVsID09IDIpCiYjNDM7CQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwZmZmZjAwMDsKJiM0MzsJCQkJZWxzZQomIzQzOwkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGZmZmYwMDU7CiAJCQl9CiAJCX0KIAkJYnJlYWs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE3OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxMzQKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiA3NTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEZWFkIENvZGUgUmVtb3ZhbCBpbiB0aGUgcnRsd2lmaSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyBjbGVhbmluZyB1cCB0aGUgYHJ0bHdpZmlgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBSZWFsdGVrIHdpcmVsZXNzIGNhcmRzIOKAkyB0aGUgdXN1YWwgc3VzcGVjdHM6IHJ0bDgxODhlZSwgcnRsODE5MmVlLCBydGw4MTkyc2UsIHJ0bDg3MjNhZSwgYW5kIHJ0bDg4MjFhZS4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSByZW1vdmluZyB0aGUgYG1pbW9fcHNgIHZhcmlhYmxlIGFuZCBpdHMgYXNzb2NpYXRlZCBjb25kaXRpb25hbCBibG9ja3MuIEluaXRpYWxseSwgaXQgbG9va2VkIGxpa2UgdGhleSBqdXN0IHJlbW92ZWQgdGhlIHZhcmlhYmxlIGRlZmluaXRpb24sIGJ1dCBpdCYjMzk7cyBtb3JlIHNwZWNpZmljLCB0aGV5JiMzOTtyZSB0YWtpbmcgb3V0IHBhcnRzIHdoZXJlIGBtaW1vX3BzYCBpcyBjb21wYXJlZCB0byBgSUVFRTgwMjExX1NNUFNfU1RBVElDYC4KCk15IGluaXRpYWwgdGhvdWdodCB3YXMsICYjMzQ7SXMgdGhpcyB0cnVseSBkZWFkIGNvZGU/JiMzNDsgU2luY2UgYG1pbW9fcHNgIHdhcyBoYXJkY29kZWQgdG8gYElFRUU4MDIxMV9TTVBTX09GRmAsIHdoaWNoIGlzIGVmZmVjdGl2ZWx5IHplcm8sIGFuZCBjb21wYXJpbmcgdG8gYElFRUU4MDIxMV9TTVBTX1NUQVRJQ2AgKHdoaWNoIGlzIG9uZSkuCgpJIHdlbnQgaW4gdG8gaW52ZXN0aWdhdGUuIExldCYjMzk7cyBzZWUuLi4gaW4gYHJ0bDgxOTJzZS9ody5jYCwgZm9yIGV4YW1wbGUsIHRoZXJlJiMzOTtzIGEgc25pcHBldDoKYGBgYwotCXU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7Ci4uLgotCQlpZiAobWltb19wcyA9PSBJRUVFODAyMTFfU01QU19TVEFUSUMpIHsKLQkJCXJhdHJfdmFsdWUgJmFtcDs9IDB4MDAwN0YwMDU7Ci0JCX0gZWxzZSB7Ci4uLgpgYGAKQWgsIHJpZ2h0LiBTaW5jZSBgbWltb19wc2AgaXMgaW5pdGlhbGl6ZWQgdG8gYElFRUU4MDIxMV9TTVBTX09GRmAgKDApLCB0aGUgYGlmYCBjb25kaXRpb24gd291bGQgKmFsd2F5cyogYmUgZmFsc2UuIFRoZSBwYXRjaCBpcyBzZW5zaWJseSByZW1vdmluZyB0aGUgYGlmYCBhbmQga2VlcGluZyB0aGUgYGVsc2VgIGJsb2NrLiBTYW1lIHBhdHRlcm4gZm9yIGBydGw5MnNlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrYCBhbmQgYHJ0bDg4MjFhZV91cGRhdGVfaGFsX3JhdGVfbWFza2AuIFRoaXMgY29uZmlybXMgdGhlIHJlbW92YWwgaXMgZGVhZCBjb2RlLCBhcyB0aGUgY29uZGl0aW9uIHdhcyBuZXZlciB0cnVlLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O2xsIGRvdWJsZSBjaGVjayBob3cgYG1pbW9fcHNgIGlzIHVzZWQuIElzIGl0IG1vZGlmaWVkIGFueXdoZXJlIGJldHdlZW4gaXRzIGluaXRpYWxpemF0aW9uIGFuZCB0aGUgY29uZGl0aW9uYWwgY2hlY2s/IEV4YW1pbmluZyB0aGUgcmVsZXZhbnQgY29kZSBpbiBgcnRsODE5MnNlL2h3LmNgLCBgbWltb19wc2AgaXMgZGVmaW5lZCBsb2NhbGx5IGFuZCByZW1haW5zIHVuY2hhbmdlZCBiZWZvcmUgaXRzIHVzZSBpbiB0aGUgY29uZGl0aW9uYWwuIFNvIGl04oCZcyAqcHVyZWx5KiBkZWFkIGNvZGUgcmVtb3ZhbC4gTm8gZnVuY3Rpb25hbCBpbXBhY3Qgd2hhdHNvZXZlci4KClRoZXJlZm9yZSwgdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHNhZmUgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJIGFtIGdvaW5nIHRvIHF1aWNrbHkgdmVyaWZ5IHRoaXMgdXNpbmcgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIGJ5IGludmVzdGlnYXRpbmcgdGhlIGNvZGUgb2YgYHJ0bDkyc2VfdXBkYXRlX2hhbF9yYXRlX3RhYmxlYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJzZS9ody5jYCBiZWZvcmUgdGhlIHBhdGNoLCBidXQgdGhhdCBpcyBtZXJlbHkgYW4gYWRkaXRpb25hbCBkb3VibGUtY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTc6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyY3UvaHcuYz0xODA1PXN0YXRpYyB2b2lkIHJ0bDkyY3VfdXBkYXRlX2hhbF9yYXRlX3RhYmxlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyY3UvaHcuYy0xODE0LVx0dTggbm1vZGUgPSBtYWMtXHUwMDNlaHRfZW5hYmxlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJjdS9ody5jOjE4MTU6XHR1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJjdS9ody5jLTE4MTYtXHR1MTYgc2hvcnRnaV9yYXRlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyY3UvaHcuYz0xODkzPXN0YXRpYyB2b2lkIHJ0bDkyY3VfdXBkYXRlX2hhbF9yYXRlX21hc2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJjdS9ody5jLTE5MTMtXHR1OCBtYWNpZCA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmN1L2h3LmM6MTkxNDpcdHU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmN1L2h3LmMtMTkxNS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNzoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTUzCgkJCQkJCQlvdXRwdXQ6IDExNAoJCQkJCQkJdGhvdWdodHM6IDE3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3QqKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoaXMgcGF0Y2ggbWFkZSBzb21lIGNoYW5nZXMgdG8gc2V2ZXJhbCBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlcnM6IHJ0bDgxOTJzZSwgcnRsODgyMWFlLCBydGw4MTg4ZWUsIHJ0bDgxOTJlZSwgYW5kIHJ0bDg3MjNhZS4gVGhlIGRpZmYgcmVhbGx5IGhpZ2hsaWdodHMgdGhlIGlzc3VlLiBJdCBsb29rcyBsaWtlIHRoZXkgd2VyZSBkZWFsaW5nIHdpdGggYSBsb2NhbCB2YXJpYWJsZS4gVGhpcyB2YXJpYWJsZSwgbGV0JiMzOTtzIGNhbGwgaXQgYHNtcHNfc3RhdGVgLCB3YXMgaW5pdGlhbGl6ZWQgdG8gYElFRUU4MDIxMV9TTVBTX09GRmAuIFRoZW4sIHRoZSBjb2RlIHdhcyBjaGVja2luZyB0aGlzIHZhcmlhYmxlIGFnYWluc3QgYElFRUU4MDIxMV9TTVBTX1NUQVRJQ2Agb3IgYElFRUU4MDIxMV9TTVBTX0RZTkFNSUNgLgoKTm93LCBoZXJlJiMzOTtzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuIEkga25vdyBmcm9tIG15IGV4cGVyaWVuY2UsIGFuZCBhIHF1aWNrIGxvb2sgYXQgdGhlIHJlbGV2YW50IGhlYWRlcnMgKGxpa2VseSBgaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaGAgb3Igc29tZXRoaW5nIHNpbWlsYXIpLCB0aGF0IGBJRUVFODAyMTFfU01QU19PRkZgIGlzIGRlZmluZWQgYXMgMC4gYElFRUU4MDIxMV9TTVBTX1NUQVRJQ2AgaXMgMSwgYW5kIGBJRUVFODAyMTFfU01QU19EWU5BTUlDYCBpcyAyLiBUaGVyZWZvcmUsIHNpbmNlIHRoZSB2YXJpYWJsZSBzdGFydGVkIGFzIDAgYW5kIHRoZW4gd2FzIGNvbXBhcmVkIHRvIDEgb3IgMiwgdGhlIGNvbmRpdGlvbiBpbiB0aGUgY29kZSB3YXMgKmFsd2F5cyogZ29pbmcgdG8gZXZhbHVhdGUgYXMgZmFsc2UuIEl0IGRvZXNuJiMzOTt0IG1hdHRlciB3aGF0IHRoZSB1bmRlcmx5aW5nIGxvZ2ljIHdhcyAqc3VwcG9zZWQqIHRvIGRvLCB0aGUgZXhpc3RpbmcgY29kZSB3b3VsZCBuZXZlciBleGVjdXRlIHRoYXQgYnJhbmNoLgoKU28sIHJlYWxpc3RpY2FsbHksIHRoaXMgcGF0Y2ggaGFzIG5vIGZ1bmN0aW9uYWwgaW1wYWN0LiBJdCYjMzk7cyBhIGhhcm1sZXNzIGNoYW5nZSwgYnV0IGl0JiMzOTtzIG5vdCBhY3R1YWxseSBjaGFuZ2luZyBhbnl0aGluZy4gSSYjMzk7bSBnb2luZyB0byBtYXJrIHRoaXMgYXMgbm90IHdvcnRoIGZ1enppbmcsIHNvIEkmIzM5O2xsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gTm8gcG9pbnQgaW4gc3BlbmRpbmcgdGltZSBvbiBzb21ldGhpbmcgdGhhdCYjMzk7cyBhIGRlYWQgZW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE3OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhIGxvY2FsIHZhcmlhYmxlIGBtaW1vX3BzYCB0aGF0IHdhcyBoYXJkY29kZWQgdG8gYElFRUU4MDIxMV9TTVBTX09GRmAgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGRlYWQgY29kZSBibG9ja3MgdGhhdCBjaGVja2VkIGlmIGl0IHdhcyBgSUVFRTgwMjExX1NNUFNfU1RBVElDYCBvciBgSUVFRTgwMjExX1NNUFNfRFlOQU1JQ2AuIFRoaXMgaXMgcHVyZWx5IGRlYWQgY29kZSByZW1vdmFsIGFuZCBkb2VzIG5vdCBhbHRlciB0aGUgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgYSBsb2NhbCB2YXJpYWJsZSBgbWltb19wc2AgdGhhdCB3YXMgaGFyZGNvZGVkIHRvIGBJRUVFODAyMTFfU01QU19PRkZgIGFuZCB0aGUgY29ycmVzcG9uZGluZyBkZWFkIGNvZGUgYmxvY2tzIHRoYXQgY2hlY2tlZCBpZiBpdCB3YXMgYElFRUU4MDIxMV9TTVBTX1NUQVRJQ2Agb3IgYElFRUU4MDIxMV9TTVBTX0RZTkFNSUNgLiBUaGlzIGlzIHB1cmVseSBkZWFkIGNvZGUgcmVtb3ZhbCBhbmQgZG9lcyBub3QgYWx0ZXIgdGhlIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE3OjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNzoyODoyOC43NjQxOTI5MjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjY1MDQxMjg1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgYSBsb2NhbCB2YXJpYWJsZSBgbWltb19wc2AgdGhhdCB3YXMgaGFyZGNvZGVkIHRvIGBJRUVFODAyMTFfU01QU19PRkZgIGFuZCB0aGUgY29ycmVzcG9uZGluZyBkZWFkIGNvZGUgYmxvY2tzIHRoYXQgY2hlY2tlZCBpZiBpdCB3YXMgYElFRUU4MDIxMV9TTVBTX1NUQVRJQ2Agb3IgYElFRUU4MDIxMV9TTVBTX0RZTkFNSUNgLiBUaGlzIGlzIHB1cmVseSBkZWFkIGNvZGUgcmVtb3ZhbCBhbmQgZG9lcyBub3QgYWx0ZXIgdGhlIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNzoyODoyOC43NjQxOTgzMDdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzM0NjQwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDhhZGU4OGMyYWVhZDU0MjIwZjI4NTg0YWM5N2E5YTY2NGRmMDAxNmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTc6Mjg6MjcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxODhlZS9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxODhlZS9ody5jXFxuaW5kZXggNTNjMzJlMWRlN2U0Ny4uOTEwZjgzNzJkODNkMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE4OGVlL2h3LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE4OGVlL2h3LmNcXG5AQCAtMTk3MCw3ICsxOTcwLDYgQEAgc3RhdGljIHZvaWQgcnRsODhlZV91cGRhdGVfaGFsX3JhdGVfdGFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdHUzMiByYXRyX3ZhbHVlO1xcbiBcXHR1OCByYXRyX2luZGV4ID0gMDtcXG4gXFx0dTggYl9ubW9kZSA9IG1hYy1cXHUwMDNlaHRfZW5hYmxlO1xcbi1cXHQvKnU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7Ki9cXG4gXFx0dTE2IHNob3J0Z2lfcmF0ZTtcXG4gXFx0dTMyIHRtcF9yYXRyX3ZhbHVlO1xcbiBcXHR1OCBjdXJ0eGJ3XzQwbWh6ID0gbWFjLVxcdTAwM2Vid180MDtcXG5AQCAtMjA3MCw3ICsyMDY5LDYgQEAgc3RhdGljIHZvaWQgcnRsODhlZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0Ym9vbCBiX3Nob3J0Z2kgPSBmYWxzZTtcXG4gXFx0dTggcmF0ZV9tYXNrWzVdO1xcbiBcXHR1OCBtYWNpZCA9IDA7XFxuLVxcdC8qdTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsqL1xcbiBcXG4gXFx0c3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKilzdGEtXFx1MDAzZWRydl9wcml2O1xcbiBcXHR3aXJlbGVzc21vZGUgPSBzdGFfZW50cnktXFx1MDAzZXdpcmVsZXNzX21vZGU7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyZWUvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyZWUvaHcuY1xcbmluZGV4IDQ4YTNjOTQ2MDZiZWYuLjAwMDQ4OTEyOTAwYzQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJlZS9ody5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJlZS9ody5jXFxuQEAgLTIyNjYsNyArMjI2Niw2IEBAIHN0YXRpYyB2b2lkIHJ0bDkyZWVfdXBkYXRlX2hhbF9yYXRlX21hc2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdGJvb2wgYl9zaG9ydGdpID0gZmFsc2U7XFxuIFxcdHU4IHJhdGVfbWFza1s3XSA9IHswfTtcXG4gXFx0dTggbWFjaWQgPSAwO1xcbi1cXHQvKnU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7Ki9cXG4gXFx0c3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKilzdGEtXFx1MDAzZWRydl9wcml2O1xcbiBcXHR3aXJlbGVzc21vZGUgPSBzdGFfZW50cnktXFx1MDAzZXdpcmVsZXNzX21vZGU7XFxuIFxcdGlmIChtYWMtXFx1MDAzZW9wbW9kZSA9PSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OIHx8XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyc2UvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyc2UvaHcuY1xcbmluZGV4IGU1Nzc1Yjk0ZjA0ZWUuLjZiOWYyNDdkMTFlMGEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJzZS9ody5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJzZS9ody5jXFxuQEAgLTIwMDEsMTAgKzIwMDEsOSBAQCBzdGF0aWMgdm9pZCBydGw5MnNlX3VwZGF0ZV9oYWxfcmF0ZV90YWJsZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0c3RydWN0IHJ0bF9waHkgKnJ0bHBoeSA9IFxcdTAwMjYocnRscHJpdi1cXHUwMDNlcGh5KTtcXG4gXFx0c3RydWN0IHJ0bF9tYWMgKm1hYyA9IHJ0bF9tYWMocnRsX3ByaXYoaHcpKTtcXG4gXFx0c3RydWN0IHJ0bF9oYWwgKnJ0bGhhbCA9IHJ0bF9oYWwocnRsX3ByaXYoaHcpKTtcXG4tXFx0dTMyIHJhdHJfdmFsdWU7XFxuK1xcdHUzMiByYXRyX3ZhbHVlLCByYXRyX21hc2s7XFxuIFxcdHU4IHJhdHJfaW5kZXggPSAwO1xcbiBcXHR1OCBubW9kZSA9IG1hYy1cXHUwMDNlaHRfZW5hYmxlO1xcbi1cXHR1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGO1xcbiBcXHR1MTYgc2hvcnRnaV9yYXRlID0gMDtcXG4gXFx0dTMyIHRtcF9yYXRyX3ZhbHVlID0gMDtcXG4gXFx0dTggY3VydHhid180MG1oeiA9IG1hYy1cXHUwMDNlYndfNDA7XFxuQEAgLTIwMzIsMjYgKzIwMzEsMjEgQEAgc3RhdGljIHZvaWQgcnRsOTJzZV91cGRhdGVfaGFsX3JhdGVfdGFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdGNhc2UgV0lSRUxFU1NfTU9ERV9OXzI0RzpcXG4gXFx0Y2FzZSBXSVJFTEVTU19NT0RFX05fNUc6XFxuIFxcdFxcdG5tb2RlID0gMTtcXG4tXFx0XFx0aWYgKG1pbW9fcHMgPT0gSUVFRTgwMjExX1NNUFNfU1RBVElDKSB7XFxuLVxcdFxcdFxcdHJhdHJfdmFsdWUgXFx1MDAyNj0gMHgwMDA3RjAwNTtcXG4tXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0dTMyIHJhdHJfbWFzaztcXG4tXFxuLVxcdFxcdFxcdGlmIChnZXRfcmZfdHlwZShydGxwaHkpID09IFJGXzFUMlIgfHxcXG4tXFx0XFx0XFx0ICAgIGdldF9yZl90eXBlKHJ0bHBoeSkgPT0gUkZfMVQxUikge1xcbi1cXHRcXHRcXHRcXHRpZiAoY3VydHhid180MG1oeilcXG4tXFx0XFx0XFx0XFx0XFx0cmF0cl9tYXNrID0gMHgwMDBmZjAxNTtcXG4tXFx0XFx0XFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRcXHRcXHRyYXRyX21hc2sgPSAweDAwMGZmMDA1O1xcbi1cXHRcXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRcXHRpZiAoY3VydHhid180MG1oeilcXG4tXFx0XFx0XFx0XFx0XFx0cmF0cl9tYXNrID0gMHgwZjBmZjAxNTtcXG4tXFx0XFx0XFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRcXHRcXHRyYXRyX21hc2sgPSAweDBmMGZmMDA1O1xcbi1cXHRcXHRcXHR9XFxuIFxcbi1cXHRcXHRcXHRyYXRyX3ZhbHVlIFxcdTAwMjY9IHJhdHJfbWFzaztcXG4rXFx0XFx0aWYgKGdldF9yZl90eXBlKHJ0bHBoeSkgPT0gUkZfMVQyUiB8fFxcbitcXHRcXHQgICAgZ2V0X3JmX3R5cGUocnRscGh5KSA9PSBSRl8xVDFSKSB7XFxuK1xcdFxcdFxcdGlmIChjdXJ0eGJ3XzQwbWh6KVxcbitcXHRcXHRcXHRcXHRyYXRyX21hc2sgPSAweDAwMGZmMDE1O1xcbitcXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFxcdHJhdHJfbWFzayA9IDB4MDAwZmYwMDU7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGlmIChjdXJ0eGJ3XzQwbWh6KVxcbitcXHRcXHRcXHRcXHRyYXRyX21hc2sgPSAweDBmMGZmMDE1O1xcbitcXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFxcdHJhdHJfbWFzayA9IDB4MGYwZmYwMDU7XFxuIFxcdFxcdH1cXG4rXFxuK1xcdFxcdHJhdHJfdmFsdWUgXFx1MDAyNj0gcmF0cl9tYXNrO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0aWYgKHJ0bHBoeS1cXHUwMDNlcmZfdHlwZSA9PSBSRl8xVDJSKVxcbkBAIC0yMTE5LDcgKzIxMTMsNiBAQCBzdGF0aWMgdm9pZCBydGw5MnNlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXHR1MzIgYmFuZCA9IDA7XFxuIFxcdGJvb2wgYm11bHRpY2FzdCA9IGZhbHNlO1xcbiBcXHR1OCBtYWNpZCA9IDA7XFxuLVxcdHU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7XFxuIFxcbiBcXHRzdGFfZW50cnkgPSAoc3RydWN0IHJ0bF9zdGFfaW5mbyAqKSBzdGEtXFx1MDAzZWRydl9wcml2O1xcbiBcXHR3aXJlbGVzc21vZGUgPSBzdGFfZW50cnktXFx1MDAzZXdpcmVsZXNzX21vZGU7XFxuQEAgLTIxNjcsNDEgKzIxNjAsMzIgQEAgc3RhdGljIHZvaWQgcnRsOTJzZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0XFx0YmFuZCB8PSAoV0lSRUxFU1NfMTFOIHwgV0lSRUxFU1NfMTFHIHwgV0lSRUxFU1NfMTFCKTtcXG4gXFx0XFx0cmF0cl9pbmRleCA9IFJBVFJfSU5YX1dJUkVMRVNTX05HQjtcXG4gXFxuLVxcdFxcdGlmIChtaW1vX3BzID09IElFRUU4MDIxMV9TTVBTX1NUQVRJQykge1xcbi1cXHRcXHRcXHRpZiAocnNzaV9sZXZlbCA9PSAxKVxcbi1cXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDAwMDcwMDAwO1xcbi1cXHRcXHRcXHRlbHNlIGlmIChyc3NpX2xldmVsID09IDIpXFxuLVxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwN2YwMDA7XFxuLVxcdFxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwMDA3ZjAwNTtcXG4rXFx0XFx0aWYgKHJ0bHBoeS1cXHUwMDNlcmZfdHlwZSA9PSBSRl8xVDJSIHx8XFxuK1xcdFxcdCAgICBydGxwaHktXFx1MDAzZXJmX3R5cGUgPT0gUkZfMVQxUikge1xcbitcXHRcXHRcXHRpZiAocnNzaV9sZXZlbCA9PSAxKSB7XFxuK1xcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwZjAwMDA7XFxuK1xcdFxcdFxcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAzKSB7XFxuK1xcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwZmMwMDA7XFxuK1xcdFxcdFxcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSA1KSB7XFxuK1xcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwZmYwMDA7XFxuK1xcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdGlmIChjdXJ0eGJ3XzQwbWh6KVxcbitcXHRcXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDAwMGZmMDE1O1xcbitcXHRcXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwZmYwMDU7XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0aWYgKHJ0bHBoeS1cXHUwMDNlcmZfdHlwZSA9PSBSRl8xVDJSIHx8XFxuLVxcdFxcdFxcdFxcdHJ0bHBoeS1cXHUwMDNlcmZfdHlwZSA9PSBSRl8xVDFSKSB7XFxuLVxcdFxcdFxcdFxcdGlmIChyc3NpX2xldmVsID09IDEpIHtcXG4tXFx0XFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwMDBmMDAwMDtcXG4tXFx0XFx0XFx0XFx0fSBlbHNlIGlmIChyc3NpX2xldmVsID09IDMpIHtcXG4tXFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwMDBmYzAwMDtcXG4tXFx0XFx0XFx0XFx0fSBlbHNlIGlmIChyc3NpX2xldmVsID09IDUpIHtcXG4tXFx0XFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwMDBmZjAwMDtcXG4tXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0XFx0XFx0aWYgKGN1cnR4YndfNDBtaHopXFxuLVxcdFxcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwZmYwMTU7XFxuLVxcdFxcdFxcdFxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwMDBmZjAwNTtcXG4tXFx0XFx0XFx0XFx0fVxcbitcXHRcXHRcXHRpZiAocnNzaV9sZXZlbCA9PSAxKSB7XFxuK1xcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MGY4ZjAwMDA7XFxuK1xcdFxcdFxcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAzKSB7XFxuK1xcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MGY4ZmMwMDA7XFxuK1xcdFxcdFxcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSA1KSB7XFxuK1xcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MGY4ZmYwMDA7XFxuIFxcdFxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdFxcdGlmIChyc3NpX2xldmVsID09IDEpIHtcXG4tXFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwZjhmMDAwMDtcXG4tXFx0XFx0XFx0XFx0fSBlbHNlIGlmIChyc3NpX2xldmVsID09IDMpIHtcXG4tXFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwZjhmYzAwMDtcXG4tXFx0XFx0XFx0XFx0fSBlbHNlIGlmIChyc3NpX2xldmVsID09IDUpIHtcXG4tXFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwZjhmZjAwMDtcXG4tXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0XFx0XFx0aWYgKGN1cnR4YndfNDBtaHopXFxuLVxcdFxcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MGY4ZmYwMTU7XFxuLVxcdFxcdFxcdFxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwZjhmZjAwNTtcXG4tXFx0XFx0XFx0XFx0fVxcbitcXHRcXHRcXHRcXHRpZiAoY3VydHhid180MG1oeilcXG4rXFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwZjhmZjAxNTtcXG4rXFx0XFx0XFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDBmOGZmMDA1O1xcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4NzIzYWUvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4NzIzYWUvaHcuY1xcbmluZGV4IGJkNDVkOWJkNDBiYjcuLjJlNTBmNWMyNGRmODEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDg3MjNhZS9ody5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDg3MjNhZS9ody5jXFxuQEAgLTE5MjQsNyArMTkyNCw2IEBAIHN0YXRpYyB2b2lkIHJ0bDg3MjNlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXHRib29sIHNob3J0Z2kgPSBmYWxzZTtcXG4gXFx0dTggcmF0ZV9tYXNrWzVdO1xcbiBcXHR1OCBtYWNpZCA9IDA7XFxuLVxcdC8qdTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsqL1xcbiBcXG4gXFx0c3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKilzdGEtXFx1MDAzZWRydl9wcml2O1xcbiBcXHR3aXJlbGVzc21vZGUgPSBzdGFfZW50cnktXFx1MDAzZXdpcmVsZXNzX21vZGU7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4ODIxYWUvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4ODIxYWUvaHcuY1xcbmluZGV4IDFiYTUzZTY3MTIwN2UuLjMxZjQ5OWJlOTlhMzggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDg4MjFhZS9ody5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDg4MjFhZS9ody5jXFxuQEAgLTM0NjgsNyArMzQ2OCw2IEBAIHN0YXRpYyB2b2lkIHJ0bDg4MjFhZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0Ym9vbCBiX3Nob3J0Z2kgPSBmYWxzZTtcXG4gXFx0dTggcmF0ZV9tYXNrWzddO1xcbiBcXHR1OCBtYWNpZCA9IDA7XFxuLVxcdHU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7XFxuIFxcdHU4IHJmX3R5cGU7XFxuIFxcbiBcXHRzdGFfZW50cnkgPSAoc3RydWN0IHJ0bF9zdGFfaW5mbyAqKXN0YS1cXHUwMDNlZHJ2X3ByaXY7XFxuQEAgLTM1MzUsNDcgKzM1MzQsMzcgQEAgc3RhdGljIHZvaWQgcnRsODgyMWFlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdHJhdHJfaW5kZXggPSBSQVRSX0lOWF9XSVJFTEVTU19ORztcXG4gXFxuLVxcdFxcdGlmIChtaW1vX3BzID09IElFRUU4MDIxMV9TTVBTX1NUQVRJQ1xcbi1cXHRcXHRcXHR8fCBtaW1vX3BzID09IElFRUU4MDIxMV9TTVBTX0RZTkFNSUMpIHtcXG4tXFx0XFx0XFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcXG4tXFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwMDBmMDAwMDtcXG4tXFx0XFx0XFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxcbi1cXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDAwMGZmMDAwO1xcbi1cXHRcXHRcXHRlbHNlXFxuLVxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwZmYwMDU7XFxuK1xcdFxcdGlmIChyZl90eXBlID09IFJGXzFUMVIpIHtcXG4rXFx0XFx0XFx0aWYgKGN1cnR4YndfNDBtaHopIHtcXG4rXFx0XFx0XFx0XFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcXG4rXFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwMDBmMDAwMDtcXG4rXFx0XFx0XFx0XFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxcbitcXHRcXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDAwMGZmMDAwO1xcbitcXHRcXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwZmYwMTU7XFxuK1xcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdGlmIChyc3NpX2xldmVsID09IDEpXFxuK1xcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwZjAwMDA7XFxuK1xcdFxcdFxcdFxcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcXG4rXFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwMDBmZjAwMDtcXG4rXFx0XFx0XFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDAwMGZmMDA1O1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdGlmIChyZl90eXBlID09IFJGXzFUMVIpIHtcXG4tXFx0XFx0XFx0XFx0aWYgKGN1cnR4YndfNDBtaHopIHtcXG4tXFx0XFx0XFx0XFx0XFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcXG4tXFx0XFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwMDBmMDAwMDtcXG4tXFx0XFx0XFx0XFx0XFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxcbi1cXHRcXHRcXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDAwMGZmMDAwO1xcbi1cXHRcXHRcXHRcXHRcXHRlbHNlXFxuLVxcdFxcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwZmYwMTU7XFxuLVxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdFxcdFxcdGlmIChyc3NpX2xldmVsID09IDEpXFxuLVxcdFxcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwZjAwMDA7XFxuLVxcdFxcdFxcdFxcdFxcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcXG4tXFx0XFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwMDBmZjAwMDtcXG4tXFx0XFx0XFx0XFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDAwMGZmMDA1O1xcbi1cXHRcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdGlmIChjdXJ0eGJ3XzQwbWh6KSB7XFxuK1xcdFxcdFxcdFxcdGlmIChyc3NpX2xldmVsID09IDEpXFxuK1xcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MGZmZjAwMDA7XFxuK1xcdFxcdFxcdFxcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcXG4rXFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwZmZmZjAwMDtcXG4rXFx0XFx0XFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDBmZmZmMDE1O1xcbiBcXHRcXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRcXHRpZiAoY3VydHhid180MG1oeikge1xcbi1cXHRcXHRcXHRcXHRcXHRpZiAocnNzaV9sZXZlbCA9PSAxKVxcbi1cXHRcXHRcXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDBmZmYwMDAwO1xcbi1cXHRcXHRcXHRcXHRcXHRlbHNlIGlmIChyc3NpX2xldmVsID09IDIpXFxuLVxcdFxcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MGZmZmYwMDA7XFxuLVxcdFxcdFxcdFxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwZmZmZjAxNTtcXG4tXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0XFx0XFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcXG4tXFx0XFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwZmZmMDAwMDtcXG4tXFx0XFx0XFx0XFx0XFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxcbi1cXHRcXHRcXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDBmZmZmMDAwO1xcbi1cXHRcXHRcXHRcXHRcXHRlbHNlXFxuLVxcdFxcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MGZmZmYwMDU7XFxuLVxcdFxcdFxcdFxcdH1cXG4rXFx0XFx0XFx0XFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcXG4rXFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwZmZmMDAwMDtcXG4rXFx0XFx0XFx0XFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxcbitcXHRcXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDBmZmZmMDAwO1xcbitcXHRcXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MGZmZmYwMDU7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbiBcXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTc6Mjg6MjkuMjAyMzIyNDg0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjYyMTIyNzA1NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgYSBsb2NhbCB2YXJpYWJsZSBgbWltb19wc2AgdGhhdCB3YXMgaGFyZGNvZGVkIHRvIGBJRUVFODAyMTFfU01QU19PRkZgIGFuZCB0aGUgY29ycmVzcG9uZGluZyBkZWFkIGNvZGUgYmxvY2tzIHRoYXQgY2hlY2tlZCBpZiBpdCB3YXMgYElFRUU4MDIxMV9TTVBTX1NUQVRJQ2Agb3IgYElFRUU4MDIxMV9TTVBTX0RZTkFNSUNgLiBUaGlzIGlzIHB1cmVseSBkZWFkIGNvZGUgcmVtb3ZhbCBhbmQgZG9lcyBub3QgYWx0ZXIgdGhlIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4YWRlODhjMmFlYWQ1NDIyMGYyODU4NGFjOTdhOWE2NjRkZjAwMTZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTc6Mjg6MjcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE4OGVlL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE4OGVlL2h3LmNcbmluZGV4IDUzYzMyZTFkZTdlNDcuLjkxMGY4MzcyZDgzZDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE4OGVlL2h3LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTg4ZWUvaHcuY1xuQEAgLTE5NzAsNyArMTk3MCw2IEBAIHN0YXRpYyB2b2lkIHJ0bDg4ZWVfdXBkYXRlX2hhbF9yYXRlX3RhYmxlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0dTMyIHJhdHJfdmFsdWU7XG4gXHR1OCByYXRyX2luZGV4ID0gMDtcbiBcdHU4IGJfbm1vZGUgPSBtYWMtXHUwMDNlaHRfZW5hYmxlO1xuLVx0Lyp1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGOyovXG4gXHR1MTYgc2hvcnRnaV9yYXRlO1xuIFx0dTMyIHRtcF9yYXRyX3ZhbHVlO1xuIFx0dTggY3VydHhid180MG1oeiA9IG1hYy1cdTAwM2Vid180MDtcbkBAIC0yMDcwLDcgKzIwNjksNiBAQCBzdGF0aWMgdm9pZCBydGw4OGVlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0Ym9vbCBiX3Nob3J0Z2kgPSBmYWxzZTtcbiBcdHU4IHJhdGVfbWFza1s1XTtcbiBcdHU4IG1hY2lkID0gMDtcbi1cdC8qdTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsqL1xuIFxuIFx0c3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKilzdGEtXHUwMDNlZHJ2X3ByaXY7XG4gXHR3aXJlbGVzc21vZGUgPSBzdGFfZW50cnktXHUwMDNld2lyZWxlc3NfbW9kZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmVlL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmVlL2h3LmNcbmluZGV4IDQ4YTNjOTQ2MDZiZWYuLjAwMDQ4OTEyOTAwYzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmVlL2h3LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyZWUvaHcuY1xuQEAgLTIyNjYsNyArMjI2Niw2IEBAIHN0YXRpYyB2b2lkIHJ0bDkyZWVfdXBkYXRlX2hhbF9yYXRlX21hc2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRib29sIGJfc2hvcnRnaSA9IGZhbHNlO1xuIFx0dTggcmF0ZV9tYXNrWzddID0gezB9O1xuIFx0dTggbWFjaWQgPSAwO1xuLVx0Lyp1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGOyovXG4gXHRzdGFfZW50cnkgPSAoc3RydWN0IHJ0bF9zdGFfaW5mbyAqKXN0YS1cdTAwM2VkcnZfcHJpdjtcbiBcdHdpcmVsZXNzbW9kZSA9IHN0YV9lbnRyeS1cdTAwM2V3aXJlbGVzc19tb2RlO1xuIFx0aWYgKG1hYy1cdTAwM2VvcG1vZGUgPT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTiB8fFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyc2UvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyc2UvaHcuY1xuaW5kZXggZTU3NzViOTRmMDRlZS4uNmI5ZjI0N2QxMWUwYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyc2UvaHcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJzZS9ody5jXG5AQCAtMjAwMSwxMCArMjAwMSw5IEBAIHN0YXRpYyB2b2lkIHJ0bDkyc2VfdXBkYXRlX2hhbF9yYXRlX3RhYmxlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0c3RydWN0IHJ0bF9waHkgKnJ0bHBoeSA9IFx1MDAyNihydGxwcml2LVx1MDAzZXBoeSk7XG4gXHRzdHJ1Y3QgcnRsX21hYyAqbWFjID0gcnRsX21hYyhydGxfcHJpdihodykpO1xuIFx0c3RydWN0IHJ0bF9oYWwgKnJ0bGhhbCA9IHJ0bF9oYWwocnRsX3ByaXYoaHcpKTtcbi1cdHUzMiByYXRyX3ZhbHVlO1xuK1x0dTMyIHJhdHJfdmFsdWUsIHJhdHJfbWFzaztcbiBcdHU4IHJhdHJfaW5kZXggPSAwO1xuIFx0dTggbm1vZGUgPSBtYWMtXHUwMDNlaHRfZW5hYmxlO1xuLVx0dTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjtcbiBcdHUxNiBzaG9ydGdpX3JhdGUgPSAwO1xuIFx0dTMyIHRtcF9yYXRyX3ZhbHVlID0gMDtcbiBcdHU4IGN1cnR4YndfNDBtaHogPSBtYWMtXHUwMDNlYndfNDA7XG5AQCAtMjAzMiwyNiArMjAzMSwyMSBAQCBzdGF0aWMgdm9pZCBydGw5MnNlX3VwZGF0ZV9oYWxfcmF0ZV90YWJsZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdGNhc2UgV0lSRUxFU1NfTU9ERV9OXzI0RzpcbiBcdGNhc2UgV0lSRUxFU1NfTU9ERV9OXzVHOlxuIFx0XHRubW9kZSA9IDE7XG4tXHRcdGlmIChtaW1vX3BzID09IElFRUU4MDIxMV9TTVBTX1NUQVRJQykge1xuLVx0XHRcdHJhdHJfdmFsdWUgXHUwMDI2PSAweDAwMDdGMDA1O1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdHUzMiByYXRyX21hc2s7XG4tXG4tXHRcdFx0aWYgKGdldF9yZl90eXBlKHJ0bHBoeSkgPT0gUkZfMVQyUiB8fFxuLVx0XHRcdCAgICBnZXRfcmZfdHlwZShydGxwaHkpID09IFJGXzFUMVIpIHtcbi1cdFx0XHRcdGlmIChjdXJ0eGJ3XzQwbWh6KVxuLVx0XHRcdFx0XHRyYXRyX21hc2sgPSAweDAwMGZmMDE1O1xuLVx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRyYXRyX21hc2sgPSAweDAwMGZmMDA1O1xuLVx0XHRcdH0gZWxzZSB7XG4tXHRcdFx0XHRpZiAoY3VydHhid180MG1oeilcbi1cdFx0XHRcdFx0cmF0cl9tYXNrID0gMHgwZjBmZjAxNTtcbi1cdFx0XHRcdGVsc2Vcbi1cdFx0XHRcdFx0cmF0cl9tYXNrID0gMHgwZjBmZjAwNTtcbi1cdFx0XHR9XG4gXG4tXHRcdFx0cmF0cl92YWx1ZSBcdTAwMjY9IHJhdHJfbWFzaztcbitcdFx0aWYgKGdldF9yZl90eXBlKHJ0bHBoeSkgPT0gUkZfMVQyUiB8fFxuK1x0XHQgICAgZ2V0X3JmX3R5cGUocnRscGh5KSA9PSBSRl8xVDFSKSB7XG4rXHRcdFx0aWYgKGN1cnR4YndfNDBtaHopXG4rXHRcdFx0XHRyYXRyX21hc2sgPSAweDAwMGZmMDE1O1xuK1x0XHRcdGVsc2VcbitcdFx0XHRcdHJhdHJfbWFzayA9IDB4MDAwZmYwMDU7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0aWYgKGN1cnR4YndfNDBtaHopXG4rXHRcdFx0XHRyYXRyX21hc2sgPSAweDBmMGZmMDE1O1xuK1x0XHRcdGVsc2VcbitcdFx0XHRcdHJhdHJfbWFzayA9IDB4MGYwZmYwMDU7XG4gXHRcdH1cbitcbitcdFx0cmF0cl92YWx1ZSBcdTAwMjY9IHJhdHJfbWFzaztcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHRpZiAocnRscGh5LVx1MDAzZXJmX3R5cGUgPT0gUkZfMVQyUilcbkBAIC0yMTE5LDcgKzIxMTMsNiBAQCBzdGF0aWMgdm9pZCBydGw5MnNlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0dTMyIGJhbmQgPSAwO1xuIFx0Ym9vbCBibXVsdGljYXN0ID0gZmFsc2U7XG4gXHR1OCBtYWNpZCA9IDA7XG4tXHR1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGO1xuIFxuIFx0c3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKikgc3RhLVx1MDAzZWRydl9wcml2O1xuIFx0d2lyZWxlc3Ntb2RlID0gc3RhX2VudHJ5LVx1MDAzZXdpcmVsZXNzX21vZGU7XG5AQCAtMjE2Nyw0MSArMjE2MCwzMiBAQCBzdGF0aWMgdm9pZCBydGw5MnNlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRiYW5kIHw9IChXSVJFTEVTU18xMU4gfCBXSVJFTEVTU18xMUcgfCBXSVJFTEVTU18xMUIpO1xuIFx0XHRyYXRyX2luZGV4ID0gUkFUUl9JTlhfV0lSRUxFU1NfTkdCO1xuIFxuLVx0XHRpZiAobWltb19wcyA9PSBJRUVFODAyMTFfU01QU19TVEFUSUMpIHtcbi1cdFx0XHRpZiAocnNzaV9sZXZlbCA9PSAxKVxuLVx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMDcwMDAwO1xuLVx0XHRcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcbi1cdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDA3ZjAwMDtcbi1cdFx0XHRlbHNlXG4tXHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwN2YwMDU7XG4rXHRcdGlmIChydGxwaHktXHUwMDNlcmZfdHlwZSA9PSBSRl8xVDJSIHx8XG4rXHRcdCAgICBydGxwaHktXHUwMDNlcmZfdHlwZSA9PSBSRl8xVDFSKSB7XG4rXHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSkge1xuK1x0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGYwMDAwO1xuK1x0XHRcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAzKSB7XG4rXHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZmMwMDA7XG4rXHRcdFx0fSBlbHNlIGlmIChyc3NpX2xldmVsID09IDUpIHtcbitcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAwMDtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopXG4rXHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAxNTtcbitcdFx0XHRcdGVsc2VcbitcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDA1O1xuK1x0XHRcdH1cbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRpZiAocnRscGh5LVx1MDAzZXJmX3R5cGUgPT0gUkZfMVQyUiB8fFxuLVx0XHRcdFx0cnRscGh5LVx1MDAzZXJmX3R5cGUgPT0gUkZfMVQxUikge1xuLVx0XHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSkge1xuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmMDAwMDtcbi1cdFx0XHRcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAzKSB7XG4tXHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmYzAwMDtcbi1cdFx0XHRcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSA1KSB7XG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDAwO1xuLVx0XHRcdFx0fSBlbHNlIHtcbi1cdFx0XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDE1O1xuLVx0XHRcdFx0XHRlbHNlXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDA1O1xuLVx0XHRcdFx0fVxuK1x0XHRcdGlmIChyc3NpX2xldmVsID09IDEpIHtcbitcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZjhmMDAwMDtcbitcdFx0XHR9IGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMykge1xuK1x0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZjMDAwO1xuK1x0XHRcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSA1KSB7XG4rXHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGY4ZmYwMDA7XG4gXHRcdFx0fSBlbHNlIHtcbi1cdFx0XHRcdGlmIChyc3NpX2xldmVsID09IDEpIHtcbi1cdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGYwMDAwO1xuLVx0XHRcdFx0fSBlbHNlIGlmIChyc3NpX2xldmVsID09IDMpIHtcbi1cdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZjMDAwO1xuLVx0XHRcdFx0fSBlbHNlIGlmIChyc3NpX2xldmVsID09IDUpIHtcbi1cdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZmMDAwO1xuLVx0XHRcdFx0fSBlbHNlIHtcbi1cdFx0XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZmMDE1O1xuLVx0XHRcdFx0XHRlbHNlXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZmMDA1O1xuLVx0XHRcdFx0fVxuK1x0XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopXG4rXHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZjhmZjAxNTtcbitcdFx0XHRcdGVsc2VcbitcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZmMDA1O1xuIFx0XHRcdH1cbiBcdFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4NzIzYWUvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4NzIzYWUvaHcuY1xuaW5kZXggYmQ0NWQ5YmQ0MGJiNy4uMmU1MGY1YzI0ZGY4MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4NzIzYWUvaHcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDg3MjNhZS9ody5jXG5AQCAtMTkyNCw3ICsxOTI0LDYgQEAgc3RhdGljIHZvaWQgcnRsODcyM2VfdXBkYXRlX2hhbF9yYXRlX21hc2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRib29sIHNob3J0Z2kgPSBmYWxzZTtcbiBcdHU4IHJhdGVfbWFza1s1XTtcbiBcdHU4IG1hY2lkID0gMDtcbi1cdC8qdTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsqL1xuIFxuIFx0c3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKilzdGEtXHUwMDNlZHJ2X3ByaXY7XG4gXHR3aXJlbGVzc21vZGUgPSBzdGFfZW50cnktXHUwMDNld2lyZWxlc3NfbW9kZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODgyMWFlL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODgyMWFlL2h3LmNcbmluZGV4IDFiYTUzZTY3MTIwN2UuLjMxZjQ5OWJlOTlhMzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODgyMWFlL2h3LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4ODIxYWUvaHcuY1xuQEAgLTM0NjgsNyArMzQ2OCw2IEBAIHN0YXRpYyB2b2lkIHJ0bDg4MjFhZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdGJvb2wgYl9zaG9ydGdpID0gZmFsc2U7XG4gXHR1OCByYXRlX21hc2tbN107XG4gXHR1OCBtYWNpZCA9IDA7XG4tXHR1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGO1xuIFx0dTggcmZfdHlwZTtcbiBcbiBcdHN0YV9lbnRyeSA9IChzdHJ1Y3QgcnRsX3N0YV9pbmZvICopc3RhLVx1MDAzZWRydl9wcml2O1xuQEAgLTM1MzUsNDcgKzM1MzQsMzcgQEAgc3RhdGljIHZvaWQgcnRsODgyMWFlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRlbHNlXG4gXHRcdFx0cmF0cl9pbmRleCA9IFJBVFJfSU5YX1dJUkVMRVNTX05HO1xuIFxuLVx0XHRpZiAobWltb19wcyA9PSBJRUVFODAyMTFfU01QU19TVEFUSUNcbi1cdFx0XHR8fCBtaW1vX3BzID09IElFRUU4MDIxMV9TTVBTX0RZTkFNSUMpIHtcbi1cdFx0XHRpZiAocnNzaV9sZXZlbCA9PSAxKVxuLVx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGYwMDAwO1xuLVx0XHRcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcbi1cdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAwMDtcbi1cdFx0XHRlbHNlXG4tXHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZmYwMDU7XG4rXHRcdGlmIChyZl90eXBlID09IFJGXzFUMVIpIHtcbitcdFx0XHRpZiAoY3VydHhid180MG1oeikge1xuK1x0XHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcbitcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGYwMDAwO1xuK1x0XHRcdFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxuK1x0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZmYwMDA7XG4rXHRcdFx0XHRlbHNlXG4rXHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAxNTtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcbitcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGYwMDAwO1xuK1x0XHRcdFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxuK1x0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZmYwMDA7XG4rXHRcdFx0XHRlbHNlXG4rXHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAwNTtcbitcdFx0XHR9XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0aWYgKHJmX3R5cGUgPT0gUkZfMVQxUikge1xuLVx0XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopIHtcbi1cdFx0XHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcbi1cdFx0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZjAwMDA7XG4tXHRcdFx0XHRcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcbi1cdFx0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZmYwMDA7XG4tXHRcdFx0XHRcdGVsc2Vcbi1cdFx0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZmYwMTU7XG4tXHRcdFx0XHR9IGVsc2Uge1xuLVx0XHRcdFx0XHRpZiAocnNzaV9sZXZlbCA9PSAxKVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmMDAwMDtcbi1cdFx0XHRcdFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAwMDtcbi1cdFx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAwNTtcbi1cdFx0XHRcdH1cbitcdFx0XHRpZiAoY3VydHhid180MG1oeikge1xuK1x0XHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcbitcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmZmYwMDAwO1xuK1x0XHRcdFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxuK1x0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGZmZmYwMDA7XG4rXHRcdFx0XHRlbHNlXG4rXHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZmZmZjAxNTtcbiBcdFx0XHR9IGVsc2Uge1xuLVx0XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopIHtcbi1cdFx0XHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcbi1cdFx0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGZmZjAwMDA7XG4tXHRcdFx0XHRcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcbi1cdFx0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGZmZmYwMDA7XG4tXHRcdFx0XHRcdGVsc2Vcbi1cdFx0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGZmZmYwMTU7XG4tXHRcdFx0XHR9IGVsc2Uge1xuLVx0XHRcdFx0XHRpZiAocnNzaV9sZXZlbCA9PSAxKVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZmZmMDAwMDtcbi1cdFx0XHRcdFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZmZmZjAwMDtcbi1cdFx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZmZmZjAwNTtcbi1cdFx0XHRcdH1cbitcdFx0XHRcdGlmIChyc3NpX2xldmVsID09IDEpXG4rXHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZmZmMDAwMDtcbitcdFx0XHRcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcbitcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmZmZmMDAwO1xuK1x0XHRcdFx0ZWxzZVxuK1x0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGZmZmYwMDU7XG4gXHRcdFx0fVxuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTc6Mjg6MjkuMjAyMzIzOTE0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA3MDczMjA4OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEZWFkIENvZGUgUmVtb3ZhbCBpbiB0aGUgcnRsd2lmaSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQncyBjbGVhbmluZyB1cCB0aGUgYHJ0bHdpZmlgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBSZWFsdGVrIHdpcmVsZXNzIGNhcmRzIOKAkyB0aGUgdXN1YWwgc3VzcGVjdHM6IHJ0bDgxODhlZSwgcnRsODE5MmVlLCBydGw4MTkyc2UsIHJ0bDg3MjNhZSwgYW5kIHJ0bDg4MjFhZS4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSByZW1vdmluZyB0aGUgYG1pbW9fcHNgIHZhcmlhYmxlIGFuZCBpdHMgYXNzb2NpYXRlZCBjb25kaXRpb25hbCBibG9ja3MuIEluaXRpYWxseSwgaXQgbG9va2VkIGxpa2UgdGhleSBqdXN0IHJlbW92ZWQgdGhlIHZhcmlhYmxlIGRlZmluaXRpb24sIGJ1dCBpdCdzIG1vcmUgc3BlY2lmaWMsIHRoZXkncmUgdGFraW5nIG91dCBwYXJ0cyB3aGVyZSBgbWltb19wc2AgaXMgY29tcGFyZWQgdG8gYElFRUU4MDIxMV9TTVBTX1NUQVRJQ2AuXG5cbk15IGluaXRpYWwgdGhvdWdodCB3YXMsIFwiSXMgdGhpcyB0cnVseSBkZWFkIGNvZGU/XCIgU2luY2UgYG1pbW9fcHNgIHdhcyBoYXJkY29kZWQgdG8gYElFRUU4MDIxMV9TTVBTX09GRmAsIHdoaWNoIGlzIGVmZmVjdGl2ZWx5IHplcm8sIGFuZCBjb21wYXJpbmcgdG8gYElFRUU4MDIxMV9TTVBTX1NUQVRJQ2AgKHdoaWNoIGlzIG9uZSkuXG5cbkkgd2VudCBpbiB0byBpbnZlc3RpZ2F0ZS4gTGV0J3Mgc2VlLi4uIGluIGBydGw4MTkyc2UvaHcuY2AsIGZvciBleGFtcGxlLCB0aGVyZSdzIGEgc25pcHBldDpcbmBgYGNcbi1cdHU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7XG4uLi5cbi1cdFx0aWYgKG1pbW9fcHMgPT0gSUVFRTgwMjExX1NNUFNfU1RBVElDKSB7XG4tXHRcdFx0cmF0cl92YWx1ZSBcdTAwMjY9IDB4MDAwN0YwMDU7XG4tXHRcdH0gZWxzZSB7XG4uLi5cbmBgYFxuQWgsIHJpZ2h0LiBTaW5jZSBgbWltb19wc2AgaXMgaW5pdGlhbGl6ZWQgdG8gYElFRUU4MDIxMV9TTVBTX09GRmAgKDApLCB0aGUgYGlmYCBjb25kaXRpb24gd291bGQgKmFsd2F5cyogYmUgZmFsc2UuIFRoZSBwYXRjaCBpcyBzZW5zaWJseSByZW1vdmluZyB0aGUgYGlmYCBhbmQga2VlcGluZyB0aGUgYGVsc2VgIGJsb2NrLiBTYW1lIHBhdHRlcm4gZm9yIGBydGw5MnNlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrYCBhbmQgYHJ0bDg4MjFhZV91cGRhdGVfaGFsX3JhdGVfbWFza2AuIFRoaXMgY29uZmlybXMgdGhlIHJlbW92YWwgaXMgZGVhZCBjb2RlLCBhcyB0aGUgY29uZGl0aW9uIHdhcyBuZXZlciB0cnVlLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBkb3VibGUgY2hlY2sgaG93IGBtaW1vX3BzYCBpcyB1c2VkLiBJcyBpdCBtb2RpZmllZCBhbnl3aGVyZSBiZXR3ZWVuIGl0cyBpbml0aWFsaXphdGlvbiBhbmQgdGhlIGNvbmRpdGlvbmFsIGNoZWNrPyBFeGFtaW5pbmcgdGhlIHJlbGV2YW50IGNvZGUgaW4gYHJ0bDgxOTJzZS9ody5jYCwgYG1pbW9fcHNgIGlzIGRlZmluZWQgbG9jYWxseSBhbmQgcmVtYWlucyB1bmNoYW5nZWQgYmVmb3JlIGl0cyB1c2UgaW4gdGhlIGNvbmRpdGlvbmFsLiBTbyBpdOKAmXMgKnB1cmVseSogZGVhZCBjb2RlIHJlbW92YWwuIE5vIGZ1bmN0aW9uYWwgaW1wYWN0IHdoYXRzb2V2ZXIuXG5cblRoZXJlZm9yZSwgdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHNhZmUgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJIGFtIGdvaW5nIHRvIHF1aWNrbHkgdmVyaWZ5IHRoaXMgdXNpbmcgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIGJ5IGludmVzdGlnYXRpbmcgdGhlIGNvZGUgb2YgYHJ0bDkyc2VfdXBkYXRlX2hhbF9yYXRlX3RhYmxlYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJzZS9ody5jYCBiZWZvcmUgdGhlIHBhdGNoLCBidXQgdGhhdCBpcyBtZXJlbHkgYW4gYWRkaXRpb25hbCBkb3VibGUtY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMzQsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NTksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNzoyODozOS45MDk2NDk0MjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1NDQ2NTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJjdS9ody5jPTE4MDU9c3RhdGljIHZvaWQgcnRsOTJjdV91cGRhdGVfaGFsX3JhdGVfdGFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmN1L2h3LmMtMTgxNC1cXHR1OCBubW9kZSA9IG1hYy1cXHUwMDNlaHRfZW5hYmxlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyY3UvaHcuYzoxODE1OlxcdHU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJjdS9ody5jLTE4MTYtXFx0dTE2IHNob3J0Z2lfcmF0ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyY3UvaHcuYz0xODkzPXN0YXRpYyB2b2lkIHJ0bDkyY3VfdXBkYXRlX2hhbF9yYXRlX21hc2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmN1L2h3LmMtMTkxMy1cXHR1OCBtYWNpZCA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJjdS9ody5jOjE5MTQ6XFx0dTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmN1L2h3LmMtMTkxNS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTc6Mjg6NDAuMTk1MTAyMDE0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTUyMTk0NjU4MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBJbXBhY3QqKlxuXG5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhpcyBwYXRjaCBtYWRlIHNvbWUgY2hhbmdlcyB0byBzZXZlcmFsIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyczogcnRsODE5MnNlLCBydGw4ODIxYWUsIHJ0bDgxODhlZSwgcnRsODE5MmVlLCBhbmQgcnRsODcyM2FlLiBUaGUgZGlmZiByZWFsbHkgaGlnaGxpZ2h0cyB0aGUgaXNzdWUuIEl0IGxvb2tzIGxpa2UgdGhleSB3ZXJlIGRlYWxpbmcgd2l0aCBhIGxvY2FsIHZhcmlhYmxlLiBUaGlzIHZhcmlhYmxlLCBsZXQncyBjYWxsIGl0IGBzbXBzX3N0YXRlYCwgd2FzIGluaXRpYWxpemVkIHRvIGBJRUVFODAyMTFfU01QU19PRkZgLiBUaGVuLCB0aGUgY29kZSB3YXMgY2hlY2tpbmcgdGhpcyB2YXJpYWJsZSBhZ2FpbnN0IGBJRUVFODAyMTFfU01QU19TVEFUSUNgIG9yIGBJRUVFODAyMTFfU01QU19EWU5BTUlDYC5cblxuTm93LCBoZXJlJ3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gSSBrbm93IGZyb20gbXkgZXhwZXJpZW5jZSwgYW5kIGEgcXVpY2sgbG9vayBhdCB0aGUgcmVsZXZhbnQgaGVhZGVycyAobGlrZWx5IGBpbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oYCBvciBzb21ldGhpbmcgc2ltaWxhciksIHRoYXQgYElFRUU4MDIxMV9TTVBTX09GRmAgaXMgZGVmaW5lZCBhcyAwLiBgSUVFRTgwMjExX1NNUFNfU1RBVElDYCBpcyAxLCBhbmQgYElFRUU4MDIxMV9TTVBTX0RZTkFNSUNgIGlzIDIuIFRoZXJlZm9yZSwgc2luY2UgdGhlIHZhcmlhYmxlIHN0YXJ0ZWQgYXMgMCBhbmQgdGhlbiB3YXMgY29tcGFyZWQgdG8gMSBvciAyLCB0aGUgY29uZGl0aW9uIGluIHRoZSBjb2RlIHdhcyAqYWx3YXlzKiBnb2luZyB0byBldmFsdWF0ZSBhcyBmYWxzZS4gSXQgZG9lc24ndCBtYXR0ZXIgd2hhdCB0aGUgdW5kZXJseWluZyBsb2dpYyB3YXMgKnN1cHBvc2VkKiB0byBkbywgdGhlIGV4aXN0aW5nIGNvZGUgd291bGQgbmV2ZXIgZXhlY3V0ZSB0aGF0IGJyYW5jaC5cblxuU28sIHJlYWxpc3RpY2FsbHksIHRoaXMgcGF0Y2ggaGFzIG5vIGZ1bmN0aW9uYWwgaW1wYWN0LiBJdCdzIGEgaGFybWxlc3MgY2hhbmdlLCBidXQgaXQncyBub3QgYWN0dWFsbHkgY2hhbmdpbmcgYW55dGhpbmcuIEknbSBnb2luZyB0byBtYXJrIHRoaXMgYXMgbm90IHdvcnRoIGZ1enppbmcsIHNvIEknbGwgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBObyBwb2ludCBpbiBzcGVuZGluZyB0aW1lIG9uIHNvbWV0aGluZyB0aGF0J3MgYSBkZWFkIGVuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzk1MywiT3V0cHV0VG9rZW5zIjoxMTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTc6Mjg6NTUuNDE0NTcwNjM2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDc1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZW1vdmVzIGEgbG9jYWwgdmFyaWFibGUgYG1pbW9fcHNgIHRoYXQgd2FzIGhhcmRjb2RlZCB0byBgSUVFRTgwMjExX1NNUFNfT0ZGYCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZGVhZCBjb2RlIGJsb2NrcyB0aGF0IGNoZWNrZWQgaWYgaXQgd2FzIGBJRUVFODAyMTFfU01QU19TVEFUSUNgIG9yIGBJRUVFODAyMTFfU01QU19EWU5BTUlDYC4gVGhpcyBpcyBwdXJlbHkgZGVhZCBjb2RlIHJlbW92YWwgYW5kIGRvZXMgbm90IGFsdGVyIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhIGxvY2FsIHZhcmlhYmxlIGBtaW1vX3BzYCB0aGF0IHdhcyBoYXJkY29kZWQgdG8gYElFRUU4MDIxMV9TTVBTX09GRmAgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGRlYWQgY29kZSBibG9ja3MgdGhhdCBjaGVja2VkIGlmIGl0IHdhcyBgSUVFRTgwMjExX1NNUFNfU1RBVElDYCBvciBgSUVFRTgwMjExX1NNUFNfRFlOQU1JQ2AuIFRoaXMgaXMgcHVyZWx5IGRlYWQgY29kZSByZW1vdmFsIGFuZCBkb2VzIG5vdCBhbHRlciB0aGUgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE3OjI4OjU1LjQxNDU5NDcxNloiLCJTZXEiOjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowlvs5p[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-14 17:13:51 +0000 UTC FinishedAt: 2026-08-14 17:28:57 +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+CgkJCTx0ZD4yMDI2LzA4LzE0IDE3OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhIGxvY2FsIHZhcmlhYmxlIGBtaW1vX3BzYCB0aGF0IHdhcyBoYXJkY29kZWQgdG8gYElFRUU4MDIxMV9TTVBTX09GRmAgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGRlYWQgY29kZSBibG9ja3MgdGhhdCBjaGVja2VkIGlmIGl0IHdhcyBgSUVFRTgwMjExX1NNUFNfU1RBVElDYCBvciBgSUVFRTgwMjExX1NNUFNfRFlOQU1JQ2AuIFRoaXMgaXMgcHVyZWx5IGRlYWQgY29kZSByZW1vdmFsIGFuZCBkb2VzIG5vdCBhbHRlciB0aGUgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTc6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4YWRlODhjMmFlYWQ1NDIyMGYyODU4NGFjOTdhOWE2NjRkZjAwMTZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTc6Mjg6MjcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxODhlZS9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxODhlZS9ody5jXG5pbmRleCA1M2MzMmUxZGU3ZTQ3Li45MTBmODM3MmQ4M2QxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxODhlZS9ody5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE4OGVlL2h3LmNcbkBAIC0xOTcwLDcgJiM0MzsxOTcwLDYgQEAgc3RhdGljIHZvaWQgcnRsODhlZV91cGRhdGVfaGFsX3JhdGVfdGFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHR1MzIgcmF0cl92YWx1ZTtcbiBcdHU4IHJhdHJfaW5kZXggPSAwO1xuIFx0dTggYl9ubW9kZSA9IG1hYy1cdTAwM2VodF9lbmFibGU7XG4tXHQvKnU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7Ki9cbiBcdHUxNiBzaG9ydGdpX3JhdGU7XG4gXHR1MzIgdG1wX3JhdHJfdmFsdWU7XG4gXHR1OCBjdXJ0eGJ3XzQwbWh6ID0gbWFjLVx1MDAzZWJ3XzQwO1xuQEAgLTIwNzAsNyAmIzQzOzIwNjksNiBAQCBzdGF0aWMgdm9pZCBydGw4OGVlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0Ym9vbCBiX3Nob3J0Z2kgPSBmYWxzZTtcbiBcdHU4IHJhdGVfbWFza1s1XTtcbiBcdHU4IG1hY2lkID0gMDtcbi1cdC8qdTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsqL1xuIFxuIFx0c3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKilzdGEtXHUwMDNlZHJ2X3ByaXY7XG4gXHR3aXJlbGVzc21vZGUgPSBzdGFfZW50cnktXHUwMDNld2lyZWxlc3NfbW9kZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmVlL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmVlL2h3LmNcbmluZGV4IDQ4YTNjOTQ2MDZiZWYuLjAwMDQ4OTEyOTAwYzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmVlL2h3LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyZWUvaHcuY1xuQEAgLTIyNjYsNyAmIzQzOzIyNjYsNiBAQCBzdGF0aWMgdm9pZCBydGw5MmVlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0Ym9vbCBiX3Nob3J0Z2kgPSBmYWxzZTtcbiBcdHU4IHJhdGVfbWFza1s3XSA9IHswfTtcbiBcdHU4IG1hY2lkID0gMDtcbi1cdC8qdTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsqL1xuIFx0c3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKilzdGEtXHUwMDNlZHJ2X3ByaXY7XG4gXHR3aXJlbGVzc21vZGUgPSBzdGFfZW50cnktXHUwMDNld2lyZWxlc3NfbW9kZTtcbiBcdGlmIChtYWMtXHUwMDNlb3Btb2RlID09IE5MODAyMTFfSUZUWVBFX1NUQVRJT04gfHxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MnNlL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MnNlL2h3LmNcbmluZGV4IGU1Nzc1Yjk0ZjA0ZWUuLjZiOWYyNDdkMTFlMGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MnNlL2h3LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyc2UvaHcuY1xuQEAgLTIwMDEsMTAgJiM0MzsyMDAxLDkgQEAgc3RhdGljIHZvaWQgcnRsOTJzZV91cGRhdGVfaGFsX3JhdGVfdGFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRzdHJ1Y3QgcnRsX3BoeSAqcnRscGh5ID0gXHUwMDI2KHJ0bHByaXYtXHUwMDNlcGh5KTtcbiBcdHN0cnVjdCBydGxfbWFjICptYWMgPSBydGxfbWFjKHJ0bF9wcml2KGh3KSk7XG4gXHRzdHJ1Y3QgcnRsX2hhbCAqcnRsaGFsID0gcnRsX2hhbChydGxfcHJpdihodykpO1xuLVx0dTMyIHJhdHJfdmFsdWU7XG4mIzQzO1x0dTMyIHJhdHJfdmFsdWUsIHJhdHJfbWFzaztcbiBcdHU4IHJhdHJfaW5kZXggPSAwO1xuIFx0dTggbm1vZGUgPSBtYWMtXHUwMDNlaHRfZW5hYmxlO1xuLVx0dTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjtcbiBcdHUxNiBzaG9ydGdpX3JhdGUgPSAwO1xuIFx0dTMyIHRtcF9yYXRyX3ZhbHVlID0gMDtcbiBcdHU4IGN1cnR4YndfNDBtaHogPSBtYWMtXHUwMDNlYndfNDA7XG5AQCAtMjAzMiwyNiAmIzQzOzIwMzEsMjEgQEAgc3RhdGljIHZvaWQgcnRsOTJzZV91cGRhdGVfaGFsX3JhdGVfdGFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRjYXNlIFdJUkVMRVNTX01PREVfTl8yNEc6XG4gXHRjYXNlIFdJUkVMRVNTX01PREVfTl81RzpcbiBcdFx0bm1vZGUgPSAxO1xuLVx0XHRpZiAobWltb19wcyA9PSBJRUVFODAyMTFfU01QU19TVEFUSUMpIHtcbi1cdFx0XHRyYXRyX3ZhbHVlIFx1MDAyNj0gMHgwMDA3RjAwNTtcbi1cdFx0fSBlbHNlIHtcbi1cdFx0XHR1MzIgcmF0cl9tYXNrO1xuLVxuLVx0XHRcdGlmIChnZXRfcmZfdHlwZShydGxwaHkpID09IFJGXzFUMlIgfHxcbi1cdFx0XHQgICAgZ2V0X3JmX3R5cGUocnRscGh5KSA9PSBSRl8xVDFSKSB7XG4tXHRcdFx0XHRpZiAoY3VydHhid180MG1oeilcbi1cdFx0XHRcdFx0cmF0cl9tYXNrID0gMHgwMDBmZjAxNTtcbi1cdFx0XHRcdGVsc2Vcbi1cdFx0XHRcdFx0cmF0cl9tYXNrID0gMHgwMDBmZjAwNTtcbi1cdFx0XHR9IGVsc2Uge1xuLVx0XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopXG4tXHRcdFx0XHRcdHJhdHJfbWFzayA9IDB4MGYwZmYwMTU7XG4tXHRcdFx0XHRlbHNlXG4tXHRcdFx0XHRcdHJhdHJfbWFzayA9IDB4MGYwZmYwMDU7XG4tXHRcdFx0fVxuIFxuLVx0XHRcdHJhdHJfdmFsdWUgXHUwMDI2PSByYXRyX21hc2s7XG4mIzQzO1x0XHRpZiAoZ2V0X3JmX3R5cGUocnRscGh5KSA9PSBSRl8xVDJSIHx8XG4mIzQzO1x0XHQgICAgZ2V0X3JmX3R5cGUocnRscGh5KSA9PSBSRl8xVDFSKSB7XG4mIzQzO1x0XHRcdGlmIChjdXJ0eGJ3XzQwbWh6KVxuJiM0MztcdFx0XHRcdHJhdHJfbWFzayA9IDB4MDAwZmYwMTU7XG4mIzQzO1x0XHRcdGVsc2VcbiYjNDM7XHRcdFx0XHRyYXRyX21hc2sgPSAweDAwMGZmMDA1O1xuJiM0MztcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopXG4mIzQzO1x0XHRcdFx0cmF0cl9tYXNrID0gMHgwZjBmZjAxNTtcbiYjNDM7XHRcdFx0ZWxzZVxuJiM0MztcdFx0XHRcdHJhdHJfbWFzayA9IDB4MGYwZmYwMDU7XG4gXHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRyYXRyX3ZhbHVlIFx1MDAyNj0gcmF0cl9tYXNrO1xuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGlmIChydGxwaHktXHUwMDNlcmZfdHlwZSA9PSBSRl8xVDJSKVxuQEAgLTIxMTksNyAmIzQzOzIxMTMsNiBAQCBzdGF0aWMgdm9pZCBydGw5MnNlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0dTMyIGJhbmQgPSAwO1xuIFx0Ym9vbCBibXVsdGljYXN0ID0gZmFsc2U7XG4gXHR1OCBtYWNpZCA9IDA7XG4tXHR1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGO1xuIFxuIFx0c3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKikgc3RhLVx1MDAzZWRydl9wcml2O1xuIFx0d2lyZWxlc3Ntb2RlID0gc3RhX2VudHJ5LVx1MDAzZXdpcmVsZXNzX21vZGU7XG5AQCAtMjE2Nyw0MSAmIzQzOzIxNjAsMzIgQEAgc3RhdGljIHZvaWQgcnRsOTJzZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0YmFuZCB8PSAoV0lSRUxFU1NfMTFOIHwgV0lSRUxFU1NfMTFHIHwgV0lSRUxFU1NfMTFCKTtcbiBcdFx0cmF0cl9pbmRleCA9IFJBVFJfSU5YX1dJUkVMRVNTX05HQjtcbiBcbi1cdFx0aWYgKG1pbW9fcHMgPT0gSUVFRTgwMjExX1NNUFNfU1RBVElDKSB7XG4tXHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcbi1cdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDA3MDAwMDtcbi1cdFx0XHRlbHNlIGlmIChyc3NpX2xldmVsID09IDIpXG4tXHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwN2YwMDA7XG4tXHRcdFx0ZWxzZVxuLVx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMDdmMDA1O1xuJiM0MztcdFx0aWYgKHJ0bHBoeS1cdTAwM2VyZl90eXBlID09IFJGXzFUMlIgfHxcbiYjNDM7XHRcdCAgICBydGxwaHktXHUwMDNlcmZfdHlwZSA9PSBSRl8xVDFSKSB7XG4mIzQzO1x0XHRcdGlmIChyc3NpX2xldmVsID09IDEpIHtcbiYjNDM7XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZjAwMDA7XG4mIzQzO1x0XHRcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAzKSB7XG4mIzQzO1x0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZjMDAwO1xuJiM0MztcdFx0XHR9IGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gNSkge1xuJiM0MztcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAwMDtcbiYjNDM7XHRcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0XHRpZiAoY3VydHhid180MG1oeilcbiYjNDM7XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAxNTtcbiYjNDM7XHRcdFx0XHRlbHNlXG4mIzQzO1x0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZmYwMDU7XG4mIzQzO1x0XHRcdH1cbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRpZiAocnRscGh5LVx1MDAzZXJmX3R5cGUgPT0gUkZfMVQyUiB8fFxuLVx0XHRcdFx0cnRscGh5LVx1MDAzZXJmX3R5cGUgPT0gUkZfMVQxUikge1xuLVx0XHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSkge1xuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmMDAwMDtcbi1cdFx0XHRcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAzKSB7XG4tXHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmYzAwMDtcbi1cdFx0XHRcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSA1KSB7XG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDAwO1xuLVx0XHRcdFx0fSBlbHNlIHtcbi1cdFx0XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDE1O1xuLVx0XHRcdFx0XHRlbHNlXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDA1O1xuLVx0XHRcdFx0fVxuJiM0MztcdFx0XHRpZiAocnNzaV9sZXZlbCA9PSAxKSB7XG4mIzQzO1x0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGYwMDAwO1xuJiM0MztcdFx0XHR9IGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMykge1xuJiM0MztcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZjhmYzAwMDtcbiYjNDM7XHRcdFx0fSBlbHNlIGlmIChyc3NpX2xldmVsID09IDUpIHtcbiYjNDM7XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGY4ZmYwMDA7XG4gXHRcdFx0fSBlbHNlIHtcbi1cdFx0XHRcdGlmIChyc3NpX2xldmVsID09IDEpIHtcbi1cdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGYwMDAwO1xuLVx0XHRcdFx0fSBlbHNlIGlmIChyc3NpX2xldmVsID09IDMpIHtcbi1cdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZjMDAwO1xuLVx0XHRcdFx0fSBlbHNlIGlmIChyc3NpX2xldmVsID09IDUpIHtcbi1cdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZmMDAwO1xuLVx0XHRcdFx0fSBlbHNlIHtcbi1cdFx0XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZmMDE1O1xuLVx0XHRcdFx0XHRlbHNlXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZmMDA1O1xuLVx0XHRcdFx0fVxuJiM0MztcdFx0XHRcdGlmIChjdXJ0eGJ3XzQwbWh6KVxuJiM0MztcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZmMDE1O1xuJiM0MztcdFx0XHRcdGVsc2VcbiYjNDM7XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZjhmZjAwNTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODcyM2FlL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODcyM2FlL2h3LmNcbmluZGV4IGJkNDVkOWJkNDBiYjcuLjJlNTBmNWMyNGRmODEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODcyM2FlL2h3LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4NzIzYWUvaHcuY1xuQEAgLTE5MjQsNyAmIzQzOzE5MjQsNiBAQCBzdGF0aWMgdm9pZCBydGw4NzIzZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdGJvb2wgc2hvcnRnaSA9IGZhbHNlO1xuIFx0dTggcmF0ZV9tYXNrWzVdO1xuIFx0dTggbWFjaWQgPSAwO1xuLVx0Lyp1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGOyovXG4gXG4gXHRzdGFfZW50cnkgPSAoc3RydWN0IHJ0bF9zdGFfaW5mbyAqKXN0YS1cdTAwM2VkcnZfcHJpdjtcbiBcdHdpcmVsZXNzbW9kZSA9IHN0YV9lbnRyeS1cdTAwM2V3aXJlbGVzc19tb2RlO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4ODIxYWUvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4ODIxYWUvaHcuY1xuaW5kZXggMWJhNTNlNjcxMjA3ZS4uMzFmNDk5YmU5OWEzOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4ODIxYWUvaHcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDg4MjFhZS9ody5jXG5AQCAtMzQ2OCw3ICYjNDM7MzQ2OCw2IEBAIHN0YXRpYyB2b2lkIHJ0bDg4MjFhZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdGJvb2wgYl9zaG9ydGdpID0gZmFsc2U7XG4gXHR1OCByYXRlX21hc2tbN107XG4gXHR1OCBtYWNpZCA9IDA7XG4tXHR1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGO1xuIFx0dTggcmZfdHlwZTtcbiBcbiBcdHN0YV9lbnRyeSA9IChzdHJ1Y3QgcnRsX3N0YV9pbmZvICopc3RhLVx1MDAzZWRydl9wcml2O1xuQEAgLTM1MzUsNDcgJiM0MzszNTM0LDM3IEBAIHN0YXRpYyB2b2lkIHJ0bDg4MjFhZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0ZWxzZVxuIFx0XHRcdHJhdHJfaW5kZXggPSBSQVRSX0lOWF9XSVJFTEVTU19ORztcbiBcbi1cdFx0aWYgKG1pbW9fcHMgPT0gSUVFRTgwMjExX1NNUFNfU1RBVElDXG4tXHRcdFx0fHwgbWltb19wcyA9PSBJRUVFODAyMTFfU01QU19EWU5BTUlDKSB7XG4tXHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcbi1cdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmMDAwMDtcbi1cdFx0XHRlbHNlIGlmIChyc3NpX2xldmVsID09IDIpXG4tXHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZmYwMDA7XG4tXHRcdFx0ZWxzZVxuLVx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDA1O1xuJiM0MztcdFx0aWYgKHJmX3R5cGUgPT0gUkZfMVQxUikge1xuJiM0MztcdFx0XHRpZiAoY3VydHhid180MG1oeikge1xuJiM0MztcdFx0XHRcdGlmIChyc3NpX2xldmVsID09IDEpXG4mIzQzO1x0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZjAwMDA7XG4mIzQzO1x0XHRcdFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxuJiM0MztcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDAwO1xuJiM0MztcdFx0XHRcdGVsc2VcbiYjNDM7XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAxNTtcbiYjNDM7XHRcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0XHRpZiAocnNzaV9sZXZlbCA9PSAxKVxuJiM0MztcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGYwMDAwO1xuJiM0MztcdFx0XHRcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcbiYjNDM7XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAwMDtcbiYjNDM7XHRcdFx0XHRlbHNlXG4mIzQzO1x0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZmYwMDU7XG4mIzQzO1x0XHRcdH1cbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRpZiAocmZfdHlwZSA9PSBSRl8xVDFSKSB7XG4tXHRcdFx0XHRpZiAoY3VydHhid180MG1oeikge1xuLVx0XHRcdFx0XHRpZiAocnNzaV9sZXZlbCA9PSAxKVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmMDAwMDtcbi1cdFx0XHRcdFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAwMDtcbi1cdFx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAxNTtcbi1cdFx0XHRcdH0gZWxzZSB7XG4tXHRcdFx0XHRcdGlmIChyc3NpX2xldmVsID09IDEpXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGYwMDAwO1xuLVx0XHRcdFx0XHRlbHNlIGlmIChyc3NpX2xldmVsID09IDIpXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDAwO1xuLVx0XHRcdFx0XHRlbHNlXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDA1O1xuLVx0XHRcdFx0fVxuJiM0MztcdFx0XHRpZiAoY3VydHhid180MG1oeikge1xuJiM0MztcdFx0XHRcdGlmIChyc3NpX2xldmVsID09IDEpXG4mIzQzO1x0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGZmZjAwMDA7XG4mIzQzO1x0XHRcdFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxuJiM0MztcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmZmZmMDAwO1xuJiM0MztcdFx0XHRcdGVsc2VcbiYjNDM7XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZmZmZjAxNTtcbiBcdFx0XHR9IGVsc2Uge1xuLVx0XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopIHtcbi1cdFx0XHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcbi1cdFx0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGZmZjAwMDA7XG4tXHRcdFx0XHRcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcbi1cdFx0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGZmZmYwMDA7XG4tXHRcdFx0XHRcdGVsc2Vcbi1cdFx0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGZmZmYwMTU7XG4tXHRcdFx0XHR9IGVsc2Uge1xuLVx0XHRcdFx0XHRpZiAocnNzaV9sZXZlbCA9PSAxKVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZmZmMDAwMDtcbi1cdFx0XHRcdFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZmZmZjAwMDtcbi1cdFx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZmZmZjAwNTtcbi1cdFx0XHRcdH1cbiYjNDM7XHRcdFx0XHRpZiAocnNzaV9sZXZlbCA9PSAxKVxuJiM0MztcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmZmYwMDAwO1xuJiM0MztcdFx0XHRcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcbiYjNDM7XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZmZmZjAwMDtcbiYjNDM7XHRcdFx0XHRlbHNlXG4mIzQzO1x0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGZmZmYwMDU7XG4gXHRcdFx0fVxuIFx0XHR9XG4gXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE3OjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGEgbG9jYWwgdmFyaWFibGUgYG1pbW9fcHNgIHRoYXQgd2FzIGhhcmRjb2RlZCB0byBgSUVFRTgwMjExX1NNUFNfT0ZGYCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZGVhZCBjb2RlIGJsb2NrcyB0aGF0IGNoZWNrZWQgaWYgaXQgd2FzIGBJRUVFODAyMTFfU01QU19TVEFUSUNgIG9yIGBJRUVFODAyMTFfU01QU19EWU5BTUlDYC4gVGhpcyBpcyBwdXJlbHkgZGVhZCBjb2RlIHJlbW92YWwgYW5kIGRvZXMgbm90IGFsdGVyIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDhhZGU4OGMyYWVhZDU0MjIwZjI4NTg0YWM5N2E5YTY2NGRmMDAxNmMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAxNCAxNzoyODoyNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTg4ZWUvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTg4ZWUvaHcuYwppbmRleCA1M2MzMmUxZGU3ZTQ3Li45MTBmODM3MmQ4M2QxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE4OGVlL2h3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxODhlZS9ody5jCkBAIC0xOTcwLDcgJiM0MzsxOTcwLDYgQEAgc3RhdGljIHZvaWQgcnRsODhlZV91cGRhdGVfaGFsX3JhdGVfdGFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJdTMyIHJhdHJfdmFsdWU7CiAJdTggcmF0cl9pbmRleCA9IDA7CiAJdTggYl9ubW9kZSA9IG1hYy0mZ3Q7aHRfZW5hYmxlOwotCS8qdTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsqLwogCXUxNiBzaG9ydGdpX3JhdGU7CiAJdTMyIHRtcF9yYXRyX3ZhbHVlOwogCXU4IGN1cnR4YndfNDBtaHogPSBtYWMtJmd0O2J3XzQwOwpAQCAtMjA3MCw3ICYjNDM7MjA2OSw2IEBAIHN0YXRpYyB2b2lkIHJ0bDg4ZWVfdXBkYXRlX2hhbF9yYXRlX21hc2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJYm9vbCBiX3Nob3J0Z2kgPSBmYWxzZTsKIAl1OCByYXRlX21hc2tbNV07CiAJdTggbWFjaWQgPSAwOwotCS8qdTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsqLwogCiAJc3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKilzdGEtJmd0O2Rydl9wcml2OwogCXdpcmVsZXNzbW9kZSA9IHN0YV9lbnRyeS0mZ3Q7d2lyZWxlc3NfbW9kZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyZWUvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyZWUvaHcuYwppbmRleCA0OGEzYzk0NjA2YmVmLi4wMDA0ODkxMjkwMGM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmVlL2h3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJlZS9ody5jCkBAIC0yMjY2LDcgJiM0MzsyMjY2LDYgQEAgc3RhdGljIHZvaWQgcnRsOTJlZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAlib29sIGJfc2hvcnRnaSA9IGZhbHNlOwogCXU4IHJhdGVfbWFza1s3XSA9IHswfTsKIAl1OCBtYWNpZCA9IDA7Ci0JLyp1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGOyovCiAJc3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKilzdGEtJmd0O2Rydl9wcml2OwogCXdpcmVsZXNzbW9kZSA9IHN0YV9lbnRyeS0mZ3Q7d2lyZWxlc3NfbW9kZTsKIAlpZiAobWFjLSZndDtvcG1vZGUgPT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTiB8fApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJzZS9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJzZS9ody5jCmluZGV4IGU1Nzc1Yjk0ZjA0ZWUuLjZiOWYyNDdkMTFlMGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyc2UvaHcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MnNlL2h3LmMKQEAgLTIwMDEsMTAgJiM0MzsyMDAxLDkgQEAgc3RhdGljIHZvaWQgcnRsOTJzZV91cGRhdGVfaGFsX3JhdGVfdGFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJc3RydWN0IHJ0bF9waHkgKnJ0bHBoeSA9ICZhbXA7KHJ0bHByaXYtJmd0O3BoeSk7CiAJc3RydWN0IHJ0bF9tYWMgKm1hYyA9IHJ0bF9tYWMocnRsX3ByaXYoaHcpKTsKIAlzdHJ1Y3QgcnRsX2hhbCAqcnRsaGFsID0gcnRsX2hhbChydGxfcHJpdihodykpOwotCXUzMiByYXRyX3ZhbHVlOwomIzQzOwl1MzIgcmF0cl92YWx1ZSwgcmF0cl9tYXNrOwogCXU4IHJhdHJfaW5kZXggPSAwOwogCXU4IG5tb2RlID0gbWFjLSZndDtodF9lbmFibGU7Ci0JdTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsKIAl1MTYgc2hvcnRnaV9yYXRlID0gMDsKIAl1MzIgdG1wX3JhdHJfdmFsdWUgPSAwOwogCXU4IGN1cnR4YndfNDBtaHogPSBtYWMtJmd0O2J3XzQwOwpAQCAtMjAzMiwyNiAmIzQzOzIwMzEsMjEgQEAgc3RhdGljIHZvaWQgcnRsOTJzZV91cGRhdGVfaGFsX3JhdGVfdGFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJY2FzZSBXSVJFTEVTU19NT0RFX05fMjRHOgogCWNhc2UgV0lSRUxFU1NfTU9ERV9OXzVHOgogCQlubW9kZSA9IDE7Ci0JCWlmIChtaW1vX3BzID09IElFRUU4MDIxMV9TTVBTX1NUQVRJQykgewotCQkJcmF0cl92YWx1ZSAmYW1wOz0gMHgwMDA3RjAwNTsKLQkJfSBlbHNlIHsKLQkJCXUzMiByYXRyX21hc2s7Ci0KLQkJCWlmIChnZXRfcmZfdHlwZShydGxwaHkpID09IFJGXzFUMlIgfHwKLQkJCSAgICBnZXRfcmZfdHlwZShydGxwaHkpID09IFJGXzFUMVIpIHsKLQkJCQlpZiAoY3VydHhid180MG1oeikKLQkJCQkJcmF0cl9tYXNrID0gMHgwMDBmZjAxNTsKLQkJCQllbHNlCi0JCQkJCXJhdHJfbWFzayA9IDB4MDAwZmYwMDU7Ci0JCQl9IGVsc2UgewotCQkJCWlmIChjdXJ0eGJ3XzQwbWh6KQotCQkJCQlyYXRyX21hc2sgPSAweDBmMGZmMDE1OwotCQkJCWVsc2UKLQkJCQkJcmF0cl9tYXNrID0gMHgwZjBmZjAwNTsKLQkJCX0KIAotCQkJcmF0cl92YWx1ZSAmYW1wOz0gcmF0cl9tYXNrOwomIzQzOwkJaWYgKGdldF9yZl90eXBlKHJ0bHBoeSkgPT0gUkZfMVQyUiB8fAomIzQzOwkJICAgIGdldF9yZl90eXBlKHJ0bHBoeSkgPT0gUkZfMVQxUikgewomIzQzOwkJCWlmIChjdXJ0eGJ3XzQwbWh6KQomIzQzOwkJCQlyYXRyX21hc2sgPSAweDAwMGZmMDE1OwomIzQzOwkJCWVsc2UKJiM0MzsJCQkJcmF0cl9tYXNrID0gMHgwMDBmZjAwNTsKJiM0MzsJCX0gZWxzZSB7CiYjNDM7CQkJaWYgKGN1cnR4YndfNDBtaHopCiYjNDM7CQkJCXJhdHJfbWFzayA9IDB4MGYwZmYwMTU7CiYjNDM7CQkJZWxzZQomIzQzOwkJCQlyYXRyX21hc2sgPSAweDBmMGZmMDA1OwogCQl9CiYjNDM7CiYjNDM7CQlyYXRyX3ZhbHVlICZhbXA7PSByYXRyX21hc2s7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWlmIChydGxwaHktJmd0O3JmX3R5cGUgPT0gUkZfMVQyUikKQEAgLTIxMTksNyAmIzQzOzIxMTMsNiBAQCBzdGF0aWMgdm9pZCBydGw5MnNlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCXUzMiBiYW5kID0gMDsKIAlib29sIGJtdWx0aWNhc3QgPSBmYWxzZTsKIAl1OCBtYWNpZCA9IDA7Ci0JdTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsKIAogCXN0YV9lbnRyeSA9IChzdHJ1Y3QgcnRsX3N0YV9pbmZvICopIHN0YS0mZ3Q7ZHJ2X3ByaXY7CiAJd2lyZWxlc3Ntb2RlID0gc3RhX2VudHJ5LSZndDt3aXJlbGVzc19tb2RlOwpAQCAtMjE2Nyw0MSAmIzQzOzIxNjAsMzIgQEAgc3RhdGljIHZvaWQgcnRsOTJzZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAkJYmFuZCB8PSAoV0lSRUxFU1NfMTFOIHwgV0lSRUxFU1NfMTFHIHwgV0lSRUxFU1NfMTFCKTsKIAkJcmF0cl9pbmRleCA9IFJBVFJfSU5YX1dJUkVMRVNTX05HQjsKIAotCQlpZiAobWltb19wcyA9PSBJRUVFODAyMTFfU01QU19TVEFUSUMpIHsKLQkJCWlmIChyc3NpX2xldmVsID09IDEpCi0JCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwNzAwMDA7Ci0JCQllbHNlIGlmIChyc3NpX2xldmVsID09IDIpCi0JCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwN2YwMDA7Ci0JCQllbHNlCi0JCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwN2YwMDU7CiYjNDM7CQlpZiAocnRscGh5LSZndDtyZl90eXBlID09IFJGXzFUMlIgfHwKJiM0MzsJCSAgICBydGxwaHktJmd0O3JmX3R5cGUgPT0gUkZfMVQxUikgewomIzQzOwkJCWlmIChyc3NpX2xldmVsID09IDEpIHsKJiM0MzsJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwZjAwMDA7CiYjNDM7CQkJfSBlbHNlIGlmIChyc3NpX2xldmVsID09IDMpIHsKJiM0MzsJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwZmMwMDA7CiYjNDM7CQkJfSBlbHNlIGlmIChyc3NpX2xldmVsID09IDUpIHsKJiM0MzsJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwZmYwMDA7CiYjNDM7CQkJfSBlbHNlIHsKJiM0MzsJCQkJaWYgKGN1cnR4YndfNDBtaHopCiYjNDM7CQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwMDBmZjAxNTsKJiM0MzsJCQkJZWxzZQomIzQzOwkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwZmYwMDU7CiYjNDM7CQkJfQogCQl9IGVsc2UgewotCQkJaWYgKHJ0bHBoeS0mZ3Q7cmZfdHlwZSA9PSBSRl8xVDJSIHx8Ci0JCQkJcnRscGh5LSZndDtyZl90eXBlID09IFJGXzFUMVIpIHsKLQkJCQlpZiAocnNzaV9sZXZlbCA9PSAxKSB7Ci0JCQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwMDBmMDAwMDsKLQkJCQl9IGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMykgewotCQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwMDBmYzAwMDsKLQkJCQl9IGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gNSkgewotCQkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwZmYwMDA7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJaWYgKGN1cnR4YndfNDBtaHopCi0JCQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwMDBmZjAxNTsKLQkJCQkJZWxzZQotCQkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwZmYwMDU7Ci0JCQkJfQomIzQzOwkJCWlmIChyc3NpX2xldmVsID09IDEpIHsKJiM0MzsJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGY4ZjAwMDA7CiYjNDM7CQkJfSBlbHNlIGlmIChyc3NpX2xldmVsID09IDMpIHsKJiM0MzsJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGY4ZmMwMDA7CiYjNDM7CQkJfSBlbHNlIGlmIChyc3NpX2xldmVsID09IDUpIHsKJiM0MzsJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGY4ZmYwMDA7CiAJCQl9IGVsc2UgewotCQkJCWlmIChyc3NpX2xldmVsID09IDEpIHsKLQkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGY4ZjAwMDA7Ci0JCQkJfSBlbHNlIGlmIChyc3NpX2xldmVsID09IDMpIHsKLQkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGY4ZmMwMDA7Ci0JCQkJfSBlbHNlIGlmIChyc3NpX2xldmVsID09IDUpIHsKLQkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGY4ZmYwMDA7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJaWYgKGN1cnR4YndfNDBtaHopCi0JCQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwZjhmZjAxNTsKLQkJCQkJZWxzZQotCQkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGY4ZmYwMDU7Ci0JCQkJfQomIzQzOwkJCQlpZiAoY3VydHhid180MG1oeikKJiM0MzsJCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDBmOGZmMDE1OwomIzQzOwkJCQllbHNlCiYjNDM7CQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwZjhmZjAwNTsKIAkJCX0KIAkJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODcyM2FlL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODcyM2FlL2h3LmMKaW5kZXggYmQ0NWQ5YmQ0MGJiNy4uMmU1MGY1YzI0ZGY4MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDg3MjNhZS9ody5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4NzIzYWUvaHcuYwpAQCAtMTkyNCw3ICYjNDM7MTkyNCw2IEBAIHN0YXRpYyB2b2lkIHJ0bDg3MjNlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCWJvb2wgc2hvcnRnaSA9IGZhbHNlOwogCXU4IHJhdGVfbWFza1s1XTsKIAl1OCBtYWNpZCA9IDA7Ci0JLyp1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGOyovCiAKIAlzdGFfZW50cnkgPSAoc3RydWN0IHJ0bF9zdGFfaW5mbyAqKXN0YS0mZ3Q7ZHJ2X3ByaXY7CiAJd2lyZWxlc3Ntb2RlID0gc3RhX2VudHJ5LSZndDt3aXJlbGVzc19tb2RlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDg4MjFhZS9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDg4MjFhZS9ody5jCmluZGV4IDFiYTUzZTY3MTIwN2UuLjMxZjQ5OWJlOTlhMzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4ODIxYWUvaHcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODgyMWFlL2h3LmMKQEAgLTM0NjgsNyAmIzQzOzM0NjgsNiBAQCBzdGF0aWMgdm9pZCBydGw4ODIxYWVfdXBkYXRlX2hhbF9yYXRlX21hc2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJYm9vbCBiX3Nob3J0Z2kgPSBmYWxzZTsKIAl1OCByYXRlX21hc2tbN107CiAJdTggbWFjaWQgPSAwOwotCXU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7CiAJdTggcmZfdHlwZTsKIAogCXN0YV9lbnRyeSA9IChzdHJ1Y3QgcnRsX3N0YV9pbmZvICopc3RhLSZndDtkcnZfcHJpdjsKQEAgLTM1MzUsNDcgJiM0MzszNTM0LDM3IEBAIHN0YXRpYyB2b2lkIHJ0bDg4MjFhZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAkJZWxzZQogCQkJcmF0cl9pbmRleCA9IFJBVFJfSU5YX1dJUkVMRVNTX05HOwogCi0JCWlmIChtaW1vX3BzID09IElFRUU4MDIxMV9TTVBTX1NUQVRJQwotCQkJfHwgbWltb19wcyA9PSBJRUVFODAyMTFfU01QU19EWU5BTUlDKSB7Ci0JCQlpZiAocnNzaV9sZXZlbCA9PSAxKQotCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDAwMGYwMDAwOwotCQkJZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKQotCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDAwMGZmMDAwOwotCQkJZWxzZQotCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDAwMGZmMDA1OwomIzQzOwkJaWYgKHJmX3R5cGUgPT0gUkZfMVQxUikgewomIzQzOwkJCWlmIChjdXJ0eGJ3XzQwbWh6KSB7CiYjNDM7CQkJCWlmIChyc3NpX2xldmVsID09IDEpCiYjNDM7CQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwMDBmMDAwMDsKJiM0MzsJCQkJZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKQomIzQzOwkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwZmYwMDA7CiYjNDM7CQkJCWVsc2UKJiM0MzsJCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDAwMGZmMDE1OwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCWlmIChyc3NpX2xldmVsID09IDEpCiYjNDM7CQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwMDBmMDAwMDsKJiM0MzsJCQkJZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKQomIzQzOwkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwZmYwMDA7CiYjNDM7CQkJCWVsc2UKJiM0MzsJCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDAwMGZmMDA1OwomIzQzOwkJCX0KIAkJfSBlbHNlIHsKLQkJCWlmIChyZl90eXBlID09IFJGXzFUMVIpIHsKLQkJCQlpZiAoY3VydHhid180MG1oeikgewotCQkJCQlpZiAocnNzaV9sZXZlbCA9PSAxKQotCQkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwZjAwMDA7Ci0JCQkJCWVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMikKLQkJCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDAwMGZmMDAwOwotCQkJCQllbHNlCi0JCQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwMDBmZjAxNTsKLQkJCQl9IGVsc2UgewotCQkJCQlpZiAocnNzaV9sZXZlbCA9PSAxKQotCQkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MDAwZjAwMDA7Ci0JCQkJCWVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMikKLQkJCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDAwMGZmMDAwOwotCQkJCQllbHNlCi0JCQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwMDBmZjAwNTsKLQkJCQl9CiYjNDM7CQkJaWYgKGN1cnR4YndfNDBtaHopIHsKJiM0MzsJCQkJaWYgKHJzc2lfbGV2ZWwgPT0gMSkKJiM0MzsJCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDBmZmYwMDAwOwomIzQzOwkJCQllbHNlIGlmIChyc3NpX2xldmVsID09IDIpCiYjNDM7CQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwZmZmZjAwMDsKJiM0MzsJCQkJZWxzZQomIzQzOwkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGZmZmYwMTU7CiAJCQl9IGVsc2UgewotCQkJCWlmIChjdXJ0eGJ3XzQwbWh6KSB7Ci0JCQkJCWlmIChyc3NpX2xldmVsID09IDEpCi0JCQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwZmZmMDAwMDsKLQkJCQkJZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKQotCQkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGZmZmYwMDA7Ci0JCQkJCWVsc2UKLQkJCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDBmZmZmMDE1OwotCQkJCX0gZWxzZSB7Ci0JCQkJCWlmIChyc3NpX2xldmVsID09IDEpCi0JCQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwZmZmMDAwMDsKLQkJCQkJZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKQotCQkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGZmZmYwMDA7Ci0JCQkJCWVsc2UKLQkJCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDBmZmZmMDA1OwotCQkJCX0KJiM0MzsJCQkJaWYgKHJzc2lfbGV2ZWwgPT0gMSkKJiM0MzsJCQkJCXJhdHJfYml0bWFwICZhbXA7PSAweDBmZmYwMDAwOwomIzQzOwkJCQllbHNlIGlmIChyc3NpX2xldmVsID09IDIpCiYjNDM7CQkJCQlyYXRyX2JpdG1hcCAmYW1wOz0gMHgwZmZmZjAwMDsKJiM0MzsJCQkJZWxzZQomIzQzOwkJCQkJcmF0cl9iaXRtYXAgJmFtcDs9IDB4MGZmZmYwMDU7CiAJCQl9CiAJCX0KIAkJYnJlYWs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE3OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxMzQKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiA3NTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEZWFkIENvZGUgUmVtb3ZhbCBpbiB0aGUgcnRsd2lmaSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyBjbGVhbmluZyB1cCB0aGUgYHJ0bHdpZmlgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBSZWFsdGVrIHdpcmVsZXNzIGNhcmRzIOKAkyB0aGUgdXN1YWwgc3VzcGVjdHM6IHJ0bDgxODhlZSwgcnRsODE5MmVlLCBydGw4MTkyc2UsIHJ0bDg3MjNhZSwgYW5kIHJ0bDg4MjFhZS4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSByZW1vdmluZyB0aGUgYG1pbW9fcHNgIHZhcmlhYmxlIGFuZCBpdHMgYXNzb2NpYXRlZCBjb25kaXRpb25hbCBibG9ja3MuIEluaXRpYWxseSwgaXQgbG9va2VkIGxpa2UgdGhleSBqdXN0IHJlbW92ZWQgdGhlIHZhcmlhYmxlIGRlZmluaXRpb24sIGJ1dCBpdCYjMzk7cyBtb3JlIHNwZWNpZmljLCB0aGV5JiMzOTtyZSB0YWtpbmcgb3V0IHBhcnRzIHdoZXJlIGBtaW1vX3BzYCBpcyBjb21wYXJlZCB0byBgSUVFRTgwMjExX1NNUFNfU1RBVElDYC4KCk15IGluaXRpYWwgdGhvdWdodCB3YXMsICYjMzQ7SXMgdGhpcyB0cnVseSBkZWFkIGNvZGU/JiMzNDsgU2luY2UgYG1pbW9fcHNgIHdhcyBoYXJkY29kZWQgdG8gYElFRUU4MDIxMV9TTVBTX09GRmAsIHdoaWNoIGlzIGVmZmVjdGl2ZWx5IHplcm8sIGFuZCBjb21wYXJpbmcgdG8gYElFRUU4MDIxMV9TTVBTX1NUQVRJQ2AgKHdoaWNoIGlzIG9uZSkuCgpJIHdlbnQgaW4gdG8gaW52ZXN0aWdhdGUuIExldCYjMzk7cyBzZWUuLi4gaW4gYHJ0bDgxOTJzZS9ody5jYCwgZm9yIGV4YW1wbGUsIHRoZXJlJiMzOTtzIGEgc25pcHBldDoKYGBgYwotCXU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7Ci4uLgotCQlpZiAobWltb19wcyA9PSBJRUVFODAyMTFfU01QU19TVEFUSUMpIHsKLQkJCXJhdHJfdmFsdWUgJmFtcDs9IDB4MDAwN0YwMDU7Ci0JCX0gZWxzZSB7Ci4uLgpgYGAKQWgsIHJpZ2h0LiBTaW5jZSBgbWltb19wc2AgaXMgaW5pdGlhbGl6ZWQgdG8gYElFRUU4MDIxMV9TTVBTX09GRmAgKDApLCB0aGUgYGlmYCBjb25kaXRpb24gd291bGQgKmFsd2F5cyogYmUgZmFsc2UuIFRoZSBwYXRjaCBpcyBzZW5zaWJseSByZW1vdmluZyB0aGUgYGlmYCBhbmQga2VlcGluZyB0aGUgYGVsc2VgIGJsb2NrLiBTYW1lIHBhdHRlcm4gZm9yIGBydGw5MnNlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrYCBhbmQgYHJ0bDg4MjFhZV91cGRhdGVfaGFsX3JhdGVfbWFza2AuIFRoaXMgY29uZmlybXMgdGhlIHJlbW92YWwgaXMgZGVhZCBjb2RlLCBhcyB0aGUgY29uZGl0aW9uIHdhcyBuZXZlciB0cnVlLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O2xsIGRvdWJsZSBjaGVjayBob3cgYG1pbW9fcHNgIGlzIHVzZWQuIElzIGl0IG1vZGlmaWVkIGFueXdoZXJlIGJldHdlZW4gaXRzIGluaXRpYWxpemF0aW9uIGFuZCB0aGUgY29uZGl0aW9uYWwgY2hlY2s/IEV4YW1pbmluZyB0aGUgcmVsZXZhbnQgY29kZSBpbiBgcnRsODE5MnNlL2h3LmNgLCBgbWltb19wc2AgaXMgZGVmaW5lZCBsb2NhbGx5IGFuZCByZW1haW5zIHVuY2hhbmdlZCBiZWZvcmUgaXRzIHVzZSBpbiB0aGUgY29uZGl0aW9uYWwuIFNvIGl04oCZcyAqcHVyZWx5KiBkZWFkIGNvZGUgcmVtb3ZhbC4gTm8gZnVuY3Rpb25hbCBpbXBhY3Qgd2hhdHNvZXZlci4KClRoZXJlZm9yZSwgdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHNhZmUgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJIGFtIGdvaW5nIHRvIHF1aWNrbHkgdmVyaWZ5IHRoaXMgdXNpbmcgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIGJ5IGludmVzdGlnYXRpbmcgdGhlIGNvZGUgb2YgYHJ0bDkyc2VfdXBkYXRlX2hhbF9yYXRlX3RhYmxlYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJzZS9ody5jYCBiZWZvcmUgdGhlIHBhdGNoLCBidXQgdGhhdCBpcyBtZXJlbHkgYW4gYWRkaXRpb25hbCBkb3VibGUtY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTc6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyY3UvaHcuYz0xODA1PXN0YXRpYyB2b2lkIHJ0bDkyY3VfdXBkYXRlX2hhbF9yYXRlX3RhYmxlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyY3UvaHcuYy0xODE0LVx0dTggbm1vZGUgPSBtYWMtXHUwMDNlaHRfZW5hYmxlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJjdS9ody5jOjE4MTU6XHR1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJjdS9ody5jLTE4MTYtXHR1MTYgc2hvcnRnaV9yYXRlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyY3UvaHcuYz0xODkzPXN0YXRpYyB2b2lkIHJ0bDkyY3VfdXBkYXRlX2hhbF9yYXRlX21hc2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJjdS9ody5jLTE5MTMtXHR1OCBtYWNpZCA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmN1L2h3LmM6MTkxNDpcdHU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmN1L2h3LmMtMTkxNS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNzoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTUzCgkJCQkJCQlvdXRwdXQ6IDExNAoJCQkJCQkJdGhvdWdodHM6IDE3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3QqKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoaXMgcGF0Y2ggbWFkZSBzb21lIGNoYW5nZXMgdG8gc2V2ZXJhbCBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlcnM6IHJ0bDgxOTJzZSwgcnRsODgyMWFlLCBydGw4MTg4ZWUsIHJ0bDgxOTJlZSwgYW5kIHJ0bDg3MjNhZS4gVGhlIGRpZmYgcmVhbGx5IGhpZ2hsaWdodHMgdGhlIGlzc3VlLiBJdCBsb29rcyBsaWtlIHRoZXkgd2VyZSBkZWFsaW5nIHdpdGggYSBsb2NhbCB2YXJpYWJsZS4gVGhpcyB2YXJpYWJsZSwgbGV0JiMzOTtzIGNhbGwgaXQgYHNtcHNfc3RhdGVgLCB3YXMgaW5pdGlhbGl6ZWQgdG8gYElFRUU4MDIxMV9TTVBTX09GRmAuIFRoZW4sIHRoZSBjb2RlIHdhcyBjaGVja2luZyB0aGlzIHZhcmlhYmxlIGFnYWluc3QgYElFRUU4MDIxMV9TTVBTX1NUQVRJQ2Agb3IgYElFRUU4MDIxMV9TTVBTX0RZTkFNSUNgLgoKTm93LCBoZXJlJiMzOTtzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuIEkga25vdyBmcm9tIG15IGV4cGVyaWVuY2UsIGFuZCBhIHF1aWNrIGxvb2sgYXQgdGhlIHJlbGV2YW50IGhlYWRlcnMgKGxpa2VseSBgaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaGAgb3Igc29tZXRoaW5nIHNpbWlsYXIpLCB0aGF0IGBJRUVFODAyMTFfU01QU19PRkZgIGlzIGRlZmluZWQgYXMgMC4gYElFRUU4MDIxMV9TTVBTX1NUQVRJQ2AgaXMgMSwgYW5kIGBJRUVFODAyMTFfU01QU19EWU5BTUlDYCBpcyAyLiBUaGVyZWZvcmUsIHNpbmNlIHRoZSB2YXJpYWJsZSBzdGFydGVkIGFzIDAgYW5kIHRoZW4gd2FzIGNvbXBhcmVkIHRvIDEgb3IgMiwgdGhlIGNvbmRpdGlvbiBpbiB0aGUgY29kZSB3YXMgKmFsd2F5cyogZ29pbmcgdG8gZXZhbHVhdGUgYXMgZmFsc2UuIEl0IGRvZXNuJiMzOTt0IG1hdHRlciB3aGF0IHRoZSB1bmRlcmx5aW5nIGxvZ2ljIHdhcyAqc3VwcG9zZWQqIHRvIGRvLCB0aGUgZXhpc3RpbmcgY29kZSB3b3VsZCBuZXZlciBleGVjdXRlIHRoYXQgYnJhbmNoLgoKU28sIHJlYWxpc3RpY2FsbHksIHRoaXMgcGF0Y2ggaGFzIG5vIGZ1bmN0aW9uYWwgaW1wYWN0LiBJdCYjMzk7cyBhIGhhcm1sZXNzIGNoYW5nZSwgYnV0IGl0JiMzOTtzIG5vdCBhY3R1YWxseSBjaGFuZ2luZyBhbnl0aGluZy4gSSYjMzk7bSBnb2luZyB0byBtYXJrIHRoaXMgYXMgbm90IHdvcnRoIGZ1enppbmcsIHNvIEkmIzM5O2xsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gTm8gcG9pbnQgaW4gc3BlbmRpbmcgdGltZSBvbiBzb21ldGhpbmcgdGhhdCYjMzk7cyBhIGRlYWQgZW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE3OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhIGxvY2FsIHZhcmlhYmxlIGBtaW1vX3BzYCB0aGF0IHdhcyBoYXJkY29kZWQgdG8gYElFRUU4MDIxMV9TTVBTX09GRmAgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGRlYWQgY29kZSBibG9ja3MgdGhhdCBjaGVja2VkIGlmIGl0IHdhcyBgSUVFRTgwMjExX1NNUFNfU1RBVElDYCBvciBgSUVFRTgwMjExX1NNUFNfRFlOQU1JQ2AuIFRoaXMgaXMgcHVyZWx5IGRlYWQgY29kZSByZW1vdmFsIGFuZCBkb2VzIG5vdCBhbHRlciB0aGUgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgYSBsb2NhbCB2YXJpYWJsZSBgbWltb19wc2AgdGhhdCB3YXMgaGFyZGNvZGVkIHRvIGBJRUVFODAyMTFfU01QU19PRkZgIGFuZCB0aGUgY29ycmVzcG9uZGluZyBkZWFkIGNvZGUgYmxvY2tzIHRoYXQgY2hlY2tlZCBpZiBpdCB3YXMgYElFRUU4MDIxMV9TTVBTX1NUQVRJQ2Agb3IgYElFRUU4MDIxMV9TTVBTX0RZTkFNSUNgLiBUaGlzIGlzIHB1cmVseSBkZWFkIGNvZGUgcmVtb3ZhbCBhbmQgZG9lcyBub3QgYWx0ZXIgdGhlIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE3OjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNzoyODoyOC43NjQxOTI5MjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjY1MDQxMjg1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgYSBsb2NhbCB2YXJpYWJsZSBgbWltb19wc2AgdGhhdCB3YXMgaGFyZGNvZGVkIHRvIGBJRUVFODAyMTFfU01QU19PRkZgIGFuZCB0aGUgY29ycmVzcG9uZGluZyBkZWFkIGNvZGUgYmxvY2tzIHRoYXQgY2hlY2tlZCBpZiBpdCB3YXMgYElFRUU4MDIxMV9TTVBTX1NUQVRJQ2Agb3IgYElFRUU4MDIxMV9TTVBTX0RZTkFNSUNgLiBUaGlzIGlzIHB1cmVseSBkZWFkIGNvZGUgcmVtb3ZhbCBhbmQgZG9lcyBub3QgYWx0ZXIgdGhlIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNzoyODoyOC43NjQxOTgzMDdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzM0NjQwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDhhZGU4OGMyYWVhZDU0MjIwZjI4NTg0YWM5N2E5YTY2NGRmMDAxNmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTc6Mjg6MjcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxODhlZS9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxODhlZS9ody5jXFxuaW5kZXggNTNjMzJlMWRlN2U0Ny4uOTEwZjgzNzJkODNkMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE4OGVlL2h3LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE4OGVlL2h3LmNcXG5AQCAtMTk3MCw3ICsxOTcwLDYgQEAgc3RhdGljIHZvaWQgcnRsODhlZV91cGRhdGVfaGFsX3JhdGVfdGFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdHUzMiByYXRyX3ZhbHVlO1xcbiBcXHR1OCByYXRyX2luZGV4ID0gMDtcXG4gXFx0dTggYl9ubW9kZSA9IG1hYy1cXHUwMDNlaHRfZW5hYmxlO1xcbi1cXHQvKnU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7Ki9cXG4gXFx0dTE2IHNob3J0Z2lfcmF0ZTtcXG4gXFx0dTMyIHRtcF9yYXRyX3ZhbHVlO1xcbiBcXHR1OCBjdXJ0eGJ3XzQwbWh6ID0gbWFjLVxcdTAwM2Vid180MDtcXG5AQCAtMjA3MCw3ICsyMDY5LDYgQEAgc3RhdGljIHZvaWQgcnRsODhlZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0Ym9vbCBiX3Nob3J0Z2kgPSBmYWxzZTtcXG4gXFx0dTggcmF0ZV9tYXNrWzVdO1xcbiBcXHR1OCBtYWNpZCA9IDA7XFxuLVxcdC8qdTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsqL1xcbiBcXG4gXFx0c3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKilzdGEtXFx1MDAzZWRydl9wcml2O1xcbiBcXHR3aXJlbGVzc21vZGUgPSBzdGFfZW50cnktXFx1MDAzZXdpcmVsZXNzX21vZGU7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyZWUvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyZWUvaHcuY1xcbmluZGV4IDQ4YTNjOTQ2MDZiZWYuLjAwMDQ4OTEyOTAwYzQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJlZS9ody5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJlZS9ody5jXFxuQEAgLTIyNjYsNyArMjI2Niw2IEBAIHN0YXRpYyB2b2lkIHJ0bDkyZWVfdXBkYXRlX2hhbF9yYXRlX21hc2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdGJvb2wgYl9zaG9ydGdpID0gZmFsc2U7XFxuIFxcdHU4IHJhdGVfbWFza1s3XSA9IHswfTtcXG4gXFx0dTggbWFjaWQgPSAwO1xcbi1cXHQvKnU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7Ki9cXG4gXFx0c3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKilzdGEtXFx1MDAzZWRydl9wcml2O1xcbiBcXHR3aXJlbGVzc21vZGUgPSBzdGFfZW50cnktXFx1MDAzZXdpcmVsZXNzX21vZGU7XFxuIFxcdGlmIChtYWMtXFx1MDAzZW9wbW9kZSA9PSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OIHx8XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyc2UvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyc2UvaHcuY1xcbmluZGV4IGU1Nzc1Yjk0ZjA0ZWUuLjZiOWYyNDdkMTFlMGEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJzZS9ody5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJzZS9ody5jXFxuQEAgLTIwMDEsMTAgKzIwMDEsOSBAQCBzdGF0aWMgdm9pZCBydGw5MnNlX3VwZGF0ZV9oYWxfcmF0ZV90YWJsZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0c3RydWN0IHJ0bF9waHkgKnJ0bHBoeSA9IFxcdTAwMjYocnRscHJpdi1cXHUwMDNlcGh5KTtcXG4gXFx0c3RydWN0IHJ0bF9tYWMgKm1hYyA9IHJ0bF9tYWMocnRsX3ByaXYoaHcpKTtcXG4gXFx0c3RydWN0IHJ0bF9oYWwgKnJ0bGhhbCA9IHJ0bF9oYWwocnRsX3ByaXYoaHcpKTtcXG4tXFx0dTMyIHJhdHJfdmFsdWU7XFxuK1xcdHUzMiByYXRyX3ZhbHVlLCByYXRyX21hc2s7XFxuIFxcdHU4IHJhdHJfaW5kZXggPSAwO1xcbiBcXHR1OCBubW9kZSA9IG1hYy1cXHUwMDNlaHRfZW5hYmxlO1xcbi1cXHR1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGO1xcbiBcXHR1MTYgc2hvcnRnaV9yYXRlID0gMDtcXG4gXFx0dTMyIHRtcF9yYXRyX3ZhbHVlID0gMDtcXG4gXFx0dTggY3VydHhid180MG1oeiA9IG1hYy1cXHUwMDNlYndfNDA7XFxuQEAgLTIwMzIsMjYgKzIwMzEsMjEgQEAgc3RhdGljIHZvaWQgcnRsOTJzZV91cGRhdGVfaGFsX3JhdGVfdGFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdGNhc2UgV0lSRUxFU1NfTU9ERV9OXzI0RzpcXG4gXFx0Y2FzZSBXSVJFTEVTU19NT0RFX05fNUc6XFxuIFxcdFxcdG5tb2RlID0gMTtcXG4tXFx0XFx0aWYgKG1pbW9fcHMgPT0gSUVFRTgwMjExX1NNUFNfU1RBVElDKSB7XFxuLVxcdFxcdFxcdHJhdHJfdmFsdWUgXFx1MDAyNj0gMHgwMDA3RjAwNTtcXG4tXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0dTMyIHJhdHJfbWFzaztcXG4tXFxuLVxcdFxcdFxcdGlmIChnZXRfcmZfdHlwZShydGxwaHkpID09IFJGXzFUMlIgfHxcXG4tXFx0XFx0XFx0ICAgIGdldF9yZl90eXBlKHJ0bHBoeSkgPT0gUkZfMVQxUikge1xcbi1cXHRcXHRcXHRcXHRpZiAoY3VydHhid180MG1oeilcXG4tXFx0XFx0XFx0XFx0XFx0cmF0cl9tYXNrID0gMHgwMDBmZjAxNTtcXG4tXFx0XFx0XFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRcXHRcXHRyYXRyX21hc2sgPSAweDAwMGZmMDA1O1xcbi1cXHRcXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRcXHRpZiAoY3VydHhid180MG1oeilcXG4tXFx0XFx0XFx0XFx0XFx0cmF0cl9tYXNrID0gMHgwZjBmZjAxNTtcXG4tXFx0XFx0XFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRcXHRcXHRyYXRyX21hc2sgPSAweDBmMGZmMDA1O1xcbi1cXHRcXHRcXHR9XFxuIFxcbi1cXHRcXHRcXHRyYXRyX3ZhbHVlIFxcdTAwMjY9IHJhdHJfbWFzaztcXG4rXFx0XFx0aWYgKGdldF9yZl90eXBlKHJ0bHBoeSkgPT0gUkZfMVQyUiB8fFxcbitcXHRcXHQgICAgZ2V0X3JmX3R5cGUocnRscGh5KSA9PSBSRl8xVDFSKSB7XFxuK1xcdFxcdFxcdGlmIChjdXJ0eGJ3XzQwbWh6KVxcbitcXHRcXHRcXHRcXHRyYXRyX21hc2sgPSAweDAwMGZmMDE1O1xcbitcXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFxcdHJhdHJfbWFzayA9IDB4MDAwZmYwMDU7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGlmIChjdXJ0eGJ3XzQwbWh6KVxcbitcXHRcXHRcXHRcXHRyYXRyX21hc2sgPSAweDBmMGZmMDE1O1xcbitcXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFxcdHJhdHJfbWFzayA9IDB4MGYwZmYwMDU7XFxuIFxcdFxcdH1cXG4rXFxuK1xcdFxcdHJhdHJfdmFsdWUgXFx1MDAyNj0gcmF0cl9tYXNrO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0aWYgKHJ0bHBoeS1cXHUwMDNlcmZfdHlwZSA9PSBSRl8xVDJSKVxcbkBAIC0yMTE5LDcgKzIxMTMsNiBAQCBzdGF0aWMgdm9pZCBydGw5MnNlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXHR1MzIgYmFuZCA9IDA7XFxuIFxcdGJvb2wgYm11bHRpY2FzdCA9IGZhbHNlO1xcbiBcXHR1OCBtYWNpZCA9IDA7XFxuLVxcdHU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7XFxuIFxcbiBcXHRzdGFfZW50cnkgPSAoc3RydWN0IHJ0bF9zdGFfaW5mbyAqKSBzdGEtXFx1MDAzZWRydl9wcml2O1xcbiBcXHR3aXJlbGVzc21vZGUgPSBzdGFfZW50cnktXFx1MDAzZXdpcmVsZXNzX21vZGU7XFxuQEAgLTIxNjcsNDEgKzIxNjAsMzIgQEAgc3RhdGljIHZvaWQgcnRsOTJzZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0XFx0YmFuZCB8PSAoV0lSRUxFU1NfMTFOIHwgV0lSRUxFU1NfMTFHIHwgV0lSRUxFU1NfMTFCKTtcXG4gXFx0XFx0cmF0cl9pbmRleCA9IFJBVFJfSU5YX1dJUkVMRVNTX05HQjtcXG4gXFxuLVxcdFxcdGlmIChtaW1vX3BzID09IElFRUU4MDIxMV9TTVBTX1NUQVRJQykge1xcbi1cXHRcXHRcXHRpZiAocnNzaV9sZXZlbCA9PSAxKVxcbi1cXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDAwMDcwMDAwO1xcbi1cXHRcXHRcXHRlbHNlIGlmIChyc3NpX2xldmVsID09IDIpXFxuLVxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwN2YwMDA7XFxuLVxcdFxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwMDA3ZjAwNTtcXG4rXFx0XFx0aWYgKHJ0bHBoeS1cXHUwMDNlcmZfdHlwZSA9PSBSRl8xVDJSIHx8XFxuK1xcdFxcdCAgICBydGxwaHktXFx1MDAzZXJmX3R5cGUgPT0gUkZfMVQxUikge1xcbitcXHRcXHRcXHRpZiAocnNzaV9sZXZlbCA9PSAxKSB7XFxuK1xcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwZjAwMDA7XFxuK1xcdFxcdFxcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAzKSB7XFxuK1xcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwZmMwMDA7XFxuK1xcdFxcdFxcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSA1KSB7XFxuK1xcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwZmYwMDA7XFxuK1xcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdGlmIChjdXJ0eGJ3XzQwbWh6KVxcbitcXHRcXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDAwMGZmMDE1O1xcbitcXHRcXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwZmYwMDU7XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0aWYgKHJ0bHBoeS1cXHUwMDNlcmZfdHlwZSA9PSBSRl8xVDJSIHx8XFxuLVxcdFxcdFxcdFxcdHJ0bHBoeS1cXHUwMDNlcmZfdHlwZSA9PSBSRl8xVDFSKSB7XFxuLVxcdFxcdFxcdFxcdGlmIChyc3NpX2xldmVsID09IDEpIHtcXG4tXFx0XFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwMDBmMDAwMDtcXG4tXFx0XFx0XFx0XFx0fSBlbHNlIGlmIChyc3NpX2xldmVsID09IDMpIHtcXG4tXFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwMDBmYzAwMDtcXG4tXFx0XFx0XFx0XFx0fSBlbHNlIGlmIChyc3NpX2xldmVsID09IDUpIHtcXG4tXFx0XFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwMDBmZjAwMDtcXG4tXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0XFx0XFx0aWYgKGN1cnR4YndfNDBtaHopXFxuLVxcdFxcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwZmYwMTU7XFxuLVxcdFxcdFxcdFxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwMDBmZjAwNTtcXG4tXFx0XFx0XFx0XFx0fVxcbitcXHRcXHRcXHRpZiAocnNzaV9sZXZlbCA9PSAxKSB7XFxuK1xcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MGY4ZjAwMDA7XFxuK1xcdFxcdFxcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAzKSB7XFxuK1xcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MGY4ZmMwMDA7XFxuK1xcdFxcdFxcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSA1KSB7XFxuK1xcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MGY4ZmYwMDA7XFxuIFxcdFxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdFxcdGlmIChyc3NpX2xldmVsID09IDEpIHtcXG4tXFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwZjhmMDAwMDtcXG4tXFx0XFx0XFx0XFx0fSBlbHNlIGlmIChyc3NpX2xldmVsID09IDMpIHtcXG4tXFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwZjhmYzAwMDtcXG4tXFx0XFx0XFx0XFx0fSBlbHNlIGlmIChyc3NpX2xldmVsID09IDUpIHtcXG4tXFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwZjhmZjAwMDtcXG4tXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0XFx0XFx0aWYgKGN1cnR4YndfNDBtaHopXFxuLVxcdFxcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MGY4ZmYwMTU7XFxuLVxcdFxcdFxcdFxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwZjhmZjAwNTtcXG4tXFx0XFx0XFx0XFx0fVxcbitcXHRcXHRcXHRcXHRpZiAoY3VydHhid180MG1oeilcXG4rXFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwZjhmZjAxNTtcXG4rXFx0XFx0XFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDBmOGZmMDA1O1xcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4NzIzYWUvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4NzIzYWUvaHcuY1xcbmluZGV4IGJkNDVkOWJkNDBiYjcuLjJlNTBmNWMyNGRmODEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDg3MjNhZS9ody5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDg3MjNhZS9ody5jXFxuQEAgLTE5MjQsNyArMTkyNCw2IEBAIHN0YXRpYyB2b2lkIHJ0bDg3MjNlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXHRib29sIHNob3J0Z2kgPSBmYWxzZTtcXG4gXFx0dTggcmF0ZV9tYXNrWzVdO1xcbiBcXHR1OCBtYWNpZCA9IDA7XFxuLVxcdC8qdTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsqL1xcbiBcXG4gXFx0c3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKilzdGEtXFx1MDAzZWRydl9wcml2O1xcbiBcXHR3aXJlbGVzc21vZGUgPSBzdGFfZW50cnktXFx1MDAzZXdpcmVsZXNzX21vZGU7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4ODIxYWUvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4ODIxYWUvaHcuY1xcbmluZGV4IDFiYTUzZTY3MTIwN2UuLjMxZjQ5OWJlOTlhMzggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDg4MjFhZS9ody5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDg4MjFhZS9ody5jXFxuQEAgLTM0NjgsNyArMzQ2OCw2IEBAIHN0YXRpYyB2b2lkIHJ0bDg4MjFhZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0Ym9vbCBiX3Nob3J0Z2kgPSBmYWxzZTtcXG4gXFx0dTggcmF0ZV9tYXNrWzddO1xcbiBcXHR1OCBtYWNpZCA9IDA7XFxuLVxcdHU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7XFxuIFxcdHU4IHJmX3R5cGU7XFxuIFxcbiBcXHRzdGFfZW50cnkgPSAoc3RydWN0IHJ0bF9zdGFfaW5mbyAqKXN0YS1cXHUwMDNlZHJ2X3ByaXY7XFxuQEAgLTM1MzUsNDcgKzM1MzQsMzcgQEAgc3RhdGljIHZvaWQgcnRsODgyMWFlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdHJhdHJfaW5kZXggPSBSQVRSX0lOWF9XSVJFTEVTU19ORztcXG4gXFxuLVxcdFxcdGlmIChtaW1vX3BzID09IElFRUU4MDIxMV9TTVBTX1NUQVRJQ1xcbi1cXHRcXHRcXHR8fCBtaW1vX3BzID09IElFRUU4MDIxMV9TTVBTX0RZTkFNSUMpIHtcXG4tXFx0XFx0XFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcXG4tXFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwMDBmMDAwMDtcXG4tXFx0XFx0XFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxcbi1cXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDAwMGZmMDAwO1xcbi1cXHRcXHRcXHRlbHNlXFxuLVxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwZmYwMDU7XFxuK1xcdFxcdGlmIChyZl90eXBlID09IFJGXzFUMVIpIHtcXG4rXFx0XFx0XFx0aWYgKGN1cnR4YndfNDBtaHopIHtcXG4rXFx0XFx0XFx0XFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcXG4rXFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwMDBmMDAwMDtcXG4rXFx0XFx0XFx0XFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxcbitcXHRcXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDAwMGZmMDAwO1xcbitcXHRcXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwZmYwMTU7XFxuK1xcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdGlmIChyc3NpX2xldmVsID09IDEpXFxuK1xcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwZjAwMDA7XFxuK1xcdFxcdFxcdFxcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcXG4rXFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwMDBmZjAwMDtcXG4rXFx0XFx0XFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDAwMGZmMDA1O1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdGlmIChyZl90eXBlID09IFJGXzFUMVIpIHtcXG4tXFx0XFx0XFx0XFx0aWYgKGN1cnR4YndfNDBtaHopIHtcXG4tXFx0XFx0XFx0XFx0XFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcXG4tXFx0XFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwMDBmMDAwMDtcXG4tXFx0XFx0XFx0XFx0XFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxcbi1cXHRcXHRcXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDAwMGZmMDAwO1xcbi1cXHRcXHRcXHRcXHRcXHRlbHNlXFxuLVxcdFxcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwZmYwMTU7XFxuLVxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdFxcdFxcdGlmIChyc3NpX2xldmVsID09IDEpXFxuLVxcdFxcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MDAwZjAwMDA7XFxuLVxcdFxcdFxcdFxcdFxcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcXG4tXFx0XFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwMDBmZjAwMDtcXG4tXFx0XFx0XFx0XFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDAwMGZmMDA1O1xcbi1cXHRcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdGlmIChjdXJ0eGJ3XzQwbWh6KSB7XFxuK1xcdFxcdFxcdFxcdGlmIChyc3NpX2xldmVsID09IDEpXFxuK1xcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MGZmZjAwMDA7XFxuK1xcdFxcdFxcdFxcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcXG4rXFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwZmZmZjAwMDtcXG4rXFx0XFx0XFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDBmZmZmMDE1O1xcbiBcXHRcXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRcXHRpZiAoY3VydHhid180MG1oeikge1xcbi1cXHRcXHRcXHRcXHRcXHRpZiAocnNzaV9sZXZlbCA9PSAxKVxcbi1cXHRcXHRcXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDBmZmYwMDAwO1xcbi1cXHRcXHRcXHRcXHRcXHRlbHNlIGlmIChyc3NpX2xldmVsID09IDIpXFxuLVxcdFxcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MGZmZmYwMDA7XFxuLVxcdFxcdFxcdFxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwZmZmZjAxNTtcXG4tXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0XFx0XFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcXG4tXFx0XFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwZmZmMDAwMDtcXG4tXFx0XFx0XFx0XFx0XFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxcbi1cXHRcXHRcXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDBmZmZmMDAwO1xcbi1cXHRcXHRcXHRcXHRcXHRlbHNlXFxuLVxcdFxcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MGZmZmYwMDU7XFxuLVxcdFxcdFxcdFxcdH1cXG4rXFx0XFx0XFx0XFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcXG4rXFx0XFx0XFx0XFx0XFx0cmF0cl9iaXRtYXAgXFx1MDAyNj0gMHgwZmZmMDAwMDtcXG4rXFx0XFx0XFx0XFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxcbitcXHRcXHRcXHRcXHRcXHRyYXRyX2JpdG1hcCBcXHUwMDI2PSAweDBmZmZmMDAwO1xcbitcXHRcXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFxcdFxcdHJhdHJfYml0bWFwIFxcdTAwMjY9IDB4MGZmZmYwMDU7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbiBcXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTc6Mjg6MjkuMjAyMzIyNDg0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjYyMTIyNzA1NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgYSBsb2NhbCB2YXJpYWJsZSBgbWltb19wc2AgdGhhdCB3YXMgaGFyZGNvZGVkIHRvIGBJRUVFODAyMTFfU01QU19PRkZgIGFuZCB0aGUgY29ycmVzcG9uZGluZyBkZWFkIGNvZGUgYmxvY2tzIHRoYXQgY2hlY2tlZCBpZiBpdCB3YXMgYElFRUU4MDIxMV9TTVBTX1NUQVRJQ2Agb3IgYElFRUU4MDIxMV9TTVBTX0RZTkFNSUNgLiBUaGlzIGlzIHB1cmVseSBkZWFkIGNvZGUgcmVtb3ZhbCBhbmQgZG9lcyBub3QgYWx0ZXIgdGhlIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4YWRlODhjMmFlYWQ1NDIyMGYyODU4NGFjOTdhOWE2NjRkZjAwMTZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTc6Mjg6MjcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE4OGVlL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE4OGVlL2h3LmNcbmluZGV4IDUzYzMyZTFkZTdlNDcuLjkxMGY4MzcyZDgzZDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE4OGVlL2h3LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTg4ZWUvaHcuY1xuQEAgLTE5NzAsNyArMTk3MCw2IEBAIHN0YXRpYyB2b2lkIHJ0bDg4ZWVfdXBkYXRlX2hhbF9yYXRlX3RhYmxlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0dTMyIHJhdHJfdmFsdWU7XG4gXHR1OCByYXRyX2luZGV4ID0gMDtcbiBcdHU4IGJfbm1vZGUgPSBtYWMtXHUwMDNlaHRfZW5hYmxlO1xuLVx0Lyp1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGOyovXG4gXHR1MTYgc2hvcnRnaV9yYXRlO1xuIFx0dTMyIHRtcF9yYXRyX3ZhbHVlO1xuIFx0dTggY3VydHhid180MG1oeiA9IG1hYy1cdTAwM2Vid180MDtcbkBAIC0yMDcwLDcgKzIwNjksNiBAQCBzdGF0aWMgdm9pZCBydGw4OGVlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0Ym9vbCBiX3Nob3J0Z2kgPSBmYWxzZTtcbiBcdHU4IHJhdGVfbWFza1s1XTtcbiBcdHU4IG1hY2lkID0gMDtcbi1cdC8qdTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsqL1xuIFxuIFx0c3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKilzdGEtXHUwMDNlZHJ2X3ByaXY7XG4gXHR3aXJlbGVzc21vZGUgPSBzdGFfZW50cnktXHUwMDNld2lyZWxlc3NfbW9kZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmVlL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmVlL2h3LmNcbmluZGV4IDQ4YTNjOTQ2MDZiZWYuLjAwMDQ4OTEyOTAwYzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmVlL2h3LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyZWUvaHcuY1xuQEAgLTIyNjYsNyArMjI2Niw2IEBAIHN0YXRpYyB2b2lkIHJ0bDkyZWVfdXBkYXRlX2hhbF9yYXRlX21hc2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRib29sIGJfc2hvcnRnaSA9IGZhbHNlO1xuIFx0dTggcmF0ZV9tYXNrWzddID0gezB9O1xuIFx0dTggbWFjaWQgPSAwO1xuLVx0Lyp1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGOyovXG4gXHRzdGFfZW50cnkgPSAoc3RydWN0IHJ0bF9zdGFfaW5mbyAqKXN0YS1cdTAwM2VkcnZfcHJpdjtcbiBcdHdpcmVsZXNzbW9kZSA9IHN0YV9lbnRyeS1cdTAwM2V3aXJlbGVzc19tb2RlO1xuIFx0aWYgKG1hYy1cdTAwM2VvcG1vZGUgPT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTiB8fFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyc2UvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyc2UvaHcuY1xuaW5kZXggZTU3NzViOTRmMDRlZS4uNmI5ZjI0N2QxMWUwYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyc2UvaHcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJzZS9ody5jXG5AQCAtMjAwMSwxMCArMjAwMSw5IEBAIHN0YXRpYyB2b2lkIHJ0bDkyc2VfdXBkYXRlX2hhbF9yYXRlX3RhYmxlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0c3RydWN0IHJ0bF9waHkgKnJ0bHBoeSA9IFx1MDAyNihydGxwcml2LVx1MDAzZXBoeSk7XG4gXHRzdHJ1Y3QgcnRsX21hYyAqbWFjID0gcnRsX21hYyhydGxfcHJpdihodykpO1xuIFx0c3RydWN0IHJ0bF9oYWwgKnJ0bGhhbCA9IHJ0bF9oYWwocnRsX3ByaXYoaHcpKTtcbi1cdHUzMiByYXRyX3ZhbHVlO1xuK1x0dTMyIHJhdHJfdmFsdWUsIHJhdHJfbWFzaztcbiBcdHU4IHJhdHJfaW5kZXggPSAwO1xuIFx0dTggbm1vZGUgPSBtYWMtXHUwMDNlaHRfZW5hYmxlO1xuLVx0dTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjtcbiBcdHUxNiBzaG9ydGdpX3JhdGUgPSAwO1xuIFx0dTMyIHRtcF9yYXRyX3ZhbHVlID0gMDtcbiBcdHU4IGN1cnR4YndfNDBtaHogPSBtYWMtXHUwMDNlYndfNDA7XG5AQCAtMjAzMiwyNiArMjAzMSwyMSBAQCBzdGF0aWMgdm9pZCBydGw5MnNlX3VwZGF0ZV9oYWxfcmF0ZV90YWJsZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdGNhc2UgV0lSRUxFU1NfTU9ERV9OXzI0RzpcbiBcdGNhc2UgV0lSRUxFU1NfTU9ERV9OXzVHOlxuIFx0XHRubW9kZSA9IDE7XG4tXHRcdGlmIChtaW1vX3BzID09IElFRUU4MDIxMV9TTVBTX1NUQVRJQykge1xuLVx0XHRcdHJhdHJfdmFsdWUgXHUwMDI2PSAweDAwMDdGMDA1O1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdHUzMiByYXRyX21hc2s7XG4tXG4tXHRcdFx0aWYgKGdldF9yZl90eXBlKHJ0bHBoeSkgPT0gUkZfMVQyUiB8fFxuLVx0XHRcdCAgICBnZXRfcmZfdHlwZShydGxwaHkpID09IFJGXzFUMVIpIHtcbi1cdFx0XHRcdGlmIChjdXJ0eGJ3XzQwbWh6KVxuLVx0XHRcdFx0XHRyYXRyX21hc2sgPSAweDAwMGZmMDE1O1xuLVx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRyYXRyX21hc2sgPSAweDAwMGZmMDA1O1xuLVx0XHRcdH0gZWxzZSB7XG4tXHRcdFx0XHRpZiAoY3VydHhid180MG1oeilcbi1cdFx0XHRcdFx0cmF0cl9tYXNrID0gMHgwZjBmZjAxNTtcbi1cdFx0XHRcdGVsc2Vcbi1cdFx0XHRcdFx0cmF0cl9tYXNrID0gMHgwZjBmZjAwNTtcbi1cdFx0XHR9XG4gXG4tXHRcdFx0cmF0cl92YWx1ZSBcdTAwMjY9IHJhdHJfbWFzaztcbitcdFx0aWYgKGdldF9yZl90eXBlKHJ0bHBoeSkgPT0gUkZfMVQyUiB8fFxuK1x0XHQgICAgZ2V0X3JmX3R5cGUocnRscGh5KSA9PSBSRl8xVDFSKSB7XG4rXHRcdFx0aWYgKGN1cnR4YndfNDBtaHopXG4rXHRcdFx0XHRyYXRyX21hc2sgPSAweDAwMGZmMDE1O1xuK1x0XHRcdGVsc2VcbitcdFx0XHRcdHJhdHJfbWFzayA9IDB4MDAwZmYwMDU7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0aWYgKGN1cnR4YndfNDBtaHopXG4rXHRcdFx0XHRyYXRyX21hc2sgPSAweDBmMGZmMDE1O1xuK1x0XHRcdGVsc2VcbitcdFx0XHRcdHJhdHJfbWFzayA9IDB4MGYwZmYwMDU7XG4gXHRcdH1cbitcbitcdFx0cmF0cl92YWx1ZSBcdTAwMjY9IHJhdHJfbWFzaztcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHRpZiAocnRscGh5LVx1MDAzZXJmX3R5cGUgPT0gUkZfMVQyUilcbkBAIC0yMTE5LDcgKzIxMTMsNiBAQCBzdGF0aWMgdm9pZCBydGw5MnNlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0dTMyIGJhbmQgPSAwO1xuIFx0Ym9vbCBibXVsdGljYXN0ID0gZmFsc2U7XG4gXHR1OCBtYWNpZCA9IDA7XG4tXHR1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGO1xuIFxuIFx0c3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKikgc3RhLVx1MDAzZWRydl9wcml2O1xuIFx0d2lyZWxlc3Ntb2RlID0gc3RhX2VudHJ5LVx1MDAzZXdpcmVsZXNzX21vZGU7XG5AQCAtMjE2Nyw0MSArMjE2MCwzMiBAQCBzdGF0aWMgdm9pZCBydGw5MnNlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRiYW5kIHw9IChXSVJFTEVTU18xMU4gfCBXSVJFTEVTU18xMUcgfCBXSVJFTEVTU18xMUIpO1xuIFx0XHRyYXRyX2luZGV4ID0gUkFUUl9JTlhfV0lSRUxFU1NfTkdCO1xuIFxuLVx0XHRpZiAobWltb19wcyA9PSBJRUVFODAyMTFfU01QU19TVEFUSUMpIHtcbi1cdFx0XHRpZiAocnNzaV9sZXZlbCA9PSAxKVxuLVx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMDcwMDAwO1xuLVx0XHRcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcbi1cdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDA3ZjAwMDtcbi1cdFx0XHRlbHNlXG4tXHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwN2YwMDU7XG4rXHRcdGlmIChydGxwaHktXHUwMDNlcmZfdHlwZSA9PSBSRl8xVDJSIHx8XG4rXHRcdCAgICBydGxwaHktXHUwMDNlcmZfdHlwZSA9PSBSRl8xVDFSKSB7XG4rXHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSkge1xuK1x0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGYwMDAwO1xuK1x0XHRcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAzKSB7XG4rXHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZmMwMDA7XG4rXHRcdFx0fSBlbHNlIGlmIChyc3NpX2xldmVsID09IDUpIHtcbitcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAwMDtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopXG4rXHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAxNTtcbitcdFx0XHRcdGVsc2VcbitcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDA1O1xuK1x0XHRcdH1cbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRpZiAocnRscGh5LVx1MDAzZXJmX3R5cGUgPT0gUkZfMVQyUiB8fFxuLVx0XHRcdFx0cnRscGh5LVx1MDAzZXJmX3R5cGUgPT0gUkZfMVQxUikge1xuLVx0XHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSkge1xuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmMDAwMDtcbi1cdFx0XHRcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAzKSB7XG4tXHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmYzAwMDtcbi1cdFx0XHRcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSA1KSB7XG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDAwO1xuLVx0XHRcdFx0fSBlbHNlIHtcbi1cdFx0XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDE1O1xuLVx0XHRcdFx0XHRlbHNlXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGZmMDA1O1xuLVx0XHRcdFx0fVxuK1x0XHRcdGlmIChyc3NpX2xldmVsID09IDEpIHtcbitcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZjhmMDAwMDtcbitcdFx0XHR9IGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMykge1xuK1x0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZjMDAwO1xuK1x0XHRcdH0gZWxzZSBpZiAocnNzaV9sZXZlbCA9PSA1KSB7XG4rXHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGY4ZmYwMDA7XG4gXHRcdFx0fSBlbHNlIHtcbi1cdFx0XHRcdGlmIChyc3NpX2xldmVsID09IDEpIHtcbi1cdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGYwMDAwO1xuLVx0XHRcdFx0fSBlbHNlIGlmIChyc3NpX2xldmVsID09IDMpIHtcbi1cdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZjMDAwO1xuLVx0XHRcdFx0fSBlbHNlIGlmIChyc3NpX2xldmVsID09IDUpIHtcbi1cdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZmMDAwO1xuLVx0XHRcdFx0fSBlbHNlIHtcbi1cdFx0XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZmMDE1O1xuLVx0XHRcdFx0XHRlbHNlXG4tXHRcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZmMDA1O1xuLVx0XHRcdFx0fVxuK1x0XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopXG4rXHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZjhmZjAxNTtcbitcdFx0XHRcdGVsc2VcbitcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmOGZmMDA1O1xuIFx0XHRcdH1cbiBcdFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4NzIzYWUvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4NzIzYWUvaHcuY1xuaW5kZXggYmQ0NWQ5YmQ0MGJiNy4uMmU1MGY1YzI0ZGY4MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4NzIzYWUvaHcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDg3MjNhZS9ody5jXG5AQCAtMTkyNCw3ICsxOTI0LDYgQEAgc3RhdGljIHZvaWQgcnRsODcyM2VfdXBkYXRlX2hhbF9yYXRlX21hc2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRib29sIHNob3J0Z2kgPSBmYWxzZTtcbiBcdHU4IHJhdGVfbWFza1s1XTtcbiBcdHU4IG1hY2lkID0gMDtcbi1cdC8qdTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjsqL1xuIFxuIFx0c3RhX2VudHJ5ID0gKHN0cnVjdCBydGxfc3RhX2luZm8gKilzdGEtXHUwMDNlZHJ2X3ByaXY7XG4gXHR3aXJlbGVzc21vZGUgPSBzdGFfZW50cnktXHUwMDNld2lyZWxlc3NfbW9kZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODgyMWFlL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODgyMWFlL2h3LmNcbmluZGV4IDFiYTUzZTY3MTIwN2UuLjMxZjQ5OWJlOTlhMzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODgyMWFlL2h3LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4ODIxYWUvaHcuY1xuQEAgLTM0NjgsNyArMzQ2OCw2IEBAIHN0YXRpYyB2b2lkIHJ0bDg4MjFhZV91cGRhdGVfaGFsX3JhdGVfbWFzayhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdGJvb2wgYl9zaG9ydGdpID0gZmFsc2U7XG4gXHR1OCByYXRlX21hc2tbN107XG4gXHR1OCBtYWNpZCA9IDA7XG4tXHR1OCBtaW1vX3BzID0gSUVFRTgwMjExX1NNUFNfT0ZGO1xuIFx0dTggcmZfdHlwZTtcbiBcbiBcdHN0YV9lbnRyeSA9IChzdHJ1Y3QgcnRsX3N0YV9pbmZvICopc3RhLVx1MDAzZWRydl9wcml2O1xuQEAgLTM1MzUsNDcgKzM1MzQsMzcgQEAgc3RhdGljIHZvaWQgcnRsODgyMWFlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRlbHNlXG4gXHRcdFx0cmF0cl9pbmRleCA9IFJBVFJfSU5YX1dJUkVMRVNTX05HO1xuIFxuLVx0XHRpZiAobWltb19wcyA9PSBJRUVFODAyMTFfU01QU19TVEFUSUNcbi1cdFx0XHR8fCBtaW1vX3BzID09IElFRUU4MDIxMV9TTVBTX0RZTkFNSUMpIHtcbi1cdFx0XHRpZiAocnNzaV9sZXZlbCA9PSAxKVxuLVx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGYwMDAwO1xuLVx0XHRcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcbi1cdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAwMDtcbi1cdFx0XHRlbHNlXG4tXHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZmYwMDU7XG4rXHRcdGlmIChyZl90eXBlID09IFJGXzFUMVIpIHtcbitcdFx0XHRpZiAoY3VydHhid180MG1oeikge1xuK1x0XHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcbitcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGYwMDAwO1xuK1x0XHRcdFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxuK1x0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZmYwMDA7XG4rXHRcdFx0XHRlbHNlXG4rXHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAxNTtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcbitcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDAwMGYwMDAwO1xuK1x0XHRcdFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxuK1x0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZmYwMDA7XG4rXHRcdFx0XHRlbHNlXG4rXHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAwNTtcbitcdFx0XHR9XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0aWYgKHJmX3R5cGUgPT0gUkZfMVQxUikge1xuLVx0XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopIHtcbi1cdFx0XHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcbi1cdFx0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZjAwMDA7XG4tXHRcdFx0XHRcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcbi1cdFx0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZmYwMDA7XG4tXHRcdFx0XHRcdGVsc2Vcbi1cdFx0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MDAwZmYwMTU7XG4tXHRcdFx0XHR9IGVsc2Uge1xuLVx0XHRcdFx0XHRpZiAocnNzaV9sZXZlbCA9PSAxKVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmMDAwMDtcbi1cdFx0XHRcdFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAwMDtcbi1cdFx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwMDBmZjAwNTtcbi1cdFx0XHRcdH1cbitcdFx0XHRpZiAoY3VydHhid180MG1oeikge1xuK1x0XHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcbitcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmZmYwMDAwO1xuK1x0XHRcdFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxuK1x0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGZmZmYwMDA7XG4rXHRcdFx0XHRlbHNlXG4rXHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZmZmZjAxNTtcbiBcdFx0XHR9IGVsc2Uge1xuLVx0XHRcdFx0aWYgKGN1cnR4YndfNDBtaHopIHtcbi1cdFx0XHRcdFx0aWYgKHJzc2lfbGV2ZWwgPT0gMSlcbi1cdFx0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGZmZjAwMDA7XG4tXHRcdFx0XHRcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcbi1cdFx0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGZmZmYwMDA7XG4tXHRcdFx0XHRcdGVsc2Vcbi1cdFx0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGZmZmYwMTU7XG4tXHRcdFx0XHR9IGVsc2Uge1xuLVx0XHRcdFx0XHRpZiAocnNzaV9sZXZlbCA9PSAxKVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZmZmMDAwMDtcbi1cdFx0XHRcdFx0ZWxzZSBpZiAocnNzaV9sZXZlbCA9PSAyKVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZmZmZjAwMDtcbi1cdFx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZmZmZjAwNTtcbi1cdFx0XHRcdH1cbitcdFx0XHRcdGlmIChyc3NpX2xldmVsID09IDEpXG4rXHRcdFx0XHRcdHJhdHJfYml0bWFwIFx1MDAyNj0gMHgwZmZmMDAwMDtcbitcdFx0XHRcdGVsc2UgaWYgKHJzc2lfbGV2ZWwgPT0gMilcbitcdFx0XHRcdFx0cmF0cl9iaXRtYXAgXHUwMDI2PSAweDBmZmZmMDAwO1xuK1x0XHRcdFx0ZWxzZVxuK1x0XHRcdFx0XHRyYXRyX2JpdG1hcCBcdTAwMjY9IDB4MGZmZmYwMDU7XG4gXHRcdFx0fVxuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTc6Mjg6MjkuMjAyMzIzOTE0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA3MDczMjA4OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEZWFkIENvZGUgUmVtb3ZhbCBpbiB0aGUgcnRsd2lmaSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQncyBjbGVhbmluZyB1cCB0aGUgYHJ0bHdpZmlgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBSZWFsdGVrIHdpcmVsZXNzIGNhcmRzIOKAkyB0aGUgdXN1YWwgc3VzcGVjdHM6IHJ0bDgxODhlZSwgcnRsODE5MmVlLCBydGw4MTkyc2UsIHJ0bDg3MjNhZSwgYW5kIHJ0bDg4MjFhZS4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSByZW1vdmluZyB0aGUgYG1pbW9fcHNgIHZhcmlhYmxlIGFuZCBpdHMgYXNzb2NpYXRlZCBjb25kaXRpb25hbCBibG9ja3MuIEluaXRpYWxseSwgaXQgbG9va2VkIGxpa2UgdGhleSBqdXN0IHJlbW92ZWQgdGhlIHZhcmlhYmxlIGRlZmluaXRpb24sIGJ1dCBpdCdzIG1vcmUgc3BlY2lmaWMsIHRoZXkncmUgdGFraW5nIG91dCBwYXJ0cyB3aGVyZSBgbWltb19wc2AgaXMgY29tcGFyZWQgdG8gYElFRUU4MDIxMV9TTVBTX1NUQVRJQ2AuXG5cbk15IGluaXRpYWwgdGhvdWdodCB3YXMsIFwiSXMgdGhpcyB0cnVseSBkZWFkIGNvZGU/XCIgU2luY2UgYG1pbW9fcHNgIHdhcyBoYXJkY29kZWQgdG8gYElFRUU4MDIxMV9TTVBTX09GRmAsIHdoaWNoIGlzIGVmZmVjdGl2ZWx5IHplcm8sIGFuZCBjb21wYXJpbmcgdG8gYElFRUU4MDIxMV9TTVBTX1NUQVRJQ2AgKHdoaWNoIGlzIG9uZSkuXG5cbkkgd2VudCBpbiB0byBpbnZlc3RpZ2F0ZS4gTGV0J3Mgc2VlLi4uIGluIGBydGw4MTkyc2UvaHcuY2AsIGZvciBleGFtcGxlLCB0aGVyZSdzIGEgc25pcHBldDpcbmBgYGNcbi1cdHU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7XG4uLi5cbi1cdFx0aWYgKG1pbW9fcHMgPT0gSUVFRTgwMjExX1NNUFNfU1RBVElDKSB7XG4tXHRcdFx0cmF0cl92YWx1ZSBcdTAwMjY9IDB4MDAwN0YwMDU7XG4tXHRcdH0gZWxzZSB7XG4uLi5cbmBgYFxuQWgsIHJpZ2h0LiBTaW5jZSBgbWltb19wc2AgaXMgaW5pdGlhbGl6ZWQgdG8gYElFRUU4MDIxMV9TTVBTX09GRmAgKDApLCB0aGUgYGlmYCBjb25kaXRpb24gd291bGQgKmFsd2F5cyogYmUgZmFsc2UuIFRoZSBwYXRjaCBpcyBzZW5zaWJseSByZW1vdmluZyB0aGUgYGlmYCBhbmQga2VlcGluZyB0aGUgYGVsc2VgIGJsb2NrLiBTYW1lIHBhdHRlcm4gZm9yIGBydGw5MnNlX3VwZGF0ZV9oYWxfcmF0ZV9tYXNrYCBhbmQgYHJ0bDg4MjFhZV91cGRhdGVfaGFsX3JhdGVfbWFza2AuIFRoaXMgY29uZmlybXMgdGhlIHJlbW92YWwgaXMgZGVhZCBjb2RlLCBhcyB0aGUgY29uZGl0aW9uIHdhcyBuZXZlciB0cnVlLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBkb3VibGUgY2hlY2sgaG93IGBtaW1vX3BzYCBpcyB1c2VkLiBJcyBpdCBtb2RpZmllZCBhbnl3aGVyZSBiZXR3ZWVuIGl0cyBpbml0aWFsaXphdGlvbiBhbmQgdGhlIGNvbmRpdGlvbmFsIGNoZWNrPyBFeGFtaW5pbmcgdGhlIHJlbGV2YW50IGNvZGUgaW4gYHJ0bDgxOTJzZS9ody5jYCwgYG1pbW9fcHNgIGlzIGRlZmluZWQgbG9jYWxseSBhbmQgcmVtYWlucyB1bmNoYW5nZWQgYmVmb3JlIGl0cyB1c2UgaW4gdGhlIGNvbmRpdGlvbmFsLiBTbyBpdOKAmXMgKnB1cmVseSogZGVhZCBjb2RlIHJlbW92YWwuIE5vIGZ1bmN0aW9uYWwgaW1wYWN0IHdoYXRzb2V2ZXIuXG5cblRoZXJlZm9yZSwgdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHNhZmUgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJIGFtIGdvaW5nIHRvIHF1aWNrbHkgdmVyaWZ5IHRoaXMgdXNpbmcgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIGJ5IGludmVzdGlnYXRpbmcgdGhlIGNvZGUgb2YgYHJ0bDkyc2VfdXBkYXRlX2hhbF9yYXRlX3RhYmxlYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJzZS9ody5jYCBiZWZvcmUgdGhlIHBhdGNoLCBidXQgdGhhdCBpcyBtZXJlbHkgYW4gYWRkaXRpb25hbCBkb3VibGUtY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMzQsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NTksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNzoyODozOS45MDk2NDk0MjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1NDQ2NTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJjdS9ody5jPTE4MDU9c3RhdGljIHZvaWQgcnRsOTJjdV91cGRhdGVfaGFsX3JhdGVfdGFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmN1L2h3LmMtMTgxNC1cXHR1OCBubW9kZSA9IG1hYy1cXHUwMDNlaHRfZW5hYmxlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyY3UvaHcuYzoxODE1OlxcdHU4IG1pbW9fcHMgPSBJRUVFODAyMTFfU01QU19PRkY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJjdS9ody5jLTE4MTYtXFx0dTE2IHNob3J0Z2lfcmF0ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9ydGw4MTkyY3UvaHcuYz0xODkzPXN0YXRpYyB2b2lkIHJ0bDkyY3VfdXBkYXRlX2hhbF9yYXRlX21hc2soc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmN1L2h3LmMtMTkxMy1cXHR1OCBtYWNpZCA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3J0bDgxOTJjdS9ody5jOjE5MTQ6XFx0dTggbWltb19wcyA9IElFRUU4MDIxMV9TTVBTX09GRjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcnRsODE5MmN1L2h3LmMtMTkxNS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTc6Mjg6NDAuMTk1MTAyMDE0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTUyMTk0NjU4MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBJbXBhY3QqKlxuXG5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhpcyBwYXRjaCBtYWRlIHNvbWUgY2hhbmdlcyB0byBzZXZlcmFsIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyczogcnRsODE5MnNlLCBydGw4ODIxYWUsIHJ0bDgxODhlZSwgcnRsODE5MmVlLCBhbmQgcnRsODcyM2FlLiBUaGUgZGlmZiByZWFsbHkgaGlnaGxpZ2h0cyB0aGUgaXNzdWUuIEl0IGxvb2tzIGxpa2UgdGhleSB3ZXJlIGRlYWxpbmcgd2l0aCBhIGxvY2FsIHZhcmlhYmxlLiBUaGlzIHZhcmlhYmxlLCBsZXQncyBjYWxsIGl0IGBzbXBzX3N0YXRlYCwgd2FzIGluaXRpYWxpemVkIHRvIGBJRUVFODAyMTFfU01QU19PRkZgLiBUaGVuLCB0aGUgY29kZSB3YXMgY2hlY2tpbmcgdGhpcyB2YXJpYWJsZSBhZ2FpbnN0IGBJRUVFODAyMTFfU01QU19TVEFUSUNgIG9yIGBJRUVFODAyMTFfU01QU19EWU5BTUlDYC5cblxuTm93LCBoZXJlJ3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gSSBrbm93IGZyb20gbXkgZXhwZXJpZW5jZSwgYW5kIGEgcXVpY2sgbG9vayBhdCB0aGUgcmVsZXZhbnQgaGVhZGVycyAobGlrZWx5IGBpbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oYCBvciBzb21ldGhpbmcgc2ltaWxhciksIHRoYXQgYElFRUU4MDIxMV9TTVBTX09GRmAgaXMgZGVmaW5lZCBhcyAwLiBgSUVFRTgwMjExX1NNUFNfU1RBVElDYCBpcyAxLCBhbmQgYElFRUU4MDIxMV9TTVBTX0RZTkFNSUNgIGlzIDIuIFRoZXJlZm9yZSwgc2luY2UgdGhlIHZhcmlhYmxlIHN0YXJ0ZWQgYXMgMCBhbmQgdGhlbiB3YXMgY29tcGFyZWQgdG8gMSBvciAyLCB0aGUgY29uZGl0aW9uIGluIHRoZSBjb2RlIHdhcyAqYWx3YXlzKiBnb2luZyB0byBldmFsdWF0ZSBhcyBmYWxzZS4gSXQgZG9lc24ndCBtYXR0ZXIgd2hhdCB0aGUgdW5kZXJseWluZyBsb2dpYyB3YXMgKnN1cHBvc2VkKiB0byBkbywgdGhlIGV4aXN0aW5nIGNvZGUgd291bGQgbmV2ZXIgZXhlY3V0ZSB0aGF0IGJyYW5jaC5cblxuU28sIHJlYWxpc3RpY2FsbHksIHRoaXMgcGF0Y2ggaGFzIG5vIGZ1bmN0aW9uYWwgaW1wYWN0LiBJdCdzIGEgaGFybWxlc3MgY2hhbmdlLCBidXQgaXQncyBub3QgYWN0dWFsbHkgY2hhbmdpbmcgYW55dGhpbmcuIEknbSBnb2luZyB0byBtYXJrIHRoaXMgYXMgbm90IHdvcnRoIGZ1enppbmcsIHNvIEknbGwgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBObyBwb2ludCBpbiBzcGVuZGluZyB0aW1lIG9uIHNvbWV0aGluZyB0aGF0J3MgYSBkZWFkIGVuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzk1MywiT3V0cHV0VG9rZW5zIjoxMTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTc6Mjg6NTUuNDE0NTcwNjM2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDc1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZW1vdmVzIGEgbG9jYWwgdmFyaWFibGUgYG1pbW9fcHNgIHRoYXQgd2FzIGhhcmRjb2RlZCB0byBgSUVFRTgwMjExX1NNUFNfT0ZGYCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZGVhZCBjb2RlIGJsb2NrcyB0aGF0IGNoZWNrZWQgaWYgaXQgd2FzIGBJRUVFODAyMTFfU01QU19TVEFUSUNgIG9yIGBJRUVFODAyMTFfU01QU19EWU5BTUlDYC4gVGhpcyBpcyBwdXJlbHkgZGVhZCBjb2RlIHJlbW92YWwgYW5kIGRvZXMgbm90IGFsdGVyIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhIGxvY2FsIHZhcmlhYmxlIGBtaW1vX3BzYCB0aGF0IHdhcyBoYXJkY29kZWQgdG8gYElFRUU4MDIxMV9TTVBTX09GRmAgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGRlYWQgY29kZSBibG9ja3MgdGhhdCBjaGVja2VkIGlmIGl0IHdhcyBgSUVFRTgwMjExX1NNUFNfU1RBVElDYCBvciBgSUVFRTgwMjExX1NNUFNfRFlOQU1JQ2AuIFRoaXMgaXMgcHVyZWx5IGRlYWQgY29kZSByZW1vdmFsIGFuZCBkb2VzIG5vdCBhbHRlciB0aGUgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE3OjI4OjU1LjQxNDU5NDcxNloiLCJTZXEiOjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowlvs5p[1] Phase: Running StartedAt: 2026-08-14 17:29:07 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvs5p[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-14 17:29:07 +0000 UTC FinishedAt: 2026-08-14 17:29:11 +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,}