From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony PERARD Subject: [PULL 2/2] xen-block: scale sector based quantities correctly Date: Thu, 4 Apr 2019 18:07:22 +0100 Message-ID: <20190404170722.4492-3-anthony.perard@citrix.com> References: <20190404170722.4492-1-anthony.perard@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hC5py-0002qm-4p for xen-devel@lists.xenproject.org; Thu, 04 Apr 2019 17:07:38 +0000 In-Reply-To: <20190404170722.4492-1-anthony.perard@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: qemu-devel@nongnu.org Cc: Anthony PERARD , xen-devel@lists.xenproject.org, Peter Maydell List-Id: xen-devel@lists.xenproject.org RnJvbTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KClRoZSBYZW4gYmxr aWYgcHJvdG9jb2wgcmVxdWlyZXMgdGhhdCBzZWN0b3IgYmFzZWQgcXVhbnRpdGllcyBzaG91bGQg YmUKaW50ZXJwcmV0ZWQgc3RyaWN0bHkgYXMgbXVsdGlwbGVzIG9mIDUxMiBieXRlcy4gU3BlY2lm aWNhbGx5OgoKImZpcnN0X3NlY3QgYW5kIGxhc3Rfc2VjdCBpbiBibGtpZl9yZXF1ZXN0X3NlZ21l bnQsIGFzIHdlbGwgYXMKc2VjdG9yX251bWJlciBpbiBibGtpZl9yZXF1ZXN0LCBhcmUgYWx3YXlz IGV4cHJlc3NlZCBpbiA1MTItYnl0ZSB1bml0cy4iCgpDb21taXQgZmNhYjJiNDY0ZTA2ICJ4ZW46 IGFkZCBoZWFkZXIgYW5kIGJ1aWxkIGRhdGFwbGFuZS94ZW4tYmxvY2suYyIKaW5jb3JyZWN0bHkg bW9kaWZpZWQgYmVoYXZpb3VyIHRvIHVzZSB0aGUgYmxvY2sgZGV2aWNlIGxvZ2ljYWxfYmxvY2tf c2l6ZQpwcm9wZXJ0eSBhcyB0aGUgc2NhbGUsIGluc3RlYWQgb2YgY29ycmVjdGx5IHNoaWZ0aW5n IHZhbHVlcyBieSB0aGUKaGFyZGNvZGVkIEJEUlZfU0VDVE9SX0JJVFMgKGFuZCBoZW5jZSBzY2Fs aW5nIHRoZW0gdG8gNTEyIGJ5dGUgdW5pdHMpLgpUaGlzIHBhdGNoIHVuZG9lcyB0aGF0IGNoYW5n ZSBhbmQgcmVzdG9yZXMgY29tcGxpYW5jZSB3aXRoIHRoZSBzcGVjLgoKRnVydGhlcm1vcmUsIHRo aXMgcGF0Y2ggYWxzbyByZXN0b3JlcyB0aGUgb3JpZ2luYWwgeGVuX2Rpc2sgYmVoYXZpb3VyCm9m IGFkdmVydGl6aW5nIGEgaGFyZGNvZGVkICdzZWN0b3Itc2l6ZScgdmFsdWUgb2YgNTEyIGluIHhl bnN0b3JlIGFuZApzY2FsaW5nICdzZWN0b3JzJyBhY2NvcmRpbmdseS4gVGhlIHJlYWxpemUoKSBt ZXRob2QgaXMgYWxzbyBtb2RpZmllZCB0bwpmYWlsIGlmIGxvZ2ljYWxfYmxvY2tfc2l6ZSBpcyBz ZXQgdG8gYW55dGhpbmcgb3RoZXIgdGhhbiA1MTIuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJh bnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgpSZXZpZXdlZC1ieTogQW50aG9ueSBQRVJBUkQg PGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+Ck1lc3NhZ2UtSWQ6IDwyMDE5MDQwMTEyMTcxOS4y NzIwOC0xLXBhdWwuZHVycmFudEBjaXRyaXguY29tPgpTaWduZWQtb2ZmLWJ5OiBBbnRob255IFBF UkFSRCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNvbT4KLS0tCiBody9ibG9jay9kYXRhcGxhbmUv eGVuLWJsb2NrLmMgfCAyOCArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiBody9ibG9jay94 ZW4tYmxvY2suYyAgICAgICAgICAgfCAxMCArKysrKysrKy0tCiBody9ibG9jay94ZW5fYmxraWYu aCAgICAgICAgICAgfCAgMiArKwogMyBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCAx NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ody9ibG9jay9kYXRhcGxhbmUveGVuLWJsb2Nr LmMgYi9ody9ibG9jay9kYXRhcGxhbmUveGVuLWJsb2NrLmMKaW5kZXggZjE1MjNjNWI0NS4uYmI4 ZjExODZlNCAxMDA2NDQKLS0tIGEvaHcvYmxvY2svZGF0YXBsYW5lL3hlbi1ibG9jay5jCisrKyBi L2h3L2Jsb2NrL2RhdGFwbGFuZS94ZW4tYmxvY2suYwpAQCAtNDksNyArNDksNiBAQCBzdHJ1Y3Qg WGVuQmxvY2tEYXRhUGxhbmUgewogICAgIHVuc2lnbmVkIGludCAqcmluZ19yZWY7CiAgICAgdW5z aWduZWQgaW50IG5yX3JpbmdfcmVmOwogICAgIHZvaWQgKnNyaW5nOwotICAgIGludDY0X3QgZmls ZV9ibGs7CiAgICAgaW50IHByb3RvY29sOwogICAgIGJsa2lmX2JhY2tfcmluZ3NfdCByaW5nczsK ICAgICBpbnQgbW9yZV93b3JrOwpAQCAtMTY4LDcgKzE2Nyw3IEBAIHN0YXRpYyBpbnQgeGVuX2Js b2NrX3BhcnNlX3JlcXVlc3QoWGVuQmxvY2tSZXF1ZXN0ICpyZXF1ZXN0KQogICAgICAgICBnb3Rv IGVycjsKICAgICB9CiAKLSAgICByZXF1ZXN0LT5zdGFydCA9IHJlcXVlc3QtPnJlcS5zZWN0b3Jf bnVtYmVyICogZGF0YXBsYW5lLT5maWxlX2JsazsKKyAgICByZXF1ZXN0LT5zdGFydCA9IHJlcXVl c3QtPnJlcS5zZWN0b3JfbnVtYmVyICogWEVOX0JMS0lGX1NFQ1RPUl9TSVpFOwogICAgIGZvciAo aSA9IDA7IGkgPCByZXF1ZXN0LT5yZXEubnJfc2VnbWVudHM7IGkrKykgewogICAgICAgICBpZiAo aSA9PSBCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1QpIHsKICAgICAgICAgICAgIGVycm9y X3JlcG9ydCgiZXJyb3I6IG5yX3NlZ21lbnRzIHRvbyBiaWciKTsKQEAgLTE3OCwxNCArMTc3LDE0 IEBAIHN0YXRpYyBpbnQgeGVuX2Jsb2NrX3BhcnNlX3JlcXVlc3QoWGVuQmxvY2tSZXF1ZXN0ICpy ZXF1ZXN0KQogICAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJlcnJvcjogZmlyc3QgPiBsYXN0IHNl Y3RvciIpOwogICAgICAgICAgICAgZ290byBlcnI7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHJl cXVlc3QtPnJlcS5zZWdbaV0ubGFzdF9zZWN0ICogZGF0YXBsYW5lLT5maWxlX2JsayA+PQorICAg ICAgICBpZiAocmVxdWVzdC0+cmVxLnNlZ1tpXS5sYXN0X3NlY3QgKiBYRU5fQkxLSUZfU0VDVE9S X1NJWkUgPj0KICAgICAgICAgICAgIFhDX1BBR0VfU0laRSkgewogICAgICAgICAgICAgZXJyb3Jf cmVwb3J0KCJlcnJvcjogcGFnZSBjcm9zc2luZyIpOwogICAgICAgICAgICAgZ290byBlcnI7CiAg ICAgICAgIH0KIAogICAgICAgICBsZW4gPSAocmVxdWVzdC0+cmVxLnNlZ1tpXS5sYXN0X3NlY3Qg LQotICAgICAgICAgICAgICAgcmVxdWVzdC0+cmVxLnNlZ1tpXS5maXJzdF9zZWN0ICsgMSkgKiBk YXRhcGxhbmUtPmZpbGVfYmxrOworICAgICAgICAgICAgICAgcmVxdWVzdC0+cmVxLnNlZ1tpXS5m aXJzdF9zZWN0ICsgMSkgKiBYRU5fQkxLSUZfU0VDVE9SX1NJWkU7CiAgICAgICAgIHJlcXVlc3Qt PnNpemUgKz0gbGVuOwogICAgIH0KICAgICBpZiAocmVxdWVzdC0+c3RhcnQgKyByZXF1ZXN0LT5z aXplID4gYmxrX2dldGxlbmd0aChkYXRhcGxhbmUtPmJsaykpIHsKQEAgLTIwNSw3ICsyMDQsNiBA QCBzdGF0aWMgaW50IHhlbl9ibG9ja19jb3B5X3JlcXVlc3QoWGVuQmxvY2tSZXF1ZXN0ICpyZXF1 ZXN0KQogICAgIFhlbkRldmljZSAqeGVuZGV2ID0gZGF0YXBsYW5lLT54ZW5kZXY7CiAgICAgWGVu RGV2aWNlR3JhbnRDb3B5U2VnbWVudCBzZWdzW0JMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVT VF07CiAgICAgaW50IGksIGNvdW50OwotICAgIGludDY0X3QgZmlsZV9ibGsgPSBkYXRhcGxhbmUt PmZpbGVfYmxrOwogICAgIGJvb2wgdG9fZG9tYWluID0gKHJlcXVlc3QtPnJlcS5vcGVyYXRpb24g PT0gQkxLSUZfT1BfUkVBRCk7CiAgICAgdm9pZCAqdmlydCA9IHJlcXVlc3QtPmJ1ZjsKICAgICBF cnJvciAqbG9jYWxfZXJyID0gTlVMTDsKQEAgLTIyMCwxNiArMjE4LDE3IEBAIHN0YXRpYyBpbnQg eGVuX2Jsb2NrX2NvcHlfcmVxdWVzdChYZW5CbG9ja1JlcXVlc3QgKnJlcXVlc3QpCiAgICAgICAg IGlmICh0b19kb21haW4pIHsKICAgICAgICAgICAgIHNlZ3NbaV0uZGVzdC5mb3JlaWduLnJlZiA9 IHJlcXVlc3QtPnJlcS5zZWdbaV0uZ3JlZjsKICAgICAgICAgICAgIHNlZ3NbaV0uZGVzdC5mb3Jl aWduLm9mZnNldCA9IHJlcXVlc3QtPnJlcS5zZWdbaV0uZmlyc3Rfc2VjdCAqCi0gICAgICAgICAg ICAgICAgZmlsZV9ibGs7CisgICAgICAgICAgICAgICAgWEVOX0JMS0lGX1NFQ1RPUl9TSVpFOwog ICAgICAgICAgICAgc2Vnc1tpXS5zb3VyY2UudmlydCA9IHZpcnQ7CiAgICAgICAgIH0gZWxzZSB7 CiAgICAgICAgICAgICBzZWdzW2ldLnNvdXJjZS5mb3JlaWduLnJlZiA9IHJlcXVlc3QtPnJlcS5z ZWdbaV0uZ3JlZjsKICAgICAgICAgICAgIHNlZ3NbaV0uc291cmNlLmZvcmVpZ24ub2Zmc2V0ID0g cmVxdWVzdC0+cmVxLnNlZ1tpXS5maXJzdF9zZWN0ICoKLSAgICAgICAgICAgICAgICBmaWxlX2Js azsKKyAgICAgICAgICAgICAgICBYRU5fQkxLSUZfU0VDVE9SX1NJWkU7CiAgICAgICAgICAgICBz ZWdzW2ldLmRlc3QudmlydCA9IHZpcnQ7CiAgICAgICAgIH0KICAgICAgICAgc2Vnc1tpXS5sZW4g PSAocmVxdWVzdC0+cmVxLnNlZ1tpXS5sYXN0X3NlY3QgLQotICAgICAgICAgICAgICAgICAgICAg ICByZXF1ZXN0LT5yZXEuc2VnW2ldLmZpcnN0X3NlY3QgKyAxKSAqIGZpbGVfYmxrOworICAgICAg ICAgICAgICAgICAgICAgICByZXF1ZXN0LT5yZXEuc2VnW2ldLmZpcnN0X3NlY3QgKyAxKSAqCisg ICAgICAgICAgICAgICAgICAgICAgWEVOX0JMS0lGX1NFQ1RPUl9TSVpFOwogICAgICAgICB2aXJ0 ICs9IHNlZ3NbaV0ubGVuOwogICAgIH0KIApAQCAtMzMxLDIyICszMzAsMjIgQEAgc3RhdGljIGJv b2wgeGVuX2Jsb2NrX3NwbGl0X2Rpc2NhcmQoWGVuQmxvY2tSZXF1ZXN0ICpyZXF1ZXN0LAogICAg IFhlbkJsb2NrRGF0YVBsYW5lICpkYXRhcGxhbmUgPSByZXF1ZXN0LT5kYXRhcGxhbmU7CiAgICAg aW50NjRfdCBieXRlX29mZnNldDsKICAgICBpbnQgYnl0ZV9jaHVuazsKLSAgICB1aW50NjRfdCBi eXRlX3JlbWFpbmluZywgbGltaXQ7CisgICAgdWludDY0X3QgYnl0ZV9yZW1haW5pbmc7CiAgICAg dWludDY0X3Qgc2VjX3N0YXJ0ID0gc2VjdG9yX251bWJlcjsKICAgICB1aW50NjRfdCBzZWNfY291 bnQgPSBucl9zZWN0b3JzOwogCiAgICAgLyogV3JhcCBhcm91bmQsIG9yIG92ZXJmbG93aW5nIGJ5 dGUgbGltaXQ/ICovCiAgICAgaWYgKHNlY19zdGFydCArIHNlY19jb3VudCA8IHNlY19jb3VudCB8 fAotICAgICAgICBzZWNfc3RhcnQgKyBzZWNfY291bnQgPiBJTlQ2NF9NQVggLyBkYXRhcGxhbmUt PmZpbGVfYmxrKSB7CisgICAgICAgIHNlY19zdGFydCArIHNlY19jb3VudCA+IElOVDY0X01BWCAv IFhFTl9CTEtJRl9TRUNUT1JfU0laRSkgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog Ci0gICAgbGltaXQgPSBCRFJWX1JFUVVFU1RfTUFYX1NFQ1RPUlMgKiBkYXRhcGxhbmUtPmZpbGVf YmxrOwotICAgIGJ5dGVfb2Zmc2V0ID0gc2VjX3N0YXJ0ICogZGF0YXBsYW5lLT5maWxlX2JsazsK LSAgICBieXRlX3JlbWFpbmluZyA9IHNlY19jb3VudCAqIGRhdGFwbGFuZS0+ZmlsZV9ibGs7Cisg ICAgYnl0ZV9vZmZzZXQgPSBzZWNfc3RhcnQgKiBYRU5fQkxLSUZfU0VDVE9SX1NJWkU7CisgICAg Ynl0ZV9yZW1haW5pbmcgPSBzZWNfY291bnQgKiBYRU5fQkxLSUZfU0VDVE9SX1NJWkU7CiAKICAg ICBkbyB7Ci0gICAgICAgIGJ5dGVfY2h1bmsgPSBieXRlX3JlbWFpbmluZyA+IGxpbWl0ID8gbGlt aXQgOiBieXRlX3JlbWFpbmluZzsKKyAgICAgICAgYnl0ZV9jaHVuayA9IGJ5dGVfcmVtYWluaW5n ID4gQkRSVl9SRVFVRVNUX01BWF9CWVRFUyA/CisgICAgICAgICAgICBCRFJWX1JFUVVFU1RfTUFY X0JZVEVTIDogYnl0ZV9yZW1haW5pbmc7CiAgICAgICAgIHJlcXVlc3QtPmFpb19pbmZsaWdodCsr OwogICAgICAgICBibGtfYWlvX3BkaXNjYXJkKGRhdGFwbGFuZS0+YmxrLCBieXRlX29mZnNldCwg Ynl0ZV9jaHVuaywKICAgICAgICAgICAgICAgICAgICAgICAgICB4ZW5fYmxvY2tfY29tcGxldGVf YWlvLCByZXF1ZXN0KTsKQEAgLTYzMiw3ICs2MzEsNiBAQCBYZW5CbG9ja0RhdGFQbGFuZSAqeGVu X2Jsb2NrX2RhdGFwbGFuZV9jcmVhdGUoWGVuRGV2aWNlICp4ZW5kZXYsCiAgICAgWGVuQmxvY2tE YXRhUGxhbmUgKmRhdGFwbGFuZSA9IGdfbmV3MChYZW5CbG9ja0RhdGFQbGFuZSwgMSk7CiAKICAg ICBkYXRhcGxhbmUtPnhlbmRldiA9IHhlbmRldjsKLSAgICBkYXRhcGxhbmUtPmZpbGVfYmxrID0g Y29uZi0+bG9naWNhbF9ibG9ja19zaXplOwogICAgIGRhdGFwbGFuZS0+YmxrID0gY29uZi0+Ymxr OwogCiAgICAgUUxJU1RfSU5JVCgmZGF0YXBsYW5lLT5pbmZsaWdodCk7CmRpZmYgLS1naXQgYS9o dy9ibG9jay94ZW4tYmxvY2suYyBiL2h3L2Jsb2NrL3hlbi1ibG9jay5jCmluZGV4IDQ3NWE2Nzg0 NWQuLmVmNjM1YmU0YzIgMTAwNjQ0Ci0tLSBhL2h3L2Jsb2NrL3hlbi1ibG9jay5jCisrKyBiL2h3 L2Jsb2NrL3hlbi1ibG9jay5jCkBAIC0xNDksNyArMTQ5LDcgQEAgc3RhdGljIHZvaWQgeGVuX2Js b2NrX3NldF9zaXplKFhlbkJsb2NrRGV2aWNlICpibG9ja2RldikKICAgICBjb25zdCBjaGFyICp0 eXBlID0gb2JqZWN0X2dldF90eXBlbmFtZShPQkpFQ1QoYmxvY2tkZXYpKTsKICAgICBYZW5CbG9j a1ZkZXYgKnZkZXYgPSAmYmxvY2tkZXYtPnByb3BzLnZkZXY7CiAgICAgQmxvY2tDb25mICpjb25m ID0gJmJsb2NrZGV2LT5wcm9wcy5jb25mOwotICAgIGludDY0X3Qgc2VjdG9ycyA9IGJsa19nZXRs ZW5ndGgoY29uZi0+YmxrKSAvIGNvbmYtPmxvZ2ljYWxfYmxvY2tfc2l6ZTsKKyAgICBpbnQ2NF90 IHNlY3RvcnMgPSBibGtfZ2V0bGVuZ3RoKGNvbmYtPmJsaykgLyBYRU5fQkxLSUZfU0VDVE9SX1NJ WkU7CiAgICAgWGVuRGV2aWNlICp4ZW5kZXYgPSBYRU5fREVWSUNFKGJsb2NrZGV2KTsKIAogICAg IHRyYWNlX3hlbl9ibG9ja19zaXplKHR5cGUsIHZkZXYtPmRpc2ssIHZkZXYtPnBhcnRpdGlvbiwg c2VjdG9ycyk7CkBAIC0yMjMsNiArMjIzLDEyIEBAIHN0YXRpYyB2b2lkIHhlbl9ibG9ja19yZWFs aXplKFhlbkRldmljZSAqeGVuZGV2LCBFcnJvciAqKmVycnApCiAKICAgICBibGtjb25mX2Jsb2Nr c2l6ZXMoY29uZik7CiAKKyAgICBpZiAoY29uZi0+bG9naWNhbF9ibG9ja19zaXplICE9IFhFTl9C TEtJRl9TRUNUT1JfU0laRSkgeworICAgICAgICBlcnJvcl9zZXRnKGVycnAsICJsb2dpY2FsX2Js b2NrX3NpemUgIT0gJXUgbm90IHN1cHBvcnRlZCIsCisgICAgICAgICAgICAgICAgICAgWEVOX0JM S0lGX1NFQ1RPUl9TSVpFKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChjb25m LT5sb2dpY2FsX2Jsb2NrX3NpemUgPiBjb25mLT5waHlzaWNhbF9ibG9ja19zaXplKSB7CiAgICAg ICAgIGVycm9yX3NldGcoCiAgICAgICAgICAgICBlcnJwLCAibG9naWNhbF9ibG9ja19zaXplID4g cGh5c2ljYWxfYmxvY2tfc2l6ZSBub3Qgc3VwcG9ydGVkIik7CkBAIC0yNTMsNyArMjU5LDcgQEAg c3RhdGljIHZvaWQgeGVuX2Jsb2NrX3JlYWxpemUoWGVuRGV2aWNlICp4ZW5kZXYsIEVycm9yICoq ZXJycCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2Rldi0+ZGV2aWNlX3R5 cGUpOwogCiAgICAgeGVuX2RldmljZV9iYWNrZW5kX3ByaW50Zih4ZW5kZXYsICJzZWN0b3Itc2l6 ZSIsICIldSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25mLT5sb2dpY2FsX2Js b2NrX3NpemUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEVOX0JMS0lGX1NFQ1RP Ul9TSVpFKTsKIAogICAgIHhlbl9ibG9ja19zZXRfc2l6ZShibG9ja2Rldik7CiAKZGlmZiAtLWdp dCBhL2h3L2Jsb2NrL3hlbl9ibGtpZi5oIGIvaHcvYmxvY2sveGVuX2Jsa2lmLmgKaW5kZXggM2U2 ZTFlYTM2NS4uYTM1MzY5M2VhMCAxMDA2NDQKLS0tIGEvaHcvYmxvY2sveGVuX2Jsa2lmLmgKKysr IGIvaHcvYmxvY2sveGVuX2Jsa2lmLmgKQEAgLTE0Myw0ICsxNDMsNiBAQCBzdGF0aWMgaW5saW5l IHZvaWQgYmxraWZfZ2V0X3g4Nl82NF9yZXEoYmxraWZfcmVxdWVzdF90ICpkc3QsCiAgICAgfQog fQogCisjZGVmaW5lIFhFTl9CTEtJRl9TRUNUT1JfU0laRSA1MTIKKwogI2VuZGlmIC8qIFhFTl9C TEtJRl9IICovCi0tIApBbnRob255IFBFUkFSRAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s aXN0aW5mby94ZW4tZGV2ZWw=