YQ0NCgAAAABKGnxjBdEAAOMAAAAAAAAAAAAAAAAAAAAANwAAAEAAAABzzAwAAGQAWgBkAWQCbAFaAWQBZAJsAloCZAFkAmwDWgNkAWQCbARaBGQBZAJsBFoFZAFkA2wGbQdaBwEAZAFkBGwIbQlaCQEAZAFkBWwIbQpaCgEAZAFkBmwLbQxaDAEAZAFkB2wLbQ1aDQEAZAFkCGwLbQ5aDgEAZAlkCmwPbRBaEAEAZAlkC2wPbRFaEQEAZAlkDGwPbRJaEgEAZAlkDWwPbRNaEwEAZAlkDmwUbRVaFQEAZAlkD2wWbRdaFwEAZAlkEGwYbRlaGQEAZAlkEWwYbRpaGgEAZAlkEmwYbRtaGwEAZAlkE2wYbRxaHAEAZAlkFGwYbR1aHQEAZAlkFWwYbR5aHgEAZAlkFmwYbR9aHwEAZQVqIJABcmJkAWQCbCFaImQJZBdsI20kWiQBAGQJZBhsJW0mWiYBAGQJZBlsFm0nWicBAGQJZBpsKG0pWikBAEcAZBtkHIQAZBxlImoqgwNaK2UFaixkHWUFai1kHmUFai5mAhkAZB+NAlovZQWgLGQgoQFaMGUFoCxkIaEBWjFlMWUxZCKcAmQjZCSEBFoyZPxkJWUFajNlBWo0ZTVlNmYCGQAZAGUFajNlBWotZQVqLmcBZQVqLmYCGQAZAGUFajNlBWouGQBlBWotZQVqLmcBZQVqLmYCGQBkJpwFZCdkKIQFWjdk/WQlZQVqM2UFajRlNWU2ZgIZABkAZQVqM2UFai1lBWouZwFlBWouZgIZABkAZQVqLWUFai5nAWUFajhlBWouGQBmAhkAZCmcBGQqZCuEBVo5ZQVqM2UFajRlNWU2ZgIZABkAZQVqOGUFajRlNWU2ZgIZABkAZCycAmQtZC6EBFo6ZC9lDWQinAJkMGQxhARaO2UFajRlNWUFajxlNWUFai5mAhkAZQVqPWUFaj5lNWUFai5mAhkAGQBmAxkAZTVkIpwCZDJkM4QEWj9lHGT+ZDRlNWU1ZTVlBWozZTYZAGU1ZDWcBmQ2ZDeEBYMBWkBlNWU1ZDicAmQ5ZDqEBFpBZTVlNWQ4nAJkO2Q8hARaQmUFajRlBWo8ZTBlMWYCGQBlF2YCGQBlBWpDZQVqPmUwZTFmAhkAGQBkIpwCZD1kPoQEWkRlHGT/ZDRlBWo8ZTVlBWouZgIZAGVFZTVkQJwEZEFkQoQFgwFaRmU1ZTVkOJwCZENkRIQEWkdlA6BIZEWhAVpJZTVlNWQ4nAJkRmRHhARaSpABZABlBWo8ZTBlMWYCGQBlRWRKZUVlBWo4ZQVqPmUwZTFmAhkAGQBkS5wFZExkTYQFWktlG5ABZAFkJWROZUVlRWUFajNlBWo0ZTVlNmYCGQAZAGRPZFCcBmRRZFKEBYMBWkxlG5ABZAJkJWROZUVlBWozZQVqNGU1ZTZmAhkAGQBkU2RUnAVkVWRWhAWDAVpNZCVkTmRXZUVlBWozZQVqNGU1ZTZmAhkAGQBkWGRZnAZkWmRbhARaTmUbkAFkA2QlZE5lRWUFajNlBWo0ZTVlNmYCGQAZAGRYZFScBWRcZF2EBYMBWk9lG5ABZARkJWROZUVlBWozZQVqNGU1ZTZmAhkAGQBkWGRUnAVkXmRfhAWDAVpQkAFkBWUxZTFlRWUxZGGcBGRiZGOEBVpRZRyQAWQGZDRlBWo9ZTVlBWozZQVqNGU1ZTZmAhkAGQBlNWRknAVkZWRmhAWDAVpSZRBlUoMBkAFkB2Q0ZQVqNGUFalNlBWo9ZgIZAGU1ZQVqM2UFajRlNWU2ZgIZABkAZTVkZJwFZGdkaIQFgwFaVJABZAhlNWU2ZTVkapwDZGtkbIQFWlVlG2QlZE5kWGRtnANkbmRvhASDAVpWZRBlVoMBZCVkcGRYZG2cA2RxZHKEBIMBWldlG2QlZHNkWGRtnANkdGR1hASDAVpYZRpkdmR3ZFhkeJwDZHlkeoQEgwFaWZABZAllBWo0ZTVlWmU2ZgMZAGVFZTVke5wDZHxkfYQFWltlBWouZTVkIpwCZH5kf4QEWlxlA6BIZIChAVpdZRyQAWQKZDRlNWUFajNlNhkAZUVlBWozZTUZAGUFajNlNRkAZQVqM2UFaj1lNRkAGQBlNWSBnAhkgmSDhAWDAVpekAFkC2U1ZQVqNGU2ZTVmAhkAZUVlRWU1ZIWcBWSGZIeEBVpfZRuQAWQMZCVlNWU2ZUVlNWUFajNlNhkAZTVkipwHZItkjIQFgwFaYGUbkAFkDWQlZTVlNmVFZQVqM2U1GQBlRWU1ZI6cB2SPZJCEBYMBWmFlA6BIZJGhAVpiZTVlNmQ4nAJkkmSThARaY5ABZA5lBWouZTZlNmU2ZJWcBGSWZJeEBVpkkAFkD2UFai5lWmVaZJmcA2SaZJuEBVplZTVlBWouZQVqLmU1ZJycBGSdZJ6EBFpmkAFkEGU1ZQVqM2U1GQBlNWSfnANkoGShhAVaZ2QvZTVkIpwCZKJko4QEWmiQAWQRZKRlNmSlZKZkp5wEZKhkqYQFWmllEGVpgwGQAWQSZHBlNmUFajNlBWouGQBkpmSnnARkqmSrhAWDAVpqkAFkE2ROZTZkpWSmZKycBGStZK6EBVprkAFkFGVaZTZksGVaZLGcBGSyZLOEBVpsRwBktGS1hABktWUFam2DA1puZRuQAWQVZCVkTmUFajRlNWU2ZgIZAGUFajNlBWouGQBlRWS2ZLecBmS4ZLmEBYMBWm9lEGVvgwGQAWQWZCVkcGUFajRlNWU2ZgIZAGUFajNlBWouGQBlRWS2ZLecBmS6ZLuEBYMBWnBlG5ABZBdkJWROZQVqM2UFajRlNWU2ZgIZABkAZTFlMWS8nAVkvWS+hAWDAVpxZRBlcYMBkAFkGGQlZHBlBWozZQVqNGU1ZTZmAhkAGQBlMWUxZLycBWS/ZMCEBYMBWnJkTmRPZCKcAmTBZMKEBFpzZRBlc4MBZHBkT2QinAJkw2TEhASDAVp0ZTVlDWQinAJkxWTGhARadWU1ZTVkIpwCZMdkyIQEWnZlBGp3ZTVlNWQinAJkyWTKhASDAVp4ZQRqd2ROZE5kIpwCZMtkyoQEgwFaeGUFajRlNWUFaj1lMRkAZgIZAGUFajRlNWUFaj1lMRkAZgIZAGQinAJkzGTKhARaeGUbZCVlBWouZTVlBWo0ZRdlBWouZgIZAGTNnARkzmTPhASDAVp5ZQRqd2R2ZQVqPWU1ZQVqLmUFai5lBWo9ZNCcBmTRZNKEBIMBWnplBGp3ZB5kAmTTnAJkdmUFaj1lNWUFajNlBWouGQBlBWo9ZNScBWTVZNKEBoMBWnplGmR2ZQVqPWUFai5lBWouZQVqPWTWnAVk12TShASDAVp6ZQRqd2R2ZQVqNGUFalNlBWo9ZgIZAGU1ZQVqLmUFai5lBWo9ZNCcBmTYZNmEBIMBWntlBGp3ZB5kAmTTnAJkdmUFajRlBWpTZQVqPWYCGQBlNWUFajNlBWouGQBlBWo9ZNScBWTaZNmEBoMBWntlEGV6gwFkdmUFajRlBWpTZQVqPWYCGQBlBWouZQVqLmUFalNk1pwFZNtk2YQEgwFae2UaZHZkTmUFai5lBWouZFNk1pwFZNxk3YQEgwFafGUQZXyDAWR2ZHBlBWouZQVqLmTeZNacBWTfZOCEBIMBWn1lGmR2ZE5lBWouZQVqLmRTZNacBWThZOKEBIMBWn5lEGV+gwFkdmRwZQVqLmUFai5k3mTWnAVk42TkhASDAVp/ZRpkdmROZQVqLmUFai5kU2TWnAVk5WTmhASDAVqAZRBlgIMBZHZkcGUFai5lBWouZN5k1pwFZOdk6IQEgwFagWUaZHZkTmUFai5lBWouZFNk1pwFZOlk6oQEgwFagmUQZYKDAWR2ZHBlBWouZQVqLmTeZNacBWTrZOyEBIMBWoNlHJABZBlkNGUFai5lBWozZTYZAGUNZO2cBGTuZO+EBYMBWoRkdmUFaj5lBWqFZTVlBWouZgIZAGUFai1lBWouZwFlBWouZgIZAGTwnARk8WTyhARahmR2ZQVqPmUFaoVlNWUFai5mAhkAZQVqLWUFai5nAWUFai5mAhkAZUVlBWotZQVqLmcBZQVqLmYCGQBk85wGZPRk9YQEWodkdmROZQVqPmUFaoVlNWUFai5mAhkAZQVqLWUFai5nAWUFai5mAhkAZUVkU2T2nAdk92T4hARaiGR2ZHBlBWo+ZQVqhWU1ZQVqLmYCGQBlBWotZQVqLmcBZQVqLmYCGQBlRWTeZPacB2T5ZPqEBFqJZYpleWVrZUdlVWWLZVFlUWVLZQxlDGVbZVdlZWU7ZWZlcGVfZWRlVGVYZYtldGVCZURle2VPZVBlXGVZZX9lg2VAZXhlbGV1ZX1lgWVqZUxlDmVoZXJlSmVnZWBlTWVBZT9lXmVjZWFlRmWEZPucNlqMZAJTACgaAQAAejdCdWlsdC1pbiB0ZW1wbGF0ZSBmaWx0ZXJzIHVzZWQgd2l0aCB0aGUgYGB8YGAgb3BlcmF0b3Iu6QAAAABOKQHaA2FiYykB2gVjaGFpbikB2gdncm91cGJ5KQHaBmVzY2FwZakB2gZNYXJrdXApAdoIc29mdF9zdHLpAQAAACkB2g1hc3luY192YXJpYW50KQHaCmF1dG9fYWl0ZXIpAdoKYXV0b19hd2FpdKkB2gxhdXRvX3RvX2xpc3QpAdoTRmlsdGVyQXJndW1lbnRFcnJvcikB2glVbmRlZmluZWQpAdoTaHRtbHNhZmVfanNvbl9kdW1wcykB2gxwYXNzX2NvbnRleHQpAdoQcGFzc19l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ci8AAADaDWRlZmF1bHRfdmFsdWXaB2Jvb2xlYW5yIAAAAGMDAAAAAAAAAAAAAAADAAAAAwAAAEMAAABzGgAAAHQAfAB0AYMCcxJ8AnIWfABzFnwBUwB8AFMAKQFhYAMAAElmIHRoZSB2YWx1ZSBpcyB1bmRlZmluZWQgaXQgd2lsbCByZXR1cm4gdGhlIHBhc3NlZCBkZWZhdWx0IHZhbHVlLAogICAgb3RoZXJ3aXNlIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGU6CgogICAgLi4gc291cmNlY29kZTo6IGppbmphCgogICAgICAgIHt7IG15X3ZhcmlhYmxlfGRlZmF1bHQoJ215X3ZhcmlhYmxlIGlzIG5vdCBkZWZpbmVkJykgfX0KCiAgICBUaGlzIHdpbGwgb3V0cHV0IHRoZSB2YWx1ZSBvZiBgYG15X3ZhcmlhYmxlYGAgaWYgdGhlIHZhcmlhYmxlIHdhcwogICAgZGVmaW5lZCwgb3RoZXJ3aXNlIGBgJ215X3ZhcmlhYmxlIGlzIG5vdCBkZWZpbmVkJ2BgLiBJZiB5b3Ugd2FudAogICAgdG8gdXNlIGRlZmF1bHQgd2l0aCB2YXJpYWJsZXMgdGhhdCBldmFsdWF0ZSB0byBmYWxzZSB5b3UgaGF2ZSB0bwogICAgc2V0IHRoZSBzZWNvbmQgcGFyYW1ldGVyIHRvIGB0cnVlYDoKCiAgICAuLiBzb3VyY2Vjb2RlOjogamluamEKCiAgICAgICAge3sgJyd8ZGVmYXVsdCgndGhlIHN0cmluZyB3YXMgZW1wdHknLCB0cnVlKSB9fQoKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMi4xMQogICAgICAgSXQncyBub3cgcG9zc2libGUgdG8gY29uZmlndXJlIHRoZSA6Y2xhc3M6YH5qaW5qYTIuRW52aXJvbm1lbnRgIHdpdGgKICAgICAgIDpjbGFzczpgfmppbmphMi5DaGFpbmFibGVVbmRlZmluZWRgIHRvIG1ha2UgdGhlIGBkZWZhdWx0YCBmaWx0ZXIgd29yawogICAgICAgb24gbmVzdGVkIGVsZW1lbnRzIGFuZCBhdHRyaWJ1dGVzIHRoYXQgbWF5IGNvbnRhaW4gdW5kZWZpbmVkIHZhbHVlcwogICAgICAgaW4gdGhl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ZS5jb20/Y2M9Y29weUBleGFtcGxlLmNvbWBgKS4KCiAgICA6cGFyYW0gdmFsdWU6IE9yaWdpbmFsIHRleHQgY29udGFpbmluZyBVUkxzIHRvIGxpbmsuCiAgICA6cGFyYW0gdHJpbV91cmxfbGltaXQ6IFNob3J0ZW4gZGlzcGxheWVkIFVSTCB2YWx1ZXMgdG8gdGhpcyBsZW5ndGguCiAgICA6cGFyYW0gbm9mb2xsb3c6IEFkZCB0aGUgYGByZWw9bm9mb2xsb3dgYCBhdHRyaWJ1dGUgdG8gbGlua3MuCiAgICA6cGFyYW0gdGFyZ2V0OiBBZGQgdGhlIGBgdGFyZ2V0YGAgYXR0cmlidXRlIHRvIGxpbmtzLgogICAgOnBhcmFtIHJlbDogQWRkIHRoZSBgYHJlbGBgIGF0dHJpYnV0ZSB0byBsaW5rcy4KICAgIDpwYXJhbSBleHRyYV9zY2hlbWVzOiBSZWNvZ25pemUgVVJMcyB0aGF0IHN0YXJ0IHdpdGggdGhlc2Ugc2NoZW1lcwogICAgICAgIGluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IGJlaGF2aW9yLiBEZWZhdWx0cyB0bwogICAgICAgIGBgZW52LnBvbGljaWVzWyJ1cmxpemUuZXh0cmFfc2NoZW1lcyJdYGAsIHdoaWNoIGRlZmF1bHRzIHRvIG5vCiAgICAgICAgZXh0cmEgc2NoZW1lcy4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMAogICAgICAgIFRoZSBgYGV4dHJhX3NjaGVtZXNgYCBwYXJhbWV0ZXIgd2FzIGFkZGVkLgoKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4wCiAgICAgICAgR2VuZXJhdGUgYGBodHRwczovL2BgIGxpbmtzIGZvciBVUkxzIHdpdGhvdXQgYSBzY2hlbWUuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjAKICAgICAgICBUaGUgcGFyc2luZyBydWxlcyB3ZXJlIHVwZGF0ZWQuIFJlY29nbml6ZSBlbWFpbCBhZGRyZXNzZXMgd2l0aAogICAgICAgIG9yIHdpdGhvdXQgdGhlIGBgbWFpbHRvOmBgIHNjaGVtZS4gVmFsaWRhdGUgSVAgYWRkcmVzc2VzLiBJZ25v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AmQFGQB9BnwGfAQXAFMAKQlh7AMAAFJldHVybiBhIHRydW5jYXRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuIFRoZSBsZW5ndGggaXMgc3BlY2lmaWVkCiAgICB3aXRoIHRoZSBmaXJzdCBwYXJhbWV0ZXIgd2hpY2ggZGVmYXVsdHMgdG8gYGAyNTVgYC4gSWYgdGhlIHNlY29uZAogICAgcGFyYW1ldGVyIGlzIGBgdHJ1ZWBgIHRoZSBmaWx0ZXIgd2lsbCBjdXQgdGhlIHRleHQgYXQgbGVuZ3RoLiBPdGhlcndpc2UKICAgIGl0IHdpbGwgZGlzY2FyZCB0aGUgbGFzdCB3b3JkLiBJZiB0aGUgdGV4dCB3YXMgaW4gZmFjdAogICAgdHJ1bmNhdGVkIGl0IHdpbGwgYXBwZW5kIGFuIGVsbGlwc2lzIHNpZ24gKGBgIi4uLiJgYCkuIElmIHlvdSB3YW50IGEKICAgIGRpZmZlcmVudCBlbGxpcHNpcyBzaWduIHRoYW4gYGAiLi4uImBgIHlvdSBjYW4gc3BlY2lmeSBpdCB1c2luZyB0aGUKICAgIHRoaXJkIHBhcmFtZXRlci4gU3RyaW5ncyB0aGF0IG9ubHkgZXhjZWVkIHRoZSBsZW5ndGggYnkgdGhlIHRvbGVyYW5jZQogICAgbWFyZ2luIGdpdmVuIGluIHRoZSBmb3VydGggcGFyYW1ldGVyIHdpbGwgbm90IGJlIHRydW5jYXRlZC4KCiAgICAuLiBzb3VyY2Vjb2RlOjogamluamEKCiAgICAgICAge3sgImZvbyBiYXIgYmF6IHF1eCJ8dHJ1bmNhdGUoOSkgfX0KICAgICAgICAgICAgLT4gImZvby4uLiIKICAgICAgICB7eyAiZm9vIGJhciBiYXogcXV4Inx0cnVuY2F0ZSg5LCBUcnVlKSB9fQogICAgICAgICAgICAtPiAiZm9vIGJhLi4uIgogICAgICAgIHt7ICJmb28gYmFyIGJheiBxdXgifHRydW5jYXRlKDExKSB9fQogICAgICAgICAgICAtPiAiZm9vIGJhciBiYXogcXV4IgogICAgICAgIHt7ICJmb28gYmFyIGJheiBxdXgifHRydW5jYXRlKDExLCBGYWxzZSwgJy4uLicsIDApIH19CiAgICAgICAgICAgIC0+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YW4gYmUgcmVuZGVyZWQgaW4gZ3JvdXBzLiBJbiB0aGlzIGV4YW1wbGUsIGBgZ3JvdXBlcmBgIHJlZmVycyB0bwogICAgdGhlIGBgY2l0eWBgIHZhbHVlIG9mIHRoZSBncm91cC4KCiAgICAuLiBzb3VyY2Vjb2RlOjogaHRtbCtqaW5qYQoKICAgICAgICA8dWw+eyUgZm9yIGNpdHksIGl0ZW1zIGluIHVzZXJzfGdyb3VwYnkoImNpdHkiKSAlfQogICAgICAgICAgPGxpPnt7IGNpdHkgfX0KICAgICAgICAgICAgPHVsPnslIGZvciB1c2VyIGluIGl0ZW1zICV9CiAgICAgICAgICAgICAgPGxpPnt7IHVzZXIubmFtZSB9fQogICAgICAgICAgICB7JSBlbmRmb3IgJX08L3VsPgogICAgICAgICAgPC9saT4KICAgICAgICB7JSBlbmRmb3IgJX08L3VsPgoKICAgIGBgZ3JvdXBieWBgIHlpZWxkcyBuYW1lZHR1cGxlcyBvZiBgYChncm91cGVyLCBsaXN0KWBgLCB3aGljaAogICAgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgdHVwbGUgdW5wYWNraW5nIGFib3ZlLiBgYGdyb3VwZXJgYCBpcyB0aGUKICAgIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUsIGFuZCBgYGxpc3RgYCBpcyB0aGUgaXRlbXMgd2l0aCB0aGF0IHZhbHVlLgoKICAgIC4uIHNvdXJjZWNvZGU6OiBodG1sK2ppbmphCgogICAgICAgIDx1bD57JSBmb3IgZ3JvdXAgaW4gdXNlcnN8Z3JvdXBieSgiY2l0eSIpICV9CiAgICAgICAgICA8bGk+e3sgZ3JvdXAuZ3JvdXBlciB9fToge3sgZ3JvdXAubGlzdHxqb2luKCIsICIpIH19CiAgICAgICAgeyUgZW5kZm9yICV9PC91bD4KCiAgICBZb3UgY2FuIHNwZWNpZnkgYSBgYGRlZmF1bHRgYCB2YWx1ZSB0byB1c2UgaWYgYW4gb2JqZWN0IGluIHRoZSBsaXN0CiAgICBkb2VzIG5vdCBoYXZlIHRoZSBnaXZlbiBhdHRyaWJ1dGUuCgogICAgLi4gc291cmNlY29kZTo6IGppbmphCgogICAgICAgIDx1bD57JSBmb3IgY2l0eSwgaXRlbXMgaW4gdXNlcnN8Z3JvdXBieSgiY2l0eSIsIGRlZmF1bHQ9Ik5ZIikgJX0KICAgICAgICAgIDxsaT57eyBjaXR5IH19OiB7eyBpdGVtc3xtYXAoYXR0cmlidXRlPSJuYW1lIil8am9pbigiLCAiKSB9fTwvbGk+CiAgICAgICAgeyUgZW5kZm9yICV9PC91bD4KCiAgICBMaWtlIHRoZSA6ZnVuYzpgfmppbmphLWZpbHRlcnMuc29ydGAgZmlsdGVyLCBzb3J0aW5nIGFuZCBncm91cGluZyBpcwogICAgY2FzZS1pbnNlbnNpdGl2ZSBieSBkZWZhdWx0LiBUaGUgYGBrZXlgYCBmb3IgZWFjaCBncm91cCB3aWxsIGhhdmUKICAgIHRoZSBjYXNlIG9mIHRoZSBmaXJzdCBpdGVtIGluIHRoYXQgZ3JvdXAgb2YgdmFsdWVzLiBGb3IgZXhhbXBsZSwgaWYKICAgIGEgbGlzdCBvZiB1c2VycyBoYXMgY2l0aWVzIGBgWyJDQSIsICJOWSIsICJjYSJdYGAsIHRoZSAiQ0EiIGdyb3VwCiAgICB3aWxsIGhhdmUgdHdvIHZhbHVlcy4gVGhpcyBjYW4gYmUgZGlzYWJsZWQgYnkgcGFzc2luZwogICAgYGBjYXNlX3NlbnNpdGl2ZT1UcnVlYGAuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgICBBZGRlZCB0aGUgYGBjYXNlX3NlbnNpdGl2ZWBgIHBhcmFtZXRlci4gU29ydGluZyBhbmQgZ3JvdXBpbmcgaXMKICAgICAgICBjYXNlLWluc2Vuc2l0aXZlIGJ5IGRlZmF1bHQsIG1hdGNoaW5nIG90aGVyIGZpbHRlcnMgdGhhdCBkbwogICAgICAgIGNvbXBhcmlzb25zLgoKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4wCiAgICAgICAgQWRkZWQgdGhlIGBgZGVmYXVsdGBgIHBhcmFtZXRlci4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDIuNgogICAgICAgIFRoZSBhdHRyaWJ1dGUgc3VwcG9ydHMgZG90IG5vdGF0aW9uIGZvciBuZXN0ZWQgYWNjZXNzLgogICAgTqkCcjgA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bmUgeW91IGhhdmUgYSBsaXN0CiAgICBvZiB1c2VycyBidXQgeW91IGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gYSBsaXN0IG9mIHVzZXJuYW1lczoKCiAgICAuLiBzb3VyY2Vjb2RlOjogamluamEKCiAgICAgICAgVXNlcnMgb24gdGhpcyBwYWdlOiB7eyB1c2Vyc3xtYXAoYXR0cmlidXRlPSd1c2VybmFtZScpfGpvaW4oJywgJykgfX0KCiAgICBZb3UgY2FuIHNwZWNpZnkgYSBgYGRlZmF1bHRgYCB2YWx1ZSB0byB1c2UgaWYgYW4gb2JqZWN0IGluIHRoZSBsaXN0CiAgICBkb2VzIG5vdCBoYXZlIHRoZSBnaXZlbiBhdHRyaWJ1dGUuCgogICAgLi4gc291cmNlY29kZTo6IGppbmphCgogICAgICAgIHt7IHVzZXJzfG1hcChhdHRyaWJ1dGU9InVzZXJuYW1lIiwgZGVmYXVsdD0iQW5vbnltb3VzIil8am9pbigiLCAiKSB9fQoKICAgIEFsdGVybmF0aXZlbHkgeW91IGNhbiBsZXQgaXQgaW52b2tlIGEgZmlsdGVyIGJ5IHBhc3NpbmcgdGhlIG5hbWUgb2YgdGhlCiAgICBmaWx0ZXIgYW5kIHRoZSBhcmd1bWVudHMgYWZ0ZXJ3YXJkcy4gIEEgZ29vZCBleGFtcGxlIHdvdWxkIGJlIGFwcGx5aW5nIGEKICAgIHRleHQgY29udmVyc2lvbiBmaWx0ZXIgb24gYSBzZXF1ZW5jZToKCiAgICAuLiBzb3VyY2Vjb2RlOjogamluamEKCiAgICAgICAgVXNlcnMgb24gdGhpcyBwYWdlOiB7eyB0aXRsZXN8bWFwKCdsb3dlcicpfGpvaW4oJywgJykgfX0KCiAgICBTaW1pbGFyIHRvIGEgZ2VuZXJhdG9yIGNvbXByZWhlbnNpb24gc3VjaCBhczoKCiAgICAuLiBjb2RlLWJsb2NrOjogcHl0aG9uCgogICAgICAgICh1LnVzZXJuYW1lIGZvciB1IGluIHVzZXJzKQogICAgICAgIChnZXRhdHRyKHUsICJ1c2VybmFtZSIsICJBbm9ueW1vdXMiKSBmb3IgdSBpbiB1c2VycykKICAgICAgICAoZG9fbG93ZXIoeCkgZm9yIHgg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AgESARgBGPwMKhIBEv4MDBAJLAEC/gwfAgIA/wIBEAEC/g4jEAUQBTQeAgIA/wIBEgEC/g4oEAcKAxAPAAEAAQL8AgEMAQIBAgECARL7DCkCBAABAAEC+wIBAgECAQIBAgESAQL6DjcCBAABAvwCAQIBAgECARIBAvsOIQIBAgECAQIBEgEC+gwUAgQAAQL8AgECAQIBAgESAQL7DhMCBAABAvwCAQIBAgECARIBAvsOFQABAv0CAQIBAgECAQL8DCECBAABAvwCAQIBBAECARIBAvsOOQYEAAEC/AIBAgEQAQIBEgEC+w4JFgUCAgQBAv4OCgYCBAEC/g4JAgIEAQL+DhUCARQIIiESBQoDAgQAAQABAAEAAQL5AgECAQIBCAECAQgBCAEOAQL4DlAC/wIBEgEC/gwwAgQAAQABAAEC+gIBAgECAQIBAgECAQgBAvkOLwIEAAEAAQABAvoCAQIBAgECAQIBCAECAQL5DjcKAxAFGhYYCxgcHAUQCQL/AgEGAQL+DCsGBAL9AgECAQIBCgEC/A4JAv8CAQYBAv4MJwABAv0CAQIBAgECAQL8DCgSDQIFAAEC+wIBAgECAQwBCgECAQL6DlMGBQABAvsCAQIBAgEMAQoBAgEC+g4aAgQAAQL8AgECAQIBEgECAQL7DhoGBAABAvwCAQIBAgESAQIBAvsOFRAHBgESBBAHEAUEARIEBAESBDASAgIIAQ7+Dh4EAhABBP4OBgQFAgEC+wQBAgEEAgIBCgEE+g4KAgIOAQT+DjEEAgIBEAECAQQBBAEE+g4KBAUCAQL7BAECARACAgEKAQT6DgoGAgIBEAEEAQQBBPsODQICDAEC/g4eBgICAQIBBAEEAQL7DgkCAgwBAv4OGQYCAgECAQQBBAEC+w4JAgIMAQL+Dh0GAgIBAgEEAQQBAvsOCQICDAEC/g4bBgICAQIBBAEEAQL7DgkCAgL/AgEOAQL+Dh0UARL+DB0CAQQBDgESAQIBEvoMIwIBAgEEAQ4BEgECAQL5DBECAQIBBAEOARIBAgEC+QwRAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQLK