From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Yu Subject: Re: [PATCH 1/2] f2fs: remove stale inode entry before eviction from gdirty_list Date: Wed, 21 Nov 2018 11:30:12 +0800 Message-ID: References: <1542607377-25446-1-git-send-email-riteshh@codeaurora.org> <0a2feb36-8f71-67a0-381c-2e487d658145@huawei.com> <20181119210340.GA33805@jaegeuk-macbookpro.roam.corp.google.com> <182b74e8-4148-4180-763c-a79b10bd0612@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-2.v29.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.90_1) (envelope-from ) id 1gPJDi-0002SF-09 for linux-f2fs-devel@lists.sourceforge.net; Wed, 21 Nov 2018 03:30:30 +0000 Received: from szxga04-in.huawei.com ([45.249.212.190] helo=huawei.com) by sfi-mx-1.v28.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.90_1) id 1gPJDd-00AxPn-W8 for linux-f2fs-devel@lists.sourceforge.net; Wed, 21 Nov 2018 03:30:29 +0000 In-Reply-To: <182b74e8-4148-4180-763c-a79b10bd0612@codeaurora.org> Content-Language: en-US List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net To: Ritesh Harjani , Jaegeuk Kim Cc: linux-f2fs-devel@lists.sourceforge.net SGkgUml0ZXNoLAoKT24gMjAxOC8xMS8yMCAxODozMywgUml0ZXNoIEhhcmphbmkgd3JvdGU6Cj4g Cj4gT24gMTEvMjAvMjAxOCAyOjMzIEFNLCBKYWVnZXVrIEtpbSB3cm90ZToKPj4gT24gMTEvMTks IFJpdGVzaCBIYXJqYW5pIHdyb3RlOgo+Pj4gSGkgQ2hhbywKPj4+Cj4+PiBPbiAxMS8xOS8yMDE4 IDEyOjA5IFBNLCBDaGFvIFl1IHdyb3RlOgo+Pj4+IEhpIFJpdGVzaCwKPj4+Pgo+Pj4+IE9uIDIw MTgvMTEvMTkgMTQ6MDIsIFJpdGVzaCBIYXJqYW5pIHdyb3RlOgo+Pj4+PiBUaGlzIGlzIHNlZW4g d2hlbiBDUF9FUlJPUl9GTEFHIGlzIG5vdCBzZXQgJiBGUyBtYXkgYmUgY29ycnVwdGVkLgo+Pj4+ PiBUaGVyZSBpcyBhIGNhc2Ugb2JzZXJ2ZWQgd2hlcmUgZGlydHkgc3RhbGUgaW5vZGUgcG9pbnRl ciBkYXRhIGlzIHN0aWxsCj4+Pj4+IHByZXNlbnQgaW4gdGhlIGdkaXJ0eV9saXN0IGNhdXNpbmcg cGFuaWMgb24gYWNjZXNzIHdoaWxlIGRvaW5nCj4+Pj4+IGNoZWNrcG9pbnQgb3BlcmF0aW9uLgo+ Pj4+Pgo+Pj4+PiBXQVJOSU5HOiBDUFU6IDMgUElEOiAxODI3IGF0Cj4+Pj4+IGtlcm5lbC9tc20t NC4xNC9mcy9mMmZzL2lub2RlLmM6NTY3Cj4+Pj4+IGYyZnNfZXZpY3RfaW5vZGUrMHgzNjQvMHgz N2MKPj4+Pj4gPC4uLj4KPj4+Pj4gWzQyMjQ2Ljc3NjI4OV0gQlVHOiBzcGlubG9jayBiYWQgbWFn aWMgb24gQ1BVIzQsIDEyNDUKPj4+Pj4gWzQyMjQ2Ljc4MjY3NF0gVW5hYmxlIHRvIGhhbmRsZSBr ZXJuZWwgcGFnaW5nIHJlcXVlc3QgYXQgdmlydHVhbCBhZGRyZXNzIDZiNmI2YjZiNmI3MTNiCj4+ Pj4+IDwuLi4+Cj4+Pj4+IFs0MjI0Ni44OTYzNzBdIHRhc2s6IGZmZmZmZmMwZjA0MzQwODAgdGFz ay5zdGFjazogZmZmZmZmODAyM2VhMDAwMAo+Pj4+PiBbNDIyNDYuOTAyNDY1XSBwYyA6IHNwaW5f YnVnKzB4ODAvMHhiOAo+Pj4+PiBbNDIyNDYuOTA2MDU1XSBsciA6IHNwaW5fYnVnKzB4NjQvMHhi OAo+Pj4+PiA8Li4uPgo+Pj4+PiBbNDIyNDcuMTIyMzQ2XSBDYWxsIHRyYWNlOgo+Pj4+PiBbNDIy NDcuMTI0ODc2XSAgc3Bpbl9idWcrMHg4MC8weGI4Cj4+Pj4+IFs0MjI0Ny4xMjgxMTBdICBkb19y YXdfc3Bpbl9sb2NrKzB4ZTgvMHgxMTgKPj4+Pj4gWzQyMjQ3LjEzMjE0NF0gIF9yYXdfc3Bpbl9s b2NrKzB4MjQvMHgzMAo+Pj4+PiBbNDIyNDcuMTM1OTE2XSAgaWdyYWIrMHgyMC8weDZjCj4+Pj4+ IFs0MjI0Ny4xMzg4OTRdICBmMmZzX3N5bmNfaW5vZGVfbWV0YSsweDU4LzB4YzAKPj4+Pj4gWzQy MjQ3LjE0MzE5OV0gIHdyaXRlX2NoZWNrcG9pbnQrMHgxYzQvMHhlY2MKPj4+Pj4gWzQyMjQ3LjE0 NzMyMl0gIGYyZnNfc3luY19mcysweDExOC8weDE3MAo+Pj4+PiBbNDIyNDcuMTUxMDk2XSAgZjJm c19kb19zeW5jX2ZpbGUrMHg0ZjAvMHg3OTgKPj4+Pj4gWzQyMjQ3LjE1NTMxMV0gIGYyZnNfc3lu Y19maWxlKzB4NTQvMHg2Ywo+Pj4+PiBbNDIyNDcuMTU5MDg3XSAgdmZzX2ZzeW5jX3JhbmdlKzB4 OTAvMHhhYwo+Pj4+PiBbNDIyNDcuMTYyOTUwXSAgdmZzX2ZzeW5jKzB4MmMvMHgzOAo+Pj4+PiBb NDIyNDcuMTY2Mjc4XSAgZG9fZnN5bmMrMHgzYy8weDc4Cj4+Pj4+IFs0MjI0Ny4xNjk1MTVdICBT eVNfZmRhdGFzeW5jKzB4MjAvMHgzMAo+Pj4+Pgo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBSaXRlc2gg SGFyamFuaSA8cml0ZXNoaEBjb2RlYXVyb3JhLm9yZz4KPj4+Pj4gLS0tCj4+Pj4+ICAgIGZzL2Yy ZnMvaW5vZGUuYyB8IDEwICsrKysrKy0tLS0KPj4+Pj4gICAgMSBmaWxlIGNoYW5nZWQsIDYgaW5z ZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPj4+Pj4KPj4+Pj4gZGlmZiAtLWdpdCBhL2ZzL2Yy ZnMvaW5vZGUuYyBiL2ZzL2YyZnMvaW5vZGUuYwo+Pj4+PiBpbmRleCA5MWNlZWUwLi5jNTdmNjM2 IDEwMDY0NAo+Pj4+PiAtLS0gYS9mcy9mMmZzL2lub2RlLmMKPj4+Pj4gKysrIGIvZnMvZjJmcy9p bm9kZS5jCj4+Pj4+IEBAIC03MDIsMTEgKzcwMiwxMyBAQCB2b2lkIGYyZnNfZXZpY3RfaW5vZGUo c3RydWN0IGlub2RlICppbm9kZSkKPj4+Pj4gICAgCXN0YXRfZGVjX2lubGluZV9kaXIoaW5vZGUp Owo+Pj4+PiAgICAJc3RhdF9kZWNfaW5saW5lX2lub2RlKGlub2RlKTsKPj4+Pj4gLQlpZiAobGlr ZWx5KCFpc19zZXRfY2twdF9mbGFncyhzYmksIENQX0VSUk9SX0ZMQUcpICYmCj4+Pj4+IC0JCQkJ IWlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9DUF9ESVNBQkxFRCkpKQo+Pj4+PiAtCQlmMmZzX2J1 Z19vbihzYmksIGlzX2lub2RlX2ZsYWdfc2V0KGlub2RlLCBGSV9ESVJUWV9JTk9ERSkpOwo+Pj4+ PiAtCWVsc2UKPj4+Pj4gKwlpZiAodW5saWtlbHkoaXNfaW5vZGVfZmxhZ19zZXQoaW5vZGUsIEZJ X0RJUlRZX0lOT0RFKSkpIHsKPj4+Pj4gICAgCQlmMmZzX2lub2RlX3N5bmNlZChpbm9kZSk7Cj4+ Pj4+ICsJCWYyZnNfbXNnKHNiaS0+c2IsIEtFUk5fV0FSTklORywKPj4+Pj4gKwkJCSAiaW5jb25z aXN0ZW50IGRpcnR5IGlub2RlOiV1IGVudHJ5IGZvdW5kIGR1cmluZyBldmljdGlvblxuIiwKPj4+ Pj4gKwkJCSBpbm9kZS0+aV9pbm8pOwo+Pj4+PiArCQlmMmZzX2J1Z19vbihzYmksIDEpOwo+Pj4+ IElJUkMsIEphZWdldWsgYWRkZWQgYmVsb3cgY29uZGl0aW9uIHRvIGF2b2lkIGYyZnNfYnVnX29u IGR1cmluZyBkb2luZyB0ZXN0Cj4+Pj4gdy8gY2hlY2twb2ludCBlcnJvciBpbmplY3Rpb24sIGlm IHdlIHJlbW92ZSB0aGlzLCB3ZSBtYXkgc3RpbGwgZW5jb3VudGVyCj4+Pj4gc3VjaCBwcm9ibGVt Lgo+Pj4+Cj4+Pj4gaWYgKGxpa2VseSghaXNfc2V0X2NrcHRfZmxhZ3Moc2JpLCBDUF9FUlJPUl9G TEFHKSkpCj4+PiBPaywgYWdyZWVkLiBEb2VzIGJlbG93IHNvdW5kcyBnb29kIHRoZW4/Cj4+PiBU aGUgaWRlYSBpcyB0byBnbyBhaGVhZCBhbmQgY2FsbCBmMmZzX2lub2RlX3N5bmNlZChpbm9kZSkg d2hlbiB0aGUgaW5vZGUKPj4+IEZJX0RJUlRZX0lOT0RFIGZsYWcgaXMgc2V0IGlycmVzcGVjdGl2 ZSBvZiBDUF9FUlJPUl9GTEFHIHNldCBvciBub3QuIEJlY2F1c2UKPj4+IG90aGVyd2lzZSB0aGVy ZSBpcyBhIHN0YWxlIGlub2RlIGVudHJ5IHdoaWNoIHdpbGwKPj4+IHJlbWFpbiBpbiBnZGlydHlf bGlzdCA9PiBjYXVzaW5nIGtlcm5lbCBwYW5pYyBpbiBjaGVja3BvaW50IHBhdGguCj4+Pgo+Pj4g ZGlmZiAtLWdpdCBhL2ZzL2YyZnMvaW5vZGUuYyBiL2ZzL2YyZnMvaW5vZGUuYwo+Pj4gaW5kZXgg OTFjZWVlMC4uMDA5MTVjMiAxMDA2NDQKPj4+IC0tLSBhL2ZzL2YyZnMvaW5vZGUuYwo+Pj4gKysr IGIvZnMvZjJmcy9pbm9kZS5jCj4+PiBAQCAtNzAyLDExICs3MDIsMTUgQEAgdm9pZCBmMmZzX2V2 aWN0X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpCj4+PiAgwqDCoMKgwqDCoMKgwqAgc3RhdF9k ZWNfaW5saW5lX2Rpcihpbm9kZSk7Cj4+PiAgwqDCoMKgwqDCoMKgwqAgc3RhdF9kZWNfaW5saW5l X2lub2RlKGlub2RlKTsKPj4+Cj4+PiAtwqDCoMKgwqDCoMKgIGlmIChsaWtlbHkoIWlzX3NldF9j a3B0X2ZsYWdzKHNiaSwgQ1BfRVJST1JfRkxBRykgJiYKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIWlzX3NiaV9mbGFnX3Nl dChzYmksIFNCSV9DUF9ESVNBQkxFRCkpKQo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZjJmc19idWdfb24oc2JpLCBpc19pbm9kZV9mbGFnX3NldChpbm9kZSwgRklfRElSVFlfSU5P REUpKTsKPj4+IC3CoMKgwqDCoMKgwqAgZWxzZQo+Pj4gK8KgwqDCoMKgwqDCoCBpZiAodW5saWtl bHkoaXNfaW5vZGVfZmxhZ19zZXQoaW5vZGUsIEZJX0RJUlRZX0lOT0RFKSkpIHsKPj4+ICDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZjJmc19pbm9kZV9zeW5jZWQoaW5vZGUpOwo+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZjJmc19tc2coc2JpLT5zYiwgS0VSTl9XQVJO SU5HLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ImluY29uc2lzdGVudCBkaXJ0eSBpbm9kZToldSBlbnRyeSBmb3VuZCBkdXJpbmcKPj4+IGV2aWN0 aW9uXG4iLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaW5vZGUtPmlfaW5vKTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICgo IWlzX3NldF9ja3B0X2ZsYWdzKHNiaSwgQ1BfRVJST1JfRkxBRykgJiYKPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIWlzX3Ni aV9mbGFnX3NldChzYmksIFNCSV9DUF9ESVNBQkxFRCkpKQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGYyZnNfYnVnX29uKHNiaSwgMSk7Cj4+PiArwqDC oMKgwqDCoMKgIH0KPj4+Cj4+Pj4gU28gSSdkIGxpa2UgdG8ga25vdyB3aGF0IGtpbmQgb2YgY2Fz ZSBjYW4gbWFrZSBkaXJ0eSBpbm9kZSBkdXJpbmcgZXZpY3QoKSwKPj4+PiBjYW4geW91IGV4cGxh aW4gbW9yZT8KPj4+IFllcywgd2UgYWxzbyBjb3VsZCBub3QgZ2V0IGV4YWN0IHBhdGggYWJvdXQg d2hlbiB0aGlzIGNhbiBoYXBwZW4uIEJ1dCBiZWxvdwo+Pj4gYXJlIHRoZSBwYXJhbGxlbCBvbmdv aW5nIGNvbnRleHRzIHdoZW4gdGhlIGlzc3VlIGlzIHNlZW46LQo+Pj4gV2UgZG8gc3VzcGVjdCB0 aGF0IHRoZXJlIGlzIHNvbWV0aGluZyBhbHJlYWR5IHdyb25nIGluIHRoZSBGUyBldmVuIGJlZm9y ZQo+Pj4gd2hlbiB0aGlzIGlzc3VlIG9jY3VycmVkIChkdWUgdG8gImluY29uc2lzdGVudCBub2Rl IGJsb2NrIiBsb2dzKS4gVGhpcyBjb3VsZAo+Pj4gYmUgZHVlIHRvIHNvbWUgb3RoZXIgdW5kZXJs eWluZyBzdG9yYWdlIGRyaXZlciBpc3N1ZS4KPj4+IE5vdCBzdXJlIHRob3VnaC4KPj4+Cj4+PiAx LiB1bmxpbmthdCBvcGVyYXRpb24gY2F1c2luZyBmMmZzX2V2aWN0X2lub2RlIGNhdXNpbmcgYSB3 YXJuaW5nIChhcwo+Pj4gbWVudGlvbmVkIGluIHRoZSBjb21taXQgdGV4dCkuCj4+PiAyLiBlY2hv IDMgPiAvcHJvYy9zeXMvdm0vZHJvcF9jYWNoZXMuCj4+PiAzLiBSZW5hbWUgb3BlcmF0aW9uIG9u IHNvbWUgZmlsZS4KPj4+IDQuIHZmc19mc3luYyAtPiBkb2luZyBjaGVja3BvaW50aW5nID0+IHRo aXMgY2F1c2VzIGEga2VybmVsIHBhbmljIHNpbmNlCj4+PiBzdGFsZSBpbm9kZSBlbnRyeSBpcyBz dGlsbCBwcmVzZW50IHdoaWNoIGdvdCBmcmVlZCBmcm9tIGYyZnNfZXZpY3RfaW5vZGUKPj4+IHBh dGguCj4+Pgo+Pj4gU29tZSBlcnJvciBsb2dzIHdoaWNoIHdlcmUgc2VlbiBsb25nIGJlZm9yZSB0 aGlzIGlzc3VlIG9jY3VycmVkLgo+Pj4gWzQyMjE5LjA4OTgxMF3CoEYyRlMtZnPCoChtbWNibGsw cDc1KTrCoGluY29uc2lzdGVudMKgbm9kZcKgYmxvY2sswqBuaWQ6NTAwMTgswqBub2RlX2Zvb3Rl cltuaWQ6NTAzMjcsaW5vOjUwMzI3LG9mczowLGNwdmVyOjEyMTQ2NTA1OTk2MjgyNzczMTgyLGJs a2FkZHI6NTE1NDg0XQo+Pj4gWzQyMjE5LjEwNDI4MV3CoEYyRlMtZnPCoChtbWNibGswcDc1KTrC oGluY29uc2lzdGVudMKgbm9kZcKgYmxvY2sswqBuaWQ6NDk4MzYswqBub2RlX2Zvb3RlcltuaWQ6 NTAyMjgsaW5vOjUwMjI4LG9mczowLGNwdmVyOjEwMjMwMjQ3Mjk0MjU2OTYxMDE3LGJsa2FkZHI6 MTQ5NjM0Nl0KPj4+IFs0MjIxOS4xMTg3MjNdwqBGMkZTLWZzwqAobW1jYmxrMHA3NSk6wqBpbmNv bnNpc3RlbnTCoG5vZGXCoGJsb2NrLMKgbmlkOjUwMzI3LMKgbm9kZV9mb290ZXJbbmlkOjAsaW5v OjAsb2ZzOjAsY3B2ZXI6MCxibGthZGRyOjBdCj4+PiBbNDIyMTkuMTMwNzgyXcKgRjJGUy1mc8Kg KG1tY2JsazBwNzUpOsKgaW5jb25zaXN0ZW50wqBub2RlwqBibG9jayzCoG5pZDo1MDIyOCzCoG5v ZGVfZm9vdGVyW25pZDowLGlubzowLG9mczowLGNwdmVyOjAsYmxrYWRkcjowXQo+PiBJJ3ZlIGNv bmNlcm5lZCB0aGF0IHRoaXMgcGF0Y2ggaGlkZXMgdGhlIGJ1ZyBhbmQgbWFrZXMgdGhlIHBhcnRp dGlvbiBiZWluZyBtb3JlCj4+IGNvcnJ1cHRlZC4gV2UgaGF2ZSB0byBmaWd1cmUgb3V0IHdoZXJl IHN1Y2ggdGhlIG5vZGUgYmxvY2sgd2VyZSBnZW5lcmF0ZWQuCgpJIGFncmVlIHdpdGggSmFlZ2V1 aywgd2UnZCBiZXR0ZXIgdG8gZmlndXJlIG91dCByb290IGNhdXNlIG9mIHRoaXMgaXNzdWUsCmlu c3RlYWQgb2YgaGlkaW5nIGl0LgoKPiBUaGlzIGlzc3VlIHNlZW1zIHRvIGJlIG1vc3RseSBkdWUg dG8gcHJvYmxlbSBmcm9tIHVuZGVybHlpbmcgc3RvcmFnZSAKPiBkcml2ZXIuIEFzIG9mIG5vdyB0 aGUgc3VzcGVjdAo+IGlzIG5vdCBmcm9tIGYyZnMgc2luY2Ugd2UgZG9uJ3Qgc2VlIHRoaXMgaXNz dWUgb24gYSBkaWZmZXJlbnQgCj4gY29uZmlndXJhdGlvbiBvZiBzdG9yYWdlIGRyaXZlci4KPiBU aGUgYWJvdmUgcGF0Y2ggaXMgbWFpbmx5IHRvIGZpeCBhIGtlcm5lbCBjcmFzaCB3aGVuIHRoZSBz eXN0ZW0vRlMgaGFzIAo+IGFjdHVhbGx5IGdvbmUgYmFkIGR1ZSB0byBzb21lIG90aGVyIHN1YnN5 c3RlbSBjYXVzaW5nIGNvcnJ1cHRpb24uCj4gV2UgdGhvdWdodCBpdCBpcyBhIGdvb2QgZml4IHRv IGhhdmUgYmVjYXVzZSBhbnl3YXlzIGlmIHRoZXJlIGlzIGEgZGlydHkgCj4gaW5vZGUgZm91bmQg ZHVyaW5nIGV2aWN0aW9uLAo+IHRoZW4gd2Ugc2hvdWxkIHJlbW92ZSBhbnkgc3RhbGUgZW50cmll cyBvZiBpdCBmcm9tIFJBTSBkYXRhIHN0cnVjdHVyZXMsIAo+IGJlZm9yZSBmcmVlaW5nIHRoZSBp bm9kZSAod2l0aCBhIHdhcm5pbmcgbXNnKS4KClRoYW5rcyBmb3IgdGhlIGV4cGxhbmF0aW9uLCBJ IGNhbiB1bmRlcnN0YW5kIHlvdXIgY29uY2VybiwgaWYgeW91IHdvcnJ5CmFib3V0IGZ1cnRoZXIg Y29ycnVwdGlvbiwgd291bGQgaXQgYmUgYmV0dGVyIHRvIHN0b3AgY2hlY2twb2ludCBpbiBhZGRp dGlvbgpmb3IgdGhpcyBjYXNlIGluIHFjb20ncyBrZXJuZWw/Cgo+IAo+PiBIb3cgbWFueSBwYXRj aGVzIGhhdmUgeW91IGNoZXJyeS1waWNrZWQ/IFdoaWNoIGtlcm5lbCB2ZXJzaW9uIGFyZSB5b3Ug dXNpbmc/Cj4ga2VybmVsIDQuMTQuIFllcyB3ZSBkbyBoYXZlIGFsbCB0aGUgcGF0Y2hlcyBwdWxs ZWQgZnJvbSBhbmRyb2lkIGFvc3AuCgpZb3UgbWVhbiBjb2RlIHVuZGVyIGJlbG93IHRhZz8KCmh0 dHBzOi8vYW5kcm9pZC5nb29nbGVzb3VyY2UuY29tL2tlcm5lbC9jb21tb24vKy9BU0ItMjAxOC0x MS0wNV80LjE0CgpUaGFua3MsCgo+PiBIYXZlIHlvdSBlbmFibGVkIElDRT8KPiBZZXMuIElDRSBp cyBlbmFibGVkLgo+IAo+IAo+IFRoYW5rcwo+IFJpdGVzaAo+IAo+Pgo+PiBUaGFua3MsCj4+Cj4+ Cj4+PiBUaGFua3MsCj4+Pgo+Pj4+IFRoYW5rcywKPj4+Pgo+Pj4+PiArCX0KPj4+Pj4gICAgCS8q IGlubyA9PSAwLCBpZiBmMmZzX25ld19pbm9kZSgpIHdhcyBmYWlsZWQgdCovCj4+Pj4+ICAgIAlp ZiAoaW5vZGUtPmlfaW5vKQo+Pj4+Pgo+IAo+IAo+IC4KPiAKCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtZjJmcy1kZXZlbCBtYWlsaW5nIGxp c3QKTGludXgtZjJmcy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKaHR0cHM6Ly9saXN0cy5z b3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbGludXgtZjJmcy1kZXZlbAo=