VGhpcyBmaWxlIGRlc2NyaWJlcyB3aGVyZSB0byBzdGFydCBkZWJ1Z2dpbmcgV2luZSBhbmQgaG93IHRvIHdyaXRlCnVzZWZ1bCBidWcgcmVwb3J0cy4KCkNyYXNoZXMKPT09PT09PQoKICBUaGVzZSB1c3VhbGx5IHNob3cgdXAgbGlrZSB0aGlzOgoKfFVuZXhwZWN0ZWQgV2luZG93cyBwcm9ncmFtIHNlZ2ZhdWx0IC0gb3Bjb2RlID0gOGIKfFNlZ21lbnRhdGlvbiBmYXVsdCBpbiBXaW5kb3dzIHByb2dyYW0gMWI3OmM0MS4KfExvYWRpbmcgc3ltYm9scyBmcm9tIEVMRiBmaWxlIC9yb290L3dpbmUvd2luZS4uLgp8Li4uLm1vcmUgTG9hZGluZyBzeW1ib2xzIGZyb20gLi4uCnxJbiAxNiBiaXQgbW9kZS4KfFJlZ2lzdGVyIGR1bXA6CnwgQ1M6MDFiNyBTUzowMTZmIERTOjAyODcgRVM6MDAwMAp8IElQOjBjNDEgU1A6ODc4YSBCUDo4Nzk2IEZMQUdTOjAyNDYKfCBBWDo4MTFlIEJYOjAwMDAgQ1g6MDAwMCBEWDowMDAwIFNJOjAwMDEgREk6ZmZmZgp8U3RhY2sgZHVtcDoKfDB4MDE2ZjoweDg3OGE6ICAwMDAxIDAxNmYgZmZlZCAwMDAwIDAwMDAgMDI4NyA4OTBiIDFlNWIKfDB4MDE2ZjoweDg3OWE6ICAwMWI3IDAwMDEgMDAwZCAxMDUwIDA4YjcgMDE2ZiAwMDAxIDAwMGQKfDB4MDE2ZjoweDg3YWE6ICAwMDBhIDAwMDMgMDAwNCAwMDAwIDAwMDcgMDAwNyAwMTkwIDAwMDAKfDB4MDE2ZjoweDg3YmE6CnwKfDAwNTA6IHNlbD0wMjg3IGJhc2U9NDAyMTFkMzAgbGltaXQ9MGI5M2YgKGJ5dGVzKSAxNi1iaXQgcnctCnxCYWNrdHJhY2U6CnwwIDB4MDFiNzoweDBjNDEgKFBYU1JWX0ZPTkdFVEZBQ0VOQU1FKzB4N2MpCnwxIDB4MDFiNzoweDFlNWIgKFBYU1JWX0ZPTlBVVENBVEZPTlQrMHgyY2QpCnwyIDB4MDFhNzoweDA1YWEKfDMgMHgwMWI3OjB4MDc2OCAoUFhTUlZfRk9OSU5JVEZPTlRTKzB4ODEpCnw0IDB4MDE0ZjoweDAzZWQgKFBET1hXSU5fQFNRTENVUkNCJFE2Q0JUWVBFVUxOOENCU0NUWVBFKzB4MWIxKQp8NSAweDAxM2Y6MHgwMGFjCnwKfDB4MDFiNzoweDBjNDEgKFBYU1JWX0ZPTkdFVEZBQ0VOQU1FKzB4N2MpOiAgbW92dyAgICAgICAgJWVzOjB4MzgoJWJ4KSwlZHgKClN0ZXBzIHRvIGRlYnVnIGEgY3Jhc2guIFlvdSBtYXkgc3RvcCBhdCBhbnkgc3RlcCwgYnV0IHBsZWFzZSByZXBvcnQgdGhlIGJ1ZwphbmQgcHJvdmlkZSBhcyBtdWNoIG9mIHRoZSBpbmZvcm1hdGlvbiBnYXRoZXJlZCB0byB0aGUgbmV3c2dyb3VwIG9yIHRoZQpyZWxldmFudCBkZXZlbG9wZXIgYXMgZmVhc29uYWJsZS4KICAKIDEuIEdldCB0aGUgcmVhc29uIGZvciB0aGUgY3Jhc2guIFRoaXMgaXMgdXN1YWxseSBhbiBhY2Nlc3MgdG8gYW4gaW52YWxpZAogICAgc2VsZWN0b3IsIGFuIGFjY2VzcyB0byBhbiBvdXQgb2YgcmFuZ2UgYWRkcmVzcyBpbiBhIHZhbGlkIHNlbGVjdG9yLAogICAgcG9wcGluZyBhIHNlZ21lbnRyZWdpc3RlciBmcm9tIHRoZSBzdGFjayBvciB0aGUgbGlrZS4gV2hlbiByZXBvcnRpbmcgYQogICAgY3Jhc2gsIHJlcG9ydCB0aGlzIFdIT0xFIGNyYXNoZHVtcCBldmVuIGlmIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byB5b3UuCgogICAgKEluIHRoaXMgY2FzZSBpdCBpcyBhY2Nlc3MgdG8gYW4gaW52YWxpZCBzZWxlY3RvciwgZm9yICVlcyBpcyAwMDAwLCBhcwogICAgc2VlbiBpbiB0aGUgcmVnaXN0ZXIgZHVtcCkuCiAgICAKIDIuIERldGVybWluZSB3aGVyZSB0aGUgcmVhc29uIGNhbWUgZnJvbS4KICAgIFNpbmNlIHRoaXMgaXMgdXN1YWxseSBhIHByaW1hcnkvc2Vjb25kYXJ5IHJlYWN0aW9uIHRvIGEgZmFpbGVkIG9yCiAgICBtaXNiZWhhdmluZyBXaW5lIGZ1bmN0aW9uLCByZXJ1biBXaW5lIHdpdGggIi1kZWJ1Z21zZyArcmVsYXkiICh3aXRob3V0ICIpCiAgICBhZGRlZCB0byB0aGUgY29tbWFuZGxpbmUuIFRoaXMgd2lsbCBnZXQgcmF0aGVyIG11Y2ggb3V0cHV0LCBidXQgdXN1YWxseQogICAgdGhlIHJlYXNvbiBpcyBsb2NhdGVkIGluIHRoZSBsYXN0IGNhbGwocykuICBUaG9zZSBsaW5lcyB1c3VhbGx5IGxvb2sgbGlrZQogICAgdGhpczoKCnxDYWxsIEtFUk5FTC45MDogTFNUUkxFTigwMjI3OjA2OTIgInRleHQiKSByZXQ9MDFlNzoyY2U3IGRzPTAyMjcKICAgICAgXl5eXl5eXl5eICBeICAgICAgIF5eXl5eXl5eXiBeXl5eXl4gICAgICBeXl5eXl5eXl4gICAgXl5eXgogICAgICB8ICAgICAgICAgIHwgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgICB8RGF0YXNlZ21lbnQKICAgICAgfCAgICAgICAgICB8ICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICB8UmV0dXJuIGFkZHJlc3MKICAgICAgfCAgICAgICAgICB8ICAgICAgIHwgICAgICAgICB8dGV4dHVhbCBwYXJhbWV0ZXIKICAgICAgfCAgICAgICAgICB8ICAgICAgIHwKICAgICAgfCAgICAgICAgICB8ICAgICAgIHxBcmd1bWVudChzKS4gVGhpcyBvbmUgaXMgYSB3aW4xNiBzZWdtZW50ZWQgcG9pbnRlci4KICAgICAgfCAgICAgICAgICB8RnVuY3Rpb24gY2FsbGVkLgogICAgICB8VGhlIG1vZHVsZSwgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbi4gSW4gdGhpcyBjYXNlIGl0IGlzIEtFUk5FTC4KCQkgICAgICAgIAp8UmV0ICBLRVJORUwuOTA6IExTVFJMRU4oKSByZXR2YWw9MHgwMDA0IHJldD0wMWU3OjJjZTcgZHM9MDIyNwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eCgkJCQkgIHxSZXR1cm52YWx1ZSBpcyAxNiBiaXQgYW5kIGhhcyB0aGUgdmFsdWUgNC4KCgogMy4gSWYgeW91IGhhdmUgZm91bmQgYSBtaXNiZWhhdmluZyBmdW5jdGlvbiwgdHJ5IHRvIGZpbmQgb3V0IHdoeSBpdAogICAgbWlzYmVoYXZlcy4gRmluZCB0aGUgZnVuY3Rpb24gaW4gdGhlIHNvdXJjZSBjb2RlLiBUcnkgdG8gbWFrZSBzZW5zZSBvZgogICAgdGhlIGFyZ3VtZW50cyBwYXNzZWQuIFVzdWFsbHkgdGhlcmUgaXMgYSAnVFJBQ0UoPGNoYW5uZWw+LCIoLi4uKVxuIik7JyAKICAgIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZ1bmN0aW9uLiBSZXJ1biB3aW5lIHdpdGggCiAgICAiLWRlYnVnbXNnICt4eXosK3JlbGF5IiBhZGRlZCB0byB0aGUgY29tbWFuZGxpbmUuCgogNC4gQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZGVidWcgdXNpbmcgdGhlIGludGVybmFsIGRlYnVnZ2VyIGNhbiBiZSAKICAgIGZvdW5kIGluIGRlYnVnZ2VyL1JFQURNRS4KCiA1LiBJZiB0aG9zZSBpbmZvcm1hdGlvbiBpc24ndCBjbGVhciBlbm91Z2ggb3IgaWYgeW91IHdhbnQgdG8ga25vdyBtb3JlIGFib3V0CiAgICB3aGF0J3MgaGFwcGVuaW5nIGluIHRoZSBmdW5jdGlvbiBpdHNlbGYsIHRyeSBydW5uaW5nIHdpbmUgd2l0aCAiLWRlYnVnbXNnCiAgICArYWxsIiwgd2hpY2ggZHVtcHMgQUxMIGluY2x1ZGVkIGRlYnVnIGluZm9ybWF0aW9uIGluIHdpbmUuCgogNi4gSWYgdGhhdCBpc24ndCBlbm91Z2ggYWRkIG1vcmUgZGVidWcgb3V0cHV0IGZvciB5b3Vyc2VsZiBpbnRvIHRoZQogICAgZnVuY3Rpb25zIHlvdSBmaW5kIHJlbGV2YW50LiAgU2VlIGRvY3VtZW50YXRpb24vZGVidWctbXNncy4KICAgIFlvdSBtaWdodCBhbHNvIHRyeSB0byBydW4gdGhlIHByb2dyYW0gaW4gZ2RiIGluc3RlYWQgb2YgdXNpbmcgdGhlCiAgICBXSU5FLWRlYnVnZ2VyLiBJZiB5b3UgZG9uJ3QgdXNlIHRoZSAiLWRlc2t0b3AiIG9yICItbWFuYWdlZCIgb3B0aW9uLAogICAgc3RhcnQgdGhlIFdJTkUgcHJvY2VzcyB3aXRoICItc3luYyIsIG9yIGNoYW5jZXMgYXJlIGdvb2QgdG8gZ2V0IFggaW50bwogICAgYW4gdW51c2FibGUgc3RhdGUuCiAgCiA3LiBZb3UgY2FuIGFsc28gc2V0IGEgYnJlYWtwb2ludCBmb3IgdGhhdCBmdW5jdGlvbi4gU3RhcnQgd2luZSB3aXRoIHRoZQogICAgIi1kZWJ1ZyIgb3B0aW9uIGFkZGVkIHRvIHRoZSBjb21tYW5kbGluZS4gQWZ0ZXIgbG9hZGluZyB0aGUgZXhlY3V0YWJsZQogICAgd2luZSB3aWxsIGVudGVyIHRoZSBpbnRlcm5hbCBkZWJ1Z2dlci4gVXNlICJicmVhayBLRVJORUxfTFNUUkxFTiIKICAgIChyZXBsYWNlIGJ5IGZ1bmN0aW9uIHlvdSB3YW50IHRvIGRlYnVnLCBDQVNFIElTIFJFTEVWQU5ULikgdG8gc2V0IGEKICAgIGJyZWFrcG9pbnQuICBUaGVuIHVzZSAiY29udGludWUiIHRvIHN0YXJ0IG5vcm1hbCBwcm9ncmFtLWV4ZWN1dGlvbi4gV2luZQogICAgd2lsbCBzdG9wIGlmIGl0IHJlYWNoZXMgdGhlIGJyZWFrcG9pbnQuIElmIHRoZSBwcm9ncmFtIGlzbid0IHlldCBhdCB0aGUKICAgIGNyYXNoaW5nIGNhbGwgb2YgdGhhdCBmdW5jdGlvbiwgdXNlICJjb250aW51ZSIgYWdhaW4gdW50aWwgeW91IGFyZSBhYm91dAogICAgdG8gZW50ZXIgdGhhdCBmdW5jdGlvbi4gWW91IG1heSBub3cgcHJvY2VlZCB3aXRoIHNpbmdsZS1zdGVwcGluZyB0aGUKICAgIGZ1bmN0aW9uIHVudGlsIHlvdSByZWFjaCB0aGUgcG9pbnQgb2YgY3Jhc2guIFVzZSB0aGUgb3RoZXIgZGVidWdnZXIKICAgIGNvbW1hbmRzIHRvIHByaW50IHJlZ2lzdGVycyBhbmQgdGhlIGxpa2UuCgoKUHJvZ3JhbSBoYW5ncywgbm90aGluZyBoYXBwZW5zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICBTd2l0Y2ggdG8gVU5JWCBzaGVsbCwgZ2V0IHRoZSBwcm9jZXNzLUlEIHVzaW5nICJwcyAtYXxncmVwIHdpbmUiLCBhbmQgZG8gYQogICJraWxsIC1IVVAgPHBpZD4iICh3aXRob3V0ICIgYW5kIDw+KS4gV2luZSB3aWxsIHRoZW4gZW50ZXIgaXRzIGludGVybmFsCiAgZGVidWdnZXIgYW5kIHlvdSBjYW4gcHJvY2VlZCBhcyBleHBsYWluZWQgYWJvdmUuIEFsc28sIHlvdSBjYW4gdXNlIC1kZWJ1ZwogIHN3aXRjaCBhbmQgdGhlbiB5b3UgY2FuIGdldCBpbnRvIGludGVybmFsIGRlYnVnZ2VyIGJ5IHByZXNzaW5nIEN0cmwtQyBpbiAKICB0aGUgdGVybWluYWwgd2hlcmUgeW91IHJ1biBXaW5lLgoKUHJvZ3JhbSByZXBvcnRzIGFuIGVycm9yIHdpdGggYSBNZXNzYWdlYm94Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICBTb21ldGltZXMgcHJvZ3JhbXMgYXJlIHJlcG9ydGluZyBmYWlsdXJlIHVzaW5nIGEgbW9yZSBvciBsZXNzIG5vbmRlc2NyaXB0CiAgbWVzc2FnZWJveGVzLiBXZSBjYW4gZGVidWcgdGhpcyB1c2luZyB0aGUgc2FtZSBtZXRob2QgYXMgQ3Jhc2hlcywgYnV0IHRoZXJlCiAgaXMgb25lIHByb2JsZW0uLi4gRm9yIHNldHRpbmcgdXAgYSBtZXNzYWdlIGJveCB0aGUgcHJvZ3JhbSBhbHNvIGNhbGxzIFdpbmUKICBwcm9kdWNpbmcgaHVnZSBjaHVua3Mgb2YgZGVidWcgY29kZS4KCiAgU2luY2UgdGhlIGZhaWx1cmUgaGFwcGVucyB1c3VhbGx5IGRpcmVjdGx5IGJlZm9yZSBzZXR0aW5nIHVwIHRoZSBNZXNzYWdlYm94CiAgeW91IGNhbiBzdGFydCB3aW5lIHdpdGggIi1kZWJ1ZyIgYWRkZWQgdG8gdGhlIGNvbW1hbmRsaW5lLCBzZXQgYSBicmVha3BvaW50CiAgYXQgIk1lc3NhZ2VCb3gzMkEiIChjYWxsZWQgYnkgd2luMTYgYW5kIHdpbjMyIHByb2dyYW1zKSBhbmQgcHJvY2VlZCB3aXRoCiAgImNvbnRpbnVlIi4gV2l0aCAiLWRlYnVnbXNnICthbGwiIFdpbmUgd2lsbCBub3cgc3RvcCBkaXJlY3RseSBiZWZvcmUgCiAgc2V0dGluZyB1cCB0aGUgTWVzc2FnZWJveC4gIFByb2NlZWQgYXMgZXhwbGFpbmVkIGFib3ZlLgoKICBZb3UgY2FuIGFsc28gcnVuIHdpbmUgdXNpbmcgIndpbmUgLWRlYnVnbXNnICtyZWxheSBwcm9ncmFtLmV4ZSAyPiYxfGxlc3MgLWkiCiAgYW5kIGluIGxlc3Mgc2VhcmNoIGZvciBtZXNzYWdlYm94LgoKRGlzYXNzZW1ibGluZyBwcm9ncmFtczoKPT09PT09PT09PT09PT09PT09PT09PT0KICBZb3UgbWF5IGFsc28gdHJ5IHRvIGRpc2Fzc2VtYmxlIHRoZSBvZmZlbmRpbmcgcHJvZ3JhbSB0byBjaGVjayBmb3IgCiAgdW5kb2N1bWVudGVkIGZlYXR1cmVzIGFuZC9vciB1c2Ugb2YgdGhlbS4KCiAgVGhlIGJlc3QsIGZyZWVseSBhdmFpbGFibGUsIGRpc2Fzc2VtYmxlciBmb3IgV2luMTYgcHJvZ3JhbXMgaXMKICBXaW5kb3dzIENvZGViYWNrLCBhcmNoaXZlbmFtZSB3Y2J4eHguemlwLCB3aGljaCB1c3VhbGx5IGNhbiBiZSBmb3VuZAogIGluIHRoZSBDaWNhLU1pcnJvciBzdWJkaXJlY3Rvcnkgb24gdGhlIFdJTkUgZnRwc2l0ZXMuIChTZWUgQU5OT1VOQ0UpLgogIERpc2Fzc2VtYmxpbmcgd2luMzIgcHJvZ3JhbXMgaXMgcG9zc2libGUgdXNpbmcgdGhlIFdpbmRvd3MgRGlzYXNzZW1ibGVyIDMyLAogIGFyY2hpdmVuYW1lIHNvbWV0aGluZyBsaWtlIHczMmRhc20uemlwIG9uIGZ0cC53aW5zaXRlLmNvbSBhbmQgbWlycm9ycy4KICBUaGUgc2hhcmV3YXJlIHZlcnNpb24gZG9lcyBub3QgYWxsb3cgc2F2aW5nIG9mIGRpc2Fzc2VtYmx5IGxpc3RpbmdzLgoKICBbSXQgYWxzbyBoYXMgYSBidWcsIGl0IGRpc2Fzc2VtYmxlcyB0aGUgZGxsIGFuZCBpbW1lZGlhdGVseSBhZnRlciB0aGF0CiAgIGNyYXNoZXMsIGxlYXZpbmcgYSB2ZXJ5IGxhcmdlIGZpbGUgY2FsZWQgJ3dpbnN5cycgaW4gdGhlIGRpcmVjdG9yeSBvZiB0aGUKICAgZGlzYXNzZW1ibGVkIGZpbGUuIFRoaXMgZmlsZSBjb250YWlucyBub3RoaW5nIG9mIHZhbHVlIChqdXN0IHRoZSBkaXNhc3NlbWJseSkKICAgYW5kIGNhbiBiZSBzYWZlbHkgZGVsZXRlZC5dCgogIFVuZGVyc3RhbmRpbmcgZGlzYXNzZW1ibGVkIGNvZGUgaXMganVzdCBhIHF1ZXN0aW9uIG9mIGV4ZXJjaXNlLgoKICBNb3N0IGNvZGUgb3V0IHRoZXJlIHVzZXMgc3RhbmRhcmQgQyBmdW5jdGlvbiBlbnRyaWVzIChmb3IgaXQgaXMgdXN1YWxseSAKICB3cml0dGVuIGluIEMpLiBXaW4xNiBmdW5jdGlvbiBlbnRyaWVzIHVzdWFsbHkgbG9vayBsaWtlIHRoYXQ6CnwgIAlwdXNoIGJwCnwJbW92IGJwLCBzcAp8CS4uLiBmdW5jdGlvbiBjb2RlIC4uCnwJcmV0ZiBYWFhYIAk8LS0tLS0tLS0tIFhYWFggaXMgbnVtYmVyIG9mIGJ5dGVzIG9mIGFyZ3VtZW50cwoKICBUaGlzIGlzIGEgRkFSIGZ1bmN0aW9uIHdpdGggbm8gbG9jYWwgc3RvcmFnZS4gVGhlIGFyZ3VtZW50cyB1c3VhbGx5IHN0YXJ0CiAgYXQgW2JwKzZdIHdpdGggaW5jcmVhc2luZyBvZmZzZXRzLiBOb3RlLCB0aGF0IFticCs2XSBiZWxvbmdzIHRvIHRoZSBSSUdIVE1PU1QgCiAgYXJndW1lbnQsIGZvciBleHBvcnRlZCB3aW4xNiBmdW5jdGlvbnMgdXNlIHRoZSBQQVNDQUwgY2FsbGluZyBjb252ZW50aW9uLgogIFNvLCBpZiB3ZSB1c2Ugc3RyY21wKGEsYikgd2l0aCBhIGFuZCBiIGJvdGggMzIgYml0IHZhcmlhYmxlcyBiIHdvdWxkIGJlIGF0CiAgW2JwKzZdIGFuZCBhIGF0IFticCsxMF0uCiAgTW9zdCBmdW5jdGlvbnMgbWFrZSBhbHNvIHVzZSBvZiBsb2NhbCBzdG9yYWdlIGluIHRoZSBzdGFja2ZyYW1lOgp8CWVudGVyIDAwODYsIDAwCnwJLi4uIGZ1bmN0aW9uIGNvZGUgLi4uCnwJbGVhdmUKfAlyZXRmIFhYWFgKICBUaGlzIGRvZXMgbW9zdGx5IHRoZSBzYW1lIGFzIGFib3ZlLCBidXQgYWxzbyBhZGRzIDB4ODYgYnl0ZXMgb2YKICBzdGFja3N0b3JhZ2UsIHdoaWNoIGlzIGFjY2Vzc2VkIHVzaW5nIFticC14eF0uCiAgQmVmb3JlIGNhbGxpbmcgYSBmdW5jdGlvbiwgYXJndW1lbnRzIGFyZSBwdXNoZWQgb24gdGhlIHN0YWNrIHVzaW5nIHNvbWV0aGluZwogIGxpa2UgdGhpczoKfAlwdXNoIHdvcmQgcHRyIFticC0wMl0JPC0gd2lsbCBiZSBhdCBbYnArOF0KfAlwdXNoIGRpCQkJPC0gd2lsbCBiZSBhdCBbYnArNl0KfAljYWxsIEtFUk5FTC5MU1RSTEVOCiAgSGVyZSBmaXJzdCB0aGUgc2VsZWN0b3IgYW5kIHRoZW4gdGhlIG9mZnNldCB0byB0aGUgcGFzc2VkIHN0cmluZyBhcmUgcHVzaGVkLgoKU2FtcGxlIGRlYnVnZ2luZyBzZXNzaW9uOgo9PT09PT09PT09PT09PT09PT09PT09PT09CgogIExldCdzIGRlYnVnIHRoZSBpbmZhbW91cyBXb3JkIFNIQVJFLkVYRSBtZXNzYWdlYm94OiAKCnxtYXJjdXNAamV0ICQgd2luZSB3aW53b3JkLmV4ZQp8ICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCAgICAgICAgICAgIHwgISAgWW91IG11c3QgbGVhdmUgV2luZG93cyBhbmQgbG9hZCBTSEFSRS5FWEV8CnwgICAgICAgICAgICB8ICAgIGJlZm9yZSBzdGFydGluZyBXb3JkLiAgICAgICAgICAgICAgICAgICAgfAp8ICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKCgp8bWFyY3VzQGpldCAkIHdpbmUgd2lud29yZC5leGUgLWRlYnVnbXNnICtyZWxheSAtZGVidWcKfENhbGxUbzMyKHduZHByb2M9MHg0MDA2NWJjMCxod25kPTAwMDAwMWFjLG1zZz0wMDAwMDA4MSx3cD0wMDAwMDAwMCxscD0wMDAwMDAwMCkKfFdpbjE2IHRhc2sgJ3dpbndvcmQnOiBCcmVha3BvaW50IDEgYXQgMHgwMWQ3OjB4MDAxYQp8Q2FsbFRvMTYoZnVuYz0wMTI3OjAwNzAsZHM9MDkyNykKfENhbGwgV1BST0NTLjI0OiBUQVNLX1JFU0NIRURVTEUoKSByZXQ9MDBiNzoxNDU2IGRzPTA5MjcKfFJldCAgV1BST0NTLjI0OiBUQVNLX1JFU0NIRURVTEUoKSByZXR2YWw9MHg4NjcyIHJldD0wMGI3OjE0NTYgZHM9MDkyNwp8Q2FsbFRvMTYoZnVuYz0wMWQ3OjAwMWEsZHM9MDkyNykKfCAgICAgQVg9MDAwMCBCWD0zY2I0IENYPTFmNDAgRFg9MDAwMCBTST0wMDAwIERJPTA5MjcgQlA9MDAwMCBFUz0xMWY3CnxMb2FkaW5nIHN5bWJvbHM6IC9ob21lL21hcmN1cy93aW5lL3dpbmUuLi4KfFN0b3BwZWQgb24gYnJlYWtwb2ludCAxIGF0IDB4MDFkNzoweDAwMWEKfEluIDE2IGJpdCBtb2RlLgp8V2luZS1kYmc+YnJlYWsgTWVzc2FnZUJveDMyQSAgICAgICAgICAgICAgICAgICAgICAgICAgPC0tLS0gU2V0IEJyZWFrcG9pbnQKfEJyZWFrcG9pbnQgMiBhdCAweDQwMTg5MTAwIChNZXNzYWdlQm94MzJBIFttc2dib3guYzoxOTBdKQp8V2luZS1kYmc+YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0tLS0gQ29udGludWUKfENhbGwgS0VSTkVMLjkxOiBJTklUVEFTSygpIHJldD0wMTU3OjAwMjIgZHM9MDhhNwp8ICAgICBBWD0wMDAwIEJYPTNjYjQgQ1g9MWY0MCBEWD0wMDAwIFNJPTAwMDAgREk9MDhhNyBFUz0xMWQ3IEVGTD0wMDAwMDI4Ngp8Q2FsbFRvMTYoZnVuYz0wOTBmOjA4NWMsZHM9MGRjZiwweDAwMDAsMHgwMDAwLDB4MDAwMCwweDAwMDAsMHgwODAwLDB4MDAwMCwweDAwMDAsMHgwZGNmKQp8Li4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0tLS0tIE11Y2ggZGVidWdvdXRwdXQKfENhbGwgS0VSTkVMLjEzNjogR0VURFJJVkVUWVBFKDB4MDAwMCkgcmV0PTA2MGY6MDk3YiBkcz0wOTI3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl4gRHJpdmUgMCAoQTopCnxSZXQgIEtFUk5FTC4xMzY6IEdFVERSSVZFVFlQRSgpIHJldHZhbD0weDAwMDIgcmV0PTA2MGY6MDk3YiBkcz0wOTI3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl4gIERSSVZFX1JFTU9WRUFCTEUKCQkJCQkJKEl0IGlzIGEgZmxvcHB5IGRpc2tkcml2ZS4pCgp8Q2FsbCBLRVJORUwuMTM2OiBHRVREUklWRVRZUEUoMHgwMDAxKSByZXQ9MDYwZjowOTdiIGRzPTA5MjcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXiBEcml2ZSAxIChCOikKfFJldCAgS0VSTkVMLjEzNjogR0VURFJJVkVUWVBFKCkgcmV0dmFsPTB4MDAwMCByZXQ9MDYwZjowOTdiIGRzPTA5MjcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXiAgRFJJVkVfQ0FOTk9UREVURVJNSU5FCgkJCQkJCShJIGRvbid0IGhhdmUgZHJpdmUgQjogYXNzaWduZWQpCgp8Q2FsbCBLRVJORUwuMTM2OiBHRVREUklWRVRZUEUoMHgwMDAyKSByZXQ9MDYwZjowOTdiIGRzPTA5MjcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl4gRHJpdmUgMiAoQzopCnxSZXQgIEtFUk5FTC4xMzY6IEdFVERSSVZFVFlQRSgpIHJldHZhbD0weDAwMDMgcmV0PTA2MGY6MDk3YiBkcz0wOTI3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl4gRFJJVkVfRklYRUQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3BlY2lmaWVkIGFzIGEgaGFyZGRpc2spCgp8Q2FsbCBLRVJORUwuOTc6IEdFVFRFTVBGSUxFTkFNRSgweDAwYzMsMHgwOTI3ODM2NCJkb2MiLDB4MDAwMCwwOTI3OjgyNDgpIHJldD0wNjBmOjA5YjEgZHM9MDkyNwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl4gICAgICAgICAgIF5eXl5eICAgICAgICBeXl5eXl5eXl4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfGJ1ZmZlciBmb3IgZm5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8dGVtcG9yYXJ5IG5hbWUgfmRvY1hYWFgudG1wCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxGb3JjZSB1c2Ugb2YgRHJpdmUgQzouCgp8V2FybmluZzogR2V0VGVtcEZpbGVOYW1lIHJldHVybnMgJ0M6fmRvYzkyODEudG1wJywgd2hpY2ggZG9lc24ndCBzZWVtIHRvIGJlIHdyaXRlYWJsZS4KfFBsZWFzZSBjaGVjayB5b3VyIGNvbmZpZ3VyYXRpb24gZmlsZSBpZiB0aGlzIGdlbmVyYXRlcyBhIGZhaWx1cmUuCgpXaG9vcHMsIGl0IGV2ZW4gZGV0ZWN0cyB0aGF0IHNvbWV0aGluZyBpcyB3cm9uZyEKCnxSZXQgIEtFUk5FTC45NzogR0VUVEVNUEZJTEVOQU1FKCkgcmV0dmFsPTB4OTI4MSByZXQ9MDYwZjowOWIxIGRzPTA5MjcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eIFRlbXBvcmFyeSBzdG9yYWdlIElECgp8Q2FsbCBLRVJORUwuNzQ6IE9QRU5GSUxFKDB4MDkyNzgyNDgiQzp+ZG9jOTI4MS50bXAiLDA5Mjc6ODJkYSwweDEwMTIpIHJldD0wNjBmOjA5ZDggZHM9MDkyNwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eIF5eXl5eXl5eXiBeXl5eXl5eCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxmaWxlbmFtZSAgICAgICAgfE9GU1RSVUNUIHxvcGVuIG1vZGU6CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPRl9DUkVBVEV8T0ZfU0hBUkVfRVhDTFVTSVZFfE9GX1JFQURXUklURQoKVGhpcyBmYWlscywgc2luY2UgbXkgQzogZHJpdmUgaXMgaW4gdGhpcyBjYXNlIG1vdW50ZWQgcmVhZG9ubHkuCgp8UmV0ICBLRVJORUwuNzQ6IE9QRU5GSUxFKCkgcmV0dmFsPTB4ZmZmZiByZXQ9MDYwZjowOWQ4IGRzPTA5MjcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl4gSEZJTEVfRVJST1IxNiwgeWVzLCBpdCBmYWlsZWQuCgp8Q2FsbCBVU0VSLjE6IE1FU1NBR0VCT1goMHgwMDAwLDB4MDkyNzgzNzYiU2llIG38c3NlbiBXaW5kb3dzIHZlcmxhc3NlbiB1bmQgU0hBUkUuRVhFIGxhZGVuIGJldm9yIFNpZSBXb3JkIHN0YXJ0ZW4uIiwweDAwMDAwMDAwLDB4MTAzMCkgcmV0PTA2MGY6MDg0ZiBkcz0wOTI3CiAgICAgICAgICAgCkFuZCBNZXNzYWdlQm94J2VkLgoKfFN0b3BwZWQgb24gYnJlYWtwb2ludCAyIGF0IDB4NDAxODkxMDAgKE1lc3NhZ2VCb3gzMkEgW21zZ2JveC5jOjE5MF0pCnwxOTAgICAgIHsJCTwtIHRoZSBzb3VyY2VsaW5lCkluIDMyIGJpdCBtb2RlLgpXaW5lLWRiZz4KCglUaGUgY29kZSBzZWVtcyB0byBmaW5kIGEgd3JpdGVhYmxlIGhhcmRkaXNrIGFuZCB0cmllcyB0byBjcmVhdGUgYSBmaWxlCgl0aGVyZS4gVG8gd29yayBhcm91bmQgdGhpcyBidWcsIHlvdSBjYW4gZGVmaW5lIEM6IGFzIGEgbmV0d29ya2RyaXZlLAoJd2hpY2ggaXMgaWdub3JlZCBieSB0aGUgY29kZSBhYm92ZS4KCldyaXR0ZW4gYnkgTWFyY3VzIE1laXNzbmVyIDxtc21laXNzbkBjaXAuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+LAphZGRpdGlvbnMgd2VsY29tZS4KLS0tLS0tLQoKSGVyZSBhcmUgc29tZSB1c2VmdWwgZGVidWdnaW5nIHRpcHMsIGFkZGVkIGJ5IEFuZHJlYXMgTW9ocjoKCgphKSBJZiB5b3UgaGF2ZSBhIHByb2dyYW0gY3Jhc2hpbmcgYXQgc3VjaCBhbiBlYXJseSBsb2FkZXIgcGhhc2UgdGhhdCB5b3UgY2FuJ3QKdXNlIHRoZSBXaW5lIGRlYnVnZ2VyIG5vcm1hbGx5LCBidXQgV2luZSBhbHJlYWR5IGV4ZWN1dGVzIHRoZSBwcm9ncmFtJ3MKc3RhcnQgY29kZSwgdGhlbiB5b3UgbWF5IHVzZSBhIHNwZWNpYWwgdHJpY2s6CllvdSBzaG91bGQgZG8gYQp3aW5lIC1kZWJ1Z21zZyArcmVsYXkgcHJvZ3JhbQp0byBnZXQgYSBsaXN0aW5nIG9mIHRoZSBmdW5jdGlvbnMgdGhlIHByb2dyYW0gY2FsbHMgaW4gaXRzIHN0YXJ0IGZ1bmN0aW9uLgpOb3cgeW91IGRvIGEKd2luZSAtZGVidWcgd2luZmlsZS5leGUKVGhpcyB3YXksIHlvdSBnZXQgaW50byBXaW5lLWRiZy4gTm93IHlvdSBjYW4gc2V0IGEgYnJlYWtwb2ludCBvbiBhbnkKZnVuY3Rpb24gdGhlIHByb2dyYW0gY2FsbHMgaW4gdGhlIHN0YXJ0IGZ1bmN0aW9uIGFuZCBqdXN0IHR5cGUgImMiIHRvIGJ5cGFzcwp0aGUgZXZlbnR1YWwgY2FsbHMgb2YgV2luZmlsZSB0byB0aGlzIGZ1bmN0aW9uIHVudGlsIHlvdSBhcmUgZmluYWxseSBhdCB0aGUKcGxhY2Ugd2hlcmUgdGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCBieSB0aGUgY3Jhc2hpbmcgc3RhcnQgZnVuY3Rpb24uCk5vdyB5b3UgY2FuIHByb2NlZWQgd2l0aCB5b3VyIGRlYnVnZ2luZyBhcyB1c3VhbC4KCgpiKSBJZiB5b3UgdHJ5IHRvIHJ1biBhIHByb2dyYW0gYW5kIGl0IHF1aXRzIGFmdGVyIHNob3dpbmcgYW4gZXJyb3IgbWVzc2FnZWJveCwKdGhlIHByb2JsZW0gY2FuIHVzdWFsbHkgYmUgaWRlbnRpZmllZCBpbiB0aGUgcmV0dXJuIHZhbHVlIG9mIG9uZSBvZiB0aGUKZnVuY3Rpb25zIGV4ZWN1dGVkIGJlZm9yZSBNZXNzYWdlQm94KCkuClRoYXQncyB3aHkgeW91IHNob3VsZCByZS1ydW4gdGhlIHByb2dyYW0gd2l0aCBlLmcuCndpbmUgLWRlYnVnbXNnICtyZWxheSA8cHJvZ3JhbSBuYW1lPiAmPnJlbG1zZwpUaGVuIGRvIGEgIm1vcmUgcmVsbXNnIiBhbmQgc2VhcmNoIGZvciB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIGEgY2FsbCB0byB0aGUgc3RyaW5nICJNRVNTQUdFQk9YIi4KVGhpcyBpcyBhIGxpbmUgbGlrZQpDYWxsIFVTRVIuMTogTUVTU0FHRUJPWCgweDAwMDAsMHgwMWZmMTI0NiAiUnVudGltZSBlcnJvciAyMTkgYXQgMDAwNDoxMDU2LiIsMHgwMDAwMDAwMCwweDEwMTApIHJldD0wMWY3OjIxNjAgZHM9MDFmZgoKSW4gbXkgZXhhbXBsZSB0aGUgbGluZXMgYmVmb3JlIHRoZSBjYWxsIHRvIE1lc3NhZ2VCb3goKSBsb29rIGxpa2UgdGhhdDoKCkNhbGwgS0VSTkVMLjk2OiBGUkVFTElCUkFSWSgweDAzNDcpIHJldD0wMWNmOjEwMzMgZHM9MDFmZgpDYWxsVG8xNihmdW5jPTAzM2Y6MDA3Mixkcz0wMWZmLDB4MDAwMCkKUmV0ICBLRVJORUwuOTY6IEZSRUVMSUJSQVJZKCkgcmV0dmFsPTB4MDAwMSByZXQ9MDFjZjoxMDMzIGRzPTAxZmYKQ2FsbCBLRVJORUwuOTY6IEZSRUVMSUJSQVJZKDB4MDM2ZikgcmV0PTAxY2Y6MTA0MyBkcz0wMWZmCkNhbGxUbzE2KGZ1bmM9MDM2NzowMDcyLGRzPTAxZmYsMHgwMDAwKQpSZXQgIEtFUk5FTC45NjogRlJFRUxJQlJBUlkoKSByZXR2YWw9MHgwMDAxIHJldD0wMWNmOjEwNDMgZHM9MDFmZgpDYWxsIEtFUk5FTC45NjogRlJFRUxJQlJBUlkoMHgwMzFmKSByZXQ9MDFjZjoxMDVjIGRzPTAxZmYKQ2FsbFRvMTYoZnVuYz0wMzE3OjAwNzIsZHM9MDFmZiwweDAwMDApClJldCAgS0VSTkVMLjk2OiBGUkVFTElCUkFSWSgpIHJldHZhbD0weDAwMDEgcmV0PTAxY2Y6MTA1YyBkcz0wMWZmCkNhbGwgVVNFUi4xNzE6IFdJTkhFTFAoMHgwMmFjLDB4MDFmZjA1YjQgIkNPTUVULkhMUCIsMHgwMDAyLDB4MDAwMDAwMDApIHJldD0wMWNmOjEwNzAgZHM9MDFmZgpDYWxsVG8xNihmdW5jPTAxMTc6MDA4MCxkcz0wMWZmKQpDYWxsIFdQUk9DUy4yNDogVEFTS19SRVNDSEVEVUxFKCkgcmV0PTAwYTc6MGEyZCBkcz0wMDJiClJldCAgV1BST0NTLjI0OiBUQVNLX1JFU0NIRURVTEUoKSByZXR2YWw9MHgwMDAwIHJldD0wMGE3OjBhMmQgZHM9MDAyYgpSZXQgIFVTRVIuMTcxOiBXSU5IRUxQKCkgcmV0dmFsPTB4MDAwMSByZXQ9MDFjZjoxMDcwIGRzPTAxZmYKQ2FsbCBLRVJORUwuOTY6IEZSRUVMSUJSQVJZKDB4MDFiZSkgcmV0PTAxZGY6M2UyOSBkcz0wMWZmClJldCAgS0VSTkVMLjk2OiBGUkVFTElCUkFSWSgpIHJldHZhbD0weDAwMDAgcmV0PTAxZGY6M2UyOSBkcz0wMWZmCkNhbGwgS0VSTkVMLjUyOiBGUkVFUFJPQ0lOU1RBTkNFKDB4MDJjZjAwYmEpIHJldD0wMWY3OjE0NjAgZHM9MDFmZgpSZXQgIEtFUk5FTC41MjogRlJFRVBST0NJTlNUQU5DRSgpIHJldHZhbD0weDAwMDEgcmV0PTAxZjc6MTQ2MCBkcz0wMWZmCkNhbGwgVVNFUi4xOiBNRVNTQUdFQk9YKDB4MDAwMCwweDAxZmYxMjQ2ICJSdW50aW1lIGVycm9yIDIxOSBhdCAwMDA0OjEwNTYuIiwweDAwMDAwMDAwLDB4MTAxMCkgcmV0PTAxZjc6MjE2MCBkcz0wMWZmCgpJIHRoaW5rIHRoYXQgdGhlIGNhbGwgdG8gTWVzc2FnZUJveCgpIGluIHRoaXMgZXhhbXBsZSBpcyBfbm90XyBjYXVzZWQgYnkgYSB3cm9uZyByZXN1bHQgdmFsdWUgb2Ygc29tZSBwcmV2aW91c2x5IGV4ZWN1dGVkIGZ1bmN0aW9uIChpdCdzIGhhcHBlbmluZyBxdWl0ZSBvZnRlbiBsaWtlIHRoYXQpLCBidXQgaW5zdGVhZCB0aGUgbWVzc2FnZWJveCBjb21wbGFpbnMgYWJvdXQgYSBydW50aW1lIGVycm9yIGF0IDB4MDAwNDoweDEwNTYuCkFzIHRoZSBzZWdtZW50IHZhbHVlIG9mIHRoZSBhZGRyZXNzIGlzIG9ubHkgIjQiLCBJIHRoaW5rIHRoYXQgdGhhdCBpcyBvbmx5IGFuIGludGVybmFsIHByb2dyYW0gdmFsdWUuIEJ1dCB0aGUgb2Zmc2V0IGFkZHJlc3MgcmV2ZWFscyBzb21ldGhpbmcgcXVpdGUgaW50ZXJlc3Rpbmc6Ck9mZnNldCAxMDU2IGlzIF92ZXJ5XyBjbG9zZSB0byB0aGUgcmV0dXJuIGFkZHJlc3Mgb2YgRlJFRUxJQlJBUlkoKToKCkNhbGwgS0VSTkVMLjk2OiBGUkVFTElCUkFSWSgweDAzMWYpIHJldD0wMWNmOjEwNWMgZHM9MDFmZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eClByb3ZpZGVkIHRoYXQgc2VnbWVudCAweDAwMDQgaXMgaW5kZWVkIHNlZ21lbnQgMHgxY2YsIHdlIG5vdyB3ZSBjYW4gdXNlIElEQSAoYXZhaWxhYmxlIGF0IGZ0cDovL2Z0cC51bmkta29lbG4uZGUvcGMvbXNkb3MvcHJvZ3JhbW1pbmcvYXNzZW1ibGVyL2lkYTM1YnguemlwKSB0bwpkaXNhc3NlbWJsZSB0aGUgcGFydCB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuIFdlIGp1c3QgaGF2ZSB0byBmaW5kIHRoZSBhZGRyZXNzIG9mCnRoZSBjYWxsIHRvIEZyZWVMaWJyYXJ5KCkuIFNvbWUgbGluZXMgYmVmb3JlIHRoYXQgdGhlIHJ1bnRpbWUgZXJyb3Igb2NjdXJyZWQuCkJ1dCBiZSBjYXJlZnVsICEgSW4gc29tZSBjYXNlcyB5b3UgZG9uJ3QgaGF2ZSB0byBkaXNhc3NlbWJsZSB0aGUgbWFpbiBwcm9ncmFtLCBidXQgaW5zdGVhZCBzb21lIERMTCBjYWxsZWQgYnkgaXQgaW4gb3JkZXIgdG8gZmluZCB0aGUgY29ycmVjdCBwbGFjZSB3aGVyZSB0aGUgcnVudGltZSBlcnJvciBvY2N1cnJlZC4gVGhhdCBjYW4gYmUgZGV0ZXJtaW5lZCBieSBmaW5kaW5nIHRoZSBvcmlnaW4gb2YgdGhlIHNlZ21lbnQgdmFsdWUgKGluIHRoaXMgY2FzZSAweDFjZikuCgpjKSBJZiB5b3UgaGF2ZSBjcmVhdGVkIGEgcmVsYXkgZmlsZSBvZiBzb21lIGNyYXNoaW5nIHByb2dyYW0gYW5kIHdhbnQgdG8gc2V0IGEKYnJlYWtwb2ludCBhdCBhIGNlcnRhaW4gbG9jYXRpb24gd2hpY2ggaXMgbm90IHlldCBhdmFpbGFibGUgYXMgdGhlCnByb2dyYW0gbG9hZHMgdGhlIGJyZWFrcG9pbnQncyBzZWdtZW50IGR1cmluZyBleGVjdXRpb24sCnlvdSBtYXkgc2V0IGEgYnJlYWtwb2ludCB0byBHZXRWZXJzaW9uMTYvMzIgYXMgdGhvc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQKdmVyeSBvZnRlbi4KVGhlbiBkbyBhICJjIiB1bnRpbCB5b3UgYXJlIGFibGUgdG8gc2V0IHRoaXMgYnJlYWtwb2ludCB3aXRob3V0IGVycm9yIG1lc3NhZ2UuCgpkKSBTb21lIHVzZWZ1bCBwcm9ncmFtczoKSURBOiBmdHA6Ly9mdHAudW5pLWtvZWxuLmRlL3BjL21zZG9zL3Byb2dyYW1taW5nL2Fzc2VtYmxlci9pZGEzNWJ4LnppcAoqVmVyeSogZ29vZCBET1MgZGlzYXNzZW1ibGVyICEgSXQncyBiYWRseSBuZWVkZWQgZm9yIGRlYnVnZ2luZyBXaW5lIHNvbWV0aW1lcy4KClhSQVk6IGZ0cDovL2Z0cC50aC1kYXJtc3RhZHQuZGUvcHViL21hY2hpbmVzL21zLWRvcy9TaW1UZWwvbXNkb3MvYXNtdXRpbC94cmF5MTUuemlwClRyYWNlcyBET1MgY2FsbHMgKEludCAyMWgsIERQTUksIC4uLikuIFVzZSBpdCB3aXRoIFdpbmRvd3MgdG8gY29ycmVjdApmaWxlIG1hbmFnZW1lbnQgcHJvYmxlbXMgZXRjLgoKcGVkdW1wOiBodHRwOi8vb2FrLm9ha2xhbmQuZWR1L3B1Yi9zaW10ZWxuZXQvd2luOTUvcHJvZy9wZWR1bXAuemlwCkR1bXBzIHRoZSBpbXBvcnRzIGFuZCBleHBvcnRzIG9mIGEgUEUgKFBvcnRhYmxlIEV4ZWN1dGFibGUpIERMTC4K