bug#72695: CC Mode 5.35.2 (C++//l); c++-mode misindents 'if constexpr' inside lambdas
Alan Mackenzie <[email protected]> Fri, 20 Sep 2024 14:59:01 +0000
| Newsgroups | gmane.emacs.cc-mode.general |
|---|---|
| Message-ID | <[email protected]> |
SGVsbG8sIEFyc2VuLgoKT24gVHVlLCBTZXAgMTAsIDIwMjQgYXQgMDE6MDI6NTAgKzAyMDAsIEFy c2VuIEFyc2Vub3ZpxIcgd3JvdGU6Cj4gSGkgQWxhbiwKCj4gQWxhbiBNYWNrZW56aWUgPGFjbUBt dWMuZGU+IHdyaXRlczoKClsgLi4uLiBdCgpJJ20gaG9waW5nIEkndmUgbm93IGZpeGVkIHRoaXMg YnVnIChzZWUgcGF0Y2ggYmVsb3cpLgoKWyAuLi4uIF0KCj4gPj4gSSd2ZSB0cmllZCBpdCBvbiBh IGZldyBleGFtcGxlcyBJIGNhbWUgdXAgd2l0aCwgaXQgc2VlbXMgdG8gd29yayB3ZWxsIGluCj4g Pj4gJ3JlYWwtbGlmZScgY29kZS4KCj4gPj4gSSd2ZSBhbHNvIGNvbnN0cnVjdGVkIHRoZSBmb2xs b3dpbmcgInN0cmVzcyB0ZXN0IiB3aGljaCBpbmNsdWRlcyAoYWxtb3N0Cj4gPj4gLSBzZWUgYmVs b3cpIGFsbCB0aGUgcHJvZHVjdGlvbnMgdGhhdCBjYW4gZXhpc3QgaW4gYSBsYW1iZGEgZnVuY3Rp b24sIGluCj4gPj4gdGhlIHNhbWUgY29udGV4dCBhcyB0aGUgb3JpZ2luYWwgYmFkIGV4YW1wbGU6 Cgo+ID4gVGhhbmtzLCB0aGlzIHdhcyB2ZXJ5IHVzZWZ1bC4gIEFzIGFuIGltcG9ydGFudCBxdWVz dGlvbiwgY2FuIGFuZCBhbGlnbmFzCj4gPiBzcGVjaWZpZXIgZXhpc3QgaW5zaWRlIGEgbGFtYmRh IGV4cHJlc3Npb24/ICBJZiBzbywgd2hhdCBkb2VzIGl0IG1lYW4/Cj4gPiBNeSBuZXcgcGF0Y2gg YmVsb3cgZG9lc24ndCAoeWV0KSBoYW5kbGUgaXQuCgo+IEl0IGNlcnRhaW5seSBjYW4gaW4gdGhl IGJvZHkuICBJIHByZXN1bWUgeW91IG1lYW4gaW4gdGhlCj4gbGVhZGVyL2RlY2xhcmF0b3Ivd2hh dGhhdmV5b3UgaG93ZXZlcjsgaW4gdGhhdCBjYXNlLCB5ZXMsIGFzIHBhcnQgb2YgdGhlCj4gYXR0 cmlidXRlLXNwZWNpZmllci1zZXEgaW4gbGFtYmRhLWV4cHJlc3Npb24gYW5kIGxhbWJkYS1kZWNs YXJhdG9yLCBhbmQKPiBpdHMgbWVhbmluZyBkZXBlbmRzIG9uIHRoZSBwb3NpdGlvbiAoc2VlCj4g aHR0cHM6Ly9lZWwuaXMvYysrZHJhZnQvZXhwci5wcmltLmxhbWJkYSNjbG9zdXJlLTYpLgoKVGhh bmtzLCBJJ3ZlIG5vdyBmb3VuZCB0aGUgcGxhY2UgaW4gdGhlIEMrKyBzeW50YXggd2hlcmUgYWxp Z25hcyBjYW4gZ28KaW4gYSBsYW1iZGEgY29uc3RydWN0LiAgSXQgaXMgdGhlIG9ubHkgc3BlY2lm aWVyIHdoaWNoIG1heSBnbyBpbiB0aGVzZQpwbGFjZXMsIGFsdGhvdWdoIGFueSBudW1iZXIgb2Yg YXR0cmlidXRlcyBhcmUgYWxsb3dlZC4gIChBcyBhIG1hdHRlciBvZgppbnRlcmVzdCwgYXR0cmli dXRlcyBpbiBDQyBNb2RlIGFyZSB0cmVhdGVkIGFzIHN5bnRhY3RpYyB3aGl0ZXNwYWNlLikKClsg Li4uLiBdCgo+ID4+ICAgdm9pZAo+ID4+ICAgZGVmICgpCj4gPj4gICB7Cj4gPj4gICAgIGF1dG8g Zm9vID0gWyYsCj4gPj4gICAJICAgICAgYSwKPiA+PiAgIAkgICAgICBiID0gMTIzLAo+ID4+ICAg CSAgICAgIGMsCj4gPj4gICAJICAgICAgLi4uZCwKPiA+PiAgIAkgICAgICAuLi5lID0gMTIzCj4g Pj4gICAJICAgICAgXQo+ID4+ICAgICAgIDx0eXBlbmFtZSBULAo+ID4+ICAgICAgICB0eXBlbmFt ZSBTPgo+ID4+ICAgICAgIC8vYWxpZ25hcyAoMTI4KQo+ID4+ICAgICAgIFtbZ251Ojpub3JldHVy bl1dCj4gPj4gICAgICAgcmVxdWlyZXMgc29tZV9jb25jZXB0PFQ+Cj4gPj4gICAgICAgKGludCBh LAo+ID4+ICAgICAgICBpbnQgYiwKPiA+PiAgICAgICAgaW50IGMpCj4gPj4gICAgICAgY29uc3Rl dmFsCj4gPj4gICAgICAgY29uc3RleHByCj4gPj4gICAgICAgbXV0YWJsZQo+ID4+ICAgICAgIHN0 YXRpYwo+ID4+ICAgICAgIC8vbm9leGNlcHQodHJ1ZSkKPiA+PiAgICAgICBbW2dudTo6cGFja2Vk XV0KPiA+PiAgICAgICAvL2FsaWduYXMgKDEyOCkKPiA+PiAgICAgICAvLy0+Cj4gPj4gICAgICAg Ly9pbnQKPiA+PiAgICAgICAvL3JlcXVpcmVzIChzdGQ6OnNhbWVfYXMgPGRlY2x0eXBlIChhKSwg aW50PikKPiA+PiAgICAgICAgIHsKPiA+PiAgICAgICBpZiBjb25zdGV4cHIgKHRydWUpCj4gPj4g ICAgICAgICA7Cj4gPj4gICAgIH0KPiA+PiAgIH0KClF1ZXN0aW9uOiBJcyB0aGF0IGZpcnN0IChj b21tZW50ZWQgb3V0KSBhbGlnbmFzIGNvcnJlY3Qgd2hlcmUgaXQgaXM/ICBNeQpyZWFkaW5nIG9m IHRoZSB2ZXJzaW9uIG9mIHRoZSBzdGFuZGFyZCBzdWdnZXN0cyB0aGF0IHRoZSBhbGlnbmFzICgx MjgpCnNob3VsZCBjb21lIF9hZnRlcl8gdGhlIHJlcXVpcmVzIHNvbWVfY29uY2VwdDxUPiwgbm90 IGJlZm9yZSBpdC4KCj4gPiBIZXJlJ3MgYSBtb2RpZmllZCB2ZXJzaW9uIHdoaWNoIGlzIG5vdyBm dWxseSBoYW5kbGVkIChhcyBmYXIgYXMgaXQgZ29lcyk6CgpBbmQgaGVyZSdzIGEgZnVydGhlciBt b2RpZmllZCB2ZXJzaW9uLCB3aGljaCBteSBwYXRjaCAoYmVsb3cpIG5vdwpoYW5kbGVzOgoKdm9p ZApkZWYgKCkKewogICAgICBhdXRvIGZvbyA9IFsmLAogICAgICAgICAgICAgIGEsCiAgICAgICAg ICAgICAgYiA9IDEyMywKICAgICAgICAgICAgICBjLAogICAgICAgICAgICAgIC4uLmQsCiAgICAg ICAgICAgICAgLi4uZSA9IDEyMwogICAgICBdCiAgICAgICAgPHR5cGVuYW1lIFQsCiAgICAgICAg IHR5cGVuYW1lIFM+Ci8vYWxpZ25hcyAoMTI4KQogICAgICAgIFtbZ251Ojpub3JldHVybl1dCiAg ICAgICAgcmVxdWlyZXMgc29tZV9jb25jZXB0PFQ+CiAgICAgICAgYWxpZ25hcyAoMTI4KQogICAg ICAgIChpbnQgYSwKICAgICAgICAgaW50IGIsCiAgICAgICAgIGludCBjKQogICAgICAgIGNvbnN0 ZXZhbAogICAgICAgIGNvbnN0ZXhwcgogICAgICAgIG11dGFibGUKICAgICAgICBzdGF0aWMKICAg ICAgICBub2V4Y2VwdCh0cnVlKQogICAgICAgIFtbZ251OjpwYWNrZWRdXQogICAgICAgIGFsaWdu YXMgKDEyOCkKICAgICAgICAtPiBpbnQKICAgICAgICByZXF1aXJlcyAoc3RkOjpzYW1lX2FzIDxk ZWNsdHlwZSAoYSksIGludD4pCiAgICAgIHsKICAgICAgICBpZiBjb25zdGV4cHIgKHRydWUpCiAg ICAgICAgICA7CiAgICAgIH0KfQoKWyAuLi4uIF0KCj4gPj4gSG9wZWZ1bGx5IHRoZXNlIGV4YW1w bGVzIGhlbHAuCgo+ID4gVmVyeSBtdWNoIHNvLgoKPiA+PiBQbGVhc2UgYWxzbyBub3RlIHRoYXQg aW4gYSBmZXcgcGxhY2VzIChzdWNoIGFzIGFsaWduYXMsIHRoZSBub2V4Y2VwdAo+ID4+IHNwZWNp ZmllciwgUkhTIG9mIGFzc2lnbm1lbnRzIGluIHRoZSBjYXB0dXJlIGxpc3QpIG5lYXItYXJiaXRy YXJ5Cj4gPj4gZXhwcmVzc2lvbnMgY2FuIGFwcGVhciwgYW5kIHRoYXQgcmVxdWlyZXMgY2xhdXNl IGhhdmUgc3BlY2lhbCBib29sZWFuCj4gPj4gZXhwcmVzc2lvbiBzeW50YXggKHNlZQo+ID4+IGh0 dHBzOi8vZWVsLmlzL2MrK2RyYWZ0L3RlbXAucHJlI250OnJlcXVpcmVzLWNsYXVzZSkuCgo+ID4g SSdtIGFmcmFpZCBJIGhhdmVuJ3QgbG9va2VkIGF0IHRoaXMsIHlldC4KCkkgaGF2ZSBub3cuICA6 LSkKClsgLi4uLiBdCgo+ID4gSGVyZSdzIGFuIHVwIHRvIGRhdGUgdmVyc2lvbiBvZiB0aGUgcGF0 Y2gsIHdoaWNoIHNob3VsZCB3b3JrIGJldHRlciB0aGFuCj4gPiB0aGUgbGFzdCB2ZXJzaW9uLiAg UGxlYXNlIGRvIHRoZSB1c3VhbCB3aXRoIGl0LCBhbmQgbGV0IG1lIGtub3cgaG93IGl0Cj4gPiBn b2VzLiAgVGhhbmtzIQoKQW5kIGhlcmUncyB3aGF0IEknbSBob3Bpbmcgd2lsbCBiZSB0aGUgZmlu YWwgdmVyc2lvbiBvZiB0aGUgcGF0Y2ggdG8gZml4CnRoaXMgYnVnLiAgQWdhaW4sIGNvdWxkIHlv dSB0cnkgaXQgb3V0IChvbiByZWFsIGNvZGUgYXMgd2VsbCBhcyB0ZXN0CmNvZGUpLCBhbmQgbGV0 IG1lIGtub3cgaG93IHdlbGwgaXQgd29ya3MuICBJdCBzaG91bGQgYXBwbHkgY2xlYW5seSB0byB0 aGUKRW1hY3MgbWFzdGVyIGJyYW5jaC4gIFRoYW5rcyEKCkV2ZW4gaXQgdGhlIHBhdGNoIGlzIGdv b2QsIEknbSBub3QgcXVpdGUgcmVhZHkgdG8gY29tbWl0IGl0IHlldCwgc2luY2UgSQpuZWVkIHRv IGFtZW5kIHRoZSB0ZXN0IHN1aXRlIHNvbWV3aGF0LgoKCmRpZmYgLXIgNDhhZDY2MWEyZDdkIGNj LWFsaWduLmVsCi0tLSBhL2NjLWFsaWduLmVsCU1vbiBKdWwgMjIgMTI6MDk6MzQgMjAyNCArMDAw MAorKysgYi9jYy1hbGlnbi5lbAlGcmkgU2VwIDIwIDE0OjE1OjE3IDIwMjQgKzAwMDAKQEAgLTk1 LDcgKzk1LDkgQEAKICAgICAgIChjLWJhY2t3YXJkLXN5bnRhY3RpYy13cyAoYy1sYW5nZWxlbS1w b3MgbGFuZ2VsZW0pKQogICAgICAgKGlmIChhbmQgKG1lbXEgKGNoYXItYmVmb3JlKSAnKD99ID8s KSkKIAkgICAgICAgKG5vdCAoYW5kIGMtb3ZlcmxvYWRhYmxlLW9wZXJhdG9ycy1yZWdleHAKLQkJ CSAoYy1hZnRlci1zcGVjaWFsLW9wZXJhdG9yLWlkKSkpKQorCQkJIChjLWFmdGVyLXNwZWNpYWwt b3BlcmF0b3ItaWQpKSkKKwkgICAgICAgKHByb2duIChnb3RvLWNoYXIgKGMtbGFuZ2VsZW0tcG9z IGxhbmdlbGVtKSkKKwkJICAgICAgKG5vdCAobG9va2luZy1hdCBjLXJlcXVpcmVzLWNsYXVzZS1r ZXkpKSkpCiAJICBjLWJhc2ljLW9mZnNldCkpKSkKIAogKGRlZnVuIGMtbGluZXVwLWdudS1ERUZV Ti1pbnRyby1jb250IChsYW5nZWxlbSkKZGlmZiAtciA0OGFkNjYxYTJkN2QgY2MtZW5naW5lLmVs Ci0tLSBhL2NjLWVuZ2luZS5lbAlNb24gSnVsIDIyIDEyOjA5OjM0IDIwMjQgKzAwMDAKKysrIGIv Y2MtZW5naW5lLmVsCUZyaSBTZXAgMjAgMTQ6MTU6MTcgMjAyNCArMDAwMApAQCAtODY5NCwxMCAr ODY5NCw5IEBACiAJKGMtZm9yd2FyZC1zeW50YWN0aWMtd3MpCiAJKGMtZm9yd2FyZC1pZC1jb21t YS1saXN0IHJlZiB0IHQpKQogCi0gICAgICAgKChhbmQgKGMta2V5d29yZC1tZW1iZXIga3dkLXN5 bSAnYy1wYXJlbi1hbnkta3dkcykKKyAgICAgICAoKGFuZCAoYy1rZXl3b3JkLW1lbWJlciBrd2Qt c3ltICdjLXBhcmVuLXR5cGUta3dkcykKIAkgICAgIChlcSAoY2hhci1hZnRlcikgP1woKSkKIAk7 OyBUaGVyZSdzIGFuIG9wZW4gcGFyZW4gYWZ0ZXIgYSBrZXl3b3JkIGluIGBjLXBhcmVuLWFueS1r d2RzJy4KLQogCShmb3J3YXJkLWNoYXIpCiAJKHdoZW4gKGFuZCAoc2V0cSBwb3MgKGMtdXAtbGlz dC1mb3J3YXJkKSkKIAkJICAgKGVxIChjaGFyLWJlZm9yZSBwb3MpID9cKSkpCkBAIC04NzE1LDYg Kzg3MTQsMTIgQEAKIAkgIChzZXRxIHNhZmUtcG9zIChwb2ludCkpKQogCSAgKGMtZm9yd2FyZC1z eW50YWN0aWMtd3MpKQogCisgICAgICAgKChjLWtleXdvcmQtbWVtYmVyIGt3ZC1zeW0gJ2MtcGFy ZW4tbm9udHlwZS1rd2RzKQorCSh3aGVuIChhbmQgKGVxIChjaGFyLWFmdGVyKSA/XCgpCisJCSAg IChjLWdvLWxpc3QtZm9yd2FyZCkpCisJICAoc2V0cSBzYWZlLXBvcyAocG9pbnQpKQorCSAgKGMt Zm9yd2FyZC1zeW50YWN0aWMtd3MpKSkKKwogICAgICAgICgoYW5kIChjLWtleXdvcmQtbWVtYmVy IGt3ZC1zeW0gJ2MtPD4tc2V4cC1rd2RzKQogCSAgICAgKGVxIChjaGFyLWFmdGVyKSA/PCkKIAkg ICAgIChjLWZvcndhcmQtPD4tYXJnbGlzdCAoYy1rZXl3b3JkLW1lbWJlciBrd2Qtc3ltICdjLTw+ LXR5cGUta3dkcykpKQpAQCAtOTkxNCw5ICs5OTE5LDYgQEAKICAgOzsKICAgOzsgTm90ZSB0aGF0 IHRoaXMgZnVuY3Rpb24gaXMgaW5jb21wbGV0ZSwgaGFuZGxpbmcgb25seSB0aG9zZSBjYXNlcyBl eHBlY3RlZAogICA7OyB0byBiZSBjb21tb24gaW4gYSBDKysyMCByZXF1aXJlcyBjbGF1c2UuCi0g IDs7Ci0gIDs7IE5vdGUgYWxzbyB0aGF0ICguLi4pIGlzIG5vdCByZWNvZ25pemVkIGFzIGEgcHJp bWFyeSBleHByZXNzaW9uIGlmIHRoZQotICA7OyBuZXh0IHRva2VuIGlzIGFuIG9wZW4gYnJhY2Uu CiAgIChsZXQgKChoZXJlIChwb2ludCkpCiAJKGMtcmVzdHJpY3RlZC08Pi1hcmdsaXN0cyB0KQog CShjLXBhcnNlLWFuZC1tYXJrdXAtPD4tYXJnbGlzdHMgbmlsKQpAQCAtOTkyOSwxMiArOTkzMSwx MCBAQAogCSAoKGVxIChjaGFyLWFmdGVyKSA/XCgpCiAJICAoYW5kIChjLWdvLWxpc3QtZm9yd2Fy ZCAocG9pbnQpIGxpbWl0KQogCSAgICAgICAoZXEgKGNoYXItYmVmb3JlKSA/XCkpCi0JICAgICAg IChsZXQgKChhZnRlci1wYXJlbiAocG9pbnQpKSkKLQkJIChjLWZvcndhcmQtc3ludGFjdGljLXdz IGxpbWl0KQotCQkgKHByb2cxCi0JCSAgICAgKG5vdCAoZXEgKGNoYXItYWZ0ZXIpID97KSkKLQkJ ICAgKHdoZW4gc3RvcC1hdC1lbmQKLQkJICAgICAoZ290by1jaGFyIGFmdGVyLXBhcmVuKSkpKSkp CisJICAgICAgIChwcm9nbgorCQkgKHVubGVzcyBzdG9wLWF0LWVuZAorCQkgICAoYy1mb3J3YXJk LXN5bnRhY3RpYy13cyBsaW1pdCkpCisJCSB0KSkpCiAJICgoYy1mb3J3YXJkLW92ZXItY29tcG91 bmQtaWRlbnRpZmllcikKIAkgIChsZXQgKChhZnRlci1pZCAocG9pbnQpKSkKIAkgICAgKGMtZm9y d2FyZC1zeW50YWN0aWMtd3MgbGltaXQpCkBAIC05OTUzLDkgKzk5NTMsNyBAQAogCQkJICAoYy1m b3J3YXJkLW92ZXItY29tcG91bmQtaWRlbnRpZmllcikKIAkJCShjLWZvcndhcmQtc3ludGFjdGlj LXdzIGxpbWl0KSkpKSkpCiAJICAgIChnb3RvLWNoYXIgYWZ0ZXItaWQpKSkKLQkgKChhbmQKLQkg ICAobG9va2luZy1hdCBjLWZ1bi1uYW1lLXN1YnN0aXR1dGUta2V5KSA7ICJyZXF1aXJlcyIKLQkg ICAobm90IChlcSAoY2hhci1hZnRlciAobWF0Y2gtZW5kIDApKSA/XykpKQorCSAoKGxvb2tpbmct YXQgYy1mdW4tbmFtZS1zdWJzdGl0dXRlLWtleSkgOyAicmVxdWlyZXMiCiAJICAoZ290by1jaGFy IChtYXRjaC1lbmQgMSkpCiAJICAoYy1mb3J3YXJkLXN5bnRhY3RpYy13cyBsaW1pdCkKIAkgIChh bmQKQEAgLTEwMjEwLDkgKzEwMjA4LDcgQEAKIAkJICAgKChsb29raW5nLWF0IGMtdHlwZS1kZWNs LXN1ZmZpeC1rZXkpCiAJCSAgICAoY29uZAogCQkgICAgICgoc2F2ZS1tYXRjaC1kYXRhCi0JCQko YW5kCi0JCQkgKGxvb2tpbmctYXQgYy1mdW4tbmFtZS1zdWJzdGl0dXRlLWtleSkKLQkJCSAobm90 IChlcSAoY2hhci1hZnRlciAobWF0Y2gtZW5kIDApKSA/XykpKSkKKwkJCShsb29raW5nLWF0IGMt cmVxdWlyZXMtY2xhdXNlLWtleSkpCiAJCSAgICAgIChjLWZvcndhcmQtYysrLXJlcXVpcmVzLWNs YXVzZSkpCiAJCSAgICAgKChlcSAoY2hhci1hZnRlcikgP1woKQogCQkgICAgICAoaWYgKGMtZm9y d2FyZC1kZWNsLWFyZ2xpc3Qgbm90LXRvcCBkZWNvcmF0ZWQgbGltaXQpCkBAIC0xMDY2NywxMCAr MTA2NjMsOCBAQAogCSAgICAgIChjLWZvcndhcmQta2V5d29yZC1jbGF1c2UgMSkKIAkgICAgICAo d2hlbiAoYW5kIChjLW1ham9yLW1vZGUtaXMgJ2MrKy1tb2RlKQogCQkJIChjLWtleXdvcmQtbWVt YmVyIGt3ZC1zeW0gJ2MtPD4tc2V4cC1rd2RzKQotCQkJIChzYXZlLW1hdGNoLWRhdGEKLQkJCSAg IChhbmQKLQkJCSAgICAobG9va2luZy1hdCBjLWZ1bi1uYW1lLXN1YnN0aXR1dGUta2V5KQotCQkJ ICAgIChub3QgKGVxIChjaGFyLWFmdGVyIChtYXRjaC1lbmQgMCkpID9fKSkpKSkKKwkJCSAoc2F2 ZS1tYXRjaC1kYXRhIDsgUHJvYmFibHkgdW5uZWNlc3NhcnkgKDIwMjQtMDktMjApCisJCQkgICAo bG9va2luZy1hdCBjLXJlcXVpcmVzLWNsYXVzZS1rZXkpKSkKIAkJKGMtZm9yd2FyZC1jKystcmVx dWlyZXMtY2xhdXNlKSkKIAkgICAgICAoc2V0cSBrd2QtY2xhdXNlLWVuZCAocG9pbnQpKSkpCiAJ ICAgKChhbmQgYy1vcHQtY3BwLXByZWZpeApAQCAtMTEwMjgsOSArMTEwMjIsNyBAQAogCQkgICAg ICgoc2F2ZS1tYXRjaC1kYXRhIChsb29raW5nLWF0ICJcXHMoIikpCiAJCSAgICAgIChjLXNhZmUg KGMtZm9yd2FyZC1zZXhwIDEpIHQpKQogCQkgICAgICgoc2F2ZS1tYXRjaC1kYXRhCi0JCQkoYW5k Ci0JCQkgKGxvb2tpbmctYXQgYy1mdW4tbmFtZS1zdWJzdGl0dXRlLWtleSkKLQkJCSAobm90IChl cSAoY2hhci1hZnRlciAobWF0Y2gtZW5kIDApKSA/XykpKSkgOyBDKysgcmVxdWlyZXMKKwkJCShs b29raW5nLWF0IGMtcmVxdWlyZXMtY2xhdXNlLWtleSkpCiAJCSAgICAgIChjLWZvcndhcmQtYysr LXJlcXVpcmVzLWNsYXVzZSkpCiAJCSAgICAgKHQgKGdvdG8tY2hhciAobWF0Y2gtZW5kIDEpKQog CQkJdCkpCkBAIC0xMzE3OCwyMjkgKzEzMTcwLDIxOCBAQAogICA7OwogICA7OyBIZXJlLCAiYnJh Y2UgbGlzdCIgZG9lcyBub3QgaW5jbHVkZSB0aGUgYm9keSBvZiBhbiBlbnVtLgogICAoc2F2ZS1l eGN1cnNpb24KLSAgICAobGV0ICgoc3RhcnQgKHBvaW50KSkKLQkgIChicmFjZWFzc2lnbnAgJ2Rv bnRrbm93KQotCSAgaW5leHByLWJyYWNlLWxpc3QgYnVmcG9zIG1hY3JvLXN0YXJ0IHJlcyBwb3Mg YWZ0ZXItdHlwZS1pZC1wb3MKLQkgIHBvczIgaW4tcGFyZW4gcGFyZW5zLWJlZm9yZS1icmFjZQot CSAgcGFyZW4tc3RhdGUgcGFyZW4tcG9zKQotCi0gICAgICAoc2V0cSByZXMKLQkgICAgKG9yIChw cm9nbiAoYy1iYWNrd2FyZC1zeW50YWN0aWMtd3MpCi0JCSAgICAgICAoYy1iYWNrLW92ZXItY29t cG91bmQtaWRlbnRpZmllcikpCi0JCShjLWJhY2t3YXJkLXRva2VuLTIgMSB0IGxpbSkpKQotICAg ICAgOzsgQ2hlY2tzIHRvIGRvIG9ubHkgb24gdGhlIGZpcnN0IHNleHAgYmVmb3JlIHRoZSBicmFj ZS4KLSAgICAgIDs7IEhhdmUgd2UgYSBDKysgaW5pdGlhbGl6YXRpb24sIHdpdGhvdXQgYW4gIj0i PwotICAgICAgKGlmIChhbmQgKGMtbWFqb3ItbW9kZS1pcyAnYysrLW1vZGUpCi0JICAgICAgIChj b25kCi0JCSgoYW5kIChvciAobm90IChtZW1xIHJlcyAnKHQgMCkpKQotCQkJICAoZXEgKGNoYXIt YWZ0ZXIpID8sKSkKLQkJICAgICAgKHNldHEgcGFyZW4tc3RhdGUgKGMtcGFyc2Utc3RhdGUpKQot CQkgICAgICAoc2V0cSBwYXJlbi1wb3MgKGMtcHVsbC1vcGVuLWJyYWNlIHBhcmVuLXN0YXRlKSkK LQkJICAgICAgKGVxIChjaGFyLWFmdGVyIHBhcmVuLXBvcykgP1woKSkKLQkJIChnb3RvLWNoYXIg cGFyZW4tcG9zKQotCQkgKHNldHEgYnJhY2Vhc3NpZ25wICdjKystbm9hc3NpZ24KLQkJICAgICAg IGluLXBhcmVuICdpbi1wYXJlbikpCi0JCSgobG9va2luZy1hdCBjLXByZS1icmFjZS1ub24tYnJh Y2VsaXN0LWtleSkKLQkJIChzZXRxIGJyYWNlYXNzaWducCBuaWwpKQotCQkoKGFuZAotCQkgIChs b29raW5nLWF0IGMtZnVuLW5hbWUtc3Vic3RpdHV0ZS1rZXkpCi0JCSAgKG5vdCAoZXEgKGNoYXIt YWZ0ZXIgKG1hdGNoLWVuZCAwKSkgP18pKSkKLQkJIChzZXRxIGJyYWNlYXNzaWducCBuaWwpKQot CQkoKGxvb2tpbmctYXQgYy1yZXR1cm4ta2V5KSkKLQkJKChhbmQgKGxvb2tpbmctYXQgYy1zeW1i b2wtc3RhcnQpCi0JCSAgICAgIChub3QgKGxvb2tpbmctYXQgYy1rZXl3b3Jkcy1yZWdleHApKSkK LQkJIChpZiAoc2F2ZS1leGN1cnNpb24KLQkJICAgICAgIChhbmQgKHplcm9wIChjLWJhY2t3YXJk LXRva2VuLTIgMSB0IGxpbSkpCi0JCQkgICAgKGxvb2tpbmctYXQgYy1wcmUtaWQtYnJhY2VsaXN0 LWtleSkpKQotCQkgICAgIChzZXRxIGJyYWNlYXNzaWducCAnYysrLW5vYXNzaWduKQotCQkgICAo c2V0cSBhZnRlci10eXBlLWlkLXBvcyAocG9pbnQpKSkpCi0JCSgoZXEgKGNoYXItYWZ0ZXIpID9c KCkKLQkJIChzZXRxIHBhcmVucy1iZWZvcmUtYnJhY2UgdCkKLQkJIDs7IEhhdmUgd2UgYSByZXF1 aXJlcyB3aXRoIGEgcGFyZW50aGVzaXMgbGlzdD8KLQkJICh3aGVuIChzYXZlLWV4Y3Vyc2lvbgot CQkJIChhbmQgKHplcm9wIChjLWJhY2t3YXJkLXRva2VuLTIgMSBuaWwgbGltKSkKLQkJCSAgICAg IChsb29raW5nLWF0IGMtZnVuLW5hbWUtc3Vic3RpdHV0ZS1rZXkpCi0JCQkgICAgICAobm90IChl cSAoY2hhci1hZnRlciAobWF0Y2gtZW5kIDApKSA/XykpKSkKKyAgICAodW5sZXNzIChhbmQgKGMt bWFqb3ItbW9kZS1pcyAnYysrLW1vZGUpCisJCSAoYy1iYWNrd2FyZC1vdmVyLWxhbWJkYS1leHBy ZXNzaW9uIGxpbSkpCisgICAgICAobGV0ICgoc3RhcnQgKHBvaW50KSkKKwkgICAgKGJyYWNlYXNz aWducCAnZG9udGtub3cpCisJICAgIGluZXhwci1icmFjZS1saXN0IGJ1ZnBvcyBtYWNyby1zdGFy dCByZXMgcG9zIGFmdGVyLXR5cGUtaWQtcG9zCisJICAgIHBvczIgaW4tcGFyZW4gcGFyZW4tc3Rh dGUgcGFyZW4tcG9zKQorCisJKHNldHEgcmVzCisJICAgICAgKG9yIChwcm9nbiAoYy1iYWNrd2Fy ZC1zeW50YWN0aWMtd3MpCisJCQkgKGMtYmFjay1vdmVyLWNvbXBvdW5kLWlkZW50aWZpZXIpKQor CQkgIChjLWJhY2t3YXJkLXRva2VuLTIgMSB0IGxpbSkpKQorCTs7IENoZWNrcyB0byBkbyBvbmx5 IG9uIHRoZSBmaXJzdCBzZXhwIGJlZm9yZSB0aGUgYnJhY2UuCisJOzsgSGF2ZSB3ZSBhIEMrKyBp bml0aWFsaXphdGlvbiwgd2l0aG91dCBhbiAiPSI/CisJKGlmIChhbmQgKGMtbWFqb3ItbW9kZS1p cyAnYysrLW1vZGUpCisJCSAoY29uZAorCQkgICgoYW5kIChvciAobm90IChtZW1xIHJlcyAnKHQg MCkpKQorCQkJICAgIChlcSAoY2hhci1hZnRlcikgPywpKQorCQkJKHNldHEgcGFyZW4tc3RhdGUg KGMtcGFyc2Utc3RhdGUpKQorCQkJKHNldHEgcGFyZW4tcG9zIChjLXB1bGwtb3Blbi1icmFjZSBw YXJlbi1zdGF0ZSkpCisJCQkoZXEgKGNoYXItYWZ0ZXIgcGFyZW4tcG9zKSA/XCgpKQorCQkgICAo Z290by1jaGFyIHBhcmVuLXBvcykKKwkJICAgKHNldHEgYnJhY2Vhc3NpZ25wICdjKystbm9hc3Np Z24KKwkJCSBpbi1wYXJlbiAnaW4tcGFyZW4pKQorCQkgICgobG9va2luZy1hdCBjLXByZS1icmFj ZS1ub24tYnJhY2VsaXN0LWtleSkKIAkJICAgKHNldHEgYnJhY2Vhc3NpZ25wIG5pbCkpCi0JCSBu aWwpCi0JCSh0IG5pbCkpCi0JICAgICAgIChzYXZlLWV4Y3Vyc2lvbgotCQkgKGNvbmQKLQkJICAo KG9yIChub3QgKG1lbXEgcmVzICcodCAwKSkpCi0JCSAgICAgICAoZXEgKGNoYXItYWZ0ZXIpID8s KSkKLQkJICAgKGFuZCAoc2V0cSBwYXJlbi1zdGF0ZSAoYy1wYXJzZS1zdGF0ZSkpCi0JCQkoc2V0 cSBwYXJlbi1wb3MgKGMtcHVsbC1vcGVuLWJyYWNlIHBhcmVuLXN0YXRlKSkKLQkJCShlcSAoY2hh ci1hZnRlciBwYXJlbi1wb3MpID9cKCkKLQkJCShzZXRxIGluLXBhcmVuICdpbi1wYXJlbikKLQkJ CShnb3RvLWNoYXIgcGFyZW4tcG9zKSkpCi0JCSAgKChsb29raW5nLWF0IGMtcHJlLWJyYWNlLW5v bi1icmFjZWxpc3Qta2V5KSkKKwkJICAoKGxvb2tpbmctYXQgYy1mdW4tbmFtZS1zdWJzdGl0dXRl LWtleSkKKwkJICAgKHNldHEgYnJhY2Vhc3NpZ25wIG5pbCkpCiAJCSAgKChsb29raW5nLWF0IGMt cmV0dXJuLWtleSkpCiAJCSAgKChhbmQgKGxvb2tpbmctYXQgYy1zeW1ib2wtc3RhcnQpCi0JCQko bm90IChsb29raW5nLWF0IGMta2V5d29yZHMtcmVnZXhwKSkKLQkJCShzYXZlLWV4Y3Vyc2lvbgot CQkJICAoYW5kICh6ZXJvcCAoYy1iYWNrd2FyZC10b2tlbi0yIDEgdCBsaW0pKQotCQkJICAgICAg IChsb29raW5nLWF0IGMtcHJlLWlkLWJyYWNlbGlzdC1rZXkpKSkpKQotCQkgICh0IChzZXRxIGFm dGVyLXR5cGUtaWQtcG9zIChwb2ludCkpCi0JCSAgICAgbmlsKSkpKQotCSAgKHNldHEgYnJhY2Vh c3NpZ25wICdjKystbm9hc3NpZ24pKQotCi0gICAgICAod2hlbiAoYW5kIGMtb3B0LWluZXhwci1i cmFjZS1saXN0LWtleQotCQkgKGVxIChjaGFyLWFmdGVyKSA/XFspKQotCTs7IEluIEphdmEsIGFu IGluaXRpYWxpemF0aW9uIGJyYWNlIGxpc3QgbWF5IGZvbGxvdwotCTs7IGRpcmVjdGx5IGFmdGVy ICJuZXcgRm9vW10iLCBzbyBjaGVjayBmb3IgYSAibmV3IgotCTs7IGVhcmxpZXIuCi0JKHdoaWxl IChlcSBicmFjZWFzc2lnbnAgJ2RvbnRrbm93KQotCSAgKHNldHEgYnJhY2Vhc3NpZ25wCi0JCShj b25kICgoLz0gKGMtYmFja3dhcmQtdG9rZW4tMiAxIHQgbGltKSAwKSBuaWwpCi0JCSAgICAgICgo bG9va2luZy1hdCBjLW9wdC1pbmV4cHItYnJhY2UtbGlzdC1rZXkpCi0JCSAgICAgICAoc2V0cSBp bmV4cHItYnJhY2UtbGlzdCB0KQotCQkgICAgICAgdCkKLQkJICAgICAgKChsb29raW5nLWF0ICJc XHN3XFx8XFxzX1xcfFsuW10iKQotCQkgICAgICAgOzsgQ2Fycnkgb24gbG9va2luZyBpZiB0aGlz IGlzIGFuCi0JCSAgICAgICA7OyBpZGVudGlmaWVyIChtYXkgY29udGFpbiAiLiIgaW4gSmF2YSkK LQkJICAgICAgIDs7IG9yIGFub3RoZXIgIltdIiBzZXhwLgotCQkgICAgICAgJ2RvbnRrbm93KQot CQkgICAgICAodCBuaWwpKSkpKQotCi0gICAgICAoc2V0cSBwb3MgKHBvaW50KSkKLSAgICAgIChj b25kCi0gICAgICAgKChub3QgYnJhY2Vhc3NpZ25wKQotCW5pbCkKLSAgICAgICAoKGFuZCBhZnRl ci10eXBlLWlkLXBvcwotCSAgICAgKGdvdG8tY2hhciBhZnRlci10eXBlLWlkLXBvcykKLQkgICAg IChzZXRxIHJlcyAoYy1iYWNrLW92ZXItbWVtYmVyLWluaXRpYWxpemVycykpCi0JICAgICAoZ290 by1jaGFyIHJlcykKLQkgICAgIChlcSAoY2FyIChjLWJlZ2lubmluZy1vZi1kZWNsLTEgbGltKSkg J3NhbWUpKQotCShjb25zIChwb2ludCkgbmlsKSkJCTsgUmV0dXJuIHZhbHVlLgotCi0gICAgICAg KChhbmQgYWZ0ZXItdHlwZS1pZC1wb3MKLQkgICAgIChwcm9nbgotCSAgICAgICAoYy1iYWNrd2Fy ZC1zeW50YWN0aWMtd3MpCi0JICAgICAgIChlcSAoY2hhci1iZWZvcmUpID9cKCkpKQotCTs7IFNp bmdsZSBpZGVudGlmaWVyIGJldHdlZW4gJygnIGFuZCAneycuICBXZSBoYXZlIGEgYnJhY2VsaXN0 LgotCShjb25zIGFmdGVyLXR5cGUtaWQtcG9zICdpbi1wYXJlbikpCi0KLSAgICAgICA7OyBBcmUg d2UgYXQgdGhlIHBhcmVucyBvZiBhIEMrKyBsYW1iZGEgZXhwcmVzc2lvbj8KLSAgICAgICAoKGFu ZCBwYXJlbnMtYmVmb3JlLWJyYWNlCi0JICAgICAoc2F2ZS1leGN1cnNpb24KLQkgICAgICAgKGFu ZAotCQkoemVyb3AgKGMtYmFja3dhcmQtdG9rZW4tMiAxIHQgbGltKSkKLQkJKGMtbG9va2luZy1h dC1jKystbGFtYmRhLWNhcHR1cmUtbGlzdCkpKSkKLQluaWwpCQkJICAgICA7IGEgbGFtYmRhIGV4 cHJlc3Npb24gaXNuJ3QgYSBicmFjZSBsaXN0LgotCi0gICAgICAgKHQKLQkoZ290by1jaGFyIHBv cykKLQkod2hlbiAoZXEgYnJhY2Vhc3NpZ25wICdkb250a25vdykKLQkgIChsZXQqICgoY2FjaGUt ZW50cnkgKGFuZCBjb250YWluaW5nLXNleHAKLQkJCQkgICAoYy1sYW9taWItZ2V0LWNhY2hlIGNv bnRhaW5pbmctc2V4cCBwb3MpKSkKLQkJIChsaW0yIChvciAoY2FkciBjYWNoZS1lbnRyeSkgbGlt KSkKLQkJIHN1Yi1iYXNzaWduLXApCi0JICAgIChpZiBjYWNoZS1lbnRyeQotCQkoY29uZAotCQkg KCg8PSAocG9pbnQpIChjYWRyIGNhY2hlLWVudHJ5KSkKLQkJICA7OyBXZSdyZSBpbnNpZGUgdGhl IHJlZ2lvbiB3ZSd2ZSBhbHJlYWR5IHNjYW5uZWQgb3Zlciwgc28KLQkJICA7OyBqdXN0IGdvIHRv IHRoYXQgc2NhbidzIGVuZCBwb3NpdGlvbi4KLQkJICAoZ290by1jaGFyIChudGggMiBjYWNoZS1l bnRyeSkpCi0JCSAgKHNldHEgYnJhY2Vhc3NpZ25wIChudGggMyBjYWNoZS1lbnRyeSkpKQotCQkg KCg+IChwb2ludCkgKGNhZHIgY2FjaGUtZW50cnkpKQotCQkgIDs7IFdlJ3JlIGJleW9uZCB0aGUg cHJldmlvdXMgc2NhbiByZWdpb24sIHNvIGp1c3Qgc2NhbiBhcwotCQkgIDs7IGZhciBhcyB0aGUg ZW5kIG9mIHRoYXQgcmVnaW9uLgotCQkgIChzZXRxIHN1Yi1iYXNzaWduLXAgKGMtbGFvbWliLWxv b3AgbGltMikpCi0JCSAgKGlmICg8PSAocG9pbnQpIChjYWRyIGNhY2hlLWVudHJ5KSkKLQkJICAg ICAgKHByb2duCi0JCQkoYy1sYW9taWItcHV0LWNhY2hlIGNvbnRhaW5pbmctc2V4cAotCQkJCQkg ICAgc3RhcnQgKG50aCAyIGNhY2hlLWVudHJ5KQotCQkJCQkgICAgKG50aCAzIGNhY2hlLWVudHJ5 KSA7OyBzdWItYmFzc2lnbi1wCi0JCQkJCSAgICApCi0JCQkoc2V0cSBicmFjZWFzc2lnbnAgKG50 aCAzIGNhY2hlLWVudHJ5KSkKLQkJCShnb3RvLWNoYXIgKG50aCAyIGNhY2hlLWVudHJ5KSkpCi0J CSAgICAoYy1sYW9taWItcHV0LWNhY2hlIGNvbnRhaW5pbmctc2V4cAotCQkJCQlzdGFydCAocG9p bnQpIHN1Yi1iYXNzaWduLXApCi0JCSAgICAoc2V0cSBicmFjZWFzc2lnbnAgc3ViLWJhc3NpZ24t cCkpKQotCQkgKHQpKQotCi0JICAgICAgKHNldHEgYnJhY2Vhc3NpZ25wIChjLWxhb21pYi1sb29w IGxpbSkpCi0JICAgICAgKHdoZW4gbGltCi0JCShjLWxhb21pYi1wdXQtY2FjaGUgbGltIHN0YXJ0 IChwb2ludCkgYnJhY2Vhc3NpZ25wKSkpKSkKLQorCQkJKG5vdCAobG9va2luZy1hdCBjLWtleXdv cmRzLXJlZ2V4cCkpKQorCQkgICAoaWYgKHNhdmUtZXhjdXJzaW9uCisJCQkgKGFuZCAoemVyb3Ag KGMtYmFja3dhcmQtdG9rZW4tMiAxIHQgbGltKSkKKwkJCSAgICAgIChsb29raW5nLWF0IGMtcHJl LWlkLWJyYWNlbGlzdC1rZXkpKSkKKwkJICAgICAgIChzZXRxIGJyYWNlYXNzaWducCAnYysrLW5v YXNzaWduKQorCQkgICAgIChzZXRxIGFmdGVyLXR5cGUtaWQtcG9zIChwb2ludCkpKSkKKwkJICAo KGVxIChjaGFyLWFmdGVyKSA/XCgpCisJCSAgIDs7IEhhdmUgd2UgYSByZXF1aXJlcyB3aXRoIGEg cGFyZW50aGVzaXMgbGlzdD8KKwkJICAgKHdoZW4gKHNhdmUtZXhjdXJzaW9uCisJCQkgICAoYW5k ICh6ZXJvcCAoYy1iYWNrd2FyZC10b2tlbi0yIDEgbmlsIGxpbSkpCisJCQkJKGxvb2tpbmctYXQg Yy1mdW4tbmFtZS1zdWJzdGl0dXRlLWtleSkpKQorCQkgICAgIChzZXRxIGJyYWNlYXNzaWducCBu aWwpKQorCQkgICBuaWwpCisJCSAgKHQgbmlsKSkKKwkJIChzYXZlLWV4Y3Vyc2lvbgorCQkgICAo Y29uZAorCQkgICAgKChvciAobm90IChtZW1xIHJlcyAnKHQgMCkpKQorCQkJIChlcSAoY2hhci1h ZnRlcikgPywpKQorCQkgICAgIChhbmQgKHNldHEgcGFyZW4tc3RhdGUgKGMtcGFyc2Utc3RhdGUp KQorCQkJICAoc2V0cSBwYXJlbi1wb3MgKGMtcHVsbC1vcGVuLWJyYWNlIHBhcmVuLXN0YXRlKSkK KwkJCSAgKGVxIChjaGFyLWFmdGVyIHBhcmVuLXBvcykgP1woKQorCQkJICAoc2V0cSBpbi1wYXJl biAnaW4tcGFyZW4pCisJCQkgIChnb3RvLWNoYXIgcGFyZW4tcG9zKSkpCisJCSAgICAoKGxvb2tp bmctYXQgYy1wcmUtYnJhY2Utbm9uLWJyYWNlbGlzdC1rZXkpKQorCQkgICAgKChsb29raW5nLWF0 IGMtcmV0dXJuLWtleSkpCisJCSAgICAoKGFuZCAobG9va2luZy1hdCBjLXN5bWJvbC1zdGFydCkK KwkJCSAgKG5vdCAobG9va2luZy1hdCBjLWtleXdvcmRzLXJlZ2V4cCkpCisJCQkgIChzYXZlLWV4 Y3Vyc2lvbgorCQkJICAgIChhbmQgKHplcm9wIChjLWJhY2t3YXJkLXRva2VuLTIgMSB0IGxpbSkp CisJCQkJIChsb29raW5nLWF0IGMtcHJlLWlkLWJyYWNlbGlzdC1rZXkpKSkpKQorCQkgICAgKHQg KHNldHEgYWZ0ZXItdHlwZS1pZC1wb3MgKHBvaW50KSkKKwkJICAgICAgIG5pbCkpKSkKKwkgICAg KHNldHEgYnJhY2Vhc3NpZ25wICdjKystbm9hc3NpZ24pKQorCisJKHdoZW4gKGFuZCBjLW9wdC1p bmV4cHItYnJhY2UtbGlzdC1rZXkKKwkJICAgKGVxIChjaGFyLWFmdGVyKSA/XFspKQorCSAgOzsg SW4gSmF2YSwgYW4gaW5pdGlhbGl6YXRpb24gYnJhY2UgbGlzdCBtYXkgZm9sbG93CisJICA7OyBk aXJlY3RseSBhZnRlciAibmV3IEZvb1tdIiwgc28gY2hlY2sgZm9yIGEgIm5ldyIKKwkgIDs7IGVh cmxpZXIuCisJICAod2hpbGUgKGVxIGJyYWNlYXNzaWducCAnZG9udGtub3cpCisJICAgIChzZXRx IGJyYWNlYXNzaWducAorCQkgIChjb25kICgoLz0gKGMtYmFja3dhcmQtdG9rZW4tMiAxIHQgbGlt KSAwKSBuaWwpCisJCQkoKGxvb2tpbmctYXQgYy1vcHQtaW5leHByLWJyYWNlLWxpc3Qta2V5KQor CQkJIChzZXRxIGluZXhwci1icmFjZS1saXN0IHQpCisJCQkgdCkKKwkJCSgobG9va2luZy1hdCAi XFxzd1xcfFxcc19cXHxbLltdIikKKwkJCSA7OyBDYXJyeSBvbiBsb29raW5nIGlmIHRoaXMgaXMg YW4KKwkJCSA7OyBpZGVudGlmaWVyIChtYXkgY29udGFpbiAiLiIgaW4gSmF2YSkKKwkJCSA7OyBv ciBhbm90aGVyICJbXSIgc2V4cC4KKwkJCSAnZG9udGtub3cpCisJCQkodCBuaWwpKSkpKQorCisJ KHNldHEgcG9zIChwb2ludCkpCiAJKGNvbmQKLQkgKGJyYWNlYXNzaWducAotCSAgOzsgV2UndmUg aGl0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFnZ3JlZ2F0ZSBsaXN0LgotCSAgKHNldHEgcG9zMiAo cG9pbnQpKQotCSAgKGNvbnMKLQkgICAoaWYgKGVxIChjLWJlZ2lubmluZy1vZi1zdGF0ZW1lbnQt MSBjb250YWluaW5nLXNleHApICdzYW1lKQotCSAgICAgICAocG9pbnQpCi0JICAgICBwb3MyKQot CSAgIChvciBpbi1wYXJlbiBpbmV4cHItYnJhY2UtbGlzdCkpKQorCSAoKG5vdCBicmFjZWFzc2ln bnApCisJICBuaWwpCisJICgoYW5kIGFmdGVyLXR5cGUtaWQtcG9zCisJICAgICAgIChnb3RvLWNo YXIgYWZ0ZXItdHlwZS1pZC1wb3MpCisJICAgICAgIChzZXRxIHJlcyAoYy1iYWNrLW92ZXItbWVt YmVyLWluaXRpYWxpemVycykpCisJICAgICAgIChnb3RvLWNoYXIgcmVzKQorCSAgICAgICAoZXEg KGNhciAoYy1iZWdpbm5pbmctb2YtZGVjbC0xIGxpbSkpICdzYW1lKSkKKwkgIChjb25zIChwb2lu dCkgbmlsKSkJCTsgUmV0dXJuIHZhbHVlLgorCiAJICgoYW5kIGFmdGVyLXR5cGUtaWQtcG9zCi0J ICAgICAgIChzYXZlLWV4Y3Vyc2lvbgotCQkgKHdoZW4gKGVxIChjaGFyLWFmdGVyKSA/XDspCi0J CSAgIChjLWZvcndhcmQtb3Zlci10b2tlbi1hbmQtd3MgdCkpCi0JCSAoc2V0cSBidWZwb3MgKHBv aW50KSkKLQkJICh3aGVuIChsb29raW5nLWF0IGMtb3B0LTw+LXNleHAta2V5KQotCQkgICAoYy1m b3J3YXJkLW92ZXItdG9rZW4tYW5kLXdzKQotCQkgICAod2hlbiAoYW5kIChlcSAoY2hhci1hZnRl cikgPzwpCi0JCQkgICAgICAoYy1nZXQtY2hhci1wcm9wZXJ0eSAocG9pbnQpICdzeW50YXgtdGFi bGUpKQotCQkgICAgIChjLWdvLWxpc3QtZm9yd2FyZCBuaWwgYWZ0ZXItdHlwZS1pZC1wb3MpCi0J CSAgICAgKGMtZm9yd2FyZC1zeW50YWN0aWMtd3MpKSkKLQkJIChpZiAoYW5kIChub3QgKGVxIChw b2ludCkgYWZ0ZXItdHlwZS1pZC1wb3MpKQotCQkJICAob3IgKG5vdCAobG9va2luZy1hdCBjLWNs YXNzLWtleSkpCi0JCQkgICAgICAoc2F2ZS1leGN1cnNpb24KLQkJCQkoZ290by1jaGFyIChtYXRj aC1lbmQgMSkpCi0JCQkJKGMtZm9yd2FyZC1zeW50YWN0aWMtd3MpCi0JCQkJKG5vdCAoZXEgKHBv aW50KSBhZnRlci10eXBlLWlkLXBvcykpKSkpCi0JCSAgICAgKHByb2duCi0JCSAgICAgICAoc2V0 cSByZXMKLQkJCSAgICAgKGMtZm9yd2FyZC1kZWNsLW9yLWNhc3QtMSAoYy1wb2ludCAnYm9zd3Mp Ci0JCQkJCQkgICAgICAgbmlsIG5pbCkpCi0JCSAgICAgICAoYW5kIChjb25zcCByZXMpCi0JCQkg ICAgKGNvbmQKLQkJCSAgICAgKChlcSAoY2FyIHJlcykgYWZ0ZXItdHlwZS1pZC1wb3MpKQotCQkJ ICAgICAoKD4gKGNhciByZXMpIGFmdGVyLXR5cGUtaWQtcG9zKSBuaWwpCi0JCQkgICAgICh0Ci0J CQkgICAgICAoY2F0Y2ggJ2ZpbmQtZGVjbAorCSAgICAgICAocHJvZ24KKwkJIChjLWJhY2t3YXJk LXN5bnRhY3RpYy13cykKKwkJIChlcSAoY2hhci1iZWZvcmUpID9cKCkpKQorCSAgOzsgU2luZ2xl IGlkZW50aWZpZXIgYmV0d2VlbiAnKCcgYW5kICd7Jy4gIFdlIGhhdmUgYSBicmFjZWxpc3QuCisJ ICAoY29ucyBhZnRlci10eXBlLWlkLXBvcyAnaW4tcGFyZW4pKQorCisJICh0CisJICAoZ290by1j aGFyIHBvcykKKwkgICh3aGVuIChlcSBicmFjZWFzc2lnbnAgJ2RvbnRrbm93KQorCSAgICAobGV0 KiAoKGNhY2hlLWVudHJ5IChhbmQgY29udGFpbmluZy1zZXhwCisJCQkJICAgICAoYy1sYW9taWIt Z2V0LWNhY2hlIGNvbnRhaW5pbmctc2V4cCBwb3MpKSkKKwkJICAgKGxpbTIgKG9yIChjYWRyIGNh Y2hlLWVudHJ5KSBsaW0pKQorCQkgICBzdWItYmFzc2lnbi1wKQorCSAgICAgIChpZiBjYWNoZS1l bnRyeQorCQkgIChjb25kCisJCSAgICgoPD0gKHBvaW50KSAoY2FkciBjYWNoZS1lbnRyeSkpCisJ CSAgICA7OyBXZSdyZSBpbnNpZGUgdGhlIHJlZ2lvbiB3ZSd2ZSBhbHJlYWR5IHNjYW5uZWQgb3Zl ciwgc28KKwkJICAgIDs7IGp1c3QgZ28gdG8gdGhhdCBzY2FuJ3MgZW5kIHBvc2l0aW9uLgorCQkg ICAgKGdvdG8tY2hhciAobnRoIDIgY2FjaGUtZW50cnkpKQorCQkgICAgKHNldHEgYnJhY2Vhc3Np Z25wIChudGggMyBjYWNoZS1lbnRyeSkpKQorCQkgICAoKD4gKHBvaW50KSAoY2FkciBjYWNoZS1l bnRyeSkpCisJCSAgICA7OyBXZSdyZSBiZXlvbmQgdGhlIHByZXZpb3VzIHNjYW4gcmVnaW9uLCBz byBqdXN0IHNjYW4gYXMKKwkJICAgIDs7IGZhciBhcyB0aGUgZW5kIG9mIHRoYXQgcmVnaW9uLgor CQkgICAgKHNldHEgc3ViLWJhc3NpZ24tcCAoYy1sYW9taWItbG9vcCBsaW0yKSkKKwkJICAgIChp ZiAoPD0gKHBvaW50KSAoY2FkciBjYWNoZS1lbnRyeSkpCisJCQkocHJvZ24KKwkJCSAgKGMtbGFv bWliLXB1dC1jYWNoZSBjb250YWluaW5nLXNleHAKKwkJCQkJICAgICAgc3RhcnQgKG50aCAyIGNh Y2hlLWVudHJ5KQorCQkJCQkgICAgICAobnRoIDMgY2FjaGUtZW50cnkpIDs7IHN1Yi1iYXNzaWdu LXAKKwkJCQkJICAgICAgKQorCQkJICAoc2V0cSBicmFjZWFzc2lnbnAgKG50aCAzIGNhY2hlLWVu dHJ5KSkKKwkJCSAgKGdvdG8tY2hhciAobnRoIDIgY2FjaGUtZW50cnkpKSkKKwkJICAgICAgKGMt bGFvbWliLXB1dC1jYWNoZSBjb250YWluaW5nLXNleHAKKwkJCQkJICBzdGFydCAocG9pbnQpIHN1 Yi1iYXNzaWduLXApCisJCSAgICAgIChzZXRxIGJyYWNlYXNzaWducCBzdWItYmFzc2lnbi1wKSkp CisJCSAgICh0KSkKKworCQkoc2V0cSBicmFjZWFzc2lnbnAgKGMtbGFvbWliLWxvb3AgbGltKSkK KwkJKHdoZW4gbGltCisJCSAgKGMtbGFvbWliLXB1dC1jYWNoZSBsaW0gc3RhcnQgKHBvaW50KSBi cmFjZWFzc2lnbnApKSkpKQorCisJICAoY29uZAorCSAgIChicmFjZWFzc2lnbnAKKwkgICAgOzsg V2UndmUgaGl0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFnZ3JlZ2F0ZSBsaXN0LgorCSAgICAoc2V0 cSBwb3MyIChwb2ludCkpCisJICAgIChjb25zCisJICAgICAoaWYgKGVxIChjLWJlZ2lubmluZy1v Zi1zdGF0ZW1lbnQtMSBjb250YWluaW5nLXNleHApICdzYW1lKQorCQkgKHBvaW50KQorCSAgICAg ICBwb3MyKQorCSAgICAgKG9yIGluLXBhcmVuIGluZXhwci1icmFjZS1saXN0KSkpCisJICAgKChh bmQgYWZ0ZXItdHlwZS1pZC1wb3MKKwkJIChzYXZlLWV4Y3Vyc2lvbgorCQkgICAod2hlbiAoZXEg KGNoYXItYWZ0ZXIpID9cOykKKwkJICAgICAoYy1mb3J3YXJkLW92ZXItdG9rZW4tYW5kLXdzIHQp KQorCQkgICAoc2V0cSBidWZwb3MgKHBvaW50KSkKKwkJICAgKHdoZW4gKGxvb2tpbmctYXQgYy1v cHQtPD4tc2V4cC1rZXkpCisJCSAgICAgKGMtZm9yd2FyZC1vdmVyLXRva2VuLWFuZC13cykKKwkJ ICAgICAod2hlbiAoYW5kIChlcSAoY2hhci1hZnRlcikgPzwpCisJCQkJKGMtZ2V0LWNoYXItcHJv cGVydHkgKHBvaW50KSAnc3ludGF4LXRhYmxlKSkKKwkJICAgICAgIChjLWdvLWxpc3QtZm9yd2Fy ZCBuaWwgYWZ0ZXItdHlwZS1pZC1wb3MpCisJCSAgICAgICAoYy1mb3J3YXJkLXN5bnRhY3RpYy13 cykpKQorCQkgICAoaWYgKGFuZCAobm90IChlcSAocG9pbnQpIGFmdGVyLXR5cGUtaWQtcG9zKSkK KwkJCSAgICAob3IgKG5vdCAobG9va2luZy1hdCBjLWNsYXNzLWtleSkpCiAJCQkJKHNhdmUtZXhj dXJzaW9uCi0JCQkJICAoZ290by1jaGFyIChjYXIgcmVzKSkKLQkJCQkgIChjLWRvLWRlY2xhcmF0 b3JzCi0JCQkJICAgKHBvaW50LW1heCkgdCBuaWwgbmlsCi0JCQkJICAgKGxhbWJkYSAoaWQtc3Rh cnQgX2lkLWVuZCBfdG9rIF9ub3QtdG9wIF9mdW5jIF9pbml0KQotCQkJCSAgICAgKGNvbmQKLQkJ CQkgICAgICAoKD4gaWQtc3RhcnQgYWZ0ZXItdHlwZS1pZC1wb3MpCi0JCQkJICAgICAgICh0aHJv dyAnZmluZC1kZWNsIG5pbCkpCi0JCQkJICAgICAgKChlcSBpZC1zdGFydCBhZnRlci10eXBlLWlk LXBvcykKLQkJCQkgICAgICAgKHRocm93ICdmaW5kLWRlY2wgdCkpKSkpCi0JCQkJICBuaWwpKSkp KSkKLQkJICAgKHNhdmUtZXhjdXJzaW9uCi0JCSAgICAgKGdvdG8tY2hhciBzdGFydCkKLQkJICAg ICAobm90IChjLWxvb2tpbmctYXQtc3RhdGVtZW50LWJsb2NrKSkpKSkpCi0JICAoY29ucyBidWZw b3MgKG9yIGluLXBhcmVuIGluZXhwci1icmFjZS1saXN0KSkpCi0JICgob3IgKGVxIChjaGFyLWFm dGVyKSA/XDspCi0JICAgICAgOzsgQnJhY2UgbGlzdHMgY2FuJ3QgY29udGFpbiBhIHNlbWljb2xv biwgc28gd2UncmUgZG9uZS4KLQkgICAgICAoc2F2ZS1leGN1cnNpb24KLQkJKGMtYmFja3dhcmQt c3ludGFjdGljLXdzKQotCQkoZXEgKGNoYXItYmVmb3JlKSA/fSkpCi0JICAgICAgOzsgVGhleSBh bHNvIGNhbid0IGNvbnRhaW4gYSBiYXJlIH0sIHdoaWNoIGlzIHByb2JhYmx5IHRoZSBlbmQKLQkg ICAgICA7OyBvZiBhIGZ1bmN0aW9uLgotCSAgICAgICkKLQkgIG5pbCkKLQkgKChhbmQgKHNldHEg bWFjcm8tc3RhcnQgKHBvaW50KSkKLQkgICAgICAgKGMtZm9yd2FyZC10by1jcHAtZGVmaW5lLWJv ZHkpCi0JICAgICAgIChlcSAocG9pbnQpIHN0YXJ0KSkKLQkgIDs7IFdlJ3ZlIGEgbWFjcm8gd2hv c2UgZXhwYW5zaW9uIHN0YXJ0cyB3aXRoIHRoZSAneycuCi0JICA7OyBIZXVyaXN0aWNhbGx5LCBp ZiB3ZSBoYXZlIGEgJzsnIGluIGl0IHdlJ3ZlIG5vdCBnb3QgYQotCSAgOzsgYnJhY2UgbGlzdCwg b3RoZXJ3aXNlIHdlIGhhdmUuCi0JICAobGV0ICgobWFjcm8tZW5kIChwcm9nbiAoYy1lbmQtb2Yt bWFjcm8pIChwb2ludCkpKSkKLQkgICAgKGdvdG8tY2hhciBzdGFydCkKLQkgICAgKGZvcndhcmQt Y2hhcikKLQkgICAgKGlmIChhbmQgKGMtc3ludGFjdGljLXJlLXNlYXJjaC1mb3J3YXJkICJbOyxd IiBtYWNyby1lbmQgdCB0KQotCQkgICAgIChlcSAoY2hhci1iZWZvcmUpID9cOykpCi0JCW5pbAot CSAgICAgIChjb25zIG1hY3JvLXN0YXJ0IG5pbCkpKSkgOyAoMjAxNi0wOC0zMCk6IExhenkhIFdl IGhhdmUgbm8KKwkJCQkgIChnb3RvLWNoYXIgKG1hdGNoLWVuZCAxKSkKKwkJCQkgIChjLWZvcndh cmQtc3ludGFjdGljLXdzKQorCQkJCSAgKG5vdCAoZXEgKHBvaW50KSBhZnRlci10eXBlLWlkLXBv cykpKSkpCisJCSAgICAgICAocHJvZ24KKwkJCSAoc2V0cSByZXMKKwkJCSAgICAgICAoYy1mb3J3 YXJkLWRlY2wtb3ItY2FzdC0xIChjLXBvaW50ICdib3N3cykKKwkJCQkJCQkgbmlsIG5pbCkpCisJ CQkgKGFuZCAoY29uc3AgcmVzKQorCQkJICAgICAgKGNvbmQKKwkJCSAgICAgICAoKGVxIChjYXIg cmVzKSBhZnRlci10eXBlLWlkLXBvcykpCisJCQkgICAgICAgKCg+IChjYXIgcmVzKSBhZnRlci10 eXBlLWlkLXBvcykgbmlsKQorCQkJICAgICAgICh0CisJCQkJKGNhdGNoICdmaW5kLWRlY2wKKwkJ CQkgIChzYXZlLWV4Y3Vyc2lvbgorCQkJCSAgICAoZ290by1jaGFyIChjYXIgcmVzKSkKKwkJCQkg ICAgKGMtZG8tZGVjbGFyYXRvcnMKKwkJCQkgICAgIChwb2ludC1tYXgpIHQgbmlsIG5pbAorCQkJ CSAgICAgKGxhbWJkYSAoaWQtc3RhcnQgX2lkLWVuZCBfdG9rIF9ub3QtdG9wIF9mdW5jIF9pbml0 KQorCQkJCSAgICAgICAoY29uZAorCQkJCQkoKD4gaWQtc3RhcnQgYWZ0ZXItdHlwZS1pZC1wb3Mp CisJCQkJCSAodGhyb3cgJ2ZpbmQtZGVjbCBuaWwpKQorCQkJCQkoKGVxIGlkLXN0YXJ0IGFmdGVy LXR5cGUtaWQtcG9zKQorCQkJCQkgKHRocm93ICdmaW5kLWRlY2wgdCkpKSkpCisJCQkJICAgIG5p bCkpKSkpKQorCQkgICAgIChzYXZlLWV4Y3Vyc2lvbgorCQkgICAgICAgKGdvdG8tY2hhciBzdGFy dCkKKwkJICAgICAgIChub3QgKGMtbG9va2luZy1hdC1zdGF0ZW1lbnQtYmxvY2spKSkpKSkKKwkg ICAgKGNvbnMgYnVmcG9zIChvciBpbi1wYXJlbiBpbmV4cHItYnJhY2UtbGlzdCkpKQorCSAgICgo b3IgKGVxIChjaGFyLWFmdGVyKSA/XDspCisJCTs7IEJyYWNlIGxpc3RzIGNhbid0IGNvbnRhaW4g YSBzZW1pY29sb24sIHNvIHdlJ3JlIGRvbmUuCisJCShzYXZlLWV4Y3Vyc2lvbgorCQkgIChjLWJh Y2t3YXJkLXN5bnRhY3RpYy13cykKKwkJICAoZXEgKGNoYXItYmVmb3JlKSA/fSkpCisJCTs7IFRo ZXkgYWxzbyBjYW4ndCBjb250YWluIGEgYmFyZSB9LCB3aGljaCBpcyBwcm9iYWJseSB0aGUgZW5k CisJCTs7IG9mIGEgZnVuY3Rpb24uCisJCSkKKwkgICAgbmlsKQorCSAgICgoYW5kIChzZXRxIG1h Y3JvLXN0YXJ0IChwb2ludCkpCisJCSAoYy1mb3J3YXJkLXRvLWNwcC1kZWZpbmUtYm9keSkKKwkJ IChlcSAocG9pbnQpIHN0YXJ0KSkKKwkgICAgOzsgV2UndmUgYSBtYWNybyB3aG9zZSBleHBhbnNp b24gc3RhcnRzIHdpdGggdGhlICd7Jy4KKwkgICAgOzsgSGV1cmlzdGljYWxseSwgaWYgd2UgaGF2 ZSBhICc7JyBpbiBpdCB3ZSd2ZSBub3QgZ290IGEKKwkgICAgOzsgYnJhY2UgbGlzdCwgb3RoZXJ3 aXNlIHdlIGhhdmUuCisJICAgIChsZXQgKChtYWNyby1lbmQgKHByb2duIChjLWVuZC1vZi1tYWNy bykgKHBvaW50KSkpKQorCSAgICAgIChnb3RvLWNoYXIgc3RhcnQpCisJICAgICAgKGZvcndhcmQt Y2hhcikKKwkgICAgICAoaWYgKGFuZCAoYy1zeW50YWN0aWMtcmUtc2VhcmNoLWZvcndhcmQgIls7 LF0iIG1hY3JvLWVuZCB0IHQpCisJCSAgICAgICAoZXEgKGNoYXItYmVmb3JlKSA/XDspKQorCQkg IG5pbAorCQkoY29ucyBtYWNyby1zdGFydCBuaWwpKSkpIDsgKDIwMTYtMDgtMzApOiBMYXp5ISBX ZSBoYXZlIG5vCiAJCQkJCTsgbGFuZ3VhZ2VzIHdoZXJlCiAJCQkJCTsgYGMtb3B0LWluZXhwci1i cmFjZS1saXN0LWtleScgaXMKIAkJCQkJOyBub24tbmlsIGFuZCB3ZSBoYXZlIG1hY3Jvcy4KLQkg KHQgdCkpKSkJCQk7OyBUaGUgY2FsbGVyIGNhbiBnbyB1cCBvbmUgbGV2ZWwuCi0gICAgICApKSkK KwkgICAodCB0KSkpKQkJCTs7IFRoZSBjYWxsZXIgY2FuIGdvIHVwIG9uZSBsZXZlbC4KKwkpKSkp CiAKIChkZWZ1biBjLWluc2lkZS1icmFjZWxpc3QtcCAoY29udGFpbmluZy1zZXhwIHBhcmVuLXN0 YXRlIGFjY2VwdC1pbi1wYXJlbikKICAgOzsgcmV0dXJuIHRoZSBidWZmZXIgcG9zaXRpb24gb2Yg dGhlIGJlZ2lubmluZyBvZiB0aGUgYnJhY2UgbGlzdCBzdGF0ZW1lbnQKQEAgLTEzNjUyLDcgKzEz NjMzLDcgQEAKIAkJbmlsKSkKIAkgICAgICgocHJvZ24KIAkJKGdvdG8tY2hhciByZXEtcG9zKQot CQkoaWYgKGxvb2tpbmctYXQgYy1mdW4tbmFtZS1zdWJzdGl0dXRlLWtleSkKKwkJKGlmIChsb29r aW5nLWF0IGMtcmVxdWlyZXMtY2xhdXNlLWtleSkKIAkJICAgIChzZXRxIGZvdW5kLWNsYXVzZSAo Yy1mb3J3YXJkLWMrKy1yZXF1aXJlcy1jbGF1c2UgbmlsIHQpKQogCQkgIChhbmQgKGMtZm9yd2Fy ZC1jb25jZXB0LWZyYWdtZW50KQogCQkgICAgICAgKHNldHEgZm91bmQtY2xhdXNlIChwb2ludCkp KSkKQEAgLTEzODYzLDE4ICsxMzg0NCw4NCBAQAogCSAobG9va2luZy1hdCBjLXByZS1sYW1iZGEt dG9rZW5zLXJlKSkpCiAgICAobm90IChjLWluLWxpdGVyYWwpKSkpCiAKKyhkZWZ1biBjLWxvb2tp bmctYXQtYysrLWxhbWJkYS1leHByZXNzaW9uICgmb3B0aW9uYWwgbGltKQorICA7OyBJZiBwb2lu dCBpcyBhdCB0aGUgWyBvcGVuaW5nIGEgQysrIGxhbWJkYSBleHByZXNzaW9ucydzIGNhcHR1cmUg bGlzdCwKKyAgOzsgYW5kIHRoZSBsYW1iZGEgZXhwcmVzc2lvbiBpcyBjb21wbGV0ZSwgcmV0dXJu IHRoZSBwb3NpdGlvbiBvZiB0aGUgeyB3aGljaAorICA7OyBvcGVucyB0aGUgYm9keSBmb3JtLCBv dGhlcndpc2UgcmV0dXJuIG5pbC4gIExJTSBpcyB0aGUgbGltaXQgZm9yIGZvcndhcmQKKyAgOzsg c2VhcmNoaW5nIGZvciB0aGUgey4KKyAgKGxldCAoKGhlcmUgKHBvaW50KSkKKwkobGltLW9yLW1h eCAob3IgbGltIChwb2ludC1tYXgpKSkKKwlnb3QtcGFyYW1zKQorICAgICh3aGVuIChhbmQgKGMt bG9va2luZy1hdC1jKystbGFtYmRhLWNhcHR1cmUtbGlzdCkKKwkgICAgICAgKGMtZ28tbGlzdC1m b3J3YXJkIG5pbCBsaW0pKQorICAgICAgKGMtZm9yd2FyZC1zeW50YWN0aWMtd3MgbGltKQorICAg ICAgKHdoZW4gKGMtZm9yd2FyZC08Pi1hcmdsaXN0IHQpCisJKGMtZm9yd2FyZC1zeW50YWN0aWMt d3MgbGltKQorCSh3aGVuIChsb29raW5nLWF0IGMtcmVxdWlyZXMtY2xhdXNlLWtleSkKKwkgIChj LWZvcndhcmQtYysrLXJlcXVpcmVzLWNsYXVzZSBsaW0gbmlsKSkpCisgICAgICAod2hlbiAobG9v a2luZy1hdCAiXFwoYWxpZ25hc1xcKVxcKFteYS16QS1aMC05XyRdXFx8JFxcKSIpCisJKGMtZm9y d2FyZC1rZXl3b3JkLWNsYXVzZSAxKSkKKyAgICAgICh3aGVuIChhbmQgKGVxIChjaGFyLWFmdGVy KSA/XCgpCisJCSAoYy1nby1saXN0LWZvcndhcmQgbmlsIGxpbSkpCisJKHNldHEgZ290LXBhcmFt cyB0KQorCShjLWZvcndhcmQtc3ludGFjdGljLXdzIGxpbSkpCisgICAgICAod2hpbGUgKGFuZCBj LWxhbWJkYS1zcGVjLWtleSAobG9va2luZy1hdCBjLWxhbWJkYS1zcGVjLWtleSkpCisJKGdvdG8t Y2hhciAobWF0Y2gtZW5kIDEpKQorCShjLWZvcndhcmQtc3ludGFjdGljLXdzIGxpbSkpCisgICAg ICAobGV0IChhZnRlci1leGNlcHQtcG9zKQorCSh3aGlsZQorCSAgICAoYW5kICg8PSAocG9pbnQp IGxpbS1vci1tYXgpCisJCSAoY29uZAorCQkgICgoc2F2ZS1leGN1cnNpb24KKwkJICAgICAoYW5k IChsb29raW5nLWF0ICJ0aHJvd1xcKFteYS16QS1aMC05X11cXHwkXFwpIikKKwkJCSAgKHByb2du IChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyAxKSkKKwkJCQkgKGMtZm9yd2FyZC1zeW50YWN0 aWMtd3MgbGltKQorCQkJCSAoZXEgKGNoYXItYWZ0ZXIpID9cKCkpCisJCQkgIChjLWdvLWxpc3Qt Zm9yd2FyZCBuaWwgbGltKQorCQkJICAocHJvZ24gKGMtZm9yd2FyZC1zeW50YWN0aWMtd3MgbGlt KQorCQkJCSAoc2V0cSBhZnRlci1leGNlcHQtcG9zIChwb2ludCkpKSkpCisJCSAgIChnb3RvLWNo YXIgYWZ0ZXItZXhjZXB0LXBvcykKKwkJICAgKGMtZm9yd2FyZC1zeW50YWN0aWMtd3MgbGltKQor CQkgICB0KQorCQkgICgobG9va2luZy1hdCBjLXBhcmVuLW5vbnR5cGUta2V5KSA7ICJub2V4Y2Vw dCIgb3IgImFsaWduYXMiCisJCSAgIChjLWZvcndhcmQta2V5d29yZC1jbGF1c2UgMSkpKSkpKQor ICAgICAgKGFuZCAoPD0gKHBvaW50KSBsaW0tb3ItbWF4KQorCSAgIChsb29raW5nLWF0IGMtaGFz a2VsbC1vcC1yZSkKKwkgICAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpCisJICAgKHByb2duIChj LWZvcndhcmQtc3ludGFjdGljLXdzIGxpbSkKKwkJICAoYy1mb3J3YXJkLXR5cGUgdCkpKQk7IHQg aXMgQlJBQ0UtQkxPQ0stVE9PLgorICAgICAgKGFuZCBnb3QtcGFyYW1zCisJICAgKDw9IChwb2lu dCkgbGltLW9yLW1heCkKKwkgICAobG9va2luZy1hdCBjLXJlcXVpcmVzLWNsYXVzZS1rZXkpCisJ ICAgKGMtZm9yd2FyZC1jKystcmVxdWlyZXMtY2xhdXNlIGxpbSBuaWwpKQorICAgICAgKHByb2cx IChhbmQgKDw9IChwb2ludCkgbGltLW9yLW1heCkKKwkJICAoZXEgKGNoYXItYWZ0ZXIpID97KQor CQkgIChwb2ludCkpCisJKGdvdG8tY2hhciBoZXJlKSkpKSkKKworKGRlZnVuIGMtYmFja3dhcmQt b3Zlci1sYW1iZGEtZXhwcmVzc2lvbiAoJm9wdGlvbmFsIGxpbSkKKyAgOzsgUG9pbnQgaXMgYXQg YSB7LiAgTW92ZSBiYWNrIG92ZXIgdGhlIGxhbWJkYSBleHByZXNzaW9uIHRoaXMgaXMgYSBwYXJ0 IG9mLAorICA7OyBzdG9wcGluZyBhdCB0aGUgWyBvZiB0aGUgY2FwdHVyZSBsaXN0LCBpZiB0aGlz IGlzIHRoZSBjYXNlLCByZXR1cm5pbmcKKyAgOzsgdGhlIHBvc2l0aW9uIG9mIHRoYXQgb3Blbmlu ZyBicmFja2V0LiAgSWYgd2UncmUgbm90IGF0IHN1Y2ggYSBsaXN0LCBsZWF2ZQorICA7OyBwb2lu dCB1bmNoYW5nZWQgYW5kIHJldHVybiBuaWwuCisgIChsZXQgKChoZXJlIChwb2ludCkpKQorICAg IChjLXN5bnRhY3RpYy1za2lwLWJhY2t3YXJkICJeO31dIiBsaW0gdCkKKyAgICAoaWYgKGFuZCAo ZXEgKGNoYXItYmVmb3JlKSA/XF0pCisJICAgICAoYy1nby1saXN0LWJhY2t3YXJkIG5pbCBsaW0p CisJICAgICAoZXEgKGMtbG9va2luZy1hdC1jKystbGFtYmRhLWV4cHJlc3Npb24gKDErIGhlcmUp KQorCQkgaGVyZSkpCisJKHBvaW50KQorICAgICAgKGdvdG8tY2hhciBoZXJlKQorICAgICAgbmls KSkpCisKIChkZWZ1biBjLWMrKy12c2VtaS1wICgmb3B0aW9uYWwgcG9zKQogICA7OyBDKysgT25s eSAtIElzIHRoZXJlIGEgInZpcnR1YWwgc2VtaWNvbG9uIiBhdCBQT1Mgb3IgcG9pbnQ/CiAgIDs7 IChTZWUgY2MtZGVmcy5lbCBmb3IgZnVsbCBkZXRhaWxzIG9mICJ2aXJ0dWFsIHNlbWljb2xvbnMi LikKICAgOzsKICAgOzsgVGhpcyBpcyB0cnVlIHdoZW4gcG9pbnQgaXMgYXQgdGhlIGxhc3Qgbm9u IHN5bnRhY3RpYyBXUyBwb3NpdGlvbiBvbiB0aGUKLSAgOzsgbGluZSwgYW5kIGVpdGhlciB0aGVy ZSBpcyBhICJtYWNybyB3aXRoIHNlbWljb2xvbiIganVzdCBiZWZvcmUgaXQgKHNlZQotICA7OyBg Yy1hdC1tYWNyby12c2VtaS1wJykgb3IgdGhlcmUgaXMgYSAicmVxdWlyZXMiIGNsYXVzZSB3aGlj aCBlbmRzIHRoZXJlLgotICAobGV0IChyZXMpCi0gICAgKGNvbmQKLSAgICAgKChzZXRxIHJlcyAo Yy1pbi1yZXF1aXJlcy1vci1hdC1lbmQtb2YtY2xhdXNlIHBvcykpCi0gICAgICAoYW5kIHJlcyAo ZXEgKGNkciByZXMpIHQpKSkKLSAgICAgKChjLWF0LW1hY3JvLXZzZW1pLXApKSkpKQorICA7OyBs aW5lLCBhbmQgdGhlcmUgaXMgYSAibWFjcm8gd2l0aCBzZW1pY29sb24iIGp1c3QgYmVmb3JlIGl0 IChzZWUKKyAgOzsgYGMtYXQtbWFjcm8tdnNlbWktcCcpLgorICAoYy1hdC1tYWNyby12c2VtaS1w IHBvcykpCiAKIChkZWZ1biBjLWF0LW1hY3JvLXZzZW1pLXAgKCZvcHRpb25hbCBwb3MpCiAgIDs7 IElzIHRoZXJlIGEgInZpcnR1YWwgc2VtaWNvbG9uIiBhdCBQT1Mgb3IgcG9pbnQ/CkBAIC0xNDg1 Nyw3ICsxNDkwNCw2IEBACiAJCSAgIChwcm9nbiAoYy1iYWNrd2FyZC1zeW50YWN0aWMtd3MgbGlt KQogCQkJICAoemVyb3AgKGMtYmFja3dhcmQtdG9rZW4tMiBuaWwgbmlsIGxpbSkpKQogCQkgICAo bG9va2luZy1hdCBjLWZ1bi1uYW1lLXN1YnN0aXR1dGUta2V5KQotCQkgICAobm90IChlcSAoY2hh ci1hZnRlciAobWF0Y2gtZW5kIDApKSA/XykpCiAJCSAgIChzZXRxIHBsYWNlaG9sZGVyIChwb2lu dCkpKSkKIAkgICAgKGdvdG8tY2hhciBwbGFjZWhvbGRlcikKIAkgICAgKGJhY2stdG8taW5kZW50 YXRpb24pCkBAIC0xNTI4Myw2ICsxNTMyOSwxMSBAQAogCiAJIDs7IE5PVEU6IFRoZSBwb2ludCBp cyBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyB0b2tlbiBoZXJlLgogCisJIDs7IENBU0UgNVU6 IFdlIGFyZSBqdXN0IGFmdGVyIGEgcmVxdWlyZXMgY2xhdXNlLgorCSAoKGFuZCAoc2V0cSBwbGFj ZWhvbGRlciAoYy1pbi1yZXF1aXJlcy1vci1hdC1lbmQtb2YtY2xhdXNlKSkKKwkgICAgICAgKGVx IChjZHItc2FmZSBwbGFjZWhvbGRlcikgdCkpCisJICAoYy1hZGQtc3ludGF4ICd0b3Btb3N0LWlu dHJvLWNvbnQgKGNhciBwbGFjZWhvbGRlcikpKQorCiAJIDs7IENBU0UgNUo6IHdlIGFyZSBhdCB0 aGUgdG9wbW9zdCBsZXZlbCwgbWFrZQogCSA7OyBzdXJlIHdlIHNraXAgYmFjayBwYXN0IGFueSBh Y2Nlc3Mgc3BlY2lmaWVycwogCSAoKGFuZApAQCAtMTU4MTgsOCArMTU4NjksNyBAQAogCQkgICAg IChjLWdvLWxpc3QtYmFja3dhcmQgbmlsIGxpbSkpCiAJCSAocHJvZ24gKGMtYmFja3dhcmQtc3lu dGFjdGljLXdzIGxpbSkKIAkJCSh6ZXJvcCAoYy1iYWNrd2FyZC10b2tlbi0yIG5pbCBuaWwgbGlt KSkpCi0JCSAobG9va2luZy1hdCBjLWZ1bi1uYW1lLXN1YnN0aXR1dGUta2V5KQotCQkgKG5vdCAo ZXEgKGNoYXItYWZ0ZXIgKG1hdGNoLWVuZCAwKSkgP18pKSkpCisJCSAobG9va2luZy1hdCBjLWZ1 bi1uYW1lLXN1YnN0aXR1dGUta2V5KSkpCiAJICAoZ290by1jaGFyIGNvbnRhaW5pbmctc2V4cCkK IAkgIChiYWNrLXRvLWluZGVudGF0aW9uKQogCSAgKGMtYWRkLXN0bXQtc3ludGF4ICdkZWZ1bi1j bG9zZSBuaWwgdCBsaW0gcGFyZW4tc3RhdGUpKQpAQCAtMTU5ODMsOCArMTYwMzMsNyBAQAogCQkg ICAgIChjLWdvLWxpc3QtYmFja3dhcmQgbmlsIGxpbSkpCiAJCSAocHJvZ24gKGMtYmFja3dhcmQt c3ludGFjdGljLXdzIGxpbSkKIAkJCSh6ZXJvcCAoYy1iYWNrd2FyZC10b2tlbi0yIG5pbCBuaWwg bGltKSkpCi0JCSAobG9va2luZy1hdCBjLWZ1bi1uYW1lLXN1YnN0aXR1dGUta2V5KQotCQkgKG5v dCAoZXEgKGNoYXItYWZ0ZXIgKG1hdGNoLWVuZCAwKSkgP18pKSkpCisJCSAobG9va2luZy1hdCBj LWZ1bi1uYW1lLXN1YnN0aXR1dGUta2V5KSkpCiAJICAoZ290by1jaGFyIGNvbnRhaW5pbmctc2V4 cCkKIAkgIChiYWNrLXRvLWluZGVudGF0aW9uKQogCSAgKGMtYWRkLXN5bnRheCAnZGVmdW4tYmxv Y2staW50cm8gKHBvaW50KSkpCmRpZmYgLXIgNDhhZDY2MWEyZDdkIGNjLWZvbnRzLmVsCi0tLSBh L2NjLWZvbnRzLmVsCU1vbiBKdWwgMjIgMTI6MDk6MzQgMjAyNCArMDAwMAorKysgYi9jYy1mb250 cy5lbAlGcmkgU2VwIDIwIDE0OjE1OjE3IDIwMjQgKzAwMDAKQEAgLTEzODksOCArMTM4OSw3IEBA CiAJCQkJICAobWVtcSB0eXBlICcoYy1kZWNsLWFyZy1zdGFydAogCQkJCQkgICAgICAgYy1kZWNs LXR5cGUtc3RhcnQpKSkpKSkpKQogCQkgICAgICAoKGFuZCAoemVyb3AgKGMtYmFja3dhcmQtdG9r ZW4tMikpCi0JCQkgICAgKGxvb2tpbmctYXQgYy1mdW4tbmFtZS1zdWJzdGl0dXRlLWtleSkKLQkJ CSAgICAobm90IChlcSAoY2hhci1hZnRlciAobWF0Y2gtZW5kIDApKSA/XykpKSkpKSkpKSkKKwkJ CSAgICAobG9va2luZy1hdCBjLWZ1bi1uYW1lLXN1YnN0aXR1dGUta2V5KSkpKSkpKSkpCiAgICAg ICA7OyBDYWNoZSB0aGUgcmVzdWx0IG9mIHRoaXMgdGVzdCBmb3IgbmV4dCB0aW1lIGFyb3VuZC4K ICAgICAgIChjLXB1dC1jaGFyLXByb3BlcnR5ICgxLSBtYXRjaC1wb3MpICdjLXR5cGUgJ2MtZGVj bC1hcmctc3RhcnQpCiAgICAgICAoY29ucyAnZGVjbCBuaWwpKQpkaWZmIC1yIDQ4YWQ2NjFhMmQ3 ZCBjYy1sYW5ncy5lbAotLS0gYS9jYy1sYW5ncy5lbAlNb24gSnVsIDIyIDEyOjA5OjM0IDIwMjQg KzAwMDAKKysrIGIvY2MtbGFuZ3MuZWwJRnJpIFNlcCAyMCAxNDoxNToxNyAyMDI0ICswMDAwCkBA IC0yNjM5LDYgKzI2MzksMTkgQEAKICAgdCAoYy1tYWtlLWtleXdvcmRzLXJlIHQgKGMtbGFuZy1j b25zdCBjLWVxdWFscy10eXBlLWNsYXVzZS1rd2RzKSkpCiAoYy1sYW5nLWRlZnZhciBjLWVxdWFs cy10eXBlLWNsYXVzZS1rZXkgKGMtbGFuZy1jb25zdCBjLWVxdWFscy10eXBlLWNsYXVzZS1rZXkp KQogCisoYy1sYW5nLWRlZmNvbnN0IGMtbGFtYmRhLXNwZWMta3dkcworICAiS2V5d29yZHMgd2hp Y2ggYXJlIHNwZWNpZmllcnMgb2YgY2VydGFpbiBlbGVtZW50cyBvZiBhIEMrKyBsYW1iZGEgZnVu Y3Rpb24uCitUaGlzIGlzIG9ubHkgdXNlZCBpbiBDKysgTW9kZS4iCisgIHQgbmlsCisgIGMrKyAn KCJtdXRhYmxlIiAiY29uc3RleHByIiAiY29uc3RldmFsIiAic3RhdGljIikpCisKKyhjLWxhbmct ZGVmY29uc3QgYy1sYW1iZGEtc3BlYy1rZXkKKyAgOzsgQSByZWd1bGFyIGV4cHJlc3Npb24gd2hp Y2ggbWF0Y2hlcyBhIG1lbWJlciBvZiBgYy1sYW1iZGEtc3BlYy1rd2RzJywKKyAgOzsgb3Igbmls LgorICB0IChpZiAoYy1sYW5nLWNvbnN0IGMtbGFtYmRhLXNwZWMta3dkcykKKwkoYy1tYWtlLWtl eXdvcmRzLXJlIHQgKGMtbGFuZy1jb25zdCBjLWxhbWJkYS1zcGVjLWt3ZHMpKSkpCisoYy1sYW5n LWRlZnZhciBjLWxhbWJkYS1zcGVjLWtleSAoYy1sYW5nLWNvbnN0IGMtbGFtYmRhLXNwZWMta2V5 KSkKKwogKGMtbGFuZy1kZWZjb25zdCBjLWVxdWFscy1ub250eXBlLWRlY2wta3dkcwogICAiS2V5 d29yZHMgd2hpY2ggYXJlIGZvbGxvd2VkIGJ5IGFuIGlkZW50aWZpZXIgdGhlbiBhbiBcIj1cIgog c2lnbiwgd2hpY2ggZGVjbGFyZXMgdGhlIGlkZW50aWZpZXIgdG8gYmUgc29tZXRoaW5nIG90aGVy IHRoYW4gYQpAQCAtMjY1NywyMCArMjY3MCwzMyBAQAogKGMtbGFuZy1kZWZjb25zdCBjLWZ1bi1u YW1lLXN1YnN0aXR1dGUta3dkcwogICAiS2V5d29yZHMgd2hpY2ggdGFrZSB0aGUgcGxhY2Ugb2Yg dHlwZStkZWNsYXJhdG9yIGF0IHRoZSBiZWdpbm5pbmcKIG9mIGEgZnVuY3Rpb24tbGlrZSBzdHJ1 Y3R1cmUsIHN1Y2ggYXMgYSBDKysyMCBcInJlcXVpcmVzXCIKLWNsYXVzZS4gIEFuIGFyZ2xpc3Qg bWF5IG9yIG1heSBub3QgZm9sbG93IHN1Y2ggYSBrZXl3b3JkLiIKK2V4cHJlc3Npb24uICBBbiBh cmdsaXN0IG1heSBvciBtYXkgbm90IGZvbGxvdyBzdWNoIGEga2V5d29yZC4KK05vdCB0byBiZSBj b25mdXNlZCB3aXRoIGBjLXJlcXVpcmVzLWNsYXVzZS1rd2RzJy4iCiAgIHQgbmlsCiAgIGMrKyAn KCJyZXF1aXJlcyIpKQogCiAoYy1sYW5nLWRlZmNvbnN0IGMtZnVuLW5hbWUtc3Vic3RpdHV0ZS1r ZXkKICAgOzsgQW4gdW5hZG9ybmVkIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aGljaCBtYXRjaGVzIGFu eSBtZW1iZXIgb2YKICAgOzsgYGMtZnVuLW5hbWUtc3Vic3RpdHV0ZS1rd2RzJy4KLSAgdCAoYy1t YWtlLWtleXdvcmRzLXJlICdhcHBlbmRhYmxlIChjLWxhbmctY29uc3QgYy1mdW4tbmFtZS1zdWJz dGl0dXRlLWt3ZHMpKSkKKyAgdCAoYy1tYWtlLWtleXdvcmRzLXJlIHQgKGMtbGFuZy1jb25zdCBj LWZ1bi1uYW1lLXN1YnN0aXR1dGUta3dkcykpKQogOzsgV2UgdXNlICdhcHBlbmRhYmxlLCBzbyB0 aGF0IHdlIGdldCAiXFw+IiBvbiB0aGUgcmVnZXhwLCBidXQgd2l0aG91dCBhIGZ1cnRoZXIKIDs7 IGNoYXJhY3Rlciwgd2hpY2ggd291bGQgbWVzcyB1cCBiYWNrd2FyZCByZWdleHAgc2VhcmNoIGZy b20ganVzdCBhZnRlciB0aGUKIDs7IGtleXdvcmQuICBJZiBvbmx5IFhFbWFjcyBoYWQgXFxfPi4g IDstKAogKGMtbGFuZy1kZWZ2YXIgYy1mdW4tbmFtZS1zdWJzdGl0dXRlLWtleQogCSAgICAgICAo Yy1sYW5nLWNvbnN0IGMtZnVuLW5hbWUtc3Vic3RpdHV0ZS1rZXkpKQogCisoYy1sYW5nLWRlZmNv bnN0IGMtcmVxdWlyZXMtY2xhdXNlLWt3ZHMKKyAgIktleXdvcmRzIHdoaWNoIGludHJvZHVjZSBh IEMrKyByZXF1aXJlcyBjbGF1c2UsIG9yIHNvbWV0aGluZyBhbmFsb2dvdXMuCitUaGlzIHNob3Vs ZCBub3QgYmUgY29uZnVzZWQgd2l0aCBgYy1mdW4tbmFtZS1zdWJzdGl0dXRlLWt3ZHMnLiIKKyAg dCBuaWwKKyAgYysrICcoInJlcXVpcmVzIikpCisKKyhjLWxhbmctZGVmY29uc3QgYy1yZXF1aXJl cy1jbGF1c2Uta2V5CisgIDs7IEEgcmVnZXhwIG1hdGNoaW5nIGFueSBtZW1iZXIgb2YgYGMtcmVx dWlyZXMtY2xhdXNlLWt3ZHMnLgorICB0IChjLW1ha2Uta2V5d29yZHMtcmUgdCAoYy1sYW5nLWNv bnN0IGMtcmVxdWlyZXMtY2xhdXNlLWt3ZHMpKSkKKzs7IFNlZSBgYy1mdW4tbmFtZS1zdWJzdGl0 dXRlLWtleScgZm9yIHRoZSBqdXN0aWZpY2F0aW9uIG9mIGFwcGVuZGFibGUuCisoYy1sYW5nLWRl ZnZhciBjLXJlcXVpcmVzLWNsYXVzZS1rZXkgKGMtbGFuZy1jb25zdCBjLXJlcXVpcmVzLWNsYXVz ZS1rZXkpKQorCiAoYy1sYW5nLWRlZmNvbnN0IGMtbW9kaWZpZXIta3dkcwogICAiS2V5d29yZHMg dGhhdCBjYW4gcHJlZml4IG5vcm1hbCBkZWNsYXJhdGlvbnMgb2YgaWRlbnRpZmllcnMKIFwoYW5k IHR5cGljYWxseSBhY3QgYXMgZmxhZ3MpLiAgVGhpbmdzIGxpa2UgYXJndW1lbnQgZGVjbGFyYXRp b25zCgoKCj4gU2VlbXMgdG8gYmUgd29ya2luZyBxdWl0ZSB3ZWxsIGluIHNvbWUgY29udHJpdmVk IHRlc3RzIGFuZCBhIGZldwo+IGZyYWdtZW50cyBvZiByZWFsaXN0aWMgbG9va2luZyBjb2RlLgoK PiBUaGFuayB5b3UhCgo+IEhhdmUgYSBsb3ZlbHkgZXZlbmluZy4KPiAtLSAKPiBBcnNlbiBBcnNl bm92acSHCgotLSAKQWxhbiBNYWNrZW56aWUgKE51cmVtYmVyZywgR2VybWFueSkuCgoKCg==