VQ0NCgAAAADJuIxjfWAAAOMAAAAAAAAAAAAAAAAAAAAADgAAAEAAAABziAIAAGQAWgBkAVoBZAKgAmUDZQRlAYMCoQFaBWQDZARsBloGZANkBGwHWgdlBmoIZAMZAGQFawJaCWUJcj5lBFoKZQZqC6AMZAahAXKIZANkBGwLWgtlC6ANoQBkBRkAZAMZAFoOZQ6gDGQHoQFycmQIWg9xjmUOoAxkCaEBcoJkCloPcY5kC1oPbgZlBmoLWg9kNGQNZA6EAVoQZDVkD2QQhAFaEWQ2ZBFkEoQBWhJkN2QTZBSEAVoTZDhkFmQXhAFaFGQ5ZBhkGYQBWhVkOmQaZBuEAVoWRwBkHGQdhABkHWUXgwNaGGQeZB+EAFoZZCBkIYQAWhpkImQjhABaG2QkZCWEAFocZQ9kCGsCkAFyjnoQZANkBGwdWh5lGlofVwBubgQAZSBrCpABcowBAAEAAQB6FGQDZCZsIW0iWiIBAGUbWh9XAG5CBABlIGsKkAFyhgEAAQABAHoQZANkBGwjWiRlHFofVwBuGgQAZSBrCpABcoABAAEAAQBlGVofWQBuAlgAWQBuAlgAWQBuAlgAZSVkJ2sCkAJyhGQoWiZkKVonZCpaKGUpZCtlBRYAgwEBAGUpZCyDAQEAZRhlJmUnZC1kLo0DWiplKEQAXRxaK2UpZC9lK2UsZSplK4MCZgIWAIMBAQCQAXHKZSlkMIMBAQBlGGUmZSeDAloqZShEAF0cWitlKWQvZStlLGUqZSuDAmYCFgCDAQEAkAFx/mUpZDGDAQEAZRhlJoMBWiplKEQAXRxaK2UpZC9lK2UsZSplK4MCZgIWAIMBAQCQAnEwZSlkMoMBAQBlGGUmZAxkM40CWiplKEQAXRxaK2UpZC9lK2UsZSplK4MCZgIWAIMBAQCQAnFmZARTACk7enlVdGlsaXRpZXMgZm9yIGRldGVybWluaW5nIGFwcGxpY2F0aW9uLXNwZWNpZmljIGRpcnMuCgpTZWUgPGh0dHA6Ly9naXRodWIuY29tL0FjdGl2ZVN0YXRlL2FwcGRpcnM+IGZvciBkZXRhaWxzIGFuZCB1c2FnZS4KKQPpAQAAAOkEAAAA6QMAAADaAS7pAAAAAE5yAwAAANoEamF2YdoHV2luZG93c9oFd2luMzJaA01hY9oGZGFyd2luWgZsaW51eDJGYwQAAAAAAAAAAAAAAAYAAAAGAAAAQwAAAHPGAAAAdABkAWsCcl58AWQCawhyFHwAfQF8A3IcZANwHmQEfQR0AWoCoAN0BHwEgwGhAX0FfAByrHwBZAVrCXJOdAFqAqAFfAV8AXwAoQN9BXGsdAFqAqAFfAV8AKECfQVuTnQAZAZrAnKGdAFqAqAGZAehAX0FfAByrHQBagKgBXwFfAChAn0FbiZ0AaAHZAh0AWoCoAZkCaEBoQJ9BXwAcqx0AWoCoAV8BXwAoQJ9BXwAcsJ8AnLCdAFqAqAFfAV8AqECfQV8BVMAKQphSgcAAFJldHVybiBmdWxsIHBhdGggdG8gdGhlIHVzZXItc3BlY2lmaWMgZGF0YSBkaXIgZm9yIHRoaXMgYXBwbGljYXRpb24uCgogICAgICAgICJhcHBuYW1lIiBpcyB0aGUgbmFtZSBvZiBhcHBsaWNhdGlvbi4KICAgICAgICAgICAgSWYgTm9uZSwganVzdCB0aGUgc3lzdGVtIGRpcmVjdG9yeSBpcyByZXR1cm5lZC4KICAgICAgICAiYXBwYXV0aG9yIiAob25seSB1c2VkIG9uIFdpbmRvd3MpIGlzIHRoZSBuYW1lIG9mIHRoZQogICAgICAgICAgICBhcHBhdXRob3Igb3IgZGlzdHJpYnV0aW5nIGJvZHkgZm9yIHRoaXMgYXBwbGljYXRpb24uIFR5cGljYWxseQogICAgICAgICAgICBpdCBpcyB0aGUgb3duaW5nIGNvbXBhbnkgbmFtZS4gVGhpcyBmYWxscyBiYWNrIHRvIGFwcG5hbWUuIFlvdSBtYXkKICAgICAgICAgICAgcGFzcyBGYWxzZSB0byBkaXNhYmxlIGl0LgogICAgICAgICJ2ZXJzaW9uIiBpcyBhbiBvcHRpb25hbCB2ZXJzaW9uIHBhdGggZWxlbWVudCB0byBhcHBlbmQgdG8gdGhlCiAgICAgICAgICAgIHBhdGguIFlvdSBtaWdodCB3YW50IHRvIHVzZSB0aGlzIGlmIHlvdSB3YW50IG11bHRpcGxlIHZlcnNpb25zCiAgICAgICAgICAgIG9mIHlvdXIgYXBwIHRvIGJlIGFibGUgdG8gcnVuIGluZGVwZW5kZW50bHkuIElmIHVzZWQsIHRoaXMKICAgICAgICAgICAgd291bGQgdHlwaWNhbGx5IGJlICI8bWFqb3I+LjxtaW5vcj4iLgogICAgICAgICAgICBPbmx5IGFwcGxpZWQgd2hlbiBhcHBuYW1lIGlzIHByZXNlbnQuCiAgICAgICAgInJvYW1pbmciIChib29sZWFuLCBkZWZhdWx0IEZhbHNlKSBjYW4gYmUgc2V0IFRydWUgdG8gdXNlIHRoZSBXaW5kb3dzCiAgICAgICAgICAgIHJvYW1pbmcgYXBwZGF0YSBkaXJlY3RvcnkuIFRoYXQgbWVhbnMgdGhhdCBmb3IgdXNlcnMgb24gYSBXaW5kb3dzCiAgICAgICAgICAgIG5ldHdvcmsgc2V0dXAgZm9yIHJvYW1pbmcgcHJvZmlsZXMsIHRoaXMgdXNlciBkYXRhIHdpbGwgYmUKICAgICAgICAgICAgc3luYydkIG9uIGxvZ2luLiBTZWUKICAgICAgICAgICAgPGh0dHA6Ly90ZWNobmV0Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9jYzc2NjQ4OShXUy4xMCkuYXNweD4KICAgICAgICAgICAgZm9yIGEgZGlzY3Vzc2lvbiBvZiBpc3N1ZXMuCgogICAgVHlwaWNhbCB1c2VyIGRhdGEgZGlyZWN0b3JpZXMgYXJlOgogICAgICAgIE1hYyBPUyBYOiAgICAgICAgICAgICAgIH4vTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0LzxBcHBOYW1lPgogICAgICAgIFVuaXg6ICAgICAgICAgICAgICAgICAgIH4vLmxvY2FsL3NoYXJlLzxBcHBOYW1lPiAgICAjIG9yIGluICRYREdfREFUQV9IT01FLCBpZiBkZWZpbmVkCiAgICAgICAgV2luIFhQIChub3Qgcm9hbWluZyk6ICAgQzpcRG9jdW1lbnRzIGFuZCBTZXR0aW5nc1w8dXNlcm5hbWU+XEFwcGxpY2F0aW9uIERhdGFcPEFwcEF1dGhvcj5cPEFwcE5hbWU+CiAgICAgICAgV2luIFhQIChyb2FtaW5nKTogICAgICAgQzpcRG9jdW1lbnRzIGFuZCBTZXR0aW5nc1w8dXNlcm5hbWU+XExvY2FsIFNldHRpbmdzXEFwcGxpY2F0aW9uIERhdGFcPEFwcEF1dGhvcj5cPEFwcE5hbWU+CiAgICAgICAgV2luIDcgIChub3Qgcm9hbWluZyk6ICAgQzpcVXNlcnNcPHVzZXJuYW1lPlxBcHBEYXRhXExvY2FsXDxBcHBBdXRob3I+XDxBcHBOYW1lPgogICAgICAgIFdpbiA3ICAocm9hbWluZyk6ICAgICAgIEM6XFVzZXJzXDx1c2VybmFtZT5cQXBwRGF0YVxSb2FtaW5nXDxBcHBBdXRob3I+XDxBcHBOYW1lPgoKICAgIEZvciBVbml4LCB3ZSBmb2xsb3cgdGhlIFhERyBzcGVjIGFuZCBzdXBwb3J0ICRYREdfREFUQV9IT01FLgogICAgVGhhdCBtZWFucywgYnkgZGVmYXVsdCAifi8ubG9jYWwvc2hhcmUvPEFwcE5hbWU+Ii4KICAgIHIIAAAATtoNQ1NJRExfQVBQREFUQdoTQ1NJRExfTE9DQUxfQVBQREFUQUZyCQAAAHoefi9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQv2g1YREdfREFUQV9IT01Feg5+Ly5sb2NhbC9zaGFyZakI2gZzeXN0ZW3aAm9z2gRwYXRo2ghub3JtcGF0aNoPX2dldF93aW5fZm9sZGVy2gRqb2lu2gpleHBhbmR1c2Vy2gZnZXRlbnYpBtoHYXBwbmFtZdoJYXBwYXV0aG9y2gd2ZXJzaW9u2gdyb2FtaW5n2gVjb25zdHIQAAAAqQByGwAAAPpBL3RtcC9waXAtdW5wYWNrZWQtd2hlZWwteDRjNGJteTIvcGtnX3Jlc291cmNlcy9fdmVuZG9yL2FwcGRpcnMucHnaDXVzZXJfZGF0YV9kaXItAAAAcyYAAAAAIAgBCAEEAQwBEAEEAQgBEgIQAQgBDAEEARACFAEEAQ4BCAEOAXIdAAAAYwQAAAAAAAAAAAAAAAYAAAAHAAAAAwAAAHMMAQAAdABkAWsCclJ8AWQCawhyFIgAfQF0AWoCoAN0BGQDgwGhAX0EiABy7nwBZARrCXJCdAFqAqAFfAR8AYgAoQN9BHHudAFqAqAFfASIAKECfQRunHQAZAVrAnJ6dAFqAqAGZAahAX0EiABy7nQBagKgBXwEiAChAn0EbnR0AaAHZAd0AWoIoAVkCGQJZwKhAaECfQRkCmQLhAB8BKAJdAFqCKEBRACDAX0FiABy0HwCcr50AWoCoAWIAHwCoQKJAIcAZgFkDGQLhAh8BUQAgwF9BXwDcuJ0AWoIoAV8BaEBfQRuCHwFZA0ZAH0EfARTAIgAkAFyCHwCkAFyCHQBagKgBXwEfAKhAn0EfARTACkOYWkGAABSZXR1cm4gZnVsbCBwYXRoIHRvIHRoZSB1c2VyLXNoYXJlZCBkYXRhIGRpciBmb3IgdGhpcyBhcHBsaWNhdGlvbi4KCiAgICAgICAgImFwcG5hbWUiIGlzIHRoZSBuYW1lIG9mIGFwcGxpY2F0aW9uLgogICAgICAgICAgICBJZiBOb25lLCBqdXN0IHRoZSBzeXN0ZW0gZGlyZWN0b3J5IGlzIHJldHVybmVkLgogICAgICAgICJhcHBhdXRob3IiIChvbmx5IHVzZWQgb24gV2luZG93cykgaXMgdGhlIG5hbWUgb2YgdGhlCiAgICAgICAgICAgIGFwcGF1dGhvciBvciBkaXN0cmlidXRpbmcgYm9keSBmb3IgdGhpcyBhcHBsaWNhdGlvbi4gVHlwaWNhbGx5CiAgICAgICAgICAgIGl0IGlzIHRoZSBvd25pbmcgY29tcGFueSBuYW1lLiBUaGlzIGZhbGxzIGJhY2sgdG8gYXBwbmFtZS4gWW91IG1heQogICAgICAgICAgICBwYXNzIEZhbHNlIHRvIGRpc2FibGUgaXQuCiAgICAgICAgInZlcnNpb24iIGlzIGFuIG9wdGlvbmFsIHZlcnNpb24gcGF0aCBlbGVtZW50IHRvIGFwcGVuZCB0byB0aGUKICAgICAgICAgICAgcGF0aC4gWW91IG1pZ2h0IHdhbnQgdG8gdXNlIHRoaXMgaWYgeW91IHdhbnQgbXVsdGlwbGUgdmVyc2lvbnMKICAgICAgICAgICAgb2YgeW91ciBhcHAgdG8gYmUgYWJsZSB0byBydW4gaW5kZXBlbmRlbnRseS4gSWYgdXNlZCwgdGhpcwogICAgICAgICAgICB3b3VsZCB0eXBpY2FsbHkgYmUgIjxtYWpvcj4uPG1pbm9yPiIuCiAgICAgICAgICAgIE9ubHkgYXBwbGllZCB3aGVuIGFwcG5hbWUgaXMgcHJlc2VudC4KICAgICAgICAibXVsdGlwYXRoIiBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgb25seSBhcHBsaWNhYmxlIHRvICpuaXgKICAgICAgICAgICAgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVudGlyZSBsaXN0IG9mIGRhdGEgZGlycyBzaG91bGQgYmUKICAgICAgICAgICAgcmV0dXJuZWQuIEJ5IGRlZmF1bHQsIHRoZSBmaXJzdCBpdGVtIGZyb20gWERHX0RBVEFfRElSUyBpcwogICAgICAgICAgICByZXR1cm5lZCwgb3IgJy91c3IvbG9jYWwvc2hhcmUvPEFwcE5hbWU+JywKICAgICAgICAgICAgaWYgWERHX0RBVEFfRElSUyBpcyBub3Qgc2V0CgogICAgVHlwaWNhbCBzaXRlIGRhdGEgZGlyZWN0b3JpZXMgYXJlOgogICAgICAgIE1hYyBPUyBYOiAgIC9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvPEFwcE5hbWU+CiAgICAgICAgVW5peDogICAgICAgL3Vzci9sb2NhbC9zaGFyZS88QXBwTmFtZT4gb3IgL3Vzci9zaGFyZS88QXBwTmFtZT4KICAgICAgICBXaW4gWFA6ICAgICBDOlxEb2N1bWVudHMgYW5kIFNldHRpbmdzXEFsbCBVc2Vyc1xBcHBsaWNhdGlvbiBEYXRhXDxBcHBBdXRob3I+XDxBcHBOYW1lPgogICAgICAgIFZpc3RhOiAgICAgIChGYWlsISAiQzpcUHJvZ3JhbURhdGEiIGlzIGEgaGlkZGVuICpzeXN0ZW0qIGRpcmVjdG9yeSBvbiBWaXN0YS4pCiAgICAgICAgV2luIDc6ICAgICAgQzpcUHJvZ3JhbURhdGFcPEFwcEF1dGhvcj5cPEFwcE5hbWU+ICAgIyBIaWRkZW4sIGJ1dCB3cml0ZWFibGUgb24gV2luIDcuCgogICAgRm9yIFVuaXgsIHRoaXMgaXMgdXNpbmcgdGhlICRYREdfREFUQV9ESVJTWzBdIGRlZmF1bHQuCgogICAgV0FSTklORzogRG8gbm90IHVzZSB0aGlzIG9uIFdpbmRvd3MuIFNlZSB0aGUgVmlzdGEtRmFpbCBub3RlIGFib3ZlIGZvciB3aHkuCiAgICByCAAAAE7aFENTSURMX0NPTU1PTl9BUFBEQVRBRnIJAAAAehwvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J02g1YREdfREFUQV9ESVJTehAvdXNyL2xvY2FsL3NoYXJlegovdXNyL3NoYXJlYwEAAAAAAAAAAAAAAAIAAAAHAAAAUwAAAHMgAAAAZwB8AF0YfQF0AGoBoAJ8AaADdABqBKEBoQGRAnEEUwByGwAAAKkFcg8AAAByEAAAAHIUAAAA2gZyc3RyaXDaA3NlcKkC2gIuMNoBeHIbAAAAchsAAAByHAAAANoKPGxpc3Rjb21wPpUAAABzBAAAAAYAAgB6IXNpdGVfZGF0YV9kaXIuPGxvY2Fscz4uPGxpc3Rjb21wPmMBAAAAAAAAAAAAAAACAAAABgAAABMAAABzHAAAAGcAfABdFH0BdABqAaACfAGIAGcCoQGRAnEEUwByGwAAAKkDcg8AAAByIgAAAHITAAAAciMAAACpAXIWAAAAchsAAAByHAAAAHImAAAAmQAAAHMEAAAABgACAHIFAAAAKQpyDgAAAHIPAAAAchAAAAByEQAAAHISAAAAchMAAAByFAAAAHIVAAAA2gdwYXRoc2Vw2gVzcGxpdKkGchYAAAByFwAAAHIYAAAA2gltdWx0aXBhdGhyEAAAANoIcGF0aGxpc3RyGwAAAHIoAAAAchwAAADaDXNpdGVfZGF0YV9kaXJkAAAAczYAAAAAHwgBCAEEARABBAEIARICEAEIAQwBBAEQBAYBDv8EAhYBBAEEAQ4BEgIEAQ4CCAEEAgwBDgFyLgAAAGMEAAAAAAAAAAAAAAAFAAAABgAAAEMAAABzWAAAAHQAZAFrBnIYdAF8AHwBZAJ8A4MEfQRuJnQCoANkA3QCagSgBWQEoQGhAn0EfAByPnQCagSgBnwEfAChAn0EfAByVHwCclR0AmoEoAZ8BHwCoQJ9BHwEUwApBWHUBQAAUmV0dXJuIGZ1bGwgcGF0aCB0byB0aGUgdXNlci1zcGVjaWZpYyBjb25maWcgZGlyIGZvciB0aGlzIGFwcGxpY2F0aW9uLgoKICAgICAgICAiYXBwbmFtZSIgaXMgdGhlIG5hbWUgb2YgYXBwbGljYXRpb24uCiAgICAgICAgICAgIElmIE5vbmUsIGp1c3QgdGhlIHN5c3RlbSBkaXJlY3RvcnkgaXMgcmV0dXJuZWQuCiAgICAgICAgImFwcGF1dGhvciIgKG9ubHkgdXNlZCBvbiBXaW5kb3dzKSBpcyB0aGUgbmFtZSBvZiB0aGUKICAgICAgICAgICAgYXBwYXV0aG9yIG9yIGRpc3RyaWJ1dGluZyBib2R5IGZvciB0aGlzIGFwcGxpY2F0aW9uLiBUeXBpY2FsbHkKICAgICAgICAgICAgaXQgaXMgdGhlIG93bmluZyBjb21wYW55IG5hbWUuIFRoaXMgZmFsbHMgYmFjayB0byBhcHBuYW1lLiBZb3UgbWF5CiAgICAgICAgICAgIHBhc3MgRmFsc2UgdG8gZGlzYWJsZSBpdC4KICAgICAgICAidmVyc2lvbiIgaXMgYW4gb3B0aW9uYWwgdmVyc2lvbiBwYXRoIGVsZW1lbnQgdG8gYXBwZW5kIHRvIHRoZQogICAgICAgICAgICBwYXRoLiBZb3UgbWlnaHQgd2FudCB0byB1c2UgdGhpcyBpZiB5b3Ugd2FudCBtdWx0aXBsZSB2ZXJzaW9ucwogICAgICAgICAgICBvZiB5b3VyIGFwcCB0byBiZSBhYmxlIHRvIHJ1biBpbmRlcGVuZGVudGx5LiBJZiB1c2VkLCB0aGlzCiAgICAgICAgICAgIHdvdWxkIHR5cGljYWxseSBiZSAiPG1ham9yPi48bWlub3I+Ii4KICAgICAgICAgICAgT25seSBhcHBsaWVkIHdoZW4gYXBwbmFtZSBpcyBwcmVzZW50LgogICAgICAgICJyb2FtaW5nIiAoYm9vbGVhbiwgZGVmYXVsdCBGYWxzZSkgY2FuIGJlIHNldCBUcnVlIHRvIHVzZSB0aGUgV2luZG93cwogICAgICAgICAgICByb2FtaW5nIGFwcGRhdGEgZGlyZWN0b3J5LiBUaGF0IG1lYW5zIHRoYXQgZm9yIHVzZXJzIG9uIGEgV2luZG93cwogICAgICAgICAgICBuZXR3b3JrIHNldHVwIGZvciByb2FtaW5nIHByb2ZpbGVzLCB0aGlzIHVzZXIgZGF0YSB3aWxsIGJlCiAgICAgICAgICAgIHN5bmMnZCBvbiBsb2dpbi4gU2VlCiAgICAgICAgICAgIDxodHRwOi8vdGVjaG5ldC5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvY2M3NjY0ODkoV1MuMTApLmFzcHg+CiAgICAgICAgICAgIGZvciBhIGRpc2N1c3Npb24gb2YgaXNzdWVzLgoKICAgIFR5cGljYWwgdXNlciBjb25maWcgZGlyZWN0b3JpZXMgYXJlOgogICAgICAgIE1hYyBPUyBYOiAgICAgICAgICAgICAgIHNhbWUgYXMgdXNlcl9kYXRhX2RpcgogICAgICAgIFVuaXg6ICAgICAgICAgICAgICAgICAgIH4vLmNvbmZpZy88QXBwTmFtZT4gICAgICMgb3IgaW4gJFhER19DT05GSUdfSE9NRSwgaWYgZGVmaW5lZAogICAgICAgIFdpbiAqOiAgICAgICAgICAgICAgICAgIHNhbWUgYXMgdXNlcl9kYXRhX2RpcgoKICAgIEZvciBVbml4LCB3ZSBmb2xsb3cgdGhlIFhERyBzcGVjIGFuZCBzdXBwb3J0ICRYREdfQ09ORklHX0hPTUUuCiAgICBUaGF0IG1lYW5zLCBieSBkZWZhdWx0ICJ+Ly5jb25maWcvPEFwcE5hbWU+Ii4KICAgIKkCcggAAAByCQAAAE7aD1hER19DT05GSUdfSE9NRXoJfi8uY29uZmlnqQdyDgAAAHIdAAAAcg8AAAByFQAAAHIQAAAAchQAAAByEwAAAKkFchYAAAByFwAAAHIYAAAAchkAAAByEAAAAHIbAAAAchsAAAByHAAAANoPdXNlcl9jb25maWdfZGlypgAAAHMQAAAAAB0IARACFAEEAQ4BCAEOAXIzAAAAYwQAAAAAAAAAAAAAAAYAAAAEAAAAAwAAAHOSAAAAdABkAWsGcip0AYgAfAGDAn0EiAByjnwCco50AmoDoAR8BHwCoQJ9BG5kdAKgBWQCZAOhAn0EZARkBYQAfASgBnQCagehAUQAgwF9BYgAcnR8AnJidAJqA6AEiAB8AqECiQCHAGYBZAZkBYQIfAVEAIMBfQV8A3KGdAJqB6AEfAWhAX0Ebgh8BWQHGQB9BHwEUwApCGEHBgAAUmV0dXJuIGZ1bGwgcGF0aCB0byB0aGUgdXNlci1zaGFyZWQgZGF0YSBkaXIgZm9yIHRoaXMgYXBwbGljYXRpb24uCgogICAgICAgICJhcHBuYW1lIiBpcyB0aGUgbmFtZSBvZiBhcHBsaWNhdGlvbi4KICAgICAgICAgICAgSWYgTm9uZSwganVzdCB0aGUgc3lzdGVtIGRpcmVjdG9yeSBpcyByZXR1cm5lZC4KICAgICAgICAiYXBwYXV0aG9yIiAob25seSB1c2VkIG9uIFdpbmRvd3MpIGlzIHRoZSBuYW1lIG9mIHRoZQogICAgICAgICAgICBhcHBhdXRob3Igb3IgZGlzdHJpYnV0aW5nIGJvZHkgZm9yIHRoaXMgYXBwbGljYXRpb24uIFR5cGljYWxseQogICAgICAgICAgICBpdCBpcyB0aGUgb3duaW5nIGNvbXBhbnkgbmFtZS4gVGhpcyBmYWxscyBiYWNrIHRvIGFwcG5hbWUuIFlvdSBtYXkKICAgICAgICAgICAgcGFzcyBGYWxzZSB0byBkaXNhYmxlIGl0LgogICAgICAgICJ2ZXJzaW9uIiBpcyBhbiBvcHRpb25hbCB2ZXJzaW9uIHBhdGggZWxlbWVudCB0byBhcHBlbmQgdG8gdGhlCiAgICAgICAgICAgIHBhdGguIFlvdSBtaWdodCB3YW50IHRvIHVzZSB0aGlzIGlmIHlvdSB3YW50IG11bHRpcGxlIHZlcnNpb25zCiAgICAgICAgICAgIG9mIHlvdXIgYXBwIHRvIGJlIGFibGUgdG8gcnVuIGluZGVwZW5kZW50bHkuIElmIHVzZWQsIHRoaXMKICAgICAgICAgICAgd291bGQgdHlwaWNhbGx5IGJlICI8bWFqb3I+LjxtaW5vcj4iLgogICAgICAgICAgICBPbmx5IGFwcGxpZWQgd2hlbiBhcHBuYW1lIGlzIHByZXNlbnQuCiAgICAgICAgIm11bHRpcGF0aCIgaXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIG9ubHkgYXBwbGljYWJsZSB0byAqbml4CiAgICAgICAgICAgIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbnRpcmUgbGlzdCBvZiBjb25maWcgZGlycyBzaG91bGQgYmUKICAgICAgICAgICAgcmV0dXJuZWQuIEJ5IGRlZmF1bHQsIHRoZSBmaXJzdCBpdGVtIGZyb20gWERHX0NPTkZJR19ESVJTIGlzCiAgICAgICAgICAgIHJldHVybmVkLCBvciAnL2V0Yy94ZGcvPEFwcE5hbWU+JywgaWYgWERHX0NPTkZJR19ESVJTIGlzIG5vdCBzZXQKCiAgICBUeXBpY2FsIHNpdGUgY29uZmlnIGRpcmVjdG9yaWVzIGFyZToKICAgICAgICBNYWMgT1MgWDogICBzYW1lIGFzIHNpdGVfZGF0YV9kaXIKICAgICAgICBVbml4OiAgICAgICAvZXRjL3hkZy88QXBwTmFtZT4gb3IgJFhER19DT05GSUdfRElSU1tpXS88QXBwTmFtZT4gZm9yIGVhY2ggdmFsdWUgaW4KICAgICAgICAgICAgICAgICAgICAkWERHX0NPTkZJR19ESVJTCiAgICAgICAgV2luICo6ICAgICAgc2FtZSBhcyBzaXRlX2RhdGFfZGlyCiAgICAgICAgVmlzdGE6ICAgICAgKEZhaWwhICJDOlxQcm9ncmFtRGF0YSIgaXMgYSBoaWRkZW4gKnN5c3RlbSogZGlyZWN0b3J5IG9uIFZpc3RhLikKCiAgICBGb3IgVW5peCwgdGhpcyBpcyB1c2luZyB0aGUgJFhER19DT05GSUdfRElSU1swXSBkZWZhdWx0LCBpZiBtdWx0aXBhdGg9RmFsc2UKCiAgICBXQVJOSU5HOiBEbyBub3QgdXNlIHRoaXMgb24gV2luZG93cy4gU2VlIHRoZSBWaXN0YS1GYWlsIG5vdGUgYWJvdmUgZm9yIHdoeS4KICAgIHIvAAAA2g9YREdfQ09ORklHX0RJUlN6CC9ldGMveGRnYwEAAAAAAAAAAAAAAAIAAAAHAAAAUwAAAHMgAAAAZwB8AF0YfQF0AGoBoAJ8AaADdABqBKEBoQGRAnEEUwByGwAAAHIgAAAAciMAAAByGwAAAHIbAAAAchwAAAByJgAAAPQAAABzBAAAAAYAAgB6I3NpdGVfY29uZmlnX2Rpci48bG9jYWxzPi48bGlzdGNvbXA+YwEAAAAAAAAAAAAAAAIAAAAGAAAAEwAAAHMcAAAAZwB8AF0UfQF0AGoBoAJ8AYgAZwKhAZECcQRTAHIbAAAAcicAAAByIwAAAHIoAAAAchsAAAByHAAAAHImAAAA+AAAAHMEAAAABgACAHIFAAAAKQhyDgAAAHIuAAAAcg8AAAByEAAAAHITAAAAchUAAAByKgAAAHIpAAAAcisAAAByGwAAAHIoAAAAchwAAADaD3NpdGVfY29uZmlnX2Rpcs4AAABzHAAAAAAeCAEKAQgBEAQMARYBBAEEAQ4BEgIEAQ4CCAFyNQAAAFRjBAAAAAAAAAAAAAAABQAAAAYAAABDAAAAc8wAAAB0AGQBawJyZHwBZAJrCHIUfAB9AXQBagKgA3QEZAODAaEBfQR8AHKyfAFkBGsJckJ0AWoCoAV8BHwBfAChA30Ebg50AWoCoAV8BHwAoQJ9BHwDcrJ0AWoCoAV8BGQFoQJ9BG5OdABkBmsCcox0AWoCoAZkB6EBfQR8AHKydAFqAqAFfAR8AKECfQRuJnQBoAdkCHQBagKgBmQJoQGhAn0EfABysnQBagKgBXwEfAChAn0EfAByyHwCcsh0AWoCoAV8BHwCoQJ9BHwEUwApCmEEBwAAUmV0dXJuIGZ1bGwgcGF0aCB0byB0aGUgdXNlci1zcGVjaWZpYyBjYWNoZSBkaXIgZm9yIHRoaXMgYXBwbGljYXRpb24uCgogICAgICAgICJhcHBuYW1lIiBpcyB0aGUgbmFtZSBvZiBhcHBsaWNhdGlvbi4KICAgICAgICAgICAgSWYgTm9uZSwganVzdCB0aGUgc3lzdGVtIGRpcmVjdG9yeSBpcyByZXR1cm5lZC4KICAgICAgICAiYXBwYXV0aG9yIiAob25seSB1c2VkIG9uIFdpbmRvd3MpIGlzIHRoZSBuYW1lIG9mIHRoZQogICAgICAgICAgICBhcHBhdXRob3Igb3IgZGlzdHJpYnV0aW5nIGJvZHkgZm9yIHRoaXMgYXBwbGljYXRpb24uIFR5cGljYWxseQogICAgICAgICAgICBpdCBpcyB0aGUgb3duaW5nIGNvbXBhbnkgbmFtZS4gVGhpcyBmYWxscyBiYWNrIHRvIGFwcG5hbWUuIFlvdSBtYXkKICAgICAgICAgICAgcGFzcyBGYWxzZSB0byBkaXNhYmxlIGl0LgogICAgICAgICJ2ZXJzaW9uIiBpcyBhbiBvcHRpb25hbCB2ZXJzaW9uIHBhdGggZWxlbWVudCB0byBhcHBlbmQgdG8gdGhlCiAgICAgICAgICAgIHBhdGguIFlvdSBtaWdodCB3YW50IHRvIHVzZSB0aGlzIGlmIHlvdSB3YW50IG11bHRpcGxlIHZlcnNpb25zCiAgICAgICAgICAgIG9mIHlvdXIgYXBwIHRvIGJlIGFibGUgdG8gcnVuIGluZGVwZW5kZW50bHkuIElmIHVzZWQsIHRoaXMKICAgICAgICAgICAgd291bGQgdHlwaWNhbGx5IGJlICI8bWFqb3I+LjxtaW5vcj4iLgogICAgICAgICAgICBPbmx5IGFwcGxpZWQgd2hlbiBhcHBuYW1lIGlzIHByZXNlbnQuCiAgICAgICAgIm9waW5pb24iIChib29sZWFuKSBjYW4gYmUgRmFsc2UgdG8gZGlzYWJsZSB0aGUgYXBwZW5kaW5nIG9mCiAgICAgICAgICAgICJDYWNoZSIgdG8gdGhlIGJhc2UgYXBwIGRhdGEgZGlyIGZvciBXaW5kb3dzLiBTZWUKICAgICAgICAgICAgZGlzY3Vzc2lvbiBiZWxvdy4KCiAgICBUeXBpY2FsIHVzZXIgY2FjaGUgZGlyZWN0b3JpZXMgYXJlOgogICAgICAgIE1hYyBPUyBYOiAgIH4vTGlicmFyeS9DYWNoZXMvPEFwcE5hbWU+CiAgICAgICAgVW5peDogICAgICAgfi8uY2FjaGUvPEFwcE5hbWU+IChYREcgZGVmYXVsdCkKICAgICAgICBXaW4gWFA6ICAgICBDOlxEb2N1bWVudHMgYW5kIFNldHRpbmdzXDx1c2VybmFtZT5cTG9jYWwgU2V0dGluZ3NcQXBwbGljYXRpb24gRGF0YVw8QXBwQXV0aG9yPlw8QXBwTmFtZT5cQ2FjaGUKICAgICAgICBWaXN0YTogICAgICBDOlxVc2Vyc1w8dXNlcm5hbWU+XEFwcERhdGFcTG9jYWxcPEFwcEF1dGhvcj5cPEFwcE5hbWU+XENhY2hlCgogICAgT24gV2luZG93cyB0aGUgb25seSBzdWdnZXN0aW9uIGluIHRoZSBNU0ROIGRvY3MgaXMgdGhhdCBsb2NhbCBzZXR0aW5ncyBnbyBpbgogICAgdGhlIGBDU0lETF9MT0NBTF9BUFBEQVRBYCBkaXJlY3RvcnkuIFRoaXMgaXMgaWRlbnRpY2FsIHRvIHRoZSBub24tcm9hbWluZwogICAgYXBwIGRhdGEgZGlyICh0aGUgZGVmYXVsdCByZXR1cm5lZCBieSBgdXNlcl9kYXRhX2RpcmAgYWJvdmUpLiBBcHBzIHR5cGljYWxseQogICAgcHV0IGNhY2hlIGRhdGEgc29tZXdoZXJlICp1bmRlciogdGhlIGdpdmVuIGRpciBoZXJlLiBTb21lIGV4YW1wbGVzOgogICAgICAgIC4uLlxNb3ppbGxhXEZpcmVmb3hcUHJvZmlsZXNcPFByb2ZpbGVOYW1lPlxDYWNoZQogICAgICAgIC4uLlxBY21lXFN1cGVyQXBwXENhY2hlXDEuMAogICAgT1BJTklPTjogVGhpcyBmdW5jdGlvbiBhcHBlbmRzICJDYWNoZSIgdG8gdGhlIGBDU0lETF9MT0NBTF9BUFBEQVRBYCB2YWx1ZS4KICAgIFRoaXMgY2FuIGJlIGRpc2FibGVkIHdpdGggdGhlIGBvcGluaW9uPUZhbHNlYCBvcHRpb24uCiAgICByCAAAAE5yCwAAAEbaBUNhY2hlcgkAAAB6EH4vTGlicmFyeS9DYWNoZXPaDlhER19DQUNIRV9IT01Fegh+Ly5jYWNoZXINAAAAqQVyFgAAAHIXAAAAchgAAADaB29waW5pb25yEAAAAHIbAAAAchsAAAByHAAAANoOdXNlcl9jYWNoZV9kaXIBAQAAcygAAAAAIQgBCAEEARABBAEIARICDgEEARABCAEMAQQBEAIUAQQBDgEIAQ4BcjoAAABjBAAAAAAAAAAAAAAABQAAAAYAAABDAAAAc1gAAAB0AGQBawZyGHQBfAB8AWQCfAODBH0EbiZ0AqADZAN0AmoEoAVkBKEBoQJ9BHwAcj50AmoEoAZ8BHwAoQJ9BHwAclR8AnJUdAJqBKAGfAR8AqECfQR8BFMAKQVhEwYAAFJldHVybiBmdWxsIHBhdGggdG8gdGhlIHVzZXItc3BlY2lmaWMgc3RhdGUgZGlyIGZvciB0aGlzIGFwcGxpY2F0aW9uLgoKICAgICAgICAiYXBwbmFtZSIgaXMgdGhlIG5hbWUgb2YgYXBwbGljYXRpb24uCiAgICAgICAgICAgIElmIE5vbmUsIGp1c3QgdGhlIHN5c3RlbSBkaXJlY3RvcnkgaXMgcmV0dXJuZWQuCiAgICAgICAgImFwcGF1dGhvciIgKG9ubHkgdXNlZCBvbiBXaW5kb3dzKSBpcyB0aGUgbmFtZSBvZiB0aGUKICAgICAgICAgICAgYXBwYXV0aG9yIG9yIGRpc3RyaWJ1dGluZyBib2R5IGZvciB0aGlzIGFwcGxpY2F0aW9uLiBUeXBpY2FsbHkKICAgICAgICAgICAgaXQgaXMgdGhlIG93bmluZyBjb21wYW55IG5hbWUuIFRoaXMgZmFsbHMgYmFjayB0byBhcHBuYW1lLiBZb3UgbWF5CiAgICAgICAgICAgIHBhc3MgRmFsc2UgdG8gZGlzYWJsZSBpdC4KICAgICAgICAidmVyc2lvbiIgaXMgYW4gb3B0aW9uYWwgdmVyc2lvbiBwYXRoIGVsZW1lbnQgdG8gYXBwZW5kIHRvIHRoZQogICAgICAgICAgICBwYXRoLiBZb3UgbWlnaHQgd2FudCB0byB1c2UgdGhpcyBpZiB5b3Ugd2FudCBtdWx0aXBsZSB2ZXJzaW9ucwogICAgICAgICAgICBvZiB5b3VyIGFwcCB0byBiZSBhYmxlIHRvIHJ1biBpbmRlcGVuZGVudGx5LiBJZiB1c2VkLCB0aGlzCiAgICAgICAgICAgIHdvdWxkIHR5cGljYWxseSBiZSAiPG1ham9yPi48bWlub3I+Ii4KICAgICAgICAgICAgT25seSBhcHBsaWVkIHdoZW4gYXBwbmFtZSBpcyBwcmVzZW50LgogICAgICAgICJyb2FtaW5nIiAoYm9vbGVhbiwgZGVmYXVsdCBGYWxzZSkgY2FuIGJlIHNldCBUcnVlIHRvIHVzZSB0aGUgV2luZG93cwogICAgICAgICAgICByb2FtaW5nIGFwcGRhdGEgZGlyZWN0b3J5LiBUaGF0IG1lYW5zIHRoYXQgZm9yIHVzZXJzIG9uIGEgV2luZG93cwogICAgICAgICAgICBuZXR3b3JrIHNldHVwIGZvciByb2FtaW5nIHByb2ZpbGVzLCB0aGlzIHVzZXIgZGF0YSB3aWxsIGJlCiAgICAgICAgICAgIHN5bmMnZCBvbiBsb2dpbi4gU2VlCiAgICAgICAgICAgIDxodHRwOi8vdGVjaG5ldC5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvY2M3NjY0ODkoV1MuMTApLmFzcHg+CiAgICAgICAgICAgIGZvciBhIGRpc2N1c3Npb24gb2YgaXNzdWVzLgoKICAgIFR5cGljYWwgdXNlciBzdGF0ZSBkaXJlY3RvcmllcyBhcmU6CiAgICAgICAgTWFjIE9TIFg6ICBzYW1lIGFzIHVzZXJfZGF0YV9kaXIKICAgICAgICBVbml4OiAgICAgIH4vLmxvY2FsL3N0YXRlLzxBcHBOYW1lPiAgICMgb3IgaW4gJFhER19TVEFURV9IT01FLCBpZiBkZWZpbmVkCiAgICAgICAgV2luICo6ICAgICBzYW1lIGFzIHVzZXJfZGF0YV9kaXIKCiAgICBGb3IgVW5peCwgd2UgZm9sbG93IHRoaXMgRGViaWFuIHByb3Bvc2FsIDxodHRwczovL3dpa2kuZGViaWFuLm9yZy9YREdCYXNlRGlyZWN0b3J5U3BlY2lmaWNhdGlvbiNzdGF0ZT4KICAgIHRvIGV4dGVuZCB0aGUgWERHIHNwZWMgYW5kIHN1cHBvcnQgJFhER19TVEFURV9IT01FLgoKICAgIFRoYXQgbWVhbnMsIGJ5IGRlZmF1bHQgIn4vLmxvY2FsL3N0YXRlLzxBcHBOYW1lPiIuCiAgICByLwAAAE7aDlhER19TVEFURV9IT01Feg5+Ly5sb2NhbC9zdGF0ZXIxAAAAcjIAAAByGwAAAHIbAAAAchwAAADaDnVzZXJfc3RhdGVfZGlyOgEAAHMQAAAAAB8IARACFAEEAQ4BCAEOAXI8AAAAYwQAAAAAAAAAAAAAAAUAAAAFAAAAQwAAAHOIAAAAdABkAWsCciB0AWoCoAN0AWoCoARkAqEBfAChAn0Ebk50AGQDawJyTHQFfAB8AXwCgwN9BGQEfQJ8A3JudAFqAqADfARkBaECfQRuInQGfAB8AXwCgwN9BGQEfQJ8A3JudAFqAqADfARkBqECfQR8AHKEfAJyhHQBagKgA3wEfAKhAn0EfARTACkHYb0GAABSZXR1cm4gZnVsbCBwYXRoIHRvIHRoZSB1c2VyLXNwZWNpZmljIGxvZyBkaXIgZm9yIHRoaXMgYXBwbGljYXRpb24uCgogICAgICAgICJhcHBuYW1lIiBpcyB0aGUgbmFtZSBvZiBhcHBsaWNhdGlvbi4KICAgICAgICAgICAgSWYgTm9uZSwganVzdCB0aGUgc3lzdGVtIGRpcmVjdG9yeSBpcyByZXR1cm5lZC4KICAgICAgICAiYXBwYXV0aG9yIiAob25seSB1c2VkIG9uIFdpbmRvd3MpIGlzIHRoZSBuYW1lIG9mIHRoZQogICAgICAgICAgICBhcHBhdXRob3Igb3IgZGlzdHJpYnV0aW5nIGJvZHkgZm9yIHRoaXMgYXBwbGljYXRpb24uIFR5cGljYWxseQogICAgICAgICAgICBpdCBpcyB0aGUgb3duaW5nIGNvbXBhbnkgbmFtZS4gVGhpcyBmYWxscyBiYWNrIHRvIGFwcG5hbWUuIFlvdSBtYXkKICAgICAgICAgICAgcGFzcyBGYWxzZSB0byBkaXNhYmxlIGl0LgogICAgICAgICJ2ZXJzaW9uIiBpcyBhbiBvcHRpb25hbCB2ZXJzaW9uIHBhdGggZWxlbWVudCB0byBhcHBlbmQgdG8gdGhlCiAgICAgICAgICAgIHBhdGguIFlvdSBtaWdodCB3YW50IHRvIHVzZSB0aGlzIGlmIHlvdSB3YW50IG11bHRpcGxlIHZlcnNpb25zCiAgICAgICAgICAgIG9mIHlvdXIgYXBwIHRvIGJlIGFibGUgdG8gcnVuIGluZGVwZW5kZW50bHkuIElmIHVzZWQsIHRoaXMKICAgICAgICAgICAgd291bGQgdHlwaWNhbGx5IGJlICI8bWFqb3I+LjxtaW5vcj4iLgogICAgICAgICAgICBPbmx5IGFwcGxpZWQgd2hlbiBhcHBuYW1lIGlzIHByZXNlbnQuCiAgICAgICAgIm9waW5pb24iIChib29sZWFuKSBjYW4gYmUgRmFsc2UgdG8gZGlzYWJsZSB0aGUgYXBwZW5kaW5nIG9mCiAgICAgICAgICAgICJMb2dzIiB0byB0aGUgYmFzZSBhcHAgZGF0YSBkaXIgZm9yIFdpbmRvd3MsIGFuZCAibG9nIiB0byB0aGUKICAgICAgICAgICAgYmFzZSBjYWNoZSBkaXIgZm9yIFVuaXguIFNlZSBkaXNjdXNzaW9uIGJlbG93LgoKICAgIFR5cGljYWwgdXNlciBsb2cgZGlyZWN0b3JpZXMgYXJlOgogICAgICAgIE1hYyBPUyBYOiAgIH4vTGlicmFyeS9Mb2dzLzxBcHBOYW1lPgogICAgICAgIFVuaXg6ICAgICAgIH4vLmNhY2hlLzxBcHBOYW1lPi9sb2cgICMgb3IgdW5kZXIgJFhER19DQUNIRV9IT01FIGlmIGRlZmluZWQKICAgICAgICBXaW4gWFA6ICAgICBDOlxEb2N1bWVudHMgYW5kIFNldHRpbmdzXDx1c2VybmFtZT5cTG9jYWwgU2V0dGluZ3NcQXBwbGljYXRpb24gRGF0YVw8QXBwQXV0aG9yPlw8QXBwTmFtZT5cTG9ncwogICAgICAgIFZpc3RhOiAgICAgIEM6XFVzZXJz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