Received: by 2002:ab2:620c:0:b0:1ef:ffd0:ce49 with SMTP id o12csp98573lqt; Mon, 18 Mar 2024 02:33:55 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCV7axG29NsSggh5623oNHPWXv/ymyyU7ldmqo3evl5hCDa2J617hgDFg3RNCWekJ9VgroIM9WiV7bF5/fKaeCahjaGFusCAjT8PBhRE9A== X-Google-Smtp-Source: AGHT+IHcrcjEYGBz5dU/GBOVvRyyAUD3p/ru2vWb5+Df5BMfmgqUlbA4C30BAb4xyr6qFsaeg4Ez X-Received: by 2002:a05:6808:1b06:b0:3c3:84d7:c087 with SMTP id bx6-20020a0568081b0600b003c384d7c087mr4072972oib.47.1710754435671; Mon, 18 Mar 2024 02:33:55 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1710754435; cv=pass; d=google.com; s=arc-20160816; b=XriZFqnXH9Iuo3+aobmdSRc1iBmMTYOxkOEBILjqe9YbiwSsILwRjkQEGRwAhiYURi ELIRXuJpNIUe6kA3v4eEIahmYF5+aZD2EDHdrs38KYoox3UKnS8gdfxerHMOhIrLeDOp PNvXYsmRAWHYrnRVKmuhw5z+WtgDfwZSSCUhtod8ytxUFBEwXcSl/uGiABzCtCAFb7kk gIAtwCnDjZT0TTaV4qG0voT/xvCI56/P71DgO6STBNE2aua29l5Cs3qbV2wnZwKSXMkH qrShx+Ttdxw2pptK7HnyNnqpnWkChXRaNp37P9aET7xJ646FDTvvap7ABTG8DKHjP4FQ TUkg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :content-transfer-encoding:content-language:accept-language :message-id:date:thread-index:thread-topic:subject:cc:to:from; bh=veB2Kmfvst3eSWKFgo8xUKevlVLG6pE6ZQ0f4/vCD7c=; fh=+lWdphYV+P+k3/sGce1IR97K5eVECsjvnnAJah92bx0=; b=dWHLvTszqvaVIVgRPX0GdoYaZTSIVvHzQcb4nK4o038I6dYVcxxz/40fH86xa2iqy+ fmaKYhoTIFZu90bjufShLhnGyQ1RJjvWCWTyhQ3FKI7MtxMdAWQo65Evl7LiS/4bdStP FTJpXEXzzx3/QPk81jXxgLRjTcP4cqgXEUI0VSngqST9LcJy/XUn88lVLX2VkU73CJvC yF5HmVeIFQ9HVuB2BfQ/KYewpepacZrFubDL5csT3O8mKcBNs333iCLsA21tuo+SiiWB MtQxHCcshnLk1YTvj4DxWYoz5YOUA+64uLpwhJ0qlRI/v/sSscZQwI/r9tE3OFeC2Y3T K9fg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=unisoc.com); spf=pass (google.com: domain of linux-kernel+bounces-105881-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-105881-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id 71-20020a63014a000000b005dc504b30ecsi7841331pgb.108.2024.03.18.02.33.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Mar 2024 02:33:55 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-105881-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=unisoc.com); spf=pass (google.com: domain of linux-kernel+bounces-105881-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-105881-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 3A6DB2810D1 for ; Mon, 18 Mar 2024 09:33:50 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 396A72C693; Mon, 18 Mar 2024 09:33:41 +0000 (UTC) Received: from SHSQR01.spreadtrum.com (unknown [222.66.158.135]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E633D2C1A5 for ; Mon, 18 Mar 2024 09:33:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=222.66.158.135 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710754420; cv=none; b=tyP4sirRa0whw87IF79+meCutRU1uoZVkPuiHUZSSuhgvYL3omua3NAw3ewMIz6QVntWgk4HZZv8lj8qYOyq3As7Aq/pPXY5wpRmgUyEHHyBRDDb0QvnL/taK4R/dGa4u0THoe4d+njj1woJ9crXO0qUhl03UA8XLtU6WhNLtXU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710754420; c=relaxed/simple; bh=veB2Kmfvst3eSWKFgo8xUKevlVLG6pE6ZQ0f4/vCD7c=; h=From:To:CC:Subject:Date:Message-ID:Content-Type:MIME-Version; b=MvHHwiGLAHxv5Li8nrjnBvylkborEMGqOZvppQWLCpekrL2gch8ago7QfSb1sM59w7/CCit9Rh77Wn13DK6//+XvNU2lo9bqDbrL1Hpftqyfn2EDUUyfuZhKg/mLcKRLbbyvleotYxhFYgj8Cl4RU/Kckd53ttFuYM9/LcSxH6w= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=unisoc.com; spf=pass smtp.mailfrom=unisoc.com; arc=none smtp.client-ip=222.66.158.135 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=unisoc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=unisoc.com Received: from dlp.unisoc.com ([10.29.3.86]) by SHSQR01.spreadtrum.com with ESMTP id 42I9WdLk044172; Mon, 18 Mar 2024 17:32:39 +0800 (+08) (envelope-from zhaoyang.huang@unisoc.com) Received: from SHDLP.spreadtrum.com (bjmbx01.spreadtrum.com [10.0.64.7]) by dlp.unisoc.com (SkyGuard) with ESMTPS id 4TyqNf2n64z2LFXjq; Mon, 18 Mar 2024 17:31:14 +0800 (CST) Received: from BJMBX01.spreadtrum.com (10.0.64.7) by BJMBX01.spreadtrum.com (10.0.64.7) with Microsoft SMTP Server (TLS) id 15.0.1497.23; Mon, 18 Mar 2024 17:32:33 +0800 Received: from BJMBX01.spreadtrum.com ([fe80::54e:9a:129d:fac7]) by BJMBX01.spreadtrum.com ([fe80::54e:9a:129d:fac7%16]) with mapi id 15.00.1497.023; Mon, 18 Mar 2024 17:32:33 +0800 From: =?utf-8?B?6buE5pyd6ZizIChaaGFveWFuZyBIdWFuZyk=?= To: Zhaoyang Huang , Matthew Wilcox CC: Andrew Morton , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , =?utf-8?B?5bq357qq5ruoIChTdGV2ZSBLYW5nKQ==?= Subject: summarize all information again at bottom//reply: reply: [PATCH] mm: fix a race scenario in folio_isolate_lru Thread-Topic: summarize all information again at bottom//reply: reply: [PATCH] mm: fix a race scenario in folio_isolate_lru Thread-Index: Adp5FxeGVOIzBavFQ+yGu2jVRYQZRQ== Date: Mon, 18 Mar 2024 09:32:32 +0000 Message-ID: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MAIL:SHSQR01.spreadtrum.com 42I9WdLk044172 Pk9uIE1vbiwgTWFyIDE4LCAyMDI0IGF0IDI6MTXigK9QTSBaaGFveWFuZyBIdWFuZw0KPjxodWFu Z3poYW95YW5nQGdtYWlsLmNvbT4gd3JvdGU6DQo+Pg0KPj4gT24gTW9uLCBNYXIgMTgsIDIwMjQg YXQgMTE6MjjigK9BTSBNYXR0aGV3IFdpbGNveCA8d2lsbHlAaW5mcmFkZWFkLm9yZz4NCj53cm90 ZToNCj4+ID4NCj4+ID4gT24gTW9uLCBNYXIgMTgsIDIwMjQgYXQgMDE6Mzc6MDRBTSArMDAwMCwg 6buE5pyd6ZizIChaaGFveWFuZyBIdWFuZykNCj53cm90ZToNCj4+ID4gPiA+T24gU3VuLCBNYXIg MTcsIDIwMjQgYXQgMTI6MDc6NDBQTSArMDgwMCwgWmhhb3lhbmcgSHVhbmcgd3JvdGU6DQo+PiA+ ID4gPj4gQ291bGQgaXQgYmUgdGhpcyBzY2VuYXJpbywgd2hlcmUgZm9saW8gY29tZXMgZnJvbSBw dGUodGhyZWFkDQo+PiA+ID4gPj4gMCksIGxvY2FsIGZiYXRjaCh0aHJlYWQgMSkgYW5kIHBhZ2Ug Y2FjaGUodGhyZWFkIDIpDQo+PiA+ID4gPj4gY29uY3VycmVudGx5IGFuZCBwcm9jZWVkIGludGVy bWl4ZWQgd2l0aG91dCBsb2NrJ3MgcHJvdGVjdGlvbj8NCj4+ID4gPiA+PiBBY3R1YWxseSwgSU1P LCB0aHJlYWQgMSBhbHNvIGNvdWxkIHNlZSB0aGUgZm9saW8gd2l0aCByZWZjbnQ9PTENCj4+ID4g PiA+PiBzaW5jZSBpdCBkb2Vzbid0IGNhcmUgaWYgdGhlIHBhZ2UgaXMgb24gdGhlIHBhZ2UgY2Fj aGUgb3Igbm90Lg0KPj4gPiA+ID4+DQo+PiA+ID4gPj4gbWFkaXZpc2VfY29sZF9hbmRfcGFnZW91 dCBkb2VzIG5vIGV4cGxpY2l0IGZvbGlvX2dldCB0aGluZw0KPj4gPiA+ID4+IHNpbmNlIHRoZSBm b2xpbyBjb21lcyBmcm9tIHB0ZSB3aGljaCBpbXBsaWVzIGl0IGhhcyBvbmUgcmVmY250DQo+PiA+ ID4gPj4gZnJvbSBwYWdlY2FjaGUNCj4+ID4gPiA+DQo+PiA+ID4gPk1tbSwgbm8uICBJdCdzIGlt cGxpY2l0LCBidXQgbWFkdmlzZV9jb2xkX29yX3BhZ2VvdXRfcHRlX3JhbmdlKCkNCj4+ID4gPiA+ ZG9lcyBndWFyYW50ZWUgdGhhdCB0aGUgZm9saW8gaGFzIGF0IGxlYXN0IG9uZSByZWZjb3VudC4N Cj4+ID4gPiA+DQo+PiA+ID4gPlNpbmNlIHdlIGdldCB0aGUgZm9saW8gZnJvbSB2bV9ub3JtYWxf Zm9saW8odm1hLCBhZGRyLCBwdGVudCk7IHdlDQo+PiA+ID4gPmtub3cgdGhhdCB0aGVyZSBpcyBh dCBsZWFzdCBvbmUgbWFwY291bnQgb24gdGhlIGZvbGlvLiAgcmVmY291bnQgaXMNCj5hbHdheXMg Pj0gbWFwY291bnQuDQo+PiA+ID4gPlNpbmNlIHdlIGhvbGQgcHRlX29mZnNldF9tYXBfbG9jaygp LCB3ZSBrbm93IHRoYXQgbWFwY291bnQgKGFuZA0KPj4gPiA+ID50aGVyZWZvcmUNCj4+ID4gPiA+ cmVmY291bnQpIGNhbm5vdCBiZSBkZWNyZW1lbnRlZCB1bnRpbCB3ZSBjYWxsIHB0ZV91bm1hcF91 bmxvY2soKSwNCj4+ID4gPiA+d2hpY2ggd2UgZG9uJ3QgZG8gdW50aWwgd2UgaGF2ZSBjYWxsZWQg Zm9saW9faXNvbGF0ZV9scnUoKS4NCj4+ID4gPiA+DQo+PiA+ID4gPkdvb2QgdHJ5IHRob3VnaCwg dG9vayBtZSBhIGZldyBtaW51dGVzIG9mIGxvb2tpbmcgYXQgaXQgdG8NCj4+ID4gPiA+Y29udmlu Y2UgbXlzZWxmIHRoYXQgaXQgd2FzIHNhZmUuDQo+PiA+ID4gPg0KPj4gPiA+ID5Tb21ldGhpbmcg dG8gYmVhciBpbiBtaW5kIGlzIHRoYXQgaWYgdGhlIHJhY2UgeW91IG91dGxpbmUgaXMNCj4+ID4g PiA+cmVhbCwgZmFpbGluZyB0byBob2xkIGEgcmVmY291bnQgb24gdGhlIGZvbGlvIGxlYXZlcyB0 aGUgY2FsbGVyDQo+PiA+ID4gPnN1c2NlcHRpYmxlIHRvIHRoZSBWTV9CVUdfT05fRk9MSU8oIWZv bGlvX3JlZl9jb3VudChmb2xpbyksDQo+PiA+ID4gPmZvbGlvKTsgaWYgdGhlIG90aGVyIHRocmVh ZCBjYWxscyBmb2xpb19wdXQoKS4NCj4+ID4gPiBSZXNlbmQgdGhlIGNoYXJ0IHZpYSBvdXRsb29r Lg0KPj4gPiA+IEkgdGhpbmsgdGhlIHByb2JsZW0gcmVseSBvbiBhbiBzcGVjaWFsIHRpbWluZyB3 aGljaCBpcyByYXJlLCBJIHdvdWxkIGxpa2UgdG8NCj5saXN0IHRoZW0gYmVsb3cgaW4gdGltaW5n IHNlcXVlbmNlLg0KPj4gPiA+DQo+PiA+ID4gMS4gdGhyZWFkIDAgY2FsbHMgZm9saW9faXNvbGF0 ZV9scnUgd2l0aCByZWZjbnQgPT0gMQ0KPj4gPg0KPj4gPiAoaSBhc3N1bWUgeW91IG1lYW4gcmVm Y250ID09IDIgaGVyZSwgb3RoZXJ3aXNlIG5vbmUgb2YgdGhpcyBtYWtlcw0KPj4gPiBzZW5zZSkN Cj4+ID4NCj4+ID4gPiAyLiB0aHJlYWQgMSBjYWxscyByZWxlYXNlX3BhZ2VzIHdpdGggcmVmY250 ID09IDIuKElNTywgaXQgY291bGQgYmUNCj4+ID4gPiAxIGFzIHJlbGVhc2VfcGFnZXMgZG9lc24n dCBjYXJlIGlmIHRoZSBmb2xpbyBpcyB1c2VkIGJ5IHBhZ2UgY2FjaGUNCj4+ID4gPiBvciBmcykg My4gdGhyZWFkIDIgZGVjcmVhc2UgcmVmY250IHRvIDEgYnkgY2FsbGluZw0KPj4gPiA+IGZpbGVt YXBfZnJlZV9mb2xpby4oYXMgSSBtZW50aW9uZWQgaW4gMiwgdGhyZWFkIDIgaXMgbm90IG1hbmRh dGFyeQ0KPj4gPiA+IGhlcmUpIDQuIHRocmVhZCAxIGNhbGxzIGZvbGlvX3B1dF90ZXN0emVybyBh bmQgcGFzcy4obHJ1dmVjLT5sb2NrDQo+PiA+ID4gaGFzIG5vdCBiZWVuIHRha2UgaGVyZSkNCj4+ ID4NCj4+ID4gQnV0IHRoZXJlJ3MgYWxyZWFkeSBhIGJ1ZyBoZXJlLg0KPj4gPg0KPj4gPiBSZWFy cmFuZ2UgdGhlIG9yZGVyIG9mIHRoaXM6DQo+PiA+DQo+PiA+IDIuIHRocmVhZCAxIGNhbGxzIHJl bGVhc2VfcGFnZXMgd2l0aCByZWZjb3VudCA9PSAyIChkZWNyZWFzaW5nDQo+PiA+IHJlZmNvdW50 IHRvIDEpIDMuIHRocmVhZCAyIGRlY3JlYXNlIHJlZmNvdW50IHRvIDAgYnkgY2FsbGluZw0KPj4g PiBmaWxlbWFwX2ZyZWVfZm9saW8gMS4gdGhyZWFkIDAgY2FsbHMgZm9saW9faXNvbGF0ZV9scnUo KSBhbmQgaGl0cyB0aGUgQlVHKCkuDQo+PiA+DQo+PiA+ID4gNS4gdGhyZWFkIDAgY2xlYXIgZm9s aW8ncyBQR19scnUgYnkgY2FsbGluZyBmb2xpb190ZXN0X2NsZWFyX2xydS4gVGhlDQo+Zm9saW9f Z2V0IGJlaGluZCBoYXMgbm8gbWVhbmluZyB0aGVyZS4NCj4+ID4gPiA2LiB0aHJlYWQgMSBmYWls ZWQgaW4gZm9saW9fdGVzdF9scnUgYW5kIGxlYXZlIHRoZSBmb2xpbyBvbiB0aGUgTFJVLg0KPj4g PiA+IDcuIHRocmVhZCAxIGFkZCBmb2xpbyB0byBwYWdlc190b19mcmVlIHdyb25nbHkgd2hpY2gg Y291bGQgYnJlYWsNCj4+ID4gPiB0aGUgTFJVJ3MtPmxpc3QgYW5kIHdpbGwgaGF2ZSBuZXh0IGZv bGlvIGV4cGVyaWVuY2UNCj4+ID4gPiBsaXN0X2RlbF9pbnZhbGlkDQo+PiA+ID4NCj4+ID4gPiAj dGhyZWFkIDAobWFkaXZpc2VfY29sZF9hbmRfcGFnZW91dCkNCj4jMShscnVfYWRkX2RyYWluLT5m YmF0Y2hfcmVsZWFzZV9wYWdlcykNCj4jMihyZWFkX3BhZ2VzLT5maWxlbWFwX3JlbW92ZV9mb2xp b3MpDQo+PiA+ID4gcmVmY250ID09IDEocmVwcmVzZW50IHBhZ2UgY2FjaGUpICAgICAgICAgICAg IHJlZmNudD09Mihhbm90aGVyIG9uZQ0KPnJlcHJlc2VudCBMUlUpICAgICAgICAgIGZvbGlvIGNv bWVzIGZyb20gcGFnZSBjYWNoZQ0KPj4gPg0KPj4gPiBUaGlzIGlzIHN0aWxsIGlsbGVnaWJsZS4g IFRyeSBpdCB0aGlzIHdheToNCj4+ID4NCj4+ID4gVGhyZWFkIDAgICAgICAgIFRocmVhZCAxICAg ICAgICBUaHJlYWQgMg0KPj4gPiBtYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2UNCj4+ ID4gICAgICAgICAgICAgICAgIGxydV9hZGRfZHJhaW4NCj4+ID4gICAgICAgICAgICAgICAgIGZi YXRjaF9yZWxlYXNlX3BhZ2VzDQo+PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVhZF9wYWdlcw0KPj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVtYXBf cmVtb3ZlX2ZvbGlvDQo+PiBUaHJlYWQgMCAgICAgICAgVGhyZWFkIDEgICAgICAgIFRocmVhZCAy DQo+PiBtYWR2aXNlX2NvbGRfb3JfcGFnZW91dF9wdGVfcmFuZ2UNCj4+ICAgICAgICAgICAgICAg ICB0cnVuY2F0ZV9pbm9kZV9wYWdlc19yYW5nZQ0KPj4gICAgICAgICAgICAgICAgIGZiYXRjaF9y ZWxlYXNlX3BhZ2VzDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydW5jYXRl X2lub2RlX3BhZ2VzX3JhbmdlDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZp bGVtYXBfcmVtb3ZlX2ZvbGlvIFNvcnJ5IGZvciB0aGUNCj4+IGNvbmZ1c2lvbi4gUmVhcnJhbmdl IHRoZSB0aW1pbmcgY2hhcnQgbGlrZSBhYm92ZSBhY2NvcmRpbmcgdG8gdGhlIHJlYWwNCj4+IHBh bmljJ3Mgc3RhY2t0cmFjZS4gVGhyZWFkIDEmMiBhcmUgYWxsIGZyb20NCj4+IHRydW5jYXRlX2lu b2RlX3BhZ2VzX3JhbmdlKEkgdGhpbmsgdGhyZWFkMihyZWFkX3BhZ2VzKSBpcyBub3QNCj4+IG1h bmRhdG9yeSBoZXJlIGFzIHRocmVhZCAwJjEgY291bGQgcmVseSBvbiB0aGUgc2FtZSByZWZjbnQ9 PTEpLg0KPj4gPg0KPj4gPiBTb21lIGFjY3VyYWN5IGluIHlvdXIgcmVwb3J0IHdvdWxkIGFsc28g YmUgYXBwcmVjaWF0ZWQuICBUaGVyZSdzIG5vDQo+PiA+IGZ1bmN0aW9uIGNhbGxlZCBtYWRpdmlz ZV9jb2xkX2FuZF9wYWdlb3V0LCBub3IgaXMgdGhlcmUgYSBmdW5jdGlvbg0KPj4gPiBjYWxsZWQg ZmlsZW1hcF9yZW1vdmVfZm9saW9zKCkuICBJdCdzIGEgbGl0dGxlIGRldGFpbCwgYnV0IGl0J3MN Cj4+ID4gYW5ub3lpbmcgZm9yIG1lIHRvIHRyeSB0byBmaW5kIHdoaWNoIGZ1bmN0aW9uIHlvdSdy ZSBhY3R1YWxseQ0KPj4gPiByZWZlcnJpbmcgdG8uICBJIGhhdmUgdG8gZ3Vlc3MsIGFuZCBpdCBw dXRzIG1lIGluIGEgYmFkIG1vb2QuDQo+PiA+DQo+PiA+IEF0IGFueSByYXRlLCB0aGVzZSB0aHJl ZSBmdW5jdGlvbnMgY2Fubm90IGRvIHdoYXQgeW91J3JlIHByb3Bvc2luZy4NCj4+ID4gSW4gcmVh ZF9wYWdlKCksIHdoZW4gd2UgY2FsbCBmaWxlbWFwX3JlbW92ZV9mb2xpbygpLCB0aGUgZm9saW8g aW4NCj4+ID4gcXVlc3Rpb24gd2lsbCBub3QgaGF2ZSB0aGUgdXB0b2RhdGUgZmxhZyBzZXQsIHNv IGNhbiBuZXZlciBoYXZlIGJlZW4NCj4+ID4gcHV0IGluIHRoZSBwYWdlIHRhYmxlcywgc28gY2Fu bm90IGJlIGZvdW5kIGJ5IG1hZHZpc2UoKS4NCj4+ID4NCj4+ID4gQWxzbywgYXMgSSBzYWlkIGlu IG15IGVhcmxpZXIgZW1haWwsDQo+PiA+IG1hZHZpc2VfY29sZF9vcl9wYWdlb3V0X3B0ZV9yYW5n ZSgpDQo+PiA+IGRvZXMgZ3VhcmFudGVlIHRoYXQgdGhlIHJlZmNvdW50IG9uIHRoZSBmb2xpbyBp cyBoZWxkIGFuZCBjYW4gbmV2ZXINCj4+ID4gZGVjcmVhc2UgdG8gemVybyB3aGlsZSBmb2xpb19p c29sYXRlX2xydSgpIGlzIHJ1bm5pbmcuICBTbyB0aGF0J3MNCj4+ID4gdHdvIHdheXMgdGhpcyBz Y2VuYXJpbyBjYW5ub3QgaGFwcGVuLg0KPj4gVGhlIG1hZGl2c2VfeHh4IGNvbWVzIGZyb20gbXkg cHJlc3VtcHRpb24gd2hpY2ggaGFzIGFueSBwcm9vZi4NCj4+IFdoZXJlYXMsIEl0IGxvb2tzIGxp a2UgdHJ1bmNhdGVfaW5vZGVfcGFnZXNfcmFuZ2UganVzdCBjYXJlcyBhYm91dA0KPj4gcGFnZSBj YWNoZSByZWZjbnQgYnkgZm9saW9fcHV0X3Rlc3R6ZXJvIHdpdGhvdXQgbm90aWNpbmcgYW55IHRh c2sncyBWTQ0KPj4gc3R1ZmYuIEZ1cnRoZXJtb3JlLCBJIG5vdGljZSB0aGF0IG1vdmVfZm9saW9z X3RvX2xydSBpcyBzYWZlIGFzIGl0DQo+PiBydW5zIHdpdGggaG9sZGluZyBscnV2ZWMtPmxvY2su DQo+PiA+DQo+QlRXLCBJIHRoaW5rIHdlIG5lZWQgdG8gcHJvdGVjdCBhbGwNCj5mb2xpb190ZXN0 X2NsZWFyX2xydS9mb2xpb190ZXN0X2xydSBieSBtb3ZpbmcgdGhlbSBpbnRvIGxydXZlYy0+bG9j ayBpbiBzdWNoIGFzDQo+X19wYWdlX2NhY2hlX3JlbGVhc2UgYW5kIGZvbGlvX2FjdGl2YXRlIGZ1 bmN0aW9ucy4NCj5PdGhlcndpc2UsIHRoZXJlIGlzIGFsd2F5cyBhIHJhY2Ugd2luZG93IGJldHdl ZW4ganVkZ2luZyBQR19scnUgYW5kDQo+Zm9sbG93aW5nIGFjdGlvbnMuDQoNClN1bW1hcml6ZSBh bGwgaW5mb3JtYXRpb24gYmVsb3cgdG8gbWFrZSBpdCBtb3JlIGNsZWFyKHJlbW92ZSB0aHJlYWQy IHdoaWNoIGlzIG5vdCBtYW5kYXRvcnkgYW5kIG1ha2UgdGhlIHNjZW5hcmlvIGNvbXBsZXgpDQoN CiN0aHJlYWQgMChtYWRpdmlzZV9jb2xkX2FuZF9wYWdlb3V0KSAgICAgICAgI3RocmVhZDEodHJ1 bmNhdGVfaW5vZGVfcGFnZXNfcmFuZ2UpIA0KcHRlX29mZnNldF9tYXBfbG9jawkJCQkJCSB0YWtl cyBOTyBsb2NrDQoJCQkJCQkJCQkJIHRydW5jYXRlX2lub2RlX2ZvbGlvKHJlZmNudCA9PSAyKQ0K CQkJCQkJCQkJCSA8ZGVjcmVhc2UgdGhlIHJlZmNudCBvZiBwYWdlIGNhY2hlPg0KZm9saW9faXNv bGF0ZV9scnUocmVmY250ID09IDEpCSAgICAgICAgICAgICAgICAgDQoJCQkJCQkJCQkJIHJlbGVh c2VfcGFnZXMocmVmY250ID09IDEpDQpmb2xpb190ZXN0X2NsZWFyX2xydSANCjxyZW1vdmUgZm9s aW8ncyBQR19scnU+DQoJCQkJCQkJCQkJZm9saW9fcHV0X3Rlc3R6ZXJvID09IHRydWUNCmZvbGlv X2dldChyZWZlciB0byBpc29sYXRpb24pDQoJCQkJCQkJCQkJZm9saW9fdGVzdF9scnUgPT0gZmFs c2UNCgkJCQkJCQkJCSAgCTxObyBscnV2ZWNfZGVsX2ZvbGlvPg0KCQkJCQkJCQkJCWxpc3RfYWRk KGZvbGlvLT5scnUsIHBhZ2VzX3RvX2ZyZWUpDQoJCQkJCQkJCQkJKioqKmN1cnJlbnQgZm9saW8g d2lsbCBicmVhayBMUlUncyBpbnRlZ3JpdHkgc2luY2UgaXQgaGFzIG5vdCBiZWVuIGRlbGV0ZWQq KioqDQoNCjAuIEZvbGlvJ3MgcmVmY250IGRlY3JlYXNlIGZyb20gMiB0byAxIGJ5IGZpbGVtYXBf cmVtb3ZlX2ZvbGlvDQoxLiB0aHJlYWQgMCBjYWxscyBmb2xpb19pc29sYXRlX2xydSB3aXRoIHJl ZmNudCA9PSAxLiBGb2xpbyBjb21lcyBmcm9tIHZtJ3MgcHRlDQoyLiB0aHJlYWQgMSBjYWxscyBy ZWxlYXNlX3BhZ2VzIHdpdGggcmVmY250ID09IDEuIEZvbGlvIGNvbWVzIGZyb20gYWRkcmVzc19z cGFjZQ0KKHJlZmNudCA9PSAxIG1ha2Ugc2Vuc2UgZm9yIGJvdGggb2YgZm9saW9faXNvbGF0ZV9s cnUgYW5kIHJlbGVhc2VfcGFnZXMpDQozLiB0aHJlYWQwIGNsZWFyIGZvbGlvJ3MgUEdfbHJ1IGJ5 IGZvbGlvX3Rlc3RfY2xlYXJfbHJ1DQo0LiB0aHJlYWQxIGRlY3JlYXNlIGZvbGlvJ3MgcmVmY250 IGZyb20gMSB0byAwIGFuZCBnZXQgcGVybWlzc2lvbiB0byBwcm9jZWVkDQo1LiB0aHJlYWQxIGZh aWxlZCBpbiBmb2xpb190ZXN0X2xydSBhbmQgZG8gbm8gbGlzdF9kZWwoZm9saW8pDQo2LiB0aHJl YWQxIGFkZCBmb2xpbyB0byBwYWdlc190b19mcmVlIHdyb25nbHkgd2hpY2ggYnJlYWsgdGhlIExS VSdzLT5saXN0IA0KNy4gbmV4dCBmb2xpbyBhZnRlciBjdXJyZW50IG9uZSB3aXRoaW4gdGhyZWFk MSBleHBlcmllbmNlcyBsaXN0X2RlbF9pbnZhbGlkIHdoZW4gY2FsbGluZyBscnV2ZWNfZGVsX2Zv bGlvDQo=