From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael Kerrisk (man-pages)" Subject: getrichacl(1) man page review comments Date: Sun, 7 Feb 2016 17:30:49 +0100 Message-ID: <56B77139.4080209@gmail.com> References: <56B770B6.7040803@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Return-path: In-Reply-To: <56B770B6.7040803-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> Sender: linux-nfs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Andreas Gruenbacher Cc: mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, "J. Bruce Fields" , linux-ext4-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, xfs-VZNHf3L845pBDgjK7y7TUQ@public.gmane.org, lkml , linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Linux API , Dave Chinner , Christoph Hellwig , Anna Schumaker , Trond Myklebust , Jeff Layton , Andreas Dilger List-Id: linux-api@vger.kernel.org Hello Andreas, Here, some comments on the getrichacl(1) page. > .\" > .\" Richacl Manual Pages > .\" > .\" Copyright (C) 2015 Red Hat, Inc. > .\" Written by Andreas Gruenbacher > .\" This is free documentation; you can redistribute it and/or > .\" modify it under the terms of the GNU General Public License as > .\" published by the Free Software Foundation; either version 2 of > .\" the License, or (at your option) any later version. > .\" > .\" The GNU General Public License's references to "object code" > .\" and "executables" are to be interpreted as the output of any > .\" document formatting or typesetting system, including > .\" intermediate and printed output. > .\" > .\" This manual is distributed in the hope that it will be useful, > .\" but WITHOUT ANY WARRANTY; without even the implied warranty of > .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > .\" GNU General Public License for more details. > .\" > .\" You should have received a copy of the GNU General Public > .\" License along with this manual. If not, see > .\" . > .\" > .TH GETRICHACL 7 2015-09-01 "Linux" "Rich Access Control Lists" >=20 > .SH NAME > getrichacl \- Get Rich Access Control Lists >=20 > .SH SYNOPSIS > .B getrichacl > .RI [ OPTION "]... [" FILE ]... In man-pages, at least, the convention is to use lower case for these pieces (and thus through the remainder of the page), so: > .RI [ option "]... [" file ]... > .SH DESCRIPTION > For each file, getrichacl displays the file name and Rich Access Cont= rol List =46or man-pages, at least, the convention is that the references to the function/command name explained in the page are bold, do: =2EBR getrichacl > (richacl). =46or what it's worth, I think it would be worthwhile to start with a consistent abbreviation comment here (and use it throughout all of th= e man pages): "RichACL" (or "richACL"), rather than "richacl"; that seems more consistent with the traditional abbreviation "ACL". >=20 > By default, getrichacl displays the effective permissions remaining a= fter =2EBR getrichacl > applying the file masks to the ACL. The file masks and underlying NF= Sv4 ACL > can be displayed with the \-\-raw option. Use =2EBR \-\-raw >=20 > The output format of getrichacl is as follows: =2EBR getrichacl > .fam C > .RS > .nf > 1: file: > 2: flags:a > 3: owner:rwp-------------::mask > 4: group:r-p-------------::mask > 5: other:r---------------::mask > 6: owner@:rwp-------------::allow > 7: user:foo:r-p-------------::allow > 8: group@:r-p-------------::allow > 9: group:bar:r-p-------------::allow > 10: everyone@:r---------------::allow > 11: > .fi > .RE > .fam T >=20 > Line 1 contains the file name, followed by a colon. >=20 > Line 2 contains the ACL flags. This line is omitted if no flags are s= et. >=20 > Lines 3--5 indicate the owner, group, and other file masks, which are= only > shown if the \-\-raw option is specified. >=20 > Lines 6--10 indicate different ACL entries for the file owner > .RB ( owner@ ), > user foo, the owning group > .RB ( group@ ), > group bar, and for everyone =2EIR bar , > .RB ( everyone@ ). >=20 > A blank line follows at the end. >=20 > By default, getrichacl displays the the single-letter forms of flags = and =2EBR getrichacl s/the the/the/ > permissions, the identifiers of ACL entryies are right justified, the s/entryies/entries/ > permissions are vertically aligned, and permissions which are always > granted > .RB ( read_attributes ", " read_acl ", " synchronize ) > are omitted. See the richacl(7) manual page for the defined flags and Use =2EBR richachl (7) for page cross references. > permissions. >=20 > When getrichacl is used on a file that does not have a richacl or on = a =2EBR getrichacl > filesystem that does not support richacls, getrichacl displays the ac= cess =2EBR getrichacl > permissions defined by the traditional file permission bits as a rich= acl. When > getrichacl is used on a file that has a POSIX ACL, it prints an error= message. =2EBR getrichacl And then: [...] has a POSIX ACL (see =2EBR acl (7)), it prints [...] >=20 > .SH OPTIONS > .TP > \fB\-\-long\fR, \fB\-l\fR > Display access masks and flags in their long form. > .TP > \fB\-\-full\fR > Also show permissions which are always implicitly allowed. > .TP > \fB\-\-raw\fR > Show acls as stored on the file system including the file masks. Impl= ies s/axls/ACLs/ > \fB\-\-full\fR. > .TP > \fB\-\-unaligned\fR > Do not align ACL entries or pad missing permissions with '-'. > .TP > \fB\-\-numeric-ids\fR > Display numeric user and group IDs instead of names. > .TP > \fB\-\-access\fR [=3D\fIuser\fR[:\fIgroup\fR:...]}, \fB\-a\fR[\fIuser= \fR[:\fIgroup\fR:...]} > Instead of the ACL, show which permissions the caller or a specified = user has "caller"? "the user running the command, " > for file(s). When a list of groups is given, this overrides the grou= ps the s/file(s)/specified file(s)/ > user is in. The preceding text is not very clear. > .TP > \fB\-\-version\fR, \fB\-v\fR > Display the version of getrichacl and exit. =2EBR getrichacl > .TP > \fB\-\-help\fR, \fB\-h\fR > Display command-line usage help text. >=20 > .SH AUTHOR > Written by Andreas Gr=C3=BCnbacher . >=20 > Please send your bug reports, suggested features and comments to the = above address. >=20 > .SH CONFORMING TO > Rich Access Control Lists are Linux-specific. >=20 > .SH SEE ALSO > .BR setrichacl (1), > .BR richacl (7) Cheers, Michael --=20 Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/ -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f54.google.com ([74.125.82.54]:33557 "EHLO mail-wm0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751146AbcBGQay (ORCPT ); Sun, 7 Feb 2016 11:30:54 -0500 Subject: getrichacl(1) man page review comments To: Andreas Gruenbacher References: <56B770B6.7040803@gmail.com> Cc: mtk.manpages@gmail.com, "J. Bruce Fields" , linux-ext4@vger.kernel.org, xfs@oss.sgi.com, lkml , linux-fsdevel@vger.kernel.org, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org, Linux API , Dave Chinner , Christoph Hellwig , Anna Schumaker , Trond Myklebust , Jeff Layton , Andreas Dilger From: "Michael Kerrisk (man-pages)" Message-ID: <56B77139.4080209@gmail.com> Date: Sun, 7 Feb 2016 17:30:49 +0100 MIME-Version: 1.0 In-Reply-To: <56B770B6.7040803@gmail.com> Content-Type: text/plain; charset=utf-8 Sender: linux-nfs-owner@vger.kernel.org List-ID: Hello Andreas, Here, some comments on the getrichacl(1) page. > .\" > .\" Richacl Manual Pages > .\" > .\" Copyright (C) 2015 Red Hat, Inc. > .\" Written by Andreas Gruenbacher > .\" This is free documentation; you can redistribute it and/or > .\" modify it under the terms of the GNU General Public License as > .\" published by the Free Software Foundation; either version 2 of > .\" the License, or (at your option) any later version. > .\" > .\" The GNU General Public License's references to "object code" > .\" and "executables" are to be interpreted as the output of any > .\" document formatting or typesetting system, including > .\" intermediate and printed output. > .\" > .\" This manual is distributed in the hope that it will be useful, > .\" but WITHOUT ANY WARRANTY; without even the implied warranty of > .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > .\" GNU General Public License for more details. > .\" > .\" You should have received a copy of the GNU General Public > .\" License along with this manual. If not, see > .\" . > .\" > .TH GETRICHACL 7 2015-09-01 "Linux" "Rich Access Control Lists" > > .SH NAME > getrichacl \- Get Rich Access Control Lists > > .SH SYNOPSIS > .B getrichacl > .RI [ OPTION "]... [" FILE ]... In man-pages, at least, the convention is to use lower case for these pieces (and thus through the remainder of the page), so: > .RI [ option "]... [" file ]... > .SH DESCRIPTION > For each file, getrichacl displays the file name and Rich Access Control List For man-pages, at least, the convention is that the references to the function/command name explained in the page are bold, do: .BR getrichacl > (richacl). For what it's worth, I think it would be worthwhile to start with a consistent abbreviation comment here (and use it throughout all of the man pages): "RichACL" (or "richACL"), rather than "richacl"; that seems more consistent with the traditional abbreviation "ACL". > > By default, getrichacl displays the effective permissions remaining after .BR getrichacl > applying the file masks to the ACL. The file masks and underlying NFSv4 ACL > can be displayed with the \-\-raw option. Use .BR \-\-raw > > The output format of getrichacl is as follows: .BR getrichacl > .fam C > .RS > .nf > 1: file: > 2: flags:a > 3: owner:rwp-------------::mask > 4: group:r-p-------------::mask > 5: other:r---------------::mask > 6: owner@:rwp-------------::allow > 7: user:foo:r-p-------------::allow > 8: group@:r-p-------------::allow > 9: group:bar:r-p-------------::allow > 10: everyone@:r---------------::allow > 11: > .fi > .RE > .fam T > > Line 1 contains the file name, followed by a colon. > > Line 2 contains the ACL flags. This line is omitted if no flags are set. > > Lines 3--5 indicate the owner, group, and other file masks, which are only > shown if the \-\-raw option is specified. > > Lines 6--10 indicate different ACL entries for the file owner > .RB ( owner@ ), > user foo, the owning group > .RB ( group@ ), > group bar, and for everyone .IR bar , > .RB ( everyone@ ). > > A blank line follows at the end. > > By default, getrichacl displays the the single-letter forms of flags and .BR getrichacl s/the the/the/ > permissions, the identifiers of ACL entryies are right justified, the s/entryies/entries/ > permissions are vertically aligned, and permissions which are always > granted > .RB ( read_attributes ", " read_acl ", " synchronize ) > are omitted. See the richacl(7) manual page for the defined flags and Use .BR richachl (7) for page cross references. > permissions. > > When getrichacl is used on a file that does not have a richacl or on a .BR getrichacl > filesystem that does not support richacls, getrichacl displays the access .BR getrichacl > permissions defined by the traditional file permission bits as a richacl. When > getrichacl is used on a file that has a POSIX ACL, it prints an error message. .BR getrichacl And then: [...] has a POSIX ACL (see .BR acl (7)), it prints [...] > > .SH OPTIONS > .TP > \fB\-\-long\fR, \fB\-l\fR > Display access masks and flags in their long form. > .TP > \fB\-\-full\fR > Also show permissions which are always implicitly allowed. > .TP > \fB\-\-raw\fR > Show acls as stored on the file system including the file masks. Implies s/axls/ACLs/ > \fB\-\-full\fR. > .TP > \fB\-\-unaligned\fR > Do not align ACL entries or pad missing permissions with '-'. > .TP > \fB\-\-numeric-ids\fR > Display numeric user and group IDs instead of names. > .TP > \fB\-\-access\fR [=\fIuser\fR[:\fIgroup\fR:...]}, \fB\-a\fR[\fIuser\fR[:\fIgroup\fR:...]} > Instead of the ACL, show which permissions the caller or a specified user has "caller"? "the user running the command, " > for file(s). When a list of groups is given, this overrides the groups the s/file(s)/specified file(s)/ > user is in. The preceding text is not very clear. > .TP > \fB\-\-version\fR, \fB\-v\fR > Display the version of getrichacl and exit. .BR getrichacl > .TP > \fB\-\-help\fR, \fB\-h\fR > Display command-line usage help text. > > .SH AUTHOR > Written by Andreas Grünbacher . > > Please send your bug reports, suggested features and comments to the above address. > > .SH CONFORMING TO > Rich Access Control Lists are Linux-specific. > > .SH SEE ALSO > .BR setrichacl (1), > .BR richacl (7) Cheers, Michael -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/ From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 525A97CA2 for ; Sun, 7 Feb 2016 10:30:56 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 426BC8F8033 for ; Sun, 7 Feb 2016 08:30:56 -0800 (PST) Received: from mail-wm0-f41.google.com (mail-wm0-f41.google.com [74.125.82.41]) by cuda.sgi.com with ESMTP id O5Or5MFLYwk4rLcy (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO) for ; Sun, 07 Feb 2016 08:30:53 -0800 (PST) Received: by mail-wm0-f41.google.com with SMTP id g62so105381795wme.0 for ; Sun, 07 Feb 2016 08:30:53 -0800 (PST) Subject: getrichacl(1) man page review comments References: <56B770B6.7040803@gmail.com> From: "Michael Kerrisk (man-pages)" Message-ID: <56B77139.4080209@gmail.com> Date: Sun, 7 Feb 2016 17:30:49 +0100 MIME-Version: 1.0 In-Reply-To: <56B770B6.7040803@gmail.com> List-Id: XFS Filesystem from SGI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xfs-bounces@oss.sgi.com Sender: xfs-bounces@oss.sgi.com To: Andreas Gruenbacher Cc: Andreas Dilger , linux-cifs@vger.kernel.org, linux-nfs@vger.kernel.org, Christoph Hellwig , Linux API , Trond Myklebust , lkml , xfs@oss.sgi.com, "J. Bruce Fields" , mtk.manpages@gmail.com, linux-fsdevel@vger.kernel.org, Jeff Layton , linux-ext4@vger.kernel.org, Anna Schumaker SGVsbG8gQW5kcmVhcywKCkhlcmUsIHNvbWUgY29tbWVudHMgb24gdGhlIGdldHJpY2hhY2woMSkg cGFnZS4KCj4gLlwiCj4gLlwiIFJpY2hhY2wgTWFudWFsIFBhZ2VzCj4gLlwiCj4gLlwiIENvcHly aWdodCAoQykgMjAxNSAgUmVkIEhhdCwgSW5jLgo+IC5cIiBXcml0dGVuIGJ5IEFuZHJlYXMgR3J1 ZW5iYWNoZXIgPGFncnVlbmJhQHJlZGhhdC5jb20+Cj4gLlwiIFRoaXMgaXMgZnJlZSBkb2N1bWVu dGF0aW9uOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiAuXCIgbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKPiAuXCIg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIgb2YKPiAuXCIgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCj4gLlwiCj4gLlwiIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSdzIHJlZmVy ZW5jZXMgdG8gIm9iamVjdCBjb2RlIgo+IC5cIiBhbmQgImV4ZWN1dGFibGVzIiBhcmUgdG8gYmUg aW50ZXJwcmV0ZWQgYXMgdGhlIG91dHB1dCBvZiBhbnkKPiAuXCIgZG9jdW1lbnQgZm9ybWF0dGlu ZyBvciB0eXBlc2V0dGluZyBzeXN0ZW0sIGluY2x1ZGluZwo+IC5cIiBpbnRlcm1lZGlhdGUgYW5k IHByaW50ZWQgb3V0cHV0Lgo+IC5cIgo+IC5cIiBUaGlzIG1hbnVhbCBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+IC5cIiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+IC5cIiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Cj4gLlwiIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gLlwi Cj4gLlwiIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYwo+IC5cIiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBtYW51YWwuICBJZiBub3QsIHNl ZQo+IC5cIiA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCj4gLlwiCj4gLlRIIEdFVFJJ Q0hBQ0wgNyAyMDE1LTA5LTAxICJMaW51eCIgIlJpY2ggQWNjZXNzIENvbnRyb2wgTGlzdHMiCj4g Cj4gLlNIIE5BTUUKPiBnZXRyaWNoYWNsIFwtIEdldCBSaWNoIEFjY2VzcyBDb250cm9sIExpc3Rz Cj4gCj4gLlNIIFNZTk9QU0lTCj4gLkIgZ2V0cmljaGFjbAo+IC5SSSBbIE9QVElPTiAiXS4uLiBb IiBGSUxFIF0uLi4KCkluIG1hbi1wYWdlcywgYXQgbGVhc3QsIHRoZSBjb252ZW50aW9uIGlzIHRv IHVzZSBsb3dlciBjYXNlIGZvciB0aGVzZQpwaWVjZXMgKGFuZCB0aHVzIHRocm91Z2ggdGhlIHJl bWFpbmRlciBvZiB0aGUgcGFnZSksIHNvOgoKPiAuUkkgWyBvcHRpb24gIl0uLi4gWyIgZmlsZSBd Li4uCgo+IC5TSCBERVNDUklQVElPTgo+IEZvciBlYWNoIGZpbGUsIGdldHJpY2hhY2wgZGlzcGxh eXMgdGhlIGZpbGUgbmFtZSBhbmQgUmljaCBBY2Nlc3MgQ29udHJvbCBMaXN0CgpGb3IgbWFuLXBh Z2VzLCBhdCBsZWFzdCwgdGhlIGNvbnZlbnRpb24gaXMgdGhhdCB0aGUgcmVmZXJlbmNlcyB0byB0 aGUKZnVuY3Rpb24vY29tbWFuZCBuYW1lIGV4cGxhaW5lZCBpbiB0aGUgcGFnZSBhcmUgYm9sZCwg ZG86CgouQlIgZ2V0cmljaGFjbAoKPiAocmljaGFjbCkuCgpGb3Igd2hhdCBpdCdzIHdvcnRoLCBJ IHRoaW5rIGl0IHdvdWxkIGJlIHdvcnRod2hpbGUgdG8gc3RhcnQgd2l0aAphIGNvbnNpc3RlbnQg YWJicmV2aWF0aW9uIGNvbW1lbnQgaGVyZSAoYW5kIHVzZSBpdCB0aHJvdWdob3V0IGFsbCBvZiB0 aGUKbWFuIHBhZ2VzKTogIlJpY2hBQ0wiIChvciAicmljaEFDTCIpLCByYXRoZXIgdGhhbiAicmlj aGFjbCI7IHRoYXQgc2VlbXMKbW9yZSBjb25zaXN0ZW50IHdpdGggdGhlIHRyYWRpdGlvbmFsIGFi YnJldmlhdGlvbiAiQUNMIi4KCj4gCj4gQnkgZGVmYXVsdCwgZ2V0cmljaGFjbCBkaXNwbGF5cyB0 aGUgZWZmZWN0aXZlIHBlcm1pc3Npb25zIHJlbWFpbmluZyBhZnRlcgoKLkJSIGdldHJpY2hhY2wK Cj4gYXBwbHlpbmcgdGhlIGZpbGUgbWFza3MgdG8gdGhlIEFDTC4gIFRoZSBmaWxlIG1hc2tzIGFu ZCB1bmRlcmx5aW5nIE5GU3Y0IEFDTAo+IGNhbiBiZSBkaXNwbGF5ZWQgd2l0aCB0aGUgXC1cLXJh dyBvcHRpb24uCgpVc2UKLkJSIFwtXC1yYXcKCj4gCj4gVGhlIG91dHB1dCBmb3JtYXQgb2YgZ2V0 cmljaGFjbCBpcyBhcyBmb2xsb3dzOgoKLkJSIGdldHJpY2hhY2wKCj4gLmZhbSBDCj4gLlJTCj4g Lm5mCj4gIDE6ICBmaWxlOgo+ICAyOiAgICAgIGZsYWdzOmEKPiAgMzogICAgICBvd25lcjpyd3At LS0tLS0tLS0tLS0tOjptYXNrCj4gIDQ6ICAgICAgZ3JvdXA6ci1wLS0tLS0tLS0tLS0tLTo6bWFz awo+ICA1OiAgICAgIG90aGVyOnItLS0tLS0tLS0tLS0tLS06Om1hc2sKPiAgNjogICAgIG93bmVy QDpyd3AtLS0tLS0tLS0tLS0tOjphbGxvdwo+ICA3OiAgIHVzZXI6Zm9vOnItcC0tLS0tLS0tLS0t LS06OmFsbG93Cj4gIDg6ICAgICBncm91cEA6ci1wLS0tLS0tLS0tLS0tLTo6YWxsb3cKPiAgOTog IGdyb3VwOmJhcjpyLXAtLS0tLS0tLS0tLS0tOjphbGxvdwo+IDEwOiAgZXZlcnlvbmVAOnItLS0t LS0tLS0tLS0tLS06OmFsbG93Cj4gMTE6Cj4gLmZpCj4gLlJFCj4gLmZhbSBUCj4gCj4gTGluZSAx IGNvbnRhaW5zIHRoZSBmaWxlIG5hbWUsIGZvbGxvd2VkIGJ5IGEgY29sb24uCj4gCj4gTGluZSAy IGNvbnRhaW5zIHRoZSBBQ0wgZmxhZ3MuIFRoaXMgbGluZSBpcyBvbWl0dGVkIGlmIG5vIGZsYWdz IGFyZSBzZXQuCj4gCj4gTGluZXMgMy0tNSBpbmRpY2F0ZSB0aGUgb3duZXIsIGdyb3VwLCBhbmQg b3RoZXIgZmlsZSBtYXNrcywgd2hpY2ggYXJlIG9ubHkKPiBzaG93biBpZiB0aGUgXC1cLXJhdyBv cHRpb24gaXMgc3BlY2lmaWVkLgo+IAo+IExpbmVzIDYtLTEwIGluZGljYXRlIGRpZmZlcmVudCBB Q0wgZW50cmllcyBmb3IgdGhlIGZpbGUgb3duZXIKPiAuUkIgKCBvd25lckAgKSwKPiB1c2VyIGZv bywgdGhlIG93bmluZyBncm91cAo+IC5SQiAoIGdyb3VwQCApLAo+IGdyb3VwIGJhciwgYW5kIGZv ciBldmVyeW9uZQoKLklSIGJhciAsCgo+IC5SQiAoIGV2ZXJ5b25lQCApLgo+IAo+IEEgYmxhbmsg bGluZSBmb2xsb3dzIGF0IHRoZSBlbmQuCj4gCj4gQnkgZGVmYXVsdCwgZ2V0cmljaGFjbCBkaXNw bGF5cyB0aGUgdGhlIHNpbmdsZS1sZXR0ZXIgZm9ybXMgb2YgZmxhZ3MgYW5kCgouQlIgZ2V0cmlj aGFjbAoKcy90aGUgdGhlL3RoZS8KCj4gcGVybWlzc2lvbnMsIHRoZSBpZGVudGlmaWVycyBvZiBB Q0wgZW50cnlpZXMgYXJlIHJpZ2h0IGp1c3RpZmllZCwgdGhlCgpzL2VudHJ5aWVzL2VudHJpZXMv Cgo+IHBlcm1pc3Npb25zIGFyZSB2ZXJ0aWNhbGx5IGFsaWduZWQsIGFuZCBwZXJtaXNzaW9ucyB3 aGljaCBhcmUgYWx3YXlzCj4gZ3JhbnRlZAo+IC5SQiAoIHJlYWRfYXR0cmlidXRlcyAiLCAiIHJl YWRfYWNsICIsICIgc3luY2hyb25pemUgKQo+IGFyZSBvbWl0dGVkLiBTZWUgdGhlIHJpY2hhY2wo NykgbWFudWFsIHBhZ2UgZm9yIHRoZSBkZWZpbmVkIGZsYWdzIGFuZAoKVXNlCi5CUiByaWNoYWNo bCAoNykKZm9yIHBhZ2UgY3Jvc3MgcmVmZXJlbmNlcy4KCj4gcGVybWlzc2lvbnMuCj4gCj4gV2hl biBnZXRyaWNoYWNsIGlzIHVzZWQgb24gYSBmaWxlIHRoYXQgZG9lcyBub3QgaGF2ZSBhIHJpY2hh Y2wgb3Igb24gYQoKLkJSIGdldHJpY2hhY2wKCj4gZmlsZXN5c3RlbSB0aGF0IGRvZXMgbm90IHN1 cHBvcnQgcmljaGFjbHMsIGdldHJpY2hhY2wgZGlzcGxheXMgdGhlIGFjY2VzcwoKLkJSIGdldHJp Y2hhY2wKCj4gcGVybWlzc2lvbnMgZGVmaW5lZCBieSB0aGUgdHJhZGl0aW9uYWwgZmlsZSBwZXJt aXNzaW9uIGJpdHMgYXMgYSByaWNoYWNsLiBXaGVuCj4gZ2V0cmljaGFjbCBpcyB1c2VkIG9uIGEg ZmlsZSB0aGF0IGhhcyBhIFBPU0lYIEFDTCwgaXQgcHJpbnRzIGFuIGVycm9yIG1lc3NhZ2UuCgou QlIgZ2V0cmljaGFjbAoKQW5kIHRoZW46CgpbLi4uXSBoYXMgYSBQT1NJWCBBQ0wgKHNlZQouQlIg YWNsICg3KSksIGl0IHByaW50cyBbLi4uXQo+IAo+IC5TSCBPUFRJT05TCj4gLlRQCj4gXGZCXC1c LWxvbmdcZlIsIFxmQlwtbFxmUgo+IERpc3BsYXkgYWNjZXNzIG1hc2tzIGFuZCBmbGFncyBpbiB0 aGVpciBsb25nIGZvcm0uCj4gLlRQCj4gXGZCXC1cLWZ1bGxcZlIKPiBBbHNvIHNob3cgcGVybWlz c2lvbnMgd2hpY2ggYXJlIGFsd2F5cyBpbXBsaWNpdGx5IGFsbG93ZWQuCj4gLlRQCj4gXGZCXC1c LXJhd1xmUgo+IFNob3cgYWNscyBhcyBzdG9yZWQgb24gdGhlIGZpbGUgc3lzdGVtIGluY2x1ZGlu ZyB0aGUgZmlsZSBtYXNrcy4gSW1wbGllcwoKcy9heGxzL0FDTHMvCgo+IFxmQlwtXC1mdWxsXGZS Lgo+IC5UUAo+IFxmQlwtXC11bmFsaWduZWRcZlIKPiBEbyBub3QgYWxpZ24gQUNMIGVudHJpZXMg b3IgcGFkIG1pc3NpbmcgcGVybWlzc2lvbnMgd2l0aCAnLScuCj4gLlRQCj4gXGZCXC1cLW51bWVy aWMtaWRzXGZSCj4gRGlzcGxheSBudW1lcmljIHVzZXIgYW5kIGdyb3VwIElEcyBpbnN0ZWFkIG9m IG5hbWVzLgo+IC5UUAo+IFxmQlwtXC1hY2Nlc3NcZlIgWz1cZkl1c2VyXGZSWzpcZklncm91cFxm UjouLi5dfSwgXGZCXC1hXGZSW1xmSXVzZXJcZlJbOlxmSWdyb3VwXGZSOi4uLl19Cj4gSW5zdGVh ZCBvZiB0aGUgQUNMLCBzaG93IHdoaWNoIHBlcm1pc3Npb25zIHRoZSBjYWxsZXIgb3IgYSBzcGVj aWZpZWQgdXNlciBoYXMKCiJjYWxsZXIiPyAidGhlIHVzZXIgcnVubmluZyB0aGUgY29tbWFuZCwg IgoKPiBmb3IgZmlsZShzKS4gIFdoZW4gYSBsaXN0IG9mIGdyb3VwcyBpcyBnaXZlbiwgdGhpcyBv dmVycmlkZXMgdGhlIGdyb3VwcyB0aGUKCnMvZmlsZShzKS9zcGVjaWZpZWQgZmlsZShzKS8KCj4g dXNlciBpcyBpbi4KClRoZSBwcmVjZWRpbmcgdGV4dCBpcyBub3QgdmVyeSBjbGVhci4KCj4gLlRQ Cj4gXGZCXC1cLXZlcnNpb25cZlIsIFxmQlwtdlxmUgo+IERpc3BsYXkgdGhlIHZlcnNpb24gb2Yg Z2V0cmljaGFjbCBhbmQgZXhpdC4KCi5CUiBnZXRyaWNoYWNsCgo+IC5UUAo+IFxmQlwtXC1oZWxw XGZSLCBcZkJcLWhcZlIKPiBEaXNwbGF5IGNvbW1hbmQtbGluZSB1c2FnZSBoZWxwIHRleHQuCj4g Cj4gLlNIIEFVVEhPUgo+IFdyaXR0ZW4gYnkgQW5kcmVhcyBHcsO8bmJhY2hlciA8YWdydWVuYmFA cmVkaGF0LmNvbT4uCj4gCj4gUGxlYXNlIHNlbmQgeW91ciBidWcgcmVwb3J0cywgc3VnZ2VzdGVk IGZlYXR1cmVzIGFuZCBjb21tZW50cyB0byB0aGUgYWJvdmUgYWRkcmVzcy4KPiAKPiAuU0ggQ09O Rk9STUlORyBUTwo+IFJpY2ggQWNjZXNzIENvbnRyb2wgTGlzdHMgYXJlIExpbnV4LXNwZWNpZmlj Lgo+IAo+IC5TSCBTRUUgQUxTTwo+IC5CUiBzZXRyaWNoYWNsICgxKSwKPiAuQlIgcmljaGFjbCAo NykKCkNoZWVycywKCk1pY2hhZWwKCgotLSAKTWljaGFlbCBLZXJyaXNrCkxpbnV4IG1hbi1wYWdl cyBtYWludGFpbmVyOyBodHRwOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL21hbi1wYWdlcy8KTGludXgv VU5JWCBTeXN0ZW0gUHJvZ3JhbW1pbmcgVHJhaW5pbmc6IGh0dHA6Ly9tYW43Lm9yZy90cmFpbmlu Zy8KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnhmcyBt YWlsaW5nIGxpc3QKeGZzQG9zcy5zZ2kuY29tCmh0dHA6Ly9vc3Muc2dpLmNvbS9tYWlsbWFuL2xp c3RpbmZvL3hmcwo=