From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 745DCC197A0 for ; Thu, 16 Nov 2023 14:14:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=sbSkHArE+XMoZN3QNUUCiRMMxYaL/T0SXyoWBpp+M/c=; b=PAuh6EVqaoh8Og ASSOdzq5ajQ7M2q3NiPCt+V/VpPoxzTMPtRyneNFxjiph2ZPXFpz0btRxeFT+aGpdo1GLUV/KDmhO kNunL+YhBg+zKrrmugZTjTTMGsUVJTLofY9UzUfCTumY0/ER2keqm91yi22b4X6e0nU/h4UPn5lcv p0dpaxE0QfnO354dQtkcSAuJ9qUJdjJd1SGne/QAzouZK3DL+mlkCdABprXNHsZcIlMEwVK9vLb/3 U5y6PmtrYIrPsZmtZeQqW68n5Jr0MFRgqwj1MUNasX6hmv37dHiRfDzaxcu0Fg3nQOvUi48e9Tq8y GWAuHXEA/2QyCl94GBiA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r3d7Y-003fBf-0H; Thu, 16 Nov 2023 14:13:28 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r3d7U-003fAG-2H for linux-arm-kernel@lists.infradead.org; Thu, 16 Nov 2023 14:13:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1700144001; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=G9x4uAI8y2q2wz2ZsP3GSuMiBRjZvjNFQepXOLiWalk=; b=LfejPFdzy/f3CMHoXu31b2JJ9p3WNUrBEDXgvzVR0P9/wI72lvee21HBRn33ETj7AUwdih 13qy4mqzI3EF5IyXuvZZooRFXFkDYdYe5JBL44z8Usm151fE7jTBjlvlRyoeDmjLAXM93i 4yKNBRMo8pv5K8USdw6MQWoCtH3g/8o= Received: from mail-lj1-f197.google.com (mail-lj1-f197.google.com [209.85.208.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-691-5xk4Tgw9NySZyIcvevbH4Q-1; Thu, 16 Nov 2023 09:13:18 -0500 X-MC-Unique: 5xk4Tgw9NySZyIcvevbH4Q-1 Received: by mail-lj1-f197.google.com with SMTP id 38308e7fff4ca-2c506abc320so7705041fa.2 for ; Thu, 16 Nov 2023 06:13:18 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700143997; x=1700748797; h=content-transfer-encoding:in-reply-to:organization:autocrypt:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=G9x4uAI8y2q2wz2ZsP3GSuMiBRjZvjNFQepXOLiWalk=; b=t+s1jzxCq1LEoUNBsRwgZ+U1tkLJgNZ+T9aWrftoAO83VSzA4TkWq9Ied0HnjQzawe AmX/fqHoMbnzi/XVJQxu5MDMV72hVQQ/nSn00xMKLMAnJApzs/8UuKNgyadDjtleRND0 SW/kwkLIF2PEtmjuGn+b4mI5/U9/AdMzLFVm6Y0l1Soi8xhQ3OYt5SaeSorKoszwybu7 X6mvnunuKwW0S03qajg/WBOLSFt5m3AQs3zpNCjvFAkdZ1yEbcHuyidr22XLAkTrwkn8 yeoriBtZHvHxbJQBnd8VvK/9S1mHoUcz323oBjK3GG8wh404XvmMIMekJmDDgNh/nRjz VdtQ== X-Gm-Message-State: AOJu0Yy49iT9CR99tLtcsfpzojabgZKqiEfe4wVJHSRJja/1W7t5ZIjH 1r5FtfSKExNNZfpe5jK1IsWaKWhbcA4UKjd4rBHrjAL3D92kTpwjuKhltkoNUOh1tILzZW9Kszn /YQ3F2JVJr6RiU1pKbYAWoWcXKKqX+nMZjbE= X-Received: by 2002:a2e:88cc:0:b0:2c5:2184:c53d with SMTP id a12-20020a2e88cc000000b002c52184c53dmr6683820ljk.25.1700143996679; Thu, 16 Nov 2023 06:13:16 -0800 (PST) X-Google-Smtp-Source: AGHT+IHNWVjYo7MQfonLUS8AYQhuyTmpwOzAHSzNEdoBthTnlNCbco9ZSbwSKxCDALppUVHRPicIFw== X-Received: by 2002:a2e:88cc:0:b0:2c5:2184:c53d with SMTP id a12-20020a2e88cc000000b002c52184c53dmr6683784ljk.25.1700143996163; Thu, 16 Nov 2023 06:13:16 -0800 (PST) Received: from ?IPV6:2a09:80c0:192:0:5dac:bf3d:c41:c3e7? ([2a09:80c0:192:0:5dac:bf3d:c41:c3e7]) by smtp.gmail.com with ESMTPSA id s16-20020adfea90000000b003313439c675sm13765369wrm.66.2023.11.16.06.13.14 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 16 Nov 2023 06:13:15 -0800 (PST) Message-ID: <2618b024-6a95-4bfc-a08d-59d86e9931e5@redhat.com> Date: Thu, 16 Nov 2023 15:13:14 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 01/14] mm: Batch-copy PTE ranges during fork() To: Ryan Roberts , Catalin Marinas , Will Deacon , Ard Biesheuvel , Marc Zyngier , Oliver Upton , James Morse , Suzuki K Poulose , Zenghui Yu , Andrey Ryabinin , Alexander Potapenko , Andrey Konovalov , Dmitry Vyukov , Vincenzo Frascino , Andrew Morton , Anshuman Khandual , Matthew Wilcox , Yu Zhao , Mark Rutland , Kefeng Wang , John Hubbard , Zi Yan Cc: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20231115163018.1303287-1-ryan.roberts@arm.com> <20231115163018.1303287-2-ryan.roberts@arm.com> <89a9fe07-a5c5-4a99-b588-e6145053c58f@redhat.com> <1459f78b-e80c-4f21-bc65-f0ab259d348a@arm.com> <08ef2c36-2b9c-4b96-9d1d-68cca0f68ba5@redhat.com> <2d027a8d-adfb-481d-89ea-c99139e669aa@arm.com> From: David Hildenbrand Autocrypt: addr=david@redhat.com; keydata= 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 WNyWQQ== Organization: Red Hat In-Reply-To: <2d027a8d-adfb-481d-89ea-c99139e669aa@arm.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231116_061324_885298_C4502D37 X-CRM114-Status: GOOD ( 25.10 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMTYuMTEuMjMgMTQ6NDksIFJ5YW4gUm9iZXJ0cyB3cm90ZToKPiBPbiAxNi8xMS8yMDIzIDEz OjIwLCBEYXZpZCBIaWxkZW5icmFuZCB3cm90ZToKPj4gT24gMTYuMTEuMjMgMTI6MjAsIFJ5YW4g Um9iZXJ0cyB3cm90ZToKPj4+IE9uIDE2LzExLzIwMjMgMTE6MDMsIERhdmlkIEhpbGRlbmJyYW5k IHdyb3RlOgo+Pj4+IE9uIDE1LjExLjIzIDE3OjMwLCBSeWFuIFJvYmVydHMgd3JvdGU6Cj4+Pj4+ IENvbnZlcnQgY29weV9wdGVfcmFuZ2UoKSB0byBjb3B5IGEgc2V0IG9mIHB0ZXMgaW4gYSBiYXRj aC4gQSBnaXZlbiBiYXRjaAo+Pj4+PiBtYXBzIGEgcGh5c2ljYWxseSBjb250aWd1b3VzIGJsb2Nr IG9mIG1lbW9yeSwgYWxsIGJlbG9uZ2luZyB0byB0aGUgc2FtZQo+Pj4+PiBmb2xpbywgd2l0aCB0 aGUgc2FtZSBwZXJtaXNzaW9ucywgYW5kIGZvciBzaGFyZWQgbWFwcGluZ3MsIHRoZSBzYW1lCj4+ Pj4+IGRpcnR5IHN0YXRlLiBUaGlzIHdpbGwgbGlrZWx5IGltcHJvdmUgcGVyZm9ybWFuY2UgYnkg YSB0aW55IGFtb3VudCBkdWUKPj4+Pj4gdG8gYmF0Y2hpbmcgdGhlIGZvbGlvIHJlZmVyZW5jZSBj b3VudCBtYW5hZ2VtZW50IGFuZCBjYWxsaW5nIHNldF9wdGVzKCkKPj4+Pj4gcmF0aGVyIHRoYW4g bWFraW5nIGluZGl2aWR1YWwgY2FsbHMgdG8gc2V0X3B0ZV9hdCgpLgo+Pj4+Pgo+Pj4+PiBIb3dl dmVyLCB0aGUgcHJpbWFyeSBtb3RpdmF0aW9uIGZvciB0aGlzIGNoYW5nZSBpcyB0byByZWR1Y2Ug dGhlIG51bWJlcgo+Pj4+PiBvZiB0bGIgbWFpbnRlbmFuY2Ugb3BlcmF0aW9ucyB0aGF0IHRoZSBh cm02NCBiYWNrZW5kIGhhcyB0byBwZXJmb3JtCj4+Pj4+IGR1cmluZyBmb3JrLCBhcyBpdCBpcyBh Ym91dCB0byBhZGQgdHJhbnNwYXJlbnQgc3VwcG9ydCBmb3IgdGhlCj4+Pj4+ICJjb250aWd1b3Vz IGJpdCIgaW4gaXRzIHB0ZXMuIEJ5IHdyaXRlLXByb3RlY3RpbmcgdGhlIHBhcmVudCB1c2luZyB0 aGUKPj4+Pj4gbmV3IHB0ZXBfc2V0X3dycHJvdGVjdHMoKSAobm90ZSB0aGUgJ3MnIGF0IHRoZSBl bmQpIGZ1bmN0aW9uLCB0aGUKPj4+Pj4gYmFja2VuZCBjYW4gYXZvaWQgaGF2aW5nIHRvIHVuZm9s ZCBjb250aWcgcmFuZ2VzIG9mIFBURXMsIHdoaWNoIGlzCj4+Pj4+IGV4cGVuc2l2ZSwgd2hlbiBh bGwgcHRlcyBpbiB0aGUgcmFuZ2UgYXJlIGJlaW5nIHdyaXRlLXByb3RlY3RlZC4KPj4+Pj4gU2lt aWxhcmx5LCBieSB1c2luZyBzZXRfcHRlcygpIHJhdGhlciB0aGFuIHNldF9wdGVfYXQoKSB0byBz ZXQgdXAgcHRlcwo+Pj4+PiBpbiB0aGUgY2hpbGQsIHRoZSBiYWNrZW5kIGRvZXMgbm90IG5lZWQg dG8gZm9sZCBhIGNvbnRpZ3VvdXMgcmFuZ2Ugb25jZQo+Pj4+PiB0aGV5IGFyZSBhbGwgcG9wdWxh dGVkIC0gdGhleSBjYW4gYmUgaW5pdGlhbGx5IHBvcHVsYXRlZCBhcyBhIGNvbnRpZ3VvdXMKPj4+ Pj4gcmFuZ2UgaW4gdGhlIGZpcnN0IHBsYWNlLgo+Pj4+Pgo+Pj4+PiBUaGlzIGNoYW5nZSBhZGRy ZXNzZXMgdGhlIGNvcmUtbW0gcmVmYWN0b3Jpbmcgb25seSwgYW5kIGludHJvZHVjZXMKPj4+Pj4g cHRlcF9zZXRfd3Jwcm90ZWN0cygpIHdpdGggYSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHRoYXQg Y2FsbHMKPj4+Pj4gcHRlcF9zZXRfd3Jwcm90ZWN0KCkgZm9yIGVhY2ggcHRlIGluIHRoZSByYW5n ZS4gQSBzZXBhcmF0ZSBjaGFuZ2Ugd2lsbAo+Pj4+PiBpbXBsZW1lbnQgcHRlcF9zZXRfd3Jwcm90 ZWN0cygpIGluIHRoZSBhcm02NCBiYWNrZW5kIHRvIHJlYWxpemUgdGhlCj4+Pj4+IHBlcmZvcm1h bmNlIGltcHJvdmVtZW50IGFzIHBhcnQgb2YgdGhlIHdvcmsgdG8gZW5hYmxlIGNvbnRwdGUgbWFw cGluZ3MuCj4+Pj4+Cj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFJ5YW4gUm9iZXJ0cyA8cnlhbi5yb2Jl cnRzQGFybS5jb20+Cj4+Pj4+IC0tLQo+Pj4+PiAgwqDCoCBpbmNsdWRlL2xpbnV4L3BndGFibGUu aCB8wqAgMTMgKysrCj4+Pj4+ICDCoMKgIG1tL21lbW9yeS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwgMTc1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KPj4+Pj4g IMKgwqAgMiBmaWxlcyBjaGFuZ2VkLCAxNTAgaW5zZXJ0aW9ucygrKSwgMzggZGVsZXRpb25zKC0p Cj4+Pj4+Cj4+Pj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BndGFibGUuaCBiL2luY2x1 ZGUvbGludXgvcGd0YWJsZS5oCj4+Pj4+IGluZGV4IGFmNzYzOWMzYjBhMy4uMWM1MGY4YTBmZGRl IDEwMDY0NAo+Pj4+PiAtLS0gYS9pbmNsdWRlL2xpbnV4L3BndGFibGUuaAo+Pj4+PiArKysgYi9p bmNsdWRlL2xpbnV4L3BndGFibGUuaAo+Pj4+PiBAQCAtNjIyLDYgKzYyMiwxOSBAQCBzdGF0aWMg aW5saW5lIHZvaWQgcHRlcF9zZXRfd3Jwcm90ZWN0KHN0cnVjdCBtbV9zdHJ1Y3QKPj4+Pj4gKm1t LCB1bnNpZ25lZCBsb25nIGFkZHJlcwo+Pj4+PiAgwqDCoCB9Cj4+Pj4+ICDCoMKgICNlbmRpZgo+ Pj4+PiAgwqDCoCArI2lmbmRlZiBwdGVwX3NldF93cnByb3RlY3RzCj4+Pj4+ICtzdHJ1Y3QgbW1f c3RydWN0Owo+Pj4+PiArc3RhdGljIGlubGluZSB2b2lkIHB0ZXBfc2V0X3dycHJvdGVjdHMoc3Ry dWN0IG1tX3N0cnVjdCAqbW0sCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg dW5zaWduZWQgbG9uZyBhZGRyZXNzLCBwdGVfdCAqcHRlcCwKPj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgbnIpCj4+Pj4+ICt7Cj4+Pj4+ICvCoMKgwqAg dW5zaWduZWQgaW50IGk7Cj4+Pj4+ICsKPj4+Pj4gK8KgwqDCoCBmb3IgKGkgPSAwOyBpIDwgbnI7 IGkrKywgYWRkcmVzcyArPSBQQUdFX1NJWkUsIHB0ZXArKykKPj4+Pj4gK8KgwqDCoMKgwqDCoMKg IHB0ZXBfc2V0X3dycHJvdGVjdChtbSwgYWRkcmVzcywgcHRlcCk7Cj4+Pj4+ICt9Cj4+Pj4+ICsj ZW5kaWYKPj4+Pj4gKwo+Pj4+PiAgwqDCoCAvKgo+Pj4+PiAgwqDCoMKgICogT24gc29tZSBhcmNo aXRlY3R1cmVzIGhhcmR3YXJlIGRvZXMgbm90IHNldCBwYWdlIGFjY2VzcyBiaXQgd2hlbgo+Pj4+ PiBhY2Nlc3NpbmcKPj4+Pj4gIMKgwqDCoCAqIG1lbW9yeSBwYWdlLCBpdCBpcyByZXNwb25zaWJp bGl0eSBvZiBzb2Z0d2FyZSBzZXR0aW5nIHRoaXMgYml0LiBJdCBicmluZ3MKPj4+Pj4gZGlmZiAt LWdpdCBhL21tL21lbW9yeS5jIGIvbW0vbWVtb3J5LmMKPj4+Pj4gaW5kZXggMWYxOGVkNGE1NDk3 Li5iN2M4MjI4ODgzY2YgMTAwNjQ0Cj4+Pj4+IC0tLSBhL21tL21lbW9yeS5jCj4+Pj4+ICsrKyBi L21tL21lbW9yeS5jCj4+Pj4+IEBAIC05MjEsNDYgKzkyMSwxMjkgQEAgY29weV9wcmVzZW50X3Bh Z2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICpkc3Rfdm1hLAo+Pj4+PiBzdHJ1Y3Qgdm1fYXJlYV9z dHJ1Y3QgKnNyY192bWEKPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIFVmZmQtd3AgbmVl ZHMgdG8gYmUgZGVsaXZlcmVkIHRvIGRlc3QgcHRlIGFzIHdlbGwgKi8KPj4+Pj4gIMKgwqDCoMKg wqDCoMKgwqDCoMKgIHB0ZSA9IHB0ZV9ta3VmZmRfd3AocHRlKTsKPj4+Pj4gIMKgwqDCoMKgwqDC oCBzZXRfcHRlX2F0KGRzdF92bWEtPnZtX21tLCBhZGRyLCBkc3RfcHRlLCBwdGUpOwo+Pj4+PiAt wqDCoMKgIHJldHVybiAwOwo+Pj4+PiArwqDCoMKgIHJldHVybiAxOwo+Pj4+PiArfQo+Pj4+PiAr Cj4+Pj4+ICtzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcGFnZV9jb250X21hcHBlZF92YWRk cihzdHJ1Y3QgcGFnZSAqcGFnZSwKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzdHJ1Y3QgcGFnZSAqYW5jaG9yLCB1bnNpZ25lZCBsb25nIGFuY2hvcl92YWRkcikKPj4+Pj4g K3sKPj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBsb25nIG9mZnNldDsKPj4+Pj4gK8KgwqDCoCB1bnNp Z25lZCBsb25nIHZhZGRyOwo+Pj4+PiArCj4+Pj4+ICvCoMKgwqAgb2Zmc2V0ID0gKHBhZ2VfdG9f cGZuKHBhZ2UpIC0gcGFnZV90b19wZm4oYW5jaG9yKSkgPDwgUEFHRV9TSElGVDsKPj4+Pj4gK8Kg wqDCoCB2YWRkciA9IGFuY2hvcl92YWRkciArIG9mZnNldDsKPj4+Pj4gKwo+Pj4+PiArwqDCoMKg IGlmIChhbmNob3IgPiBwYWdlKSB7Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAodmFkZHIgPiBh bmNob3JfdmFkZHIpCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAwOwo+Pj4+ PiArwqDCoMKgIH0gZWxzZSB7Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAodmFkZHIgPCBhbmNo b3JfdmFkZHIpCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBVTE9OR19NQVg7 Cj4+Pj4+ICvCoMKgwqAgfQo+Pj4+PiArCj4+Pj4+ICvCoMKgwqAgcmV0dXJuIHZhZGRyOwo+Pj4+ PiArfQo+Pj4+PiArCj4+Pj4+ICtzdGF0aWMgaW50IGZvbGlvX25yX3BhZ2VzX2NvbnRfbWFwcGVk KHN0cnVjdCBmb2xpbyAqZm9saW8sCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IHBhZ2UgKnBhZ2UsIHB0ZV90ICpwdGUsCj4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyBhZGRy LCB1bnNpZ25lZCBsb25nIGVuZCwKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBwdGVfdCBwdGVudCwgYm9vbCAqYW55X2RpcnR5KQo+Pj4+PiArewo+Pj4+ PiArwqDCoMKgIGludCBmbG9vcHM7Cj4+Pj4+ICvCoMKgwqAgaW50IGk7Cj4+Pj4+ICvCoMKgwqAg dW5zaWduZWQgbG9uZyBwZm47Cj4+Pj4+ICvCoMKgwqAgcGdwcm90X3QgcHJvdDsKPj4+Pj4gK8Kg wqDCoCBzdHJ1Y3QgcGFnZSAqZm9saW9fZW5kOwo+Pj4+PiArCj4+Pj4+ICvCoMKgwqAgaWYgKCFm b2xpb190ZXN0X2xhcmdlKGZvbGlvKSkKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAxOwo+ Pj4+PiArCj4+Pj4+ICvCoMKgwqAgZm9saW9fZW5kID0gJmZvbGlvLT5wYWdlICsgZm9saW9fbnJf cGFnZXMoZm9saW8pOwo+Pj4+PiArwqDCoMKgIGVuZCA9IG1pbihwYWdlX2NvbnRfbWFwcGVkX3Zh ZGRyKGZvbGlvX2VuZCwgcGFnZSwgYWRkciksIGVuZCk7Cj4+Pj4+ICvCoMKgwqAgZmxvb3BzID0g KGVuZCAtIGFkZHIpID4+IFBBR0VfU0hJRlQ7Cj4+Pj4+ICvCoMKgwqAgcGZuID0gcGFnZV90b19w Zm4ocGFnZSk7Cj4+Pj4+ICvCoMKgwqAgcHJvdCA9IHB0ZV9wZ3Byb3QocHRlX21rb2xkKHB0ZV9t a2NsZWFuKHB0ZW50KSkpOwo+Pj4+PiArCj4+Pj4+ICvCoMKgwqAgKmFueV9kaXJ0eSA9IHB0ZV9k aXJ0eShwdGVudCk7Cj4+Pj4+ICsKPj4+Pj4gK8KgwqDCoCBwZm4rKzsKPj4+Pj4gK8KgwqDCoCBw dGUrKzsKPj4+Pj4gKwo+Pj4+PiArwqDCoMKgIGZvciAoaSA9IDE7IGkgPCBmbG9vcHM7IGkrKykg ewo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcHRlbnQgPSBwdGVwX2dldChwdGUpOwo+Pj4+PiArwqDC oMKgwqDCoMKgwqAgcHRlbnQgPSBwdGVfbWtvbGQocHRlX21rY2xlYW4ocHRlbnQpKTsKPj4+Pj4g Kwo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCFwdGVfcHJlc2VudChwdGVudCkgfHwgcHRlX3Bm bihwdGVudCkgIT0gcGZuIHx8Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBncHJvdF92 YWwocHRlX3BncHJvdChwdGVudCkpICE9IHBncHJvdF92YWwocHJvdCkpCj4+Pj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+Pj4+PiArCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAo cHRlX2RpcnR5KHB0ZW50KSkKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKmFueV9kaXJ0 eSA9IHRydWU7Cj4+Pj4+ICsKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHBmbisrOwo+Pj4+PiArwqDC oMKgwqDCoMKgwqAgcHRlKys7Cj4+Pj4+ICvCoMKgwqAgfQo+Pj4+PiArCj4+Pj4+ICvCoMKgwqAg cmV0dXJuIGk7Cj4+Pj4+ICDCoMKgIH0KPj4+Pj4gIMKgwqAgwqAgLyoKPj4+Pj4gLSAqIENvcHkg b25lIHB0ZS7CoCBSZXR1cm5zIDAgaWYgc3VjY2VlZGVkLCBvciAtRUFHQUlOIGlmIG9uZSBwcmVh bGxvY2F0ZWQgcGFnZQo+Pj4+PiAtICogaXMgcmVxdWlyZWQgdG8gY29weSB0aGlzIHB0ZS4KPj4+ Pj4gKyAqIENvcHkgc2V0IG9mIGNvbnRpZ3VvdXMgcHRlcy7CoCBSZXR1cm5zIG51bWJlciBvZiBw dGVzIGNvcGllZCBpZiBzdWNjZWVkZWQKPj4+Pj4gKyAqIChhbHdheXMgZ3RlIDEpLCBvciAtRUFH QUlOIGlmIG9uZSBwcmVhbGxvY2F0ZWQgcGFnZSBpcyByZXF1aXJlZCB0byBjb3B5IHRoZQo+Pj4+ PiArICogZmlyc3QgcHRlLgo+Pj4+PiAgwqDCoMKgICovCj4+Pj4+ICDCoMKgIHN0YXRpYyBpbmxp bmUgaW50Cj4+Pj4+IC1jb3B5X3ByZXNlbnRfcHRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqZHN0 X3ZtYSwgc3RydWN0IHZtX2FyZWFfc3RydWN0Cj4+Pj4+ICpzcmNfdm1hLAo+Pj4+PiAtwqDCoMKg wqDCoMKgwqDCoCBwdGVfdCAqZHN0X3B0ZSwgcHRlX3QgKnNyY19wdGUsIHVuc2lnbmVkIGxvbmcg YWRkciwgaW50ICpyc3MsCj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBmb2xpbyAqKnBy ZWFsbG9jKQo+Pj4+PiArY29weV9wcmVzZW50X3B0ZXMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICpk c3Rfdm1hLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QKPj4+Pj4gKnNyY192bWEsCj4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqAgcHRlX3QgKmRzdF9wdGUsIHB0ZV90ICpzcmNfcHRlLAo+Pj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsCj4+ Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgaW50ICpyc3MsIHN0cnVjdCBmb2xpbyAqKnByZWFsbG9j KQo+Pj4+PiAgwqDCoCB7Cj4+Pj4+ICDCoMKgwqDCoMKgwqAgc3RydWN0IG1tX3N0cnVjdCAqc3Jj X21tID0gc3JjX3ZtYS0+dm1fbW07Cj4+Pj4+ICDCoMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyB2 bV9mbGFncyA9IHNyY192bWEtPnZtX2ZsYWdzOwo+Pj4+PiAgwqDCoMKgwqDCoMKgIHB0ZV90IHB0 ZSA9IHB0ZXBfZ2V0KHNyY19wdGUpOwo+Pj4+PiAgwqDCoMKgwqDCoMKgIHN0cnVjdCBwYWdlICpw YWdlOwo+Pj4+PiAgwqDCoMKgwqDCoMKgIHN0cnVjdCBmb2xpbyAqZm9saW87Cj4+Pj4+ICvCoMKg wqAgaW50IG5yID0gMTsKPj4+Pj4gK8KgwqDCoCBib29sIGFub247Cj4+Pj4+ICvCoMKgwqAgYm9v bCBhbnlfZGlydHkgPSBwdGVfZGlydHkocHRlKTsKPj4+Pj4gK8KgwqDCoCBpbnQgaTsKPj4+Pj4g IMKgwqAgwqDCoMKgwqDCoCBwYWdlID0gdm1fbm9ybWFsX3BhZ2Uoc3JjX3ZtYSwgYWRkciwgcHRl KTsKPj4+Pj4gLcKgwqDCoCBpZiAocGFnZSkKPj4+Pj4gK8KgwqDCoCBpZiAocGFnZSkgewo+Pj4+ PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9saW8gPSBwYWdlX2ZvbGlvKHBhZ2UpOwo+Pj4+PiAt wqDCoMKgIGlmIChwYWdlICYmIGZvbGlvX3Rlc3RfYW5vbihmb2xpbykpIHsKPj4+Pj4gLcKgwqDC oMKgwqDCoMKgIC8qCj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgICogSWYgdGhpcyBwYWdlIG1heSBo YXZlIGJlZW4gcGlubmVkIGJ5IHRoZSBwYXJlbnQgcHJvY2VzcywKPj4+Pj4gLcKgwqDCoMKgwqDC oMKgwqAgKiBjb3B5IHRoZSBwYWdlIGltbWVkaWF0ZWx5IGZvciB0aGUgY2hpbGQgc28gdGhhdCB3 ZSdsbCBhbHdheXMKPj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqAgKiBndWFyYW50ZWUgdGhlIHBpbm5l ZCBwYWdlIHdvbid0IGJlIHJhbmRvbWx5IHJlcGxhY2VkIGluIHRoZQo+Pj4+PiAtwqDCoMKgwqDC oMKgwqDCoCAqIGZ1dHVyZS4KPj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqAgKi8KPj4+Pj4gLcKgwqDC oMKgwqDCoMKgIGZvbGlvX2dldChmb2xpbyk7Cj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAodW5s aWtlbHkocGFnZV90cnlfZHVwX2Fub25fcm1hcChwYWdlLCBmYWxzZSwgc3JjX3ZtYSkpKSB7Cj4+ Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIFBhZ2UgbWF5IGJlIHBpbm5lZCwgd2UgaGF2 ZSB0byBjb3B5LiAqLwo+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb2xpb19wdXQoZm9s aW8pOwo+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gY29weV9wcmVzZW50X3Bh Z2UoZHN0X3ZtYSwgc3JjX3ZtYSwgZHN0X3B0ZSwgc3JjX3B0ZSwKPj4+Pj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhZGRyLCByc3MsIHByZWFsbG9j LCBwYWdlKTsKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGFub24gPSBmb2xpb190ZXN0X2Fub24oZm9s aW8pOwo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgbnIgPSBmb2xpb19ucl9wYWdlc19jb250X21hcHBl ZChmb2xpbywgcGFnZSwgc3JjX3B0ZSwgYWRkciwKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW5kLCBwdGUsICZhbnlfZGlydHkpOwo+Pj4+PiAr Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgbnI7IGkrKywgcGFnZSsrKSB7 Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChhbm9uKSB7Cj4+Pj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICogSWYgdGhpcyBwYWdlIG1heSBoYXZlIGJlZW4gcGlubmVkIGJ5IHRoZQo+Pj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBwYXJlbnQgcHJvY2VzcywgY29w eSB0aGUgcGFnZSBpbW1lZGlhdGVseSBmb3IKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICogdGhlIGNoaWxkIHNvIHRoYXQgd2UnbGwgYWx3YXlzIGd1YXJhbnRlZSB0aGUK Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogcGlubmVkIHBhZ2Ugd29u J3QgYmUgcmFuZG9tbHkgcmVwbGFjZWQgaW4gdGhlCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAqIGZ1dHVyZS4KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICovCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHVubGlr ZWx5KHBhZ2VfdHJ5X2R1cF9hbm9uX3JtYXAoCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBhZ2UsIGZhbHNlLCBzcmNfdm1hKSkpIHsKPj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChpICE9IDApCj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+ Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogUGFnZSBtYXkg YmUgcGlubmVkLCB3ZSBoYXZlIHRvIGNvcHkuICovCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gY29weV9wcmVzZW50X3BhZ2UoCj4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRzdF92bWEsIHNyY192 bWEsIGRzdF9wdGUsCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHNyY19wdGUsIGFkZHIsIHJzcywgcHJlYWxsb2MsCj4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBhZ2UpOwo+Pj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCByc3NbTU1fQU5PTlBBR0VTXSsrOwo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIFZNX0JVR19PTihQYWdlQW5vbkV4Y2x1c2l2ZShwYWdlKSk7Cj4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIH0gZWxzZSB7Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcGFnZV9kdXBfZmlsZV9ybWFwKHBhZ2UsIGZhbHNlKTsKPj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByc3NbbW1fY291bnRlcl9maWxlKHBhZ2UpXSsrOwo+Pj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9 Cj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCByc3NbTU1fQU5PTlBBR0VTXSsrOwo+Pj4+PiAtwqDCoMKg IH0gZWxzZSBpZiAocGFnZSkgewo+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgZm9saW9fZ2V0KGZvbGlv KTsKPj4+Pj4gLcKgwqDCoMKgwqDCoMKgIHBhZ2VfZHVwX2ZpbGVfcm1hcChwYWdlLCBmYWxzZSk7 Cj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCByc3NbbW1fY291bnRlcl9maWxlKHBhZ2UpXSsrOwo+Pj4+ PiArCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBuciA9IGk7Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBm b2xpb19yZWZfYWRkKGZvbGlvLCBucik7Cj4+Pj4+ICDCoMKgwqDCoMKgwqAgfQo+Pj4+PiAgwqDC oCDCoMKgwqDCoMKgIC8qCj4+Pj4+IEBAIC05NjgsMjQgKzEwNTEsMjggQEAgY29weV9wcmVzZW50 X3B0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKmRzdF92bWEsIHN0cnVjdAo+Pj4+PiB2bV9hcmVh X3N0cnVjdCAqc3JjX3ZtYSwKPj4+Pj4gIMKgwqDCoMKgwqDCoMKgICogaW4gdGhlIHBhcmVudCBh bmQgdGhlIGNoaWxkCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoCAqLwo+Pj4+PiAgwqDCoMKgwqDCoMKg IGlmIChpc19jb3dfbWFwcGluZyh2bV9mbGFncykgJiYgcHRlX3dyaXRlKHB0ZSkpIHsKPj4+Pj4g LcKgwqDCoMKgwqDCoMKgIHB0ZXBfc2V0X3dycHJvdGVjdChzcmNfbW0sIGFkZHIsIHNyY19wdGUp Owo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcHRlcF9zZXRfd3Jwcm90ZWN0cyhzcmNfbW0sIGFkZHIs IHNyY19wdGUsIG5yKTsKPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgIHB0ZSA9IHB0ZV93cnBy b3RlY3QocHRlKTsKPj4+Pgo+Pj4+IFlvdSBsaWtlbHkgd2FudCBhbiAiYW55X3B0ZV93cml0YWJs ZSIgY2hlY2sgaGVyZSBpbnN0ZWFkLCBubz8KPj4+Pgo+Pj4+IEFueSBvcGVyYXRpb25zIHRoYXQg dGFyZ2V0IGEgc2luZ2xlIGluZGlpdmlkdWFsIFBURSB3aGlsZSBtdWx0aXBsZSBQVEVzIGFyZQo+ Pj4+IGFkanVzdGVkIGFyZSBzdXNwaWNpb3VzIDopCj4+Pgo+Pj4gVGhlIGlkZWEgaXMgdGhhdCBJ J3ZlIGFscmVhZHkgY29uc3RyYWluZWQgdGhlIGJhdGNoIG9mIHBhZ2VzIHN1Y2ggdGhhdCB0aGUK Pj4+IHBlcm1pc3Npb25zIGFyZSBhbGwgdGhlIHNhbWUgKHNlZSBmb2xpb19ucl9wYWdlc19jb250 X21hcHBlZCgpKS4gU28gaWYgdGhlIGZpcnN0Cj4+PiBwdGUgaXMgd3JpdGFibGUsIHRoZW4gdGhl eSBhbGwgYXJlIC0gc29tZXRoaW5nIGhhcyBnb25lIGJhZGx5IHdyb25nIGlmIHNvbWUgYXJlCj4+ PiB3cml0YWJsZSBhbmQgb3RoZXJzIGFyZSBub3QuCj4+Cj4+IEkgd29uZGVyIGlmIGl0IHdvdWxk IGJlIGNsZWFuZXIgYW5kIGVhc2llciB0byBub3QgZG8gdGhhdCwgdGhvdWdoLgo+Pgo+PiBTaW1w bHkgcmVjb3JkIGlmIGFueSBwdGUgaXMgd3JpdGFibGUuIEFmdGVyd2FyZHMgdGhleSB3aWxsICph bGwqIGJlIFIvTyBhbmQgeW91Cj4+IGNhbiBzZXQgdGhlIGNvbnQgYml0LCBjb3JyZWN0Pwo+IAo+ IE9oIEkgc2VlIHdoYXQgeW91IG1lYW4gLSB0aGF0IG9ubHkgd29ya3MgZm9yIGNvdyBtYXBwaW5n cyB0aG91Z2guIElmIHlvdSBoYXZlIGEKPiBzaGFyZWQgbWFwcGluZywgeW91IHdvbid0IGJlIG1h a2luZyBpdCByZWFkLW9ubHkgYXQgZm9yay4gU28gaWYgd2UgaWdub3JlCj4gcHRlX3dyaXRlKCkg c3RhdGUgd2hlbiBkZW1hcmtpbmcgdGhlIGJhdGNoZXMsIHdlIHdpbGwgZW5kIHVwIHdpdGggYSBi YXRjaCBvZgo+IHBhZ2VzIHdpdGggYSBtaXggb2YgUk8gYW5kIFJXIGluIHRoZSBwYXJlbnQsIGJ1 dCB0aGVuIHdlIHNldF9wdGVzKCkgZm9yIHRoZQo+IGNoaWxkIGFuZCB0aG9zZSBwYWdlcyB3aWxs IGFsbCBoYXZlIHRoZSBwZXJtaXNzaW9ucyBvZiB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgYmF0Y2gu CgpJIHNlZSB3aGF0IHlvdSBtZWFuLgoKQWZ0ZXIgZm9yaygpLCBhbGwgYW5vbiBwYWdlcyB3aWxs IGJlIFIvTyBpbiB0aGUgcGFyZW50IGFuZCB0aGUgY2hpbGQuIApFYXN5LiBJZiBhbnkgUFRFIGlz IHdyaXRhYmxlLCB3cnByb3RlY3QgYWxsIGluIHRoZSBwYXJlbnQgYW5kIHRoZSBjaGlsZC4KCkFm dGVyIGZvcmsoKSwgYWxsIHNoYXJlZCBwYWdlcyBjYW4gYmUgUi9PIG9yIFIvVyBpbiB0aGUgcGFy ZW50LiBGb3IgCnNpbXBsaWNpdHksIEkgdGhpbmsgeW91IGNhbiBzaW1wbHkgc2V0IHRoZW0gYWxs IFIvTyBpbiB0aGUgY2hpbGQuIFNvIGlmIAphbnkgUFRFIGlzIHdyaXRhYmxlLCB3cnByb3RlY3Qg YWxsIGluIHRoZSBjaGlsZC4KCldoeT8gaW4gdGhlIGRlZmF1bHQgY2FzZSwgZm9yaygpIGRvZXMg bm90IGV2ZW4gY2FyZSBhYm91dCBNQVBfU0hBUkVEIAptYXBwaW5nczsgaXQgZG9lcyBub3QgY29w eSB0aGUgcGFnZSB0YWJsZXMvcHRlcy4gU2VlIHZtYV9uZWVkc19jb3B5KCkuCgpPbmx5IGluIGNv cm5lciBjYXNlcyAoZS5nLiwgdWZmZC13cCwgVk1fUEZOTUFQLCBWTV9NSVhFRE1BUCksIG9yIGlu IApNQVBfUFJJVkFURSBtYXBwaW5ncywgeW91IGNhbiBldmVuIGVuZCB1cCBpbiB0aGF0IGNvZGUu CgpJbiBNQVBfUFJJVkFURSBtYXBwaW5ncywgb25seSBhbm9uIHBhZ2VzIGNhbiBiZSBSL1csIG90 aGVyIHBhZ2VzIGNhbiAKbmV2ZXIgYmUgd3JpdGFibGUsIHNvIGl0IGRvZXMgbm90IG1hdHRlci4g SW4gVk1fUEZOTUFQL1ZNX01JWEVETUFQIApsaWtlbHkgYWxsIHBlcm1pc3Npb25zIG1hdGNoIGVp dGhlciB3YXkuCgpTbyB5b3UgbWlnaHQganVzdCB3cnByb3RlY3QgdGhlICFhbm9uIHBhZ2VzIFIv TyBmb3IgdGhlIGNoaWxkIGFuZCBub2JvZHkgCnNob3VsZCByZWFsbHkgbm90aWNlIGl0LCB3cml0 ZSBmYXVsdHMgd2lsbCByZXNvbHZlIGl0LgoKRmFtb3VzIGxhc3Qgd29yZHMgOikKCi0tIApDaGVl cnMsCgpEYXZpZCAvIGRoaWxkZW5iCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtl cm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxt YW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=