VQ0NCgAAAADLuIxj/6YBAOMAAAAAAAAAAAAAAAAAAAAARwAAAEAAAABzoggAAGQAWgBkAWQCbAFtAloCAQBkAWQDbANaA2QBZANsBFoEZAFkA2wFWgVkAWQDbAZaBmQBZANsB1oHZAFkA2wIWghkAWQDbAlaCWQBZANsCloKZAFkA2wLWgtkAWQDbAxaDGQBZANsDVoNZAFkA2wOWg5kAWQDbA9aD2QBZANsEFoQZAFkA2wRWhFkAWQDbBJaEmQBZANsE1oUZAFkA2wVWhVkAWQDbBZaFmQBZANsF1oXZAFkA2wYWhhkAWQDbBlaGWQBZANsGloaZAFkA2wbWhtkAWQEbA5tHFocAQB6DGQBZANsHVodVwBuHgQAZR5rCpABcgYBAAEAAQBkAWQDbB9aHVkAbgJYAHoIZSABAFcAbhoEAGUhawqQAXIqAQABAAEAZSJaIFkAbgJYAGQBZAVsI20kWiQBAGQBZAZsJW0mWiZtJ1onbShaKAEAZAFkB2wEbSlaKQEAehxkAWQIbARtKloqbStaK20sWiwBAGQJWi1XAG4aBABlHmsKkAFyjgEAAQABAGQKWi1ZAG4CWABkAWQLbARtLlovAQBkAWQMbDBtMVoxbTJaMgEAehZkAWQDbDNtNFo1AQBlNWo2AQBXAG4aBABlHmsKkAFy3AEAAQABAGQDWjVZAG4CWABkDWQObDdtOFo4AQBkAWQPbCNtOVo5AQBkAWQQbCNtOlo6AQBlO2QRgwEBAGU7ZBKDAQEAZTtkE4MBAQBlO2QUgwEBAGU8Wj1kFWUDaj4EAAMAawCQAnJAZBZrAJACckxuBAEAbghlP2QXgwGCAWUkakCQAnJcZANaQWQDWkJkA1pDZANaRGQDWkVkA1pGZANaR2QDWkhkA1pJZANaSmQDWktkA1pMZANaTWQDWk5kA1pPZANaUGQDWlFkA1pSZANaU0cAZBhkGYQAZBllVIMDWlVkGmQbhABaVmkAWldkHGQdhABaWGQeZB+EAFpZZCBkIYQAWlpkImQjhABaW2QkZCWEAFpcZCZkJ4QAWl1kKGQphABaXmQqZCuEAAQAWl9aYGQsZC2EAFphZC5kL2QwZDFkMmQzZDRkNWQ2ZDdkOGQ5ZDpkO2Q8ZD1kPmQ/ZEBkQWRCZENkRGRFZEZkR2RIZElkSmRLZExkTWQZZE5kG2RPZFBkUWRSZFNkVGRVZFZkV2RYZFlkWmRbZFxkXWReZF9kYGRhZGJkY2RkZGVkZmRnZGhkaWRqZGtkbGRtZG5kb2RwZHFkcmdHWmJHAGRzZEmEAGRJZWODA1pkRwBkdGRKhABkSmVkgwNaZUcAZHVkdoQAZHZlZYMDWmZHAGR3ZEuEAGRLZWSDA1pnRwBkeGRMhABkTGVkgwNaaGkAWmlkeWpqZQNqPo4AWmtkelpsZHtabWQNWm5kAVpvZHxacGR9ZG2EAFpxZH5kMIQAWnJnAGYBZH9kgIQBWnNkgWSChABadGSDZISEAFp1ZQegdmSFoQFad2UHoHZkhqEBWnhldVp5ZIdkUoQAWnpkiGQvhABae2V7WnxkiWQxhABafWSKZDKEAFp+kAFkAGSLZDOEAVp/ZIxkNIQAWoBHAGSNZGCEAGRggwJagUcAZI5kYYQAZGFlgYMDWoJHAGSPZESEAGREgwJag0cAZJBkkYQAZJFlhIMDWoVHAGSSZEOEAGRDgwJahmWGWodHAGSTZE2EAGRNZT+DA1qIRwBklGRFhABkRYMCWolklWRChABaimSWZE+EAFqLZJdkUIQAWoxkmGRVhABajWSZZFaEAFqOZJpkV4QAWo+QAWQBZJtkWIQBWpBHAGScZGeEAGRngwJakWVxZZJlkYMCAQBHAGSdZGiEAGRoZZGDA1qTRwBknmRphABkaWWTgwNalGWUoJWhAAEARwBkn2RlhABkZWWRgwNalmWWgwBal0cAZKBkoYQAZKFlhIMDWphHAGSiZKOEAGSjZZiDA1qZRwBkpGRqhABkamWTgwNammVxZQpqm2WagwIBAEcAZKVkYoQAZGJlloMDWpxHAGSmZGOEAGRjZZSDA1qdRwBkp2RkhABkZGWagwNanmVYZKhpAGSpjQIBAGSqZGuEAFqfkAFkAmSrZD+EAVqgkAFkA2SsZK2EAVqhZZ9lCmqbZaGDAgEAkAFkBGSuZK+EAVqiZZ9lkmWigwIBAGSwZLGEAFqjkAFkBWSyZLOEAVqkZLRktYQAWqVHAGS2ZLeEAGS3gwJapmS4ZLmEAFqnZLpku4QAWqhkvGS9hABaqWS+ZL+EAFqqZZ9lDmqrZaSDAgEAZaxlNWTAgwKQBnKwZZ9lNWqtZaSDAgEAZVhkqGkAZMGNAgEAZVhkqGkAZMKNAgEAZMNkbIQAWq5kxGTFhABar2TGZMeEAFqwZMhkPIQAWrGQAWQGZMlkboQBWrJkymTLhABas2WuZQ5qq2WzgwIBAGWuZQpqm2WzgwIBAGWsZTVkwIMCkAdyLGWuZTVqrWWzgwIBAGTMZM2EAFq0Za5lkmW0gwIBAGTOZFqEAFq1ZM9k0IQAWrZpAGYBZNFk0oQBWrdk02TUhABauGTVZNaEAFq5ZNdk2IQAWrpk2WRThABau2UHoHZk2qEBarxavWUHoHZk22UHar5lB2q/QgChAmq8WsBHAGTcZEiEAGRIgwJawWTdZN6EAFrCZN9k4IQAWsNHAGThZEaEAGRGgwJaxEcAZOJk44QAZONlxIMDWsVHAGTkZOWEAGTlZcSDA1rGZcRlxWXGZOacA1rHZOdk6IQAWshHAGTpZOqEAGTqZcmDA1rKZOtkToQAWstHAGTsZEeEAGRHZTpqzGrNgwNazWTtZO6EAFrOZO9k8IQAWs9k8WRZhABa0GTyZPOEAFrRZPRkVIQAWtJk9WT2hABa02ULatRk92VVZAlk+I0DAQBk+WT6hABa1WXVZdaDAGYBZPtk/IQBgwFa12XVZP1k/oQAgwFa2EcAZP9kcIQAZHBl2YMDWtpkA1MAKAcBAABhWgIAAApQYWNrYWdlIHJlc291cmNlIEFQSQotLS0tLS0tLS0tLS0tLS0tLS0tLQoKQSByZXNvdXJjZSBpcyBhIGxvZ2ljYWwgZmlsZSBjb250YWluZWQgd2l0aGluIGEgcGFja2FnZSwgb3IgYSBsb2dpY2FsCnN1YmRpcmVjdG9yeSB0aGVyZW9mLiAgVGhlIHBhY2thZ2UgcmVzb3VyY2UgQVBJIGV4cGVjdHMgcmVzb3VyY2UgbmFtZXMKdG8gaGF2ZSB0aGVpciBwYXRoIHBhcnRzIHNlcGFyYXRlZCB3aXRoIGBgL2BgLCAqbm90KiB3aGF0ZXZlciB0aGUgbG9jYWwKcGF0aCBzZXBhcmF0b3IgaXMuICBEbyBub3QgdXNlIG9zLnBhdGggb3BlcmF0aW9ucyB0byBtYW5pcHVsYXRlIHJlc291cmNlCm5hbWVzIGJlaW5nIHBhc3NlZCBpbnRvIHRoZSBBUEkuCgpUaGUgcGFja2FnZSByZXNvdXJjZSBBUEkgaXMgZGVzaWduZWQgdG8gd29yayB3aXRoIG5vcm1hbCBmaWxlc3lzdGVtIHBhY2thZ2VzLAouZWdnIGZpbGVzLCBhbmQgdW5wYWNrZWQgLmVnZyBmaWxlcy4gIEl0IGNhbiBhbHNvIHdvcmsgaW4gYSBsaW1pdGVkIHdheSB3aXRoCi56aXAgZmlsZXMgYW5kIHdpdGggY3VzdG9tIFBFUCAzMDIgbG9hZGVycyB0aGF0IHN1cHBvcnQgdGhlIGBgZ2V0X2RhdGEoKWBgCm1ldGhvZC4K6QAAAAApAdoPYWJzb2x1dGVfaW1wb3J0TikB2gxnZXRfaW1wb3J0ZXIpAdoDc2l4KQPaBnVybGxpYtoDbWFw2gZmaWx0ZXIpAdoFdXRpbWUpA9oFbWtkaXLaBnJlbmFtZdoGdW5saW5rVEYpAdoEb3BlbikC2gVpc2RpctoFc3BsaXTpAQAAACkB2gpweTMxY29tcGF0KQHaDHBsYXRmb3JtZGlycykB2glwYWNrYWdpbmd6HXBpcC5fdmVuZG9yLnBhY2thZ2luZy52ZXJzaW9ueiBwaXAuX3ZlbmRvci5wYWNrYWdpbmcuc3BlY2lmaWVyc3oicGlwLl92ZW5kb3IucGFja2FnaW5nLnJlcXVpcmVtZW50c3odcGlwLl92ZW5kb3IucGFja2FnaW5nLm1hcmtlcnMpAukDAAAAcgEAAAApAnITAAAA6QUAAAB6H1B5dGhvbiAzLjUgb3IgbGF0ZXIgaXMgcmVxdWlyZWRjAAAAAAAAAAAAAAAAAAAAAAEAAABAAAAAcxAAAABlAFoBZABaAmQBWgNkAlMAKQPaDVBFUDQ0MFdhcm5pbmd6YQogICAgVXNlZCB3aGVuIHRoZXJlIGlzIGFuIGlzc3VlIHdpdGggYSB2ZXJzaW9uIG9yIHNwZWNpZmllciBub3QgY29tcGx5aW5nIHdpdGgKICAgIFBFUCA0NDAuCiAgICBOqQTaCF9fbmFtZV9f2gpfX21vZHVsZV9f2gxfX3F1YWxuYW1lX1/aB19fZG9jX1+pAHIbAAAAchsAAAD6Ri90bXAvcGlwLXVucGFja2VkLXdoZWVsLWlrdnRxc3kxL3BpcC9fdmVuZG9yL3BrZ19yZXNvdXJjZXMvX19pbml0X18ucHlyFQAAAHgAAABzAgAAAAgBchUAAABjAQAAAAAAAAAAAAAAAQAAAAgAAABDAAAAczgAAAB6DnQAagGgAnwAoQFXAFMABAB0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biBvZiB0aGUgT1MuCgogICAgSWYgdGhpcyBjb25kaXRpb24gb2NjdXJzIGZvciBhbnkgb3RoZXIgcGxhdGZvcm0gd2l0aCBhIHZlcnNpb24gaW4gaXRzCiAgICBwbGF0Zm9ybSBzdHJpbmdzLCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBleHRlbmRlZCBhY2NvcmRpbmdseS4KICAgIE7aBmRhcndpbnoMbWFjb3N4LSVzLSVz2gEu6QIAAAByEwAAACkJ2hJnZXRfYnVpbGRfcGxhdGZvcm3aEm1hY29zVmVyc2lvblN0cmluZ9oFbWF0Y2jaA3N5c9oIcGxhdGZvcm3aBGpvaW7aDF9tYWNvc3hfdmVyc9oFZ3JvdXDaClZhbHVlRXJyb3IpAtoEcGxhdNoBbXIbAAAAchsAAAByHAAAANoWZ2V0X3N1cHBvcnRlZF9wbGF0Zm9ybbEAAABzEAAAAAANBgEKARIBAgEmAQ4CBgFyUgAAANoHcmVxdWlyZdoKcnVuX3NjcmlwdNoMZ2V0X3Byb3ZpZGVy2hBnZXRfZGlzdHJpYnV0aW9u2hBsb2FkX2VudHJ5X3BvaW502g1nZXRfZW50cnlfbWFw2g5nZXRfZW50cnlfaW5mb9oRaXRlcl9lbnRyeV9wb2ludHPaD3Jlc291cmNlX3N0cmluZ9oPcmVzb3VyY2Vfc3RyZWFt2hFyZXNvdXJjZV9maWxlbmFtZdoQcmVzb3VyY2VfbGlzdGRpctoPcmVzb3VyY2VfZXhpc3Rz2g5yZXNvdXJjZV9pc2RpctoRZGVjbGFyZV9uYW1lc3BhY2XaC3dvcmtpbmdfc2V02hdhZGRfYWN0aXZhdGlvbl9saXN0ZW5lctoSZmluZF9kaXN0cmlidXRpb25z2hNzZXRfZXh0cmFjdGlvbl9wYXRo2hFjbGVhbnVwX3Jlc291cmNlc9oRZ2V0X2RlZmF1bHRfY2FjaGXaC0Vudmlyb25tZW502gpXb3JraW5nU2V02g9SZXNvdXJjZU1hbmFnZXLaDERpc3RyaWJ1dGlvbtoLUmVxdWlyZW1lbnTaCkVudHJ5UG9pbnTaD1Jlc29sdXRpb25FcnJvctoPVmVyc2lvbkNvbmZsaWN02hREaXN0cmlidXRpb25Ob3RGb3VuZNoMVW5rbm93bkV4dHJh2g9FeHRyYWN0aW9uRXJyb3LaEnBhcnNlX3JlcXVpcmVtZW50c9oJc2FmZV9uYW1l2gxzYWZlX3ZlcnNpb27aDGdldF9wbGF0Zm9ybdoUY29tcGF0aWJsZV9wbGF0Zm9ybXPaC3lpZWxkX2xpbmVz2g5zcGxpdF9zZWN0aW9uc9oKc2FmZV9leHRyYdoLdG9fZmlsZW5hbWXaDmludmFsaWRfbWFya2Vy2g9ldmFsdWF0ZV9tYXJrZXLaEGVuc3VyZV9kaXJlY3RvcnnaDm5vcm1hbGl6ZV9wYXRo2ghFR0dfRElTVNoLQklOQVJZX0RJU1TaC1NPVVJDRV9ESVNU2g1DSEVDS09VVF9ESVNU2gxERVZFTE9QX0RJU1TaEUlNZXRhZGF0YVByb3ZpZGVy2hFJUmVzb3VyY2VQcm92aWRlctoMRmlsZU1ldGFkYXRh2gxQYXRoTWV0YWRhdGHaC0VnZ01ldGFkYXRh2g1FbXB0eVByb3ZpZGVy2g5lbXB0eV9wcm92aWRlctoMTnVsbFByb3ZpZGVy2gtFZ2dQcm92aWRlctoPRGVmYXVsdFByb3ZpZGVy2gtaaXBQcm92aWRlctoPcmVnaXN0ZXJfZmluZGVy2hpyZWdpc3Rlcl9uYW1lc3BhY2VfaGFuZGxlctoUcmVnaXN0ZXJfbG9hZGVyX3R5cGXaGGZpeHVwX25hbWVzcGFjZV9wYWNrYWdlc3IDAAAA2h5Qa2dSZXNvdXJjZXNEZXByZWNhdGlvbldhcm5pbmfaCHJ1bl9tYWlu2hZBdmFpbGFibGVEaXN0cmlidXRpb25zYwAAAAAAAAAAAAAAAAAAAAACAAAAQAAAAHMYAAAAZQBaAWQAWgJkAVoDZAJkA4QAWgRkBFMAKQVybgAAAHouQWJzdHJhY3QgYmFzZSBmb3IgZGVwZW5kZW5jeSByZXNvbHV0aW9uIGVycm9yc2MBAAAAAAAAAAAAAAABAAAAAwAAAEMAAABzEgAAAHwAagBqAXQCfABqA4MBFwBTAHIdAAAAKQTaCV9fY2xhc3NfX3IXAAAA2gRyZXByckEAAACpAdoEc2VsZnIbAAAAchsAAAByHAAAANoIX19yZXByX1/+AAAAcwIAAAAAAXoYUmVzb2x1dGlvbkVycm9yLl9fcmVwcl9fTikFchcAAAByGAAAAHIZAAAAchoAAABymwAAAHIbAAAA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WgVkBmQHhABaBmQIZAmEAFoHZApkC4QAWghkDGQNhABaCWQOUwApD3KGAAAAejNBbiBvYmplY3QgdGhhdCBwcm92aWRlcyBhY2Nlc3MgdG8gcGFja2FnZSByZXNvdXJjZXNjAgAAAAAAAAAAAAAAAgAAAAEAAABDAAAAcwQAAABkAVMAKQJ6ZFJldHVybiBhIHRydWUgZmlsZXN5c3RlbSBwYXRoIGZvciBgcmVzb3VyY2VfbmFtZWAKCiAgICAgICAgYG1hbmFnZXJgIG11c3QgYmUgYW4gYGBJUmVzb3VyY2VNYW5hZ2VyYGBOchsAAACpAtoHbWFuYWdlctoNcmVzb3VyY2VfbmFtZXIbAAAAchsAAAByHAAAANoVZ2V0X3Jlc291cmNlX2ZpbGVuYW1lEAIAAHMCAAAAAAF6J0lSZXNvdXJjZVByb3ZpZGVyLmdldF9yZXNvdXJjZV9maWxlbmFtZWMCAAAAAAAAAAAAAAACAAAAAQAAAEMAAABzBAAAAGQBUwApAnppUmV0dXJuIGEgcmVhZGFibGUgZmlsZS1saWtlIG9iamVjdCBmb3IgYHJlc291cmNlX25hbWVgCgogICAgICAgIGBtYW5hZ2VyYCBtdXN0IGJlIGFuIGBgSVJlc291cmNlTWFuYWdlcmBgTnIbAAAAcvUAAAByGwAAAHIbAAAAchwAAADaE2dldF9yZXNvdXJjZV9zdHJlYW0VAgAAcwIAAAAAAXolSVJlc291cmNlUHJvdmlkZXIuZ2V0X3Jlc291cmNlX3N0cmVhbWMCAAAAAAAAAAAAAAACAAAAAQAAAEMAAABzBAAAAGQBUwApAnptUmV0dXJuIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnRzIG9mIGByZXNvdXJjZV9uYW1lYAoKICAgICAgICBgbWFuYWdlcmAgbXVzdCBiZSBhbiBgYElSZXNvdXJjZU1hbmFnZXJgYE5yGwAAAHL1AAAAchsAAAByGwAAAHIcAAAA2hNnZXRfcmVzb3VyY2Vfc3RyaW5nGgIAAHMCAAAAAAF6JUlSZXNvdXJjZVByb3ZpZGVyLmdldF9yZXNvdXJjZV9zdHJpbmdjAQAAAAAAAAAAAAAAAQAAAAEAAABDAAAAcwQAAABkAVMAKQJ6LERvZXMgdGhlIHBhY2thZ2UgY29udGFpbiB0aGUgbmFtZWQgcmVzb3VyY2U/TnIbAAAAqQFy9wAAAHIbAAAAchsAAAByHAAAANoMaGFzX3Jlc291cmNlHwIAAHMCAAAAAAF6HklSZXNvdXJjZVByb3ZpZGVyLmhhc19yZXNvdXJjZWMBAAAAAAAAAAAAAAABAAAAAQAAAEMAAABzBAAAAGQBUwApAno+SXMgdGhlIG5hbWVkIHJlc291cmNlIGEgZGlyZWN0b3J5PyAgKGxpa2UgYGBvcy5wYXRoLmlzZGlyKClgYClOchsAAABy+wAAAHIbAAAAchsAAAByHAAAAHJgAAAAIgIAAHMCAAAAAAF6IElSZXNvdXJjZVByb3ZpZGVyLnJlc291cmNlX2lzZGlyYwEAAAAAAAAAAAAAAAEAAAABAAAAQwAAAHMEAAAAZAFTACkCej9MaXN0IG9mIHJlc291cmNlIG5hbWVzIGluIHRoZSBkaXJlY3RvcnkgKGxpa2UgYGBvcy5saXN0ZGlyKClgYClOchsAAABy+wAAAHIbAAAAchsAAAByHAAAAHJeAAAAJQIAAHMCAAAAAAF6IklSZXNvdXJjZVByb3ZpZGVyLnJlc291cmNlX2xpc3RkaXJOKQpyFwAAAHIYAAAAchkAAAByGgAAAHL4AAAAcvkAAABy+gAAAHL8AAAAcmAAAAByXgAAAHIbAAAAchsAAAByGwAAAHIcAAAAcoYAAAANAgAAcw4AAAAIAQQCCAUIBQgFCAMIA2MAAAAAAAAAAAAAAAAAAAAABAAAAEAAAABzrAAAAGUAWgFkAFoCZAFaA2QnZANkBIQBWgRlBWQFZAaEAIMBWgZlBWQHZAiEAIMBWgdkCWQKhABaCGQLZAyEAFoJZA1kDoQAWgpkKGQPZBCEAVoLZBFkEoQAWgxkE2QUhABaDWQpZBdkGIQBWg5kKmQZZBqEAVoPZCtkG2QchAFaEGQdZB6EAFoRZCxkH2QghAFaEmQhZCKEAFoTZCNkJIQAWhRkJWQmhABaFWQCUwApLXJpAAAAekRBIGNvbGxlY3Rpb24gb2YgYWN0aXZlIGRpc3RyaWJ1dGlvbnMgb24gc3lzLnBhdGggKG9yIGEgc2ltaWxhciBsaXN0KU5jAgAAAAAAAAAAAAAAAwAAAAQAAABDAAAAcz4AAABnAHwAXwBpAHwAXwFpAHwAXwJnAHwAXwN8AWQBawhyJnQEagV9AXwBRABdDn0CfACgBnwCoQEBAHEqZAFTACkCej9DcmVhdGUgd29ya2luZyBzZXQgZnJvbSBsaXN0IG9mIHBhdGggZW50cmllcyAoZGVmYXVsdD1zeXMucGF0aClOKQfaB2VudHJpZXPaCmVudHJ5X2tleXPaBmJ5X2tledoJY2FsbGJhY2tzckoAAABywQAAANoJYWRkX2VudHJ5KQNymgAAAHL9AAAA2gVlbnRyeXIbAAAAchsAAAByHAAAANoIX19pbml0X18sAgAAcxAAAAAAAgYBBgEGAQYCCAEGAggBehNXb3JraW5nU2V0Ll9faW5pdF9fYwEAAAAAAAAAAAAAAAMAAAAIAAAAQwAAAHNiAAAAfACDAH0BehBkAWQCbABtAX0CAQBXAG4YBAB0AmsKci4BAAEAAQB8AQYAWQBTAFgAeg58AaADfAKhAQEAVwBuHgQAdARrCnJcAQABAAEAfACgBXwCoQEGAFkAUwBYAHwBUwApA3oxCiAgICAgICAgUHJlcGFyZSB0aGUgbWFzdGVyIHdvcmtpbmcgc2V0LgogICAgICAgIHIBAAAAKQHaDF9fcmVxdWlyZXNfXykG2ghfX21haW5fX3IEAQAA2gtJbXBvcnRFcnJvcnJTAAAAcm8AAADaGF9idWlsZF9mcm9tX3JlcXVpcmVtZW50cykD2gNjbHPaAndzcgQBAAByGwAAAHIbAAAAchwAAADaDV9idWlsZF9tYXN0ZXI5AgAAcxQAAAAABQYBAgEQAQ4CCgMCAQ4BDgEQAnoYV29ya2luZ1NldC5fYnVpbGRfbWFzdGVyYwIAAAAAAAAAAAAAAAcAAAAEAAAAQwAAAHNmAAAAfABnAIMBfQJ0AHwBgwF9A3wCoAF8A3QCgwChAn0EfAREAF0OfQV8AqADfAWhAQEAcSJ0BGoFRABdGH0GfAZ8AmoGawdyOHwCoAd8BqEBAQBxOHwCagZ0BGoFZAFkAYUCPAB8AlMAKQJ6UQogICAgICAgIEJ1aWxkIGEgd29ya2luZyBzZXQgZnJvbSBhIHJlcXVpcmVtZW50IHNwZWMuIFJld3JpdGVzIHN5cy5wYXRoLgogICAgICAgIE4pCHJzAAAA2gdyZXNvbHZlcmgAAADaA2FkZHJKAAAAcsEAAABy/QAAAHIBAQAAKQdyCAEAANoIcmVxX3NwZWNyCQEAANoEcmVxc9oFZGlzdHNynQAAAHICAQAAchsAAAByGwAAAHIcAAAAcgcBAABNAgAAcxQAAAAABwgBCAEOAQgBDAMKAQoBDAMQAXojV29ya2luZ1NldC5fYnVpbGRfZnJvbV9yZXF1aXJlbWVudHNjAgAAAAAAAAAAAAAAAwAAAAYAAABDAAAAczwAAAB8AGoAoAF8AWcAoQIBAHwAagKgA3wBoQEBAHQEfAFkAYMCRABdEn0CfACgBXwCfAFkAqEDAQBxJGQDUwApBGHdAQAAQWRkIGEgcGF0aCBpdGVtIHRvIGBgLmVudHJpZXNgYCwgZmluZGluZyBhbnkgZGlzdHJpYnV0aW9ucyBvbiBpdAoKICAgICAgICBgYGZpbmRfZGlzdHJpYnV0aW9ucyhlbnRyeSwgVHJ1ZSlgYCBpcyB1c2VkIHRvIGZpbmQgZGlzdHJpYnV0aW9ucwogICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHBhdGggZW50cnksIGFuZCB0aGV5IGFyZSBhZGRlZC4gIGBlbnRyeWAgaXMKICAgICAgICBhbHdheXMgYXBwZW5kZWQgdG8gYGAuZW50cmllc2BgLCBldmVuIGlmIGl0IGlzIGFscmVhZHkgcHJlc2VudC4KICAgICAgICAoVGhpcyBpcyBiZWNhdXNlIGBgc3lzLnBhdGhgYCBjYW4gY29udGFpbiB0aGUgc2FtZSB2YWx1ZSBtb3JlIHRoYW4KICAgICAgICBvbmNlLCBhbmQgdGhlIGBgLmVudHJpZXNgYCBvZiB0aGUgYGBzeXMucGF0aGBgIFdvcmtpbmdTZXQgc2hvdWxkIGFsd2F5cwogICAgICAgIGVxdWFsIGBgc3lzLnBhdGhgYC4pCiAgICAgICAgVEZOKQZy/gAAANoKc2V0ZGVmYXVsdHL9AAAAcsUAAAByZAAAAHIMAQAAKQNymgAAAHICAQAAcp0AAAByGwAAAHIbAAAAchwAAAByAQEAAGMCAABzCAAAAAAKDgEMAQ4BehRXb3JraW5nU2V0LmFkZF9lbnRyeWMCAAAAAAAAAAAAAAACAAAAAwAAAEMAAABzEgAAAHwAagCgAXwBagKhAXwBawJTACkBejlUcnVlIGlmIGBkaXN0YCBpcyB0aGUgYWN0aXZlIGRpc3RyaWJ1dGlvbiBmb3IgaXRzIHByb2plY3QpA3L/AAAAcswAAAByOwAAAKkCcpoAAABynQAAAHIbAAAAchsAAAByHAAAANoMX19jb250YWluc19fcgIAAHMCAAAAAAJ6F1dvcmtpbmdTZXQuX19jb250YWluc19fYwIAAAAAAAAAAAAAAAMAAAADAAAAQwAAAHMsAAAAfABqAKABfAFqAqEBfQJ8AmQBawlyKHwCfAFrB3IodAN8AnwBgwKCAXwCUwApAmHQAQAARmluZCBhIGRpc3RyaWJ1dGlvbiBtYXRjaGluZyByZXF1aXJlbWVudCBgcmVxYAoKICAgICAgICBJZiB0aGVyZSBpcyBhbiBhY3RpdmUgZGlzdHJpYnV0aW9uIGZvciB0aGUgcmVxdWVzdGVkIHByb2plY3QsIHRoaXMKICAgICAgICByZXR1cm5zIGl0IGFzIGxvbmcgYXMgaXQgbWVldHMgdGhlIHZlcnNpb24gcmVxdWlyZW1lbnQgc3BlY2lmaWVkIGJ5CiAgICAgICAgYHJlcWAuICBCdXQsIGlmIHRoZXJlIGlzIGFuIGFjdGl2ZSBkaXN0cmlidXRpb24gZm9yIHRoZSBwcm9qZWN0IGFuZCBpdAogICAgICAgIGRvZXMgKm5vdCogbWVldCB0aGUgYHJlcWAgcmVxdWlyZW1lbnQsIGBgVmVyc2lvbkNvbmZsaWN0YGAgaXMgcmFpc2VkLgogICAgICAgIElmIHRoZXJlIGlzIG5vIGFjdGl2ZSBkaXN0cmlidXRpb24gZm9yIHRoZSByZXF1ZXN0ZWQgcHJvamVjdCwgYGBOb25lYGAKICAgICAgICBpcyByZXR1cm5lZC4KICAgICAgICBOKQRy/wAAAHLMAAAAcjsAAABybwAAACkDcpoAAABynwAAAHKdAAAAchsAAAByGwAAAHIcAAAAcrIAAAB2AgAAcwgAAAAACg4BEAIKAXoPV29ya2luZ1NldC5maW5kYwMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAHMUAAAAhwCHAWYCZAFkAoQIfABEAIMBUwApA2ETAQAAWWllbGQgZW50cnkgcG9pbnQgb2JqZWN0cyBmcm9tIGBncm91cGAgbWF0Y2hpbmcgYG5hbWVgCgogICAgICAgIElmIGBuYW1lYCBpcyBOb25lLCB5aWVsZHMgYWxsIGVudHJ5IHBvaW50cyBpbiBgZ3JvdXBgIGZyb20gYWxsCiAgICAgICAgZGlzdHJpYnV0aW9ucyBpbiB0aGUgd29ya2luZyBzZXQsIG90aGVyd2lzZSBvbmx5IG9uZXMgbWF0Y2hpbmcKICAgICAgICBib3RoIGBncm91cGAgYW5kIGBuYW1lYCBhcmUgeWllbGRlZCAoaW4gZGlzdHJpYnV0aW9uIG9yZGVyKS4KICAgICAgICBjAQAAAAAAAAAAAAAAAwAAAAQAAAAzAAAAczgAAAB8AF0wfQF8AaAAiAChAaABoQBEAF0cfQKIAWQAawhzKogBfAJqAmsCchR8AlYAAQBxFHECZABTAHIdAAAAKQNyWAAAANoGdmFsdWVzcuYAAAApA9oCLjBynQAAAHICAQAAqQJyTgAAAHLmAAAAchsAAAByHAAAANoJPGdlbmV4cHI+jQIAAHMMAAAABAICARAAAgEIAAr9ei9Xb3JraW5nU2V0Lml0ZXJfZW50cnlfcG9pbnRzLjxsb2NhbHM+LjxnZW5leHByPnIbAAAAqQNymgAAAHJOAAAAcuYAAAByGwAAAHIVAQAAchwAAAByWgAAAIYCAABzBgAAAAAHDAIC/nocV29ya2luZ1NldC5pdGVyX2VudHJ5X3BvaW50c2MDAAAAAAAAAAAAAAAFAAAABAAAAEMAAABzPgAAAHQAoAFkAaEBagJ9A3wDZAIZAH0EfAOgA6EAAQB8BHwDZAI8AHwAoAR8AaEBZAMZAKAFfAJ8A6ECAQBkBFMAKQV6P0xvY2F0ZSBkaXN0cmlidXRpb24gZm9yIGByZXF1aXJlc2AgYW5kIHJ1biBgc2NyaXB0X25hbWVgIHNjcmlwdHIPAAAAchcAAAByAQAAAE5y4QAAACkFcpoAAADaCHJlcXVpcmVzcuQAAABy5QAAAHLmAAAAchsAAAByGwAAAHIcAAAAclQAAACUAgAAcwoAAAAAAgwBCAEIAQgBehVXb3JraW5nU2V0LnJ1bl9zY3JpcHRjAQAAAAAAAAAAAAAABAAAAAUAAABjAAAAc0wAAABpAH0BfABqAEQAXTx9AnwCfABqAWsHchpxCnwAagF8AhkARABdIH0DfAN8AWsHciRkAXwBfAM8AHwAagJ8AxkAVgABAHEkcQpkAlMAKQN6uFlpZWxkIGRpc3RyaWJ1dGlvbnMgZm9yIG5vbi1kdXBsaWNhdGUgcHJvamVjdHMgaW4gdGhlIHdvcmtpbmcgc2V0CgogICAgICAgIFRoZSB5aWVsZCBvcmRlciBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIGl0ZW1zJyBwYXRoIGVudHJpZXMgd2VyZQogICAgICAgIGFkZGVkIHRvIHRoZSB3b3JraW5nIHNldC4KICAgICAgICByDwAAAE4pA3L9AAAAcv4AAABy/wAAACkEcpoAAADaBHNlZW7aBGl0ZW1yOwAAAHIbAAAAchsAAAByHAAAANoIX19pdGVyX1+cAgAAcxAAAAAABgQBCgEKAgICDgEIAQgBehNXb3JraW5nU2V0Ll9faXRlcl9fVEZjBQAAAAAAAAAAAAAABwAAAAUAAABDAAAAc5wAAAB8A3IWfAFqAHwAagF8AnwEZAGNAwEAfAJkAmsIciR8AWoCfQJ8AGoDoAR8AmcAoQJ9BXwAagOgBHwBagJnAKECfQZ8BHNWfAFqBXwAagZrBnJWZAJTAHwBfABqBnwBagU8AHwBagV8BWsHcnh8BaAHfAFqBaEBAQB8AWoFfAZrB3KOfAagB3wBagWhAQEAfACgCHwBoQEBAGQCUwApA2EXAgAAQWRkIGBkaXN0YCB0byB3b3JraW5nIHNldCwgYXNzb2NpYXRlZCB3aXRoIGBlbnRyeWAKCiAgICAgICAgSWYgYGVudHJ5YCBpcyB1bnNwZWNpZmllZCwgaXQgZGVmYXVsdHMgdG8gdGhlIGBgLmxvY2F0aW9uYGAgb2YgYGRpc3RgLgogICAgICAgIE9uIGV4aXQgZnJvbSB0aGlzIHJvdXRpbmUsIGBlbnRyeWAgaXMgYWRkZWQgdG8gdGhlIGVuZCBvZiB0aGUgd29ya2luZwogICAgICAgIHNldCdzIGBgLmVudHJpZXNgYCAoaWYgaXQgd2Fzbid0IGFscmVhZHkgcHJlc2VudCkuCgogICAgICAgIGBkaXN0YCBpcyBvbmx5IGFkZGVkIHRvIHRoZSB3b3JraW5nIHNldCBpZiBpdCdzIGZvciBhIHByb2plY3QgdGhhdAogICAgICAgIGRvZXNuJ3QgYWxyZWFkeSBoYXZlIGEgZGlzdHJpYnV0aW9uIGluIHRoZSBzZXQsIHVubGVzcyBgcmVwbGFjZT1UcnVlYC4KICAgICAgICBJZiBpdCdzIGFkZGVkLCBhbnkgY2FsbGJhY2tzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgYGBzdWJzY3JpYmUoKWBgIG1ldGhvZAogICAgICAgIHdpbGwgYmUgY2FsbGVkLgogICAgICAgIKkBctUAAABOKQnaCWluc2VydF9vbnL9AAAA2ghsb2NhdGlvbnL+AAAAchABAAByOwAAAHL/AAAAcsUAAADaCl9hZGRlZF9uZXcpB3KaAAAAcp0AAAByAgEAANoGaW5zZXJ0ctUAAADaBGtleXPaBWtleXMychsAAAByGwAAAHIcAAAAcgwBAACtAgAAcxwAAAAADAQBEgIIAQYBDgEQARACBAIMAQoBDAEKAQwBeg5Xb3JraW5nU2V0LmFkZGMGAAAAAAAAAAAAAAASAAAABgAAAEMAAABzeAEAAHQAfAGDAWQBZAFkAoUDGQB9AWkAfQZpAH0HZwB9CHQBgwB9CXQCoAN0BKEBfQp8AZABcnR8AaAFZAOhAX0LfAt8BmsGckhxLnwJoAZ8C3wFoQJzVnEufAegB3wLagihAX0MfAxkAWsIkAFyAnwAagmgB3wLagihAX0MfAxkAWsIc458DHwLawdy+HwEcvh8AH0NfAJkAWsIcr58DGQBawhyrnQKfABqC4MBfQJuEHQKZwCDAX0CdAxnAIMBfQ18AmoNfAt8DXwDfARkBI0EBAB9DHwHfAtqCDwAfAxkAWsIcvh8CqAHfAtkAaECfQ50DnwLfA6DAoIBfAigD3wMoQEBAHwMfAtrB5ABciR8CnwLGQB9D3QQfAx8C4MCoBF8D6EBggF8DKASfAtqE6EBZAFkAWQChQMZAH0QfAGgFHwQoQEBAHwQRABdIH0RfAp8ERkAoBV8C2oWoQEBAHwLahN8CXwRPACQAXFIZAV8BnwLPABxLnwIUwApBmHOBAAATGlzdCBhbGwgZGlzdHJpYnV0aW9ucyBuZWVkZWQgdG8gKHJlY3Vyc2l2ZWx5KSBtZWV0IGByZXF1aXJlbWVudHNgCgogICAgICAgIGByZXF1aXJlbWVudHNgIG11c3QgYmUgYSBzZXF1ZW5jZSBvZiBgYFJlcXVpcmVtZW50YGAgb2JqZWN0cy4gIGBlbnZgLAogICAgICAgIGlmIHN1cHBsaWVkLCBzaG91bGQgYmUgYW4gYGBFbnZpcm9ubWVudGBgIGluc3RhbmNlLiAgSWYKICAgICAgICBub3Qgc3VwcGxpZWQsIGl0IGRlZmF1bHRzIHRvIGFsbCBkaXN0cmlidXRpb25zIGF2YWlsYWJsZSB3aXRoaW4gYW55CiAgICAgICAgZW50cnkgb3IgZGlzdHJpYnV0aW9uIGluIHRoZSB3b3JraW5nIHNldC4gIGBpbnN0YWxsZXJgLCBpZiBzdXBwbGllZCwKICAgICAgICB3aWxsIGJlIGludm9rZWQgd2l0aCBlYWNoIHJlcXVpcmVtZW50IHRoYXQgY2Fubm90IGJlIG1ldCBieSBhbgogICAgICAgIGFscmVhZHktaW5zdGFsbGVkIGRpc3RyaWJ1dGlvbjsgaXQgc2hvdWxkIHJldHVybiBhIGBgRGlzdHJpYnV0aW9uYGAgb3IKICAgICAgICBgYE5vbmVgYC4KCiAgICAgICAgVW5sZXNzIGByZXBsYWNlX2NvbmZsaWN0aW5nPVRydWVgLCByYWlzZXMgYSBWZXJzaW9uQ29uZmxpY3QgZXhjZXB0aW9uCiAgICAgICAgaWYKICAgICAgICBhbnkgcmVxdWlyZW1lbnRzIGFyZSBmb3VuZCBvbiB0aGUgcGF0aCB0aGF0IGhhdmUgdGhlIGNvcnJlY3QgbmFtZSBidXQKICAgICAgICB0aGUgd3JvbmcgdmVyc2lvbi4gIE90aGVyd2lzZSwgaWYgYW4gYGluc3RhbGxlcmAgaXMgc3VwcGxpZWQgaXQgd2lsbCBiZQogICAgICAgIGludm9rZWQgdG8gb2J0YWluIHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgdGhlIHJlcXVpcmVtZW50IGFuZCBhY3RpdmF0ZQogICAgICAgIGl0LgoKICAgICAgICBgZXh0cmFzYCBpcyBhIGxpc3Qgb2YgdGhlIGV4dHJhcyB0byBiZSB1c2VkIHdpdGggdGhlc2UgcmVxdWlyZW1lbnRzLgogICAgICAgIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgZXh0cmEgcmVxdWlyZW1lbnRzIG1heSBsb29rIGxpa2UgYG15X3JlcTsKICAgICAgICBleHRyYSA9ICJteV9leHRyYSJgLCB3aGljaCB3b3VsZCBvdGhlcndpc2UgYmUgaW50ZXJwcmV0ZWQgYXMgYSBwdXJlbHkKICAgICAgICBvcHRpb25hbCByZXF1aXJlbWVudC4gIEluc3RlYWQsIHdlIHdhbnQgdG8gYmUgYWJsZSB0byBhc3NlcnQgdGhhdCB0aGVzZQogICAgICAgIHJlcXVpcmVtZW50cyBhcmUgdHJ1bHkgcmVxdWlyZWQuCiAgICAgICAgTnKsAAAAcgEAAAApAdoTcmVwbGFjZV9jb25mbGljdGluZ1QpF9oEbGlzdNoKX1JlcUV4dHJhc9oLY29sbGVjdGlvbnPaC2RlZmF1bHRkaWN02gNzZXTaA3BvcNoMbWFya2Vyc19wYXNzcswAAAByOwAAAHL/AAAAcmgAAABy/QAAAHJpAAAA2gpiZXN0X21hdGNocnAAAAByxQAAAHJvAAAAcqcAAAByGAEAANoGZXh0cmFz2gZleHRlbmRyDAEAANoMcHJvamVjdF9uYW1lKRJymgAAANoMcmVxdWlyZW1lbnRz2gNlbnbaCWluc3RhbGxlcnIjAQAAciwBAADaCXByb2Nlc3NlZNoEYmVzdNoLdG9fYWN0aXZhdGXaCnJlcV9leHRyYXNypgAAAHKfAAAAcp0AAAByCQEAAHKpAAAA2g1kZXBlbmRlbnRfcmVx2hBuZXdfcmVxdWlyZW1lbnRz2g9uZXdfcmVxdWlyZW1lbnRyGwAAAHIbAAAAchwAAAByCwEAAMsCAABzVAAAAAAbEgIEAgQBBAIGBAoCBgIKAQgCAgIMAQICDAEKAg4BFAEEAQgBCAEMBQgBCAEEAQIAAgACAQL+EAQIAQwBCgEKAQoCCAEQAxYBCgMIARABDgIKA3oSV29ya2luZ1NldC5yZXNvbHZlYwUAAAAAAAAAAAAAAA8AAAAMAAAAQwAAAHMKAQAAdAB8AYMBfQV8BaABoQABAGkAfQZpAH0HfAJkAWsIcjR0AnwAagODAX0IfAh8ATcAfQhuCHwCfAEXAH0IfACgBGcAoQF9CXQAdAV8CWoGfACDAoMBAQB8BUQAXZZ9CnwBfAoZAEQAXYh9C3wLoAehAGcBfQx6EnwJoAh8DHwIfAOhA30NVwBuQgQAdAlrCnLIAQB9DgEAeiR8DnwGfAs8AHwEcq5XAFkAohJxZm4KVwBZAKIIAQBxWlcANQBkAX0Ofg5YAFkAcWZYAHQAdAV8CWoGfA2DAoMBAQB8B6AKdAugDHwNoQGhAQEAAQBxWnFmcVp0AHwHgwF9B3wHoAGhAAEAfAd8BmYCUwApAmFzBgAARmluZCBhbGwgYWN0aXZhdGFibGUgZGlzdHJpYnV0aW9ucyBpbiBgcGx1Z2luX2VudmAKCiAgICAgICAgRXhhbXBsZSB1c2FnZTo6CgogICAgICAgICAgICBkaXN0cmlidXRpb25zLCBlcnJvcnMgPSB3b3JraW5nX3NldC5maW5kX3BsdWdpbnMoCiAgICAgICAgICAgICAgICBFbnZpcm9ubWVudChwbHVnaW5fZGlybGlzdCkKICAgICAgICAgICAgKQogICAgICAgICAgICAjIGFkZCBwbHVnaW5zK2xpYnMgdG8gc3lzLnBhdGgKICAgICAgICAgICAgbWFwKHdvcmtpbmdfc2V0LmFkZCwgZGlzdHJpYnV0aW9ucykKICAgICAgICAgICAgIyBkaXNwbGF5IGVycm9ycwogICAgICAgICAgICBwcmludCgnQ291bGQgbm90IGxvYWQnLCBlcnJvcnMpCgogICAgICAgIFRoZSBgcGx1Z2luX2VudmAgc2hvdWxkIGJlIGFuIGBgRW52aXJvbm1lbnRgYCBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zCiAgICAgICAgb25seSBkaXN0cmlidXRpb25zIHRoYXQgYXJlIGluIHRoZSBwcm9qZWN0J3MgInBsdWdpbiBkaXJlY3RvcnkiIG9yCiAgICAgICAgZGlyZWN0b3JpZXMuIFRoZSBgZnVsbF9lbnZgLCBpZiBzdXBwbGllZCwgc2hvdWxkIGJlIGFuIGBgRW52aXJvbm1lbnRgYAogICAgICAgIGNvbnRhaW5zIGFsbCBjdXJyZW50bHktYXZhaWxhYmxlIGRpc3RyaWJ1dGlvbnMuICBJZiBgZnVsbF9lbnZgIGlzIG5vdAogICAgICAgIHN1cHBsaWVkLCBvbmUgaXMgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIGBgV29ya2luZ1NldGBgIHRoaXMKICAgICAgICBtZXRob2QgaXMgY2FsbGVkIG9uLCB3aGljaCB3aWxsIHR5cGljYWxseSBtZWFuIHRoYXQgZXZlcnkgZGlyZWN0b3J5IG9uCiAgICAgICAgYGBzeXMucGF0aGBgIHdpbGwgYmUgc2Nhbm5lZCBmb3IgZGlzdHJpYnV0aW9ucy4KCiAgICAgICAgYGluc3RhbGxlcmAgaXMgYSBzdGFuZGFyZCBpbnN0YWxsZXIgY2FsbGJhY2sgYXMgdXNlZCBieSB0aGUKICAgICAgICBgYHJlc29sdmUoKWBgIG1ldGhvZC4gVGhlIGBmYWxsYmFja2AgZmxhZyBpbmRpY2F0ZXMgd2hldGhlciB3ZSBzaG91bGQKICAgICAgICBhdHRlbXB0IHRvIHJlc29sdmUgb2xkZXIgdmVyc2lvbnMgb2YgYSBwbHVnaW4gaWYgdGhlIG5ld2VzdCB2ZXJzaW9uCiAgICAgICAgY2Fubm90IGJlIHJlc29sdmVkLgoKICAgICAgICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgMi10dXBsZTogKGBkaXN0cmlidXRpb25zYCwgYGVycm9yX2luZm9gKSwgd2hlcmUKICAgICAgICBgZGlzdHJpYnV0aW9uc2AgaXMgYSBsaXN0IG9mIHRoZSBkaXN0cmlidXRpb25zIGZvdW5kIGluIGBwbHVnaW5fZW52YAogICAgICAgIHRoYXQgd2VyZSBsb2FkYWJsZSwgYWxvbmcgd2l0aCBhbnkgb3RoZXIgZGlzdHJpYnV0aW9ucyB0aGF0IGFyZSBuZWVkZWQKICAgICAgICB0byByZXNvbHZlIHRoZWlyIGRlcGVuZGVuY2llcy4gIGBlcnJvcl9pbmZvYCBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZwogICAgICAgIHVubG9hZGFibGUgcGx1Z2luIGRpc3RyaWJ1dGlvbnMgdG8gYW4gZXhjZXB0aW9uIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlCiAgICAgICAgZXJyb3IgdGhhdCBvY2N1cnJlZC4gVXN1YWxseSB0aGlzIHdpbGwgYmUgYSBgYERpc3RyaWJ1dGlvbk5vdEZvdW5kYGAgb3IKICAgICAgICBgYFZlcnNpb25Db25mbGljdGBgIGluc3RhbmNlLgogICAgICAgIE4pDXIkAQAA2gRzb3J0cmgAAABy/QAAAHKXAAAAcgYAAAByDAEAANoOYXNfcmVxdWlyZW1lbnRyCwEAAHJuAAAAciUAAAByJwAAAHIoAAAAKQ9ymgAAANoK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cGxhY2UgYW4gZXh0cmFjdGVkIGZpbGUgd2l0aCBhbiB1bmF1dGhvcml6ZWQgcGF5bG9hZC4gV2FybiB0aGUgdXNlcgogICAgICAgIGlmIGEga25vd24gaW5zZWN1cmUgbG9jYXRpb24gaXMgdXNlZC4KCiAgICAgICAgU2VlIERpc3RyaWJ1dGUgIzM3NSBmb3IgbW9yZSBkZXRhaWxzLgogICAgICAgINoCbnTaBndpbmRpck56yyVzIGlzIHdyaXRhYmxlIGJ5IGdyb3VwL290aGVycyBhbmQgdnVsbmVyYWJsZSB0byBhdHRhY2sgd2hlbiB1c2VkIHdpdGggZ2V0X3Jlc291cmNlX2ZpbGVuYW1lLiBDb25zaWRlciBhIG1vcmUgc2VjdXJlIGxvY2F0aW9uIChzZXQgd2l0aCAuc2V0X2V4dHJhY3Rpb25fcGF0aCBvciB0aGUgUFlUSE9OX0VHR19DQUNIRSBlbnZpcm9ubWVudCB2YXJpYWJsZSkuKQtywAAAAHLmAAAActMAAADaB2Vudmlyb27aBHN0YXTaB3N0X21vZGXaB1NfSVdPVEjaB1NfSVdHUlDaCHdhcm5pbmdz2gR3YXJu2gtVc2VyV2FybmluZykDcsEAAADaBG1vZGXaA21zZ3IbAAAAchsAAAByHAAAAHJ8AQAAwwQAAHMSAAAAAAoaBAQBDAEUAgIEAvwC/wIHeixSZXNvdXJjZU1hbmFnZXIuX3dhcm5fdW5zYWZlX2V4dHJhY3Rpb25fcGF0aGMDAAAAAAAAAAAAAAAEAAAABAAAAEMAAABzLgAAAHQAagFkAWsCcip0AKACfAGhAWoDZAJCAGQDQAB9A3QAoAR8AXwDoQIBAGQEUwApBWE0AgAAUGVyZm9ybSBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgcG9zdHByb2Nlc3Npbmcgb2YgYHRlbXBuYW1lYAoKICAgICAgICBUaGlzIGlzIHdoZXJlIE1hYyBoZWFkZXIgcmV3cml0ZXMgc2hvdWxkIGJlIGRvbmU7IG90aGVyIHBsYXRmb3JtcyBkb24ndAogICAgICAgIGhhdmUgYW55dGhpbmcgc3BlY2lhbCB0aGV5IHNob3VsZCBkby4KCiAgICAgICAgUmVzb3VyY2UgcHJvdmlkZXJzIHNob3VsZCBjYWxsIHRoaXMgbWV0aG9kIE9OTFkgYWZ0ZXIgc3VjY2Vzc2Z1bGx5CiAgICAgICAgZXh0cmFjdGluZyBhIGNvbXByZXNzZWQgcmVzb3VyY2UuICBUaGV5IG11c3QgTk9UIGNhbGwgaXQgb24gcmVzb3VyY2VzCiAgICAgICAgdGhhdCBhcmUgYWxyZWFkeSBpbiB0aGUgZmlsZXN5c3RlbS4KCiAgICAgICAgYHRlbXBuYW1lYCBpcyB0aGUgY3VycmVudCAodGVtcG9yYXJ5KSBuYW1lIG9mIHRoZSBmaWxlLCBhbmQgYGZpbGVuYW1lYAogICAgICAgIGlzIHRoZSBuYW1lIGl0IHdpbGwgYmUgcmVuYW1lZCB0byBieSB0aGUgY2FsbGVyIGFmdGVyIHRoaXMgcm91dGluZQogICAgICAgIHJldHVybnMuCiAgICAgICAg2gVwb3NpeGltAQAAaf8PAABOKQVywAAAAHLmAAAAcoUBAAByhgEAANoFY2htb2QpBHKaAAAA2gh0ZW1wbmFtZdoIZmlsZW5hbWVyjAEAAHIbAAAAchsAAAByHAAAANoLcG9zdHByb2Nlc3PdBAAAcwYAAAAADwoCFAF6G1Jlc291cmNlTWFuYWdlci5wb3N0cHJvY2Vzc2MCAAAAAAAAAAAAAAACAAAAAgAAAEMAAABzGAAAAHwAagByDnQBZAGDAYIBfAF8AF8CZAJTACkDYdIDAABTZXQgdGhlIGJhc2UgcGF0aCB3aGVyZSByZXNvdXJjZXMgd2lsbCBiZSBleHRyYWN0ZWQgdG8sIGlmIG5lZWRlZC4KCiAgICAgICAgSWYgeW91IGRvIG5vdCBjYWxsIHRoaXMgcm91dGluZSBiZWZvcmUgYW55IGV4dHJhY3Rpb25zIHRha2UgcGxhY2UsIHRoZQogICAgICAgIHBhdGggZGVmYXVsdHMgdG8gdGhlIHJldHVybiB2YWx1ZSBvZiBgYGdldF9kZWZhdWx0X2NhY2hlKClgYC4gIChXaGljaAogICAgICAgIGlzIGJhc2VkIG9uIHRoZSBgYFBZVEhPTl9FR0dfQ0FDSEVgYCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgd2l0aCB2YXJpb3VzCiAgICAgICAgcGxhdGZvcm0tc3BlY2lmaWMgZmFsbGJhY2tzLiAgU2VlIHRoYXQgcm91dGluZSdzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUKICAgICAgICBkZXRhaWxzLikKCiAgICAgICAgUmVzb3VyY2VzIGFyZSBleHRyYWN0ZWQgdG8gc3ViZGlyZWN0b3JpZXMgb2YgdGhpcyBwYXRoIGJhc2VkIHVwb24KICAgICAgICBpbmZvcm1hdGlvbiBnaXZlbiBieSB0aGUgYGBJUmVzb3VyY2VQcm92aWRlcmBgLiAgWW91IG1heSBzZXQgdGhpcyB0byBhCiAgICAgICAgdGVtcG9yYXJ5IGRpcmVjdG9yeSwgYnV0IHRoZW4geW91IG11c3QgY2FsbCBgYGNsZWFudXBfcmVzb3VyY2VzKClgYCB0bwogICAgICAgIGRlbGV0ZSB0aGUgZXh0cmFjdGVkIGZpbGVzIHdoZW4gZG9uZS4gIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0CiAgICAgICAgYGBjbGVhbnVwX3Jlc291cmNlcygpYGAgd2lsbCBiZSBhYmxlIHRvIHJlbW92ZSBhbGwgZXh0cmFjdGVkIGZpbGVzLgoKICAgICAgICAoTm90ZTogeW91IG1heSBub3QgY2hhbmdlIHRoZSBleHRyYWN0aW9uIHBhdGggZm9yIGEgZ2l2ZW4gcmVzb3VyY2UKICAgICAgICBtYW5hZ2VyIG9uY2UgcmVzb3VyY2VzIGhhdmUgYmVlbiBleHRyYWN0ZWQsIHVubGVzcyB5b3UgZmlyc3QgY2FsbAogICAgICAgIGBgY2xlYW51cF9yZXNvdXJjZXMoKWBgLikKICAgICAgICB6NUNhbid0IGNoYW5nZSBleHRyYWN0aW9uIHBhdGgsIGZpbGVzIGFscmVhZHkgZXh0cmFjdGVkTikDcmwBAAByTwAAAHJwAQAAqQJymgAAAHLBAAAAchsAAAByGwAAAHIcAAAAcmUAAADxBAAAcwoAAAAAEwYBAgEC/wQEeiNSZXNvdXJjZU1hbmFnZXIuc2V0X2V4dHJhY3Rpb25fcGF0aEZjAgAAAAAAAAAAAAAAAgAAAAEAAABDAAAAcwQAAABkAVMAKQJhQgIAAAogICAgICAgIERlbGV0ZSBhbGwgZXh0cmFjdGVkIHJlc291cmNlIGZpbGVzIGFuZCBkaXJlY3RvcmllcywgcmV0dXJuaW5nIGEg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ICAgICBUcnVlCiAgICAgICAgPj4+IHdhcm5lZC5jbGVhcigpCiAgICAgICAgPj4+IHZycCgnL2Zvby9iYXIudHh0JykKICAgICAgICA+Pj4gYm9vbCh3YXJuZWQpCiAgICAgICAgVHJ1ZQogICAgICAgID4+PiB2cnAoJ2Zvby8uLi8uLi9iYXIudHh0JykKICAgICAgICA+Pj4gYm9vbCh3YXJuZWQpCiAgICAgICAgVHJ1ZQogICAgICAgID4+PiB3YXJuZWQuY2xlYXIoKQogICAgICAgID4+PiB2cnAoJ2Zvby9mLi4vYmFyLnR4dCcpCiAgICAgICAgPj4+IGJvb2wod2FybmVkKQogICAgICAgIEZhbHNlCgogICAgICAgIFdpbmRvd3MgcGF0aCBzZXBhcmF0b3JzIGFyZSBzdHJhaWdodC11cCBkaXNhbGxvd2VkLgogICAgICAgID4+PiB2cnAocidcZm9vL2Jhci50eHQnKQogICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgICAuLi4KICAgICAgICBWYWx1ZUVycm9yOiBVc2Ugb2YgLi4gb3IgYWJzb2x1dGUgcGF0aCBpbiBhIHJlc291cmNlIHBhdGggaXMgbm90IGFsbG93ZWQuCgogICAgICAgID4+PiB2cnAocidDOlxmb28vYmFyLnR4dCcpCiAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgIC4uLgogICAgICAgIFZhbHVlRXJyb3I6IFVzZSBvZiAuLiBvciBhYnNvbHV0ZSBwYXRoIGluIGEgcmVzb3VyY2UgcGF0aCBpcyBub3QgYWxsb3dlZC4KCiAgICAgICAgQmxhbmsgdmFsdWVzIGFyZSBhbGxvd2VkCgogICAgICAgID4+PiB2cnAoJycpCiAgICAgICAgPj4+IGJvb2wod2FybmVkKQogICAgICAgIEZhbHNlCgogICAgICAgIE5vbi1zdHJpbmcgdmFsdWVzIGFyZSBub3QuCgogICAgICAgID4+PiB2cnAoTm9uZSkKICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAgLi4uCiAgICAg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GwAAAHIbAAAAchwAAABy8QAAAHYHAABzAgAAAAABeh9GaWxlTWV0YWRhdGEuZ2V0X21ldGFkYXRhX2xpbmVzTikKchcAAAByGAAAAHIZAAAAchoAAAByAwEAAHKxAQAAcu8AAABy8AAAAHI2AgAAcvEAAAByGwAAAHIbAAAAchsAAAByHAAAAHKHAAAAUAcAAHMOAAAACAEECwgDCAMIAwgJCAhjAAAAAAAAAAAAAAAAAAAAAAIAAABAAAAAcxgAAABlAFoBZABaAmQBWgNkAmQDhABaBGQEUwApBXKIAAAAYXMCAABNZXRhZGF0YSBwcm92aWRlciBmb3IgZWdnIGRpcmVjdG9yaWVzCgogICAgVXNhZ2U6OgoKICAgICAgICAjIERldmVsb3BtZW50IGVnZ3M6CgogICAgICAgIGVnZ19pbmZvID0gIi9wYXRoL3RvL1BhY2thZ2VOYW1lLmVnZy1pbmZvIgogICAgICAgIGJhc2VfZGlyID0gb3MucGF0aC5kaXJuYW1lKGVnZ19pbmZvKQogICAgICAgIG1ldGFkYXRhID0gUGF0aE1ldGFkYXRhKGJhc2VfZGlyLCBlZ2dfaW5mbykKICAgICAgICBkaXN0X25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoZWdnX2luZm8pKVswXQogICAgICAgIGRpc3QgPSBEaXN0cmlidXRpb24oYmFzZWRpciwgcHJvamVjdF9uYW1lPWRpc3RfbmFtZSwgbWV0YWRhdGE9bWV0YWRhdGEpCgogICAgICAgICMgVW5wYWNrZWQgZWdnIGRpcmVjdG9yaWVzOgoKICAgICAgICBlZ2dfcGF0aCA9ICIvcGF0aC90by9QYWNrYWdlTmFtZS12ZXItcHl2ZXItZXRjLmVnZyIKICAgICAgICBtZXRhZGF0YSA9IFBhdGhNZXRhZGF0YShlZ2dfcGF0aCwgb3MucGF0aC5qb2luKGVnZ19wYXRoLCdFR0ctSU5GTycpKQogICAgICAgIGRpc3QgPSBEaXN0cmlidXRpb24uZnJvbV9maWxlbmFtZShlZ2dfcGF0aCwgbWV0YWRhdGE9bWV0YWRhdGEpCiAgICBjAwAAAAAAAAAAAAAAAwAAAAIAAABDAAAAcxAAAAB8AXwAXwB8AnwAXwFk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AHI/AAAA2gpfc2dldF9ub25l2gpfc3NldF9ub25lclIAAADaB19fYWxsX19yewEAAHJuAAAAcm8AAABypQAAAHJwAAAAcnEAAAByrQAAAHKiAAAAcmsBAABygAAAAHKBAAAAcoIAAABygwAAAHKEAAAAcpIAAAByVQAAAHJNAAAAcs4AAAByRwAAAHLCAQAAckgAAABy2QAAAHJ2AAAAcncAAAByVAAAAHKVAAAAclYAAAByVwAAAHJYAAAAclkAAAByhQAAAHKGAAAAcmkAAAByJwAAAHIlAQAAcmgAAABylgAAAHJyAAAAcmoAAAByZwAAAHJ0AAAAcnUAAAByegAAAHJ7AAAAcnwAAAByfQAAAHKMAAAAchkDAAByjQAAAHKOAAAAcuwBAAByigAAAHKLAAAAcu8BAABy+QEAAHKPAAAAckkCAAByhwAAAHKIAAAAcokAAABykAAAAHJkAAAAckcCAAByTgIAAHJXAgAAcmECAAByWAIAAHJlAgAAclwCAAByYwIAAHJ4AgAAcmQCAADaC0ltcEltcG9ydGVycsMAAAByfgIAAHKRAAAAcpACAAByjQIAAHJhAAAAcpMAAABypgIAAHKnAgAAcn8AAAByqgIAAHJaAgAAct4BAAByWwIAAHKLAgAAcngAAABySQAAAHK2AgAA2gdWRVJCT1NF2gpJR05PUkVDQVNFcuACAABybQAAAHLVAgAActkCAAByawAAAHIbAwAAch0DAABy3wIAAHITAwAAck8AAAByLgMAAHJzAAAAci8BAABybAAAAHI8AwAAcrgAAAByfgAAAHJ6AQAAcnkAAAByHgIAANoOZmlsdGVyd2FybmluZ3NyTQMAAHIkAAAAclADAAByUgMAANoHV2FybmluZ3KUAAAAchsAAAByGwAAAHIbAAAAchwAAADaCDxtb2R1bGU+AgAAAHNaAgAABBAMAggBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQgBCAEIAQwCAgEMARACDgICAQgBEAEKAgwBFAMMAQIBFAEIARACCgIMARACAgEMAgoBEAEKAgwBDAEMAQgBCAEIAQgDBAMeAQgCCAIEAQQEBAEEAQQBBAEEAQQBBAEEAQQBBAEEAQQBBAEEAQQBBAEEAxAHCAcEAwgFCAgIBwgECAUIBAgEDAMIGgIAAgACAAIBAgACAAIBAgECAAIAAgECAAIAAgMCAAIAAgECAAIAAgECAwIAAgACAQIAAgACAwIAAgACAQIAAgMCAwIAAgACAAIBAgACAAIAAgECAAIAAgACAwIAAgMCAAIAAgACAAIDAgACAAIBAgACAAIAAgECAAIAAgACAQIAAgACAQIAAgMCAwIAAtIEMhAHECAQDRAbEAQEAgwBBAEEAQQBBAEEAwgKCA0MEAgECBgKAQoCBAMILggKBAMICwgFDAUIBQ4XEBwOfwB/AH8ABRAUDn8AFAQDEBAOfwA1CAwICAgMCAkICAgODA8OfwBBCgMQFhAbCAMQEQYDEBsQFBB/AC0MAxAqEBkQDwwDCAoMBwwbDAMMBAoDCBoMIAgRDhEIFQgPCAsIDgwCDAEMAgwBDAMIEggfCCIIIgwMCA0MAQwCDAEMAwgECgMIBQgLDAgIBwgKCAgIDgwBBAECCQr2Bg4OfwAFCAkIDQ5/AH8AfwAnEBMQMwIBAgEC/QYHCA0QBQgWFDcICggICAYIDQgaCA8QBAgFAgEQCwIBCiY=