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 X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 59194C388F9 for ; Fri, 20 Nov 2020 02:36:34 +0000 (UTC) Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 940AE2158C for ; Fri, 20 Nov 2020 02:36:33 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="NEQj9ipS" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 940AE2158C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=oracle.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=containers-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 167F186D8D; Fri, 20 Nov 2020 02:36:33 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 69VFk1ZxdbwC; Fri, 20 Nov 2020 02:36:30 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by fraxinus.osuosl.org (Postfix) with ESMTP id DE78686D8F; Fri, 20 Nov 2020 02:36:30 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id AA0C8C1825; Fri, 20 Nov 2020 02:36:30 +0000 (UTC) Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 92B4FC0891 for ; Fri, 20 Nov 2020 02:36:29 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 81DDB86D8F for ; Fri, 20 Nov 2020 02:36:29 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pp5NF4BJoG-J for ; Fri, 20 Nov 2020 02:36:26 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from aserp2120.oracle.com (aserp2120.oracle.com [141.146.126.78]) by fraxinus.osuosl.org (Postfix) with ESMTPS id 6B62986D8D for ; Fri, 20 Nov 2020 02:36:26 +0000 (UTC) Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 0AK2VHVq009850; Fri, 20 Nov 2020 02:35:33 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : references : mime-version : content-type : content-transfer-encoding : in-reply-to; s=corp-2020-01-29; bh=Y+fENZmkzhNOL+RL027EUZpGAvP+D5VIvM3vZjj69PA=; b=NEQj9ipSFhrExTPbE9JOxuQTMcIKOx7mk15a81myjV9P1JX4IUBZuc4O6xMCpc9V4pda 258W64xq8ZaIwh+cCuaI8W8RkWgLG9bAkEE/vTldXKk5/WjfOyxpFAjHtAKQyslpnFrn wpIMFbojygWpaELlPEWj37owkQjkehZy6/0qAdbQrWRFe421QKkqCxSFKtalDrb/CZUq HvnWz8rT7IbO0ZodF7/mD1usYWH7vl0VO/gl0f2rm5cAhauR6zsWtmyXdudAW5V0I7ef VeN9UBpLbqHWx+pIspaH0ajW6TZRnFH+XFLviHwTPUDm13y407UQj4RK9DZARdsNCAUX jQ== Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by aserp2120.oracle.com with ESMTP id 34t76m8mvh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 20 Nov 2020 02:35:32 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 0AK2TfR6136071; Fri, 20 Nov 2020 02:33:32 GMT Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userp3020.oracle.com with ESMTP id 34ts0und0k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 20 Nov 2020 02:33:31 +0000 Received: from abhmp0008.oracle.com (abhmp0008.oracle.com [141.146.116.14]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 0AK2XDYZ017419; Fri, 20 Nov 2020 02:33:14 GMT Received: from localhost (/10.159.242.34) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 19 Nov 2020 18:33:12 -0800 Date: Thu, 19 Nov 2020 18:33:09 -0800 From: "Darrick J. Wong" To: Christian Brauner Subject: Re: [PATCH v2 00/39] fs: idmapped mounts Message-ID: <20201120023309.GH9685@magnolia> References: <20201115103718.298186-1-christian.brauner@ubuntu.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20201115103718.298186-1-christian.brauner@ubuntu.com> X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9810 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 bulkscore=0 suspectscore=0 spamscore=0 malwarescore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2011200017 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9810 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 phishscore=0 adultscore=0 priorityscore=1501 bulkscore=0 clxscore=1011 mlxlogscore=999 malwarescore=0 mlxscore=0 spamscore=0 lowpriorityscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2011200017 Cc: Lennart Poettering , Mimi Zohar , David Howells , Andreas Dilger , containers@lists.linux-foundation.org, Tycho Andersen , Jonathan Corbet , smbarber@chromium.org, Christoph Hellwig , linux-ext4@vger.kernel.org, Mrunal Patel , Kees Cook , Arnd Bergmann , Jann Horn , selinux@vger.kernel.org, Josh Triplett , linux-fsdevel@vger.kernel.org, Aleksa Sarai , Alexander Viro , Andy Lutomirski , OGAWA Hirofumi , Geoffrey Thomas , James Bottomley , John Johansen , Theodore Tso , Seth Forshee , Dmitry Kasatkin , Stephen Smalley , linux-security-module@vger.kernel.org, linux-audit@redhat.com, "Eric W. Biederman" , linux-api@vger.kernel.org, Casey Schaufler , Alban Crequy , linux-integrity@vger.kernel.org, Todd Kjos X-BeenThere: containers@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux Containers List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: containers-bounces@lists.linux-foundation.org Sender: "Containers" T24gU3VuLCBOb3YgMTUsIDIwMjAgYXQgMTE6MzY6MzlBTSArMDEwMCwgQ2hyaXN0aWFuIEJyYXVu ZXIgd3JvdGU6Cj4gSGV5IGV2ZXJ5b25lLAo+IAo+IFRoaXMgaXMgdjIuIEl0IGlzIHJld29ya2Vk IGFjY29yZGluZyB0byB0aGUgcmV2aWV3cyBjb21pbmcgZnJvbQo+IENocmlzdG9waCBhbmQgb3Ro ZXJzIHRvIGFkYXB0IGFsbCByZWxldmFudCBoZWxwZXJzIGFuZCBpbm9kZV9vcGVyYXRpb25zCj4g bWV0aG9kcyB0byBhY2NvdW50IGZvciBpZG1hcHBlZCBtb3VudHMgaW5zdGVhZCBvZiBpbnRyb2R1 Y2luZyBuZXcKPiBoZWxwZXJzIGFuZCBtZXRob2RzIHNwZWNpZmljIHRvIGlkbWFwcGVkIG1vdW50 cyBsaWtlIHdlIGRpZCBiZWZvcmUuCj4gV2UndmUgYWxzbyBtb3ZlZCB0aGUgb3ZlcmxheWZzIGNv bnZlcnNpb24gdG8gaGFuZGxlIGlkbWFwcGVkIG1vdW50cyBpbnRvCj4gYSBzZXBhcmF0ZSBwYXRj aHNldCB0aGF0IHdpbGwgYmUgc2VudCBvdXQgc2VwYXJhdGVseSBhZnRlciB0aGUgY29yZQo+IGNo YW5nZXMuIFRoZSBjb252ZXJ0ZWQgZmlsZXN5dGVtcyBpbiB0aGlzIHNlcmllcyBpbmNsdWRlIGZh dCBhbmQgZXh0NC4KPiBUaGUgY29uZmlnIG9wdGlvbiB0byBkaXNhYmxlIGlkbWFwcGVkIG1vdW50 cyBoYXMgYmVlbiBtb3ZlZCBmcm9tIGEgYSB2ZnMKPiBjb25maWcgcHRpb24gdG8gYSBwZXItZmls ZXN5c3RlbSBvcHRpb24uIFRoZXkgZGVmYXVsdCB0byBvZmYuIEhhdmluZyBhCj4gY29uZmlnIG9w dGlvbiBhbGxvd3MgdXMgdG8gZ2FpbiBzb21lIGNvbmZpZGVuY2UgaW4gdGhlIHBhdGNoc2V0IG92 ZXIKPiBtdWx0aXBsZSBrZXJuZWwgcmVsZWFzZXMuCgpTbyB1aCBJIG5vdGljZWQgdGhhdCB0aGUg bmV3IHVzZXJfbnMgcGFyYW1ldGVyIHBhc3NlZCB0byB0aGUgeGZzCmZ1bmN0aW9ucyBkb24ndCBh Y3R1YWxseSBnZXQgdXNlZCBmb3IgYW55dGhpbmcuICBEaWQgSSBtaXNzIHNvbWV0aGluZwp3aGVu IEkgcHVsbGVkIHRoZSBicmFuY2gsIG9yIGRvZXMgdGhpcyBzaW1wbHkgcmVmbGVjdCB4ZnMgbm90 IGhhdmluZyBhbnkKaWRtYXAgc3VwcG9ydD8gIEFuZCBob3cgd291bGQgb25lIGFkZCBzdWNoIGEg dGhpbmc/ICBSZXBsYWNlIHRoZQomaW5pdF91c2VyX25zIHdpdGggdGhlIHBhc3NlZC1pbiB1c2Vy X25zIHBhcmFtZXRlcj8KCj4gVGhlcmUgYXJlIHR3byBub3RlYWJsZSB0aGluZ3MgYWJvdXQgdGhp cyB2ZXJzaW9uLiBGaXJzdCwgdGhhdCBpdCBjb21lcwo+IHdpdGggYSByZWFsbHkgbGFyZ2UgdGVz dC1zdWl0ZSB0byB0ZXN0IGN1cnJlbnQgdmZzIGJlaGF2aW9yIGFuZAo+IGlkbWFwcGVkIG1vdW50 cyBiZWhhdmlvci4gV2UgaW50ZW5kIHRoaXMgdGVzdC1zdWl0ZSB0byBncm93IG92ZXIgdGltZQo+ IGFuZCBhdCBzb21lIHBvaW50IGNvdmVyIG1vc3QgYmFzaWMgY29yZSB2ZnMgZnVuY3Rpb25hbGl0 eSB0aGF0IGlzbid0Cj4gY292ZXJlZCBpbiB4ZnN0ZXN0cyBhbmQgaGF2ZSBpdCBiZSBwYXJ0IG9m IHRoZSBzZWxmdGVzdHMuCgpQbGVhc2UgcHV0IGVub3VnaCBvZiBhIHRlc3QgaW4gZnN0ZXN0cyB0 byBkbyBiYXNpYyB2YWxpZGF0aW9uIHRoYXQgd2UKZmlsZXN5c3RlbSBkZXZlbG9wZXJzIGRpZG4n dCBhY2NpZGVudGFsbHkgc2NyZXcgdGhpbmdzIHVwLgoKLS1ECgo+IFNlY29uZCwgd2hpbGUgd2hp bGUgd29ya2luZyBvbiBhZGFwdGluZyB0aGlzIHBhdGNoc2V0IHRvIHRoZSByZXF1ZXN0ZWQKPiBj aGFuZ2VzLCB0aGUgcnVuQyBhbmQgY29udGFpbmVyZCBjcm93ZCB3YXMgbmljZSBlbm91Z2ggdG8g YWRhcHQKPiBjb250YWluZXJkIHRvIHRoaXMgcGF0Y2hzZXQgdG8gbWFrZSB1c2Ugb2YgaWRtYXBw ZWQgbW91bnRzIGluIG9uZSBvZiB0aGUKPiBtb3N0IHdpZGVseSB1c2VkIGNvbnRhaW5lciBydW50 aW1lczoKPiBodHRwczovL2dpdGh1Yi5jb20vY29udGFpbmVyZC9jb250YWluZXJkL3B1bGwvNDcz NAo+IAo+IFdpdGggdGhpcyBwYXRjaHNldCB3ZSBtYWtlIGl0IHBvc3NpYmxlIHRvIGF0dGFjaCBp ZG1hcHBpbmdzIHRvIGJpbmQKPiBtb3VudHMuIFRoaXMgaGFuZGxlcyBzZXZlcmFsIGNvbW1vbiB1 c2UtY2FzZXMuIEhlcmUgYXJlIGp1c3QgYSBmZXc6Cj4gLSBTaGlmdGluZyBvZiBhIGNvbnRhaW5l ciByb290ZnMgb3IgYmFzZSBpbWFnZSB3aXRob3V0IGhhdmluZyB0byBtYW5nbGUKPiAgIGV2ZXJ5 IGZpbGUgKHJ1bmMsIERvY2tlciwgY29udGFpbmVyZCwgazhzLCBMWEQsIHN5c3RlbWQgLi4uKQo+ IC0gU2hhcmluZyBvZiBkYXRhIGJldHdlZW4gaG9zdCBvciBwcml2aWxlZ2VkIGNvbnRhaW5lcnMg d2l0aAo+ICAgdW5kZXJwcml2aWxlZ2VkIGNvbnRhaW5lcnMgKHJ1bmMsIERvY2tlciwgY29udGFp bmVyZCwgazhzLCBMWEQsIC4uLikKPiAtIFNoaWZ0aW5nIG9mIHN1YnNldCBvZiBvd25lcnNoaXAt bGVzcyBmaWxlc3lzdGVtcyAodmZhdCkgZm9yIHVzZSBieQo+ICAgbXVsdGlwbGUgdXNlcnMsIGVm ZmVjdGl2ZWx5IGFsbG93aW5nIGZvciBEQUMgb24gc3VjaCBkZXZpY2VzIChzeXN0ZW1kLAo+ICAg QW5kcm9pZCwgLi4uKQo+IC0gRGF0YSBzaGFyaW5nIGJldHdlZW4gbXVsdGlwbGUgdXNlciBuYW1l c3BhY2VzIHdpdGggaW5jb21wYXRpYmxlIG1hcHMKPiAgIChMWEQsIGs4cywgLi4uKQo+IE1ha2lu ZyBpdCBwb3NzaWJsZSB0byBzaGFyZSBkaXJlY3RvcmllcyBhbmQgbW91bnRzIGJldHdlZW4gdXNl cnMgd2l0aAo+IGRpZmZlcmVudCB1aWRzIGFuZCBnaWRzIGlzIGl0c2VsZiBxdWl0ZSBhbiBpbXBv cnRhbnQgdXNlLWNhc2UgaW4KPiBkaXN0cmlidXRlZCBzeXN0ZW1zIGVudmlyb25tZW50cy4gSXQn cyBvZiBjb3Vyc2UgZXNwZWNpYWxseSB1c2VmdWwgaW4KPiBnZW5lcmFsIGZvciBwb3J0YWJsZSB1 c2Igc3RpY2tzLCBzaGFyaW5nIGRhdGEgYmV0d2VlbiBtdWx0aXBsZSB1c2VycyBpbgo+IGdlbmVy YWwsIGFuZCBzaGFyaW5nIGhvbWUgZGlyZWN0b3JpZXMgYmV0d2VlbiBtdWx0aXBsZSB1c2Vycy4g VGhlIGxhc3QKPiBleGFtcGxlIGlzIG5vdyBlbGVnYW50bHkgZXhwcmVzc2VkIGluIHN5c3RlbWQn cyBob21lZCBjb25jZXB0IGZvcgo+IHBvcnRhYmxlIGhvbWUgZGlyZWN0b3JpZXMuIEFzIG1lbnRp b25lZCBhYm92ZSwgaWRtYXBwZWQgbW91bnRzIGFsc28KPiBhbGxvdyBkYXRhIGZyb20gdGhlIGhv c3QgdG8gYmUgc2hhcmVkIHdpdGggdW5wcml2aWxlZ2VkIGNvbnRhaW5lcnMsCj4gYmV0d2VlbiBw cml2aWxlZ2VkIGFuZCB1bnByaXZpbGVnZWQgY29udGFpbmVycyBzaW11bHRhbmVvdXNseSBhbmQg aW4KPiBhZGRpdGlvbiBhbHNvIGJldHdlZW4gdW5wcml2aWxlZ2VkIGNvbnRhaW5lcnMgd2l0aCBk aWZmZXJlbnQgaWRtYXBwaW5ncwo+IHdoZW5ldmVyIHRoZXkgYXJlIHVzZWQgdG8gaXNvbGF0ZSBv bmUgY29udGFpbmVyIGNvbXBsZXRlbHkgZnJvbSBhbm90aGVyCj4gY29udGFpbmVyLgo+IEFzIGNh biBiZSBzZWVuIGZyb20gYW5zd2VycyB0byBlYXJsaWVyIHRocmVhZHMgb2YgdGhpcyBwYXRjaHNl dCBhbmQgZnJvbQo+IHRoZSBsaXN0IG9mIHBvdGVudGlhbCB1c2VycyBpbnRlcmVzdCBpbiB0aGlz IHBhdGNoc2V0IGlzIGZhaXJseQo+IHdpZGVzcHJlYWQuCj4gCj4gV2UgaGF2ZSBpbXBsZW1lbnRl ZCBhbmQgcHJvcG9zZWQgbXVsdGlwbGUgc29sdXRpb25zIHRvIHRoaXMgYmVmb3JlLiBUaGlzCj4g aW5jbHVkZWQgdGhlIGludHJvZHVjdGlvbiBvZiBmc2lkIG1hcHBpbmdzLCBhIHRpbnkgZmlsZXN5 c3RlbSB0aGF0IGlzCj4gY3VycmVudGx5IGNhcnJpZWQgaW4gVWJ1bnR1IHRoYXQgaGFzIHNob3du IGl0J3MgbGltaXRhdGlvbnMsIGFuZCBhbgo+IGFwcHJvYWNoIHRvIGNhbGwgb3ZlcnJpZGUgY3Jl ZHMgaW4gdGhlIHZmcy4gTm9uZSBvZiB0aGVzZSBzb2x1dGlvbnMgaGF2ZQo+IGNvdmVyZWQgYWxs IG9mIHRoZSBhYm92ZSB1c2UtY2FzZXMuIFNvbWUgb2YgdGhlbSBoYXZlIGJlZW4gZmFpcmx5IGhh Y2t5Cj4gdG9vIGJ5IGUuZy4gdmlvbGF0aW5nIGhvdyB0aGluZ3Mgc2hvdWxkIGJlIHBhc3NlZCBk b3duIHRvIHRoZSBpbmRpdmlkdWFsCj4gZmlsZXN5c3RlbXMuCj4gVGhlIHNvbHV0aW9uIHByb3Bv c2VkIGhlcmUgaGFzIGl0J3Mgb3JpZ2lucyBpbiBtdWx0aXBsZSBkaXNjdXNzaW9ucwo+IGR1cmlu ZyBMaW51eCBQbHVtYmVycyAyMDE3IGR1cmluZyBhbmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgY29u dGFpbmVycwo+IG1pY3JvY29uZmVyZW5jZS4KPiBUbyB0aGUgYmVzdCBvZiBteSBrbm93bGVkZ2Ug dGhpcyBpbnZvbHZlZCBBbGVrc2EsIFN0w6lwaGFuZSwgRXJpYywgRGF2aWQsCj4gSmFtZXMsIGFu ZCBteXNlbGYuIFRoZSBvcmlnaW5hbCBpZGVhIG9yIGEgdmFyaWFudCB0aGVyZW9mIGhhcyBiZWVu Cj4gZGlzY3Vzc2VkLCBhZ2FpbiB0byB0aGUgYmVzdCBvZiBteSBrbm93bGVkZ2UsIGFmdGVyIGEg TGludXggY29uZmVyZW5jZQo+IGluIFN0LiBQZXRlcnNidXJnIGluIFJ1c3NpYSBpbiAyMDE3IGJl dHdlZW4gQ2hyaXN0b3BoLCBUeWNobywgYW5kCj4gbXlzZWxmLgo+IFdlJ3ZlIHRha2VuIHRoZSB0 aW1lIHRvIGltcGxlbWVudCBhIHdvcmtpbmcgdmVyc2lvbiBvZiB0aGlzIHNvbHV0aW9uCj4gb3Zl ciB0aGUgbGFzdCB3ZWVrcyB0byB0aGUgYmVzdCBvZiBteSBhYmlsaXRpZXMuIFR5Y2hvIGhhcyBz aWduZWQgdXAKPiBmb3IgdGhpcyBzbGlndGhseSBjcmF6eSBlbmRlYXZvdXIgYXMgd2VsbCBhbmQg aGUgaGFzIGhlbHBlZCB3aXRoIHRoZQo+IGNvbnZlcnNpb24gb2YgdGhlIHhhdHRyIGNvZGVwYXRo cyBhbmQgd2lsbCBiZSBpbnZvbHZlZCB3aXRoIG90aGVycyBpbgo+IGNvbnZlcnRpbmcgYWRkaXRp b25hbCBmaWxlc3lzdGVtcy4KPiAKPiBUaGlzIHNlcmllcyBtYWtlcyBpZG1hcHBpbmdzIGEgcHJv cGVydHkgb2Ygc3RydWN0IHZmc21vdW50IGluc3RlYWQgb2YKPiB0eWluZyBpdCB0byBhIHByb2Nl c3MgYmVpbmcgaW5zaWRlIG9mIGEgdXNlciBuYW1lc3BhY2Ugd2hpY2ggaGFzIGJlZW4KPiB0aGUg Y2FzZSBmb3IgYWxsIG90aGVyIHByb3Bvc2VkIGFwcHJvYWNoZXMuIEl0IGFsc28gYWxsb3dzIHRv IHBhc3MgZG93bgo+IHRoZSB1c2VyIG5hbWVzcGFjZSBpbnRvIHRoZSBmaWxlc3lzdG1zIHdoaWNo IGlzIGEgY2xlYW4gd2F5IGluc3RlYWQgb2YKPiB2aW9sYXRpbmcgY2FsbGluZyBjb252ZW50aW9u cyBieSBzdHJhcHBpbmcgdGhlIHVzZXIgbmFtZXNwYWNlCj4gaW5mb3JtYXRpb24gdGhhdCBpcyBh IHByb3BlcnR5IG9mIHRoZSBtb3VudCB0byB0aGUgY2FsbGVyJ3MgY3JlZGVudGlhbHMKPiBvciBz aW1pbGFyIGhhY2tzLgo+IFdpdGggdGhpcyBpZG1hcHBpbmdzIGJlY29tZSBhIHByb3BlcnR5IG9m IGJpbmQtbW91bnRzLCBpLmUuIGVhY2gKPiBiaW5kLW1vdW50IGNhbiBoYXZlIGEgc2VwYXJhdGUg aWRtYXBwaW5nLiBTdWNoIGlkbWFwcGVkIG1vdW50cyBjYW4gZXZlbgo+IGJlIGNyZWF0ZWQgaW5z aWRlIG9mIHRoZSBpbml0aWFsIHVzZXIgbmFtZXNwYWNlLgo+IAo+IFRoZSB2ZnNtb3VudCBzdHJ1 Y3QgZ2FpbnMgYSBuZXcgc3RydWN0IHVzZXJfbmFtZXNwYWNlIG1lbWJlci4gVGhlCj4gaWRtYXBw aW5nIG9mIHRoZSB1c2VyIG5hbWVzcGFjZSBiZWNvbWVzIHRoZSBpZG1hcHBpbmcgb2YgdGhlIG1v dW50LiBBCj4gY2FsbGVyIHRoYXQgaXMgcHJpdmlsZWdlZCB3aXRoIHJlc3BlY3QgdG8gdGhlIHVz ZXIgbmFtZXNwYWNlIG9mCj4gdGhlIHN1cGVyYmxvY2sgb2YgdGhlIHVuZGVybHlpbmcgZmlsZXN5 c3RlbSBjYW4gY3JlYXRlIGFuIGlkbWFwcGVkCj4gYmluZC1tb3VudC4gSW4gdGhlIGZ1dHVyZSwg d2UgY2FuIGVuYWJsZSB1bnByaXZpbGVnZWQgdXNlLWNhc2VzIGJ5Cj4gY2hlY2tpbmcgd2hldGhl ciB0aGUgY2FsbGVyIGlzIHByaXZpbGVnZWQgd3J0IHRvIHRoZSB1c2VyIG5hbWVzcGFjZSBhbgo+ IGFscmVhZHkgaWRtYXBwZWQgbW91bnQgaGFzIGJlZW4gbWFya2VkIHdpdGgsIGFsbG93aW5nIHRo ZW0gdG8gY2hhbmdlIHRoZQo+IGlkbWFwcGluZy4gRm9yIG5vdywga2VlcCB0aGluZ3Mgc2ltcGxl IHVudGlsIHdlIGZlZWwgc3VyZSBlbm91Z2guIE5vdGUsCj4gdGhhdCB3aXRoIHN5c2NhbGwgaW50 ZXJjZXB0aW9uIGl0IGlzIGFscmVhZHkgcG9zc2libGUgdG8gaW50ZXJjZXB0Cj4gaWRtYXBwZWQg bW91bnQgcmVxdWVzdHMgZnJvbSB1bnByaXZpbGVnZWQgY29udGFpbmVycyBhbmQgaGFuZGxlIHRo ZW0gaW4KPiBhIHN1ZmZpY2llbnRseSBwcml2aWxlZ2VkIGNvbnRhaW5lciBtYW5hZ2VyLiBTdXBw b3J0IGZvciB0aGlzIGlzCj4gYWxyZWFkeSBhdmFpbGFibGUgaW4gTFhEIGFuZCB3aWxsIGJlIGF2 YWlsYWJsZSBpbiBydW5DIHdlcmUgc3lzY2FsbAo+IGludGVyY2VwdGlvbiBpcyBjdXJyZW50bHkg YmVjb21pbmcgcGFydCBvZiB0aGUgcnVudGltZSBzcGVjIChzZWUKPiBodHRwczovL2dpdGh1Yi5j b20vb3BlbmNvbnRhaW5lcnMvcnVudGltZS1zcGVjL3B1bGwvMTA3NCkuCj4gCj4gVGhlIHVzZXIg bmFtZXNwYWNlIHRoZSBtb3VudCB3aWxsIGJlIG1hcmtlZCB3aXRoIGNhbiBiZSBzcGVjaWZpZWQg YnkKPiBwYXNzaW5nIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVyaW5nIHRvIHRoZSB1c2VyIG5hbWVz cGFjZSBhcyBhbiBhcmd1bWVudAo+IHRvIHRoZSBuZXcgbW91bnRfc2V0YXR0cigpIHN5c2NhbGwg dG9nZXRoZXIgd2l0aCB0aGUgbmV3Cj4gTU9VTlRfQVRUUl9JRE1BUCBmbGFnLiBCeSBkZWZhdWx0 IHZmc21vdW50cyBhcmUgbWFya2VkIHdpdGggdGhlIGluaXRpYWwKPiB1c2VyIG5hbWVzcGFjZSBh bmQgbm8gYmVoYXZpb3JhbCBvciBwZXJmb3JtYW5jZSBjaGFuZ2VzIHNob3VsZCBiZQo+IG9ic2Vy dmVkLiBBbGwgbWFwcGluZyBvcGVyYXRpb25zIGFyZSBub3BzIGZvciB0aGUgaW5pdGlhbCB1c2Vy Cj4gbmFtZXNwYWNlLiBXaGVuIGEgZmlsZS9pbm9kZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIGFuIGlk bWFwcGVkIG1vdW50IHRoZQo+IGlfdWlkIGFuZCBpX2dpZCBvZiB0aGUgaW5vZGUgd2lsbCBiZSBy ZW1hcHBlZCBhY2NvcmRpbmcgdG8gdGhlIHVzZXIKPiBuYW1lc3BhY2UgdGhlIG1vdW50IGhhcyBi ZWVuIG1hcmtlZCB3aXRoLgo+IAo+IEluIG9yZGVyIHRvIHN1cHBvcnQgaWRtYXBwZWQgbW91bnRz LCBmaWxlc3lzdGVtcyBuZWVkIHRvIGJlIGNoYW5nZWQgYW5kCj4gbWFyayB0aGVtc2VsdmVzIHdp dGggdGhlIEZTX0FMTE9XX0lETUFQIGZsYWcgaW4gZnNfZmxhZ3MuIFRoZSBpbml0aWFsCj4gdmVy c2lvbiBjb250YWlucyBmYXQgYW5kIGV4dDQgaW5jbHVkaW5nIGEgbGlzdCBvZiBleGFtcGxlcy4g QnV0IHBhdGNoZXMKPiBmb3Igb3RoZXIgZmlsZXN5c3RlbXMgYXJlIGFjdGl2ZWx5IHdvcmtlZCBv biBidXQgd2lsbCBiZSBzZW50IG91dAo+IHNlcGFyYXRlbHkuIFdlIGFyZSBoZXJlIHRvIHNlZSB0 aGlzIHRocm91Z2ggYW5kIHRoZXJlIGFyZSBtdWx0aXBsZQo+IHBlb3BsZSBpbnZvbHZlZCBpbiBj b252ZXJ0aW5nIGZpbGVzeXN0ZW1zLiBTbyBmaWxlc3lzdGVtIGRldmVsb3BlcnMgYXJlCj4gbm90 IGxlZnQgYWxvbmUgd2l0aCB0aGlzLgo+IAo+IEkgaGF2ZSB3cml0dGVuIGEgc2ltcGxlIHRvb2wg YXZhaWxhYmxlIGF0Cj4gaHR0cHM6Ly9naXRodWIuY29tL2JyYXVuZXIvbW91bnQtaWRtYXBwZWQg dGhhdCBhbGxvd3MgdG8gY3JlYXRlIGlkbWFwcGVkCj4gbW91bnRzIHNvIHBlb3BsZSBjYW4gcGxh eSB3aXRoIHRoaXMgcGF0Y2ggc2VyaWVzLiBIZXJlIGFyZSBhIGZldwo+IGlsbHVzdHJhdGlvbnM6 Cj4gCj4gMS4gQ3JlYXRlIGEgc2ltcGxlIGlkbWFwcGVkIG1vdW50IG9mIGFub3RoZXIgdXNlcidz IGhvbWUgZGlyZWN0b3J5Cj4gCj4gdTEwMDFAZjItdm06LyQgc3VkbyAuL21vdW50LWlkbWFwcGVk IC0tbWFwLW1vdW50IGI6MTAwMDoxMDAxOjEgL2hvbWUvdWJ1bnR1LyAvbW50Cj4gdTEwMDFAZjIt dm06LyQgbHMgLWFsIC9ob21lL3VidW50dS8KPiB0b3RhbCAyOAo+IGRyd3hyLXhyLXggMiB1YnVu dHUgdWJ1bnR1IDQwOTYgT2N0IDI4IDIyOjA3IC4KPiBkcnd4ci14ci14IDQgcm9vdCAgIHJvb3Qg ICA0MDk2IE9jdCAyOCAwNDowMCAuLgo+IC1ydy0tLS0tLS0gMSB1YnVudHUgdWJ1bnR1IDMxNTQg T2N0IDI4IDIyOjEyIC5iYXNoX2hpc3RvcnkKPiAtcnctci0tci0tIDEgdWJ1bnR1IHVidW50dSAg MjIwIEZlYiAyNSAgMjAyMCAuYmFzaF9sb2dvdXQKPiAtcnctci0tci0tIDEgdWJ1bnR1IHVidW50 dSAzNzcxIEZlYiAyNSAgMjAyMCAuYmFzaHJjCj4gLXJ3LXItLXItLSAxIHVidW50dSB1YnVudHUg IDgwNyBGZWIgMjUgIDIwMjAgLnByb2ZpbGUKPiAtcnctci0tci0tIDEgdWJ1bnR1IHVidW50dSAg ICAwIE9jdCAxNiAxNjoxMSAuc3Vkb19hc19hZG1pbl9zdWNjZXNzZnVsCj4gLXJ3LS0tLS0tLSAx IHVidW50dSB1YnVudHUgMTE0NCBPY3QgMjggMDA6NDMgLnZpbWluZm8KPiB1MTAwMUBmMi12bTov JCBscyAtYWwgL21udC8KPiB0b3RhbCAyOAo+IGRyd3hyLXhyLXggIDIgdTEwMDEgdTEwMDEgNDA5 NiBPY3QgMjggMjI6MDcgLgo+IGRyd3hyLXhyLXggMjkgcm9vdCAgcm9vdCAgNDA5NiBPY3QgMjgg MjI6MDEgLi4KPiAtcnctLS0tLS0tICAxIHUxMDAxIHUxMDAxIDMxNTQgT2N0IDI4IDIyOjEyIC5i YXNoX2hpc3RvcnkKPiAtcnctci0tci0tICAxIHUxMDAxIHUxMDAxICAyMjAgRmViIDI1ICAyMDIw IC5iYXNoX2xvZ291dAo+IC1ydy1yLS1yLS0gIDEgdTEwMDEgdTEwMDEgMzc3MSBGZWIgMjUgIDIw MjAgLmJhc2hyYwo+IC1ydy1yLS1yLS0gIDEgdTEwMDEgdTEwMDEgIDgwNyBGZWIgMjUgIDIwMjAg LnByb2ZpbGUKPiAtcnctci0tci0tICAxIHUxMDAxIHUxMDAxICAgIDAgT2N0IDE2IDE2OjExIC5z dWRvX2FzX2FkbWluX3N1Y2Nlc3NmdWwKPiAtcnctLS0tLS0tICAxIHUxMDAxIHUxMDAxIDExNDQg T2N0IDI4IDAwOjQzIC52aW1pbmZvCj4gdTEwMDFAZjItdm06LyQgdG91Y2ggL21udC9teS1maWxl Cj4gdTEwMDFAZjItdm06LyQgc2V0ZmFjbCAtbSB1OjEwMDE6cnd4IC9tbnQvbXktZmlsZQo+IHUx MDAxQGYyLXZtOi8kIHN1ZG8gc2V0Y2FwIC1uIDEwMDEgY2FwX25ldF9yYXcrZXAgL21udC9teS1m aWxlCj4gdTEwMDFAZjItdm06LyQgbHMgLWFsIC9tbnQvbXktZmlsZQo+IC1ydy1yd3hyLS0rIDEg dTEwMDEgdTEwMDEgMCBPY3QgMjggMjI6MTQgL21udC9teS1maWxlCj4gdTEwMDFAZjItdm06LyQg bHMgLWFsIC9ob21lL3VidW50dS9teS1maWxlCj4gLXJ3LXJ3eHItLSsgMSB1YnVudHUgdWJ1bnR1 IDAgT2N0IDI4IDIyOjE0IC9ob21lL3VidW50dS9teS1maWxlCj4gdTEwMDFAZjItdm06LyQgZ2V0 ZmFjbCAvbW50L215LWZpbGUKPiBnZXRmYWNsOiBSZW1vdmluZyBsZWFkaW5nICcvJyBmcm9tIGFi c29sdXRlIHBhdGggbmFtZXMKPiAjIGZpbGU6IG1udC9teS1maWxlCj4gIyBvd25lcjogdTEwMDEK PiAjIGdyb3VwOiB1MTAwMQo+IHVzZXI6OnJ3LQo+IHVzZXI6dTEwMDE6cnd4Cj4gZ3JvdXA6OnJ3 LQo+IG1hc2s6OnJ3eAo+IG90aGVyOjpyLS0KPiB1MTAwMUBmMi12bTovJCBnZXRmYWNsIC9ob21l L3VidW50dS9teS1maWxlCj4gZ2V0ZmFjbDogUmVtb3ZpbmcgbGVhZGluZyAnLycgZnJvbSBhYnNv bHV0ZSBwYXRoIG5hbWVzCj4gIyBmaWxlOiBob21lL3VidW50dS9teS1maWxlCj4gIyBvd25lcjog dWJ1bnR1Cj4gIyBncm91cDogdWJ1bnR1Cj4gdXNlcjo6cnctCj4gdXNlcjp1YnVudHU6cnd4Cj4g Z3JvdXA6OnJ3LQo+IG1hc2s6OnJ3eAo+IG90aGVyOjpyLS0KPiAKPiAyLiBDcmVhdGUgbWFwcGlu ZyBvZiB0aGUgd2hvbGUgZXh0NCByb290ZnMgd2l0aG91dCBhIG1hcHBpbmcgZm9yIHVpZCBhbmQg Z2lkIDAKPiAKPiB1YnVudHVAZjItdm06fiQgc3VkbyAvbW91bnQtaWRtYXBwZWQgLS1tYXAtbW91 bnQgYjoxOjE6NjU1MzYgLyAvbW50Lwo+IHVidW50dUBmMi12bTp+JCBmaW5kbW50IHwgZ3JlcCBt bnQKPiDilJTilIAvbW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvZGV2L3NkYTIg IGV4dDQgICAgICAgcncscmVsYXRpbWUKPiAgIOKUlOKUgC9tbnQvbW50ICAgICAgICAgICAgICAg ICAgICAgICAgICAvZGV2L3NkYTIgIGV4dDQgICAgICAgcncscmVsYXRpbWUKPiB1YnVudHVAZjIt dm06fiQgc3VkbyBta2RpciAvQVMtUk9PVC1DQU4tQ1JFQVRFCj4gdWJ1bnR1QGYyLXZtOn4kIHN1 ZG8gbWtkaXIgL21udC9BUy1ST09ULUNBTlQtQ1JFQVRFCj4gbWtkaXI6IGNhbm5vdCBjcmVhdGUg ZGlyZWN0b3J5IOKAmC9tbnQvQVMtUk9PVC1DQU5ULUNSRUFUReKAmTogVmFsdWUgdG9vIGxhcmdl IGZvciBkZWZpbmVkIGRhdGEgdHlwZQo+IHVidW50dUBmMi12bTp+JCBta2RpciAvbW50L2hvbWUv dWJ1bnR1L0FTLVVTRVItMTAwMC1DQU4tQ1JFQVRFCj4gCj4gMy4gQ3JlYXRlIGEgdmZhdCB1c2Ig bW91bnQgYW5kIGV4cG9zZSB0byB1c2VyIDEwMDEgYW5kIDUwMDAKPiAKPiB1YnVudHVAZjItdm06 LyQgc3VkbyBtb3VudCAvZGV2L3NkYiAvbW50Cj4gdWJ1bnR1QGYyLXZtOi8kIGZpbmRtbnQgIHwg Z3JlcCBtbnQKPiDilJTilIAvbW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvZGV2 L3NkYiB2ZmF0ICAgICAgIHJ3LHJlbGF0aW1lLGZtYXNrPTAwMjIsZG1hc2s9MDAyMixjb2RlcGFn ZT00MzcsaW9jaGFyc2V0PWlzbzg4NTktMSxzaG9ydG5hbWU9bWl4ZWQsZXJyb3JzPXJlbW91bnQt cm8KPiB1YnVudHVAZjItdm06LyQgbHMgLWFsIC9tbnQKPiB0b3RhbCAxMgo+IGRyd3hyLXhyLXgg IDIgcm9vdCByb290IDQwOTYgSmFuICAxICAxOTcwIC4KPiBkcnd4ci14ci14IDM0IHJvb3Qgcm9v dCA0MDk2IE9jdCAyOCAyMjoyNCAuLgo+IC1yd3hyLXhyLXggIDEgcm9vdCByb290ICAgIDQgT2N0 IDI4IDAzOjQ0IGFhYQo+IC1yd3hyLXhyLXggIDEgcm9vdCByb290ICAgIDAgT2N0IDI4IDAxOjA5 IGJiYgo+IHVidW50dUBmMi12bTovJCBzdWRvIC9tb3VudC1pZG1hcHBlZCAtLW1hcC1tb3VudCBi OjA6MTAwMToxIC9tbnQgL21udC0xMDAxLwo+IHVidW50dUBmMi12bTovJCBscyAtYWwgL21udC0x MDAxLwo+IHRvdGFsIDEyCj4gZHJ3eHIteHIteCAgMiB1MTAwMSB1MTAwMSA0MDk2IEphbiAgMSAg MTk3MCAuCj4gZHJ3eHIteHIteCAzNCByb290ICByb290ICA0MDk2IE9jdCAyOCAyMjoyNCAuLgo+ IC1yd3hyLXhyLXggIDEgdTEwMDEgdTEwMDEgICAgNCBPY3QgMjggMDM6NDQgYWFhCj4gLXJ3eHIt eHIteCAgMSB1MTAwMSB1MTAwMSAgICAwIE9jdCAyOCAwMTowOSBiYmIKPiB1YnVudHVAZjItdm06 LyQgc3VkbyAvbW91bnQtaWRtYXBwZWQgLS1tYXAtbW91bnQgYjowOjUwMDA6MSAvbW50IC9tbnQt NTAwMC8KPiB1YnVudHVAZjItdm06LyQgbHMgLWFsIC9tbnQtNTAwMC8KPiB0b3RhbCAxMgo+IGRy d3hyLXhyLXggIDIgNTAwMCA1MDAwIDQwOTYgSmFuICAxICAxOTcwIC4KPiBkcnd4ci14ci14IDM0 IHJvb3Qgcm9vdCA0MDk2IE9jdCAyOCAyMjoyNCAuLgo+IC1yd3hyLXhyLXggIDEgNTAwMCA1MDAw ICAgIDQgT2N0IDI4IDAzOjQ0IGFhYQo+IC1yd3hyLXhyLXggIDEgNTAwMCA1MDAwICAgIDAgT2N0 IDI4IDAxOjA5IGJiYgo+IAo+IDQuIENyZWF0ZSBhbiBpZG1hcHBlZCByb290ZnMgbW91bnQgZm9y IGEgY29udGFpbmVyCj4gCj4gcm9vdEBmMi12bTp+IyBscyAtYWwgL3Zhci9saWIvbHhjL2YyL3Jv b3Rmcy8KPiB0b3RhbCA2OAo+IGRyd3hyLXhyLXggMTcgMjAwMDAgMjAwMDAgNDA5NiBTZXAgMjQg MDc6NDggLgo+IGRyd3hyd3gtLS0gIDMgMjAwMDAgMjAwMDAgNDA5NiBPY3QgMTYgMTk6MjYgLi4K PiBscnd4cnd4cnd4ICAxIDIwMDAwIDIwMDAwICAgIDcgU2VwIDI0IDA3OjQzIGJpbiAtPiB1c3Iv YmluCj4gZHJ3eHIteHIteCAgMiAyMDAwMCAyMDAwMCA0MDk2IEFwciAxNSAgMjAyMCBib290Cj4g ZHJ3eHIteHIteCAgMyAyMDAwMCAyMDAwMCA0MDk2IE9jdCAxNiAxOToyNiBkZXYKPiBkcnd4ci14 ci14IDYxIDIwMDAwIDIwMDAwIDQwOTYgT2N0IDE2IDE5OjI2IGV0Ywo+IGRyd3hyLXhyLXggIDMg MjAwMDAgMjAwMDAgNDA5NiBTZXAgMjQgMDc6NDUgaG9tZQo+IGxyd3hyd3hyd3ggIDEgMjAwMDAg MjAwMDAgICAgNyBTZXAgMjQgMDc6NDMgbGliIC0+IHVzci9saWIKPiBscnd4cnd4cnd4ICAxIDIw MDAwIDIwMDAwICAgIDkgU2VwIDI0IDA3OjQzIGxpYjMyIC0+IHVzci9saWIzMgo+IGxyd3hyd3hy d3ggIDEgMjAwMDAgMjAwMDAgICAgOSBTZXAgMjQgMDc6NDMgbGliNjQgLT4gdXNyL2xpYjY0Cj4g bHJ3eHJ3eHJ3eCAgMSAyMDAwMCAyMDAwMCAgIDEwIFNlcCAyNCAwNzo0MyBsaWJ4MzIgLT4gdXNy L2xpYngzMgo+IGRyd3hyLXhyLXggIDIgMjAwMDAgMjAwMDAgNDA5NiBTZXAgMjQgMDc6NDMgbWVk aWEKPiBkcnd4ci14ci14ICAyIDIwMDAwIDIwMDAwIDQwOTYgU2VwIDI0IDA3OjQzIG1udAo+IGRy d3hyLXhyLXggIDIgMjAwMDAgMjAwMDAgNDA5NiBTZXAgMjQgMDc6NDMgb3B0Cj4gZHJ3eHIteHIt eCAgMiAyMDAwMCAyMDAwMCA0MDk2IEFwciAxNSAgMjAyMCBwcm9jCj4gZHJ3eC0tLS0tLSAgMiAy MDAwMCAyMDAwMCA0MDk2IFNlcCAyNCAwNzo0MyByb290Cj4gZHJ3eHIteHIteCAgMiAyMDAwMCAy MDAwMCA0MDk2IFNlcCAyNCAwNzo0NSBydW4KPiBscnd4cnd4cnd4ICAxIDIwMDAwIDIwMDAwICAg IDggU2VwIDI0IDA3OjQzIHNiaW4gLT4gdXNyL3NiaW4KPiBkcnd4ci14ci14ICAyIDIwMDAwIDIw MDAwIDQwOTYgU2VwIDI0IDA3OjQzIHNydgo+IGRyd3hyLXhyLXggIDIgMjAwMDAgMjAwMDAgNDA5 NiBBcHIgMTUgIDIwMjAgc3lzCj4gZHJ3eHJ3eHJ3dCAgMiAyMDAwMCAyMDAwMCA0MDk2IFNlcCAy NCAwNzo0NCB0bXAKPiBkcnd4ci14ci14IDEzIDIwMDAwIDIwMDAwIDQwOTYgU2VwIDI0IDA3OjQz IHVzcgo+IGRyd3hyLXhyLXggMTIgMjAwMDAgMjAwMDAgNDA5NiBTZXAgMjQgMDc6NDQgdmFyCj4g cm9vdEBmMi12bTp+IyAvbW91bnQtaWRtYXBwZWQgLS1tYXAtbW91bnQgYjoyMDAwMDoxMDAwMDox MDAwMDAgL3Zhci9saWIvbHhjL2YyL3Jvb3Rmcy8gL21udAo+IHJvb3RAZjItdm06fiMgbHMgLWFs IC9tbnQKPiB0b3RhbCA2OAo+IGRyd3hyLXhyLXggMTcgMTAwMDAgMTAwMDAgNDA5NiBTZXAgMjQg MDc6NDggLgo+IGRyd3hyLXhyLXggMzQgcm9vdCAgcm9vdCAgNDA5NiBPY3QgMjggMjI6MjQgLi4K PiBscnd4cnd4cnd4ICAxIDEwMDAwIDEwMDAwICAgIDcgU2VwIDI0IDA3OjQzIGJpbiAtPiB1c3Iv YmluCj4gZHJ3eHIteHIteCAgMiAxMDAwMCAxMDAwMCA0MDk2IEFwciAxNSAgMjAyMCBib290Cj4g ZHJ3eHIteHIteCAgMyAxMDAwMCAxMDAwMCA0MDk2IE9jdCAxNiAxOToyNiBkZXYKPiBkcnd4ci14 ci14IDYxIDEwMDAwIDEwMDAwIDQwOTYgT2N0IDE2IDE5OjI2IGV0Ywo+IGRyd3hyLXhyLXggIDMg MTAwMDAgMTAwMDAgNDA5NiBTZXAgMjQgMDc6NDUgaG9tZQo+IGxyd3hyd3hyd3ggIDEgMTAwMDAg MTAwMDAgICAgNyBTZXAgMjQgMDc6NDMgbGliIC0+IHVzci9saWIKPiBscnd4cnd4cnd4ICAxIDEw MDAwIDEwMDAwICAgIDkgU2VwIDI0IDA3OjQzIGxpYjMyIC0+IHVzci9saWIzMgo+IGxyd3hyd3hy d3ggIDEgMTAwMDAgMTAwMDAgICAgOSBTZXAgMjQgMDc6NDMgbGliNjQgLT4gdXNyL2xpYjY0Cj4g bHJ3eHJ3eHJ3eCAgMSAxMDAwMCAxMDAwMCAgIDEwIFNlcCAyNCAwNzo0MyBsaWJ4MzIgLT4gdXNy L2xpYngzMgo+IGRyd3hyLXhyLXggIDIgMTAwMDAgMTAwMDAgNDA5NiBTZXAgMjQgMDc6NDMgbWVk aWEKPiBkcnd4ci14ci14ICAyIDEwMDAwIDEwMDAwIDQwOTYgU2VwIDI0IDA3OjQzIG1udAo+IGRy d3hyLXhyLXggIDIgMTAwMDAgMTAwMDAgNDA5NiBTZXAgMjQgMDc6NDMgb3B0Cj4gZHJ3eHIteHIt eCAgMiAxMDAwMCAxMDAwMCA0MDk2IEFwciAxNSAgMjAyMCBwcm9jCj4gZHJ3eC0tLS0tLSAgMiAx MDAwMCAxMDAwMCA0MDk2IFNlcCAyNCAwNzo0MyByb290Cj4gZHJ3eHIteHIteCAgMiAxMDAwMCAx MDAwMCA0MDk2IFNlcCAyNCAwNzo0NSBydW4KPiBscnd4cnd4cnd4ICAxIDEwMDAwIDEwMDAwICAg IDggU2VwIDI0IDA3OjQzIHNiaW4gLT4gdXNyL3NiaW4KPiBkcnd4ci14ci14ICAyIDEwMDAwIDEw MDAwIDQwOTYgU2VwIDI0IDA3OjQzIHNydgo+IGRyd3hyLXhyLXggIDIgMTAwMDAgMTAwMDAgNDA5 NiBBcHIgMTUgIDIwMjAgc3lzCj4gZHJ3eHJ3eHJ3dCAgMiAxMDAwMCAxMDAwMCA0MDk2IFNlcCAy NCAwNzo0NCB0bXAKPiBkcnd4ci14ci14IDEzIDEwMDAwIDEwMDAwIDQwOTYgU2VwIDI0IDA3OjQz IHVzcgo+IGRyd3hyLXhyLXggMTIgMTAwMDAgMTAwMDAgNDA5NiBTZXAgMjQgMDc6NDQgdmFyCj4g cm9vdEBmMi12bTp+IyBseGMtc3RhcnQgZjIgIyB1c2VzIC9tbnQgYXMgcm9vdGZzCj4gcm9vdEBm Mi12bTp+IyBseGMtYXR0YWNoIGYyIC0tIGNhdCAvcHJvYy8xL3VpZF9tYXAKPiAgICAgICAgICAw ICAgICAgMTAwMDAgICAgICAxMDAwMAo+IHJvb3RAZjItdm06fiMgbHhjLWF0dGFjaCBmMiAtLSBj YXQgL3Byb2MvMS9naWRfbWFwCj4gICAgICAgICAgMCAgICAgIDEwMDAwICAgICAgMTAwMDAKPiBy b290QGYyLXZtOn4jIGx4Yy1hdHRhY2ggZjIgLS0gbHMgLWFsIC8KPiB0b3RhbCA1Mgo+IGRyd3hy LXhyLXggIDE3IHJvb3QgICByb290ICAgIDQwOTYgU2VwIDI0IDA3OjQ4IC4KPiBkcnd4ci14ci14 ICAxNyByb290ICAgcm9vdCAgICA0MDk2IFNlcCAyNCAwNzo0OCAuLgo+IGxyd3hyd3hyd3ggICAx IHJvb3QgICByb290ICAgICAgIDcgU2VwIDI0IDA3OjQzIGJpbiAtPiB1c3IvYmluCj4gZHJ3eHIt eHIteCAgIDIgcm9vdCAgIHJvb3QgICAgNDA5NiBBcHIgMTUgIDIwMjAgYm9vdAo+IGRyd3hyLXhy LXggICA1IHJvb3QgICByb290ICAgICA1MDAgT2N0IDI4IDIzOjM5IGRldgo+IGRyd3hyLXhyLXgg IDYxIHJvb3QgICByb290ICAgIDQwOTYgT2N0IDI4IDIzOjM5IGV0Ywo+IGRyd3hyLXhyLXggICAz IHJvb3QgICByb290ICAgIDQwOTYgU2VwIDI0IDA3OjQ1IGhvbWUKPiBscnd4cnd4cnd4ICAgMSBy b290ICAgcm9vdCAgICAgICA3IFNlcCAyNCAwNzo0MyBsaWIgLT4gdXNyL2xpYgo+IGxyd3hyd3hy d3ggICAxIHJvb3QgICByb290ICAgICAgIDkgU2VwIDI0IDA3OjQzIGxpYjMyIC0+IHVzci9saWIz Mgo+IGxyd3hyd3hyd3ggICAxIHJvb3QgICByb290ICAgICAgIDkgU2VwIDI0IDA3OjQzIGxpYjY0 IC0+IHVzci9saWI2NAo+IGxyd3hyd3hyd3ggICAxIHJvb3QgICByb290ICAgICAgMTAgU2VwIDI0 IDA3OjQzIGxpYngzMiAtPiB1c3IvbGlieDMyCj4gZHJ3eHIteHIteCAgIDIgcm9vdCAgIHJvb3Qg ICAgNDA5NiBTZXAgMjQgMDc6NDMgbWVkaWEKPiBkcnd4ci14ci14ICAgMiByb290ICAgcm9vdCAg ICA0MDk2IFNlcCAyNCAwNzo0MyBtbnQKPiBkcnd4ci14ci14ICAgMiByb290ICAgcm9vdCAgICA0 MDk2IFNlcCAyNCAwNzo0MyBvcHQKPiBkci14ci14ci14IDIzMiBub2JvZHkgbm9ncm91cCAgICAw IE9jdCAyOCAyMzozOSBwcm9jCj4gZHJ3eC0tLS0tLSAgIDIgcm9vdCAgIHJvb3QgICAgNDA5NiBP Y3QgMjggMjM6NDEgcm9vdAo+IGRyd3hyLXhyLXggIDEyIHJvb3QgICByb290ICAgICAzNjAgT2N0 IDI4IDIzOjM5IHJ1bgo+IGxyd3hyd3hyd3ggICAxIHJvb3QgICByb290ICAgICAgIDggU2VwIDI0 IDA3OjQzIHNiaW4gLT4gdXNyL3NiaW4KPiBkcnd4ci14ci14ICAgMiByb290ICAgcm9vdCAgICA0 MDk2IFNlcCAyNCAwNzo0MyBzcnYKPiBkci14ci14ci14ICAxMyBub2JvZHkgbm9ncm91cCAgICAw IE9jdCAyOCAyMzozOSBzeXMKPiBkcnd4cnd4cnd0ICAxMSByb290ICAgcm9vdCAgICA0MDk2IE9j dCAyOCAyMzo0MCB0bXAKPiBkcnd4ci14ci14ICAxMyByb290ICAgcm9vdCAgICA0MDk2IFNlcCAy NCAwNzo0MyB1c3IKPiBkcnd4ci14ci14ICAxMiByb290ICAgcm9vdCAgICA0MDk2IFNlcCAyNCAw Nzo0NCB2YXIKPiByb290QGYyLXZtOn4jIGx4Yy1hdHRhY2ggZjIgLS0gbHMgLWFsIC9teS1maWxl Cj4gLXJ3LXItLXItLSAxIHJvb3Qgcm9vdCAwIE9jdCAyOCAyMzo0MyAvbXktZmlsZQo+IHJvb3RA ZjItdm06fiMgbHMgLWFsIC92YXIvbGliL2x4Yy9mMi9yb290ZnMvbXktZmlsZQo+IC1ydy1yLS1y LS0gMSAyMDAwMCAyMDAwMCAwIE9jdCAyOCAyMzo0MyAvdmFyL2xpYi9seGMvZjIvcm9vdGZzL215 LWZpbGUKPiAKPiBJJ2QgbGlrZSB0byBzYXkgdGhhbmtzIHRvOgo+IEFsIGZvciBwb2ludGluZyBt ZSBpbnRvIHRoZSBkaXJlY3Rpb24gdG8gYXZvaWQgaW5vZGUgYWxpYXMgaXNzdWVzIGR1cmluZwo+ IGxvb2t1cC4gRGF2aWQgZm9yIHZhcmlvdXMgZGlzY3Vzc2lvbnMgYXJvdW5kIHRoaXMuIENocmlz dG9waCBmb3IgcHJvdmluZwo+IGEgZmlyc3QgcHJvcGVyIHJldmlldyBhbmQgZm9yIGJlaW5nIGlu dm9sdmVkIGluIHRoZSBvcmlnaW5hbCBpZGVhLiBUeWNobwo+IGZvciBoZWxwaW5nIHdpdGggdGhp cyBzZXJpZXMgYW5kIG9uIGZ1dHVyZSBwYXRjaGVzIHRvIGNvbnZlcnQKPiBmaWxlc3lzdGVtcy4g QWxiYW4gQ3JlcXV5IGFuZCB0aGUgS2ludm9sayBsb2NhdGVkIGp1c3QgYSBmZXcgc3RyZWV0cwo+ IGF3YXkgZnJvbSBtZSBpbiBCZXJsaW4gZm9yIHByb3ZpZGluZyB1c2UtY2FzZSBkaXNjdXNzaW9u cyBhbmQgd3JpdGluZwo+IHBhdGNoZXMgZm9yIGNvbnRhaW5lcmQhIFN0w6lwaGFuZSBmb3IgaGlz IGludmFsdWFibGUgaW5wdXQgb24gbWFueSB0aGluZ3MKPiBhbmQgbGV2ZWwgaGVhZCBhbmQgZW5h YmxpbmcgbWUgdG8gd29yayBvbiB0aGlzLiBBbWlyIGZvciBleHBsYWluaW5nIGFuZAo+IGRpc2N1 c3NpbmcgYXNwZWN0cyBvZiBvdmVybGF5ZnMgd2l0aCBtZS4gSSdkIGxpa2UgdG8gZXNwZWNpYWxs eSB0aGFuawo+IFNldGggRm9yc2hlZSBiZWNhdXNlIGhlIHByb3ZpZGVkIGEgbG90IG9mIGdvb2Qg YW5hbHlzaXMsIHN1Z2dlc3Rpb25zLAo+IGFuZCBwYXJ0aWNpcGF0ZWQgaW4gc2hvcnQtbm90aWNl IGRpc2N1c3Npb25zIGluIGJvdGggY2hhdCBhbmQgdmlkZW8gZm9yCj4gc29tZSBuaXR0eS1ncml0 dHkgdGVjaG5pY2FsIGRldGFpbHMuCj4gCj4gVGhpcyBzZXJpZXMgY2FuIGJlIGZvdW5kIGFuZCBw dWxsZWQgZnJvbSB0aGUgdGhyZWUgdXN1YWwgbG9jYXRpb25zOgo+IGh0dHBzOi8vZ2l0Lmtlcm5l bC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2JyYXVuZXIvbGludXguZ2l0L2xvZy8/aD1p ZG1hcHBlZF9tb3VudHMKPiBodHRwczovL2dpdGh1Yi5jb20vYnJhdW5lci9saW51eC90cmVlL2lk bWFwcGVkX21vdW50cwo+IGh0dHBzOi8vZ2l0bGFiLmNvbS9icmF1bmVyL2xpbnV4Ly0vY29tbWl0 cy9pZG1hcHBlZF9tb3VudHMKPiAKPiBUaGFua3MhCj4gQ2hyaXN0aWFuCj4gCj4gQ2hyaXN0aWFu IEJyYXVuZXIgKDM3KToKPiAgIG5hbWVzcGFjZTogdGFrZSBsb2NrX21vdW50X2hhc2goKSBkaXJl Y3RseSB3aGVuIGNoYW5naW5nIGZsYWdzCj4gICBtb3VudDogbWFrZSB7bG9jayx1bmxvY2t9X21v dW50X2hhc2goKSBzdGF0aWMKPiAgIG5hbWVzcGFjZTogb25seSB0YWtlIHJlYWQgbG9jayBpbiBk b19yZWNvbmZpZ3VyZV9tbnQoKQo+ICAgZnM6IGFkZCBtb3VudF9zZXRhdHRyKCkKPiAgIHRlc3Rz OiBhZGQgbW91bnRfc2V0YXR0cigpIHNlbGZ0ZXN0cwo+ICAgZnM6IGFkZCBpZCB0cmFuc2xhdGlv biBoZWxwZXJzCj4gICBtb3VudDogYXR0YWNoIG1hcHBpbmdzIHRvIG1vdW50cwo+ICAgY2FwYWJp bGl0eTogaGFuZGxlIGlkbWFwcGVkIG1vdW50cwo+ICAgbmFtZWk6IGFkZCBpZG1hcHBlZCBtb3Vu dCBhd2FyZSBwZXJtaXNzaW9uIGhlbHBlcnMKPiAgIGlub2RlOiBhZGQgaWRtYXBwZWQgbW91bnQg YXdhcmUgaW5pdCBhbmQgcGVybWlzc2lvbiBoZWxwZXJzCj4gICBhdHRyOiBoYW5kbGUgaWRtYXBw ZWQgbW91bnRzCj4gICBhY2w6IGhhbmRsZSBpZG1hcHBlZCBtb3VudHMKPiAgIGNvbW1vbmNhcDog aGFuZGxlIGlkbWFwcGVkIG1vdW50cwo+ICAgc3RhdDogaGFuZGxlIGlkbWFwcGVkIG1vdW50cwo+ ICAgbmFtZWk6IGhhbmRsZSBpZG1hcHBlZCBtb3VudHMgaW4gbWF5XyooKSBoZWxwZXJzCj4gICBu YW1laTogaW50cm9kdWNlIHN0cnVjdCByZW5hbWVkYXRhCj4gICBuYW1laTogcHJlcGFyZSBmb3Ig aWRtYXBwZWQgbW91bnRzCj4gICBvcGVuOiBoYW5kbGUgaWRtYXBwZWQgbW91bnRzIGluIGRvX3Ry dW5jYXRlKCkKPiAgIG9wZW46IGhhbmRsZSBpZG1hcHBlZCBtb3VudHMKPiAgIGFmX3VuaXg6IGhh bmRsZSBpZG1hcHBlZCBtb3VudHMKPiAgIHV0aW1lczogaGFuZGxlIGlkbWFwcGVkIG1vdW50cwo+ ICAgZmNudGw6IGhhbmRsZSBpZG1hcHBlZCBtb3VudHMKPiAgIG5vdGlmeTogaGFuZGxlIGlkbWFw cGVkIG1vdW50cwo+ICAgaW5pdDogaGFuZGxlIGlkbWFwcGVkIG1vdW50cwo+ICAgaW9jdGw6IGhh bmRsZSBpZG1hcHBlZCBtb3VudHMKPiAgIHdvdWxkX2R1bXA6IGhhbmRsZSBpZG1hcHBlZCBtb3Vu dHMKPiAgIGV4ZWM6IGhhbmRsZSBpZG1hcHBlZCBtb3VudHMKPiAgIGZzOiBhZGQgaGVscGVycyBm b3IgaWRtYXAgbW91bnRzCj4gICBhcHBhcm1vcjogaGFuZGxlIGlkbWFwcGVkIG1vdW50cwo+ICAg YXVkaXQ6IGhhbmRsZSBpZG1hcHBlZCBtb3VudHMKPiAgIGltYTogaGFuZGxlIGlkbWFwcGVkIG1v dW50cwo+ICAgZmF0OiBoYW5kbGUgaWRtYXBwZWQgbW91bnRzCj4gICBleHQ0OiBzdXBwb3J0IGlk bWFwcGVkIG1vdW50cwo+ICAgZWNyeXB0ZnM6IGRvIG5vdCBtb3VudCBvbiB0b3Agb2YgaWRtYXBw ZWQgbW91bnRzCj4gICBvdmVybGF5ZnM6IGRvIG5vdCBtb3VudCBvbiB0b3Agb2YgaWRtYXBwZWQg bW91bnRzCj4gICBmczogaW50cm9kdWNlIE1PVU5UX0FUVFJfSURNQVAKPiAgIHRlc3RzOiBhZGQg dmZzL2lkbWFwcGVkIG1vdW50cyB0ZXN0IHN1aXRlCj4gCj4gVHljaG8gQW5kZXJzZW4gKDIpOgo+ ICAgeGF0dHI6IGhhbmRsZSBpZG1hcHBlZCBtb3VudHMKPiAgIHNlbGZ0ZXN0czogYWRkIGlkbWFw cGVkIG1vdW50cyB4YXR0ciBzZWxmdGVzdAo+IAo+ICBEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1z L2xvY2tpbmcucnN0ICAgICAgICAgfCAgICA2ICstCj4gIERvY3VtZW50YXRpb24vZmlsZXN5c3Rl bXMvcG9ydGluZy5yc3QgICAgICAgICB8ICAgIDIgKwo+ICBEb2N1bWVudGF0aW9uL2ZpbGVzeXN0 ZW1zL3Zmcy5yc3QgICAgICAgICAgICAgfCAgIDE3ICstCj4gIGFyY2gvYWxwaGEva2VybmVsL3N5 c2NhbGxzL3N5c2NhbGwudGJsICAgICAgICB8ICAgIDEgKwo+ICBhcmNoL2FybS90b29scy9zeXNj YWxsLnRibCAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgYXJjaC9hcm02NC9pbmNsdWRl L2FzbS91bmlzdGQzMi5oICAgICAgICAgICAgIHwgICAgMiArCj4gIGFyY2gvaWE2NC9rZXJuZWwv c3lzY2FsbHMvc3lzY2FsbC50YmwgICAgICAgICB8ICAgIDEgKwo+ICBhcmNoL202OGsva2VybmVs L3N5c2NhbGxzL3N5c2NhbGwudGJsICAgICAgICAgfCAgICAxICsKPiAgYXJjaC9taWNyb2JsYXpl L2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibCAgIHwgICAgMSArCj4gIGFyY2gvbWlwcy9rZXJu ZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsICAgICB8ICAgIDEgKwo+ICBhcmNoL21pcHMva2Vy bmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibCAgICAgfCAgICAxICsKPiAgYXJjaC9taXBzL2tl cm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwgICAgIHwgICAgMSArCj4gIGFyY2gvcGFyaXNj L2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibCAgICAgICB8ICAgIDEgKwo+ICBhcmNoL3Bvd2Vy cGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsICAgICAgfCAgICAxICsKPiAgYXJjaC9wb3dl cnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL2lub2RlLmMgICAgIHwgICAgNSArLQo+ICBhcmNoL3Mz OTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsICAgICAgICAgfCAgICAxICsKPiAgYXJjaC9z aC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwgICAgICAgICAgIHwgICAgMSArCj4gIGFyY2gv c3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsICAgICAgICB8ICAgIDEgKwo+ICBhcmNo L3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibCAgICAgICAgfCAgICAxICsKPiAgYXJj aC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwgICAgICAgIHwgICAgMSArCj4gIGFy Y2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibCAgICAgICB8ICAgIDEgKwo+ICBk cml2ZXJzL2FuZHJvaWQvYmluZGVyZnMuYyAgICAgICAgICAgICAgICAgICAgfCAgICAzICstCj4g IGRyaXZlcnMvYmFzZS9kZXZ0bXBmcy5jICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKy0K PiAgZnMvOXAvYWNsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNyAr LQo+ICBmcy85cC92OWZzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAz ICstCj4gIGZzLzlwL3Y5ZnNfdmZzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDIgKy0KPiAgZnMvOXAvdmZzX2lub2RlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAzMiArLQo+ICBmcy85cC92ZnNfaW5vZGVfZG90bC5jICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDM0ICstCj4gIGZzLzlwL3hhdHRyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDEgKwo+ICBmcy9hZGZzL2FkZnMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAzICstCj4gIGZzL2FkZnMvaW5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIDUgKy0KPiAgZnMvYWZmcy9hZmZzLmggICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAxMCArLQo+ICBmcy9hZmZzL2lub2RlLmMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICA3ICstCj4gIGZzL2FmZnMvbmFtZWkuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMTUgKy0KPiAgZnMvYWZzL2Rpci5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAzNCArLQo+ICBmcy9hZnMvaW5vZGUuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICA1ICstCj4gIGZzL2Fmcy9pbnRlcm5hbC5oICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KPiAgZnMvYWZzL3NlY3VyaXR5LmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQo+ICBmcy9hZnMveGF0dHIuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKPiAgZnMvYXR0ci5jICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICA3OCArLQo+ICBmcy9hdXRvZnMvcm9vdC5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEzICstCj4gIGZzL2JhZF9pbm9kZS5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzEgKy0KPiAgZnMvYmZzL2Rpci5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArLQo+ICBmcy9idHJmcy9hY2wuYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA1ICstCj4gIGZzL2J0cmZzL2N0cmVl LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KPiAgZnMvYnRyZnMvaW5v ZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0MSArLQo+ICBmcy9idHJmcy9p b2N0bC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI1ICstCj4gIGZzL2J0cmZz L3Rlc3RzL2J0cmZzLXRlc3RzLmMgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KPiAgZnMvYnRy ZnMveGF0dHIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCj4gIGZzL2Nh Y2hlZmlsZXMvaW50ZXJmYWNlLmMgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KPiAgZnMv Y2FjaGVmaWxlcy9uYW1laS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOSArLQo+ICBm cy9jYWNoZWZpbGVzL3hhdHRyLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE2ICstCj4g IGZzL2NlcGgvYWNsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0K PiAgZnMvY2VwaC9kaXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMyAr LQo+ICBmcy9jZXBoL2lub2RlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEz ICstCj4gIGZzL2NlcGgvc3VwZXIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDggKy0KPiAgZnMvY2VwaC94YXR0ci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgMSArCj4gIGZzL2NpZnMvY2lmc2ZzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgIDQgKy0KPiAgZnMvY2lmcy9jaWZzZnMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAxOCArLQo+ICBmcy9jaWZzL2Rpci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICA4ICstCj4gIGZzL2NpZnMvaW5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMjIgKy0KPiAgZnMvY2lmcy9saW5rLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgMyArLQo+ICBmcy9jaWZzL3hhdHRyLmMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAxICsKPiAgZnMvY29kYS9jb2RhX2xpbnV4LmggICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgNCArLQo+ICBmcy9jb2RhL2Rpci5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDE4ICstCj4gIGZzL2NvZGEvaW5vZGUuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgIDUgKy0KPiAgZnMvY29kYS9waW9jdGwuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgNiArLQo+ICBmcy9jb25maWdmcy9jb25maWdmc19pbnRlcm5h bC5oICAgICAgICAgICAgICAgfCAgICA3ICstCj4gIGZzL2NvbmZpZ2ZzL2Rpci5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KPiAgZnMvY29uZmlnZnMvaW5vZGUuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgNSArLQo+ICBmcy9jb25maWdmcy9zeW1saW5rLmMg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA1ICstCj4gIGZzL2NvcmVkdW1wLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKy0KPiAgZnMvY3J5cHRvL3BvbGljeS5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQo+ICBmcy9kZWJ1Z2ZzL2lub2Rl LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICstCj4gIGZzL2VjcnlwdGZzL2Ny eXB0by5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KPiAgZnMvZWNyeXB0ZnMv aW5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3NCArLQo+ICBmcy9lY3J5cHRm cy9tYWluLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICsKPiAgZnMvZWNyeXB0 ZnMvbW1hcC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQo+ICBmcy9lZml2 YXJmcy9maWxlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCj4gIGZzL2Vm aXZhcmZzL2lub2RlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KPiAgZnMv ZXJvZnMvaW5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQo+ICBm cy9leGVjLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICstCj4g IGZzL2V4ZmF0L2V4ZmF0X2ZzLmggICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0K PiAgZnMvZXhmYXQvZmlsZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSAr LQo+ICBmcy9leGZhdC9uYW1laS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEz ICstCj4gIGZzL2V4dDIvYWNsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDUgKy0KPiAgZnMvZXh0Mi9hY2wuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgMyArLQo+ICBmcy9leHQyL2V4dDIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAyICstCj4gIGZzL2V4dDIvaWFsbG9jLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDIgKy0KPiAgZnMvZXh0Mi9pbm9kZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAxMSArLQo+ICBmcy9leHQyL2lvY3RsLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICA2ICstCj4gIGZzL2V4dDIvbmFtZWkuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMjIgKy0KPiAgZnMvZXh0Mi94YXR0cl9zZWN1cml0eS5jICAgICAgICAgICAg ICAgICAgICAgIHwgICAgMSArCj4gIGZzL2V4dDIveGF0dHJfdHJ1c3RlZC5jICAgICAgICAgICAg ICAgICAgICAgICB8ICAgIDEgKwo+ICBmcy9leHQyL3hhdHRyX3VzZXIuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAxICsKPiAgZnMvZXh0NC9LY29uZmlnICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgOSArCj4gIGZzL2V4dDQvYWNsLmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgIDUgKy0KPiAgZnMvZXh0NC9hY2wuaCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgMyArLQo+ICBmcy9leHQ0L2V4dDQuaCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDE1ICstCj4gIGZzL2V4dDQvaWFsbG9jLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKy0KPiAgZnMvZXh0NC9pbm9kZS5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAxNCArLQo+ICBmcy9leHQ0L2lvY3RsLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE4ICstCj4gIGZzL2V4dDQvbmFtZWkuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNTIgKy0KPiAgZnMvZXh0NC9zdXBlci5jICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArLQo+ICBmcy9leHQ0L3hhdHRyX2h1 cmQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgZnMvZXh0NC94YXR0cl9z ZWN1cml0eS5jICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCj4gIGZzL2V4dDQveGF0dHJf dHJ1c3RlZC5jICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwo+ICBmcy9leHQ0L3hhdHRy X3VzZXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgZnMvZjJmcy9hY2wu YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNSArLQo+ICBmcy9mMmZzL2Fj bC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICstCj4gIGZzL2YyZnMv ZjJmcy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KPiAgZnMvZjJm cy9maWxlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMyArLQo+ICBmcy9m MmZzL25hbWVpLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI2ICstCj4gIGZz L2YyZnMveGF0dHIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KPiAg ZnMvZmF0L2ZhdC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArLQo+ ICBmcy9mYXQvZmlsZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIwICst Cj4gIGZzL2ZhdC9uYW1laV9tc2Rvcy5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTUg Ky0KPiAgZnMvZmF0L25hbWVpX3ZmYXQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx NSArLQo+ICBmcy9mY250bC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAzICstCj4gIGZzL2Z1c2UvYWNsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgIDMgKy0KPiAgZnMvZnVzZS9kaXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICA0MSArLQo+ICBmcy9mdXNlL2Z1c2VfaS5oICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICA0ICstCj4gIGZzL2Z1c2UveGF0dHIuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIDIgKwo+ICBmcy9nZnMyL2FjbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICA1ICstCj4gIGZzL2dmczIvYWNsLmggICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgIDMgKy0KPiAgZnMvZ2ZzMi9maWxlLmMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgNCArLQo+ICBmcy9nZnMyL2lub2RlLmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDU0ICstCj4gIGZzL2dmczIvaW5vZGUuaCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgIDIgKy0KPiAgZnMvZ2ZzMi94YXR0ci5jICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgMSArCj4gIGZzL2hmcy9hdHRyLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgIDEgKwo+ICBmcy9oZnMvZGlyLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDEzICstCj4gIGZzL2hmcy9oZnNfZnMuaCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KPiAgZnMvaGZzL2lub2RlLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgNyArLQo+ICBmcy9oZnNwbHVzL2Rpci5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI1ICstCj4gIGZzL2hmc3BsdXMvaW5vZGUuYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKy0KPiAgZnMvaGZzcGx1cy9pb2N0bC5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQo+ICBmcy9oZnNwbHVzL3hhdHRy LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgZnMvaGZzcGx1cy94YXR0 cl9zZWN1cml0eS5jICAgICAgICAgICAgICAgICAgIHwgICAgMSArCj4gIGZzL2hmc3BsdXMveGF0 dHJfdHJ1c3RlZC5jICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwo+ICBmcy9oZnNwbHVzL3hh dHRyX3VzZXIuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgZnMvaG9zdGZzL2hv c3Rmc19rZXJuLmMgICAgICAgICAgICAgICAgICAgICAgIHwgICAzMSArLQo+ICBmcy9ocGZzL2hw ZnNfZm4uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCj4gIGZzL2hwZnMv aW5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKy0KPiAgZnMvaHBm cy9uYW1laS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMCArLQo+ICBmcy9o dWdldGxiZnMvaW5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMxICstCj4gIGZz L2luaXQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjEgKy0KPiAg ZnMvaW5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzOCArLQo+ ICBmcy9pbnRlcm5hbC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICsK PiAgZnMvamZmczIvYWNsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNSAr LQo+ICBmcy9qZmZzMi9hY2wuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAz ICstCj4gIGZzL2pmZnMyL2Rpci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MzIgKy0KPiAgZnMvamZmczIvZnMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgNyArLQo+ICBmcy9qZmZzMi9vcy1saW51eC5oICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAyICstCj4gIGZzL2pmZnMyL3NlY3VyaXR5LmMgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDEgKwo+ICBmcy9qZmZzMi94YXR0cl90cnVzdGVkLmMgICAgICAgICAgICAgICAgICAg ICAgfCAgICAxICsKPiAgZnMvamZmczIveGF0dHJfdXNlci5jICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgMSArCj4gIGZzL2pmcy9hY2wuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIDUgKy0KPiAgZnMvamZzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgOSArLQo+ICBmcy9qZnMvaW9jdGwuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAyICstCj4gIGZzL2pmcy9qZnNfYWNsLmggICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgIDMgKy0KPiAgZnMvamZzL2pmc19pbm9kZS5jICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgMiArLQo+ICBmcy9qZnMvamZzX2lub2RlLmggICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAyICstCj4gIGZzL2pmcy9uYW1laS5jICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMjEgKy0KPiAgZnMvamZzL3hhdHRyLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgMiArCj4gIGZzL2tlcm5mcy9kaXIuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKy0KPiAgZnMva2VybmZzL2lub2RlLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAxNSArLQo+ICBmcy9rZXJuZnMva2VybmZzLWludGVy bmFsLmggICAgICAgICAgICAgICAgICAgfCAgICA1ICstCj4gIGZzL2xpYmZzLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjAgKy0KPiAgZnMvbWluaXgvYml0bWFwLmMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQo+ICBmcy9taW5peC9maWxlLmMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA3ICstCj4gIGZzL21pbml4L2lub2Rl LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KPiAgZnMvbWluaXgvbmFt ZWkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNSArLQo+ICBmcy9tb3VudC5o ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwIC0KPiAgZnMvbmFtZWku YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMxNyArLQo+ICBmcy9uYW1l c3BhY2UuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDczICsrLQo+ICBmcy9u ZnMvZGlyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIzICstCj4gIGZz L25mcy9pbm9kZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KPiAg ZnMvbmZzL2ludGVybmFsLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMCArLQo+ ICBmcy9uZnMvbmFtZXNwYWNlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA3ICst Cj4gIGZzL25mcy9uZnMzX2ZzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMg Ky0KPiAgZnMvbmZzL25mczNhY2wuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg MyArLQo+ICBmcy9uZnMvbmZzNHByb2MuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAzICsKPiAgZnMvbmZzZC9uZnMyYWNsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgNCArLQo+ICBmcy9uZnNkL25mczNhY2wuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICA0ICstCj4gIGZzL25mc2QvbmZzNGFjbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDQgKy0KPiAgZnMvbmZzZC9uZnM0cmVjb3Zlci5jICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgNiArLQo+ICBmcy9uZnNkL25mc2ZoLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAyICstCj4gIGZzL25mc2QvbmZzcHJvYy5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgIDIgKy0KPiAgZnMvbmZzZC92ZnMuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICA0NyArLQo+ICBmcy9uaWxmczIvaW5vZGUuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDEzICstCj4gIGZzL25pbGZzMi9pb2N0bC5jICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgIDIgKy0KPiAgZnMvbmlsZnMyL25hbWVpLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAyMCArLQo+ICBmcy9uaWxmczIvbmlsZnMuaCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICA0ICstCj4gIGZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlm eV91c2VyLmMgICAgICAgICAgICB8ICAgIDIgKy0KPiAgZnMvbm90aWZ5L2lub3RpZnkvaW5vdGlm eV91c2VyLmMgICAgICAgICAgICAgIHwgICAgMyArLQo+ICBmcy9udGZzL2lub2RlLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCj4gIGZzL29jZnMyL2FjbC5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KPiAgZnMvb2NmczIvYWNsLmggICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArLQo+ICBmcy9vY2ZzMi9kbG1mcy9k bG1mcy5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE3ICstCj4gIGZzL29jZnMyL2ZpbGUu YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTMgKy0KPiAgZnMvb2NmczIvZmls ZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNSArLQo+ICBmcy9vY2ZzMi9p b2N0bC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCj4gIGZzL29jZnMy L25hbWVpLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjEgKy0KPiAgZnMvb2Nm czIvcmVmY291bnR0cmVlLmMgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQo+ICBmcy9v Y2ZzMi94YXR0ci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKPiAgZnMv b21mcy9kaXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMyArLQo+ICBm cy9vbWZzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA3ICstCj4g IGZzL29tZnMvaW5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0K PiAgZnMvb3Blbi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1MiAr LQo+ICBmcy9vcmFuZ2Vmcy9hY2wuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA1 ICstCj4gIGZzL29yYW5nZWZzL2lub2RlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MTUgKy0KPiAgZnMvb3JhbmdlZnMvbmFtZWkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAxMiArLQo+ICBmcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy1rZXJuZWwuaCAgICAgICAgICAgICAgICAg fCAgICA3ICstCj4gIGZzL29yYW5nZWZzL3hhdHRyLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDEgKwo+ICBmcy9vdmVybGF5ZnMvY29weV91cC5jICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDIwICstCj4gIGZzL292ZXJsYXlmcy9kaXIuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMzEgKy0KPiAgZnMvb3ZlcmxheWZzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgNiArLQo+ICBmcy9vdmVybGF5ZnMvaW5vZGUuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDIxICstCj4gIGZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaCAgICAgICAgICAg ICAgICAgICAgICB8ICAgNDAgKy0KPiAgZnMvb3ZlcmxheWZzL3N1cGVyLmMgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAyNyArLQo+ICBmcy9vdmVybGF5ZnMvdXRpbC5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICA0ICstCj4gIGZzL3Bvc2l4X2FjbC5jICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgNzggKy0KPiAgZnMvcHJvYy9iYXNlLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAyNCArLQo+ICBmcy9wcm9jL2ZkLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCj4gIGZzL3Byb2MvZmQuaCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KPiAgZnMvcHJvYy9nZW5lcmljLmMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArLQo+ICBmcy9wcm9jL2ludGVybmFsLmgg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCj4gIGZzL3Byb2MvcHJvY19uZXQu YyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KPiAgZnMvcHJvYy9wcm9jX3N5 c2N0bC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArLQo+ICBmcy9wcm9jL3Jvb3Qu YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCj4gIGZzL3Byb2NfbmFt ZXNwYWNlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwo+ICBmcy9yYW1mcy9m aWxlLW5vbW11LmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICstCj4gIGZzL3JhbWZz L2lub2RlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKy0KPiAgZnMvcmVp c2VyZnMvYWNsLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArLQo+ICBmcy9y ZWlzZXJmcy9pbm9kZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA3ICstCj4gIGZz L3JlaXNlcmZzL2lvY3RsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KPiAg ZnMvcmVpc2VyZnMvbmFtZWkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMSArLQo+ ICBmcy9yZWlzZXJmcy9yZWlzZXJmcy5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICst Cj4gIGZzL3JlaXNlcmZzL3hhdHRyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIg Ky0KPiAgZnMvcmVpc2VyZnMveGF0dHIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg MiArLQo+ICBmcy9yZWlzZXJmcy94YXR0cl9hY2wuYyAgICAgICAgICAgICAgICAgICAgICAgfCAg ICA3ICstCj4gIGZzL3JlaXNlcmZzL3hhdHRyX3NlY3VyaXR5LmMgICAgICAgICAgICAgICAgICB8 ICAgIDMgKy0KPiAgZnMvcmVpc2VyZnMveGF0dHJfdHJ1c3RlZC5jICAgICAgICAgICAgICAgICAg IHwgICAgMyArLQo+ICBmcy9yZWlzZXJmcy94YXR0cl91c2VyLmMgICAgICAgICAgICAgICAgICAg ICAgfCAgICAzICstCj4gIGZzL3JlbWFwX3JhbmdlLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIDcgKy0KPiAgZnMvc3RhdC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAxMCArLQo+ICBmcy9zeXN2L2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICA3ICstCj4gIGZzL3N5c3YvaWFsbG9jLmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgIDIgKy0KPiAgZnMvc3lzdi9pdHJlZS5jICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgMiArLQo+ICBmcy9zeXN2L25hbWVpLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDIxICstCj4gIGZzL3RyYWNlZnMvaW5vZGUuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KPiAgZnMvdWJpZnMvZGlyLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAyOSArLQo+ICBmcy91Ymlmcy9maWxlLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICA1ICstCj4gIGZzL3ViaWZzL2lvY3RsLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KPiAgZnMvdWJpZnMvdWJpZnMuaCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArLQo+ICBmcy91Ymlmcy94YXR0ci5jICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgZnMvdWRmL2ZpbGUuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArLQo+ICBmcy91ZGYvaWFsbG9jLmMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCj4gIGZzL3VkZi9uYW1laS5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjQgKy0KPiAgZnMvdWRmL3N5bWxp bmsuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQo+ICBmcy91ZnMvaWFs bG9jLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCj4gIGZzL3Vmcy9p bm9kZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKy0KPiAgZnMvdWZz L25hbWVpLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOSArLQo+ICBmcy91 ZnMvdWZzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICstCj4gIGZz L3V0aW1lcy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KPiAg ZnMvdmJveHNmL2Rpci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArLQo+ ICBmcy92Ym94c2YvdXRpbHMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA1ICst Cj4gIGZzL3Zib3hzZi92ZnNtb2QuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMg Ky0KPiAgZnMvdmVyaXR5L2VuYWJsZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg MiArLQo+ICBmcy94YXR0ci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MTM2ICstCj4gIGZzL3hmcy94ZnNfYWNsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgIDUgKy0KPiAgZnMveGZzL3hmc19hY2wuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgMyArLQo+ICBmcy94ZnMveGZzX2lvY3RsLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICA0ICstCj4gIGZzL3hmcy94ZnNfaW9wcy5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgNTUgKy0KPiAgZnMveGZzL3hmc194YXR0ci5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgMyArLQo+ICBmcy96b25lZnMvc3VwZXIuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICA5ICstCj4gIGluY2x1ZGUvbGludXgvYXVkaXQuaCAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMTAgKy0KPiAgaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmggICAgICAg ICAgICAgICAgICAgIHwgICAxNCArLQo+ICBpbmNsdWRlL2xpbnV4L2ZzLmggICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMTQ1ICstCj4gIGluY2x1ZGUvbGludXgvaW1hLmggICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMTUgKy0KPiAgaW5jbHVkZS9saW51eC9sc21faG9va19kZWZz LmggICAgICAgICAgICAgICAgIHwgICAxNSArLQo+ICBpbmNsdWRlL2xpbnV4L2xzbV9ob29rcy5o ICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgaW5jbHVkZS9saW51eC9tb3VudC5oICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAxNCArLQo+ICBpbmNsdWRlL2xpbnV4L25mc19mcy5o ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCj4gIGluY2x1ZGUvbGludXgvcG9zaXhf YWNsLmggICAgICAgICAgICAgICAgICAgICB8ICAgMTUgKy0KPiAgaW5jbHVkZS9saW51eC9wb3Np eF9hY2xfeGF0dHIuaCAgICAgICAgICAgICAgIHwgICAxMiArLQo+ICBpbmNsdWRlL2xpbnV4L3Nl Y3VyaXR5LmggICAgICAgICAgICAgICAgICAgICAgfCAgIDQ0ICstCj4gIGluY2x1ZGUvbGludXgv c3lzY2FsbHMuaCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwo+ICBpbmNsdWRlL2xpbnV4 L3hhdHRyLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMwICstCj4gIGluY2x1ZGUvdWFw aS9hc20tZ2VuZXJpYy91bmlzdGQuaCAgICAgICAgICAgICB8ICAgIDQgKy0KPiAgaW5jbHVkZS91 YXBpL2xpbnV4L21vdW50LmggICAgICAgICAgICAgICAgICAgIHwgICAyNSArCj4gIGlwYy9tcXVl dWUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTYgKy0KPiAga2VybmVs L2F1ZGl0c2MuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyOSArLQo+ICBrZXJu ZWwvYnBmL2lub2RlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEzICstCj4gIGtl cm5lbC9jYXBhYmlsaXR5LmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTQgKy0KPiAg a2VybmVsL2Nncm91cC9jZ3JvdXAuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQo+ ICBrZXJuZWwvc3lzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICst Cj4gIG1tL21hZHZpc2UuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQg Ky0KPiAgbW0vbWVtY29udHJvbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg MiArLQo+ICBtbS9taW5jb3JlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICA0ICstCj4gIG1tL3NobWVtLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgNDUgKy0KPiAgbmV0L3NvY2tldC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgNiArLQo+ICBuZXQvdW5peC9hZl91bml4LmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICA0ICstCj4gIHNlY3VyaXR5L2FwcGFybW9yL2FwcGFybW9yZnMuYyAgICAgICAgICAg ICAgICB8ICAgIDMgKy0KPiAgc2VjdXJpdHkvYXBwYXJtb3IvZG9tYWluLmMgICAgICAgICAgICAg ICAgICAgIHwgICAxMyArLQo+ICBzZWN1cml0eS9hcHBhcm1vci9maWxlLmMgICAgICAgICAgICAg ICAgICAgICAgfCAgICA1ICstCj4gIHNlY3VyaXR5L2FwcGFybW9yL2xzbS5jICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMTIgKy0KPiAgc2VjdXJpdHkvY29tbW9uY2FwLmMgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICA0NiArLQo+ICBzZWN1cml0eS9pbnRlZ3JpdHkvZXZtL2V2bV9jcnlw dG8uYyAgICAgICAgICAgfCAgIDExICstCj4gIHNlY3VyaXR5L2ludGVncml0eS9ldm0vZXZtX21h aW4uYyAgICAgICAgICAgICB8ICAgIDQgKy0KPiAgc2VjdXJpdHkvaW50ZWdyaXR5L2V2bS9ldm1f c2VjZnMuYyAgICAgICAgICAgIHwgICAgMiArLQo+ICBzZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2lt YS5oICAgICAgICAgICAgICAgICAgfCAgIDE5ICstCj4gIHNlY3VyaXR5L2ludGVncml0eS9pbWEv aW1hX2FwaS5jICAgICAgICAgICAgICB8ICAgMTAgKy0KPiAgc2VjdXJpdHkvaW50ZWdyaXR5L2lt YS9pbWFfYXBwcmFpc2UuYyAgICAgICAgIHwgICAyMiArLQo+ICBzZWN1cml0eS9pbnRlZ3JpdHkv aW1hL2ltYV9hc3ltbWV0cmljX2tleXMuYyAgfCAgICAyICstCj4gIHNlY3VyaXR5L2ludGVncml0 eS9pbWEvaW1hX21haW4uYyAgICAgICAgICAgICB8ICAgMjggKy0KPiAgc2VjdXJpdHkvaW50ZWdy aXR5L2ltYS9pbWFfcG9saWN5LmMgICAgICAgICAgIHwgICAxNyArLQo+ICBzZWN1cml0eS9pbnRl Z3JpdHkvaW1hL2ltYV9xdWV1ZV9rZXlzLmMgICAgICAgfCAgICAyICstCj4gIHNlY3VyaXR5L3Nl Y3VyaXR5LmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjUgKy0KPiAgc2VjdXJpdHkv c2VsaW51eC9ob29rcy5jICAgICAgICAgICAgICAgICAgICAgIHwgICAyMiArLQo+ICBzZWN1cml0 eS9zbWFjay9zbWFja19sc20uYyAgICAgICAgICAgICAgICAgICAgfCAgIDE4ICstCj4gIHRvb2xz L2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaCAgICAgICB8ICAgIDQgKy0KPiAgdG9v bHMvdGVzdGluZy9zZWxmdGVzdHMvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAgMSArCj4gIC4u Li90ZXN0aW5nL3NlbGZ0ZXN0cy9pZG1hcF9tb3VudHMvLmdpdGlnbm9yZSB8ICAgIDIgKwo+ICB0 b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9pZG1hcF9tb3VudHMvTWFrZWZpbGUgfCAgIDEyICsKPiAg dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaWRtYXBfbW91bnRzL2NvbmZpZyAgIHwgICAgMSArCj4g IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2lkbWFwX21vdW50cy9jb3JlLmMgICB8IDM0NzYgKysr KysrKysrKysrKysrKysKPiAgLi4uL3Rlc3Rpbmcvc2VsZnRlc3RzL2lkbWFwX21vdW50cy9pbnRl cm5hbC5oIHwgIDEyNyArCj4gIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2lkbWFwX21vdW50cy91 dGlscy5jICB8ICAxMzYgKwo+ICB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9pZG1hcF9tb3VudHMv dXRpbHMuaCAgfCAgIDE3ICsKPiAgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaWRtYXBfbW91bnRz L3hhdHRyLmMgIHwgIDE3MiArCj4gIC4uLi9zZWxmdGVzdHMvbW91bnRfc2V0YXR0ci8uZ2l0aWdu b3JlICAgICAgICB8ICAgIDEgKwo+ICAuLi4vdGVzdGluZy9zZWxmdGVzdHMvbW91bnRfc2V0YXR0 ci9NYWtlZmlsZSAgfCAgICA3ICsKPiAgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW91bnRfc2V0 YXR0ci9jb25maWcgIHwgICAgMSArCj4gIC4uLi9tb3VudF9zZXRhdHRyL21vdW50X3NldGF0dHJf dGVzdC5jICAgICAgICB8ICA4ODkgKysrKysKPiAgMzM1IGZpbGVzIGNoYW5nZWQsIDc1OTQgaW5z ZXJ0aW9ucygrKSwgMTU3MCBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xz L3Rlc3Rpbmcvc2VsZnRlc3RzL2lkbWFwX21vdW50cy8uZ2l0aWdub3JlCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9pZG1hcF9tb3VudHMvTWFrZWZpbGUKPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2lkbWFwX21vdW50cy9j b25maWcKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2lkbWFw X21vdW50cy9jb3JlLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL2lkbWFwX21vdW50cy9pbnRlcm5hbC5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy90 ZXN0aW5nL3NlbGZ0ZXN0cy9pZG1hcF9tb3VudHMvdXRpbHMuYwo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaWRtYXBfbW91bnRzL3V0aWxzLmgKPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2lkbWFwX21vdW50cy94YXR0ci5j Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tb3VudF9zZXRh dHRyLy5naXRpZ25vcmUKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL21vdW50X3NldGF0dHIvTWFrZWZpbGUKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rl c3Rpbmcvc2VsZnRlc3RzL21vdW50X3NldGF0dHIvY29uZmlnCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tb3VudF9zZXRhdHRyL21vdW50X3NldGF0dHJfdGVz dC5jCj4gCj4gCj4gYmFzZS1jb21taXQ6IDNjZWExMWNkNWUzYjAwZDkxY2FmMGI0NzMwMTk0MDM5 YjQ1YzU4OTEKPiAtLSAKPiAyLjI5LjIKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkNvbnRhaW5lcnMgbWFpbGluZyBsaXN0CkNvbnRhaW5lcnNAbGlz dHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3Jn L21haWxtYW4vbGlzdGluZm8vY29udGFpbmVycw== 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 X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0CF88C388F9 for ; Fri, 20 Nov 2020 02:36:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7E26F2158C for ; Fri, 20 Nov 2020 02:36:51 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="NEQj9ipS" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726342AbgKTCgv (ORCPT ); Thu, 19 Nov 2020 21:36:51 -0500 Received: from aserp2120.oracle.com ([141.146.126.78]:56592 "EHLO aserp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726260AbgKTCgu (ORCPT ); Thu, 19 Nov 2020 21:36:50 -0500 Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 0AK2VHVq009850; Fri, 20 Nov 2020 02:35:33 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : references : mime-version : content-type : content-transfer-encoding : in-reply-to; s=corp-2020-01-29; bh=Y+fENZmkzhNOL+RL027EUZpGAvP+D5VIvM3vZjj69PA=; b=NEQj9ipSFhrExTPbE9JOxuQTMcIKOx7mk15a81myjV9P1JX4IUBZuc4O6xMCpc9V4pda 258W64xq8ZaIwh+cCuaI8W8RkWgLG9bAkEE/vTldXKk5/WjfOyxpFAjHtAKQyslpnFrn wpIMFbojygWpaELlPEWj37owkQjkehZy6/0qAdbQrWRFe421QKkqCxSFKtalDrb/CZUq HvnWz8rT7IbO0ZodF7/mD1usYWH7vl0VO/gl0f2rm5cAhauR6zsWtmyXdudAW5V0I7ef VeN9UBpLbqHWx+pIspaH0ajW6TZRnFH+XFLviHwTPUDm13y407UQj4RK9DZARdsNCAUX jQ== Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by aserp2120.oracle.com with ESMTP id 34t76m8mvh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 20 Nov 2020 02:35:32 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 0AK2TfR6136071; Fri, 20 Nov 2020 02:33:32 GMT Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userp3020.oracle.com with ESMTP id 34ts0und0k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 20 Nov 2020 02:33:31 +0000 Received: from abhmp0008.oracle.com (abhmp0008.oracle.com [141.146.116.14]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 0AK2XDYZ017419; Fri, 20 Nov 2020 02:33:14 GMT Received: from localhost (/10.159.242.34) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 19 Nov 2020 18:33:12 -0800 Date: Thu, 19 Nov 2020 18:33:09 -0800 From: "Darrick J. Wong" To: Christian Brauner Cc: Alexander Viro , Christoph Hellwig , linux-fsdevel@vger.kernel.org, John Johansen , James Morris , Mimi Zohar , Dmitry Kasatkin , Stephen Smalley , Casey Schaufler , Arnd Bergmann , Andreas Dilger , OGAWA Hirofumi , Geoffrey Thomas , Mrunal Patel , Josh Triplett , Andy Lutomirski , Theodore Tso , Alban Crequy , Tycho Andersen , David Howells , James Bottomley , Jann Horn , Seth Forshee , =?iso-8859-1?Q?St=E9phane?= Graber , Aleksa Sarai , Lennart Poettering , "Eric W. Biederman" , smbarber@chromium.org, Phil Estes , Serge Hallyn , Kees Cook , Todd Kjos , Jonathan Corbet , containers@lists.linux-foundation.org, linux-security-module@vger.kernel.org, linux-api@vger.kernel.org, linux-ext4@vger.kernel.org, linux-audit@redhat.com, linux-integrity@vger.kernel.org, selinux@vger.kernel.org Subject: Re: [PATCH v2 00/39] fs: idmapped mounts Message-ID: <20201120023309.GH9685@magnolia> References: <20201115103718.298186-1-christian.brauner@ubuntu.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20201115103718.298186-1-christian.brauner@ubuntu.com> X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9810 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 bulkscore=0 suspectscore=0 spamscore=0 malwarescore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2011200017 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9810 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 phishscore=0 adultscore=0 priorityscore=1501 bulkscore=0 clxscore=1011 mlxlogscore=999 malwarescore=0 mlxscore=0 spamscore=0 lowpriorityscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2011200017 Precedence: bulk List-ID: X-Mailing-List: linux-api@vger.kernel.org On Sun, Nov 15, 2020 at 11:36:39AM +0100, Christian Brauner wrote: > Hey everyone, > > This is v2. It is reworked according to the reviews coming from > Christoph and others to adapt all relevant helpers and inode_operations > methods to account for idmapped mounts instead of introducing new > helpers and methods specific to idmapped mounts like we did before. > We've also moved the overlayfs conversion to handle idmapped mounts into > a separate patchset that will be sent out separately after the core > changes. The converted filesytems in this series include fat and ext4. > The config option to disable idmapped mounts has been moved from a a vfs > config ption to a per-filesystem option. They default to off. Having a > config option allows us to gain some confidence in the patchset over > multiple kernel releases. So uh I noticed that the new user_ns parameter passed to the xfs functions don't actually get used for anything. Did I miss something when I pulled the branch, or does this simply reflect xfs not having any idmap support? And how would one add such a thing? Replace the &init_user_ns with the passed-in user_ns parameter? > There are two noteable things about this version. First, that it comes > with a really large test-suite to test current vfs behavior and > idmapped mounts behavior. We intend this test-suite to grow over time > and at some point cover most basic core vfs functionality that isn't > covered in xfstests and have it be part of the selftests. Please put enough of a test in fstests to do basic validation that we filesystem developers didn't accidentally screw things up. --D > Second, while while working on adapting this patchset to the requested > changes, the runC and containerd crowd was nice enough to adapt > containerd to this patchset to make use of idmapped mounts in one of the > most widely used container runtimes: > https://github.com/containerd/containerd/pull/4734 > > With this patchset we make it possible to attach idmappings to bind > mounts. This handles several common use-cases. Here are just a few: > - Shifting of a container rootfs or base image without having to mangle > every file (runc, Docker, containerd, k8s, LXD, systemd ...) > - Sharing of data between host or privileged containers with > underprivileged containers (runc, Docker, containerd, k8s, LXD, ...) > - Shifting of subset of ownership-less filesystems (vfat) for use by > multiple users, effectively allowing for DAC on such devices (systemd, > Android, ...) > - Data sharing between multiple user namespaces with incompatible maps > (LXD, k8s, ...) > Making it possible to share directories and mounts between users with > different uids and gids is itself quite an important use-case in > distributed systems environments. It's of course especially useful in > general for portable usb sticks, sharing data between multiple users in > general, and sharing home directories between multiple users. The last > example is now elegantly expressed in systemd's homed concept for > portable home directories. As mentioned above, idmapped mounts also > allow data from the host to be shared with unprivileged containers, > between privileged and unprivileged containers simultaneously and in > addition also between unprivileged containers with different idmappings > whenever they are used to isolate one container completely from another > container. > As can be seen from answers to earlier threads of this patchset and from > the list of potential users interest in this patchset is fairly > widespread. > > We have implemented and proposed multiple solutions to this before. This > included the introduction of fsid mappings, a tiny filesystem that is > currently carried in Ubuntu that has shown it's limitations, and an > approach to call override creds in the vfs. None of these solutions have > covered all of the above use-cases. Some of them have been fairly hacky > too by e.g. violating how things should be passed down to the individual > filesystems. > The solution proposed here has it's origins in multiple discussions > during Linux Plumbers 2017 during and after the end of the containers > microconference. > To the best of my knowledge this involved Aleksa, Stéphane, Eric, David, > James, and myself. The original idea or a variant thereof has been > discussed, again to the best of my knowledge, after a Linux conference > in St. Petersburg in Russia in 2017 between Christoph, Tycho, and > myself. > We've taken the time to implement a working version of this solution > over the last weeks to the best of my abilities. Tycho has signed up > for this sligthly crazy endeavour as well and he has helped with the > conversion of the xattr codepaths and will be involved with others in > converting additional filesystems. > > This series makes idmappings a property of struct vfsmount instead of > tying it to a process being inside of a user namespace which has been > the case for all other proposed approaches. It also allows to pass down > the user namespace into the filesystms which is a clean way instead of > violating calling conventions by strapping the user namespace > information that is a property of the mount to the caller's credentials > or similar hacks. > With this idmappings become a property of bind-mounts, i.e. each > bind-mount can have a separate idmapping. Such idmapped mounts can even > be created inside of the initial user namespace. > > The vfsmount struct gains a new struct user_namespace member. The > idmapping of the user namespace becomes the idmapping of the mount. A > caller that is privileged with respect to the user namespace of > the superblock of the underlying filesystem can create an idmapped > bind-mount. In the future, we can enable unprivileged use-cases by > checking whether the caller is privileged wrt to the user namespace an > already idmapped mount has been marked with, allowing them to change the > idmapping. For now, keep things simple until we feel sure enough. Note, > that with syscall interception it is already possible to intercept > idmapped mount requests from unprivileged containers and handle them in > a sufficiently privileged container manager. Support for this is > already available in LXD and will be available in runC were syscall > interception is currently becoming part of the runtime spec (see > https://github.com/opencontainers/runtime-spec/pull/1074). > > The user namespace the mount will be marked with can be specified by > passing a file descriptor refering to the user namespace as an argument > to the new mount_setattr() syscall together with the new > MOUNT_ATTR_IDMAP flag. By default vfsmounts are marked with the initial > user namespace and no behavioral or performance changes should be > observed. All mapping operations are nops for the initial user > namespace. When a file/inode is accessed through an idmapped mount the > i_uid and i_gid of the inode will be remapped according to the user > namespace the mount has been marked with. > > In order to support idmapped mounts, filesystems need to be changed and > mark themselves with the FS_ALLOW_IDMAP flag in fs_flags. The initial > version contains fat and ext4 including a list of examples. But patches > for other filesystems are actively worked on but will be sent out > separately. We are here to see this through and there are multiple > people involved in converting filesystems. So filesystem developers are > not left alone with this. > > I have written a simple tool available at > https://github.com/brauner/mount-idmapped that allows to create idmapped > mounts so people can play with this patch series. Here are a few > illustrations: > > 1. Create a simple idmapped mount of another user's home directory > > u1001@f2-vm:/$ sudo ./mount-idmapped --map-mount b:1000:1001:1 /home/ubuntu/ /mnt > u1001@f2-vm:/$ ls -al /home/ubuntu/ > total 28 > drwxr-xr-x 2 ubuntu ubuntu 4096 Oct 28 22:07 . > drwxr-xr-x 4 root root 4096 Oct 28 04:00 .. > -rw------- 1 ubuntu ubuntu 3154 Oct 28 22:12 .bash_history > -rw-r--r-- 1 ubuntu ubuntu 220 Feb 25 2020 .bash_logout > -rw-r--r-- 1 ubuntu ubuntu 3771 Feb 25 2020 .bashrc > -rw-r--r-- 1 ubuntu ubuntu 807 Feb 25 2020 .profile > -rw-r--r-- 1 ubuntu ubuntu 0 Oct 16 16:11 .sudo_as_admin_successful > -rw------- 1 ubuntu ubuntu 1144 Oct 28 00:43 .viminfo > u1001@f2-vm:/$ ls -al /mnt/ > total 28 > drwxr-xr-x 2 u1001 u1001 4096 Oct 28 22:07 . > drwxr-xr-x 29 root root 4096 Oct 28 22:01 .. > -rw------- 1 u1001 u1001 3154 Oct 28 22:12 .bash_history > -rw-r--r-- 1 u1001 u1001 220 Feb 25 2020 .bash_logout > -rw-r--r-- 1 u1001 u1001 3771 Feb 25 2020 .bashrc > -rw-r--r-- 1 u1001 u1001 807 Feb 25 2020 .profile > -rw-r--r-- 1 u1001 u1001 0 Oct 16 16:11 .sudo_as_admin_successful > -rw------- 1 u1001 u1001 1144 Oct 28 00:43 .viminfo > u1001@f2-vm:/$ touch /mnt/my-file > u1001@f2-vm:/$ setfacl -m u:1001:rwx /mnt/my-file > u1001@f2-vm:/$ sudo setcap -n 1001 cap_net_raw+ep /mnt/my-file > u1001@f2-vm:/$ ls -al /mnt/my-file > -rw-rwxr--+ 1 u1001 u1001 0 Oct 28 22:14 /mnt/my-file > u1001@f2-vm:/$ ls -al /home/ubuntu/my-file > -rw-rwxr--+ 1 ubuntu ubuntu 0 Oct 28 22:14 /home/ubuntu/my-file > u1001@f2-vm:/$ getfacl /mnt/my-file > getfacl: Removing leading '/' from absolute path names > # file: mnt/my-file > # owner: u1001 > # group: u1001 > user::rw- > user:u1001:rwx > group::rw- > mask::rwx > other::r-- > u1001@f2-vm:/$ getfacl /home/ubuntu/my-file > getfacl: Removing leading '/' from absolute path names > # file: home/ubuntu/my-file > # owner: ubuntu > # group: ubuntu > user::rw- > user:ubuntu:rwx > group::rw- > mask::rwx > other::r-- > > 2. Create mapping of the whole ext4 rootfs without a mapping for uid and gid 0 > > ubuntu@f2-vm:~$ sudo /mount-idmapped --map-mount b:1:1:65536 / /mnt/ > ubuntu@f2-vm:~$ findmnt | grep mnt > └─/mnt /dev/sda2 ext4 rw,relatime > └─/mnt/mnt /dev/sda2 ext4 rw,relatime > ubuntu@f2-vm:~$ sudo mkdir /AS-ROOT-CAN-CREATE > ubuntu@f2-vm:~$ sudo mkdir /mnt/AS-ROOT-CANT-CREATE > mkdir: cannot create directory ‘/mnt/AS-ROOT-CANT-CREATE’: Value too large for defined data type > ubuntu@f2-vm:~$ mkdir /mnt/home/ubuntu/AS-USER-1000-CAN-CREATE > > 3. Create a vfat usb mount and expose to user 1001 and 5000 > > ubuntu@f2-vm:/$ sudo mount /dev/sdb /mnt > ubuntu@f2-vm:/$ findmnt | grep mnt > └─/mnt /dev/sdb vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro > ubuntu@f2-vm:/$ ls -al /mnt > total 12 > drwxr-xr-x 2 root root 4096 Jan 1 1970 . > drwxr-xr-x 34 root root 4096 Oct 28 22:24 .. > -rwxr-xr-x 1 root root 4 Oct 28 03:44 aaa > -rwxr-xr-x 1 root root 0 Oct 28 01:09 bbb > ubuntu@f2-vm:/$ sudo /mount-idmapped --map-mount b:0:1001:1 /mnt /mnt-1001/ > ubuntu@f2-vm:/$ ls -al /mnt-1001/ > total 12 > drwxr-xr-x 2 u1001 u1001 4096 Jan 1 1970 . > drwxr-xr-x 34 root root 4096 Oct 28 22:24 .. > -rwxr-xr-x 1 u1001 u1001 4 Oct 28 03:44 aaa > -rwxr-xr-x 1 u1001 u1001 0 Oct 28 01:09 bbb > ubuntu@f2-vm:/$ sudo /mount-idmapped --map-mount b:0:5000:1 /mnt /mnt-5000/ > ubuntu@f2-vm:/$ ls -al /mnt-5000/ > total 12 > drwxr-xr-x 2 5000 5000 4096 Jan 1 1970 . > drwxr-xr-x 34 root root 4096 Oct 28 22:24 .. > -rwxr-xr-x 1 5000 5000 4 Oct 28 03:44 aaa > -rwxr-xr-x 1 5000 5000 0 Oct 28 01:09 bbb > > 4. Create an idmapped rootfs mount for a container > > root@f2-vm:~# ls -al /var/lib/lxc/f2/rootfs/ > total 68 > drwxr-xr-x 17 20000 20000 4096 Sep 24 07:48 . > drwxrwx--- 3 20000 20000 4096 Oct 16 19:26 .. > lrwxrwxrwx 1 20000 20000 7 Sep 24 07:43 bin -> usr/bin > drwxr-xr-x 2 20000 20000 4096 Apr 15 2020 boot > drwxr-xr-x 3 20000 20000 4096 Oct 16 19:26 dev > drwxr-xr-x 61 20000 20000 4096 Oct 16 19:26 etc > drwxr-xr-x 3 20000 20000 4096 Sep 24 07:45 home > lrwxrwxrwx 1 20000 20000 7 Sep 24 07:43 lib -> usr/lib > lrwxrwxrwx 1 20000 20000 9 Sep 24 07:43 lib32 -> usr/lib32 > lrwxrwxrwx 1 20000 20000 9 Sep 24 07:43 lib64 -> usr/lib64 > lrwxrwxrwx 1 20000 20000 10 Sep 24 07:43 libx32 -> usr/libx32 > drwxr-xr-x 2 20000 20000 4096 Sep 24 07:43 media > drwxr-xr-x 2 20000 20000 4096 Sep 24 07:43 mnt > drwxr-xr-x 2 20000 20000 4096 Sep 24 07:43 opt > drwxr-xr-x 2 20000 20000 4096 Apr 15 2020 proc > drwx------ 2 20000 20000 4096 Sep 24 07:43 root > drwxr-xr-x 2 20000 20000 4096 Sep 24 07:45 run > lrwxrwxrwx 1 20000 20000 8 Sep 24 07:43 sbin -> usr/sbin > drwxr-xr-x 2 20000 20000 4096 Sep 24 07:43 srv > drwxr-xr-x 2 20000 20000 4096 Apr 15 2020 sys > drwxrwxrwt 2 20000 20000 4096 Sep 24 07:44 tmp > drwxr-xr-x 13 20000 20000 4096 Sep 24 07:43 usr > drwxr-xr-x 12 20000 20000 4096 Sep 24 07:44 var > root@f2-vm:~# /mount-idmapped --map-mount b:20000:10000:100000 /var/lib/lxc/f2/rootfs/ /mnt > root@f2-vm:~# ls -al /mnt > total 68 > drwxr-xr-x 17 10000 10000 4096 Sep 24 07:48 . > drwxr-xr-x 34 root root 4096 Oct 28 22:24 .. > lrwxrwxrwx 1 10000 10000 7 Sep 24 07:43 bin -> usr/bin > drwxr-xr-x 2 10000 10000 4096 Apr 15 2020 boot > drwxr-xr-x 3 10000 10000 4096 Oct 16 19:26 dev > drwxr-xr-x 61 10000 10000 4096 Oct 16 19:26 etc > drwxr-xr-x 3 10000 10000 4096 Sep 24 07:45 home > lrwxrwxrwx 1 10000 10000 7 Sep 24 07:43 lib -> usr/lib > lrwxrwxrwx 1 10000 10000 9 Sep 24 07:43 lib32 -> usr/lib32 > lrwxrwxrwx 1 10000 10000 9 Sep 24 07:43 lib64 -> usr/lib64 > lrwxrwxrwx 1 10000 10000 10 Sep 24 07:43 libx32 -> usr/libx32 > drwxr-xr-x 2 10000 10000 4096 Sep 24 07:43 media > drwxr-xr-x 2 10000 10000 4096 Sep 24 07:43 mnt > drwxr-xr-x 2 10000 10000 4096 Sep 24 07:43 opt > drwxr-xr-x 2 10000 10000 4096 Apr 15 2020 proc > drwx------ 2 10000 10000 4096 Sep 24 07:43 root > drwxr-xr-x 2 10000 10000 4096 Sep 24 07:45 run > lrwxrwxrwx 1 10000 10000 8 Sep 24 07:43 sbin -> usr/sbin > drwxr-xr-x 2 10000 10000 4096 Sep 24 07:43 srv > drwxr-xr-x 2 10000 10000 4096 Apr 15 2020 sys > drwxrwxrwt 2 10000 10000 4096 Sep 24 07:44 tmp > drwxr-xr-x 13 10000 10000 4096 Sep 24 07:43 usr > drwxr-xr-x 12 10000 10000 4096 Sep 24 07:44 var > root@f2-vm:~# lxc-start f2 # uses /mnt as rootfs > root@f2-vm:~# lxc-attach f2 -- cat /proc/1/uid_map > 0 10000 10000 > root@f2-vm:~# lxc-attach f2 -- cat /proc/1/gid_map > 0 10000 10000 > root@f2-vm:~# lxc-attach f2 -- ls -al / > total 52 > drwxr-xr-x 17 root root 4096 Sep 24 07:48 . > drwxr-xr-x 17 root root 4096 Sep 24 07:48 .. > lrwxrwxrwx 1 root root 7 Sep 24 07:43 bin -> usr/bin > drwxr-xr-x 2 root root 4096 Apr 15 2020 boot > drwxr-xr-x 5 root root 500 Oct 28 23:39 dev > drwxr-xr-x 61 root root 4096 Oct 28 23:39 etc > drwxr-xr-x 3 root root 4096 Sep 24 07:45 home > lrwxrwxrwx 1 root root 7 Sep 24 07:43 lib -> usr/lib > lrwxrwxrwx 1 root root 9 Sep 24 07:43 lib32 -> usr/lib32 > lrwxrwxrwx 1 root root 9 Sep 24 07:43 lib64 -> usr/lib64 > lrwxrwxrwx 1 root root 10 Sep 24 07:43 libx32 -> usr/libx32 > drwxr-xr-x 2 root root 4096 Sep 24 07:43 media > drwxr-xr-x 2 root root 4096 Sep 24 07:43 mnt > drwxr-xr-x 2 root root 4096 Sep 24 07:43 opt > dr-xr-xr-x 232 nobody nogroup 0 Oct 28 23:39 proc > drwx------ 2 root root 4096 Oct 28 23:41 root > drwxr-xr-x 12 root root 360 Oct 28 23:39 run > lrwxrwxrwx 1 root root 8 Sep 24 07:43 sbin -> usr/sbin > drwxr-xr-x 2 root root 4096 Sep 24 07:43 srv > dr-xr-xr-x 13 nobody nogroup 0 Oct 28 23:39 sys > drwxrwxrwt 11 root root 4096 Oct 28 23:40 tmp > drwxr-xr-x 13 root root 4096 Sep 24 07:43 usr > drwxr-xr-x 12 root root 4096 Sep 24 07:44 var > root@f2-vm:~# lxc-attach f2 -- ls -al /my-file > -rw-r--r-- 1 root root 0 Oct 28 23:43 /my-file > root@f2-vm:~# ls -al /var/lib/lxc/f2/rootfs/my-file > -rw-r--r-- 1 20000 20000 0 Oct 28 23:43 /var/lib/lxc/f2/rootfs/my-file > > I'd like to say thanks to: > Al for pointing me into the direction to avoid inode alias issues during > lookup. David for various discussions around this. Christoph for proving > a first proper review and for being involved in the original idea. Tycho > for helping with this series and on future patches to convert > filesystems. Alban Crequy and the Kinvolk located just a few streets > away from me in Berlin for providing use-case discussions and writing > patches for containerd! Stéphane for his invaluable input on many things > and level head and enabling me to work on this. Amir for explaining and > discussing aspects of overlayfs with me. I'd like to especially thank > Seth Forshee because he provided a lot of good analysis, suggestions, > and participated in short-notice discussions in both chat and video for > some nitty-gritty technical details. > > This series can be found and pulled from the three usual locations: > https://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux.git/log/?h=idmapped_mounts > https://github.com/brauner/linux/tree/idmapped_mounts > https://gitlab.com/brauner/linux/-/commits/idmapped_mounts > > Thanks! > Christian > > Christian Brauner (37): > namespace: take lock_mount_hash() directly when changing flags > mount: make {lock,unlock}_mount_hash() static > namespace: only take read lock in do_reconfigure_mnt() > fs: add mount_setattr() > tests: add mount_setattr() selftests > fs: add id translation helpers > mount: attach mappings to mounts > capability: handle idmapped mounts > namei: add idmapped mount aware permission helpers > inode: add idmapped mount aware init and permission helpers > attr: handle idmapped mounts > acl: handle idmapped mounts > commoncap: handle idmapped mounts > stat: handle idmapped mounts > namei: handle idmapped mounts in may_*() helpers > namei: introduce struct renamedata > namei: prepare for idmapped mounts > open: handle idmapped mounts in do_truncate() > open: handle idmapped mounts > af_unix: handle idmapped mounts > utimes: handle idmapped mounts > fcntl: handle idmapped mounts > notify: handle idmapped mounts > init: handle idmapped mounts > ioctl: handle idmapped mounts > would_dump: handle idmapped mounts > exec: handle idmapped mounts > fs: add helpers for idmap mounts > apparmor: handle idmapped mounts > audit: handle idmapped mounts > ima: handle idmapped mounts > fat: handle idmapped mounts > ext4: support idmapped mounts > ecryptfs: do not mount on top of idmapped mounts > overlayfs: do not mount on top of idmapped mounts > fs: introduce MOUNT_ATTR_IDMAP > tests: add vfs/idmapped mounts test suite > > Tycho Andersen (2): > xattr: handle idmapped mounts > selftests: add idmapped mounts xattr selftest > > Documentation/filesystems/locking.rst | 6 +- > Documentation/filesystems/porting.rst | 2 + > Documentation/filesystems/vfs.rst | 17 +- > arch/alpha/kernel/syscalls/syscall.tbl | 1 + > arch/arm/tools/syscall.tbl | 1 + > arch/arm64/include/asm/unistd32.h | 2 + > arch/ia64/kernel/syscalls/syscall.tbl | 1 + > arch/m68k/kernel/syscalls/syscall.tbl | 1 + > arch/microblaze/kernel/syscalls/syscall.tbl | 1 + > arch/mips/kernel/syscalls/syscall_n32.tbl | 1 + > arch/mips/kernel/syscalls/syscall_n64.tbl | 1 + > arch/mips/kernel/syscalls/syscall_o32.tbl | 1 + > arch/parisc/kernel/syscalls/syscall.tbl | 1 + > arch/powerpc/kernel/syscalls/syscall.tbl | 1 + > arch/powerpc/platforms/cell/spufs/inode.c | 5 +- > arch/s390/kernel/syscalls/syscall.tbl | 1 + > arch/sh/kernel/syscalls/syscall.tbl | 1 + > arch/sparc/kernel/syscalls/syscall.tbl | 1 + > arch/x86/entry/syscalls/syscall_32.tbl | 1 + > arch/x86/entry/syscalls/syscall_64.tbl | 1 + > arch/xtensa/kernel/syscalls/syscall.tbl | 1 + > drivers/android/binderfs.c | 3 +- > drivers/base/devtmpfs.c | 12 +- > fs/9p/acl.c | 7 +- > fs/9p/v9fs.h | 3 +- > fs/9p/v9fs_vfs.h | 2 +- > fs/9p/vfs_inode.c | 32 +- > fs/9p/vfs_inode_dotl.c | 34 +- > fs/9p/xattr.c | 1 + > fs/adfs/adfs.h | 3 +- > fs/adfs/inode.c | 5 +- > fs/affs/affs.h | 10 +- > fs/affs/inode.c | 7 +- > fs/affs/namei.c | 15 +- > fs/afs/dir.c | 34 +- > fs/afs/inode.c | 5 +- > fs/afs/internal.h | 4 +- > fs/afs/security.c | 2 +- > fs/afs/xattr.c | 2 + > fs/attr.c | 78 +- > fs/autofs/root.c | 13 +- > fs/bad_inode.c | 31 +- > fs/bfs/dir.c | 12 +- > fs/btrfs/acl.c | 5 +- > fs/btrfs/ctree.h | 3 +- > fs/btrfs/inode.c | 41 +- > fs/btrfs/ioctl.c | 25 +- > fs/btrfs/tests/btrfs-tests.c | 2 +- > fs/btrfs/xattr.c | 2 + > fs/cachefiles/interface.c | 4 +- > fs/cachefiles/namei.c | 19 +- > fs/cachefiles/xattr.c | 16 +- > fs/ceph/acl.c | 5 +- > fs/ceph/dir.c | 23 +- > fs/ceph/inode.c | 13 +- > fs/ceph/super.h | 8 +- > fs/ceph/xattr.c | 1 + > fs/cifs/cifsfs.c | 4 +- > fs/cifs/cifsfs.h | 18 +- > fs/cifs/dir.c | 8 +- > fs/cifs/inode.c | 22 +- > fs/cifs/link.c | 3 +- > fs/cifs/xattr.c | 1 + > fs/coda/coda_linux.h | 4 +- > fs/coda/dir.c | 18 +- > fs/coda/inode.c | 5 +- > fs/coda/pioctl.c | 6 +- > fs/configfs/configfs_internal.h | 7 +- > fs/configfs/dir.c | 3 +- > fs/configfs/inode.c | 5 +- > fs/configfs/symlink.c | 5 +- > fs/coredump.c | 12 +- > fs/crypto/policy.c | 2 +- > fs/debugfs/inode.c | 9 +- > fs/ecryptfs/crypto.c | 4 +- > fs/ecryptfs/inode.c | 74 +- > fs/ecryptfs/main.c | 6 + > fs/ecryptfs/mmap.c | 4 +- > fs/efivarfs/file.c | 2 +- > fs/efivarfs/inode.c | 4 +- > fs/erofs/inode.c | 2 +- > fs/exec.c | 12 +- > fs/exfat/exfat_fs.h | 3 +- > fs/exfat/file.c | 9 +- > fs/exfat/namei.c | 13 +- > fs/ext2/acl.c | 5 +- > fs/ext2/acl.h | 3 +- > fs/ext2/ext2.h | 2 +- > fs/ext2/ialloc.c | 2 +- > fs/ext2/inode.c | 11 +- > fs/ext2/ioctl.c | 6 +- > fs/ext2/namei.c | 22 +- > fs/ext2/xattr_security.c | 1 + > fs/ext2/xattr_trusted.c | 1 + > fs/ext2/xattr_user.c | 1 + > fs/ext4/Kconfig | 9 + > fs/ext4/acl.c | 5 +- > fs/ext4/acl.h | 3 +- > fs/ext4/ext4.h | 15 +- > fs/ext4/ialloc.c | 7 +- > fs/ext4/inode.c | 14 +- > fs/ext4/ioctl.c | 18 +- > fs/ext4/namei.c | 52 +- > fs/ext4/super.c | 6 +- > fs/ext4/xattr_hurd.c | 1 + > fs/ext4/xattr_security.c | 1 + > fs/ext4/xattr_trusted.c | 1 + > fs/ext4/xattr_user.c | 1 + > fs/f2fs/acl.c | 5 +- > fs/f2fs/acl.h | 3 +- > fs/f2fs/f2fs.h | 3 +- > fs/f2fs/file.c | 23 +- > fs/f2fs/namei.c | 26 +- > fs/f2fs/xattr.c | 4 +- > fs/fat/fat.h | 3 +- > fs/fat/file.c | 20 +- > fs/fat/namei_msdos.c | 15 +- > fs/fat/namei_vfat.c | 15 +- > fs/fcntl.c | 3 +- > fs/fuse/acl.c | 3 +- > fs/fuse/dir.c | 41 +- > fs/fuse/fuse_i.h | 4 +- > fs/fuse/xattr.c | 2 + > fs/gfs2/acl.c | 5 +- > fs/gfs2/acl.h | 3 +- > fs/gfs2/file.c | 4 +- > fs/gfs2/inode.c | 54 +- > fs/gfs2/inode.h | 2 +- > fs/gfs2/xattr.c | 1 + > fs/hfs/attr.c | 1 + > fs/hfs/dir.c | 13 +- > fs/hfs/hfs_fs.h | 2 +- > fs/hfs/inode.c | 7 +- > fs/hfsplus/dir.c | 25 +- > fs/hfsplus/inode.c | 11 +- > fs/hfsplus/ioctl.c | 2 +- > fs/hfsplus/xattr.c | 1 + > fs/hfsplus/xattr_security.c | 1 + > fs/hfsplus/xattr_trusted.c | 1 + > fs/hfsplus/xattr_user.c | 1 + > fs/hostfs/hostfs_kern.c | 31 +- > fs/hpfs/hpfs_fn.h | 2 +- > fs/hpfs/inode.c | 7 +- > fs/hpfs/namei.c | 20 +- > fs/hugetlbfs/inode.c | 31 +- > fs/init.c | 21 +- > fs/inode.c | 38 +- > fs/internal.h | 9 + > fs/jffs2/acl.c | 5 +- > fs/jffs2/acl.h | 3 +- > fs/jffs2/dir.c | 32 +- > fs/jffs2/fs.c | 7 +- > fs/jffs2/os-linux.h | 2 +- > fs/jffs2/security.c | 1 + > fs/jffs2/xattr_trusted.c | 1 + > fs/jffs2/xattr_user.c | 1 + > fs/jfs/acl.c | 5 +- > fs/jfs/file.c | 9 +- > fs/jfs/ioctl.c | 2 +- > fs/jfs/jfs_acl.h | 3 +- > fs/jfs/jfs_inode.c | 2 +- > fs/jfs/jfs_inode.h | 2 +- > fs/jfs/namei.c | 21 +- > fs/jfs/xattr.c | 2 + > fs/kernfs/dir.c | 7 +- > fs/kernfs/inode.c | 15 +- > fs/kernfs/kernfs-internal.h | 5 +- > fs/libfs.c | 20 +- > fs/minix/bitmap.c | 2 +- > fs/minix/file.c | 7 +- > fs/minix/inode.c | 2 +- > fs/minix/namei.c | 25 +- > fs/mount.h | 10 - > fs/namei.c | 317 +- > fs/namespace.c | 473 ++- > fs/nfs/dir.c | 23 +- > fs/nfs/inode.c | 5 +- > fs/nfs/internal.h | 10 +- > fs/nfs/namespace.c | 7 +- > fs/nfs/nfs3_fs.h | 3 +- > fs/nfs/nfs3acl.c | 3 +- > fs/nfs/nfs4proc.c | 3 + > fs/nfsd/nfs2acl.c | 4 +- > fs/nfsd/nfs3acl.c | 4 +- > fs/nfsd/nfs4acl.c | 4 +- > fs/nfsd/nfs4recover.c | 6 +- > fs/nfsd/nfsfh.c | 2 +- > fs/nfsd/nfsproc.c | 2 +- > fs/nfsd/vfs.c | 47 +- > fs/nilfs2/inode.c | 13 +- > fs/nilfs2/ioctl.c | 2 +- > fs/nilfs2/namei.c | 20 +- > fs/nilfs2/nilfs.h | 4 +- > fs/notify/fanotify/fanotify_user.c | 2 +- > fs/notify/inotify/inotify_user.c | 3 +- > fs/ntfs/inode.c | 2 +- > fs/ocfs2/acl.c | 5 +- > fs/ocfs2/acl.h | 3 +- > fs/ocfs2/dlmfs/dlmfs.c | 17 +- > fs/ocfs2/file.c | 13 +- > fs/ocfs2/file.h | 5 +- > fs/ocfs2/ioctl.c | 2 +- > fs/ocfs2/namei.c | 21 +- > fs/ocfs2/refcounttree.c | 4 +- > fs/ocfs2/xattr.c | 3 + > fs/omfs/dir.c | 13 +- > fs/omfs/file.c | 7 +- > fs/omfs/inode.c | 2 +- > fs/open.c | 52 +- > fs/orangefs/acl.c | 5 +- > fs/orangefs/inode.c | 15 +- > fs/orangefs/namei.c | 12 +- > fs/orangefs/orangefs-kernel.h | 7 +- > fs/orangefs/xattr.c | 1 + > fs/overlayfs/copy_up.c | 20 +- > fs/overlayfs/dir.c | 31 +- > fs/overlayfs/file.c | 6 +- > fs/overlayfs/inode.c | 21 +- > fs/overlayfs/overlayfs.h | 40 +- > fs/overlayfs/super.c | 27 +- > fs/overlayfs/util.c | 4 +- > fs/posix_acl.c | 78 +- > fs/proc/base.c | 24 +- > fs/proc/fd.c | 4 +- > fs/proc/fd.h | 3 +- > fs/proc/generic.c | 9 +- > fs/proc/internal.h | 2 +- > fs/proc/proc_net.c | 2 +- > fs/proc/proc_sysctl.c | 12 +- > fs/proc/root.c | 2 +- > fs/proc_namespace.c | 1 + > fs/ramfs/file-nommu.c | 9 +- > fs/ramfs/inode.c | 18 +- > fs/reiserfs/acl.h | 3 +- > fs/reiserfs/inode.c | 7 +- > fs/reiserfs/ioctl.c | 4 +- > fs/reiserfs/namei.c | 21 +- > fs/reiserfs/reiserfs.h | 3 +- > fs/reiserfs/xattr.c | 12 +- > fs/reiserfs/xattr.h | 2 +- > fs/reiserfs/xattr_acl.c | 7 +- > fs/reiserfs/xattr_security.c | 3 +- > fs/reiserfs/xattr_trusted.c | 3 +- > fs/reiserfs/xattr_user.c | 3 +- > fs/remap_range.c | 7 +- > fs/stat.c | 10 +- > fs/sysv/file.c | 7 +- > fs/sysv/ialloc.c | 2 +- > fs/sysv/itree.c | 2 +- > fs/sysv/namei.c | 21 +- > fs/tracefs/inode.c | 4 +- > fs/ubifs/dir.c | 29 +- > fs/ubifs/file.c | 5 +- > fs/ubifs/ioctl.c | 2 +- > fs/ubifs/ubifs.h | 3 +- > fs/ubifs/xattr.c | 1 + > fs/udf/file.c | 9 +- > fs/udf/ialloc.c | 2 +- > fs/udf/namei.c | 24 +- > fs/udf/symlink.c | 2 +- > fs/ufs/ialloc.c | 2 +- > fs/ufs/inode.c | 7 +- > fs/ufs/namei.c | 19 +- > fs/ufs/ufs.h | 3 +- > fs/utimes.c | 4 +- > fs/vboxsf/dir.c | 12 +- > fs/vboxsf/utils.c | 5 +- > fs/vboxsf/vfsmod.h | 3 +- > fs/verity/enable.c | 2 +- > fs/xattr.c | 136 +- > fs/xfs/xfs_acl.c | 5 +- > fs/xfs/xfs_acl.h | 3 +- > fs/xfs/xfs_ioctl.c | 4 +- > fs/xfs/xfs_iops.c | 55 +- > fs/xfs/xfs_xattr.c | 3 +- > fs/zonefs/super.c | 9 +- > include/linux/audit.h | 10 +- > include/linux/capability.h | 14 +- > include/linux/fs.h | 145 +- > include/linux/ima.h | 15 +- > include/linux/lsm_hook_defs.h | 15 +- > include/linux/lsm_hooks.h | 1 + > include/linux/mount.h | 14 +- > include/linux/nfs_fs.h | 4 +- > include/linux/posix_acl.h | 15 +- > include/linux/posix_acl_xattr.h | 12 +- > include/linux/security.h | 44 +- > include/linux/syscalls.h | 3 + > include/linux/xattr.h | 30 +- > include/uapi/asm-generic/unistd.h | 4 +- > include/uapi/linux/mount.h | 25 + > ipc/mqueue.c | 16 +- > kernel/auditsc.c | 29 +- > kernel/bpf/inode.c | 13 +- > kernel/capability.c | 14 +- > kernel/cgroup/cgroup.c | 2 +- > kernel/sys.c | 2 +- > mm/madvise.c | 4 +- > mm/memcontrol.c | 2 +- > mm/mincore.c | 4 +- > mm/shmem.c | 45 +- > net/socket.c | 6 +- > net/unix/af_unix.c | 4 +- > security/apparmor/apparmorfs.c | 3 +- > security/apparmor/domain.c | 13 +- > security/apparmor/file.c | 5 +- > security/apparmor/lsm.c | 12 +- > security/commoncap.c | 46 +- > security/integrity/evm/evm_crypto.c | 11 +- > security/integrity/evm/evm_main.c | 4 +- > security/integrity/evm/evm_secfs.c | 2 +- > security/integrity/ima/ima.h | 19 +- > security/integrity/ima/ima_api.c | 10 +- > security/integrity/ima/ima_appraise.c | 22 +- > security/integrity/ima/ima_asymmetric_keys.c | 2 +- > security/integrity/ima/ima_main.c | 28 +- > security/integrity/ima/ima_policy.c | 17 +- > security/integrity/ima/ima_queue_keys.c | 2 +- > security/security.c | 25 +- > security/selinux/hooks.c | 22 +- > security/smack/smack_lsm.c | 18 +- > tools/include/uapi/asm-generic/unistd.h | 4 +- > tools/testing/selftests/Makefile | 1 + > .../testing/selftests/idmap_mounts/.gitignore | 2 + > tools/testing/selftests/idmap_mounts/Makefile | 12 + > tools/testing/selftests/idmap_mounts/config | 1 + > tools/testing/selftests/idmap_mounts/core.c | 3476 +++++++++++++++++ > .../testing/selftests/idmap_mounts/internal.h | 127 + > tools/testing/selftests/idmap_mounts/utils.c | 136 + > tools/testing/selftests/idmap_mounts/utils.h | 17 + > tools/testing/selftests/idmap_mounts/xattr.c | 172 + > .../selftests/mount_setattr/.gitignore | 1 + > .../testing/selftests/mount_setattr/Makefile | 7 + > tools/testing/selftests/mount_setattr/config | 1 + > .../mount_setattr/mount_setattr_test.c | 889 +++++ > 335 files changed, 7594 insertions(+), 1570 deletions(-) > create mode 100644 tools/testing/selftests/idmap_mounts/.gitignore > create mode 100644 tools/testing/selftests/idmap_mounts/Makefile > create mode 100644 tools/testing/selftests/idmap_mounts/config > create mode 100644 tools/testing/selftests/idmap_mounts/core.c > create mode 100644 tools/testing/selftests/idmap_mounts/internal.h > create mode 100644 tools/testing/selftests/idmap_mounts/utils.c > create mode 100644 tools/testing/selftests/idmap_mounts/utils.h > create mode 100644 tools/testing/selftests/idmap_mounts/xattr.c > create mode 100644 tools/testing/selftests/mount_setattr/.gitignore > create mode 100644 tools/testing/selftests/mount_setattr/Makefile > create mode 100644 tools/testing/selftests/mount_setattr/config > create mode 100644 tools/testing/selftests/mount_setattr/mount_setattr_test.c > > > base-commit: 3cea11cd5e3b00d91caf0b4730194039b45c5891 > -- > 2.29.2 > 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 X-Spam-Level: X-Spam-Status: No, score=-13.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C909AC5519F for ; Fri, 20 Nov 2020 13:54:38 +0000 (UTC) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 072F222272 for ; Fri, 20 Nov 2020 13:54:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 072F222272 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=oracle.com Authentication-Results: mail.kernel.org; spf=tempfail smtp.mailfrom=linux-audit-bounces@redhat.com Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-570-11xEyNkUNDi53pAGxuvynA-1; Fri, 20 Nov 2020 08:54:32 -0500 X-MC-Unique: 11xEyNkUNDi53pAGxuvynA-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 0662F8145E2; Fri, 20 Nov 2020 13:54:29 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 633616085A; Fri, 20 Nov 2020 13:54:28 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 32E8D180954D; Fri, 20 Nov 2020 13:54:27 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 0AK6JAOW025305 for ; Fri, 20 Nov 2020 01:19:11 -0500 Received: by smtp.corp.redhat.com (Postfix) id D45AB10031FF; Fri, 20 Nov 2020 06:19:10 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast06.extmail.prod.ext.rdu2.redhat.com [10.11.55.22]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CF59E1004156 for ; Fri, 20 Nov 2020 06:19:04 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 34762185A7BC for ; Fri, 20 Nov 2020 06:19:04 +0000 (UTC) Received: from aserp2120.oracle.com (aserp2120.oracle.com [141.146.126.78]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-110-Rvb3_wPIOMGapYhZ8At69Q-1; Fri, 20 Nov 2020 01:19:01 -0500 X-MC-Unique: Rvb3_wPIOMGapYhZ8At69Q-1 Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 0AK2VHVq009850; Fri, 20 Nov 2020 02:35:33 GMT Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by aserp2120.oracle.com with ESMTP id 34t76m8mvh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 20 Nov 2020 02:35:32 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 0AK2TfR6136071; Fri, 20 Nov 2020 02:33:32 GMT Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userp3020.oracle.com with ESMTP id 34ts0und0k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 20 Nov 2020 02:33:31 +0000 Received: from abhmp0008.oracle.com (abhmp0008.oracle.com [141.146.116.14]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 0AK2XDYZ017419; Fri, 20 Nov 2020 02:33:14 GMT Received: from localhost (/10.159.242.34) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 19 Nov 2020 18:33:12 -0800 Date: Thu, 19 Nov 2020 18:33:09 -0800 From: "Darrick J. Wong" To: Christian Brauner Subject: Re: [PATCH v2 00/39] fs: idmapped mounts Message-ID: <20201120023309.GH9685@magnolia> References: <20201115103718.298186-1-christian.brauner@ubuntu.com> MIME-Version: 1.0 In-Reply-To: <20201115103718.298186-1-christian.brauner@ubuntu.com> X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9810 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 bulkscore=0 suspectscore=0 spamscore=0 malwarescore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2011200017 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9810 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 phishscore=0 adultscore=0 priorityscore=1501 bulkscore=0 clxscore=1011 mlxlogscore=999 malwarescore=0 mlxscore=0 spamscore=0 lowpriorityscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2011200017 X-MIME-Autoconverted: from 8bit to quoted-printable by aserp2120.oracle.com id 0AK2VHVq009850 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 0AK6JAOW025305 X-loop: linux-audit@redhat.com X-Mailman-Approved-At: Fri, 20 Nov 2020 08:54:26 -0500 Cc: Phil Estes , Lennart Poettering , Mimi Zohar , David Howells , Andreas Dilger , containers@lists.linux-foundation.org, Tycho Andersen , Jonathan Corbet , James Morris , smbarber@chromium.org, Christoph Hellwig , linux-ext4@vger.kernel.org, Mrunal Patel , Serge Hallyn , Arnd Bergmann , Jann Horn , selinux@vger.kernel.org, Josh Triplett , linux-fsdevel@vger.kernel.org, Aleksa Sarai , Alexander Viro , Andy Lutomirski , OGAWA Hirofumi , Geoffrey Thomas , James Bottomley , John Johansen , Theodore Tso , Seth Forshee , Dmitry Kasatkin , linux-security-module@vger.kernel.org, linux-audit@redhat.com, "Eric W. Biederman" , linux-api@vger.kernel.org, Alban Crequy , linux-integrity@vger.kernel.org, =?iso-8859-1?Q?St=E9phane?= Graber , Todd Kjos X-BeenThere: linux-audit@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Linux Audit Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-audit-bounces@redhat.com Errors-To: linux-audit-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=linux-audit-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Disposition: inline Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gU3VuLCBOb3YgMTUsIDIwMjAgYXQgMTE6MzY6MzlBTSArMDEwMCwgQ2hyaXN0aWFuIEJyYXVu ZXIgd3JvdGU6Cj4gSGV5IGV2ZXJ5b25lLAo+IAo+IFRoaXMgaXMgdjIuIEl0IGlzIHJld29ya2Vk IGFjY29yZGluZyB0byB0aGUgcmV2aWV3cyBjb21pbmcgZnJvbQo+IENocmlzdG9waCBhbmQgb3Ro ZXJzIHRvIGFkYXB0IGFsbCByZWxldmFudCBoZWxwZXJzIGFuZCBpbm9kZV9vcGVyYXRpb25zCj4g bWV0aG9kcyB0byBhY2NvdW50IGZvciBpZG1hcHBlZCBtb3VudHMgaW5zdGVhZCBvZiBpbnRyb2R1 Y2luZyBuZXcKPiBoZWxwZXJzIGFuZCBtZXRob2RzIHNwZWNpZmljIHRvIGlkbWFwcGVkIG1vdW50 cyBsaWtlIHdlIGRpZCBiZWZvcmUuCj4gV2UndmUgYWxzbyBtb3ZlZCB0aGUgb3ZlcmxheWZzIGNv bnZlcnNpb24gdG8gaGFuZGxlIGlkbWFwcGVkIG1vdW50cyBpbnRvCj4gYSBzZXBhcmF0ZSBwYXRj aHNldCB0aGF0IHdpbGwgYmUgc2VudCBvdXQgc2VwYXJhdGVseSBhZnRlciB0aGUgY29yZQo+IGNo YW5nZXMuIFRoZSBjb252ZXJ0ZWQgZmlsZXN5dGVtcyBpbiB0aGlzIHNlcmllcyBpbmNsdWRlIGZh dCBhbmQgZXh0NC4KPiBUaGUgY29uZmlnIG9wdGlvbiB0byBkaXNhYmxlIGlkbWFwcGVkIG1vdW50 cyBoYXMgYmVlbiBtb3ZlZCBmcm9tIGEgYSB2ZnMKPiBjb25maWcgcHRpb24gdG8gYSBwZXItZmls ZXN5c3RlbSBvcHRpb24uIFRoZXkgZGVmYXVsdCB0byBvZmYuIEhhdmluZyBhCj4gY29uZmlnIG9w dGlvbiBhbGxvd3MgdXMgdG8gZ2FpbiBzb21lIGNvbmZpZGVuY2UgaW4gdGhlIHBhdGNoc2V0IG92 ZXIKPiBtdWx0aXBsZSBrZXJuZWwgcmVsZWFzZXMuCgpTbyB1aCBJIG5vdGljZWQgdGhhdCB0aGUg bmV3IHVzZXJfbnMgcGFyYW1ldGVyIHBhc3NlZCB0byB0aGUgeGZzCmZ1bmN0aW9ucyBkb24ndCBh Y3R1YWxseSBnZXQgdXNlZCBmb3IgYW55dGhpbmcuICBEaWQgSSBtaXNzIHNvbWV0aGluZwp3aGVu IEkgcHVsbGVkIHRoZSBicmFuY2gsIG9yIGRvZXMgdGhpcyBzaW1wbHkgcmVmbGVjdCB4ZnMgbm90 IGhhdmluZyBhbnkKaWRtYXAgc3VwcG9ydD8gIEFuZCBob3cgd291bGQgb25lIGFkZCBzdWNoIGEg dGhpbmc/ICBSZXBsYWNlIHRoZQomaW5pdF91c2VyX25zIHdpdGggdGhlIHBhc3NlZC1pbiB1c2Vy X25zIHBhcmFtZXRlcj8KCj4gVGhlcmUgYXJlIHR3byBub3RlYWJsZSB0aGluZ3MgYWJvdXQgdGhp cyB2ZXJzaW9uLiBGaXJzdCwgdGhhdCBpdCBjb21lcwo+IHdpdGggYSByZWFsbHkgbGFyZ2UgdGVz dC1zdWl0ZSB0byB0ZXN0IGN1cnJlbnQgdmZzIGJlaGF2aW9yIGFuZAo+IGlkbWFwcGVkIG1vdW50 cyBiZWhhdmlvci4gV2UgaW50ZW5kIHRoaXMgdGVzdC1zdWl0ZSB0byBncm93IG92ZXIgdGltZQo+ IGFuZCBhdCBzb21lIHBvaW50IGNvdmVyIG1vc3QgYmFzaWMgY29yZSB2ZnMgZnVuY3Rpb25hbGl0 eSB0aGF0IGlzbid0Cj4gY292ZXJlZCBpbiB4ZnN0ZXN0cyBhbmQgaGF2ZSBpdCBiZSBwYXJ0IG9m IHRoZSBzZWxmdGVzdHMuCgpQbGVhc2UgcHV0IGVub3VnaCBvZiBhIHRlc3QgaW4gZnN0ZXN0cyB0 byBkbyBiYXNpYyB2YWxpZGF0aW9uIHRoYXQgd2UKZmlsZXN5c3RlbSBkZXZlbG9wZXJzIGRpZG4n dCBhY2NpZGVudGFsbHkgc2NyZXcgdGhpbmdzIHVwLgoKLS1ECgo+IFNlY29uZCwgd2hpbGUgd2hp bGUgd29ya2luZyBvbiBhZGFwdGluZyB0aGlzIHBhdGNoc2V0IHRvIHRoZSByZXF1ZXN0ZWQKPiBj aGFuZ2VzLCB0aGUgcnVuQyBhbmQgY29udGFpbmVyZCBjcm93ZCB3YXMgbmljZSBlbm91Z2ggdG8g YWRhcHQKPiBjb250YWluZXJkIHRvIHRoaXMgcGF0Y2hzZXQgdG8gbWFrZSB1c2Ugb2YgaWRtYXBw ZWQgbW91bnRzIGluIG9uZSBvZiB0aGUKPiBtb3N0IHdpZGVseSB1c2VkIGNvbnRhaW5lciBydW50 aW1lczoKPiBodHRwczovL2dpdGh1Yi5jb20vY29udGFpbmVyZC9jb250YWluZXJkL3B1bGwvNDcz NAo+IAo+IFdpdGggdGhpcyBwYXRjaHNldCB3ZSBtYWtlIGl0IHBvc3NpYmxlIHRvIGF0dGFjaCBp ZG1hcHBpbmdzIHRvIGJpbmQKPiBtb3VudHMuIFRoaXMgaGFuZGxlcyBzZXZlcmFsIGNvbW1vbiB1 c2UtY2FzZXMuIEhlcmUgYXJlIGp1c3QgYSBmZXc6Cj4gLSBTaGlmdGluZyBvZiBhIGNvbnRhaW5l ciByb290ZnMgb3IgYmFzZSBpbWFnZSB3aXRob3V0IGhhdmluZyB0byBtYW5nbGUKPiAgIGV2ZXJ5 IGZpbGUgKHJ1bmMsIERvY2tlciwgY29udGFpbmVyZCwgazhzLCBMWEQsIHN5c3RlbWQgLi4uKQo+ IC0gU2hhcmluZyBvZiBkYXRhIGJldHdlZW4gaG9zdCBvciBwcml2aWxlZ2VkIGNvbnRhaW5lcnMg d2l0aAo+ICAgdW5kZXJwcml2aWxlZ2VkIGNvbnRhaW5lcnMgKHJ1bmMsIERvY2tlciwgY29udGFp bmVyZCwgazhzLCBMWEQsIC4uLikKPiAtIFNoaWZ0aW5nIG9mIHN1YnNldCBvZiBvd25lcnNoaXAt bGVzcyBmaWxlc3lzdGVtcyAodmZhdCkgZm9yIHVzZSBieQo+ICAgbXVsdGlwbGUgdXNlcnMsIGVm ZmVjdGl2ZWx5IGFsbG93aW5nIGZvciBEQUMgb24gc3VjaCBkZXZpY2VzIChzeXN0ZW1kLAo+ICAg QW5kcm9pZCwgLi4uKQo+IC0gRGF0YSBzaGFyaW5nIGJldHdlZW4gbXVsdGlwbGUgdXNlciBuYW1l c3BhY2VzIHdpdGggaW5jb21wYXRpYmxlIG1hcHMKPiAgIChMWEQsIGs4cywgLi4uKQo+IE1ha2lu ZyBpdCBwb3NzaWJsZSB0byBzaGFyZSBkaXJlY3RvcmllcyBhbmQgbW91bnRzIGJldHdlZW4gdXNl cnMgd2l0aAo+IGRpZmZlcmVudCB1aWRzIGFuZCBnaWRzIGlzIGl0c2VsZiBxdWl0ZSBhbiBpbXBv cnRhbnQgdXNlLWNhc2UgaW4KPiBkaXN0cmlidXRlZCBzeXN0ZW1zIGVudmlyb25tZW50cy4gSXQn cyBvZiBjb3Vyc2UgZXNwZWNpYWxseSB1c2VmdWwgaW4KPiBnZW5lcmFsIGZvciBwb3J0YWJsZSB1 c2Igc3RpY2tzLCBzaGFyaW5nIGRhdGEgYmV0d2VlbiBtdWx0aXBsZSB1c2VycyBpbgo+IGdlbmVy YWwsIGFuZCBzaGFyaW5nIGhvbWUgZGlyZWN0b3JpZXMgYmV0d2VlbiBtdWx0aXBsZSB1c2Vycy4g VGhlIGxhc3QKPiBleGFtcGxlIGlzIG5vdyBlbGVnYW50bHkgZXhwcmVzc2VkIGluIHN5c3RlbWQn cyBob21lZCBjb25jZXB0IGZvcgo+IHBvcnRhYmxlIGhvbWUgZGlyZWN0b3JpZXMuIEFzIG1lbnRp b25lZCBhYm92ZSwgaWRtYXBwZWQgbW91bnRzIGFsc28KPiBhbGxvdyBkYXRhIGZyb20gdGhlIGhv c3QgdG8gYmUgc2hhcmVkIHdpdGggdW5wcml2aWxlZ2VkIGNvbnRhaW5lcnMsCj4gYmV0d2VlbiBw cml2aWxlZ2VkIGFuZCB1bnByaXZpbGVnZWQgY29udGFpbmVycyBzaW11bHRhbmVvdXNseSBhbmQg aW4KPiBhZGRpdGlvbiBhbHNvIGJldHdlZW4gdW5wcml2aWxlZ2VkIGNvbnRhaW5lcnMgd2l0aCBk aWZmZXJlbnQgaWRtYXBwaW5ncwo+IHdoZW5ldmVyIHRoZXkgYXJlIHVzZWQgdG8gaXNvbGF0ZSBv bmUgY29udGFpbmVyIGNvbXBsZXRlbHkgZnJvbSBhbm90aGVyCj4gY29udGFpbmVyLgo+IEFzIGNh biBiZSBzZWVuIGZyb20gYW5zd2VycyB0byBlYXJsaWVyIHRocmVhZHMgb2YgdGhpcyBwYXRjaHNl dCBhbmQgZnJvbQo+IHRoZSBsaXN0IG9mIHBvdGVudGlhbCB1c2VycyBpbnRlcmVzdCBpbiB0aGlz IHBhdGNoc2V0IGlzIGZhaXJseQo+IHdpZGVzcHJlYWQuCj4gCj4gV2UgaGF2ZSBpbXBsZW1lbnRl ZCBhbmQgcHJvcG9zZWQgbXVsdGlwbGUgc29sdXRpb25zIHRvIHRoaXMgYmVmb3JlLiBUaGlzCj4g aW5jbHVkZWQgdGhlIGludHJvZHVjdGlvbiBvZiBmc2lkIG1hcHBpbmdzLCBhIHRpbnkgZmlsZXN5 c3RlbSB0aGF0IGlzCj4gY3VycmVudGx5IGNhcnJpZWQgaW4gVWJ1bnR1IHRoYXQgaGFzIHNob3du IGl0J3MgbGltaXRhdGlvbnMsIGFuZCBhbgo+IGFwcHJvYWNoIHRvIGNhbGwgb3ZlcnJpZGUgY3Jl ZHMgaW4gdGhlIHZmcy4gTm9uZSBvZiB0aGVzZSBzb2x1dGlvbnMgaGF2ZQo+IGNvdmVyZWQgYWxs IG9mIHRoZSBhYm92ZSB1c2UtY2FzZXMuIFNvbWUgb2YgdGhlbSBoYXZlIGJlZW4gZmFpcmx5IGhh Y2t5Cj4gdG9vIGJ5IGUuZy4gdmlvbGF0aW5nIGhvdyB0aGluZ3Mgc2hvdWxkIGJlIHBhc3NlZCBk b3duIHRvIHRoZSBpbmRpdmlkdWFsCj4gZmlsZXN5c3RlbXMuCj4gVGhlIHNvbHV0aW9uIHByb3Bv c2VkIGhlcmUgaGFzIGl0J3Mgb3JpZ2lucyBpbiBtdWx0aXBsZSBkaXNjdXNzaW9ucwo+IGR1cmlu ZyBMaW51eCBQbHVtYmVycyAyMDE3IGR1cmluZyBhbmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgY29u dGFpbmVycwo+IG1pY3JvY29uZmVyZW5jZS4KPiBUbyB0aGUgYmVzdCBvZiBteSBrbm93bGVkZ2Ug dGhpcyBpbnZvbHZlZCBBbGVrc2EsIFN0w6lwaGFuZSwgRXJpYywgRGF2aWQsCj4gSmFtZXMsIGFu ZCBteXNlbGYuIFRoZSBvcmlnaW5hbCBpZGVhIG9yIGEgdmFyaWFudCB0aGVyZW9mIGhhcyBiZWVu Cj4gZGlzY3Vzc2VkLCBhZ2FpbiB0byB0aGUgYmVzdCBvZiBteSBrbm93bGVkZ2UsIGFmdGVyIGEg TGludXggY29uZmVyZW5jZQo+IGluIFN0LiBQZXRlcnNidXJnIGluIFJ1c3NpYSBpbiAyMDE3IGJl dHdlZW4gQ2hyaXN0b3BoLCBUeWNobywgYW5kCj4gbXlzZWxmLgo+IFdlJ3ZlIHRha2VuIHRoZSB0 aW1lIHRvIGltcGxlbWVudCBhIHdvcmtpbmcgdmVyc2lvbiBvZiB0aGlzIHNvbHV0aW9uCj4gb3Zl ciB0aGUgbGFzdCB3ZWVrcyB0byB0aGUgYmVzdCBvZiBteSBhYmlsaXRpZXMuIFR5Y2hvIGhhcyBz aWduZWQgdXAKPiBmb3IgdGhpcyBzbGlndGhseSBjcmF6eSBlbmRlYXZvdXIgYXMgd2VsbCBhbmQg aGUgaGFzIGhlbHBlZCB3aXRoIHRoZQo+IGNvbnZlcnNpb24gb2YgdGhlIHhhdHRyIGNvZGVwYXRo cyBhbmQgd2lsbCBiZSBpbnZvbHZlZCB3aXRoIG90aGVycyBpbgo+IGNvbnZlcnRpbmcgYWRkaXRp b25hbCBmaWxlc3lzdGVtcy4KPiAKPiBUaGlzIHNlcmllcyBtYWtlcyBpZG1hcHBpbmdzIGEgcHJv cGVydHkgb2Ygc3RydWN0IHZmc21vdW50IGluc3RlYWQgb2YKPiB0eWluZyBpdCB0byBhIHByb2Nl c3MgYmVpbmcgaW5zaWRlIG9mIGEgdXNlciBuYW1lc3BhY2Ugd2hpY2ggaGFzIGJlZW4KPiB0aGUg Y2FzZSBmb3IgYWxsIG90aGVyIHByb3Bvc2VkIGFwcHJvYWNoZXMuIEl0IGFsc28gYWxsb3dzIHRv IHBhc3MgZG93bgo+IHRoZSB1c2VyIG5hbWVzcGFjZSBpbnRvIHRoZSBmaWxlc3lzdG1zIHdoaWNo IGlzIGEgY2xlYW4gd2F5IGluc3RlYWQgb2YKPiB2aW9sYXRpbmcgY2FsbGluZyBjb252ZW50aW9u cyBieSBzdHJhcHBpbmcgdGhlIHVzZXIgbmFtZXNwYWNlCj4gaW5mb3JtYXRpb24gdGhhdCBpcyBh IHByb3BlcnR5IG9mIHRoZSBtb3VudCB0byB0aGUgY2FsbGVyJ3MgY3JlZGVudGlhbHMKPiBvciBz aW1pbGFyIGhhY2tzLgo+IFdpdGggdGhpcyBpZG1hcHBpbmdzIGJlY29tZSBhIHByb3BlcnR5IG9m IGJpbmQtbW91bnRzLCBpLmUuIGVhY2gKPiBiaW5kLW1vdW50IGNhbiBoYXZlIGEgc2VwYXJhdGUg aWRtYXBwaW5nLiBTdWNoIGlkbWFwcGVkIG1vdW50cyBjYW4gZXZlbgo+IGJlIGNyZWF0ZWQgaW5z aWRlIG9mIHRoZSBpbml0aWFsIHVzZXIgbmFtZXNwYWNlLgo+IAo+IFRoZSB2ZnNtb3VudCBzdHJ1 Y3QgZ2FpbnMgYSBuZXcgc3RydWN0IHVzZXJfbmFtZXNwYWNlIG1lbWJlci4gVGhlCj4gaWRtYXBw aW5nIG9mIHRoZSB1c2VyIG5hbWVzcGFjZSBiZWNvbWVzIHRoZSBpZG1hcHBpbmcgb2YgdGhlIG1v dW50LiBBCj4gY2FsbGVyIHRoYXQgaXMgcHJpdmlsZWdlZCB3aXRoIHJlc3BlY3QgdG8gdGhlIHVz ZXIgbmFtZXNwYWNlIG9mCj4gdGhlIHN1cGVyYmxvY2sgb2YgdGhlIHVuZGVybHlpbmcgZmlsZXN5 c3RlbSBjYW4gY3JlYXRlIGFuIGlkbWFwcGVkCj4gYmluZC1tb3VudC4gSW4gdGhlIGZ1dHVyZSwg d2UgY2FuIGVuYWJsZSB1bnByaXZpbGVnZWQgdXNlLWNhc2VzIGJ5Cj4gY2hlY2tpbmcgd2hldGhl ciB0aGUgY2FsbGVyIGlzIHByaXZpbGVnZWQgd3J0IHRvIHRoZSB1c2VyIG5hbWVzcGFjZSBhbgo+ IGFscmVhZHkgaWRtYXBwZWQgbW91bnQgaGFzIGJlZW4gbWFya2VkIHdpdGgsIGFsbG93aW5nIHRo ZW0gdG8gY2hhbmdlIHRoZQo+IGlkbWFwcGluZy4gRm9yIG5vdywga2VlcCB0aGluZ3Mgc2ltcGxl IHVudGlsIHdlIGZlZWwgc3VyZSBlbm91Z2guIE5vdGUsCj4gdGhhdCB3aXRoIHN5c2NhbGwgaW50 ZXJjZXB0aW9uIGl0IGlzIGFscmVhZHkgcG9zc2libGUgdG8gaW50ZXJjZXB0Cj4gaWRtYXBwZWQg bW91bnQgcmVxdWVzdHMgZnJvbSB1bnByaXZpbGVnZWQgY29udGFpbmVycyBhbmQgaGFuZGxlIHRo ZW0gaW4KPiBhIHN1ZmZpY2llbnRseSBwcml2aWxlZ2VkIGNvbnRhaW5lciBtYW5hZ2VyLiBTdXBw b3J0IGZvciB0aGlzIGlzCj4gYWxyZWFkeSBhdmFpbGFibGUgaW4gTFhEIGFuZCB3aWxsIGJlIGF2 YWlsYWJsZSBpbiBydW5DIHdlcmUgc3lzY2FsbAo+IGludGVyY2VwdGlvbiBpcyBjdXJyZW50bHkg YmVjb21pbmcgcGFydCBvZiB0aGUgcnVudGltZSBzcGVjIChzZWUKPiBodHRwczovL2dpdGh1Yi5j b20vb3BlbmNvbnRhaW5lcnMvcnVudGltZS1zcGVjL3B1bGwvMTA3NCkuCj4gCj4gVGhlIHVzZXIg bmFtZXNwYWNlIHRoZSBtb3VudCB3aWxsIGJlIG1hcmtlZCB3aXRoIGNhbiBiZSBzcGVjaWZpZWQg YnkKPiBwYXNzaW5nIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVyaW5nIHRvIHRoZSB1c2VyIG5hbWVz cGFjZSBhcyBhbiBhcmd1bWVudAo+IHRvIHRoZSBuZXcgbW91bnRfc2V0YXR0cigpIHN5c2NhbGwg dG9nZXRoZXIgd2l0aCB0aGUgbmV3Cj4gTU9VTlRfQVRUUl9JRE1BUCBmbGFnLiBCeSBkZWZhdWx0 IHZmc21vdW50cyBhcmUgbWFya2VkIHdpdGggdGhlIGluaXRpYWwKPiB1c2VyIG5hbWVzcGFjZSBh bmQgbm8gYmVoYXZpb3JhbCBvciBwZXJmb3JtYW5jZSBjaGFuZ2VzIHNob3VsZCBiZQo+IG9ic2Vy dmVkLiBBbGwgbWFwcGluZyBvcGVyYXRpb25zIGFyZSBub3BzIGZvciB0aGUgaW5pdGlhbCB1c2Vy Cj4gbmFtZXNwYWNlLiBXaGVuIGEgZmlsZS9pbm9kZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIGFuIGlk bWFwcGVkIG1vdW50IHRoZQo+IGlfdWlkIGFuZCBpX2dpZCBvZiB0aGUgaW5vZGUgd2lsbCBiZSBy ZW1hcHBlZCBhY2NvcmRpbmcgdG8gdGhlIHVzZXIKPiBuYW1lc3BhY2UgdGhlIG1vdW50IGhhcyBi ZWVuIG1hcmtlZCB3aXRoLgo+IAo+IEluIG9yZGVyIHRvIHN1cHBvcnQgaWRtYXBwZWQgbW91bnRz LCBmaWxlc3lzdGVtcyBuZWVkIHRvIGJlIGNoYW5nZWQgYW5kCj4gbWFyayB0aGVtc2VsdmVzIHdp dGggdGhlIEZTX0FMTE9XX0lETUFQIGZsYWcgaW4gZnNfZmxhZ3MuIFRoZSBpbml0aWFsCj4gdmVy c2lvbiBjb250YWlucyBmYXQgYW5kIGV4dDQgaW5jbHVkaW5nIGEgbGlzdCBvZiBleGFtcGxlcy4g QnV0IHBhdGNoZXMKPiBmb3Igb3RoZXIgZmlsZXN5c3RlbXMgYXJlIGFjdGl2ZWx5IHdvcmtlZCBv biBidXQgd2lsbCBiZSBzZW50IG91dAo+IHNlcGFyYXRlbHkuIFdlIGFyZSBoZXJlIHRvIHNlZSB0 aGlzIHRocm91Z2ggYW5kIHRoZXJlIGFyZSBtdWx0aXBsZQo+IHBlb3BsZSBpbnZvbHZlZCBpbiBj b252ZXJ0aW5nIGZpbGVzeXN0ZW1zLiBTbyBmaWxlc3lzdGVtIGRldmVsb3BlcnMgYXJlCj4gbm90 IGxlZnQgYWxvbmUgd2l0aCB0aGlzLgo+IAo+IEkgaGF2ZSB3cml0dGVuIGEgc2ltcGxlIHRvb2wg YXZhaWxhYmxlIGF0Cj4gaHR0cHM6Ly9naXRodWIuY29tL2JyYXVuZXIvbW91bnQtaWRtYXBwZWQg dGhhdCBhbGxvd3MgdG8gY3JlYXRlIGlkbWFwcGVkCj4gbW91bnRzIHNvIHBlb3BsZSBjYW4gcGxh eSB3aXRoIHRoaXMgcGF0Y2ggc2VyaWVzLiBIZXJlIGFyZSBhIGZldwo+IGlsbHVzdHJhdGlvbnM6 Cj4gCj4gMS4gQ3JlYXRlIGEgc2ltcGxlIGlkbWFwcGVkIG1vdW50IG9mIGFub3RoZXIgdXNlcidz IGhvbWUgZGlyZWN0b3J5Cj4gCj4gdTEwMDFAZjItdm06LyQgc3VkbyAuL21vdW50LWlkbWFwcGVk IC0tbWFwLW1vdW50IGI6MTAwMDoxMDAxOjEgL2hvbWUvdWJ1bnR1LyAvbW50Cj4gdTEwMDFAZjIt dm06LyQgbHMgLWFsIC9ob21lL3VidW50dS8KPiB0b3RhbCAyOAo+IGRyd3hyLXhyLXggMiB1YnVu dHUgdWJ1bnR1IDQwOTYgT2N0IDI4IDIyOjA3IC4KPiBkcnd4ci14ci14IDQgcm9vdCAgIHJvb3Qg ICA0MDk2IE9jdCAyOCAwNDowMCAuLgo+IC1ydy0tLS0tLS0gMSB1YnVudHUgdWJ1bnR1IDMxNTQg T2N0IDI4IDIyOjEyIC5iYXNoX2hpc3RvcnkKPiAtcnctci0tci0tIDEgdWJ1bnR1IHVidW50dSAg MjIwIEZlYiAyNSAgMjAyMCAuYmFzaF9sb2dvdXQKPiAtcnctci0tci0tIDEgdWJ1bnR1IHVidW50 dSAzNzcxIEZlYiAyNSAgMjAyMCAuYmFzaHJjCj4gLXJ3LXItLXItLSAxIHVidW50dSB1YnVudHUg IDgwNyBGZWIgMjUgIDIwMjAgLnByb2ZpbGUKPiAtcnctci0tci0tIDEgdWJ1bnR1IHVidW50dSAg ICAwIE9jdCAxNiAxNjoxMSAuc3Vkb19hc19hZG1pbl9zdWNjZXNzZnVsCj4gLXJ3LS0tLS0tLSAx IHVidW50dSB1YnVudHUgMTE0NCBPY3QgMjggMDA6NDMgLnZpbWluZm8KPiB1MTAwMUBmMi12bTov JCBscyAtYWwgL21udC8KPiB0b3RhbCAyOAo+IGRyd3hyLXhyLXggIDIgdTEwMDEgdTEwMDEgNDA5 NiBPY3QgMjggMjI6MDcgLgo+IGRyd3hyLXhyLXggMjkgcm9vdCAgcm9vdCAgNDA5NiBPY3QgMjgg MjI6MDEgLi4KPiAtcnctLS0tLS0tICAxIHUxMDAxIHUxMDAxIDMxNTQgT2N0IDI4IDIyOjEyIC5i YXNoX2hpc3RvcnkKPiAtcnctci0tci0tICAxIHUxMDAxIHUxMDAxICAyMjAgRmViIDI1ICAyMDIw IC5iYXNoX2xvZ291dAo+IC1ydy1yLS1yLS0gIDEgdTEwMDEgdTEwMDEgMzc3MSBGZWIgMjUgIDIw MjAgLmJhc2hyYwo+IC1ydy1yLS1yLS0gIDEgdTEwMDEgdTEwMDEgIDgwNyBGZWIgMjUgIDIwMjAg LnByb2ZpbGUKPiAtcnctci0tci0tICAxIHUxMDAxIHUxMDAxICAgIDAgT2N0IDE2IDE2OjExIC5z dWRvX2FzX2FkbWluX3N1Y2Nlc3NmdWwKPiAtcnctLS0tLS0tICAxIHUxMDAxIHUxMDAxIDExNDQg T2N0IDI4IDAwOjQzIC52aW1pbmZvCj4gdTEwMDFAZjItdm06LyQgdG91Y2ggL21udC9teS1maWxl Cj4gdTEwMDFAZjItdm06LyQgc2V0ZmFjbCAtbSB1OjEwMDE6cnd4IC9tbnQvbXktZmlsZQo+IHUx MDAxQGYyLXZtOi8kIHN1ZG8gc2V0Y2FwIC1uIDEwMDEgY2FwX25ldF9yYXcrZXAgL21udC9teS1m aWxlCj4gdTEwMDFAZjItdm06LyQgbHMgLWFsIC9tbnQvbXktZmlsZQo+IC1ydy1yd3hyLS0rIDEg dTEwMDEgdTEwMDEgMCBPY3QgMjggMjI6MTQgL21udC9teS1maWxlCj4gdTEwMDFAZjItdm06LyQg bHMgLWFsIC9ob21lL3VidW50dS9teS1maWxlCj4gLXJ3LXJ3eHItLSsgMSB1YnVudHUgdWJ1bnR1 IDAgT2N0IDI4IDIyOjE0IC9ob21lL3VidW50dS9teS1maWxlCj4gdTEwMDFAZjItdm06LyQgZ2V0 ZmFjbCAvbW50L215LWZpbGUKPiBnZXRmYWNsOiBSZW1vdmluZyBsZWFkaW5nICcvJyBmcm9tIGFi c29sdXRlIHBhdGggbmFtZXMKPiAjIGZpbGU6IG1udC9teS1maWxlCj4gIyBvd25lcjogdTEwMDEK PiAjIGdyb3VwOiB1MTAwMQo+IHVzZXI6OnJ3LQo+IHVzZXI6dTEwMDE6cnd4Cj4gZ3JvdXA6OnJ3 LQo+IG1hc2s6OnJ3eAo+IG90aGVyOjpyLS0KPiB1MTAwMUBmMi12bTovJCBnZXRmYWNsIC9ob21l L3VidW50dS9teS1maWxlCj4gZ2V0ZmFjbDogUmVtb3ZpbmcgbGVhZGluZyAnLycgZnJvbSBhYnNv bHV0ZSBwYXRoIG5hbWVzCj4gIyBmaWxlOiBob21lL3VidW50dS9teS1maWxlCj4gIyBvd25lcjog dWJ1bnR1Cj4gIyBncm91cDogdWJ1bnR1Cj4gdXNlcjo6cnctCj4gdXNlcjp1YnVudHU6cnd4Cj4g Z3JvdXA6OnJ3LQo+IG1hc2s6OnJ3eAo+IG90aGVyOjpyLS0KPiAKPiAyLiBDcmVhdGUgbWFwcGlu ZyBvZiB0aGUgd2hvbGUgZXh0NCByb290ZnMgd2l0aG91dCBhIG1hcHBpbmcgZm9yIHVpZCBhbmQg Z2lkIDAKPiAKPiB1YnVudHVAZjItdm06fiQgc3VkbyAvbW91bnQtaWRtYXBwZWQgLS1tYXAtbW91 bnQgYjoxOjE6NjU1MzYgLyAvbW50Lwo+IHVidW50dUBmMi12bTp+JCBmaW5kbW50IHwgZ3JlcCBt bnQKPiDilJTilIAvbW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvZGV2L3NkYTIg IGV4dDQgICAgICAgcncscmVsYXRpbWUKPiAgIOKUlOKUgC9tbnQvbW50ICAgICAgICAgICAgICAg ICAgICAgICAgICAvZGV2L3NkYTIgIGV4dDQgICAgICAgcncscmVsYXRpbWUKPiB1YnVudHVAZjIt dm06fiQgc3VkbyBta2RpciAvQVMtUk9PVC1DQU4tQ1JFQVRFCj4gdWJ1bnR1QGYyLXZtOn4kIHN1 ZG8gbWtkaXIgL21udC9BUy1ST09ULUNBTlQtQ1JFQVRFCj4gbWtkaXI6IGNhbm5vdCBjcmVhdGUg ZGlyZWN0b3J5IOKAmC9tbnQvQVMtUk9PVC1DQU5ULUNSRUFUReKAmTogVmFsdWUgdG9vIGxhcmdl IGZvciBkZWZpbmVkIGRhdGEgdHlwZQo+IHVidW50dUBmMi12bTp+JCBta2RpciAvbW50L2hvbWUv dWJ1bnR1L0FTLVVTRVItMTAwMC1DQU4tQ1JFQVRFCj4gCj4gMy4gQ3JlYXRlIGEgdmZhdCB1c2Ig bW91bnQgYW5kIGV4cG9zZSB0byB1c2VyIDEwMDEgYW5kIDUwMDAKPiAKPiB1YnVudHVAZjItdm06 LyQgc3VkbyBtb3VudCAvZGV2L3NkYiAvbW50Cj4gdWJ1bnR1QGYyLXZtOi8kIGZpbmRtbnQgIHwg Z3JlcCBtbnQKPiDilJTilIAvbW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvZGV2 L3NkYiB2ZmF0ICAgICAgIHJ3LHJlbGF0aW1lLGZtYXNrPTAwMjIsZG1hc2s9MDAyMixjb2RlcGFn ZT00MzcsaW9jaGFyc2V0PWlzbzg4NTktMSxzaG9ydG5hbWU9bWl4ZWQsZXJyb3JzPXJlbW91bnQt cm8KPiB1YnVudHVAZjItdm06LyQgbHMgLWFsIC9tbnQKPiB0b3RhbCAxMgo+IGRyd3hyLXhyLXgg IDIgcm9vdCByb290IDQwOTYgSmFuICAxICAxOTcwIC4KPiBkcnd4ci14ci14IDM0IHJvb3Qgcm9v dCA0MDk2IE9jdCAyOCAyMjoyNCAuLgo+IC1yd3hyLXhyLXggIDEgcm9vdCByb290ICAgIDQgT2N0 IDI4IDAzOjQ0IGFhYQo+IC1yd3hyLXhyLXggIDEgcm9vdCByb290ICAgIDAgT2N0IDI4IDAxOjA5 IGJiYgo+IHVidW50dUBmMi12bTovJCBzdWRvIC9tb3VudC1pZG1hcHBlZCAtLW1hcC1tb3VudCBi OjA6MTAwMToxIC9tbnQgL21udC0xMDAxLwo+IHVidW50dUBmMi12bTovJCBscyAtYWwgL21udC0x MDAxLwo+IHRvdGFsIDEyCj4gZHJ3eHIteHIteCAgMiB1MTAwMSB1MTAwMSA0MDk2IEphbiAgMSAg MTk3MCAuCj4gZHJ3eHIteHIteCAzNCByb290ICByb290ICA0MDk2IE9jdCAyOCAyMjoyNCAuLgo+ IC1yd3hyLXhyLXggIDEgdTEwMDEgdTEwMDEgICAgNCBPY3QgMjggMDM6NDQgYWFhCj4gLXJ3eHIt eHIteCAgMSB1MTAwMSB1MTAwMSAgICAwIE9jdCAyOCAwMTowOSBiYmIKPiB1YnVudHVAZjItdm06 LyQgc3VkbyAvbW91bnQtaWRtYXBwZWQgLS1tYXAtbW91bnQgYjowOjUwMDA6MSAvbW50IC9tbnQt NTAwMC8KPiB1YnVudHVAZjItdm06LyQgbHMgLWFsIC9tbnQtNTAwMC8KPiB0b3RhbCAxMgo+IGRy d3hyLXhyLXggIDIgNTAwMCA1MDAwIDQwOTYgSmFuICAxICAxOTcwIC4KPiBkcnd4ci14ci14IDM0 IHJvb3Qgcm9vdCA0MDk2IE9jdCAyOCAyMjoyNCAuLgo+IC1yd3hyLXhyLXggIDEgNTAwMCA1MDAw ICAgIDQgT2N0IDI4IDAzOjQ0IGFhYQo+IC1yd3hyLXhyLXggIDEgNTAwMCA1MDAwICAgIDAgT2N0 IDI4IDAxOjA5IGJiYgo+IAo+IDQuIENyZWF0ZSBhbiBpZG1hcHBlZCByb290ZnMgbW91bnQgZm9y IGEgY29udGFpbmVyCj4gCj4gcm9vdEBmMi12bTp+IyBscyAtYWwgL3Zhci9saWIvbHhjL2YyL3Jv b3Rmcy8KPiB0b3RhbCA2OAo+IGRyd3hyLXhyLXggMTcgMjAwMDAgMjAwMDAgNDA5NiBTZXAgMjQg MDc6NDggLgo+IGRyd3hyd3gtLS0gIDMgMjAwMDAgMjAwMDAgNDA5NiBPY3QgMTYgMTk6MjYgLi4K PiBscnd4cnd4cnd4ICAxIDIwMDAwIDIwMDAwICAgIDcgU2VwIDI0IDA3OjQzIGJpbiAtPiB1c3Iv YmluCj4gZHJ3eHIteHIteCAgMiAyMDAwMCAyMDAwMCA0MDk2IEFwciAxNSAgMjAyMCBib290Cj4g ZHJ3eHIteHIteCAgMyAyMDAwMCAyMDAwMCA0MDk2IE9jdCAxNiAxOToyNiBkZXYKPiBkcnd4ci14 ci14IDYxIDIwMDAwIDIwMDAwIDQwOTYgT2N0IDE2IDE5OjI2IGV0Ywo+IGRyd3hyLXhyLXggIDMg MjAwMDAgMjAwMDAgNDA5NiBTZXAgMjQgMDc6NDUgaG9tZQo+IGxyd3hyd3hyd3ggIDEgMjAwMDAg MjAwMDAgICAgNyBTZXAgMjQgMDc6NDMgbGliIC0+IHVzci9saWIKPiBscnd4cnd4cnd4ICAxIDIw MDAwIDIwMDAwICAgIDkgU2VwIDI0IDA3OjQzIGxpYjMyIC0+IHVzci9saWIzMgo+IGxyd3hyd3hy d3ggIDEgMjAwMDAgMjAwMDAgICAgOSBTZXAgMjQgMDc6NDMgbGliNjQgLT4gdXNyL2xpYjY0Cj4g bHJ3eHJ3eHJ3eCAgMSAyMDAwMCAyMDAwMCAgIDEwIFNlcCAyNCAwNzo0MyBsaWJ4MzIgLT4gdXNy L2xpYngzMgo+IGRyd3hyLXhyLXggIDIgMjAwMDAgMjAwMDAgNDA5NiBTZXAgMjQgMDc6NDMgbWVk aWEKPiBkcnd4ci14ci14ICAyIDIwMDAwIDIwMDAwIDQwOTYgU2VwIDI0IDA3OjQzIG1udAo+IGRy d3hyLXhyLXggIDIgMjAwMDAgMjAwMDAgNDA5NiBTZXAgMjQgMDc6NDMgb3B0Cj4gZHJ3eHIteHIt eCAgMiAyMDAwMCAyMDAwMCA0MDk2IEFwciAxNSAgMjAyMCBwcm9jCj4gZHJ3eC0tLS0tLSAgMiAy MDAwMCAyMDAwMCA0MDk2IFNlcCAyNCAwNzo0MyByb290Cj4gZHJ3eHIteHIteCAgMiAyMDAwMCAy MDAwMCA0MDk2IFNlcCAyNCAwNzo0NSBydW4KPiBscnd4cnd4cnd4ICAxIDIwMDAwIDIwMDAwICAg IDggU2VwIDI0IDA3OjQzIHNiaW4gLT4gdXNyL3NiaW4KPiBkcnd4ci14ci14ICAyIDIwMDAwIDIw MDAwIDQwOTYgU2VwIDI0IDA3OjQzIHNydgo+IGRyd3hyLXhyLXggIDIgMjAwMDAgMjAwMDAgNDA5 NiBBcHIgMTUgIDIwMjAgc3lzCj4gZHJ3eHJ3eHJ3dCAgMiAyMDAwMCAyMDAwMCA0MDk2IFNlcCAy NCAwNzo0NCB0bXAKPiBkcnd4ci14ci14IDEzIDIwMDAwIDIwMDAwIDQwOTYgU2VwIDI0IDA3OjQz IHVzcgo+IGRyd3hyLXhyLXggMTIgMjAwMDAgMjAwMDAgNDA5NiBTZXAgMjQgMDc6NDQgdmFyCj4g cm9vdEBmMi12bTp+IyAvbW91bnQtaWRtYXBwZWQgLS1tYXAtbW91bnQgYjoyMDAwMDoxMDAwMDox MDAwMDAgL3Zhci9saWIvbHhjL2YyL3Jvb3Rmcy8gL21udAo+IHJvb3RAZjItdm06fiMgbHMgLWFs IC9tbnQKPiB0b3RhbCA2OAo+IGRyd3hyLXhyLXggMTcgMTAwMDAgMTAwMDAgNDA5NiBTZXAgMjQg MDc6NDggLgo+IGRyd3hyLXhyLXggMzQgcm9vdCAgcm9vdCAgNDA5NiBPY3QgMjggMjI6MjQgLi4K PiBscnd4cnd4cnd4ICAxIDEwMDAwIDEwMDAwICAgIDcgU2VwIDI0IDA3OjQzIGJpbiAtPiB1c3Iv YmluCj4gZHJ3eHIteHIteCAgMiAxMDAwMCAxMDAwMCA0MDk2IEFwciAxNSAgMjAyMCBib290Cj4g ZHJ3eHIteHIteCAgMyAxMDAwMCAxMDAwMCA0MDk2IE9jdCAxNiAxOToyNiBkZXYKPiBkcnd4ci14 ci14IDYxIDEwMDAwIDEwMDAwIDQwOTYgT2N0IDE2IDE5OjI2IGV0Ywo+IGRyd3hyLXhyLXggIDMg MTAwMDAgMTAwMDAgNDA5NiBTZXAgMjQgMDc6NDUgaG9tZQo+IGxyd3hyd3hyd3ggIDEgMTAwMDAg MTAwMDAgICAgNyBTZXAgMjQgMDc6NDMgbGliIC0+IHVzci9saWIKPiBscnd4cnd4cnd4ICAxIDEw MDAwIDEwMDAwICAgIDkgU2VwIDI0IDA3OjQzIGxpYjMyIC0+IHVzci9saWIzMgo+IGxyd3hyd3hy d3ggIDEgMTAwMDAgMTAwMDAgICAgOSBTZXAgMjQgMDc6NDMgbGliNjQgLT4gdXNyL2xpYjY0Cj4g bHJ3eHJ3eHJ3eCAgMSAxMDAwMCAxMDAwMCAgIDEwIFNlcCAyNCAwNzo0MyBsaWJ4MzIgLT4gdXNy L2xpYngzMgo+IGRyd3hyLXhyLXggIDIgMTAwMDAgMTAwMDAgNDA5NiBTZXAgMjQgMDc6NDMgbWVk aWEKPiBkcnd4ci14ci14ICAyIDEwMDAwIDEwMDAwIDQwOTYgU2VwIDI0IDA3OjQzIG1udAo+IGRy d3hyLXhyLXggIDIgMTAwMDAgMTAwMDAgNDA5NiBTZXAgMjQgMDc6NDMgb3B0Cj4gZHJ3eHIteHIt eCAgMiAxMDAwMCAxMDAwMCA0MDk2IEFwciAxNSAgMjAyMCBwcm9jCj4gZHJ3eC0tLS0tLSAgMiAx MDAwMCAxMDAwMCA0MDk2IFNlcCAyNCAwNzo0MyByb290Cj4gZHJ3eHIteHIteCAgMiAxMDAwMCAx MDAwMCA0MDk2IFNlcCAyNCAwNzo0NSBydW4KPiBscnd4cnd4cnd4ICAxIDEwMDAwIDEwMDAwICAg IDggU2VwIDI0IDA3OjQzIHNiaW4gLT4gdXNyL3NiaW4KPiBkcnd4ci14ci14ICAyIDEwMDAwIDEw MDAwIDQwOTYgU2VwIDI0IDA3OjQzIHNydgo+IGRyd3hyLXhyLXggIDIgMTAwMDAgMTAwMDAgNDA5 NiBBcHIgMTUgIDIwMjAgc3lzCj4gZHJ3eHJ3eHJ3dCAgMiAxMDAwMCAxMDAwMCA0MDk2IFNlcCAy NCAwNzo0NCB0bXAKPiBkcnd4ci14ci14IDEzIDEwMDAwIDEwMDAwIDQwOTYgU2VwIDI0IDA3OjQz IHVzcgo+IGRyd3hyLXhyLXggMTIgMTAwMDAgMTAwMDAgNDA5NiBTZXAgMjQgMDc6NDQgdmFyCj4g cm9vdEBmMi12bTp+IyBseGMtc3RhcnQgZjIgIyB1c2VzIC9tbnQgYXMgcm9vdGZzCj4gcm9vdEBm Mi12bTp+IyBseGMtYXR0YWNoIGYyIC0tIGNhdCAvcHJvYy8xL3VpZF9tYXAKPiAgICAgICAgICAw ICAgICAgMTAwMDAgICAgICAxMDAwMAo+IHJvb3RAZjItdm06fiMgbHhjLWF0dGFjaCBmMiAtLSBj YXQgL3Byb2MvMS9naWRfbWFwCj4gICAgICAgICAgMCAgICAgIDEwMDAwICAgICAgMTAwMDAKPiBy b290QGYyLXZtOn4jIGx4Yy1hdHRhY2ggZjIgLS0gbHMgLWFsIC8KPiB0b3RhbCA1Mgo+IGRyd3hy LXhyLXggIDE3IHJvb3QgICByb290ICAgIDQwOTYgU2VwIDI0IDA3OjQ4IC4KPiBkcnd4ci14ci14 ICAxNyByb290ICAgcm9vdCAgICA0MDk2IFNlcCAyNCAwNzo0OCAuLgo+IGxyd3hyd3hyd3ggICAx IHJvb3QgICByb290ICAgICAgIDcgU2VwIDI0IDA3OjQzIGJpbiAtPiB1c3IvYmluCj4gZHJ3eHIt eHIteCAgIDIgcm9vdCAgIHJvb3QgICAgNDA5NiBBcHIgMTUgIDIwMjAgYm9vdAo+IGRyd3hyLXhy LXggICA1IHJvb3QgICByb290ICAgICA1MDAgT2N0IDI4IDIzOjM5IGRldgo+IGRyd3hyLXhyLXgg IDYxIHJvb3QgICByb290ICAgIDQwOTYgT2N0IDI4IDIzOjM5IGV0Ywo+IGRyd3hyLXhyLXggICAz IHJvb3QgICByb290ICAgIDQwOTYgU2VwIDI0IDA3OjQ1IGhvbWUKPiBscnd4cnd4cnd4ICAgMSBy b290ICAgcm9vdCAgICAgICA3IFNlcCAyNCAwNzo0MyBsaWIgLT4gdXNyL2xpYgo+IGxyd3hyd3hy d3ggICAxIHJvb3QgICByb290ICAgICAgIDkgU2VwIDI0IDA3OjQzIGxpYjMyIC0+IHVzci9saWIz Mgo+IGxyd3hyd3hyd3ggICAxIHJvb3QgICByb290ICAgICAgIDkgU2VwIDI0IDA3OjQzIGxpYjY0 IC0+IHVzci9saWI2NAo+IGxyd3hyd3hyd3ggICAxIHJvb3QgICByb290ICAgICAgMTAgU2VwIDI0 IDA3OjQzIGxpYngzMiAtPiB1c3IvbGlieDMyCj4gZHJ3eHIteHIteCAgIDIgcm9vdCAgIHJvb3Qg ICAgNDA5NiBTZXAgMjQgMDc6NDMgbWVkaWEKPiBkcnd4ci14ci14ICAgMiByb290ICAgcm9vdCAg ICA0MDk2IFNlcCAyNCAwNzo0MyBtbnQKPiBkcnd4ci14ci14ICAgMiByb290ICAgcm9vdCAgICA0 MDk2IFNlcCAyNCAwNzo0MyBvcHQKPiBkci14ci14ci14IDIzMiBub2JvZHkgbm9ncm91cCAgICAw IE9jdCAyOCAyMzozOSBwcm9jCj4gZHJ3eC0tLS0tLSAgIDIgcm9vdCAgIHJvb3QgICAgNDA5NiBP Y3QgMjggMjM6NDEgcm9vdAo+IGRyd3hyLXhyLXggIDEyIHJvb3QgICByb290ICAgICAzNjAgT2N0 IDI4IDIzOjM5IHJ1bgo+IGxyd3hyd3hyd3ggICAxIHJvb3QgICByb290ICAgICAgIDggU2VwIDI0 IDA3OjQzIHNiaW4gLT4gdXNyL3NiaW4KPiBkcnd4ci14ci14ICAgMiByb290ICAgcm9vdCAgICA0 MDk2IFNlcCAyNCAwNzo0MyBzcnYKPiBkci14ci14ci14ICAxMyBub2JvZHkgbm9ncm91cCAgICAw IE9jdCAyOCAyMzozOSBzeXMKPiBkcnd4cnd4cnd0ICAxMSByb290ICAgcm9vdCAgICA0MDk2IE9j dCAyOCAyMzo0MCB0bXAKPiBkcnd4ci14ci14ICAxMyByb290ICAgcm9vdCAgICA0MDk2IFNlcCAy NCAwNzo0MyB1c3IKPiBkcnd4ci14ci14ICAxMiByb290ICAgcm9vdCAgICA0MDk2IFNlcCAyNCAw Nzo0NCB2YXIKPiByb290QGYyLXZtOn4jIGx4Yy1hdHRhY2ggZjIgLS0gbHMgLWFsIC9teS1maWxl Cj4gLXJ3LXItLXItLSAxIHJvb3Qgcm9vdCAwIE9jdCAyOCAyMzo0MyAvbXktZmlsZQo+IHJvb3RA ZjItdm06fiMgbHMgLWFsIC92YXIvbGliL2x4Yy9mMi9yb290ZnMvbXktZmlsZQo+IC1ydy1yLS1y LS0gMSAyMDAwMCAyMDAwMCAwIE9jdCAyOCAyMzo0MyAvdmFyL2xpYi9seGMvZjIvcm9vdGZzL215 LWZpbGUKPiAKPiBJJ2QgbGlrZSB0byBzYXkgdGhhbmtzIHRvOgo+IEFsIGZvciBwb2ludGluZyBt ZSBpbnRvIHRoZSBkaXJlY3Rpb24gdG8gYXZvaWQgaW5vZGUgYWxpYXMgaXNzdWVzIGR1cmluZwo+ IGxvb2t1cC4gRGF2aWQgZm9yIHZhcmlvdXMgZGlzY3Vzc2lvbnMgYXJvdW5kIHRoaXMuIENocmlz dG9waCBmb3IgcHJvdmluZwo+IGEgZmlyc3QgcHJvcGVyIHJldmlldyBhbmQgZm9yIGJlaW5nIGlu dm9sdmVkIGluIHRoZSBvcmlnaW5hbCBpZGVhLiBUeWNobwo+IGZvciBoZWxwaW5nIHdpdGggdGhp cyBzZXJpZXMgYW5kIG9uIGZ1dHVyZSBwYXRjaGVzIHRvIGNvbnZlcnQKPiBmaWxlc3lzdGVtcy4g QWxiYW4gQ3JlcXV5IGFuZCB0aGUgS2ludm9sayBsb2NhdGVkIGp1c3QgYSBmZXcgc3RyZWV0cwo+ IGF3YXkgZnJvbSBtZSBpbiBCZXJsaW4gZm9yIHByb3ZpZGluZyB1c2UtY2FzZSBkaXNjdXNzaW9u cyBhbmQgd3JpdGluZwo+IHBhdGNoZXMgZm9yIGNvbnRhaW5lcmQhIFN0w6lwaGFuZSBmb3IgaGlz IGludmFsdWFibGUgaW5wdXQgb24gbWFueSB0aGluZ3MKPiBhbmQgbGV2ZWwgaGVhZCBhbmQgZW5h YmxpbmcgbWUgdG8gd29yayBvbiB0aGlzLiBBbWlyIGZvciBleHBsYWluaW5nIGFuZAo+IGRpc2N1 c3NpbmcgYXNwZWN0cyBvZiBvdmVybGF5ZnMgd2l0aCBtZS4gSSdkIGxpa2UgdG8gZXNwZWNpYWxs eSB0aGFuawo+IFNldGggRm9yc2hlZSBiZWNhdXNlIGhlIHByb3ZpZGVkIGEgbG90IG9mIGdvb2Qg YW5hbHlzaXMsIHN1Z2dlc3Rpb25zLAo+IGFuZCBwYXJ0aWNpcGF0ZWQgaW4gc2hvcnQtbm90aWNl IGRpc2N1c3Npb25zIGluIGJvdGggY2hhdCBhbmQgdmlkZW8gZm9yCj4gc29tZSBuaXR0eS1ncml0 dHkgdGVjaG5pY2FsIGRldGFpbHMuCj4gCj4gVGhpcyBzZXJpZXMgY2FuIGJlIGZvdW5kIGFuZCBw dWxsZWQgZnJvbSB0aGUgdGhyZWUgdXN1YWwgbG9jYXRpb25zOgo+IGh0dHBzOi8vZ2l0Lmtlcm5l bC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2JyYXVuZXIvbGludXguZ2l0L2xvZy8/aD1p ZG1hcHBlZF9tb3VudHMKPiBodHRwczovL2dpdGh1Yi5jb20vYnJhdW5lci9saW51eC90cmVlL2lk bWFwcGVkX21vdW50cwo+IGh0dHBzOi8vZ2l0bGFiLmNvbS9icmF1bmVyL2xpbnV4Ly0vY29tbWl0 cy9pZG1hcHBlZF9tb3VudHMKPiAKPiBUaGFua3MhCj4gQ2hyaXN0aWFuCj4gCj4gQ2hyaXN0aWFu IEJyYXVuZXIgKDM3KToKPiAgIG5hbWVzcGFjZTogdGFrZSBsb2NrX21vdW50X2hhc2goKSBkaXJl Y3RseSB3aGVuIGNoYW5naW5nIGZsYWdzCj4gICBtb3VudDogbWFrZSB7bG9jayx1bmxvY2t9X21v dW50X2hhc2goKSBzdGF0aWMKPiAgIG5hbWVzcGFjZTogb25seSB0YWtlIHJlYWQgbG9jayBpbiBk b19yZWNvbmZpZ3VyZV9tbnQoKQo+ICAgZnM6IGFkZCBtb3VudF9zZXRhdHRyKCkKPiAgIHRlc3Rz OiBhZGQgbW91bnRfc2V0YXR0cigpIHNlbGZ0ZXN0cwo+ICAgZnM6IGFkZCBpZCB0cmFuc2xhdGlv biBoZWxwZXJzCj4gICBtb3VudDogYXR0YWNoIG1hcHBpbmdzIHRvIG1vdW50cwo+ICAgY2FwYWJp bGl0eTogaGFuZGxlIGlkbWFwcGVkIG1vdW50cwo+ICAgbmFtZWk6IGFkZCBpZG1hcHBlZCBtb3Vu dCBhd2FyZSBwZXJtaXNzaW9uIGhlbHBlcnMKPiAgIGlub2RlOiBhZGQgaWRtYXBwZWQgbW91bnQg YXdhcmUgaW5pdCBhbmQgcGVybWlzc2lvbiBoZWxwZXJzCj4gICBhdHRyOiBoYW5kbGUgaWRtYXBw ZWQgbW91bnRzCj4gICBhY2w6IGhhbmRsZSBpZG1hcHBlZCBtb3VudHMKPiAgIGNvbW1vbmNhcDog aGFuZGxlIGlkbWFwcGVkIG1vdW50cwo+ICAgc3RhdDogaGFuZGxlIGlkbWFwcGVkIG1vdW50cwo+ ICAgbmFtZWk6IGhhbmRsZSBpZG1hcHBlZCBtb3VudHMgaW4gbWF5XyooKSBoZWxwZXJzCj4gICBu YW1laTogaW50cm9kdWNlIHN0cnVjdCByZW5hbWVkYXRhCj4gICBuYW1laTogcHJlcGFyZSBmb3Ig aWRtYXBwZWQgbW91bnRzCj4gICBvcGVuOiBoYW5kbGUgaWRtYXBwZWQgbW91bnRzIGluIGRvX3Ry dW5jYXRlKCkKPiAgIG9wZW46IGhhbmRsZSBpZG1hcHBlZCBtb3VudHMKPiAgIGFmX3VuaXg6IGhh bmRsZSBpZG1hcHBlZCBtb3VudHMKPiAgIHV0aW1lczogaGFuZGxlIGlkbWFwcGVkIG1vdW50cwo+ ICAgZmNudGw6IGhhbmRsZSBpZG1hcHBlZCBtb3VudHMKPiAgIG5vdGlmeTogaGFuZGxlIGlkbWFw cGVkIG1vdW50cwo+ICAgaW5pdDogaGFuZGxlIGlkbWFwcGVkIG1vdW50cwo+ICAgaW9jdGw6IGhh bmRsZSBpZG1hcHBlZCBtb3VudHMKPiAgIHdvdWxkX2R1bXA6IGhhbmRsZSBpZG1hcHBlZCBtb3Vu dHMKPiAgIGV4ZWM6IGhhbmRsZSBpZG1hcHBlZCBtb3VudHMKPiAgIGZzOiBhZGQgaGVscGVycyBm b3IgaWRtYXAgbW91bnRzCj4gICBhcHBhcm1vcjogaGFuZGxlIGlkbWFwcGVkIG1vdW50cwo+ICAg YXVkaXQ6IGhhbmRsZSBpZG1hcHBlZCBtb3VudHMKPiAgIGltYTogaGFuZGxlIGlkbWFwcGVkIG1v dW50cwo+ICAgZmF0OiBoYW5kbGUgaWRtYXBwZWQgbW91bnRzCj4gICBleHQ0OiBzdXBwb3J0IGlk bWFwcGVkIG1vdW50cwo+ICAgZWNyeXB0ZnM6IGRvIG5vdCBtb3VudCBvbiB0b3Agb2YgaWRtYXBw ZWQgbW91bnRzCj4gICBvdmVybGF5ZnM6IGRvIG5vdCBtb3VudCBvbiB0b3Agb2YgaWRtYXBwZWQg bW91bnRzCj4gICBmczogaW50cm9kdWNlIE1PVU5UX0FUVFJfSURNQVAKPiAgIHRlc3RzOiBhZGQg dmZzL2lkbWFwcGVkIG1vdW50cyB0ZXN0IHN1aXRlCj4gCj4gVHljaG8gQW5kZXJzZW4gKDIpOgo+ ICAgeGF0dHI6IGhhbmRsZSBpZG1hcHBlZCBtb3VudHMKPiAgIHNlbGZ0ZXN0czogYWRkIGlkbWFw cGVkIG1vdW50cyB4YXR0ciBzZWxmdGVzdAo+IAo+ICBEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1z L2xvY2tpbmcucnN0ICAgICAgICAgfCAgICA2ICstCj4gIERvY3VtZW50YXRpb24vZmlsZXN5c3Rl bXMvcG9ydGluZy5yc3QgICAgICAgICB8ICAgIDIgKwo+ICBEb2N1bWVudGF0aW9uL2ZpbGVzeXN0 ZW1zL3Zmcy5yc3QgICAgICAgICAgICAgfCAgIDE3ICstCj4gIGFyY2gvYWxwaGEva2VybmVsL3N5 c2NhbGxzL3N5c2NhbGwudGJsICAgICAgICB8ICAgIDEgKwo+ICBhcmNoL2FybS90b29scy9zeXNj YWxsLnRibCAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgYXJjaC9hcm02NC9pbmNsdWRl L2FzbS91bmlzdGQzMi5oICAgICAgICAgICAgIHwgICAgMiArCj4gIGFyY2gvaWE2NC9rZXJuZWwv c3lzY2FsbHMvc3lzY2FsbC50YmwgICAgICAgICB8ICAgIDEgKwo+ICBhcmNoL202OGsva2VybmVs L3N5c2NhbGxzL3N5c2NhbGwudGJsICAgICAgICAgfCAgICAxICsKPiAgYXJjaC9taWNyb2JsYXpl L2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibCAgIHwgICAgMSArCj4gIGFyY2gvbWlwcy9rZXJu ZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsICAgICB8ICAgIDEgKwo+ICBhcmNoL21pcHMva2Vy bmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibCAgICAgfCAgICAxICsKPiAgYXJjaC9taXBzL2tl cm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwgICAgIHwgICAgMSArCj4gIGFyY2gvcGFyaXNj L2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibCAgICAgICB8ICAgIDEgKwo+ICBhcmNoL3Bvd2Vy cGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsICAgICAgfCAgICAxICsKPiAgYXJjaC9wb3dl cnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL2lub2RlLmMgICAgIHwgICAgNSArLQo+ICBhcmNoL3Mz OTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsICAgICAgICAgfCAgICAxICsKPiAgYXJjaC9z aC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwgICAgICAgICAgIHwgICAgMSArCj4gIGFyY2gv c3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsICAgICAgICB8ICAgIDEgKwo+ICBhcmNo L3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibCAgICAgICAgfCAgICAxICsKPiAgYXJj aC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwgICAgICAgIHwgICAgMSArCj4gIGFy Y2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibCAgICAgICB8ICAgIDEgKwo+ICBk cml2ZXJzL2FuZHJvaWQvYmluZGVyZnMuYyAgICAgICAgICAgICAgICAgICAgfCAgICAzICstCj4g IGRyaXZlcnMvYmFzZS9kZXZ0bXBmcy5jICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKy0K PiAgZnMvOXAvYWNsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNyAr LQo+ICBmcy85cC92OWZzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAz ICstCj4gIGZzLzlwL3Y5ZnNfdmZzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDIgKy0KPiAgZnMvOXAvdmZzX2lub2RlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAzMiArLQo+ICBmcy85cC92ZnNfaW5vZGVfZG90bC5jICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDM0ICstCj4gIGZzLzlwL3hhdHRyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDEgKwo+ICBmcy9hZGZzL2FkZnMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAzICstCj4gIGZzL2FkZnMvaW5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIDUgKy0KPiAgZnMvYWZmcy9hZmZzLmggICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAxMCArLQo+ICBmcy9hZmZzL2lub2RlLmMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICA3ICstCj4gIGZzL2FmZnMvbmFtZWkuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMTUgKy0KPiAgZnMvYWZzL2Rpci5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAzNCArLQo+ICBmcy9hZnMvaW5vZGUuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICA1ICstCj4gIGZzL2Fmcy9pbnRlcm5hbC5oICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KPiAgZnMvYWZzL3NlY3VyaXR5LmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQo+ICBmcy9hZnMveGF0dHIuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKPiAgZnMvYXR0ci5jICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICA3OCArLQo+ICBmcy9hdXRvZnMvcm9vdC5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEzICstCj4gIGZzL2JhZF9pbm9kZS5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzEgKy0KPiAgZnMvYmZzL2Rpci5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArLQo+ICBmcy9idHJmcy9hY2wuYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA1ICstCj4gIGZzL2J0cmZzL2N0cmVl LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KPiAgZnMvYnRyZnMvaW5v ZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0MSArLQo+ICBmcy9idHJmcy9p b2N0bC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI1ICstCj4gIGZzL2J0cmZz L3Rlc3RzL2J0cmZzLXRlc3RzLmMgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KPiAgZnMvYnRy ZnMveGF0dHIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCj4gIGZzL2Nh Y2hlZmlsZXMvaW50ZXJmYWNlLmMgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KPiAgZnMv Y2FjaGVmaWxlcy9uYW1laS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOSArLQo+ICBm cy9jYWNoZWZpbGVzL3hhdHRyLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE2ICstCj4g IGZzL2NlcGgvYWNsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0K PiAgZnMvY2VwaC9kaXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMyAr LQo+ICBmcy9jZXBoL2lub2RlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEz ICstCj4gIGZzL2NlcGgvc3VwZXIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDggKy0KPiAgZnMvY2VwaC94YXR0ci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgMSArCj4gIGZzL2NpZnMvY2lmc2ZzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgIDQgKy0KPiAgZnMvY2lmcy9jaWZzZnMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAxOCArLQo+ICBmcy9jaWZzL2Rpci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICA4ICstCj4gIGZzL2NpZnMvaW5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMjIgKy0KPiAgZnMvY2lmcy9saW5rLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgMyArLQo+ICBmcy9jaWZzL3hhdHRyLmMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAxICsKPiAgZnMvY29kYS9jb2RhX2xpbnV4LmggICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgNCArLQo+ICBmcy9jb2RhL2Rpci5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDE4ICstCj4gIGZzL2NvZGEvaW5vZGUuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgIDUgKy0KPiAgZnMvY29kYS9waW9jdGwuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgNiArLQo+ICBmcy9jb25maWdmcy9jb25maWdmc19pbnRlcm5h bC5oICAgICAgICAgICAgICAgfCAgICA3ICstCj4gIGZzL2NvbmZpZ2ZzL2Rpci5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KPiAgZnMvY29uZmlnZnMvaW5vZGUuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgNSArLQo+ICBmcy9jb25maWdmcy9zeW1saW5rLmMg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA1ICstCj4gIGZzL2NvcmVkdW1wLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKy0KPiAgZnMvY3J5cHRvL3BvbGljeS5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQo+ICBmcy9kZWJ1Z2ZzL2lub2Rl LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICstCj4gIGZzL2VjcnlwdGZzL2Ny eXB0by5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KPiAgZnMvZWNyeXB0ZnMv aW5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3NCArLQo+ICBmcy9lY3J5cHRm cy9tYWluLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICsKPiAgZnMvZWNyeXB0 ZnMvbW1hcC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQo+ICBmcy9lZml2 YXJmcy9maWxlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCj4gIGZzL2Vm aXZhcmZzL2lub2RlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KPiAgZnMv ZXJvZnMvaW5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQo+ICBm cy9leGVjLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICstCj4g IGZzL2V4ZmF0L2V4ZmF0X2ZzLmggICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0K PiAgZnMvZXhmYXQvZmlsZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSAr LQo+ICBmcy9leGZhdC9uYW1laS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEz ICstCj4gIGZzL2V4dDIvYWNsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDUgKy0KPiAgZnMvZXh0Mi9hY2wuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgMyArLQo+ICBmcy9leHQyL2V4dDIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAyICstCj4gIGZzL2V4dDIvaWFsbG9jLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDIgKy0KPiAgZnMvZXh0Mi9pbm9kZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAxMSArLQo+ICBmcy9leHQyL2lvY3RsLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICA2ICstCj4gIGZzL2V4dDIvbmFtZWkuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMjIgKy0KPiAgZnMvZXh0Mi94YXR0cl9zZWN1cml0eS5jICAgICAgICAgICAg ICAgICAgICAgIHwgICAgMSArCj4gIGZzL2V4dDIveGF0dHJfdHJ1c3RlZC5jICAgICAgICAgICAg ICAgICAgICAgICB8ICAgIDEgKwo+ICBmcy9leHQyL3hhdHRyX3VzZXIuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAxICsKPiAgZnMvZXh0NC9LY29uZmlnICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgOSArCj4gIGZzL2V4dDQvYWNsLmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgIDUgKy0KPiAgZnMvZXh0NC9hY2wuaCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgMyArLQo+ICBmcy9leHQ0L2V4dDQuaCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDE1ICstCj4gIGZzL2V4dDQvaWFsbG9jLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKy0KPiAgZnMvZXh0NC9pbm9kZS5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAxNCArLQo+ICBmcy9leHQ0L2lvY3RsLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE4ICstCj4gIGZzL2V4dDQvbmFtZWkuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNTIgKy0KPiAgZnMvZXh0NC9zdXBlci5jICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArLQo+ICBmcy9leHQ0L3hhdHRyX2h1 cmQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgZnMvZXh0NC94YXR0cl9z ZWN1cml0eS5jICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCj4gIGZzL2V4dDQveGF0dHJf dHJ1c3RlZC5jICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwo+ICBmcy9leHQ0L3hhdHRy X3VzZXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgZnMvZjJmcy9hY2wu YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNSArLQo+ICBmcy9mMmZzL2Fj bC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICstCj4gIGZzL2YyZnMv ZjJmcy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KPiAgZnMvZjJm cy9maWxlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMyArLQo+ICBmcy9m MmZzL25hbWVpLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI2ICstCj4gIGZz L2YyZnMveGF0dHIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KPiAg ZnMvZmF0L2ZhdC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArLQo+ ICBmcy9mYXQvZmlsZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIwICst Cj4gIGZzL2ZhdC9uYW1laV9tc2Rvcy5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTUg Ky0KPiAgZnMvZmF0L25hbWVpX3ZmYXQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx NSArLQo+ICBmcy9mY250bC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAzICstCj4gIGZzL2Z1c2UvYWNsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgIDMgKy0KPiAgZnMvZnVzZS9kaXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICA0MSArLQo+ICBmcy9mdXNlL2Z1c2VfaS5oICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICA0ICstCj4gIGZzL2Z1c2UveGF0dHIuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIDIgKwo+ICBmcy9nZnMyL2FjbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICA1ICstCj4gIGZzL2dmczIvYWNsLmggICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgIDMgKy0KPiAgZnMvZ2ZzMi9maWxlLmMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgNCArLQo+ICBmcy9nZnMyL2lub2RlLmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDU0ICstCj4gIGZzL2dmczIvaW5vZGUuaCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgIDIgKy0KPiAgZnMvZ2ZzMi94YXR0ci5jICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgMSArCj4gIGZzL2hmcy9hdHRyLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgIDEgKwo+ICBmcy9oZnMvZGlyLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDEzICstCj4gIGZzL2hmcy9oZnNfZnMuaCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KPiAgZnMvaGZzL2lub2RlLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgNyArLQo+ICBmcy9oZnNwbHVzL2Rpci5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI1ICstCj4gIGZzL2hmc3BsdXMvaW5vZGUuYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKy0KPiAgZnMvaGZzcGx1cy9pb2N0bC5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQo+ICBmcy9oZnNwbHVzL3hhdHRy LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgZnMvaGZzcGx1cy94YXR0 cl9zZWN1cml0eS5jICAgICAgICAgICAgICAgICAgIHwgICAgMSArCj4gIGZzL2hmc3BsdXMveGF0 dHJfdHJ1c3RlZC5jICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwo+ICBmcy9oZnNwbHVzL3hh dHRyX3VzZXIuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgZnMvaG9zdGZzL2hv c3Rmc19rZXJuLmMgICAgICAgICAgICAgICAgICAgICAgIHwgICAzMSArLQo+ICBmcy9ocGZzL2hw ZnNfZm4uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCj4gIGZzL2hwZnMv aW5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKy0KPiAgZnMvaHBm cy9uYW1laS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMCArLQo+ICBmcy9o dWdldGxiZnMvaW5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMxICstCj4gIGZz L2luaXQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjEgKy0KPiAg ZnMvaW5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzOCArLQo+ ICBmcy9pbnRlcm5hbC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICsK PiAgZnMvamZmczIvYWNsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNSAr LQo+ICBmcy9qZmZzMi9hY2wuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAz ICstCj4gIGZzL2pmZnMyL2Rpci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MzIgKy0KPiAgZnMvamZmczIvZnMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgNyArLQo+ICBmcy9qZmZzMi9vcy1saW51eC5oICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAyICstCj4gIGZzL2pmZnMyL3NlY3VyaXR5LmMgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDEgKwo+ICBmcy9qZmZzMi94YXR0cl90cnVzdGVkLmMgICAgICAgICAgICAgICAgICAg ICAgfCAgICAxICsKPiAgZnMvamZmczIveGF0dHJfdXNlci5jICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgMSArCj4gIGZzL2pmcy9hY2wuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIDUgKy0KPiAgZnMvamZzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgOSArLQo+ICBmcy9qZnMvaW9jdGwuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAyICstCj4gIGZzL2pmcy9qZnNfYWNsLmggICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgIDMgKy0KPiAgZnMvamZzL2pmc19pbm9kZS5jICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgMiArLQo+ICBmcy9qZnMvamZzX2lub2RlLmggICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAyICstCj4gIGZzL2pmcy9uYW1laS5jICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMjEgKy0KPiAgZnMvamZzL3hhdHRyLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgMiArCj4gIGZzL2tlcm5mcy9kaXIuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKy0KPiAgZnMva2VybmZzL2lub2RlLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAxNSArLQo+ICBmcy9rZXJuZnMva2VybmZzLWludGVy bmFsLmggICAgICAgICAgICAgICAgICAgfCAgICA1ICstCj4gIGZzL2xpYmZzLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjAgKy0KPiAgZnMvbWluaXgvYml0bWFwLmMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQo+ICBmcy9taW5peC9maWxlLmMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA3ICstCj4gIGZzL21pbml4L2lub2Rl LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KPiAgZnMvbWluaXgvbmFt ZWkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNSArLQo+ICBmcy9tb3VudC5o ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwIC0KPiAgZnMvbmFtZWku YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMxNyArLQo+ICBmcy9uYW1l c3BhY2UuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDczICsrLQo+ICBmcy9u ZnMvZGlyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIzICstCj4gIGZz L25mcy9pbm9kZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KPiAg ZnMvbmZzL2ludGVybmFsLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMCArLQo+ ICBmcy9uZnMvbmFtZXNwYWNlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA3ICst Cj4gIGZzL25mcy9uZnMzX2ZzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMg Ky0KPiAgZnMvbmZzL25mczNhY2wuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg MyArLQo+ICBmcy9uZnMvbmZzNHByb2MuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAzICsKPiAgZnMvbmZzZC9uZnMyYWNsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgNCArLQo+ICBmcy9uZnNkL25mczNhY2wuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICA0ICstCj4gIGZzL25mc2QvbmZzNGFjbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDQgKy0KPiAgZnMvbmZzZC9uZnM0cmVjb3Zlci5jICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgNiArLQo+ICBmcy9uZnNkL25mc2ZoLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAyICstCj4gIGZzL25mc2QvbmZzcHJvYy5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgIDIgKy0KPiAgZnMvbmZzZC92ZnMuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICA0NyArLQo+ICBmcy9uaWxmczIvaW5vZGUuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDEzICstCj4gIGZzL25pbGZzMi9pb2N0bC5jICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgIDIgKy0KPiAgZnMvbmlsZnMyL25hbWVpLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAyMCArLQo+ICBmcy9uaWxmczIvbmlsZnMuaCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICA0ICstCj4gIGZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlm eV91c2VyLmMgICAgICAgICAgICB8ICAgIDIgKy0KPiAgZnMvbm90aWZ5L2lub3RpZnkvaW5vdGlm eV91c2VyLmMgICAgICAgICAgICAgIHwgICAgMyArLQo+ICBmcy9udGZzL2lub2RlLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCj4gIGZzL29jZnMyL2FjbC5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KPiAgZnMvb2NmczIvYWNsLmggICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArLQo+ICBmcy9vY2ZzMi9kbG1mcy9k bG1mcy5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE3ICstCj4gIGZzL29jZnMyL2ZpbGUu YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTMgKy0KPiAgZnMvb2NmczIvZmls ZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNSArLQo+ICBmcy9vY2ZzMi9p b2N0bC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCj4gIGZzL29jZnMy L25hbWVpLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjEgKy0KPiAgZnMvb2Nm czIvcmVmY291bnR0cmVlLmMgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQo+ICBmcy9v Y2ZzMi94YXR0ci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKPiAgZnMv b21mcy9kaXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMyArLQo+ICBm cy9vbWZzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA3ICstCj4g IGZzL29tZnMvaW5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0K PiAgZnMvb3Blbi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1MiAr LQo+ICBmcy9vcmFuZ2Vmcy9hY2wuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA1 ICstCj4gIGZzL29yYW5nZWZzL2lub2RlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MTUgKy0KPiAgZnMvb3JhbmdlZnMvbmFtZWkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAxMiArLQo+ICBmcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy1rZXJuZWwuaCAgICAgICAgICAgICAgICAg fCAgICA3ICstCj4gIGZzL29yYW5nZWZzL3hhdHRyLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDEgKwo+ICBmcy9vdmVybGF5ZnMvY29weV91cC5jICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDIwICstCj4gIGZzL292ZXJsYXlmcy9kaXIuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMzEgKy0KPiAgZnMvb3ZlcmxheWZzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgNiArLQo+ICBmcy9vdmVybGF5ZnMvaW5vZGUuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDIxICstCj4gIGZzL292ZXJsYXlmcy9vdmVybGF5ZnMuaCAgICAgICAgICAg ICAgICAgICAgICB8ICAgNDAgKy0KPiAgZnMvb3ZlcmxheWZzL3N1cGVyLmMgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAyNyArLQo+ICBmcy9vdmVybGF5ZnMvdXRpbC5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICA0ICstCj4gIGZzL3Bvc2l4X2FjbC5jICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgNzggKy0KPiAgZnMvcHJvYy9iYXNlLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAyNCArLQo+ICBmcy9wcm9jL2ZkLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCj4gIGZzL3Byb2MvZmQuaCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KPiAgZnMvcHJvYy9nZW5lcmljLmMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArLQo+ICBmcy9wcm9jL2ludGVybmFsLmgg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCj4gIGZzL3Byb2MvcHJvY19uZXQu YyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KPiAgZnMvcHJvYy9wcm9jX3N5 c2N0bC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArLQo+ICBmcy9wcm9jL3Jvb3Qu YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCj4gIGZzL3Byb2NfbmFt ZXNwYWNlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwo+ICBmcy9yYW1mcy9m aWxlLW5vbW11LmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICstCj4gIGZzL3JhbWZz L2lub2RlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKy0KPiAgZnMvcmVp c2VyZnMvYWNsLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArLQo+ICBmcy9y ZWlzZXJmcy9pbm9kZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA3ICstCj4gIGZz L3JlaXNlcmZzL2lvY3RsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KPiAg ZnMvcmVpc2VyZnMvbmFtZWkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMSArLQo+ ICBmcy9yZWlzZXJmcy9yZWlzZXJmcy5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICst Cj4gIGZzL3JlaXNlcmZzL3hhdHRyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIg Ky0KPiAgZnMvcmVpc2VyZnMveGF0dHIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg MiArLQo+ICBmcy9yZWlzZXJmcy94YXR0cl9hY2wuYyAgICAgICAgICAgICAgICAgICAgICAgfCAg ICA3ICstCj4gIGZzL3JlaXNlcmZzL3hhdHRyX3NlY3VyaXR5LmMgICAgICAgICAgICAgICAgICB8 ICAgIDMgKy0KPiAgZnMvcmVpc2VyZnMveGF0dHJfdHJ1c3RlZC5jICAgICAgICAgICAgICAgICAg IHwgICAgMyArLQo+ICBmcy9yZWlzZXJmcy94YXR0cl91c2VyLmMgICAgICAgICAgICAgICAgICAg ICAgfCAgICAzICstCj4gIGZzL3JlbWFwX3JhbmdlLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIDcgKy0KPiAgZnMvc3RhdC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAxMCArLQo+ICBmcy9zeXN2L2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICA3ICstCj4gIGZzL3N5c3YvaWFsbG9jLmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgIDIgKy0KPiAgZnMvc3lzdi9pdHJlZS5jICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgMiArLQo+ICBmcy9zeXN2L25hbWVpLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDIxICstCj4gIGZzL3RyYWNlZnMvaW5vZGUuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KPiAgZnMvdWJpZnMvZGlyLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAyOSArLQo+ICBmcy91Ymlmcy9maWxlLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICA1ICstCj4gIGZzL3ViaWZzL2lvY3RsLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KPiAgZnMvdWJpZnMvdWJpZnMuaCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArLQo+ICBmcy91Ymlmcy94YXR0ci5jICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgZnMvdWRmL2ZpbGUuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArLQo+ICBmcy91ZGYvaWFsbG9jLmMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCj4gIGZzL3VkZi9uYW1laS5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjQgKy0KPiAgZnMvdWRmL3N5bWxp bmsuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQo+ICBmcy91ZnMvaWFs bG9jLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCj4gIGZzL3Vmcy9p bm9kZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKy0KPiAgZnMvdWZz L25hbWVpLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOSArLQo+ICBmcy91 ZnMvdWZzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICstCj4gIGZz L3V0aW1lcy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KPiAg ZnMvdmJveHNmL2Rpci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArLQo+ ICBmcy92Ym94c2YvdXRpbHMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA1ICst Cj4gIGZzL3Zib3hzZi92ZnNtb2QuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMg Ky0KPiAgZnMvdmVyaXR5L2VuYWJsZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg MiArLQo+ICBmcy94YXR0ci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MTM2ICstCj4gIGZzL3hmcy94ZnNfYWNsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgIDUgKy0KPiAgZnMveGZzL3hmc19hY2wuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgMyArLQo+ICBmcy94ZnMveGZzX2lvY3RsLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICA0ICstCj4gIGZzL3hmcy94ZnNfaW9wcy5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgNTUgKy0KPiAgZnMveGZzL3hmc194YXR0ci5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgMyArLQo+ICBmcy96b25lZnMvc3VwZXIuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICA5ICstCj4gIGluY2x1ZGUvbGludXgvYXVkaXQuaCAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMTAgKy0KPiAgaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmggICAgICAg ICAgICAgICAgICAgIHwgICAxNCArLQo+ICBpbmNsdWRlL2xpbnV4L2ZzLmggICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMTQ1ICstCj4gIGluY2x1ZGUvbGludXgvaW1hLmggICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMTUgKy0KPiAgaW5jbHVkZS9saW51eC9sc21faG9va19kZWZz LmggICAgICAgICAgICAgICAgIHwgICAxNSArLQo+ICBpbmNsdWRlL2xpbnV4L2xzbV9ob29rcy5o ICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgaW5jbHVkZS9saW51eC9tb3VudC5oICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAxNCArLQo+ICBpbmNsdWRlL2xpbnV4L25mc19mcy5o ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCj4gIGluY2x1ZGUvbGludXgvcG9zaXhf YWNsLmggICAgICAgICAgICAgICAgICAgICB8ICAgMTUgKy0KPiAgaW5jbHVkZS9saW51eC9wb3Np eF9hY2xfeGF0dHIuaCAgICAgICAgICAgICAgIHwgICAxMiArLQo+ICBpbmNsdWRlL2xpbnV4L3Nl Y3VyaXR5LmggICAgICAgICAgICAgICAgICAgICAgfCAgIDQ0ICstCj4gIGluY2x1ZGUvbGludXgv c3lzY2FsbHMuaCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwo+ICBpbmNsdWRlL2xpbnV4 L3hhdHRyLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMwICstCj4gIGluY2x1ZGUvdWFw aS9hc20tZ2VuZXJpYy91bmlzdGQuaCAgICAgICAgICAgICB8ICAgIDQgKy0KPiAgaW5jbHVkZS91 YXBpL2xpbnV4L21vdW50LmggICAgICAgICAgICAgICAgICAgIHwgICAyNSArCj4gIGlwYy9tcXVl dWUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTYgKy0KPiAga2VybmVs L2F1ZGl0c2MuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyOSArLQo+ICBrZXJu ZWwvYnBmL2lub2RlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEzICstCj4gIGtl cm5lbC9jYXBhYmlsaXR5LmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTQgKy0KPiAg a2VybmVsL2Nncm91cC9jZ3JvdXAuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQo+ ICBrZXJuZWwvc3lzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICst Cj4gIG1tL21hZHZpc2UuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQg Ky0KPiAgbW0vbWVtY29udHJvbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg MiArLQo+ICBtbS9taW5jb3JlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICA0ICstCj4gIG1tL3NobWVtLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgNDUgKy0KPiAgbmV0L3NvY2tldC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgNiArLQo+ICBuZXQvdW5peC9hZl91bml4LmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICA0ICstCj4gIHNlY3VyaXR5L2FwcGFybW9yL2FwcGFybW9yZnMuYyAgICAgICAgICAg ICAgICB8ICAgIDMgKy0KPiAgc2VjdXJpdHkvYXBwYXJtb3IvZG9tYWluLmMgICAgICAgICAgICAg ICAgICAgIHwgICAxMyArLQo+ICBzZWN1cml0eS9hcHBhcm1vci9maWxlLmMgICAgICAgICAgICAg ICAgICAgICAgfCAgICA1ICstCj4gIHNlY3VyaXR5L2FwcGFybW9yL2xzbS5jICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMTIgKy0KPiAgc2VjdXJpdHkvY29tbW9uY2FwLmMgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICA0NiArLQo+ICBzZWN1cml0eS9pbnRlZ3JpdHkvZXZtL2V2bV9jcnlw dG8uYyAgICAgICAgICAgfCAgIDExICstCj4gIHNlY3VyaXR5L2ludGVncml0eS9ldm0vZXZtX21h aW4uYyAgICAgICAgICAgICB8ICAgIDQgKy0KPiAgc2VjdXJpdHkvaW50ZWdyaXR5L2V2bS9ldm1f c2VjZnMuYyAgICAgICAgICAgIHwgICAgMiArLQo+ICBzZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2lt YS5oICAgICAgICAgICAgICAgICAgfCAgIDE5ICstCj4gIHNlY3VyaXR5L2ludGVncml0eS9pbWEv aW1hX2FwaS5jICAgICAgICAgICAgICB8ICAgMTAgKy0KPiAgc2VjdXJpdHkvaW50ZWdyaXR5L2lt YS9pbWFfYXBwcmFpc2UuYyAgICAgICAgIHwgICAyMiArLQo+ICBzZWN1cml0eS9pbnRlZ3JpdHkv aW1hL2ltYV9hc3ltbWV0cmljX2tleXMuYyAgfCAgICAyICstCj4gIHNlY3VyaXR5L2ludGVncml0 eS9pbWEvaW1hX21haW4uYyAgICAgICAgICAgICB8ICAgMjggKy0KPiAgc2VjdXJpdHkvaW50ZWdy aXR5L2ltYS9pbWFfcG9saWN5LmMgICAgICAgICAgIHwgICAxNyArLQo+ICBzZWN1cml0eS9pbnRl Z3JpdHkvaW1hL2ltYV9xdWV1ZV9rZXlzLmMgICAgICAgfCAgICAyICstCj4gIHNlY3VyaXR5L3Nl Y3VyaXR5LmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjUgKy0KPiAgc2VjdXJpdHkv c2VsaW51eC9ob29rcy5jICAgICAgICAgICAgICAgICAgICAgIHwgICAyMiArLQo+ICBzZWN1cml0 eS9zbWFjay9zbWFja19sc20uYyAgICAgICAgICAgICAgICAgICAgfCAgIDE4ICstCj4gIHRvb2xz L2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaCAgICAgICB8ICAgIDQgKy0KPiAgdG9v bHMvdGVzdGluZy9zZWxmdGVzdHMvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAgMSArCj4gIC4u Li90ZXN0aW5nL3NlbGZ0ZXN0cy9pZG1hcF9tb3VudHMvLmdpdGlnbm9yZSB8ICAgIDIgKwo+ICB0 b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9pZG1hcF9tb3VudHMvTWFrZWZpbGUgfCAgIDEyICsKPiAg dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaWRtYXBfbW91bnRzL2NvbmZpZyAgIHwgICAgMSArCj4g IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2lkbWFwX21vdW50cy9jb3JlLmMgICB8IDM0NzYgKysr KysrKysrKysrKysrKysKPiAgLi4uL3Rlc3Rpbmcvc2VsZnRlc3RzL2lkbWFwX21vdW50cy9pbnRl cm5hbC5oIHwgIDEyNyArCj4gIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2lkbWFwX21vdW50cy91 dGlscy5jICB8ICAxMzYgKwo+ICB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9pZG1hcF9tb3VudHMv dXRpbHMuaCAgfCAgIDE3ICsKPiAgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaWRtYXBfbW91bnRz L3hhdHRyLmMgIHwgIDE3MiArCj4gIC4uLi9zZWxmdGVzdHMvbW91bnRfc2V0YXR0ci8uZ2l0aWdu b3JlICAgICAgICB8ICAgIDEgKwo+ICAuLi4vdGVzdGluZy9zZWxmdGVzdHMvbW91bnRfc2V0YXR0 ci9NYWtlZmlsZSAgfCAgICA3ICsKPiAgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW91bnRfc2V0 YXR0ci9jb25maWcgIHwgICAgMSArCj4gIC4uLi9tb3VudF9zZXRhdHRyL21vdW50X3NldGF0dHJf dGVzdC5jICAgICAgICB8ICA4ODkgKysrKysKPiAgMzM1IGZpbGVzIGNoYW5nZWQsIDc1OTQgaW5z ZXJ0aW9ucygrKSwgMTU3MCBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xz L3Rlc3Rpbmcvc2VsZnRlc3RzL2lkbWFwX21vdW50cy8uZ2l0aWdub3JlCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9pZG1hcF9tb3VudHMvTWFrZWZpbGUKPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2lkbWFwX21vdW50cy9j b25maWcKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2lkbWFw X21vdW50cy9jb3JlLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL2lkbWFwX21vdW50cy9pbnRlcm5hbC5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy90 ZXN0aW5nL3NlbGZ0ZXN0cy9pZG1hcF9tb3VudHMvdXRpbHMuYwo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaWRtYXBfbW91bnRzL3V0aWxzLmgKPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2lkbWFwX21vdW50cy94YXR0ci5j Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tb3VudF9zZXRh dHRyLy5naXRpZ25vcmUKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL21vdW50X3NldGF0dHIvTWFrZWZpbGUKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rl c3Rpbmcvc2VsZnRlc3RzL21vdW50X3NldGF0dHIvY29uZmlnCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tb3VudF9zZXRhdHRyL21vdW50X3NldGF0dHJfdGVz dC5jCj4gCj4gCj4gYmFzZS1jb21taXQ6IDNjZWExMWNkNWUzYjAwZDkxY2FmMGI0NzMwMTk0MDM5 YjQ1YzU4OTEKPiAtLSAKPiAyLjI5LjIKPiAKCgotLQpMaW51eC1hdWRpdCBtYWlsaW5nIGxpc3QK TGludXgtYXVkaXRAcmVkaGF0LmNvbQpodHRwczovL3d3dy5yZWRoYXQuY29tL21haWxtYW4vbGlz dGluZm8vbGludXgtYXVkaXQ=