From mboxrd@z Thu Jan 1 00:00:00 1970 From: oscar.mateo@intel.com Subject: [PATCH 26/53] drm/i915/bdw: New logical ring submission mechanism Date: Fri, 13 Jun 2014 16:37:44 +0100 Message-ID: <1402673891-14618-27-git-send-email-oscar.mateo@intel.com> References: <1402673891-14618-1-git-send-email-oscar.mateo@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id D66256EA6E for ; Fri, 13 Jun 2014 08:43:18 -0700 (PDT) In-Reply-To: <1402673891-14618-1-git-send-email-oscar.mateo@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogT3NjYXIgTWF0ZW8gPG9zY2FyLm1hdGVvQGludGVsLmNvbT4KCldlbGwsIG5ldy1pc2g6 IGlmIGFsbCB0aGlzIGNvZGUgbG9va3MgZmFtaWxpYXIsIHRoYXQncyBiZWNhdXNlIGl0J3MKYSBj bG9uZSBvZiB0aGUgZXhpc3Rpbmcgc3VibWlzc2lvbiBtZWNoYW5pc20gKHdpdGggc29tZSBtb2Rp ZmljYXRpb25zCmhlcmUgYW5kIHRoZXJlIHRvIGFkYXB0IGl0IHRvIExSQ3MgYW5kIEV4ZWNsaXN0 cykuCgpBbmQgd2h5IGRpZCB3ZSBkbyB0aGlzPyBFeGVjbGlzdHMgb2ZmZXIgc2V2ZXJhbCBhZHZh bnRhZ2VzLCBsaWtlCmNvbnRyb2wgb3ZlciB3aGVuIHRoZSBHUFUgaXMgZG9uZSB3aXRoIGEgZ2l2 ZW4gd29ya2xvYWQsIHRoYXQgY2FuCmhlbHAgc2ltcGxpZnkgdGhlIHN1Ym1pc3Npb24gbWVjaGFu aXNtLCBubyBkb3VidCwgYnV0IEkgYW0gaW50ZXJlc3RlZAppbiBnZXR0aW5nIEV4ZWNsaXN0cyB0 byB3b3JrIGZpcnN0IGFuZCBmb3JlbW9zdC4gQXMgd2UgYXJlIGNyZWF0aW5nCmEgcGFyYWxsZWwg c3VibWlzc2lvbiBtZWNoYW5pc20gKGV2ZW4gaWYgaXTDscWbIGp1c3QgYSBjbG9uZSksIHdlIGNh bgpub3cgc3RhcnQgaW1wcm92aW5nIGl0IHdpdGhvdXQgdGhlIGZlYXIgb2YgYnJlYWtpbmcgb2xk IGdlbnMuCgpTaWduZWQtb2ZmLWJ5OiBPc2NhciBNYXRlbyA8b3NjYXIubWF0ZW9AaW50ZWwuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIHwgMjE0ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmggfCAgMTggKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyMzIgaW5zZXJ0aW9ucygrKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggMDJmYzNkMC4uODlhZWQ3YSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmMKQEAgLTg2LDYgKzg2LDIyMCBAQCBib29sIGludGVsX2VuYWJsZV9leGVj bGlzdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlyZXR1cm4gSEFTX0xPR0lDQUxfUklOR19D T05URVhUUyhkZXYpICYmIFVTRVNfUFBHVFQoZGV2KTsKIH0KIAorc3RhdGljIGlubGluZSBzdHJ1 Y3QgaW50ZWxfcmluZ2J1ZmZlciAqCitsb2dpY2FsX3JpbmdidWZfZ2V0KHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKnJpbmcsIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpCit7CisJcmV0dXJuIGN0 eC0+ZW5naW5lW3JpbmctPmlkXS5yaW5nYnVmOworfQorCit2b2lkIGludGVsX2xvZ2ljYWxfcmlu Z19hZHZhbmNlX2FuZF9zdWJtaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKKwkJCQkJ ICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCkKK3sKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZl ciAqcmluZ2J1ZiA9IGxvZ2ljYWxfcmluZ2J1Zl9nZXQocmluZywgY3R4KTsKKworCWludGVsX2xv Z2ljYWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOworCisJaWYgKGludGVsX3Jpbmdfc3RvcHBlZChy aW5nKSkKKwkJcmV0dXJuOworCisJcmluZy0+c3VibWl0X2N0eChyaW5nLCBjdHgsIHJpbmdidWYt PnRhaWwpOworfQorCitzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ19hbGxvY19zZXFubyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nLAorCQkJCSAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4 KQoreworCWlmIChyaW5nLT5vdXRzdGFuZGluZ19sYXp5X3NlcW5vKQorCQlyZXR1cm4gMDsKKwor CWlmIChyaW5nLT5wcmVhbGxvY2F0ZWRfbGF6eV9yZXF1ZXN0ID09IE5VTEwpIHsKKwkJc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0OworCisJCXJlcXVlc3QgPSBrbWFsbG9jKHNp emVvZigqcmVxdWVzdCksIEdGUF9LRVJORUwpOworCQlpZiAocmVxdWVzdCA9PSBOVUxMKQorCQkJ cmV0dXJuIC1FTk9NRU07CisKKwkJcmluZy0+cHJlYWxsb2NhdGVkX2xhenlfcmVxdWVzdCA9IHJl cXVlc3Q7CisJfQorCisJcmV0dXJuIGk5MTVfZ2VtX2dldF9zZXFubyhyaW5nLT5kZXYsICZyaW5n LT5vdXRzdGFuZGluZ19sYXp5X3NlcW5vKTsKK30KKworc3RhdGljIGludCBsb2dpY2FsX3Jpbmdf d2FpdF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCisJCQkJICAgICBzdHJ1 Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKKwkJCQkgICAgIHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjdHgsCisJCQkJICAgICBpbnQgYnl0ZXMpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXF1ZXN0OworCXUzMiBzZXFubyA9IDA7CisJaW50IHJldDsKKworCWlmIChyaW5n YnVmLT5sYXN0X3JldGlyZWRfaGVhZCAhPSAtMSkgeworCQlyaW5nYnVmLT5oZWFkID0gcmluZ2J1 Zi0+bGFzdF9yZXRpcmVkX2hlYWQ7CisJCXJpbmdidWYtPmxhc3RfcmV0aXJlZF9oZWFkID0gLTE7 CisKKwkJcmluZ2J1Zi0+c3BhY2UgPSBpbnRlbF9yaW5nX3NwYWNlKHJpbmdidWYpOworCQlpZiAo cmluZ2J1Zi0+c3BhY2UgPj0gYnl0ZXMpCisJCQlyZXR1cm4gMDsKKwl9CisKKwlsaXN0X2Zvcl9l YWNoX2VudHJ5KHJlcXVlc3QsICZyaW5nLT5yZXF1ZXN0X2xpc3QsIGxpc3QpIHsKKwkJaWYgKF9f aW50ZWxfcmluZ19zcGFjZShyZXF1ZXN0LT50YWlsLCByaW5nYnVmLT50YWlsLAorCQkJCXJpbmdi dWYtPnNpemUpID49IGJ5dGVzKSB7CisJCQlzZXFubyA9IHJlcXVlc3QtPnNlcW5vOworCQkJYnJl YWs7CisJCX0KKwl9CisKKwlpZiAoc2Vxbm8gPT0gMCkKKwkJcmV0dXJuIC1FTk9TUEM7CisKKwly ZXQgPSBpOTE1X3dhaXRfc2Vxbm8ocmluZywgc2Vxbm8pOworCWlmIChyZXQpCisJCXJldHVybiBy ZXQ7CisKKwkvKiBUT0RPOiBtYWtlIHN1cmUgd2UgdXBkYXRlIHRoZSByaWdodCByaW5nYnVmZmVy J3MgbGFzdF9yZXRpcmVkX2hlYWQKKwkgKiB3aGVuIHJldGlyaW5nIHJlcXVlc3RzICovCisJaTkx NV9nZW1fcmV0aXJlX3JlcXVlc3RzX3JpbmcocmluZyk7CisJcmluZ2J1Zi0+aGVhZCA9IHJpbmdi dWYtPmxhc3RfcmV0aXJlZF9oZWFkOworCXJpbmdidWYtPmxhc3RfcmV0aXJlZF9oZWFkID0gLTE7 CisKKwlyaW5nYnVmLT5zcGFjZSA9IGludGVsX3Jpbmdfc3BhY2UocmluZ2J1Zik7CisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgbG9naWNhbF9yaW5nX3dhaXRfZm9yX3NwYWNlKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmcsCisJCQkJCQkgICBzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAq cmluZ2J1ZiwKKwkJCQkJCSAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCisJCQkJCQkgICBp bnQgYnl0ZXMpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHJpbmctPmRldjsKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXVuc2ln bmVkIGxvbmcgZW5kOworCWludCByZXQ7CisKKwlyZXQgPSBsb2dpY2FsX3Jpbmdfd2FpdF9yZXF1 ZXN0KHJpbmcsIHJpbmdidWYsIGN0eCwgYnl0ZXMpOworCWlmIChyZXQgIT0gLUVOT1NQQykKKwkJ cmV0dXJuIHJldDsKKworCS8qIEZvcmNlIHRoZSBjb250ZXh0IHN1Ym1pc3Npb24gaW4gY2FzZSB3 ZSBoYXZlIGJlZW4gc2tpcHBpbmcgaXQgKi8KKwlpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZV9h bmRfc3VibWl0KHJpbmcsIGN0eCk7CisKKwkvKiBXaXRoIEdFTSB0aGUgaGFuZ2NoZWNrIHRpbWVy IHNob3VsZCBraWNrIHVzIG91dCBvZiB0aGUgbG9vcCwKKwkgKiBsZWF2aW5nIGl0IGVhcmx5IHJ1 bnMgdGhlIHJpc2sgb2YgY29ycnVwdGluZyBHRU0gc3RhdGUgKGR1ZQorCSAqIHRvIHJ1bm5pbmcg b24gYWxtb3N0IHVudGVzdGVkIGNvZGVwYXRocykuIEJ1dCBvbiByZXN1bWUKKwkgKiB0aW1lcnMg ZG9uJ3Qgd29yayB5ZXQsIHNvIHByZXZlbnQgYSBjb21wbGV0ZSBoYW5nIGluIHRoYXQKKwkgKiBj YXNlIGJ5IGNob29zaW5nIGFuIGluc2FuZWx5IGxhcmdlIHRpbWVvdXQuICovCisJZW5kID0gamlm ZmllcyArIDYwICogSFo7CisKKwlkbyB7CisJCXJpbmdidWYtPmhlYWQgPSBJOTE1X1JFQURfSEVB RChyaW5nKTsKKwkJcmluZ2J1Zi0+c3BhY2UgPSBpbnRlbF9yaW5nX3NwYWNlKHJpbmdidWYpOwor CQlpZiAocmluZ2J1Zi0+c3BhY2UgPj0gYnl0ZXMpIHsKKwkJCXJldCA9IDA7CisJCQlicmVhazsK KwkJfQorCisJCWlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9NT0RFU0VU KSAmJgorCQkgICAgZGV2LT5wcmltYXJ5LT5tYXN0ZXIpIHsKKwkJCXN0cnVjdCBkcm1faTkxNV9t YXN0ZXJfcHJpdmF0ZSAqbWFzdGVyX3ByaXYgPSBkZXYtPnByaW1hcnktPm1hc3Rlci0+ZHJpdmVy X3ByaXY7CisJCQlpZiAobWFzdGVyX3ByaXYtPnNhcmVhX3ByaXYpCisJCQkJbWFzdGVyX3ByaXYt PnNhcmVhX3ByaXYtPnBlcmZfYm94ZXMgfD0gSTkxNV9CT1hfV0FJVDsKKwkJfQorCisJCW1zbGVl cCgxKTsKKworCQlpZiAoZGV2X3ByaXYtPm1tLmludGVycnVwdGlibGUgJiYgc2lnbmFsX3BlbmRp bmcoY3VycmVudCkpIHsKKwkJCXJldCA9IC1FUkVTVEFSVFNZUzsKKwkJCWJyZWFrOworCQl9CisK KwkJcmV0ID0gaTkxNV9nZW1fY2hlY2tfd2VkZ2UoJmRldl9wcml2LT5ncHVfZXJyb3IsCisJCQkJ CSAgIGRldl9wcml2LT5tbS5pbnRlcnJ1cHRpYmxlKTsKKwkJaWYgKHJldCkKKwkJCWJyZWFrOwor CisJCWlmICh0aW1lX2FmdGVyKGppZmZpZXMsIGVuZCkpIHsKKwkJCXJldCA9IC1FQlVTWTsKKwkJ CWJyZWFrOworCQl9CisJfSB3aGlsZSAoMSk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMg aW50IGxvZ2ljYWxfcmluZ193cmFwX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n LAorCQkJCQkJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCisJCQkJCQlzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY3R4KQoreworCXVpbnQzMl90IF9faW9tZW0gKnZpcnQ7CisJaW50IHJl bSA9IHJpbmdidWYtPnNpemUgLSByaW5nYnVmLT50YWlsOworCisJaWYgKHJpbmdidWYtPnNwYWNl IDwgcmVtKSB7CisJCWludCByZXQgPSBsb2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2UocmluZywg cmluZ2J1ZiwgY3R4LCByZW0pOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwl9CisKKwl2 aXJ0ID0gcmluZ2J1Zi0+dmlydHVhbF9zdGFydCArIHJpbmdidWYtPnRhaWw7CisJcmVtIC89IDQ7 CisJd2hpbGUgKHJlbS0tKQorCQlpb3dyaXRlMzIoTUlfTk9PUCwgdmlydCsrKTsKKworCXJpbmdi dWYtPnRhaWwgPSAwOworCXJpbmdidWYtPnNwYWNlID0gaW50ZWxfcmluZ19zcGFjZShyaW5nYnVm KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ19wcmVwYXJlKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCisJCQkJc3RydWN0IGludGVsX3JpbmdidWZmZXIg KnJpbmdidWYsCisJCQkJc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKKwkJCQlpbnQgYnl0ZXMp Cit7CisJaW50IHJldDsKKworCWlmICh1bmxpa2VseShyaW5nYnVmLT50YWlsICsgYnl0ZXMgPiBy aW5nYnVmLT5lZmZlY3RpdmVfc2l6ZSkpIHsKKwkJcmV0ID0gbG9naWNhbF9yaW5nX3dyYXBfYnVm ZmVyKHJpbmcsIHJpbmdidWYsIGN0eCk7CisJCWlmICh1bmxpa2VseShyZXQpKQorCQkJcmV0dXJu IHJldDsKKwl9CisKKwlpZiAodW5saWtlbHkocmluZ2J1Zi0+c3BhY2UgPCBieXRlcykpIHsKKwkJ cmV0ID0gbG9naWNhbF9yaW5nX3dhaXRfZm9yX3NwYWNlKHJpbmcsIHJpbmdidWYsIGN0eCwgYnl0 ZXMpOworCQlpZiAodW5saWtlbHkocmV0KSkKKwkJCXJldHVybiByZXQ7CisJfQorCisJcmV0dXJu IDA7Cit9CisKK2ludCBpbnRlbF9sb2dpY2FsX3JpbmdfYmVnaW4oc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZywKKwkJCSAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKKwkJCSAgICAg aW50IG51bV9kd29yZHMpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g cmluZy0+ZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1 ZiA9IGxvZ2ljYWxfcmluZ2J1Zl9nZXQocmluZywgY3R4KTsKKwlpbnQgcmV0OworCisJcmV0ID0g aTkxNV9nZW1fY2hlY2tfd2VkZ2UoJmRldl9wcml2LT5ncHVfZXJyb3IsCisJCQkJICAgZGV2X3By aXYtPm1tLmludGVycnVwdGlibGUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQg PSBsb2dpY2FsX3JpbmdfcHJlcGFyZShyaW5nLCByaW5nYnVmLCBjdHgsCisJCQludW1fZHdvcmRz ICogc2l6ZW9mKHVpbnQzMl90KSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIFBy ZWFsbG9jYXRlIHRoZSBvbHIgYmVmb3JlIHRvdWNoaW5nIHRoZSByaW5nICovCisJcmV0ID0gbG9n aWNhbF9yaW5nX2FsbG9jX3NlcW5vKHJpbmcsIGN0eCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJl dDsKKworCXJpbmdidWYtPnNwYWNlIC09IG51bV9kd29yZHMgKiBzaXplb2YodWludDMyX3QpOwor CXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IGdlbjhfaW5pdF9jb21tb25fcmluZyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByaW5n LT5kZXY7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCmluZGV4IDI2YjA5NDkuLjY4NmViZjUgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCkBAIC01LDYgKzUsMjQgQEAKIHZvaWQgaW50ZWxfbG9n aWNhbF9yaW5nX2NsZWFudXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyk7CiBpbnQgaW50 ZWxfbG9naWNhbF9yaW5nc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogCit2b2lkIGlu dGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlX2FuZF9zdWJtaXQoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZywKKwkJCQkJICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCk7CisKK3N0YXRpYyBp bmxpbmUgdm9pZCBpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZShzdHJ1Y3QgaW50ZWxfcmluZ2J1 ZmZlciAqcmluZ2J1ZikKK3sKKwlyaW5nYnVmLT50YWlsICY9IHJpbmdidWYtPnNpemUgLSAxOwor fQorCitzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQoc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKnJpbmdidWYsIHUzMiBkYXRhKQoreworCWlvd3JpdGUzMihkYXRhLCBy aW5nYnVmLT52aXJ0dWFsX3N0YXJ0ICsgcmluZ2J1Zi0+dGFpbCk7CisJcmluZ2J1Zi0+dGFpbCAr PSA0OworfQorCitpbnQgaW50ZWxfbG9naWNhbF9yaW5nX2JlZ2luKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnJpbmcsCisJCQkgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCisJCQkgICAg IGludCBudW1fZHdvcmRzKTsKKwogLyogTG9naWNhbCBSaW5nIENvbnRleHRzICovCiB2b2lkIGlu dGVsX2xyX2NvbnRleHRfZnJlZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4KTsKIGludCBpbnRl bF9scl9jb250ZXh0X2RlZmVycmVkX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAot LSAKMS45LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==