From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH] dmr/amdgpu: Fix wrongly unref of BO Date: Fri, 21 Apr 2017 19:01:19 +0200 Message-ID: References: <1492119298-8526-1-git-send-email-AlexBin.Xie@amd.com> <58F57C14.20403@amd.com> <7807726d-7318-b72f-1a14-2b37a73988bf@vodafone.de> <4509f79a-ffd5-eb40-117c-84ea02cbf5cd@vodafone.de> <2b43e2a9-0c79-f945-c835-0cfc486304c8@vodafone.de> <96809715-3c78-3784-fbeb-57a00359e3f3@vodafone.de> <003d5e5f-ea99-4517-fd4a-de4df3ce1b89@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <003d5e5f-ea99-4517-fd4a-de4df3ce1b89-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Felix Kuehling , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org QW0gMjEuMDQuMjAxNyB1bSAxNzo0MyBzY2hyaWViIEZlbGl4IEt1ZWhsaW5nOgo+IE9uIDE3LTA0 LTIxIDAzOjExIEFNLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+PiBIaSBBbGV4LAo+Pgo+Pj4g Tm8uIEZvciB0aGUgY3VycmVudCBzb3VyY2UgY29kZSwgSSB0aGluayB0aGUgcHJlbWFwIGFuZCBu by1vcCBpcyBub3QKPj4+IHdvcmtpbmcuCj4+Pgo+PiBJbmRlZWQsIHdlIGRvbid0IHNldCBiby0+ bWVtLmJ1cy5hZGRyIGluIGFtZGdwdV90dG1faW9fbWVtX3Jlc2VydmUoKQo+PiBhbnkgbW9yZS4g RmVsaXggd2lsbCBwcm9iYWJseSB3YW50IHRvIGZpeCB0aGF0IGZvciB0aGUgS0ZEIGJyYW5jaC4K PiBJIHZhZ3VlbHkgcmVtZW1iZXIgZGlzY3Vzc2luZyB0aGlzIGluIHRoZSBwYXN0OiB1c2luZyBt ZW0tPmJ1cy5hZGRyIHRvCj4ga2VlcCBtZW1vcnkgcGVybWFuZW50bHkgQ1BVLW1hcHBlZCBhbmQg YXZvaWQgcmVkdW5kYW50IGlvcmVtYXAgY2FsbHMuIEFzCj4gSSByZW1lbWJlciBpdCwgd2Ugd2Vy ZW4ndCBhY3R1YWxseSB1c2luZyB0aGlzLiBJdCdzIG9ubHkgc29tZXRoaW5nIHdlCj4gY29uc2lk ZXJlZCBhdCBvbmUgcG9pbnQuCgpXZWxsIHRoYXQgZXhwbGFpbnMgd2h5IG15IG1lbW9yeSBmb29s ZWQgbWUuCgpNeSBsYXN0IHN0YXR1cyB3YXMgdGhhdCB3ZSBpbXBsZW1lbnRlZCB0aGlzIHRvZ2V0 aGVyIHdpdGggQ1BVIGJhc2VkIHBhZ2UgCnRhYmxlIHVwZGF0ZXMuCgpPdGhlcndpc2UgbWFwcGlu ZyB0aGVtIGZvciBDUFUgYWNjZXNzIGlzIHJhdGhlciBoZWF2eSBpZiB3ZSBpbmRlZWQgCnVwZGF0 ZSB0aGUgcGFnZSB0YWJsZXMgZXZlcnkgdGltZS4KCkNocmlzdGlhbi4KCj4KPiBSZWdhcmRzLAo+ ICAgIEZlbGl4Cj4KPj4gQW55d2F5LCBhcyBJIHNhaWQgbm90IHVubWFwcGluZyB0aGUgcGFnZSB0 YWJsZXMgaXMgaGFybWxlc3MgY29tcGFyZWQKPj4gdG8gbm90IHJlbGVhc2luZyB0aGUgbWVtb3J5 IGJhY2tpbmcgaXQuCj4+Cj4+IFNvIHBsZWFzZSBqdXN0IGRvIGFzIEkgdG9sZCB5b3UgYW5kIGNo YW5nZSB0aGUgaW50ZXJydXB0aWJsZQo+PiByZXNlcnZhdGlvbiB0byBhIG5vbi1pbnRlcnJ1cHRp YmxlLgo+Pgo+PiBSZWdhcmRzLAo+PiBDaHJpc3RpYW4uCj4+Cj4+IEFtIDIwLjA0LjIwMTcgdW0g MjM6NTYgc2NocmllYiBYaWUsIEFsZXhCaW46Cj4+PiBIaSBDaHJpc3RpYW4sCj4+Pgo+Pj4KPj4+ IEkgcmVhZCBhbWRncHVfdHRtX2lvX21lbV9yZXNlcnZlKCkgYW5kIGFtZGdwdV90dG1faW9fbWVt X2ZyZWUoKSBhbmQKPj4+IHJlbGV2YW50IGNvZGVzIGZyb20gYW1kZ3B1X3ZyYW1fc2NyYXRjaF9p bml0Cj4+PiBhbmQgYW1kZ3B1X3ZyYW1fc2NyYXRjaF9maW5pLgo+Pj4KPj4+Cj4+PiBOby4gRm9y IHRoZSBjdXJyZW50IHNvdXJjZSBjb2RlLCBJIHRoaW5rIHRoZSBwcmVtYXAgYW5kIG5vLW9wIGlz IG5vdAo+Pj4gd29ya2luZy4KPj4+Cj4+Pgo+Pj4gSSBhZGQgcHJpbnRrIHRvIHByb3ZlLiBZb3Ug Y2FuIHNlZSBib19rbWFwX3R5cGUgaXMgYW4gaW52YWxpZAo+Pj4gdmFsdWUuIGlvcmVtYXBfd2Mg aXMgcmVhbGx5IGNhbGxlZCB0byBtYXAgdGhlIElPIHJhbmdlIGludG8gdm1hbGxvYwo+Pj4gc3Bh Y2UuCj4+Pgo+Pj4KPj4+IC4uLgo+Pj4KPj4+IEFwciAyMCAxNjozMToxOCBheGllLVN5c3RlbS1Q cm9kdWN0LU5hbWUga2VybmVsOiBbICAxMDYuNzU5NjIzXQo+Pj4gZW50ZXJpbmcgYW1kZ3B1X3Zy YW1fc2NyYXRjaF9pbml0Lgo+Pj4gQXByIDIwIDE2OjMxOjE4IGF4aWUtU3lzdGVtLVByb2R1Y3Qt TmFtZSBrZXJuZWw6IFsgIDEwNi43NTk2MzFdCj4+PiBzY3JhdGNoIGlvcmVtYXBfd2MKPj4+IEFw ciAyMCAxNjozMToxOCBheGllLVN5c3RlbS1Qcm9kdWN0LU5hbWUga2VybmVsOiBbICAxMDYuNzU5 NjMxXQo+Pj4gYm9fa21hcF90eXBlID0gMTI5Cj4+PiBBcHIgMjAgMTY6MzE6MTggYXhpZS1TeXN0 ZW0tUHJvZHVjdC1OYW1lIGtlcm5lbDogWyAgMTA2Ljc1OTYzMl0gYnVzCj4+PiBhZGRyZXNzID0g ICAgICAgICAgIChudWxsKQo+Pj4gQXByIDIwIDE2OjMxOjE4IGF4aWUtU3lzdGVtLVByb2R1Y3Qt TmFtZSBrZXJuZWw6IFsgIDEwNi43NTk2MzJdCj4+PiBpc19pb21lbSA9IDEKPj4+IEFwciAyMCAx NjozMToxOCBheGllLVN5c3RlbS1Qcm9kdWN0LU5hbWUga2VybmVsOiBbICAxMDYuNzU5NjMzXQo+ Pj4gbGVhdmluZyBhbWRncHVfdnJhbV9zY3JhdGNoX2luaXQuCj4+PiAuLi4KPj4+Cj4+PiBJIGRv bid0IGhhdmUgbG9nIG9uIHJtbW9kIEFNREdQVSB5ZXQuIFRoZXJlIGFyZSBxdWl0ZSBzb21lIHNl dHRpbmdzCj4+PiB0byBtYWtlIHRoYXQgaGFwcGVuIGluIG15IGNvbXB1dGVyLgo+Pj4gSSB0aGlu ayB0aGV5IGFyZSBzeW1lbXRyaWMuIEJvdGggbWFwcGluZyBhbmQgdW5tYXBwaW5nIGFyZSBub3Qg bm8tb3AuCj4+Pgo+Pj4gSGVyZSBpcyB0aGUgcHJpbnRrIHBhdGNoIGZvciB5b3VyIHJlZmVyZW5j ZS4KPj4+Cj4+PiAgRnJvbSAyNWY5NTIzOWMyMzIyNTAwOGU0YjU5ZjMwYjliNTM2M2ZiMzIxZjk0 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQo+Pj4gRnJvbTogQWxleCBYaWUgPEFsZXhCaW4uWGll QGFtZC5jb20+Cj4+PiBEYXRlOiBUaHUsIDIwIEFwciAyMDE3IDE3OjQ4OjQ5IC0wNDAwCj4+PiBT dWJqZWN0OiBbUEFUQ0hdIEEgaGFjayB0byB0cmFjZSBwcmVtYXAgYW5kIG5vb3AuCj4+Pgo+Pj4g Q2hhbmdlLUlkOiBJNjFmYmJkYmQ4MmY2MjQzM2UyMjliMmU3ZTk3YmU3YTc4MGVhOGFmYQo+Pj4g U2lnbmVkLW9mZi1ieTogQWxleCBYaWUgPEFsZXhCaW4uWGllQGFtZC5jb20+Cj4+PiAtLS0KPj4+ ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jIHwgMjIgKysrKysr KysrKysrKysrKysrKysrKwo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jICAgICAg ICAgICAgICAgfCAgMSArCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3V0aWwuYyAg ICAgICAgICB8IDI5Cj4+PiArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQo+Pj4gICBpbmNs dWRlL2RybS90dG0vdHRtX2JvX2FwaS5oICAgICAgICAgICAgICAgfCAgMSArCj4+PiAgIDQgZmls ZXMgY2hhbmdlZCwgNTAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPj4+Cj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCj4+PiBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYwo+Pj4gaW5kZXggZmJi NGFmYi4uYTUzN2VhMSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9kZXZpY2UuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2RldmljZS5jCj4+PiBAQCAtMzEzLDYgKzMxMyw3IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9i bG9ja19pbnZhbGlkX3dyZWcoc3RydWN0Cj4+PiBhbWRncHVfZGV2aWNlICphZGV2LAo+Pj4gICBz dGF0aWMgaW50IGFtZGdwdV92cmFtX3NjcmF0Y2hfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldikKPj4+ICAgewo+Pj4gICBpbnQgcjsKPj4+ICtwcmludGsoImVudGVyaW5nIGFtZGdwdV92 cmFtX3NjcmF0Y2hfaW5pdC4iKTsKPj4+ICAgCj4+PiAgIGlmIChhZGV2LT52cmFtX3NjcmF0Y2gu cm9iaiA9PSBOVUxMKSB7Cj4+PiAgIHIgPSBhbWRncHVfYm9fY3JlYXRlKGFkZXYsIEFNREdQVV9H UFVfUEFHRV9TSVpFLAo+Pj4gQEAgLTM0MCwxNiArMzQxLDM2IEBAIHN0YXRpYyBpbnQgYW1kZ3B1 X3ZyYW1fc2NyYXRjaF9pbml0KHN0cnVjdAo+Pj4gYW1kZ3B1X2RldmljZSAqYWRldikKPj4+ICAg YW1kZ3B1X2JvX3VucGluKGFkZXYtPnZyYW1fc2NyYXRjaC5yb2JqKTsKPj4+ICAgYW1kZ3B1X2Jv X3VucmVzZXJ2ZShhZGV2LT52cmFtX3NjcmF0Y2gucm9iaik7Cj4+PiAgIAo+Pj4gKy8qIFdvdWxk IGxpa2UgYSBwcmludGsgdG8gc2VlIGlmIG1hcCAvIHVubWFwIGlzIG5vb3AqLwo+Pj4gK2FkZXYt PnZyYW1fc2NyYXRjaC5yb2JqLT50Ym8ubWVtLmJ1cy5wcmludGsgPSB0cnVlOwo+Pj4gKwo+Pj4g K2lmIChhZGV2LT52cmFtX3NjcmF0Y2gucm9iai0+a21hcC5ib19rbWFwX3R5cGUgPT0gdHRtX2Jv X21hcF9wcmVtYXBwZWQpCj4+PiArcHJpbnRrKCJhbWRncHVfdnJhbV9zY3JhdGNoIHByZW1hcHBl ZCEiKTsKPj4+ICsKPj4+ICtwcmludGsoImJvX2ttYXBfdHlwZSA9ICVkIiwgYWRldi0+dnJhbV9z Y3JhdGNoLnJvYmotPmttYXAuYm9fa21hcF90eXBlKTsKPj4+ICtwcmludGsoImJ1cyBhZGRyZXNz ID0gJXAiLCBhZGV2LT52cmFtX3NjcmF0Y2gucm9iai0+dGJvLm1lbS5idXMuYWRkcik7Cj4+PiAr cHJpbnRrKCJpc19pb21lbSA9ICVkIiwgYWRldi0+dnJhbV9zY3JhdGNoLnJvYmotPnRiby5tZW0u YnVzLmlzX2lvbWVtKTsKPj4+ICtwcmludGsoImxlYXZpbmcgYW1kZ3B1X3ZyYW1fc2NyYXRjaF9p bml0LiIpOwo+Pj4gKwo+Pj4gICByZXR1cm4gcjsKPj4+ICAgfQo+Pj4gICAKPj4+ICAgc3RhdGlj IHZvaWQgYW1kZ3B1X3ZyYW1fc2NyYXRjaF9maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 KQo+Pj4gICB7Cj4+PiAgIGludCByOwo+Pj4gK3ByaW50aygiZW50ZXJpbmcgYW1kZ3B1X3ZyYW1f c2NyYXRjaF9maW5pLiIpOwo+Pj4gICAKPj4+ICAgaWYgKGFkZXYtPnZyYW1fc2NyYXRjaC5yb2Jq ID09IE5VTEwpIHsKPj4+ICAgcmV0dXJuOwo+Pj4gICB9Cj4+PiArCj4+PiAraWYgKGFkZXYtPnZy YW1fc2NyYXRjaC5yb2JqLT5rbWFwLmJvX2ttYXBfdHlwZSA9PSB0dG1fYm9fbWFwX3ByZW1hcHBl ZCkKPj4+ICtwcmludGsoImFtZGdwdV92cmFtX3NjcmF0Y2ggcHJlbWFwcGVkISIpOwo+Pj4gKwo+ Pj4gK3ByaW50aygiYm9fa21hcF90eXBlID0gJWQiLCBhZGV2LT52cmFtX3NjcmF0Y2gucm9iai0+ a21hcC5ib19rbWFwX3R5cGUpOwo+Pj4gK3ByaW50aygiYnVzIGFkZHJlc3MgPSAlcCIsIGFkZXYt PnZyYW1fc2NyYXRjaC5yb2JqLT50Ym8ubWVtLmJ1cy5hZGRyKTsKPj4+ICtwcmludGsoImlzX2lv bWVtID0gJWQiLCBhZGV2LT52cmFtX3NjcmF0Y2gucm9iai0+dGJvLm1lbS5idXMuaXNfaW9tZW0p Owo+Pj4gKwo+Pj4gICByID0gYW1kZ3B1X2JvX3Jlc2VydmUoYWRldi0+dnJhbV9zY3JhdGNoLnJv YmosIGZhbHNlKTsKPj4+ICAgaWYgKGxpa2VseShyID09IDApKSB7Cj4+PiAgIGFtZGdwdV9ib19r dW5tYXAoYWRldi0+dnJhbV9zY3JhdGNoLnJvYmopOwo+Pj4gQEAgLTM1Nyw2ICszNzgsNyBAQCBz dGF0aWMgdm9pZCBhbWRncHVfdnJhbV9zY3JhdGNoX2Zpbmkoc3RydWN0Cj4+PiBhbWRncHVfZGV2 aWNlICphZGV2KQo+Pj4gICBhbWRncHVfYm9fdW5yZXNlcnZlKGFkZXYtPnZyYW1fc2NyYXRjaC5y b2JqKTsKPj4+ICAgfQo+Pj4gICBhbWRncHVfYm9fdW5yZWYoJmFkZXYtPnZyYW1fc2NyYXRjaC5y b2JqKTsKPj4+ICtwcmludGsoImxlYXZpbmcgYW1kZ3B1X3ZyYW1fc2NyYXRjaF9maW5pLiIpOwo+ Pj4gICB9Cj4+PiAgIAo+Pj4gICAvKioKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dHRtL3R0bV9iby5jIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm8uYwo+Pj4gaW5kZXggOTg5 Yjk4Yi4uOWIwNWQ1NCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2Jv LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvLmMKPj4+IEBAIC0xMTc4LDYg KzExNzgsNyBAQCBpbnQgdHRtX2JvX2luaXRfcmVzZXJ2ZWQoc3RydWN0IHR0bV9ib19kZXZpY2UK Pj4+ICpiZGV2LAo+Pj4gICBiby0+bWVtLnBhZ2VfYWxpZ25tZW50ID0gcGFnZV9hbGlnbm1lbnQ7 Cj4+PiAgIGJvLT5tZW0uYnVzLmlvX3Jlc2VydmVkX3ZtID0gZmFsc2U7Cj4+PiAgIGJvLT5tZW0u YnVzLmlvX3Jlc2VydmVkX2NvdW50ID0gMDsKPj4+ICtiby0+bWVtLmJ1cy5wcmludGsgPSBmYWxz ZTsKPj4+ICAgYm8tPm1vdmluZyA9IE5VTEw7Cj4+PiAgIGJvLT5tZW0ucGxhY2VtZW50ID0gKFRU TV9QTF9GTEFHX1NZU1RFTSB8IFRUTV9QTF9GTEFHX0NBQ0hFRCk7Cj4+PiAgIGJvLT5wZXJzaXN0 ZW50X3N3YXBfc3RvcmFnZSA9IHBlcnNpc3RlbnRfc3dhcF9zdG9yYWdlOwo+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3V0aWwuYwo+Pj4gYi9kcml2ZXJzL2dwdS9k cm0vdHRtL3R0bV9ib191dGlsLmMKPj4+IGluZGV4IGJmNmUyMTYuLjlkMDY5NTIgMTAwNjQ0Cj4+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib191dGlsLmMKPj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS90dG0vdHRtX2JvX3V0aWwuYwo+Pj4gQEAgLTUyNiwxNCArNTI2LDI0IEBAIHN0 YXRpYyBpbnQgdHRtX2JvX2lvcmVtYXAoc3RydWN0Cj4+PiB0dG1fYnVmZmVyX29iamVjdCAqYm8s Cj4+PiAgIGlmIChiby0+bWVtLmJ1cy5hZGRyKSB7Cj4+PiAgIG1hcC0+Ym9fa21hcF90eXBlID0g dHRtX2JvX21hcF9wcmVtYXBwZWQ7Cj4+PiAgIG1hcC0+dmlydHVhbCA9ICh2b2lkICopKCgodTgg Kiliby0+bWVtLmJ1cy5hZGRyKSArIG9mZnNldCk7Cj4+PiAraWYgKGJvLT5tZW0uYnVzLnByaW50 aykKPj4+ICtwcmludGsgKCJzY3JhdGNoIHByZW1hcHBpbmciKTsKPj4+ICsKPj4+ICAgfSBlbHNl IHsKPj4+ICAgbWFwLT5ib19rbWFwX3R5cGUgPSB0dG1fYm9fbWFwX2lvbWFwOwo+Pj4gLWlmICht ZW0tPnBsYWNlbWVudCAmIFRUTV9QTF9GTEFHX1dDKQo+Pj4gK2lmIChtZW0tPnBsYWNlbWVudCAm IFRUTV9QTF9GTEFHX1dDKSB7Cj4+PiAgIG1hcC0+dmlydHVhbCA9IGlvcmVtYXBfd2MoYm8tPm1l bS5idXMuYmFzZSArIGJvLT5tZW0uYnVzLm9mZnNldCArCj4+PiBvZmZzZXQsCj4+PiAgICBzaXpl KTsKPj4+IC1lbHNlCj4+PiAraWYgKGJvLT5tZW0uYnVzLnByaW50aykKPj4+ICtwcmludGsgKCJz Y3JhdGNoIGlvcmVtYXBfd2MiKTsKPj4+ICsKPj4+ICt9Cj4+PiArZWxzZSB7Cj4+PiAgIG1hcC0+ dmlydHVhbCA9IGlvcmVtYXBfbm9jYWNoZShiby0+bWVtLmJ1cy5iYXNlICsgYm8tPm1lbS5idXMu b2Zmc2V0Cj4+PiArIG9mZnNldCwKPj4+ICAgICAgICAgc2l6ZSk7Cj4+PiAraWYgKGJvLT5tZW0u YnVzLnByaW50aykKPj4+ICtwcmludGsgKCJzY3JhdGNoIGlvcmVtYXBfbm9jYWNoZSIpOwo+Pj4g K30KPj4+ICAgfQo+Pj4gICByZXR1cm4gKCFtYXAtPnZpcnR1YWwpID8gLUVOT01FTSA6IDA7Cj4+ PiAgIH0KPj4+IEBAIC02MTgsMjEgKzYyOCwzNCBAQCB2b2lkIHR0bV9ib19rdW5tYXAoc3RydWN0 IHR0bV9ib19rbWFwX29iaiAqbWFwKQo+Pj4gICBzdHJ1Y3QgdHRtX21lbV90eXBlX21hbmFnZXIg Km1hbiA9Cj4+PiAgICZiby0+YmRldi0+bWFuW2JvLT5tZW0ubWVtX3R5cGVdOwo+Pj4gICAKPj4+ IC1pZiAoIW1hcC0+dmlydHVhbCkKPj4+ICtpZiAoIW1hcC0+dmlydHVhbCkgewo+Pj4gK2lmIChi by0+bWVtLmJ1cy5wcmludGspCj4+PiArcHJpbnRrICgic2NyYXRjaCB1bm1hcCByZXR1cm4gZWFy bGllciIpOwo+Pj4gICByZXR1cm47Cj4+PiArfQo+Pj4gICBzd2l0Y2ggKG1hcC0+Ym9fa21hcF90 eXBlKSB7Cj4+PiAgIGNhc2UgdHRtX2JvX21hcF9pb21hcDoKPj4+ICtpZiAoYm8tPm1lbS5idXMu cHJpbnRrKQo+Pj4gK3ByaW50ayAoInNjcmF0Y2ggaW91bm1hcCIpOwo+Pj4gICBpb3VubWFwKG1h cC0+dmlydHVhbCk7Cj4+PiAgIGJyZWFrOwo+Pj4gICBjYXNlIHR0bV9ib19tYXBfdm1hcDoKPj4+ ICtpZiAoYm8tPm1lbS5idXMucHJpbnRrKQo+Pj4gK3ByaW50ayAoInNjcmF0Y2ggdnVubWFwIik7 Cj4+PiAgIHZ1bm1hcChtYXAtPnZpcnR1YWwpOwo+Pj4gICBicmVhazsKPj4+ICAgY2FzZSB0dG1f Ym9fbWFwX2ttYXA6Cj4+PiAraWYgKGJvLT5tZW0uYnVzLnByaW50aykKPj4+ICtwcmludGsgKCJz Y3JhdGNoIGt1bm1hcCIpOwo+Pj4gICBrdW5tYXAobWFwLT5wYWdlKTsKPj4+ICAgYnJlYWs7Cj4+ PiAgIGNhc2UgdHRtX2JvX21hcF9wcmVtYXBwZWQ6Cj4+PiAraWYgKGJvLT5tZW0uYnVzLnByaW50 aykKPj4+ICtwcmludGsgKCJzY3JhdGNoIHVubWFwIHR0bV9ib19tYXBfcHJlbWFwcGVkIik7Cj4+ PiAgIGJyZWFrOwo+Pj4gICBkZWZhdWx0Ogo+Pj4gK2lmIChiby0+bWVtLmJ1cy5wcmludGspCj4+ PiArcHJpbnRrICgic2NyYXRjaCB1bm1hcCBidWciKTsKPj4+ICAgQlVHKCk7Cj4+PiAgIH0KPj4+ ICAgKHZvaWQpIHR0bV9tZW1faW9fbG9jayhtYW4sIGZhbHNlKTsKPj4+IGRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS90dG0vdHRtX2JvX2FwaS5oIGIvaW5jbHVkZS9kcm0vdHRtL3R0bV9ib19hcGku aAo+Pj4gaW5kZXggMmQwZjYzZS4uZjc0YTU1NCAxMDA2NDQKPj4+IC0tLSBhL2luY2x1ZGUvZHJt L3R0bS90dG1fYm9fYXBpLmgKPj4+ICsrKyBiL2luY2x1ZGUvZHJtL3R0bS90dG1fYm9fYXBpLmgK Pj4+IEBAIC03MCw2ICs3MCw3IEBAIHN0cnVjdCB0dG1fYnVzX3BsYWNlbWVudCB7Cj4+PiAgIGJv b2xpc19pb21lbTsKPj4+ICAgYm9vbGlvX3Jlc2VydmVkX3ZtOwo+Pj4gICB1aW50NjRfdCAgICAg ICAgaW9fcmVzZXJ2ZWRfY291bnQ7Cj4+PiArYm9vbCAgICAgICAgICAgIHByaW50azsKPj4+ICAg fTsKPj4+ICAgCj4+PiAgIAo+Pj4gLS0gCj4+PiAyLjcuNAo+Pj4KPj4+Cj4+Pgo+Pj4KPj4+IFRo YW5rcywKPj4+Cj4+PiBBbGV4IEJpbgo+Pj4KPj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4gKkZyb206 KiBDaHJpc3RpYW4gS8O2bmlnIDxkZWF0aHNpbXBsZUB2b2RhZm9uZS5kZT4KPj4+ICpTZW50Oiog VGh1cnNkYXksIEFwcmlsIDIwLCAyMDE3IDQ6NDMgQU0KPj4+ICpUbzoqIFhpZSwgQWxleEJpbjsg WmhvdSwgRGF2aWQoQ2h1bk1pbmcpOyBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4g KlN1YmplY3Q6KiBSZTogW1BBVENIXSBkbXIvYW1kZ3B1OiBGaXggd3JvbmdseSB1bnJlZiBvZiBC Two+Pj4gICAKPj4+IEhpIEFsZXhCaW4sCj4+Pgo+Pj4+IE1pc3Npbmcga3VubWFwIG1hcHBpbmcg aW4gdm1hbGxvYyB3aWxsIG1ha2Uga2VybmVsIG1hc3RlciBwYWdlIHRhYmxlCj4+Pj4gaW5jb3Jy ZWN0Lgo+Pj4gVGhhdCdzIHdoYXQgSSB0cmllZCB0byBleHBsYWluIHllc3RlcmRheSwgYnV0IHVu Zm9ydHVuYXRlbHkgZGlkbid0Cj4+PiBoYWQgdGltZSB0byBkbyBzby4gVGhlcmUgaXMgbm90IGNv cnJ1cHRpb24gb2YgdGhlIGtlcm5lbCBtYXN0ZXIgcGFnZQo+Pj4gdGFibGUgaW4gdGhpcyBjYXNl IQo+Pj4KPj4+IFRoZSBjYWxsIG9mIHR0bV9ib19rdW5tYXAgaXMgY29tcGxldGVseSBvcHRpb25h bCwgdGFrZSBhIGxvb2sgYXQKPj4+IGFtZGdwdV90dG1faW9fbWVtX3Jlc2VydmUoKSBhbmQgYW1k Z3B1X3R0bV9pb19tZW1fZnJlZSgpLgo+Pj4KPj4+IFRoZSBhcGVydHVyZSBpcyBrZXB0IG1hcHBl ZCBpbnRvIHRoZSBwYWdlIHRhYmxlcyBmb3IgdGhlIHdob2xlIHRpbWUKPj4+IHRoZSBkcml2ZXIg aXMgbG9hZGVkLiBTbyB0aGlzIGlzIGEgY29tcGxldGUgbm8tb3AgYW5kIG9ubHkgZG9uZSBmb3IK Pj4+IGNvbnNpc3RlbmN5Lgo+Pj4KPj4+PiBJdCBpcyBnb29kIHRoYXQgeW91IGFncmVlIHRoYXQg dGhlcmUgaXMgbm8gcmVhbCB3b3JsZCBiYWQgZXhhbXBsZQo+Pj4+IGNhdXNlZCBieSBteSBwYXRj aC4gSSB3aWxsIG5vdCBkaXNjdXNzIHdoZXRoZXIgaXQgaXMgYW4gaW1wcm92ZW1lbnQKPj4+PiBv ciBub3Qgbm93IHRvIHNhdmUgdGltZSBmb3IgYm90aCBvZiB1cy4KPj4+Pgo+Pj4gR3JlYXQgYXQg bGVhc3Qgd2UgY2FuIG5vdyBhZ3JlZSB0byBjb21wbGV0ZWx5IGRyb3AgdGhpcyBwYXRjaC4KPj4+ Cj4+PiBUaGFua3MsCj4+PiBDaHJpc3RpYW4uCj4+Pgo+Pj4gQW0gMTkuMDQuMjAxNyB1bSAyMToz MCBzY2hyaWViIFhpZSwgQWxleEJpbjoKPj4+PiBIaSBDaHJpc3RpYW4sCj4+Pj4KPj4+Pgo+Pj4+ IE1pc3Npbmcga3VubWFwIG1hcHBpbmcgaW4gdm1hbGxvYyB3aWxsIG1ha2Uga2VybmVsIG1hc3Rl ciBwYWdlIHRhYmxlCj4+Pj4gaW5jb3JyZWN0LiBJIHdvdWxkIG5vdCBjYWxsIHN1Y2ggaXNzdWUg YXMgY29tcGxldGVseSBoYXJtbGVzcy4KPj4+PiBQbGVhc2Ugbm90ZSB0aGF0IEFNRCBncmFwaGlj IGRyaXZlciBjYW4gcnVuIGluIDMyIGJpdCBzeXN0ZW0uIEluIDMyCj4+Pj4gYml0IHN5c3RlbSwg dm1hbGxvYyBhZGRyZXNzIHNwYWNlIGlzIG11Y2ggc21hbGxlciB0aGFuIHNpemUgb2YgbW9zdAo+ Pj4+IEdQVSBWUkFNLgo+Pj4+Cj4+Pj4KPj4+PiBhbWRncHVfYm9fZnJlZV9rZXJuZWwgaGFzIHNh bWUgaXNzdWUgYXMgYW1kZ3B1X3ZyYW1fc2NyYXRjaF9maW5pLiAxLgo+Pj4+IEl0IGNhbGxzIGFt ZGdwdV9ib19yZXNlcnZlIGludGVycnVwdGlibGUgdG9vLiAyLiBJdCBtaXNzZXMga3VubWFwCj4+ Pj4gd2hlbiBhbWRncHVfYm9fcmVzZXJ2ZSByZXR1cm5zIGVycm9yIHRvby4gQXMgcmVzdWx0LCBr ZXJuZWwgbWFzdGVyCj4+Pj4gcGFnZSB0YWJsZSBjYW4gYmVjb21lIGluY29ycmVjdCwgb3IgYXMg eW91IGNhbGwgaXQgImNvbXBsZXRlbHkKPj4+PiBoYXJtbGVzcyB2bWFsbG9jIHNwYWNlIGxlYWtp bmciLgo+Pj4+Cj4+Pj4KPj4+PiBCZWNhdXNlIGFtZGdwdV9ib19mcmVlX2tlcm5lbCBpcyB1c2Vk IGluIG1vcmUgcGxhY2VzLCBzdWNoIGFzIHBzcAo+Pj4+IGNvbW1hbmQgc3VibWlzc2lvbiwgdGhl cmUgd2lsbCBiZSBiaWdnZXIgY2hhbmNlIHRvIGhhdmUgb3RoZXIgdXNhZ2UKPj4+PiB3aGVyZSBz aWduYWwgaXMgbm90IGJsb2NrZWQuIFRoaXMgd2lsbCBiZWNvbWUgYSByZWFsIGJ1Zy4KPj4+Pgo+ Pj4+Cj4+Pj4gSSBhbSB0aGlua2luZyB0aGF0IHdlIG1heSBmaXggdGhlIGlzc3VlIGNvbXBsZXRl bHkgd2hlbiBUVE0gcmVsZWFzZXMKPj4+PiBCTy4gQnV0IHRoYXQgaXMgYSBiaWdnZXIgY2hhbmdl Lgo+Pj4+Cj4+Pj4KPj4+PiBJdCBpcyBnb29kIHRoYXQgeW91IGFncmVlIHRoYXQgdGhlcmUgaXMg bm8gcmVhbCB3b3JsZCBiYWQgZXhhbXBsZQo+Pj4+IGNhdXNlZCBieSBteSBwYXRjaC4gSSB3aWxs IG5vdCBkaXNjdXNzIHdoZXRoZXIgaXQgaXMgYW4gaW1wcm92ZW1lbnQKPj4+PiBvciBub3Qgbm93 IHRvIHNhdmUgdGltZSBmb3IgYm90aCBvZiB1cy4KPj4+Pgo+Pj4+Cj4+Pj4gVGhhbmtzLAo+Pj4+ Cj4+Pj4gQWxleCBCaW4gWGllCj4+Pj4KPj4+Pgo+Pj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4+ICpG cm9tOiogQ2hyaXN0aWFuIEvDtm5pZyA8ZGVhdGhzaW1wbGVAdm9kYWZvbmUuZGU+Cj4+Pj4gKlNl bnQ6KiBXZWRuZXNkYXksIEFwcmlsIDE5LCAyMDE3IDc6NTAgQU0KPj4+PiAqVG86KiBYaWUsIEFs ZXhCaW47IFpob3UsIERhdmlkKENodW5NaW5nKTsgYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPj4+PiAqU3ViamVjdDoqIFJlOiBbUEFUQ0hdIGRtci9hbWRncHU6IEZpeCB3cm9uZ2x5IHVu cmVmIG9mIEJPCj4+Pj4gICAKPj4+Pj4gV2l0aG91dCBjb3JyZWN0bHkga3VubWFwLCBwYWdlIHRh YmxlIGlzIGNvcnJ1cHRlZC4gUGFnZSBlbnRyaWVzCj4+Pj4+IHBvaW50IHRvIHdyb25nIG1lbW9y eSBsb2NhdGlvbnMuIFlvdSBtaWdodCBjYWxsIGl0IGNvbXBsZXRlbHkKPj4+Pj4gaGFybWxlc3Mu IEJ1dCBJIHRoaW5rIHRoaXMgaXMgYSBzZXZlcmUgYnVnLiBMZWFraW5nIG1lbW9yeSBpcwo+Pj4+ PiBiZXR0ZXIgdGhhbiBhIGNvcnJ1cHRlZCBwYWdlIHRhYmxlLiBUaGluayBzZWN1cml0eS4KPj4+ PiBXZSBhcmUgdGFsa2luZyBhYm91dCB0aGUgcGFnZSB0YWJsZXMgZm9yIHRoZSB2bWFsbG9jIGFy ZWEgaW4gdGhlCj4+Pj4ga2VybmVsIGhlcmUsIHNvIG5vIHNlY3VyaXR5IHByb2JsZW0uIExlYWtp bmcgbWVtb3J5IGlzIG11Y2ggbW9yZQo+Pj4+IHByb2JsZW1hdGljLgo+Pj4+Cj4+Pj4+IFdvdWxk IHlvdSBwcm92aWRlIGFueSBkb2N1bWVudCBhbmQgcmVmZXJlbmNlIGJ5IHNheWluZyIgSXQgaXMK Pj4+Pj4gaW1wb3NzaWJsZSB0byByZWNlaXZlIGEgc2lnbmFsIGR1cmluZyBtb2R1bGUgbG9hZC91 bmxvYWQiPyBGb3IKPj4+Pj4gZXhhbXBsZSwgaWYgdGhlIHVubG9hZCBzdHVjayBpbiBhIGxvY2ss IGNhbiBDVFJMK0Mgc3RvcCB0aGUgdW5sb2FkPwo+Pj4+Pgo+Pj4+IE5vLCBDVFJMK0MgZG9lc24n dCBhYm9ydCBtb2R1bGUgbG9hZC91bmxvYWQuIFRoZXJlIGhhdmUgYmVlbiBwYXRjaGVzCj4+Pj4g dG8gY2hhbmdlcyB0aGlzIGEgd2hpbGUgYWdvLCBidXQgSUlSQyBpdCBicm9rZSBhIHdob2xlIGJ1 bmNoIG9mCj4+Pj4gZHJpdmVyIHJlbHlpbmcgb24gdGhpcy4KPj4+Pgo+Pj4+PiBXaGF0IGFib3V0 IHRoZXJlIGlzIHNvbWUgb3RoZXIgcmV0dXJuIGVycm9yPyBXaGF0IGFib3V0IGluIGZ1dHVyZQo+ Pj4+PiBzb21lYm9keSBpbXByb3ZlIGFtZGdwdV9ib19yZXNlcnZlIHRvIHJldHVybiBvdGhlciBl cnJvcnMsCj4+Pj4+IHRoZW4gZnVuY3Rpb24gYW1kZ3B1X3ZyYW1fc2NyYXRjaF9maW5pIGJlY29t ZXMgYnVnZ3k/Cj4+Pj4+Cj4+Pj4gWWVzLCB0aGF0IGlzIGluZGVlZCBhbiBpc3N1ZS4gRm9yIGV4 YW1wbGUgLUVERUFETEsgaXMgcG9zc2libGUgYXMKPj4+PiB3ZWxsLiBUaGF0J3Mgd2h5IEkgc2Fp ZCB3ZSBzaG91bGQgdXNlIGFtZGdwdV9ib19mcmVlX2tlcm5lbCgpIGluc3RlYWQuCj4+Pj4KPj4+ Pj4gV2hpbGUgSSBhbSB0aGlua2luZyB3aGV0aGVyIHRoZXJlIGlzIGEgYmV0dGVyIHdheSBmb3Ig dGhlIGN1cnJlbnQKPj4+Pj4gc2l0dWF0aW9uLCB3b3VsZCB5b3UgZ2l2ZSBhIHJlYWwgd29ybGQg ZXhhbXBsZSB0aGF0IG15IHBhdGNoIHJlYWxseQo+Pj4+PiBub3Qgd29ya2luZz8gVGhlbiB3ZSBj YW4gYWRkcmVzcyBpdC4KPj4+Pj4KPj4+PiBJIGRvbid0IHRoaW5rIHRoZXJlIGlzIGJlY2F1c2Ug dGhlIGRyaXZlciBjYW4ndCByZWNlaXZlIGEgc2lnbmFsCj4+Pj4gZHVyaW5nIGxvYWQvdW5sb2Fk LCBidXQgdGhlIHByb2JsZW0gaXMgcmF0aGVyIHRoYXQgdGhlIHBhdGNoIGRvZXNuJ3QKPj4+PiBp bXByb3ZlIHRoZSBzaXR1YXRpb24gYXQgYWxsLgo+Pj4+Cj4+Pj4gUmVnYXJkcywKPj4+PiBDaHJp c3RpYW4uCj4+Pj4KPj4+PiBBbSAxOS4wNC4yMDE3IHVtIDEzOjM3IHNjaHJpZWIgWGllLCBBbGV4 QmluOgo+Pj4+PiBIaSBDaHJpc3RpYW4sCj4+Pj4+Cj4+Pj4+Cj4+Pj4+IFdpdGhvdXQgY29ycmVj dGx5IGt1bm1hcCwgcGFnZSB0YWJsZSBpcyBjb3JydXB0ZWQuIFBhZ2UgZW50cmllcwo+Pj4+PiBw b2ludCB0byB3cm9uZyBtZW1vcnkgbG9jYXRpb25zLiBZb3UgbWlnaHQgY2FsbCBpdCBjb21wbGV0 ZWx5Cj4+Pj4+IGhhcm1sZXNzLiBCdXQgSSB0aGluayB0aGlzIGlzIGEgc2V2ZXJlIGJ1Zy4gTGVh a2luZyBtZW1vcnkgaXMKPj4+Pj4gYmV0dGVyIHRoYW4gYSBjb3JydXB0ZWQgcGFnZSB0YWJsZS4g VGhpbmsgc2VjdXJpdHkuCj4+Pj4+Cj4+Pj4+Cj4+Pj4+IFdvdWxkIHlvdSBwcm92aWRlIGFueSBk b2N1bWVudCBhbmQgcmVmZXJlbmNlIGJ5IHNheWluZyIgSXQgaXMKPj4+Pj4gaW1wb3NzaWJsZSB0 byByZWNlaXZlIGEgc2lnbmFsIGR1cmluZyBtb2R1bGUgbG9hZC91bmxvYWQiPyBGb3IKPj4+Pj4g ZXhhbXBsZSwgaWYgdGhlIHVubG9hZCBzdHVjayBpbiBhIGxvY2ssIGNhbiBDVFJMK0Mgc3RvcCB0 aGUgdW5sb2FkPwo+Pj4+Pgo+Pj4+Pgo+Pj4+PiBJZiAiSXQgaXMgaW1wb3NzaWJsZSB0byByZWNl aXZlIGEgc2lnbmFsIGR1cmluZyBtb2R1bGUKPj4+Pj4gbG9hZC91bmxvYWQiLCBpbnRlcnJ1cHRp YmxlIHdhaXRpbmcgaXMgZmluZSB0b28sIGJlY2F1c2UKPj4+Pj4gZnVuY3Rpb24gYW1kZ3B1X2Jv X3Jlc2VydmUgd2lsbCByZXR1cm4gc3VjY2Vzc2Z1bGx5Lgo+Pj4+Pgo+Pj4+Pgo+Pj4+PiBXaGF0 IGFib3V0IHRoZXJlIGlzIHNvbWUgb3RoZXIgcmV0dXJuIGVycm9yPyBXaGF0IGFib3V0IGluIGZ1 dHVyZQo+Pj4+PiBzb21lYm9keSBpbXByb3ZlIGFtZGdwdV9ib19yZXNlcnZlIHRvIHJldHVybiBv dGhlciBlcnJvcnMsCj4+Pj4+IHRoZW4gZnVuY3Rpb24gYW1kZ3B1X3ZyYW1fc2NyYXRjaF9maW5p IGJlY29tZXMgYnVnZ3k/Cj4+Pj4+Cj4+Pj4+Cj4+Pj4+IFdoaWxlIEkgYW0gdGhpbmtpbmcgd2hl dGhlciB0aGVyZSBpcyBhIGJldHRlciB3YXkgZm9yIHRoZSBjdXJyZW50Cj4+Pj4+IHNpdHVhdGlv biwgd291bGQgeW91IGdpdmUgYSByZWFsIHdvcmxkIGV4YW1wbGUgdGhhdCBteSBwYXRjaCByZWFs bHkKPj4+Pj4gbm90IHdvcmtpbmc/IFRoZW4gd2UgY2FuIGFkZHJlc3MgaXQuCj4+Pj4+Cj4+Pj4+ Cj4+Pj4+IFRoYW5rcywKPj4+Pj4KPj4+Pj4gQWxleCBCaW4KPj4+Pj4KPj4+Pj4KPj4+Pj4gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCj4+Pj4+ICpGcm9tOiogQ2hyaXN0aWFuIEvDtm5pZyA8ZGVhdGhzaW1wbGVA dm9kYWZvbmUuZGU+Cj4+Pj4+ICpTZW50OiogV2VkbmVzZGF5LCBBcHJpbCAxOSwgMjAxNyAyOjM1 IEFNCj4+Pj4+ICpUbzoqIFhpZSwgQWxleEJpbjsgWmhvdSwgRGF2aWQoQ2h1bk1pbmcpOwo+Pj4+ PiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+PiAqU3ViamVjdDoqIFJlOiBbUEFU Q0hdIGRtci9hbWRncHU6IEZpeCB3cm9uZ2x5IHVucmVmIG9mIEJPCj4+Pj4+ICAgCj4+Pj4+IEhp IEFsZXhCaW4sCj4+Pj4+Cj4+Pj4+IHRoZSBhbnN3ZXIgaXMgdHRtX2JvX2t1bm1hcCBpc24ndCBj YWxsZWQgYXQgYWxsIGFuZCB5ZXMgaW4gdGhlIGNhc2UKPj4+Pj4gb2YgYW4gaW9tYXAgd2UgbGVh ayB0aGUgYWRkcmVzcyBzcGFjZSByZXNlcnZlZC4KPj4+Pj4KPj4+Pj4gQnV0IHRoYXQgaXMgY29t cGxldGVseSBoYXJtbGVzcyBvbiBhIDY0Yml0IHN5c3RlbSBjb21wYXJlZCB0bwo+Pj4+PiBsZWFr aW5nIHRoZSBtZW1vcnkgYmFja2luZyB0aGUgYWRkcmVzcyBzcGFjZS4KPj4+Pj4KPj4+Pj4gVXNp bmcgYW1kZ3B1X2JvX2ZyZWVfa2VybmVsKCkgaW5zdGVhZCBvZiBvcGVubHkgY29kaW5nIGl0IGhl cmUgaXMKPj4+Pj4gcHJvYmFibHkgYSBnb29kIGlkZWEuCj4+Pj4+Cj4+Pj4+IEFkZGl0aW9uYWwg dG8gdGhhdCBpdCdzIHByb2JhYmx5IGEgZ29vZCBpZGVhIHRvIHNldCB0aGUgbm9faW50cgo+Pj4+ PiBmbGFnIHdoZW4gcmVzZXJ2aW5nIGtlcm5lbCBCT3MuIEl0IGlzIGltcG9zc2libGUgdG8gcmVj ZWl2ZSBhCj4+Pj4+IHNpZ25hbCBkdXJpbmcgbW9kdWxlIGxvYWQvdW5sb2FkLCBidXQgaXQncyBw cm9iYWJseSBiZXR0ZXIgdG8KPj4+Pj4gZG9jdW1lbnQgdGhhdCBpbiB0aGUgY29kZSBhcyB3ZWxs Lgo+Pj4+Pgo+Pj4+PiBSZWdhcmRzLAo+Pj4+PiBDaHJpc3RpYW4uCj4+Pj4+Cj4+Pj4+IEFtIDE4 LjA0LjIwMTcgdW0gMjA6NTQgc2NocmllYiBYaWUsIEFsZXhCaW46Cj4+Pj4+PiBIaSBDaHJpc3Rp YW4sCj4+Pj4+Pgo+Pj4+Pj4gSGF2ZSB5b3UgZm91bmQgaG93L3doZXJlL3doZW4/IFdoZW4geW91 IHNhaWQgIm1hcHBpbmcgd2lsbCBqdXN0IGJlCj4+Pj4+PiByZWxlYXNlZCBhIGJpdCBsYXRlciBv biIsIHlvdSBtdXN0IGtub3cgdGhlIGFuc3dlci4KPj4+Pj4+Cj4+Pj4+PiBJdCBpcyBkaWZmaWN1 bHQgdG8gcHJvdmUgc29tZXRoaW5nIGRvZXMgbm90IGV4aXN0LiBBbnl3YXksIEkgd2lsbAo+Pj4+ Pj4gZ2l2ZSBpdCBhIHRyeSB0byBwcm92ZSBzdWNoICJsYXRlciBvbiIgZG9lcyBub3QgZXhpc3Qu Cj4+Pj4+Pgo+Pj4+Pj4gRnVuY3Rpb24gdHRtX2JvX2t1bm1hcCBpcyB0aGUgb25seSBmdW5jdGlv biB0byB1bm1hcC4gVG8gcHJvdmUKPj4+Pj4+IHRoaXMsIHNlYXJjaCB0dG1fYm9fbWFwX2lvbWFw LCBvbmx5IHR0bV9ib19rdW5tYXAgdXNlIHRoaXMgZW51bSB0bwo+Pj4+Pj4gY29ycmVjdGx5IGt1 bm1hcC4KPj4+Pj4+Cj4+Pj4+PiBGdW5jdGlvbiB0dG1fYm9fa3VubWFwIGlzIG5vdCBjYWxsZWQg YnkgdHRtIGl0c2VsZi4gVGhpcyBpcyBhIGhpbnQKPj4+Pj4+IHRoYXQgYWxsIFRUTSBkZWxheSBk ZWxldGUgbWVjaGFuaXNtIG9yIHVucmVmIG1lY2hhbmlzbSB3aWxsIE5PVAo+Pj4+Pj4ga3VubWFw IEJPIGxhdGVyIG9uLgo+Pj4+Pj4KPj4+Pj4+IEZ1bmN0aW9uIHR0bV9ib19rdW5tYXAgaXMgY2Fs bGVkIGJ5IEFNREdQVQo+Pj4+Pj4gZnVuY3Rpb24gYW1kZ3B1X2JvX2t1bm1hcCBhbmQgYW1kZ3B1 X2dlbV9wcmltZV92dW5tYXAuCj4+Pj4+Pgo+Pj4+Pj4gU2VhcmNoIEFNREdQVSBmb3IgYW1kZ3B1 X2JvX2t1bm1hcC4gQWxsIG1hdGNoZXMgZG8gbm90IGt1bm1hcCBmb3IKPj4+Pj4+IHNjcmF0Y2gg VlJBTSBCTy4gIGFtZGdwdV9ib19mcmVlX2tlcm5lbCBpcyBhIHN1c3BlY3QgYnV0IHRoZQo+Pj4+ Pj4gYW5zd2VyIGlzIHN0aWxsIE5PLgo+Pj4+Pj4KPj4+Pj4+IFNvIGFsbCBwb3NzaWJpbGl0aWVz IGFyZSBzZWFyY2hlZC4gRGlkIEkgbWlzcyBhbnl0aGluZz8KPj4+Pj4+Cj4+Pj4+PiBUaGFua3Ms Cj4+Pj4+PiBBbGV4IEJpbiBYaWUKPj4+Pj4+Cj4+Pj4+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+Pj4+ ICpGcm9tOiogWGllLCBBbGV4QmluCj4+Pj4+PiAqU2VudDoqIFR1ZXNkYXksIEFwcmlsIDE4LCAy MDE3IDI6MDQ6MzMgUE0KPj4+Pj4+ICpUbzoqIENocmlzdGlhbiBLw7ZuaWc7IFpob3UsIERhdmlk KENodW5NaW5nKTsKPj4+Pj4+IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4+PiAq U3ViamVjdDoqIFJlOiBbUEFUQ0hdIGRtci9hbWRncHU6IEZpeCB3cm9uZ2x5IHVucmVmIG9mIEJP Cj4+Pj4+PiAgIAo+Pj4+Pj4KPj4+Pj4+IEhpIENocmlzdGlhbiwKPj4+Pj4+Cj4+Pj4+Pgo+Pj4+ Pj4gV291bGQgeW91IHBvaW50IG91dCB3aGVyZS93aGVuIHdpbGwga3VubWFwIGhhcHBlbiBmb3Ig dGhpcyBCTyB3aGVuCj4+Pj4+PiByZWxlYXNlPyBJdCBtdXN0IGJlIHNvbWV3aGVyZSBpbiBzb21l IGZ1bmN0aW9uIGNhbGxzLgo+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+PiBJIGNoZWNrZWQgYmVmb3JlIEkg YXNrZWQgZm9yIHJldmlldy4gQnV0IEkgZGlkIG5vdCBzZWUgc3VjaAo+Pj4+Pj4gb2J2aW91cyBr dW5tYXAgZnVuY3Rpb24gY2FsbC4KPj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4gSWYgc28sIHRoZXJlIHNo b3VsZCBiZSBhIGNvbW1lbnQgaW4KPj4+Pj4+IGZ1bmN0aW9uIGFtZGdwdV92cmFtX3NjcmF0Y2hf ZmluaSB0byBhdm9pZCBmdXR1cmUgY29uZnVzaW9uLgo+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+PiBUaGFu a3MsCj4+Pj4+PiBBbGV4IEJpbiBYaWUKPj4+Pj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4+Pj4gKkZy b206KiBDaHJpc3RpYW4gS8O2bmlnIDxkZWF0aHNpbXBsZUB2b2RhZm9uZS5kZT4KPj4+Pj4+ICpT ZW50OiogVHVlc2RheSwgQXByaWwgMTgsIDIwMTcgMTo0NiBQTQo+Pj4+Pj4gKlRvOiogWGllLCBB bGV4QmluOyBaaG91LCBEYXZpZChDaHVuTWluZyk7Cj4+Pj4+PiBhbWQtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwo+Pj4+Pj4gKlN1YmplY3Q6KiBSZTogW1BBVENIXSBkbXIvYW1kZ3B1OiBGaXgg d3JvbmdseSB1bnJlZiBvZiBCTwo+Pj4+Pj4gICAKPj4+Pj4+IEhpIEFsZXhCaW4sCj4+Pj4+Pgo+ Pj4+Pj4gTm8sIERhdmlkIGlzIHJpZ2h0LiBUaGlzIGlzIGEgdmVyeSBjb21tb24gY29kaW5nIHBh dHRlcm4gaW4gdGhlCj4+Pj4+PiBrZXJuZWwgbW9kdWxlLgo+Pj4+Pj4KPj4+Pj4+IEZyZWVpbmcg dXAgYSBCTyB3aGlsZSB0aGVyZSBzdGlsbCBleGlzdHMgYSBrZXJuZWwgbWFwcGluZyBpcwo+Pj4+ Pj4gcGVyZmVjdGx5IG9rLCB0aGUgbWFwcGluZyB3aWxsIGp1c3QgYmUgcmVsZWFzZWQgYSBiaXQg bGF0ZXIgb24uCj4+Pj4+Pgo+Pj4+Pj4gU28gdGhpcyBjb2RlIGlzIGFjdHVhbGx5IHBlcmZlY3Rs eSBvayBhbmQganVzdCBhbiBvcHRpbWl6YXRpb24sCj4+Pj4+PiBidXQgeW91ciBwYXRjaCBicmVh a3MgaXQgYW5kIGNyZWF0ZXMgYSBtZW1vcnkgbGVhay4KPj4+Pj4+Cj4+Pj4+PiBSZWdhcmRzLAo+ Pj4+Pj4gQ2hyaXN0aWFuLgo+Pj4+Pj4KPj4+Pj4+IEFtIDE4LjA0LjIwMTcgdW0gMTc6MTcgc2No cmllYiBYaWUsIEFsZXhCaW46Cj4+Pj4+Pj4gSGkgRGF2aWQsCj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+ Pj4+IFdoZW4gYW1kZ3B1X2JvX3Jlc2VydmUgcmV0dXJuIGVycm9ycywgd2UgY2Fubm90IHJlbGVh c2UgdGhlIEJPLgo+Pj4+Pj4+IFRoaXMgaXMgbm90IGEgbWVtb3J5IGxlYWsuIEdlbmVyYWwgc3Bl YWtpbmcsIG1lbW9yeSBsZWFrCj4+Pj4+Pj4gaXMgdW5ub3RpY2VkIGFuZCB1bmludGVudGlvbmFs Lgo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiBUaGUgY2FsbGVyIG9mIGZ1bmN0aW9uIGFtZGdwdV92 cmFtX3NjcmF0Y2hfZmluaSBpZ25vcmVzIHRoZQo+Pj4+Pj4+IHJldHVybiBlcnJvciB2YWx1ZS4u Lgo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiBUaGUgIm1lbW9yeSBsZWFrIiBpcyBub3QgY2F1c2Vk IGJ5IG15IHBhdGNoLiBJdCBpcyBjYXVzZWQgYmVjYXVzZQo+Pj4+Pj4+IHJlc2VydmluZyBCTyBm YWlscy4KPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4gVGhpcyBwYXRjaCBvbmx5IGFpbSB0byBtYWtl IGZ1bmN0aW9uIGFtZGdwdV92cmFtX3NjcmF0Y2hfZmluaQo+Pj4+Pj4+IGJlaGF2ZSBjb3JyZWN0 bHkuCj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+IFRvIGZvbGxvdyB1cCwgd2UgY2FuIGFkZCBhIHdh cm5pbmcgbWVzc2FnZSB3aGVuIGFtZGdwdV9ib19yZXNlcnZlCj4+Pj4+Pj4gZXJyb3IgaGFwcGVu cyBpbiBhIGRpZmZlcmVudCBwYXRjaC4KPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4gSWYgZnVuY3Rp b24gY2FsbCBhbWRncHVfYm9fcmVzZXJ2ZSBpcyBjaGFuZ2VkIHRvIHVuaW50ZXJydXB0aWJsZSwK Pj4+Pj4+PiB0aGlzIGNoYW5nZXMgZHJpdmVyIGJlaGF2aW91ci4gV2l0aG91dCBhIHN1YnN0YW50 aWFsIGlzc3VlLCBJCj4+Pj4+Pj4gd291bGQgYmUgY2F1dGlvdXMgZm9yIHN1Y2ggYSBjaGFuZ2Uu Cj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+IFRoYW5rcywKPj4+Pj4+Pgo+Pj4+Pj4+IEFsZXggQmlu IFhpZQo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+Pj4+PiAqRnJv bToqIFpob3UsIERhdmlkKENodW5NaW5nKQo+Pj4+Pj4+ICpTZW50OiogTW9uZGF5LCBBcHJpbCAx NywgMjAxNyAxMDozOCBQTQo+Pj4+Pj4+ICpUbzoqIFhpZSwgQWxleEJpbjsgYW1kLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKPj4+Pj4+PiAqU3ViamVjdDoqIFJlOiBbUEFUQ0hdIGRtci9hbWRn cHU6IEZpeCB3cm9uZ2x5IHVucmVmIG9mIEJPCj4+Pj4+Pj4gICAKPj4+Pj4+Pgo+Pj4+Pj4+Cj4+ Pj4+Pj4gT24gMjAxN+W5tDA05pyIMTfml6UgMjI6NTQsIFhpZSwgQWxleEJpbiB3cm90ZToKPj4+ Pj4+Pj4gSGkgRGF2aWQsCj4+Pj4+Pj4+Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+IFRoYW5rcyBmb3IgdGhl IGNvbW1lbnRzLiBIb3dldmVyLCBwbGVhc2UgaGF2ZSBsb29rIGF0Cj4+Pj4+Pj4+IGFtZGdwdV9i b19yZXNlcnZlIGRlZmluaXRpb24uCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IHN0YXRpYyBpbmxpbmUgaW50 IGFtZGdwdV9ib19yZXNlcnZlKHN0cnVjdCBhbWRncHVfYm8gKmJvLCBib29sCj4+Pj4+Pj4+IG5v X2ludHIpCj4+Pj4+Pj4+Cj4+Pj4+Pj4gQWgsIHRoaXMgaXMgYSB3aXJlZCB3cmFwcGVyIGZvciB0 dG1fYm9fcmVzZXJ2ZS4KPj4+Pj4+Pgo+Pj4+Pj4+PiBXaGVuIHdlIGNhbGwgdGhpcyBmdW5jdGlv biBsaWtlIHRoZSBmb2xsb3dpbmc6Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+ICAgICAgICAgICByID0gYW1k Z3B1X2JvX3Jlc2VydmUoYWRldi0+dnJhbV9zY3JhdGNoLnJvYmosIGZhbHNlKTsKPj4+Pj4+Pj4g VGhlIGZhbHNlIG1lYW5zIGludGVycnVwdGlibGUuCj4+Pj4+Pj4+Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+ IE9uIHRoZSBvdGhlciBoYW5kLCAgd2hlbiBhbWRncHVfYm9fcmVzZXJ2ZSBmdW5jdGlvbiByZXR1 cm4KPj4+Pj4+Pj4gZXJyb3IsIHdoeSBkbyB3ZSB1bnJlZiBCTyB3aXRob3V0IGt1bm1hcCBhbmQg dW5waW4gdGhlIEJPPyBUaGlzCj4+Pj4+Pj4+IGlzIHdyb25nIGltcGxlbWVudGF0aW9uIHdoZW4g YW1kZ3B1X2JvX3Jlc2VydmUgcmV0dXJuIGFueSBlcnJvci4KPj4+Pj4+Pj4KPj4+Pj4+PiBZZWFo LCBJIHNlZSB5b3VyIG1lYW4sIGl0J3MgaW4gZHJpdmVyIHVuLWxvYWRpbmcsIEhvdyBhYm91dAo+ Pj4+Pj4+IGNoYW5naW5nIHRvIG5vIGludGVycnVwdGlibGU/IFlvdXIgcGF0Y2ggd2lsbCBtYWtl IGEgbWVtbGVhayBpZgo+Pj4+Pj4+IGJvX3Jlc2VydmUgZmFpbHMsIGJ1dCBpdCBzZWVtcyBub3Qg bWF0dGVyLiBJIGhhdmUgbm8gc3Ryb25nCj4+Pj4+Pj4gcHJlZmVyZW5jZS4KPj4+Pj4+Pgo+Pj4+ Pj4+IFJlZ2FyZHMsCj4+Pj4+Pj4gRGF2aWQgWmhvdQo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBUaGFua3Ms Cj4+Pj4+Pj4+IEFsZXggQmluIFhpZQo+Pj4+Pj4+Pgo+Pj4+Pj4+PiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Pj4+Pj4+Pj4gKkZyb206KiBaaG91LCBEYXZpZChDaHVuTWluZykKPj4+Pj4+Pj4gKlNlbnQ6KiBG cmlkYXksIEFwcmlsIDE0LCAyMDE3IDEyOjAwIEFNCj4+Pj4+Pj4+ICpUbzoqIFhpZSwgQWxleEJp bjsgYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+Pj4+Pj4gKlN1YmplY3Q6KiBSZTog W1BBVENIXSBkbXIvYW1kZ3B1OiBGaXggd3JvbmdseSB1bnJlZiBvZiBCTwo+Pj4+Pj4+PiAgIAo+ Pj4+Pj4+Pgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBPbiAyMDE35bm0MDTmnIgxNOaXpSAwNTozNCwgQWxl eCBYaWUgd3JvdGU6Cj4+Pj4+Pj4+PiBBY2NvcmRpbmcgdG8gY29tbWVudCBvZiBhbWRncHVfYm9f cmVzZXJ2ZSwgYW1kZ3B1X2JvX3Jlc2VydmUKPj4+Pj4+Pj4+IGNhbiByZXR1cm4gd2l0aCAtRVJF U1RBUlRTWVMuIFdoZW4gdGhpcyBmdW5jdGlvbiB3YXMgaW50ZXJydXB0ZWQKPj4+Pj4+Pj4+IGJ5 IGEgc2lnbmFsLCBCTyBzaG91bGQgbm90IGJlIHVucmVmLiBPdGhlcndpc2UgdGhlIEJPIG1pZ2h0 IGJlCj4+Pj4+Pj4+PiByZWxlYXNlZCB3aGlsZSBpcyBrbWFwcGVkIGFuZCBwaW5uZWQsIG9yIEJP IE1JR0hUIGJlIGRlcmVmCj4+Pj4+Pj4+PiBtdWx0aXBsZSB0aW1lcywgZXRjLgo+Pj4+Pj4+PiAg ICAgICAgICAgciA9IGFtZGdwdV9ib19yZXNlcnZlKGFkZXYtPnZyYW1fc2NyYXRjaC5yb2JqLCBm YWxzZSk7Cj4+Pj4+Pj4+IHdlIGhhdmUgc3BlY2lmaWVkIGludGVycnVwdGlibGUgdG8gZmFsc2Us IHNvIC1FUkVTVEFSVFNZUyBpc24ndAo+Pj4+Pj4+PiBwb3NzaWJsZQo+Pj4+Pj4+PiBoZXJlLgo+ Pj4+Pj4+Pgo+Pj4+Pj4+PiBUaGFua3MsCj4+Pj4+Pj4+IERhdmlkIFpob3UKPj4+Pj4+Pj4+IENo YW5nZS1JZDogSWY3NjA3MWE3Njg5NTBhMGQzYWQ5ZDVkYTdmY2FlMDQ4ODE4MDc2MjEKPj4+Pj4+ Pj4+IFNpZ25lZC1vZmYtYnk6IEFsZXggWGllIDxBbGV4QmluLlhpZUBhbWQuY29tPgo+Pj4+Pj4+ Pj4gLS0tCj4+Pj4+Pj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2 aWNlLmMgfCAyICstCj4+Pj4+Pj4+PiAgICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCj4+Pj4+Pj4+IGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCj4+Pj4+Pj4+PiBpbmRleCA1Mzk5NmUzLi4x ZGNjMmQxIDEwMDY0NAo+Pj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2RldmljZS5jCj4+Pj4+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfZGV2aWNlLmMKPj4+Pj4+Pj4+IEBAIC0zNTUsOCArMzU1LDggQEAgc3RhdGljIHZv aWQKPj4+Pj4+Pj4gYW1kZ3B1X3ZyYW1fc2NyYXRjaF9maW5pKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2KQo+Pj4+Pj4+Pj4gICAgICAgICAgICAgICAgIGFtZGdwdV9ib19rdW5tYXAoYWRldi0+ dnJhbV9zY3JhdGNoLnJvYmopOwo+Pj4+Pj4+Pj4gICAgICAgICAgICAgICAgIGFtZGdwdV9ib191 bnBpbihhZGV2LT52cmFtX3NjcmF0Y2gucm9iaik7Cj4+Pj4+Pj4+PiAgICAgICAgICAgICAgICAg YW1kZ3B1X2JvX3VucmVzZXJ2ZShhZGV2LT52cmFtX3NjcmF0Y2gucm9iaik7Cj4+Pj4+Pj4+PiAr ICAgICAgICAgICAgIGFtZGdwdV9ib191bnJlZigmYWRldi0+dnJhbV9zY3JhdGNoLnJvYmopOwo+ Pj4+Pj4+Pj4gICAgICAgICB9Cj4+Pj4+Pj4+PiAtICAgICBhbWRncHVfYm9fdW5yZWYoJmFkZXYt PnZyYW1fc2NyYXRjaC5yb2JqKTsKPj4+Pj4+Pj4+ICAgIH0KPj4+Pj4+Pj4+ICAgCj4+Pj4+Pj4+ PiAgICAvKioKPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPj4+Pj4+PiBhbWQtZ2Z4IG1haWxpbmcgbGlzdAo+Pj4+ Pj4+IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4+Pj4gaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cj4+Pj4+Pgo+Pj4+Pj4KPj4+ Pj4+Cj4+Pj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+Pj4+Pj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QKPj4+Pj4+IGFtZC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCj4+Pj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2FtZC1nZngKPj4+Pj4KPj4+Pj4KPj4+Pj4KPj4+Pj4gX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4+Pj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QK Pj4+Pj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+Pj4gaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cj4+Pj4KPj4+Cj4+Pgo+Pj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4+IGFtZC1n ZnggbWFpbGluZyBsaXN0Cj4+PiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4gaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cj4+Cj4+ Cj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+ IGFtZC1nZnggbWFpbGluZyBsaXN0Cj4+IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+ IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gYW1kLWdm eCBtYWlsaW5nIGxpc3QKPiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBs aXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=