Re: Issue with acl note (without -m) splitting helper tokens containing commas
Alex Rousskov <[email protected]> Tue, 21 Apr 2026 10:05:10 -0400
| Newsgroups | gmane.comp.web.squid.devel |
|---|---|
| Message-ID | <[email protected]> |
T24gMjAyNi0wNC0yMSAwNjoyNCwgQW5kcmV5IEsgd3JvdGU6Cj4gID4gPj4gMS4gUmVtb3Zpbmcg dGhlIGRlZmF1bHQgY29tbWEgZGVsaW1pdGVyLgo+ICA+ID4KPiAgPiA+IC4uLiBhbmQgY2hlY2sg ZW5hYmxlZCgpIGJlZm9yZSB1c2luZyB0aGUgc3RvcmVkIHZhbHVlLCBmaXhpbmcgdGhlIGJ1Zwo+ ICA+ID4gaW50cm9kdWNlZCBpbiAyMDE3IGNvbW1pdCA0ZWFjMzQwNy4KPiAKPiBJIGFncmVlIHdp dGggQWxleCB0aGF0IGNoZWNraW5nIGVuYWJsZWQoKSBpcyB0aGUgY29ycmVjdCB3YXkgdG8gZml4 IHRoZSAKPiBidWcgaW50cm9kdWNlZCBpbiBjb21taXQgNGVhYzM0MDcuCgpHbGFkIHdlIGFyZSBv biB0aGUgc2FtZSBwYWdlLgoKCj4gSSBoYXZlIHJlY29uc2lkZXJlZCBteSBwcmV2aW91cyBpZGVh IGFib3V0IHJlbW92aW5nIHRoZSBkZWZhdWx0IGNvbW1hIAo+IGRlbGltaXRlciBmcm9tIHRoZSBj bGFzcyBjb25zdHJ1Y3Rvci4gSSBub3cgc2VlIHRoYXQgaXQgc2hvdWxkIHN0YXksIGFzIAo+IHRo ZSBkb2N1bWVudGF0aW9uIHN0YXRlcyB0aGF0IGEgY29tbWEgc2hvdWxkIGJlIHVzZWQgYXMgYSBz ZXBhcmF0b3Igd2hlbiAKPiB0aGUgLW0gb3B0aW9uIGlzIHNwZWNpZmllZCB3aXRob3V0IHBhcmFt ZXRlcnMuCgpZZXMsIHByb2JhYmx5LCBhdCBsZWFzdCBmb3Igbm93LiBJIGFtIHByZXR0eSBzdXJl IHRoYXQgYW4gaWRlYWwgCmltcGxlbWVudGF0aW9uIHdvdWxkIGhhbmRsZSB0aGF0IGRlZmF1bHQg c2VwYXJhdG9yIGRpZmZlcmVudGx5IGJlY2F1c2UgCnRoZSBkZWZhdWx0IGlzIG5vdCAiZGVsaW1p dGVkIGJ5IGNvbW1hcyI7IHRoZSBkZWZhdWx0IGlzICJub3QgCmRlbGltaXRlZCIuIElkZWFsbHks IFNxdWlkIHNob3VsZCBub3QgZG8gdW5uZWNlc3Nhcnkgd29yay4uLiBIb3dldmVyLCAKeW91ciBm dXR1cmUgUFIgcHJvYmFibHkgc2hvdWxkIF9ub3RfIGJlIHJlc3BvbnNpYmxlIGZvciByZWFjaGlu ZyB0aGF0IAppZGVhbCBiZWNhdXNlIGltcHJvdmluZyBob3cgd2UgaGFuZGxlIHN1Y2ggZGVmYXVs dCB2YWx1ZXMgcHJvYmFibHkgCnJlcXVpcmVzIHNpZ25pZmljYW50IHJlZmFjdG9yaW5nIG9mIGFu IGFscmVhZHkgY29tcGxleCBjb2RlLgoKCj4gU28sIGZvbGxvd2luZyBBbGV4J3Mgc3VnZ2VzdGlv biwgdGhlIGZpeCB3b3VsZCBiZToKPiAKPiBib29sCj4gQWNsOjpOb3RlQ2hlY2s6Om1hdGNoTm90 ZXMoY29uc3QgTm90ZVBhaXJzICpub3RlKSBjb25zdAo+IHsKPiAgwqAgwqAgY29uc3QgQ2hhcmFj dGVyU2V0ICpzZXAgPSBkZWxpbWl0ZXJzLmVuYWJsZWQoKSA/ICZkZWxpbWl0ZXJzLnZhbHVlIAo+ IDogbnVsbHB0cjsKPiAgwqAgwqAgY29uc3QgTm90ZVBhaXJzOjpFbnRyaWVzICZlbnRyaWVzID0g bm90ZS0+ZXhwYW5kTGlzdEVudHJpZXMoc2VwKTsKPiAgwqAgwqAgZm9yIChhdXRvIGU6IGVudHJp ZXMpCj4gIMKgIMKgIMKgIMKgIGlmIChkYXRhLT5tYXRjaChlLmdldFJhdygpKSkKPiAgwqAgwqAg wqAgwqAgwqAgwqAgcmV0dXJuIHRydWU7Cj4gIMKgIMKgIHJldHVybiBmYWxzZTsKPiB9Cj4gCj4g TWF5IEkgc3VibWl0IHRoZSBQUiB3aXRoIHRoaXMgY2hhbmdlPwoKWWVzLCBvZiBjb3Vyc2UhIEhv d2V2ZXIsIHRoZSBhYm92ZSBpcyBub3QgZW5vdWdoIHRvIGZ1bGx5IGFkZHJlc3MgdGhpcyAKYnVn IEFGQUlDVC4gTXkgc3VnZ2VzdGlvbiBiZWxvdyBzaG91bGQgZXhwb3NlIHRoZSBjYXNlcyBtaXNz ZWQgYnkgdGhlIAphYm92ZSBmaXguCgoKUGxlYXNlIHRyeSB0byByZWZhY3RvciBzbyB0aGF0IGFj Y2Vzc2luZyBgZGVsaW1pdGVycy52YWx1ZWAgYmVjb21lcyAKaW1wb3NzaWJsZSB3aGVuIGRlbGlt aXRlcnMgYXJlIG5vdCBlbmFibGVkLiBDb25jZXB0dWFsbHksIApBQ0xGbGFnczo6ZGVsaW1pdGVy cygpIHJlbW92ZWQgaW4gMjAxNyBjb21taXQgNGVhYzM0MDcgZ290IGl0IHJpZ2h0LiBXZSAKc2hv dWxkIHJlc3RvcmUgdGhvc2UgcHJvdGVjdGlvbnMuCgpJIGhhdmUgbm90IGNoZWNrZWQgYWxsIHRo ZSBkZXRhaWxzLCBidXQgSSB3b3VsZCBfc3RhcnRfIGJ5IHJlcGxhY2luZyB0aGUgCmZvbGxvd2lu ZyBPcHRpb25WYWx1ZSBkYXRhIG1lbWJlcjoKCiAgICAgVmFsdWUgdmFsdWU7IC8vLzwgZmluYWwg dmFsdWUgc3RvcmFnZSwgcG9zc2libHkgYWZ0ZXIgY29udmVyc2lvbnMKCndpdGg6CgogICAgIC8v LyBvcHRpb24gdmFsdWUgKGlmIHRoZSBvcHRpb24gd2FzIGVuYWJsZWQpIG9yIG5pbCAob3RoZXJ3 aXNlKQogICAgIGNvbnN0IFZhbHVlICp2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGVuYWJsZWQoKSA/ IAomZXhwbGljaXRPckRlZmF1bHRWYWx1ZSA6IG51bGxwdHI7IH0KCiAgICAgLy8gVE9ETzogTWFr ZSBwcml2YXRlLgogICAgIC8vLyBGaW5hbCB2YWx1ZSBzdG9yYWdlLCBwb3NzaWJseSBhZnRlciBj b252ZXJzaW9ucy4KICAgICAvLy8gV2hlbiBgdmFsdWVkYCBpcyB0cnVlLCB0aGlzIGlzIGFuIGV4 cGxpY2l0bHkgc2V0IHZhbHVlLgogICAgIC8vLyBPdGhlcndpc2UsIHRoaXMgaXMgdGhlIGRlZmF1 bHQgdmFsdWUuCiAgICAgVmFsdWUgZXhwbGljaXRPckRlZmF1bHRWYWx1ZTsKCgpJZGVhbGx5LCBl eHBsaWNpdE9yRGVmYXVsdFZhbHVlIHNob3VsZCBiZSBwcml2YXRlLCBidXQgYWNoaWV2aW5nIHRo YXQgCmlkZWFsIHJlcXVpcmVzIG1vcmUgcmVmYWN0b3Jpbmcgd29yaywgYW5kIEkgZG8gbm90IHJl Y29tbWVuZCBpdCBhdCB0aGlzIAp0aW1lLgoKQ3VycmVudCBPcHRpb25WYWx1ZTo6dmFsdWUgdXNl cnMgc2hvdWxkIGJlIGFkanVzdGVkIGFjY29yZGluZ2x5LCBvZiAKY291cnNlLCBhbmQgSSBob3Bl IHRoYXQgdGhlIGNvbXBpbGVyIHdpbGwgY2F0Y2ggbW9zdCBjYXNlcyB0aGF0IGEgbWFudWFsIApz ZWFyY2ggaGFzIG1pc3NlZC4gVGhlICJUT0RPOiBTb21lIGNhbGxlcnMuLi4iIGNvbW1lbnQgd2ls bCBuZWVkIHRvIGJlIAphZGp1c3RlZCBhcyB3ZWxsLgoKCj4gUmVnYXJkaW5nIHRoZSB3YXJuaW5n IGZvciBhZG1pbnM6Cj4gCj4gID4gPiBXZSBjYW4gYWxzbyBhZGQgY29kZSB0byB3YXJuIGFkbWlu cyAodmlhIGEgY2FjaGUubG9nIFdBUk5JTkcgbWVzc2FnZSkKPiAgPiA+IHdoZW4gYSAibm90ZSIg QUNMIGNvbmZpZ3VyZWQgd2l0aG91dCAiLW0iIGxvb2tzIGF0IGFuIGFubm90YXRpb24gdmFsdWUK PiAgPiA+IGNvbnRhaW5pbmcgYSBjb21tYSwgYnV0IHRoYXQgcmVxdWlyZXMgbW9yZSB3b3JrLgo+ IAo+IEkgYmVsaWV2ZSB0aGlzIHdhcm5pbmcgbWlnaHQgYmUgdXNlZnVsIGZvciB0aGUgY3VycmVu dCBidWdneSB2ZXJzaW9uLgo+IEhvd2V2ZXIsIHdpdGggdGhpcyBmaXgsIHRoZSBiZWhhdmlvciB3 aWxsIGNvcnJlY3RseSBmb2xsb3cgdGhlIAo+IGRvY3VtZW50YXRpb24sIHNvIGEgd2FybmluZyBz aG91bGRuJ3QgYmUgbmVjZXNzYXJ5IGluIHRoZSBwYXRjaGVkIHZlcnNpb24uCgpUaGF0IHdhcm5p bmcgd291bGQgYmUgdXNlZnVsIGluIHNldmVyYWwgY2FzZXMuIEZvciBleGFtcGxlLCBpdCB3b3Vs ZCBiZSAKdXNlZnVsIGZvciBhbiBhZG1pbiBvZiBhIHVzZWQtdG8td29yay1iZWZvcmUtdGhlLXVw Z3JhZGUtU3F1aWQgd2hvIGRvZXMgCm5vdCByZWFsaXplIHRoYXQgdGhlaXIgaGVscGVyIGlzIHJl dHVybmluZyBhIGxpc3Qgb2YgdmFsdWVzIGFuZCB0aGF0IAp0aGV5IG5vdyBtdXN0IHN0YXJ0IHVz aW5nICItbSIgZm9yIHRoZWlyIHVwZ3JhZGVkIFNxdWlkIHRvIChjb250aW51ZSB0bykgCmhhbmRs ZSB0aGF0IGNhc2UgY29ycmVjdGx5LgoKQUZBSUNULCB0aGUgYmlnZ2VzdCBwcm9ibGVtIHdpdGgg dGhhdCB3YXJuaW5nIGlzIHRoYXQgYWRtaW5zIG9mIGhlbHBlcnMgCnRoYXQgcmV0dXJuIHZhbHVl cyB3aXRoIGNvbW1hcyB0aGF0IHNob3VsZCBfbm90XyB1c2UgIi1tIiAoYmVjYXVzZSB0aG9zZSAK Y29tbWFzIGFyZSBub3QgdXNlZCBhcyBzdWItdmFsdWUgc2VwYXJhdG9ycykgd291bGQgaGF2ZSB0 byBtYW51YWxseSAKZGlzYWJsZSB0aGUgd2FybmluZyAodmlhIGNhY2hlX2xvZ19tZXNzYWdlIG9y LCBpZiB3ZSBkbyBldmVuIG1vcmUgZXh0cmEgCndvcmssIHZpYSBzb21ldGhpbmcgbGlrZSAiK20i IGluIGluZGl2aWR1YWwgQUNMIGRlZmluaXRpb25zKS4KCgpIVEgsCgpBbGV4LgoKCj4g0LLRgiwg MjEg0LDQv9GALiAyMDI24oCv0LMuINCyIDExOjAyLCBBbW9zIEplZmZyaWVzIDxzcXVpZDNAdHJl ZW5ldC5jby5ueiAKPiA8bWFpbHRvOnNxdWlkM0B0cmVlbmV0LmNvLm56Pj46Cj4gCj4gICAgIE9u IDIxLzA0LzIwMjYgMDY6NTksIEFsZXggUm91c3Nrb3Ygd3JvdGU6Cj4gICAgICA+IE9uIDIwMjYt MDQtMTcgMDk6MDgsIEFuZHJleSBLIHdyb3RlOgo+ICAgICAgPgo+ICAgICAgPj4gV2hpbGUgd29y a2luZyB3aXRoIGFubm90YXRpb25zLCBJ4oCZdmUgbm90aWNlZCBhbiBpbmNvbnNpc3RlbmN5IGlu Cj4gICAgIGhvdwo+ICAgICAgPj4gYWNsIG5vdGUgKHdpdGhvdXQgdGhlIC1tIG9wdGlvbikgaGFu ZGxlcyB0b2tlbnMgcmVjZWl2ZWQgZnJvbQo+ICAgICBoZWxwZXJzCj4gICAgICA+PiB3aGVuIHRo ZXkgY29udGFpbiBhIGNvbW1hLgo+ICAgICAgPgo+ICAgICAgPiBJIHRoaW5rIGl0IGlzIGltcG9y dGFudCB0byBub3RlIHRoYXQgdGhlcmUgYXJlIHNldmVyYWwgZGlzdGluY3QKPiAgICAgcGxheWVy cwo+ICAgICAgPiBoZXJlLCBpbmNsdWRpbmc6Cj4gICAgICA+Cj4gICAgICA+IDEuIFdoYXQgYW5u b3RhdGlvbnMgdGhlIGhlbHBlciBzZW5kcyB0byBTcXVpZC4KPiAgICAgID4KPiAKPiAgICAgV2hp Y2ggaXM6Cj4gCj4gICAgICDCoCDCoCDCoGdyb3VwPSJTdGFmZjphY2NvdW50YW50cyxsYXd5ZXJz LHNlY3VyaXR5Igo+IAo+IAo+ICAgICAgPiAyLiBIb3cgaGVscGVyIHJlc3BvbnNlIHBhcnNlciBj b252ZXJ0cyByZWNlaXZlZCBoZWxwZXIgcmVzcG9uc2UgaW50bwo+ICAgICAgPsKgIMKgwqAgdHJh bnNhY3Rpb24gYW5ub3RhdGlvbnMuCj4gICAgICA+Cj4gCj4gICAgIFdoaWNoIGlzOgo+IAo+ICAg ICAgwqAgwqAxKSByZW1vdmUgZG91YmxlLXF1b3Rlcwo+ICAgICAgwqAgwqAyKSB0cmFuc2xhdGUg XC1lc2NhcGVzIHdpdGhpbiBxdW90ZWQtc3RyaW5nIHZhbHVlcwo+ICAgICAgwqAgwqAzKSB0cmFu c2xhdGUgJS1jb2RlZCB3aXRoaW4gdG9rZW4gdmFsdWVzCj4gCj4gICAgIE5vdGhpbmcgbW9yZS4g JywnIGlzIG5vdCBzcGVjaWFsIGZvciB0aGF0IHBhcnNlci4KPiAKPiAKPiAgICAgID4gMy4gSG93 IHRoZSAibm90ZSIgQUNMIGNvZGUgaW50ZXJwcmV0cyB0cmFuc2FjdGlvbiBhbm5vdGF0aW9ucy4K PiAgICAgID7CoCDCoMKgIFRoZXNlIGFubm90YXRpb25zIG1heSBjb21lIGZyb20gc291cmNlcyBv dGhlciB0aGFuIGEgaGVscGVyLgo+ICAgICAgPgo+IAo+ICAgICBUaGlzIGlzIHdoZXJlICcsJyBi ZWNvbWVzIHNwZWNpYWwgYXMgYSBsaXN0IGRlbGltaXRlci4KPiAKPiAgICAgVGhlIGFubm90YXRp b24gc3lzdGVtIGludGVycHJldHMgImEsYixjIiBhcyBhIHNldCBvZiB0aHJlZSB2YWx1ZXMsCj4g ICAgIHN0b3JlZCBhcyBhIGxpc3QuCj4gCj4gICAgICDCoCAoSSBkbyBub3QgdW5kZXJzdGFuZCB3 aHkgd2UgbmVlZCB0byBzdG9yZSBhbm5vdGF0aW9ucyBpbiB0aGVpcgo+ICAgICBzZXJpYWxpemVk IGZvcm1hdCBpbiB0aGUgZmlyc3QgcGxhY2UuIEl0IGlzIGdlbmVyYWxseSBhIGJhZCBkZXNpZ24u KQo+IAo+IAo+ICAgICAgPgo+ICAgICAgPj4gQWNjb3JkaW5nIHRvIHRoZSBkb2N1bWVudGF0aW9u LCBhbiBBQ0wgbGlrZSB0aGlzOgo+ICAgICAgPj4gwqDCoCDCoCBhY2wgc3RhZmYgbm90ZSBncm91 cCBTdGFmZjphY2NvdW50YW50cyxsYXd5ZXJzLHNlY3VyaXR5Cj4gICAgICA+PiBzaG91bGQgbWF0 Y2ggYSBoZWxwZXIgcmVzcG9uc2Ugc3VjaCBhczoKPiAgICAgID4+IMKgwqAgwqAgZ3JvdXA9IlN0 YWZmOmFjY291bnRhbnRzLGxhd3llcnMsc2VjdXJpdHkiCj4gICAgICA+Cj4gICAgICA+IFRoZSBh Ym92ZSBpbXBsaWVzIHRoYXQgaGVscGVyIHJlc3BvbnNlIHBhcnNlciBzaG91bGQgbm90IHNwbGl0 Cj4gICAgIGdyb3VwPVgKPiAgICAgID4gcmVzcG9uc2UgZmllbGRzICh1c2luZyBjb21tYSBhcyBh IGRlbGltaXRlcikuIERvIHdlIGRvY3VtZW50IHRoYXQKPiAgICAgID4gYW55d2hlcmU/Cj4gCj4g ICAgIFRoZSBvbmx5IHRoaW5nIHRoZSBoZWxwZXIgcmVzcG9uc2UgcGFyc2VyIGRvZXMgaXMgcmVt b3ZlIHRoZSBEUVVPVEUKPiAgICAgY2hhcmFjdGVycyBhcm91bmQgdGhlIHZhbHVlIHN0cmluZy4K PiAKPiAgICAgQXMgeW91IG5vdGVkIGJlbG93LCB0aGUgcHJvYmxlbSBpcyBBQ0wgbG9naWMgaW50 ZXJhY3Rpb24gd2l0aCB0aGUKPiAgICAgYW5ub3RhdGlvbiBzdG9yYWdlLgo+IAo+IAo+ICAgICAg PiBEaWQgb3VyIGhlbHBlciByZXNwb25zZSBwYXJzZXIgZXZlciBzcGxpdCBzdWNoIGZpZWxkcyBp biB0aGUKPiAgICAgID4gcGFzdD8KPiAgICAgID4KPiAKPiAgICAgSWYgaXQgZGlkIHRoYXQgd2Fz IGEgYnVnLiBQcmlvciB0byB0aGUgYW5ub3RhdGlvbnMgZmVhdHVyZSB3ZSBkaWQgbm90Cj4gICAg IHN1cHBvcnQga2V5PXZhbHVlLWxpc3QsIG9ubHkga2V5PXZhbHVlIChzaW5ndWxhciB2YWx1ZSku Cj4gCj4gCj4gCj4gICAgICA+IEJUVywgMjAxNSBjb21taXQgNzZlZTY3YWMgdXNlZCBhIHZlcnkg c2ltaWxhciBleGFtcGxlLiBBRkFJQ1QgYnkKPiAgICAgbG9va2luZwo+ICAgICAgPiBhdCB0aGF0 IGNvZGUsIHdlIGRpZCBub3QgYXBwbHkgdmFsdWUgZGVsaW1pdGVycyBieSBkZWZhdWx0IGJhY2sg dGhlbgo+ICAgICAgPiAoaS5lLiB3aGVuIEFDTF9GX1NVQlNUUklORyBhLmsuYS4gIi1tIiBmbGFn IHdhcyBub3Qgc2V0KS4gVGhlIGJ1Zwo+ICAgICB3YXMKPiAgICAgID4gaW50cm9kdWNlZCBpbiAy MDE3IGNvbW1pdCA0ZWFjMzQwNyB0aGF0IHJlcGxhY2VkIGEgcG9zc2libHktbmlsCj4gICAgICA+ IGBmbGFncy5kZWxpbWl0ZXJzKClgIHdpdGggYSBuZXZlci1uaWwgYCZkZWxpbWl0ZXJzLnZhbHVl YC4KPiAgICAgID4KPiAgICAgID4gVGhlIGZvbGxvd2luZyBjb21tZW50IHN1Z2dlc3RzIHRoYXQg d2UgbWlzc2VkIHRoZSBmYWN0IHRoYXQgdXNpbmcKPiAgICAgdGhlCj4gICAgICA+IFtkZWZhdWx0 LWluaXRpYWxpemVkXSB2YWx1ZSAid2l0aG91dCBjaGVja2luZyB3aGV0aGVyIHRoZSBvcHRpb24g aXMKPiAgICAgID4gZW5hYmxlZCgpIiBpcyBhIGJ1ZyAtLSB0aGUgY29ycmVzcG9uZGluZyAidHJp Y2siIG5ldmVyIGZ1bGx5IHdvcmtlZDoKPiAgICAgID4KPiAgICAgID4gYGBgQysrCj4gICAgICA+ IC8vIFRPRE86IFNvbWUgY2FsbGVycyB1c2UgLnZhbHVlIHdpdGhvdXQgY2hlY2tpbmcgd2hldGhl ciB0aGUKPiAgICAgb3B0aW9uIGlzCj4gICAgICA+IC8vIGVuYWJsZWQoKSwgYWNjZXNzaW5nIHRo ZSAoZGVmYXVsdC1pbml0aWFsaXplZCBvciBjdXN0b21pemVkKQo+ICAgICBkZWZhdWx0Cj4gICAg ICA+IC8vIHZhbHVlIHRoYXQgd2F5LiBUaGlzIHRyaWNrIHdpbGwgc3RvcCB3b3JraW5nIGlmIHdl IGFkZCB2YWx1ZWQKPiAgICAgb3B0aW9ucwo+ICAgICAgPiAvLyB0aGF0IGNhbiBiZSBkaXNhYmxl ZCAoZS5nLiwgLS13aXRoLWZvbz14IC0td2l0aG91dC1mb28pLgo+ICAgICAgPiBgYGAKPiAgICAg ID4KPiAgICAgID4KPiAgICAgID4+IEhvd2V2ZXIsIHRoaXMgaXMgbm90IHRoZSBjYXNlLiBUaGUg aGVscGVyJ3MgcmVzcG9uc2UgaXMgc3BsaXQgaW50bwo+ICAgICAgPj4gdG9rZW5zIHVzaW5nIGEg Y29tbWEgYXMgdGhlIGRlZmF1bHQgZGVsaW1pdGVyLiBBcyBhIHJlc3VsdCwgb25seQo+ICAgICBB Q0xzCj4gICAgICA+PiBsaWtlIHRoZSBmb2xsb3dpbmcgd2lsbCBtYXRjaDoKPiAgICAgID4+IMKg wqAgwqAgYWNsIHN0YWZmIG5vdGUgZ3JvdXAgbGF3eWVycwo+ICAgICAgPj4KPiAgICAgID4+IFRo aXMgYmVoYXZpb3Igb2NjdXJzIGJlY2F1c2UgaW4gQWNsOjpOb3RlQ2hlY2s6Om1hdGNoTm90ZXMo KSwgYQo+ICAgICBjb21tYQo+ICAgICAgPj4gaXMgcGFzc2VkIGFzIHRoZSBkZWZhdWx0IGRlbGlt aXRlciB0byB0aGUgZXhwYW5kTGlzdEVudHJpZXMoKQo+ICAgICBmdW5jdGlvbgo+ICAgICAgPgo+ ICAgICAgPiBBZ3JlZWQuCj4gICAgICA+Cj4gCj4gICAgIE5vZC4KPiAKPiAgICAgID4KPiAgICAg ID4+IEkgd291bGQgbGlrZSB0byBwcm9wb3NlIHR3byBjaGFuZ2VzOgo+ICAgICAgPj4gMS4gUmVt b3ZpbmcgdGhlIGRlZmF1bHQgY29tbWEgZGVsaW1pdGVyLgo+ICAgICAgPgo+ICAgICAgPiAuLi4g YW5kIGNoZWNrIGVuYWJsZWQoKSBiZWZvcmUgdXNpbmcgdGhlIHN0b3JlZCB2YWx1ZSwgZml4aW5n IHRoZQo+ICAgICBidWcKPiAgICAgID4gaW50cm9kdWNlZCBpbiAyMDE3IGNvbW1pdCA0ZWFjMzQw Ny4KPiAgICAgID4KPiAKPiAgICAgSU1PIHRoYXQgaXMgdGhlIGluaXRpYWwgYnVnIGNhdXNpbmcg aXNzdWVzLgo+IAo+IAo+IAo+ICAgICAgPgo+ICAgICAgPj4gSSBhbSBwcmVwYXJlZCB0byBzdWJt aXQgYSBzaW1wbGUgUFIgdG8gZXhjbHVkZSB0aGlzIGNvbW1hIHRvIGZpeAo+ICAgICB0aGUKPiAg ICAgID4+IGluY29ycmVjdCBtYXRjaGluZyBvZiBzdHJpbmdzIGNvbnRhaW5pbmcgY29tbWFzLgo+ ICAgICAgPj4gSG93ZXZlciwgSSByZWFsaXplIHRoaXMgbWlnaHQgYmUgYSBicmVha2luZyBjaGFu Z2UgZm9yIHVzZXJzIHdobwo+ICAgICAgPj4gY3VycmVudGx5IHJlbHkgb24gdGhpcyBpbXBsaWNp dCBzcGxpdHRpbmcgYmVoYXZpb3IuCj4gICAgICA+Cj4gICAgICA+IFllcy4gV2Ugc2hvdWxkIGRp c2Nsb3NlIHRoZSBidWcgZml4IGluIFNxdWlkIHJlbGVhc2Ugbm90ZXMuCj4gICAgICA+Cj4gICAg ICA+IFdlIGNhbiBhbHNvIGFkZCBjb2RlIHRvIHdhcm4gYWRtaW5zICh2aWEgYSBjYWNoZS5sb2cg V0FSTklORwo+ICAgICBtZXNzYWdlKQo+ICAgICAgPiB3aGVuIGEgIm5vdGUiIEFDTCBjb25maWd1 cmVkIHdpdGhvdXQgIi1tIiBsb29rcyBhdCBhbiBhbm5vdGF0aW9uCj4gICAgIHZhbHVlCj4gICAg ICA+IGNvbnRhaW5pbmcgYSBjb21tYSwgYnV0IHRoYXQgcmVxdWlyZXMgbW9yZSB3b3JrLgo+ICAg ICAgPgo+ICAgICAgPgo+ICAgICAgPj4gMi4gU3VwcG9ydGluZyBjdXN0b20gZGVsaW1pdGVycyBp biBoZWxwZXIgcmVzcG9uc2VzLgo+ICAgICAgPj4gSSBhbHNvIHByb3Bvc2UgYSBQUiB0byBzdXBw b3J0IGEgZm9ybWF0IHdoZXJlIHRhZyB2YWx1ZXMgY2FuIGJlCj4gICAgIHBhc3NlZAo+ICAgICAg Pj4gYXMgYSBsaXN0IHdpdGggYSBjdXN0b20gZGVsaW1pdGVyOgo+ICAgICAgPj4gwqDCoCDCoCA8 a2V5Pj08ZGVsaW1pdGVyPiI8dmFsdWUxPjxkZWxpbWl0ZXI+PHZhbHVlMj4uLi4iCj4gICAgICA+ PiBGb3IgZXhhbXBsZToKPiAgICAgID4+IMKgwqAgwqAgZ3JvdXA9LCJncm91cDEsZ3JvdXAyLGdy b3VwMyIKPiAgICAgID4+IMKgwqAgwqAgY2x0X2Nvbl90YWc9OyJ0YWcxO3RhZzI7dGFnMyIKPiAg ICAgID4+IEluIHRoaXMgUFIsIHRoZSBoZWxwZXIgcmVzcG9uc2Ugd291bGQgYmUgdG9rZW5pemVk IGJhc2VkIG9uIHRoZQo+ICAgICAgPj4gc3BlY2lmaWVkIGN1c3RvbSBkZWxpbWl0ZXIsIHdoaWxl IHN0aWxsIHN1cHBvcnRpbmcgZGVsaW1pdGVyCj4gICAgIGVzY2FwaW5nCj4gICAgICA+PiB3aXRo IGEgYmFja3NsYXNoIChcKS4KPiAgICAgID4KPiAgICAgID4gSSBkbyBub3QgdGhpbmsgdGhpcyBo YWNrIHdpbGwgd29yayB3ZWxsIGFzIGlzLCB3aXRob3V0IHN5bnRheAo+ICAgICAgPiBtb2RpZmlj YXRpb25zIGJlY2F1c2UgU3F1aWQgYWxyZWFkeSB1c2VzIGRvdWJsZSBxdW90ZXMgc3BlY2lhbGx5 Cj4gICAgIGluIHRoaXMKPiAgICAgID4gY29udGV4dC4gT3ZlcmxvYWRpbmcgcXVvdGF0aW9uIG1l YW5pbmcgd291bGQgYmUgY29uZnVzaW5nL3dyb25nLgo+ICAgICAgPgo+ICAgICAgPiBPdmVyYWxs LCBJIGFtIG5vdCBleGNpdGVkIGFib3V0IHRoaXMgaGFjaywgYnV0IGxldCdzIHN0YXJ0IHdpdGgK PiAgICAgdGhlc2UKPiAgICAgID4gcXVlc3Rpb25zIGFib3V0IGl0cyBzY29wZToKPiAgICAgID4K PiAgICAgID4gKiBDYW4gdGhlIHNhbWUgZWZmZWN0IGJlIGFjaGlldmVkIHRvZGF5IGJ5IHNlbmRp bmcgYSBoZWxwZXIgcmVzcG9uc2UKPiAgICAgID4gY29udGFpbmluZyBtdWx0aXBsZSBzYW1lLW5h bWUgYW5ub3RhdGlvbnM/IEZvciBleGFtcGxlOgo+ICAgICAgPgo+ICAgICAgPsKgIMKgwqDCoCBn cm91cD1ncm91cDEgZ3JvdXA9Z3JvdXAyIGdyb3VwPWdyb3VwMwo+ICAgICAgPgo+IAo+ICAgICBO by4gVGhhdCB3aWxsIGJlIGFkZGVkIGFzIHRocmVlIGRpZmZlcmVudCBrdi1wYWlyIGJ5IHRoZSBo ZWxwZXIgbG9naWMuCj4gCj4gICAgIFRoZSBhbm5vdGF0aW9ucyBzdG9yaW5nIGt2LXBhaXIgaW4g TWlNRSBzeW50YXggd2l0aCBtaXhlZCBhcmJpdHJhcnkKPiAgICAga2V5PXZhbHVlIGFuZCBrZXk9 bGlzdCxvZix2YWx1ZXMgaXMgYSBwcm9ibGVtLgo+IAo+IAo+ICAgICAgPiAqIElmIHRoZSAibm90 ZSIgQUNMIGJ1ZyBpcyBmaXhlZCwgZG8gd2Ugc3RpbGwgbmVlZCB0byBhbGxvdwo+ICAgICBoZWxw ZXIgdG8KPiAgICAgID4gdXNlIGN1c3RvbSB2YWx1ZSBkZWxpbWl0ZXJzPwo+ICAgICAgPgo+ICAg ICAgPiAqIFdoYXQgd291bGQgU3F1aWQgZG8gdG9kYXkgaWYgaXQgcmVjZWl2ZXMgYSBgZ3JvdXA9 LCJhLGIiYAo+ICAgICBhbm5vdGF0aW9uCj4gICAgICA+IGZyb20gYSBoZWxwZXI/IEFGQUlDVCBm cm9tIGxvb2tpbmcgYXQKPiAgICAgID4gSGVscGVyOjpSZXBseTo6cGFyc2VSZXNwb25zZUtleXMo KSwgU3F1aWQgd291bGQgc2lsZW50bHkgdHJlYXQgdGhlCj4gICAgICA+IGxlYWRpbmcgY29tbWEg ZGVsaW1pdGVyIGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHJlY2VpdmVkCj4gICAgICA+ IGFubm90YXRpb24gdmFsdWUgYW5kIGtlZXAgZG91YmxlIHF1b3RlcywgcmlnaHQ/Cj4gCj4gICAg IE5vLiBBbGwgZG91YmxlLXF1b3RlcyBhcmUgcmVtb3ZlZC4KPiAKPiAgICAgVGhhdCBpbnB1dCB3 b3VsZCByZWFjaCB0aGUgYW5ub3RhdGlvbnMgc3RvcmFnZSBhczoKPiAgICAgIMKgIMKgeyBrZXk6 ICdncm91cCcsIHZhbHVlOiAnLGEsYicgfQo+IAo+ICAgICBUaGVuIHRoZSBhbm5vdGF0aW9uIHN0 b3JhZ2Ugc2F2ZXMgdGhhdCBhcyBrZXk9dmFsdWUsbGlzdCBzeW50YXggYW5kCj4gICAgIGV4cGFu ZHMgaXQgbGF0ZXIuIFNhbWUgcHJvYmxlbXMgYWxsIG92ZXIgYWdhaW4uCj4gCj4gCj4gICAgICA+ Cj4gICAgICA+ICogU3F1aWQgZG9lcyBub3QgdHJlYXQgYmFja3NsYXNoZXMgaW4gYW5ub3RhdGlv biB2YWx1ZXMgc3BlY2lhbGx5Cj4gICAgIHRvZGF5LAo+ICAgICAgPiBkb2VzIGl0PyBJZiBwcmVz ZW50LCB0aGV5IGJlY29tZSBwYXJ0IG9mIHRoZSBhbm5vdGF0aW9uIGtleSBvcgo+ICAgICB2YWx1 ZSwKPiAgICAgID4gcmlnaHQ/Cj4gCj4gICAgIE5vLiBUaGV5IGFyZSB0cmFuc2xhdGVkIGJ5IHRo ZSBoZWxwZXIgcmVzcG9uc2UgcGFyc2VyIGludG8gb2N0ZXRzLgo+IAo+IAo+ICAgICBJbnB1dCAn IGdyb3VwPSJhXCxiIiAnIHdvdWxkIHJlYWNoIHRoZSBhbm5vdGF0aW9ucyBzdG9yYWdlIGFzOgo+ ICAgICAgwqAgwqB7IGtleTogJ2dyb3VwJywgdmFsdWU6ICdhLGInIH0KPiAKPiAKPiAgICAgVGhl IGJ1ZyBpcyBub3QgaW4gdGhlIGhlbHBlciBwcm90b2NvbC4gSXQgZG9lcyAqKm5vdGhpbmcqKiB3 aXRoIGNvbW1hLgo+ICAgICBDb3JyZWN0bHkgc28gSU1PLgo+IAo+IAo+ICAgICBIVEgKPiAgICAg QW1vcwo+IAo+ICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+ICAgICBzcXVpZC1kZXYgbWFpbGluZyBsaXN0Cj4gICAgIHNxdWlkLWRldkBsaXN0cy5z cXVpZC1jYWNoZS5vcmcgPG1haWx0bzpzcXVpZC1kZXZAbGlzdHMuc3F1aWQtY2FjaGUub3JnPgo+ ICAgICBodHRwczovL2xpc3RzLnNxdWlkLWNhY2hlLm9yZy9saXN0aW5mby9zcXVpZC1kZXYKPiAg ICAgPGh0dHBzOi8vbGlzdHMuc3F1aWQtY2FjaGUub3JnL2xpc3RpbmZvL3NxdWlkLWRldj4KPiAK PiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IHNx dWlkLWRldiBtYWlsaW5nIGxpc3QKPiBzcXVpZC1kZXZAbGlzdHMuc3F1aWQtY2FjaGUub3JnCj4g aHR0cHM6Ly9saXN0cy5zcXVpZC1jYWNoZS5vcmcvbGlzdGluZm8vc3F1aWQtZGV2CgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpzcXVpZC1kZXYgbWFpbGlu ZyBsaXN0CnNxdWlkLWRldkBsaXN0cy5zcXVpZC1jYWNoZS5vcmcKaHR0cHM6Ly9saXN0cy5zcXVp ZC1jYWNoZS5vcmcvbGlzdGluZm8vc3F1aWQtZGV2Cg==