Name: series-workflow5s5k9 Phase: Failed StartedAt: 2026-09-08 10:18:11 +0000 UTC FinishedAt: 2026-09-08 10:20:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5s5k9[0] Phase: Succeeded StartedAt: 2026-09-08 10:18:11 +0000 UTC FinishedAt: 2026-09-08 10:20:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5s5k9[0].run-triage Phase: Succeeded StartedAt: 2026-09-08 10:18:11 +0000 UTC FinishedAt: 2026-09-08 10:20:27 +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+CgkJCTx0ZD4yMDI2LzA5LzA4IDEwOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgc3VwcG9ydCBmb3IgTlhQIElXNjEwIFNESU8gV2ktRmkgZGV2aWNlcywgaW5jbHVkaW5nIGFuIFNESU8gTU1DIHF1aXJrLCBkZXZpY2UgSUQgcmVnaXN0cmF0aW9uLCBhbmQgZmlybXdhcmUgY2FwYWJpbGl0eSBoYW5kbGluZyBmb3IgY2hhbm5lbCBiYW5kd2lkdGhzIGluIHRoZSBueHB3aWZpIGRyaXZlci4gVGhlc2UgbW9kaWZpZWQgY29kZSBwYXRocyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIE5YUCBTRElPIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzIChzdWNoIGFzIFFFTVUvR0NFKSwgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTA6MTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxNDZlZDgyMWRjMWQ2ZmY2ZGJjNzY5YTc2OGI3YTUwODAyZGQzOGU1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAxMDoxOToyOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oIGIvZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaFxuaW5kZXggYWUzZWNlODlkMGFhNy4uOThjYjY4MGUzYWNlOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmhcbkBAIC0yMTEsNiAmIzQzOzIxMSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1jX2ZpeHVwIF9fbWF5YmVfdW51c2VkIHNkaW9fZml4dXBfbWV0aG9kc1tdID0ge1xuIFx0U0RJT19GSVhVUChTRElPX1ZFTkRPUl9JRF9OWFAsIFNESU9fREVWSUNFX0lEX05YUF9JVzYxWF9CQVNFLFxuIFx0XHQgICBhZGRfcXVpcmssIE1NQ19RVUlSS19CTEtTWl9GT1JfQllURV9NT0RFKSxcbiBcbiYjNDM7XHRTRElPX0ZJWFVQKFNESU9fVkVORE9SX0lEX05YUCwgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjEwX0JBU0UsXG4mIzQzO1x0XHQgICBhZGRfcXVpcmssIE1NQ19RVUlSS19CTEtTWl9GT1JfQllURV9NT0RFKSxcbiYjNDM7XG4gXHRFTkRfRklYVVBcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmNcbmluZGV4IGMyYTU0ZDc4MWI0MmEuLmE4M2UyOWVjYzQ2NmUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmNcbkBAIC0zNDksNiAmIzQzOzM0OSw3IEBAIG54cHdpZmlfY21kX2FwcGVuZF8xMW5fdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG4gXHRcdFx0bnhwd2lmaV9iYW5kX3RvX3JhZGlvX3R5cGUoKHU4KWJzc19kZXNjLVx1MDAzZWJzc19iYW5kKTtcbiBcbiBcdFx0aWYgKElTU1VQUF8xMUFDRU5BQkxFRChwcml2LVx1MDAzZWFkYXB0ZXItXHUwMDNlZndfY2FwX2luZm8pIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgICFJU1NVUFBfTk9fODBNSFoocHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZWZ3X2NhcF9leHQpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYnNzX2Rlc2MtXHUwMDNlYmNuX3ZodF9vcGVyIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYnNzX2Rlc2MtXHUwMDNlYmNuX3ZodF9vcGVyLVx1MDAzZWNoYW5fd2lkdGggPT1cbiBcdFx0ICAgIElFRUU4MDIxMV9WSFRfQ0hBTldJRFRIXzgwTUhaKSB7XG5AQCAtMzU5LDcgJiM0MzszNjAsOCBAQCBueHB3aWZpX2NtZF9hcHBlbmRfMTFuX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuIFx0XHRcdFx0KChDSEFOX0JXXzgwTUhaIFx1MDAzY1x1MDAzY1xuIFx0XHRcdFx0ICBCQU5EX0NGR19DSEFOX1dJRFRIX1NISUZUX0JJVCkgXHUwMDI2XG4gXHRcdFx0XHQgQkFORF9DRkdfQ0hBTl9XSURUSF9NQVNLKTtcbi1cdFx0fSBlbHNlIGlmIChzYmFuZC1cdTAwM2VodF9jYXAuY2FwIFx1MDAyNlxuJiM0MztcdFx0fSBlbHNlIGlmIChJU1NVUFBfNDBNSFpfRU5BQkxFRChwcml2LVx1MDAzZWFkYXB0ZXItXHUwMDNlZndfY2FwX2V4dCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCAgIHNiYW5kLVx1MDAzZWh0X2NhcC5jYXAgXHUwMDI2XG4gXHRcdFx0ICAgSUVFRTgwMjExX0hUX0NBUF9TVVBfV0lEVEhfMjBfNDAgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgYnNzX2Rlc2MtXHUwMDNlYmNuX2h0X29wZXItXHUwMDNlaHRfcGFyYW0gXHUwMDI2XG4gXHRcdFx0ICAgSUVFRTgwMjExX0hUX1BBUkFNX0NIQU5fV0lEVEhfQU5ZKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZncuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2Z3LmhcbmluZGV4IDE4ODExMGIwMjBjZmEuLjEyNDcyOGE3MjQ0MjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9mdy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9mdy5oXG5AQCAtMzM0LDYgJiM0MzszMzQsOCBAQCBlbnVtIE5YUFdJRklfODAyXzExX1BSSVZBQ1lfRklMVEVSIHtcbiAjZGVmaW5lIERGU19DSEFOX01PVkVfVElNRSAgICAgIDEwMDAwXG4gXG4gI2RlZmluZSBJU1NVUFBfMTFBWEVOQUJMRUQoZndfY2FwX2V4dCkgKChmd19jYXBfZXh0KSBcdTAwMjYgQklUKDcpKVxuJiM0MzsjZGVmaW5lIElTU1VQUF9OT184ME1IWihmd19jYXBfZXh0KSAgICAgICgoZndfY2FwX2V4dCkgXHUwMDI2IEJJVCg4KSlcbiYjNDM7I2RlZmluZSBJU1NVUFBfNDBNSFpfRU5BQkxFRChmd19jYXBfZXh0KSAoKGZ3X2NhcF9leHQpIFx1MDAyNiBCSVQoMTUpKVxuIFxuICNkZWZpbmUgSE9TVF9DTURfR0VUX0hXX1NQRUMgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwM1xuICNkZWZpbmUgSE9TVF9DTURfODAyXzExX1NDQU4gICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uY1xuaW5kZXggOGVmMGY2ZWI0OWUyOC4uZjRkZTQ5NGJmMmYyYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jXG5AQCAtOTYsNiAmIzQzOzk2LDE5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgbnhwd2lmaV9zZGlvX2RldmljZSBueHB3aWZpX3NkaW9faXc2MXggPSB7XG4gXHQuY2FuX2V4dF9zY2FuID0gdHJ1ZSxcbiB9O1xuIFxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG54cHdpZmlfc2Rpb19kZXZpY2Ugbnhwd2lmaV9zZGlvX2l3NjEwID0ge1xuJiM0MztcdC5maXJtd2FyZSA9IElXNjEwX1NESU9fRldfTkFNRSxcbiYjNDM7XHQucmVnID0gXHUwMDI2bnhwd2lmaV9yZWdfaXc2MXgsXG4mIzQzO1x0Lm1heF9wb3J0cyA9IDMyLFxuJiM0MztcdC5tcF9hZ2dfcGt0X2xpbWl0ID0gMTYsXG4mIzQzO1x0LnR4X2J1Zl9zaXplID0gTlhQV0lGSV9UWF9EQVRBX0JVRl9TSVpFXzRLLFxuJiM0MztcdC5tcF90eF9hZ2dfYnVmX3NpemUgPSBOWFBXSUZJX01QX0FHR1JfQlNJWkVfTUFYLFxuJiM0MztcdC5tcF9yeF9hZ2dfYnVmX3NpemUgPSBOWFBXSUZJX01QX0FHR1JfQlNJWkVfTUFYLFxuJiM0MztcdC5jYW5fZHVtcF9mdyA9IHRydWUsXG4mIzQzO1x0LmZ3X2R1bXBfZW5oID0gdHJ1ZSxcbiYjNDM7XHQuY2FuX2V4dF9zY2FuID0gdHJ1ZSxcbiYjNDM7fTtcbiYjNDM7XG4gc3RhdGljIHN0cnVjdCBtZW1vcnlfdHlwZV9tYXBwaW5nIGdlbmVyaWNfbWVtX3R5cGVfbWFwW10gPSB7XG4gXHR7XCYjMzQ7RFVNUFwmIzM0OywgTlVMTCwgMCwgMHhERH0sXG4gfTtcbkBAIC00NTgsNiAmIzQzOzQ3MSw4IEBAIHN0YXRpYyB2b2lkIG54cHdpZmlfc2Rpb19jb3JlZHVtcChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCBueHB3aWZpX2lkc1tdID0ge1xuIFx0e1NESU9fREVWSUNFKFNESU9fVkVORE9SX0lEX05YUCwgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjFYKSxcbiBcdFx0LmRyaXZlcl9kYXRhID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2bnhwd2lmaV9zZGlvX2l3NjF4fSxcbiYjNDM7XHR7U0RJT19ERVZJQ0UoU0RJT19WRU5ET1JfSURfTlhQLCBTRElPX0RFVklDRV9JRF9OWFBfSVc2MTApLFxuJiM0MztcdFx0LmRyaXZlcl9kYXRhID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2bnhwd2lmaV9zZGlvX2l3NjEwfSxcbiBcdHt9LFxuIH07XG4gXG5AQCAtMjMyNiwzICYjNDM7MjM0MSw0IEBAIE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtOWFAgV2lGaSBTRElPIERyaXZlciB2ZXJzaW9uIFwmIzM0OyBTRElPX1ZFUlNJT04pO1xuIE1PRFVMRV9WRVJTSU9OKFNESU9fVkVSU0lPTik7XG4gTU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiBNT0RVTEVfRklSTVdBUkUoSVc2MVhfU0RJT19GV19OQU1FKTtcbiYjNDM7TU9EVUxFX0ZJUk1XQVJFKElXNjEwX1NESU9fRldfTkFNRSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5oXG5pbmRleCBkZTVjODg0YTViMTQ5Li5lOTg4MTQ0OGZlMmYxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmhcbkBAIC0xMSw2ICYjNDM7MTEsNyBAQFxuICNpbmNsdWRlIFwmIzM0O21haW4uaFwmIzM0O1xuIFxuICNkZWZpbmUgSVc2MVhfU0RJT19GV19OQU1FICAgICBcJiMzNDtueHAvc2RfdzYxeF92MS5iaW4uc2VcJiMzNDtcbiYjNDM7I2RlZmluZSBJVzYxMF9TRElPX0ZXX05BTUUgICAgIFwmIzM0O254cC9zZF9pdzYxMC5iaW4uc2VcJiMzNDtcbiBcbiAjZGVmaW5lIEJMT0NLX01PREVcdDFcbiAjZGVmaW5lIEJZVEVfTU9ERVx0MFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW1jL3NkaW9faWRzLmggYi9pbmNsdWRlL2xpbnV4L21tYy9zZGlvX2lkcy5oXG5pbmRleCBhZmFlOTNmNmYyNDU4Li5kZmZmZGEzZDgwMDJhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbWMvc2Rpb19pZHMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbWMvc2Rpb19pZHMuaFxuQEAgLTEyMyw2ICYjNDM7MTIzLDggQEBcbiAjZGVmaW5lIFNESU9fVkVORE9SX0lEX05YUFx0XHRcdDB4MDQ3MVxuICNkZWZpbmUgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjFYX0JBU0VcdFx0MHgwMjA0XG4gI2RlZmluZSBTRElPX0RFVklDRV9JRF9OWFBfSVc2MVhcdFx0MHgwMjA1XG4mIzQzOyNkZWZpbmUgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjEwX0JBU0VcdFx0MHgwMjE0XG4mIzQzOyNkZWZpbmUgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjEwXHRcdDB4MDIxNVxuIFxuICNkZWZpbmUgU0RJT19WRU5ET1JfSURfUkVBTFRFS1x0XHRcdDB4MDI0Y1xuICNkZWZpbmUgU0RJT19ERVZJQ0VfSURfUkVBTFRFS19SVFc4NzIzQlNcdDB4YjcyM1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEwOjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBhZGRzIHN1cHBvcnQgZm9yIE5YUCBJVzYxMCBTRElPIFdpLUZpIGRldmljZXMsIGluY2x1ZGluZyBhbiBTRElPIE1NQyBxdWlyaywgZGV2aWNlIElEIHJlZ2lzdHJhdGlvbiwgYW5kIGZpcm13YXJlIGNhcGFiaWxpdHkgaGFuZGxpbmcgZm9yIGNoYW5uZWwgYmFuZHdpZHRocyBpbiB0aGUgbnhwd2lmaSBkcml2ZXIuIFRoZXNlIG1vZGlmaWVkIGNvZGUgcGF0aHMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBOWFAgU0RJTyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VL0dDRSksIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTQ2ZWQ4MjFkYzFkNmZmNmRiYzc2OWE3NjhiN2E1MDgwMmRkMzhlNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMTA6MTk6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oIGIvZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaAppbmRleCBhZTNlY2U4OWQwYWE3Li45OGNiNjgwZTNhY2U4IDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgKQEAgLTIxMSw2ICYjNDM7MjExLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtbWNfZml4dXAgX19tYXliZV91bnVzZWQgc2Rpb19maXh1cF9tZXRob2RzW10gPSB7CiAJU0RJT19GSVhVUChTRElPX1ZFTkRPUl9JRF9OWFAsIFNESU9fREVWSUNFX0lEX05YUF9JVzYxWF9CQVNFLAogCQkgICBhZGRfcXVpcmssIE1NQ19RVUlSS19CTEtTWl9GT1JfQllURV9NT0RFKSwKIAomIzQzOwlTRElPX0ZJWFVQKFNESU9fVkVORE9SX0lEX05YUCwgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjEwX0JBU0UsCiYjNDM7CQkgICBhZGRfcXVpcmssIE1NQ19RVUlSS19CTEtTWl9GT1JfQllURV9NT0RFKSwKJiM0MzsKIAlFTkRfRklYVVAKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmMKaW5kZXggYzJhNTRkNzgxYjQyYS4uYTgzZTI5ZWNjNDY2ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmMKQEAgLTM0OSw2ICYjNDM7MzQ5LDcgQEAgbnhwd2lmaV9jbWRfYXBwZW5kXzExbl90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdiwKIAkJCW54cHdpZmlfYmFuZF90b19yYWRpb190eXBlKCh1OClic3NfZGVzYy0mZ3Q7YnNzX2JhbmQpOwogCiAJCWlmIChJU1NVUFBfMTFBQ0VOQUJMRUQocHJpdi0mZ3Q7YWRhcHRlci0mZ3Q7ZndfY2FwX2luZm8pICZhbXA7JmFtcDsKJiM0MzsJCSAgICAhSVNTVVBQX05PXzgwTUhaKHByaXYtJmd0O2FkYXB0ZXItJmd0O2Z3X2NhcF9leHQpICZhbXA7JmFtcDsKIAkJICAgIGJzc19kZXNjLSZndDtiY25fdmh0X29wZXIgJmFtcDsmYW1wOwogCQkgICAgYnNzX2Rlc2MtJmd0O2Jjbl92aHRfb3Blci0mZ3Q7Y2hhbl93aWR0aCA9PQogCQkgICAgSUVFRTgwMjExX1ZIVF9DSEFOV0lEVEhfODBNSFopIHsKQEAgLTM1OSw3ICYjNDM7MzYwLDggQEAgbnhwd2lmaV9jbWRfYXBwZW5kXzExbl90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdiwKIAkJCQkoKENIQU5fQldfODBNSFogJmx0OyZsdDsKIAkJCQkgIEJBTkRfQ0ZHX0NIQU5fV0lEVEhfU0hJRlRfQklUKSAmYW1wOwogCQkJCSBCQU5EX0NGR19DSEFOX1dJRFRIX01BU0spOwotCQl9IGVsc2UgaWYgKHNiYW5kLSZndDtodF9jYXAuY2FwICZhbXA7CiYjNDM7CQl9IGVsc2UgaWYgKElTU1VQUF80ME1IWl9FTkFCTEVEKHByaXYtJmd0O2FkYXB0ZXItJmd0O2Z3X2NhcF9leHQpICZhbXA7JmFtcDsKJiM0MzsJCQkgICBzYmFuZC0mZ3Q7aHRfY2FwLmNhcCAmYW1wOwogCQkJICAgSUVFRTgwMjExX0hUX0NBUF9TVVBfV0lEVEhfMjBfNDAgJmFtcDsmYW1wOwogCQkJICAgYnNzX2Rlc2MtJmd0O2Jjbl9odF9vcGVyLSZndDtodF9wYXJhbSAmYW1wOwogCQkJICAgSUVFRTgwMjExX0hUX1BBUkFNX0NIQU5fV0lEVEhfQU5ZKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9mdy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZncuaAppbmRleCAxODgxMTBiMDIwY2ZhLi4xMjQ3MjhhNzI0NDIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9mdy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2Z3LmgKQEAgLTMzNCw2ICYjNDM7MzM0LDggQEAgZW51bSBOWFBXSUZJXzgwMl8xMV9QUklWQUNZX0ZJTFRFUiB7CiAjZGVmaW5lIERGU19DSEFOX01PVkVfVElNRSAgICAgIDEwMDAwCiAKICNkZWZpbmUgSVNTVVBQXzExQVhFTkFCTEVEKGZ3X2NhcF9leHQpICgoZndfY2FwX2V4dCkgJmFtcDsgQklUKDcpKQomIzQzOyNkZWZpbmUgSVNTVVBQX05PXzgwTUhaKGZ3X2NhcF9leHQpICAgICAgKChmd19jYXBfZXh0KSAmYW1wOyBCSVQoOCkpCiYjNDM7I2RlZmluZSBJU1NVUFBfNDBNSFpfRU5BQkxFRChmd19jYXBfZXh0KSAoKGZ3X2NhcF9leHQpICZhbXA7IEJJVCgxNSkpCiAKICNkZWZpbmUgSE9TVF9DTURfR0VUX0hXX1NQRUMgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMwogI2RlZmluZSBIT1NUX0NNRF84MDJfMTFfU0NBTiAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA2CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMKaW5kZXggOGVmMGY2ZWI0OWUyOC4uZjRkZTQ5NGJmMmYyYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYwpAQCAtOTYsNiAmIzQzOzk2LDE5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgbnhwd2lmaV9zZGlvX2RldmljZSBueHB3aWZpX3NkaW9faXc2MXggPSB7CiAJLmNhbl9leHRfc2NhbiA9IHRydWUsCiB9OwogCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBueHB3aWZpX3NkaW9fZGV2aWNlIG54cHdpZmlfc2Rpb19pdzYxMCA9IHsKJiM0MzsJLmZpcm13YXJlID0gSVc2MTBfU0RJT19GV19OQU1FLAomIzQzOwkucmVnID0gJmFtcDtueHB3aWZpX3JlZ19pdzYxeCwKJiM0MzsJLm1heF9wb3J0cyA9IDMyLAomIzQzOwkubXBfYWdnX3BrdF9saW1pdCA9IDE2LAomIzQzOwkudHhfYnVmX3NpemUgPSBOWFBXSUZJX1RYX0RBVEFfQlVGX1NJWkVfNEssCiYjNDM7CS5tcF90eF9hZ2dfYnVmX3NpemUgPSBOWFBXSUZJX01QX0FHR1JfQlNJWkVfTUFYLAomIzQzOwkubXBfcnhfYWdnX2J1Zl9zaXplID0gTlhQV0lGSV9NUF9BR0dSX0JTSVpFX01BWCwKJiM0MzsJLmNhbl9kdW1wX2Z3ID0gdHJ1ZSwKJiM0MzsJLmZ3X2R1bXBfZW5oID0gdHJ1ZSwKJiM0MzsJLmNhbl9leHRfc2NhbiA9IHRydWUsCiYjNDM7fTsKJiM0MzsKIHN0YXRpYyBzdHJ1Y3QgbWVtb3J5X3R5cGVfbWFwcGluZyBnZW5lcmljX21lbV90eXBlX21hcFtdID0gewogCXsmIzM0O0RVTVAmIzM0OywgTlVMTCwgMCwgMHhERH0sCiB9OwpAQCAtNDU4LDYgJiM0Mzs0NzEsOCBAQCBzdGF0aWMgdm9pZCBueHB3aWZpX3NkaW9fY29yZWR1bXAoc3RydWN0IGRldmljZSAqZGV2KQogc3RhdGljIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCBueHB3aWZpX2lkc1tdID0gewogCXtTRElPX0RFVklDRShTRElPX1ZFTkRPUl9JRF9OWFAsIFNESU9fREVWSUNFX0lEX05YUF9JVzYxWCksCiAJCS5kcml2ZXJfZGF0YSA9ICh1bnNpZ25lZCBsb25nKSZhbXA7bnhwd2lmaV9zZGlvX2l3NjF4fSwKJiM0MzsJe1NESU9fREVWSUNFKFNESU9fVkVORE9SX0lEX05YUCwgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjEwKSwKJiM0MzsJCS5kcml2ZXJfZGF0YSA9ICh1bnNpZ25lZCBsb25nKSZhbXA7bnhwd2lmaV9zZGlvX2l3NjEwfSwKIAl7fSwKIH07CiAKQEAgLTIzMjYsMyAmIzQzOzIzNDEsNCBAQCBNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtOWFAgV2lGaSBTRElPIERyaXZlciB2ZXJzaW9uICYjMzQ7IFNESU9fVkVSU0lPTik7CiBNT0RVTEVfVkVSU0lPTihTRElPX1ZFUlNJT04pOwogTU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwmIzM0Oyk7CiBNT0RVTEVfRklSTVdBUkUoSVc2MVhfU0RJT19GV19OQU1FKTsKJiM0MztNT0RVTEVfRklSTVdBUkUoSVc2MTBfU0RJT19GV19OQU1FKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uaAppbmRleCBkZTVjODg0YTViMTQ5Li5lOTg4MTQ0OGZlMmYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5oCkBAIC0xMSw2ICYjNDM7MTEsNyBAQAogI2luY2x1ZGUgJiMzNDttYWluLmgmIzM0OwogCiAjZGVmaW5lIElXNjFYX1NESU9fRldfTkFNRSAgICAgJiMzNDtueHAvc2RfdzYxeF92MS5iaW4uc2UmIzM0OwomIzQzOyNkZWZpbmUgSVc2MTBfU0RJT19GV19OQU1FICAgICAmIzM0O254cC9zZF9pdzYxMC5iaW4uc2UmIzM0OwogCiAjZGVmaW5lIEJMT0NLX01PREUJMQogI2RlZmluZSBCWVRFX01PREUJMApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbWMvc2Rpb19pZHMuaCBiL2luY2x1ZGUvbGludXgvbW1jL3NkaW9faWRzLmgKaW5kZXggYWZhZTkzZjZmMjQ1OC4uZGZmZmRhM2Q4MDAyYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbWMvc2Rpb19pZHMuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L21tYy9zZGlvX2lkcy5oCkBAIC0xMjMsNiAmIzQzOzEyMyw4IEBACiAjZGVmaW5lIFNESU9fVkVORE9SX0lEX05YUAkJCTB4MDQ3MQogI2RlZmluZSBTRElPX0RFVklDRV9JRF9OWFBfSVc2MVhfQkFTRQkJMHgwMjA0CiAjZGVmaW5lIFNESU9fREVWSUNFX0lEX05YUF9JVzYxWAkJMHgwMjA1CiYjNDM7I2RlZmluZSBTRElPX0RFVklDRV9JRF9OWFBfSVc2MTBfQkFTRQkJMHgwMjE0CiYjNDM7I2RlZmluZSBTRElPX0RFVklDRV9JRF9OWFBfSVc2MTAJCTB4MDIxNQogCiAjZGVmaW5lIFNESU9fVkVORE9SX0lEX1JFQUxURUsJCQkweDAyNGMKICNkZWZpbmUgU0RJT19ERVZJQ0VfSURfUkVBTFRFS19SVFc4NzIzQlMJMHhiNzIzCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEwOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MjUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA3MjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIHBhdGNoIGlzIGV2ZW4gYSB2aWFibGUgdGFyZ2V0IGZvciBzeXprYWxsZXIuIEkgc2VlIGFkZGl0aW9ucyB0byBgZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaGAsIHNwZWNpZmljYWxseSBhZGRpbmcgYSBxdWlyayByZWxhdGVkIHRvIE5YUCBTRElPIGRldmljZXMgYW5kIGJsb2NrIHNpemUgaW4gYnl0ZSBtb2RlLiBUaGVuIHRoZXJlIGFyZSBjaGFuZ2VzIGluIHRoZSBgbnhwd2lmaWAgZHJpdmVyLCBpbmNsdWRpbmcgY2hlY2tzIGZvciA4ME1IeiBhbmQgNDBNSHogY2hhbm5lbCB3aWR0aCBjYXBhYmlsaXRpZXMsIGFsb25nIHdpdGggbmV3IGRldmljZSBzdHJ1Y3R1cmVzIGFuZCBmaXJtd2FyZSBkZWZpbml0aW9ucyBpbiB2YXJpb3VzIGBueHB3aWZpYCBmaWxlcyBhbmQgcmVsYXRlZCBoZWFkZXIgZmlsZXMuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgcmVhY2hhYmlsaXR5IG9mIHRoaXMgZHJpdmVyLiBJcyBgbnhwd2lmaWAgYW4gU0RJTyBkcml2ZXIsIGFuZCBob3cgZG9lcyB0aGF0IGZpdCBpbnRvIHRoZSBwaWN0dXJlIHdpdGggc3l6a2FsbGVyPyBTeXprYWxsZXIgaGFzIFVTQiBlbXVsYXRpb24gKFJhdyBHYWRnZXQsIFVTQkZ1enosIHZoY2kpLCBuZXRkZXZzaW0sIGFuZCBtYWM4MDIxMV9od3NpbSwgYnV0IHdoYXQgYWJvdXQgU0RJTz8gRG9lcyBzeXprYWxsZXIgZW11bGF0ZSBTRElPIGRldmljZXMsIG9yIGlzIHRoaXMgZHJpdmVyIGluaGVyZW50bHkgaGFyZHdhcmUtc3BlY2lmaWM/IERvIFFFTVUgb3Igc3l6a2FsbGVyIGhhdmUgYW4gU0RJTyBoYXJkd2FyZSBlbXVsYXRvciwgb3IgaXMgU0RJTyBzdXBwb3J0IGxpbWl0ZWQ/CgpJIGhhdmUgdG8gY29uc2lkZXIgdGhlIHByb21wdCYjMzk7cyBleGNsdXNpb24gb2Ygc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBvciBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBBU0lDcyBvciBQQ0llIGNhcmRzLiBJIHdvbmRlciBpZiB0aGUgU0RJTyBuYXR1cmUgb2YgYG54cHdpZmlgIGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeS4gSXMgYG54cHdpZmlgIHRpZWQgdG8gU0RJTyBvciBhbnkgZW11bGF0ZWQgdmlydHVhbCBidXMgd2l0aGluIHN5emthbGxlciwgb3IgaXMgaXQgcHVyZWx5IFNESU8gb3IgcG90ZW50aWFsbHkgUENJZSAvIFVTQj8KCkkgdGhpbmsgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvYCBkaXJlY3RvcnkgdG8gc2VlIHdoYXQgaW50ZXJmYWNlcyB0aGlzIGRyaXZlciBzdXBwb3J0cy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB3aGV0aGVyIGl0JiMzOTtzIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBwcmFjdGljYWxseSBmdXp6ZWQgd2l0aGluIG15IGF2YWlsYWJsZSBzeXprYWxsZXIgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTA6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDsxMWFjLmMmIzM0OywKICAgICYjMzQ7MTFhYy5oJiMzNDssCiAgICAmIzM0OzExYXguYyYjMzQ7LAogICAgJiMzNDsxMWF4LmgmIzM0OywKICAgICYjMzQ7MTFoLmMmIzM0OywKICAgICYjMzQ7MTFuLmMmIzM0OywKICAgICYjMzQ7MTFuLmgmIzM0OywKICAgICYjMzQ7MTFuX2FnZ3IuYyYjMzQ7LAogICAgJiMzNDsxMW5fYWdnci5oJiMzNDssCiAgICAmIzM0OzExbl9yeHJlb3JkZXIuYyYjMzQ7LAogICAgJiMzNDsxMW5fcnhyZW9yZGVyLmgmIzM0OywKICAgICYjMzQ7Y2ZnLmgmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTEuYyYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMS5oJiMzNDssCiAgICAmIzM0O2NmcC5jJiMzNDssCiAgICAmIzM0O2NtZGV2dC5jJiMzNDssCiAgICAmIzM0O2NtZGV2dC5oJiMzNDssCiAgICAmIzM0O2RlYnVnZnMuYyYjMzQ7LAogICAgJiMzNDtldGh0b29sLmMmIzM0OywKICAgICYjMzQ7ZncuaCYjMzQ7LAogICAgJiMzNDtpZS5jJiMzNDssCiAgICAmIzM0O2luaXQuYyYjMzQ7LAogICAgJiMzNDtqb2luLmMmIzM0OywKICAgICYjMzQ7bWFpbi5jJiMzNDssCiAgICAmIzM0O21haW4uaCYjMzQ7LAogICAgJiMzNDtzY2FuLmMmIzM0OywKICAgICYjMzQ7c2Rpby5jJiMzNDssCiAgICAmIzM0O3NkaW8uaCYjMzQ7LAogICAgJiMzNDtzdGFfY2ZnLmMmIzM0OywKICAgICYjMzQ7c3RhX2NtZC5jJiMzNDssCiAgICAmIzM0O3N0YV9ldmVudC5jJiMzNDssCiAgICAmIzM0O3N0YV9yeC5jJiMzNDssCiAgICAmIzM0O3N0YV90eC5jJiMzNDssCiAgICAmIzM0O3R4cnguYyYjMzQ7LAogICAgJiMzNDt1YXBfY21kLmMmIzM0OywKICAgICYjMzQ7dWFwX2V2ZW50LmMmIzM0OywKICAgICYjMzQ7dWFwX3R4cnguYyYjMzQ7LAogICAgJiMzNDt1dGlsLmMmIzM0OywKICAgICYjMzQ7dXRpbC5oJiMzNDssCiAgICAmIzM0O3dtbS5jJiMzNDssCiAgICAmIzM0O3dtbS5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxMDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDA4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGlnIGludG8gdGhlIHdpcmVsZXNzIG5ldHdvcmtpbmcgZHJpdmVycyBmb3IgTlhQLiBHaXZlbiBteSBleHBlcnRpc2UsIEkgc3VzcGVjdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYW5kIGJ1aWxkIGluc3RydWN0aW9ucyB3aWxsIGJlIGZvdW5kIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9gIGRpcmVjdG9yeS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBsb29raW5nIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGF0IGRpcmVjdG9yeTsgaXQmIzM5O3MgdGhlIHVzdWFsIHBsYWNlIGZvciB0aGVzZSB0aGluZ3MuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcGFydGljdWxhciBOWFAgd2lyZWxlc3MgaW1wbGVtZW50YXRpb24uIElmIHRoYXQgZG9lc24mIzM5O3QgaW1tZWRpYXRlbHkgcmV2ZWFsIHdoYXQgSSBuZWVkLCB0aGUgYE1ha2VmaWxlYCBpbiBlaXRoZXIgdGhlIGBueHB3aWZpYCBzdWJkaXJlY3RvcnksIG9yIGluZGVlZCwgdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnksIGlzIG15IG5leHQgdGFyZ2V0LiBJdCYjMzk7bGwgc2hvdyBtZSBob3cgdGhpcyBkcml2ZXIgaXMgYnVpbHQgYW5kIHdoaWNoIHNvdXJjZXMgYXJlIGludm9sdmVkLiBIb3BlZnVsbHkgSSBjYW4gZ2V0IHdoYXQgSSBuZWVkIGZyb20gZWl0aGVyIG9mIHRoZXNlIGZpbGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEwOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O254cHdpZmkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE1MTgwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvS2NvbmZpZz0xMz1pZiBXTEFOX1ZFTkRPUl9OWFBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL0tjb25maWc6MTU6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnLTE2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9NYWtlZmlsZS0yLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX05YUFdJRkkpXHQmIzQzOz0gbnhwd2lmaS9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMi0vKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjM6ICogbnhwd2lmaSA4MDIuMTFhYyBoZWxwZXJzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtNC0gKiBDb3B5cmlnaHQgMjAxMS0yMDI0IE5YUFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYz0zNj1zdGF0aWMgdTE2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6Mzc6bnhwd2lmaV9jb252ZXJ0X21jc21hcF90b19tYXhyYXRlKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMzgtXHRcdFx0XHQgIHUxNiBiYW5kcywgdTE2IG1jc19tYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTQyLVx0dTMyIHVzcl92aHRfY2FwX2luZm8gPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjQzOlx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy00NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9Nzk9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo4MDpueHB3aWZpX2ZpbGxfdmh0X2NhcF9pbmZvKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODEtXHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHUxNiBiYW5kcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy04Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6ODM6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTg0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYz05Mz12b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6OTQ6bnhwd2lmaV9maWxsX3ZodF9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtOTUtXHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTE2IGJhbmRzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTk2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo5NzpcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtOTgtXHR1MTYgbWNzX21hcF91c2VyLCBtY3NfbWFwX3Jlc3AsIG1jc19tYXBfcmVzdWx0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xMDEtXHQvKiBGaWxsIFZIVCBjYXBhYmlsaXR5IGluZm8uICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTAyOlx0bnhwd2lmaV9maWxsX3ZodF9jYXBfaW5mbyhwcml2LCB2aHRfY2FwLCBiYW5kcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTAzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTI0Olx0dG1wID0gbnhwd2lmaV9jb252ZXJ0X21jc21hcF90b19tYXhyYXRlKHByaXYsIGJhbmRzLCBtY3NfbWFwX3Jlc3VsdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTI1LVx0dmh0X2NhcC1cdTAwM2VzdXBwX21jcy5yeF9oaWdoZXN0ID0gY3B1X3RvX2xlMTYodG1wKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE0NjpcdHRtcCA9IG54cHdpZmlfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShwcml2LCBiYW5kcywgbWNzX21hcF9yZXN1bHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE0Ny1cdHZodF9jYXAtXHUwMDNlc3VwcF9tY3MudHhfaGlnaGVzdCA9IGNwdV90b19sZTE2KHRtcCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTA6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWFjX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1MTpcdFx0XHRcdHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE1Mi1cdFx0XHRcdHU4ICoqYnVmZmVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE1My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTU0Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0Y2FwICp2aHRfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1NTpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX29wZXJfbW9kZV9udGYgKm9wZXJfbnRmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE1Ni1cdHN0cnVjdCBpZWVlX3R5cGVzX29wZXJfbW9kZV9udGYgKmllZWVfb3Blcl9udGY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTU3Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0X29wZXIgKnZodF9vcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTg6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE1OS1cdHU4IHN1cHBfY2h3ZF9zZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE2OS1cdGlmIChic3NfZGVzYy1cdTAwM2ViY25fdmh0X2NhcCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE3MDpcdFx0dmh0X2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRjYXAgKikqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3MS1cdFx0bWVtc2V0KHZodF9jYXAsIDAsIHNpemVvZigqdmh0X2NhcCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzQtXHRcdFx0Y3B1X3RvX2xlMTYoc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE3NTpcdFx0bWVtY3B5KCh1OCAqKXZodF9jYXAgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTc2LVx0XHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXHUwMDNlYmNuX3ZodF9jYXAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNzk6XHRcdG54cHdpZmlfZmlsbF92aHRfY2FwX3Rsdihwcml2LCBcdTAwMjZ2aHRfY2FwLVx1MDAzZXZodF9jYXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTgwLVx0XHRcdFx0XHQgYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xODctXHRcdGlmIChwcml2LVx1MDAzZWJzc19tb2RlID09IE5MODAyMTFfSUZUWVBFX1NUQVRJT04pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxODg6XHRcdFx0dmh0X29wID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX3ZodF9vcGVyICopKmJ1ZmZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xODktXHRcdFx0bWVtc2V0KHZodF9vcCwgMCwgc2l6ZW9mKCp2aHRfb3ApKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTkyLVx0XHRcdHZodF9vcC1cdTAwM2VoZWFkZXIubGVuICA9IGNwdV90b19sZTE2KHNpemVvZigqdmh0X29wKSAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTkzOlx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlcikpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5NC1cdFx0XHRtZW1jcHkoKHU4ICopdmh0X29wICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTk1Olx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTk2LVx0XHRcdCAgICAgICAodTggKilic3NfZGVzYy1cdTAwM2ViY25fdmh0X29wZXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTI0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoyNDU6aW50IG54cHdpZmlfY21kXzExYWNfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjQ2LVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoyNDc6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYWNfdmh0X2NmZyAqY2ZnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTI0OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTI2NC0vKiBJbml0aWFsaXplIEJsb2NrQWNrIHBhcmFtZXRlcnMgZm9yIDExYWMuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MjY1OnZvaWQgbnhwd2lmaV9zZXRfMTFhY19iYV9wYXJhbXMoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0yLS8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MzogKiBueHB3aWZpOiA4MDIuMTFhYyAoVkhUKSBkZWZpbml0aW9uc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTQtICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg9MTQ9ZW51bSB2aHRfY2ZnX21pc2NfY29uZmlnIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MjU6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWFjX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjI2Olx0XHRcdFx0c3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjctXHRcdFx0XHR1OCAqKmJ1ZmZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6Mjg6aW50IG54cHdpZmlfY21kXzExYWNfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjktXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjMwOlx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWFjX3ZodF9jZmcgKmNmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MzE6dm9pZCBueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0zMi1cdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHUxNiBiYW5kcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI6Lyogbnhwd2lmaTogODAyLjExYXggKEhFKSBzdXBwb3J0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMy0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyNCBOWFBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTE6dm9pZCBueHB3aWZpX3VwZGF0ZV8xMWF4X2NhcChzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEyLVx0XHRcdCAgICAgc3RydWN0IGh3X3NwZWNfZXh0ZW5zaW9uICpod19oZV9jYXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0Olx0c3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaGVfY2FwID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNjpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqdXNlcl9oZV9jYXAgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3Olx0dTggaGVhZGVyX2xlbiA9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE4LVx0dTE2IGRhdGFfbGVuID0gbGUxNl90b19jcHUoaHdfaGVfY2FwLVx1MDAzZWhlYWRlci5sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMi1cdGlmICgoZGF0YV9sZW4gJiM0MzsgaGVhZGVyX2xlbikgXHUwMDNlIHNpemVvZihhZGFwdGVyLVx1MDAzZWh3X2hlX2NhcCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMzpcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjQtXHRcdFx0ICAgIFwmIzM0O2h3X2hlX2NhcCB0b28gYmlnLCBsZW49JWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI5Olx0aGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKWh3X2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzctXHRcdGhlX2NhcF8yZyA9IHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mzg6XHRcdG54cHdpZmlfZGJnX2R1bXAoYWRhcHRlciwgQ01EX0QsIFwmIzM0OzIuNEcgSEUgY2FwYWJpbGl0eSBlbGVtZW50IFwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zOS1cdFx0XHRcdCBhZGFwdGVyLVx1MDAzZWh3XzJnX2hlX2NhcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDUtXHRcdGFkYXB0ZXItXHUwMDNlZndfYmFuZHMgfD0gQkFORF9BQVg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDY6XHRcdG54cHdpZmlfZGJnX2R1bXAoYWRhcHRlciwgQ01EX0QsIFwmIzM0OzVHIEhFIGNhcGFiaWxpdHkgZWxlbWVudCBcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDctXHRcdFx0XHQgYWRhcHRlci1cdTAwM2Vod19oZV9jYXAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU3LVx0XHRcdCAgICAgICBzaXplb2YoYWRhcHRlci1cdTAwM2Vod18yZ19oZV9jYXApKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1ODpcdFx0XHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01OS1cdFx0XHRcdHByaXYtXHUwMDNldXNlcl8yZ19oZV9jYXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTYzLVx0XHRcdCAgICAgICBzaXplb2YoYWRhcHRlci1cdTAwM2Vod19oZV9jYXApKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo2NDpcdFx0XHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy02NS1cdFx0XHRcdHByaXYtXHUwMDNldXNlcl9oZV9jYXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjc5OmJvb2wgbnhwd2lmaV8xMWF4X2JhbmRjb25maWdfYWxsb3dlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjgwOlx0XHRcdFx0ICAgICBzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy04MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjk1OmludCBueHB3aWZpX2ZpbGxfaGVfY2FwX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjk2Olx0XHRcdCAgICBzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy05Ny1cdFx0XHQgICAgdTE2IGJhbmRzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTk4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo5OTpcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTAwOlx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpod19oZV9jYXAgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEwMS1cdHUxNiByeF9uc3MsIHR4X25zcztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTA4LVx0XHRtZW1jcHkoaGVfY2FwLCBwcml2LVx1MDAzZXVzZXJfaGVfY2FwLCBwcml2LVx1MDAzZXVzZXJfaGVfY2FwX2xlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTA5Olx0XHRod19oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopYWRhcHRlci1cdTAwM2Vod19oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTEwLVx0XHRyZXRfbGVuID0gcHJpdi1cdTAwM2V1c2VyX2hlX2NhcF9sZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTExMi1cdFx0bWVtY3B5KGhlX2NhcCwgcHJpdi1cdTAwM2V1c2VyXzJnX2hlX2NhcCwgcHJpdi1cdTAwM2V1c2VyXzJnX2hlX2NhcF9sZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjExMzpcdFx0aHdfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKWFkYXB0ZXItXHUwMDNlaHdfMmdfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTExNC1cdFx0cmV0X2xlbiA9IHByaXYtXHUwMDNldXNlcl8yZ19oZV9jYXBfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMjUtXHRmb3IgKG5zcyA9IDE7IG5zcyBcdTAwM2M9IDg7IG5zcyYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMjY6XHRcdGNmZ192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaGVfY2FwLVx1MDAzZXJ4X21jc184MCwgbnNzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMjc6XHRcdGh3X3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhod19oZV9jYXAtXHUwMDNlcnhfbWNzXzgwLCBuc3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEyOC1cdFx0aWYgKHJ4X25zcyAhPSAwIFx1MDAyNlx1MDAyNiBuc3MgXHUwMDNlIHJ4X25zcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMwLVx0XHRpZiAoaHdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQgfHwgY2ZnX3ZhbHVlID09IE5PX05TU19TVVBQT1JUKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEzMTpcdFx0XHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFx1MDAyNmhlX2NhcC1cdTAwM2VyeF9tY3NfODAsIG5zcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzItXHRcdFx0XHRcdCAgICAgICBOT19OU1NfU1VQUE9SVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMzLVx0XHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTM0Olx0XHRcdG54cHdpZmlfc2V0X2hlX25zc19tY3MoXHUwMDI2aGVfY2FwLVx1MDAzZXJ4X21jc184MCwgbnNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzNS1cdFx0XHRcdFx0ICAgICAgIG1pbihjZmdfdmFsdWUsIGh3X3ZhbHVlKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzOC1cdGZvciAobnNzID0gMTsgbnNzIFx1MDAzYz0gODsgbnNzJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEzOTpcdFx0Y2ZnX3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhoZV9jYXAtXHUwMDNldHhfbWNzXzgwLCBuc3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0MDpcdFx0aHdfdmFsdWUgPSBueHB3aWZpX2dldF9oZV9uc3NfbWNzKGh3X2hlX2NhcC1cdTAwM2V0eF9tY3NfODAsIG5zcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQxLVx0XHRpZiAodHhfbnNzICE9IDAgXHUwMDI2XHUwMDI2IG5zcyBcdTAwM2UgdHhfbnNzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDMtXHRcdGlmIChod192YWx1ZSA9PSBOT19OU1NfU1VQUE9SVCB8fCBjZmdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTQ0Olx0XHRcdG54cHdpZmlfc2V0X2hlX25zc19tY3MoXHUwMDI2aGVfY2FwLVx1MDAzZXR4X21jc184MCwgbnNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0NS1cdFx0XHRcdFx0ICAgICAgIE5PX05TU19TVVBQT1JUKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDYtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDc6XHRcdFx0bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhcdTAwMjZoZV9jYXAtXHUwMDNldHhfbWNzXzgwLCBuc3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQ4LVx0XHRcdFx0XHQgICAgICAgbWluKGNmZ192YWx1ZSwgaHdfdmFsdWUpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE1NDppbnQgbnhwd2lmaV9jbWRfYXBwZW5kXzExYXhfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU1Olx0XHRcdFx0c3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTU2LVx0XHRcdFx0dTggKipidWZmZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTU3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTg6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTU5LVx0aW50IHJldF9sZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNjQ6XHRoZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopKmJ1ZmZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNjU6XHRyZXRfbGVuID0gbnhwd2lmaV9maWxsX2hlX2NhcF90bHYocHJpdiwgaGVfY2FwLCBic3NfZGVzYy1cdTAwM2Vic3NfYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTY2LVx0KmJ1ZmZlciAmIzQzOz0gcmV0X2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3MTppbnQgbnhwd2lmaV9jbWRfMTFheF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzItXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3MzpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9oZV9jZmcgKmF4X2NmZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzYtXHR1MTYgY21kX3NpemU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTc3Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICpoZWFkZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTc4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xODYtXHQgICAgYXhfY2ZnLVx1MDAzZWhlX2NhcF9jZmcuZXh0X2lkID09IFdMQU5fRUlEX0VYVF9IRV9DQVBBQklMSVRZKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTg3Olx0XHRoZWFkZXIgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICopaGVfY2ZnLVx1MDAzZXRsdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xODgtXHRcdGhlYWRlci1cdTAwM2V0eXBlID0gY3B1X3RvX2xlMTYoYXhfY2ZnLVx1MDAzZWhlX2NhcF9jZmcuaWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjAxOmludCBueHB3aWZpX3JldF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwMi1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjAzOlx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwNC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjA1LVx0c3RydWN0IGhvc3RfY21kXzExYXhfY2ZnICpoZV9jZmcgPSBcdTAwMjZyZXNwLVx1MDAzZXBhcmFtcy5heF9jZmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjA2Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICpoZWFkZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjA3LVx0dTE2IGxlZnRfbGVuLCB0bHZfdHlwZSwgdGx2X2xlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDgtXHR1OCBleHRfaWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjA5Olx0c3RydWN0IG54cHdpZmlfMTFheF9oZV9jYXBfY2ZnICpoZV9jYXAgPSBcdTAwMjZheF9jZmctXHUwMDNlaGVfY2FwX2NmZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjExLVx0bGVmdF9sZW4gPSBsZTE2X3RvX2NwdShyZXNwLVx1MDAzZXNpemUpIC0gc2l6ZW9mKCpoZV9jZmcpIC0gU19EU19HRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjEyOlx0aGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKWhlX2NmZy1cdTAwM2V0bHY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjEzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNDItXHRcdGxlZnRfbGVuIC09IChzaXplb2YoKmhlYWRlcikgJiM0MzsgdGx2X2xlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjQzOlx0XHRoZWFkZXIgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICopKCh1OCAqKWhlYWRlciAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI0NC1cdFx0XHRcdFx0XHRcdCAgICBzaXplb2YoKmhlYWRlcikgJiM0Mztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1MTppbnQgbnhwd2lmaV9jbWRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTItXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1MzpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjU0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTU6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1Ni1cdHN0cnVjdCBob3N0X2NtZF8xMWF4X2NtZCAqaGVfY21kID0gXHUwMDI2Y21kLVx1MDAzZXBhcmFtcy5heF9jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjU3LVx0dTE2IGNtZF9zaXplO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1ODpcdHN0cnVjdCBueHB3aWZpXzExYXhfc3JfY21kICpzcl9jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjU5Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqdGx2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2MDpcdHN0cnVjdCBueHB3aWZpXzExYXhfYmVhbV9jbWQgKmJlYW1fY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2MTpcdHN0cnVjdCBueHB3aWZpXzExYXhfaHRjX2NtZCAqaHRjX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjI6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b21pX2NtZCAqdHhtb2lfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2MzpcdHN0cnVjdCBueHB3aWZpXzExYXhfdG9sdGltZV9jbWQgKnRvbHRpbWVfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2NDpcdHN0cnVjdCBueHB3aWZpXzExYXhfdHhvcF9jbWQgKnR4b3BfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2NTpcdHN0cnVjdCBueHB3aWZpXzExYXhfc2V0X2JzcnBfY21kICpzZXRfYnNycF9jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjY2Olx0c3RydWN0IG54cHdpZmlfMTFheF9sbGRlX2NtZCAqbGxkZV9jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjY3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNzUtXHRjYXNlIE5YUFdJRklfMTFBWENNRF9TUl9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNzY6XHRcdHNyX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NyX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjc4Olx0XHR0bHYgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqKWhlX2NtZC1cdTAwM2V2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjc5LVx0XHR0bHYtXHUwMDNlaGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUxNihzcl9jbWQtXHUwMDNldHlwZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI4NS1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX0JFQU1fU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjg2Olx0XHRiZWFtX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2JlYW1fY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI4Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjkxLVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfSFRDX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI5MjpcdFx0aHRjX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2h0Y19jbWQgKilcdTAwMjZheF9jbWQtXHUwMDNlcGFyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjkzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOTctXHRjYXNlIE5YUFdJRklfMTFBWENNRF9UWE9NSV9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyOTg6XHRcdHR4bW9pX2NtZCA9XHQoc3RydWN0IG54cHdpZmlfMTFheF90eG9taV9jbWQgKilcdTAwMjZheF9jbWQtXHUwMDNlcGFyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjk5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMDMtXHRjYXNlIE5YUFdJRklfMTFBWENNRF9PQlNTX1RPTFRJTUVfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzA0Olx0XHR0b2x0aW1lX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3RvbHRpbWVfY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMwNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzEwLVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfVFhPUFJUU19TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMTE6XHRcdHR4b3BfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfdHhvcF9jbWQgKilcdTAwMjZheF9jbWQtXHUwMDNlcGFyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzEyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMTctXHRjYXNlIE5YUFdJRklfMTFBWENNRF9TRVRfQlNSUF9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMTg6XHRcdHNldF9ic3JwX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NldF9ic3JwX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMyMy1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX0xMREVfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzI0Olx0XHRsbGRlX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2xsZGVfY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMyNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzI5LVx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMzA6XHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMzMS1cdFx0XHQgICAgXCYjMzQ7JXM6IFVua25vd24gc3ViIGNvbW1hbmQ6ICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzQxOmludCBueHB3aWZpX3JldF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0Mi1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzQzOlx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2NtZF9jZmcgKmF4X2NtZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0NTpcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQ2LVx0c3RydWN0IGhvc3RfY21kXzExYXhfY21kICpoZV9jbWQgPSBcdTAwMjZyZXNwLVx1MDAzZXBhcmFtcy5heF9jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzQ3Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqdGx2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzUyLVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfU1JfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzUzOlx0XHR0bHYgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqKWhlX2NtZC1cdTAwM2V2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzU0LVx0XHRtZW1jcHkoYXhfY21kLVx1MDAzZXBhcmFtLnNyX2NmZy5wYXJhbS5vYnNzX3BkX29mZnNldC5vZmZzZXQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM4My1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mzg0Olx0XHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zODUtXHRcdFx0ICAgIFwmIzM0OyVzOiBVbmtub3duIHN1YiBjb21tYW5kOiAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM5MzpzdGF0aWMgdTggbnhwd2lmaV9pc19hcF8xMWF4X3R3dF9zdXBwb3J0ZWQoc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzk0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxMDpib29sIG54cHdpZmlfaXNfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDExOlx0XHRcdFx0ICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDEyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTM6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKnVzZXJfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxNDpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaHdfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQxNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxOTpcdGlmICghbnhwd2lmaV9pc19hcF8xMWF4X3R3dF9zdXBwb3J0ZWQoYnNzX2Rlc2MpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDIwOlx0XHRueHB3aWZpX2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIE1TRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MjEtXHRcdFx0ICAgIFwmIzM0O0FQIGRvbiYjMzk7dCBzdXBwb3J0IHR3dCBmZWF0dXJlXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDI1LVx0aWYgKGJzc19kZXNjLVx1MDAzZWJzc19iYW5kIFx1MDAyNiBCQU5EX0EpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MjY6XHRcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MjctXHRcdFx0cHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZWh3X2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Mjg6XHRcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyOS1cdFx0XHRwcml2LVx1MDAzZXVzZXJfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQzMC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDMxOlx0XHRod19oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDMyLVx0XHRcdHByaXYtXHUwMDNlYWRhcHRlci1cdTAwM2Vod18yZ19oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDMzOlx0XHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzQtXHRcdFx0cHJpdi1cdTAwM2V1c2VyXzJnX2hlX2NhcDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDM3LVx0aWYgKCEoaHdfaGVfY2FwLVx1MDAzZWhlX21hY19jYXBbMF0gXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQzODpcdFx0bnhwd2lmaV9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBNU0csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDM5LVx0XHRcdCAgICBcJiMzNDtGVyBkb24mIzM5O3Qgc3VwcG9ydCBUV1RcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NDMtXHRpZiAoISh1c2VyX2hlX2NhcC1cdTAwM2VoZV9tYWNfY2FwWzBdIFx1MDAyNiBIRV9NQUNfQ0FQX1RXVF9SRVFfU1VQUE9SVCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NDQ6XHRcdG54cHdpZmlfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ0NS1cdFx0XHQgICAgXCYjMzQ7VVNFUiBIRV9NQUNfQ0FQIGRvbiYjMzk7dCBzdXBwb3J0IFRXVFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTI6dTggbnhwd2lmaV9pc19zdGFfMTFheF90d3RfcmVxX3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDU0Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NTUtXHR1OCByZXQgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NTktXHRcdGlmIChwcml2LVx1MDAzZWNvbmZpZ19iYW5kcyBcdTAwMjYgQkFORF9BQVgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDYwOlx0XHRcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKXByaXYtXHUwMDNldXNlcl9oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDYxLVx0XHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDYyOlx0XHRcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKXByaXYtXHUwMDNldXNlcl8yZ19oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDYzLVx0XHRyZXQgPSB1c2VyX2hlX2NhcC1cdTAwM2VoZV9tYWNfY2FwWzBdIFx1MDAyNiBIRV9NQUNfQ0FQX1RXVF9SRVFfU1VQUE9SVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ2OTppbnQgbnhwd2lmaV9jbWRfdHd0X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3MC1cdFx0XHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzE6XHRcdFx0c3RydWN0IG54cHdpZmlfdHd0X2NmZyAqdHd0X2NmZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NzIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3MzpcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDc0LVx0c3RydWN0IGhvc3RfY21kX3R3dF9jZmcgKnR3dF9jZmdfY21kID0gXHUwMDI2Y21kLVx1MDAzZXBhcmFtcy50d3RfY2ZnO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3NTpcdHN0cnVjdCBueHB3aWZpX3R3dF9zZXR1cCAqdHd0X3NldHVwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3NjpcdHN0cnVjdCBueHB3aWZpX3R3dF90ZWFyZG93biAqdHd0X3RlYXJkb3duO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3NzpcdHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKnR3dF9yZXBvcnQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc4Olx0c3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uICp0d3RfaW5mb3JtYXRpb247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc5Olx0c3RydWN0IG54cHdpZmlfYnR3dF9hcF9jb25maWcgKmJ0d3RfYXBfY29uZmlnO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ4MC1cdHU4IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5MC1cdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9TRVRVUF9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0OTE6XHRcdHR3dF9zZXR1cCA9IChzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXAgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00OTItXHRcdFx0dHd0X2NmZ19jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0OTQ6XHRcdG1lbXNldCh0d3Rfc2V0dXAsIDB4MDAsIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXApKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00OTUtXHRcdHR3dF9zZXR1cC1cdTAwM2VpbXBsaWNpdCA9IHR3dF9jZmctXHUwMDNlcGFyYW0udHd0X3NldHVwLmltcGxpY2l0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MDctXHRcdHR3dF9zZXR1cC1cdTAwM2ViY25fbWlzc190aHJlc2hvbGQgPSB0d3RfY2ZnLVx1MDAzZXBhcmFtLnR3dF9zZXR1cC5iY25fbWlzc190aHJlc2hvbGQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTA4Olx0XHRjbWRfc2l6ZSAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9zZXR1cCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTA5LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MTAtXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfVEVBUkRPV05fU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTExOlx0XHR0d3RfdGVhcmRvd24gPSAoc3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTEyLVx0XHRcdHR3dF9jZmdfY21kLVx1MDAzZXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MTMtXHRcdG1lbXNldCh0d3RfdGVhcmRvd24sIDB4MDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTE0Olx0XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF90ZWFyZG93bikpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxNS1cdFx0dHd0X3RlYXJkb3duLVx1MDAzZWZsb3dfaWRlbnRpZmllciA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyMC1cdFx0XHR0d3RfY2ZnLVx1MDAzZXBhcmFtLnR3dF90ZWFyZG93bi50ZWFyZG93bl9hbGxfdHd0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyMTpcdFx0Y21kX3NpemUgJiM0Mzs9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfdGVhcmRvd24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyMi1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTIzLVx0Y2FzZSBOWFBXSUZJXzExQVhfVFdUX1JFUE9SVF9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MjQ6XHRcdHR3dF9yZXBvcnQgPSAoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyNS1cdFx0XHR0d3RfY2ZnX2NtZC1cdTAwM2V2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTI2Olx0XHRtZW1zZXQodHd0X3JlcG9ydCwgMHgwMCwgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MjctXHRcdHR3dF9yZXBvcnQtXHUwMDNldHlwZSA9IHR3dF9jZmctXHUwMDNlcGFyYW0udHd0X3JlcG9ydC50eXBlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyODpcdFx0Y21kX3NpemUgJiM0Mzs9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MjktXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzMC1cdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9JTkZPUk1BVElPTl9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MzE6XHRcdHR3dF9pbmZvcm1hdGlvbiA9IChzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24gKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzItXHRcdFx0dHd0X2NmZ19jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzMy1cdFx0bWVtc2V0KHR3dF9pbmZvcm1hdGlvbiwgMHgwMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MzQ6XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTM1LVx0XHR0d3RfaW5mb3JtYXRpb24tXHUwMDNlZmxvd19pZGVudGlmaWVyID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTM4LVx0XHRcdHR3dF9jZmctXHUwMDNlcGFyYW0udHd0X2luZm9ybWF0aW9uLnN1c3BlbmRfZHVyYXRpb247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTM5Olx0XHRjbWRfc2l6ZSAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9pbmZvcm1hdGlvbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTQwLVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDEtXHRjYXNlIE5YUFdJRklfMTFBWF9CVFdUX0FQX0NPTkZJR19TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1NDI6XHRcdGJ0d3RfYXBfY29uZmlnID0gKHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTQzLVx0XHRcdFx0IHR3dF9jZmdfY21kLVx1MDAzZXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDQtXHRcdG1lbXNldChidHd0X2FwX2NvbmZpZywgMHgwMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1NDU6XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IG54cHdpZmlfYnR3dF9hcF9jb25maWcpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDYtXHRcdGJ0d3RfYXBfY29uZmlnLVx1MDAzZWFwX2JjYXN0X2JldF9zdGFfd2FpdCA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1NjU6XHRcdGNtZF9zaXplICYjNDM7PSBzaXplb2Yoc3RydWN0IG54cHdpZmlfYnR3dF9hcF9jb25maWcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU2Ni1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTY3LVx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1Njg6XHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU2OS1cdFx0XHQgICAgXCYjMzQ7VW5rbm93biBzdWIgaWQ6ICVkXFxuXCYjMzQ7LCB0d3RfY2ZnLVx1MDAzZXN1Yl9pZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1Nzg6aW50IG54cHdpZmlfcmV0X3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NzktXHRcdFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTgwOlx0XHRcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTgxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTg5LVx0ICAgIHR3dF9jZmctXHUwMDNlc3ViX2lkID09IE5YUFdJRklfMTFBWF9UV1RfUkVQT1JUX1NVQklEKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTkwOlx0XHRzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICp0d3RfcmVwb3J0ID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1OTE6XHRcdFx0KHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKil0d3RfY2ZnX2NtZC1cdTAwM2V2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU5MzpcdFx0bWVtY3B5KFx1MDAyNnR3dF9jZmctXHUwMDNlcGFyYW0udHd0X3JlcG9ydCwgdHd0X3JlcG9ydCwgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01OTQtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTItLypcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozOiAqIG54cHdpZmk6IDgwMi4xMWF4IHN1cHBvcnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00LSAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oPTE3PXN0YXRpYyBpbmxpbmUgdTE2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6MTg6bnhwd2lmaV9nZXRfaGVfbnNzX21jcyhfX2xlMTYgbWNzX21hcF9zZXQsIGludCBuc3MpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0xOS1cdHJldHVybiAoKGxlMTZfdG9fY3B1KG1jc19tYXBfc2V0KSBcdTAwM2VcdTAwM2UgKDIgKiAobnNzIC0gMSkpKSBcdTAwMjYgMHgzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg9MjI9c3RhdGljIGlubGluZSB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6MjM6bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhfX2xlMTYgKm1jc19tYXBfc2V0LCBpbnQgbnNzLCBpbnQgdmFsdWUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0yNC1cdHUxNiB0ZW1wO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozMTpib29sIG54cHdpZmlfaXNfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6MzI6XHRcdFx0XHQgICBzdHJ1Y3QgIG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM0OnZvaWQgbnhwd2lmaV91cGRhdGVfMTFheF9jYXAoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zNS1cdFx0XHQgICAgIHN0cnVjdCBod19zcGVjX2V4dGVuc2lvbiAqaHdfaGVfY2FwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozNzpib29sIG54cHdpZmlfMTFheF9iYW5kY29uZmlnX2FsbG93ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozODpcdFx0XHRcdCAgICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQwOmludCBueHB3aWZpX2NtZF9hcHBlbmRfMTFheF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0MTpcdFx0XHRcdHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQyLVx0XHRcdFx0dTggKipidWZmZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ0OmludCBueHB3aWZpX2ZpbGxfaGVfY2FwX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ1Olx0XHRcdCAgICBzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00Ni1cdFx0XHQgICAgdTE2IGJhbmRzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0NzppbnQgbnhwd2lmaV9jbWRfMTFheF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00OC1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDk6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2ZnICpheF9jZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUxOmludCBueHB3aWZpX3JldF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTUyLVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1MzpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9oZV9jZmcgKmF4X2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NTU6aW50IG54cHdpZmlfY21kXzExYXhfY21kKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTYtXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU3Olx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2NtZF9jZmcgKmF4X2NtZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NTk6aW50IG54cHdpZmlfcmV0XzExYXhfY21kKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjAtXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjYxOlx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2NtZF9jZmcgKmF4X2NtZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NjM6aW50IG54cHdpZmlfY21kX3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02NC1cdFx0XHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo2NTpcdFx0XHRzdHJ1Y3Qgbnhwd2lmaV90d3RfY2ZnICp0d3RfY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo2NzppbnQgbnhwd2lmaV9yZXRfdHd0X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTY4LVx0XHRcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY5Olx0XHRcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjcxOnU4IG54cHdpZmlfaXNfc3RhXzExYXhfdHd0X3JlcV9zdXBwb3J0ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNzItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMi0vKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MzogKiBueHB3aWZpOiA4MDIuMTFoIGhlbHBlcnNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTQtICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0xMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jOjEzOnZvaWQgbnhwd2lmaV9pbml0XzExaF9wYXJhbXMoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTE0LXtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEwOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODYxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipLY29uZmlnIERpdmUqKgoKT2theSwgdGltZSB0byBnZXQgc3RhcnRlZC4gTXkgZmlyc3QgbW92ZSBpcyB1c3VhbGx5IHRvIGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZXMsIGVzcGVjaWFsbHkgaW4gYSBuZXcgY29kZWJhc2UgbGlrZSB0aGlzLiBMZXQmIzM5O3Mgc2VlLi4uIGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBhbGwgdGhlIGVzc2VudGlhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBOWFAgV2ktRmkgZHJpdmVyIHdpbGwgbGl2ZSwgYW5kIGl0JiMzOTtzIHRoZSBnYXRld2F5IHRvIHVuZGVyc3RhbmRpbmcgd2hhdCBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkLCB3aGF0IGRlcGVuZGVuY2llcyBleGlzdCwgYW5kIGhvdyB0aGUgZHJpdmVyIGlzIGludGVuZGVkIHRvIGJlIHVzZWQuIEkgY2FuIHByb2JhYmx5IHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBjb3JlIHNldCBvZiBmZWF0dXJlcywgaG93IHRvIGVuYWJsZSBhbmQgZGlzYWJsZSB0aGVtLCBhbnkgc3BlY2lmaWMgaGFyZHdhcmUgcmVxdWlyZW1lbnRzLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIGNvbXBpbGUtdGltZSBkZXBlbmRlbmNpZXMuIEZyb20gaGVyZSBJIGNhbiBzdGFydCB0byBmbGVzaCBvdXQgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgZHJpdmVyIGFuZCB3aGF0IGl0IGNhbiBkby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTlhQV0lGSVxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIFdpRmkgRHJpdmVyXCYjMzQ7IGlmIENPTVBJTEVfVEVTVFxuICAgNDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTlhQXG4gICA3Olx0XHQgIDgwMi4xMW4vYWMgY2hpcHNldHMuXG4gICA4Olx0XG4gICA5Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDEwOlx0XHQgIG54cHdpZmkuXG4gIDExOlx0XG4gIDEyOlx0Y29uZmlnIE5YUFdJRklfU0RJT1xuICAxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIFdpRmkgRHJpdmVyIGZvciBJVzYxeFwmIzM0O1xuICAxNDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMSBcdTAwMjZcdTAwMjYgTU1DXG4gIDE1Olx0XHRzZWxlY3QgTlhQV0lGSVxuICAxNjpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAxNzpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDE4Olx0XHRoZWxwXG4gIDE5Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBOWFBcbiAgMjA6XHRcdCAgSVc2MXggaW50ZXJmYWNlLlxuICAyMTpcdFxuICAyMjpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICAyMzpcdFx0ICBueHB3aWZpX3NkaW8uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM0MTQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA5MzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIHRoaXMgcGF0Y2ggcmVxdWlyZXMgY2FyZWZ1bCBjb25zaWRlcmF0aW9uIHJlZ2FyZGluZyBmdXp6aW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGVzcGVjaWFsbHkgc2luY2UgaXQmIzM5O3MgdG91Y2hpbmcgYm90aCBNTUMvU0RJTyBhbmQgYW4gTlhQIFdpLUZpIGRyaXZlci4KClRoZSBwYXRjaCBpdHNlbGYgc3BhbnMgc2V2ZXJhbCBmaWxlczogYHF1aXJrcy5oYCwgYDExbi5jYCwgYGZ3LmhgLCBgc2Rpby5jYCwgYHNkaW8uaGAsIGFuZCBgc2Rpb19pZHMuaGAuIENsZWFybHksIHRoaXMgaW52b2x2ZXMgZml4ZXMgYW5kIG1vZGlmaWNhdGlvbnMgcmVsYXRlZCB0byB0aGUgTlhQIFdpLUZpIGRyaXZlciAoYG54cHdpZmlgKSwgcGFydGljdWxhcmx5IGl0cyBpbnRlcmFjdGlvbiB3aXRoIFNESU8gKFNlY3VyZSBEaWdpdGFsIElucHV0IE91dHB1dCkuIFNlY3Rpb24gMSBhbmQgU2VjdGlvbiAyIGhlcmUgaXMgdGhlIG1vc3QgaW1wb3J0YW50IHBhcnQgdG8gZGVjaWRlIGlmIHdlIGNhbiBmdXp6IHRoaXMuCgpMb29raW5nIGF0IHRoZSBjb2RlLCBJIHNlZSBhbiBTRElPIGZpeHVwIHRhYmxlIGluIGBxdWlya3MuaGAgYmVpbmcgdXBkYXRlZCwgYWxvbmcgd2l0aCBjaGFuZ2VzIGluIGAxMW4uY2AgdGhhdCBhcHBlYXIgdG8gcmVsYXRlIHRvIFdpLUZpIGNoYW5uZWwgd2lkdGggKDgwTUh6LCA0ME1IeikgYW5kIHBvdGVudGlhbGx5IDgwMi4xMWFjL24gc3VwcG9ydC4gVGhlIG90aGVyIGZpbGVzIHNlZW0gdG8gcHJvdmlkZSBkZWZpbml0aW9ucyBhbmQgc3VwcG9ydGluZyBjb2RlIGZvciBTRElPLCBvciB0aGUgZHJpdmVyIGl0c2VsZi4KClRoZSBjcml0aWNhbCBxdWVzdGlvbiBub3cgaXMgcmVhY2hhYmlsaXR5IHdpdGhpbiBhIHN0YW5kYXJkIGZ1enppbmcgc2V0dXAsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSB1c2VkIGJ5IHN5emthbGxlci4gVGhlIGtleSBpcyB3aGV0aGVyIHRoaXMgY29kZSwgb3IgdGhlIGhhcmR3YXJlIGl0IGludGVyYWN0cyB3aXRoLCBpcyAqYWN0dWFsbHkqIHJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4KCk15IHByaW1hcnkgY29uY2VybiBpcyB0aGF0IGBueHB3aWZpYCBpcyBhbiBTRElPIFdpLUZpIGRyaXZlciAoYG54cHdpZmlfc2Rpb2ApLiBUaGUgcXVlc3Rpb24gYmVjb21lczogRG9lcyBRRU1VLCBpbiBhIHR5cGljYWwgc3l6a2FsbGVyIHNldHVwLCAqZW11bGF0ZSogdGhlIE5YUCBJVzYxMCAvIElXNjF4IFNESU8gaGFyZHdhcmUgb3IsIHBlcmhhcHMsIGEgbW9yZSBnZW5lcmFsIFNESU8gYnVzPyBEb2VzIGl0IHByb3ZpZGUgYSBzb2Z0d2FyZS1lbXVsYXRlZCBTRElPIGRldmljZSBvciBhIHNwZWNpZmljIE5YUCBXaS1GaSBoYXJkd2FyZSBhYnN0cmFjdGlvbj8gSWYgbm90LCB0aGVuIHRoaXMgY29kZSBtaWdodCBiZSBlZmZlY3RpdmVseSAqdW5yZWFjaGFibGUqIGZvciBmdXp6aW5nLCBhbmQgdGh1cyBhIHdhc3RlIG9mIHJlc291cmNlcy4gRG8gTGludXggb3Igc3l6a2FsbGVyIGhhdmUgYW4gU0RJTyBnYWRnZXQgb3Igc29mdHdhcmUgbW9jayBmb3IgTlhQIFdpRmk/IE5vLgoKVGhlIGd1aWRpbmcgcHJpbmNpcGxlIGhlcmUgaXMgdGhhdCBpZiB0aGUgbW9kaWZpZWQgY29kZSByZWxpZXMgb24gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBpdCYjMzk7cyBub3Qgd29ydGggZnV6emluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIE5YUCBXaS1GaSBTRElPIGRyaXZlciBjYW4gYmUgcmVhY2hlZCEgRG9lcyBzeXprYWxsZXIgaGF2ZSBhbnkgdmlydHVhbCBTRElPIGRyaXZlcnMgb3IgVVNCLXRvLVNESU8gb3Igc29tZXRoaW5nIGluIHRoZSBMaW51eCB0cmVlPyBUaGF0IHdpbGwgYmUgdGhlIGtleSB0byBtYWtpbmcgdGhpcyBkZXRlcm1pbmF0aW9uIGFuZCBkZWNpZGluZyBpZiB0aGlzIGlzIGEgd29ydGh3aGlsZSB0YXJnZXQgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEwOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NkaW9fcmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2JsdWV0b290aC9idG1ydmxfc2Rpby5jPTE3NDU9c3RhdGljIGludCBfX2luaXQgYnRtcnZsX3NkaW9faW5pdF9tb2R1bGUodm9pZClcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXJ2bF9zZGlvLmMtMTc0Ni17XG5kcml2ZXJzL2JsdWV0b290aC9idG1ydmxfc2Rpby5jOjE3NDc6XHRpZiAoc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YnRfbXJ2bF9zZGlvKSAhPSAwKSB7XG5kcml2ZXJzL2JsdWV0b290aC9idG1ydmxfc2Rpby5jLTE3NDgtXHRcdEJUX0VSUihcJiMzNDtTRElPIERyaXZlciBSZWdpc3RyYXRpb24gRmFpbGVkXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmM9Mjc0PXN0YXRpYyB2b2lkIHNkaW9fbGVnYWN5X3NodXRkb3duKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jLTI4Mi0vKipcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYzoyODM6ICpcdF9fc2Rpb19yZWdpc3Rlcl9kcml2ZXIgLSByZWdpc3RlciBhIGZ1bmN0aW9uIGRyaXZlclxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jLTI4NC0gKlx0QGRydjogU0RJTyBmdW5jdGlvbiBkcml2ZXJcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMjg2LSAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jOjI4NzppbnQgX19zZGlvX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3Qgc2Rpb19kcml2ZXIgKmRydiwgc3RydWN0IG1vZHVsZSAqb3duZXIpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMjg4LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMzAxLX1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYzozMDI6RVhQT1JUX1NZTUJPTF9HUEwoX19zZGlvX3JlZ2lzdGVyX2RyaXZlcik7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMzAzLVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb191YXJ0LmM9MTExNT1zdGF0aWMgaW50IF9faW5pdCBzZGlvX3VhcnRfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb191YXJ0LmMtMTE0MC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb191YXJ0LmM6MTE0MTpcdHJldCA9IHNkaW9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNnNkaW9fdWFydF9kcml2ZXIpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvX3VhcnQuYy0xMTQyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvc2Rpby5jPTE5NT1pbnQgYjQzX3NkaW9faW5pdCh2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL3NkaW8uYy0xOTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL3NkaW8uYzoxOTc6XHRyZXR1cm4gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YjQzX3NkaW9fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9zZGlvLmMtMTk4LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM9MTI3MT1pbnQgYnJjbWZfc2Rpb19yZWdpc3Rlcih2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jLTEyNzIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjEyNzM6XHRyZXR1cm4gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YnJjbWZfc2RtbWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYy0xMjc0LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzL2lmX3NkaW8uYz0xMzkwPXN0YXRpYyBpbnQgX19pbml0IGlmX3NkaW9faW5pdF9tb2R1bGUodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzL2lmX3NkaW8uYy0xMzk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhcy9pZl9zZGlvLmM6MTM5NzpcdHJldCA9IHNkaW9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmlmX3NkaW9fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXMvaWZfc2Rpby5jLTEzOTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmM9NTAzPXN0YXRpYyBpbnQgX19pbml0IHdmeF9jb3JlX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYy01MTItXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTU1DKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmM6NTEzOlx0XHRyZXQgPSBzZGlvX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZ3Znhfc2Rpb19kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmMtNTE0LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L2N3MTIwMC9jdzEyMDBfc2Rpby5jPTM4OD1zdGF0aWMgaW50IF9faW5pdCBjdzEyMDBfc2Rpb19pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL2N3MTIwMF9zZGlvLmMtNDAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL2N3MTIwMF9zZGlvLmM6NDAxOlx0cmV0ID0gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2c2Rpb19kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL2N3MTIwMF9zZGlvLmMtNDAyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz00NTM9c3RhdGljIGludCBfX2luaXQgcnR3X2Rydl9lbnRyeSh2b2lkKVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtNDU0LXtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jOjQ1NTpcdHJldHVybiBzZGlvX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZydGw4NzIzYnNfc2Rpb19kcml2ZXIpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtNDU2LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTA6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYzMzMKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAyNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgbnhwd2lmaV9zZGlvIERyaXZlciYjMzk7cyBSZWFjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGlzc2VjdCB0aGlzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdmVyaWZ5IGhvdyB0aGUgYG54cHdpZmlfc2Rpb2AgZHJpdmVyIHJlZ2lzdGVycy4gUmlnaHQsIHNvIGl0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZDogSSBzZWUgaXQmIzM5O3MgcmVnaXN0ZXJlZCB0aHJvdWdoIGBtb2R1bGVfc2Rpb19kcml2ZXJgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNgLiBUaGF0IHRlbGxzIG1lIGl0IHVzZXMgYHNkaW9fcmVnaXN0ZXJfZHJpdmVyYCwgd2hpY2ggaXMgc3RhbmRhcmQuCgpOb3csIGxldCYjMzk7cyBzZWUgd2hhdCBxdWlya3MgbWlnaHQgYmUgaW4gcGxheS4gSSBjaGVjayBgZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaGAuIEFoLCB5ZXMsIGl04oCZcyBjb21waWxlZCBpbnRvIHRoZSBNTUMgY29yZSB3aGVuIGBDT05GSUdfTU1DYCBpcyBlbmFibGVkLiBBbmQsIGFzIGV4cGVjdGVkLCBgc2Rpb19maXh1cF9tZXRob2RzYCBjYW4gZ2V0IG1hdGNoZWQgZHVyaW5nIHRoZSBTRElPIGRldmljZSBkZXRlY3Rpb24gYW5kIGluaXRpYWxpemF0aW9uLCBzcGVjaWZpY2FsbHksIHdpdGggYG1tY19maXh1cF9kZXZpY2VgLgoKSGVyZSYjMzk7cyB0aGUgc25hZy4gQmVjYXVzZSwgYXMgZmFyIGFzIEkgY2FuIHRlbGwsIGFuZCBoYXZlIGJlZW4gYWJsZSB0byByZXByb2R1Y2UsIHRoZXJlJiMzOTtzIG5vIFNESU8gaGFyZHdhcmUgZm9yIE5YUCBJVzYxMCBvciBJVzYxeCBhdHRhY2hlZCBvciBlbXVsYXRlZCBpbiB0eXBpY2FsIFFFTVUgc2V0dXBzIG9yIGV2ZW4gb24gR29vZ2xlIENvbXB1dGUgRW5naW5lIFZNcywgdW5saWtlIFVTQiBnYWRnZXRzIG9yIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAuIFRoYXQgbWVhbnMgdGhlIGRyaXZlciYjMzk7cyBgcHJvYmVgIGZ1bmN0aW9uLCAxMW4gVExWcywgYW55IFNESU8gb3BlcmF0aW9ucywgYW5kIHRob3NlIGltcG9ydGFudCBxdWlya3MgYXJlLCB1bmZvcnR1bmF0ZWx5LCB1bnJlYWNoYWJsZSBpbiB0aGVzZSBlbnZpcm9ubWVudHMuIEl0JiMzOTtzIHNpbXBseSBub3QgYmVpbmcgZXhlcmNpc2VkLgoKU28sIEkgbmVlZCB0byBsb29rIGludG8gYSB3b3JrYXJvdW5kLiBDYW4gSSBpbnN0YW50aWF0ZSBgbnhwd2lmaWAgdGhyb3VnaCBgbWFjODAyMTFfaHdzaW1gLCBwZXJoYXBzLCBvciB1c2luZyBuZXRsaW5rLCBvciBldmVuIGEgbW9jayBkZXZpY2U/IFRoYXQgc2VlbXMgdG8gYmUgdGhlIG5leHQgbG9naWNhbCBzdGVwIOKAkyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgZHJpdmVyJiMzOTtzIGVudHJ5IHBvaW50cyBvciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMuIFRoYXQmIzM5O3MgdGhlIG9ubHkgd2F5IEkmIzM5O20gZ29pbmcgdG8gYWN0dWFsbHkgZ2V0IGEgbG9vayBhdCBob3cgdGhpcyBpcyBzdXBwb3NlZCB0byBiZWhhdmUgYW5kIHRlc3QgdGhpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxMDoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfaW5pdHxzdWJzeXNfaW5pdGNhbGx8bW9kdWxlX3NkaW9fZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTE2NjA9bnhwd2lmaV9jbGVhbnVwX21vZHVsZSh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jOjE2Njc6bW9kdWxlX2luaXQobnhwd2lmaV9pbml0X21vZHVsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtMTY2OC1tb2R1bGVfZXhpdChueHB3aWZpX2NsZWFudXBfbW9kdWxlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmM9MjMwOT1zdGF0aWMgc3RydWN0IG54cHdpZmlfaWZfb3BzIHNkaW9fb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYy0yMzM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jOjIzMzc6bW9kdWxlX3NkaW9fZHJpdmVyKG54cHdpZmlfc2Rpbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtMjMzOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTA6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjczMDMKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBueHB3aWZpX2luaXRfbW9kdWxlYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoIHRoaXMgV2lGaSBtb2R1bGUgaW5pdGlhbGl6YXRpb24uIExldCYjMzk7cyBzdGFydCB3aXRoIGBueHB3aWZpX2luaXRfbW9kdWxlYCBjYWxsZWQgZnJvbSBgbWFpbi5jYC4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBlbnRyeSBwb2ludC4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHN5c3RlbSBzZXRzIHRoaW5ncyB1cCwgd2hhdCByZXNvdXJjZXMgYXJlIGFsbG9jYXRlZCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyByZWQgZmxhZ3MgaW4gdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBzdGFuZGFyZCBzdHVmZjogZHJpdmVyIHJlZ2lzdHJhdGlvbiwgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gKHJlZ2lzdGVycywgaW50ZXJydXB0cyksIG1heWJlIHNvbWUgc2FuaXR5IGNoZWNrcyBvbiB0aGUgaGFyZHdhcmUsIGFuZCBsaWtlbHkgc29tZSB0YXNrIGNyZWF0aW9uIG9yIHRocmVhZCBzcGF3bmluZyB0byBoYW5kbGUgdGhlIGJhY2tncm91bmQgcHJvY2Vzc2luZy4gR2l2ZW4gdGhpcyBpcyB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uLCBJIGV4cGVjdCB0aGVyZSB3aWxsIGJlIGF0IGxlYXN0IGEgY2FsbCB0byByZWdpc3RlciB0aGUgbW9kdWxlIHdpdGggdGhlIGtlcm5lbC4gSSYjMzk7bGwgbmVlZCB0byBmb2N1cyBvbiB3aGF0IGhhcHBlbnMgYmVmb3JlIGFuZCBhZnRlciB0aGF0IGNhbGwgdG8gZmlndXJlIG91dCB0aGUgbW9kdWxlJiMzOTtzIGludGVyYWN0aW9ucyB3aXRoIHRoZSBzeXN0ZW0uIExldCYjMzk7cyBzZWUgaWYgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBpbiBhIGxvZ2ljYWwgbWFubmVyIGFuZCBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgb3Bwb3J0dW5pdGllcyBmb3Igb3B0aW1pemF0aW9uIG9yIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEwOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNjQ1Olx0fVxuMTY0NjpcdEVYUE9SVF9TWU1CT0xfR1BMKF9ueHB3aWZpX2RiZyk7XG4xNjQ3Olx0XG4xNjQ4Olx0LyogTW9kdWxlIGluaXQ6IGluaXQgZGVidWdmcyBpZiBlbmFibGVkLiAqL1xuMTY0OTpcdHN0YXRpYyBpbnRcbjE2NTA6XHRueHB3aWZpX2luaXRfbW9kdWxlKHZvaWQpXG4xNjUxOlx0e1xuMTY1MjpcdCNpZmRlZiBDT05GSUdfREVCVUdfRlNcbjE2NTM6XHRcdG54cHdpZmlfZGVidWdmc19pbml0KCk7XG4xNjU0Olx0I2VuZGlmXG4xNjU1Olx0XHRyZXR1cm4gMDtcbjE2NTY6XHR9XG4xNjU3Olx0XG4xNjU4Olx0LyogTW9kdWxlIGV4aXQ6IHJlbW92ZSBkZWJ1Z2ZzIGlmIGVuYWJsZWQuICovXG4xNjU5Olx0c3RhdGljIHZvaWRcbjE2NjA6XHRueHB3aWZpX2NsZWFudXBfbW9kdWxlKHZvaWQpXG4xNjYxOlx0e1xuMTY2MjpcdCNpZmRlZiBDT05GSUdfREVCVUdfRlNcbjE2NjM6XHRcdG54cHdpZmlfZGVidWdmc19yZW1vdmUoKTtcbjE2NjQ6XHQjZW5kaWZcbjE2NjU6XHR9XG4xNjY2Olx0XG4xNjY3Olx0bW9kdWxlX2luaXQobnhwd2lmaV9pbml0X21vZHVsZSk7XG4xNjY4Olx0bW9kdWxlX2V4aXQobnhwd2lmaV9jbGVhbnVwX21vZHVsZSk7XG4xNjY5Olx0XG4xNjcwOlx0TU9EVUxFX0FVVEhPUihcJiMzNDtOWFAgSW50ZXJuYXRpb25hbCBMdGQuXCYjMzQ7KTtcbjE2NzE6XHRNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7TlhQIFdpRmkgRHJpdmVyIHZlcnNpb24gXCYjMzQ7IFZFUlNJT04pO1xuMTY3MjpcdE1PRFVMRV9WRVJTSU9OKFZFUlNJT04pO1xuMTY3MzpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEwOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3OTc0CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgYG54cHdpZmlfc2Rpb2AgcHJvYmUsIGRpdmluZyBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNgOgoKKipQcm9iaW5nIHRoZSBgbnhwd2lmaV9zZGlvYCBNb2R1bGUqKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGlzIGBueHB3aWZpX3NkaW9gIHByb2JlIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaW5pdGlhbGl6ZXMgYW5kIGludGVyYWN0cyB3aXRoIHRoZSBTRElPIGludGVyZmFjZSBmb3IgdGhlIE5YUCBXaS1GaSBjaGlwLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdyB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uY2AuIEZpcnN0LCBJJiMzOTtsbCBpZGVudGlmeSB0aGUgZW50cnkgcG9pbnQgYW5kIGZvbGxvdyBob3cgdGhlIGRyaXZlciBzZXRzIHVwIHRoZSBTRElPIGhvc3QgaW50ZXJmYWNlIGFuZCB0aGUgZGV2aWNlIGl0c2VsZi4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBTRElPIGNvbW1hbmQgc2VxdWVuY2VzLCB0aGUgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgYW55IHBvd2VyIG1hbmFnZW1lbnQgcm91dGluZXMgaW52b2x2ZWQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGVzc2VudGlhbCBzdGVwczogYXJlIHRoZXkgY29uZmlndXJpbmcgdGhlIFNESU8gY2FyZCByZWdpc3RlcnM/IE1hcHBpbmcgdGhlIGRldmljZSBtZW1vcnk/IEluaXRpYWxpemluZyB0aGUgZmlybXdhcmUgZG93bmxvYWQgcHJvY2VzcywgaWYgYW55PyBJIHdhbnQgdG8gaWRlbnRpZnkgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBzZWUgaG93IHRoZSBkcml2ZXIgbGlua3MgaXRzZWxmIHRvIHRoZSBTRElPIGJ1cy4gSSYjMzk7bGwgYWxzbyBjaGVjayBmb3IgYW55IGVycm9yIGhhbmRsaW5nIG9yIHJldHJ5IG1lY2hhbmlzbXMgZm9yIHJvYnVzdG5lc3MuIEFueSB1bnVzdWFsIFNESU8gY2FyZCBhY2Nlc3MgcGF0dGVybnMsIHNwZWNpZmljIHRvIHRoZSBOWFAgY2hpcCwgYXJlIGFsc28gb24gbXkgcmFkYXIuIE15IGdvYWwgaXMgdG8gZGV2ZWxvcCBhIGNsZWFyIG1lbnRhbCBtb2RlbCBvZiB0aGUgcHJvYmUgb3BlcmF0aW9uLCBpbmNsdWRpbmcgdGhlIGRlcGVuZGVuY2llcyBvbiBvdGhlciBzdWJzeXN0ZW1zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxMDoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtueHB3aWZpX3NkaW9fcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmM9MTM1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYzoxMzY6bnhwd2lmaV9zZGlvX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtMTM3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmM9NDg2PXN0YXRpYyBzdHJ1Y3Qgc2Rpb19kcml2ZXIgbnhwd2lmaV9zZGlvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYy00ODgtXHQuaWRfdGFibGUgPSBueHB3aWZpX2lkcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYzo0ODk6XHQucHJvYmUgPSBueHB3aWZpX3NkaW9fcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtNDkwLVx0LnJlbW92ZSA9IG54cHdpZmlfc2Rpb19yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEwOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NTk3CgkJCQkJCQlvdXRwdXQ6IDExOAoJCQkJCQkJdGhvdWdodHM6IDY3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgbnhwd2lmaV9zZGlvYCBEcml2ZXIgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgbnhwd2lmaV9zZGlvYCBkcml2ZXIuIFRoZSBkcml2ZXIgaXRzZWxmIGlzIHNwZWNpZmljYWxseSBmb3IgU0RJTyBXaS1GaSBkZXZpY2VzLCB0YXJnZXRpbmcgTlhQJiMzOTtzIElXNjF4IGFuZCBJVzYxMCBjaGlwc2V0cy4gTXkgdW5kZXJzdGFuZGluZywgYW5kIEkmIzM5O20gc3VyZSB5b3Uga25vdyB0aGlzIGFzIHdlbGwsIGlzIHRoYXQgU0RJTyByZXF1aXJlcyBhY3R1YWwgcGh5c2ljYWwgaGFyZHdhcmUuIEl0JiMzOTtzIG5vdCBzb21ldGhpbmcgeW91IGNhbiBqdXN0IHNwaW4gdXAgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpLCB3aGljaCBpcyB3aGF0IHN5emthbGxlciwgb3VyIHByaW1hcnkgZnV6emluZyB0b29sLCB0eXBpY2FsbHkgdXNlcy4KCkkmIzM5O3ZlIHJldmlld2VkIHRoZSBjaGFuZ2VzIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCB0aGVzZSBwYXRjaGVzIGFyZSBhbGwgYWJvdXQgZW5hYmxpbmcgYW5kIHByb3ZpZGluZyBzdXBwb3J0IGZvciB0aGF0IHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUuIExldCYjMzk7cyBicmVhayBpdCBkb3duOgoKKiAgIFRoZXJlJiMzOTtzIGFuIE1NQyBxdWlyayB0YWJsZSBlbnRyeSBhZGRlZCwgd2hpY2ggZGVhbHMgd2l0aCBpbml0aWFsaXppbmcgdGhlIE1NQyBpbnRlcmZhY2Ugc3BlY2lmaWNhbGx5IGZvciB0aGUgTlhQIElXNjEwIFNESU8gZGV2aWNlLgoqICAgV2UmIzM5O3JlIGdldHRpbmcgY2hhbm5lbCBiYW5kd2lkdGggaGFuZGxpbmcgaW4gYDExbi5jYCwgd2hpY2ggbWFrZXMgbWUgdGhpbmsgdGhlcmUmIzM5O3MgYmVlbiBzb21lIG5ldyBmZWF0dXJlcyBhZGRlZCB0aGF0IHJlcXVpcmUgZmlybXdhcmUgY2FwYWJpbGl0aWVzLgoqICAgV2UgaGF2ZSBuZXcgZmlybXdhcmUgbWFjcm9zIGluIGBmdy5oYCwgZGVmaW5pbmcgdmFyaW91cyBmaXJtd2FyZSBjYXBhYmlsaXR5IGJpdHMuCiogICBgc2Rpby5jYCBoYXMgZGV2aWNlIGRlc2NyaXB0b3JzIGFuZCBkZXZpY2UgSUQgdGFibGUgZW50cmllcyBmb3IgSVc2MTAuCiogICBXZSBnZXQgYSBmaXJtd2FyZSBuYW1lIGRlZmluaXRpb24gaW4gYHNkaW8uaGAuCiogICBGaW5hbGx5LCB0aGVyZSBhcmUgU0RJTyBJRHMgYmVpbmcgZGVmaW5lZCBpbiB0aGUgY29tbW9uIFNESU8gSURzIGhlYWRlci4KCk5vdywgYmFzZWQgb24gdGhlIGd1aWRhbmNlIChTZWN0aW9uIDIpIHJlZ2FyZGluZyB3aGVuIHRvIG1hcmsgc29tZXRoaW5nIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLCB0aGlzIHBhdGNoIHNlcmllcyBoaXRzIHRoZSBtYXJrIHBlcmZlY3RseS4gSXQgZmFsbHMgdW5kZXIgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyDigJMgc3BlY2lmaWNhbGx5LCB0aGUgTlhQIElXNjEwL0lXNjF4IFNESU8gV2ktRmkgZGV2aWNlcyByZXF1aXJlIGhhcmR3YXJlIHRoYXQgaXMgTk9UIHByZXNlbnQgaW4gc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzIHVzZWQgYnkgc3l6a2FsbGVyLiBUaGUgY29kZSBwYXRocyBhcmUgc2ltcGx5IGluYWNjZXNzaWJsZS4KClRoZXJlZm9yZSwgdGhlIG9ubHkgcmVhc29uYWJsZSBjb25jbHVzaW9uIGlzIHRoYXQgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGBmYWxzZWAuCgpUaGUgcmVhc29uaW5nIGlzIHByZXR0eSBjb25jaXNlOiB0aGlzIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBhbmQgcXVpcmtzIGZvciBOWFAgSVc2MTAgU0RJTyBXaS1GaSBkZXZpY2VzLCB3aGljaCByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIFNESU8gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4KCk15IGBzZXQtcmVzdWx0c2AgY2FsbCB3aWxsIGxvb2sgbGlrZToKCiogICBgV29ydGhGdXp6aW5nYDogYGZhbHNlYAoqICAgYFJlYXNvbmluZ2A6IENvbmNpc2UgZXhwbGFuYXRpb24gdGhhdCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGFuZCBxdWlya3MgZm9yIE5YUCBJVzYxMCBTRElPIFdpLUZpIGRldmljZXMsIHdoaWNoIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgU0RJTyBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuCiogICBgRW5hYmxlQ29uZmlnc2A6IGBbXWAKKiAgIGBGb2N1c1N5bWJvbHNgOiBgW11gCgpBbmQsIGJlZm9yZSBJIHN1Ym1pdCB0aGF0LCBJJiMzOTttIGRvaW5nIGEgc2FuaXR5IGNoZWNrOiBJJiMzOTt2ZSBnb3QgYWxsIHRoZSBmaWVsZHMgZmlsbGVkIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTA6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgYWRkcyBzdXBwb3J0IGZvciBOWFAgSVc2MTAgU0RJTyBXaS1GaSBkZXZpY2VzLCBpbmNsdWRpbmcgYW4gU0RJTyBNTUMgcXVpcmssIGRldmljZSBJRCByZWdpc3RyYXRpb24sIGFuZCBmaXJtd2FyZSBjYXBhYmlsaXR5IGhhbmRsaW5nIGZvciBjaGFubmVsIGJhbmR3aWR0aHMgaW4gdGhlIG54cHdpZmkgZHJpdmVyLiBUaGVzZSBtb2RpZmllZCBjb2RlIHBhdGhzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgTlhQIFNESU8gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgc3VwcG9ydCBmb3IgTlhQIElXNjEwIFNESU8gV2ktRmkgZGV2aWNlcywgaW5jbHVkaW5nIGFuIFNESU8gTU1DIHF1aXJrLCBkZXZpY2UgSUQgcmVnaXN0cmF0aW9uLCBhbmQgZmlybXdhcmUgY2FwYWJpbGl0eSBoYW5kbGluZyBmb3IgY2hhbm5lbCBiYW5kd2lkdGhzIGluIHRoZSBueHB3aWZpIGRyaXZlci4gVGhlc2UgbW9kaWZpZWQgY29kZSBwYXRocyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIE5YUCBTRElPIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzIChzdWNoIGFzIFFFTVUvR0NFKSwgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEwOjIwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoxOToyOS45NDk4Nzk1NTFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzAyODQ2OTQ5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBhZGRzIHN1cHBvcnQgZm9yIE5YUCBJVzYxMCBTRElPIFdpLUZpIGRldmljZXMsIGluY2x1ZGluZyBhbiBTRElPIE1NQyBxdWlyaywgZGV2aWNlIElEIHJlZ2lzdHJhdGlvbiwgYW5kIGZpcm13YXJlIGNhcGFiaWxpdHkgaGFuZGxpbmcgZm9yIGNoYW5uZWwgYmFuZHdpZHRocyBpbiB0aGUgbnhwd2lmaSBkcml2ZXIuIFRoZXNlIG1vZGlmaWVkIGNvZGUgcGF0aHMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBOWFAgU0RJTyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VL0dDRSksIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoxOToyOS45NDk4ODUzNjFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NjMyNDg5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDE0NmVkODIxZGMxZDZmZjZkYmM3NjlhNzY4YjdhNTA4MDJkZDM4ZTVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgOCAxMDoxOToyOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oIGIvZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaFxcbmluZGV4IGFlM2VjZTg5ZDBhYTcuLjk4Y2I2ODBlM2FjZTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaFxcbisrKyBiL2RyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmhcXG5AQCAtMjExLDYgKzIxMSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1jX2ZpeHVwIF9fbWF5YmVfdW51c2VkIHNkaW9fZml4dXBfbWV0aG9kc1tdID0ge1xcbiBcXHRTRElPX0ZJWFVQKFNESU9fVkVORE9SX0lEX05YUCwgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjFYX0JBU0UsXFxuIFxcdFxcdCAgIGFkZF9xdWlyaywgTU1DX1FVSVJLX0JMS1NaX0ZPUl9CWVRFX01PREUpLFxcbiBcXG4rXFx0U0RJT19GSVhVUChTRElPX1ZFTkRPUl9JRF9OWFAsIFNESU9fREVWSUNFX0lEX05YUF9JVzYxMF9CQVNFLFxcbitcXHRcXHQgICBhZGRfcXVpcmssIE1NQ19RVUlSS19CTEtTWl9GT1JfQllURV9NT0RFKSxcXG4rXFxuIFxcdEVORF9GSVhVUFxcbiB9O1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uY1xcbmluZGV4IGMyYTU0ZDc4MWI0MmEuLmE4M2UyOWVjYzQ2NmUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uY1xcbkBAIC0zNDksNiArMzQ5LDcgQEAgbnhwd2lmaV9jbWRfYXBwZW5kXzExbl90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG4gXFx0XFx0XFx0bnhwd2lmaV9iYW5kX3RvX3JhZGlvX3R5cGUoKHU4KWJzc19kZXNjLVxcdTAwM2Vic3NfYmFuZCk7XFxuIFxcbiBcXHRcXHRpZiAoSVNTVVBQXzExQUNFTkFCTEVEKHByaXYtXFx1MDAzZWFkYXB0ZXItXFx1MDAzZWZ3X2NhcF9pbmZvKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgIUlTU1VQUF9OT184ME1IWihwcml2LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2Vmd19jYXBfZXh0KSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgYnNzX2Rlc2MtXFx1MDAzZWJjbl92aHRfb3BlciBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgYnNzX2Rlc2MtXFx1MDAzZWJjbl92aHRfb3Blci1cXHUwMDNlY2hhbl93aWR0aCA9PVxcbiBcXHRcXHQgICAgSUVFRTgwMjExX1ZIVF9DSEFOV0lEVEhfODBNSFopIHtcXG5AQCAtMzU5LDcgKzM2MCw4IEBAIG54cHdpZmlfY21kX2FwcGVuZF8xMW5fdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuIFxcdFxcdFxcdFxcdCgoQ0hBTl9CV184ME1IWiBcXHUwMDNjXFx1MDAzY1xcbiBcXHRcXHRcXHRcXHQgIEJBTkRfQ0ZHX0NIQU5fV0lEVEhfU0hJRlRfQklUKSBcXHUwMDI2XFxuIFxcdFxcdFxcdFxcdCBCQU5EX0NGR19DSEFOX1dJRFRIX01BU0spO1xcbi1cXHRcXHR9IGVsc2UgaWYgKHNiYW5kLVxcdTAwM2VodF9jYXAuY2FwIFxcdTAwMjZcXG4rXFx0XFx0fSBlbHNlIGlmIChJU1NVUFBfNDBNSFpfRU5BQkxFRChwcml2LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2Vmd19jYXBfZXh0KSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQgICBzYmFuZC1cXHUwMDNlaHRfY2FwLmNhcCBcXHUwMDI2XFxuIFxcdFxcdFxcdCAgIElFRUU4MDIxMV9IVF9DQVBfU1VQX1dJRFRIXzIwXzQwIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgIGJzc19kZXNjLVxcdTAwM2ViY25faHRfb3Blci1cXHUwMDNlaHRfcGFyYW0gXFx1MDAyNlxcbiBcXHRcXHRcXHQgICBJRUVFODAyMTFfSFRfUEFSQU1fQ0hBTl9XSURUSF9BTlkpIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZncuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2Z3LmhcXG5pbmRleCAxODgxMTBiMDIwY2ZhLi4xMjQ3MjhhNzI0NDIwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2Z3LmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9mdy5oXFxuQEAgLTMzNCw2ICszMzQsOCBAQCBlbnVtIE5YUFdJRklfODAyXzExX1BSSVZBQ1lfRklMVEVSIHtcXG4gI2RlZmluZSBERlNfQ0hBTl9NT1ZFX1RJTUUgICAgICAxMDAwMFxcbiBcXG4gI2RlZmluZSBJU1NVUFBfMTFBWEVOQUJMRUQoZndfY2FwX2V4dCkgKChmd19jYXBfZXh0KSBcXHUwMDI2IEJJVCg3KSlcXG4rI2RlZmluZSBJU1NVUFBfTk9fODBNSFooZndfY2FwX2V4dCkgICAgICAoKGZ3X2NhcF9leHQpIFxcdTAwMjYgQklUKDgpKVxcbisjZGVmaW5lIElTU1VQUF80ME1IWl9FTkFCTEVEKGZ3X2NhcF9leHQpICgoZndfY2FwX2V4dCkgXFx1MDAyNiBCSVQoMTUpKVxcbiBcXG4gI2RlZmluZSBIT1NUX0NNRF9HRVRfSFdfU1BFQyAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAzXFxuICNkZWZpbmUgSE9TVF9DTURfODAyXzExX1NDQU4gICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNcXG5pbmRleCA4ZWYwZjZlYjQ5ZTI4Li5mNGRlNDk0YmYyZjJhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uY1xcbkBAIC05Niw2ICs5NiwxOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG54cHdpZmlfc2Rpb19kZXZpY2Ugbnhwd2lmaV9zZGlvX2l3NjF4ID0ge1xcbiBcXHQuY2FuX2V4dF9zY2FuID0gdHJ1ZSxcXG4gfTtcXG4gXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgbnhwd2lmaV9zZGlvX2RldmljZSBueHB3aWZpX3NkaW9faXc2MTAgPSB7XFxuK1xcdC5maXJtd2FyZSA9IElXNjEwX1NESU9fRldfTkFNRSxcXG4rXFx0LnJlZyA9IFxcdTAwMjZueHB3aWZpX3JlZ19pdzYxeCxcXG4rXFx0Lm1heF9wb3J0cyA9IDMyLFxcbitcXHQubXBfYWdnX3BrdF9saW1pdCA9IDE2LFxcbitcXHQudHhfYnVmX3NpemUgPSBOWFBXSUZJX1RYX0RBVEFfQlVGX1NJWkVfNEssXFxuK1xcdC5tcF90eF9hZ2dfYnVmX3NpemUgPSBOWFBXSUZJX01QX0FHR1JfQlNJWkVfTUFYLFxcbitcXHQubXBfcnhfYWdnX2J1Zl9zaXplID0gTlhQV0lGSV9NUF9BR0dSX0JTSVpFX01BWCxcXG4rXFx0LmNhbl9kdW1wX2Z3ID0gdHJ1ZSxcXG4rXFx0LmZ3X2R1bXBfZW5oID0gdHJ1ZSxcXG4rXFx0LmNhbl9leHRfc2NhbiA9IHRydWUsXFxuK307XFxuK1xcbiBzdGF0aWMgc3RydWN0IG1lbW9yeV90eXBlX21hcHBpbmcgZ2VuZXJpY19tZW1fdHlwZV9tYXBbXSA9IHtcXG4gXFx0e1xcXCJEVU1QXFxcIiwgTlVMTCwgMCwgMHhERH0sXFxuIH07XFxuQEAgLTQ1OCw2ICs0NzEsOCBAQCBzdGF0aWMgdm9pZCBueHB3aWZpX3NkaW9fY29yZWR1bXAoc3RydWN0IGRldmljZSAqZGV2KVxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHNkaW9fZGV2aWNlX2lkIG54cHdpZmlfaWRzW10gPSB7XFxuIFxcdHtTRElPX0RFVklDRShTRElPX1ZFTkRPUl9JRF9OWFAsIFNESU9fREVWSUNFX0lEX05YUF9JVzYxWCksXFxuIFxcdFxcdC5kcml2ZXJfZGF0YSA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZueHB3aWZpX3NkaW9faXc2MXh9LFxcbitcXHR7U0RJT19ERVZJQ0UoU0RJT19WRU5ET1JfSURfTlhQLCBTRElPX0RFVklDRV9JRF9OWFBfSVc2MTApLFxcbitcXHRcXHQuZHJpdmVyX2RhdGEgPSAodW5zaWduZWQgbG9uZylcXHUwMDI2bnhwd2lmaV9zZGlvX2l3NjEwfSxcXG4gXFx0e30sXFxuIH07XFxuIFxcbkBAIC0yMzI2LDMgKzIzNDEsNCBAQCBNT0RVTEVfREVTQ1JJUFRJT04oXFxcIk5YUCBXaUZpIFNESU8gRHJpdmVyIHZlcnNpb24gXFxcIiBTRElPX1ZFUlNJT04pO1xcbiBNT0RVTEVfVkVSU0lPTihTRElPX1ZFUlNJT04pO1xcbiBNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuIE1PRFVMRV9GSVJNV0FSRShJVzYxWF9TRElPX0ZXX05BTUUpO1xcbitNT0RVTEVfRklSTVdBUkUoSVc2MTBfU0RJT19GV19OQU1FKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5oXFxuaW5kZXggZGU1Yzg4NGE1YjE0OS4uZTk4ODE0NDhmZTJmMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmhcXG5AQCAtMTEsNiArMTEsNyBAQFxcbiAjaW5jbHVkZSBcXFwibWFpbi5oXFxcIlxcbiBcXG4gI2RlZmluZSBJVzYxWF9TRElPX0ZXX05BTUUgICAgIFxcXCJueHAvc2RfdzYxeF92MS5iaW4uc2VcXFwiXFxuKyNkZWZpbmUgSVc2MTBfU0RJT19GV19OQU1FICAgICBcXFwibnhwL3NkX2l3NjEwLmJpbi5zZVxcXCJcXG4gXFxuICNkZWZpbmUgQkxPQ0tfTU9ERVxcdDFcXG4gI2RlZmluZSBCWVRFX01PREVcXHQwXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW1jL3NkaW9faWRzLmggYi9pbmNsdWRlL2xpbnV4L21tYy9zZGlvX2lkcy5oXFxuaW5kZXggYWZhZTkzZjZmMjQ1OC4uZGZmZmRhM2Q4MDAyYSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L21tYy9zZGlvX2lkcy5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9tbWMvc2Rpb19pZHMuaFxcbkBAIC0xMjMsNiArMTIzLDggQEBcXG4gI2RlZmluZSBTRElPX1ZFTkRPUl9JRF9OWFBcXHRcXHRcXHQweDA0NzFcXG4gI2RlZmluZSBTRElPX0RFVklDRV9JRF9OWFBfSVc2MVhfQkFTRVxcdFxcdDB4MDIwNFxcbiAjZGVmaW5lIFNESU9fREVWSUNFX0lEX05YUF9JVzYxWFxcdFxcdDB4MDIwNVxcbisjZGVmaW5lIFNESU9fREVWSUNFX0lEX05YUF9JVzYxMF9CQVNFXFx0XFx0MHgwMjE0XFxuKyNkZWZpbmUgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjEwXFx0XFx0MHgwMjE1XFxuIFxcbiAjZGVmaW5lIFNESU9fVkVORE9SX0lEX1JFQUxURUtcXHRcXHRcXHQweDAyNGNcXG4gI2RlZmluZSBTRElPX0RFVklDRV9JRF9SRUFMVEVLX1JUVzg3MjNCU1xcdDB4YjcyM1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoxOTozMC41NDcwMTgyMDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ2NDMxMzEzMDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgYWRkcyBzdXBwb3J0IGZvciBOWFAgSVc2MTAgU0RJTyBXaS1GaSBkZXZpY2VzLCBpbmNsdWRpbmcgYW4gU0RJTyBNTUMgcXVpcmssIGRldmljZSBJRCByZWdpc3RyYXRpb24sIGFuZCBmaXJtd2FyZSBjYXBhYmlsaXR5IGhhbmRsaW5nIGZvciBjaGFubmVsIGJhbmR3aWR0aHMgaW4gdGhlIG54cHdpZmkgZHJpdmVyLiBUaGVzZSBtb2RpZmllZCBjb2RlIHBhdGhzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgTlhQIFNESU8gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxNDZlZDgyMWRjMWQ2ZmY2ZGJjNzY5YTc2OGI3YTUwODAyZGQzOGU1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAxMDoxOToyOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmggYi9kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oXG5pbmRleCBhZTNlY2U4OWQwYWE3Li45OGNiNjgwZTNhY2U4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaFxuKysrIGIvZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaFxuQEAgLTIxMSw2ICsyMTEsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1tY19maXh1cCBfX21heWJlX3VudXNlZCBzZGlvX2ZpeHVwX21ldGhvZHNbXSA9IHtcbiBcdFNESU9fRklYVVAoU0RJT19WRU5ET1JfSURfTlhQLCBTRElPX0RFVklDRV9JRF9OWFBfSVc2MVhfQkFTRSxcbiBcdFx0ICAgYWRkX3F1aXJrLCBNTUNfUVVJUktfQkxLU1pfRk9SX0JZVEVfTU9ERSksXG4gXG4rXHRTRElPX0ZJWFVQKFNESU9fVkVORE9SX0lEX05YUCwgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjEwX0JBU0UsXG4rXHRcdCAgIGFkZF9xdWlyaywgTU1DX1FVSVJLX0JMS1NaX0ZPUl9CWVRFX01PREUpLFxuK1xuIFx0RU5EX0ZJWFVQXG4gfTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExbi5jXG5pbmRleCBjMmE1NGQ3ODFiNDJhLi5hODNlMjllY2M0NjZlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExbi5jXG5AQCAtMzQ5LDYgKzM0OSw3IEBAIG54cHdpZmlfY21kX2FwcGVuZF8xMW5fdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG4gXHRcdFx0bnhwd2lmaV9iYW5kX3RvX3JhZGlvX3R5cGUoKHU4KWJzc19kZXNjLVx1MDAzZWJzc19iYW5kKTtcbiBcbiBcdFx0aWYgKElTU1VQUF8xMUFDRU5BQkxFRChwcml2LVx1MDAzZWFkYXB0ZXItXHUwMDNlZndfY2FwX2luZm8pIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgIUlTU1VQUF9OT184ME1IWihwcml2LVx1MDAzZWFkYXB0ZXItXHUwMDNlZndfY2FwX2V4dCkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBic3NfZGVzYy1cdTAwM2ViY25fdmh0X29wZXIgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBic3NfZGVzYy1cdTAwM2ViY25fdmh0X29wZXItXHUwMDNlY2hhbl93aWR0aCA9PVxuIFx0XHQgICAgSUVFRTgwMjExX1ZIVF9DSEFOV0lEVEhfODBNSFopIHtcbkBAIC0zNTksNyArMzYwLDggQEAgbnhwd2lmaV9jbWRfYXBwZW5kXzExbl90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbiBcdFx0XHRcdCgoQ0hBTl9CV184ME1IWiBcdTAwM2NcdTAwM2NcbiBcdFx0XHRcdCAgQkFORF9DRkdfQ0hBTl9XSURUSF9TSElGVF9CSVQpIFx1MDAyNlxuIFx0XHRcdFx0IEJBTkRfQ0ZHX0NIQU5fV0lEVEhfTUFTSyk7XG4tXHRcdH0gZWxzZSBpZiAoc2JhbmQtXHUwMDNlaHRfY2FwLmNhcCBcdTAwMjZcbitcdFx0fSBlbHNlIGlmIChJU1NVUFBfNDBNSFpfRU5BQkxFRChwcml2LVx1MDAzZWFkYXB0ZXItXHUwMDNlZndfY2FwX2V4dCkgXHUwMDI2XHUwMDI2XG4rXHRcdFx0ICAgc2JhbmQtXHUwMDNlaHRfY2FwLmNhcCBcdTAwMjZcbiBcdFx0XHQgICBJRUVFODAyMTFfSFRfQ0FQX1NVUF9XSURUSF8yMF80MCBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICBic3NfZGVzYy1cdTAwM2ViY25faHRfb3Blci1cdTAwM2VodF9wYXJhbSBcdTAwMjZcbiBcdFx0XHQgICBJRUVFODAyMTFfSFRfUEFSQU1fQ0hBTl9XSURUSF9BTlkpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9mdy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZncuaFxuaW5kZXggMTg4MTEwYjAyMGNmYS4uMTI0NzI4YTcyNDQyMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2Z3LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2Z3LmhcbkBAIC0zMzQsNiArMzM0LDggQEAgZW51bSBOWFBXSUZJXzgwMl8xMV9QUklWQUNZX0ZJTFRFUiB7XG4gI2RlZmluZSBERlNfQ0hBTl9NT1ZFX1RJTUUgICAgICAxMDAwMFxuIFxuICNkZWZpbmUgSVNTVVBQXzExQVhFTkFCTEVEKGZ3X2NhcF9leHQpICgoZndfY2FwX2V4dCkgXHUwMDI2IEJJVCg3KSlcbisjZGVmaW5lIElTU1VQUF9OT184ME1IWihmd19jYXBfZXh0KSAgICAgICgoZndfY2FwX2V4dCkgXHUwMDI2IEJJVCg4KSlcbisjZGVmaW5lIElTU1VQUF80ME1IWl9FTkFCTEVEKGZ3X2NhcF9leHQpICgoZndfY2FwX2V4dCkgXHUwMDI2IEJJVCgxNSkpXG4gXG4gI2RlZmluZSBIT1NUX0NNRF9HRVRfSFdfU1BFQyAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAzXG4gI2RlZmluZSBIT1NUX0NNRF84MDJfMTFfU0NBTiAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA2XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jXG5pbmRleCA4ZWYwZjZlYjQ5ZTI4Li5mNGRlNDk0YmYyZjJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNcbkBAIC05Niw2ICs5NiwxOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG54cHdpZmlfc2Rpb19kZXZpY2Ugbnhwd2lmaV9zZGlvX2l3NjF4ID0ge1xuIFx0LmNhbl9leHRfc2NhbiA9IHRydWUsXG4gfTtcbiBcbitzdGF0aWMgY29uc3Qgc3RydWN0IG54cHdpZmlfc2Rpb19kZXZpY2Ugbnhwd2lmaV9zZGlvX2l3NjEwID0ge1xuK1x0LmZpcm13YXJlID0gSVc2MTBfU0RJT19GV19OQU1FLFxuK1x0LnJlZyA9IFx1MDAyNm54cHdpZmlfcmVnX2l3NjF4LFxuK1x0Lm1heF9wb3J0cyA9IDMyLFxuK1x0Lm1wX2FnZ19wa3RfbGltaXQgPSAxNixcbitcdC50eF9idWZfc2l6ZSA9IE5YUFdJRklfVFhfREFUQV9CVUZfU0laRV80SyxcbitcdC5tcF90eF9hZ2dfYnVmX3NpemUgPSBOWFBXSUZJX01QX0FHR1JfQlNJWkVfTUFYLFxuK1x0Lm1wX3J4X2FnZ19idWZfc2l6ZSA9IE5YUFdJRklfTVBfQUdHUl9CU0laRV9NQVgsXG4rXHQuY2FuX2R1bXBfZncgPSB0cnVlLFxuK1x0LmZ3X2R1bXBfZW5oID0gdHJ1ZSxcbitcdC5jYW5fZXh0X3NjYW4gPSB0cnVlLFxuK307XG4rXG4gc3RhdGljIHN0cnVjdCBtZW1vcnlfdHlwZV9tYXBwaW5nIGdlbmVyaWNfbWVtX3R5cGVfbWFwW10gPSB7XG4gXHR7XCJEVU1QXCIsIE5VTEwsIDAsIDB4RER9LFxuIH07XG5AQCAtNDU4LDYgKzQ3MSw4IEBAIHN0YXRpYyB2b2lkIG54cHdpZmlfc2Rpb19jb3JlZHVtcChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCBueHB3aWZpX2lkc1tdID0ge1xuIFx0e1NESU9fREVWSUNFKFNESU9fVkVORE9SX0lEX05YUCwgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjFYKSxcbiBcdFx0LmRyaXZlcl9kYXRhID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2bnhwd2lmaV9zZGlvX2l3NjF4fSxcbitcdHtTRElPX0RFVklDRShTRElPX1ZFTkRPUl9JRF9OWFAsIFNESU9fREVWSUNFX0lEX05YUF9JVzYxMCksXG4rXHRcdC5kcml2ZXJfZGF0YSA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNm54cHdpZmlfc2Rpb19pdzYxMH0sXG4gXHR7fSxcbiB9O1xuIFxuQEAgLTIzMjYsMyArMjM0MSw0IEBAIE1PRFVMRV9ERVNDUklQVElPTihcIk5YUCBXaUZpIFNESU8gRHJpdmVyIHZlcnNpb24gXCIgU0RJT19WRVJTSU9OKTtcbiBNT0RVTEVfVkVSU0lPTihTRElPX1ZFUlNJT04pO1xuIE1PRFVMRV9MSUNFTlNFKFwiR1BMXCIpO1xuIE1PRFVMRV9GSVJNV0FSRShJVzYxWF9TRElPX0ZXX05BTUUpO1xuK01PRFVMRV9GSVJNV0FSRShJVzYxMF9TRElPX0ZXX05BTUUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uaFxuaW5kZXggZGU1Yzg4NGE1YjE0OS4uZTk4ODE0NDhmZTJmMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5oXG5AQCAtMTEsNiArMTEsNyBAQFxuICNpbmNsdWRlIFwibWFpbi5oXCJcbiBcbiAjZGVmaW5lIElXNjFYX1NESU9fRldfTkFNRSAgICAgXCJueHAvc2RfdzYxeF92MS5iaW4uc2VcIlxuKyNkZWZpbmUgSVc2MTBfU0RJT19GV19OQU1FICAgICBcIm54cC9zZF9pdzYxMC5iaW4uc2VcIlxuIFxuICNkZWZpbmUgQkxPQ0tfTU9ERVx0MVxuICNkZWZpbmUgQllURV9NT0RFXHQwXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbWMvc2Rpb19pZHMuaCBiL2luY2x1ZGUvbGludXgvbW1jL3NkaW9faWRzLmhcbmluZGV4IGFmYWU5M2Y2ZjI0NTguLmRmZmZkYTNkODAwMmEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21tYy9zZGlvX2lkcy5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L21tYy9zZGlvX2lkcy5oXG5AQCAtMTIzLDYgKzEyMyw4IEBAXG4gI2RlZmluZSBTRElPX1ZFTkRPUl9JRF9OWFBcdFx0XHQweDA0NzFcbiAjZGVmaW5lIFNESU9fREVWSUNFX0lEX05YUF9JVzYxWF9CQVNFXHRcdDB4MDIwNFxuICNkZWZpbmUgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjFYXHRcdDB4MDIwNVxuKyNkZWZpbmUgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjEwX0JBU0VcdFx0MHgwMjE0XG4rI2RlZmluZSBTRElPX0RFVklDRV9JRF9OWFBfSVc2MTBcdFx0MHgwMjE1XG4gXG4gI2RlZmluZSBTRElPX1ZFTkRPUl9JRF9SRUFMVEVLXHRcdFx0MHgwMjRjXG4gI2RlZmluZSBTRElPX0RFVklDRV9JRF9SRUFMVEVLX1JUVzg3MjNCU1x0MHhiNzIzXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoxOTozMC41NDcwMjAxNzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjMwNzM3ODE1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBTeXprYWxsZXIgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIHBhdGNoIGlzIGV2ZW4gYSB2aWFibGUgdGFyZ2V0IGZvciBzeXprYWxsZXIuIEkgc2VlIGFkZGl0aW9ucyB0byBgZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaGAsIHNwZWNpZmljYWxseSBhZGRpbmcgYSBxdWlyayByZWxhdGVkIHRvIE5YUCBTRElPIGRldmljZXMgYW5kIGJsb2NrIHNpemUgaW4gYnl0ZSBtb2RlLiBUaGVuIHRoZXJlIGFyZSBjaGFuZ2VzIGluIHRoZSBgbnhwd2lmaWAgZHJpdmVyLCBpbmNsdWRpbmcgY2hlY2tzIGZvciA4ME1IeiBhbmQgNDBNSHogY2hhbm5lbCB3aWR0aCBjYXBhYmlsaXRpZXMsIGFsb25nIHdpdGggbmV3IGRldmljZSBzdHJ1Y3R1cmVzIGFuZCBmaXJtd2FyZSBkZWZpbml0aW9ucyBpbiB2YXJpb3VzIGBueHB3aWZpYCBmaWxlcyBhbmQgcmVsYXRlZCBoZWFkZXIgZmlsZXMuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBkcml2ZXIuIElzIGBueHB3aWZpYCBhbiBTRElPIGRyaXZlciwgYW5kIGhvdyBkb2VzIHRoYXQgZml0IGludG8gdGhlIHBpY3R1cmUgd2l0aCBzeXprYWxsZXI/IFN5emthbGxlciBoYXMgVVNCIGVtdWxhdGlvbiAoUmF3IEdhZGdldCwgVVNCRnV6eiwgdmhjaSksIG5ldGRldnNpbSwgYW5kIG1hYzgwMjExX2h3c2ltLCBidXQgd2hhdCBhYm91dCBTRElPPyBEb2VzIHN5emthbGxlciBlbXVsYXRlIFNESU8gZGV2aWNlcywgb3IgaXMgdGhpcyBkcml2ZXIgaW5oZXJlbnRseSBoYXJkd2FyZS1zcGVjaWZpYz8gRG8gUUVNVSBvciBzeXprYWxsZXIgaGF2ZSBhbiBTRElPIGhhcmR3YXJlIGVtdWxhdG9yLCBvciBpcyBTRElPIHN1cHBvcnQgbGltaXRlZD9cblxuSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBwcm9tcHQncyBleGNsdXNpb24gb2Ygc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBvciBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBBU0lDcyBvciBQQ0llIGNhcmRzLiBJIHdvbmRlciBpZiB0aGUgU0RJTyBuYXR1cmUgb2YgYG54cHdpZmlgIGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeS4gSXMgYG54cHdpZmlgIHRpZWQgdG8gU0RJTyBvciBhbnkgZW11bGF0ZWQgdmlydHVhbCBidXMgd2l0aGluIHN5emthbGxlciwgb3IgaXMgaXQgcHVyZWx5IFNESU8gb3IgcG90ZW50aWFsbHkgUENJZSAvIFVTQj9cblxuSSB0aGluayBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9gIGRpcmVjdG9yeSB0byBzZWUgd2hhdCBpbnRlcmZhY2VzIHRoaXMgZHJpdmVyIHN1cHBvcnRzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIHdoZXRoZXIgaXQncyBzb21ldGhpbmcgdGhhdCBjYW4gYmUgcHJhY3RpY2FsbHkgZnV6emVkIHdpdGhpbiBteSBhdmFpbGFibGUgc3l6a2FsbGVyIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTI1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzI0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTA6MTk6NDIuODU0NDAxMjIzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTE5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcIjExYWMuY1wiLFxuICAgIFwiMTFhYy5oXCIsXG4gICAgXCIxMWF4LmNcIixcbiAgICBcIjExYXguaFwiLFxuICAgIFwiMTFoLmNcIixcbiAgICBcIjExbi5jXCIsXG4gICAgXCIxMW4uaFwiLFxuICAgIFwiMTFuX2FnZ3IuY1wiLFxuICAgIFwiMTFuX2FnZ3IuaFwiLFxuICAgIFwiMTFuX3J4cmVvcmRlci5jXCIsXG4gICAgXCIxMW5fcnhyZW9yZGVyLmhcIixcbiAgICBcImNmZy5oXCIsXG4gICAgXCJjZmc4MDIxMS5jXCIsXG4gICAgXCJjZmc4MDIxMS5oXCIsXG4gICAgXCJjZnAuY1wiLFxuICAgIFwiY21kZXZ0LmNcIixcbiAgICBcImNtZGV2dC5oXCIsXG4gICAgXCJkZWJ1Z2ZzLmNcIixcbiAgICBcImV0aHRvb2wuY1wiLFxuICAgIFwiZncuaFwiLFxuICAgIFwiaWUuY1wiLFxuICAgIFwiaW5pdC5jXCIsXG4gICAgXCJqb2luLmNcIixcbiAgICBcIm1haW4uY1wiLFxuICAgIFwibWFpbi5oXCIsXG4gICAgXCJzY2FuLmNcIixcbiAgICBcInNkaW8uY1wiLFxuICAgIFwic2Rpby5oXCIsXG4gICAgXCJzdGFfY2ZnLmNcIixcbiAgICBcInN0YV9jbWQuY1wiLFxuICAgIFwic3RhX2V2ZW50LmNcIixcbiAgICBcInN0YV9yeC5jXCIsXG4gICAgXCJzdGFfdHguY1wiLFxuICAgIFwidHhyeC5jXCIsXG4gICAgXCJ1YXBfY21kLmNcIixcbiAgICBcInVhcF9ldmVudC5jXCIsXG4gICAgXCJ1YXBfdHhyeC5jXCIsXG4gICAgXCJ1dGlsLmNcIixcbiAgICBcInV0aWwuaFwiLFxuICAgIFwid21tLmNcIixcbiAgICBcIndtbS5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEwOjE5OjQyLjg1NDQ4NDMzM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxNzA2MjU0MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaWcgaW50byB0aGUgd2lyZWxlc3MgbmV0d29ya2luZyBkcml2ZXJzIGZvciBOWFAuIEdpdmVuIG15IGV4cGVydGlzZSwgSSBzdXNwZWN0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhbmQgYnVpbGQgaW5zdHJ1Y3Rpb25zIHdpbGwgYmUgZm91bmQgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL2AgZGlyZWN0b3J5LiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgYEtjb25maWdgIGZpbGUgaW4gdGhhdCBkaXJlY3Rvcnk7IGl0J3MgdGhlIHVzdWFsIHBsYWNlIGZvciB0aGVzZSB0aGluZ3MuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwYXJ0aWN1bGFyIE5YUCB3aXJlbGVzcyBpbXBsZW1lbnRhdGlvbi4gSWYgdGhhdCBkb2Vzbid0IGltbWVkaWF0ZWx5IHJldmVhbCB3aGF0IEkgbmVlZCwgdGhlIGBNYWtlZmlsZWAgaW4gZWl0aGVyIHRoZSBgbnhwd2lmaWAgc3ViZGlyZWN0b3J5LCBvciBpbmRlZWQsIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LCBpcyBteSBuZXh0IHRhcmdldC4gSXQnbGwgc2hvdyBtZSBob3cgdGhpcyBkcml2ZXIgaXMgYnVpbHQgYW5kIHdoaWNoIHNvdXJjZXMgYXJlIGludm9sdmVkLiBIb3BlZnVsbHkgSSBjYW4gZ2V0IHdoYXQgSSBuZWVkIGZyb20gZWl0aGVyIG9mIHRoZXNlIGZpbGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDA4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEwOjE5OjQ1LjAyNTExMTg3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NjIwOTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm54cHdpZmlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTUxODAgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnPTEzPWlmIFdMQU5fVkVORE9SX05YUFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnOjE1OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvS2NvbmZpZy0xNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9NYWtlZmlsZS0yLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19OWFBXSUZJKVxcdCs9IG54cHdpZmkvXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMi0vKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzozOiAqIG54cHdpZmkgODAyLjExYWMgaGVscGVyc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy00LSAqIENvcHlyaWdodCAyMDExLTIwMjQgTlhQXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9MzY9c3RhdGljIHUxNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzozNzpueHB3aWZpX2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMzgtXFx0XFx0XFx0XFx0ICB1MTYgYmFuZHMsIHUxNiBtY3NfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTQyLVxcdHUzMiB1c3Jfdmh0X2NhcF9pbmZvID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6NDM6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTQ0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jPTc5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjgwOm54cHdpZmlfZmlsbF92aHRfY2FwX2luZm8oc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODEtXFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHUxNiBiYW5kcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo4MzpcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9OTM9dm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo5NDpueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtOTUtXFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTE2IGJhbmRzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjk3OlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05OC1cXHR1MTYgbWNzX21hcF91c2VyLCBtY3NfbWFwX3Jlc3AsIG1jc19tYXBfcmVzdWx0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEwMS1cXHQvKiBGaWxsIFZIVCBjYXBhYmlsaXR5IGluZm8uICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjEwMjpcXHRueHB3aWZpX2ZpbGxfdmh0X2NhcF9pbmZvKHByaXYsIHZodF9jYXAsIGJhbmRzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTI0OlxcdHRtcCA9IG54cHdpZmlfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShwcml2LCBiYW5kcywgbWNzX21hcF9yZXN1bHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xMjUtXFx0dmh0X2NhcC1cXHUwMDNlc3VwcF9tY3MucnhfaGlnaGVzdCA9IGNwdV90b19sZTE2KHRtcCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNDY6XFx0dG1wID0gbnhwd2lmaV9jb252ZXJ0X21jc21hcF90b19tYXhyYXRlKHByaXYsIGJhbmRzLCBtY3NfbWFwX3Jlc3VsdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE0Ny1cXHR2aHRfY2FwLVxcdTAwM2VzdXBwX21jcy50eF9oaWdoZXN0ID0gY3B1X3RvX2xlMTYodG1wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1MDppbnQgbnhwd2lmaV9jbWRfYXBwZW5kXzExYWNfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1MTpcXHRcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTUyLVxcdFxcdFxcdFxcdHU4ICoqYnVmZmVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTQ6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0Y2FwICp2aHRfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTU6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfb3Blcl9tb2RlX250ZiAqb3Blcl9udGY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE1Ni1cXHRzdHJ1Y3QgaWVlZV90eXBlc19vcGVyX21vZGVfbnRmICppZWVlX29wZXJfbnRmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTc6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0X29wZXIgKnZodF9vcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTU4OlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTktXFx0dTggc3VwcF9jaHdkX3NldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNjktXFx0aWYgKGJzc19kZXNjLVxcdTAwM2ViY25fdmh0X2NhcCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNzA6XFx0XFx0dmh0X2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRjYXAgKikqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzEtXFx0XFx0bWVtc2V0KHZodF9jYXAsIDAsIHNpemVvZigqdmh0X2NhcCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3NC1cXHRcXHRcXHRjcHVfdG9fbGUxNihzaXplb2Yoc3RydWN0IGllZWU4MDIxMV92aHRfY2FwKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE3NTpcXHRcXHRtZW1jcHkoKHU4ICopdmh0X2NhcCArIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzYtXFx0XFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVxcdTAwM2ViY25fdmh0X2NhcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE3OTpcXHRcXHRueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYocHJpdiwgXFx1MDAyNnZodF9jYXAtXFx1MDAzZXZodF9jYXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4MC1cXHRcXHRcXHRcXHRcXHQgYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xODctXFx0XFx0aWYgKHByaXYtXFx1MDAzZWJzc19tb2RlID09IE5MODAyMTFfSUZUWVBFX1NUQVRJT04pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTg4OlxcdFxcdFxcdHZodF9vcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRfb3BlciAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4OS1cXHRcXHRcXHRtZW1zZXQodmh0X29wLCAwLCBzaXplb2YoKnZodF9vcCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5Mi1cXHRcXHRcXHR2aHRfb3AtXFx1MDAzZWhlYWRlci5sZW4gID0gY3B1X3RvX2xlMTYoc2l6ZW9mKCp2aHRfb3ApIC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTkzOlxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTk0LVxcdFxcdFxcdG1lbWNweSgodTggKil2aHRfb3AgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxOTU6XFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5Ni1cXHRcXHRcXHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXFx1MDAzZWJjbl92aHRfb3BlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjI0NTppbnQgbnhwd2lmaV9jbWRfMTFhY19jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjQ2LVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MjQ3OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWFjX3ZodF9jZmcgKmNmZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNjQtLyogSW5pdGlhbGl6ZSBCbG9ja0FjayBwYXJhbWV0ZXJzIGZvciAxMWFjLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoyNjU6dm9pZCBueHB3aWZpX3NldF8xMWFjX2JhX3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTItLypcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MzogKiBueHB3aWZpOiA4MDIuMTFhYyAoVkhUKSBkZWZpbml0aW9uc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC00LSAqXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg9MTQ9ZW51bSB2aHRfY2ZnX21pc2NfY29uZmlnIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MjU6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWFjX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDoyNjpcXHRcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjctXFx0XFx0XFx0XFx0dTggKipidWZmZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDoyODppbnQgbnhwd2lmaV9jbWRfMTFhY19jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjktXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDozMDpcXHRcXHRcXHQgc3RydWN0IG54cHdpZmlfMTFhY192aHRfY2ZnICpjZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDozMTp2b2lkIG54cHdpZmlfZmlsbF92aHRfY2FwX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0zMi1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHUxNiBiYW5kcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI6Lyogbnhwd2lmaTogODAyLjExYXggKEhFKSBzdXBwb3J0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMtICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjQgTlhQXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjExOnZvaWQgbnhwd2lmaV91cGRhdGVfMTFheF9jYXAoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTItXFx0XFx0XFx0ICAgICBzdHJ1Y3QgaHdfc3BlY19leHRlbnNpb24gKmh3X2hlX2NhcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDpcXHRzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE2OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqdXNlcl9oZV9jYXAgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzpcXHR1OCBoZWFkZXJfbGVuID0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE4LVxcdHUxNiBkYXRhX2xlbiA9IGxlMTZfdG9fY3B1KGh3X2hlX2NhcC1cXHUwMDNlaGVhZGVyLmxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjItXFx0aWYgKChkYXRhX2xlbiArIGhlYWRlcl9sZW4pIFxcdTAwM2Ugc2l6ZW9mKGFkYXB0ZXItXFx1MDAzZWh3X2hlX2NhcCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjM6XFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI0LVxcdFxcdFxcdCAgICBcXFwiaHdfaGVfY2FwIHRvbyBiaWcsIGxlbj0lZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjk6XFx0aGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKWh3X2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzctXFx0XFx0aGVfY2FwXzJnID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mzg6XFx0XFx0bnhwd2lmaV9kYmdfZHVtcChhZGFwdGVyLCBDTURfRCwgXFxcIjIuNEcgSEUgY2FwYWJpbGl0eSBlbGVtZW50IFxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM5LVxcdFxcdFxcdFxcdCBhZGFwdGVyLVxcdTAwM2Vod18yZ19oZV9jYXAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDUtXFx0XFx0YWRhcHRlci1cXHUwMDNlZndfYmFuZHMgfD0gQkFORF9BQVg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ2OlxcdFxcdG54cHdpZmlfZGJnX2R1bXAoYWRhcHRlciwgQ01EX0QsIFxcXCI1RyBIRSBjYXBhYmlsaXR5IGVsZW1lbnQgXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDctXFx0XFx0XFx0XFx0IGFkYXB0ZXItXFx1MDAzZWh3X2hlX2NhcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01Ny1cXHRcXHRcXHQgICAgICAgc2l6ZW9mKGFkYXB0ZXItXFx1MDAzZWh3XzJnX2hlX2NhcCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1ODpcXHRcXHRcXHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTktXFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNjMtXFx0XFx0XFx0ICAgICAgIHNpemVvZihhZGFwdGVyLVxcdTAwM2Vod19oZV9jYXApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NjQ6XFx0XFx0XFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTY1LVxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZXVzZXJfaGVfY2FwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo3OTpib29sIG54cHdpZmlfMTFheF9iYW5kY29uZmlnX2FsbG93ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6ODA6XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtODEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo5NTppbnQgbnhwd2lmaV9maWxsX2hlX2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6OTY6XFx0XFx0XFx0ICAgIHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaGVfY2FwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy05Ny1cXHRcXHRcXHQgICAgdTE2IGJhbmRzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy05OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjk5OlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMDA6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpod19oZV9jYXAgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMDEtXFx0dTE2IHJ4X25zcywgdHhfbnNzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEwOC1cXHRcXHRtZW1jcHkoaGVfY2FwLCBwcml2LVxcdTAwM2V1c2VyX2hlX2NhcCwgcHJpdi1cXHUwMDNldXNlcl9oZV9jYXBfbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTA5OlxcdFxcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilhZGFwdGVyLVxcdTAwM2Vod19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTExMC1cXHRcXHRyZXRfbGVuID0gcHJpdi1cXHUwMDNldXNlcl9oZV9jYXBfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTExMi1cXHRcXHRtZW1jcHkoaGVfY2FwLCBwcml2LVxcdTAwM2V1c2VyXzJnX2hlX2NhcCwgcHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXBfbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTEzOlxcdFxcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilhZGFwdGVyLVxcdTAwM2Vod18yZ19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTExNC1cXHRcXHRyZXRfbGVuID0gcHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXBfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEyNS1cXHRmb3IgKG5zcyA9IDE7IG5zcyBcXHUwMDNjPSA4OyBuc3MrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMjY6XFx0XFx0Y2ZnX3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhoZV9jYXAtXFx1MDAzZXJ4X21jc184MCwgbnNzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTI3OlxcdFxcdGh3X3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhod19oZV9jYXAtXFx1MDAzZXJ4X21jc184MCwgbnNzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTI4LVxcdFxcdGlmIChyeF9uc3MgIT0gMCBcXHUwMDI2XFx1MDAyNiBuc3MgXFx1MDAzZSByeF9uc3MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMwLVxcdFxcdGlmIChod192YWx1ZSA9PSBOT19OU1NfU1VQUE9SVCB8fCBjZmdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEzMTpcXHRcXHRcXHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFxcdTAwMjZoZV9jYXAtXFx1MDAzZXJ4X21jc184MCwgbnNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzItXFx0XFx0XFx0XFx0XFx0ICAgICAgIE5PX05TU19TVVBQT1JUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMzLVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTM0OlxcdFxcdFxcdG54cHdpZmlfc2V0X2hlX25zc19tY3MoXFx1MDAyNmhlX2NhcC1cXHUwMDNlcnhfbWNzXzgwLCBuc3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzNS1cXHRcXHRcXHRcXHRcXHQgICAgICAgbWluKGNmZ192YWx1ZSwgaHdfdmFsdWUpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzgtXFx0Zm9yIChuc3MgPSAxOyBuc3MgXFx1MDAzYz0gODsgbnNzKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTM5OlxcdFxcdGNmZ192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaGVfY2FwLVxcdTAwM2V0eF9tY3NfODAsIG5zcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0MDpcXHRcXHRod192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaHdfaGVfY2FwLVxcdTAwM2V0eF9tY3NfODAsIG5zcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0MS1cXHRcXHRpZiAodHhfbnNzICE9IDAgXFx1MDAyNlxcdTAwMjYgbnNzIFxcdTAwM2UgdHhfbnNzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0My1cXHRcXHRpZiAoaHdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQgfHwgY2ZnX3ZhbHVlID09IE5PX05TU19TVVBQT1JUKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDQ6XFx0XFx0XFx0bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhcXHUwMDI2aGVfY2FwLVxcdTAwM2V0eF9tY3NfODAsIG5zcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQ1LVxcdFxcdFxcdFxcdFxcdCAgICAgICBOT19OU1NfU1VQUE9SVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0Ni1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0NzpcXHRcXHRcXHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFxcdTAwMjZoZV9jYXAtXFx1MDAzZXR4X21jc184MCwgbnNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDgtXFx0XFx0XFx0XFx0XFx0ICAgICAgIG1pbihjZmdfdmFsdWUsIGh3X3ZhbHVlKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTQ6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWF4X3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTU6XFx0XFx0XFx0XFx0c3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1Ni1cXHRcXHRcXHRcXHR1OCAqKmJ1ZmZlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTU3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU4OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaGVfY2FwID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTU5LVxcdGludCByZXRfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTY0OlxcdGhlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKikqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNjU6XFx0cmV0X2xlbiA9IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHByaXYsIGhlX2NhcCwgYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTY2LVxcdCpidWZmZXIgKz0gcmV0X2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3MTppbnQgbnhwd2lmaV9jbWRfMTFheF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTcyLVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTczOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3Ni1cXHR1MTYgY21kX3NpemU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3NzpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKmhlYWRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTc4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE4Ni1cXHQgICAgYXhfY2ZnLVxcdTAwM2VoZV9jYXBfY2ZnLmV4dF9pZCA9PSBXTEFOX0VJRF9FWFRfSEVfQ0FQQUJJTElUWSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxODc6XFx0XFx0aGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKWhlX2NmZy1cXHUwMDNldGx2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xODgtXFx0XFx0aGVhZGVyLVxcdTAwM2V0eXBlID0gY3B1X3RvX2xlMTYoYXhfY2ZnLVxcdTAwM2VoZV9jYXBfY2ZnLmlkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwMTppbnQgbnhwd2lmaV9yZXRfMTFheF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjAyLVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjAzOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDUtXFx0c3RydWN0IGhvc3RfY21kXzExYXhfY2ZnICpoZV9jZmcgPSBcXHUwMDI2cmVzcC1cXHUwMDNlcGFyYW1zLmF4X2NmZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjA2OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqaGVhZGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDctXFx0dTE2IGxlZnRfbGVuLCB0bHZfdHlwZSwgdGx2X2xlbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjA4LVxcdHU4IGV4dF9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjA5OlxcdHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2FwX2NmZyAqaGVfY2FwID0gXFx1MDAyNmF4X2NmZy1cXHUwMDNlaGVfY2FwX2NmZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMTEtXFx0bGVmdF9sZW4gPSBsZTE2X3RvX2NwdShyZXNwLVxcdTAwM2VzaXplKSAtIHNpemVvZigqaGVfY2ZnKSAtIFNfRFNfR0VOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMTI6XFx0aGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKWhlX2NmZy1cXHUwMDNldGx2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjQyLVxcdFxcdGxlZnRfbGVuIC09IChzaXplb2YoKmhlYWRlcikgKyB0bHZfbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjQzOlxcdFxcdGhlYWRlciA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKikoKHU4ICopaGVhZGVyICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjQ0LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBzaXplb2YoKmhlYWRlcikgK1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjUxOmludCBueHB3aWZpX2NtZF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTItXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTM6XFx0XFx0XFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTU6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1Ni1cXHRzdHJ1Y3QgaG9zdF9jbWRfMTFheF9jbWQgKmhlX2NtZCA9IFxcdTAwMjZjbWQtXFx1MDAzZXBhcmFtcy5heF9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1Ny1cXHR1MTYgY21kX3NpemU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1ODpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NyX2NtZCAqc3JfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTk6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqdGx2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjA6XFx0c3RydWN0IG54cHdpZmlfMTFheF9iZWFtX2NtZCAqYmVhbV9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2MTpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2h0Y19jbWQgKmh0Y19jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2MjpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b21pX2NtZCAqdHhtb2lfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjM6XFx0c3RydWN0IG54cHdpZmlfMTFheF90b2x0aW1lX2NtZCAqdG9sdGltZV9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2NDpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b3BfY21kICp0eG9wX2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjY1OlxcdHN0cnVjdCBueHB3aWZpXzExYXhfc2V0X2JzcnBfY21kICpzZXRfYnNycF9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2NjpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2xsZGVfY21kICpsbGRlX2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjY3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI3NS1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9TUl9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjc2OlxcdFxcdHNyX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NyX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI3ODpcXHRcXHR0bHYgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqKWhlX2NtZC1cXHUwMDNldmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNzktXFx0XFx0dGx2LVxcdTAwM2VoZWFkZXIudHlwZSA9IGNwdV90b19sZTE2KHNyX2NtZC1cXHUwMDNldHlwZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjg1LVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX0JFQU1fU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI4NjpcXHRcXHRiZWFtX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2JlYW1fY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI4Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOTEtXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfSFRDX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyOTI6XFx0XFx0aHRjX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2h0Y19jbWQgKilcXHUwMDI2YXhfY21kLVxcdTAwM2VwYXJhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjkzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5Ny1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9UWE9NSV9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjk4OlxcdFxcdHR4bW9pX2NtZCA9XFx0KHN0cnVjdCBueHB3aWZpXzExYXhfdHhvbWlfY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMDMtXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfT0JTU19UT0xUSU1FX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMDQ6XFx0XFx0dG9sdGltZV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF90b2x0aW1lX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzEwLVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1RYT1BSVFNfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMxMTpcXHRcXHR0eG9wX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b3BfY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMTctXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfU0VUX0JTUlBfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMxODpcXHRcXHRzZXRfYnNycF9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9zZXRfYnNycF9jbWQgKilcXHUwMDI2YXhfY21kLVxcdTAwM2VwYXJhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzE5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMyMy1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9MTERFX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMjQ6XFx0XFx0bGxkZV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9sbGRlX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMjUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzI5LVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMzMDpcXHRcXHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzMxLVxcdFxcdFxcdCAgICBcXFwiJXM6IFVua25vd24gc3ViIGNvbW1hbmQ6ICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzQxOmludCBueHB3aWZpX3JldF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDItXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDM6XFx0XFx0XFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDU6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0Ni1cXHRzdHJ1Y3QgaG9zdF9jbWRfMTFheF9jbWQgKmhlX2NtZCA9IFxcdTAwMjZyZXNwLVxcdTAwM2VwYXJhbXMuYXhfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDc6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqdGx2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzUyLVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1NSX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNTM6XFx0XFx0dGx2ID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKiloZV9jbWQtXFx1MDAzZXZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzU0LVxcdFxcdG1lbWNweShheF9jbWQtXFx1MDAzZXBhcmFtLnNyX2NmZy5wYXJhbS5vYnNzX3BkX29mZnNldC5vZmZzZXQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzgzLVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM4NDpcXHRcXHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzg1LVxcdFxcdFxcdCAgICBcXFwiJXM6IFVua25vd24gc3ViIGNvbW1hbmQ6ICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzkzOnN0YXRpYyB1OCBueHB3aWZpX2lzX2FwXzExYXhfdHd0X3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxMDpib29sIG54cHdpZmlfaXNfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxMTpcXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDEyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDEzOlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqdXNlcl9oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxNDpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmh3X2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDE1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDE5OlxcdGlmICghbnhwd2lmaV9pc19hcF8xMWF4X3R3dF9zdXBwb3J0ZWQoYnNzX2Rlc2MpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyMDpcXHRcXHRueHB3aWZpX2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBNU0csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyMS1cXHRcXHRcXHQgICAgXFxcIkFQIGRvbid0IHN1cHBvcnQgdHd0IGZlYXR1cmVcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyNS1cXHRpZiAoYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kIFxcdTAwMjYgQkFORF9BKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyNjpcXHRcXHRod19oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyNy1cXHRcXHRcXHRwcml2LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2Vod19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyODpcXHRcXHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDI5LVxcdFxcdFxcdHByaXYtXFx1MDAzZXVzZXJfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzAtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDMxOlxcdFxcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDMyLVxcdFxcdFxcdHByaXYtXFx1MDAzZWFkYXB0ZXItXFx1MDAzZWh3XzJnX2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDMzOlxcdFxcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzQtXFx0XFx0XFx0cHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDM3LVxcdGlmICghKGh3X2hlX2NhcC1cXHUwMDNlaGVfbWFjX2NhcFswXSBcXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Mzg6XFx0XFx0bnhwd2lmaV9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzktXFx0XFx0XFx0ICAgIFxcXCJGVyBkb24ndCBzdXBwb3J0IFRXVFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDQzLVxcdGlmICghKHVzZXJfaGVfY2FwLVxcdTAwM2VoZV9tYWNfY2FwWzBdIFxcdTAwMjYgSEVfTUFDX0NBUF9UV1RfUkVRX1NVUFBPUlQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ0NDpcXHRcXHRueHB3aWZpX2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBNU0csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ0NS1cXHRcXHRcXHQgICAgXFxcIlVTRVIgSEVfTUFDX0NBUCBkb24ndCBzdXBwb3J0IFRXVFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTI6dTggbnhwd2lmaV9pc19zdGFfMTFheF90d3RfcmVxX3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTQ6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDU1LVxcdHU4IHJldCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDU5LVxcdFxcdGlmIChwcml2LVxcdTAwM2Vjb25maWdfYmFuZHMgXFx1MDAyNiBCQU5EX0FBWClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDYwOlxcdFxcdFxcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKXByaXYtXFx1MDAzZXVzZXJfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NjEtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NjI6XFx0XFx0XFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopcHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2My1cXHRcXHRyZXQgPSB1c2VyX2hlX2NhcC1cXHUwMDNlaGVfbWFjX2NhcFswXSBcXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDY5OmludCBueHB3aWZpX2NtZF90d3RfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3MC1cXHRcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDcxOlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3MzpcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDc0LVxcdHN0cnVjdCBob3N0X2NtZF90d3RfY2ZnICp0d3RfY2ZnX2NtZCA9IFxcdTAwMjZjbWQtXFx1MDAzZXBhcmFtcy50d3RfY2ZnO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzU6XFx0c3RydWN0IG54cHdpZmlfdHd0X3NldHVwICp0d3Rfc2V0dXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3NjpcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfdGVhcmRvd24gKnR3dF90ZWFyZG93bjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc3OlxcdHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKnR3dF9yZXBvcnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3ODpcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24gKnR3dF9pbmZvcm1hdGlvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc5OlxcdHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnICpidHd0X2FwX2NvbmZpZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDgwLVxcdHU4IGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDkwLVxcdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9TRVRVUF9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDkxOlxcdFxcdHR3dF9zZXR1cCA9IChzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDkyLVxcdFxcdFxcdHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDk0OlxcdFxcdG1lbXNldCh0d3Rfc2V0dXAsIDB4MDAsIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDk1LVxcdFxcdHR3dF9zZXR1cC1cXHUwMDNlaW1wbGljaXQgPSB0d3RfY2ZnLVxcdTAwM2VwYXJhbS50d3Rfc2V0dXAuaW1wbGljaXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTA3LVxcdFxcdHR3dF9zZXR1cC1cXHUwMDNlYmNuX21pc3NfdGhyZXNob2xkID0gdHd0X2NmZy1cXHUwMDNlcGFyYW0udHd0X3NldHVwLmJjbl9taXNzX3RocmVzaG9sZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTA4OlxcdFxcdGNtZF9zaXplICs9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MDktXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxMC1cXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfVEVBUkRPV05fU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUxMTpcXHRcXHR0d3RfdGVhcmRvd24gPSAoc3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxMi1cXHRcXHRcXHR0d3RfY2ZnX2NtZC1cXHUwMDNldmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MTMtXFx0XFx0bWVtc2V0KHR3dF90ZWFyZG93biwgMHgwMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTE0OlxcdFxcdCAgICAgICBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxNS1cXHRcXHR0d3RfdGVhcmRvd24tXFx1MDAzZWZsb3dfaWRlbnRpZmllciA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTIwLVxcdFxcdFxcdHR3dF9jZmctXFx1MDAzZXBhcmFtLnR3dF90ZWFyZG93bi50ZWFyZG93bl9hbGxfdHd0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MjE6XFx0XFx0Y21kX3NpemUgKz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF90ZWFyZG93bik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyMi1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTIzLVxcdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9SRVBPUlRfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyNDpcXHRcXHR0d3RfcmVwb3J0ID0gKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI1LVxcdFxcdFxcdHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyNjpcXHRcXHRtZW1zZXQodHd0X3JlcG9ydCwgMHgwMCwgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI3LVxcdFxcdHR3dF9yZXBvcnQtXFx1MDAzZXR5cGUgPSB0d3RfY2ZnLVxcdTAwM2VwYXJhbS50d3RfcmVwb3J0LnR5cGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyODpcXHRcXHRjbWRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyOS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTMwLVxcdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9JTkZPUk1BVElPTl9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTMxOlxcdFxcdHR3dF9pbmZvcm1hdGlvbiA9IChzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24gKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTMyLVxcdFxcdFxcdHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzMy1cXHRcXHRtZW1zZXQodHd0X2luZm9ybWF0aW9uLCAweDAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MzQ6XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTM1LVxcdFxcdHR3dF9pbmZvcm1hdGlvbi1cXHUwMDNlZmxvd19pZGVudGlmaWVyID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzgtXFx0XFx0XFx0dHd0X2NmZy1cXHUwMDNlcGFyYW0udHd0X2luZm9ybWF0aW9uLnN1c3BlbmRfZHVyYXRpb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUzOTpcXHRcXHRjbWRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTQwLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDEtXFx0Y2FzZSBOWFBXSUZJXzExQVhfQlRXVF9BUF9DT05GSUdfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU0MjpcXHRcXHRidHd0X2FwX2NvbmZpZyA9IChzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZyAqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDMtXFx0XFx0XFx0XFx0IHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0NC1cXHRcXHRtZW1zZXQoYnR3dF9hcF9jb25maWcsIDB4MDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU0NTpcXHRcXHQgICAgICAgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0Ni1cXHRcXHRidHd0X2FwX2NvbmZpZy1cXHUwMDNlYXBfYmNhc3RfYmV0X3N0YV93YWl0ID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU2NTpcXHRcXHRjbWRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfYnR3dF9hcF9jb25maWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjYtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU2Ny1cXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1Njg6XFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU2OS1cXHRcXHRcXHQgICAgXFxcIlVua25vd24gc3ViIGlkOiAlZFxcXFxuXFxcIiwgdHd0X2NmZy1cXHUwMDNlc3ViX2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU3ODppbnQgbnhwd2lmaV9yZXRfdHd0X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NzktXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU4MDpcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfY2ZnICp0d3RfY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01ODEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU4OS1cXHQgICAgdHd0X2NmZy1cXHUwMDNlc3ViX2lkID09IE5YUFdJRklfMTFBWF9UV1RfUkVQT1JUX1NVQklEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU5MDpcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICp0d3RfcmVwb3J0ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTkxOlxcdFxcdFxcdChzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICopdHd0X2NmZ19jbWQtXFx1MDAzZXZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1OTM6XFx0XFx0bWVtY3B5KFxcdTAwMjZ0d3RfY2ZnLVxcdTAwM2VwYXJhbS50d3RfcmVwb3J0LCB0d3RfcmVwb3J0LCBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01OTQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTItLypcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6MzogKiBueHB3aWZpOiA4MDIuMTFheCBzdXBwb3J0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaD0xNz1zdGF0aWMgaW5saW5lIHUxNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDoxODpueHB3aWZpX2dldF9oZV9uc3NfbWNzKF9fbGUxNiBtY3NfbWFwX3NldCwgaW50IG5zcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0xOS1cXHRyZXR1cm4gKChsZTE2X3RvX2NwdShtY3NfbWFwX3NldCkgXFx1MDAzZVxcdTAwM2UgKDIgKiAobnNzIC0gMSkpKSBcXHUwMDI2IDB4Myk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg9MjI9c3RhdGljIGlubGluZSB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjIzOm54cHdpZmlfc2V0X2hlX25zc19tY3MoX19sZTE2ICptY3NfbWFwX3NldCwgaW50IG5zcywgaW50IHZhbHVlKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTI0LVxcdHUxNiB0ZW1wO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozMTpib29sIG54cHdpZmlfaXNfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjMyOlxcdFxcdFxcdFxcdCAgIHN0cnVjdCAgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozNDp2b2lkIG54cHdpZmlfdXBkYXRlXzExYXhfY2FwKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTM1LVxcdFxcdFxcdCAgICAgc3RydWN0IGh3X3NwZWNfZXh0ZW5zaW9uICpod19oZV9jYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Mzc6Ym9vbCBueHB3aWZpXzExYXhfYmFuZGNvbmZpZ19hbGxvd2VkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM4OlxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDA6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWF4X3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0MTpcXHRcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDItXFx0XFx0XFx0XFx0dTggKipidWZmZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDQ6aW50IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ1OlxcdFxcdFxcdCAgICBzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDYtXFx0XFx0XFx0ICAgIHUxNiBiYW5kcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ3OmludCBueHB3aWZpX2NtZF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00OC1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ5OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUxOmludCBueHB3aWZpX3JldF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Mi1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUzOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU1OmludCBueHB3aWZpX2NtZF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Ni1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU3OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2NtZF9jZmcgKmF4X2NtZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1OTppbnQgbnhwd2lmaV9yZXRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjAtXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo2MTpcXHRcXHRcXHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NjM6aW50IG54cHdpZmlfY21kX3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjQtXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY1OlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Njc6aW50IG54cHdpZmlfcmV0X3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjgtXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY5OlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC03MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NzE6dTggbnhwd2lmaV9pc19zdGFfMTFheF90d3RfcmVxX3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNzItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0yLS8qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MzogKiBueHB3aWZpOiA4MDIuMTFoIGhlbHBlcnNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy00LSAqXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzoxMzp2b2lkIG54cHdpZmlfaW5pdF8xMWhfcGFyYW1zKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMTQte1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoxOTo0NS4wODE3NDAwMDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTQ2MTMwMzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHN0YXJ0ZWQuIE15IGZpcnN0IG1vdmUgaXMgdXN1YWxseSB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGVzLCBlc3BlY2lhbGx5IGluIGEgbmV3IGNvZGViYXNlIGxpa2UgdGhpcy4gTGV0J3Mgc2VlLi4uIGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBhbGwgdGhlIGVzc2VudGlhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBOWFAgV2ktRmkgZHJpdmVyIHdpbGwgbGl2ZSwgYW5kIGl0J3MgdGhlIGdhdGV3YXkgdG8gdW5kZXJzdGFuZGluZyB3aGF0IGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQsIHdoYXQgZGVwZW5kZW5jaWVzIGV4aXN0LCBhbmQgaG93IHRoZSBkcml2ZXIgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZC4gSSBjYW4gcHJvYmFibHkgcXVpY2tseSBkZXRlcm1pbmUgdGhlIGNvcmUgc2V0IG9mIGZlYXR1cmVzLCBob3cgdG8gZW5hYmxlIGFuZCBkaXNhYmxlIHRoZW0sIGFueSBzcGVjaWZpYyBoYXJkd2FyZSByZXF1aXJlbWVudHMsIGFuZCBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgY29tcGlsZS10aW1lIGRlcGVuZGVuY2llcy4gRnJvbSBoZXJlIEkgY2FuIHN0YXJ0IHRvIGZsZXNoIG91dCBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBkcml2ZXIgYW5kIHdoYXQgaXQgY2FuIGRvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjg2MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEwOjE5OjQ3LjAyNzg3MzI5OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBOWFBXSUZJXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTlhQIFdpRmkgRHJpdmVyXFxcIiBpZiBDT01QSUxFX1RFU1RcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE5YUFxcbiAgIDc6XFx0XFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAxMDpcXHRcXHQgIG54cHdpZmkuXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBOWFBXSUZJX1NESU9cXG4gIDEzOlxcdFxcdHRyaXN0YXRlIFxcXCJOWFAgV2lGaSBEcml2ZXIgZm9yIElXNjF4XFxcIlxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMSBcXHUwMDI2XFx1MDAyNiBNTUNcXG4gIDE1OlxcdFxcdHNlbGVjdCBOWFBXSUZJXFxuICAxNjpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICAxNzpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDE4OlxcdFxcdGhlbHBcXG4gIDE5OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE5YUFxcbiAgMjA6XFx0XFx0ICBJVzYxeCBpbnRlcmZhY2UuXFxuICAyMTpcXHRcXG4gIDIyOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcXG4gIDIzOlxcdFxcdCAgbnhwd2lmaV9zZGlvLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoxOTo0Ny4wMjc5NDAxMTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjM0MzgxMTQwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIHRoaXMgcGF0Y2ggcmVxdWlyZXMgY2FyZWZ1bCBjb25zaWRlcmF0aW9uIHJlZ2FyZGluZyBmdXp6aW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGVzcGVjaWFsbHkgc2luY2UgaXQncyB0b3VjaGluZyBib3RoIE1NQy9TRElPIGFuZCBhbiBOWFAgV2ktRmkgZHJpdmVyLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIHNwYW5zIHNldmVyYWwgZmlsZXM6IGBxdWlya3MuaGAsIGAxMW4uY2AsIGBmdy5oYCwgYHNkaW8uY2AsIGBzZGlvLmhgLCBhbmQgYHNkaW9faWRzLmhgLiBDbGVhcmx5LCB0aGlzIGludm9sdmVzIGZpeGVzIGFuZCBtb2RpZmljYXRpb25zIHJlbGF0ZWQgdG8gdGhlIE5YUCBXaS1GaSBkcml2ZXIgKGBueHB3aWZpYCksIHBhcnRpY3VsYXJseSBpdHMgaW50ZXJhY3Rpb24gd2l0aCBTRElPIChTZWN1cmUgRGlnaXRhbCBJbnB1dCBPdXRwdXQpLiBTZWN0aW9uIDEgYW5kIFNlY3Rpb24gMiBoZXJlIGlzIHRoZSBtb3N0IGltcG9ydGFudCBwYXJ0IHRvIGRlY2lkZSBpZiB3ZSBjYW4gZnV6eiB0aGlzLlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlLCBJIHNlZSBhbiBTRElPIGZpeHVwIHRhYmxlIGluIGBxdWlya3MuaGAgYmVpbmcgdXBkYXRlZCwgYWxvbmcgd2l0aCBjaGFuZ2VzIGluIGAxMW4uY2AgdGhhdCBhcHBlYXIgdG8gcmVsYXRlIHRvIFdpLUZpIGNoYW5uZWwgd2lkdGggKDgwTUh6LCA0ME1IeikgYW5kIHBvdGVudGlhbGx5IDgwMi4xMWFjL24gc3VwcG9ydC4gVGhlIG90aGVyIGZpbGVzIHNlZW0gdG8gcHJvdmlkZSBkZWZpbml0aW9ucyBhbmQgc3VwcG9ydGluZyBjb2RlIGZvciBTRElPLCBvciB0aGUgZHJpdmVyIGl0c2VsZi5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIG5vdyBpcyByZWFjaGFiaWxpdHkgd2l0aGluIGEgc3RhbmRhcmQgZnV6emluZyBzZXR1cCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUpIHVzZWQgYnkgc3l6a2FsbGVyLiBUaGUga2V5IGlzIHdoZXRoZXIgdGhpcyBjb2RlLCBvciB0aGUgaGFyZHdhcmUgaXQgaW50ZXJhY3RzIHdpdGgsIGlzICphY3R1YWxseSogcmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlxuXG5NeSBwcmltYXJ5IGNvbmNlcm4gaXMgdGhhdCBgbnhwd2lmaWAgaXMgYW4gU0RJTyBXaS1GaSBkcml2ZXIgKGBueHB3aWZpX3NkaW9gKS4gVGhlIHF1ZXN0aW9uIGJlY29tZXM6IERvZXMgUUVNVSwgaW4gYSB0eXBpY2FsIHN5emthbGxlciBzZXR1cCwgKmVtdWxhdGUqIHRoZSBOWFAgSVc2MTAgLyBJVzYxeCBTRElPIGhhcmR3YXJlIG9yLCBwZXJoYXBzLCBhIG1vcmUgZ2VuZXJhbCBTRElPIGJ1cz8gRG9lcyBpdCBwcm92aWRlIGEgc29mdHdhcmUtZW11bGF0ZWQgU0RJTyBkZXZpY2Ugb3IgYSBzcGVjaWZpYyBOWFAgV2ktRmkgaGFyZHdhcmUgYWJzdHJhY3Rpb24/IElmIG5vdCwgdGhlbiB0aGlzIGNvZGUgbWlnaHQgYmUgZWZmZWN0aXZlbHkgKnVucmVhY2hhYmxlKiBmb3IgZnV6emluZywgYW5kIHRodXMgYSB3YXN0ZSBvZiByZXNvdXJjZXMuIERvIExpbnV4IG9yIHN5emthbGxlciBoYXZlIGFuIFNESU8gZ2FkZ2V0IG9yIHNvZnR3YXJlIG1vY2sgZm9yIE5YUCBXaUZpPyBOby5cblxuVGhlIGd1aWRpbmcgcHJpbmNpcGxlIGhlcmUgaXMgdGhhdCBpZiB0aGUgbW9kaWZpZWQgY29kZSByZWxpZXMgb24gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBpdCdzIG5vdCB3b3J0aCBmdXp6aW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgTlhQIFdpLUZpIFNESU8gZHJpdmVyIGNhbiBiZSByZWFjaGVkISBEb2VzIHN5emthbGxlciBoYXZlIGFueSB2aXJ0dWFsIFNESU8gZHJpdmVycyBvciBVU0ItdG8tU0RJTyBvciBzb21ldGhpbmcgaW4gdGhlIExpbnV4IHRyZWU/IFRoYXQgd2lsbCBiZSB0aGUga2V5IHRvIG1ha2luZyB0aGlzIGRldGVybWluYXRpb24gYW5kIGRlY2lkaW5nIGlmIHRoaXMgaXMgYSB3b3J0aHdoaWxlIHRhcmdldCBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM0MTQsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoxOTo1OS4zNzE3NjAyOTJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzMzc3ODY2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZGlvX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmx1ZXRvb3RoL2J0bXJ2bF9zZGlvLmM9MTc0NT1zdGF0aWMgaW50IF9faW5pdCBidG1ydmxfc2Rpb19pbml0X21vZHVsZSh2b2lkKVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXJ2bF9zZGlvLmMtMTc0Ni17XFxuZHJpdmVycy9ibHVldG9vdGgvYnRtcnZsX3NkaW8uYzoxNzQ3OlxcdGlmIChzZGlvX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2YnRfbXJ2bF9zZGlvKSAhPSAwKSB7XFxuZHJpdmVycy9ibHVldG9vdGgvYnRtcnZsX3NkaW8uYy0xNzQ4LVxcdFxcdEJUX0VSUihcXFwiU0RJTyBEcml2ZXIgUmVnaXN0cmF0aW9uIEZhaWxlZFxcXCIpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jPTI3ND1zdGF0aWMgdm9pZCBzZGlvX2xlZ2FjeV9zaHV0ZG93bihzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jLTI4Mi0vKipcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmM6MjgzOiAqXFx0X19zZGlvX3JlZ2lzdGVyX2RyaXZlciAtIHJlZ2lzdGVyIGEgZnVuY3Rpb24gZHJpdmVyXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jLTI4NC0gKlxcdEBkcnY6IFNESU8gZnVuY3Rpb24gZHJpdmVyXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMjg2LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYzoyODc6aW50IF9fc2Rpb19yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHNkaW9fZHJpdmVyICpkcnYsIHN0cnVjdCBtb2R1bGUgKm93bmVyKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYy0yODgte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jLTMwMS19XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jOjMwMjpFWFBPUlRfU1lNQk9MX0dQTChfX3NkaW9fcmVnaXN0ZXJfZHJpdmVyKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMzAzLVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX3VhcnQuYz0xMTE1PXN0YXRpYyBpbnQgX19pbml0IHNkaW9fdWFydF9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fdWFydC5jLTExNDAtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX3VhcnQuYzoxMTQxOlxcdHJldCA9IHNkaW9fcmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZzZGlvX3VhcnRfZHJpdmVyKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fdWFydC5jLTExNDItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9zZGlvLmM9MTk1PWludCBiNDNfc2Rpb19pbml0KHZvaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL3NkaW8uYy0xOTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9zZGlvLmM6MTk3OlxcdHJldHVybiBzZGlvX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2YjQzX3NkaW9fZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvc2Rpby5jLTE5OC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM9MTI3MT1pbnQgYnJjbWZfc2Rpb19yZWdpc3Rlcih2b2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYy0xMjcyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM6MTI3MzpcXHRyZXR1cm4gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmJyY21mX3NkbW1jX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jLTEyNzQtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhcy9pZl9zZGlvLmM9MTM5MD1zdGF0aWMgaW50IF9faW5pdCBpZl9zZGlvX2luaXRfbW9kdWxlKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzL2lmX3NkaW8uYy0xMzk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXMvaWZfc2Rpby5jOjEzOTc6XFx0cmV0ID0gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmlmX3NkaW9fZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzL2lmX3NkaW8uYy0xMzk4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmM9NTAzPXN0YXRpYyBpbnQgX19pbml0IHdmeF9jb3JlX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jLTUxMi1cXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTU1DKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jOjUxMzpcXHRcXHRyZXQgPSBzZGlvX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2d2Z4X3NkaW9fZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYy01MTQtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L2N3MTIwMC9jdzEyMDBfc2Rpby5jPTM4OD1zdGF0aWMgaW50IF9faW5pdCBjdzEyMDBfc2Rpb19pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zdC9jdzEyMDAvY3cxMjAwX3NkaW8uYy00MDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL2N3MTIwMF9zZGlvLmM6NDAxOlxcdHJldCA9IHNkaW9fcmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZzZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL2N3MTIwMF9zZGlvLmMtNDAyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz00NTM9c3RhdGljIGludCBfX2luaXQgcnR3X2Rydl9lbnRyeSh2b2lkKVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTQ1NC17XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM6NDU1OlxcdHJldHVybiBzZGlvX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2cnRsODcyM2JzX3NkaW9fZHJpdmVyKTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy00NTYtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoyMDowMC4zMDU1NDY0MzdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDE1NjQ1MDQ1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBueHB3aWZpX3NkaW8gRHJpdmVyJ3MgUmVhY2gqKlxuXG5Pa2F5LCBsZXQncyBkaXNzZWN0IHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB2ZXJpZnkgaG93IHRoZSBgbnhwd2lmaV9zZGlvYCBkcml2ZXIgcmVnaXN0ZXJzLiBSaWdodCwgc28gaXQncyBzdHJhaWdodGZvcndhcmQ6IEkgc2VlIGl0J3MgcmVnaXN0ZXJlZCB0aHJvdWdoIGBtb2R1bGVfc2Rpb19kcml2ZXJgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNgLiBUaGF0IHRlbGxzIG1lIGl0IHVzZXMgYHNkaW9fcmVnaXN0ZXJfZHJpdmVyYCwgd2hpY2ggaXMgc3RhbmRhcmQuXG5cbk5vdywgbGV0J3Mgc2VlIHdoYXQgcXVpcmtzIG1pZ2h0IGJlIGluIHBsYXkuIEkgY2hlY2sgYGRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmhgLiBBaCwgeWVzLCBpdOKAmXMgY29tcGlsZWQgaW50byB0aGUgTU1DIGNvcmUgd2hlbiBgQ09ORklHX01NQ2AgaXMgZW5hYmxlZC4gQW5kLCBhcyBleHBlY3RlZCwgYHNkaW9fZml4dXBfbWV0aG9kc2AgY2FuIGdldCBtYXRjaGVkIGR1cmluZyB0aGUgU0RJTyBkZXZpY2UgZGV0ZWN0aW9uIGFuZCBpbml0aWFsaXphdGlvbiwgc3BlY2lmaWNhbGx5LCB3aXRoIGBtbWNfZml4dXBfZGV2aWNlYC5cblxuSGVyZSdzIHRoZSBzbmFnLiBCZWNhdXNlLCBhcyBmYXIgYXMgSSBjYW4gdGVsbCwgYW5kIGhhdmUgYmVlbiBhYmxlIHRvIHJlcHJvZHVjZSwgdGhlcmUncyBubyBTRElPIGhhcmR3YXJlIGZvciBOWFAgSVc2MTAgb3IgSVc2MXggYXR0YWNoZWQgb3IgZW11bGF0ZWQgaW4gdHlwaWNhbCBRRU1VIHNldHVwcyBvciBldmVuIG9uIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBWTXMsIHVubGlrZSBVU0IgZ2FkZ2V0cyBvciBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiBUaGF0IG1lYW5zIHRoZSBkcml2ZXIncyBgcHJvYmVgIGZ1bmN0aW9uLCAxMW4gVExWcywgYW55IFNESU8gb3BlcmF0aW9ucywgYW5kIHRob3NlIGltcG9ydGFudCBxdWlya3MgYXJlLCB1bmZvcnR1bmF0ZWx5LCB1bnJlYWNoYWJsZSBpbiB0aGVzZSBlbnZpcm9ubWVudHMuIEl0J3Mgc2ltcGx5IG5vdCBiZWluZyBleGVyY2lzZWQuXG5cblNvLCBJIG5lZWQgdG8gbG9vayBpbnRvIGEgd29ya2Fyb3VuZC4gQ2FuIEkgaW5zdGFudGlhdGUgYG54cHdpZmlgIHRocm91Z2ggYG1hYzgwMjExX2h3c2ltYCwgcGVyaGFwcywgb3IgdXNpbmcgbmV0bGluaywgb3IgZXZlbiBhIG1vY2sgZGV2aWNlPyBUaGF0IHNlZW1zIHRvIGJlIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCDigJMgSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGRyaXZlcidzIGVudHJ5IHBvaW50cyBvciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMuIFRoYXQncyB0aGUgb25seSB3YXkgSSdtIGdvaW5nIHRvIGFjdHVhbGx5IGdldCBhIGxvb2sgYXQgaG93IHRoaXMgaXMgc3VwcG9zZWQgdG8gYmVoYXZlIGFuZCB0ZXN0IHRoaW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYzMzMsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTA6MjA6MDQuNDYyMDAwMjM0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODY3Njg5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfaW5pdHxzdWJzeXNfaW5pdGNhbGx8bW9kdWxlX3NkaW9fZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYz0xNjYwPW54cHdpZmlfY2xlYW51cF9tb2R1bGUodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYzoxNjY3Om1vZHVsZV9pbml0KG54cHdpZmlfaW5pdF9tb2R1bGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjY4LW1vZHVsZV9leGl0KG54cHdpZmlfY2xlYW51cF9tb2R1bGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jPTIzMDk9c3RhdGljIHN0cnVjdCBueHB3aWZpX2lmX29wcyBzZGlvX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYy0yMzM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYzoyMzM3Om1vZHVsZV9zZGlvX2RyaXZlcihueHB3aWZpX3NkaW8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYy0yMzM4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoyMDowNC41MTA2ODM0NDNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjUwNTg3NjY0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgbnhwd2lmaV9pbml0X21vZHVsZWAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdpdGggdGhpcyBXaUZpIG1vZHVsZSBpbml0aWFsaXphdGlvbi4gTGV0J3Mgc3RhcnQgd2l0aCBgbnhwd2lmaV9pbml0X21vZHVsZWAgY2FsbGVkIGZyb20gYG1haW4uY2AuIFRoYXQncyB0aGUgbG9naWNhbCBlbnRyeSBwb2ludC4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHN5c3RlbSBzZXRzIHRoaW5ncyB1cCwgd2hhdCByZXNvdXJjZXMgYXJlIGFsbG9jYXRlZCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyByZWQgZmxhZ3MgaW4gdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBJJ20gbG9va2luZyBmb3IgdGhlIHN0YW5kYXJkIHN0dWZmOiBkcml2ZXIgcmVnaXN0cmF0aW9uLCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiAocmVnaXN0ZXJzLCBpbnRlcnJ1cHRzKSwgbWF5YmUgc29tZSBzYW5pdHkgY2hlY2tzIG9uIHRoZSBoYXJkd2FyZSwgYW5kIGxpa2VseSBzb21lIHRhc2sgY3JlYXRpb24gb3IgdGhyZWFkIHNwYXduaW5nIHRvIGhhbmRsZSB0aGUgYmFja2dyb3VuZCBwcm9jZXNzaW5nLiBHaXZlbiB0aGlzIGlzIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24sIEkgZXhwZWN0IHRoZXJlIHdpbGwgYmUgYXQgbGVhc3QgYSBjYWxsIHRvIHJlZ2lzdGVyIHRoZSBtb2R1bGUgd2l0aCB0aGUga2VybmVsLiBJJ2xsIG5lZWQgdG8gZm9jdXMgb24gd2hhdCBoYXBwZW5zIGJlZm9yZSBhbmQgYWZ0ZXIgdGhhdCBjYWxsIHRvIGZpZ3VyZSBvdXQgdGhlIG1vZHVsZSdzIGludGVyYWN0aW9ucyB3aXRoIHRoZSBzeXN0ZW0uIExldCdzIHNlZSBpZiB0aGUgY29kZSBpcyBzdHJ1Y3R1cmVkIGluIGEgbG9naWNhbCBtYW5uZXIgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBvcHBvcnR1bml0aWVzIGZvciBvcHRpbWl6YXRpb24gb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjczMDMsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoyMDowNy4wMTY1NjMwODVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA2NzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjQ1LFxuICBcIkxpbmVDb3VudFwiOiAzNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjQ1OlxcdH1cXG4xNjQ2OlxcdEVYUE9SVF9TWU1CT0xfR1BMKF9ueHB3aWZpX2RiZyk7XFxuMTY0NzpcXHRcXG4xNjQ4OlxcdC8qIE1vZHVsZSBpbml0OiBpbml0IGRlYnVnZnMgaWYgZW5hYmxlZC4gKi9cXG4xNjQ5OlxcdHN0YXRpYyBpbnRcXG4xNjUwOlxcdG54cHdpZmlfaW5pdF9tb2R1bGUodm9pZClcXG4xNjUxOlxcdHtcXG4xNjUyOlxcdCNpZmRlZiBDT05GSUdfREVCVUdfRlNcXG4xNjUzOlxcdFxcdG54cHdpZmlfZGVidWdmc19pbml0KCk7XFxuMTY1NDpcXHQjZW5kaWZcXG4xNjU1OlxcdFxcdHJldHVybiAwO1xcbjE2NTY6XFx0fVxcbjE2NTc6XFx0XFxuMTY1ODpcXHQvKiBNb2R1bGUgZXhpdDogcmVtb3ZlIGRlYnVnZnMgaWYgZW5hYmxlZC4gKi9cXG4xNjU5OlxcdHN0YXRpYyB2b2lkXFxuMTY2MDpcXHRueHB3aWZpX2NsZWFudXBfbW9kdWxlKHZvaWQpXFxuMTY2MTpcXHR7XFxuMTY2MjpcXHQjaWZkZWYgQ09ORklHX0RFQlVHX0ZTXFxuMTY2MzpcXHRcXHRueHB3aWZpX2RlYnVnZnNfcmVtb3ZlKCk7XFxuMTY2NDpcXHQjZW5kaWZcXG4xNjY1OlxcdH1cXG4xNjY2OlxcdFxcbjE2Njc6XFx0bW9kdWxlX2luaXQobnhwd2lmaV9pbml0X21vZHVsZSk7XFxuMTY2ODpcXHRtb2R1bGVfZXhpdChueHB3aWZpX2NsZWFudXBfbW9kdWxlKTtcXG4xNjY5OlxcdFxcbjE2NzA6XFx0TU9EVUxFX0FVVEhPUihcXFwiTlhQIEludGVybmF0aW9uYWwgTHRkLlxcXCIpO1xcbjE2NzE6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJOWFAgV2lGaSBEcml2ZXIgdmVyc2lvbiBcXFwiIFZFUlNJT04pO1xcbjE2NzI6XFx0TU9EVUxFX1ZFUlNJT04oVkVSU0lPTik7XFxuMTY3MzpcXHRNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEwOjIwOjA3LjAxNjk3MjQzNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTk2MjQwNzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgYG54cHdpZmlfc2Rpb2AgcHJvYmUsIGRpdmluZyBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNgOlxuXG4qKlByb2JpbmcgdGhlIGBueHB3aWZpX3NkaW9gIE1vZHVsZSoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcyBgbnhwd2lmaV9zZGlvYCBwcm9iZSBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGluaXRpYWxpemVzIGFuZCBpbnRlcmFjdHMgd2l0aCB0aGUgU0RJTyBpbnRlcmZhY2UgZm9yIHRoZSBOWFAgV2ktRmkgY2hpcC4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdyB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uY2AuIEZpcnN0LCBJJ2xsIGlkZW50aWZ5IHRoZSBlbnRyeSBwb2ludCBhbmQgZm9sbG93IGhvdyB0aGUgZHJpdmVyIHNldHMgdXAgdGhlIFNESU8gaG9zdCBpbnRlcmZhY2UgYW5kIHRoZSBkZXZpY2UgaXRzZWxmLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgU0RJTyBjb21tYW5kIHNlcXVlbmNlcywgdGhlIGludGVycnVwdCBoYW5kbGluZywgYW5kIGFueSBwb3dlciBtYW5hZ2VtZW50IHJvdXRpbmVzIGludm9sdmVkLiBJJ20gbG9va2luZyBmb3IgdGhlIGVzc2VudGlhbCBzdGVwczogYXJlIHRoZXkgY29uZmlndXJpbmcgdGhlIFNESU8gY2FyZCByZWdpc3RlcnM/IE1hcHBpbmcgdGhlIGRldmljZSBtZW1vcnk/IEluaXRpYWxpemluZyB0aGUgZmlybXdhcmUgZG93bmxvYWQgcHJvY2VzcywgaWYgYW55PyBJIHdhbnQgdG8gaWRlbnRpZnkgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBzZWUgaG93IHRoZSBkcml2ZXIgbGlua3MgaXRzZWxmIHRvIHRoZSBTRElPIGJ1cy4gSSdsbCBhbHNvIGNoZWNrIGZvciBhbnkgZXJyb3IgaGFuZGxpbmcgb3IgcmV0cnkgbWVjaGFuaXNtcyBmb3Igcm9idXN0bmVzcy4gQW55IHVudXN1YWwgU0RJTyBjYXJkIGFjY2VzcyBwYXR0ZXJucywgc3BlY2lmaWMgdG8gdGhlIE5YUCBjaGlwLCBhcmUgYWxzbyBvbiBteSByYWRhci4gTXkgZ29hbCBpcyB0byBkZXZlbG9wIGEgY2xlYXIgbWVudGFsIG1vZGVsIG9mIHRoZSBwcm9iZSBvcGVyYXRpb24sIGluY2x1ZGluZyB0aGUgZGVwZW5kZW5jaWVzIG9uIG90aGVyIHN1YnN5c3RlbXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3OTc0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoyMDoxMC4yMTMyMTU0MzZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNjk0MDc1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJueHB3aWZpX3NkaW9fcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jPTEzNT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jOjEzNjpueHB3aWZpX3NkaW9fcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYywgY29uc3Qgc3RydWN0IHNkaW9fZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtMTM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYz00ODY9c3RhdGljIHN0cnVjdCBzZGlvX2RyaXZlciBueHB3aWZpX3NkaW8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtNDg4LVxcdC5pZF90YWJsZSA9IG54cHdpZmlfaWRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYzo0ODk6XFx0LnByb2JlID0gbnhwd2lmaV9zZGlvX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYy00OTAtXFx0LnJlbW92ZSA9IG54cHdpZmlfc2Rpb19yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEwOjIwOjEwLjUyMDE2MDk2MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NDU4MTM4NjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBueHB3aWZpX3NkaW9gIERyaXZlciBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgbnhwd2lmaV9zZGlvYCBkcml2ZXIuIFRoZSBkcml2ZXIgaXRzZWxmIGlzIHNwZWNpZmljYWxseSBmb3IgU0RJTyBXaS1GaSBkZXZpY2VzLCB0YXJnZXRpbmcgTlhQJ3MgSVc2MXggYW5kIElXNjEwIGNoaXBzZXRzLiBNeSB1bmRlcnN0YW5kaW5nLCBhbmQgSSdtIHN1cmUgeW91IGtub3cgdGhpcyBhcyB3ZWxsLCBpcyB0aGF0IFNESU8gcmVxdWlyZXMgYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLiBJdCdzIG5vdCBzb21ldGhpbmcgeW91IGNhbiBqdXN0IHNwaW4gdXAgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpLCB3aGljaCBpcyB3aGF0IHN5emthbGxlciwgb3VyIHByaW1hcnkgZnV6emluZyB0b29sLCB0eXBpY2FsbHkgdXNlcy5cblxuSSd2ZSByZXZpZXdlZCB0aGUgY2hhbmdlcyBhbmQgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCB0aGVzZSBwYXRjaGVzIGFyZSBhbGwgYWJvdXQgZW5hYmxpbmcgYW5kIHByb3ZpZGluZyBzdXBwb3J0IGZvciB0aGF0IHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUuIExldCdzIGJyZWFrIGl0IGRvd246XG5cbiogICBUaGVyZSdzIGFuIE1NQyBxdWlyayB0YWJsZSBlbnRyeSBhZGRlZCwgd2hpY2ggZGVhbHMgd2l0aCBpbml0aWFsaXppbmcgdGhlIE1NQyBpbnRlcmZhY2Ugc3BlY2lmaWNhbGx5IGZvciB0aGUgTlhQIElXNjEwIFNESU8gZGV2aWNlLlxuKiAgIFdlJ3JlIGdldHRpbmcgY2hhbm5lbCBiYW5kd2lkdGggaGFuZGxpbmcgaW4gYDExbi5jYCwgd2hpY2ggbWFrZXMgbWUgdGhpbmsgdGhlcmUncyBiZWVuIHNvbWUgbmV3IGZlYXR1cmVzIGFkZGVkIHRoYXQgcmVxdWlyZSBmaXJtd2FyZSBjYXBhYmlsaXRpZXMuXG4qICAgV2UgaGF2ZSBuZXcgZmlybXdhcmUgbWFjcm9zIGluIGBmdy5oYCwgZGVmaW5pbmcgdmFyaW91cyBmaXJtd2FyZSBjYXBhYmlsaXR5IGJpdHMuXG4qICAgYHNkaW8uY2AgaGFzIGRldmljZSBkZXNjcmlwdG9ycyBhbmQgZGV2aWNlIElEIHRhYmxlIGVudHJpZXMgZm9yIElXNjEwLlxuKiAgIFdlIGdldCBhIGZpcm13YXJlIG5hbWUgZGVmaW5pdGlvbiBpbiBgc2Rpby5oYC5cbiogICBGaW5hbGx5LCB0aGVyZSBhcmUgU0RJTyBJRHMgYmVpbmcgZGVmaW5lZCBpbiB0aGUgY29tbW9uIFNESU8gSURzIGhlYWRlci5cblxuTm93LCBiYXNlZCBvbiB0aGUgZ3VpZGFuY2UgKFNlY3Rpb24gMikgcmVnYXJkaW5nIHdoZW4gdG8gbWFyayBzb21ldGhpbmcgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAsIHRoaXMgcGF0Y2ggc2VyaWVzIGhpdHMgdGhlIG1hcmsgcGVyZmVjdGx5LiBJdCBmYWxscyB1bmRlciBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIOKAkyBzcGVjaWZpY2FsbHksIHRoZSBOWFAgSVc2MTAvSVc2MXggU0RJTyBXaS1GaSBkZXZpY2VzIHJlcXVpcmUgaGFyZHdhcmUgdGhhdCBpcyBOT1QgcHJlc2VudCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIuIFRoZSBjb2RlIHBhdGhzIGFyZSBzaW1wbHkgaW5hY2Nlc3NpYmxlLlxuXG5UaGVyZWZvcmUsIHRoZSBvbmx5IHJlYXNvbmFibGUgY29uY2x1c2lvbiBpcyB0aGF0IGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLlxuXG5UaGUgcmVhc29uaW5nIGlzIHByZXR0eSBjb25jaXNlOiB0aGlzIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBhbmQgcXVpcmtzIGZvciBOWFAgSVc2MTAgU0RJTyBXaS1GaSBkZXZpY2VzLCB3aGljaCByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIFNESU8gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cblxuTXkgYHNldC1yZXN1bHRzYCBjYWxsIHdpbGwgbG9vayBsaWtlOlxuXG4qICAgYFdvcnRoRnV6emluZ2A6IGBmYWxzZWBcbiogICBgUmVhc29uaW5nYDogQ29uY2lzZSBleHBsYW5hdGlvbiB0aGF0IHRoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgYW5kIHF1aXJrcyBmb3IgTlhQIElXNjEwIFNESU8gV2ktRmkgZGV2aWNlcywgd2hpY2ggcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBTRElPIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cbiogICBgRW5hYmxlQ29uZmlnc2A6IGBbXWBcbiogICBgRm9jdXNTeW1ib2xzYDogYFtdYFxuXG5BbmQsIGJlZm9yZSBJIHN1Ym1pdCB0aGF0LCBJJ20gZG9pbmcgYSBzYW5pdHkgY2hlY2s6IEkndmUgZ290IGFsbCB0aGUgZmllbGRzIGZpbGxlZCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NTk3LCJPdXRwdXRUb2tlbnMiOjExOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoyMDoxNi45NzgzMDIyNzNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgYWRkcyBzdXBwb3J0IGZvciBOWFAgSVc2MTAgU0RJTyBXaS1GaSBkZXZpY2VzLCBpbmNsdWRpbmcgYW4gU0RJTyBNTUMgcXVpcmssIGRldmljZSBJRCByZWdpc3RyYXRpb24sIGFuZCBmaXJtd2FyZSBjYXBhYmlsaXR5IGhhbmRsaW5nIGZvciBjaGFubmVsIGJhbmR3aWR0aHMgaW4gdGhlIG54cHdpZmkgZHJpdmVyLiBUaGVzZSBtb2RpZmllZCBjb2RlIHBhdGhzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgTlhQIFNESU8gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgc3VwcG9ydCBmb3IgTlhQIElXNjEwIFNESU8gV2ktRmkgZGV2aWNlcywgaW5jbHVkaW5nIGFuIFNESU8gTU1DIHF1aXJrLCBkZXZpY2UgSUQgcmVnaXN0cmF0aW9uLCBhbmQgZmlybXdhcmUgY2FwYWJpbGl0eSBoYW5kbGluZyBmb3IgY2hhbm5lbCBiYW5kd2lkdGhzIGluIHRoZSBueHB3aWZpIGRyaXZlci4gVGhlc2UgbW9kaWZpZWQgY29kZSBwYXRocyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIE5YUCBTRElPIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzIChzdWNoIGFzIFFFTVUvR0NFKSwgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEwOjIwOjE2Ljk3ODMzMzcyM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5s5k9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-08 10:18:11 +0000 UTC FinishedAt: 2026-09-08 10:20:17 +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+CgkJCTx0ZD4yMDI2LzA5LzA4IDEwOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgc3VwcG9ydCBmb3IgTlhQIElXNjEwIFNESU8gV2ktRmkgZGV2aWNlcywgaW5jbHVkaW5nIGFuIFNESU8gTU1DIHF1aXJrLCBkZXZpY2UgSUQgcmVnaXN0cmF0aW9uLCBhbmQgZmlybXdhcmUgY2FwYWJpbGl0eSBoYW5kbGluZyBmb3IgY2hhbm5lbCBiYW5kd2lkdGhzIGluIHRoZSBueHB3aWZpIGRyaXZlci4gVGhlc2UgbW9kaWZpZWQgY29kZSBwYXRocyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIE5YUCBTRElPIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzIChzdWNoIGFzIFFFTVUvR0NFKSwgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTA6MTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxNDZlZDgyMWRjMWQ2ZmY2ZGJjNzY5YTc2OGI3YTUwODAyZGQzOGU1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAxMDoxOToyOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oIGIvZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaFxuaW5kZXggYWUzZWNlODlkMGFhNy4uOThjYjY4MGUzYWNlOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmhcbkBAIC0yMTEsNiAmIzQzOzIxMSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1jX2ZpeHVwIF9fbWF5YmVfdW51c2VkIHNkaW9fZml4dXBfbWV0aG9kc1tdID0ge1xuIFx0U0RJT19GSVhVUChTRElPX1ZFTkRPUl9JRF9OWFAsIFNESU9fREVWSUNFX0lEX05YUF9JVzYxWF9CQVNFLFxuIFx0XHQgICBhZGRfcXVpcmssIE1NQ19RVUlSS19CTEtTWl9GT1JfQllURV9NT0RFKSxcbiBcbiYjNDM7XHRTRElPX0ZJWFVQKFNESU9fVkVORE9SX0lEX05YUCwgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjEwX0JBU0UsXG4mIzQzO1x0XHQgICBhZGRfcXVpcmssIE1NQ19RVUlSS19CTEtTWl9GT1JfQllURV9NT0RFKSxcbiYjNDM7XG4gXHRFTkRfRklYVVBcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmNcbmluZGV4IGMyYTU0ZDc4MWI0MmEuLmE4M2UyOWVjYzQ2NmUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmNcbkBAIC0zNDksNiAmIzQzOzM0OSw3IEBAIG54cHdpZmlfY21kX2FwcGVuZF8xMW5fdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG4gXHRcdFx0bnhwd2lmaV9iYW5kX3RvX3JhZGlvX3R5cGUoKHU4KWJzc19kZXNjLVx1MDAzZWJzc19iYW5kKTtcbiBcbiBcdFx0aWYgKElTU1VQUF8xMUFDRU5BQkxFRChwcml2LVx1MDAzZWFkYXB0ZXItXHUwMDNlZndfY2FwX2luZm8pIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgICFJU1NVUFBfTk9fODBNSFoocHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZWZ3X2NhcF9leHQpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYnNzX2Rlc2MtXHUwMDNlYmNuX3ZodF9vcGVyIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYnNzX2Rlc2MtXHUwMDNlYmNuX3ZodF9vcGVyLVx1MDAzZWNoYW5fd2lkdGggPT1cbiBcdFx0ICAgIElFRUU4MDIxMV9WSFRfQ0hBTldJRFRIXzgwTUhaKSB7XG5AQCAtMzU5LDcgJiM0MzszNjAsOCBAQCBueHB3aWZpX2NtZF9hcHBlbmRfMTFuX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuIFx0XHRcdFx0KChDSEFOX0JXXzgwTUhaIFx1MDAzY1x1MDAzY1xuIFx0XHRcdFx0ICBCQU5EX0NGR19DSEFOX1dJRFRIX1NISUZUX0JJVCkgXHUwMDI2XG4gXHRcdFx0XHQgQkFORF9DRkdfQ0hBTl9XSURUSF9NQVNLKTtcbi1cdFx0fSBlbHNlIGlmIChzYmFuZC1cdTAwM2VodF9jYXAuY2FwIFx1MDAyNlxuJiM0MztcdFx0fSBlbHNlIGlmIChJU1NVUFBfNDBNSFpfRU5BQkxFRChwcml2LVx1MDAzZWFkYXB0ZXItXHUwMDNlZndfY2FwX2V4dCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCAgIHNiYW5kLVx1MDAzZWh0X2NhcC5jYXAgXHUwMDI2XG4gXHRcdFx0ICAgSUVFRTgwMjExX0hUX0NBUF9TVVBfV0lEVEhfMjBfNDAgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgYnNzX2Rlc2MtXHUwMDNlYmNuX2h0X29wZXItXHUwMDNlaHRfcGFyYW0gXHUwMDI2XG4gXHRcdFx0ICAgSUVFRTgwMjExX0hUX1BBUkFNX0NIQU5fV0lEVEhfQU5ZKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZncuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2Z3LmhcbmluZGV4IDE4ODExMGIwMjBjZmEuLjEyNDcyOGE3MjQ0MjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9mdy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9mdy5oXG5AQCAtMzM0LDYgJiM0MzszMzQsOCBAQCBlbnVtIE5YUFdJRklfODAyXzExX1BSSVZBQ1lfRklMVEVSIHtcbiAjZGVmaW5lIERGU19DSEFOX01PVkVfVElNRSAgICAgIDEwMDAwXG4gXG4gI2RlZmluZSBJU1NVUFBfMTFBWEVOQUJMRUQoZndfY2FwX2V4dCkgKChmd19jYXBfZXh0KSBcdTAwMjYgQklUKDcpKVxuJiM0MzsjZGVmaW5lIElTU1VQUF9OT184ME1IWihmd19jYXBfZXh0KSAgICAgICgoZndfY2FwX2V4dCkgXHUwMDI2IEJJVCg4KSlcbiYjNDM7I2RlZmluZSBJU1NVUFBfNDBNSFpfRU5BQkxFRChmd19jYXBfZXh0KSAoKGZ3X2NhcF9leHQpIFx1MDAyNiBCSVQoMTUpKVxuIFxuICNkZWZpbmUgSE9TVF9DTURfR0VUX0hXX1NQRUMgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwM1xuICNkZWZpbmUgSE9TVF9DTURfODAyXzExX1NDQU4gICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uY1xuaW5kZXggOGVmMGY2ZWI0OWUyOC4uZjRkZTQ5NGJmMmYyYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jXG5AQCAtOTYsNiAmIzQzOzk2LDE5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgbnhwd2lmaV9zZGlvX2RldmljZSBueHB3aWZpX3NkaW9faXc2MXggPSB7XG4gXHQuY2FuX2V4dF9zY2FuID0gdHJ1ZSxcbiB9O1xuIFxuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG54cHdpZmlfc2Rpb19kZXZpY2Ugbnhwd2lmaV9zZGlvX2l3NjEwID0ge1xuJiM0MztcdC5maXJtd2FyZSA9IElXNjEwX1NESU9fRldfTkFNRSxcbiYjNDM7XHQucmVnID0gXHUwMDI2bnhwd2lmaV9yZWdfaXc2MXgsXG4mIzQzO1x0Lm1heF9wb3J0cyA9IDMyLFxuJiM0MztcdC5tcF9hZ2dfcGt0X2xpbWl0ID0gMTYsXG4mIzQzO1x0LnR4X2J1Zl9zaXplID0gTlhQV0lGSV9UWF9EQVRBX0JVRl9TSVpFXzRLLFxuJiM0MztcdC5tcF90eF9hZ2dfYnVmX3NpemUgPSBOWFBXSUZJX01QX0FHR1JfQlNJWkVfTUFYLFxuJiM0MztcdC5tcF9yeF9hZ2dfYnVmX3NpemUgPSBOWFBXSUZJX01QX0FHR1JfQlNJWkVfTUFYLFxuJiM0MztcdC5jYW5fZHVtcF9mdyA9IHRydWUsXG4mIzQzO1x0LmZ3X2R1bXBfZW5oID0gdHJ1ZSxcbiYjNDM7XHQuY2FuX2V4dF9zY2FuID0gdHJ1ZSxcbiYjNDM7fTtcbiYjNDM7XG4gc3RhdGljIHN0cnVjdCBtZW1vcnlfdHlwZV9tYXBwaW5nIGdlbmVyaWNfbWVtX3R5cGVfbWFwW10gPSB7XG4gXHR7XCYjMzQ7RFVNUFwmIzM0OywgTlVMTCwgMCwgMHhERH0sXG4gfTtcbkBAIC00NTgsNiAmIzQzOzQ3MSw4IEBAIHN0YXRpYyB2b2lkIG54cHdpZmlfc2Rpb19jb3JlZHVtcChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCBueHB3aWZpX2lkc1tdID0ge1xuIFx0e1NESU9fREVWSUNFKFNESU9fVkVORE9SX0lEX05YUCwgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjFYKSxcbiBcdFx0LmRyaXZlcl9kYXRhID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2bnhwd2lmaV9zZGlvX2l3NjF4fSxcbiYjNDM7XHR7U0RJT19ERVZJQ0UoU0RJT19WRU5ET1JfSURfTlhQLCBTRElPX0RFVklDRV9JRF9OWFBfSVc2MTApLFxuJiM0MztcdFx0LmRyaXZlcl9kYXRhID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2bnhwd2lmaV9zZGlvX2l3NjEwfSxcbiBcdHt9LFxuIH07XG4gXG5AQCAtMjMyNiwzICYjNDM7MjM0MSw0IEBAIE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtOWFAgV2lGaSBTRElPIERyaXZlciB2ZXJzaW9uIFwmIzM0OyBTRElPX1ZFUlNJT04pO1xuIE1PRFVMRV9WRVJTSU9OKFNESU9fVkVSU0lPTik7XG4gTU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiBNT0RVTEVfRklSTVdBUkUoSVc2MVhfU0RJT19GV19OQU1FKTtcbiYjNDM7TU9EVUxFX0ZJUk1XQVJFKElXNjEwX1NESU9fRldfTkFNRSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5oXG5pbmRleCBkZTVjODg0YTViMTQ5Li5lOTg4MTQ0OGZlMmYxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmhcbkBAIC0xMSw2ICYjNDM7MTEsNyBAQFxuICNpbmNsdWRlIFwmIzM0O21haW4uaFwmIzM0O1xuIFxuICNkZWZpbmUgSVc2MVhfU0RJT19GV19OQU1FICAgICBcJiMzNDtueHAvc2RfdzYxeF92MS5iaW4uc2VcJiMzNDtcbiYjNDM7I2RlZmluZSBJVzYxMF9TRElPX0ZXX05BTUUgICAgIFwmIzM0O254cC9zZF9pdzYxMC5iaW4uc2VcJiMzNDtcbiBcbiAjZGVmaW5lIEJMT0NLX01PREVcdDFcbiAjZGVmaW5lIEJZVEVfTU9ERVx0MFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW1jL3NkaW9faWRzLmggYi9pbmNsdWRlL2xpbnV4L21tYy9zZGlvX2lkcy5oXG5pbmRleCBhZmFlOTNmNmYyNDU4Li5kZmZmZGEzZDgwMDJhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbWMvc2Rpb19pZHMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbWMvc2Rpb19pZHMuaFxuQEAgLTEyMyw2ICYjNDM7MTIzLDggQEBcbiAjZGVmaW5lIFNESU9fVkVORE9SX0lEX05YUFx0XHRcdDB4MDQ3MVxuICNkZWZpbmUgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjFYX0JBU0VcdFx0MHgwMjA0XG4gI2RlZmluZSBTRElPX0RFVklDRV9JRF9OWFBfSVc2MVhcdFx0MHgwMjA1XG4mIzQzOyNkZWZpbmUgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjEwX0JBU0VcdFx0MHgwMjE0XG4mIzQzOyNkZWZpbmUgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjEwXHRcdDB4MDIxNVxuIFxuICNkZWZpbmUgU0RJT19WRU5ET1JfSURfUkVBTFRFS1x0XHRcdDB4MDI0Y1xuICNkZWZpbmUgU0RJT19ERVZJQ0VfSURfUkVBTFRFS19SVFc4NzIzQlNcdDB4YjcyM1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEwOjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBhZGRzIHN1cHBvcnQgZm9yIE5YUCBJVzYxMCBTRElPIFdpLUZpIGRldmljZXMsIGluY2x1ZGluZyBhbiBTRElPIE1NQyBxdWlyaywgZGV2aWNlIElEIHJlZ2lzdHJhdGlvbiwgYW5kIGZpcm13YXJlIGNhcGFiaWxpdHkgaGFuZGxpbmcgZm9yIGNoYW5uZWwgYmFuZHdpZHRocyBpbiB0aGUgbnhwd2lmaSBkcml2ZXIuIFRoZXNlIG1vZGlmaWVkIGNvZGUgcGF0aHMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBOWFAgU0RJTyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VL0dDRSksIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTQ2ZWQ4MjFkYzFkNmZmNmRiYzc2OWE3NjhiN2E1MDgwMmRkMzhlNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMTA6MTk6MjkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oIGIvZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaAppbmRleCBhZTNlY2U4OWQwYWE3Li45OGNiNjgwZTNhY2U4IDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmgKQEAgLTIxMSw2ICYjNDM7MjExLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtbWNfZml4dXAgX19tYXliZV91bnVzZWQgc2Rpb19maXh1cF9tZXRob2RzW10gPSB7CiAJU0RJT19GSVhVUChTRElPX1ZFTkRPUl9JRF9OWFAsIFNESU9fREVWSUNFX0lEX05YUF9JVzYxWF9CQVNFLAogCQkgICBhZGRfcXVpcmssIE1NQ19RVUlSS19CTEtTWl9GT1JfQllURV9NT0RFKSwKIAomIzQzOwlTRElPX0ZJWFVQKFNESU9fVkVORE9SX0lEX05YUCwgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjEwX0JBU0UsCiYjNDM7CQkgICBhZGRfcXVpcmssIE1NQ19RVUlSS19CTEtTWl9GT1JfQllURV9NT0RFKSwKJiM0MzsKIAlFTkRfRklYVVAKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmMKaW5kZXggYzJhNTRkNzgxYjQyYS4uYTgzZTI5ZWNjNDY2ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmMKQEAgLTM0OSw2ICYjNDM7MzQ5LDcgQEAgbnhwd2lmaV9jbWRfYXBwZW5kXzExbl90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdiwKIAkJCW54cHdpZmlfYmFuZF90b19yYWRpb190eXBlKCh1OClic3NfZGVzYy0mZ3Q7YnNzX2JhbmQpOwogCiAJCWlmIChJU1NVUFBfMTFBQ0VOQUJMRUQocHJpdi0mZ3Q7YWRhcHRlci0mZ3Q7ZndfY2FwX2luZm8pICZhbXA7JmFtcDsKJiM0MzsJCSAgICAhSVNTVVBQX05PXzgwTUhaKHByaXYtJmd0O2FkYXB0ZXItJmd0O2Z3X2NhcF9leHQpICZhbXA7JmFtcDsKIAkJICAgIGJzc19kZXNjLSZndDtiY25fdmh0X29wZXIgJmFtcDsmYW1wOwogCQkgICAgYnNzX2Rlc2MtJmd0O2Jjbl92aHRfb3Blci0mZ3Q7Y2hhbl93aWR0aCA9PQogCQkgICAgSUVFRTgwMjExX1ZIVF9DSEFOV0lEVEhfODBNSFopIHsKQEAgLTM1OSw3ICYjNDM7MzYwLDggQEAgbnhwd2lmaV9jbWRfYXBwZW5kXzExbl90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdiwKIAkJCQkoKENIQU5fQldfODBNSFogJmx0OyZsdDsKIAkJCQkgIEJBTkRfQ0ZHX0NIQU5fV0lEVEhfU0hJRlRfQklUKSAmYW1wOwogCQkJCSBCQU5EX0NGR19DSEFOX1dJRFRIX01BU0spOwotCQl9IGVsc2UgaWYgKHNiYW5kLSZndDtodF9jYXAuY2FwICZhbXA7CiYjNDM7CQl9IGVsc2UgaWYgKElTU1VQUF80ME1IWl9FTkFCTEVEKHByaXYtJmd0O2FkYXB0ZXItJmd0O2Z3X2NhcF9leHQpICZhbXA7JmFtcDsKJiM0MzsJCQkgICBzYmFuZC0mZ3Q7aHRfY2FwLmNhcCAmYW1wOwogCQkJICAgSUVFRTgwMjExX0hUX0NBUF9TVVBfV0lEVEhfMjBfNDAgJmFtcDsmYW1wOwogCQkJICAgYnNzX2Rlc2MtJmd0O2Jjbl9odF9vcGVyLSZndDtodF9wYXJhbSAmYW1wOwogCQkJICAgSUVFRTgwMjExX0hUX1BBUkFNX0NIQU5fV0lEVEhfQU5ZKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9mdy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZncuaAppbmRleCAxODgxMTBiMDIwY2ZhLi4xMjQ3MjhhNzI0NDIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9mdy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2Z3LmgKQEAgLTMzNCw2ICYjNDM7MzM0LDggQEAgZW51bSBOWFBXSUZJXzgwMl8xMV9QUklWQUNZX0ZJTFRFUiB7CiAjZGVmaW5lIERGU19DSEFOX01PVkVfVElNRSAgICAgIDEwMDAwCiAKICNkZWZpbmUgSVNTVVBQXzExQVhFTkFCTEVEKGZ3X2NhcF9leHQpICgoZndfY2FwX2V4dCkgJmFtcDsgQklUKDcpKQomIzQzOyNkZWZpbmUgSVNTVVBQX05PXzgwTUhaKGZ3X2NhcF9leHQpICAgICAgKChmd19jYXBfZXh0KSAmYW1wOyBCSVQoOCkpCiYjNDM7I2RlZmluZSBJU1NVUFBfNDBNSFpfRU5BQkxFRChmd19jYXBfZXh0KSAoKGZ3X2NhcF9leHQpICZhbXA7IEJJVCgxNSkpCiAKICNkZWZpbmUgSE9TVF9DTURfR0VUX0hXX1NQRUMgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMwogI2RlZmluZSBIT1NUX0NNRF84MDJfMTFfU0NBTiAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA2CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMKaW5kZXggOGVmMGY2ZWI0OWUyOC4uZjRkZTQ5NGJmMmYyYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYwpAQCAtOTYsNiAmIzQzOzk2LDE5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgbnhwd2lmaV9zZGlvX2RldmljZSBueHB3aWZpX3NkaW9faXc2MXggPSB7CiAJLmNhbl9leHRfc2NhbiA9IHRydWUsCiB9OwogCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBueHB3aWZpX3NkaW9fZGV2aWNlIG54cHdpZmlfc2Rpb19pdzYxMCA9IHsKJiM0MzsJLmZpcm13YXJlID0gSVc2MTBfU0RJT19GV19OQU1FLAomIzQzOwkucmVnID0gJmFtcDtueHB3aWZpX3JlZ19pdzYxeCwKJiM0MzsJLm1heF9wb3J0cyA9IDMyLAomIzQzOwkubXBfYWdnX3BrdF9saW1pdCA9IDE2LAomIzQzOwkudHhfYnVmX3NpemUgPSBOWFBXSUZJX1RYX0RBVEFfQlVGX1NJWkVfNEssCiYjNDM7CS5tcF90eF9hZ2dfYnVmX3NpemUgPSBOWFBXSUZJX01QX0FHR1JfQlNJWkVfTUFYLAomIzQzOwkubXBfcnhfYWdnX2J1Zl9zaXplID0gTlhQV0lGSV9NUF9BR0dSX0JTSVpFX01BWCwKJiM0MzsJLmNhbl9kdW1wX2Z3ID0gdHJ1ZSwKJiM0MzsJLmZ3X2R1bXBfZW5oID0gdHJ1ZSwKJiM0MzsJLmNhbl9leHRfc2NhbiA9IHRydWUsCiYjNDM7fTsKJiM0MzsKIHN0YXRpYyBzdHJ1Y3QgbWVtb3J5X3R5cGVfbWFwcGluZyBnZW5lcmljX21lbV90eXBlX21hcFtdID0gewogCXsmIzM0O0RVTVAmIzM0OywgTlVMTCwgMCwgMHhERH0sCiB9OwpAQCAtNDU4LDYgJiM0Mzs0NzEsOCBAQCBzdGF0aWMgdm9pZCBueHB3aWZpX3NkaW9fY29yZWR1bXAoc3RydWN0IGRldmljZSAqZGV2KQogc3RhdGljIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCBueHB3aWZpX2lkc1tdID0gewogCXtTRElPX0RFVklDRShTRElPX1ZFTkRPUl9JRF9OWFAsIFNESU9fREVWSUNFX0lEX05YUF9JVzYxWCksCiAJCS5kcml2ZXJfZGF0YSA9ICh1bnNpZ25lZCBsb25nKSZhbXA7bnhwd2lmaV9zZGlvX2l3NjF4fSwKJiM0MzsJe1NESU9fREVWSUNFKFNESU9fVkVORE9SX0lEX05YUCwgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjEwKSwKJiM0MzsJCS5kcml2ZXJfZGF0YSA9ICh1bnNpZ25lZCBsb25nKSZhbXA7bnhwd2lmaV9zZGlvX2l3NjEwfSwKIAl7fSwKIH07CiAKQEAgLTIzMjYsMyAmIzQzOzIzNDEsNCBAQCBNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtOWFAgV2lGaSBTRElPIERyaXZlciB2ZXJzaW9uICYjMzQ7IFNESU9fVkVSU0lPTik7CiBNT0RVTEVfVkVSU0lPTihTRElPX1ZFUlNJT04pOwogTU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwmIzM0Oyk7CiBNT0RVTEVfRklSTVdBUkUoSVc2MVhfU0RJT19GV19OQU1FKTsKJiM0MztNT0RVTEVfRklSTVdBUkUoSVc2MTBfU0RJT19GV19OQU1FKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uaAppbmRleCBkZTVjODg0YTViMTQ5Li5lOTg4MTQ0OGZlMmYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5oCkBAIC0xMSw2ICYjNDM7MTEsNyBAQAogI2luY2x1ZGUgJiMzNDttYWluLmgmIzM0OwogCiAjZGVmaW5lIElXNjFYX1NESU9fRldfTkFNRSAgICAgJiMzNDtueHAvc2RfdzYxeF92MS5iaW4uc2UmIzM0OwomIzQzOyNkZWZpbmUgSVc2MTBfU0RJT19GV19OQU1FICAgICAmIzM0O254cC9zZF9pdzYxMC5iaW4uc2UmIzM0OwogCiAjZGVmaW5lIEJMT0NLX01PREUJMQogI2RlZmluZSBCWVRFX01PREUJMApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbWMvc2Rpb19pZHMuaCBiL2luY2x1ZGUvbGludXgvbW1jL3NkaW9faWRzLmgKaW5kZXggYWZhZTkzZjZmMjQ1OC4uZGZmZmRhM2Q4MDAyYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbWMvc2Rpb19pZHMuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L21tYy9zZGlvX2lkcy5oCkBAIC0xMjMsNiAmIzQzOzEyMyw4IEBACiAjZGVmaW5lIFNESU9fVkVORE9SX0lEX05YUAkJCTB4MDQ3MQogI2RlZmluZSBTRElPX0RFVklDRV9JRF9OWFBfSVc2MVhfQkFTRQkJMHgwMjA0CiAjZGVmaW5lIFNESU9fREVWSUNFX0lEX05YUF9JVzYxWAkJMHgwMjA1CiYjNDM7I2RlZmluZSBTRElPX0RFVklDRV9JRF9OWFBfSVc2MTBfQkFTRQkJMHgwMjE0CiYjNDM7I2RlZmluZSBTRElPX0RFVklDRV9JRF9OWFBfSVc2MTAJCTB4MDIxNQogCiAjZGVmaW5lIFNESU9fVkVORE9SX0lEX1JFQUxURUsJCQkweDAyNGMKICNkZWZpbmUgU0RJT19ERVZJQ0VfSURfUkVBTFRFS19SVFc4NzIzQlMJMHhiNzIzCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEwOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MjUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA3MjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIHBhdGNoIGlzIGV2ZW4gYSB2aWFibGUgdGFyZ2V0IGZvciBzeXprYWxsZXIuIEkgc2VlIGFkZGl0aW9ucyB0byBgZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaGAsIHNwZWNpZmljYWxseSBhZGRpbmcgYSBxdWlyayByZWxhdGVkIHRvIE5YUCBTRElPIGRldmljZXMgYW5kIGJsb2NrIHNpemUgaW4gYnl0ZSBtb2RlLiBUaGVuIHRoZXJlIGFyZSBjaGFuZ2VzIGluIHRoZSBgbnhwd2lmaWAgZHJpdmVyLCBpbmNsdWRpbmcgY2hlY2tzIGZvciA4ME1IeiBhbmQgNDBNSHogY2hhbm5lbCB3aWR0aCBjYXBhYmlsaXRpZXMsIGFsb25nIHdpdGggbmV3IGRldmljZSBzdHJ1Y3R1cmVzIGFuZCBmaXJtd2FyZSBkZWZpbml0aW9ucyBpbiB2YXJpb3VzIGBueHB3aWZpYCBmaWxlcyBhbmQgcmVsYXRlZCBoZWFkZXIgZmlsZXMuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgcmVhY2hhYmlsaXR5IG9mIHRoaXMgZHJpdmVyLiBJcyBgbnhwd2lmaWAgYW4gU0RJTyBkcml2ZXIsIGFuZCBob3cgZG9lcyB0aGF0IGZpdCBpbnRvIHRoZSBwaWN0dXJlIHdpdGggc3l6a2FsbGVyPyBTeXprYWxsZXIgaGFzIFVTQiBlbXVsYXRpb24gKFJhdyBHYWRnZXQsIFVTQkZ1enosIHZoY2kpLCBuZXRkZXZzaW0sIGFuZCBtYWM4MDIxMV9od3NpbSwgYnV0IHdoYXQgYWJvdXQgU0RJTz8gRG9lcyBzeXprYWxsZXIgZW11bGF0ZSBTRElPIGRldmljZXMsIG9yIGlzIHRoaXMgZHJpdmVyIGluaGVyZW50bHkgaGFyZHdhcmUtc3BlY2lmaWM/IERvIFFFTVUgb3Igc3l6a2FsbGVyIGhhdmUgYW4gU0RJTyBoYXJkd2FyZSBlbXVsYXRvciwgb3IgaXMgU0RJTyBzdXBwb3J0IGxpbWl0ZWQ/CgpJIGhhdmUgdG8gY29uc2lkZXIgdGhlIHByb21wdCYjMzk7cyBleGNsdXNpb24gb2Ygc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBvciBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBBU0lDcyBvciBQQ0llIGNhcmRzLiBJIHdvbmRlciBpZiB0aGUgU0RJTyBuYXR1cmUgb2YgYG54cHdpZmlgIGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeS4gSXMgYG54cHdpZmlgIHRpZWQgdG8gU0RJTyBvciBhbnkgZW11bGF0ZWQgdmlydHVhbCBidXMgd2l0aGluIHN5emthbGxlciwgb3IgaXMgaXQgcHVyZWx5IFNESU8gb3IgcG90ZW50aWFsbHkgUENJZSAvIFVTQj8KCkkgdGhpbmsgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvYCBkaXJlY3RvcnkgdG8gc2VlIHdoYXQgaW50ZXJmYWNlcyB0aGlzIGRyaXZlciBzdXBwb3J0cy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB3aGV0aGVyIGl0JiMzOTtzIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBwcmFjdGljYWxseSBmdXp6ZWQgd2l0aGluIG15IGF2YWlsYWJsZSBzeXprYWxsZXIgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTA6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDsxMWFjLmMmIzM0OywKICAgICYjMzQ7MTFhYy5oJiMzNDssCiAgICAmIzM0OzExYXguYyYjMzQ7LAogICAgJiMzNDsxMWF4LmgmIzM0OywKICAgICYjMzQ7MTFoLmMmIzM0OywKICAgICYjMzQ7MTFuLmMmIzM0OywKICAgICYjMzQ7MTFuLmgmIzM0OywKICAgICYjMzQ7MTFuX2FnZ3IuYyYjMzQ7LAogICAgJiMzNDsxMW5fYWdnci5oJiMzNDssCiAgICAmIzM0OzExbl9yeHJlb3JkZXIuYyYjMzQ7LAogICAgJiMzNDsxMW5fcnhyZW9yZGVyLmgmIzM0OywKICAgICYjMzQ7Y2ZnLmgmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTEuYyYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMS5oJiMzNDssCiAgICAmIzM0O2NmcC5jJiMzNDssCiAgICAmIzM0O2NtZGV2dC5jJiMzNDssCiAgICAmIzM0O2NtZGV2dC5oJiMzNDssCiAgICAmIzM0O2RlYnVnZnMuYyYjMzQ7LAogICAgJiMzNDtldGh0b29sLmMmIzM0OywKICAgICYjMzQ7ZncuaCYjMzQ7LAogICAgJiMzNDtpZS5jJiMzNDssCiAgICAmIzM0O2luaXQuYyYjMzQ7LAogICAgJiMzNDtqb2luLmMmIzM0OywKICAgICYjMzQ7bWFpbi5jJiMzNDssCiAgICAmIzM0O21haW4uaCYjMzQ7LAogICAgJiMzNDtzY2FuLmMmIzM0OywKICAgICYjMzQ7c2Rpby5jJiMzNDssCiAgICAmIzM0O3NkaW8uaCYjMzQ7LAogICAgJiMzNDtzdGFfY2ZnLmMmIzM0OywKICAgICYjMzQ7c3RhX2NtZC5jJiMzNDssCiAgICAmIzM0O3N0YV9ldmVudC5jJiMzNDssCiAgICAmIzM0O3N0YV9yeC5jJiMzNDssCiAgICAmIzM0O3N0YV90eC5jJiMzNDssCiAgICAmIzM0O3R4cnguYyYjMzQ7LAogICAgJiMzNDt1YXBfY21kLmMmIzM0OywKICAgICYjMzQ7dWFwX2V2ZW50LmMmIzM0OywKICAgICYjMzQ7dWFwX3R4cnguYyYjMzQ7LAogICAgJiMzNDt1dGlsLmMmIzM0OywKICAgICYjMzQ7dXRpbC5oJiMzNDssCiAgICAmIzM0O3dtbS5jJiMzNDssCiAgICAmIzM0O3dtbS5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxMDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDA4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGlnIGludG8gdGhlIHdpcmVsZXNzIG5ldHdvcmtpbmcgZHJpdmVycyBmb3IgTlhQLiBHaXZlbiBteSBleHBlcnRpc2UsIEkgc3VzcGVjdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYW5kIGJ1aWxkIGluc3RydWN0aW9ucyB3aWxsIGJlIGZvdW5kIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9gIGRpcmVjdG9yeS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBsb29raW5nIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGF0IGRpcmVjdG9yeTsgaXQmIzM5O3MgdGhlIHVzdWFsIHBsYWNlIGZvciB0aGVzZSB0aGluZ3MuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcGFydGljdWxhciBOWFAgd2lyZWxlc3MgaW1wbGVtZW50YXRpb24uIElmIHRoYXQgZG9lc24mIzM5O3QgaW1tZWRpYXRlbHkgcmV2ZWFsIHdoYXQgSSBuZWVkLCB0aGUgYE1ha2VmaWxlYCBpbiBlaXRoZXIgdGhlIGBueHB3aWZpYCBzdWJkaXJlY3RvcnksIG9yIGluZGVlZCwgdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnksIGlzIG15IG5leHQgdGFyZ2V0LiBJdCYjMzk7bGwgc2hvdyBtZSBob3cgdGhpcyBkcml2ZXIgaXMgYnVpbHQgYW5kIHdoaWNoIHNvdXJjZXMgYXJlIGludm9sdmVkLiBIb3BlZnVsbHkgSSBjYW4gZ2V0IHdoYXQgSSBuZWVkIGZyb20gZWl0aGVyIG9mIHRoZXNlIGZpbGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEwOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O254cHdpZmkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE1MTgwIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvS2NvbmZpZz0xMz1pZiBXTEFOX1ZFTkRPUl9OWFBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL0tjb25maWc6MTU6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnLTE2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9NYWtlZmlsZS0yLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX05YUFdJRkkpXHQmIzQzOz0gbnhwd2lmaS9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMi0vKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjM6ICogbnhwd2lmaSA4MDIuMTFhYyBoZWxwZXJzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtNC0gKiBDb3B5cmlnaHQgMjAxMS0yMDI0IE5YUFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYz0zNj1zdGF0aWMgdTE2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6Mzc6bnhwd2lmaV9jb252ZXJ0X21jc21hcF90b19tYXhyYXRlKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMzgtXHRcdFx0XHQgIHUxNiBiYW5kcywgdTE2IG1jc19tYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTQyLVx0dTMyIHVzcl92aHRfY2FwX2luZm8gPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjQzOlx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy00NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9Nzk9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo4MDpueHB3aWZpX2ZpbGxfdmh0X2NhcF9pbmZvKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODEtXHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHUxNiBiYW5kcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy04Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6ODM6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTg0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYz05Mz12b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6OTQ6bnhwd2lmaV9maWxsX3ZodF9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtOTUtXHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTE2IGJhbmRzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTk2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo5NzpcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtOTgtXHR1MTYgbWNzX21hcF91c2VyLCBtY3NfbWFwX3Jlc3AsIG1jc19tYXBfcmVzdWx0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xMDEtXHQvKiBGaWxsIFZIVCBjYXBhYmlsaXR5IGluZm8uICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTAyOlx0bnhwd2lmaV9maWxsX3ZodF9jYXBfaW5mbyhwcml2LCB2aHRfY2FwLCBiYW5kcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTAzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTI0Olx0dG1wID0gbnhwd2lmaV9jb252ZXJ0X21jc21hcF90b19tYXhyYXRlKHByaXYsIGJhbmRzLCBtY3NfbWFwX3Jlc3VsdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTI1LVx0dmh0X2NhcC1cdTAwM2VzdXBwX21jcy5yeF9oaWdoZXN0ID0gY3B1X3RvX2xlMTYodG1wKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE0NjpcdHRtcCA9IG54cHdpZmlfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShwcml2LCBiYW5kcywgbWNzX21hcF9yZXN1bHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE0Ny1cdHZodF9jYXAtXHUwMDNlc3VwcF9tY3MudHhfaGlnaGVzdCA9IGNwdV90b19sZTE2KHRtcCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTA6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWFjX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1MTpcdFx0XHRcdHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE1Mi1cdFx0XHRcdHU4ICoqYnVmZmVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE1My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTU0Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0Y2FwICp2aHRfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1NTpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX29wZXJfbW9kZV9udGYgKm9wZXJfbnRmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE1Ni1cdHN0cnVjdCBpZWVlX3R5cGVzX29wZXJfbW9kZV9udGYgKmllZWVfb3Blcl9udGY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTU3Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0X29wZXIgKnZodF9vcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTg6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE1OS1cdHU4IHN1cHBfY2h3ZF9zZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE2OS1cdGlmIChic3NfZGVzYy1cdTAwM2ViY25fdmh0X2NhcCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE3MDpcdFx0dmh0X2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRjYXAgKikqYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3MS1cdFx0bWVtc2V0KHZodF9jYXAsIDAsIHNpemVvZigqdmh0X2NhcCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzQtXHRcdFx0Y3B1X3RvX2xlMTYoc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE3NTpcdFx0bWVtY3B5KCh1OCAqKXZodF9jYXAgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTc2LVx0XHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXHUwMDNlYmNuX3ZodF9jYXAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNzk6XHRcdG54cHdpZmlfZmlsbF92aHRfY2FwX3Rsdihwcml2LCBcdTAwMjZ2aHRfY2FwLVx1MDAzZXZodF9jYXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTgwLVx0XHRcdFx0XHQgYnNzX2Rlc2MtXHUwMDNlYnNzX2JhbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xODctXHRcdGlmIChwcml2LVx1MDAzZWJzc19tb2RlID09IE5MODAyMTFfSUZUWVBFX1NUQVRJT04pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxODg6XHRcdFx0dmh0X29wID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX3ZodF9vcGVyICopKmJ1ZmZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xODktXHRcdFx0bWVtc2V0KHZodF9vcCwgMCwgc2l6ZW9mKCp2aHRfb3ApKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTkyLVx0XHRcdHZodF9vcC1cdTAwM2VoZWFkZXIubGVuICA9IGNwdV90b19sZTE2KHNpemVvZigqdmh0X29wKSAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTkzOlx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlcikpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5NC1cdFx0XHRtZW1jcHkoKHU4ICopdmh0X29wICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTk1Olx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTk2LVx0XHRcdCAgICAgICAodTggKilic3NfZGVzYy1cdTAwM2ViY25fdmh0X29wZXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTI0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoyNDU6aW50IG54cHdpZmlfY21kXzExYWNfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjQ2LVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoyNDc6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYWNfdmh0X2NmZyAqY2ZnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTI0OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTI2NC0vKiBJbml0aWFsaXplIEJsb2NrQWNrIHBhcmFtZXRlcnMgZm9yIDExYWMuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MjY1OnZvaWQgbnhwd2lmaV9zZXRfMTFhY19iYV9wYXJhbXMoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0yLS8qXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MzogKiBueHB3aWZpOiA4MDIuMTFhYyAoVkhUKSBkZWZpbml0aW9uc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTQtICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg9MTQ9ZW51bSB2aHRfY2ZnX21pc2NfY29uZmlnIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MjU6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWFjX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjI2Olx0XHRcdFx0c3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjctXHRcdFx0XHR1OCAqKmJ1ZmZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6Mjg6aW50IG54cHdpZmlfY21kXzExYWNfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjktXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oOjMwOlx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWFjX3ZodF9jZmcgKmNmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MzE6dm9pZCBueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0zMi1cdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHUxNiBiYW5kcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI6Lyogbnhwd2lmaTogODAyLjExYXggKEhFKSBzdXBwb3J0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMy0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyNCBOWFBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTE6dm9pZCBueHB3aWZpX3VwZGF0ZV8xMWF4X2NhcChzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEyLVx0XHRcdCAgICAgc3RydWN0IGh3X3NwZWNfZXh0ZW5zaW9uICpod19oZV9jYXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0Olx0c3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaGVfY2FwID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNjpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqdXNlcl9oZV9jYXAgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3Olx0dTggaGVhZGVyX2xlbiA9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE4LVx0dTE2IGRhdGFfbGVuID0gbGUxNl90b19jcHUoaHdfaGVfY2FwLVx1MDAzZWhlYWRlci5sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMi1cdGlmICgoZGF0YV9sZW4gJiM0MzsgaGVhZGVyX2xlbikgXHUwMDNlIHNpemVvZihhZGFwdGVyLVx1MDAzZWh3X2hlX2NhcCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMzpcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjQtXHRcdFx0ICAgIFwmIzM0O2h3X2hlX2NhcCB0b28gYmlnLCBsZW49JWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI5Olx0aGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKWh3X2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzctXHRcdGhlX2NhcF8yZyA9IHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mzg6XHRcdG54cHdpZmlfZGJnX2R1bXAoYWRhcHRlciwgQ01EX0QsIFwmIzM0OzIuNEcgSEUgY2FwYWJpbGl0eSBlbGVtZW50IFwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zOS1cdFx0XHRcdCBhZGFwdGVyLVx1MDAzZWh3XzJnX2hlX2NhcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDUtXHRcdGFkYXB0ZXItXHUwMDNlZndfYmFuZHMgfD0gQkFORF9BQVg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDY6XHRcdG54cHdpZmlfZGJnX2R1bXAoYWRhcHRlciwgQ01EX0QsIFwmIzM0OzVHIEhFIGNhcGFiaWxpdHkgZWxlbWVudCBcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDctXHRcdFx0XHQgYWRhcHRlci1cdTAwM2Vod19oZV9jYXAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU3LVx0XHRcdCAgICAgICBzaXplb2YoYWRhcHRlci1cdTAwM2Vod18yZ19oZV9jYXApKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1ODpcdFx0XHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01OS1cdFx0XHRcdHByaXYtXHUwMDNldXNlcl8yZ19oZV9jYXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTYzLVx0XHRcdCAgICAgICBzaXplb2YoYWRhcHRlci1cdTAwM2Vod19oZV9jYXApKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo2NDpcdFx0XHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy02NS1cdFx0XHRcdHByaXYtXHUwMDNldXNlcl9oZV9jYXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjc5OmJvb2wgbnhwd2lmaV8xMWF4X2JhbmRjb25maWdfYWxsb3dlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjgwOlx0XHRcdFx0ICAgICBzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy04MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjk1OmludCBueHB3aWZpX2ZpbGxfaGVfY2FwX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjk2Olx0XHRcdCAgICBzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy05Ny1cdFx0XHQgICAgdTE2IGJhbmRzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTk4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo5OTpcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTAwOlx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpod19oZV9jYXAgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEwMS1cdHUxNiByeF9uc3MsIHR4X25zcztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTA4LVx0XHRtZW1jcHkoaGVfY2FwLCBwcml2LVx1MDAzZXVzZXJfaGVfY2FwLCBwcml2LVx1MDAzZXVzZXJfaGVfY2FwX2xlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTA5Olx0XHRod19oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopYWRhcHRlci1cdTAwM2Vod19oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTEwLVx0XHRyZXRfbGVuID0gcHJpdi1cdTAwM2V1c2VyX2hlX2NhcF9sZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTExMi1cdFx0bWVtY3B5KGhlX2NhcCwgcHJpdi1cdTAwM2V1c2VyXzJnX2hlX2NhcCwgcHJpdi1cdTAwM2V1c2VyXzJnX2hlX2NhcF9sZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjExMzpcdFx0aHdfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKWFkYXB0ZXItXHUwMDNlaHdfMmdfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTExNC1cdFx0cmV0X2xlbiA9IHByaXYtXHUwMDNldXNlcl8yZ19oZV9jYXBfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMjUtXHRmb3IgKG5zcyA9IDE7IG5zcyBcdTAwM2M9IDg7IG5zcyYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMjY6XHRcdGNmZ192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaGVfY2FwLVx1MDAzZXJ4X21jc184MCwgbnNzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMjc6XHRcdGh3X3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhod19oZV9jYXAtXHUwMDNlcnhfbWNzXzgwLCBuc3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEyOC1cdFx0aWYgKHJ4X25zcyAhPSAwIFx1MDAyNlx1MDAyNiBuc3MgXHUwMDNlIHJ4X25zcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMwLVx0XHRpZiAoaHdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQgfHwgY2ZnX3ZhbHVlID09IE5PX05TU19TVVBQT1JUKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEzMTpcdFx0XHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFx1MDAyNmhlX2NhcC1cdTAwM2VyeF9tY3NfODAsIG5zcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzItXHRcdFx0XHRcdCAgICAgICBOT19OU1NfU1VQUE9SVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMzLVx0XHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTM0Olx0XHRcdG54cHdpZmlfc2V0X2hlX25zc19tY3MoXHUwMDI2aGVfY2FwLVx1MDAzZXJ4X21jc184MCwgbnNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzNS1cdFx0XHRcdFx0ICAgICAgIG1pbihjZmdfdmFsdWUsIGh3X3ZhbHVlKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzOC1cdGZvciAobnNzID0gMTsgbnNzIFx1MDAzYz0gODsgbnNzJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEzOTpcdFx0Y2ZnX3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhoZV9jYXAtXHUwMDNldHhfbWNzXzgwLCBuc3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0MDpcdFx0aHdfdmFsdWUgPSBueHB3aWZpX2dldF9oZV9uc3NfbWNzKGh3X2hlX2NhcC1cdTAwM2V0eF9tY3NfODAsIG5zcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQxLVx0XHRpZiAodHhfbnNzICE9IDAgXHUwMDI2XHUwMDI2IG5zcyBcdTAwM2UgdHhfbnNzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDMtXHRcdGlmIChod192YWx1ZSA9PSBOT19OU1NfU1VQUE9SVCB8fCBjZmdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTQ0Olx0XHRcdG54cHdpZmlfc2V0X2hlX25zc19tY3MoXHUwMDI2aGVfY2FwLVx1MDAzZXR4X21jc184MCwgbnNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0NS1cdFx0XHRcdFx0ICAgICAgIE5PX05TU19TVVBQT1JUKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDYtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDc6XHRcdFx0bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhcdTAwMjZoZV9jYXAtXHUwMDNldHhfbWNzXzgwLCBuc3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQ4LVx0XHRcdFx0XHQgICAgICAgbWluKGNmZ192YWx1ZSwgaHdfdmFsdWUpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE1NDppbnQgbnhwd2lmaV9jbWRfYXBwZW5kXzExYXhfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU1Olx0XHRcdFx0c3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTU2LVx0XHRcdFx0dTggKipidWZmZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTU3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTg6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTU5LVx0aW50IHJldF9sZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNjQ6XHRoZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopKmJ1ZmZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNjU6XHRyZXRfbGVuID0gbnhwd2lmaV9maWxsX2hlX2NhcF90bHYocHJpdiwgaGVfY2FwLCBic3NfZGVzYy1cdTAwM2Vic3NfYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTY2LVx0KmJ1ZmZlciAmIzQzOz0gcmV0X2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3MTppbnQgbnhwd2lmaV9jbWRfMTFheF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzItXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3MzpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9oZV9jZmcgKmF4X2NmZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzYtXHR1MTYgY21kX3NpemU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTc3Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICpoZWFkZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTc4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xODYtXHQgICAgYXhfY2ZnLVx1MDAzZWhlX2NhcF9jZmcuZXh0X2lkID09IFdMQU5fRUlEX0VYVF9IRV9DQVBBQklMSVRZKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTg3Olx0XHRoZWFkZXIgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICopaGVfY2ZnLVx1MDAzZXRsdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xODgtXHRcdGhlYWRlci1cdTAwM2V0eXBlID0gY3B1X3RvX2xlMTYoYXhfY2ZnLVx1MDAzZWhlX2NhcF9jZmcuaWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjAxOmludCBueHB3aWZpX3JldF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwMi1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjAzOlx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTIwNC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjA1LVx0c3RydWN0IGhvc3RfY21kXzExYXhfY2ZnICpoZV9jZmcgPSBcdTAwMjZyZXNwLVx1MDAzZXBhcmFtcy5heF9jZmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjA2Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICpoZWFkZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjA3LVx0dTE2IGxlZnRfbGVuLCB0bHZfdHlwZSwgdGx2X2xlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDgtXHR1OCBleHRfaWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjA5Olx0c3RydWN0IG54cHdpZmlfMTFheF9oZV9jYXBfY2ZnICpoZV9jYXAgPSBcdTAwMjZheF9jZmctXHUwMDNlaGVfY2FwX2NmZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjExLVx0bGVmdF9sZW4gPSBsZTE2X3RvX2NwdShyZXNwLVx1MDAzZXNpemUpIC0gc2l6ZW9mKCpoZV9jZmcpIC0gU19EU19HRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjEyOlx0aGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKWhlX2NmZy1cdTAwM2V0bHY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjEzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNDItXHRcdGxlZnRfbGVuIC09IChzaXplb2YoKmhlYWRlcikgJiM0MzsgdGx2X2xlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjQzOlx0XHRoZWFkZXIgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVhZGVyICopKCh1OCAqKWhlYWRlciAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI0NC1cdFx0XHRcdFx0XHRcdCAgICBzaXplb2YoKmhlYWRlcikgJiM0Mztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1MTppbnQgbnhwd2lmaV9jbWRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTItXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1MzpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjU0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTU6XHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1Ni1cdHN0cnVjdCBob3N0X2NtZF8xMWF4X2NtZCAqaGVfY21kID0gXHUwMDI2Y21kLVx1MDAzZXBhcmFtcy5heF9jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjU3LVx0dTE2IGNtZF9zaXplO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1ODpcdHN0cnVjdCBueHB3aWZpXzExYXhfc3JfY21kICpzcl9jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjU5Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqdGx2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2MDpcdHN0cnVjdCBueHB3aWZpXzExYXhfYmVhbV9jbWQgKmJlYW1fY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2MTpcdHN0cnVjdCBueHB3aWZpXzExYXhfaHRjX2NtZCAqaHRjX2NtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjI6XHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b21pX2NtZCAqdHhtb2lfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2MzpcdHN0cnVjdCBueHB3aWZpXzExYXhfdG9sdGltZV9jbWQgKnRvbHRpbWVfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2NDpcdHN0cnVjdCBueHB3aWZpXzExYXhfdHhvcF9jbWQgKnR4b3BfY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2NTpcdHN0cnVjdCBueHB3aWZpXzExYXhfc2V0X2JzcnBfY21kICpzZXRfYnNycF9jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjY2Olx0c3RydWN0IG54cHdpZmlfMTFheF9sbGRlX2NtZCAqbGxkZV9jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjY3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNzUtXHRjYXNlIE5YUFdJRklfMTFBWENNRF9TUl9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNzY6XHRcdHNyX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NyX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjc4Olx0XHR0bHYgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqKWhlX2NtZC1cdTAwM2V2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjc5LVx0XHR0bHYtXHUwMDNlaGVhZGVyLnR5cGUgPSBjcHVfdG9fbGUxNihzcl9jbWQtXHUwMDNldHlwZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI4NS1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX0JFQU1fU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjg2Olx0XHRiZWFtX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2JlYW1fY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI4Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjkxLVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfSFRDX1NVQklEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI5MjpcdFx0aHRjX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2h0Y19jbWQgKilcdTAwMjZheF9jbWQtXHUwMDNlcGFyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjkzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOTctXHRjYXNlIE5YUFdJRklfMTFBWENNRF9UWE9NSV9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyOTg6XHRcdHR4bW9pX2NtZCA9XHQoc3RydWN0IG54cHdpZmlfMTFheF90eG9taV9jbWQgKilcdTAwMjZheF9jbWQtXHUwMDNlcGFyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjk5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMDMtXHRjYXNlIE5YUFdJRklfMTFBWENNRF9PQlNTX1RPTFRJTUVfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzA0Olx0XHR0b2x0aW1lX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3RvbHRpbWVfY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMwNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzEwLVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfVFhPUFJUU19TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMTE6XHRcdHR4b3BfY21kID0gKHN0cnVjdCBueHB3aWZpXzExYXhfdHhvcF9jbWQgKilcdTAwMjZheF9jbWQtXHUwMDNlcGFyYW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzEyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMTctXHRjYXNlIE5YUFdJRklfMTFBWENNRF9TRVRfQlNSUF9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMTg6XHRcdHNldF9ic3JwX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NldF9ic3JwX2NtZCAqKVx1MDAyNmF4X2NtZC1cdTAwM2VwYXJhbTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMyMy1cdGNhc2UgTlhQV0lGSV8xMUFYQ01EX0xMREVfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzI0Olx0XHRsbGRlX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2xsZGVfY21kICopXHUwMDI2YXhfY21kLVx1MDAzZXBhcmFtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMyNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzI5LVx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMzA6XHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMzMS1cdFx0XHQgICAgXCYjMzQ7JXM6IFVua25vd24gc3ViIGNvbW1hbmQ6ICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzQxOmludCBueHB3aWZpX3JldF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0Mi1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzQzOlx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2NtZF9jZmcgKmF4X2NtZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM0NTpcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzQ2LVx0c3RydWN0IGhvc3RfY21kXzExYXhfY21kICpoZV9jbWQgPSBcdTAwMjZyZXNwLVx1MDAzZXBhcmFtcy5heF9jbWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzQ3Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqdGx2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzUyLVx0Y2FzZSBOWFBXSUZJXzExQVhDTURfU1JfU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzUzOlx0XHR0bHYgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqKWhlX2NtZC1cdTAwM2V2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzU0LVx0XHRtZW1jcHkoYXhfY21kLVx1MDAzZXBhcmFtLnNyX2NmZy5wYXJhbS5vYnNzX3BkX29mZnNldC5vZmZzZXQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM4My1cdGRlZmF1bHQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mzg0Olx0XHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zODUtXHRcdFx0ICAgIFwmIzM0OyVzOiBVbmtub3duIHN1YiBjb21tYW5kOiAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM5MzpzdGF0aWMgdTggbnhwd2lmaV9pc19hcF8xMWF4X3R3dF9zdXBwb3J0ZWQoc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzk0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxMDpib29sIG54cHdpZmlfaXNfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDExOlx0XHRcdFx0ICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDEyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MTM6XHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKnVzZXJfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxNDpcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaHdfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQxNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxOTpcdGlmICghbnhwd2lmaV9pc19hcF8xMWF4X3R3dF9zdXBwb3J0ZWQoYnNzX2Rlc2MpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDIwOlx0XHRueHB3aWZpX2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIE1TRyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MjEtXHRcdFx0ICAgIFwmIzM0O0FQIGRvbiYjMzk7dCBzdXBwb3J0IHR3dCBmZWF0dXJlXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDI1LVx0aWYgKGJzc19kZXNjLVx1MDAzZWJzc19iYW5kIFx1MDAyNiBCQU5EX0EpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0MjY6XHRcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MjctXHRcdFx0cHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZWh3X2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Mjg6XHRcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyOS1cdFx0XHRwcml2LVx1MDAzZXVzZXJfaGVfY2FwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQzMC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDMxOlx0XHRod19oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDMyLVx0XHRcdHByaXYtXHUwMDNlYWRhcHRlci1cdTAwM2Vod18yZ19oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDMzOlx0XHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzQtXHRcdFx0cHJpdi1cdTAwM2V1c2VyXzJnX2hlX2NhcDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDM3LVx0aWYgKCEoaHdfaGVfY2FwLVx1MDAzZWhlX21hY19jYXBbMF0gXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQzODpcdFx0bnhwd2lmaV9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBNU0csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDM5LVx0XHRcdCAgICBcJiMzNDtGVyBkb24mIzM5O3Qgc3VwcG9ydCBUV1RcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NDMtXHRpZiAoISh1c2VyX2hlX2NhcC1cdTAwM2VoZV9tYWNfY2FwWzBdIFx1MDAyNiBIRV9NQUNfQ0FQX1RXVF9SRVFfU1VQUE9SVCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NDQ6XHRcdG54cHdpZmlfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgTVNHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ0NS1cdFx0XHQgICAgXCYjMzQ7VVNFUiBIRV9NQUNfQ0FQIGRvbiYjMzk7dCBzdXBwb3J0IFRXVFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTI6dTggbnhwd2lmaV9pc19zdGFfMTFheF90d3RfcmVxX3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ1My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDU0Olx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NTUtXHR1OCByZXQgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NTktXHRcdGlmIChwcml2LVx1MDAzZWNvbmZpZ19iYW5kcyBcdTAwMjYgQkFORF9BQVgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDYwOlx0XHRcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKXByaXYtXHUwMDNldXNlcl9oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDYxLVx0XHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDYyOlx0XHRcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKXByaXYtXHUwMDNldXNlcl8yZ19oZV9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDYzLVx0XHRyZXQgPSB1c2VyX2hlX2NhcC1cdTAwM2VoZV9tYWNfY2FwWzBdIFx1MDAyNiBIRV9NQUNfQ0FQX1RXVF9SRVFfU1VQUE9SVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ2OTppbnQgbnhwd2lmaV9jbWRfdHd0X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3MC1cdFx0XHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzE6XHRcdFx0c3RydWN0IG54cHdpZmlfdHd0X2NmZyAqdHd0X2NmZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NzIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3MzpcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDc0LVx0c3RydWN0IGhvc3RfY21kX3R3dF9jZmcgKnR3dF9jZmdfY21kID0gXHUwMDI2Y21kLVx1MDAzZXBhcmFtcy50d3RfY2ZnO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3NTpcdHN0cnVjdCBueHB3aWZpX3R3dF9zZXR1cCAqdHd0X3NldHVwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3NjpcdHN0cnVjdCBueHB3aWZpX3R3dF90ZWFyZG93biAqdHd0X3RlYXJkb3duO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3NzpcdHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKnR3dF9yZXBvcnQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc4Olx0c3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uICp0d3RfaW5mb3JtYXRpb247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc5Olx0c3RydWN0IG54cHdpZmlfYnR3dF9hcF9jb25maWcgKmJ0d3RfYXBfY29uZmlnO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ4MC1cdHU4IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5MC1cdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9TRVRVUF9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0OTE6XHRcdHR3dF9zZXR1cCA9IChzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXAgKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00OTItXHRcdFx0dHd0X2NmZ19jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0OTQ6XHRcdG1lbXNldCh0d3Rfc2V0dXAsIDB4MDAsIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXApKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00OTUtXHRcdHR3dF9zZXR1cC1cdTAwM2VpbXBsaWNpdCA9IHR3dF9jZmctXHUwMDNlcGFyYW0udHd0X3NldHVwLmltcGxpY2l0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MDctXHRcdHR3dF9zZXR1cC1cdTAwM2ViY25fbWlzc190aHJlc2hvbGQgPSB0d3RfY2ZnLVx1MDAzZXBhcmFtLnR3dF9zZXR1cC5iY25fbWlzc190aHJlc2hvbGQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTA4Olx0XHRjbWRfc2l6ZSAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9zZXR1cCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTA5LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MTAtXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfVEVBUkRPV05fU1VCSUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTExOlx0XHR0d3RfdGVhcmRvd24gPSAoc3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTEyLVx0XHRcdHR3dF9jZmdfY21kLVx1MDAzZXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MTMtXHRcdG1lbXNldCh0d3RfdGVhcmRvd24sIDB4MDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTE0Olx0XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF90ZWFyZG93bikpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxNS1cdFx0dHd0X3RlYXJkb3duLVx1MDAzZWZsb3dfaWRlbnRpZmllciA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyMC1cdFx0XHR0d3RfY2ZnLVx1MDAzZXBhcmFtLnR3dF90ZWFyZG93bi50ZWFyZG93bl9hbGxfdHd0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyMTpcdFx0Y21kX3NpemUgJiM0Mzs9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfdGVhcmRvd24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyMi1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTIzLVx0Y2FzZSBOWFBXSUZJXzExQVhfVFdUX1JFUE9SVF9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MjQ6XHRcdHR3dF9yZXBvcnQgPSAoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCAqKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyNS1cdFx0XHR0d3RfY2ZnX2NtZC1cdTAwM2V2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTI2Olx0XHRtZW1zZXQodHd0X3JlcG9ydCwgMHgwMCwgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MjctXHRcdHR3dF9yZXBvcnQtXHUwMDNldHlwZSA9IHR3dF9jZmctXHUwMDNlcGFyYW0udHd0X3JlcG9ydC50eXBlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyODpcdFx0Y21kX3NpemUgJiM0Mzs9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MjktXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzMC1cdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9JTkZPUk1BVElPTl9TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MzE6XHRcdHR3dF9pbmZvcm1hdGlvbiA9IChzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24gKilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzItXHRcdFx0dHd0X2NmZ19jbWQtXHUwMDNldmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzMy1cdFx0bWVtc2V0KHR3dF9pbmZvcm1hdGlvbiwgMHgwMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MzQ6XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTM1LVx0XHR0d3RfaW5mb3JtYXRpb24tXHUwMDNlZmxvd19pZGVudGlmaWVyID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTM4LVx0XHRcdHR3dF9jZmctXHUwMDNlcGFyYW0udHd0X2luZm9ybWF0aW9uLnN1c3BlbmRfZHVyYXRpb247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTM5Olx0XHRjbWRfc2l6ZSAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9pbmZvcm1hdGlvbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTQwLVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDEtXHRjYXNlIE5YUFdJRklfMTFBWF9CVFdUX0FQX0NPTkZJR19TVUJJRDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1NDI6XHRcdGJ0d3RfYXBfY29uZmlnID0gKHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTQzLVx0XHRcdFx0IHR3dF9jZmdfY21kLVx1MDAzZXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDQtXHRcdG1lbXNldChidHd0X2FwX2NvbmZpZywgMHgwMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1NDU6XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IG54cHdpZmlfYnR3dF9hcF9jb25maWcpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDYtXHRcdGJ0d3RfYXBfY29uZmlnLVx1MDAzZWFwX2JjYXN0X2JldF9zdGFfd2FpdCA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1NjU6XHRcdGNtZF9zaXplICYjNDM7PSBzaXplb2Yoc3RydWN0IG54cHdpZmlfYnR3dF9hcF9jb25maWcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU2Ni1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTY3LVx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1Njg6XHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU2OS1cdFx0XHQgICAgXCYjMzQ7VW5rbm93biBzdWIgaWQ6ICVkXFxuXCYjMzQ7LCB0d3RfY2ZnLVx1MDAzZXN1Yl9pZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1Nzg6aW50IG54cHdpZmlfcmV0X3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NzktXHRcdFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTgwOlx0XHRcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTgxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTg5LVx0ICAgIHR3dF9jZmctXHUwMDNlc3ViX2lkID09IE5YUFdJRklfMTFBWF9UV1RfUkVQT1JUX1NVQklEKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTkwOlx0XHRzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICp0d3RfcmVwb3J0ID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1OTE6XHRcdFx0KHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKil0d3RfY2ZnX2NtZC1cdTAwM2V2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU5MzpcdFx0bWVtY3B5KFx1MDAyNnR3dF9jZmctXHUwMDNlcGFyYW0udHd0X3JlcG9ydCwgdHd0X3JlcG9ydCwgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01OTQtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTItLypcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozOiAqIG54cHdpZmk6IDgwMi4xMWF4IHN1cHBvcnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00LSAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oPTE3PXN0YXRpYyBpbmxpbmUgdTE2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6MTg6bnhwd2lmaV9nZXRfaGVfbnNzX21jcyhfX2xlMTYgbWNzX21hcF9zZXQsIGludCBuc3MpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0xOS1cdHJldHVybiAoKGxlMTZfdG9fY3B1KG1jc19tYXBfc2V0KSBcdTAwM2VcdTAwM2UgKDIgKiAobnNzIC0gMSkpKSBcdTAwMjYgMHgzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg9MjI9c3RhdGljIGlubGluZSB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6MjM6bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhfX2xlMTYgKm1jc19tYXBfc2V0LCBpbnQgbnNzLCBpbnQgdmFsdWUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0yNC1cdHUxNiB0ZW1wO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozMTpib29sIG54cHdpZmlfaXNfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6MzI6XHRcdFx0XHQgICBzdHJ1Y3QgIG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM0OnZvaWQgbnhwd2lmaV91cGRhdGVfMTFheF9jYXAoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zNS1cdFx0XHQgICAgIHN0cnVjdCBod19zcGVjX2V4dGVuc2lvbiAqaHdfaGVfY2FwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozNzpib29sIG54cHdpZmlfMTFheF9iYW5kY29uZmlnX2FsbG93ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozODpcdFx0XHRcdCAgICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQwOmludCBueHB3aWZpX2NtZF9hcHBlbmRfMTFheF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0MTpcdFx0XHRcdHN0cnVjdCBueHB3aWZpX2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQyLVx0XHRcdFx0dTggKipidWZmZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ0OmludCBueHB3aWZpX2ZpbGxfaGVfY2FwX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ1Olx0XHRcdCAgICBzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00Ni1cdFx0XHQgICAgdTE2IGJhbmRzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0NzppbnQgbnhwd2lmaV9jbWRfMTFheF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00OC1cdFx0XHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDk6XHRcdFx0IHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2ZnICpheF9jZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUxOmludCBueHB3aWZpX3JldF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTUyLVx0XHRcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1MzpcdFx0XHQgc3RydWN0IG54cHdpZmlfMTFheF9oZV9jZmcgKmF4X2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NTU6aW50IG54cHdpZmlfY21kXzExYXhfY21kKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTYtXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU3Olx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2NtZF9jZmcgKmF4X2NtZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NTk6aW50IG54cHdpZmlfcmV0XzExYXhfY21kKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjAtXHRcdFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjYxOlx0XHRcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2NtZF9jZmcgKmF4X2NtZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NjM6aW50IG54cHdpZmlfY21kX3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02NC1cdFx0XHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo2NTpcdFx0XHRzdHJ1Y3Qgbnhwd2lmaV90d3RfY2ZnICp0d3RfY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo2NzppbnQgbnhwd2lmaV9yZXRfdHd0X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTY4LVx0XHRcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY5Olx0XHRcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjcxOnU4IG54cHdpZmlfaXNfc3RhXzExYXhfdHd0X3JlcV9zdXBwb3J0ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNzItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMi0vKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MzogKiBueHB3aWZpOiA4MDIuMTFoIGhlbHBlcnNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTQtICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0xMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jOjEzOnZvaWQgbnhwd2lmaV9pbml0XzExaF9wYXJhbXMoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExaC5jLTE0LXtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEwOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODYxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipLY29uZmlnIERpdmUqKgoKT2theSwgdGltZSB0byBnZXQgc3RhcnRlZC4gTXkgZmlyc3QgbW92ZSBpcyB1c3VhbGx5IHRvIGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZXMsIGVzcGVjaWFsbHkgaW4gYSBuZXcgY29kZWJhc2UgbGlrZSB0aGlzLiBMZXQmIzM5O3Mgc2VlLi4uIGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBhbGwgdGhlIGVzc2VudGlhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBOWFAgV2ktRmkgZHJpdmVyIHdpbGwgbGl2ZSwgYW5kIGl0JiMzOTtzIHRoZSBnYXRld2F5IHRvIHVuZGVyc3RhbmRpbmcgd2hhdCBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkLCB3aGF0IGRlcGVuZGVuY2llcyBleGlzdCwgYW5kIGhvdyB0aGUgZHJpdmVyIGlzIGludGVuZGVkIHRvIGJlIHVzZWQuIEkgY2FuIHByb2JhYmx5IHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBjb3JlIHNldCBvZiBmZWF0dXJlcywgaG93IHRvIGVuYWJsZSBhbmQgZGlzYWJsZSB0aGVtLCBhbnkgc3BlY2lmaWMgaGFyZHdhcmUgcmVxdWlyZW1lbnRzLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIGNvbXBpbGUtdGltZSBkZXBlbmRlbmNpZXMuIEZyb20gaGVyZSBJIGNhbiBzdGFydCB0byBmbGVzaCBvdXQgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgZHJpdmVyIGFuZCB3aGF0IGl0IGNhbiBkby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTlhQV0lGSVxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIFdpRmkgRHJpdmVyXCYjMzQ7IGlmIENPTVBJTEVfVEVTVFxuICAgNDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTlhQXG4gICA3Olx0XHQgIDgwMi4xMW4vYWMgY2hpcHNldHMuXG4gICA4Olx0XG4gICA5Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDEwOlx0XHQgIG54cHdpZmkuXG4gIDExOlx0XG4gIDEyOlx0Y29uZmlnIE5YUFdJRklfU0RJT1xuICAxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIFdpRmkgRHJpdmVyIGZvciBJVzYxeFwmIzM0O1xuICAxNDpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMSBcdTAwMjZcdTAwMjYgTU1DXG4gIDE1Olx0XHRzZWxlY3QgTlhQV0lGSVxuICAxNjpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAxNzpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDE4Olx0XHRoZWxwXG4gIDE5Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBOWFBcbiAgMjA6XHRcdCAgSVc2MXggaW50ZXJmYWNlLlxuICAyMTpcdFxuICAyMjpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuICAyMzpcdFx0ICBueHB3aWZpX3NkaW8uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM0MTQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA5MzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIHRoaXMgcGF0Y2ggcmVxdWlyZXMgY2FyZWZ1bCBjb25zaWRlcmF0aW9uIHJlZ2FyZGluZyBmdXp6aW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGVzcGVjaWFsbHkgc2luY2UgaXQmIzM5O3MgdG91Y2hpbmcgYm90aCBNTUMvU0RJTyBhbmQgYW4gTlhQIFdpLUZpIGRyaXZlci4KClRoZSBwYXRjaCBpdHNlbGYgc3BhbnMgc2V2ZXJhbCBmaWxlczogYHF1aXJrcy5oYCwgYDExbi5jYCwgYGZ3LmhgLCBgc2Rpby5jYCwgYHNkaW8uaGAsIGFuZCBgc2Rpb19pZHMuaGAuIENsZWFybHksIHRoaXMgaW52b2x2ZXMgZml4ZXMgYW5kIG1vZGlmaWNhdGlvbnMgcmVsYXRlZCB0byB0aGUgTlhQIFdpLUZpIGRyaXZlciAoYG54cHdpZmlgKSwgcGFydGljdWxhcmx5IGl0cyBpbnRlcmFjdGlvbiB3aXRoIFNESU8gKFNlY3VyZSBEaWdpdGFsIElucHV0IE91dHB1dCkuIFNlY3Rpb24gMSBhbmQgU2VjdGlvbiAyIGhlcmUgaXMgdGhlIG1vc3QgaW1wb3J0YW50IHBhcnQgdG8gZGVjaWRlIGlmIHdlIGNhbiBmdXp6IHRoaXMuCgpMb29raW5nIGF0IHRoZSBjb2RlLCBJIHNlZSBhbiBTRElPIGZpeHVwIHRhYmxlIGluIGBxdWlya3MuaGAgYmVpbmcgdXBkYXRlZCwgYWxvbmcgd2l0aCBjaGFuZ2VzIGluIGAxMW4uY2AgdGhhdCBhcHBlYXIgdG8gcmVsYXRlIHRvIFdpLUZpIGNoYW5uZWwgd2lkdGggKDgwTUh6LCA0ME1IeikgYW5kIHBvdGVudGlhbGx5IDgwMi4xMWFjL24gc3VwcG9ydC4gVGhlIG90aGVyIGZpbGVzIHNlZW0gdG8gcHJvdmlkZSBkZWZpbml0aW9ucyBhbmQgc3VwcG9ydGluZyBjb2RlIGZvciBTRElPLCBvciB0aGUgZHJpdmVyIGl0c2VsZi4KClRoZSBjcml0aWNhbCBxdWVzdGlvbiBub3cgaXMgcmVhY2hhYmlsaXR5IHdpdGhpbiBhIHN0YW5kYXJkIGZ1enppbmcgc2V0dXAsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSB1c2VkIGJ5IHN5emthbGxlci4gVGhlIGtleSBpcyB3aGV0aGVyIHRoaXMgY29kZSwgb3IgdGhlIGhhcmR3YXJlIGl0IGludGVyYWN0cyB3aXRoLCBpcyAqYWN0dWFsbHkqIHJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4KCk15IHByaW1hcnkgY29uY2VybiBpcyB0aGF0IGBueHB3aWZpYCBpcyBhbiBTRElPIFdpLUZpIGRyaXZlciAoYG54cHdpZmlfc2Rpb2ApLiBUaGUgcXVlc3Rpb24gYmVjb21lczogRG9lcyBRRU1VLCBpbiBhIHR5cGljYWwgc3l6a2FsbGVyIHNldHVwLCAqZW11bGF0ZSogdGhlIE5YUCBJVzYxMCAvIElXNjF4IFNESU8gaGFyZHdhcmUgb3IsIHBlcmhhcHMsIGEgbW9yZSBnZW5lcmFsIFNESU8gYnVzPyBEb2VzIGl0IHByb3ZpZGUgYSBzb2Z0d2FyZS1lbXVsYXRlZCBTRElPIGRldmljZSBvciBhIHNwZWNpZmljIE5YUCBXaS1GaSBoYXJkd2FyZSBhYnN0cmFjdGlvbj8gSWYgbm90LCB0aGVuIHRoaXMgY29kZSBtaWdodCBiZSBlZmZlY3RpdmVseSAqdW5yZWFjaGFibGUqIGZvciBmdXp6aW5nLCBhbmQgdGh1cyBhIHdhc3RlIG9mIHJlc291cmNlcy4gRG8gTGludXggb3Igc3l6a2FsbGVyIGhhdmUgYW4gU0RJTyBnYWRnZXQgb3Igc29mdHdhcmUgbW9jayBmb3IgTlhQIFdpRmk/IE5vLgoKVGhlIGd1aWRpbmcgcHJpbmNpcGxlIGhlcmUgaXMgdGhhdCBpZiB0aGUgbW9kaWZpZWQgY29kZSByZWxpZXMgb24gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBpdCYjMzk7cyBub3Qgd29ydGggZnV6emluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIE5YUCBXaS1GaSBTRElPIGRyaXZlciBjYW4gYmUgcmVhY2hlZCEgRG9lcyBzeXprYWxsZXIgaGF2ZSBhbnkgdmlydHVhbCBTRElPIGRyaXZlcnMgb3IgVVNCLXRvLVNESU8gb3Igc29tZXRoaW5nIGluIHRoZSBMaW51eCB0cmVlPyBUaGF0IHdpbGwgYmUgdGhlIGtleSB0byBtYWtpbmcgdGhpcyBkZXRlcm1pbmF0aW9uIGFuZCBkZWNpZGluZyBpZiB0aGlzIGlzIGEgd29ydGh3aGlsZSB0YXJnZXQgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEwOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NkaW9fcmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2JsdWV0b290aC9idG1ydmxfc2Rpby5jPTE3NDU9c3RhdGljIGludCBfX2luaXQgYnRtcnZsX3NkaW9faW5pdF9tb2R1bGUodm9pZClcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXJ2bF9zZGlvLmMtMTc0Ni17XG5kcml2ZXJzL2JsdWV0b290aC9idG1ydmxfc2Rpby5jOjE3NDc6XHRpZiAoc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YnRfbXJ2bF9zZGlvKSAhPSAwKSB7XG5kcml2ZXJzL2JsdWV0b290aC9idG1ydmxfc2Rpby5jLTE3NDgtXHRcdEJUX0VSUihcJiMzNDtTRElPIERyaXZlciBSZWdpc3RyYXRpb24gRmFpbGVkXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmM9Mjc0PXN0YXRpYyB2b2lkIHNkaW9fbGVnYWN5X3NodXRkb3duKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMpXG4tLVxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jLTI4Mi0vKipcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYzoyODM6ICpcdF9fc2Rpb19yZWdpc3Rlcl9kcml2ZXIgLSByZWdpc3RlciBhIGZ1bmN0aW9uIGRyaXZlclxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jLTI4NC0gKlx0QGRydjogU0RJTyBmdW5jdGlvbiBkcml2ZXJcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMjg2LSAqL1xuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jOjI4NzppbnQgX19zZGlvX3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3Qgc2Rpb19kcml2ZXIgKmRydiwgc3RydWN0IG1vZHVsZSAqb3duZXIpXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMjg4LXtcbi0tXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMzAxLX1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYzozMDI6RVhQT1JUX1NZTUJPTF9HUEwoX19zZGlvX3JlZ2lzdGVyX2RyaXZlcik7XG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMzAzLVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb191YXJ0LmM9MTExNT1zdGF0aWMgaW50IF9faW5pdCBzZGlvX3VhcnRfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb191YXJ0LmMtMTE0MC1cbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb191YXJ0LmM6MTE0MTpcdHJldCA9IHNkaW9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNnNkaW9fdWFydF9kcml2ZXIpO1xuZHJpdmVycy9tbWMvY29yZS9zZGlvX3VhcnQuYy0xMTQyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvc2Rpby5jPTE5NT1pbnQgYjQzX3NkaW9faW5pdCh2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL3NkaW8uYy0xOTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL3NkaW8uYzoxOTc6XHRyZXR1cm4gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YjQzX3NkaW9fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9zZGlvLmMtMTk4LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM9MTI3MT1pbnQgYnJjbWZfc2Rpb19yZWdpc3Rlcih2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jLTEyNzIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jOjEyNzM6XHRyZXR1cm4gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YnJjbWZfc2RtbWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYy0xMjc0LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzL2lmX3NkaW8uYz0xMzkwPXN0YXRpYyBpbnQgX19pbml0IGlmX3NkaW9faW5pdF9tb2R1bGUodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzL2lmX3NkaW8uYy0xMzk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhcy9pZl9zZGlvLmM6MTM5NzpcdHJldCA9IHNkaW9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmlmX3NkaW9fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXMvaWZfc2Rpby5jLTEzOTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmM9NTAzPXN0YXRpYyBpbnQgX19pbml0IHdmeF9jb3JlX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYy01MTItXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTU1DKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmM6NTEzOlx0XHRyZXQgPSBzZGlvX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZ3Znhfc2Rpb19kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmMtNTE0LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L2N3MTIwMC9jdzEyMDBfc2Rpby5jPTM4OD1zdGF0aWMgaW50IF9faW5pdCBjdzEyMDBfc2Rpb19pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL2N3MTIwMF9zZGlvLmMtNDAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL2N3MTIwMF9zZGlvLmM6NDAxOlx0cmV0ID0gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2c2Rpb19kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL2N3MTIwMF9zZGlvLmMtNDAyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz00NTM9c3RhdGljIGludCBfX2luaXQgcnR3X2Rydl9lbnRyeSh2b2lkKVxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtNDU0LXtcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jOjQ1NTpcdHJldHVybiBzZGlvX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZydGw4NzIzYnNfc2Rpb19kcml2ZXIpO1xuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmMtNDU2LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTA6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYzMzMKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAyNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgbnhwd2lmaV9zZGlvIERyaXZlciYjMzk7cyBSZWFjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGlzc2VjdCB0aGlzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdmVyaWZ5IGhvdyB0aGUgYG54cHdpZmlfc2Rpb2AgZHJpdmVyIHJlZ2lzdGVycy4gUmlnaHQsIHNvIGl0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZDogSSBzZWUgaXQmIzM5O3MgcmVnaXN0ZXJlZCB0aHJvdWdoIGBtb2R1bGVfc2Rpb19kcml2ZXJgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNgLiBUaGF0IHRlbGxzIG1lIGl0IHVzZXMgYHNkaW9fcmVnaXN0ZXJfZHJpdmVyYCwgd2hpY2ggaXMgc3RhbmRhcmQuCgpOb3csIGxldCYjMzk7cyBzZWUgd2hhdCBxdWlya3MgbWlnaHQgYmUgaW4gcGxheS4gSSBjaGVjayBgZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaGAuIEFoLCB5ZXMsIGl04oCZcyBjb21waWxlZCBpbnRvIHRoZSBNTUMgY29yZSB3aGVuIGBDT05GSUdfTU1DYCBpcyBlbmFibGVkLiBBbmQsIGFzIGV4cGVjdGVkLCBgc2Rpb19maXh1cF9tZXRob2RzYCBjYW4gZ2V0IG1hdGNoZWQgZHVyaW5nIHRoZSBTRElPIGRldmljZSBkZXRlY3Rpb24gYW5kIGluaXRpYWxpemF0aW9uLCBzcGVjaWZpY2FsbHksIHdpdGggYG1tY19maXh1cF9kZXZpY2VgLgoKSGVyZSYjMzk7cyB0aGUgc25hZy4gQmVjYXVzZSwgYXMgZmFyIGFzIEkgY2FuIHRlbGwsIGFuZCBoYXZlIGJlZW4gYWJsZSB0byByZXByb2R1Y2UsIHRoZXJlJiMzOTtzIG5vIFNESU8gaGFyZHdhcmUgZm9yIE5YUCBJVzYxMCBvciBJVzYxeCBhdHRhY2hlZCBvciBlbXVsYXRlZCBpbiB0eXBpY2FsIFFFTVUgc2V0dXBzIG9yIGV2ZW4gb24gR29vZ2xlIENvbXB1dGUgRW5naW5lIFZNcywgdW5saWtlIFVTQiBnYWRnZXRzIG9yIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAuIFRoYXQgbWVhbnMgdGhlIGRyaXZlciYjMzk7cyBgcHJvYmVgIGZ1bmN0aW9uLCAxMW4gVExWcywgYW55IFNESU8gb3BlcmF0aW9ucywgYW5kIHRob3NlIGltcG9ydGFudCBxdWlya3MgYXJlLCB1bmZvcnR1bmF0ZWx5LCB1bnJlYWNoYWJsZSBpbiB0aGVzZSBlbnZpcm9ubWVudHMuIEl0JiMzOTtzIHNpbXBseSBub3QgYmVpbmcgZXhlcmNpc2VkLgoKU28sIEkgbmVlZCB0byBsb29rIGludG8gYSB3b3JrYXJvdW5kLiBDYW4gSSBpbnN0YW50aWF0ZSBgbnhwd2lmaWAgdGhyb3VnaCBgbWFjODAyMTFfaHdzaW1gLCBwZXJoYXBzLCBvciB1c2luZyBuZXRsaW5rLCBvciBldmVuIGEgbW9jayBkZXZpY2U/IFRoYXQgc2VlbXMgdG8gYmUgdGhlIG5leHQgbG9naWNhbCBzdGVwIOKAkyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgZHJpdmVyJiMzOTtzIGVudHJ5IHBvaW50cyBvciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMuIFRoYXQmIzM5O3MgdGhlIG9ubHkgd2F5IEkmIzM5O20gZ29pbmcgdG8gYWN0dWFsbHkgZ2V0IGEgbG9vayBhdCBob3cgdGhpcyBpcyBzdXBwb3NlZCB0byBiZWhhdmUgYW5kIHRlc3QgdGhpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxMDoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfaW5pdHxzdWJzeXNfaW5pdGNhbGx8bW9kdWxlX3NkaW9fZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jPTE2NjA9bnhwd2lmaV9jbGVhbnVwX21vZHVsZSh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jOjE2Njc6bW9kdWxlX2luaXQobnhwd2lmaV9pbml0X21vZHVsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9tYWluLmMtMTY2OC1tb2R1bGVfZXhpdChueHB3aWZpX2NsZWFudXBfbW9kdWxlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmM9MjMwOT1zdGF0aWMgc3RydWN0IG54cHdpZmlfaWZfb3BzIHNkaW9fb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYy0yMzM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jOjIzMzc6bW9kdWxlX3NkaW9fZHJpdmVyKG54cHdpZmlfc2Rpbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtMjMzOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTA6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjczMDMKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBueHB3aWZpX2luaXRfbW9kdWxlYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoIHRoaXMgV2lGaSBtb2R1bGUgaW5pdGlhbGl6YXRpb24uIExldCYjMzk7cyBzdGFydCB3aXRoIGBueHB3aWZpX2luaXRfbW9kdWxlYCBjYWxsZWQgZnJvbSBgbWFpbi5jYC4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBlbnRyeSBwb2ludC4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHN5c3RlbSBzZXRzIHRoaW5ncyB1cCwgd2hhdCByZXNvdXJjZXMgYXJlIGFsbG9jYXRlZCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyByZWQgZmxhZ3MgaW4gdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBzdGFuZGFyZCBzdHVmZjogZHJpdmVyIHJlZ2lzdHJhdGlvbiwgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gKHJlZ2lzdGVycywgaW50ZXJydXB0cyksIG1heWJlIHNvbWUgc2FuaXR5IGNoZWNrcyBvbiB0aGUgaGFyZHdhcmUsIGFuZCBsaWtlbHkgc29tZSB0YXNrIGNyZWF0aW9uIG9yIHRocmVhZCBzcGF3bmluZyB0byBoYW5kbGUgdGhlIGJhY2tncm91bmQgcHJvY2Vzc2luZy4gR2l2ZW4gdGhpcyBpcyB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uLCBJIGV4cGVjdCB0aGVyZSB3aWxsIGJlIGF0IGxlYXN0IGEgY2FsbCB0byByZWdpc3RlciB0aGUgbW9kdWxlIHdpdGggdGhlIGtlcm5lbC4gSSYjMzk7bGwgbmVlZCB0byBmb2N1cyBvbiB3aGF0IGhhcHBlbnMgYmVmb3JlIGFuZCBhZnRlciB0aGF0IGNhbGwgdG8gZmlndXJlIG91dCB0aGUgbW9kdWxlJiMzOTtzIGludGVyYWN0aW9ucyB3aXRoIHRoZSBzeXN0ZW0uIExldCYjMzk7cyBzZWUgaWYgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBpbiBhIGxvZ2ljYWwgbWFubmVyIGFuZCBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgb3Bwb3J0dW5pdGllcyBmb3Igb3B0aW1pemF0aW9uIG9yIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEwOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNjQ1Olx0fVxuMTY0NjpcdEVYUE9SVF9TWU1CT0xfR1BMKF9ueHB3aWZpX2RiZyk7XG4xNjQ3Olx0XG4xNjQ4Olx0LyogTW9kdWxlIGluaXQ6IGluaXQgZGVidWdmcyBpZiBlbmFibGVkLiAqL1xuMTY0OTpcdHN0YXRpYyBpbnRcbjE2NTA6XHRueHB3aWZpX2luaXRfbW9kdWxlKHZvaWQpXG4xNjUxOlx0e1xuMTY1MjpcdCNpZmRlZiBDT05GSUdfREVCVUdfRlNcbjE2NTM6XHRcdG54cHdpZmlfZGVidWdmc19pbml0KCk7XG4xNjU0Olx0I2VuZGlmXG4xNjU1Olx0XHRyZXR1cm4gMDtcbjE2NTY6XHR9XG4xNjU3Olx0XG4xNjU4Olx0LyogTW9kdWxlIGV4aXQ6IHJlbW92ZSBkZWJ1Z2ZzIGlmIGVuYWJsZWQuICovXG4xNjU5Olx0c3RhdGljIHZvaWRcbjE2NjA6XHRueHB3aWZpX2NsZWFudXBfbW9kdWxlKHZvaWQpXG4xNjYxOlx0e1xuMTY2MjpcdCNpZmRlZiBDT05GSUdfREVCVUdfRlNcbjE2NjM6XHRcdG54cHdpZmlfZGVidWdmc19yZW1vdmUoKTtcbjE2NjQ6XHQjZW5kaWZcbjE2NjU6XHR9XG4xNjY2Olx0XG4xNjY3Olx0bW9kdWxlX2luaXQobnhwd2lmaV9pbml0X21vZHVsZSk7XG4xNjY4Olx0bW9kdWxlX2V4aXQobnhwd2lmaV9jbGVhbnVwX21vZHVsZSk7XG4xNjY5Olx0XG4xNjcwOlx0TU9EVUxFX0FVVEhPUihcJiMzNDtOWFAgSW50ZXJuYXRpb25hbCBMdGQuXCYjMzQ7KTtcbjE2NzE6XHRNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7TlhQIFdpRmkgRHJpdmVyIHZlcnNpb24gXCYjMzQ7IFZFUlNJT04pO1xuMTY3MjpcdE1PRFVMRV9WRVJTSU9OKFZFUlNJT04pO1xuMTY3MzpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEwOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3OTc0CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgYG54cHdpZmlfc2Rpb2AgcHJvYmUsIGRpdmluZyBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNgOgoKKipQcm9iaW5nIHRoZSBgbnhwd2lmaV9zZGlvYCBNb2R1bGUqKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGlzIGBueHB3aWZpX3NkaW9gIHByb2JlIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaW5pdGlhbGl6ZXMgYW5kIGludGVyYWN0cyB3aXRoIHRoZSBTRElPIGludGVyZmFjZSBmb3IgdGhlIE5YUCBXaS1GaSBjaGlwLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdyB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uY2AuIEZpcnN0LCBJJiMzOTtsbCBpZGVudGlmeSB0aGUgZW50cnkgcG9pbnQgYW5kIGZvbGxvdyBob3cgdGhlIGRyaXZlciBzZXRzIHVwIHRoZSBTRElPIGhvc3QgaW50ZXJmYWNlIGFuZCB0aGUgZGV2aWNlIGl0c2VsZi4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBTRElPIGNvbW1hbmQgc2VxdWVuY2VzLCB0aGUgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgYW55IHBvd2VyIG1hbmFnZW1lbnQgcm91dGluZXMgaW52b2x2ZWQuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGVzc2VudGlhbCBzdGVwczogYXJlIHRoZXkgY29uZmlndXJpbmcgdGhlIFNESU8gY2FyZCByZWdpc3RlcnM/IE1hcHBpbmcgdGhlIGRldmljZSBtZW1vcnk/IEluaXRpYWxpemluZyB0aGUgZmlybXdhcmUgZG93bmxvYWQgcHJvY2VzcywgaWYgYW55PyBJIHdhbnQgdG8gaWRlbnRpZnkgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBzZWUgaG93IHRoZSBkcml2ZXIgbGlua3MgaXRzZWxmIHRvIHRoZSBTRElPIGJ1cy4gSSYjMzk7bGwgYWxzbyBjaGVjayBmb3IgYW55IGVycm9yIGhhbmRsaW5nIG9yIHJldHJ5IG1lY2hhbmlzbXMgZm9yIHJvYnVzdG5lc3MuIEFueSB1bnVzdWFsIFNESU8gY2FyZCBhY2Nlc3MgcGF0dGVybnMsIHNwZWNpZmljIHRvIHRoZSBOWFAgY2hpcCwgYXJlIGFsc28gb24gbXkgcmFkYXIuIE15IGdvYWwgaXMgdG8gZGV2ZWxvcCBhIGNsZWFyIG1lbnRhbCBtb2RlbCBvZiB0aGUgcHJvYmUgb3BlcmF0aW9uLCBpbmNsdWRpbmcgdGhlIGRlcGVuZGVuY2llcyBvbiBvdGhlciBzdWJzeXN0ZW1zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxMDoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtueHB3aWZpX3NkaW9fcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmM9MTM1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYzoxMzY6bnhwd2lmaV9zZGlvX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtMTM3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmM9NDg2PXN0YXRpYyBzdHJ1Y3Qgc2Rpb19kcml2ZXIgbnhwd2lmaV9zZGlvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYy00ODgtXHQuaWRfdGFibGUgPSBueHB3aWZpX2lkcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYzo0ODk6XHQucHJvYmUgPSBueHB3aWZpX3NkaW9fcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtNDkwLVx0LnJlbW92ZSA9IG54cHdpZmlfc2Rpb19yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEwOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NTk3CgkJCQkJCQlvdXRwdXQ6IDExOAoJCQkJCQkJdGhvdWdodHM6IDY3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgbnhwd2lmaV9zZGlvYCBEcml2ZXIgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgbnhwd2lmaV9zZGlvYCBkcml2ZXIuIFRoZSBkcml2ZXIgaXRzZWxmIGlzIHNwZWNpZmljYWxseSBmb3IgU0RJTyBXaS1GaSBkZXZpY2VzLCB0YXJnZXRpbmcgTlhQJiMzOTtzIElXNjF4IGFuZCBJVzYxMCBjaGlwc2V0cy4gTXkgdW5kZXJzdGFuZGluZywgYW5kIEkmIzM5O20gc3VyZSB5b3Uga25vdyB0aGlzIGFzIHdlbGwsIGlzIHRoYXQgU0RJTyByZXF1aXJlcyBhY3R1YWwgcGh5c2ljYWwgaGFyZHdhcmUuIEl0JiMzOTtzIG5vdCBzb21ldGhpbmcgeW91IGNhbiBqdXN0IHNwaW4gdXAgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpLCB3aGljaCBpcyB3aGF0IHN5emthbGxlciwgb3VyIHByaW1hcnkgZnV6emluZyB0b29sLCB0eXBpY2FsbHkgdXNlcy4KCkkmIzM5O3ZlIHJldmlld2VkIHRoZSBjaGFuZ2VzIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCB0aGVzZSBwYXRjaGVzIGFyZSBhbGwgYWJvdXQgZW5hYmxpbmcgYW5kIHByb3ZpZGluZyBzdXBwb3J0IGZvciB0aGF0IHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUuIExldCYjMzk7cyBicmVhayBpdCBkb3duOgoKKiAgIFRoZXJlJiMzOTtzIGFuIE1NQyBxdWlyayB0YWJsZSBlbnRyeSBhZGRlZCwgd2hpY2ggZGVhbHMgd2l0aCBpbml0aWFsaXppbmcgdGhlIE1NQyBpbnRlcmZhY2Ugc3BlY2lmaWNhbGx5IGZvciB0aGUgTlhQIElXNjEwIFNESU8gZGV2aWNlLgoqICAgV2UmIzM5O3JlIGdldHRpbmcgY2hhbm5lbCBiYW5kd2lkdGggaGFuZGxpbmcgaW4gYDExbi5jYCwgd2hpY2ggbWFrZXMgbWUgdGhpbmsgdGhlcmUmIzM5O3MgYmVlbiBzb21lIG5ldyBmZWF0dXJlcyBhZGRlZCB0aGF0IHJlcXVpcmUgZmlybXdhcmUgY2FwYWJpbGl0aWVzLgoqICAgV2UgaGF2ZSBuZXcgZmlybXdhcmUgbWFjcm9zIGluIGBmdy5oYCwgZGVmaW5pbmcgdmFyaW91cyBmaXJtd2FyZSBjYXBhYmlsaXR5IGJpdHMuCiogICBgc2Rpby5jYCBoYXMgZGV2aWNlIGRlc2NyaXB0b3JzIGFuZCBkZXZpY2UgSUQgdGFibGUgZW50cmllcyBmb3IgSVc2MTAuCiogICBXZSBnZXQgYSBmaXJtd2FyZSBuYW1lIGRlZmluaXRpb24gaW4gYHNkaW8uaGAuCiogICBGaW5hbGx5LCB0aGVyZSBhcmUgU0RJTyBJRHMgYmVpbmcgZGVmaW5lZCBpbiB0aGUgY29tbW9uIFNESU8gSURzIGhlYWRlci4KCk5vdywgYmFzZWQgb24gdGhlIGd1aWRhbmNlIChTZWN0aW9uIDIpIHJlZ2FyZGluZyB3aGVuIHRvIG1hcmsgc29tZXRoaW5nIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLCB0aGlzIHBhdGNoIHNlcmllcyBoaXRzIHRoZSBtYXJrIHBlcmZlY3RseS4gSXQgZmFsbHMgdW5kZXIgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyDigJMgc3BlY2lmaWNhbGx5LCB0aGUgTlhQIElXNjEwL0lXNjF4IFNESU8gV2ktRmkgZGV2aWNlcyByZXF1aXJlIGhhcmR3YXJlIHRoYXQgaXMgTk9UIHByZXNlbnQgaW4gc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzIHVzZWQgYnkgc3l6a2FsbGVyLiBUaGUgY29kZSBwYXRocyBhcmUgc2ltcGx5IGluYWNjZXNzaWJsZS4KClRoZXJlZm9yZSwgdGhlIG9ubHkgcmVhc29uYWJsZSBjb25jbHVzaW9uIGlzIHRoYXQgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGBmYWxzZWAuCgpUaGUgcmVhc29uaW5nIGlzIHByZXR0eSBjb25jaXNlOiB0aGlzIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBhbmQgcXVpcmtzIGZvciBOWFAgSVc2MTAgU0RJTyBXaS1GaSBkZXZpY2VzLCB3aGljaCByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIFNESU8gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4KCk15IGBzZXQtcmVzdWx0c2AgY2FsbCB3aWxsIGxvb2sgbGlrZToKCiogICBgV29ydGhGdXp6aW5nYDogYGZhbHNlYAoqICAgYFJlYXNvbmluZ2A6IENvbmNpc2UgZXhwbGFuYXRpb24gdGhhdCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGFuZCBxdWlya3MgZm9yIE5YUCBJVzYxMCBTRElPIFdpLUZpIGRldmljZXMsIHdoaWNoIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgU0RJTyBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuCiogICBgRW5hYmxlQ29uZmlnc2A6IGBbXWAKKiAgIGBGb2N1c1N5bWJvbHNgOiBgW11gCgpBbmQsIGJlZm9yZSBJIHN1Ym1pdCB0aGF0LCBJJiMzOTttIGRvaW5nIGEgc2FuaXR5IGNoZWNrOiBJJiMzOTt2ZSBnb3QgYWxsIHRoZSBmaWVsZHMgZmlsbGVkIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTA6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgYWRkcyBzdXBwb3J0IGZvciBOWFAgSVc2MTAgU0RJTyBXaS1GaSBkZXZpY2VzLCBpbmNsdWRpbmcgYW4gU0RJTyBNTUMgcXVpcmssIGRldmljZSBJRCByZWdpc3RyYXRpb24sIGFuZCBmaXJtd2FyZSBjYXBhYmlsaXR5IGhhbmRsaW5nIGZvciBjaGFubmVsIGJhbmR3aWR0aHMgaW4gdGhlIG54cHdpZmkgZHJpdmVyLiBUaGVzZSBtb2RpZmllZCBjb2RlIHBhdGhzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgTlhQIFNESU8gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgc3VwcG9ydCBmb3IgTlhQIElXNjEwIFNESU8gV2ktRmkgZGV2aWNlcywgaW5jbHVkaW5nIGFuIFNESU8gTU1DIHF1aXJrLCBkZXZpY2UgSUQgcmVnaXN0cmF0aW9uLCBhbmQgZmlybXdhcmUgY2FwYWJpbGl0eSBoYW5kbGluZyBmb3IgY2hhbm5lbCBiYW5kd2lkdGhzIGluIHRoZSBueHB3aWZpIGRyaXZlci4gVGhlc2UgbW9kaWZpZWQgY29kZSBwYXRocyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIE5YUCBTRElPIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzIChzdWNoIGFzIFFFTVUvR0NFKSwgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDEwOjIwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoxOToyOS45NDk4Nzk1NTFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzAyODQ2OTQ5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBhZGRzIHN1cHBvcnQgZm9yIE5YUCBJVzYxMCBTRElPIFdpLUZpIGRldmljZXMsIGluY2x1ZGluZyBhbiBTRElPIE1NQyBxdWlyaywgZGV2aWNlIElEIHJlZ2lzdHJhdGlvbiwgYW5kIGZpcm13YXJlIGNhcGFiaWxpdHkgaGFuZGxpbmcgZm9yIGNoYW5uZWwgYmFuZHdpZHRocyBpbiB0aGUgbnhwd2lmaSBkcml2ZXIuIFRoZXNlIG1vZGlmaWVkIGNvZGUgcGF0aHMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBOWFAgU0RJTyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VL0dDRSksIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoxOToyOS45NDk4ODUzNjFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NjMyNDg5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDE0NmVkODIxZGMxZDZmZjZkYmM3NjlhNzY4YjdhNTA4MDJkZDM4ZTVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgOCAxMDoxOToyOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oIGIvZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaFxcbmluZGV4IGFlM2VjZTg5ZDBhYTcuLjk4Y2I2ODBlM2FjZTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaFxcbisrKyBiL2RyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmhcXG5AQCAtMjExLDYgKzIxMSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1jX2ZpeHVwIF9fbWF5YmVfdW51c2VkIHNkaW9fZml4dXBfbWV0aG9kc1tdID0ge1xcbiBcXHRTRElPX0ZJWFVQKFNESU9fVkVORE9SX0lEX05YUCwgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjFYX0JBU0UsXFxuIFxcdFxcdCAgIGFkZF9xdWlyaywgTU1DX1FVSVJLX0JMS1NaX0ZPUl9CWVRFX01PREUpLFxcbiBcXG4rXFx0U0RJT19GSVhVUChTRElPX1ZFTkRPUl9JRF9OWFAsIFNESU9fREVWSUNFX0lEX05YUF9JVzYxMF9CQVNFLFxcbitcXHRcXHQgICBhZGRfcXVpcmssIE1NQ19RVUlSS19CTEtTWl9GT1JfQllURV9NT0RFKSxcXG4rXFxuIFxcdEVORF9GSVhVUFxcbiB9O1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uY1xcbmluZGV4IGMyYTU0ZDc4MWI0MmEuLmE4M2UyOWVjYzQ2NmUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uY1xcbkBAIC0zNDksNiArMzQ5LDcgQEAgbnhwd2lmaV9jbWRfYXBwZW5kXzExbl90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG4gXFx0XFx0XFx0bnhwd2lmaV9iYW5kX3RvX3JhZGlvX3R5cGUoKHU4KWJzc19kZXNjLVxcdTAwM2Vic3NfYmFuZCk7XFxuIFxcbiBcXHRcXHRpZiAoSVNTVVBQXzExQUNFTkFCTEVEKHByaXYtXFx1MDAzZWFkYXB0ZXItXFx1MDAzZWZ3X2NhcF9pbmZvKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgIUlTU1VQUF9OT184ME1IWihwcml2LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2Vmd19jYXBfZXh0KSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgYnNzX2Rlc2MtXFx1MDAzZWJjbl92aHRfb3BlciBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgYnNzX2Rlc2MtXFx1MDAzZWJjbl92aHRfb3Blci1cXHUwMDNlY2hhbl93aWR0aCA9PVxcbiBcXHRcXHQgICAgSUVFRTgwMjExX1ZIVF9DSEFOV0lEVEhfODBNSFopIHtcXG5AQCAtMzU5LDcgKzM2MCw4IEBAIG54cHdpZmlfY21kX2FwcGVuZF8xMW5fdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuIFxcdFxcdFxcdFxcdCgoQ0hBTl9CV184ME1IWiBcXHUwMDNjXFx1MDAzY1xcbiBcXHRcXHRcXHRcXHQgIEJBTkRfQ0ZHX0NIQU5fV0lEVEhfU0hJRlRfQklUKSBcXHUwMDI2XFxuIFxcdFxcdFxcdFxcdCBCQU5EX0NGR19DSEFOX1dJRFRIX01BU0spO1xcbi1cXHRcXHR9IGVsc2UgaWYgKHNiYW5kLVxcdTAwM2VodF9jYXAuY2FwIFxcdTAwMjZcXG4rXFx0XFx0fSBlbHNlIGlmIChJU1NVUFBfNDBNSFpfRU5BQkxFRChwcml2LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2Vmd19jYXBfZXh0KSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQgICBzYmFuZC1cXHUwMDNlaHRfY2FwLmNhcCBcXHUwMDI2XFxuIFxcdFxcdFxcdCAgIElFRUU4MDIxMV9IVF9DQVBfU1VQX1dJRFRIXzIwXzQwIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgIGJzc19kZXNjLVxcdTAwM2ViY25faHRfb3Blci1cXHUwMDNlaHRfcGFyYW0gXFx1MDAyNlxcbiBcXHRcXHRcXHQgICBJRUVFODAyMTFfSFRfUEFSQU1fQ0hBTl9XSURUSF9BTlkpIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZncuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2Z3LmhcXG5pbmRleCAxODgxMTBiMDIwY2ZhLi4xMjQ3MjhhNzI0NDIwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2Z3LmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9mdy5oXFxuQEAgLTMzNCw2ICszMzQsOCBAQCBlbnVtIE5YUFdJRklfODAyXzExX1BSSVZBQ1lfRklMVEVSIHtcXG4gI2RlZmluZSBERlNfQ0hBTl9NT1ZFX1RJTUUgICAgICAxMDAwMFxcbiBcXG4gI2RlZmluZSBJU1NVUFBfMTFBWEVOQUJMRUQoZndfY2FwX2V4dCkgKChmd19jYXBfZXh0KSBcXHUwMDI2IEJJVCg3KSlcXG4rI2RlZmluZSBJU1NVUFBfTk9fODBNSFooZndfY2FwX2V4dCkgICAgICAoKGZ3X2NhcF9leHQpIFxcdTAwMjYgQklUKDgpKVxcbisjZGVmaW5lIElTU1VQUF80ME1IWl9FTkFCTEVEKGZ3X2NhcF9leHQpICgoZndfY2FwX2V4dCkgXFx1MDAyNiBCSVQoMTUpKVxcbiBcXG4gI2RlZmluZSBIT1NUX0NNRF9HRVRfSFdfU1BFQyAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAzXFxuICNkZWZpbmUgSE9TVF9DTURfODAyXzExX1NDQU4gICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNcXG5pbmRleCA4ZWYwZjZlYjQ5ZTI4Li5mNGRlNDk0YmYyZjJhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uY1xcbkBAIC05Niw2ICs5NiwxOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG54cHdpZmlfc2Rpb19kZXZpY2Ugbnhwd2lmaV9zZGlvX2l3NjF4ID0ge1xcbiBcXHQuY2FuX2V4dF9zY2FuID0gdHJ1ZSxcXG4gfTtcXG4gXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgbnhwd2lmaV9zZGlvX2RldmljZSBueHB3aWZpX3NkaW9faXc2MTAgPSB7XFxuK1xcdC5maXJtd2FyZSA9IElXNjEwX1NESU9fRldfTkFNRSxcXG4rXFx0LnJlZyA9IFxcdTAwMjZueHB3aWZpX3JlZ19pdzYxeCxcXG4rXFx0Lm1heF9wb3J0cyA9IDMyLFxcbitcXHQubXBfYWdnX3BrdF9saW1pdCA9IDE2LFxcbitcXHQudHhfYnVmX3NpemUgPSBOWFBXSUZJX1RYX0RBVEFfQlVGX1NJWkVfNEssXFxuK1xcdC5tcF90eF9hZ2dfYnVmX3NpemUgPSBOWFBXSUZJX01QX0FHR1JfQlNJWkVfTUFYLFxcbitcXHQubXBfcnhfYWdnX2J1Zl9zaXplID0gTlhQV0lGSV9NUF9BR0dSX0JTSVpFX01BWCxcXG4rXFx0LmNhbl9kdW1wX2Z3ID0gdHJ1ZSxcXG4rXFx0LmZ3X2R1bXBfZW5oID0gdHJ1ZSxcXG4rXFx0LmNhbl9leHRfc2NhbiA9IHRydWUsXFxuK307XFxuK1xcbiBzdGF0aWMgc3RydWN0IG1lbW9yeV90eXBlX21hcHBpbmcgZ2VuZXJpY19tZW1fdHlwZV9tYXBbXSA9IHtcXG4gXFx0e1xcXCJEVU1QXFxcIiwgTlVMTCwgMCwgMHhERH0sXFxuIH07XFxuQEAgLTQ1OCw2ICs0NzEsOCBAQCBzdGF0aWMgdm9pZCBueHB3aWZpX3NkaW9fY29yZWR1bXAoc3RydWN0IGRldmljZSAqZGV2KVxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHNkaW9fZGV2aWNlX2lkIG54cHdpZmlfaWRzW10gPSB7XFxuIFxcdHtTRElPX0RFVklDRShTRElPX1ZFTkRPUl9JRF9OWFAsIFNESU9fREVWSUNFX0lEX05YUF9JVzYxWCksXFxuIFxcdFxcdC5kcml2ZXJfZGF0YSA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZueHB3aWZpX3NkaW9faXc2MXh9LFxcbitcXHR7U0RJT19ERVZJQ0UoU0RJT19WRU5ET1JfSURfTlhQLCBTRElPX0RFVklDRV9JRF9OWFBfSVc2MTApLFxcbitcXHRcXHQuZHJpdmVyX2RhdGEgPSAodW5zaWduZWQgbG9uZylcXHUwMDI2bnhwd2lmaV9zZGlvX2l3NjEwfSxcXG4gXFx0e30sXFxuIH07XFxuIFxcbkBAIC0yMzI2LDMgKzIzNDEsNCBAQCBNT0RVTEVfREVTQ1JJUFRJT04oXFxcIk5YUCBXaUZpIFNESU8gRHJpdmVyIHZlcnNpb24gXFxcIiBTRElPX1ZFUlNJT04pO1xcbiBNT0RVTEVfVkVSU0lPTihTRElPX1ZFUlNJT04pO1xcbiBNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuIE1PRFVMRV9GSVJNV0FSRShJVzYxWF9TRElPX0ZXX05BTUUpO1xcbitNT0RVTEVfRklSTVdBUkUoSVc2MTBfU0RJT19GV19OQU1FKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5oXFxuaW5kZXggZGU1Yzg4NGE1YjE0OS4uZTk4ODE0NDhmZTJmMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmhcXG5AQCAtMTEsNiArMTEsNyBAQFxcbiAjaW5jbHVkZSBcXFwibWFpbi5oXFxcIlxcbiBcXG4gI2RlZmluZSBJVzYxWF9TRElPX0ZXX05BTUUgICAgIFxcXCJueHAvc2RfdzYxeF92MS5iaW4uc2VcXFwiXFxuKyNkZWZpbmUgSVc2MTBfU0RJT19GV19OQU1FICAgICBcXFwibnhwL3NkX2l3NjEwLmJpbi5zZVxcXCJcXG4gXFxuICNkZWZpbmUgQkxPQ0tfTU9ERVxcdDFcXG4gI2RlZmluZSBCWVRFX01PREVcXHQwXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW1jL3NkaW9faWRzLmggYi9pbmNsdWRlL2xpbnV4L21tYy9zZGlvX2lkcy5oXFxuaW5kZXggYWZhZTkzZjZmMjQ1OC4uZGZmZmRhM2Q4MDAyYSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L21tYy9zZGlvX2lkcy5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9tbWMvc2Rpb19pZHMuaFxcbkBAIC0xMjMsNiArMTIzLDggQEBcXG4gI2RlZmluZSBTRElPX1ZFTkRPUl9JRF9OWFBcXHRcXHRcXHQweDA0NzFcXG4gI2RlZmluZSBTRElPX0RFVklDRV9JRF9OWFBfSVc2MVhfQkFTRVxcdFxcdDB4MDIwNFxcbiAjZGVmaW5lIFNESU9fREVWSUNFX0lEX05YUF9JVzYxWFxcdFxcdDB4MDIwNVxcbisjZGVmaW5lIFNESU9fREVWSUNFX0lEX05YUF9JVzYxMF9CQVNFXFx0XFx0MHgwMjE0XFxuKyNkZWZpbmUgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjEwXFx0XFx0MHgwMjE1XFxuIFxcbiAjZGVmaW5lIFNESU9fVkVORE9SX0lEX1JFQUxURUtcXHRcXHRcXHQweDAyNGNcXG4gI2RlZmluZSBTRElPX0RFVklDRV9JRF9SRUFMVEVLX1JUVzg3MjNCU1xcdDB4YjcyM1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoxOTozMC41NDcwMTgyMDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ2NDMxMzEzMDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgYWRkcyBzdXBwb3J0IGZvciBOWFAgSVc2MTAgU0RJTyBXaS1GaSBkZXZpY2VzLCBpbmNsdWRpbmcgYW4gU0RJTyBNTUMgcXVpcmssIGRldmljZSBJRCByZWdpc3RyYXRpb24sIGFuZCBmaXJtd2FyZSBjYXBhYmlsaXR5IGhhbmRsaW5nIGZvciBjaGFubmVsIGJhbmR3aWR0aHMgaW4gdGhlIG54cHdpZmkgZHJpdmVyLiBUaGVzZSBtb2RpZmllZCBjb2RlIHBhdGhzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgTlhQIFNESU8gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxNDZlZDgyMWRjMWQ2ZmY2ZGJjNzY5YTc2OGI3YTUwODAyZGQzOGU1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAxMDoxOToyOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmggYi9kcml2ZXJzL21tYy9jb3JlL3F1aXJrcy5oXG5pbmRleCBhZTNlY2U4OWQwYWE3Li45OGNiNjgwZTNhY2U4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaFxuKysrIGIvZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaFxuQEAgLTIxMSw2ICsyMTEsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1tY19maXh1cCBfX21heWJlX3VudXNlZCBzZGlvX2ZpeHVwX21ldGhvZHNbXSA9IHtcbiBcdFNESU9fRklYVVAoU0RJT19WRU5ET1JfSURfTlhQLCBTRElPX0RFVklDRV9JRF9OWFBfSVc2MVhfQkFTRSxcbiBcdFx0ICAgYWRkX3F1aXJrLCBNTUNfUVVJUktfQkxLU1pfRk9SX0JZVEVfTU9ERSksXG4gXG4rXHRTRElPX0ZJWFVQKFNESU9fVkVORE9SX0lEX05YUCwgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjEwX0JBU0UsXG4rXHRcdCAgIGFkZF9xdWlyaywgTU1DX1FVSVJLX0JMS1NaX0ZPUl9CWVRFX01PREUpLFxuK1xuIFx0RU5EX0ZJWFVQXG4gfTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExbi5jXG5pbmRleCBjMmE1NGQ3ODFiNDJhLi5hODNlMjllY2M0NjZlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFuLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExbi5jXG5AQCAtMzQ5LDYgKzM0OSw3IEBAIG54cHdpZmlfY21kX2FwcGVuZF8xMW5fdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXG4gXHRcdFx0bnhwd2lmaV9iYW5kX3RvX3JhZGlvX3R5cGUoKHU4KWJzc19kZXNjLVx1MDAzZWJzc19iYW5kKTtcbiBcbiBcdFx0aWYgKElTU1VQUF8xMUFDRU5BQkxFRChwcml2LVx1MDAzZWFkYXB0ZXItXHUwMDNlZndfY2FwX2luZm8pIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgIUlTU1VQUF9OT184ME1IWihwcml2LVx1MDAzZWFkYXB0ZXItXHUwMDNlZndfY2FwX2V4dCkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBic3NfZGVzYy1cdTAwM2ViY25fdmh0X29wZXIgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBic3NfZGVzYy1cdTAwM2ViY25fdmh0X29wZXItXHUwMDNlY2hhbl93aWR0aCA9PVxuIFx0XHQgICAgSUVFRTgwMjExX1ZIVF9DSEFOV0lEVEhfODBNSFopIHtcbkBAIC0zNTksNyArMzYwLDggQEAgbnhwd2lmaV9jbWRfYXBwZW5kXzExbl90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcbiBcdFx0XHRcdCgoQ0hBTl9CV184ME1IWiBcdTAwM2NcdTAwM2NcbiBcdFx0XHRcdCAgQkFORF9DRkdfQ0hBTl9XSURUSF9TSElGVF9CSVQpIFx1MDAyNlxuIFx0XHRcdFx0IEJBTkRfQ0ZHX0NIQU5fV0lEVEhfTUFTSyk7XG4tXHRcdH0gZWxzZSBpZiAoc2JhbmQtXHUwMDNlaHRfY2FwLmNhcCBcdTAwMjZcbitcdFx0fSBlbHNlIGlmIChJU1NVUFBfNDBNSFpfRU5BQkxFRChwcml2LVx1MDAzZWFkYXB0ZXItXHUwMDNlZndfY2FwX2V4dCkgXHUwMDI2XHUwMDI2XG4rXHRcdFx0ICAgc2JhbmQtXHUwMDNlaHRfY2FwLmNhcCBcdTAwMjZcbiBcdFx0XHQgICBJRUVFODAyMTFfSFRfQ0FQX1NVUF9XSURUSF8yMF80MCBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICBic3NfZGVzYy1cdTAwM2ViY25faHRfb3Blci1cdTAwM2VodF9wYXJhbSBcdTAwMjZcbiBcdFx0XHQgICBJRUVFODAyMTFfSFRfUEFSQU1fQ0hBTl9XSURUSF9BTlkpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9mdy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvZncuaFxuaW5kZXggMTg4MTEwYjAyMGNmYS4uMTI0NzI4YTcyNDQyMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2Z3LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2Z3LmhcbkBAIC0zMzQsNiArMzM0LDggQEAgZW51bSBOWFBXSUZJXzgwMl8xMV9QUklWQUNZX0ZJTFRFUiB7XG4gI2RlZmluZSBERlNfQ0hBTl9NT1ZFX1RJTUUgICAgICAxMDAwMFxuIFxuICNkZWZpbmUgSVNTVVBQXzExQVhFTkFCTEVEKGZ3X2NhcF9leHQpICgoZndfY2FwX2V4dCkgXHUwMDI2IEJJVCg3KSlcbisjZGVmaW5lIElTU1VQUF9OT184ME1IWihmd19jYXBfZXh0KSAgICAgICgoZndfY2FwX2V4dCkgXHUwMDI2IEJJVCg4KSlcbisjZGVmaW5lIElTU1VQUF80ME1IWl9FTkFCTEVEKGZ3X2NhcF9leHQpICgoZndfY2FwX2V4dCkgXHUwMDI2IEJJVCgxNSkpXG4gXG4gI2RlZmluZSBIT1NUX0NNRF9HRVRfSFdfU1BFQyAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAzXG4gI2RlZmluZSBIT1NUX0NNRF84MDJfMTFfU0NBTiAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA2XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jXG5pbmRleCA4ZWYwZjZlYjQ5ZTI4Li5mNGRlNDk0YmYyZjJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNcbkBAIC05Niw2ICs5NiwxOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG54cHdpZmlfc2Rpb19kZXZpY2Ugbnhwd2lmaV9zZGlvX2l3NjF4ID0ge1xuIFx0LmNhbl9leHRfc2NhbiA9IHRydWUsXG4gfTtcbiBcbitzdGF0aWMgY29uc3Qgc3RydWN0IG54cHdpZmlfc2Rpb19kZXZpY2Ugbnhwd2lmaV9zZGlvX2l3NjEwID0ge1xuK1x0LmZpcm13YXJlID0gSVc2MTBfU0RJT19GV19OQU1FLFxuK1x0LnJlZyA9IFx1MDAyNm54cHdpZmlfcmVnX2l3NjF4LFxuK1x0Lm1heF9wb3J0cyA9IDMyLFxuK1x0Lm1wX2FnZ19wa3RfbGltaXQgPSAxNixcbitcdC50eF9idWZfc2l6ZSA9IE5YUFdJRklfVFhfREFUQV9CVUZfU0laRV80SyxcbitcdC5tcF90eF9hZ2dfYnVmX3NpemUgPSBOWFBXSUZJX01QX0FHR1JfQlNJWkVfTUFYLFxuK1x0Lm1wX3J4X2FnZ19idWZfc2l6ZSA9IE5YUFdJRklfTVBfQUdHUl9CU0laRV9NQVgsXG4rXHQuY2FuX2R1bXBfZncgPSB0cnVlLFxuK1x0LmZ3X2R1bXBfZW5oID0gdHJ1ZSxcbitcdC5jYW5fZXh0X3NjYW4gPSB0cnVlLFxuK307XG4rXG4gc3RhdGljIHN0cnVjdCBtZW1vcnlfdHlwZV9tYXBwaW5nIGdlbmVyaWNfbWVtX3R5cGVfbWFwW10gPSB7XG4gXHR7XCJEVU1QXCIsIE5VTEwsIDAsIDB4RER9LFxuIH07XG5AQCAtNDU4LDYgKzQ3MSw4IEBAIHN0YXRpYyB2b2lkIG54cHdpZmlfc2Rpb19jb3JlZHVtcChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCBueHB3aWZpX2lkc1tdID0ge1xuIFx0e1NESU9fREVWSUNFKFNESU9fVkVORE9SX0lEX05YUCwgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjFYKSxcbiBcdFx0LmRyaXZlcl9kYXRhID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2bnhwd2lmaV9zZGlvX2l3NjF4fSxcbitcdHtTRElPX0RFVklDRShTRElPX1ZFTkRPUl9JRF9OWFAsIFNESU9fREVWSUNFX0lEX05YUF9JVzYxMCksXG4rXHRcdC5kcml2ZXJfZGF0YSA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNm54cHdpZmlfc2Rpb19pdzYxMH0sXG4gXHR7fSxcbiB9O1xuIFxuQEAgLTIzMjYsMyArMjM0MSw0IEBAIE1PRFVMRV9ERVNDUklQVElPTihcIk5YUCBXaUZpIFNESU8gRHJpdmVyIHZlcnNpb24gXCIgU0RJT19WRVJTSU9OKTtcbiBNT0RVTEVfVkVSU0lPTihTRElPX1ZFUlNJT04pO1xuIE1PRFVMRV9MSUNFTlNFKFwiR1BMXCIpO1xuIE1PRFVMRV9GSVJNV0FSRShJVzYxWF9TRElPX0ZXX05BTUUpO1xuK01PRFVMRV9GSVJNV0FSRShJVzYxMF9TRElPX0ZXX05BTUUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uaFxuaW5kZXggZGU1Yzg4NGE1YjE0OS4uZTk4ODE0NDhmZTJmMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5oXG5AQCAtMTEsNiArMTEsNyBAQFxuICNpbmNsdWRlIFwibWFpbi5oXCJcbiBcbiAjZGVmaW5lIElXNjFYX1NESU9fRldfTkFNRSAgICAgXCJueHAvc2RfdzYxeF92MS5iaW4uc2VcIlxuKyNkZWZpbmUgSVc2MTBfU0RJT19GV19OQU1FICAgICBcIm54cC9zZF9pdzYxMC5iaW4uc2VcIlxuIFxuICNkZWZpbmUgQkxPQ0tfTU9ERVx0MVxuICNkZWZpbmUgQllURV9NT0RFXHQwXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbWMvc2Rpb19pZHMuaCBiL2luY2x1ZGUvbGludXgvbW1jL3NkaW9faWRzLmhcbmluZGV4IGFmYWU5M2Y2ZjI0NTguLmRmZmZkYTNkODAwMmEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21tYy9zZGlvX2lkcy5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L21tYy9zZGlvX2lkcy5oXG5AQCAtMTIzLDYgKzEyMyw4IEBAXG4gI2RlZmluZSBTRElPX1ZFTkRPUl9JRF9OWFBcdFx0XHQweDA0NzFcbiAjZGVmaW5lIFNESU9fREVWSUNFX0lEX05YUF9JVzYxWF9CQVNFXHRcdDB4MDIwNFxuICNkZWZpbmUgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjFYXHRcdDB4MDIwNVxuKyNkZWZpbmUgU0RJT19ERVZJQ0VfSURfTlhQX0lXNjEwX0JBU0VcdFx0MHgwMjE0XG4rI2RlZmluZSBTRElPX0RFVklDRV9JRF9OWFBfSVc2MTBcdFx0MHgwMjE1XG4gXG4gI2RlZmluZSBTRElPX1ZFTkRPUl9JRF9SRUFMVEVLXHRcdFx0MHgwMjRjXG4gI2RlZmluZSBTRElPX0RFVklDRV9JRF9SRUFMVEVLX1JUVzg3MjNCU1x0MHhiNzIzXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoxOTozMC41NDcwMjAxNzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjMwNzM3ODE1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBTeXprYWxsZXIgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIHBhdGNoIGlzIGV2ZW4gYSB2aWFibGUgdGFyZ2V0IGZvciBzeXprYWxsZXIuIEkgc2VlIGFkZGl0aW9ucyB0byBgZHJpdmVycy9tbWMvY29yZS9xdWlya3MuaGAsIHNwZWNpZmljYWxseSBhZGRpbmcgYSBxdWlyayByZWxhdGVkIHRvIE5YUCBTRElPIGRldmljZXMgYW5kIGJsb2NrIHNpemUgaW4gYnl0ZSBtb2RlLiBUaGVuIHRoZXJlIGFyZSBjaGFuZ2VzIGluIHRoZSBgbnhwd2lmaWAgZHJpdmVyLCBpbmNsdWRpbmcgY2hlY2tzIGZvciA4ME1IeiBhbmQgNDBNSHogY2hhbm5lbCB3aWR0aCBjYXBhYmlsaXRpZXMsIGFsb25nIHdpdGggbmV3IGRldmljZSBzdHJ1Y3R1cmVzIGFuZCBmaXJtd2FyZSBkZWZpbml0aW9ucyBpbiB2YXJpb3VzIGBueHB3aWZpYCBmaWxlcyBhbmQgcmVsYXRlZCBoZWFkZXIgZmlsZXMuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBkcml2ZXIuIElzIGBueHB3aWZpYCBhbiBTRElPIGRyaXZlciwgYW5kIGhvdyBkb2VzIHRoYXQgZml0IGludG8gdGhlIHBpY3R1cmUgd2l0aCBzeXprYWxsZXI/IFN5emthbGxlciBoYXMgVVNCIGVtdWxhdGlvbiAoUmF3IEdhZGdldCwgVVNCRnV6eiwgdmhjaSksIG5ldGRldnNpbSwgYW5kIG1hYzgwMjExX2h3c2ltLCBidXQgd2hhdCBhYm91dCBTRElPPyBEb2VzIHN5emthbGxlciBlbXVsYXRlIFNESU8gZGV2aWNlcywgb3IgaXMgdGhpcyBkcml2ZXIgaW5oZXJlbnRseSBoYXJkd2FyZS1zcGVjaWZpYz8gRG8gUUVNVSBvciBzeXprYWxsZXIgaGF2ZSBhbiBTRElPIGhhcmR3YXJlIGVtdWxhdG9yLCBvciBpcyBTRElPIHN1cHBvcnQgbGltaXRlZD9cblxuSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBwcm9tcHQncyBleGNsdXNpb24gb2Ygc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBvciBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBBU0lDcyBvciBQQ0llIGNhcmRzLiBJIHdvbmRlciBpZiB0aGUgU0RJTyBuYXR1cmUgb2YgYG54cHdpZmlgIGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeS4gSXMgYG54cHdpZmlgIHRpZWQgdG8gU0RJTyBvciBhbnkgZW11bGF0ZWQgdmlydHVhbCBidXMgd2l0aGluIHN5emthbGxlciwgb3IgaXMgaXQgcHVyZWx5IFNESU8gb3IgcG90ZW50aWFsbHkgUENJZSAvIFVTQj9cblxuSSB0aGluayBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9gIGRpcmVjdG9yeSB0byBzZWUgd2hhdCBpbnRlcmZhY2VzIHRoaXMgZHJpdmVyIHN1cHBvcnRzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIHdoZXRoZXIgaXQncyBzb21ldGhpbmcgdGhhdCBjYW4gYmUgcHJhY3RpY2FsbHkgZnV6emVkIHdpdGhpbiBteSBhdmFpbGFibGUgc3l6a2FsbGVyIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTI1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzI0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTA6MTk6NDIuODU0NDAxMjIzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTE5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcIjExYWMuY1wiLFxuICAgIFwiMTFhYy5oXCIsXG4gICAgXCIxMWF4LmNcIixcbiAgICBcIjExYXguaFwiLFxuICAgIFwiMTFoLmNcIixcbiAgICBcIjExbi5jXCIsXG4gICAgXCIxMW4uaFwiLFxuICAgIFwiMTFuX2FnZ3IuY1wiLFxuICAgIFwiMTFuX2FnZ3IuaFwiLFxuICAgIFwiMTFuX3J4cmVvcmRlci5jXCIsXG4gICAgXCIxMW5fcnhyZW9yZGVyLmhcIixcbiAgICBcImNmZy5oXCIsXG4gICAgXCJjZmc4MDIxMS5jXCIsXG4gICAgXCJjZmc4MDIxMS5oXCIsXG4gICAgXCJjZnAuY1wiLFxuICAgIFwiY21kZXZ0LmNcIixcbiAgICBcImNtZGV2dC5oXCIsXG4gICAgXCJkZWJ1Z2ZzLmNcIixcbiAgICBcImV0aHRvb2wuY1wiLFxuICAgIFwiZncuaFwiLFxuICAgIFwiaWUuY1wiLFxuICAgIFwiaW5pdC5jXCIsXG4gICAgXCJqb2luLmNcIixcbiAgICBcIm1haW4uY1wiLFxuICAgIFwibWFpbi5oXCIsXG4gICAgXCJzY2FuLmNcIixcbiAgICBcInNkaW8uY1wiLFxuICAgIFwic2Rpby5oXCIsXG4gICAgXCJzdGFfY2ZnLmNcIixcbiAgICBcInN0YV9jbWQuY1wiLFxuICAgIFwic3RhX2V2ZW50LmNcIixcbiAgICBcInN0YV9yeC5jXCIsXG4gICAgXCJzdGFfdHguY1wiLFxuICAgIFwidHhyeC5jXCIsXG4gICAgXCJ1YXBfY21kLmNcIixcbiAgICBcInVhcF9ldmVudC5jXCIsXG4gICAgXCJ1YXBfdHhyeC5jXCIsXG4gICAgXCJ1dGlsLmNcIixcbiAgICBcInV0aWwuaFwiLFxuICAgIFwid21tLmNcIixcbiAgICBcIndtbS5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEwOjE5OjQyLjg1NDQ4NDMzM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxNzA2MjU0MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaWcgaW50byB0aGUgd2lyZWxlc3MgbmV0d29ya2luZyBkcml2ZXJzIGZvciBOWFAuIEdpdmVuIG15IGV4cGVydGlzZSwgSSBzdXNwZWN0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhbmQgYnVpbGQgaW5zdHJ1Y3Rpb25zIHdpbGwgYmUgZm91bmQgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL2AgZGlyZWN0b3J5LiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgYEtjb25maWdgIGZpbGUgaW4gdGhhdCBkaXJlY3Rvcnk7IGl0J3MgdGhlIHVzdWFsIHBsYWNlIGZvciB0aGVzZSB0aGluZ3MuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwYXJ0aWN1bGFyIE5YUCB3aXJlbGVzcyBpbXBsZW1lbnRhdGlvbi4gSWYgdGhhdCBkb2Vzbid0IGltbWVkaWF0ZWx5IHJldmVhbCB3aGF0IEkgbmVlZCwgdGhlIGBNYWtlZmlsZWAgaW4gZWl0aGVyIHRoZSBgbnhwd2lmaWAgc3ViZGlyZWN0b3J5LCBvciBpbmRlZWQsIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LCBpcyBteSBuZXh0IHRhcmdldC4gSXQnbGwgc2hvdyBtZSBob3cgdGhpcyBkcml2ZXIgaXMgYnVpbHQgYW5kIHdoaWNoIHNvdXJjZXMgYXJlIGludm9sdmVkLiBIb3BlZnVsbHkgSSBjYW4gZ2V0IHdoYXQgSSBuZWVkIGZyb20gZWl0aGVyIG9mIHRoZXNlIGZpbGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDA4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEwOjE5OjQ1LjAyNTExMTg3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NjIwOTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm54cHdpZmlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTUxODAgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnPTEzPWlmIFdMQU5fVkVORE9SX05YUFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnOjE1OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvS2NvbmZpZy0xNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9NYWtlZmlsZS0yLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19OWFBXSUZJKVxcdCs9IG54cHdpZmkvXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMi0vKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzozOiAqIG54cHdpZmkgODAyLjExYWMgaGVscGVyc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy00LSAqIENvcHlyaWdodCAyMDExLTIwMjQgTlhQXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9MzY9c3RhdGljIHUxNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzozNzpueHB3aWZpX2NvbnZlcnRfbWNzbWFwX3RvX21heHJhdGUoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMzgtXFx0XFx0XFx0XFx0ICB1MTYgYmFuZHMsIHUxNiBtY3NfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTQyLVxcdHUzMiB1c3Jfdmh0X2NhcF9pbmZvID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6NDM6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTQ0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jPTc5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjgwOm54cHdpZmlfZmlsbF92aHRfY2FwX2luZm8oc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODEtXFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHUxNiBiYW5kcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo4MzpcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtODQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM9OTM9dm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzo5NDpueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtOTUtXFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcCwgdTE2IGJhbmRzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjk3OlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy05OC1cXHR1MTYgbWNzX21hcF91c2VyLCBtY3NfbWFwX3Jlc3AsIG1jc19tYXBfcmVzdWx0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEwMS1cXHQvKiBGaWxsIFZIVCBjYXBhYmlsaXR5IGluZm8uICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjEwMjpcXHRueHB3aWZpX2ZpbGxfdmh0X2NhcF9pbmZvKHByaXYsIHZodF9jYXAsIGJhbmRzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTEyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTI0OlxcdHRtcCA9IG54cHdpZmlfY29udmVydF9tY3NtYXBfdG9fbWF4cmF0ZShwcml2LCBiYW5kcywgbWNzX21hcF9yZXN1bHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xMjUtXFx0dmh0X2NhcC1cXHUwMDNlc3VwcF9tY3MucnhfaGlnaGVzdCA9IGNwdV90b19sZTE2KHRtcCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNDY6XFx0dG1wID0gbnhwd2lmaV9jb252ZXJ0X21jc21hcF90b19tYXhyYXRlKHByaXYsIGJhbmRzLCBtY3NfbWFwX3Jlc3VsdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE0Ny1cXHR2aHRfY2FwLVxcdTAwM2VzdXBwX21jcy50eF9oaWdoZXN0ID0gY3B1X3RvX2xlMTYodG1wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1MDppbnQgbnhwd2lmaV9jbWRfYXBwZW5kXzExYWNfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE1MTpcXHRcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTUyLVxcdFxcdFxcdFxcdHU4ICoqYnVmZmVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTQ6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0Y2FwICp2aHRfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTU6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfb3Blcl9tb2RlX250ZiAqb3Blcl9udGY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE1Ni1cXHRzdHJ1Y3QgaWVlZV90eXBlc19vcGVyX21vZGVfbnRmICppZWVlX29wZXJfbnRmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNTc6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfdmh0X29wZXIgKnZodF9vcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTU4OlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNTktXFx0dTggc3VwcF9jaHdkX3NldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNjktXFx0aWYgKGJzc19kZXNjLVxcdTAwM2ViY25fdmh0X2NhcCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxNzA6XFx0XFx0dmh0X2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRjYXAgKikqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzEtXFx0XFx0bWVtc2V0KHZodF9jYXAsIDAsIHNpemVvZigqdmh0X2NhcCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE3NC1cXHRcXHRcXHRjcHVfdG9fbGUxNihzaXplb2Yoc3RydWN0IGllZWU4MDIxMV92aHRfY2FwKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE3NTpcXHRcXHRtZW1jcHkoKHU4ICopdmh0X2NhcCArIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzYtXFx0XFx0ICAgICAgICh1OCAqKWJzc19kZXNjLVxcdTAwM2ViY25fdmh0X2NhcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjE3OTpcXHRcXHRueHB3aWZpX2ZpbGxfdmh0X2NhcF90bHYocHJpdiwgXFx1MDAyNnZodF9jYXAtXFx1MDAzZXZodF9jYXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4MC1cXHRcXHRcXHRcXHRcXHQgYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0xODctXFx0XFx0aWYgKHByaXYtXFx1MDAzZWJzc19tb2RlID09IE5MODAyMTFfSUZUWVBFX1NUQVRJT04pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTg4OlxcdFxcdFxcdHZodF9vcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc192aHRfb3BlciAqKSpidWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE4OS1cXHRcXHRcXHRtZW1zZXQodmh0X29wLCAwLCBzaXplb2YoKnZodF9vcCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5Mi1cXHRcXHRcXHR2aHRfb3AtXFx1MDAzZWhlYWRlci5sZW4gID0gY3B1X3RvX2xlMTYoc2l6ZW9mKCp2aHRfb3ApIC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MTkzOlxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMTk0LVxcdFxcdFxcdG1lbWNweSgodTggKil2aHRfb3AgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoxOTU6XFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jLTE5Ni1cXHRcXHRcXHQgICAgICAgKHU4ICopYnNzX2Rlc2MtXFx1MDAzZWJjbl92aHRfb3BlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5jOjI0NTppbnQgbnhwd2lmaV9jbWRfMTFhY19jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjQ2LVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmM6MjQ3OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWFjX3ZodF9jZmcgKmNmZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmMtMjQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNjQtLyogSW5pdGlhbGl6ZSBCbG9ja0FjayBwYXJhbWV0ZXJzIGZvciAxMWFjLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYzoyNjU6dm9pZCBueHB3aWZpX3NldF8xMWFjX2JhX3BhcmFtcyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuYy0yNjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFhYy5oLTItLypcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MzogKiBueHB3aWZpOiA4MDIuMTFhYyAoVkhUKSBkZWZpbml0aW9uc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC00LSAqXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg9MTQ9ZW51bSB2aHRfY2ZnX21pc2NfY29uZmlnIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmg6MjU6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWFjX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDoyNjpcXHRcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjctXFx0XFx0XFx0XFx0dTggKipidWZmZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDoyODppbnQgbnhwd2lmaV9jbWRfMTFhY19jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWFjLmgtMjktXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDozMDpcXHRcXHRcXHQgc3RydWN0IG54cHdpZmlfMTFhY192aHRfY2ZnICpjZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaDozMTp2b2lkIG54cHdpZmlfZmlsbF92aHRfY2FwX3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYWMuaC0zMi1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXAsIHUxNiBiYW5kcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI6Lyogbnhwd2lmaTogODAyLjExYXggKEhFKSBzdXBwb3J0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMtICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjQgTlhQXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjExOnZvaWQgbnhwd2lmaV91cGRhdGVfMTFheF9jYXAoc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTItXFx0XFx0XFx0ICAgICBzdHJ1Y3QgaHdfc3BlY19leHRlbnNpb24gKmh3X2hlX2NhcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDpcXHRzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE2OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqdXNlcl9oZV9jYXAgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNzpcXHR1OCBoZWFkZXJfbGVuID0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE4LVxcdHUxNiBkYXRhX2xlbiA9IGxlMTZfdG9fY3B1KGh3X2hlX2NhcC1cXHUwMDNlaGVhZGVyLmxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjItXFx0aWYgKChkYXRhX2xlbiArIGhlYWRlcl9sZW4pIFxcdTAwM2Ugc2l6ZW9mKGFkYXB0ZXItXFx1MDAzZWh3X2hlX2NhcCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjM6XFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI0LVxcdFxcdFxcdCAgICBcXFwiaHdfaGVfY2FwIHRvbyBiaWcsIGxlbj0lZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjk6XFx0aGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKWh3X2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzctXFx0XFx0aGVfY2FwXzJnID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mzg6XFx0XFx0bnhwd2lmaV9kYmdfZHVtcChhZGFwdGVyLCBDTURfRCwgXFxcIjIuNEcgSEUgY2FwYWJpbGl0eSBlbGVtZW50IFxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM5LVxcdFxcdFxcdFxcdCBhZGFwdGVyLVxcdTAwM2Vod18yZ19oZV9jYXAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDUtXFx0XFx0YWRhcHRlci1cXHUwMDNlZndfYmFuZHMgfD0gQkFORF9BQVg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ2OlxcdFxcdG54cHdpZmlfZGJnX2R1bXAoYWRhcHRlciwgQ01EX0QsIFxcXCI1RyBIRSBjYXBhYmlsaXR5IGVsZW1lbnQgXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDctXFx0XFx0XFx0XFx0IGFkYXB0ZXItXFx1MDAzZWh3X2hlX2NhcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01Ny1cXHRcXHRcXHQgICAgICAgc2l6ZW9mKGFkYXB0ZXItXFx1MDAzZWh3XzJnX2hlX2NhcCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1ODpcXHRcXHRcXHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTktXFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNjMtXFx0XFx0XFx0ICAgICAgIHNpemVvZihhZGFwdGVyLVxcdTAwM2Vod19oZV9jYXApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NjQ6XFx0XFx0XFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTY1LVxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZXVzZXJfaGVfY2FwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo3OTpib29sIG54cHdpZmlfMTFheF9iYW5kY29uZmlnX2FsbG93ZWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6ODA6XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtODEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo5NTppbnQgbnhwd2lmaV9maWxsX2hlX2NhcF90bHYoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6OTY6XFx0XFx0XFx0ICAgIHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaGVfY2FwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy05Ny1cXHRcXHRcXHQgICAgdTE2IGJhbmRzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy05OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjk5OlxcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMDA6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICpod19oZV9jYXAgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMDEtXFx0dTE2IHJ4X25zcywgdHhfbnNzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEwOC1cXHRcXHRtZW1jcHkoaGVfY2FwLCBwcml2LVxcdTAwM2V1c2VyX2hlX2NhcCwgcHJpdi1cXHUwMDNldXNlcl9oZV9jYXBfbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTA5OlxcdFxcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilhZGFwdGVyLVxcdTAwM2Vod19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTExMC1cXHRcXHRyZXRfbGVuID0gcHJpdi1cXHUwMDNldXNlcl9oZV9jYXBfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTExMi1cXHRcXHRtZW1jcHkoaGVfY2FwLCBwcml2LVxcdTAwM2V1c2VyXzJnX2hlX2NhcCwgcHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXBfbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTEzOlxcdFxcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilhZGFwdGVyLVxcdTAwM2Vod18yZ19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTExNC1cXHRcXHRyZXRfbGVuID0gcHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXBfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEyNS1cXHRmb3IgKG5zcyA9IDE7IG5zcyBcXHUwMDNjPSA4OyBuc3MrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxMjY6XFx0XFx0Y2ZnX3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhoZV9jYXAtXFx1MDAzZXJ4X21jc184MCwgbnNzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTI3OlxcdFxcdGh3X3ZhbHVlID0gbnhwd2lmaV9nZXRfaGVfbnNzX21jcyhod19oZV9jYXAtXFx1MDAzZXJ4X21jc184MCwgbnNzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTI4LVxcdFxcdGlmIChyeF9uc3MgIT0gMCBcXHUwMDI2XFx1MDAyNiBuc3MgXFx1MDAzZSByeF9uc3MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMwLVxcdFxcdGlmIChod192YWx1ZSA9PSBOT19OU1NfU1VQUE9SVCB8fCBjZmdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjEzMTpcXHRcXHRcXHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFxcdTAwMjZoZV9jYXAtXFx1MDAzZXJ4X21jc184MCwgbnNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzItXFx0XFx0XFx0XFx0XFx0ICAgICAgIE5PX05TU19TVVBQT1JUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTMzLVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTM0OlxcdFxcdFxcdG54cHdpZmlfc2V0X2hlX25zc19tY3MoXFx1MDAyNmhlX2NhcC1cXHUwMDNlcnhfbWNzXzgwLCBuc3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTEzNS1cXHRcXHRcXHRcXHRcXHQgICAgICAgbWluKGNmZ192YWx1ZSwgaHdfdmFsdWUpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xMzgtXFx0Zm9yIChuc3MgPSAxOyBuc3MgXFx1MDAzYz0gODsgbnNzKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTM5OlxcdFxcdGNmZ192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaGVfY2FwLVxcdTAwM2V0eF9tY3NfODAsIG5zcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0MDpcXHRcXHRod192YWx1ZSA9IG54cHdpZmlfZ2V0X2hlX25zc19tY3MoaHdfaGVfY2FwLVxcdTAwM2V0eF9tY3NfODAsIG5zcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0MS1cXHRcXHRpZiAodHhfbnNzICE9IDAgXFx1MDAyNlxcdTAwMjYgbnNzIFxcdTAwM2UgdHhfbnNzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0My1cXHRcXHRpZiAoaHdfdmFsdWUgPT0gTk9fTlNTX1NVUFBPUlQgfHwgY2ZnX3ZhbHVlID09IE5PX05TU19TVVBQT1JUKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNDQ6XFx0XFx0XFx0bnhwd2lmaV9zZXRfaGVfbnNzX21jcyhcXHUwMDI2aGVfY2FwLVxcdTAwM2V0eF9tY3NfODAsIG5zcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTQ1LVxcdFxcdFxcdFxcdFxcdCAgICAgICBOT19OU1NfU1VQUE9SVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE0Ni1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE0NzpcXHRcXHRcXHRueHB3aWZpX3NldF9oZV9uc3NfbWNzKFxcdTAwMjZoZV9jYXAtXFx1MDAzZXR4X21jc184MCwgbnNzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNDgtXFx0XFx0XFx0XFx0XFx0ICAgICAgIG1pbihjZmdfdmFsdWUsIGh3X3ZhbHVlKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTQ6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWF4X3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNTU6XFx0XFx0XFx0XFx0c3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE1Ni1cXHRcXHRcXHRcXHR1OCAqKmJ1ZmZlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTU3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTU4OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqaGVfY2FwID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTU5LVxcdGludCByZXRfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTY0OlxcdGhlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKikqYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxNjU6XFx0cmV0X2xlbiA9IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHByaXYsIGhlX2NhcCwgYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTY2LVxcdCpidWZmZXIgKz0gcmV0X2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3MTppbnQgbnhwd2lmaV9jbWRfMTFheF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTcyLVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MTczOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xNzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE3Ni1cXHR1MTYgY21kX3NpemU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjE3NzpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKmhlYWRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMTc4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTE4Ni1cXHQgICAgYXhfY2ZnLVxcdTAwM2VoZV9jYXBfY2ZnLmV4dF9pZCA9PSBXTEFOX0VJRF9FWFRfSEVfQ0FQQUJJTElUWSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoxODc6XFx0XFx0aGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKWhlX2NmZy1cXHUwMDNldGx2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0xODgtXFx0XFx0aGVhZGVyLVxcdTAwM2V0eXBlID0gY3B1X3RvX2xlMTYoYXhfY2ZnLVxcdTAwM2VoZV9jYXBfY2ZnLmlkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjIwMTppbnQgbnhwd2lmaV9yZXRfMTFheF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjAyLVxcdFxcdFxcdCBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjAzOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDUtXFx0c3RydWN0IGhvc3RfY21kXzExYXhfY2ZnICpoZV9jZmcgPSBcXHUwMDI2cmVzcC1cXHUwMDNlcGFyYW1zLmF4X2NmZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjA2OlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqaGVhZGVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMDctXFx0dTE2IGxlZnRfbGVuLCB0bHZfdHlwZSwgdGx2X2xlbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjA4LVxcdHU4IGV4dF9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjA5OlxcdHN0cnVjdCBueHB3aWZpXzExYXhfaGVfY2FwX2NmZyAqaGVfY2FwID0gXFx1MDAyNmF4X2NmZy1cXHUwMDNlaGVfY2FwX2NmZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMTEtXFx0bGVmdF9sZW4gPSBsZTE2X3RvX2NwdShyZXNwLVxcdTAwM2VzaXplKSAtIHNpemVvZigqaGVfY2ZnKSAtIFNfRFNfR0VOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyMTI6XFx0aGVhZGVyID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlYWRlciAqKWhlX2NmZy1cXHUwMDNldGx2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yMTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjQyLVxcdFxcdGxlZnRfbGVuIC09IChzaXplb2YoKmhlYWRlcikgKyB0bHZfbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjQzOlxcdFxcdGhlYWRlciA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZWFkZXIgKikoKHU4ICopaGVhZGVyICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjQ0LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBzaXplb2YoKmhlYWRlcikgK1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjUxOmludCBueHB3aWZpX2NtZF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTItXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpjbWQsIHUxNiBjbWRfYWN0aW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTM6XFx0XFx0XFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNTQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTU6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1Ni1cXHRzdHJ1Y3QgaG9zdF9jbWRfMTFheF9jbWQgKmhlX2NtZCA9IFxcdTAwMjZjbWQtXFx1MDAzZXBhcmFtcy5heF9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI1Ny1cXHR1MTYgY21kX3NpemU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI1ODpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NyX2NtZCAqc3JfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNTk6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqdGx2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjA6XFx0c3RydWN0IG54cHdpZmlfMTFheF9iZWFtX2NtZCAqYmVhbV9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2MTpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2h0Y19jbWQgKmh0Y19jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2MjpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b21pX2NtZCAqdHhtb2lfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyNjM6XFx0c3RydWN0IG54cHdpZmlfMTFheF90b2x0aW1lX2NtZCAqdG9sdGltZV9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2NDpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b3BfY21kICp0eG9wX2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MjY1OlxcdHN0cnVjdCBueHB3aWZpXzExYXhfc2V0X2JzcnBfY21kICpzZXRfYnNycF9jbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI2NjpcXHRzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2xsZGVfY21kICpsbGRlX2NtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjY3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI3NS1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9TUl9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjc2OlxcdFxcdHNyX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3NyX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI3ODpcXHRcXHR0bHYgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqKWhlX2NtZC1cXHUwMDNldmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yNzktXFx0XFx0dGx2LVxcdTAwM2VoZWFkZXIudHlwZSA9IGNwdV90b19sZTE2KHNyX2NtZC1cXHUwMDNldHlwZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjg1LVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX0JFQU1fU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjI4NjpcXHRcXHRiZWFtX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2JlYW1fY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI4Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0yOTEtXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfSFRDX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzoyOTI6XFx0XFx0aHRjX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2h0Y19jbWQgKilcXHUwMDI2YXhfY21kLVxcdTAwM2VwYXJhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMjkzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5Ny1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9UWE9NSV9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6Mjk4OlxcdFxcdHR4bW9pX2NtZCA9XFx0KHN0cnVjdCBueHB3aWZpXzExYXhfdHhvbWlfY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTI5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMDMtXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfT0JTU19UT0xUSU1FX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMDQ6XFx0XFx0dG9sdGltZV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF90b2x0aW1lX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzEwLVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1RYT1BSVFNfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMxMTpcXHRcXHR0eG9wX2NtZCA9IChzdHJ1Y3Qgbnhwd2lmaV8xMWF4X3R4b3BfY21kICopXFx1MDAyNmF4X2NtZC1cXHUwMDNlcGFyYW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMxMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMTctXFx0Y2FzZSBOWFBXSUZJXzExQVhDTURfU0VUX0JTUlBfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMxODpcXHRcXHRzZXRfYnNycF9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9zZXRfYnNycF9jbWQgKilcXHUwMDI2YXhfY21kLVxcdTAwM2VwYXJhbTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzE5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTMyMy1cXHRjYXNlIE5YUFdJRklfMTFBWENNRF9MTERFX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozMjQ6XFx0XFx0bGxkZV9jbWQgPSAoc3RydWN0IG54cHdpZmlfMTFheF9sbGRlX2NtZCAqKVxcdTAwMjZheF9jbWQtXFx1MDAzZXBhcmFtO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zMjUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzI5LVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjMzMDpcXHRcXHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzMxLVxcdFxcdFxcdCAgICBcXFwiJXM6IFVua25vd24gc3ViIGNvbW1hbmQ6ICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzQxOmludCBueHB3aWZpX3JldF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDItXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDM6XFx0XFx0XFx0IHN0cnVjdCBueHB3aWZpXzExYXhfY21kX2NmZyAqYXhfY21kKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDU6XFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM0Ni1cXHRzdHJ1Y3QgaG9zdF9jbWRfMTFheF9jbWQgKmhlX2NtZCA9IFxcdTAwMjZyZXNwLVxcdTAwM2VwYXJhbXMuYXhfY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNDc6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfZGF0YSAqdGx2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy0zNDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzUyLVxcdGNhc2UgTlhQV0lGSV8xMUFYQ01EX1NSX1NVQklEOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzozNTM6XFx0XFx0dGx2ID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2RhdGEgKiloZV9jbWQtXFx1MDAzZXZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzU0LVxcdFxcdG1lbWNweShheF9jbWQtXFx1MDAzZXBhcmFtLnNyX2NmZy5wYXJhbS5vYnNzX3BkX29mZnNldC5vZmZzZXQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzgzLVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjM4NDpcXHRcXHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzg1LVxcdFxcdFxcdCAgICBcXFwiJXM6IFVua25vd24gc3ViIGNvbW1hbmQ6ICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTM5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6MzkzOnN0YXRpYyB1OCBueHB3aWZpX2lzX2FwXzExYXhfdHd0X3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtMzk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxMDpib29sIG54cHdpZmlfaXNfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxMTpcXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDEyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDEzOlxcdHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqdXNlcl9oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQxNDpcXHRzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmh3X2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDE1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDE5OlxcdGlmICghbnhwd2lmaV9pc19hcF8xMWF4X3R3dF9zdXBwb3J0ZWQoYnNzX2Rlc2MpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyMDpcXHRcXHRueHB3aWZpX2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBNU0csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyMS1cXHRcXHRcXHQgICAgXFxcIkFQIGRvbid0IHN1cHBvcnQgdHd0IGZlYXR1cmVcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyNS1cXHRpZiAoYnNzX2Rlc2MtXFx1MDAzZWJzc19iYW5kIFxcdTAwMjYgQkFORF9BKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyNjpcXHRcXHRod19oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQyNy1cXHRcXHRcXHRwcml2LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2Vod19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQyODpcXHRcXHR1c2VyX2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDI5LVxcdFxcdFxcdHByaXYtXFx1MDAzZXVzZXJfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzAtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDMxOlxcdFxcdGh3X2hlX2NhcCA9IChzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDMyLVxcdFxcdFxcdHByaXYtXFx1MDAzZWFkYXB0ZXItXFx1MDAzZWh3XzJnX2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDMzOlxcdFxcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzQtXFx0XFx0XFx0cHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDM3LVxcdGlmICghKGh3X2hlX2NhcC1cXHUwMDNlaGVfbWFjX2NhcFswXSBcXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0Mzg6XFx0XFx0bnhwd2lmaV9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgTVNHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00MzktXFx0XFx0XFx0ICAgIFxcXCJGVyBkb24ndCBzdXBwb3J0IFRXVFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDQzLVxcdGlmICghKHVzZXJfaGVfY2FwLVxcdTAwM2VoZV9tYWNfY2FwWzBdIFxcdTAwMjYgSEVfTUFDX0NBUF9UV1RfUkVRX1NVUFBPUlQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ0NDpcXHRcXHRueHB3aWZpX2RiZyhwcml2LVxcdTAwM2VhZGFwdGVyLCBNU0csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ0NS1cXHRcXHRcXHQgICAgXFxcIlVTRVIgSEVfTUFDX0NBUCBkb24ndCBzdXBwb3J0IFRXVFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTI6dTggbnhwd2lmaV9pc19zdGFfMTFheF90d3RfcmVxX3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NTQ6XFx0c3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICp1c2VyX2hlX2NhcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDU1LVxcdHU4IHJldCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDU5LVxcdFxcdGlmIChwcml2LVxcdTAwM2Vjb25maWdfYmFuZHMgXFx1MDAyNiBCQU5EX0FBWClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDYwOlxcdFxcdFxcdHVzZXJfaGVfY2FwID0gKHN0cnVjdCBueHB3aWZpX2llX3R5cGVzX2hlX2NhcCAqKXByaXYtXFx1MDAzZXVzZXJfaGVfY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy00NjEtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NjI6XFx0XFx0XFx0dXNlcl9oZV9jYXAgPSAoc3RydWN0IG54cHdpZmlfaWVfdHlwZXNfaGVfY2FwICopcHJpdi1cXHUwMDNldXNlcl8yZ19oZV9jYXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2My1cXHRcXHRyZXQgPSB1c2VyX2hlX2NhcC1cXHUwMDNlaGVfbWFjX2NhcFswXSBcXHUwMDI2IEhFX01BQ19DQVBfVFdUX1JFUV9TVVBQT1JUO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDY5OmludCBueHB3aWZpX2NtZF90d3RfY2ZnKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3MC1cXHRcXHRcXHRzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLCB1MTYgY21kX2FjdGlvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDcxOlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ3Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3MzpcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDc0LVxcdHN0cnVjdCBob3N0X2NtZF90d3RfY2ZnICp0d3RfY2ZnX2NtZCA9IFxcdTAwMjZjbWQtXFx1MDAzZXBhcmFtcy50d3RfY2ZnO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo0NzU6XFx0c3RydWN0IG54cHdpZmlfdHd0X3NldHVwICp0d3Rfc2V0dXA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3NjpcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfdGVhcmRvd24gKnR3dF90ZWFyZG93bjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc3OlxcdHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKnR3dF9yZXBvcnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjQ3ODpcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24gKnR3dF9pbmZvcm1hdGlvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDc5OlxcdHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnICpidHd0X2FwX2NvbmZpZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDgwLVxcdHU4IGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDkwLVxcdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9TRVRVUF9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDkxOlxcdFxcdHR3dF9zZXR1cCA9IChzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXAgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDkyLVxcdFxcdFxcdHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTQ5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NDk0OlxcdFxcdG1lbXNldCh0d3Rfc2V0dXAsIDB4MDAsIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNDk1LVxcdFxcdHR3dF9zZXR1cC1cXHUwMDNlaW1wbGljaXQgPSB0d3RfY2ZnLVxcdTAwM2VwYXJhbS50d3Rfc2V0dXAuaW1wbGljaXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTA3LVxcdFxcdHR3dF9zZXR1cC1cXHUwMDNlYmNuX21pc3NfdGhyZXNob2xkID0gdHd0X2NmZy1cXHUwMDNlcGFyYW0udHd0X3NldHVwLmJjbl9taXNzX3RocmVzaG9sZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTA4OlxcdFxcdGNtZF9zaXplICs9IHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3Rfc2V0dXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MDktXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxMC1cXHRjYXNlIE5YUFdJRklfMTFBWF9UV1RfVEVBUkRPV05fU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUxMTpcXHRcXHR0d3RfdGVhcmRvd24gPSAoc3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duICopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxMi1cXHRcXHRcXHR0d3RfY2ZnX2NtZC1cXHUwMDNldmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MTMtXFx0XFx0bWVtc2V0KHR3dF90ZWFyZG93biwgMHgwMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTE0OlxcdFxcdCAgICAgICBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3RlYXJkb3duKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUxNS1cXHRcXHR0d3RfdGVhcmRvd24tXFx1MDAzZWZsb3dfaWRlbnRpZmllciA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTIwLVxcdFxcdFxcdHR3dF9jZmctXFx1MDAzZXBhcmFtLnR3dF90ZWFyZG93bi50ZWFyZG93bl9hbGxfdHd0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MjE6XFx0XFx0Y21kX3NpemUgKz0gc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF90ZWFyZG93bik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyMi1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTIzLVxcdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9SRVBPUlRfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyNDpcXHRcXHR0d3RfcmVwb3J0ID0gKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQgKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI1LVxcdFxcdFxcdHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyNjpcXHRcXHRtZW1zZXQodHd0X3JlcG9ydCwgMHgwMCwgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX3R3dF9yZXBvcnQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTI3LVxcdFxcdHR3dF9yZXBvcnQtXFx1MDAzZXR5cGUgPSB0d3RfY2ZnLVxcdTAwM2VwYXJhbS50d3RfcmVwb3J0LnR5cGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUyODpcXHRcXHRjbWRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUyOS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTMwLVxcdGNhc2UgTlhQV0lGSV8xMUFYX1RXVF9JTkZPUk1BVElPTl9TVUJJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTMxOlxcdFxcdHR3dF9pbmZvcm1hdGlvbiA9IChzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24gKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTMyLVxcdFxcdFxcdHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTUzMy1cXHRcXHRtZW1zZXQodHd0X2luZm9ybWF0aW9uLCAweDAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1MzQ6XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3Qgbnhwd2lmaV90d3RfaW5mb3JtYXRpb24pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTM1LVxcdFxcdHR3dF9pbmZvcm1hdGlvbi1cXHUwMDNlZmxvd19pZGVudGlmaWVyID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01MzgtXFx0XFx0XFx0dHd0X2NmZy1cXHUwMDNlcGFyYW0udHd0X2luZm9ybWF0aW9uLnN1c3BlbmRfZHVyYXRpb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjUzOTpcXHRcXHRjbWRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X2luZm9ybWF0aW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTQwLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDEtXFx0Y2FzZSBOWFBXSUZJXzExQVhfQlRXVF9BUF9DT05GSUdfU1VCSUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU0MjpcXHRcXHRidHd0X2FwX2NvbmZpZyA9IChzdHJ1Y3Qgbnhwd2lmaV9idHd0X2FwX2NvbmZpZyAqKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NDMtXFx0XFx0XFx0XFx0IHR3dF9jZmdfY21kLVxcdTAwM2V2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0NC1cXHRcXHRtZW1zZXQoYnR3dF9hcF9jb25maWcsIDB4MDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU0NTpcXHRcXHQgICAgICAgc2l6ZW9mKHN0cnVjdCBueHB3aWZpX2J0d3RfYXBfY29uZmlnKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU0Ni1cXHRcXHRidHd0X2FwX2NvbmZpZy1cXHUwMDNlYXBfYmNhc3RfYmV0X3N0YV93YWl0ID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU2NTpcXHRcXHRjbWRfc2l6ZSArPSBzaXplb2Yoc3RydWN0IG54cHdpZmlfYnR3dF9hcF9jb25maWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NjYtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU2Ny1cXHRkZWZhdWx0OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1Njg6XFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU2OS1cXHRcXHRcXHQgICAgXFxcIlVua25vd24gc3ViIGlkOiAlZFxcXFxuXFxcIiwgdHd0X2NmZy1cXHUwMDNlc3ViX2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU3ODppbnQgbnhwd2lmaV9yZXRfdHd0X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01NzktXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU4MDpcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfY2ZnICp0d3RfY2ZnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01ODEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jLTU4OS1cXHQgICAgdHd0X2NmZy1cXHUwMDNlc3ViX2lkID09IE5YUFdJRklfMTFBWF9UV1RfUkVQT1JUX1NVQklEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5jOjU5MDpcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICp0d3RfcmVwb3J0ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmM6NTkxOlxcdFxcdFxcdChzdHJ1Y3Qgbnhwd2lmaV90d3RfcmVwb3J0ICopdHd0X2NmZ19jbWQtXFx1MDAzZXZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmMtNTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYzo1OTM6XFx0XFx0bWVtY3B5KFxcdTAwMjZ0d3RfY2ZnLVxcdTAwM2VwYXJhbS50d3RfcmVwb3J0LCB0d3RfcmVwb3J0LCBzaXplb2Yoc3RydWN0IG54cHdpZmlfdHd0X3JlcG9ydCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguYy01OTQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTItLypcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6MzogKiBueHB3aWZpOiA4MDIuMTFheCBzdXBwb3J0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaD0xNz1zdGF0aWMgaW5saW5lIHUxNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDoxODpueHB3aWZpX2dldF9oZV9uc3NfbWNzKF9fbGUxNiBtY3NfbWFwX3NldCwgaW50IG5zcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0xOS1cXHRyZXR1cm4gKChsZTE2X3RvX2NwdShtY3NfbWFwX3NldCkgXFx1MDAzZVxcdTAwM2UgKDIgKiAobnNzIC0gMSkpKSBcXHUwMDI2IDB4Myk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg9MjI9c3RhdGljIGlubGluZSB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjIzOm54cHdpZmlfc2V0X2hlX25zc19tY3MoX19sZTE2ICptY3NfbWFwX3NldCwgaW50IG5zcywgaW50IHZhbHVlKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTI0LVxcdHUxNiB0ZW1wO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozMTpib29sIG54cHdpZmlfaXNfMTFheF90d3Rfc3VwcG9ydGVkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjMyOlxcdFxcdFxcdFxcdCAgIHN0cnVjdCAgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDozNDp2b2lkIG54cHdpZmlfdXBkYXRlXzExYXhfY2FwKHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTM1LVxcdFxcdFxcdCAgICAgc3RydWN0IGh3X3NwZWNfZXh0ZW5zaW9uICpod19oZV9jYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Mzc6Ym9vbCBueHB3aWZpXzExYXhfYmFuZGNvbmZpZ19hbGxvd2VkKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjM4OlxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG54cHdpZmlfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDA6aW50IG54cHdpZmlfY21kX2FwcGVuZF8xMWF4X3RsdihzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo0MTpcXHRcXHRcXHRcXHRzdHJ1Y3Qgbnhwd2lmaV9ic3NkZXNjcmlwdG9yICpic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDItXFx0XFx0XFx0XFx0dTggKipidWZmZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NDQ6aW50IG54cHdpZmlfZmlsbF9oZV9jYXBfdGx2KHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ1OlxcdFxcdFxcdCAgICBzdHJ1Y3Qgbnhwd2lmaV9pZV90eXBlc19oZV9jYXAgKmhlX2NhcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNDYtXFx0XFx0XFx0ICAgIHUxNiBiYW5kcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ3OmludCBueHB3aWZpX2NtZF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC00OC1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjQ5OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUxOmludCBueHB3aWZpX3JldF8xMWF4X2NmZyhzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Mi1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjUzOlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2hlX2NmZyAqYXhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU1OmludCBueHB3aWZpX2NtZF8xMWF4X2NtZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC01Ni1cXHRcXHRcXHQgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjU3OlxcdFxcdFxcdCBzdHJ1Y3Qgbnhwd2lmaV8xMWF4X2NtZF9jZmcgKmF4X2NtZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oLTU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo1OTppbnQgbnhwd2lmaV9yZXRfMTFheF9jbWQoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjAtXFx0XFx0XFx0IHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaDo2MTpcXHRcXHRcXHQgc3RydWN0IG54cHdpZmlfMTFheF9jbWRfY2ZnICpheF9jbWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NjM6aW50IG54cHdpZmlfY21kX3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjQtXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCwgdTE2IGNtZF9hY3Rpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY1OlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6Njc6aW50IG54cHdpZmlfcmV0X3R3dF9jZmcoc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNjgtXFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFheC5oOjY5OlxcdFxcdFxcdHN0cnVjdCBueHB3aWZpX3R3dF9jZmcgKnR3dF9jZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpLzExYXguaC03MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4Lmg6NzE6dTggbnhwd2lmaV9pc19zdGFfMTFheF90d3RfcmVxX3N1cHBvcnRlZChzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWF4LmgtNzItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0yLS8qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmM6MzogKiBueHB3aWZpOiA4MDIuMTFoIGhlbHBlcnNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy00LSAqXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS8xMWguYzoxMzp2b2lkIG54cHdpZmlfaW5pdF8xMWhfcGFyYW1zKHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvMTFoLmMtMTQte1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoxOTo0NS4wODE3NDAwMDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTQ2MTMwMzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHN0YXJ0ZWQuIE15IGZpcnN0IG1vdmUgaXMgdXN1YWxseSB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGVzLCBlc3BlY2lhbGx5IGluIGEgbmV3IGNvZGViYXNlIGxpa2UgdGhpcy4gTGV0J3Mgc2VlLi4uIGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBhbGwgdGhlIGVzc2VudGlhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBOWFAgV2ktRmkgZHJpdmVyIHdpbGwgbGl2ZSwgYW5kIGl0J3MgdGhlIGdhdGV3YXkgdG8gdW5kZXJzdGFuZGluZyB3aGF0IGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQsIHdoYXQgZGVwZW5kZW5jaWVzIGV4aXN0LCBhbmQgaG93IHRoZSBkcml2ZXIgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZC4gSSBjYW4gcHJvYmFibHkgcXVpY2tseSBkZXRlcm1pbmUgdGhlIGNvcmUgc2V0IG9mIGZlYXR1cmVzLCBob3cgdG8gZW5hYmxlIGFuZCBkaXNhYmxlIHRoZW0sIGFueSBzcGVjaWZpYyBoYXJkd2FyZSByZXF1aXJlbWVudHMsIGFuZCBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgY29tcGlsZS10aW1lIGRlcGVuZGVuY2llcy4gRnJvbSBoZXJlIEkgY2FuIHN0YXJ0IHRvIGZsZXNoIG91dCBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBkcml2ZXIgYW5kIHdoYXQgaXQgY2FuIGRvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjg2MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEwOjE5OjQ3LjAyNzg3MzI5OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBOWFBXSUZJXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTlhQIFdpRmkgRHJpdmVyXFxcIiBpZiBDT01QSUxFX1RFU1RcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE5YUFxcbiAgIDc6XFx0XFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAxMDpcXHRcXHQgIG54cHdpZmkuXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBOWFBXSUZJX1NESU9cXG4gIDEzOlxcdFxcdHRyaXN0YXRlIFxcXCJOWFAgV2lGaSBEcml2ZXIgZm9yIElXNjF4XFxcIlxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMSBcXHUwMDI2XFx1MDAyNiBNTUNcXG4gIDE1OlxcdFxcdHNlbGVjdCBOWFBXSUZJXFxuICAxNjpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICAxNzpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDE4OlxcdFxcdGhlbHBcXG4gIDE5OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE5YUFxcbiAgMjA6XFx0XFx0ICBJVzYxeCBpbnRlcmZhY2UuXFxuICAyMTpcXHRcXG4gIDIyOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcXG4gIDIzOlxcdFxcdCAgbnhwd2lmaV9zZGlvLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoxOTo0Ny4wMjc5NDAxMTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjM0MzgxMTQwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIHRoaXMgcGF0Y2ggcmVxdWlyZXMgY2FyZWZ1bCBjb25zaWRlcmF0aW9uIHJlZ2FyZGluZyBmdXp6aW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGVzcGVjaWFsbHkgc2luY2UgaXQncyB0b3VjaGluZyBib3RoIE1NQy9TRElPIGFuZCBhbiBOWFAgV2ktRmkgZHJpdmVyLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIHNwYW5zIHNldmVyYWwgZmlsZXM6IGBxdWlya3MuaGAsIGAxMW4uY2AsIGBmdy5oYCwgYHNkaW8uY2AsIGBzZGlvLmhgLCBhbmQgYHNkaW9faWRzLmhgLiBDbGVhcmx5LCB0aGlzIGludm9sdmVzIGZpeGVzIGFuZCBtb2RpZmljYXRpb25zIHJlbGF0ZWQgdG8gdGhlIE5YUCBXaS1GaSBkcml2ZXIgKGBueHB3aWZpYCksIHBhcnRpY3VsYXJseSBpdHMgaW50ZXJhY3Rpb24gd2l0aCBTRElPIChTZWN1cmUgRGlnaXRhbCBJbnB1dCBPdXRwdXQpLiBTZWN0aW9uIDEgYW5kIFNlY3Rpb24gMiBoZXJlIGlzIHRoZSBtb3N0IGltcG9ydGFudCBwYXJ0IHRvIGRlY2lkZSBpZiB3ZSBjYW4gZnV6eiB0aGlzLlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlLCBJIHNlZSBhbiBTRElPIGZpeHVwIHRhYmxlIGluIGBxdWlya3MuaGAgYmVpbmcgdXBkYXRlZCwgYWxvbmcgd2l0aCBjaGFuZ2VzIGluIGAxMW4uY2AgdGhhdCBhcHBlYXIgdG8gcmVsYXRlIHRvIFdpLUZpIGNoYW5uZWwgd2lkdGggKDgwTUh6LCA0ME1IeikgYW5kIHBvdGVudGlhbGx5IDgwMi4xMWFjL24gc3VwcG9ydC4gVGhlIG90aGVyIGZpbGVzIHNlZW0gdG8gcHJvdmlkZSBkZWZpbml0aW9ucyBhbmQgc3VwcG9ydGluZyBjb2RlIGZvciBTRElPLCBvciB0aGUgZHJpdmVyIGl0c2VsZi5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIG5vdyBpcyByZWFjaGFiaWxpdHkgd2l0aGluIGEgc3RhbmRhcmQgZnV6emluZyBzZXR1cCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUpIHVzZWQgYnkgc3l6a2FsbGVyLiBUaGUga2V5IGlzIHdoZXRoZXIgdGhpcyBjb2RlLCBvciB0aGUgaGFyZHdhcmUgaXQgaW50ZXJhY3RzIHdpdGgsIGlzICphY3R1YWxseSogcmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlxuXG5NeSBwcmltYXJ5IGNvbmNlcm4gaXMgdGhhdCBgbnhwd2lmaWAgaXMgYW4gU0RJTyBXaS1GaSBkcml2ZXIgKGBueHB3aWZpX3NkaW9gKS4gVGhlIHF1ZXN0aW9uIGJlY29tZXM6IERvZXMgUUVNVSwgaW4gYSB0eXBpY2FsIHN5emthbGxlciBzZXR1cCwgKmVtdWxhdGUqIHRoZSBOWFAgSVc2MTAgLyBJVzYxeCBTRElPIGhhcmR3YXJlIG9yLCBwZXJoYXBzLCBhIG1vcmUgZ2VuZXJhbCBTRElPIGJ1cz8gRG9lcyBpdCBwcm92aWRlIGEgc29mdHdhcmUtZW11bGF0ZWQgU0RJTyBkZXZpY2Ugb3IgYSBzcGVjaWZpYyBOWFAgV2ktRmkgaGFyZHdhcmUgYWJzdHJhY3Rpb24/IElmIG5vdCwgdGhlbiB0aGlzIGNvZGUgbWlnaHQgYmUgZWZmZWN0aXZlbHkgKnVucmVhY2hhYmxlKiBmb3IgZnV6emluZywgYW5kIHRodXMgYSB3YXN0ZSBvZiByZXNvdXJjZXMuIERvIExpbnV4IG9yIHN5emthbGxlciBoYXZlIGFuIFNESU8gZ2FkZ2V0IG9yIHNvZnR3YXJlIG1vY2sgZm9yIE5YUCBXaUZpPyBOby5cblxuVGhlIGd1aWRpbmcgcHJpbmNpcGxlIGhlcmUgaXMgdGhhdCBpZiB0aGUgbW9kaWZpZWQgY29kZSByZWxpZXMgb24gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBpdCdzIG5vdCB3b3J0aCBmdXp6aW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgTlhQIFdpLUZpIFNESU8gZHJpdmVyIGNhbiBiZSByZWFjaGVkISBEb2VzIHN5emthbGxlciBoYXZlIGFueSB2aXJ0dWFsIFNESU8gZHJpdmVycyBvciBVU0ItdG8tU0RJTyBvciBzb21ldGhpbmcgaW4gdGhlIExpbnV4IHRyZWU/IFRoYXQgd2lsbCBiZSB0aGUga2V5IHRvIG1ha2luZyB0aGlzIGRldGVybWluYXRpb24gYW5kIGRlY2lkaW5nIGlmIHRoaXMgaXMgYSB3b3J0aHdoaWxlIHRhcmdldCBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM0MTQsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoxOTo1OS4zNzE3NjAyOTJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzMzc3ODY2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZGlvX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmx1ZXRvb3RoL2J0bXJ2bF9zZGlvLmM9MTc0NT1zdGF0aWMgaW50IF9faW5pdCBidG1ydmxfc2Rpb19pbml0X21vZHVsZSh2b2lkKVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXJ2bF9zZGlvLmMtMTc0Ni17XFxuZHJpdmVycy9ibHVldG9vdGgvYnRtcnZsX3NkaW8uYzoxNzQ3OlxcdGlmIChzZGlvX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2YnRfbXJ2bF9zZGlvKSAhPSAwKSB7XFxuZHJpdmVycy9ibHVldG9vdGgvYnRtcnZsX3NkaW8uYy0xNzQ4LVxcdFxcdEJUX0VSUihcXFwiU0RJTyBEcml2ZXIgUmVnaXN0cmF0aW9uIEZhaWxlZFxcXCIpO1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jPTI3ND1zdGF0aWMgdm9pZCBzZGlvX2xlZ2FjeV9zaHV0ZG93bihzdHJ1Y3Qgc2Rpb19mdW5jICpmdW5jKVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jLTI4Mi0vKipcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmM6MjgzOiAqXFx0X19zZGlvX3JlZ2lzdGVyX2RyaXZlciAtIHJlZ2lzdGVyIGEgZnVuY3Rpb24gZHJpdmVyXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jLTI4NC0gKlxcdEBkcnY6IFNESU8gZnVuY3Rpb24gZHJpdmVyXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMjg2LSAqL1xcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYzoyODc6aW50IF9fc2Rpb19yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHNkaW9fZHJpdmVyICpkcnYsIHN0cnVjdCBtb2R1bGUgKm93bmVyKVxcbmRyaXZlcnMvbW1jL2NvcmUvc2Rpb19idXMuYy0yODgte1xcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jLTMwMS19XFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX2J1cy5jOjMwMjpFWFBPUlRfU1lNQk9MX0dQTChfX3NkaW9fcmVnaXN0ZXJfZHJpdmVyKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fYnVzLmMtMzAzLVxcbi0tXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX3VhcnQuYz0xMTE1PXN0YXRpYyBpbnQgX19pbml0IHNkaW9fdWFydF9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fdWFydC5jLTExNDAtXFxuZHJpdmVycy9tbWMvY29yZS9zZGlvX3VhcnQuYzoxMTQxOlxcdHJldCA9IHNkaW9fcmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZzZGlvX3VhcnRfZHJpdmVyKTtcXG5kcml2ZXJzL21tYy9jb3JlL3NkaW9fdWFydC5jLTExNDItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9zZGlvLmM9MTk1PWludCBiNDNfc2Rpb19pbml0KHZvaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL3NkaW8uYy0xOTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9zZGlvLmM6MTk3OlxcdHJldHVybiBzZGlvX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2YjQzX3NkaW9fZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvc2Rpby5jLTE5OC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM9MTI3MT1pbnQgYnJjbWZfc2Rpb19yZWdpc3Rlcih2b2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYy0xMjcyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM6MTI3MzpcXHRyZXR1cm4gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmJyY21mX3NkbW1jX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jLTEyNzQtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhcy9pZl9zZGlvLmM9MTM5MD1zdGF0aWMgaW50IF9faW5pdCBpZl9zZGlvX2luaXRfbW9kdWxlKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzL2lmX3NkaW8uYy0xMzk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXMvaWZfc2Rpby5jOjEzOTc6XFx0cmV0ID0gc2Rpb19yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmlmX3NkaW9fZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzL2lmX3NkaW8uYy0xMzk4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmM9NTAzPXN0YXRpYyBpbnQgX19pbml0IHdmeF9jb3JlX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jLTUxMi1cXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTU1DKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jOjUxMzpcXHRcXHRyZXQgPSBzZGlvX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2d2Z4X3NkaW9fZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYy01MTQtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L2N3MTIwMC9jdzEyMDBfc2Rpby5jPTM4OD1zdGF0aWMgaW50IF9faW5pdCBjdzEyMDBfc2Rpb19pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zdC9jdzEyMDAvY3cxMjAwX3NkaW8uYy00MDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL2N3MTIwMF9zZGlvLmM6NDAxOlxcdHJldCA9IHNkaW9fcmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZzZGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL2N3MTIwMF9zZGlvLmMtNDAyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYz00NTM9c3RhdGljIGludCBfX2luaXQgcnR3X2Rydl9lbnRyeSh2b2lkKVxcbmRyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL3NkaW9faW50Zi5jLTQ1NC17XFxuZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvc2Rpb19pbnRmLmM6NDU1OlxcdHJldHVybiBzZGlvX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2cnRsODcyM2JzX3NkaW9fZHJpdmVyKTtcXG5kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9zZGlvX2ludGYuYy00NTYtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoyMDowMC4zMDU1NDY0MzdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDE1NjQ1MDQ1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBueHB3aWZpX3NkaW8gRHJpdmVyJ3MgUmVhY2gqKlxuXG5Pa2F5LCBsZXQncyBkaXNzZWN0IHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB2ZXJpZnkgaG93IHRoZSBgbnhwd2lmaV9zZGlvYCBkcml2ZXIgcmVnaXN0ZXJzLiBSaWdodCwgc28gaXQncyBzdHJhaWdodGZvcndhcmQ6IEkgc2VlIGl0J3MgcmVnaXN0ZXJlZCB0aHJvdWdoIGBtb2R1bGVfc2Rpb19kcml2ZXJgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNgLiBUaGF0IHRlbGxzIG1lIGl0IHVzZXMgYHNkaW9fcmVnaXN0ZXJfZHJpdmVyYCwgd2hpY2ggaXMgc3RhbmRhcmQuXG5cbk5vdywgbGV0J3Mgc2VlIHdoYXQgcXVpcmtzIG1pZ2h0IGJlIGluIHBsYXkuIEkgY2hlY2sgYGRyaXZlcnMvbW1jL2NvcmUvcXVpcmtzLmhgLiBBaCwgeWVzLCBpdOKAmXMgY29tcGlsZWQgaW50byB0aGUgTU1DIGNvcmUgd2hlbiBgQ09ORklHX01NQ2AgaXMgZW5hYmxlZC4gQW5kLCBhcyBleHBlY3RlZCwgYHNkaW9fZml4dXBfbWV0aG9kc2AgY2FuIGdldCBtYXRjaGVkIGR1cmluZyB0aGUgU0RJTyBkZXZpY2UgZGV0ZWN0aW9uIGFuZCBpbml0aWFsaXphdGlvbiwgc3BlY2lmaWNhbGx5LCB3aXRoIGBtbWNfZml4dXBfZGV2aWNlYC5cblxuSGVyZSdzIHRoZSBzbmFnLiBCZWNhdXNlLCBhcyBmYXIgYXMgSSBjYW4gdGVsbCwgYW5kIGhhdmUgYmVlbiBhYmxlIHRvIHJlcHJvZHVjZSwgdGhlcmUncyBubyBTRElPIGhhcmR3YXJlIGZvciBOWFAgSVc2MTAgb3IgSVc2MXggYXR0YWNoZWQgb3IgZW11bGF0ZWQgaW4gdHlwaWNhbCBRRU1VIHNldHVwcyBvciBldmVuIG9uIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBWTXMsIHVubGlrZSBVU0IgZ2FkZ2V0cyBvciBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiBUaGF0IG1lYW5zIHRoZSBkcml2ZXIncyBgcHJvYmVgIGZ1bmN0aW9uLCAxMW4gVExWcywgYW55IFNESU8gb3BlcmF0aW9ucywgYW5kIHRob3NlIGltcG9ydGFudCBxdWlya3MgYXJlLCB1bmZvcnR1bmF0ZWx5LCB1bnJlYWNoYWJsZSBpbiB0aGVzZSBlbnZpcm9ubWVudHMuIEl0J3Mgc2ltcGx5IG5vdCBiZWluZyBleGVyY2lzZWQuXG5cblNvLCBJIG5lZWQgdG8gbG9vayBpbnRvIGEgd29ya2Fyb3VuZC4gQ2FuIEkgaW5zdGFudGlhdGUgYG54cHdpZmlgIHRocm91Z2ggYG1hYzgwMjExX2h3c2ltYCwgcGVyaGFwcywgb3IgdXNpbmcgbmV0bGluaywgb3IgZXZlbiBhIG1vY2sgZGV2aWNlPyBUaGF0IHNlZW1zIHRvIGJlIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCDigJMgSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGRyaXZlcidzIGVudHJ5IHBvaW50cyBvciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMuIFRoYXQncyB0aGUgb25seSB3YXkgSSdtIGdvaW5nIHRvIGFjdHVhbGx5IGdldCBhIGxvb2sgYXQgaG93IHRoaXMgaXMgc3VwcG9zZWQgdG8gYmVoYXZlIGFuZCB0ZXN0IHRoaW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYzMzMsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTA6MjA6MDQuNDYyMDAwMjM0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODY3Njg5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfaW5pdHxzdWJzeXNfaW5pdGNhbGx8bW9kdWxlX3NkaW9fZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYz0xNjYwPW54cHdpZmlfY2xlYW51cF9tb2R1bGUodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYzoxNjY3Om1vZHVsZV9pbml0KG54cHdpZmlfaW5pdF9tb2R1bGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uYy0xNjY4LW1vZHVsZV9leGl0KG54cHdpZmlfY2xlYW51cF9tb2R1bGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jPTIzMDk9c3RhdGljIHN0cnVjdCBueHB3aWZpX2lmX29wcyBzZGlvX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYy0yMzM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYzoyMzM3Om1vZHVsZV9zZGlvX2RyaXZlcihueHB3aWZpX3NkaW8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYy0yMzM4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoyMDowNC41MTA2ODM0NDNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjUwNTg3NjY0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgbnhwd2lmaV9pbml0X21vZHVsZWAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdpdGggdGhpcyBXaUZpIG1vZHVsZSBpbml0aWFsaXphdGlvbi4gTGV0J3Mgc3RhcnQgd2l0aCBgbnhwd2lmaV9pbml0X21vZHVsZWAgY2FsbGVkIGZyb20gYG1haW4uY2AuIFRoYXQncyB0aGUgbG9naWNhbCBlbnRyeSBwb2ludC4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHN5c3RlbSBzZXRzIHRoaW5ncyB1cCwgd2hhdCByZXNvdXJjZXMgYXJlIGFsbG9jYXRlZCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyByZWQgZmxhZ3MgaW4gdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBJJ20gbG9va2luZyBmb3IgdGhlIHN0YW5kYXJkIHN0dWZmOiBkcml2ZXIgcmVnaXN0cmF0aW9uLCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiAocmVnaXN0ZXJzLCBpbnRlcnJ1cHRzKSwgbWF5YmUgc29tZSBzYW5pdHkgY2hlY2tzIG9uIHRoZSBoYXJkd2FyZSwgYW5kIGxpa2VseSBzb21lIHRhc2sgY3JlYXRpb24gb3IgdGhyZWFkIHNwYXduaW5nIHRvIGhhbmRsZSB0aGUgYmFja2dyb3VuZCBwcm9jZXNzaW5nLiBHaXZlbiB0aGlzIGlzIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24sIEkgZXhwZWN0IHRoZXJlIHdpbGwgYmUgYXQgbGVhc3QgYSBjYWxsIHRvIHJlZ2lzdGVyIHRoZSBtb2R1bGUgd2l0aCB0aGUga2VybmVsLiBJJ2xsIG5lZWQgdG8gZm9jdXMgb24gd2hhdCBoYXBwZW5zIGJlZm9yZSBhbmQgYWZ0ZXIgdGhhdCBjYWxsIHRvIGZpZ3VyZSBvdXQgdGhlIG1vZHVsZSdzIGludGVyYWN0aW9ucyB3aXRoIHRoZSBzeXN0ZW0uIExldCdzIHNlZSBpZiB0aGUgY29kZSBpcyBzdHJ1Y3R1cmVkIGluIGEgbG9naWNhbCBtYW5uZXIgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBvcHBvcnR1bml0aWVzIGZvciBvcHRpbWl6YXRpb24gb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjczMDMsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoyMDowNy4wMTY1NjMwODVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA2NzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjQ1LFxuICBcIkxpbmVDb3VudFwiOiAzNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjQ1OlxcdH1cXG4xNjQ2OlxcdEVYUE9SVF9TWU1CT0xfR1BMKF9ueHB3aWZpX2RiZyk7XFxuMTY0NzpcXHRcXG4xNjQ4OlxcdC8qIE1vZHVsZSBpbml0OiBpbml0IGRlYnVnZnMgaWYgZW5hYmxlZC4gKi9cXG4xNjQ5OlxcdHN0YXRpYyBpbnRcXG4xNjUwOlxcdG54cHdpZmlfaW5pdF9tb2R1bGUodm9pZClcXG4xNjUxOlxcdHtcXG4xNjUyOlxcdCNpZmRlZiBDT05GSUdfREVCVUdfRlNcXG4xNjUzOlxcdFxcdG54cHdpZmlfZGVidWdmc19pbml0KCk7XFxuMTY1NDpcXHQjZW5kaWZcXG4xNjU1OlxcdFxcdHJldHVybiAwO1xcbjE2NTY6XFx0fVxcbjE2NTc6XFx0XFxuMTY1ODpcXHQvKiBNb2R1bGUgZXhpdDogcmVtb3ZlIGRlYnVnZnMgaWYgZW5hYmxlZC4gKi9cXG4xNjU5OlxcdHN0YXRpYyB2b2lkXFxuMTY2MDpcXHRueHB3aWZpX2NsZWFudXBfbW9kdWxlKHZvaWQpXFxuMTY2MTpcXHR7XFxuMTY2MjpcXHQjaWZkZWYgQ09ORklHX0RFQlVHX0ZTXFxuMTY2MzpcXHRcXHRueHB3aWZpX2RlYnVnZnNfcmVtb3ZlKCk7XFxuMTY2NDpcXHQjZW5kaWZcXG4xNjY1OlxcdH1cXG4xNjY2OlxcdFxcbjE2Njc6XFx0bW9kdWxlX2luaXQobnhwd2lmaV9pbml0X21vZHVsZSk7XFxuMTY2ODpcXHRtb2R1bGVfZXhpdChueHB3aWZpX2NsZWFudXBfbW9kdWxlKTtcXG4xNjY5OlxcdFxcbjE2NzA6XFx0TU9EVUxFX0FVVEhPUihcXFwiTlhQIEludGVybmF0aW9uYWwgTHRkLlxcXCIpO1xcbjE2NzE6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJOWFAgV2lGaSBEcml2ZXIgdmVyc2lvbiBcXFwiIFZFUlNJT04pO1xcbjE2NzI6XFx0TU9EVUxFX1ZFUlNJT04oVkVSU0lPTik7XFxuMTY3MzpcXHRNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEwOjIwOjA3LjAxNjk3MjQzNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTk2MjQwNzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgYG54cHdpZmlfc2Rpb2AgcHJvYmUsIGRpdmluZyBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmNgOlxuXG4qKlByb2JpbmcgdGhlIGBueHB3aWZpX3NkaW9gIE1vZHVsZSoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcyBgbnhwd2lmaV9zZGlvYCBwcm9iZSBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGluaXRpYWxpemVzIGFuZCBpbnRlcmFjdHMgd2l0aCB0aGUgU0RJTyBpbnRlcmZhY2UgZm9yIHRoZSBOWFAgV2ktRmkgY2hpcC4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdyB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uY2AuIEZpcnN0LCBJJ2xsIGlkZW50aWZ5IHRoZSBlbnRyeSBwb2ludCBhbmQgZm9sbG93IGhvdyB0aGUgZHJpdmVyIHNldHMgdXAgdGhlIFNESU8gaG9zdCBpbnRlcmZhY2UgYW5kIHRoZSBkZXZpY2UgaXRzZWxmLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgU0RJTyBjb21tYW5kIHNlcXVlbmNlcywgdGhlIGludGVycnVwdCBoYW5kbGluZywgYW5kIGFueSBwb3dlciBtYW5hZ2VtZW50IHJvdXRpbmVzIGludm9sdmVkLiBJJ20gbG9va2luZyBmb3IgdGhlIGVzc2VudGlhbCBzdGVwczogYXJlIHRoZXkgY29uZmlndXJpbmcgdGhlIFNESU8gY2FyZCByZWdpc3RlcnM/IE1hcHBpbmcgdGhlIGRldmljZSBtZW1vcnk/IEluaXRpYWxpemluZyB0aGUgZmlybXdhcmUgZG93bmxvYWQgcHJvY2VzcywgaWYgYW55PyBJIHdhbnQgdG8gaWRlbnRpZnkgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBzZWUgaG93IHRoZSBkcml2ZXIgbGlua3MgaXRzZWxmIHRvIHRoZSBTRElPIGJ1cy4gSSdsbCBhbHNvIGNoZWNrIGZvciBhbnkgZXJyb3IgaGFuZGxpbmcgb3IgcmV0cnkgbWVjaGFuaXNtcyBmb3Igcm9idXN0bmVzcy4gQW55IHVudXN1YWwgU0RJTyBjYXJkIGFjY2VzcyBwYXR0ZXJucywgc3BlY2lmaWMgdG8gdGhlIE5YUCBjaGlwLCBhcmUgYWxzbyBvbiBteSByYWRhci4gTXkgZ29hbCBpcyB0byBkZXZlbG9wIGEgY2xlYXIgbWVudGFsIG1vZGVsIG9mIHRoZSBwcm9iZSBvcGVyYXRpb24sIGluY2x1ZGluZyB0aGUgZGVwZW5kZW5jaWVzIG9uIG90aGVyIHN1YnN5c3RlbXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3OTc0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoyMDoxMC4yMTMyMTU0MzZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNjk0MDc1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJueHB3aWZpX3NkaW9fcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jPTEzNT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvc2Rpby5jOjEzNjpueHB3aWZpX3NkaW9fcHJvYmUoc3RydWN0IHNkaW9fZnVuYyAqZnVuYywgY29uc3Qgc3RydWN0IHNkaW9fZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtMTM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYz00ODY9c3RhdGljIHN0cnVjdCBzZGlvX2RyaXZlciBueHB3aWZpX3NkaW8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9zZGlvLmMtNDg4LVxcdC5pZF90YWJsZSA9IG54cHdpZmlfaWRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYzo0ODk6XFx0LnByb2JlID0gbnhwd2lmaV9zZGlvX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL3NkaW8uYy00OTAtXFx0LnJlbW92ZSA9IG54cHdpZmlfc2Rpb19yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEwOjIwOjEwLjUyMDE2MDk2MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NDU4MTM4NjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBueHB3aWZpX3NkaW9gIERyaXZlciBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgbnhwd2lmaV9zZGlvYCBkcml2ZXIuIFRoZSBkcml2ZXIgaXRzZWxmIGlzIHNwZWNpZmljYWxseSBmb3IgU0RJTyBXaS1GaSBkZXZpY2VzLCB0YXJnZXRpbmcgTlhQJ3MgSVc2MXggYW5kIElXNjEwIGNoaXBzZXRzLiBNeSB1bmRlcnN0YW5kaW5nLCBhbmQgSSdtIHN1cmUgeW91IGtub3cgdGhpcyBhcyB3ZWxsLCBpcyB0aGF0IFNESU8gcmVxdWlyZXMgYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLiBJdCdzIG5vdCBzb21ldGhpbmcgeW91IGNhbiBqdXN0IHNwaW4gdXAgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpLCB3aGljaCBpcyB3aGF0IHN5emthbGxlciwgb3VyIHByaW1hcnkgZnV6emluZyB0b29sLCB0eXBpY2FsbHkgdXNlcy5cblxuSSd2ZSByZXZpZXdlZCB0aGUgY2hhbmdlcyBhbmQgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCB0aGVzZSBwYXRjaGVzIGFyZSBhbGwgYWJvdXQgZW5hYmxpbmcgYW5kIHByb3ZpZGluZyBzdXBwb3J0IGZvciB0aGF0IHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUuIExldCdzIGJyZWFrIGl0IGRvd246XG5cbiogICBUaGVyZSdzIGFuIE1NQyBxdWlyayB0YWJsZSBlbnRyeSBhZGRlZCwgd2hpY2ggZGVhbHMgd2l0aCBpbml0aWFsaXppbmcgdGhlIE1NQyBpbnRlcmZhY2Ugc3BlY2lmaWNhbGx5IGZvciB0aGUgTlhQIElXNjEwIFNESU8gZGV2aWNlLlxuKiAgIFdlJ3JlIGdldHRpbmcgY2hhbm5lbCBiYW5kd2lkdGggaGFuZGxpbmcgaW4gYDExbi5jYCwgd2hpY2ggbWFrZXMgbWUgdGhpbmsgdGhlcmUncyBiZWVuIHNvbWUgbmV3IGZlYXR1cmVzIGFkZGVkIHRoYXQgcmVxdWlyZSBmaXJtd2FyZSBjYXBhYmlsaXRpZXMuXG4qICAgV2UgaGF2ZSBuZXcgZmlybXdhcmUgbWFjcm9zIGluIGBmdy5oYCwgZGVmaW5pbmcgdmFyaW91cyBmaXJtd2FyZSBjYXBhYmlsaXR5IGJpdHMuXG4qICAgYHNkaW8uY2AgaGFzIGRldmljZSBkZXNjcmlwdG9ycyBhbmQgZGV2aWNlIElEIHRhYmxlIGVudHJpZXMgZm9yIElXNjEwLlxuKiAgIFdlIGdldCBhIGZpcm13YXJlIG5hbWUgZGVmaW5pdGlvbiBpbiBgc2Rpby5oYC5cbiogICBGaW5hbGx5LCB0aGVyZSBhcmUgU0RJTyBJRHMgYmVpbmcgZGVmaW5lZCBpbiB0aGUgY29tbW9uIFNESU8gSURzIGhlYWRlci5cblxuTm93LCBiYXNlZCBvbiB0aGUgZ3VpZGFuY2UgKFNlY3Rpb24gMikgcmVnYXJkaW5nIHdoZW4gdG8gbWFyayBzb21ldGhpbmcgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAsIHRoaXMgcGF0Y2ggc2VyaWVzIGhpdHMgdGhlIG1hcmsgcGVyZmVjdGx5LiBJdCBmYWxscyB1bmRlciBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIOKAkyBzcGVjaWZpY2FsbHksIHRoZSBOWFAgSVc2MTAvSVc2MXggU0RJTyBXaS1GaSBkZXZpY2VzIHJlcXVpcmUgaGFyZHdhcmUgdGhhdCBpcyBOT1QgcHJlc2VudCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIuIFRoZSBjb2RlIHBhdGhzIGFyZSBzaW1wbHkgaW5hY2Nlc3NpYmxlLlxuXG5UaGVyZWZvcmUsIHRoZSBvbmx5IHJlYXNvbmFibGUgY29uY2x1c2lvbiBpcyB0aGF0IGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLlxuXG5UaGUgcmVhc29uaW5nIGlzIHByZXR0eSBjb25jaXNlOiB0aGlzIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBhbmQgcXVpcmtzIGZvciBOWFAgSVc2MTAgU0RJTyBXaS1GaSBkZXZpY2VzLCB3aGljaCByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIFNESU8gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cblxuTXkgYHNldC1yZXN1bHRzYCBjYWxsIHdpbGwgbG9vayBsaWtlOlxuXG4qICAgYFdvcnRoRnV6emluZ2A6IGBmYWxzZWBcbiogICBgUmVhc29uaW5nYDogQ29uY2lzZSBleHBsYW5hdGlvbiB0aGF0IHRoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgYW5kIHF1aXJrcyBmb3IgTlhQIElXNjEwIFNESU8gV2ktRmkgZGV2aWNlcywgd2hpY2ggcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBTRElPIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cbiogICBgRW5hYmxlQ29uZmlnc2A6IGBbXWBcbiogICBgRm9jdXNTeW1ib2xzYDogYFtdYFxuXG5BbmQsIGJlZm9yZSBJIHN1Ym1pdCB0aGF0LCBJJ20gZG9pbmcgYSBzYW5pdHkgY2hlY2s6IEkndmUgZ290IGFsbCB0aGUgZmllbGRzIGZpbGxlZCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NTk3LCJPdXRwdXRUb2tlbnMiOjExOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxMDoyMDoxNi45NzgzMDIyNzNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgYWRkcyBzdXBwb3J0IGZvciBOWFAgSVc2MTAgU0RJTyBXaS1GaSBkZXZpY2VzLCBpbmNsdWRpbmcgYW4gU0RJTyBNTUMgcXVpcmssIGRldmljZSBJRCByZWdpc3RyYXRpb24sIGFuZCBmaXJtd2FyZSBjYXBhYmlsaXR5IGhhbmRsaW5nIGZvciBjaGFubmVsIGJhbmR3aWR0aHMgaW4gdGhlIG54cHdpZmkgZHJpdmVyLiBUaGVzZSBtb2RpZmllZCBjb2RlIHBhdGhzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgTlhQIFNESU8gaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIGFkZHMgc3VwcG9ydCBmb3IgTlhQIElXNjEwIFNESU8gV2ktRmkgZGV2aWNlcywgaW5jbHVkaW5nIGFuIFNESU8gTU1DIHF1aXJrLCBkZXZpY2UgSUQgcmVnaXN0cmF0aW9uLCBhbmQgZmlybXdhcmUgY2FwYWJpbGl0eSBoYW5kbGluZyBmb3IgY2hhbm5lbCBiYW5kd2lkdGhzIGluIHRoZSBueHB3aWZpIGRyaXZlci4gVGhlc2UgbW9kaWZpZWQgY29kZSBwYXRocyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIE5YUCBTRElPIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnRzIChzdWNoIGFzIFFFTVUvR0NFKSwgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDEwOjIwOjE2Ljk3ODMzMzcyM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5s5k9[1] Phase: Running StartedAt: 2026-09-08 10:20:27 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5s5k9[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-08 10:20:27 +0000 UTC FinishedAt: 2026-09-08 10:20:33 +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,}