From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Molenda To: overseers@sources.redhat.com Subject: Re: Controlling cvs commit access Date: Mon, 16 Oct 2000 23:20:00 -0000 Message-ID: <20001016231918.A17732@shell17.ba.best.com> References: <20001014002746.A5942@shell17.ba.best.com> <20001016194459.B3344@cygnus.com> X-SW-Source: 2000-q4/msg00028.html Content-type: multipart/mixed; boundary="----------=_1583534828-34894-2" Message-ID: <20001016232000.LkEF9NPO9idDDB1R4ocVTNmBip3UsDmFwTNKo4I1XBw@z> This is a multi-part message in MIME format... ------------=_1583534828-34894-2 Content-length: 1434 On Mon, Oct 16, 2000 at 07:44:59PM -0400, Chris Faylor wrote: > On Sat, Oct 14, 2000 at 12:27:46AM -0700, Jason Molenda wrote: > >We have a large engineering organization at Yahoo with a wider > >variety of cvs uses than I'd seen before. I needed some fine-grained > >way of controlling access to parts of the repository, so I wrote > >a nice little access control list script. > I haven't seen anyone reply to this, but I would say that this is > very interesting and I'd welcome a patch or even a patched CVS. I'm not sure if it'll be of any use on sourceware/gcc or inside Cygnus, but I'll attach the script and an example config files (the (path)names have all been changed to protect the guilty). You drop a call to it in your CVSROOT/commitinfo file like this: ALL $CVSROOT/CVSROOT/cvs-acl.pl It will be run in addition to other directory-specific entries you might have in there (e.g. commit-prep). It will look for the cvs-acl.conf file in $CVSROOT/CVSROOT unless you tell it to look elsewhere via a command line option. If there's enough interest, I could write some real documentation (in the form of the much-beloved README file) and put a tar file somewhere, but I kind of suspect there isn't. ;-) Jason Free the Software! PS- Yes, I know my perl is not so great. PPS- Despite being a pretty newish script, I've tested it quite a lot. I'd be surprised if you found any problems while trying to use it. ------------=_1583534828-34894-2 Content-Type: text/x-perl; charset=us-ascii; name="cvs-acl.pl" Content-Disposition: inline; filename="cvs-acl.pl" Content-Transfer-Encoding: base64 Content-Length: 21013 IyEgL3Vzci9iaW4vcGVybCAtdwoKIwojICBBY2Nlc3MgY29udHJvbCBsaXN0 cyBmb3IgQ1ZTLiAgV3JpdHRlbiBieSBKYXNvbiBNb2xlbmRhIHdobyB3b3Jr cwojICBmb3IgWWFob28hLCBqYXNvbi1jYUBtb2xlbmRhLmNvbS4KIyAgVmVy c2lvbiAxLjEgMjAwMC0xMC0xNgoKIyBUaGlzIGlzIGFuIGVudGlyZWx5IHNl cGFyYXRlIHNjcmlwdCBmcm9tIERhdmlkIEdydWJiJ3MgImN2c19hY2xzLnBs IgojIHdoaWNoIGlzIGluY2x1ZGVkIGluIHRoZSBjdnMgZGlzdHJpYnV0aW9u cycgY29udHJpYi8gZGlyZWN0b3J5LgoKIyBEYXZpZCBpcyBvYnZpb3VzbHkg bW9yZSBmYW1pbGlhciB3aXRoIHBlcmwsIGFuZCBoaXMgc2NyaXB0IGlzIGEg bG90CiMgbW9yZSBzdHJhaWdodGZvcndhcmQgdGhhbiBtaW5lLiAgT24gdGhl IG90aGVyIGhhbmQsIGhpcyBBQ0wgbWVjaGFuaXNtCiMgaXMgbm90IHZlcnkg ZmxleGlibGUuICBNeSBjdnMtYWNscy5wbCBzY3JpcHQgaXMgbWFueSB0aW1l cyBtb3JlIGNvbXBsZXgsIAojIGJ1dCBpdCBtYWtlcyBpdCBwb3NzaWJsZSB0 byBleHByZXNzIG1vcmUgaW52b2x2ZWQgcGVybWlzc2lvbiBzZXRzLgoKIyBG b3IgaW5zdGFuY2UsIGl0IGlzIG5vdCBwb3NzaWJsZSB3aXRoIERhdmlkJ3Mg Y3ZzX2FjbHMucGwgdG8gZXhwcmVzcwojICJVc2VyIGZvbyBpcyBvbmx5IGFi bGUgdG8gY2hlY2sgaW4gdG8gZGlyZWN0b3J5IGJhciIsIHdpdGhvdXQgZXhw bGljaXRseQojIG5hbWluZyBldmVyeSB1c2VyIHdobyBoYXMgZ2xvYmFsIGNo ZWNraW4gcGVybWlzc2lvbnMuCgp1c2UgRmlsZTo6QmFzZW5hbWU7CnVzZSBH ZXRvcHQ6Okxvbmc7CnVzZSBzdHJpY3Q7Cgp1c2UgdmFycyBxdyAoJGFsbG93 X2NvbW1pdCAkZGVueV9jb21taXQgJERFQlVHICREVU1QX0FDTF9EQiAkc2Ny aXB0X25hbWUpOwoKJGFsbG93X2NvbW1pdCA9IDA7CiRkZW55X2NvbW1pdCA9 IDE7CgokREVCVUcgPSAwOwokRFVNUF9BQ0xfREIgPSAwOwoKCgojCiMgbWFp bgojCiMgSXQgYWxsIHN0YXJ0cyBoZXJlLgojCgoKCnN1YiBtYWluIAogIHsK ICAgIG15ICgkY3ZzX2FjbHMsICR1c2VybmFtZSwgJGRpcm5hbWUsIEBmaWxl bmFtZXMpOwogICAgbXkgKCRyZXN1bHQsICRkZW5pYWxfbWVzc2FnZSwgJGN2 c3Jvb3QsICRjb25maWdfZmlsZSk7CiAgICBteSAoJENPTU1JVF9MT0dfRklM RU5BTUUsICRMT0dfQ09NTUlUUyk7CgogICAgdXNlIHZhcnMgcXcoJG9wdF9k ZWJ1ZyAkb3B0X2R1bXBfYWNscyAkb3B0X2NvbmZfZmlsZSAkb3B0X2NvbW1p dF9sb2dmaWxlKTsKICAgIHVzZSB2YXJzIHF3KCRvcHRfaGVscCAkb3B0X3Vz ZXJuYW1lKTsKICAgIAogICAgJHNjcmlwdF9uYW1lID0gYmFzZW5hbWUgKCQw KTsKCgojIwojIyBTdGFydCBvZiBhcmd1bWVudCBwYXJzaW5nCiMjCiAgICAK ICAgIEdldE9wdGlvbnMgKCJkZWJ1ZyIsICJkdW1wLWFjbHN8ZHVtcC1hY2x8 ZHVtcCIsICJjb25mLWZpbGV8Y29uZnxmaWxlPXMiLCAKICAgICAgICAgICAg ICAgICJjb21taXQtbG9nZmlsZXxjb21taXQtbG9nLWZpbGV8Y29tbWl0LWxv Zz1zIiwgImhlbHAiLAogICAgICAgICAgICAgICAgInVzZXJuYW1lfHVzZXJ8 bmFtZT1zIik7CiAgICAKICAgIGlmIChkZWZpbmVkICgkb3B0X2hlbHApKQog ICAgICB7CiAgICAgICAgdXNhZ2UgKCk7CiAgICAgIH0KICAgIGlmIChkZWZp bmVkICgkb3B0X2RlYnVnKSkKICAgICAgewogICAgICAgICRERUJVRyA9IDE7 CiAgICAgIH0KICAgIAogICAgaWYgKGRlZmluZWQgKCRvcHRfZHVtcF9hY2xz KSkKICAgICAgewogICAgICAgICREVU1QX0FDTF9EQiA9IDE7CiAgICAgIH0K ICAgIAogICAgJGN2c3Jvb3QgPSAkRU5WeydDVlNST09UJ307CiAgICAKICAg IGlmIChkZWZpbmVkICgkb3B0X2NvbmZfZmlsZSkpCiAgICAgIHsKICAgICAg ICAkY29uZmlnX2ZpbGUgPSAkb3B0X2NvbmZfZmlsZTsKICAgICAgfQogICAg ZWxzZQogICAgICB7CiAgICAgICAgJGNvbmZpZ19maWxlID0gJGN2c3Jvb3Qg LiAiL0NWU1JPT1QvY3ZzLWFjbC5jb25mIjsKICAgICAgfQoKICAgIGlmICgk REVCVUcpCiAgICAgIHsKICAgICAgICBwcmludCBTVERFUlIgIkRFQlVHOiBV c2luZyAkY29uZmlnX2ZpbGUgYXMgb3VyIGNvbmZpZyBmaWxlLlxuIjsKICAg ICAgfQogICAgCiAgICBpZiAoZGVmaW5lZCAoJG9wdF9jb21taXRfbG9nZmls ZSkpCiAgICAgIHsKICAgICAgICAkTE9HX0NPTU1JVFMgPSAxOwogICAgICAg ICRDT01NSVRfTE9HX0ZJTEVOQU1FID0gJG9wdF9jb21taXRfbG9nZmlsZTsK ICAgICAgfQogICAgZWxzaWYgKGRlZmluZWQgKCRMT0dfQ09NTUlUUykgJiYg JExPR19DT01NSVRTID09IDEpCiAgICAgIHsKICAgICAgICAkQ09NTUlUX0xP R19GSUxFTkFNRSA9ICRjdnNyb290IC4gIi9DVlNST09UL2NvbW1pdC1sb2dm aWxlIjsKICAgICAgfQogICAgCiAgICAkY3ZzX2FjbHMgPSByZWFkX2luX2Fj bHMgKCRjb25maWdfZmlsZSk7CiAgICAKICAgIGlmICgkRFVNUF9BQ0xfREIp CiAgICAgIHsKICAgICAgICBkdW1wX2FjbHMgKCRjdnNfYWNscyk7CiAgICAg IH0KICAgIAogICAgaWYgKEBBUkdWIDwgMikKICAgICAgewogICAgICAgIHVz YWdlICgpOwogICAgICB9CiAgICAKICAgIGlmIChkZWZpbmVkICgkb3B0X3Vz ZXJuYW1lKSkKICAgICAgewogICAgICAgICR1c2VybmFtZSA9ICRvcHRfdXNl cm5hbWU7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewogICAgICAgICMgRGF2 aWQgR3J1YmIncyBjdnNfYWNscyBzZXRzIHVzZXJuYW1lIGxpa2UgdGhpczoK ICAgICAgICAjICRteW5hbWUgPSAkRU5WeyJVU0VSIn0gaWYgISgkbXluYW1l ID0gJEVOVnsiTE9HTkFNRSJ9KTsKICAgICAgICAkdXNlcm5hbWUgPSAoZ2V0 cHd1aWQoJDwpKVswXTsKICAgICAgfQogICAgCiAgICBpZiAoIWRlZmluZWQg KCR1c2VybmFtZSkgfHwgJHVzZXJuYW1lIGVxICIiKQogICAgICB7CiAgICAg ICAgcHJpbnQgU1RERVJSICIkc2NyaXB0X25hbWU6IHVuYWJsZSB0byBkZXRl cm1pbmUgdXNlcm5hbWUuXG4iOwogICAgICAgIGV4aXQgJGFsbG93X2NvbW1p dDsKICAgICAgfQogICAgCiAgICBpZiAoJERFQlVHKQogICAgICB7CiAgICAg ICAgcHJpbnQgU1RERVJSICJERUJVRzogRG9pbmcgY2hlY2tzIGFzIHVzZXIg YCR1c2VybmFtZScuXG4iOwogICAgICB9CgoKIyMKIyMgRW5kIG9mIGFyZ3Vt ZW50IHBhcnNpbmcKIyMKCiAgICAKICAgICRkaXJuYW1lID0gc2hpZnQgQEFS R1Y7CiAgICBpZiAoJGRpcm5hbWUgPX4gbSNeJGN2c3Jvb3QvIykKICAgICAg ewogICAgICAgICRkaXJuYW1lID1+IHMjXiRjdnNyb290LyMjOwogICAgICB9 CiAgICAkZGlybmFtZSA9IGNhbm9uaWNhbF9kaXJuYW1lICgkZGlybmFtZSk7 CgogICAgQGZpbGVuYW1lcyA9IEBBUkdWOwogICAgCiAgICBmb3JlYWNoIG15 ICRmaWxlIChAZmlsZW5hbWVzKQogICAgICB7CiAgICAgICAgKCRyZXN1bHQs ICRkZW5pYWxfbWVzc2FnZSkgPSAKICAgICAgICAgICAgY2hlY2tfYWNsICgk ZGlybmFtZSwgJGZpbGUsICR1c2VybmFtZSwgJGN2c19hY2xzKTsKICAgICAg ICBsYXN0IGlmICgkcmVzdWx0IGVxICdkZW55Jyk7CiAgICAgIH0KICAgIAog ICAgIyBUaGVyZSBpc24ndCBhbnkgbG9ja2luZyBoZXJlOyB0aGlzIGlzIG5v dCByZWxpYWJsZS4gIElmIHR3bwogICAgIyBwZW9wbGUgY29tbWl0IGF0IHRo ZSBzYW1lIHRpbWUgKHR3byBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIHJlcG8p LAogICAgIyB0aGVpciBjb21taXRzIHdpbGwgc3RvbXAgb24gZWFjaCBvdGhl ciBhbmQgeW91J2xsIGdldCBhIHRydW5jYXRlZAogICAgIyBsb2dmaWxlIGVu dHJ5LiAgVGhpcyBpcyBvbmx5IGludGVuZGVkIGFzIGEgZGVidWdnaW5nIGZl YXR1cmUgdG8gZW5zdXJlCiAgICAjIHRoYXQgdGhlIHNjcmlwdCBpcyBwZXJm b3JtaW5nIHJlYXNvbmFibHkuCiAgICAKICAgIGlmICgkTE9HX0NPTU1JVFMp CiAgICAgIHsKICAgICAgICBteSAkdGltZXN0YW1wID0gc2NhbGFyIChsb2Nh bHRpbWUgKHRpbWUgKCkpKTsKICAgICAgICBpZiAob3BlbiAoTE9HRklMRSwg Ij4+ICRDT01NSVRfTE9HX0ZJTEVOQU1FIikpCiAgICAgICAgICB7CiAgICAg ICAgICAgIHByaW50IExPR0ZJTEUgIlskdGltZXN0YW1wXSAkcmVzdWx0ICR1 c2VybmFtZSAkZGlybmFtZSBAZmlsZW5hbWVzXG4iOwogICAgICAgICAgICBj bG9zZSAoTE9HRklMRSk7CiAgICAgICAgICB9CiAgICAgIH0KICAgIAogICAg aWYgKCRyZXN1bHQgZXEgJ2RlbnknKQogICAgICB7CiAgICAgICAgaWYgKGRl ZmluZWQgKCRkZW5pYWxfbWVzc2FnZSkgJiYgJGRlbmlhbF9tZXNzYWdlIG5l ICcnKQogICAgICAgICAgewogICAgICAgICAgICBwcmludCBTVERFUlIgJGRl bmlhbF9tZXNzYWdlIC4gIlxuIjsKICAgICAgICAgIH0KICAgICAgICBleGl0 ICRkZW55X2NvbW1pdDsKICAgICAgfQogICAgCiAgICBleGl0ICRhbGxvd19j b21taXQ7CiAgfQoKCgoKIwojIHVzYWdlCiMKIyBUZWxsIHRoZSB1c2VycyB3 aGF0IHRoZXkgY2FuIGRvLgojCgoKCnN1YiB1c2FnZQogIHsKICAgIHByaW50 IFNUREVSUiAiVXNhZ2U6ICAkc2NyaXB0X25hbWUgWy0taGVscF0gWy0tZGVi dWddIFstLWNvbmY9RklMRU5BTUVdXG4iOwogICAgcHJpbnQgU1RERVJSICIg ICAgICAgIFstLWR1bXAtYWNsc10gWy0tY29tbWl0LWxvZ2ZpbGU9RklMRU5B TUVdIFstLXVzZXJuYW1lPU5BTUVdXG4iOwogICAgcHJpbnQgU1RERVJSICIg ICAgICAgIGRpcmVjdG9yeSBmaWxlbmFtZS4uLlxuIjsKICAgIHByaW50IFNU REVSUiAiXG4iOwoKICAgIHByaW50IFNUREVSUiAiICAtLWhlbHAgICAgICBU aGlzIG1lc3NhZ2UuXG4iOwogICAgcHJpbnQgU1RERVJSICIgIC0tZGVidWcg ICAgIFByaW50IG91dCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gd2hpbGUgcnVu bmluZy5cbiI7CiAgICBwcmludCBTVERFUlIgIiAgLS1jb25mICAgICAgTG9j YXRpb24gb2YgQUNMIGNvbmZpZ3VyYXRpb24gZmlsZVxuIjsKICAgIHByaW50 IFNUREVSUiAiICAtLWR1bXAtYWNscyBQcmludCBvdXQgdGhlIEFDTCBiZWZv cmUgZG9pbmcgYW55dGhpbmcgZWxzZS5cbiI7CiAgICBwcmludCBTVERFUlIg IiAgLS1jb21taXQtbG9nZmlsZSAgS2VlcCBhIHJlY29yZCBvZiBhbGwgY29t bWl0cywgYW5kIHdoZXRoZXIgdGhleSB3ZXJlXG4iOwogICAgcHJpbnQgU1RE RVJSICIgICAgICAgICAgICAgICAgICAgIGFsbG93ZWQgb3IgZGVuaWVkLlxu IjsKICAgIHByaW50IFNUREVSUiAiICAtLXVzZXJuYW1lICBVc2VmdWwgZm9y IHRlc3RpbmcsIGl0IGxldHMgeW91IHNwZWNpZnkgd2hhdCB1bmFtZSB0byB0 cnkgYXMuXG4iOwogICAgcHJpbnQgU1RERVJSICJcbiI7CgogICAgcHJpbnQg U1RERVJSICJEZWZhdWx0IGxvY2F0aW9uIGZvciAtLWNvbmYgaXMgXCRDVlNS T09UL0NWU1JPT1QvY3ZzLWFjbC5jb25mLlxuIjsKCiAgIGV4aXQgKCRhbGxv d19jb21taXQpOwogIH0KCgoKCgojICByZWFkX2luX2FjbHMgKEFDTF9DT05G SUdfRklMRU5BTUUpCiMKIyAgUmV0dXJucyBhIHBvaW50ZXIgdG8gYSBoYXNo LiAgVGhlIHRvcC1sZXZlbCBlbGVtZW50cyBpbiB0aGUgaGFzaAojICBhcmUg ZGlyZWN0b3J5L2ZpbGVuYW1lcyAob3IgIipBTEwqIiB0byBpbmRpY2F0ZSB0 aGUgZW50aXJlIHJlcG9zaXRvcnkpLiAgCiMgIFRoZSBlbGVtZW50cyB0aGUg bmV4dCBsZXZlbCBkb3duIGFyZSB1c2VybmFtZXMgKG9yICIqQUxMKiIgdG8g aW5kaWNhdGUKIyAgYWxsIHVzZXJzKSwgYW5kIHRoZSAncGVybWlzc2lvbicg ZWxlbWVudCBiZWxvdyB0aGF0IGlzIGFuIGVudW1lcmF0ZWQKIyAgdHlwZSBv ZiBlaXRoZXIgJ2FsbG93JyBvciAnZGVueScuICBJZiBpdCBpcyBkZW55LCB0 aGVyZSBpcyBhbiBvcHRpb25hbAojICBkZW5pYWwgbWVzc2FnZSBpbiB0aGUg J2RlbmlhbCBtZXNzYWdlJyBlbGVtZW50LgojCiMgIEluIHNob3J0LCB5b3Ug Z2V0IGEgaGFzaCBsaWtlIHRoaXM6CiMKIyAgICAkYWNsX2hhc2gtPnsic2No bW9vL2xpYnJhcmllcyJ9LT57Im1lbmcifS0+eyJwZXJtaXNzaW9uIn0gZXEg ImRlbnkiCiMgICAgJGFjbF9oYXNoLT57InNjaG1vby9saWJyYXJpZXMifS0+ eyJtZW5nIn0tPnsiZGVuaWFsIG1lc3NhZ2UifSBlcSAKIyAgICAgICAgICAg ICAgICJBbm9ueW1vdXMgYWNjb3VudCBtZW5nIG5vdCBhbGxvd2VkIHRvIGNo ZWNrIGluIGZpbGVzLiIKCiMgIFRoZSBmb3JtYXQgb2YgdGhlIGZpbGUgdGhh dCBpcyBpcyByZWFkaW5nIGlzIChicmllZmx5KSBsaWtlIHRoaXM6CiMKIyAg RElSTkFNRVsvRklMRU5BTUVdIDogVVNFUk5BTUVbLCBVU0VSTkFNRS4uLl0g OiB7YWxsb3d8ZGVueX0gOiBERU5JQUwtTVNHCiMKIyAgRElSTkFNRSBhbmQg VVNFUk5BTUUgbWF5IGJlIGVtcHR5IG9yICIqQUxMKiIsIGJvdGggb2Ygd2hp Y2ggbWVhbgojICAiQXBwbGllcyB0byBldmVyeSBkaXIvdXNlciIuCgpzdWIg cmVhZF9pbl9hY2xzIAogIHsKICAgIG15ICgkYWNsX2NvbmZpZ19maWxlbmFt ZSkgPSBAXzsKICAgIG15ICRzcGxpdF9saW5lOwogICAgbXkgJGFjbHMgPSB7 fTsKIAogICAgJHNwbGl0X2xpbmUgPSB1bmRlZjsKIAogICAgaWYgKCFvcGVu IChBQ0xTLCAkYWNsX2NvbmZpZ19maWxlbmFtZSkpCiAgICAgewogICAgICAg cHJpbnQgU1RERVJSICIkc2NyaXB0X25hbWU6IFVuYWJsZSB0byBvcGVuICck YWNsX2NvbmZpZ19maWxlbmFtZSdcbiI7CiAgICAgICBleGl0ICgkYWxsb3df Y29tbWl0KTsKICAgICB9CiAgICB3aGlsZSAoPEFDTFM+KQogICAgIHsKICAg ICAgIG5leHQgaWYgKC9eXHMqJC8gfHwgL15ccypcIy8pOwogICAgICAgY2hv bXA7CiAKICAgICAgIGlmIChkZWZpbmVkICgkc3BsaXRfbGluZSkpCiAgICAg ICAgIHsKICAgICAgICAgICBzL15ccysvIC87CiAgICAgICAgICAgJF8gPSAk c3BsaXRfbGluZSAuICRfOwogICAgICAgICAgICRzcGxpdF9saW5lID0gdW5k ZWY7CiAgICAgICAgIH0KICAgICAgIGlmICgvXFwkLykgCiAgICAgICAgIHsK ICAgICAgICAgICBjaG9wOwogICAgICAgICAgICRzcGxpdF9saW5lIHx8PSAn JzsKICAgICAgICAgICAkc3BsaXRfbGluZSA9ICRzcGxpdF9saW5lIC4gJF87 CiAgICAgICAgICAgbmV4dDsKICAgICAgICAgfQogICAgICAgCiAgICAgICBu ZXh0IGlmICgkXyAhfiAvLio6Lio6Lyk7CiAgICAgICBteSAoJGRpcm5hbWUs ICR1c2VybmFtZXMsICRhY3Rpb24sICRkZW55X21zZykgPSBzcGxpdCAoL1tc cyxdKjpbXHMsXSovKTsKIAogICAgICAgaWYgKCFkZWZpbmVkICgkZGlybmFt ZSkgfHwgJGRpcm5hbWUgZXEgIiIgfHwgCiAgICAgICAgICAgJGRpcm5hbWUg ZXEgIipBTEwqIiB8fCAkZGlybmFtZSBlcSAiKmFsbCoiIHx8CiAgICAgICAg ICAgJGRpcm5hbWUgZXEgIipBTlkqIiB8fCAkZGlybmFtZSBlcSAiKmFueSoi KQogICAgICAgICB7CiAgICAgICAgICAgJGRpcm5hbWUgPSAiKkFMTCoiOwog ICAgICAgICB9CiAgICAgICBpZiAoIWRlZmluZWQgKCR1c2VybmFtZXMpIHx8 ICR1c2VybmFtZXMgZXEgIiIgfHwgCiAgICAgICAgICAgJHVzZXJuYW1lcyBl cSAiKkFMTCoiIHx8ICR1c2VybmFtZXMgZXEgIiphbGwqIiB8fAogICAgICAg ICAgICR1c2VybmFtZXMgZXEgIipBTlkqIiB8fCAkdXNlcm5hbWVzIGVxICIq YW55KiIpCiAgICAgICAgIHsKICAgICAgICAgICAkdXNlcm5hbWVzID0gIipB TEwqIjsKICAgICAgICAgfQoKICAgICAgICRkaXJuYW1lID0gY2Fub25pY2Fs X2Rpcm5hbWUgKCRkaXJuYW1lKTsKCiAgICAgICBpZiAoIWRlZmluZWQgKCRh Y3Rpb24pIHx8ICRhY3Rpb24gZXEgIiIgfHwgCiAgICAgICAgICAgKCRhY3Rp b24gbmUgImFsbG93IiAmJiAoJGFjdGlvbiBuZSAiZGVueSIpKSkKICAgICAg ICAgewogICAgICAgICAgIHByaW50IFNUREVSUiAiJHNjcmlwdF9uYW1lOiAg QmFkbHkgZm9ybWVkIGxpbmUgZW5jb3VudGVyZWQgIiAuCiAgICAgICAgICAg ICAgICAiLSBtaXNzaW5nIGFjdGlvbi4gIExpbmU6XG4kX1xuIjsKICAgICAg ICAgICBuZXh0OwogICAgICAgICB9CiAgICAgICBmb3JlYWNoIG15ICR1bmFt ZSAoc3BsaXQgKC9bXHMsXSosW1xzLF0qLywgJHVzZXJuYW1lcykpCiAgICAg ICAgIHsKICAgICAgICAgICAkYWNscy0+eyRkaXJuYW1lfXskdW5hbWV9eydw ZXJtaXNzaW9uJ30gPSAkYWN0aW9uOwogICAgICAgICAgIGlmIChkZWZpbmVk ICgkZGVueV9tc2cpICYmICRkZW55X21zZyBuZSAiIikKICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgJGFjbHMtPnskZGlybmFtZX17JHVuYW1lfXsn ZGVuaWFsIG1lc3NhZ2UnfSA9ICRkZW55X21zZzsKICAgICAgICAgICAgIH0K ICAgICAgICAgfQogICAgIH0KICAgIGNsb3NlIChBQ0xTKTsKIAogICAgcmV0 dXJuICgkYWNscyk7CiAgfQoKCgoKIyMKIyMgY2hlY2tfYWNsCiMjCiMjIFRo aXMgaXMgdGhlIG1haW4gZnVuY3Rpb24gZm9yIGNoZWNraW5nIGEgdXNlcm5h bWUvZGlyZWN0b3J5L2ZpbGVuYW1lCiMjIGFnYWluc3QgdGhlIEFDTCBsaXN0 LiAgSXQgcmV0dXJucyBhIGxpc3Qgb2YgKFBFUk1JU1NJT04tUkVTVUxUUywK IyMgREVOSUFMLU1FU1NBR0UpLiAgUEVSTUlTU0lPTi1SRVNVTFRTIGlzIGVp dGhlciAnYWxsb3cnIG9yICdkZW55Jy4KIyMgREVOSUFMLU1FU1NBR0UgaXMg ZWl0aGVyIHVuZGVmIG9yIGEgc3RyaW5nIGV4cGxhaW5pbmcgd2h5IHRoZSBj b21taXQKIyMgd2FzIGRlbmllZC4KIyMKIyMgUmV0dXJucyBhIHJlc3VsdCAo ImRlbnkiIHx8ICJhbGxvdyIpIGFuZCBhIGRlbmlhbCBtZXNzYWdlLCBpZiBh bnkuCiMjIEl0IHdpbGwgcmV0dXJuICh1bmRlZiwgdW5kZWYpIGlmIG5vIG1h dGNoaW5nIGRpcmVjdG9yeSBlbnRyeSBpcyBmb3VuZC4KCnN1YiBjaGVja19h Y2wKICB7CiAgICBteSAoJGRpcm5hbWUsICRmaWxlbmFtZSwgJHVzZXJuYW1l LCAkYWNsaCkgPSBAXzsKICAgIG15ICRjdXJyZW50X3Blcm1pc3Npb247CiAg ICBteSAkdG1wX3Blcm1faG9sZGVyOwogICAgbXkgJGRpcl9zb19mYXI7CiAg ICBteSAkZGVuaWFsX25vZGUgPSB1bmRlZjsKICAgIG15ICR0bXBfbm9kZV9o b2xkZXIgPSB1bmRlZjsKICAgIG15ICRkZW5pYWxfbWVzc2FnZSA9IHVuZGVm OwoKICAgICRkaXJuYW1lID0gY2Fub25pY2FsX2Rpcm5hbWUgKCRkaXJuYW1l KTsKICAgICRmaWxlbmFtZSA9IGNhbm9uaWNhbF9kaXJuYW1lICgkZmlsZW5h bWUpOwoKICAgICgkY3VycmVudF9wZXJtaXNzaW9uLCAkZGVuaWFsX25vZGUp ID0gCiAgICAgICAgY2hlY2tfc2luZ2xlX2Rpcl9hY2wgKCR1c2VybmFtZSwg IiIsICRhY2xoKTsKCiAgICBmb3JlYWNoIG15ICRjdXJfZGlyX2NvbXBvbmVu dCAoc3BsaXQgKC9cLy8sICRkaXJuYW1lKSkKICAgICAgewogICAgICAgIGlm IChkZWZpbmVkICgkZGlyX3NvX2ZhcikpCiAgICAgICAgICB7CiAgICAgICAg ICAgICRkaXJfc29fZmFyID0gJGRpcl9zb19mYXIgLiAiLyIgLiAkY3VyX2Rp cl9jb21wb25lbnQ7CiAgICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAg ICAgewogICAgICAgICAgICAkZGlyX3NvX2ZhciA9ICRjdXJfZGlyX2NvbXBv bmVudDsKICAgICAgICAgIH0KICAgICAgICAoJHRtcF9wZXJtX2hvbGRlciwg JHRtcF9ub2RlX2hvbGRlcikgPSAKICAgICAgICAgICAgY2hlY2tfc2luZ2xl X2Rpcl9hY2wgKCR1c2VybmFtZSwgJGRpcl9zb19mYXIsICRhY2xoKTsKICAg ICAgICBpZiAoZGVmaW5lZCAoJHRtcF9wZXJtX2hvbGRlcikpCiAgICAgICAg ICB7CiAgICAgICAgICAgICRjdXJyZW50X3Blcm1pc3Npb24gPSAkdG1wX3Bl cm1faG9sZGVyOwogICAgICAgICAgfQogICAgICAgIGlmIChkZWZpbmVkICgk dG1wX25vZGVfaG9sZGVyKSkKICAgICAgICAgIHsKICAgICAgICAgICAgJGRl bmlhbF9ub2RlID0gJHRtcF9ub2RlX2hvbGRlcjsKICAgICAgICAgIH0KICAg ICAgICBpZiAoJERFQlVHKQogICAgICAgICAgewogICAgICAgICAgICAkdG1w X3Blcm1faG9sZGVyIHx8PSAiIjsKICAgICAgICAgICAgcHJpbnQgU1RERVJS ICAiREVCVUc6IENoZWNrIGRpciBjb21wb25lbnQgJGRpcl9zb19mYXIsIHBl cm0gIiAuCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiR0bXBfcGVybV9o b2xkZXJcbiI7CiAgICAgICAgICB9CiAgICAgIH0KCiAgICAoJHRtcF9wZXJt X2hvbGRlciwgJHRtcF9ub2RlX2hvbGRlcikgPSAKICAgICAgICAgICAgIGNo ZWNrX3NpbmdsZV9kaXJfYWNsICgkdXNlcm5hbWUsICRkaXJuYW1lIC4iLyIu ICRmaWxlbmFtZSwgJGFjbGgpOwoKICAgIGlmICgkREVCVUcpCiAgICAgIHsK ICAgICAgICAkdG1wX3Blcm1faG9sZGVyIHx8PSAiIjsKICAgICAgICBwcmlu dCBTVERFUlIgICJERUJVRzogQ2hlY2sgZW50cnkgJHtkaXJuYW1lfS8ke2Zp bGVuYW1lfSwgcGVybSAiIC4KICAgICAgICAgICAgICAgICAgICAgICIkdG1w X3Blcm1faG9sZGVyXG4iOwogICAgICB9CgogICAgaWYgKGRlZmluZWQgKCR0 bXBfcGVybV9ob2xkZXIpICYmICR0bXBfcGVybV9ob2xkZXIgbmUgIiIpCiAg ICAgIHsKICAgICAgICAkY3VycmVudF9wZXJtaXNzaW9uID0gJHRtcF9wZXJt X2hvbGRlcjsKICAgICAgICBpZiAoZGVmaW5lZCAoJHRtcF9ub2RlX2hvbGRl cikpCiAgICAgICAgICB7CiAgICAgICAgICAgICRkZW5pYWxfbm9kZSA9ICR0 bXBfbm9kZV9ob2xkZXI7CiAgICAgICAgICB9CiAgICAgIH0KCiAgICBpZiAo JGN1cnJlbnRfcGVybWlzc2lvbiBlcSAnZGVueScgJiYgCiAgICAgICAgZGVm aW5lZCAoJGRlbmlhbF9ub2RlLT57ImRlbmlhbCBtZXNzYWdlIn0pICYmCiAg ICAgICAgJGRlbmlhbF9ub2RlLT57ImRlbmlhbCBtZXNzYWdlIn0gbmUgIiIp CiAgICAgIHsKICAgICAgICAkZGVuaWFsX21lc3NhZ2UgPSAkZGVuaWFsX25v ZGUtPnsiZGVuaWFsIG1lc3NhZ2UifTsKICAgICAgfQoKICAgIGlmIChkZWZp bmVkICgkY3VycmVudF9wZXJtaXNzaW9uKSAmJiAkY3VycmVudF9wZXJtaXNz aW9uIG5lICIiKQogICAgICB7CiAgICAgICAgaWYgKCRjdXJyZW50X3Blcm1p c3Npb24gZXEgImFsbG93IikKICAgICAgICAgIHsKICAgICAgICAgICAgcmV0 dXJuICgkY3VycmVudF9wZXJtaXNzaW9uLCB1bmRlZik7CiAgICAgICAgICB9 CiAgICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAgICByZXR1cm4g KCRjdXJyZW50X3Blcm1pc3Npb24sICRkZW5pYWxfbWVzc2FnZSk7CiAgICAg ICAgICB9CiAgICAgIH0KICAgIGVsc2UKICAgICAgewogICAgICAgIHJldHVy biAoJ2FsbG93Jyk7CiAgICAgIH0KICB9CgoKCiMjCiMjIGNoZWNrX3Npbmds ZV9kaXJfYWNsICgpCiMjCiMjIEV4YW1pbmUgYSBzaW5nbGUgZGlyZWN0b3J5 J3MgZW50cnkgYW5kIGRldGVybWluZSBpZiBhIGNoZWNraW4gdG8gdGhpcwoj IyBkaXIgaXMgYWxsb3dlZC4gIFRoaXMgZnVuYyBrbm93cyBub3RoaW5nIGFi b3V0IHBlcm1pc3Npb25zIGluaGVyaXRlZCAKIyMgZnJvbSBzdXBlcmlvciBk aXJlY3Rvcmllcy4gIEl0IHJldHVybnMgYSB0dXBsZSBvZiAoUEVSTUlTU0lP TiwgREVOSUFMLU5PREUpLgojIyBQRVJNSVNTSU9OIGlzIGVpdGhlciAnYWxs b3cnIG9yICdkZW55JyBhbmQgREVOSUFMLU5PREUgaXMgYSBwb2ludGVyIHRv IAojIyB0aGUgZGlyZWN0b3J5L3VzZXIgbm9kZSB0aGF0IGNhdXNlZCAgdGhl IGRlbmlhbC4gIAojIyBEZXJlZmVyZW5jaW5nICRERU5JQUwtTk9ERS0+eyJk ZW5pYWwgbWVzc2FnZSJ9IG1heSB3b3JrLgojIwoKIyMgTk9URTogT3JpZ2lu YWxseSBJIGhhZCBzb21lIGNsZXZlciByZWFzb24gZm9yIHBhc3NpbmcgYmFj ayBhIHBvaW50ZXIKIyMgdG8gdGhlIGRlbmlhbCBub2RlLCBidXQgSSBjYW4n dCBzZWUgYW55IHBvaW50IHRvIGl0LiAgVGhlIGRlbmlhbAojIyBtc2csIGlm IGFueSwgc2hvdWxkIGJlIHJldHVybmVkIGhlcmUgaW5zdGVhZCBvZiBkaW5r aW5nIGFyb3VuZCB3aXRoCiMjIGEgcG9pbnRlci4KCnN1YiBjaGVja19zaW5n bGVfZGlyX2FjbAogIHsKICAgIG15ICgkdXNlcm5hbWUsICRkaXJuYW1lLCAk YWNsaCkgPSBAXzsKICAgIG15ICRwZXJtaXNzaW9uID0gdW5kZWY7CiAgICBt eSAkbm9kZSA9IHVuZGVmOwogICAgbXkgKCRoYXZlX2dsb2JhbF9wZXJtaXNz aW9uX2VudHJ5LCAkdXNlcm5hbWVfc3BlY2lmaWVkKSA9ICgxLCAxKTsKCiAg ICBpZiAoIWRlZmluZWQgKCRkaXJuYW1lKSB8fCAkZGlybmFtZSBlcSAiIikK ICAgICAgewogICAgICAgICRkaXJuYW1lID0gIipBTEwqIjsKICAgICAgfQoK ICAgIGlmICghZGVmaW5lZCAoJGFjbGgtPnskZGlybmFtZX0pKQogICAgICB7 CiAgICAgICAgcmV0dXJuICh1bmRlZiwgdW5kZWYpOwogICAgICB9CgogICAg aWYgKCFkZWZpbmVkICgkYWNsaC0+eyRkaXJuYW1lfS0+eyIqQUxMKiJ9KSkK ICAgICAgewogICAgICAgICRoYXZlX2dsb2JhbF9wZXJtaXNzaW9uX2VudHJ5 ID0gMDsKICAgICAgfQogICAgaWYgKCFkZWZpbmVkICgkdXNlcm5hbWUpIHx8 ICR1c2VybmFtZSBlcSAiIiB8fCAkdXNlcm5hbWUgZXEgIipBTEwqIikKICAg ICAgewogICAgICAgICR1c2VybmFtZV9zcGVjaWZpZWQgPSAwOwogICAgICAg ICR1c2VybmFtZSA9ICIqQUxMKiI7CiAgICAgIH0KCiAgICBpZiAoISRoYXZl X2dsb2JhbF9wZXJtaXNzaW9uX2VudHJ5ICYmICEkdXNlcm5hbWVfc3BlY2lm aWVkKQogICAgICB7CiAgICAgICAgcmV0dXJuICh1bmRlZiwgdW5kZWYpOwog ICAgICB9CgogICAgaWYgKCFkZWZpbmVkICgkYWNsaC0+eyRkaXJuYW1lfS0+ eyIqQUxMKiJ9LT57InBlcm1pc3Npb24ifSkgJiYKICAgICAgICAgIWRlZmlu ZWQgKCRhY2xoLT57JGRpcm5hbWV9LT57JHVzZXJuYW1lfS0+eyJwZXJtaXNz aW9uIn0pKQogICAgICB7CiAgICAgICAgcmV0dXJuICh1bmRlZiwgdW5kZWYp OwogICAgICB9CgogICAgaWYgKGRlZmluZWQgKCRhY2xoLT57JGRpcm5hbWV9 LT57IipBTEwqIn0tPnsicGVybWlzc2lvbiJ9KSkKICAgICAgewogICAgICAg ICRub2RlID0gJGFjbGgtPnskZGlybmFtZX0tPnsiKkFMTCoifTsKICAgICAg ICAkcGVybWlzc2lvbiA9ICRub2RlLT57InBlcm1pc3Npb24ifTsKICAgICAg fQoKICAgIGlmICgkdXNlcm5hbWVfc3BlY2lmaWVkICYmCiAgICAgICAgZGVm aW5lZCAoJGFjbGgtPnskZGlybmFtZX0tPnskdXNlcm5hbWV9KSAmJgogICAg ICAgIGRlZmluZWQgKCRhY2xoLT57JGRpcm5hbWV9LT57JHVzZXJuYW1lfS0+ eyJwZXJtaXNzaW9uIn0pKQogICAgICB7CiAgICAgICAgJG5vZGUgPSAkYWNs aC0+eyRkaXJuYW1lfS0+eyR1c2VybmFtZX07CiAgICAgICAgJHBlcm1pc3Np b24gPSAkbm9kZS0+eyJwZXJtaXNzaW9uIn07CiAgICAgIH0KCiAgICBpZiAo JERFQlVHKSAKICAgICAgewogICAgICAgIHByaW50IFNUREVSUiAiREVCVUc6 IHVzZXIgJHVzZXJuYW1lIGRpcm5hbWUgJGRpcm5hbWUgIiAuCiAgICAgICAg ICAgICAgICAgICAgICJwZXJtaXNzaW9uICRwZXJtaXNzaW9uXG4iOwogICAg ICB9CiAgICBpZiAoIWRlZmluZWQgKCRwZXJtaXNzaW9uKSB8fCAkcGVybWlz c2lvbiBlcSAnYWxsb3cnKQogICAgICB7CiAgICAgICAgcmV0dXJuICgkcGVy bWlzc2lvbiwgdW5kZWYpOwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKICAg ICAgICByZXR1cm4gKCRwZXJtaXNzaW9uLCAkbm9kZSk7CiAgICAgIH0KICB9 CgoKCiMjCiMjIGNhbm9uaWNhbF9kaXJuYW1lICgpCiMjCiMjIEVsaW1pbmF0 ZSBzbGFzaGVzIGF0IHRoZSBiZWdpbm5pbmcsIGVuZCBvZiBhIHN0cmluZy4g IEVsaW1pbmlhdGUKIyMgbXVsdGlwbGUgc2xhc2hlcyBpbiB0aGUgc3RyaW5n LiAgRWxpbWluYXRlICIuLyIgYXQgdGhlIGJlZ2lubmluZyBvZgojIyBhIHN0 cmluZy4KCnN1YiBjYW5vbmljYWxfZGlybmFtZQogIHsKICAgIG15ICgkc3Ry aW5nKSA9IEBfOwoKICAgICRzdHJpbmcgID1+IHMjXlwvKiMjOwogICAgJHN0 cmluZyAgPX4gcyNeXC5cLyMjOwogICAgJHN0cmluZyAgPX4gcyMvKiQjIzsK ICAgICRzdHJpbmcgID1+IHMjLysjLyNnOwoKICAgIHJldHVybiAoJHN0cmlu Zyk7CiAgfQoKCgoKCiMjCiMjIGR1bXBfYWNscwojIwojIyBEdW1wcyBvdXQg dGhlIEFDTCBoYXNoIGluIGEgaHVtYW4tcmVhZGFibGUgZm9ybWF0LgojIwoK c3ViIGR1bXBfYWNscwogIHsKICAgIG15ICgkYWNsaCkgPSBAXzsKIAogICAg Zm9yZWFjaCBteSAkZGlybmFtZSAoc29ydCBrZXlzICUkYWNsaCkKICAgICAg eyAKICAgICAgICBteSAkYWxsb3dfbmFtZWxpc3QgPSAnJzsKICAgICAgICBt eSAkZGVueV9uYW1lbGlzdCA9ICcnOwogICAgICAgIGZvcmVhY2ggbXkgJHVz ZXJuYW1lIChzb3J0IGtleXMgJXskYWNsaC0+eyRkaXJuYW1lfX0pIAogICAg ICAgICAgewogICAgICAgICAgICBpZiAoIWRlZmluZWQgKCRhY2xoLT57JGRp cm5hbWV9LT57JHVzZXJuYW1lfS0+eydwZXJtaXNzaW9uJ30pKQogICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICMgVGhpcyBpbmRpY2F0ZXMgdGhh dCBvdXIgaGFzaCBpcyBub3QgYmVpbmcgdHJlYXRlZCBjb3JyZWN0bHkuCiAg ICAgICAgICAgICAgICAjIFNvbWVvbmUgaXMgdG91Y2hpbmcgdGhlIGhhc2gg d2hlbiB0aGV5IHNob3VsZG4ndC4gIAogICAgICAgICAgICAgICAgIyBQYXBl ciBvdmVyIGl0LgogICAgICAgICAgICAgICAgaWYgKCRERUJVRykKICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHByaW50IFNUREVS UiAiREVCVUc6ICckZGlybmFtZScgdSAnJHVzZXJuYW1lJ1xuIjsKICAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAg ICAgICB9CiAgICAgICAgICAgIGlmICgkYWNsaC0+eyRkaXJuYW1lfS0+eyR1 c2VybmFtZX0tPnsncGVybWlzc2lvbid9IGVxICJhbGxvdyIpCiAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgaWYgKCRhbGxvd19uYW1lbGlzdCBu ZSAnJykgCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAkYWxsb3dfbmFtZWxpc3QgPSAkYWxsb3dfbmFtZWxpc3QgLiAiLCAiOwog ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkYWxsb3dfbmFt ZWxpc3QgPSAkYWxsb3dfbmFtZWxpc3QgLiAkdXNlcm5hbWU7CiAgICAgICAg ICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgaWYgKCRkZW55X25hbWVsaXN0IG5lICcnKSAKICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRkZW55X25hbWVs aXN0ID0gJGRlbnlfbmFtZWxpc3QgLiAiLCAiOwogICAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgICAgICAkZGVueV9uYW1lbGlzdCA9ICRkZW55X25h bWVsaXN0IC4gJHVzZXJuYW1lOwogICAgICAgICAgICAgIH0KICAgICAgICAg IH0KICAgICAgICBwcmludCAiQUNMX0RVTVA6ICRkaXJuYW1lOiI7CiAgICAg ICAgaWYgKCRhbGxvd19uYW1lbGlzdCBuZSAnJykKICAgICAgICAgIHsKICAg ICAgICAgICAgcHJpbnQgIiBBbGxvdyAkYWxsb3dfbmFtZWxpc3QiOwogICAg ICAgICAgfQogICAgICAgIGlmICgkZGVueV9uYW1lbGlzdCBuZSAnJykKICAg ICAgICAgIHsKICAgICAgICAgICAgcHJpbnQgIiBEZW55ICRkZW55X25hbWVs aXN0IjsKICAgICAgICAgIH0KICAgICAgICBwcmludCAiXG4iOwogICAgICB9 CiAgfQoKCgoKCgptYWluICgpOwo= ------------=_1583534828-34894-2--