From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Wed, 8 May 2019 13:10:52 +0100 Message-Id: <20190508121058.27038-16-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20190508121058.27038-1-tvrtko.ursulin@linux.intel.com> References: <20190508121058.27038-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH i-g-t 15/21] gem_wsim: Engine bond command List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkVuZ2luZSBi b25kcyBhcmUgYW4gaTkxNSB1QVBJIGFwcGxpY2FibGUgdG8gbG9hZCBiYWxhbmNlZCBjb250ZXh0 cyB3aXRoCmVuZ2luZSBtYXAuIFRoZXkgYWxsb3cgZXhwcmVzc2lvbiBydWxlcyBvZiBlbmdpbmUg c2VsZWN0aW9uIGJldHdlZW4gdHdvCmNvbnRleHRzIHdoZW4gc3VibWlzc2lvbnMgYXJlIGFsc28g dGllZCB3aXRoIHN1Ym1pdCBmZW5jZXMuCgpQbGVhc2UgcmVmZXIgdG8gdGhlIFJFQURNRSBmb3Ig YSBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uLgoKU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3Vs aW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KLS0tCiBiZW5jaG1hcmtzL2dlbV93c2ltLmMg IHwgMTA3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiBiZW5jaG1h cmtzL3dzaW0vUkVBRE1FIHwgIDUwICsrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdl ZCwgMTUwIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYmVuY2ht YXJrcy9nZW1fd3NpbS5jIGIvYmVuY2htYXJrcy9nZW1fd3NpbS5jCmluZGV4IGI2MTBhNjAzZjdi MC4uY2M2ZjRhNzQyYzEyIDEwMDY0NAotLS0gYS9iZW5jaG1hcmtzL2dlbV93c2ltLmMKKysrIGIv YmVuY2htYXJrcy9nZW1fd3NpbS5jCkBAIC04NSw2ICs4NSw3IEBAIGVudW0gd190eXBlCiAJUFJF RU1QVElPTiwKIAlFTkdJTkVfTUFQLAogCUxPQURfQkFMQU5DRSwKKwlCT05ELAogfTsKIAogc3Ry dWN0IGRlcHMKQEAgLTEwMCw2ICsxMDEsMTEgQEAgc3RydWN0IHdfYXJnIHsKIAlpbnQgcHJpbzsK IH07CiAKK3N0cnVjdCBib25kIHsKKwl1aW50NjRfdCBtYXNrOworCWVudW0gaW50ZWxfZW5naW5l X2lkIG1hc3RlcjsKK307CisKIHN0cnVjdCB3X3N0ZXAKIHsKIAkvKiBXb3JrbG9hZCBzdGVwIG1l dGFkYXRhICovCkBAIC0xMjMsNiArMTI5LDEwIEBAIHN0cnVjdCB3X3N0ZXAKIAkJCWVudW0gaW50 ZWxfZW5naW5lX2lkICplbmdpbmVfbWFwOwogCQl9OwogCQlib29sIGxvYWRfYmFsYW5jZTsKKwkJ c3RydWN0IHsKKwkJCXVpbnQ2NF90IGJvbmRfbWFzazsKKwkJCWVudW0gaW50ZWxfZW5naW5lX2lk IGJvbmRfbWFzdGVyOworCQl9OwogCX07CiAKIAkvKiBJbXBsZW1lbnRhdGlvbiBkZXRhaWxzICov CkBAIC0xNTIsNiArMTYyLDggQEAgc3RydWN0IGN0eCB7CiAJaW50IHByaW9yaXR5OwogCXVuc2ln bmVkIGludCBlbmdpbmVfbWFwX2NvdW50OwogCWVudW0gaW50ZWxfZW5naW5lX2lkICplbmdpbmVf bWFwOworCXVuc2lnbmVkIGludCBib25kX2NvdW50OworCXN0cnVjdCBib25kICpib25kczsKIAli b29sIHRhcmdldHNfaW5zdGFuY2U7CiAJYm9vbCB3YW50c19iYWxhbmNlOwogCXVuc2lnbmVkIGlu dCBzdGF0aWNfdmNzOwpAQCAtNTIyLDYgKzUzNCw0MCBAQCBwYXJzZV93b3JrbG9hZChzdHJ1Y3Qg d19hcmcgKmFyZywgdW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3Qgd29ya2xvYWQgKmFwcF93KQog CiAJCQkJc3RlcC50eXBlID0gTE9BRF9CQUxBTkNFOwogCQkJCWdvdG8gYWRkX3N0ZXA7CisJCQl9 IGVsc2UgaWYgKCFzdHJjbXAoZmllbGQsICJiIikpIHsKKwkJCQl1bnNpZ25lZCBpbnQgbnIgPSAw OworCQkJCXdoaWxlICgoZmllbGQgPSBzdHJ0b2tfcihmc3RhcnQsICIuIiwgJmZjdHgpKSkgewor CQkJCQl0bXAgPSBhdG9pKGZpZWxkKTsKKwkJCQkJY2hlY2tfYXJnKG5yID09IDAgJiYgdG1wIDw9 IDAsCisJCQkJCQkgICJJbnZhbGlkIGNvbnRleHQgYXQgc3RlcCAldSFcbiIsCisJCQkJCQkgIG5y X3N0ZXBzKTsKKwkJCQkJY2hlY2tfYXJnKG5yID09IDEgJiYKKwkJCQkJCSAgKHRtcCA8IC0xIHx8 IHRtcCA9PSAwKSwKKwkJCQkJCSAgIkludmFsaWQgc2libGluZ3MgbWFzayBhdCBzdGVwICV1IVxu IiwKKwkJCQkJCSAgbnJfc3RlcHMpOworCQkJCQljaGVja19hcmcobnIgPiAyLAorCQkJCQkJICAi SW52YWxpZCBib25kIGZvcm1hdCBhdCBzdGVwICV1IVxuIiwKKwkJCQkJCSAgbnJfc3RlcHMpOwor CisJCQkJCWlmIChuciA9PSAwKSB7CisJCQkJCQlzdGVwLmNvbnRleHQgPSB0bXA7CisJCQkJCX0g ZWxzZSBpZiAobnIgPT0gMSkgeworCQkJCQkJc3RlcC5ib25kX21hc2sgPSB0bXA7CisJCQkJCX0g ZWxzZSBpZiAobnIgPT0gMikgeworCQkJCQkJdG1wID0gc3RyX3RvX2VuZ2luZShmaWVsZCk7CisJ CQkJCQljaGVja19hcmcodG1wIDw9IDAgfHwKKwkJCQkJCQkgIHRtcCA9PSBWQ1MgfHwKKwkJCQkJ CQkgIHRtcCA9PSBERUZBVUxULAorCQkJCQkJCSAgIkludmFsaWQgbWFzdGVyIGVuZ2luZSBhdCBz dGVwICV1IVxuIiwKKwkJCQkJCQkgIG5yX3N0ZXBzKTsKKwkJCQkJCXN0ZXAuYm9uZF9tYXN0ZXIg PSB0bXA7CisJCQkJCX0KKworCQkJCQlucisrOworCQkJCX0KKworCQkJCXN0ZXAudHlwZSA9IEJP TkQ7CisJCQkJZ290byBhZGRfc3RlcDsKIAkJCX0KIAogCQkJaWYgKCFmaWVsZCkgewpAQCAtMTA0 OSw2ICsxMDk1LDggQEAgcHJlcGFyZV93b3JrbG9hZCh1bnNpZ25lZCBpbnQgaWQsIHN0cnVjdCB3 b3JrbG9hZCAqd3JrLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJICogVHJhbnNmZXIgb3ZlciBlbmdp bmUgbWFwIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgd29ya2xvYWQgc3RlcC4KIAkgKi8KIAlmb3Ig KGogPSAwOyBqIDwgd3JrLT5ucl9jdHhzOyBqICs9IDIpIHsKKwkJc3RydWN0IGN0eCAqY3R4ID0g Jndyay0+Y3R4X2xpc3Rbal07CisKIAkJYm9vbCB0YXJnZXRzID0gZmFsc2U7CiAJCWJvb2wgYmFs YW5jZSA9IGZhbHNlOwogCkBAIC0xMDYyLDE2ICsxMTEwLDI4IEBAIHByZXBhcmVfd29ya2xvYWQo dW5zaWduZWQgaW50IGlkLCBzdHJ1Y3Qgd29ya2xvYWQgKndyaywgdW5zaWduZWQgaW50IGZsYWdz KQogCQkJCWVsc2UKIAkJCQkJdGFyZ2V0cyA9IHRydWU7CiAJCQl9IGVsc2UgaWYgKHctPnR5cGUg PT0gRU5HSU5FX01BUCkgewotCQkJCXdyay0+Y3R4X2xpc3Rbal0uZW5naW5lX21hcCA9IHctPmVu Z2luZV9tYXA7Ci0JCQkJd3JrLT5jdHhfbGlzdFtqXS5lbmdpbmVfbWFwX2NvdW50ID0KLQkJCQkJ dy0+ZW5naW5lX21hcF9jb3VudDsKKwkJCQljdHgtPmVuZ2luZV9tYXAgPSB3LT5lbmdpbmVfbWFw OworCQkJCWN0eC0+ZW5naW5lX21hcF9jb3VudCA9IHctPmVuZ2luZV9tYXBfY291bnQ7CiAJCQl9 IGVsc2UgaWYgKHctPnR5cGUgPT0gTE9BRF9CQUxBTkNFKSB7Ci0JCQkJaWYgKCF3cmstPmN0eF9s aXN0W2pdLmVuZ2luZV9tYXApIHsKKwkJCQlpZiAoIWN0eC0+ZW5naW5lX21hcCkgewogCQkJCQl3 c2ltX2VycigiTG9hZCBiYWxhbmNpbmcgbmVlZHMgYW4gZW5naW5lIG1hcCFcbiIpOwogCQkJCQly ZXR1cm4gMTsKIAkJCQl9Ci0JCQkJd3JrLT5jdHhfbGlzdFtqXS53YW50c19iYWxhbmNlID0KLQkJ CQkJdy0+bG9hZF9iYWxhbmNlOworCQkJCWN0eC0+d2FudHNfYmFsYW5jZSA9IHctPmxvYWRfYmFs YW5jZTsKKwkJCX0gZWxzZSBpZiAody0+dHlwZSA9PSBCT05EKSB7CisJCQkJaWYgKCFjdHgtPndh bnRzX2JhbGFuY2UpIHsKKwkJCQkJd3NpbV9lcnIoIkVuZ2luZSBib25kcyBuZWVkIGxvYWQgYmFs YW5jaW5nIGVuZ2luZSBtYXAhXG4iKTsKKwkJCQkJcmV0dXJuIDE7CisJCQkJfQorCQkJCWN0eC0+ Ym9uZF9jb3VudCsrOworCQkJCWN0eC0+Ym9uZHMgPSByZWFsbG9jKGN0eC0+Ym9uZHMsCisJCQkJ CQkgICAgIGN0eC0+Ym9uZF9jb3VudCAqCisJCQkJCQkgICAgIHNpemVvZihzdHJ1Y3QgYm9uZCkp OworCQkJCWlndF9hc3NlcnQoY3R4LT5ib25kcyk7CisJCQkJY3R4LT5ib25kc1tjdHgtPmJvbmRf Y291bnQgLSAxXS5tYXNrID0KKwkJCQkJdy0+Ym9uZF9tYXNrOworCQkJCWN0eC0+Ym9uZHNbY3R4 LT5ib25kX2NvdW50IC0gMV0ubWFzdGVyID0KKwkJCQkJdy0+Ym9uZF9tYXN0ZXI7CiAJCQl9CiAJ CX0KIApAQCAtMTI1Miw2ICsxMzEyLDM4IEBAIHByZXBhcmVfd29ya2xvYWQodW5zaWduZWQgaW50 IGlkLCBzdHJ1Y3Qgd29ya2xvYWQgKndyaywgdW5zaWduZWQgaW50IGZsYWdzKQogCQkJCQljdHgt PmVuZ2luZV9tYXBbaiAtIDFdIC0gVkNTMTsgLyogRklYTUUgKi8KIAkJCX0KIAorCQkJZm9yIChq ID0gMDsgaiA8IGN0eC0+Ym9uZF9jb3VudDsgaisrKSB7CisJCQkJdW5zaWduZWQgbG9uZyBtYXNr ID0gY3R4LT5ib25kc1tqXS5tYXNrOworCQkJCUk5MTVfREVGSU5FX0NPTlRFWFRfRU5HSU5FU19C T05EKGJvbmQsCisJCQkJCQkJCSBfX2J1aWx0aW5fcG9wY291bnQobWFzaykpOworCQkJCXN0cnVj dCBpOTE1X2NvbnRleHRfZW5naW5lc19ib25kICpwID0gTlVMTCwgKnByZXY7CisJCQkJdW5zaWdu ZWQgaW50IGIsIGU7CisKKwkJCQlwcmV2ID0gcDsKKwkJCQlwID0gYWxsb2NhKHNpemVvZihib25k KSk7CisJCQkJYXNzZXJ0KHApOworCQkJCW1lbXNldChwLCAwLCBzaXplb2YoYm9uZCkpOworCisJ CQkJaWYgKGogPT0gMCkKKwkJCQkJbG9hZF9iYWxhbmNlLmJhc2UubmV4dF9leHRlbnNpb24gPQor CQkJCQkJdG9fdXNlcl9wb2ludGVyKHApOworCQkJCWVsc2UgaWYgKGogPCAoY3R4LT5ib25kX2Nv dW50IC0gMSkpCisJCQkJCXByZXYtPmJhc2UubmV4dF9leHRlbnNpb24gPQorCQkJCQkJdG9fdXNl cl9wb2ludGVyKHApOworCisJCQkJcC0+YmFzZS5uYW1lID0gSTkxNV9DT05URVhUX0VOR0lORVNf RVhUX0JPTkQ7CisJCQkJcC0+dmlydHVhbF9pbmRleCA9IDA7CisJCQkJcC0+bWFzdGVyLmVuZ2lu ZV9jbGFzcyA9CisJCQkJCUk5MTVfRU5HSU5FX0NMQVNTX1ZJREVPOworCQkJCXAtPm1hc3Rlci5l bmdpbmVfaW5zdGFuY2UgPQorCQkJCQljdHgtPmJvbmRzW2pdLm1hc3RlciAtIFZDUzE7CisKKwkJ CQlmb3IgKGIgPSAwLCBlID0gMTsgbWFzazsgZSsrLCBtYXNrID4+PSAxKQorCQkJCQlpZiAobWFz ayAmIDEpCisJCQkJCQlwLT5lbmdpbmVzW2IrK10gPQorCQkJCQkJCXNldF9lbmdpbmVzLmVuZ2lu ZXNbZV07CisJCQl9CisKIAkJCWdlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJnBhcmFtKTsKIAkJ fSBlbHNlIGlmIChjdHgtPndhbnRzX2JhbGFuY2UpIHsKIAkJCUk5MTVfREVGSU5FX0NPTlRFWFRf RU5HSU5FU19MT0FEX0JBTEFOQ0UobG9hZF9iYWxhbmNlLCAyKSA9IHsKQEAgLTIyMjMsNyArMjMx NSw4IEBAIHN0YXRpYyB2b2lkICpydW5fd29ya2xvYWQodm9pZCAqZGF0YSkKIAkJCQljb250aW51 ZTsKIAkJCX0gZWxzZSBpZiAody0+dHlwZSA9PSBQUkVFTVBUSU9OIHx8CiAJCQkJICAgdy0+dHlw ZSA9PSBFTkdJTkVfTUFQIHx8Ci0JCQkJICAgdy0+dHlwZSA9PSBMT0FEX0JBTEFOQ0UpIHsKKwkJ CQkgICB3LT50eXBlID09IExPQURfQkFMQU5DRSB8fAorCQkJCSAgIHctPnR5cGUgPT0gQk9ORCkg ewogCQkJCWNvbnRpbnVlOwogCQkJfQogCmRpZmYgLS1naXQgYS9iZW5jaG1hcmtzL3dzaW0vUkVB RE1FIGIvYmVuY2htYXJrcy93c2ltL1JFQURNRQppbmRleCA0NWZhMWUwYTFkNzYuLjZhZWM3MThi YzgxMiAxMDA2NDQKLS0tIGEvYmVuY2htYXJrcy93c2ltL1JFQURNRQorKysgYi9iZW5jaG1hcmtz L3dzaW0vUkVBRE1FCkBAIC03LDYgKzcsNyBAQCBCLjx1aW50PgogTS48dWludD4uPHN0cj5bfDxz dHI+XS4uLgogUHxYLjx1aW50Pi48aW50PgogZHxwfHN8dHxxfGEuPGludD4sLi4uCitiLjx1aW50 Pi48dWludD4uPHN0cj4KIGYKIAogRm9yIGR1cmF0aW9uIGEgcmFuZ2UgY2FuIGJlIGdpdmVuIGZy b20gd2hpY2ggYSByYW5kb20gdmFsdWUgd2lsbCBiZSBwaWNrZWQKQEAgLTI2LDYgKzI3LDcgQEAg QWRkaXRpb25hbCB3b3JrbG9hZCBzdGVwcyBhcmUgYWxzbyBzdXBwb3J0ZWQ6CiAgJ2YnIC0gQ3Jl YXRlIGEgc3luYyBmZW5jZS4KICAnYScgLSBBZHZhbmNlIHRoZSBwcmV2aW91c2x5IGNyZWF0ZWQg c3luYyBmZW5jZS4KICAnQicgLSBUdXJuIG9uIGNvbnRleHQgbG9hZCBiYWxhbmNpbmcuCisgJ2In IC0gU2V0IHVwIGVuZ2luZSBib25kcy4KICAnTScgLSBTZXQgdXAgZW5naW5lIG1hcC4KICAnUCcg LSBDb250ZXh0IHByaW9yaXR5LgogICdYJyAtIENvbnRleHQgcHJlZW1wdGlvbiBjb250cm9sLgpA QCAtMTk0LDMgKzE5Niw1MSBAQCBUaGlzIGVuYWJsZXMgbG9hZCBiYWxhbmNpbmcgZm9yIGNvbnRl eHQgbnVtYmVyIG9uZS4KIAogU3VibWlzc2lvbnMgdG8gbG9hZCBiYWxhbmNlZCBjb250ZXh0cyBh cmUgb25seSBhbGxvd2VkIHRvIHVzZSB0aGUgREVGQVVMVCBlbmdpbmUKIHNwZWNpZmllci4KKwor RW5naW5lIGJvbmRzCistLS0tLS0tLS0tLS0KKworRW5naW5lIGJvbmRzIGFyZSBleHRlbnNpb25z IG9uIGxvYWQgYmFsYW5jZWQgY29udGV4dHMuIFRoZXkgYWxsb3cgZXhwcmVzc2luZworcnVsZXMg b2YgZW5naW5lIHNlbGVjdGlvbiBiZXR3ZWVuIHR3byBjby1vcGVyYXRpbmcgY29udGV4dHMgdGll ZCB3aXRoIHN1Ym1pdAorZmVuY2VzLiBJbiBvdGhlciB3b3JkcywgdGhlIHJ1bGUgZXhwcmVzc2lv biBpcyB0ZWxsaW5nIHRoZSBkcml2ZXI6ICJJZiB5b3UgcGljawordGhpcyBlbmdpbmUgZm9yIGNv bnRleHQgb25lLCB0aGVuIHlvdSBoYXZlIHRvIHBpY2sgdGhhdCBlbmdpbmUgZm9yIGNvbnRleHQg dHdvIi4KKworU3ludGF4IGlzOgorICBiLjxjb250ZXh0Pi48ZW5naW5lX21hc2s+LjxtYXN0ZXJf ZW5naW5lPgorCitFbmdpbmUgbWFzayBpcyBhIGJpdG1hc2sgcmVwcmVzZW50aW5nIGVuZ2luZXMg aW4gdGhlIGVuZ2luZSBtYXAgY29uZmlndXJlZCBmb3IKK3RoZSBzYW1lIGNvbnRleHQuCisKK1Ro ZXJlIGNhbiBiZSBtdWx0aXBsZSBib25kcyB0aWVkIHRvIHRoZSBzYW1lIGNvbnRleHQuCisKK0V4 YW1wbGU6CisKKyAgTS4xLlJDU3xWRUNTCisgIEIuMQorICBNLjIuVkNTMXxWQ1MyCisgIEIuMgor ICBiLjIuMS5SQ1MKKyAgYi4yLjIuVkVDUworCitUaGlzIHRlbGxzIHRoZSBkcml2ZXIgdGhhdCBp ZiBpdCBwaWNrZWQgUkNTIGZvciBjb250ZXh0IG9uZSwgaXQgaGFzIHRvIHBpY2sgVkNTMQorZm9y IGNvbnRleHQgdHdvLiBBbmQgaWYgaXQgcGlja2VkIFZFQ1MgZm9yIGNvbnRleHQgb25lLCBpdCBo YXMgdG8gcGljayBWQ1MxIGZvcgorY29udGV4dCB0d28uCisKK0lmIHdlIGV4dGVuZCB0aGUgYWJv dmUgZXhhbXBsZSB3aXRoIG1vcmUgd29ya2xvYWQgZGlyZWN0aXZlczoKKworICAxLkRFRkFVTFQu MTAwMC4wLjAKKyAgMi5ERUZBVUxULjEwMDAucy0xLjAKKworV2UgZ2V0IHRvIGEgZnVsbHkgZnVu Y3Rpb25hbCBleGFtcGxlIHdoZXJlIHR3byBiYXRjaCBidWZmZXJzIGFyZSBzdWJtaXR0ZWQgaW4g YQorbG9hZCBiYWxhbmNlZCBmYXNoaW9uLCB0ZWxsaW5nIHRoZSBkcml2ZXIgdGhleSBzaG91bGQg cnVuIHNpbXVsdGFuZW91c2x5IGFuZAordGhhdCB2YWxpZCBlbmdpbmUgcGFpcnMgYXJlIGVpdGhl ciBSQ1MgKyBWQ1MxIChmb3IgdHdvIGNvbnRleHRzIHJlc3BlY3RpdmVseSksCitvciBWRUNTICsg VkNTMi4KKworVGhpcyBjYW4gYWxzbyBiZSBleHRlbmRlZCB1c2luZyBzeW5jIGZlbmNlcyB0byBp bXByb3ZlIGNoYW5jZXMgb2YgdGhlIGZpcnN0CitzdWJtaXNzaW9uIG5vdCBnZXR0aW5nIG9uIHRo ZSBoYXJkd2FyZSBhZnRlciB0aGUgc2Vjb25kIG9uZS4gU2Vjb25kIGJsb2NrIHdvdWxkCit0aGVu IGxvb2sgbGlrZToKKworICBmCisgIDEuREVGQVVMVC4xMDAwLmYtMS4wCisgIDIuREVGQVVMVC4x MDAwLnMtMS4wCisgIGEuLTMKLS0gCjIuMTkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4