From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 2/2] drm/i915: constify validate_vbt in VBT parsing Date: Tue, 12 May 2015 15:09:46 +0300 Message-ID: <20150512120946.GX18908@intel.com> References: <1429100309-21983-1-git-send-email-jani.nikula@intel.com> <1429100309-21983-2-git-send-email-jani.nikula@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id A24BC6E143 for ; Tue, 12 May 2015 05:09:55 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1429100309-21983-2-git-send-email-jani.nikula@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBBcHIgMTUsIDIwMTUgYXQgMDM6MTg6MjlQTSArMDMwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gTWFrZSBpbnB1dCBhbmQgb3V0cHV0IG9mIHZhbGlkYXRlX3ZidCBjb25zdCwgYW5kIGZp eCB0aGUgZmFsbG91dC4gV2UKPiBzaG91bGRuJ3QgbW9kaWZ5IHRoZSBWQlQsIHNvIG1ha2UgdGhl IGNvbXBpbGVyIGhlbHAgdXMgaGVyZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBKYW5pIE5pa3VsYSA8 amFuaS5uaWt1bGFAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9iaW9zLmMgfCA1MCArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KPiAg MSBmaWxlIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQo+IAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMKPiBpbmRleCA0ZTNmM2Y0MjcxNzguLmIxZTA0N2M1ZTU5 NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9zLmMKPiBAQCAtMjA1LDcgKzIwNSw3IEBA IGdldF9sdmRzX2ZwX3RpbWluZyhjb25zdCBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiLAo+ICAvKiBU cnkgdG8gZmluZCBpbnRlZ3JhdGVkIHBhbmVsIGRhdGEgKi8KPiAgc3RhdGljIHZvaWQKPiAgcGFy c2VfbGZwX3BhbmVsX2RhdGEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IC0J CQkgICAgc3RydWN0IGJkYl9oZWFkZXIgKmJkYikKPiArCQkgICAgIGNvbnN0IHN0cnVjdCBiZGJf aGVhZGVyICpiZGIpCj4gIHsKPiAgCWNvbnN0IHN0cnVjdCBiZGJfbHZkc19vcHRpb25zICpsdmRz X29wdGlvbnM7Cj4gIAljb25zdCBzdHJ1Y3QgYmRiX2x2ZHNfbGZwX2RhdGEgKmx2ZHNfbGZwX2Rh dGE7Cj4gQEAgLTMxMSw3ICszMTEsOCBAQCBwYXJzZV9sZnBfcGFuZWxfZGF0YShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4gLXBhcnNl X2xmcF9iYWNrbGlnaHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBzdHJ1Y3Qg YmRiX2hlYWRlciAqYmRiKQo+ICtwYXJzZV9sZnBfYmFja2xpZ2h0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiArCQkgICAgY29uc3Qgc3RydWN0IGJkYl9oZWFkZXIgKmJkYikK PiAgewo+ICAJY29uc3Qgc3RydWN0IGJkYl9sZnBfYmFja2xpZ2h0X2RhdGEgKmJhY2tsaWdodF9k YXRhOwo+ICAJY29uc3Qgc3RydWN0IGJkYl9sZnBfYmFja2xpZ2h0X2RhdGFfZW50cnkgKmVudHJ5 Owo+IEBAIC0zNDksNyArMzUwLDcgQEAgcGFyc2VfbGZwX2JhY2tsaWdodChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHN0cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gIC8qIFRyeSB0 byBmaW5kIHNkdm8gcGFuZWwgZGF0YSAqLwo+ICBzdGF0aWMgdm9pZAo+ICBwYXJzZV9zZHZvX3Bh bmVsX2RhdGEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IC0JCSAgICAgIHN0 cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gKwkJICAgICAgY29uc3Qgc3RydWN0IGJkYl9oZWFkZXIg KmJkYikKPiAgewo+ICAJY29uc3Qgc3RydWN0IGx2ZHNfZHZvX3RpbWluZyAqZHZvX3RpbWluZzsK PiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpwYW5lbF9maXhlZF9tb2RlOwo+IEBAIC00MDMs NyArNDA0LDcgQEAgc3RhdGljIGludCBpbnRlbF9iaW9zX3NzY19mcmVxdWVuY3koc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiAgCj4gIHN0YXRpYyB2b2lkCj4gIHBhcnNlX2dlbmVyYWxfZmVhdHVy ZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IC0JCSAgICAgICBzdHJ1Y3Qg YmRiX2hlYWRlciAqYmRiKQo+ICsJCSAgICAgICBjb25zdCBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRi KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKPiAgCWNv bnN0IHN0cnVjdCBiZGJfZ2VuZXJhbF9mZWF0dXJlcyAqZ2VuZXJhbDsKPiBAQCAtNDI5LDcgKzQz MCw3IEBAIHBhcnNlX2dlbmVyYWxfZmVhdHVyZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAKPiAgc3RhdGljIHZvaWQKPiAgcGFyc2VfZ2VuZXJhbF9kZWZpbml0aW9ucyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCSAgc3RydWN0IGJkYl9oZWFk ZXIgKmJkYikKPiArCQkJICBjb25zdCBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiKQo+ICB7Cj4gIAlj b25zdCBzdHJ1Y3QgYmRiX2dlbmVyYWxfZGVmaW5pdGlvbnMgKmdlbmVyYWw7Cj4gIAo+IEBAIC00 NTYsNyArNDU3LDcgQEAgY2hpbGRfZGV2aWNlX3B0cihjb25zdCBzdHJ1Y3QgYmRiX2dlbmVyYWxf ZGVmaW5pdGlvbnMgKnBfZGVmcywgaW50IGkpCj4gIAo+ICBzdGF0aWMgdm9pZAo+ICBwYXJzZV9z ZHZvX2RldmljZV9tYXBwaW5nKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAt CQkJICBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiKQo+ICsJCQkgIGNvbnN0IHN0cnVjdCBiZGJfaGVh ZGVyICpiZGIpCj4gIHsKPiAgCXN0cnVjdCBzZHZvX2RldmljZV9tYXBwaW5nICpwX21hcHBpbmc7 Cj4gIAljb25zdCBzdHJ1Y3QgYmRiX2dlbmVyYWxfZGVmaW5pdGlvbnMgKnBfZGVmczsKPiBAQCAt NTQ2LDcgKzU0Nyw3IEBAIHBhcnNlX3Nkdm9fZGV2aWNlX21hcHBpbmcoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICAKPiAgc3RhdGljIHZvaWQKPiAgcGFyc2VfZHJpdmVyX2Zl YXR1cmVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAtCQkgICAgICAgc3Ry dWN0IGJkYl9oZWFkZXIgKmJkYikKPiArCQkgICAgICBjb25zdCBzdHJ1Y3QgYmRiX2hlYWRlciAq YmRiKQo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgYmRiX2RyaXZlcl9mZWF0dXJlcyAqZHJpdmVyOwo+ ICAKPiBAQCAtNTcyLDcgKzU3Myw3IEBAIHBhcnNlX2RyaXZlcl9mZWF0dXJlcyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4gLXBhcnNl X2VkcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHN0cnVjdCBiZGJfaGVhZGVy ICpiZGIpCj4gK3BhcnNlX2VkcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGNv bnN0IHN0cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gIHsKPiAgCWNvbnN0IHN0cnVjdCBiZGJfZWRw ICplZHA7Cj4gIAljb25zdCBzdHJ1Y3QgZWRwX3Bvd2VyX3NlcSAqZWRwX3BwczsKPiBAQCAtNjc5 LDcgKzY4MCw3IEBAIHBhcnNlX2VkcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IHN0cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4gLXBhcnNl X3BzcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHN0cnVjdCBiZGJfaGVhZGVy ICpiZGIpCj4gK3BhcnNlX3BzcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGNv bnN0IHN0cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gIHsKPiAgCWNvbnN0IHN0cnVjdCBiZGJfcHNy ICpwc3I7Cj4gIAljb25zdCBzdHJ1Y3QgcHNyX3RhYmxlICpwc3JfdGFibGU7Cj4gQEAgLTc5MCw3 ICs3OTEsNyBAQCBzdGF0aWMgdTggKmdvdG9fbmV4dF9zZXF1ZW5jZSh1OCAqZGF0YSwgaW50ICpz aXplKQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IC1wYXJzZV9taXBpKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgc3RydWN0IGJkYl9oZWFkZXIgKmJkYikKPiArcGFyc2VfbWlw aShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGNvbnN0IHN0cnVjdCBiZGJfaGVh ZGVyICpiZGIpCj4gIHsKPiAgCWNvbnN0IHN0cnVjdCBiZGJfbWlwaV9jb25maWcgKnN0YXJ0Owo+ ICAJY29uc3Qgc3RydWN0IGJkYl9taXBpX3NlcXVlbmNlICpzZXF1ZW5jZTsKPiBAQCAtOTQxLDcg Kzk0Miw3IEBAIGVycjoKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgcGFyc2VfZGRpX3BvcnQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCwKPiAtCQkJICAg c3RydWN0IGJkYl9oZWFkZXIgKmJkYikKPiArCQkJICAgY29uc3Qgc3RydWN0IGJkYl9oZWFkZXIg KmJkYikKPiAgewo+ICAJdW5pb24gY2hpbGRfZGV2aWNlX2NvbmZpZyAqaXQsICpjaGlsZCA9IE5V TEw7Cj4gIAlzdHJ1Y3QgZGRpX3ZidF9wb3J0X2luZm8gKmluZm8gPSAmZGV2X3ByaXYtPnZidC5k ZGlfcG9ydF9pbmZvW3BvcnRdOwo+IEBAIC0xMDQzLDcgKzEwNDQsNyBAQCBzdGF0aWMgdm9pZCBw YXJzZV9kZGlfcG9ydChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9y dCBwb3J0LAo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBwYXJzZV9kZGlfcG9ydHMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IC0JCQkgICAgc3RydWN0IGJkYl9oZWFkZXIgKmJk YikKPiArCQkJICAgIGNvbnN0IHN0cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gIHsKPiAgCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ZGV2Owo+ICAJZW51bSBwb3J0IHBvcnQ7Cj4g QEAgLTEwNjMsNyArMTA2NCw3IEBAIHN0YXRpYyB2b2lkIHBhcnNlX2RkaV9wb3J0cyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAo+ICBzdGF0aWMgdm9pZAo+ICBwYXJzZV9k ZXZpY2VfbWFwcGluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJICAg ICAgIHN0cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gKwkJICAgICBjb25zdCBzdHJ1Y3QgYmRiX2hl YWRlciAqYmRiKQo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgYmRiX2dlbmVyYWxfZGVmaW5pdGlvbnMg KnBfZGVmczsKPiAgCWNvbnN0IHVuaW9uIGNoaWxkX2RldmljZV9jb25maWcgKnBfY2hpbGQ7Cj4g QEAgLTExOTMsMTkgKzExOTQsMjEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lk IGludGVsX25vX29wcmVnaW9uX3ZidFtdID0gewo+ICAJeyB9Cj4gIH07Cj4gIAo+IC1zdGF0aWMg c3RydWN0IGJkYl9oZWFkZXIgKnZhbGlkYXRlX3ZidChjaGFyICpiYXNlLCBzaXplX3Qgc2l6ZSwK PiAtCQkJCSAgICAgICBzdHJ1Y3QgdmJ0X2hlYWRlciAqdmJ0LAo+IC0JCQkJICAgICAgIGNvbnN0 IGNoYXIgKnNvdXJjZSkKPiArY29uc3Qgc3RhdGljIHN0cnVjdCBiZGJfaGVhZGVyICp2YWxpZGF0 ZV92YnQoY29uc3Qgdm9pZCAqX2Jhc2UsIHNpemVfdCBzaXplLAo+ICsJCQkJCSAgICAgY29uc3Qg dm9pZCAqX3ZidCwKPiArCQkJCQkgICAgIGNvbnN0IGNoYXIgKnNvdXJjZSkKPiAgewo+ICsJY29u c3QgY2hhciAqYmFzZSA9IF9iYXNlOwo+ICsJY29uc3Qgc3RydWN0IHZidF9oZWFkZXIgKnZidCA9 IF92YnQ7Cj4gIAlzaXplX3Qgb2Zmc2V0Owo+IC0Jc3RydWN0IGJkYl9oZWFkZXIgKmJkYjsKPiAr CWNvbnN0IHN0cnVjdCBiZGJfaGVhZGVyICpiZGI7Cj4gIAo+ICAJaWYgKHZidCA9PSBOVUxMKSB7 Cj4gIAkJRFJNX0RFQlVHX0RSSVZFUigiVkJUIHNpZ25hdHVyZSBtaXNzaW5nXG4iKTsKPiAgCQly ZXR1cm4gTlVMTDsKPiAgCX0KPiAgCj4gLQlvZmZzZXQgPSAoY2hhciAqKXZidCAtIGJhc2U7Cj4g KwlvZmZzZXQgPSAoY29uc3QgY2hhciAqKXZidCAtIGJhc2U7CgpJIGJlbGlldmUgd2UncmUgdXNp bmcgdm9pZCogYXJpdGhtZXRpYyBlbHNld2hlcmUgYWxyZWFkeSwgc28gbWF5YmUganVzdAp1c2Ug aXQgaGVyZSB0b28gYW5kIGF2b2lkIHRoZSBkdXBsaWNhdGVkIHZhcmlhYmxlcz8KCj4gIAlpZiAo b2Zmc2V0ICsgc2l6ZW9mKHN0cnVjdCB2YnRfaGVhZGVyKSA+IHNpemUpIHsKPiAgCQlEUk1fREVC VUdfRFJJVkVSKCJWQlQgaGVhZGVyIGluY29tcGxldGVcbiIpOwo+ICAJCXJldHVybiBOVUxMOwo+ IEBAIC0xMjIyLDcgKzEyMjUsNyBAQCBzdGF0aWMgc3RydWN0IGJkYl9oZWFkZXIgKnZhbGlkYXRl X3ZidChjaGFyICpiYXNlLCBzaXplX3Qgc2l6ZSwKPiAgCQlyZXR1cm4gTlVMTDsKPiAgCX0KPiAg Cj4gLQliZGIgPSAoc3RydWN0IGJkYl9oZWFkZXIgKikoYmFzZSArIG9mZnNldCk7Cj4gKwliZGIg PSAoY29uc3Qgc3RydWN0IGJkYl9oZWFkZXIgKikoYmFzZSArIG9mZnNldCk7Cj4gIAlpZiAob2Zm c2V0ICsgYmRiLT5iZGJfc2l6ZSA+IHNpemUpIHsKPiAgCQlEUk1fREVCVUdfRFJJVkVSKCJCREIg aW5jb21wbGV0ZVxuIik7Cj4gIAkJcmV0dXJuIE5VTEw7Cj4gQEAgLTEyNDcsNyArMTI1MCw3IEBA IGludGVsX3BhcnNlX2Jpb3Moc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgewo+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVj dCBwY2lfZGV2ICpwZGV2ID0gZGV2LT5wZGV2Owo+IC0Jc3RydWN0IGJkYl9oZWFkZXIgKmJkYiA9 IE5VTEw7Cj4gKwljb25zdCBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiID0gTlVMTDsKPiAgCXU4IF9f aW9tZW0gKmJpb3MgPSBOVUxMOwo+ICAKPiAgCWlmIChIQVNfUENIX05PUChkZXYpKQo+IEBAIC0x MjU3LDkgKzEyNjAsOCBAQCBpbnRlbF9wYXJzZV9iaW9zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gIAo+ICAJLyogWFhYIFNob3VsZCB0aGlzIHZhbGlkYXRpb24gYmUgbW92ZWQgdG8gaW50ZWxf b3ByZWdpb24uYz8gKi8KPiAgCWlmICghZG1pX2NoZWNrX3N5c3RlbShpbnRlbF9ub19vcHJlZ2lv bl92YnQpICYmIGRldl9wcml2LT5vcHJlZ2lvbi52YnQpCj4gLQkJYmRiID0gdmFsaWRhdGVfdmJ0 KChjaGFyICopZGV2X3ByaXYtPm9wcmVnaW9uLmhlYWRlciwgT1BSRUdJT05fU0laRSwKPiAtCQkJ CSAgIChzdHJ1Y3QgdmJ0X2hlYWRlciAqKWRldl9wcml2LT5vcHJlZ2lvbi52YnQsCj4gLQkJCQkg ICAiT3BSZWdpb24iKTsKPiArCQliZGIgPSB2YWxpZGF0ZV92YnQoZGV2X3ByaXYtPm9wcmVnaW9u LmhlYWRlciwgT1BSRUdJT05fU0laRSwKPiArCQkJCSAgIGRldl9wcml2LT5vcHJlZ2lvbi52YnQs ICJPcFJlZ2lvbiIpOwo+ICAKPiAgCWlmIChiZGIgPT0gTlVMTCkgewo+ICAJCXNpemVfdCBpLCBz aXplOwo+IEBAIC0xMjcyLDcgKzEyNzQsNyBAQCBpbnRlbF9wYXJzZV9iaW9zKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gIAkJZm9yIChpID0gMDsgaSArIDQgPCBzaXplOyBpKyspIHsKPiAgCQkJ aWYgKG1lbWNtcChiaW9zICsgaSwgIiRWQlQiLCA0KSA9PSAwKSB7Cj4gIAkJCQliZGIgPSB2YWxp ZGF0ZV92YnQoYmlvcywgc2l6ZSwKPiAtCQkJCQkJICAgKHN0cnVjdCB2YnRfaGVhZGVyICopKGJp b3MgKyBpKSwKPiArCQkJCQkJICAgYmlvcyArIGksCj4gIAkJCQkJCSAgICJQQ0kgUk9NIik7Cj4g IAkJCQlicmVhazsKPiAgCQkJfQo+IC0tIAo+IDIuMS40Cj4gCj4gX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4g SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50 ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==