bGliYXBhY2hlLW1vZC1kdGNsICgwLjExLjUtMikgdW5zdGFibGU7IHVyZ2VuY3k9bG93CgogICogRml4ZWQgcG9zdGluc3QgYW5kIHBvc3RybSwgdGhhbmtzIHRvIErhbm9zIEhvbOFueWkgPGNzYW5pQGxtZS5saW51eC5odT4uCgogLS0gRGF2aWQgTi4gV2VsdG9uIDxkYXZpZHdAZGViaWFuLm9yZz4gIE1vbiwgMTkgTm92IDIwMDEgMTI6NDI6MDYgKzAxMDAKCmxpYmFwYWNoZS1tb2QtZHRjbCAoMC4xMS41LTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdwoKICAqIENoZWNrIHJldHVybiB2YWx1ZSBmb3IgQXBhY2hlUmVxdWVzdF9fX3BhcnNlLgoKIC0tIERhdmlkIE4uIFdlbHRvbiA8ZGF2aWR3QGRlYmlhbi5vcmc+ICBTYXQsICAzIE5vdiAyMDAxIDE3OjM4OjA4ICswMTAwCgpsaWJhcGFjaGUtbW9kLWR0Y2wgKDAuMTEuNC0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKCiAgKiBGaXhlZCBidWcgaW4gUGFyc2UgY29tbWFuZC4KICAKICAqIEFkZGVkIERlYmlhbiBTU0wgY29uZmlnIHN0dWZmIGZyb20gSuFub3MgSG9s4W55aSAoY2xvc2VzOiAjMTE1MzMzKQoKIC0tIERhdmlkIE4uIFdlbHRvbiA8ZGF2aWR3QGRlYmlhbi5vcmc+ICBNb24sIDE1IE9jdCAyMDAxIDIwOjQzOjQwICswMjAwCgpsaWJhcGFjaGUtbW9kLWR0Y2wgKDAuMTEuMy0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKCiAgKiBJMThuIHVwZGF0ZXMuCgogICogRml4ZWQgYnVpbGQgc2NyaXB0cy4gKGNsb3NlczogIzExMTQ4OCkKCiAtLSBEYXZpZCBOLiBXZWx0b24gPGRhdmlkd0BkZWJpYW4ub3JnPiAgVHVlLCAgOSBPY3QgMjAwMSAxNzoyMjozNyArMDIwMAoKbGliYXBhY2hlLW1vZC1kdGNsICgwLjExLjItMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CgogICogTWlub3IgdXBkYXRlcy4KICAqIEZpeGVzIGJ1aWxkIHZhcmlhYmxlczogKGNsb3NlczogIzEwMjIwMCkKCiAtLSBEYXZpZCBOLiBXZWx0b24gPGRhdmlkd0BkZWJpYW4ub3JnPiAgVGh1LCAzMCBBdWcgMjAwMSAxMTowODoxNyArMDIwMAoKbGliYXBhY2hlLW1vZC1kdGNsICgwLjExLjEtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CiAgCiAgKiBGaXhlZCBWQVJTIHZhcmlhYmxlLCBkb2N1bWVudGF0aW9uIHVwZGF0ZXMuICAKIAogICogRml4ZWQgYnVpbGQgdmFyaWFibGVzOiAoY2xvc2VzOiAjMTAyMjA4KQogIAogLS0KCi0tIERhdmlkIE4uIFdlbHRvbiA8ZGF2aWR3QGRlYmlhbi5vcmc+ICBGcmksIDI3IEp1bCAyMDAxIDEzOjUyOjEwICswMjAwCgpsaWJhcGFjaGUtbW9kLWR0Y2wgKDAuMTEuMC0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKCiAgKiBOZXcgdmFyaWFibGUgY29tbWFuZCAndmFyJy4KCiAtLSBEYXZpZCBOLiBXZWx0b24gPGRhdmlkd0BkZWJpYW4ub3JnPiAgU2F0LCAgMiBKdW4gMjAwMSAxOToxODozMCArMDIwMAoKbGliYXBhY2hlLW1vZC1kdGNsICgwLjEwLjEtMCkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CgogICogRml4ZWQgZmlsZSB1cGxvYWQgYnVnLgogIAogICogQWRkZWQgRXJyb3JTY3JpcHQgZGlyZWN0aXZlLgogIAogICogVXBkYXRlIGRvY3MuCgogLS0gRGF2aWQgTi4gV2VsdG9uIDxkYXZpZHdAZGViaWFuLm9yZz4gIFR1ZSwgIDEgTWF5IDIwMDEgMTg6MTc6MDggKzAyMDAKCmxpYmFwYWNoZS1tb2QtZHRjbCAoMC45LjMtMykgdW5zdGFibGU7IHVyZ2VuY3k9bG93CgogICogVXBncmFkZWQgYXByZXEqIHN0dWZmIHRvIGRlYWwgd2l0aCBmaWxlIHVwbG9hZHMgZGlyZWN0bHkgdG8gYXBhY2hlCiAgICB2YXJpYWJsZS4KICAKICAqIFVQTE9BRCB2YXJpYWJsZXMgY2FuIG5vdyBiZSBsaXN0cy4KICAKICAqIFN3aXRjaGVkIHN5bnRheCB0byA8PyA/Pi4KCiAtLSBEYXZpZCBOLiBXZWx0b24gPGRhdmlkd0BkZWJpYW4ub3JnPiAgVHVlLCAyMCBNYXIgMjAwMSAyMDoxNzoyOSArMDEwMAoKbGliYXBhY2hlLW1vZC1kdGNsICgwLjkuMy0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKCiAgKiBBZGRlZCBidWlsZCBkZXBlbmRzLgogIAogICogQ2xvc2VzICM4NTc4Ny4KICAKICAqIENsb3NlcyAjODcyNTEuCgogLS0gRGF2aWQgTi4gV2VsdG9uIDxkYXZpZHdAZGViaWFuLm9yZz4gIE1vbiwgMjYgRmViIDIwMDEgMTQ6MDE6MzQgKzAxMDAKCmxpYmFwYWNoZS1tb2QtZHRjbCAoMC45LjMtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CgogICogTmV3IHZlcnNpb24uCiAgCiAgKiBDbGVhbmVkIHVwIERlYmlhbiBidWlsZCBzdHVmZiwgKEZpeGVzICM2NjQwMikuCgogLS0gRGF2aWQgTi4gV2VsdG9uIDxkYXZpZHdAcHJvc2EuaXQ+ICBGcmksIDE2IEZlYiAyMDAxIDE0OjExOjU1ICswMTAwCgpsaWJhcGFjaGUtbW9kLWR0Y2wgKDAuOS4wLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdwoKICAqIE5ldyB2ZXJzaW9uLgogIAogICogU3RhcnRlZCB1c2luZyBhcHJlcSBjb2RlIGZvciBmaWxlIHVwbG9hZHMgYW5kIG90aGVyIHN0dWZmLgogIAogICogRG9jdW1lbnRhdGlvbiBjaGFuZ2VzLgoKIC0tIERhdmlkIE4uIFdlbHRvbiA8ZGF2aWR3QGRlYmlhbi5vcmc+ICBNb24sIDEyIEZlYiAyMDAxIDE5OjUyOjU5ICswMTAwCgpsaWJhcGFjaGUtbW9kLWR0Y2wgKDAuOC4xMi0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKCiAgKiBWYXJpb3VzIGNvb2tpZSBmaXhlcy4KICAKICAqIE5ldyBidWlsZCBzeXN0ZW0uCiAgCiAtLSBEYXZpZCBOLiBXZWx0b24gPGRhdmlkd0Bwcm9zYS5pdD4gIFN1biwgIDUgTm92IDIwMDAgMjM6NDg6MTEgKzAxMDAKCmxpYmFwYWNoZS1tb2QtZHRjbCAoMC44LjgtMikgdW5zdGFibGU7IHVyZ2VuY3k9bG93CgogICogQ29kZSB0byBkZWFsIHdpdGggYmVmb3JlL2FmdGVyIHNjcmlwdHMuCiAgCiAgKiBSZXdyaXRlIG9mIEFwYWNoZSBkaXJlY3RpdmVzLgoKIC0tIERhdmlkIE4uIFdlbHRvbiA8ZGF2aWR3QGxpbnV4Y2FyZS5jb20+ICBUdWUsIDI2IFNlcCAyMDAwIDE3OjU5OjU3ICswMjAwCgpsaWJhcGFjaGUtbW9kLWR0Y2wgKDAuOC4xLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdwoKICAqIFB1dCBzb21lIGNvZGUgaW4gYXMgYSB3b3JrYXJvdW5kIGZvciBzeXN0ZW1zIHdpdGggVGNsIGNvbXBpbGVkIGFnYWluc3QKICAgIHRocmVhZHMuCgogLS0gRGF2aWQgTi4gV2VsdG9uIDxkYXZpZHdAZWZuLm9yZz4gIFRodSwgMjIgSnVuIDIwMDAgMDE6NDI6MjYgKzAyMDAKCmxpYmFwYWNoZS1tb2QtZHRjbCAoMC44LjAtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CgogICogQWRkZWQgaW5mb3JtYXRpb24gYWJvdXQgYnVpbGRpbmcgb24gSFBVWC4KICAqIEFkZGVkIHN1cHBvcnQgZm9yIC50Y2wgZmlsZXMuCiAgKiBGaXhlZCBidWcgaW4gSEdldFZhcnMgd2hpY2ggbWFuaWZlc3RzIGl0c2VsZiBvbmx5IHdoZW4gY29udGVudAogICAgbmVnb3RpYXRpb24gaXMgdXNlZC4KICAqIFVwZGF0ZWQgZG9jdW1lbnRhdGlvbi4KCiAtLSBEYXZpZCBOLiBXZWx0b24gPGRhdmlkd0BlZm4ub3JnPiAgVHVlLCAxNiBNYXkgMjAwMCAxOTowMDowNSArMDIwMAoKbGliYXBhY2hlLW1vZC1kdGNsICgwLjcuNS0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKCiAgKiBDaGFuZ2VkIGhwdXRzIHRvIHVzZSAiIiBpbnN0ZWFkIG9mIHt9LCBzbyB0aGF0IHsgYW5kIH0gbWF5IGJlIGVzY2FwZWQKICAgIHdpdGggYmFja3NsYXNoZXMuCiAgCiAgKiBDaGFuZ2VkIG91dHB1dCBmb3JtYXQgZm9yIGVycm9ycy4KCiAtLSBEYXZpZCBOLiBXZWx0b24gPGRhdmlkd0BlZm4ub3JnPiAgV2VkLCAxOSBBcHIgMjAwMCAxNzo0OTo0NyArMDIwMAoKbGliYXBhY2hlLW1vZC1kdGNsICgwLjcuMy0yKSBmcm96ZW4gdW5zdGFibGU7IHVyZ2VuY3k9bG93CgogICogUmVtb3ZlZCAiY29kZTJodG1sIiB0YXJnZXQgZnJvbSBidWlsZCB0YXJnZXQuICAKICAqIEZpeGVzICM1ODQzMS4KCiAtLSBEYXZpZCBOLiBXZWx0b24gPGRhdmlkd0BlZm4ub3JnPiAgRnJpLCAgMyBNYXIgMjAwMCAxMzoxMToyMyArMDEwMAoKbGliYXBhY2hlLW1vZC1kdGNsICgwLjcuMy0xKSBmcm96ZW4gdW5zdGFibGU7IHVyZ2VuY3k9bG93CgogICogRml4ZXMgR0VUIGFyZ3VtZW50IHBhcnNpbmcgYnVnLgogICogQ2hhbmdlZCBhcmd1bWVudCBwYXJzaW5nIHRvIGNyZWF0ZSBvbmUgbGlzdCBhbmQgYXZvaWQgc3VibGlzdHMuCgogLS0gRGF2aWQgTi4gV2VsdG9uIDxkYXZpZHdAZWZuLm9yZz4gIFNhdCwgMjIgSmFuIDIwMDAgMjA6NDY6MzQgLTA4MDAKCmxpYmFwYWNoZS1tb2QtZHRjbCAoMC43LjAtMikgdW5zdGFibGU7IHVyZ2VuY3k9bG93CgogICogTWFkZSBocHV0cywgaW5jbHVkZSwgYW5kIGJ1ZmZlcl9hZGQgY29tbWFuZHMgc2FmZSBmb3IgYmluYXJ5IGFuZAogICAgc3BhcnNlIGRhdGEuCiAgCiAgKiBOb3cgYWJsZSB0byBvdXRwdXQgZGlmZmVyZW50IG1pbWUgdHlwZXMuCgogLS0gRGF2aWQgTi4gV2VsdG9uIDxkYXZpZHdAZWZuLm9yZz4gIFNhdCwgMTggRGVjIDE5OTkgMTg6NTA6MjkgLTA4MDAKCmxpYmFwYWNoZS1tb2QtZHRjbCAoMC43LjAtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CgogICogTWFqb3Igb3ZlcmhhdWwgb2YgaGVhZGVyIGFuZCBidWZmZXJpbmcgc3lzdGVtLgogICogU2V2ZXJhbCBuZXcgY29tbWFuZHMuCgogLS0gRGF2aWQgTi4gV2VsdG9uIDxkYXZpZHdAZWZuLm9yZz4gIFN1biwgIDUgRGVjIDE5OTkgMjE6MjQ6MjMgLTA4MDAKCmxpYmFwYWNoZS1tb2QtZHRjbCAoMC42LjQtMikgdW5zdGFibGU7IHVyZ2VuY3k9bG93CgogICogRml4ZWQgTGludGlhbiBwcm9ibGVtczoKICAqIFNldCBhbmQgcmVtb3ZlIGxpbmtzIGJldHdlZW4gL3Vzci9kb2MgYW5kIC91c3Ivc2hhcmUvZG9jLgogICogQWRkZWQgZGhfaW5zdGFsbGNoYW5nZWxvZ3MuCiAgCiAtLSBEYXZpZCBOLiBXZWx0b24gPGRhdmlkd0BlZm4ub3JnPiAgU3VuLCAxNCBOb3YgMTk5OSAxNToxNTo1MSAtMDgwMAoKbGliYXBhY2hlLW1vZC1kdGNsICgwLjYuNC0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKCiAgKiBQYXRjaCBmcm9tIEphbiBOaWp0bWFuIHRvIGNvbXBpbGUgbW9kX2R0Y2wgdW5kZXIgd2luZG93cyBhbmQgZWxpbWluYXRlCiAgICBzdHJpbmdzLmguICBJbmNsdWRlZCB3aW5kb3dzLyBkaXJlY3RvcnkgaW4gc291cmNlcy4KCiAtLSBEYXZpZCBOLiBXZWx0b24gPGRhdmlkd0BlZm4ub3JnPiAgU2F0LCAgNiBOb3YgMTk5OSAwOTo1NDozNCAtMDgwMAoKbGliYXBhY2hlLW1vZC1kdGNsICgwLjYuMy0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKCiAgKiBGaXhlZCBzbWFsbCBidWcgaW4gdmFyaWFibGUgZGVjb2RpbmcgKFBhdHJpY2sgRGlhbW9uZCkuCgogLS0gRGF2aWQgTi4gV2VsdG9uIDxkYXZpZHdAZWZuLm9yZz4gIE1vbiwgMTggT2N0IDE5OTkgMDc6Mjc6NDkgLTA3MDAKCmxpYmFwYWNoZS1tb2QtZHRjbCAoMC42LjItMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CgogICogQWRkZWQgUGF0cmljayBEaWFtb25kJ3MgZml4IGZvciByZW1uYW50IG5hbWVzcGFjZXMuCiAgKiBTaW1wbGlmaWVkIGhhbmRsaW5nIG9mIGxpc3QgQ0dJIHZhcmlhYmxlcyAodGhhbmtzIHRvIEFuZHJldyBOLiBOZWZlZGtpbikKCiAtLSBEYXZpZCBOLiBXZWx0b24gPGRhdmlkd0BlZm4ub3JnPiAgRnJpLCAxMyBBdWcgMTk5OSAyMToyMzo1MiAtMDcwMAoKbGliYXBhY2hlLW1vZC1kdGNsICgwLjYuMS0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKCiAgKiBOb3csICJleGFtcGxlcy50dG1sP2E9MSZhPTImYT0zIiBjcmVhdGVzIGEgVGNsIGxpc3QsIGluc3RlYWQgb2YKICAgb3ZlcndyaXRpbmcgJ2EnIHdpdGggdGhlIGxhc3QgdmFsdWUuCgogLS0gRGF2aWQgTi4gV2VsdG9uIDxkYXZpZHdAZWZuLm9yZz4gIFR1ZSwgIDMgQXVnIDE5OTkgMjM6NDk6NDQgLTA3MDAKCmxpYmFwYWNoZS1tb2QtZHRjbCAoMC42LjAtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CgogICogQ3JlYXRlZCBQYXJzZSBUY2wgY29tbWFuZCwgdG8gZW5hYmxlIHBhcnNpbmcgb2YgdHRtbCBmaWxlcyBmcm9tCiAgIHdpdGhpbiBzY3JpcHRzLgoKICAqIENoYW5nZWQgdG8gQXBhY2hlIGFsbG9jIGNvbW1hbmRzIGluIHBhcnNlYXJncy4KCiAgKiBGaXhlZCBidWcgaW4gR0VUIHZhcmlhYmxlIGhhbmRsaW5nIChodHRwOi8vc29tZXNpdGUvZm9vLnR0bWw/Zm9vCiAgIG5vdyB3b3JrcykuCgogICogQWRkZWQgY2hpbGRfaW5pdCBhbmQgY2hpbGRfZXhpdCBoYW5kbGVycyBhbmQgZGlyZWN0aXZlcy4KCiAtLSBEYXZpZCBOLiBXZWx0b24gPGRhdmlkd0BlZm4ub3JnPiAgVGh1LCAyOSBKdWwgMTk5OSAyMDo1NDoyMyAtMDcwMAoKbGliYXBhY2hlLW1vZC1kdGNsICgwLjUuNC0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKCiAgKiBGaXhlZCBidWcgaW4gUE9TVCBjb2RlLgoKIC0tIERhdmlkIE4uIFdlbHRvbiA8ZGF2aWR3QGVmbi5vcmc+ICBNb24sIDE0IEp1biAxOTk5IDIyOjM5OjA4IC0wNzAwCgpsaWJhcGFjaGUtbW9kLWR0Y2wgKDAuNS4zLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdwoKICAqIEZpeGVkIHByb2JsZW0gd2l0aCBQT1NUIGRhdGEuCiAgKiBJbnRlZ3JhdGVkIFBhdHJpY2sgRGlhbW9uZCdzIG5ldyBIR2V0VmFycy5jLgoKIC0tIERhdmlkIE4uIFdlbHRvbiA8ZGF2aWR3QGVmbi5vcmc+ICBUdWUsICA4IEp1biAxOTk5IDIzOjU1OjQwIC0wNzAwCgpsaWJhcGFjaGUtbW9kLWR0Y2wgKDAuNS4yLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdwoKICAqIFNtYWxsIGZpeCBmcm9tIFBhb2xvIEJydXR0aSAtIGNoYW5nZSAnYycgdG8gY2hhciBpbiBwYXJzZXIuCgogLS0gRGF2aWQgTi4gV2VsdG9uIDxkYXZpZHdAZWZuLm9yZz4gIFdlZCwgMjEgQXByIDE5OTkgMjA6MTI6NDQgLTA3MDAKCmxpYmFwYWNoZS1tb2QtZHRjbCAoMC41LjEtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CgogICogY2FjaGVTaXplIGRlZmF1bHRzIHRvIGFwX21heF9yZXF1ZXN0c19wZXJfY2hpbGQgLyAyLgoKIC0tIERhdmlkIE4uIFdlbHRvbiA8ZGF2aWR3QGVmbi5vcmc+ICBUdWUsIDIwIEFwciAxOTk5IDEyOjI3OjE4IC0wNzAwCgpsaWJhcGFjaGUtbW9kLWR0Y2wgKDAuNS4wLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdwoKICAqIEFkZGVkICJ0ZXN0ZHRjbCIsIGZvciBzdGF0aWMgdGVzdGluZyBvZiB0dG1sIHBhZ2VzLgogICogQWRkZWQgbmV3IFRjbCBjb21tYW5kICJkdGNsX2luZm8iLCB3aGljaCBwcmludHMgc29tZSBpbmZvIGFib3V0IHRoZQogIGludGVybmFsIHN0YXRlLgogICogQWRkZWQgIkR0Y2xfQ2FjaGVTaXplIiBnbG9iYWwgY29uZmlndXJhdGlvbi4KICAqIENoYW5nZWQgIkdsb2JhbFNjcmlwdCIgdG8gIkR0Y2xfR2xvYmFsU2NyaXB0Ii4KICAqIEFkZGVkIFBhb2xvIEJydXR0aSdzIGNoYW5nZXMsIHdoaWNoIGluY2x1ZGU6CiAgKiBNb3JlIGNvbXBsZXRlIHVzZSBvZiBUY2wgb2JqZWN0cy4KICAqIENhY2hpbmcgc3lzdGVtLiAgVGhpcyBkb2VzIG5vdCBjYWNoZSB0aGUgcmVzdWx0cyBvZiB0aGUgc2NyaXB0cywganVzdAogIHRoZSBUY2wgb2JqZWN0cyByZXN1bHRpbmcgZnJvbSByZWFkaW5nIHRoZSBmaWxlcyBpbiBhbmQgcGFyc2luZyB0aGVtLgogICogVXNlIG9mIGFwXyBjb21tYW5kcyB0byBtYW5hZ2UgbWVtb3J5LgogICogVGhlIEluY2x1ZGUgY29tbWFuZCBpcyBpbXBsZW1lbnRlZCB3aXRoIFRjbF8gZmlsZSBpbnRlcmZhY2UsIHdoaWNoCiAgaW1wcm92ZXMgYm90aCBwb3J0YWJpbGl0eSBhbiBlcnJvciBtZXNzYWdpbmcuCiAgKiBBbGwgIndyb25nIGFyZ3MiIGFyZSBpbXBsZW1lbnRlZCB3aXRoIHRoZSBzdGFuZGFyZCBUY2xfV3JvbmdOdW1BcmdzIGNhbGwuCiAgKiBUaGFua3MgUGFvbG8hCgkKIC0tIERhdmlkIE4uIFdlbHRvbiA8ZGF2aWR3QGVmbi5vcmc+ICBTdW4sIDE0IE1hciAxOTk5IDE0OjQ3OjAzIC0wODAwCgpsaWJhcGFjaGUtbW9kLWR0Y2wgKDAuNC42LTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdwoKICAqIEFkZGVkICdzZXRjb29raWUnIGNvbW1hbmQuCiAgKiBEcmFtYXRpYyBpbXByb3ZlbWVudHMgdG8gZHRjbC1tb2RlLmVsLCBhbGxvd2luZyB5b3UgdG8gYXV0b21hdGljYWxseQogIHN3aXRjaCBiZXR3ZWVuIFRDTCBhbmQgSFRNTCBtb2RlcyEKICAqIEluaXRpYXRlZCBzd2l0Y2ggdG8gVGNsICdvYmplY3RzJy4KICAqIEJlZ2luaW5ncyBvZiBhIHVzZXIgbWFudWFsIGluIHVzZS5odG1sLgoJCiAtLSBEYXZpZCBOLiBXZWx0b24gPGRhdmlkd0BlZm4ub3JnPiAgU3VuLCAxNCBNYXIgMTk5OSAxNDo0NzowMyAtMDgwMAoKbGliYXBhY2hlLW1vZC1kdGNsICgwLjQuNS0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKCiAgKiBDaGFuZ2VkICdjZ2kudGNsJyB0byAnZHRjbC50Y2wnLCBhbmQgYWRkZWQgUm9sZiBBZGUncyBpbXByb3ZlbWVudHMuCiAgKiBBZGRlZCBkb2N1bWVudGF0aW9uIHBhZ2UgZm9yIGR0Y2wudGNsLgogICogVXBkYXRlZCBkb2N1bWVudGF0aW9uLgoKIC0tIERhdmlkIE4uIFdlbHRvbiA8ZGF2aWR3QGVmbi5vcmc+ICBXZWQsIDI0IEZlYiAxOTk5IDIzOjMzOjIwIC0wODAwCgpsaWJhcGFjaGUtbW9kLWR0Y2wgKDAuNC40LTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdwoKICAqIEZpeGVkIG1pbm9yIGJ1Z3MgaW4gUE9TVCBjb2RlLgogICogQWRkZWQgZHRjbC1tb2RlLmVsLgogICogRG9jdW1lbnRhdGlvbiBjaGFuZ2VzOiB1cGRhdGVzLCBhbmQgZXhwbGFuYXRpb24gb2YgaG93IHRvIGNvbXBpbGUKICAgIG1vZF9kdGNsIGFzIGEgc3RhdGljIG1vZHVsZS4KICAqIEFkZGVkICdDb25maWd1cmUnIGhlbHAgdG8gbW9kX2R0Y2wuYwogICogQWRkZWQgUm9sZiBBZGUncyBwcmVsaW1pbmFyeSBjZ2kudGNsLiAgUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGlzCiAgICAqYWxwaGEqIHNvZnR3YXJlLgoKIC0tIERhdmlkIE4uIFdlbHRvbiA8ZGF2aWR3QGVmbi5vcmc+ICBTYXQsIDIwIEZlYiAxOTk5IDEyOjUxOjUxIC0wODAwCgpsaWJhcGFjaGUtbW9kLWR0Y2wgKDAuNC4zLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdwoKICAqIEZpeGVkIHBvaW50ZXIgYnVnIGluIHB0Y2hhciBhbmQgcHRzdHIuCgogLS0gRGF2aWQgTi4gV2VsdG9uIDxkYXZpZHdAZWZuLm9yZz4gIFdlZCwgIDMgRmViIDE5OTkgMjE6MDA6MDIgLTA4MDAKCmxpYmFwYWNoZS1tb2QtZHRjbCAoMC40LjItMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CgogICogQ2hhbmdlcyBpbiBkb2N1bWVudGF0aW9uLCBhZGRlZCBzZXZlcmFsIGZpbGVzLCBpbmNsdWRpbmcgJ0lOU1RBTEwnLAogICAgYmVuY2htYXJrLmh0bWwsIGFuZCBzZXZlcmFsIG90aGVycy4KICAqIEZpeGVkIGhhbmRsaW5nIG9mIDxEaXJlY3Rvcnk+IE9wdGlvbnMsIHNvIG5vIGNoYW5nZXMgYXJlIG5lZWRlZCBpbiB0aGUKICAgIGNvbmZpZyBmaWxlcy4KCiAtLSBEYXZpZCBOLiBXZWx0b24gPGRhdmlkd0BlZm4ub3JnPiAgU2F0LCAzMCBKYW4gMTk5OSAxMzo1NToxNCAtMDgwMAoKbGliYXBhY2hlLW1vZC1kdGNsICgwLjQuMS0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKCiAgKiBGaXhlZCBtaW5vciBidWdzIGluIG5hbWVzcGFjZSBjcmVhdGlvbi4KCiAtLSBEYXZpZCBOLiBXZWx0b24gPGRhdmlkd0BlZm4ub3JnPiAgTW9uLCAxMSBKYW4gMTk5OSAyMjozNToyMCAtMDgwMAoKbGliYXBhY2hlLW1vZC1kdGNsICgwLjQtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CgogICogQWRkZWQgJy1lcnJvcicgdG8gaHB1dHMgZm9yIHRjbCBlcnJvciByZXBvcnRpbmcuCiAgKiBEaXNwZW5zZWQgd2l0aCBuZXcgaW50ZXJwcmV0ZXIgcGVyIHJlcXVlc3QgaW4gZmF2b3Igb2YgYSBuZXcgbmFtZXNwYWNlCiAgYXQgZWFjaCByZXF1ZXN0LCBhbmQgYSBnbG9iYWwgaW50ZXJwcmV0ZXIuCiAgKiBBZGRlZCBjb25maWcgb3B0aW9uIGZvciBnbG9iYWwgc3RhcnR1cCBzY3JpcHQuCgogLS0gRGF2aWQgTi4gV2VsdG9uIDxkYXZpZHdAZWZuLm9yZz4gIFNhdCwgMTIgRGVjIDE5OTggMTY6MDU6MjAgLTA4MDAKCmxpYmFwYWNoZS1tb2QtZHRjbCAoMC4zLTEpIGZyb3plbiB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKCiAgKiBBZGRlZCAnaW5jbHVkZScgZnVuY3Rpb24uCiAgKiBDbGVhbmVkIHVwIGNvbW1lbnRzLCBkb2N1bWVudGF0aW9uLgogICogQWRkZWQgcGF0Y2ggYnkgKHJvbGZAcG9pbnRzbWFuLmRlKSwgd2hpY2ggZWxpbWluYXRlcyBuZWVkIGZvciBnbG9iYWxfcmVxdWVzdF9yZWMsIGFuZCBpbnN0ZWFkIG1ha2VzIHVzZSBvZiBDbGllbnREYXRhLgogICogQWRkZWQgcHJlbGltaW5hcnkgUE9TVCBmdW5jdGlvbmFsaXR5LCBjb3BpZWQsIGFuZCBtb2RpZmllZCwgZnJvbSBtb2RfY2dpLgogICogQ29tcGlsZWQgdW5kZXIgQXBhY2hlIDEuMy4zLgoJCiAtLSBEYXZpZCBOLiBXZWx0b24gPGRhdmlkd0BlZm4ub3JnPiAgTW9uLCAyMyBOb3YgMTk5OCAyMjo1NDowMyAtMDgwMAoKbGliYXBhY2hlLW1vZC1kdGNsICgwLjItMykgdW5zdGFibGU7IHVyZ2VuY3k9bG93CgogICogRml4ZWQgYSBmZXcgYnVncyBhZmZlY3RpbmcgcG9ydGFiaWxpdHkuCgogLS0gRGF2aWQgTi4gV2VsdG9uIDxkYXZpZHdAZWZuLm9yZz4gIFdlZCwgMTQgT2N0IDE5OTggMjM6MDU6NDAgLTA3MDAKCmxpYmFwYWNoZS1tb2QtZHRjbCAoMC4yLTIpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdwoKICAqIFJlY29tcGlsZWQgZm9yIEFwYWNoZSAxLjMuMi4KCiAtLSBEYXZpZCBOLiBXZWx0b24gPGRhdmlkd0BlZm4ub3JnPiAgU3VuLCAxMSBPY3QgMTk5OCAwMDoxNTozMyAtMDcwMAoKbGliYXBhY2hlLW1vZC1kdGNsICgwLjItMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CgogICogQWRkZWQgZGVzY3JpcHRpb24gdG8gY29udHJvbCBmaWxlLgogICogVXBkYXRlZCBmb3IgQXBhY2hlIDEuMy4xLgoKIC0tIERhdmlkIE4uIFdlbHRvbiA8ZGF2aWR3QGVmbi5vcmc+ICBGcmksICA0IFNlcCAxOTk4IDE2OjE4OjAwIC0wNzAwCgpsaWJhcGFjaGUtbW9kLWR0Y2wgKDAuMS0zKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKCiAgKiBBZGRlZCBhIGZldyB0aGluZ3MgdG8gdGhlIGRvY3MuIAoKIC0tIERhdmlkIE4uIFdlbHRvbiA8ZGF2aWR3QGVmbi5vcmc+ICBGcmksIDI0IEp1bCAxOTk4IDEwOjM1OjIwIC0wNzAwCgpsaWJhcGFjaGUtbW9kLWR0Y2wgKDAuMS0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKCiAgKiBUd2Vha2VkIHBvc3RpbnN0IGZpbGUsIGNoYW5nZWQgZHRjbC50dG1sIHRvIC5odG1sLgoKIC0tIERhdmlkIE4uIFdlbHRvbiA8ZGF2aWR3QGVmbi5vcmc+ICBTYXQsIDE4IEp1bCAxOTk4IDExOjE0OjQ4IC0wNzAwCgpsaWJhcGFjaGUtbW9kLWR0Y2wgKDAuMS0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKCiAgKiBJbml0aWFsIFJlbGVhc2UuCgogLS0gRGF2aWQgTi4gV2VsdG9uIDxkYXZpZHdAZWZuLm9yZz4gIEZyaSwgMTAgSnVsIDE5OTggMjA6MDE6MzUgLTA3MDAKCgo=