From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9B4426E93F for ; Tue, 16 Feb 2021 11:40:43 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Tue, 16 Feb 2021 12:39:51 +0100 Message-Id: <20210216114007.122175-20-zbigniew.kempczynski@intel.com> In-Reply-To: <20210216114007.122175-1-zbigniew.kempczynski@intel.com> References: <20210216114007.122175-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 19/35] tests/api_intel_bb: Modify test to verify intel_bb with allocator List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: aW50ZWxfYmIgd2FzIGFkb3B0ZWQgdG8gdXNlIGFsbG9jYXRvci4gQ2hhbmdlIHRoZSB0ZXN0IHRv IHZlcmlmeQphZGRyZXNzZXMgaW4gZGlmZmVyZW50IHNjZW5hcmlvcyAtIHdpdGggcmVsb2NhdGlv bnMgYW5kIHdpdGggc29mdHBpbi4KCnYyOiBza2lwIGFkZHJlc3NlcyB3aGljaCBhcmUgYmV5b25k IGFsbG9jYXRvciByYW5nZSBpbiBjaGVjay1jYW5vbmljYWwKCnYzOiBhZGRpbmcgaW50ZWwtYnVm IHRvIGludGVsLWJiIGluc2VydHMgYWRkcmVzc2VzIHNvIHRoZXkgc2hvdWxkCiAgICBiZSBzYW1l IGV2ZW4gaWYgaW50ZWwtYmIgY2FjaGUgcHVyZ2Ugd2FzIGNhbGxlZAoKU2lnbmVkLW9mZi1ieTog WmJpZ25pZXcgS2VtcGN6ecWEc2tpIDx6Ymlnbmlldy5rZW1wY3p5bnNraUBpbnRlbC5jb20+CkNj OiBEb21pbmlrIEdyemVnb3J6ZWsgPGRvbWluaWsuZ3J6ZWdvcnpla0BpbnRlbC5jb20+CkNjOiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiB0ZXN0cy9pOTE1L2Fw aV9pbnRlbF9iYi5jIHwgNTM2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t CiAxIGZpbGUgY2hhbmdlZCwgNDE0IGluc2VydGlvbnMoKyksIDEyMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS90ZXN0cy9pOTE1L2FwaV9pbnRlbF9iYi5jIGIvdGVzdHMvaTkxNS9hcGlfaW50 ZWxfYmIuYwppbmRleCA3N2RmYjY4NTQuLmQ1ZWQ3NzMxNCAxMDA2NDQKLS0tIGEvdGVzdHMvaTkx NS9hcGlfaW50ZWxfYmIuYworKysgYi90ZXN0cy9pOTE1L2FwaV9pbnRlbF9iYi5jCkBAIC0yMiw2 ICsyMiw3IEBACiAgKi8KIAogI2luY2x1ZGUgImlndC5oIgorI2luY2x1ZGUgImk5MTUvZ2VtLmgi CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3Rk aW8uaD4KQEAgLTEyMywyNCArMTI0LDM0IEBAIHN0YXRpYyB2b2lkIHByaW50X2J1ZihzdHJ1Y3Qg aW50ZWxfYnVmICpidWYsIGNvbnN0IGNoYXIgKm5hbWUpCiAKIAlwdHIgPSBnZW1fbW1hcF9fZGV2 aWNlX2NvaGVyZW50KGk5MTUsIGJ1Zi0+aGFuZGxlLCAwLAogCQkJCQlidWYtPnN1cmZhY2VbMF0u c2l6ZSwgUFJPVF9SRUFEKTsKLQlpZ3RfZGVidWcoIlslc10gQnVmIGhhbmRsZTogJWQsIHNpemU6 ICUiIFBSSXg2NCAiLCB2OiAweCUwMngsIHByZXN1bWVkX2FkZHI6ICVwXG4iLAorCWlndF9kZWJ1 ZygiWyVzXSBCdWYgaGFuZGxlOiAlZCwgc2l6ZTogJSIgUFJJdTY0CisJCSAgIiwgdjogMHglMDJ4 LCBwcmVzdW1lZF9hZGRyOiAlcFxuIiwKIAkJICBuYW1lLCBidWYtPmhhbmRsZSwgYnVmLT5zdXJm YWNlWzBdLnNpemUsIHB0clswXSwKIAkJICBmcm9tX3VzZXJfcG9pbnRlcihidWYtPmFkZHIub2Zm c2V0KSk7CiAJbXVubWFwKHB0ciwgYnVmLT5zdXJmYWNlWzBdLnNpemUpOwogfQogCitzdGF0aWMg dm9pZCByZXNldF9iYihzdHJ1Y3QgYnVmX29wcyAqYm9wcykKK3sKKwlpbnQgaTkxNSA9IGJ1Zl9v cHNfZ2V0X2ZkKGJvcHMpOworCXN0cnVjdCBpbnRlbF9iYiAqaWJiOworCisJaWJiID0gaW50ZWxf YmJfY3JlYXRlKGk5MTUsIFBBR0VfU0laRSk7CisJaW50ZWxfYmJfcmVzZXQoaWJiLCBmYWxzZSk7 CisJaW50ZWxfYmJfZGVzdHJveShpYmIpOworfQorCiBzdGF0aWMgdm9pZCBzaW1wbGVfYmIoc3Ry dWN0IGJ1Zl9vcHMgKmJvcHMsIGJvb2wgdXNlX2NvbnRleHQpCiB7CiAJaW50IGk5MTUgPSBidWZf b3BzX2dldF9mZChib3BzKTsKIAlzdHJ1Y3QgaW50ZWxfYmIgKmliYjsKLQl1aW50MzJfdCBjdHg7 CisJdWludDMyX3QgY3R4ID0gMDsKIAotCWlmICh1c2VfY29udGV4dCkgeworCWlmICh1c2VfY29u dGV4dCkKIAkJZ2VtX3JlcXVpcmVfY29udGV4dHMoaTkxNSk7Ci0JCWN0eCA9IGdlbV9jb250ZXh0 X2NyZWF0ZShpOTE1KTsKLQl9CiAKLQlpYmIgPSBpbnRlbF9iYl9jcmVhdGUoaTkxNSwgUEFHRV9T SVpFKTsKKwlpYmIgPSBpbnRlbF9iYl9jcmVhdGVfd2l0aF9hbGxvY2F0b3IoaTkxNSwgY3R4LCBQ QUdFX1NJWkUsCisJCQkJCSAgICAgSU5URUxfQUxMT0NBVE9SX1NJTVBMRSk7CiAJaWYgKGRlYnVn X2JiKQogCQlpbnRlbF9iYl9zZXRfZGVidWcoaWJiLCB0cnVlKTsKIApAQCAtMTU1LDEwICsxNjYs OCBAQCBzdGF0aWMgdm9pZCBzaW1wbGVfYmIoc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIGJvb2wgdXNl X2NvbnRleHQpCiAJaW50ZWxfYmJfcmVzZXQoaWJiLCBmYWxzZSk7CiAJaW50ZWxfYmJfcmVzZXQo aWJiLCB0cnVlKTsKIAotCWludGVsX2JiX291dChpYmIsIE1JX0JBVENIX0JVRkZFUl9FTkQpOwot CWludGVsX2JiX3B0cl9hbGlnbihpYmIsIDgpOwotCiAJaWYgKHVzZV9jb250ZXh0KSB7CisJCWN0 eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShpOTE1KTsKIAkJaW50ZWxfYmJfZGVzdHJveShpYmIpOwog CQlpYmIgPSBpbnRlbF9iYl9jcmVhdGVfd2l0aF9jb250ZXh0KGk5MTUsIGN0eCwgUEFHRV9TSVpF KTsKIAkJaW50ZWxfYmJfb3V0KGliYiwgTUlfQkFUQ0hfQlVGRkVSX0VORCk7CkBAIC0xNjYsMTEg KzE3NSwxMCBAQCBzdGF0aWMgdm9pZCBzaW1wbGVfYmIoc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIGJv b2wgdXNlX2NvbnRleHQpCiAJCWludGVsX2JiX2V4ZWMoaWJiLCBpbnRlbF9iYl9vZmZzZXQoaWJi KSwKIAkJCSAgICAgIEk5MTVfRVhFQ19ERUZBVUxUIHwgSTkxNV9FWEVDX05PX1JFTE9DLAogCQkJ ICAgICAgdHJ1ZSk7CisJCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgY3R4KTsKIAl9CiAKIAlp bnRlbF9iYl9kZXN0cm95KGliYik7Ci0JaWYgKHVzZV9jb250ZXh0KQotCQlnZW1fY29udGV4dF9k ZXN0cm95KGk5MTUsIGN0eCk7CiB9CiAKIC8qCkBAIC0xOTQsMjkgKzIwMiw0MyBAQCBzdGF0aWMg dm9pZCBsb3Rfb2ZfYnVmZmVycyhzdHJ1Y3QgYnVmX29wcyAqYm9wcykKIAlmb3IgKGkgPSAwOyBp IDwgTlVNX0JVRlM7IGkrKykgewogCQlidWZbaV0gPSBpbnRlbF9idWZfY3JlYXRlKGJvcHMsIDQw OTYsIDEsIDgsIDAsIEk5MTVfVElMSU5HX05PTkUsCiAJCQkJCSAgSTkxNV9DT01QUkVTU0lPTl9O T05FKTsKLQkJaW50ZWxfYmJfYWRkX2ludGVsX2J1ZihpYmIsIGJ1ZltpXSwgZmFsc2UpOworCQlp ZiAoaSAlIDIpCisJCQlpbnRlbF9iYl9hZGRfaW50ZWxfYnVmKGliYiwgYnVmW2ldLCBmYWxzZSk7 CisJCWVsc2UKKwkJCWludGVsX2JiX2FkZF9pbnRlbF9idWZfd2l0aF9hbGlnbm1lbnQoaWJiLCBi dWZbaV0sCisJCQkJCQkJICAgICAgMHg0MDAwLCBmYWxzZSk7CiAJfQogCiAJaW50ZWxfYmJfZXhl YyhpYmIsIGludGVsX2JiX29mZnNldChpYmIpLAogCQkgICAgICBJOTE1X0VYRUNfREVGQVVMVCB8 IEk5MTVfRVhFQ19OT19SRUxPQywgdHJ1ZSk7CiAKLQlpbnRlbF9iYl9kZXN0cm95KGliYik7Ci0K IAlmb3IgKGkgPSAwOyBpIDwgTlVNX0JVRlM7IGkrKykKIAkJaW50ZWxfYnVmX2Rlc3Ryb3koYnVm W2ldKTsKKworCWludGVsX2JiX2Rlc3Ryb3koaWJiKTsKIH0KIAogLyoKICAqIE1ha2Ugc3VyZSBp bnRlbC1iYiBzcGFjZSBhbGxvY2F0b3IgY3VycmVudGx5IGRvZXNuJ3QgZW50ZXIgNDctNDggYml0 CiAgKiBndHQgc2l6ZXMuCiAgKi8KKyNkZWZpbmUgR0VOOF9ISUdIX0FERFJFU1NfQklUIDQ3Citz dGF0aWMgdWludDY0X3QgZ2VuOF9jYW5vbmljYWxfYWRkcih1aW50NjRfdCBhZGRyZXNzKQorewor CWludCBzaGlmdCA9IDYzIC0gR0VOOF9ISUdIX0FERFJFU1NfQklUOworCisJcmV0dXJuIChpbnQ2 NF90KShhZGRyZXNzIDw8IHNoaWZ0KSA+PiBzaGlmdDsKK30KKwogc3RhdGljIHZvaWQgY2hlY2tf Y2Fub25pY2FsKHN0cnVjdCBidWZfb3BzICpib3BzKQogewotCWludCBpOTE1ID0gYnVmX29wc19n ZXRfZmQoYm9wcyk7CisJaW50IGk5MTUgPSBidWZfb3BzX2dldF9mZChib3BzKSwgaTsKIAlzdHJ1 Y3QgaW50ZWxfYmIgKmliYjsKIAlzdHJ1Y3QgaW50ZWxfYnVmICpidWY7CiAJdWludDMyX3Qgb2Zm c2V0OwotCXVpbnQ2NF90IGFkZHJlc3M7CisJLyogVHdpY2Ugc2FtZSBhZGRyZXNzZXMgdG8gdmVy aWZ5IHdpbGwgYmUgdW5yZXNlcnZlZCBpbiByZW1vdmUgcGF0aCAqLworCXVpbnQ2NF90IGFkZHJl c3Nlc1tdID0geyAweDgwMDAwMDAwMDAwMCwgMHg4MDAwMDAwMDAwMDAsIDB4NDAwMDAwMDAwMDAw IH07CisJdWludDY0X3QgYWRkcmVzcywgc3RhcnQsIGVuZDsKIAlib29sIHN1cHBvcnRzXzQ4Yml0 OwogCiAJaWJiID0gaW50ZWxfYmJfY3JlYXRlKGk5MTUsIFBBR0VfU0laRSk7CkBAIC0yMjUsMjUg KzI0Nyw0MyBAQCBzdGF0aWMgdm9pZCBjaGVja19jYW5vbmljYWwoc3RydWN0IGJ1Zl9vcHMgKmJv cHMpCiAJCWludGVsX2JiX2Rlc3Ryb3koaWJiKTsKIAlpZ3RfcmVxdWlyZV9mKHN1cHBvcnRzXzQ4 Yml0LCAiV2UgbmVlZCA0OGJpdCBwcGd0dCBmb3IgdGVzdGluZ1xuIik7CiAKLQlhZGRyZXNzID0g MHhjMDAwMDAwMDAwMDA7CiAJaWYgKGRlYnVnX2JiKQogCQlpbnRlbF9iYl9zZXRfZGVidWcoaWJi LCB0cnVlKTsKIAotCW9mZnNldCA9IGludGVsX2JiX2VtaXRfYmJlKGliYik7CisJaW50ZWxfYWxs b2NhdG9yX2dldF9hZGRyZXNzX3JhbmdlKGliYi0+YWxsb2NhdG9yX2hhbmRsZSwKKwkJCQkJICAm c3RhcnQsICZlbmQpOwogCi0JYnVmID0gaW50ZWxfYnVmX2NyZWF0ZShib3BzLCA1MTIsIDUxMiwg MzIsIDAsCi0JCQkgICAgICAgSTkxNV9USUxJTkdfTk9ORSwgSTkxNV9DT01QUkVTU0lPTl9OT05F KTsKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhZGRyZXNzZXMpOyBpKyspIHsKKwkJYWRk cmVzcyA9IGFkZHJlc3Nlc1tpXTsKKworCQlpZiAoYWRkcmVzcyA8IHN0YXJ0IHx8IGFkZHJlc3Mg Pj0gZW5kKSB7CisJCQlpZ3RfZGVidWcoIkFkZHJlc3MgdG9vIGJpZzogJSIgUFJJeDY0CisJCQkJ ICAiLCBzdGFydDogJSIgUFJJeDY0ICIsIGVuZDogJSIgUFJJeDY0CisJCQkJICAiLCBza2lwcGlu Zy4uLlxuIiwKKwkJCQkgIGFkZHJlc3MsIHN0YXJ0LCBlbmQpOworCQkJY29udGludWU7CisJCX0K IAotCWJ1Zi0+YWRkci5vZmZzZXQgPSBhZGRyZXNzOwotCWludGVsX2JiX2FkZF9pbnRlbF9idWYo aWJiLCBidWYsIHRydWUpOwotCWludGVsX2JiX29iamVjdF9zZXRfZmxhZyhpYmIsIGJ1Zi0+aGFu ZGxlLCBFWEVDX09CSkVDVF9QSU5ORUQpOworCQlvZmZzZXQgPSBpbnRlbF9iYl9lbWl0X2JiZShp YmIpOwogCi0JaWd0X2Fzc2VydChidWYtPmFkZHIub2Zmc2V0ID09IDApOworCQlidWYgPSBpbnRl bF9idWZfY3JlYXRlKGJvcHMsIDUxMiwgNTEyLCAzMiwgMCwKKwkJCQkgICAgICAgSTkxNV9USUxJ TkdfTk9ORSwgSTkxNV9DT01QUkVTU0lPTl9OT05FKTsKIAotCWludGVsX2JiX2V4ZWMoaWJiLCBv ZmZzZXQsCi0JCSAgICAgIEk5MTVfRVhFQ19ERUZBVUxUIHwgSTkxNV9FWEVDX05PX1JFTE9DLCB0 cnVlKTsKKwkJYnVmLT5hZGRyLm9mZnNldCA9IGFkZHJlc3M7CisJCWludGVsX2JiX2FkZF9pbnRl bF9idWYoaWJiLCBidWYsIHRydWUpOworCQlpbnRlbF9iYl9hZGRfaW50ZWxfYnVmKGliYiwgYnVm LCB0cnVlKTsKKworCQlpZ3RfYXNzZXJ0KGJ1Zi0+YWRkci5vZmZzZXQgPT0gZ2VuOF9jYW5vbmlj YWxfYWRkcihhZGRyZXNzKSk7CisKKwkJaW50ZWxfYmJfZXhlYyhpYmIsIG9mZnNldCwKKwkJCSAg ICAgIEk5MTVfRVhFQ19ERUZBVUxUIHwgSTkxNV9FWEVDX05PX1JFTE9DLCB0cnVlKTsKKworCQkv KiBXZSBlbnN1cmUgdG8gZG8gdW5yZXNlcnZlIGFuZCB2ZXJpZnkgYWRkcmVzcyBjYW4gYmUgcmV1 c2VkICovCisJCWludGVsX2JiX3JlbW92ZV9pbnRlbF9idWYoaWJiLCBidWYpOworCQlpbnRlbF9i dWZfZGVzdHJveShidWYpOworCQlpbnRlbF9iYl9yZXNldChpYmIsIHRydWUpOworCX0KIAotCWlu dGVsX2J1Zl9kZXN0cm95KGJ1Zik7CiAJaW50ZWxfYmJfZGVzdHJveShpYmIpOwogfQogCkBAIC0z MzksNzAgKzM3OSwyODcgQEAgc3RhdGljIHZvaWQgcmVzZXRfZmxhZ3Moc3RydWN0IGJ1Zl9vcHMg KmJvcHMpCiAJaW50ZWxfYmJfZGVzdHJveShpYmIpOwogfQogCitzdGF0aWMgdm9pZCBhZGRfcmVt b3ZlX29iamVjdHMoc3RydWN0IGJ1Zl9vcHMgKmJvcHMpCit7CisJaW50IGk5MTUgPSBidWZfb3Bz X2dldF9mZChib3BzKTsKKwlzdHJ1Y3QgaW50ZWxfYmIgKmliYjsKKwlzdHJ1Y3QgaW50ZWxfYnVm ICpzcmMsICptaWQsICpkc3Q7CisJdWludDMyX3Qgb2Zmc2V0OworCWNvbnN0IHVpbnQzMl90IHdp ZHRoID0gNTEyOworCWNvbnN0IHVpbnQzMl90IGhlaWdodCA9IDUxMjsKIAotI2RlZmluZSBNSV9G TFVTSF9EVyAoMHgyNjw8MjMpCi0jZGVmaW5lIEJDU19TV0NUUkwgIDB4MjIyMDAKLSNkZWZpbmUg QkNTX1NSQ19ZICAgKDEgPDwgMCkKLSNkZWZpbmUgQkNTX0RTVF9ZICAgKDEgPDwgMSkKLXN0YXRp YyB2b2lkIF9fZW1pdF9ibGl0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLAotCQkJc3RydWN0IGludGVs X2J1ZiAqc3JjLCBzdHJ1Y3QgaW50ZWxfYnVmICpkc3QpCisJaWJiID0gaW50ZWxfYmJfY3JlYXRl KGk5MTUsIFBBR0VfU0laRSk7CisJaWYgKGRlYnVnX2JiKQorCQlpbnRlbF9iYl9zZXRfZGVidWco aWJiLCB0cnVlKTsKKworCXNyYyA9IGludGVsX2J1Zl9jcmVhdGUoYm9wcywgd2lkdGgsIGhlaWdo dCwgMzIsIDAsCisJCQkgICAgICAgSTkxNV9USUxJTkdfTk9ORSwgSTkxNV9DT01QUkVTU0lPTl9O T05FKTsKKwltaWQgPSBpbnRlbF9idWZfY3JlYXRlKGJvcHMsIHdpZHRoLCBoZWlnaHQsIDMyLCAw LAorCQkJICAgICAgIEk5MTVfVElMSU5HX05PTkUsIEk5MTVfQ09NUFJFU1NJT05fTk9ORSk7CisJ ZHN0ID0gaW50ZWxfYnVmX2NyZWF0ZShib3BzLCB3aWR0aCwgaGVpZ2h0LCAzMiwgMCwKKwkJCSAg ICAgICBJOTE1X1RJTElOR19OT05FLCBJOTE1X0NPTVBSRVNTSU9OX05PTkUpOworCisJaW50ZWxf YmJfYWRkX2ludGVsX2J1ZihpYmIsIHNyYywgZmFsc2UpOworCWludGVsX2JiX2FkZF9pbnRlbF9i dWYoaWJiLCBtaWQsIHRydWUpOworCWludGVsX2JiX3JlbW92ZV9pbnRlbF9idWYoaWJiLCBtaWQp OworCWludGVsX2JiX3JlbW92ZV9pbnRlbF9idWYoaWJiLCBtaWQpOworCWludGVsX2JiX3JlbW92 ZV9pbnRlbF9idWYoaWJiLCBtaWQpOworCWludGVsX2JiX2FkZF9pbnRlbF9idWYoaWJiLCBkc3Qs IHRydWUpOworCisJb2Zmc2V0ID0gaW50ZWxfYmJfZW1pdF9iYmUoaWJiKTsKKwlpbnRlbF9iYl9l eGVjKGliYiwgb2Zmc2V0LAorCQkgICAgICBJOTE1X0VYRUNfREVGQVVMVCB8IEk5MTVfRVhFQ19O T19SRUxPQywgdHJ1ZSk7CisKKwlpbnRlbF9idWZfZGVzdHJveShzcmMpOworCWludGVsX2J1Zl9k ZXN0cm95KG1pZCk7CisJaW50ZWxfYnVmX2Rlc3Ryb3koZHN0KTsKKwlpbnRlbF9iYl9kZXN0cm95 KGliYik7Cit9CisKK3N0YXRpYyB2b2lkIGRlc3Ryb3lfYmIoc3RydWN0IGJ1Zl9vcHMgKmJvcHMp CiB7Ci0JdWludDMyX3QgbWFzazsKLQlib29sIGhhc182NGJfcmVsb2M7Ci0JdWludDY0X3QgYWRk cmVzczsKLQotCWhhc182NGJfcmVsb2MgPSBpYmItPmdlbiA+PSA4OwotCi0JaWYgKChzcmMtPnRp bGluZyB8IGRzdC0+dGlsaW5nKSA+PSBJOTE1X1RJTElOR19ZKSB7Ci0JCWludGVsX2JiX291dChp YmIsIE1JX0xPQURfUkVHSVNURVJfSU1NKTsKLQkJaW50ZWxfYmJfb3V0KGliYiwgQkNTX1NXQ1RS TCk7Ci0KLQkJbWFzayA9IChCQ1NfU1JDX1kgfCBCQ1NfRFNUX1kpIDw8IDE2OwotCQlpZiAoc3Jj LT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWSkKLQkJCW1hc2sgfD0gQkNTX1NSQ19ZOwotCQlpZiAo ZHN0LT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWSkKLQkJCW1hc2sgfD0gQkNTX0RTVF9ZOwotCQlp bnRlbF9iYl9vdXQoaWJiLCBtYXNrKTsKKwlpbnQgaTkxNSA9IGJ1Zl9vcHNfZ2V0X2ZkKGJvcHMp OworCXN0cnVjdCBpbnRlbF9iYiAqaWJiOworCXN0cnVjdCBpbnRlbF9idWYgKnNyYywgKm1pZCwg KmRzdDsKKwl1aW50MzJfdCBvZmZzZXQ7CisJY29uc3QgdWludDMyX3Qgd2lkdGggPSA1MTI7CisJ Y29uc3QgdWludDMyX3QgaGVpZ2h0ID0gNTEyOworCisJaWJiID0gaW50ZWxfYmJfY3JlYXRlKGk5 MTUsIFBBR0VfU0laRSk7CisJaWYgKGRlYnVnX2JiKQorCQlpbnRlbF9iYl9zZXRfZGVidWcoaWJi LCB0cnVlKTsKKworCXNyYyA9IGludGVsX2J1Zl9jcmVhdGUoYm9wcywgd2lkdGgsIGhlaWdodCwg MzIsIDAsCisJCQkgICAgICAgSTkxNV9USUxJTkdfTk9ORSwgSTkxNV9DT01QUkVTU0lPTl9OT05F KTsKKwltaWQgPSBpbnRlbF9idWZfY3JlYXRlKGJvcHMsIHdpZHRoLCBoZWlnaHQsIDMyLCAwLAor CQkJICAgICAgIEk5MTVfVElMSU5HX05PTkUsIEk5MTVfQ09NUFJFU1NJT05fTk9ORSk7CisJZHN0 ID0gaW50ZWxfYnVmX2NyZWF0ZShib3BzLCB3aWR0aCwgaGVpZ2h0LCAzMiwgMCwKKwkJCSAgICAg ICBJOTE1X1RJTElOR19OT05FLCBJOTE1X0NPTVBSRVNTSU9OX05PTkUpOworCisJaW50ZWxfYmJf YWRkX2ludGVsX2J1ZihpYmIsIHNyYywgZmFsc2UpOworCWludGVsX2JiX2FkZF9pbnRlbF9idWYo aWJiLCBtaWQsIHRydWUpOworCWludGVsX2JiX2FkZF9pbnRlbF9idWYoaWJiLCBkc3QsIHRydWUp OworCisJb2Zmc2V0ID0gaW50ZWxfYmJfZW1pdF9iYmUoaWJiKTsKKwlpbnRlbF9iYl9leGVjKGli Yiwgb2Zmc2V0LAorCQkgICAgICBJOTE1X0VYRUNfREVGQVVMVCB8IEk5MTVfRVhFQ19OT19SRUxP QywgdHJ1ZSk7CisKKwkvKiBDaGVjayBkZXN0cm95IHdpbGwgZGV0YWNoIGludGVsX2J1ZnMgKi8K KwlpbnRlbF9iYl9kZXN0cm95KGliYik7CisJaWd0X2Fzc2VydChzcmMtPmFkZHIub2Zmc2V0ID09 IElOVEVMX0JVRl9JTlZBTElEX0FERFJFU1MpOworCWlndF9hc3NlcnQoc3JjLT5pYmIgPT0gTlVM TCk7CisJaWd0X2Fzc2VydChtaWQtPmFkZHIub2Zmc2V0ID09IElOVEVMX0JVRl9JTlZBTElEX0FE RFJFU1MpOworCWlndF9hc3NlcnQobWlkLT5pYmIgPT0gTlVMTCk7CisJaWd0X2Fzc2VydChkc3Qt PmFkZHIub2Zmc2V0ID09IElOVEVMX0JVRl9JTlZBTElEX0FERFJFU1MpOworCWlndF9hc3NlcnQo ZHN0LT5pYmIgPT0gTlVMTCk7CisKKwlpYmIgPSBpbnRlbF9iYl9jcmVhdGUoaTkxNSwgUEFHRV9T SVpFKTsKKwlpZiAoZGVidWdfYmIpCisJCWludGVsX2JiX3NldF9kZWJ1ZyhpYmIsIHRydWUpOwor CisJaW50ZWxfYmJfYWRkX2ludGVsX2J1ZihpYmIsIHNyYywgZmFsc2UpOworCW9mZnNldCA9IGlu dGVsX2JiX2VtaXRfYmJlKGliYik7CisJaW50ZWxfYmJfZXhlYyhpYmIsIG9mZnNldCwKKwkJICAg ICAgSTkxNV9FWEVDX0RFRkFVTFQgfCBJOTE1X0VYRUNfTk9fUkVMT0MsIHRydWUpOworCisJaW50 ZWxfYmJfZGVzdHJveShpYmIpOworCWludGVsX2J1Zl9kZXN0cm95KHNyYyk7CisJaW50ZWxfYnVm X2Rlc3Ryb3kobWlkKTsKKwlpbnRlbF9idWZfZGVzdHJveShkc3QpOworfQorCitzdGF0aWMgdm9p ZCBvYmplY3RfcmVsb2Moc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIGVudW0gb2JqX2NhY2hlX29wcyBj YWNoZV9vcCkKK3sKKwlpbnQgaTkxNSA9IGJ1Zl9vcHNfZ2V0X2ZkKGJvcHMpOworCXN0cnVjdCBp bnRlbF9iYiAqaWJiOworCXVpbnQzMl90IGgxLCBoMjsKKwl1aW50NjRfdCBwb2ZmX2JiLCBwb2Zm X2gxLCBwb2ZmX2gyOworCXVpbnQ2NF90IHBvZmYyX2JiLCBwb2ZmMl9oMSwgcG9mZjJfaDI7CisJ dWludDY0X3QgZmxhZ3MgPSAwOworCXVpbnQ2NF90IHNoaWZ0ID0gY2FjaGVfb3AgPT0gUFVSR0Vf Q0FDSEUgPyAweDIwMDAgOiAweDA7CisJYm9vbCBwdXJnZV9jYWNoZSA9IGNhY2hlX29wID09IFBV UkdFX0NBQ0hFID8gdHJ1ZSA6IGZhbHNlOworCisJaWJiID0gaW50ZWxfYmJfY3JlYXRlX3dpdGhf cmVsb2NzKGk5MTUsIFBBR0VfU0laRSk7CisJaWYgKGRlYnVnX2JiKQorCQlpbnRlbF9iYl9zZXRf ZGVidWcoaWJiLCB0cnVlKTsKKworCWgxID0gZ2VtX2NyZWF0ZShpOTE1LCBQQUdFX1NJWkUpOwor CWgyID0gZ2VtX2NyZWF0ZShpOTE1LCBQQUdFX1NJWkUpOworCisJLyogaW50ZWxfYmJfY3JlYXRl IGFkZHMgYmIgaGFuZGxlIHNvIGl0IGhhcyAwIGZvciByZWxvY3MgKi8KKwlwb2ZmX2JiID0gaW50 ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoaWJiLCBpYmItPmhhbmRsZSk7CisJaWd0X2Fzc2VydChw b2ZmX2JiID09IDApOworCisJLyogQmVmb3JlIGFkZGluZyB0byBpbnRlbF9iYiBpdCBzaG91bGQg cmV0dXJuIElOVkFMSURfQUREUkVTUyAqLworCXBvZmZfaDEgPSBpbnRlbF9iYl9nZXRfb2JqZWN0 X29mZnNldChpYmIsIGgxKTsKKwlwb2ZmX2gyID0gaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQo aWJiLCBoMik7CisJaWd0X2RlYnVnKCJbMV0gcG9mZl9oMTogJWx4XG4iLCAobG9uZykgcG9mZl9o MSk7CisJaWd0X2RlYnVnKCJbMV0gcG9mZl9oMjogJWx4XG4iLCAobG9uZykgcG9mZl9oMik7CisJ aWd0X2Fzc2VydChwb2ZmX2gxID09IElOVEVMX0JVRl9JTlZBTElEX0FERFJFU1MpOworCWlndF9h c3NlcnQocG9mZl9oMiA9PSBJTlRFTF9CVUZfSU5WQUxJRF9BRERSRVNTKTsKKworCWludGVsX2Ji X2FkZF9vYmplY3QoaWJiLCBoMSwgUEFHRV9TSVpFLCBwb2ZmX2gxLCAwLCB0cnVlKTsKKwlpbnRl bF9iYl9hZGRfb2JqZWN0KGliYiwgaDIsIFBBR0VfU0laRSwgcG9mZl9oMiwgMHgyMDAwLCB0cnVl KTsKKworCS8qCisJICogT2JqZWN0cyB3ZXJlIGFkZGVkIHRvIGJiLCB3ZSBleHBlY3QgaW5pdGlh bCBhZGRyZXNzZXMgYXJlIHplcm9lZAorCSAqIGZvciByZWxvY3MuCisJICovCisJcG9mZl9oMSA9 IGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KGliYiwgaDEpOworCXBvZmZfaDIgPSBpbnRlbF9i Yl9nZXRfb2JqZWN0X29mZnNldChpYmIsIGgyKTsKKwlpZ3RfYXNzZXJ0KHBvZmZfaDEgPT0gMCk7 CisJaWd0X2Fzc2VydChwb2ZmX2gyID09IDApOworCisJaW50ZWxfYmJfZW1pdF9iYmUoaWJiKTsK KwlpbnRlbF9iYl9leGVjKGliYiwgaW50ZWxfYmJfb2Zmc2V0KGliYiksIGZsYWdzLCBmYWxzZSk7 CisKKwlwb2ZmMl9iYiA9IGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KGliYiwgaWJiLT5oYW5k bGUpOworCXBvZmYyX2gxID0gaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoaWJiLCBoMSk7CisJ cG9mZjJfaDIgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChpYmIsIGgyKTsKKwlpZ3RfZGVi dWcoIlsyXSBwb2ZmMl9oMTogJWx4XG4iLCAobG9uZykgcG9mZjJfaDEpOworCWlndF9kZWJ1Zygi WzJdIHBvZmYyX2gyOiAlbHhcbiIsIChsb25nKSBwb2ZmMl9oMik7CisJLyogU29tZSBhZGRyZXNz ZXMgd29uJ3QgYmUgMCAqLworCWlndF9hc3NlcnQocG9mZjJfYmIgfCBwb2ZmMl9oMSB8IHBvZmYy X2gyKTsKKworCWludGVsX2JiX3Jlc2V0KGliYiwgcHVyZ2VfY2FjaGUpOworCisJaWYgKHB1cmdl X2NhY2hlKSB7CisJCWludGVsX2JiX2FkZF9vYmplY3QoaWJiLCBoMSwgUEFHRV9TSVpFLCBwb2Zm Ml9oMSwgMCwgdHJ1ZSk7CisJCWludGVsX2JiX2FkZF9vYmplY3QoaWJiLCBoMiwgUEFHRV9TSVpF LCBwb2ZmMl9oMiArIHNoaWZ0LCAweDIwMDAsIHRydWUpOwogCX0KIAotCWludGVsX2JiX291dChp YmIsCi0JCSAgICAgWFlfU1JDX0NPUFlfQkxUX0NNRCB8Ci0JCSAgICAgWFlfU1JDX0NPUFlfQkxU X1dSSVRFX0FMUEhBIHwKLQkJICAgICBYWV9TUkNfQ09QWV9CTFRfV1JJVEVfUkdCIHwKLQkJICAg ICAoNiArIDIgKiBoYXNfNjRiX3JlbG9jKSk7Ci0JaW50ZWxfYmJfb3V0KGliYiwgMyA8PCAyNCB8 IDB4Y2MgPDwgMTYgfCBkc3QtPnN1cmZhY2VbMF0uc3RyaWRlKTsKLQlpbnRlbF9iYl9vdXQoaWJi LCAwKTsKLQlpbnRlbF9iYl9vdXQoaWJiLCBpbnRlbF9idWZfaGVpZ2h0KGRzdCkgPDwgMTYgfCBp bnRlbF9idWZfd2lkdGgoZHN0KSk7CisJcG9mZl9iYiA9IGludGVsX2JiX2dldF9vYmplY3Rfb2Zm c2V0KGliYiwgaWJiLT5oYW5kbGUpOworCXBvZmZfaDEgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29m ZnNldChpYmIsIGgxKTsKKwlwb2ZmX2gyID0gaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoaWJi LCBoMik7CisJaWd0X2RlYnVnKCJbM10gcG9mZl9oMTogJWx4XG4iLCAobG9uZykgcG9mZl9oMSk7 CisJaWd0X2RlYnVnKCJbM10gcG9mZl9oMjogJWx4XG4iLCAobG9uZykgcG9mZl9oMik7CisJaWd0 X2RlYnVnKCJbM10gcG9mZjJfaDE6ICVseFxuIiwgKGxvbmcpIHBvZmYyX2gxKTsKKwlpZ3RfZGVi dWcoIlszXSBwb2ZmMl9oMjogJWx4ICsgc2hpZnQgKCVseClcbiIsIChsb25nKSBwb2ZmMl9oMiwK KwkJIChsb25nKSBzaGlmdCk7CisJaWd0X2Fzc2VydChwb2ZmX2gxID09IHBvZmYyX2gxKTsKKwlp Z3RfYXNzZXJ0KHBvZmZfaDIgPT0gcG9mZjJfaDIgKyBzaGlmdCk7CisJaW50ZWxfYmJfZW1pdF9i YmUoaWJiKTsKKwlpbnRlbF9iYl9leGVjKGliYiwgaW50ZWxfYmJfb2Zmc2V0KGliYiksIGZsYWdz LCBmYWxzZSk7CiAKLQlhZGRyZXNzID0gaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoaWJiLCBk c3QtPmhhbmRsZSk7Ci0JaW50ZWxfYmJfZW1pdF9yZWxvY19mZW5jZWQoaWJiLCBkc3QtPmhhbmRs ZSwKLQkJCQkgICBJOTE1X0dFTV9ET01BSU5fUkVOREVSLAotCQkJCSAgIEk5MTVfR0VNX0RPTUFJ Tl9SRU5ERVIsCi0JCQkJICAgMCwgYWRkcmVzcyk7Ci0JaW50ZWxfYmJfb3V0KGliYiwgMCk7Ci0J aW50ZWxfYmJfb3V0KGliYiwgc3JjLT5zdXJmYWNlWzBdLnN0cmlkZSk7CisJZ2VtX2Nsb3NlKGk5 MTUsIGgxKTsKKwlnZW1fY2xvc2UoaTkxNSwgaDIpOworCWludGVsX2JiX2Rlc3Ryb3koaWJiKTsK K30KIAotCWFkZHJlc3MgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChpYmIsIHNyYy0+aGFu ZGxlKTsKLQlpbnRlbF9iYl9lbWl0X3JlbG9jX2ZlbmNlZChpYmIsIHNyYy0+aGFuZGxlLAotCQkJ CSAgIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIsIDAsCi0JCQkJICAgMCwgYWRkcmVzcyk7CisjZGVm aW5lIFdJVEhJTl9SQU5HRShvZmZzZXQsIHN0YXJ0LCBlbmQpIFwKKwkoREVDQU5PTklDQUwob2Zm c2V0KSA+PSBzdGFydCAmJiBERUNBTk9OSUNBTChvZmZzZXQpIDw9IGVuZCkKK3N0YXRpYyB2b2lk IG9iamVjdF9ub3JlbG9jKHN0cnVjdCBidWZfb3BzICpib3BzLCBlbnVtIG9ial9jYWNoZV9vcHMg Y2FjaGVfb3AsCisJCQkgICB1aW50OF90IGFsbG9jYXRvcl90eXBlKQoreworCWludCBpOTE1ID0g YnVmX29wc19nZXRfZmQoYm9wcyk7CisJc3RydWN0IGludGVsX2JiICppYmI7CisJdWludDMyX3Qg aDEsIGgyOworCXVpbnQ2NF90IHN0YXJ0LCBlbmQ7CisJdWludDY0X3QgcG9mZl9iYiwgcG9mZl9o MSwgcG9mZl9oMjsKKwl1aW50NjRfdCBwb2ZmMl9iYiwgcG9mZjJfaDEsIHBvZmYyX2gyOworCXVp bnQ2NF90IGZsYWdzID0gMDsKKwlib29sIHB1cmdlX2NhY2hlID0gY2FjaGVfb3AgPT0gUFVSR0Vf Q0FDSEUgPyB0cnVlIDogZmFsc2U7CiAKLQlpZiAoKHNyYy0+dGlsaW5nIHwgZHN0LT50aWxpbmcp ID49IEk5MTVfVElMSU5HX1kpIHsKLQkJaWd0X2Fzc2VydChpYmItPmdlbiA+PSA2KTsKLQkJaW50 ZWxfYmJfb3V0KGliYiwgTUlfRkxVU0hfRFcgfCAyKTsKLQkJaW50ZWxfYmJfb3V0KGliYiwgMCk7 Ci0JCWludGVsX2JiX291dChpYmIsIDApOwotCQlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKKwlpZ3Rf cmVxdWlyZShnZW1fdXNlc19mdWxsX3BwZ3R0KGk5MTUpKTsKKworCWliYiA9IGludGVsX2JiX2Ny ZWF0ZV93aXRoX2FsbG9jYXRvcihpOTE1LCAwLCBQQUdFX1NJWkUsIGFsbG9jYXRvcl90eXBlKTsK KwlpZiAoZGVidWdfYmIpCisJCWludGVsX2JiX3NldF9kZWJ1ZyhpYmIsIHRydWUpOworCisJaDEg PSBnZW1fY3JlYXRlKGk5MTUsIFBBR0VfU0laRSk7CisJaDIgPSBnZW1fY3JlYXRlKGk5MTUsIFBB R0VfU0laRSk7CisKKwlpbnRlbF9hbGxvY2F0b3JfZ2V0X2FkZHJlc3NfcmFuZ2UoaWJiLT5hbGxv Y2F0b3JfaGFuZGxlLAorCQkJCQkgICZzdGFydCwgJmVuZCk7CisJcG9mZl9iYiA9IGludGVsX2Ji X2dldF9vYmplY3Rfb2Zmc2V0KGliYiwgaWJiLT5oYW5kbGUpOworCWlndF9kZWJ1ZygiWzFdIGJi IHByZXN1bWVkIG9mZnNldDogMHglIiBQUkl4NjQKKwkJICAiLCBzdGFydDogJSIgUFJJeDY0ICIs IGVuZDogJSIgUFJJeDY0ICJcbiIsCisJCSAgcG9mZl9iYiwgc3RhcnQsIGVuZCk7CisJaWd0X2Fz c2VydChXSVRISU5fUkFOR0UocG9mZl9iYiwgc3RhcnQsIGVuZCkpOworCisJLyogQmVmb3JlIGFk ZGluZyB0byBpbnRlbF9iYiBpdCBzaG91bGQgcmV0dXJuIElOVkFMSURfQUREUkVTUyAqLworCXBv ZmZfaDEgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChpYmIsIGgxKTsKKwlwb2ZmX2gyID0g aW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoaWJiLCBoMik7CisJaWd0X2RlYnVnKCJbMV0gaDEg cHJlc3VtZWQgb2Zmc2V0OiAweCUiUFJJeDY0IlxuIiwgcG9mZl9oMSk7CisJaWd0X2RlYnVnKCJb MV0gaDIgcHJlc3VtZWQgb2Zmc2V0OiAweCUiUFJJeDY0IlxuIiwgcG9mZl9oMik7CisJaWd0X2Fz c2VydChwb2ZmX2gxID09IElOVEVMX0JVRl9JTlZBTElEX0FERFJFU1MpOworCWlndF9hc3NlcnQo cG9mZl9oMiA9PSBJTlRFTF9CVUZfSU5WQUxJRF9BRERSRVNTKTsKKworCWludGVsX2JiX2FkZF9v YmplY3QoaWJiLCBoMSwgUEFHRV9TSVpFLCBwb2ZmX2gxLCAwLCB0cnVlKTsKKwlpbnRlbF9iYl9h ZGRfb2JqZWN0KGliYiwgaDIsIFBBR0VfU0laRSwgcG9mZl9oMiwgMCwgdHJ1ZSk7CisKKwlwb2Zm X2gxID0gaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoaWJiLCBoMSk7CisJcG9mZl9oMiA9IGlu dGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KGliYiwgaDIpOworCWlndF9kZWJ1ZygiWzJdIGJiIHBy ZXN1bWVkIG9mZnNldDogMHglIlBSSXg2NCJcbiIsIHBvZmZfYmIpOworCWlndF9kZWJ1ZygiWzJd IGgxIHByZXN1bWVkIG9mZnNldDogMHglIlBSSXg2NCJcbiIsIHBvZmZfaDEpOworCWlndF9kZWJ1 ZygiWzJdIGgyIHByZXN1bWVkIG9mZnNldDogMHglIlBSSXg2NCJcbiIsIHBvZmZfaDIpOworCWln dF9hc3NlcnQoV0lUSElOX1JBTkdFKHBvZmZfYmIsIHN0YXJ0LCBlbmQpKTsKKwlpZ3RfYXNzZXJ0 KFdJVEhJTl9SQU5HRShwb2ZmX2gxLCBzdGFydCwgZW5kKSk7CisJaWd0X2Fzc2VydChXSVRISU5f UkFOR0UocG9mZl9oMiwgc3RhcnQsIGVuZCkpOwogCi0JCWludGVsX2JiX291dChpYmIsIE1JX0xP QURfUkVHSVNURVJfSU1NKTsKLQkJaW50ZWxfYmJfb3V0KGliYiwgQkNTX1NXQ1RSTCk7Ci0JCWlu dGVsX2JiX291dChpYmIsIChCQ1NfU1JDX1kgfCBCQ1NfRFNUX1kpIDw8IDE2KTsKKwlpbnRlbF9i Yl9lbWl0X2JiZShpYmIpOworCWlndF9kZWJ1ZygiZXhlYyBmbGFnczogJSIgUFJJWDY0ICJcbiIs IGZsYWdzKTsKKwlpbnRlbF9iYl9leGVjKGliYiwgaW50ZWxfYmJfb2Zmc2V0KGliYiksIGZsYWdz LCBmYWxzZSk7CisKKwlwb2ZmMl9iYiA9IGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KGliYiwg aWJiLT5oYW5kbGUpOworCXBvZmYyX2gxID0gaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoaWJi LCBoMSk7CisJcG9mZjJfaDIgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChpYmIsIGgyKTsK KwlpZ3RfZGVidWcoIlszXSBiYiBwcmVzdW1lZCBvZmZzZXQ6IDB4JSJQUkl4NjQiXG4iLCBwb2Zm Ml9iYik7CisJaWd0X2RlYnVnKCJbM10gaDEgcHJlc3VtZWQgb2Zmc2V0OiAweCUiUFJJeDY0Ilxu IiwgcG9mZjJfaDEpOworCWlndF9kZWJ1ZygiWzNdIGgyIHByZXN1bWVkIG9mZnNldDogMHglIlBS SXg2NCJcbiIsIHBvZmYyX2gyKTsKKwlpZ3RfYXNzZXJ0KHBvZmZfaDEgPT0gcG9mZjJfaDEpOwor CWlndF9hc3NlcnQocG9mZl9oMiA9PSBwb2ZmMl9oMik7CisKKwlpZ3RfZGVidWcoInB1cmdlOiAl ZFxuIiwgcHVyZ2VfY2FjaGUpOworCWludGVsX2JiX3Jlc2V0KGliYiwgcHVyZ2VfY2FjaGUpOwor CisJLyoKKwkgKiBDaGVjayBpZiBpbnRlbC1iYiBjYWNoZSB3YXMgcHVyZ2VkOgorCSAqIGEpIHJl dHJpZXZlIHNhbWUgYWRkcmVzcyBmcm9tIGFsbG9jYXRvciAod29ya3MgZm9yIHNpbXBsZSwgbm90 IHJhbmRvbSkKKwkgKiBiKSBwYXNzaW5nIHByZXZpb3VzIGFkZHJlc3MgZW50ZXJzIGFsbG9jYXRv ciA8LT4gaW50ZWxfYmIgY2FjaGUKKwkgKiAgICBjb25zaXN0ZW5jeSBjaGVjayBwYXRoLgorCSAq LworCWlmIChwdXJnZV9jYWNoZSkgeworCQlpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgaDEsIFBB R0VfU0laRSwKKwkJCQkgICAgSU5URUxfQlVGX0lOVkFMSURfQUREUkVTUywgMCwgdHJ1ZSk7CisJ CWludGVsX2JiX2FkZF9vYmplY3QoaWJiLCBoMiwgUEFHRV9TSVpFLCBwb2ZmMl9oMiwgMCwgdHJ1 ZSk7CisJfSBlbHNlIHsKKwkJLyogU2VlIGNvbnNpc3RlbmN5IGNoZWNrIHdpbGwgbm90IGZhaWwg Ki8KKwkJaW50ZWxfYmJfYWRkX29iamVjdChpYmIsIGgxLCBQQUdFX1NJWkUsIHBvZmYyX2gxLCAw LCB0cnVlKTsKKwkJaW50ZWxfYmJfYWRkX29iamVjdChpYmIsIGgyLCBQQUdFX1NJWkUsIHBvZmYy X2gyLCAwLCB0cnVlKTsKIAl9CisKKwlwb2ZmX2gxID0gaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZz ZXQoaWJiLCBoMSk7CisJcG9mZl9oMiA9IGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KGliYiwg aDIpOworCWlndF9kZWJ1ZygiWzRdIGJiIHByZXN1bWVkIG9mZnNldDogMHglIlBSSXg2NCJcbiIs IHBvZmZfYmIpOworCWlndF9kZWJ1ZygiWzRdIGgxIHByZXN1bWVkIG9mZnNldDogMHglIlBSSXg2 NCJcbiIsIHBvZmZfaDEpOworCWlndF9kZWJ1ZygiWzRdIGgyIHByZXN1bWVkIG9mZnNldDogMHgl IlBSSXg2NCJcbiIsIHBvZmZfaDIpOworCisJLyogRm9yIHNpbXBsZSBhbGxvY2F0b3IgYW5kIHB1 cmdlPWNhY2hlIHdlIG11c3QgaGF2ZSBzYW1lIGFkZHJlc3NlcyAqLworCWlmIChhbGxvY2F0b3Jf dHlwZSA9PSBJTlRFTF9BTExPQ0FUT1JfU0lNUExFIHx8ICFwdXJnZV9jYWNoZSkgeworCQlpZ3Rf YXNzZXJ0KHBvZmZfaDEgPT0gcG9mZjJfaDEpOworCQlpZ3RfYXNzZXJ0KHBvZmZfaDIgPT0gcG9m ZjJfaDIpOworCX0KKworCWdlbV9jbG9zZShpOTE1LCBoMSk7CisJZ2VtX2Nsb3NlKGk5MTUsIGgy KTsKKwlpbnRlbF9iYl9kZXN0cm95KGliYik7Cit9CitzdGF0aWMgdm9pZCBfX2VtaXRfYmxpdChz dHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCSBzdHJ1Y3QgaW50ZWxfYnVmICpzcmMsIHN0cnVjdCBp bnRlbF9idWYgKmRzdCkKK3sKKwlpbnRlbF9iYl9lbWl0X2JsdF9jb3B5KGliYiwKKwkJCSAgICAg ICBzcmMsIDAsIDAsIHNyYy0+c3VyZmFjZVswXS5zdHJpZGUsCisJCQkgICAgICAgZHN0LCAwLCAw LCBkc3QtPnN1cmZhY2VbMF0uc3RyaWRlLAorCQkJICAgICAgIGludGVsX2J1Zl93aWR0aChkc3Qp LAorCQkJICAgICAgIGludGVsX2J1Zl9oZWlnaHQoZHN0KSwKKwkJCSAgICAgICBkc3QtPmJwcCk7 CiB9CiAKIHN0YXRpYyB2b2lkIGJsaXQoc3RydWN0IGJ1Zl9vcHMgKmJvcHMsCiAJCSBlbnVtIHJl bG9jX29iamVjdHMgcmVsb2Nfb2JqLAotCQkgZW51bSBvYmpfY2FjaGVfb3BzIGNhY2hlX29wKQor CQkgZW51bSBvYmpfY2FjaGVfb3BzIGNhY2hlX29wLAorCQkgdWludDhfdCBhbGxvY2F0b3JfdHlw ZSkKIHsKIAlpbnQgaTkxNSA9IGJ1Zl9vcHNfZ2V0X2ZkKGJvcHMpOwogCXN0cnVjdCBpbnRlbF9i YiAqaWJiOwpAQCAtNDEzLDYgKzY3MCw5IEBAIHN0YXRpYyB2b2lkIGJsaXQoc3RydWN0IGJ1Zl9v cHMgKmJvcHMsCiAJYm9vbCBwdXJnZV9jYWNoZSA9IGNhY2hlX29wID09IFBVUkdFX0NBQ0hFID8g dHJ1ZSA6IGZhbHNlOwogCWJvb2wgZG9fcmVsb2NzID0gcmVsb2Nfb2JqID09IFJFTE9DID8gdHJ1 ZSA6IGZhbHNlOwogCisJaWYgKCFkb19yZWxvY3MpCisJCWlndF9yZXF1aXJlKGdlbV91c2VzX2Z1 bGxfcHBndHQoaTkxNSkpOworCiAJc3JjID0gY3JlYXRlX2J1Zihib3BzLCBXSURUSCwgSEVJR0hU LCBDT0xPUl9DQyk7CiAJZHN0ID0gY3JlYXRlX2J1Zihib3BzLCBXSURUSCwgSEVJR0hULCBDT0xP Ul8wMCk7CiAKQEAgLTQyNCwzOCArNjg0LDMzIEBAIHN0YXRpYyB2b2lkIGJsaXQoc3RydWN0IGJ1 Zl9vcHMgKmJvcHMsCiAJaWYgKGRvX3JlbG9jcykgewogCQlpYmIgPSBpbnRlbF9iYl9jcmVhdGVf d2l0aF9yZWxvY3MoaTkxNSwgUEFHRV9TSVpFKTsKIAl9IGVsc2UgewotCQlpYmIgPSBpbnRlbF9i Yl9jcmVhdGUoaTkxNSwgUEFHRV9TSVpFKTsKKwkJaWJiID0gaW50ZWxfYmJfY3JlYXRlX3dpdGhf YWxsb2NhdG9yKGk5MTUsIDAsIFBBR0VfU0laRSwKKwkJCQkJCSAgICAgYWxsb2NhdG9yX3R5cGUp OwogCQlmbGFncyB8PSBJOTE1X0VYRUNfTk9fUkVMT0M7CiAJfQogCi0JaWYgKGliYi0+Z2VuID49 IDYpCi0JCWZsYWdzIHw9IEk5MTVfRVhFQ19CTFQ7Ci0KIAlpZiAoZGVidWdfYmIpCiAJCWludGVs X2JiX3NldF9kZWJ1ZyhpYmIsIHRydWUpOwogCi0KLQlpbnRlbF9iYl9hZGRfaW50ZWxfYnVmKGli Yiwgc3JjLCBmYWxzZSk7Ci0JaW50ZWxfYmJfYWRkX2ludGVsX2J1ZihpYmIsIGRzdCwgdHJ1ZSk7 Ci0KIAlfX2VtaXRfYmxpdChpYmIsIHNyYywgZHN0KTsKIAogCS8qIFdlIGV4cGVjdCBpbml0aWFs IGFkZHJlc3NlcyBhcmUgemVyb2VkIGZvciByZWxvY3MgKi8KLQlwb2ZmX2JiID0gaW50ZWxfYmJf Z2V0X29iamVjdF9vZmZzZXQoaWJiLCBpYmItPmhhbmRsZSk7Ci0JcG9mZl9zcmMgPSBpbnRlbF9i Yl9nZXRfb2JqZWN0X29mZnNldChpYmIsIHNyYy0+aGFuZGxlKTsKLQlwb2ZmX2RzdCA9IGludGVs X2JiX2dldF9vYmplY3Rfb2Zmc2V0KGliYiwgZHN0LT5oYW5kbGUpOwotCWlndF9kZWJ1ZygiYmIg IHByZXN1bWVkIG9mZnNldDogMHglIlBSSXg2NCJcbiIsIHBvZmZfYmIpOwotCWlndF9kZWJ1Zygi c3JjIHByZXN1bWVkIG9mZnNldDogMHglIlBSSXg2NCJcbiIsIHBvZmZfc3JjKTsKLQlpZ3RfZGVi dWcoImRzdCBwcmVzdW1lZCBvZmZzZXQ6IDB4JSJQUkl4NjQiXG4iLCBwb2ZmX2RzdCk7CiAJaWYg KHJlbG9jX29iaiA9PSBSRUxPQykgeworCQlwb2ZmX2JiID0gaW50ZWxfYmJfZ2V0X29iamVjdF9v ZmZzZXQoaWJiLCBpYmItPmhhbmRsZSk7CisJCXBvZmZfc3JjID0gaW50ZWxfYmJfZ2V0X29iamVj dF9vZmZzZXQoaWJiLCBzcmMtPmhhbmRsZSk7CisJCXBvZmZfZHN0ID0gaW50ZWxfYmJfZ2V0X29i amVjdF9vZmZzZXQoaWJiLCBkc3QtPmhhbmRsZSk7CisJCWlndF9kZWJ1ZygiYmIgIHByZXN1bWVk IG9mZnNldDogMHglIlBSSXg2NCJcbiIsIHBvZmZfYmIpOworCQlpZ3RfZGVidWcoInNyYyBwcmVz dW1lZCBvZmZzZXQ6IDB4JSJQUkl4NjQiXG4iLCBwb2ZmX3NyYyk7CisJCWlndF9kZWJ1ZygiZHN0 IHByZXN1bWVkIG9mZnNldDogMHglIlBSSXg2NCJcbiIsIHBvZmZfZHN0KTsKIAkJaWd0X2Fzc2Vy dChwb2ZmX2JiID09IDApOwogCQlpZ3RfYXNzZXJ0KHBvZmZfc3JjID09IDApOwogCQlpZ3RfYXNz ZXJ0KHBvZmZfZHN0ID09IDApOwogCX0KIAogCWludGVsX2JiX2VtaXRfYmJlKGliYik7Ci0JaWd0 X2RlYnVnKCJleGVjIGZsYWdzOiAlIiBQUklYNjQgIlxuIiwgZmxhZ3MpOwotCWludGVsX2JiX2V4 ZWMoaWJiLCBpbnRlbF9iYl9vZmZzZXQoaWJiKSwgZmxhZ3MsIHRydWUpOworCWludGVsX2JiX2Zs dXNoX2JsaXQoaWJiKTsKKwlpbnRlbF9iYl9zeW5jKGliYik7CisKIAljaGVja19idWYoZHN0LCBD T0xPUl9DQyk7CiAKIAlwb2ZmX2JiID0gaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoaWJiLCBp YmItPmhhbmRsZSk7CkBAIC00NjQsMTUgKzcxOSwzMCBAQCBzdGF0aWMgdm9pZCBibGl0KHN0cnVj dCBidWZfb3BzICpib3BzLAogCiAJaW50ZWxfYmJfcmVzZXQoaWJiLCBwdXJnZV9jYWNoZSk7CiAK KwkvKiBGb3IgcHVyZ2Ugd2UgbG9zdCBvZmZzZXRzIGFuZCBidWZzIHdlcmUgcmVtb3ZlZCBmcm9t IHRyYWNraW5nIGxpc3QgKi8KKwlpZiAocHVyZ2VfY2FjaGUpIHsKKwkJc3JjLT5hZGRyLm9mZnNl dCA9IHBvZmZfc3JjOworCQlkc3QtPmFkZHIub2Zmc2V0ID0gcG9mZl9kc3Q7CisJfQorCisJLyog QWRkIGJ1ZmZlcnMgYWdhaW4sIHNob3VsZCB3b3JrIGJvdGggZm9yIHB1cmdlIGFuZCBrZWVwIGNh Y2hlICovCisJaW50ZWxfYmJfYWRkX2ludGVsX2J1ZihpYmIsIHNyYywgZmFsc2UpOworCWludGVs X2JiX2FkZF9pbnRlbF9idWYoaWJiLCBkc3QsIHRydWUpOworCisJaWd0X2Fzc2VydF9mKHBvZmZf c3JjID09IHNyYy0+YWRkci5vZmZzZXQsCisJCSAgICAgInByZXYgc3JjIGFkZHI6ICUiIFBSSXg2 NCAiIDw+IHNyYyBhZGRyICUiIFBSSXg2NCAiXG4iLAorCQkgICAgIHBvZmZfc3JjLCBzcmMtPmFk ZHIub2Zmc2V0KTsKKwlpZ3RfYXNzZXJ0X2YocG9mZl9kc3QgPT0gZHN0LT5hZGRyLm9mZnNldCwK KwkJICAgICAicHJldiBkc3QgYWRkcjogJSIgUFJJeDY0ICIgPD4gZHN0IGFkZHIgJSIgUFJJeDY0 ICJcbiIsCisJCSAgICAgcG9mZl9kc3QsIGRzdC0+YWRkci5vZmZzZXQpOworCiAJZmlsbF9idWYo c3JjLCBDT0xPUl83Nyk7CiAJZmlsbF9idWYoZHN0LCBDT0xPUl8wMCk7CiAKLQlpZiAocHVyZ2Vf Y2FjaGUgJiYgIWRvX3JlbG9jcykgewotCQlpbnRlbF9iYl9hZGRfaW50ZWxfYnVmKGliYiwgc3Jj LCBmYWxzZSk7Ci0JCWludGVsX2JiX2FkZF9pbnRlbF9idWYoaWJiLCBkc3QsIHRydWUpOwotCX0K LQogCV9fZW1pdF9ibGl0KGliYiwgc3JjLCBkc3QpOworCWludGVsX2JiX2ZsdXNoX2JsaXQoaWJi KTsKKwlpbnRlbF9iYl9zeW5jKGliYik7CisJY2hlY2tfYnVmKGRzdCwgQ09MT1JfNzcpOwogCiAJ cG9mZjJfYmIgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChpYmIsIGliYi0+aGFuZGxlKTsK IAlwb2ZmMl9zcmMgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChpYmIsIHNyYy0+aGFuZGxl KTsKQEAgLTQ5NiwyMSArNzY2LDkgQEAgc3RhdGljIHZvaWQgYmxpdChzdHJ1Y3QgYnVmX29wcyAq Ym9wcywKIAkgKiB3ZSBhcmUgaW4gZnVsbCBjb250cm9sIG9mIG91ciBvd24gR1RULgogCSAqLwog CWlmIChnZW1fdXNlc19mdWxsX3BwZ3R0KGk5MTUpKSB7Ci0JCWlmIChwdXJnZV9jYWNoZSkgewot CQkJaWYgKGRvX3JlbG9jcykgewotCQkJCWlndF9hc3NlcnRfZXFfdTY0KHBvZmYyX2JiLCAgMCk7 Ci0JCQkJaWd0X2Fzc2VydF9lcV91NjQocG9mZjJfc3JjLCAwKTsKLQkJCQlpZ3RfYXNzZXJ0X2Vx X3U2NChwb2ZmMl9kc3QsIDApOwotCQkJfSBlbHNlIHsKLQkJCQlpZ3RfYXNzZXJ0X25lcV91NjQo cG9mZl9iYiwgcG9mZjJfYmIpOwotCQkJCWlndF9hc3NlcnRfZXFfdTY0KHBvZmZfc3JjLCBwb2Zm Ml9zcmMpOwotCQkJCWlndF9hc3NlcnRfZXFfdTY0KHBvZmZfZHN0LCBwb2ZmMl9kc3QpOwotCQkJ fQotCQl9IGVsc2UgewotCQkJaWd0X2Fzc2VydF9lcV91NjQocG9mZl9iYiwgIHBvZmYyX2JiKTsK LQkJCWlndF9hc3NlcnRfZXFfdTY0KHBvZmZfc3JjLCBwb2ZmMl9zcmMpOwotCQkJaWd0X2Fzc2Vy dF9lcV91NjQocG9mZl9kc3QsIHBvZmYyX2RzdCk7Ci0JCX0KKwkJaWd0X2Fzc2VydF9lcV91NjQo cG9mZl9iYiwgIHBvZmYyX2JiKTsKKwkJaWd0X2Fzc2VydF9lcV91NjQocG9mZl9zcmMsIHBvZmYy X3NyYyk7CisJCWlndF9hc3NlcnRfZXFfdTY0KHBvZmZfZHN0LCBwb2ZmMl9kc3QpOwogCX0KIAog CWludGVsX2JiX2VtaXRfYmJlKGliYik7CkBAIC02NzcsNyArOTM1LDcgQEAgc3RhdGljIGludCBk dW1wX2Jhc2U2NChjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYpCiAJaWYg KHJldCAhPSBaX09LKSB7CiAJCWlndF93YXJuKCJlcnJvciBjb21wcmVzc2luZywgcmV0OiAlZFxu IiwgcmV0KTsKIAl9IGVsc2UgewotCQlpZ3RfaW5mbygiY29tcHJlc3NlZCAlIiBQUkl4NjQgIiAt PiAlbHVcbiIsCisJCWlndF9pbmZvKCJjb21wcmVzc2VkICUiIFBSSXU2NCAiIC0+ICVsdVxuIiwK IAkJCSBidWYtPnN1cmZhY2VbMF0uc2l6ZSwgb3V0c2l6ZSk7CiAKIAkJaWd0X2luZm8oIi0tLSAl cyAtLS1cbiIsIG5hbWUpOwpAQCAtMTE4Myw2ICsxNDQxLDEwIEBAIGlndF9tYWluX2FyZ3MoImRw aWIiLCBOVUxMLCBoZWxwX3N0ciwgb3B0X2hhbmRsZXIsIE5VTEwpCiAJCWdlbiA9IGludGVsX2dl bihpbnRlbF9nZXRfZHJtX2RldmlkKGk5MTUpKTsKIAl9CiAKKwlpZ3RfZGVzY3JpYmUoIkVuc3Vy ZSByZXNldCBpcyBwb3NzaWJsZSBvbiBmcmVzaCBiYiIpOworCWlndF9zdWJ0ZXN0KCJyZXNldC1i YiIpCisJCXJlc2V0X2JiKGJvcHMpOworCiAJaWd0X3N1YnRlc3QoInNpbXBsZS1iYiIpCiAJCXNp bXBsZV9iYihib3BzLCBmYWxzZSk7CiAKQEAgLTExOTgsMTcgKzE0NjAsNDcgQEAgaWd0X21haW5f YXJncygiZHBpYiIsIE5VTEwsIGhlbHBfc3RyLCBvcHRfaGFuZGxlciwgTlVMTCkKIAlpZ3Rfc3Vi dGVzdCgicmVzZXQtZmxhZ3MiKQogCQlyZXNldF9mbGFncyhib3BzKTsKIAotCWlndF9zdWJ0ZXN0 KCJibGl0LW5vcmVsb2Mta2VlcC1jYWNoZSIpCi0JCWJsaXQoYm9wcywgTk9SRUxPQywgS0VFUF9D QUNIRSk7CisJaWd0X3N1YnRlc3QoImFkZC1yZW1vdmUtb2JqZWN0cyIpCisJCWFkZF9yZW1vdmVf b2JqZWN0cyhib3BzKTsKIAotCWlndF9zdWJ0ZXN0KCJibGl0LXJlbG9jLXB1cmdlLWNhY2hlIikK LQkJYmxpdChib3BzLCBSRUxPQywgUFVSR0VfQ0FDSEUpOworCWlndF9zdWJ0ZXN0KCJkZXN0cm95 LWJiIikKKwkJZGVzdHJveV9iYihib3BzKTsKIAotCWlndF9zdWJ0ZXN0KCJibGl0LW5vcmVsb2Mt cHVyZ2UtY2FjaGUiKQotCQlibGl0KGJvcHMsIE5PUkVMT0MsIFBVUkdFX0NBQ0hFKTsKKwlpZ3Rf c3VidGVzdCgib2JqZWN0LXJlbG9jLXB1cmdlLWNhY2hlIikKKwkJb2JqZWN0X3JlbG9jKGJvcHMs IFBVUkdFX0NBQ0hFKTsKKworCWlndF9zdWJ0ZXN0KCJvYmplY3QtcmVsb2Mta2VlcC1jYWNoZSIp CisJCW9iamVjdF9yZWxvYyhib3BzLCBLRUVQX0NBQ0hFKTsKKworCWlndF9zdWJ0ZXN0KCJvYmpl Y3Qtbm9yZWxvYy1wdXJnZS1jYWNoZS1zaW1wbGUiKQorCQlvYmplY3Rfbm9yZWxvYyhib3BzLCBQ VVJHRV9DQUNIRSwgSU5URUxfQUxMT0NBVE9SX1NJTVBMRSk7CisKKwlpZ3Rfc3VidGVzdCgib2Jq ZWN0LW5vcmVsb2Mta2VlcC1jYWNoZS1zaW1wbGUiKQorCQlvYmplY3Rfbm9yZWxvYyhib3BzLCBL RUVQX0NBQ0hFLCBJTlRFTF9BTExPQ0FUT1JfU0lNUExFKTsKKworCWlndF9zdWJ0ZXN0KCJvYmpl Y3Qtbm9yZWxvYy1wdXJnZS1jYWNoZS1yYW5kb20iKQorCQlvYmplY3Rfbm9yZWxvYyhib3BzLCBQ VVJHRV9DQUNIRSwgSU5URUxfQUxMT0NBVE9SX1JBTkRPTSk7CisKKwlpZ3Rfc3VidGVzdCgib2Jq ZWN0LW5vcmVsb2Mta2VlcC1jYWNoZS1yYW5kb20iKQorCQlvYmplY3Rfbm9yZWxvYyhib3BzLCBL RUVQX0NBQ0hFLCBJTlRFTF9BTExPQ0FUT1JfUkFORE9NKTsKKworCWlndF9zdWJ0ZXN0KCJibGl0 LXJlbG9jLXB1cmdlLWNhY2hlIikKKwkJYmxpdChib3BzLCBSRUxPQywgUFVSR0VfQ0FDSEUsIElO VEVMX0FMTE9DQVRPUl9TSU1QTEUpOwogCiAJaWd0X3N1YnRlc3QoImJsaXQtcmVsb2Mta2VlcC1j YWNoZSIpCi0JCWJsaXQoYm9wcywgUkVMT0MsIEtFRVBfQ0FDSEUpOworCQlibGl0KGJvcHMsIFJF TE9DLCBLRUVQX0NBQ0hFLCBJTlRFTF9BTExPQ0FUT1JfU0lNUExFKTsKKworCWlndF9zdWJ0ZXN0 KCJibGl0LW5vcmVsb2Mta2VlcC1jYWNoZS1yYW5kb20iKQorCQlibGl0KGJvcHMsIE5PUkVMT0Ms IEtFRVBfQ0FDSEUsIElOVEVMX0FMTE9DQVRPUl9SQU5ET00pOworCisJaWd0X3N1YnRlc3QoImJs aXQtbm9yZWxvYy1wdXJnZS1jYWNoZS1yYW5kb20iKQorCQlibGl0KGJvcHMsIE5PUkVMT0MsIFBV UkdFX0NBQ0hFLCBJTlRFTF9BTExPQ0FUT1JfUkFORE9NKTsKKworCWlndF9zdWJ0ZXN0KCJibGl0 LW5vcmVsb2Mta2VlcC1jYWNoZSIpCisJCWJsaXQoYm9wcywgTk9SRUxPQywgS0VFUF9DQUNIRSwg SU5URUxfQUxMT0NBVE9SX1NJTVBMRSk7CisKKwlpZ3Rfc3VidGVzdCgiYmxpdC1ub3JlbG9jLXB1 cmdlLWNhY2hlIikKKwkJYmxpdChib3BzLCBOT1JFTE9DLCBQVVJHRV9DQUNIRSwgSU5URUxfQUxM T0NBVE9SX1NJTVBMRSk7CiAKIAlpZ3Rfc3VidGVzdCgiaW50ZWwtYmItYmxpdC1ub25lIikKIAkJ ZG9faW50ZWxfYmJfYmxpdChib3BzLCAxMCwgSTkxNV9USUxJTkdfTk9ORSk7Ci0tIAoyLjI2LjAK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYg bWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=