From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Goel, Akash" Subject: Re: [PATCH 09/17] drm/i915: Debugfs support for GuC logging control Date: Wed, 20 Jul 2016 10:12:23 +0530 Message-ID: <32eb73ab-f808-a267-e459-29b428f84ec9@intel.com> References: <1468158084-22028-1-git-send-email-akash.goel@intel.com> <1468158084-22028-10-git-send-email-akash.goel@intel.com> <578E0E04.9070306@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 88D996E045 for ; Wed, 20 Jul 2016 04:42:26 +0000 (UTC) In-Reply-To: <578E0E04.9070306@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , intel-gfx@lists.freedesktop.org Cc: akash.goel@intel.com List-Id: intel-gfx@lists.freedesktop.org CgpPbiA3LzE5LzIwMTYgNDo1NCBQTSwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4KPiBPbiAxMC8w Ny8xNiAxNDo0MSwgYWthc2guZ29lbEBpbnRlbC5jb20gd3JvdGU6Cj4+IEZyb206IFNhZ2FyIEFy dW4gS2FtYmxlIDxzYWdhci5hLmthbWJsZUBpbnRlbC5jb20+Cj4+Cj4+IFRoaXMgcGF0Y2ggcHJv dmlkZXMgZGVidWdmcyBpbnRlcmZhY2UgaTkxNV9ndWNfb3V0cHV0X2NvbnRyb2wgZm9yCj4+IG9u IHRoZSBmbHkgZW5hYmxpbmcvZGlzYWJsaW5nIG9mIGxvZ2dpbmcgaW4gR3VDIGZpcm13YXJlIGFu ZCBjb250cm9sbGluZwo+PiB0aGUgdmVyYm9zaXR5IGxldmVsIG9mIGxvZ3MuCj4+IFRoZSB2YWx1 ZSB3cml0dGVuIHRvIHRoZSBmaWxlLCBzaG91bGQgaGF2ZSBiaXQgMCBzZXQgdG8gZW5hYmxlIGxv Z2dpbmcKPj4gYW5kCj4+IGJpdHMgNC03IHNob3VsZCBjb250YWluIHRoZSB2ZXJib3NpdHkgaW5m by4KPj4KPj4gdjI6IEFkZCBhIGZvcmNlZnVsIGZsdXNoLCB0byBjb2xsZWN0IGxlZnQgb3ZlciBs b2dzLCBvbiBkaXNhYmxpbmcKPj4gbG9nZ2luZy4KPj4gICAgICBVc2VmdWwgZm9yIFZhbGlkYXRp b24uCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFNhZ2FyIEFydW4gS2FtYmxlIDxzYWdhci5hLmthbWJs ZUBpbnRlbC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IEFrYXNoIEdvZWwgPGFrYXNoLmdvZWxAaW50 ZWwuY29tPgo+PiAtLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAg ICAgICAgfCAzMiArKysrKysrKysrKysrKysrLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ3VjX3N1Ym1pc3Npb24uYyB8IDU3Cj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr Kwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICAgICB8ICAxICsK Pj4gICAzIGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPj4K Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPj4gaW5kZXggNWUzNTU2NS4uM2M5 YzdmNyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPj4gQEAgLTI2NDQs NiArMjY0NCwzNSBAQCBzdGF0aWMgaW50IGk5MTVfZ3VjX2xvZ19kdW1wKHN0cnVjdCBzZXFfZmls ZQo+PiAqbSwgdm9pZCAqZGF0YSkKPj4gICAgICAgcmV0dXJuIDA7Cj4+ICAgfQo+Pgo+PiArc3Rh dGljIGludAo+PiAraTkxNV9ndWNfbG9nX2NvbnRyb2xfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwp Cj4+ICt7Cj4+ICsgICAgc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRhdGE7Cj4+ICsgICAgc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPgo+IHRv X2k5MTUgc2hvdWxkIGJlIHVzZWQuClNvcnJ5IGZvciBtaXNzaW5nIHRoaXMsIG5lZWQgdG8gdXNl IHRoaXMgYXQgb3RoZXIgcGxhY2VzIGFsc28uCgo+Cj4+ICsgICAgaW50IHJldDsKPj4gKwo+PiAr ICAgIHJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ PiArICAgIGlmIChyZXQpCj4+ICsgICAgICAgIHJldHVybiByZXQ7Cj4+ICsKPj4gKyAgICBpZiAo IWk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uIHx8ICFkZXZfcHJpdi0+Z3VjLmxvZy5vYmopIHsK Pgo+IFdvdWxkbid0IGd1Yy5sb2cub2JqIGJlIGVub3VnaD8KCkFjdHVhbGx5IGZhaWx1cmUgaW4g YWxsb2NhdGlvbiBvZiBsb2cgYnVmZmVyLCBhdCBib290IHRpbWUsIGlzIG5vdCAKY29uc2lkZXJl ZCBmYXRhbCBhbmQgc3VibWlzc2lvbiB0aHJvdWdoIEd1QyBpcyBzdGlsbCBkb25lLgpTbyBpOTE1 LmVuYWJsZV9ndWNfc3VibWlzc2lvbiBjb3VsZCBiZSAxIHdpdGggZ3VjLmxvZy5vYmogYXMgTlVM TC4KCj4KPj4gKyAgICAgICAgcmV0ID0gLUVJTlZBTDsKPj4gKyAgICAgICAgZ290byBlbmQ7Cj4+ ICsgICAgfQo+PiArCj4+ICsgICAgaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+PiAr ICAgIHJldCA9IGk5MTVfZ3VjX2xvZ19jb250cm9sKGRldiwgdmFsKTsKPj4gKyAgICBpbnRlbF9y dW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4+ICsKPj4gK2VuZDoKPj4gKyAgICBtdXRleF91bmxv Y2soJmRldi0+c3RydWN0X211dGV4KTsKPj4gKyAgICByZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ ICtERUZJTkVfU0lNUExFX0FUVFJJQlVURShpOTE1X2d1Y19sb2dfY29udHJvbF9mb3BzLAo+PiAr ICAgICAgICAgICAgTlVMTCwgaTkxNV9ndWNfbG9nX2NvbnRyb2xfc2V0LAo+PiArICAgICAgICAg ICAgIjB4JTA4bGx4XG4iKTsKPgo+IERvZXMgdGhlIHJlYWRiYWNrIHN0aWxsIHdvcmsgd2l0aCBu byBnZXQgbWV0aG9kPwoKcmVhZGJhY2sgd2lsbCBnaXZlIGEgJ1Blcm1pc3Npb24gZGVuaWVkJyBl cnJvcgoKPgo+PiArCj4+ICAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPj4gICB7Cj4+ICAgICAgIHN0cnVjdCBkcm1faW5mb19u b2RlICpub2RlID0gbS0+cHJpdmF0ZTsKPj4gQEAgLTU0NjQsNyArNTQ5Myw4IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9kZWJ1Z2ZzX2ZpbGVzIHsKPj4gICAgICAgeyJpOTE1X2ZiY19mYWxz ZV9jb2xvciIsICZpOTE1X2ZiY19mY19mb3BzfSwKPj4gICAgICAgeyJpOTE1X2RwX3Rlc3RfZGF0 YSIsICZpOTE1X2Rpc3BsYXlwb3J0X3Rlc3RfZGF0YV9mb3BzfSwKPj4gICAgICAgeyJpOTE1X2Rw X3Rlc3RfdHlwZSIsICZpOTE1X2Rpc3BsYXlwb3J0X3Rlc3RfdHlwZV9mb3BzfSwKPj4gLSAgICB7 Imk5MTVfZHBfdGVzdF9hY3RpdmUiLCAmaTkxNV9kaXNwbGF5cG9ydF90ZXN0X2FjdGl2ZV9mb3Bz fQo+PiArICAgIHsiaTkxNV9kcF90ZXN0X2FjdGl2ZSIsICZpOTE1X2Rpc3BsYXlwb3J0X3Rlc3Rf YWN0aXZlX2ZvcHN9LAo+PiArICAgIHsiaTkxNV9ndWNfbG9nX2NvbnRyb2wiLCAmaTkxNV9ndWNf bG9nX2NvbnRyb2xfZm9wc30KPj4gICB9Owo+Pgo+PiAgIHZvaWQgaW50ZWxfZGlzcGxheV9jcmNf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ndWNfc3VibWlzc2lvbi5jCj4+IGluZGV4IDhjYzMxYzYuLjJlM2I3MjMgMTAwNjQ0Cj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPj4gQEAgLTE5Myw2 ICsxOTMsMTYgQEAgc3RhdGljIGludCBob3N0Mmd1Y19mb3JjZV9sb2didWZmZXJfZmx1c2goc3Ry dWN0Cj4+IGludGVsX2d1YyAqZ3VjKQo+PiAgICAgICByZXR1cm4gaG9zdDJndWNfYWN0aW9uKGd1 YywgZGF0YSwgMik7Cj4+ICAgfQo+Pgo+PiArc3RhdGljIGludCBob3N0Mmd1Y19sb2dnaW5nX2Nv bnRyb2woc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIKPj4gY29udHJvbF92YWwpCj4+ICt7Cj4+ ICsgICAgdTMyIGRhdGFbMl07Cj4+ICsKPj4gKyAgICBkYXRhWzBdID0gSE9TVDJHVUNfQUNUSU9O X1VLX0xPR19FTkFCTEVfTE9HR0lORzsKPj4gKyAgICBkYXRhWzFdID0gY29udHJvbF92YWw7Cj4+ ICsKPj4gKyAgICByZXR1cm4gaG9zdDJndWNfYWN0aW9uKGd1YywgZGF0YSwgMik7Cj4+ICt9Cj4+ ICsKPj4gICAvKgo+PiAgICAqIEluaXRpYWxpc2UsIHVwZGF0ZSwgb3IgY2xlYXIgZG9vcmJlbGwg ZGF0YSBzaGFyZWQgd2l0aCB0aGUgR3VDCj4+ICAgICoKPj4gQEAgLTE0NTUsMyArMTQ2NSw1MCBA QCB2b2lkIGk5MTVfZ3VjX3JlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAgICAg IGd1Y19sb2dfbGF0ZV9zZXR1cChkZXYpOwo+PiAgICAgICBtdXRleF91bmxvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKPj4gICB9Cj4+ICsKPj4gK2ludCBpOTE1X2d1Y19sb2dfY29udHJvbChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB1aW50NjRfdCBjb250cm9sX3ZhbCkKPj4gK3sKPj4gKyAgICBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+Cj4g dG9faTkxNQo+Cj4gQWN0dWFsbHksIGZ1bmN0aW9uIHNob3VsZCB0YWtlIGRldl9wcml2IGlmIG5v dCBldmVuIGd1YyBkZXBlbmRpbmcgb24gdGhlCj4gZXN0YWJsaXNoZWQgY29udmVudGlvbiBpbiB0 aGUgZmlsZS4KPgpPayBmb3IgYWxsIHRoZSBuZXcgbG9nZ2luZyByZWxhdGVkIGV4cG9ydGVkIGZ1 bmN0aW9ucywgd2lsbCB1c2UgZGV2X3ByaXYuCgo+PiArICAgIHVuaW9uIGd1Y19sb2dfY29udHJv bCBsb2dfcGFyYW07Cj4+ICsgICAgaW50IHJldDsKPj4gKwo+PiArICAgIGxvZ19wYXJhbS5sb2dn aW5nX2VuYWJsZWQgPSBjb250cm9sX3ZhbCAmIDB4MTsKPj4gKyAgICBsb2dfcGFyYW0udmVyYm9z aXR5ID0gKGNvbnRyb2xfdmFsID4+IDQpICYgMHhGOwo+PiArCj4+ICsgICAgaWYgKGxvZ19wYXJh bS52ZXJib3NpdHkgPCBHVUNfTE9HX1ZFUkJPU0lUWV9NSU4gfHwKPj4gKyAgICAgICAgbG9nX3Bh cmFtLnZlcmJvc2l0eSA+IEdVQ19MT0dfVkVSQk9TSVRZX01BWCkKPj4gKyAgICAgICAgcmV0dXJu IC1FSU5WQUw7Cj4+ICsKPj4gKyAgICAvKiBUaGlzIGNvbWJpbmF0aW9uIGRvZXNuJ3QgbWFrZSBz ZW5zZSAmIHdvbid0IGhhdmUgYW55IGVmZmVjdCAqLwo+PiArICAgIGlmICghbG9nX3BhcmFtLmxv Z2dpbmdfZW5hYmxlZCAmJiAoaTkxNS5ndWNfbG9nX2xldmVsIDwgMCkpCj4+ICsgICAgICAgIHJl dHVybiAtRUlOVkFMOwo+Cj4gSG0sIGRpc2FibGluZyB3aGlsZSBhbHJlYWR5IGRpc2FibGVkIC0g d2h5IHNob3VsZCB0aGF0IHJldHVybiBhbiBlcnJvcj8KPiBNaWdodCBiZSBhbm5veWluZyBpbiBz Y3JpcHRzLgoKSnVzdCB0byBtYWtlIHRoZSBVc2VyIGF3YXJlLiBPayB3aWxsIHN1cHByZXNzIHRo aXMgYW5kIHJldHVybiAwLgo+Cj4+ICsKPj4gKyAgICByZXQgPSBob3N0Mmd1Y19sb2dnaW5nX2Nv bnRyb2woJmRldl9wcml2LT5ndWMsIGxvZ19wYXJhbS52YWx1ZSk7Cj4+ICsgICAgaWYgKHJldCA8 IDApIHsKPj4gKyAgICAgICAgRFJNX0RFQlVHX0RSSVZFUigiaG9zdDJndWMgYWN0aW9uIGZhaWxl ZFxuIik7Cj4KPiBBZGQgcmV0IHRvIHRoZSBsb2cgc2luY2UgaXQgaXMgZWFzeT8KPgpmaW5lIHdp bGwgZG8gdGhhdC4KPj4gKyAgICAgICAgcmV0dXJuIHJldDsKPj4gKyAgICB9Cj4+ICsKPj4gKyAg ICBpOTE1Lmd1Y19sb2dfbGV2ZWwgPSBsb2dfcGFyYW0udmVyYm9zaXR5Owo+PiArCj4+ICsgICAg LyogSWYgbG9nX2xldmVsIHdhcyBzZXQgYXMgLTEgYXQgYm9vdCB0aW1lLCB0aGVuIHRoZSByZWxh eQo+PiBjaGFubmVsIGZpbGUKPj4gKyAgICAgKiB3b3VsZG4ndCBoYXZlIGJlZW4gY3JlYXRlZCBi eSBub3cgYW5kIGludGVycnVwdHMgYWxzbyB3b3VsZAo+PiBub3QgaGF2ZQo+PiArICAgICAqIGJl ZW4gZW5hYmxlZC4KPj4gKyAgICAgKi8KPj4gKyAgICBpZiAoIWRldl9wcml2LT5ndWMubG9nLnJl bGF5X2NoYW4pIHsKPj4gKyAgICAgICAgcmV0ID0gZ3VjX2xvZ19sYXRlX3NldHVwKGRldik7Cj4+ ICsgICAgICAgIGlmICghcmV0KQo+PiArICAgICAgICAgICAgZ2VuOV9lbmFibGVfZ3VjX2ludGVy cnVwdHMoZGV2X3ByaXYpOwo+Cj4gSG0sIGxvb2sgYXQgdGhlIGFib3ZlIGFuZCBiZWxvdywgZG8g d2UgbmVlZCB0byBjcmVhdGUgdGhlIHJlbGF5IGNoYW5uZWwKPiBpZiBsb2dnaW5nX2VuYWJsZWQg PT0gZmFsc2UgPwoKQ2FuIGNvbWUgaGVyZSBvbmx5IGlmIGxvZ2dpbmcgaXMgZW5hYmxlZCwgYnkg dGhlIHZpcnR1ZSBvZiBhYm92ZSBjaGVjaywKICAgICAgICAvKiBUaGlzIGNvbWJpbmF0aW9uIGRv ZXNuJ3QgbWFrZSBzZW5zZSAmIHdvbid0IGhhdmUgYW55IGVmZmVjdCAqLwogICAgICAgIGlmICgh bG9nX3BhcmFtLmxvZ2dpbmdfZW5hYmxlZCAmJiAoaTkxNS5ndWNfbG9nX2xldmVsIDwgMCkpCgkg ICByZXR1cm4gLUVJTlZBTDsKCldoZW4gZ3VjX2xvZ19sZXZlbCA8IDAsIGZpcnN0IHdyaXRlIG9u IHRoaXMgZmlsZSBieSBVc2VyIHNob3VsZCBiZSB0byAKZW5hYmxlIGxvZ2dpbmcuCgpCZXN0IHJl Z2FyZHMKQWthc2gKCj4KPj4gKyAgICB9IGVsc2UgaWYgKCFsb2dfcGFyYW0ubG9nZ2luZ19lbmFi bGVkKSB7Cj4+ICsgICAgICAgIC8qIE9uY2UgbG9nZ2luZyBpcyBkaXNhYmxlZCwgR3VDIHdvbid0 IGdlbmVyYXRlIGxvZ3MgJiBzZW5kIGFuCj4+ICsgICAgICAgICAqIGludGVycnVwdC4gQnV0IHRo ZXJlIGNvdWxkIGJlIHNvbWUgZGF0YSBpbiB0aGUgbG9nIGJ1ZmZlcgo+PiArICAgICAgICAgKiB3 aGljaCBpcyB5ZXQgdG8gYmUgY2FwdHVyZWQuIFNvIHJlcXVlc3QgR3VDIHRvIHVwZGF0ZSB0aGUg bG9nCj4+ICsgICAgICAgICAqIGJ1ZmZlciBzdGF0ZSBhbmQgc2VuZCB0aGUgZmx1c2ggaW50ZXJy dXB0IHNvIHRoYXQgSG9zdCBjYW4KPj4gKyAgICAgICAgICogY29sbGVjdCB0aGUgbGVmdCBvdmVy IGxvZ3MgYWxzby4KPj4gKyAgICAgICAgICovCj4+ICsgICAgICAgIGZsdXNoX3dvcmsoJmRldl9w cml2LT5ndWMuZXZlbnRzX3dvcmspOwo+PiArICAgICAgICBob3N0Mmd1Y19mb3JjZV9sb2didWZm ZXJfZmx1c2goJmRldl9wcml2LT5ndWMpOwo+PiArICAgIH0KPj4gKwo+PiArICAgIHJldHVybiBy ZXQ7Cj4+ICt9Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMu aAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4+IGluZGV4IGVkNzczYjUu LmQ1NmJkZTYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5o Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4+IEBAIC0xNzgsNSAr MTc4LDYgQEAgdm9pZCBpOTE1X2d1Y19jYXB0dXJlX2xvZ3Moc3RydWN0IGRybV9kZXZpY2UgKmRl dik7Cj4+ICAgdm9pZCBpOTE1X2d1Y19jYXB0dXJlX2xvZ3Nfb25fcmVzZXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldik7Cj4+ICAgdm9pZCBpOTE1X2d1Y19yZWdpc3RlcihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKPj4gICB2b2lkIGk5MTVfZ3VjX3VucmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2Ug KmRldik7Cj4+ICtpbnQgaTkxNV9ndWNfbG9nX2NvbnRyb2woc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdWludDY0X3QgY29udHJvbF92YWwpOwo+Pgo+PiAgICNlbmRpZgo+Pgo+Cj4gUmVnYXJkcywK Pgo+IFR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK