From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: [PATCH 4/4] tools/xenalyze: Allow automatic resizing of sample buffers Date: Mon, 8 Aug 2016 10:54:31 +0100 Message-ID: <1470650071-1157-4-git-send-email-george.dunlap@citrix.com> References: <1470650071-1157-1-git-send-email-george.dunlap@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bWhHI-0008Ve-EF for xen-devel@lists.xenproject.org; Mon, 08 Aug 2016 09:55:24 +0000 In-Reply-To: <1470650071-1157-1-git-send-email-george.dunlap@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Ian Jackson , Dario Faggioli , Wei Liu , George Dunlap , Anshul Makkar List-Id: xen-devel@lists.xenproject.org UmF0aGVyIHRoYW4gaGF2ZSBsYXJnZSBmaXhlZC1zaXplIGJ1ZmZlcnMsIHN0YXJ0IHdpdGggc21h bGxlciBidWZmZXJzCmFuZCBhbGxvdyB0aGVtIHRvIGdyb3cgYXMgbmVlZGVkIChkb3VibGluZyBl YWNoIHRpbWUpLCB3aXRoIGEgZmFpcmx5CmxhcmdlIG1heGltdW0uICBBbGxvdyB0aGlzIG1heGlt dW0gdG8gYmUgc2V0IGJ5IGEgY29tbWFuZC1saW5lCnBhcmFtZXRlci4KClNpZ25lZC1vZmYtYnk6 IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAY2l0cml4LmNvbT4KLS0tCkNDOiBJYW4gSmFj a3NvbiA8aWFuLmphY2tzb25AY2l0cml4LmNvbT4KQ0M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJp eC5jb20+CkNDOiBEYXJpbyBGYWdnaW9saSA8ZGFyaW8uZmFnZ2lvbGlAY2l0cml4LmNvbT4KQ0M6 IEFuc2h1bCBNYWtrYXIgPGFuc2h1bC5tYWtrYXJAY2l0cml4LmNvbT4KLS0tCiB0b29scy94ZW50 cmFjZS94ZW5hbHl6ZS5jIHwgOTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS90b29scy94ZW50cmFjZS94ZW5hbHl6ZS5jIGIvdG9vbHMveGVu dHJhY2UveGVuYWx5emUuYwppbmRleCA0NTVjYmRmLi5hNGQ4ODIzIDEwMDY0NAotLS0gYS90b29s cy94ZW50cmFjZS94ZW5hbHl6ZS5jCisrKyBiL3Rvb2xzL3hlbnRyYWNlL3hlbmFseXplLmMKQEAg LTQ0LDcgKzQ0LDggQEAgc3RydWN0IG1yZWFkX2N0cmw7CiAjZGVmaW5lIFFIWl9GUk9NX0haKF9o eikgKCgoX2h6KSA8PCAxMCkvIDEwMDAwMDAwMDApCiAKICNkZWZpbmUgQUREUl9TUEFDRV9CSVRT IDQ4Ci0jZGVmaW5lIERFRkFVTFRfU0FNUExFX1NJWkUgMTAyNDAKKyNkZWZpbmUgREVGQVVMVF9T QU1QTEVfU0laRSAxMDI0CisjZGVmaW5lIERFRkFVTFRfU0FNUExFX01BWCAgMTAyNCoxMDI0KjMy CiAjZGVmaW5lIERFRkFVTFRfSU5URVJWQUxfTEVOR1RIIDEwMDAKIAogc3RydWN0IGFycmF5X3N0 cnVjdCB7CkBAIC0xODcsNyArMTg4LDcgQEAgc3RydWN0IHsKICAgICB1bnNpZ25lZCBsb25nIGxv bmcgaGlzdG9ncmFtX2ludGVycnVwdF9pbmNyZW1lbnQ7CiAgICAgaW50IGludGVycnVwdF9laXBf ZW51bWVyYXRpb25fdmVjdG9yOwogICAgIGludCBkZWZhdWx0X2d1ZXN0X3BhZ2luZ19sZXZlbHM7 Ci0gICAgaW50IHNhbXBsZV9zaXplOworICAgIGludCBzYW1wbGVfc2l6ZSwgc2FtcGxlX21heDsK ICAgICBlbnVtIGVycm9yX2xldmVsIHRvbGVyYW5jZTsgLyogVG9sZXJhdGUgdXAgdG8gdGhpcyBs ZXZlbCBvZiBlcnJvciAqLwogICAgIHN0cnVjdCB7CiAgICAgICAgIHRzY190IGN5Y2xlczsKQEAg LTI1Nyw2ICsyNTgsNyBAQCBzdHJ1Y3QgewogICAgIC5jcHVfcWh6ID0gUUhaX0ZST01fSFooREVG QVVMVF9DUFVfSFopLAogICAgIC5kZWZhdWx0X2d1ZXN0X3BhZ2luZ19sZXZlbHMgPSAyLAogICAg IC5zYW1wbGVfc2l6ZSA9IERFRkFVTFRfU0FNUExFX1NJWkUsCisgICAgLnNhbXBsZV9tYXggPSBE RUZBVUxUX1NBTVBMRV9NQVgsCiAgICAgLnRvbGVyYW5jZSA9IEVSUl9TQU5JVFksCiAgICAgLmlu dGVydmFsID0geyAubXNlYyA9IERFRkFVTFRfSU5URVJWQUxfTEVOR1RIIH0sCiB9OwpAQCAtMjc1 LDcgKzI3Nyw3IEBAIHN0cnVjdCBpbnRlcnZhbF9lbGVtZW50IHsKIH07CiAKIHN0cnVjdCBjeWNs ZV9zdW1tYXJ5IHsKLSAgICBpbnQgZXZlbnRfY291bnQsIGNvdW50OworICAgIGludCBldmVudF9j b3VudCwgY291bnQsIHNhbXBsZV9zaXplOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjeWNsZXM7 CiAgICAgbG9uZyBsb25nICpzYW1wbGU7CiAgICAgc3RydWN0IGludGVydmFsX2VsZW1lbnQgaW50 ZXJ2YWw7CkBAIC0yMjAzLDI4ICsyMjA1LDUxIEBAIHN0YXRpYyBpbmxpbmUgZG91YmxlIHN1bW1h cnlfcGVyY2VudF9nbG9iYWwoc3RydWN0IGN5Y2xlX3N1bW1hcnkgKnMpIHsKIH0KIAogc3RhdGlj IGlubGluZSB2b2lkIHVwZGF0ZV9jeWNsZXMoc3RydWN0IGN5Y2xlX3N1bW1hcnkgKnMsIGxvbmcg bG9uZyBjKSB7Ci0vKiBXZSBkb24ndCBrbm93IGFoZWFkIG9mIHRpbWUgaG93IG1hbnkgc2FtcGxl cyB0aGVyZSBhcmUsIGFuZCB3b3JraW5nCi0gKiB3aXRoIGR5bmFtaWMgc3R1ZmYgaXMgYSBwYWlu LCBhbmQgdW5uZWNlc3NhcnkuICBUaGlzIGFsZ29yaXRobSB3aWxsCi0gKiBnZW5lcmF0ZSBhIHNh bXBsZSBzZXQgdGhhdCBhcHByb3hpbWF0ZXMgYW4gZXZlbiBzYW1wbGUuICBXZSBjYW4KLSAqIHRo ZW4gdGFrZSB0aGUgcGVyY2VudGlsZXMgb24gdGhpcywgYW5kIGdldCBhbiBhcHByb3hpbWF0ZSB2 YWx1ZS4gKi8KICAgICBzLT5ldmVudF9jb3VudCsrOwogCiAgICAgaWYgKCFjKQogICAgICAgICBy ZXR1cm47CiAgICAgICAgICAgICAKICAgICBpZihvcHQuc2FtcGxlX3NpemUpIHsKLSAgICAgICAg aW50IGxhcCA9IChzLT5jb3VudC9vcHQuc2FtcGxlX3NpemUpKzEsCi0gICAgICAgICAgICBpbmRl eCA9cy0+Y291bnQgJSBvcHQuc2FtcGxlX3NpemU7Ci0gICAgICAgIGlmKChpbmRleCAtIChsYXAv MykpJWxhcCA9PSAwKSB7Ci0gICAgICAgICAgICBpZighcy0+c2FtcGxlKSB7Ci0gICAgICAgICAg ICAgICAgcy0+c2FtcGxlID0gbWFsbG9jKHNpemVvZigqcy0+c2FtcGxlKSAqIG9wdC5zYW1wbGVf c2l6ZSk7Ci0gICAgICAgICAgICAgICAgaWYoIXMtPnNhbXBsZSkgewotICAgICAgICAgICAgICAg ICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBtYWxsb2MgZmFpbGVkIVxuIiwgX19mdW5jX18pOwot ICAgICAgICAgICAgICAgICAgICBlcnJvcihFUlJfU1lTVEVNLCBOVUxMKTsKLSAgICAgICAgICAg ICAgICB9CisgICAgICAgIGlmIChzLT5jb3VudCA+PSBzLT5zYW1wbGVfc2l6ZQorICAgICAgICAg ICAgJiYgKHMtPmNvdW50ID09IDAKKyAgICAgICAgICAgICAgICB8fCBvcHQuc2FtcGxlX21heCA9 PSAwCisgICAgICAgICAgICAgICAgfHwgcy0+c2FtcGxlX3NpemUgPCBvcHQuc2FtcGxlX21heCkp IHsKKyAgICAgICAgICAgIGludCBuZXdfc2l6ZTsKKyAgICAgICAgICAgIHZvaWQgKiBuZXdfc2Ft cGxlID0gTlVMTDsKKworICAgICAgICAgICAgbmV3X3NpemUgPSBzLT5zYW1wbGVfc2l6ZSA8PCAx OworCisgICAgICAgICAgICBpZiAobmV3X3NpemUgPT0gMCkKKyAgICAgICAgICAgICAgICBuZXdf c2l6ZSA9IG9wdC5zYW1wbGVfc2l6ZTsKKworICAgICAgICAgICAgaWYgKG9wdC5zYW1wbGVfbWF4 ICE9IDAgJiYgbmV3X3NpemUgPiBvcHQuc2FtcGxlX21heCkKKyAgICAgICAgICAgICAgICBuZXdf c2l6ZSA9IG9wdC5zYW1wbGVfbWF4OworCisgICAgICAgICAgICAvL3ByaW50ZigiTmV3IHNpemU6 ICVkXG4iLCBuZXdfc2l6ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG5ld19zYW1wbGUg PSByZWFsbG9jKHMtPnNhbXBsZSwgc2l6ZW9mKCpzLT5zYW1wbGUpICogbmV3X3NpemUpOworICAg ICAgICAgICAgCisgICAgICAgICAgICBpZiAobmV3X3NhbXBsZSkgeworICAgICAgICAgICAgICAg IHMtPnNhbXBsZSA9IG5ld19zYW1wbGU7CisgICAgICAgICAgICAgICAgcy0+c2FtcGxlX3NpemUg PSBuZXdfc2l6ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHMtPnNhbXBsZVtpbmRleF09 YzsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHMtPmNvdW50IDwgcy0+c2FtcGxl X3NpemUpIHsKKyAgICAgICAgICAgIHMtPnNhbXBsZVtzLT5jb3VudF09YzsKKyAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgIC8qIAorICAgICAgICAgICAgICogSWYgd2UgcnVuIG91dCBvZiBz cGFjZSBmb3Igc2FtcGxlcywgc3RhcnQgdGFraW5nIG9ubHkgYQorICAgICAgICAgICAgICogc3Vi c2V0IG9mIHNhbXBsZXMuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGludCBsYXAsIGlu ZGV4OworICAgICAgICAgICAgbGFwID0gKHMtPmNvdW50L3MtPnNhbXBsZV9zaXplKSsxOworICAg ICAgICAgICAgaW5kZXggPXMtPmNvdW50ICUgcy0+c2FtcGxlX3NpemU7CisgICAgICAgICAgICBp ZigoaW5kZXggLSAobGFwLzMpKSVsYXAgPT0gMCkgeworICAgICAgICAgICAgICAgIHMtPnNhbXBs ZVtpbmRleF09YzsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CiAgICAgfQogICAgIHMtPmNv dW50Kys7CiAgICAgcy0+Y3ljbGVzICs9IGM7CkBAIC0yMjQ4LDggKzIyNzMsOCBAQCBzdGF0aWMg aW5saW5lIHZvaWQgcHJpbnRfY3B1X2FmZmluaXR5KHN0cnVjdCBjeWNsZV9zdW1tYXJ5ICpzLCBj aGFyICpwKSB7CiAgICAgICAgIGlmICggb3B0LnNhbXBsZV9zaXplICkgewogICAgICAgICAgICAg bG9uZyBsb25nICBwNSwgcDUwLCBwOTU7CiAgICAgICAgICAgICBpbnQgZGF0YV9zaXplID0gcy0+ Y291bnQ7Ci0gICAgICAgICAgIGlmKGRhdGFfc2l6ZSA+IG9wdC5zYW1wbGVfc2l6ZSkKLSAgICAg ICAgICAgICAgICBkYXRhX3NpemUgPSBvcHQuc2FtcGxlX3NpemU7CisgICAgICAgICAgIGlmKGRh dGFfc2l6ZSA+IHMtPnNhbXBsZV9zaXplKQorICAgICAgICAgICAgICAgZGF0YV9zaXplID0gcy0+ c2FtcGxlX3NpemU7CiAKICAgICAgICAgICAgIHA1MCA9IHBlcmNlbnRpbGUocy0+c2FtcGxlLCBk YXRhX3NpemUsIDUwKTsKICAgICAgICAgICAgIHA1ID0gcGVyY2VudGlsZShzLT5zYW1wbGUsIGRh dGFfc2l6ZSwgNSk7CkBAIC0yMjgwLDggKzIzMDUsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHJp bnRfY3ljbGVfcGVyY2VudF9zdW1tYXJ5KHN0cnVjdCBjeWNsZV9zdW1tYXJ5ICpzLAogICAgICAg ICAgICAgbG9uZyBsb25nIHA1LCBwNTAsIHA5NTsKICAgICAgICAgICAgIGludCBkYXRhX3NpemUg PSBzLT5jb3VudDsKIAotICAgICAgICAgICAgaWYoZGF0YV9zaXplID4gb3B0LnNhbXBsZV9zaXpl KQotICAgICAgICAgICAgICAgIGRhdGFfc2l6ZSA9IG9wdC5zYW1wbGVfc2l6ZTsKKyAgICAgICAg ICAgIGlmKGRhdGFfc2l6ZSA+IHMtPnNhbXBsZV9zaXplKQorICAgICAgICAgICAgICAgIGRhdGFf c2l6ZSA9IHMtPnNhbXBsZV9zaXplOwogCiAgICAgICAgICAgICBwNTAgPSBzZWxmX3dlaWdodGVk X3BlcmNlbnRpbGUocy0+c2FtcGxlLCBkYXRhX3NpemUsIDUwKTsKICAgICAgICAgICAgIHA1ID0g c2VsZl93ZWlnaHRlZF9wZXJjZW50aWxlKHMtPnNhbXBsZSwgZGF0YV9zaXplLCA1KTsKQEAgLTIz MTIsOCArMjMzNyw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwcmludF9jeWNsZV9zdW1tYXJ5KHN0 cnVjdCBjeWNsZV9zdW1tYXJ5ICpzLCBjaGFyICpwKSB7CiAgICAgICAgICAgICBsb25nIGxvbmcg cDUsIHA1MCwgcDk1OwogICAgICAgICAgICAgaW50IGRhdGFfc2l6ZSA9IHMtPmNvdW50OwogCi0g ICAgICAgICAgICBpZihkYXRhX3NpemUgPiBvcHQuc2FtcGxlX3NpemUpCi0gICAgICAgICAgICAg ICAgZGF0YV9zaXplID0gb3B0LnNhbXBsZV9zaXplOworICAgICAgICAgICAgaWYoZGF0YV9zaXpl ID4gcy0+c2FtcGxlX3NpemUpCisgICAgICAgICAgICAgICAgZGF0YV9zaXplID0gcy0+c2FtcGxl X3NpemU7CiAKICAgICAgICAgICAgIHA1MCA9IHNlbGZfd2VpZ2h0ZWRfcGVyY2VudGlsZShzLT5z YW1wbGUsIGRhdGFfc2l6ZSwgNTApOwogICAgICAgICAgICAgcDUgPSBzZWxmX3dlaWdodGVkX3Bl cmNlbnRpbGUocy0+c2FtcGxlLCBkYXRhX3NpemUsIDUpOwpAQCAtMjMzNSw4ICsyMzYwLDggQEAg c3RhdGljIGlubGluZSB2b2lkIHByaW50X2N5Y2xlX3N1bW1hcnkoc3RydWN0IGN5Y2xlX3N1bW1h cnkgKnMsIGNoYXIgKnApIHsKICAgICAgICAgICAgIGlmICggb3B0LnNhbXBsZV9zaXplICkgeyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICB1bnNp Z25lZCBsb25nIGxvbmcgcDUsIHA1MCwgcDk1OyAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg ICAgICAgICAgICAgICBpbnQgZGF0YV9zaXplPShfcykuY291bnQ7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBpZihkYXRhX3NpemUgPiBvcHQuc2FtcGxl X3NpemUpICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgZGF0 YV9zaXplPW9wdC5zYW1wbGVfc2l6ZTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg ICAgICAgICAgICBpZihkYXRhX3NpemUgPiAoX3MpLnNhbXBsZV9zaXplKSAgICAgICAgICAgICAg ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgIGRhdGFfc2l6ZT0oX3MpLnNhbXBsZV9z aXplOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgIHA1MD1wZXJj ZW50aWxlKChfcykuc2FtcGxlLCBkYXRhX3NpemUsIDUwKTsgICAgICBcCiAgICAgICAgICAgICAg ICAgcDU9cGVyY2VudGlsZSgoX3MpLnNhbXBsZSwgZGF0YV9zaXplLCA1KTsgICAgICAgIFwKICAg ICAgICAgICAgICAgICBwOTU9cGVyY2VudGlsZSgoX3MpLnNhbXBsZSwgZGF0YV9zaXplLCA5NSk7 ICAgICAgXApAQCAtOTgwMCw2ICs5ODI1LDcgQEAgZW51bSB7CiAgICAgT1BUX1NIT1dfREVGQVVM VF9ET01BSU5fU1VNTUFSWSwKICAgICBPUFRfTU1JT19FTlVNRVJBVElPTl9TS0lQX1ZHQSwKICAg ICBPUFRfU0FNUExFX1NJWkUsCisgICAgT1BUX1NBTVBMRV9NQVgsCiAgICAgT1BUX1JFUE9SVF9Q Q1BVLAogICAgIC8qIEd1ZXN0IGluZm8gKi8KICAgICBPUFRfREVGQVVMVF9HVUVTVF9QQUdJTkdf TEVWRUxTLApAQCAtOTk4Miw2ICsxMDAwOCwxNCBAQCBlcnJvcl90IGNtZF9wYXJzZXIoaW50IGtl eSwgY2hhciAqYXJnLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqc3RhdGUpCiAgICAgICAgICAgICBhcmdw X3VzYWdlKHN0YXRlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgT1BUX1NBTVBM RV9NQVg6CisgICAgeworICAgICAgICBjaGFyICogaW52YWw7CisgICAgICAgIG9wdC5zYW1wbGVf bWF4ID0gKGludClzdHJ0b2woYXJnLCAmaW52YWwsIDApOworICAgICAgICBpZiggaW52YWwgPT0g YXJnICkKKyAgICAgICAgICAgIGFyZ3BfdXNhZ2Uoc3RhdGUpOworICAgICAgICBicmVhazsKKyAg ICB9CiAgICAgY2FzZSBPUFRfTU1JT19FTlVNRVJBVElPTl9TS0lQX1ZHQToKICAgICB7CiAgICAg ICAgIGNoYXIgKiBpbnZhbDsKQEAgLTEwNTE5LDggKzEwNTUzLDE1IEBAIGNvbnN0IHN0cnVjdCBh cmdwX29wdGlvbiBjbWRfb3B0c1tdID0gIHsKICAgICAgIC5rZXkgPSBPUFRfU0FNUExFX1NJWkUs CiAgICAgICAuYXJnID0gInNpemUiLAogICAgICAgLmdyb3VwID0gT1BUX0dST1VQX1NVTU1BUlks Ci0gICAgICAuZG9jID0gIktlZXAgW3NpemVdIHNhbXBsZXMgZm9yIHBlcmNlbnRpbGUgcHVycG9z ZXMuICBFbnRlciAwIHRvICIgXAotICAgICAgImRpc2FibGUuICBEZWZhdWx0IDEwMjQwLiIsIH0s CisgICAgICAuZG9jID0gIlN0YXJ0IHdpdGggW3NpemVdIHNhbXBsZXMgZm9yIHBlcmNlbnRpbGUg cHVycG9zZXMuICBFbnRlciAwIHRvIiBcCisgICAgICAiZGlzYWJsZS4gIERlZmF1bHQgMTAyNC4i LCB9LAorCisgICAgeyAubmFtZSA9ICJzYW1wbGUtbWF4IiwKKyAgICAgIC5rZXkgPSBPUFRfU0FN UExFX01BWCwKKyAgICAgIC5hcmcgPSAic2l6ZSIsCisgICAgICAuZ3JvdXAgPSBPUFRfR1JPVVBf U1VNTUFSWSwKKyAgICAgIC5kb2MgPSAiRG8gbm90IGFsbG93IHNhbXBsZSB0byBncm93IGJleW9u ZCBbc2l6ZV0gc2FtcGxlcyBmb3IgcGVyY2VudGlsZSJcCisgICAgICAiIHB1cnBvc2VzLiAgRW50 ZXIgMCBmb3Igbm8gbGltaXQuIiwgfSwKIAogICAgIHsgLm5hbWUgPSAic3VtbWFyeSIsCiAgICAg ICAua2V5ID0gT1BUX1NVTU1BUlksCi0tIAoyLjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=