From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Wed, 22 May 2019 14:32:40 +0100 Message-Id: <20190522133240.26624-2-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20190522133240.26624-1-tvrtko.ursulin@linux.intel.com> References: <20190522133240.26624-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 2/2] tests/i915_query: Engine discovery tests 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 Cc: Intel-gfx@lists.freedesktop.org, Tvrtko Ursulin List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClRlc3QgdGhl IG5ldyBlbmdpbmUgZGlzY292ZXJ5IHF1ZXJ5LgoKU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3Vs aW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZGkgU2h5dGkgPGFu ZGkuc2h5dGlAaW50ZWwuY29tPgotLS0KIHRlc3RzL2k5MTUvaTkxNV9xdWVyeS5jIHwgMjQ3ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAy NDcgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvaTkxNV9xdWVyeS5jIGIv dGVzdHMvaTkxNS9pOTE1X3F1ZXJ5LmMKaW5kZXggN2QwYzBlM2EwNjFjLi5lY2JlYzNhZTE0MWQg MTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvaTkxNV9xdWVyeS5jCisrKyBiL3Rlc3RzL2k5MTUvaTkx NV9xdWVyeS5jCkBAIC00ODMsNiArNDgzLDI0MSBAQCB0ZXN0X3F1ZXJ5X3RvcG9sb2d5X2tub3du X3BjaV9pZHMoaW50IGZkLCBpbnQgZGV2aWQpCiAJZnJlZSh0b3BvX2luZm8pOwogfQogCitzdGF0 aWMgYm9vbCBxdWVyeV9lbmdpbmVfaW5mb19zdXBwb3J0ZWQoaW50IGZkKQoreworCXN0cnVjdCBk cm1faTkxNV9xdWVyeV9pdGVtIGl0ZW0gPSB7CisJCS5xdWVyeV9pZCA9IERSTV9JOTE1X1FVRVJZ X0VOR0lORV9JTkZPLAorCX07CisKKwlyZXR1cm4gX19pOTE1X3F1ZXJ5X2l0ZW1zKGZkLCAmaXRl bSwgMSkgPT0gMCAmJiBpdGVtLmxlbmd0aCA+IDA7Cit9CisKK3N0YXRpYyB2b2lkIGVuZ2luZXNf aW52YWxpZChpbnQgZmQpCit7CisJc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9pbmZvICpl bmdpbmVzOworCXN0cnVjdCBkcm1faTkxNV9xdWVyeV9pdGVtIGl0ZW07CisJdW5zaWduZWQgaW50 IGxlbjsKKworCS8qIEZsYWdzIGlzIE1CWi4gKi8KKwltZW1zZXQoJml0ZW0sIDAsIHNpemVvZihp dGVtKSk7CisJaXRlbS5xdWVyeV9pZCA9IERSTV9JOTE1X1FVRVJZX0VOR0lORV9JTkZPOworCWl0 ZW0uZmxhZ3MgPSAxOworCWk5MTVfcXVlcnlfaXRlbXMoZmQsICZpdGVtLCAxKTsKKwlpZ3RfYXNz ZXJ0X2VxKGl0ZW0ubGVuZ3RoLCAtRUlOVkFMKTsKKworCS8qIExlbmd0aCBub3QgemVybyBhbmQg bm90IGdyZWF0ZXIgb3IgZXF1YWwgcmVxdWlyZWQgc2l6ZS4gKi8KKwltZW1zZXQoJml0ZW0sIDAs IHNpemVvZihpdGVtKSk7CisJaXRlbS5xdWVyeV9pZCA9IERSTV9JOTE1X1FVRVJZX0VOR0lORV9J TkZPOworCWl0ZW0ubGVuZ3RoID0gMTsKKwlpOTE1X3F1ZXJ5X2l0ZW1zKGZkLCAmaXRlbSwgMSk7 CisJaWd0X2Fzc2VydF9lcShpdGVtLmxlbmd0aCwgLUVJTlZBTCk7CisKKwkvKiBRdWVyeSBjb3Jy ZWN0IGxlbmd0aC4gKi8KKwltZW1zZXQoJml0ZW0sIDAsIHNpemVvZihpdGVtKSk7CisJaXRlbS5x dWVyeV9pZCA9IERSTV9JOTE1X1FVRVJZX0VOR0lORV9JTkZPOworCWk5MTVfcXVlcnlfaXRlbXMo ZmQsICZpdGVtLCAxKTsKKwlpZ3RfYXNzZXJ0KGl0ZW0ubGVuZ3RoID49IDApOworCWxlbiA9IGl0 ZW0ubGVuZ3RoOworCisJZW5naW5lcyA9IG1hbGxvYyhsZW4pOworCWlndF9hc3NlcnQoZW5naW5l cyk7CisKKwkvKiBJdmFsaWQgcG9pbnRlci4gKi8KKwltZW1zZXQoJml0ZW0sIDAsIHNpemVvZihp dGVtKSk7CisJaXRlbS5xdWVyeV9pZCA9IERSTV9JOTE1X1FVRVJZX0VOR0lORV9JTkZPOworCWl0 ZW0ubGVuZ3RoID0gbGVuOworCWk5MTVfcXVlcnlfaXRlbXMoZmQsICZpdGVtLCAxKTsKKwlpZ3Rf YXNzZXJ0X2VxKGl0ZW0ubGVuZ3RoLCAtRUZBVUxUKTsKKworCS8qIEFsbCBmaWVsZHMgaW4gZW5n aW5lcyBxdWVyeSBhcmUgTUJaIGFuZCBvbmx5IGZpbGxlZCBieSB0aGUga2VybmVsLiAqLworCisJ bWVtc2V0KGVuZ2luZXMsIDAsIGxlbik7CisJZW5naW5lcy0+bnVtX2VuZ2luZXMgPSAxOworCW1l bXNldCgmaXRlbSwgMCwgc2l6ZW9mKGl0ZW0pKTsKKwlpdGVtLnF1ZXJ5X2lkID0gRFJNX0k5MTVf UVVFUllfRU5HSU5FX0lORk87CisJaXRlbS5sZW5ndGggPSBsZW47CisJaXRlbS5kYXRhX3B0ciA9 IHRvX3VzZXJfcG9pbnRlcihlbmdpbmVzKTsKKwlpOTE1X3F1ZXJ5X2l0ZW1zKGZkLCAmaXRlbSwg MSk7CisJaWd0X2Fzc2VydF9lcShpdGVtLmxlbmd0aCwgLUVJTlZBTCk7CisKKwltZW1zZXQoZW5n aW5lcywgMCwgbGVuKTsKKwllbmdpbmVzLT5yc3ZkWzBdID0gMTsKKwltZW1zZXQoJml0ZW0sIDAs IHNpemVvZihpdGVtKSk7CisJaXRlbS5xdWVyeV9pZCA9IERSTV9JOTE1X1FVRVJZX0VOR0lORV9J TkZPOworCWl0ZW0ubGVuZ3RoID0gbGVuOworCWl0ZW0uZGF0YV9wdHIgPSB0b191c2VyX3BvaW50 ZXIoZW5naW5lcyk7CisJaTkxNV9xdWVyeV9pdGVtcyhmZCwgJml0ZW0sIDEpOworCWlndF9hc3Nl cnRfZXEoaXRlbS5sZW5ndGgsIC1FSU5WQUwpOworCisJbWVtc2V0KGVuZ2luZXMsIDAsIGxlbik7 CisJZW5naW5lcy0+cnN2ZFsxXSA9IDE7CisJbWVtc2V0KCZpdGVtLCAwLCBzaXplb2YoaXRlbSkp OworCWl0ZW0ucXVlcnlfaWQgPSBEUk1fSTkxNV9RVUVSWV9FTkdJTkVfSU5GTzsKKwlpdGVtLmxl bmd0aCA9IGxlbjsKKwlpdGVtLmRhdGFfcHRyID0gdG9fdXNlcl9wb2ludGVyKGVuZ2luZXMpOwor CWk5MTVfcXVlcnlfaXRlbXMoZmQsICZpdGVtLCAxKTsKKwlpZ3RfYXNzZXJ0X2VxKGl0ZW0ubGVu Z3RoLCAtRUlOVkFMKTsKKworCW1lbXNldChlbmdpbmVzLCAwLCBsZW4pOworCWVuZ2luZXMtPnJz dmRbMl0gPSAxOworCW1lbXNldCgmaXRlbSwgMCwgc2l6ZW9mKGl0ZW0pKTsKKwlpdGVtLnF1ZXJ5 X2lkID0gRFJNX0k5MTVfUVVFUllfRU5HSU5FX0lORk87CisJaXRlbS5sZW5ndGggPSBsZW47CisJ aXRlbS5kYXRhX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihlbmdpbmVzKTsKKwlpOTE1X3F1ZXJ5X2l0 ZW1zKGZkLCAmaXRlbSwgMSk7CisJaWd0X2Fzc2VydF9lcShpdGVtLmxlbmd0aCwgLUVJTlZBTCk7 CisKKwlmcmVlKGVuZ2luZXMpOworCisJaWd0X2Fzc2VydChsZW4gPD0gNDA5Nik7CisJZW5naW5l cyA9IG1tYXAoMCwgNDA5NiwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBN QVBfQU5PTiwKKwkJICAgICAgIC0xLCAwKTsKKwlpZ3RfYXNzZXJ0KGVuZ2luZXMgIT0gTUFQX0ZB SUxFRCk7CisKKwkvKiBQUk9UX05PTkUgaXMgc2ltaWxhciB0byB1bm1hcHBlZCBhcmVhLiAqLwor CW1lbXNldChlbmdpbmVzLCAwLCBsZW4pOworCWlndF9hc3NlcnRfZXEobXByb3RlY3QoZW5naW5l cywgbGVuLCBQUk9UX05PTkUpLCAwKTsKKwltZW1zZXQoJml0ZW0sIDAsIHNpemVvZihpdGVtKSk7 CisJaXRlbS5xdWVyeV9pZCA9IERSTV9JOTE1X1FVRVJZX0VOR0lORV9JTkZPOworCWl0ZW0ubGVu Z3RoID0gbGVuOworCWl0ZW0uZGF0YV9wdHIgPSB0b191c2VyX3BvaW50ZXIoZW5naW5lcyk7CisJ aTkxNV9xdWVyeV9pdGVtcyhmZCwgJml0ZW0sIDEpOworCWlndF9hc3NlcnRfZXEoaXRlbS5sZW5n dGgsIC1FRkFVTFQpOworCWlndF9hc3NlcnRfZXEobXByb3RlY3QoZW5naW5lcywgbGVuLCBQUk9U X1dSSVRFKSwgMCk7CisKKwkvKiBSZWFkLW9ubHkgc28ga2VybmVsIGNhbm5vdCBmaWxsIHRoZSBk YXRhIGJhY2suICovCisJbWVtc2V0KGVuZ2luZXMsIDAsIGxlbik7CisJaWd0X2Fzc2VydF9lcSht cHJvdGVjdChlbmdpbmVzLCBsZW4sIFBST1RfUkVBRCksIDApOworCW1lbXNldCgmaXRlbSwgMCwg c2l6ZW9mKGl0ZW0pKTsKKwlpdGVtLnF1ZXJ5X2lkID0gRFJNX0k5MTVfUVVFUllfRU5HSU5FX0lO Rk87CisJaXRlbS5sZW5ndGggPSBsZW47CisJaXRlbS5kYXRhX3B0ciA9IHRvX3VzZXJfcG9pbnRl cihlbmdpbmVzKTsKKwlpOTE1X3F1ZXJ5X2l0ZW1zKGZkLCAmaXRlbSwgMSk7CisJaWd0X2Fzc2Vy dF9lcShpdGVtLmxlbmd0aCwgLUVGQVVMVCk7CisKKwltdW5tYXAoZW5naW5lcywgNDA5Nik7Cit9 CisKK3N0YXRpYyBib29sCitoYXNfZW5naW5lKHN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVf aW5mbyAqZW5naW5lcywKKwkgICB1bnNpZ25lZCBjbGFzcywgdW5zaWduZWQgaW5zdGFuY2UpCit7 CisJdW5zaWduZWQgaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgZW5naW5lcy0+bnVtX2VuZ2lu ZXM7IGkrKykgeworCQlzdHJ1Y3QgZHJtX2k5MTVfZW5naW5lX2luZm8gKmVuZ2luZSA9CisJCQko c3RydWN0IGRybV9pOTE1X2VuZ2luZV9pbmZvICopJmVuZ2luZXMtPmVuZ2luZXNbaV07CisKKwkJ aWYgKGVuZ2luZS0+ZW5naW5lLmVuZ2luZV9jbGFzcyA9PSBjbGFzcyAmJgorCQkgICAgZW5naW5l LT5lbmdpbmUuZW5naW5lX2luc3RhbmNlID09IGluc3RhbmNlKQorCQkJcmV0dXJuIHRydWU7CisJ fQorCisJcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBlbmdpbmVzKGludCBmZCkKK3sK KwlzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2luZm8gKmVuZ2luZXM7CisJc3RydWN0IGRy bV9pOTE1X3F1ZXJ5X2l0ZW0gaXRlbTsKKwl1bnNpZ25lZCBpbnQgbGVuLCBpOworCisJZW5naW5l cyA9IG1hbGxvYyg0MDk2KTsKKwlpZ3RfYXNzZXJ0KGVuZ2luZXMpOworCisJLyogUXVlcnkgcmVx dWlyZWQgYnVmZmVyIGxlbmd0aC4gKi8KKwltZW1zZXQoZW5naW5lcywgMCwgNDA5Nik7CisJbWVt c2V0KCZpdGVtLCAwLCBzaXplb2YoaXRlbSkpOworCWl0ZW0ucXVlcnlfaWQgPSBEUk1fSTkxNV9R VUVSWV9FTkdJTkVfSU5GTzsKKwlpdGVtLmRhdGFfcHRyID0gdG9fdXNlcl9wb2ludGVyKGVuZ2lu ZXMpOworCWk5MTVfcXVlcnlfaXRlbXMoZmQsICZpdGVtLCAxKTsKKwlpZ3RfYXNzZXJ0KGl0ZW0u bGVuZ3RoID49IDApOworCWlndF9hc3NlcnQoaXRlbS5sZW5ndGggPD0gNDA5Nik7CisJbGVuID0g aXRlbS5sZW5ndGg7CisKKwkvKiBDaGVjayBsZW5ndGggbGFyZ2VyIHRoYW4gcmVxdWlyZWQgd29y a3MgYW5kIHJlcG9ydHMgc2FtZSBsZW5ndGguICovCisJbWVtc2V0KGVuZ2luZXMsIDAsIDQwOTYp OworCW1lbXNldCgmaXRlbSwgMCwgc2l6ZW9mKGl0ZW0pKTsKKwlpdGVtLnF1ZXJ5X2lkID0gRFJN X0k5MTVfUVVFUllfRU5HSU5FX0lORk87CisJaXRlbS5sZW5ndGggPSA0MDk2OworCWl0ZW0uZGF0 YV9wdHIgPSB0b191c2VyX3BvaW50ZXIoZW5naW5lcyk7CisJaTkxNV9xdWVyeV9pdGVtcyhmZCwg Jml0ZW0sIDEpOworCWlndF9hc3NlcnRfZXEoaXRlbS5sZW5ndGgsIGxlbik7CisKKwkvKiBBY3R1 YWwgcXVlcnkuICovCisJbWVtc2V0KGVuZ2luZXMsIDAsIDQwOTYpOworCW1lbXNldCgmaXRlbSwg MCwgc2l6ZW9mKGl0ZW0pKTsKKwlpdGVtLnF1ZXJ5X2lkID0gRFJNX0k5MTVfUVVFUllfRU5HSU5F X0lORk87CisJaXRlbS5sZW5ndGggPSBsZW47CisJaXRlbS5kYXRhX3B0ciA9IHRvX3VzZXJfcG9p bnRlcihlbmdpbmVzKTsKKwlpOTE1X3F1ZXJ5X2l0ZW1zKGZkLCAmaXRlbSwgMSk7CisJaWd0X2Fz c2VydF9lcShpdGVtLmxlbmd0aCwgbGVuKTsKKworCS8qIEV2ZXJ5IEdQVSBoYXMgYXQgbGVhc3Qg b25lIGVuZ2luZS4gKi8KKwlpZ3RfYXNzZXJ0KGVuZ2luZXMtPm51bV9lbmdpbmVzID4gMCk7CisK KwkvKiBNQlogZmllbGRzLiAqLworCWlndF9hc3NlcnRfZXEoZW5naW5lcy0+cnN2ZFswXSwgMCk7 CisJaWd0X2Fzc2VydF9lcShlbmdpbmVzLT5yc3ZkWzFdLCAwKTsKKwlpZ3RfYXNzZXJ0X2VxKGVu Z2luZXMtPnJzdmRbMl0sIDApOworCisJLyogQ2hlY2sgcmVzdWx0cyBtYXRjaCB0aGUgbGVnYWN5 IEdFVF9QQVJBTSAod2hlcmUgd2UgY2FuKS4gKi8KKwlmb3IgKGkgPSAwOyBpIDwgZW5naW5lcy0+ bnVtX2VuZ2luZXM7IGkrKykgeworCQlzdHJ1Y3QgZHJtX2k5MTVfZW5naW5lX2luZm8gKmVuZ2lu ZSA9CisJCQkoc3RydWN0IGRybV9pOTE1X2VuZ2luZV9pbmZvICopJmVuZ2luZXMtPmVuZ2luZXNb aV07CisKKwkJaWd0X2RlYnVnKCIldTogY2xhc3M9JXUgaW5zdGFuY2U9JXUgZmxhZ3M9JWxseCBj YXBhYmlsaXRpZXM9JWxseFxuIiwKKwkJCSAgaSwKKwkJCSAgZW5naW5lLT5lbmdpbmUuZW5naW5l X2NsYXNzLAorCQkJICBlbmdpbmUtPmVuZ2luZS5lbmdpbmVfaW5zdGFuY2UsCisJCQkgIGVuZ2lu ZS0+ZmxhZ3MsCisJCQkgIGVuZ2luZS0+Y2FwYWJpbGl0aWVzKTsKKworCQkvKiBNQlogZmllbGRz LiAqLworCQlpZ3RfYXNzZXJ0X2VxKGVuZ2luZS0+cnN2ZDAsIDApOworCQlpZ3RfYXNzZXJ0X2Vx KGVuZ2luZS0+cnN2ZDFbMF0sIDApOworCQlpZ3RfYXNzZXJ0X2VxKGVuZ2luZS0+cnN2ZDFbMV0s IDApOworCisJCXN3aXRjaCAoZW5naW5lLT5lbmdpbmUuZW5naW5lX2NsYXNzKSB7CisJCWNhc2Ug STkxNV9FTkdJTkVfQ0xBU1NfUkVOREVSOgorCQkJLyogV2lsbCBiZSB0ZXN0ZWQgbGF0ZXIuICov CisJCQlicmVhazsKKwkJY2FzZSBJOTE1X0VOR0lORV9DTEFTU19DT1BZOgorCQkJaWd0X2Fzc2Vy dChnZW1faGFzX2JsdChmZCkpOworCQkJYnJlYWs7CisJCWNhc2UgSTkxNV9FTkdJTkVfQ0xBU1Nf VklERU86CisJCQlzd2l0Y2ggKGVuZ2luZS0+ZW5naW5lLmVuZ2luZV9pbnN0YW5jZSkgeworCQkJ Y2FzZSAwOgorCQkJCWlndF9hc3NlcnQoZ2VtX2hhc19ic2QoZmQpKTsKKwkJCQlicmVhazsKKwkJ CWNhc2UgMToKKwkJCQlpZ3RfYXNzZXJ0KGdlbV9oYXNfYnNkMihmZCkpOworCQkJCWJyZWFrOwor CQkJfQorCQkJYnJlYWs7CisJCWNhc2UgSTkxNV9FTkdJTkVfQ0xBU1NfVklERU9fRU5IQU5DRToK KwkJCWlndF9hc3NlcnQoZ2VtX2hhc192ZWJveChmZCkpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6 CisJCQlpZ3RfYXNzZXJ0KDApOworCQl9CisJfQorCisJLyogUmV2ZXJzZSBjaGVjayB0byB0aGUg YWJvdmUgLSBhbGwgR0VUX1BBUkFNIGVuZ2luZXMgYXJlIHByZXNlbnQuICovCisJaWd0X2Fzc2Vy dChoYXNfZW5naW5lKGVuZ2luZXMsIEk5MTVfRU5HSU5FX0NMQVNTX1JFTkRFUiwgMCkpOworCWlm IChnZW1faGFzX2JsdChmZCkpCisJCWlndF9hc3NlcnQoaGFzX2VuZ2luZShlbmdpbmVzLCBJOTE1 X0VOR0lORV9DTEFTU19DT1BZLCAwKSk7CisJaWYgKGdlbV9oYXNfYnNkKGZkKSkKKwkJaWd0X2Fz c2VydChoYXNfZW5naW5lKGVuZ2luZXMsIEk5MTVfRU5HSU5FX0NMQVNTX1ZJREVPLCAwKSk7CisJ aWYgKGdlbV9oYXNfYnNkMihmZCkpCisJCWlndF9hc3NlcnQoaGFzX2VuZ2luZShlbmdpbmVzLCBJ OTE1X0VOR0lORV9DTEFTU19WSURFTywgMSkpOworCWlmIChnZW1faGFzX3ZlYm94KGZkKSkKKwkJ aWd0X2Fzc2VydChoYXNfZW5naW5lKGVuZ2luZXMsIEk5MTVfRU5HSU5FX0NMQVNTX1ZJREVPX0VO SEFOQ0UsCisJCQkJICAgICAgIDApKTsKKworCWZyZWUoZW5naW5lcyk7Cit9CisKIGlndF9tYWlu CiB7CiAJaW50IGZkID0gLTE7CkBAIC01MzAsNiArNzY1LDE4IEBAIGlndF9tYWluCiAJCXRlc3Rf cXVlcnlfdG9wb2xvZ3lfa25vd25fcGNpX2lkcyhmZCwgZGV2aWQpOwogCX0KIAorCWlndF9zdWJ0 ZXN0X2dyb3VwIHsKKwkJaWd0X2ZpeHR1cmUgeworCQkJaWd0X3JlcXVpcmUocXVlcnlfZW5naW5l X2luZm9fc3VwcG9ydGVkKGZkKSk7CisJCX0KKworCQlpZ3Rfc3VidGVzdCgiZW5naW5lLWluZm8t aW52YWxpZCIpCisJCQllbmdpbmVzX2ludmFsaWQoZmQpOworCisJCWlndF9zdWJ0ZXN0KCJlbmdp bmUtaW5mbyIpCisJCQllbmdpbmVzKGZkKTsKKwl9CisKIAlpZ3RfZml4dHVyZSB7CiAJCWNsb3Nl KGZkKTsKIAl9Ci0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0 LWRldg==