{"id":950565,"date":"2026-09-23T01:45:33","date_gmt":"2026-09-22T23:45:33","guid":{"rendered":"https:\/\/istriceillustration.com\/tiendas-acceso-privado\/"},"modified":"2026-10-06T01:19:55","modified_gmt":"2026-10-05T23:19:55","slug":"tiendas-acceso-privado","status":"publish","type":"page","link":"https:\/\/istriceillustration.com\/en\/tiendas-acceso-privado\/","title":{"rendered":"Tiendas \u2014 acceso privado"},"content":{"rendered":"<p><script>\nfunction __istriceReplace(){\n  var html = decodeURIComponent(escape(atob('PGhlYWQ+CjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgo8dGl0bGU+SVNUUklDRSDigJQgQ2F0w6Fsb2dvPC90aXRsZT4KPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQHN1cGFiYXNlL3N1cGFiYXNlLWpzQDIuMTE3LjIvZGlzdC91bWQvc3VwYWJhc2UubWluLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2pzcGRmLzIuNS4xL2pzcGRmLnVtZC5taW4uanMiPjwvc2NyaXB0Pgo8c3R5bGU+CiAgLyogMTgvMDkvMjAyNjogV29yZFByZXNzIGNvbnZpZXJ0ZSBsb3MgZW1vamlzIGRlIHRleHRvICjinIXimqDvuI\/wn5SSKSBlbiA8aW1nIGNsYXNzPSJlbW9qaSI+CiAgICAgdHJhw61kYXMgZGUgcy53Lm9yZy4gTGEgcmVnbGEgZGUgV1AgcXVlIGxvcyBhY2hpY2EgYSAxZW0gdml2ZSBlbiBlbCA8aGVhZD4gb3JpZ2luYWwsCiAgICAgeSBudWVzdHJvIGRvY3VtZW50LndyaXRlKCkgYWwgZGVzcGxlZ2FyIHNlIGxvIGxsZXZhIHBvciBkZWxhbnRlLCBkZWphbmRvIGxhIGltYWdlbgogICAgIGEgc3UgdGFtYcOxbyBuYXRpdm8gKGdpZ2FudGUpLiBMYSBmaWphbW9zIGFxdcOtIHBhcmEgcXVlIHNvYnJldml2YSBzaWVtcHJlLiAqLwogIGltZy5lbW9qaSwgaW1nLndwLXNtaWxleXsKICAgIGhlaWdodDoxZW0gIWltcG9ydGFudDsKICAgIHdpZHRoOjFlbSAhaW1wb3J0YW50OwogICAgbWFyZ2luOjAgLjA1ZW0gMCAuMWVtICFpbXBvcnRhbnQ7CiAgICB2ZXJ0aWNhbC1hbGlnbjotMC4xZW0gIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6bm9uZSAhaW1wb3J0YW50OwogICAgcGFkZGluZzowICFpbXBvcnRhbnQ7CiAgICBib3JkZXI6bm9uZSAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzpub25lICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OmlubGluZS1ibG9jayAhaW1wb3J0YW50OwogIH0KICBAbWVkaWEgcHJpbnR7CiAgICBib2R5ICp7dmlzaWJpbGl0eTpoaWRkZW47fQogICAgI2FkbWluLXByaW50LXN1bW1hcnksICNhZG1pbi1wcmludC1zdW1tYXJ5ICp7dmlzaWJpbGl0eTp2aXNpYmxlO30KICAgICNhZG1pbi1wcmludC1zdW1tYXJ5e3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDt3aWR0aDoxMDAlO30KICAgICNhZG1pbi1wcmludC1zdW1tYXJ5IGJ1dHRvbntkaXNwbGF5Om5vbmU7fQogICAgI2FkbWluLXByaW50LXN1bW1hcnkgLm5vLXByaW50e2Rpc3BsYXk6bm9uZTt9CiAgICAjYWRtaW4tcHJpbnQtc3VtbWFyeSAucHJpbnQtb25seXtkaXNwbGF5OmlubGluZSAhaW1wb3J0YW50O30KICAgIC8qIExhIHRhcmpldGEgZGUgTMOhbWluYXMgcHVlZGUgZXN0YXIgcGxlZ2FkYSBhbCBpbXByaW1pcjogZm9yemFtb3MgcXVlIHNlIHZlYSBpZ3VhbG1lbnRlLiAqLwogICAgI3BlZGNhcmQtYm9keS1sYW1pbmFzLmhpZGRlbntkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQ7fQogICAgI21pc3RvY2stcHJpbnQsICNtaXN0b2NrLXByaW50ICp7dmlzaWJpbGl0eTp2aXNpYmxlO30KICAgICNtaXN0b2NrLXByaW50e3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDt3aWR0aDoxMDAlO30KICAgICNtaXN0b2NrLXByaW50IC5uby1wcmludHtkaXNwbGF5Om5vbmU7fQogICAgI21pc3RvY2stcHJpbnQgLnByaW50LW9ubHl7ZGlzcGxheTpibG9jayAhaW1wb3J0YW50O30KICB9CiAgOnJvb3R7CiAgICAtLWJnOiNmYWY3ZjI7IC0taW5rOiMxYzFjMWM7IC0tYWNjZW50OiNjOTRmMmQ7IC0tbGluZTojZTRkZGQyOyAtLWNhcmQ6I2ZmZjsgLS1hY2NlbnQyOiMyZjVkNTA7CiAgICAtLWZvbnQtZGlzcGxheTonRnJhdW5jZXMnLCdHZW9yZ2lhJyxzZXJpZjsKICB9CiAgKntib3gtc2l6aW5nOmJvcmRlci1ib3g7fQogIGJvZHl7bWFyZ2luOjA7Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsIlNlZ29lIFVJIixBcmlhbCxzYW5zLXNlcmlmO2JhY2tncm91bmQ6dmFyKC0tYmcpO2NvbG9yOnZhcigtLWluayk7fQogIGhlYWRlcntib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1saW5lKTtwb3NpdGlvbjpzdGlja3k7dG9wOjA7YmFja2dyb3VuZDp2YXIoLS1iZyk7ei1pbmRleDoxMDtwYWRkaW5nOjAgMjRweDt9CiAgLmhlYWRlci1pbm5lcnttYXgtd2lkdGg6MTEwMHB4O21hcmdpbjowIGF1dG87ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjE2cHggMDtmbGV4LXdyYXA6d3JhcDtnYXA6MTBweDt9CiAgaGVhZGVyIGgxe2ZvbnQtc2l6ZToyMHB4O21hcmdpbjowO2xldHRlci1zcGFjaW5nOjFweDt9CiAgbmF2e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC13cmFwOndyYXA7fQogIG5hdiBidXR0b257YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6MDtwYWRkaW5nOjlweCAxNnB4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxNHB4O2NvbG9yOnZhcigtLWluayk7dHJhbnNpdGlvbjpjb2xvciAuMTVzIGVhc2U7cG9zaXRpb246cmVsYXRpdmU7fQogICNtYWluLW5hdiA+IGJ1dHRvbjpub3QoOmZpcnN0LWNoaWxkKXtib3JkZXItbGVmdDoxcHggc29saWQgdmFyKC0tbGluZSk7fQogIG5hdiBidXR0b24uYWN0aXZle2NvbG9yOnZhcigtLWFjY2VudCk7Zm9udC13ZWlnaHQ6NjAwO2JhY2tncm91bmQ6bm9uZTt9CiAgbmF2IGJ1dHRvbi5hY3RpdmU6OmFmdGVye2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7bGVmdDoxNnB4O3JpZ2h0OjE2cHg7Ym90dG9tOjA7aGVpZ2h0OjJweDtiYWNrZ3JvdW5kOnZhcigtLWFjY2VudCk7Ym9yZGVyLXJhZGl1czoycHg7fQogIEBtZWRpYSAoaG92ZXI6aG92ZXIpeyBuYXYgYnV0dG9uOm5vdCguYWN0aXZlKTpub3QoLnN0b3JlLWJ0bik6aG92ZXJ7Y29sb3I6dmFyKC0tYWNjZW50KTtiYWNrZ3JvdW5kOm5vbmU7fSB9CiAgLnN0b3JlLWJ0bntiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Y29sb3I6dmFyKC0tYWNjZW50Mik7Zm9udC13ZWlnaHQ6NjAwO2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7cGFkZGluZzo5cHggMTJweDtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MTRweDt9CiAgLnN0b3JlLWJ0bjpob3Zlcntjb2xvcjojMWY0MjM4O2JhY2tncm91bmQ6bm9uZTt9CiAgLnVzZXItYXZhdGFye2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7d2lkdGg6MjJweDtoZWlnaHQ6MjJweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnZhcigtLWFjY2VudDIpO2NvbG9yOiNmZmY7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NzAwO2ZsZXg6MCAwIGF1dG87fQogIC5zdG9yZS1idG46aG92ZXIgLnVzZXItYXZhdGFye2JhY2tncm91bmQ6IzFmNDIzODt9CiAgI2hlYWRlci11c2VyLW5hbWV7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO30KICAudXNlci1tZW51LXdyYXB7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtZmxleDtmbGV4OjAgMCBhdXRvO2JvcmRlci1sZWZ0OjFweCBzb2xpZCB2YXIoLS1saW5lKTttYXJnaW4tbGVmdDo0cHg7fQogIC51c2VyLW1lbnUtZHJvcGRvd257cG9zaXRpb246YWJzb2x1dGU7dG9wOmNhbGMoMTAwJSArIDZweCk7cmlnaHQ6MDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjEwcHg7Ym94LXNoYWRvdzowIDZweCAyMHB4IHJnYmEoMCwwLDAsLjE0KTttaW4td2lkdGg6MTcwcHg7b3ZlcmZsb3c6aGlkZGVuO3otaW5kZXg6MjA7fQogIC51c2VyLW1lbnUtZHJvcGRvd24gYnV0dG9ue2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmxlZnQ7cGFkZGluZzoxMHB4IDE0cHg7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQ6bm9uZTtmb250LXNpemU6MTRweDtjdXJzb3I6cG9pbnRlcjtjb2xvcjp2YXIoLS1pbmspO30KICAudXNlci1tZW51LWRyb3Bkb3duIGJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWNyZW1hLTIpO30KICAudXNlci1tZW51LWRyb3Bkb3duIGJ1dHRvbi5sb2dvdXR7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tbGluZSk7Y29sb3I6dmFyKC0tYWNjZW50KTt9CiAgLm5hdi1zY3JvbGwtd3JhcHtwb3NpdGlvbjpyZWxhdGl2ZTttaW4td2lkdGg6MDt9CiAgLm5hdi1zY3JvbGwtd3JhcDo6YmVmb3JlLCAubmF2LXNjcm9sbC13cmFwOjphZnRlcntjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTo0cHg7d2lkdGg6MzJweDtwb2ludGVyLWV2ZW50czpub25lO29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgLjE1czt6LWluZGV4OjE7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtmb250LXNpemU6MThweDtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tc3VhdmUpO30KICAubmF2LXNjcm9sbC13cmFwOjpiZWZvcmV7bGVmdDowO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O3BhZGRpbmctbGVmdDoycHg7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHZhcigtLWJnKSA0MCUsIHRyYW5zcGFyZW50KTt9CiAgLm5hdi1zY3JvbGwtd3JhcDo6YWZ0ZXJ7cmlnaHQ6MDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7cGFkZGluZy1yaWdodDoycHg7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgdmFyKC0tYmcpIDQwJSwgdHJhbnNwYXJlbnQpO30KICAubmF2LXNjcm9sbC13cmFwLnNjcm9sbC1sZWZ0OjpiZWZvcmV7b3BhY2l0eToxO2NvbnRlbnQ6J+KAuSc7fQogIC5uYXYtc2Nyb2xsLXdyYXAuc2Nyb2xsLXJpZ2h0OjphZnRlcntvcGFjaXR5OjE7Y29udGVudDon4oC6Jzt9CiAgLyogSWNvbm8gZGUgQWRtaW4gYXBhcnRlICgxNi8wOS8yMDI2KTogZXMgdW4gYm90w7NuIGN1YWRyYWRvLCBhc8OtIHF1ZSBubyBsZSB2YWxlIGxhIHJheWl0YSBkZQogICAgIHN1YnJheWFkbyBxdWUgdXNhbiBsYXMgZGVtw6FzIHBlc3Rhw7FhcyBkZSB0ZXh0byAobmF2IGJ1dHRvbi5hY3RpdmU6OmFmdGVyKSDigJQgZW4gc3UgbHVnYXIsCiAgICAgZm9uZG8gZGUgY29sb3IgY3VhbmRvIGVzdMOhIGFjdGl2by9ob3ZlciwgY29tbyB1biBib3TDs24gZGUgaWNvbm8gbm9ybWFsLiAqLwogICNhZG1pbi1uYXYtd3JhcHttYXJnaW4tbGVmdDoycHg7fQogICNuYXYtYWRtaW57Y29sb3I6dmFyKC0tc3VhdmUpO30KICAjbmF2LWFkbWluOmhvdmVye2JhY2tncm91bmQ6I2YxZWNlMztjb2xvcjp2YXIoLS1hY2NlbnQyKTt9CiAgI25hdi1hZG1pbi5hY3RpdmV7YmFja2dyb3VuZDp2YXIoLS1hY2NlbnQyKTtjb2xvcjojZmZmO30KICAjbmF2LWFkbWluLmFjdGl2ZTo6YWZ0ZXJ7Y29udGVudDpub25lO30KICBAbWVkaWEgKG1heC13aWR0aDo2NDBweCl7CiAgICBuYXZ7ZmxleC13cmFwOm5vd3JhcDtvdmVyZmxvdy14OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7cGFkZGluZy1ib3R0b206NHB4O30KICAgIG5hdiBidXR0b257ZmxleDowIDAgYXV0bzt9CiAgICAvKiBTb2xvIGVuIG3Ds3ZpbCBoYWNlIGZhbHRhIGFjb3J0YXIgZWwgbm9tYnJlIGRlIHRpZW5kYS91c3VhcmlvIOKAlCBlbiBlc2NyaXRvcmlvIGhheSBzaXRpbwogICAgICAgZGUgc29icmEgeSBjb3J0YXJsbyBhaMOtIHNlcsOtYSBxdWl0YXIgaW5mb3JtYWNpw7NuIHNpbiBuZWNlc2lkYWQuICovCiAgICAjaGVhZGVyLXVzZXItbmFtZXttYXgtd2lkdGg6OTBweDt9CiAgICAuaGVhZGVyLWlubmVye3BhZGRpbmc6MTBweCAwIDRweDtnYXA6NHB4IDZweDt9CiAgICAvKiAxOC8wOS8yMDI2OiBjYWJlY2VyYSBlbiAyIGZpbGFzIChsb2dvICsgdXN1YXJpby9hZG1pbiBhcnJpYmEsIHBlc3Rhw7FhcyBkZWJham8pIGVuIHZleiBkZSAzICovCiAgICBoZWFkZXJ7cGFkZGluZzowIDE2cHg7fQogICAgI2hlYWRlci1sb2dve29yZGVyOjE7aGVpZ2h0OjI4cHggIWltcG9ydGFudDt9CiAgICAuaGVhZGVyLWlubmVyID4gZGl2Omxhc3QtY2hpbGR7b3JkZXI6MjttYXJnaW4tbGVmdDphdXRvO30KICAgIC5uYXYtc2Nyb2xsLXdyYXB7b3JkZXI6MztmbGV4OjEgMSAxMDAlO30KICAgICNtYWluLW5hdiA+IGJ1dHRvbjpmaXJzdC1jaGlsZHtwYWRkaW5nLWxlZnQ6MDt9CiAgICAjbWFpbi1uYXYgPiBidXR0b246Zmlyc3QtY2hpbGQuYWN0aXZlOjphZnRlcntsZWZ0OjA7fQogICAgLnVzZXItbWVudS13cmFwe2JvcmRlci1sZWZ0Om5vbmU7fQogICAgbWFpbntwYWRkaW5nOjE2cHg7fQogICAgLyogU2VsZWN0cyBkZSB0aWVuZGEvbWVzIGEgdG9kbyBlbCBhbmNobzogbGFkbyBhIGxhZG8gc2UgY29ydGFiYW4gKCJJU1RSSUNFIChNZXJjYeKApiIpICovCiAgICAjb3JkZXItZm9ybSA+IC5yb3cgPiBkaXYsICNzYWxlcy1mb3JtID4gLnJvdyA+IGRpdntmbGV4OjEgMSAxMDAlICFpbXBvcnRhbnQ7bWF4LXdpZHRoOm5vbmUgIWltcG9ydGFudDt9CiAgICAuc3RvY2stZ3JpZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsbWlubWF4KDAsMWZyKSkgIWltcG9ydGFudDt9CiAgfQogIG1haW57bWF4LXdpZHRoOjExMDBweDttYXJnaW46MCBhdXRvO3BhZGRpbmc6MjRweDt9CiAgLmhpZGRlbntkaXNwbGF5Om5vbmUgIWltcG9ydGFudDt9CiAgLmdhdGV7bWF4LXdpZHRoOjM2MHB4O21hcmdpbjoxNXZoIGF1dG87cGFkZGluZzozMnB4O2JhY2tncm91bmQ6dmFyKC0tY2FyZCk7Ym9yZGVyLXJhZGl1czoxMnB4O2JveC1zaGFkb3c6MCA0cHggMjBweCByZ2JhKDAsMCwwLC4wOCk7dGV4dC1hbGlnbjpjZW50ZXI7fQogIC5nYXRlIGlucHV0e3dpZHRoOjEwMCU7cGFkZGluZzoxMHB4O21hcmdpbjoxMHB4IDA7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjZweDtmb250LXNpemU6MTZweDt9CiAgLmdhdGUgYnV0dG9ue3dpZHRoOjEwMCU7cGFkZGluZzoxMHB4O2JhY2tncm91bmQ6dmFyKC0tYWNjZW50KTtjb2xvcjojZmZmO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6NnB4O2ZvbnQtc2l6ZToxNXB4O2N1cnNvcjpwb2ludGVyO30KICAudG9vbGJhcntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206MTZweDtmbGV4LXdyYXA6d3JhcDtnYXA6MTBweDt9CiAgLnNpemVidG5zIGJ1dHRvbntib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JhY2tncm91bmQ6I2ZmZjtwYWRkaW5nOjdweCAxNHB4O2JvcmRlci1yYWRpdXM6MjBweDtjdXJzb3I6cG9pbnRlcjttYXJnaW4tbGVmdDo2cHg7Zm9udC13ZWlnaHQ6NTAwO3RyYW5zaXRpb246YmFja2dyb3VuZCAuMTVzIGVhc2UsYm9yZGVyLWNvbG9yIC4xNXMgZWFzZSxjb2xvciAuMTVzIGVhc2U7fQogIC5zaXplYnRucyBidXR0b24uYWN0aXZle2JhY2tncm91bmQ6dmFyKC0taW5rKTtib3JkZXItY29sb3I6dmFyKC0taW5rKTtjb2xvcjojZmZmO2ZvbnQtd2VpZ2h0OjYwMDt9CiAgLnNpemVidG5zLmFkbWluLXRhYnMgYnV0dG9uLmFjdGl2ZXtiYWNrZ3JvdW5kOnZhcigtLXRhYmNvbG9yLCB2YXIoLS1hY2NlbnQyKSk7Ym9yZGVyLWNvbG9yOnZhcigtLXRhYmNvbG9yLCB2YXIoLS1hY2NlbnQyKSk7Y29sb3I6I2ZmZjt9CiAgLmFzdWItZG90e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjhweDtoZWlnaHQ6OHB4O2JvcmRlci1yYWRpdXM6NTAlO21hcmdpbi1yaWdodDo2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO30KICAuZ3JpZHtkaXNwbGF5OmdyaWQ7Z2FwOjE2cHg7fQogIC5ncmlkLnNtYWxse2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maWxsLG1pbm1heCgxMjBweCwxZnIpKTt9CiAgLmdyaWQubGFyZ2V7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDI2MHB4LDFmcikpO30KICAucGVkaWRvcy1ncmlke2Rpc3BsYXk6ZmxleDtnYXA6MTZweDtmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O30KICAucGVkaWRvcy1jb2x7ZmxleDoxIDEgMzgwcHg7bWluLXdpZHRoOjMyMHB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjE2cHg7fQogIC5wZWRjYXJke2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6I2ZmZjtvdmVyZmxvdzpoaWRkZW47fQogIC5wZWRjYXJkLWhlYWRlcnt3aWR0aDoxMDAlO3RleHQtYWxpZ246bGVmdDtiYWNrZ3JvdW5kOnZhcigtLWNyZW1hLTIpO2JvcmRlcjpub25lO3BhZGRpbmc6MTRweCAxNnB4O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLWluayk7fQogIC5wZWRjYXJkLWhlYWRlcjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWNyZW1hLTIpO30KICAucGVkY2FyZC10aXRsZXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7ZmxleC13cmFwOndyYXA7fQogIC5wZWRjYXJkLXN1bW1hcnl7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tc3VhdmUpO2ZvbnQtd2VpZ2h0OjQwMDt3aGl0ZS1zcGFjZTpub3dyYXA7fQogIC5wZWRjYXJkLWNhcmV0e2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTtmb250LXdlaWdodDo0MDA7ZmxleC1zaHJpbms6MDt9CiAgLnBlZGNhcmQtYm9keXtwYWRkaW5nOjE0cHggMTZweDt9CiAgLmNhcmR7YmFja2dyb3VuZDp2YXIoLS1jYXJkKTtib3JkZXItcmFkaXVzOjEwcHg7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjE1cyBlYXNlLGJveC1zaGFkb3cgLjE1cyBlYXNlLGJvcmRlci1jb2xvciAuMTVzIGVhc2U7fQogIC5jYXJkOmhvdmVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0zcHgpO2JveC1zaGFkb3c6MCAxMHB4IDIycHggcmdiYSgwLDAsMCwuMTApO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDt9CiAgLmNhcmQgaW1ne3dpZHRoOjEwMCU7YXNwZWN0LXJhdGlvOjMvNDtvYmplY3QtZml0OmNvdmVyO2JhY2tncm91bmQ6dmFyKC0tY3JlbWEtMik7ZGlzcGxheTpibG9jazt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMzVzIGVhc2U7fQogIC5jYXJkOmhvdmVyIGltZ3t0cmFuc2Zvcm06c2NhbGUoMS4wNDUpO30KICAuY2FyZCAubm9pbWd7d2lkdGg6MTAwJTthc3BlY3QtcmF0aW86My80O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjhweDtjb2xvcjojYzNhYjhmO2ZvbnQtc2l6ZToxMXB4O2xldHRlci1zcGFjaW5nOi4zcHg7YmFja2dyb3VuZDpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDEzNWRlZywjZjZmMmVhLCNmNmYyZWEgMTFweCwjZjBlOWRjIDExcHgsI2YwZTlkYyAyMnB4KTtib3JkZXI6MXB4IGRhc2hlZCAjZTBkM2JhO30KICAuY2FyZCAubm9pbWcgc3Zne3dpZHRoOjI2cHg7aGVpZ2h0OjI2cHg7b3BhY2l0eTouNTU7c3Ryb2tlOnZhcigtLWFjY2VudCk7fQogIC5jYXJkIC5tZXRhe3BhZGRpbmc6OHB4IDEwcHg7Zm9udC1zaXplOjEzcHg7fQogIC5jYXJke3Bvc2l0aW9uOnJlbGF0aXZlO30KICAuY2FyZCAubmV3LWJhZGdle3Bvc2l0aW9uOmFic29sdXRlO3RvcDo4cHg7bGVmdDo4cHg7YmFja2dyb3VuZDp2YXIoLS1hY2NlbnQpO2NvbG9yOiNmZmY7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4wNGVtO3BhZGRpbmc6M3B4IDdweDtib3JkZXItcmFkaXVzOjk5OXB4O3otaW5kZXg6MTtib3gtc2hhZG93OjAgMXB4IDNweCByZ2JhKDAsMCwwLC4yKTt9CiAgLm5ldy1zZWN0aW9uLXRpdGxle2dyaWQtY29sdW1uOjEvLTE7bWFyZ2luOjE0cHggMCAwO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS1pbmspO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWxpbmUpO3BhZGRpbmctYm90dG9tOjZweDt9CiAgLm5ldy1zZWN0aW9uLXRpdGxlOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MDt9CiAgLmJ0bi5uZXctdG9nZ2xlLm9ue2JhY2tncm91bmQ6dmFyKC0tYWNjZW50KTtib3JkZXItY29sb3I6I2M5NGYyZDtjb2xvcjojZmZmO30KICAuY2FyZCAubWV0YSAucmVme2NvbG9yOnZhcigtLXN1YXZlKTtmb250LXNpemU6MTFweDt9CiAgLm1vZGFsLWJne3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC43KTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3otaW5kZXg6MTAwO3BhZGRpbmc6MjBweDtvdmVyZmxvdy15OmF1dG87fQogIC5tb2RhbHtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czoxMHB4O21heC13aWR0aDo2MDBweDt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjttYXJnaW46YXV0bzt9CiAgLm1vZGFsLWltZ3dyYXB7cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OjU1dmg7bWF4LWhlaWdodDo1NXZoO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOnZhcigtLWNyZW1hLTIpO30KICAubW9kYWwtaW1nd3JhcCAuYmdibHVye3Bvc2l0aW9uOmFic29sdXRlO2luc2V0Oi0yNXB4O2JhY2tncm91bmQtc2l6ZTpjb3ZlcjtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjtmaWx0ZXI6Ymx1cigyOHB4KSBzYXR1cmF0ZSgxLjE1KTtvcGFjaXR5Oi41NTt0cmFuc2Zvcm06c2NhbGUoMS4xKTt9CiAgLm1vZGFsLWltZ3dyYXAgaW1ne3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7bWF4LWhlaWdodDo1NXZoO29iamVjdC1maXQ6Y29udGFpbjtkaXNwbGF5OmJsb2NrO21hcmdpbjowIGF1dG87fQogIC5tb2RhbCAubm9pbWd7aGVpZ2h0OjE4MHB4O30KICAubW9kYWwgLmJvZHl7cGFkZGluZzoxNnB4O30KICAucXR5LXN0ZXBwZXJ7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjIwcHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6I2ZmZjt9CiAgLnF0eS1zdGVwcGVyIGJ1dHRvbnt3aWR0aDozNnB4O2hlaWdodDozNnB4O2JvcmRlcjpub25lO2JhY2tncm91bmQ6I2ZmZjtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoxO2N1cnNvcjpwb2ludGVyO2NvbG9yOnZhcigtLWluayk7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3RyYW5zaXRpb246YmFja2dyb3VuZCAuMTVzIGVhc2U7fQogIC5xdHktc3RlcHBlciBidXR0b246aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jcmVtYS0yKTt9CiAgLnF0eS1zdGVwcGVyIHNwYW57bWluLXdpZHRoOjM0cHg7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NjAwO30KICBmb3JtLmJsb2NrIC5xdHktc3RlcHBlciBpbnB1dCwucXR5LXN0ZXBwZXIgaW5wdXR7d2lkdGg6NDZweDtoZWlnaHQ6MzZweDtib3JkZXI6bm9uZSAhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MCAhaW1wb3J0YW50O3BhZGRpbmc6MCAhaW1wb3J0YW50O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjYwMDtiYWNrZ3JvdW5kOiNmZmY7LW1vei1hcHBlYXJhbmNlOnRleHRmaWVsZDtib3gtc2hhZG93Om5vbmUgIWltcG9ydGFudDt9CiAgLnF0eS1zdGVwcGVyIGlucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLC5xdHktc3RlcHBlciBpbnB1dDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MDt9CiAgLnF0eS1zdGVwcGVyIGJ1dHRvbjpkaXNhYmxlZHtjb2xvcjojYzljM2JhO2N1cnNvcjpkZWZhdWx0O2JhY2tncm91bmQ6I2ZmZjt9CiAgLmNoYW4tYmFkZ2V7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6MnB4IDhweDtib3JkZXItcmFkaXVzOjk5OXB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aGl0ZS1zcGFjZTpub3dyYXA7fQogIC5jaGFuLWJhZGdlLmRlbW97YmFja2dyb3VuZDp2YXIoLS1hdmlzby1jbGFybyk7Y29sb3I6dmFyKC0tYXZpc28pO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYXZpc28tY2xhcm8pO30KICAuY2hhbi1iYWRnZS5sb3d7YmFja2dyb3VuZDp2YXIoLS1lcnJvci1jbGFybyk7Y29sb3I6dmFyKC0tZXJyb3IpO30KICAucm93LnNhbGUtbGluZXtmbGV4LXdyYXA6bm93cmFwO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjEycHg7fQogIC5yb3cuc2FsZS1saW5lID4gZGl2e2ZsZXg6aW5pdGlhbDttaW4td2lkdGg6MDt9CiAgLnJvdy5zYWxlLWxpbmUgPiAub3JkZXItbGluZS1maWVsZHN7ZmxleDoxO30KICAuc2FsZS1saW5lW2RhdGEtY29uZmlybWVkPSIxIl17YmFja2dyb3VuZDojZjNmOGYxO2JvcmRlci1jb2xvcjojY2ZlM2M4O30KICAuc2FsZS1saW5lLWFjdGlvbnN7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHg7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi10b3A6MTBweDt9CiAgLnNhbGUtbGluZS1hY3Rpb25zIC5vcmRlci1saW5lLXJlbW92ZXttYXJnaW4tbGVmdDphdXRvO30KICAuc3RvY2stdGFibGUgdGQ6Zmlyc3QtY2hpbGQsLnN0b2NrLXRhYmxlIHRoe3doaXRlLXNwYWNlOm5vd3JhcDt9CiAgLmFjdGxvZy1maWx0ZXJze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4IDEwcHg7YWxpZ24taXRlbXM6ZmxleC1lbmQ7fQogIC5hY3Rsb2ctZmlsdGVycyBsYWJlbHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW4tYm90dG9tOjNweDt9CiAgLmFjdGxvZy1maWx0ZXJzIHNlbGVjdCwuYWN0bG9nLWZpbHRlcnMgaW5wdXR7cGFkZGluZzo2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjZweDtmb250LXNpemU6MTNweDtmb250LWZhbWlseTppbmhlcml0O2JhY2tncm91bmQ6I2ZmZjt9CiAgLmFjdGxvZy1maWx0ZXJzIGlucHV0W3R5cGU9c2VhcmNoXXt3aWR0aDoxNTBweDt9CiAgLmFjdGxvZy1kYXl7cG9zaXRpb246c3RpY2t5O3RvcDowO2JhY2tncm91bmQ6dmFyKC0tY3JlbWEtMik7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLXN1YXZlKTt0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplO3BhZGRpbmc6NnB4IDRweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1saW5lKTt9CiAgLmFjdGxvZy1yb3d7ZGlzcGxheTpmbGV4O2dhcDo4cHg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtwYWRkaW5nOjdweCA0cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tbGluZSk7fQogIC5hY3Rsb2ctdGltZXtmbGV4OjAgMCA0MnB4O2NvbG9yOnZhcigtLXN1YXZlKTtmb250LXNpemU6MTJweDtwYWRkaW5nLXRvcDoxcHg7fQogIC5hY3Rsb2ctaWNvbntmbGV4OjAgMCAyMHB4O30KICAuYWN0bG9nLXRleHR7ZmxleDoxO21pbi13aWR0aDowO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTtsaW5lLWhlaWdodDoxLjQ7fQogIC5hY3Rsb2ctdGV4dCBzdHJvbmd7Y29sb3I6dmFyKC0taW5rKTtmb250LXNpemU6MTNweDt9CiAgLmFjdGxvZy1yb2xle2NvbG9yOnZhcigtLXN1YXZlKTtmb250LXNpemU6MTFweDt9CiAgLmNhcmQgLmhhdmUtYmFkZ2V7cG9zaXRpb246YWJzb2x1dGU7dG9wOjhweDtyaWdodDo4cHg7YmFja2dyb3VuZDpyZ2JhKDQ3LDkzLDgwLC45Mik7Y29sb3I6I2ZmZjtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo3MDA7cGFkZGluZzozcHggN3B4O2JvcmRlci1yYWRpdXM6OTk5cHg7ei1pbmRleDoxO30KICAuc2FsZXMtcmVtaW5kZXJ7YmFja2dyb3VuZDojZWVmNmYxO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNjZmUzZDY7Y29sb3I6IzFmNDIzODtmb250LXNpemU6MTRweDt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjlweCA0MHB4IDlweCAxMnB4O3Bvc2l0aW9uOnJlbGF0aXZlO30KICAuc2FsZXMtcmVtaW5kZXIgLmJ0bnttYXJnaW4tbGVmdDo2cHg7fQogIC5zYWxlcy1yZW1pbmRlci1jbG9zZXtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoxMHB4O3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2ZvbnQtc2l6ZToyMHB4O2NvbG9yOiMxZjQyMzg7Y3Vyc29yOnBvaW50ZXI7fQogIC5yZW9yZGVyLXN1Z2dlc3Rpb257ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHggMTJweDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YmFja2dyb3VuZDojZjNmOGYxO2JvcmRlcjoxcHggc29saWQgI2NmZTNjODtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjEwcHggMTJweDttYXJnaW46MCAwIDEycHg7Zm9udC1zaXplOjEzcHg7Y29sb3I6IzJkNGEzMzt9CiAgLmNhdGFsb2ctc2VhcmNoe21hcmdpbjowIDAgMTJweDt9CiAgLmNhdGFsb2ctc2VhcmNoIGlucHV0e3dpZHRoOjEwMCU7bWF4LXdpZHRoOjQyMHB4O3BhZGRpbmc6MTBweCAxMnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo5OTlweDtmb250LXNpemU6MTVweDtmb250LWZhbWlseTppbmhlcml0O2JhY2tncm91bmQ6I2ZmZjt9CiAgLmZtdC1zaXple2ZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW4tdG9wOjZweDt9CiAgLnNlY3Rpb24taW50cm97Zm9udC1zaXplOjE0cHg7Y29sb3I6dmFyKC0tc3VhdmUpO2xpbmUtaGVpZ2h0OjEuNDU7bWFyZ2luOi00cHggMCAxNHB4O30KICBzZWN0aW9uID4gLnNlY3Rpb24taW50cm97bWFyZ2luOjAgMCAxNHB4O30KICAuZm9yLXN0b3Jle2ZvbnQtc2l6ZToxNXB4O21hcmdpbjowIDAgMTJweDtwYWRkaW5nOjEwcHggMTJweDtiYWNrZ3JvdW5kOiNmYWYxZWM7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkICNjOTRmMmQ7Ym9yZGVyLXJhZGl1czo2cHg7fQogIC5vcmRlci1lbXB0eXtmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1zdWF2ZSk7YmFja2dyb3VuZDp2YXIoLS1jcmVtYS0yKTtib3JkZXI6MXB4IGRhc2hlZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjEycHg7bWFyZ2luOjAgMCAxMHB4O30KICAub3JkZXItbGluZXtkaXNwbGF5OmZsZXg7Z2FwOjEycHg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxMHB4O21hcmdpbi1ib3R0b206MTBweDt9CiAgLm9yZGVyLWxpbmUtdGh1bWJ7ZmxleDowIDAgNjRweDt3aWR0aDo2NHB4O2hlaWdodDo4NHB4O2JvcmRlci1yYWRpdXM6NnB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOnZhcigtLWNyZW1hLTIpO30KICAub3JkZXItbGluZS10aHVtYiBpbWd7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvYmplY3QtZml0OmNvdmVyO2Rpc3BsYXk6YmxvY2s7fQogIC5vcmRlci1saW5lLXRodW1iIC5ub2ltZ3t3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtjb2xvcjojYjVhZGEyO30KICAub3JkZXItbGluZS10aHVtYiAubm9pbWcgc3Zne3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7fQogIC5vcmRlci1saW5lLWZpZWxkc3tmbGV4OjE7bWluLXdpZHRoOjA7fQogIGZvcm0uYmxvY2sgLm9yZGVyLWxpbmUgbGFiZWx7bWFyZ2luLXRvcDowO30KICAub3JkZXItbGluZS1ib3R0b217ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxMHB4IDE0cHg7YWxpZ24taXRlbXM6ZmxleC1lbmQ7bWFyZ2luLXRvcDo4cHg7fQogIC5vcmRlci1saW5lLWZtdHtmb250LXNpemU6MTRweDtwYWRkaW5nOjhweCAwO30KICAub3JkZXItbGluZS1yZW1vdmV7bWFyZ2luLWxlZnQ6YXV0bztiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1lcnJvci1jbGFybyk7Y29sb3I6dmFyKC0tZXJyb3IpO2JvcmRlci1yYWRpdXM6NnB4O3BhZGRpbmc6N3B4IDEwcHg7Zm9udC1zaXplOjEzcHg7Y3Vyc29yOnBvaW50ZXI7fQogIC5vcmRlci1saW5lLXJlbW92ZTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWVycm9yLWNsYXJvKTt9CiAgZm9ybS5ibG9ja3tiYWNrZ3JvdW5kOnZhcigtLWNhcmQpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MjBweDttYXJnaW4tYm90dG9tOjIwcHg7fQogIGZvcm0uYmxvY2sgbGFiZWx7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1zdWF2ZSk7bWFyZ2luLXRvcDoxMHB4O21hcmdpbi1ib3R0b206NHB4O30KICBmb3JtLmJsb2NrIGlucHV0LGZvcm0uYmxvY2sgc2VsZWN0LGZvcm0uYmxvY2sgdGV4dGFyZWF7Zm9udC1mYW1pbHk6aW5oZXJpdDt3aWR0aDoxMDAlO3BhZGRpbmc6OHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo2cHg7Zm9udC1zaXplOjE0cHg7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cyBlYXNlLGJveC1zaGFkb3cgLjE1cyBlYXNlO30KICBmb3JtLmJsb2NrIGlucHV0OmZvY3VzLGZvcm0uYmxvY2sgc2VsZWN0OmZvY3VzLGZvcm0uYmxvY2sgdGV4dGFyZWE6Zm9jdXMsLmdhdGUgaW5wdXQ6Zm9jdXMsI2FkbWluLWlsbC1zZWFyY2g6Zm9jdXN7b3V0bGluZTpub25lO2JvcmRlci1jb2xvcjp2YXIoLS1hY2NlbnQpO2JveC1zaGFkb3c6MCAwIDAgM3B4IHJnYmEoMjAxLDc5LDQ1LC4xNCk7fQogICNhZG1pbi1pbGwtc2VhcmNoe3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xNXMgZWFzZSxib3gtc2hhZG93IC4xNXMgZWFzZTt9CiAgLnJvd3tkaXNwbGF5OmZsZXg7Z2FwOjhweDthbGlnbi1pdGVtczpmbGV4LWVuZDttYXJnaW4tYm90dG9tOjhweDtmbGV4LXdyYXA6d3JhcDt9CiAgLnJvdyA+IGRpdntmbGV4OjE7bWluLXdpZHRoOjEyMHB4O30KICAuYnRue2JhY2tncm91bmQ6dmFyKC0tYWNjZW50KTtjb2xvcjojZmZmO2JvcmRlcjpub25lO3BhZGRpbmc6OXB4IDE2cHg7Ym9yZGVyLXJhZGl1czo2cHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjE0cHg7fQogIC5idG4uc2Vjb25kYXJ5e2JhY2tncm91bmQ6I2ZmZjtjb2xvcjp2YXIoLS1pbmspO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7fQogIC5idG4uc21hbGx7cGFkZGluZzo1cHggMTBweDtmb250LXNpemU6MTJweDt9CiAgdGFibGV7d2lkdGg6MTAwJTtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7Zm9udC1zaXplOjEzcHg7YmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6OHB4O292ZXJmbG93OmhpZGRlbjt9CiAgdGFibGUgdGgsdGFibGUgdGR7cGFkZGluZzoxMHB4IDhweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1saW5lKTt0ZXh0LWFsaWduOmxlZnQ7fQogIHRhYmxlIHRoe2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1pbmspO2JhY2tncm91bmQ6dmFyKC0tY3JlbWEtMik7fQogIHRhYmxlIHRib2R5IHRye3RyYW5zaXRpb246YmFja2dyb3VuZCAuMTJzIGVhc2U7fQogIHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZChldmVuKXtiYWNrZ3JvdW5kOnZhcigtLWNyZW1hLTIpO30KICB0YWJsZSB0Ym9keSB0cjpob3ZlcntiYWNrZ3JvdW5kOiNmM2VjZTE7fQogIC50YWd7cGFkZGluZzoycHggOHB4O2JvcmRlci1yYWRpdXM6MTBweDtmb250LXNpemU6MTFweDt9CiAgLnRhZy5wZW5kaWVudGV7YmFja2dyb3VuZDp2YXIoLS1hdmlzby1jbGFybyk7fQogIC50YWcuaW1wcmVzb3tiYWNrZ3JvdW5kOiNjZmU4ZDU7fQogIC50YWcucmVjaWJpZG97YmFja2dyb3VuZDojZTZkY2Y1O30KICAudGFnLmVudmlhZG97YmFja2dyb3VuZDojY2ZlMGY1O30KICAudGFnLmNhbmNlbGFkb3tiYWNrZ3JvdW5kOiNmM2Q2ZDY7fQogIC5hZG1pbi1pdGVtOmhhcyg+IC5hZG1pbi1pdGVtLWJvZHkpe2dhcDoxNHB4ICFpbXBvcnRhbnQ7ZmxleC13cmFwOm5vd3JhcCAhaW1wb3J0YW50O30KICAuYWRtaW4taXRlbTpoYXMoPiAuYWRtaW4taXRlbS1ib2R5KSA+IGRpdntmbGV4OjAgMCBhdXRvO21pbi13aWR0aDowO30KICAuYWRtaW4taXRlbTpoYXMoPiAuYWRtaW4taXRlbS1ib2R5KSA+IC5hZG1pbi1pdGVtLWJvZHl7ZmxleDoxIDEgYXV0bzt9CiAgLmFkbWluLWl0ZW0tdGh1bWJ7ZmxleDowIDAgMTA4cHggIWltcG9ydGFudDt9CiAgLmFkbWluLWl0ZW0tYm9keXtmbGV4OjE7bWluLXdpZHRoOjA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6OHB4O3BhZGRpbmctdG9wOjRweDt9CiAgLmFkbWluLWl0ZW0tdGl0bGV7Zm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6MS4zNTt9CiAgLmFkbWluLWl0ZW0tc3RvY2t7bWF4LXdpZHRoOjEyMHB4O30KICAuYWRtaW4taXRlbS1hY3Rpb25ze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6NnB4O21hcmdpbi10b3A6YXV0bzt9CiAgQG1lZGlhIChtYXgtd2lkdGg6NTIwcHgpeyAuYWRtaW4taXRlbS10aHVtYntmbGV4LWJhc2lzOjgwcHg7fSAuYWRtaW4taXRlbS10aHVtYiBpbWcsLmFkbWluLWl0ZW0tdGh1bWIgPiBkaXZ7d2lkdGg6ODBweCAhaW1wb3J0YW50O2hlaWdodDoxMDdweCAhaW1wb3J0YW50O30gfQogIC5iaWxsaW5nLXN0b3JlLWhlYWR7YmFja2dyb3VuZDojZmFmMWVjO2JvcmRlci1sZWZ0OjRweCBzb2xpZCAjYzk0ZjJkO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MTJweCAxNHB4O21hcmdpbjotNHB4IDAgNHB4O30KICAuYmlsbGluZy1zdG9yZS1raWNrZXJ7Zm9udC1zaXplOjEycHg7bGV0dGVyLXNwYWNpbmc6LjA2ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOnZhcigtLWFjY2VudCk7fQogIC5iaWxsaW5nLXN0b3JlLW5hbWV7Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWFjY2VudCk7bGluZS1oZWlnaHQ6MS4yO21hcmdpbi10b3A6MnB4O3dvcmQtYnJlYWs6YnJlYWstd29yZDt9CiAgZm9ybS5ibG9jayA+IGgzOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MDt9CiAgLmJpbGxpbmctc2VjdGlvbnttYXJnaW46MThweCAwIDJweDtwYWRkaW5nLXRvcDoxMnB4O2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2ZvbnQtc2l6ZToxNHB4O30KICAuYmlsbGluZy1oaW50e2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW46NHB4IDAgMDt9CiAgZm9ybS5ibG9jayBsYWJlbC5iaWxsaW5nLWNoZWNre2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtmb250LXNpemU6MTRweDtjb2xvcjp2YXIoLS1pbmspO2N1cnNvcjpwb2ludGVyO30KICBmb3JtLmJsb2NrIGxhYmVsLmJpbGxpbmctY2hlY2sgaW5wdXR7d2lkdGg6YXV0bzt9CiAgLm1zZ3twYWRkaW5nOjEwcHg7Ym9yZGVyLXJhZGl1czo2cHg7bWFyZ2luOjEwcHggMDtmb250LXNpemU6MTNweDt9CiAgLm1zZy5va3tiYWNrZ3JvdW5kOnZhcigtLW9rLWNsYXJvKTtjb2xvcjp2YXIoLS1vayk7YW5pbWF0aW9uOm1zZ0ZhZGVPdXQgLjZzIGVhc2UgNHMgZm9yd2FyZHM7fQogIC5tc2cuZXJye2JhY2tncm91bmQ6dmFyKC0tZXJyb3ItY2xhcm8pO2NvbG9yOnZhcigtLWVycm9yKTt9CiAgLm1zZy5pbmZve2JhY2tncm91bmQ6dmFyKC0tYXZpc28tY2xhcm8pO2NvbG9yOnZhcigtLWF2aXNvKTt9CiAgQGtleWZyYW1lcyBtc2dGYWRlT3V0e3Rve29wYWNpdHk6MDttYXgtaGVpZ2h0OjA7cGFkZGluZzowO21hcmdpbjowO292ZXJmbG93OmhpZGRlbjt9fQogIC5zZWN0aW9uLXRpdGxle2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtZGlzcGxheSk7Zm9udC1zaXplOjE3cHg7Zm9udC13ZWlnaHQ6NjAwO2xldHRlci1zcGFjaW5nOi4ycHg7bWFyZ2luOjI0cHggMCAxMHB4O30KICBoM3tmb250LWZhbWlseTp2YXIoLS1mb250LWRpc3BsYXkpO2ZvbnQtd2VpZ2h0OjYwMDtsZXR0ZXItc3BhY2luZzouMnB4O30KICAuc2F2ZWQtdGlja3tkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tbGVmdDo2cHg7Zm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tb2spO2FuaW1hdGlvbjp0aWNrRmFkZSAxLjVzIGVhc2UgZm9yd2FyZHM7fQogIEBrZXlmcmFtZXMgdGlja0ZhZGV7MCV7b3BhY2l0eToxO303MCV7b3BhY2l0eToxO30xMDAle29wYWNpdHk6MDt9fQogIC5zdGF0YmFye2JhY2tncm91bmQ6dmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo0cHg7aGVpZ2h0OjhweDtvdmVyZmxvdzpoaWRkZW47bWFyZ2luLXRvcDo0cHg7fQogIC5zdGF0YmFyIHNwYW57ZGlzcGxheTpibG9jaztoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOnZhcigtLWFjY2VudCk7fQogIC5pbmZvLWhpbnR7bWFyZ2luOjAgMCAxMnB4O30KICAuaW5mby1oaW50IHN1bW1hcnl7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDtjdXJzb3I6cG9pbnRlcjtsaXN0LXN0eWxlOm5vbmU7dXNlci1zZWxlY3Q6bm9uZTt9CiAgLmluZm8taGludCBzdW1tYXJ5Ojotd2Via2l0LWRldGFpbHMtbWFya2Vye2Rpc3BsYXk6bm9uZTt9CiAgLmluZm8taGludCBzdW1tYXJ5OjptYXJrZXJ7Y29udGVudDonJzt9CiAgLmluZm8taGludCAuaW5mby1pY29ue2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnZhcigtLWxpbmUpO2NvbG9yOnZhcigtLXN1YXZlKTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo3MDA7Zm9udC1zdHlsZTppdGFsaWM7ZmxleDowIDAgYXV0bzt9CiAgLmluZm8taGludCAuaW5mby1sYWJlbHtmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS1zdWF2ZSk7fQogIC5pbmZvLWhpbnRbb3Blbl0gLmluZm8taWNvbntiYWNrZ3JvdW5kOnZhcigtLWFjY2VudCk7Y29sb3I6I2ZmZjt9CiAgLmluZm8taGludCBwe2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW46OHB4IDAgMDttYXgtd2lkdGg6NTIwcHg7fQogIC5sb2NrLWxpbmt7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjdXJzb3I6cG9pbnRlcjtjb2xvcjp2YXIoLS1hY2NlbnQpO30KICAubGFuZy1zd2l0Y2h7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjJweDtmb250LXNpemU6MTJweDt9CiAgLmxhbmctc3dpdGNoIC5sYW5nLWdsb2Jle2ZvbnQtc2l6ZToxM3B4O21hcmdpbi1yaWdodDoycHg7fQogIC5sYW5nLXN3aXRjaCBidXR0b257YmFja2dyb3VuZDpub25lO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czo2cHg7cGFkZGluZzozcHggNnB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTtjdXJzb3I6cG9pbnRlcjtmb250LXdlaWdodDo2MDA7fQogIC5sYW5nLXN3aXRjaCBidXR0b24uYWN0aXZle2JvcmRlci1jb2xvcjp2YXIoLS1saW5lKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6dmFyKC0taW5rKTt9CiAgI2dhdGUgLmxhbmctc3dpdGNoe21hcmdpbi10b3A6MTRweDt9CiAgLmxhbmctc3dpdGNoLWhlYWRlcnttYXJnaW4tcmlnaHQ6NnB4O30KICBAbWVkaWEgKG1heC13aWR0aDo2NDBweCl7IC5sYW5nLXN3aXRjaC1oZWFkZXIgLmxhbmctZ2xvYmV7ZGlzcGxheTpub25lO30gLmxhbmctc3dpdGNoLWhlYWRlciBidXR0b257cGFkZGluZzozcHggNHB4O30gfQogIC5nYXRlLWhlbHB7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tc3VhdmUpO21hcmdpbjoxNHB4IDAgMDtsaW5lLWhlaWdodDoxLjQ7fQogIC5nYXRlLWhlbHAgYXtjb2xvcjp2YXIoLS1hY2NlbnQpO30KICAuYWRtaW4tdGFicyAuaW5mby1oaW50e21hcmdpbi1sZWZ0OjRweDt3aWR0aDoxMDAlO30KICAuYWRtaW4tdGFicyAuaW5mby1oaW50IHN1bW1hcnl7ZGlzcGxheTppbmxpbmUtZmxleDt9CiAgLyogMjQvMDkvMjAyNjogwqtvaml0b8K7IHBhcmEgdmVyIGxhIGNvbnRyYXNlw7FhIG1pZW50cmFzIHNlIGVzY3JpYmUgKHBldGljacOzbiBkZSBsYXMgdGllbmRhcykuICovCiAgLnBhc3MtZXllLXdyYXB7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9ja30KICAucGFzcy1leWUtd3JhcCA+IGlucHV0e3dpZHRoOjEwMCU7cGFkZGluZy1yaWdodDo0MHB4ICFpbXBvcnRhbnQ7Ym94LXNpemluZzpib3JkZXItYm94fQogIC8qICFpbXBvcnRhbnQ6IGxvcyBlc3RpbG9zIGdlbmVyYWxlcyBkZSBib3TDs24gKHAuZWouIC5nYXRlIGJ1dHRvbiwgbmFyYW5qYSB5IGEgdG9kbyBlbCBhbmNobykgbm8gZGViZW4gYXBsaWNhcnNlIGFxdcOtICovCiAgYnV0dG9uLnBhc3MtZXlle3Bvc2l0aW9uOmFic29sdXRlICFpbXBvcnRhbnQ7cmlnaHQ6NnB4ICFpbXBvcnRhbnQ7dG9wOjUwJSAhaW1wb3J0YW50O2xlZnQ6YXV0byAhaW1wb3J0YW50O3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpICFpbXBvcnRhbnQ7CiAgICB3aWR0aDozMHB4ICFpbXBvcnRhbnQ7bWluLXdpZHRoOjAgIWltcG9ydGFudDtoZWlnaHQ6MzBweCAhaW1wb3J0YW50O2Rpc3BsYXk6ZmxleCAhaW1wb3J0YW50O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOwogICAgYmFja2dyb3VuZDpub25lICFpbXBvcnRhbnQ7Ym9yZGVyOjAgIWltcG9ydGFudDtwYWRkaW5nOjAgIWltcG9ydGFudDttYXJnaW46MCAhaW1wb3J0YW50O2N1cnNvcjpwb2ludGVyO2NvbG9yOnZhcigtLXN1YXZlKSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJhZGl1czo2cHggIWltcG9ydGFudDtib3gtc2hhZG93Om5vbmUgIWltcG9ydGFudDtmb250LXNpemU6MCAhaW1wb3J0YW50fQogIGJ1dHRvbi5wYXNzLWV5ZTpob3Zlcntjb2xvcjp2YXIoLS1pbmspICFpbXBvcnRhbnQ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNSkgIWltcG9ydGFudH0KICAucGFzcy1leWUgc3Zne3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7ZGlzcGxheTpibG9ja30KLyogwqtTdG9jayBhY3R1YWzCuyBkZSBsYSB0aWVuZGEgZW4gZWwgbcOzdmlsICgyNy8wOS8yMDI2KTogc2luIFJlZiAvIEVudHJlZ2FkbyAvIFZlbmRpZG8gZW4gY29sdW1uYXMsIHBhcmEKICAgcXVlIMKrVGUgcXVlZGHCuyBzZSB2ZWEgc2luIGRlc3BsYXphciBsYSB0YWJsYTsgRW50cmVnYWRvIHkgVmVuZGlkbyBwYXNhbiBhIHVuYSBsw61uZWEgYmFqbyBlbCBub21icmUuICovCi5zdG9jay1taW5lIC5zbS1taW5pe2Rpc3BsYXk6bm9uZTt9CkBtZWRpYSAobWF4LXdpZHRoOjYwMHB4KXsKICAuc3RvY2stbWluZSAuc20tcmVmLC5zdG9jay1taW5lIC5zbS1leHRyYXtkaXNwbGF5Om5vbmU7fQogIC5zdG9jay1taW5lIC5zbS1taW5pe2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tc3VhdmUpO2ZvbnQtd2VpZ2h0OjQwMDttYXJnaW4tdG9wOjJweDt9CiAgLnN0b2NrLW1pbmUgLnNtLXF1ZWRhe2ZvbnQtc2l6ZToxNnB4O30KfQoKLyogPT09PT0gRGlzZcOxbyBkZSBsYSB3ZWIgaXN0cmljZWlsbHVzdHJhdGlvbi5jb20gKDA1LzEwLzIwMjY7IFJhw7psOiDCq2Fob3JhIHF1ZSB0ZW5lbW9zIGVsIGRpc2XDsW8gcXVlIG5vcyBndXN0YSBlbiBsYQogICB3ZWIsIHRvY2FyIHVuIHBvY28gZWwgY2F0w6Fsb2dvIHBhcmEgcXVlIHNlIHZlYSBlbiBsYSBtaXNtYSBsw61uZWHCuykuIFNvbG8gYXBhcmllbmNpYTogbGV0cmFzLCBjb2xvcmVzIHkgZm9ybWFzIGRlIGxhCiAgIHdlYiAoY3JlbWEgY29uIHBhcGVsLCB0ZWphLCBib3RvbmVzIHJvc2FzIGNvbiBsZXRyYSBuZWdyYSwgZXNxdWluYXMgwqtkZSBsYSBjYXNhwrs6IGRvcyByZWN0YXMgeSBkb3MgcmVkb25kZWFkYXMpLgogICBMYXMgbGV0cmFzIHZhbiBkZW50cm8gZGVsIGFyY2hpdm8gcGFyYSBxdWUgc2UgdmVhbiBpZ3VhbCBlbiBsYXMgZG9zIHdlYnMuIE5hZGEgZGUgY8OzbW8gZnVuY2lvbmEuID09PT09ICovCkBmb250LWZhY2V7Zm9udC1mYW1pbHk6J2JyaWdodCc7c3JjOnVybChkYXRhOmZvbnQvd29mZjI7YmFzZTY0LGQwOUdNZ0FCQUFBQUFFbFFBQThBQUFBQTFLd0FBRWp4QUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQMFpHVkUwY0dqWWJuUWdjaWpvR1lBQ0dEaEVJQ29MWElJS0dTd3VFVEFBQk5nSWtBNGtVQkNBRmlUOEhpR1FiQmFrbDQxaVR3TVlCWUxQcHRiTVJGbXdjRUNHd2R6NHlVS3NtcHpUQi81K1NJRTNHbXZUMjdXQWdLbWdLUUNxUTZqbVpNYWxvV3JxaXFRYXFLUU5nNkZKU1lCQU1nR0VqS2dnRVpaZGF4SXdWSEpqVHY5SmdTV0NSeTI1Mmp2ditmTjNKaGFFRmc2QU1zUUs5MStHZXdQV3ZrczhJcE85L0RiSUlqRnY0cURuMSt2RDgzUDdjKzdieHRnYUpFa2QxR0FVTVFZYjBhRHVHMGNVSEl3dlFEMVpqTkd3SXR0bEJDd3FDQ0VnSmloaEVHWWxVMlpUUldGaTFNaWZPbnR0MFZiK01YMFM3L3UvMTc2TzNmVzE3bnVmL3Z0OCs5MzJ3ejc4QytpQngzdktaWmlxS2JKaVdwd2xGRWM3V2VtZW5EdGJjejFRTS9uOC9tT2ZlOTIyQ1NRd2ltS29JbG00WUxDVkxYRTRyZlduLy9LalQvc0IybnlYMWFvVkFBVFNFd09aU3drM2EyZ0VjdGk3ckg5YnREN2xaM1gwWjJqTnJYN3o2eW1zblhyNVkrYVd5TGRNYUdsWmcwQXVKazdBaU12SlNMbDltalprcnN1L01GVWdSS1dEWW1KeEoreEFBQmZDLzcvSVZJQndXRkVDRDh2aGFLQnZOWmcxMytJaVArQk4xaVZoRUlsS0gzS0ZMd052cnFXK3piK2JPWjM0TmZJVmdrUlVndWlJeWtvU3F5MXZsZzZwMzU3bno0UmZxL29ZaEVIRkVZeXRSSTlrbDBySnlxcjc4ZnI4Ti9PNi9obGhyaE9vV05lbzVkYXVJV0tTYjFtOFZDdlY2UUMzUkd5eFpCRVFNMDhGaWxubDQvbjlaemRZOXRmOU1GL2xEZHBSakhORkhZUkI2SFRwVnY2b0pyOTk4YWtPcSthUlVHMUp2U3RWTmFFSlVJeEVTWVVMS0xpb2tqb013T0pXTkFpc1Jrdm5YYWRWK2hjN0xYc0Rxa0l0cUVicDdWMTVKUmFOOFdiRWxXYlpqUjRrbkRzeU1oOENSaCt3aDBaY1UyUU95UFFSc21NbDYySnRad3N3eFY4dVFPU0FxcXBSYlhsVmVVV0pmWEZzZWdlMTRzQnZSZzBpMkM4TXVrWWhTQ2ZxK0crOEhHdEFEeTNGN1J6ZGc2V0ZXQUphNDVseEtWYUUzZkR1RUlDRklwL2MzM3lqTVhHY0ptUktLaUlqSXc1V1FPZjdYWkUwMDVBRGRBV1NzN3NlM3kzSjVidlVRU05zSUUzMTh4azNzR05QcTNEZmJpektBQ2dha1NKSDJPUWNBZVdVOGZYR01BWUQyN1VwK0gzZEt0azJvaUxpOE9RVVhESkdBRUNtUm84VDg3anR2a1pCVExNTTlHeHhnaHZmekN1QWpDbzE2SldWQmt2VElTb0V4RHZBdko4SGVwT1JkWFFiQnllNmsrRXRWQnBaSFdLdjdUU3lJUk1EeC80bWZrY2FiYXF2ZElhVWhCT3NoSHlrYmVoejZoSDVrNG1FVHNEY2NHYndYZnA2TFJuUWc5aUdKeUFqa0gxb1JxSGZzUlQ3TjV3bi9YMEV5cGdVemhMa3NlQ0w0US9DM01CRmJoOTJEblJFaGZZMitIYjZyZlkvN2ZpWDZRZlNiR09ObjladncrOVR2blFRT0tuNG45OS9aRTBSYnZDWmlja21GZE00dXJQM08xS1RvckoyMWFqOE1WLzJCOGRvOFo1MTM3azNHYkoySFJWaUZUZlZqMEhmeGtFOGZ6L2N2OTIvUDdqVkdSVDJZSDYzSkRzNkg2YjRjNi80eE52dTJmZmRnN1BkalBlVnp1S1JydTZWN0psWGRCSjNjRkx1MnpzRU40cktMc05VVE5SNDJiN1ZvL3pxYlhKV1ZxdElHYVdtN2E1ZjBkT0IxRkt1dTNZMWlUallvOWlqRWxDMmZEZlNQbWhaTGcxZFB5M2pPQmtSOVU2WGUvL2FhZzdxc0dLSTRVaDFvc2xMdW1qN2FqanI2dXRaNkJ2cGlzZ2FHeXZLYXh2cDBhNFlwMDVTbHlUYmw2SFBCcEMvR2txdy9Qa3hzZUhhRS9UakNKOElWdWJYL2ZoREhnb3JSNk9iQk9qckxlYnZrVzMvb1MwVDNUU0lZT3F6L3RLNUNaNW5PQjEyc1dMV2JGRVM2cTBVTUlLMWQ5dytHSlVwTkxEWmtjb29MS2d0bXArL3RDNU5HL0pvSGRjYytQL1NqaEszblBubkhuTXgzOS9aU1pBWnJjNkFUdi8vc01EOHVrazJydUJIaURZbjFvSjlITnQxeWMzcWY3Y21iVGZwRkEzVVdXTUpPV1hMTHBKUkFaTTlDWXVGNmZ3cUxabTFvaDJWUzIxbWRVeGRkVjc3S0c0UWlHQndvR2JpWmNTUjY2TW1kQ2FNTW9nay9JS2gzdW1DbndQbWRVc2ZhVEVxS3JvMjF0aGViQm1Wa0dFUEpQSExHZGRETWZUUlBVMC9yM0dLc0dvK01wNjg1ZDNCQldGRklLVFhVQ0hZb0lJcEFoZUx5NUlMdThGV1BxSjI0dmF3RDVpanVSUGhYUFhUaS9idTVWd2ZNUjFWWFk2b1N6Qm1WQjd5VmhPalRha3VyNzlpZmg0ZVlUR0l2N0JVaDFLVEZUbGZaN3B2c0IxQUs3SDQ2bnBkZ1VFcDB2Z1RWckdacFVGbjhrbnVYWXFzUmRTRDdweENxZjVxN0J0YjByeFhiUklmb0lqMnM3MmhBRzdvYmdUR21Jd2JOeEN5YWpUazAxOGRrbTJwcXAvbnYzdmFwcTFuWGp3NWR2aVdiU1AxVzFrQ0RHdGFEcW55RlVzVVVDR3pwVVpPc0VaMndDcEJ1aExENWRlZ01yWkRWSGtDWUlCb0d6bEM0dkJYYTJxbXhTM3dvQkRCd0o4WVVBdHdCTjZiYjQ1U3MzWS9CYWkzQkEwbzdsb3d3WStqRXRkUHh2Yi9Gejh1dHJKaTVkWlQwSHRyRDk5Qk1TUDJ2dkFvQUR6Y0l4ZzI0azkyTjIrYWJQb094YkhCd0dlQU8zQUY5R2d3S3VKSVZlZWtFaklSVEFLVWlOQUluQVFaRFhvbWlva2Z0RUVOVm5sYlNuMC95ek9aNTRKR0I1dDVDS2luMjJkQmxjT0NsTTZuQkkyZ25hQmgwQkJ5d0FocXNFUWc0WXVYYXJFOUdtMFpCREptV2s1RXhISFFJSXRnOE1qc1pYN01tMUdsVjZ5aE5rcjA3UzVwTlBsZ09sS0tBVUdIUkR2Nkh1aEE0SThLN1JOWFR6YVZndmlGczlmTVQrMTY1T0VreHBvR2JnbDlQWUFoeWt6OUZCc01JeWdSQllqSzBaUUxUVGJtRHNKMkZtRUtBQ054NktXOUtzR0w4em4rUTZwc1dVQmFCYTF6WEZTSlVydXZyVFhITC8vK1MvUUVuVXJkZ3Q4VHBCVys1bnRRR3lTb0FUSUx6RkpDTVVQamdNbVdMd2dJUjh5V2RweVp5RC9lNDFVQklrSEREVDFzODhzQ2JpVUpra2tLQW5jTGFNT2tzNFhyRDViRVZQSTJPMldLTmNDQW9TS1pRZ1ROQ1JGRkU3RHkwWHJDSENBdUU0SlpOQXNmRWs5RGNRNHFsTTRGUXRBLy8yKzEvcjFVK3h2NmJOUW96azRRSTE3b3hpaGRXOVZWQnVXckNYMVVVeGd3R2lBMTBxbk14Ryt6WlZZMGpDWlNBR0NtdDJIQ3FNL2RqcVlraDBxaWhYa3BkSkVXTzJld1BuWUFYYXR6dkMwR1g3aUJzekdSL3Q5V3cyMEpmS3FSQThLMWRVR2hCdjV3Q0dQVW5iNnIzb28zUUxLMldVdGYzNXJBTlhtdmgrM1AwcW9QY24zSzZRZkFiMk94ZlljOEFDLzRQMVBzNisxRUVpbmRKTlVJdWl3b1ZpTG11cTNKSFV2TWV5UENlR09DOWtPMjlrZTk5TU1MN29tS3BIMnAvTEFjaVkveVdzcWxXeWt1NUtTY3dpZzRXd3BDY0hiZjZidUtrblp0eUtYbkRnUG1GNCtPMTVHVHZXdDN6Wlg5T3BFR3UzazFkT0M3KzgyZEVvUEJqNUpiVEhqampySFBPdStDaWh4NjU1TG91blg3NjVZMjNFZUdQdi83cDlobUJFVHN1WExseDU4R1ROMTkrL0FVSUZTdE9xalFaTW1YcHE1LytCc2hHME02UWp4QlJFbVE0KzJiempWQ2gxbWdUelRUWFltdHR0VmVMc3k2NzZUNEdSOTN3R01VeHRSVEgzVVord2gxUC9FbDNtM3YrYi82VSsvNXl6UDBWcmY2cU5uOU5lOU1SZnA0LzlTWFVQNHZnb3ozM0ZRY3ZmQXREdE1EZ3BlL2g5UHlWSHhGK2Q2LzlEaGRjdk5NVEhtR0pHQlR2SXdIRkJ4cFFmQXhBOFNrRVltL0Q5a0I3emlnQ2hkVElrQmhDeE8rT21uNS9jaDBERGRVTGhRNGU0Uk1CRVJJUkVSTUpISjhzUm9JVVdRWWFoRUlBU3JRSSs2QkowM2tvWkxoa21DRWN3aVU4a0RSK0VaT2xUOGxQaUZmcThzVlgzM3ozSTc3NmQzU2JlbWdJOURaY3hCWVB4SDhXZ2tUcEtQb2FpSS9CaHBJd3ZuMkhUazg5ODl3TEw3M3lHb1dYOE01N0gzejA2WW9VSEpzZWlJUDRUS3pQSmp4WUJBYVBQZkUvNUYvUGhnTW5GRmFrdU9HbVcyNjc0NjU3N25zQTNVRXgxNnBOTzd1MzRheXV4Vmkwak8rcTNQeDZKNzBjZGN4eEo1eDB5bWw0MyttU3k2NjQ2cHJyQ0hyRjB0cHo0SGdlNmdMc1R6dEFvQ0RCUW9RaXVFME1PUTlac2ltcGpEYlZYTXNkZE54RkZEeUlTQjhVbVRGRGtZRURBV1QwbVlhSlltQk1VYVRIQWtWaXRGRlhidUVRMlFDak5CWEROQjE1bW9SQm1sVkxMMkx5Y3NrWXNKQkFON1RoNnVoTDFqcXpkYS9YS2QyZ056aFlqQmlKa3FTR1kxazUvUFFERFRaRU5vYTBaQkl1UUdmV0JaRFlQenZKeGlQSlBsMXlQTmp1QW1FK1c4V05xZ3BoeEgvTGNEVTNQNDJ0VTF0L05KNURwZlR4N25JVUFQTmhwbStHWkJrWkt3Y3Q0RU51MFA5eHhCaHJxMzBPYXZIWUo5MDBKRE9LMUdkc0w3UzE3WGVTM0ZodUpyZVJCMWpvZEJUOHBSckI5U2w1ZmtLSExwK1IzTlBHOUh3ZUlEZVVtK0x2OGRkdkJJem16eGNlOWFENzNlTTJ0N2paVFdZYXE3dk8veSs3NzNiZjZWalRzYnhqV2NmOGp2RlB0c21QSWtNUWZJbzhLbkFBaktDYkNPZ05uUHRNR1VGblBYMEhFRUlFTVNTUVFrYWJqbDUwNmRGbndKQVJZeWFyODUzTTlDRm56b0lsSzlacENIWVA1dlJ3VEhtcjF3aytENTFzdkhLWWNCRWlSWWtXVStzeFhnSllNVmxLeFQ5YytvTlVsMkNtUTgvZkNqbHlLZVFaQmloVnBvTEtTT05NTWQwME04d3kwMnhxY3pXYVo3NkZGbGhrc1NXV1dXcTVsVlpZYTQxMTF2dDA5bkQ1cnFGeUV3QUZydVljcXlsOWR5MkFJaVhHMm1TenZmWnA4cC85RGxnRjJHZ2JBRGprOEIvZ1FqL2tRYzJBWWxWR3FGYXBWcDE2TlVZYkF4aGxrc2ttQW5iYUl4VjNLK3gzM1FVZ0dxTmZUYXdUOCtvSmdMd0ZmZzhBVWJmMDlPU2tXcU9INVJGd1FSNk9qbXJtR3JTaXdEeU1PVGg2WlVrNU40cTd5M1AvT0NDQk9VZ1JkQlRPOWQzWkNUTFJ2WWRUaytIWVNSaVBvN0FKSmV5YTVKd29aWWhYSldRL0lEZ0xtNlJ6Q3QyVlBKRy94MmlGMGViRVB6ZU4zbmcxUVRRRS9VY0JnbENHZTBPSUkyU0JRcUVDa1RqZ0VHYXRRVTFuVDVFWWdzd1RBRkNCNDRRaXZJc3FuMEppS1FKMnZ6bUk1YjN5YkUxUVNxeWlwdWdxcmRiUzc3ZUJBOHBoR1JXZ25NY0pvcmt3WWtRakwyelZSNWhCSG5lN0pWMlo2STVhNGtwaEFNTGhSQkZVSHZNZkFncWtEQUI5SG05NXc4WjRFMm9EeEhBdUdnTklQSzRsZ3ZBUVVDQkZBSkNZQ0MxTWxiUTFJSUJsTlBKVEpKZGhjaTRaRU9nRU9RbUNoNEIyQVdBWWxaVDFPU1F3ZUF3b2tLd0FISWhWNnBnTHB6cUFneDBBRitVeGNXbVg5Z0hhVktWNEp3Q0o0eVFxd2IwRDZCdGRFTGd1WDBSaTV1SGRkdk16ZGJrdFVwTU9odHViUHZERVVrWlVXZnpkNmMzcVhuUCsxWFVlMW00RHRYcTRTcFJQZUtzUStmQmFlVkhmTFUrR05tNTY0SGJzUmJVT01tNjNtL0s3YnNJM3JIb2REOHVLR0UraUdJTTRGdU9kUVZKbGJ3eHJyTWFmNFZjMnpqc2hESG1XSndvNS9uaXpIeFNnSDlCOGpYbFdLaHpKS1Bud1FzZ1A5bytvWFpRYmFrT0hmNHpFZGFvYTVtb0pITWxrOUEycXRGREhKMUM5SjZoWjZDNnFOZlBsRnBpZVh0WXZBYUd5d2QxSzVLck00UkYxaElHcXFwSEtsSjZMZTlZRjNsNUJDRmtFbG0rYnJNUGFmbVBSZkh6Y20zbXJNM3JuTXk3MHp3Z2tBTUtJcEx4MzREMi9yRXhSdlpGSmtoT1VqeEVZYjVjdWVuTnJBcDV2N0lwMXhoWmc5azcxTHpCQlJ3c1R3NnU0WVlMNEoyc1Iwd0dQR042Um14cnRQc29CZEFVTXBCNEJwS015T1dTblBYcno3WWJCTW5xSE82c2RUOU1Sc29qSmdBSnI2Vk1PdVhNVXdoMW5VQUYzSUlmNUhJZFFIZVpKQnhsbFRkdG5aek0yMy9CV1RaZWRWbjk0TFdra0tmYURZMXFNRHQwTFAyR2dRRDFMYjFVcGtpRUFydWhhaUMrTmxPUlgxYVQzUjArSHN5RnlrTzc3WSt0dlJ4dkFJVVE1SUFCbDFFVWwxL2kwbjFUMnVaM253UlVleEtLcVN1US9CaHdnS0dmS1UwMkFkMWtIQVBPN0pFZThXcW1zWW90bHB6cW9YN3BSTk04OU9iNnFGS0NmaXh3SWR3Q3FHN1NVTjQrT09OT3pSb211WVo3d0I1WGhQa1BERnE4ckpYalVCWUZDNEUxa1FBa1B2MlE5OVVsNTZrSU1xOG5pdENreGJSSDNUeUdFWmc2RVNoNmRIclNVVFVjRWlCTmZVRTM0RmZRZWVYMk5sMGFQdG9peUNBNFNVTGtFVWNsVnBoMkJDcUJjb3hvRUQ2Y0RtazJBWmdFZ2xIMUNUQ3FyMEF4dnNCRlFwYkZkMDhrSnRiWUJ2RTNQYnZNWHhMY25LekVUUm1CSjBzZU1nc1A1QWNxbmRQRHNvSFFmaTRVaFVhb2JsZ3NLdmJ6V1FlcWdYZWNxL2M5K2xvZUY1eFhaUnFLVS9GekhxNExvbEJTbGhWZDdmRWRSY01zZGtFYVQzZDA1QWlPMWE4S3IyR0J4V0pMaC9vbE1LM1BoWW9qWUVkUXc0YkE1SWZXQjhnT1NoM1RVY3BDcGl6VzlJenNtV2FHcmh4ZFZnY2MyMm1SODRNQlZuZVBoVkJkMit6R1NDMlVwVHl2ZlJhcFkzYVZLWHN6cWV1SnBUNW9IMTRQdW05SEhhRHg2RVA1VUtTTHV4M1Zlbkxrb0s2bWtzOUNZVmxadUhwVUtZanQwVU04RUpRNERKQlpsR0tDME9pSjRNaE5ZbldXVmFNWTJBbUlmWXR3aGFQTUU2KzNIRG1zbDlpeE9rd3BVM2xiWm5XVHRhTUZVTE1lWDU2a2N6bXBKR2tNb01SdGJEUTdYTUVQZGlCb3h0MDFZeEtrUUkzSTIzVU9JWGhmNlErekJ0KzZJQTVCVkhuZ1BSUzd5QnNDWHlJMjdyZW5wTEl3NDFvMExqdUZ3Y0tZZ2pMQ1k2ZTZvSFpiZ1M1TE5rTjU0c0h3M1VTUEFXYzdyMDZhWnlSbWNkcFJrMGF0N0VtRzVETmJFaWczUkx4QXM4TWl3WnRlNWVnNG5SOUkwWEo2WnZsdUdNSENMNzlVendFQlZ5d1hhRXM0cW9QTVZGRnhJSlpqbG1DcDBqU1FOcmE4Z0JyaFJOa1lZY2tDRnhsQWErWkljRkc5YVg1VzdjOXcwWmFKOEVJNm9xamtCTU9IdjZ3RHJ0MnViMmNVYUUxWFRCV0szQ3BNM2J5Wm9IbWtsb1lXd04zZHBwVDRqSmoyOHI4dUFSSnZ4KzJUNTlaUU5jdGdST29TNERvWDZJdkVJLytIT0Fyb1hNcjFOd20xUnpuRFhIQWJWOTBvTVlidXZSZ2svZmkzQXhldms2MFVTcFRTamczZHdsdDU0NVFnSFRoUjBrS0R4ZmVmOUVXQ1NaSGMvVDJLMDZXckxoazFleUJpQ2k4MFJZbkI4bm83RDNHNmRJTXJvY1VDVmFYU3RXYm9JY1ZZaWE4Y3h0VUo2OUVoc3h3VFFvQUxzY2oxeWtwS1FtdGJVcFFJSHEybHQzbDJEVUErSmFkeGNWT2pkMjMzdWhVVFJvS3FxRW8ycmp3TzNUR282T0YrWHNndk5HTU52OUxwQWtpTEdOY1NHa3hleHVBclpmbkJSamFvSnF0RkF1WlpZYUlZeTZiV1RUZlJQR0FEbFRkSFNYL0c1bWdpOEY0UzJ5OElFUVJmSWc3RWxwd0ptYzR1NUVsbHRRbkZNdmk3c3A2clZxcEphOWFpNG16T2Y3K0lqU3A2d2hOUk12aDJrbGt6a1VzK1d6Si9oN3MxUmpnU01PV3R5QiszU205NVJQUlU1YUZoZUtZRlNxQmpJS3dVTHBzeEtkejhScGg4dDBNSDgraHhRbG4wQnJpYWpUQWJJcEJWZm5pbnFxUUgzSlJLYVlKN1JRZnhpS2xVZHU3MS9VMElVL3FKQWdqYjlNekJTdFNMcSsxY0RMT2xMRFRiZktPQUhpakM2V1FXQVhWMkl0aGxGbXh6dnlKMFk3Y1JlRy9oMkcycjRrTk9EMjZWdlhJSS8rMjBvTVpMdzYyUlM0Nnp6OHdOeWNoNFBGNDFrTm0yUUU3WWo0bEVSaXpEK0ZBYnFWdzVXbFhzSGduZE9aN21WdWpCVndnNWZreFhrM3haSG9DTHR1MTFmTU5vVk91WjF4cTZmUVpGVG5IZWgyTys0YUlwMWtJa0syNDRVMC9nY3dsT3V4MWVsOGNRYTJ6WERjaWMyRHRrSjVpVzJaeGQzM2xUTlRJYlh0eWVOUVJ1S005YnN1d3p3Q2FiOUVYK1hBanNMVXhTaFd4akMxVXF1R0R4RGNMSHZzaHVTU2NnaklSYk9Oa21CS3hQd2M3aFdlajZGc2tvWDdScnBBeGFEMjVBZEMxcTI4elpMb0JNUTF3YkFPMGNtcXA0YVNYY3NwSzIxOHVXMWVaZjBHNFh0N1htOUM0UTdhOGpTYlNtYkFwTlRGUmdKYnhmTDVRWERNcGFWTDJoKzJWZzBVNnZuZ2hMUzY4b0xrQ05HcDVFMDRIUk9wYlRJRDhjc21uNGNBTEIyNHN5Q0ZoV1NEMFV4UlZFWnB5NndIUEY4TDVhTURBSEFRTWJQbTlTZUdVTmxEVFdFN0tZTGI0MkNCWlowWTR3Nm82VVJxV25jMk9tUzhnRE1NamxxWTlLQTA1YUJ1YlRuSHNKY3Q3R09rSjN5T2prZ3lqcEVKT21hY1VneExTZ24vLzNFY0hXTzN6RndIcGR6ejJONmhocUVjZll1angrZmdrVmhjQUE5S0IzcGZuV084ZVhuMVR1U04ydm51Qk9yM1dWUXVYRmt2WFJ3M2JOQ0dpeUxnOHBGNkZVTEZFVTVvWXhWREhaaGFVSXNVWDhyUitYdFk4KzJRazJXQ1pFSjJJTkdXeHNiTXhzMnFQRXBYdCtHZi9TY1dmeFJGQkJGOTVFbWY4eDAyVlN0dk85NlRBNEtQZm0zOW4ycjdRajE1cHRveEc5ODM3ZlI4azcvSzluVlNtV1JaR3FVQUZnQ2VwTkZSbUpZdmwwMnpVNW00TnIvNFpuUVlxVGdBZXZxNWw5VkZEbzVmUzJJa3lBemwxZlFIV1IzWUcybWZEMVRONmUzWVl6RXVkbjhIeVB6QkpoZ1dUOGdiaFk2dUVXeWxhTHJvN2U3U1diRGFTWHpYVWxMaWJ2M01NYXN4KzlEVlRmMGwyUmlmU3NaS1Q1R0VZalRHcVRNT3VHT0dtL292aU1lMnNIcC9pQXJXazlMS0RnYVRvNDgreFhTb0NDTTBVbThVUEJMSFpxbFlpRGg1SlhBU2RIVnczL2IxRWNYK1Zkc2R5UUp6Y2pMWjN4Z1lpUnRLd1dCaXM3UEdBVy8xSDN1RkFNSk95Vy9SNmZMOExONVRmZmxRK2VqQis3SGo2b2ZQdTdzVi9XWWZnQ0gxM0VQcUswVEttclExVTVTUXdndllXWktqV2djb252S0NEVUJoQ0tqQVdrQjYxU0VrUll5MWFNUDRTSlVEeEswQ3pIRzl1Y3BHTGJ6enQyS1Z1MkpTRXFsMnFpTVBvbXNPaDArWUhYenlseDRJZFRHRjVqcWdqMFpBbzBaaHpDMXV4Y3hrdnM1K2xvNTZOMXZzTW5iRVJhbERGZzZURE9rUXJrWjV1Nm84WmhRcnlJUEUzb1p5SjIwWjRFOFdOSWJRQW5FQkROQkdLRDdOQWVFVGxwZVVlQ2x0clRxa1pKUnUxQXJpSndFQzViL20xQTE1VHRwZmEvZ3o4ZzBTU29RVEROVEtLUnljUmRZdjZwNldXQjdzSFc2eS9SN1ZSbFpSRjBqS21ubXRrYmFoRTFDQWRZR1NtaEl0ZW1rdlFxTkppVWxVQnJHVzhJbGFvaFFrajZCWTgzeWNUbU9zZVR6OWx6Lzh4anNKdE4zNzFUTXBIV2ovb3NZWDZnbnREd09mWFp1cjJrOFlhdHlqRVdNcWpJVm5Bd3dsRkNwdll0THMxZlZWS0wwY3RRS3NBMDdJWXc3WEdQSlA3Si90SDNzdnNVejZ0QVgwQkRBdC9rK2g3TWtjUU9JS2t5aEM0aDZ5Y3lVRWY1R2NxQVQzcDlFQ0tNLzNvK1JoTmdJWFpHbVN2b2pXU0FqQ21Od0FSVkI2d1Z6bU5ITFZic0dLRDg5dUN6bE1IeWxtbkRGcncxK3kxWVp2WThTWnEzT0IxdDJnY3pxdUNzSllSNVltSUo5MlhmbGY2MjNUWGRSQkFBVUY2VVpLa1B1SkUxS1dIcWlZci9SL2lBL3lKNkZBbjIyMHdXRHhqcE05MTBjODJsWVJqYUtoR1VuMklPTTRtelJpT2NBcXJJZnhtZndUSmgvdXFTOVJTbHBNUEZMb0tjVHZvcWxQS0FqZFlsUHIrQndLRjhYTXUva2hWMnZnTUlTaklTOUR5ZmVRSGN3WGdhVlBidlV2QjFobllUdm1CbkxwWUNQWmhISVFNN0tab0FtSHdFWEN2UXlVRXkxVTU0UGdyRHlqMVJ0OWFoUklmT3daQlloZzQrSnpBcDEwZUlGL1ZZWDBoTDkrWmx6eE14OEo2WVMvZmxyWXJVbTdUcGw1akZOMHF3dmRRTmpUNFhCWXVPT3c3VnFpalpQakN1b0dYT3F6aUQxcWIvZU15OVp0YUZsd2creFdFK20xVFNqcjdxOFBCUHZYWndhTlU2OVhicVdaWi9zdyszN3dnY1F3b1lweHVpQVNqSzlQNmpMcnV5NkxhTm42Y2dhS3haUlhJOFF1WEI2YmQrQ283eXphRFJuNk96VFhuQTAxY1VGQWU2TEZJNytjZzdLQ1pNZnhPSU1EdWd5Y0hBaVJjRXhCSTMrMUV5MnZ6b2Q1dWFDQnhHYlBHU2E4V2lSeUlMb2hiMzVGVWtRK1l4OEt3Z3MyUXFFY0ZOZ3ROM1VMb0NZZmFvb3lsL2dGNkMvbmJoNHU3dGtZa0JnQ0hrOERFM0crTHpqUk41T3ZtVlRhZXRKQlVOQ2tXTTJPajA2SGMvRVdlNytERkhtNkkySTgzemV6NUdIOE41Qm5sUDlHNGUzanEzRXVGTlBHLzM5UVJyZm4rK2NRZUJsVXVuMzEwTEZSampvaXNkQTh4emhCaWx5NkNCRDdtUVMvd0ljZFdzaU8zMDlsZFlwYXRZNnhwM0E3TlprOVVMWVVPTzRhYnRPL2ludXBCRjVXNDZIOGU0KytxT0VCVEpNV0h5b1dBLzlmZEI4N3NrYlRtb1JhMVpkKzU4T3BYV3FvenVkZ25aUmhMTmdlNDM0L2ZzSThyY21DTGVVY05BWkRiQUJsbVdBZmJhekR3Njl5SHJxN01DR3NBWlpERVArRVlibS9neUhoQlNsTzhjTVE0dGNnYjd4eTRSQ3VzQ3gxV3M1T1l2WU5jakV4cFkvVEtCQk5yYy9SdWk3SFdMZ09ONVIvaGNYbnNGZXZacmVPRHZHVDkxMmVheDJINTgxU1RVVERnd1U1SU1qektaM3Q1a2FoL0JlVkVwd3R3dncyV3daQU5CNGlGQTVmS09vNjNyeWxoSysyOS9mZHBTR3JYb3lqRnRjTEkzclhKNmpKd3FYREFpSFZaWEpFMTkrVTIrZk95WDZWU3NVQzNtaGV3WWxselNvSlhEcTE2TGNzYUtCUmJIK0J3RDB3TUc2WHd5WXBMSXM1Z29uTHJuNCtFOGVYTXd2Vk9McEhqZk5MVVZSbnlPczNoVDVqNURjMkpPaVk4ZytLMUcrS1ZVbWJjK0U0VC9LdTNyeXRsRzViOUlob2NoclQzRWF4b282UjhUbkh6ODVHdFcvMVE5ZXN0YTFoTVloWEx0ZGhGdmtuOFZTcWJCWDBsZHJGa1RGQjdOelZpTmZwQm80bnBJNmhzNTF6NmUrc1psRG1lUlNqUnc5Z2hraEJYT09nL2RkZmVMWWdrK0NyODhEdlRtYVlZOGdQdTQxVEYxeFRRYWViMXFVaG93OCtFVGVGSnNjWjRFUXNoM2E2c2orNFg5SWR5NDNtOXB4dkx5T21WUzUwZ29qTnB0SGQrY0lpd0FBUzBTVFNGRHFWdEIvcWFOd1ZZYjB6TkdxTS9heG1acmwwMkdEWlRkMXhpN1Y1MWgwVE5lbjlTWncza25XelpnZkVrMGFDZC9NZ3EyYmQvdGtXMjhPdktCT1dyNWlBMjB3L1pGcXNrWEM3aDdBZmNKUHVvY2piTCsra0dpV0VHeXlHTkl6M0hIbTFndDdCMDExU0JDWTNUUFJHNU90dFVFNHJ1VG5HR08vc2R4R2l5MzFlVWQxZzl0MXVwRkc3MmdxWjdTTFpmSlpoT2EydW8zRi9KTE16dFZNOUR6QjBDVVdFT2FDZitUWDBVeFAvcTFQT1YzQTlLU3FZWWtWakhIbkFOWGJJQ0N5c3VCS0VkUnhXTlVPc2F6bkdQOGYyY2Z5N3VTb1RnNUUrcEw5eXprTFBPUEN6a2dmZi9sT0hQZGF5cVkxaUhjYzkva1lUZnJ2NWxobk9GY2hiRGlwZERxelpiNXlVUlhVblF4QjlwQjN0S2tqN3Q1U3hiWktlajlRdU9ha2JjQlRaaHl3ekwzdnJCMXhnT2lsTXdyVDZ3TzZlbmk1eG1KRXlpc1lROGpiZGY4V1NsbDJZUlZRZkhKalRoL0hKR1d2MnBXdThiYWQwUHowU1dvYWQ2K3RXV0ZmSFVmMXk3MUZ3aUxteG90Z2FveFdvdnl1bzVGVXFyWEVLUE54c3RsZFg3QWo2WGtDQlEvTTNRWWc2c1Bsc0p0VUpweXFrM2RtblZBQ0h3YmE1M0J4ZURGU0dHZ2pydnVjZldWaE5iNE1wY1dqR1R1RHdmeVdmWDl0Szcxcit4aWxuT0tIaDZ1SGl6dnJQSUtIQVZoR1VFcWVjQ3BpOEJqaitWSFlPdzZJRmFpWXl1c2tkN1A4Z2M2WjFaTytpYjlqaVBWeUgzWDNVSnU3UlVQRm9ZWFRlUGkybXF4Vk9EbTBndXB2K3R5VXVDbWUvUko0WVdiTitSRC9FMElOTDNYUXhCaXYzeVl5SjZzVGVWWnZ3dVlEY2RhTGxka0pXVVErL1FIUnlQME5vYnZCVFRFQVBQQUVLQlJxT2FJTmV3RnFWbTloWktVL1ZOZGtDakVoekhuaVRVQ0p3UWJQblZtOWRzZE9rbGR5ZXdsS0hSNytabDJkWE8yYllaandvek1seWpQb1dqV0g2N2Q2V1g2R2RoOTBBajRLNjBUNEZsc24rSDJPOHJDRWg5bzlKYTdqYm5WQ3hPQ2lRQ0grNy9wTDRmZm0zdEVweE9wV2VhRURpL3czY0wyRnpLYllKUEtrNHZzRkJxeTBXanZWR2FmdWxqN0dsQ21XUE1oUlpjOXVZZ2ZKeFlqcW42V1RpYlZJWFZEY1QrcnVON2Z2VWtva0FxbU91QlRqOFc2enBWSk9USXgvcjRrRkJmSEo2Vnl5TXdaU0xjQzh4aU9UWk13eXhZWnVXRFhyL25rWTN2d1gySzZ6azRhOWVPeitFay9JZDlFbXhuQ010NWRQTUY1blFrdXNTZzY2aGI2M011NDRsMEg2ZHZEcXF0R2laMjdibDA5R25RZEdLU3o5SWxFRTB6Rkd4YTNkUkt3TkRLZW1xZlZPYTN2cVhmU0NMYndkM0Uycjl3dHpPOGg5dHFZMkxTajBoZWgvbjEzZzRydWJyL3M4L250N0FNa2VwUDg4R2toYVdIL0t4QTRjZzRYZS9ya0JMTmpyOFNKYVhyQmFKVnRYeTJnVEw2bGp0QXNubWFlM1J6VHUzY1NZTFZyQ0lmSjFUTm02SHVwVm15RmEwc1BmS0VCN2JlN0NJMGtqTlVXWkVOaWl2aGhHUEZIZUxIZjNtNlhlK1FmaTBDdko4Z3UyTGpNQis0aEM1dXczQzlMRlNZWUVwTEhRbGcyUFljVGNyUkxTVkpmYTd1bmpRNnlMZUtFWDJqKzlmeEhZZXBmQ0VDMVhHRjBwUm5rMGNzWXp4ZWhTUkFwUUdGd3Boa1lERy9sZS9ydVgySmN2OEdVK2t4L0YvS2FPUCt3VXhXZXVmN09BdWc5MUtrNEc3Y1EzeFhuK2IyL3llTlZKMWpwb2RCYjkxcXhySVhydXc4ZGg0WDE2ckpyQnQyWW4rK01XTEhEamw3YXR3NUpvRnQraUYzUTdBYTZtMWtzOU1id1IxOUY1dC9jdTN0MWdMbTl6TE1tT2U5SnpCWUpHdGMrc0VHNTU4UHJWd1J2S1hmdDdweTluckRnZzN4Z1lxUjluTEQvZ2YveDdRZGtyM2V3Tks5a2ZWZE8rUHJBc2NCTTVzbkxLYUNPS1U2NzA5RHdXaW1BMjQxUmxKSG5UMzlVbXA3SFVxQUZRK2REaFlBeHZCZWp6ditCbkNsOGZnNENwRWV4THpnOFcrcURROUNvRG1PV1pYNDd5Z2RxQzk2YjU3OUdqT3R3OVZlT3g2UTczVEhscXZsQUVoYzQ3d0NGQnROQXVWMjc0bnhTMHFyMXEvR1ZXVk5IM3hxeVQ5V1pDZ1JBZHBXZUhuVU9Xb0dCUk1PcENBaGVNdXBHcU45bkRLaFBXZEVUbXk2M2N2Z29FckJadFJtT3BPZEdNN0V2RmxnMWt2WUEyZmZqYTJNQkUzYm5vRGphelFYUVhtZ1VwdElPUFU1Y0FuVHcvWTJWK0hzSmZDNThiVWRmN2VpcWhsUXJOWGF6SG14d3RGODRXNjB0Q2h6eWV3VjB5Z2tIRXJhRitJbXZqc0FvbE1wZ1RVaGxMWkRpMVlPVkRCL2d3ZkRpSzdqOHRSWHNMbkJsL01jVlYrczF4RGZLbDlYQytkVjhHOFU4ZkhWdFlzSlpUZ2xlRDhEMWZsTUtMU1liNGFweXRvc2FGZ21xUXMwVHVXVjlWUDJsVHdhQkkxS0NQaXo3RWNPN1ZrOVgrZTRKeFhtSk0rQ3UvblN3MDJsd0xSOS9yWDFBb2o4ckgzZWdET3M0bDE1YU8xWmFtUVpvZ1lHajlndHFLb1UwRjVzTGt5a1F6dzByaUJHV1NtQkdGYU9PMFdFWVB5MnhUSVBhYklER2FuZDRPS0lRTkJxcEd2NTBkbEUvNzV0em9MSDZ4dk01NUR3M0g5L2xGQlFHalZYMTZxMWpabWJ1ak0xY3AxbHY3V0V2WVlwZTZOMWN0Wms4MTdzQ3BqR29jWG0xVWhWMFVjVXpWSEtPSWJhd0dwMVZGc3dacks0WTJCM0plVllLSkNiSkNSYVUreHFNeFZ1WFI2M1RBU3BOU0dTWTRyUVBpRDBIUVkvMFRFb0haTVZ0d3JLbWRHMHpuRWoxTitkcEtvYitBTVpsc3pwQ1RRVGEyQ3F3d3ZjcTRVcjMxQWozcVdhdm9hS25uRG9GenFuUklya0lXN1BKVU9vait1M2NSaE15Y0FJbzZOZjJQZWVtS29NU0JQNlkwUlFFdmRWeUVGNEU3bVA5MjNjSVJVMU1lS1oyVG9Rb3N3WWNFMHk5S0k5ckRlUjBSa29mVXNOVWtIMVRqUU5UY25zTitqR3ZSU2x0R3FrVTdXU0lidExBSlJRTURSWVVEQXljSDVoZUdmejZjSDFFek5WWGptWnF5bExDN291b0kvblZSUUREaUZhRy9ZUXRqZS9CVmUwZ0dWYXBkZ1Y2R1R2Y0tlQzYyK0JkN0Y3bzBhczlCV0Y1RW9KS2tpTTZ2R043YXMyNDl6aG83L1JIRlk4MGFnemcrUDEwbHV3R2M1c0I4KzFjZm5waVhFYXU1UWhHcUZBSytTaUZrUTlvd3hjNDhQcllGVXdsS09Qd0NjTitYLy9ZSUg1MDVXT2RxWERQbHFWa3oxYWhxVjBVV3YzdW5JbWdJZlcrMmFDdDlUTVlyTncxSGFQYjBRbVV4SkZzRzJsUnRuMHpkMnpqZGVnODF6YWx2SXhCcFhVV0Y2ZDNoQXc5NkNMenZ2UlpWSUp3TVJudmxyRUVpTFN1RXkzeG5KbjY2TnBqVzZKS1BEakVkem1lWVhzenovZzdXZ21Oa1VyQzdzWkE3UGtiQ1h5WFdOQnBSUW1EK0F2WUpFWnlwOVRtbXgzK0NNVVJyNWh3SThzcncxM3kxQm56UG5Qakd6SVQxWmtKa2tBUHhTL25Va3RvV2ZnSkxPdk8yenJaRldPbFV1UEhSdkNYd09mQW1jVEhmOVRYRVg0b2Z2alJGaXIvQUNvRW9iK0xLeFRsZU5YNkdGVlgwdzVsZGF5RDc2czRMenVTYWtVcTlDOCt2V3NTRTkyZEdxTUR6UVFzdlgxQTNaTGd1bFhrbnJweHY5RXJ2Myt0U3NGMkZWM2tUUVpzQVhsUGZVV256cENjbkYxelBvL3gyOHNWVzJzcjVJTnRvajJwUWdnYy9KamFwL2I5R3Mrd0U0M0NQYTdJTWVxd1F2UzNxSUFldnUyYUpyQmtLZ1dCczlnVDg4alozcldRZXRYOTIrNU52YkhYeEpyQ0k5UDgyd0diUHg3QjI0ZHFDSCtieVVUMUhEZXo0dVhQaExlMmlHNnoyVGx3cFB1TDgyME9kU2NkbWpRNWxZK2lVb1dpQnBvaXFHdlBSMXZ3Yk9ZMlVnRVhuWWVpb0ZTRXBtZ29oZWk0N2ZKWHpiYjl2cTE2YWpLQ0Y3UzF3OENCYkk0Z2VvdEF4ZWJNZHAwQTNSYkpKT3lyem5lTDE1eFBuVzBaMUlDclJLVURVMHJSbXFzYmpzazNSR2FwKzVGSjA1K1ZTV2xkS2QyNGVRRXRzdVhNT3BtSFFyN2RCbSs3RGV1TTFRdDY0YitjQjhOMDhRNC9XM0tiTkpabVp5TUhOcGFkaGhPT0tMWllHMnNJSDBVeDdseVUrSEUzc3ViZHlHeDc4U0hOdXRNQVA4YkJ3UlNDLzJFR0hlak1SZjU1TnR4UGloM0VxNGgvR2doZGsxVi9ML2Y0Vk84eVpJdE9rRlU3S1RVbnBhK05JekluenhtdWVOYXlRcEtLSzNyOTRzTTFsZGpzRXBvUzBpbEltSC8wWEt0eE9GcWE2Q0lZbVZ1YTdwSlJuUnRKSXYxZU52eWRWZS90Skk4Wm5GR20rcTVLSWhoVlZZMWc3Y2NBbE9uUGxNSEhqcS9OejZ6ejE0UlpsN3NSRUM3WWh0VFExTGZpcWJGYnVsd1FRdC9pa1RPZVljNjV3WjV2RDE0N3V5WnFobVEvSExZUXNXN3piTXAyQ2ZxWWwxQkdveDZJS1hsZGpFL2dVRi9lbTNDNUVBMCtMVm5TS3QzeGV6alZEZmtMajljaE9NeDJ0UWNKOEVhdDNNSXlEbTNaWnZDbm9wMXc1S1FBbWgxS09RWU16cGIxM2lyQUpkSW9wNUZZblZZOEFCalBMRS9TSWY3U0tkQmVsZnBCTE16OU5iNWd6encrNkx5Q3NBVldQaVVCT3RYcm1QODVhTWNkWlBGUnoxTmZPS1k5dkJBcHZuc3hYNmtocnFLbU5pNFN0RG9qcFF0WDVvSkNiSjdlalpLajZVOWc3L04zQ0NxZkw4OHF2UkEvbnhlVWQrWTJzS2xTNGkxVHRyZlBWV3lIbmZyS0dURE45L21aVGRDOGhQOUhrdWFicEt4Y2xubnN5VkplQ0J0dnRObHlYZVdpamovNFVWeEEvdjVsZlBDOFh5N281bDZYMW1SM0sxUWlpUkp5SEpFYkdUbFphQk1kNHJqNUJpaWNlQ1k4OERQcUYzR0E0a0E0R3FPcnRmbStLZXRNYjM3UXBLRlltNkhlc1hMSHR4cEdyRFN0M3hHa2hPL2FkUlljcG5BSDhjMVNLNDNOWFhjbmdvdWNHblFPVE04M2JmVjlKTmRUV3BpcGtCbTJaUVN0VHBMTEV3VllhMW0vK3RvblRMRk5BcURWR2xlV3B5TXhtdmJtRkM3d1VmU21RNUlXQ2Y3N0xhYXRiYmxMSytjMVRTck1TcnNKZzdCSk9mai9CdThKQjJ4VVppMkF3ZCtjOXRnUW1WSXVNWTBXeENUbHR0U3ZwSnVmTWppblJUdko1QTVIWWdJQ2c5TUxONFBETWRoSDZ0ei8xWlI4ZHpHZ25VUm9UUVN3MzNXTENTWGNSUXFWd0NwU3FjSEVLRlF4N0RmNlQxRkdibStMV1M2VFoycVJRRWJyeHNTVnc0TDAwZ00vN05vQTBGY2FiQXBxU1NnZ0dTalpod1gvKzNqZkFUbitpaE9nUHpmUzRzMVRwTVpEQUswY1BaMjZiNzRjbHNWd0lGYWpjMFJWWUUxUGFiRlRsRDJlYi9WMHZieFdYcmtsTUsyQVY2VkQ1eFc0TCttNWEwOENId0pxTm0zQmhLVDJPZk5xRFpxV29ONnV2SzJQcjc4a2l6TmxFazBpUmJxMzRsMDI3ZHJ2OTNZUjBqSVNqYzNQMEVvN2VEVjR2L09sOVJTcnQrQkc5SktLYmcyTi9XUkE0eEhCRkQreG5nT2FYUm1lV05OblZURGk0V25OaEFNZ3FtdGhMeXlhZFI0cXZTbmdrak9qRmJydzBSVGJwWWRIcUd4S0NXVUVOOVluZzNEVnhMbmdtdFJLZDdjMVZmRDExQWZQRE9CM1gzZTZvWWRCSVpzK0FkSk45VnVWZmsycUVQbEY2TnZjOFBETVVnb0NUMi8yRE1mVkZVTzExcTdvODM0VzV4MDdZQ2ZHenlTNXFnaGVTSGRqNUgvWEhiRUp4NTRVOXBja1hkbGM5dVJVeDJiMUIvamhHR1dwT3puRzcyZk9zeWo3NHBYUTh1RE00TEtoY1JsVVBJWCswU3NZNTI0OUt5OFZzdmp0RmhtZkxQaFRVS0pFcExqVzB5cUROYmNuaFlmV0xtYWdlenZ4RkVmTTRkS2JHLzJ6Z3YvMXdGVkVacGMwMk5lc05ycnpLa05hcTdKejNicnRjRWdyQUIzKy95d0pWeFFveklqc2ZPUkt5UUlLL0RsNGlYVUkwYklxblBOZk44OFRiMXNqclVrbW5CajZjeERtenAxbGJhck1CRldad3pkeUlQWE5xaUd2SE1iYnpycS9ZaXdvVzA1Y3lWeWJESkVoTURvSnc0eWZCTm81OHBGSEtsRHd3WTEvY2EwWHh6dmlhQXJNU3lNTHlPVS9KZlptcS95MTlTa05hWVZESHE2VDZrMUVWVG8wV0F2MExrQjVuWGU0RjM3ZlNtMGhoUllIakdSbXU4NHg4elllNitOdms3SGNleVZGZEMzcng4SlB4eWtSdy9Kb0tXVU9hdjcrU2lTNEkzdEE1TzlGc3MxZFA2UkNacFQ0d1BtUU52QUtkaDRsZE5ka0dIUnN1ZklXQnJhOUU1ckR5THZ1azd0a21tcHFTWll2d0JybGVZNzBVZmo4OFpyc2N2MUV0VGtmUkIzR3BQZmhzbEJhcTJlVW94SUQxb3hkQUdDZGVBL1R3WWMyQ1pKZmV5Y2szWWo1ajZ6RjhXVXhSMDQyaFBuZll0VHJkMXNIRDFJTFQ5bTZmT2w5eldDdDE3TWdnTTQyYkp0V08reVRBc2JmWk5iRVIvQ3BHMFZOZEE2Yk9OeStzZkh6enZ1Q3N6UW9YMkRuRm8yVGJrSFErYXBoVFhwZ3RELy9rRXhweVVSWXV6N3VuYlNxZ0pXQnZLa00renB0RHpZa3dUYmJOdm1BTDRyNkJwdDhtcTY0YmlGUnFGejRMcFlhcGR6bnFmY0Q0VjRKNGo3c251anQrY296Zzk3TEVjNzR0RXN3c3N6dDJBRnN4c0RXYm16Sis2czIrczNzeUl5UmcreGFPMlBzYWVhSXZGbHZJK2MremdUaEk5R1g0QmdYTmx2OW5QaFNMOVUyVWc5cHUwMjQ4bW9qRjVvdVhVa05LNnhMa2ExQlFDYTlNUVhkYmw0S2cwYzFWOXVPRGlQUUhObTlmbmVPTWt2anhnZ1lIRERMWUhTRWRMamVYL01ua29QSjN4TzYxKzRSU3Y4cFVGUVhOUldkeFg4OGJ1UkdtK0JKMERwMUZPM1hzM1FKRElxMm40Y0w2WWlUazZyYlhUY0wzSmRoYUUybHBGQStaREYvWlM0M2dUSDI3bHFoUkZ3aC9wWnhXdHppMmdZMTBFUjNmaDloMzk5dzB0bGtWSzYrbjZvQlB1Q2s2R1RVZ2V3ejJibVYzdnVIbVVqNTVJT0RHTFM4N0xXRHZQdzlIQjQ1Sk9hWkI4RjBFR204ZThraVRkUGlHMzBSK0JKcFRBemJIZ2NzSDl3ZWJSMUc2d0xnWFZzamdrRmVQc283NVJ0OXdGdXJ3TjZaVStEYncrRHJJaXFucWdKYmVHUUx2NGloRFE1VUZZNnlMVzAyWEdYS29PYkJwREU4aU5lK1NMbUhJcHVZRW1zekRoMVN4cTF6T1N2bEVVWEJzNnRyS0wwVi9ObW4zODBCUmx6UjM2N0lVamVKeVZrcTkyeUwrL1hTVkRKcDMwUWIzMGh1VHpWaitNTEh4and1YjF4bkNDS2tLZVJNdGFWVnRwQmpZVlBvekU1RkdtWmI5eFV5a0xxbjNaNllpalo2WTUwL05KWEhFRXkwVXNuYmZ6YXVlSnlWMmN4OG5nYWpGLzc2Y1liS1RHd1lkWUw4aUR1aU5aWnJ6aWJORzgydldUTUUvaEpuWDdNaGN5Q0FLVXJwcnBBSkZkMTZMV0ptK1lIN1VheUFVU0hWaERINFZWWFc3MkhBaFZoa3U0WWZsVzFDekVOZVV1UDVScTZqejc0RndKbnlkWkk1ckUwdTQ2enEzaHpxMkg3R2ZjZzJQVmhOTTFMbFFCYlNDVEJoOHdBRlQ5ZUg2M3Z3VzNUZmFGcTJOVGo0QkhrVDMwd2h2cWtGWXZMMkFmaVdBZ1o1dlU5QUthMGhlRXhoTTZ2c0xITXptUFowcXpWSWZLWW1OZnprMi9oUHhxM0llUEt6QzVaUXIwOUlGZWxSaXdUNjFpUmVmbXhBd2hhMFRNdlZRbUNqYnhVcTlMaWwwM2JONnFJS094U0dWYjdnNTVFOVFEd05Nd3o4dEduV2d5ZnpqVWxHN3BLWGZMeEFWUVVMblF5MmtXWUNlYU96cWpZVVVzWnVJbjNNSWFaVEorUHdacVVzcS9md1phZlRFYk5nK2w4U1JOelhBM29hYmZzMG9sakcwREExRHpoQVhlcFQ4TFJxTWM4ZVpuMlNVS1RaWFJvd1NaMkRnTEdvL2wxc1Y1MmVUK3Z4MFVjVUVucE96Sm1JSU8wU3JrMzZSdzdOZ1ZFNStTRys2dG9yWkdzT2FKamV2aDhaZDB1MnJWa3hqZUc3YnhNcTRMV2Vvd3h3Rm1BTEgyZEZ4Y0hDTURpM2p0aG9iOXd0ZnY0Y3Z2VmFROTF0cGthdmhUb1MvYitaazVHUmMrVHF3dXlWdmpqRUJQRGRUN2M1MFhaaGdLRm4yeDZjbjZNYU9reTFKT3BRb0V4cWx6WkxDM002YVpvNVdRdjJRNGRTb3FKRDBpM21MVmpmRkZGdTIxT1NqYzdBa2p4Vi96MWxOOEVKY1ZNOGpZWk9yUVNScU8zQVAvUGFpU2JnditKbk1OOFMrWmRSd3drUG5CMHQ5a0tDaWZFTXU0OHZWaDhnQmNDWE1INFlaejRPeEh6bmVXeFdmMjZRUy9FS01oOS9oS29tRlJlVENWeVVzWVAwZ2FFUkp1SkgxaWJET1FGaGRRTXoyNExrenZRcjAxMnk5dnRtL1lqZFpyMUVtUUQ1dGpOaVdXZEhSZ3B5bkRYSlhja3o3S2h6Zk1RdW5vc3lPdkxPNFFBeHprMHVxVm4weGR1MTZuQ1ZtNlVjUXhwcTFCbkZjZm9aS2JrTzcxMHY0MlFDV2xmaStzM0ZTOHJmWmZuQzVXQmtpWURkZ0sxMG9wZy9nOGd0Qlk5a2UzSWROSncyem9vV1RHSDcwbzJQL3VYNVM4cklTdnVQa1ZyNWJINENFb3I3VTZCMERuWDltNkF0K3hXSStuY1RtelE0Z0gxc20xRHZ2WVhveDkvdnJSY3ZRWWtBcHR0VkNyaUNJd1FlVmxxbnFBN0w1VHZZbzZqN2haSFV3bDFQc0ExTXJ3bHNOVG9SR21XZTRqaUJOM3h1ek1hc2grMnQ3TDk3TXpkcUJWM2tuTHF4Y3hIdzdJWkxxUU14SXBXQkpscCs1bGh5SS9XendNUTFzVjArcjhkOXdZNFBraFBqWnI4UzJOeTJOR0czbGVVd1k0Um9ibm5qWjVBOTBub3d1YXN0c2xDV2VuNmtyQi9FTDFnZHFab0JQYmFkK3hDdkhkR3dsYU9kSFpVdVlHYXBiSG43UzliZTdPcE5PenhvWnlrNHRFRWNPYkh0aUlzWWtXcDBqWncrR1gxblI5eGFqa2djVVFSRzZPZUpCRmZEWkxWYU9OdTJCQ1J1RjRHQnVQdlVOMUhQcUdzM1RaNDB0TThRRWs3Z0VMaHdzTExhZmRvRlZQREtnVGtxRnNXblowZWQ4eklzVktKbDd4ZmN0YXRQUzlwZFBUa2xRRXlWNDVrRXdmU3JqMXNSOFZkVTBZUGplYUh2U0ZWWXoxMlB0SlM5Z2h3cWRFWDlROXMvd3NxNWF6NXF0Wk4wWTFOcHVSZ2wxVU1yMjB2ajdCajF0OVJIdThITTNYWnZqUmlzK0FQSlRON0N6QnFkMmxjNzdmcytSQnhMejVKQ1E2UGtDQzBSRmI5Q3R4OTQvS0NYRExFV0R4UGI2bzMrNEI3TnpWY0ZjWEY0SDlmaHhPZkpVZnM5UlB3MllyRUk0NGgrUHVUOHp6RFdwN29CWmJUMWsyNm9rK09vK1RBRlpQNmVvbmFnVTNicE55VjM3SHhidWNKb2dBdHl6VTRXd0xwUWV3enE1MjYzTG9jcHo4UlBGMmhXNnVjODVEd01aNlR0WmFaRWN3N25DQkFteGNzNWVLWmloWFhQTkN4R2xOMS85cTlRd1k2Nko3WnFPWHVxVFhMNXBzczBiN0xWTjc4NHNpUXRROHNKbkwwdTBrdWg1Q1hHb2FmY0xWWkNTdVdiZHJQYXRCc2g5T3czaTVRZUo3ZVFXSUJ1VG9xOVFWRzJlMWJGUjcwZ2xtOGlHTEZaWmFiRGUvYm1yVS9RYlNVYU1rNVdoaTdxWklMWDZGV1B6Ry9pRXlHZVJRYXVLRjRIczcwZC9sdlRmZUlxUGJjRVdkc0Q1aGUxV2Q5L1VhRWNic0M2OXRHT2xweGlCVEhiSlgzMTRXMm5ZYTQ2UEUydXMrTHIvMnE1ZU1tclZ2TU5iRnk3OTR0RFVnc1Jjb1lhVVJqS29LUzE5OUNuK1lSMmV4b1l2emhqWHdiWHd5aU1kTlpYYnRDamNNdWpZRTF0OThXY09KeVF2bW9iSkJ1dFdyNHZJRExCRko5MkZXUjJjNVJ2L25UMCt5YmNBVFBQOVlwTWs4VUpiOW1hTU4xcGVsQS9jK3FIRlc1SkdKMWU3OVJOWnQzSFJrTHBLRThNaXpaVVgrQWRsV1NYbkRLWFQ5eHdmcHVPYkZ3UlVFb3ZTQjNvcXVCcmNhYjZ0c0JINS9tOEpLMU4xbEtKYmJTMU91b28wRW1rc3IzanVKT2o1TmZFKzVaMDVrRVAxUmdHbTJRYUtkYlVjVyt0VUFMU3J2dDhwSER6aDg2MTZOUW55Ynp2Z1d1cmVoUWw2YXRyT3d1amFtb29nMENlUHJEZDJNR2FNb1Q2SGFSMS9aODNPWVgwM0dVTytnTXVOTG9vMVo2V2pzaHRxU3lFd0syUitUTlhzQmFURnpSRzQ5YVNlOTVtenVRazVzbk9ndGpPR2FBdlBYSnZPcUkvYVYvK3oyeitWamduL3JsLzZVN2JHWC9ubnpCVmhheDFHWGpPdDhkLzlTNy9pL3cxQVdONmhwQ1BqQTJtN1QvTkw3OXlaVmFDWFdtZi9LclRBNGdhbjlpUjJWLy94MVI0VUZLdEp6VFViTHhlWmdmcFc2TTc0aytENHdhU093ays3MSt5aGwvNnZJWWJNMEdabGxaRjVya293MEN2eld3cnU1SVlTNUxqcEZJMzVlTXFMZGVqL1c0Y29weVRiWFVtakJYR0hkY2YrU2Q5L0YrVFJhcDllYkFScHE5ZUZaeEtsLzAwTEtnbkxEL3k3TWxsWnZ6OFVoTFQ0bEo1WW9uTjFXanRhY1h1MWRzcmxkZUVaUkZzTXlVVDUrOFRTamYrbTF0QjF2RlVPME9WbWhSVks4YU5tVzJpL05sVkREYTBpWkl2QzBsOC82RTh5Uk9RYXBabUNsY0ZOVUxOMXMzei9naStCNGl5ZHdFVjRYbUVzSDRsVWtZeGs1MnBjVzBlcVFxN1hsdW0xOHNQQSs3V0Jlc2pIY0E5WGhSVXdTTWQrMzhlcFBYVTdGdmRWTFNDQTZ4WXQvcld5U291bFFDaXM2cXpKNkF1aWMvdUV2V2FGS2RZM2krQ0lNUUF4c1ViUDl1bXMvNDE1by81RnRlem1vU2NES1dFaUFwVmxrODhuQ1VUWjFxMHhwWkpwTFZuYTVVbFBPNVRyZVZRVHpxUEhOTTJOUkpPMnF1dUtXcEdSV2l6ZVZQYytPUGVuWVNwZnJ5cGIwTk9FOUR2VlRsZ0ZLbmYwSjZQVllXcGxYRW1IQVdrSitqSS85a0I0ZUNsTStpZ2I4L1BmbU9ZVFRRU2J3V3FCSVh2OVZPdGhVOVBWZ1Q4OFArT3A1RlVhNVhMejZJWDY0SG9YYzg2YTY0MzJtQ2RjTGZ0ejE2Q1FqcEJjM0QrTWJSREl1cDB4STZobzEzUnA4THpRdGlNeE54TUFkK2hsV0NoRko0YU82SnJpaWlkZXRTKzQyR2o2K1YxRmtpeUlEQlVqdTFFWnNCSThLT05DelEyNHJ3MVkwRU5XdkJlMkNEVVRGQlpVbm9TdkQzcVB1VEJieEhOVnhyN2xadTZuM01zRlh4WVVDWkh6bnk4a2RnMG5rdjdkK2thM2dxYUxEYTdreDFzU29yWlNKRHFtMkFaY1JwNXFLQjlkLzVyQS9EWG9Oa2RDNmlwVzJxT2h1T0lKT0FZWVJrM0dNSzVXNWtVajM1cFZKVXIxKzduNndmVHhPZXN1dko4ZSs2RWw0bk82b3hMR0VkbU9KVDVUS2lhMXp5NGFxY2xaN2dpdlhiSUdTTnhnczBVOUg2VDBMdmNZcnQrMFN1MmVZOFRjOWtjdkx3UzREVEFncnczR3AvY3hyWEhUWnJESUpkVnZON2ZOMjZXVVljeE4zYkc0aGFiTlBCT2o1TzZJRTdEbUlZS3pGRDFnTUtVdEpKK1BHazQ2M0JuK3laSmpzRFR1cWVneTRycFV1bmJlOGwySi9MeGVwUGI3dXZyaTlQaEdrbmx5TUJZeUtkaGt2QmNEQVNRaUZTYmQ5Tmp1TEdydXlNQ3NrV0JlaC8zVXlYUDdtWmRGWlVzR1hqZzBOMEQyMnk0YWFKMnU3dXAvUlV2MkRHK29mZ2FFWXVDcWxWQWVIQUVOeVlUM1JiN056Nm1IV21ONzU1N3RHOTk3OE45VmJyTEdXN1RXeFU4U2JZeGU3dlBvbnVFck5HUTZvd1pqajhyajJzK2lCMERPZEZsNHFMNnB3ZE00YkUvRnp6YUUycm9EUnJ5ZndNNHkrVDBPaFVFQjlHNGY1NlkzTnl3ZTkrL2V1eExRQnBMckZjWTRmWmdxYXBncmwrckNoVXdYU3gzWHVPeDk3ZUtVSEoza0RvU1g0bWRZaHIvQ01NS3dwQktUMGNoNEYybWl1bC85VzM4OHRKaDN2NkErTVpoRnE5ZkRxMFNWeUw0alNGVkNWUFpnK2NERlZrZElRK01WeDJtRHdQQkVwTFQvNTZaKzFCVHJHbm9kclBURjF4ZksreXQyNjlBWEpLeHZmSCtubkRNM0l4Y3RuUENiTlRDd3pSRXVTdEEwdUVaZUN1bGhmNlN2dUk5cXNVMDAvMlplQm9oaFFUaVBXekF0UVZZU0FuWUoyd0FhWTUzN0l3TWVwdkJlbmxTbURRRWlXQkNiMG5KenZraGtTN1dMN2ZuNU5jWlQwNXlQTGdhVmw3RGN1dG04VFA4alJaaXZwQWlvUUt2SmRFbkJMSFhxUmkzUEVKV2d5WnZYMkd5RVFwL1dTZkdoVVk4NVM1Sm9iNWFkR1NuTC9iSk96YnNzVUJuUjF1S0NkTGxMWE5yaUhvRHM1b24rQm5oN1FrZENyQzhzbGpXUmY2aE5Qa0hPN2huSmd6Y1YwRThKeTE0cmYremc1ckZEblAzd2YyV01BZHliNXQwRDgxL0tpTFNhWXp3Um51bXBpcit0blNOYlkxeFJXUXh1RDFlN1pWQ1NRSnJWcGxVVlJhQjFXdnZwSlh3TFE1U21wV3JxLzhaV1Yvdmcxa1dXSFE2ZjA3a1c2RGxkOUFGbmg4dm5tQ1djMWsvZXZYU2Y1WkoveFBPZ0ZZWmJTREVMRVNocG1idy9LU1gyUCsyRXNiOWNLbmZZZUQ1WktNTjRzN09ndW56WUhuMUJxZ3BTMGVSeGxkZnVkT1NSYllUQm5uK1JUU0JRbEhKTlJNaXpweEtsblNjTThDMjNGVmpSNXlyTHB0N2JiOTh6OE5IS0gwbWw3Mk83OC9zcHcxVVEwbndWN2FqakprU0hDQzNzVW9TaUhDQldnaWZiUWkwNlBqUWRpN1hrNVdWZzFrcjVKZWRsUUxBTGlWM1BKNUwvMlhGZlZ4QTdLUVZSWlE5WWlOeEJFWXBZWWh1WTFlcVl0WEVjWmFKL0lqTzZ5dGNOMVdHQTd1d2J0dmFnSnhud2Q3V0pEVVU5MWFTczh6a3hGZWhTcUI3WVp6eS9uMmFjcGZ5ODBMUGRGSE85VE9yNktGU2VOb0ozNnRiYks2bE4rRDluYnJ3cjJHOTlocy9yZ0hXL09DakhHdlEwWkRsNU9ZaTdaT01qYmI3T0wxWUZCRnlXUjI3TjNCWXBmVVVOWHh2b2cyNzBSbzJ0dlNKaHZQZU9kT1NvTk5SdlRtRkR1Z1RkQlA5dXdTZnU1d3JSOCsxQzllZVpIb1RvRHc1Ny8rL3V1YlRlZzhCUzMvbFRyTllxRUd1TFhRcGxpZE1reTA0SWo5REVTNEpYZlgydDVrbmRIYi9qb2NHRGJMUENIQzk3cmhBLzJ5N1FmSDYzVCtwem9QdEsrNUxpRzZxTytuV3FPd29WTWpLeEFhRkV3Q2xRL3diTVFMTmI0YnNleFhjeFpCc1hiV1Nmc0pJYWkwQmptUk40TWlNSnpYazFWT1JLVmF5MDVpRmQ2c0xURVRTemgyNEpJSEc0WjJEZWZZWG8vZ0pzZzk5b0EwU2FTWnRzeDZ3MkZjNHZGUDdwV1pmeFVYa0ZXVWxlbmNuU3owUzFxVEg3YnNCYlZnSm1Yb29KUWxxRG9zcC9rYVpvZFE3cTE2a3lpaFllT3RLOW9TK1NCNFVTalFFNytZR1pldXF0UlRHTHZvLzJ3T3ordFU3RHN4U0tWa041MGVwZjRya0J2VThIa3pOOStwaEN6TmI3VTJUNGMyeTZmajJVL25DRkt6SytOZmVsQ1hhUTRsV2JZY2JRMXlXY3ZOcHp2SktySHNRRkdMZDYzd2k5UGw2ZjRITFdGS0NhVnFGS3h4TTRkeFg1VFcvTUZDRU5rUTlmdCtrbi85VzdibENTVnFEZUhyZnQ5NGZyOHErK3VNbUREYWZ6OWZaVmVlS1BrMmN2VUNYQkk2YWc2Z0JQUWxtcXdFNFAwQUNYNVM1a3pLbklzYmJaYUxmZVgxL2wvUDZieXMxdEhIdVJsaUNaZVUvcVErbUhNNmxNZVAvRERmaHYxOUIrUUZVSGJpaFp1eWZUazNpMFZQcjRKYzlnaWVuQmVtWFVXN1ZzVWtubXd3THJCdlhOUGFZSmFqb2xYZWNmNHhnTlhrdldvYm1ScS9zZnhNZzl6dDlYemxZZDVKNEx1aHdjTi9pbFJRVzZJZ3JRK0xUeFQ5dVJudVFKbnlyK1poWHVhajZmR2x0YkJSbHBRL0lQWmtxWUZvSjBTMHFONUNBUlVIc0dNVVIvc3RjZlFBYXk5U2NaQm9XWEJWeHBiY0toek9UNy81OWVQaHdmaEZYREM4QkZEN3VuY2JUV1ZQeE5OSHEwd1VFUHNXQytLMnByUWFUMDZhZmVOUm5zUHc1NFpnZ1VBZWRCS1F2OXVmY0RwWTlaZks3Z1g1M2NvUElvUUNtVCtNK3g0WnFvRERZamN1Q3FkaTJ1UjdIZGxnSE5CTXBDUmRUeWxIOXRSS3VlSFEyWDdXdkh4NjNuc0lKOWloN3N2alVFWjJ0VE5WOVBIZlEzQit5M3B2NDk4Y0laY3I5YUloYzhVMmErdUxzdVpnbndsMFM0enUrVlR4NzJUWHNuc2ZrRW8vc1hVNjZhSUhIbWdTZ0xITkpUenhPdEpON3lmenJXTzkvcnlWKzBVUkFSQVBYTGhtYTYxUFBuTVg2MEFoc1VveTA4amYyMTl0Si9tMnp5MUtya3R4ODY0ZC8rMTQxR1VtUDVnOC84UzZoZzJoSWhaSjV0ZTM1U2hKZ0NaTDRyZFJITWJqTGFLcklWalplcFhZdFlsODFYQ1UySElCckp4OENMdU1mdUVXSTNnR1k2RTA4VlIwSXRxSlh5K1lOTDdlUXpTeS9lQ3Jld1hwNU43d3AzSEJEQlJrUjk4cWRCTnM3K3YwU2tvUGM5ZndyLy9QandURE13aUdlWnlVZk5kL1hpaWlvUzF6alg2WHlJdzRsMU1lanVHclI4NVpSY2VKVjFZVXpVZ05sN2N4SmNUTmZvOHpGckFqVGI2TFJKR3gySjRCeGM5d0h1MmlINWdKZm9kNUg5MFNiMmRVZHNHcHQwaUwzODIzQU9IK2c3TEhnVVdVN0NpVmRDd3lkdGs5V3hZL0tHTEhIbDdmVUM5VlVVK1AvMFpKTmk0WWZBZW42ZUlDazF4WXgxRGNlZlMweEtqZEw1Rm5CKzFlVDBVeWxsei82Wkk3V3RwSVBrbzFMOFo3L2ZrUHlrQWp5L0NrLzExdFp0V1g0cGQ5dDhwcEMwR3NBTmYrcTQ2Y1JvU1VXRTJJWTdRZk5zaGtzWmFGcnA1eHFWR2hLMGdkdDcrb3B5dnlXZmszZU03eVY4blkxU2gxdGZIU1ViUWVnSGZEcHZlaEQ0d3FRQVpBdVladE95QjZyZlJRQTRDZEQ4cFRhZldnWFExOTZ4MHIrazJUR203YUUyazlvT1VKczVlZTFsRzNLeVh0VlFteFY1YlRlMVdkYXhINkF4Q0RTUDU0bXhwZDN2UkI2RTBCby9COGZXdHJiU2xGSkZ5U1V1NjRodG91THMrcXBKVE93Q0tzMHRYVnZjZVViTmFPYW0xbk4yRGJGelpiQzNmZi9TSzNkMXZicG0wYjlOd1VsSTl6WUgzeE4yRzM1M1hyTlJlZTRKRXE4NjBlajVkZTNwbnBzN2I5enZTZnoyZGM4NTZDS2E4M1Z2OFp5Z1Y5bU05VnEvTzB0M2U5SHlYaXNIOWdlY3RlUXFqbkpQOGNEWCtEUExHNjNUTW5sMWhRREhCM1huNnYzY0hIelFIeXRrWHYrWGF3ZjhXR3ZvY280SmdBVUZMZzdENkRmVVQ2dHNaZGtIcG9UZ1UzZGliZXVBVGY2SzNYb3MvRlIvc0tvOWVRUElKdi9sSUNEZi9FdjZ6OEpoQzA1UWZFV3U5QTlQQU9QNnJ0ZkpUT2IzeU9WcDZLb204L0p0ZnM1L3JNdDNBVkxNam1SbmhuSEQ0L3VXSnVCSm1yOGltZXpYeW9CYXRpY2YxRlFBVUZaajlxcUp3cU9UMkp3UGpXYm5FdWpQSE5mU3p0ZmNDY2hHM0pMdTBrSzdFNVltWnZQbnNiTHZhdTVlVGJibXR3RStoa1Y5ZnFSL1loS1h0bHV6dG0wSGMxdS8wcWgyZnYrclhxbVdSbjZpZmRlTS9KSEk2MU1PR050OThrZ2ZkRGEwbVg2TEVmVzd1L2VjUFQxV3Myd1p2bVJyVnZzemx4Y01CL3pwbCtTSWg2LytEckM4ZjloZVRTWjdNdmFtTjNmRUovR28wNFE2OUtTeU5KTFdvbVdrb2V5MHFGMk5GK1BvRGlZSS9IbVlSaXE5cVlpZmM3Nk1wTlg0M3BmZWRKcVEwQzVqQ25RaGZ1SmpxU201TGI2OUJQZjZoMXY5eXhMcERlaEhKZUp5UEZpTzRsRGZ4UUNPQ3BmTUxqR2pPZW5jZ1RiWTFiV2toVHowazlZQ2ZYRXhxYzVHemtZZFJQYndWVE5tYXRpZFdHVHBqbXY4TWkrbzZxTkpEMlBaNEJXTWc3Szh1MkNiZjlQcDcyblFYUld2ZTFWK3JGTFN4TmVNRXIzZVljd0t0VFNZdCtlK3JxWTNOQ3h4NHRXSENkdVRtalJQenRBK2x1dzlOVi91TjNXT0kra3EvRHA4eFZSRy9WMThKRVVUdzFOVyt2VkQxQ1pscm02aDZ6TG0yMXowMGhmbjdMcDhqaGZtY3kzZTlJLzBPMlVEa2dUd3ZEM0pCV2VMbTlSa1lOQXNEamowaVFIYTE2Tmo4VkN6M05nQW9BY0JlYTd0eFRKR0NqQnhmc3MvUDYwaWphc3NYd0NZSGNFNzNhNWFWc00zNWhha29KNTZLMnVTQXF1d2JSckhTZUFFcUIwaDRPRUVDaTNjeDhBa1pCendTQmd1dUNTemVYTVcwb0pkem1JaG9WcjQ2RE1jQkFnWVA1SGhNZDYwYVRGSm9mUFBnd0hoOEFGVUF5RVFZUjhLQ2M1ajRPTUpEa1RFQXhjQ0V0czg1RUJhU0VzWkZxYjVIaDhoZzB5QTZsRkxSc1RZMGlaaGdoRFIrWDNPSWxLNUNnMVVpaFJTcWlablp4aDdjaDdjZUhBbmw2ZUJYQlFsQlpWU0NsWGtNbFdya2E5SU9SZHk0VXFVa0hOYTFWQUxPZ1ZhaXplYTN6R0JyMjVoY1ppOS9HUE9HMFFseDdoR1VmVy8yN3N4dktRa2NlVFo5M3k4RklqQVdZMklhZzJRY1d3cVZLT0Vac0QxcXo0TWlIZG5CSFFnSndPNkhVQ29tcXdKa0h1emdJRHZTeUNiM0xsd083b1Y3bXMzakM4L0lqZktGZkdrQ2xlclQxVVlLeUQ4M0trVWt5czNuUHZWaVBnb2ZFM3hGdHZsK2hsRzllcWpCK0REb05FbUlJR2lSaWdwYTJVcW03TEk4a0dpZ2xMZkRkVWExQ2k2TDQ2RTQxSkZTVTErVVprOFhCbDVqWHg1cGtKWlVGWGRvQ0QzYndiUk43N1dhb3FENVdtYThIQUtzWFlyQVNXNngrQ2ZtcE1XencraHRzQWNUNnkzeXlVWDdKWm5tTG55WFZIZ29zdHVwTEMwNlkzaDdpVExOSDJQUXAvTit5SHV1a2ZwblJHS0ZDdFZvc3hhNVNwVlVLbFNvem85blhha0JxUHNKeHV0eFRyampEWGVCTzhkdHRlK3RKN3N5SHo0b1U2UFBVcUE1OVA4cDlsWkJ6VTVaNGZqVHZpVWJKUWtJdFZKVjJyN0R6K3lkVFFVamtSajhVUXlsYzVrV1M1ZktKYktsV3F0TGl1cTFtaTIycDF1cno4WWpzYTZZVnEyNDNwd0JCS0Z4bUJ4ZUFLUlJLWlFhWFFHazhYbWNIbDhnVkFrbGtobGNvVlNwZFpvZFhyREpKYVg4aVVKSXgvZzRmQVNBVzlSOEI0Tmt4aVl4Y0U4SHBhSnNFcUNkVEo4cE1BMkRiNHlJTWlHWFE3c2MrR1FCOGQ4T0JYZ2hMRVhJSkY4UmJRSGk0WERJUkF3bWR0aWdZeVFNNnR2RGRzNzVQS0RVa21sb2xiVGFHaTFkRHA2UFpPSjJjeGk0WEp4dTNrOHZGNCtINzkvRndwdUJSa1JyUmdNakVZbUU1dU4zYzdoMktjVGpqeEVUTGNHbWN5RlZaOUZmb2JmS3RjV2g5ak1hajBMSE9IbjBMRkhyVnROWGZYVVczL0h2eSswWHRGMFFzTmh1VHAwMG1xb2FWd29QOThMV3JaQ0xVa2IpIGZvcm1hdCgnd29mZjInKTtmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXA7fQpAZm9udC1mYWNle2ZvbnQtZmFtaWx5OidPdXRmaXQnO3NyYzp1cmwoZGF0YTpmb250L3dvZmYyO2Jhc2U2NCxkMDlHTWdBQkFBQUFBSDNrQUJNQUFBQUJFdUFBQUgxdkFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR29rS0c0R0ZFaHlFZkQ5SVZrRlNod2cvVFZaQlVsQUdZRDlUVkVGVWdSNEFoUXd2YkJFSUNvR0lVT3RNQzROMEFEQ0IzaTRCTmdJa0E0ZGtCQ0FGaFZvSGh3QmJId0ZSd3pZRzF2NTZzNG9WL0JmN1B4NGpFYnBiRmJJTG1xeG1JeUxZT0JESTRGL1Y3UDgvSStrWW9nRy9CRUJ0Wi91Qm5rSk9WbFQyUkJXcVZtQ0JXZDJjaGNxWkMyWFNUTzBJSW5IVlhid2EwU0ZFcEVrYTBkUXlKUEpPc1JxS2NFazd3WlFhRlNQZnp6MERwRW56dlBHNDVOalhmNFp1TCs2RlFPTS9iREpTaGlCWWN2YVJjMUFVUW5PZmJ2UTc4V0plMkliKzJlNHR5Skc4a2p4Sm5rQ1B5NStuS1V0NzBmbHhrSlkvUjlCZlgyNGR1ZVNITEFQc0ZuZ3hvU3pIaTBQLy8yUFBiMmFmKytTN2FUS3RhbzJ1a1FxWjBDMXIwc1NpMHZEMzg3emIvdHozSHNoRFFFUkVWTVFubVJLU0lwbVpMY1NSbVJyZnpERXJaMnJteW15N3Y3aytHcm96TS9Sclk5cGN0bXdzbTh1VzJiTHhSMll0ZFNXZDlMVWcyeW1kTUdPNFg0WUhFdzhQUWVFaDBJdnZ6U1FmMU83SEdUbkt5VUVWVkY5L3RWU2pranVxd2d5UG0vWVBxOHBLWlZ1RnpyWGJ0VHRWNGJ2czFHZFcyNnEwaUJVOEpGZ1M0b1FFQWtWL3RHbmZFOHhvcEFFRGI0QWMrRXhZL3R0c2ZGZTBWMTNSRStBQ09tSGJzUWZZMGc4NFovODJoMkZsT3lpMGFVdU4xcE5HS3BZbXFWcWdqb3lpVTRIZEhadWZxRzg3RWR0Mi8rL00xQWZlczNxdFV6RWR0U04weWF6MWhidWMrQTNsTFdBTXdQOUpwL1ZGRllha081VlUrZ1NYRHRpU2tDd3hxRUNhMHcycUdCUUkySlRxS2JYYnM2WDZjZkcwYXBQYmJqL2x0UDIwcCtiTmFRMFdzcGsvV0xFQ00zSC9aNllkVHBlZU92dTZPVjJOVVRlVEdoR01KaU9NK0pnL1FXU0VNUTloUlBCMHFLWldKZUJtTlZRRHFVRU5zdEFDdEl3QjJ3RWFJTmdqaU1ZK3dOOFNRNGFUREtNRGJFQ1ZpK29UVkhWSk1mZjkzaTIzdXVtQlcwTFdCTlVYNjgyYjV2bm41Y2JmSkluYjBsYktVUVFQbTM4ZytHQUhWYWQrVW8rcmQrdnJUcENxNmN6VGRZbThkK0k2RWpJc1VRZ0xkZmRseWkvOG5xcHlpM01LWTg1V0Q1Z1BRR24zOTZhYTdUNDhMZ21JWjV0ZnZFQm5RakxtQk5PSmpxVkNyQzRXblVPdVhPMytqd1gyNzhPU0FDblJCSmNVR0M0QVlKSzBGOGlMNUlMVWdKQ29FRWs1NU1Sd2did1FRK201MnJrS3NYUXJ1K3BDS2twM2R0WEg5bm9YWGVlaU04Ly8vOTVxdG45dlFsVVJMekc0WVpWc1lVWVluSC85ZnZla0Exa3hueHg2cmEvSTJlTFFvQkNTTlFWWnBTQU5mL21xMlM3dzhVZ3czQm1rSEZZbmg2WGpvNi81anJVQ25IT1hpc2JWQWhDa0Q0Q2l2ekpFS3Z3anhac2xlZlF0eVF1ZjBFVVN2QkdWTHRFcFhVanhNY2l6RkM5OEJzL0FJY2JxVW5LWE80L3JFS2QzN2JieXVIWGJ1QzhOMWFiazdFSnNra0tDeUNNaWh4eHA2b2RvWXY3cjJTMUplK2RSUkFqQ0NHT01XSVFRUWdqWEdCTk1lbHp2bjM2L3B2R3Bsc3FZTjNFUnNLR0h5MllZbTdwOGgxR0E1SVFocFEwbW9VNnlzOW95RHI3TUVUakczTDluWW0rTWJXTWhJQ0lSSWQ0ejF4K2RJQnhHLytjQzRiRUZZQ3hJQitSaytCaFI3akpUakpCSE8wZGlHQ1RQYW9BSWVNaWhRN2IxQUgySklnUlNjeVVqeG9OUE93WWREdXVCbWpvZE9oenFnWnA4QlRxTVpROVFrMEtody9CN2dKcndCRG9NcXdlcVRZWU9RK3VCeW1GMHlJNGVvQ0lQT3FRbVdmbjBCQVM2RyswVE5rN3hCMDN3bUk5ZFBuRWNHbUNYRHk5dnpIRXJWa0h1NVhWTXBtQkxpQVdmWkwrVUxMTEdBOGhEUDJUaUErekZkR2lKMUEwTmltMGFyMmh6MmQvb0JmWGZ1aUdFTUNDR1RDQ21UQ0ZtTENGV3hCQ0tGREtXQzhTVks4U05HdUxGRytMTEh4SW9FS0l4QnhJcUhCSnBIaVJPUENUWkFraXFERWlXTEVpT0pZMVBZUzYyMjR1ODlCcnVuZmR3Q0FMMElUUXZ2Zko2NnY1RklPc2hRT1lEdkE5WUNaZ01oOEVBS296MVZFUTViWEV5YXcxQWo2ZC92QUFGRzFHNVBWcTN4OTdkMGIwbnRIdmh5bjVPSDJUTEliWWM2dTFobmh3VHhCK2NPMTdocWY0N0RhVm5lbmwyVExpT0xHNUMvWVdhTDFWNWRhVGVoNzNYaC9VVEZQUVVqdDdxNUowT0F3THdaMEYvSEJiV0JmTjgvY1h5UlM0empOMDRqdWtxbjVHMTh2Vk1uc3RVU3RsQWlOZ1loaEVZSFdmaFptWGUvbTlWQkoxWWI0R2l3S0pFalJaclpPeHhuWmdXYVM4aUpsV2FVTHBNV2N0V3J2TEt6Q1BQdk00ZnJVcDE3VHAwNmtLWHV0YXQ3dldnUnozcHVmeVZmZkdjNHMxRnhpQ01KVktaYks2MlpXeG1icjJrZG9nUkpNVndna0psT0hyZDlSK0pJSW9ZNGtnZ0JhbklaVm9EZ0FJRERqd0VLS0NDSnROWm1VMW8wR0hBQ2h0c3NjTWVCNXh3d3gwUHZLVTc2OWpBTnZZaTNLSVRrN2dXOStKVFRxbEIzZXJWR0RPWmE3ZTRhM2Z2L3R5Y0gvYXYvbUlleVA4THRycmNMdmJrM0ZrS1crV3lkSFgxc2NtRlY1Ym5sclZpcmd3TWdOQlBmOUlLRm9jM0V4QU16S1pDVVZFQkFVTkphV0FISGhUbWdIUGw5V29ST0FnQWc5OE1JQXgreGUxeUVTUy94YldEeFZXcGJnRCtUMktPY28zWWZETzJ5VXowUXp3bU9pNkVDWERTWUc4UU5Ha0ZMRFR1Rk95SXNPQk9wVjJ2R0NhTWVROVF6cVJ2cjdpcHdDM0x4bDU1S3dYWCtHUGE1bjlSTzlPbDE5cUNvSUhWcUVWSlYzWEwxckpXK0RORVMzbDlNQUowZUp5d0grYWtSSkE5eGxRL2hoQlljbWxEQlBQaXdoYi96Y0VudHM3bmxHQzR5OHNuMkVxSmZZenlaZ3Z3ZkZoNXV2RGlyVzc4RHI4M00wYlRQeHY3ZmdZbTNrUkRTZ05PRXdFOUFYb0pRYk9SZXJCVjZadGxVeWU2RHJwQVUvY0hOd2NIM3M1YzByMENER21KR0tRaEI5ZENGTkp4TlBqamR0bzNoc2tRRXExZFJVWDJCeVlvY1JjVkF4SlllRldpV1dxRmxWWlpqV2hIeTRSL0p6aXA1ZHFFdDYvYVFPdHJlMXRYcTIrbExiY2x0bHNiMWZ6YjVLWnMwaVp1L01iRWZ6VjhnOWVEdWw0bmEzOXQyeDROZlRXWHRrb3J0OUlxcXZ4cmNpbExXdUxpRnhQN2xYemlHVWhmOXFZcjlTbE5iaElUeFdEL3FPTVd4OWpHanhWK21CaWdmNEx4Z2YwZWRwY2RObHB0c2N2TWNLNGFWU3EwVXlSUEJ2d3c2SkdiVHV1RmE4OGFtUHUrQW1STXdleFY5QU5GL3VQTVA3a044UzRlaXc3Q2oyZDhQdEQrNjFNMlJxYkNleHd2SWVVb28weDdkMElhMVNFVGg0N0FRbWt1RDRCZW4zbVZudFFIbWgyK2lrWURjNkJEZDdvd2htSmZ0RHVzNDh2a2VJaGtJRUJyRUtFMVNOQWFwR2dOYW1KSEE1dnhIU1gySkVoOXNrYXhlU3kyQlFNNEZ4aFlhODNWQm5yaGJMQXByQlRib2ROa2IweWd1VXAvUVZaUTJvTkRXWEFvRDQ2MUNnRTBJalBjMlA2TjIwaFp0eUsrcEd3Z2lxa1lWellTVVdhR2ZxcFJwUXZ1S09KeklFc2pCMEdMa24waUtZZ1J0MFpWd1pVV0FEM1owck15SnUxSHZ4NWgwVTlTTUZpRDh6VmlCQ0pVWm5adGZoZlYwOHR5K3c2MWhtM1BvdzRXUG9yMmgwVy8rUWc2U3VwbzZFVWFpY2FneHpRVWd3NzlOcThxYW8wTThVV1ZrN0JNTmVuT1dOT0dMRmpNY3U0aUtwU3grbSswZ3YySUJwNDl2S2pWR0Z3UGkzNVZOZHBGQ2h0dzlMSDhzcnRRdWt3dkM2UnVobTFpOTFqSU44eGpBa2JpUmVuRG9sODlDMTdSbEdpcVZBN1Z3cUZHT05ZMkJOQ0xQSm81Qm4xcFQwdWZBV3VIaWllaEhJbnUyVVdSMzFwYm9JNk1ET3dEYUJmTm5WT05IUlpvQkswNHBGcXFIbkp5VVFqdTVvSlV5ZjZuUmc4WEdsb1Z0bjNxT0F4d1lFUUdHak1lTVJidlJDSDJnTGJTQnpva2tHSk9TSU5MOWlFTGpaaGpJN0FhRkFHakdNY3M1UTZNRkxaUHlzc3Z4R0FTdk5hQlhaZjNjd0N1aWg5Q2pHRVBIc2UzWUExK2pnZWhBNitGNDVGeTBWSWZoNDg5RHFJdUE1UmhjbzEvV2lmc1FBZldKeWJXMnQvZWJsM2IxYW4xWHRpR0I5WWllOXRlSVczYWJ2NXQ3N2xLQzZmK2ZyMm4zZjRCenRUck1tNzd5Nml2OXo1djB1a0oxUWJUdjZCQVJobHMrN25rWDFxWDIyNDE5UkhYMi91L092ZTVyUGE2MG1xNDZWQytVcE1xd2x2R05UNGY0ankyN3UxZHQvM3doMDRJYnBuLzAwQW1iTnUyNWNuVXYyMU40YmRHdzJOSTFOU29iOU81ckE2SmJaMDlyWlRMYWNYSTB4NTYrSXRSdG5kTlB5RnNsNFZWS3lzdFVJaTVMMVc2NUhJVHUrcm45N2J1L1NodjdkYXRWL1hHVmtlNTlkc3Z5eFozdUp6akR3OU1mZGR1ZnFXejRycnBva0JQeVk5S24vOUx3L2UrZFNGdWU3RWMyMHQ3dnIrVmlyWE9qOXMydk82MXhGOVBlZTlHZTJiR21zakxhOUY1MVg0M2RlQjVYU0YwNGNWMTgzNjl2cmFWZHU3dzFYcmI0MDVXVjBHeFEzVS8yam0zTHZDZjkxTnpjV0puZVA5QWZWZzcvL0FxY2NyU29kVnRKUWppRitNUXVoRWgxcXZBNkNudnVSYjV1cGQ3WTZWYmtLaHJROTB1MlVOamEzN0x3ZXRtS1NmdmNiRitZelNFbi9MZlk0WCsvK0t4alhpRmswN3ZiUHVXMTNROGJtSnJHaTBudlkzVWo1Y3BjZ3pIOENIazdSdUdoV1RFaENFUkVTNkpNWXc1Y1dHK1k0RjFjQ0tLR2lUWkFIWm10Zm5rSWlRYUsxVW1kM21GZVZqQjFGWmZPMC90TnZCeXlGRStUam5EejBpeEFzNUtBajJvMCtFczFLRVc5VWdpRjJkaUYweHdvT1BKQnpUREZiZ1Jsam9oSzg1Tng4U0VsWmdsc1BITlRKa3lBY3VjRlJ0WXVmckdaQnlrdkRIQ1dJWnhjak1wdUdEVUFWa08yNlNUSCttcGZnTmVmTTUvWkFBMmVRb1VQc3NzQnNKZTFFQ0VLTGpvelJNa3dpWEJrR1NHUzYxTlNwT0JKak5yS0VkdVQrVlpIckVWVnZGS0R1YnFzSkdSdzJZY1IydHpuSEthc1RNTXVjUXdJMWtPREhWWE0rRElYUkV0UmdKb1dTa0RZMFJFaWNoR0dqTEpzRGpBSEcrc3NvaFRFS0ZTQUZYR3dRakxIeGxJSjVOdVFBNHlrQUZjclJKUFVrYU9OT0lWc1l5UklkOC9JeWdZNEFWNHUvMXlxUzZvUmw5RjlkcUk4bHBOTHhndkdQZjJ0T3BPYThyOGJob2xVMkpxdFVmVkx6OUw5a1FXa1lqeUFoS3hXTkpGQ05tM2U1cUdXdkNENEZSOVEzMU9LVHQxanQ0Q2w4QkZJT2RQRGtPTXIxVjFXN21lTitBOTR1MHA3U3R1S2JpT0RKbklYZGYrRVVjMlVqUVNZdytOYUJ0UlBpSm8rSXZoKzRjbkR4Y09PNmZMN2hqcTFydlR0ZWgwZGRvNmdSMVZoMzlOdE5QTU1YRURGcTNZaS9saG9jOHhzVi92OE1HSUlTekFLRElzY3BOSTF5SzRaUU5OcGhIekZNSzhoTG05UlZ2QXB5R3p6NVlwUjdBbDhvUzFBaU1HUnlwVUlVcWJLTEV0cVNSZHNBVzZXWXF0TE5WMmxtWTNXMmdQUzdlUEZxMXB5SEQ2NVBTY084ODFOeTF0V21xbGEzalhsMzkvRmcrelB0NmpBTUNUZnZPblNJSTl2VlY2ZThaQk5GY3NmTGk1eWVQeWJYZU82YlZBU3dBd0FQYmo5eGlldXY1bVNMMlA0Y0xJeE16Q0NtWGIzRmRXSGV3MXBWWUhpb2JFUVJLY0VTbVF3ZEFJRENkSWltYTVlQVI1Q291VXFOUWFyVTZmQVdPbXdMeTEvT3laQm1ZWThuenNacGdHWUVTTUdqUCtTeVlzcXQ2a1RGcFRZZ0JDbXNxRjJSd2hBWmdXVkd4bWdNRVJva2dVR2lNbWpzWGhDZk1FcVZXU1NFa1RTV1FLbFNaTGw1OFhEQzk2dDFCVXNyaDVTWHhzVjVhZi8xZjFxYUdlWm5SYWFPdGtHZmZsZnZMKzBUNjlsUGxWdlNmRWVML0c3Z0FERXlBcUFHeHA1M1FhcmtGVEE2RExWcWVWaFh5aGlwZ1BLemN0OUxoOWNyNG5pZFdBcDNJc24rMXBOTFBQYUkvTjRBcmNlL2xtVHRmeE5vZ0JtQUxEYzN6a1pBMkduL0E1c0VwRExyVTU3amk1Q1lBZDdNZis5b25ENlhlYWk1dUhsNDlmUUxBdWQrRTRVZ2Zsdy9aWmZrNU8zbmo4TVV2NXBseXhWSDFxVG4wbkcxTFpvWm1Ca1ltWmhSWEt0bTZIYmptUVEvL2NLVzd3blNZdXVIbDQrZmdGQlAvV0lOM3ZOdVJwdjlXRWljTlVrNmp6dnlrenJiSWU4bklUTDd3NVF0ZkxUSWZPZnNITUFJTWpSSkVvTkVaTUhJdkRFK1lKOWdDUUpDbWtpU1F5aFVxVFRUNzY0QkllcHFudzBHR0xxcWFHK3J5aFhLWnJMa29MYloyZmVFVFM3L1lvdlVueG1OT3UrVlBlTi9oNjFnY1I3QUNOOHlzbEJtVmtZbVpoaGJKdDdvTnUrbzY5YUtjR0hnMkpneVE0STFJZ2c2RVJHRTZRRkwxdTdISTYyVGg0UVo3Q0tDVXF0VWFyMDJmQW1Da3d6eC9nYjhKTk5TTXdPRUlVaVVKanhNU3hPRHhobmdCRlNGTFhaYm1CK2FTbWtvWklJbE9vdEdRaXNrQ3lKT2ZudW53M0pKOG1oU2V6M0hLS1NoWnJ5VUJaVlUwOWpmV2Vwa1Zhb3EyVFpkeVgrMGt2Zlg1Vnhlc0FMTDBYaFpSWlAyTVFSaVptRmxZbzI3cTlCcHRxRHYxekoxcHFuZlp4d2MzRHk4Y3ZJTGg1eVAyRmoyRjIvY3pJWU5TWThhK2ZFTFhMVFlxRFIwTFpoOW9DWWRhbitVMjFHUmdjSVlwRW9URmk0bGdjbmlBNXY1ei92bDhLYVNLSlRLRkdRMVp2c2hocTFOYkVMaVlUMnB3VHBpNTM3Ymo5Vkc5bkorOFNzM043M0kxLzNJd2ZlVGh4NnRsZWozZ04xK1BVK05CWEpLb2k2TGxvL3ZJTDhTV1A3bW5EaldrSEpHRU1qcEdKbVlVVnlzWTVEZkVac2xDY0Y3UjdCRllwSHAxaTJlNHh6ZExWNDZHK21VLzZlbmJ2ZUVvTzE5TWNkQ3UrZHQ5YTFab2IydVdJVFFjUnpnMmVtc3ZxRVc3RmdFY0ZYdTJ4TXM5eXZxZjg4ZkdlVWMrSkw0eEd6N2k0ZDNsWVRTNHQyREx1QmJMZVNNLzZTMWVHV1grcVJQazRtNXZ1c21KaW1XTlZadStLbVcranZkY3JOZ2Y2VGYzcGZ6aUlKL0toUmVEazVoYVBvUHEvc01Bb3l3a3lPMHRoczNnNUR1S2h4ZkJZSEY2QTZyblppb1hXQ2lMZHFycjdQS0kzZkp1MUphMVZMYmllVUhXNmE2ZVRKNTR4R0RGWUY1cUxCb3ZBT1JyWW9TZXhHZnVGTm43bVgxZ0lwR0dmM2JDL3JqNDdJV29Mb2V4RGtxREFxdHZpVVcxSFVvemxqZlpQZ29XcnVVRjNSRFkxd2J6bE90NzZ1U09rYzJCd2hDZ1NoY2FJaVdOeGVNS1FPQUdzdUxQaWp3dnVqSkRJRkNwTmRzaGZDTkRVMHRiWnZKWmozZVc2eXFGU2IrbUUyRk9QNDBlMEUydGFPWTR3QTRNalJKR296QnFHVm95WU9CYUhqeUJKbklBbktUa2JuWFBuMjduc2NqWElOVngzdzN4U0VVbERKSkVwVkZveVpJRmtTYzVINy9Ia3M4aVM3QjBXYjY0Y0dRR0NmVVZWTGRDZHRrNVdOcG1za2c4TE9QRURldWM5MVBPM3ZwbmxZNHY2MUNpOUxGNThwbW5vSkp0eE1EaENGSWxDWThURXNUajh0dENQZEFzalJwV1NKcExJRkNwTmR0TDVHcFUxUXEweFZLdTdwcmtvTGJSMU5uZnhqTEloQ0lQTklUM3J5eERrdkRqUXRIb1NZd1lZSENHS1JLRXhZdUpZSEo0Z21YT05Ta3FraVNReWhVcVRuWFNoVDNpVmh1ZjV2WDRvMHgzcDdzUjZSL1hDVjl4ZGNIZTBhd3pKeVVJM1VUNVdZUzkrN0oyTHVieHozSlRJYU01L3pkeU9mUmhzNUpKTnQ1TnBHclY0Wm1Cd2hDZ1NsZG5NUXZzd0lpYU94ZUczaGQ1WGk3RjRsR05uR1Zmd2FWZ0c3UUExc3E3dXpDY1ZrVFJFRXBsQ3BTVkRGa2lXNUh6MHJKUFBZaXJBb1JFQTRDU1g1ZXQ3T2I3QTlTQTFwOTdFZHFPMFJGc255N2p2eFAzMHZYUmg3U1AzcjVrYWMyalhmTjdueTRjQytKcjBNcDNmNWtZZHRvTG1ZVmZ6Z01iNE5OeTdvZ2JkZ1M0bnNOWXRSb0lSR0J3aGlrU2hNV0xpV0J5ZU1FOG91dmNrL1g2NzlsdFVIdWhxUHFuNXBDR1N5QlFxTFptSUxKQXN5Zm45Rm8wcDN4YWxxOFdsbzZqUzNYczlTTTJwNzh0b2xKWm82N3lwOERJUGNMSS9RZDE3SkthNkYvV3ljeUV1UjNRdzRPdE5qR0c4elU3ZkUxamR2eUM1VTRQYVA4bDkzT29YN2IzK2F4aTZycVFwdDE0b2dJK2JET0JUWDRVb0RqT29XRHRYY25LZzNHRW5tU3doamFHV1publpMTlJneHJCeUJhQWdsZnZ6TUdOWmQ4MSsza05GcnJ4VDF0VFMxdmswbUVQdVpLL3FORWFsNGxSZHVIbDQrZmdGQkRNVWx3bnVteFRPbkJJUzRVUlN6cWVaZHJVWmhjRVJva2dVR2lNbWpzWGhDZk1FM2RnaEtWTFNSQktaUXFVbFMvTFI5eTJ4VzMrcVBqVlZUM00rTGJSMUR2NGtPUERUOVVQV3JtZjBXeEUzQit6TGFXT1pabENVUERJc1ZBb2p1dXV4Q09QMnlxUy9vbjU0czI5VTlwREhxempLZ3pYbVE4MGg3K2R4L0NkOWFyZDJIUG5ocnBmTkFiZDFxSVo0ZUhDV3F0S1FuVG9odGpIQXlNVE13Z3BsbS9xcTZabFNwVzhuWUhHUUJHZEVDbVF3TkFMRENaS2lZNUt4Y2NJTDhoUkdLVkdwTlZxZFBnUEdUSUg1MkRJM0poa20xSkNsU0djWVRzWUJBSXFBc2dCVkdpZ05RUFdhODd1RHdSR2lTRlJtSTlBWU1YRXNEaytvaEV4eTNJL2ZhQTh1QjNRMW41UW1EWkZFcGxCcHlaQUZraVU1SDEyU1R6d1Y4TmFPTWNhVkFpV0JNa0NsUUJmMUJsY1owTkhXYVdEY21YZk42SVV2SS9JMTZlV1YyMXQ1ZnRYSWJFMzlIT0xLZ0xuc1pWb2RIRTcvM09seUxjOXB1TGpqZ1plUFgwRHc0Q0NxMXhyaUsrdHRKdGcrWU5IaFZKOURSUmNZSENHS1JLRXhZdUpZSEo2UVJKb2tkYnBPdEpzZ09ra3JrVVNtVUdsTkJORnBFQ0pFa2lSSmxxamxWYmZlWnI0SHFUbjFKaWxDQ0pGazUvaktoeW5MS3VzZlVxSGVENTc2U2JEL3Z5TVA4QlRaTDcxOGM3c05RVTc0aGxROWJXenJqcEdKbVlVVnl0YW9QSTN2NkcvVXdmcmI3dU1TYmg1ZVBuNEJ3Zjg3U0paNWhuUzF3NFN5WXhER1hOMnR0blZnY0lRb0VvWEdpSWxqY1hoQ2crcStVWjhqU1Zmempib3IxejRUVVVoa0NwV1dURVFXU0piay9LUjczakVVUVJERWFXSUpWQWFjZG44RnJJQWxZSUtpS0lvZ2lIcGJwblZ0VkNURkxwM0Q5dFpFdzczbmU0UWgwenpzLzYrN09JM3pZSU15Mmszb1VtMlNLZWFic2tUeE5XaC9ZdjdoNDdXNXlrNVRyV0puTHRQWUhrYnAvZVBuaXpLbDNKbzgwWDFQbVUvaC9ieEpscHk4cDBtRHZwTU9LVmR1WVdCa1ltWmhoYkpkWnEvV09QVFBuWlRmNjdTUEMyNGVYajUrQWNGcEVJNTNOeXlxVXNNNU1vSlJZMXZqNCs1WWRUNVl2dnFxS3VzNnJ0Z085eE8xUlhYVkNBeU9FRVdpMEJneGNTd09UNUNVa2lhU3lCUXFiVHZiajNwTGEzOGNWVWNWSHJKbTFTQTExTk10TDcybEUrSm9nM0pkRFF6cHFSeXlwbU9Ba1ltWmhSWEtkdVJnVmV4bG5YZVdNZUtkNEViRmpORW9Mc2ZOdzh2SEwvQUcwb01qbFBIaW10ZHhudWQ1dmxSR1ZGazZWaS85VVVsbHVHdEZtRWF4ZCszQTRBaFJKQXFORVJQSDR2Q0VlY0pRQnlWOVVrZ1RTV1FLbFNhNy8vUTdXalNxVW05WFJTV0xqU3JULzR1MXJaZWFhcENhcWpkRE4wcEx0SFd5alB0eVAxL3NpcjNzY0pTTjZHeEtldG05d1JGcHVOaGsycGtoZDVtN1BoZitLY1N4eEJtUkFobkVjSUtrYUpiakJibkJhSDV5aFJ5SW1OcDJsejc1enRyL2NaUUZkMGJKeXBOU1ZubitXanVuaFBrNFIycitKUk83K1pyOHlpSmJma0lvcnlzRzA0dUZrSnF5SVFabFpHSm1ZWVd5cmZmVnlBYnRzTk11dSsyeDF6NzdIWERRSVljZGNYVHV0TldlT1NZNWpoTk9PdVVlWnd3Y0hNTDJ3SVIzZFhCS1lRTkN1akwwRXo0MGdxSXcwMWVtRDh6QTRBaFJKQXFORVJQSDR2QUVTU2xwSW9sTW9kSmtTMmR2ZnYvOHB0N2IxYzRUYTJaQ0pTZUZYVGhuVzJ6VUtPbEY1RmRsNzNxNVVlNlBVM21vM3RJL2pQMGFCNmNKelRmSUpUb1RjczcxMVRLcHZrTlJxZkhseExKREJ5dDgvTXdhRytKQjNkQXBjdXY0ZEVMNERZZTVGNThQcWI5eVpYQ01UTXdzckZDMmRYdjlsSUpELzl4cEtKblRQaTY0ZVhqNStBVUVwMEc4UjU5L1c3WXJic1NvTWVPTitpcnhxU0lKaGR3VVQ1aSt0UzdFR29IQkVhSklGQm9qSm83RjRRbU55a1R2UGltUkpwTElGQ3BOTnZub1V5d3BLaGlVbFdyUVUvL3NsMnFRbXFxbnVTZ3R0SFdtOTdVbkp1c21VZnFGejV0UysrcExOMjNJMTZ4dmVHaUROdE5MbWEycENmRmd1L09CZWg1RzlxeUtTMmhlcjFudzlqRDQ2VlRPWXFDbWRMM1RBQUFBQU9nUkRqam9VQU1BaXR5L0FBRFFqZUp5M0R5OGZQd0NUUUE5YUVDbDZpOEJZSXd4MW1VSXk1YVptbGRmVnhnY0lZcEVvVEZpNGxnY25qQlBTSFJjVXFTU2hrZ2lVNmcwMmVqUGc4bGJwUENja0Z1cXVGVWFuNUxrOVZMWEs5WkIxSVBVUkQxTmk3VFExc2t5N3N2OTdQNDVIRjlnQ2wzeUM3c3Y2WHFyM2hPV01jZlAvZ3FPREI1d1FUdWFRdzNEMzJmaWxJVzJCclZud1M5ZlU1dWMwZUJyeGIzWDFFK2hMUk04UjJiL2I1MlJpWm1GRmNyMm9CMFkvNmplQ293ck1OWnY3aTdCT01MTnc4dkhMeUE0NXJTck12eXJ5bUNrbkc0V0I3cVMvTE5MVnM3N3NzcFRINGY2UjdYODZjU2ZYdkdzZ0gyR1A3bm11SkNveWExajR4OVhyTVN1ZHNmSXhNekNDbVZidHhlazR0RGZPSC9NTG93K0x1SG00ZVhqRnhCc0ttdW5VelVzYmhWVnNLUGxwTzBLZ3lORWtTZzBSa3djaThNVEpLV2tpU1F5aFVxVDlRQnMvWFVTQ3dCYkFWZ0ZzQUJ3c0s1QjZQdjQ2RnpKTDMraHpob3RraWRiejBrZkgxanBVNjM1WmJ1WC9iNm1Yaks2YlVSYmdRTmdiQjhkY0VqZ0srQjJySnhyalFZWDI2RlhDaTE5RXgwdGhBNjJhSDNjM29JR0g2Qm9JcDNJR0k1WmFOYUFzd0VocGhubHprSGdxU2dJbnNMenRtakZDa0lBbWpDa2tNaHU5T0ZHVys5d3FRNWlKQkpjc0lNQllFU3greW01cG5Lekk2OFRxUzJHemFOa0pmTlZlejI4bUtpWmNMbGZPTzNPTXFvMGtKVzI1QWs2b1lTczFhZmh4ZFNTNXpwZzVBTEFEY3dGakg3VUZBMHduQXdDcTZ1bkxxYnlEMWlzeURZZUYzMmRTRWViV0JiY0JoZmN2TFVJUWE3UTl4TWJjZDFBZmFXZWxXSHl0ZW0xVytCNmZXNjVDTW9iZmIwOFBVS0VJRjNCeFNVVUdMaHlSZ1RySThVTC9Ycko4UXJJTW1DWU9OLzl5TzNjVjF4RFlFQ2NPeGN1bUFETG5GYi9CWnBmUEU1R2dHRUZ1alNwQW1pa1dvVWNmZnFwZkNWYkdUNjhQZ2dpQWx4TXkySENMWVVKc1F4R0l3OG1BSUlMRUMwMU93ZWhYd245VlpBeE1GVmVJYXRVVjlaU2NwaUltZkhsTmNGdFZRckRRZGN3YWkzV09DSEtmZTRpSlREQWt6aEN2RWxhbHFFVElOd1ZhcEpTY0ViUjZybDlxQ2xKRE9wR044SjRJekFoN0ovTlFSUVpTNDBaRXNJaGNLVDVVWUh6WlNvQTQ0RytmaFA5ZE56ZDRBc2JWQnk3MlMzYm5yK0wzajJ2YTNkNm9Oa3hUNWZ2WnFYV3Yrd0pEWFlwOHlUOG1YMGVlWGppTytwa0VheEpVN3BkQ3k5N1JaVSs3dzNDcC9BUmI5eld0M3d0RlpoYzJsb0R6cmptclQzVTNLamZUUmZ2cmFzQktCQ09NRlJnb1VYU1lJZS9kWGh1cTBONm5kT3VSbXZQKy8zOGYvbm1xKzhlTytzSTREMTFiN0xibHIrc05mOU9CMjIzSmdqNGFLLzlQakI5ajh0ZXlWZnRMNmNMbkp4NmQ1Q0lpUXpoc0ZOQkwzNDQrbXNyV0hCZG9YYytxMWVpMkV1TnpqdnZmdVJUcWR3Qk9oL2NHRDdqTmxycmFJY3pZSmovNy96RlVCakFEeGRjY2w4bEJMd2FBbmdod0IzQVdzQmtCQXdHVUJXdDZnaWpObTZ3SzM3aFFEQUk4UDdXNk53THVuM1F1Uy9XN0cvdFFTb09VWEM4aDhlclBrbnpHWnJQb3IvVWpzc3RBd1RnYzU1OTFPQXlKdjVDZVNmZ3FXRHFqQ1ZXdjVEc0Jabk1xSEZlY2I3OFFzV0Yxa3Vsc0g2eFpYSHpVdXRTLzlLSzVWSmN0VnkzM0x6Y3NyeCtwVzFsOVdyRFd2ZDY0L3JtemJiTksvOHpCd1JxQlNtdUJhZURLOEVMZzVlRUFnVk9MZzVmRmFsRW1wR0xva1EvUDNwaG9wVThQM2xoYWdZaDFqSnlMaHJVcHV4SmRBWTlGNzIxeFExM0N1ZmhGK04zdGhXSVdZRkpGc2g5N2JQTENvekZWSm5wampMWGdVWFloYk5kWFNGODRDcFJRK3hLVUJxV0p1VVQ4ajJLdG5HOXNtaGRycmxSZTVQdWdPNmc3bnA5NHNJcGJBeTdCN3NYTDFWdUlmdlVOZ28yMlRiUnI3NlFLZ0lHRUNMNEI0bXVDdnB3dGhkazVLb0E1T1BRNXBlblBMczBXeFh6Tk53Vm54NWJWelc5d2ROTnhsTkNXeURTbVhnMGtFY1RCbkRzL3VsNE5zcmdjMXRYc1U5UjVaUndISHZ0Qkh6dy94ejBKb241YXQrTkhtYzJNaE5pWEp6eHlHenVESGJMM1Z3VlFRQ01KU2JqeWtlUUdDbHl6YzB4eEV6U0RaenpFMW9rM3ovT0Zsb2dyMDJuSjZLdmNzd2tMS3h3OHZ3eFUzQ0tUY1dMMnlCbWJlUGhHVDVXaWN3RDJJNUNFR0Z6TXRFcVcveEdHRGs3TzRmVGwzdDVVQWduY0FZMW5yS2d4SlNFc3FQY0tTL3Fscms0bTVxNWhmTXVpZW52MzhBSUZBVjM3YlpGbGdVeHdKdkY0eWdoSlZyeFJOY3Y0S3piclJ3Z05RdiszME02U0tFMEc3OHFiQmVPaHo0SHdLOFB2NXQ1RDBPWmI3eHZlOTVtdmo3L1ZRK1pBQWl3RlhEUkl5TUFmQXBlQ1IrMG5NZUxQdEhwbEMydWVhYlBhYnYxMm16QUJ0dTEyNnJEUmcvY2M5L2Z6a0NZRExFWjRUTWxZRWJFaXBnMWlvU00zRmlPbkNpTTUyb0NOKzcyMldhL0ozYjVhQkpQWG56NENoQm9GbzBRWWNKRmlCUXRRWkprQzZSS2t5bEx0aHhMN0hISlhvK3MxK1dLRzY2NjZiSnpocHlYNzVqSEx2aXEzME10V2cxNzZxd2UzelFyY0Z5akJrMjYwV0VJRERRR1NDd211SXp4V0JJeVo0SERocDFSYkVtTmRvYzlGODZVeHBuSVFZcHBKcHZDdzFRcWF0Nzh6ZUJucGptQ3pCWnN1aWp6eElnVlo2Njc1c3V3VUxwRkZrdVVhNHg0Unh4MXdDR0hIWVFBbzJFUVBoSmpoZmdobmt1a1QwMU4ySmlCVGZacllHdllDaWJBWXpBUi9sSW1pUlVzSnc5NExUZ0ZvRmJiVTIzT0lWUks1eGI0eTYvYVA0RFBBMk9mQlpqeUkwQWRDcVFEZ0FhcmdWZE54SXJEWVd5aXhhQmZZMk54bE9BaFh6UmtRU1NXeDRuRnkyRWlXc0g0dEZjNnNndVlpaUtweDJMUm9FTDNDTHNha1lUUDVVOFptNzg0QWdGSDRtQXZGbS9DSTI2NGZHRXZuUUhHV055RXNRK0xXaGpKaUhDZUY2Tm9vMjZGNko1R2FPbVFGa2NYSG9pcmlxTGwxZU1DdEtnSkljUzlXTjBpcWVXdUJKNGlpR2gvNExxMi9pQ3NKOG1lcmswWkVHYUhHcWFIY3RrU0U5WjF3NEJmaTFEUXRjczVnN2ZraVVkbldoSlBkeFhPa1RPNE9RRnpUQ21RYm9FbnZmQ1RvWDcvZ1VWanMzZVczK2t2a2dXZHVZQVd5RzU1WHRQdi9IU21WQUlWRldobW1oc0FiTUl4Qk16bXlTU1c1T1lyVGZPeS9DZkNhK015SFBpUnR0VThxNjhwRytZbDlObjN0ak0ydko1Q3Z0OEhHanVNQ2daOG1pR3RWMHQwM3UvenlMS0JIZFJ2TUkrc3oxeFY1dGxSdjQwZGttWXhQMW5yc25ZSFRma1J4YzcwMEwzRWVoemxmS3NlTFZLVlZ6SmVkV1FnWGVNVlB2VnBsL1dvcTVFRE9vQjFqWlVOeWpwVnFrUVNPaGRIU0tNZUIzak0yRjRjM2VnL0lGdzBmVGIvemZUYnpla1FUeFU0NkRWVW9iUGR6eE5EUUFVUTZXKzZ6dlEyZ0dmSWlSQ2ljZnBvRFFlblVTZUppUEVUMmZHMEdua3h4YS81a2VQSzZVa0hPUWtPTFRsRkc1cnloWE5FRU5aM29FMlcvYUo3T3lVVjJIWm82Wnhxc3pKc1VaMHNXR2U2N010Y3JQRGU4dTdDMHVVYWd0cUsveGdISDRmL2J2WnU4S0ZHQ0RIczZLV0Vva1poUWhzUWJsdVhiby9nK3NPbm5hQ2Q4U01JYS9CK25JMTNUbXluUTN4TzhCV3FUT3grZjBDLzQ5TjEvSFROVndHM3YxbS9IYmpVblI3dXZVNUMwV1BRZmhiZW94MFdVNWUzZnZoSFJaTzE1dDhic1E0MXFMMm45SXB5emxBWlpabWhJbnh5T1pmMnFYc1NiblBvSVljTmt2SEJwVlNzUXZ2dXA0d1V0cVZFclpBc0VHY05uem1KZHBpWi9uQ1drS0FsUEJUWHBNT3VaMHJ2SWZBQ29PU0pLbG0vaTAwdzd2S2p6WWtaTmVnVnV3VHdYYUs1ZkpiWTl3QmtKaHprRTg5Z2xuQmtJMVZ2YzFmUDlUclppczZ2UDR1ZjBZVUoyOGVmeHFXNGErWDJJSzc3cEVocThBTnRzbHBERCtubm5TN1FTVzhxaGpjL2NGdVRmT1BsTzkreitmSDJvM2VGbTJjNUpaaGlNckRsWWJNMXN0SjU2Q0dWUEk3d3NaenZsMTVZNzMzRmxVUUJ0RVlPYzNKMXNrWm5aajVidEx2TjNocGNMYmoxeWlIKzNkZlRGeHVzZmg3Ly9EVU85dVkxd3dlNC9PbS9uNzRDbnJWYjRBNjFYZXZ0WURUVytTNnNlcW5yejV2NmFmcnpYMzg0VnJxWGNXeWt5RzdzOEVmRUNydnFrS3NwUlhKU09ucFc2RGxOTUZMRVhhZVdWTmlYcjJNWTNwbWVYMEg1K085MHlMMFFtbVArRGxxMGFTSmpZZ1BMQzAxaE4vUUVxSitwRWg1c0ZEcmY1blVxK1BRTkhvUzhLdkhvYmZZN1pZZjRkdVdFUDl4dGVEdGN2K1A2MmdxV1B4N3V6c0svL1FXeHhTMmFkMy9EUEdtdjdrb00vTkcyQ0swT0pQcU1xSyt1Tnd4RUR6TG0xK3BSdFpFek9XOExDVTQxLy9Udk5FaWY1WDhEbXJ4Sy9OVENUZWdjWjR3aTloa2IwM1FOa0l2UUhCOTJ0Ui94aGk2cGNIR2FnN0RKUWpnYnVIUCsvWWZURWxPR1F1TkgrSlBqS0QzMXdoeGowVXU0ck9odmRqZHltR2hOK3NUTmFoQVZsL3llajlzdXYyaUZSaFdmbXN6a3M4MjdUQ0VuTVFqTjZCU204czl5RXpub1Vta3JURmRRbkV4NWZQRm5sa2FJbHZJRnpHUjRTamxsVHY2WnNyREppcEJnUjM4Umw1Z3JuV2xjMzcrL3pIMkJ3V255MlFzQjJDQVNMazRUaUUxZFdjSDlJcktjd0dKaVlwcTJOd0dGZWxNc2t3azJrR3hEYUhzTjFkR1NLNVFPL1Vta25yNlhZSmxKeklTb0drY0V0cXo1RUIxUktFRGZ4VkNqVlpkVzJ4K29OSDNJancxcThublRvb21oaVU5MTRZUW11Zkd0UnhtR3l6VEJmTjNJMk56SzlqVmc4S0ZSWWs2clFPcE5JUmVVNURFMU0rU1FNRVNERC9lcG0vWm9WNnZJUi9WZWtNamp2ek5xdk5MVHN5T2xMNTZqZ3Q4NDQ3MTJsOWJQUkgzd29IaE5qWHNpY0ZySjVUNGt2TGlCejdtUHpZaC9FUkhJK2RIRksvV3cvTW8yZEhtUHordi9SODFkUWp3WklyUUhxL0svUjZrNjFmWXNjTEpoY1U4c0poNmdXeVhrK3g3NGFTMnoyNGpsdncyMUczK01aR3JUUlVMU1YwMnRGVW5CQ25YT2pMVjJvR254NHpGcitCTEF4TjNpK1NkY1JDenoraGFnaGkvUHZnaEF1RVQ1NGFlVmdIbjNvL1oyUHUrOS91YTUwV1ByNmUxa1AvRlM3MGV0cHovL2xoYTZrWVBEYWpOcXNEcmRTbzM1L0pUS0hFOURkbXBrL2djZEd6Zi9oak8rTVg4b21sbW1ST3Z6TDhDR0JBWmpFRE80K3JUdWdlZUFDQk5GeXdEYmlRUWtSeThZL1NneDhsdnl6S05uQ1Z3d3kyN24wTEFMdjM5TWs4WHNTY0hVdEdXSURSc0V1Zkh3SnJKSjI1L1BXaXd4SS9RaThtR0ZyejA1anVoUWdleVFsTWNqbmVHdEtIclBvazYxRFFCTnhoNnpIZVF6Q2IxWjI0cEV2RUhGVXRZdUo1OVdLSWVPV1lhUU95b2d5N1ZNM0VrV016cys3bmM2UVRzL05Cd1VoakV2cDJSNUxGTnV6eUhQS3IydFMwbUFtS0VjVmgrL3oyWTBNMXNCdExuODZEMlZtODl2TXBmNm5FL0F5cTUvaWlZcEpUY0p0KzhaVS9OZzBqQjhkU0g2WTFyY3pzMnZwL3l6b21hK3I5K28vSmZhcHdvelNxQ1dPYXRTS0RVSU5TVWVHZytLVlNEaktlM1JGaVFuRlBXWDRGeUxGZ25TL0g3SFIxWVhCRXMvY2Z6Uk91eG5Gc0JsLzlqOGVPMTBacmI0Ri9Nam1zR2YzMlNhbUlNamV3a2dIOERtOHZ4Mk1ta1NjNk1uOEJFa0JtRlVzcnNNQVlzWmtxRXNCZjljNVgwTi91RzdteDZTdE5Vdml6d0NJeUd4c0VVd2I1NEFMTHlySmR5ckZjU2Uxb1Y3VXU4aTBVanUzOUNkeVBvRnUydHQ0cmg0Ymh1eUJUbHdqVXkvMUY4OEtDN2FrWFVJckxQNktqT1VENXAwL21pdjVUZlJqMHcwUXZ2eTRkQ0h5RE5IY0s4cFRMaWNtUk9qYkdzc3hkakk3S0NSL2ZVYVRRODZJZFFoU2pYTFREaUNUUmNyVzRoZ2VOcDZ2RDY5Rm1mcEtYTTZiMWpMc3NaMUtYNmxtZWJXRTlQMXg2WnRzRkw4VG5GL01yNi9XQ0RUL2tUeERjbmQ2RGFzVk1DMlJjTENMUmJEaXNpWGVDOEw3TjNMWXI0V0I4ekVMWk8wSUZjaTdUSHhyTGpRYm5VeGt2MSthS2FQVFNQYi9jaHBDSnhyakN6anhUSTJFNDFhWmtyVmJYZ2t1NGU1ZE5QV3paNVlZWDhtY1hxNUZEOXRiNnFRMnhia2RrUFVBWk1WdTNDS3YzQi8rcEM1a1RhL09oaDVodUR2Q2d5UU94T2FuL05YY25KVUhaU2JFdlE3c3VjY1ZlQU5vTnhjdTRyRkRzVlB1SC9pSjVHeWU1dDRRc2Z2T3J4TnFKZWxyK2w4WHJoaXpjcUNia3UzM3ZIWUh4T1EzOFRkS1ZRSndTWlJxR0V6NFFnNlhhaHNJb0p4dEw4U09CSkdad3JWalVSSWt0K1ZqWjllWkExcmsvbEpNMjFyTXJIVFl1dVMvUFVON3A1UHBFd1FOSXBoSVBiMW9odUpYTVZRWTVqSnhxS1NJZ3ZsQzZIVGVHang4VVJHbCttQVdtdU5mR29KNkRXRWNaeWtvaXlmSXU4YzRXYUNkem9oc2M3eHAvUyt2UEVNTklZdUdLUmlsRVl6T0lqN1llL0MyeFp3N1JUazNXdyt3M0w1ZFBaZDVDNWJNcGhUSkVtU1MyYy9kK3RsK2l0YW9wNk9OSWpKUk1XMWMrU0NjWlNKVklJME92VkxWTng5NXY1VU13Um1DbVUxTnQ4STVobnA1bzFPTHUvM0dNZCtqblpIa2IvVUhKbWY0c0ZTSXhQQlN4RUpBaEhTWDNCN0pybEhaUWQ5VksyS08xMFZIRHI5Z093RTU1azREQVpPeHRXS2YzZmovNVptbUZjRGMveDUrYmxkclo1THorOXFjK1RicjVUNDNHenpNM1BnOHl1eG9DSG4rOEcyWU9tRWUybHRHVVRvOGEwZmVpcWdyZHRtZTRmNXhwOUNsTzJ6clZLZnpBZFk1dzQxL2hPbjJ5KzZHZG16R3puU3ZnbkVKSGZUNDU3a09QZlV1SmNsYzJwYjhNcExEOXQ4TStxLytaRzFOZHBVelJOMlY1a2lxMjQzV2ExU3Y3WnZXN3dHWGJrb1BRb3VKTUgzdWtLSExyM2RQYjFQWldIcUh1ZVVuM05Nam5yVURmZEtveHBXMnRaMEhtbWZYQ1R4bXR1RFZ3dWt3OUZIWWxXdkc2M3lKRWhJOXFiWHM0SmpQWk1USHRiQ0s5L25ib25LREk0eVJWWmNickpXdGpxTU1kbEQzQS85U3Vna01ZdEp6dStjbXJMUDBxZnlCSys2OUpETGwrOTkyeDVDb2xXM0Y2djJ1YTkwZ2NTckhqZGVLNUZkN2RKdERXdHNLK2VsSUNhOWRaZTc3dkc0UnBhNzNjTG56aFRyM3ZQYi8wQlIvcFRYT1ZKMy9rbjFFM2pSYXNNTDdLZklmcElvVWhRUnBrR05mcmxIbEx3SEpLUy80UEZNK1RtWGlLNm5ldjUveTBGNlBuUjFJalc3SFE2RmpNWHVLaEtXc29jbWFqV1NSbE9LTzdpUHF6cTRNRU91Wkh3cW5Zd25PTVVWd3ZGTzFxNjU0SkRJVXdSTnY0MU5ZaTN5NndiTjlNRHFzY0tHeFpQbzJKTDBBZFk1UEdXMUhXUEhYSzV4am5XT2o3a1prbGM3Z2xlZWU4Z3hQYWYrMjg1YnpHV1BHeTN4aE1OWkl2Q1N5MFZVU2dUYzZaNlpMNFd3aUU0WHhxS0VKYzJicmRZTVp1eXpMNTI5VjdvZk5QM1MvdGI5elV1Yld3VE5MVDB0elFwSTljdjZnWHRKbWtodzhpdUZZMDRuemFWQ3ZmMlcrUitoZHdNOWpnMnJUTDl1UVh6elR3V1NYMHA0bDVEK0xXb2xYRExyMWZsVldzWklrNlprU20vQllucERrbEtXeGloeklveTkxeWxLSWZLN094cnNOd3lISWNrZTYvZE01ZmZRSjNhVXJPU0EyMGxXU3BURFVLNmo4UGNseDQ5WFByL1FwT2d1dk05OVowZ3pYaDdpa1ZlTGIvalE3ZEl5UkM2a3VFdWxqbGY5NmtXNU01VCtYMFdYZDMrNUdwQmZ2eThRbUNkelJ6UHdFdGxQTHlPcy9sZmpTcE9kUmZYcXlkZTRwVzhPNk9TNER6RmlhZmtBNXd6S0RMWXpWYU5HWCtIYTN4NHkybk1NRUtRbWdUeVlHMk83NUxhSVVSVTNvN3BZMG1oMWl4RFRuM0pPclRZemFwVE5acmcyV1J0cFNxWU5sQ05sMEVYTm5uRHB6OFdlRW9yeE5sMVhVQjJSd0lYenBOb0xEb2w0SXZpdnVNNVp6RVZYazNRSnJrNEVES1pBZmpDK1JOcmtOSmV5RnZqdGY4Yk0yWU9DY3dmbGQ0K0FpejFIWXBzUHRyZSt5Ni9Ucy9YY2JYY0paVW13WWQ5N1V4NzVPS1huaGNsUFYzNDhVbGtjZStmRXAwKytkQ3dadnYvYjB6bkhEbmFTLy96RWlnLytHWHNDS0s4YlZmZ00wSUp3U3BRN0pJb1FmQUZOY1hJVjQxUHA5UzlMN0lXbUhUYXJrN1ZMTGp4dW55RjY5cEJCYjBWYlpzalJ2N09HSE96Qy9mOFNaYzdZQWRzUmxoMDMvcUdkRklsMGNZME9IUTMxdC9IaEdwZEFYTFlyUllhSG5nNzJtZnB3KzhYeXZkMDIzaThxRjdrZlBueUdUUHNwYjlsUHVacWZXdjY1ck9pZmlvUGg1aHRvMzRib3pzT2lzTzlCNjFZOVpUNmxYWDZkeHozUDNtSkdQWTRlWXZXZjdjZC82ZmRlOW9tMk53U0NrUzZjSjlOZWVFaGtMcnJnMFByZEJ6MVROU3FWa3RicWxMNWZOQ1lHUDYxOEtrM2NpN25UVnNycHczQWZTeEFNZTJtNzN3TE96TkRkSFhEelZJMkhXdVhUYWxXMFQ2WFIvS0ttdFZvMTg4dG1pODlQV0JnV0l3Y3ZObk1RSWNQTmZQQ1NpY25BUlp0eTRRaUNCQzZlbkFoY3NqRVhRWml4bVB1MDRTSDNxZXd5UGtqd29XSDNhVC9EOElSZXFyOXpqM2l6R0g1SkEvdnRNK3c5UVQ0VjlaUW9vcjVwMU9GMzhnWnoycTd1OERsam03LzQ5aStzOTVWaStJTjd4M0FaZDZTS09teFp2VGxGVXVaVXptQnYrNG1vM1M4MGQ5ZElhOFhwdHBXSGlGMWJPbjV2WGZRSGQzK2plRmZISG5DNnRNaGxHTDd5Tm52bVUybk5QY05LeXcvdXJSTUpsYjhqYzBZMGJiV1pzbG1UMVpnVTNjZmp3bE5rSG9NVU5lRDEyS3ZENU12OTM0bTlKQkpPb0ZtU2NFSTM2UjF4dWthOEtjci9BOVg3WHFkT1hQT0dmOHB5dDJ2RTQzSFg2NjQzeVRDS0tGQ3FwZGhQa2hNS1ViQlo4ZUpuRHU1eE50elhkT3BOZThUN08xNkNLZWtaeG0zOU5xTWlTaE1YYUpkZEtsR3BNWE00cTZNb1NIWXhkVHpScFZ1MUYveWNFRFhhYlAxRCtKZldQU3Btd2N6UnJONUs1ZlRTeFN3eWNkYy96dVhqWGs4K3hzbDh6T01OSytFZ1A1WFBpYUx1OXJwSHVyemV1dE1wN0hEODh5YzVKdWdsQStVOGQ4bkVKSHZSMmx4QTJYTHN4Wk1UN0NWckNNUXpISE9jTmp6a09KVXpIa2p3b1dISGFSUlk5Rkw5NzFPbHQrSTMxYzlTdHhnWTA3bHpibkxNQ1BjRUM2azRYYVc0alhzbUhVRjN2d0ZOMjlXZHRDdCt3ZmVGWHRiN05qRjBrcjRDVG5OZkRhSnVSNThlUzVFVWx1bzNPTnNVUk8xK216azlUTm9yVHJlalhDZjJiK21ZMjlvNXYrMjBSdkU1SFdmQTZkSUNsMEhxY002SFVsbUxnUFRwUkVMVmRmMUdDNmFBWnZ0TWRsTlc5QnpQMm03cDhWeE8yWVZ3VmtmSnQrMklsMVRLdFd0RVJhYUNVZlp6K0lOSGZPR2ZPc0pIWFY5U0lUSkUxbEZVZ1NCaVJMRVFQVzRaNjZnNkdEcUw3RWp2Y3R5QkRNcVlqN2loNGxhcGhvWnpPcXVWTWlpWWRBcjd0ZDArUWhrejJCejl3L2lmdHJ3T05VK0tSdk42bTVYWG8wK0N4dkk2NjdpL0w5OFg4M01DckM5M256ak9HNEE2RzJQMEVuN3pnZmxXaElnUUViVlNJVEpNRnZ5NzlNV2Rhb09PbFY4cWhpZCtZOWtieUhmbmgxM0NtdkN1ZmRNbisvY0pxZlZ5NVA3R0huZFZhUnd5SUFkSFY2MWxCSUVqUW9SZjVGWEdncytDeFovdGIrLzZKWkFvZnRyOUNpaVl3L241VVhsa1lmdmp6MHAyVFNyMTM5cEZQMno0dncxNG8rRStveFB0ek44bnlON3h3WWFUTWx1Rnp3bHlhUkpOdVlIazMzb3d4d3AxUU00YjhEUVlUaGNFWTIyQ3VzQlAzVFlHdzJIRzZ2R08vWTJ0STdtNXB4cTRTYkJJdnNOUWdGMDNsSDZGVnpaTzNOem1UZXdkQnFCM2E3NjRQck4rLzhKLzdYMDErM0V5cVEwRUw5QTJDaXRPTFhUenU5RytCWWVQTC9iUHZYUDFsYlJCR2RCcWxTelRhM1luaWZYMUMybzJ4cFkyR1ZNRVpzeWxjZDlsYzY4bk0vQy94eWNJTldadzY3bDJSeis3NGgySDU1Nnkrc2RVSnFCVmNxelc1RWxnYUhCbm9LbitQdGNvbkNVS2Z1cFp0a3oyVThjSjg5cjRuaFRNZzlRYXNmNzAxRGNYME51bk5xN2V6Sno5emFnRDE3YWkxOGhzTG9QNHFLc2wwVmZUSDNZLzZpNy8wSmlJVEdZUGh3eTh4bUpsdEFLWi9VOW0xbnVKZzhRK1phZzdyeHVhS2lLN3J4ajQ2enRIVXlkcm1qTVpxOG01anJZT1lmaGptemZ6UjNrV2ZLa1JZL21qNXJHRFFoeGlMbmdkUzRmN20ybzd4cVZqSXN0T3Y4bXhnZWE2bzViZWJscmUxVTA1L1ExNXh5UjI4SnN0YlJ1LzNlTm1yYlRscGdOVWR4ZWtZcXZNUUt6bEF3Y3UrM1pqVzljM2E0MUZIWDM1R2IrS3kvRXRVL2VOVHd2VldDRWliT202dVd2VHYwc0RIRW1XM2IvaDRrUDZmY0x5UFg3THFyMmUzVlR5RnVGLzdNNGdBTDMzSXlHNmQ4ZzJ6OENoa2R2T215dVVLOCtySC90cmdXTWpieTFscHY3UWZoamNMakN1ZGhNNFQ2czgzT3RwODlkNmlFLzlBNGFxWWI0MTVsemV2STdsMEhVOHY4N005TzlPeFUrdDZGckUxejl4OXdvNTd6OXhheUNSUENrY24rVnowWk5td2pGdnBVZkdYak91aXQvVysxS2g2dFVxNkU5Nnh6Rlc5YkRLWjdWYm5EUkIzV1laKzkrTDhOQVh0NGdPaS9aeWkxbVVwaVhOc0gxbTRnSE5iQk5wU0tRTnBPS08rVXZxajNGcVBadE9jVnFGLzJpNTRtdHdWU3hrbjUxbXA3YXFGcmlIN0tneGt0VGh0aHB4S2lkN05Ob0ZrOVo1ZTNFOVIrTXoyWDJJQzB1czltZ0FIQUZMdFY0aFk4Z1dmUlMzbngxb0dTMzJSdTBHdzBHMk8zWUNLNzNSSWwwUlZGaHMvZnJsL0ZCYVpmVDhiZERmdGg5YWRrVGMvcWFvTERqZldqZzkyei82VHVtTk1SbU81em4wVnh3SXR3bXgrOWNzTzBxVmFTS1dUbTBpU2ZxS2xhcmJpY2pGWkFpTzlWRVVsdWN0cElZVDMwejUzS2gwQ0dpMFFUT3FEUWUwZXZsclk2cjlRVVMvdlh3Z216aTlXRWljeGs0NXFFejh0R0l4bGpDRG5uUlhyVVRONlNRcVphdmJVeEdoS3F2NlR4NTVUL2g0UTJHRjJQdVhwMjFaaXlsUGtVYkxZalpyQnBNVkpQVVpzaXkrWHppakEyOXRVWFdHTzBNOXN1NXVXUStjMzIxR1cvaDB0a1hRSW1ZelRlZi9acFkyUzJhM0ZUM3dzVFZRaXdud1RLbldRNlZpZEhxVno2Zlc2bWcxcjlEckZrQlQzR3Z4OEZNa3plS0VqeVVweGc4YkM2YVFxVS83R0RJbW5xZmZQOUF6YjVQbVNtSjlaM1JyNFVXTmFrb2w4NWlGcDZ5V3Zyemx4OWFlVUVpd0FURUY5ZG9vYXRLR2d6cFRjSFRjeDR4cUl5SDlWN29MV2ZmdEowSkJlVEQwajBBRmJBZUNqSlpjNjBmMkxrZnBZQ2xJbzdGWHd1TDVLL2ltVWsxZ2hsQktRM21ITU5QSW56bWozWmZ4ZTR5aGw4UGRZZVF0cFJlWkgrY0hDMVBkVTNDcEVDZ1QyWnBoSmh3eFRLY3JhUEpIMTI5QTcza2M5MmUzWjdqVGlrWC82ZHV6bWREazV2TTNkcjN0dVd2Rmx3ODh1VnZjZVFBT0NCLzFsUG1jQWZlbDBFcjlWRTVEYXYwS2JZRDQ5RUFEOGpoeWdyQmFpd0JyL2MycytqTGYrUDlEeXU5VzJHNWk0SjYvbGtnWHhOdkVyYmZxeThXZWRCeS9xZDJidTU5N1Vhb1UvNU13MW9UUFN1TGRJWjhQOTR2engzMXczMnpndU0yT2hMd0s3VnkrNlpORmg4aGJaTWx0eSt5aGtmaXIyK0R4dWxpaUNmd3lLUFM0UWl3VjN6cDhuUDJ3WGVjcEp4Nk5Hclh6ZUhPYVNDYytldUlwblZicmowdS9MWUVpYmhmM2k2RnlidHZyQzlWbnJLZnkyMERWdDhqZGZhSTAvNklia3dQRG1XZzRXUTc0eS8ySnBkS2xUcXd2WjRhaG5WY3JCZTBrVlM5VjFlcjRSeXE3bHlyOGdFMThOR1U2Z2psOWFYQjQzdXg4NU9HOUZYMWhva1l5VC9MemtrK21yUGY1N2tCb1VHWkl4SUowNjB0aUVoNFc2dy9jdFBkQ2NCRWUvVFRjZEhJa3RmSG9vbjNMb0crZDNzN1A5QnFNL2w0N1hUMWk1WUtPbm9FL2xIQ2FWdkxscFlqVnBWL0dXRDBmRWMrZlFKcGwxRVdJWkwrYTJuN2dyRXF1UFVja2V2bXcrZFlCdWMyVEc0U2RUNDYvcnliNmJVZ2VTb2sxTVA5WStvV3ZuOTQ4WnI3eTY0SDJoWFUwdDB0QlQveC83L3Nyc2crRDZXdEcvWGpzMWtzN1dtNDFLL25HYTdXNHZadTNoVHU2Ty9mTmJyVzRzNXZmNkxpM0d3U1RRQUFBWXRqQ1hkekJHWjF3QjJ1WDN6N2hCanBPdUlsRHgrN2lER3FkUFZSUFl5cll4emNBNG13THB3VENIRmVxT0ZhcU9IWWlOM0VMcjkrTG5KRDRmZktFMk8rcFN2dzNaTXZ5UUIzSzB6SFVERStNbDFRNVBsRGxkZDhRQm5pdUJDMkhheXFLRlNxS3pTcUt1MjFiREo2M25iVHRCYWhwb1NERGwyT3JqZWhkR3FFVEtlaFlmbTQ2RmNBSElYUXJ0SGNTdVFZMlQreFFDdHhZRXFKb2llQkxVME5ZUW1sMmliM3k2eER0NjJEYkYrRG5zTFNBOXJVcnFiQ3pwRUt4UktCMERQRFBlQ1gyNk5SM09xajBqUU4ybWhHV2xxUlJweEVLam1IQnEwdnRuTVZZZ0RtenZEd2NMTkx1bkhzZ3RFcFhMTnFrdlE2R1Z4YmNrRHVNKzErVFJzeUV3OWM0aUcveEhiNVhQanhvdXg0ZURwL05QNDc1VzNPdkpYZDZwUURRNzVnTGdQb1hyQVc1c1JxdnhYTEhLM0pYNCtaU29TNWxsbWNiY1NBTFQxNkM3bHd5Tm9BdjhBK2dnTk9VWXBMZjNZc0RQbDFLUjFzMWo4aUQxNzJZKzVpcGlJQUJEOUNkazFPQW5KeXJ4cnV6UWs1b3NZZFE3YjRucW9QUEhjQlJ4Z1ZlM29qeE9ZRVBjVEljd09jRUJ2UHdKOURtOTZld3dUREFoNHBtdmU5YkpsU05seGFaUHpaU3c4K21OKy9PUm5OY2NUNm5qNnJKTVlBZUtjblhRRmN3SGJnSG1xaGdmalhyRlpkQUtMS1QwMGE3VEVhYTV2Ui9HU2JsaGdWcDhDWHRRWW56azN6cExzWmtGb0pTK29YeDE3a1RrQWsvLzV1Q1RBZGdqUWhwVnRIcTBNc3ErbkJIaGFNUDUvVEpucE5uZ3AvTmJRMGVDVTdJajhuZlVvVEpLL09LUWdkRHY0VEdRaGJGYTBvdWZPdjgyUGtOWVozeU9WVTljdGVDeUFVTEY2eGU4RWExVnZZUEN3OUY4K1UzTGRvYWI0MWZFSDkxY2U3aXN2Z244VU54YzJXRVg1VjR1U0duUVo4c0Y2M2tPY25ya2c4MHptdk1iaXhKVXRYdDFIMUxkaUVkeU9kTlpjZ255Q0hrUExKWSs4L054MUNoTHVhMHNIT3c2N0FIV3Raanp2cEFvWTUvMFhxOC9saURRN1NJbWJacjIrNXZPOUx3WXNPcHhqMkNIN2pVMU43Mkg3dDNwUGNzL1YvM0YrNWo3cW5tcDVvdnRkajBsY3ZtUGYvei9PVHh0dlpQK0pWdk9YdW9jM2RYVnpqUm1acTRXdlQ1eUpwK0VpOFJGOFVQaTk4Z0FjZ3R5RlZKck9SQktTbFZTOWRKWDVYK25nN0lIcEk5N0VucGVhcm50ZndQK1pVS2U0VlBzVmZ4VlBGVThVazVSNmxYTGxkZXFSeFd6VmRaVldPcUkycEc4bEUzeWhpdEgxMGREWTdCdDQ4M2ovY2Ruemd1R2U4bHNjWlVzMTV6dG1hWDVxUm1RT3VwdlVYN1NtZXRpK28yNmM3UjdkUU42RDdxMncwOFE3L2hUK01XNDA4bTNMVFJ0TiswMGZUVHZObjhPVG9UUFFjZFFJY3dCb1pnSG13UHRnRTdpVDIzWUJiV1VyRk1XKzdEM2ZFQmZEZmVqei9IZnhKQ2dpUFdFUWVKRXlTUVhGSkdvaVJOcHNnQmNqVjVJbm1BRWxKbnl1WlJFZlFwQ3Fxd0pRRG9neTNOb1VBZnlHeWl6MmcvYWRzYlc0cHNvZ29uQVRZUDE2a2hPSERpa3pOTXpSQXFkdXNMYzA2dmQ2bGMvT1BzcG8wMXl5WjkrcHhORURDL1RtT0NLMDQ3WW93MmpKMkFuMWt5TVF2eUZWU2hTQURRQjhYODNrVXp4Y1h5ODhWV0w0QWFISUJVWkdvNDBCLzlOdWorai85VVZPdTB2YmZsYU5YNGpJQWNZMkRJd2E4eDIxMHUwSlN3UDJxbVJqSDZFMG10UWhoNTZnQUZWSHp0SE9KSGROZHVPZjV2MWU4aVd2VmF4VmMyRmUwcURsUFhnbURMTXlGaldSMGNka0JMam5JcnRiQXBQcUhxblZjMzgrdlhlNzFtd1Roc1V6OXFBcElYMTRDSVF1WTBBYU5IdHVLRi96TFg4dGI0cSs5TkJmcnNuSWQxbW8rdkJPYkxKZE5acGdINzM5TjhISW5na0hYSUIxNktFOTJac00xT1oxZWMwNzVwVzdTNDRnU2NCaXVZTk1kUWJobzcrc21CRGxoamZzL2xDSnlMdWdUYnpPbEEzODdVQm9SeXg2YVRKR29YK0tIQXFzK25QVFV4ZCtCcjhtY1I2WmYvMFhZRTF5Ly9kaHc5eDJnOHAxQmU0anFuYUUvSmU4Nzd6bllJVWVsNUdSRlFvTHRPZGpFWHJrTEhtY1lnRXVpWVR5L3A1Q0FWT3hSNDJ6QlBQV3lIM1pwUmtlZ1JzVEtSWENyVncvcmZ2RUtxeThVMlV5M0k0VGo1ZjJ0WlNBSERnbVZ5alp0V2lZR0NDMjk2OURZWFVVcHhoZkVrNVNNM1N4MmpMS2RoRnlhRUtmSzBhdjdvU3BMcjB5dDJFSGdxS28wTnAwNk42bVRBTXMyTFJhQ1dNdFJNRytIbGY3M3p2NlA4YXMyVm5ZTmJHWmhMZXFmWGhuL095RFU2SVFZeC9iREd3WHVXM01kTTRFY09KRU1IeG5VNVBCUVB2WE1oUENuRGRWTldtUk5wNVNqRXpBQVdkRnV1RnRsbEpFUE1UTjJiSVZETFpFVGtldURtckhoMThrdUppZXprcEY5czFjYkMrQm5Ta3A3ekRvRXlQeG1CbU1vQnMvVCtVUk8xZEw3UmtLYUh4bE5Kc3NiaFZBUVRNRVBwcG92THladDg0bVFQS29LdWxMcGRWYlA5QWc5TTM5YlVqY0tES2ZBeHNNSitNd3Jvb3FLVkZ4VENiNHlpMkg5T1NqanJpbGNVME9aT3ZvS2ZEOXVMSjVraFdEVGZDUWlVMUY3Qy9jOEtOakFIQXJRbGJDSVlOY1p2N0F6WTZGSmlDWHRhM3dRekJZU0E1eVJRNGduL21HZTA0SUUyMEl1Y01pNVNUeXMzNU1OK3QxWGZjK3ZKOFgreS9oRC9XY3NyendYQ1NzY1k5S21ybk01V0hsWDZzcWFlRjQrZm5naVBCYzNSTnBoOHpmeDBYdGhuWGVhRGJHbHkxSXZGUVBOUmtpanRDUys1S0p3MmxKZHdVZlA1STR2NXZBSVZqWURrNkZLSkpHeGlSWm9UZ3Z5dWR4NEY4bzdhM1RXWm5Rc2Y4YSt3cFpSU2ExbGxwaTJHSUUrUnlWTGppQ25GaDI2Y2thcnBFbnZETForMFpiTTNZOFFZd05GZktBQ3psVGtsWXlGTTU2ZmIvMU53VG1pcDNzUEFISExuS2wrdzRyODBYWiswR29teGxuSHg4aWI3bmZiSEFZaHFUdDM0TFR1dTdaT3VPdkFPUU14S050R281NVgvNjdRQUpQVGdsSVZKb0J3cTAvNWhWOXdocTF5U0hIK05kU0wrUjVaUjNnUk9wRVFqWFNOMjhSNHVHaVFPenlUVVJpRWdXVkJYWWQwWVNoSXNaQ1FoMUJTc2t5NFBZT2YrbW9ianJobjIycVFqRk5neGhJdEZuZmdIRGliaEwzTDRndXhlcjJuTzJobmpCQ3BZdnREZG5VZTNqc0lVVjhiV3JRMFRlaXBybTNCVk15akFmdlhjVzA5ZURKT2tyemFCZnhPRHdpSXZTTmxzbXNDblprTEtJdWJRYWNlaU93TTJFc3NobUJteXJWV2ZOR0VGc1dHMkpNQnZMRGd1dmh5eWgxbWkrNHlETDlLN3NLYlRBWWhNTlJYWGhYQ0E0bnZ0VUwyT0RmNjNBNVBPM25palBuajBsdHh0MzVxKzZzT25abVlnQXlackg0VjUwTEo5MEtQYXQyb0NqRGxOYTVwQzBDM25Zd1k4aCt6cGROWTY5R0FXQ20ydEFJbUtYQTEveGJKZjRITXdndmxtci9jYWhqK3FNdDR5MDN0bWR2YlpGZEJuT0N6WG1EK2g3Ry9tSUN5aC9KV3hTSE1TN3RyNy9hV3cxN3JjQjRjLzgrSWVIaHNqNWtBdE5RSFRLQUgzcVE3YlFpa29wTFdNUlRVRmlJTStoUzRzdThSQ3pDeUpXa0luOE1BeFRnbUI3Y2Q2Um9YekZpeE1KR2V6dGRBcm9qNllCdXlJZkhkQzdNcno2SENzR1IreHBHM3YyaDJqVFVibGdLYzduMWRreCtiYWpwU3RRUXFoTW44VHpKNTk3Wk1ZdFdZOTFLQStLalk1QnpiVDczZnNZSzV5U3pic3grMEtYN2twMi9IbnlkYWY0ajlrQmVWdjRVcnJsbEhBTDF6QnZDemJTQm85SDVzY280aGRGOVBCWUJSNTlsVzNoeVZFK0czdktrb2FBb2loVFN2RWNwNFNoblMzNmpkMWdUN2kxb1l3TW15aTBKdkU3b0tBamNaYkNvOWFNNDUvSFFNSytaOGdQUk5UQUo3KysvK2FYUzFlNjMvbE4rRyt4bjlRb1BKY3JkSmxtSFEzakZaMWRnRnJGNWhJdnRMYStSRFpwVVowRTc5azltandtQVg5akI4bmh5TWFSSEZndWlZR21jMEw3NWhlZWoycWRWU2tsSHJwWkpZZ2ZKeEl0ekZIN0wyeldIdUdqdVFyN2NEK09pL0d4b3FCN25HNEVPUzNVSE84aTJOUmpnWFlOZjNtTm1DNStlYnNzVTl0TlI4M1lGVTkyV2UzSVVRcFJva1N4UEMwbkpWekZ6NnRPcC9sWkNJVmRnWldhZ29Gc05kcW9sWTRnbEFQWVBienhJSzMwMGZNVDFPcVM2KzN2QzNycHFBbGE5clVHSXIrYXozQXhteVJ1ajNUQWhsVmJ0anZCMXAreks5ZHRWcXBZMzE5SHNqaFJQVEFKZThSQlpWWTdKcGdXdytka3pBMEpFbUFLeHF2Vi9vQkZmN2svcEU1UHdZblkzT3c4dVRreUt1bTVzbDJmVk55Y3NlZ3JaNDVlWmtwY3FmQzNSbUtxRHQwclZFZnlDbk9HandWRzVKZmNhS2FYVjJKYW1VUzRxc1hxM0dJS0tEWHU1N2NpcFZHZWhKUmxQQjdkQjVWS2xRMXoxemtGOXcvMWk2a09ucTYwbVRlRFp4QjR5dmxCOTkrTFFWSjlDRlh1MGEyNlhmb0NBcGpDQUtlVWpQM1kxYmdCaXBYeXJMRWNtbzV1VzRNc2ppOGNBUWpSWVpYQlBnNmxyT2tPbWk0NEZtYVRFV0FjckN5cE94TXgzSEkvVVFnRmx3dmpMVTBWTkQ4NjE1ajBGZ0pVUnpmZHd5Tm04OVFScWh6VDkyZ3pvMkRKbVlOTnBlWHBPdWQrcFhEZnhmSzl2UjIwSmIxcThhWEQrNE9CMDNxaXNVd2Uzbmpsc2J3Y21NdjJrZDhDRXJSSmNGV1dOYXZEbjYzT3pjUXRwc00rVDMxbW1MM0Fka0dZcDFuL01lbDc0TFhXZzdBVzRBNGVOWFhtM0I2QlRDWEFtSklyMjdJN3JhTllxUVJqRWpnM1gzZDRNa3RaVUdLTGtGOWR3KzBCekNMREhhZFllK2dZYXU0dFhDV1BYQ2pHUUlNVXlnV2JiZHJtdGJFZXAvSnkxOWhWVy9QWWRkRnBkYlFoN3NxUDI0ckt0bnk0OCt5RHNkL3dTTGxCY0JZY0d4SVZPT0RzbEIzd0FNWlp5UjYrOWhFOHlxN2F4Q214RlYvVFR5L0Jub2Y3YTh4NzU3U1RoaUNvWm1RbGJFZFFtcXZhNDIxTFNkZXlsa2VpT0ltWnh5RmlTaDZuUEZBOWI4UC9hWVJjYjJWbkh2cmJ1TWJaOEtQZlZxODluWm81dGlrM0xTbFllSlhmWWpxeTArRERia2c1QlBGQmVKS2RXMzRYYmhqM0xudTNnTEV6cXRJY25WOWZ4WkwzZ01vL0ZITWFiNS95K3NaaERYKzBNcXhWeVp2cEdHeFAvZjI5d202bGlHTzA1amxzbHA2R3Z5WDlweEdia0MydEQ4MEFjM0VMOUZjZEcwYmZndmRXUWNpVFJrMTFEUUlsOEZNY0Y2MTRCeUVoZVh6eDM2SXUrZzUvWXRyb0FOTkxvMjVXV3liVDRQL0dqb3lEWGZ1L1hrWFpDejNyeXZnaGJxVnU3L2xkdHIyb3JTY2ZRVUlhZDMvZ244LzZBMk93UzBSdm1EU1l2Z2ZRam80V09INDdnTzV6MkszOFhQaE91cmV2UG5yYi9welA1aUdNaW8vTXpWZlg2WDFuZUJhNVdSUkRCc0RRNU0wamZwOEdFdWxqazJDTExHMDZmZVVuL2pSejJmWGxxb3FpUGJLbENIc0VsMEdCRVBGR1lkN2p0Q2xRcDhlQXNvSXFUa05lc0g1V3B1UGdBTndVQWMrVXk3OTVQaVJLWU5UOWRTbkZweUpWZVJ1Wm1BUzBjcUhkUjlhOHROTTc5Z0JHTEpPSVVwUTFhckE2KzA2SHBiZ0pwM1JxcXNGQzhkcWZPQ2NvQnVxOTlJd2w4cktRa1BUNW9FKzFQckE5eG9uTUMwbU9lS04yeHNaai90a0pCWTNFdkhIVFVUMGNSb0VlSnB3U1lEYmhMY1dnSU53bmNFVmRGWlIxWFJNNDRZd1M5NnBQanZRcVd6ZUJta2NLV1Frc3BaZFc1SEZzZy9YbGhmVElHQU9TQk9JTU1ncW80WVkxK0dlSXh4U012THJEZVpQbTNKcmVwWmFYV3FOK3YwK2U4RXQxdXAwVkl1dkJvZXl6VGMvdDJQSGt0ZkhhMFhIc1hMMzZxMHJxb1lNeExWWkNyck83WTZ2S1J5WkpLc1JqY25oWEk3ZDZ1ZEpZdUc0bVhPY2JreHJGL1JoUnFsMTZYMG1kRHlkb1pSek5DeGtsdGRsR2g2U0pVNTZxeE1JWWhaMHlIWER5bjhLWS8reXpvbDhhVU5zelJKK3VvbmVJU3Z6V0lBOUVVV0xGb3hmM2t4Yitac1ptRUFDbG8rWWtjUnlZWFFIQTVKa2lrVmcxcHFTVVJqcVQ3Zjl1K0EwVzErK2k0SFpjRW1sZDZZV2dwd29yMW9GeEE5RkFSUHFWVGVjZTZUSUNCQlFFNHpDcEFWcElvZytmdzN3Z2ROeGh1WEVZZGZyUmZsUnVqczV5ZFIzdXo4L09UUEtUSDhvckNqU2RBcEJ4UkdEZTQ1QVVuL1FWMG42NUdzQ0lPWmpRYVFuQ0tJTUhuRGFiQzRJclZvNDI0cGhwcTU0UzNiaXRWYytZcXFkTnYzNHozK0dGWnh5TUxlNzZ5MHFtd256bmlQSkV3NVZvZnZDMjFKakIxZkFEY3B2U0EvSWtFUU1UNlg3c1Rsb2Q3UU1RcW5rN0JlUW5TczZYbWVQSGpyd3RoZkFLZ3RXcXB5cXdHOGJnb3pGRW9SZG5VUTFlT2c0V2ttSE5sMGFDUlZ0OVBaK3YzSWt2dWFYeHhFUEpFd21sQlRkYjNUY3VVdVRqaHdYM3h0bVI5RVY1cUVORnZES1o4ZmNid1dIckRTQzFzV001WmhpWWl5MFRVL2tjQ3IzbC9YNmFidTBhVDZxWmdHaURuZlE3N3JNdTNSNklTdXdCL2FwYkkwMDdGVm5Ja3FrWGtpb0JlUE42ZkdMc1l6SU5pek1KbnpTWTVkdkxxcll2RjQ1NHpSS3BEUmdtTlV1TWc2YVJQQ2lrSnM3Q1pvTXFVNjJKc01ESUR5TlNhZEtWNG84di9aejUzbTYzRHF3bXVua2xQRXM2RnVoY1NETnhHSVJESHM5djlFQ1FoTXlCTzlxbzZsalJHU1hMR09tZmdvTGlibi9YVWFDTldaZ1VreHlCSW5iSHBtTysxQ0VuYzhEUlNpNmJHYVJBbU16WG1tcmpPSE1LdlFwdGtzQ0pKVm1zVmpnRVZUcXNOMUN4REx3SncvOWlGWmdnNHhXNXlaR1ZqWUsvUHJCRFhUN0ZMOHBBeU5MUFNkUmwxVUk1RGZYLy8vZ0Y4S2c1Ym43NHdLQSsrRWhxbGJORVhpbkhFbjhwM1V1ckk1U0JObW5HRWs3MUtja1JTSU9SNUFrcEEzRHFNaUlaMHl2UTd0SmNPbVN6NlB3VlozdFRFTWVvcGhXNlJDU2VaRzBpZ1NabHE2Qndrd2ttWHdzenlueExLQjNXb0dja3huTHo4WlRxTTJ5MFEvc0RLdHJCMUh4SDVyMEc0MzE2QzBZOGtPR1FOQTFOMzVnK1B5OHMzRHN4elYwL1lRQTJ5OGNWWVBkS3djaG1neVQ4QjhkMm1DVEF6M2dLSXpIeEFLbWhlWkVRVlJzSGZHWkpPaW85a0tiTnBmS1o5b1AreTdvbG4zREZyZTU3OHZhUkFBMlZkdlBYY1dkVmZaSzMzK21jQXd6dXY2Tk4weDZmYWRqMjRhaTZ2cXBBY3pHVzNvdmo5QmltbVo1QVE1QVA1UldVdDI0M1hqN3EydmowV2dpMjE4d2JjNzlCRzVVR21ULytwLzRaQVFJWWpMYU94dGVIdkVDMi9JSUlBdTVmVjAyNXNzWmE5Vk1GdkNvMUxYUVlLWEdGSndPV3poQ0t0RWlCTm5UODVyTjZaUHk1dEx1OWV1U0lCZjV1elh3NGt1NTFyM1ZjK3JXZ2tlMXlLYm83M1VBelI3WFRjUjhvWUVWdGpZSFZtcXk0T1Zpa2lQWnVJdVJZTnkrU09WOFN1akRUa3FKU1VLU2JuSk1MR2gycTdBN0dybkpTMXFoVDVwQmlWSDV2SWJmeEFXNVVwdEIwd1lYellWR0dlNVVRK2s5V2J0TG5yRHBBTXdqV3ZGZW4xZGZkY1BjeURVV2pkWjc0ZmRCWXBpY2Z2dWE3VjZ0R2kzVHhzMnhubERCc1liZVBWQzBuVFFvMFVIUHdEUXdPMm40ZlNCV1dRenF5b3YzTGw1WFgwRkpYUDhORzZvOXRxSktYK2lKY1cvL2ZLUlZVb1pNK0pxb1ltWTVIcmRFMDBDaFNNV1lOK0FDS0NZaFRzTEFOaXk1VXVldHRHUk1McThqV3RaeC9XSkY5cUlYbCtPTGo3NWtvY2FMaXVXWnF1UFZXK2lCSTAvb2ZXSVBteTJsMC9UVzFFZUwyc2lrNXpmV0RWMjFabVpidDczeDM2Nk5aOHZEeThjbVpiZDZ3WEo5MTVXdm1WMjFLdDNwakNTMG9DTHIxZ2FPalBsLzRLTitxUVFWN1owa0x2Mnh4aWZjNlMyZ3FLUDlyd012Q3ZTYm1zd1grdnFLZGJackVjQjVLQVRjWUJMMk51bTFhVnVyOFZHcTlHU1FybExTTkx6QlNHYjM2aWdJV2JCVXdiaFZwQjJiUkxoQjRMNmpIR0k4OHAxSHVkUXlLMVNrTzFnTlcyU3NXeW5rY2JITm8xVmRSL0J5OXdZZEdNOGUxQUtjZUxHSUV2YTFsOExpQXNscUdMMStDa1Y3cDlkMnh5bTZ0blRuV1ZHajJnZ1llVGx0d0tnaG5CeTNNNktMKzJpRW44OFB1MkRYdWJXOHI0ZGJSWGZ1Y0Y1am51WGdGVnFkNzRyTDBRVGpvdVl5MGNITUwwRXpYSm02WS9nMkRFc0FUb1ByTGF5ZCtKNWJtVlVqZ2VtRWw1aEpjcHo5SzRVWFdiQjB4U1dMK0M0Y1BRVnVxUWNQOU5YbitqSXI2SCtUSWZmUW9YRXVUMHVkWUY4OCtxVE5RVW9Rb1hWRlR5Y1d0US9DcEdMVHRpczV2dWF0aXA0WitGTWgreVc0V2JKcEJqZTA1RDc0Nm5qTkR2ZDVMQmxZeldzVGh1R013d0RIalFqNXJhV2Rib09FUXEvTi9KSTExbnhINnhXNWVQbk12SEVpVHdmQmtUVzN0ZCt6VkU0bVNUUHBvQ21Db2p3V3haREpveE8ybW5GSnFKOFgvK0hQWmk1WFZGWVc0NTNRWUFQODc5eVk2T3RhaXdBVVFPSUV6cFJ6Zm1MczhLVGVvVHoraVc4OWpaZjdOL2t4NmlIdEJ4Zi9lSGxhYk44TzZNcUJxaENXblEvQnF5N0wyVFR2UytqNHZ1b1A1WElyTWtyT2RRQkhwYUdGQnVlYk1CMUI0Y2NjeHMyb2xsUEwwU1VsdHdiZ1lZQnkvODFyMTQ1VkY1alVEN25RV1hDdXl6QUhkU3JmV3Z1Ly80RzFiZk15bEpyU2s1VHZMK01SNXJraXZIQ1VvRWxCY1lyWHpuQ0FETlVRbGJ4amFKazA5SWY2NWZybC9aQ3VrZHZyWXloTzlNSHhLREQ5UHc1VFVDcHZ5b2FoaWhMZVVaYXpheUhmV2tzZzN6K0hPSzkzQmZGSjBuVzNlY05LRVp0cFhjZkNES0lWNVc5TURoU2tIV0JpY0hNNVNhSlBqNitGalBUaUl3eWxrckVtWkJGSytsZG5qbzNuU1ZwMnNlQm9DcFpaY0xnSC9wR3N1WlBUbVZrZndxMzRyZG9oeWNhY2VuZ1FFWXlNc3Ryc0ZKSVlCYTBDS2pmRzdVTk9rOGFSY3RNNk00a0xSNlpGVmdHVm1KdDFvVlNZMlBFWWJWaHVsWmNyMmJBRUhDWHBOR2lTaUNWMDlHVzN2M1Nnc3FLc1N1M05uTUN1WXl0Y1Z3SXZYUk53bWJGem1yMkhtRnF2ZDlrUXljSXM2UEVYU3ZJbk11aFJUeDRVcUxQbmZ1RDJsUXhNdnRibnAzMGFmTU5VN0hLa0QvYTlKMXRzUnZwRFBzTFY2ZzlzRW14WVpYU0pUbFFVbFUyaU5ZQWVFLzJCaXp1OGNCUFFOOW5OMDNjK2Z5WTMzdzVvS3dOUXJGb1hteFVUQlVvZWs4UWVNWHZiUG5sU3IxZjNoT21JVGFyb1ZIdFhRb1ZXRXhvdXpJRHRKSWdpREQxSUs5YUhoM1pyS210LzcyaHc4bjRzY3QxS2tGbTBNdThTOHRwWklrbU1heTBGYURVUjRGeE1jb1NNRzQ5WTRwNk1aQ3ltQ0N4NWhHeHNuL1QyVEJzTDFnVnFvYnRkbW83T0lVODZLN1p2L2JEL1NtanBkV3REUTJNeGdGWG1CR2lNN1ZMeDBmTEF5THVhZWx1T25RTUlWR1VMZlZ2ZDZLMmpLUXg1aWxXem9UZU44WCsreVVtZWVwYUdhUjVhWHJnTGhwUjQzZHFkNHhXOVkwTDZYbnp4cWQrZ3g4NnRhU0x1YXJIdG5NTGFwckJONjByQW9CNHRWZW1TalY0RFA1clRORCtiUUVPMlpYN2QyaFh2aGdhZlpMSS92dWowMHpBSVdVTGQya2hlYlg0YVBPbjJuQVpReXZSZzJmU0JGdXd2L2Rvandxd0pDSnB6TGZUMUF5Ty9scjl2bXVVYXNzS0RNTFBjdC9sOTBCV3ZwdC9aQU0ycFZIRWxEODZQc3NobVYyRnVUUmc0RlpNY2NWZ1RSV0RNeHNweDg1dCtsVzRUd3VWTWkzOEs4Q2hZK3o2NUZ2Z0R3aVY0OTMyak1lR1BvWVp6NXZQQ3d6ei9rL2hFM3h5NEQvVFkvVDk3elBjeG91Q3hYMnJkUDFzTCs4dHVTK0lGcENubW1xMVdVQ3VLMW5ERUtYWlhJMGphQytYZVZGeVVLVlg2S2V3UXBxS0pwVXdlcFlZSUF0dFhSdUpWQ05zQ3VFSytZMkNyemtoTmZzL01BVlo2MFpCMnhrcnJsYTBQd1FMVWVvUFR5a3hQTVRBSm5kaG1WL0dUbTFoWWpGNUNjZENDN1FPTklWcWJGUkZMd3I4bXYyNllSUjdlRlRleXFpUFNyaS9jQ2YrY3JkUkFqeUVwTFc0ZmlhYWhtUlp5UzlublVQM0trcG1oUTJFUGlRRHBTd2srNmJlbUNRZm9VTmxVYmxaNEJNZTg0YmFzNUMybSt2ZTV0RlRBV0xOUkJ6SFpXS0FWSWlkYmVINWxTU1lQN1dMT2VCdS91dDlWR1lYRnFQU1hoaUtxYXA2QTYwVGZCMjI4VVhGNHdEV2JPVmlZVnZtUTZObm1oazFJeTl4eS9RZWJxNmFKL24wNFRmVHFwZW5WT1hNVVl5OW9NVFM0ZXZzMjIwbG1qMzdFUmhiWjU0QXhGREMzYUVHVHlocGxwamhHRnRubndLRmc0M05Bd0s4ZWtrTjBwK2dZcGtzMzE1aEJmQVBRalVvRG1UQjQvbkVMeEZIWmsybnFvRFdBcnVaaVRIQlduRTlTVnpxdy90Tzcya2JoTUhTc3BLSDNoOTkzZjl6M0lkWmtIZDFJWmJhY2czTGg1WGZ1Wmpoc2s5Q2lVZmc4cTlVTlNSQkRzR0xXUGtPaERmbDFTWXpXUk1VNHUyaXorWjFnSWJ5MVRsdDBYdTdISzgxeFluaFhjZW80YUU1NWF2bEovRld1dXZOSmtSUkpwZldraE9MQUpxM29nTlRCdTFrWmpUUnpyWktST0FhRTRydy94ckozeWpKcmlJSFd2QmJvWFJ3djlsRDNyRTNUUnVka0dNRXdicUpyYkhFYlgyZDhnNFlpZWgwMjJoeUxubCtET3AzNnZBZldHZzNWdnZqb3BwMzd2dWxqTUpGRGpBa1BvcEYvbXJ4VFJWZ1pNRHZGbHJyYzJXdVQ4ejMxMkZNMjAvT1FKTG4vVmVpazdFWUZUdTZLZnVqVTRmVzNWYU4zeFdjL1FzVjhmV094WWFpT0kzdGhVM2I5TG1rZlZjcmJNQ0pKTlRpNWZmYk55TzdXMEp5ZXF6enNhdFZrYlZNNHRKUk9jOXk5UVk5dDE4RXROdXU3M05KTXZGYmtvRnlMclM2NEgxeTdDN1pvVUJuTEhpV2cwd2F0MWloMzlDZXdNbXNHVnF0b1ZqMnNQREQ3SVA0SVlIdEptM29wc3hiaThLZEdtNXgxWjZSMXByc051U2llbWtub0xMR05IWjBpcnNTNTF3S1ZVSmtnOHFoWHlDY2NkeUZXYngzeVRRUVZzVjlZek1ocytGWiswZldCQnZvVWptS1BVS0ZYeWk0cE5YczEydWxvSUtsb2h1TTE5OWxsalg5cUQrZnVjS3VIdmVFVHFIN2tmVS9ybDVjVnJNWUYxcnZMcS83R0U2QjFCL3FidTQrdlFibkZYdk9pSjkza1J0dHN2WG1ycTlRNk81TE45VFpiYXpWU2EyMXEzZWZzZHJIaElKZGN1ZnNkeXFoNFFGRGllNE5aZ3JPVXJ4K2dubzRieGE5MGF2NmlCMTZ1bDE1aG9tQmw3QUNvVzlrYU5XSWx2YUhYV1BKWEhIbzdVT2M0bCtuMk5mU0ZIOVRubkxOU2QxeTkxWDVuLzE3MGtsMDZ1NjNWRXZwdlRmcHBycnZ4UjIyZW1BZjViL1pHRmdXeWRoRjU2alR6Mm0vWnN2eE52WlBpbDg2dG1hczNvQ3BMRE5KYTN6YzdWbzJLam04SzcvNndyZnlQSXZTQXAzMTVRdUxiTDcrYnRabVpROVo2M09WTFZPVjRMTVYwZmx0SXF4WWp2TnorQ1BELytQTG5IejloR0pOUTljY2VGdmlyeFBrUjVHd0lWVk4yR2JKcTJEWnY4bW5YSTVFbXZBUlRBRVlCdzNJeDJmTkFISVlnR0ZVdDZLMml5cTFwc3ZLVWY5TFpWME9QRG5EcVRWUWFTbXJHbENxUC82U2diaHh5aWF0T2JuVitvbmxqT3llb3Brbk4rWmxWSTNLcnl3a2lpRkppWmlpTUN3OFNncFJwU01IdWNsUXEyMXdzMG9GU29zeEF5R0xXVFFwOEhBcmwyNk1BV1RjV2VrRkNybUV0UmZDWXRqUEJTWlcrYzdRZWtLVFlRSkFzTDIvT2FCbVpaeW5pK2dFS2JwQXpOMnZYendKS3ltYTlBRUcwTnlHRXg1L1IwakpCS09tempva0pSN3pHNlhRY0pQK0FXMU5veHUrM0M1c2hneUZVRXBxN0FMb3hDTHBFd1pRaGxqdW9MQ1o2WjNYb0xGTmhYVG5kVWxRQlVoVTFSbEtVYk5zdXB5a2lCbUlHeXV1blNmTDB1V2JWY0x5cGRyYzdNUU54cWV0dVA3VTlFNFczZDNQM3RmZGZTODIzQmVhcUFFYXJ0blU2MUh6eHlMeXV5RkRlZ01yYnVBUzZreU1ZYnhUMmY4M3NJVWtRcExTaFo1RXh0V1ZFMkd3NUFZT1FVWnd2SXVSOGtCOFUzY21ocXBmUGJZWDA1SnV0N2pIM29tMk1waURTbFZVMGJBa1VmZlY3RWxvdzR0WTF3ZTdWMlBTbmlwOFBWN2ZiWXdoQk4wNG05R2tZVXpsekFpZkFnNkdqNmxOOXNsZUlwYXpIVUxTSGx2eUJPT3ZXS2psRFlRSXU3b25mRWQvNm96Q3RQQXVZVUtYU2xSTkpFV3VROFpBUXNWZzdDMGxCNUlnSWJIbGZwVG9mZTdPSEJiUFdwaktQZUFjSk1kcWJROHJJV0Q3ZUUyOHRyWjRhS2VXTDhDc3VpRitkMmNIR2VPaTRKL295VUJ4UXljZlpTeHRTamwzSDdYbE9oemZ4VkFiRENzUEtmZUo2RmgrVGh1Vi9zYTcrUklMbWljL3E4eUR6aHdlV0R3L3MrSnBwZ1BBSmE0OE9Ja3l0Z3pDM3ZtNWI4RzhnR3pzWWNpaTZnemtsZ3BUWDY3K2ZmbndVUkpwN1RUUHpXTy9CL0RGdzg5RnZCRU0xSm5ld1pXdzA1NDh2MU9nQmtTRlRvcWxCVHJiZDNIT0xVaE1uMkYyVnMrd1NGdUNoNXRQTHhLVm9JWmFmeTVqV1NBcUVWQXlHUVFpcE5pR3BhblRjTVZDRW9iMlp3MldZREF1cW9iWW4zY1Y4UDVGR2NXcjFiZFkzbi9IMmoreVFEOElxb0VQWExTSjMrQ28vN1ZwWHNzdzJHOTZCSlpDS0J1amtvTEtONlQ0Wk12WEw3bUVhUVhxTlNWTnN3T2k0d1V4MXdWNE9xWFJVVzFUdkt2SkN3YUs3aFJkb3JMRk1uY2VnSTlzYXJxRE5mcnE5eWpUcUtkSi9OdjBjaVV5UnFsTnBndko4dkRmU2drYVlDdXV5RGF2NlZJMWtTSW8zUk04MHp4ZTRhTm1WRVZtVVFOMlROZ2s4WG1jdVRqYnZXa3c1UUJBL1c4bXJwNWpMVHJGVnlXM3dqZm5sQ0FFdWlmQTlzeGEyMzJ2YUtMbnkvVkJ2WmdXby9YZWV0UUwxZ01Qd1gycWtYdWhSd1hRaVBoUEJDTVNtYzV3cTFrdHpMSWpia0szbGxIVUNXYW04N1RhRWkrV29qcVA1V2puWkhkRlkyS1ZrM0NxVTEvTkExTHpLcStnRUp2RGFXTVl0enVpcWVHMmM3bVZqZzVBa1Y4NW0rM0dGZ2FiRUFnU1J0WTI1N2xWUjFFODlCSTNaN1Fzb21CSFM4Q2htV05aUXJMZFFTVXJ1RHE5RHcxU1ZlOVVtVWRJbFQvM0tRMVhEdHdja0FNM1lZaEhGcktyQXc4QVlNRU5oMmtaVGNNWmczQVc4UUNNTXlTRUZpZFl2NVBFTmM1bXdlbTlxTlExVHF5SGZzdE9HcjloczR1dWpaN0N2YkYvaGl6bWNXL1EzOEJoZmxKUVRwRlFvY3VVR2F6dVBiR3pCY3R0Wk45VHpOZVdMRWtKRlNpb1RGVGg2R21FUkJEd1BzREJoMyt1SW1TV2FMbzdQWnIvWkw0aFNqVWpZSTRwa0dKZHJubUR0aXNPcGtyaXBwdG1TRlJPcUVJNDdkZDN1b1RFb1QwSCtXUi9mSGM1UDc4NDh1TUZhbEUxZk1BaXFNQ1VhaVIwa09LSU1YdkRNekxnRjI4VjFNVjBGZDBGRUtUZk9Zd255c0NYS0tTTTNEZDdhVTRHT1JFdlN2ZzN2eHd3eWR3R1lSY3loMXhWaTdhL2RTejFMbFpIUktGZUQ3dkFWUDkzMWRVdG8zQ3FaeGpHTXdPUThPVmM0UEVxT2M5S2JhRkpwUklBeStiMWZVcnUybm9QeWhRZGxhYlhBVEgrdURUbU95bTN2TjlQUmxHRld5RmZIZVBzc1RBc0xEeHVINXV4TERZbldGazRzYkQrWnJlUUlkQ2tUOUdQMm1hTHRHTitudUU2em1NL0trTHNlTWpqZ2pncHYrSVpWdzZQYU05STZnVnQwRy9USXdQR0xUdnBuQ3hwMHd4c21DL21vcDg2djRFN2lPSHpndjYwSTQvOVRLTFIrNk1jVEFXVFE3aXNreDc5NzZndXlsbVVmTXk5WDUrS1k4MHZON1RZcGR6b0xaN2svT25MWDZiTXg3SWNyeUd3bDMwWGFjT1VUVG4wYkhIUXB6Tkl5VHhDTW9zdVFkS2o2RnI3SmZ4K3ZSZGN1bmdrRjBqN0o2Q2ZYeUpIZXdzOWFSLzVCRDFGSzlLeXlLM0RaWWVGM1VmdWYvbWRIMy9YL0tjMlA3YTNmUVN3eWtBTUVkc01oWmFtU09KV1Iwci9WMUZpTThpYmtCQ0pqTUhveWc5d0pLS1IzbTMxODdld1p5eWhMNWdac2tvNGpDYWQyc2luZVVMMGlyUllCM215a3E2TEFhdmhLM3lXRnpGbUhGMXhJd0FKelMrUDNMNWl1T3NtME1oZTA4VzFvTVB4dmF4NTUzYnZHbTdjSzhDL3dINnJibEdMb3hveVlicUE0aWVKWnBSRXM1a1VoWWxkb2xFNm9nVXVIWEZ3Sjk1ckNJN1lJRXlkS1hHVUZOM2NXRWVVNGdwOHhzWjh5d1BtRDU0R1IrV0o2NUk0RDQ3UWFyamNhdXVIbWtVMkIxL2JVb0NNaFFJMWNKVEk5NE9sMTNBVWN2bHlsbjdNSUw2c2hDYTg4UWVKZ0QrelJyVmRHU3NpakxVdnlaRzVHNmFTV3VCcWNmVHpkclM0ZUNrN0RpUkp6OW1CUklXVjl1bzJrVXVGTzJHMHJCUEhLTVl0b2FCOTgyRmVMamtXQTFiQ1Z6VWxrN3V5WkVnZTJpcGUrMEVnRVIrUTNONU9WZTJEOEVLdmN6RjZYcm1WZTFkTFZNN0pqVnl6cjB6Q0hJSDJJOWIwQlFrT3RmSXhwdUJwdWJNek5yeTB5ZUREVndobWVRRSttb1N3eFc2dkZ6Y2xNZVpRUHk4YUhCZVJ1N3dpb01XMFZxaExDeElueXZiS2hxYWZHSEZJQ2pkV3ovRTJoR01ZbUozSCtPTnRRRksyN21RcjlndVBYSmI3bnl4TVBVeHRGMWIzMjNuUmIycXZORGxOU2ZSME5DNkpMK3F2QlFlZzNlTzF2Z05CcGF1Vmo5YWFKLzBQZjBZdHpLTEVlc3l2OFNMdHErZWl3SnV0YitDMDdoOU5hMVB5dlgzWk1zc1NqVXpLdE9CWG9ZSyt0UWx2N1pjQnBHYmVDUHRmaWVlY3FMNGhjZUkwbHpaTm9ZMi9TTUROV3U3M3JCM3F6QjFhZUpZRnFrQ2gxT3NjUnhmYzdXNjMzNjVmU3RNSGZ3YjhHYWVWVmIweHZ4S2N1RTZBb1cyV0tSS0FmcW1BbE1EdTcwMnMzeW53bWpSZzdzMzdmWXNaNVErdU5xNWRXQktSZXI4ZllBMG5veUE1MXcreDEyTG1aVnl2aWpGM2NHSU1ieElSYk94cTFianNSRXZIUmt2UEpBNitvNFVXV2d1VERyUnRIUFdkWjNkVkl1TlJxZzRtUFBGSngrWG9xUDY4NUZmQTUwRExyK2Q5dnVmWGNjWEg1MU5vRVdsRjZyUFg3UTBOYWR4UW1vNFRBZTJqMG5RU2g0V1krVm90YTFwM1pXalY3czZqSG51MzNmUW5INU5GKzkybCs2ZWpMdHM1eW9tZy9VMnh1UExWUmlpV2FyNGduKzEvYkR4K0N0NDlDQnpwS0tnWTd6MFBSV1oxaDNxVnlpTlM0UTJkeVk5L3o1eXNLd0Ntb281TFEvSkZaODRoQXZ0S2Vnd1JaOHlYeTdTcy9SZ2RjRjJEL0c2U2k5ZDlVakdqS3hja2xWRUxHb2Fib2JEUU1tbDdPdFRWK25zbExxYjkzOW4rVkpzUUZ3S0tSV2JLSWpIREsyMGFHd3VCc1VUQy9HNlU2czhQREJRZU5XS0RPVUxlY1ZiZjJJc0JyMEtKUEEwVEtJaDZlc2FqWjVXTWdDYVJxUS9aUWxSc0tGeENSSVFnUTVLQ2lTUytPZzFHZG1oY3FFTU1KT1luUjErblkxYnVUV2lZbys4ZWR5Wk93aTFXYmRZSjdsU1RmODNoWlVCYUNqZVpwblhiTnVyZ0pOSVpRSmNJT3BSclYvRGhHazhvbnBFM0xOMUJOS1pYR1p1RlVoVGxMTWtRU0toVGdCamtkb2NmSytBQURNOGhGOHdkWkt3US9ZOEJxajhGcXdaZ2dqTWo5VTJIclpMQkIxNG1iRDFybDRqaEtnVmhpdzRvRm9PUmdaOG5qMHhlWHJOYjBKWmYzNDI5eDJBdFZ1ZytJdnh1UmdHTnFyZUJhT3p0NTNDQndsVHBmaHRZK3U4b3pqR0lyeTdwblVpVmJnV3NJVXE5cGVOcGRwSEZKSHFVM3hUOTdpMmxCVVU3T2hUTlY5dTUyamtMcy9jaUwxL3A3ZkU5NndJb2hNbWgvUGlEdWNvdHRMZ1U4THhLSVY2V2tHU0dRc3Vja0VEVDhPNGp2NEJwVlhyTjBHckRBOTVIdnZCcHBpMGVLODhyUlRCZ1FoalpDV0JnWW16T2xjVWdzazU1M3dwTXY1a1ViYm5oaG9ubmRqZGhCbWNhSGxPYU4veGFYSm9ib3VrVHNJVTY5cVIxb3F0ZmJXSjhmamZLRXkyUmJZMENTZVA2Tm52K0hIUlV4TFIzMFVMdlcrTUxMbTFkMXJUbmh1VmI5R3BNVjVHa1h4ZzRMLzlHTlE0dXp0SzFBNDdxbHcwRzRTbmZ6NDhLMjF5THRZN0lXTDc5RkxBTHpLZGhrUHQwc0U0RjlMaVBVa2trRklZb2IyNjJHbVZSK3dJUlkwQ2N0ZUZFWWxHR2lRcGIxVk9zMFp2eXVTdm83Vzd6V3pqM2h3RE1FbXRoME16Y2JhdjQ0eitPMS9sNlRIbHdpZFc5OVpOalh0aGc0ckVWOC9xT3F5YjZtaENRTnBHUzRkSTJJNEFCY29aeUdUQSsxRUtQaWV0dVNOS0U2elZRNk5FSkQ3VXpFamRybFVRR2xnd2RnbDNiNS9KZ2t1VlZUMWpITTU0Y1h5MHB0T3kxTVZKWVFhSVdBS2dLdWt1YmlrRlhDNGJUL3NGbXpDYnZzVnNpa0lyeGhudE5vNktiK0c3Z2VWL29mU3hoODhuamV5M0NJaXNyWnljbGpPMDl4Uyt1M01UQ0ZrUDJicXdUaDRYOTA0LzdNckdkZTlvL3J0Q29IU1M4WUFtT3plRGNSN1FFbk5YMERsNVJoTDB2MlJGeEZqVlFCWm9wTnI1Z0JKWDBzbTZKbzNjbzdqc1dpTkdDMWhsWFFRUHNUd1FRUk1ZY1BRM3hCM3p1VVpocXYyc0xGRzlOcCt0L3dzc0dzTnFWL0ZCSFpTZklXSEc3WWlLK3hGVXJ6UUpUWTlPVG9DQVZWcC9oT1V2M2tMMVl0MTBrb25wZ3l0QytITG5ibmhjbzRhSWg5OVlsL1NlRTVOYys4S21nZi9NcHBWWjdGdThTRjJnbGFEWjhuVi9PbnVTNEpSQWRPNnpvVEhqb0RIaE80NGZSbi9GdlE5Y21IWDc3TC9XYjBOaDVhQk8ydjlBMjhDOUQyeG9Ed2h3QW9ZSG9rVDdxUkJQNWVvMnlaTXE4TGZpZDdGQVNHSWdPZHVRaDRWQ1c5dmY5YXZudjFVUjNFaDhZYi9qOVFXNE40NVJXQXZlMFA0OXNmQlRCVm5ZWU1McjcreHQ5Z0R0N3lSTjFHTTdqdzVndHlJNHErZnU1cnJPUHBTMmFmYnBlTFg0U1F2ZGNZU1FTUkdGd2grd0hsT0xnMFNxVnpFcmVydkxoVUVIRlc1dlg4a004ajhrSCtqZHNISmc2WlFZdzRTb3VLMDZxVGZ6N0F3Nm8yNWVoNUYxeHpoVnhVSzhwRlFHNkRSNk5VT3hVenhEZzl3ZE9vUWZLMDN2cm5Mdnd0dXVCZFA1UXZUcHdmQW5IaTZPNHFuVkRIZkJzY2xVL0lvelVhRHBUdTZnT2hSMkljeXpBc2g1R01FT2lTRkMyWC9HeldTQWR4eFhDZFg2WnlBcUFjYUlvSnZzYUdyUlVLdml4QTlvSXB0MnhDVEVjTk1nVit5V1NQejhCOGF0ZFdOQVQ3UWtFRUNZWjhjREJTa2pxZDF0VG9RS25FZTIxNzVGQjVBMk1CUnhFZ1Iyb1VtdkQ5eGE0U3FLQXFKdnVCeWQvcUtUVENwamd5bXRidldNMk83S1RjWkJnbDJCb1V3WEVxYTZaU3Fwc2lVRzQwS1pSMDAxRTFYZGRVeDlSRkdEcjdNNEYwTGdtbWt3dm9UdFBNcnNGUks0UXNQdTJ6VTE2T255c2FyR3dUSndJakorZDBwbWcrNzVwMGMxTWpENGlQazVjWmZkWWZabGlPWTVtd242RVY0THpRRTRSYmY1V1JuQnl6cW9ySHZBQkhvMUJVb2JpVHZkbVdGQkVDUUd5VHFBM3pkbGZISjI4TXFONEVQY0FYZ1A3aWRtR09hMGVLdHNIOUVnNWhUbSs5NzV6S280QjMrY0QzU3Z1Qi9wMHZOUUNOODJkbXNnUEFUTWJxd1dQTUlaUmxjeUFSOWxVLzJQbXp6Zm1nYnBvVkk1d0kra0VLWjZ2K2RUekRsMHJENitBREdjNU0xcnBYd3RqQlVuU2hVQXp1bWgvUlg2emhlUXRDdG4wazVselhtYUoyU3ludmw1dUlpOFladWRDNmFiaU9IaFNnRERvMFlTc3VFNjBIRmY1OHdCV3AycUJveEtBVlc0WHNyNU5HbjczUHRGeFNNMDI1MGNXZHRyWjhXWWRvdnJXMC9URlZkcGN2UEY3a00rbXd2ZmxNY1d5YTJyQXE4NDRvb2hnbEpEd3Y0SkN5MUNBOHB4cCtIZzY0NUhpU3dJc1Y4am5FOGYxSFU1SHM2a2tHRnFJUytmNzJXRUFKWjVvTXduUjBwbVNPVTlpRGlzbkdOOGtJOUc5YXhUdmUvczZRZ3dDcEdqQllteHhmTzNyNFM2dW00R3o3SzF5RDdTZWFoeXIzbFRJNGRtTHRhVjNGK2MwbnAvY0lURklTV0psbkg4QU1kMUhyc2I3U1lsNSttYmI1UURNdjQ1cjV6NVJCcjBhNHBlWWNUMmxQVDFtbmJPcnFGV1hveHhtS0ZSUVZsL2R6YWhsVC9xbHJoK0xxbmowRys5RzNYQ1FIemR5cTZkcENBZDBEcjJXV1d0LzNKTWErdjd6Nkt6KzlYYThHQTdIOWJtOE1ybU5uZlFYNkYyYjlqOFpINEZTRUtxVlM4Uml0cHdLRWtlWEVEZWhMUVBLSEdEWDU1ekxvR0FyR2FqMkJaSUFIYVZxQjNtUWZwc1RyUDBTMm11RDJJVGFoaHIrNW5iWVdQUkQxd1VNY1RiajlMZzRrbTdieXY1bWEvdzhXVXc0WVlMbkk3TFVNTldOb2FWSEw3VDVJcEdiaUhDRHdKZmlTTnZJNURMbWRxZStHd2hndGhpTDRadS93R0RKSFluU0pvcmNvekd2UXNVd3NFbzBFU2Q1blBPQkJ3blYrcmpNbUZYMUxKSmtLL21nd3JjYkZCUDdFYVlMZ1I1bEVFVU5vWUVnV0FuK2Z5MnFoSkd3SEJWT1NTYjVyS2wvNDNTUkpjNmxRU01yUjR2amkyUjYxU1M1QTFMMWZMSHNYbDZzWGt6OGtkQTlmT3kzSG4rcVlvVHVDZkdhSVJpTk4vdGIra1F2SUhpK2hkbjBzSzVtVGRuTTlJbFBSNy9iN1JjRm9BendoVDQrSVlLRkJqUHFFVVgxS2Z0TG1YTFVlSFp6anRBZWZDeWJpS1RDc1plQVFGOEwrQlR1V0NiZG1Eb0dtSXZIQ1JDbnZLTS92OVVXak9CMFhVeWxsYjBRYzBaMTE2b3p4QjI2MHpoUnZxTC9RYjczZ0p6a3B5NDRJRjI2RXUxWHhoVCtNU1RQSkJHTlY1dVdRRU5jcVlKOHJnWXRaRVJIbDZvVGl0QXljeUxDdkpxa2hPSnRLYXhlUE93N2FxaEZSL1g5V2k0R0VxbGlkUERtdHRNdGszRG9acm1UMDFrNG9iLzZNSkR0alRsODJ1cUREU2N4NHBhRS9XK0psbFR2QmFmT2RYeUoyazdBRXUyclhCZmVtZXJPL1ZkVjIzWkFZN0lNNXcyRk5uYTFSdldHRFpFNzV5YzcvZmtSbUlCNDhCWTJOT3NVS1VQbk9XV0RYYitQQU9nZjYwN25QMHdNMVFLWnh2SXRrRG5yd2FVYVluQ1Zrd0Vxd0s1K1p4NjA2UkdoM05Yc1F4N2VKY25nMDNSTHRRZ0ZBb3dPMStXcmNiOUh1ajJlZnEvemIzcytiNmE3TmpTTkg5QmY5YXdQNUpXaEpyeDhVRnBRdG0reTdTRWVXbU1ac3NwTnE4alpOQjN5bzhTUEs3RlZsdXJvSXZjWHBDNURSUkFyYzlYbzRsWld6Q0ZQbGFaS01aNFZ3Z0MxaGd6bG1Remk4U0JSSDhUd29mZ25sRTJjWmlqZ0xPZ1lSUjVWMjFoVXlGTVI1UDA0SFd2S1NSengyZzNBbFhNbW9QTU9pUksxcUt1ZjYwU0FsYS9sRUtpV0tCTTBhejc4ZXpqTGFjQjFUVTlMUnpraFQ5TVFoeElseHZkTlAwbFdTdTZmV2FORHc5MjVIYkppb1pLS2t4MHhrTGwybmdxWE9ueEhIUnVjZGZoUURKc0h0VzlDNmh1UnlPam9kaHdRc2RxOTRaZGdtaHJaaEdHVVR5TWRVRXZiZDcvOW9FS2RnT1pWS3djdVo2YmhTakxsbjlYWStxU1RHcmZGRFA0bFVVUlIvTTBGWGFPM1k3UUZ2cld5a2xQaGdlOVUvbmRzY0h4Y3NSelZwRk1zeWgwYXBqMHN4akI5S1J1ZmZRNk1Zd1dXSGJvOWdNcmtXUFJMa1ZKSXZSV0x4bEVjWkdIQmNITzROYWs2WjVSQWdXbGFtYVFJNWd3QzYzV2hIYTdXYUlxd3NBemFieVFicEdFTVlJbkJFcktJY0xWM1pWNXlHWVFTTzJmOXcxU3ViMlJ3U2dqN0tocTB6TTdZb0grWDRxeitDK1lkc3lEQjRick5xTWZsZlg0aUpUcTBNR3pYb3FId0lxRlkzbTVvUnUyazhkbjd6cjZtSHB2VlZnNDA0cmFXK1g2VUJ4bUhHdXFkTllnSkFpVklYcVhnWm9XUVp2a2tZYy9zRUZrRVpUdksycGNNUnNVOVRTNGFkY3ZsZVBFYmw4cU5oR0E1SC85ZUUyWEJvSks2WGt3SWhVY1FkcTJKT3dSUmNHRWJabnRJSmdZVTRFTnlBTUJWMERwTkVsRjUxa254bDhmeXJEdk1DaElrRGIvNm5qektiQWJmRDRVWTVTdkdxeTJKeEt0NG4rRzE4b25kVFFXbW1pUks3em9ZS2RVMWtNWjNVUlRvY0lYSHRlZzFqZHFFcUgxTFFCNkZTWVZJYXVDOUwwdVlraEMwWUs0czRFMTBxRklCQnBiYmFoRTBMc2dsR3RNWVlWaU5URTZMMzg2bmY0RFI5MGNnZnByVGF6V1N1alZuTjZ3ZWEyYzJyZXUvYXNBRms0ZXNVd1NNdTZoRmdkSHRJZWxIKytPOEt4VmYrNnpjZWVGVkxiblk2Z0pMSk5YV2NvWGE2eFhWcDJKZHlJMlZrdUY3ZlZDZ3NOMFEwbzlnajhCN2l0N0JxNUhDTkRTZ25DS2ptU04ybEpEWno3U0NSSXNMaEZJZ1loVXVlUFBPb2U4ZC9ndk5DYWg0TWVYVlRxZkQwWjJPSFk2RHJUdHJUSEg5OUxRNU5xbTBQV1lESkdGTGJTQ0hZY2xmQ09ianloZFh3WmNLMUJkdXAxaGgyV0xNNkdDWmQ1a0pMUFZrVTVBVWVKU2VhTXdTM2kwa1laSFZBWWxFNk53Y0VodVNZR3NLcHNBZ2k4Uis3SGtHTFF1N3M3Z2d5TFF6Y0dVREZseVdvVHhyTGNaTFRmbll0eWYwYmRqQ2RRVU1pTkk1SjJxakh6QmVOZ0RBSHpmSVdtbzZwc1BTZjcvaHYxOWw0NC9BOVpyekwzbHU1R092cVAyRDNRNlgwOWRtSEd6WDdnVmkrUU9UakdVTi9ORURDR0YzTjZsVC8ra3FleWRwWCtoeld6QUJ0MkRjYVU3V3VIMzdWdjFHR0NCTjJtYWtBRkNvTWlrWnR1Y2k5TVllWVNBSUdBa01aSWJkbWZsRGx1SVdTUlM0MFdsdGE2a3BIVmdMWnplMzlrK3ZweWY3bHkvbzB6Qyt1MEswRjJUSjc5dlpSRHBaZ0p4bWhQbnRNdjNYRFAvU3lteThEcEJ2KzAvOFRTT1p0SHpiS2VaRlRNeldHd2hFcENzZWJYZG5RUlVxdkh6Umk3c1RYcXZOOFhmNUc3eU5XY09XVnByK2tidXY2Uy92a0w3YTY3QTRpRTBPUmx2aUlnR1lLemM0YkxmYUZFU09MSk1pTmZ6b3BRSWJFWEVYa3VkN3JNTnljQnVjRzVjdTNkd2JkSmdiNU4zeDJ0MklnMVE4RDFVTEVuYk1yVFRKdzVraWhZNmRISjNYekpGU3NtMU9KcnhnWlhiOFZ0THhXeUNaaVRzK25KN1duQmJqQitaN0JENmQ0TVl4TkxmYXAzQWhLVWpFa0JLc0xVSGlUVVpKYVk0clJiUmtZNjBVN09PcGlrbDI0VFE1NHZtQy82ek1WQ3VaTm9UR1Q4WFpHWU5QOVU4d2E3NlIyektKd3lqcXR3UklTVXN4SjN6b1R6VTd2V3dHZFJsYURJMXM2bThPL25ISVp4OFVLdXNCam12Vi8zalVpTnBYdWpLMzZjSWQ3OU9lbDYzdUxFb0lXakx2aW05Q1lSRkoxOFYwcVI5SDVFdDVadnNVUGlvU0FrNWZFc1FNVkdQN3Jnc1hrcHJJaDNIc2tGSWVIem1vNVB2WVVVNGxDZmZRZHZEYlhIMldBUkJXUnlNNTZVWU0wQk9pU0tzbHNvMFRkL2VQNXZ6dEhJcVZGMExqM0lGUVF0L2Q5TGxLb1FYTkMvcEZ2Ri92R2VhdmVZd3Y5MXNMaXZ5WHZ6YUR6ZnJCSU0wNE5ZMndVbmdhR1pqaW5nRjNMc1NUbnBxUkZWdmNnVEZpdisveEU1UGxQNjU1YitZL2lDZVU5TkJUaSs0T2hKZjM5Mm5YQTNITmZEeitTZk5tVldoeXcrSnE0WDlDN2E0dnZ0SVpYWHRHOENZZ1BONWZmM0I2KytmSDlmMEhqNU80Y2d3WEtuUzRaWE5JaHNCYjd4WVdFK0ZieDRvMW9Xd2t3TkFRYXZNV0FkRFl4SjZ3L1dubkx3dXNiYm9TMk5Bd3oxL3d3TW5SVmg0U2hCejJmbkV1dDlaRXhGVjZ3eE53UThkVUFHRVlpcTV4WGFMcGdDWGtkNFpzc1hVUG9HbEs1OGZUWnI3V0tSRzdPaXNGTGNpQnFmOFVRNjZzQlZCazVkWUI1bkI5V0N6dFhTMFRNOU5uLzFnMDc0NjFjQ21lY3czVmFJQ3k1SmtHYUJLbjBGTjN4ek5idml5REpnRnhXUkNLaExiUkZlY1BTamZoZUtIUnJmcXlJUnVGSlpxNjFIams1dWZ1MWdlZk9wcE9tU3NVSG15V3lyUHhhMHRLeXQwSlRKcE1IMjhrak8yZWZESFYzQm9GTkplVXNoNCtKWG50K1EyRGgrVXJLV3RiaHlPaUw3Mi9EcnZ0bENEV29mYnk4T3M4cWprK0kzRW5KUkd4VEIvVXpLODlXRTFDam55UjdOVlFjMDVsdko5WnExRXV2TlJJUnFUVnZqaUZXWm1XWlBZSldNTHpBa0JUSnlIY25lMEgxSDhyblE2S0VBa00yN0JxcEdTanhwMnFnZGNnbjhrci85Y3F1cFdqMitDUHVQYnI5N0VLWnlWNlRqZEliV0FzSFZwZ3ZFOFV0THlVRTJMWHRSNEs3WjhCLzNGSVMzREJzbTR2YUNBcFF5Yk9mME0zRGVDVjk1Nm1CamNtd0JqTkZnUXZFcFJaNjhVTjJPYXNZdXpEM1VqUWQxbW1IdGRsZTNlQ3A5SHA2L3ZiWHZwRmRUckJld0ZERGRHc25iYXVwU3BOdEFHSitwV2oxZXFGek1QeHo5ZjNuOXVuZUM2N2llWTVXZFF6TGk0cVFKU0d5eGN1RW9abTV4bGRoZngwVUNJWlJFWTJFakllNEtTU1dteStBZVBoUDMwTnQ1VVJqaHBBMG1FWXdYTmxCQ3ZjWElGbWwxTUFMSllwbU9SNlNZMm1LeE84STZ0TWJZUTVmcVBqYlpvMWVFSENua3JkWmVucENtTDc5ZkpYZW1ieDhLc3JTTkJmaHE0TThGcm5rZmhwV2RSNnJ5V1J6UnlnMk1sNXpJYjlxcUxmbFR6QmFWV0lsWFpkWWNPM1AwOVAxWVY0VE5NdlNoUERMUDh6Tk5UTVBYS01xTmVmbGozK0F2TmdHM3M4QlpoT05SNy90Y2gzY2ZoQ1lUUkxHeHc5NHFORWFlUDBPa0JiNS9pc3FMay85Y2V3L1dnRTlJQzFlamx6a1phSkp0SEt6cDgvcjlXUHBNZmhDTHZJeTBTVGFYRkViWmtMbGRETHdJSFE0ZkFWM0FBZmFqNnd0UGJuZFJJNHg0VmpFcWVIT1NHSENYcGp0WkRkTFRhN1VoN2hNMHVaWE5kcytDZmxWTGpzTE03eXdxV0NSZDUwY25JdUQxNGVybXpqL2o1K2FwOVJYNTVtTUpWejJ4NGN3SGJlQnpUYUprQVd1YmptbmtZZWJzbmY4Q3Vqd1c1dnFENWNWZEdlYnFTbGppV0NwWFYxelVXditMMU50TnVldWQvMTZxVUFEUGFWWUl0aHlxV0Rxc2psRDFRWEZZaUdwMGJVY3BVZU8wTisrY1RocHIrTzBGeUZvTFVBM1dvUDVNc2dSVDJhV3hpVTVMUTUzTEVKNkZaNUlpOTdJRlFWYlNpaFdrZ1FrNGpYZVkrSHcvdEdvZnFrcUQxTm1zMzFvYzRZNnpWK1ZJM2VZQklSSWVkUWg5WW54VWd5WVdFUnl6WENpS2hSYmZlVTJDWG9GWW1LQ0NQR1VQaDVxQ2hEcFUzcWREZGYxMFNYODZrVGNrTG9uS2tYdHE1YThyYUtlbDhZa203cVo5VHdINENITHNtM0xjYjE5TERiblZSQ050UkRpc240MEdnNld6SEZkR0ZtamhtaG5kenpzWjhFV2JqWGI3VWFqMitzRDVlWHM3OWNsa3g3cS9ORVZoK3BzOUJ6V3h4VVJmMERpc1c0RzFaQVc5RENvL2x3U3dMQTFUQU5YSjRhZUhnakV6UVh0ak94MXFvMWVMUWhDYXMzeStTUTZvQnB3Smhwei9ySW9LVkl4VGN1L0pMcXdZbnhXSmFQN2R1MVVLVVpPc3oxRHc0NmxMZ2pEUWFmdXltRXN4SythSWlTWHNDa0Nic01RSzVxc2x3aWw1QWZ0bTR1cHR3ZzdXd3VQK2FUd3VEZ1R3Z3JMWjJEYXJLRDRHRmJIR1JRMnNud0h4TXQ5YitMVk1ZSlRLanh2U2ZtenN0VVFsR0NmU0JnUCt1eENpNHFpZ1VtZUtQZ0hPcU11RXBnUTU5ZGhIeHphbWF6SVQ1UkpVckpuSUhnbmFac0REWWFwNFZ4eWlWRW1TWU9Md25Gb3VPT1FrMEplTC9ZR2Q4RUR1MnpZZDVKSlVpcDZwcXk1S3dOcWNLQ0p4OVZ3cmswcFNpWkpBMFRQNEk5N2Q0bTdpZThiT2djSUFFQWc4TEdTNGkrZXFMVk92bFFSOGxiZ2d3RDgrRGxXQklCZjkvRExmcGVVM082b0hvQXVEQUNDLzNUVUhmSEhpZjdmOW01QXJxN3B2L0k3NHJJTDVXMjAyYjA4czR2TU5COURUYzB6NGw0L0ovMkpZeE9XTjNRNnR4UG5GY3ltb2lCVzdBT1BZYzVaU3NqUm1VcDE3bnhkalRucWtFZE0zYll0enpoQ2NSbjdHVnBwMGc5S2lqS0xjYzU2SW1SelpYT1ZjYm4rNUpTZzRJMDFIcGNNUU5uWVhOUUtUWHpVRUN3NUx0MlltR0pQdXFJUTY3bE56ZEU0VG9XNEs1eGt6UVAwSXA0VDlkc2w0andheC95Tjl4UFMvT1Ntb0xUa3JHOXU1eUFrRThpNHFGVlliTUF1SFQ5OURkWUpjQUNKUlpmMkRKc1l4RHBHVUdSM01pckw0Z0lPWVpQclVNNzRyRXhJWkNpWm1Jc294dlVSNVZvOHdvT3hhWWtpZVRobDBFQ0s4cVZwNU1pWjVGT0J5RjRJQTAvd0JnVk1WOVcyTHltM1hBeXNVTEp2Z0dGand4dEYrT0NVWVFDL0RUTzZtdVF3Z3ZuQmh0Z2htVHRXQjRjd2JzOTNVK0luWHhyZ0J2emlKVDY1SEZVa0loNnFMNkpKWWJLWk9LcFVhQ0tvQ2pjYzVWaUNUdUZMTERsWnl3b0dwdUVmcVFRWnR0L0hqcWhqUENtWElBRXlveWJTUSs2WFJrQklacVBKVmdLVEJVRk5KSE15aE1oc1FSaGFKb1FoTEJtdTZ6Zmo0d0w4RENVb1h5REplQUt6a3BDOFRrME96SVRtYUI0c2I1SnhZV1lEV0pMTjMxcHFpZE5xd0hhcnVqZzFNZWFmNGF0T0lQTEJFc3FoZEVzQ0JMN3d6WTNuOVNPQ0FIL3B4UkdBdnY2cHhpM2p2SDBrVzNJZTlWbjRoaEJCS0VNWVR0aUdjSEkvQ29uNUVJMjdveUU2Z2U0UWg2dXNaeGxqU0RrVFFzQVNReUUyRmNLQnp5OUVBSk9LYU9ramhPakE0dklNQStBS01ZQkJGQ0tCaDNuM21jQUU3SlZtbmppcHZPWEprV1VldFVYU3hOL1BQbHVDaFJZZ0ExYUlsNHR2NmE4UFNwSXNKM1pvbUE2VjRGbXdaRXkvZGpreVpIUG54RW0yT0ZrV3lMQUdjNVF0MDhiVWkyUko0bVFXSC81WExZdmxTTFNnZnF4TmQ0Z0VXWXZsb21WK2lqTkh6aFFVSmttU0NDM0s5NGZQRmtuQjBVU09sQ2FJWGtTSlA3MDFTU1lsZ0NBbnllSXFqYzJhTDZPazU5T2ZZYW1zVXJNVUpjVnJPeTg0VkFJcVRtcVNxVVZTUW9yN2lUeG1LTGxvbWYwVWw5YUprcUprY2lZN242TzRPbWtoSjBOUmhXSk9KWkJQWlhobHU4YkEzTjZiUVN2bCsxc09CK1k3SDlqRE85OVdjYmJSR3MxT1BIdHZTQ1U0NTRLTHhwQnhJTmZ2a3N1dXZFZmNtKzhza2RKVjF5UzVvY1oyTzR6emdjdTd4NzF4TjkyU2JNQkU3aWFaN0owcHZINDhkNHAwQzdYenp0ZzkzVnUrTW1waFo3NDMyeXZ6ZDF1T1hFc3NGaEQ0Tzg1OU1QK1FKOGhTeTYyd3pBWXI3VFRia0dCemhGZ2pWSmhWOGhWWS9jNTA3MTZVOXc2S0RnTFI0TGdUUVVjR2lJRklXS2VOeVR2aGpieVAzUCs0TEltQ2lRd1JDN0VSQnhraHJzYnlOT0d3cjc0WmlSWk5GV2dHSGtLTUdiRWl0aGxoSTRrT3AveUpqWTVuR3E1ZGRsTXp4QkpqcnFsVVRqdWoxeDU3N2ROams2T09vV0VhaFZTbVZJVnlsWXJFR2xUc0NJTXdwMFI5V01EeDBiRDlLRGFzclRXUG5rZFl3Z2lSVm9xMWx0SkdpYU8wZGJSMlZQTlU1WTZIN3JyblVkZ3I5V2NMQkttVU0vV010VmJVaDBkeDY3d0ZjZUdkNnFhOUpOYkVxcmdnNnJWd2o5ZmJvVE9pRmlUTHhtRlpQNHVpVzFUcmxsSXg4dzJyTmtxRWZtWkN0V3BaUDJFQlFocjErdHpDaXQ0VW41Z0JMdUt6TE1CL1dGalVpeUtmdG1IR2ZsY3RwK0NHMlF2ZnRmaFEwK2ZUaVY5UEhSM0Z5RG5OTHlLWHk2VkdiZEZtYXFiaTVMdU9vYmFHTHlQQjJNelhORUNyamxxclBneHN5MTJsUG9Xdm9hb1h0TmtTb3ROaWJaUS9PUUpibEV1THVVei81N1AwaXFrTU9jc3pjNFAxd1RKWnFBNlBkSDZtQzd5bkFBQT0pIGZvcm1hdCgnd29mZjInKTtmb250LXdlaWdodDoxMDAgOTAwO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtZGlzcGxheTpzd2FwO30KOnJvb3R7CiAgLS1iZzojZjlmOWVkOyAtLWluazojMTgxODE4OyAtLWFjY2VudDojYjUzZTMwOyAtLWFjY2VudDI6I2I1M2UzMDsgLS1saW5lOnJnYmEoMjQsMjQsMjQsLjEyKTsgLS1jYXJkOiNmZmY7CiAgLS1zdWF2ZTojNWY2MDY4OyAtLXJvc2E6I2VkOTY5ODsgLS1uaWVibGE6IzVmNmU4NjsgLS1uaWVibGEtY2xhcmE6I2U5ZWRmMzsgLS1jcmVtYS0yOiNmMWVmZTI7CiAgLS1mb250LWRpc3BsYXk6J2JyaWdodCcsR2VvcmdpYSxzZXJpZjsgLS1yOjAgMThweCAwIDE4cHg7IC0tci1zOjAgOXB4IDAgOXB4OwogIC0tcGFwZWw6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzE4MCcgaGVpZ2h0PScxODAnJTNFJTNDZmlsdGVyIGlkPSduJyUzRSUzQ2ZlVHVyYnVsZW5jZSB0eXBlPSdmcmFjdGFsTm9pc2UnIGJhc2VGcmVxdWVuY3k9Jy45JyBudW1PY3RhdmVzPSczJyBzdGl0Y2hUaWxlcz0nc3RpdGNoJy8lM0UlM0NmZUNvbG9yTWF0cml4IHZhbHVlcz0nMCAwIDAgMCAwLjI1IDAgMCAwIDAgMC4yIDAgMCAwIDAgMC4xIDAgMCAwIC4xNiAwJy8lM0UlM0MvZmlsdGVyJTNFJTNDcmVjdCB3aWR0aD0nMTgwJyBoZWlnaHQ9JzE4MCcgZmlsdGVyPSd1cmwoJTIzbiknLyUzRSUzQy9zdmclM0UiKTsKfQpib2R5e2ZvbnQtZmFtaWx5OidPdXRmaXQnLCJIZWx2ZXRpY2EgTmV1ZSIsQXJpYWwsc2Fucy1zZXJpZjtiYWNrZ3JvdW5kOnZhcigtLWJnKSB2YXIoLS1wYXBlbCk7Y29sb3I6dmFyKC0taW5rKTtmb250LXNpemU6MTVweDt9CmJ1dHRvbixpbnB1dCxzZWxlY3QsdGV4dGFyZWF7Zm9udC1mYW1pbHk6aW5oZXJpdDt9Ci8qIENhYmVjZXJhIGNyZW1hIGxpc2EgKGNvbW8gbGEgZGUgbGEgd2ViKSwgbWVuw7ogY29uIGxhIG9wY2nDs24gYWN0aXZhIGVuIHRlamEgeSByYXlhIGZpbmEgKi8KaGVhZGVye2JhY2tncm91bmQ6dmFyKC0tYmcpO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWxpbmUpO30KbmF2IGJ1dHRvbntmb250LXNpemU6MTVweDtjb2xvcjp2YXIoLS1pbmspO30KbmF2IGJ1dHRvbi5hY3RpdmV7Y29sb3I6dmFyKC0tYWNjZW50KTtmb250LXdlaWdodDo1MDA7fQpuYXYgYnV0dG9uLmFjdGl2ZTo6YWZ0ZXJ7aGVpZ2h0OjEuNXB4O2JvcmRlci1yYWRpdXM6MDt9Ci5zdG9yZS1idG57Y29sb3I6dmFyKC0taW5rKTtmb250LXdlaWdodDo1MDA7fQouc3RvcmUtYnRuOmhvdmVye2NvbG9yOnZhcigtLWFjY2VudCk7fQoudXNlci1hdmF0YXJ7YmFja2dyb3VuZDp2YXIoLS1hY2NlbnQpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1zKTt9Ci5zdG9yZS1idG46aG92ZXIgLnVzZXItYXZhdGFye2JhY2tncm91bmQ6dmFyKC0taW5rKTt9Ci51c2VyLW1lbnUtZHJvcGRvd257Ym9yZGVyLXJhZGl1czp2YXIoLS1yLXMpO2JveC1zaGFkb3c6MCA2cHggMjBweCByZ2JhKDI0LDI0LDI0LC4xMik7fQoudXNlci1tZW51LWRyb3Bkb3duIGJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWNyZW1hLTIpO30KI25hdi1hZG1pbntjb2xvcjp2YXIoLS1zdWF2ZSk7fQojbmF2LWFkbWluOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tY3JlbWEtMik7Y29sb3I6dmFyKC0tYWNjZW50KTt9CiNuYXYtYWRtaW4uYWN0aXZle2JhY2tncm91bmQ6dmFyKC0tYWNjZW50KTtjb2xvcjojZmZmO30KLyogRW50cmFkYSAqLwouZ2F0ZXtib3JkZXItcmFkaXVzOnZhcigtLXIpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym94LXNoYWRvdzowIDJweCAxMHB4IHJnYmEoMjQsMjQsMjQsLjA1KTt9Ci5nYXRlIGlucHV0e2JvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1jb2xvcjp2YXIoLS1saW5lKTt9Ci5nYXRlIGZvcm0gYnV0dG9uW3R5cGU9c3VibWl0XSwuYnRue2JhY2tncm91bmQ6dmFyKC0tcm9zYSk7Y29sb3I6dmFyKC0taW5rKTtib3JkZXI6MDtib3JkZXItcmFkaXVzOjNweDtmb250LXdlaWdodDo1MDA7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xNXMgZWFzZSxjb2xvciAuMTVzIGVhc2U7fQouZ2F0ZSBmb3JtIGJ1dHRvblt0eXBlPXN1Ym1pdF06aG92ZXIsLmJ0bjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWluayk7Y29sb3I6I2ZmZjt9Ci5idG4uc2Vjb25kYXJ5e2JhY2tncm91bmQ6I2ZmZjtjb2xvcjp2YXIoLS1pbmspO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7fQouYnRuLnNlY29uZGFyeTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWluayk7Y29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0taW5rKTt9Ci5idG4ubmV3LXRvZ2dsZS5vbntiYWNrZ3JvdW5kOnZhcigtLWFjY2VudCk7Ym9yZGVyLWNvbG9yOnZhcigtLWFjY2VudCk7Y29sb3I6I2ZmZjt9Ci5nYXRlLWhlbHAgYSwubG9jay1saW5re2NvbG9yOnZhcigtLWFjY2VudCk7fQovKiBUw610dWxvcyBjb24gbGEgbGV0cmEgZGUgbGEgd2ViICovCi5zZWN0aW9uLXRpdGxlLGgze2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtZGlzcGxheSk7Zm9udC13ZWlnaHQ6NDAwO2xldHRlci1zcGFjaW5nOjA7fQouc2VjdGlvbi10aXRsZXtmb250LXNpemU6MjJweDt9Ci5uZXctc2VjdGlvbi10aXRsZXtmb250LWZhbWlseTp2YXIoLS1mb250LWRpc3BsYXkpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MjBweDtjb2xvcjp2YXIoLS1pbmspO30KLyogVGFyamV0YXMgZGUgbGFzIGzDoW1pbmFzOiBsYSBmb3RvIGVudGVyYSAoc2luIHJlY29ydGFyKSB5IGVsIG5vbWJyZSBkZWJham8sIGNvbW8gZW4gbGEgdGllbmRhIGRlIGxhIHdlYiAqLwouY2FyZHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtvdmVyZmxvdzp2aXNpYmxlO30KLmNhcmQ6aG92ZXJ7dHJhbnNmb3JtOm5vbmU7Ym94LXNoYWRvdzpub25lO30KLmNhcmQgaW1ne29iamVjdC1maXQ6Y29udGFpbjtvYmplY3QtcG9zaXRpb246Y2VudGVyIGJvdHRvbTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6MDt9IC8qIGVudGVyYXMgeSBhcG95YWRhcyBlbiBsYSBtaXNtYSBsw61uZWEsIGNvbiBlbCBub21icmUganVzdG8gZGViYWpvICovCi5jYXJkOmhvdmVyIGltZ3t0cmFuc2Zvcm06dHJhbnNsYXRlWSgtM3B4KTt9Ci5jYXJkIC5ub2ltZ3tiYWNrZ3JvdW5kOnZhcigtLWNyZW1hLTIpO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6dmFyKC0tcik7fQouY2FyZCAubWV0YXtwYWRkaW5nOjhweCAycHggMDtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2MDA7fQouY2FyZCAubWV0YSAucmVme2NvbG9yOnZhcigtLXN1YXZlKTtmb250LXdlaWdodDo0MDA7fQouY2FyZCAubmV3LWJhZGdle2JhY2tncm91bmQ6dmFyKC0tYWNjZW50KTtib3JkZXItcmFkaXVzOnZhcigtLXItcyk7Ym94LXNoYWRvdzpub25lO30KLmNhcmQgLmhhdmUtYmFkZ2V7YmFja2dyb3VuZDp2YXIoLS1uaWVibGEpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1zKTt9Ci5jaGFuLWJhZGdle2JvcmRlci1yYWRpdXM6dmFyKC0tci1zKTt9Ci5zaXplYnRucyBidXR0b257Ym9yZGVyLXJhZGl1czp2YXIoLS1yLXMpO2JvcmRlci1jb2xvcjp2YXIoLS1saW5lKTt9Ci5jYXRhbG9nLXNlYXJjaCBpbnB1dHtib3JkZXItcmFkaXVzOjNweDt9Ci5xdHktc3RlcHBlcntib3JkZXItcmFkaXVzOnZhcigtLXItcyk7fQoucXR5LXN0ZXBwZXIgYnV0dG9uOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tY3JlbWEtMik7fQoubW9kYWx7Ym9yZGVyLXJhZGl1czp2YXIoLS1yKTt9Ci5tb2RhbC1pbWd3cmFwe2JhY2tncm91bmQ6dmFyKC0tY3JlbWEtMik7fQovKiBCbG9xdWVzLCBwZWRpZG9zIHkgdGFibGFzICovCmZvcm0uYmxvY2ssLnBlZGNhcmQsLm9yZGVyLWxpbmV7Ym9yZGVyLXJhZGl1czp2YXIoLS1yKTt9Ci5wZWRjYXJkLWhlYWRlcntiYWNrZ3JvdW5kOnZhcigtLWNyZW1hLTIpO30KLnBlZGNhcmQtaGVhZGVyOmhvdmVye2JhY2tncm91bmQ6I2U5ZTZkNjt9Ci5vcmRlci1saW5lLXRodW1ie2JvcmRlci1yYWRpdXM6dmFyKC0tci1zKTtiYWNrZ3JvdW5kOnZhcigtLWNyZW1hLTIpO30KLm9yZGVyLWxpbmUtdGh1bWIgaW1ne29iamVjdC1maXQ6Y29udGFpbjt9Ci5vcmRlci1saW5lLXJlbW92ZXtib3JkZXItcmFkaXVzOjNweDt9Ci5vcmRlci1lbXB0eXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6dmFyKC0tci1zKTt9CmZvcm0uYmxvY2sgaW5wdXQsZm9ybS5ibG9jayBzZWxlY3QsZm9ybS5ibG9jayB0ZXh0YXJlYSwuYWN0bG9nLWZpbHRlcnMgc2VsZWN0LC5hY3Rsb2ctZmlsdGVycyBpbnB1dHtib3JkZXItcmFkaXVzOjNweDt9CmZvcm0uYmxvY2sgaW5wdXQ6Zm9jdXMsZm9ybS5ibG9jayBzZWxlY3Q6Zm9jdXMsZm9ybS5ibG9jayB0ZXh0YXJlYTpmb2N1cywuZ2F0ZSBpbnB1dDpmb2N1cywjYWRtaW4taWxsLXNlYXJjaDpmb2N1c3tib3JkZXItY29sb3I6dmFyKC0tYWNjZW50KTtib3gtc2hhZG93OjAgMCAwIDNweCByZ2JhKDE4MSw2Miw0OCwuMTQpO30KdGFibGV7Ym9yZGVyLXJhZGl1czowO30KdGFibGUgdGh7YmFja2dyb3VuZDp2YXIoLS1jcmVtYS0yKTtjb2xvcjp2YXIoLS1pbmspO30KdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKGV2ZW4pe2JhY2tncm91bmQ6I2ZiZmJmNDt9CnRhYmxlIHRib2R5IHRyOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tY3JlbWEtMik7fQoudGFne2JvcmRlci1yYWRpdXM6dmFyKC0tci1zKTt9Ci50YWcucGVuZGllbnRle2JhY2tncm91bmQ6I2ZkZTNjMjt9IC50YWcuaW1wcmVzb3tiYWNrZ3JvdW5kOiNmMmQ3ZDc7fSAudGFnLnJlY2liaWRve2JhY2tncm91bmQ6dmFyKC0tbmllYmxhLWNsYXJhKTt9Ci50YWcuZW52aWFkb3tiYWNrZ3JvdW5kOiNkY2ViZGM7fSAudGFnLmNhbmNlbGFkb3tiYWNrZ3JvdW5kOiNlY2VjZWM7fQoubXNne2JvcmRlci1yYWRpdXM6dmFyKC0tci1zKTt9Ci5tc2cuaW5mb3tiYWNrZ3JvdW5kOnZhcigtLW5pZWJsYS1jbGFyYSk7Y29sb3I6dmFyKC0tbmllYmxhKTt9Ci5zYWxlcy1yZW1pbmRlcntiYWNrZ3JvdW5kOnZhcigtLWFjY2VudCk7Y29sb3I6I2ZmZjtib3JkZXItYm90dG9tOjA7fQouc2FsZXMtcmVtaW5kZXIgLmJ0bntiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6dmFyKC0taW5rKTt9Ci5zYWxlcy1yZW1pbmRlciAuYnRuOmhvdmVye2JhY2tncm91bmQ6dmFyKC0taW5rKTtjb2xvcjojZmZmO30KLnNhbGVzLXJlbWluZGVyLWNsb3Nle2NvbG9yOiNmZmY7fQoucmVvcmRlci1zdWdnZXN0aW9ue2JhY2tncm91bmQ6dmFyKC0tbmllYmxhLWNsYXJhKTtib3JkZXItY29sb3I6I2Q1ZGNlODtjb2xvcjojMmQzMDQzO2JvcmRlci1yYWRpdXM6dmFyKC0tci1zKTt9Ci5mb3Itc3RvcmUsLmJpbGxpbmctc3RvcmUtaGVhZHtiYWNrZ3JvdW5kOiNmNmU2ZGY7Ym9yZGVyLWxlZnQtY29sb3I6dmFyKC0tYWNjZW50KTtib3JkZXItcmFkaXVzOnZhcigtLXItcyk7fQouYmlsbGluZy1zdG9yZS1raWNrZXJ7Y29sb3I6dmFyKC0tYWNjZW50KTt9Ci5iaWxsaW5nLXN0b3JlLW5hbWV7Zm9udC1mYW1pbHk6dmFyKC0tZm9udC1kaXNwbGF5KTtmb250LXdlaWdodDo0MDA7Y29sb3I6dmFyKC0tYWNjZW50KTt9Ci5zdGF0YmFyIHNwYW57YmFja2dyb3VuZDp2YXIoLS1hY2NlbnQpO30KLmluZm8taGludCAuaW5mby1pY29ue2JvcmRlci1yYWRpdXM6dmFyKC0tci1zKTt9Ci5hY3Rsb2ctZGF5e2JhY2tncm91bmQ6dmFyKC0tYmcpO30KLmxhbmctc3dpdGNoIGJ1dHRvbntib3JkZXItcmFkaXVzOnZhcigtLXItcyk7Y29sb3I6dmFyKC0tc3VhdmUpO30KLmxhbmctc3dpdGNoIGJ1dHRvbi5hY3RpdmV7Y29sb3I6dmFyKC0taW5rKTt9Ci8qIFBlc3Rhw7FhcyBkZWwgcGFuZWwgZGUgQW5kcmVhIGNvbiBsb3MgY29sb3JlcyBkZSBzdXMgbMOhbWluYXMgKGFudGVzIG1vcmFkbywgYXp1bCwgdmVyZGXigKYpICovCiNhc3ViLWNhdGFsb2dvey0tdGFiY29sb3I6I2I1M2UzMCAhaW1wb3J0YW50O30KI2FzdWItcGVkaWRvc3stLXRhYmNvbG9yOiNmZmE4MzIgIWltcG9ydGFudDt9CiNhc3ViLXN0b2Nrey0tdGFiY29sb3I6IzVmNmU4NiAhaW1wb3J0YW50O30KI2FzdWItdmVudGFzey0tdGFiY29sb3I6I2VkOTY5OCAhaW1wb3J0YW50O30KI2FzdWItZXN0YWRpc3RpY2Fzey0tdGFiY29sb3I6IzJkMzA0MyAhaW1wb3J0YW50O30KI2FzdWItdGllbmRhc3stLXRhYmNvbG9yOiNkMjZmNGIgIWltcG9ydGFudDt9CgovKiBBZG1pbiBvIHZpc3RhIGRlIHRpZW5kYTogcXVlIHNpZW1wcmUgc2Ugc2VwYSBkw7NuZGUgc2UgZXN0w6EgKFJhw7psLCAwNS8xMC8yMDI2OiDCq2EgdmVjZXMgQW5kcmVhIHNlIGNvbmZ1bmRlIHBvcnF1ZSBubwogICBzYWJlIGN1w6FuZG8gZXN0w6EgZW4gYWRtaW4gbyBjdcOhbmRvIGVzdMOhIGVuIHVzdWFyaW8gbm9ybWFsOyBlbCBpY29ubyBkZSBhZG1pbiBlcyBkZSBjb25maWcsIG5vIHBhcmVjZSBhZG1pbsK7KS4KICAgRWwgYm90w7NuIGRpY2UgwqtBZG1pbsK7IGNvbiB1bmEgbGxhdmUsIHkgZGViYWpvIGRlIGxhIGNhYmVjZXJhIHVuYSBmcmFuamEgZGljZSBlbiBxdcOpIG1vZG8gZXN0w6FzIChzb2xvIGxhIHZlbiBsYXMKICAgY3VlbnRhcyBkZSBhZG1pbmlzdHJhY2nDs247IGxhcyB0aWVuZGFzIG5vKS4gKi8KI25hdi1hZG1pbntkaXNwbGF5OmlubGluZS1mbGV4ICFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7d2lkdGg6YXV0byAhaW1wb3J0YW50O2hlaWdodDozNHB4ICFpbXBvcnRhbnQ7cGFkZGluZzowIDEycHggIWltcG9ydGFudDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWFjY2VudCkgIWltcG9ydGFudDtib3JkZXItcmFkaXVzOjNweCAhaW1wb3J0YW50O2NvbG9yOnZhcigtLWFjY2VudCk7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDA7fQojbmF2LWFkbWluOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYWNjZW50KTtjb2xvcjojZmZmO30KLyogQXJyZWdsbyAwNi8xMC8yMDI2IChSYcO6bCwgZW50cmFuZG8gY29uIGxhIERlbW86IMKrbWUgc2FsZSBsbyBkZSBhZG1pbiwgbm8gcXVpZXJvIHF1ZSBzYWxnYSwgc29sbyBlbiBsb3MgMyBxdWUgc29uIGFwdG9zwrspOgogICBsYSByZWdsYSBkZSBhcnJpYmEgbGxldmEgZGlzcGxheSBjb24gIWltcG9ydGFudCB5IHNlIHNhbHRhYmEgZWwgLmhpZGRlbiBxdWUgZWwgcHJvZ3JhbWEgcG9uZSBhbCBib3TDs24gY3VhbmRvIGVudHJhIHVuYQogICB0aWVuZGEuIEFzw60gZWwgYm90w7NuIEFkbWluIHNvbG8gc2UgdmUgY29uIGxhcyAzIGN1ZW50YXMgZGUgYWRtaW5pc3RyYWNpw7NuIChSYcO6bCwgQW5kcmVhLCBMaWRpYSk7IGxhcyB0aWVuZGFzLCBudW5jYS4gKi8KI25hdi1hZG1pbi5oaWRkZW4sI2FkbWluLW5hdi13cmFwOmhhcygjbmF2LWFkbWluLmhpZGRlbil7ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7fQojbmF2LWFkbWluLmFjdGl2ZXtiYWNrZ3JvdW5kOnZhcigtLWFjY2VudCk7Y29sb3I6I2ZmZjt9CiNtb2RvLWJhbmRhe2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6OHB4IDE0cHg7ZmxleC13cmFwOndyYXA7cGFkZGluZzo5cHggMTZweDtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjM1O3RleHQtYWxpZ246Y2VudGVyO30KI21vZG8tYmFuZGEuaGlkZGVue2Rpc3BsYXk6bm9uZTt9CiNtb2RvLWJhbmRhLmFkbWlue2JhY2tncm91bmQ6dmFyKC0tYWNjZW50KTtjb2xvcjojZmZmO30KI21vZG8tYmFuZGEudGllbmRhe2JhY2tncm91bmQ6dmFyKC0tbmllYmxhLWNsYXJhKTtjb2xvcjojMmQzMDQzO30KI21vZG8tYmFuZGEgYnV0dG9ue2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo1MDA7cGFkZGluZzo1cHggMTJweDtib3JkZXItcmFkaXVzOjNweDtjdXJzb3I6cG9pbnRlcjtib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOmluaGVyaXQ7fQojbW9kby1iYW5kYS5hZG1pbiBidXR0b257YmFja2dyb3VuZDojZmZmO2NvbG9yOnZhcigtLWluayk7Ym9yZGVyLWNvbG9yOiNmZmY7fQojbW9kby1iYW5kYSBidXR0b246aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1pbmspO2NvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnZhcigtLWluayk7fQovKiBFbCBuw7ptZXJvIGRlbCBib3TDs24gQWRtaW4gc2Fsw61hIGNvcnRhZG8gKFJhw7psLCAwNS8xMCk6IGVuIHBhbnRhbGxhcyBkZSBtZW5vcyBkZSA2NDAgcHggdG9kb3MgbG9zIDxuYXY+IHNlIGRlc3BsYXphbgogICBkZSBsYWRvIChvdmVyZmxvdzphdXRvKSB5IGVzbyByZWNvcnRhYmEgZWwgbsO6bWVybywgcXVlIGFzb21hIHBvciBmdWVyYSBkZWwgYm90w7NuLiBFbCBkZSBBZG1pbiBubyBuZWNlc2l0YSBkZXNwbGF6YXJzZS4gKi8KI2FkbWluLW5hdi13cmFwe292ZXJmbG93OnZpc2libGUgIWltcG9ydGFudDtwYWRkaW5nLXRvcDo0cHg7fQojbmF2LWFkbWluLW5ldy1iYWRnZSwjbmF2LWFkbWluLXJlYWR5LWJhZGdle2JvcmRlci1yYWRpdXM6MCA2cHggMCA2cHggIWltcG9ydGFudDt9CiNtYWluLW5hdi5ibG9xdWVhZGEgYnV0dG9ue29wYWNpdHk6LjMyO3BvaW50ZXItZXZlbnRzOm5vbmU7fQojbWFpbi1uYXYuYmxvcXVlYWRhIGJ1dHRvbi5hY3RpdmU6OmFmdGVye2NvbnRlbnQ6bm9uZTt9CgovKiA9PT09PSBUYW5kYSAxIGRlbCByZXBhc28gVVgvVUkgKFJhw7psLCAwNS8xMC8yMDI2OiDCq29rIHRhbmRhIDHCuykuIERldGFsbGUgZW4gZG9jcy9yZXBhc28tdXgtdWktMjAyNi0xMC0wNS5tZCA9PT09PSAqLwo6cm9vdHsKICAtLW5pZWJsYS1vc2M6IzJkMzA0MzsgLS1hdmlzbzojOGE1YTAwOyAtLWF2aXNvLWNsYXJvOiNmZGUzYzI7IC0tb2s6IzJmNmI0NTsgLS1vay1jbGFybzojZTRlZmU0OwogIC0tZXJyb3I6I2EzMzUyYTsgLS1lcnJvci1jbGFybzojZjZlMGRjOwp9CmJ1dHRvbixpbnB1dCxzZWxlY3QsdGV4dGFyZWF7Y29sb3I6dmFyKC0taW5rKTt9ICAgICAgICAgICAvKiBuYWRhIGRlIG5lZ3JvIHB1cm8gZGVsIG5hdmVnYWRvciAqLwovKiBQMyDigJQgdW5hIHNvbGEgZXNjYWxhIGRlIHTDrXR1bG9zLCBjb21vIGVuIGxhIHdlYjogdMOtdHVsbyBkZSBibG9xdWUgMjYgcHgsIGFwYXJ0YWRvIDIwIHB4ICovCmgze2ZvbnQtc2l6ZToyNnB4O2xpbmUtaGVpZ2h0OjEuMTU7bWFyZ2luOjAgMCAxMnB4O30KI215LW9yZGVycy1ibG9jayA+IC5zZWN0aW9uLXRpdGxlOmZpcnN0LWNoaWxke2ZvbnQtc2l6ZToyNnB4O2xpbmUtaGVpZ2h0OjEuMTU7bWFyZ2luLWJvdHRvbToxMnB4O30KLnNlY3Rpb24tdGl0bGV7Zm9udC1zaXplOjIwcHg7bGluZS1oZWlnaHQ6MS4yO30KLyogUDcg4oCUIHBlc3Rhw7FhcyBkZSBBZG1pbjogdW5hIGZpbGEgZGUgdGV4dG8sIGxhIGFjdGl2YSBjb24gdW5hIHJheWEgZGUgc3UgY29sb3I7IGVuIGVsIG3Ds3ZpbCBzZSBkZXNsaXphIGRlIGxhZG8gKi8KLmFkbWluLXRhYnMtd3JhcHtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MjBweCAwIDA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tbGluZSk7fQouYWRtaW4tdGFic3tkaXNwbGF5OmZsZXg7b3ZlcmZsb3cteDphdXRvO3Njcm9sbGJhci13aWR0aDpub25lOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoO30KLmFkbWluLXRhYnM6Oi13ZWJraXQtc2Nyb2xsYmFye2Rpc3BsYXk6bm9uZTt9Ci5hZG1pbi10YWJzIGJ1dHRvbntmbGV4OjAgMCBhdXRvO2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7YmFja2dyb3VuZDpub25lO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDttYXJnaW46MDsKICBwYWRkaW5nOjEycHggMTZweDtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDA7Y29sb3I6dmFyKC0taW5rKTtjdXJzb3I6cG9pbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTt3aGl0ZS1zcGFjZTpub3dyYXA7fQouYWRtaW4tdGFicyBidXR0b246Zmlyc3QtY2hpbGR7cGFkZGluZy1sZWZ0OjJweDt9Ci5hZG1pbi10YWJzIGJ1dHRvbi5hY3RpdmV7Zm9udC13ZWlnaHQ6NjAwO30KLmFkbWluLXRhYnMgYnV0dG9uLmFjdGl2ZTo6YWZ0ZXJ7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjE2cHg7cmlnaHQ6MTZweDtib3R0b206MDtoZWlnaHQ6M3B4O2JhY2tncm91bmQ6dmFyKC0tdGFiY29sb3IpO30KLmFkbWluLXRhYnMgYnV0dG9uOmZpcnN0LWNoaWxkLmFjdGl2ZTo6YWZ0ZXJ7bGVmdDoycHg7fQpAbWVkaWEgKGhvdmVyOmhvdmVyKXsgLmFkbWluLXRhYnMgYnV0dG9uOm5vdCguYWN0aXZlKTpob3Zlcntjb2xvcjp2YXIoLS1hY2NlbnQpO30gfQouYXN1Yi1jb3VudDpub3QoOmVtcHR5KXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21pbi13aWR0aDoyMHB4O2hlaWdodDoyMHB4O3BhZGRpbmc6MCA2cHg7CiAgYm9yZGVyLXJhZGl1czp2YXIoLS1yLXMpO2JhY2tncm91bmQ6I2ZmYTgzMjtjb2xvcjp2YXIoLS1pbmspO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjcwMDt9Ci5hZG1pbi10YWJzLXdyYXA6OmJlZm9yZSwuYWRtaW4tdGFicy13cmFwOjphZnRlcntjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbToxcHg7d2lkdGg6MzBweDtwb2ludGVyLWV2ZW50czpub25lO29wYWNpdHk6MDsKICB0cmFuc2l0aW9uOm9wYWNpdHkgLjE1czt6LWluZGV4OjE7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtmb250LXNpemU6MjBweDtjb2xvcjp2YXIoLS1zdWF2ZSk7fQouYWRtaW4tdGFicy13cmFwOjpiZWZvcmV7bGVmdDowO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LHZhcigtLWJnKSA0NSUsdHJhbnNwYXJlbnQpO30KLmFkbWluLXRhYnMtd3JhcDo6YWZ0ZXJ7cmlnaHQ6MDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCx2YXIoLS1iZykgNDUlLHRyYW5zcGFyZW50KTt9Ci5hZG1pbi10YWJzLXdyYXAuc2Nyb2xsLWxlZnQ6OmJlZm9yZXtvcGFjaXR5OjE7Y29udGVudDon4oC5Jzt9Ci5hZG1pbi10YWJzLXdyYXAuc2Nyb2xsLXJpZ2h0OjphZnRlcntvcGFjaXR5OjE7Y29udGVudDon4oC6Jzt9Ci5hZG1pbi1pbmZve2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXN1YXZlKTtsaW5lLWhlaWdodDoxLjQ1O21hcmdpbjoxMHB4IDAgMjBweDttYXgtd2lkdGg6NzYwcHg7fQovKiBQMTcg4oCUIGF2aXNvcyBjb24gbG9zIGNvbG9yZXMgZGUgbGEgd2ViICovCi5hdmlzby13ZWJ7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS40NTttYXJnaW46MCAwIDE0cHg7cGFkZGluZzoxMHB4IDEycHg7YmFja2dyb3VuZDp2YXIoLS1uaWVibGEtY2xhcmEpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1zKTtjb2xvcjp2YXIoLS1uaWVibGEtb3NjKTt9Ci5tc2cub2t7YmFja2dyb3VuZDp2YXIoLS1vay1jbGFybyk7Y29sb3I6dmFyKC0tb2spO30KLm1zZy5lcnJ7YmFja2dyb3VuZDp2YXIoLS1lcnJvci1jbGFybyk7Y29sb3I6dmFyKC0tZXJyb3IpO30KLmNoYW4tYmFkZ2UubG93e2JhY2tncm91bmQ6dmFyKC0tZXJyb3ItY2xhcm8pO2NvbG9yOnZhcigtLWVycm9yKTt9Ci5jaGFuLWJhZGdlLmRlbW97YmFja2dyb3VuZDp2YXIoLS1hdmlzby1jbGFybyk7Y29sb3I6dmFyKC0tYXZpc28pO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDt9Ci5hY3Rsb2ctdGltZXtjb2xvcjp2YXIoLS1zdWF2ZSk7fSAuYWN0bG9nLXRleHR7Y29sb3I6dmFyKC0tc3VhdmUpO30gLmFjdGxvZy10ZXh0IHN0cm9uZ3tjb2xvcjp2YXIoLS1pbmspO30gLmFjdGxvZy1yb2xle2NvbG9yOnZhcigtLXN1YXZlKTt9Ci5hY3Rsb2ctcm93e2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tbGluZSk7fQouYWN0bG9nLWRvdHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDo5cHg7aGVpZ2h0OjlweDtib3JkZXItcmFkaXVzOjJweDttYXJnaW4tdG9wOjRweDt9Ci5vcmRlci1saW5lLXJlbW92ZXtib3JkZXItY29sb3I6dmFyKC0tZXJyb3ItY2xhcm8pO2NvbG9yOnZhcigtLWVycm9yKTt9Ci5vcmRlci1saW5lLXJlbW92ZTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWVycm9yLWNsYXJvKTt9Ci5zZWN0aW9uLWludHJvLGZvcm0uYmxvY2sgbGFiZWwsLmJpbGxpbmctaGludCwuZm10LXNpemUsLmNhcmQgLm1ldGEgLnJlZiwucGVkY2FyZC1zdW1tYXJ5LC5wZWRjYXJkLWNhcmV0LC5pbmZvLWhpbnQgLmluZm8tbGFiZWwsCi5hY3Rsb2ctZmlsdGVycyBsYWJlbCwub3JkZXItZW1wdHl7Y29sb3I6dmFyKC0tc3VhdmUpO30KLyogUDIgKGIpIOKAlCBhdmlzbyB2aXNpYmxlIGJham8gZWwgYm90w7NuIMKrSW1wcmltaXLCuyBkZSBBZG1pbiAqLwoucGlzdGEtaW1wcmltaXJ7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tc3VhdmUpO21hcmdpbjotMnB4IDAgMTBweDtsaW5lLWhlaWdodDoxLjQ7fQovKiBQOSDigJQgwqtFbnZpYXIgcGVkaWRvwrsgLyDCq0VudmlhciByZXBvcnRlwrsgZW4gZ3JpcyBtaWVudHJhcyBubyBoYXlhIG5hZGEgKi8KLmVudmlhci1maWxhe2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweCAxMnB4O2ZsZXgtd3JhcDp3cmFwO30KLmVudmlhci1waXN0YXtmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1zdWF2ZSk7fQouYnRuOmRpc2FibGVkLC5idG46ZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jcmVtYS0yKTtjb2xvcjp2YXIoLS1zdWF2ZSk7Y3Vyc29yOm5vdC1hbGxvd2VkO30KLyogQnVzY2Fkb3IgZGUgQWRtaW4g4oaSIENhdMOhbG9nbzogYSBsbyBhbmNobyAoc2UgY29ydGFiYSDCq0J1c2NhciBwb3IgcmVmZXJlbmNpYSBv4oCmwrspICovCiNhZG1pbi1pbGwtc2VhcmNoe3dpZHRoOjEwMCU7bWF4LXdpZHRoOjQyMHB4ICFpbXBvcnRhbnQ7fQovKiDCq0zDoW1pbmFzIHBhcmEgaW1wcmltaXLCuyByZWhlY2hhIChSYcO6bCwgMDUvMTA6IMKraGF5IHF1ZSBhcnJlZ2xhcmxvIGJpZW7CuywgwqtkZW1hc2lhZGFzIGNvc2FzLCBib3RvbmVzwrspICovCi5pbXAtZXN0YWRve2ZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0OjEuNDU7bWFyZ2luOjAgMCAxMnB4O30KLmltcC1lc3RhZG8gLmltcC1zdWJ7Y29sb3I6dmFyKC0tc3VhdmUpO2ZvbnQtc2l6ZToxM3B4O30KLmltcC1hY2Npb25lc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjZweCAxNHB4O2FsaWduLWl0ZW1zOmNlbnRlcjt9Ci5idG4tZW5sYWNle2JhY2tncm91bmQ6bm9uZTtib3JkZXI6MDtwYWRkaW5nOjRweCAycHg7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLWluayk7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt0ZXh0LXVuZGVybGluZS1vZmZzZXQ6M3B4O2N1cnNvcjpwb2ludGVyO30KLmJ0bi1lbmxhY2U6aG92ZXJ7Y29sb3I6dmFyKC0tYWNjZW50KTt9Ci5waXN0YS1pbXByaW1pcnttYXJnaW46NnB4IDAgMCAhaW1wb3J0YW50O30KLmltcC1wYXBlbHtiYWNrZ3JvdW5kOnZhcigtLWNyZW1hLTIpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1zKTtwYWRkaW5nOjEwcHggMTRweDttYXJnaW46MTRweCAwO2ZvbnQtc2l6ZToxM3B4O30KLmltcC1wYXBlbCB0YWJsZXt3aWR0aDphdXRvO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Zm9udC1zaXplOjEzcHg7Ym9yZGVyLXJhZGl1czowO30KLmltcC1wYXBlbCB0aCwuaW1wLXBhcGVsIHRkLC5pbXAtcGFwZWwgdHJ7YmFja2dyb3VuZDp0cmFuc3BhcmVudCAhaW1wb3J0YW50O2JvcmRlcjowO3BhZGRpbmc6M3B4IDIycHggM3B4IDA7dGV4dC1hbGlnbjpsZWZ0O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt9Ci5pbXAtcGFwZWwgdGh7Zm9udC13ZWlnaHQ6NjAwO30KLmltcC1wYXBlbCB0ZDpmaXJzdC1jaGlsZHtjb2xvcjp2YXIoLS1zdWF2ZSk7fQouaW1wLXBhcGVsIGlucHV0e3dpZHRoOjY0cHg7cGFkZGluZzo0cHggNnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czozcHg7YmFja2dyb3VuZDojZmZmO2ZvbnQ6aW5oZXJpdDt9Ci5pbXAtcGFwZWwgLmZhbHRhe2NvbG9yOnZhcigtLWVycm9yKTtmb250LXdlaWdodDo2MDA7fQouaW1wLXBhcGVsIC5xdWVkYXtjb2xvcjp2YXIoLS1vayk7fQouaW1wLW5vdGF7Y29sb3I6dmFyKC0tc3VhdmUpO2ZvbnQtc2l6ZToxMnB4O21hcmdpbjo2cHggMCAwO30KLmltcC1hdmlzb3ttYXJnaW4tdG9wOjhweDtiYWNrZ3JvdW5kOnZhcigtLWF2aXNvLWNsYXJvKTtib3JkZXItcmFkaXVzOnZhcigtLXItcyk7cGFkZGluZzo2cHggMTBweDtjb2xvcjp2YXIoLS1hdmlzbyk7Zm9udC1zaXplOjEycHg7fQoudGFibGEtaW1wcmltaXIgdGR7dmVydGljYWwtYWxpZ246bWlkZGxlO30KLnRhYmxhLWltcHJpbWlyIC5je3RleHQtYWxpZ246Y2VudGVyO30KLnRhYmxhLWltcHJpbWlyIC50aS1jaGVja3t3aWR0aDo0MHB4O3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmctbGVmdDo2cHg7cGFkZGluZy1yaWdodDo2cHg7fQoudGFibGEtaW1wcmltaXIgLnRpLWNoZWNrIGlucHV0e3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7Y3Vyc29yOnBvaW50ZXI7YWNjZW50LWNvbG9yOnZhcigtLWluayk7fQoudGFibGEtaW1wcmltaXIgLnRpLXJlZntkaXNwbGF5OmJsb2NrO2ZvbnQtd2VpZ2h0OjYwMDt9Ci50YWJsYS1pbXByaW1pciAudGktbm9tYnJle2Rpc3BsYXk6YmxvY2s7Y29sb3I6dmFyKC0tc3VhdmUpO2ZvbnQtc2l6ZToxMnB4O30KLnRhYmxhLWltcHJpbWlyIC50aS1taW5pe2Rpc3BsYXk6bm9uZTt9Ci50YWJsYS1pbXByaW1pciAudGktcGFyYXtmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7fQoudGFibGEtaW1wcmltaXIgdHIuaGVjaGEgdGQ6bm90KC50aS1jaGVjayl7b3BhY2l0eTouNDU7fQoudGFibGEtaW1wcmltaXIgdHIuaGVjaGEgLnRpLW5vbWJyZXt0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdoO30KLnRpLXBpbGx7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWluLXdpZHRoOjI4cHg7cGFkZGluZzoycHggOHB4O2JvcmRlci1yYWRpdXM6dmFyKC0tci1zKTtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjE0cHg7fQoudGktcGlsbC5mYWx0YXtiYWNrZ3JvdW5kOnZhcigtLWVycm9yLWNsYXJvKTtjb2xvcjp2YXIoLS1lcnJvcik7fQoudGktcGlsbC5uYWRhe2JhY2tncm91bmQ6dmFyKC0tb2stY2xhcm8pO2NvbG9yOnZhcigtLW9rKTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7fQovKiBMYSB0YWJsYSBzZSBhZGFwdGEgYWwgYW5jaG8gZGUgc3UgdGFyamV0YSAoZW4gZWwgb3JkZW5hZG9yIHZhIGVuIG1lZGlhIGNvbHVtbmEpLCBubyBhbCBkZSBsYSBwYW50YWxsYSAqLwojYWRtaW4tcHJpbnQtc3VtbWFyeXtjb250YWluZXItdHlwZTppbmxpbmUtc2l6ZTt9CkBjb250YWluZXIgKG1heC13aWR0aDo2NDBweCl7CiAgLnRhYmxhLWltcHJpbWlyIHRoZWFkIHRoOm5vdCgudGktY2hlY2spe2ZvbnQtc2l6ZTowO30KICAudGFibGEtaW1wcmltaXIgdGhlYWQgdGgudGktaW1we2ZvbnQtc2l6ZToxMXB4O30KICAudGFibGEtaW1wcmltaXIgLnRpLWZtdCwudGFibGEtaW1wcmltaXIgLnRpLW4sLnRhYmxhLWltcHJpbWlyIC50aS1wYXJhe2Rpc3BsYXk6bm9uZTt9CiAgLnRhYmxhLWltcHJpbWlyIC50aS1taW5pe2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tc3VhdmUpO21hcmdpbi10b3A6MnB4O30KfQovKiBFbiBwYW50YWxsYXMgdMOhY3RpbGVzIGVsIMKrcGFzYXIgZWwgcmF0w7Nuwrsgc2UgcXVlZGEgcGVnYWRvIHRyYXMgdG9jYXI6IGxvcyBib3RvbmVzIHZ1ZWx2ZW4gYSBzdSBjb2xvciAqLwpAbWVkaWEgKGhvdmVyOm5vbmUpewogIC5idG46aG92ZXIsLmdhdGUgZm9ybSBidXR0b25bdHlwZT1zdWJtaXRdOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tcm9zYSk7Y29sb3I6dmFyKC0taW5rKTt9CiAgLmJ0bi5zZWNvbmRhcnk6aG92ZXJ7YmFja2dyb3VuZDojZmZmO2NvbG9yOnZhcigtLWluayk7Ym9yZGVyLWNvbG9yOnZhcigtLWxpbmUpO30KICAjbW9kby1iYW5kYS5hZG1pbiBidXR0b246aG92ZXJ7YmFja2dyb3VuZDojZmZmO2NvbG9yOnZhcigtLWluayk7Ym9yZGVyLWNvbG9yOiNmZmY7fQogICNtb2RvLWJhbmRhLnRpZW5kYSBidXR0b246aG92ZXJ7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjppbmhlcml0O2JvcmRlci1jb2xvcjpjdXJyZW50Q29sb3I7fQp9Ci8qIFA1IHkgUDYg4oCUIGVuIHBhbnRhbGxhcyB0w6FjdGlsZXM6IGxldHJhIGRlIDE2IHB4IGVuIGxvcyBjYW1wb3MgKHNpIG5vLCBlbCBpUGhvbmUgYW1wbMOtYSBsYSBwYW50YWxsYSBhbCBlc2NyaWJpcikKICAgeSBib3RvbmVzIGRlIGFsIG1lbm9zIDQ0IHB4IGRlIGFsdG8sIGxvIGPDs21vZG8gcGFyYSBlbCBkZWRvICovCkBtZWRpYSAocG9pbnRlcjpjb2Fyc2UpewogIGlucHV0Om5vdChbdHlwZT1jaGVja2JveF0pOm5vdChbdHlwZT1yYWRpb10pOm5vdChbdHlwZT1yYW5nZV0pLHNlbGVjdCx0ZXh0YXJlYXtmb250LXNpemU6MTZweCAhaW1wb3J0YW50O30KICAuYnRuLC5zaXplYnRucyBidXR0b24sbmF2IGJ1dHRvbiwubGFuZy1zd2l0Y2ggYnV0dG9uLCNtb2RvLWJhbmRhIGJ1dHRvbiwub3JkZXItbGluZS1yZW1vdmUsLmFkbWluLXRhYnMgYnV0dG9uLC5wZWRjYXJkLWhlYWRlcnttaW4taGVpZ2h0OjQ0cHg7fQogIC5sYW5nLXN3aXRjaCBidXR0b257bWluLXdpZHRoOjM0cHg7cGFkZGluZy1sZWZ0OjRweDtwYWRkaW5nLXJpZ2h0OjRweDt9CiAgLmxhbmctc3dpdGNoLWhlYWRlcnttYXJnaW4tcmlnaHQ6MnB4O30KfQovKiBFbiBlbCBtw7N2aWwsIGNvbiBBZG1pbiBhIGxhIHZpc3RhLCBsYSBjYWJlY2VyYSBubyBjYWLDrWEgZW4gdW5hIGZpbGE6IGVsIG5vbWJyZSBkZSBsYSBjdWVudGEgc2UgcXVlZGEgc29sbyBlbiBsYQogICBpbmljaWFsIChhbCB0b2NhcmxhIHNhbGUgZWwgbWVuw7ogY29uIGVsIG5vbWJyZSkuIExhcyB0aWVuZGFzIG5vIHRpZW5lbiBlbCBib3TDs24gQWRtaW4geSBzaWd1ZW4gdmllbmRvIHN1IG5vbWJyZS4gKi8KQG1lZGlhIChtYXgtd2lkdGg6NDIwcHgpewogIC5oZWFkZXItaW5uZXI6aGFzKCNuYXYtYWRtaW46bm90KC5oaWRkZW4pKSAjaGVhZGVyLXVzZXItbmFtZXtkaXNwbGF5Om5vbmU7fQogICNuYXYtYWRtaW57aGVpZ2h0OjQ0cHggIWltcG9ydGFudDt9CiAgLnF0eS1zdGVwcGVyIGJ1dHRvbnt3aWR0aDo0NHB4O2hlaWdodDo0NHB4O30KICAucXR5LXN0ZXBwZXIgaW5wdXR7aGVpZ2h0OjQ0cHggIWltcG9ydGFudDt9CiAgaW5wdXRbdHlwZT1jaGVja2JveF0saW5wdXRbdHlwZT1yYWRpb117d2lkdGg6MjBweDtoZWlnaHQ6MjBweDt9Cn0KCi8qID09PT09IFRhbmRhIDIgZGVsIHJlcGFzbyBVWC9VSSAoUmHDumwsIDA2LzEwLzIwMjY6IMKrZGFsZcK7KS4gRGV0YWxsZSBlbiBkb2NzL3JlcGFzby11eC11aS0yMDI2LTEwLTA1Lm1kID09PT09ICovCi8qIFAxMSDigJQgcGVkaWRvIGVuIGZpbGFzIGNvbXBhY3RhcywgdG90YWxlcyBhcnJpYmE7IGNvbiBwZWRpZG8gZW4gY3Vyc28sIMKrTnVldm8gcGVkaWRvwrsgdmEgcHJpbWVybyAqLwojdGFiLXBlZGlkbzpub3QoLmhpZGRlbil7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt9CiN0YWItcGVkaWRvLmNvbi1wZWRpZG8gI29yZGVyLWZvcm17b3JkZXI6LTE7fQoucGVkaWRvLXJlc3VtZW57Zm9udC1zaXplOjE0cHg7bWFyZ2luOjAgMCAxMHB4O3BhZGRpbmc6OXB4IDEycHg7YmFja2dyb3VuZDp2YXIoLS1jcmVtYS0yKTtib3JkZXItcmFkaXVzOnZhcigtLXItcyk7fQoub2wtY29tcGFjdGF7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4O3BhZGRpbmc6OHB4IDEwcHg7bWFyZ2luLWJvdHRvbTo4cHg7fQoub2wtY29tcGFjdGEgLm9yZGVyLWxpbmUtdGh1bWJ7ZmxleDowIDAgNDhweDt3aWR0aDo0OHB4O2hlaWdodDo2NHB4O30KLm9sLWN1ZXJwb3tmbGV4OjE7bWluLXdpZHRoOjA7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4IDE2cHg7fQoub2wtbm9tYnJle2ZsZXg6MSAxIDE3MHB4O21pbi13aWR0aDowO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuMzt9Ci5vbC1yZWZ7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS1zdWF2ZSk7fQpmb3JtLmJsb2NrIC5vbC1lbGVnaXJ7ZmxleDoxIDEgMjIwcHg7d2lkdGg6YXV0bzttaW4td2lkdGg6MDt9Ci5vbC1jb250cm9sZXN7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDt9CmZvcm0uYmxvY2sgLm9sLWZtdHt3aWR0aDphdXRvO30KLm9sLWZtdC1maWpve2ZvbnQtc2l6ZToxNHB4O21pbi13aWR0aDozNHB4O30KLm9sLXF1aXRhcntmbGV4OjAgMCBhdXRvO2FsaWduLXNlbGY6Y2VudGVyO3dpZHRoOjM2cHg7aGVpZ2h0OjM2cHg7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyLXJhZGl1czozcHg7CiAgY29sb3I6dmFyKC0tc3VhdmUpO2ZvbnQtc2l6ZToyMnB4O2xpbmUtaGVpZ2h0OjE7Y3Vyc29yOnBvaW50ZXI7fQoub2wtcXVpdGFyOmhvdmVye2NvbG9yOnZhcigtLWVycm9yKTtib3JkZXItY29sb3I6dmFyKC0tZXJyb3ItY2xhcm8pO2JhY2tncm91bmQ6dmFyKC0tZXJyb3ItY2xhcm8pO30KLyogRW4gZWwgbcOzdmlsIG5vIGNhYmUgdG9kbyBlbiB1bmEgZmlsYTogbm9tYnJlIHkgwqvDl8K7IGFycmliYSwgZm9ybWF0byB5IGNhbnRpZGFkIGRlYmFqbyAoYW50ZXMgbGEgwqvDl8K7IHBpc2FiYSBlbCDCqyvCuykgKi8KQG1lZGlhIChtYXgtd2lkdGg6NTIwcHgpewogIC5vbC1jb21wYWN0YXtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjQ4cHggbWlubWF4KDAsMWZyKSBhdXRvO2dyaWQtdGVtcGxhdGUtYXJlYXM6ImZvdG8gbm9tYnJlIHF1aXRhciIgImZvdG8gY29udHJvbGVzIGNvbnRyb2xlcyI7Z2FwOjZweCAxMHB4O2FsaWduLWl0ZW1zOmNlbnRlcjt9CiAgLm9sLWNvbXBhY3RhIC5vcmRlci1saW5lLXRodW1ie2dyaWQtYXJlYTpmb3RvO2FsaWduLXNlbGY6c3RhcnQ7fQogIC5vbC1jb21wYWN0YSAub2wtY3VlcnBve2Rpc3BsYXk6Y29udGVudHM7fQogIC5vbC1jb21wYWN0YSAub2wtbm9tYnJlLC5vbC1jb21wYWN0YSAub2wtZWxlZ2lye2dyaWQtYXJlYTpub21icmU7fQogIC5vbC1jb21wYWN0YSAub2wtY29udHJvbGVze2dyaWQtYXJlYTpjb250cm9sZXM7fQogIC5vbC1jb21wYWN0YSAub2wtcXVpdGFye2dyaWQtYXJlYTpxdWl0YXI7fQp9Ci8qIFAxMyDigJQgwqtFbiB0dSBwZWRpZG86IE7CuyBiYWpvIGVsIG5vbWJyZSBlbiBlbCBjYXTDoWxvZ28gKi8KLmNhcmQgLmVuLXBlZGlkb3tkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tdG9wOjRweDtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo2MDA7cGFkZGluZzoycHggN3B4O2JvcmRlci1yYWRpdXM6dmFyKC0tci1zKTsKICBiYWNrZ3JvdW5kOnZhcigtLWVycm9yLWNsYXJvKTtjb2xvcjp2YXIoLS1hY2NlbnQpO30KLyogUDEwIOKAlCBheXVkYSBxdWUgc2UgcHVlZGUgY2VycmFyOyBwZXN0YcOxYXMgeSBidXNjYWRvciBmaWpvcyBiYWpvIGxhIGNhYmVjZXJhIGFsIGJhamFyICovCi5pbnRyby1jZXJyYWJsZXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6MTBweDt9Ci5pbnRyby1jZXJyYWJsZSAuc2VjdGlvbi1pbnRyb3tmbGV4OjE7bWFyZ2luOjAgMCAxNHB4O30KLmludHJvLWNlcnJhcntmbGV4OjAgMCBhdXRvO3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7bWFyZ2luLXRvcDotNnB4O2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtjb2xvcjp2YXIoLS1zdWF2ZSk7Zm9udC1zaXplOjIwcHg7bGluZS1oZWlnaHQ6MTtjdXJzb3I6cG9pbnRlcjtib3JkZXItcmFkaXVzOjNweDt9Ci5pbnRyby1jZXJyYXI6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jcmVtYS0yKTtjb2xvcjp2YXIoLS1pbmspO30KLmNhdGFsb2dvLWJhcnJhe3Bvc2l0aW9uOnN0aWNreTt0b3A6dmFyKC0tYWx0by1jYWJlY2VyYSwwcHgpO3otaW5kZXg6NTtiYWNrZ3JvdW5kOnZhcigtLWJnKSB2YXIoLS1wYXBlbCk7cGFkZGluZzo4cHggMCAycHg7bWFyZ2luOi04cHggMCAwO30KLmNhdGFsb2dvLWJhcnJhIC5jYXRhbG9nLXNlYXJjaHttYXJnaW4tYm90dG9tOjhweDt9Ci8qIFAxNCDigJQgYXJ0w61jdWxvcyBkZSBBZG1pbiBlbiBsaXN0YSBjb21wYWN0YTogwqtFZGl0YXLCuyBhIGxhIHZpc3RhLCBsbyBkZW3DoXMgZW4gwqtNw6FzwrsgKi8KLmFkbWluLWl0ZW17cGFkZGluZzo2cHggMTBweCAhaW1wb3J0YW50O2FsaWduLWl0ZW1zOmNlbnRlciAhaW1wb3J0YW50O30KLmFkbWluLWl0ZW0tdGh1bWJ7ZmxleDowIDAgNTZweCAhaW1wb3J0YW50O30KLmFkbWluLWl0ZW0tdGh1bWIgaW1nLC5hZG1pbi1pdGVtLXRodW1iID4gZGl2e3dpZHRoOjU2cHggIWltcG9ydGFudDtoZWlnaHQ6NzVweCAhaW1wb3J0YW50O30KLmFkbWluLWl0ZW06aGFzKD4gLmFkbWluLWl0ZW0tYm9keSkgPiAuYWRtaW4taXRlbS1ib2R5e2ZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweCAxNHB4O3BhZGRpbmctdG9wOjA7fQouYWRtaW4taXRlbS10aXRsZXtmbGV4OjEgMSAyMjBweDt9Ci5hZG1pbi1pdGVtLWFjdGlvbnN7bWFyZ2luLXRvcDowO2FsaWduLWl0ZW1zOmNlbnRlcjt9Ci5hZG1pbi1pdGVtLXN0b2Nre21heC13aWR0aDo5MHB4O30KLm1hcy1hY2Npb25lc3twb3NpdGlvbjpyZWxhdGl2ZTt9Ci5tYXMtYWNjaW9uZXMgPiBzdW1tYXJ5e2xpc3Qtc3R5bGU6bm9uZTtjdXJzb3I6cG9pbnRlcjt9Ci5tYXMtYWNjaW9uZXMgPiBzdW1tYXJ5Ojotd2Via2l0LWRldGFpbHMtbWFya2Vye2Rpc3BsYXk6bm9uZTt9Ci5tYXMtYWNjaW9uZXMgPiBzdW1tYXJ5OjptYXJrZXJ7Y29udGVudDonJzt9Ci5tYXMtbWVudXtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDpjYWxjKDEwMCUgKyA0cHgpO3otaW5kZXg6NjtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItcyk7CiAgYm94LXNoYWRvdzowIDZweCAxOHB4IHJnYmEoMjQsMjQsMjQsLjEyKTttaW4td2lkdGg6MTcwcHg7cGFkZGluZzo0cHggMDt9Ci5tYXMtbWVudSBidXR0b257ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO3RleHQtYWxpZ246bGVmdDtiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOjA7cGFkZGluZzoxMHB4IDE0cHg7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxNHB4O2N1cnNvcjpwb2ludGVyO2NvbG9yOnZhcigtLWluayk7fQoubWFzLW1lbnUgYnV0dG9uOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tY3JlbWEtMik7fQouZXN0YWRvLW9mZntiYWNrZ3JvdW5kOnZhcigtLWNyZW1hLTIpO2NvbG9yOnZhcigtLXN1YXZlKTt9Ci8qIExhIHRhcmpldGEgcXVlIGNvbnRpZW5lIGxhIGxpc3RhIHJlY29ydGEgbG8gcXVlIHNvYnJlc2FsZSAob3ZlcmZsb3c6aGlkZGVuKTogZWwgbWVuw7ogwqtNw6FzwrsgZGUgbGFzIMO6bHRpbWFzIGZpbGFzIHNlIGNvcnRhYmEgKi8KLnBlZGNhcmQ6aGFzKC5tYXMtYWNjaW9uZXMpe292ZXJmbG93OnZpc2libGU7fQoucGVkY2FyZDpoYXMoLm1hcy1hY2Npb25lcykgPiAucGVkY2FyZC1oZWFkZXJ7Ym9yZGVyLXJhZGl1czowIDE4cHggMCAwO30KLmVzdGFkby1uZXd7YmFja2dyb3VuZDp2YXIoLS1hY2NlbnQpO2NvbG9yOiNmZmY7fQovKiBJbnZlbnRhcmlvOiBjYWRhIGFydMOtY3VsbyBlbiB1bmEgZmlsYSAoZm90byBwZXF1ZcOxYSBhIGxhIGl6cXVpZXJkYSksIHZhcmlhcyBjb2x1bW5hcyBlbiBlbCBvcmRlbmFkb3IgeSB1bmEgZW4gZWwgbcOzdmlsICovCi5zdG9jay1ncmlke2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maWxsLG1pbm1heCgyNDBweCwxZnIpKSAhaW1wb3J0YW50O2dhcDo4cHggIWltcG9ydGFudDt9Ci5zdG9jay1ncmlkID4gZGl2e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpzdHJldGNoO30KLnN0b2NrLWdyaWQgPiBkaXYgPiA6Zmlyc3QtY2hpbGR7ZmxleDowIDAgNTJweDt3aWR0aDo1MnB4ICFpbXBvcnRhbnQ7YXNwZWN0LXJhdGlvOjMvNDtvYmplY3QtZml0OmNvbnRhaW4gIWltcG9ydGFudDt9Ci5zdG9jay1ncmlkID4gZGl2ID4gOmxhc3QtY2hpbGR7ZmxleDoxO21pbi13aWR0aDowO30KLyogUDE1IOKAlCB2ZW50YW5pdGEgcHJvcGlhIHBhcmEgY29uZmlybWFyIG8gZXNjcmliaXIgKGVuIHZleiBkZSBsYXMgZGVsIG5hdmVnYWRvcikgKi8KLmRsZy1mb25kb3twb3NpdGlvbjpmaXhlZDtpbnNldDowO3otaW5kZXg6MTAwMTtiYWNrZ3JvdW5kOnJnYmEoMjQsMjQsMjQsLjQ1KTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZzoxNnB4O30KLmRsZ3tiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czp2YXIoLS1yKTttYXgtd2lkdGg6NDIwcHg7d2lkdGg6MTAwJTtwYWRkaW5nOjIwcHggMjBweCAxNnB4O2JveC1zaGFkb3c6MCAxMHB4IDMwcHggcmdiYSgyNCwyNCwyNCwuMik7fQouZGxnLXRleHRve21hcmdpbjowIDAgMTRweDtmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxLjQ1O3doaXRlLXNwYWNlOnByZS1saW5lO30KLmRsZy1jYW1wb3t3aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjEwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjNweDtmb250OmluaGVyaXQ7bWFyZ2luOjAgMCAxNHB4O30KLmRsZy1ib3RvbmVze2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDt9CiNzdG9jay10b2FzdHt3aGl0ZS1zcGFjZTpwcmUtbGluZTt9CkBtZWRpYSAocG9pbnRlcjpjb2Fyc2UpewogIC5vbC1xdWl0YXJ7d2lkdGg6NDRweDtoZWlnaHQ6NDRweDt9CiAgLnN0b2NrLWdyaWQgYnV0dG9ue21pbi13aWR0aDozNHB4O21pbi1oZWlnaHQ6MzRweDt9Cn0KLyogMDYvMTA6IGVuIGxhIGZpY2hhLCBjdcOhbnRhcyBsZSBxdWVkYW4gYSBsYSB0aWVuZGEgeSBkZSBxdcOpIHRhbWHDsW8gKi8KLmZpY2hhLWVuLXRpZW5kYXttYXJnaW4tdG9wOjZweDtmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1uaWVibGEtb3NjKTtiYWNrZ3JvdW5kOnZhcigtLW5pZWJsYS1jbGFyYSk7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzo0cHggMTBweDtib3JkZXItcmFkaXVzOnZhcigtLXItcyk7fQoKLyogPT09PT0gVGFuZGEgMyBkZWwgcmVwYXNvIFVYL1VJIChSYcO6bCwgMDYvMTAvMjAyNjogwqtzw7piZWxvIHkgc2lndWXCuykgPT09PT0gKi8KLyogUDE2IOKAlCBQcmVwYXJhY2nDs24gYSBsbyBhbmNobzogdW4gcGVkaWRvIGRlYmFqbyBkZSBvdHJvLCBjb24gc3VzIGFydMOtY3Vsb3MgYSBsYSB2aXN0YSAqLwojYWRtaW4tc3ViLXBlZGlkb3MgLnBlZGlkb3MtZ3JpZHtmbGV4LWRpcmVjdGlvbjpjb2x1bW47fQojYWRtaW4tc3ViLXBlZGlkb3MgLnBlZGlkb3MtY29se2ZsZXg6MSAxIGF1dG87bWluLXdpZHRoOjA7d2lkdGg6MTAwJTt9Ci5wZC1wZWRpZG97Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItcyk7cGFkZGluZzoxMHB4IDEycHg7bWFyZ2luOjEwcHggMDtiYWNrZ3JvdW5kOiNmZmY7fQoucGQtcGVkaWRvLmxpc3Rve2JhY2tncm91bmQ6dmFyKC0tb2stY2xhcm8pO30KLnBkLWNhYmV6YXtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDo4cHggMTRweDt9Ci5wZC1xdWllbntmb250LXNpemU6MTRweDt9Ci5wZC1jdWVudGF7Y29sb3I6dmFyKC0tc3VhdmUpO2ZvbnQtc2l6ZToxM3B4O21hcmdpbi1sZWZ0OjZweDt9Ci5wZC1saXN0b3tjb2xvcjp2YXIoLS1vayk7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxM3B4O30KLnBkLWFjY2lvbmVze2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDt9Ci5wZC1lc3RhZG97ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXN1YXZlKTt9Ci5wZC1lc3RhZG8gc2VsZWN0e3BhZGRpbmc6NnB4IDhweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6M3B4O2ZvbnQ6aW5oZXJpdDtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6dmFyKC0taW5rKTt9Ci5wZC1ub3Rhc3ttYXJnaW4tdG9wOjhweDtmb250LXNpemU6MTNweDtiYWNrZ3JvdW5kOnZhcigtLWF2aXNvLWNsYXJvKTtjb2xvcjp2YXIoLS1hdmlzbyk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLXMpO3BhZGRpbmc6NnB4IDEwcHg7fQoucGQtbGluZWFze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZmlsbCxtaW5tYXgoMjUwcHgsMWZyKSk7Z2FwOjRweCAxNnB4O21hcmdpbi10b3A6MTBweDt9Ci5wZC1saW5lYXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O3BhZGRpbmc6NHB4IDA7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tbGluZSk7Zm9udC1zaXplOjEzcHg7fQoucGQtbGluZWEgaW1nLC5wZC1zaW5mb3Rve2ZsZXg6MCAwIDMwcHg7d2lkdGg6MzBweDtoZWlnaHQ6NDBweDtvYmplY3QtZml0OmNvbnRhaW47YmFja2dyb3VuZDp2YXIoLS1jcmVtYS0yKTtib3JkZXItcmFkaXVzOjJweDt9Ci5wZC10ZXh0b3tmbGV4OjE7bWluLXdpZHRoOjA7bGluZS1oZWlnaHQ6MS4yNTt9Ci5wZC1yZWZ7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS1zdWF2ZSk7fQoucGQtZm10e2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTttaW4td2lkdGg6MzRweDt0ZXh0LWFsaWduOnJpZ2h0O30KLnBkLWNhbnR7bWluLXdpZHRoOjMwcHg7dGV4dC1hbGlnbjpyaWdodDt9Ci5tYXMtbWVudSBidXR0b24ucGVsaWdyb3tjb2xvcjp2YXIoLS1lcnJvcik7fQovKiBQMTgg4oCUIEVzdGFkw61zdGljYXM6IHBlcmlvZG8sIGTDs25kZSB5IHRvdGFsICovCi5zdGF0cy1maWx0cm9zMntkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjE2cHggMjRweDthbGlnbi1pdGVtczpmbGV4LWVuZDttYXJnaW46LTRweCAwIDE0cHg7fQouc3RhdHMtZmlsdHJvczIgbGFiZWx7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS1zdWF2ZSk7bWFyZ2luLWJvdHRvbTo1cHg7fQouc3RhdHMtZmlsdHJvczIgc2VsZWN0e3BhZGRpbmc6N3B4IDhweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6M3B4O2ZvbnQ6aW5oZXJpdDtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6dmFyKC0taW5rKTt9Ci5zdGF0cy10b3RhbHtmb250LXNpemU6MTRweDttYXJnaW46MCAwIDEycHg7fQovKiBQMjAg4oCUIGhvamEgZGUgcGVkaWRvIHLDoXBpZGEgKHZpc3RhIMKrTGlzdGHCuyBkZWwgY2F0w6Fsb2dvKSAqLwouZ3JpZC5saXN0YXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO2dhcDowO30KLmZpbGEtaG9qYXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4O3BhZGRpbmc6OHB4IDA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tbGluZSk7fQouZmgtZm90b3tmbGV4OjAgMCA0OHB4O3dpZHRoOjQ4cHg7aGVpZ2h0OjY0cHg7cGFkZGluZzowO2JvcmRlcjowO2JhY2tncm91bmQ6dmFyKC0tY3JlbWEtMik7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLXMpO292ZXJmbG93OmhpZGRlbjtjdXJzb3I6cG9pbnRlcjt9Ci5maC1mb3RvIGltZ3t3aWR0aDoxMDAlO2hlaWdodDoxMDAlO29iamVjdC1maXQ6Y29udGFpbjtkaXNwbGF5OmJsb2NrO30KLmZoLWZvdG8gLm5vaW1ne3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO30KLmZoLW5vbWJyZXtmbGV4OjEgMSAxNjBweDttaW4td2lkdGg6MDtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2MDA7bGluZS1oZWlnaHQ6MS4zO2N1cnNvcjpwb2ludGVyO30KLmZoLXJlZntkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjp2YXIoLS1zdWF2ZSk7fQouZmgtbmV3e2NvbG9yOnZhcigtLWFjY2VudCk7Zm9udC13ZWlnaHQ6NzAwO30KLmZoLXRpZW5kYXtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjp2YXIoLS1uaWVibGEpO30KLmZoLWZvcm1hdG9ze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6NnB4IDE0cHg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO30KLmZoLWZtdHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7fQouZmgtZm10LW5vbWJyZXtmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7bWluLXdpZHRoOjM0cHg7dGV4dC1hbGlnbjpyaWdodDt9Ci5maC1mbXQuY29uIC5maC1mbXQtbm9tYnJle2NvbG9yOnZhcigtLWluayk7Zm9udC13ZWlnaHQ6NjAwO30KLmZoLWZtdC5jb24gLnF0eS1zdGVwcGVye2JvcmRlci1jb2xvcjp2YXIoLS1hY2NlbnQpO30KLmZoLXBhc28gYnV0dG9ue3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7fQouZmgtcGFzbyBzcGFue21pbi13aWR0aDoyNnB4O2ZvbnQtc2l6ZToxNHB4O30KQG1lZGlhIChtYXgtd2lkdGg6NjQwcHgpewogIC8qIEVuIGVsIG3Ds3ZpbCwgbG9zIHRhbWHDsW9zIGVuIHRyZXMgY29sdW1uYXMgYmFqbyBlbCBub21icmUgKHVubyBkZWJham8gZGUgb3RybyBsYSBmaWxhIHNhbMOtYSBhbHTDrXNpbWEpICovCiAgLmZpbGEtaG9qYXtmbGV4LXdyYXA6d3JhcDtyb3ctZ2FwOjhweDt9CiAgLmZoLWZvcm1hdG9ze2ZsZXg6MSAxIDEwMCU7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMyxtaW5tYXgoMCwxZnIpKTtnYXA6NnB4IDhweDt9CiAgLmZoLWZtdHtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6c3RyZXRjaDtnYXA6MnB4O30KICAuZmgtZm10LW5vbWJyZXt0ZXh0LWFsaWduOmxlZnQ7bWluLXdpZHRoOjA7fQogIC5maC1wYXNve2Rpc3BsYXk6ZmxleDt3aWR0aDoxMDAlO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO30KICAuZmgtcGFzbyBzcGFue2ZsZXg6MTt9Cn0KQG1lZGlhIChwb2ludGVyOmNvYXJzZSl7IC5maC1wYXNvIGJ1dHRvbnt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O30gfQojYXZpc28tY29waWEtbG9jYWx7YmFja2dyb3VuZDojMmQzMDQzO2NvbG9yOiNmZmY7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwO3BhZGRpbmc6N3B4IDEycHg7fQovKiAwNi8xMC8yMDI2IChwdW50byAzLjQgZGVsIHJlcGFzbyBkZWwgMjkvMDkpOiBsYXMgdmVudGFuYXMgZGUgwqtDb25maXJtYXLCuyBjb24gbXVjaGFzIGzDrW5lYXMgbm8gY2Fiw61hbiBlbiBlbCBtw7N2aWwgeSBubyBzZQogICBwb2TDrWFuIGRlc3BsYXphciAoZWwgwqtTw60sIGVudmlhciBwZWRpZG\/CuyBxdWVkYWJhIGZ1ZXJhKS4gQWhvcmEgbGEgbGlzdGEgdGllbmUgc3UgcHJvcGlvIGRlc3BsYXphbWllbnRvIHkgbG9zIGJvdG9uZXMKICAgc2llbXByZSBzZSB2ZW47IHNpIGF1biBhc8OtIG5vIGNhYmUsIGxhIHZlbnRhbmEgZW50ZXJhIHNlIGRlc3BsYXphLiAqLwojb3JkZXItY29uZmlybS1tb2RhbCwjc2FsZXMtY29uZmlybS1tb2RhbCwjYWRtc2FsZS1jb25maXJtLW1vZGFse292ZXJmbG93LXk6YXV0bzthbGlnbi1pdGVtczpmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7fQojb3JkZXItY29uZmlybS1tb2RhbCA+IC5tb2RhbCwjc2FsZXMtY29uZmlybS1tb2RhbCA+IC5tb2RhbCwjYWRtc2FsZS1jb25maXJtLW1vZGFsID4gLm1vZGFse21hcmdpbjphdXRvO30KI29yZGVyLWNvbmZpcm0tc3VtbWFyeSwjc2FsZXMtY29uZmlybS1zdW1tYXJ5LCNhZG1zYWxlLWNvbmZpcm0tc3VtbWFyeXttYXgtaGVpZ2h0Om1pbig1NXZoLDUyMHB4KTtvdmVyZmxvdy15OmF1dG87b3ZlcnNjcm9sbC1iZWhhdmlvcjpjb250YWluO30KLnJvdy1tYXh7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tc3VhdmUpO21hcmdpbi10b3A6NHB4O30KPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgaWQ9ImdhdGUiIGNsYXNzPSJnYXRlIj4KICA8aW1nIGlkPSJnYXRlLWxvZ28iIGFsdD0iSVNUUklDRSIgc3R5bGU9Im1heC13aWR0aDoyMjBweDt3aWR0aDoxMDAlO2hlaWdodDphdXRvO2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjAgYXV0byA4cHg7Ij4KICA8cCBzdHlsZT0iZm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tc3VhdmUpOyI+QWNjZXNvIHByaXZhZG8gYWwgY2F0w6Fsb2dvPC9wPgogIDwhLS0gQW50ZXMgZXN0byBubyBlcmEgdW4gPGZvcm0+LCBzb2xvIGlucHV0cyBzdWVsdG9zIGNvbiBvbmtleWRvd24gcGlsbGFuZG8gbGEgdGVjbGEgRW50ZXIg4oCUCiAgICAgICBlbiBlbCBtw7N2aWwsIGVsIGJvdMOzbiAiSXIiLyJJbnRybyIgZGVsIHRlY2xhZG8gZW4gcGFudGFsbGEgbm8gc2llbXByZSBkaXNwYXJhIGVzZSBldmVudG8KICAgICAgIGlndWFsIHF1ZSB1biB0ZWNsYWRvIGbDrXNpY28sIGFzw60gcXVlIGEgdmVjZXMgbm8gaGFiw61hIGZvcm1hIGRlIGVudmlhci4gVW4gPGZvcm0+IGRlIHZlcmRhZAogICAgICAgY29uIHN1IGV2ZW50byBvbnN1Ym1pdCBzw60gbG8gY2FwdGEgc2llbXByZSwgc2VhIGN1YWwgc2VhIGVsIHRlY2xhZG8gZGVsIG3Ds3ZpbC4gLS0+CiAgPGZvcm0gb25zdWJtaXQ9InRyeUdhdGUoKTsgcmV0dXJuIGZhbHNlOyI+CiAgICA8aW5wdXQgaWQ9ImdhdGUtdXNlciIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IlVzdWFyaW8gKG5vbWJyZSBkZSB0dSB0aWVuZGEpIiBhcmlhLWxhYmVsPSJVc3VhcmlvIiBhdXRvY29tcGxldGU9InVzZXJuYW1lIiBhdXRvY2FwaXRhbGl6ZT0ib2ZmIiBhdXRvY29ycmVjdD0ib2ZmIiBzcGVsbGNoZWNrPSJmYWxzZSI+CiAgICA8aW5wdXQgaWQ9ImdhdGUtcGFzcyIgdHlwZT0icGFzc3dvcmQiIHBsYWNlaG9sZGVyPSJDb250cmFzZcOxYSIgYXJpYS1sYWJlbD0iQ29udHJhc2XDsWEiIGF1dG9jb21wbGV0ZT0iY3VycmVudC1wYXNzd29yZCI+CiAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCI+RW50cmFyPC9idXR0b24+CiAgPC9mb3JtPgogIDxwIGlkPSJnYXRlLW1zZyIgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLWVycm9yKTsiPjwvcD4KICA8cCBjbGFzcz0iZ2F0ZS1oZWxwIj7Cv1Byb2JsZW1hcyBwYXJhIGVudHJhcj8gRXNjcsOtYmVub3MgYSA8YSBpZD0iZ2F0ZS1oZWxwLW1haWwiIGhyZWY9IiMiPjwvYT48L3A+CiAgPGRpdiBjbGFzcz0ibGFuZy1zd2l0Y2giIGlkPSJnYXRlLWxhbmciPjwvZGl2Pgo8L2Rpdj4KCjxkaXYgaWQ9ImFwcCIgY2xhc3M9ImhpZGRlbiI+CiAgPGhlYWRlcj4KICAgIDxkaXYgY2xhc3M9ImhlYWRlci1pbm5lciI+CiAgICAgIDxpbWcgaWQ9ImhlYWRlci1sb2dvIiBhbHQ9IklTVFJJQ0UiIHN0eWxlPSJoZWlnaHQ6MzRweDtkaXNwbGF5OmJsb2NrOyI+CiAgICAgIDxkaXYgY2xhc3M9Im5hdi1zY3JvbGwtd3JhcCI+CiAgICAgICAgPG5hdiBpZD0ibWFpbi1uYXYiPgogICAgICAgICAgPGJ1dHRvbiBkYXRhLXRhYj0iY2F0YWxvZ28iIGlkPSJuYXYtY2F0YWxvZ28iIGNsYXNzPSJhY3RpdmUiPkNhdMOhbG9nbzwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBkYXRhLXRhYj0icGVkaWRvIiBpZD0ibmF2LXBlZGlkbyI+UGVkaWRvczwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBkYXRhLXRhYj0idmVudGFzIj5WZW50YXMgeSBzdG9jazwvYnV0dG9uPgogICAgICAgIDwvbmF2PgogICAgICA8L2Rpdj4KICAgICAgPCEtLSBFbCBib3TDs24gZGUgdXN1YXJpby90aWVuZGEgdml2w61hIGRlbnRybyBkZSAjbWFpbi1uYXYsIGFzw60gcXVlIGVuIHBhbnRhbGxhcyBlc3RyZWNoYXMKICAgICAgICAgICBxdWVkYWJhIG1ldGlkbyBlbiBsYSBmcmFuamEgcXVlIHNlIGRlc3BsYXphIGhvcml6b250YWxtZW50ZSB5IHN1IG5vbWJyZSBzZSBjb3J0YWJhIGEKICAgICAgICAgICBsYSBtaXRhZCAocGFyZWPDrWEgcm90byBlbiB2ZXogZGUgImhheSBtw6FzLCBkZXNsaXphIikuIFNhY8OhbmRvbG8gZnVlcmEgZGVsIMOhcmVhIHF1ZQogICAgICAgICAgIHNlIGRlc2xpemEgcXVlZGEgc2llbXByZSB2aXNpYmxlIGVudGVybywgeSBzb2xvIGxhcyBwZXN0YcOxYXMgKENhdMOhbG9nby9QZWRpZG9zLy4uLikKICAgICAgICAgICBzZSBkZXNwbGF6YW4gY3VhbmRvIG5vIGNhYmVuLiAtLT4KICAgICAgPCEtLSAxNi8wOS8yMDI2OiBlbCBoZWFkZXItaW5uZXIgZXMgZmxleCBjb24ganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4sIGFzw60gcXVlIGVsIGljb25vCiAgICAgICAgICAgZGUgQWRtaW4gKMO6bHRpbW8gaGlqbykgcXVlZGFiYSBjb24gdW4gaHVlY28gdmFyaWFibGUgZnJlbnRlIGFsIGljb25vIGRlIHVzdWFyaW8uIFJhw7psCiAgICAgICAgICAgcGlkacOzIHF1ZSBxdWVkYXJhbiBsb3MgZG9zIGp1bnRvcyBhIGxhIGRlcmVjaGEsIGFzw60gcXVlIGFob3JhIGNvbXBhcnRlbiB1biBtaXNtbwogICAgICAgICAgIGNvbnRlbmVkb3IgZmxleCAoc2luIHNlcGFyYWNpw7NuIGRlIHNwYWNlLWJldHdlZW4gZW50cmUgZWxsb3MpLiAtLT4KICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4OjAgMCBhdXRvOyI+CiAgICAgICAgPGRpdiBjbGFzcz0ibGFuZy1zd2l0Y2ggbGFuZy1zd2l0Y2gtaGVhZGVyIiBpZD0iaGVhZGVyLWxhbmciPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InVzZXItbWVudS13cmFwIj4KICAgICAgICAgIDxidXR0b24gaWQ9ImhlYWRlci11c2VyIiBjbGFzcz0ic3RvcmUtYnRuIiBvbmNsaWNrPSJ0b2dnbGVVc2VyTWVudShldmVudCkiPjxzcGFuIGlkPSJoZWFkZXItdXNlci1hdmF0YXIiIGNsYXNzPSJ1c2VyLWF2YXRhciI+PC9zcGFuPjxzcGFuIGlkPSJoZWFkZXItdXNlci1uYW1lIj48L3NwYW4+PC9idXR0b24+CiAgICAgICAgICA8ZGl2IGlkPSJ1c2VyLW1lbnUtZHJvcGRvd24iIGNsYXNzPSJ1c2VyLW1lbnUtZHJvcGRvd24gaGlkZGVuIj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJ1c2VyLW1lbnUtYmlsbGluZyIgb25jbGljaz0ib3BlbkJpbGxpbmcoKTsgY2xvc2VVc2VyTWVudSgpOyI+TWlzIGRhdG9zPC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ibG9nb3V0IiBvbmNsaWNrPSJnYXRlTG9nb3V0KCkiPkNlcnJhciBzZXNpw7NuPC9idXR0b24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8IS0tIEFkbWluIHNlcGFyYWRvIGRlbCByZXN0byBkZWwgbmF2IHkgY29tbyBpY29ubyAoMTYvMDkvMjAyNiwgYSBwZXRpY2nDs24gZGUgUmHDumwpOiBhbnRlcwogICAgICAgICAgICAgZXJhIHVuYSBwZXN0YcOxYSBtw6FzIGRlIHRleHRvIGVudHJlIFBlZGlkb3MvVmVudGFzLCBtZXpjbGFkYSBjb24gbGEgdmlzdGEgZGUgdGllbmRhIOKAlAogICAgICAgICAgICAgYWhvcmEgZXMgdW4gaWNvbm8gYXBhcnRlIGEgbGEgZGVyZWNoYSBkZWwgdG9kbywgcGVnYWRvIGFsIGljb25vIGRlIHVzdWFyaW8sIGNvbiBlbAogICAgICAgICAgICAgbm9tYnJlIHNvbG8gY29tbyB0b29sdGlwIGFsIHBhc2FyIGVsIHJhdMOzbiAodGl0bGUgbmF0aXZvKS4gLS0+CiAgICAgICAgPG5hdiBpZD0iYWRtaW4tbmF2LXdyYXAiIHN0eWxlPSJmbGV4OjAgMCBhdXRvOyI+CiAgICAgICAgICA8YnV0dG9uIGRhdGEtdGFiPSJhZG1pbiIgaWQ9Im5hdi1hZG1pbiIgdGl0bGU9IkFkbWluOiBnZXN0aW9uYXIgY2F0w6Fsb2dvLCBwZWRpZG9zIHkgdGllbmRhcyIgYXJpYS1sYWJlbD0iQWRtaW4iIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsiPgogICAgICAgICAgICA8c3ZnIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48Y2lyY2xlIGN4PSI4IiBjeT0iMTUiIHI9IjQiLz48cGF0aCBkPSJNMTAuODUgMTIuMTUgMTkgNE0xOCA1bDIgMk0xNSA4bDIgMiIvPjwvc3ZnPjxzcGFuPkFkbWluPC9zcGFuPgogICAgICAgICAgICA8c3BhbiBpZD0ibmF2LWFkbWluLW5ldy1iYWRnZSIgY2xhc3M9ImhpZGRlbiIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDotNHB4O3JpZ2h0Oi00cHg7YmFja2dyb3VuZDojZmZhODMyO2NvbG9yOnZhcigtLWluayk7Zm9udC1zaXplOjEwcHg7Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6MXB4IDVweDtib3JkZXItcmFkaXVzOjEwcHg7bGluZS1oZWlnaHQ6MS4zOyI+PC9zcGFuPgogICAgICAgICAgICA8c3BhbiBpZD0ibmF2LWFkbWluLXJlYWR5LWJhZGdlIiBjbGFzcz0iaGlkZGVuIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOi00cHg7cmlnaHQ6LTRweDtiYWNrZ3JvdW5kOnZhcigtLW9rKTtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxMHB4O2ZvbnQtd2VpZ2h0OjcwMDtwYWRkaW5nOjFweCA1cHg7Ym9yZGVyLXJhZGl1czoxMHB4O2xpbmUtaGVpZ2h0OjEuMzsiPjwvc3Bhbj4KICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvbmF2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvaGVhZGVyPgogIDxkaXYgaWQ9Im1vZG8tYmFuZGEiIGNsYXNzPSJoaWRkZW4iIGRhdGEtbm8taTE4bj48L2Rpdj4KICA8IS0tIDA2LzEwLzIwMjY6IFJhw7psIGhpem8gdW4gcGVkaWRvIGRlIHZlcmRhZCBlbiBsYSBjb3BpYSBsb2NhbCBjcmV5ZW5kbyBxdWUgZXN0YWJhIGVuIGxhIERlbW8uIExhIGNvcGlhIGxvY2FsIChsb2NhbGhvc3QpCiAgICAgICB1c2EgbGEgbWlzbWEgYmFzZSBkZSBkYXRvcyBxdWUgbGEgd2ViOiBlc3RlIGF2aXNvIHNvbG8gc2FsZSBhaMOtLCBudW5jYSBlbiBsYSB3ZWIuIC0tPgogIDxkaXYgaWQ9ImF2aXNvLWNvcGlhLWxvY2FsIiBjbGFzcz0iaGlkZGVuIiBkYXRhLW5vLWkxOG4+Q29waWEgbG9jYWw6IGxvIHF1ZSBoYWdhcyBhcXXDrSBlcyBkZSB2ZXJkYWQgKG1pc21hIGJhc2UgZGUgZGF0b3MgcXVlIGxhIHdlYikuIFNvbG8gbGEgRGVtbyBubyBndWFyZGEgbmFkYS48L2Rpdj4KICA8ZGl2IGlkPSJkZW1vLWJhbm5lciIgY2xhc3M9ImhpZGRlbiIgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tYXZpc28tY2xhcm8pO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWF2aXNvLWNsYXJvKTtjb2xvcjp2YXIoLS1hdmlzbyk7Zm9udC1zaXplOjEzcHg7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzo3cHggMTJweDsiPkN1ZW50YSBkZSBkZW1vc3RyYWNpw7NuIOKAlCBwdWVkZXMgbmF2ZWdhciB5IHByb2JhciB0b2RvLCBwZXJvIG5hZGEgZGUgbG8gcXVlIGVudsOtZXMgYXF1w60gc2UgZ3VhcmRhIGRlIHZlcmRhZC48L2Rpdj4KICA8ZGl2IGlkPSJzYWxlcy1yZW1pbmRlciIgY2xhc3M9InNhbGVzLXJlbWluZGVyIGhpZGRlbiI+PC9kaXY+CgogIDxkaXYgaWQ9Im9yZGVyLWNvbmZpcm0tbW9kYWwiIGNsYXNzPSJoaWRkZW4iIHN0eWxlPSJwb3NpdGlvbjpmaXhlZDtpbnNldDowO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuNSk7ei1pbmRleDo2MDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZzoyMHB4OyI+CiAgICA8ZGl2IGNsYXNzPSJtb2RhbCIgc3R5bGU9Im1heC13aWR0aDo0ODBweDt3aWR0aDoxMDAlOyI+CiAgICAgIDxkaXYgY2xhc3M9ImJvZHkiPgogICAgICAgIDxoMyBzdHlsZT0ibWFyZ2luLXRvcDowOyI+Q29uZmlybWFyIHBlZGlkbzwvaDM+CiAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW4tdG9wOi02cHg7Ij5SZXZpc2EgcXVlIGVzdMOpIHRvZG8gYmllbiBhbnRlcyBkZSBlbnZpYXJsby48L3A+CiAgICAgICAgPGRpdiBpZD0ib3JkZXItY29uZmlybS1zdW1tYXJ5Ij48L2Rpdj4KICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDttYXJnaW4tdG9wOjE2cHg7ZmxleC13cmFwOndyYXA7Ij4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBpZD0ib3JkZXItY29uZmlybS1idG4iIG9uY2xpY2s9ImNvbmZpcm1TdWJtaXRPcmRlcigpIj5Tw60sIGVudmlhciBwZWRpZG88L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIHNlY29uZGFyeSIgb25jbGljaz0iY2xvc2VPcmRlckNvbmZpcm0oKSI+UmV2aXNhciBkZSBudWV2bzwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgaWQ9Im9yZGVyLWNvbmZpcm0tbXNnIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPGRpdiBpZD0ic2FsZXMtY29uZmlybS1tb2RhbCIgY2xhc3M9ImhpZGRlbiIgc3R5bGU9InBvc2l0aW9uOmZpeGVkO2luc2V0OjA7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC41KTt6LWluZGV4OjYwO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwYWRkaW5nOjIwcHg7Ij4KICAgIDxkaXYgY2xhc3M9Im1vZGFsIiBzdHlsZT0ibWF4LXdpZHRoOjQ4MHB4O3dpZHRoOjEwMCU7Ij4KICAgICAgPGRpdiBjbGFzcz0iYm9keSI+CiAgICAgICAgPGgzIHN0eWxlPSJtYXJnaW4tdG9wOjA7Ij5Db25maXJtYXIgcmVwb3J0ZTwvaDM+CiAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW4tdG9wOi02cHg7Ij5SZXZpc2EgcXVlIGVzdMOpIHRvZG8gYmllbiBhbnRlcyBkZSBlbnZpYXJsby48L3A+CiAgICAgICAgPGRpdiBpZD0ic2FsZXMtY29uZmlybS1zdW1tYXJ5Ij48L2Rpdj4KICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDttYXJnaW4tdG9wOjE2cHg7ZmxleC13cmFwOndyYXA7Ij4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBpZD0ic2FsZXMtY29uZmlybS1idG4iIG9uY2xpY2s9ImNvbmZpcm1TdWJtaXRTYWxlcygpIj5Tw60sIGVudmlhciByZXBvcnRlPC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBzZWNvbmRhcnkiIG9uY2xpY2s9ImNsb3NlU2FsZXNDb25maXJtKCkiPlJldmlzYXIgZGUgbnVldm88L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGlkPSJzYWxlcy1jb25maXJtLW1zZyI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDxkaXYgaWQ9ImFkbXNhbGUtY29uZmlybS1tb2RhbCIgY2xhc3M9ImhpZGRlbiIgc3R5bGU9InBvc2l0aW9uOmZpeGVkO2luc2V0OjA7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC41KTt6LWluZGV4OjYwO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwYWRkaW5nOjIwcHg7Ij4KICAgIDxkaXYgY2xhc3M9Im1vZGFsIiBzdHlsZT0ibWF4LXdpZHRoOjQ4MHB4O3dpZHRoOjEwMCU7Ij4KICAgICAgPGRpdiBjbGFzcz0iYm9keSI+CiAgICAgICAgPGgzIHN0eWxlPSJtYXJnaW4tdG9wOjA7Ij5Db25maXJtYXIgdmVudGE8L2gzPgogICAgICAgIDxwIHN0eWxlPSJmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1zdWF2ZSk7bWFyZ2luLXRvcDotNnB4OyI+UmV2aXNhIHF1ZSBlc3TDqSB0b2RvIGJpZW4gYW50ZXMgZGUgcmVnaXN0cmFybGEuPC9wPgogICAgICAgIDxkaXYgaWQ9ImFkbXNhbGUtY29uZmlybS1zdW1tYXJ5Ij48L2Rpdj4KICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDttYXJnaW4tdG9wOjE2cHg7ZmxleC13cmFwOndyYXA7Ij4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBpZD0iYWRtc2FsZS1jb25maXJtLWJ0biIgb25jbGljaz0iY29uZmlybVN1Ym1pdEFkbWluU2FsZSgpIj5Tw60sIHJlZ2lzdHJhciB2ZW50YTwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gc2Vjb25kYXJ5IiBvbmNsaWNrPSJjbG9zZUFkbWluU2FsZUNvbmZpcm0oKSI+UmV2aXNhciBkZSBudWV2bzwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgaWQ9ImFkbXNhbGUtY29uZmlybS1tc2ciPjwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgoKICA8ZGl2IGlkPSJiaWxsaW5nLW1vZGFsIiBjbGFzcz0iaGlkZGVuIiBzdHlsZT0icG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjQpO3otaW5kZXg6NTA7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyI+CiAgICA8IS0tIDE4LzA5LzIwMjY6ICJEYXRvcyBkZSBmYWN0dXJhY2nDs24iIHBhc2EgYSAiTWlzIGRhdG9zIiwgY29uIHVuIGJsb3F1ZSBkZSBFbnbDrW8gKGRpcmVjY2nDs24KICAgICAgICAgZGUgZW52w61vIHNpIGVzIGRpc3RpbnRhLCBob3JhcmlvIGRlIHJlY2VwY2nDs24geSBub3RhcyBwYXJhIGVsIHRyYW5zcG9ydGlzdGEpLiBMZWUvZ3VhcmRhCiAgICAgICAgIGNvbiBnZXRfY2hhbm5lbF9kZXRhaWxzIC8gdXBkYXRlX2NoYW5uZWxfZGV0YWlscyAoY29tcHJ1ZWJhbiBsYSBjb250cmFzZcOxYSBkZSBsYSB0aWVuZGEpLiAtLT4KICAgIDxmb3JtIGNsYXNzPSJibG9jayIgb25zdWJtaXQ9InJldHVybiBmYWxzZTsiIHN0eWxlPSJtYXgtd2lkdGg6NDYwcHg7d2lkdGg6OTIlO21heC1oZWlnaHQ6OTB2aDtvdmVyZmxvdy15OmF1dG87YmFja2dyb3VuZDp2YXIoLS1jYXJkKTsiPgogICAgICA8ZGl2IGNsYXNzPSJiaWxsaW5nLXN0b3JlLWhlYWQiPgogICAgICAgIDxzcGFuIGNsYXNzPSJiaWxsaW5nLXN0b3JlLWtpY2tlciI+TWlzIGRhdG9zPC9zcGFuPgogICAgICAgIDxkaXYgaWQ9ImJpbGwtc3RvcmUtbmFtZSIgY2xhc3M9ImJpbGxpbmctc3RvcmUtbmFtZSI+PC9kaXY+CiAgICAgICAgPHAgY2xhc3M9ImJpbGxpbmctaGludCIgc3R5bGU9Im1hcmdpbjoycHggMCAwOyI+RXN0ZSBub21icmUgZXMgdHUgdXN1YXJpbyBwYXJhIGVudHJhci4gU2kgbmVjZXNpdGFzIGNhbWJpYXJsbywgZXNjcsOtYmVub3MuPC9wPgogICAgICA8L2Rpdj4KICAgICAgPGg0IGNsYXNzPSJiaWxsaW5nLXNlY3Rpb24iPkNvbnRhY3RvPC9oND4KICAgICAgPGxhYmVsIGZvcj0iYmlsbC1jb250YWN0LW5hbWUiPlBlcnNvbmEgZGUgY29udGFjdG88L2xhYmVsPgogICAgICA8aW5wdXQgaWQ9ImJpbGwtY29udGFjdC1uYW1lIiBhdXRvY29tcGxldGU9Im5hbWUiPgogICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgIDxkaXYgc3R5bGU9ImZsZXg6MTttaW4td2lkdGg6MTIwcHg7Ij48bGFiZWwgZm9yPSJiaWxsLXBob25lIj5UZWzDqWZvbm88L2xhYmVsPjxpbnB1dCBpZD0iYmlsbC1waG9uZSIgdHlwZT0idGVsIiBhdXRvY29tcGxldGU9InRlbCI+PC9kaXY+CiAgICAgICAgPGRpdiBzdHlsZT0iZmxleDoxO21pbi13aWR0aDoxMjBweDsiPjxsYWJlbCBmb3I9ImJpbGwtY2l0eSI+Q2l1ZGFkPC9sYWJlbD48aW5wdXQgaWQ9ImJpbGwtY2l0eSIgYXV0b2NvbXBsZXRlPSJhZGRyZXNzLWxldmVsMiI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8aDQgY2xhc3M9ImJpbGxpbmctc2VjdGlvbiI+RmFjdHVyYWNpw7NuPC9oND4KICAgICAgPGxhYmVsIGZvcj0iYmlsbC1uYW1lIj5Ob21icmUgZmlzY2FsIC8gcmF6w7NuIHNvY2lhbDwvbGFiZWw+CiAgICAgIDxpbnB1dCBpZD0iYmlsbC1uYW1lIiBhdXRvY29tcGxldGU9Im9yZ2FuaXphdGlvbiI+CiAgICAgIDxwIGNsYXNzPSJiaWxsaW5nLWhpbnQiPkVsIG5vbWJyZSBxdWUgZGViZSBzYWxpciBlbiB0dXMgZmFjdHVyYXMuIFB1ZWRlIHNlciBkaXN0aW50byBkZWwgbm9tYnJlIGRlIGxhIHRpZW5kYSAocG9yIGVqZW1wbG8sIHR1IG5vbWJyZSB5IGFwZWxsaWRvcyBvIGVsIGRlIHR1IGVtcHJlc2EpLjwvcD4KICAgICAgPGxhYmVsIGZvcj0iYmlsbC1lbWFpbCI+RW1haWw8L2xhYmVsPgogICAgICA8aW5wdXQgaWQ9ImJpbGwtZW1haWwiIHR5cGU9ImVtYWlsIiBhdXRvY29tcGxldGU9ImVtYWlsIj4KICAgICAgPGxhYmVsIGZvcj0iYmlsbC1hZGRyZXNzIj5EaXJlY2Npw7NuIGRlIGZhY3R1cmFjacOzbjwvbGFiZWw+CiAgICAgIDxpbnB1dCBpZD0iYmlsbC1hZGRyZXNzIiBhdXRvY29tcGxldGU9InN0cmVldC1hZGRyZXNzIj4KICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICA8ZGl2IHN0eWxlPSJmbGV4OjE7bWluLXdpZHRoOjEyMHB4OyI+PGxhYmVsIGZvcj0iYmlsbC1wb3N0YWwiPkPDs2RpZ28gcG9zdGFsPC9sYWJlbD48aW5wdXQgaWQ9ImJpbGwtcG9zdGFsIiBhdXRvY29tcGxldGU9InBvc3RhbC1jb2RlIj48L2Rpdj4KICAgICAgICA8ZGl2IHN0eWxlPSJmbGV4OjE7bWluLXdpZHRoOjEyMHB4OyI+PGxhYmVsIGZvcj0iYmlsbC10YXgtaWQiPk5JRSAvIENJRjwvbGFiZWw+PGlucHV0IGlkPSJiaWxsLXRheC1pZCI+PC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGg0IGNsYXNzPSJiaWxsaW5nLXNlY3Rpb24iPkVudsOtbzwvaDQ+CiAgICAgIDxsYWJlbCBjbGFzcz0iYmlsbGluZy1jaGVjayI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0ic2hpcC1zYW1lIiBjaGVja2VkIG9uY2hhbmdlPSJ0b2dnbGVTaGlwRmllbGRzKCkiPiBFbnZpYXIgYSBsYSBtaXNtYSBkaXJlY2Npw7NuIGRlIGZhY3R1cmFjacOzbjwvbGFiZWw+CiAgICAgIDxkaXYgaWQ9InNoaXAtZmllbGRzIiBjbGFzcz0iaGlkZGVuIj4KICAgICAgICA8bGFiZWwgZm9yPSJzaGlwLWFkZHJlc3MiPkRpcmVjY2nDs24gZGUgZW52w61vPC9sYWJlbD4KICAgICAgICA8aW5wdXQgaWQ9InNoaXAtYWRkcmVzcyI+CiAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgIDxkaXYgc3R5bGU9ImZsZXg6MTttaW4td2lkdGg6MTIwcHg7Ij48bGFiZWwgZm9yPSJzaGlwLXBvc3RhbCI+Q8OzZGlnbyBwb3N0YWw8L2xhYmVsPjxpbnB1dCBpZD0ic2hpcC1wb3N0YWwiPjwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0iZmxleDoxO21pbi13aWR0aDoxMjBweDsiPjxsYWJlbCBmb3I9InNoaXAtY2l0eSI+Q2l1ZGFkPC9sYWJlbD48aW5wdXQgaWQ9InNoaXAtY2l0eSI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgIDxkaXYgc3R5bGU9ImZsZXg6MTttaW4td2lkdGg6MTIwcHg7Ij48bGFiZWwgZm9yPSJzaGlwLXByb3ZpbmNlIj5Qcm92aW5jaWE8L2xhYmVsPjxpbnB1dCBpZD0ic2hpcC1wcm92aW5jZSI+PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJmbGV4OjE7bWluLXdpZHRoOjEyMHB4OyI+PGxhYmVsIGZvcj0ic2hpcC1waG9uZSI+VGVsw6lmb25vPC9sYWJlbD48aW5wdXQgaWQ9InNoaXAtcGhvbmUiIHR5cGU9InRlbCIgYXV0b2NvbXBsZXRlPSJ0ZWwiIHBsYWNlaG9sZGVyPSJQYXJhIGVsIHRyYW5zcG9ydGlzdGEiPjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGxhYmVsIGZvcj0iZGVsaXZlcnktaG91cnMiPkhvcmFyaW8gcGFyYSByZWNpYmlyIGxvcyBlbnbDrW9zPC9sYWJlbD4KICAgICAgPHNlbGVjdCBpZD0iZGVsaXZlcnktaG91cnMiPgogICAgICAgIDxvcHRpb24gdmFsdWU9IiI+4oCUIFNpbiBpbmRpY2FyIOKAlDwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9Im1hbmFuYSI+TWHDsWFuYSAoOeKAkzE0IGgpPC9vcHRpb24+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0idGFyZGUiPlRhcmRlICgxNuKAkzIwIGgpPC9vcHRpb24+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iY3VhbHF1aWVyYSI+Q3VhbHF1aWVyIGhvcmE8L29wdGlvbj4KICAgICAgPC9zZWxlY3Q+CiAgICAgIDxsYWJlbCBmb3I9ImRlbGl2ZXJ5LW5vdGVzIj5Ob3RhcyBwYXJhIGxhIGVudHJlZ2E8L2xhYmVsPgogICAgICA8dGV4dGFyZWEgaWQ9ImRlbGl2ZXJ5LW5vdGVzIiByb3dzPSIyIiBwbGFjZWhvbGRlcj0iRWouOiB0aW1icmUgMkIsIGVudHJhciBwb3IgbGEgcHVlcnRhIGxhdGVyYWzigKYiPjwvdGV4dGFyZWE+CiAgICAgIDxkaXYgaWQ9ImJpbGwtbXNnIj48L2Rpdj4KICAgICAgPGRpdiBpZD0iYmlsbC1hY3Rpb25zIiBzdHlsZT0ibWFyZ2luLXRvcDoxNnB4O2Rpc3BsYXk6ZmxleDtnYXA6OHB4OyI+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4iIG9uY2xpY2s9InNhdmVCaWxsaW5nKCkiPkd1YXJkYXI8L2J1dHRvbj4KICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBzZWNvbmRhcnkiIG9uY2xpY2s9ImNsb3NlQmlsbGluZygpIj5DZXJyYXI8L2J1dHRvbj4KICAgICAgPC9kaXY+CgogICAgICA8aDQgY2xhc3M9ImJpbGxpbmctc2VjdGlvbiI+Q29udHJhc2XDsWE8L2g0PgogICAgICA8ZGV0YWlscyBpZD0icGFzcy1jaGFuZ2UtYm94Ij4KICAgICAgICA8c3VtbWFyeSBzdHlsZT0iY3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjE0cHg7Y29sb3I6dmFyKC0tc3VhdmUpOyI+Q2FtYmlhciBtaSBjb250cmFzZcOxYTwvc3VtbWFyeT4KICAgICAgICA8bGFiZWwgZm9yPSJwYXNzLW5ldyI+TnVldmEgY29udHJhc2XDsWEgKG3DrW5pbW8gNiBjYXJhY3RlcmVzKTwvbGFiZWw+CiAgICAgICAgPGlucHV0IGlkPSJwYXNzLW5ldyIgdHlwZT0icGFzc3dvcmQiIGF1dG9jb21wbGV0ZT0ibmV3LXBhc3N3b3JkIj4KICAgICAgICA8bGFiZWwgZm9yPSJwYXNzLW5ldzIiPlJlcGl0ZSBsYSBudWV2YSBjb250cmFzZcOxYTwvbGFiZWw+CiAgICAgICAgPGlucHV0IGlkPSJwYXNzLW5ldzIiIHR5cGU9InBhc3N3b3JkIiBhdXRvY29tcGxldGU9Im5ldy1wYXNzd29yZCI+CiAgICAgICAgPGRpdiBpZD0ibXlwYXNzLW1zZyI+PC9kaXY+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gc2Vjb25kYXJ5IiBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4OyIgb25jbGljaz0iY2hhbmdlTXlQYXNzd29yZCgpIj5DYW1iaWFyIGNvbnRyYXNlw7FhPC9idXR0b24+CiAgICAgIDwvZGV0YWlscz4KICAgIDwvZm9ybT4KICA8L2Rpdj4KICA8bWFpbj4KCiAgICA8c2VjdGlvbiBpZD0idGFiLWNhdGFsb2dvIj4KICAgICAgPGRpdiBjbGFzcz0iaW50cm8tY2VycmFibGUiIGlkPSJjYXRhbG9nLWludHJvIj48cCBjbGFzcz0ic2VjdGlvbi1pbnRybyIgaWQ9ImNhdGFsb2ctaW5mby10ZXh0IiBkYXRhLWkxOG4taHRtbD0iaW50cm8tY2F0YWxvZ28iPlRvY2EgdW4gYXJ0w61jdWxvIHBhcmEgZWxlZ2lyIGZvcm1hdG8geSBjYW50aWRhZCB5IGHDsWFkaXJsbyBhIHR1IHBlZGlkby4gQ3VhbmRvIHRlcm1pbmVzLCB2ZSBhIDxzdHJvbmc+UGVkaWRvczwvc3Ryb25nPiBwYXJhIGVudmlhcmxvLjwvcD48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImludHJvLWNlcnJhciIgb25jbGljaz0iY2llcnJhSW50cm9DYXRhbG9nbygpIiBhcmlhLWxhYmVsPSJDZXJyYXIiIHRpdGxlPSJDZXJyYXIiPsOXPC9idXR0b24+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNhdGFsb2dvLWJhcnJhIiBpZD0iY2F0YWxvZ28tYmFycmEiPgogICAgICA8ZGl2IGNsYXNzPSJzaXplYnRucyIgc3R5bGU9Im1hcmdpbi1ib3R0b206MTBweDsiPgogICAgICAgIDxidXR0b24gaWQ9ImNhdC10eXBlLW5ldyIgY2xhc3M9Im5ldy10YWIgaGlkZGVuIiBvbmNsaWNrPSJzZXRDYXRhbG9nUHJvZHVjdFR5cGUoJ25ldycpIj7imIUgTmV3PC9idXR0b24+CiAgICAgICAgPGJ1dHRvbiBpZD0iY2F0LXR5cGUtbGFtaW5hIiBjbGFzcz0iYWN0aXZlIiBvbmNsaWNrPSJzZXRDYXRhbG9nUHJvZHVjdFR5cGUoJ2xhbWluYScpIj5Mw6FtaW5hczwvYnV0dG9uPgogICAgICAgIDxidXR0b24gaWQ9ImNhdC10eXBlLWxpYnJldGEiIG9uY2xpY2s9InNldENhdGFsb2dQcm9kdWN0VHlwZSgnbGlicmV0YScpIj5MaWJyZXRhczwvYnV0dG9uPgogICAgICAgIDxzcGFuIGlkPSJjYXQtdHlwZS1leHRyYSIgc3R5bGU9ImRpc3BsYXk6Y29udGVudHM7Ij48L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjYXRhbG9nLXNlYXJjaCI+CiAgICAgICAgPGlucHV0IHR5cGU9InNlYXJjaCIgaWQ9ImNhdC1zZWFyY2giIHBsYWNlaG9sZGVyPSJCdXNjYXIgcG9yIG5vbWJyZSBvIHJlZmVyZW5jaWEiIG9uaW5wdXQ9InJlbmRlckNhdGFsb2coKSIgYXJpYS1sYWJlbD0iQnVzY2FyIGVuIGVsIGNhdMOhbG9nbyIgYXV0b2NvbXBsZXRlPSJvZmYiPgogICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InRvb2xiYXIiPgogICAgICAgIDxkaXYgaWQ9ImNhdC1jb3VudCIgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXN1YXZlKTsiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpemVidG5zIj4KICAgICAgICAgIDxidXR0b24gaWQ9InN6LXNtYWxsIiBjbGFzcz0iYWN0aXZlIiBvbmNsaWNrPSJzZXRTaXplKCdzbWFsbCcpIj5QZXF1ZcOxbzwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBpZD0ic3otbGFyZ2UiIG9uY2xpY2s9InNldFNpemUoJ2xhcmdlJykiPkdyYW5kZTwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBpZD0ic3otbGlzdGEiIG9uY2xpY2s9InNldFNpemUoJ2xpc3RhJykiPkxpc3RhPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGlkPSJjYXRhbG9nLWdyaWQiIGNsYXNzPSJncmlkIHNtYWxsIj48L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8c2VjdGlvbiBpZD0idGFiLXBlZGlkbyIgY2xhc3M9ImhpZGRlbiI+CiAgICAgIDxkaXYgaWQ9Im15LW9yZGVycy1ibG9jayIgY2xhc3M9ImhpZGRlbiIgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tY2FyZCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoyMHB4O21hcmdpbi1ib3R0b206MjBweDsiPgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiIHN0eWxlPSJtYXJnaW4tdG9wOjA7Ij5UdXMgcGVkaWRvczwvZGl2PgogICAgICAgIDxkaXYgaWQ9Im15LW9yZGVycy1saXN0Ij48L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxmb3JtIGNsYXNzPSJibG9jayIgaWQ9Im9yZGVyLWZvcm0iIG9uc3VibWl0PSJyZXR1cm4gc3VibWl0T3JkZXIoZXZlbnQpIj4KICAgICAgICA8aDM+TnVldm8gcGVkaWRvPC9oMz4KICAgICAgICA8cCBjbGFzcz0ic2VjdGlvbi1pbnRybyIgZGF0YS1pMThuLWh0bWw9ImludHJvLXBlZGlkbyI+UmV2aXNhIGxvIHF1ZSBoYXMgYcOxYWRpZG8sIGFqdXN0YSBjYW50aWRhZGVzIHkgcHVsc2EgPHN0cm9uZz5FbnZpYXIgcGVkaWRvPC9zdHJvbmc+LiBWZXLDoXMgdW4gcmVzdW1lbiBhbnRlcyBkZSBjb25maXJtYXJsby48L3A+CiAgICAgICAgPHAgY2xhc3M9ImZvci1zdG9yZSBoaWRkZW4iIGlkPSJvcmQtZm9yIj5QZWRpZG8gcGFyYSA8c3Ryb25nIGlkPSJvcmQtZm9yLW5hbWUiPjwvc3Ryb25nPjwvcD4KICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgPGRpdiBzdHlsZT0ibWF4LXdpZHRoOjI2MHB4OyIgaWQ9Im9yZC1jaGFubmVsLXdyYXAiPjxsYWJlbD5UaWVuZGEgLyBDbGllbnRlPC9sYWJlbD48c2VsZWN0IGlkPSJvcmQtY2hhbm5lbCIgcmVxdWlyZWQ+PC9zZWxlY3Q+PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJtYXgtd2lkdGg6MjYwcHg7Ij48bGFiZWwgZm9yPSJvcmQtbmFtZSI+Tm9tYnJlIGRlIGNvbnRhY3RvIDxzcGFuIHN0eWxlPSJjb2xvcjp2YXIoLS1lcnJvcik7Ij4qPC9zcGFuPjwvbGFiZWw+PGlucHV0IGlkPSJvcmQtbmFtZSIgcmVxdWlyZWQgYXV0b2NvbXBsZXRlPSJuYW1lIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGlkPSJvcmQtY2hhbm5lbC1sb2NrLW1zZyIgY2xhc3M9ImhpZGRlbiIgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O21hcmdpbjotNHB4IDAgMTBweDsiPgogICAgICAgICAgPHNwYW4gaWQ9Im9yZC1sb2NrZWQtbXNnIiBzdHlsZT0iY29sb3I6dmFyKC0tc3VhdmUpOyI+RXN0ZSBwZWRpZG8gcXVlZGEgYSBub21icmUgZGUgSVNUUklDRSAodHUgcHJvcGlvIHBlZGlkbykuIDxzcGFuIGNsYXNzPSJsb2NrLWxpbmsiIG9uY2xpY2s9InRvZ2dsZUNoYW5uZWxMb2NrKCdvcmQtY2hhbm5lbCcsJ29yZCcpIj5IYWNlcmxvIGEgbm9tYnJlIGRlIG90cmEgdGllbmRhPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgIDxzcGFuIGlkPSJvcmQtdW5sb2NrZWQtbXNnIiBjbGFzcz0iaGlkZGVuIiBzdHlsZT0iY29sb3I6dmFyKC0tYWNjZW50KTsiPlZhcyBhIGVsZWdpciBvdHJhIHRpZW5kYSDigJQgcmV2aXNhIGJpZW4gY3XDoWwuIDxzcGFuIGNsYXNzPSJsb2NrLWxpbmsiIG9uY2xpY2s9InRvZ2dsZUNoYW5uZWxMb2NrKCdvcmQtY2hhbm5lbCcsJ29yZCcpIj5Wb2x2ZXIgYSBtaSBwZWRpZG8gKElTVFJJQ0UpPC9zcGFuPjwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5BcnTDrWN1bG9zIHBlZGlkb3M8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaXplYnRucyIgc3R5bGU9Im1hcmdpbi1ib3R0b206MTBweDsiPgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJvcmQtdHlwZS1sYW1pbmEiIGNsYXNzPSJhY3RpdmUiIG9uY2xpY2s9InNldE9yZGVyUHJvZHVjdFR5cGUoJ2xhbWluYScpIj5Mw6FtaW5hczwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJvcmQtdHlwZS1saWJyZXRhIiBvbmNsaWNrPSJzZXRPcmRlclByb2R1Y3RUeXBlKCdsaWJyZXRhJykiPkxpYnJldGFzPC9idXR0b24+CiAgICAgICAgICA8c3BhbiBpZD0ib3JkLXR5cGUtZXh0cmEiIHN0eWxlPSJkaXNwbGF5OmNvbnRlbnRzOyI+PC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgaWQ9InJlb3JkZXItc3VnZ2VzdGlvbiIgY2xhc3M9InJlb3JkZXItc3VnZ2VzdGlvbiBoaWRkZW4iPjwvZGl2PgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBpZD0iYWRkLW9yZGVyLXJvdy1idG4iIGNsYXNzPSJidG4gc2Vjb25kYXJ5IiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxMHB4OyIgb25jbGljaz0iYWRkT3JkZXJSb3coKSI+KyBBw7FhZGlyIGzDoW1pbmE8L2J1dHRvbj4KICAgICAgICA8ZGl2IGlkPSJvcmQtaXRlbXMiPjwvZGl2PgogICAgICAgIDxsYWJlbD5Ob3RhczwvbGFiZWw+CiAgICAgICAgPHRleHRhcmVhIGlkPSJvcmQtbm90ZXMiIHJvd3M9IjIiPjwvdGV4dGFyZWE+CiAgICAgICAgPGRpdiBjbGFzcz0iZW52aWFyLWZpbGEiIHN0eWxlPSJtYXJnaW4tdG9wOjE2cHg7Ij48YnV0dG9uIGNsYXNzPSJidG4iIHR5cGU9InN1Ym1pdCIgaWQ9Im9yZC1zdWJtaXQiPkVudmlhciBwZWRpZG88L2J1dHRvbj48c3BhbiBjbGFzcz0iZW52aWFyLXBpc3RhIiBpZD0ib3JkLXN1Ym1pdC1oaW50Ij5Bw7FhZGUgYWwgbWVub3MgdW4gYXJ0w61jdWxvPC9zcGFuPjwvZGl2PgogICAgICAgIDxkaXYgaWQ9Im9yZC1tc2ciPjwvZGl2PgogICAgICA8L2Zvcm0+CiAgICA8L3NlY3Rpb24+CgogICAgPHNlY3Rpb24gaWQ9InRhYi12ZW50YXMiIGNsYXNzPSJoaWRkZW4iPgogICAgICA8Zm9ybSBjbGFzcz0iYmxvY2siIGlkPSJzYWxlcy1mb3JtIiBvbnN1Ym1pdD0icmV0dXJuIHN1Ym1pdFNhbGVzKGV2ZW50KSI+CiAgICAgICAgPGgzPlZlbnRhcyB5IHN0b2NrPC9oMz4KICAgICAgICA8cCBjbGFzcz0ic2VjdGlvbi1pbnRybyIgZGF0YS1pMThuLWh0bWw9ImludHJvLXZlbnRhcyI+Q3XDqW50YW5vcyBxdcOpIGhhcyB2ZW5kaWRvIGNhZGEgbWVzOiBhw7FhZGUgY2FkYSBhcnTDrWN1bG8sIGNvbmbDrXJtYWxvIHkgcHVsc2EgPHN0cm9uZz5FbnZpYXIgcmVwb3J0ZTwvc3Ryb25nPi4gTcOhcyBhYmFqbyB0aWVuZXMgdHUgc3RvY2sgYWN0dWFsIHkgdHVzIGVzdGFkw61zdGljYXMuPC9wPgogICAgICAgIDxwIGNsYXNzPSJmb3Itc3RvcmUgaGlkZGVuIiBpZD0ic2FsZS1mb3IiPlRpZW5kYTogPHN0cm9uZyBpZD0ic2FsZS1mb3ItbmFtZSI+PC9zdHJvbmc+PC9wPgogICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJtYXgtd2lkdGg6MjYwcHg7IiBpZD0ic2FsZS1jaGFubmVsLXdyYXAiPjxsYWJlbD5UaWVuZGE8L2xhYmVsPjxzZWxlY3QgaWQ9InNhbGUtY2hhbm5lbCIgcmVxdWlyZWQgb25jaGFuZ2U9InJlZnJlc2hFeGlzdGluZ1NhbGVzKCk7IHJlZnJlc2hTYWxlU3RvY2tQcmV2aWV3KCk7Ij48L3NlbGVjdD48L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9Im1heC13aWR0aDoxODBweDsiPjxsYWJlbD5NZXM8L2xhYmVsPjxzZWxlY3QgaWQ9InNhbGUtbW9udGgiIHJlcXVpcmVkIG9uY2hhbmdlPSJyZWZyZXNoRXhpc3RpbmdTYWxlcygpIj48L3NlbGVjdD48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGlkPSJzYWxlLWNoYW5uZWwtbG9jay1tc2ciIGNsYXNzPSJoaWRkZW4iIHN0eWxlPSJmb250LXNpemU6MTJweDttYXJnaW46LTRweCAwIDEwcHg7Ij4KICAgICAgICAgIDxzcGFuIGlkPSJzYWxlLWxvY2tlZC1tc2ciIHN0eWxlPSJjb2xvcjp2YXIoLS1zdWF2ZSk7Ij5Fc3RlIHJlcG9ydGUgcXVlZGEgYSBub21icmUgZGUgSVNUUklDRSAodHVzIHZlbnRhcyBwcm9waWFzKS4gPHNwYW4gY2xhc3M9ImxvY2stbGluayIgb25jbGljaz0idG9nZ2xlQ2hhbm5lbExvY2soJ3NhbGUtY2hhbm5lbCcsJ3NhbGUnKTsgcmVmcmVzaFNhbGVTdG9ja1ByZXZpZXcoKTsiPlJlcG9ydGFybG8gYSBub21icmUgZGUgb3RyYSB0aWVuZGE8L3NwYW4+PC9zcGFuPgogICAgICAgICAgPHNwYW4gaWQ9InNhbGUtdW5sb2NrZWQtbXNnIiBjbGFzcz0iaGlkZGVuIiBzdHlsZT0iY29sb3I6dmFyKC0tYWNjZW50KTsiPlZhcyBhIGVsZWdpciBvdHJhIHRpZW5kYSDigJQgcmV2aXNhIGJpZW4gY3XDoWwuIDxzcGFuIGNsYXNzPSJsb2NrLWxpbmsiIG9uY2xpY2s9InRvZ2dsZUNoYW5uZWxMb2NrKCdzYWxlLWNoYW5uZWwnLCdzYWxlJyk7IHJlZnJlc2hTYWxlU3RvY2tQcmV2aWV3KCk7Ij5Wb2x2ZXIgYSBJU1RSSUNFPC9zcGFuPjwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGlkPSJzYWxlLWV4aXN0aW5nIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIiBpZD0ic2FsZS1zb2xkLXRpdGxlIj5VbmlkYWRlcyB2ZW5kaWRhczwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpemVidG5zIiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxMHB4OyI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9InNhbGUtdHlwZS1sYW1pbmEiIGNsYXNzPSJhY3RpdmUiIG9uY2xpY2s9InNldFNhbGVQcm9kdWN0VHlwZSgnbGFtaW5hJykiPkzDoW1pbmFzPC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9InNhbGUtdHlwZS1saWJyZXRhIiBvbmNsaWNrPSJzZXRTYWxlUHJvZHVjdFR5cGUoJ2xpYnJldGEnKSI+TGlicmV0YXM8L2J1dHRvbj4KICAgICAgICAgIDxzcGFuIGlkPSJzYWxlLXR5cGUtZXh0cmEiIHN0eWxlPSJkaXNwbGF5OmNvbnRlbnRzOyI+PC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbToxMHB4OyI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9ImFkZC1zYWxlLXJvdy1idG4iIGNsYXNzPSJidG4gc2Vjb25kYXJ5IiBvbmNsaWNrPSJhZGRTYWxlUm93KCkiPisgQcOxYWRpciBsw6FtaW5hPC9idXR0b24+CiAgICAgICAgICA8c3BhbiBpZD0ic2FsZS1hZGRyb3ctbXNnIiBzdHlsZT0iZm9udC1zaXplOjEycHg7Ij48L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBpZD0ic2FsZS1pdGVtcyI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZW52aWFyLWZpbGEiIHN0eWxlPSJtYXJnaW4tdG9wOjZweDsiPjxidXR0b24gY2xhc3M9ImJ0biIgdHlwZT0ic3VibWl0IiBpZD0ic2FsZS1zdWJtaXQiPkVudmlhciByZXBvcnRlPC9idXR0b24+PHNwYW4gY2xhc3M9ImVudmlhci1waXN0YSIgaWQ9InNhbGUtc3VibWl0LWhpbnQiPkHDsWFkZSBhbCBtZW5vcyB1biBhcnTDrWN1bG88L3NwYW4+PC9kaXY+CiAgICAgICAgPGRpdiBpZD0ic2FsZS1tc2ciPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIiBpZD0ibWlzdG9jay1wcmludCIgc3R5bGU9Im1hcmdpbi10b3A6MjBweDsiPgogICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4OyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiIHN0eWxlPSJtYXJnaW46MDsiPlN0b2NrIGFjdHVhbDwvZGl2PgogICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDsiIGNsYXNzPSJuby1wcmludCI+CiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gc2Vjb25kYXJ5IHNtYWxsIiBvbmNsaWNrPSJkb3dubG9hZE15U3RvY2tDU1YoKSI+RGVzY2FyZ2FyIEV4Y2VsPC9idXR0b24+CiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gc2Vjb25kYXJ5IHNtYWxsIiBvbmNsaWNrPSJ3aW5kb3cucHJpbnQoKSI+SW1wcmltaXI8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7bWFyZ2luOjZweCAwIDEwcHg7Ij5FcyBsbyBxdWUgbGUgcXVlZGEgYSBlc2EgdGllbmRhIGFob3JhIG1pc21vOiB1biBjw6FsY3VsbyBvcmllbnRhdGl2byAoZW50cmVnYWRvIG1lbm9zIGxvIHJlcG9ydGFkbyBjb21vIHZlbmRpZG8pLCBzb2xvIHBhcmEgY29uc3VsdGFyLCBubyBlZGl0YWJsZSBhcXXDrS4gRWwgaW52ZW50YXJpbyBmw61zaWNvIHJlYWwgZXMgcmVzcG9uc2FiaWxpZGFkIGRlIGNhZGEgdGllbmRhLjwvcD4KICAgICAgICAgIDxkaXYgaWQ9Im1pc3RvY2stcHJpbnQtaGVhZGluZyIgY2xhc3M9InByaW50LW9ubHkiIHN0eWxlPSJkaXNwbGF5Om5vbmU7bWFyZ2luLWJvdHRvbToxMHB4O2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXN1YXZlKTsiPjwvZGl2PgogICAgICAgICAgPGRpdiBpZD0ibXktc3RvY2stdGFibGUiPjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InBlZGNhcmQgaGlkZGVuIG5vLXByaW50IiBpZD0ibWlzdG9jay1zdGF0cyIgc3R5bGU9Im1hcmdpbi10b3A6MjBweDsiPgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJwZWRjYXJkLWhlYWRlciIgb25jbGljaz0idG9nZ2xlUGVkY2FyZCgnbWlzdG9jay1zdGF0cycpIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBlZGNhcmQtdGl0bGUiPjxzdmcgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiB2aWV3Qm94PSIwIDAgMTYgMTYiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHlsZT0iZGlzcGxheTpibG9jazsiPjxsaW5lIHgxPSIzIiB5MT0iMTMiIHgyPSIzIiB5Mj0iOSIvPjxsaW5lIHgxPSI4IiB5MT0iMTMiIHgyPSI4IiB5Mj0iNSIvPjxsaW5lIHgxPSIxMyIgeTE9IjEzIiB4Mj0iMTMiIHkyPSI3Ii8+PC9zdmc+IFR1cyBlc3RhZMOtc3RpY2FzPC9zcGFuPgogICAgICAgICAgICA8c3BhbiBpZD0icGVkY2FyZC1jYXJldC1taXN0b2NrLXN0YXRzIiBjbGFzcz0icGVkY2FyZC1jYXJldCI+4pa4IHZlcjwvc3Bhbj4KICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgPGRpdiBpZD0icGVkY2FyZC1ib2R5LW1pc3RvY2stc3RhdHMiIGNsYXNzPSJwZWRjYXJkLWJvZHkgaGlkZGVuIj4KICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW46MCAwIDEwcHg7Ij5MbyBxdWUgbcOhcyAoeSBtZW5vcykgdmVuZGVzLCBzZWfDum4gbG8gcXVlIGhhcyBpZG8gcmVwb3J0YW5kbyBhcXXDrSBhcnJpYmEgbWVzIGEgbWVzIOKAlCBzb2xvIHBhcmEgdHUgcHJvcGlvIGNvbnRyb2wuIEVsaWdlIHF1w6kgdGlwbyBkZSBwcm9kdWN0byB2ZXIuPC9wPgogICAgICAgICAgICA8ZGl2IGlkPSJzdG9yZS1zdGF0cy1ib2R5Ij48L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Zvcm0+CiAgICA8L3NlY3Rpb24+CgogICAgPHNlY3Rpb24gaWQ9InRhYi1hZG1pbiIgY2xhc3M9ImhpZGRlbiI+CiAgICAgIDxkaXYgaWQ9ImFkbWluLWxvZ2luIj4KICAgICAgICA8Zm9ybSBjbGFzcz0iYmxvY2siIG9uc3VibWl0PSJyZXR1cm4gYWRtaW5Mb2dpbihldmVudCkiIHN0eWxlPSJtYXgtd2lkdGg6MzQwcHg7Ij4KICAgICAgICAgIDxoMz5BY2Nlc28gYWRtaW5pc3RyYWRvcjwvaDM+CiAgICAgICAgICA8cCBzdHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tc3VhdmUpO21hcmdpbi10b3A6LThweDsiPk5vcm1hbG1lbnRlIG5vIGhhY2UgZmFsdGEg4oCUIHNpIHlhIGVudHJhc3RlIGNvbiB0dSBlbWFpbCBlbiBsYSBwYW50YWxsYSBpbmljaWFsLCBlc3RvIHNlIHNhbHRhIHNvbG8uIEVzdG8gc29sbyBhcGFyZWNlIHNpIHR1IHNlc2nDs24gaGEgY2FkdWNhZG8uPC9wPgogICAgICAgICAgPGxhYmVsPkVtYWlsPC9sYWJlbD4KICAgICAgICAgIDxpbnB1dCBpZD0iYWRtaW4tZW1haWwiIHR5cGU9ImVtYWlsIiByZXF1aXJlZD4KICAgICAgICAgIDxsYWJlbD5Db250cmFzZcOxYTwvbGFiZWw+CiAgICAgICAgICA8aW5wdXQgaWQ9ImFkbWluLXBhc3MiIHR5cGU9InBhc3N3b3JkIiByZXF1aXJlZD4KICAgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MTZweDsiPjxidXR0b24gY2xhc3M9ImJ0biIgdHlwZT0ic3VibWl0Ij5FbnRyYXI8L2J1dHRvbj48L2Rpdj4KICAgICAgICAgIDxkaXYgaWQ9ImFkbWluLWxvZ2luLW1zZyI+PC9kaXY+CiAgICAgICAgPC9mb3JtPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBpZD0iYWRtaW4tcGFuZWwiIGNsYXNzPSJoaWRkZW4iPgoKICAgICAgICA8IS0tIFBlc3Rhw7FhcyBkZSBBZG1pbiAodGFuZGEgMSwgMDUvMTAvMjAyNik6IHVuYSBzb2xhIGZpbGEgZGUgdGV4dG8sIGxhIGFjdGl2YSBjb24gdW5hIHJheWEgZGUgc3UgY29sb3IgZGViYWpvIChjb21vCiAgICAgICAgICAgICBsYXMgZGUgbGEgdGllbmRhKTsgZW4gZWwgbcOzdmlsIGxhIGZpbGEgc2UgZGVzbGl6YSBkZSBsYWRvLiBEZWJham8sIHVuYSBsw61uZWEgZmlqYSBxdWUgZGljZSBwYXJhIHF1w6kgc2lydmUgY2FkYSB1bmEKICAgICAgICAgICAgIChhbnRlcyBlc3RhYmEgZXNjb25kaWRhIGVuIHVuIMKraSBpbmZvwrspLiAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi10YWJzLXdyYXAiIGlkPSJhZG1pbi10YWJzLXdyYXAiPgogICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4tdGFicyIgaWQ9ImFkbWluLXRhYnMiIHJvbGU9InRhYmxpc3QiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9ImFzdWItY2F0YWxvZ28iIGNsYXNzPSJhY3RpdmUiIG9uY2xpY2s9InNldEFkbWluU3ViKCdjYXRhbG9nbycpIj5DYXTDoWxvZ288L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJhc3ViLXBlZGlkb3MiIG9uY2xpY2s9InNldEFkbWluU3ViKCdwZWRpZG9zJykiPlByZXBhcmFjacOzbiA8c3BhbiBpZD0iYXN1Yi1wZWRpZG9zLWNvdW50IiBjbGFzcz0iYXN1Yi1jb3VudCI+PC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9ImFzdWItc3RvY2siIG9uY2xpY2s9InNldEFkbWluU3ViKCdzdG9jaycpIj5JbnZlbnRhcmlvPC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBpZD0iYXN1Yi12ZW50YXMiIG9uY2xpY2s9InNldEFkbWluU3ViKCd2ZW50YXMnKSI+UmVnaXN0cm8gZGUgdmVudGFzPC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBpZD0iYXN1Yi1lc3RhZGlzdGljYXMiIG9uY2xpY2s9InNldEFkbWluU3ViKCdlc3RhZGlzdGljYXMnKSI+RXN0YWTDrXN0aWNhczwvYnV0dG9uPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9ImFzdWItdGllbmRhcyIgb25jbGljaz0ic2V0QWRtaW5TdWIoJ3RpZW5kYXMnKSI+VGllbmRhczwvYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHAgY2xhc3M9ImFkbWluLWluZm8iIGlkPSJhZG1pbi1pbmZvLXRleHQiPjwvcD4KCiAgICAgICAgPGRpdiBpZD0iYWRtaW4tc3ViLWNhdGFsb2dvIj4KICAgICAgICAgIDxwIGNsYXNzPSJhdmlzby13ZWIiPjxzdHJvbmc+T2pvOiBlc3RvIHRhbWJpw6luIGNhbWJpYSBsYSB0aWVuZGEgZGUgbGEgd2ViPC9zdHJvbmc+IChpc3RyaWNlaWxsdXN0cmF0aW9uLmNvbSksIGVzYSBtaXNtYSBub2NoZS4gVW5hIGzDoW1pbmEgbyBsaWJyZXRhIG51ZXZhIHF1ZSBhY3RpdmVzIGFxdcOtIHNlIHB1YmxpY2Egc29sYTsgc2kgbGEgZGVzYWN0aXZhcywgYWxsw60gc2Ugb2N1bHRhIChubyBzZSBib3JyYSk7IHNpIGxlIGNhbWJpYXMgZWwgbm9tYnJlLCBhbGzDrSB0YW1iacOpbi48L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5WaXNpYmlsaWRhZCBlbiBlbCBjYXTDoWxvZ28gZGUgbGFzIHRpZW5kYXM8L2Rpdj4KICAgICAgICAgIDxwIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7bWFyZ2luLXRvcDotNnB4OyI+TWllbnRyYXMgZXN0w6kgc2luIG1hcmNhciwgZXNlIHRpcG8gZGUgcHJvZHVjdG8gbm8gYXBhcmVjZSBjb21vIHBlc3Rhw7FhIGVuIGVsIGNhdMOhbG9nbyBuaSBlbiBsb3MgZm9ybXVsYXJpb3MgZGUgcGVkaWRvL3ZlbnRhcyBkZSBsYXMgdGllbmRhcyDigJQgcGVybyB0w7ogc8OtIHB1ZWRlcyBhw7FhZGlyIHkgZ2VzdGlvbmFyIHByb2R1Y3RvcyBkZSBlc2UgdGlwbyBhcXXDrSBlbiBBZG1pbi48L3A+CiAgICAgICAgICA8ZGl2IGlkPSJjYXRhbG9nLXZpc2liaWxpdHktdG9nZ2xlcyIgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6MThweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjIwcHg7Ij48L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJwZWRjYXJkIiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxNHB4OyI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icGVkY2FyZC1oZWFkZXIiIG9uY2xpY2s9InRvZ2dsZVBlZGNhcmQoJ2NhdC1hZGQnKSI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBlZGNhcmQtdGl0bGUiPisgQcOxYWRpciBwcm9kdWN0byBudWV2bzwvc3Bhbj4KICAgICAgICAgICAgICA8c3BhbiBpZD0icGVkY2FyZC1jYXJldC1jYXQtYWRkIiBjbGFzcz0icGVkY2FyZC1jYXJldCI+4pa4IHZlcjwvc3Bhbj4KICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDxkaXYgaWQ9InBlZGNhcmQtYm9keS1jYXQtYWRkIiBjbGFzcz0icGVkY2FyZC1ib2R5IGhpZGRlbiI+CiAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9ImJsb2NrIiBvbnN1Ym1pdD0icmV0dXJuIGFkZElsbHVzdHJhdGlvbihldmVudCkiIHN0eWxlPSJtYXJnaW46MDsiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWF4LXdpZHRoOjIyMHB4OyI+PGxhYmVsPlRpcG8gZGUgcHJvZHVjdG88L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9Im5ldy1wcm9kdWN0LXR5cGUiIG9uY2hhbmdlPSJvbk5ld1Byb2R1Y3RUeXBlQ2hhbmdlKCkiPgogICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibGFtaW5hIj5Mw6FtaW5hPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJsaWJyZXRhIj5MaWJyZXRhPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJwZWdhdGluYSI+UGVnYXRpbmE8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1heC13aWR0aDoxODBweDsiPjxsYWJlbD5SZWZlcmVuY2lhIChlai4gSUwtMDgzKTwvbGFiZWw+PGlucHV0IGlkPSJuZXctcmVmIiBwbGFjZWhvbGRlcj0iZWouIElMLTA4MyIgcmVxdWlyZWQ+PC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1heC13aWR0aDoyODBweDsiPjxsYWJlbD5Ob21icmU8L2xhYmVsPjxpbnB1dCBpZD0ibmV3LW5hbWUiIHJlcXVpcmVkPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJuZXctZm9ybWF0cy13cmFwIiBzdHlsZT0ibWF4LXdpZHRoOjI4MHB4OyI+CiAgICAgICAgICAgICAgICAgIDxsYWJlbD5Gb3JtYXRvcyBkaXNwb25pYmxlcyAoc2VwYXJhZG9zIHBvciBjb21hKTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0ibmV3LWZvcm1hdHMiIHZhbHVlPSJBMyxBNCxBNSI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9Im5ldy1zdG9jay13cmFwIiBjbGFzcz0iaGlkZGVuIiBzdHlsZT0ibWF4LXdpZHRoOjIwMHB4OyI+CiAgICAgICAgICAgICAgICAgIDxsYWJlbD5TdG9jayBpbmljaWFsICh1bmlkYWRlcyBxdWUgdGllbmVzKTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0ibmV3LXN0b2NrIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgdmFsdWU9IjAiPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWw+SW1hZ2VuPC9sYWJlbD4KICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0ibmV3LWltYWdlIiB0eXBlPSJmaWxlIiBhY2NlcHQ9ImltYWdlLyoiPgogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4OyI+PGJ1dHRvbiBjbGFzcz0iYnRuIHNtYWxsIiB0eXBlPSJzdWJtaXQiPkHDsWFkaXI8L2J1dHRvbj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9Im5ldy1pbGwtbXNnIj48L2Rpdj4KICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPCEtLSBTZWxlY3RvciBkZSB0aXBvIGluZGVwZW5kaWVudGUgZGVsIGZvcm11bGFyaW8gZGUgIkHDsWFkaXIgcHJvZHVjdG8gbnVldm8iIGRlIGFycmliYSDigJQKICAgICAgICAgICAgICAgYW50ZXMsIHZlci9lZGl0YXIgTGlicmV0YXMgKG8gUGVnYXRpbmFzL0VqZW1wbG8pIGV4aWfDrWEgYWJyaXIgIkHDsWFkaXIgcHJvZHVjdG8gbnVldm8iCiAgICAgICAgICAgICAgIHkgY2FtYmlhciBhaMOtIHN1IGRlc3BsZWdhYmxlIGRlIHRpcG8sIHF1ZSBlbiByZWFsaWRhZCBzb2xvIGRlYmVyw61hIGRlY2lkaXIgcXXDqSBzZQogICAgICAgICAgICAgICBhw7FhZGUsIG5vIHF1w6kgbGlzdGEgc2UgdmUgYWJham8uIE1pc21vIHBhdHLDs24gZGUgcGVzdGHDsWFzIHF1ZSB5YSBzZSB1c2EgZW4gQWRtaW4g4oaSCiAgICAgICAgICAgICAgIFN0b2NrLCBwYXJhIGNvbnN1bHRhci9lZGl0YXIgbG8gcXVlIHlhIGV4aXN0ZSBzaW4gcGFzYXIgcG9yIGVsIGZvcm11bGFyaW8gZGUgYcOxYWRpci4gLS0+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5WZXIgLyBlZGl0YXIgcHJvZHVjdG9zIGV4aXN0ZW50ZXM8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpemVidG5zIiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxNHB4OyI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBpZD0iY2F0dmlldy10eXBlLWxhbWluYSIgY2xhc3M9ImFjdGl2ZSIgb25jbGljaz0ic2V0QWRtaW5DYXRhbG9nVmlld1R5cGUoJ2xhbWluYScpIj5Mw6FtaW5hczwvYnV0dG9uPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9ImNhdHZpZXctdHlwZS1saWJyZXRhIiBvbmNsaWNrPSJzZXRBZG1pbkNhdGFsb2dWaWV3VHlwZSgnbGlicmV0YScpIj5MaWJyZXRhczwvYnV0dG9uPgogICAgICAgICAgICA8c3BhbiBpZD0iY2F0dmlldy10eXBlLWV4dHJhIiBzdHlsZT0iZGlzcGxheTpjb250ZW50czsiPjwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgIDxkaXYgaWQ9ImFkbWluLWxhbWluYXMtc2VjdGlvbiIgY2xhc3M9InBlZGNhcmQiIHN0eWxlPSJtYXJnaW4tYm90dG9tOjE0cHg7Ij4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJwZWRjYXJkLWhlYWRlciIgb25jbGljaz0idG9nZ2xlUGVkY2FyZCgnY2F0LWxhbWluYXMnKSI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBlZGNhcmQtdGl0bGUiPkzDoW1pbmFzIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDo0MDA7Y29sb3I6dmFyKC0tc3VhdmUpOyI+KGVkaXRhciAvIHN1YmlyIGZvdG8gLyBhY3RpdmFyLWRlc2FjdGl2YXIpPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgICA8c3BhbiBpZD0icGVkY2FyZC1jYXJldC1jYXQtbGFtaW5hcyIgY2xhc3M9InBlZGNhcmQtY2FyZXQiPuKWviBvY3VsdGFyPC9zcGFuPgogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPGRpdiBpZD0icGVkY2FyZC1ib2R5LWNhdC1sYW1pbmFzIiBjbGFzcz0icGVkY2FyZC1ib2R5Ij4KICAgICAgICAgICAgICA8aW5wdXQgaWQ9ImFkbWluLWlsbC1zZWFyY2giIHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSJCdXNjYXIgcG9yIHJlZmVyZW5jaWEgbyBub21icmXigKYiIG9uaW5wdXQ9ImZpbHRlckFkbWluSWxsdXN0cmF0aW9ucyh0aGlzLnZhbHVlKSIgc3R5bGU9Im1heC13aWR0aDozMjBweDtwYWRkaW5nOjhweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6NnB4O2ZvbnQtc2l6ZToxNHB4O21hcmdpbi1ib3R0b206MTJweDtkaXNwbGF5OmJsb2NrOyI+CiAgICAgICAgICAgICAgPGRpdiBpZD0iYWRtaW4taWxsdXN0cmF0aW9ucyI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBpZD0iYWRtaW4tbGlicmV0YXMtc2VjdGlvbiIgY2xhc3M9InBlZGNhcmQgaGlkZGVuIiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxNHB4OyI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icGVkY2FyZC1oZWFkZXIiIG9uY2xpY2s9InRvZ2dsZVBlZGNhcmQoJ2NhdC1saWJyZXRhcycpIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGVkY2FyZC10aXRsZSI+TGlicmV0YXMgPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OjQwMDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij4oZWRpdGFyIC8gc3RvY2sgLyBzdWJpciBmb3RvIC8gYWN0aXZhci1kZXNhY3RpdmFyKTwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgICAgPHNwYW4gaWQ9InBlZGNhcmQtY2FyZXQtY2F0LWxpYnJldGFzIiBjbGFzcz0icGVkY2FyZC1jYXJldCI+4pa+IG9jdWx0YXI8L3NwYW4+CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8ZGl2IGlkPSJwZWRjYXJkLWJvZHktY2F0LWxpYnJldGFzIiBjbGFzcz0icGVkY2FyZC1ib2R5Ij4KICAgICAgICAgICAgICA8aW5wdXQgaWQ9ImFkbWluLWxpYnJldGEtc2VhcmNoIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iQnVzY2FyIHBvciByZWZlcmVuY2lhIG8gbm9tYnJl4oCmIiBvbmlucHV0PSJmaWx0ZXJBZG1pbkxpYnJldGFzKHRoaXMudmFsdWUpIiBzdHlsZT0ibWF4LXdpZHRoOjMyMHB4O3BhZGRpbmc6OHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo2cHg7Zm9udC1zaXplOjE0cHg7bWFyZ2luLWJvdHRvbToxMnB4O2Rpc3BsYXk6YmxvY2s7Ij4KICAgICAgICAgICAgICA8ZGl2IGlkPSJhZG1pbi1saWJyZXRhcyI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBpZD0iYWRtaW4tZXh0cmEtc2VjdGlvbnMiPjwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGlkPSJhZG1pbi1zdWItcGVkaWRvcyIgY2xhc3M9ImhpZGRlbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwZWRpZG9zLWdyaWQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwZWRpZG9zLWNvbCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGVkY2FyZCIgaWQ9InBlZGNhcmQtcGVuZGllbnRlcyI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InBlZGNhcmQtaGVhZGVyIiBvbmNsaWNrPSJ0b2dnbGVQZWRjYXJkKCdwZW5kaWVudGVzJykiPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGVkY2FyZC10aXRsZSI+UGVkaWRvcyBwZW5kaWVudGVzIDxzcGFuIGlkPSJwZWRpZG9zLWNvdW50IiBzdHlsZT0iZm9udC13ZWlnaHQ6NDAwO2NvbG9yOnZhcigtLXN1YXZlKTsiPjwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4OyI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9InBlZGNhcmQtc3VtbWFyeS1wZW5kaWVudGVzIiBjbGFzcz0icGVkY2FyZC1zdW1tYXJ5Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9InBlZGNhcmQtY2FyZXQtcGVuZGllbnRlcyIgY2xhc3M9InBlZGNhcmQtY2FyZXQiPuKWviBvY3VsdGFyPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9InBlZGNhcmQtYm9keS1wZW5kaWVudGVzIiBjbGFzcz0icGVkY2FyZC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW4tdG9wOjA7Ij5BZ3J1cGFkb3MgcG9yIHRpZW5kYS4gQ3VhbmRvIG1hcnF1ZXMgY29tbyBwcmVwYXJhZG8vaW1wcmVzbyB0b2RvIGxvIGRlIHVuIHBlZGlkbywgYXBhcmVjZXLDoSBjb24g4pyTIHkgcG9kcsOhcyBkZXNwYWNoYXJsbyBkZSBnb2xwZSBjb24gZWwgYm90w7NuIGRlIHN1IHRpZW5kYS48L3A+CiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MTBweDsiPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIHNlY29uZGFyeSBzbWFsbCIgb25jbGljaz0iZG93bmxvYWRPcmRlcnNDU1YoKSI+RGVzY2FyZ2FyIEV4Y2VsPC9idXR0b24+PC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImFkbWluLW9yZGVycyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBlZGlkb3MtY29sIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwZWRjYXJkIiBpZD0icGVkY2FyZC1sYW1pbmFzIj4KICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icGVkY2FyZC1oZWFkZXIiIG9uY2xpY2s9InRvZ2dsZVBlZGNhcmQoJ2xhbWluYXMnKSI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwZWRjYXJkLXRpdGxlIj5Mw6FtaW5hcyBwYXJhIGltcHJpbWlyPC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDsiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJwZWRjYXJkLXN1bW1hcnktbGFtaW5hcyIgY2xhc3M9InBlZGNhcmQtc3VtbWFyeSI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJwZWRjYXJkLWNhcmV0LWxhbWluYXMiIGNsYXNzPSJwZWRjYXJkLWNhcmV0Ij7ilrggdmVyPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9InBlZGNhcmQtYm9keS1sYW1pbmFzIiBjbGFzcz0icGVkY2FyZC1ib2R5IGhpZGRlbiI+CiAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImFkbWluLXByaW50LXN1bW1hcnkiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGVkY2FyZCIgaWQ9InBlZGNhcmQtbGlicmV0YXMiPgogICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJwZWRjYXJkLWhlYWRlciIgb25jbGljaz0idG9nZ2xlUGVkY2FyZCgnbGlicmV0YXMnKSI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwZWRjYXJkLXRpdGxlIj5MaWJyZXRhcyBwZW5kaWVudGVzPC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDsiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJwZWRjYXJkLXN1bW1hcnktbGlicmV0YXMiIGNsYXNzPSJwZWRjYXJkLXN1bW1hcnkiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0icGVkY2FyZC1jYXJldC1saWJyZXRhcyIgY2xhc3M9InBlZGNhcmQtY2FyZXQiPuKWuCB2ZXI8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGRpdiBpZD0icGVkY2FyZC1ib2R5LWxpYnJldGFzIiBjbGFzcz0icGVkY2FyZC1ib2R5IGhpZGRlbiI+CiAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImFkbWluLWxpYnJldGFzLXN1bW1hcnkiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBpZD0iYWRtaW4tZXh0cmEtcGVkY2FyZHMiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MjhweDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1saW5lKTtwYWRkaW5nLXRvcDoxNnB4OyI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIHNlY29uZGFyeSIgb25jbGljaz0idG9nZ2xlSGlzdG9yaWFsUGVkaWRvcygpIiBpZD0iaGlzdG9yaWFsLXRvZ2dsZS1idG4iPlZlciBoaXN0b3JpYWwgZGUgcGVkaWRvcyAoZW52aWFkb3MgLyBjYW5jZWxhZG9zKTwvYnV0dG9uPgogICAgICAgICAgICA8cCBzdHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tc3VhdmUpO21hcmdpbjo2cHggMCAwOyI+QXF1w60gcHVlZGVzIGNhbWJpYXIgZWwgZXN0YWRvIGRlIHVuIHBlZGlkbyB5YSBlbnZpYWRvIG8gYm9ycmFybG8gKHBvciBlamVtcGxvLCB1bmEgcHJ1ZWJhIG8gdW4gZXJyb3IpOyB0ZSBwcmVndW50YXLDoSBzaSBkZXZvbHZlciBsYXMgdW5pZGFkZXMgYSB0dSBzdG9jay48L3A+CiAgICAgICAgICAgIDxkaXYgaWQ9Imhpc3RvcmlhbC1wZWRpZG9zLXdyYXAiIGNsYXNzPSJoaWRkZW4iIHN0eWxlPSJtYXJnaW4tdG9wOjE0cHg7Ij4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5IaXN0b3JpYWwgZGUgcGVkaWRvczwvZGl2PgogICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6MTJweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjEwcHg7YWxpZ24taXRlbXM6ZmxleC1lbmQ7Ij4KICAgICAgICAgICAgICAgIDxkaXY+PGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS1zdWF2ZSk7ZGlzcGxheTpibG9jazsiPlRpZW5kYTwvbGFiZWw+PHNlbGVjdCBpZD0iaGlzdG9yaWFsLWZpbHRlci1jaGFubmVsIiBvbmNoYW5nZT0ibG9hZEhpc3RvcmlhbFBlZGlkb3MoKSIgc3R5bGU9InBhZGRpbmc6N3B4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo2cHg7bWF4LXdpZHRoOjIyMHB4OyI+PG9wdGlvbiB2YWx1ZT0iIj5Ub2Rhczwvb3B0aW9uPjwvc2VsZWN0PjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj48bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXN1YXZlKTtkaXNwbGF5OmJsb2NrOyI+TWVzPC9sYWJlbD48c2VsZWN0IGlkPSJoaXN0b3JpYWwtZmlsdGVyLW1vbnRoIiBvbmNoYW5nZT0ibG9hZEhpc3RvcmlhbFBlZGlkb3MoKSIgc3R5bGU9Im1heC13aWR0aDoxNjBweDtwYWRkaW5nOjdweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6NnB4OyI+PC9zZWxlY3Q+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PjxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tc3VhdmUpO2Rpc3BsYXk6YmxvY2s7Ij5Fc3RhZG88L2xhYmVsPjxzZWxlY3QgaWQ9Imhpc3RvcmlhbC1maWx0ZXItc3RhdHVzIiBvbmNoYW5nZT0ibG9hZEhpc3RvcmlhbFBlZGlkb3MoKSIgc3R5bGU9InBhZGRpbmc6N3B4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo2cHg7bWF4LXdpZHRoOjIyMHB4OyI+PG9wdGlvbiB2YWx1ZT0iIj5FbnZpYWRvcyB5IGNhbmNlbGFkb3M8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJlbnZpYWRvIj5Tb2xvIGVudmlhZG9zPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iY2FuY2VsYWRvIj5Tb2xvIGNhbmNlbGFkb3M8L29wdGlvbj48L3NlbGVjdD48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gc2Vjb25kYXJ5IHNtYWxsIiBvbmNsaWNrPSJkb3dubG9hZEhpc3RvcmlhbENTVigpIj5EZXNjYXJnYXIgRXhjZWw8L2J1dHRvbj48L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGlkPSJoaXN0b3JpYWwtcGVkaWRvcy1jb3VudCIgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW4tYm90dG9tOjhweDsiPjwvZGl2PgogICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im92ZXJmbG93LXg6YXV0bzsiPjx0YWJsZSBpZD0iYWRtaW4tb3JkZXJzLWhpc3RvcmlhbCI+PHRoZWFkPjx0cj48dGg+RmVjaGE8L3RoPjx0aD5DYW5hbDwvdGg+PHRoPkNsaWVudGU8L3RoPjx0aD7DjXRlbXM8L3RoPjx0aD5Fc3RhZG88L3RoPjx0aD5BY2Npb25lczwvdGg+PC90cj48L3RoZWFkPjx0Ym9keT48L3Rib2R5PjwvdGFibGU+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgaWQ9ImFkbWluLXN1Yi1zdG9jayIgY2xhc3M9ImhpZGRlbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaXplYnRucyIgc3R5bGU9Im1hcmdpbi1ib3R0b206MTZweDsiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9InN0b2NrLXR5cGUtbGFtaW5hIiBjbGFzcz0iYWN0aXZlIiBvbmNsaWNrPSJzZXRTdG9ja1ZpZXdUeXBlKCdsYW1pbmEnKSI+TMOhbWluYXM8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJzdG9jay10eXBlLWxpYnJldGEiIG9uY2xpY2s9InNldFN0b2NrVmlld1R5cGUoJ2xpYnJldGEnKSI+TGlicmV0YXM8L2J1dHRvbj4KICAgICAgICAgICAgPHNwYW4gaWQ9InN0b2NrLXR5cGUtZXh0cmEiIHN0eWxlPSJkaXNwbGF5OmNvbnRlbnRzOyI+PC9zcGFuPgogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBpZD0ic3RvY2stbGFtaW5hcy1ibG9jayIgY2xhc3M9InBlZGNhcmQiIHN0eWxlPSJtYXJnaW4tYm90dG9tOjE0cHg7Ij4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJwZWRjYXJkLWhlYWRlciIgb25jbGljaz0idG9nZ2xlUGVkY2FyZCgnc3RvY2stbGFtaW5hcycpIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGVkY2FyZC10aXRsZSI+U3RvY2sgZGUgaW1wcmVzaW9uZXMgKGzDoW1pbmFzKTwvc3Bhbj4KICAgICAgICAgICAgICA8c3BhbiBpZD0icGVkY2FyZC1jYXJldC1zdG9jay1sYW1pbmFzIiBjbGFzcz0icGVkY2FyZC1jYXJldCI+4pa+IG9jdWx0YXI8L3NwYW4+CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8ZGl2IGlkPSJwZWRjYXJkLWJvZHktc3RvY2stbGFtaW5hcyIgY2xhc3M9InBlZGNhcmQtYm9keSI+CiAgICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW4tdG9wOjA7Ij5BcXXDrSBzb2xvIGFwYXJlY2UgbG8gcXVlIHRlIGhhIHF1ZWRhZG8gaW1wcmVzbyB5IHNpbiBlbnZpYXIg4oCUIGxvIG5vcm1hbCBlcyBpbXByaW1pciBhbCBtb21lbnRvIHkgcXVlIGVzdGEgbGlzdGEgZXN0w6kgY2FzaSB2YWPDrWEuIEN1YW5kbyBpbXByaW1hcyBkZSBtw6FzIHkgdGUgc29icmUgYWxnbywgYcOxw6FkZWxvIGFiYWpvLjwvcD4KICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOjEwcHg7YmFja2dyb3VuZDp2YXIoLS1jcmVtYS0yKTtib3JkZXItcmFkaXVzOjhweDttYXJnaW4tYm90dG9tOjE0cHg7Ij4KICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tc3VhdmUpO2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTo0cHg7Ij5FbGlnZSBsYSBpbHVzdHJhY2nDs24gcG9yIHN1IGZvdG88L2xhYmVsPgogICAgICAgICAgICAgICAgPGlucHV0IGlkPSJhZGRzdG9jay1pbGwtc2VhcmNoIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iQnVzY2FyIHBvciByZWZlcmVuY2lhIG8gbm9tYnJlIChvcGNpb25hbCnigKYiIG9uaW5wdXQ9InJlbmRlckFkZFN0b2NrUGlja2VyKCkiIHN0eWxlPSJ3aWR0aDoxMDAlO21heC13aWR0aDozMjBweDtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6NnB4O21hcmdpbi1ib3R0b206OHB4OyI+CiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9ImFkZHN0b2NrLWlsbCIgdHlwZT0iaGlkZGVuIj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImFkZHN0b2NrLWlsbC1waWNrZXIiIHN0eWxlPSJkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjZweDttYXgtaGVpZ2h0OjIwMHB4O292ZXJmbG93LXk6YXV0bztwYWRkaW5nOjJweDsiPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDo4cHg7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6ZmxleC1lbmQ7bWFyZ2luLXRvcDoxMHB4OyI+CiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZsZXg6MjttaW4td2lkdGg6MTYwcHg7Ij48bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTtkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206MnB4OyI+RWxlZ2lkYTwvbGFiZWw+PGRpdiBpZD0iYWRkc3RvY2staWxsLXNlbGVjdGVkIiBzdHlsZT0icGFkZGluZzo2cHg7Zm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tYXZpc28pOyI+TmluZ3VuYSDigJQgdG9jYSB1bmEgZm90byBkZSBhcnJpYmE8L2Rpdj48L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWluLXdpZHRoOjkwcHg7Ij48bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTtkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206MnB4OyI+Rm9ybWF0bzwvbGFiZWw+PHNlbGVjdCBpZD0iYWRkc3RvY2stZm10IiBzdHlsZT0id2lkdGg6MTAwJTtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6NnB4OyI+PC9zZWxlY3Q+PC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1heC13aWR0aDo4MHB4OyI+PGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjJweDsiPkNhbnRpZGFkPC9sYWJlbD48aW5wdXQgaWQ9ImFkZHN0b2NrLXF0eSIgdHlwZT0ibnVtYmVyIiBtaW49IjEiIHZhbHVlPSIxIiBzdHlsZT0id2lkdGg6MTAwJTtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6NnB4OyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIHNtYWxsIiBvbmNsaWNrPSJhZGRBZG1pblN0b2NrRW50cnkoKSI+KyBBw7FhZGlyIHN0b2NrPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8aW5wdXQgaWQ9ImFkbWluLXN0b2NrLXNlYXJjaCIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IkJ1c2NhciBwb3IgcmVmZXJlbmNpYSBvIG5vbWJyZS4uLiIgb25pbnB1dD0iZmlsdGVyQWRtaW5TdG9jaygpIiBzdHlsZT0id2lkdGg6MTAwJTttYXgtd2lkdGg6MzIwcHg7cGFkZGluZzo4cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjZweDttYXJnaW4tYm90dG9tOjEwcHg7Ij4KICAgICAgICAgICAgICA8ZGl2IGlkPSJhZG1pbi1zdG9jayI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBpZD0ic3RvY2stbGlicmV0YXMtYmxvY2siIGNsYXNzPSJwZWRjYXJkIGhpZGRlbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206MTRweDsiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InBlZGNhcmQtaGVhZGVyIiBvbmNsaWNrPSJ0b2dnbGVQZWRjYXJkKCdzdG9jay1saWJyZXRhcycpIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGVkY2FyZC10aXRsZSI+U3RvY2sgZGUgbGlicmV0YXM8L3NwYW4+CiAgICAgICAgICAgICAgPHNwYW4gaWQ9InBlZGNhcmQtY2FyZXQtc3RvY2stbGlicmV0YXMiIGNsYXNzPSJwZWRjYXJkLWNhcmV0Ij7ilr4gb2N1bHRhcjwvc3Bhbj4KICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDxkaXYgaWQ9InBlZGNhcmQtYm9keS1zdG9jay1saWJyZXRhcyIgY2xhc3M9InBlZGNhcmQtYm9keSI+CiAgICAgICAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZzoxMHB4O2JhY2tncm91bmQ6dmFyKC0tY3JlbWEtMik7Ym9yZGVyLXJhZGl1czo4cHg7bWFyZ2luLWJvdHRvbToxNHB4OyI+CiAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTtkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206NHB4OyI+RWxpZ2UgbGEgbGlicmV0YSBwb3Igc3UgZm90bzwvbGFiZWw+CiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9ImFkZHN0b2NrLWxiLXNlYXJjaCIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IkJ1c2NhciBwb3IgcmVmZXJlbmNpYSBvIG5vbWJyZSAob3BjaW9uYWwp4oCmIiBvbmlucHV0PSJyZW5kZXJTdG9ja0FkZFBpY2tlckdlbmVyaWMoJ2xpYnJldGEnKSIgc3R5bGU9IndpZHRoOjEwMCU7bWF4LXdpZHRoOjMyMHB4O3BhZGRpbmc6NnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo2cHg7bWFyZ2luLWJvdHRvbTo4cHg7Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iYWRkc3RvY2stbGItaWQiIHR5cGU9ImhpZGRlbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJhZGRzdG9jay1sYi1waWNrZXIiIHN0eWxlPSJkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjZweDttYXgtaGVpZ2h0OjIwMHB4O292ZXJmbG93LXk6YXV0bztwYWRkaW5nOjJweDsiPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDo4cHg7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6ZmxleC1lbmQ7bWFyZ2luLXRvcDoxMHB4OyI+CiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZsZXg6MjttaW4td2lkdGg6MTYwcHg7Ij48bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTtkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206MnB4OyI+RWxlZ2lkYTwvbGFiZWw+PGRpdiBpZD0iYWRkc3RvY2stbGItc2VsZWN0ZWQiIHN0eWxlPSJwYWRkaW5nOjZweDtmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1hdmlzbyk7Ij5OaW5ndW5hIOKAlCB0b2NhIHVuYSBmb3RvIGRlIGFycmliYTwvZGl2PjwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJtYXgtd2lkdGg6ODBweDsiPjxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tc3VhdmUpO2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbToycHg7Ij5DYW50aWRhZDwvbGFiZWw+PGlucHV0IGlkPSJhZGRzdG9jay1sYi1xdHkiIHR5cGU9Im51bWJlciIgbWluPSIxIiB2YWx1ZT0iMSIgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzo2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjZweDsiPjwvZGl2PgogICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBzbWFsbCIgb25jbGljaz0iYWRkU3RvY2tFbnRyeUdlbmVyaWMoJ2xpYnJldGEnKSI+KyBBw7FhZGlyIHN0b2NrPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8cCBzdHlsZT0iZm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tc3VhdmUpO21hcmdpbi10b3A6MDsiPkxhcyBxdWUgdGllbmVuIG1lbm9zIHN0b2NrIHNhbGVuIHJlc2FsdGFkYXMgYXJyaWJhLjwvcD4KICAgICAgICAgICAgICA8aW5wdXQgaWQ9ImFkbWluLWxpYnJldGFzLXN0b2NrLXNlYXJjaCIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IkJ1c2NhciBwb3IgcmVmZXJlbmNpYSBvIG5vbWJyZS4uLiIgb25pbnB1dD0iZmlsdGVyTGlicmV0YXNTdG9jaygpIiBzdHlsZT0id2lkdGg6MTAwJTttYXgtd2lkdGg6MzIwcHg7cGFkZGluZzo4cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjZweDttYXJnaW4tYm90dG9tOjEwcHg7Ij4KICAgICAgICAgICAgICA8ZGl2IGlkPSJhZG1pbi1saWJyZXRhcy1zdG9jayI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBpZD0ic3RvY2stZXh0cmEtYmxvY2tzIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBpZD0iYWRtaW4tc3ViLXZlbnRhcyIgY2xhc3M9ImhpZGRlbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwZWRjYXJkIiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxNHB4OyI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icGVkY2FyZC1oZWFkZXIiIG9uY2xpY2s9InRvZ2dsZVBlZGNhcmQoJ2FkbXNhbGUtZm9ybScpIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGVkY2FyZC10aXRsZSI+SW5zZXJ0YXIgdmVudGEgYSBub21icmUgZGUgdW5hIHRpZW5kYTwvc3Bhbj4KICAgICAgICAgICAgICA8c3BhbiBpZD0icGVkY2FyZC1jYXJldC1hZG1zYWxlLWZvcm0iIGNsYXNzPSJwZWRjYXJkLWNhcmV0Ij7ilrggdmVyPC9zcGFuPgogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPGRpdiBpZD0icGVkY2FyZC1ib2R5LWFkbXNhbGUtZm9ybSIgY2xhc3M9InBlZGNhcmQtYm9keSBoaWRkZW4iPgogICAgICAgICAgICAgIDxwIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7bWFyZ2luLXRvcDowOyI+UGFyYSBjdWFuZG8gdW5hIHRpZW5kYSBubyByZXBvcnRhIGVsbGEgbWlzbWEgc3VzIHZlbnRhcyB5IG9zIHBhc2EgbG9zIGRhdG9zIGFwYXJ0ZSAoV2hhdHNBcHAsIGVtYWlsLi4uKSDigJQgc2Ugc3VtYSBhIGxvIHF1ZSB5YSBodWJpZXJhIHJlZ2lzdHJhZG8gcGFyYSBlc2EgdGllbmRhL2lsdXN0cmFjacOzbi9mb3JtYXRvL21lcywgaWd1YWwgcXVlIHNpIGxvIGh1YmllcmEgcmVwb3J0YWRvIGVsbGEuPC9wPgogICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJibG9jayIgb25zdWJtaXQ9InJldHVybiBzdWJtaXRBZG1pblNhbGUoZXZlbnQpIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTowOyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciIHN0eWxlPSJmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpmbGV4LWVuZDsiPgogICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJmbGV4OjE7bWluLXdpZHRoOjE4MHB4OyI+PGxhYmVsPlRpZW5kYTwvbGFiZWw+PHNlbGVjdCBpZD0iYWRtc2FsZS1jaGFubmVsIiByZXF1aXJlZCBvbmNoYW5nZT0icmVmcmVzaEFkbWluU2FsZVN0b2NrUHJldmlldygpOyByZWZyZXNoQWRtaW5TYWxlSWxsT3B0aW9ucygpOyI+PC9zZWxlY3Q+PC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1heC13aWR0aDoxNzBweDsiPjxsYWJlbD5NZXM8L2xhYmVsPjxzZWxlY3QgaWQ9ImFkbXNhbGUtbW9udGgiIHJlcXVpcmVkPjwvc2VsZWN0PjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaXplYnRucyIgc3R5bGU9Im1hcmdpbjoxMHB4IDA7Ij4KICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJhZG1zYWxlLXR5cGUtbGFtaW5hIiBjbGFzcz0iYWN0aXZlIiBvbmNsaWNrPSJzZXRBZG1pblNhbGVUeXBlKCdsYW1pbmEnKSI+TMOhbWluYXM8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJhZG1zYWxlLXR5cGUtbGlicmV0YSIgb25jbGljaz0ic2V0QWRtaW5TYWxlVHlwZSgnbGlicmV0YScpIj5MaWJyZXRhczwvYnV0dG9uPgogICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iYWRtc2FsZS10eXBlLWV4dHJhIiBzdHlsZT0iZGlzcGxheTpjb250ZW50czsiPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9ImluZm8taGludCIgb3BlbiBzdHlsZT0ibWFyZ2luOjEwcHggMDsiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeT48c3BhbiBjbGFzcz0iaW5mby1pY29uIj5pPC9zcGFuPjxzcGFuIGNsYXNzPSJpbmZvLWxhYmVsIj5zdG9jayBkZSBlc3RhIHRpZW5kYTwvc3Bhbj48L3N1bW1hcnk+CiAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImFkbXNhbGUtc3RvY2stcHJldmlldyIgc3R5bGU9Im1hcmdpbi10b3A6NnB4OyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJhZG1zYWxlLW5vc3RvY2stbXNnIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyIgc3R5bGU9ImFsaWduLWl0ZW1zOmZsZXgtZW5kO2ZsZXgtd3JhcDp3cmFwOyI+CiAgICAgICAgICAgICAgICAgIDxkaXY+PGxhYmVsPkZvcm1hdG88L2xhYmVsPjxzZWxlY3QgaWQ9ImFkbXNhbGUtZm10IiBvbmNoYW5nZT0idXBkYXRlQWRtaW5TYWxlTWF4VUkoKSI+PC9zZWxlY3Q+PC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1heC13aWR0aDo5MHB4OyI+PGxhYmVsPlVuaWRhZGVzPC9sYWJlbD48aW5wdXQgaWQ9ImFkbXNhbGUtcXR5IiB0eXBlPSJudW1iZXIiIG1pbj0iMSIgdmFsdWU9IjEiPjwvZGl2PgogICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBzbWFsbCIgb25jbGljaz0ic3VibWl0QWRtaW5TYWxlKGV2ZW50KSI+UmVnaXN0cmFyIHZlbnRhPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImFkbXNhbGUtbXNnIj48L2Rpdj4KICAgICAgICAgICAgICAgIDwhLS0gMTYvMDkvMjAyNjogZWwgcGlja2VyIGRlIGlsdXN0cmFjacOzbiB2YSBhbCBmaW5hbCBkZWwgdG9kbyBkZWwgZm9ybXVsYXJpbyAoYW50ZXMKICAgICAgICAgICAgICAgICAgICAgcXVlZGFiYSBzdWVsdG8gZW50cmUgZWwgc3RvY2sgeSBGb3JtYXRvL1VuaWRhZGVzL0JvdMOzbikg4oCUIFJhw7psIHBpZGnDsyBxdWUgbm8gcXVlZGFyYQogICAgICAgICAgICAgICAgICAgICBhc8OtIGRlIHNlcGFyYWRvIHkgcXVlIGxhcyBtaW5pYXR1cmFzIGZ1ZXJhbiBhYmFqbyBkZWwgdG9kby4gLS0+CiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOjE0cHg7Ij4KICAgICAgICAgICAgICAgICAgPGxhYmVsPklsdXN0cmFjacOzbjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9ImFkbXNhbGUtaWxsIiBvbmNoYW5nZT0icmVmcmVzaEZvcm1hdE9wdGlvbnModGhpcywgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbXNhbGUtZm10JykpOyB1cGRhdGVBZG1pblNhbGVNYXhVSSgpOyByZW5kZXJBZG1pblNhbGVJbGxQaWNrZXIoKTsiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iYWRtc2FsZS1pbGwtcGlja2VyIiBzdHlsZT0iZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHg7bWFyZ2luLXRvcDo0cHg7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iYWRtc2FsZS1pbGwtc2VsZWN0ZWQiIHN0eWxlPSJmb250LXNpemU6MTJweDttYXJnaW4tdG9wOjRweDsiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgIDxkaXYgY2xhc3M9InBlZGNhcmQiIHN0eWxlPSJtYXJnaW4tYm90dG9tOjE0cHg7Ij4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJwZWRjYXJkLWhlYWRlciIgb25jbGljaz0idG9nZ2xlUGVkY2FyZCgndmVudGFzLXJlcG9ydGFkYXMnKSI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBlZGNhcmQtdGl0bGUiPlZlbnRhcyBtZW5zdWFsZXMgcmVwb3J0YWRhcyBwb3IgY2FuYWw8L3NwYW4+CiAgICAgICAgICAgICAgPHNwYW4gaWQ9InBlZGNhcmQtY2FyZXQtdmVudGFzLXJlcG9ydGFkYXMiIGNsYXNzPSJwZWRjYXJkLWNhcmV0Ij7ilr4gb2N1bHRhcjwvc3Bhbj4KICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIDxkaXYgaWQ9InBlZGNhcmQtYm9keS12ZW50YXMtcmVwb3J0YWRhcyIgY2xhc3M9InBlZGNhcmQtYm9keSI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93IiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxMHB4OyI+CiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJtYXgtd2lkdGg6MjIwcHg7Ij48bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXN1YXZlKTsiPkNhbmFsPC9sYWJlbD48c2VsZWN0IGlkPSJzYWxlcy1maWx0ZXItY2hhbm5lbCIgb25jaGFuZ2U9ImZpbHRlckFkbWluU2FsZXMoKSI+PG9wdGlvbiB2YWx1ZT0iIj5Ub2Rvczwvb3B0aW9uPjwvc2VsZWN0PjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWF4LXdpZHRoOjE2MHB4OyI+PGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij5NZXM8L2xhYmVsPjxzZWxlY3QgaWQ9InNhbGVzLWZpbHRlci1tb250aCIgb25jaGFuZ2U9ImZpbHRlckFkbWluU2FsZXMoKSI+PG9wdGlvbiB2YWx1ZT0iIj5Ub2Rvczwvb3B0aW9uPjwvc2VsZWN0PjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWF4LXdpZHRoOjE2MHB4OyI+PGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij5UaXBvPC9sYWJlbD48c2VsZWN0IGlkPSJzYWxlcy1maWx0ZXItdHlwZSIgb25jaGFuZ2U9ImZpbHRlckFkbWluU2FsZXMoKSI+PG9wdGlvbiB2YWx1ZT0iIj5Ub2Rvczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImxhbWluYSI+TMOhbWluYXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJsaWJyZXRhIj5MaWJyZXRhczwvb3B0aW9uPjwvc2VsZWN0PjwvZGl2PgogICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gc2Vjb25kYXJ5IHNtYWxsIiBvbmNsaWNrPSJkb3dubG9hZFNhbGVzQ1NWKCkiPkRlc2NhcmdhciBFeGNlbDwvYnV0dG9uPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im92ZXJmbG93LXg6YXV0bzsiPjx0YWJsZSBpZD0iYWRtaW4tc2FsZXMiPjx0aGVhZD48dHI+PHRoPk1lczwvdGg+PHRoPkNhbmFsPC90aD48dGg+SWx1c3RyYWNpw7NuPC90aD48dGg+Rm9ybWF0bzwvdGg+PHRoPlVuaWRhZGVzPC90aD48dGg+QWNjaW9uZXM8L3RoPjwvdHI+PC90aGVhZD48dGJvZHk+PC90Ym9keT48L3RhYmxlPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGlkPSJhZG1pbi1zdWItZXN0YWRpc3RpY2FzIiBjbGFzcz0iaGlkZGVuIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPkVzdGFkw61zdGljYXM8L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6MjRweDthbGlnbi1pdGVtczpmbGV4LWVuZDttYXJnaW4tYm90dG9tOjE0cHg7Ij4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9ImRpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tc3VhdmUpO21hcmdpbi1ib3R0b206NXB4OyI+VmlzdGE8L2xhYmVsPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNpemVidG5zIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LTZweDsiPgogICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJzdGF0cy12aWV3LXZlbmRpZGFzIiBjbGFzcz0iYWN0aXZlIiBvbmNsaWNrPSJzZXRTdGF0c1ZpZXcoJ3ZlbmRpZGFzJykiPk3DoXMgdmVuZGlkYXM8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBpZD0ic3RhdHMtdmlldy1mdWVyYSIgb25jbGljaz0ic2V0U3RhdHNWaWV3KCdmdWVyYScpIj5GdWVyYSBlbiBkZXDDs3NpdG88L2J1dHRvbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW4tYm90dG9tOjVweDsiPlRpcG88L2xhYmVsPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNpemVidG5zIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LTZweDsiPgogICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJzdGF0cy10eXBlLXRvZG9zIiBjbGFzcz0iYWN0aXZlIiBvbmNsaWNrPSJzZXRTdGF0c1R5cGUoJ3RvZG9zJykiPlRvZG9zPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9InN0YXRzLXR5cGUtbGFtaW5hIiBvbmNsaWNrPSJzZXRTdGF0c1R5cGUoJ2xhbWluYScpIj5Mw6FtaW5hczwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJzdGF0cy10eXBlLWxpYnJldGEiIG9uY2xpY2s9InNldFN0YXRzVHlwZSgnbGlicmV0YScpIj5MaWJyZXRhczwvYnV0dG9uPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPCEtLSBUYW5kYSAzIChQMTgsIDA2LzEwLzIwMjYpOiBwZXJpb2RvLCBkw7NuZGUgc2UgdmVuZGnDsyAodGllbmRhcyBvIGxhIHdlYikgeSBlbCB0b3RhbCBhcnJpYmEgLS0+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0cy1maWx0cm9zMiIgaWQ9InN0YXRzLWZpbHRyb3MtdmVudGFzIj4KICAgICAgICAgICAgPGRpdj48bGFiZWwgZm9yPSJzdGF0cy1wZXJpb2RvIj5QZXJpb2RvPC9sYWJlbD48c2VsZWN0IGlkPSJzdGF0cy1wZXJpb2RvIiBvbmNoYW5nZT0ic2V0U3RhdHNQZXJpb2RvKHRoaXMudmFsdWUpIj48b3B0aW9uIHZhbHVlPSJ0b2RvIj5Ub2RvPC9vcHRpb24+PC9zZWxlY3Q+PC9kaXY+CiAgICAgICAgICAgIDxkaXY+PGxhYmVsPkTDs25kZTwvbGFiZWw+PGRpdiBjbGFzcz0ic2l6ZWJ0bnMiIHN0eWxlPSJtYXJnaW4tbGVmdDotNnB4OyI+CiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJzdGF0cy1jYW5hbC10b2RvIiBjbGFzcz0iYWN0aXZlIiBvbmNsaWNrPSJzZXRTdGF0c0NhbmFsKCd0b2RvJykiPlRvZG88L2J1dHRvbj4KICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9InN0YXRzLWNhbmFsLXRpZW5kYXMiIG9uY2xpY2s9InNldFN0YXRzQ2FuYWwoJ3RpZW5kYXMnKSI+VGllbmRhczwvYnV0dG9uPgogICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBpZD0ic3RhdHMtY2FuYWwtd2ViIiBvbmNsaWNrPSJzZXRTdGF0c0NhbmFsKCd3ZWInKSI+V2ViPC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PjwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cCBpZD0iYWRtaW4tc3RhdHMtY2FwdGlvbiIgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW4tdG9wOi02cHg7Ij5Tb2xvIGN1ZW50YSBsbyByZXBvcnRhZG8gY29tbyB2ZW5kaWRvIHBvciBjYWRhIHRpZW5kYS48L3A+CiAgICAgICAgICA8ZGl2IGlkPSJhZG1pbi1zdGF0cy10b3RhbCIgY2xhc3M9InN0YXRzLXRvdGFsIj48L2Rpdj4KICAgICAgICAgIDxkaXYgaWQ9ImFkbWluLXN0YXRzIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBpZD0iYWRtaW4tc3ViLXRpZW5kYXMiIGNsYXNzPSJoaWRkZW4iPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+VGllbmRhcyAobm9tYnJlLCBlbWFpbCwgdGVsw6lmb25vLCBjaXVkYWQgeSBjb250cmFzZcOxYSBkZSBhY2Nlc28pPC9kaXY+CiAgICAgICAgICA8ZGl2IGlkPSJhZG1pbi1jaGFubmVscyI+PC9kaXY+CgogICAgICAgICAgPGRpdiBjbGFzcz0icGVkY2FyZCIgc3R5bGU9Im1hcmdpbi10b3A6MTRweDsiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InBlZGNhcmQtaGVhZGVyIiBvbmNsaWNrPSJ0b2dnbGVQZWRjYXJkKCdhZGQtY2hhbm5lbCcpIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGVkY2FyZC10aXRsZSI+KyBBw7FhZGlyIHRpZW5kYSBudWV2YTwvc3Bhbj4KICAgICAgICAgICAgICA8c3BhbiBpZD0icGVkY2FyZC1jYXJldC1hZGQtY2hhbm5lbCIgY2xhc3M9InBlZGNhcmQtY2FyZXQiPuKWuCB2ZXI8L3NwYW4+CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8ZGl2IGlkPSJwZWRjYXJkLWJvZHktYWRkLWNoYW5uZWwiIGNsYXNzPSJwZWRjYXJkLWJvZHkgaGlkZGVuIj4KICAgICAgICAgICAgICA8Zm9ybSBjbGFzcz0iYmxvY2siIG9uc3VibWl0PSJyZXR1cm4gYWRkQ2hhbm5lbChldmVudCkiIHN0eWxlPSJtYXJnaW4tYm90dG9tOjA7Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1heC13aWR0aDoyNjBweDsiPjxsYWJlbD5Ob21icmU8L2xhYmVsPjxpbnB1dCBpZD0ibmV3LWNoYW5uZWwtbmFtZSIgcmVxdWlyZWQ+PC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1heC13aWR0aDoyNjBweDsiPjxsYWJlbD5FbWFpbCBkZSBjb250YWN0byAob3BjaW9uYWwpPC9sYWJlbD48aW5wdXQgaWQ9Im5ldy1jaGFubmVsLWVtYWlsIiB0eXBlPSJlbWFpbCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1heC13aWR0aDoyMDBweDsiPjxsYWJlbD5UZWzDqWZvbm8gKG9wY2lvbmFsKTwvbGFiZWw+PGlucHV0IGlkPSJuZXctY2hhbm5lbC1waG9uZSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1heC13aWR0aDoyMDBweDsiPjxsYWJlbD5DaXVkYWQgKG9wY2lvbmFsKTwvbGFiZWw+PGlucHV0IGlkPSJuZXctY2hhbm5lbC1jaXR5Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4OyI+PGJ1dHRvbiBjbGFzcz0iYnRuIHNtYWxsIiB0eXBlPSJzdWJtaXQiPkHDsWFkaXI8L2J1dHRvbj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9Im5ldy1jaGFubmVsLW1zZyI+PC9kaXY+CiAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgIDxkZXRhaWxzIHN0eWxlPSJtYXJnaW4tdG9wOjI4cHg7cGFkZGluZy10b3A6MTRweDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1saW5lKTsiPgogICAgICAgICAgICA8c3VtbWFyeSBzdHlsZT0iY3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tc3VhdmUpO2ZvbnQtd2VpZ2h0OjYwMDsiPkNhbWJpYXIgbWkgY29udHJhc2XDsWEgPHNwYW4gaWQ9ImN1cnJlbnQtYWRtaW4tZW1haWwiIHN0eWxlPSJmb250LXdlaWdodDo0MDA7Y29sb3I6dmFyKC0tc3VhdmUpO2ZvbnQtc2l6ZToxMnB4OyI+PC9zcGFuPjwvc3VtbWFyeT4KICAgICAgICAgICAgPGZvcm0gY2xhc3M9ImJsb2NrIiBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4OyIgb25zdWJtaXQ9InJldHVybiBjaGFuZ2VQYXNzd29yZChldmVudCkiPgogICAgICAgICAgICAgIDxpbnB1dCBpZD0ibmV3LXBhc3MiIHR5cGU9InBhc3N3b3JkIiBwbGFjZWhvbGRlcj0iTnVldmEgY29udHJhc2XDsWEiIHJlcXVpcmVkIG1pbmxlbmd0aD0iNiIgc3R5bGU9Im1heC13aWR0aDoyODBweDsiPgogICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MTBweDsiPjxidXR0b24gY2xhc3M9ImJ0biBzbWFsbCIgdHlwZT0ic3VibWl0Ij5BY3R1YWxpemFyIGNvbnRyYXNlw7FhPC9idXR0b24+PC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBpZD0icGFzcy1tc2ciPjwvZGl2PgogICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICA8L2RldGFpbHM+CgogICAgICAgICAgPGRldGFpbHMgaWQ9ImFjdGl2aXR5LWxvZy1kZXRhaWxzIiBzdHlsZT0ibWFyZ2luLXRvcDoxNnB4O3BhZGRpbmctdG9wOjE0cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tbGluZSk7IiBvbnRvZ2dsZT0iaWYodGhpcy5vcGVuKSBsb2FkQWN0aXZpdHlMb2coKSI+CiAgICAgICAgICAgIDxzdW1tYXJ5IHN0eWxlPSJjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Zm9udC13ZWlnaHQ6NjAwOyI+UmVnaXN0cm8gZGUgYWN0aXZpZGFkIChxdWnDqW4gZW50cmEgeSBxdcOpIGhhY2UpPC9zdW1tYXJ5PgogICAgICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOjEwcHg7Ij4KICAgICAgICAgICAgICA8cCBzdHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tc3VhdmUpO21hcmdpbjowIDAgMTBweDsiPlRvZG8gbG8gcXVlIHNlIGhhY2UgZW4gbGEgd2ViIOKAlCBwZWRpZG9zLCB2ZW50YXMsIHN0b2NrLCBjYXTDoWxvZ28sIGRhdG9zIGRlIGxhcyB0aWVuZGFzIHkgYWNjZXNvcyDigJQgY29uIHF1acOpbiBsbyBoaXpvLiBMbyBtw6FzIHJlY2llbnRlIGFycmliYTsgc2UgZ3VhcmRhIDEyIG1lc2VzLjwvcD4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rsb2ctZmlsdGVycyI+CiAgICAgICAgICAgICAgICA8ZGl2PjxsYWJlbD5UaXBvPC9sYWJlbD48c2VsZWN0IGlkPSJhY3Rsb2ctdHlwZSIgb25jaGFuZ2U9InJlbmRlckFjdGl2aXR5TG9nKCkiPgogICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJzaW4tYWNjZXNvcyIgc2VsZWN0ZWQ+VG9kbyBtZW5vcyBhY2Nlc29zPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IiI+VG9kbzwvb3B0aW9uPgogICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJwZWRpZG8iPlBlZGlkb3M8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0idmVudGEiPlZlbnRhczwvb3B0aW9uPgogICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJzdG9jayI+U3RvY2s8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iY2F0YWxvZ28iPkNhdMOhbG9nbzwvb3B0aW9uPgogICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJkYXRvcyI+RGF0b3MgZGUgdGllbmRhczwvb3B0aW9uPgogICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJsb2dpbiI+QWNjZXNvczwvb3B0aW9uPgogICAgICAgICAgICAgICAgPC9zZWxlY3Q+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PjxsYWJlbD5RdWnDqW48L2xhYmVsPjxzZWxlY3QgaWQ9ImFjdGxvZy1hY3RvciIgb25jaGFuZ2U9InJlbmRlckFjdGl2aXR5TG9nKCkiPjxvcHRpb24gdmFsdWU9IiI+VG9kb3M8L29wdGlvbj48L3NlbGVjdD48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+PGxhYmVsPkRlc2RlPC9sYWJlbD48aW5wdXQgdHlwZT0iZGF0ZSIgaWQ9ImFjdGxvZy1mcm9tIiBvbmNoYW5nZT0ibG9hZEFjdGl2aXR5TG9nKCkiPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj48bGFiZWw+SGFzdGE8L2xhYmVsPjxpbnB1dCB0eXBlPSJkYXRlIiBpZD0iYWN0bG9nLXRvIiBvbmNoYW5nZT0ibG9hZEFjdGl2aXR5TG9nKCkiPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj48bGFiZWw+QnVzY2FyPC9sYWJlbD48aW5wdXQgdHlwZT0ic2VhcmNoIiBpZD0iYWN0bG9nLXEiIHBsYWNlaG9sZGVyPSJJTC0wMDEsIHRpZW5kYeKApiIgb25pbnB1dD0icmVuZGVyQWN0aXZpdHlMb2coKSI+PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBpZD0iYWN0aXZpdHktbG9nLWNvdW50IiBzdHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tc3VhdmUpO21hcmdpbjo2cHggMDsiPjwvZGl2PgogICAgICAgICAgICAgIDxkaXYgaWQ9ImFjdGl2aXR5LWxvZy1saXN0IiBzdHlsZT0iZm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0taW5rKTttYXgtaGVpZ2h0OjQyMHB4O292ZXJmbG93LXk6YXV0bzsiPjwvZGl2PgogICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MTBweDsiPjxidXR0b24gY2xhc3M9ImJ0biBzbWFsbCIgdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJkb3dubG9hZEFjdGl2aXR5TG9nKCkiPkRlc2NhcmdhciBFeGNlbCAobG8gZmlsdHJhZG8pPC9idXR0b24+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kZXRhaWxzPgoKICAgICAgICAgIDxkZXRhaWxzIGlkPSJiYWNrdXBzLWRldGFpbHMiIHN0eWxlPSJtYXJnaW4tdG9wOjE2cHg7cGFkZGluZy10b3A6MTRweDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1saW5lKTsiIG9udG9nZ2xlPSJpZih0aGlzLm9wZW4pIGxvYWRCYWNrdXBzKCkiPgogICAgICAgICAgICA8c3VtbWFyeSBzdHlsZT0iY3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tc3VhdmUpO2ZvbnQtd2VpZ2h0OjYwMDsiPkNvcGlhcyBkZSBzZWd1cmlkYWQ8L3N1bW1hcnk+CiAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MTBweDsiPgogICAgICAgICAgICAgIDxwIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7bWFyZ2luOjAgMCAxMHB4OyI+U2UgZ2VuZXJhIHNvbGEsIGF1dG9tw6F0aWNhbWVudGUsIGNhZGEgMTUgZMOtYXMgKGRhdG9zIGRlIFN1cGFiYXNlIOKAlCBwZWRpZG9zLCB2ZW50YXMsIHN0b2NrLCB0aWVuZGFzLCBpbHVzdHJhY2lvbmVzLCBldGMuOyBubyBpbmNsdXllIGxhcyBpbcOhZ2VuZXMpLiBEZXNjYXJnYSBsYSBxdWUgcXVpZXJhcyBjdWFuZG8gcXVpZXJhcy48L3A+CiAgICAgICAgICAgICAgPGRpdiBpZD0iYmFja3Vwcy1saXN0IiBzdHlsZT0iZm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0taW5rKTsiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CgogIDwvbWFpbj4KPC9kaXY+Cgo8ZGl2IGlkPSJtb2RhbC1yb290Ij48L2Rpdj4KCjxzY3JpcHQ+CmNvbnN0IFNVUEFCQVNFX1VSTCA9ICJodHRwczovL2JxeWtuZWRncHdvY25vd3RqaXBjLnN1cGFiYXNlLmNvIjsKY29uc3QgU1VQQUJBU0VfQU5PTl9LRVkgPSAiZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnBjM01pT2lKemRYQmhZbUZ6WlNJc0luSmxaaUk2SW1KeGVXdHVaV1JuY0hkdlkyNXZkM1JxYVhCaklpd2ljbTlzWlNJNkltRnViMjRpTENKcFlYUWlPakUzT0RnME9UVTBOemdzSW1WNGNDSTZNakV3TkRBM01UUTNPSDAuRU9UcTlqbHFrajloa2xrcHRHR0hOcG52T25abU5ubk9pUFVjSEl1b2VlYyI7CmNvbnN0IHNiID0gc3VwYWJhc2UuY3JlYXRlQ2xpZW50KFNVUEFCQVNFX1VSTCwgU1VQQUJBU0VfQU5PTl9LRVkpOwovLyAtLS0tLS0tLS0tIElESU9NQVMgKDE5LzA5LzIwMjYpIC0tLS0tLS0tLS0KLy8gTGEgcGFydGUgZGUgdGllbmRhcyBzZSBwdWVkZSB2ZXIgZW4gZXNwYcOxb2wsIGluZ2zDqXMgbyBpdGFsaWFuby4gQWRtaW4gc2llbXByZSBlbiBlc3Bhw7FvbC4KLy8gQ8OzbW8gZnVuY2lvbmE6IGxvcyB0ZXh0b3Mgc2UgZXNjcmliZW4gZW4gZXNwYcOxb2wgY29tbyBzaWVtcHJlOyBJMThOIHRyYWR1Y2UgcG9yIGVsIHRleHRvCi8vIGV4YWN0byAoc2luIGVzcGFjaW9zIGRlIGxvcyBsYWRvcykuIFVuIG9ic2VydmFkb3IgdHJhZHVjZSBzb2xvIGN1YWxxdWllciB0ZXh0byBudWV2byBxdWUKLy8gYXBhcmV6Y2EgZW4gcGFudGFsbGEgKGZ1ZXJhIGRlIEFkbWluKS4gTGFzIGZyYXNlcyBjb24gZGF0b3MgdXNhbiB0KCfigKYge259IOKApicsIHtufSkuCi8vIFBhcmEgYcOxYWRpciB1biB0ZXh0byBudWV2byBkZSB0aWVuZGFzOiBlc2NyaWJpcmxvIGVuIGVzcGHDsW9sIHkgYcOxYWRpciBzdSBsw61uZWEgZW4gZW4vaXQuCmNvbnN0IExBTkdTID0gWydlcycsJ2VuJywnaXQnXTsKY29uc3QgTEFOR19MT0NBTEVTID0ge2VzOidlcy1FUycsIGVuOidlbi1HQicsIGl0OidpdC1JVCd9Owpjb25zdCBJMThOID0gewplbjogewogICdUZSBxdWVkYSB7bn0gZW4gdHUgdGllbmRhIChsbyBtw6F4aW1vIHF1ZSBwdWVkZXMgcmVwb3J0YXIpLic6J1lvdSBoYXZlIHtufSBsZWZ0IGluIHlvdXIgc2hvcCAodGhlIG1vc3QgeW91IGNhbiByZXBvcnQpLicsCiAgJ1RlIHF1ZWRhbiB7bn0gZW4gdHUgdGllbmRhIChsbyBtw6F4aW1vIHF1ZSBwdWVkZXMgcmVwb3J0YXIpLic6J1lvdSBoYXZlIHtufSBsZWZ0IGluIHlvdXIgc2hvcCAodGhlIG1vc3QgeW91IGNhbiByZXBvcnQpLicsCiAgJ05vIHNlIHB1ZG8gY29uZWN0YXIuIFJldmlzYSB0dSBjb25leGnDs24gYSBpbnRlcm5ldCBlIGludMOpbnRhbG8gb3RyYSB2ZXouJzonQ291bGQgbm90IGNvbm5lY3QuIENoZWNrIHlvdXIgaW50ZXJuZXQgY29ubmVjdGlvbiBhbmQgdHJ5IGFnYWluLicsCiAgJ05vIHNlIHB1ZGllcm9uIGNhcmdhciB0dXMgcGVkaWRvcy4gUmV2aXNhIHR1IGNvbmV4acOzbiB5IHZ1ZWx2ZSBhIGVudHJhciBlbiBQZWRpZG9zLic6J1lvdXIgb3JkZXJzIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENoZWNrIHlvdXIgY29ubmVjdGlvbiBhbmQgb3BlbiBPcmRlcnMgYWdhaW4uJywKICAnU2UgY29ydMOzIGxhIGNvbmV4acOzbiB5IG5vIHNhYmVtb3Mgc2kgZWwgcGVkaWRvIGhhIGxsZWdhZG8uIEFudGVzIGRlIHZvbHZlciBhIGVudmlhcmxvLCBjaWVycmEgZXN0YSB2ZW50YW5hIHkgbWlyYSDCq1R1cyBwZWRpZG9zwrs6IHNpIGFwYXJlY2UsIHlhIGVzdMOhLic6J1RoZSBjb25uZWN0aW9uIGRyb3BwZWQgYW5kIHdlIGRvbuKAmXQga25vdyBpZiB5b3VyIG9yZGVyIGFycml2ZWQuIEJlZm9yZSBzZW5kaW5nIGl0IGFnYWluLCBjbG9zZSB0aGlzIHdpbmRvdyBhbmQgY2hlY2sg4oCcWW91ciBvcmRlcnPigJ06IGlmIGl04oCZcyB0aGVyZSwgeW914oCZcmUgZG9uZS4nLAogICdMaXN0YSc6J0xpc3QnLAogICdFbiB0dSB0aWVuZGE6IHtufSc6J0luIHlvdXIgc2hvcDoge259JywnRW4gdHUgdGllbmRhIHRlIHF1ZWRhIHtufSc6J1lvdSBoYXZlIHtufSBsZWZ0IGluIHlvdXIgc2hvcCcsJ0VuIHR1IHRpZW5kYSB0ZSBxdWVkYW4ge259JzonWW91IGhhdmUge259IGxlZnQgaW4geW91ciBzaG9wJywKICAvLyBUYW5kYSAyICgwNi8xMC8yMDI2KQogICdhcnTDrWN1bG8nOidpdGVtJywnYXJ0w61jdWxvcyc6J2l0ZW1zJywnRWxpZ2XigKYnOidDaG9vc2XigKYnLCdFbiB0dSBwZWRpZG86IHtufSc6J0luIHlvdXIgb3JkZXI6IHtufScsCiAgJ0FjZXB0YXInOidPSycsJ0NhbmNlbGFyJzonQ2FuY2VsJywKICAnVnVlbHZlIGEgZXNjcmliaXIgdHUgY29udHJhc2XDsWEgcGFyYSBlZGl0YXIgdHVzIGRhdG9zIGRlIGZhY3R1cmFjacOzbjonOidUeXBlIHlvdXIgcGFzc3dvcmQgYWdhaW4gdG8gZWRpdCB5b3VyIGJpbGxpbmcgZGV0YWlsczonLAogIC8vIEFjY2VzbwogICdBY2Nlc28gcHJpdmFkbyBhbCBjYXTDoWxvZ28nOidQcml2YXRlIGNhdGFsb2d1ZSBhY2Nlc3MnLAogICdVc3VhcmlvIChub21icmUgZGUgdHUgdGllbmRhKSc6J1VzZXJuYW1lICh5b3VyIHNob3AgbmFtZSknLAogICdVc3VhcmlvJzonVXNlcm5hbWUnLAogICdDb250cmFzZcOxYSc6J1Bhc3N3b3JkJywKICAnRW50cmFyJzonU2lnbiBpbicsCiAgJ8K\/UHJvYmxlbWFzIHBhcmEgZW50cmFyPyBFc2Nyw61iZW5vcyBhJzonVHJvdWJsZSBzaWduaW5nIGluPyBXcml0ZSB0byB1cyBhdCcsCiAgJ1VzdWFyaW8gbyBjb250cmFzZcOxYSBpbmNvcnJlY3Rvcyc6J1dyb25nIHVzZXJuYW1lIG9yIHBhc3N3b3JkJywKICAnSWRpb21hJzonTGFuZ3VhZ2UnLAogIC8vIENhYmVjZXJhIHkgbWVuw7oKICAnQ2F0w6Fsb2dvJzonQ2F0YWxvZ3VlJywKICAnUGVkaWRvcyc6J09yZGVycycsCiAgJ1ZlbnRhcyB5IHN0b2NrJzonU2FsZXMgJiBzdG9jaycsCiAgJ01pcyBkYXRvcyc6J015IGRldGFpbHMnLAogICdDZXJyYXIgc2VzacOzbic6J1NpZ24gb3V0JywKICAnQ3VlbnRhIGRlIGRlbW9zdHJhY2nDs24g4oCUIHB1ZWRlcyBuYXZlZ2FyIHkgcHJvYmFyIHRvZG8sIHBlcm8gbmFkYSBkZSBsbyBxdWUgZW52w61lcyBhcXXDrSBzZSBndWFyZGEgZGUgdmVyZGFkLic6J0RlbW8gYWNjb3VudCDigJQgZmVlbCBmcmVlIHRvIGJyb3dzZSBhbmQgdHJ5IGV2ZXJ5dGhpbmc7IG5vdGhpbmcgeW91IHNlbmQgaGVyZSBpcyBhY3R1YWxseSBzYXZlZC4nLAogIC8vIENhdMOhbG9nbwogICfimIUgTmV3Jzon4piFIE5ldycsCiAgJ0zDoW1pbmFzJzonUHJpbnRzJywKICAnTGlicmV0YXMnOidOb3RlYm9va3MnLAogICdQZWdhdGluYXMnOidTdGlja2VycycsCiAgJ0zDoW1pbmEnOidQcmludCcsJ2zDoW1pbmFzJzoncHJpbnRzJywnTGlicmV0YSc6J05vdGVib29rJywnbGlicmV0YXMnOidub3RlYm9va3MnLCdQZWdhdGluYSc6J1N0aWNrZXInLCdwZWdhdGluYXMnOidzdGlja2VycycsCiAgJ0J1c2NhciBwb3Igbm9tYnJlIG8gcmVmZXJlbmNpYSc6J1NlYXJjaCBieSBuYW1lIG9yIHJlZmVyZW5jZScsCiAgJ0J1c2NhciBlbiBlbCBjYXTDoWxvZ28nOidTZWFyY2ggdGhlIGNhdGFsb2d1ZScsCiAgJ1BlcXVlw7FvJzonU21hbGwnLAogICdHcmFuZGUnOidMYXJnZScsCiAgJ25vdmVkYWQnOiduZXcgaXRlbScsJ25vdmVkYWRlcyc6J25ldyBpdGVtcycsCiAgJ05vIGhheSB7dGlwb30gcXVlIGNvaW5jaWRhbiBjb24gwqt7cX3Cuy4gUHJ1ZWJhIGVuIG90cmEgcGVzdGHDsWEgbyBjb24gb3RyYSBwYWxhYnJhLic6J05vIHt0aXBvfSBtYXRjaCDigJx7cX3igJ0uIFRyeSBhbm90aGVyIHRhYiBvciBhbm90aGVyIHdvcmQuJywKICAnVGllbmVzIHtufSc6J1lvdSBoYXZlIHtufScsCiAgJ0xvIHF1ZSB0ZSBxdWVkYSBlbiB0aWVuZGEgKHRvZG9zIGxvcyBmb3JtYXRvcyknOidXaGF0IHlvdSBoYXZlIGxlZnQgaW4geW91ciBzaG9wIChhbGwgc2l6ZXMpJywKICAnc2luIGltYWdlbic6J25vIGltYWdlJywKICAnRm9ybWF0byc6J1NpemUnLAogICdDYW50aWRhZCc6J1F1YW50aXR5JywKICAnQcOxYWRpciBhbCBwZWRpZG8nOidBZGQgdG8gb3JkZXInLAogICfinJMgQcOxYWRpZG8nOifinJMgQWRkZWQnLAogICdDZXJyYXInOidDbG9zZScsJ0FudGVyaW9yJzonUHJldmlvdXMnLCdTaWd1aWVudGUnOidOZXh0JywnTWVub3MnOidMZXNzJywnTcOhcyc6J01vcmUnLAogICfinJMgQcOxYWRpZG8g4oCUIHtufSDCtyB7dG90YWx9IGVuIHRvdGFsIGVuIHR1IHBlZGlkbyc6J+KckyBBZGRlZCDigJQge259IMK3IHt0b3RhbH0gaW4geW91ciBvcmRlciBpbiB0b3RhbCcsCiAgJ3tufSB1bmlkYWQnOid7bn0gdW5pdCcsJ3tufSB1bmlkYWRlcyc6J3tufSB1bml0cycsCiAgJ1ZlciBtaSBwZWRpZG8g4oaSJzonU2VlIG15IG9yZGVyIOKGkicsCiAgLy8gUGVkaWRvcwogICdUdXMgcGVkaWRvcyc6J1lvdXIgb3JkZXJzJywKICAnVG9kYXbDrWEgbm8gaGFzIGhlY2hvIG5pbmfDum4gcGVkaWRvLic6J1lvdSBoYXZlbuKAmXQgcGxhY2VkIGFueSBvcmRlcnMgeWV0LicsCiAgJ+KWuCB2ZXIgZGV0YWxsZSc6J+KWuCBkZXRhaWxzJywn4pa+IG9jdWx0YXInOifilr4gaGlkZScsJ+KWuCB2ZXInOifilrggc2hvdycsCiAgJ3BlbmRpZW50ZSc6J3BlbmRpbmcnLCdyZWNpYmlkbyc6J3JlY2VpdmVkJywnZW52aWFkbyc6J3NoaXBwZWQnLCdjYW5jZWxhZG8nOidjYW5jZWxsZWQnLAogICdFbnZpYWRvIGVsIHtmZWNoYX0nOidTaGlwcGVkIG9uIHtmZWNoYX0nLCdTZWd1aW1pZW50bzonOidUcmFja2luZzonLAogICdOb3RhczonOidOb3RlczonLAogICfihrsgUmVwZXRpciBlc3RlIHBlZGlkbyc6J+KGuyBSZXBlYXQgdGhpcyBvcmRlcicsCiAgJ051ZXZvIHBlZGlkbyc6J05ldyBvcmRlcicsCiAgJ1BlZGlkbyBwYXJhJzonT3JkZXIgZm9yJywKICAnTm9tYnJlIGRlIGNvbnRhY3RvJzonQ29udGFjdCBuYW1lJywKICAnQXJ0w61jdWxvcyBwZWRpZG9zJzonSXRlbXMgb3JkZXJlZCcsCiAgJysgQcOxYWRpciB7dGlwb30nOicrIEFkZCB7dGlwb30nLAogICdOb3Rhcyc6J05vdGVzJywKICAnRW52aWFyIHBlZGlkbyc6J1NlbmQgb3JkZXInLAogICdUdSBwZWRpZG8gZXN0w6EgdmFjw61vLiBBw7FhZGUgYXJ0w61jdWxvcyBkZXNkZSBlbCB7bGlua30gbyBjb24gZWwgYm90w7NuIGRlIGFycmliYS4nOidZb3VyIG9yZGVyIGlzIGVtcHR5LiBBZGQgaXRlbXMgZnJvbSB0aGUge2xpbmt9IG9yIHdpdGggdGhlIGJ1dHRvbiBhYm92ZS4nLAogICdBcnTDrWN1bG8nOidJdGVtJywKICAnVW5hIG1lbm9zJzonT25lIGxlc3MnLCdVbmEgbcOhcyc6J09uZSBtb3JlJywKICAnUXVpdGFyIGRlbCBwZWRpZG8nOidSZW1vdmUgZnJvbSBvcmRlcicsCiAgJ8K\/UXVpdGFyIHt3aGF0fSBkZWwgcGVkaWRvP1xuXG5TZSBxdWl0YW4gbGFzIHtufSB1bmlkYWRlcyBkZSBlc3RhIGzDrW5lYS4gU2kgc29sbyBxdWllcmVzIHBlZGlyIG1lbm9zLCB1c2EgZWwgYm90w7NuIOKIki4nOidSZW1vdmUge3doYXR9IGZyb20gdGhlIG9yZGVyP1xuXG5BbGwge259IHVuaXRzIG9uIHRoaXMgbGluZSB3aWxsIGJlIHJlbW92ZWQuIElmIHlvdSBqdXN0IHdhbnQgZmV3ZXIsIHVzZSB0aGUg4oiSIGJ1dHRvbi4nLAogICdlc3RlIGFydMOtY3Vsbyc6J3RoaXMgaXRlbScsCiAgJ0VsaWdlIGxhIHRpZW5kYS9jbGllbnRlLic6J0Nob29zZSB0aGUgc2hvcC9jdXN0b21lci4nLAogICdBw7FhZGUgYWwgbWVub3MgdW4gYXJ0w61jdWxvLic6J0FkZCBhdCBsZWFzdCBvbmUgaXRlbS4nLAogICdBw7FhZGUgYWwgbWVub3MgdW4gYXJ0w61jdWxvJzonQWRkIGF0IGxlYXN0IG9uZSBpdGVtJywKICAnQ29uZmlybWFyIHBlZGlkbyc6J0NvbmZpcm0gb3JkZXInLAogICdSZXZpc2EgcXVlIGVzdMOpIHRvZG8gYmllbiBhbnRlcyBkZSBlbnZpYXJsby4nOidDaGVjayBldmVyeXRoaW5nIGlzIHJpZ2h0IGJlZm9yZSBzZW5kaW5nLicsCiAgJ1PDrSwgZW52aWFyIHBlZGlkbyc6J1llcywgc2VuZCBvcmRlcicsCiAgJ1JldmlzYXIgZGUgbnVldm8nOidHbyBiYWNrIGFuZCBjaGVjaycsCiAgJ1RpZW5kYTonOidTaG9wOicsJ0NvbnRhY3RvOic6J0NvbnRhY3Q6JywnTWVzOic6J01vbnRoOicsCiAgJ3tufSBlbiB0b3RhbCc6J3tufSBpbiB0b3RhbCcsCiAgJ1BlZGlkbyBlbnZpYWRvLiDCoUdyYWNpYXMhJzonT3JkZXIgc2VudC4gVGhhbmsgeW91IScsCiAgJ1BlZGlkbyBlbnZpYWRvLiDCoUdyYWNpYXMhIChkZW1vIOKAlCBubyBzZSBoYSBndWFyZGFkbyBuYWRhIHJlYWwpJzonT3JkZXIgc2VudC4gVGhhbmsgeW91ISAoZGVtbyDigJQgbm90aGluZyB3YXMgYWN0dWFsbHkgc2F2ZWQpJywKICAnVnVlbHZlIGEgZXNjcmliaXIgbGEgY29udHJhc2XDsWEgZGUgdHUgdGllbmRhIHBhcmEgY29udGludWFyOic6J1BsZWFzZSB0eXBlIHlvdXIgc2hvcCBwYXNzd29yZCBhZ2FpbiB0byBjb250aW51ZTonLAogICfCv1JlcG9uZXIgbG8gdmVuZGlkbz8nOidSZXN0b2NrIHdoYXQgeW91IHNvbGQ\/JywKICAnRW4ge21lc30gdmVuZGlzdGU6IHtsaXN0YX0nOidJbiB7bWVzfSB5b3Ugc29sZDoge2xpc3RhfScsCiAgJ3kge259IG3DoXMnOidhbmQge259IG1vcmUnLAogICdBw7FhZGlyIGVzYXMgY2FudGlkYWRlcyBhbCBwZWRpZG8nOidBZGQgdGhvc2UgcXVhbnRpdGllcyB0byB0aGUgb3JkZXInLAogICdBw7FhZGlkbyhzKSB7bn0gYXJ0w61jdWxvKHMpIGRlbCBwZWRpZG8gZGVsIHtmZWNoYX0uIFJldmlzYSBsYXMgY2FudGlkYWRlcyB5IHB1bHNhIHtidG59Lic6J0FkZGVkIHtufSBpdGVtKHMpIGZyb20gdGhlIG9yZGVyIG9mIHtmZWNoYX0uIENoZWNrIHRoZSBxdWFudGl0aWVzIGFuZCBwcmVzcyB7YnRufS4nLAogICdBw7FhZGlkbyhzKSB7bn0gYXJ0w61jdWxvKHMpIGRlIGxvIHZlbmRpZG8gZW4ge21lc30uIFJldmlzYSBsYXMgY2FudGlkYWRlcyB5IHB1bHNhIHtidG59Lic6J0FkZGVkIHtufSBpdGVtKHMpIGZyb20gd2hhdCB5b3Ugc29sZCBpbiB7bWVzfS4gQ2hlY2sgdGhlIHF1YW50aXRpZXMgYW5kIHByZXNzIHtidG59LicsCiAgJ1lhIG5vIGVzdMOhbiBlbiBlbCBjYXTDoWxvZ286IHtsaXN0YX0uJzonTm8gbG9uZ2VyIGluIHRoZSBjYXRhbG9ndWU6IHtsaXN0YX0uJywKICAvLyBWZW50YXMKICAnVGllbmRhJzonU2hvcCcsCiAgJ01lcyc6J01vbnRoJywKICAnVW5pZGFkZXMgdmVuZGlkYXMnOidVbml0cyBzb2xkJywKICAnwr9RdcOpIGhhcyB2ZW5kaWRvIGVuIHttZXN9Pyc6J1doYXQgZGlkIHlvdSBzZWxsIGluIHttZXN9PycsCiAgJ0VzdGEgdGllbmRhIG5vIHRpZW5lIHt0aXBvfSBlbiBzdG9jaywgYXPDrSBxdWUgbm8gaGF5IG5hZGEgcXVlIHJlcG9ydGFyIGFxdcOtLic6J1RoaXMgc2hvcCBoYXMgbm8ge3RpcG99IGluIHN0b2NrLCBzbyB0aGVyZSBpcyBub3RoaW5nIHRvIHJlcG9ydCBoZXJlLicsCiAgJ+KckyBDb25maXJtYXIgbMOtbmVhJzon4pyTIENvbmZpcm0gbGluZScsCiAgJ0VkaXRhcic6J0VkaXQnLAogICdRdWl0YXInOidSZW1vdmUnLAogICfCv1F1aXRhciB7d2hhdH0gZGVsIHJlcG9ydGU\/JzonUmVtb3ZlIHt3aGF0fSBmcm9tIHRoZSByZXBvcnQ\/JywKICAnZXN0YSBsw61uZWEnOid0aGlzIGxpbmUnLAogICdFbGlnZSBpbHVzdHJhY2nDs24geSBmb3JtYXRvLic6J0Nob29zZSBhbiBpdGVtIGFuZCBzaXplLicsCiAgJ0luZGljYSB1bmEgY2FudGlkYWQgbWF5b3IgcXVlIDAuJzonRW50ZXIgYSBxdWFudGl0eSBncmVhdGVyIHRoYW4gMC4nLAogICdZYSBoYXMgcmVzZXJ2YWRvIHRvZG8gZWwgc3RvY2sgZGlzcG9uaWJsZSBkZSBlc3RlIGZvcm1hdG8gZW4gb3RyYSBsw61uZWEgZGUgZXN0YSBsaXN0YS4nOidZb3UgaGF2ZSBhbHJlYWR5IHVzZWQgYWxsIHRoZSBhdmFpbGFibGUgc3RvY2sgb2YgdGhpcyBzaXplIGluIGFub3RoZXIgbGluZSBvZiB0aGlzIGxpc3QuJywKICAnRW50cmUgZXN0YSBsw61uZWEgeSBsYXMgcXVlIHlhIHRpZW5lcyBjb25maXJtYWRhcyBkZSBlc3RlIGZvcm1hdG8sIHNvbG8gcXVlZGFuIHtufSB1bmlkYWRlcyBkaXNwb25pYmxlcy4nOidCZXR3ZWVuIHRoaXMgbGluZSBhbmQgdGhlIG9uZXMgeW91IGhhdmUgYWxyZWFkeSBjb25maXJtZWQgZm9yIHRoaXMgc2l6ZSwgb25seSB7bn0gdW5pdHMgYXJlIGF2YWlsYWJsZS4nLAogICdDb25maXJtYSAobyBxdWl0YSkgdG9kYXMgbGFzIGzDrW5lYXMgYW50ZXMgZGUgZW52aWFyIGVsIHJlcG9ydGUg4oCUIGhheSB7bn0gc2luIGNvbmZpcm1hci4nOidDb25maXJtIChvciByZW1vdmUpIGV2ZXJ5IGxpbmUgYmVmb3JlIHNlbmRpbmcgdGhlIHJlcG9ydCDigJQge259IG5vdCBjb25maXJtZWQgeWV0LicsCiAgJ0luZGljYSBhbCBtZW5vcyB1bmEgdW5pZGFkIHZlbmRpZGEuJzonRW50ZXIgYXQgbGVhc3Qgb25lIHVuaXQgc29sZC4nLAogICdFbCBzdG9jayBoYSBjYW1iaWFkbyBtaWVudHJhcyByZWxsZW5hYmFzIGVsIGZvcm11bGFyaW8g4oCUIHJldmlzYSBsYXMgY2FudGlkYWRlcyBlIGludMOpbnRhbG8gZGUgbnVldm8uJzonU3RvY2sgY2hhbmdlZCB3aGlsZSB5b3Ugd2VyZSBmaWxsaW5nIGluIHRoZSBmb3JtIOKAlCBjaGVjayB0aGUgcXVhbnRpdGllcyBhbmQgdHJ5IGFnYWluLicsCiAgJ0VudmlhciByZXBvcnRlJzonU2VuZCByZXBvcnQnLAogICdDb25maXJtYXIgcmVwb3J0ZSc6J0NvbmZpcm0gcmVwb3J0JywKICAnU8OtLCBlbnZpYXIgcmVwb3J0ZSc6J1llcywgc2VuZCByZXBvcnQnLAogICd7bn0gdmVuZGlkYXMgZW4gdG90YWwnOid7bn0gc29sZCBpbiB0b3RhbCcsCiAgJ1JlcG9ydGUgZW52aWFkby4gwqFHcmFjaWFzISc6J1JlcG9ydCBzZW50LiBUaGFuayB5b3UhJywKICAnUmVwb3J0ZSBlbnZpYWRvLiDCoUdyYWNpYXMhIChkZW1vIOKAlCBubyBzZSBoYSBndWFyZGFkbyBuYWRhIHJlYWwpJzonUmVwb3J0IHNlbnQuIFRoYW5rIHlvdSEgKGRlbW8g4oCUIG5vdGhpbmcgd2FzIGFjdHVhbGx5IHNhdmVkKScsCiAgJ1lhIHJlcG9ydGFkbyBwYXJhIGVzdGUgbWVzOiB7bGlzdGF9LiBMbyBxdWUgZW52w61lcyBhaG9yYSBzZSBzdW1hcsOhIGEgZXNvLic6J0FscmVhZHkgcmVwb3J0ZWQgZm9yIHRoaXMgbW9udGg6IHtsaXN0YX0uIFdoYXRldmVyIHlvdSBzZW5kIG5vdyB3aWxsIGJlIGFkZGVkIHRvIHRoYXQuJywKICAnU3RvY2sgYWN0dWFsJzonQ3VycmVudCBzdG9jaycsCiAgJ0Rlc2NhcmdhciBFeGNlbCc6J0Rvd25sb2FkIEV4Y2VsJywKICAnSW1wcmltaXInOidQcmludCcsCiAgJ0VzIGxvIHF1ZSBsZSBxdWVkYSBhIGVzYSB0aWVuZGEgYWhvcmEgbWlzbW86IHVuIGPDoWxjdWxvIG9yaWVudGF0aXZvIChlbnRyZWdhZG8gbWVub3MgbG8gcmVwb3J0YWRvIGNvbW8gdmVuZGlkbyksIHNvbG8gcGFyYSBjb25zdWx0YXIsIG5vIGVkaXRhYmxlIGFxdcOtLiBFbCBpbnZlbnRhcmlvIGbDrXNpY28gcmVhbCBlcyByZXNwb25zYWJpbGlkYWQgZGUgY2FkYSB0aWVuZGEuJzonVGhpcyBpcyB3aGF0IHRoZSBzaG9wIGhhcyBsZWZ0IHJpZ2h0IG5vdzogYW4gYXBwcm94aW1hdGUgZmlndXJlIChkZWxpdmVyZWQgbWludXMgcmVwb3J0ZWQgYXMgc29sZCksIGZvciByZWZlcmVuY2Ugb25seSBhbmQgbm90IGVkaXRhYmxlIGhlcmUuIFRoZSBhY3R1YWwgcGh5c2ljYWwgaW52ZW50b3J5IGlzIGVhY2ggc2hvcOKAmXMgcmVzcG9uc2liaWxpdHkuJywKICAnQ2FyZ2FuZG\/igKYnOidMb2FkaW5n4oCmJywKICAnTm8gc2UgcHVkbyBjYXJnYXIgZWwgc3RvY2suJzonQ291bGQgbm90IGxvYWQgdGhlIHN0b2NrLicsCiAgJ05vIHRlIHF1ZWRhIHN0b2NrIHNpbiB2ZW5kZXIgYWhvcmEgbWlzbW8g4oCUIHRvZG8gbG8gZW50cmVnYWRvIHlhIGVzdMOhIHZlbmRpZG8gbyByZXBvcnRhZG8uJzonWW91IGhhdmUgbm8gdW5zb2xkIHN0b2NrIHJpZ2h0IG5vdyDigJQgZXZlcnl0aGluZyBkZWxpdmVyZWQgaGFzIGJlZW4gc29sZCBvciByZXBvcnRlZC4nLAogICdBcXXDrSB2ZXLDoXMgdHUgc3RvY2sgZW4gY3VhbnRvIHRlbmdhcyBhbGfDum4gcGVkaWRvIGVudHJlZ2Fkby4nOidZb3VyIHN0b2NrIHdpbGwgYXBwZWFyIGhlcmUgb25jZSBhbiBvcmRlciBoYXMgYmVlbiBkZWxpdmVyZWQuJywKICAnUmVmJzonUmVmJywnTm9tYnJlJzonTmFtZScsJ0VudHJlZ2Fkbyc6J0RlbGl2ZXJlZCcsJ1ZlbmRpZG8nOidTb2xkJywnVGUgcXVlZGEnOidMZWZ0JywKICAnVG9kbyc6J0FsbCcsCiAgJ1R1cyBlc3RhZMOtc3RpY2FzJzonWW91ciBzdGF0aXN0aWNzJywKICAnTG8gcXVlIG3DoXMgKHkgbWVub3MpIHZlbmRlcywgc2Vnw7puIGxvIHF1ZSBoYXMgaWRvIHJlcG9ydGFuZG8gYXF1w60gYXJyaWJhIG1lcyBhIG1lcyDigJQgc29sbyBwYXJhIHR1IHByb3BpbyBjb250cm9sLiBFbGlnZSBxdcOpIHRpcG8gZGUgcHJvZHVjdG8gdmVyLic6J1doYXQgc2VsbHMgYmVzdCAoYW5kIGxlYXN0KSwgYmFzZWQgb24gd2hhdCB5b3UgaGF2ZSByZXBvcnRlZCBhYm92ZSBtb250aCBieSBtb250aCDigJQganVzdCBmb3IgeW91ciBvd24gcmVjb3Jkcy4gQ2hvb3NlIHdoaWNoIHR5cGUgb2YgcHJvZHVjdCB0byBzZWUuJywKICAnVG9kYXbDrWEgbm8gaGF5IGRhdG9zLic6J05vIGRhdGEgeWV0LicsCiAgJ0HDum4gbm8gbm9zIGhhcyBjb250YWRvIHR1cyB2ZW50YXMgZGUge21lc30uJzonWW91IGhhdmVu4oCZdCB0b2xkIHVzIHlvdXIge21lc30gc2FsZXMgeWV0LicsCiAgJ1JlcG9ydGFyIGFob3JhJzonUmVwb3J0IG5vdycsCiAgJ0NlcnJhciBhdmlzbyc6J0Nsb3NlIG5vdGljZScsCiAgLy8gTWlzIGRhdG9zCiAgJ0VzdGUgbm9tYnJlIGVzIHR1IHVzdWFyaW8gcGFyYSBlbnRyYXIuIFNpIG5lY2VzaXRhcyBjYW1iaWFybG8sIGVzY3LDrWJlbm9zLic6J1RoaXMgbmFtZSBpcyB5b3VyIHVzZXJuYW1lLiBJZiB5b3UgbmVlZCB0byBjaGFuZ2UgaXQsIHdyaXRlIHRvIHVzLicsCiAgJ0NvbnRhY3RvJzonQ29udGFjdCcsCiAgJ1BlcnNvbmEgZGUgY29udGFjdG8nOidDb250YWN0IHBlcnNvbicsCiAgJ1RlbMOpZm9ubyc6J1Bob25lJywKICAnQ2l1ZGFkJzonQ2l0eScsCiAgJ0ZhY3R1cmFjacOzbic6J0JpbGxpbmcnLAogICdOb21icmUgZmlzY2FsIC8gcmF6w7NuIHNvY2lhbCc6J0xlZ2FsIC8gY29tcGFueSBuYW1lJywKICAnRWwgbm9tYnJlIHF1ZSBkZWJlIHNhbGlyIGVuIHR1cyBmYWN0dXJhcy4gUHVlZGUgc2VyIGRpc3RpbnRvIGRlbCBub21icmUgZGUgbGEgdGllbmRhIChwb3IgZWplbXBsbywgdHUgbm9tYnJlIHkgYXBlbGxpZG9zIG8gZWwgZGUgdHUgZW1wcmVzYSkuJzonVGhlIG5hbWUgdGhhdCBzaG91bGQgYXBwZWFyIG9uIHlvdXIgaW52b2ljZXMuIEl0IGNhbiBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgc2hvcCBuYW1lIChmb3IgZXhhbXBsZSwgeW91ciBmdWxsIG5hbWUgb3IgeW91ciBjb21wYW554oCZcyBuYW1lKS4nLAogICdFbWFpbCc6J0VtYWlsJywKICAnRGlyZWNjacOzbiBkZSBmYWN0dXJhY2nDs24nOidCaWxsaW5nIGFkZHJlc3MnLAogICdDw7NkaWdvIHBvc3RhbCc6J1Bvc3Rjb2RlJywKICAnTklFIC8gQ0lGJzonVGF4IElEIChWQVQpJywKICAnRW52w61vJzonU2hpcHBpbmcnLAogICdFbnZpYXIgYSBsYSBtaXNtYSBkaXJlY2Npw7NuIGRlIGZhY3R1cmFjacOzbic6J1NoaXAgdG8gdGhlIHNhbWUgYWRkcmVzcyBhcyBiaWxsaW5nJywKICAnRGlyZWNjacOzbiBkZSBlbnbDrW8nOidTaGlwcGluZyBhZGRyZXNzJywKICAnUHJvdmluY2lhJzonUHJvdmluY2UgLyByZWdpb24nLAogICdQYXJhIGVsIHRyYW5zcG9ydGlzdGEnOidGb3IgdGhlIGNvdXJpZXInLAogICdIb3JhcmlvIHBhcmEgcmVjaWJpciBsb3MgZW52w61vcyc6J0Jlc3QgdGltZSB0byByZWNlaXZlIGRlbGl2ZXJpZXMnLAogICfigJQgU2luIGluZGljYXIg4oCUJzon4oCUIE5vdCBzcGVjaWZpZWQg4oCUJywKICAnTWHDsWFuYSAoOeKAkzE0IGgpJzonTW9ybmluZyAoOWFt4oCTMnBtKScsCiAgJ1RhcmRlICgxNuKAkzIwIGgpJzonQWZ0ZXJub29uICg0cG3igJM4cG0pJywKICAnQ3VhbHF1aWVyIGhvcmEnOidBbnkgdGltZScsCiAgJ05vdGFzIHBhcmEgbGEgZW50cmVnYSc6J0RlbGl2ZXJ5IG5vdGVzJywKICAnRWouOiB0aW1icmUgMkIsIGVudHJhciBwb3IgbGEgcHVlcnRhIGxhdGVyYWzigKYnOidFLmcuIGJ1enplciAyQiwgdXNlIHRoZSBzaWRlIGRvb3LigKYnLAogICdHdWFyZGFyJzonU2F2ZScsCiAgJ0NhbWJpYXIgbWkgY29udHJhc2XDsWEnOidDaGFuZ2UgbXkgcGFzc3dvcmQnLAogICdOdWV2YSBjb250cmFzZcOxYSAobcOtbmltbyA2IGNhcmFjdGVyZXMpJzonTmV3IHBhc3N3b3JkIChhdCBsZWFzdCA2IGNoYXJhY3RlcnMpJywKICAnUmVwaXRlIGxhIG51ZXZhIGNvbnRyYXNlw7FhJzonUmVwZWF0IHRoZSBuZXcgcGFzc3dvcmQnLAogICdDYW1iaWFyIGNvbnRyYXNlw7FhJzonQ2hhbmdlIHBhc3N3b3JkJywKICAnRXNjcmliZSBsYSBkaXJlY2Npw7NuIGRlIGVudsOtbywgbyBtYXJjYSAiRW52aWFyIGEgbGEgbWlzbWEgZGlyZWNjacOzbiBkZSBmYWN0dXJhY2nDs24iLic6J0VudGVyIHRoZSBzaGlwcGluZyBhZGRyZXNzLCBvciB0aWNrIOKAnFNoaXAgdG8gdGhlIHNhbWUgYWRkcmVzcyBhcyBiaWxsaW5n4oCdLicsCiAgJ05vIHNlIHB1ZG8gZ3VhcmRhci4gSW50w6ludGFsbyBkZSBudWV2by4nOidDb3VsZCBub3Qgc2F2ZS4gUGxlYXNlIHRyeSBhZ2Fpbi4nLAogICdEYXRvcyBndWFyZGFkb3MuJzonRGV0YWlscyBzYXZlZC4nLAogICdDb250cmFzZcOxYSBpbmNvcnJlY3RhLic6J1dyb25nIHBhc3N3b3JkLicsCiAgJ0xhIGNvbnRyYXNlw7FhIHRpZW5lIHF1ZSB0ZW5lciBhbCBtZW5vcyA2IGNhcmFjdGVyZXMuJzonVGhlIHBhc3N3b3JkIG11c3QgYmUgYXQgbGVhc3QgNiBjaGFyYWN0ZXJzIGxvbmcuJywKICAnTGFzIGRvcyBjb250cmFzZcOxYXMgbm8gY29pbmNpZGVuLic6J1RoZSB0d28gcGFzc3dvcmRzIGRvbuKAmXQgbWF0Y2guJywKICAnwr9DYW1iaWFyIHR1IGNvbnRyYXNlw7FhPyBMYSBwcsOzeGltYSB2ZXogcXVlIGVudHJlcyB0ZW5kcsOhcyBxdWUgdXNhciBsYSBudWV2YS4nOidDaGFuZ2UgeW91ciBwYXNzd29yZD8gWW91IHdpbGwgbmVlZCB0byB1c2UgdGhlIG5ldyBvbmUgbmV4dCB0aW1lIHlvdSBzaWduIGluLicsCiAgJ1R1IHNlc2nDs24gaGEgY2FkdWNhZG8uIENpZXJyYSBzZXNpw7NuLCB2dWVsdmUgYSBlbnRyYXIgZSBpbnTDqW50YWxvIGRlIG51ZXZvLic6J1lvdXIgc2Vzc2lvbiBoYXMgZXhwaXJlZC4gU2lnbiBvdXQsIHNpZ24gaW4gYWdhaW4gYW5kIHRyeSBvbmNlIG1vcmUuJywKICAnRXNhIGNvbnRyYXNlw7FhIG5vIGVzdMOhIGRpc3BvbmlibGUuIEVsaWdlIG90cmEgZGlzdGludGEuJzonVGhhdCBwYXNzd29yZCBpc27igJl0IGF2YWlsYWJsZS4gUGxlYXNlIGNob29zZSBhIGRpZmZlcmVudCBvbmUuJywKICAnTm8gc2UgcHVkbyBjYW1iaWFyLiBJbnTDqW50YWxvIGRlIG51ZXZvLic6J0NvdWxkIG5vdCBjaGFuZ2UgaXQuIFBsZWFzZSB0cnkgYWdhaW4uJywKICAnTm8gc2UgcHVkbyBjYW1iaWFyLic6J0NvdWxkIG5vdCBjaGFuZ2UgaXQuJywKICAnQ29udHJhc2XDsWEgY2FtYmlhZGEuIFVzYSBsYSBudWV2YSBsYSBwcsOzeGltYSB2ZXogcXVlIGVudHJlcy4nOidQYXNzd29yZCBjaGFuZ2VkLiBVc2UgdGhlIG5ldyBvbmUgbmV4dCB0aW1lIHlvdSBzaWduIGluLicsCiAgLy8gRGVzY2FyZ2EgZGUgc3RvY2sKICAnUmVmLic6J1JlZi4nLAp9LAppdDogewogICdUZSBxdWVkYSB7bn0gZW4gdHUgdGllbmRhIChsbyBtw6F4aW1vIHF1ZSBwdWVkZXMgcmVwb3J0YXIpLic6J1RlIG5lIHJlc3RhIHtufSBpbiBuZWdvemlvIChpbCBtYXNzaW1vIGNoZSBwdW9pIHNlZ25hbGFyZSkuJywKICAnVGUgcXVlZGFuIHtufSBlbiB0dSB0aWVuZGEgKGxvIG3DoXhpbW8gcXVlIHB1ZWRlcyByZXBvcnRhcikuJzonVGUgbmUgcmVzdGFubyB7bn0gaW4gbmVnb3ppbyAoaWwgbWFzc2ltbyBjaGUgcHVvaSBzZWduYWxhcmUpLicsCiAgJ05vIHNlIHB1ZG8gY29uZWN0YXIuIFJldmlzYSB0dSBjb25leGnDs24gYSBpbnRlcm5ldCBlIGludMOpbnRhbG8gb3RyYSB2ZXouJzonSW1wb3NzaWJpbGUgY29ubmV0dGVyc2kuIENvbnRyb2xsYSBsYSBjb25uZXNzaW9uZSBhIGludGVybmV0IGUgcmlwcm92YS4nLAogICdObyBzZSBwdWRpZXJvbiBjYXJnYXIgdHVzIHBlZGlkb3MuIFJldmlzYSB0dSBjb25leGnDs24geSB2dWVsdmUgYSBlbnRyYXIgZW4gUGVkaWRvcy4nOidOb24gw6ggc3RhdG8gcG9zc2liaWxlIGNhcmljYXJlIGkgdHVvaSBvcmRpbmkuIENvbnRyb2xsYSBsYSBjb25uZXNzaW9uZSBlIHRvcm5hIHN1IE9yZGluaS4nLAogICdTZSBjb3J0w7MgbGEgY29uZXhpw7NuIHkgbm8gc2FiZW1vcyBzaSBlbCBwZWRpZG8gaGEgbGxlZ2Fkby4gQW50ZXMgZGUgdm9sdmVyIGEgZW52aWFybG8sIGNpZXJyYSBlc3RhIHZlbnRhbmEgeSBtaXJhIMKrVHVzIHBlZGlkb3PCuzogc2kgYXBhcmVjZSwgeWEgZXN0w6EuJzonTGEgY29ubmVzc2lvbmUgc2kgw6ggaW50ZXJyb3R0YSBlIG5vbiBzYXBwaWFtbyBzZSBs4oCZb3JkaW5lIMOoIGFycml2YXRvLiBQcmltYSBkaSBpbnZpYXJsbyBkaSBudW92bywgY2hpdWRpIHF1ZXN0YSBmaW5lc3RyYSBlIGd1YXJkYSDCq0kgdHVvaSBvcmRpbmnCuzogc2UgY29tcGFyZSwgw6ggZ2nDoCBhIHBvc3RvLicsCiAgJ0xpc3RhJzonRWxlbmNvJywKICAnRW4gdHUgdGllbmRhOiB7bn0nOidOZWwgdHVvIG5lZ296aW86IHtufScsJ0VuIHR1IHRpZW5kYSB0ZSBxdWVkYSB7bn0nOidOZWwgdHVvIG5lZ296aW8gdGkgcmVzdGEge259JywnRW4gdHUgdGllbmRhIHRlIHF1ZWRhbiB7bn0nOidOZWwgdHVvIG5lZ296aW8gdGkgcmVzdGFubyB7bn0nLAogIC8vIFRhbmRhIDIgKDA2LzEwLzIwMjYpCiAgJ2FydMOtY3Vsbyc6J2FydGljb2xvJywnYXJ0w61jdWxvcyc6J2FydGljb2xpJywnRWxpZ2XigKYnOidTY2VnbGnigKYnLCdFbiB0dSBwZWRpZG86IHtufSc6J05lbCB0dW8gb3JkaW5lOiB7bn0nLAogICdBY2VwdGFyJzonT0snLCdDYW5jZWxhcic6J0FubnVsbGEnLAogICdWdWVsdmUgYSBlc2NyaWJpciB0dSBjb250cmFzZcOxYSBwYXJhIGVkaXRhciB0dXMgZGF0b3MgZGUgZmFjdHVyYWNpw7NuOic6J1Jpc2NyaXZpIGxhIHR1YSBwYXNzd29yZCBwZXIgbW9kaWZpY2FyZSBpIGRhdGkgZGkgZmF0dHVyYXppb25lOicsCiAgJ0FjY2VzbyBwcml2YWRvIGFsIGNhdMOhbG9nbyc6J0FjY2Vzc28gcmlzZXJ2YXRvIGFsIGNhdGFsb2dvJywKICAnVXN1YXJpbyAobm9tYnJlIGRlIHR1IHRpZW5kYSknOidVdGVudGUgKG5vbWUgZGVsIHR1byBuZWdvemlvKScsCiAgJ1VzdWFyaW8nOidVdGVudGUnLAogICdDb250cmFzZcOxYSc6J1Bhc3N3b3JkJywKICAnRW50cmFyJzonRW50cmEnLAogICfCv1Byb2JsZW1hcyBwYXJhIGVudHJhcj8gRXNjcsOtYmVub3MgYSc6J1Byb2JsZW1pIGFkIGFjY2VkZXJlPyBTY3JpdmljaSBhJywKICAnVXN1YXJpbyBvIGNvbnRyYXNlw7FhIGluY29ycmVjdG9zJzonVXRlbnRlIG8gcGFzc3dvcmQgbm9uIGNvcnJldHRpJywKICAnSWRpb21hJzonTGluZ3VhJywKICAnQ2F0w6Fsb2dvJzonQ2F0YWxvZ28nLAogICdQZWRpZG9zJzonT3JkaW5pJywKICAnVmVudGFzIHkgc3RvY2snOidWZW5kaXRlIGUgc3RvY2snLAogICdNaXMgZGF0b3MnOidJIG1pZWkgZGF0aScsCiAgJ0NlcnJhciBzZXNpw7NuJzonRXNjaScsCiAgJ0N1ZW50YSBkZSBkZW1vc3RyYWNpw7NuIOKAlCBwdWVkZXMgbmF2ZWdhciB5IHByb2JhciB0b2RvLCBwZXJvIG5hZGEgZGUgbG8gcXVlIGVudsOtZXMgYXF1w60gc2UgZ3VhcmRhIGRlIHZlcmRhZC4nOidBY2NvdW50IGRpbW9zdHJhdGl2byDigJQgcHVvaSBuYXZpZ2FyZSBlIHByb3ZhcmUgdHV0dG8sIG1hIG5pZW50ZSBkaSBjacOyIGNoZSBpbnZpaSBxdWkgdmllbmUgc2FsdmF0byBkYXZ2ZXJvLicsCiAgJ+KYhSBOZXcnOifimIUgTmV3JywgLy8gMDQvMTA6IFJhw7psICgyNi8wOSkgwqtsb3MgZGUgbmV3IG1lIHZhIGJpZW4gZW4gaW5nbMOpcyBwYXJhIHRvZGFzIGxhcyBsZW5ndWFzwrsKICAnTMOhbWluYXMnOidTdGFtcGUnLAogICdMaWJyZXRhcyc6J1F1YWRlcm5pJywKICAnUGVnYXRpbmFzJzonQWRlc2l2aScsCiAgJ0zDoW1pbmEnOidTdGFtcGEnLCdsw6FtaW5hcyc6J3N0YW1wZScsJ0xpYnJldGEnOidRdWFkZXJubycsJ2xpYnJldGFzJzoncXVhZGVybmknLCdQZWdhdGluYSc6J0FkZXNpdm8nLCdwZWdhdGluYXMnOidhZGVzaXZpJywKICAnQnVzY2FyIHBvciBub21icmUgbyByZWZlcmVuY2lhJzonQ2VyY2EgcGVyIG5vbWUgbyByaWZlcmltZW50bycsCiAgJ0J1c2NhciBlbiBlbCBjYXTDoWxvZ28nOidDZXJjYSBuZWwgY2F0YWxvZ28nLAogICdQZXF1ZcOxbyc6J1BpY2NvbG8nLAogICdHcmFuZGUnOidHcmFuZGUnLAogICdub3ZlZGFkJzonbm92aXTDoCcsJ25vdmVkYWRlcyc6J25vdml0w6AnLAogICdObyBoYXkge3RpcG99IHF1ZSBjb2luY2lkYW4gY29uIMKre3F9wrsuIFBydWViYSBlbiBvdHJhIHBlc3Rhw7FhIG8gY29uIG90cmEgcGFsYWJyYS4nOidOZXNzdW4gcmlzdWx0YXRvIHRyYSBsZSB7dGlwb30gcGVyIMKre3F9wrsuIFByb3ZhIGluIHVu4oCZYWx0cmEgc2NoZWRhIG8gY29uIHVu4oCZYWx0cmEgcGFyb2xhLicsCiAgJ1RpZW5lcyB7bn0nOidOZSBoYWkge259JywKICAnTG8gcXVlIHRlIHF1ZWRhIGVuIHRpZW5kYSAodG9kb3MgbG9zIGZvcm1hdG9zKSc6J1F1ZWxsbyBjaGUgdGkgcmVzdGEgaW4gbmVnb3ppbyAodHV0dGkgaSBmb3JtYXRpKScsCiAgJ3NpbiBpbWFnZW4nOidzZW56YSBpbW1hZ2luZScsCiAgJ0Zvcm1hdG8nOidGb3JtYXRvJywKICAnQ2FudGlkYWQnOidRdWFudGl0w6AnLAogICdBw7FhZGlyIGFsIHBlZGlkbyc6J0FnZ2l1bmdpIGFsbOKAmW9yZGluZScsCiAgJ+KckyBBw7FhZGlkbyc6J+KckyBBZ2dpdW50bycsCiAgJ0NlcnJhcic6J0NoaXVkaScsJ0FudGVyaW9yJzonUHJlY2VkZW50ZScsJ1NpZ3VpZW50ZSc6J1N1Y2Nlc3Npdm8nLCdNZW5vcyc6J01lbm8nLCdNw6FzJzonUGnDuScsCiAgJ+KckyBBw7FhZGlkbyDigJQge259IMK3IHt0b3RhbH0gZW4gdG90YWwgZW4gdHUgcGVkaWRvJzon4pyTIEFnZ2l1bnRvIOKAlCB7bn0gwrcge3RvdGFsfSBpbiB0b3RhbGUgbmVsIHR1byBvcmRpbmUnLAogICd7bn0gdW5pZGFkJzone259IHBlenpvJywne259IHVuaWRhZGVzJzone259IHBlenppJywKICAnVmVyIG1pIHBlZGlkbyDihpInOidWZWRpIGlsIG1pbyBvcmRpbmUg4oaSJywKICAnVHVzIHBlZGlkb3MnOidJIHR1b2kgb3JkaW5pJywKICAnVG9kYXbDrWEgbm8gaGFzIGhlY2hvIG5pbmfDum4gcGVkaWRvLic6J05vbiBoYWkgYW5jb3JhIGZhdHRvIG5lc3N1biBvcmRpbmUuJywKICAn4pa4IHZlciBkZXRhbGxlJzon4pa4IGRldHRhZ2xpJywn4pa+IG9jdWx0YXInOifilr4gbmFzY29uZGknLCfilrggdmVyJzon4pa4IG1vc3RyYScsCiAgJ3BlbmRpZW50ZSc6J2luIGF0dGVzYScsJ3JlY2liaWRvJzoncmljZXZ1dG8nLCdlbnZpYWRvJzonc3BlZGl0bycsJ2NhbmNlbGFkbyc6J2FubnVsbGF0bycsCiAgJ0VudmlhZG8gZWwge2ZlY2hhfSc6J1NwZWRpdG8gaWwge2ZlY2hhfScsJ1NlZ3VpbWllbnRvOic6J1RyYWNjaWFtZW50bzonLAogICdOb3RhczonOidOb3RlOicsCiAgJ+KGuyBSZXBldGlyIGVzdGUgcGVkaWRvJzon4oa7IFJpcGV0aSBxdWVzdG8gb3JkaW5lJywKICAnTnVldm8gcGVkaWRvJzonTnVvdm8gb3JkaW5lJywKICAnUGVkaWRvIHBhcmEnOidPcmRpbmUgcGVyJywKICAnTm9tYnJlIGRlIGNvbnRhY3RvJzonTm9tZSBkaSByaWZlcmltZW50bycsCiAgJ0FydMOtY3Vsb3MgcGVkaWRvcyc6J0FydGljb2xpIG9yZGluYXRpJywKICAnKyBBw7FhZGlyIHt0aXBvfSc6JysgQWdnaXVuZ2kge3RpcG99JywKICAnTm90YXMnOidOb3RlJywKICAnRW52aWFyIHBlZGlkbyc6J0ludmlhIG9yZGluZScsCiAgJ1R1IHBlZGlkbyBlc3TDoSB2YWPDrW8uIEHDsWFkZSBhcnTDrWN1bG9zIGRlc2RlIGVsIHtsaW5rfSBvIGNvbiBlbCBib3TDs24gZGUgYXJyaWJhLic6J0lsIHR1byBvcmRpbmUgw6ggdnVvdG8uIEFnZ2l1bmdpIGFydGljb2xpIGRhbCB7bGlua30gbyBjb24gaWwgcHVsc2FudGUgcXVpIHNvcHJhLicsCiAgJ0FydMOtY3Vsbyc6J0FydGljb2xvJywKICAnVW5hIG1lbm9zJzonVW5vIGluIG1lbm8nLCdVbmEgbcOhcyc6J1VubyBpbiBwacO5JywKICAnUXVpdGFyIGRlbCBwZWRpZG8nOidUb2dsaSBkYWxs4oCZb3JkaW5lJywKICAnwr9RdWl0YXIge3doYXR9IGRlbCBwZWRpZG8\/XG5cblNlIHF1aXRhbiBsYXMge259IHVuaWRhZGVzIGRlIGVzdGEgbMOtbmVhLiBTaSBzb2xvIHF1aWVyZXMgcGVkaXIgbWVub3MsIHVzYSBlbCBib3TDs24g4oiSLic6J1RvZ2xpZXJlIHt3aGF0fSBkYWxs4oCZb3JkaW5lP1xuXG5WZXJyYW5ubyB0b2x0aSB0dXR0aSBpIHtufSBwZXp6aSBkaSBxdWVzdGEgcmlnYS4gU2UgdnVvaSBzb2xvIG9yZGluYXJuZSBtZW5vLCB1c2EgaWwgcHVsc2FudGUg4oiSLicsCiAgJ2VzdGUgYXJ0w61jdWxvJzoncXVlc3RvIGFydGljb2xvJywKICAnRWxpZ2UgbGEgdGllbmRhL2NsaWVudGUuJzonU2NlZ2xpIGlsIG5lZ296aW8vY2xpZW50ZS4nLAogICdBw7FhZGUgYWwgbWVub3MgdW4gYXJ0w61jdWxvLic6J0FnZ2l1bmdpIGFsbWVubyB1biBhcnRpY29sby4nLAogICdBw7FhZGUgYWwgbWVub3MgdW4gYXJ0w61jdWxvJzonQWdnaXVuZ2kgYWxtZW5vIHVuIGFydGljb2xvJywKICAnQ29uZmlybWFyIHBlZGlkbyc6J0NvbmZlcm1hIG9yZGluZScsCiAgJ1JldmlzYSBxdWUgZXN0w6kgdG9kbyBiaWVuIGFudGVzIGRlIGVudmlhcmxvLic6J0NvbnRyb2xsYSBjaGUgc2lhIHR1dHRvIGdpdXN0byBwcmltYSBkaSBpbnZpYXJsby4nLAogICdTw60sIGVudmlhciBwZWRpZG8nOidTw6wsIGludmlhIG9yZGluZScsCiAgJ1JldmlzYXIgZGUgbnVldm8nOidUb3JuYSBhIGNvbnRyb2xsYXJlJywKICAnVGllbmRhOic6J05lZ296aW86JywnQ29udGFjdG86JzonUmVmZXJlbnRlOicsJ01lczonOidNZXNlOicsCiAgJ3tufSBlbiB0b3RhbCc6J3tufSBpbiB0b3RhbGUnLAogICdQZWRpZG8gZW52aWFkby4gwqFHcmFjaWFzISc6J09yZGluZSBpbnZpYXRvLiBHcmF6aWUhJywKICAnUGVkaWRvIGVudmlhZG8uIMKhR3JhY2lhcyEgKGRlbW8g4oCUIG5vIHNlIGhhIGd1YXJkYWRvIG5hZGEgcmVhbCknOidPcmRpbmUgaW52aWF0by4gR3JhemllISAoZGVtbyDigJQgbm9uIMOoIHN0YXRvIHNhbHZhdG8gbmllbnRlKScsCiAgJ1Z1ZWx2ZSBhIGVzY3JpYmlyIGxhIGNvbnRyYXNlw7FhIGRlIHR1IHRpZW5kYSBwYXJhIGNvbnRpbnVhcjonOidTY3JpdmkgZGkgbnVvdm8gbGEgcGFzc3dvcmQgZGVsIHR1byBuZWdvemlvIHBlciBjb250aW51YXJlOicsCiAgJ8K\/UmVwb25lciBsbyB2ZW5kaWRvPyc6J1Jpb3JkaW5hcmUgY2nDsiBjaGUgaGFpIHZlbmR1dG8\/JywKICAnRW4ge21lc30gdmVuZGlzdGU6IHtsaXN0YX0nOidBIHttZXN9IGhhaSB2ZW5kdXRvOiB7bGlzdGF9JywKICAneSB7bn0gbcOhcyc6J2UgYWx0cmkge259JywKICAnQcOxYWRpciBlc2FzIGNhbnRpZGFkZXMgYWwgcGVkaWRvJzonQWdnaXVuZ2kgcXVlc3RlIHF1YW50aXTDoCBhbGzigJlvcmRpbmUnLAogICdBw7FhZGlkbyhzKSB7bn0gYXJ0w61jdWxvKHMpIGRlbCBwZWRpZG8gZGVsIHtmZWNoYX0uIFJldmlzYSBsYXMgY2FudGlkYWRlcyB5IHB1bHNhIHtidG59Lic6J0FnZ2l1bnRpIHtufSBhcnRpY29saSBkYWxs4oCZb3JkaW5lIGRlbCB7ZmVjaGF9LiBDb250cm9sbGEgbGUgcXVhbnRpdMOgIGUgcHJlbWkge2J0bn0uJywKICAnQcOxYWRpZG8ocykge259IGFydMOtY3VsbyhzKSBkZSBsbyB2ZW5kaWRvIGVuIHttZXN9LiBSZXZpc2EgbGFzIGNhbnRpZGFkZXMgeSBwdWxzYSB7YnRufS4nOidBZ2dpdW50aSB7bn0gYXJ0aWNvbGkgZGEgcXVhbnRvIHZlbmR1dG8gYSB7bWVzfS4gQ29udHJvbGxhIGxlIHF1YW50aXTDoCBlIHByZW1pIHtidG59LicsCiAgJ1lhIG5vIGVzdMOhbiBlbiBlbCBjYXTDoWxvZ286IHtsaXN0YX0uJzonTm9uIHNvbm8gcGnDuSBuZWwgY2F0YWxvZ286IHtsaXN0YX0uJywKICAnVGllbmRhJzonTmVnb3ppbycsCiAgJ01lcyc6J01lc2UnLAogICdVbmlkYWRlcyB2ZW5kaWRhcyc6J1BlenppIHZlbmR1dGknLAogICfCv1F1w6kgaGFzIHZlbmRpZG8gZW4ge21lc30\/JzonQ29zYSBoYWkgdmVuZHV0byBhIHttZXN9PycsCiAgJ0VzdGEgdGllbmRhIG5vIHRpZW5lIHt0aXBvfSBlbiBzdG9jaywgYXPDrSBxdWUgbm8gaGF5IG5hZGEgcXVlIHJlcG9ydGFyIGFxdcOtLic6J1F1ZXN0byBuZWdvemlvIG5vbiBoYSB7dGlwb30gaW4gc3RvY2ssIHF1aW5kaSBub24gY+KAmcOoIG5pZW50ZSBkYSBjb211bmljYXJlIHF1aS4nLAogICfinJMgQ29uZmlybWFyIGzDrW5lYSc6J+KckyBDb25mZXJtYSByaWdhJywKICAnRWRpdGFyJzonTW9kaWZpY2EnLAogICdRdWl0YXInOidUb2dsaScsCiAgJ8K\/UXVpdGFyIHt3aGF0fSBkZWwgcmVwb3J0ZT8nOidUb2dsaWVyZSB7d2hhdH0gZGFsIHJlc29jb250bz8nLAogICdlc3RhIGzDrW5lYSc6J3F1ZXN0YSByaWdhJywKICAnRWxpZ2UgaWx1c3RyYWNpw7NuIHkgZm9ybWF0by4nOidTY2VnbGkgYXJ0aWNvbG8gZSBmb3JtYXRvLicsCiAgJ0luZGljYSB1bmEgY2FudGlkYWQgbWF5b3IgcXVlIDAuJzonSW5kaWNhIHVuYSBxdWFudGl0w6AgbWFnZ2lvcmUgZGkgMC4nLAogICdZYSBoYXMgcmVzZXJ2YWRvIHRvZG8gZWwgc3RvY2sgZGlzcG9uaWJsZSBkZSBlc3RlIGZvcm1hdG8gZW4gb3RyYSBsw61uZWEgZGUgZXN0YSBsaXN0YS4nOidIYWkgZ2nDoCB1c2F0byB0dXR0byBsbyBzdG9jayBkaXNwb25pYmlsZSBkaSBxdWVzdG8gZm9ybWF0byBpbiB1buKAmWFsdHJhIHJpZ2EgZGkgcXVlc3RvIGVsZW5jby4nLAogICdFbnRyZSBlc3RhIGzDrW5lYSB5IGxhcyBxdWUgeWEgdGllbmVzIGNvbmZpcm1hZGFzIGRlIGVzdGUgZm9ybWF0bywgc29sbyBxdWVkYW4ge259IHVuaWRhZGVzIGRpc3BvbmlibGVzLic6J1RyYSBxdWVzdGEgcmlnYSBlIHF1ZWxsZSBnacOgIGNvbmZlcm1hdGUgcGVyIHF1ZXN0byBmb3JtYXRvLCByZXN0YW5vIGRpc3BvbmliaWxpIHNvbG8ge259IHBlenppLicsCiAgJ0NvbmZpcm1hIChvIHF1aXRhKSB0b2RhcyBsYXMgbMOtbmVhcyBhbnRlcyBkZSBlbnZpYXIgZWwgcmVwb3J0ZSDigJQgaGF5IHtufSBzaW4gY29uZmlybWFyLic6J0NvbmZlcm1hIChvIHRvZ2xpKSB0dXR0ZSBsZSByaWdoZSBwcmltYSBkaSBpbnZpYXJlIGlsIHJlc29jb250byDigJQge259IG5vbiBhbmNvcmEgY29uZmVybWF0ZS4nLAogICdJbmRpY2EgYWwgbWVub3MgdW5hIHVuaWRhZCB2ZW5kaWRhLic6J0luZGljYSBhbG1lbm8gdW4gcGV6em8gdmVuZHV0by4nLAogICdFbCBzdG9jayBoYSBjYW1iaWFkbyBtaWVudHJhcyByZWxsZW5hYmFzIGVsIGZvcm11bGFyaW8g4oCUIHJldmlzYSBsYXMgY2FudGlkYWRlcyBlIGludMOpbnRhbG8gZGUgbnVldm8uJzonTG8gc3RvY2sgw6ggY2FtYmlhdG8gbWVudHJlIGNvbXBpbGF2aSBpbCBtb2R1bG8g4oCUIGNvbnRyb2xsYSBsZSBxdWFudGl0w6AgZSByaXByb3ZhLicsCiAgJ0VudmlhciByZXBvcnRlJzonSW52aWEgcmVzb2NvbnRvJywKICAnQ29uZmlybWFyIHJlcG9ydGUnOidDb25mZXJtYSByZXNvY29udG8nLAogICdTw60sIGVudmlhciByZXBvcnRlJzonU8OsLCBpbnZpYSByZXNvY29udG8nLAogICd7bn0gdmVuZGlkYXMgZW4gdG90YWwnOid7bn0gdmVuZHV0aSBpbiB0b3RhbGUnLAogICdSZXBvcnRlIGVudmlhZG8uIMKhR3JhY2lhcyEnOidSZXNvY29udG8gaW52aWF0by4gR3JhemllIScsCiAgJ1JlcG9ydGUgZW52aWFkby4gwqFHcmFjaWFzISAoZGVtbyDigJQgbm8gc2UgaGEgZ3VhcmRhZG8gbmFkYSByZWFsKSc6J1Jlc29jb250byBpbnZpYXRvLiBHcmF6aWUhIChkZW1vIOKAlCBub24gw6ggc3RhdG8gc2FsdmF0byBuaWVudGUpJywKICAnWWEgcmVwb3J0YWRvIHBhcmEgZXN0ZSBtZXM6IHtsaXN0YX0uIExvIHF1ZSBlbnbDrWVzIGFob3JhIHNlIHN1bWFyw6EgYSBlc28uJzonR2nDoCBjb211bmljYXRvIHBlciBxdWVzdG8gbWVzZToge2xpc3RhfS4gUXVlbGxvIGNoZSBpbnZpaSBvcmEgc2kgc29tbWVyw6AgYSBxdWVzdG8uJywKICAnU3RvY2sgYWN0dWFsJzonU3RvY2sgYXR0dWFsZScsCiAgJ0Rlc2NhcmdhciBFeGNlbCc6J1NjYXJpY2EgRXhjZWwnLAogICdJbXByaW1pcic6J1N0YW1wYScsCiAgJ0VzIGxvIHF1ZSBsZSBxdWVkYSBhIGVzYSB0aWVuZGEgYWhvcmEgbWlzbW86IHVuIGPDoWxjdWxvIG9yaWVudGF0aXZvIChlbnRyZWdhZG8gbWVub3MgbG8gcmVwb3J0YWRvIGNvbW8gdmVuZGlkbyksIHNvbG8gcGFyYSBjb25zdWx0YXIsIG5vIGVkaXRhYmxlIGFxdcOtLiBFbCBpbnZlbnRhcmlvIGbDrXNpY28gcmVhbCBlcyByZXNwb25zYWJpbGlkYWQgZGUgY2FkYSB0aWVuZGEuJzonw4ggcXVlbGxvIGNoZSByZXN0YSBhbCBuZWdvemlvIGluIHF1ZXN0byBtb21lbnRvOiB1biBjYWxjb2xvIGluZGljYXRpdm8gKGNvbnNlZ25hdG8gbWVubyBxdWFudG8gY29tdW5pY2F0byBjb21lIHZlbmR1dG8pLCBzb2xvIGRhIGNvbnN1bHRhcmUgZSBub24gbW9kaWZpY2FiaWxlIHF1aS4gTOKAmWludmVudGFyaW8gZmlzaWNvIHJlYWxlIMOoIHJlc3BvbnNhYmlsaXTDoCBkaSBvZ25pIG5lZ296aW8uJywKICAnQ2FyZ2FuZG\/igKYnOidDYXJpY2FtZW50b+KApicsCiAgJ05vIHNlIHB1ZG8gY2FyZ2FyIGVsIHN0b2NrLic6J0ltcG9zc2liaWxlIGNhcmljYXJlIGxvIHN0b2NrLicsCiAgJ05vIHRlIHF1ZWRhIHN0b2NrIHNpbiB2ZW5kZXIgYWhvcmEgbWlzbW8g4oCUIHRvZG8gbG8gZW50cmVnYWRvIHlhIGVzdMOhIHZlbmRpZG8gbyByZXBvcnRhZG8uJzonQWwgbW9tZW50byBub24gaGFpIHN0b2NrIGludmVuZHV0byDigJQgdHV0dG8gcXVlbGxvIGNvbnNlZ25hdG8gw6ggZ2nDoCB2ZW5kdXRvIG8gY29tdW5pY2F0by4nLAogICdBcXXDrSB2ZXLDoXMgdHUgc3RvY2sgZW4gY3VhbnRvIHRlbmdhcyBhbGfDum4gcGVkaWRvIGVudHJlZ2Fkby4nOidRdWkgdmVkcmFpIGlsIHR1byBzdG9jayBhcHBlbmEgYXZyYWkgdW4gb3JkaW5lIGNvbnNlZ25hdG8uJywKICAnUmVmJzonUmlmLicsJ05vbWJyZSc6J05vbWUnLCdFbnRyZWdhZG8nOidDb25zZWduYXRvJywnVmVuZGlkbyc6J1ZlbmR1dG8nLCdUZSBxdWVkYSc6J1RpIHJlc3RhJywKICAnVG9kbyc6J1R1dHRvJywKICAnVHVzIGVzdGFkw61zdGljYXMnOidMZSB0dWUgc3RhdGlzdGljaGUnLAogICdMbyBxdWUgbcOhcyAoeSBtZW5vcykgdmVuZGVzLCBzZWfDum4gbG8gcXVlIGhhcyBpZG8gcmVwb3J0YW5kbyBhcXXDrSBhcnJpYmEgbWVzIGEgbWVzIOKAlCBzb2xvIHBhcmEgdHUgcHJvcGlvIGNvbnRyb2wuIEVsaWdlIHF1w6kgdGlwbyBkZSBwcm9kdWN0byB2ZXIuJzonUXVlbGxvIGNoZSB2ZW5kaSBkaSBwacO5IChlIGRpIG1lbm8pLCBpbiBiYXNlIGEgcXVhbnRvIGhhaSBjb211bmljYXRvIHF1aSBzb3ByYSBtZXNlIHBlciBtZXNlIOKAlCBzb2xvIHBlciBpbCB0dW8gY29udHJvbGxvLiBTY2VnbGkgcXVhbGUgdGlwbyBkaSBwcm9kb3R0byB2ZWRlcmUuJywKICAnVG9kYXbDrWEgbm8gaGF5IGRhdG9zLic6J0FuY29yYSBuZXNzdW4gZGF0by4nLAogICdBw7puIG5vIG5vcyBoYXMgY29udGFkbyB0dXMgdmVudGFzIGRlIHttZXN9Lic6J05vbiBjaSBoYWkgYW5jb3JhIGNvbXVuaWNhdG8gbGUgdmVuZGl0ZSBkaSB7bWVzfS4nLAogICdSZXBvcnRhciBhaG9yYSc6J0NvbXVuaWNhIG9yYScsCiAgJ0NlcnJhciBhdmlzbyc6J0NoaXVkaSBhdnZpc28nLAogICdFc3RlIG5vbWJyZSBlcyB0dSB1c3VhcmlvIHBhcmEgZW50cmFyLiBTaSBuZWNlc2l0YXMgY2FtYmlhcmxvLCBlc2Nyw61iZW5vcy4nOidRdWVzdG8gbm9tZSDDqCBpbCB0dW8gdXRlbnRlIHBlciBhY2NlZGVyZS4gU2UgZGV2aSBjYW1iaWFybG8sIHNjcml2aWNpLicsCiAgJ0NvbnRhY3RvJzonQ29udGF0dG8nLAogICdQZXJzb25hIGRlIGNvbnRhY3RvJzonUGVyc29uYSBkaSByaWZlcmltZW50bycsCiAgJ1RlbMOpZm9ubyc6J1RlbGVmb25vJywKICAnQ2l1ZGFkJzonQ2l0dMOgJywKICAnRmFjdHVyYWNpw7NuJzonRmF0dHVyYXppb25lJywKICAnTm9tYnJlIGZpc2NhbCAvIHJhesOzbiBzb2NpYWwnOidSYWdpb25lIHNvY2lhbGUgLyBpbnRlc3RhdGFyaW8nLAogICdFbCBub21icmUgcXVlIGRlYmUgc2FsaXIgZW4gdHVzIGZhY3R1cmFzLiBQdWVkZSBzZXIgZGlzdGludG8gZGVsIG5vbWJyZSBkZSBsYSB0aWVuZGEgKHBvciBlamVtcGxvLCB0dSBub21icmUgeSBhcGVsbGlkb3MgbyBlbCBkZSB0dSBlbXByZXNhKS4nOidJbCBub21lIGNoZSBkZXZlIGNvbXBhcmlyZSBzdWxsZSBmYXR0dXJlLiBQdcOyIGVzc2VyZSBkaXZlcnNvIGRhbCBub21lIGRlbCBuZWdvemlvIChwZXIgZXNlbXBpbyBpbCB0dW8gbm9tZSBlIGNvZ25vbWUgbyBxdWVsbG8gZGVsbGEgdHVhIGF6aWVuZGEpLicsCiAgJ0VtYWlsJzonRW1haWwnLAogICdEaXJlY2Npw7NuIGRlIGZhY3R1cmFjacOzbic6J0luZGlyaXp6byBkaSBmYXR0dXJhemlvbmUnLAogICdDw7NkaWdvIHBvc3RhbCc6J0NBUCcsCiAgJ05JRSAvIENJRic6J1BhcnRpdGEgSVZBIC8gQ29kaWNlIGZpc2NhbGUnLAogICdFbnbDrW8nOidTcGVkaXppb25lJywKICAnRW52aWFyIGEgbGEgbWlzbWEgZGlyZWNjacOzbiBkZSBmYWN0dXJhY2nDs24nOidTcGVkaXNjaSBhbGzigJlpbmRpcml6em8gZGkgZmF0dHVyYXppb25lJywKICAnRGlyZWNjacOzbiBkZSBlbnbDrW8nOidJbmRpcml6em8gZGkgc3BlZGl6aW9uZScsCiAgJ1Byb3ZpbmNpYSc6J1Byb3ZpbmNpYScsCiAgJ1BhcmEgZWwgdHJhbnNwb3J0aXN0YSc6J1BlciBpbCBjb3JyaWVyZScsCiAgJ0hvcmFyaW8gcGFyYSByZWNpYmlyIGxvcyBlbnbDrW9zJzonT3JhcmlvIHBlciByaWNldmVyZSBsZSBzcGVkaXppb25pJywKICAn4oCUIFNpbiBpbmRpY2FyIOKAlCc6J+KAlCBOb24gaW5kaWNhdG8g4oCUJywKICAnTWHDsWFuYSAoOeKAkzE0IGgpJzonTWF0dGluYSAoOeKAkzE0KScsCiAgJ1RhcmRlICgxNuKAkzIwIGgpJzonUG9tZXJpZ2dpbyAoMTbigJMyMCknLAogICdDdWFscXVpZXIgaG9yYSc6J1F1YWxzaWFzaSBvcmEnLAogICdOb3RhcyBwYXJhIGxhIGVudHJlZ2EnOidOb3RlIHBlciBsYSBjb25zZWduYScsCiAgJ0VqLjogdGltYnJlIDJCLCBlbnRyYXIgcG9yIGxhIHB1ZXJ0YSBsYXRlcmFs4oCmJzonRXMuOiBjaXRvZm9ubyAyQiwgZW50cmFyZSBkYWxsYSBwb3J0YSBsYXRlcmFsZeKApicsCiAgJ0d1YXJkYXInOidTYWx2YScsCiAgJ0NhbWJpYXIgbWkgY29udHJhc2XDsWEnOidDYW1iaWEgbGEgbWlhIHBhc3N3b3JkJywKICAnTnVldmEgY29udHJhc2XDsWEgKG3DrW5pbW8gNiBjYXJhY3RlcmVzKSc6J051b3ZhIHBhc3N3b3JkIChhbG1lbm8gNiBjYXJhdHRlcmkpJywKICAnUmVwaXRlIGxhIG51ZXZhIGNvbnRyYXNlw7FhJzonUmlwZXRpIGxhIG51b3ZhIHBhc3N3b3JkJywKICAnQ2FtYmlhciBjb250cmFzZcOxYSc6J0NhbWJpYSBwYXNzd29yZCcsCiAgJ0VzY3JpYmUgbGEgZGlyZWNjacOzbiBkZSBlbnbDrW8sIG8gbWFyY2EgIkVudmlhciBhIGxhIG1pc21hIGRpcmVjY2nDs24gZGUgZmFjdHVyYWNpw7NuIi4nOidTY3JpdmkgbOKAmWluZGlyaXp6byBkaSBzcGVkaXppb25lLCBvcHB1cmUgc3B1bnRhIOKAnFNwZWRpc2NpIGFsbOKAmWluZGlyaXp6byBkaSBmYXR0dXJhemlvbmXigJ0uJywKICAnTm8gc2UgcHVkbyBndWFyZGFyLiBJbnTDqW50YWxvIGRlIG51ZXZvLic6J0ltcG9zc2liaWxlIHNhbHZhcmUuIFJpcHJvdmEuJywKICAnRGF0b3MgZ3VhcmRhZG9zLic6J0RhdGkgc2FsdmF0aS4nLAogICdDb250cmFzZcOxYSBpbmNvcnJlY3RhLic6J1Bhc3N3b3JkIG5vbiBjb3JyZXR0YS4nLAogICdMYSBjb250cmFzZcOxYSB0aWVuZSBxdWUgdGVuZXIgYWwgbWVub3MgNiBjYXJhY3RlcmVzLic6J0xhIHBhc3N3b3JkIGRldmUgYXZlcmUgYWxtZW5vIDYgY2FyYXR0ZXJpLicsCiAgJ0xhcyBkb3MgY29udHJhc2XDsWFzIG5vIGNvaW5jaWRlbi4nOidMZSBkdWUgcGFzc3dvcmQgbm9uIGNvaW5jaWRvbm8uJywKICAnwr9DYW1iaWFyIHR1IGNvbnRyYXNlw7FhPyBMYSBwcsOzeGltYSB2ZXogcXVlIGVudHJlcyB0ZW5kcsOhcyBxdWUgdXNhciBsYSBudWV2YS4nOidDYW1iaWFyZSBsYSBwYXNzd29yZD8gTGEgcHJvc3NpbWEgdm9sdGEgY2hlIGVudHJpIGRvdnJhaSB1c2FyZSBxdWVsbGEgbnVvdmEuJywKICAnVHUgc2VzacOzbiBoYSBjYWR1Y2Fkby4gQ2llcnJhIHNlc2nDs24sIHZ1ZWx2ZSBhIGVudHJhciBlIGludMOpbnRhbG8gZGUgbnVldm8uJzonTGEgc2Vzc2lvbmUgw6ggc2NhZHV0YS4gRXNjaSwgcmllbnRyYSBlIHJpcHJvdmEuJywKICAnRXNhIGNvbnRyYXNlw7FhIG5vIGVzdMOhIGRpc3BvbmlibGUuIEVsaWdlIG90cmEgZGlzdGludGEuJzonUXVlc3RhIHBhc3N3b3JkIG5vbiDDqCBkaXNwb25pYmlsZS4gU2NlZ2xpbmUgdW7igJlhbHRyYS4nLAogICdObyBzZSBwdWRvIGNhbWJpYXIuIEludMOpbnRhbG8gZGUgbnVldm8uJzonSW1wb3NzaWJpbGUgY2FtYmlhcmxhLiBSaXByb3ZhLicsCiAgJ05vIHNlIHB1ZG8gY2FtYmlhci4nOidJbXBvc3NpYmlsZSBjYW1iaWFybGEuJywKICAnQ29udHJhc2XDsWEgY2FtYmlhZGEuIFVzYSBsYSBudWV2YSBsYSBwcsOzeGltYSB2ZXogcXVlIGVudHJlcy4nOidQYXNzd29yZCBjYW1iaWF0YS4gVXNhIHF1ZWxsYSBudW92YSBsYSBwcm9zc2ltYSB2b2x0YSBjaGUgZW50cmkuJywKICAnUmVmLic6J1JpZi4nLAp9fTsKLy8gVGV4dG9zIGNvbiBmb3JtYXRvIChuZWdyaXRhcywgZW5sYWNlcyk6IHNlIHRyYWR1Y2VuIGNvbW8gYmxvcXVlIGVudGVybyBwb3Igc3UgY2xhdmUuCmNvbnN0IEkxOE5fSFRNTCA9IHsKICAnaW50cm8tY2F0YWxvZ28nOiB7CiAgICBlbjonVGFwIGFuIGl0ZW0gdG8gY2hvb3NlIHNpemUgYW5kIHF1YW50aXR5IGFuZCBhZGQgaXQgdG8geW91ciBvcmRlci4gV2hlbiB5b3XigJlyZSBkb25lLCBnbyB0byA8c3Ryb25nPk9yZGVyczwvc3Ryb25nPiB0byBzZW5kIGl0LicsCiAgICBpdDonVG9jY2EgdW4gYXJ0aWNvbG8gcGVyIHNjZWdsaWVyZSBmb3JtYXRvIGUgcXVhbnRpdMOgIGUgYWdnaXVuZ2VybG8gYWwgdHVvIG9yZGluZS4gUXVhbmRvIGhhaSBmaW5pdG8sIHZhaSBzdSA8c3Ryb25nPk9yZGluaTwvc3Ryb25nPiBwZXIgaW52aWFybG8uJ30sCiAgJ2ludHJvLXBlZGlkbyc6IHsKICAgIGVuOidDaGVjayB3aGF0IHlvdSBoYXZlIGFkZGVkLCBhZGp1c3QgdGhlIHF1YW50aXRpZXMgYW5kIHByZXNzIDxzdHJvbmc+U2VuZCBvcmRlcjwvc3Ryb25nPi4gWW914oCZbGwgc2VlIGEgc3VtbWFyeSBiZWZvcmUgY29uZmlybWluZy4nLAogICAgaXQ6J0NvbnRyb2xsYSBjb3NhIGhhaSBhZ2dpdW50bywgc2lzdGVtYSBsZSBxdWFudGl0w6AgZSBwcmVtaSA8c3Ryb25nPkludmlhIG9yZGluZTwvc3Ryb25nPi4gVmVkcmFpIHVuIHJpZXBpbG9nbyBwcmltYSBkaSBjb25mZXJtYXJlLid9LAogICdpbnRyby12ZW50YXMnOiB7CiAgICBlbjonVGVsbCB1cyB3aGF0IHlvdSBzb2xkIGVhY2ggbW9udGg6IGFkZCBlYWNoIGl0ZW0sIGNvbmZpcm0gaXQgYW5kIHByZXNzIDxzdHJvbmc+U2VuZCByZXBvcnQ8L3N0cm9uZz4uIEZ1cnRoZXIgZG93biB5b3XigJlsbCBmaW5kIHlvdXIgY3VycmVudCBzdG9jayBhbmQgeW91ciBzdGF0aXN0aWNzLicsCiAgICBpdDonUmFjY29udGFjaSBjb3NhIGhhaSB2ZW5kdXRvIG9nbmkgbWVzZTogYWdnaXVuZ2kgb2duaSBhcnRpY29sbywgY29uZmVybWFsbyBlIHByZW1pIDxzdHJvbmc+SW52aWEgcmVzb2NvbnRvPC9zdHJvbmc+LiBQacO5IGluIGJhc3NvIHRyb3ZpIGlsIHR1byBzdG9jayBhdHR1YWxlIGUgbGUgdHVlIHN0YXRpc3RpY2hlLid9LAp9OwpmdW5jdGlvbiBkZXRlY3RMYW5nKCl7CiAgdHJ5IHsgY29uc3Qgc2F2ZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnaXN0cmljZV9sYW5nJyk7IGlmKExBTkdTLmluY2x1ZGVzKHNhdmVkKSkgcmV0dXJuIHNhdmVkOyB9IGNhdGNoKGUpe30KICAvLyBSYcO6bCAoMDUvMTAvMjAyNik6IMKrZWwgaWRpb21hIGRlIGVudHJhZGEgeSBwcmluY2lwYWwgc2VhIGVsIGVzcGHDsW9sLCBzZWd1bmRvIGVsIGluZ2zDqXPCuy4gQW50ZXMgc2UgZWxlZ8OtYSBwb3IgZWwKICAvLyBpZGlvbWEgZGVsIG5hdmVnYWRvcjsgYWhvcmEgbGEgcHJpbWVyYSB2ZXogc2llbXByZSBlbiBlc3Bhw7FvbCAobG8gcXVlIGVsaWphIGNhZGEgdGllbmRhIGNvbiBsb3MgYm90b25lcyBzZSBndWFyZGEpLgogIHJldHVybiAnZXMnOwp9CmxldCBMQU5HID0gZGV0ZWN0TGFuZygpOwpmdW5jdGlvbiBhcHBMb2NhbGUoKXsgcmV0dXJuIExBTkdfTE9DQUxFU1tMQU5HXSB8fCAnZXMtRVMnOyB9Ci8vIHQoJ3RleHRvIGVuIGVzcGHDsW9sJywge3ZhcnN9KSDihpIgdGV4dG8gZW4gZWwgaWRpb21hIGFjdHVhbCAobyBlbCBlc3Bhw7FvbCBzaSBmYWx0YSBsYSB0cmFkdWNjacOzbikKZnVuY3Rpb24gdChlcywgdmFycyl7CiAgbGV0IHMgPSAoTEFORyAhPT0gJ2VzJyAmJiBJMThOW0xBTkddICYmIEkxOE5bTEFOR11bZXNdKSB8fCBlczsKICBpZih2YXJzKSBzID0gcy5yZXBsYWNlKC9ceyhcdyspXH0vZywgKG0sIGspID0+ICh2YXJzW2tdID8\/IG0pKTsKICByZXR1cm4gczsKfQovLyBab25hcyBxdWUgTk8gc2UgdHJhZHVjZW4gbnVuY2EgKEFkbWluIHkgc3VzIHZlbnRhbmFzKS4KY29uc3QgSTE4Tl9TS0lQID0gJyN0YWItYWRtaW4sICNhZG1zYWxlLWNvbmZpcm0tbW9kYWwsIFtkYXRhLW5vLWkxOG5dLCBzY3JpcHQsIHN0eWxlLCB0ZXh0YXJlYSc7CmNvbnN0IEkxOE5fU0tJUF9BVFRSID0gJyN0YWItYWRtaW4sICNhZG1zYWxlLWNvbmZpcm0tbW9kYWwsIFtkYXRhLW5vLWkxOG5dJzsKZnVuY3Rpb24gaTE4blNraXAobm9kZSwgYXR0cnMpewogIGNvbnN0IGVsID0gbm9kZS5ub2RlVHlwZSA9PT0gMSA\/IG5vZGUgOiBub2RlLnBhcmVudEVsZW1lbnQ7CiAgcmV0dXJuICFlbCB8fCAhIWVsLmNsb3Nlc3QoYXR0cnMgPyBJMThOX1NLSVBfQVRUUiA6IEkxOE5fU0tJUCk7Cn0KZnVuY3Rpb24gaTE4blRleHQobm9kZSl7CiAgaWYoaTE4blNraXAobm9kZSkpIHJldHVybjsKICBjb25zdCBjdXIgPSBub2RlLm5vZGVWYWx1ZTsKICBpZihub2RlLl9fdHIgPT09IHVuZGVmaW5lZCB8fCBjdXIgIT09IG5vZGUuX190cikgbm9kZS5fX2VzID0gY3VyOyAgIC8vIHRleHRvIG51ZXZvIHB1ZXN0byBwb3IgbGEgYXBwCiAgY29uc3QgZXMgPSBub2RlLl9fZXM7CiAgY29uc3Qga2V5ID0gZXMudHJpbSgpOwogIGlmKCFrZXkpIHJldHVybjsKICBjb25zdCB0ciA9IExBTkcgPT09ICdlcycgPyBudWxsIDogKEkxOE5bTEFOR10gJiYgSTE4TltMQU5HXVtrZXldKTsKICBjb25zdCBvdXQgPSB0ciA\/IGVzLnJlcGxhY2Uoa2V5LCB0cikgOiBlczsKICBub2RlLl9fdHIgPSBvdXQ7CiAgaWYob3V0ICE9PSBjdXIpIG5vZGUubm9kZVZhbHVlID0gb3V0Owp9CmZ1bmN0aW9uIGkxOG5BdHRycyhlbCl7CiAgaWYoaTE4blNraXAoZWwsIHRydWUpKSByZXR1cm47CiAgWydwbGFjZWhvbGRlcicsJ2FyaWEtbGFiZWwnLCd0aXRsZSddLmZvckVhY2goYT0+ewogICAgaWYoIWVsLmhhc0F0dHJpYnV0ZShhKSkgcmV0dXJuOwogICAgY29uc3QgY3VyID0gZWwuZ2V0QXR0cmlidXRlKGEpOwogICAgY29uc3QgbWVtID0gJ19fZXNfJyArIGEsIG1lbVRyID0gJ19fdHJfJyArIGE7CiAgICBpZihlbFttZW1Ucl0gPT09IHVuZGVmaW5lZCB8fCBjdXIgIT09IGVsW21lbVRyXSkgZWxbbWVtXSA9IGN1cjsKICAgIGNvbnN0IGVzID0gZWxbbWVtXTsKICAgIGNvbnN0IHRyID0gTEFORyA9PT0gJ2VzJyA\/IG51bGwgOiAoSTE4TltMQU5HXSAmJiBJMThOW0xBTkddW2VzLnRyaW0oKV0pOwogICAgY29uc3Qgb3V0ID0gdHIgfHwgZXM7CiAgICBlbFttZW1Ucl0gPSBvdXQ7CiAgICBpZihvdXQgIT09IGN1cikgZWwuc2V0QXR0cmlidXRlKGEsIG91dCk7CiAgfSk7CiAgY29uc3QgaGsgPSBlbC5nZXRBdHRyaWJ1dGUgJiYgZWwuZ2V0QXR0cmlidXRlKCdkYXRhLWkxOG4taHRtbCcpOwogIGlmKGhrKXsKICAgIGlmKGVsLl9fZXNIdG1sID09PSB1bmRlZmluZWQpIGVsLl9fZXNIdG1sID0gZWwuaW5uZXJIVE1MOwogICAgY29uc3QgaHRtbCA9IExBTkcgPT09ICdlcycgPyBlbC5fX2VzSHRtbCA6ICgoSTE4Tl9IVE1MW2hrXSAmJiBJMThOX0hUTUxbaGtdW0xBTkddKSB8fCBlbC5fX2VzSHRtbCk7CiAgICBpZihlbC5pbm5lckhUTUwgIT09IGh0bWwpIGVsLmlubmVySFRNTCA9IGh0bWw7CiAgfQp9CmZ1bmN0aW9uIGkxOG5UcmVlKHJvb3QpewogIGlmKCFyb290KSByZXR1cm47CiAgaWYocm9vdC5ub2RlVHlwZSA9PT0gMyl7IGkxOG5UZXh0KHJvb3QpOyByZXR1cm47IH0KICBpZihyb290Lm5vZGVUeXBlICE9PSAxKSByZXR1cm47CiAgaWYocm9vdC5jbG9zZXN0ICYmIHJvb3QuY2xvc2VzdChJMThOX1NLSVApKSByZXR1cm47CiAgaTE4bkF0dHJzKHJvb3QpOwogIGlmKHJvb3QuaGFzQXR0cmlidXRlICYmIHJvb3QuaGFzQXR0cmlidXRlKCdkYXRhLWkxOG4taHRtbCcpKSByZXR1cm47CiAgY29uc3QgdyA9IGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIocm9vdCwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQgfCBOb2RlRmlsdGVyLlNIT1dfVEVYVCwgewogICAgYWNjZXB0Tm9kZTogbiA9PiAobi5ub2RlVHlwZSA9PT0gMSAmJiBuLm1hdGNoZXMoSTE4Tl9TS0lQX0FUVFIpKSA\/IE5vZGVGaWx0ZXIuRklMVEVSX1JFSkVDVCA6IE5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVAogIH0pOwogIGxldCBuOwogIHdoaWxlKChuID0gdy5uZXh0Tm9kZSgpKSl7CiAgICBpZihuLm5vZGVUeXBlID09PSAzKSBpMThuVGV4dChuKTsKICAgIGVsc2UgeyBpMThuQXR0cnMobik7IH0KICB9Cn0KbGV0IGkxOG5CdXN5ID0gZmFsc2U7CmNvbnN0IGkxOG5PYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG11dHM9PnsKICBpZihpMThuQnVzeSkgcmV0dXJuOwogIGkxOG5CdXN5ID0gdHJ1ZTsKICB0cnkgewogICAgbXV0cy5mb3JFYWNoKG09PnsKICAgICAgaWYobS50eXBlID09PSAnY2hhcmFjdGVyRGF0YScpIGkxOG5UZXh0KG0udGFyZ2V0KTsKICAgICAgZWxzZSBpZihtLnR5cGUgPT09ICdhdHRyaWJ1dGVzJykgaTE4bkF0dHJzKG0udGFyZ2V0KTsKICAgICAgZWxzZSBtLmFkZGVkTm9kZXMuZm9yRWFjaChpMThuVHJlZSk7CiAgICB9KTsKICB9IGZpbmFsbHkgeyBpMThuQnVzeSA9IGZhbHNlOyB9Cn0pOwpmdW5jdGlvbiBzZXRMYW5nKGxhbmcsIG9wdHM9e30pewogIGlmKCFMQU5HUy5pbmNsdWRlcyhsYW5nKSkgcmV0dXJuOwogIExBTkcgPSBsYW5nOwogIHRyeSB7IGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdpc3RyaWNlX2xhbmcnLCBsYW5nKTsgfSBjYXRjaChlKXt9CiAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmxhbmcgPSBsYW5nOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5sYW5nLXN3aXRjaCBidXR0b24nKS5mb3JFYWNoKGI9PmIuY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aXZlJywgYi5kYXRhc2V0LmxhbmcgPT09IGxhbmcpKTsKICBpMThuQnVzeSA9IHRydWU7CiAgdHJ5IHsgaTE4blRyZWUoZG9jdW1lbnQuYm9keSk7IH0gZmluYWxseSB7IGkxOG5CdXN5ID0gZmFsc2U7IH0KICBpZih0eXBlb2Ygb25MYW5nQ2hhbmdlZCA9PT0gJ2Z1bmN0aW9uJykgb25MYW5nQ2hhbmdlZCgpOwogIC8vIFNpIGVzIHVuYSB0aWVuZGEgY29uIHN1IGFjY2VzbyAobm8gbGEgRGVtbyksIHNlIGd1YXJkYSBlbiBzdSBmaWNoYSBwYXJhIGxhIHByw7N4aW1hIHZlei4KICBpZihvcHRzLnNhdmUgJiYgdHlwZW9mIGxvY2tlZENoYW5uZWwgIT09ICd1bmRlZmluZWQnICYmIGxvY2tlZENoYW5uZWwgJiYgIWxvY2tlZENoYW5uZWwuaXNfZGVtbyAmJiBsb2NrZWRDaGFubmVsUGFzc3dvcmQpewogICAgbG9ja2VkQ2hhbm5lbC5sYW5ndWFnZSA9IGxhbmc7CiAgICB0cnkgeyBzYWZlU2Vzc2lvblNldCgnaXN0cmljZV9sb2NrZWRfY2hhbm5lbCcsIEpTT04uc3RyaW5naWZ5KGxvY2tlZENoYW5uZWwpKTsgfSBjYXRjaChlKXt9CiAgICBzYi5ycGMoJ3NldF9zdG9yZV9sYW5ndWFnZScsIHtpbnB1dF9pZDogbG9ja2VkQ2hhbm5lbC5pZCwgaW5wdXRfcGFzc3dvcmQ6IGxvY2tlZENoYW5uZWxQYXNzd29yZCwgaW5wdXRfbGFuZzogbGFuZ30pLnRoZW4oKCk9Pnt9KTsKICB9Cn0KZnVuY3Rpb24gb25MYW5nQ2hhbmdlZCgpewogIGNvbnN0IHNtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbGUtbW9udGgnKTsKICBpZihzbSl7IGNvbnN0IHYgPSBzbS52YWx1ZTsgc20uaW5uZXJIVE1MID0gbW9udGhPcHRpb25zSHRtbCgxNSwgMCk7IGlmKHYpIHNtLnZhbHVlID0gdjsgfQogIHRyeSB7IHJlbmRlckNhdGFsb2coKTsgfSBjYXRjaChlKXt9CiAgdHJ5IHsgcmVuZGVyT3JkZXJJdGVtcygpOyB9IGNhdGNoKGUpe30KICB0cnkgeyB1cGRhdGVTb2xkVGl0bGUoKTsgfSBjYXRjaChlKXt9CiAgdHJ5IHsgc2V0T3JkZXJQcm9kdWN0VHlwZShvcmRlclByb2R1Y3RUeXBlKTsgc2V0U2FsZVByb2R1Y3RUeXBlKHNhbGVQcm9kdWN0VHlwZSk7IH0gY2F0Y2goZSl7fQogIHRyeSB7IGlmKHR5cGVvZiBteU9yZGVyc0NhY2hlIT09J3VuZGVmaW5lZCcgJiYgbXlPcmRlcnNDYWNoZS5sZW5ndGgpIHJlbmRlck15T3JkZXJzKG15T3JkZXJzQ2FjaGUpOyB9IGNhdGNoKGUpe30KICB0cnkgeyBpZih0eXBlb2YgbG9ja2VkQ2hhbm5lbCE9PSd1bmRlZmluZWQnICYmIGxvY2tlZENoYW5uZWwpIGxvYWRTdG9yZUluc2lnaHRzKCk7IH0gY2F0Y2goZSl7fQp9CmZ1bmN0aW9uIGxhbmdTd2l0Y2hIdG1sKCl7CiAgcmV0dXJuIExBTkdTLm1hcChsPT5gPGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtbGFuZz0iJHtsfSIgY2xhc3M9IiR7bD09PUxBTkc\/J2FjdGl2ZSc6Jyd9IiBvbmNsaWNrPSJzZXRMYW5nKCcke2x9Jyx7c2F2ZTp0cnVlfSkiIGFyaWEtbGFiZWw9IiR7KHtlczonRXNwYcOxb2wnLGVuOidFbmdsaXNoJyxpdDonSXRhbGlhbm8nfSlbbF19Ij4ke2wudG9VcHBlckNhc2UoKX08L2J1dHRvbj5gKS5qb2luKCcnKTsKfQoKLy8gMTkvMDkvMjAyNjogY29udGFjdG8gcXVlIHZlbiBsYXMgdGllbmRhcyBzaSBubyBwdWVkZW4gZW50cmFyIChwYW50YWxsYSBkZSBhY2Nlc28pLgpjb25zdCBDT05UQUNUX0VNQUlMID0gJ2lzdHJpY2VpbGx1c3RyYUBnbWFpbC5jb20nOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2F0ZS1sYW5nJykuaW5uZXJIVE1MID0gbGFuZ1N3aXRjaEh0bWwoKTsKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlYWRlci1sYW5nJykuaW5uZXJIVE1MID0gbGFuZ1N3aXRjaEh0bWwoKTsKZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmxhbmcgPSBMQU5HOwppMThuVHJlZShkb2N1bWVudC5ib2R5KTsKaTE4bk9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwge2NoaWxkTGlzdDp0cnVlLCBzdWJ0cmVlOnRydWUsIGNoYXJhY3RlckRhdGE6dHJ1ZSwgYXR0cmlidXRlczp0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6WydwbGFjZWhvbGRlcicsJ2FyaWEtbGFiZWwnLCd0aXRsZSddfSk7CihmdW5jdGlvbigpeyBjb25zdCBhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dhdGUtaGVscC1tYWlsJyk7IGlmKGEpeyBhLnRleHRDb250ZW50ID0gQ09OVEFDVF9FTUFJTDsgYS5ocmVmID0gJ21haWx0bzonICsgQ09OVEFDVF9FTUFJTCArICc\/c3ViamVjdD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KCdBY2Nlc28gYWwgY2F0w6Fsb2dvIGRlIElTVFJJQ0UnKTsgfSB9KSgpOwpjb25zdCBSRVNUUklDVEVEX0FETUlOX0VNQUlMUyA9IFsiYWRtaW4uaXN0cmljZUBnbWFpbC5jb20iXTsKLy8gTm9tYnJlIGEgbW9zdHJhciBhcnJpYmEgc2Vnw7puIHF1w6kgY3VlbnRhIGRlIGFkbWluIGhheWEgZW50cmFkbyDigJQgYW50ZXMgc2Fsw61hIHNpZW1wcmUKLy8gIklTVFJJQ0UgKG1hZXN0cm8pIiBwYXJhIGN1YWxxdWllciBsb2dpbiBkZSBhZG1pbmlzdHJhZG9yLCBhdW5xdWUgZnVlcmEgbGEgY3VlbnRhIGRlIExpZGlhCi8vIChhZG1pbi5pc3RyaWNlQGdtYWlsLmNvbSwgY29uIGFjY2VzbyByZXN0cmluZ2lkbyBhIFZlbnRhcy9UaWVuZGFzKSwgbG8gcXVlIGRhYmEgYSBlbnRlbmRlcgovLyBxdWUgZWxsYSAiZXJhIiBJU1RSSUNFLiBZYSB0aWVuZSBzdSBwcm9waWEgY3VlbnRhIHNlcGFyYWRhIGRlc2RlIGhhY2UgdGllbXBvIOKAlCBzb2xvIGZhbHRhYmEKLy8gcXVlIGVsIHNhbHVkbyByZWZsZWphcmEgcXVpw6luIGVzLgpjb25zdCBBRE1JTl9ESVNQTEFZX05BTUVTID0geyJ6ZW5zdXJlODBAZ21haWwuY29tIjoiUmHDumwiLCAiYWRtaW4uaXN0cmljZUBnbWFpbC5jb20iOiJMaWRpYSIsICJpc3RyaWNlaWxsdXN0cmFAZ21haWwuY29tIjoiQW5kcmVhIn07Cgpjb25zdCBMT0dPX1NSQyA9ICJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQkxBQUFBR1VDQVlBQUFBbEpOdElBQUFCV0dsRFExQkpRME1nVUhKdlptbHNaUUFBZUp4OWtMRkx3MUFReHI5V3BhQjFFQjBjSERLSlE1U1NDcm80dEJWRWNRaFZ3ZXFVdnFhcGtNWkhraUlGTi8rQmd2K0JDczV1Rm9jNk9qZ0lvcFBvNXVTazRLTGxlUytKcENKNmorTitmTys3NHpnZ09XNXdidmNEcUR1K1cxektLNXVsTFNYMWpBUzlJQXptOFp5dXIwcityai9qL1Q3MDNrN0xXYi8vLzQzQml1a3hxcCtVR2NaZEgwaW94UHFlenlYdkU0KzV0QlJ4UzdJVjhvbmtjc2puZ1dlOVdDQytKbFpZemFnUXZ4Q3I1UjdkNnVHNjNXRFJEbkw3dE9sc3JNazVsQk5ZeEE0OGNOZ3cwSVFDSGRrLy9MT0J2NEJkY2pmaFVwK0ZHbnpxeVpFaUo1akV5M0RBTUFPVldFT0dVcE4zanU1M0Y5MVBqYldESjJDaEk0UzRpTFdWRG5BMlJ5ZHJ4OXJVUERBeUJGeTF1ZUVhZ2RSSG1heFdnZGRUWUxnRWpONVF6N1pYeldyaDl1azhNUEFveE5za2tEb0V1aTBoUG82RTZCNVQ4d053Nlh3QkE2ZGlFOEhZV2hNQUFRQUFTVVJCVkhqYTdMMTNmR1JuZGYvLytadzdrbFpidmJ2ZVZSdk43SzdYR0d5TU1hYVhtTkI3RGIxREVzaVhCRWdsN1F0cHZ5U2trSVRrbTBaQ2VpTUVFZ0toRXdoSjZCM1dCb3k5Nml1djErdjFWa2x6bjgvdmozdEhtaGxObFdha2tYVGVMNFJYbzVsNzd6elB1Yzl6enVlZTV6eUU0emlPNHpocmdRRlErZ01BUFFleVYrUnBDNEZTZnlhRURJQlRVMU5UazNVKzR6aU80emlPNHpoYkVub1RPSTdqT002YXpMY0NnS0doM0Ezc3dSTkJlN0FKOXdBVUFQU0w3QUZ3aDZTUGg4QjNvNUM1NmNTSlcwNVdmdDV4SE1keEhNZHh0cXBEN1RpTzR6aE9aK2JZNGp3YmhvYnk5N1FldlJpd1Y1blpZTDBQQm9XTEZMNHFoTitlMmpuK1hoekRQSkpzck9ETjZqaU80emlPNDJ4VjU5cHhITWR4blBaU0pqWU5qeDU2WG1UNEZkQ09DZ0swVElncXpzZkZMQ3NqQ1NrVVF0QS96Q0g4OUttSmlXbTRpT1U0anVNNGp1TnNVVnpBY2h6SGNaejJ6NnNDMERzNG1Ec2E5ZkFaSUgvU3pDNlRGQ01Sb1JyTnY4VzZWMFlDaXNQSENndjRrUk1ueG02Q0x5ZDBITWR4SE1keHRyQ2o3VGlPNHpqTzZ1ZFVBY0JJTHZka3dsNHQ0QUZtSEZRaU53VWs0bFVyQ0lCSVdnanhGMVRnaTZlbmozOExMbUk1anVNNGp1TTRXNHpJbThCeEhNZHhWZzBCNlBKY2JtanY3c3ZlQk5xdm1kbDlRTzZFbHBZRkxyNWJOYlFuc3RweENTQ09Jc3NLWWR2WnU4KzgzNXZiY1J6SGNSekgyWW9PdCtNNGp1TTRLOGNBaE9IaEswWXRFLzgxalk5TTlhbnk1WUpxTVdHcVhNeFM4bjg2alFLZU5EVjEvTFB3ZWxpTzR6aU80empPRm5PNkhjZHhITWRaR1FTZ1BmbjhaWllwL0RiTkhxbWtRTHVRWkRtdlRMeGEvaGtDa05IMndmVDk2YkY5Q2FIak9JN2pPSTZ6WlhBQnkzRWN4M0ZXaDNZRy9CZ3RlazVhcEwyNDdDOFJvYlFLbmFuODg1UWtrazg3T0hMNEdxUkYzcjM1SGNkeEhNZHhuSzJBTzc2TzR6aU9zL0k1VklQWjdJMHcvckNrb3FEVS91WDVpWWhGQUNCNW9DZlNnNzM1SGNkeEhNZHhuSzFFeHB2QWNSekhjVnFHQURRME5MVGRMUHBSbysyVlZMN0xZTFhNcTBiU2xwbzZNeEhRNzEzZ09JN2pPSTdqYkNVOEE4dHhITWR4VmtqVTAvY1ROSHRxUS9GcWFWRmhmZXE5VDJrZGR4QWlCb3F2ZWk4NGp1TTRqdU00V3dFWHNCekhjUnluOWJsVDJlemhCNGg0UFZTNWJMQkVVMnBXdUtxazl1Y0VBQ2JkQjB1RjNIMUhZY2R4SE1keEhHZExPT0dPNHppTzR6UUhrWWhHR1VUaFZVYmJCeUNnUkVSYVRMNWltODVXeXVMQjVhS1Y0emlPNHppT3M2VndBY3R4SE1keG1pZXBmVFY2NkZFQVg1d1dibWZWZDdYempKWHpOdTFyQUlvN0h2b3lRc2R4SE1keEhHZlQ0d0tXNHppTzR6UUhBV2pQbnZ4bFJ2MGNhZHRSc1lSUFdnc3RTWkJ3b3VTYUhNZHhITWR4SEdmVDQ3c1FPbzdqT0U1ekVFRFl0Y2RlVE9JUjFiS3Z5QTRsUkpVZVZvQ2dPZThPeDNFY3gzRWNaeXZoR1ZpTzR6aU8wOXg4R1lieitmc0MraWtsU2hXd3RobFFBc0FnbldEZ3A3MUxITWR4SE1keG5LM21rRHVPNHppT1V4c0MwTjY5ZS9kUWZEUE5SaUdWRlc1Zm9xTkxDRVVTQkc2ZW10cCswMXFjMEhFY3gzRWN4M0c2QlJld0hNZHhIS2MrQktDK0hUdnVDK0JKTlF1M0w3NjEwYUZXbExRbEFKVENRcERlQ1J5Ymh4ZHdkeHpIY1J6SGNiWVFMbUE1anVNNFRtMktJbEVVV2VhNVp1d3RlYjNKajVmK05IcTk3cUVvNlR4aWZLYTFhM0FjeDNFY3gzR2NqWThMV0k3ak9JNVRIdzBOSFJrQjhiaFVNMm95NjZrVmZhazVJVXZneFRnSzg5NGxqdU00anVNNHpsYkRCU3pIY1J6SHFRMEJJSW9LenpQd2NMcDhzTTdjV1Z4ZHlGV2NydXBuMC9wWCt1RHN4TVMzNE1zSEhjZHhITWR4bkMyR0MxaU80emlPVTN1T0RBTUQrVU15dmhSa2hMcWlVWjNTV0MyejdEZ21LUWJ4ZmdBRnVJRGxPSTdqT0k3amJFSG4zSEVjeDNHY1doTmxENjRuZWE4aytXcGQ2azRsUXBVMEU4L3ptUGVJNHppTzR6aU9zeVg5Y204Q3gzRWN4Nm1LQUZnVTRabWtSUUFDYWdsWWFtZjJWWkhGNDRrMFNCaUw0d3NUSmRmbU9JN2pPSTdqT0ZzR0Y3QWN4M0VjcC9yOHFBUFo3QkVJajB4ZnE2MVFzWkY0cFNvL0xVSmMzTDU5ZThHN3huRWN4M0VjeDltS1pMd0pITWR4SEtjNnZWRjBINGlENmZMQkZhQW0vMVpMQUNzcGRTVjhlV3g4N0JLOC9wWGpPSTdqT0k2ekJmRU1MTWR4SE1lcHpUMXAxb042eXdlcjBtcVdsZXI4Z1NhRkJRUjhKbjJOM2kyTzR6aU80empPVnNNRkxNZHhITWNwaHdCQ1BwL2Z4c0Q3dGY1eHJmQ1UxUTlHRWhDK1M4YWZYY1VKSE1keEhNZHhIR2RENHdLVzR6aU80NVJEQUZoWXdMMUVQTHE1M1FkWFVkdHE4Zk4xcitpYmt3TUR0M3ZYT0k3ak9JN2pPRnNWRjdBY3gzRWNwL29NZVYrU3U1R29TNDJYN2EwNkw2cnFBUWdKSWVoaitPSVhGOUo1MnpPd0hNZHhITWR4bkMzb25qdU80emlPVTRvQUdJMFBJTmxZTUNvV2VHZkpwMWU4NGFBcWYyR1E3Z29Jbi9kdWNSekhjUnpIY2JZeUxtQTVqdU00VHZtOHFJTzUzQ0dDVDBMVjVZTkxJbFBaN29UVnhLb1ZsVnRmUEloSWdzU3RGc2UzTFR1NTR6aU80emlPNDJ3aE10NEVqdU00amxNeE9TcTZSdFJJZFFVcWVXMlplRlg5YmRVUDBaclFkZHYwOVBUZDNpdU80emlPNHpqT1ZzWXpzQnpIY1J4bkNRR2dTVTgwWXdaUVFLdDVWR3ppRTJ6bU1wSjNDZm9TQUs5LzVUaU80emlPNDJ4cFhNQnlITWR4bkFRQzBBMDMzSkNSNlFpQXB1UWlsWDZhTFo2dHNtN1cwa0ZGZ2tGaEdnVyszN3ZHY1J6SGNSekgyZXE0Z09VNGp1TTRKWncrZlhvN2dCMU43ajI0c2pKWGpSRkFVQmdyRkM3ZXN2U2E0emlPNHppTzQyeE5YTUJ5SE1keG5BUUN3TG41K1J5RmU2bHFBZmNxSDJnMTg2cnFRVkpVL3BxQW0yWm5aeSttcjdpQTVUaU80emlPNDJ4WlhNQnlITWR4bkFRQlFJYlJZMEh1QlNBSXJLWWJMUlp3TDEwQzJON3JvRUk0cjZDUEFHaTlEcGZqT0k3ak9JN2piREpjd0hJY3gzR2NOTVBwd0lHcmQ1SjRCc21HQmROWnpJbHFjcWxodzdNWEVRU1FFc1l6cGc4dHZ1bzRqdU00anVNNFd4Z1hzQnpIY1J3bmxaQjZ0cCsvRnVLMVpjc0hWZnkvNUVkU0lsNTE1QXFLL3hKRWZXcDhmUHdjUFB2S2NSekhjUnpIY1Z6QWNoekhjUndrNnBTWitCSXpYb1k2eS9iS3hLdlYxcitxdUFJQkVzQVF3cHdVM2dWZ0FWNy95bkVjeDNFY3gzRmN3SEljeDNGOExnU2c0ZUZEVndwNld2b2FGLzkvbVVEVjBZUW9NVkhJUHQ1cjlubTRlT1U0anVNNGp1TTRpMDY3NHppTzQyeGxFb0VvZzVjWmJWakpHc0VTbFlvVlA2cCtCSzNxN0FDTC93TUVmV3BzYk93dXVJRGxPSTdqT0k3ak9BQmN3SEljeDNHMk5nU2c0ZUVyUmcxNkZnaUNUQVFqVmt1L1V1MmpjRFZYa0J4Y3llNkRkNk9BVDhGclh6bU80emlPNHpqT0lobHZBc2R4SEdjTFF3QXlXM2c4R1YwbEpiV3dscit0ZEt2QkRpVkZDU0pKUWQ4aDQ1dmdtVmVPczFYSHBOTC9sZzVDMWY3dE9JN2pPRnNHRjdBY3gzR2NyUndvQmlDL0RkUXpRUUxKOW9Pcy90WWFmMnJuQlJGUXdNM1QwOU4zd3BjUE9zNVdHb3VLOTN2eG5sZUw3M2NjeDNHY1RZOExXSTdqT001V0RobzFNcUtIZ3ZZOWlYWlZUNkVxRmJGV3FTMlYxTDBxK1M4bExVajRjdm9POCtEVWNUYjErRk1jQVVMSnZSN3RIeDBkNkplMm0xbVFSQUNZbjUrUFoyZDN6UUMzektGY3VHTEZxT0k0anVNNG14WVhzQnpIY1p5dEdqeUdvMGVQOWwyYUwvd0V6WFpLQ21pNk5xUWEvNGtOemw1T0lHa2hoT2w0QWYvaUFhbmpiT3F4SjgzK1RPN3hYQzYzTjVDUGhQZ0FBZmNrY1E5SWV3TVFnNlFBWnJiMXoyZEhDOGVBL0NWQnN3ajg1MEloT2pZN2UrdnQ2WEdMZ3JlUEc0N2pPTTZteFFVc3gzRWNaNnNHa2JwNGNmNWhqT3pocXJsMGNJVkhSa1VZeWFZLytyVVFMdHpoM2VNNG0zTE1LUld1YkNDYnZUb3llMmFBUFFuQUE4d3NXaHc2V0dYNGlIQTQrVjBRdzhzeVVYemJ5T2pvUDF5STQ3ODVQVDA5a2I3TDBuTTRqdU00enFhY1RCM0hjUnhueTgxOVI0SGVDN25jdXlQTFBLbjU3Q3MxOVZLTHMrdWllQlppdldCNmN1d2ZQUWgxbkUwMzVnZ0E5dTQ5c21mN3JzTGpGUFJVa28rM0tEb0lNQzIvVjNiUE45b0MxWktEQ2dyNGlxUzNMTXhkZU4vSmt5ZlB3ZXZuT1k3ak9Kc1U4eVp3MnVTWVdZMGZGMGtkeCtsR2RIRWs5eFNDRDA5M0htd3dWcVVyY3lwTExOZjZwTkRLWWg2QkJnRlRvWUN2ZXRjNHpxYnp0UVVBUTZPamorM2ZXWGdQd1grTU1wbVgwS0tERXBRSzZLcmlQNVgrVlBwWFVwck5aUkh2YTRhLzdlM2YvcDdCN0tIdlFYbXhQc2R4SE1mWlZNS0Q0NnpHZm9ycDhJMmN0MnJoSGVCUENCM0hXWWQ1YjJob2FIL1UwL05lV3VZaHpXVmZxY3FTd0VaVHFKcW9oNVVrWHBFMGhmaWZKOGZIWGdpZ0FNK2djSnpONG1OcmFHam9jdXZwKzBWQ0w2SFpyblRGY2tEYlJLWmtEQ01KU2FkaWhUZk9qSS8vZWNsMStGamlPSTdqYkFxOEJwYXpVcWRzc1k1RFBwL2Z0ckN3a0NkNUdja2d5ZERUYzBuejh4ZW5wNmR2QTdCUTUxaGVkTlJ4bkxVZXY0TDE5RHdCakI2YzFyNXFVYnhpODZkaXhlZFo2NDFDZ0Q2SlJMenk1WU9Pcy9ISEdRSEF5RWorZXhIaEY4MzRDSW1RRU5KQnBFMnJJTFRvUzBrS3BPMlBnTjhkenVhR3BpUCtGc2JHTHNGRkxNZHhIR2VUNEFLV3MxS25USU9EZ3dlWTZYMWVRWGc2bzh4VkF2Y0NDQ0FNUVJjWlpTNk81QTc5cjRCamxESm1acEp1ajRWeEMzWnNhdXJXV3dIRTZYRmR5SEljWjAzR3I0R0JnUjBBWDB5Q1NURFpJQU5pVVh6aXlrOUxKQXQreXBZY0Z0VXRNQ2ljQmZCbDd5TEgyVFIrRW9kSDg2OG0rV3MwdXl6TjlHeWpjRlUyanFUL1VDU0ZBSENuUmRFdkQwbnpNN2p4cmNBblE4Vm81amlPNHpnYkVoZXduRll3QUdGZ1lPQmcxTlB6SERKNkpjbjcwUWhwV1FTNEV3Ukk1c3JjTEFLUlZJQ0Y4ZEhjb2E4RmhIOWhDUDg1T1RrNVZYb09iMnJIY1RvVVdJYW9kOXRMU1Q0cXliN2kyaTJsSnl0RUxBR0FTRklCTjU4dEZMN2xRYWJqYlBneFJ2djI3ZHZkdjJQbnI0RjhGY2krNWplSmFNZnBsMnB1UmNTdkRJOGV2M3Q2QW45YytycmpPSTdqYk9TSjFuR2F0Uk1OalI1K1JHVGhyUkR2bndwWDljb1lWd3ZFQ0lBa2syMmdrd01jay9EWDg5UmZuUndiT3dIUHhuSWNwME9CNVVBK2Z5Z1QrQUdMZU04a3FHVDlvRkxwTU5ST25XdnhtTVV4a2xUUUc2WW1qdjhlWE1SM05xWS94NHA1ZnkydXA5djhoRVh4YXZ2T1hXK2oyY3ZTVzEzcjFEL0YybnJqaXZtMHFhbmpYL1h4eFhFY3g5bm9STjRFVHBOT3FVWkhEejJkMUIvU29udVhPSTdWZHNwcDlDTXM1aUdRSkErUWZFd0VQSFRubnQxalo4K2N1YlZMSEhMSGNUYlhXR2FYN2I3c2w4M3NTY251WFd3dUk2TGRTVnBMeHhPWS9LSlErS3V6ZDkvOURXeWNMSW5TNHROYzU1L0tlUWdybkpzMjhzOTYyMHpsdnB0YWc1L1NmdTZHKzBISTU3ZnQ2OW4yTm92c0Zlbnk1UFgwWlFnZzBPd3lNZlNmUFhQbWZYRHh5bkVjeDlrazRvVGpWR1B4U2Qxdzl2Q1BNOUl2RSt4UFgydFhLdnlpSTVvK0tad1Y4WmI1Q3p2ZWZ2TGtzWFB3cDRXTzR6U2V0eHBsT0tUTG40OWNrK21OUDBiandhVnhiSjJtd1NRMUk5RE1Rb2cvajdqbldWTlR0MHkzY2N5cmJKTjJDeHdxQzl5ZGJwbXprZGo2d0k3WjJkbTUvZnYzOTBmUjd1MkZ3cG1MZlgxOWhSREN6aFVkZWNlTzVML256eSsvSVVtWjJkNDRpbnBFWHV5VExrbktGcERaRmtuemNZd3pwUFlGdzJXWlpPYzlBRXNGTU9zUmxid3ZLaWw2RVlkd2N2NTgzN2Z2dlBPV3U2djVMT3ZsTDQyTUhubzlqYitMSnZZZlhhdVJKdjNQaFJEaUYweFBUUHk3KzFXTzR6ak9Sc1pyWURsMW5iRjkrNDd1M3I2ejhLTkMrQm5DK3RCZThhcm8zQ1VaQ0ZJQW93RlNiKzN0djNEbHdNREFUODdPenA3M0FNbnBZdUZrTGMvZGJFREVHaUpETzBXTDlSUXoxS0I5cWhFRFFFOWZlQUZwQjVWVTdUTTBYQUhkeVI0dDFzTVNGUGlSNmFsYkpvdmlRNGZicW8xYzNRc2Ntd2NBSEQzYXR6ZUViYnRPRmV4ODVueEJFbnQ2ZXJiMTlQUVVDb1ZDMU52Ylc1aWY3ODFrTXBmaXMyZWpzR1BIUWpRL24ra2xxZFUxb3duYjRoMDJqMjBrZzNwa1hGZzRsOGxrZWtLd1VVQTdndWx1WTgvdUNKcUxHV0l0aEowa2w3ZHptVUpTV0hxdCtPOEtBdGxMWUsra1NNQkZJM3NpNHJJWU9HMkcvUkIzQmdSRnRJTUJ1a2pnUkpCR0tKNlR0SlBBTnBEQnJOeitBdFMwRlpnQlFTU0F5d0JsQUFaSU1ZREJrZEhjM1NBdkIzUjVEM2FkQW5EQmdHRnArV2pSNkE2d09MMmd2djdrK3BiZmdMdElaaURNQldLZWhnTVpvRmRnSVJQcG5HQzdJbUJucVUxbW9LbzFCcW83cWl5ejVveEZkMmQyRnI2K2JXZitzeUhHSjA5TWpYMEU2N2VEcHdFSWd5UDVaOUh3SytnZThhcDREWUcwSFlTZUIrQURhRTQ3ZEJ6SGNSd1B5SndOZ3dFSUJ3N2tCM3Y3K1dZenZtWU42emlFb3FjcTZiMWhJWHJkek15dDQ5aDZJaFpYK1ZsMStEcXFuWU1kc0pGNmdrbTlhK2lFcmJxSTJoMUUyV3kyZDNKeWNtRmdZS0F2aE1DVEowK2VBMjdvMmJ2MzlQYisva3VadVNqcTY1Y3VuVDkvUHM3czN0MXZVUlRzWWlGcnZmWXVJdzh2MWI1YTF6aFRrQ2hwSHNCYlJIM09BbnNRMWJZemtvcmp1QzhBK3lKQUVqTUFMMFRraFJqYUZ4bjZsWWdtcHlqbUFWd0FPVVZxdDhRamxIcXFEYmhsQXorYWVFSkJCQWs3SWV3U2RKZVJCdU5sQWk2akVBR1lDeEFoWFdiQUpkRDZBRndDMEFkb1htUUJRaCtBSFdDYWdWdHhrN0dKbTQvRlZvVDZCZlFTQ0V3dS80TElESUVCQU5za25TZTVFOEk4aUFCZ1d6T0RucXFPQUl1aWl3Q1F4V1dvWE95akdnTWkwMC9XMEtKWmNsNjFkN2dTQUtyK0FNWmx2Nnp1bmxESmx5Qlo5bnZWSzFHenN3L0xqZ3NBSVlSTHBQNDVBRytkSGh2N0N0Wld4Q0lBREF3TWJPL3A2MzhmelI2NWRnWGJXeklHUXVIa2ZHeVB1WDNxdHEvQnM3QWN4M0djTFJna081dlhKalEwbEh0WTFHTy9EL0w2Y205N1RiSVZrb0RHeUJDSDk0U0Z1UmZQek14Y3dQcUtXRVJubCtPNFdOTDlaUEw1Zkdac2JPelMwYU5IKytibjU3ZlB6YzNOazl4T1VvVkNiNmFuWjJFQkFCWVdlbnJpdmpqQ2hhVVBiOStlL3VNQ1NsOEd0bGVjNVVMNXIvMzlZb0c4YkQ2RU03eEU5ZXl3UFFUNkllM0lBQmNWUlR1MGdFdkthSTZJOWtIYW4wYVFOR0FPd01WQTdtbithOGExWGhJamJCTnNCOGxZVklFQnUwbWRBM2hVeEx4aTNVM3lLbEVuSmNZR2pRQlZNbDJxaFhhaHp0K0tOMkZBQ01CZWdqdHBPQzlwRjhtTWdtNEZ1Ui9FQVVyOUFIWUY0QzRtMzM4ZnBFamtUZ0lqeFFKVWJGT2duZ1RTeTZMM0tqYzA2OXpycFJsaGpmYkRZTWtSdWZScXJXQi9jWXZZaXVGTDFTTGNldDVCTGIyNHluZG1yYUdTVFE2MmFxYmRsczVidFh4NHBXaXlra0ZmNWVldmRUeVdOaDlMVktyeWF2MXJONGVwa1RtaVlWZTNmbDgwMGlCUlU3aXFwUml5NGVrVzYyQ1pFU0dFWXlyb1ZWTlRZNTlaUTRHR0FEUThtdjhoTTc0TllOU2wvclZJTUFTOWZtcjgrTnZnQXBiak9JNnpnY1VLeHlrTks4UEFTUDU3TXhIKzFNeU9KdHZNVjlySm1waU5pbEdXUXZoakt2ekU1T1RrcFhVUWQ0ckMxVm83ZXRIKy9WZHRON3RUSjArZW5BT09HckRBdlVlaVBwd0dkdTBxMkprejFKNDk0cVVvNmcxeGJNV2xPSm41cUxmcUVmc0JYTHhZOFVJTitnRmV1cVNReWV5aU12dFFLQWpncVFVcnhEM0JEbGtHUTdFMFptYTdMTEFuQm1TbVhRU0NLZzFrc1lCSkZYMGtxdHZ3Q3VJdUkzY2g2QlNBYlNHeWJVQUFZKzJqMmJ5a0RNa2VFcnNRZEVwa1FjQ2g1VEpJK2tBOGhQUXYxdElBbVg2dnl3TFFiK0lkTU8yRmRFREFXWUlIWVlnQjlDUGdIQUJLWVFmSTNrVmJKV3VxbjVWQk5xdXBFY0lPUUJmU1kvVlQ2QVhRSzJMQmdENEI4NUJpa1R2U09uWEZEd1lKOHlTMzFZcE5WWFpCcXZhZmtzdGhWVWtqeVlRb3h1dWxtU1kxMnJTRzROQlV3TnZrNkZGTlFpb2R6dG9xWUJXL0JGc1dyNW9jQ3Rtb1lhb0pJeFZDZ3JSTVMxS1ROOEN5b3pVUWRScjJaMjJSYnVteTJHSWJsUzJHNjBCcW5XcHBjU1h5Qzd2RXA5S3lmNnFaYmkzcnd6Vk1ZRlVyRjFiVlFBVWdrSWdVd25ncy9zRE14UEVQby9PQ1licnI0TkhkMjNjV1BrU3pCM2RoOXRYaUpFalNRb2cvSEJibW45a0ZEd1VkeDNFY3h3VXNaL1hpMWZCdzd0R0k3Ry9OTUFnaEJpc2xoalUzR1FGZ1VQeW02Zkh4WDhiYUx3MG9PbmZSeU1qaGF3TGpheG14ejhSUlVJZHJPcXBOWkpOVWZYOGFEUXZjQldnZndTRG83clMyaUlIWUpRa0VlaVFHRWhTeG0wbUdTUXpCQU8xQXNwUW12WGhiSGxPcUdCYUhLbkdFbGI2M0Z3bzdFaVVSRjBRRUFuc0Jib2ZDV1pDOUpETnA4SmFwR1puVWZMTE94Z05VTVltRXRUcUlpejIxTEdPaStVVXpUY2Z2clFkclRTeUdxcHVrc3Z3Nnk1Ym4xRDd5Q3RJbEcwUzdxRld2YUZFY3FTSGhOR2h4TnRsT3JjZnRsV2ZoOGxPMVI4QlN5VUt4NVpMTWFpUDhkZ3pDYXM3bWxpZDYxYjlueXpLdm1yblU2c3BFc2QzVWxXNkoydGNOYTNtOWFxYmxtL2xxN0ZBYk5oaXRXaE94VXBFR0ZvS09GK2JpcDh6T1RueXp3eUpOVXJoOUpQOUlSSGd2YWJ1d2JrWDFHbnNaNlVZNWt3c0tUNWlkNkhqYk9JN2pPRTVIOENMdVR0RURETVA1L0VNZy9KRVJneERDY3ZGcWhUSHhLcDFla3FMc3g0Wnp1ZitkSGgvL0dOWkd4Rm9zQnpNNGtuOThGT0hWZ0I0VU1Sb0VrRlk5cWFOT1JTMmVyWTVNV0JrM3NxTG9MdE1ILzlVeVNsakwrMStzdHhLVithK3M4R2RWOGlyVFpXaXBlQ0tZN2FxNHd1YU1nNjMwZmtuQm1iSTRPVW1sQ2NYS0xrdnhHc3ZmcVNZQ0tyWVljcldhM0tFbTlRa3UvNkxsZjZ4Nll0VS9ZQXZGMWRWRUg0bFZCUXlXbVU1cmVVMXNOZGl0c3Q1SXpYMmFiRFp5Ym5tVVd2YnZvcWpWZ2pERFRvNmpUWisxcm1yTEpteWxtVDBHMUxBZHUwb01FdHFXcmJjbTE3c2FBMXNtWEs2QmVGWHI0bHF2YUdnU1lqTTdsT25UbTY0R1huSU1tTytRVUZQeWpFalBNWXQyU2VqVzdLdTBiU1NZWlh1Q0hnTEFCU3pIY1J4blErSUNsbE1zUUxvRFFiOXFGbDBKS2E0dVhxMkhBMDlLQ21aMldRajZ5WUdCZ2MvTXpzNTJPdldkQU1MSTRjUDNZU0g4WHhHUE00dDJhMGtvS1dvNDZ2QTFyRFE0NE1wemg4cStVbG5Zc0xnc2JDbUhSZVhSaFJiem9Gb1FSQ3BpZ2VhaVlTMUZWYXpmZHZYYWdaM3ZtcGFQVi9jYXVjcURzM2tiWWgzYnFTSWNxUjB0cEJhK2pscjZKc0xhTCs3cUhqRkc5Vys3bHJ0RGJiYjVibXV2THBqMjJ0SFhhcS9Kck52QkdvcFl5LzZRQ0RXd3A1M0o1WjZPOGZGLzdtU0Q3OG5sOWtxNFlZTm9RU0xJSUY3WmlaNTJITWR4bkxYQXZBa2NBTEsrdmxlUzluQVU2emVva2NBaE5KOVpzdXJvZ1ZJSUpCL2QwOWYvU25RMkRjd0FhQ2liZndGai9TT2o2UHRJMnkwcHBBcE84ZHhNM3h0MTZNZWEvMkg2cy9odmxseGp5WTlLZnRETWo5WDVXeHBhTVBtUlNsNnJkUTdXT1pkcS9iMURVV2kzUktUc2dxaFpEZHFwUmxkb0ZWOXRWZkd0V201ZEV1dmF6dXNuenFnOVg1dk50RDFYMnFIZFBEVjI0WmpSaHFHbDNudVhmZVVOMTU4RUlETnVBL2dxTEtVWmQrVEp3L2JBUnhLOFgvcFVhMFA0MURUY3E0UHQ0amlPNHpnZHhRV3NyUTBCNk9EQjNCR0NyMHRyR2EzUVUrOVVNdEpTY2Q3MCtwNlZ6K2UzSVZuZXh3N2NEMkVvbTMxOFpQZ1RtdDFMVXB4ZWhLRWpvc3A2UlN6dFBMNmFxRkhDTGdvQzErTWFXaTF2MUEzaVZSdS9UdnVHcXcwM3lHNUk4VXF0SHJJYnhXR241U0dIcTczaDIvVzVWc2VSR210ZHlXdUg4L243ZE5Jd0NleWxXVS9qdlI2N0N0OTkwSEVjeDltd3VJRGxyaXVzQnc4MThHaTZNTTdxdTNvMUVuRTYvdlNkVkZKcjU4akNBdk1kY0VnSklBeU5Ibm00UlprL3BObXVkRGVoYUd0RlpDMlgzNjcrY2JVYWpYQXRUYjdMSXNkaWc2a0xyM0dObWxtclBDRHJ2TVMyWHNqV0dnS2FsdXcza2UxMi9iaXhoYjl5QzhtWGttUzBZWk1lM3RsTDBnNXV0UEZEaXcva0hNZHhIR2ZENFFMVzFvVUF3b0VEQjNabURNOGt1VlRoaVN2MWFEc2xaSlVkYTMvY28rRU90SVVHQmdaMmtPR1hqSFpFUXR5ZDkwZG42cytzL0x4VlZpQzB2Q2hocy92UmpYWXdVNWRjRnp0amdtMWJTbGlubHRPYTFlQnl2Sm04WXpaU2cxRHM2YWdUTFdVMjJrbzhrU01EQTBmMnVZazRqdU00R3hFWHNMWTRtY3l1ZlNJZnJMcSs4R3ByUjdlVi9pZ2czK1pqcHBsbzI1NXV4TU5WckFPMmFRS1YwdXlJalZEN2FUT3pCYiszdXZtNG0zVVRMbTJjZnR4eWh1dXNaWDhGOEliMFJ1OUUyUUdJZG1iRFdZb1VTSE1EZHh6SGNUWWtMbUJ0WFZMUnBuQWpnTXNoSlZ2WDFkd0VicTBENzJVMXRRZ2drRFFZOW5mQzh6WGpvMG5yNlc2bFlhVVpibXJEZTFUbGQxYS9QS2RLbTFXN2x6eUdhTjdtVi9CdXR0cFBic0FydjVmZGxwMVZHMUg3cjhBdzJFbGZsNmE3SVMyZ2JHZmVybWZxeElsYlRybDlPbzdqT0JzUkY3QzJlR1JOMktPTTFvdlNwNU5kbmczUGdIWXVDVWdLMmVkeVJ3ZzhkSXViUTQzbVdXbkZaMmR6Qlpwcy9xMXJXZlBaemM5eG5Cb0RrNEp1QWhDalErbVdoUkJ1bG5UbnhwQytmYkIwSE1keE5qNHVZRzFkVDA4NGVyUlAwUDZLVjd0QXZGTGQxd1E5QUVseDlYWXNDVEFBNkFIdUIvS2U2VmJZM0h6ZHZkclBzUU9uSTdaT3hvdG45blJmME9WOTRqZ2I4OTV0OWdZWEJIeXpRemU4VXQ5aEd1UVlGdFBHMjdHRFJhZDJkQ1lseFFyNlNPby9HVnpWY2h6SGNUWVlMbUJ0Y2FodXRJR0d4ZUl2YTZNektnQUlzQ09sWHQ0bTdPazJCeUpheFdjZFp5MXQxKzF5YlpxSGJuZmRkcjNjMHRaTEJaMWp3TTJkUE1mazVPU2RCUDV6WmExZHk5MWdaNjZYQUtUVENJV1ArZ0RuT0k3amJGUmN3TnJDWkM5ZE1rR1pSWDlKRzhQN0pURXlPRGc0MHFhTExLWmM3U1UzYTFUcmdicXppV0U3VE4renNieUpOaUdyZWM2Z0xqS2FoaVhxbHYxQkpDWGkrTUxDeFdNZG5BaVRFd2Q3ZDRCbWt0K2wxcjljYWMzUHl0L2Ixb0FpUUFHZk1yTnhkdzRjeDNHY2pZb0xXRnVZdTRGK0FaZFY5d1BYTTFxcDZWTlJFaVFOQTVtRGJYVkFwWlB5TU0zeFNMZnhlem9aOG5DMVVmaHFUN3BaNGptdXkwZTM5djJ4bWIvYWhqUUtTdmpJN2JmZlBvdk9iVGNhQUhCeThyYlBRZmdnU2JZMlVEYmFKR2VsUlFFcmY0b1phZUgyb1BoM0ppY25MOEtYRHpxTzR6Z2JGQmV3dGpCM1QyNDdUMkUyOFoyNnhVRnR0R3NiQVBKQ0pvTkw3WTMwT0lXbCtsZWVoZFV3Z0dFTHAyS0hyc2tENE80TkhkY2c5cTF4anRaeUYwcmY3Y3BOVTJiTGVwM2g4ZkNHN3VmaWlyYXk3bVFiYjlSVlhGdnoyVmVCcEFXRll6SDF0alc0dVpsY1p2ZzdTZWVBVmtXc3lnNm9OVVkxKzFQbFVJSUlVc0pmejB4TWZDcTk1dUNHN3ppTzQyeEVYTURhMHU3cUxYTUE3bXhwZDdFMWpZQ1hPWE1pQ1FOdm5adWJ1NjFORVZOU0EwdUZFNERPdTJuVWlsNjFCdWZZakxEQmQrYm0rRXByMHNXZHF2SERMV1I3cTd4RnQ1ekd4NUx2cjYzVDV4djMrZ1RBcEhBdUtMeDFkbXpzZU9ybmRsS3NDUUE0UFQ3K1NRanZJaXVkbHpXMkd5MmJ1Z05BVTlDSm1QcUxyWG9uTzQ3ak9Kc0hGN0MyZXQrYjNiejhNZXRhK1RhcTRYV1ZabDVWdVJicGxwTW5UNTV2NTBWb1llRW1DVGVSYkhmeGlRMFNDTlRhRWJCUmMyelNtdmNkanl6VWhUYWtMalpwTlQrVVZMNms5Ynl2QUhiamNLS1ZtZ1kzaUcyMzJTNDNrWWlsWm0xamNVcFFHNjlKclYxWWE5bFhNWkl5QTVjVThOcVo4ZkcvUk9mRnExSUtvVEQvYTBINkxra0RHQnEzdXRwMzcxYWJxcGZzVmdINmd4UGo0OGZnMlZlTzR6ak9waEF4bkMwY1VvY3ZoS0JMUzI0NjEvd0tHai9pTC9mS2d2RFY5TVYyMUhBUUFNN096dDRPOHJQWU1HcE1xMSs3SFYrcmlXV0VUY2V3VzJtcEVkZWdiOWI0ZTdESjdsVzd6Wk1kdUV1MEJpMm43ck05YlhWN2J1SDdzcEZTMEtYM0tsZlk1WXZQdE5qRy9tUjlGNEExeG83NjRwV1FpREVpR1VHYUovQlRVeFBIL3dhSm9MVldIU1VBbko2ZS9qWUs0WTFTT0lWbFFsRzFZdTF0YU1iNjVoaVRORUZmUXJ6d3grN3hPbzdqT0pzQkY3QzJMZ0tBRFBBbFFGOVBhbyt5QzFNd3loNTlXd2k2QkxOdmRlTEVqQXQvRlJUU25ZUzZQVUxoQ3QrclRwbFMrZW00aXM5dnJWdXdTcU5wSGUxSTdlc25kYXE5V2crb3BmWHNaWGJmV05HTXFiRlJIOVFyUEZZdnFxNzlOM2J0V01BcUdrU2Qra1BWdjZ3NitCUEtmMWZ4dFFBaUNNbFA4VFZWL0dETmZyajBiNlUvNlRXVy9WNzZldFZqc1BoOW1XUTdnU0hFbjR5cFYweU9ILzkvV0pMRXRLYTNPbUJUVStQL0F1RTNrcVdFckhNTkhSOFhBb2tvS0l3WFl2ems5UFQwS1d6YUdwK080empPVmlMalRiQmxFUUNPajQrZnp1YnlId2Z3Z080VVpNclhieEM2dXhBS3g5dnQ2QUhnNU9UazUwZEc4My9IeUg1Q1Vnd2c2dXBnYXNVQ1FEdVgvVlg0dzJ6bE9wYVo0eHFLUmx5SFBtdm1lMnVOMjZQYXRkVzZwaWEvMHFyTXVkRkJTNnRNcStySHFuMGJJQW5wMTJxL2lsSWhSdUJhaUZpcTM0anBTNVg2a3hwMGQ3WFhXZm9CQWxMNWwwMFNlYldTKzA5cDI2bmxlM1NsaGJwV2RKOHgxYSswbUp2Rm1zZGo4bjA2YTNra1dkb05TTldUVmQyR0hSc25xeVI3cDgxV3RUZHFYSXNnSU9oTVVQZ0tGTjV6OGZ6NXY3anp6anZ2Ymp4d2RkNnZPbi9XL21UN3pqaEg0MnNBUnFtZ3lCVmQyZ3BNVzBBdzBrSUk0d2g2eGV6VStIOWliWmRUT283ak9FN0hjQUZyYTBNQUN1S1hJb1VBME5idk1ocjdaQ1JOMG4vT1RtNzdUZ2NjVkFMQUF2VkhQWXB2TkVZUDZHNFJhNjJGbG5yQlhqT2lRenNWajdiRkdWM2UvbXNwdHRXU2ZlcXBEMHppY21sWlJvOGEzT0hWVzc5eTE5R1c3SkQxUkt5eVQ2cG10TDdDbGl2WGJ5cTFteElCSTdUWlZtc1ZDNnp4Z1ZUU2tKYnJnTldFcmVVcUNhcnBZcVN4bU9JbXBXOWIxRThxRTJFYXBXZHlzYzFZczVXYmFSKzJZUGYxWGxYSmxUQXhua1doaUtVVjNsT0ppdVZYbEtoSzVKSTBGeHJlSEszTmJBUnhTa0huUU93VVlLbWtlQWxTQWVSNUFYMEVUQUZ6b3VZWHo2amxwckg4R2haZk5RaDN3ZEFEWUFlRVFDZ0U0UlNKRE1oOUZPNFFkREk5WUd4QW40aGRFczRDbUlYQ2J0RHVCaFZEV25ZTmdXbE5nSm83WDVickx4Sy9ZWXEvR09MNEd6TXpNeGNXcjNOOVJSb0I0T25UdDU0NWZSby9tczNsendINFVSSzlhYWFiTmZ4MFBmTlZVeGNRUUZnSTRWZ2g0SWRkdkhJY3gzRTJZN1RxYk8zKzErR0Rod2NXK3ZVZnBOMVBVbU1uYTgzRkJSVVhiRXhiaUo4eE1USHhoUTQ1WkFTZ2taRkREMktrUDZWRjkwbmJBOWdReTIyYkVUeWFGVVhVd3BEUjlqUWNOZEE5MmxqNWRrWERZRkVCV01HMU5GTTlXNnU5dnRYYmtDcGVUT1FoV3hTdXFsNll5bHFuYm10WGxWc2EyeVRUZkpaaTh5KzJsaW91V2syMGRCdXpUQmFqY2JMMmVrVmFHelRjaXUrNDFBQWxneVloYVlGRUJJQVNDcWhYRGFta3kxbE45aUlGd1FSY1NDUWN4UVFXSlBTU21CZHdOOEFBSVlKaFcxcUhhQzVSZjBTUkN3UVhWdlIxamFuMTZUU0Y3Wkw2VWhXSkl1Y0puSlYwRnNJNVFiYWttdkZVK25WMko5ZUhBS3VZTWlwbkQ2dlFQMEpWU2NRa25aQmhnYkFCU0tkQ0hJQUlpR0JocWMwU0lVZmtuUXJzSWRITG9BVkZPSU5DUlYrVVBrWXN0R3dQREJGT1JDR2NpYzMyS0FSTHozc2hpdU9GK1V6bWJBUnNDNUwxU1pmaWVQdWNGT29ZL0xtYWY1bWYzem0zYytkOE5EOC9ueW5hUmFGUXVCVENQdmIwbk5rV3gvc3Vuang1N09MU0oyNndnWUhKM3RuWjJYa0FDeDBXVVlyMU1MdmxDVW54enJSc0x2ZmpzdWlYRE5pbVJOQlVWWDlpbFlzZVU0RU1KQzBvM0tJRlBYOW1adnlMU0I3Q3hlN3VPbzdqT0M1Z09ac0ZBeEJHY29kKzBNai9wK1IzZHQ0MjFJbzRFa2hhSE9KZm5SNGYvN2sxY0lURFVENS96MGg4QjgwZWtvU0hpMExXZXQwejFjcmNya0JzYW9mSVV1V0ttbmxrM0RDUlpQR1hXaWs0TEkremkxa043UkNObWg4eHVhS2xUV3pjTnN0RUJLS1pUTEVWVlRoalJTT3IvaldWL292RjFrOCtHQmFWR3lsSUtJRHFrUkFuZFdyRWhnSldFODFGc2dEcGdvU0xnSHBCN2tPUy9URXZNa05oRjhqZHBRZFN6WjNqV0VYRWFrNUFLNzlHVmdoclZUc2dOVkl0RVBpWFFFMVFySm41M09EcEFTV2RnY0VRMEVmcERobU13QjFDZERjUTk1RU1BZGdONlJZRjdqSlRSc0Nka21vZnRsQkZUQ2xVL0M0WllwNUhCbUJzY1lqQ2dzWHNWUVp6QmVrdW03ZTRweWZPQUwzOUlWeWFEeUZjU25kMHhVSlB6MEp2b1RBdmFjVmo1L3o4L055T0hUc3lDd3NMaXhteFVSU0Z1Ym01K1pNbkQ4d0R4eFpRbmovbTJTYmQ1MnUyTysyMWRBaFROMy9uZ1Z6dVNUMjBId1A0cUVUalZ2V1JibVdQUTRRMFF4MFFRdEQ3WThVL1BUczUrUTE0NXBYak9JNnpTWjBLeDIwQUF3UDMyZDZ6N2U1L05QSXBRVnFENVlSTlo1a0VKdW53M3pDRloweE1UTnk2TWxldkpReEFHQjRlSHJWTTc4c0J2SkptaDVJNFRtdlRJeVhiMXBPVmxXRmFLYnpORnZxalNSR3FhVFdpem1kckNsOUtuWHR5K1FJa2hYUVphUkxyQzRIRWdrckNiQUtGNm92ZlZGdkJXWHFMZ2JpUU5uWS9pY0JFTkpnbkdhZFJ3QnlrdXdrRHFCMlFUb0hzSVJCTHlJaTRRS202OHBabURKV1hJaEpVc2lvR2hJRTRDK0F1d1BZU21nTnhDVW5teHprSkdVRDlaTFNUMERtUUp4bUNnVm9BT1MweEV5b011VlFjUVEyQnBPeHZJWlJrb3dBaEJKSzhXd2hUZ05ISUEwQVF5RHRENFBrUXRKQWgrbUxnb2dsbkVHbC9ISGd1RXVhcUNWaGxsQzdRalN0MGsyalJiQmlDTFRBTzV3R2VOeXYwU2RFQk1qNEo0RUt3dmdGajRXMWtkSDFwQmltYnZSM1VqaEcwNWdzaHFVOFVQbjN4WE44VFRwMzYxbG1mY3RiVXQ2bFJORzNMK0UzZHNuNWIySm9GeEJmdE1Kdk43b3N0ODJKS3J6VGpkV20yWmtEbEE4UG1sZ21XaW5aR0FDSG9tMVQ0TTFKL1BUazVlU2RjdkhJY3gzRTIrZVRxYkcwTVFCZ2NIYjEvWk5FL1JPVFJ6b3RZVFZVbWpVbEVJUTR6Q0hqVzFOVFlaOWJRQ1Y0OHovQncvcjdJOENtazdrbndDUUQ2SlVRa01raHFnOFFnNWxiZElrbUd3Z1dBOHdBTVJCK0ZCUUFYQk1Va3Q2ZnZ1d1BBSlFEOUFPWkFicU8wdVBZanFNU3JiVEtzU0RQdjdxSnd0MmlYZzFvQWVCNlNTT3lDTUMvaExpa2NCM0Vka2dWYzN5UzVJR28zQXU2c2Q1b1FBc3hTUVFRQlZtMEZSYklrNkc0QXAwbGxFR3VIek9ZRFFpL0pnb0F6a1hoNUVPNDJhVUZtYzBKOGw4eDJNb1pBQmpPZFhaYnBVVmo4djFRYVNmK2R5VlIyZ0NHMjg0bXdFbmFBREVnRXJEa0xVUUZZZ0tSTEY0RTd0MG1NbzJpM0ZRcXptVXltZDM2K3A5RFRNOS9UZTc3M25ORlUyUmo3MHYvZVdmRjc2V3ZKSlFUMjlwNHZ6TTVtNXdjR0pudDdabnZDSkhiSHdEeUJXOUtsWUVlamdZR3ptZG5aWFFYZ2xybXRQbmlOak9RZmpFZ2ZCbXdYYXErRXF6N2NhT1hsdit2UHBpd3hhMUlodkhGeS9QaHZwQWE0R1lQS0ppdi9iem5oeG5FV2ZTd0FPSGp3OEVCbVcveURCcjZXWmdQcG5KNElVclYzTDFERmxoVmt1bHc1aFBnU3lYZkVDL1liSjA0Y0g2czhuK000anVOc05sekFjc29jck9IUjBlZVpSWDlEb0NlcHFkQXBFYXZoYW9JazgwcTZHT0x3dXBuSjhUOWJCNmVzK0dSME1VRmxLSmU3YnhUQ3pnS2k3VWJ1SWRCSDZTd1pUdFpkcHRPQVFpS3NrR2Jub2hEbXBSNlMyQlpDbUNlajh3dFJJZTZKNDUwa05UL2ZjM3NjMzMwaGluWnZYMWpncGN6dXVOOHVYVnAxWnNmczdHd0JRQ0diemZadTI3WXQzSExMU0F4OEV2bDhQck5qYkVjNGhtT0Z0QzE2cndad0RKajMyNmJyN3VHdE5uL0Z3OW5jcjFrVS9YUmwvYjVtOWR1YTcyOGwwYkhxNTVMVVNTbk14b3FlY21MaTFpOVdqQ2VPNDJ5dDhXcngvaDhlenQvWE1uaTV5T2NRR0M1Zm1wME9PR2toL2JMdEFnUUV4WE9VYmhYNFh3aDQzL1QwK0g5Z2FRVnl0eTZwZEJ6SGNaeTJUYWlPVTJvTG1aSFIvR3RKL3FJWmQwdUtCYlo1Sjc2NjRwV1FMTHVKUW9oblE5RFBwK0xWZWo1SnB3ZWVpNVNLaUtWTGM3YlNXTkt0MnlwdU9Udk1ack5IeGVqRE5EdThHZ0dyb1hqVlNtc3ZDVmpKa3RjUS84bmsrTmovOGNEU2NSeFVsQjhjek9mdkZZbVBFSFNFNUdNcFhKWHN3NEFNaVJqQ0dTaDhXOGtHQ25jbzhQTUkrdEo4QnQ4OE5URXhYWEZjSDE4Y3gzR2NUVS9HbThDcENNa1dwaWJHZm5jb2wrdUY3R2VOM0NNcFRqT3gyTDdUVlAyREFCakpTQ0ZNU1B6Sm1jbXhmMEozMU84b3JhV3lsY1dLZ09yRmM3V0Y3eGxudlRxQTBWUE1lRmpKdWxGcmRvL05tcDNYN04xZGI3RmNXckFObEVsU0VENkQ4dXdJeDNIYzF6SUFPakUyZGhPQW13RGc4c3R6djVmcDE0Z1ZyRWRSMkJsQzVnd0w0U3k1TUJiTlJKckM1RHpLZHhRc2ZZamtZNHZqT0k2ekpmQU1MS2VhVFJCQXlHYnp6NFR4L3pQanZVS3lYL3Z5Z3FNcmp2ZForbUpSdUVwcVFVanZDUVg5OHZUMDJGZmdLZkdPNDVSakFNTGxsK2VHK3JiekkwYTdwakw3cXBYUnFPRStCSzBPYlFrQmhFa2FZNGdmTXprNWVRdThMbzNqT05YSHM2VnhvL24zdTEva09JN2piUG1KMDNHS1RsRUF3TW5Kc2ZjZ0ZKNFdGTjRHaGRsa20rYkZwWFFyY0p5b3RDNU1XSFRVU0tiYlAwc0tYNUxpbDhVTGN5OUp4YXRWbk10eG5FMDhSbUhiZG51UjBlNGxxTGg3WStzajB1TC90WjkwejhsdkE1Z3F2VzdIY1p3U1Fza1BVNys4OG9jb0wyWGdmcEhqT0k2elpmRU1MS2NlaXhrREk0Y09YUWZoaHlHODFNeDZrMDF6RUtNOEkydDUyZVAwaldta21HeHZ2MWlzVkpEQ0xJSFBDZnpuT1lTUDNqRStQbE41YnNkeG5KSXhSa05EUTl1ajNyNlBrUFpRS1pSblh6VVoxcFZ0VjlpT0ttNHEvNCtSRENIODdOVEUySy81ZU9ZNGp1TTRqdU00cThkcllEbjFXS3gzTkhYOCtGY0IvTkR3Nk9IM2hoQi9QNlRIV3hUMWFURmlXL3Eva2dDU0pGa01EQ1ZCd0drRXpRTDZMeENmUWN3dlRVNGQveWFBUXZxWjRwSkJEL1ljeDZtRUFHUzl2VThBY0YyeS9YelpIbDFOSDZWc0VYTjdFUUFHaFZNeHdrZTh5eHpIY1J6SGNSeW5QYmlBNVRRVGpBR0pzRlNZbnJqdDM0R2pIeDRhblhzQzR2anBJTzhqWVpUa0FTekxZZEFGaFhBN3lHOUIrRHpBN3dTR2J5NEEweVdaVmlnNXZndFhqdVBVSWwwK2MzVXZkUDZsTk50UnRmWlZVMXMrVkhuVGFyT3dsZzRwa2d3S3Q4eWQ2L2xPeFRqcU9JN2pPSTdqT000cVhHN0hhY1ZlaWpVWUFBRFpiSFpmb1JBTldBYlhnZXdEdEYwaDlOTHNES2hKRkFyZm11N3BPWW14c1VzMWpsVU03anpBY3h5bkhnWWdqSXprSDR5SUh5QjVHZXJLVHFyNnovSjFnMjFHZ0lCQTBvTGkzNWtlSC8veHpwM01jUnpIY1J6SGNiWVdub0hsdEJpZUxRYU1CS0RKeWNrN0FkeUpkQnZvT2xRVHJEeW9jeHlubGZFSGl2aTB5T3l5WlBsZ3ZZY3dKVmxXeXpRcmRmSWFUUXBTQ1A5Vi9OM0hPc2R4SE1keEhNZFpQUzVnT1NzTjBrcDNvZWZ5aUhIeDM2cnlHY2R4bkZZd0FPRmdMbmVFeFBOTHhwUUdXY1FWU3dWWityRXFTd2dyUDlyc2FMajBmcEdrUWhncmtGK3ZjV1RIY1J6SGNSekhjVmFBQzFqT2FuRmh5bkdjdFJobjBDTStuY2JEYWZhVk5mZFJWaDZtOGR0YXVxcHFML08vVDA2TTMrYmQ1amlPNHppTzR6anR3N3dKSE1keG5HNmZwMFpHUnE2RThZZEwwcWhhUmdLYXJQSmU1Y05ZTHRlWGEyTUNRVUNROUFra3RRSjkrYURqT0k3ak9JN2p0RE13Y0J6SGNad3VSbVRtM2dRT2w2aFFLejFVK2wraWZBVjBBeW9UdWFvdU9TUUZuRlpCWC9VdWN4ekhjUnpIY1p6MjRnS1c0emlPMDYwUWdQWWVPYkpIeHBlUUxPNkN1aUlCYTNFRHdtVWZiMUxJWXQyUGlpUW9mT2JFQ1gwei9hdG5Yem1PNHppTzR6aE9tM0FCeTNFY3grbFdDRURiNC9oK0FKNmNKRit0TlB1cXZOcDYrZXN0bHZKYkxtUWxOYmtrQ0hnUE1Ia1J2bnpRY1J6SGNSekhjZHFLRjNGM0hNZHh1aFVCaUNnK2g4YWVSQjlhemZKQmxoeTJ5Yk9qMlRNU2trNEdoQzk1dHptTzR6aU80emhPKzNFQnkzRWN4K2xHREVBWXpPZnZBZUdaeVFKQXJTS2pxVlM4YXFSSXFmd2p5NDVSOHA3MEY1SVU5S0dac2ZFdlYzdUQ0emlPNHppTzR6aXJEeEFjeDNFY3A5c1FBRVlCTDZkeFVOSXFzNitLaDJ5R1dnWGVhMjFCU0pPRUVQUXgrTzZEanVNNGp1TTRqdE1SWE1CeUhNZHh1bkZ1MHNoSS9wRWtYNjIyU1VGYzRXZHFaVjRSQUFJSkNPR2JpQmMrVnVWTmp1TTRqdU00anVPMEtVaHdITWR4bkc2QkFIUWpic3d3d3F0cHRnZXIySG13K3VGWCtybmF1eFVxNE5QVDA5TVR4ZXYzYm5RY3gzRWN4M0djOXVJQ2x1TTRqdE5ORUlDK00zemJqU0NmM0o2bGcrMm1USit5OUJyL0IvVVVMc2R4SE1keEhNZHhWb1VMV0k3ak9FNDNvYXV2dnJxWEdmNEFhVHZUd3UxZEpnb3RKbGtGSnJzUDNyYUE4Q2w0NXBYak9JN2pPSTdqZEF3WHNCekhjWnh1bXBOMDV2ejVoeEY0c2hSV0oxNXBEZlFrRWdTK2NYSmk0cmJpV2IwYkhjZHhITWR4SEtjendZTGpPSTdqZEFNQ1FBbFBKMjBuaEM3TXZpcGVKZ0NJa3FTZ3IyT3BUcGNMV0k3ak9JN2pPSTdUQVZ6QWNoekhjYnBsUHRMZzRLRWNnS2UyUXdWaXg2UXZBbUFnU1VFemNZRi9WL0lIeDNFY3gzRWN4M0U2RkRBNGp1TTR6bm9qQUdBVW5rL3dFSkxDNkZieXB4VWNzTk42RWtIcEdEay9odFZjcU9NNGp1TTRqdU00RFhFQnkzRWN4MWx2Q0VERHc4UDd6ZkI4a29ZeU1haDFJWXBjaTJzV0JINTBabWJtQW56NW9PTTRqdU00anVOMEZCZXdITWR4blBXR0FFRDJQRWprVldueGRhYXZydXlJblpXU0JJQkJPbTJLUDFiNkhSekhjUnpIY1J6SDZRd3VZRG1PNHpqcnlXTG1rZ3pQajJqOVdDcUlqcFV2SCt3b0lnbEpuNVAwemJVNXBlTTRqdU00anVOc2JWekFjaHpIY2RhVGRQbGc3cUZHUEY3RjdLdXV2MmFCd245TlRrNWVUT2RTRjdBY3gzRWN4M0VjcDRPNGdPVTRqdU9zTzFIRTc2WFpRYVRMOHdDVVNFS3Rha01kMVpJRWdBbzZIOEF2ZU04NWp1TTRqdU00enRxUThTWndITWR4MWdrREVJYnkrWHNHOGVXc3F6d3Q2VnIxVVpPdlZhT3B4QytSUkZENG4wanhwMW84Z2VNNGp1TTRqdU00cXdnZUhNZHhIR2M5RUFCWXdDdk03R2lxVVhGUlIyTFZ0N2Q0ZUMzK3AreW4zdnZyUXdDRThKL3A4a0hmZmRCeEhNZHhITWR4MWdBWHNCekhjWnoxbW4rVXpSNjZrZVRMbFJhL1dsU3RhaVpETmFzVmFlay9MVmZVcXFOd2tRd2hURkh4KzlIZ1NoM0hjUnpIY1J6SGFXOEE0VGlPNHpoclRWSkx5dkR5WmJXdmFzTEdid0dyWjFxeDRxZmVWUW1va1kwbEFpRDFuNU9UazE5UFh3dmVsWTdqT0k3ak9JN1RlVnpBY2h6SGNkWmo3dEh3Y1A3QmdKNlVabCtWeUVxMUZLWktVYW5LdWtDcC9EQ3Mra3R0V0htcXNrcnlGb0l1aGNCLzlqblVjUnpIY1J6SGNkWVdMK0x1T0k3anJEV0pZQlhoVVdaMlVLcVdmVld2dEZUdDE0dC9JV3NkaXcyT1VmSDIwaXNqQVlUVFlWN2YyV1Q5VWFudUZWdEFWZjVXK2JvcVhuY2N4M0VjeDNHY2p1QUNsdU00anJPV0VJRDJqNDRPRTN3UlFLVnBVNnV1SmJWWVJhdnVrU28xR2RXK3l2TFBpQUFsM1NKZEdxLy80UTFCTVhzc29MNzQxTXJyQmhleUhNZHhITWR4bkE3aEFwYmpPSTZ6bGhDQSttQlBvL0dxdEhhNzFYbHJhd2V2S2w0Snk1T0ZTczlSNnpNbEgwMy9vYUF2ek03T25zZkczSDJ3Tkd0cXNYYlg4UER3Zm1VeWg2SVFJaUFhamhrVWthTVNyd1B3WFFvM1M0ck1yQ0JwbjhBSGlMckZoRnZKRUpQOHh2ajQrQ1NBaGZTUXBlS1k0emlPNHppTzQ3UUZGN0FjeDNHY3RZSUF3djc5VisweW0zc0pTWk1VVURmN3FsMDZVYU5Fb2hyblNWNFdBQk5DTVBBTGJiNnd0V3AzWWluYkN0bHM5bWdJZkF3alBwQzA2MEdNSWpJQTJCY2hBa215K09VbEVhUUV3VWdqSVJDUUlFUUZBZFBaL09IUGhxRDNNeXo4NzlUVTFIZEt6Z3Q0UnBiak9JN2pPSTdUQmx6QWNoekhjZFlLQWxCdi82V25DTHdlYXMvU1FTQlpQcmk2QTZuZVgwU1NnbTR6aHM4Mi9FQVh0amtBRFF3TTdFQW04OENNWlo0bDRva1c4UW95MGJZa1ZiWm55ZExPTks4dFZiVFN2eVVxRnBraG1RT1FpeUk4UjlaemJHUTAveThJaFhkTlRVMTlMVDJjd2JPeEhNZHhITWR4bkRZNHRvN2pPSTZ6RnZPTjh2bjh0b1dnZDBkUjVvbHA5bFdUTy9sVlcvYlhJSHVxVFVnSUpBMGhmSHh5NHZJbkFGOWN3TWJJd0RJQVllK1JJM3UyRlFwUG9mQXFBdmMzaTNZbHJhZTBYaFZMR25WUlUyU0R4a2VKNnFWVTQwb1N0d0FveEpNQ2Y1T2g4UGJKeWNtTDJKaExMaDNIY1J6SGNad3VjMjRkeDNFY3A5TVFBT2JpK0lHa1BUelZQdGpheDZ0dGxzZlN3M2NVUVY4R3ZsakFCaEt2aG9mejk5MitFUDlMQlA1TlpOSDMwbXlYb0NBZ0pKbFZ0UFM5Qk1TbC82cFI0d1BKS2tNQ01FaUdwTWg5a0JSb1VaYms3d24yRDhQRHcxY0JFUHlobWVNNGp1TTRqck5LQjlkeEhNZHhPbzBBTUtJOXpjeDJJVmxTdGhFRURaRXdoWGd1S0h3RTNTL0VNSjNidzhoSS9udVp3VDlhWkk5R3NnUXlKTHMrTG9wV1ZUNjZndE10SnNRdEZ1UXYxamFUWlRKUFo5VHoxeU1qSTFmQ1JTekhjUnpIY1J4bkZiaUE1VGlPNDZ6SlhMTXZteDBXK2JSMkp5OXhEU1FSZ1hlR0JVNTJlVHN2N2pBNGtqdjhIRWI0U3pPN1NrR2hXSWcremJKcWNJalMvN1p3WnFBb1lpMzJ1YVNDUmZaQVJKbGZPWHIwYU4vS0R1NDRqdU00anVNNFhzVGRjUnpIV1J1MGpkRlREVGlpUlRHbFRRZnU3R0krSllXZGRGdWhjR0c4K0ZvWHRxOEJDSU9EZ3dlaVRPL3JRZjBRWWZzVTBqcGp5OHBhb2VLclZDN05yUHlhOVRTbnloV1ZaWFcwSWdtQjRMTXZ6czE5SE1DZndBVXN4M0VjeDNFY1o0VU9yK000anVOMENnSUlCdzhlSGlEeC9hUkZuWk9jT3FlTENQanVxVk9uenFNN3hSY0RFQVlHamh5TU1uMXZ0MHptNXdqc0V5U3dLRjQxYWpPdHZsM0xEcVd5VjBsR29QMVVOcHM5MnZIT2NoekhjUnpIY1RZbExtQTV6WVlsVnVQSGd4REhjUnFOSDhqMDZVRUVyMHVTcjlxOTZLOWpDVkZDVXBnOGx1R0RXS3JiMVUwWldLbDROWEF3MDFONE95Tjd1aFJDOGRyTHIxUjF1b2kxdW01bFg3ZjhJeVlnR08xSVFQUjBlQzBzeDNFY3gzRWNaNFdPcitQVXN3OUxnNDFRNDZlNEZNaURFY2R4S2lHQWdLdXY3aVh4Q2hvejJIamlCU1dlaFhSemw0N1JxWGkxN1U4dGlwNEdLQkhaVkNKZTFSU3hoTWJpRkp0NHI2cWNwL281alhyUjZPam9NRFpPRVgvSGNSekhjUnluUy9BYVdFNjlpQ1VBd05WQTc1bVJrVHd5bWYyUTloTjJBNFZ2RlJpK3MzZm56bThjTzNac3ZrcWs0emlPUXdBWU9udjJRYkRvZTZTMU9tWGJUaVRTQ0lYYk5OODcwV1hqVzdyVDRNaVZZT2IvV1dTUFRYZitxLzVncWt3MlZMMC9vbTBhWTdIRENRQXlDUUR0ZW9Yd0pBQi9odTdMWm5NY3gzRWN4M0c2R0Jld25KclJYemFiUFdxV2VkWlo0SkZtdkNla2cwSG9zWWk5SVlRUUFYZWZPWGZoUDBaeWg3NFd6K3U5SjA2TTNWUWFXSGxUT3M2V1J3Qms1RE9NdGk5ZDJtYWRPeFU3ZGVRdm56aHh5eDNvbm95aHhicGlzdmgzbzhnZXE2QUF3c3Bxc2pkYmc3MWgrNjFTWjFvNmRDQnBJcDhPNEs4QUxNQkZMTWR4SE1keEhLZEpYTUJ5U2tsM3NUcVVqL3IwU3NCZUJQSUtTRkFJaXhGR0hJY2tVQUl2SS9SQ0FDK01ldkVESTZQNXYxVzg4UHZUMDlPbjRDTFdWcVV5amNQWjZ1TkpQbjh2Q2s5T2FsOFY3V09qckNKazhmL0hzYlJjT25UQlJSR0E5ZlRGYnpLTG5xU2dHRUJVOXE2V3hLdHFwMUNORDlmb3UwWjN1NVlPSnVDYUF3ZEdjeWRQVG53WExtQTVqdU00anVNNExRUVlqck1VYkE3bXJ1N3B3enNqaTk1RTZJbzR4QW9oaEdUYmV3cWtRQnBBQVpTQWtHeVJqaXRvZkRPaXpOOGVHQm01TGczeTNMNDJQNVVGL2xYeVUvd2I0YlZ1dGl4UndQTnAwVlZRcDFTclZtczZyZVQ0SWU2eWV5Nk1qT1NlQ2RvcnlwWU5xdDJucWRjbUt6dVpKSUFZN08wTmwvdmQ0VGlPNHppTzQ3UXFXamdPQVlUQlhPN3F6RGI3SzlJZUdCY0tJUVFGZ0FScElJc2lCRXMrUTRBRzBnUUdDY0hJSi9UUS9uVm9kUFJ4OENLOW05MW1xaFg0NTlEUTBPVjdjcm05Slg4clJycyszbXd0KzlEQmc0Y0hZSHpLa2cxVURpUGRmUGtVSUFzaHpNWFM1N3BwckI3STV3L0I4Q1lqK3hkZkwyM2F5cCttV2FFQ3B0YnNnbUF2eks3YUJEWmVLZUN6NHIrTmZsemNkeHpIY1J6SGFRRmZRdWlrZ1didVNJYjJWd2JlUHc1eEFLMVZzY0dTT0lheFdYUW9LUHo1ME5Eb0syZG1KajRDWHlLeUtXMEdnUEw1L0xaNTZXb0dYa2ZvM2lBR1FWNjNVNXJmT1pyN0NxQlBJSVNQVDAxTlRhRmMwSFI3MlB3MkVxTGU4QkNDMTBuaStsekNTa3l0NG5Oa1lJSG51dW5laTJMOWdFVjJiZFdpN2FyemxWWkxyUnk2SmtmNDRsNkZSa1p4akNzMm1EMVh0bVNvMGVKYWdlRlZQQmdxeTJSMUhNZHhITWR4VWx6QThpQVRBSHI2dHRuUDAreitjUnpIQUtOVkhETVNFSXlXVlJTL2ZXVGswTk9ucG81L0ZWNFRhN05nQU1LK2JIYWtEL2JJaFlBWEdQa2dHaStuTFRPYjYwTUlMMFZreDRkRzh4OUVRZStZbVJuL1Vtc2hyN05CeDVXd1owLytNalA4SDlLaXVydmpyZGt3VjAxalFQMi9rWUIwVnh5SHU3dmwzcnQ4Wk9SS2tpOFFvTEs3cU40Q3pZNHMzbHk1RmkwQUpPTU5Zc3RFRmJGcWFHaG9POUIvT1ZtNFV0Sk9aT3hlQkVhTXVsdmlRVXBmVmNUdlVuYUZUUE1tR1FJUXc2WWl5TXowYlVsM1hieDQ4ZXpKa3lmUDFXak00ajNqYzJmMytVMlZZbVBwRGVGem0rTTRqdU4wQ0JldzNCRUwyV3oySVNDZUhVSVF3SFlFbVNZZ1poVGxReHkvS1p2TnZuaHljdktTaXhhYncxNkdjcm1IbWZEN3BGMVBZeEpGUzFCcHBmL1VrU2NSa1hhRmdhOE5qSjg3TXByLzNhbUpzZDhDTU8vMnNLbXhIYnYwdzhib3NaSTZ1M3gwUmVKTVU2S1dtTHp4MWhEbWp0ZDYweG9pQUZGZkZMM015TU5KWGNJbXNxOVcxVTR0SEx1OVIreUdzYTRvWEFrQWM3bmNZQUc0MnNnREVLOFRkSDhoUGtSd21PQjJrdWxLKzNROXB3UkFnUVpqdXRvZWtSQWxTMmtWaENrQUYvcTI3NWdZemU4WWt4VEgwT2VNUEIzSDhVUmZGSDE5Ykd6c1VvWEIrbmpaSFRaUnJTK3FiWnZnb3Biak9JN2p0QmtYc0xZMmlTTVc5YnlReE80UVFtaVRnQVVBSmtFZ254SVg5SGdBLzRxbG1rbk94blRlTlp6TnY1TEFteTJLY3BLVUJOR0JhYS9ha3N1K3FFMmw3eEpJT3dEcS94c1p6VjgyTmJIajU0RmpMbUp0UGd4QUdCazVjaFJSZUUyYXdkVEcvQisxSUlHb2ppbTMrS1hNMUEzMzM1NWNiamZCcDZUMXVWcHZWelhUQk5VT3E0clBjY1Zmb3NSUzdnWGNtQUUrV2VpU2NXRFo4cjA5K2Z4bHUyUlBCdkg0UU4zZmhEeko3V0FpVW1teGFZcGozZUlxeVZSY3BFa1FpK1hmU3M1RHMxRklJSEFWQUpBRWdSK0VBRVk4VlpDK2tNMGQrbGdvNEwzVDA4ZS9WWHAvK1RDelB1TmFzYU1QSE1nUDl2VHIzbG9JQnhuWkNBM1hRUHFLWW54WEtueDZabWJtamlxRGtJdVFqdU00anRNR1hNRGE0b0xFNk9qb01LUUhxZjIxWkFrZ21FVzlpdkJ5QU84SHNPQ0N4Y1oxM29kR1J4OUw0dmZNYktla0dFQ0VZbTBqVmd0cXVSUVVFb0FVUUpER254d1pQYS9CaVJ0Ky9vdjRZc0Z0WWxNaEFHQVVua2R3cU9QWlZ5dS94T2JIdTZCanM3T3pGOWZaVGdsQXV3SWZDZVBScEZtWHZrQ0wzNmpKTnFxc0JWYmpmVnJabHdFd01qVDA3ZDZaR1JTNllDNHN6YmJDd01EQW9haXY3OGxHUG92UW8waURRQWhDSWxKSjVXTWNTNCt6ckNHMUpIY2x2NVlvWGNuL3ErSmF1Ti9NSGcvZzhkWVRmbUJrTlArUEVmVkg0K1BqTXk2RXJNLzhCNkJuWkNUM09FVjhMcVVIQ3N4YlQ2YWZpeWFnbDRFS2hyN1BqZVFPZlFuVU9jaStZQ3A4YVM0emQrNzIyMjZmclRpZTR6aU80emdyd0FXc3JRc0JLRWIwOElpNGJ4b1F0VHZRWlBKSW1nOGN6QTFlZVdMOHhERVhLemFrODY2REIzTkhTTDZWdEowU1lraFJXZnpXbERWd01RT1BocCtZR2IzakpremdMK0daZVp0cVROay9Pam9NNHdzQkdwTGFWeDByNEo3VVVsck5wNXQ2MTNRYWNLNlhuUmJGbFl3TUx6TnlSNmlvS2NZVk5keEsyNmRFUDFucHBvVVNLT1JvL1NNQXZyT09ZeHZTdHRYdzhQQitLYm9oNnVGRFJIdUpnVmNBaEJDUTFIQmJGQTJMSWxPemZaZCs1MlRxSThvMk5HQ0ZGbG5TUk9sZmFGY3l3ditOUS96NGtaSDhMMHhOalgyZzlIN3pZYWZqTmhKRzh2a0hJK2lOb2ozZXlQNzBnVXpSbE1Fa3hZNGtqZVNEQ1R3NHVVTkNJVEE2MlJPMjM1bk5IZnJuZU1IK1ltYm0xbkc0Q09rNGp1TTRxM2JnbksxSDZqYnIvcW4zRldwNTM2dmRtWjNFUVliTWRkN2tHOVpPbE5tR0g0bG85MDZDdmFKNHRhS3N2VFRvb3RINHEwTzUzQTBsNG9DenNTRUE5Sms5bnNBOU9wTjl0VFFDYVhGVkZqdGw5eVlwRm5oVE43VHJZRFo3UFlHSGxXWmZyU3B2VnF0c25wVi8zZ0NJdEVOaS9QRFM3N2lHN1ZrVUJjT2VYRzd2eUVqdXhjejBmTWd5MGIvUm9sOHcyaFZLUktTUUx0ZTA5THE1dWxaZitweFVtbmhWOVkyVzJtQ1FRakN6QnpMQ1A0eU1Ibm85bHNSVStyRFRVVHNKUTluOE15RDhMUzE2Qm9IK3BEOFVTSW9wUzdhUjJFenhCMkNHdENHalhVT3pYN0RlOEEvWlE0ZHV4UExDNzQ3ak9JN2p0T0JJT2x0WG1BQ0E0V28rVkRNdWVoUHZJWUJBWTBUZ1NtL3lEVGsrNlBMaC9QVUF2MCtrRmkySHEvSzdrK1dsdEtGSWZBTndkZTg2QkxGT0o0SzlvYUh0Smp5RHlVNm02dlFKeXl5bUEyZVRkRDRnL200M2pOVVJvNmVDZG5sU2RLN09IZGpLa3diVmJkMGFyNmtkYlMwYVFlUDlPOWQ3VmI5QVVmalJ3Vnp1eUhBdTk5cWQ0SWRnL0F1ajNVRERObWt4KzZsVW1HaGpaNlliWDdRMkRwdWtRT01lVXI4MWtzMzk1c0RBd0E0WFFUcHFLeG9lSFgydUdmK2N0Q3NreFV3MmRqQW0yY1NzWTJPMmFHdEpzY2lpNlBWUUJmM2J5R2orWjdMWmJMLzNuK000anVPc0xFQjF0cVp6aHR5ZTNGNFNSMHNmQTYvazJYTGp6N2gvdHBIcE5UMDZvbVhUbEFGcnJqdlY0QWVVRkdCODdranUzUE9RWkVPNG9XendNY1ZzMjFHUmp3ZzExa1cxOTR3VmdrcDd6NlowUjdsUGFuNytwaEtqWHBkQWV2LysvYnNBUExwcW8xYUtWV3B4Z0ZiVnJ0U3lEMG50M1VzdE9jUDFlL2NlMmJNR2dYeFJ1QW9EQXdNSFIwYnp2OWdqZnR4Z2YyQzBCNURNSkJremk5ZkJPZzIwYnJkWHVqRktocEg5V05TNzdYY09IRGl3MDBXUXp0eHpJeVA1SjhLaVB5SzVEMUlnRUFGZ2l3OXZpcmFVQ0ZwQ0lHMFBJL3RWTWZwcGRFQWdkUnpIY1p6TmpndFlXNWpDRGpzb2NyVE1SYTduZ2pXUmJ0VkttT1IwdlJNZkJnY0hEOUQ0WEtSUGtodjNkTE1ScmdnSUpIc0orNytEZzdtcjRTTFdSaVl0M3E1bkVGd0xRYUxjM05nSit4ZEMwSC9QenM2ZXgvcld2MExQdHAyUEJYaS9zdUx0OWNaazFSbkg2NzAvS1ZDT1pFTThKYzgyMUpGdnpxU011WTdzMkRFLzJ0d1VzdkwyQXhDR2g0ZjNEMmR6cjgzMGJ2c0FqVzh5c3p3V2x3bEN6WWtKNnprOGxXenZLZ1F6L2tEdnR1Mi9CdHpRMHdVWHQ1bDhZZzBPRGg1UXBGOHljQitTRFV1c1RmdmNKQVhjQlpGODQvQm8vdFUrN3ptTzR6aE82NU9wc3pYRkNUQVRyaVV3cUdRcjd5VmJJTXQveXVyV2x2NDA3OTZyV1BUYjJWQTJFa1hSTUlERFlHb0laQU1sb2M2ZmxnZkR4V1V4VjFvUGZ5TmRVdUdCMkFZTitnNGVQRGdnNGZrc0tkYS9KbGJhTG10UjZiL0lFTFJnd2plN29vRWozWnZHYlN3R3U3V1dUcktKVzdKMm0ybHB2OUQ0LzFNYy9qSzkzVHZZbDl3QlpQWjMwaTRCMk9CSS9vbUlNdjlza2YwQnplNlhMdXdxQ2dlMnJFMnJOdTU2VVRKd0t1MmxwTHE4U0x4bU9Idkg2K0FQaU5yWjJMU2VubWNUdkNIWmJTQVZyNWJkT0dyaFo3bGQwcXlQeEk4ZEdCMjlBcDVGNTdSbkpxejhNYXkrakszamRNSmVyWTAvYnM5Yk5QQnd0cWFUQm9nUElGaStwWE5MNmZGczV2MEVCSU9kOFdiZmNCTU15T2plSlBkTFFiVkN2SWJDVmYyWWpKSmt4c2NGUnM5elIzN2owdFBYL3dKU1YwbWhBOFhiV3pHdVZWaDgyU0Y1RHJBNzF2a2VEQUFpaU5leTdNNnNyWEdzVUlNcDNuZHhpTU92VFk2UC96d01mNk9BUytqTWJuZkYrb2c3WWVIYURodzdBaEJHOTQ4T2orUU8vVUZrZkhkazBmZENFTXFGcTRvMjdjYWhwK3JHaCttL21LSGg1d2F6aTRYQjNhZGI1UWh3OU9qUlhvRFBOUnJCV3ZPUlZqQmVsZnZla29LWkhlMkZ2Y2FiM21saElLZ1d2TmRTVGtPZHY5VVNBbHpnY2pxaE5aVFhCa3czVVduVGp5cnVEYmZmTFVER20yQnJPbW5BRFQzZ3lTdVhWMEp1NUhoVlM3c2lLdXRvcVNRb0N0S2RnZnB2Yi9vTmF6Sk1uMFEzRngyclJYc1VBc2tlZzM1MlpPVEkvMHhOM2ZvZCtCYnhHOGt4Q1FPam85Y0krUEVrKzRxZDc3ZXFZU1diL0dEak41RWtwSW03enhhK3M4S0l0WDFrczcwa0JwZDlQUzBmY0d1K3AvRXdUZ2doaFBDVzZjbnhOd05BUEcvZnRWNU5HdTFvU1ZIejluZWxPTkJ1ZXdRUUQ0MGVma1JnK0JVemZvK1N5dXdCVEozYnFsbHJYS1ZJc1lZemVISjVGQkJJMjJ1TWYrSEFnUU5QUFhueTVEa2ZPMWZuRzUwL1AvY0E2N0Y3QzdYcStHa1ZnMWJsSVFrU1R4c2NQUFFISjA0Y0h5dXhYOGVwRkpKQ0hRUHNHUmdZNkYzOHBhY25TTnBQY2x1aFVEaEQ4bndJZ1FBUVF1Q2VQWHNXYnJubGxya214dEo2czRqak5HTzNxaHpUOXUrL2F0ZTJYWE5YeDNFY2t4UmxSNDI0Q2lFc3R6R3IrVXlHa3VaajhkTno1KzBycDAvZmVxYkNScTNLdmVOc0lsekEycUljUEhqblBzQ3VyTzdycXNrQWtHVWFSeFVSS3drRVEvandpWUhKcjJEU0hlc05oQkpuaDk4MDB4MGtMMWNpWW5IMStzRHlLYXE0bERDbzhQTzQrdW9md0xGakN4NkliUXc3T1hyMGFOK0Z1WVhYbXpHTE5jaWdrOEpwQUwyRTdWZ3l1bVpQeWZxR1dyUTRDb0l1OWZYTnphOTNRRDFBSG9Gd2hTb0w0N1A2VU56VTF5My9QWkMwRU1JWExsMDQ5eFlBQlFCMjRzVHhpZUZzN3Q4UjRVYzdKc0lrQWZ3RFUxK2tzSXA3ZnJIV0ZZNGU3UnVlbTN1NlViOU5zK3ppVWtHMm1wM1VqY05QK1RVUklDU1JmRVNtdC8rVkFIN2Z4ODFWdG5BUEgyeG1CMUs3c1laanhvcW0xbUpSZmdtMGUwUzk4ZU1CL0ttM3ZnZitKVWF5TEtkMllHRGdZQ2F6ZlZCUmZBRGlLS2dzWVB1TXVBZWt5NU9IUnlMQUFHQ3ZpTDRNN1c0QUY2T2xBMGNYNStkUGorUnlud2NaVXl6RXd0Y1lhK3g4RDQ1YkZPbjByYmZlWFNYb3Q0cHJjNXpLK2JlWU5WNW1IOFBEaDY2S0l1Umx1aGJDQWVIU1F4aDRYWWEySU1CSVhFYlNFRVZWZllUYUp4VVl3cGxvZDdpbGYvZmhMNW53T1FSOSs1S0Y3OXd4UGo1VDVkNXkyOTFFdUlDMU5RY2E5Zll1NUluTThMS2dxS1Y3dStLSllvV0l0UlJ3NHB2NEloYmdUeGMzSGxHNEx4RHRFYVMwRGxiTktIaVYwd0lseUl3dkdEeDc5bU1uZ0wvRytoWE9kcHJEQUlRTEYrWWZ6b3k5R05WMnJtc2ZTZFFubmFYNEdWR1BiS3plckVhY0lBUjg1ZVRKaytmWFd4QXdjaHVCWFcxeEw2dTNiRnJwU2grNTg4NDc3eTRKVkFMSk85cis3YmxzMERpOXlubGhjVjRaeXVYdUY4MHQvSXdZUFExRTc1SUlzWUoyNmZaWWdTcjJuUWhHSkg3aDRIRCs4N2RQajMzYTU5b1ZEd2dSd1hzdldYeTd4YXZsZHg5SlNyaHZwMC9rZEszZExZbnZKZjAvT0RoNHdLenZLS053SlJsZEJTSW40VHBRbHhOMkdjbitNcGVNMVFaMVlGRVUwSktibnZLNDRySmtDNkhBRE8vY0NZd2pEdGllTy9RZElId21TRitLNXpMZnVmMzIyMllyeHBOUzM4eHQxdTIzTkR2UWhvY1BYYWtvemtmaWZZTHhxQkdQa3pCTVdsKzZRd3lLU2QxTWF6dW1jM1dMZmhvQTJoNGpid0J3ZzZBZlFJUUxmYkJqSTdsRG41VDBYY1Q4K1BUMDhXK1ZIS2hvdTI2M0d4d1hzTGF1TW5FRXhMNTJ4cGFMczJNaVlvbUFTV0ZjaGc5NGUyKzRTU2tBNkRYWTk5R3NSeUdFdXRsWGF0TTVhVDJSOE1aOTJlekg3cHljbklKbkUzUXpPbnIwYU4vRitjSUx6ZGlmT0NDeVRxMDBTNWYxL2Jlb2I1dlpFNlhWWm52VnFvUmVYRmpOVzdGVUsyVDliRkRhTDdPbzdhMmFTb0lnR0N1Y0Z2V2hFb2MwMlhrTmVrRGRjTC9WNXEyeVNpOEVmRDRkYjFZaXVoaUFjQ0NmSCt3TitGa0N6MlVVRGFUYko5YXVDYldpNWFkZE9Fd25rUUFCQkl1NE4wUDkrTkRRMEV0blptWXUrdGpaK3Z3em5NOC9FT0RUa2dYem5iU0o4cUdMWUJaQUg0QTU3N2N0RS9RRHBhTFYxVmYzSGpoN2RyUTM0Q21JZUUrQk54aHdMeURhU1Z2YVEwZkZ6UnhRSytndm56YVgyWktXLzBJeUEvQ2dFUWZUSzd3L3dCY2doTE8yTFJ3Znp1VytUT0FqREptdlRrN2UrZzFVRjdQY1pyY09WbUcvek9WeWc3SHNzVFE5VmRJRENSdGtaTDNSNHNhNXlaYS9XTnlOWkZrMnVaVU5pMmttZkJQanNMUzRRem9JY0x1Ujl3ZHhmMGlBYVh3MGYvaWRCY1gvT24vKy9OZE9uVHAxMXUxMmMrQUMxaFlNT3ROcDdYb2pJYUgrRStvVk9tUllmTEtvMjhQYzNNMXRrem1jdFhLd2NHRGswTDFFM0FDcHloNWRxdUVRclc1U1RKY1NYdDBYb3RjRGVLTjNSVmM3TU9IYzNOeTFrVVhQWEwyWTFOZ21KY1dVUGlyaXh1SXp2QTZjVXlBWUZFNnJFRDdWRFEwZE1icU9aSC9iNjFCeGFaeEdDSitibVpqNERLclVxMWl4dmxONnRlMjNqTVVBY0NCNzVONDlDbTloeENkSmdCUUNXaTVFM0d6VGR1RWVFMHoxVmtra25obk1uZ1hnYitFWnJDMzdSUkNmWm1aN2x6TDNWRnQ4YlM4SDkrVHovV2ZHeHVhOEt6YTFYMVcyeE9yQWdRTTcrL3AyM0kvVS9YWHV3cU5sMGIxb09Gek1yQ3JHNVFvS0phVWxTOFZWYTJLWVpQVnhTMlVhQUNCSVpmVXJTZG91RXRjQ3VGYlNTeFdGbVpIY29VOEE0VE1Md1B0dUg5ODVDUnlici9oK0xncHNjcjl2MFVjWUd0cWVqYmJkVzlSTEF2UllHbzZTRmhYekdCSy9VT215MXFLTnFQYis5U3l4eTBYcFZZMDJDMXRXYzZ0VTBDS1pJL2dURWV3MS9kdDNmblo0KzY0L1JUei9zZW5wNlZNVjM4blpZTGlBdFFVZHRhdXZ2cnIzN0xrTDk5Q3lCMzF0bW5OS2x4SktYNStkbloyRDd3cXgwWng1WlV6UE1yUEJOUkFuVU82WkVVYTk0c0J3L3U5UFRvOTl4U2VZN2czNE1veGVTTnJlVkRTd0RnWDVTWTBtaFcrSkdnT2lCM1l3cEV3RkhZMmRPODlqN1IwWXU3Y2ZDWndDc0ZEU3JqcHdJSCtRNEtHNmJxTWF4VTUxejJzaDZCSk0zMXFoRTQyaDBVT1BNNFkvcFBFS1NXbldHSzJ6WGRhVkc2VVNaRENhS1lRWDVKRi8xeGpHT3JXRDVLWU15a1pIUjRjRlBCMWxxaFhXeEk1RTNyMTlmbTdldDJyZXRQWUZMQWxYdlVORHVYdGJoamVDZUlMSVI1RHNaN3FjU2lubExwR3N3Mk5RclVjTlN2MC9BREFDUXpSN2djUVg5Q2o4MkVqMi9GZGd1WGN4aFArY1RETG1mWm5XNXFSc3FlRFFVUDZlelBBNm1sNEU2VVl6N2s2Zm9hUlpnV1Q1NTZwTVEyVW1ySXJUVkJHeG1yZjNNa0ZMU3Y1SGNDY2llN1JKanhKN3Y1RE41WDV2Y256OEg1RmttL3M4dVFGeEFXdnJEVUk2Zi83OFBwRlhFcWdTbjYxbUo2YkZRVVpJQXM2QWdIOUJXaFRZUllpTll5TkRRME9YRy9Fa0xHYTYxSGdFMHY0aG4wcUtFbC9lRTRXZjJyZnY2R3Z1dlBPV3N6N0JkRi9BTnpKeStENmluZzlWMjYyci9Xa0xFdjZOc2gwV1lWQlNldzllV2pFMGNjTCsvY3lac1RQcmFIZkY4NXFBZTliUE9HdWxHVlFqdU9JWEtvSXQ5UFJ3ajRoQmxnWlNsWi9uaXRzWmFjbTBpeUFuVzdVOTVQUGJzdUxyQlB3TWpaY2xtY1NNVnFBZHJNWld1bTdzRmdCR2R2MzgwUHdoek9CbUh6ZWJKNDU1UC9iZ1VMb2tzMVB6VzYzQjdjTE16STdZZTJIVHpaT0xHYTE3Y3JtOTJ3TnZOTU1yQ1Q0VXh2MWNDdnBWVWtEV1VKNlNVc012YjJXT1paWEJyNm1ob1R5N0pkRW5CSUptVVI2R3ZFTDhkRm4wOVd6dTBQc1Y0MStucHZaL0NmamlRa1ViK0JpMGNlT0J4YXpCZzduY2tWN1lENHQ0UG9GQk1rcTJ1MUV4dGlOUmxoV29KcWRSMW5CLzBFb21WdDN2a0tZWUNvQ1oyUU5Dd0R0R2N2bW5CK2d0TStQalg4UWFGRHgwMm9zTFdGdFFuTGdVV3k0VGFhZzg4R1NET0tvMXg1NGtGSEJ6b2NCdmVyTnZQQnRoSnZNb2t0ZTNYeWhvNmdJb0laalpDL3I2NXo4RDRHM3c1VERkUk9KT1JIcEZSQnRxKzlLMjVlZXlvREJQNmxNZ241V2FhSnVXUGkrWE5ZSVV4OEwvWXYzclh5bVpvNVZ0TFRCWjBWMTNZZGtyWkIrZ1NNdU92NXBOQXBlT2xlUWJoTk1MSVp4dDRRQmhaT1R3ZlNpOUdlU3owc2NsSzdPRnBwcXIxaTY5WFNwaVNTSjRnSm5NZlFEYzdFTlZVM1lWOXUzYnQ5dDY3RWRKNjI5WStMOER2VWJnQkhDTDE3L2FISlFKVnlNamg2NWpGQjRuMm5OcHVBL05lcFhlcTBJb1ZaUFltdGxXMWxCbkUrT1RHcnhIOVdNQktxbWFXRnlxbmF4UU5DT3ZCWEJ0aU1LclIzSjMvSGZRNkovUG1IMElZMk9YU3RyRUgyQnZQRHNPQUxSMzc1RTkyM2VGNXhMNlNScXZaRm0yRlZoN3ZHeDJPS3RtZHhVaVZudkdlcWEzWGlEWlM5cHpvUEN3d2RIUm56a3hNZUViUjIxQUEzVzJtTU1XTWR6UHdIMUxvd2FidU85YkNsQ1NKeTdrSjJkbng0NmpmSmNLWndPSUV3WjdETWtvN1RkV0hkTlhPc3dUeVpNVVZ2dDNxVFVSa2VHMUl5TWpWNWFJQ1U0WE9PZERvNk9QTStnVlMwc2RHam5NSzQvSVNZQkJINDVET0FuZ1VTME1TaXNKSkVGaEdvVzVzVzVvN0tHaG9UMUl4dXFLT0ljMUhMNm1mYmhGcjFGQjh6Q2RYSGFnU05lUnZCeGxTNGhYR0c4dHR3bWw4ZEJ0SjgybUdoakxZbVEyTkhyb2Njam9YNWpVZVZMdGNZRXRYRXE3YkhYZGh1c3lqNSswakRGNm9vc2hUYzlHMkw1OTUxTUIzSmlPWjFacnl1dk0rVVVKMytyZ3VPYXMzZHk0bUsweVBKeS9mbVEwL3paRStDQXQrZzJqM1I5a3NqUHE0a01mV3UyMGtwWDY1V3poTTlYR2NUWC9mWlg0QTVKQ2tBTEJ2YVE5bGVBN2h3UGVOVFI2Nk9uQTFiMUxmcVRiOTBZWkV3R0VBd2NPN014bTg4L1lzVHU4ejRnL29kbVZhY0pnNmR6TDFjZVB6ZHFkMm5tdlNsSnN0T0dJOXZzam82TXZMYkZUWjRNTXVNN1dFaWRFNEpxaUR0Mmk2dEJFRUxYMFpnRzN1Vk8yOGNTSjRlSGhxMEE4ZmltbWIxUEd3YUs1bE1aVlhQNkdSTlF5U0tKRjkyQVV2ZEFEc2E1eGJKVE5adnVOOW45bzBSNDBOSTdWMkUyYS9TZEIxRjlHd1RJVURrbWRNZ1VWVGZCL1Q1dzQ4ZTExRmdBSUFHWjlJd0NPZG1iSlpCSS9DVGdkU3pjdmZ3ZDdXWFhuVWJWNHc3UDJadzFBVDQ4YWpVa0FNRHlhLzdFb3dqOFo3V2pKazErdVVWZDB5cEZlN2YxUi9ZcUpody9rODNtNDhOOXdQQnNhR3RvTzRsWHBBeHV0WWY4R0VwUTBHWHluNW8xdVI2WEMxWDFIUnZOdnN3ei93NkxvUjhpa2ptZzZadFVJK2xuRkYycmZlTEFHMzkrNEpBb0UwbnJON01tazNqazhldmJQaHZQNTYxSCt3TUZqZ3U2MDQ4VXhjSFIwOUtuYnR1OThQeVArbmRFZWpuUmxCRmFjTWRpdXViZTkzemZaT01wMmsvYjd3Nk9IWHVaejVzWUtXSjJ0NWF4ZER1RDY5ZzRPWlhHZVNGQWh2aDBGZmRTYmZRTWFTdFQ3Qk5KeUNtb3lRNi9aZWFpYWsxWmFIa0hsZWdqVFRIWFlhNGFHY2c5TEhVUWZzOVo1REpIWlEwQStycm1sZzZ0eXFnTkJLb1RQWGpyZi8yRkV1aExKOWt5ZDJYMFFaS0lUNlNQWVdvVTlLNzlqQUFBcDVHcDNZdW05MnN5RGpjb3lLT2w3aEsvamxsdm1hN1MxQVFnSER4NGV5T2J5ZjJUa3J4TzhyUGtsWGszcXFrMWxZYkhMdTJ5cHpWS3g4M0JHZG44ZnNwb2F6MjRVK2VDRzQ1azZjbjRvNk85bnhzWnVobWVxYjBUN1dhenhWQlN1bU9FSExJcCtCR2FEeVZpMWFGZE5acXV3RStOQ2U0NmpobGRQSm1LV0pBVURlODJpbDFENDRNaG8vamV6MmV3SWxvclp1eS9YWFZxQUFNUzVYRzVvSkhmb3QyVFIzNFA4SG9IYlExTDRiSlY5eGhYYVhhVlBvZlovZHlHQXRwdlU3dzBQNXg3dHNjYkdNVnBuNjB5MklIdnVDK0lCYVJKRFI1YmhBQVRCajAxUGozMnRZNjZmMHduN0NObHN0aC9VczlKWDZsZGdaQ3VXVjIyUzBsSmNXL2F6K0k4MEM4VUdyWWR2UFpEUEQ2S3JDOUJzL21BUFFBL0FseHJaMzN4ZjFLcmhxbnAvRXdRR2hWakViNTQ2OWEyekZCL0JKUUdyTTk5Um1sZThtRG02L2pLRnhmY2xzYXRUaDA4VGNXK2RPM3QyYXRrTlNsNWJ1NGh3bzc2dDE3OWxOYkpQVkxHallyQVhob2Z6RCtuWnBuZlJvbGVEN0VsM3hHcS8zN0lpRVdzOVM2UFZKWkNNaUhCL24zL3JqMmY3OSsvZmxiSG9wNHhXUHA2MWZ3K0thcDFJU1hjZzhPODdmamFuVXdGL0dCZzRjakNieS8rNlpmaEJpNklmb1hHd1pKbmdCc2syYXZzbHNwaVJCU0VRUEdobVA2RW84OEhoZlA3bFNPb3ZCM2cyVmpmWWNiSFdGVWR5dVpmRTRMK1oyWThEM0ZrL2E3QWRkc1p1YW9kZ1puc3NZNzg1TUpBN0RGOU91Q0dNMTlsS1JMeVNaRStpRXFqTlMxSlVHaHA5RjBrV2d4ZkYyemdPUFVJSTl5VndqVkM2WkdsbFQrT1dqbHE2NDAyVHBsQnFTbEl3c3dmMmlzOTFXMXBmUGVWZ05udFBBSTlkbVJQY3JOaVJwRUdseTJzK01uL3g0b2YyN3QyN1IrUjFuZnh1SkNIb00rY2lmTGxyQW4vWkRwS0dUZ3EzdE50UG56NTlwdlE3NzkxN1pBK0FBOHY3dDlHdVdHcjJQbWNhNEYyc1lVUmhPSmQ3RERQNGF6TjdlSWtqM2I0MllKTURVTTAyV0h4ZnNXQnoxUjlDWlQvcEJnUXRESVF0dGV2U2RaSVB5Q08vRFM3NjEzUll0dTNZOVFyUUhyR1VmYVh5Ymxabnh4c0VmV0pxei9hYjRQWEtOcExkRUVEWXYzLy9ydUhSL010N2VzTjdhUFpHMEFZUzRXb2pMSk5iWVRZTVYzU2k0dEpDR1hodkE5OCtuTXYvK2ZEd29hdXdsSTNsNDlNNjJUR0FNREl5Y21VMmQraXRoTDNETEhwQSs0V3JXa2Ewa3E3dm1LbVloRURqOVQzYitBc0hEaHpZMmVrVE9xdnNNRytDTFROWUJXU3ovUVo4MzFJV1E3dnZ5eVRGVkFwQkZyN296YjZ4eEFrQVFDYnpjcHJ0UjluVEI2N2M2bW81UTgzRVlxbU9VVHdZaWRlT2pCenhndTdyU0s5RnJ6V3pvZHJMdUpwMWpOWG9EUXpTR1JYMDFwTW5UNTdic2VPeWU1QzRvcmxhVUNzSitCYy8rcGt6NCtPbnV5V2dESVh3dVpEczB0ZXg2eEcxTzV2TjlwZjZCTnQyTHR3SDBIWFYyNXMxeEp5bUI0Vmk5c2w1eEF1ZnEzSmdEWStPdnR6QXY2TkZSMHRzamFzY2hGWXdKTllWc2xMaFNpUnBkWC9NRm4rTVp1bFMyTlhjSS9YZXkzVHd2bXBobUhsM3dxdjZ2ZUZnTG5jRTBPdEthbCt4ckgrcnJIaGQvc0tLbG53bGZsSUk1NGp3cHpoMmJCNHVZRzBVdXhFQWpZd2NlbEQvanAxL1oyWi93Y2dlbW1TR3JrZkdGZGZnTTJyWGhUSWR5ek9SMlVzdG8vY09EMmRmQWR6UTR6N2QrdGh4TnB0OXdFZ3U5MXZJOUh5SVptOEFtVm5kZkx1VzgzTm4ya2JKY3NLWDl2WDNQdzh1cm5ZMUdXK0NMUUVCYUdDQlI3U045OEppVU5MMlBIbVJZQkJ1SzF6U1Y3M1pONVpEUHpBd2VvMkJUMVN6RGd2WnhENEFEV3BBczVrSlRTWkJKTytCS0x3UXdDOTZsNjI5ZlF3UDV4OGk4T2xzcW82SFZqbU8wQ0Q4dzh6TXhNY0JJRVRoV29QdHErOVExTXZ1YXBodVk4bXFEM3daYTVGLzBTUlJsSmxQTTNZNk1pOUlBb0Y3RnN3T0F6aFdiQ2lEUGRwb3U5U1VBOGVWQlQrRVlyTkNpWTBWQUdCNGRQVGxwUDBoYVAxb3V0N1ZhbWJHUm1heWJNQmFMRVpNR2hWQ0lTQjhHOEJGU0xjQ0drK09aY01FTGhOd2N6STFJaGFVQlhtRmdHR0N3KzBORnNzM2k1VFFHMXVoeDRldjZtTmFyL2pUTkY1UlhZelg4ZzFIVk8zdlFNdjFXWks1akVINDcyMTlmZi9WVHBYQTZXaVVIUVlHamh6czZZdC9MQ242SDEydXBEcjcxcW1YczNvck5RZ1NKSnJkd3pKNCswajI1QVBqd3VDYlRwdzRjUkpMeTltY0R0cnhnUU5YNyt6ck8vZERNUHN4TXhzRWtsMEdTdWJpTlRRb2RtRkRFWUgyb3dkenVmKzhmWHo4VnJmTDdzUUZySzNVMlJuTFV6cXdmTmZlTmc4aXdtZG5aOGVQRndkTGIvbU40WlprdHRuelNSdE5keHF4OHNnT2FIM1RrV0l3MVd3cWV2MXRvUVZJeEtzUFpvKzgrL2JKVzcvdWs4cWEya2NHR2J6R2l2VTlGdTJEVFNnRHJaNkxsSFErRnQrTnRKaTZpUStna1NXN3o3WG9VVGNlNHlUY1JmRzJydk9xMkZrYkp6QVFBZGNnRWJCaTRPcGU4TUtEMGk1Y1pWdFVWNFJJVWlITWFON3V3Sko0RlkyTTVsOUg0aGV3VkpQSTJ2SU5HNVR6VzJaS3FtVkVFcEtzS2lxRUMwSGhmYWJ3ZHhTK1FQTGkrUGo0MmZTN0FJQmxzOW0reWNuSjBtV1NQZnYySGUzZnRxUHdUSnIrREdDbXBNaHo0OEN4dFo0SUZrVUZINzRxQW1nZ0RPY09Qd2JTYzZTS3VsZkw5b2lvc3luaDR0dEtPNmVCcmFYVjVTU0ZFTUs3YjdubGxqbWZ4N3JmWGdCZ2FIVDBjWkdGTjVQMlVBa29tWXMyc1hpbHhtUGx5Z2JrWkM0bkk0djRHckF2bTgxbWYzUnljdklXZURaaVIrMTRKSmQ3RkhuaHg0RG95U0N4dGp2NmJveTJraFNNZGsydjlJTUFmdHJ0c1h1TjJ0a2FBYWdwd3ZmUUxGUHVvYlYxM0dLNk9PUUw4SlRnalFJQjZNQ0JBenNKUGpKZEZsUEhqQ29kR2paWTdOS01lTldVRFJLQ2pEYVVZZUduODNtdjdiS0djNFNHaG5JUEl2aTA1bllleElxaTdmUXpJa21JLzdHakwvb3ZBRGh3NE1BT0FQZHRhSXV0T3VQbGdnb0FmRHVLd3JmYjRxSzNLWEk0ZHk2TUU3ZzV2VDUxNE40UHBFVVNGd3QrSDh5ZHk1SzRDcDNiNktQNEJXZk01bThIRVBMNS9PQkkvdENma0h3TGFidmJmMjl6Tlc5SmFsbVJKR0VLOFprNGp0OFZLMzdHMVBpaEYwMU1UTHgzWW1KaWVqeFplbHBBU1dIY1ZMeXlrcC9DblhmZWNuZGhqaCtVOEoya1g2bTZ3KzJLeENzQndDNFZjTmlIc1BLNWJtRGd5RUVxL0NLTmx5MjNNNkhsZW8zTE9xekdmSlljTHBDa3BLOGdMTHluUzhZYXAyN1FmMFBQeU9qaFg0NHMrdWRVdk9wZ2ZhQnV1MTA2T2JzVmEyTWhtTmxUUlB2cm9hRWpPZmZyT21QSEJ3NGMyRG1hUC93enBQMGJhVTlHbW5hMVBuYmN6ZDJya24vd2FTTWpJMW0zeWU0MWJHZExPRzBEL1FRZXRmVElzTjJDZTFJVVhnb0ZTTi8yWnQ5WVhrcmY5dTBQQjNDOUpDWjFwOVNFbzk2RVBLQjY4MWJMTmtoSkl2bnN1UUllNVpQSzJvd2RRME5EMjVuaEQxa1M4TFhvZlRTcUUxTldTMFlncUJCdVY2emZUck1UTUQvZjN5T0ZiZlZzYndYT1NaVy82T2J4OGZHNzBFVlBnTStjR1RzdjZWekhIUUhqL1pBVS9FYWZSRWlaenQ5Wit1N016TXlGb2RIUmg4Zml1NDE4RmNnZWRleStialdETkFsVWkzV3NwREFoNlMwSThlT25KM2E4YUdaaTRpUEFKd3NsQVVCWllkd3F2eGV6Yk96MjIyKzdIZExIbTc1MVdoT3ZrclhkeFBiSVFzNkhzZkx4TEpNcFBJUEdoMm9wZUt0OFMvbFEwOHBVV0xhTGJwMWpTQitZbVptNUE1NXQwcTEyVXR5VitXZzJkOGZiYWZoNWdMdlh0ajVReHdQMGxiMVBiVzdyWkxPV1FMT0hXRS84WjZPam84UHUyN1UxeGcvRHc4UDcrN1p2LzNNUXYxcXl1K0FHeTdwYTAySFNKSUhHZXlMcWVWSHJEb1N6VnNidGJBR0JJcFBwUHdweXBDUlB2dTBEU3JLTEYyWVl3cmU4MlRmVXJHQUtlRFpwTzlKNk8yeitvMXEwcHJLU0lOWDhjcTR3bUt5SUxzeWl2aWpDanc0UEQrOTNSNmZ6QVI4eW1mc1orVXhWTFk2bUZnOVhOeW9YaytyV0g1K2FPdjc1NHZ5MGMyZDhENUtqa2dDbFdaN3RkWVFTaXlWdTZrSjdFb0M3T3RuSGFlbUxCNCtNNEZFQUdJTGxCRndtZGN4cFRBSVc0TGFSMFVPdmptanZvdGxEU2pJYjJGbVRaak50SG1pMEpMZ0tudzBoL095Q3doTW54OGQrZW1wcTZyUEFzZm1TUURiVWtDcXFTaGVMdGs0ZXIzMFBzWVdmcXJhZFpoWGEwZlh3L3JzMWtOczdQRHlLaUsrcldQdFhNZ3FvUVRld2RyT3JxWHZaUWdqamNZRi9CMSsyMDYxMklnQWF5dWVmQ2N2OE95MTZXVWtQYjlLWXFkNlR4bzZiYUxJTU04bkVlbXdBZjh6dmk3YTFheGpLNVc1Z3B1ZnZTWHR1NnNOMW1SMXJsWC92U01pY25wZ2s4SVNCZ1lFZEtOdll5dW1Xd2RyWkVqMnRKeGs1TExXLzRGWEpWdUtnTURFM04zZkNuZWFONDZ3TkR3OWZTZkx4cVQ2eE10dG9KRTZ4cFFDeXZpVkxvdGxqbU9sOU5sekE2akEzWnN6c3VUUnVUL3VQSFhJd2tycElDbmZFQmIwdGNSWnVUT2VuVEwvRUhXVzExTlJJb0doa1o2VnA0bUFJNFM3RzhjZTdMS0l3QUFWQ24rOWdKRkZjUnJnVEVaNExRREI4cjFtMHF6VXh1OFZ6S2dqZ3EybjRRMW8wVUZKWGJZM3VaZFpyZDVLMElCMkxGZDRZQ2d0UG5wb1krN1haaVlsdllxbm1UYWx3dFlyeFY2MWNXd09iTC9zV3liNW9VS21BdFpYSFNRR0krak05cnpYYU5haWFmVlhackxYRXdpYXFMMVJmOXBtSWl0TEhUNXdZdXdtclR5ZDEydThQaFlHQmdSMGpvL2xmTXVHdmFIYlB6VlVqYUpYWnk1Mnkxc1Z5cVJMSVZ3eGtzdytBbHlGWlRXc1NnQVpIUmw5cXRIODJpeDZYUGlEcUVqdHVOUXV3N1J1T05kV09Vb0NBKzdLbjUrcjF1QUNuOFlEdGJIN0hqUVFPVjMvRTJNNGdnQkR3cFpNblQ1NkRwOFp2bU1tT1VlOFRRSTZ1cG1BekcvNmhyZk9tQ0lMQTg3UFo3RDRQempybnpBK05UanlZd3N1V05xaFJCeHpqMGdGRTc1NmVIdnRjMHArZlRBNGE2WEpTVVgyN3FtVmZEVVdzTkZORjN6NGJSZDFTLzZyeUtyOFVGQzUyY0V5bEJCQjgxTWpJb2V0QVh0dUJ2cTJja2lMU3NnQ3RmQ25YdXQ3R0lWVXRZc1hoYitJNVBHbG1mUHczcHFlblQyR3BocFd3ZXVHcTJBcXNIbmRVdGxXek9nZXIzTVNNZlNoTEg5VGs4L2NoK1lOVncvQ3lPNnVadVlyMXUyMzViU01RSm9XemdmcUgwdXZ5N3VtS2dEOWRhblhvcXA2K2JmL0F5UDR2YWJzMnhnNkRxeDB6bThtKzBscDhCMHZybk83TEtIcHhOODdGRzhTV0FVQWpvNGRlSDBYMnAwWTdMSVVBeURiTzVYZVArMFZ5VDJTWis3cHBkZWZFN214MngyMTQrRW9RajFQblJvaDBHM3BCd3BlNmRTUnlsczBVQVRqYVMrSVpaQnVjaFZwT1BOdHVDbWtXRmg4SjYza2hYTURxaEcwSXlHOHpodGZTaWtXMUcyWEhyRGloSU5uNkljVG5Ra0YvaFhUbndlTEJHSEFOYVQwQUFsTGxzclVocG5HcUJJR2J6NHlOM1lYdUV0NEZBSE1YY0JPQTJ6cFV5RDM5K2dMSVVVYjRJeElQVHdWTFc3b0tWZmxaWVorcmVFWnBmZS9kUmJzUXdKZzBrM1FYWXIxdWN1THlWNTA0Y1h3TTVkbFc3ZDBwVHBvcnJzSnVmSTFzMFdxS053OTlYRXo5RXdhOHdNQzlhU1lucTlsa2E2WllJWjRYbHhkV0RrOHNCa0lHaVA4OU03SHJFeDZjZDEzRUhBYXpoNzdITW5vdnpaNEtiYVFsZzFvK2RUZnRxRFc1ZEhCdGN3V0ZDSTg2ZVBEd2dQdDJLN0psall3ZWVqMmd0NURzUzhTcm9oM1htc2U3MFpZcjZnaXV2Umt3R2JkQmFER1QyZWt5Z2NQWjdLTmFwdTlhMEhKbFMzQ2FHa0JhR1RNSktKeEVoSzk0aTIrY3lXNW9kTzZCZ0s1Si9iV041Q2dvaVJqQ0Q2UzdoUGo2OURaUDNNTTVQWWJBTXlXdFFLRm94VG1TbUVnb0g1aWU1cGRLdlBBQUlCUEFlNnRxNExqU3Nhcnk4Z1JBRjdvME11RWRkNHpQUVBqRW1uUzg4U0VBTDEvV3Rxb2xxTERGQ0VmVk9uSWQ0M2tWbHd4R1V2aU9oSmROVG83OUlmREZCU3h0UGQ2UkM0dkZMMG5oUWlMSlV1M1puSUJGT1RKOU9XejFzY3dBNkdBdWQ0akc1OWMwdEpiRnE1YkhIVXFTaUg4dHFaL21BbFlYekhNQU9ESjY2S1daQ0g5QmkrN1JYVXV0VnVpTE45WTQwR0NIbllvaGN1MitoQ0FTT056VEUrN1Z4QmR5eW0xWlE2T2ppK0pWNmlkYi9kcUozVGdNcFUvTkZxYzFydFBGTHA3NEtRZEdSNi93T0tQN0puZG44NUk4ZVVSNEhKTW5zYUY2RkZmcnFYclRZNFhTQXU2em1wK2Y2T0pSMGFtMERkcUxhWFlBV2x3KzB3WWZxanlZYXMvc3ZLeDZ0NlU3MTl3SEZyM0J1N1A5dG1IaXkyaEZKd2hjbVU5ZmF4eFpIR01Fa0FvNkh4YkMyNEd4UzZVZTF1Qmc3aDZBSGw0MWE2THFHTlpvNkZsV0s0Z0tnbUJmN2xKbm1RQVFFTDVVVW91bGszTE9jc0dtck5zYkZSeFhBenNnNm1mUXJlVzBvWkErWFQwWmgvaFBDZ3JQbUo0NC9sNlVaMTExakF6Q3FNRGU0aFRhbnR0V2pjTFJyVGlXSVJQd1FpUWJRZFRJcW1IN2J0ZmxxNjRDalJSMGExaXdEM3FYZEZYQW54a1p6YitleEorUmRxUTdsd3lxaWZ1ZHRSeDZsV3lMV2ZsN1kvdVgxcVZmU0c0UDFMM2RUSnVPNDVYTlp2dUhzN24vejJodm9iRXZjWmpaM3V6ZXpoaDNLUGx2UUZKNFNsQ2FiVTlXdTI4RE92aHdxZklXb1BHcURLSXJmR3J0UHNOM052RUV2WC8vL2gwZ3Iya3VxR3dsQUMwN1ZYRjE0amRtWm1aT3IwTWs0cXhnd2hzYXl0OER3Sk8wdUlxcWU3TzFsVXBZNVFhdVJOT2l2U2lielY0TEwvclpOdHNZSFIxOUdJeVBWSmxSckNibHZHYmF1a2d3U0IrWW1UbjRpVW9WSklyMENETWJURTJnaWV0b1VvUmZXaktiL0NzT0Y3cTVVeFRDMXlTZFFlZVhPTnJxbG9vU2paY3BOTW9RNkx4UG1nWkpGb0ttRk9QbDArTmpyemt4UG40TUhjNjZLbmVNTldyR0RNcUVzdmFjdGtSRDJjcmpJUUZvMS9Ed2ZwTFBaR2tEbHlhcnRIMlZaYlVITndTRWY1Mlp1WFVjYXlDT09vM3RBcmk2TjVzNzlJczArMDJRUGQxZDcycFp5bkJZK3VIaTA0RnlrUDZReFFXdVpIR3RhN0VOS0lDaCtrQ3R6dlpBM1hNUmtRc0Z6ZnBySVpmTDdRV2pQN0hJZnJZazg2cEwyMCtsNGhOSldtcXdSdEJBV2lNbklmMU11elpUYVRoV2tEUksxN3E1ZFJjWmI0TE5QVW4zOU96TVFzZ25JWWtxdzdZV0o5QmF3VWQ2WE9yYlNPclhtRHRvM1UvVW84Y0NOZ0pKcFpXRjJtSjhYSk9IZHdRVXpHd3dSdWFWQUg0VUxweTJ3YkZIajJpdklubDVkYWUrYlNKRFV2dEtPaStFUDYxWXRsVzB4eXVTN001a3FkZXljaDh0alYwMXIvOThNTTEyYVo4SUFCWXVYcnc1MnJIem02UTlQTTBpWWVmTm9OVjJYV2wvVkhab1IvM3U0bTZIaU9Qd3dVTGdMOTQrTmZZWkxEMktYck41aXhGN21vanNWdHFGRkFHQjU3ZjZlTGJUN1A2QXJrazJ2aXhwNEU0dkcrUmk4VGhUQ09jUWgvOW85d0RxckN6Z3oyYXorOER6dnc3YTk1ZjBoM1hmUTd6eWRlN3A5UmtCRm5Xb2RMdFJTR0VPNG16aWVWVzQ0RXZ1dXdIY0JmSXlMRmJJUzRzcnFyVFlvVmkvTmwvbjV4dkpCYXdtR2k1a3M5bDlnZnhEV3ZROHBZV0kweG1nTTNQTHlnMjV1T3Bqc1I2WHBGTUtPaXNva25TTzVEY0FuUXd4dm1LbXVjUUdvc1U0azJBQXRBL1FZMEc3R3NSQjByYXJzOEdHQUpvWjdnRmYrdDFWdUlDMTJXZnJudkJJTXBOZEZ2UzBiNTVPQzdpSEJRViswVnQ4WTB4NmwxK2VHd0w0S3BJVVNwY21xVDMrOWFLNWRXN1NURlMzTkV3am5wZk5Ibm5INU9TdFg0Y0xxS3V5amNGczl0RUF2azkxZDZWc1N3d21rcVk0ZkdCbVl0Y25TdzVLQU9IbzBhTjlGK2NYN2x0VkRXVzFYNXJkcWExa21SV0pFT0pUS0JTK3RVcFZwcE9PbjUwNmRlcnMwSTVkNzZUMHNMWHhSRHNkWTdPSnI4MTJ0Mk9hZFJWT01JVC9PM2Z4L0QrZE9uWHFMTll3NjZwbzI3anh4b3h1TzM1L0xtdG50YWtka3pYOUN1SHpwWUg3Rmh2UEJDQXkyblBOb3I1MG5sdnJESnRpaHVuN3A2YkdQd1VYcjliVkhWNEsrS08vdHNpZVhGS3N2UXZGa3JKTkx0SkVLaUNFTUNmZ0JNVmJnOEl0Um4xVk1jNGd3enNMYy9nbU9TK2dIMHVCLzhYaVhLYzRqcU1vNmh1R01XZUF4WkVkTm9WSEM3Z1hnY0gwTEpTNDdQd2RIZnExN0tzckVCZmNaT3RQMFBsOC9ySVk5b2NrbnFjUUd0UnVVNU56YjN2bjNIUTJNaVFQS3hGQytDNkFMeEw4UW96d01ZdmoyK000anVLNGIrN2t5YkhaNXNiSC9CK1BqQ3hjRG1TdVJVYlBFL1EwZ25zN2VTOEx1T2ZRME5DMm1abVpDejZPZHdjdVlHM2lRQlJBeGhnOUpxbDFIWklidTdSVXlZckdzMlhqZzBoU1FkT213akZ2K28weDhXM2JqaWVUZHAvRm1pREVLb0tvR2xObFd0Nm9rek9tUUVKU1pEWVVHRHdMYS9WdVpSUlo1cmswN2tpeXIyaTFiV0pWYzNpNjgyQzRZeUhnLzVVVU5sNFVVeTlkdW1TMHFMOTVUYU1wejdneVFxQ0FZMUVVbmV6NkRpcmd3K2pSSkdDakpRcHhCM3pPVmpLaHRKS1JvWW5PWkR0OTBYU3BBaGdVUGgrRW41K1pIUC93ZWdvN04zN3lrN2cxZDZoM2VUdXZ0RDJyakl6SlEvaTVyU3hXSERnd2VnamdvOHZiZVkyTFVrdUZFUFR2QUJiZ0QxZlcxUjRPSGp3OEVCaCt4WXhQVGxLT0t0UHcxbDNIV2hLTjBxVi9TYVZJM2FrUS9sdEJYNlQ0K1VJQk40VncvbzZUSjArZVc4RTVqZ1A0MytJdkF3TUR2NHVlbnNOVWRBK2pCczM0ZlFCdW9IRjNVcDh5b0dSZWJuTURWZmdRU1VJWkJRVVQ3bkt6cmVmbzNOQVQ2OVNiYVhpZVFpck9OK1dTclltUUZRRFlvdWlxOEYxS0h3c0tuNDduN1JPenMyTmpxSitLM2VEaXhpNU5UV0VTd0NTQUQ0ems4bjlKczVkMVBqdmQ2U1pjd05yRVpMUFpBUW4zWW1uMmdockVMQ3NjVHdYZTFEKzV6UXU0ZC8vRXA0R0JnUjJnUFNOSllPcmdyaHJKUXp4MmZpaytrYVJPNDNrakl5Ti9NVFUxOVRVUEZGYlVXMkVrbjM4V2dlY21qZ0NiZUpLM1loR3JXSVBvWDJlbnhqNkI4dVZiQktDQzJlR0lQSnl1bkdEOTR0OU5PTWlWZmx0U3dCdFErT2prNU9URkxyYVpBSURUMDhlL001STc5SDR6dktaK2Rsd2JmT05PQkNjci9qeFgyM1lHS0piMEJ4bmcxOGNteGs1Z2FTbkF1dlQzelVlTzdPdUp3MEYycE84U0p6NG96Sm5aaWEwOHFQWDA4VVdNTEovZUw5WTVXNi9hSDRISlppTmZSN3p3SWZlTjFnMERFQVlHQmc1bStzTGJTRDQzdWUvWlRmV3VTcFpZSlh2eUJta0dRUitGOEFFSXQwMU5qWDBSaVFoYUxkaXZmQ3pkYUtCWUhDeG1aMmZQQS9oRytvUDkrNi82bTc2K1MvZEdwUHVTZUNHQmg1QVdoU1NPQ0Z5TmtOWEVNeWFTVU5BdDg2WXZ1K25XSHVTSHMzZThEdVNQS0pTSU5tb2xydXVJQ3hHUTFxZ0tJY3dMK2hxQzNoTUtlUGZNek5qTlZlN0xhbU5pVTRXWDAvOUdBQW9CK2hTaGw4SEZxeTJGQzFpYldLZ0l3ZTZKakE1SlRYaHJMUzJYTGh2NG1DN0EvOXd0dUdYT2hZUHVGeWxDSm5OVTBzUExlcnJtWExhU0lIUXBrQkp3aVZCL3RZT25EOXZhOHIwa2lMUWhSRDJ2QVBCakhpaTBiaGVEZzRmeWxONmNabDlwOGQ1dWFBZXRacEN3V1BzcVZodytVdXNFVnVBZTlHRGZrbTF5RlY5UGxXZElnbnpvWWlIWVZ6ZEtIekhvMzhUd0VvQTcwQlZMWDBvYnRUTERwVjIzNElxL1ppQnBDdUgySUwxeGVtTHNiN0QrTlJvSlFOR2xTOFBLOUZ4UlhHR3h1dkcyZW54S2hETUZDOS9lcXVQWjdteDJIODJla1R5bktYMHl2N2FyUHlSOWJHWm01Zzc0c3BQMW9GamtlaWlBdjB1ejU1Wm5GcTg3WmNKVkNLR2dvRzhEZW5kTS9jT0ppZkdiSzhZcXF6TElyalp0czB3RU8zWHFXMmNCZkJyQXA0ZDNEYjlUbDBVUG8vQmNFRThuYldlNm5MLzFqQ3cyOEMxTFBGRkpYems1T2ZIZE5rOGttMkZjQXdDTmpCNTZQWUJmU1FXY1ZmZ0JiYzF5RmdsTGdvejRxeEovMVVMaG81T1RrM2RXMkZueC9XR1Y1MXUwUTBNMDUxYXk5WEFCYXhPakRHNklhUDFZeWU0cURXUFZrcWhTZ3VMd1RXL3g3amNKQUZGdnB2ZjdETnF0cG1ldlpwZGVsR2NBU0RwTDhGY2t2TUtNOTVTV2dqVjJaTGFSUUR3dm04MysrZVRrNURmZ1ltcHJRWFdQWGtTeisxUXYzSzQ2Z3dScmVLbTFoUTJTbFBDZWhZVkwvMUVyc0ZOa083bVllY1YyZk1XeXBCNlNzQkRHNGtqSE5zaTlpNHNYdC8xUC84NjVyNUI4V0hla3kzZDZPUUpYNm1nSGtoWVV2aENFbjV1WkdQdHdxYml4L3QzWjA0RTJXdmI2VmgzN0NFQzdFVDBPeERYVjd4T3V4WTFoUWVIdVFzRDdxMGZzemhyWVFSZ2FHc29GOFIyTW9rZDNrWGhWSmx4SjRYd0krcmNndkhQaFl2amNIWGVNejVTODE5b1U5RGU2RmxRS0RkTm5wMC9oTE40TDRIMGpJL2tiWmZFUEFIeUttZTNTa3BCbHJROVI2YTJnaXVzUUtJVDVBUDVyeVhkM0gyNjVlUFhySkxhVlRZeGNveW01eWx5N2FNY2gzQVRwenhRSzc1eWVtcHFzc045TzFaa1VFSk9NMW1MaktLZUxjQUZyazA3YUFDS0tEK3p3SUpZVUtJMDFBOWkzdmVtN21yUW1TUFl3RkY0Sk0wSUtqWGNmckxaY2pGWDhuYkwzSzBrREQxUG56MFYvdW4xbnZBRGdkeW9ucnpadk1rTUpnZVNRekw0ZndCczhXR2plTGdaR1I2K0I4ZnNGbEN4T2E3YjVhbmxNcFhheWFEZHBlVFNkUXN6ZlNHdDRWSFZTSThiWDB6TGIycmU5ZWRseXdnQmpCTE52bkJvN2ZxTEV3ZXBXMG1MdTN6bzd2Q1AzRHdhdVVUSDNldjFkOC81dk1sNXZSWlJxNmF2R0JLSVE0azhXb0ZmTVRvemZocVVsZzkweEprUzRMMms3eXh0aE5iczZjdm04clBDZGhmUDlXM0ZaZnpMR1JIeEtST3NOV3EvaTdhU0V6ODVtOEprdDJBZGRNYS90eTJaSElrWi93U2g2VkRLUHlMcGdsZEZTd0o4SVYvOHVoRCtiSGgvL0JKSU0wVXFISzZ6RC9WUHArSVdwcWJIL0JQREprWkg4alRIaUh6YmFzMGhhT2o4dno4WmlnM2w0K1ZRUlNFWUsrdS9DM0lWLzkzdG1XVXVtNHBYZVFySVBiVXVmcW5XWWhrcFk2Y1lvYzVEK1ltRXUvTWJzN1BodEpmZmdtdG12RzhyV0hPU2RUY2p3OFBBd29YdTMvY1pXMmZTbWRDSFlWNmVueDc3cDQwajMwN3N0ZWdySm9jWGk3U3Z5YVZUWEtKQ0lTWlR3ajZkUDMzb21YdUI3Rk9LdnBnVWRRL0tKamppUmxDRFFYancwZXZnUkFGcjhqbHNTQVdERTZGVkdPNHhpclpnVmhmcXE4b1BLLzRva0liMXJjdksyTDlkVE9TUWU2SWd2V1Bxa01uRytPMWNIcmdOOWRaNzhPeWw4dVBSKzJ2d21xbWJmbUFaQjhaY2o2Sld6NCtPM0lWbG1zVmE3RERibmVBbjdTVWJ0Yzc5VlpUREVtWFE1MEZiemFUVThuTDh2Z1J1MWJJbm1taG1zU1VFaDZKOHdObllKdnYzNldnZjhBVUNtM3pJL240cFg4Wkl2c0c3ZHNCandBNEJDL0Y0cFBHMXEvUGlMcDhmSFA0YWw1YzJsd3RWNjI0eEs1a2RES21TcHNQQVNTcThJQ2wrbjBaSWRJMUszcnRIQ1FsVVhyd0JFUWVIT0VPdDNTaDVzeVcwNWFiV1IwVU92Si9VV1dpcGVzU1R6aWpVKzFSbjVKN0dKWk1kS1U0aS9LdUdsaytQSFg1dUtWMVp5RC9xWTUzUjBzbmMyNVlDWHVZZklYT215cmJKM05QcHBkaHlUUVBCelNJcExlb3A4Rnp0MEF3TURCd0c5TkExODI5ZFAxZExBUXp5TGdJOEN3SWtUeDhjQSt3TjBQcGhnNGlEYWZrTjRicHNpdzAwZjdCM001UTRiOU95a0VMNVc0UVExWVNrRUZYU0hZdjRGZ0FLcXAvT0ZiRGJiVCtQMUhUT1RaRnRuQ1BwT3g3NXRaNElKbmhrYnV5c08rQjJGY0dudHgxeXR3L0ZxTFdGV2xWOWtpdVAzS2RncnhzZkhiMDF0UE82eVBvU0kzY1YvVmwrOTA0WUptdmh1V1lpNE5VZ21tUjU3a2RHeTBycUkwK25tdVBodVdPREhmSnBaQi8vM3hoc3p3N2xEdjBUeUI1WXlyOVRCY2F4eHdNOGs0S2RDK0V5SXc2dm1MbDU0MGRUNCtNZFJMbHgxYTlCZkptVE56TXhjbUpnWSs4c0M5UFFROU1jU2luTlJ2UHo2V2IzWms2Rk1FR0lTQnVpVUN1RVYwOVBqNzBQWExQWHVobGd1emJ5aTNnS3lMeTBkeTRhZld2VmN6Sm8yUU5JUXd1MUI0VmZtaUNkTVR4eC9KNWFXazY2SERYZjhmQzZXZEdjQTQyekdrWS84SHFQMVkyblhrTllHdCtaMlVFK3EweWkrYVFNRmdWdDNJb3o2SGdqeW1yYlh6aWsva2tpQ3dQOU1UNC8vYjlGTkNZVzU5MGo2V09MRHFaT09DU1VKeG1lUGpCeStEendMcStHa253bDRFY2xSSkx1S1d5YzJ5MTYwRFpDUy9tSnE2dmhuYXppcHllSkZaZTRCNmRxcUFueTdqRmFDWk4vWmdIM0duZHZHL2hQVXU5b3VScTk2WW1pMW9IOHI1NjE1N3NVbExBcjZyWVg1UzgrZm1qcisxUzRNZ29wOWxVbkUyWHBMc1ZmU0hpbzdVQ0J1M21MemNwcDlkY1VvRlo2cVZkMWlhb2UxL3Z2czdOaHhEOGJYOVA0aUFJM2NldnhOUnZ3MGxvU2h0YTZCVmpaZXAvWDRwa0ljZm1saHpwNCtQVG4yanBJc280MlVyVklxWkVXejQrTzNUWTBmL3o5US9BWkpwd2xHd09MdTFrcXpuQ3R2S2FWRlVFTmFEak9TZEVkUStQSHA2WW4zd2grRWx4cG83Y3lydFRIZFpYWU02YnhDZUhlTThLU3BzYkgvZTNKc2NWZmZkUnZuRk5pelpqM2lkTldFNzJ5dVFTL2s4L2x0TWp5ODZqMm5LdjVaTFgrdC9nMGJRREJBVXdDOGdIdjNPeDFSbE9GVHpLd1huZGk5VEl2dWlrbTZGR0R2TEhVcXA2ZW5UeFZpL1pZVTVwQ3VJZXZrTkdPMElVVjZSUWNpNlUzbElCMDhlSGlBeHVjQ1RKWUExQlFLVnFKcWxYMm11Q1BjWkNqZ0hZMUdHRklQbzlsQmRHYW52ZUltQXdzTU9yc0I3MlhlY2d2bUZ1TDRMVUZoR3Rqb1N3bTFHaE9PVTZmNkRnVzlZV3JYanA5THQ0WHY5dVVudHJwN3E5RWtMWkRja3VPZVdlRXhvRjNaM0RMNWVvNlBWbXJNSm9WNUJIM1lRNSsxOTM4SFIzTGZCK0luMG5HeHVHWEhlbHhQSUVsQjh5R0VmNHhEL0l5cGliRTN6ODdlZWpzMi9qSXJZU2x6VEZNVEUzOFNGc0xURk1LL1FPa3lTWlV0aFF4cHpCQkFrQ0NaRk5NUElZNC9HaStFWjAxUFRQeVYzeXZsRThKSTd0RHJTUHc2YUgwUUszWlM1Vm8xVjBqOXBYbkY4YjhnNEVrSWhSZlBqSTkvc2VRaTFzdU9reWVjeHZ1enRjS3RLNGtxM0RLNzE0bHlOa3RRT2orUFE2Q3VhdHA1cWpjTzF2aWIwajh5aEs5TlRrN2U3RUpCVjkvakdoazVjc1NBSjNYRW9TNTVza1lTa0w1NDZYem1BeVYvRlFET1grajVYMG1mTEhFc096YXBLVm5GOGJ4c05udXRqM1UxNzJ4bGVoZWVUZkNhZE8xZ25Sb2hsVFZkMmFSaGxCOHJDQitjbVJuN0Zxby9aVjNjZ0FLR0I2S0REa2xpcGpnVng3cDVBL1pkQU1EWnljbHZTUGduVW12bzlHc0Zab1lWMlVvekgwanJYWDByRnI1L2F1TDQ3K0hZc1hsMGVjYkw2T2pvUVVtNTlwbDIyZTdrQXNBUWRKZEMrUG9XbStmQy90SFJZUmxmbHl4SnF0TEFVcFAyVml2RHJXR2ZKUnVZU0orTnpucng5clh1LzZIUjBVZEV4dDh3c2gvTjdwRFhtVUZTU1lIek1LMVlQem8xZnZ4Rkp5WW12b0ROVng5b01mdDFabWJpdjZINEpVSjRXUWp4ZjBtNkcybld6dUlQYUpCQ1VKZ0tJZndYcFIrZW43djR6Sm1aaVUrVitBU2VmUVdFa1Z6dXhRVGZBcko4dDhFVno3RXI2OS9VanM4QStNbmR1M2E4Y0hMeStIOU5UazVlUlBkc2pFSUErem8rMWxJaGlpSWZ5N3NJMzRWd000NSttWEFmd2dhdzB1VTNkVlkxVkk2aUFtN0RVdjBycC90SWpDQUtMeWN0Mi9ibGcxVm0waUM4NTg0N2I3a2I1YnZMMloxMzNuTDM4TTdjYjByaDRTVDdTL2U3YTdzeks4aklvV0NaSndINHVwdkJjbWYvWUM1M2hPRC9vWkZMT3dscCtUakFXaTgwbzBNdWlsQU1zZTZLNStPM1kybFpaMVdSNFNpT1ppNmhNTko1bjBkM0x2VG9yZzNzNUNvT2hYY1FtUmVZY2JDTHRvaXZkcWt0VGo1c0ZEUVpBSVFRLzVzS0N6ODFNejM5YlhUYlRvTTFHbUtCdkN3RERLZlRNenR4RmdvRnhORzVyZWI2OUVvUEluWHYrbTI3MG4zbUsrTnJWZzl6a2hWUzd4czdNMzVYdlhIT2FlOThOamlZdnhlQlB6ZmpZVFVVcnpybUJpMmVWeUgrdDNoQnZ6d3pNLzdGMHV2Y3JENG1BRXVGamIvWnUvZkllL3Y3NDZ1UkNkY3FhQjlnVjBBcWdCcVhkRnNvMk5kT1pNSnRTTjRQdjAvS0Jwa3duTXM5QmJSZkpMRXRyZU5uOWUxM1ZWbWpOVzA1M1dId0ZoTi9ZbUxpK0w5TkxmV1Z1cWkvUkdtaGszMmlJQW42eUZSaXI3N0V0VXR3QVdzenppYmtvWWlXVVpxSXNxcDRvOG84djVpVG5SUWIrbHpwd091dDMzMEIwOERBd0VGQlR5T05XTnJ5dUwxbktXNGJIc0o0S09BL2FubU0wK003LzJza2QrRmZqWGloT3J2N205SThtK2NkUEhqNEwyKy8vYlpabjNqS1BKMU1EKzFuRGJ4R1FhRlkxTHpxTytzR2dQVWNwNldzRUlJV29JL096dTcrU3FOK09EZDRibmVFYlhzNnFJZ25ReGoxalZQakU5T2Q4UHpXZ01Vc3JPSFIvQytGb044am1lbGtaTGFhcGw1NVRGUm1Lc1h0NTAxQjg1TGVSc1Z2bXBxZXZyaWhBcUJnQjJEcTY5QndMd0lNd0YyRktONHFPeEFXZlE5R1VlYUZKRE9wSUcrTmg4R1ZEcCsxalYzUzZWajZ1THNmYTlmM2wrZHlRd2IrWVdTOHNyYVEzNm42ZkNWak1tRUtZUTdDTDRUQy9OdG1abVl1ZEdIQTM5RTVDUUJQbjc3MXpPblQrRFNBVHpkNVEzbnNrTTVodzZPSG5tZkVuNExjTGFGT1pueTF1YlZGRjdmNjlDeElvdEVVd3FjWitQcUp5ZHMrMzRWOVJRQWFHcnJINWVMY1ZWemR3TjVvVEw4azZCTXJhMlNua3plTXM0a204dnllL0dVbVBxNG9LcFQ5dFpYVkhLZzcxeGZGZ1ZPRndDOTcwM2UzV0dFOTJ4NUdNS2tKb2s0S1JvQ2cvenh4WXV4bUxCYzAwNm55Mkh4QjhhOEdhUUtkclZOamttVEc2M3UzNlRWdUN1V09aamFiL3o0S0w1TFV1Q2lvV3Y1RHlkOGxKalZoYmxkQnZ3c3NMdkdxcVhoRlVmOFFpQ3Vrampna1NCMFNLZUNUSmZQZ2huVklwaWZHM2k3aHI5YStvSHN0TzJCVFhuTGptS1pjdkVycnFrQnhlRjlRL0gxVEUyTS9VN0tVWVNNRVFNbW1Kd2pYMG13bk9pbzI2cnV6NCtNVG5Zeld1NjFkaDNLNSt3RjRNQm9HTWgzVGQ0dEw2RCtYa2I2NVJkcCt2ZnVkK1h4K1c1LzRjNUh4a1kyRnkzYVBlK1hqazZSYlE4QXJweWJHZnIxRXZBcllXcnVBTHU1V1dQS0RLcS81a3NIeVdEd01qWTQrbkliZkpya2JaVHVvcW9tNXQ4bk1VdFg0V09MQks2MmZhSXJEKytZUlhqeVppRmZkbU4yY3pLZlIzR05JM2orNTlUdHo3NU1JV3BEckpWMTQwemlieUlrcjdDemtRTjZ3dUhzWFdaNUpYMXJDWmdYRjI3bm9xQUVDYm9vdjNYMmJPMnBkYXcvaDZOR2pmWkh4KzJuV0I2aFRPNWdraFd0RG1BUDV6anFCbVFCd2RtTGlHSUJQR3RscHUxRzZUL096RHg0OFBJQ3V5MDVabnpGaVlHRGdJQ0wrSksxUmJZVm0vS0VxZzBqbFJoRkp5ZjdmbTVrWi94ODBrYW5KSGcwQjdPK1FhUWhKa1pwVENQamZUUkFzRUVEaC9OMzR5UkRDaDlQYVA2RjdMN1VaQWFIRW94WUNoQ1NETDQ1dkNrR3ZYWmkvOVB6cGlZbC9CMURBeHNyOFZlcDFiZTlrZmJkT3F6UmRPS1lKUUc4a3ZvRmtWcld5aktWT3RrcGk0SklJdmF1aVJvelRRUjluSWRhUDBPeUh5c1Vyb2Zha3BEYTVyTW5HcDZrL2JGTDRIeW04WkdaeTdPOVJYdHg2SzFKZXZMMzZhMzV2TE1YaFlYZzQ5OUNJOWc0alI1WXZHNnhYZTdReVcxbW9tN0ZRTFdsZTVRY0tDdSs4UlAzZzdlUGp0Nko3SHhDbE95UHFzYVJaa25qY29STkprU0lYc0xyeHhuRTIwNnhoUGZja3NhT2xsQ3RoWmRxNjhQRlRwMDZkaGFkVWRxdHp4d3NYNWg4TzZPRmFhVDIwSmkyQmlWRDZoWE5ZRkFWVUo0b1ZZdnh0Q09GOGgyM0hKSW0wZS9kdXczUGNKSXFGMi91ZkNmTDZ4VjI2V3Ivdm15V1F4aERDUjg4Wi9yQlord3ZTTlNWRmVOdWVFcDRhM00wWEwwYWJRWHdYQUR0elp1d3V4SHlUcE50SjFuQTRWenJRcjhRb3VDckRRVWtoWkJBTUN2OGVML0RaMDVOamYxaXl5K0JHbW5jV2w3bGxZTmQzOWpRQWhLOWhTZURiekhOenNsdlh5TWc5UlR3QlpUVWUxZGdrMnpzSFVncmo4NEF2SDF5am9IOW85TkRUTGJJM2xvd0hMWTQzcTdvMUZtMU5JZnpUL0VVK2UzcDgvSDhCUlBETUlxY0ZPejU0TUhlRUVmNk1abGRXcjNuVnFoMnJpZWlnNGdNRUFWSkJ2OFVRdi95TzhmRVpkSzk0WlFDMGIyUmtCT1QzZE55TkkwK0pQT1htMm4xRzRHd21iNDQ0VEZvUG1zMnNxQlQybTl0c2pJSUN3RnZYeERWMFZ1cGNpUkZmUU5wdUpQM0ZzamkyaldZblNYRWgvTldac2JHN1VQL0pzd0J3Y3ZMNGYwTDZ3Qm9zZTFKeURyM3E0TUdEV3prTGl3QzBkKytSUFRBOGg4V2RJRmV5RTNObDltYjFoOXJGVENjQS9PdlVMcHJyYTNISEd0d2VwMCtmdnZYdVRkSzNBWUJOVFIzL2JLendzMUxIaGVFMm1TTnJ2UmFRYkxOT1FWOEtRVDlVbUx2MGdoTW54bTdDeHQzRml3QndNSmM3TE9pR2pzK2I1TVFXbVp2VGVTNTZ1cGxkcnJyZnVWUGJ6cGR0dy92ZnQ0K1BIeSs1TDUwT0JmM0R3OFAzTU9LM1NlNVAvSnVWZHE1VytxRmtqQTNoeitZdVh2ait0TTZtQVlpOWk1d201NFNReldaSGV2cndXMmJSdlZZbVhsV2FKQ3QrYnp4c0FZQ0VTM0VJdjdobll1em5Oc3JTL1A2bzUwa2tEMHRCSGRJejBsMWxNVzZGZ3E4MjZzS0p3TmtrQStHZWZQNHlBbyt2ZnBPeHVhT3c0WHVVQkJZNG8xaGY4NmJ2M3Z0Nk1KZTdHc1NOeTJhczl2cndJWG55ckZzUk1oOXFZWmFkRDdRL0NTSGNqVFhKd3NKMVBkdTJQMitManhIcTIxNTRES0ViMDR3OFcvR2dVUHB5MmI5WlV0UWZETUNIR1FydmI2S1BrNjJqUjBheUJqMTdEZUxleVUwVzRBc0FaOGJILzF3aC9ERlpiYUVBMStBU3F1bzIxVFFIVkZsV3FHUThNWlBDUWdqaC95MWNzaWRPVDR6OWNacDF0ZUczbjg4RVBERjV5dDZ4M1dBcFFSRG10c3FZZHVCQWZoQ3daMVUzUXEzVnZXY0tZWUd4M2c5Z0Rlc3diY2w1RE5sc3RwOVJ6NXZNZUlXa3VIWjdOL3UwcnVYc1VFcGhRU0g4YkZ5WWY4UEpreWZQd1hmU2Mxb2N1d1lIQncvSW9yOHdpNTZaSkFYSXFtZEtOOXo5dE1LT1dYOE9yaEN2bUR6UmZPdk14Tmd2SEFQbTBkM0xYNHZYbGlIeFZKSnB4aU03ZEM3Qm9NL096TXhjZ3E4MjZyNUExOWtjay9xMkVFWkUzTGYyY2pHaWV0cFZrekhzVW1BS0NKOWRXTGh3eTFwNmlVNUxEcFpNZXFiUmpxYkYyMjNaNU5XZVRLeTBNTEgrYVdibTF2RW1KNzRBZ05QanQzMEN3Tit2VlJhV0VTL2VrODlmaHEyWGhVVUEyTGR2Mys2TThlV2taWkkrWU1PYnZmcU9nM1ZQVXhKSUswRHgzMDVPVHQ2SjVnUXNJSXF1RTNpdnppNTVGUlQ0aldMZ3VVbkdyOFdPdW5EdTdDK0hPSDRIRjFkTFZvcFlYT1VwR2c0OUZlOXQ2SEFMVUdDQ0tZUkpCYnhtYW1MczliT3p0OTZPamJkY3NKYkREUnEvcDRQMXJ3U1FVamlMb0s5dWxjR3RkeHRlUStOOTE3YUFkK1g4QWdBNkZzZnpIM0dmcVBQM1VtRDBRelMrSU8zemFOblFzK0trS3FCMmxXc2dMWEpOS1N3UStybVNZdTIrQzdmVGlnMHJsOHZ0emZUMS9hSFJIbHMrZGxYNlg3V0VySWF1UU8wNU9EbEZ1azJPR0VMNDdjbmV6QytodkVKeVYvdXpJL244L1FFOFdFVUpydjNEdWdBeEJCVVE0Zytpczd1bU95dkFCYXhOUklhOEY0R2RyWThGYk9MdlhIcUJnS1NQbER4MWNtZXR1KzVwWmJQWkVkS2VwK0sySXF1TlMydC9ra0U2SFFwOFZ4UFJhcVZoRllUd0wydXc1SWxCUUFEdnZTUFlJMXE4emszajlHL2JzZXVGTkQ2NVBQdURUUWdOelVZRmkrOUpzdkpDK0dKaGJ1NURyZlN0RUIweVkyOEhuWVZFV0NQUGI4SitGZ0NjUG4zNlRHRis3blZRK0cxajJaSzdOcG5TU3RlZGxuMjJwS0R2a25BVjR2ZzNGeFEvWVhweTdCMUlsdUpzK0t5cklpTWpJMWNTdkw3eC9iT0tLSndBd2J0REJuZHRoWGx1ZUhqNEhqUytaSDJIZEtiV3JJL1B6TXpjQVg5SzM4aytEME5EdVljWjhRWWt0ZjVZMDRkWmRROHNXeHVmQ3NRNkV3cy9QVGsrL3BzYkpPQjN1c3NYSXdBckJQd2thZDhuS0lDdzVmUHFDcElOcXRwdXpiY0lBT09nZDB4TjdQeFozSExMWEx2dW5EWHdjNGlBVjVGMk9Ub3FMQkdFVGhUTXh0MTB1M05DY0RaSjRBTHhBU1I3Vm5aRDF4bzhLMi9tTkFDRUY3VHJaZ0tqNTVHOHRteXBXTDBNNUpWTldTSU5sRDU2MmZTT1ZyY05Gd0JPajQvL0Y0Qk8xOElpZ0dCa3Z5RThaNHM1bkFRUUJuSzV3MGErR2pTbU95ZXgvcjBPckNKYmgwcTJqM3YzN096czdVMjJkNXB5cGNPZDNPWWVCQVhjeFlDdmJCQm5iU1Z6Z2MzT3pwNmZuNXQ3YzREK2lFQmNVdGhkdFFXVFJxTEtxcHRyU2JTaWtUUWp6UWlkRHdwL1hrQjQvTlRFMkUvTlRreDhjNU1GaHFsQlJ3K2k4Y3JGelJPcXRtK2o5bTh3SGlmLy9VNDBGbzl0VXZzdW16K1l5YnlldENPcnF4MnordnN0aEhoTzRrZnF6TEJPRytheHkzTzVJZXZoVzBrYlJWQ0FGdk5JNm5uRzdRdWFwWG1JYnp3eE1mYldFbnR6OGNwcHlZNUhSZzQvTzRyc0RjbTR0VlIzb2JVWXJmblFzTXFVRXBEc25QbVA4eGZPdndFNE5yOUI1bHNEb0tHaC9GVWlucUNPWGE0QXBmV3ZpQStlR0IrL0daNWwyWlhHNEd6OEFWRkF0aC9FOWF2M25lb09ra3BGckxzUWI1MGxDaHR0Y2dTdTdpWHhoTHBMVmFwMWMyc1Avb3ZMVlM0STlzNWp5UVRZU2piZVlpMnNPUEJQcFhDdXd4TW9BVUhHUjQrTUhMb1BscGFQYlhaN0FJRGVET3hYVjc3TXBxV25nSUhKVStvdlJ0TGZOTm1ueGZka0FOMm5rOEVtUVREZzA0WEN4YzI4L0RrQTRPenM3UG5KNDl2ZkFPQ25vREJKbHU3VXBScGQwT3l0cTJac1FrbHg1ZUlQU01EU0xlZG5Rb2ovVFNHOFdUR2VORFUyOXBvVDQrUEgwZ01hTnVNdVhzYXJ5bTF1SmR0L052V1p6MDVpOGlJMnIxQ2ZCakdqandIdEJmWHJpWFZjUzFKNkY5d1V4M05mY0VHanMzTlpIL0RqcEQwd3RES1B0VjdlcW5Kc0svbzZDd2poNTZjbWpyOGR5N2N5Y1p5bS9QT2gwY09QUUVhL2ptU241UldvVXFzUXNwTC94SWw0cFgrYnY4UWYzWWc3eVZ1UEhoZVpaZE1zTW12RGpWODV4d3BKVnZoNUFPK0JMeC9zU2pMZUJKdGlVTlR3Y004b3FLczc3TFVKSkJYME5hOS8xYzIyY080UmtqMGczV1NPVmYyemF2NjltaGo3V2VLNGt5YUYvNTBhMS90V2FBdEo0ZW1KL2srTzVNNS93TXlla3dvc0hTdHViTFJoV2Z4S0FHL1lBcmFiN25KejZIc0JQRU5xcHZhWEdnU0FkZnljOVBpQ0JQSHRrNU9UVTJpdXNDMEJhR0FnbnpYeWtEbzZoZ2tnUHBrV0JkL01SWGZUdmo0MlB6R0d0dzRQNXovT0h2d3dnZWNCM0ZtNzM5V0NhVFV4VzFoeDUxTWhCRjBTd2hpQTl5RkVmejAxZGZ3WWdFS0ZNQkUyMlgyNVZQOEt1T2ZTcjZ3ZE8xZDJBK3U5c2V4Rms4SjV4ZnBRNDV0MVk4OXhBd01ETzZLTXZZNjB2ZXRZKzZxb2JTQVFuemh4NHNSSitIS3lqc1NyU0RiNGVCTEFWNjlvQTRTRzlhOXJkUnVUck4yZ2VRWDkvTlRrK0c5dTRudkw2YkFORHd6a0RwdnBqNHgyWlBYakZpc01XL1dOUHhXdmFJeENDUDgrVDd6bTVNbXhFeHZJRHlLQU1EaDQ5QUN3OE5MME96Zng4S0xaNGFKczBrMDJJUXJoTytmTzROTWU2M1luTG1CdERvY096TVQzSVd3d1hUTFdXWmROK3FUdnV0S1ZKSkZSaEZlYThiS3FFMlNqY21lTnkyd3ZtcHdVZ3NSM0FzY3ZyZEFXMHFjbngrYWwwYjlSNEROQlp0QzVJdXRTTWpNOU56dVFmZnZrN09RM05yRU5wNzE1dEE5VytFRXoyOWJjVTJ0V0VUU2FFTEdLaTVoSkN3b2Z2ZGpYOHcrdE92bVpiYmo2LzJmdnUrUGp1bzZyejVtM0tDd2l4WXEyd0pJVTFhaGl5YklseTkxeWoyVzVSWExjZTR0VG5lSXZzUjNYdUNaMllpY3VzZVB1eElsNzdNUzl5bDJTNVNMUmxrU1JSQWRJa1JJbE5nRDc3dm4rZUcrQkJiQzcyUGFXdThDZDN3OFNVYmJkTzNmbXpOeVpNMDRhWUY1ZmlPcXJCcFFnNTdSUzJwOW55d25HeGdaL0NlQWxmWDBEWDJYQUQ0RGNWSjl6Vmp6VExXZ0dUamRKK29WenVnMm1HODI1M2FPam95TUxnSDN1aVphdEwxbWZ5Wnd1eDE1Q3VSbG1KZXhyT2J1eWFPdEVrbkQ2ZFhCMDJiYkh6Z1l4cVZUSFpUSStITWxOY3l4VCtXbk91U21HODlvSGZhQlQ1LzNldEttL1Y3VFhHMjJ0Sk1lYzNXQ0ZacW1rdGhSTUNndk9UY3ZwTldNanM1eFhQcGoxVWwzQTNXbC9ZYlR6NHNtWlFmMWRmY0ZrVEE3OU9KS0JjL3BpT00wL096aXh2NVdTVjdPMk5kVWVQaFcwaStlMzRwY0JoU3NiUWhSakdGNTM1TWpnRVcvWG0vUTgrU1ZZRmtFS0NPd2dHWlJYWlZIMTY1amtwaDNjalg3Wm0wNE1nTHJTNmZzU2VBUlVvUHBxU1FDM3RBK2M5eXpTUVlUWm45VkRmNVhOL2tUdHdVK05mR0NDSStZTmtzellIWGFrSGdQZ3BtWHNsT0p5OWV4RFNEekdWYnltK2Y1NjRmVjEwZVFWSFhRblFyeno4SjQ5ZDFmcTlBVmNuRExyeUNWZTY1eThFa2pDaFllbzdQVXJ6RC9FN1puSUtzQmRBRHBaQ08rV2kvTVc2b0FXcmpNSTZCaUVWOTFqK3RpUm9jRzdDaWhYN3RXVyt3VUlBV2pORExZanBYUGtacEZ4ZFYwZ0xCMjBDUGplNEpIQnU3Q01xNjhBcEJqd09TUlh4WHljVml5blFLamVTZkI1RzhDSUpPVzMyZkRrZFQ2eGtkeSt0Ni9tSzh4NEgrU1NWNVhFb2lwaXVyZ1VNRkowSWVQd0laKzg4bElqTm5kOWZabUhRWGlHb3JsS1ZzR05jWms0cmVSenVFaVg5Y1VBN2c5SEo0YkcwWHJKSzlmVjFiVkdjTmNZQTZ1c1c2TWlIeERGdWk0OFRxY3Z4V3ZraDVVMTZjSHkwdUpCYWpxZFhnWFlReE1jengyL0dpRnBNaXZkN0plK09RUFZGSU9yYWNGV2xPclpycVJMcUNCWFZpNGswSWRIUjBkemhNdXVodmR0NCtQamQwRHVueVFYSmh4OENkSElsNmRzM0xoekhaS3I5bXFDUUc5WGUwQzhCTFRWMVgzT01ybXZPUHQvVXZydjBkSEJyNk95YVpRT2dGRzRiMzRXcE83QlpyUUl1MCtjT0xGL2hRVWlCSkRGenAwZEp2c3pvNjNSUXZ2QU1uSGUwb1B5UkJJUWZqNDZ2UDk5UndZSDc0cHhSdTRyUDNHMVlnQ2hVbnFBa1J2bm5VTVZXVnNVV1Z1V3RxSE9hVG9VdjFzTlltOGx1OWJibTdrdndDZkdPWG1lNnFQczROc0hFNHhQMU5mWGQxbEFQaGV6eWZFcXRLWXNIRFR2QURvQ0ZvYmhGOEtadHRkWGdaNjhlSm5GTjFzeW1XNmsrQVl6TzMydTdhM3NxYzRWUU9tQ1NqK2J2RHFwOE9WRFF5Mlh2SnI5UUVIUWVTYUJzd3JUVE5UcmFFb2tJT0hHa3llUC9jQ2YrK1oyRUY1YTJ6akN1ZFNBaUFzVGZxM2NoS01mSHh3WjJlY1BkZk9kNDU2ZW5nRUF2MWRwQVVYWnZqSDZFZ0E2cHdtWDVYOWhidFI5VGJxRjZFbS9DK242aENjU21pU0J1SGZuNnBtbkxOTmdqd0RVTjNEOHFRQi9yejRWYlNVbmxEb2E2YVJmQk1UcjhvQ1J5bjNpcmt4bWdPUUZJS0hab0RTUnBUbDArUERoWXl2UlQ2UlB6andXeE1Na2laWG93MUxESFJaWFowTENYZ0RUZVVBNTk2VVZ0dTRPMk5WdXdLT1d2R0RLUDFiNS95NjYvbk1rMHlSQmFKKzU0TGZMMkRkSExTTXBQSlhHK1BKQlM3QWFNZEgzNGx3NDVkdzh6akV2ZGZSaEd6WnNXQThMWGtmYUppaXZuSzZ5Z1RQRjcyRUtQbDY1Z1A4cmJtYjZKUk1UZTN4eTBrc3RvS210VFhoOTFGM2dxdUM5V2tyUmkxMDBFZ0JDRXVaY2VLMnl3WjhjR2g0ZVEydlNaampna2paTDhVOXBRVmZoMW5IV2VkLzRtWmpnM2xkZk5YUGc2NlhGcldUS25VK2dLK2EvU25CUEJUcmVFQ2N0L0tGdU1uQnZxWTRuV1dDNzRnU05sVjFOVVZuZ0dvMldSZmpsc2JIQlg2TStvMlVGd0VaR1JnNEwvRENTSTNMUCt3eldic1NUQWJSaGVVMFlpY2FOYng3b0lmQUtHanVSV0pYWkhDbWFCTUhwczRPRHM2U2dGZG1HQURpZDVQcDZjL2h4NFp4MTZxWVZacjltQXk4Wm5ramptb3IxZ1V0aDVObmZDVVFnYWNaSjMvRW1PVnFkclgwbnpvRjQyYUpiWTVhNXlDelBnQXZhUDdxKy9jQXl4cXJhMnRkM1BzR25sckJGRGZPM1VkS1F1NUdkdXFGVU9zUkw5WFpyN2RwMUw3QWdlRlJSd3V2NmIzdWN2SEo3c25EL0w2NnM4MWpYUzlVNm5FNW5yaVQ0N1BrWGlTeGg4eXZLdHBiNmZVZ3lrSE0vbXptcDU0Nk4zVDZNMWt4ZUdRQjBEeHc4RTlCamxac1NtSXhaandlVnVXR1huYjJZOE5MTWl1R2xkWk1XTVpTNmpMUlVnb1lwNXIvU1VjbnQ5c3ZlZkFtTG5wNnpOZ082QmhIemxTcmUzYVZiZzZBY0NicmNVZWZjMTFEZnhFL1VEK0t5bjNWeXVTcXNwUFNaa2dEeXN1NysvbnVkcWdnb0lWMGdBSGFzNGl0b3ZDajVDVjEwRVErTTIrT3kwNTlDbFRmVkJ1d0NjSHJVNEZsUHd6VmJ4bUtBSUlmYlZ5S0k3dTN0dlpqQUZWTGNoc042YUZuQm9GNlNibkV6SjcvbGcvcElBb1FQSmJtMU5PRzRTaXd5bzA2NW9qR05JdUF0L2dhN2QwOWorVldMekxLenRWbmJueG5SWFpqL1pMNVNxaUVtWFQvdzdZT0p4Q1d1cHlkempvaVh6dHRJRnNFdWxXaFNTUXhDazhOSmhQcC9rOFBETjhNUEt2SlNnODNxNmVsWkxlQ2xadXlNSm5ld1JQRnpPWW1zSlNZTnpva2pFVWpoejhJWi9lR0JBME43VzEyWEE5a2pRVzZOdTBBU3dyUVVRWWo0K3ZqNDRPOVFud3Q2THdrNkNpK3REZW9DRXVja2pkS2k1Z2ZkUEQyOTl2cytNR20rcEVVUW5Id2lqWmN2YWhkam5mV0FwSVRkTXlkUGZyUE9laUFBR0JrWk9VendmeHV3Wm81bVc0ekJrNWVSUGhPQTZ4dlk4WHNrWHBMZ1FJZEZ3RW0wTDQyUGp3OVZzWmJSMzVMM0pSa0ljQ3JSRmxTRDNnTE9EU0cwSDY4dyt4QzE1d1p0VDZNRi9VaVc4NDJLQ3Q0K056azVlUUFydTNKaGp0dk5jRm1VankrMkZrVDVoTDFZZk1rUW55RG4zS0ZFckg2VFlKM2UzdjRyQ2YyK1puVzQyTHF4RVdmS25IUFRncjY1VE5mOGxOdXNvQTEvUnJNejUxM0NDSVdMVjFTenBZbXZUdVFBL2QzbzZOQVg0Sk5YWG1xTno0SzI1OU40aGVZbFhWVEVpQmRUNG5LU1dBczVyMkJPdW5aYWV2cjQrTkF2V2xpWFl3TDh2ak5KdlJ5SjBJdG9ubDJYM0RGazhYbHYxMXRET2J5MHJvSEV4bzNwYmdsbk5BSlVDTnAzOE9EdTQzN3BteXRJNnVucFdZWEFua3RhUlhQRXFucTlLRC8ySDRjT0hUcUsrdDg2RXdDeTAvcU1YRGdNTWttblMwVnNTMC90NmNtY2c5WW5jOC9wd21yU3ZZSm1welhnTXprUUpxZVJyTXQrdEFxSFA1dUVoN0J6ZmlCUlg5dEZFaEorUFRhMmIyOEpGTGdjL2J2Nit2clNKSzVLK0RNTEFPWGNQUTd1Ujk0MFI5TFYxYldaNUwwV2EzNlpBeExtTGErS0psUGszRUdEZlcrNUJvSURBd01iR05ncjUreGFLWjQ4Slh5NkZiY1A0bVkzTS9PekZXUlBHbWF6ZW5zSDdnL2d5Yk1YY2tzZGw0V2NjVXVpakVJK0FnVHdoWkdoL2UvR3l1UHI4MUxucE12QTVvRWVJMTlHWTJwT2wxUXFnVkxDMXBlTmlYTEpxM0UzN2Y3c3dORFFYZ0FCV2p3UksydTdHT1RPM0dWTmZlREtvbkdrdVFyeTc2d2ZYZk50YjlkYjQ2QjVhV0ZwYjJjUGpEMUN2UTUyaVlCZnZBNStwR2l6Z1hzZzFmRkFTT2ZIL0VHTDJ5ckkwaTMzNVpsN0YxVmY2UmNuRVg0bW9mMTNBRGd4TWZoYkFQOFJkMEltbUl5RGpOd1J0UEdSU1A3OE5FUVhtT3A0UE1qNzE0ZTRmZW5YcEFnbnZTdHV0NmkwM0pvQTBOdmJld2FrQzJMNnE3cjdwRm5lWDdNYkFXUlhrUDJLVnpUMSs2Q2RPV2NmRWxHTHFQUWUrdEg0OEdtK1NuZDJhbExIQlFTMno2NDl1U0QzVWtidmR1a0FQS291Qkc4ZUhWM3ppMlc0N2dTZ1VIb09qZmVMcG1mU0tseWp1citsMkRkOWIzeDgvQTc0OXNHNjduVlhWOWNhQkhnMXpiYWdtc21ENWV6Ry9DT1k0NzI2YnVwNCtFb0FVeDdqZXFsVmw4UFY5bkl6N3BLVGNoUUcxYmp2U3ZBejQ4c001L0N5dk1xcnNJWHRnUU4ydFpONmVueEJYeWZha29KQkVLTm1JMzVyTjNaUGV4dlEvT0lUV0MwdXFmYmdZVVp1UUdJQmEwUUlMcmxodXV5My9JbzNYWURLd1BoTVdyQit6cmdYdW81a21UWjhxUmQwMzRvbm1TUUYycVBSS1RQNnNuUHVub1NEZzRqU0MvaTlycTZ1TldoZE12ZG9qUzY1cE0ySWE0Z2tpZHZ6d0JKSk9mMEk0Y3pIYW5yenFkU2xJRE9GRTdCMVdKd29BQktGQXl2SU5zeFdyc0Q0VEViVmpBdElaT3RvaFFBNktRdndmK0RCMyt3Q082SUg0T3FjSXM0dFdLbGtWYUhmczFoY1EwR0NjLzhici90eVNxYk1jaUdCOWxMU2docUNrM3BxdXptbms2SytoYm9mcHBVZDlBT1F0WFUrMHNpSDE5UUNYOG1NVllLU2pqbUh0eHc4T0h3N2ZPdWdsNXB0MXNDOVNieWtkamFFY2ptdkpFYnRid2REdVJlTkQrLy9FbHFidjJuV2lLY0hqcitFck5jMDdlSjRGZ0NjM00ybThIKzlHcmZPWWZQU3Vza0xTTGhveWZIY3Rka1JSWnkvdkgzVnFsVzNMR0ZWdlRUMjdDcWQzbjVmUUk5UjBiR3krZkZNRVdDL3RFc1FTWE55WThyeXZ4S09FQVNBYTlhMFgwL2cvMHB6eDlSQnVhTnVrQWV6YmRWOVdqZ1lpVGhpRHR6eERCQ1BhMEQxVmE1ZDdDNFh1dGVOalkwZHFqSmhFV2VzN0pJb3YxSi9zQlYxRG9LU1RpcDBONjIwQkVvV3VEZUJjNHBXWjlaSFRSeEFTdTRHWmFjLzQzM0VIQ0FPakdmVENKQXV1dDNWNGhOUU1wKzFvTlZCaGM2aGprcDI3VEpMcHN5MkZ3Y3B2TXdzT0R1MmE2Y2FzeXJ1L2h3OUVZYS84cnBlMy8zT3JNK2NIaGhlVHJQMmVHWk1rZkx4TXRWODZhSkdFYVNjM2prK012Z2wrT1NWbHhwMU9KMU9yN0lVWGsxeXN5ZzNWMEZZYXVyZ2tqQUpTNHlqcGFUSjBJVXZIaDhlL2hKYSt3SXA5MEZkZnliekNoSnZBZGlXY053QmtvVERGNGFIaDIrSEoyOXZtU0RZUzRzYXluWHA5RVpRT3h1Q3hxbWI5K3paTXdOZkx0OHNFaVV3VGM4ajQxTDdvc2FkUzN5UDB0d1NzNGtHL0doOGZPakcvQUF0cWVUSW5qMTdwa0s1ZjVmYzBRU2RjVVRtVGxzZEJIeEtpd1lqT2RDMGtjWS9KSzBEUzNMRTFNblpBeDhkR3h2NlZwWE9malpBRmJRalVTZEhRc0RrdExuaGxXWWZBTHVDdENXcUM4c1o0VjN5VlVnSWRQcEkzRkxscTY4QWJkaXdZejJKUnk1eW1hVVNWa1YvbHlNSjRJSmtDZ0hnTngwZDlydGxsa3doQVBYMzkxOE84cmx4OHFwcDNwcUFueDRlR1psWVptdCt5bTFXZGgyZVMvSVIwWDR2MVNwYVJqS3JCUCsxQUFmU0pIZnRQUXIvQ1o3M3lrc2RkTmd4ZUFYTnJwby9LYlhVc0lseTdodTExQzlDSi95LzhaR1JMNksxazdCemxWZnB6UE1GdkE3a21vVFBwU05CSjNjelhQYmpTRGhSNXFXTzJONHZRY3NlY3F4QzIwNlFNYmZKd2xwVkxmRlZkbmhpenJtc3BLK2hkVnVzbHVPNVZmZkF3QzRTank2OW9jWDJ2TUNOWnVGTHp1aldXKzZveEUraU1XVG5Bb0NwWXgwL2svQ2JoS3V3UUFpRUh0UFQwek9BMWlOekp3REo3Q2tFTDJsQWxZSWpDVG4zTzdqc3Y2STRPaXZMaHZVTURGeEU4TEtrMmdmak5oUUEySDF3ZUhod2hRU2NCS0QxNnpPbkcvVHdDcllEVll6emNnVGhuSFk3bC8ycU44MTUvdm0wN0gxRlhqaXIyNVV1N2FLL0w1akVBb0FmN2QyNzl3aVd6K1ZTL0RrZWtwTFpDMm0ycm5LN3JDU1dJcTUwY0U0dS9DWWliaG1Qb2V1MDM1djYrM3RCdkRES1cxR1ZQd1ZMYXRPQ2dXKzV2VHlzRUg5Mzk4aklZZmpFdTVjYU1mbldyUU03Q0w2QU5NdlJraGEyUjRXNklwYWFVckFRSXMwK0grWDBqMlBEbXorMURIU1lBRnh2T3ZOY0Jud1BZS2MxWnBvMlNia3ZqWTZPM3BiRE5WNmxXK1BRZVdsUlNWbDRrWUViNWx1MmNvRmJSY21za1VENnJWL3hwaEhGaC9lWnBHMHZQMm14MUo0WDlCR2lFUUp1R0J2V054cVVBQkFBSGo2ODUyNW85aldUY21DbXFJOXdKOXZiSDVmd2F5VUNtdExwZEI5b0w4bmpPVXA2bXdqZzh5TWpJM3RRZmFsMUZOVTdQSmJHcnFoZFJFbXNPd1VCVHQvSHlpRndqeE1vNFprQ3p5NC9PVmhoYTA3dVFRWUMrT3o0K1BnUWZPbDlubjIyaHhsdEZXcTkrRkhSbjVya3NxQ3Vhekc3VlZaQ28yZGczNzBFWGxWOVMzUUN5eEVOTWpub1p1em5Ib2JVVnpyTS9zQm81OVYyQ1ZQMm5vc2tJZnpyNk9qZzkrQmJCNzNVYUs5Mjd0elowZGJCdjdHQWVaaThXSEtxMk1qTVlxYXVvQk53VWR1Yi9uZjY1UEUzQWpmTUlLSE1mUVB4ck92dHo3ek1qRzhYYlRXU0w1ckkrZEhqQ3ZrdCtPcXJsbE1ZTHkwS2tBRzdLTHFObFp0djVNcVpPVndvc1ZISXlRT0VidTNvNkJocFVQTENTeGxKaTk3ZTNuN1NubEIrVUxyVW5oZlRBVktTZy9CRllQQmtBeE1BVWRsVnlQOTB6dTJQVzlhVXpHR2lTREtnWGRXQ1pPNkNCWDlzdEVzazV4YmJkTlY1cVdpU0c0R3pUOWZnN09lbVRkR3VTQkIwUmJmc29lNEpGZjVreGFGcTJlVWsxNlBpNnBVeU9HY1lBMmd6U3RxYlZmaVpaWlpFcVMyWXdjNE9DQmZOcXFIcW9NbjUvNWl0d3VJMG5SMVlidXNId0FMd1djYUZGM1NWTGxwOTdWLzhKbjZkU29YN1BSNnFuNS9mUEREUVEvRjVxRXUxOVpLcUVrMGRETU5yWFhiNjNYNGZ2ZFREWnAyY25uNHhqYy9McS9yRy9MSy9VcnFxQmVZUFplbXduTHQraHU2UER4NDhlQlN0WFlFYko2LzZyeUh4TmhvM0kyckJURHhIRVVVVytzVG82Sm9mNWRiV3EzVHJLSTJYRmpTVzZYUjZGWWt6S3lUU3lJL3J5bkgwbE9Ba2ZuN1BuajErdEhDekpDd0FNR2g3aHBHN0tydXRYQ3FwdWVpV0tMcmhrVzZhbWJML2JERFFjd0E0TnJiL0ZrcmZUUGkxS1NkQWVsRGJxbFgzUVd2Y3drUU9mMkRnL2dDZUs2Z2hyWjJFSUtkM2pvenMvVTBOemo2cXJXZm5BT0hPaFJhT1dDdFVhbC9sK3lVaFlpaWNTdDI2UWdLVlhBVlVXMkQycVBvbWZoY2x0ZUkwbHI0eU9USnlFM3oxMWF4dUg4L01uQXZEZlJVbHIxaTJ5VjNTOHMvK0k5SnRZY2k1NmIzTFRMZTFlZk5BbDhCSFZUNmdaa25DNDlyMlZnS2hiNDZNakp6d2VLaCsrOTFPUHAzaytmVnJnV2V4YndXQVR1N09VSHl0NSt6elVnOGMxdC9mZng1Z2YwMHltTk80aFhtc3Bib2ZsckpkODM1UFNWazR2V3R5YUdoZmkrdHdoR1Y3Qng1aHRIODAybWtTR3BHOHlwSGZ1OURoYTNsVGZMMjBrT0o0YVVHQW5BMkNiUUxPcXg2dDVZeHBQb0plUkxoQlNDZmhabjdwbDcxcDlsN3JNNW5UUVR5NSt1bVRYQ0pCd0h3bmlSRDYwSUVEK3liUitCdWVlQlM5L2x2T0hVdlFTVk9RU0s2aG1HUkZVRjMxQU5qWkFmRVZwSFdoNkJUS3VzVzEwU1JLNTM2b2NLWXVSSmVXMHBXa2RjMEdMU3Brbi9ML1hkMjJFTmg3NE1DK1F5dklSckMvdi85ZU5Od3ZLVzZ4T2ZEbmptY1ZmaDYrOUg3ZUhnU085d0t3QlM1di9Vc05VU3MzbVpXdi9sRnU4a2RqWTJQRFdGNzhWK2hZWmRlUU9MT3loSVpRMXNDU0d2VGRRWWZoZ3U5N0ZhK2ZIK3Z2NysrbCtGeXlmczZxeE40cmJydDY3K1RvNEhmaFd3ZTkxS2kvbVV5bTB6SDRDNXFsSStMMnZHbXpDMkhNSWp4VEFOYk54K0NGSk5jNitPbk96cmJQWWJra3IxTDRNTW0wMEpEa1ZjNFdBTkoxNGJUOXBKNWcyVXZqbE1kTEsxck9FT2RRNmlvOW5LZWMwY09GZXJEbmJuZ2RkTnZNek14K2Y3aWJCOXl2bFI1SjJBWFZjNE9VRlRGRlpOM1NIZ2Q4cGQ3UlFBVkJBNmFPcmZxWm9CdVNKWE9QU0dNbDk1VGUzalA2a1NPdmIyTGcxSnVlL2hNam55RGtsMXFyak1pM3VuMXdjbmNxcTllTmpZMGRRdlhWTmdUZ01wbE1KOEVIejFZSXFacTNwS1grd0p3THB4RHFJMWc1L0ZjT2dKelpzMG5iaE9UYVlYTVZRRDlnR0Y2SDF1YmVxTGZOa29QdW04dS9WNXphSysvdkdVOG91UDRVMmVhazdKcExSOU9WZjUrMFZPVTZwYVVTR0RYcE80VmZBek8vOFhpb25sRkk2Zy9NNmxsOWhWS1l4aHpjVFdIV1B1Z1gza3M5Y0Znb3ZvakVzeVhub1BnaWJxa3BzMFZ4R1pleVlTSkJGN3A5THB4NVk5d1owNnEyeUdKN3Y5TlNmQzlwL1dyc1lJeTRnaHlmaVMvb2ZTVm1DeXFRbHhhVXdIZ216WElIam91VEVwVzBpcFU2cy9yT2dRTUhUa1gxalpjQ25tM2p4bzNySUw2RXhrNGtPekV2VWhMcTAza2x5bzIrcVJRQU8zVG9sbnNBZlM3QmFoSUFNQ2VJWnVmQlpxNXFkcWZmMjl0N09jbS9KcGxhdkNiRkVGVFZ4MWNrU0xtUGo0ME5mYnRHWFNBQXpFZ1BoT0ZoOC9hVWxhaEZlWitKNEpTVUhWdEJOZ0pkWFpsdEJqNGtZWE5OU1pEMHBmSHg4ZU1lL00zWjZIUTYzU2ZnZ2ZOMXVvb0N0ZUtUMXdXUVR1NElIVzljWnV0SDUrd2NBSmRFRkNnVkxGcWkycWZjZjM4UnR3OTZQRlNucytLZzV6T3hIZVRjQmhJVWRCeFp2V0ZpWXY4Z2ZQV1ZseHB4V0ZkLy8zbUEvcHBnVUxSVmZFbGJ0UkNyc2ZRakJjSzVUNHlOamQzYXdqcE1SSzJYdmJMVWUwQ2VHYlVOenJaZ05pSzJvT1NPU3JqQnEzUHJIa0l2TFhib28zM1RmZWFid3FvbjJSZE5IRGpuUWpuK0FOVy9nSmM2QTc2T2pqVVBBL0NnMnFxdnlqUHVUbTVVTS9qOEtmN2NVV1ZVTnZzRnVmREd1R0luSVljdEFRVE5IZzVjMG9ibUkzTW5BTGNsaytsbUt2VldNMjZPQ2ZhVEhDL3ZTSmljdTNVYWVIZjlscHFYa2JZR2RVbkNGbXczVkZ5eGQzczJtOTNYaUJDM1NmUURiUjE2T01nTEU2eG9pTUNmMDNpbzhJZmVOTTlmL3huWlJTUXV5TkVWRnA0K1ZaT0xGaU1Lc3B1T2Q5anZscEZ1QzRETThFZ2pWOFZWc1hWWnNOcnNTclNQa25OeXkyN2k0eWs5SzBEd2tEa3VUeVk2Yll3a0JYMWhkSFFvMS9Mc0U1QmVxc2Jpd0s3MmdQWW5aSzUxc0VLYlVCS0txZENQSWl3bTk3T1RoZyswc0E0VGdMcTd1N2VJd1lmTStCaW9ZVzJEK2ZZQWtMNDZPcnJteDk0ZXRLYjRCRllMT3YwdC9mM2JKVnhXSDlER29nQ1owRWlBOENhLzdNMWg4SHQ2ZWxZSGJmWjBNMnVQa2kxaVVvUDVJdU9PTDQrTkRkNklVMHZPTEFDTWVGNzR2N0hYVDRpaE42b3FBWEI1Zi85ZFp6VlpvQktYY094cWIzZDRGUms4Mk5YazlNdmxsTXBSNGVGTEI0YUc5dGFvQ3dUZ29rbVBlc1M4TjhCNnFjb2l6UGZkeWNuSkF5c0VvQWhBU3JBcm92a2JUT3J6UnZhQitzM2t5TWhLSWNjdk02aUJCY2JIa0phN0dlZmk4MVpUVGlaK0FvRnluNzV6Nzk0aldCN1ZiL0YwM2N4Rk1ENi9xbWwwaVZscU90SW9ZV2dHNGZVZWp0VGxyTGllbnA3Vk1ENlRJRlZWc3JMc2w0c3FGcDA3N0p6N0FLSTJKUit3ZXFuSjF2ZjFIWDBrcGVmTVhpWVhHOTZiWDN4YmtzVWxINDl4L3ZlYXBZR1g1TjU3YUhoNHJFVjFPTGNhRnJSMS9DV05qNVVRZ3JBR0l1MFkxRG80aDgvbmtiZDdlOUNDb01GTGkwbWI3Q0UwRHRTdkNxZklOYS93dzVHUmtiMytjRGVIdzNUV2ZpbUFLNlVTazYzcVk5ek55UjEyQ2ovVkpFa2NBbUFvZmxQT0hXRkMrcWlZRlpuRzdoRFpCemNqNk85Tkgzc0d5WmRLY2x3NFc2bW1MUytZMEhLa21aeTdiUnJ1QTZpZHFEdDZiSHY3TnBKbm9lTFd3VEkrUnI0T08zZVN6cjdSSkRyY0VGL2VuZDUrTVlsSG9RR2s2Z1J2QURBTjN6NDRxM2RidG1TMkVucjQvRm9TRmNUUFZibm9PTjByNSs2ZUNlMjY1YlIyQU1CQXo2UUZBOVZOb1dMZE5Uei9PU245OE9ESXlPMGVEOVVIY0FidDdZOEdjWVdUUzNpQ3JrQ0NjSHJmK1BEd0QrR25wWHFwRVl0M2RlM1lxb0QvajJZZE9XZFlrM2txeVlzVi9aQkdnOVBYVGh6citHSUwyeUFENFBveW1VdEJ2aVNpY1d4NEhpS3F4cFMrYVFpLzRlMTVpNE5lTHkwakRrQ0toa2ZORVZyWHEreDYzdE5Ra2loOEIzTzN5UDZBbjBLSENjQUNjMDhIYmJVV3RiYlZkV3Rpc2xyOWNIeDR4MCtUZUlGcU15d1RJNXQrQXZMYXFMZ0J5VldYZ0NEeHhDMWJ0cXhGYzdRUkdnRFgzWjA1bDRaWEllSzlxbFBFVm5KcVY2N0M3NU1IaDRkdno3TkJOVW1LUElkZ1Q2NWpzLzZhRXU4aDhOc3diTCtoU1hTNElXY2tDTnl6U2R0Y1ZVdEQrYTlqenVta0UzN3F6ZlA4ZzVQcURIYVNUQmZtNnl0MEhiOVVuakh2OTV5enp3SnVuRG1SK3UweTBXMEMwT2FCZ1I2U2o4QzhFVjdOOHY0RUovd0VjOWxIajRlcTMyc0g3R29IK0FMU09wQm85UldpNnJsUSs2YW45QkVreXh2cVpXV0lncmJzUzR4OElBUlhNWVlwTlU5TFJUQ3AwZVRjWk5abFgzdjQ4SjY3VzlRR0dZQXdIcEwwSmpPdVQ3S2pvaFIra2R3UkVXOFpHUms1N08xNTY0cFBZTFVZUU42OGVXQUxnWXVTdVdDZkxkdW5wRHREMDYvOHNqZkh2dmYyWmk0RDdmY2xMU1JWcVdjTWt5TTJ6QUw2YitEN3pUSzVMYjZsdVdHRzBPZmtYSmpnKzZJa2tIeGdSOGVhZXhmSzZweUs0QTZBV1J2K3htaG5JS3Erc3ZxOXM0S0J0Q05CSisyZG1YS2ZRSDJxcnh5QUZNREgwNkk3OFlUV052ZWNYeHdmdi9XT0ZRQlFvbHZoZ1lIdEVCNlM5RmxreE9qL2k2bmpIZDlkSmdtVXV1MkQwVDJBdE5NV0I4cXM4QXl5cERVVWRHTUxCeklGejJ1SCtGU2FYUmduLzZ4Sjhnd1IrYmR6ZDdoc2VKMVg4ZnJzZFZmNjdvc2czRTlRMGdrbFJ2MVgrdVRCZzhPM3d4TzNlNm5SejZiVDZaMGtub0VpU0x4aWxMSUVIQVVnT1oyVThMYUprWkhyV2xTSG93NkMzdDUrUzJYLzNXZ1BUL0NTclZRY0lVQlpDSzhaSFJ6OHZyY0hyUzArZ2RWaWpyOTlOUzRSdUMzQmlXeFJnQUxjTm5XMC9UWWZvRFFCZ0Fha0FNOElhQnRRc2lLb2FDdFlSWHNQNGRyalI5dS8zSXpCa2N0bXZ3VmdyekV4dlNTaVc5dlZvaDdlQlBwUEFPcnQ3MzhjZ1NjVUJQdzFwWmFLVGlxTVJ3enJQWk9UUXprUzlKb2RmVjlmWHplQUJ5MnB1cXBhblFXU29keGhsNTMrY2lWUXNkVjlRMHIySURPN0lPRng5SVFrT1gwMm1nN3Eyd2N4eCsyMm1zQVRGL00zc1laem1jK0pNdHNhbTNVaHIxMG11aDM3bUowZElCNGJWNVNydUgwcXFKQmdjaW9vQXBCMDh3VERtejBlcWd1ZVljcFN6NlhacHBqYko4SHFLOUpKKzZZVmZ0d3Z2WmQ2K05uUTdNbG1kbmJFUTV2enM4VklyOHA0UnBaOE9aRTB5WDEvZEhqd1g5RzZ2RmRhUHpDd2dhbTJmMkVRUERKS1h0RWF3SFNRYjNxY0VTYUgvMTQzdFA4RE1aNzF0cnlGeFNld1dzenhVM3kwUlgzWGlXYXZRK21HWlhURDI4cm5VMTFkNmZNTnVsSUxiL1ZWanNwVXRIVUVSRGozdVNiY2V3Y0FvNk9qb3c3NFFZUGM3c00yYmRwVW9KcWlzWUh4NW9HQkhzSmVaMmJya25rdkM0TmxSY0RmdVI4b25QbEVQY0dmclAxaWdIM1NiT3k1V01PS1ljRHkxRG1xUjVlK1BqWTI5cHNWRUhBU2dOdTRjZU02VUUvUDNkZ21HTXhUMEYyT3FSL0F5enpkTnV1NENNQ1p0Vjh1RldYNkZVaUkrRzEyU2o5Wkpyb2RUYVJLWnk4amNObmMycW0yNWFyM202VGRpUEh4NHg0UDFiN1h2YjFucEJIeDlEVUdOanQ5NnVESXlCNTQ3aXN2TmVydXhwMDcxd1d3SjRINWZwWWxIbEx6N2FJNTV5YmgrRFpFZkpPdFp2Tno5akpZSzd5SnRLdms1QlpUM3pEaE55Rm5aQkE2ZlExdTVwVzdvN1gwdG53WkJNaGVXc1FJWkRLWjlTQXVUVm9uSXY0clh0ODRlT2lsaEFNTFV1M0JzMmxCQnBLcUsxb3V5MGJua2hZM3pjemcvNXJVdUJzQXllR2JUZ29Cc0w0MzczUFZSM0ViNFVWdHEwNjcrQlNkQXdMZ3pwMDdPenFBVjF0Zzl4YVNyS3pKSDRWRFNnb1I2a05qWTJPSFVKOHFteWdCRC9mSUtBRXZOenVJb05URlphSGZGVXZSekd2WTRoNEF6ZElDbTNqeXBLTmo3VTZDOTRrNmpKUFNWU2t1THZwS083TTNld0M0WUNQYTdBcWFiWXFDWkxLMjRHV2h3czhENHpmY2NjZlErREpZLzVnUXVXdE5ZUG9MV3JBK1dydDhOOGV5bmtZSmppQ1VVeGc2WGVmeFVIMXNsZG5NZ3drazJVV1F3elBtcEgwRzkxRy9kMTdxNFFCWFRXV2ZDT0xlc2VwV0FNZVg4QVVzaUpjRXdNbnBIMFpIQjcvYmdsaG1Obm5WMTU5NUhjMWVncmtMV05ZUXExUzZiWTZraFU1ZnMyUGhDMFpIUjBjOGRsa2U0aE5ZTGVUNHA4THdUSkJuSnRrK0dQLzNEbm4rcTZaSTFuUjFaZnBKWEZQVTJLcVNyVldwbnpIaVZ0SUg0cGF4NWpYdzRmU1BJZTRoU2RYdFJqV3ZDa21LMW9KMm1wbWVqbE56YzBzQTd2akptYWVUOXBLNExXeHhVcWYrRmtBazZlQys0TnpNNStxa0IxRUorZnIxNjJsOFFFemlVMTFJd1pLNm41dWdPUVczc2dqR2d6WjdQSTJiZ09USTJ4bGRiaHdUOE9uQndjR1RIZ1RPbmROME9yMkt3SzVrd3ljUUVrVCtmSmtFNUFTZ29IM1Z3d0U4Wm02cWN2a2ZLMm80VEs1OU1Iby9PdVRvUEI2cXd6a0JMbW1UOFJyU0FpVFlSVUFvdnR6aUo0ZWpBU1MrK3NwTFRYYXF1N3Q3QzRnL0o2MGRWVmZDbC8wUWtUUTQvZXhFZStxRExlaHI1NUpYbWN6cmFQWXFnRUhwUlVqRUZEZ2pUZEJYVGVFTGhnOE5qOEhUSGl5cklObEw4NHNBTUdEd2VDTTNJTG1XSnBFR0FPUE1aZ2NyVFpGNHFmdWVvNjJEendMWmh4eXhMUmZZKzRWRDQ1WlVpNEtrUW80azVmVHI2U0Q0VEJNN1N3ZUFZMk5qdzREK002YURZcDJXdWtqRWlBZHUyWkxwYXJDOU5BQ3VweWR6RG8ydkpobGdkdUpvb3RQR0hVbVRDdytRZk5ONC9WcG1DQUJyMXEvZkJla001YVlQc3N6cGErWGlITVVjYnNCdnlQQ25LOEIrUlVIWnJsM3RBQzVOT0orUm0zNzN1K0N1WmRPK1ZxODlRRWplaDlEajYzdTVOTjlHdzBCQlkyNEszMXN1UWVFdTdHbzM2TVZtU3dXRnBUcGptYWpPUTdyQnN0bDlYdWRyUHlkOWZSUDNKdkNBNkp5SUNTMW5WRTBPN0djNDgvR2tsY1RMeXRCZFMzVThtK1M5YXVlWTVGSm1YeVRNT1RlUkZmN216cjE3ajdTWTdja2xpRko5L1puWGtmYTNlVGlTTmExTnhYWUFGanA5RFdINHd1SGgyZVNWVDJRdkUvRUpyQllCZWdNREE2Y3pJamxOM0pBSit1M1kySmxIdk5NL3RlZXl1M3RiUnRDelNhYks2NUtvc3F4Rkl1UVV5bjNud0w1OWswM3VMQWtBMHk3N2VTYzNDYktDQkVzQlpuQ3BHRms0NVFRSW1mWjJuTnZvODk3VDA3UGEydmgzWnJaRFFreDRXVWNudi9nelJ5UTdVaWpoWGFQNzkvOEtkYjYxRHNpSDBXeDl4Tk9VeTE0UnBRbFFpNVNiRmVxdXl2M002Ym9WTWg0NUNncVBuRGdIMENVSnQrUkVCc2pwUjBOSGhvN0FWMTh0TU5qQnZXRzJCZ255NVJFR2dEK2ZtQmhjTHNOVmRIZjYyTy9MZUlXV0pQTm1RWldUa2w0RVFlRFA0MlMrdjdtdnplT0FRZkFrMGpaaDNnUXkxZitvUkxyeDhSSFBmZVdsZGl6dTB1a2Q1elBnSytybjkxakt6VXFDQ0x4elltVC85MXZNN3VRU1JHMzltZTJ2cGRuZnhwRkxvM2xrb3haaXA2K1p3aGY0NU5VeURwUzlOSCtRTWdQc0VMZ2o2U0FsTnFHM0FOL1AraURsbElJOUJlMzRBelBiR1krYnRZTEIrNkxFaXhZQS9xWHhPU1BPcDBPaGdvK2hzV05CcWdiQzYwWTZieVY1ZlhrSXVNVHRmZkZQRzAwak5Gc0w2dW9HQm93R1FOYlc4Y2NrLzJCdTFIQk4weVhMV1FyUmFFNzZ3dWh3Mjd2cXFBTUU0SHA2ZWxiTDZlRnpDWGlWK1VaVkhQVE5UMkxGN1lNNktlcjdTNkhFWmVVZ2d2QWhOT3RLRUNRS2dFbnVXRWo5TnhJZUlOSml2dGx0MkxCalBRMVhzZTZYU3d2S2F5VkJ1ZzZ0eisyV3U1VGJJT0lQalZ4VnZ1NnlZYWFZaUZySlFkdmpWYjMyL1U2bjAzMENIMWUrdmE4eWNBWG9uSnNNNFQ2OWt2eUFsOFR3Sm1IdStRSFpHL3MrcTkreFdQUnQxRG9vL2N5T3VBKzFXQXhtQUZ4dmIyOS9YLy9BeHdUOGJkNWFOVGg1QlhPaCs5cEpuN3hhMXVJVFdLMnpVZmNtdVRINUlFV0NCWjd2NFJTRHZhNnVIVnNCUFhuZVZwZUk1ZWNuSjVZQWd3dCtIUlh5Njc4UGpPN2JIZiswbVEyOUFOZ2U3Smx5RHArUlhGamN5VmNBaUV2eFNoRVAyNWhPOStWZU8yRjdIUFpsTW84MTRxL252NnVGcE1aMU5RRWlZQzRNaDdJSzN3RHNtYW8zY0RvV0JKMEN0NVJXNEdJYmtyK1BSWWZYUk8zUHhGNDNNL09kaGtXNXAvNHN3SUgzU2JneU45ZEs5UjNNek53SWY3RXhUL3RXclFwM0NiZzhtY3VsMlZIcWxIUUhGZjdQY2xtM3JQUklrdmViNDc0cTVhZ0tqU3BOdUJBOUdqVjJNRVQ0QzYvcXRlKzNZK3FCQkhjbGZna2JkZHAvZldKdzhOWVY0Z2U4SklqRnU3dTdCd0JkbFV5eEp4ZkhZTTdkQTZmWER4MFp1ck9GZkcwdWVYVTJVMjMvYmtIcWFjQ3BxcnlDT2VkK2NQSjQrSUpEUG5tMTNQTWlYcHJjZ0xvdFc3YXNKZXhwTWI5THdoWHp1c05OWi9mN3BUKzFZQy9WNFo1STJxWHordTNMcFF3cXhkZXVSVCtsbkNabnd1QURtTHZaYncwSmcrOUEyc3Q1YllUNTdZRlZucFo0TFJVbGRBRnk1eXF6K3lYc2lBMkEyOUxmZndhRnQ0QzJFWXNxWFZnSy9GVDAyZklUUHdBa0lTdnhiUWRHUm41VFo0ZFBBRmpyN040a0Jxb0xYb3ExRlM1TTVRQVFmalV4TVhGNGhmaHVkWGNQN0RMZ1lkVXJSRG1CUE16Sm5YRFF2OVdSRjIwNVNMUUdwb2NiMlprY1dLY0FDc1N2WjJabVdwMkxLZGZPbFNLREo5QXM1dmNyeEllMDhKd3ZNT2dKSXlFYVFmSzNuSm5aN3hNaHRkc1F3ajJhRWNscTVOZFU2czlWOWV0STdwaWtqd0VJNGRzK3ZkU0lYZHJhT2k4RG1VbDJ3dTljQWtiQ20wZEdCci9lSW9rWDV0NW5kL2ZBTGt1MWZjek1IcWxvU2pqUXlPUlZOSVRLWEtqZE15NzRvME9IZlBKcUpZQmdMMDF1UURzN084OFJjYStFYjY1eUJNaWp3TXlRQjJ5bjdEeTZucDRkQTRSZVRwYkJkN2d3YVZVc2tjV0NFRkVnSWVqR0E2UEJMUzIwNXpHWisrMmpBbjlZTUtLcGhBNnNBRFZXM2tNZGFTbUpEMFdkZWh5SzdLUjZlbnBXdHpONEl5MjQxNksyMGRJbW90clFPNmNEQnVHTGh2QWpDU1Fub3VERjhHUmFzQTUxYlQvTEZhY1JJQml2MlU5WFV1QmlLVjRHV3I4U25NUkdFbkM2Y2VyWXF1OTd2ekQvekc3WnNtV3RCZmFvM0R5ODVGNUxoTndYSnljbmo2SDEyd2ZSMjVzNUg5QWpoSEl3VFpGRVZnTkNJeWY4M0NkdGF6OG42OUxwMHduZXEzTFhvZUxPcTVpdEVxN0xUazM5ek5zcUw3WHFMWGJ0YWhmeFZDTlRDVTc0alhBbVNDZmRjUFJ1ZlNCQnJGbi9OUUpjWDkvMkM0TjJmb1JtbDBrSUFRVDFYeXVWK25JMG1vUmJLVDczd01qZWVsL0VlbW5TZ05sTGswdFdsaWF3cmpHdnBsdkh4OGZ2Z3VjTk9CVVNvZmxVK0h1a1hhaHFvdEx5TVYvTWZlWHVrZmh2Y2R0WUt3VkdCT0RrOUkzb3RrY0c1ZE9Sby96a1ZZbWY1eFVxM1RlZFRpZlJ3anViYnJSVSsydnplSytzOHFlb3dQOGpMbnNnVFhLM1E5blhqNHlNbktoem9FWUEyclJwMHhxYVhaemt1U0ZJeUkzUlpmOXZoWUJyMTlQVHM5b0NQaU5PZENjRnJobWJvYzhlT25UTFBmQVZEZk1PblhWMlppQ2NDU1IydVNRQWROSmhsK1VOeThmSDhVVkcyenFmekx1U3R1S2tsbnYyUFpvTDNRemdWaFNmWGxMbjVEVFpGU0xPSzk0dVdrbmdXdFJ4VTNKWkozeDBHU1I2dlRSQmNtWnJOQ0RsUWJFWlR0SUd4SDdXZmVSSTFEclk3THFiZTMvV204bThsQUgraDJhWHhzTTRndVMycE5Dd0h3cWtTYnBEb2Y1c1pHVGZkZkRKcXhVaFBvSFY1QVlVZ0FYRVUwaExJVm55WEVLQ3hCOGphaVh6TjQ2bkFPaGxNcG5UU1R3L3Z0QXZEK3d0VmRpc2dnOFJJbDZWSDQ2UERINWxpWFJPODBaREFYNHB1VHRLZmRhbEVqbmxuQXVDOTNia0F4TUtacFFlR0hnR2pYOVkvZk96MGo5UnBHSHVCS0JYam95TTNKU0EweWNBZEp4MldpK0F0SklNOGtrSXVIbGtwSE80VlhXNTRzMXVhenNIU3JReVZ6R3d2bHVoZnVaTjlHSkpPUnNRc1NtNUFyaW9xb1RTajhiR0JxOXZjZDAyQU9qdHpWd082U25SaDZnMktHeEVQa21IR1FaRFhzdHJ4ckJFWUk4eldnZnFlZ0cwb0FLRHBJQmIyMDdxNjM3cHZkVEZ2cWZjSlNRM09TVnFiMXhFZzZIaEdlbWJMV0REY3hkb0ErbUJiZjlpNEwvUWtKbC9HZEVROUQvbkN5WG5uRjR6T2pyNFZmakU5WW9SbjhCcWN1ZmYxZFYvcnNpSE5jQVNNSUlDM091WC9wU0pwa004bHVSNThVVmxtVGZUZVJwVG1veDhkdElKNXFxdlBnaGdwZ1dOdmdCd2ZIRHdkZ2hmV1RRQnJOaWtSbFYzRHMyc3pSaGNYT2NBMGdDb0w1TzVIMmp2QXJpMnRrb09WcW9yaE5NN1I0ZUd2b0FrYjZ4Q1hVRmpPcTZRWTFMcUlLY2JraUNnYjFMZGh6RjRFczAySTdtTERaR0VBWU5BdHBWYWpCdTFCd2JEVTR6V2x1QWU1QWF0WGgvYjZWYlhiU0hBOHkwSXVxS1dIRFZqWlpNWUpjUi9GNFluOW5xOXIyMHROL1Nla1NaMC82S25xRDdOVWhHSG10d1hCZzhPVG1DT2E4MkxsMnBzcmx1L1BuTTZ3ZWVCWmtpMGVDQlhRcTFQSEJ3WnViMUpkWmQ1R0ZGOWZRTlBDZHJhdjB6anl3QUdsWGNOMU8xdGlTVGg5QVZscHorT3hWTi92Q3hqOFFtc0pwZjJkbnUwbWZYTkkvTk95b1pLQjhWd3pLLzZLWEVPMnJwMWU1Y1ovb3prYWl4SjRGMUJQbU1oTDFZODFRclN0OGRITnJkcTlWVXVHVExqNFA3YnlTMU93cW11cndWQmo5aXlaY3RhMU9jV21RQ1VBVG9wdm9hMExkR2UxNk5NbmNXL292ODVncFJ6UHlIY08zT2dKRUhsM3A3Z2xMeW9mTnk1UXhTL1hQMWhhUzFic1dWTHBwdlNsUTE0TFRpNGI0eU5qUjJHcjhyTngwM3E3dTd1aC9HaFNkczRPWGRQcU5SM1dseTNEWURyNit1N0g2RXJGVS9IbUordlZ4WExVL3NOUlZGeHVzSHpYOVZ1UHpxRDZYTUZMajNBby9ydHk1MlRvMDZ6MVZlKzVkTkxUWHE3ZXAwN244QWxDWE1QTzVKMHpsMGZUcVgrdVVudHpDelhWVHE5NDRLK2dXM3ZSV0NmcE5tRlVnNDdSaU9nR3l5T0VmYjc2UW00UDRsdGRTdkdNbDVxQUJWZW10Tmd1RXdtMHlrZ3ZybFNrb2N5ZHcwNmlwbVpRVzhFVG8zRFRIVzRKeHVaNnlPdmp6ZFlTQmxCQ0lRNTZTVGxQZ0RjMElyVlYvTWwyL1k3QVlOeFBLU0tWNjZNSmsxRkkyZ3U3dWhZYys4NkFXUUNVSFpnNEZrQUhsRWROMGlWR2lGQWNzZEJ2R3RrWkNTcHhFVHVGckdOUkNacDIrV0E4VENjdW4wRjJDNENRUHNxZXhDSUM1TnVIM1RPWlJIeU8yajhPT3ptMzRoVXgvMEpiRXZ3Y2ltdUJOSXZwNCszL2FxRmRac0F0RDZUT1oxQjZnMW1RVGVLMnJ0NkpLSnFlbnh1a2wzb3dPdDlNcVIyOUVIeXlXYnNSTGxWTEpWdW42Q29tQmcvbno2KytwY2V2M3FwaDk0RzVPVUFWeWZzKytMS1FYeCtjbkx2Z1NiRTRnWkFPM2Z1N09qdHo3d1VwaStiMmN0SWRzYkpLenRGOWpHWHZKcUF5Nzd5MFBEc3hFRi83bGVRK0FSV0V3Y3AwOUl1a1ErZjMwNldxTjIrZFh4OC9FNFBBQnErMXk2OUxyMlJsdU8rS3VZd1dhTkd6UVZGaFBzL0FOOUhhOTh1T3dBY0g5ODdET0g3WlFQZ2dqeVFKWmVYMGJyWkdnVjZSQjNPaHdGdzZYVDZVdExlU0dON2NvSFNvdW9FMFdnQ3ZqSTZ0UFpMU1lPUGREcTlGY0M5RXRjRTRYY1RFeE1yd1haRkpLbDBEMkd5clEzeFZGcmRtSnJHTDd4UFdMZ0hPenZNZUJWcEFSS2RQZ2dJL0daTW9OK3F0cG9BdE5ieEtwQVZKT3NybmtKWFl5WWs3NUhTVVlmd2RxL3F0ZTM1dW5SNkk0Vkw2K0s2Vk9SM3VTU0FIelRocFU1NjI5WFZ0VWF3eDVPSlZZN25rakIwMG85bXB1ekRUV2JmYzRqWWRYZHZ5MHhOWno4YW1MMlh4a3pjTHBoc1I5RFNsc0VrWmVIYzM0K01qUHdBbnJSOVJZcFBZRFd4Qkk0WGtWaVBCdDErVTdnVjBRaDZmK1BZV0VjQnR5NTRGTUI3TFYxOXhTcWVmY0UyUzFrbmZpdUJxWE9uREhCQStKYmtRdFlLWG90emlDbCtwWWZWMkVhWVMxN3RWSkI2SDhrdUpjWU5wWVVmek1WVEIyL055cjBCMkQyZDRQNFRBRUlFOXhXNUk4RktJVUp5UnZzK291RVR5OW1uUlp4cGZkdlBnL2lraEZzYjRzWGxqL0k0Wlh4UUdPL0J3TUQwR1FBZXFvU25EOHE1dTVCMTM2N08rRGVOZlhZRDZ3YzIwUEJpeGxuUmVaOWx5WHhXc1F4R0xabVFvcFZlOFFVUEJpME1QZjlWamZaL0hkck9BRzFiM1d6VjRpMVRuQVRZRTV4MDMvREw3cVVlZW91MnR1MkV6bEp5ZGpkWDZlbms4TzREQi9aTk5wR1B6V0ZvOVdVeVQwNjE2MHN3K3dNQnlPTzZPbFcrS0hZV3lzcnBOU01qUSsrRFQxNnRhRERtcFFrQlh5YVQ2UVQxT05LU05tcTViRFljN1ZjdERKUmJOdm15WmN1V3RXWjhzWkZ0NVUwZVpMVmI1RWdEaE44b08vMlo1UVRPRlU3L1dNQSsxUFBHYkVHbGxnUVFPTnM2T3JaVmVVNElRSnMyblgyYWFHOHcycjNqTW13bXAxNnp1aExwbFhCQ1dmek41UER3elFrNy9paGlNVHcyUVpMcmVQS1VSdURzYXl2RmFNamN2VW4ySnU4VDNER0YrbVl0Qm1lNWluTWNBSEE2RXA0K0NPQ2VJTkJrcXdlRTdqUStGTUJsY2dzU0diUDBWM2x1cjJUaGxCSWdVMWljMEJKNTNmajQrQ0g0eEcxTjloOFdQc2FJMHhNYzRCRzlqdE8zaGc4T055c0J0cGNXazVUc0lwQmJFMlJ1eVEyS3VNSE5wTDdiSkhabXR1b3FuVTV2N092UHZCSGlwMmpCdmVMRTFhbk9HVVF0Qk5LMG5GNHpPano0TmtRRkY5NCtyMUR4Q2F3bUJYelpiUFlzMGE1b3hDMTdGUFRyb09qMitPVnYrRjZybzJQMTQwRThzUEpLbkVyaVNzWWJMVHJxYytQajQzY3NFM0FlVFNNY0h4OG1lQzNMT2wyVnJpOWpXeW1CM05JR2UyaE4rOTE1OHRVMGU1cWtzSUUyV0NUb29BK1BqZzUrRWNtMldSQ0FOcWJUZlJRZjJJRFBOdVU2TURVdm9GbWV0c0tsMCtsVlpud1djNE9Ma213ZmxHNDhlZkxvdGZCVGZmTEZBWUNNVjV0Wkp4S2RUZ1dJdXVYWXNXTUhXMVMzbzBFVm1Vd25pQmNRVE0xYnIwVjNOUXZxSFNyblFxcWcwS3JVZTVZZy9CeWU5NjNtZlJmNDhCekFUTWozbStTeU1IeXJHZy92eGN0Q0h3dnNha2RnVDRtTEJ4S3o3NFJBNFg4bkp2WWNiQUlzUGp1OXJ6dWRmZ2dzOVZrRzl1cUk2K3FVVjEzTk9RZUNBdjUrZEhqd3JRdmV0NWNWS0Q2QjFheVdOR2gvRU1sMTBlRVVFenlqaXVzelJqRXpNN3pNZzhDbWM1WWJOKzVjQitPTFNDdXorbXFwUkV1aHJ6andJdUdjdTg3QzhLUExDT3hwMW9tRitvcHpicXBvY29iVlBMWHkxempIQzNRcEtyL3BOUUN1TzUxNWpBVjRHY0JHY2dnNGt1YWMrMzQ0bFhvOTVxWU9Kc3JkczBwMk5vanRTU2ZoQmV6WDhlT0hWb0M5Z0pudGduUit3bXZLcUN1WG56bDA2SkRubEZtQWwzcDd0NTBONmhFSkwwZzBPQ0xVZngwK2ZQanVGdDBEQXRCMGlNZUFlRmhSN2lzV003Y0ZmbzRDQ0tWY1M3WjBNa3NBS1ljcE0rejM2bDZiclpxWllRYkF6a1cyYWttb1VnRjJKUUh3dGluZ3gzN1p2ZFJEYjlQcHU4OGlkSDhsV0gwRndKeHo5OERodTAyQXcyUGZzck1qbmM3OFJSQ2t2a0N6aDhWVms2ZVM2eXAvdlZ4RTNhdlBUeDI3NTEzNS9tV1o2aUhqZGM5OStjUjhNVURtcGJtU0dnQlNncTRrR1J1VzVEczRCUHh1Ykd6TUU3ZzNXRHJYVHI4RTVJUGpzZUtXNFBLVEVDVjhlbVJrWkJUTHEyOWNBSEM4SS9nMm9WOFdKTjZzcXZLcVVMUkV3T3pTcm9HQmJSWFlVQUp3VzdkdTdRb01yNmZaYVdqYzdYNEVsdVR1ZEhLdmlXLzdrZzZHQlFETytCQXpXNFdrcTFUa1ZzeTQrNURCRTJuQjFnVFhWQ0RwbkNhekNyL3RMWFFCQ2ZRNG93MGd1ZW1EamlRaGQwczJhOTlzVVo4OFM0WnN4QXRJS3p6TlMyVlFQaGFEUDdXazRGVXNJUUlBR3BvNWVmSVdqNFZxTkNTR2JRQTJGbldybGU1MzBiL1hEKzRZR2hyMysrV2xMbnJMMU1OcHRoWEpKVzlFVWdLKzI5bVoraGxPWFlWekxrbmlNdXN6cDZmN1o5Nk9nRzgzY2tOY2RkVU0xQUVDQURNR2dMNUhoWCtjZDZtMm5GcUZjM3ZCUEgxd2VWOWE4RGRlQUtUOEVqUWY2RXVuZDV3THVQTWIwajQ0Vjg1L1czeFFQQ0ZlZy9aNS9mck02WlNlVG1PUTV6Q1NlTG1vQWtmdU9sUDRYOHN3MEJjQTNybDM3NUUxQTl0K0F1Q3lBaHErNUJFbzQrZVVCSUhiQStnTUFQdktQbDlBcXIxajFSdHBkbW5lK09GR3JJdElTS0hlT0Q0OGZHMER6amNCYUJkMnRkOXR4eCtROEdjenlSMEg1cldQTE5jYk9iZHAwOW1ud1oyOEFrR1FMSDZQeWdPL3UrbTAwMjZMeVplOFA4aHJMekVlZjNpc2Fva21vUVYrZTJKaS8yQ0w2alVCdUtDOS9lRUFIaVZKSUZqNFV5anVidGY4Rk1SaTg0dGNWVVJkRnI3SWt3anVoeE1URTRQdzdTbFYyMzhBSVBYN3BLMkM1TUFxL0YxK0JWN2gzNXVrVUZubDdML0hybDVxdE85b3ArR1JDZHQzQXFKZzM5aXpaOC9VS2RMYjNHdXFyMi9idmJLQjNrQ3pxeUFvcGpKcGh1SVdJZklNempuOWQzWUtyNXlZR0I3RDh1TzVtOTJMbkg1czNqelEzZDZlWFVmU0FVQTJteDJibkp3OGx2YzNzMFQ3Sy9uUStnUldFNG9Md3FzQ0J1bGM3ekdqZG83RURJVGtvTURkWEc2NDc2VStJTyswMC9BazBNNlozMXFSQ0dhT1dvS2NQajI2L0txdjVxMnBjL3FaR2JLeGJZdUNwb0pJbU5XK2hqTmp1d3Y1cURoeG9uSWUwOXVmZVJHTXowdHU0bUNSWkVRMGRmQnpLY1A3R2htUTNkbHpzanVRMGdsK1VwR2tuQWFuZ2QxTGhEckxRYmZSdm5ycUNwQVhKM2l4TVRzWkNhSDcvTzdkdTZkOVVEamZ2cVRUeHk4SDhJREU5OEM1R2Fmd0cwalFLU1MvVnVsVkRueUptYlZMY2xDUm9DaENJWE5VU1NwMm1sWC9oU2hnaloyMHAwWFh2VmtrM251ZFFlUTRLbXExZm90MndoRTBwL0RXa3lmMTQyVnUvNzAweUdiMTlXWHVMZUV5SkR4ZDFqbDNSTkF2VHhXV1FEd29MSlM5RU5SZmswRy81bm9tbXlFR3pFMGJuSEhRNnhpRzc1cVlXQlpUMHd2R0J3RFEyOXQ3Rm9QZ0tRQXZKYkJkYk52Q3VBS3J6WUxiKy9vSDlndjZ3akh5aDBlR2h1NzBQc29uc0pwT2tYdDZlbGFiNDhNUU5OSlU2QUN6N25jZUJEVE9VZmIwOUd3RzljYzA2eXhja2FNaWZxZGljU1RNT1hkOUFQZnA1Vzd3WEpZL1lidjJHMjJuRm8yMnFua3RaeDlQOHZGOWZYM3ZIaDBkSFNteHBnYkE5YVMzUGRxb3R5SWlNVzVVQXN1Uk1JWGhic0s5ZG5CNCtHU0RraEhSV3FSbU1rRFFsenovbFg1K3g5RFFnV1Z1dTZKS09ybkx6WUpWUW1JVmZORklldWR1Y0c3bXU5NGZMRGJJb3E0MEM5Ym5FZHNtY0lJSXlJMDU4dGV0akdXazRMRm1lT2pzQlUycGlockYveUh6cktuS2lYRHFGU3BGcmRhaHl6clhzdXZlTlBnbW13MjJCVzA0Ui9WTUJCVDBzdnoxb1VPejdZTmV2TlJtQ2dJOUlyQmdjNEwyWFZGN09IKzBZZTJhNjhZYjYyTm44VjlmWCtaK0lmaVhJSjVDR2hMMVoxWDZXaEp5b2Q0MU9qejQ1b1h2ZnpuWnlxNTArdndVZ3o4RjhGZ3o5dVhNSmZPWGd6WkFBTTZGVHo5Ti9PWGFnWUVQcDRiNDhVRU1uc1FLdm1UMEhGak5wY3kwOXZhSHduQy8vTUJQU1E0NWlrZ2Zqa3hQcHlaOXdOSTRvOFZVKysvRDdBSVY1RkVoU245ZjJldEptcEhUUjRlSFo4dHZsK01lT3dDY21OZy9ES2NmemkxWi9zZXRTMHMvNDdPNUU2blVCU1UyaUFCY1Z5YXp6VXh2b0FYcmtEQVhWTjZ4amtuYk5UcWo4SG5EdzhNM045ckpVYllUNUdva2w3QXp5VG5uOEhWRW81UnRPZHVMVGYzOXZTQWUyeUQ0K05ObE5LVzBYamhKdmIzYno0THhLZlV3eWlWOU1nQkl1eWVIaGtaYjFDZHI1ODZkSFRROGFaYjdpZ3RJdklzK1V0RlhibWp1N1A4WjF4RW50UGd4M0JJeENkTityL0kxSHBnMmR5SEpyWWxZdzlsL0NYTDRBZWE0aXJ5dDhsS3RWamxnWndmQlN4dmhZQ1ZkbDFmaHJBWjh2bG44bDA0UHZKd3AvaDlwVHdFZ0pjZmxXRFdPQnhTNjBMMTZWVWZiMytVQmQ3ZU05QzJ1K0J0NFZvckIvNWpaQzgyc1Q0SWt1ZmdybHJtZmtkWkJzOHNJdmo4N2dJOTNkM2RuQURSVDhySGh3TXhMRXdFL2hUaVg1SnJHQmJzQXlGdldIMnk3MHk5L293S2gzbjR6dm9Ca0twNzBrWmd6SUVGSXUxMTIrcjlYUUVBYVhWS0EzNVNiSmNXdjl4Q0VLQUZwbHFKNDMxSi9zMlhMcnJVcDRaL003TklHM25CRms3VGtqc3JwN3laSFJuNk94aVd2Wm9tYmFYemszQkNLSlBTYWdIUWIzY3dQVndDNFJpZDV1WkhuS2RuV0JuTnloN095VDZJNUNGeWJ4aThEQU52d0xLTnRMenBOcjA3N0hVRldmQmZBZEF2YWJBT2dreWV6RHdYeHhObTFxclNnV1BuMEh2Ry9OZjltbXRXY0pCYmQ0TnlMalUyM3RZM2s3N3VYYW95V25VRmpnR1F1TUVTQVRocHpwdS81MWZaU0R4L2IxVCsxRStCOWsyL1JWMWJVOVkyMHh3QmNiMi9tNHZSQTVxTXkrd2MyRjFIN0xLNURSSGx4dHd2MS8wYUhCOThjYzRRdFIxdXNkSHJnQlF6NGZqUGJMaWxVUEVBSHBNVmZ6UHVLZnhZbHN3REN6SzVPdFhWOHVLZG54MEJEOHdWTkJqYThORW5nM2R2YnU4a0NQaVlpaEdpZzFSQnUyNE05VS9BMzdnMHhYQXphbjB6eVBvVnZQZ3JkTVZmTDFhZWNWL2pPeE1URXdaVUN5azNabXdRZFNKSi9LZjdQZllCZDdRV2NCd0d3YmRYeGx4cnRDUTBteFJRSnl1bGRZeU9ESDBaamI2WUpRR1lkWjRONFRPSkRLTWlieHNiR1JwZXhYaE54TlF2RWg1RVdRSEIxWUpVcG9qY0VwWnZkMU5IZDhBU2g4NEtibnA2ZXpaQjdkTUxyNGtCUzBNUkpsLzFTdFhtYVU2MnZBRktnbmttenRZc1RHSGxqNXBaTVlzMy9xcGtKdE1qT3pXc3VsMjY2YysvZW94NExWWTlqMTY4ZjJNQzVhbEV0M3ZzQ3VsRHBUa1o4YVRkTkRBM2R0bEp3alpka0paQmRRR0JMc3RpTUFMRGJuTHN4WWIzTnI3cGllbURnaFpiQ2wyajJISktkVFVUVW5sc0dCOUlnZHdUZ1g0Mk5EUDVqbm5GWWJweFg2dS9QUEpmR2Z3SnR0U0svSDVSbkNHZVRXWkJUU0xNcmdsVDRrZDdlM3Y0V3hBdTF4M3JlYkRVUFNGWXFkUTZBKzB1YTU5VUpGUnZmVTN1c0w4RkFUK0RlbUxPbXJxNGRXMEU5WXo2Y0xzYlB4UElRZUdHazdtS1M2MXNaMnZ0V3lCb0xBRTZlUExtUHdoN21PbkNUTzdXN3VydVA5eXpZcklqM3FuL2JJNDE0dFJycmZKMlJKdWV1VlRqeno1Zy9rcmR4a3RKbUFoME4yTzNjNU5UbFBIMVF4NC9QN0tMeHFacHpCOG04VmxUMThwbURCdzhlaFcvSm1iY0hUSFU4bk9TOTQ2UnNVcmlKc2NYNndoMWpZN2VqOWRvbWNrVElEeFQ1aE5uSmcvUFF6QUpmeDRUZnpSS29acUdDUzVoRTFKTHNzVkNWSzc1bVRYYWJ5UE0wYjVNTEphNVE0R2NzNjFVRUFBN1hBWmlCVHpaNnFRZEFONTVOc3dESlZiUGsybDQvUERJM1RDa0p2WjJ0dXVycXlteExEMlRlSi9CZmFOWXZLUVFhT2tob3FUZ0ZlY21yTzV6VC94c2Qydjl2ZVQ1Mk9aM3J1QU1uYzdFajNnVGFXbFRmL2tlUWdSUWxzUmkwL2ZGS3RJRStnZFZFZ2JlSlR5UnRWU0VEcW9SWUh5UTM3WVFEZmdzYVk2MkQ5dkRKNUd5WnNrWGJ5aVV3NFVKZ3B5VytaaDlIQUY4WkhkMTcyd29CZVFMQVE0Y08zU1BnUjBrQ2RVbWdNQkMwdTBzWGJKYmJ1blY3VjBDOGpyVDFhRFJwdTl4d1Z1NFZZMk5qaDA0VkFDRHMvRm51bStTQW9DVDhkaVg0TVV2eGtTUTNZeUVaZGozUERVbEpkMHc3OXoxdnF1Y25aQVlHQmphUWVpSEpJTzV0Uzh4MlNlNm9tM0gvMFlKSmxMbnFxMEF2TXJQVDRrcHl6a2NjQzAwU2MybTc4cklqRlNPYzBoYVFjL2tRazV6QVV6SVpiSGs1WVd2TEVGaGJmYmZ6a3Ntc3lQNkRlNnRWRFM5ZThqRWJrT2tFZForbGt5M1ZId3VTZE5KWU9PTyttZUJubWEyNjZ1M2ZkazJxazErbTJVdElkc1N0WjBFVG5SY0JkS1FabkJ1azQ5UEhoZ2ZmUDdjbnk2L3lhaWQyZGpEUVg1dFpueFp4dDVZVDF5MThWbHJFallYbmRmVmxIZ1kwVzJWZHd0alkyNi9tVU95K3ZyNDB5Y2N0TkM2c3ZYQysrQXRINUtpSEFtUjMrMjFJL0p5cHUzdGJodENmUjJYRXJJS2JpV1g4bmdBWTlaSzc4RGFGTSsvSHl1S3pJUUJrSGI0bXVXTkk1cGFMQUJ6TjJnaTcvOExYYnV0d2YwU3p5eHZMZXdWQWdrTDN0b25oNGV0eENpdG9Bc09xcFVQSDJnSjk1M1FrUkxnN3dkZHBFbUM5cTEzRUl4TCtuQ0lBeVgzandFalg3N0M4Q0ZOcjlzM084VWxHUGp4aDdpdVJoS1RQQllIN0JWcnZ3b0VBbEU1dmV3QmdWeFpjcTVMM05EemxIa3Jpa1ZEYTU5VytSckJEbkV0YUcrcHlnYkVJdXVRcXkyOXpXWDU3R2R0L0x3M0VpMTM5N2d5SjkxRTg4TGNRdkNxY1pLZ01veEc0Y1dKaTdaNEU5SGEyNnFxN2UxdW1iMkRndmFRK2J1VDVNUTdOY2NJMmk3Z29CS1VwREwrdE1QdlU0ZUY5MzhReXI2WS8xak45UG1DUG1kL0NXVkZuVFVIOUpXMXpFT0M1ZVd1N1lnSnJMMDFnUUpsS1BaamsyWTJhQ0JIMWl3Z1VEazVQdDkzamdVQURBdnMyUGNQTXpscmNmNjRLMWFYWVYzNDRJRWo0Nk9qbzZHMHJMQ0NOZ0VJNGRST2tQV1N5YllRQ3RnRklZWllvYzl2Wk5ENjN3UWRKSkV4T241aVptZm9vVGszeUtxZGpGanBjbE94bkpRRDlldnJZc1Z1WHNkMGlBSFNuajExQjRENnp0VmZKQlBrR09VajhObkREREh4Rnd5emc3TzN0M2VTb0Y4VzNQU3E3WEtocVZLL3JSMFpHVHJRWWtNKzkxemJSdmRqTTFzMGxMeXE4b0NITGNHLzF0eWxHQW5CRG1Kblo3N0ZRVGZZL0lIbWZ4TmVRdUhGaVl2K1FYM1l2OVpDVXN3ekEwK2ZuQ01wSkxKUmRMUk8zRCtvWHdPNTZEdWVZbmREWDA5T3pPcDNPUEMvVmdmOHhDMTVLV29jRUZ5V3UyRVJWVjNJa0RNQnhaZDAvelV3SFR4OGRIZjBabGk5dHdheC9aSUFYV2NEVDgzV2l1aEFubjFxUUZDQVRIcm8xbmI1Z0plVjJmQUtyU1FKdUFaY2p1YWxkQmExSWZLcHVucHpjZThDRHRrVFBtT3Z0N2UwbjhaejRFbVFKS3RscWpObnM0eDFKT3VkdURRTithZ1VHb3dLQWlZbUpReUIvazd4bjBubmQzZHY2NG04RHB2QWlrbWswYmpTeEkySE82Y2JzREY4ek9UbDVES2VRZ0h0ajM4NWVJeTlNY3NrVkFjRXZIejU4K081bERIb0VJQWlvYTBqYkVBV0hUR295RXB6VFBvWDRzVGZYQzBDbnBaNGZUUkZOdERSZmpLWXY3UlB3blJiMHhRU2dub0dCQzJIMjJNWERHeXJOUmpVdWM3WGdkVy9idEduVFhWNzFxNWZlM2pONkFaMmZqSXJOeXdYOENuUHRNaDYzZXFsTnU0aHp6ZENKSEgyTEtoMmJXaExQUiszaFRzZER6VllOMXNPdzVYUmY2ZlMyQndkdEhaOUFZQjhtN2NJb2NkVjA3V1J6VlZmU0RjN2hhU01qKy84OGpqOGJOU243bE9HNW5wNmVOcU5kR0x2TGV0TGpSa1V3eG9FMjh1STY2bGZUUzhxYnJsT2YzT2p1Nzc4UGhhdTFRS0VqQkoyWUh1WUlLdko1Wkh6YlNESUJJaTNWL253YXp5cmNWcmFRYTd1bXRrSkcxUlQ0K01UKy9ZTXJkRjhOZ0pQRDlRejB6SVNNT1NVQjVBNUw2WElBZzMwREEwOGorVEtwWVlCYUFNdzUzWW5RL2VYRXhOQ3AzRzhDVUlkTm5TdFlCc2xNSUl4TWx0TXhDcjlZN3ZyYnUyM2JUZ3FQRWZMYnNUaHZLZXF3cENKSVIzeHpmSHpRdHcvbUoyUjZlZ1pJUGpzQzNJbU9xVllVUStGSEUwTkRyZGpPSC9rNDJ2T010cUY0cTZWcUNBaVJmRTJhM09qdTNYV3RqbGh4WnlZSXB0c2RiQTBUQ2FJWSt6czNUZUYzZnNtOTFFTm5BVUFCejQxcTlUVWZqck1RMWxhWlR6MW5XU0wrSzdmWFRkdnZLbmlTVWs5T0FDNmRUbThVZ3orVjRZK010bEd4b0xrU1Y4TGNKWTF6b2Y1VFllcHZ4c1p1SDg1YktMZmM5Y3lsVXR1TjZFRlJja0F1c1lURmZoWjNtWkNRdUdzRnJPZXMrQVJXTTJ5QzJZV0VkV2xCeGp4WkJFVkRSRVE5NkhjZzJVQzBPNTIrTDRDWHh4dktwWTFUMWNHcEkyQnl1czNOVEgwU0s3MFZ5TTE4VjJ3N0NOb1dvTzc4TlJFUEZpMmd1UWR2U2FldkovaDNKRmMzaVBzcTVyMXlVM0o2emRqbzBIZHdhcE9WQW9DQXdSVTA2MGhzRGFMTHErT1NqUzVqelJXQXdKeGVSck9lT0NIS1JGNUd1YWhRUDI5UW1xQlZBS2RqMEg2bEdjK1BBb0xFK0VOeVFmbmRkUGhRdnQ5b0lSK24zdDd0WjFMdXFsaEx5OURYcFM1clZDcmVyUHQreHhNVGYrdlBRRzJTQmM0SXlBMVNvc3QzM0V5K2ZkQkxYZXh2T3AzZUNPSGV4VjNCVWo4clY5ZjU2d01IOWgyc1Iwd0JRSDJaekVNcHZKNW1ENWFBUE16VlRMamZBVEFTZEM2ODNUbTlaWHhrNk9PSXBvZXVxTXYxQVBab00yNWJmTUd6bEQ3bFZ5S1gwalhTeUowTGdzaGw3Y2Q4QXV2VWdtUWhuVjRGNFNFd0NHcll4TEo0NGhIdUNyUHVkcjhWaWE2enBTeDRDczIyUkE1R1Z0NFdWMWlObGF0NE1VTEFSeWNtSmxacTlkWHM0azFQVCsvdFdKVzZoY1NXaEpJQThmUHBnZTJXNmdaNVpnTnZ2eFMxRHVJOVl5TkRIempGem1wdUFobHdZYkl2UkFpOGc1dzVWaUY2YkJYSlZlVmVUUEpaRWtzRTh6VWNqK2dwSFVsemNvTnkyV3U5dVo1ZFdMZWphOGZXYVhQUEJDa2tUOTVPT2ZlYkV5ZU8vcUlGZFRxNlhRL2NNK0l4N1NYc1h5RmRYdWpuVk1JRktna3JsOXRiWndvOGdYdXRRUnBUWjVGWW5aQy9GYU5KQitQT3VRbS8ybDdxZ1Z1Y3MzTm9PbVBlQlRPcjdZSW9PUHFVa2lTbkgrVVNPbFhnOHRtcUt5RFRtUjdRQ3dtK0RtYWI0c1FWMFpSVlZ6QkpSME9IRHpITXZuYzg0dVRGQ290TjRncHI3bGpnYzhwMDk0VXFsMVhBaFFFZ3NpdnBBUHNFMWlrR3l0MVoyNDUyUEU1RkszTVN3czBSemZmeFZLcmRBNEVrQTlIdWdYTkZQclAwWnBaQzVXWGNWT2VDVWFNNWFVOTIrdVIvclBDMUZ3QWVQSGp3YUY4bTgwc0NEMHpxRE1leDdUa2t6azMyd002VEtQSGd3bXRkdHVOdEFMTE5BQWg2ZTgvb0FiSm5KUG01QVFTQzlveU9qbzRzVjBDZHlXUTZzK0lyUUc1RVhTdlpWTVFMNFN0alkyTzN3cmNQenU3QlZFZjJ2cVJkS3VVbVVsWFQzbDIyRFhFQVBudm8wS0Y3V2d6WUU0QUdCZ1o2SFBDRU9XNlBVb3RVek5jcEwwWlRnYVZtWVQydXRoaGlIaFFpSkRlV3pjSlg5ZFJtbTBIb1lrYTNzWW41UWtHL0dSMFpHYTkreDcxNHlVZnF2TWpJZFhOSlY5WkxVYVAva2hSMG1PS1Bhckd6QU5UVGt6a25hT1BmZy9aa1lGN1ZWYlBaQWlOSnlmMGlkUGliOGVIOTM4aUxpN1NDY0VZOG5UZTlTdFQ1dGV1V2l2alJXSFcxc25JNm5zVDkxQWJaU0xYajZTQTNKSHpMdStpMUNZREM1TlJVZU5SdlJXTDdhMEViWDJaazM5S2NRQ3hIWFFwanRnajNVMUpJdVgrZW5KemNEODlwRmpXR2gvaVI1TEpKMmpxU2JRQlRhR0R5U25Jakp2ZUs4ZkZiNzJpQ3ZZNUgrWWE5SVB1VURQL1YzT3NBWTB0RXd5ME5kcHpqZzBsY1ZiOHFoZ1djL2pHd0ptbHl1a1BoYk91YW56NDRTMUJoRHlRWllNSDFaZ0pubVpEYlkzRC8zYW9MRnBJdm85bTl5cTgrTFViT1hwQjRwdmpEdWNUdnl1T096OUdNams1UDN6UHFreUxWMjJVQUtSRmJrbDQ4T3Z3Y2M1VXNmcSs4MUdyeTE4em1yV3FlazhMRmRMWUVLTTFJUEZIRnVjcnBlTkEzTUhDMXRmT3pOSHN5NWxqQW15NTVSZElBSFpmQ2Y1Nld1M3BCOHNxdHNETkxBSERPOVFQTXFHNUFvcUNmbE5Oc2EvV0thSVAzRlZpbk1GQkpwOU1iQVY0WlQyVllRQktiYUQ0cmR6ZXc5OENCZlpNNXcrTzNwVzVpQUZ4ZlgrWXlrTTljVEFjaGxPNnRWeVZHYTlacE9PbkdjSHI2ditBNVBHWVgwV1g1RXhwRzR0N3pacnl0cXZnelJWUDQ4QThqdzhQWG81a1NsUUh1UlhDTmtqRmVBbUNTeXdyNjVqSjEwZzRBbk9IWlJsc2pPWmNJOXhKbkEzZkM4YXRqWTV0dUJnYTl6WWpQMHVhQmdSNUFUNHBqQnlVNGdqeFh3ZmtmdzhQRDQyaXRDcmg0dXU2MnN5azhLMXFpU2kvaFNxbGN0YityN2lVbDNYejQ4T0Y3dk8rc2ZsVjdlM3Q3SUo2VkVHeU5xZnJjaVJEaDlYN0p2ZFJCWitPcGVEZ24wbURXQjdlUStXVHdJa0JIM0hiaUJDZVhBUGlMN0d0MHJyYWRiU205UWVCVlJ1dHNVaHdiWGZ4RWxBUjdJZmZLMGFHaHp5NzRMQ3MyeGlTNUFkREdCRDBMbzdxVTJjbnJCaUJjQ1lETnk2a3hucFRzNFFET21hdFlxSFlTWFZYS0Rza05OdUxGVmlLWUF5NXBnK0dGUnA2ZWM1VGxMM1dwOGVFTGZTeHpnWkNUMDRjbkppWU9laEErSnhzM3JoNG5jZE15K1RnUnA0QnovNVdkUHZHaEp0bm4yYlkzeUQwVVRPdzlpU1FFM0lvdy9Ga0ZRTENWZkRHNzA5c2VBdUJoOWEzSUxWaUtFbk45NEFmQURUUGVac3hKdSt4Qm9wMFJiMEZDdmxFdXl2bTRYMCtmNVB2UnVQYmorZ1lzS2Z3cHpXcTRIQ2hWSnJWVXFWWGVPeW4wVlc2d0diM0dJYS8vTlJvd3MvVUExaWU1aUJTeUFrNzQxZlpTRCtucDZWa0Y0Y3pTRmFGVkdCam0vWXNBeFcvZWVlZmVJMlg0MlZ6VmxRTmd2ZjNicm1GS255SHRHcEtkVGR3eW1LczArbzl3U2xmR3lhdjh6N0tpeFptMXMrNlhrYk9Rd1VVOG1yZ2xwUHY1TXNUR1JjVlhZSjI2QXc4WUhsdDRZdGZDQVFMMTU5MkFBR2ZZUFQvcDRxVk8wYUxyVHQveGNCSlBVMDAzK0dXTjdZMzVrTndONGZUSno2MGs0MVdPZGQrOWUvZDBYMy9tQmdhNE1ya0FzY2J4OEdYYWpLamx5LzMwcE53ckRrMU9Ia1B6SkxEY2NlZjYybUVQVmNLTFFHRGZ5T2pvMkRMVlZ3WFVVNHhCYitRVGtwdDhSNUxPdWIwSXM5LzNwbUpPajd1NnV0YVFlcUhSVXZQOThsSXhSM1daR3lkOExLNkNiclhKZzY2blorRGVBSjZrcEpOdnBWeG9LWDdiWW1hWjgvNUJRREJnbjhkQ3RXNlRuVTFpYTB5WFVHL2JGUkc0UTRNeldPVmJQYjNVdzk0TGJXM25FclpyUHUxQnVXcFZLajVqYnJBU0lFbkNaQm4yWmJicWF1dlc3VjF0N2VGZmcvb2pvN1VMY3JFUmJNcVdRU2QzZ25KdkhoMGFlZ2VBS2F6TWRzR2lTa0lHRDZWeGJmMFRrUG5MNjM0NU9UeDg4MHF5alQ2QmRZckFYM2NtY3k2QUI2bG1icVRxQW5zSG5UQnl6RzlIL1oxaVYxZlhtb0I2TVJtc2x1VEFoUWFMVlR4dDhWOHFjcEFmbnB5Y1BPQUIrT0w5Y0hBM1Fzd3k0cW1xWTdCVmlveTQ3dURkNUxRL2xQM1ZvZUg5WTgwVzhLYUFNMmhjbjdqbWhlNlhtTHZ4V3k1NmJnQ1VUdSs0UUhTUFY4SXo2REUzaGZZWFk2T2p0L3RnY001V1dQdXFCNEI0NFB5cTZFcnNBTXM5ejNUU1hvVDhYN1JXNVZYMFhuZnRhcmQ3amozUHpMb1Ryd3BZbUx4U1hwcTgzQ24zODh3eTUyTWg0WVJvdDNsM1dhTlJNVzQxd3BUZ05HMUp0eDhldVczU3I3YVgramhlZXdTTm15S2RWWlU2VzBUZE9adkVvdVJTWlFCODE5dmJ1OGxTN1M4WDNOV0VuUi9yZklFWW9sa1NNelE1ZHlOQzk1YVIwYUhQNU1lNFhydHlHUFVoS1dML0E0cWJSRllRWDVRMGptMHJiZTE5QytFcGtzRGhDVWJiV2RqNkVjbGRhczdPTzd4VE05enJkNkwrQml0b1gzVWxhVmNKRXNna2d4TVg4VVBxRjNIMWxXOEZMZVJrdy9BWEVHNkx0Nkl1Z2Jxa1JvYjhrdVFjM2R2SGgvZitFRURRUkU2S0FCQ1FaNUcyR3ZQYVpldjhPcEljZFZzbG1ZSlcwbFVGNGVQTmJGdkN2am5pa2dsMWtnNGZnU2REbnJYYnUzYnRhZytpNnF0VjVla3hxd1dkVVlqdjlNbXhzZjIzNUd4NUM2MlY2N25uK0dOSmU2RWFPM3htRHIrVXd2d0xPM3lLL24ydVFzTGR6VkFIdmJ1c05aalZwYm5aS1FtcTMrMklwdTc2aXpvdk5ka3dBRWJodnJQVFUxV2hSczM3KzRJUGpscTdwTnZDR1gydmlJT1luVERZMTVkNUdJTzJ6NEY0dmRIT24zMVNObUhMSUdNYUhPZStTb1ZYajBiSks4SlBNbDRrR3pZTXI2RndlbUUxNUJKcXV0VGY1QU5JM0wzUzF0NG5zRTZCNGR5NGNlTTZrbzlDMFdicVpJUGorRWdjQzBOTitTMnBieEMwWmN1dXRXWjZFYzBDZ0RYYzZwVDVtZ1RvOUZGZmZWVWNXSStOalEwRCtGVWxFV1laVDF2Q3I5UjFDK0twZy9yR3pQSGpuMmhDZ0JBVHk5dWFCRDU3L210UTBtRUgzTHdzN1VZbTAwM3hTcUJpR0YzeFdrYTBQL29mTXZ5dXR4bHplM0QwNk5FSGcveTlLQ21qTWpnTFZRUmtMdFh5RFhQTzdRNW5wajdjaXV1MGNlUE9kVWE4bE1aT05KUzdTK1c5d3lVeC8yenJqK0pMamJ1eTJSUGpTUmp2bGVWdHJUTlozUk1rRFdQcGcrbkZ5NUxTMDlPekVZYnRpMHg1aFlIVTBva0YzVFE1T1h4emtmaGJBSUxlOU1DckVlQnpadllRQ1M1dnFGY3o2WGxlMVJYdWN0SmJUeHk3NTZuRHc4TzNJN3BVVFJxN3RDS3VRT2RwMlowZ3pwaXI2aTZFRjViaVdDdXBDb3p5cjd4dWdWNHRlL0V0aEtjQUFIYXNXWE0vQVpkREtoRUNNMG5DSGtLNGJYSnljTmlEdHZxdWJWdm5zV2NDZkVpeU45TlI1d05KVXhoKzI3bnNmL3BBdEtoRUpiWFNyWG5mMTd6OGJBeXNpQ1lweXQycHJQdkhnd2NQSGtWemxRaEgxUmc5UFpzSlBDSEJ1Q0p1dVhLL25UN1djZXN5czFrRTREcENYSUdBbHlmY1BSaFBjdFMwb0g4YkhSazVBVi91bjF1WFZGWjhhbUJjczVoL2pCVnNaVDRnWFpUVXlyVnVUcEY2MThURXhHQUwybTExcnMyK21PU2pHMHNvckFTZWIzWi85cHZaVWU4cTZ4R3VKUWQ0SklXYzR4THk0cVdtT015czR3d0FaeXFhR01qS0ZMcVNTZUc4Q2ZPcmsyWmJCdnY2ZHFabE0zOW54SXZBdU1pOE9RdExabTI5YytIWG5keWJ4b2VIZjVpM1VLRlhxeUxLSmw0QTQ4YjVrVU1sMUFRTENSeTFPQmdVN2pLRTE2MjB0ZlVKck1ZRDVTQ2dQWm1XbXloQksyUVVtU1FOY3ZSS0U3SFI4VGRaZFZyVXJxNGRXOG53ZVZ4RUFGeDNBQjhGb2s0blEvRWQ0Mk5qaDN3Z3VsUUdSTmM1NTZaSWRxQ21xZ0UxOHNRb1RsSitkV3hzNk50b3Z1cXJxUGErdlgyTGhET1REV01FUU44L2ZIalAzVmcreVZvQ1VIcGp1azhCLzVEeDJPMEViYkpJVU9JWHc2bXBuOEludllFNVF2SUxqWGppMHB5VWxTUlo4cmN5T2lvUjRhMzJLSnY5UW92NVhnUGd0ZzRNN0NEdzhxZzF4alhBR0Nhdm5rYmVOam8rZnR5Zmh4cjBZdnYyTG9adTE5SUdUd3QydDN6OWtjT01DelhrbDl4TFBZd0tBejJKdE5QbVkvVktMaXVXVEdLWm9KRFNMWGsvbk1YcFBUMERsOGhtM2g2WVhTSEZMWXhvU3E0cnhZT2lUdExoTFNkUEhIM1hvVU9IN2tHWlU2Wld2SjVKbDVGbVVpNTVXZTV3dG9YVFNGaFk5MGhRYmdyQW5TdHRnWDBDcTdHT1h1bjBHZHVCN08vTmFsN0I4NThvS0l4SUNxVHI4NzczaVkvYTE5U2xPdHp6ek96U3VQcktDZ2N5dFlCNDVpYzJLSVJmUVRoOXJRZmVaVWcydUJWdHVvTkVuMXBqcFFUQzVOeHY0ZXp0YUdpclRvV0d6ZUdoTkp5T1pLb09JODRtcHlrbnU2NE05Tmh5ZGtOclVsY2ErUUFsbkx5S3NKU2JjdElISjZNcGxqN3BuWk1BOXllNVdUWFZWeGJDOHd1M2xJQjAzZGpZMkYydENQN2JIRjV1S1c1YjdPT1NQQ0lxdkpTcVlFdEsrRlZKeC93QnFGSENjSTNBMHd0ejZxdkU5cFNWMElyd0RqV1dEWnl2d1BKU3MwSFpzbVhMV2lkZEhwUTBFa3NsR2dyWWUrVXJOaW5vaUJ4dnhsd0ZWdGpWMWJVOTZPajhVd3BQbzlsV0YxVmRSWTM5VFFQeW91Si9nQWFDY3U1M0NQR1drZEg5SDgrTFp6MTJXTnB4dFpNNGV6NWtyYlNpTzdjZml5N0VJdHNJVU9BKzU5eWRyWWdwYWhHZndHcXdWUkREeDVHV25ndFdUb0d1UldmaHBOK08rc1R2QUZ6M3dNQXVBbitZVEd6TlFvRm9LT20veHFPYlkrOU1scENaTm5kM08zQW53RDQwSkJsVXFiTXE4R0NucWREcFZlT2pnNzlxd2oyZVRYd2IrWWk4cWtNbTlHckhtVjFXdCsrR2FPcFFQNmlYeDlnMTBiWmpJK2tjdmhoT1RmMEVQdWs5cThNOVBUMnJBK0xKb0FGeVpleEJ4Vk1INHdmUkpIZE1jSjlEVlAzY0tsd1YwVHIxOXo4QjVBdG5hd1dTRDdVVWovR3krZDRQbFUyNloybkhLbkY4WVZUZ3BUSnBkNm5WQ2x4YnJ1Z0ErWEY4UllxbTRsVlp4SmpOekhpdU1pODFKeFk2T2pxNkhiZ2p2c3hrNVVhazJPVEIyYnhDbEhSMXVuWm01dmllK0tkaGQxL205eXpBMjQxMm5oQk41OG0xRERhUFFtdTI2a3BPeHdTOVQ5blV1OGZHYmg5ZWlQMjhsTmF6M3Q1dDIwR2RVVXN3TUYreEZ1aWRaZ3RTL21kc0JYYmllQkwzQmdMQWdZR0JIaEpQSlhtcWdKSkEwRW1ISGNLYi9MYlVMVk5CQTU5TnM0SGkzRmQxMjI3RmswMitkZUpvK3pjODZGNVNIQUFlSEJ5Y29NTXZHM08vVmRuMGtCSjcvTW54a2NHdk5IbWdHd0JxUzNZNUNRSkhBUjVmYm5hRFFkdXp6T3lDdUhVdEtYL3NTREtVUnVHQ044WFZWOTV1NUJJWTdlMFprR2RHdUwzUzZxdGlZKzhLbm1sSjJPK21wMy9XUWtFNEFhQ25wK2NjMHQ1QjJycmF3WGc1OWc4QTlHTkkwZlRZL0x5R0NwaFpsakM3aFRoeE5jdXJKTmdzTWJpWGFnMk1aYnNNT0EyekdRRVZySzRxOUxWWTRWUXc4U1dwTFp2TitwakZTODB5N1lJdGhOWldqK05ZNE84Vy80cmdqMlB1MHFDdlAvTzNadnFVMGM2RDVCaVJJTFBJc3hRSUhScmlMaHdBNWxyZG5kTUxSd2NIL3lwT1hsa0wrYTFtc1l2ckFKNWVIMjVUTGxZSWdvS3lFdmF0eFBYMXpxQ0JJREFNZVJHSXkrYnpiQ3lGdnVyOVJnZ0Ewd3lDZS95MjFPWDhxSzh2Y3huQkY2bWdsYXEwNTJIcG9OZUYyWlBPOFYzTGpBOG84Zk1IOHVjTGI0Z3JYLzVLLzA1TEJMdUxudGZGZkFPL3pWSi9EMkFHVFR6ZHBhZW5wdy9BMllrR3M0RGc5TE94c1UxN2x3bUF5azF6T3czRWsvSzZCeElXZlcxa1pHK09VTmJmb01ZU1NBOENtUmJ5cTZKTGZaVzd4ZlBNRENWUmNQODFNVEZ4cU1Yc3RpelYvdkxBN0V6TUp5Rk81TFhpdGNySzRSTk9tbXVMVURuZ0hvVmhWUkh6SyttZU1BenY4S2VnUmlCRWJnVzVObHA2TFNnWlp6eVVxSEFLcTFneWEyRVN5NEJiRGgwNmRCeWV0OVZMalZnd1NHa1h6VTZQcTQxWXg2ZU9MUTFOY3ZjNHVCdTZ1cnEyOXZWbjNrcmlqUmE5Wm81enF3SUN1THJGRUtWZXdaRTBTRms1OTNITjRNcXhrY0ZQWXdGM2w1ZnlkeXdWQkErTzdXS2Q5Q3pmbVJFZzRZUzdzd2h2WG9tTDdGc0lHNmpNRFBpZ3FMTGlsUEhaeEZmTUd1VE16TUZsRWd5ZTBpQVVRSnNNZnhrWU44WWtmVmJhNk5RY3pKdUFMd1RJL2dBK2VWV1J1S3pieDVSTmsyeXYzS0dvd0VrcTkrKzE5UFBOUFNFbGx5WGNleWVIaHZZMU1YQWdBTGxVNmpRRDFyTmdGRm5IMTZKK0R0d3dzMHlBRkFGbzFXa3pENlI0Wm0zRTRXWFlETktjM0NpeWZNOEMyK1h0OTlVSStGTStpaFpQb29aWW50bGZJb0V5LytjQ0FUbU51bWwrRm5NVG5kUUthOVNUM3Zab1VGYzNDTGZrV20rK0I2ZGJMR0FmRnJiNXNOaWFzN2lkWGJodHpGVzU0ckJtZ2lHUGhXcmV0TGJGaFcvTUxmVVNTcWFpajJQZVZBdEhER0t1OWRZSDAxNnFnb0V4b0xpQTBkUy9PdHMweHNjQmRNSXRobUNiZGF4NkI0MFh4OWZiVVVzMFZibTEwWnc3cVRQY2NnQ01CSjBMZjQ1UWJ4OGRIZm95Z09tOHMrWnRZNFYrYzhPT0hlc1J1aWVUdFByVGE4UjZCcEp3ZTA4Q295dlJoL2tFVnZKaUFEUXdNTEFyQko1TmtIRUcvbFRlSWsyT2pZM2Q2YmVtWmd2aWV0TGJyakRvVWVXRCt5cWRUeHhjT2JtNzRQanVrZEdSRXg3SVZXanNVdGp0aUJFU095cmJMeGJld3ZxSEFZNDBVNmlmbnppKzZtT3RrR2hJTWJnM2lVMVNJdFQ0RVlHNzNLaXkvTlp5aXZjaUMyQlBvSEY5L1NlV0ZsQmc0VGVqby90MyswQjl2djN1LzJsL2w0anpsd0NLSlg2bTRuWmlYa2hPQXZqQXhNVGdMV2lOQ2pnQ3dNYU5POWNGTnZOcVd0Q1ZzSjdPTHFMa3NxSEN0eVBnaklrOTh5Y3VWZW83aTF3ZXpWVTB1RERVbEQ4T05VcW9qUWdZODFhTHhVNUI4VjFTNFZPVDl5aUtiWDZodmRTYVdBQVFHSGhta2pHZkpCaXdTM0R2cFFYdGVmaUlKZDNJcWNBaHBFbnVxQXZkQjA1Qzd6dzBPanlXRjd2NitLSktQZXZJWnZ0QU82ditGNVR6RlVkTzM3cDdaT1F3VnVERnBHOGhiSXlSVUNnKzFjejZscHJldzBib256RHR0NlYyQTlYVjFiWEdUSC9CSURpdGRBU2pJaDVMNWFwUEJPZWlHK09Qam80T1hnZmZCbFN4bzk0eU5EUk00ZFlsaDljcXh4MnNpbUtpMnQ3ZGJPdU1jOUFIRHgyNjVaNG1kMGc1MHFhSGtaWkNNZ1RraW01SmNWdGJHMzY3VEpJdkJrQmQ2ZlQ1a250MDB0VlhjVUpnQm5DZlF0U09hdkFKckZseDVPVWl0eXZtclowNzRPVzI4M01wZytDaWlpSjM2NVRML2llU2I4R3JxNDlidlhiNjhTRHZwMlFtakJZNDc2Q2sveHNmSHY0dXMraWN0NmlzaFdLQlJmaXhOQm1HcWVQK0pOVG92WXc3YVJZN3ovbFl0aGpYMWZ3bldkeEd5QVdqNGdHYzhNdnRwZGJJdjdlM2Q2ZUFYZm1LbGNSTENWd05XbnRlOVEyTCtvbHlYWTNxZG1ZZFNFWlZWKzQ2Sno1dGRIam9MdzhORDQ5aHJyM1J4eGUxQUQzWkJRRFdKYTNQWnNGb0JWcTB2TmJZcTFueUJuUGp6cDNyWkh4Z09RR1lHcUNEanZvWldxZU5vV25CZmFwOTFRdEpYcUVsSjFlVkdxRmFGdCtLWUtSemJ0emcvaDFSR2IzbmdhZ3drTDhCbUJGNWE2bWxrelNQeVdEMkg5WFE0RlQyRHVPV0Z2Y2paYWUvZ3VaT1hoR0EwdW4wS2hHWjhwYS8rZ1UwNEhoYlc1dVdrUzZpTFFnZWJMUk13c0FqMGluZ04zZG5zMTh0eC8rc1FNT3d5Mmp0bUUwczFaQWdtYWZyYzFzUS8vN3pCMGRHOXFCMXFxKzBZOE9POVFKZlZINkNXcldlQzVOemR5RGttd0ZrRmRqYTJkZGt2VDdXL0RkTDhLWTc3OXg3Qkw2dHR0WndmVjA5N1F2bkVSWFRuSE16b3E3eksrMmw5cWkzN1dJak0rVk5JS3lMdjdlNlBkTkNYRm9sRmlacGNHN0N5ZjN0VE1ESGp3M3R5MkhPbkgveXRyQjZKK08yYk5teTFvQVhjUjYycUg5TTQ2UVRjRzdQU2wxczMwTFlBR1h1UERuelRBdjRrS1dxcnhvRjJRV2NURGh3V3ZaNzJyK3B2MWZFUzBrRzViZFdDSVZ2N0V0aDV6ejhUbjVnWkhqa1p2alMzcXFETWlqOHRSZ1UxUDJTWFhERmlpenFVNWVRbXc1NnA2RFhqNCtQMzlIa2V4enhYN25nSWdhNENJdXFpTXF0TEVTNVp1aFhlL2JzbVZvR1FXWlVmZFhWdFEzaUg4R1lVN3JFdU1Na1FVNGZ1aWNhc2V5RDlNVkx0S1lDUFN6THhPUVpCb0dra3c2SDAvYTVQT1BmQ3R4WGJtcHQrREl6ZS9BY2JsbEtWVXRkMUpSdG9QOHRyakJHSUhjUmd5QVYrVmRhM1Q1YUh2K01kNkoxTTIwTzBseEJpMVRUWld5dWZUQlBIRU1lOCt2c3BRNFIwT1pZdlJwUlZjcWlRTEVXS3F2cTNya2phSUxMS25TZlZzQi9HTjAvK0tzOGJPTE5ZWjJ3Y2FxejgyTFl3b0Z0U1FBOEhISE85cTdVeGZZSnJJUkI0SVlkTzlaYjFsMU5XbEIvSXJlS1RaNUptakZnb29KSTAwc0J0S1kxd1IvVGVJNmM1a2dabHdUM0M3MFd5d25pb3hZVWhiZGxwL2xSNEpRTkFGZ1dFZ0svQzV5T2dGeGZhQzFaN2NsaTdXY1R6bjE0YkhqbzIyaVI4bTB6N1FDNGNXN3BWRVRuaTMza0pSY3d5dkJJQnd0RXlDMkxuNFAyemlmVGVHN0NiVm1PcE1tNTN5S2MrY295V3IrNitXYnMydFZ1eDQ1ZlVzUEpMNXFHeVVYeGhGRUs5MHhOSGJtdFJkYmVBTGkrdnN6OVFQNTVYSkNxOG8xYzd2T1grL2VLZGRYTU9YZnoxSEg4Uzg3Mk9XQlZRQ1J3UkFoQUpnbVNmdVBQUmwyV2RHN3Rha3hlRmRVVXlYZU1lS2tWWnlFdzNqYys3ZzNDMGlyUFZGWmxnY3I2Q0ZGL2ZNUjFkUURRNjBlR0J6K0krWlFDUG5sVko4ZHlDUzVwbStDaDU1RzJOa0hleUxpNlh0OGFHd3NHVjZyLzhnNGhXV1hHcXBQWjg4UktNckVKNmlBSlNIZUY1TTErZTZvK0wrcnU3NyszaUJkTDFXeGJzVmFUMGc5eW9UNHhNYkYvRVA2bXBEYXJQMjBqSWc2Ujg4YTVvR1lPOG1wYkN3V0hhRXJKbHhWbTM0SVdTazVLSElpWFVZc3JxbGpHT1dDcDh4Q1ZzRGczQTZkZkxSZHdzM0hqeG5WR1BuN0JPS0dFUWtyQlNlOFpHeHNiOW5aanNhdy9kbXcxZ0kwSnVmNDVOUmEvZitlZGQ3WkNtMXBVWGR6ZjN3dkRQNWh4NjF5RVZDbHhlamxFZ2ZNZHFLaVAzSEhIMEhnT2w3SWtmMGdoZzZ0eW5YRlU0QVBJTEJqeko2RTJtd2JBQ0hRaVNnaXlYc2tyK1hzNkwzV0dMTEhXcnVFcGZQbVM0UUNyZWJxUzFBd09jY3VnVS9qejBJVlBHUmtjZkMvbWtsZStYYkRPOXZEZ3dNRitFbzlJL3JVRUNEOEhsa1YzUXRVQnVaZmtyRlhBZ0U4MGNsWGpzdjFMb28yaVUySzhsTGVNUnI3SXlJMkFYQXlFSzl6WnNrbUM0eXFLOEdmQkNmMDcvQzF4emVoaFltTC9HS1RyRjJSaXlzY2NyT3M3RWdpVGMwTUlzNjhaYTUwMnI1aTRGK2ZGQytJS0I2NUxjcnVWWGxRU0lFZURHZXhmTGpyWXVYcnRpMEUrT09GMmNoZU44ZGJ2bEozK1gzLzBDNGNObmRuc1JSSjJKbFRtSDNNNjZaaW9yeWRnUFJJVEI3NkNaZytRRm5KM1ZKT2xYNm9xbWJucXE5OU1PZmVmZVE4Z3lWVGh4eGZydldHQm41ZHV6WmZrdXhCcWxKNmVuazVKbTVOUWNVVkZ1SDZSdmRUWHhEVVBpaW8vMzE4T1BwM0RXSXFtV3RNZ0hYWFo3RHNENlluanc4TS9oQ2RwVDFTeXN2TWhkQ1hZUHBnYitIUThWSGpMU2w1cjc3eVRFUVBnZW5wMjlJSHU2cnpiZGxhZ240a29QWVhiVHR6TnNTck5wZC9UZFByUmhGMGpJU1o4RU9hemZyT3Urd1VwQlBIdTRVT3owMEc4MDZraG9BUXdBK2hIZ0s2SjE3ZWMrL3J5dDdWY2FpZkJnVERuZENSMCtzUEowZEZmdGZiK3Nzd0ZVSkcvVzlSNkpBSjBUbDhaT2pDMHQ4VUJGd0dvcDZkbk00bW5SNlg4aWJhVFJ3M056djNMK1BqNGtMY2JSY0NQcGU1blp1dm10M0xXUWt5eVlCTklPT2l1RUx5OVZmemIxblQ2QXBGUFpkRnlnYnBDQmdHQW5FNUsvUHU4Q1ZnTzJOVXVIdHZLb2hGZnBYYXBtSVFlQTlXYURYQ09BV0JLN080bDZpU1A1bEY0OFZJZnU5Tmc5MS84eHl6d3ZXcjZOQTZFRWFSejRkZnA4RStqSTBOZnk3ZnpYZ1dTMmVRdFc3YXNKZkU4MnV6MHljVGFCNTF6TngwMysvbEtqdVY5QlZhU2k1dWFlU3lKL2dhTm9DN3pUZkd1STBlMkhmVzdVNDF4eW5RYjdiVkdubDQ4clZFM081THJjZjdhaWFPZFg0YXZ2cXBibGtVT1lXNnZWUGFqcW9SSkt2anpPRG1Ka01EYkprZUgvaGV0azZBaEFIVjM3OXhDOHJ6Wm92eDVIN1pVZFdHaDZzT0ZnV2xVbmVTY214SHNtM1hMS0p4aXZXT3EvV3JTTG1oRTlaV2MrN2taUHIrU3dVMkp2WEFBak1aTEZxOFB5enpFUzc2TTR2OE9kMGhIV21BZkJJQnRzT2NHdERTSzZtaGRqMkdPbCtWVFk4UDdQNWZ2NDdac09kZ09jbk5oMjFGNzNFb1NBaWF6YXZ1dFB4STFRa3F6VlFCT1Qwd3ZTUUFhQ2tQYjUrMlpsMXA4TUtLaWpUVTZaUzlmd0lhcWJwaFRpTHMySUIxekx2ekhlKzRLbno0eU12ZzF6Sjh3NkNVaFhOeXhldlZWSkI3ZmtKaGYrUDZSd2NHN1ZuSnM2Qk5ZQ1FIa0RSdDJyQWZ0aGFRRnFMZzBKem05cDNBUHNOVURnQ3FNVTF1SG5tbG1sd3Y1bWZWRTlpb080TU5wWmZYZVE0ZHV1UWMrZ1ZXM0lJMkcvUzUwMHpISmhpb09peXA1QUFzQjhzaEdPT2ZlT0RvOCtQWVdTODdFN3pXN0d0Q20yVTlVbGUwcU5wRnpGb3VGeW1idlhBNjJBNWRjMGtib2dUUkxJV251cXlpZitLV2hvVmsrSVc4M0ZpaG9iKzhaZlFRdUxHMHFWT0Q3c2hOYWlwbXQ5dzRORFRXN0RrZlRNZnY3ZDhINDFLUW5KK1hXaDRUSmhTTndmQStBTEJZTjFHQXFnYTJmTXpiRThmWlZ3V0YvSkdwY1ZhNWVwZVFTV0RsbG1XbWJ5Yzc0MWZaU3krSGZtazZmSy9EaVUrTVNXZnhIdFNXeGNpVHNFZGVWYzc5UWlHdEdoNGYrOHU2N1J3N25ZUUNQQTVJVEJ5QWw4ZXJxWXY3S1loakpUWVA2ZWVJSmd4WUFMbDRTc0ZKclRzdGVUZkNDeWpPeFNlbGlaTDhFOXd2Z002RVBiQ282STY2dnIrOU1HbCtZdTFsZmVxMXJCdmNBK0IrcEZMNERuN3lxNjBGd3dQa2tEWEdiV2ozeHlMemZzYkR6QWVBYzNCdkdSb2JlQ09TcXdWcHJmMU1wTzAxaW04cnVtU3huSWJYZ3B6eUdOcDVZQnY1QTNhTjM3Q1Q1aUlTVEF6bmkrenZnc3QrR24xWmEzS2liNnhiUU8zOC9LcDJlcHhMZngxVjMwRDM1ZXRDc05oRUFVd3llYjdRK1JGVXZUUGoxSU9lbW5mRG0wZEg5djhLaTZvRFZhd1d0U2ZSZ1NqTTRjY0lmaGhvbENGSWhwV1NUUzlMeG8rN29NYi9hWG1xUjlpQzR3TUJlNlZUSHYwWHUvRmdleHRRQzJ4M2hXV1ZENXo3cnNuakc2T2pnLzhGWFhUVTBqOUtWM25FT2lQc21IY2d6R3NaMlkzQUUzMjdGMktIdUMrK2xybGJKWmRhdlAxMjBsOUNzQXhWelh5WDhCc21zMzZiS3dUYUN0ajgzczdPRlFxMFZoYklWVlY5NE9CTG13bkFpNjdML09EZzRlQkkrZ1ZVdlcrZlM2Y3hqQXZDdndNVzMrNnoyeE9lclFQRWJOY1hKenhuSXZYNXNhT2hOTWJCb3liMTFibVlYaWE3OFVMMCtnRTV6VGhyWU03MXExYTB0N3FRRkFKYkN3MERiak9SdTVtYlhUY0FQUjBkSHI0ZS9kUzBSZGJzekFIVGtsbTF4TXFxUzdTM0l6V1NTRTRobXZ5V05xcSs2QnJZUmVrcGNqcHEwem9nRUhmQ1JzZUZ0SDF6Z1R3a0FxVTUzSm9FZENTZDhUMmF6MmVtVkhnVFVLdGxWZDArRFBGYkJGTWlLNFZkczIvd2VlYWxObTl3czdtc3VYU3BuN3NUaVAzZUl5THlubmR5MXp1SEZZOFBibmpZK1B2ZzcrS3FyUm1POG9JM2hueGl0TDJGKzAzajcrZDJoSTBOM3J2VFkwSk80MTk4TUtUeHR3MlVFem0xUUtYNjVieTBhRnlhR2Zwc3FTM3IwOVcyN2pNRHZTMHVORkMva2hTcWVqVXVBSVBteHllR1IzOEtUTHRiclhMcXVnWUh0QU41S3MwMFZFU3d1dFlWbDNaclJrUXhDNXo0NU5qVDA5MmpoNUJVQW1ISEwzUHRQb0ZvamhsN3RkOThkdHJqZWFXQmdZRU1JUGpkaDh2WmNhZmx4d24wV1VXV2ZUM3dYWDZ3ZFJtdXJEOUVxaSt3RjdnemxmdDBDNER1VmF1ZWYweXdURHlkSjhtSXo0blowNFFpeU0rOEN2cDlGZ1dwd2M1WUNrVW9XUGZGd0dJYStCS3ZXVlR5NmVwVlMyZE9qU3djbHBLSmV2TlFsRERyRldIb2hhM3ZWK3UxSW1wTzd3em45TGR6TXA4Ykh4NDhEZy9BeFErTmp4UDZ1L25ORVByNVVCRkFuNVRISlRZcjZVajdHWEttTDd4TllkUTZTTjJ6WXNWNm1WeGk1cG5Kd25CaGF5NDNkUE9vVS9zSnZWZm5CSnpLWlRnQ3ZKbTFMdEovbGdudk9qOFNMN3JQeUwvQWRTWlBUalZQRVArVUZvVjVxMjBkbU1wbU9yUGhtR3U4bEp3ZFdHTFJXVlRmRGZMQVJTT0czeklWL0crOXJxNEtNdUVRS2w1Z1praVdyZExlT2o0OVB0ZkFaSUFCbGdVdU1QQy9wOXNHSS8wSTNId1grengvN0phUGg5VXNIRDFVSEdOR1VJT25XcWFOSGIydmlLTndBS0ozZWNTN29ucGJNRkxuOHNWcXo2MGxBbnh3Ykc3dXRoQjJVWW43Q1JIUWdxcm5iZi9EZ3dhUHdpZDc2YlhYVTBKVE1pZlhpcFZaVmNxNU5nU0haUXVpbHc0ckZmWU1xTnd4MEFtaWt5WVczd1BFVjQ2TkQvNWR2eitHVFZ3M2ZUTmR1ZjJiRzdnUW5EK2JoQ254aWRIRC9UK0hiUTMwTFliMEQ1ZFdyM1RtRTdsOU5zTUtFN2FtQTZUYlNrNVpXc0dSOXpsMUQ0ZEhWQitvc2dmUzBpUFpIVWlpNGp4NGNISnlBNXltcjE3bDAwK0tma0xpNnBnb1lsZDdLSXI5MElNekovVGc3aFQ4WkdSa1pSZXNtcnd5QU5tL3VQUXZrZzhxQ1c5V2NsZmlrQ2JZZnJWdEpOQWN1RkZ4RGNqWG1xdTRTZWoxQjBvZVBSS1RoM25ZVUFadzlQVDJyNVhDZjRzdkRBZ0ZHcWNrTmhZMEF5Vy9kZWVlZFI1cFlmd1ZBTlBjY0dqY2gwV1IwVkFBZVQ4Z2N5azdqRTZWc1lCYlpaSmNzU3NONy9GdS85ZVRjTnF2dXFrTkFadWJ0bVplYVRqeU5sOFp4MWluVXBVS1gyMHY1bURneFJSb0pPdWtMTGd5dUtzQjE1YzlJZy9XcXR6L3pISkovTU5laGs1aittdVJtakZvT2s3bnJGcEI0cVNNWWhPRnFHbGZqMUtYNFM3MURDOE93elc5VmVZSE81b0dCSGpENEs1cTExYmFmTE9kUEhHbVU5S1BqcWRUSDRHK0Y2MlhmWEc5Ly8xVUI4ZGNnZ3hob1Y4L3lVb3BWWURHTmprZ2FuQnRtbVAyemlZbkIzd0lJMExxM0pnU0E5dmJnSXBJNzR5UjlJcThUSll6ZG9WWlh3RTJiK250SmQ3K0VqN0lqU2VmYzllRjA4UGtDMnVnbFQzL0pqdjdGTGY1TEJoQUxBbzNTY1JJZ1VOamZ4RURUQUtDdmI5dTlSRjBUWDU4cG9TV2ZYUmhKV1FlOWZXSmlhRGRLM0NDVGRFa3ZteTl0cm8rY1BIbm5FUkREaWExc3BKV3JTSzd4cSsybFJsa1htYnBtNGxOVEVSOFRmekdhWEozRGtoRCsrdVN4anVlTWplMjdGWjdyNnBUR2lMMjl2WnRvL0V1YXJVWHkvS2FDc0NlY252NnR4M2lSK0JiQ09nYktmWDNiN2tYaXFWR2JtWnBKdVVTU2tQWlB6N1JQZU9VdlR6b1l2TUtJOCtQcXF6cnhwS2pRandXUXpybVRDUFgyTzRmMkhvSHZZNitIZzNGZDZmU2xoTDJiNUNhNU9wYjNMcDNFRWdRNmFKOWdMeDRiR2J3dWZ1MVc1blJ5QUdDcDROekluQlJ6MkxYTWhLWkFVYzVOS2VUTnJRNXdPdGZ3U3RMT2kyeElZdHhDVWNJRS9Nems1TjREM25hVWxrRGhnSU50TE56dXBESzJkWFo3aTFrQVNycEhjUHVhZUJtaTZxc0FMelVHL1M3WjFvY2NCakZKM3dtbnBqNjZsRUVJbURxWFpIdnhvRUFWSE1QS1RMaVh5aVFNVHpNb0tiNnltTGxkNkEyQ3pqNEFrL0NYZTE2cThNVURBd01iSExBOUNzMXFHMEJkeDdlMXdCcXhFT1l5U1RPQy9zOWw5Y2J4OGNFYjh1Tk92NzJuVU5vNm5rdmdiQ1h2UHdtSWp2clUyTmpZc04vN3VRUGdwVTdoTEFQM1ZKcWxxMjVUU2pyblJZd2VPTER2a04rdUpjK0Urdm95OXpQcHVjazdNT2JBUFFGOWczVGY4UUN0UG5zNE1ERFFrN0xnUFdhV3FUUjVwZHJ0QVFFNUNHOGRHOXIzcmVYa2NFVDBWOTRySWl6UmI3a3dicmtiWUN2YnFtajZJT3grSkkzSm5lZGM5ZFYxMmVtVEgvRzJZOGs5TVpleWF5eWFFT3dnY1o1K0NvVy9GdWx4aWVRSUNVbkhsYzJPTnJlUDIzWXZRcjhucVJGVEIwMXk0d2l6YjV5Y25EeTJ0Sm5WRGhaa0JhKzAyRUNsdks4dndxcURIRGt5ZUJ6RW9XUVBydFk1QzlmNzFmWlNKZERHQ1dtam9JRzVLdG1tZkp2NWhpc2tZOXdvdkc1MHFPMnA0K05ETjJCK3k2Q1hVK1EvZTN0NyswMTZDUXRNTks4L2JpR2QwMWdZQmwveXl6OG52Z0tyZnNIeURnYytwWmJnUVFuYVZBS1ExSTZvaFNucnQ2MzRNZ0daVGhwZVJlTm1KOVE1czg0QytZQm9LcE9iMFJ2R3gwZE93R2ZYNjdEQXU5cERIWHVWbVYxYXplMUlJYXJOU2g0dVFFWXpLV3hTc0ZUdDJVQ0hFWnVxQ1JnWC94MkxCTHRHeU8zSmhpZHVyZkJKbThrbnVDM3A5RTRCRDR2N1ZjbW9LSy91K3lKSUJEODdNVEZ4ME51TzB2cWJUcWM3QWUyY3IzRXFUMTNubmVTaWp4RWhDcmlENUxFbTFOL2NPUTRRNE05b051QXFHazVTRGZnRzVEUURwMWVQakl6OG9Cd2RGWFZQSGl0NGpjdTRhUE1ZYi91MFB4WTE3eTBCVEVPNkkwTENDYlZta1VvaDVSUHpYcXJXb0NBSXNuVEtOdGNkVDBFODRBQVl5VURPVFZKNjY4anc0THR6UC9mK3ZUa2tDTm9lSitPWjllblFXZEw4d1lYdS9aTWorMitDVDE3T2lrOWcxY21STzlqamFIWldJNVM1QmhrRE1BTi84MWpLbTdqK2Z2d0JqSStLMjM2U3B0WVhBQXZsL24xOGZQZ0c3NkRxczRlOS9jZWVUdUtsczlXUUxCTFBxTW8weXhLaFVpNjFRR0U5bXBFUHIwclp1blg3NlhJNGQzRzRxNUxmRnNkcVJWZnlCM0dsUml0V0ZBa0EyaGs4aThadGtzUklHK3IvT2lUaDNDRTQrNnEzNjB2YUJUa1huTTFBNTFhamtZVnpJUXNNU2Z3LzU3QnZmSFIwcEZudFl6cWR1UXJSVUl0WU41TTdDeVRNU2Q5ejRmU255ejNQNW14S3pGOXAxZWxZTW41T2dlUnQ1WHNDTDB0b2xTVzdqSDZMdk5SbTg1VE5ucVlnMVY0L3RKY01iaUJoa0k1RHVNN0J2WEZzZU9qYitaL0RiMmNUeEJlOXZadGtlQ0ZCQ0VxYXZCM091UU9VL1k4M2h2UEZKN0Rxb016ZDNkMFpFQy9NWFRZMllTQVJBMVRkQkovRkw0cVpBYmllbnN3NWpuaVZrZTFLZENwVFpKY0ltblBoL2l6d0NSK0ExbWNQdTdzejU1SjROV21CSkRlYnZsSmx1SmpsN3VMQ3grWHhta2wyY2Z4anR4d2NqNWs2UmJRWHpBaHFpZGhEQ3hkMzBmR0tXcnljbTBHb2ExdlVXVnNNY1BwSlBDMSs4MUl5aWZBbytVRDk0c1NKSS9zOXFDbkRFYVo0cVpGZFJXMTd1ZHBXc0toSGVVK2owU2JVMzl3VXhzMHcvRGxwYTVMbDdsQjhubkhDdWZBZng4ZkhqNWVMUFp5NURRRlRpUFpKZFR3N1VZd29FYUhUc0Q4UmRUTjdxbUQ5SzFEWHZIK1JIck42cWNZZmgxM3BIZWUzQmU3OUFMcm5wcTBXR3l2TkNuUzRMcVlwaDQ2TUJPRGNMWEw0bXpDYytucHNNMnN0UWZWUzk4eEo2bm1BM2FzQkJTc1JkNlRETjBkSGZmVlZvY1B0cFRaQWlLQzk4d2trTDR4SmphdGMwd1lNa2lDOUFTeU5sR2dwdk56TWRpSnFxMGcyb1NSUWNpSEFkeDhjSHI0OUw5SGhwY3JFd1pZdG1lNmdUZTgzOG96WjRLelkwVXJneU9WcmpBUUlPbU5nWUdERGN2RVYxaFplU0tCL2JvS2JpcTlqL3NDMmhjUGJWRGlnSVFrUVF6TUJmdHZTcXhXMFh3NXloeE9TSjI5My9OeWhRNGZ1d2R4RUlpL0ZvNDZ6bHVSdkszY2c0ZXl6elBKblJRa2J1U21CWDZ0bmhGTkhQeWRMdGIrUVpnOVNZNGpiUWVKL0ErQUhxQ3lacHdZc2hqOHI5ZHBvS1ZVYTE5YnNiRTJCL0JSQ0x4VjVZVVNEZk01dk0vZHhrZytJam4weFhGK3UwV2NSL2E3YUx6SG1DRHppUXZjUFJqeG1aR1R3QzNrSmZ6OWxzSGt3c0xxN3QyVkl5M0ZmSmJrdkFrQW5kNmNUUDRGb0FKUXZjc2dUWDRGVkl4amN1blY3RitTZUU5MUFxYWxiaFlxRERMK1hBRnpmd01EalNENUhhc2lJRWtlanVWQS9QWEdzN2QrOVlhcjlMQUtaenZiVmZMWEJIcnpvWmlUaElmRXFsbHdBdGs5SnZRRHV4TEtvd0xJVWtDT3RWRzMxcHJOVkxMTlBrZ04weTRaYkFBQ05XRWxFUVZSejk2d0NEemNxa0syL0hxS054Qk5tS3dDVE9kc3V1cGtMYjhuT1RIM05tNEFsZ2FmcjJiRmpnTm53eXJrMnNsSTZXU0JXS1paYTBieUVEZUhjamNjRGZxL0o5TmNBdUsxOWZSZUNlR2xNKzVXa3o0a3FVSjFDT0gxcVpLUXlia2VMWm04VmdQTzEyaHAvR0pLd2VTWU5Ka1NPelFncldSdWN1eStBci9vbDkxS212UXY3K3JaZmlFQWZJWG54WE1KZVJhQllKUVptNGVPclV2djRndFdGenVGOVZQaUprWkdSbitjblMrQXZ0SnNxaEFZQWE5TXpqYlpUalpyY0c0WmZIUjhaK2daODlkVWk4UW1OR2hVczZBeXZJZTJpdUNLaFdTdmFLSVZaT3ZxUytTS2VLSjFPOXdsOFBXbW5TWEpLcm1waUR0eExVeEwrNWZEaFBYZkR0M1hXc244QW9QUUFYd1B5RDR0T0hDeFZpRjFqYWlsdWNaai9KREVlSXBaRjVXTlVhNUoxQTB4WjlIMDFwRTdsckxNd0N1QmtpK3FpNitrWnVCVEFsWE5WYWtsdUNyODdNVEV4Nk1GTkdSSE4xTlFHQktuTktyZEZrTlhwc0lCOVJ3WUg3MnJDODJ0dFFkdWZtbG1tVWVBN2RPR1hacVpPZkt0aUMydUZyRS9kelptWGVoaysybS9pSmJYNnJmR2lROWpwVjlwTHVYNjR0My9iVTJINiszblYrQ1hkTWF0NEdWV3UwMUdsYm80YmNGUnlyeDRiSHY0NDVtZ212Qzl2UXZpQXVQcktxR2VYM3Z1NjNKYmtxcThPRy9TeG5QLzJqbXUrK0FSV0RVbVBEUnQyckE4UVBvTTBTL0NtdlI1SWpSS095YlY0VzA2Q3prNE1YbXdXWE5JQVlEOEw3cDMweWJHUndjL0NrL0xWQjZ3UWYwSVZHSVBFTW5DSHF0K0ZYTmxRa1NkbnhKUGM4aEtISjNaK1BORlVDNmp4Szl1eGZEOGZXYWpaWDhocDkrRHc0RW0wWGxKWEFNeFNmS29aMTZudUUweHp5eGRWK3NycHBIUDZlZzFvZW1WSkVKd0pZSDNabGRKVnJxWVRmcGtIZXB0QmZ3MkFTNmUzM3hmVUU1TGxkc3pISE82b0V6OTQ4T0RCb3hXdlJTSEdRRllSR3l3YzJPRlBTREliTHBHSnFOUThWZlgxYzE2V1FoWlJOMFgvdG1lVGVnOFpyRlBSS2F1czAwdFdwTTY1Q1lPVUMzL3RFUHpSK1BEZ3RmRVQ1V3lrdDFKTmF1YUNOajBqR3RibXlxQ0dxTW5OaW9USjRXdkR3OE8rK3FvRXNQRlNwZFZhc3laOEhLTFMxRG9Dd3VSc2wxTHlBS0FBc08vZHR1MXNHSitPeGhEd081QW01L1pQdS9BdEFMSSsrS3h0LzdyVDZmdVMrbWVRYXhYMTdiRzhFMXdpMkZucW9xNU11Z1FDcHdjSXpsOUdoay9GclJRck96NzVmeTYwK2hHSWJ1alMyeDVJNHRreEh5THJ2Lzd4UXRFbzZOZFR4Ky81VHVLT1l4a0FUd0NVd3dOSVM0cTNJc2QvTlFPNFc1c01xMmpMbGkxcllYb2xhWnNhNE9kRWtwSytQVEd5K2R2VitEZFh6RjVYWW1LRXhUeDhYaEt6ZnlvYng3S0VRMldKN2RRT1JKZnV6dSttbHlKS05KdThndGs2eVZWNGlWUVh2clppeisxb05FRlpGNFlmZFdIMjZ2SGhmZGZtdlQrZm9HaitPUEVGU3h1NGZGdFdsUjdGRjBDYUF0d1h2UGNxdlRGZUtqZVVidE9tczArVDRjVWsyK3NEQ0pPY3d1bGptMkxBZnNPT0hldnA5RVlqZHphaTVTZUtRUlVDN3AweGNidHZIYXpCcVd3ZEdOaVJzdFEvbTFrWEJBZmxZdnd5c0hReHZLd2xUblRla1pwZmZiWGcyUW1SVEVsdXkzSTRLK3ZYWjA0WGNONzhwV0VWdG9aRkV3Q1NDeVg4b2hYWForUEdqZXRTZEsrazJmb2trd1FDQ2NrUi9QYmh3NGZ2aGsrQUwyVW4xTnZibXlieGU4cWR6R1NTTmlDME94c0VQMjAyM1d4ZnRmYXhJSzVxWVBYVm5RanhUOEFOTTlYcXA4ck5oMVFCcWZ4aHFhODQyajJDcG9zdmI5RUtaU3hOOUQ3NzgvWFl1VFB3cSsybGtJMUhmdktLdGc2ekZkQUxkVXRsV2dYVnkySTR6RTZUYzdkQjdnV2pJME12R2hzYnV4Vys2cW9Wc0IzUzZmUXFodTYxUnU0b1h0RlgxUDFXR29mSEYwRDQxUHFodGY4RFgzMVY4dUI3cVVLaE8xWlBQWm5rL2V0LzA4NmszclNsSkwvZkN5ekxxbXoybVdaMmRkenVrenh4TzBubndxL1BURTE5MkFlZU5ka3RoNTA3TzlySjF6T3d5NWRzMXlybFAxaEZsQlB6UUJkT1h1WDlqSVNaVFMrSFJXOXZSeWVnRFN4cmtVcmRxcXZ3Y2dtQTVHQjJSeXZha3ZaVmE1NG8ybVBrbEdEeUNpSkV5ZDBUd24wMlVhZXhyQ1RWTDJCcjB1NVhEbDg1T0RnNDBTU2drd0RVMWRXMUJ0Q0w4NnJQRWsxZ1JmMHgrTzdvNk9DMTlZais2aE5EZWsrYnFFUFd6RzhwVGN4dnBTOTBxRlRCdm5DKzRRTjZ0dDRkbnU1WDI4c2lMQWkwOS9ablhrYnFQVFJiQjhnQmhlS2RTaW9EYTNZTWlqRy9JYXFvK1VvNGc2dEdJNzZyTFB6bGRhdGdPK2VZdW9yazFkRUZVS1hUNlJlMkdwUk1adVZpeE92b3NuKzNHN3VuL1JhVVFIVitDU3BYNXU3dTdpMUd2WUlNMnVyTG1aUk16Qk5uYzBmQ3NIM1NRN201ZmR6VTM5OXJzQmRHQkR5SkwwbXVadWU0aVI4YW01dzg1aDFZOVlBbGcwem56TlRNMjJCOHVrTG5va3hTalN6c0ZSVVBzZnl6TEcxYUJ1ZEY3ZTNaTGlDMVNjb3ZQeXZYYnBXeHdDUWtIV1NJQTYxbVN6WVBEUFFFNEI4WllVbHhYK1hiY3dnL21UNTI5RFp2ejh1VVFHZVpCYWNqVjRGRUZFL2xsRE41c0JqNk5KdXMwS0lrcnB0Qis2ckhrWGpJb3NtczlWZE5FYUJ6T2tuaEE0akdmdGZQeC9rMGJkTksyTjQrYmRsd2h2RXR4Tnh1NVIyRFl2eGxMQVdaQ0VDTUtCZXh2YTFOMndCTXdsLytlWWx0UzEvZmpqTmgyVGVRdUFhazFXYm42cVpXRG9BWlFjbmQ1c0Qzenh3LzltOTVmSUIrd21DTFlMdisvdjVlUi8wVnpGS29LZDduQXJ0VzdJOUVnWjhaSFJrWjlURmlhZkVKckNxc1c2cWo0MHFBNXpXZ0hMOU9iNWtRM1BEWTJPM2pmZ3RuOTZ1amsvWm1HaTlxREhHN1pLU0YwUCtNamd4K3hRT3c2Z0VMc0xOakpqMzFOclBnVHdEbWNWNXg2VnhrcFNlMjRDNlYvUVFDU0JJWFlhNGlvM1gzM1ZKWG1Oblc2Z0ZpcVRHUThjNklrK1RNU0tzbFp0cUJGeHQ1WDBXekdTMmhRaGN4dXNuTmhzSkhEeDA2ZEk4SE9PV2NRWUN3OHhnbFNPZnNCZXVsdXJuMlZ4MTNvWDdUVEZpbHE2dHJxMUYvbEhmWnhtUmVMT0ptaTRlVGZHL3E1TEVmMStNTVY1UWpiMWhzNm1YaCtacTY2NjY3T3Rlc0hRRndSa0UvV2JVNXpKL3FxN2FROUpNSXZjenlYWFgxOVYyR0lQd1hzK0ErOGNWYWxacTJrQUJWdFNodTNDNFkzdU9FLzNCWnZtdHNiTjh0OHpHc2wxYUpGVVBhWHdkbWw5VHZZcktvUGptUzVseDRiVGF3ajN1UHRiVDRCRmFGOEtlN3Uzc0xoRCtsV1RDWCtHaUJQRlowOEh3TFlXNXFYVHJ6ZEpMUFNJcHNlYUZoTXNMa05DTHFiUUJtdkNPclNuOWRPbjNHVG5INjliVGc2WFBaS2xZU2JKWjNFMXhPVzBQWnFNaGEyUkVSY2NWYmxueFU3RkxucWxpcUFua0xOaWcvUm9GU1lUWWJ0SkJPYWt0Ly94a1Vud05TWlUrNHF6WllqSGcwYnA0NWllL1hJMEd3RW54MjlDL3VyQitrWGJUcUlra250MWZ0OXR0bU9yZHRIUjFYa2ZhZ3BLdXZGQ2RYblhOSG5OemZWelY1c0NwcnkvS1NIMTRTM0hydzhPSEQ5L1N0UGUxQVVlSXlGajZXaGZkUUJiOGwyV0VJdHdHenRzL0x5clhwNmttbm4yZ00za25hZGptRjBjVlJtYU4xQ3VwZk1aaW1TdkVmcGZCbmd0NDRPalQwdi9sWXdXUCsxb28zZXZ2N3J6THloWE54SXBQVmJRbUVQblpnMzc1Skh5T1d0MGxlS25EV1FYdjcwMEE3ZnpFZ3JBVXNlYURWU0tQVTA1TTVoOGEvYlJRblNNUlpBeWU0dDQ4TkR2NFNucFN2cW4zcjYrczdFeForUEFoeXlhc2xFQVhMT0hhVjhtSlZkbGJqU2c5dGluaG9XbGZDZEpnR2NFN2g1RjhOeDJkUkRrdTNUMnpjZUtTVmZFSTc3RmxtdGoyK0FVN1lweElTdm5qdzRPQkVIaWoyVWtMUzZmUXFFS2ZOVjlVS1JvbVdhUitjMDdVeDhEelY5cDBBbEU2bit3RDc0NWl5UTRtL0pFa0hmbVI4ZVBqSHRhN0J2SDV3RnZ1STViUnhzK0NQb3FvdStyTlRIMTB6QUViaHJxV0h5WEtKODZkaUQzS2tFZUtBWC9JVnJXdEtwOU9yZWdjR1htME1QbXBtMnlFNUVFSDV4cndZV1hzNVk2aEw4aGRGdjNUdWcxUEFFK1BrRmVHSjJsc3kzdWp0M1g0V2FXOGliVTN0UUxlTU9KR2drL3ROZHRxK0JWOTlWZlpHZVNuVGNHN2N1SE1kWmRlUURMRG9lb2sxUHIyWFJ1d2hnTFlnaFZlWjJjNmtXd2NaamNSVEJPenhJd00rNlRlN09tZlMxN2ZqVEFadEg2UHhjdWNVemo5MHFoQm5sSUZuU2c2c0tYdXFTUFQrcERQUTJibWxSUTk3L0g1VFp4RG9tei9GclZnQW9pb1dmZmJudDJMMzd1a1dTTTdFSUdmYjJUUStPNllGUy9MOU9rUlZQcmU3TEQ3dHpVTDV1a3R5QnhSTnoxeHNNMnJlTWdHZ2k2WkNYdGNrWjV3QUpBYlBvdkhDQnJUSVI4U3owdlZUQ3Q4QjFENFFSVUNxK3B1SlFuL1BoZThYa0R1elhrcXdRczlXemthSEFFSW4vV3EyWTFlbGZHY2hQMXFlM3lCeExvQ2dIanJtcGZYd2V6cWRYcVVnOVk2QXdSdEpycDl2MitxbER1WGlsM2xmaXJqYU1EWHQ4T0Y0a0VmdWd0eGZWcmNZWnRpeVpjdGFwdHdiellJTGtteTlYNlJSd25zbkp2WVB3aWV3eWhMZlFsaUJkSzZlZVJHTWx4VXZ4Mi9pVmtKaVA2TFd0WlY2TUtMV3dmNyt4NHI4ZlRTR3Ywd0E2YVREeU9xMVE2TkRkOEtYaFZhY0pPanI2enVUZ2ZzWXpTNlhjN25idHZJQ21ucHFPMHVCbmFLL3BJQUR3Y3pNUGEwY0xJVU1Pd01HUWZsQVVlVXRZTnlTeUloRENKQnViQ2t3VGJ5R3RPMlNtd1BTczVhbHZpWW1LaHpoZDhiSDkvOE92b3F6Zk4xRmNMNFJXK0x1VHRZdGVUVkhCRTlJeHh6Q201ckZadmIyWmk0aStmSUd0TWhITms0dXkxRHZQRFF5UEZZUEgwZHlJbktmeGZyRGE5bXc2RmxKdHZuVFVkVWk1bXlQZW5wNlZvZnQ3UmVtSEFkSVBLSzhJNlVxdHkxS1JxL1BaRTQ3TWpoNGw5K0tGYVZ6c2I4TjNtSGt5K1Zta3dwMTZvS3BVVWR6eHBkUVlLN04rK2ZXamhQYk8xZi9rWmxkMHhoKzVKajdTdTdhY1ByazUrR1RWMldMVDJDVkNRaTd1akxiYUhnWmFhblNHZG5LOFdKTWdBb2xpRE5OWEl2bFFDUmRnMUhhUEREUVEvRHZ6S3l6RVlaSllFem02RDQ0TmpyNFhmamtWY1VnT1oxT1h5RGFCMmk4WEZHcHVCVWYwWTNDcWwyT3RwZklROVhRcXhpM0VMSTNsY3F1QjNDb1ZjOWV3T0JTMG16K3VTbTBNbVcxaEJSZUJybTdRbWxmcTlpVDBOcGVFQkIvVUc5L1VBTGdqRW51b3hWbzlVcVhYRG5JZmNnZ3FJL05YMFNDSllJVXNTOTcwazcxOElFY2Nmc2FwdkI2TTZaZHNoTXhvODlQbW5QdVJ5ZFBISzNiY0JMU0RpcTNmYWlGZjBTRjdGTTBDcDNjN0k5STVmb0ZRQU1EQXp0QzhSb2FIMm5DdldrNEhTVGdCQ1NSTUNVWTY4TVphN1BaekJIZ0xtOERWNURPWlRLZGNueUhCWHg1M3ZDc3lvZHgxS1QyWlRocXpEYlJ0Z1F4c3BmRnVLNDNuWGtleWI5cEVEL3k3QVdRSFA1bGNuTHlnSThUeXhlZndDcFQydHIwYk5MT0tFMkd5cXB0bDVJK0orUWVyTnprRlFGWU8vaEtNN3Vrd1ZuMW0wUG9BNmM0c0dsSmtOdzNNSEExd0hlWUJabks5b3h6RkZuem9jN1N1NkJpeHdkbFBvZ0xmaU1RNkFqRE5XdGJmRjlXRncvbXl3bjRTMncxNHlTQXNDK1E5alQ1V2NrbFZ2c0VQWitjSGViQjRuRnp6VGdvcWhweStPTFk4TkJQdlMwcDM0NUUvRmU4cEx6RFh5N2VuS2U3T1hOemNPc2Rhdy9kMFFTNm1lcFk5UUtTVnpZaWVZV0l1UDBlaWUrczUxUk1BZE1FUW9CQlJZYTZQUHNqRUpCMG1qOG1GZnZsb0xkLzJ6TWQ5RGNXMk5sRXhONmZXMWVWdElOVkhMR0ZyMDl1RWxPWEFQaVYzNUlWZzkyRDNoQXZaNEFvZWFXeXdVZU5MMTNxZSs5K2w1bmtLcGN2dDREdklHMmRFdS9TeVUzdU5YTnkzNTg2M3ZsVitLUjhSZUlUV0dVbzlkWjArZ0tSTHkxUGt5dFBZcWtCaVhwSmR5OTRneXZKQ2JyZS9tM1BNZU5MR3BsVmQzSW41UENHeWVHaGZmQlo5YklCeTg2ZE85dVBUODA4aitTYlNOdFVIYzlCWG9CWjZCSytnaFBBaWdjUExoZ2ZMcXgzcHUwQWZ0MkNleUlBS1FGZHJQOFJ5VzBHbzRBU1h4MGJHenZjQ2paS1FmQmlJeStlMXpwWVVoVnFtQ05Qd0RsM0lLdmdmYkVOOGJha1RBTXdRKzVJUWJ2bWZsWXYxVm93aGxDWTNJM2Q0YW4yYzF2Nis4OGc4WEtTdVdySlJJOUIvRHFmR3h2ZS81VjZubHM2VGNxUTVhSjI4WEtOT0pmTW9wQU0vVEVwL3l4dDJiSmxiZHVxTlg5anhDdk5vb3BHU1FBNXg4ek9Da3lkcXRFM00xZzI3YmRreFlqclRRLzhyUmxmaGR6ODQwVHhlNFg0Y25HZ0JXVDlwcldpZlFOMnRTTTQ5cW80NWdnQkpEME5PMWQ5ZGN5RmZNZWhRN2ZVN1FKb3BZaFBZQzJ0WUVIS1VzODNza2VTRm5NeWxESnU1WTVmVFQ2bm9wVkoyRTlFSEVwcEVuOUtzRk5vU1BWVjNEcW9MNDBONy84Y2ZGYTlvdjA2TVQzOTdDQUkvbFdDMVZZdGwrTWExOXdSbTVjM0tZSmRWTWFSTFNzNU0zdHJuS0owZXFzNjluUTZ2UTdRZWNtWkpqSzY2d3ArR2k5ZXN4SzRSN2QwbWN4RkVGNGlTT1dyUXJXS0pWQWd3SCtmSE5tN0c1NWJveUpwczdZTENXMldWRUh5bzBMY0M4Q2tteENSV1o5U0FOck80QldrbmRXQUt1UGNKYzA0UXJ3ZmRVNnNTZ3BLVHdLck5OZ3MrQm9wK0RhZmNoZXZyYU56OWQvVCtDY0FKSmZQK2FmeUlLMnEwTEJGV3lnUWRqYm1FN2w3YkxYOEpKb1luaDU0aGhuL2lrU25pZ1ZLZFF1ZldFVHBpdkY1c2tyRjl0S01zWDV2LzdFWG1QRlJwYnVzRW9nVHBhOEZ5UDdBMjdMcWpJU1g0bXVqM3Q3TXBTWTlUMUNGaFZMRnBuTlZQbm5GUzAzQXE1MldlZ3VORnplcWRSQkF4RmVUMWR2aW9NWWJwaklCUzkvQXdOV2t2Vm1hRFlhc05oUmNSYzZncktHaVMvM1J2Q0dsSk5CWnhUdHBqb05FZGdKc1QrWjR6Z2FUMDVLbVcySTlISjVvWmwzemZHaVpxakRmRnl3VnZja0JwSnlHWEJZZmc1KzhWWVh1b2owZStwREVMWkVBbXB5eUVuNTdxckZLVDMvL0l3azhYUTBhVUVLU2t2NTdkSFQvejFEbnhGMDB1SmVxM1pnWGVRSUJScXdETGtuQjg5VXM1ZVRVMTU5NU9ZMHZoeUx0RW1qS3pWbk8rNnA1R1luaXcyM24vdWFpelpzSHR2cDlXN1lTQUhCOWZabUhtdGw3UUs1VG9yNXY0WTNtUWdWa2dhOFN4UW0rTEtUbDR2eStUTi85akhoZDNtQ1BoTzJLNHVvckhjMkcrdERJeU1nSkh5ZFd0M2xlQ2xzMHBkUHBWUXowUnd4c2ZRU215TXFmcHR5djVMTXFLM0VQZS91M1BRM0dwemFvZFRBSHZrSGgzOGJHQm44Slh6RlJyaDF5ZlpuTWswbDdIeU55M1JLM0lLcENGUXE0cFVWSHNOeXp1QkRzTEpHNUVBRG4xS0puQ003eEhCQURjUlZMM1pNQUpFRm92eWwxYzVVYjNEQWQ3ZW5wR1NEdzlMaVpRV1hIMVVWSHloZjVpdjVIU0hEU2U4Ykc5dDhDWDE1ZWtWNEJnSnpyVC9Cb2lDUWdqVTNSL2ZvVW5sRnQzYnE5eThEWDAzaDZBd0o3RjkwY3UzME8rcmRrNEwyTkFacUl1OU5VMHFaWDc2ZDdlbnZIMS9tanNvUmY3aHQ0Q28ydkJ4aG96bEdXN1hJcmdzYjVabkZ4Zm9HU1FDSFQyV2xuK2UxWnRqb1hkZzhNN0dLQWZ6QnlBM0pjZm9tZ2dvV1VMMXpDUDVkUThJVG1GM2hKMW5kbU1wbE91dFNyYWNGV3FSR1hoRG51SzFMUVAwMk1ESDdUeDRuVkd3c3ZSUlJiWmxmUzdKcEdKai84UnRjUGVQVnUyM1oyWUhnMWFXMW96RzFkUk56dXdoKzQ3UFMvZUc5Vy9sNTFkNmNmRE9HZm92N3pVazZrMm9Sdi91TUtKWTY1UkxLaFVEYWlVQ1ZOTVJEVXV1SXNDS1NrN3hVWnpzeUVNMDJlRUNGVDdjK0M4Y3lZak1NVzZjOVNTU3lWK1VxUkxhR2tINGN6VXgrSHY1MnJKaXFCZ0hOemVkajZuY2NGMVlQa2p3NE9EK2VtWjdwVDhWbmJPOE5ubXdXWEszbmlkaURpN1FnaDk5NkpvYUY2dDdVS0FHWm1kRGN4eTl1WjFJSGV6TldyVjVXWmNsbUpaeWpzNmhyWWpvQ3ZJNjNDS2hnV2RwbmwrRmdXZGRHRTRHaGNJNFlYK3kxYW5saXdweWR6VGdCK2pGd3djSWxKcVBqQ3hOVlNuVEhGZnNlNUFhZGVXZ29ueklSNEdveVBLRDFOdXY1eG9wejc5WWt3ZkQraUxoMHZQcTlSUDZYdTZ1cGFRK0VQU0d0UWlibGE5TG1iY3YrQVhidmFLYndHdEowTmFoM01FZklkUW9qWGpvMk5IZkpCNTVMN0ZOL3c5ajAwMVI1OGtHYjlTKzlWclFFb2k2RGx2T2RuSVJSZExPRlY3QW81LytrSUJLMXJhbzNoT2laOGZrU01Ta2VQTmJHZjFOYjBqdk5Kdkt4d3BGVUJ3aGFXNmlqUDJaSVpTaCtKUnl0N1cxTGRjVmQ5L1NBWGZDTkEram5Ra01SUjRZQnZZT0FTZ1grbXh1aUhJMGtJdnc1blpqNmFGQzRLdzd1UEV6aVpsRmJFeDZ4TjJld2FmMGlLWWVETXRyWjJmc2pNenE4SVEzR3hEMXpTRFZmOERua1pVQkZsdkpmbTF6blgwOU96T2tqcDc0MTJuNWhJdXp5ZFV5MHZXK2hKbHVxV1dZaEQ4OVRRazdpM1N1N0Q5ZmIybmtYRDM1TFdnY2EwUTBWanQ1MDdtZzMxaHNNakk2Tm9YczdYbHRoRUx3V2NkMXRIeHgvQ2dpYzJLUGxSUVk3RWMyaVY0d2pUZHg5N0pvRnJHc1FIRXNYZ0pPWDBrZEhSd2UvQnQvc3N0VWNSd2Y3QXdOV3c0RDlKT3dzVlZRL1VVZTlWYUxTTmxuanJ4VkI0c2NlNVZqNm9Gek93RkpMa29SRDJIRHg0OENpYUwxRkRBTWhrTXAxdDV2N0d6UHFpZFdEeENrR3lQclpFK0tVWi9CQ0lLcVdycTJ1cnBQTnpTMW8vSHp3WHNVZzZEb2RmblNxY2trR20wOEMvTTFwdmJNZ2FVSDBsQU83Zng4Zkg3MGhLTjFPcGxIUEFpZVM4dFFDeGh6T0pEYWRvWmQ4Y2JVRUgzczRndUtMeXFyNkVoOFJGclZvWGJNbGt1cnhkWERaeHFIcDZlbFl6YUhzbnpKNDBPd1d1UktGODdaQ3dVQ1Y5T1RtTUVva3Mwbk5ndFVpTXZ6NlRPZDFTYlc4eUMzWTJzUHBLSkEzQTV5WkdoNzdvc1YzdGhzUEwvUFZ3M1FNRHUwUjdTYXhvamRCcGxaNjRzMVNpeWllejh2ZXZxMi9iWlF6NCtzWVI4czIyRHY0bU80MS85Y2VvTEFnYUViYUQ3ek96N3NpQnlDclgrMG9CeTBLdUlRbWdHUDI3VmtSVThPR0NjaE92MEpLSDFHRlZJNHhnRSt1cnk0clBJbkYxMUU1ZVJvYUtyTmJxNUtxdnBpbThhMmhvNk02VzFadFQ3UXhzVGFjQm0rcFBUcktBK294aGVJcjBVdGtCWGszeTBmRkV6RWI0T1VMNlhUaVQrbktTZWprNW1aNDI4TTVrVjVBbW93ODNDK2hWYnpyellwQlhWaC9ZY2I1MjFFVDVPdTlCVk1RUnVMUE51VXNiaE8rOEpPeGZlM3A2VmdkQit6dUR3RjR5THpaTlBLd3B4V3UxVkxGQVFSNHNTdkp4ZFF2WXVOTmt6NlRaMVEwc1VvbGJCOFBCYVJmK0kveUFyN29FL0Y0V1NCdUQ1d1hrR1ExVWJCWTNuTVgraklXY08xWndNbXVXekxZdHdGdEJwaHREeUJkenJjZ2RSNmpYVDA0TzdvZXZ2aXFwNXowOVBhdDcwNW0vRVBoK2tKdm1ibmhaK1ZHcDZhMHdadHpQYTNwUXJhKzFDS0VyZWdHZW4zTmlyUVlzR2RoRkNacVRpSmdYN2hkTkdJeEVDZkgrL3ZOQS9FM2w3ZVNzUEpGRmlHWVU4TDB3blA2U0Q4NnF0ek11TlhNYXhOU2M3dFp6S1lXb2t3NlRBTVpPaFY3MkRBemNHOFJiUUhZMDRPd29UaDZjbFBDVzhmRzlRd21CNy9oODNUQWpZRy9TZW1KUzRJL0xmTDNxN2Q5MmxSbmVSSEFWNnRGV3czcW94R3dtakFDY0JkWkIyS01LWkNHOHRKYStSWlZYYmUzdlpHQXZrZUx4S0xWYy81U04wWXFWZHBWcUpTeW9rN1B4QjQwZGdhVXU4bHZiM0xpMnV6dHpydWordElId2F2WmlVdUNiRDR5TS9NYkhpZlV4SUY3eW5YZnZ3UDBsUGNzMWhyaGRrSnlrdzNQbEgxb0NCUlJyWVZxaW5XbDUzd3JNTGtxcVU2K2syVU1saEEzU2IwVVRtZkR4MGRHaEw4SDNNeSsxVDdKVXg0c3M0RDhZdURHR0sxWmlTNWRBeEtwQ1RUaUhRS1RqY3VFdFRvWCtUbFVkNmRrcGNya0VEWVJRR0c5Rm0zdHkxYW8yZ0p1U2RPb0FvQkIzTlNBSXIxaFhBVmlLd1Y4YWJYdjFGeHA1aWF6U2FpMlFFWThlOGRieDhmSGo4RGQwVllmTWJiSjdnZWlhYXlOWFBWVXNLdXR5YmdMQWFBTUQ2ZmlpWm11WGdlODBzZyt6VlRLSkhwMjQrc3A5ZlhSNDAzOG1mRTRqbXlCbEUzeCtSeEl3M01zZmx6bjgyOWVYdVo5Ujd5RnRBNUJFV3czcmNleHl6M1R4bGkxYjFzTHpZTFZzSXFHbnAyZTF0WFg4bzlGZUV0dnB4VXJDQ2xXbzdQdDdGWGlReW9pcFZBVEdTQVFKYWJQZjNtYU9FM2UxQngxOGxUV09Iem1PRTBFNS9kUG8ydFVmOVhGaS9aeVdsM3ppOWhSZlM3T3V4SjJpSkViQjdiY0J2VytlUWEySFdzOVJkZVRBNE4zTGZQOWNiKy9BNDR4NFVld0lHMk9VQUhNdXZGbFp2Z3R6OUkzZU1CVUZ5QU8vRCtyVmNlSnFDWUM4MUtpaWloSExBc1FoT3VkZUsrR1RzK1BhbWY5ODFWWmd6VXRVeEJWWTZNMEZncTIwYWF0T25sd0hvVFBSUXdTZGNLWWpUWFoyQ0VEcGRPWXFBaytwRDVjZUYrdkh2S1FXUVpCeSt0ZlJ3Y0h2d3QvUTFhWlhKa1B4ZWVkMUNNSUZnQzRNUXpaYUwxT2RxLy9VekI0U1ZhL21xQTRTT3pvaUVVanVXRGFMRHdBM3pLQVJpVlZ5VCtMY0pNUTJIMHhFZG1icjFvRWREUGhlbWcwSXl0T3I1c043RVlVWnprdXRXbld2TXRNYVhwb3MzdXJwNlZrZHRMVy8wNHd2QmFUWUQ3S2F1U2dWdzhlQ09CSUZNR1U1Zk1QejN5eEpUK1BleEhhdXAvLzRZNkY2WWJxeUpLYVljZDhQcUxkaTkrNXBlTTZmdW0yb2x4d283T2g0T3NrckVsZnMrS1pCY3NjbDl5OEc2MlFVUWJ2Q05wVVZmSXhDOGIxZ3Rtd2RQQUc0TFZzeTNXemphMGxyMUkyY29wVlZpRkJ2R3h2YmQ2c1BPRXZ2VVZkZjMwTmhmTGZSTnNmclovUDFWVVhRUnpGdXFxcTIyRVVBMkoxd29YdnoyTWlXZndaNGdvdGVpRFYrM0FXR3RuRjhiUFhjTXdDZFo0a2FpRTFXdmQrNzRzVGg2RFJ3YzUyeUMzWHpCOTNkTzdjb3dHdG9kbHA5YlVyQk1xejRoaTc4MWNuajdnUGVaTlFHR0FFQUlYZk9KcVlUc2Y2QUk2OGJIeDgvZ2NaVXl1V3F4Qjlod0I5cXRrcGNsVVp0RlllQkFrN0s2YzBUbzROZmE5Qm5oZUQySXFyQ1N1NzF4TXlHRFR2cWZMNWJMNmpyNit0THQzZmF2OE40c1NRSHdlckNBWm5NaWhLUXpJTDFBZXlLSnZJYlhzcjByVjFkWFdzWXRMMlRaUG1WVjlXRVJBWHpUL25mVkVMZVh0NGJrWFB0ZnB1YjBzNkZ2YjBEOXcrb2R4aHpsN0pxQ0QreW5CdDIwQ3RpVGxOZmZWWEhUZlZyRUkzVDdDZjRGNVh6bkZUaDFSbE5tWUwwdGJIaDRhOEltSWgveFJJWXNreEx2VGd3aXFwYWVkb3lkWWJFSlplMHRhM0MvNHRIN3phd0pKUUdwdytUN3JQZUtKVThYK3J0M1haMktraTl4OHg2SkRsd1lmSnFJUmhnaVROUURuZEJnYk1oQ1pKSmJpb1UvbjVzWk9oVndBMHpwR3NyL2o1cXpQL015U3EwNE5odm1Vc2hZWjRZQXJLVDVwcnVvN2ZOUElXMGl4dHdVNWViYUhkUDZQaktRNGVHeCtDVDRiVW5YWWp0eVF6R3p1OFAxcEVHbldrQzBKWXRXOVl5Wlg5QjQvcmNLTDBHK0RsQzdsdWp3NWUrclVEa2wrUW0zZ1hnU0xJZkRsMmRuVmkvZ3BNSnJxdXJhdzJDdHJmVCtGRE1KcS9xZmxTcVZKdWlmZGR4WWxVUDkyMkVMYVZ2QUI2U1NyVjF2Q0ZJQlM4UjZJcUNycVZxVkZnUGZjeC9JdFhyQ1M4RTBBYkFlWjFzb2hnL2s3bmNVdndveVRNMWF5OFMzWjZvUkZ2dWhCTmVNejQwOUF1UDYrcS9zZDZnQWdHRHRyK2kyZG5KSjBDWVUrbzdYWWozeGNxOFliRkJyblJzeXhKMXQ2UmJwdnZuZWcvYzhRd0RYaTQxRE1RSWhFSHVKaGZ5SDBkR1JrNDBDdFMzb3VQSVpES2RUT2x0Wm5hK3NDQjVWUklNc0V6d3UvQ2NGRVErRGlSRkhBNUR2WEJpZVBDdEFBSWc2dHFhR3l6SCtxb25BWkFnY0R3UFpMZU1uZ1RJM2tueW5tUlBrNXBOWjlXVlRwOVA0MS9IbHdxSko3Q2krd3o4YUx3ejlUMTQzcXVhZmZyT25UczdhTEZmVGV4MUpGQ0hHL2k1MU42NStrVkdQSElPcDdBQ08xa0RBSGYyYjhCbmNyeVNTZXRtbEp5WWJoOENjU0NoS2pwS0FvUWVwR2JPU2NENHQ4STVFWUMyVkh2SDY4MzR0Tm1oTjRra2ZhdDkwcUx0VzR5WklpNXI2K3g4MkFyY3Y1YlZ1YjcrL1gvRXdQNDRENit6WUx4VFRsNkp0ZXBqcGNtcmtyeFlqRC9SQlZ1MjlBOTRuV3llR0tTdnIrOUNPdjByek02TStaRWJFeWNDbE5NSHg0YjNmd0sreUNHUnpWM3BCdFgxOUc5N09JM1Bqd3lxb3RsQ3lRWXJoUGlGc2JHaGI4Yy9PN0owTU8rbGtHSHFUcWNmVE9KTkFGUDFINWRlSXN2aU5CMDYvdTNZMlA1YjRMUHFSYzlXSnBQcHpEcThuYlRIVjVjY0xqVDlwZExIMEFHMC85L2VsOGMzV2xmclA4OTUwMlU2MDNiMnRsazdNSUFDZ29BZ0tncTQ0YjdyZGQ5UTNGY0VWd1NScTRMZ0xqOVJaRk92KzRKZXZiaHZlUFdxS0l1QXdNQk0waVJ0WjVpbDdXeHQ4NTd6KytOOWs2WnQwaVp0a2k3em52dnBsV21UTjIvZTcvbWU1Zm1lOHh6Q0RrRHhnWUZNNnV0RjYxV2p0c0daQXg0VGNvbHRiQU9Ba1JIblhoajY2dGFLdGJoaXZIeFM1NFJFM2kza0psOVBwSTdmMnlkUzBqRXo5MXBzMlRLS0FNQ2F0eHc0Y0dBRGdLUHJ0amNJcXRuQm5PdmUzaWhmMXhPTFBabkNEeHJvb0lDNDI0eHVxaGF4Q3MxK2FibUR2MjYwWHJydTBBRVk2Z3FlazJ3bDVQQkQwRGNEZ0JPT3h0OUI4bDFGVmFaMU5NWnpIYmhTOGlEWG0wWW9iS1hJV1VIUXZEVGk5V2cwOFJRUUZ3RlRLUldzc2xCdXJxK1pwSVNWQVA0ejZSOW51TGdCNUVZMjY0Wmd5UmZjeGprQU5CNlBQNXBPNkRzVU9RRmU5MGNqSnM5NnJZTm1QeHJkdi9kRG1KMUlMWkE1R3BWRFdjRXQwWmxZTGNRYlNWbnBHemRhL1h4NG5zd3RDY1huOHNyc1FuZE9yMEpnRGI1ZWtYMDJsOHRzN1RRYzNuUmtpTTduaFl6azE2NFJpVDFoTUxPdlpWdWNYd1RKWm5ubDYrbnBhWE1WbDRvamJ5c2JabkFPK2x5ZEgxQVNBdGgrYyswOW1iNXRWeFhadlFhdG13RnFleFliV2xPSnJGZ3gybVJFcU1hSjhhTDJDVDNSeEROSmVWR0RLanE5eVVYRTc5MnhzWjhHOXFSbXdFU0ZhemRqa2x3SndHTU4wY21lbnZVQ3VaRGt1b25wY0RNbFZaeS9YaEtpcHYwNWN6N2E0SW1ZQm9BN2R1ellSK0FmOVl3aFNNS1JBdEI1S095N3dvamRTQ3p4TmhGK0RLUVVwa2pVZGhOV0NCS1Uyb3VWN0ZmL044b3pJNUZJRkVDamh2Y0VVbjJlcVYyeDJERVFmRUxFNlVUSjlycDU1dmd6bWZGOG5aZXd4anlXeFQrRmUxY3V6NDZYcFNadU9CNS90QXRlVDVHalVOZkR5T24rUzAxM1UvSHBuVHQzamdSeFhmME15NkVzNW5ieXc0N0Q1emFJTzhralhEVmNsY2xzdXcybm41NVBEQjJyYmZBNXhXb0R0bndtWXhBQU5tellzQXFPZm9vaXh4bmcrb1h2OVpZOHFuN0htT0JEZnJYRW9STDRWcDEwMFdsNkR4MTV1OSthNEVlMFJRbFgxWnhUcFU3T1puejBMa2xSMS83dHV2YXlkRHA1NWRSSW96Rm1rQ0RRdkJUM0dadWFIZ0tnaU1TOVZ0dXNyc1RUYzliWmRldld0WlAyOW9rRGpicFdKUGpjVjdxWGlpc0hCd2YzQllGT2JmVFd6RG1DNU1iU3d3ZG1TNVJuQmJLTVhsdHd4a1JTZFZaaUFqQUpOYitDSW8rZVBIVndwdnUyK1c1T1U3V0RkUFUvQi9vZStIc2U4R24wZmxUYTNyb0hnY3B1QUNFY0dqeEtCS0NSK0tZWFV2aFJlTU5GWnVCU3E2ZGFGMStmczZsanlZdVlHVUE3d2tYb2xNRDBMZG9jVXpkczJMQXFST2R5aW5POG1ia055VDBuWS92cStRWDlwY0V5K2NMNDZkeXE4eTlDSkdCTmFBcDgrTUxaTi84Z012cGNVcTRYY1RhYit2bjl2RG41S25NcEpBaTF6NlhUMi82QW9FT25yc2JsVVAzZTFoTTc3RFFJWDIxV2g5T24wdUFIVGZWZXpZMTlBd0R4KzZvRDU3bnZha1hQTWdGYkNNQmFXbGE4MFJFK3pSdjMzRERTZHFycExuUHgvaDNKNUVDUWJKWVBXTHFqdmFkVDVKMlRlUTVtQWpBNGo4ZHA1ZGJMVWRPN1hNdTlzaitkL0JGS2dsY1Y1M096L013WXo4Qm9keTVSbTdzQ2hwYmFWejlQV21zbHhSYURYV2x0WGZrVW9aeldvQkhMWHZXVjRhWjBPdm1Ud0o3VUxtMHhZUmVBS2VUTzFmcFh6dVlROXVUMnJYaXczclkwRm9zOUF1UjdXSFcxNmx4VnlZd2V4K01QMCtuVVZRdHBzOVMxZTR2MllwMnlEWHQ0SkJMcFBsUjhjMDgwOFZ6U3ZqaDlmOVJyTjViamFac0p2SnJxYjFqdTZrcHhta0ppWjNkMWRhMUVRSnk5K0dMQjd1NE56VzF0bnlINUZMOVFvSDR0WEtYT3hReEtVTXkxNzhCMVh3ekQzM3o4cWk3MEVRYUUzTUtVdTBBYTdmc0JXQ1FXZTZjNG9XK1EzR3ltamNvUjgzbStxT3J2YWU3bmxrbk92YWdOektHbzVCYU5SdGM2b2g4aHVNWTNxbzJZTXFVSysxeC9mNzkvYXZ0N203d0lkVHp0Y3B3b0pramt1SVRYVG50aXZjK0dJK2RiK2Vpb0xtdG9ab1RhRnpPWjVNOFFFUEtWWFovT1JHSzFJL1lSRVZrelhkOW1PM0d0aHZDQU16Z1IwRlIvNE1KZU1KQk8vMjJtOVdMWjA1RnFRSnZaWHJ0RVRXM09XTjlKWndhQWV3ODJqNDh2dEUvb2lFYlh3dUZiS2ZtcWhIcjdCTkpNZCtiTS9RSlFJQllOYkVwTlVoaGJVWjFkcWNUZVRQdW9BNkZRaTlaVEp3RTBLNTBQaUVqWXIyU1Z5dDllS3FhdzJXeVlBUkIxdFQ5bnptY0E1Qll5Q0hjZzk1blp2anJ0Ulo4SUhIRXlkR3pOTTlsRkNDWkVvNG5uT2c2L1RIQURySnh2eHBTekdadW5HczkwalhMQVZtV2NRL2sxTk1wcFRtdnJjY3Q4RFplY3ZtMk1IdmF3VUV2TGp3ZzVHNFVXejBvSG1WWVoycGN1NmxhUW9xWTNtNDVma0U2bmQ1SEl6YzgzbE5WbG41ZE5WamkwTXdJVldKZzRyaWNTZnpzcG55QzRBcVY4WnYycXNQSVY5ZnNOZGtrNm5kNFY1SW4xemM4UFdRQkw0YnlHNU9NYjFEcm9zWnlZL1Y1VXZ6blZxNXRSUEpMa2V1YUoyZ21jNUN6aGRSTUExaDNkZExJUVh5Smx3M1RTOXJyWmlYenI0Qi9OSGY5c2tHaVczMWRkWFYwcjI0MGZFOHJwL3NtNWxMZG4xWkt6bHdvNnB1MGIxejhCK2NPdzVsNC9rRXplalZsS2VNMnNvL0lncGZyZ1ppa3Jpa2hvQU9DdSt0aW5RbUhNVU12bzZOZ0NPMWpya05EYlJPUnhmdFZndlgxQ3Zzejhzd1BwOU84UmxKblhNb2dFeVVkT0RCNWc3WFIxc3VINCsrRGc3ZlZxKy9SNGlpTHhKNUU0YTI0VmdWTzVXYXdFT21HbDBBTVY0UExCOU5hL0xxQmUrdXZvYmlFc1U2OUpoQUJNeEdsV1IwNWF4bnZDQWFEUmFPOVpFRnhGY1Aya1ExdWJSZDJ0Rm8rZUZYeElKZTJFSlMraUl0SUJ3NnY4N3hyRVpnc2ZxK3ZHYVBSaHphTFhFL0xvQ2Q2K1NuVURtUFZRY0hZV0FpVXBNTDNkSGNNNTJXejJYZ0NFV3BXb21GWHdvZE9BMTFPQm81c1JWQVEyMU1hRncvRW5pdkNqb0xRZ3ozbGxGYWhheldJNkVvWWJlalpzeU1kMGg0b3Rvdjk5OHovT2xPQWpUNnFmL3p0clpXZ09PY1BhM1oxNEtJVnZyZ3R4WlhrenUxL0JUL21vN0tTQWw1UzloUkhHOVZONEI3aGxTVmRlZFhWMXJSU3ZzcWU3QVZWekUwWUpFRFBOcXZHRDJXeDJKd0lBcTJ5MjFOU3k0ajBVdnNrcXJtQ1pENGhWTW1CeHpQUXVNZWZjWVcrdk9XVVNNQmFDQy9Md2VqK1lwUW9Fakk5ekFHYTdhclZBcFZjTiszZDBkbzR2cUcySkpNNDA0dTNXbUYzdEFlS3F0d0Y2VFdCUDZpTE50ZDk5azY5bGl2RTZiZkVDSHhzY25rOUtHK1pWRVRnYitEeFJha09LbU9FWEI5djNmM2t4Nk9YKy9mdEhqQnlxdDUwVHN4TUJOQzNEaEZQZ2tSay93MmovRCtTR1NZZTIxUlFZMTFVVjVzVS9SRE5Bd09mM3hPUEhINks1emFMS3NUWkdvdzlyb2x4UDRvVFNuRmR6UGJDY2FpWExabHhlSzVmcG5ackRxd2NHa25mN3NhQVpiSGoyZEswU1cxcUtrYUp3U0JEZGtOaTNObENIaHRxNFJ5T0VLeW5TZ1hLRTdUYXJENXhuVE9mZTdvN0x4Mis1NVpaeExQK3BnM25RS3I4UnRPakh4Y1JRalR5UTV4Yjl2Zmh2Yy9hM29VTXN3Ylp3T0x5T0lYNU1oSWMxak9lRUVLaGRsMDF0dTZtazJYWEhib2NUMmdWeDFxTk9HWlQzSlk4R2NOZVNCRVlBaEVMTnJSZVJlRXFqcXVZbURKQXBURC9XMzVmNkk0SktpYkpCUzA4OGZpS0l0L29xUE1QZXFtYmJ6WFo4VXFCSHlZTUNhU2plM0pkKzRPOTV4emJ6OVU4S0FUdlh6Qys0cXNqMDJCTGNkOWJVTlBaUU1PU1R1TmRueXFmU0hycCt6OWphQjRIK2hkRGJjUGp3bURpNVQ1T3l0Z0Urb1ZCbURzVkgwdWwwSnJBcHRkWFpucDZlTmdEaE9oWkcwY3dNWkxLZWV0TGExdjVjQXFmV1RpZG5laDQwRW1LcUQxcE9yOWh4MTQ2OUM2eVhCb0E3ZCs3Y0cybGI5WHM0cUN0Sk40bGoxMGFqRzNkNSszRjUrZVZvNGprRXZrS1I5YWdtZG1LSjNKenpVVVhPd2Y5WGVtRlRpcXgzRkUrSE43a3lxSHBwdkRnQTNKNmVub2VJUjU1OXduVE9LeXNUdjgxbXE4dlE0TEdFcmhJR2c1anBzT1hzZmRsczZwOG9xc3d6NDk5aGVNM004ZWxVc0tyaWplSVBGdURta0xxYkFRUmN1WTJJNGVMeFJ4TzhYaWliZmQ4czAvU3RmaXZnNjVXcFVqN2IzLzlBYXBuSGRIbi9rUWVpa0Vna1dnOGNzTERUaXRVMEhnZXpsUkp5ampXenFQL2FKQlIzQ053N1hkZmRmdkRnd1lGZHUzWU5UN2xtMVlEZklRZGdpZFAwWVlvOHAwRWdpQUVRVXhzVTZCZmg4VWxNVTJ5enBsRUM5WjBTU0ZGZ2hTM1JkZE53TFBZS0N0ODFleEpkMCtESVBGREVmZ0RWYXhEME04L2t2UjJDNTVCY1h4bFhpNVVKYkcyR3lLU2NNeklsSWVhNmQ3dkU2L3ZUcVQ5VjdFQTJEd25HOG53NVZpYmdydGlIbGRWQk0xdVN0bFpWbWtXc3FlemdzOW9vVUU3RTBRWFFXd0FRT3JuMyt0T1JHdFpPcnE1OU5aTk8zb2pHVDNkYi9sbVU0NndCVUsrcXlqeDMyUmdGZDlmTG5tN2N1S21MdEhkU3BMbTJlbG1XazhqTVROWHNNOWxzNmxlTEpBRDM5b2JnTHg0UkwrdkI0Wm5ud2RxMGtxRkg3QUl5eXlEaHpHZmUyaE5OUEZjRVY0RmUyeURMNlZHNXAxb1d4S3JRUjVxWi8vOWNVcHFxOTZ2VmJFeURBYS90N281L2YyQWdkUmVDZzRGR0o3VnVPQncrU3B5bUwxSWtYM25sekk0Z1ZMcWxyU0k3bHYrbGE3aTBQNXY2Yi84ZUNsVmdCdDZ2WmdkSnRFNGdzbk9OL2FiU1lSaTlJUmhzSTUwekFQd3BVSTI2MmJoQzVWVVJlRldacnl6YnJWeXBiWnQ4QVMvLzBLOVlidXhieXpoUFpCRndoZTd1N2cwaUxWR0U3SVU1dzhsTkxUd2M1R29TYS9MNElZdlRkUWN3bFdFNnNxOTFaZWllY051cVgrZk0vZFgyVE9adm1DZzBxTXBtSHlvQWx2Z2d5TE1nUEx1ZXAreEV2dnlFZVFDRVpuWmxLcFg2ZDduRk1UUENtMFpWUjdGVmE5Y09yZGkxQytOTGJkMTZvcjFuQ2UweWdFNWwzcTRteSt1ZFNKdHVOUmNYWnpMcEF3R0FWVDdKaU1RM1BRZkVLODNtOHZCTG5jSk5QUVVyKzloZGtvNnBlemZHOVZYOUF3WEM5c3FNWUNUaWNsc3lOL3V5emtZVVV2NjRXazBQcUdIckxGSGM0cFJReUx3R2pmcXBEMkYzYnQrK2RmZEM2RzEzSlBFOENGL2JvR3JjZkpuNXZacHpMa2ZBajFFZlQyZEcxbjJmY2Y5NHpnN1diZHUxMnRzcFBLRitvT3FrQkZCSmlLcDlWOHo5MUdJRGNIVE1razRUSHdTeHNWNTJnSlFtcFQ0RndJK1hEM2dWZmE0SXJpSmx3NHpnVlNWWExIcytZelBoU1lBSDFuOFdaRlNFTDZpam5SVVlURVI2Mll4WEFQaEFFS3MxTms3dlRpUWVTclZ2NU8yV0FRN25wV2hWeC9oKzJnVXhjeTlITHZjWmxEb2dja2Z2SnB1U3BIT1UxVHdreTFmYms0QTkya3Zia1VOUWhWVnJHMmNBM0hDNEJIaFY3Ymt6cTBhNWlsK1Q3L3hJcVR0K2VYOS8vLzVsbWljV2NxcnVXT3dSWW5JNkJjOEJjRHdoN1pUOFhNOThNZHFVbk1IM0JTQTdSTmdCb01mTXptaFNuaGVKeG45bzVPL2NNZWRuZzRNUGJLL0dHTWdob3V3YWpVWWpRdWNqcEt4RUhTZE0yY1JsL1hHYTdoOUhodXh6S0NxM20zYURwRUZZdHhHRTVxRUtEMW5Sa2R0VXdZNWNWQnNtRXVrOTNuSHNzeFRaaU1aTlVQU2llcldEcXU3N01wbHR0eUU0elN1M1J0YVZTUFNTOW1FaFY4eDlqYXpNVzB0VWxkb2tRTUF4ZGUvT21mT3FkTFhnRllET1c3ZXRNclAyeWRlZFdoRm1zOXh6dVpKenk1dmhvU2JxZllHNmxOTWlHUVF3MXNBZ0wyOWJIdW1FZUtsUVZreGVlS3VYVGFHWnVnWmVVVlJtSGdTMU5VWmx6SnlqUUVUOUdLclcvc0xvd1dOYkhSM2JndG9xakRlb3BEdCtOSWxYVzkwNU9xMFFwNWphUCtIbVBwaE9wdzhzb21UTHY0ZnhwQkhiNjBUa1hxdzlqMTBmajNkajZVNXFMcHlRZTVWWHpsVWtONkFZdktxa3FHQW1XS3dTRis2akFoVFNERDhVNkFlbzloMVRkV3U4WDZiZmdyZnBYeGVOUmg4Qk5HUVlSMkJ6ZmI0K1IrMC9SWndUMUx4cUoxYXFXeFdEQmJPbVhwNlBWYnQ4N0dEN1Izd3dvZmppQmdEOS9mMVpnRnNtUmhpd1NrV3ZiQnVTaUlmRDRaNUFSZW9DWGprOTBjUkxHZUlOczFaZXNVTFZxOGl3NVZsbFVJRG92Y3BsZk1JZkVyRGM4c1E4UjVXdWk4WEMwWGo4UEVlY0c1MlFYQzRpcDVGc0I3M3FiZC8yNW4yblRQb2h4TytlTWs4OExpd0tPOFNSVjRudzJsQ0wrOTFJUFA1MFRMVDdTaVUzdCt3RFdnRE5vUE54Q2gvZWlEWVJLK0k1b2VKVFEwUEpQV1dTRlIrdUhPMkQyVjFrL1p3N3pVS3FHbHBDbTBhN3U3c1RGTHVTbEtOS2s3WlhSRXc3eHlRRk5PRFQyYjYrN3dmZzFjd1BPYVI0TGNuakt0OWJyT0R2bkcxSnpTZnAvQnZNZWRWQWVtdTE0QlVCb0szVERnTzQyZFM4RTRLeVc3RFM2TDIwcUdvUVNKZDdjbXJyZ2RORERVb2NDY0E2TytOcjZPQVRYdkNqamFpRXlsZmova3JIUjcrTzRFUzJmZ3RNckFIUVZ1L1AyZC9VNU5ZaFZtR29HYThYTW93R0RTb3hneG4wLzJVeW1mc1dvYTlqZjMvL2JxcjlzNTZmWVdhZzRhZ201U1BubTBrdmNHSm5rWGo4K1k3RHE0VGNVSEtNUE9mNUtaeE5nK0dTSXFiMnp3T2FlMXM2blQ1QTZxL045RTlrWGUyZVIxQW5zaDdpbkYxcGVockl2RzJXdGJhdE9wZVU1NXFaUzc5dHNHTE1hdjRnbGsvUVNUSFkxWm4ybFIvY3NlT3V2U2hmTzVoVHMzdkxmSldhNUM5bVpnU1BodFA4ZU5RR0ZRdkV6NkU3b3RHMWtWamlTeUs0VmlpSDF5U25uOXV5K3pFZHZwenR3N1hMTEtaalVTeGcwV2ppdWExMGZnNDZsNUVNbHdHc0t0QnowZ2V5eEtNRW9CbW9NSmhRSGdmdys1Rlk0bVBoY0hnZE1Ec1Z6YUVBWUZrazF2c2FDRjg2dC9hbXVjVkR2bUpmbDA0bmZ6SmJVT2lmRk5TNWhZWkswbDBpYTZacjFoeldHV3BxL2hRZGVmVDhERlMxOXNRN3JWVFZtMFZ6bDJOaW1rSWdKWnpKeGtqa09CQ3Z0S3JCQjFhd1hsUHM0Y1EvRlY1cjNvK3A3a3ZUMVlOWEU1ODJwbzVaT2QyYU9obUpKWDVLeGxKVGZ5ZG1GZ0JZNWNPQVk3dTYrdFkyMEw1WWU2ZThsY0l6eXR1V21tNTVyNVZVZFZTTW4vTHRmUUJnMVEzQW9sdHZOMDlpNjFCejgvNWErNzN1U09JcEJqbTdNYkVLdlRIenNQK2w2dmNYb1U3bW40RnJ0Rjlnb3FMT3FyL01URDkrRzZGSVNNQW5MMEhnd3pzY1Bmcm81bGhpMDhXRVhBTnlnd0hxblh5WGNGZmxpazVzM2xxc3BEaHF1c1UxOSswK0tYNG9uVTd2b3ZHNkJreVBwcG1aa1MrTVJCSm5ZT2xXMHkyWi9DcWFTTHdHeEx2ZzljNUoyUWl2Rk0xVVdRcXJpakdmZ28xUTFTOGMzTHYzM2JqcnJqR1VyMjcydVYza0psVWM5RjVuVnVWblZneHVFSFpZNE9kclp1TTBIbyt2YVJmbi80a2pyeVBZUEh2OHhpb25yVmI4VXRmcnNOSWZVM01mQkpJSGw2RGZtSEZmbzFCMTFmdHhPTHhlaE1mNngxMDJHYkFxdDI5WXlRUDJ3Q3lTNXJYeXQ0Z2o1elBVOUYvZDNmR2pad094WkxrcmZDU1NlQm9GbC9qOFNVQkRlRTRncG5xcjVjWStnVm1ub1BsTGE5WTgvNkJzUnBWc2h0bTZKYkJ4R0kxR1Y3U3RjaStoeVBOS0c2aXFRYW5LM3VOdlREWE5LdXg5NlhSNkY0STJuN0lHYnZQbXpTMGhDYjFkaEFuTWlkdWlFaENyMVA2aXdPeTIzS2p6K25RNnZRWGVpZCtjcWdiVU1RY3dtWk5hbGN3TWlpNWtNTDh4ZUJ1QUI1ZVJnNnQxeXRIaXVqbW5VVDRoR3UxOUhJaDNUT1pqcVlnZ2RqNkFCd0g4SUpjYnZUa0FyK3FNZWxnakVsYTdEMXUyak5iSVB4Q0FybDhmN3dtSlhTakM5Z1lrM2dhWW1PcXc2K0tqdnE5YnZIcnBNZzNZZmxiMVRBeVZWZE1hZlBKbFVPd1owV2owMkNVVUgvc0hONmVISXZzT1hBTGlBcEFkUlVuR3pFK010VEo3QkVBREtXYjZvSm0rcTcrdjcyWVVIU3lOaitPM1p0WkhyeGRVNTZ5MlpXUGZQQmhwSnBTMWNQQ0JycTZ1bFEySyt3OUpRQ0VXaXozV2pGZVE3TENhUHVlcHRBd2xFVmp6ZVVaZFUvdC9tYjdrdTNidTNEbUNDZ2FqMEhYdUpqVEpPbXVGRWMrSlJDSlJCRURxZkh5angyR2RTSnpnUXY2TGxCZVptWUt3QWtBL1Uwb3gxMWxNNVYvalVaZVkvV1g4b0wxcjBmdk91WUZYVGs4MC9ySld5azBVdmc5Z2U5SGhBOHZuUHVYMmFrWGdzUGhadUlvNFR3NDE4NXJ1N3Q3RVRDRFdjZ1d3SmtnRkhYNmE1SG8waGpEWDcvNjNIR2lmekdhemZaaTVNbVRDcUpudHFDa1lNMFVoU2JiUitMQWxzSG5VNkx5UHdyZWFRUXVkN1FiTXJiV3JrdURIdkxUSFI1MVY3ZVA5cVNvbTJSMmlBTmIrL1dPbkNma1NNOXJzMHlHckFZREtyckZmMmFnN0ZIcUJUL2ducUJBa0xpVk5qbk9jY0dyQ09KZVRPSmExQndTUzJXeDJaNkEyWmVXK3BxYnhvVWJvYkRRYVhhSFU5eE5jVjMxUU9aZjR4SHcrUFIzTXVlT2ZEYXF2bG9zQjVBWVVqV2FmcDE0U2dEUzM4aUk2emlNcm0rSTYvemlGb0Nuc2t2NzB0cDlqOFI3VStEUUw0M2VZMlYyb21BZXJYQUxNY2tFMVRjMUlpUUh5M0NXeVAzMnFoZDVFSkw3dGFzTGU0MWZ1VmVhUFowcjJLZ296SnoxRHo1YXFqWnJwQjdLcHd2UTN6Y2ZlZzRQSkZBMDNGbFc5elNGMm0rSHZWdmhmTVRNbGVXWlRTOHVyQS9DZ2JyNTByUXZuSXlUWG1FRlppZEtWcThLeVN1TjFUb2tISWFiNkdacDdQaW9qU3pjQXlHYnZId0RzZ1luZjFWdzl4TXpNRVRsT0hlZXNRQWZuYk44TWdQYkVZcWVKNFpzaThoUUFDb09nMUVHVlZST2VWNUVtRm9GWDhIVHVMaGY2bHUzYlV3OWcrUlE1K0h2bnBLWndOSDZ4Q0s4VGNSNW0vaVJabEN3a21ibzNVZVozVmQyRFo3OUZIaGxxd1ZmRDRjTmo1ZkNiNVFoZ0VZQjJkWFd0ZEl3ZnBzaVJEUWdJQ3lzcXBCandJM2RzN0VjVktyWlBQTXRiS3R0cW5PR243RTdPUnd4SEwrTE5scDhVK1I4azN1SGZZU043eDQya21LdmZoVHQrVFpCa3ptYmtFQktIcjZhd3JUYk9lYmJXUFArRUY2QUMxMlQ3K21adHphMW8wUlVkMDNrNWJCN2ZZZm9sekN3VUJDOHpQcmNIR2dEc2VBU1M1Q3RKUHNGZ3N3Q1dwY29ST0ZlN1FoaStOcGpKL0I4Q1VMeiswZ2ltUitKaGlVU2lGcFZTM3BDWlJPTFpJdnlQQnRFY0dFbTZxajhiUDNEZy8xVURXU3dRZ01Wc05yc1R4SzlaMGN2bjNBNWtmaEQzck83dTdnMkxPT2tzVEJyc2prWlBkcHJ0QmhIblZjVmczTHl2WGlwSEtaL3A1Vm1OYzZyNFVDYVZ1aHJURDVZSVFOWEZkYWEyc3pwYlh3VmVXZmhmQThrUUlHK2Q3UlEva0RscGh4bWRpNFE0czdoTHdxcGJOY3dlNVplTkM1V2t1SzUrN2VEK2ZSK3BZdmhFZmsrUHErTFdtdXlYR1QrTGNDQ3ZXeCtQOXdRZ1Z2WDJiZVBHVFYzaGVQempEcDN2WW9JTFdhb3pGNngrbFV1M1d5c0lVYk9NUXQvWW4wcjlZeG5GYzRXOExoemQ4UkZ4NUFPa2hLWlhYWlhhbHlnVFFzeEwxY1c4U3JjblNKTjd6Y2FObTdwSzdSOVpwb3J2TkxXMFhrRHlSZFlnSWxULzRZcVpQcWl3VDVXWWdESHphb21OMW1HY0s0cFBJZzJNNGZUVFpSRWFVb0dIc2orYmxDdEJkcGE4UjV2NjNXb1Ryd0h3ZUs5TS8rWG01TDFCbGNUc2loV0p4NThMNGZQcU9CWjcraG9SNHJyNjlSRHMwbm11VC82OUZQTEkwZzdPNW1jSjhrYllpNlh2S2RMblFLZW1QN0F3c0xtbGpuWkpBR2hYVit3WWdPOG5wY2wzRlJVY0ZwVFRCYXRRWnlscXVqVUh2UzVZNThhSW0wUGR0NWw1cDRTc2hWNUdFb2xUQWJtY0lwMTFUcWdtNGhUVkliajI2UjA3ZHV6RjRqOUI5c1l4S3Yrc0V3bU1sZCtUYys0WnlaTXZuNFNtcHVjdjBvUXovOTB0a2tnOHozRkNQeEp4SGxjKzBhZ0JpRlVLekxMSnZ5VkFkZldMMlhUYjU4b1lTQVhBYkRaNWg4RitWZGxFeVJrd1ZTc0JXazFOZ05TVTVFT2syVDdRd0NFaGgwYjhGNG1mQStKMXhkeW5WdWt1dEdyTjFUUTk4R2hhVFA5aHViRVArVzJEMWRnd0FvQUwvWkdaamVTbm85VmpyNXFaVVhocUsvblNJUGFyMHI1RkVrOXJibkYvNUlqelBwRGQzbEFURTcrb3ZRSmRzcm1CV0ZPTGRJdHlSRlBkYnVQNmx2Nit2ajh1TS9BS3dPYVdjRFIrc1RqeVByOVlvTXdrd0dvZTRuejNENVRrRTV0YjlmMEFtcVplWEphaDhtczRGbnM1eUhlaVltYjgyZ1NHSk9DQ244a21rMyt1VnJuSFZlOVFzeEs5dERaL3Zad29aMW9kdnUrK3prVzVadUh3VVlSOFRDaHIvY2s1TEdsUVVBN0Vtcys2VWN4c1JFM2ZQVEN3TFltZ1NtTEc0R1hqeGsxZGhMeWJ6RmRmV1FNcUJpQ3U2ZGNPTkRsdlRhVlN1MnV3T1F4NG9SalJXMW53VkVtQlFobWdnMHcySURGZHltcDFXSGYzM281NjJwZk96c1RxcG1ibk1uR2MvR2s4SzFmNVVyYW1vbVlKbWxtT3B2ODUyTmQzWjJCWEdpWDFINWhnQnN5ejU3Vnd3aXpBWjBrZTFxREROaU1CQmE3TVpsTy9XU0k2YVFBd05xYTNHK3lCMHVESG5DZVlsWW9INkZCZTE5UFRzMzZSZ1I3NXRRcEZZb21MQ1Y1UFNMaDhWUUxuL3JTdEFwTTQ4VTlSMCsvdUcrRkZ3RjFqTXpoREFzaVo4Yi9NZE8rY2dqZ3JzZFRsbXhGb1pnYkRxOEt4NVBNQ0FHdmU0aUIvME96d0NwSXI4cys1NGw2UU9hYzFoYXNxU0ZHenJKaWUwOS9mbjVxckRYTlUrd0VNMUprSHl3RENESytPeFdMaElBNmMwYllKQU4yUVNIUkhZb25MNE9CYkZPZFV6NzdaZEw2cnlsMUhhUkNMRlliOWhZTkkyNjZ3Yy9yNysyNWNackVjQVZnNE92WTJIN3dxK3YyQ1k2NDBnNEo4Y3ppV2VObFVHeTdMYkFPNDNkSGV4d25sWWxKYTBCamVxNEtDdTZhLzJRZjk0cHhNTkxuUDQ4NmF1b3RZSXlVd2dEaENRNkd1UldSRWZmQnEwNUhpaEs0VDRkRWxnN0ZKUnp0V0JzU2FhOHNBWVdhalpyaXd2Ni92bHdpcVpHWTFkRTZyK3lJS1R6VzFScFRsS3dHcTJUY09ERHR2Mi8zQUEwT1lmOFVBQWFDbjU1WUlnYml2T2l6cHdDb0N0V1k4S1RZeEcxL0NZQURyRDFEYWdkSFJ0ckU2MlJjRHdGV3I1Vnc2Zk5yYzI4bUo2c0RNd29qbDc2YWJtNzhlMkpXR21xbDlaaGhiekRlWXQwRk5MWG91S0tlWW1kc0E0RTM5TnZsLzVBN3lzMWk4YllPbGpDNEhCMVBiYVBhL0ZTUzVjMW1LZ3Mzd2h0anhCSWFhWDdCSVFJOUNTMDA0M0h0VUpKNjRtaUlmQXJrS21Na0hXMzFYeEFxKytidVd5NzFwYUNpNVp4WTc1MVZoOVczN2I1aDkzeWR6dDRydWZTcHd4WXFZTmdnQ0ltd0I5TktObXlMSElXZ2xuRmQrRlE0bkh1NkFIeWRsRlNya3ZTSm1BUW9xMzU5ZVJZanB1TG4yb1ZRcWRjc2NnUVFGZ0d3Mm00SFpuNmNVa05YOHVabVppY2l4THVURkNFRFVVZ3VjWDBPTlJCSlBiVGJjS01MekNMWmJZYitTazRiZTFSTEVtb21MUEE5ZXFXMVgwM1A2KzVZZGVPVVBZK2g5c2poOEx5WnNNbWN6L2cwS0gzeEx6aVlLTDRsRWVoOVpiTU5sT1MxQ1QyelRZeDBIMTFFa2JtYldvTzluWG1taHU5TlVMeHBLSnZmTUpjRjJYQ2RIekNYb25pMlJMcW9nb0sxb2hoTmVUR3NXRG04NlVrSjZBOFU1RlJVbmx6YUxnWm9OekNxOFJra1FhamRrK3BLZlFUM0dqeTB2UjZQcjFoM1ZMdUR6NStaSTVwaHd3ZjdobUo2M2UzY0J2S3FSODhpdE42REhyRXhBeFhrOHFYd0ZEbXlQS3dXdWhhVzQ3QWNBak5aUnAwQWcwZEtlaTh6enFaZTBMd0FzbHRqMEFjTGVPMzkrb2FtMnBhemQ5ZlJXM2R1b3VRLzcwK29DdTlJd2xYVWZKREZTYjcvZk9SL3JBR2c0bW5nenZHRWxmcXhTZDROS21La0NYOW0rZmVzZ2xoYjVMQUdZR3IrdmFnY24zN3ZWN2hNbWxrQkl2Q2NjN2oxcUFVRVBGbjFQNjRsR255c2grNG5IZHdYQ01FdU1XeWQ5OGg2M1N4RlJzei9vK05pYi9TRWxsWEsrcXJuNHRxcm1Tci9IS3NReVVFR3M1MzJlaVBRMnVjNWxIZEhvV2pUdVlIdTVpRk9JMVp2NGVUck9ReXZpSXBwTENqTnIwRzh1VEMvUHBwTTNZSDZIUXVMcG9mM0tNNGwxdFlVR0VFSzhJUndPTDZROVdXejJQRDhFUlRmRVlvZUg0L0VMNE9DYklzNHBCaXJJOG42eGtpcXFXWFBFbWE3cDU0Y2lZcXJiMWJBY3dTdWZML3l3alNhNGtIVFdGOW8wNXgvVzF6aHVnUW9sWWlGN1NmR0NMb2RONUpVZGJraDBDL1ZUUXRsa0JyZUJEc29NWmpuRHArZllGMnNBMEpTMUpBejMrSHpTRlhJRFdLVi9wNWRVU1p0Ukg3Wlkxc3dEcit4NlVCNnBsVHBFS3hmVnpBVGVsU3h3em85Qy9kL3hNZWREbUkxUklSQUNRRXZiL2pOQW51TGh3M05oUjZ4cVg5QlVoOVQwd2xRcTFZK0pxVWExK1VJaE9hSzRESDQyL3phWHdJdEF6c2o5UzNYUmRVejdBRzVuZmVyc3ZSWVBTcGVRcDlmYXZ2VDA5S3lQSkRaZEN0aEZKSnRxNjEzTDJoVi9hcHFxdVhaTk9wM2VndVV6cFdacFpGdG1vd2FNc1Q0bjYvUnRYOHgxblZpVk9sVUFJOEt4eEJ2cDhLTWw3VStkdGpKSnF0ay9kYnpwKzBzd2dUY0EyRGRzZndEMERyK0wwT2JmT2xqQ2dMTUFlaHhPeDk2Q2liRUFqWHhtaFFsYzY5ZkhleUt4eENlRnp2VVVPY0lIRCtwM1A3UDdQNWRDeDh6OXBRdDdVMzkvLzROVnhMMEdnSTVqZndIczEyU3BtSXNWNWtTczVodXBpSE5XTzUzM0FrYzNvN0VEZ3BaeXpFY0E3b1lOaVc1cHNpK1NQTTNVWEJCU2w2YzM3VXpJNENmVklFR0RmU21kU2wyQWlRRUI4N0x2dVJ6L2FHWmJ3YnJHL2o0WGxuTWtuYVlMNEhINUhLcVZXTVdndk52VDA5TVdqVzk2YXd2bHA0NDRGNVBTNlFHS0pyTStIODVpcjJ5Mlg1U0k0UXJOc1BsRFNOM21Hcy9wNzl1MkhNRXJBSEJDTFhvaHlFY1hBYm1MTVJXbW1SbU5Md2lIRXlmazk5VlNCN0I4Y3Q3RE5qYXZ3RlVVZVlUdjNKMUc1WGMrZjlMM21CdjdOT1p4SXBCRWNsUlJxdFhJWmc2MnFnelFYTVZEOC9lK1FBYTBBRjRoNUY1UDhsUXpVMVlEcGxvNVkxVHhNekp2RktwN3IrWHMzTUhCQjdZamFQR1pOUURjak0wdGhKd2psQldlL3VSUmpibzhOaU5CbzMzT0g4azlkYXJSL0JXUmVvUkg2RzJUWjE3YUxFRlZxY05mSzNYL0JNeTJITmlEL3NYb0VTcGFlR0lGaVZhenV0MjYwWXRNei9JVHhma0dkZ0pBTjIzYzFPV0VXcTUxaE9jYkdHclFkTGY4OXhHYWZqdVhHLzFxQUY0MUh1UVFrUWRwMkZ2SDlONUUyQVhIbmxxdFhuWjJKbFpIWW9tUGt2Z3NnYlZvbkY3Q3pCU0dyd3dNYk5tUnQrbExiRzA1TkpUY1krQ3Z5c2RKTmR0cTlBbGt6d2xIRTY5QTQ2b21pbHRxbWlLUitNdGIybmlqQ045RFlYdDFsUzgyL3pzcEZmTUtIVk85RjY1NzdrQXFkVmVWaVowQllDcVYybTJRTDVoYURqUHh2cFlNNTBwTnY1cjltWHFqMlhsdU9MYnZ0UWlxc0NxeFYxN2xYMC84eEpZVnVJSGdFODFNd1libFYxNmJLaWtBb0s1NzVkaisvZS96NDhENXh1c0dBSU9EeVQ0QWQ3SUJxdUFUdXI4b25FaTgvaEFFc0lxQks0MUdvMnNqa2ZqekpkVDBGUktmcCtRbkRGb0YxY2lzYnBVbjJaQ0t5djJVaEtpNmZ4Z2Z6VDF6R1lKWGhUZ21IRTZjQXVCbEV6VFp0Y0xGNm5LL0VKR0loUGdrTElNS3JBSjRGV3B4dnlJaXo0STF0RFRUbTRTaGJqS243c1h6bUZ3M1ljaklWUGxTeDVxVnlaL29rNU11MkpxRncrRWo0YmpYQytYVWZFQlc5YmZMVDI4dTIvTTFJNGtSb0Ryc0d0K1d5U1QvRWlTWmxSbVAvZUd4SjVGOC9PVEpnNnpUM3FLbzJSWWJsNi9YNGJzb2dCQW9ENS9RQ1U3ZGpkTzNJV2V4MlRZWitRRUpvd3o0M0NCTEVnd1lIMjlORzVDcWJHclVYQk5GTTRKUDdBckg1a08wVzBqOHVtT3hSNHkxNmcxMCtBejFlTm9hT0NtVFlxWmJ4OG1QRGc0TzdxdDFWaDNJN05MVTFMVFBZQVAxM1JzRWlPZkg0L0UxRmVpWE4yMHdFamx1VlNkdUVKRVBrV3oySi8wMFRDOEIvWitEKzBmK0MwdjNzTVkzUXZwOVZkMEZRSHdBc0FTSVZjbkFEWnVlMDB6OEVEQlMyQ0lPTC9LNU4xelU3M0JVaWhPOGNDTHhxRmk4OTNxRzVGb1JPZG5qZ3FFQlhMQ1kzUW9jYXU1Zm9PN0wwK24wSFhOTTdBd0E5MUZ2TnRodkpuTmgyZlFsSktxTjhjcnJEK2xRZUVFa2tuZ3FnbGF1R1cxR05CcU5SS0x4SzV3bXVZa2lUekxVanBhbHdsWExEMWdhY0hQNi9zekdEZS8wcDZiV3duN2x2NHRMeFkxbVd1K3VuWHk4M0NTUXk2THgrTXNPQWYzalZMdTJidDFSN2VGby9DM0swUGZnOERzaThsS0RXUkV3ejlJRkNoVitHcXRZZlp0aTlNMEFNNWVFcUp2N1UyN1VYajA0bVA0WGx1ZndIUU5PRHpIRTE0dElwOCtseUtwM2FPTnpFZ1BzaFpGSUpBcEFsK3JtOGNHcnJnSjRaWTBGci93MkVleUg0bjJENlhrcnVYZXFTN2x0NHVyVm5ERE4yQ3BYQ01oOGl4Mno1dVlOcUNQNk1ETjR0ZWxJT0tFYnBJanphdjYxM0tYS1lrcGVOZjlrQ2JWTCt2dTIvUUxCWkxDS0h2QkpKNTNVUklkblVmS1RCNmZNSWFydDNxSjVSSjBmejJhMzNvdmFWZ3NRQUNLUlNEY014MDE4RmF2c3E1UTcvQzJETXh0d2Q1SCtMNldrMFFESXpwMzNqQUIyUzUyREhLUElTc2ZodTZNZVJ3bXFzT1dUVHZZaThmampIZkM3SXZMa0lwOVFSeklZSzQ2R2FLWjdUWEhSUURKNWQyQmJGa1JuK2NBRER3d0J2SytlT210bUlIQzA2L0xoL3VjNk0raW1oaE9KUjlFSmZWY2M1NWtUWUVSaktnSUJVRlgzV0E1WCtDUG5seXFBWlFDd010WDhMNWo5dnRBaVdyWktwNEwwMldZS24raFhZVW1jSVZ6aDgySFZHc1NTSXYrbW5aMkoxZEY0L0QxQytRRkVYZ0t2ZWxSOTRLcEtmV0VObm5iQnd2bUhTbnJ2cU1zM3BkUHB2ODNEdm5uVmRNbmtIcmk1QzlYVmdXazZPV1BMNEp6Smd3a3pGVXFZRHI3VTFSVTd4cjkvQjRGTWltNjY0L0dYd3duOVhFTE91eUd5d2RkQjF2S0RiSWFkYVI2RVRGUDMxcHptbnRXZlNWMktXMjRacjdIdE1nQndIUHpBMVA3aUE2bGE1K2VySkZjYTVTTTk4ZmlKeXhURW1oU1RlY0RWdXZad0xQR21scmJSSDFQa0N5SThrNkJZdmhMUy9HZGdaZU9yMm9acnBYK25KQjExM1g5Q25iY01EcWEyb3NhMEpZc0lQN0dlK05iakNUeHJNaDNNNHRZck15T0FrOHh4SG9JbHVuR0tLcTlhRndLOEF2SW5BOUJyMCtua2QycVZuSnE1L3phMWZkNjRVS3VBb0xSU3N2SzgyVGVBWENsbTRZVllzM0E0ZktTRTdIb1I1NUdvRlFuazFINzVtYm5CRkFSVjdadmo0Nk5YSW1nYnJOalk3ZGl4SXdiaDg4ckRQRmJEdlFXYTJuZXk2YVp2MUd0ZnF6UWRiYkM0dDh1TU13TEFGUWI2Ulc4ekFHS21Tc005U3o0YWNXMUhBeHlUaWNqSkN1YzVSUUdERlAxTVhaeEpKM3NiTjIzcWlzUVNGOEg0ZFRwT2IyTjlBZzJna2FDNmVsbW1iOXZYQXZCcVFZTm53T3lPRWlkQnRVOUVITHc2R28ydUFKRERaTEMwUU5iZUU0OC9Sb0RyS2M2UnB1YWlycUJxYVh0SzFTOW1Nc25mTG5HZlp3QmtDN2FNdXNxdm1PbitTYkdYVlp1OWxGaUZhZTBtdmgwbkg4T1FYZDBkalo2TWlSWW1tYVB1Rkw5WEFWZzR2T25JU0N4eDBhcE8vSUowUGttdzI2OUtNQ3g4bk81MUc1aDdyK1h3NmgzWjVLMDFTT3dVZ0dReW1iOEFkaFZacEpkbHE2OXFrY2pTYnlXVWVGT3I4OWx3T0J6ejF6TWcxZllmY2pqYWUxNkljaFVweDVoQlVSaUlaYk8vZXc0ZldPSjNScEl3MjJIS053MU1nS1cxdGwwR1FKTEo1QjRJdmovM2IxSmRQRzBlaUhxNGdGL3E2anBzNHpJQ3NhWUNWNkZJSkhGcU5ONTcvb3FWN1RjS2VhVWpQSU9Bd1d0Rm5XemJiTDdhTTI4L0tXcjZkODNoOVpuTXR0dDhHK2N1MXcwdnhzZVJYSWVsMDg1S0ZLaFplTnhTQkxDbXRRMHVBSGpsdHc3cW53KzQ3c2Z6QVVndERDdTFLUVZnQjFsdEdjZ3NOcHIrV0FXREVseEo0NU5yalRyTXRtYnIxNGVQbEZEejlSU2U2aHV2MnEvWjFJS0kvSS8zQ3lYcFFPM1A3dmpCZHdUdFBkVkdtODZaQkRhVzdwV3VCZjlJQVlHa3FvNUE4UVdnZnRQYmFIcUtVRnJ5cU83TSsyeUcvY2J5VHRVTXc2N2w3bDd5YTYvNHA2bzdqdnBWa2ZuMURoUTZmSGRQTEhhYWIxZUxmNllleCtWLzcwVGo4WmMxdTNxamlGeElrWjdacDNQVjhyYTlrd0dQTTBGL3ZtK0VuMGVENWdzSE1vUE81dXh2WmxiUGFpTXhnd241TWhQbm0rSHdwaU9MOUxRd1ZTUVM2MzFEaVBKdHNrQyszY2hxRHlNZ3F2b3ZNL2RMeFVIZ0VsNWFBNENCRlUyL01lRG1hYTNOSmJsT1N0TXJsZnozSkZQUFNhQ0hpSndXa3RCM1lySGVaeFhab0trQSsweUFsVXl4WDRoRUlrZEVFb21MMldRM2lTTVhpamduZStGTG9WMkw4N2RSYzMzS1JXMkRadmZDNWF1eTJlU2ZVV00reXR5WVhhOXFEL2hjUnpVQy9XZnNTaEMvc3U0SkREVmQ0NE5ZUVRzaFlPRlk3NnZFd1lVZzI4d3FBTnRyVDRYdmc1aTZWNDNuVGFINHFCOFI1emgvWnFyYkpyZXoxaGZFb3NqSlRyTjd4WnJERHV0YzR2bzNCYmphM05JVDYzMXlKTjU3RlIzNUh3b3ZKWG1tRnhQN3JXcUUrRHdiVmVpUjFjdmtxWmNTNkczdUdGN1ozNSs2QlhYZzNGMUVhK1Y5WCtBRTFKd2FwTzZoaFlGQ0FsM0F4SFNWSlFOZXhXS3hzTks5Y3FFcXJ6enlieDEwVGQrN0s1M09vRFluN2Q2cXAwY3pHcE50RGtLOVB2ckN1ZS9PVXBGWm9YN216STVvZE8xd09yMnJqZ0Z0M2lScE9KRTRRWXhYVWp6QzlnSjR4VWJwZkg2aWhQMGJ5bmNPREF6c1FGQWhVWTJ4ZzhHZUlKUlFhUkpaVGdHeDVqd1J5dngxK21rb3hGdnJvSnVGNzBQd1dQL3FWZHp3VklYMWIyL1NBRG9XL3Bld1ljZHN6OUlIc01idUNLRmxHOGtqSnZPZjFWYlh6QUNDeDRnNE4wWVN2VDlVeFUvb1dwS2toVUtXVENhYkRnRGozTEJoZjhoeDJtSU1NUzdFS3dHOGlDSWhVMVZ2Z2hnYmVKcmtEYUF3MVQ0eFBYZG9xRzlQWUZzV0h1QUloV3lybVExUXBMMmVPZ3ZRRVpGblcwaVBEQ2NTRjQvdTNmdlRmSnRlSk5iN2Rnb3VCYVdscG1QbnEzZ09acnFYYXA5SVp6THBaYUtYSHJDelpjdW94UkkvTXRpVHBxMXRxZFV1QjF5eDBpeUlZZ1lGMld1d2I0VGp2VitCNEtyc3RtMzN6SkRTRzBxYzd2VDBIQlozSEgwb0JmOWh3SmtrZTczdU5tL2FHbXBlb2NjUy9xa2ljVWs0YW5vZmN1T3Z6bWF6ZjZteERpa0FEZzZtdGtianZWZkI3Qk9UYnBUeithNlZnUWdpemhPdGlkZUV3K0hYWnJQWnZrUFVkanNBM0hBaWNRS0JqNUd5Y2pyWWJ2VXpVcE8xMHJ3Q0FYd3AyN2Z0ZXBRZk1ZNWE2bUEydSsyZVNDenhOUUlYb0RFVktRS0RPbzY4Zk1XNGExeTcrYTI3ZG0wWnh0S3ArdUdVbU5wNmVucldJOVR5R0dIdTFRQ2VJaUt0WmdiVFFoWEJsS3JWRW8rNUt2TlU1c1UyZzBtd0V1dFBpSm5kYnk1Zk16Q3c3S2tmQ01BMnhHS0hFVGh0V2tIQ0VxbkZNcUFIZ0JOYUlnK2NBTFFuRm51c2l2TXBJUit4SU9DVlgvcW9oby8wOS9YOXNZYUtiZ0NZUnZwQTJPTDNBSFlHd0lrdXdvS0tjUTcyWmRLdjZGL3gySlV1VHhvR2Zsa25BS3ZRUGhFT3g1OGhoazhWalgrVyttL1B5Yy9XSzMrM3ZUbTFkdzJrdC8wMVNEQ3JrelZyMW5RUzZLMzh3YzlodExrVnVLK0d6Y1ZYazMzSmcvVmFwNDBiTjNXUmRrVFY5MWh5YjVYMGprWWExZXp1VEtaN0c1Q3BYd1JZWit3S0FBY0dCbEtSV1B4bUFrYzB3czRTWEV2eWJJcSt5b1REQk5RMTNoZUpqL3RWazIxTklJK0FZWjJJdEpoNVp0ay8xV3VzUy9DUEdjendwWFJmMzUyQmJWa2MwdExTdC9QQWFPS2VSdWlzZjVyK1VKcGRzMkpsKzIyUnRsVi9JN0FheEg4QWJGNEE4S3JnOTFSeFl5YTk0VHRBYWptMXl4c0F1R01IdjQvbTF0YzVJaWZPK0l5dFROcFZQUWppVlJtUXF4enlYYWJ1ODhMeHhJOU0zZitCNjk3UzNOeThONWxNSGl6K3hNMUF5OTd1N2c0UmlaalR2RkVFTDRMcDZRQ2lGR24xUXNvOGczQzlkV1NtTHordHRWSUpPcTY1ZnpIZ3JmM1o3QzExdEczY056SjAxY3IyenFkU2VFYWhTcU4rNE5Va0VJdVVKMHBUMDdVOVBUMXY3ZS92L3pjYVVQR3oyTUFyNE9obTJyNzNpMGpZcjd4eVNqL2JDdG9JYlQ0Mmk2TG0vdkxndnVhUG9uRkgzRjVya3JrM3FQSVZJdEpiSDVzOWpUQ1ZabEFSZWNXS2xlUFMwM0xZQi9yN0gwaWhrVWY3MWVmaHhiRWhBRmc0SEY0bjB2UWtFN3lid0FrVWhyem1GMU8vQ0dQeWU0a1pFYVVLVXVXWlFheVpQTjNrSit1QlYycGJjNXA3M1dBMjg4OURKWDVyVm8xQkpGd2drTFFaSHZFaUZDR09pMGFqM1lzZHdKb294WS9FSHcvSTFVTFp0SkFCb2F0MlZWdEwweldvVDNXSVFmWC9UT1gxSURqNUV6aERORmF4OGZSSGdNc0tjK3poOEFDc211dFczZ0JFbzRrWDArRVhRVms3c1daMWpxTnQrci9NYkwrNjlyNkJkT3FtSU1Hc1hpZGJWNjA2aGNUeDFaUDlXWVVCcGs5RUpSUlYvVVkybS9vMTZqUG1uUUNzcWNsOUVrUWVialZ2Tlp2V1dmazNvT2JFb3d1aEF5cU8zS2lxTHlIWk9uUGJaVzNXeUt1YVlZaXd0UUJBNGZxcFhjY0dRMUd5c3hEbDkwcFNYTk5mSEdoeXZvaUFVMit4Z0J2Y3NnV2owVGovRHRnejBDQmVFd0lyS0hJcWdWTjl2NU8vSDFrSXZWVFh2VXR6WTVjc0F4dFVhbzFsY0hCd2V6Z2EvYXFCRHkrZklGVVRMckVxKzBSeEVnN3dEZ1hlQ0FuZGxUUGJHWTBsN3FKZ3Uyc2tWZGNjRUI0Ykl0Y2FjRGpOMmh4S2l3OTRReWRzRjdIZ0tVTWh2alQ0cmFldTJrM3VtSjVYNTBsY0JvQzdkKzhlV3JseTVma0c1L3VreEtxUDhUbS92VXQ1UXFpcCtkdVJTT0lkbVV6eWQwVnJzbHp0ZVI2a2M5ZXRPNnE5dFczZmVTQ2ZWZFM2T2t0S2hubTlwSVFTS0FDcXV0dkcxVDNQcjBacTFQTlhBRXluMDF1aTBmaW5qUHgwL1d4MktjNEpNenJ5TXFGN2ZDUVN2emlUU1gxM3loclpBdXBJOFRPYWxIeXVYeC92Ym0zRDg0enlHZ0RIQ3hueURoTXh2NWlNczRFb0ZZQllwVjQrOGIrZWpTTkYxYjAxWi9xR3dVem1rQ3BzSU9tdFZLbm54cHJwZDExdTNTK283elZ6amdoVmNWZXpqWFd4T213ZUJVNFBSV0xiM2tyeS9SQnVYQ0R3eWlleHREL1J6VjJ5WlV0eXRGN0tyZzd2SUd5RVlDZjhTUnkxc2VQRmZVNGtSUjZmU0NRKzc1OFkxc3BSK005a2MwczBudnN3aUxjYnVXb3lZYnZWeE9GVmpOZ1JWTE9McytsVWtHRE9VV2tjaHVJazJueFFnUlVFd1JVQ1dnWFRvaFNJcWQ1bk9mbHNVZEpYZTRBWUFCdzVreFNaKzBudnJQRTR2V3ZyZlhYVjhNWWxpOWdyOHJ1VnFyZVNQTFYrTFZtRnkwNUxIdndxaFZMS0pndjRYS2lxZTEzRkozYW5IaGhDQUk0dkpydGxydkUzanRxNUlOdFIvM05GOFlBTnRTa2tTbXlnT2s3OHk5c3dYeWlxS0ZtR1k4QkJ6ZVcrU3pwbnk2UXFyQ0kvVkhFeE1LdlZML3AyMEVocElYbUMvMkZQOUh3bUFTbnVsdkZjcDFwaEhZakZ4M25qTlhHVFl1cCtGKzc0bXdZSHN6c2JvRDhHUU5McDlOL0MwZmpuUk95eWtubHEvWkltanhOTG5PTkEvWG80bW5oUDFodk9wTXR3N3hRNldnQWdFa21jU1dmMEFwQm5lTEhkVEErOVNyYUZLaU1lbjMvcWYzWmtNcmN0MUhQZnQyL2toclpWSFM4V3gzbjAvSFBOVWtETHRJZVVIenFpSW5Lc1FxK054R0pyTTMxOVYySHlNSnQ2NWRubEFDdWI4dnpaMDVNNHluSGNqUzdrU0JFK0VlVERBQnd0cE9kdnpQS1RLbVdhL2EyenY1dVdlMHpWUDVzU29KTTBzOStaeTNjTlp0TzNCckZiVFZMRlJuNmNBOGNrVklGQ1Z6ckhzbmlxU2swTWJIZDM5NFpRMDdZcklId3BLQTRXc1BMS1ZBZmRjWDEvZjMvZHVDUU1BTWJNK2xjSTB3UTd6WnZWemRJN2NzNEs0NDBBSng2VHkrRlJBR294bWFpd1podmo4Y09hYlB4aVVGN21mNnZLVHFEclVEUkxiK0xnTjhZT3J2b2lGbWRaN3BJQUx3QmJPN2YyMWVxYTJWVnhWVGE3N1o0Nk9oUGJ1SEZURjJFbjFOR3llcDdWN0VITjhWL0xSQWRrOXdNUERLMk05LzRBc0ZNYjQ2MjhPS01Fby9JaWNhS21BQjJEWFRPWVNmNFI5U080RDJTdXZuVC84SzJ0SzFmZEtwVFQ2c2lETlVVQnVkREY5LzVobTM3ZEhUdDRBNWJ2b1kwQmtJR0JnUjNoV09KcXdLNHNsYTFVbG9Oekh1dGRYREZxTTJYdkN3MjR6Nm8zQU1SM3hOZHBidnc5Mld4RHdLdEpLM05nWCtncksxYmxuaWppbklXSzltek50cHRmUmNrSUhGd2ZpU1VlbWhGOEhNa0NsY0Z5YUNuTXI2VjFkU1Y2UTYwNEcrQmJTRmxUVkMzSzJWR3BDazFLNVpZblR4L3hJTlc1RGd0VGplakZPYnQzRDYxWXRlb3JadkxJK2QySHpVMy95SlVHNXpQUldPSTBsL2FaL2xUcWRnRGpKZkxzV2t4TzRwU1ZtclRQdytGTlI1cU1ieUtkWTRRNEJjQmpES0gxRHRHYUh6UTJBVnhWQ01pemlqdWJrOGVlUWVtWUI2UnQzQXhmekkyRlBqWXdzT1VRNVVNT2xWYlYrdklPMXZOYmxMd2pCWUN1cnZnbXB3WEhRSEVpZ0xaSmkwMzd5K2orL2IvMWlVc3hEMk5mZkRKZzRYRDgwUXp4SW9vOHlmeXhMQXNCWHZuSjZINDF2cmUvdjZhOFZ5VS9hMWM2blluR0V6ZERlRXo1R0dpK1FUYVVsSFp6OU9rK2dGVUxJNmlSU09KVUVsZlFjUjd0RS9lVnVPa1pERXp0d2dQMXA0TDkxOTVodm5WbzZLNjlDS3F2NXFRbi9yS2M0Qi9PVmVsU0tucXBrYVNxRG1qTy9xZU8xdEJySDJ6RmswQWViL1d6SjBhQ3JtSHI2R2p6bHBwcjlnTEt1T2IrSjhUUU80VU1tOVc2b3NYbW9qc0w5WGlWcEtPdSsvdXhBL2dFZ0Z4Z1h4WWR1TUdkTzNlT1JOcFcvUmJBWXc4TmM1MmZrR3kvUFFnNy8wRnYwdTV5MWt2UEJybmozMUUydlZnb2o1dVZDNnRtNE5Xa2kvbXhLNWZxYzh3bmRxTUtmcEthKzFnMm16M1E0TVRPQnhBZUdHcHFTMXdVZ251OGlIU2hzWXdzQWtBSk5rTjRRY1RzT0FzbkxzNW1rLytjQWdBdFJlQXFEMUF3RW8rL2dNQUhTVGwrZ3F1bzBzRUJkVmtLRlJGSFhmZEg2ZlRXdnhmbm5ndGhUL2FKL0dnVjdQVkNtVU1WVmpYOHI5T21vd3E4a3F4V2lyeGMxSDFTSko3NEsxeTdRUjFzN1UrbGJ2TmpqVko1ODF6M2ZlSFRZN0hZNGNyUXd5azgxa3czQVBaVVdpZ3FaRFB5d3huOXRNNS9Mdmw3bHVuZnVVejFWVU4yODlUaFNwNXZCQ2xRZDh6QUQyZFMyejZKNVZsaFdabVdtaEVDRnViRVZSUWxjQTQ2M25nQXEvQlZ1cUxSVTBJU2VvM0Jua3dnU29mTlUwZUR1S1lIV3R0Vy9hT25yZTE3T2JQLzNwRk9iNmtTeUpvRVhFV2owWWpSZVNlRnJ5SmxnMDNtQ1dpME1UTUNybXU0Tk51MzdRYlVoNWRuMnJOM0ZUOTNZR2Y3NitQVEJMUFdud01DLzlFZGoxOHprRXJkTlllTm5FZmNYUUNJUnVOdmdlQUNVcnBNNTFncFYrVUJUeGx4dmVSU2Y3SFg0VnVHaHBKN0VKU0h6dGZZTlp2VmRaK1JzQnNIQmxMMzFERjQ4VTZZVGMraU9IVnFIL1R3S3hoQXRac2J6T05RN3dTSGcrbjBuZEY0N3k5QXZ0cVBaT293S1d2eGJ3ZVBhRll6WXk0KzhPQ0RxZjdBdml4YVJNZk14VTFLZlR2cHQrUXZZWlJodGozcUg5cjhWVXhmLzJCZlh6K1dQNmhxQUNTYnplNk1SQklYV3NpK0MzTHR4RHJiTEthbEp1RFZNdEFiaXFudVVNTjUyYjZ0MXhjOW5FYmJOQVVnMnpQSnYwUmlpYXNCZmdobUxqaVZVTHl1UGlPZnQxQ0V6N0dRblJTTnhpOEQ5S3ZwZFByQWxIeGxLUUJYbXIvWG5sanNzU0xPRzJCNFBvV3QwN21LckVyOXI3QUthK3FXc1NuZ0ZlbVk2bDlvN3FYNVdHTWg3Y2xRTXJsblZUeitLUU9PQWRoUi9ZYXZBcnl5MG41THpZeVVMcERQTkVlZkpzQ2VjQ3p4VzVqOVZhRy9RNjUxVzNQeldDNlZTdTJlcTQzdjZlbHBjeHhualpsekhCMmNCZkxwQXR0RTBER0tmM3MrZDROWFljb3B1VjlEY0toNWNqSVo4Z2VPNm1iZzJ2c3ltZVMzRG1Yd0NnRFVzWEVITWc2Z3BYcHp1aWg4SHcyWTFrSW9BRFFjRHErajAvUk9BRzhpdVk3NWlYZ0d0U2w3UlNBcktIZ013Y2RRN2MzUmFQelNkRHAxQXliS0hxV0UyU3F1OERJQXRuYnQ1bzYydHZFWFFQQjJFZWY0b3RMRUJlTTQ4YmtBcnM2bTFuOGMyTmF3RDNiZzNnRnoraWtTc3drc3JaYktRMzl5VXRSeDdUVUF6cXZTck9RZHVCdVB4dzl6SVJjWThHS1pjSXJ6VzdPNWcxZ0swbkhWdlJ2Szl3MmxBL0NxRnF0QVlYOERuRlZiQ2RkVjAwQ3VPeDUvQ01BenJJWWJhZm96STgxMHZ3dTlzVTdmWlNFQkFYWE52VVlNenhaeWRlMnFzR3FWRU5ZOXNmUXJjblVuWUsvZmtVMzliMkJmRm0rTUJvRFpiUEt2a1dqOFJvWkNyNm9mYUwwNGdCd3pHemJJQi92Nmt2ZGo2WXhqcndub2tja2tmeGVKeG0rUVVPamRFK3ZNUWtkM2lSUDVlVHpxWlNNdVNRZW1HVFdjbSszYjltMHNEcW9GanRLdWJISGRwNHJqbkdRb2x3ZlV6ZDRUQUR4ZUxJa1o3SE5tZUVZNEhMODhtMDM5YWtZNFpuSDQ2ZUtXTVBiMEpJNlNKbnM1S0c4U3lscHYrQWxxeE85a1ZUelJFdUNWVU16c3JoejA3QUd2K0dHaDR5VUZ3RXdxOWYxSUluRzhrQmNVQVgwMXNBMVd5VXZwSitqbU1WYlRBYkJPaEM4QThBSlJQb2ptOGF5Q0I2THh4RzB3T1doaVVyajd3aWVaZjdHU1UwY054RU1BeEFFbVJLVFYxNHZpNmlwTzFpbFc5MTFydFpKbHQzbTVQOWdrMzBEU01kTS82Ymk5dmI4LzlZL2llUFlRemV0Z1kyUDNvcm5sQVZDT016T2psVkdUa3M5MVFVTW9JMGxUeXlLWFM0V21KaWpyMThkNzRPQnFpRHlObmpZWGIxNHBRZkhnTi8rVGp2QUlnMTBWalNWT04rVVZtY3kydXpDNWYzZWFob1hENFpoSjZOa094MTVtNUVraVR0TUNUNVlDOHFkU3ByL1o3K1krNmsveGFVU2lZZ0RnT0U0NjU5cmRKR0tUMjdacVc0WGxUZExoYXlLUnhFLzl5U3N6QmIyVEt1WFdyVnZYM3JxeTQ5bEtlNGREZVlSYWZoeDBKV3MyWTUveVhNTUMvd1RhdlZ0aHJ4eklwZzZaa2FoMXR4aUc4YnJiTE9OSzFPak1wWnc0eG1mVGtXZ0QrSEIyT3RiY3Y5elVBQUQ3Ky9yK0hJNG5mZ0x5bFZqWTA5S0YrUDRHSUdlR3l6S3A1UDhFOW1YUkN3RzRTcnNhNmo2SGxEbWNwaThGdlRRamFLcjI2V3pmdGwraHFETDZFTnFiTkczNmpMcTVSNHJqUEthK2g1OWNEcy9MU0RwcXVrV1ZyKzN2MjFyTTQ3ZmdBTUtEcVZSL1Z5UnhYc2owV29va1N2TmgxWDBkeEF6bXpUd0tuYVdpcDBUanZkL1duRjJWelNadkxYN2RBaiszNGc2VndyUzRhRFM2V2VtOG5jVHpSVUxocXZtS0tvcmZLMFFwck9RNmk2cmU2U3JmUEpDZVV4ZElYWitwamEvNHJEVWRQSk1laDJLRjlvU3pQNFRLQzllSUNXWjltSmxYQWlXeW5zUjYvMVdQbkFSU09SVWhQOU1DZkowTVdrbk5yRXhOTFh6Rno3cG95cUNOQWZZVHVMbjM5ZmVudDJENThObk5TMXBhV2taeVpyc1h3ZmpidVNhbGY4bG1zMXVjWWlzVWpVWWowc1NyUlp5bndSc0xuVGZPQk1reS9LU2NERzdRb2NqeG9EMi9vNlB6NUZXZGExYTB0cS9HcWhWcjBOYlcyZDYrdm5ORFoyZm5hZTBkSFkvcTZGenpObkdjRHd2bDVSU0pnblF3VWRxM1VNL1ZwVmZTK21kM1hGNnhJNXZxUTJOUEJUZzBOSlJiMWQ2eG1TSm4rTCtxQjcrQ1YxMURXV20wTlozdDdUY09EdytQK1NhUUpYN3ltNTdkdmIyUGEyMXErU3lGNTVNU0xvSFl6ejhJckdCbkZaMEJxWGhUSWgrZzZjdXo2ZlRmZytTeWRwRjZSMGZuWXlnOHZVNVJvOGNacGU1MzlnNFAvd2ExSjhNV0FCcU5SbytseUdlQXVyWVNtVC9kNUtaTWV0dTF5MUQvQ0VCWHRhMytOOFdlVE9INitZRlk5VHJSWVIyK3VKbUlJNnA2VlNhMTdjSTZoR2lCMUFuWTJIdkNjTFpqVCtlUklzN0RseCtBWmVvREVUL1IzTmk3OSs3ZG16dEUxMXBHUm5ZUHJleFlzMFZvendMWU5tRU1XQ1BiTUxYd1prbXFrVitWQUpwclA0UGdEZG5VdHNVNFFsNzJqUXh0YmU5WWV6OW96eUhZTlAyaE4rVDVGNEFoZ20wVWVRUnBUKzFvNyt4YXRXcE5lbVJrejg0aVA5REl2SVZGbjFjWXROWFQwOVBXc1hidDZSMGRuZWRDNUNMSGthZVEwbTZtNnQrYWxLY2tZUlhQdGNxVDVzblpoSUlVSTdaU25SZGswMXYvdGhqMWIyVGt3ZjN0cXpxM1FmQXNnQ3RtZmppenhUSlcxZU1xOWZTWWYzcGs4V0MxV3Z3VTZ5NnIyeFp6MUlscXlOeFo3cjBzWTk4b2hGRE43alMxZDJmNmtoOGRIaDUrTU1nSkoyRU1ibnZINmhOSlBySmdWem1YeFZpQW0vZHlyT3RHaG9mK25BY3IwTlBUMDBZSlhTbU84eHlZdVp3QU1xb1pyRE5oVEVWV1VlUm9Fczl4YU04TGhmQ1NVRE5mNndCbmsvSTYwbm0rQ0U4a3VNNS9aNUdCWFRqblRzSXhzLzZjNGswRDJhMjMrNEJPSTVWZUFGajdxdFhqRkx5UVpFdHRvaVVyWndHVTVGRUdkbloydFAvT0I3R21HYm11cnE2VnExZXZQNjFqemVvTHhYQ3hpQnpybDF6TkEzQ2NQMmNrQzFPWExHdkd0MlhTcWQ4R2hxcG00bmk2MkpFZytSemZEdFFGd0lMWndaSGh5SGVCSGJsNldNbk96dFhuMHdrOUJST0V0YlVHUWZ6cVE4dkJ4VWRHUm9idXhQS2NUQ2Q3OXc3dGFPOWNJd1NmV3BnUHY2QmdFK3NLWUpIbVVzUXhWMjg2Q0QxMy85RFFjQUJnTFIxOVJSTHVxcmFPQnlGOEhzbldSbWEvOWNYbW9BUWNWKzMzN3BpOWFXQWdzd09IN2pBQkF5QjdoL2RzYSsvb2JCUHY4Sy9JTnJFT3RtYkpxWkRmV1dDak1IeFNxTzlKSjVQYkZuRzhKQ1BEZSs3dDZPaFVrcWNYK1ptRklNd3Z5bTI0aGlLbmtYaDJSK2ZxSTl0WGRlNGNHVm45SURBMFhnYk1xcFhpRllNTXhmRzUwOVBURSt0WXMrYTVqamlYa1R4WHhIa015YlZlZkc0bHdEWFd5Q2V6MnVUV0JlREFMSzJtNTJUVHlUOHZVdjB6RDhRYTJ0clJ1YnFWd2pNcnk4TTRTKzQxNzJDaytHSFg4cWZHTVZnTlZhd3NYc2JKRDluTXAvM1JVVFc3TmpkcWJ4bm9ULzBSRTRlc1FieFdoREYwZEhZY1NmSXBsamVvaTU4RHl4K1ZhbnNVOXRHOVEwUDlvUUtJRVFxOUVPUUxVRndxeVRuUFZDUW01Z3FUNG13a3NESC9WOHVQRmRSOGt5NEZDejllV09FQklmMldzOWNOWkpLL3g4S1U0bnVScVk3ZUttajlCOG5IemIzbHlTcHhMaDY2TDN5YnFoUHVpbTY2akxrRGc2ck5Ea21WRm90UThYZ1NUeVJ4SXNWWlpXWlFnL29LSXZNM2ZGYjVmckZKdi9aQUE3UDlybXZ2R01na2Y0eERoL3VqY1J2RFFZdlVWZDBKR0ZkdTNqekdMVnRxYnFpMUszYjRNU3J1UzFrZ29wek5aMCt0TUs1czY1R0VxZldQMGIxOW1TZUtQTEEzZE4yS1ZlNWpSUGdpeno1VjZ5eVdSQ3hoaEJucE9LN3IzbnpRM0xOM0hocmsyTXZLZkFGZ2YzL2ZuNk9KeEk5SmVlWFM1OEt5L1BjU1YvWDM3aGhmUFRpWTJoYm9wZDlLNkk1LzNzaFRLSHlxdDlhVStWZDdMdW5DdlltV0d0TUh6UENCak1kM2hVVU1YdVVYekRKOXlVOUdFNG1Ia3M0cnpNejFPWUVXUXZ6Y3hxTk5vVWdNd0JzQjl5WFJHUDlrNlAwMmRQelBtVXhtUzRsbnlua3EzOVNneE9tS1JoOHFjSTV6QkdmQjdBeVFFVktjUXFzZ0syMEhzeWxBVkxXNlB0TjBza2x4bEV2Q01iVzdjK3ErYVNDZC9qMFc5Mkd6QWVEb2dYMVh0S3hZMlUzaEc4dHpoOVdJSW10bTRHcXhtOTdHN2NMSit1YmhEQ1RWdEEvUUQyWDcrcjZHd3FGeTBESlljc1ZjK1FOZ095amM0TFAxczNaVGV1c1VqM3ZVVG4vclY3MGI4S2ZjaGNQaGRhQzhsaFFIdFF2dUpnejJCSmcxa1JkNGlCOFh6ZTRqQktwRGFueGpOcFA4MlFJYVZnTWdnNE9EK3lLeDNoOENkdnI4Z0t2S3pZSGp5UFBGN0F5d2RRUTA4VllPbmVJNHF3czgvblhoSjV0VDNLMEF4R0Q3WGROekJ6SjkzOE9oeC8zUmtDQlNYR2JNMFlPa3RCYXg0dGJXSndtYmRxcTJBaGl0c1pzTGhjUjlsNUE5bFFNdFV3T3lpcjZ5bHp6Qi9yd2puVTR1SlpSbUx2WnAxNjR0dzlHMjNpc1Y5aFNTN2RWWFl0V2piZEJxcnZzZ1JOM2MvK1Zjdm1kbnBpK0xvTHB6S1FvQnVLN1paeDNvRXdtR2l5cUhsOXIyTTVnWHlMbnErdURWb3E2aWFYZ1dsYzFtZDNaMUpkNGNhc0YvaS9BWUQvU0FVMnZUc0VRZWlkY3lDTkIxOWFkVWZqQ2IyWFliSm5NbUxmYXNPSGZRN0wydDBBZ3BqNi85ZXM0dHQvRVBsZzJVVGdxZkJyT25nYUZrSk43N0p6TzdHYlQ3UnMzdWFzN2w5dlQzOSsrZnArSTBkZmYyaHVsS3pHSHU0VENjYWVTcEJNUDBtOHVtY1Z4VkhLbXhobytsN08rVWdLTm1kNnJ4WFQ1NHRkZ1BtdzBBZCt6WXNUY2FiZm1nd25tb2lKeGVHc1NhaFZDODV1RFZvaURVbm5zc050Y3NndFArNFJXZXFJMHE3SG9ieDZmNysvdis3YjhnOElreitzbms3ZUY0L0g4RThrcnpTUDFaZnFFVy9BREg1N25VRVlOOUh0NUVXQ0VBaE9QeEo4RDRNeUdiQzNkYU44VFhHcERNek1WSjJnaU03MDZudGw2TmhVZHQ4N3c5bSttRWZnYktFWlZYWWMzVnNFMmM2cElURTZpOWo0VjZsMk1kbTJDdG1wZWFOMVBJQjYvNityNkU0UFM1Ym5xNElSWTd2SW55QjZHRTU5OHlWaUloQXdtejdlYnlTWm5NMXR0cjVIZ0VnUFpFRXk5MUJOZUNiSnJZR0t4eXI4ejZ1cndOeWJtdXZiQS9uZnpSSWVBOEJRQWo4ZDdQaWNpYlp5WTVMZmY4YXUwVWF4YlVXZDdZbWVwWHhrWVBYTEI5Ky9iQklDQmE4aUNXUmVLOTV3anhlUUROVmljd3ZxN2dGZUIxWEt2NzIvRXh2allBcjJhdy9iSFlreHh4cmlFWjlaSk9rOXBVWUMwRnRmRUNONEpVMDkwd2ZJSG1maWFkVHU5YWd2cmlWVkpIbzZjMFNlamJGT2xkNEFubHBaVERDckZ6UGtoVjIydkVOcGoxRTNhTEdwTUU5OVA0YjJCOGw2b0tBSXo1NzJqMko5cVRORGk1STQzc0V0ZmFJRHdaeHZVbVBKS3dqU1E3Zk1US20vRmtLT2FnWldYcFZRVms0N1hUY2Urd1dmVXVtdlBpZFBxQk83QzBPaVVFZ0liRGlSTVl3bzBpVHF4eS9hc2xnRlZxOGlNWFdPM0w2WlJWbHRweHRqOVlPWlZVbjVwYjFIU1h1ZmFlYkRwNVBTWU9wb0txcXdwMHVqc2V2eUJFNStKQzUxMUZQRmdMSXVxdHRYdDVKcGs4TDM4aklYaVRObDdtaURSaFFaekNZZ0N2WUREOWFEcVZ1aHFMWnhLTHBOUHBMZEY0NzlkSmZLU3lxR2t1anNlbUtyV1pXZ2xsWndQMG9LSnBKbmtkM1c4NVBYY2dXd0N2QXFtVGgzTE5EamJEUm54Y3N5N1J1d0dyUld3VGdEdHFaWndqa2Q3aktYWWhSWm9uV2tubVluc216VEFvZWZza3Fhci9oRHQyY3dWdWU3bm9oc0tWenhqYzB5ak9jZVdET2piSTluT0s2WjdUeVpIU3EremNaNGJMM056WTVkdTNiOThmZ0FUTEE4VEtwTFpkSFUxc09vYkVtMkVleDEvdEZMR3V3RWErRlU0VmV1VW84YkVIQjVQOWdWNldqNS82Ky9wKzJSUHJQVnZFcmhFeVVyNzlaMG5GckpYb1liN3FDcVo2dTJ0NDcwQTZlVk94YjF5SzZ6bVlUdjgxRWttOEJ0QnJLZXl0M1hyV1JDRUk1SnROQ2tVQXE0UThGc1N4Z0QwcFh6S21acnRvb2YwVWI2amNCTW10NXVGcE0rTUdCMnhCYUlLNmlpaFVXVmtlelBiL0lOTWlqbXFQY3llZFM4NGE3MVJqRUkyRXVHcC95YW04WVh2bWdUdXc5RG9sRklCa3M4bC85a1RqbHhINkdYL2dXUDdnc240MmdXWCtzVnhHa1pRUHFWR0dzczM4YmtFQkFGWDNqM0R0b213bTlac2xiTjhXem5DWi9jVk05NUpjV1RuRzBIREZVNS9iN0hkajNIOUY4YzFJVDA5UGxPQWpKOTFWWGZ0dEZ3MEpwbDlxYS90Zzd2bGRxZFJuU21SQUN5NnU4YmRtdWhlekVrSlhDMTZWK1pwV1JPdzM4WDhOamdOWXptaDdpZ3djTUxOenM1UEJxd0J0cjllcUhLQ0JyTk4wS3hLQWlraXpFUSt2Z1lWMEFHaFhWNktYRHE2anlKSGVyQUhXZ0t0dDVqOGErSlArL3Y0SGNXaFVBeG9BeVdRZXVBK0s5NXE2d3lTRU1PT0NmdldaeXUxbnV5OHp3a1ROZHJ1Rzk2ZFQyeTcyV3orQ29HaDU2Q3NBV0xySk9WOU5MeUJyNmU4cjFiRzVCM0F3M1E1WHo4a2trKzk2TUpVS3dLdUtRS3h0djFERmExVTE0ejB2MDJXdTR3V2lkblAxNHdlZ1QvWEJxNkpKNFV0M1BUT1o1TzhVK25wVEhmU0JtOFgyZlNaTkJ6UXo5WDZnSHZZRUk3aVdaRlFva2Z5UGsvOXZNRUl3U3JERndEeGU1VjlEdFNnK0tqODFybXBlOVZKV2E5NWh0Zm5SblpqWi95TEhWMjJ2WFhYOWdzVTd6UTZ2ZHMyOUJONWErUDVqS3FlK3pmWnc1eEZ5MmlKSW5TdlJJazVQNjZwTVJhZjgwanN3OWNFSlZmZHZxdm8rZDJ6MCtSa1B2RnJxOW0xQjhJLytscFkvQVBZVGVxV2p0aWlWaWhBMTNhM1FEKzVJN2hnb3hrS2NqbzYxeDlEaDY4aWlzY05zUkxYTmd1N0MvQW1WcWVsL1psS3BqL2N2emtrRlhMZW1jMUROVGhSeEhqSjdjczg1R0pwS0w5WG90ZUpVUGZFRE05ME8xODdQcGxOZkRzQ3J4cUFCQnc0TUgreGN2ZWJKcEJ3MWNmSlhVMzB3ZWd6b2ExczdPMyt4YjJob0Y2cWY0RWNmdkhJamtVaFVtcHhQaU1pVGFudEtXN0tpSjg5OXRSczV1MlJrWkNpTjVUbDlzR3hRTnp3OGROK3Fqalg5Z0owSmp5ZHRnVW15aWFwSzdhMkk1TmgxZnczbDJkbDA4Z2RsTGhUSTBoYkJybDI1VlcxdC80RGo5RG9peDN2TlZyVnNqV1l0OTFlZXVQUVdLTitXVGllL2kyQ3FVbFgyYWUvd25pMnJPanIrSmVDWnBIUjZJQmE1Z090YWorL3BFUllUTk5VL3FPSzhiRHAxNVlIaDRaRmw1SSs4eVhCRFEvZTNyMXI5QUFWbmtseFZ0QjhXWS93MDVjZEs3OXRwM1ZpbHBzMlZvUENZR282d1V1U0tVejZPTURPUTVRb01XTzA2ZVc5Uy9aNDc3cHpUMzcvMUFTd0R3SDFvYUNpM2R6ajZ2KzBkNDN0SVBNRWJLRkNLM3FXV2cvMjRTRzBTWi9rZFVmSGd5M0todHFjdlhudXVrR2EyQjJZZm9Mbm5aZnBTdjlxN2QrLytReWplcms4czFObVJnL0U1SkVKRnhaNkxRZWZ5L2FPcXB1L3ZUNlh5TVhuQmhqanQ3WjB4Q2w5YUFMRFlpQkcxQzBwQTV5VzBwamx6M1k5bDAzMlhvSFJ6OGFKUXNLR2hvZkdWcTFZUGkrQzVRREdQVHkyVml0T2RLQmRWNE9aWFh1bUlxM2hyTnBPNnZnaVVDQXhYQTU1LysrclZUeUI1WW0wQUxDc1ZjUm1GM1k3eHVNNk85cHVIaDRjckJiRlk5RHFMUkhxUFI4ajVMd3JQUWszQUs1dk5VUnRKbXRtM3N1bmtWVGowZXUrOXBHSjR6NjBkcXpwTkhIbGlrWk9wc2h5NXdlWEpsai9WZzVDZ3F2MGM1cjQyayttN0t3QUlsam1vc1hmdldHZjdxdDhCM0VEeVJQOEVjZzZKc05VcnlQTXJHQ2ltN2g5cCt2SjBPdlczd08vTkZjUWEzckt5bytOT0drK21jSU1QWWxXNVVBdG9xMllBcnVoeEx4Rm1ENXJhRlpvYk83Yy9tLzRIbGljQWJ3QTRNakowOTZxT05mZVE5bGdQbE1RU21DeHFSWXJFWWtCcThnK25BbFd6NUVzbEFheTVBQkNlcWt3SHNWaE56all4R2s3MUN3ZjM3MzM3OXUzWkhWZysxYUlFZHJnancwTi9iZS9vZEVnODFxL3VyNzFCV1BRQVZpVWcxcHp2VWYzUmd1S1J3dG1EYXZZMUVoL09wSkxmSEI0ZVBoRDR3dHJZMHIzRHcvZTNyKzZNQ09VUnFHaTREUnQxYnlCQk5WemFuMHBlVnNwK09DMGRxMXBENUhPRXN0NnpYbzBBc0JaczgzbWwrR3I5cnVITjJVenFDL0I2c1JlemsyZDMxNGJVdU91ZUtDSVZWR0ZWRzNCWGdvVXRiS3VuUjk1bWQ2bnk3UDUwOHNjSVNQb2FLUUxBMnRzN295SjgrdVFJYVM0Y1F6WWxNSm9jUFZGa2t4bWUyTmErYXR2ZWtaRjdpMTRvSllNOVh3OFNpVVJyZS92cUY4REJaMFNjaC92Z2hOVGVWazM2WCsvTG00MloyaFVqdzBPMzQ5QTlEZUxhdGF2L3JvWXhBMDRUWWFqSXRySzZaMXZMTlN2NzhSNXdKUlF6N0RIVks5emMySHY3Ky9zSDRMZWhCbHQvZVFkdXc4UERCOWFzN3Z5RkdzWUJQSVNVanFKMXI5RmNkTTc1L3VoVmR2NTAxUFNOL1gxOTl3ZDZPWDhRYTlXYXpuL1E3R1NLZEZlUFJOVWtNYXNaY0FVZnVETFlic0t1a1hGOVR6cVQrcTlEcENwQlJvYjMzTE9xdlhNUFlXZFFaTVhpQnJGbWlMdHRyZ0FVSm9kaDh3U3dpbkVya21WODZZeFZ6YjV0TWxHMWIxaHU3QjNidDIvZmgrWFg2a3dBTmpJOGRITjdSK2NvZ1VlQ2JLa3BpTVZLYlF3WDhTTXE4ZStabzhHSm5JN01IeXJlWmRDdnF1cUgrdnY2dmp3eU5MUU5RV1Y4clJmS1hkUFplWXVSanlLWjhPTDJZc3FWaHRNKytRTklRRFg3MHZpQmZSL2V2My8vd1ZKcjduU3NYTlBORUY4bTVOb3lsbXU1QUZndUNjZlVCa3oxOWRsTTZnZFl2SlZYa3h6MXJsMjdjcXM2MXFWQmZRN0JGYlY5ZVA3WHQwVUpZSG5nbGJwL2RVMWZQOUNYK21OZ3VCYkdXWGUwcjNhTStBK1NMUUQ5ZGh1clVFK3NFa0FoL3dLbHlFYVNUMXpWc2VhK3ZjTjcvajNGdVUzNmlVYWphOXRYcjM2NkdUOE1oeDhVa2E3YXR3MldQV1V5RHhCMy81Z2JINzFvMzc1OTQ0ZXluZ3dORGVXR2gvYjhxYk56OVg2Q2p4RGhTck9acXJFcUplbW9SVnhZMEQwRGFLU0l3UTZZMlUxcVBEK2JUbjZsS1BFTFFJSkRTMmQvdjdLai9hOEVqcVl3aGxrckNLdnRiSzdPNTNrNmFEa0RQelcyZjkvYmR2VDNCeE13YXdSaWpRd045YTFvN2Z5NU9HZ0ZlWkpQQnV5aW9sUG5ZanZFaGZvT0JlQUtabU5tOWtzMXZDZVQydmI1b2IxRC9ZZFFjdWRYL2c3OXM3Tmp6VmFEUHBJaXF4Y25pRFcxZXFsTXQxbEo4TWtxTXk4bHI4R3E3Vk54K2xjNkZTd1p3K1Z2VWdDanFuMWpIKzF0RDJZeUk4dlliaEdBamd3UDNieXlzOE1WOGdrVDM1V3Npb0JzemdBV0Y5R2pxQlRFS3VxR1pSbTdSbEJkdXhObVg2RzU3OHltMHovY096eWN4ZVJ1aTBCcWlERU1EUTJOck94b3Y1ZVVKNUJjTTFtUHE0blY1NS96STgrL2JYclYySUg5NSszWXNXTnZPWi9HcnE3RE5vWmEzSitSY3FMZkJOMmdxUjROTGNGMlNUcXFPZ0RhMlpsazhtZVlPTTFjN0p2QmYwaW5POUY0OGlzVWVmWGNSd2piN09EVjRnQ3dQSU5HQ0ZULzZJN2puUDcrNUwreHRFYnZMaXNBS3hxTnJqVnhiaEp4VHA2c2YrV1F6M21OK3MyMytRNEJkdm5vQVY3dHRFaU16TFdJU29lRXNGRVZ2U0RiQVR1TjVFbWtPT2FUMmRSZllYM2FLd0F3YzlYY2wyWDcrcjRUSkprVFRpWWNqajlhbXB4M2tIZ2hRUG82QXl6YzFDZy9TS0tBQmpQOWw3cjIyZjUwNmpvQU9RUjhlb2V5emhLQWJ0eTRxYXVwUmQ5TjhrMFV0dnM2eTlKOFNYV3B2c3J6UEQ2b2F1ZGwrNUpmOTNVekFLOXFiNk9jU0t6M2RTVE9wY2dSUmRQalpKSEVyT1dBSzVqcU9JQmZ1bXBmYVU3anBpU1NCM0hva2hnVGdFVWlpVFBvOEZxSzlOcUNURk92Rkx3cVkwUHlOWmR6c2pPbFBvb1ZYcU8wUHZ1eGxBOWt6V2pMOG9BN1RHMDdnT3YzNzNYK2MvZnVCNGF3L0lIVS9FTUpoUk9KODJtNFFFUmFwdW1memZYS3MrbkRZc0pwcTlleGFYYk5kQXhxTjd0bVB6K291Vy91em1iN3B2cm93SDNWVFR6KzRFVGllUVMrQk1vR05IYkthMkZpcVRkajFhN01qUjQ0ZjNCd2NOOU1kb1FBRUk0bHZ1S0l2TTdNMUp2c3dRYmRMeHV5cTBoU1RmL2t1dmpnUUhyYjc1ZGdRQ2dBTk56YmU1U28vY1FMdUNZY1IrWEdyQXhTWmJhWUFDeS85WmxRMDIrNG82RjNEUXhzV1U0OTlFczE0R2NrMXZ0OWNlUzVzd2VJTlhHeVhqdXptV3VHdTBCRWFWZ0JRRUEyRjU4TytzR1dvbUhIQk9Zbm15S3E3aS8zand5L2NQZnUzY01CQURKcHdRMmJON2ZFeHNkZlk1RDNDWmt3VEJrelhsWkJhaHFrRllBelAvbmJBZUNyQjh6OS9NNit2bXl4ZlEyMitpRXRCUjJJSkJKUGcrS1RJbkswSVc5YlNoQW9WNzNWeTdaY1R3d1JVUGZ2YXZLQi9yNnR2NXp5cGtCcXU5WUd3SHA2NGlkSnMxeEk0Sm1rVExWUG5EMXVyVnNjVzB5UklDU2hxbU0wL0JwbVh3YmNuNmZUNlFPQi9acjQvcEZJNGt3NnZLb0lrRndFV1g2RkFGYkZyNmsxZ0RYekl6S3pXUkpPaXFudGdlR2FjZVN1MjU1TzM0bERhOGhFd2FpSFk0bFhVZmdoa29lamNQamhQOXk1dUlwSloycGN3Z0RXdEM5V3lNczlIZE45QUc1U3hYY3NOL3JmL3VSbklEaFVYQmljSVJ4L0loMStWUnduYm1iNTZ1UjZLcHY2Vk1JMDFUNkZYWnBOcGE3Q3hNRnkyZlYzQUdCVlIvc1l3R2Q1N1VGWUxtMkVIaGpuSmNIZjB6RjV3MEIyeVk1eDljcWw5K3g1c0tPOTAwQjUyb1JWbTA5L2FobmRXRGdBeXdkUWJSUm1WNGRvNTJZeVczY0ZBZHJpY05LZHF6dE9JZmtvVkRRTmM5NVlVbjVFc1loSUY0QVZJRU1nblNKZ1lsS1FYMTlGdGFrT21BWWJNK09IZHd3TzNJS2d0SG02TTl5MUt6YzhOUFQzOXJWcmZnTzFJWmh1QUxtZW5FUmU2NitqbFRFMGMrWVFLcEJnZTUrbjJ3MjRUcUh2eWFhU1h5dWF6aFVFU0lFVVp3a2NHUnE2cjZWOTFTOGRzZ1BBTVVJSlRkYlZLWW81N1RlejJEOHJEdHhnM253bFVGWC9BRGYzcW14QTF0Nm90WmE5ZTRleWE0YzZmK2gySUVzZ0FyS255RDZWNEVNckIwTE96L1VRQnE4bm4wWEU3S0NRTk5QdEFHNEM5Q09oUGx6U041ejgxL0R3Y0M3UWtTbng4Y2pRMXBWdG5iK0VXSXpDaDJCdUpKME55bkdzZnJrUTUzcXQ2ZThoT2VtbnlHN2xwOEw5RzJyblpETEpMKzRiSHQ2T3BVSExVcGNGSGhrZXVuVlZXK2N2S05nc3dpTlE4VENiU3RhUTA2M1hvZ0t3V09rK0xReWRNTlUrTlZ5cnhrdXlxVzJYand6dnVXUHYzcjNqZ1YxYldMODRNakwwUUZ0NzUrMmdQVWFFNjh2N3dubC9WcDZvWFFEUUZEODBGMi9LcGxNL1JvVWdlQ0hTQ3NjU1h4YVJzMkhtRmlXSkRZb2phbjdSL09qcDNZUmQwZGZVZERtMmJCbGQ0a0FJQVNDUlNIVG1ETjhXY1o0OFVRbFQ2WE8weW43ZGVBQ3I2QVJhOXhDOElKM2Erb1VwRVdNZ0N3bEdBQnFPSmw3c09QSjFxejhpWDhyUUxUQ0Q3cVJ5ZjZWUVZPM2FUS3J0amNCZDQ0SERuZEcvS0FCc2pNY1BjMXc4ZzRMbmtEd2VRQ2NwRGxrNDZTMHhtS0hrWEcrYndZSVJoY005ZzZuZERlRG5BdWZycWRUOXQ4eHluVUFDUVZHYzRFUWk4WmRDK0FZQWp4QkhXb282N3JXby9aNlZqWjlHZnZKbHZzcVk4Q3FOTXpSOGJ1d2dyOSsrZld2QWQ3VXdhNDJOR3pkMk5iVzB2WmlDWnhud0tLR3M4S3lTVFFuZWphVkRrL21BN1FhQWttY2RNYlA5WnJiVkRMOFI2QTE5ZlgyM1lQSmhUVERFcHN4YXJsMjd0bVBGeXZaM1UvaEJrS0VHdDhLVWNFdHpyYjZxMGtXVkJOS3JkWE9zTkxkU0E3NnBZM2FKVCs4UnRIbjUrdGZWRmQva3REb2ZFZGhMU0liTVREMThPczg3VWVFVDUzSnBJZlRBaUltS0s3dlAxSzdKUVg4eTJOZDM1NVRuRjlpMVJhTEgzZDJKaDBwSVAwQ1I1NGs0Ylg2SVBoWElxZ1o0c0VLdmRENUM5L29GYjFXekw0dTUxL2xWeFJYckFRdWJMaG85SlVUbkZ5UzlrYlFONGNLcTFJaFhMSVdOWXFwL050YyttTWtrZjd1TWdCQUNzSEE0Y1lJMDhlc2tqL1pMcFN1WUhHbnpYQWJXVXdsSUFxWjZtOExPemFaU3Z3N0FxOFhwbUp0YTVkZWs5UHA2SjRmT0k3QkorZ3F6SVhOeloyVXltZjhMRXM2SzlDZHZuN0ZteldHZHpTdkhZZzU1TkNCSEVIZ2VnR05FMkRJUnRMRW8zeTg4L3FLeWZCYkdDSEFxUXFDMkY4QVdOZnNhTmZlZFRDYVRMZ2EzZ3JVS3BCcGdZKzNhdFIwclZyUS9CZzVmU05oakRJeUxTT3NrbmZPUmpwSWVkZUpma3E5aU1PODlkeEwyS3lXdXp5YVQvNXo2dVlFME5LNHEySVZvTkxyQ1plakpRdndIaURPRTdDbllvM3k3ZW42cFdiSnF0QktnSFg3Y3c0bHJhdzdBdmFiMmE5ZmM3N21qenIwN2RpUUhnZ1J2YnZzMkVrdThueUlmSkxuU3ByWjBMVWNBYTlwSGN1N1hLVGxoMEx4V1ZyUDd6YldQWmRQcnZ3YmNNaDdZckZMNmQxSlRKTEg3bVRTOWdDSVBOMVBBb0pZL1lLdDRDVmlsWGkwS0FLdllEM28rend4cXVCdG1YMWZCRC9xVHlYOVBzYjJCWFZ1RVdBTUFKeHlMUFIxMDNpU3dSMUJrdmJld3pJYzdsWkdCa3BOSzF0VXNBOFUvQWZkWDQ2T2hiL2tIZDFYSFA4VUdYY0xSK1BzcC9CREJacEFOU0ZCckJtQVZud3dZWU44ZkI4NGJUQ2EzTFVPbjcvZjd4NS9Pa0h3TDRFcVBmSDgyN2pLcndUTFUzR0RtSzhqVTFMNnBPZWNEL2YwUHBCQlVTQ3hhZ3hhTjkzNmNJdTliWEVTcERRMUdsVEF4czB2VHFlUUhzVFFHUVN6S1JERXZHelpzNkE2MXRoNUh5T0VrTzBnOHdnd2h3Q0lFWS80N3UwaWhtY0ViR3c4MVlKUUdCOENnbWFVQUpBSGVRY3ZkbmN2bDdoNFlHTmdSQUZlQjFGSmZvOUZvQkFnZGE0SVhBN1lHWUFSRUJFQkxZWkp6R2IrcVppQXNaY0QvRWZJTGM4ZHVtZ0t1Qmo1dmthMTNPSng0T01TZVFlRXBCQjhHc3BmRitOU2tHVGcyNVQ4bWpYU2JQbC9PczJVWk05eEcyajlFK1RmQS9YdmZCRGRma09ETkwvbENKQjUvT2lBWGl2QmtzK0tZczFFeFE2WEFWRDBBckRKbXBhS0dqVW50Z2lBaHBqWnVadDl4eC9HZkF3UEp1K2VTY0I1eStoZUpIQUVKdlJMQ3M0WHNNVFZZdnRDaWtvU3E3R1RLeFFKZTJXVEF5cnMxeWVQeVpnWXorNnNacnJYYzJNLzYrL3RUUlhxRFFIY1dQOWJnLzNkTE9KdzRHaUcrUUlDekFFUkJiR0FGaFU0K3ErUUFvUGNwZUF2TTdqR0cvdHFmdXY4MlRBeGxteE5PTTNVWFNEZ2V2MFFnNy9lZGJoMk1mYzJuOTNqOTJCNUI3elkxdTdSSmNGMHltVHk0akkycmVHRENwcmVROWpuektCUnM0alN3eWxpNDRycFcxbFFKU0ZKVkQ1cnFCVTBPdjdETTEyeFpPT1ZZTEJZMmNYNU15a21IRm9qbEU3ZUQ0cXI3RjNkczlObURnNFBiRVZRSnppZFJSSmtnaGdEUTNkMjlubXhaWjAwbVl2WXd3bGtONm42NHZNOFZ6WW5yaktpYWpEZnAwTTYrdmtGTW4xQWFWQ3dFVWhkZ0kvLzc3dTd1OVNJcjFwQzJoaUU3eGdlcWpxWGljQ055dnVZNXBLWFY1SC9oNGgvOS9jbDdNWmxUSWdCWEYvMTZueDRLaDVPSG05aUo0dUJSTUVZQlcwdndjQ1Bhb05ZQndrZzJGY05iQmh3RWNCQ0dVUkFQd25BZnZBcmVPOVR3YjRWeisyRFhBL2ZnRm93SG9GWE4xeEFBTEJ3T3h4aHF2aGl3RjRqSUtuOEFVZ09xc1JhZ0Fxc3NpR1d6MzlMa1B4U0tBcnpxR2YwN2lJOW5WaWIvRzNkaExQQ3QxZG1RbnA3NGlkSWtyeVBzRmFTczBvbkJRNVBpSVZZTVlpMTRNSnh2ZmZhNnVFaXZQNUplT1FKZ1dRUHVCdXg3N3RqWUQ0c09Fd1BnYW9uN3duQTR2TTUxbkc0SE9JYmthbnB4Tjh0Z1YwTGx2bkc0dCtjT0hFanUzTGx6cEpZeCtsUitFY1BtelMwOW82UHZjaWdYVUp5MjJwZmV6c0REVkIzM1VoRUlZZ2NGZHMzNG1IMmg2R1JnT1NlVytlL1dISWtsTHFId3pUQzArWC9obkE1ekcxZUZwZDZvVEFPQVgxdk9yc3hra2o4b1V1YkFzQzFlOGFyLzRyM25rUHgvYUhoSi9vTDZiSSs0WFhXUG1yeTRQNzN0NTRHKzF0eEo1dTJhenVNNk1qbkFDaVNRbWlmRnRRQ2NnZ1J3NmRpbGtnblgycldiTzlyYURtNVVkVGFZb0J0VWRjemFsR3p4YVNMM2kyRkkxWVpWYldpOHlmYnNuRnhkTlZVZkVPaEVmV0lXQUl4RUVrK0ZnNHVFY3ZJRWoxMDlZNWdGQXJCbSt1alpLWlR5Z3dUOGRrRzlIMnBmRk9pMys0S3B2Zk1HQU1MeFRjOGc5QlZtOWpnUjZmYXc3RW44bjlNcnM3amdJYlpOeWRKWlhJVnFacTZaUFFpeUQ3RGI2T0kzcXJ3bEs3a1VKazlLRFd6YjB0ZmorYTVoVFdOMGxnRkdHSW5FbjBkSDNrcmhHV2FFVDk1Vlh5QnI5dGJlU1FTb1hua2kvZ3JvSnpPcDFQZjl2eDBxRzZWZ1FTTHgrSHVGOGdtZkRVdUJmRmxmSFFBc201dEJwYTgvSkttdzNWRDc4b0Y5ZS8vVFIyU0Q5b21sRXd4YVYxY2lFV3JocjBuWjVBTTd5NzBLeXp0TU42T3FuWjlOcHk0UGdyaUcyTFpTLzIyekJGaUJCTExRT3FwbFBDb0RrR0xKQi9DMVdqOHBFZGNHVXIrMU13RFlzQ0hSM2R4aTUwSDRlaEduM1NZcVllb1F3MVFEWU0wV2RGZjRjZFhRWG5HU08vVjFrSDQzaXp0aTROZHo1bjZ4aUdnN0FDSG1HVHZubjEwNGtUakJ6SjVNNDVOaDltaHhwSFVxbU1XOHpWbVlDcXhKRTc3SmlXMmthcU1nN29EYVBRQ3lvUHhmem5ML2RseDNJSnZON3B6cGV3ZXk3SHhoeGJhM0huckFtWUNSN3U3Tkc1eVczSVVFWGt6S3VpSmpYeU1neThyL2N6S2trZi9pa3A4dXBZWnRxbm9GTmZmTm9rMXpxQ1dWK2FmVUhJM0czMnZDOTNtVGM4d0hzV3hleXpFemYyQ2x5Mi9HZkNreUNWWDlpZVh3bjVuTXR2ODdSTmRzV2VoY05KSDRPTVY1cjFjdXZOd0JMSE5KT3E2clB4MC91UC9GTzNiczJCY0FKb0VFRWtnVnNWVmdLNWJuK2xZVEIxdWdEd3VlZENrQWRFZWpqM01ZZWdNRkx5SWxWUHZjWmxLd1hGbnV3eHBOSXF3VXhQS0h3aFhuVnFvNkR1QjdnRjZkU2FWK0U0QVFOWmRKK2M2R0RSdFdoVUt0ajZiRFV5QjhOc3cyQzJWMVlkaUh4MjlzVTNTb0hsV0RaYXFzL0xOYnhWYlEvbWJnUDFSenQ4SjFiK252NzM5d0ZuQWowSmxBR2hwa2xkeG8zYkhZSXh3NjU1SjRKaWtyclV6LzdyejJ6VlJiYjFNUllFSk5qV2IvWjVCdm1ZdWJzdGx0OXdRR3RwZ3dNSDRPSEg1VXlJMGVVU0E1TWZLNVNnYzRmVDNLYUExbnVKS0J2aUZVYjV6OWRab2IrNm9QT0FaVlYwdllBWGNsRXIxTnhtOVNlS290MkpqcWhvajZCS2EzNXFBdkcwaWw3a0xBZXhWSUlJRUVFa2dnU3pYbk1lQ2twbWg4eDRzTVBJZVV4K2E3T2xEelEzcWlORWRLS1dMMUdsZGhsWC9yeEZHME4xbHdEMkIvVU1WMS9lbmtUd0dNSWVEbnE2Y09UbXRON3V5TXIxblJycHREa0ZOQXZzU0FYaUVqa01tcTZPbW9hZVdwZkdWeC9aUzJ3UDBHRE1Mc3I0QjlqNnEzcHRQcCs4dGtnZ0ZnRmNpQ0d2Tlp3UkVBb1hBOGZvYUE1NEI4R2lrckp6YlRSR3ZmM0hlVE41S2w2Qk1MRzBwTkQwRHRacU5kYmJuY2I0cVEzK0JrWUlvQjJSaE9QS29waEV0RjVMRVRVMWVzQW1jOEJVK3lDbDg2ZWRwSnNSNTQwMU5WZHhqNDNSejA4c0ZVYW1zeENCSnN2eVVyQWtERGljU2pCTHlSbEEzTGxOQmRBWWczS1lxdnpxYTIvaXJRM1VBQ0NTU1FRQUpaK2pFTUFCeTI1ckRPMGZiY3N3QytqdVJqODlOdVVSTWd5NnFMdDFuSkpQRVp6bjVuQnJDS0tGaThWNm5oQUEyL014Mi9MSlBKM0F3Z0Y4VG9EYy9kcG9GWmF3NDdySFBGd1lOZElrM1BCUEVvSTQ2RU4vSE5hQllUa2M1SnVsSXliYXQ4V3FHWkdvQzBtZlViK0RPNitrZXozSDNaYkhZN2dORXArd1pCM2gzSVlnSStLdGxnK2MzbDlNUjZuK0RRbm0vRzAwQWNUcktGTFBUdm9rckRsOTlsRXdpd0djeDB6QXhiU055Y1UvelFIZDEvODQ0ZE8vWk8yVVNCZ1MwRkxJVERNVGhONXdueEdvcXpxZ2l4bjhFWlQ2azd0cW8weVB5S09XOE52VWtVT3dCY2JTNi9sY2xzdmIzby9nTER0M3hzaDBYam05NEsyaFVnbXd0RGRKZUhLRWxSMVNFejk1WFp2cjRmQjBGZElJRUVFa2dnZ1N3cjhFQUJZTzNhdFIwclZxMTZ0Z2RrVGFySXl1Y2Fjd0N6WnVPNnNqSjRBMmRKbHpCN0dHM1RnSVlKQ2hhMVFRQmZWdWd2Y2djUDNqb2x0d3BpOUlYVng2bTVyZE4xMkdIcjFIWEZHUjExSGFmbEdEcDhKb0FWSk5RdisvRGZwTk5WcTV3cWtRWXpFZU5lTS94WlZlN2MxNlRiaDVMSlBWTmU2U0FZakJQSUl0MHdjekwyQUJBT2gyTmswK0VRbkVyaXhRWW1TSFlXalNpb1BGdFVIU053djhIK0tvYjd4czI5eFRIN1Z5YVRTVThCYUlKTk5MTVVrdXllYU85WkluZ2ppTE44Yml6QVRIM3NvWXd6TGg0Q1BhTnJuRENQQkFsNmxYTEFYVEI4ejJ2eFRONDYvYUtCTERmNzBST0p2MDRjdVl3aXE3RThLckh5YllOREJyd3RrOXIyTlFSdGc0RUVFa2dnZ1FTeVhJRURCWUExYXc3clhObWVlNGFCenliNWVJRHJpZzdvNTBDZE1ndTVyRm1KUDNNTzE4Mi96enV4OW9FTlB6b0hWSFhRZ0Y4Uyt2ZHgxZDl1ejJSdUQzS3JSYStUeFRyWDZNOE9odU1Fc3ZnVDBIa29kMEd4ZTNwNjFvczBieWF4Q1dMSEttUUZZU2NSNkFTb1pscDB1Q0Rld0FYVjIwaHVWM0F2WGJ2RmJQeGYyV3kycjVMUEM2U2lkVFhnNk9aSVpOOFRHY0pyWVRpTjRuUVZMSktaVGZlZVU0NkhTai94UXJXY3dXQ3FLWU45eTRCZjAzVnZLU0xWRDNyb0R3MWRzMGdrL25ZNjhrbVF6Y0NTNXNSU2ttS213Mlo0cXc5ZUJaVlhnUVFTU0NDQkJMTDhRWU9KYnBONC9IZ3hleHdvTHlYa0NBcFhGMExueWVEQ0xJQld1ZmEvUEZGMnVTaCsxcGJDSXBEQmZ3UDkrWUplZUwvUGdQK2wycC9HakQvZm5rbitKY2l0bG55ZVhwTEVaWTVTaXZZLzBJVkFsdVRHbUt2Qkw2bjBQVDA5YmZ2M056ZUxPUDdmZGdOWVUvajc3dDBQRE0xd3pXQXp6VitLRTIrSlJIb2ZCckhua1h5c0VROGgyTU5wbllOV01Ha2VTRFc5M05sVXg4MllocmwzdXNSdlhkVmY3OGhrYnB2eXVRaVMva01xNkxOb0l2RnVnQjhuMldRR0YxN3A4VklTbDZSanBsbkF6a3Nuay8rRjRHUXlrRUFDQ1NTUVFBNjFtS1lRdjY1YnQ2Njl0WFhseVhEazhTUk9OK0FrQWlzOFdpS1VvMCtaRWtCWDFQSlhJa1BqMUZmWTFGaTdhR29kRE5aUHM1U1ova2h6dUhsc2JQOXRPM2Z1SEFuaTgwQUNDV1M1R2VwYUcvMWlZMXRKMGlkemVFOGc4M0RHU0NSYXU4ME9FOFdaQkhwSUhtV21ZVUNhUVJ3Sm9nbG1CS1FmdERRTVFuSWNacmVyeUhhbzNlR082UjJEZzZrK1RKQStCcWM1Z1IzSmMySmRRTXBHajlqZHBMWUhSclcrY1lPQjVrMHFGcXJwVmpOOWV6YVYrbThFNEZVZ2dRUVNTQ0NCSE1xeDg2UVlJQndPcjdOUTZDR080aUVRT2R3TXAwTndRakdnQlpRQnRjem1kaGRlVVJVbi9yUHdHUVpnQUdiYkFQdXJDN3ZmVWYzZHZuM05xU2tGQWdGb0ZVZ2dnU3pMeEhNaHJ4OGtod3ZvakgwSjlmVDBOTzl6bk5ZT1lMT3FoTXhNSE1jR0FHVEd4OGVscWFsSjArbjBnUkxYRFJ4aklNVjczYUxSM3ROTjdESVJPY1dzbGlPcGEzbXp4Y0VseGE4OS9KWEN6c3NtazdjaWFCc01KSkJBQWdra2tFQm00Q1RxN3U3ZUlOS3lXUVFQTWVLaEZCNXRRQytCQk1CVkU1VEFObnZXVTZyREVQQUhXOWwrODlwWStnRmtZZmdueVB1cGN1dklpTnMzTkRTTmZEczRWQTRra0VDV2ZkSVp5S0hyakZGRm9qN1hLcnRBRGgwUkFMcCtmYnlucFUyK0tDTFA5U3F4Q245YkxLSUFRRkxVOUlBWnZoU0NmalNWU3UxR1FOZ2VTQ0NCQkJKSUlJRlVHejhmZlhUenVwR1I5U3ZNb2hCNUdJQ0lHWE5tNW9nang1blpCbm9VQzRVM1R3cU1TQm93Q3VoV1UyUUZvSkVqQ3YyN2pjdE9rZkh0Mld4MkdNRDREUGNWeE9hQkJCTElzamZFZ1FUQ0dYVEN5dngzSUlHVUV3R2czZDJiTjRTYXhqOUZSMTd1Vjg0dkJuSjNIN2hDZnBMRVArRGFKZWwwOG9mRjl4NHNZU0NCQkJKSUlJRUVVa0g4WE9tQnNCT05ScHNkeHpIWGRjdm1YNjNwVnQyQ0xhTVZ4Rm5Gc1hrUW53Y1NTQ0NIbE9FTkpKQkFBcW0xQ0FEdDZlbHBZMVBMdVNUZUpKUWV2eHBySVZvS0ZRREZteWdOVlUwUjlsMDNsL3RzMGVUVG9QSXFrRUFDQ1NTUVFBS1piMTdGTW5GSU5kY3BkWTFTWk82QkJCSklJSWVrb1Ewa2tFQUNxWWQ5TVFDSVJqZWRETkZMS1BMa29tcXNlZ0paeFNlU0pFbkNZR2Izd2ZCTGRYbFZKclAxZHYvdlFkVlZJSUVFRWtnZ2dRU3lXSEt1QUtBS0pKQkFBcW1CTVEwa2tFQUNtWXVOSVFEdDd1N2U0RFMxbkVmeWpSUnA5NmYwMUJySXlnTlhVaUJQTllPWjNtT0c2M0pqK05iZ1lITGJGUHNYQklxQkJCSklJSUVFRWtnZ2dRUVNTQ0JMSUxrTUpKQkFBcW0zRktxY3VpS0pNNXBDUEJ1R1owOEJzdkkyYWE1MlNlRURWNmE2MTRodE1QMkRHUDgyTm1hL0h4eE1iWjFpOXdMZ0twQkFBZ2tra0VBQ0NTU1FRQUlKWklsSUFHQUZFa2dnamJRM2hiYStjQ3oyRE5KNUNZakhDU1VDQUI2V1pma3FLc1BNZkJKNU1jQ2ZLS2p1RUF4Zk1kZCttTXM1OTIvZnZuV3c2SFdDZ093MGtFQUNDU1NRUUFJSkpKQkFBZ2xreVNhVWdRUVNTQ0NObEVtY1U5Mnh3eDdod0QzTnlKTUpQRjVFdWt2VlNQbVZXcE1OR0NkTW1LbisyVFgzb3Y2K3ZsOU1zWEY1NEN3QXJnSUpKSkJBQWdra2tFQUNDU1NRUUphb0JBQldJSUVFc3BDMlp4S28xQk9QbnlTUXh3aHhIQUNZNFVnQVhVWTRNRVFBaElyZVl3UUdqWFl2amI4WU84anIvWXFyQUxRS0pKQkFBZ2tra0VBQ0NTU1FRQUpacGtsa0lJRUVFc2hDMmFDOEhabzJDYkFqR2wzYkZncTF5eGhiTk9RK2pJcFdnQXB2c3FCTHhiL0h4dmJkdjJQSGpyMytXNEtKZ29FRUVrZ2dnUVFTU0NDQkJCSklJTXRRL2o5WTZSOC9UUVoyRGdBQUFBQkpSVTVFcmtKZ2dnPT0iOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2F0ZS1sb2dvJykuc3JjID0gTE9HT19TUkM7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWFkZXItbG9nbycpLnNyYyA9IExPR09fU1JDOwoKY29uc3QgTk9JTUdfSUNPTiA9ICc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS40IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxyZWN0IHg9IjMiIHk9IjQiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNiIgcng9IjIiLz48Y2lyY2xlIGN4PSI5IiBjeT0iMTAiIHI9IjEuNiIvPjxwYXRoIGQ9Ik0yMSAxNi41bC01LjUtNS05LjUgOC41Ii8+PC9zdmc+JzsKLy8gMTgvMDkvMjAyNjogb3JkZW4gYWxmYWLDqXRpY28gcG9yIG5vbWJyZSwgZW4gdG9kb3MgbG9zIHNpdGlvcyBkb25kZSBzZSBsaXN0YW4gYXJ0w61jdWxvcwovLyAoY2F0w6Fsb2dvIGRlIHRpZW5kYSB5IEFkbWluOiBMw6FtaW5hcywgTGlicmV0YXMsIFBlZ2F0aW5hcyB5IGN1YWxxdWllciB0aXBvIG51ZXZvIHF1ZSBzZSBhw7FhZGEpIOKAlAovLyBwZWRpZG8gZXhwbMOtY2l0byBkZSBSYcO6bC4gQ29tcGFyYWNpw7NuIGNvbnNjaWVudGUgZGVsIGVzcGHDsW9sIChzaW4gZGlzdGluZ3VpciBtYXnDunNjdWxhcy9hY2VudG9zLAovLyBudW3DqXJpY2EgcGFyYSBxdWUgIjEwIiB2YXlhIGRlc3B1w6lzIGRlICI5IiksIGlndWFsIGNyaXRlcmlvIHF1ZSBzZSB1c8OzIHBhcmEgcmVudW1lcmFyIGxhcyBsw6FtaW5hcy4KZnVuY3Rpb24gc29ydEJ5TmFtZUVzKGxpc3QpewogIHJldHVybiBbLi4ubGlzdF0uc29ydCgoYSxiKSA9PiAoYS5uYW1lfHwnJykubG9jYWxlQ29tcGFyZShiLm5hbWV8fCcnLCAnZXMnLCB7c2Vuc2l0aXZpdHk6J2Jhc2UnLCBudW1lcmljOnRydWV9KSk7Cn0KLy8gMTgvMDkvMjAyNjogbWluaWF0dXJhIGxpZ2VyYSAoV2ViUCB+NDgwcHgsIH4zMCBLQiwgZW4gc3RvcmFnZSB0aHVtYnMvKSBwYXJhIGN1YWRyw61jdWxhcywgbGlzdGFzIHkKLy8gcGlja2Vycy4gTGEgZm90byBncmFuZGUgKGltYWdlX3VybCkgc2Ugc2lndWUgdXNhbmRvIGVuIGxhIHZpc3RhIGFtcGxpYWRhIHkgZW4gZWwgbW9kbyAiR3JhbmRlIi4KLy8gRXRpcXVldGEgIlJFRiDigJQgTm9tYnJlIiBkZSB1biBhcnTDrWN1bG8sIHBhcmEgZWwgcmVnaXN0cm8gZGUgYWN0aXZpZGFkLgpmdW5jdGlvbiBpbGxMYWJlbChpZCl7CiAgY29uc3QgaSA9ICh0eXBlb2YgYWRtaW5JbGx1c3RyYXRpb25zTGlzdCE9PSd1bmRlZmluZWQnICYmIGFkbWluSWxsdXN0cmF0aW9uc0xpc3QgfHwgW10pLmZpbmQoeD0+eC5pZD09PWlkKSB8fCBpbGx1c3RyYXRpb25zLmZpbmQoeD0+eC5pZD09PWlkKTsKICByZXR1cm4gaSA\/IGAke2kucmVmfSDigJQgJHtpLm5hbWV9YCA6ICd1biBhcnTDrWN1bG8nOwp9Ci8vIDE5LzA5LzIwMjY6IG1lZGlkYXMgZGUgY2FkYSBmb3JtYXRvLCBwYXJhIGxhcyB0aWVuZGFzIHF1ZSBubyBsYXMgdGllbmVuIGVuIGxhIGNhYmV6YS4KY29uc3QgRk9STUFUX1NJWkVTID0geyBBMzonMjksNyDDlyA0MiBjbScsIEE0OicyMSDDlyAyOSw3IGNtJywgQTU6JzE0LDggw5cgMjEgY20nLCAnMTR4NDInOicxNCDDlyA0MiBjbScgfTsKZnVuY3Rpb24gZm9ybWF0U2l6ZUxhYmVsKGYpeyByZXR1cm4gRk9STUFUX1NJWkVTW2ZdIHx8ICcnOyB9CmZ1bmN0aW9uIHRodW1iU3JjKGkpeyByZXR1cm4gKGkgJiYgKGkudGh1bWJfdXJsIHx8IGkuaW1hZ2VfdXJsKSkgfHwgJyc7IH0KLy8gRXNjYXBhIHRleHRvIGxpYnJlIChsbyBlc2NyaWJlbiBsYXMgdGllbmRhcykgYW50ZXMgZGUgbWV0ZXJsbyBlbiB1biB2YWx1ZT0iIiBvIGVuIEhUTUwuCmZ1bmN0aW9uIGVzY2FwZUF0dHIodil7CiAgcmV0dXJuIFN0cmluZyh2ID8\/ICcnKS5yZXBsYWNlKC8mL2csJyZhbXA7JykucmVwbGFjZSgvIi9nLCcmcXVvdDsnKS5yZXBsYWNlKC88L2csJyZsdDsnKS5yZXBsYWNlKC8+L2csJyZndDsnKTsKfQovLyAxOC8wOS8yMDI2OiBob3JhcmlvIGRlIHJlY2VwY2nDs24gcXVlIGVsaWdlIGNhZGEgdGllbmRhIGVuICJNaXMgZGF0b3MiIChjaGFubmVscy5kZWxpdmVyeV9ob3VycykuCmNvbnN0IERFTElWRVJZX0hPVVJTID0geyBtYW5hbmE6ICdNYcOxYW5hICg54oCTMTQgaCknLCB0YXJkZTogJ1RhcmRlICgxNuKAkzIwIGgpJywgY3VhbHF1aWVyYTogJ0N1YWxxdWllciBob3JhJyB9OwpmdW5jdGlvbiBkZWxpdmVyeUhvdXJzTGFiZWwoayl7IHJldHVybiBERUxJVkVSWV9IT1VSU1trXSB8fCAnJzsgfQovLyAxOC8wOS8yMDI2OiBldGlxdWV0YSAiTmV3Ii4gQWRtaW4gbGEgbWFyY2EgKGlsbHVzdHJhdGlvbnMubmV3X3NpbmNlID0gZmVjaGEpIHkgY2FkdWNhIHNvbGEgYSBsb3MKLy8gMyBtZXNlcyDigJQgbm8gaGFjZSBmYWx0YSBuaW5nw7puIHByb2Nlc28gcXVlIGxhIHF1aXRlLCBzZSBjYWxjdWxhIGFxdcOtIGFsIHBpbnRhci4KY29uc3QgTkVXX0RVUkFUSU9OX01TID0gMTAwMCo2MCo2MCoyNCo5MTsKZnVuY3Rpb24gaXNOZXdJdGVtKGkpewogIHJldHVybiAhIShpICYmIGkubmV3X3NpbmNlICYmIChEYXRlLm5vdygpIC0gbmV3IERhdGUoaS5uZXdfc2luY2UpLmdldFRpbWUoKSkgPCBORVdfRFVSQVRJT05fTVMpOwp9Ci8vIDE4LzA5LzIwMjY6IG1pbmlhdHVyYSBkZSBsYSBmb3RvIHJldXRpbGl6YWJsZSBwYXJhIGxhcyBmaWxhcyBkZSBBZG1pbiDigJQgUmHDumwgZGV0ZWN0w7MgcXVlIGFsCi8vIHB1bHNhciAiRWRpdGFyIiBlbiBMw6FtaW5hcy9MaWJyZXRhcy9FeHRyYXMgbGEgZm90byBkZXNhcGFyZWPDrWEsIHBvcnF1ZSBlbCBmb3JtdWxhcmlvIGRlIGVkaWNpw7NuCi8vIHN1c3RpdHXDrWEgdG9kYSBsYSBmaWxhLiBTZSB1c2EgZXN0ZSBtaXNtbyBibG9xdWUgdGFudG8gZW4gbW9kbyBub3JtYWwgY29tbyBlbiBtb2RvIGVkaWNpw7NuIHBhcmEKLy8gcXVlIGxhIGZvdG8gKHkgZWwgYm90w7NuIGRlIHN1YmlyKSBzZSB2ZWFuIHNpZW1wcmUuCmZ1bmN0aW9uIGFkbWluVGh1bWJIdG1sKGkpewogIHJldHVybiBpLmltYWdlX3VybAogICAgPyBgPGltYCtgZyBzcmM9IiR7dGh1bWJTcmMoaSl9IiBhbHQ9IiR7KGkubmFtZXx8aS5yZWZ8fCcnKS5yZXBsYWNlKC8iL2csJyZxdW90OycpfSIgbG9hZGluZz0ibGF6eSIgc3R5bGU9IndpZHRoOjEwOHB4O2hlaWdodDoxNDRweDtvYmplY3QtZml0OmNvbnRhaW47YmFja2dyb3VuZDp2YXIoLS1jcmVtYS0yKTtib3JkZXItcmFkaXVzOjRweDtkaXNwbGF5OmJsb2NrOyI+YAogICAgOiBgPGRpdiBzdHlsZT0id2lkdGg6MTA4cHg7aGVpZ2h0OjE0NHB4O2JhY2tncm91bmQ6dmFyKC0tY3JlbWEtMik7Ym9yZGVyLXJhZGl1czo0cHg7Ij48L2Rpdj5gOwp9CmZ1bmN0aW9uIGFkbWluVGh1bWJVcGxvYWRIdG1sKGkpewogIHJldHVybiBgPGRpdj48aW5wdXQgdHlwZT0iZmlsZSIgYWNjZXB0PSJpbWFnZS8qIiBzdHlsZT0iZGlzcGxheTpub25lOyIgaWQ9ImZpbGUtJHtpLmlkfSIgb25jaGFuZ2U9InVwbG9hZEltYWdlKCcke2kuaWR9JywnJHtpLnJlZn0nLHRoaXMuZmlsZXNbMF0pIj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBzZWNvbmRhcnkgc21hbGwiIG9uY2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlLSR7aS5pZH0nKS5jbGljaygpIj5TdWJpciBmb3RvPC9idXR0b24+PC9kaXY+YDsKfQovLyAxOC8wOS8yMDI2OiBtZW5zYWplIGxlZ2libGUgY3VhbmRvIHNlIHJlcGl0ZSB1bmEgcmVmZXJlbmNpYSAocmVmKSDigJQgYW50ZXMgc2UgdmXDrWEgZWwgZXJyb3IKLy8gY3J1ZG8gZGUgUG9zdGdyZXMgKCJkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50Li4uIiksIHF1ZSBmdW5jaW9uYSBwZXJvCi8vIGFzdXN0YSB5IG5vIGRpY2UgcXXDqSBoYWNlciAocHVudG8gMiBkZSBsYSBhdWRpdG9yw61hIFVYL1VJIGRlbCAwOC8wOSwgcGVuZGllbnRlIGhhc3RhIGFob3JhKS4KZnVuY3Rpb24gZnJpZW5kbHlEYkVycm9yKGVycm9yKXsKICBpZihlcnJvciAmJiAoZXJyb3IuY29kZT09PScyMzUwNScgfHwgL2R1cGxpY2F0ZSBrZXkgdmFsdWUvaS50ZXN0KGVycm9yLm1lc3NhZ2V8fCcnKSkpewogICAgcmV0dXJuICdZYSBleGlzdGUgdW4gcHJvZHVjdG8gY29uIGVzYSByZWZlcmVuY2lhIOKAlCB1c2Egb3RyYS4nOwogIH0KICByZXR1cm4gZXJyb3I\/Lm1lc3NhZ2UgfHwgJ0Vycm9yIGRlc2Nvbm9jaWRvLic7Cn0KbGV0IGlsbHVzdHJhdGlvbnMgPSBbXTsKbGV0IGNoYW5uZWxzID0gW107CmxldCBsb2NrZWRDaGFubmVsID0gbnVsbDsKbGV0IGxvY2tlZENoYW5uZWxQYXNzd29yZCA9IG51bGw7CmxldCBpc1Jlc3RyaWN0ZWRBZG1pbiA9IGZhbHNlOwovLyBDdWVudGEgIkRlbW8iICh1c3VhcmlvL2NsYXZlIHF1ZSBzZSBsZSBlbnNlw7FhIGEgdGllbmRhcyBmdXR1cmFzLCBwYXJhIHF1ZSB2ZWFuIGPDs21vIGVzIGxhIHdlYgovLyBzaW4gcG9kZXIgaGFjZXIgbmFkYSByZWFsKTogZXMgdW5hIHRpZW5kYSBub3JtYWwgbWFyY2FkYSBpc19kZW1vPXRydWUgZW4gbGEgYmFzZSBkZSBkYXRvcywgYXPDrQovLyBxdWUgbGxlZ2EgaWd1YWwgcXVlIGN1YWxxdWllciB0aWVuZGEgY29uIGFjY2VzbyBwcm9waW8gKGxvY2tlZENoYW5uZWwpLiBFc3RhIGZ1bmNpw7NuIGVzIGxhCi8vIMO6bmljYSBmdWVudGUgZGUgdmVyZGFkIGRlICLCv2VzdGFtb3MgZW4gbW9kbyBkZW1vPyIg4oCUIHNlIHVzYSBlbiB0b2RvcyBsb3Mgc2l0aW9zIGRvbmRlIGhheSBxdWUKLy8gZXNjb25kZXIgbyBibG9xdWVhciBhY2Npb25lcyBxdWUgZXNjcmliaXLDrWFuIGRhdG9zIGRlIHZlcmRhZCAocGVkaXIsIHJlcG9ydGFyIHZlbnRhLCBzdG9jayBhCi8vIG1hbm8sIGZhY3R1cmFjacOzbi4uLikuCmZ1bmN0aW9uIGlzRGVtb01vZGUoKXsgcmV0dXJuICEhKGxvY2tlZENoYW5uZWwgJiYgbG9ja2VkQ2hhbm5lbC5pc19kZW1vKTsgfQovLyAyNi8wOS8yMDI2OiDCq3JlY2liaWRvwrsgPSBBbmRyZWEgbG8gaGEgcmVjaWJpZG8geSBsbyBwcmVwYXJhIChSYcO6bCkuIFBlbmRpZW50ZSB5IHJlY2liaWRvIHNvbiBsb3MKLy8gcGVkaWRvcyBhYmllcnRvcyAoc2FsZW4gZW4gUHJlcGFyYWNpw7NuKTsgZW52aWFkbyB5IGNhbmNlbGFkbyB2YW4gYWwgaGlzdG9yaWFsLgpjb25zdCBPUkRFUl9TVEFUVVNFUyA9IFsncGVuZGllbnRlJywncmVjaWJpZG8nLCdlbnZpYWRvJywnY2FuY2VsYWRvJ107CmNvbnN0IE9QRU5fU1RBVFVTRVMgPSBbJ3BlbmRpZW50ZScsJ3JlY2liaWRvJ107CmxldCBjYXRhbG9nU2l6ZSA9ICdzbWFsbCc7CmxldCBjYXRhbG9nUHJvZHVjdFR5cGUgPSAnbGFtaW5hJzsKbGV0IGFkbWluSWxsdXN0cmF0aW9uc0xpc3QgPSBbXTsKbGV0IGFkbWluTGFtaW5hc0xpc3QgPSBbXTsKbGV0IGFkbWluTGlicmV0YXNMaXN0ID0gW107CmxldCBvcmRlckNhcnQgPSBbXTsKbGV0IGFkbWluT3JkZXJzTGlzdCA9IFtdOwpsZXQgaGlzdG9yaWFsT3JkZXJzTGlzdCA9IFtdOwpsZXQgYWRtaW5DaGFubmVsc0xpc3QgPSBbXTsKbGV0IGFsbFNhbGVzQ2FjaGUgPSBbXTsKbGV0IGFsbFNoaXBwZWRPcmRlcnNDYWNoZSA9IFtdOwpsZXQgYWxsQWRqdXN0bWVudHNDYWNoZSA9IFtdOyAvLyAic3RvY2sgeWEgZW50cmVnYWRvIiBtZXRpZG8gYSBtYW5vLCBzaW4gcGFzYXIgcG9yIHBlZGlkb3MKLy8gUXXDqSB0YXJqZXRhcyBkZSB0aWVuZGEgKEFkbWluIOKGkiBUaWVuZGFzKSBlc3TDoW4gYWJpZXJ0YXMgYWhvcmEgbWlzbW8g4oCUIHNlIHJlY3VlcmRhIGVudHJlCi8vIHJlY2FyZ2FzIGRlIHJlbmRlckFkbWluQ2hhbm5lbHMoKSBwYXJhIHF1ZSBhw7FhZGlyIHN0b2NrIGEgbWFubyAocXVlIHJlY2FyZ2EgbG9zIGRhdG9zKSBubwovLyBjaWVycmUgbGEgdGllbmRhIHF1ZSB0ZW7DrWFzIGFiaWVydGE7IGFzw60gc2UgcHVlZGVuIG1ldGVyIHZhcmlhcyBsw61uZWFzIHNlZ3VpZGFzIHNpbiByZWFicmlyLgpsZXQgZXhwYW5kZWRDaGFubmVsSWRzID0gbmV3IFNldCgpOwovLyBUaXBvIHNlbGVjY2lvbmFkbyBhaG9yYSBtaXNtbyBlbiAiQcOxYWRpciBzdG9jayBhIG1hbm8iIGRlIGNhZGEgdGllbmRhIChjaGFubmVsSWQgLT4gJ2xhbWluYScKLy8gfCAnbGlicmV0YScgfCAncGVnYXRpbmEnIHwgJ3Byb2R1Y3RvNCcpLiBQb3IgZGVmZWN0byAnbGFtaW5hJy4gQW50ZXMgZXN0ZSBkZXNwbGVnYWJsZSBtZXpjbGFiYQovLyBUT0RPUyBsb3MgcHJvZHVjdG9zIGRlIFRPRE9TIGxvcyB0aXBvcyBzaW4gZmlsdHJhciBuaSBvcmRlbmFyIHBvciB0aXBvIOKAlCBjb21vIHNlIGNhcmdhbgovLyBvcmRlbmFkb3MgcG9yIHJlZmVyZW5jaWEsIHVuIHRpcG8gY29uIHByZWZpam8gYWxmYWLDqXRpY2FtZW50ZSBhbnRlcmlvciBhICJJTCIgKHAuZWouICJFSiIgZGUKLy8gRWplbXBsbykgcG9kw61hIHNhbGlyIGVsIHByaW1lcm8gZGUgbGEgbGlzdGEgYXVucXVlIGVzZSB0aXBvIG5pIHNpcXVpZXJhIGVzdHV2aWVzZSBhY3RpdmFkbwovLyBwYXJhIGxhcyB0aWVuZGFzLiBBaG9yYSBoYXkgcGVzdGHDsWFzIGV4cGzDrWNpdGFzLCBpZ3VhbCBxdWUgZW4gZWwgcmVzdG8gZGUgbGEgYXBwLCB5IHNvbG8gc2UKLy8gb2ZyZWNlbiBsb3MgdGlwb3MgcXVlIGVzdMOhbiBhY3RpdmFkb3MgZW4gQWRtaW4g4oaSIENhdMOhbG9nbyDihpIgVmlzaWJpbGlkYWQgKG3DoXMgTMOhbWluYS9MaWJyZXRhLAovLyBxdWUgbm8gdGllbmVuIGludGVycnVwdG9yIHBvcnF1ZSBzaWVtcHJlIGVzdMOhbiBhY3Rpdm9zKS4KbGV0IGFkbWluU3RvY2tBZGp1c3RUeXBlID0ge307Ci8vIFRpcG9zIGRlIHByb2R1Y3RvICJleHRyYSIgYWRlbcOhcyBkZSBsw6FtaW5hL2xpYnJldGE6IG1pc21vIGNvbXBvcnRhbWllbnRvIHF1ZSBsaWJyZXRhcwovLyAoc3RvY2sgcHJvcGlvIGVuIHVuaWRhZGVzLCBzaW4gZm9ybWF0b3MpLCBwZXJvIGVuIHN1IHByb3BpYSBzZWNjacOzbi9wZXN0YcOxYS4gQcOxYWRpciB1bm8KLy8gbnVldm8gZW4gZWwgZnV0dXJvIGVzIHNvbG8gYcOxYWRpciB1bmEgZW50cmFkYSBhcXXDrSAobcOhcyBzdSBmaWxhIGRlIHZpc2liaWxpZGFkIHNpIGFwbGljYSkuCmNvbnN0IEVYVFJBX1NUT0NLX1RZUEVTID0gWwogIHtrZXk6J3BlZ2F0aW5hJywgbGFiZWw6J1BlZ2F0aW5hcycsIHNpbmd1bGFyOidwZWdhdGluYScsIHJlZlByZWZpeDonUEcnLCBzZXR0aW5nS2V5OidzaG93X3R5cGVfcGVnYXRpbmEnfSwKICAvLyBgb2N1bHRvYDogbm8gc2FsZSBlbiBsYXMgcGFudGFsbGFzIGRlIEFkbWluIChDYXTDoWxvZ28sIFN0b2NrLCBQZWRpZG9zLCBWZW50YXMpLiDCq0VqZW1wbG\/CuyBubyBzZSB1c2EKICAvLyAoNSBwcm9kdWN0b3MgZGUgcHJ1ZWJhIEVKLSwgbnVuY2EgcGVkaWRvcywgaW52aXNpYmxlIHBhcmEgbGFzIHRpZW5kYXMpIHkgc29sbyBtZXTDrWEgcnVpZG8KICAvLyAoUmHDumwsIDI3LzA5LzIwMjYpLiBTdXMgZGF0b3Mgc2lndWVuIGFow606IHBhcmEgdm9sdmVyIGEgdmVybG8gYmFzdGEgY29uIHF1aXRhciBgb2N1bHRvYC4KICB7a2V5Oidwcm9kdWN0bzQnLCBsYWJlbDonRWplbXBsbycsIHNpbmd1bGFyOidlamVtcGxvJywgcmVmUHJlZml4OidFSicsIHNldHRpbmdLZXk6J3Nob3dfdHlwZV9wcm9kdWN0bzQnLCBvY3VsdG86dHJ1ZX0sCl07CmZ1bmN0aW9uIGV4dHJhVHlwZXNTaG93bigpeyByZXR1cm4gRVhUUkFfU1RPQ0tfVFlQRVMuZmlsdGVyKHQ9PiF0Lm9jdWx0byk7IH0KbGV0IGFkbWluRXh0cmFMaXN0cyA9IHt9OyAvLyB7IHBlZ2F0aW5hOiBbLi4uXSwgcHJvZHVjdG80OiBbLi4uXSB9CmxldCBleHRyYVN0b2NrQ2FjaGUgPSB7fTsgLy8gY2FjaGUgcGFyYSBmaWx0cmFyIGVuIGxhIHRhYmxhIGRlIFN0b2NrLCBwb3IgdGlwbwpsZXQgc2l0ZVNldHRpbmdzQ2FjaGUgPSB7fTsgLy8ga2V5IC0+IHZhbHVlLCBjYXJnYWRvIGRlIHNpdGVfc2V0dGluZ3MKbGV0IGV4aXN0aW5nU2FsZXNGb3JNb250aCA9IFtdOwoKLy8gLS0tLS0tLS0tLSBHQVRFIC0tLS0tLS0tLS0KLy8gc2Vzc2lvblN0b3JhZ2UgcHVlZGUgZXN0YXIgYmxvcXVlYWRvIHBvciBlbCBuYXZlZ2Fkb3IgY3VhbmRvIGxhIGFwcCBzZSBjYXJnYSBkZW50cm8gZGUgdW4KLy8gPGlmcmFtZT4gZW4gb3RybyBkb21pbmlvIChwYXNhIGVuIFNhZmFyaSBjb24gIlByZXZlbnQgY3Jvc3Mtc2l0ZSB0cmFja2luZyIgeSBlbiBhbGd1bm9zIG1vZG9zCi8vIGRlIHByaXZhY2lkYWQgZGUgQ2hyb21lKSDigJQgdW4gYWNjZXNvIHNpbiBwcm90ZWNjacOzbiBsYW56YSB1bmEgZXhjZXBjacOzbiBxdWUgcHVlZGUgcm9tcGVyIGVuCi8vIHNpbGVuY2lvIHRvZGEgbGEgY2FyZ2EgZGUgbGEgcMOhZ2luYSAoaW5jbHVpZG8gZWwgcHJvcGlvIGxvZ2luKS4gRXN0YXMgZW52b2x0dXJhcyBoYWNlbiBxdWUsCi8vIHNpIGVsIG5hdmVnYWRvciBsbyBibG9xdWVhLCBsYSBhcHAgc2lnYSBmdW5jaW9uYW5kbyAoc2ltcGxlbWVudGUgbm8gcmVjdWVyZGEgbGEgc2VzacOzbiBlbnRyZQovLyByZWNhcmdhcykgZW4gdmV6IGRlIHF1ZWRhcnNlICJzaW4gaGFjZXIgbmFkYSIuCmZ1bmN0aW9uIHNhZmVTZXNzaW9uR2V0KGtleSl7IHRyeXsgcmV0dXJuIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oa2V5KTsgfWNhdGNoKGUpeyByZXR1cm4gbnVsbDsgfSB9CmZ1bmN0aW9uIHNhZmVTZXNzaW9uU2V0KGtleSwgdmFsKXsgdHJ5eyBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsKTsgfWNhdGNoKGUpe30gfQpmdW5jdGlvbiBzYWZlU2Vzc2lvblJlbW92ZShrZXkpeyB0cnl7IHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTsgfWNhdGNoKGUpe30gfQovLyAwNi8xMC8yMDI2IChyZXBhc28gZGVsIDI5LzA5LCDCq2Vycm9yZXMgZGUgcmVkwrspOiB1biBjb3J0ZSBkZSBjb25leGnDs24gc2Fsw61hIGNvbW8gwqtjb250cmFzZcOxYSBpbmNvcnJlY3RhwrsgbyDCq3RvZGF2w61hIG5vIGhhcwovLyBoZWNobyBuaW5nw7puIHBlZGlkb8K7LiBlc0Vycm9yRGVSZWQoKSBkaXN0aW5ndWUgZWwgY29ydGUgeSBzZSBhdmlzYSBkZSBlc28uCmZ1bmN0aW9uIGVzRXJyb3JEZVJlZChlcnJvcil7CiAgaWYodHlwZW9mIG5hdmlnYXRvciE9PSd1bmRlZmluZWQnICYmIG5hdmlnYXRvci5vbkxpbmUgPT09IGZhbHNlKSByZXR1cm4gdHJ1ZTsKICByZXR1cm4gISFlcnJvciAmJiAvZmFpbGVkIHRvIGZldGNofG5ldHdvcmtlcnJvcnxsb2FkIGZhaWxlZHxuZXR3b3JrIHJlcXVlc3QgZmFpbGVkfGZldGNoIGZhaWxlZHx0aW1lb3V0L2kudGVzdChTdHJpbmcoZXJyb3IubWVzc2FnZXx8ZXJyb3IpKTsKfQpjb25zdCBNU0dfU0lOX0NPTkVYSU9OID0gJ05vIHNlIHB1ZG8gY29uZWN0YXIuIFJldmlzYSB0dSBjb25leGnDs24gYSBpbnRlcm5ldCBlIGludMOpbnRhbG8gb3RyYSB2ZXouJzsKYXN5bmMgZnVuY3Rpb24gdHJ5R2F0ZSgpewogIGNvbnN0IHVzZXJSYXcgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dhdGUtdXNlcicpLnZhbHVlIHx8ICcnKS50cmltKCk7CiAgY29uc3QgdmFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dhdGUtcGFzcycpLnZhbHVlOwogIGNvbnN0IG1zZ0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dhdGUtbXNnJyk7CiAgbXNnRWwudGV4dENvbnRlbnQgPSAnJzsKCiAgLy8gMSkgwr9FcyB1biBsb2dpbiByZWFsIGRlIGFkbWluaXN0cmFkb3IgKGVsIG1pc21vIGVtYWlsK2NvbnRyYXNlw7FhIGRlIHNpZW1wcmUpPyBTaSBlcyBjb3JyZWN0bywKICAvLyBlbnRyYSB5YSBjb24gdG9kbyBkZXNibG9xdWVhZG8g4oCUIHlhIG5vIGhhY2UgZmFsdGEgbGEgc2VndW5kYSBwYW50YWxsYSBkZSBkZW50cm8gZGUgIkFkbWluIi4KICBpZih1c2VyUmF3LmluY2x1ZGVzKCdAJykpewogICAgY29uc3Qge2Vycm9yOiBhdXRoRXJyb3J9ID0gYXdhaXQgc2IuYXV0aC5zaWduSW5XaXRoUGFzc3dvcmQoe2VtYWlsOiB1c2VyUmF3LnRvTG93ZXJDYXNlKCksIHBhc3N3b3JkOiB2YWx9KTsKICAgIGlmKCFhdXRoRXJyb3IpewogICAgICBjb25zdCB7ZGF0YTogZnVsbExpc3R9ID0gYXdhaXQgc2IuZnJvbSgnY2hhbm5lbHMnKS5zZWxlY3QoJyonKS5vcmRlcignbmFtZScpOwogICAgICBsb2NrZWRDaGFubmVsID0gbnVsbDsKICAgICAgY2hhbm5lbHMgPSBmdWxsTGlzdCB8fCBbXTsKICAgICAgc2FmZVNlc3Npb25TZXQoJ2lzdHJpY2VfZ2F0ZScsICcxJyk7CiAgICAgIHNhZmVTZXNzaW9uU2V0KCdpc3RyaWNlX2NoYW5uZWxzJywgSlNPTi5zdHJpbmdpZnkoY2hhbm5lbHMpKTsKICAgICAgc2FmZVNlc3Npb25SZW1vdmUoJ2lzdHJpY2VfbG9ja2VkX2NoYW5uZWwnKTsKICAgICAgc2FmZVNlc3Npb25SZW1vdmUoJ2lzdHJpY2VfbG9ja2VkX3Bhc3N3b3JkJyk7CiAgICAgIGxvZ0FjY2VzcyhBRE1JTl9ESVNQTEFZX05BTUVTW3VzZXJSYXcudG9Mb3dlckNhc2UoKV0gfHwgdXNlclJhdywgJ2FkbWluJyk7CiAgICAgIGVudGVyQXBwKCk7CiAgICAgIHJldHVybjsKICAgIH0KICB9CgogIC8vIDIpIFNpIG5vLCDCv2VzIHVuYSB0aWVuZGEgY29uIHN1IHByb3BpbyBub21icmUgeSBjb250cmFzZcOxYT8KICAvLyAxOC8wOS8yMDI2OiBzdG9yZV9sb2dpbiBjb21wcnVlYmEgTk9NQlJFICsgQ09OVFJBU0XDkUEgZW4gZWwgc2Vydmlkb3IgKGFudGVzIHNlIGJ1c2NhYmEgc29sbwogIC8vIHBvciBjb250cmFzZcOxYSB5IGVsIG5vbWJyZSBzZSBjb21wYXJhYmEgYXF1w60sIGVuIGVsIG5hdmVnYWRvcikuCiAgY29uc3Qge2RhdGE6IHN0b3JlTWF0Y2gsIGVycm9yOiBsb2dpbkVycm9yfSA9IGF3YWl0IHNiLnJwYygnc3RvcmVfbG9naW4nLCB7aW5wdXRfbmFtZTogdXNlclJhdywgaW5wdXRfcGFzc3dvcmQ6IHZhbH0pOwogIGlmKHN0b3JlTWF0Y2ggJiYgc3RvcmVNYXRjaC5sZW5ndGgpewogICAgbG9ja2VkQ2hhbm5lbCA9IHN0b3JlTWF0Y2hbMF07CiAgICBjaGFubmVscyA9IFtsb2NrZWRDaGFubmVsXTsKICAgIGxvY2tlZENoYW5uZWxQYXNzd29yZCA9IHZhbDsKICAgIHNhZmVTZXNzaW9uU2V0KCdpc3RyaWNlX2dhdGUnLCAnMScpOwogICAgc2FmZVNlc3Npb25TZXQoJ2lzdHJpY2VfbG9ja2VkX2NoYW5uZWwnLCBKU09OLnN0cmluZ2lmeShsb2NrZWRDaGFubmVsKSk7CiAgICBzYWZlU2Vzc2lvblNldCgnaXN0cmljZV9sb2NrZWRfcGFzc3dvcmQnLCB2YWwpOwogICAgc2FmZVNlc3Npb25SZW1vdmUoJ2lzdHJpY2VfY2hhbm5lbHMnKTsKICAgIGxvZ0FjY2Vzcyhsb2NrZWRDaGFubmVsLm5hbWUsICd0aWVuZGEnKTsKICAgIC8vIElkaW9tYSBkZSBsYSB0aWVuZGE6IHNpIHlhIHRpZW5lIHVubyBndWFyZGFkbyBzZSBhcGxpY2E7IHNpIG5vLCBzZSBsZSBndWFyZGEgZWwgcXVlIGVzdMOhIHVzYW5kby4KICAgIGlmKGxvY2tlZENoYW5uZWwubGFuZ3VhZ2UgJiYgbG9ja2VkQ2hhbm5lbC5sYW5ndWFnZSAhPT0gTEFORykgc2V0TGFuZyhsb2NrZWRDaGFubmVsLmxhbmd1YWdlKTsKICAgIGVsc2UgaWYoIWxvY2tlZENoYW5uZWwubGFuZ3VhZ2UgJiYgIWxvY2tlZENoYW5uZWwuaXNfZGVtbykgc2V0TGFuZyhMQU5HLCB7c2F2ZTp0cnVlfSk7CiAgICBlbnRlckFwcCgpOwogICAgcmV0dXJuOwogIH0KCiAgaWYobG9naW5FcnJvciAmJiBlc0Vycm9yRGVSZWQobG9naW5FcnJvcikpeyBtc2dFbC50ZXh0Q29udGVudCA9IHQoTVNHX1NJTl9DT05FWElPTik7IHJldHVybjsgfQogIC8vIEJsb3F1ZW8gdHJhcyBtdWNob3MgaW50ZW50b3MgZmFsbGlkb3M6IGVsIHNlcnZpZG9yIGxvIGV4cGxpY2EgZW4gc3UgbWVuc2FqZQogIGlmKGxvZ2luRXJyb3IgJiYgL2ludGVudG98YmxvcXVlL2kudGVzdChsb2dpbkVycm9yLm1lc3NhZ2V8fCcnKSl7IG1zZ0VsLnRleHRDb250ZW50ID0gbG9naW5FcnJvci5tZXNzYWdlOyByZXR1cm47IH0KICBtc2dFbC50ZXh0Q29udGVudCA9ICdVc3VhcmlvIG8gY29udHJhc2XDsWEgaW5jb3JyZWN0b3MnOwp9Ci8vIFJlZ2lzdHJvIGRlIGFjdGl2aWRhZDogdW5hIGzDrW5lYSBwb3IgbG9naW4gcmVhbCAobm8gc2UgcmVwaXRlIGFsIHJlY2FyZ2FyIGxhIHDDoWdpbmEgY29uIGxhCi8vIHNlc2nDs24geWEgZ3VhcmRhZGEsIHNvbG8gY3VhbmRvIGFsZ3VpZW4gbWV0ZSB1c3VhcmlvL2NvbnRyYXNlw7FhIGRlIHZlcmRhZCkgeSB1bmEgbMOtbmVhIHBvcgovLyBjYWRhIGFjY2nDs24gcmVsZXZhbnRlIChwZWRpZG8sIHZlbnRhIHJlcG9ydGFkYSwgY2FtYmlvIGRlIHN0b2Nr4oCmKSwgdGFudG8gc2kgbGEgaGFjZSB1bmEgdGllbmRhCi8vIGNvbW8gc2kgbGEgaGFjZXMgdMO6IGRlc2RlIEFkbWluLiBOdW5jYSBibG9xdWVhIGxhIGFjY2nDs24gc2kgZmFsbGEgYWwgZ3VhcmRhciDigJQgZXMgc29sbyB1bgovLyByZWdpc3RybyBpbmZvcm1hdGl2byBwYXJhIHRpLgpmdW5jdGlvbiBsb2dBY2Nlc3Mod2hvLCByb2xlKXsKICBzYi5mcm9tKCdsb2dpbl9sb2cnKS5pbnNlcnQoe3dobywgcm9sZX0pLnRoZW4oKCk9Pnt9KTsKICBsb2dBY3Rpdml0eSgnbG9naW4nLCByb2xlPT09J2FkbWluJyA\/ICdFbnRyw7MgZW4gZWwgcGFuZWwgZGUgYWRtaW5pc3RyYWNpw7NuJyA6ICdFbnRyw7MgZW4gc3UgY3VlbnRhIGRlIHRpZW5kYScsIHdobywgcm9sZSk7Cn0KLy8gYWN0aW9uVHlwZTogJ2xvZ2luJyB8ICdwZWRpZG8nIHwgJ3ZlbnRhJyB8ICdzdG9jaycuIFNpIG5vIHNlIHBhc2EgcXVpw6luL3F1w6kgcm9sLCBzZSBkZWR1Y2Ugc29sbwovLyAodGllbmRhIGNvbiBzZXNpw7NuIGJsb3F1ZWFkYSA9IGVzYSB0aWVuZGE7IHNpIG5vLCBlbCBub21icmUgcXVlIHlhIGVzdMOhIHB1ZXN0byBlbiBsYSBjYWJlY2VyYSkuCmZ1bmN0aW9uIGxvZ0FjdGl2aXR5KGFjdGlvblR5cGUsIHN1bW1hcnksIHdob092ZXJyaWRlLCByb2xlT3ZlcnJpZGUpewogIGNvbnN0IGFjdG9yID0gd2hvT3ZlcnJpZGUgfHwgKGxvY2tlZENoYW5uZWwgPyBsb2NrZWRDaGFubmVsLm5hbWUgOiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlYWRlci11c2VyLW5hbWUnKT8udGV4dENvbnRlbnQgfHwgJ0FkbWluJykpOwogIGNvbnN0IHJvbGUgPSByb2xlT3ZlcnJpZGUgfHwgKGxvY2tlZENoYW5uZWwgPyAndGllbmRhJyA6ICdhZG1pbicpOwogIHNiLmZyb20oJ2FjdGl2aXR5X2xvZycpLmluc2VydCh7YWN0b3IsIHJvbGUsIGFjdGlvbl90eXBlOiBhY3Rpb25UeXBlLCBzdW1tYXJ5fSkudGhlbigoKT0+e30pOwp9CmxldCBhY3Rpdml0eUxvZ0NhY2hlID0gW107Ci8vIENvbG9yZXMgZGUgY2FkYSB0aXBvIGRlIGFjdGl2aWRhZCAoYW50ZXMgZW1vamlzOyAwNS8xMDogZnVlcmEgZW1vamlzLCBsb3MgbWlzbW9zIGNvbG9yZXMgcXVlIGxhcyBwZXN0YcOxYXMgZGUgQWRtaW4pCmNvbnN0IEFDVElWSVRZX0lDT05TID0ge2xvZ2luOicjNWY2ZTg2JywgcGVkaWRvOicjZmZhODMyJywgdmVudGE6JyNlZDk2OTgnLCBzdG9jazonIzJkMzA0MycsIGNhdGFsb2dvOicjYjUzZTMwJywgZGF0b3M6JyNkMjZmNGInfTsKYXN5bmMgZnVuY3Rpb24gbG9hZEFjdGl2aXR5TG9nKCl7CiAgY29uc3QgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdGl2aXR5LWxvZy1saXN0Jyk7CiAgaWYoYm94KSBib3guaW5uZXJIVE1MID0gJzxwIHN0eWxlPSJjb2xvcjp2YXIoLS1zdWF2ZSk7Ij5DYXJnYW5kb+KApjwvcD4nOwogIC8vIDE4LzA5LzIwMjY6IGZpbHRybyBkZSBmZWNoYXMgZW4gZWwgc2Vydmlkb3IgKHBvciBkZWZlY3RvLCBsbyDDumx0aW1vOiAxMDAwIGzDrW5lYXMpOyBlbCByZXN0byBkZQogIC8vIGZpbHRyb3MgKHRpcG8sIHF1acOpbiwgdGV4dG8pIHNlIGFwbGljYW4gYXF1w60gYWwgcGludGFyLgogIGxldCBxID0gc2IuZnJvbSgnYWN0aXZpdHlfbG9nJykuc2VsZWN0KCdhY3Rvcixyb2xlLGFjdGlvbl90eXBlLHN1bW1hcnksY3JlYXRlZF9hdCcpLm9yZGVyKCdjcmVhdGVkX2F0JywgeyBhc2NlbmRpbmc6ZmFsc2UgfSkubGltaXQoMTAwMCk7CiAgY29uc3QgZnJvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3Rsb2ctZnJvbScpPy52YWx1ZTsKICBjb25zdCB0byA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3Rsb2ctdG8nKT8udmFsdWU7CiAgaWYoZnJvbSkgcSA9IHEuZ3RlKCdjcmVhdGVkX2F0JywgbmV3IERhdGUoZnJvbSArICdUMDA6MDA6MDAnKS50b0lTT1N0cmluZygpKTsgLy8gbWVkaWFub2NoZSBkZSBFc3Bhw7FhLCBubyBsYSB1bml2ZXJzYWwKICBpZih0bykgcSA9IHEubHRlKCdjcmVhdGVkX2F0JywgbmV3IERhdGUodG8gKyAnVDIzOjU5OjU5Ljk5OScpLnRvSVNPU3RyaW5nKCkpOwogIGNvbnN0IHsgZGF0YSwgZXJyb3IgfSA9IGF3YWl0IHE7CiAgaWYoZXJyb3IpeyBpZihib3gpIGJveC5pbm5lckhUTUwgPSAnPHAgc3R5bGU9ImNvbG9yOnZhcigtLXN1YXZlKTsiPk5vIHNlIHB1ZG8gY2FyZ2FyIGVsIHJlZ2lzdHJvLjwvcD4nOyByZXR1cm47IH0KICBhY3Rpdml0eUxvZ0NhY2hlID0gZGF0YSB8fCBbXTsKICBjb25zdCBhY3RvclNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3Rsb2ctYWN0b3InKTsKICBpZihhY3RvclNlbCl7CiAgICBjb25zdCBjdXIgPSBhY3RvclNlbC52YWx1ZTsKICAgIGNvbnN0IGFjdG9ycyA9IFsuLi5uZXcgU2V0KGFjdGl2aXR5TG9nQ2FjaGUubWFwKHI9PnIuYWN0b3IpLmZpbHRlcihCb29sZWFuKSldLnNvcnQoKGEsYik9PmEubG9jYWxlQ29tcGFyZShiLCdlcycpKTsKICAgIGFjdG9yU2VsLmlubmVySFRNTCA9ICc8b3B0aW9uIHZhbHVlPSIiPlRvZG9zPC9vcHRpb24+JyArIGFjdG9ycy5tYXAoYT0+YDxvcHRpb24gdmFsdWU9IiR7ZXNjYXBlQXR0cihhKX0iPiR7ZXNjYXBlQXR0cihhKX08L29wdGlvbj5gKS5qb2luKCcnKTsKICAgIGlmKGFjdG9ycy5pbmNsdWRlcyhjdXIpKSBhY3RvclNlbC52YWx1ZSA9IGN1cjsKICB9CiAgcmVuZGVyQWN0aXZpdHlMb2coKTsKfQpmdW5jdGlvbiBmaWx0ZXJlZEFjdGl2aXR5TG9nKCl7CiAgY29uc3QgdHlwZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3Rsb2ctdHlwZScpPy52YWx1ZSA\/PyAnc2luLWFjY2Vzb3MnOwogIGNvbnN0IGFjdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdGxvZy1hY3RvcicpPy52YWx1ZSB8fCAnJzsKICBjb25zdCB0ZXh0ID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3Rsb2ctcScpPy52YWx1ZSB8fCAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCk7CiAgcmV0dXJuIGFjdGl2aXR5TG9nQ2FjaGUuZmlsdGVyKHI9PnsKICAgIGlmKHR5cGUgPT09ICdzaW4tYWNjZXNvcycgJiYgci5hY3Rpb25fdHlwZSA9PT0gJ2xvZ2luJykgcmV0dXJuIGZhbHNlOwogICAgaWYodHlwZSAmJiB0eXBlICE9PSAnc2luLWFjY2Vzb3MnICYmIHIuYWN0aW9uX3R5cGUgIT09IHR5cGUpIHJldHVybiBmYWxzZTsKICAgIGlmKGFjdG9yICYmIHIuYWN0b3IgIT09IGFjdG9yKSByZXR1cm4gZmFsc2U7CiAgICBpZih0ZXh0ICYmICEoKHIuc3VtbWFyeXx8JycpICsgJyAnICsgKHIuYWN0b3J8fCcnKSkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXh0KSkgcmV0dXJuIGZhbHNlOwogICAgcmV0dXJuIHRydWU7CiAgfSk7Cn0KZnVuY3Rpb24gYWN0aXZpdHlEYXlMYWJlbChkKXsKICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7IHRvZGF5LnNldEhvdXJzKDAsMCwwLDApOwogIGNvbnN0IGRheSA9IG5ldyBEYXRlKGQpOyBkYXkuc2V0SG91cnMoMCwwLDAsMCk7CiAgY29uc3QgZGlmZiA9IE1hdGgucm91bmQoKHRvZGF5IC0gZGF5KSAvIDg2NDAwMDAwKTsKICBpZihkaWZmID09PSAwKSByZXR1cm4gJ0hveSc7CiAgaWYoZGlmZiA9PT0gMSkgcmV0dXJuICdBeWVyJzsKICByZXR1cm4gZC50b0xvY2FsZURhdGVTdHJpbmcoYXBwTG9jYWxlKCksIHt3ZWVrZGF5Oidsb25nJywgZGF5OidudW1lcmljJywgbW9udGg6J2xvbmcnLCB5ZWFyOiBkYXkuZ2V0RnVsbFllYXIoKT09PXRvZGF5LmdldEZ1bGxZZWFyKCkgPyB1bmRlZmluZWQgOiAnbnVtZXJpYyd9KTsKfQpmdW5jdGlvbiByZW5kZXJBY3Rpdml0eUxvZygpewogIGNvbnN0IGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3Rpdml0eS1sb2ctbGlzdCcpOwogIGlmKCFib3gpIHJldHVybjsKICBjb25zdCByb3dzID0gZmlsdGVyZWRBY3Rpdml0eUxvZygpOwogIGNvbnN0IGNvdW50RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0aXZpdHktbG9nLWNvdW50Jyk7CiAgaWYoY291bnRFbCkgY291bnRFbC50ZXh0Q29udGVudCA9IHJvd3MubGVuZ3RoID8gYCR7cm93cy5sZW5ndGh9IG1vdmltaWVudG8ke3Jvd3MubGVuZ3RoPT09MT8nJzoncyd9YCA6ICcnOwogIGlmKCFhY3Rpdml0eUxvZ0NhY2hlLmxlbmd0aCl7IGJveC5pbm5lckhUTUwgPSAnPHAgc3R5bGU9ImNvbG9yOnZhcigtLXN1YXZlKTsiPlRvZGF2w61hIG5vIGhheSBhY3RpdmlkYWQgcmVnaXN0cmFkYS48L3A+JzsgcmV0dXJuOyB9CiAgaWYoIXJvd3MubGVuZ3RoKXsgYm94LmlubmVySFRNTCA9ICc8cCBzdHlsZT0iY29sb3I6dmFyKC0tc3VhdmUpOyI+TmFkYSBjb24gZXN0b3MgZmlsdHJvcy48L3A+JzsgcmV0dXJuOyB9CiAgbGV0IGh0bWwgPSAnJywgbGFzdERheSA9ICcnOwogIHJvd3MuZm9yRWFjaChyPT57CiAgICBjb25zdCBkID0gbmV3IERhdGUoci5jcmVhdGVkX2F0KTsKICAgIGNvbnN0IGRheUtleSA9IGQudG9EYXRlU3RyaW5nKCk7CiAgICBpZihkYXlLZXkgIT09IGxhc3REYXkpeyBodG1sICs9IGA8ZGl2IGNsYXNzPSJhY3Rsb2ctZGF5Ij4ke2FjdGl2aXR5RGF5TGFiZWwoZCl9PC9kaXY+YDsgbGFzdERheSA9IGRheUtleTsgfQogICAgY29uc3QgaG9yYSA9IGQudG9Mb2NhbGVUaW1lU3RyaW5nKGFwcExvY2FsZSgpLCB7aG91cjonMi1kaWdpdCcsIG1pbnV0ZTonMi1kaWdpdCd9KTsKICAgIGNvbnN0IGNvbCA9IEFDVElWSVRZX0lDT05TW3IuYWN0aW9uX3R5cGVdIHx8ICd2YXIoLS1saW5lKSc7CiAgICBodG1sICs9IGA8ZGl2IGNsYXNzPSJhY3Rsb2ctcm93Ij4KICAgICAgPHNwYW4gY2xhc3M9ImFjdGxvZy10aW1lIj4ke2hvcmF9PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iYWN0bG9nLWljb24iPjxpIGNsYXNzPSJhY3Rsb2ctZG90IiBzdHlsZT0iYmFja2dyb3VuZDoke2NvbH0iPjwvaT48L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJhY3Rsb2ctdGV4dCI+PHN0cm9uZz4ke2VzY2FwZUF0dHIoci5hY3Rvcil9PC9zdHJvbmc+PHNwYW4gY2xhc3M9ImFjdGxvZy1yb2xlIj4gJHtyLnJvbGUgPT09ICdhZG1pbicgPyAnYWRtaW4nIDogJ3RpZW5kYSd9PC9zcGFuPjxicj4ke2VzY2FwZUF0dHIoci5zdW1tYXJ5KX08L3NwYW4+CiAgICA8L2Rpdj5gOwogIH0pOwogIGJveC5pbm5lckhUTUwgPSBodG1sOwp9CmZ1bmN0aW9uIGRvd25sb2FkQWN0aXZpdHlMb2coKXsKICBjb25zdCByb3dzID0gZmlsdGVyZWRBY3Rpdml0eUxvZygpOwogIGlmKCFyb3dzLmxlbmd0aCkgcmV0dXJuOwogIGNvbnN0IGVzYyA9IHYgPT4gJyInICsgU3RyaW5nKHYgPz8gJycpLnJlcGxhY2UoLyIvZywnIiInKSArICciJzsKICBjb25zdCBsaW5lcyA9IFtbJ0ZlY2hhJywnSG9yYScsJ1F1acOpbicsJ1JvbCcsJ1RpcG8nLCdRdcOpJ10ubWFwKGVzYykuam9pbignOycpXS5jb25jYXQocm93cy5tYXAocj0+ewogICAgY29uc3QgZCA9IG5ldyBEYXRlKHIuY3JlYXRlZF9hdCk7CiAgICByZXR1cm4gW2QudG9Mb2NhbGVEYXRlU3RyaW5nKGFwcExvY2FsZSgpKSwgZC50b0xvY2FsZVRpbWVTdHJpbmcoYXBwTG9jYWxlKCkpLCByLmFjdG9yLCByLnJvbGUsIHIuYWN0aW9uX3R5cGUsIHIuc3VtbWFyeV0ubWFwKGVzYykuam9pbignOycpOwogIH0pKTsKICAvLyBCT00gcGFyYSBxdWUgRXhjZWwgYWJyYSBiaWVuIGxvcyBhY2VudG9zOyAiOyIgY29tbyBzZXBhcmFkb3IgKEV4Y2VsIGVuIGVzcGHDsW9sKQogIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbJ++7vycgKyBsaW5lcy5qb2luKCdcclxuJyldLCB7dHlwZTondGV4dC9jc3Y7Y2hhcnNldD11dGYtOCd9KTsKICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOwogIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CiAgYS5ocmVmID0gdXJsOwogIGEuZG93bmxvYWQgPSAncmVnaXN0cm8tYWN0aXZpZGFkLWlzdHJpY2UuY3N2JzsKICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOwogIGEuY2xpY2soKTsKICBhLnJlbW92ZSgpOwogIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTsKfQovLyBDb3BpYXMgZGUgc2VndXJpZGFkOiB1bmEgY29waWEgc2UgZ2VuZXJhIHNvbGEgY2FkYSAxNSBkw61hcyAoZMOtYSAxIHkgMTYgZGUgbWVzKSBtZWRpYW50ZSB1bgovLyBqb2IgZGUgcGdfY3JvbiBlbiBTdXBhYmFzZSAoZnVuY2nDs24gY3JlYXRlX2lzdHJpY2VfYmFja3VwKCkpIOKAlCBhcXXDrSBzb2xvIGxpc3RhbW9zIGxhcyBxdWUgeWEKLy8gZXhpc3RlbiB5IGRlamFtb3MgZGVzY2FyZ2FyIGxhIHF1ZSBzZSBxdWllcmEgY29tbyAuanNvbi4gTm8gaGFjZSBmYWx0YSBuYWRhIGRlIENsYXVkZSBwYXJhIHF1ZQovLyBzZSBzaWdhbiBnZW5lcmFuZG8uCmxldCBiYWNrdXBzQ2FjaGUgPSBbXTsKYXN5bmMgZnVuY3Rpb24gbG9hZEJhY2t1cHMoKXsKICBjb25zdCBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmFja3Vwcy1saXN0Jyk7CiAgaWYoYm94KSBib3guaW5uZXJIVE1MID0gJzxwIHN0eWxlPSJjb2xvcjp2YXIoLS1zdWF2ZSk7Ij5DYXJnYW5kb+KApjwvcD4nOwogIGNvbnN0IHsgZGF0YSwgZXJyb3IgfSA9IGF3YWl0IHNiLmZyb20oJ2JhY2t1cHMnKS5zZWxlY3QoJ2lkLCBjcmVhdGVkX2F0Jykub3JkZXIoJ2NyZWF0ZWRfYXQnLCB7YXNjZW5kaW5nOmZhbHNlfSk7CiAgaWYoZXJyb3IpeyBpZihib3gpIGJveC5pbm5lckhUTUwgPSAnPHAgc3R5bGU9ImNvbG9yOnZhcigtLXN1YXZlKTsiPk5vIHNlIHB1ZGllcm9uIGNhcmdhciBsYXMgY29waWFzLjwvcD4nOyByZXR1cm47IH0KICBiYWNrdXBzQ2FjaGUgPSBkYXRhIHx8IFtdOwogIGlmKCFib3gpIHJldHVybjsKICBpZighYmFja3Vwc0NhY2hlLmxlbmd0aCl7IGJveC5pbm5lckhUTUwgPSAnPHAgc3R5bGU9ImNvbG9yOnZhcigtLXN1YXZlKTsiPlRvZGF2w61hIG5vIGhheSBuaW5ndW5hIGNvcGlhIGdlbmVyYWRhLjwvcD4nOyByZXR1cm47IH0KICBib3guaW5uZXJIVE1MID0gYmFja3Vwc0NhY2hlLm1hcChyPT57CiAgICBjb25zdCBkID0gbmV3IERhdGUoci5jcmVhdGVkX2F0KTsKICAgIGNvbnN0IGZlY2hhID0gZC50b0xvY2FsZURhdGVTdHJpbmcoYXBwTG9jYWxlKCkpICsgJyAnICsgZC50b0xvY2FsZVRpbWVTdHJpbmcoYXBwTG9jYWxlKCksIHtob3VyOicyLWRpZ2l0JywgbWludXRlOicyLWRpZ2l0J30pOwogICAgcmV0dXJuIGA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O3BhZGRpbmc6NnB4IDA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tbGluZSk7Ij48c3Bhbj4ke2ZlY2hhfTwvc3Bhbj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBzbWFsbCIgb25jbGljaz0iZG93bmxvYWRCYWNrdXAoJyR7ci5pZH0nKSI+RGVzY2FyZ2FyPC9idXR0b24+PC9kaXY+YDsKICB9KS5qb2luKCcnKTsKfQphc3luYyBmdW5jdGlvbiBkb3dubG9hZEJhY2t1cChpZCl7CiAgY29uc3QgeyBkYXRhLCBlcnJvciB9ID0gYXdhaXQgc2IuZnJvbSgnYmFja3VwcycpLnNlbGVjdCgnZGF0YSwgY3JlYXRlZF9hdCcpLmVxKCdpZCcsIGlkKS5zaW5nbGUoKTsKICBpZihlcnJvciB8fCAhZGF0YSl7IGFsZXJ0KCdObyBzZSBwdWRvIGRlc2NhcmdhciBlc2EgY29waWEuJyk7IHJldHVybjsgfQogIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkoZGF0YS5kYXRhLCBudWxsLCAyKV0sIHt0eXBlOidhcHBsaWNhdGlvbi9qc29uJ30pOwogIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7CiAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICBhLmhyZWYgPSB1cmw7CiAgYS5kb3dubG9hZCA9ICdpc3RyaWNlLWJhY2t1cC0nICsgZmVjaGFMb2NhbChuZXcgRGF0ZShkYXRhLmNyZWF0ZWRfYXQpKSArICcuanNvbic7CiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsKICBhLmNsaWNrKCk7CiAgYS5yZW1vdmUoKTsKICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7Cn0KLy8gMTgvMDkvMjAyNjogZWwgIk5vbWJyZSBkZSBjb250YWN0byIgZGVsIHBlZGlkbyBzZSByZWxsZW5hIHNvbG8gY29uIGxhIHBlcnNvbmEgZGUgY29udGFjdG8gcXVlIGxhCi8vIHRpZW5kYSB0aWVuZSBlbiAiTWlzIGRhdG9zIiAoc2kgZWwgY2FtcG8gZXN0w6EgdmFjw61vKSwgcGFyYSBubyB0ZW5lciBxdWUgZXNjcmliaXJsbyBjYWRhIHZlei4KbGV0IG15Q29udGFjdE5hbWUgPSBudWxsOwphc3luYyBmdW5jdGlvbiBwcmVmaWxsT3JkZXJDb250YWN0KCl7CiAgY29uc3QgaW5wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29yZC1uYW1lJyk7CiAgaWYoIWlucCB8fCBpbnAudmFsdWUudHJpbSgpKSByZXR1cm47CiAgLy8gVGFuZGEgMiAoUDEyKTogY29uIHVuYSBjdWVudGEgZGUgYWRtaW5pc3RyYWNpw7NuIHNlIHBvbmUgc3Ugbm9tYnJlIChSYcO6bCwgQW5kcmVhLCBMaWRpYSk7IGxhcyB0aWVuZGFzLCBlbCBkZSBNaXMgZGF0b3MuCiAgaWYoIWxvY2tlZENoYW5uZWwpeyBjb25zdCBuID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWFkZXItdXNlci1uYW1lJyk\/LnRleHRDb250ZW50fHwnJykudHJpbSgpOyBpZihuICYmICEvbWFlc3Ryby9pLnRlc3QobikpIGlucC52YWx1ZSA9IG47IHJldHVybjsgfQogIGlmKGlzRGVtb01vZGUoKSB8fCAhbG9ja2VkQ2hhbm5lbFBhc3N3b3JkKSByZXR1cm47CiAgaWYobXlDb250YWN0TmFtZSA9PT0gbnVsbCl7CiAgICB0cnl7CiAgICAgIGNvbnN0IHtkYXRhfSA9IGF3YWl0IHNiLnJwYygnZ2V0X2NoYW5uZWxfZGV0YWlscycsIHtpbnB1dF9pZDogbG9ja2VkQ2hhbm5lbC5pZCwgaW5wdXRfcGFzc3dvcmQ6IGxvY2tlZENoYW5uZWxQYXNzd29yZH0pOwogICAgICBteUNvbnRhY3ROYW1lID0gKGRhdGEgJiYgZGF0YVswXSAmJiBkYXRhWzBdLmNvbnRhY3RfbmFtZSkgfHwgJyc7CiAgICB9Y2F0Y2goZSl7IG15Q29udGFjdE5hbWUgPSAnJzsgfQogIH0KICBpZihteUNvbnRhY3ROYW1lICYmICFpbnAudmFsdWUudHJpbSgpKSBpbnAudmFsdWUgPSBteUNvbnRhY3ROYW1lOwp9CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZT0+eyBpZihlLnRhcmdldC5jbG9zZXN0ICYmIGUudGFyZ2V0LmNsb3Nlc3QoJ25hdiBidXR0b25bZGF0YS10YWI9InBlZGlkbyJdJykpIHNldFRpbWVvdXQocHJlZmlsbE9yZGVyQ29udGFjdCwgMCk7IH0pOwpmdW5jdGlvbiBlbnRlckFwcCgpewogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnYXRlJykuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcCcpLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpOwogIGJvb3QoKTsKfQphc3luYyBmdW5jdGlvbiBnYXRlTG9nb3V0KCl7CiAgLy8gVW4gw7puaWNvIGJvdMOzbiBkZSBjZXJyYXIgc2VzacOzbiBwYXJhIHRvZG9zICh0aWVuZGEgbyBhZG1pbikg4oCUIHNpIGhhYsOtYSB1bmEgc2VzacOzbiByZWFsIGRlCiAgLy8gYWRtaW5pc3RyYWRvciAoU3VwYWJhc2UgQXV0aCkgbGEgY2llcnJhIHRhbWJpw6luLCBwYXJhIHF1ZSBubyBxdWVkZSBjb2xnYWRhIGRlIGZvbmRvLgogIC8vIDE4LzA5LzIwMjY6IHNjb3BlICdsb2NhbCcg4oCUIHBvciBkZWZlY3RvIHNpZ25PdXQoKSBjaWVycmEgbGEgc2VzacOzbiBkZSBlc2UgdXN1YXJpbyBlbiBUT0RPUyBsb3MKICAvLyBkaXNwb3NpdGl2b3MvcGVzdGHDsWFzLCB5IGVyYSBsYSBjYXVzYSBkZSAic2UgbWUgY2llcnJhIGVsIGFkbWluIGFsIHJlY2FyZ2FyIiAoYWwgY2VycmFyIHNlc2nDs24KICAvLyBlbiB1biBzaXRpbyBzZSBjYcOtYSBlbiBsb3MgZGVtw6FzIGFsIHJlbm92YXIgZWwgdG9rZW4pLgogIHNhZmVTZXNzaW9uUmVtb3ZlKCdpc3RyaWNlX2dhdGUnKTsKICBzYWZlU2Vzc2lvblJlbW92ZSgnaXN0cmljZV9sb2NrZWRfY2hhbm5lbCcpOwogIHNhZmVTZXNzaW9uUmVtb3ZlKCdpc3RyaWNlX2xvY2tlZF9wYXNzd29yZCcpOwogIHNhZmVTZXNzaW9uUmVtb3ZlKCdpc3RyaWNlX2NoYW5uZWxzJyk7CiAgdHJ5eyBhd2FpdCBzYi5hdXRoLnNpZ25PdXQoe3Njb3BlOidsb2NhbCd9KTsgfWNhdGNoKGUpe30KICBsb2NrZWRDaGFubmVsUGFzc3dvcmQgPSBudWxsOwogIGxvY2F0aW9uLnJlbG9hZCgpOwp9CmZ1bmN0aW9uIHNldEhlYWRlclVzZXJOYW1lKG5hbWUpewogIGNvbnN0IG5hbWVFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWFkZXItdXNlci1uYW1lJyk7CiAgY29uc3QgYXZhdGFyRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGVhZGVyLXVzZXItYXZhdGFyJyk7CiAgaWYobmFtZUVsKSBuYW1lRWwudGV4dENvbnRlbnQgPSBuYW1lOwogIGlmKGF2YXRhckVsKSBhdmF0YXJFbC50ZXh0Q29udGVudCA9IChuYW1lfHwnJykudHJpbSgpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpOwp9CmZ1bmN0aW9uIHRvZ2dsZVVzZXJNZW51KGUpewogIGlmKGUpIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VzZXItbWVudS1kcm9wZG93bicpLmNsYXNzTGlzdC50b2dnbGUoJ2hpZGRlbicpOwp9CmZ1bmN0aW9uIGNsb3NlVXNlck1lbnUoKXsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXNlci1tZW51LWRyb3Bkb3duJykuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7Cn0KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSk9PnsKICBjb25zdCB3cmFwID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnVzZXItbWVudS13cmFwJyk7CiAgaWYod3JhcCAmJiAhd3JhcC5jb250YWlucyhlLnRhcmdldCkpIGNsb3NlVXNlck1lbnUoKTsKfSk7CmFzeW5jIGZ1bmN0aW9uIG9wZW5CaWxsaW5nKCl7CiAgaWYoIWxvY2tlZENoYW5uZWwpewogICAgYWxlcnQoJ0VsIG1hZXN0cm8gbm8gdGllbmUgZGF0b3MgZGUgZmFjdHVyYWNpw7NuIHByb3Bpb3MuIEdlc3Rpb25hIGxvcyBkZSBjYWRhIHRpZW5kYSBkZXNkZSBBZG1pbiDihpIgVGllbmRhcy4nKTsKICAgIHJldHVybjsKICB9CiAgaWYoIWxvY2tlZENoYW5uZWxQYXNzd29yZCl7CiAgICBjb25zdCBwYXNzID0gYXdhaXQgcHJlZ3VudGEodCgnVnVlbHZlIGEgZXNjcmliaXIgdHUgY29udHJhc2XDsWEgcGFyYSBlZGl0YXIgdHVzIGRhdG9zIGRlIGZhY3R1cmFjacOzbjonKSwgJ3Bhc3N3b3JkJyk7CiAgICBpZighcGFzcykgcmV0dXJuOwogICAgbG9ja2VkQ2hhbm5lbFBhc3N3b3JkID0gcGFzczsKICB9CiAgY29uc3Qge2RhdGEsIGVycm9yfSA9IGF3YWl0IHNiLnJwYygnZ2V0X2NoYW5uZWxfZGV0YWlscycsIHtpbnB1dF9pZDogbG9ja2VkQ2hhbm5lbC5pZCwgaW5wdXRfcGFzc3dvcmQ6IGxvY2tlZENoYW5uZWxQYXNzd29yZH0pOwogIGlmKGVycm9yICYmIGVzRXJyb3JEZVJlZChlcnJvcikpeyBhbGVydCh0KE1TR19TSU5fQ09ORVhJT04pKTsgcmV0dXJuOyB9CiAgaWYoZXJyb3IgfHwgIWRhdGEgfHwgIWRhdGEubGVuZ3RoKXsKICAgIGxvY2tlZENoYW5uZWxQYXNzd29yZCA9IG51bGw7CiAgICBhbGVydCh0KCdDb250cmFzZcOxYSBpbmNvcnJlY3RhLicpKTsKICAgIHJldHVybjsKICB9CiAgY29uc3QgYiA9IGRhdGFbMF07CiAgY29uc3Qgc2V0VmFsID0gKGlkLCB2KSA9PiB7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS52YWx1ZSA9IHYgfHwgJyc7IH07CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JpbGwtc3RvcmUtbmFtZScpLnRleHRDb250ZW50ID0gbG9ja2VkQ2hhbm5lbC5uYW1lIHx8ICcnOwogIHNldFZhbCgnYmlsbC1jb250YWN0LW5hbWUnLCBiLmNvbnRhY3RfbmFtZSk7CiAgc2V0VmFsKCdiaWxsLXBob25lJywgYi5waG9uZSk7CiAgc2V0VmFsKCdiaWxsLWNpdHknLCBiLmNpdHkpOwogIHNldFZhbCgnYmlsbC1uYW1lJywgYi5iaWxsaW5nX25hbWUpOwogIHNldFZhbCgnYmlsbC1lbWFpbCcsIGIuY29udGFjdF9lbWFpbCk7CiAgc2V0VmFsKCdiaWxsLWFkZHJlc3MnLCBiLmFkZHJlc3MpOwogIHNldFZhbCgnYmlsbC1wb3N0YWwnLCBiLnBvc3RhbF9jb2RlKTsKICBzZXRWYWwoJ2JpbGwtdGF4LWlkJywgYi50YXhfaWQpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaGlwLXNhbWUnKS5jaGVja2VkID0gYi5zaGlwX3NhbWVfYXNfYmlsbGluZyAhPT0gZmFsc2U7CiAgc2V0VmFsKCdzaGlwLWFkZHJlc3MnLCBiLnNoaXBfYWRkcmVzcyk7CiAgc2V0VmFsKCdzaGlwLXBvc3RhbCcsIGIuc2hpcF9wb3N0YWxfY29kZSk7CiAgc2V0VmFsKCdzaGlwLWNpdHknLCBiLnNoaXBfY2l0eSk7CiAgc2V0VmFsKCdzaGlwLXByb3ZpbmNlJywgYi5zaGlwX3Byb3ZpbmNlKTsKICBzZXRWYWwoJ3NoaXAtcGhvbmUnLCBiLnNoaXBfcGhvbmUpOwogIHNldFZhbCgnZGVsaXZlcnktaG91cnMnLCBiLmRlbGl2ZXJ5X2hvdXJzKTsKICBzZXRWYWwoJ2RlbGl2ZXJ5LW5vdGVzJywgYi5kZWxpdmVyeV9ub3Rlcyk7CiAgdG9nZ2xlU2hpcEZpZWxkcygpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiaWxsLW1zZycpLmlubmVySFRNTCA9ICcnOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteXBhc3MtbXNnJykuaW5uZXJIVE1MID0gJyc7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bhc3MtbmV3JykudmFsdWUgPSAnJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFzcy1uZXcyJykudmFsdWUgPSAnJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFzcy1jaGFuZ2UtYm94Jykub3BlbiA9IGZhbHNlOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiaWxsaW5nLW1vZGFsJykuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7Cn0KLy8gMTgvMDkvMjAyNjogbGEgdGllbmRhIHB1ZWRlIGNhbWJpYXIgc3UgY29udHJhc2XDsWEgKEFkbWluIGxhIHNpZ3VlIHZpZW5kbyBlbiBUaWVuZGFzKS4KLy8gMjkvMDkvMjAyNiAocmVwYXNvIGRlIHNlZ3VyaWRhZCk6IHNpbiBzaWdub3MgcXVlIHNpcnZhbiBwYXJhIG1ldGVyIGPDs2RpZ28gZW4gZWwgcGFuZWwgZGUgQWRtaW4KLy8gKDwgPiAiICcgYCAmIG5pIGVzcGFjaW9zKSwgbcOheGltbyA2NDsgbGEgRGVtbyBubyBwdWVkZSBjYW1iaWFybGEuIEVsIHNlcnZpZG9yIGNvbXBydWViYSBsbyBtaXNtby4KLy8gWWEgbm8gc2UgZXhpZ2UgcXVlIHNlYSBkaXN0aW50YSBkZSBsYSBkZSBvdHJhcyB0aWVuZGFzOiBwYXJhIGVudHJhciBzZSBwaWRlIHRhbWJpw6luIGVsIG5vbWJyZS4KY29uc3QgUEFTU1dPUkRfQkFEX0NIQVJTID0gL1s8PiInYCZcc10vOwphc3luYyBmdW5jdGlvbiBjaGFuZ2VNeVBhc3N3b3JkKCl7CiAgY29uc3QgbXNnRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXlwYXNzLW1zZycpOwogIGNvbnN0IHAxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bhc3MtbmV3JykudmFsdWUudHJpbSgpOwogIGNvbnN0IHAyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bhc3MtbmV3MicpLnZhbHVlLnRyaW0oKTsKICBpZihwMS5sZW5ndGggPCA2KXsgbXNnRWwuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9Im1zZyBlcnIiPkxhIGNvbnRyYXNlw7FhIHRpZW5lIHF1ZSB0ZW5lciBhbCBtZW5vcyA2IGNhcmFjdGVyZXMuPC9kaXY+JzsgcmV0dXJuOyB9CiAgaWYocDEgIT09IHAyKXsgbXNnRWwuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9Im1zZyBlcnIiPkxhcyBkb3MgY29udHJhc2XDsWFzIG5vIGNvaW5jaWRlbi48L2Rpdj4nOyByZXR1cm47IH0KICBpZihwMS5sZW5ndGggPiA2NCB8fCBQQVNTV09SRF9CQURfQ0hBUlMudGVzdChwMSkpeyBtc2dFbC5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0ibXNnIGVyciI+Jytlc2NhcGVBdHRyKHQoJ1VzYSBsZXRyYXMsIG7Dum1lcm9zIHkgc2lnbm9zIHNlbmNpbGxvcywgc2luIGVzcGFjaW9zIG5pIDwgPiAiIFwnIGAgJiAobcOheGltbyA2NCkuJykpKyc8L2Rpdj4nOyByZXR1cm47IH0KICBpZighKGF3YWl0IGNvbmZpcm1hKHQoJ8K\/Q2FtYmlhciB0dSBjb250cmFzZcOxYT8gTGEgcHLDs3hpbWEgdmV6IHF1ZSBlbnRyZXMgdGVuZHLDoXMgcXVlIHVzYXIgbGEgbnVldmEuJykpKSkgcmV0dXJuOwogIGNvbnN0IHtkYXRhLCBlcnJvcn0gPSBhd2FpdCBzYi5ycGMoJ2NoYW5nZV9jaGFubmVsX3Bhc3N3b3JkJywge2lucHV0X2lkOiBsb2NrZWRDaGFubmVsLmlkLCBpbnB1dF9wYXNzd29yZDogbG9ja2VkQ2hhbm5lbFBhc3N3b3JkLCBpbnB1dF9uZXdfcGFzc3dvcmQ6IHAxfSk7CiAgY29uc3QgdGV4dHMgPSB7CiAgICB3cm9uZ19wYXNzd29yZDogJ1R1IHNlc2nDs24gaGEgY2FkdWNhZG8uIENpZXJyYSBzZXNpw7NuLCB2dWVsdmUgYSBlbnRyYXIgZSBpbnTDqW50YWxvIGRlIG51ZXZvLicsCiAgICB0b29fc2hvcnQ6ICdMYSBjb250cmFzZcOxYSB0aWVuZSBxdWUgdGVuZXIgYWwgbWVub3MgNiBjYXJhY3RlcmVzLicsCiAgICBpbl91c2U6ICdFc2EgY29udHJhc2XDsWEgbm8gZXN0w6EgZGlzcG9uaWJsZS4gRWxpZ2Ugb3RyYSBkaXN0aW50YS4nLAogICAgYmFkX2NoYXJzOiAnVXNhIGxldHJhcywgbsO6bWVyb3MgeSBzaWdub3Mgc2VuY2lsbG9zLCBzaW4gZXNwYWNpb3MgbmkgPCA+ICIgXCcgYCAmIChtw6F4aW1vIDY0KS4nLAogICAgZGVtbzogJ0xhIGN1ZW50YSBkZSBkZW1vc3RyYWNpw7NuIG5vIHB1ZWRlIGNhbWJpYXIgbGEgY29udHJhc2XDsWEuJwogIH07CiAgaWYoZXJyb3IgfHwgZGF0YSAhPT0gJ29rJyl7CiAgICBtc2dFbC5pbm5lckhUTUwgPSBgPGRpdiBjbGFzcz0ibXNnIGVyciI+JHtlcnJvciA\/ICdObyBzZSBwdWRvIGNhbWJpYXIuIEludMOpbnRhbG8gZGUgbnVldm8uJyA6IGVzY2FwZUF0dHIodGV4dHNbZGF0YV0gfHwgJ05vIHNlIHB1ZG8gY2FtYmlhci4nKX08L2Rpdj5gOwogICAgcmV0dXJuOwogIH0KICBsb2NrZWRDaGFubmVsUGFzc3dvcmQgPSBwMTsKICBzYWZlU2Vzc2lvblNldCgnaXN0cmljZV9sb2NrZWRfcGFzc3dvcmQnLCBwMSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bhc3MtbmV3JykudmFsdWUgPSAnJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFzcy1uZXcyJykudmFsdWUgPSAnJzsKICBtc2dFbC5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0ibXNnIG9rIj5Db250cmFzZcOxYSBjYW1iaWFkYS4gVXNhIGxhIG51ZXZhIGxhIHByw7N4aW1hIHZleiBxdWUgZW50cmVzLjwvZGl2Pic7CiAgbG9nQWN0aXZpdHkoJ2RhdG9zJywgJ0NhbWJpw7Mgc3UgY29udHJhc2XDsWEgZGUgYWNjZXNvJyk7Cn0KZnVuY3Rpb24gdG9nZ2xlU2hpcEZpZWxkcygpewogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaGlwLWZpZWxkcycpLmNsYXNzTGlzdC50b2dnbGUoJ2hpZGRlbicsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaGlwLXNhbWUnKS5jaGVja2VkKTsKfQpmdW5jdGlvbiBjbG9zZUJpbGxpbmcoKXsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmlsbGluZy1tb2RhbCcpLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpOwp9CmFzeW5jIGZ1bmN0aW9uIHNhdmVCaWxsaW5nKCl7CiAgY29uc3QgdmFsID0gaWQgPT4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnZhbHVlLnRyaW0oKTsKICBjb25zdCBzaGlwU2FtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaGlwLXNhbWUnKS5jaGVja2VkOwogIGlmKCFzaGlwU2FtZSAmJiAhdmFsKCdzaGlwLWFkZHJlc3MnKSl7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmlsbC1tc2cnKS5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0ibXNnIGVyciI+RXNjcmliZSBsYSBkaXJlY2Npw7NuIGRlIGVudsOtbywgbyBtYXJjYSAiRW52aWFyIGEgbGEgbWlzbWEgZGlyZWNjacOzbiBkZSBmYWN0dXJhY2nDs24iLjwvZGl2Pic7CiAgICByZXR1cm47CiAgfQogIGNvbnN0IHtkYXRhLCBlcnJvcn0gPSBhd2FpdCBzYi5ycGMoJ3VwZGF0ZV9jaGFubmVsX2RldGFpbHMnLCB7CiAgICBpbnB1dF9pZDogbG9ja2VkQ2hhbm5lbC5pZCwKICAgIGlucHV0X3Bhc3N3b3JkOiBsb2NrZWRDaGFubmVsUGFzc3dvcmQsCiAgICBpbnB1dF9jb250YWN0X25hbWU6IHZhbCgnYmlsbC1jb250YWN0LW5hbWUnKSB8fCBudWxsLAogICAgaW5wdXRfcGhvbmU6IHZhbCgnYmlsbC1waG9uZScpIHx8IG51bGwsCiAgICBpbnB1dF9jaXR5OiB2YWwoJ2JpbGwtY2l0eScpIHx8IG51bGwsCiAgICBpbnB1dF9lbWFpbDogdmFsKCdiaWxsLWVtYWlsJyksCiAgICBpbnB1dF9hZGRyZXNzOiB2YWwoJ2JpbGwtYWRkcmVzcycpLAogICAgaW5wdXRfcG9zdGFsX2NvZGU6IHZhbCgnYmlsbC1wb3N0YWwnKSwKICAgIGlucHV0X3RheF9pZDogdmFsKCdiaWxsLXRheC1pZCcpLAogICAgaW5wdXRfYmlsbGluZ19uYW1lOiB2YWwoJ2JpbGwtbmFtZScpIHx8IG51bGwsCiAgICBpbnB1dF9zaGlwX3NhbWVfYXNfYmlsbGluZzogc2hpcFNhbWUsCiAgICBpbnB1dF9zaGlwX2FkZHJlc3M6IHZhbCgnc2hpcC1hZGRyZXNzJykgfHwgbnVsbCwKICAgIGlucHV0X3NoaXBfcG9zdGFsX2NvZGU6IHZhbCgnc2hpcC1wb3N0YWwnKSB8fCBudWxsLAogICAgaW5wdXRfc2hpcF9jaXR5OiB2YWwoJ3NoaXAtY2l0eScpIHx8IG51bGwsCiAgICBpbnB1dF9zaGlwX3Byb3ZpbmNlOiB2YWwoJ3NoaXAtcHJvdmluY2UnKSB8fCBudWxsLAogICAgaW5wdXRfc2hpcF9waG9uZTogdmFsKCdzaGlwLXBob25lJykgfHwgbnVsbCwKICAgIGlucHV0X2RlbGl2ZXJ5X25vdGVzOiB2YWwoJ2RlbGl2ZXJ5LW5vdGVzJykgfHwgbnVsbCwKICAgIGlucHV0X2RlbGl2ZXJ5X2hvdXJzOiB2YWwoJ2RlbGl2ZXJ5LWhvdXJzJykgfHwgbnVsbAogIH0pOwogIGNvbnN0IG1zZ0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JpbGwtbXNnJyk7CiAgaWYoZXJyb3IgfHwgIWRhdGEpewogICAgbXNnRWwuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9Im1zZyBlcnIiPk5vIHNlIHB1ZG8gZ3VhcmRhci4gSW50w6ludGFsbyBkZSBudWV2by48L2Rpdj4nOwogICAgcmV0dXJuOwogIH0KICBtc2dFbC5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0ibXNnIG9rIj5EYXRvcyBndWFyZGFkb3MuPC9kaXY+JzsKICBteUNvbnRhY3ROYW1lID0gdmFsKCdiaWxsLWNvbnRhY3QtbmFtZScpIHx8ICcnOwogIGxvZ0FjdGl2aXR5KCdkYXRvcycsICdBY3R1YWxpesOzIHN1cyBkYXRvcyAoTWlzIGRhdG9zKScpOwp9CmlmKHNhZmVTZXNzaW9uR2V0KCdpc3RyaWNlX2dhdGUnKSA9PT0gJzEnKXsKICBjb25zdCBsYyA9IHNhZmVTZXNzaW9uR2V0KCdpc3RyaWNlX2xvY2tlZF9jaGFubmVsJyk7CiAgY29uc3QgY2wgPSBzYWZlU2Vzc2lvbkdldCgnaXN0cmljZV9jaGFubmVscycpOwogIGNvbnN0IGxwID0gc2FmZVNlc3Npb25HZXQoJ2lzdHJpY2VfbG9ja2VkX3Bhc3N3b3JkJyk7CiAgbG9ja2VkQ2hhbm5lbCA9IGxjID8gSlNPTi5wYXJzZShsYykgOiBudWxsOwogIGlmKGxvY2tlZENoYW5uZWwgJiYgbG9ja2VkQ2hhbm5lbC5sYW5ndWFnZSAmJiBsb2NrZWRDaGFubmVsLmxhbmd1YWdlICE9PSBMQU5HKSBzZXRMYW5nKGxvY2tlZENoYW5uZWwubGFuZ3VhZ2UpOwogIGNoYW5uZWxzID0gY2wgPyBKU09OLnBhcnNlKGNsKSA6IChsb2NrZWRDaGFubmVsID8gW2xvY2tlZENoYW5uZWxdIDogW10pOwogIGxvY2tlZENoYW5uZWxQYXNzd29yZCA9IGxwIHx8IG51bGw7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dhdGUnKS5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXBwJykuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7CiAgLy8gU2UgcG9uZSBlbCBub21icmUgZGUgbGEgdGllbmRhL2FkbWluIGRlIGlubWVkaWF0byAoc2luIGVzcGVyYXIgYSBxdWUgY2FyZ3VlbiBkYXRvcyBkZSByZWQpCiAgLy8gcGFyYSBxdWUgZWwgYm90w7NuIG51bmNhIHNlIHZlYSB2YWPDrW8vcmVkb25kbyBtaWVudHJhcyBjYXJnYSwgc29icmUgdG9kbyBlbiBtw7N2aWwgY29uIGNvbmV4acOzbiBsZW50YS4KICBzZXRIZWFkZXJVc2VyTmFtZShsb2NrZWRDaGFubmVsID8gbG9ja2VkQ2hhbm5lbC5uYW1lIDogJ0lTVFJJQ0UgKG1hZXN0cm8pJyk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VzZXItbWVudS1iaWxsaW5nJykuY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJywgIWxvY2tlZENoYW5uZWwpOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgYm9vdCk7Cn0gZWxzZSB7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKT0+e30pOwp9CgovLyAtLS0tLS0tLS0tIE1PRE8gKEFkbWluIG8gdmlzdGEgZGUgdGllbmRhKSAtLS0tLS0tLS0tCi8vIDA1LzEwLzIwMjY6IGZyYW5qYSBiYWpvIGxhIGNhYmVjZXJhIHBhcmEgbGFzIGN1ZW50YXMgZGUgYWRtaW5pc3RyYWNpw7NuLiBTZSBhY3R1YWxpemEgc29sYSBhbCBjYW1iaWFyIGRlIHBlc3Rhw7FhLgpmdW5jdGlvbiBhY3R1YWxpemFNb2RvKCl7CiAgY29uc3QgYmFuZGEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kby1iYW5kYScpOyBjb25zdCBuYXZBZG1pbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduYXYtYWRtaW4nKTsKICBjb25zdCB0YWJBZG1pbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWItYWRtaW4nKTsgY29uc3QgYXBwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcCcpOwogIGlmKCFiYW5kYSB8fCAhbmF2QWRtaW4gfHwgIXRhYkFkbWluKSByZXR1cm47CiAgY29uc3QgZXNBZG1pbiA9ICFsb2NrZWRDaGFubmVsICYmICFuYXZBZG1pbi5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpICYmIGFwcCAmJiAhYXBwLmNsYXNzTGlzdC5jb250YWlucygnaGlkZGVuJyk7CiAgY29uc3QgbmF2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW4tbmF2Jyk7CiAgaWYoIWVzQWRtaW4peyBiYW5kYS5jbGFzc05hbWUgPSAnaGlkZGVuJzsgYmFuZGEuaW5uZXJIVE1MID0gJyc7IGlmKG5hdikgYmxvcXVlYVRpZW5kYShuYXYsIGZhbHNlKTsgcmV0dXJuOyB9CiAgY29uc3QgZW5BZG1pbiA9ICF0YWJBZG1pbi5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpOwogIC8vIFJhw7psICgwNS8xMC8yMDI2KTogwqt5IHNpIGN1YW5kbyBlc3TDoXMgZW4gYWRtaW4gc2UgYmxvcXVlYW4gbG9zIGJvdG9uZXMgZGUgdGllbmRhwrsg4oaSIGVuIEFkbWluIGxhcyBwZXN0YcOxYXMgZGUgdGllbmRhCiAgLy8gc2UgdmVuIGFwYWdhZGFzIHkgbm8gc2UgcHVsc2FuOyBzZSB2dWVsdmUgY29uIMKrVm9sdmVyIGEgbGEgdmlzdGEgZGUgdGllbmRhwrsuIChTb2xvIGNvbiBlbCByYXTDs24gbyBlbCBkZWRvOiBsb3MKICAvLyBzYWx0b3MgcXVlIGhhY2UgZWwgcHJvcGlvIHByb2dyYW1hIHNpZ3VlbiBmdW5jaW9uYW5kby4pCiAgaWYobmF2KSBibG9xdWVhVGllbmRhKG5hdiwgZW5BZG1pbik7CiAgY29uc3QgY2xhdmUgPSBlbkFkbWluID8gJ2FkbWluJyA6ICd0aWVuZGEnOwogIGlmKGJhbmRhLmRhdGFzZXQubW9kbyA9PT0gY2xhdmUgJiYgIWJhbmRhLmNsYXNzTGlzdC5jb250YWlucygnaGlkZGVuJykpIHJldHVybjsKICBiYW5kYS5kYXRhc2V0Lm1vZG8gPSBjbGF2ZTsgYmFuZGEuY2xhc3NOYW1lID0gY2xhdmU7CiAgYmFuZGEuaW5uZXJIVE1MID0gZW5BZG1pbgogICAgPyAnPHNwYW4+PHN0cm9uZz5Fc3TDoXMgZW4gQWRtaW48L3N0cm9uZz4g4oCUIGxvIHF1ZSBjYW1iaWVzIGFxdcOtIGxvIHZlbiB0b2RhcyBsYXMgdGllbmRhcyB5IGxhIHdlYi48L3NwYW4+PGJ1dHRvbiB0eXBlPSJidXR0b24iIG9uY2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnbmF2LWNhdGFsb2dvXCcpLmNsaWNrKCkiPlZvbHZlciBhIGxhIHZpc3RhIGRlIHRpZW5kYTwvYnV0dG9uPicKICAgIDogJzxzcGFuPjxzdHJvbmc+VmlzdGEgZGUgdGllbmRhPC9zdHJvbmc+IOKAlCBhc8OtIHZlbiBlbCBjYXTDoWxvZ28gbGFzIHRpZW5kYXMuPC9zcGFuPjxidXR0b24gdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ25hdi1hZG1pblwnKS5jbGljaygpIj5JciBhIEFkbWluPC9idXR0b24+JzsKfQpmdW5jdGlvbiBibG9xdWVhVGllbmRhKG5hdiwgc2kpewogIG5hdi5jbGFzc0xpc3QudG9nZ2xlKCdibG9xdWVhZGEnLCBzaSk7CiAgbmF2LnF1ZXJ5U2VsZWN0b3JBbGwoJ2J1dHRvbicpLmZvckVhY2goeCA9PiB7IGlmKHNpKXsgeC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGlzYWJsZWQnLCd0cnVlJyk7IHgudGFiSW5kZXggPSAtMTsgeC50aXRsZSA9ICdTYWwgZGUgQWRtaW4gcGFyYSB1c2FyIGxhIHZpc3RhIGRlIHRpZW5kYSc7IH0gZWxzZSB7IHgucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJyk7IHgucmVtb3ZlQXR0cmlidXRlKCd0YWJpbmRleCcpOyB4LnJlbW92ZUF0dHJpYnV0ZSgndGl0bGUnKTsgfSB9KTsKfQooZnVuY3Rpb24oKXsKICBjb25zdCBvYnMgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihhY3R1YWxpemFNb2RvKTsKICBjb25zdCBtaXJhID0gKCkgPT4gWydhcHAnLCd0YWItYWRtaW4nLCduYXYtYWRtaW4nXS5mb3JFYWNoKGlkID0+IHsgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7IGlmKGVsKSBvYnMub2JzZXJ2ZShlbCwge2F0dHJpYnV0ZXM6dHJ1ZSwgYXR0cmlidXRlRmlsdGVyOlsnY2xhc3MnXX0pOyB9KTsKICBpZihkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKT0+eyBtaXJhKCk7IGFjdHVhbGl6YU1vZG8oKTsgfSk7IGVsc2UgeyBtaXJhKCk7IGFjdHVhbGl6YU1vZG8oKTsgfQp9KSgpOwoKLy8gLS0tLS0tLS0tLSBOQVYgLS0tLS0tLS0tLQpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKT0+ewogIGNvbnN0IGIgPSBlLnRhcmdldC5jbG9zZXN0KCduYXYgYnV0dG9uJyk7CiAgaWYoIWIgfHwgIWIuZGF0YXNldC50YWIpIHJldHVybjsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCduYXYgYnV0dG9uW2RhdGEtdGFiXScpLmZvckVhY2goeD0+eC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKSk7CiAgYi5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdtYWluID4gc2VjdGlvbicpLmZvckVhY2gocz0+cy5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYi0nK2IuZGF0YXNldC50YWIpLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpOwogIGlmKGIuZGF0YXNldC50YWI9PT0nYWRtaW4nKSByZWZyZXNoQWRtaW5JZkxvZ2dlZCgpOwogIGVsc2UgaWYoYi5kYXRhc2V0LnRhYj09PSd2ZW50YXMnKXsgcmVmcmVzaFNhbGVTdG9ja1ByZXZpZXcoKTsgcmVmcmVzaFN0b3JlU3RhdHMoKTsgcmVmcmVzaEV4aXN0aW5nU2FsZXMoKTsgfQp9KTsKZnVuY3Rpb24gdXBkYXRlTmF2U2Nyb2xsU2hhZG93cygpewogIGNvbnN0IG5hdiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtYWluLW5hdicpOwogIGNvbnN0IHdyYXAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubmF2LXNjcm9sbC13cmFwJyk7CiAgaWYoIW5hdiB8fCAhd3JhcCkgcmV0dXJuOwogIGNvbnN0IGNhbkxlZnQgPSBuYXYuc2Nyb2xsTGVmdCA+IDQ7CiAgY29uc3QgY2FuUmlnaHQgPSBuYXYuc2Nyb2xsTGVmdCA8IChuYXYuc2Nyb2xsV2lkdGggLSBuYXYuY2xpZW50V2lkdGggLSA0KTsKICB3cmFwLmNsYXNzTGlzdC50b2dnbGUoJ3Njcm9sbC1sZWZ0JywgY2FuTGVmdCk7CiAgd3JhcC5jbGFzc0xpc3QudG9nZ2xlKCdzY3JvbGwtcmlnaHQnLCBjYW5SaWdodCk7Cn0KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsICgpPT57CiAgY29uc3QgbmF2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI21haW4tbmF2Jyk7CiAgaWYoIW5hdikgcmV0dXJuOwogIG5hdi5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGVOYXZTY3JvbGxTaGFkb3dzKTsKICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlTmF2U2Nyb2xsU2hhZG93cyk7CiAgLy8gZWwgbWVuw7ogY2FtYmlhIGRlIGJvdG9uZXMgdmlzaWJsZXMgc2Vnw7puIGxvZ2luL3JvbDsgdW4gb2JzZXJ2ZXIgZGV0ZWN0YSBlc29zIGNhbWJpb3MKICAvLyAobW9zdHJhci9vY3VsdGFyIGJvdG9uZXMpIHNpbiB0ZW5lciBxdWUgbGxhbWFybG8gYSBtYW5vIGVuIGNhZGEgc2l0aW8gZGVsIGPDs2RpZ28uCiAgbmV3IE11dGF0aW9uT2JzZXJ2ZXIodXBkYXRlTmF2U2Nyb2xsU2hhZG93cykub2JzZXJ2ZShuYXYsIHthdHRyaWJ1dGVzOnRydWUsIGF0dHJpYnV0ZUZpbHRlcjpbJ2NsYXNzJ10sIHN1YnRyZWU6dHJ1ZSwgY2hpbGRMaXN0OnRydWV9KTsKICB1cGRhdGVOYXZTY3JvbGxTaGFkb3dzKCk7Cn0pOwoKZnVuY3Rpb24gYXBwbHlEZWZhdWx0Q2hhbm5lbCgpewogIC8vIFNpIG5vIGhheSB0aWVuZGEgYmxvcXVlYWRhIChvIHNlYSwgc2kgZXMgZWwgbWFlc3RybyksIHRyYXMgdW4gcmVzZXQgZGUgZm9ybXVsYXJpbwogIC8vIChuYXRpdm8sIHF1ZSB2dWVsdmUgYWwgPG9wdGlvbj4gcG9yIGRlZmVjdG8pIHZvbHZlbW9zIGEgZmlqYXIgSVNUUklDRSBjb21vIHRpZW5kYSwKICAvLyBlbiB2ZXogZGUgZGVqYXIgcXVlIHNlIHF1ZWRlIGVuIGxhIHByaW1lcmEgdGllbmRhIGFsZmFiw6l0aWNhLgogIGlmKCFsb2NrZWRDaGFubmVsKXsKICAgIGNvbnN0IHNlbGZDaGFubmVsID0gY2hhbm5lbHMuZmluZChjID0+IC9pc3RyaWNlL2kudGVzdChjLm5hbWV8fCcnKSk7CiAgICBpZihzZWxmQ2hhbm5lbCl7CiAgICAgIGNvbnN0IG9yZEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29yZC1jaGFubmVsJyk7CiAgICAgIGNvbnN0IHNhbGVFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYWxlLWNoYW5uZWwnKTsKICAgICAgaWYob3JkRWwpIG9yZEVsLnZhbHVlID0gc2VsZkNoYW5uZWwuaWQ7CiAgICAgIGlmKHNhbGVFbCkgc2FsZUVsLnZhbHVlID0gc2VsZkNoYW5uZWwuaWQ7CiAgICB9CiAgfQp9CmZ1bmN0aW9uIHJlc2V0Q2hhbm5lbFNlbGVjdFRvU2VsZihzZWxlY3RJZCl7CiAgY29uc3Qgc2VsZkNoYW5uZWwgPSBjaGFubmVscy5maW5kKGMgPT4gL2lzdHJpY2UvaS50ZXN0KGMubmFtZXx8JycpKTsKICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlbGVjdElkKTsKICBpZihzZWxmQ2hhbm5lbCAmJiBlbCkgZWwudmFsdWUgPSBzZWxmQ2hhbm5lbC5pZDsKfQovLyBCbG9xdWVvIGRlIHNlZ3VyaWRhZCBwYXJhIGVsIG1hZXN0cm86ICJDYW5hbC9DbGllbnRlIiB5ICJUdSBjYW5hbCIgYXJyYW5jYW4gZmlqYWRvcyBlbgovLyBJU1RSSUNFIHkgZGVzaGFiaWxpdGFkb3MsIHBhcmEgcXVlIHVuIHBlZGlkby9yZXBvcnRlIHBlcnNvbmFsIG5vIGFjYWJlIHBvciBlcnJvciBhIG5vbWJyZQovLyBkZSBvdHJhIHRpZW5kYS4gcHJlZml4IGVzICdvcmQnIG8gJ3NhbGUnIChpZGVudGlmaWNhIGxvcyBtZW5zYWplcy9zZWxlY3QgZGUgY2FkYSBmb3JtdWxhcmlvKS4KZnVuY3Rpb24gdG9nZ2xlQ2hhbm5lbExvY2soc2VsZWN0SWQsIHByZWZpeCl7CiAgY29uc3Qgc2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VsZWN0SWQpOwogIGlmKCFzZWwpIHJldHVybjsKICBjb25zdCBsb2NrZWRNc2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwcmVmaXgrJy1sb2NrZWQtbXNnJyk7CiAgY29uc3QgdW5sb2NrZWRNc2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwcmVmaXgrJy11bmxvY2tlZC1tc2cnKTsKICBpZihzZWwuZGlzYWJsZWQpewogICAgc2VsLmRpc2FibGVkID0gZmFsc2U7CiAgICBzZWwuZm9jdXMoKTsKICAgIGlmKGxvY2tlZE1zZykgbG9ja2VkTXNnLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpOwogICAgaWYodW5sb2NrZWRNc2cpIHVubG9ja2VkTXNnLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpOwogIH0gZWxzZSB7CiAgICBzZWwuZGlzYWJsZWQgPSB0cnVlOwogICAgcmVzZXRDaGFubmVsU2VsZWN0VG9TZWxmKHNlbGVjdElkKTsKICAgIGlmKGxvY2tlZE1zZykgbG9ja2VkTXNnLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpOwogICAgaWYodW5sb2NrZWRNc2cpIHVubG9ja2VkTXNnLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpOwogIH0KfQpmdW5jdGlvbiBmb3JjZVJlbG9ja0NoYW5uZWwoc2VsZWN0SWQsIHByZWZpeCl7CiAgY29uc3Qgc2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VsZWN0SWQpOwogIGlmKHNlbCAmJiAhc2VsLmRpc2FibGVkKSB0b2dnbGVDaGFubmVsTG9jayhzZWxlY3RJZCwgcHJlZml4KTsKfQphc3luYyBmdW5jdGlvbiBib290KCl7CiAgYXdhaXQgbG9hZFNpdGVTZXR0aW5ncygpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYWxlLW1vbnRoJykuaW5uZXJIVE1MID0gbW9udGhPcHRpb25zSHRtbCgxNSwgMCk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbXNhbGUtbW9udGgnKS5pbm5lckhUTUwgPSBtb250aE9wdGlvbnNIdG1sKDE1LCAwKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGlzdG9yaWFsLWZpbHRlci1tb250aCcpLmlubmVySFRNTCA9IG1vbnRoT3B0aW9uc0h0bWwoMjQsIDAsIHtibGFua0xhYmVsOidUb2Rvcyd9KTsKICBidWlsZEV4dHJhVHlwZUJ1dHRvbnMoKTsKICBidWlsZEFkbWluRXh0cmFQZWRjYXJkcygpOwogIGF3YWl0IGxvYWRJbGx1c3RyYXRpb25zKCk7CiAgcmVuZGVyQ2F0YWxvZygpOwogIHBvcHVsYXRlU2VsZWN0KCdvcmQtY2hhbm5lbCcpOwogIHBvcHVsYXRlU2VsZWN0KCdzYWxlLWNoYW5uZWwnKTsKICBhcHBseURlZmF1bHRDaGFubmVsKCk7CiAgLy8gUGFyYSBlbCBtYWVzdHJvLCBlc3RvcyBzZWxlY3RzIGFycmFuY2FuIGJsb3F1ZWFkb3MgZW4gSVNUUklDRSAoc3UgcHJvcGlvIHBlZGlkby9yZXBvcnRlKQogIC8vIHBhcmEgZXZpdGFyIHF1ZSBwb3IgZXJyb3IgcXVlZGUgYSBub21icmUgZGUgb3RyYSB0aWVuZGE7IHB1ZWRlIGRlc2Jsb3F1ZWFybG9zIGEgcHJvcMOzc2l0bwogIC8vIGNvbiBlbCBlbmxhY2UgZGUgYWJham8uIFBhcmEgdW5hIHRpZW5kYSBjb24gc3UgcHJvcGlvIGFjY2Vzbywgc2lndWVuIGJsb3F1ZWFkb3Mgc2llbXByZQogIC8vIGVuIHN1IHByb3BpbyBjYW5hbCwgc2luIGVzZSBlbmxhY2UgKG5vIHRpZW5lIHNlbnRpZG8gcGFyYSBlbGxhcykuCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29yZC1jaGFubmVsJykuZGlzYWJsZWQgPSB0cnVlOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYWxlLWNoYW5uZWwnKS5kaXNhYmxlZCA9IHRydWU7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29yZC1jaGFubmVsLWxvY2stbXNnJykuY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJywgISFsb2NrZWRDaGFubmVsKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FsZS1jaGFubmVsLWxvY2stbXNnJykuY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJywgISFsb2NrZWRDaGFubmVsKTsKICAvLyAxOS8wOS8yMDI2OiB1bmEgdGllbmRhIG5vIGVsaWdlIHRpZW5kYSDigJQgc2UgbGUgbXVlc3RyYSBzb2xvIHN1IG5vbWJyZSwgc2luIGRlc3BsZWdhYmxlLgogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcmQtY2hhbm5lbC13cmFwJykuY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJywgISFsb2NrZWRDaGFubmVsKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FsZS1jaGFubmVsLXdyYXAnKS5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nLCAhIWxvY2tlZENoYW5uZWwpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcmQtZm9yJykuY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJywgIWxvY2tlZENoYW5uZWwpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYWxlLWZvcicpLmNsYXNzTGlzdC50b2dnbGUoJ2hpZGRlbicsICFsb2NrZWRDaGFubmVsKTsKICBpZihsb2NrZWRDaGFubmVsKXsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcmQtZm9yLW5hbWUnKS50ZXh0Q29udGVudCA9IGxvY2tlZENoYW5uZWwubmFtZTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYWxlLWZvci1uYW1lJykudGV4dENvbnRlbnQgPSBsb2NrZWRDaGFubmVsLm5hbWU7CiAgfQogIHVwZGF0ZVNvbGRUaXRsZSgpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduYXYtYWRtaW4nKS5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nLCAhIWxvY2tlZENoYW5uZWwpOwogIHNldEhlYWRlclVzZXJOYW1lKGxvY2tlZENoYW5uZWwgPyBsb2NrZWRDaGFubmVsLm5hbWUgOiAnSVNUUklDRSAobWFlc3RybyknKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXNlci1tZW51LWJpbGxpbmcnKS5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nLCAhbG9ja2VkQ2hhbm5lbCB8fCBpc0RlbW9Nb2RlKCkpOwogIC8vIEN1ZW50YSBEZW1vOiBwdWVkZSBuYXZlZ2FyIHkgcHJvYmFyIGVsIGZsdWpvIGVudGVybyAoY2F0w6Fsb2dvLCBwZWRpZG9zLCB2ZW50YXMgeSBzdG9jaykgcGFyYQogIC8vIHF1ZSB1bmEgdGllbmRhIGZ1dHVyYSB2ZWEgY8OzbW8gZGUgZsOhY2lsIGVzIGRlIHVzYXIg4oCUIHBlcm8gbmFkYSBkZSBsbyBxdWUgImVudsOtYSIgYXF1w60gdG9jYSBsYQogIC8vIGJhc2UgZGUgZGF0b3MgcmVhbCAodmVyIGNvbmZpcm1TdWJtaXRPcmRlci9jb25maXJtU3VibWl0U2FsZXMpLCB5IHVuIGF2aXNvIGZpam8gZW4gbGEgY2FiZWNlcmEKICAvLyBzZSBsbyByZWN1ZXJkYSB0b2RvIGVsIHJhdG8gcGFyYSBxdWUgbm8gc2UgbGxldmUgdW5hIHNvcnByZXNhLgogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZW1vLWJhbm5lcicpLmNsYXNzTGlzdC50b2dnbGUoJ2hpZGRlbicsICFpc0RlbW9Nb2RlKCkpOwogIG9yZGVyQ2FydCA9IFtdOwogIHJlbmRlck9yZGVySXRlbXMoKTsKICBzZXRPcmRlclByb2R1Y3RUeXBlKG9yZGVyUHJvZHVjdFR5cGUpOyAvLyB0ZXh0byBkZWwgYm90w7NuICIrIEHDsWFkaXIg4oCmIiB5YSBlbiBlbCBpZGlvbWEgZWxlZ2lkbwogIHNldFNhbGVQcm9kdWN0VHlwZShzYWxlUHJvZHVjdFR5cGUpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYWxlLWl0ZW1zJykuaW5uZXJIVE1MPScnOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteS1vcmRlcnMtYmxvY2snKS5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nLCAhbXlPcmRlcnNDaGFubmVsSWQoKSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pc3RvY2stc3RhdHMnKS5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nLCAhbG9ja2VkQ2hhbm5lbCk7CiAgaWYobXlPcmRlcnNDaGFubmVsSWQoKSkgbG9hZE15T3JkZXJzKCk7CiAgbG9hZFN0b3JlSW5zaWdodHMoKTsKICBjaGVja0FkbWluU2Vzc2lvbigpOwp9Ci8vIDE5LzA5LzIwMjY6IGNvbiBlbCBzdG9jayB5IGxhcyB2ZW50YXMgZGUgbGEgcHJvcGlhIHRpZW5kYSBzZSBlbnNlw7FhICJUaWVuZXMgWCIgZW4gZWwgY2F0w6Fsb2dvLAovLyBsYSBzdWdlcmVuY2lhIGRlIHJlcG9uZXIgbG8gdmVuZGlkbyBlbCDDumx0aW1vIG1lcyB5IGVsIGF2aXNvIGRlIHZlbnRhcyBzaW4gcmVwb3J0YXIuCmxldCBzdG9yZVN0b2NrQnlJbGwgPSB7fTsgICAvLyBpbGx1c3RyYXRpb25faWQgLT4gdW5pZGFkZXMgcXVlIGxlIHF1ZWRhbiAodG9kYXMgbGFzIG1lZGlkYXMpCmxldCBzdG9yZVN0b2NrQnlJbGxGbXQgPSB7fTsgLy8gaWxsdXN0cmF0aW9uX2lkIC0+IHtmb3JtYXRvOiB1bmlkYWRlc30gKDA2LzEwOiBwYXJhIGV4cGxpY2FybG8gZW4gbGEgZmljaGEpCmxldCBzdG9yZUxhc3RNb250aFNhbGVzID0gbnVsbDsgLy8ge2xhYmVsLCBpdGVtczpbe3JlZiwgaWxsdXN0cmF0aW9uX2lkLCBmb3JtYXQsIHF1YW50aXR5fV19CmFzeW5jIGZ1bmN0aW9uIGxvYWRTdG9yZUluc2lnaHRzKCl7CiAgc3RvcmVTdG9ja0J5SWxsID0ge307IHN0b3JlU3RvY2tCeUlsbEZtdCA9IHt9OyBzdG9yZUxhc3RNb250aFNhbGVzID0gbnVsbDsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FsZXMtcmVtaW5kZXInKS5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVvcmRlci1zdWdnZXN0aW9uJykuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7CiAgaWYoIWxvY2tlZENoYW5uZWwgfHwgIWxvY2tlZENoYW5uZWxQYXNzd29yZCkgcmV0dXJuOwogIGNvbnN0IFtzdG9ja1Jlcywgc2FsZXNSZXNdID0gYXdhaXQgUHJvbWlzZS5hbGwoWwogICAgc2IucnBjKCdnZXRfc3RvcmVfc3RvY2snLCB7IGlucHV0X2NoYW5uZWxfaWQ6IGxvY2tlZENoYW5uZWwuaWQsIGlucHV0X3Bhc3N3b3JkOiBsb2NrZWRDaGFubmVsUGFzc3dvcmQgfSksCiAgICBzYi5ycGMoJ2dldF9zdG9yZV9tb250aGx5X3NhbGVzJywgeyBpbnB1dF9jaGFubmVsX2lkOiBsb2NrZWRDaGFubmVsLmlkLCBpbnB1dF9wYXNzd29yZDogbG9ja2VkQ2hhbm5lbFBhc3N3b3JkIH0pCiAgXSk7CiAgY29uc3Qgc3RvY2sgPSBzdG9ja1Jlcy5lcnJvciA\/IFtdIDogKHN0b2NrUmVzLmRhdGEgfHwgW10pOwogIGNvbnN0IHNhbGVzID0gc2FsZXNSZXMuZXJyb3IgPyBbXSA6IChzYWxlc1Jlcy5kYXRhIHx8IFtdKTsKICBzdG9jay5mb3JFYWNoKHI9PnsgY29uc3QgbGVmdCA9IChyLmVudHJlZ2Fkb3x8MCkgLSAoci52ZW5kaWRvfHwwKTsgaWYobGVmdD4wKXsKICAgIHN0b3JlU3RvY2tCeUlsbFtyLmlsbHVzdHJhdGlvbl9pZF0gPSAoc3RvcmVTdG9ja0J5SWxsW3IuaWxsdXN0cmF0aW9uX2lkXXx8MCkgKyBsZWZ0OwogICAgY29uc3QgZiA9IHN0b3JlU3RvY2tCeUlsbEZtdFtyLmlsbHVzdHJhdGlvbl9pZF0gPSBzdG9yZVN0b2NrQnlJbGxGbXRbci5pbGx1c3RyYXRpb25faWRdIHx8IHt9OwogICAgaWYoci5mb3JtYXQpIGZbci5mb3JtYXRdID0gKGZbci5mb3JtYXRdfHwwKSArIGxlZnQ7CiAgfSB9KTsKICByZW5kZXJDYXRhbG9nKCk7CiAgLy8gw5psdGltYSB2ZW50YSByZXBvcnRhZGEg4oaSIHN1Z2VyZW5jaWEgZGUgcmVwb25lcgogIGNvbnN0IG1vbnRocyA9IFsuLi5uZXcgU2V0KHNhbGVzLm1hcChzPT5zLm1vbnRoKSldLnNvcnQoKTsKICBjb25zdCBsYXN0TW9udGggPSBtb250aHNbbW9udGhzLmxlbmd0aC0xXTsKICBpZihsYXN0TW9udGgpewogICAgY29uc3QgaXRlbXMgPSBzYWxlcy5maWx0ZXIocz0+cy5tb250aD09PWxhc3RNb250aCAmJiBzLnVuaXRzX3NvbGQ+MCkubWFwKHM9Pih7cmVmOnMucmVmLCBpbGx1c3RyYXRpb25faWQ6cy5pbGx1c3RyYXRpb25faWQsIGZvcm1hdDpzLmZvcm1hdCwgcXVhbnRpdHk6cy51bml0c19zb2xkfSkpOwogICAgY29uc3QgZCA9IG5ldyBEYXRlKGxhc3RNb250aCArICdUMDA6MDA6MDAnKTsKICAgIHN0b3JlTGFzdE1vbnRoU2FsZXMgPSB7bGFiZWw6ICgpID0+IGQudG9Mb2NhbGVEYXRlU3RyaW5nKGFwcExvY2FsZSgpLCB7bW9udGg6J2xvbmcnLCB5ZWFyOidudW1lcmljJ30pLCBpdGVtc307CiAgICByZW5kZXJSZW9yZGVyU3VnZ2VzdGlvbigpOwogIH0KICAvLyBBdmlzbzogZWwgbWVzIHBhc2FkbyBzaW4gcmVwb3J0YXIgKHNvbG8gc2kgdGllbmUgYWxnbyBlbnRyZWdhZG8pCiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTsKICBjb25zdCBwcmV2ID0gbmV3IERhdGUobm93LmdldEZ1bGxZZWFyKCksIG5vdy5nZXRNb250aCgpLTEsIDEpOwogIGNvbnN0IHByZXZLZXkgPSBwcmV2LmdldEZ1bGxZZWFyKCkgKyAnLScgKyBTdHJpbmcocHJldi5nZXRNb250aCgpKzEpLnBhZFN0YXJ0KDIsJzAnKSArICctMDEnOwogIGNvbnN0IGhhc1N0b2NrID0gc3RvY2suc29tZShyPT4oci5lbnRyZWdhZG98fDApID4gMCk7CiAgaWYoaGFzU3RvY2sgJiYgIW1vbnRocy5pbmNsdWRlcyhwcmV2S2V5KSl7CiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYWxlcy1yZW1pbmRlcicpOwogICAgY29uc3QgbGFiZWwgPSBwcmV2LnRvTG9jYWxlRGF0ZVN0cmluZyhhcHBMb2NhbGUoKSwge21vbnRoOidsb25nJ30pOwogICAgZWwuaW5uZXJIVE1MID0gYCR7dCgnQcO6biBubyBub3MgaGFzIGNvbnRhZG8gdHVzIHZlbnRhcyBkZSB7bWVzfS4nLCB7bWVzOiAnPHN0cm9uZz4nK2xhYmVsKyc8L3N0cm9uZz4nfSl9IDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIHNtYWxsIiBvbmNsaWNrPSJnb1JlcG9ydE1vbnRoKCcke3ByZXZLZXkuc2xpY2UoMCw3KX0nKSI+UmVwb3J0YXIgYWhvcmE8L2J1dHRvbj4gPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJzYWxlcy1yZW1pbmRlci1jbG9zZSIgYXJpYS1sYWJlbD0iQ2VycmFyIGF2aXNvIiBvbmNsaWNrPSJ0aGlzLnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJykiPsOXPC9idXR0b24+YDsKICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpOwogIH0KfQpmdW5jdGlvbiBnb1JlcG9ydE1vbnRoKHltKXsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCduYXYgYnV0dG9uW2RhdGEtdGFiPSJ2ZW50YXMiXScpLmNsaWNrKCk7CiAgY29uc3Qgc2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbGUtbW9udGgnKTsKICBpZihzZWwpeyBzZWwudmFsdWUgPSB5bTsgc2VsLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnKSk7IH0KICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FsZXMtcmVtaW5kZXInKS5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTsKfQpmdW5jdGlvbiByZW5kZXJSZW9yZGVyU3VnZ2VzdGlvbigpewogIGNvbnN0IGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZW9yZGVyLXN1Z2dlc3Rpb24nKTsKICBjb25zdCBkYXRhID0gc3RvcmVMYXN0TW9udGhTYWxlczsKICBpZighYm94IHx8ICFkYXRhIHx8ICFkYXRhLml0ZW1zLmxlbmd0aCl7IGlmKGJveCkgYm94LmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpOyByZXR1cm47IH0KICBjb25zdCBhdmFpbCA9IGRhdGEuaXRlbXMuZmlsdGVyKGl0PT5pbGx1c3RyYXRpb25zLnNvbWUoeD0+eC5yZWY9PT1pdC5yZWYgfHwgeC5pZD09PWl0LmlsbHVzdHJhdGlvbl9pZCkpOwogIGlmKCFhdmFpbC5sZW5ndGgpeyBib3guY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7IHJldHVybjsgfQogIGNvbnN0IGxpc3QgPSBhdmFpbC5zbGljZSgwLDYpLm1hcChpdD0+YCR7ZXNjYXBlQXR0cihpdC5yZWYpfSAke2VzY2FwZUF0dHIoaXQuZm9ybWF0KX0gw5cke2l0LnF1YW50aXR5fWApLmpvaW4oJyDCtyAnKSArIChhdmFpbC5sZW5ndGg+NiA\/ICcgwrcgJyArIHQoJ3kge259IG3DoXMnLCB7bjogYXZhaWwubGVuZ3RoLTZ9KSA6ICcnKTsKICBib3guaW5uZXJIVE1MID0gYDxkaXY+PHN0cm9uZz7Cv1JlcG9uZXIgbG8gdmVuZGlkbz88L3N0cm9uZz4gJHt0KCdFbiB7bWVzfSB2ZW5kaXN0ZToge2xpc3RhfScsIHttZXM6IGRhdGEubGFiZWwoKSwgbGlzdGE6IGxpc3R9KX08L2Rpdj4KICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIHNtYWxsIiBvbmNsaWNrPSJhZGRMYXN0TW9udGhUb0NhcnQoKSI+QcOxYWRpciBlc2FzIGNhbnRpZGFkZXMgYWwgcGVkaWRvPC9idXR0b24+YDsKICBib3guY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7Cn0KZnVuY3Rpb24gYWRkTGFzdE1vbnRoVG9DYXJ0KCl7CiAgaWYoIXN0b3JlTGFzdE1vbnRoU2FsZXMpIHJldHVybjsKICBjb25zdCB7YWRkZWQsIG1pc3Npbmd9ID0gYWRkSXRlbXNUb0NhcnQoc3RvcmVMYXN0TW9udGhTYWxlcy5pdGVtcyk7CiAgY29uc3QgbXNnRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkLW1zZycpOwogIGlmKG1zZ0VsKSBtc2dFbC5pbm5lckhUTUwgPSBgPGRpdiBjbGFzcz0ibXNnIGluZm8iPiR7dCgnQcOxYWRpZG8ocykge259IGFydMOtY3VsbyhzKSBkZSBsbyB2ZW5kaWRvIGVuIHttZXN9LiBSZXZpc2EgbGFzIGNhbnRpZGFkZXMgeSBwdWxzYSB7YnRufS4nLCB7bjogYWRkZWQsIG1lczogc3RvcmVMYXN0TW9udGhTYWxlcy5sYWJlbCgpLCBidG46ICc8c3Ryb25nPicrdCgnRW52aWFyIHBlZGlkbycpKyc8L3N0cm9uZz4nfSl9JHttaXNzaW5nLmxlbmd0aCA\/ICcgJyArIHQoJ1lhIG5vIGVzdMOhbiBlbiBlbCBjYXTDoWxvZ286IHtsaXN0YX0uJywge2xpc3RhOiBlc2NhcGVBdHRyKG1pc3Npbmcuam9pbignLCAnKSl9KSA6ICcnfTwvZGl2PmA7Cn0KLy8gUGFyYSB1bmEgdGllbmRhIGNvbiBzdSBwcm9waW8gYWNjZXNvLCBlcyBzdSBjYW5hbCBibG9xdWVhZG8uIFBhcmEgZWwgbWFlc3RybyAocXVlIG5vIHRpZW5lCi8vIGNhbmFsIGJsb3F1ZWFkbyksIHVzYW1vcyBzdSBwcm9waW8gY2FuYWwgSVNUUklDRSDigJQgYXPDrSBzdXMgcGVkaWRvcyBwZXJzb25hbGVzIHRhbWJpw6luIGxsZXZhbgovLyBlbCBtaXNtbyBzZWd1aW1pZW50byBkZSBlc3RhZG8gKHBlbmRpZW50ZS9lbnZpYWRvL2NhbmNlbGFkbykgcXVlIHZlIGN1YWxxdWllciB0aWVuZGEsIGVuIHZlegovLyBkZSBxdWVkYXIgc2luIG5pbmfDum4gc2l0aW8gZG9uZGUgY29tcHJvYmFyIHNpIHlhIHNlIGVudmlhcm9uLgpmdW5jdGlvbiBteU9yZGVyc0NoYW5uZWxJZCgpewogIGlmKGxvY2tlZENoYW5uZWwpIHJldHVybiBsb2NrZWRDaGFubmVsLmlkOwogIGNvbnN0IHNlbGYgPSBjaGFubmVscy5maW5kKGMgPT4gL2lzdHJpY2UvaS50ZXN0KGMubmFtZXx8JycpKTsKICByZXR1cm4gc2VsZiA\/IHNlbGYuaWQgOiBudWxsOwp9CmFzeW5jIGZ1bmN0aW9uIGxvYWRNeU9yZGVycygpewogIGNvbnN0IGNoSWQgPSBteU9yZGVyc0NoYW5uZWxJZCgpOwogIGlmKCFjaElkKSByZXR1cm47CiAgLy8gVW5hIHRpZW5kYSBjb24gYWNjZXNvIHByb3BpbyBsZWUgc3VzIHBlZGlkb3MgcG9yIHVuYSBmdW5jacOzbiBxdWUgY29tcHJ1ZWJhIHN1IGNvbnRyYXNlw7FhIGVuCiAgLy8gZWwgc2Vydmlkb3IgKHlhIG5vIGhheSBsZWN0dXJhIHDDumJsaWNhIGRlIGxhIHRhYmxhIG9yZGVycykg4oCUIGVsIG1hZXN0cm8vYWRtaW4sIGNvbiBzZXNpw7NuCiAgLy8gcmVhbCBkZSBTdXBhYmFzZSBBdXRoLCBzaWd1ZSBsZXllbmRvIGRpcmVjdG8uCiAgaWYobG9ja2VkQ2hhbm5lbCl7CiAgICBjb25zdCB7IGRhdGEsIGVycm9yIH0gPSBhd2FpdCBzYi5ycGMoJ2dldF9zdG9yZV9vcmRlcnMnLCB7IGlucHV0X2NoYW5uZWxfaWQ6IGNoSWQsIGlucHV0X3Bhc3N3b3JkOiBsb2NrZWRDaGFubmVsUGFzc3dvcmQgfSk7CiAgICBpZihlcnJvcil7CiAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215LW9yZGVycy1saXN0Jyk7CiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteS1vcmRlcnMtYmxvY2snKT8uY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7CiAgICAgIGlmKGVsKSBlbC5pbm5lckhUTUwgPSAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLWVycm9yKTsiPicgKyB0KCdObyBzZSBwdWRpZXJvbiBjYXJnYXIgdHVzIHBlZGlkb3MuIFJldmlzYSB0dSBjb25leGnDs24geSB2dWVsdmUgYSBlbnRyYXIgZW4gUGVkaWRvcy4nKSArICc8L3A+JzsKICAgICAgcmV0dXJuOwogICAgfQogICAgcmVuZGVyTXlPcmRlcnMoZGF0YSB8fCBbXSk7CiAgICByZXR1cm47CiAgfQogIGNvbnN0IHtkYXRhfSA9IGF3YWl0IHNiLmZyb20oJ29yZGVycycpLnNlbGVjdCgnKiwgb3JkZXJfaXRlbXMoKiwgaWxsdXN0cmF0aW9ucyhyZWYsbmFtZSkpJykuZXEoJ2NoYW5uZWxfaWQnLCBjaElkKS5vcmRlcignY3JlYXRlZF9hdCcsIHthc2NlbmRpbmc6ZmFsc2V9KS5saW1pdCg1MCk7CiAgcmVuZGVyTXlPcmRlcnMoZGF0YSB8fCBbXSk7Cn0KbGV0IG15T3JkZXJzQ2FjaGUgPSBbXTsKLy8gMjYvMDkvMjAyNjogZmVjaGEgZGUgZW52w61vIHkgbsK6IGRlIHNlZ3VpbWllbnRvIChvIGVubGFjZSkgZGUgdW4gcGVkaWRvIGVudmlhZG8sIHBhcmEgbGEgdGllbmRhLgpmdW5jdGlvbiBzaGlwSW5mb0h0bWwobyl7CiAgaWYoby5zdGF0dXMhPT0nZW52aWFkbycgfHwgKCFvLnNoaXBwZWRfYXQgJiYgIW8udHJhY2tpbmcpKSByZXR1cm4gJyc7CiAgY29uc3QgcGFydHMgPSBbXTsKICBpZihvLnNoaXBwZWRfYXQpIHBhcnRzLnB1c2godCgnRW52aWFkbyBlbCB7ZmVjaGF9Jywge2ZlY2hhOiBuZXcgRGF0ZShvLnNoaXBwZWRfYXQrJ1QxMjowMDowMCcpLnRvTG9jYWxlRGF0ZVN0cmluZyhhcHBMb2NhbGUoKSl9KSk7CiAgaWYoby50cmFja2luZyl7CiAgICBjb25zdCB0ciA9IFN0cmluZyhvLnRyYWNraW5nKTsKICAgIGNvbnN0IHNob3duID0gL15odHRwcz86XC9cLy9pLnRlc3QodHIpID8gYDxhIGhyZWY9IiR7ZXNjYXBlQXR0cih0cil9IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciI+JHtlc2NhcGVBdHRyKHRyKX08L2E+YCA6IGA8c3Ryb25nPiR7ZXNjYXBlQXR0cih0cil9PC9zdHJvbmc+YDsKICAgIHBhcnRzLnB1c2goYCR7dCgnU2VndWltaWVudG86Jyl9ICR7c2hvd259YCk7CiAgfQogIHJldHVybiBgPGRpdiBzdHlsZT0ibWFyZ2luOjAgMCA2cHg7cGFkZGluZzo2cHggOHB4O2JhY2tncm91bmQ6dmFyKC0tbmllYmxhLWNsYXJhKTtib3JkZXItcmFkaXVzOjZweDtjb2xvcjp2YXIoLS1uaWVibGEtb3NjKTsiPiR7cGFydHMuam9pbignIMK3ICcpfTwvZGl2PmA7Cn0KZnVuY3Rpb24gcmVuZGVyTXlPcmRlcnMob3JkZXJzKXsKICBteU9yZGVyc0NhY2hlID0gb3JkZXJzIHx8IFtdOwogIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215LW9yZGVycy1saXN0Jyk7CiAgaWYoIWVsKSByZXR1cm47CiAgaWYoIW9yZGVycy5sZW5ndGgpeyBlbC5pbm5lckhUTUwgPSAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXN1YXZlKTsiPlRvZGF2w61hIG5vIGhhcyBoZWNobyBuaW5nw7puIHBlZGlkby48L3A+JzsgcmV0dXJuOyB9CiAgZWwuaW5uZXJIVE1MID0gb3JkZXJzLm1hcCgobyxpZHgpID0+IGAKICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MTBweCAxMnB4O21hcmdpbi1ib3R0b206OHB4O2ZvbnQtc2l6ZToxM3B4OyI+CiAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDtjdXJzb3I6cG9pbnRlcjsiIG9uY2xpY2s9InRvZ2dsZU15T3JkZXJEZXRhaWwoJHtpZHh9KSI+CiAgICAgICAgPHN0cm9uZz4ke25ldyBEYXRlKG8uY3JlYXRlZF9hdCkudG9Mb2NhbGVEYXRlU3RyaW5nKGFwcExvY2FsZSgpKX08L3N0cm9uZz4KICAgICAgICA8c3BhbiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4OyI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idGFnICR7by5zdGF0dXN9Ij4ke28uc3RhdHVzfTwvc3Bhbj4KICAgICAgICAgIDxzcGFuIGlkPSJteS1vcmRlci1jYXJldC0ke2lkeH0iIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij7ilrggdmVyIGRldGFsbGU8L3NwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBpZD0ibXktb3JkZXItZGV0YWlsLSR7aWR4fSIgY2xhc3M9ImhpZGRlbiIgc3R5bGU9Im1hcmdpbi10b3A6NnB4O2NvbG9yOnZhcigtLXN1YXZlKTsiPgogICAgICAgICR7c2hpcEluZm9IdG1sKG8pfQogICAgICAgIDxkaXY+JHsoby5vcmRlcl9pdGVtc3x8W10pLm1hcChpdD0+YAogICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxMHB4O3BhZGRpbmc6MnB4IDA7Ij4KICAgICAgICAgICAgPHNwYW4+JHtpdC5pbGx1c3RyYXRpb25zPy5yZWZ8fCcnfSDigJQgJHtpdC5pbGx1c3RyYXRpb25zPy5uYW1lfHwnJ30gPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXN1YXZlKTsiPigke2l0LmZvcm1hdH0pPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZsZXgtc2hyaW5rOjA7Zm9udC13ZWlnaHQ6NjAwOyI+w5cke2l0LnF1YW50aXR5fTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PmApLmpvaW4oJycpfTwvZGl2PgogICAgICAgICR7by5ub3RlcyA\/IGA8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOjRweDtmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij4ke3QoJ05vdGFzOicpfSAke2VzY2FwZUF0dHIoby5ub3Rlcyl9PC9kaXY+YCA6ICcnfQogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIHNlY29uZGFyeSBzbWFsbCIgc3R5bGU9Im1hcmdpbi10b3A6OHB4OyIgb25jbGljaz0icmVwZWF0TXlPcmRlcigke2lkeH0pIj7ihrsgUmVwZXRpciBlc3RlIHBlZGlkbzwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PmApLmpvaW4oJycpOwp9Ci8vIDE5LzA5LzIwMjY6IGNhcmdhIGVuICJOdWV2byBwZWRpZG8iIGxvIG1pc21vIHF1ZSB1biBwZWRpZG8gYW50ZXJpb3IgKGxvIG3DoXMgaGFiaXR1YWw6IHJlcG9uZXIpLgovLyBMb3MgYXJ0w61jdWxvcyBzZSBidXNjYW4gcG9yIHJlZmVyZW5jaWE7IHNpIGFsZ3VubyB5YSBubyBlc3TDoSBlbiBlbCBjYXTDoWxvZ28gc2UgYXZpc2EgeSBzZSBzYWx0YS4KLy8gTnVuY2EgZW52w61hIG5hZGE6IGxhIHRpZW5kYSByZXZpc2EgbGFzIGNhbnRpZGFkZXMgeSBwdWxzYSAiRW52aWFyIHBlZGlkbyIgY29tbyBzaWVtcHJlLgpmdW5jdGlvbiBhZGRJdGVtc1RvQ2FydChpdGVtcyl7CiAgbGV0IGFkZGVkID0gMDsgY29uc3QgbWlzc2luZyA9IFtdOwogIGl0ZW1zLmZvckVhY2goaXQ9PnsKICAgIGNvbnN0IGlsbCA9IGlsbHVzdHJhdGlvbnMuZmluZCh4PT54LnJlZj09PWl0LnJlZikgfHwgaWxsdXN0cmF0aW9ucy5maW5kKHg9PnguaWQ9PT1pdC5pbGx1c3RyYXRpb25faWQpOwogICAgaWYoIWlsbCl7IG1pc3NpbmcucHVzaChpdC5yZWYgfHwgJz8nKTsgcmV0dXJuOyB9CiAgICBjb25zdCBmbXRzID0gaWxsLmZvcm1hdHNfYXZhaWxhYmxlIHx8IFtdOwogICAgY29uc3QgZm9ybWF0ID0gZm10cy5pbmNsdWRlcyhpdC5mb3JtYXQpID8gaXQuZm9ybWF0IDogKGZtdHNbMF0gfHwgaXQuZm9ybWF0KTsKICAgIGNvbnN0IGV4ID0gb3JkZXJDYXJ0LmZpbmQoeD0+eC5pbGx1c3RyYXRpb25faWQ9PT1pbGwuaWQgJiYgeC5mb3JtYXQ9PT1mb3JtYXQpOwogICAgaWYoZXgpIGV4LnF1YW50aXR5ICs9IGl0LnF1YW50aXR5OyBlbHNlIG9yZGVyQ2FydC5wdXNoKHtpbGx1c3RyYXRpb25faWQ6IGlsbC5pZCwgZm9ybWF0LCBxdWFudGl0eTogaXQucXVhbnRpdHl9KTsKICAgIGFkZGVkKys7CiAgfSk7CiAgcmVuZGVyT3JkZXJJdGVtcygpOwogIHJldHVybiB7YWRkZWQsIG1pc3Npbmd9Owp9CmZ1bmN0aW9uIHJlcGVhdE15T3JkZXIoaWR4KXsKICBjb25zdCBvID0gbXlPcmRlcnNDYWNoZVtpZHhdOwogIGlmKCFvKSByZXR1cm47CiAgY29uc3Qge2FkZGVkLCBtaXNzaW5nfSA9IGFkZEl0ZW1zVG9DYXJ0KChvLm9yZGVyX2l0ZW1zfHxbXSkubWFwKGl0PT4oe3JlZjogaXQuaWxsdXN0cmF0aW9ucz8ucmVmLCBpbGx1c3RyYXRpb25faWQ6IGl0LmlsbHVzdHJhdGlvbl9pZCwgZm9ybWF0OiBpdC5mb3JtYXQsIHF1YW50aXR5OiBpdC5xdWFudGl0eX0pKSk7CiAgY29uc3QgbXNnRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkLW1zZycpOwogIGlmKG1zZ0VsKSBtc2dFbC5pbm5lckhUTUwgPSBgPGRpdiBjbGFzcz0ibXNnIGluZm8iPiR7dCgnQcOxYWRpZG8ocykge259IGFydMOtY3VsbyhzKSBkZWwgcGVkaWRvIGRlbCB7ZmVjaGF9LiBSZXZpc2EgbGFzIGNhbnRpZGFkZXMgeSBwdWxzYSB7YnRufS4nLCB7bjogYWRkZWQsIGZlY2hhOiBuZXcgRGF0ZShvLmNyZWF0ZWRfYXQpLnRvTG9jYWxlRGF0ZVN0cmluZyhhcHBMb2NhbGUoKSksIGJ0bjogJzxzdHJvbmc+Jyt0KCdFbnZpYXIgcGVkaWRvJykrJzwvc3Ryb25nPid9KX0ke21pc3NpbmcubGVuZ3RoID8gJyAnICsgdCgnWWEgbm8gZXN0w6FuIGVuIGVsIGNhdMOhbG9nbzoge2xpc3RhfS4nLCB7bGlzdGE6IGVzY2FwZUF0dHIobWlzc2luZy5qb2luKCcsICcpKX0pIDogJyd9PC9kaXY+YDsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkZXItZm9ybScpLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjonc21vb3RoJywgYmxvY2s6J3N0YXJ0J30pOwp9CmZ1bmN0aW9uIHRvZ2dsZU15T3JkZXJEZXRhaWwoaWR4KXsKICBjb25zdCBkZXRhaWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXktb3JkZXItZGV0YWlsLScraWR4KTsKICBjb25zdCBjYXJldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteS1vcmRlci1jYXJldC0nK2lkeCk7CiAgaWYoIWRldGFpbCkgcmV0dXJuOwogIGNvbnN0IHdpbGxTaG93ID0gZGV0YWlsLmNsYXNzTGlzdC5jb250YWlucygnaGlkZGVuJyk7CiAgZGV0YWlsLmNsYXNzTGlzdC50b2dnbGUoJ2hpZGRlbicpOwogIGlmKGNhcmV0KSBjYXJldC50ZXh0Q29udGVudCA9IHdpbGxTaG93ID8gJ+KWviBvY3VsdGFyJyA6ICfilrggdmVyIGRldGFsbGUnOwp9Cgphc3luYyBmdW5jdGlvbiBsb2FkSWxsdXN0cmF0aW9ucygpewogIGNvbnN0IHtkYXRhfSA9IGF3YWl0IHNiLmZyb20oJ2lsbHVzdHJhdGlvbnMnKS5zZWxlY3QoJyonKS5lcSgnYWN0aXZlJywgdHJ1ZSkub3JkZXIoJ3JlZicpOwogIGlsbHVzdHJhdGlvbnMgPSBzb3J0QnlOYW1lRXMoZGF0YSB8fCBbXSk7Cn0KZnVuY3Rpb24gcG9wdWxhdGVTZWxlY3QoaWQpewogIGNvbnN0IHNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKICAvLyBMYSB0aWVuZGEgIkRlbW8iIG51bmNhIGRlYmUgcG9kZXIgZWxlZ2lyc2UgYXF1w60gY3VhbmRvIHF1aWVuIG1pcmEgZXN0byBlcyBlbCBtYWVzdHJvL2FkbWluCiAgLy8gKHBhcmEgcXVlIHVuIHBlZGlkby92ZW50YSBkZSB2ZXJkYWQgbm8gYWNhYmUgcG9yIGVycm9yIGEgbm9tYnJlIGRlIGxhIGRlbW8pIOKAlCBwZXJvIHNpIHF1aWVuCiAgLy8gaGEgZW50cmFkbyBFUyBsYSBwcm9waWEgY3VlbnRhIERlbW8sICJjaGFubmVscyIgc29sbyBjb250aWVuZSBzdSBwcm9waW8gY2FuYWwgKHZlciB0cnlHYXRlKSB5CiAgLy8gbmVjZXNpdGEgdmVyc2UgYSBzw60gbWlzbWEgZW4gc3UgcHJvcGlvIGRlc3BsZWdhYmxlIHBhcmEgcG9kZXIgdXNhciBlbCBmb3JtdWxhcmlvLCBhc8OtIHF1ZSBlc2EKICAvLyBleGNsdXNpw7NuIG51bmNhIHNlIGFwbGljYSBhIHN1IHByb3BpbyBjYW5hbCBibG9xdWVhZG8uCiAgc2VsLmlubmVySFRNTCA9IGNoYW5uZWxzLmZpbHRlcihjPT4hYy5pc19kZW1vIHx8IGMuaWQ9PT1sb2NrZWRDaGFubmVsPy5pZCkubWFwKGM9PmA8b3B0aW9uIHZhbHVlPSIke2MuaWR9Ij4ke2VzY2FwZUF0dHIoYy5uYW1lKX08L29wdGlvbj5gKS5qb2luKCcnKTsKfQoKLy8gLS0tLS0tLS0tLSBDQVRBTE9HIC0tLS0tLS0tLS0KZnVuY3Rpb24gc2V0U2l6ZShzLCBzaW5QaW50YXIpewogIGNhdGFsb2dTaXplID0gczsKICBbJ3NtYWxsJywnbGFyZ2UnLCdsaXN0YSddLmZvckVhY2goaz0+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N6LScrayk\/LmNsYXNzTGlzdC50b2dnbGUoJ2FjdGl2ZScsIHM9PT1rKSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdGFsb2ctZ3JpZCcpLmNsYXNzTmFtZSA9ICdncmlkICcgKyBzOwogIHRyeSB7IGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdpc3RyaWNlX3Zpc3RhX2NhdGFsb2dvJywgcyk7IH0gY2F0Y2goZSl7fQogIGlmKCFzaW5QaW50YXIpIHJlbmRlckNhdGFsb2coKTsgLy8gUGVxdWXDsW8gdXNhIG1pbmlhdHVyYXM7IEdyYW5kZSwgbGEgZm90byBncmFuZGU7IExpc3RhLCBsYSBob2phIGRlIHBlZGlkbwp9Ci8vIExhIHZpc3RhIGVsZWdpZGEgKFBlcXVlw7FvIC8gR3JhbmRlIC8gTGlzdGEpIHNlIHJlY3VlcmRhIGVuIGVzZSBuYXZlZ2Fkb3IuCmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKT0+ewogIHRyeSB7IGNvbnN0IHYgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnaXN0cmljZV92aXN0YV9jYXRhbG9nbycpOyBpZihbJ3NtYWxsJywnbGFyZ2UnLCdsaXN0YSddLmluY2x1ZGVzKHYpICYmIHYhPT0nc21hbGwnKSBzZXRTaXplKHYsIHRydWUpOyB9IGNhdGNoKGUpe30KfSk7Ci8vIFRhbmRhIDMgKFAyMCwgMDYvMTAvMjAyNik6IMKrTGlzdGHCuyA9IGhvamEgZGUgcGVkaWRvIHLDoXBpZGEgcGFyYSBwZWRpZG9zIGdyYW5kZXMgKGNvbW8gbG9zIDI4IGRlIFZhaWRoZSkuIENhZGEgYXJ0w61jdWxvIGVuCi8vIHVuYSBmaWxhIGNvbiBmb3RvIHBlcXVlw7FhIHkgdW4gKyAvIOKIkiBwb3IgZm9ybWF0byBxdWUgc3VtYSBvIHF1aXRhIGRlbCBwZWRpZG8gYWwgbW9tZW50bywgc2luIGFicmlyIGxhIGZpY2hhLgpmdW5jdGlvbiBjYW50aWRhZEVuUGVkaWRvKGlkLCBmKXsgY29uc3QgciA9IG9yZGVyQ2FydC5maW5kKHg9PnguaWxsdXN0cmF0aW9uX2lkPT09aWQgJiYgeC5mb3JtYXQ9PT1mKTsgcmV0dXJuIHIgPyAocGFyc2VJbnQoci5xdWFudGl0eSwxMCl8fDApIDogMDsgfQpmdW5jdGlvbiBmaWxhSG9qYUh0bWwoaSl7CiAgY29uc3QgZm10cyA9IGkuZm9ybWF0c19hdmFpbGFibGUgfHwgW107CiAgY29uc3QgYWJyZSA9IGBvbmNsaWNrPSdvcGVuTW9kYWwoJHtKU09OLnN0cmluZ2lmeShpLnJlZil9KSdgOwogIGNvbnN0IHRoID0gaS5pbWFnZV91cmwgPyBgPGltYCtgZyBzcmM9IiR7dGh1bWJTcmMoaSl9IiBhbHQ9IiIgbG9hZGluZz0ibGF6eSI+YCA6IGA8ZGl2IGNsYXNzPSJub2ltZyI+JHtOT0lNR19JQ09OfTwvZGl2PmA7CiAgY29uc3QgdGllbmRhID0gc3RvcmVTdG9ja0J5SWxsW2kuaWRdID8gYDxzcGFuIGNsYXNzPSJmaC10aWVuZGEiPiR7dCgnRW4gdHUgdGllbmRhOiB7bn0nLCB7bjogc3RvcmVTdG9ja0J5SWxsW2kuaWRdfSl9PC9zcGFuPmAgOiAnJzsKICByZXR1cm4gYDxkaXYgY2xhc3M9ImZpbGEtaG9qYSIgZGF0YS1pZD0iJHtpLmlkfSI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImZoLWZvdG8iICR7YWJyZX0gYXJpYS1sYWJlbD0iJHtlc2NhcGVBdHRyKGkubmFtZXx8aS5yZWYpfSI+JHt0aH08L2J1dHRvbj4KICAgIDxkaXYgY2xhc3M9ImZoLW5vbWJyZSIgJHthYnJlfT48c3BhbiBjbGFzcz0iZmgtcmVmIj4ke2kucmVmfSR7aXNOZXdJdGVtKGkpID8gJyDCtyA8c3BhbiBjbGFzcz0iZmgtbmV3Ij5ORVc8L3NwYW4+JyA6ICcnfTwvc3Bhbj4ke2VzY2FwZUF0dHIoaS5uYW1lfHwnJyl9JHt0aWVuZGF9PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJmaC1mb3JtYXRvcyI+JHtmbXRzLm1hcChmPT57IGNvbnN0IHEgPSBjYW50aWRhZEVuUGVkaWRvKGkuaWQsIGYpOyByZXR1cm4gYDxkaXYgY2xhc3M9ImZoLWZtdCR7cT8nIGNvbic6Jyd9Ij48c3BhbiBjbGFzcz0iZmgtZm10LW5vbWJyZSI+JHtmfTwvc3Bhbj48ZGl2IGNsYXNzPSJxdHktc3RlcHBlciBmaC1wYXNvIj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgb25jbGljaz0iaG9qYUNhbWJpYSgnJHtpLmlkfScsJyR7Zn0nLC0xKSIgYXJpYS1sYWJlbD0iJHt0KCdVbmEgbWVub3MnKX0gwrcgJHtmfSIgJHtxPycnOidkaXNhYmxlZCd9PuKIkjwvYnV0dG9uPjxzcGFuPiR7cX08L3NwYW4+PGJ1dHRvbiB0eXBlPSJidXR0b24iIG9uY2xpY2s9ImhvamFDYW1iaWEoJyR7aS5pZH0nLCcke2Z9JywxKSIgYXJpYS1sYWJlbD0iJHt0KCdVbmEgbcOhcycpfSDCtyAke2Z9Ij4rPC9idXR0b24+PC9kaXY+PC9kaXY+YDsgfSkuam9pbignJyl9PC9kaXY+CiAgPC9kaXY+YDsKfQpmdW5jdGlvbiBob2phQ2FtYmlhKGlkLCBmLCBkKXsKICBjb25zdCBrID0gb3JkZXJDYXJ0LmZpbmRJbmRleCh4PT54LmlsbHVzdHJhdGlvbl9pZD09PWlkICYmIHguZm9ybWF0PT09Zik7CiAgaWYoayA+PSAwKXsgY29uc3QgbiA9IChwYXJzZUludChvcmRlckNhcnRba10ucXVhbnRpdHksMTApfHwwKSArIGQ7IGlmKG4gPD0gMCkgb3JkZXJDYXJ0LnNwbGljZShrLDEpOyBlbHNlIG9yZGVyQ2FydFtrXS5xdWFudGl0eSA9IG47IH0KICBlbHNlIGlmKGQgPiAwKSBvcmRlckNhcnQucHVzaCh7aWxsdXN0cmF0aW9uX2lkOmlkLCBmb3JtYXQ6ZiwgcXVhbnRpdHk6MX0pOwogIHJlbmRlck9yZGVySXRlbXMoKTsgLy8gY29udGFkb3IgZGUgwqtQZWRpZG9zwrssIHRvdGFsZXMgeSBtYXJjYXMKICBjb25zdCBmaWxhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgI2NhdGFsb2ctZ3JpZCAuZmlsYS1ob2phW2RhdGEtaWQ9IiR7aWR9Il1gKTsKICBjb25zdCBpbGwgPSBpbGx1c3RyYXRpb25zLmZpbmQoeD0+eC5pZD09PWlkKTsKICBpZihmaWxhICYmIGlsbCkgZmlsYS5vdXRlckhUTUwgPSBmaWxhSG9qYUh0bWwoaWxsKTsKfQpmdW5jdGlvbiBhbGxUeXBlS2V5cygpeyByZXR1cm4gWydsYW1pbmEnLCdsaWJyZXRhJywgLi4uRVhUUkFfU1RPQ0tfVFlQRVMubWFwKHg9Pngua2V5KV07IH0KZnVuY3Rpb24gdHlwZU1ldGEoa2V5KXsKICBpZihrZXk9PT0nbGlicmV0YScpIHJldHVybiB7bGFiZWw6dCgnTGlicmV0YScpLCBwbHVyYWw6dCgnbGlicmV0YXMnKX07CiAgY29uc3QgeCA9IEVYVFJBX1NUT0NLX1RZUEVTLmZpbmQoeT0+eS5rZXk9PT1rZXkpOwogIGlmKHgpeyBjb25zdCBsYWIgPSB4LnNpbmd1bGFyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3guc2luZ3VsYXIuc2xpY2UoMSk7IHJldHVybiB7bGFiZWw6IHQobGFiKSwgcGx1cmFsOiB0KHgubGFiZWwudG9Mb3dlckNhc2UoKSl9OyB9CiAgcmV0dXJuIHtsYWJlbDp0KCdMw6FtaW5hJyksIHBsdXJhbDp0KCdsw6FtaW5hcycpfTsKfQpmdW5jdGlvbiBpc0V4dHJhVHlwZVZpc2libGUodCl7IHJldHVybiBzaXRlU2V0dGluZ3NDYWNoZVt0LnNldHRpbmdLZXldID09PSAndHJ1ZSc7IH0KYXN5bmMgZnVuY3Rpb24gbG9hZFNpdGVTZXR0aW5ncygpewogIGNvbnN0IHtkYXRhfSA9IGF3YWl0IHNiLmZyb20oJ3NpdGVfc2V0dGluZ3MnKS5zZWxlY3QoJyonKTsKICBzaXRlU2V0dGluZ3NDYWNoZSA9IHt9OwogIChkYXRhfHxbXSkuZm9yRWFjaChyPT57IHNpdGVTZXR0aW5nc0NhY2hlW3Iua2V5XSA9IHIudmFsdWU7IH0pOwp9Ci8vIExvcyBib3RvbmVzIGRlIHRpcG8gImV4dHJhIiAocGVnYXRpbmFzLCBldGMuKSBzZSBnZW5lcmFuIGFxdcOtIGVuIHZleiBkZSBlc3RhciBmaWpvcyBlbiBlbAovLyBIVE1MLCBwYXJhIHF1ZSBhw7FhZGlyIHVuIHRpcG8gbnVldm8gZW4gZWwgZnV0dXJvIHNlYSBzb2xvIHRvY2FyIEVYVFJBX1NUT0NLX1RZUEVTLgpmdW5jdGlvbiBidWlsZEV4dHJhVHlwZUJ1dHRvbnMoKXsKICBjb25zdCB2aXNpYmxlID0gRVhUUkFfU1RPQ0tfVFlQRVMuZmlsdGVyKGlzRXh0cmFUeXBlVmlzaWJsZSk7CiAgY29uc3QgY2F0V3JhcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXQtdHlwZS1leHRyYScpOwogIGlmKGNhdFdyYXApIGNhdFdyYXAuaW5uZXJIVE1MID0gdmlzaWJsZS5tYXAodD0+YDxidXR0b24gdHlwZT0iYnV0dG9uIiBpZD0iY2F0LXR5cGUtJHt0LmtleX0iIG9uY2xpY2s9InNldENhdGFsb2dQcm9kdWN0VHlwZSgnJHt0LmtleX0nKSI+JHt0LmxhYmVsfTwvYnV0dG9uPmApLmpvaW4oJycpOwogIGNvbnN0IG9yZFdyYXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkLXR5cGUtZXh0cmEnKTsKICBpZihvcmRXcmFwKSBvcmRXcmFwLmlubmVySFRNTCA9IHZpc2libGUubWFwKHQ9PmA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9Im9yZC10eXBlLSR7dC5rZXl9IiBvbmNsaWNrPSJzZXRPcmRlclByb2R1Y3RUeXBlKCcke3Qua2V5fScpIj4ke3QubGFiZWx9PC9idXR0b24+YCkuam9pbignJyk7CiAgY29uc3Qgc2FsZVdyYXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FsZS10eXBlLWV4dHJhJyk7CiAgaWYoc2FsZVdyYXApIHNhbGVXcmFwLmlubmVySFRNTCA9IHZpc2libGUubWFwKHQ9PmA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9InNhbGUtdHlwZS0ke3Qua2V5fSIgb25jbGljaz0ic2V0U2FsZVByb2R1Y3RUeXBlKCcke3Qua2V5fScpIj4ke3QubGFiZWx9PC9idXR0b24+YCkuam9pbignJyk7CiAgLy8gRWwgZm9ybXVsYXJpbyBkZSAiaW5zZXJ0YXIgdmVudGEgYSBub21icmUgZGUgdW5hIHRpZW5kYSIgZXMgY29zYSBkZSBBZG1pbjogYWjDrSBzZSBtdWVzdHJhbgogIC8vIFNJRU1QUkUgbG9zIDQgdGlwb3MgKGF1bnF1ZSB1biB0aXBvIHRvZGF2w61hIG5vIHNlYSB2aXNpYmxlIGVuIGVsIGNhdMOhbG9nbyBww7pibGljbyksIHBvcnF1ZQogIC8vIHF1aWVuIGxvIHVzYSAodHUgcHJpbWEpIG5lY2VzaXRhIHBvZGVyIHJlZ2lzdHJhciBjdWFscXVpZXIgdGlwbyBkZXNkZSBlbCBwcmltZXIgbW9tZW50by4KICBjb25zdCBhZG1TYWxlV3JhcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1zYWxlLXR5cGUtZXh0cmEnKTsKICBpZihhZG1TYWxlV3JhcCkgYWRtU2FsZVdyYXAuaW5uZXJIVE1MID0gZXh0cmFUeXBlc1Nob3duKCkubWFwKHQ9PmA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9ImFkbXNhbGUtdHlwZS0ke3Qua2V5fSIgb25jbGljaz0ic2V0QWRtaW5TYWxlVHlwZSgnJHt0LmtleX0nKSI+JHt0LmxhYmVsfTwvYnV0dG9uPmApLmpvaW4oJycpOwp9CmZ1bmN0aW9uIHNldENhdGFsb2dQcm9kdWN0VHlwZSh0KXsKICBjYXRhbG9nUHJvZHVjdFR5cGUgPSB0OwogIFsuLi5hbGxUeXBlS2V5cygpLCAnbmV3J10uZm9yRWFjaChrPT57IGNvbnN0IGI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdC10eXBlLScrayk7IGlmKGIpIGIuY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aXZlJywgdD09PWspOyB9KTsKICByZW5kZXJDYXRhbG9nKCk7Cn0KLy8gVGlwb3MgcXVlIGxhIHRpZW5kYSBwdWVkZSB2ZXIgZW4gZWwgY2F0w6Fsb2dvIChsw6FtaW5hcywgbGlicmV0YXMgeSBsb3MgZXh0cmEgbWFyY2Fkb3MgdmlzaWJsZXMpLgpmdW5jdGlvbiBpc0NhdGFsb2dUeXBlVmlzaWJsZShrZXkpewogIGlmKGtleT09PSdsYW1pbmEnIHx8IGtleT09PSdsaWJyZXRhJykgcmV0dXJuIHRydWU7CiAgY29uc3QgdCA9IEVYVFJBX1NUT0NLX1RZUEVTLmZpbmQoeD0+eC5rZXk9PT1rZXkpOwogIHJldHVybiAhISh0ICYmIGlzRXh0cmFUeXBlVmlzaWJsZSh0KSk7Cn0KLy8gMTgvMDkvMjAyNjogcGVzdGHDsWEgIk5ldyIg4oCUIHRvZG8gbG8gbWFyY2FkbyBjb21vIE5ldyAodmlnZW50ZSkgZGUgbG9zIHRpcG9zIHZpc2libGVzLCBhZ3J1cGFkbwovLyBwb3IgdGlwbyBlbiBlbCBvcmRlbiBkZSBsYXMgcGVzdGHDsWFzIHksIGRlbnRybyBkZSBjYWRhIHRpcG8sIHBvciBub21icmUuCmZ1bmN0aW9uIG5ld0NhdGFsb2dJbGx1c3RyYXRpb25zKCl7CiAgY29uc3Qgb3JkZXIgPSBhbGxUeXBlS2V5cygpOwogIHJldHVybiBpbGx1c3RyYXRpb25zCiAgICAuZmlsdGVyKGk9PmlzTmV3SXRlbShpKSAmJiBpc0NhdGFsb2dUeXBlVmlzaWJsZShpLnByb2R1Y3RfdHlwZXx8J2xhbWluYScpKQogICAgLnNvcnQoKGEsYik9PiBvcmRlci5pbmRleE9mKGEucHJvZHVjdF90eXBlfHwnbGFtaW5hJykgLSBvcmRlci5pbmRleE9mKGIucHJvZHVjdF90eXBlfHwnbGFtaW5hJykKICAgICAgfHwgKGEubmFtZXx8JycpLmxvY2FsZUNvbXBhcmUoYi5uYW1lfHwnJywgJ2VzJywge3NlbnNpdGl2aXR5OidiYXNlJywgbnVtZXJpYzp0cnVlfSkpOwp9CmZ1bmN0aW9uIGNhdGFsb2dTZWFyY2hNYXRjaChpKXsKICBjb25zdCBxID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXQtc2VhcmNoJyk\/LnZhbHVlIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTsKICBpZighcSkgcmV0dXJuIHRydWU7CiAgY29uc3Qgbm9ybSA9IHQgPT4gKHR8fCcnKS50b0xvd2VyQ2FzZSgpLm5vcm1hbGl6ZSgnTkZEJykucmVwbGFjZSgvW1x1MDMwMC1cdTAzNmZdL2csJycpOwogIHJldHVybiBub3JtKGkubmFtZSkuaW5jbHVkZXMobm9ybShxKSkgfHwgKGkucmVmfHwnJykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKSB8fCAoaS5yZWZ8fCcnKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoJy0nLCcnKS5pbmNsdWRlcyhxLnJlcGxhY2UoJy0nLCcnKSk7Cn0KZnVuY3Rpb24gdmlzaWJsZUNhdGFsb2dJbGx1c3RyYXRpb25zKCl7CiAgaWYoY2F0YWxvZ1Byb2R1Y3RUeXBlPT09J25ldycpIHJldHVybiBuZXdDYXRhbG9nSWxsdXN0cmF0aW9ucygpLmZpbHRlcihjYXRhbG9nU2VhcmNoTWF0Y2gpOwogIHJldHVybiBpbGx1c3RyYXRpb25zLmZpbHRlcihpPT4oaS5wcm9kdWN0X3R5cGV8fCdsYW1pbmEnKT09PWNhdGFsb2dQcm9kdWN0VHlwZSAmJiBjYXRhbG9nU2VhcmNoTWF0Y2goaSkpOwp9CmZ1bmN0aW9uIHJlbmRlckNhdGFsb2coKXsKICBjb25zdCBncmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdGFsb2ctZ3JpZCcpOwogIC8vIExhIHBlc3Rhw7FhIE5ldyBzb2xvIHNlIGVuc2XDsWEgc2kgaGF5IGFsZ28gTmV3IHZpZ2VudGU7IHNpIHNlIHF1ZWRhIHZhY8OtYSBlc3RhbmRvIGVuIGVsbGEsCiAgLy8gc2UgdnVlbHZlIGEgTMOhbWluYXMuCiAgY29uc3QgaGFzTmV3ID0gbmV3Q2F0YWxvZ0lsbHVzdHJhdGlvbnMoKS5sZW5ndGggPiAwOwogIGNvbnN0IG5ld0J0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXQtdHlwZS1uZXcnKTsKICBpZihuZXdCdG4pIG5ld0J0bi5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nLCAhaGFzTmV3KTsKICBpZihjYXRhbG9nUHJvZHVjdFR5cGU9PT0nbmV3JyAmJiAhaGFzTmV3KXsgc2V0Q2F0YWxvZ1Byb2R1Y3RUeXBlKCdsYW1pbmEnKTsgcmV0dXJuOyB9CiAgY29uc3QgbGlzdCA9IHZpc2libGVDYXRhbG9nSWxsdXN0cmF0aW9ucygpOwogIGNvbnN0IGNhcmRIdG1sID0gaSA9PiBgCiAgICA8ZGl2IGNsYXNzPSJjYXJkIiBkYXRhLWlkPSIke2kuaWR9IiBvbmNsaWNrPSdvcGVuTW9kYWwoJHtKU09OLnN0cmluZ2lmeShpLnJlZil9KSc+CiAgICAgICR7aXNOZXdJdGVtKGkpID8gJzxzcGFuIGNsYXNzPSJuZXctYmFkZ2UiPk5FVzwvc3Bhbj4nIDogJyd9CiAgICAgICR7c3RvcmVTdG9ja0J5SWxsW2kuaWRdID8gYDxzcGFuIGNsYXNzPSJoYXZlLWJhZGdlIiB0aXRsZT0iTG8gcXVlIHRlIHF1ZWRhIGVuIHRpZW5kYSAodG9kb3MgbG9zIGZvcm1hdG9zKSI+JHt0KCdFbiB0dSB0aWVuZGE6IHtufScsIHtuOiBzdG9yZVN0b2NrQnlJbGxbaS5pZF19KX08L3NwYW4+YCA6ICcnfQogICAgICAke2kuaW1hZ2VfdXJsID8gYDxpbWArYGcgc3JjPSIke2NhdGFsb2dTaXplPT09J2xhcmdlJyA\/IGkuaW1hZ2VfdXJsIDogdGh1bWJTcmMoaSl9IiBhbHQ9IiR7KGkubmFtZXx8aS5yZWZ8fCcnKS5yZXBsYWNlKC8iL2csJyZxdW90OycpfSIgbG9hZGluZz0ibGF6eSI+YCA6IGA8ZGl2IGNsYXNzPSJub2ltZyI+JHtOT0lNR19JQ09OfTxzcGFuPnNpbiBpbWFnZW48L3NwYW4+PC9kaXY+YH0KICAgICAgPGRpdiBjbGFzcz0ibWV0YSI+PGRpdiBjbGFzcz0icmVmIj4ke2kucmVmfTwvZGl2PiR7aS5uYW1lfSR7bWFyY2FFblBlZGlkb0h0bWwoaS5pZCl9PC9kaXY+CiAgICA8L2Rpdj5gOwogIGlmKGNhdGFsb2dQcm9kdWN0VHlwZT09PSduZXcnKXsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXQtY291bnQnKS50ZXh0Q29udGVudCA9IGxpc3QubGVuZ3RoICsgJyAnICsgKGxpc3QubGVuZ3RoPT09MSA\/IHQoJ25vdmVkYWQnKSA6IHQoJ25vdmVkYWRlcycpKTsKICAgIGxldCBodG1sID0gJycsIGxhc3RUeXBlID0gbnVsbDsKICAgIGxpc3QuZm9yRWFjaChpPT57CiAgICAgIGNvbnN0IHQgPSBpLnByb2R1Y3RfdHlwZXx8J2xhbWluYSc7CiAgICAgIGlmKHQhPT1sYXN0VHlwZSl7IGNvbnN0IG0gPSB0eXBlTWV0YSh0KTsgaHRtbCArPSBgPGgzIGNsYXNzPSJuZXctc2VjdGlvbi10aXRsZSI+JHttLnBsdXJhbC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSttLnBsdXJhbC5zbGljZSgxKX08L2gzPmA7IGxhc3RUeXBlID0gdDsgfQogICAgICBodG1sICs9IChjYXRhbG9nU2l6ZT09PSdsaXN0YScgPyBmaWxhSG9qYUh0bWwoaSkgOiBjYXJkSHRtbChpKSk7CiAgICB9KTsKICAgIGdyaWQuaW5uZXJIVE1MID0gaHRtbDsKICAgIHJldHVybjsKICB9CiAgY29uc3QgdE1ldGEgPSB0eXBlTWV0YShjYXRhbG9nUHJvZHVjdFR5cGUpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXQtY291bnQnKS50ZXh0Q29udGVudCA9IGxpc3QubGVuZ3RoICsgJyAnICsgKGxpc3QubGVuZ3RoPT09MSA\/IHRNZXRhLmxhYmVsLnRvTG93ZXJDYXNlKCkgOiB0TWV0YS5wbHVyYWwpOwogIGNvbnN0IHEgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdC1zZWFyY2gnKT8udmFsdWUgfHwgJycpLnRyaW0oKTsKICBpZighbGlzdC5sZW5ndGggJiYgcSl7IGdyaWQuaW5uZXJIVE1MID0gYDxwIGNsYXNzPSJvcmRlci1lbXB0eSIgc3R5bGU9ImdyaWQtY29sdW1uOjEvLTE7Ij4ke3QoJ05vIGhheSB7dGlwb30gcXVlIGNvaW5jaWRhbiBjb24gwqt7cX3Cuy4gUHJ1ZWJhIGVuIG90cmEgcGVzdGHDsWEgbyBjb24gb3RyYSBwYWxhYnJhLicsIHt0aXBvOiB0TWV0YS5wbHVyYWwsIHE6IGVzY2FwZUF0dHIocSl9KX08L3A+YDsgcmV0dXJuOyB9CiAgZ3JpZC5pbm5lckhUTUwgPSBsaXN0Lm1hcChpID0+IGNhdGFsb2dTaXplPT09J2xpc3RhJyA\/IGZpbGFIb2phSHRtbChpKSA6IGNhcmRIdG1sKGkpKS5qb2luKCcnKTsKfQovLyAwNi8xMC8yMDI2IChSYcO6bCwgY29uIGxhIERlbW8pOiBsYSB0YXJqZXRhIGRlY8OtYSBjdcOhbnRhcyBsZSBxdWVkYWJhbiBlbiBzdSB0aWVuZGEgcGVybyBsYSBmaWNoYSBubyBsbyBleHBsaWNhYmEuCi8vIEFob3JhIGxhIGZpY2hhIGRpY2UgwqtFbiB0dSB0aWVuZGEgdGUgcXVlZGFuIDM6IDIgQTMgwrcgMSBBNMK7IChsbyBlbnRyZWdhZG8gbWVub3MgbG8gcXVlIGhhIHJlcG9ydGFkbyBjb21vIHZlbmRpZG8pLgpmdW5jdGlvbiBmaWNoYUVuVGllbmRhSHRtbChpZCl7CiAgY29uc3QgbiA9IHN0b3JlU3RvY2tCeUlsbFtpZF07IGlmKCFuKSByZXR1cm4gJyc7CiAgY29uc3QgZiA9IHN0b3JlU3RvY2tCeUlsbEZtdFtpZF0gfHwge307CiAgY29uc3QgZGV0ID0gT2JqZWN0LmtleXMoZikuc29ydCgoeCx5KT0+eyBjb25zdCBpPU9SREVOX0ZPUk1BVE9TLmluZGV4T2YoeCksIGo9T1JERU5fRk9STUFUT1MuaW5kZXhPZih5KTsgcmV0dXJuIChpPDA\/OTk6aSktKGo8MD85OTpqKTsgfSkubWFwKGs9PmZba10rJyAnK2spLmpvaW4oJyDCtyAnKTsKICByZXR1cm4gYDxkaXYgY2xhc3M9ImZpY2hhLWVuLXRpZW5kYSI+JHt0KG49PT0xPydFbiB0dSB0aWVuZGEgdGUgcXVlZGEge259JzonRW4gdHUgdGllbmRhIHRlIHF1ZWRhbiB7bn0nLCB7bn0pfSR7ZGV0ID8gJzogJytkZXQgOiAnJ308L2Rpdj5gOwp9CmxldCBjdXJyZW50TW9kYWxSZWYgPSBudWxsOwpmdW5jdGlvbiBvcGVuTW9kYWwocmVmKXsKICBjb25zdCBpID0gaWxsdXN0cmF0aW9ucy5maW5kKHg9PngucmVmPT09cmVmKTsKICBpZighaSkgcmV0dXJuOwogIGN1cnJlbnRNb2RhbFJlZiA9IHJlZjsKICBjb25zdCBmbXRzID0gaS5mb3JtYXRzX2F2YWlsYWJsZXx8W107CiAgY29uc3QgY2FuTmF2ID0gdmlzaWJsZUNhdGFsb2dJbGx1c3RyYXRpb25zKCkubGVuZ3RoPjE7CiAgY29uc3QgbmF2QnRuU3R5bGUgPSAoc2lkZSkgPT4gYHBvc2l0aW9uOmFic29sdXRlOyR7c2lkZX06OHB4O3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7d2lkdGg6MzhweDtoZWlnaHQ6MzhweDtib3JkZXItcmFkaXVzOjAgOXB4IDAgOXB4O2JvcmRlcjpub25lO2JhY2tncm91bmQ6cmdiYSgyNCwyNCwyNCwuNTUpO2NvbG9yOiNmZmY7Zm9udC1zaXplOjIwcHg7bGluZS1oZWlnaHQ6MTtjdXJzb3I6cG9pbnRlcjt6LWluZGV4OjI7YDsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtcm9vdCcpLmlubmVySFRNTCA9IGAKICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJnIiBvbmNsaWNrPSJpZihldmVudC50YXJnZXQ9PT10aGlzKSBjbG9zZU1vZGFsKCkiPgogICAgICA8ZGl2IGNsYXNzPSJtb2RhbCIgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlOyI+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IkNlcnJhciIgb25jbGljaz0iY2xvc2VNb2RhbCgpIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7dG9wOjEwcHg7cmlnaHQ6MTBweDt3aWR0aDozMHB4O2hlaWdodDozMHB4O2JvcmRlci1yYWRpdXM6MCA5cHggMCA5cHg7Ym9yZGVyOm5vbmU7YmFja2dyb3VuZDpyZ2JhKDI0LDI0LDI0LC41NSk7Y29sb3I6I2ZmZjtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoxO2N1cnNvcjpwb2ludGVyO3otaW5kZXg6MzsiPsOXPC9idXR0b24+CiAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7Ij4KICAgICAgICAgICR7aS5pbWFnZV91cmwgPyBgPGRpdiBjbGFzcz0ibW9kYWwtaW1nd3JhcCI+PGRpdiBjbGFzcz0iYmdibHVyIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTp1cmwoJyR7dGh1bWJTcmMoaSl9JykiPjwvZGl2PjxpbWArYGcgaWQ9Im1vZGFsLW1haW4taW1nIiBzcmM9IiR7dGh1bWJTcmMoaSl9IiBkYXRhLWZ1bGw9IiR7aS5pbWFnZV91cmx9IiBhbHQ9IiR7KGkubmFtZXx8aS5yZWZ8fCcnKS5yZXBsYWNlKC8iL2csJyZxdW90OycpfSI+PC9kaXY+YCA6IGA8ZGl2IGNsYXNzPSJub2ltZyI+JHtOT0lNR19JQ09OfTxzcGFuPnNpbiBpbWFnZW48L3NwYW4+PC9kaXY+YH0KICAgICAgICAgICR7Y2FuTmF2ID8gYDxidXR0b24gdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJBbnRlcmlvciIgb25jbGljaz0ibW9kYWxOYXYoLTEpIiBzdHlsZT0iJHtuYXZCdG5TdHlsZSgnbGVmdCcpfSI+4oC5PC9idXR0b24+YCA6ICcnfQogICAgICAgICAgJHtjYW5OYXYgPyBgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IlNpZ3VpZW50ZSIgb25jbGljaz0ibW9kYWxOYXYoMSkiIHN0eWxlPSIke25hdkJ0blN0eWxlKCdyaWdodCcpfSI+4oC6PC9idXR0b24+YCA6ICcnfQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImJvZHkiPgogICAgICAgICAgPHN0cm9uZz4ke2kubmFtZX08L3N0cm9uZz4gPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXN1YXZlKTsiPigke2kucmVmfSk8L3NwYW4+CiAgICAgICAgICAke2ZpY2hhRW5UaWVuZGFIdG1sKGkuaWQpfQogICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Im1vZGFsLWZtdCIgdmFsdWU9IiR7Zm10c1swXXx8Jyd9Ij4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJtb2RhbC1xdHkiIHZhbHVlPSIxIj4KICAgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MTRweDtkaXNwbGF5OmZsZXg7Z2FwOjI4cHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2ZsZXgtd3JhcDp3cmFwO3RleHQtYWxpZ246Y2VudGVyOyI+CiAgICAgICAgICAgICR7Zm10cy5sZW5ndGg+MSA\/IGAKICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9ImRpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tc3VhdmUpO21hcmdpbi1ib3R0b206NnB4OyI+Rm9ybWF0bzwvbGFiZWw+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2l6ZWJ0bnMiPiR7Zm10cy5tYXAoKGYsaWR4KT0+YDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ibW9kYWwtZm10LWJ0biR7aWR4PT09MD8nIGFjdGl2ZSc6Jyd9IiBkYXRhLWZtdD0iJHtmfSIgb25jbGljaz0ic2V0TW9kYWxGb3JtYXQoJyR7Zn0nKSI+JHtmfTwvYnV0dG9uPmApLmpvaW4oJycpfTwvZGl2PgogICAgICAgICAgICAgIDxkaXYgaWQ9Im1vZGFsLWZtdC1zaXplIiBjbGFzcz0iZm10LXNpemUiPiR7Zm9ybWF0U2l6ZUxhYmVsKGZtdHNbMF0pfTwvZGl2PgogICAgICAgICAgICA8L2Rpdj5gIDogKGZvcm1hdFNpemVMYWJlbChmbXRzWzBdKSA\/IGA8ZGl2PjxsYWJlbCBzdHlsZT0iZGlzcGxheTpibG9jaztmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7bWFyZ2luLWJvdHRvbTo2cHg7Ij5Gb3JtYXRvPC9sYWJlbD48ZGl2IHN0eWxlPSJmb250LXdlaWdodDo2MDA7Ij4ke2ZtdHNbMF19PC9kaXY+PGRpdiBjbGFzcz0iZm10LXNpemUiPiR7Zm9ybWF0U2l6ZUxhYmVsKGZtdHNbMF0pfTwvZGl2PjwvZGl2PmAgOiAnJyl9CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW4tYm90dG9tOjZweDsiPkNhbnRpZGFkPC9sYWJlbD4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJxdHktc3RlcHBlciI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgb25jbGljaz0ic3RlcE1vZGFsUXR5KC0xKSIgYXJpYS1sYWJlbD0iTWVub3MiPuKIkjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPHNwYW4gaWQ9Im1vZGFsLXF0eS1kaXNwbGF5Ij4xPC9zcGFuPgogICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIG9uY2xpY2s9InN0ZXBNb2RhbFF0eSgxKSIgYXJpYS1sYWJlbD0iTcOhcyI+KzwvYnV0dG9uPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDoxNnB4O2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7Ij4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJtb2RhbC1hZGQtYnRuIiBjbGFzcz0iYnRuIiBvbmNsaWNrPSdhZGRUb0NhcnRGcm9tTW9kYWwoJHtKU09OLnN0cmluZ2lmeShpLnJlZil9KSc+QcOxYWRpciBhbCBwZWRpZG88L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gc2Vjb25kYXJ5IiBvbmNsaWNrPSJjbG9zZU1vZGFsKCkiPkNlcnJhcjwvYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGlkPSJtb2RhbC1hZGRlZC1tc2ciIHN0eWxlPSJkaXNwbGF5Om5vbmU7bWFyZ2luLXRvcDoxMHB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS1vayk7YmFja2dyb3VuZDp2YXIoLS1vay1jbGFybyk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1vayk7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzo4cHggMTBweDsiPjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PmA7CiAgLy8gMTgvMDkvMjAyNjogc2UgZW5zZcOxYSBwcmltZXJvIGxhIG1pbmlhdHVyYSAoeWEgZW4gY2FjaMOpLCBzYWxlIGFsIGluc3RhbnRlKSB5IHNlIGNhbWJpYSBwb3IgbGEKICAvLyBmb3RvIGdyYW5kZSBjdWFuZG8gdGVybWluYSBkZSBiYWphciDigJQgYW50ZXMgbGEgdmVudGFuYSBzYWzDrWEgZW5jb2dpZGEgeSBkYWJhIHVuIHNhbHRvLgogIGNvbnN0IG1haW5JbWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtbWFpbi1pbWcnKTsKICBjb25zdCBmdWxsID0gbWFpbkltZz8uZGF0YXNldC5mdWxsOwogIGlmKG1haW5JbWcgJiYgZnVsbCAmJiBmdWxsICE9PSBtYWluSW1nLnNyYyl7CiAgICBjb25zdCBwcmUgPSBuZXcgSW1hZ2UoKTsKICAgIHByZS5vbmxvYWQgPSAoKSA9PiB7IGNvbnN0IGN1ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbC1tYWluLWltZycpOyBpZihjdXIgJiYgY3VyLmRhdGFzZXQuZnVsbCA9PT0gZnVsbCkgY3VyLnNyYyA9IGZ1bGw7IH07CiAgICBwcmUuc3JjID0gZnVsbDsKICB9Cn0KZnVuY3Rpb24gY2xvc2VNb2RhbCgpewogIGN1cnJlbnRNb2RhbFJlZiA9IG51bGw7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLXJvb3QnKS5pbm5lckhUTUwgPSAnJzsKfQpmdW5jdGlvbiBzZXRNb2RhbEZvcm1hdChmKXsKICBjb25zdCBoaWRkZW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtZm10Jyk7CiAgaWYoaGlkZGVuKSBoaWRkZW4udmFsdWUgPSBmOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tb2RhbC1mbXQtYnRuJykuZm9yRWFjaChiPT5iLmNsYXNzTGlzdC50b2dnbGUoJ2FjdGl2ZScsIGIuZGF0YXNldC5mbXQ9PT1mKSk7CiAgY29uc3Qgc2l6ZUVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLWZtdC1zaXplJyk7CiAgaWYoc2l6ZUVsKSBzaXplRWwudGV4dENvbnRlbnQgPSBmb3JtYXRTaXplTGFiZWwoZik7CiAgLy8gQWwgY2FtYmlhciBkZSBmb3JtYXRvLCBsYSBjYW50aWRhZCB2dWVsdmUgYSAxIOKAlCBzaSBubywgc2UgcXVlZGFiYSBsYSBxdWUgaHViaWVyYSBwdWVzdG8KICAvLyBwYXJhIGVsIGZvcm1hdG8gYW50ZXJpb3IgeSBlcmEgZsOhY2lsIGHDsWFkaXIgZGUgbcOhcyBzaW4gcXVlcmVyIChwLmVqLiBwb25lciA1IGVuIEE0IHksCiAgLy8gYWwgbWlyYXIgQTUsIGVuY29udHJhcnNlIGVzb3MgbWlzbW9zIDUgeWEgcHVlc3RvcykuCiAgY29uc3QgcXR5SGlkZGVuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLXF0eScpOwogIGlmKHF0eUhpZGRlbikgcXR5SGlkZGVuLnZhbHVlID0gMTsKICBjb25zdCBkaXNwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLXF0eS1kaXNwbGF5Jyk7CiAgaWYoZGlzcCkgZGlzcC50ZXh0Q29udGVudCA9IDE7Cn0KZnVuY3Rpb24gc3RlcE1vZGFsUXR5KGRlbHRhKXsKICBjb25zdCBoaWRkZW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtcXR5Jyk7CiAgaWYoIWhpZGRlbikgcmV0dXJuOwogIGNvbnN0IG5leHQgPSBNYXRoLm1heCgxLCAocGFyc2VJbnQoaGlkZGVuLnZhbHVlfHwnMScsMTApfHwxKSArIGRlbHRhKTsKICBoaWRkZW4udmFsdWUgPSBuZXh0OwogIGNvbnN0IGRpc3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtcXR5LWRpc3BsYXknKTsKICBpZihkaXNwKSBkaXNwLnRleHRDb250ZW50ID0gbmV4dDsKfQpmdW5jdGlvbiBtb2RhbE5hdihkZWx0YSl7CiAgaWYoIWN1cnJlbnRNb2RhbFJlZikgcmV0dXJuOwogIGNvbnN0IGxpc3QgPSB2aXNpYmxlQ2F0YWxvZ0lsbHVzdHJhdGlvbnMoKTsKICBjb25zdCBpZHggPSBsaXN0LmZpbmRJbmRleCh4PT54LnJlZj09PWN1cnJlbnRNb2RhbFJlZik7CiAgaWYoaWR4PT09LTEpIHJldHVybjsKICBjb25zdCBuZXh0SWR4ID0gKGlkeCArIGRlbHRhICsgbGlzdC5sZW5ndGgpICUgbGlzdC5sZW5ndGg7CiAgb3Blbk1vZGFsKGxpc3RbbmV4dElkeF0ucmVmKTsKfQpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGUpPT57CiAgaWYoIWN1cnJlbnRNb2RhbFJlZikgcmV0dXJuOwogIGlmKGUua2V5PT09J0Fycm93TGVmdCcpIG1vZGFsTmF2KC0xKTsKICBlbHNlIGlmKGUua2V5PT09J0Fycm93UmlnaHQnKSBtb2RhbE5hdigxKTsKICBlbHNlIGlmKGUua2V5PT09J0VzY2FwZScpIGNsb3NlTW9kYWwoKTsKfSk7CmZ1bmN0aW9uIGFkZFRvQ2FydEZyb21Nb2RhbChyZWYpewogIGNvbnN0IGkgPSBpbGx1c3RyYXRpb25zLmZpbmQoeD0+eC5yZWY9PT1yZWYpOwogIGlmKCFpKSByZXR1cm47CiAgY29uc3QgZm9ybWF0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLWZtdCcpLnZhbHVlOwogIGNvbnN0IHF1YW50aXR5ID0gcGFyc2VJbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLXF0eScpLnZhbHVlfHwnMScsMTApOwogIGNvbnN0IHF0eVRvQWRkID0gcXVhbnRpdHk+MD9xdWFudGl0eToxOwogIC8vIFNpIHlhIHRpZW5lcyBlc3RhIG1pc21hIGlsdXN0cmFjacOzbitmb3JtYXRvIGVuIGVsIHBlZGlkbyAocC5lai4gbGEgYcOxYWRpc3RlIHZhcmlhcyB2ZWNlcwogIC8vIGRlIHVuYSBlbiB1bmEpLCBzZSBzdW1hIGEgZXNhIGzDrW5lYSBlbiB2ZXogZGUgY3JlYXIgdW5hIGzDrW5lYSBudWV2YSDigJQgYXPDrSBlbiBBZG1pbi9JbXByaW1pcgogIC8vIGxhcyB1bmlkYWRlcyBzZSBhZ3J1cGFuIGJpZW4gKGxvcyBBNSBzZSByZWRvbmRlYW4ganVudG9zIGEgaG9qYXMgQTQsIG5vIHVuYSBwb3IgdW5hKSB5IGVsCiAgLy8gY2hlY2sgZGUgImltcHJlc28iIG5vIHB1ZWRlIHRlcm1pbmFyIGFmZWN0YW5kbyBhIHZhcmlhcyBsw61uZWFzIGlndWFsZXMgYSBsYSB2ZXouCiAgY29uc3QgZXhpc3RpbmcgPSBvcmRlckNhcnQuZmluZCh4PT54LmlsbHVzdHJhdGlvbl9pZD09PWkuaWQgJiYgeC5mb3JtYXQ9PT1mb3JtYXQpOwogIGlmKGV4aXN0aW5nKSBleGlzdGluZy5xdWFudGl0eSArPSBxdHlUb0FkZDsKICBlbHNlIG9yZGVyQ2FydC5wdXNoKHtpbGx1c3RyYXRpb25faWQ6IGkuaWQsIGZvcm1hdCwgcXVhbnRpdHk6IHF0eVRvQWRkfSk7CiAgcmVuZGVyT3JkZXJJdGVtcygpOwogIC8vIENvbmZpcm1hY2nDs24gYmllbiB2aXNpYmxlOiBhbnRlcyBzb2xvIGNhbWJpYWJhIHVuIHRleHRvIHBlcXVlw7FvIGRlYmFqbyBkZWwgYm90w7NuIHkgZXJhCiAgLy8gZsOhY2lsIG5vIGRhcnNlIGN1ZW50YSwgc2VndWlyIHB1bHNhbmRvICJBw7FhZGlyIiBwZW5zYW5kbyBxdWUgbm8gaGFiw61hIGZ1bmNpb25hZG8sIHkgYWNhYmFyCiAgLy8gbWV0aWVuZG8gY2FudGlkYWRlcyBlbm9ybWVzIHNpbiBxdWVyZXIuIEFob3JhIGVsIHByb3BpbyBib3TDs24gY2FtYmlhIGRlIGFzcGVjdG8geSBzZQogIC8vIGJsb3F1ZWEgdW4gbW9tZW50bywgeSBlbCBhdmlzbyBkZWJham8gZXMgdW4gcmVjdWFkcm8gZ3JhbmRlIGVuIHZleiBkZSB1bmEgbMOtbmVhIGRlIHRleHRvLgogIGNvbnN0IG1zZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbC1hZGRlZC1tc2cnKTsKICBpZihtc2cpewogICAgbXNnLmlubmVySFRNTCA9IHQoJ+KckyBBw7FhZGlkbyDigJQge259IMK3IHt0b3RhbH0gZW4gdG90YWwgZW4gdHUgcGVkaWRvJywge246IHQocXR5VG9BZGQ9PT0xPyd7bn0gdW5pZGFkJzone259IHVuaWRhZGVzJywge246IHF0eVRvQWRkfSksIHRvdGFsOiBjYXJ0VG90YWxVbml0cygpfSkgKwogICAgICAnPGJyPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIHNtYWxsIiBzdHlsZT0ibWFyZ2luLXRvcDo4cHg7IiBvbmNsaWNrPSJjbG9zZU1vZGFsKCk7ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcJ25hdiBidXR0b25bZGF0YS10YWI9JnF1b3Q7cGVkaWRvJnF1b3Q7XVwnKS5jbGljaygpOyI+VmVyIG1pIHBlZGlkbyDihpI8L2J1dHRvbj4nOwogICAgbXNnLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogIH0KICBjb25zdCBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtYWRkLWJ0bicpOwogIGlmKGJ0bil7CiAgICBidG4uZGlzYWJsZWQgPSB0cnVlOwogICAgY29uc3Qgb3JpZ2luYWwgPSBidG4udGV4dENvbnRlbnQ7CiAgICBidG4udGV4dENvbnRlbnQgPSAn4pyTIEHDsWFkaWRvJzsKICAgIGJ0bi5zdHlsZS5iYWNrZ3JvdW5kID0gJyMxYjZiMzQnOwogICAgYnRuLnN0eWxlLmJvcmRlckNvbG9yID0gJyMxYjZiMzQnOwogICAgc2V0VGltZW91dCgoKT0+ewogICAgICBpZighYnRuLmlzQ29ubmVjdGVkKSByZXR1cm47CiAgICAgIGJ0bi5kaXNhYmxlZCA9IGZhbHNlOwogICAgICBidG4udGV4dENvbnRlbnQgPSBvcmlnaW5hbDsKICAgICAgYnRuLnN0eWxlLmJhY2tncm91bmQgPSAnJzsKICAgICAgYnRuLnN0eWxlLmJvcmRlckNvbG9yID0gJyc7CiAgICB9LCA5MDApOwogIH0KfQpmdW5jdGlvbiBnb1RvT3JkZXJXaXRoKCl7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbmF2IGJ1dHRvbicpLmZvckVhY2goeD0+eC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKSk7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbmF2IGJ1dHRvbltkYXRhLXRhYj0icGVkaWRvIl0nKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdtYWluID4gc2VjdGlvbicpLmZvckVhY2gocz0+cy5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYi1wZWRpZG8nKS5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTsKICB3aW5kb3cuc2Nyb2xsVG8oMCwwKTsKfQoKLy8gLS0tLS0tLS0tLSBPUkRFUiBGT1JNIChjYXJyaXRvIGFjdW11bGF0aXZvKSAtLS0tLS0tLS0tCmxldCBvcmRlclByb2R1Y3RUeXBlID0gJ2xhbWluYSc7CmZ1bmN0aW9uIHNldE9yZGVyUHJvZHVjdFR5cGUodCl7CiAgb3JkZXJQcm9kdWN0VHlwZSA9IHQ7CiAgYWxsVHlwZUtleXMoKS5mb3JFYWNoKGs9PnsgY29uc3QgYj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkLXR5cGUtJytrKTsgaWYoYikgYi5jbGFzc0xpc3QudG9nZ2xlKCdhY3RpdmUnLCB0PT09ayk7IH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZGQtb3JkZXItcm93LWJ0bicpLnRleHRDb250ZW50ID0gd2luZG93LnQoJysgQcOxYWRpciB7dGlwb30nLCB7dGlwbzogdHlwZU1ldGEodCkubGFiZWwudG9Mb3dlckNhc2UoKX0pOwp9CmZ1bmN0aW9uIHR5cGVPZklsbHVzdHJhdGlvbihpZCl7CiAgY29uc3QgaWxsID0gaWxsdXN0cmF0aW9ucy5maW5kKHg9PnguaWQ9PT1pZCk7CiAgcmV0dXJuIGlsbCA\/IChpbGwucHJvZHVjdF90eXBlfHwnbGFtaW5hJykgOiAnbGFtaW5hJzsKfQpmdW5jdGlvbiBpbGx1c3RyYXRpb25PcHRpb25zKHNlbGVjdGVkSWQsIHR5cGUpewogIGNvbnN0IHNjb3BlID0gdHlwZSA\/IGlsbHVzdHJhdGlvbnMuZmlsdGVyKGk9PihpLnByb2R1Y3RfdHlwZXx8J2xhbWluYScpPT09dHlwZSkgOiBpbGx1c3RyYXRpb25zOwogIHJldHVybiBzY29wZS5tYXAoaT0+YDxvcHRpb24gdmFsdWU9IiR7aS5pZH0iIGRhdGEtZm9ybWF0cz0iJHsoaS5mb3JtYXRzX2F2YWlsYWJsZXx8W10pLmpvaW4oJywnKX0iICR7aS5pZD09PXNlbGVjdGVkSWQ\/J3NlbGVjdGVkJzonJ30+JHtpLnJlZn0g4oCUICR7aS5uYW1lfTwvb3B0aW9uPmApLmpvaW4oJycpOwp9CmZ1bmN0aW9uIGNhcnRUb3RhbFVuaXRzKCl7CiAgLy8gVW5pZGFkZXMgdG90YWxlcyBkZWwgY2Fycml0byAoc3VtYW5kbyBjYW50aWRhZGVzKSwgbm8gbsO6bWVybyBkZSBsw61uZWFzIOKAlCBhc8OtIGVsIGNvbnRhZG9yCiAgLy8gZGUgYXJyaWJhIHkgZWwgYXZpc28gZGUgImHDsWFkaWRvIiBjb2luY2lkZW4gY29uIGxvIHF1ZSBlbCB1c3VhcmlvIGFjYWJhIGRlIGVzY3JpYmlyLgogIHJldHVybiBvcmRlckNhcnQucmVkdWNlKChzdW0sIHIpID0+IHN1bSArIChwYXJzZUludChyLnF1YW50aXR5LCAxMCkgfHwgMCksIDApOwp9Ci8vIFRhbmRhIDIgKFAxMywgMDYvMTAvMjAyNik6IGVuIGVsIGNhdMOhbG9nbywgbG8gcXVlIHlhIGVzdMOhIGVuIGVsIHBlZGlkbyBsbGV2YSDCq0VuIHR1IHBlZGlkbzogTsK7ICh1bmlkYWRlcywgdG9kb3MgbG9zIGZvcm1hdG9zKS4KZnVuY3Rpb24gdW5pZGFkZXNFblBlZGlkbyhpZCl7IHJldHVybiBvcmRlckNhcnQucmVkdWNlKChuLHIpPT4gci5pbGx1c3RyYXRpb25faWQ9PT1pZCA\/IG4rKHBhcnNlSW50KHIucXVhbnRpdHksMTApfHwwKSA6IG4sIDApOyB9CmZ1bmN0aW9uIG1hcmNhRW5QZWRpZG9IdG1sKGlkKXsgY29uc3QgbiA9IHVuaWRhZGVzRW5QZWRpZG8oaWQpOyByZXR1cm4gbiA\/IGA8c3BhbiBjbGFzcz0iZW4tcGVkaWRvIj4ke3QoJ0VuIHR1IHBlZGlkbzoge259Jywge259KX08L3NwYW4+YCA6ICcnOyB9CmZ1bmN0aW9uIGFjdHVhbGl6YU1hcmNhc1BlZGlkbygpewogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNjYXRhbG9nLWdyaWQgLmNhcmRbZGF0YS1pZF0nKS5mb3JFYWNoKGNhcmQ9PnsKICAgIGNvbnN0IG1ldGEgPSBjYXJkLnF1ZXJ5U2VsZWN0b3IoJy5tZXRhJyk7IGlmKCFtZXRhKSByZXR1cm47CiAgICBjb25zdCB2aWVqYSA9IG1ldGEucXVlcnlTZWxlY3RvcignLmVuLXBlZGlkbycpOyBpZih2aWVqYSkgdmllamEucmVtb3ZlKCk7CiAgICBjb25zdCBodG1sID0gbWFyY2FFblBlZGlkb0h0bWwoY2FyZC5kYXRhc2V0LmlkKTsgaWYoaHRtbCkgbWV0YS5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsIGh0bWwpOwogIH0pOwp9CmZ1bmN0aW9uIHVwZGF0ZUNhcnRCYWRnZSgpewogIGFjdHVhbGl6YU1hcmNhc1BlZGlkbygpOwogIGNvbnN0IGJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduYXYtcGVkaWRvJyk7CiAgaWYoIWJ0bikgcmV0dXJuOwogIGNvbnN0IHRvdGFsID0gY2FydFRvdGFsVW5pdHMoKTsKICBidG4udGV4dENvbnRlbnQgPSB0KCdQZWRpZG9zJykgKyAodG90YWwgPyAnICgnICsgdG90YWwgKyAnKScgOiAnJyk7Cn0KLy8gVGFuZGEgMiAoUDExLCAwNi8xMC8yMDI2KTogY2FkYSBsw61uZWEgZGVsIHBlZGlkbyBlbiB1bmEgZmlsYSBjb21wYWN0YSAoZm90byDCtyBub21icmUgwrcgZm9ybWF0byDCtyBjYW50aWRhZCDCtyBxdWl0YXIpIHkgbG9zCi8vIHRvdGFsZXMgYXJyaWJhLiBBbnRlcyBjYWRhIGzDrW5lYSBlcmEgdW4gZGVzcGxlZ2FibGUgY29uIHRvZGFzIGxhcyBsw6FtaW5hczogY29uIDI4IGzDrW5lYXMgbGEgcMOhZ2luYSBlcmEgbGFyZ3XDrXNpbWEuCi8vIExhcyBsw61uZWFzIHF1ZSB2aWVuZW4gZGVsIGNhdMOhbG9nbyBlbnNlw7FhbiBlbCBub21icmU7IGxhcyBkZSDCqysgQcOxYWRpciBsw6FtaW5hwrsgZW1waWV6YW4gY29uIMKrRWxpZ2XigKbCuyBoYXN0YSBxdWUgc2UgZWxpZ2UuCi8vIENvbiBhbGdvIGVuIGVsIHBlZGlkbywgwqtOdWV2byBwZWRpZG\/CuyBwYXNhIHBvciBkZWxhbnRlIGRlIMKrVHVzIHBlZGlkb3PCuyAoY2xhc2UgY29uLXBlZGlkbyBlbiBsYSBzZWNjacOzbikuCmNvbnN0IE9SREVOX0ZPUk1BVE9TID0gWydBMycsJ0E0JywnQTUnLCcxNHg0MiddOwpmdW5jdGlvbiByZW5kZXJPcmRlckl0ZW1zKCl7CiAgdXBkYXRlQ2FydEJhZGdlKCk7CiAgY29uc3QgdGFiID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYi1wZWRpZG8nKTsKICBpZih0YWIpIHRhYi5jbGFzc0xpc3QudG9nZ2xlKCdjb24tcGVkaWRvJywgb3JkZXJDYXJ0Lmxlbmd0aCA+IDApOwogIGNvbnN0IHdyYXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkLWl0ZW1zJyk7CiAgaWYoIXdyYXApIHJldHVybjsKICBpZighb3JkZXJDYXJ0Lmxlbmd0aCl7CiAgICB3cmFwLmlubmVySFRNTCA9ICc8cCBjbGFzcz0ib3JkZXItZW1wdHkiPicgKyB0KCdUdSBwZWRpZG8gZXN0w6EgdmFjw61vLiBBw7FhZGUgYXJ0w61jdWxvcyBkZXNkZSBlbCB7bGlua30gbyBjb24gZWwgYm90w7NuIGRlIGFycmliYS4nLCB7bGluazogJzxzcGFuIGNsYXNzPSJsb2NrLWxpbmsiIG9uY2xpY2s9ImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCduYXYgYnV0dG9uW2RhdGEtdGFiPWNhdGFsb2dvXVwnKS5jbGljaygpIj4nICsgdCgnQ2F0w6Fsb2dvJykgKyAnPC9zcGFuPid9KSArICc8L3A+JzsKICAgIHJldHVybjsKICB9CiAgY29uc3QgdmFsaWRhcyA9IG9yZGVyQ2FydC5maWx0ZXIocj0+ci5pbGx1c3RyYXRpb25faWQpOwogIGNvbnN0IHVuaWRhZGVzID0gdmFsaWRhcy5yZWR1Y2UoKG4scik9Pm4rKHBhcnNlSW50KHIucXVhbnRpdHksMTApfHwwKSwgMCk7CiAgY29uc3QgcG9yRm10ID0ge307CiAgdmFsaWRhcy5mb3JFYWNoKHI9PnsgaWYoci5mb3JtYXQpIHBvckZtdFtyLmZvcm1hdF0gPSAocG9yRm10W3IuZm9ybWF0XXx8MCkgKyAocGFyc2VJbnQoci5xdWFudGl0eSwxMCl8fDApOyB9KTsKICBjb25zdCBmbXRUeHQgPSBPYmplY3Qua2V5cyhwb3JGbXQpLnNvcnQoKHgseSk9PnsgY29uc3QgaT1PUkRFTl9GT1JNQVRPUy5pbmRleE9mKHgpLCBqPU9SREVOX0ZPUk1BVE9TLmluZGV4T2YoeSk7IHJldHVybiAoaTwwPzk5OmkpLShqPDA\/OTk6aikgfHwgeC5sb2NhbGVDb21wYXJlKHkpOyB9KQogICAgLm1hcChmPT5wb3JGbXRbZl0rJyAnK2YpLmpvaW4oJywgJyk7CiAgY29uc3QgcmVzdW1lbiA9IHZhbGlkYXMubGVuZ3RoID8gYDxkaXYgY2xhc3M9InBlZGlkby1yZXN1bWVuIj48c3Ryb25nPiR7dmFsaWRhcy5sZW5ndGh9ICR7dCh2YWxpZGFzLmxlbmd0aD09PTE\/J2FydMOtY3Vsbyc6J2FydMOtY3Vsb3MnKX0gwrcgJHt0KHVuaWRhZGVzPT09MT8ne259IHVuaWRhZCc6J3tufSB1bmlkYWRlcycsIHtuOiB1bmlkYWRlc30pfTwvc3Ryb25nPiR7Zm10VHh0ID8gJzogJytmbXRUeHQgOiAnJ308L2Rpdj5gIDogJyc7CiAgd3JhcC5pbm5lckhUTUwgPSByZXN1bWVuICsgb3JkZXJDYXJ0Lm1hcCgoaXRlbSwgaWR4KSA9PiB7CiAgICBjb25zdCBpbGwgPSBpbGx1c3RyYXRpb25zLmZpbmQoeD0+eC5pZD09PWl0ZW0uaWxsdXN0cmF0aW9uX2lkKTsKICAgIGNvbnN0IGZtdHMgPSAoaWxsPy5mb3JtYXRzX2F2YWlsYWJsZSl8fFtdOwogICAgY29uc3QgZm10T3B0cyA9IGZtdHMubWFwKGY9PmA8b3B0aW9uIHZhbHVlPSIke2Z9IiAke2Y9PT1pdGVtLmZvcm1hdD8nc2VsZWN0ZWQnOicnfT4ke2Z9PC9vcHRpb24+YCkuam9pbignJyk7CiAgICBjb25zdCByb3dUeXBlID0gaWxsID8gKGlsbC5wcm9kdWN0X3R5cGV8fCdsYW1pbmEnKSA6IChpdGVtLnRpcG98fG9yZGVyUHJvZHVjdFR5cGUpOwogICAgY29uc3QgdGh1bWIgPSBpbGw\/LmltYWdlX3VybAogICAgICA\/IGA8aW1gK2BnIHNyYz0iJHt0aHVtYlNyYyhpbGwpfSIgYWx0PSIke2VzY2FwZUF0dHIoaWxsLm5hbWV8fGlsbC5yZWYpfSIgbG9hZGluZz0ibGF6eSI+YAogICAgICA6IGA8ZGl2IGNsYXNzPSJub2ltZyI+JHtOT0lNR19JQ09OfTwvZGl2PmA7CiAgICBjb25zdCBub21icmUgPSAoaWxsICYmICFpdGVtLmVsZWdpcikKICAgICAgPyBgPGRpdiBjbGFzcz0ib2wtbm9tYnJlIj48c3BhbiBjbGFzcz0ib2wtcmVmIj4ke2lsbC5yZWZ9PC9zcGFuPiR7ZXNjYXBlQXR0cihpbGwubmFtZXx8JycpfTwvZGl2PmAKICAgICAgOiBgPHNlbGVjdCBjbGFzcz0ib2wtZWxlZ2lyIiBvbmNoYW5nZT0iY2FydFNldElsbCgke2lkeH0sIHRoaXMudmFsdWUpIiBhcmlhLWxhYmVsPSIke3QoJ0FydMOtY3VsbycpfSI+PG9wdGlvbiB2YWx1ZT0iIj4ke3QoJ0VsaWdl4oCmJyl9PC9vcHRpb24+JHtpbGx1c3RyYXRpb25PcHRpb25zKGl0ZW0uaWxsdXN0cmF0aW9uX2lkLCByb3dUeXBlKX08L3NlbGVjdD5gOwogICAgY29uc3QgZm9ybWF0byA9IGZtdHMubGVuZ3RoPjEKICAgICAgPyBgPHNlbGVjdCBjbGFzcz0ib2wtZm10IiBvbmNoYW5nZT0iY2FydFNldEZtdCgke2lkeH0sIHRoaXMudmFsdWUpIiBhcmlhLWxhYmVsPSIke3QoJ0Zvcm1hdG8nKX0iPiR7Zm10T3B0c308L3NlbGVjdD5gCiAgICAgIDogKGZtdHNbMF0gPyBgPHNwYW4gY2xhc3M9Im9sLWZtdC1maWpvIj4ke2ZtdHNbMF19PC9zcGFuPmAgOiAnJyk7CiAgICByZXR1cm4gYDxkaXYgY2xhc3M9Im9yZGVyLWxpbmUgb2wtY29tcGFjdGEiPgogICAgICA8ZGl2IGNsYXNzPSJvcmRlci1saW5lLXRodW1iIj4ke3RodW1ifTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJvbC1jdWVycG8iPiR7bm9tYnJlfQogICAgICAgIDxkaXYgY2xhc3M9Im9sLWNvbnRyb2xlcyI+JHtmb3JtYXRvfQogICAgICAgICAgPGRpdiBjbGFzcz0icXR5LXN0ZXBwZXIiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgb25jbGljaz0iY2FydFN0ZXBRdHkoJHtpZHh9LC0xKSIgYXJpYS1sYWJlbD0iJHt0KCdVbmEgbWVub3MnKX0iICR7aXRlbS5xdWFudGl0eTw9MT8nZGlzYWJsZWQnOicnfT7iiJI8L2J1dHRvbj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgbWluPSIxIiBpbnB1dG1vZGU9Im51bWVyaWMiIHZhbHVlPSIke2l0ZW0ucXVhbnRpdHl9IiBvbmNoYW5nZT0iY2FydFNldFF0eSgke2lkeH0sIHRoaXMudmFsdWUpIiBhcmlhLWxhYmVsPSIke3QoJ0NhbnRpZGFkJyl9Ij4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIG9uY2xpY2s9ImNhcnRTdGVwUXR5KCR7aWR4fSwxKSIgYXJpYS1sYWJlbD0iJHt0KCdVbmEgbcOhcycpfSI+KzwvYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im9sLXF1aXRhciIgb25jbGljaz0iY2FydFJlbW92ZSgke2lkeH0pIiBhcmlhLWxhYmVsPSIke3QoJ1F1aXRhciBkZWwgcGVkaWRvJyl9IiB0aXRsZT0iJHt0KCdRdWl0YXIgZGVsIHBlZGlkbycpfSI+w5c8L2J1dHRvbj4KICAgIDwvZGl2PmA7CiAgfSkuam9pbignJyk7Cn0KZnVuY3Rpb24gY2FydFN0ZXBRdHkoaWR4LCBkZWx0YSl7CiAgY29uc3QgbmV4dCA9IE1hdGgubWF4KDEsIChwYXJzZUludChvcmRlckNhcnRbaWR4XS5xdWFudGl0eSwxMCl8fDEpICsgZGVsdGEpOwogIG9yZGVyQ2FydFtpZHhdLnF1YW50aXR5ID0gbmV4dDsKICByZW5kZXJPcmRlckl0ZW1zKCk7Cn0KZnVuY3Rpb24gY2FydFNldElsbChpZHgsIGlkKXsKICBjb25zdCBpbGwgPSBpbGx1c3RyYXRpb25zLmZpbmQoeD0+eC5pZD09PWlkKTsKICBvcmRlckNhcnRbaWR4XS5pbGx1c3RyYXRpb25faWQgPSBpZDsKICBpZihpZCkgb3JkZXJDYXJ0W2lkeF0uZWxlZ2lyID0gZmFsc2U7CiAgb3JkZXJDYXJ0W2lkeF0uZm9ybWF0ID0gKGlsbD8uZm9ybWF0c19hdmFpbGFibGV8fFtdKVswXXx8Jyc7CiAgcmVuZGVyT3JkZXJJdGVtcygpOwp9CmZ1bmN0aW9uIGNhcnRTZXRGbXQoaWR4LCB2YWwpeyBvcmRlckNhcnRbaWR4XS5mb3JtYXQgPSB2YWw7IH0KZnVuY3Rpb24gY2FydFNldFF0eShpZHgsIHZhbCl7IG9yZGVyQ2FydFtpZHhdLnF1YW50aXR5ID0gTWF0aC5tYXgoMSwgcGFyc2VJbnQodmFsfHwnMScsMTApIHx8IDEpOyByZW5kZXJPcmRlckl0ZW1zKCk7IH0KYXN5bmMgZnVuY3Rpb24gY2FydFJlbW92ZShpZHgpewogIGNvbnN0IGl0ZW0gPSBvcmRlckNhcnRbaWR4XTsKICBjb25zdCBpbGwgPSBpbGx1c3RyYXRpb25zLmZpbmQoeD0+eC5pZD09PWl0ZW0\/LmlsbHVzdHJhdGlvbl9pZCk7CiAgY29uc3Qgd2hhdCA9IGlsbCA\/IGAke2lsbC5yZWZ9IOKAlCAke2lsbC5uYW1lfSR7aXRlbS5mb3JtYXQgPyAnICgnK2l0ZW0uZm9ybWF0KycpJyA6ICcnfWAgOiB0KCdlc3RlIGFydMOtY3VsbycpOwogIGlmKCEoYXdhaXQgY29uZmlybWEodCgnwr9RdWl0YXIge3doYXR9IGRlbCBwZWRpZG8\/XG5cblNlIHF1aXRhbiBsYXMge259IHVuaWRhZGVzIGRlIGVzdGEgbMOtbmVhLiBTaSBzb2xvIHF1aWVyZXMgcGVkaXIgbWVub3MsIHVzYSBlbCBib3TDs24g4oiSLicsIHt3aGF0LCBuOiBpdGVtPy5xdWFudGl0eXx8MX0pLCB7c2k6IHQoJ1F1aXRhcicpfSkpKSByZXR1cm47CiAgb3JkZXJDYXJ0LnNwbGljZShpZHgsMSk7CiAgcmVuZGVyT3JkZXJJdGVtcygpOwp9Ci8vIMKrRW52aWFyIHBlZGlkb8K7IHkgwqtFbnZpYXIgcmVwb3J0ZcK7IGVuIGdyaXMgbWllbnRyYXMgbm8gaGF5YSBuYWRhIHF1ZSBlbnZpYXIsIGNvbiBsYSBwaXN0YSBhbCBsYWRvICh0YW5kYSAxLAovLyAwNS8xMC8yMDI2KS4gU2UgcmVjYWxjdWxhIHNvbGEgY2FkYSB2ZXogcXVlIGNhbWJpYW4gbGFzIGzDrW5lYXMgZGVsIHBlZGlkbyBvIGRlbCByZXBvcnRlLgovLyBUYW5kYSAyIChQMTAsIDA2LzEwLzIwMjYpOiBsYSBheXVkYSBkZSBhcnJpYmEgZGVsIGNhdMOhbG9nbyBzZSBwdWVkZSBjZXJyYXIgeSBubyB2dWVsdmUgYSBzYWxpciBlbiBlc2UgbmF2ZWdhZG9yOwovLyBlbCBidXNjYWRvciB5IGxhcyBwZXN0YcOxYXMgc2UgcXVlZGFuIGZpam9zIGJham8gbGEgY2FiZWNlcmEgYWwgYmFqYXIgKGxhIGFsdHVyYSBkZSBsYSBjYWJlY2VyYSB2YSBlbiAtLWFsdG8tY2FiZWNlcmEpLgpmdW5jdGlvbiBjaWVycmFJbnRyb0NhdGFsb2dvKCl7CiAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0YWxvZy1pbnRybycpOyBpZihlbCkgZWwuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7CiAgdHJ5IHsgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2lzdHJpY2VfaW50cm9fY2F0YWxvZ29fY2VycmFkYScsICcxJyk7IH0gY2F0Y2goZSl7fQp9CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKT0+ewogIHRyeSB7IGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdpc3RyaWNlX2ludHJvX2NhdGFsb2dvX2NlcnJhZGEnKT09PScxJykgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdGFsb2ctaW50cm8nKT8uY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7IH0gY2F0Y2goZSl7fQogIGNvbnN0IGNhYiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWRlcicpOwogIGNvbnN0IHBvbiA9ICgpPT4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWFsdG8tY2FiZWNlcmEnLCAoY2FiID8gY2FiLm9mZnNldEhlaWdodCA6IDApICsgJ3B4Jyk7CiAgcG9uKCk7CiAgaWYoY2FiICYmICdSZXNpemVPYnNlcnZlcicgaW4gd2luZG93KSBuZXcgUmVzaXplT2JzZXJ2ZXIocG9uKS5vYnNlcnZlKGNhYik7IGVsc2Ugd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHBvbik7Cn0pOwpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgKCk9PnsKICBpZigvXihsb2NhbGhvc3R8MTI3XC4wXC4wXC4xKSQvLnRlc3QobG9jYXRpb24uaG9zdG5hbWUpKXsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdmlzby1jb3BpYS1sb2NhbCcpPy5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTsKICAgIGRvY3VtZW50LnRpdGxlID0gJ1tMT0NBTF0gJyArIGRvY3VtZW50LnRpdGxlOwogIH0KfSk7Ci8vIEZlY2hhcyBlbiBob3JhIGRlIEVzcGHDsWEgKDA2LzEwLzIwMjYsIHB1bnRvIMKrRmVjaGFzwrsgZGVsIHJlcGFzbyBkZWwgMjkvMDkpOiB0b0lTT1N0cmluZygpIGRhIGxhIGZlY2hhIGVuIGhvcmEgdW5pdmVyc2FsLAovLyBhc8OtIHF1ZSBlbnRyZSBsYXMgMDA6MDAgeSBsYXMgMDI6MDAgc2Fsw61hIGVsIGTDrWEgYW50ZXJpb3IgKMKrZW52aWFkb8K7IGEgbGFzIDAwOjMwIHNlIGFwdW50YWJhIGF5ZXIpIHkgZWwgZmlsdHJvIGRlIHVuCi8vIG1lcyBkZWphYmEgZnVlcmEgc3Ugw7psdGltbyBkw61hLiBmZWNoYUxvY2FsKCkgZGEgQUFBQS1NTS1ERCBlbiBsYSBob3JhIGRlbCBvcmRlbmFkb3IgKGxhIGRlIEVzcGHDsWEpLgpmdW5jdGlvbiBmZWNoYUxvY2FsKGQpeyBkID0gZCB8fCBuZXcgRGF0ZSgpOyByZXR1cm4gZC5nZXRGdWxsWWVhcigpICsgJy0nICsgU3RyaW5nKGQuZ2V0TW9udGgoKSsxKS5wYWRTdGFydCgyLCcwJykgKyAnLScgKyBTdHJpbmcoZC5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsJzAnKTsgfQovLyAwNi8xMC8yMDI2IChwdW50byAzLjEwIGRlbCByZXBhc28gZGVsIDI5LzA5KTogU3VwYWJhc2UgZGV2dWVsdmUgY29tbyBtdWNobyAxLjAwMCBmaWxhcyBwb3IgY29uc3VsdGE7IGNvbiBtw6FzLCBsb3MgdG90YWxlcyBkZQovLyBBZG1pbiAodmVudGFzLCBlbnRyZWdhZG8sIGRlcMOzc2l0bykgc2UgcXVlZGFyw61hbiBjb3J0b3Mgc2luIGF2aXNhci4gbGVlVG9kbygpIHBpZGUgZGUgMS4wMDAgZW4gMS4wMDAgaGFzdGEgcXVlIG5vIHF1ZWRhbi4KLy8gUmVjaWJlIHVuYSBmdW5jacOzbiBxdWUgY3JlYSBsYSBjb25zdWx0YSAoY2FkYSBww6FnaW5hIG5lY2VzaXRhIHVuYSBudWV2YSkgeSBkZXZ1ZWx2ZSB7ZGF0YSwgZXJyb3J9IGNvbW8gU3VwYWJhc2UuCmFzeW5jIGZ1bmN0aW9uIGxlZVRvZG8oaGF6Q29uc3VsdGEpewogIGNvbnN0IFBBRyA9IDEwMDA7IGxldCBkZXNkZSA9IDAsIHRvZGFzID0gW107CiAgZm9yKDs7KXsKICAgIGNvbnN0IHtkYXRhLCBlcnJvcn0gPSBhd2FpdCBoYXpDb25zdWx0YSgpLnJhbmdlKGRlc2RlLCBkZXNkZSArIFBBRyAtIDEpOwogICAgaWYoZXJyb3IpIHJldHVybiB7ZGF0YTogdG9kYXMubGVuZ3RoID8gdG9kYXMgOiBudWxsLCBlcnJvcn07CiAgICB0b2RhcyA9IHRvZGFzLmNvbmNhdChkYXRhIHx8IFtdKTsKICAgIGlmKCFkYXRhIHx8IGRhdGEubGVuZ3RoIDwgUEFHKSByZXR1cm4ge2RhdGE6IHRvZGFzLCBlcnJvcjogbnVsbH07CiAgICBkZXNkZSArPSBQQUc7CiAgfQp9CmZ1bmN0aW9uIGFjdHVhbGl6YUJvdG9uZXNFbnZpYXIoKXsKICBjb25zdCBoYXlQZWRpZG8gPSBvcmRlckNhcnQuc29tZShyPT5yLmlsbHVzdHJhdGlvbl9pZCAmJiByLnF1YW50aXR5PjApOwogIGNvbnN0IGhheVZlbnRhID0gISFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2FsZS1pdGVtcyAuc2FsZS1saW5lJyk7CiAgW1snb3JkLXN1Ym1pdCcsJ29yZC1zdWJtaXQtaGludCcsaGF5UGVkaWRvXSxbJ3NhbGUtc3VibWl0Jywnc2FsZS1zdWJtaXQtaGludCcsaGF5VmVudGFdXS5mb3JFYWNoKChbYixoLGhheV0pPT57CiAgICBjb25zdCBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChiKSwgcGlzdGEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChoKTsKICAgIGlmKGJ0bikgYnRuLmRpc2FibGVkID0gIWhheTsKICAgIGlmKHBpc3RhKSBwaXN0YS5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nLCBoYXkpOwogIH0pOwp9CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKT0+ewogIGNvbnN0IG1pcmEgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihhY3R1YWxpemFCb3RvbmVzRW52aWFyKTsKICBbJ29yZC1pdGVtcycsJ3NhbGUtaXRlbXMnXS5mb3JFYWNoKGlkPT57IGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOyBpZihlbCkgbWlyYS5vYnNlcnZlKGVsLCB7Y2hpbGRMaXN0OnRydWV9KTsgfSk7CiAgYWN0dWFsaXphQm90b25lc0VudmlhcigpOwp9KTsKZnVuY3Rpb24gYWRkT3JkZXJSb3coKXsKICBjb25zdCBwb29sID0gaWxsdXN0cmF0aW9ucy5maWx0ZXIoaT0+KGkucHJvZHVjdF90eXBlfHwnbGFtaW5hJyk9PT1vcmRlclByb2R1Y3RUeXBlKTsKICBjb25zdCBmaXJzdCA9IHBvb2xbMF07CiAgLy8gMTgvMDkvMjAyNjogZWwgYm90w7NuIGVzdMOhIGVuY2ltYSBkZSBsYSBsaXN0YSwgYXPDrSBxdWUgbGEgbMOtbmVhIG51ZXZhIGVudHJhIGFycmliYSAoanVudG8gYWwgYm90w7NuKS4KICAvLyBUYW5kYSAyOiBsYSBsw61uZWEgbnVldmEgZW1waWV6YSBlbiDCq0VsaWdl4oCmwrsgKGFudGVzIHNhbMOtYSB5YSBsYSBwcmltZXJhIGzDoW1pbmEgeSBlcmEgZsOhY2lsIHBlZGlybGEgc2luIHF1ZXJlcikuCiAgb3JkZXJDYXJ0LnVuc2hpZnQoe2lsbHVzdHJhdGlvbl9pZDonJywgZm9ybWF0OicnLCBxdWFudGl0eToxLCBlbGVnaXI6dHJ1ZSwgdGlwbzpvcmRlclByb2R1Y3RUeXBlfSk7CiAgcmVuZGVyT3JkZXJJdGVtcygpOwp9Ci8vIEFudGVzIGRlIGd1YXJkYXIgZGUgdmVyZGFkLCBzZSBwYXJhIGVuIHVuIGN1YWRybyBkZSBjb25maXJtYWNpw7NuIGNvbiBlbCByZXN1bWVuIGRlIGxvIHF1ZSBzZQovLyB2YSBhIHBlZGlyIOKAlCBhc8OtIHNlIHB1ZWRlIHJldmlzYXIgKHkgdm9sdmVyIGF0csOhcykgYW50ZXMgZGUgcXVlIHF1ZWRlIGVudmlhZG8uCmxldCBwZW5kaW5nT3JkZXJQYXlsb2FkID0gbnVsbDsKZnVuY3Rpb24gc3VibWl0T3JkZXIoZSl7CiAgZS5wcmV2ZW50RGVmYXVsdCgpOwogIGNvbnN0IGNoYW5uZWxfaWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkLWNoYW5uZWwnKS52YWx1ZTsKICBjb25zdCBjdXN0b21lcl9uYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29yZC1uYW1lJykudmFsdWU7CiAgY29uc3Qgbm90ZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkLW5vdGVzJykudmFsdWU7CiAgLy8gU2UgYWdydXBhIHBvciBpbHVzdHJhY2nDs24rZm9ybWF0byBhbnRlcyBkZSBndWFyZGFyLCBwb3Igc2kgYWNhYmFuIGV4aXN0aWVuZG8gbMOtbmVhcwogIC8vIHJlcGV0aWRhcyBlbiBlbCBjYXJyaXRvIChtaXNtYSBpbHVzdHJhY2nDs24geSBmb3JtYXRvIGVuIG3DoXMgZGUgdW5hIGZpbGEpIOKAlCBhc8OtIGVuIGxhIEJECiAgLy8gc2llbXByZSBxdWVkYSB1bmEgc29sYSBsw61uZWEgcG9yIGNvbWJpbmFjacOzbiwgY29uIGxhIGNhbnRpZGFkIHlhIHN1bWFkYSwgeSBubyBzZSBkZXNjdWFkcmFuCiAgLy8gbHVlZ28gZWwgcmVzdW1lbiBkZSBpbXByZXNpw7NuIChyZWRvbmRlbyBkZSBBNSBhIGhvamFzIEE0KSBuaSBlbCBjaGVjayBkZSAiaW1wcmVzbyIuCiAgY29uc3QgZ3JvdXBlZCA9IHt9OwogIG9yZGVyQ2FydC5maWx0ZXIocj0+ci5pbGx1c3RyYXRpb25faWQgJiYgci5xdWFudGl0eT4wKS5mb3JFYWNoKHI9PnsKICAgIGNvbnN0IGtleSA9IHIuaWxsdXN0cmF0aW9uX2lkKyd8JytyLmZvcm1hdDsKICAgIGlmKCFncm91cGVkW2tleV0pIGdyb3VwZWRba2V5XSA9IHtpbGx1c3RyYXRpb25faWQ6ci5pbGx1c3RyYXRpb25faWQsIGZvcm1hdDpyLmZvcm1hdCwgcXVhbnRpdHk6MH07CiAgICBncm91cGVkW2tleV0ucXVhbnRpdHkgKz0gci5xdWFudGl0eTsKICB9KTsKICBjb25zdCByb3dzID0gT2JqZWN0LnZhbHVlcyhncm91cGVkKTsKICBjb25zdCBtc2dFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcmQtbXNnJyk7CiAgaWYoIWNoYW5uZWxfaWQpeyBtc2dFbC5pbm5lckhUTUw9JzxkaXYgY2xhc3M9Im1zZyBlcnIiPkVsaWdlIGxhIHRpZW5kYS9jbGllbnRlLjwvZGl2Pic7IHJldHVybiBmYWxzZTsgfQogIGlmKHJvd3MubGVuZ3RoPT09MCl7IG1zZ0VsLmlubmVySFRNTD0nPGRpdiBjbGFzcz0ibXNnIGVyciI+QcOxYWRlIGFsIG1lbm9zIHVuIGFydMOtY3Vsby48L2Rpdj4nOyByZXR1cm4gZmFsc2U7IH0KICBtc2dFbC5pbm5lckhUTUwgPSAnJzsKICBwZW5kaW5nT3JkZXJQYXlsb2FkID0ge2NoYW5uZWxfaWQsIGN1c3RvbWVyX25hbWUsIG5vdGVzLCByb3dzfTsKICBvcGVuT3JkZXJDb25maXJtKHBlbmRpbmdPcmRlclBheWxvYWQpOwogIHJldHVybiBmYWxzZTsKfQpmdW5jdGlvbiBvcGVuT3JkZXJDb25maXJtKHBheWxvYWQpewogIGNvbnN0IGNoYW5uZWxOYW1lID0gKGNoYW5uZWxzLmZpbmQoYz0+Yy5pZD09PXBheWxvYWQuY2hhbm5lbF9pZCk\/Lm5hbWUpIHx8ICcnOwogIGNvbnN0IHRvdGFsVW5pdHMgPSBwYXlsb2FkLnJvd3MucmVkdWNlKChzLHIpPT5zK3IucXVhbnRpdHksMCk7CiAgY29uc3QgaXRlbXNIdG1sID0gcGF5bG9hZC5yb3dzLm1hcChyPT57CiAgICBjb25zdCBpbGwgPSBpbGx1c3RyYXRpb25zLmZpbmQoeD0+eC5pZD09PXIuaWxsdXN0cmF0aW9uX2lkKTsKICAgIGNvbnN0IHRoID0gaWxsPy5pbWFnZV91cmwgPyBgPGltYCtgZyBzcmM9IiR7dGh1bWJTcmMoaWxsKX0iIGFsdD0iIiBsb2FkaW5nPSJsYXp5IiBzdHlsZT0id2lkdGg6MzZweDtoZWlnaHQ6NDhweDtvYmplY3QtZml0OmNvdmVyO2JvcmRlci1yYWRpdXM6NHB4O2ZsZXg6MCAwIDM2cHg7Ij5gIDogJyc7CiAgICByZXR1cm4gYDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7cGFkZGluZzo3cHggMDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1saW5lKTtmb250LXNpemU6MTRweDsiPgogICAgICAke3RofTxzcGFuIHN0eWxlPSJmbGV4OjE7Ij4ke2lsbD8ucmVmfHwnJ30g4oCUICR7aWxsPy5uYW1lfHwnJ30gPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXN1YXZlKTsiPigke3IuZm9ybWF0fSk8L3NwYW4+PC9zcGFuPgogICAgICA8c3Ryb25nPsOXICR7ci5xdWFudGl0eX08L3N0cm9uZz4KICAgIDwvZGl2PmA7CiAgfSkuam9pbignJyk7CiAgY29uc3Qgc3VtbWFyeUVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29yZGVyLWNvbmZpcm0tc3VtbWFyeScpOwogIGlmKHN1bW1hcnlFbCkgc3VtbWFyeUVsLmlubmVySFRNTCA9IGAKICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW4tYm90dG9tOjhweDsiPjxzdHJvbmc+VGllbmRhOjwvc3Ryb25nPiAke2NoYW5uZWxOYW1lfSR7cGF5bG9hZC5jdXN0b21lcl9uYW1lPycgJm5ic3A7wrcmbmJzcDsgPHN0cm9uZz5Db250YWN0bzo8L3N0cm9uZz4gJytlc2NhcGVBdHRyKHBheWxvYWQuY3VzdG9tZXJfbmFtZSk6Jyd9PC9kaXY+CiAgICA8ZGl2PiR7aXRlbXNIdG1sfTwvZGl2PgogICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodDtmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1zdWF2ZSk7bWFyZ2luLXRvcDo4cHg7Ij4ke3QoJ3tufSBlbiB0b3RhbCcsIHtuOiB0KHRvdGFsVW5pdHM9PT0xPyd7bn0gdW5pZGFkJzone259IHVuaWRhZGVzJywge246IHRvdGFsVW5pdHN9KX0pfTwvZGl2PgogICAgJHtwYXlsb2FkLm5vdGVzID8gYDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MTBweDtmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij48c3Ryb25nPk5vdGFzOjwvc3Ryb25nPiAke2VzY2FwZUF0dHIocGF5bG9hZC5ub3Rlcyl9PC9kaXY+YCA6ICcnfQogIGA7CiAgY29uc3QgbXNnRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkZXItY29uZmlybS1tc2cnKTsKICBpZihtc2dFbCkgbXNnRWwuaW5uZXJIVE1MID0gJyc7CiAgY29uc3QgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkZXItY29uZmlybS1tb2RhbCcpOwogIGlmKG1vZGFsKSBtb2RhbC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTsKfQpmdW5jdGlvbiBjbG9zZU9yZGVyQ29uZmlybSgpewogIGNvbnN0IG1vZGFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29yZGVyLWNvbmZpcm0tbW9kYWwnKTsKICBpZihtb2RhbCkgbW9kYWwuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7CiAgcGVuZGluZ09yZGVyUGF5bG9hZCA9IG51bGw7Cn0KLy8gUmVkIGRlIHNlZ3VyaWRhZDogc2kgcG9yIGxvIHF1ZSBzZWEgKHNlc3Npb25TdG9yYWdlIGJsb3F1ZWFkbyBwb3IgZWwgbmF2ZWdhZG9yLCBzZXNpw7NuIG11eQovLyB2aWVqYSBkZSBhbnRlcyBkZSBlc3RlIGNhbWJpbywgZXRjLikgbm8gdGVuZW1vcyBsYSBjb250cmFzZcOxYSBkZSBsYSB0aWVuZGEgZW4gbWVtb3JpYSwgc2UgbGEKLy8gcGVkaW1vcyBhcXXDrSBtaXNtbyBjb24gdW4gcHJvbXB0IGVuIHZleiBkZSBmYWxsYXIgc2luIGRhcmxlIG5pbmfDum4gc2l0aW8gZG9uZGUgZXNjcmliaXJsYS4KYXN5bmMgZnVuY3Rpb24gZW5zdXJlTG9ja2VkUGFzc3dvcmQoKXsKICBpZihsb2NrZWRDaGFubmVsUGFzc3dvcmQpIHJldHVybiB0cnVlOwogIGNvbnN0IHBhc3MgPSBhd2FpdCBwcmVndW50YSh0KCdWdWVsdmUgYSBlc2NyaWJpciBsYSBjb250cmFzZcOxYSBkZSB0dSB0aWVuZGEgcGFyYSBjb250aW51YXI6JyksICdwYXNzd29yZCcpOwogIGlmKCFwYXNzKSByZXR1cm4gZmFsc2U7CiAgbG9ja2VkQ2hhbm5lbFBhc3N3b3JkID0gcGFzczsKICBzYWZlU2Vzc2lvblNldCgnaXN0cmljZV9sb2NrZWRfcGFzc3dvcmQnLCBwYXNzKTsKICByZXR1cm4gdHJ1ZTsKfQphc3luYyBmdW5jdGlvbiBjb25maXJtU3VibWl0T3JkZXIoKXsKICBpZighcGVuZGluZ09yZGVyUGF5bG9hZCkgcmV0dXJuOwogIGNvbnN0IHtjaGFubmVsX2lkLCBjdXN0b21lcl9uYW1lLCBub3Rlcywgcm93c30gPSBwZW5kaW5nT3JkZXJQYXlsb2FkOwogIGNvbnN0IGJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcmRlci1jb25maXJtLWJ0bicpOwogIGNvbnN0IG1vZGFsTXNnRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkZXItY29uZmlybS1tc2cnKTsKICBpZihidG4pIGJ0bi5kaXNhYmxlZCA9IHRydWU7CiAgLy8gQ3VlbnRhIERlbW86IHNpbXVsYSBlbCBlbnbDrW8gKHBhcmEgcXVlIHZlYW4gZWwgZmx1am8gY29tcGxldG8pIHNpbiBlc2NyaWJpciBuYWRhIGVuIGxhIEJEIHJlYWwuCiAgaWYoaXNEZW1vTW9kZSgpKXsKICAgIGlmKGJ0bikgYnRuLmRpc2FibGVkID0gZmFsc2U7CiAgICBjbG9zZU9yZGVyQ29uZmlybSgpOwogICAgY29uc3QgbXNnRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkLW1zZycpOwogICAgaWYobXNnRWwpIG1zZ0VsLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPSJtc2cgb2siPlBlZGlkbyBlbnZpYWRvLiDCoUdyYWNpYXMhIChkZW1vIOKAlCBubyBzZSBoYSBndWFyZGFkbyBuYWRhIHJlYWwpPC9kaXY+JzsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcmRlci1mb3JtJykucmVzZXQoKTsKICAgIGFwcGx5RGVmYXVsdENoYW5uZWwoKTsKICAgIGZvcmNlUmVsb2NrQ2hhbm5lbCgnb3JkLWNoYW5uZWwnLCdvcmQnKTsKICAgIG9yZGVyQ2FydCA9IFtdOwogICAgcmVuZGVyT3JkZXJJdGVtcygpOwogICAgcmV0dXJuOwogIH0KICAvLyBVbmEgdGllbmRhIGNvbiBhY2Nlc28gcHJvcGlvIChsb2NrZWRDaGFubmVsKSBtYW5kYSBlbCBwZWRpZG8gcG9yIHVuYSBmdW5jacOzbiBxdWUgY29tcHJ1ZWJhCiAgLy8gc3UgY29udHJhc2XDsWEgZW4gZWwgc2Vydmlkb3IgYW50ZXMgZGUgZXNjcmliaXIgbmFkYSDigJQgYXPDrSBuYWRpZSBwdWVkZSBpbnNlcnRhciB1biBwZWRpZG8gYQogIC8vIG5vbWJyZSBkZSBvdHJhIHRpZW5kYSBzaW4gY29ub2NlciBzdSBjb250cmFzZcOxYSwgYXVucXVlIHRlbmdhIGxhIGNsYXZlIHDDumJsaWNhIGRlIFN1cGFiYXNlLgogIC8vIEVsIG1hZXN0cm8vYWRtaW4gKHNlc2nDs24gcmVhbCBkZSBTdXBhYmFzZSBBdXRoLCBzaW4gbG9ja2VkQ2hhbm5lbCkgc2lndWUgZXNjcmliaWVuZG8gZGlyZWN0by4KICBpZihsb2NrZWRDaGFubmVsKXsKICAgIGlmKCEoYXdhaXQgZW5zdXJlTG9ja2VkUGFzc3dvcmQoKSkpewogICAgICBpZihidG4pIGJ0bi5kaXNhYmxlZCA9IGZhbHNlOwogICAgICByZXR1cm47CiAgICB9CiAgICBjb25zdCB7IGVycm9yIH0gPSBhd2FpdCBzYi5ycGMoJ3N1Ym1pdF9zdG9yZV9vcmRlcicsIHsKICAgICAgaW5wdXRfY2hhbm5lbF9pZDogY2hhbm5lbF9pZCwKICAgICAgaW5wdXRfcGFzc3dvcmQ6IGxvY2tlZENoYW5uZWxQYXNzd29yZCwKICAgICAgaW5wdXRfY3VzdG9tZXJfbmFtZTogY3VzdG9tZXJfbmFtZSwKICAgICAgaW5wdXRfbm90ZXM6IG5vdGVzLAogICAgICBpbnB1dF9pdGVtczogcm93cwogICAgfSk7CiAgICBpZihlcnJvcil7CiAgICAgIGlmKGVzRXJyb3JEZVJlZChlcnJvcikpewogICAgICAgIGlmKG1vZGFsTXNnRWwpIG1vZGFsTXNnRWwuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9Im1zZyBlcnIiPicgKyB0KCdTZSBjb3J0w7MgbGEgY29uZXhpw7NuIHkgbm8gc2FiZW1vcyBzaSBlbCBwZWRpZG8gaGEgbGxlZ2Fkby4gQW50ZXMgZGUgdm9sdmVyIGEgZW52aWFybG8sIGNpZXJyYSBlc3RhIHZlbnRhbmEgeSBtaXJhIMKrVHVzIHBlZGlkb3PCuzogc2kgYXBhcmVjZSwgeWEgZXN0w6EuJykgKyAnPC9kaXY+JzsKICAgICAgICBpZihidG4pIGJ0bi5kaXNhYmxlZCA9IGZhbHNlOwogICAgICAgIHRyeSB7IGxvYWRNeU9yZGVycygpOyB9IGNhdGNoKGUpe30KICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgLy8gU2kgbGEgY29udHJhc2XDsWEgcXVlIHRlbsOtYW1vcyBndWFyZGFkYSB5YSBubyB2YWxlLCBsYSBib3JyYW1vcyBwYXJhIHF1ZSBsYSBwcsOzeGltYSB2ZXoKICAgICAgLy8gc2UgdnVlbHZhIGEgcGVkaXIgZW4gdmV6IGRlIGZhbGxhciBlbiBidWNsZSBjb24gbGEgbWlzbWEgY29udHJhc2XDsWEgbWFsYS4gKDI5LzA5LzIwMjY6IHNvbG8KICAgICAgLy8gZW4gZXNlIGNhc287IGNvbiBvdHJvIGVycm9yIOKAlCBwLiBlai4gdW4gY29ydGUgZGUgcmVkIOKAlCBzZSBkZWphIHkgc2UgcHVlZGUgcmVpbnRlbnRhci4pCiAgICAgIGlmKC9Db250cmFzZcOxYSBpbmNvcnJlY3RhLy50ZXN0KGVycm9yLm1lc3NhZ2V8fCcnKSl7CiAgICAgICAgbG9ja2VkQ2hhbm5lbFBhc3N3b3JkID0gbnVsbDsKICAgICAgICBzYWZlU2Vzc2lvblJlbW92ZSgnaXN0cmljZV9sb2NrZWRfcGFzc3dvcmQnKTsKICAgICAgfQogICAgICBpZihtb2RhbE1zZ0VsKSBtb2RhbE1zZ0VsLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPSJtc2cgZXJyIj5FcnJvcjogJytlc2NhcGVBdHRyKGVycm9yLm1lc3NhZ2UpKyc8L2Rpdj4nOwogICAgICBpZihidG4pIGJ0bi5kaXNhYmxlZCA9IGZhbHNlOwogICAgICByZXR1cm47CiAgICB9CiAgfSBlbHNlIHsKICAgIC8vIDI5LzA5LzIwMjY6IHBlZGlkbyB5IGzDrW5lYXMgZW4gdW5hIHNvbGEgbGxhbWFkYSAoYWRtaW5fY3JlYXRlX29yZGVyKS4gQW50ZXMgZXJhbiBkb3M6IGVsIGF2aXNvCiAgICAvLyBwb3IgY29ycmVvIGRlIMKrcGVkaWRvIG51ZXZvwrsgc2Fsw61hIGVudHJlIG1lZGlhcyBzaW4gYXJ0w61jdWxvcywgeSBzaSBmYWxsYWJhIGxhIHNlZ3VuZGEgcXVlZGFiYQogICAgLy8gdW4gcGVkaWRvIHZhY8Otby4KICAgIGNvbnN0IHsgZXJyb3IgfSA9IGF3YWl0IHNiLnJwYygnYWRtaW5fY3JlYXRlX29yZGVyJywgewogICAgICBpbnB1dF9jaGFubmVsX2lkOiBjaGFubmVsX2lkLAogICAgICBpbnB1dF9jdXN0b21lcl9uYW1lOiBjdXN0b21lcl9uYW1lLAogICAgICBpbnB1dF9ub3Rlczogbm90ZXMsCiAgICAgIGlucHV0X2l0ZW1zOiByb3dzCiAgICB9KTsKICAgIGlmKGVycm9yKXsKICAgICAgaWYoZXNFcnJvckRlUmVkKGVycm9yKSl7CiAgICAgICAgaWYobW9kYWxNc2dFbCkgbW9kYWxNc2dFbC5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0ibXNnIGVyciI+JyArIHQoJ1NlIGNvcnTDsyBsYSBjb25leGnDs24geSBubyBzYWJlbW9zIHNpIGVsIHBlZGlkbyBoYSBsbGVnYWRvLiBBbnRlcyBkZSB2b2x2ZXIgYSBlbnZpYXJsbywgY2llcnJhIGVzdGEgdmVudGFuYSB5IG1pcmEgwqtUdXMgcGVkaWRvc8K7OiBzaSBhcGFyZWNlLCB5YSBlc3TDoS4nKSArICc8L2Rpdj4nOwogICAgICAgIGlmKGJ0bikgYnRuLmRpc2FibGVkID0gZmFsc2U7CiAgICAgICAgdHJ5IHsgbG9hZE15T3JkZXJzKCk7IH0gY2F0Y2goZSl7fQogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZihtb2RhbE1zZ0VsKSBtb2RhbE1zZ0VsLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPSJtc2cgZXJyIj5FcnJvcjogJytlc2NhcGVBdHRyKGVycm9yLm1lc3NhZ2UpKyc8L2Rpdj4nOwogICAgICBpZihidG4pIGJ0bi5kaXNhYmxlZCA9IGZhbHNlOwogICAgICByZXR1cm47CiAgICB9CiAgfQogIHsKICAgIGNvbnN0IGl0ZW1zU3VtbWFyeSA9IHJvd3MubWFwKHI9PnsKICAgICAgY29uc3QgaWxsID0gKHR5cGVvZiBpbGx1c3RyYXRpb25zIT09J3VuZGVmaW5lZCcgPyBpbGx1c3RyYXRpb25zIDogW10pLmZpbmQoeD0+eC5pZD09PXIuaWxsdXN0cmF0aW9uX2lkKTsKICAgICAgcmV0dXJuIChpbGw\/aWxsLnJlZjonPycpKycgJytyLmZvcm1hdCsnIMOXJytyLnF1YW50aXR5OwogICAgfSkuam9pbignLCAnKTsKICAgIGxvZ0FjdGl2aXR5KCdwZWRpZG8nLCAnTWFuZMOzIHVuIHBlZGlkbycgKyAoY3VzdG9tZXJfbmFtZT8oJyAoIicrY3VzdG9tZXJfbmFtZSsnIiknKTonJykgKyAnOiAnICsgaXRlbXNTdW1tYXJ5KTsKICB9CiAgaWYoYnRuKSBidG4uZGlzYWJsZWQgPSBmYWxzZTsKICBjbG9zZU9yZGVyQ29uZmlybSgpOwogIGNvbnN0IG1zZ0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29yZC1tc2cnKTsKICBpZihtc2dFbCkgbXNnRWwuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9Im1zZyBvayI+UGVkaWRvIGVudmlhZG8uIMKhR3JhY2lhcyE8L2Rpdj4nOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcmRlci1mb3JtJykucmVzZXQoKTsKICBhcHBseURlZmF1bHRDaGFubmVsKCk7CiAgZm9yY2VSZWxvY2tDaGFubmVsKCdvcmQtY2hhbm5lbCcsJ29yZCcpOwogIG9yZGVyQ2FydCA9IFtdOwogIHJlbmRlck9yZGVySXRlbXMoKTsKICBpZihteU9yZGVyc0NoYW5uZWxJZCgpKSBsb2FkTXlPcmRlcnMoKTsKfQoKLy8gR2VuZXJhIGxhcyA8b3B0aW9uPiBkZSB1biBzZWxlY3RvciBkZSBtZXMgdGlwbyAic2VwdGllbWJyZSAyMDI2IiBjb24gdmFsb3IgIllZWVktTU0iLgovLyBTZSB1c2EgZW4gdmV6IGRlIDxpbnB1dCB0eXBlPSJtb250aCI+IHBvcnF1ZSBTYWZhcmkgKHNvYnJlIHRvZG8gZW4gTWFjKSBubyBsbyBzb3BvcnRhCi8vIGJpZW4geSBsbyBjb252aWVydGUgZW4gdW4gY2FtcG8gZGUgdGV4dG8gbGlicmUgZG9uZGUgZWwgdXN1YXJpbyBubyBzYWJlIHF1w6kgZm9ybWF0byBwb25lcgovLyB5IHNvbG8gZGEgZXJyb3Ig4oCUIGNvbiB1biA8c2VsZWN0PiBub3JtYWwgZnVuY2lvbmEgaWd1YWwgZW4gdG9kb3MgbG9zIG5hdmVnYWRvcmVzLgpmdW5jdGlvbiBtb250aE9wdGlvbnNIdG1sKG1vbnRoc0JhY2ssIG1vbnRoc0ZvcndhcmQsIG9wdHMpewogIG9wdHMgPSBvcHRzIHx8IHt9OwogIGNvbnN0IGl0ZW1zID0gW107CiAgaWYob3B0cy5ibGFua0xhYmVsKSBpdGVtcy5wdXNoKGA8b3B0aW9uIHZhbHVlPSIiPiR7b3B0cy5ibGFua0xhYmVsfTwvb3B0aW9uPmApOwogIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7CiAgY29uc3QgbW9udGhOYW1lID0gZCA9PiBkLnRvTG9jYWxlRGF0ZVN0cmluZyhhcHBMb2NhbGUoKSwge21vbnRoOidsb25nJ30pOwogIGNvbnN0IGN1clZhbCA9IG5vdy5nZXRGdWxsWWVhcigpKyctJytTdHJpbmcobm93LmdldE1vbnRoKCkrMSkucGFkU3RhcnQoMiwnMCcpOwogIGZvcihsZXQgb2Zmc2V0PW1vbnRoc0ZvcndhcmQ7IG9mZnNldD49LW1vbnRoc0JhY2s7IG9mZnNldC0tKXsKICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShub3cuZ2V0RnVsbFllYXIoKSwgbm93LmdldE1vbnRoKCkrb2Zmc2V0LCAxKTsKICAgIGNvbnN0IHkgPSBkLmdldEZ1bGxZZWFyKCk7CiAgICBjb25zdCBtID0gU3RyaW5nKGQuZ2V0TW9udGgoKSsxKS5wYWRTdGFydCgyLCcwJyk7CiAgICBjb25zdCB2YWwgPSB5KyctJyttOwogICAgaXRlbXMucHVzaChgPG9wdGlvbiB2YWx1ZT0iJHt2YWx9IiR7KHZhbD09PWN1clZhbCAmJiAhb3B0cy5ibGFua0xhYmVsKT8nIHNlbGVjdGVkJzonJ30+JHttb250aE5hbWUoZCl9ICR7eX08L29wdGlvbj5gKTsKICB9CiAgcmV0dXJuIGl0ZW1zLmpvaW4oJycpOwp9Ci8vIC0tLS0tLS0tLS0gTU9OVEhMWSBTQUxFUyBGT1JNIC0tLS0tLS0tLS0KZnVuY3Rpb24gcmVmcmVzaEZvcm1hdE9wdGlvbnMoc2VsLCBmbXRTZWwpewogIGNvbnN0IG9wdCA9IHNlbC5vcHRpb25zW3NlbC5zZWxlY3RlZEluZGV4XTsKICBjb25zdCBmbXRzID0gKG9wdD8uZGF0YXNldC5mb3JtYXRzfHwnJykuc3BsaXQoJywnKS5maWx0ZXIoQm9vbGVhbik7CiAgZm10U2VsLmlubmVySFRNTCA9IGZtdHMubWFwKGY9PmA8b3B0aW9uIHZhbHVlPSIke2Z9Ij4ke2Z9PC9vcHRpb24+YCkuam9pbignJyk7Cn0KbGV0IHNhbGVQcm9kdWN0VHlwZSA9ICdsYW1pbmEnOwpmdW5jdGlvbiBzZXRTYWxlUHJvZHVjdFR5cGUodCl7CiAgc2FsZVByb2R1Y3RUeXBlID0gdDsKICBhbGxUeXBlS2V5cygpLmZvckVhY2goaz0+eyBjb25zdCBiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYWxlLXR5cGUtJytrKTsgaWYoYikgYi5jbGFzc0xpc3QudG9nZ2xlKCdhY3RpdmUnLCB0PT09ayk7IH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZGQtc2FsZS1yb3ctYnRuJykudGV4dENvbnRlbnQgPSB3aW5kb3cudCgnKyBBw7FhZGlyIHt0aXBvfScsIHt0aXBvOiB0eXBlTWV0YSh0KS5sYWJlbC50b0xvd2VyQ2FzZSgpfSk7CiAgY29uc3Qgcm93TXNnRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FsZS1hZGRyb3ctbXNnJyk7CiAgaWYocm93TXNnRWwpIHJvd01zZ0VsLmlubmVySFRNTCA9ICcnOwp9Ci8vIElndWFsIHF1ZSBjb21wdXRlU2FsZUFsbG93ZWRNYXAoKSwgcGVybyBkZXNjb250YW5kbyBhZGVtw6FzIGxvIHF1ZSB5YSByZXNlcnZhbiBsYXMgbMOtbmVhcwovLyBDT05GSVJNQURBUyBkZSBlc3RhIG1pc21hIGxpc3RhIHRvZGF2w61hIHNpbiBlbnZpYXIg4oCUIGFzw60sIHNpIHlhIHB1c2lzdGUgNSBkZSB1biBmb3JtYXRvIGVuCi8vIG90cmEgbMOtbmVhIHkgYWjDrSBzZSBhZ290YWJhIGVsIHN0b2NrLCBlc2EgY29tYmluYWNpw7NuIGRlamEgZGUgb2ZyZWNlcnNlIGFsIGHDsWFkaXIgdW5hIGzDrW5lYQovLyBudWV2YSAoYW50ZXMgc2VndcOtYSBhcGFyZWNpZW5kbyBlbiBlbCBkZXNwbGVnYWJsZSwgYXVucXVlIGx1ZWdvICJDb25maXJtYXIiIGxhIGJsb3F1ZWFyYSkuCmZ1bmN0aW9uIGNvbXB1dGVTYWxlQWxsb3dlZE1hcEF2YWlsYWJsZSgpewogIGNvbnN0IGJhc2UgPSBjb21wdXRlU2FsZUFsbG93ZWRNYXAobXlTdG9ja1Jvd3MsIGV4aXN0aW5nU2FsZXNGb3JNb250aCk7CiAgY29uc3QgYXZhaWwgPSB7fTsKICBPYmplY3Qua2V5cyhiYXNlKS5mb3JFYWNoKGlsbElkPT57CiAgICBiYXNlW2lsbElkXS5mb3JFYWNoKGZtdD0+ewogICAgICBjb25zdCBtYXggPSBzYWxlUm93TWF4UXR5KGlsbElkLCBmbXQpIC0gc2FsZVJlc2VydmVkUXR5Rm9yS2V5KGlsbElkLCBmbXQsIG51bGwpOwogICAgICBpZihtYXggPiAwKXsKICAgICAgICBpZighYXZhaWxbaWxsSWRdKSBhdmFpbFtpbGxJZF0gPSBuZXcgU2V0KCk7CiAgICAgICAgYXZhaWxbaWxsSWRdLmFkZChmbXQpOwogICAgICB9CiAgICB9KTsKICB9KTsKICByZXR1cm4gYXZhaWw7Cn0KZnVuY3Rpb24gYWRkU2FsZVJvdygpewogIC8vIFNvbG8gZGVqYSBlbGVnaXIgbG8gcXVlIGVzYSB0aWVuZGEgdGllbmUgc3RvY2sgYWhvcmEgbWlzbW8g4oCUIGFzw60gc2UgZXZpdGEgcmVwb3J0YXIgcG9yIGVycm9yCiAgLy8gYWxnbyBxdWUgbm8gdGllbmUuIChMbyB5YSByZXBvcnRhZG8gZXN0ZSBtZXMgc2Ugc3VtYTsgcGFyYSBjb3JyZWdpcmxvLCBBZG1pbiDihpIgUmVnaXN0cm8gZGUgdmVudGFzLikKICBjb25zdCBhbGxvd2VkTWFwID0gY29tcHV0ZVNhbGVBbGxvd2VkTWFwQXZhaWxhYmxlKCk7CiAgY29uc3QgcG9vbCA9IGlsbHVzdHJhdGlvbnMuZmlsdGVyKGk9PihpLnByb2R1Y3RfdHlwZXx8J2xhbWluYScpPT09c2FsZVByb2R1Y3RUeXBlICYmIGFsbG93ZWRNYXBbaS5pZF0gJiYgYWxsb3dlZE1hcFtpLmlkXS5zaXplKTsKICBjb25zdCByb3dNc2dFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYWxlLWFkZHJvdy1tc2cnKTsKICBpZighcG9vbC5sZW5ndGgpewogICAgaWYocm93TXNnRWwpIHJvd01zZ0VsLmlubmVySFRNTCA9ICc8c3BhbiBzdHlsZT0iY29sb3I6dmFyKC0tYXZpc28pOyI+Jyt0KCdFc3RhIHRpZW5kYSBubyB0aWVuZSB7dGlwb30gZW4gc3RvY2ssIGFzw60gcXVlIG5vIGhheSBuYWRhIHF1ZSByZXBvcnRhciBhcXXDrS4nLCB7dGlwbzogdHlwZU1ldGEoc2FsZVByb2R1Y3RUeXBlKS5wbHVyYWx9KSsnPC9zcGFuPic7CiAgICByZXR1cm47CiAgfQogIGlmKHJvd01zZ0VsKSByb3dNc2dFbC5pbm5lckhUTUwgPSAnJzsKICBjb25zdCB3cmFwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgLy8gMTgvMDkvMjAyNjogbWlzbW8gZGlzZcOxbyBxdWUgbGFzIGzDrW5lYXMgZGUgUGVkaWRvcyAoZm90bywgY2FudGlkYWQg4oiSIC8gKyBncmFuZGUgeSAiUXVpdGFyIgogIC8vIHNlcGFyYWRvIHkgY29uIGNvbmZpcm1hY2nDs24pLiBTZSBtYW50aWVuZW4gbGFzIGNsYXNlcyAucm93Ly5zYWxlLSogcXVlIHVzYSBlbCByZXN0byBkZSBsYSBsw7NnaWNhLgogIHdyYXAuY2xhc3NOYW1lPSdyb3cgc2FsZS1saW5lIG9yZGVyLWxpbmUnOwogIHdyYXAuZGF0YXNldC5jb25maXJtZWQgPSAnMCc7CiAgd3JhcC5pbm5lckhUTUwgPSBgCiAgICA8ZGl2IGNsYXNzPSJvcmRlci1saW5lLXRodW1iIHNhbGUtdGh1bWIiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0ib3JkZXItbGluZS1maWVsZHMiPgogICAgICA8ZGl2IGNsYXNzPSJvcmRlci1saW5lLWlsbCI+PGxhYmVsPkFydMOtY3VsbzwvbGFiZWw+PHNlbGVjdCBjbGFzcz0ic2FsZS1pbGwiPiR7c2FsZUlsbHVzdHJhdGlvbk9wdGlvbnMocG9vbFswXT8uaWQsIHNhbGVQcm9kdWN0VHlwZSwgYWxsb3dlZE1hcCl9PC9zZWxlY3Q+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Im9yZGVyLWxpbmUtYm90dG9tIj4KICAgICAgICA8ZGl2PjxsYWJlbD5Gb3JtYXRvPC9sYWJlbD48c2VsZWN0IGNsYXNzPSJzYWxlLWZtdCI+PC9zZWxlY3Q+PC9kaXY+CiAgICAgICAgPGRpdj48bGFiZWw+VW5pZGFkZXMgdmVuZGlkYXM8L2xhYmVsPgogICAgICAgICAgPGRpdiBjbGFzcz0icXR5LXN0ZXBwZXIiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InNhbGUtc3RlcCIgYXJpYS1sYWJlbD0iVW5hIG1lbm9zIiBvbmNsaWNrPSJzdGVwU2FsZVF0eSh0aGlzLC0xKSI+4oiSPC9idXR0b24+CiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0ic2FsZS1xdHkiIHR5cGU9Im51bWJlciIgbWluPSIxIiB2YWx1ZT0iMSIgaW5wdXRtb2RlPSJudW1lcmljIiBhcmlhLWxhYmVsPSJVbmlkYWRlcyB2ZW5kaWRhcyI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ic2FsZS1zdGVwIiBhcmlhLWxhYmVsPSJVbmEgbcOhcyIgb25jbGljaz0ic3RlcFNhbGVRdHkodGhpcywxKSI+KzwvYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzYWxlLWxpbmUtYWN0aW9ucyI+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gc21hbGwgY29uZmlybS1idG4iIG9uY2xpY2s9ImNvbmZpcm1TYWxlUm93KHRoaXMpIj7inJMgQ29uZmlybWFyIGzDrW5lYTwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIHNlY29uZGFyeSBzbWFsbCBlZGl0LWJ0biBoaWRkZW4iIG9uY2xpY2s9ImVkaXRTYWxlUm93KHRoaXMpIj5FZGl0YXI8L2J1dHRvbj4KICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im9yZGVyLWxpbmUtcmVtb3ZlIiBvbmNsaWNrPSJyZW1vdmVTYWxlUm93KHRoaXMpIj5RdWl0YXI8L2J1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InJvdy1lcnIiIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1lcnJvcik7Ij48L2Rpdj4KICAgIDwvZGl2PmA7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbGUtaXRlbXMnKS5wcmVwZW5kKHdyYXApOwogIGNvbnN0IGlsbFNlbCA9IHdyYXAucXVlcnlTZWxlY3RvcignLnNhbGUtaWxsJyk7CiAgY29uc3QgZm10U2VsID0gd3JhcC5xdWVyeVNlbGVjdG9yKCcuc2FsZS1mbXQnKTsKICByZWZyZXNoRm9ybWF0T3B0aW9ucyhpbGxTZWwsIGZtdFNlbCk7CiAgdXBkYXRlU2FsZVJvd01heFVJKHdyYXApOwogIHVwZGF0ZVNhbGVUaHVtYih3cmFwKTsKICBpbGxTZWwuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZT0+eyByZWZyZXNoRm9ybWF0T3B0aW9ucyhlLnRhcmdldCwgZm10U2VsKTsgdXBkYXRlU2FsZVJvd01heFVJKHdyYXApOyB1cGRhdGVTYWxlVGh1bWIod3JhcCk7IH0pOwogIGZtdFNlbC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoKT0+dXBkYXRlU2FsZVJvd01heFVJKHdyYXApKTsKfQovLyBTdW1hIGxhcyB1bmlkYWRlcyBxdWUgb3RyYXMgbMOtbmVhcyBZQSBDT05GSVJNQURBUyBkZSBlc3RhIG1pc21hIGxpc3RhIHJlc2VydmFuIHBhcmEgbGEgbWlzbWEKLy8gaWx1c3RyYWNpw7NuK2Zvcm1hdG8sIHBhcmEgbm8gcG9kZXIgY29uZmlybWFyIHVuYSBzZWd1bmRhIChvIHRlcmNlcmEpIGzDrW5lYSBkZWwgbWlzbW8gZm9ybWF0bwovLyBxdWUsIHN1bWFkYSBhIGxhcyBhbnRlcmlvcmVzLCBzdXBlcmUgZWwgc3RvY2sgZGlzcG9uaWJsZSDigJQgbGEgcHJpbWVyYSBjb21wcm9iYWNpw7NuIHBvciBzw60gc29sYQovLyBubyBsbyB2ZcOtYSBwb3JxdWUgY2FkYSBsw61uZWEgY29uc3VsdGFiYSBlbCBzdG9jayBwb3Igc2VwYXJhZG8sIHNpbiBjb250YXIgbG8gcXVlIHlhIHJlc2VydmFiYW4KLy8gbGFzIGRlbcOhcyBsw61uZWFzIGRlIGxhIGxpc3RhLgpmdW5jdGlvbiBzYWxlUmVzZXJ2ZWRRdHlGb3JLZXkoaWxsdXN0cmF0aW9uX2lkLCBmb3JtYXQsIGV4Y2x1ZGVXcmFwKXsKICBsZXQgdG90YWwgPSAwOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNzYWxlLWl0ZW1zIC5yb3cnKS5mb3JFYWNoKHI9PnsKICAgIGlmKHI9PT1leGNsdWRlV3JhcCkgcmV0dXJuOwogICAgaWYoci5kYXRhc2V0LmNvbmZpcm1lZCAhPT0gJzEnKSByZXR1cm47CiAgICBpZihyLnF1ZXJ5U2VsZWN0b3IoJy5zYWxlLWlsbCcpLnZhbHVlPT09aWxsdXN0cmF0aW9uX2lkICYmIHIucXVlcnlTZWxlY3RvcignLnNhbGUtZm10JykudmFsdWU9PT1mb3JtYXQpewogICAgICB0b3RhbCArPSBwYXJzZUludChyLnF1ZXJ5U2VsZWN0b3IoJy5zYWxlLXF0eScpLnZhbHVlfHwnMCcsMTApOwogICAgfQogIH0pOwogIHJldHVybiB0b3RhbDsKfQpmdW5jdGlvbiBzYWxlUm93QXZhaWxhYmxlTWF4KHdyYXApewogIGNvbnN0IGlsbFNlbCA9IHdyYXAucXVlcnlTZWxlY3RvcignLnNhbGUtaWxsJyk7CiAgY29uc3QgZm10U2VsID0gd3JhcC5xdWVyeVNlbGVjdG9yKCcuc2FsZS1mbXQnKTsKICBpZighaWxsU2VsLnZhbHVlIHx8ICFmbXRTZWwudmFsdWUpIHJldHVybiAwOwogIGNvbnN0IHRvdGFsID0gc2FsZVJvd01heFF0eShpbGxTZWwudmFsdWUsIGZtdFNlbC52YWx1ZSk7CiAgY29uc3QgcmVzZXJ2ZWQgPSBzYWxlUmVzZXJ2ZWRRdHlGb3JLZXkoaWxsU2VsLnZhbHVlLCBmbXRTZWwudmFsdWUsIHdyYXApOwogIHJldHVybiBNYXRoLm1heCgwLCB0b3RhbCAtIHJlc2VydmVkKTsKfQpmdW5jdGlvbiB1cGRhdGVTYWxlVGh1bWIod3JhcCl7CiAgY29uc3QgaWxsID0gaWxsdXN0cmF0aW9ucy5maW5kKHg9PnguaWQ9PT13cmFwLnF1ZXJ5U2VsZWN0b3IoJy5zYWxlLWlsbCcpLnZhbHVlKTsKICBjb25zdCBib3ggPSB3cmFwLnF1ZXJ5U2VsZWN0b3IoJy5zYWxlLXRodW1iJyk7CiAgaWYoYm94KSBib3guaW5uZXJIVE1MID0gaWxsPy5pbWFnZV91cmwgPyBgPGltYCtgZyBzcmM9IiR7dGh1bWJTcmMoaWxsKX0iIGFsdD0iJHtlc2NhcGVBdHRyKGlsbC5uYW1lfHxpbGwucmVmKX0iPmAgOiBgPGRpdiBjbGFzcz0ibm9pbWciPiR7Tk9JTUdfSUNPTn08L2Rpdj5gOwp9CmZ1bmN0aW9uIHN0ZXBTYWxlUXR5KGJ0biwgZGVsdGEpewogIGNvbnN0IHdyYXAgPSBidG4uY2xvc2VzdCgnLnJvdycpOwogIGNvbnN0IGlucCA9IHdyYXAucXVlcnlTZWxlY3RvcignLnNhbGUtcXR5Jyk7CiAgaWYoaW5wLmRpc2FibGVkKSByZXR1cm47CiAgY29uc3QgbWF4ID0gcGFyc2VJbnQoaW5wLm1heHx8JzAnLDEwKSB8fCBJbmZpbml0eTsKICBpbnAudmFsdWUgPSBNYXRoLm1pbihtYXgsIE1hdGgubWF4KDEsIChwYXJzZUludChpbnAudmFsdWUsMTApfHwxKSArIGRlbHRhKSk7Cn0KYXN5bmMgZnVuY3Rpb24gcmVtb3ZlU2FsZVJvdyhidG4pewogIGNvbnN0IHdyYXAgPSBidG4uY2xvc2VzdCgnLnJvdycpOwogIGNvbnN0IGlsbCA9IGlsbHVzdHJhdGlvbnMuZmluZCh4PT54LmlkPT09d3JhcC5xdWVyeVNlbGVjdG9yKCcuc2FsZS1pbGwnKS52YWx1ZSk7CiAgY29uc3Qgd2hhdCA9IGlsbCA\/IGAke2lsbC5yZWZ9IOKAlCAke2lsbC5uYW1lfWAgOiB0KCdlc3RhIGzDrW5lYScpOwogIGlmKCEoYXdhaXQgY29uZmlybWEodCgnwr9RdWl0YXIge3doYXR9IGRlbCByZXBvcnRlPycsIHt3aGF0fSksIHtzaTogdCgnUXVpdGFyJyl9KSkpIHJldHVybjsKICB3cmFwLnJlbW92ZSgpOwp9CmZ1bmN0aW9uIHVwZGF0ZVNhbGVSb3dNYXhVSSh3cmFwKXsKICBjb25zdCBpbGxTZWwgPSB3cmFwLnF1ZXJ5U2VsZWN0b3IoJy5zYWxlLWlsbCcpOwogIGNvbnN0IGZtdFNlbCA9IHdyYXAucXVlcnlTZWxlY3RvcignLnNhbGUtZm10Jyk7CiAgY29uc3QgcXR5SW5wdXQgPSB3cmFwLnF1ZXJ5U2VsZWN0b3IoJy5zYWxlLXF0eScpOwogIGlmKCFpbGxTZWwudmFsdWUgfHwgIWZtdFNlbC52YWx1ZSkgcmV0dXJuOwogIGNvbnN0IG1heCA9IHNhbGVSb3dBdmFpbGFibGVNYXgod3JhcCk7CiAgcXR5SW5wdXQubWF4ID0gbWF4OwogIHF0eUlucHV0LnRpdGxlID0gJ03DoXhpbW8gZGlzcG9uaWJsZTogJyArIG1heCArICcgdW5pZGFkZXMnOwogIC8vIDA2LzEwLzIwMjYgKHJlcGFzbyBkZWwgMjkvMDkpOiBlbCBtw6F4aW1vIHNvbG8gc2UgdmXDrWEgcGFzYW5kbyBlbCByYXTDs24gKGVuIGVsIG3Ds3ZpbCwgbnVuY2EpOiBhaG9yYSB2YSBlc2NyaXRvIGJham8gbGEgbMOtbmVhLgogIGxldCBtYXhFbCA9IHdyYXAucXVlcnlTZWxlY3RvcignLnJvdy1tYXgnKTsKICBpZighbWF4RWwpeyBtYXhFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBtYXhFbC5jbGFzc05hbWUgPSAncm93LW1heCc7IGNvbnN0IHJlZiA9IHdyYXAucXVlcnlTZWxlY3RvcignLnJvdy1lcnInKTsgaWYocmVmKSByZWYucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobWF4RWwsIHJlZik7IGVsc2Ugd3JhcC5hcHBlbmRDaGlsZChtYXhFbCk7IH0KICBtYXhFbC50ZXh0Q29udGVudCA9IGxvY2tlZENoYW5uZWwgPyB0KG1heD09PTEgPyAnVGUgcXVlZGEge259IGVuIHR1IHRpZW5kYSAobG8gbcOheGltbyBxdWUgcHVlZGVzIHJlcG9ydGFyKS4nIDogJ1RlIHF1ZWRhbiB7bn0gZW4gdHUgdGllbmRhIChsbyBtw6F4aW1vIHF1ZSBwdWVkZXMgcmVwb3J0YXIpLicsIHtuOiBtYXh9KSA6ICdBIGVzdGEgdGllbmRhIGxlICcgKyAobWF4PT09MSA\/ICdxdWVkYSAnIDogJ3F1ZWRhbiAnKSArIG1heCArICcgKGxvIG3DoXhpbW8gcXVlIHNlIHB1ZWRlIHJlcG9ydGFyKS4nOwogIGNvbnN0IGVyckVsID0gd3JhcC5xdWVyeVNlbGVjdG9yKCcucm93LWVycicpOwogIGlmKGVyckVsKSBlcnJFbC50ZXh0Q29udGVudCA9ICcnOwp9Ci8vIERlamEgbGEgbMOtbmVhIGZpamEgKHNvbG8gc2UgcHVlZGUgIkVkaXRhciIgc2kgaHVibyB1biBlcnJvcikgcGFyYSBpciBjb25maXJtYW5kbyB1bmEgYSB1bmEsCi8vIGNvbW8gcGlkacOzIGVsIHVzdWFyaW8sIHkgZGUgcGFzbyBjb21wcnVlYmEgcXVlIG5vIHNlIHJlcG9ydGUgbcOhcyBkZSBsbyBxdWUgbGEgdGllbmRhIHRpZW5lLAovLyBjb250YW5kbyB0YW1iacOpbiBsbyBxdWUgeWEgcmVzZXJ2YW4gb3RyYXMgbMOtbmVhcyBjb25maXJtYWRhcyBkZSBsYSBtaXNtYSBpbHVzdHJhY2nDs24rZm9ybWF0by4KZnVuY3Rpb24gY29uZmlybVNhbGVSb3coYnRuKXsKICBjb25zdCB3cmFwID0gYnRuLmNsb3Nlc3QoJy5yb3cnKTsKICBjb25zdCBpbGxTZWwgPSB3cmFwLnF1ZXJ5U2VsZWN0b3IoJy5zYWxlLWlsbCcpOwogIGNvbnN0IGZtdFNlbCA9IHdyYXAucXVlcnlTZWxlY3RvcignLnNhbGUtZm10Jyk7CiAgY29uc3QgcXR5SW5wdXQgPSB3cmFwLnF1ZXJ5U2VsZWN0b3IoJy5zYWxlLXF0eScpOwogIGNvbnN0IGVyckVsID0gd3JhcC5xdWVyeVNlbGVjdG9yKCcucm93LWVycicpOwogIGNvbnN0IHF0eSA9IHBhcnNlSW50KHF0eUlucHV0LnZhbHVlfHwnMCcsMTApOwogIGlmKCFpbGxTZWwudmFsdWUgfHwgIWZtdFNlbC52YWx1ZSl7IGlmKGVyckVsKSBlcnJFbC50ZXh0Q29udGVudCA9ICdFbGlnZSBpbHVzdHJhY2nDs24geSBmb3JtYXRvLic7IHJldHVybjsgfQogIGlmKCEocXR5PjApKXsgaWYoZXJyRWwpIGVyckVsLnRleHRDb250ZW50ID0gJ0luZGljYSB1bmEgY2FudGlkYWQgbWF5b3IgcXVlIDAuJzsgcmV0dXJuOyB9CiAgY29uc3QgbWF4ID0gc2FsZVJvd0F2YWlsYWJsZU1heCh3cmFwKTsKICBpZihxdHkgPiBtYXgpewogICAgaWYobWF4PD0wKXsKICAgICAgaWYoZXJyRWwpIGVyckVsLnRleHRDb250ZW50ID0gJ1lhIGhhcyByZXNlcnZhZG8gdG9kbyBlbCBzdG9jayBkaXNwb25pYmxlIGRlIGVzdGUgZm9ybWF0byBlbiBvdHJhIGzDrW5lYSBkZSBlc3RhIGxpc3RhLic7CiAgICB9IGVsc2UgewogICAgICBpZihlcnJFbCkgZXJyRWwudGV4dENvbnRlbnQgPSB0KCdFbnRyZSBlc3RhIGzDrW5lYSB5IGxhcyBxdWUgeWEgdGllbmVzIGNvbmZpcm1hZGFzIGRlIGVzdGUgZm9ybWF0bywgc29sbyBxdWVkYW4ge259IHVuaWRhZGVzIGRpc3BvbmlibGVzLicsIHtuOiBtYXh9KTsKICAgIH0KICAgIHJldHVybjsKICB9CiAgaWYoZXJyRWwpIGVyckVsLnRleHRDb250ZW50ID0gJyc7CiAgaWxsU2VsLmRpc2FibGVkID0gdHJ1ZTsgZm10U2VsLmRpc2FibGVkID0gdHJ1ZTsgcXR5SW5wdXQuZGlzYWJsZWQgPSB0cnVlOwogIHdyYXAucXVlcnlTZWxlY3RvckFsbCgnLnNhbGUtc3RlcCcpLmZvckVhY2goYj0+Yi5kaXNhYmxlZD10cnVlKTsKICB3cmFwLmRhdGFzZXQuY29uZmlybWVkID0gJzEnOwogIGJ0bi5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTsKICBjb25zdCBlZGl0QnRuID0gd3JhcC5xdWVyeVNlbGVjdG9yKCcuZWRpdC1idG4nKTsKICBpZihlZGl0QnRuKSBlZGl0QnRuLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpOwp9CmZ1bmN0aW9uIGVkaXRTYWxlUm93KGJ0bil7CiAgY29uc3Qgd3JhcCA9IGJ0bi5jbG9zZXN0KCcucm93Jyk7CiAgd3JhcC5xdWVyeVNlbGVjdG9yQWxsKCcuc2FsZS1pbGwsLnNhbGUtZm10LC5zYWxlLXF0eSwuc2FsZS1zdGVwJykuZm9yRWFjaChlbD0+ZWwuZGlzYWJsZWQ9ZmFsc2UpOwogIHdyYXAuZGF0YXNldC5jb25maXJtZWQgPSAnMCc7CiAgYnRuLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpOwogIGNvbnN0IGNvbmZpcm1CdG4gPSB3cmFwLnF1ZXJ5U2VsZWN0b3IoJy5jb25maXJtLWJ0bicpOwogIGlmKGNvbmZpcm1CdG4pIGNvbmZpcm1CdG4uY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7CiAgdXBkYXRlU2FsZVJvd01heFVJKHdyYXApOwp9CmZ1bmN0aW9uIHVwZGF0ZVNvbGRUaXRsZSgpewogIGNvbnN0IHNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYWxlLW1vbnRoJyk7CiAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FsZS1zb2xkLXRpdGxlJyk7CiAgaWYoIXNlbCB8fCAhZWwpIHJldHVybjsKICBjb25zdCBsYWJlbCA9IHNlbC5vcHRpb25zW3NlbC5zZWxlY3RlZEluZGV4XT8udGV4dENvbnRlbnQgfHwgJyc7CiAgZWwudGV4dENvbnRlbnQgPSBsYWJlbCA\/IHQoJ8K\/UXXDqSBoYXMgdmVuZGlkbyBlbiB7bWVzfT8nLCB7bWVzOiBsYWJlbH0pIDogdCgnVW5pZGFkZXMgdmVuZGlkYXMnKTsKfQphc3luYyBmdW5jdGlvbiByZWZyZXNoRXhpc3RpbmdTYWxlcygpewogIHVwZGF0ZVNvbGRUaXRsZSgpOwogIGNvbnN0IGNoYW5uZWxfaWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FsZS1jaGFubmVsJykudmFsdWU7CiAgY29uc3QgbW9udGhWYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FsZS1tb250aCcpLnZhbHVlOwogIGNvbnN0IHdyYXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FsZS1leGlzdGluZycpOwogIGlmKCFjaGFubmVsX2lkIHx8ICFtb250aFZhbCl7IGV4aXN0aW5nU2FsZXNGb3JNb250aCA9IFtdOyBpZih3cmFwKSB3cmFwLmlubmVySFRNTD0nJzsgcmV0dXJuOyB9CiAgY29uc3QgbW9udGggPSBtb250aFZhbCArICctMDEnOwogIC8vIFRpZW5kYSBjb24gYWNjZXNvIHByb3BpbzogbGVlIHBvciBsYSBmdW5jacOzbiBxdWUgY29tcHJ1ZWJhIHN1IGNvbnRyYXNlw7FhICh5YSBubyBoYXkgbGVjdHVyYQogIC8vIHDDumJsaWNhIGRlIG1vbnRobHlfc2FsZXMpLiBNYWVzdHJvL2FkbWluOiBzaWd1ZSBsZXllbmRvIGRpcmVjdG8gY29uIHN1IHNlc2nDs24gZGUgdmVyZGFkLgogIGlmKGxvY2tlZENoYW5uZWwpewogICAgY29uc3QgeyBkYXRhLCBlcnJvciB9ID0gYXdhaXQgc2IucnBjKCdnZXRfc3RvcmVfbW9udGhseV9zYWxlcycsIHsgaW5wdXRfY2hhbm5lbF9pZDogY2hhbm5lbF9pZCwgaW5wdXRfcGFzc3dvcmQ6IGxvY2tlZENoYW5uZWxQYXNzd29yZCwgaW5wdXRfbW9udGg6IG1vbnRoIH0pOwogICAgZXhpc3RpbmdTYWxlc0Zvck1vbnRoID0gZXJyb3IgPyBbXSA6IChkYXRhIHx8IFtdKS5tYXAocj0+KHsuLi5yLCBpbGx1c3RyYXRpb25zOntyZWY6ci5yZWYsIG5hbWU6ci5uYW1lfX0pKTsKICB9IGVsc2UgewogICAgY29uc3Qge2RhdGF9ID0gYXdhaXQgc2IuZnJvbSgnbW9udGhseV9zYWxlcycpLnNlbGVjdCgnKiwgaWxsdXN0cmF0aW9ucyhyZWYsbmFtZSknKS5lcSgnY2hhbm5lbF9pZCcsIGNoYW5uZWxfaWQpLmVxKCdtb250aCcsIG1vbnRoKTsKICAgIGV4aXN0aW5nU2FsZXNGb3JNb250aCA9IGRhdGEgfHwgW107CiAgfQogIGlmKCF3cmFwKSByZXR1cm47CiAgaWYoIWV4aXN0aW5nU2FsZXNGb3JNb250aC5sZW5ndGgpeyB3cmFwLmlubmVySFRNTCA9ICcnOyByZXR1cm47IH0KICB3cmFwLmlubmVySFRNTCA9ICc8ZGl2IHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7YmFja2dyb3VuZDp2YXIoLS1jcmVtYS0yKTtib3JkZXItcmFkaXVzOjZweDtwYWRkaW5nOjhweCAxMHB4O21hcmdpbi1ib3R0b206MTBweDsiPicgKwogICAgdCgnWWEgcmVwb3J0YWRvIHBhcmEgZXN0ZSBtZXM6IHtsaXN0YX0uIExvIHF1ZSBlbnbDrWVzIGFob3JhIHNlIHN1bWFyw6EgYSBlc28uJywge2xpc3RhOiBleGlzdGluZ1NhbGVzRm9yTW9udGgubWFwKHM9PmAke3MuaWxsdXN0cmF0aW9ucz8ucmVmfHwnJ30gJHtzLmZvcm1hdH0gKCR7cy51bml0c19zb2xkfSlgKS5qb2luKCcsICcpfSkgKyAnPC9kaXY+JzsKfQpsZXQgcGVuZGluZ1NhbGVzUGF5bG9hZCA9IG51bGw7CmZ1bmN0aW9uIHN1Ym1pdFNhbGVzKGUpewogIGUucHJldmVudERlZmF1bHQoKTsKICBjb25zdCBjaGFubmVsX2lkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbGUtY2hhbm5lbCcpLnZhbHVlOwogIGNvbnN0IG1vbnRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbGUtbW9udGgnKS52YWx1ZSArICctMDEnOwogIGNvbnN0IG1zZ0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbGUtbXNnJyk7CiAgY29uc3QgYWxsUm93RWxzID0gWy4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNzYWxlLWl0ZW1zIC5yb3cnKV07CiAgY29uc3QgdW5jb25maXJtZWQgPSBhbGxSb3dFbHMuZmlsdGVyKHI9PnIuZGF0YXNldC5jb25maXJtZWQhPT0nMScpOwogIGlmKHVuY29uZmlybWVkLmxlbmd0aCl7CiAgICBtc2dFbC5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0ibXNnIGVyciI+Jyt0KCdDb25maXJtYSAobyBxdWl0YSkgdG9kYXMgbGFzIGzDrW5lYXMgYW50ZXMgZGUgZW52aWFyIGVsIHJlcG9ydGUg4oCUIGhheSB7bn0gc2luIGNvbmZpcm1hci4nLCB7bjogdW5jb25maXJtZWQubGVuZ3RofSkrJzwvZGl2Pic7CiAgICByZXR1cm4gZmFsc2U7CiAgfQogIGNvbnN0IHJvd3MgPSBhbGxSb3dFbHMubWFwKHI9Pih7CiAgICBpbGx1c3RyYXRpb25faWQ6IHIucXVlcnlTZWxlY3RvcignLnNhbGUtaWxsJykudmFsdWUsCiAgICBmb3JtYXQ6IHIucXVlcnlTZWxlY3RvcignLnNhbGUtZm10JykudmFsdWUsCiAgICB1bml0c19zb2xkOiBwYXJzZUludChyLnF1ZXJ5U2VsZWN0b3IoJy5zYWxlLXF0eScpLnZhbHVlfHwnMCcsMTApLAogICAgY2hhbm5lbF9pZCwgbW9udGgKICB9KSkuZmlsdGVyKHI9PnIudW5pdHNfc29sZD4wKTsKICBpZihyb3dzLmxlbmd0aD09PTApeyBtc2dFbC5pbm5lckhUTUw9JzxkaXYgY2xhc3M9Im1zZyBlcnIiPkluZGljYSBhbCBtZW5vcyB1bmEgdW5pZGFkIHZlbmRpZGEuPC9kaXY+JzsgcmV0dXJuIGZhbHNlOyB9CiAgLy8gU2kgaGF5IGRvcyBsw61uZWFzIGNvbmZpcm1hZGFzIGRlIGxhIG1pc21hIGlsdXN0cmFjacOzbitmb3JtYXRvIChwZXJtaXRpZG8gY3VhbmRvIGVudHJlIGxhcyBkb3MKICAvLyBubyBzdXBlcmFuIGVsIHN0b2NrKSwgc2UgU1VNQU4gZW4gdW5hIHNvbGEg4oCUIHNpIG5vLCBsYSBzZWd1bmRhIHBpc2Fyw61hIGEgbGEgcHJpbWVyYSBhbCBndWFyZGFyLgogIGNvbnN0IGdyb3VwZWRCeUtleSA9IHt9OwogIHJvd3MuZm9yRWFjaChyPT57CiAgICBjb25zdCBrZXkgPSByLmlsbHVzdHJhdGlvbl9pZCsnfCcrci5mb3JtYXQ7CiAgICBpZighZ3JvdXBlZEJ5S2V5W2tleV0pIGdyb3VwZWRCeUtleVtrZXldID0gey4uLnIsIHVuaXRzX3NvbGQ6MH07CiAgICBncm91cGVkQnlLZXlba2V5XS51bml0c19zb2xkICs9IHIudW5pdHNfc29sZDsKICB9KTsKICBjb25zdCBncm91cGVkUm93cyA9IE9iamVjdC52YWx1ZXMoZ3JvdXBlZEJ5S2V5KTsKICAvLyBSZWQgZGUgc2VndXJpZGFkOiByZXZhbGlkYSBlbCB0b3RhbCBwb3IgbMOtbmVhICh5YSBhZ3J1cGFkYSkgcG9yIHNpIGVsIHN0b2NrIGNhbWJpw7MgbWllbnRyYXMKICAvLyByZWxsZW5hYmFzIGVsIGZvcm11bGFyaW8uCiAgZm9yKGNvbnN0IHIgb2YgZ3JvdXBlZFJvd3MpewogICAgY29uc3QgbWF4ID0gc2FsZVJvd01heFF0eShyLmlsbHVzdHJhdGlvbl9pZCwgci5mb3JtYXQpOwogICAgaWYoci51bml0c19zb2xkID4gbWF4KXsKICAgICAgbXNnRWwuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9Im1zZyBlcnIiPkVsIHN0b2NrIGhhIGNhbWJpYWRvIG1pZW50cmFzIHJlbGxlbmFiYXMgZWwgZm9ybXVsYXJpbyDigJQgcmV2aXNhIGxhcyBjYW50aWRhZGVzIGUgaW50w6ludGFsbyBkZSBudWV2by48L2Rpdj4nOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQogIG1zZ0VsLmlubmVySFRNTCA9ICcnOwogIHBlbmRpbmdTYWxlc1BheWxvYWQgPSB7Y2hhbm5lbF9pZCwgbW9udGgsIHJvd3M6IGdyb3VwZWRSb3dzfTsKICBvcGVuU2FsZXNDb25maXJtKHBlbmRpbmdTYWxlc1BheWxvYWQpOwogIHJldHVybiBmYWxzZTsKfQpmdW5jdGlvbiBvcGVuU2FsZXNDb25maXJtKHBheWxvYWQpewogIGNvbnN0IGNoYW5uZWxOYW1lID0gKGNoYW5uZWxzLmZpbmQoYz0+Yy5pZD09PXBheWxvYWQuY2hhbm5lbF9pZCk\/Lm5hbWUpIHx8ICcnOwogIGNvbnN0IG1vbnRoTGFiZWwgPSBuZXcgRGF0ZShwYXlsb2FkLm1vbnRoKydUMDA6MDA6MDAnKS50b0xvY2FsZURhdGVTdHJpbmcoYXBwTG9jYWxlKCkse21vbnRoOidsb25nJyx5ZWFyOidudW1lcmljJ30pOwogIGNvbnN0IHRvdGFsVW5pdHMgPSBwYXlsb2FkLnJvd3MucmVkdWNlKChzLHIpPT5zK3IudW5pdHNfc29sZCwwKTsKICBjb25zdCBpdGVtc0h0bWwgPSBwYXlsb2FkLnJvd3MubWFwKHI9PnsKICAgIGNvbnN0IGlsbCA9IGlsbHVzdHJhdGlvbnMuZmluZCh4PT54LmlkPT09ci5pbGx1c3RyYXRpb25faWQpOwogICAgcmV0dXJuIGA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEwcHg7cGFkZGluZzo3cHggMDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1saW5lKTtmb250LXNpemU6MTRweDsiPgogICAgICA8c3Bhbj4ke2lsbD8ucmVmfHwnJ30g4oCUICR7aWxsPy5uYW1lfHwnJ30gPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXN1YXZlKTsiPigke3IuZm9ybWF0fSk8L3NwYW4+PC9zcGFuPgogICAgICA8c3Ryb25nPsOXICR7ci51bml0c19zb2xkfTwvc3Ryb25nPgogICAgPC9kaXY+YDsKICB9KS5qb2luKCcnKTsKICBjb25zdCBzdW1tYXJ5RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FsZXMtY29uZmlybS1zdW1tYXJ5Jyk7CiAgaWYoc3VtbWFyeUVsKSBzdW1tYXJ5RWwuaW5uZXJIVE1MID0gYAogICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tc3VhdmUpO21hcmdpbi1ib3R0b206OHB4OyI+PHN0cm9uZz5UaWVuZGE6PC9zdHJvbmc+ICR7Y2hhbm5lbE5hbWV9ICZuYnNwO8K3Jm5ic3A7IDxzdHJvbmc+TWVzOjwvc3Ryb25nPiAke21vbnRoTGFiZWx9PC9kaXY+CiAgICA8ZGl2PiR7aXRlbXNIdG1sfTwvZGl2PgogICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodDtmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1zdWF2ZSk7bWFyZ2luLXRvcDo4cHg7Ij4ke3QoJ3tufSB2ZW5kaWRhcyBlbiB0b3RhbCcsIHtuOiB0KHRvdGFsVW5pdHM9PT0xPyd7bn0gdW5pZGFkJzone259IHVuaWRhZGVzJywge246IHRvdGFsVW5pdHN9KX0pfTwvZGl2PgogIGA7CiAgY29uc3QgbXNnRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FsZXMtY29uZmlybS1tc2cnKTsKICBpZihtc2dFbCkgbXNnRWwuaW5uZXJIVE1MID0gJyc7CiAgY29uc3QgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FsZXMtY29uZmlybS1tb2RhbCcpOwogIGlmKG1vZGFsKSBtb2RhbC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTsKfQpmdW5jdGlvbiBjbG9zZVNhbGVzQ29uZmlybSgpewogIGNvbnN0IG1vZGFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbGVzLWNvbmZpcm0tbW9kYWwnKTsKICBpZihtb2RhbCkgbW9kYWwuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7CiAgcGVuZGluZ1NhbGVzUGF5bG9hZCA9IG51bGw7Cn0KYXN5bmMgZnVuY3Rpb24gY29uZmlybVN1Ym1pdFNhbGVzKCl7CiAgaWYoIXBlbmRpbmdTYWxlc1BheWxvYWQpIHJldHVybjsKICBjb25zdCB7cm93czogZ3JvdXBlZFJvd3N9ID0gcGVuZGluZ1NhbGVzUGF5bG9hZDsKICBjb25zdCBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FsZXMtY29uZmlybS1idG4nKTsKICBjb25zdCBtb2RhbE1zZ0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbGVzLWNvbmZpcm0tbXNnJyk7CiAgaWYoYnRuKSBidG4uZGlzYWJsZWQgPSB0cnVlOwogIC8vIEN1ZW50YSBEZW1vOiBzaW11bGEgZWwgZW52w61vIChwYXJhIHF1ZSB2ZWFuIGVsIGZsdWpvIGNvbXBsZXRvKSBzaW4gZXNjcmliaXIgbmFkYSBlbiBsYSBCRCByZWFsLgogIGlmKGlzRGVtb01vZGUoKSl7CiAgICBpZihidG4pIGJ0bi5kaXNhYmxlZCA9IGZhbHNlOwogICAgY2xvc2VTYWxlc0NvbmZpcm0oKTsKICAgIGNvbnN0IG1zZ0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbGUtbXNnJyk7CiAgICBpZihtc2dFbCkgbXNnRWwuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJtc2cgb2siPlJlcG9ydGUgZW52aWFkby4gwqFHcmFjaWFzISAoZGVtbyDigJQgbm8gc2UgaGEgZ3VhcmRhZG8gbmFkYSByZWFsKTwvZGl2Pic7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FsZXMtZm9ybScpLnJlc2V0KCk7CiAgICBhcHBseURlZmF1bHRDaGFubmVsKCk7CiAgICBmb3JjZVJlbG9ja0NoYW5uZWwoJ3NhbGUtY2hhbm5lbCcsJ3NhbGUnKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYWxlLWl0ZW1zJykuaW5uZXJIVE1MPScnOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbGUtZXhpc3RpbmcnKS5pbm5lckhUTUw9Jyc7CiAgICBleGlzdGluZ1NhbGVzRm9yTW9udGggPSBbXTsKICAgIHJlZnJlc2hTYWxlU3RvY2tQcmV2aWV3KCk7CiAgICByZXR1cm47CiAgfQogIC8vIElndWFsIHF1ZSBjb24gbG9zIHBlZGlkb3M6IHVuYSB0aWVuZGEgY29uIGFjY2VzbyBwcm9waW8gbWFuZGEgZWwgcmVwb3J0ZSBwb3IgdW5hIGZ1bmNpw7NuCiAgLy8gcXVlIGNvbXBydWViYSBzdSBjb250cmFzZcOxYSBlbiBlbCBzZXJ2aWRvciBhbnRlcyBkZSBlc2NyaWJpciBuYWRhLiBFbCBtYWVzdHJvL2FkbWluIHNpZ3VlCiAgLy8gZXNjcmliaWVuZG8gZGlyZWN0byAoc2VzacOzbiByZWFsIGRlIFN1cGFiYXNlIEF1dGgpLgogIGlmKGxvY2tlZENoYW5uZWwpewogICAgaWYoIShhd2FpdCBlbnN1cmVMb2NrZWRQYXNzd29yZCgpKSl7IGlmKGJ0bikgYnRuLmRpc2FibGVkPWZhbHNlOyByZXR1cm47IH0KICAgIGNvbnN0IHsgZXJyb3IgfSA9IGF3YWl0IHNiLnJwYygnc3VibWl0X3N0b3JlX3NhbGVzJywgewogICAgICBpbnB1dF9jaGFubmVsX2lkOiBwZW5kaW5nU2FsZXNQYXlsb2FkLmNoYW5uZWxfaWQsCiAgICAgIGlucHV0X3Bhc3N3b3JkOiBsb2NrZWRDaGFubmVsUGFzc3dvcmQsCiAgICAgIGlucHV0X21vbnRoOiBwZW5kaW5nU2FsZXNQYXlsb2FkLm1vbnRoLAogICAgICBpbnB1dF9pdGVtczogZ3JvdXBlZFJvd3MKICAgIH0pOwogICAgaWYoZXJyb3IpewogICAgICBpZigvQ29udHJhc2XDsWEgaW5jb3JyZWN0YS8udGVzdChlcnJvci5tZXNzYWdlfHwnJykpewogICAgICAgIGxvY2tlZENoYW5uZWxQYXNzd29yZCA9IG51bGw7CiAgICAgICAgc2FmZVNlc3Npb25SZW1vdmUoJ2lzdHJpY2VfbG9ja2VkX3Bhc3N3b3JkJyk7CiAgICAgIH0KICAgICAgaWYobW9kYWxNc2dFbCkgbW9kYWxNc2dFbC5pbm5lckhUTUw9JzxkaXYgY2xhc3M9Im1zZyBlcnIiPkVycm9yOiAnK2VzY2FwZUF0dHIoZXJyb3IubWVzc2FnZSkrJzwvZGl2Pic7IGlmKGJ0bikgYnRuLmRpc2FibGVkPWZhbHNlOyByZXR1cm47CiAgICB9CiAgfSBlbHNlIHsKICAgIGF3YWl0IHJlZnJlc2hFeGlzdGluZ1NhbGVzKCk7IC8vIGxvIHJlcG9ydGFkbyBkZSB2ZXJkYWQgYWhvcmEsIHBhcmEgc3VtYXIgc2luIGR1cGxpY2FyIGZpbGFzCiAgICBjb25zdCBleGlzdGluZ01hcCA9IHt9OwogICAgZXhpc3RpbmdTYWxlc0Zvck1vbnRoLmZvckVhY2gocz0+eyBleGlzdGluZ01hcFtzLmlsbHVzdHJhdGlvbl9pZCsnfCcrcy5mb3JtYXRdID0gczsgfSk7CiAgICBjb25zdCB0b0luc2VydCA9IGdyb3VwZWRSb3dzLmZpbHRlcihyPT4hZXhpc3RpbmdNYXBbci5pbGx1c3RyYXRpb25faWQrJ3wnK3IuZm9ybWF0XSk7CiAgICBjb25zdCB0b1VwZGF0ZSA9IGdyb3VwZWRSb3dzLmZpbHRlcihyPT5leGlzdGluZ01hcFtyLmlsbHVzdHJhdGlvbl9pZCsnfCcrci5mb3JtYXRdKTsKICAgIGlmKHRvSW5zZXJ0Lmxlbmd0aCl7CiAgICAgIGNvbnN0IHtlcnJvcn0gPSBhd2FpdCBzYi5mcm9tKCdtb250aGx5X3NhbGVzJykuaW5zZXJ0KHRvSW5zZXJ0KTsKICAgICAgaWYoZXJyb3IpeyBpZihtb2RhbE1zZ0VsKSBtb2RhbE1zZ0VsLmlubmVySFRNTD0nPGRpdiBjbGFzcz0ibXNnIGVyciI+RXJyb3I6ICcrZXJyb3IubWVzc2FnZSsnPC9kaXY+JzsgaWYoYnRuKSBidG4uZGlzYWJsZWQ9ZmFsc2U7IHJldHVybjsgfQogICAgfQogICAgZm9yKGNvbnN0IHIgb2YgdG9VcGRhdGUpewogICAgICBjb25zdCBleCA9IGV4aXN0aW5nTWFwW3IuaWxsdXN0cmF0aW9uX2lkKyd8JytyLmZvcm1hdF07CiAgICAgIGNvbnN0IHtlcnJvcn0gPSBhd2FpdCBzYi5mcm9tKCdtb250aGx5X3NhbGVzJykudXBkYXRlKHt1bml0c19zb2xkOiAoZXgudW5pdHNfc29sZHx8MCkgKyByLnVuaXRzX3NvbGR9KS5lcSgnaWQnLCBleC5pZCk7CiAgICAgIGlmKGVycm9yKXsgaWYobW9kYWxNc2dFbCkgbW9kYWxNc2dFbC5pbm5lckhUTUw9JzxkaXYgY2xhc3M9Im1zZyBlcnIiPkVycm9yOiAnK2Vycm9yLm1lc3NhZ2UrJzwvZGl2Pic7IGlmKGJ0bikgYnRuLmRpc2FibGVkPWZhbHNlOyByZXR1cm47IH0KICAgIH0KICB9CiAgewogICAgY29uc3QgaXRlbXNTdW1tYXJ5ID0gZ3JvdXBlZFJvd3MubWFwKHI9PnsKICAgICAgY29uc3QgaWxsID0gKHR5cGVvZiBpbGx1c3RyYXRpb25zIT09J3VuZGVmaW5lZCcgPyBpbGx1c3RyYXRpb25zIDogW10pLmZpbmQoeD0+eC5pZD09PXIuaWxsdXN0cmF0aW9uX2lkKTsKICAgICAgcmV0dXJuIChpbGw\/aWxsLnJlZjonPycpKycgJytyLmZvcm1hdCsnIMOXJytyLnVuaXRzX3NvbGQ7CiAgICB9KS5qb2luKCcsICcpOwogICAgbG9nQWN0aXZpdHkoJ3ZlbnRhJywgJ1JlcG9ydMOzIHZlbnRhOiAnICsgaXRlbXNTdW1tYXJ5KTsKICB9CiAgaWYoYnRuKSBidG4uZGlzYWJsZWQgPSBmYWxzZTsKICBjbG9zZVNhbGVzQ29uZmlybSgpOwogIGNvbnN0IG1zZ0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbGUtbXNnJyk7CiAgaWYobXNnRWwpIG1zZ0VsLmlubmVySFRNTD0nPGRpdiBjbGFzcz0ibXNnIG9rIj5SZXBvcnRlIGVudmlhZG8uIMKhR3JhY2lhcyE8L2Rpdj4nOwogIGxvYWRTdG9yZUluc2lnaHRzKCk7IC8vIHF1aXRhIGVsIGF2aXNvIGRlIHZlbnRhcyBzaW4gcmVwb3J0YXIgeSBhY3R1YWxpemEgJ1RpZW5lcyBYJwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYWxlcy1mb3JtJykucmVzZXQoKTsKICBhcHBseURlZmF1bHRDaGFubmVsKCk7CiAgZm9yY2VSZWxvY2tDaGFubmVsKCdzYWxlLWNoYW5uZWwnLCdzYWxlJyk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbGUtaXRlbXMnKS5pbm5lckhUTUw9Jyc7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbGUtZXhpc3RpbmcnKS5pbm5lckhUTUw9Jyc7CiAgZXhpc3RpbmdTYWxlc0Zvck1vbnRoID0gW107CiAgcmVmcmVzaFNhbGVTdG9ja1ByZXZpZXcoKTsgLy8gbG8ganVzdG8gYWNhYmFkbyBkZSByZXBvcnRhciB5YSBkZWJlIHJlZmxlamFyc2UgZW4gIlRlIHF1ZWRhIgogIHJlZnJlc2hTdG9yZVN0YXRzKCk7IC8vIHkgdGFtYmnDqW4gZW4gIlR1cyBlc3RhZMOtc3RpY2FzIiwgc2luIHRlbmVyIHF1ZSByZWNhcmdhciBsYSBww6FnaW5hCn0KYXN5bmMgZnVuY3Rpb24gcmVmcmVzaFN0b3JlU3RhdHMoKXsKICBjb25zdCBib2R5RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RvcmUtc3RhdHMtYm9keScpOwogIGlmKCFib2R5RWwgfHwgIWxvY2tlZENoYW5uZWwpIHJldHVybjsKICBib2R5RWwuaW5uZXJIVE1MID0gJzxwIHN0eWxlPSJmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij5DYXJnYW5kb+KApjwvcD4nOwogIC8vIE9qbzogTk8gc2UgY3VlbnRhbiBsb3MgcGVkaWRvcyAob3JkZXJfaXRlbXMpIOKAlCBlc29zIHNvbiBsbyBxdWUgbGEgdGllbmRhIGhhIENPTVBSQURPL3BlZGlkbwogIC8vIGEgSVNUUklDRSAoZW50cmFkYXMgZGUgc3RvY2spLCBubyBsbyBxdWUgZWxsYSBoYSB2ZW5kaWRvIGEgc3VzIHByb3Bpb3MgY2xpZW50ZXMuIExvIMO6bmljbyBxdWUKICAvLyByZWZsZWphIHZlbnRhcyByZWFsZXMgZGUgbGEgdGllbmRhIGVzIGxvIHF1ZSBlbGxhIG1pc21hIHJlcG9ydGEgYXF1w60sIGVuICJWZW50YXMgeSBzdG9jayIuCiAgY29uc3QgeyBkYXRhOiBzYWxlcywgZXJyb3I6IHNhbGVzRXJyIH0gPSBhd2FpdCBzYi5ycGMoJ2dldF9zdG9yZV9tb250aGx5X3NhbGVzJywgeyBpbnB1dF9jaGFubmVsX2lkOiBsb2NrZWRDaGFubmVsLmlkLCBpbnB1dF9wYXNzd29yZDogbG9ja2VkQ2hhbm5lbFBhc3N3b3JkIH0pOwogIGNvbnN0IHRvdGFscyA9IHt9OwogIChzYWxlc0VyciA\/IFtdIDogKHNhbGVzfHxbXSkpLmZvckVhY2gocz0+ewogICAgaWYoIXMucmVmKSByZXR1cm47CiAgICBjb25zdCBrZXkgPSBzLnJlZjsKICAgIGlmKCF0b3RhbHNba2V5XSkgdG90YWxzW2tleV0gPSB7bGFiZWw6IHMucmVmKycg4oCUICcrcy5uYW1lLCBwcm9kdWN0X3R5cGU6IHMucHJvZHVjdF90eXBlfHwnbGFtaW5hJywgcXR5OjB9OwogICAgdG90YWxzW2tleV0ucXR5ICs9IChzLnVuaXRzX3NvbGR8fDApOwogIH0pOwogIHJlbmRlclN0b2NrV2l0aFR5cGVGaWx0ZXIoJ3N0b3JlLXN0YXRzLWJvZHknLCBPYmplY3QudmFsdWVzKHRvdGFscyksIHJlbmRlclN0b3JlU3RhdHNCYXJzKTsKfQpmdW5jdGlvbiByZW5kZXJTdG9yZVN0YXRzQmFycyhyb3dzKXsKICBpZighcm93cy5sZW5ndGgpIHJldHVybiAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXN1YXZlKTsiPlRvZGF2w61hIG5vIGhheSBkYXRvcy48L3A+JzsKICBjb25zdCBzb3J0ZWQgPSBbLi4ucm93c10uc29ydCgoYSxiKT0+Yi5xdHktYS5xdHkpOwogIGNvbnN0IG1heCA9IHNvcnRlZFswXS5xdHkgfHwgMTsKICByZXR1cm4gc29ydGVkLm1hcChyPT5gCiAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjhweDsiPgogICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Zm9udC1zaXplOjEzcHg7Ij48c3Bhbj4ke3IubGFiZWx9PC9zcGFuPjxzdHJvbmc+JHtyLnF0eX08L3N0cm9uZz48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic3RhdGJhciI+PHNwYW4gc3R5bGU9IndpZHRoOiR7KHIucXR5L21heCoxMDApfSU7Ij48L3NwYW4+PC9kaXY+CiAgICA8L2Rpdj5gKS5qb2luKCcnKTsKfQoKLy8gLS0tLS0tLS0tLSBBRE1JTiAtLS0tLS0tLS0tCmFzeW5jIGZ1bmN0aW9uIGNoZWNrQWRtaW5TZXNzaW9uKCl7CiAgY29uc3Qge2RhdGE6e3Nlc3Npb259fSA9IGF3YWl0IHNiLmF1dGguZ2V0U2Vzc2lvbigpOwogIGlmKHNlc3Npb24peyBzaG93QWRtaW5QYW5lbCgpOyByZXR1cm47IH0KICAvLyAxOC8wOS8yMDI2OiBzaSBzZSBoYWLDrWEgZW50cmFkbyBjb21vIGFkbWluIChzaW4gdGllbmRhKSBwZXJvIGxhIHNlc2nDs24gZGUgU3VwYWJhc2UgeWEgbm8gZXMKICAvLyB2w6FsaWRhLCBhbnRlcyBsYSBhcHAgc2UgcXVlZGFiYSBhIG1lZGlhcyAoIklTVFJJQ0UgKG1hZXN0cm8pIiBzaW4gcGVybWlzb3MgeSBBZG1pbiB2YWPDrW8pLgogIC8vIEFob3JhIHZ1ZWx2ZSBhIGxhIHBhbnRhbGxhIGRlIGFjY2VzbyB5IGxvIGV4cGxpY2EuCiAgc2hvd0FkbWluU2Vzc2lvbkV4cGlyZWQoKTsKfQpmdW5jdGlvbiBzaG93QWRtaW5TZXNzaW9uRXhwaXJlZCgpewogIGlmKGxvY2tlZENoYW5uZWwgfHwgc2FmZVNlc3Npb25HZXQoJ2lzdHJpY2VfZ2F0ZScpICE9PSAnMScpIHJldHVybjsKICBzYWZlU2Vzc2lvblJlbW92ZSgnaXN0cmljZV9nYXRlJyk7CiAgc2FmZVNlc3Npb25SZW1vdmUoJ2lzdHJpY2VfY2hhbm5lbHMnKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXBwJykuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dhdGUnKS5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTsKICBjb25zdCBtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dhdGUtbXNnJyk7CiAgaWYobSkgbS50ZXh0Q29udGVudCA9ICdUdSBzZXNpw7NuIGRlIGFkbWluaXN0cmFkb3IgaGEgY2FkdWNhZG8uIFZ1ZWx2ZSBhIGVudHJhci4nOwp9Ci8vIFRhbWJpw6luIHNpIGNhZHVjYSBjb24gbGEgcMOhZ2luYSBhYmllcnRhIChTdXBhYmFzZSBhdmlzYSBjb24gU0lHTkVEX09VVCBhbCBubyBwb2RlciByZW5vdmFybGEpLgpzYi5hdXRoLm9uQXV0aFN0YXRlQ2hhbmdlKChldmVudCk9PnsgaWYoZXZlbnQgPT09ICdTSUdORURfT1VUJykgc2hvd0FkbWluU2Vzc2lvbkV4cGlyZWQoKTsgfSk7CmFzeW5jIGZ1bmN0aW9uIGFkbWluTG9naW4oZSl7CiAgZS5wcmV2ZW50RGVmYXVsdCgpOwogIGNvbnN0IGVtYWlsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbWluLWVtYWlsJykudmFsdWU7CiAgY29uc3QgcGFzc3dvcmQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtaW4tcGFzcycpLnZhbHVlOwogIGNvbnN0IHtlcnJvcn0gPSBhd2FpdCBzYi5hdXRoLnNpZ25JbldpdGhQYXNzd29yZCh7ZW1haWwsIHBhc3N3b3JkfSk7CiAgY29uc3QgbXNnRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtaW4tbG9naW4tbXNnJyk7CiAgaWYoZXJyb3IpeyBtc2dFbC5pbm5lckhUTUw9JzxkaXYgY2xhc3M9Im1zZyBlcnIiPicrZXJyb3IubWVzc2FnZSsnPC9kaXY+JzsgcmV0dXJuIGZhbHNlOyB9CiAgc2hvd0FkbWluUGFuZWwoKTsKICByZXR1cm4gZmFsc2U7Cn0KYXN5bmMgZnVuY3Rpb24gY2hhbmdlUGFzc3dvcmQoZSl7CiAgZS5wcmV2ZW50RGVmYXVsdCgpOwogIGNvbnN0IHBhc3N3b3JkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25ldy1wYXNzJykudmFsdWU7CiAgY29uc3Qge2Vycm9yfSA9IGF3YWl0IHNiLmF1dGgudXBkYXRlVXNlcih7cGFzc3dvcmR9KTsKICBjb25zdCBtc2dFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXNzLW1zZycpOwogIG1zZ0VsLmlubmVySFRNTCA9IGVycm9yID8gJzxkaXYgY2xhc3M9Im1zZyBlcnIiPicrZXJyb3IubWVzc2FnZSsnPC9kaXY+JyA6ICc8ZGl2IGNsYXNzPSJtc2cgb2siPkNvbnRyYXNlw7FhIGFjdHVhbGl6YWRhLjwvZGl2Pic7CiAgcmV0dXJuIGZhbHNlOwp9Ci8vIEzDrW5lYSBmaWphIGJham8gbGFzIHBlc3Rhw7FhcyBkZSBBZG1pbjogcGFyYSBxdcOpIHNpcnZlIGNhZGEgdW5hLCBlbiB1bmEgZnJhc2UgKHRhbmRhIDEsIDA1LzEwLzIwMjYpLgpjb25zdCBBRE1JTl9JTkZPX1RFWFQgPSB7CiAgY2F0YWxvZ286ICdEYSBkZSBhbHRhLCBlZGl0YSB5IGFjdGl2YSBvIGRlc2FjdGl2YSBwcm9kdWN0b3MuIEVsIHN0b2NrIGRlIGxhcyBsw6FtaW5hcyBzZSBsbGV2YSBlbiBJbnZlbnRhcmlvLicsCiAgcGVkaWRvczogJ1BlZGlkb3MgcG9yIHRpZW5kYTogbWFyY2EgbG8gaW1wcmVzbyBvIHByZXBhcmFkbzsgY3VhbmRvIHVuYSB0aWVuZGEgbG8gdGllbmUgdG9kbyAo4pyTKSwgbG8gZW52w61hcyBkZSBnb2xwZS4nLAogIHN0b2NrOiAnTG8gcXVlIHRpZW5lcyBlbiBjYXNhOiBsw6FtaW5hcyBpbXByZXNhcyB5IHVuaWRhZGVzIGRlIGxpYnJldGFzIHkgcGVnYXRpbmFzLiBTZSBkZXNjdWVudGEgc29sbyBhbCBlbnZpYXIgdW4gcGVkaWRvLicsCiAgdmVudGFzOiAnTG8gcXVlIGhhbiB2ZW5kaWRvIGxhcyB0aWVuZGFzLCBwb3IgbWVzLiBTaSB1bmEgdGllbmRhIHRlIHBhc2Egc3VzIHZlbnRhcyBwb3Igb3RybyBsYWRvLCBhcMO6bnRhbGFzIGFxdcOtLicsCiAgZXN0YWRpc3RpY2FzOiAnwqtNw6FzIHZlbmRpZGFzwrs6IGxvIHF1ZSBsYXMgdGllbmRhcyBoYW4gcmVwb3J0YWRvIGNvbW8gdmVuZGlkby4gwqtGdWVyYSBlbiBkZXDDs3NpdG\/CuzogbG8gZW50cmVnYWRvIHF1ZSBhw7puIG5vIGhhbiB2ZW5kaWRvLicsCiAgdGllbmRhczogJ0RhdG9zIGRlIGNhZGEgdGllbmRhIHkgc3UgY29udHJhc2XDsWE6IGNvbiBjb250cmFzZcOxYSBlbnRyYSB5IHZlIHNvbG8gbG8gc3V5bzsgc2luIGVsbGEsIG5vIHB1ZWRlIGVudHJhci4nCn07CmZ1bmN0aW9uIHNldEFkbWluU3ViKG5hbWUpewogIGFkbWluSW5pY2lvSGVjaG8gPSB0cnVlOyAvLyBzaSB5YSBzZSBoYSBlbGVnaWRvIHBlc3Rhw7FhIChhIG1hbm8gbyBwb3IgZWwgcHJvZ3JhbWEpLCBubyBzZSBzYWx0YSBsdWVnbyBhIMKrUHJlcGFyYWNpw7NuwrsKICBbJ2NhdGFsb2dvJywncGVkaWRvcycsJ3N0b2NrJywndmVudGFzJywnZXN0YWRpc3RpY2FzJywndGllbmRhcyddLmZvckVhY2gocz0+ewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FzdWItJytzKS5jbGFzc0xpc3QudG9nZ2xlKCdhY3RpdmUnLCBzPT09bmFtZSk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtaW4tc3ViLScrcykuY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJywgcyE9PW5hbWUpOwogIH0pOwogIGNvbnN0IGluZm9UZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbWluLWluZm8tdGV4dCcpOwogIGlmKGluZm9UZXh0KSBpbmZvVGV4dC50ZXh0Q29udGVudCA9IEFETUlOX0lORk9fVEVYVFtuYW1lXSB8fCAnJzsKICAvLyBFbiBlbCBtw7N2aWwgbGEgZmlsYSBkZSBwZXN0YcOxYXMgc2UgZGVzbGl6YTogcXVlIGxhIGVsZWdpZGEgcXVlZGUgYSBsYSB2aXN0YS4KICBjb25zdCBmaWxhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbWluLXRhYnMnKSwgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FzdWItJytuYW1lKTsKICBpZihmaWxhICYmIGJ0biAmJiBmaWxhLnNjcm9sbFdpZHRoID4gZmlsYS5jbGllbnRXaWR0aCl7CiAgICBjb25zdCBpenEgPSBidG4ub2Zmc2V0TGVmdCAtIGZpbGEub2Zmc2V0TGVmdCwgZGVyID0gaXpxICsgYnRuLm9mZnNldFdpZHRoOwogICAgaWYoaXpxIDwgZmlsYS5zY3JvbGxMZWZ0IHx8IGRlciA+IGZpbGEuc2Nyb2xsTGVmdCArIGZpbGEuY2xpZW50V2lkdGgpIGZpbGEuc2Nyb2xsTGVmdCA9IE1hdGgubWF4KDAsIGl6cSAtIDI0KTsKICB9CiAgYWN0dWFsaXphU29tYnJhc1Blc3RhbmFzQWRtaW4oKTsKfQovLyBGbGVjaGl0YXMg4oC5IOKAuiBhIGxvcyBsYWRvcyBkZSBsYXMgcGVzdGHDsWFzIGRlIEFkbWluIGN1YW5kbyBoYXkgbcOhcyBhIHVuIGxhZG8gKGNvbW8gZW4gZWwgbWVuw7ogZGUgbGEgdGllbmRhKS4KZnVuY3Rpb24gYWN0dWFsaXphU29tYnJhc1Blc3RhbmFzQWRtaW4oKXsKICBjb25zdCBmaWxhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbWluLXRhYnMnKSwgd3JhcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1pbi10YWJzLXdyYXAnKTsKICBpZighZmlsYSB8fCAhd3JhcCkgcmV0dXJuOwogIHdyYXAuY2xhc3NMaXN0LnRvZ2dsZSgnc2Nyb2xsLWxlZnQnLCBmaWxhLnNjcm9sbExlZnQgPiA0KTsKICB3cmFwLmNsYXNzTGlzdC50b2dnbGUoJ3Njcm9sbC1yaWdodCcsIGZpbGEuc2Nyb2xsTGVmdCA8IGZpbGEuc2Nyb2xsV2lkdGggLSBmaWxhLmNsaWVudFdpZHRoIC0gNCk7Cn0KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsICgpPT57CiAgY29uc3QgZmlsYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1pbi10YWJzJyk7CiAgaWYoZmlsYSkgZmlsYS5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBhY3R1YWxpemFTb21icmFzUGVzdGFuYXNBZG1pbiwge3Bhc3NpdmU6dHJ1ZX0pOwogIGlmKGZpbGEgJiYgJ1Jlc2l6ZU9ic2VydmVyJyBpbiB3aW5kb3cpIG5ldyBSZXNpemVPYnNlcnZlcihhY3R1YWxpemFTb21icmFzUGVzdGFuYXNBZG1pbikub2JzZXJ2ZShmaWxhKTsKICBlbHNlIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBhY3R1YWxpemFTb21icmFzUGVzdGFuYXNBZG1pbik7CiAgY29uc3QgaW5mb1RleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtaW4taW5mby10ZXh0Jyk7CiAgaWYoaW5mb1RleHQgJiYgIWluZm9UZXh0LnRleHRDb250ZW50KSBpbmZvVGV4dC50ZXh0Q29udGVudCA9IEFETUlOX0lORk9fVEVYVC5jYXRhbG9nbzsKfSk7Ci8vIEFsIGVudHJhciBlbiBBZG1pbiBwb3IgcHJpbWVyYSB2ZXosIHNpIGhheSBwZWRpZG9zIHBlbmRpZW50ZXMgc2UgYWJyZSDCq1ByZXBhcmFjacOzbsK7IGVuIHZleiBkZSDCq0NhdMOhbG9nb8K7Ci8vIChSYcO6bCwgdGFuZGEgMSwgMDUvMTAvMjAyNjogbG8gcXVlIGhheSBxdWUgaGFjZXIgaG95IHByaW1lcm8pLiBTb2xvIGxhIHByaW1lcmEgdmV6OiBsdWVnbyBzZSByZXNwZXRhIGxhIHBlc3Rhw7FhIGVsZWdpZGEuCmxldCBhZG1pbkluaWNpb0hlY2hvID0gZmFsc2U7CmZ1bmN0aW9uIGFkbWluQWJyZUVuUHJlcGFyYWNpb24oblBlbmRpZW50ZXMpewogIGlmKGFkbWluSW5pY2lvSGVjaG8gfHwgaXNSZXN0cmljdGVkQWRtaW4pIHJldHVybjsKICBhZG1pbkluaWNpb0hlY2hvID0gdHJ1ZTsKICBjb25zdCBlbkNhdGFsb2dvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FzdWItY2F0YWxvZ28nKT8uY2xhc3NMaXN0LmNvbnRhaW5zKCdhY3RpdmUnKTsKICBpZihuUGVuZGllbnRlcyA+IDAgJiYgZW5DYXRhbG9nbykgc2V0QWRtaW5TdWIoJ3BlZGlkb3MnKTsKfQpmdW5jdGlvbiByZWZyZXNoQWRtaW5JZkxvZ2dlZCgpewogIHNiLmF1dGguZ2V0U2Vzc2lvbigpLnRoZW4oKHtkYXRhOntzZXNzaW9ufX0pPT57IGlmKHNlc3Npb24pIGxvYWRBZG1pbkRhdGEoKTsgfSk7Cn0KYXN5bmMgZnVuY3Rpb24gc2hvd0FkbWluUGFuZWwoKXsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtaW4tbG9naW4nKS5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtaW4tcGFuZWwnKS5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTsKICBhd2FpdCBhcHBseUFkbWluUm9sZVJlc3RyaWN0aW9uKCk7CiAgbG9hZEFkbWluRGF0YSgpOwp9CmFzeW5jIGZ1bmN0aW9uIGFwcGx5QWRtaW5Sb2xlUmVzdHJpY3Rpb24oKXsKICBjb25zdCB7ZGF0YTp7dXNlcn19ID0gYXdhaXQgc2IuYXV0aC5nZXRVc2VyKCk7CiAgY29uc3QgZW1haWwgPSAodXNlciAmJiB1c2VyLmVtYWlsIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTsKICBjb25zdCBlbWFpbEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N1cnJlbnQtYWRtaW4tZW1haWwnKTsKICBpZihlbWFpbEVsKSBlbWFpbEVsLnRleHRDb250ZW50ID0gdXNlcj8uZW1haWwgPyAnKCcrdXNlci5lbWFpbCsnKScgOiAnJzsKICAvLyBBaG9yYSBxdWUgc2FiZW1vcyBxdcOpIGN1ZW50YSBoYSBlbnRyYWRvLCBzZSBjb3JyaWdlIGVsIHNhbHVkbyBkZSBhcnJpYmEgKGVsIHF1ZSBzZSBwdXNvIGFsCiAgLy8gdnVlbG8gZW4gZWwgYXJyYW5xdWUgZXJhIHNvbG8gdW4gZ2Vuw6lyaWNvICJJU1RSSUNFIChtYWVzdHJvKSIgcGFyYSBubyBkZWphciBlbCBib3TDs24gdmFjw61vKS4KICBpZighbG9ja2VkQ2hhbm5lbCkgc2V0SGVhZGVyVXNlck5hbWUoQURNSU5fRElTUExBWV9OQU1FU1tlbWFpbF0gfHwgJ0lTVFJJQ0UgKG1hZXN0cm8pJyk7CiAgLy8gQ3VlbnRhIHJlc3RyaW5naWRhIChwLmVqLiBsYSBheXVkYSBjb24gdmVudGFzIHkgZGF0b3MgZGUgdGllbmRhcyk6IHNvbG8gbmVjZXNpdGEgcmVnaXN0cmFyCiAgLy8gdmVudGFzIG1hbnVhbGVzIHkgbWFudGVuZXIgbG9zIGRhdG9zIGRlIGNhZGEgdGllbmRhIGFsIGTDrWEsIHkgY29uc3VsdGFyIGVsIHJhbmtpbmcgZGUgbcOhcwogIC8vIHZlbmRpZG8gZGUgZm9ybWEgaW5mb3JtYXRpdmEg4oCUIG5hZGEgZGUgZ2VzdGlvbmFyIGNhdMOhbG9nbywgc3RvY2sgbmkgZWwgZmx1am8gZGUgcGVkaWRvcy4KICBjb25zdCByZXN0cmljdGVkID0gIWxvY2tlZENoYW5uZWwgJiYgUkVTVFJJQ1RFRF9BRE1JTl9FTUFJTFMuaW5jbHVkZXMoZW1haWwpOwogIGlzUmVzdHJpY3RlZEFkbWluID0gcmVzdHJpY3RlZDsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmF2LXBlZGlkbycpLmNsYXNzTGlzdC50b2dnbGUoJ2hpZGRlbicsIHJlc3RyaWN0ZWQpOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ25hdiBidXR0b25bZGF0YS10YWI9ImNhdGFsb2dvIl0nKS5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nLCByZXN0cmljdGVkKTsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCduYXYgYnV0dG9uW2RhdGEtdGFiPSJ2ZW50YXMiXScpLmNsYXNzTGlzdC50b2dnbGUoJ2hpZGRlbicsIHJlc3RyaWN0ZWQpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhc3ViLWNhdGFsb2dvJykuY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJywgcmVzdHJpY3RlZCk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FzdWItc3RvY2snKS5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nLCByZXN0cmljdGVkKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXN1Yi1wZWRpZG9zJykuY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJywgcmVzdHJpY3RlZCk7CiAgaWYocmVzdHJpY3RlZCl7CiAgICBzZXRBZG1pblN1YigndmVudGFzJyk7CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCduYXYgYnV0dG9uW2RhdGEtdGFiXScpLmZvckVhY2goYj0+Yi5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKSk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmF2LWFkbWluJykuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdtYWluID4gc2VjdGlvbicpLmZvckVhY2gocz0+cy5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKSk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFiLWFkbWluJykuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7CiAgfQp9CmFzeW5jIGZ1bmN0aW9uIGxvYWRBZG1pbkRhdGEoKXsKICBjb25zdCB7ZGF0YTogYWxsSWxsfSA9IGF3YWl0IHNiLmZyb20oJ2lsbHVzdHJhdGlvbnMnKS5zZWxlY3QoJyonKS5vcmRlcigncmVmJyk7CiAgYWRtaW5JbGx1c3RyYXRpb25zTGlzdCA9IGFsbElsbCB8fCBbXTsKICBhZG1pbkxhbWluYXNMaXN0ID0gc29ydEJ5TmFtZUVzKGFkbWluSWxsdXN0cmF0aW9uc0xpc3QuZmlsdGVyKGk9PihpLnByb2R1Y3RfdHlwZXx8J2xhbWluYScpPT09J2xhbWluYScpKTsKICBhZG1pbkxpYnJldGFzTGlzdCA9IHNvcnRCeU5hbWVFcyhhZG1pbklsbHVzdHJhdGlvbnNMaXN0LmZpbHRlcihpPT5pLnByb2R1Y3RfdHlwZT09PSdsaWJyZXRhJykpOwogIHBvcHVsYXRlQWRkU3RvY2tGb3JtKCk7CiAgcmVuZGVyQWRtaW5JbGx1c3RyYXRpb25zKGFkbWluTGFtaW5hc0xpc3QpOwogIHJlbmRlckFkbWluTGlicmV0YXMoYWRtaW5MaWJyZXRhc0xpc3QpOwogIGJ1aWxkQWRtaW5FeHRyYVNlY3Rpb25zKCk7CiAgYnVpbGRBZG1pblN0b2NrRXh0cmFCbG9ja3MoKTsKICByZW5kZXJDYXRhbG9nVmlzaWJpbGl0eVRvZ2dsZXMoKTsKICBFWFRSQV9TVE9DS19UWVBFUy5mb3JFYWNoKHQ9PnsKICAgIGFkbWluRXh0cmFMaXN0c1t0LmtleV0gPSBzb3J0QnlOYW1lRXMoYWRtaW5JbGx1c3RyYXRpb25zTGlzdC5maWx0ZXIoaT0+aS5wcm9kdWN0X3R5cGU9PT10LmtleSkpOwogICAgcmVuZGVyQWRtaW5FeHRyYSh0LmtleSwgYWRtaW5FeHRyYUxpc3RzW3Qua2V5XSk7CiAgICByZW5kZXJFeHRyYVN0b2NrVGFibGUodC5rZXksIGFkbWluRXh0cmFMaXN0c1t0LmtleV0pOwogICAgcG9wdWxhdGVTdG9ja0FkZEZvcm1HZW5lcmljKCdleHRyYScsIHQua2V5KTsKICB9KTsKICBvbk5ld1Byb2R1Y3RUeXBlQ2hhbmdlKCk7CgogIC8vIFNvbG8gbG9zIHBlZGlkb3MgcGVuZGllbnRlcyBzZSBjYXJnYW4gc2llbXByZSAobGlzdGEgY29ydGEsIGxvIHF1ZSBuZWNlc2l0YXMgdmVyIGEgZGlhcmlvKS4KICAvLyBMb3MgZW52aWFkb3MvY2FuY2VsYWRvcyBxdWVkYW4gYXJjaGl2YWRvcyB5IHNlIGNvbnN1bHRhbiBhcGFydGUsIGJham8gZGVtYW5kYSwgZW4gIkhpc3RvcmlhbCBkZSBwZWRpZG9zIi4KICBjb25zdCB7ZGF0YTogb3JkZXJzfSA9IGF3YWl0IHNiLmZyb20oJ29yZGVycycpLnNlbGVjdCgnKiwgY2hhbm5lbHMobmFtZSwgaXNfZGVtbywgaXNfb25saW5lX3NhbGUsIGJpbGxpbmdfbmFtZSwgYWRkcmVzcywgcG9zdGFsX2NvZGUsIGNpdHksIHBob25lLCBzaGlwX3NhbWVfYXNfYmlsbGluZywgc2hpcF9hZGRyZXNzLCBzaGlwX3Bvc3RhbF9jb2RlLCBzaGlwX2NpdHksIHNoaXBfcHJvdmluY2UsIHNoaXBfcGhvbmUsIGRlbGl2ZXJ5X2hvdXJzLCBkZWxpdmVyeV9ub3RlcyksIG9yZGVyX2l0ZW1zKCosIGlsbHVzdHJhdGlvbnMocmVmLG5hbWUscHJvZHVjdF90eXBlKSknKS5pbignc3RhdHVzJyxbJ3BlbmRpZW50ZScsJ3JlY2liaWRvJ10pLm9yZGVyKCdjcmVhdGVkX2F0Jywge2FzY2VuZGluZzpmYWxzZX0pOwogIC8vIExhIERlbW8gdGllbmUgcGVkaWRvcyBkZSBlamVtcGxvICh2ZXIgcmVzZXRfZGVtbyk6IG51bmNhIHNlIHByZXBhcmFuLCBhc8OtIHF1ZSBubyBzYWxlbiBhcXXDrS4KICBhZG1pbk9yZGVyc0xpc3QgPSAob3JkZXJzIHx8IFtdKS5maWx0ZXIobyA9PiAhby5jaGFubmVscz8uaXNfZGVtbyk7CiAgYXdhaXQgc3luY1ByZXBDaGVja3NGcm9tRGIoYWRtaW5PcmRlcnNMaXN0KTsKICByZW5kZXJMaWJyZXRhc1BlbmRpbmdTdW1tYXJ5KGFkbWluT3JkZXJzTGlzdCk7CiAgRVhUUkFfU1RPQ0tfVFlQRVMuZm9yRWFjaCh0PT5yZW5kZXJFeHRyYVBlbmRpbmdTdW1tYXJ5KHQua2V5LCBhZG1pbk9yZGVyc0xpc3QpKTsKCiAgY29uc3Qge2RhdGE6IHN0b2NrfSA9IGF3YWl0IHNiLmZyb20oJ3ByaW50X3N0b2NrJykuc2VsZWN0KCcqLCBpbGx1c3RyYXRpb25zKHJlZixuYW1lKScpLm9yZGVyKCd1cGRhdGVkX2F0Jywge2FzY2VuZGluZzpmYWxzZX0pOwogIHJlbmRlckFkbWluU3RvY2soc3RvY2sgfHwgW10sIGFkbWluTGFtaW5hc0xpc3QpOwogIHJlbmRlckxpYnJldGFzU3RvY2tUYWJsZShhZG1pbkxpYnJldGFzTGlzdCk7CiAgcG9wdWxhdGVTdG9ja0FkZEZvcm1HZW5lcmljKCdsaWJyZXRhJyk7CiAgYXdhaXQgbG9hZFBhcGVyU3RvY2soKTsKICByZW5kZXJQcmludFN1bW1hcnkoYWRtaW5PcmRlcnNMaXN0LCBzdG9jayB8fCBbXSk7CiAgLy8gU2UgcGludGEgYWwgZmluYWwsIHlhIGNvbiBsb3MgY2hlY2tzIGRlIGltcHJlc28vcHJlcGFyYWRhIHBvZGFkb3MsIHBhcmEgcXVlIGVsIOKchSBkZSAibGlzdG8KICAvLyBwYXJhIGVudmlhciIgZGUgY2FkYSB0aWVuZGEgc2FsZ2EgYmllbiBhIGxhIHByaW1lcmEgKHNpbiB0ZW5lciBxdWUgcmVjYXJnYXIgbGEgcMOhZ2luYSkuCiAgcmVuZGVyQWRtaW5PcmRlcnMoYWRtaW5PcmRlcnNMaXN0KTsKCiAgLy8gY2hhbm5lbHMobmFtZSwgaXNfZGVtbykgcGFyYSBwb2RlciBkZXNjYXJ0YXIgYXF1w60gbWlzbW8gY3VhbHF1aWVyIGZpbGEgZGUgbGEgdGllbmRhIERlbW8g4oCUCiAgLy8gZXMgZmljdGljaWEsIG51bmNhIGRlYmUgY29udGFyIGVuICJNw6FzIHZlbmRpZGFzIiBuaSBlbiBuaW5nw7puIG90cm8gY8OhbGN1bG8gcmVhbC4KICBjb25zdCB7ZGF0YTogc2FsZXN9ID0gYXdhaXQgbGVlVG9kbygoKT0+c2IuZnJvbSgnbW9udGhseV9zYWxlcycpLnNlbGVjdCgnKiwgY2hhbm5lbHMobmFtZSwgaXNfZGVtbywgaXNfb25saW5lX3NhbGUpLCBpbGx1c3RyYXRpb25zKHJlZixuYW1lLHByb2R1Y3RfdHlwZSknKS5vcmRlcignbW9udGgnLCB7YXNjZW5kaW5nOmZhbHNlfSkub3JkZXIoJ2lkJykpOwogIGFsbFNhbGVzQ2FjaGUgPSAoc2FsZXMgfHwgW10pLmZpbHRlcihzID0+ICFzLmNoYW5uZWxzPy5pc19kZW1vKTsKCiAgY29uc3Qge2RhdGE6IGFsbENoYW5uZWxzfSA9IGF3YWl0IHNiLmZyb20oJ2NoYW5uZWxzJykuc2VsZWN0KCcqJykub3JkZXIoJ25hbWUnKTsKICBhZG1pbkNoYW5uZWxzTGlzdCA9IGFsbENoYW5uZWxzIHx8IFtdOwogIC8vIFN0b2NrIHBvciB0aWVuZGEgKEFkbWluIOKGkiBUaWVuZGFzKTogc2UgY2FsY3VsYSBhbCB2dWVsbyBhIHBhcnRpciBkZSBwZWRpZG9zICJlbnZpYWRvIiArCiAgLy8gdmVudGFzIHJlcG9ydGFkYXMsIHNpbiBwZWRpciBuYWRhIGFsIGFicmlyIGNhZGEgdGllbmRhIChhc8OtIHNlIHZlIGRlIHVuIHZpc3Rhem8sIGluY2x1aWRhCiAgLy8gbGEgc2XDsWFsIGRlICJzdG9jayBiYWpvIiBlbiBsYSBmaWxhIGNlcnJhZGEpLiBMYXMgbWlzbWFzIGRvcyBjYWNow6lzIChhbGxTaGlwcGVkT3JkZXJzQ2FjaGUvCiAgLy8gYWxsU2FsZXNDYWNoZSkgdGFtYmnDqW4gYWxpbWVudGFuICJNw6FzIHZlbmRpZGFzIiB5ICJGdWVyYSBlbiBkZXDDs3NpdG8iIGVuIEVzdGFkw61zdGljYXMuCiAgY29uc3Qge2RhdGE6IHNoaXBwZWRPcmRlcnN9ID0gYXdhaXQgbGVlVG9kbygoKT0+c2IuZnJvbSgnb3JkZXJzJykuc2VsZWN0KCdjaGFubmVsX2lkLCBjaGFubmVscyhuYW1lLCBpc19kZW1vKSwgb3JkZXJfaXRlbXMocXVhbnRpdHksIGZvcm1hdCwgaWxsdXN0cmF0aW9uX2lkLCBpbGx1c3RyYXRpb25zKHJlZixuYW1lLHByb2R1Y3RfdHlwZSkpJykuZXEoJ3N0YXR1cycsJ2VudmlhZG8nKS5vcmRlcignaWQnKSk7CiAgYWxsU2hpcHBlZE9yZGVyc0NhY2hlID0gKHNoaXBwZWRPcmRlcnMgfHwgW10pLmZpbHRlcihvID0+ICFvLmNoYW5uZWxzPy5pc19kZW1vKTsKICAvLyBTdG9jayBtZXRpZG8gYSBtYW5vIHBvciB0aWVuZGEgKHNpbiBwYXNhciBwb3IgdW4gcGVkaWRvKSDigJQgY3VlbnRhIGlndWFsIHF1ZSAiZW50cmVnYWRvIi4KICBjb25zdCB7ZGF0YTogYWRqdXN0bWVudHN9ID0gYXdhaXQgbGVlVG9kbygoKT0+c2IuZnJvbSgnc3RvY2tfYWRqdXN0bWVudHMnKS5zZWxlY3QoJyosIGNoYW5uZWxzKG5hbWUsIGlzX2RlbW8pLCBpbGx1c3RyYXRpb25zKHJlZixuYW1lLHByb2R1Y3RfdHlwZSknKS5vcmRlcignY3JlYXRlZF9hdCcsIHthc2NlbmRpbmc6ZmFsc2V9KS5vcmRlcignaWQnKSk7CiAgYWxsQWRqdXN0bWVudHNDYWNoZSA9IGFkanVzdG1lbnRzIHx8IFtdOwogIHJlbmRlckN1cnJlbnRTdGF0cygpOwogIHJlbmRlckFkbWluQ2hhbm5lbHMoYWRtaW5DaGFubmVsc0xpc3QpOwogIHBvcHVsYXRlQWRtaW5TYWxlQ2hhbm5lbFNlbGVjdCgpOwogIHJlZnJlc2hBZG1pblNhbGVJbGxPcHRpb25zKCk7CiAgcG9wdWxhdGVTYWxlc0ZpbHRlcnMoYWxsU2FsZXNDYWNoZSwgYWRtaW5DaGFubmVsc0xpc3QuZmlsdGVyKGM9PiFjLmlzX2RlbW8pKTsKICBwb3B1bGF0ZUhpc3RvcmlhbEZpbHRlcnMoYWRtaW5DaGFubmVsc0xpc3QpOwogIGZpbHRlckFkbWluU2FsZXMoKTsKICBpZighZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpc3RvcmlhbC1wZWRpZG9zLXdyYXAnKS5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpKXsKICAgIGxvYWRIaXN0b3JpYWxQZWRpZG9zKCk7CiAgfQp9CmZ1bmN0aW9uIHBvcHVsYXRlU2FsZXNGaWx0ZXJzKHNhbGVzLCBjaGFubmVsc0xpc3QpewogIGNvbnN0IGNoU2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbGVzLWZpbHRlci1jaGFubmVsJyk7CiAgY29uc3QgY3VyQ2ggPSBjaFNlbC52YWx1ZTsKICBjaFNlbC5pbm5lckhUTUwgPSAnPG9wdGlvbiB2YWx1ZT0iIj5Ub2Rvczwvb3B0aW9uPicgKyBjaGFubmVsc0xpc3QubWFwKGM9PmA8b3B0aW9uIHZhbHVlPSIke2MuaWR9Ij4ke2VzY2FwZUF0dHIoYy5uYW1lKX08L29wdGlvbj5gKS5qb2luKCcnKTsKICBjaFNlbC52YWx1ZSA9IGN1ckNoOwogIGNvbnN0IG1vU2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbGVzLWZpbHRlci1tb250aCcpOwogIGNvbnN0IGN1ck1vID0gbW9TZWwudmFsdWU7CiAgY29uc3QgbW9udGhzID0gWy4uLm5ldyBTZXQoc2FsZXMubWFwKHM9PnMubW9udGgpKV0uc29ydCgpLnJldmVyc2UoKTsKICBtb1NlbC5pbm5lckhUTUwgPSAnPG9wdGlvbiB2YWx1ZT0iIj5Ub2Rvczwvb3B0aW9uPicgKyBtb250aHMubWFwKG09PmA8b3B0aW9uIHZhbHVlPSIke219Ij4ke219PC9vcHRpb24+YCkuam9pbignJyk7CiAgbW9TZWwudmFsdWUgPSBjdXJNbzsKfQpmdW5jdGlvbiBmaWx0ZXJBZG1pblNhbGVzKCl7CiAgY29uc3QgY2ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FsZXMtZmlsdGVyLWNoYW5uZWwnKS52YWx1ZTsKICBjb25zdCBtbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYWxlcy1maWx0ZXItbW9udGgnKS52YWx1ZTsKICBjb25zdCB0eSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYWxlcy1maWx0ZXItdHlwZScpLnZhbHVlOwogIGNvbnN0IGZpbHRlcmVkID0gYWxsU2FsZXNDYWNoZS5maWx0ZXIocyA9PiAoIWNoIHx8IHMuY2hhbm5lbF9pZD09PWNoKSAmJiAoIW1vIHx8IHMubW9udGg9PT1tbykgJiYgKCF0eSB8fCAocy5pbGx1c3RyYXRpb25zPy5wcm9kdWN0X3R5cGV8fCdsYW1pbmEnKT09PXR5KSk7CiAgcmVuZGVyQWRtaW5TYWxlcyhmaWx0ZXJlZCk7Cn0KZnVuY3Rpb24gY3N2RXNjYXBlKHZhbCl7CiAgY29uc3QgcyA9ICh2YWw9PT1udWxsfHx2YWw9PT11bmRlZmluZWQpID8gJycgOiBTdHJpbmcodmFsKTsKICBpZigvWyIsO1xuXS8udGVzdChzKSkgcmV0dXJuICciJyArIHMucmVwbGFjZSgvIi9nLCciIicpICsgJyInOwogIHJldHVybiBzOwp9CmZ1bmN0aW9uIGRvd25sb2FkQ1NWKGZpbGVuYW1lLCBoZWFkZXIsIHJvd3MpewogIGNvbnN0IGxpbmVzID0gW2hlYWRlci5tYXAoY3N2RXNjYXBlKS5qb2luKCc7JyldLmNvbmNhdChyb3dzLm1hcChyPT5yLm1hcChjc3ZFc2NhcGUpLmpvaW4oJzsnKSkpOwogIGNvbnN0IGNzdiA9ICfvu78nICsgbGluZXMuam9pbignXHJcbicpOwogIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbY3N2XSwge3R5cGU6J3RleHQvY3N2O2NoYXJzZXQ9dXRmLTg7J30pOwogIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7CiAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICBhLmhyZWYgPSB1cmw7IGEuZG93bmxvYWQgPSBmaWxlbmFtZTsKICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOyBhLmNsaWNrKCk7IGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7CiAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpOwp9CmZ1bmN0aW9uIGRvd25sb2FkT3JkZXJzQ1NWKCl7CiAgY29uc3QgaGVhZGVyID0gWydGZWNoYScsJ0NhbmFsJywnQ2xpZW50ZScsJ0lsdXN0cmFjacOzbicsJ0Zvcm1hdG8nLCdDYW50aWRhZCcsJ0VzdGFkbyddOwogIGNvbnN0IHJvd3MgPSBbXTsKICBhZG1pbk9yZGVyc0xpc3QuZm9yRWFjaChvPT57CiAgICBjb25zdCBmZWNoYSA9IG5ldyBEYXRlKG8uY3JlYXRlZF9hdCkudG9Mb2NhbGVEYXRlU3RyaW5nKGFwcExvY2FsZSgpKTsKICAgIChvLm9yZGVyX2l0ZW1zfHxbXSkuZm9yRWFjaChpdD0+ewogICAgICByb3dzLnB1c2goW2ZlY2hhLCBvLmNoYW5uZWxzPy5uYW1lfHwnJywgby5jdXN0b21lcl9uYW1lLCAoKGl0LmlsbHVzdHJhdGlvbnM\/LnJlZnx8JycpKycgJysoaXQuaWxsdXN0cmF0aW9ucz8ubmFtZXx8JycpKS50cmltKCksIGl0LmZvcm1hdCwgaXQucXVhbnRpdHksIG8uc3RhdHVzXSk7CiAgICB9KTsKICB9KTsKICBkb3dubG9hZENTVigncGVkaWRvcy1pc3RyaWNlLScrZmVjaGFMb2NhbCgpKycuY3N2JywgaGVhZGVyLCByb3dzKTsKfQpmdW5jdGlvbiB0b2dnbGVIaXN0b3JpYWxQZWRpZG9zKCl7CiAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoaXN0b3JpYWwtcGVkaWRvcy13cmFwJyk7CiAgY29uc3Qgd2lsbFNob3cgPSB3cmFwLmNsYXNzTGlzdC5jb250YWlucygnaGlkZGVuJyk7CiAgd3JhcC5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nKTsKICBpZih3aWxsU2hvdykgbG9hZEhpc3RvcmlhbFBlZGlkb3MoKTsKfQpmdW5jdGlvbiBwb3B1bGF0ZUhpc3RvcmlhbEZpbHRlcnMoY2hhbm5lbHNMaXN0KXsKICBjb25zdCBzZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGlzdG9yaWFsLWZpbHRlci1jaGFubmVsJyk7CiAgY29uc3QgY3VyID0gc2VsLnZhbHVlOwogIHNlbC5pbm5lckhUTUwgPSAnPG9wdGlvbiB2YWx1ZT0iIj5Ub2Rhczwvb3B0aW9uPicgKyAoY2hhbm5lbHNMaXN0fHxbXSkubWFwKGM9PmA8b3B0aW9uIHZhbHVlPSIke2MuaWR9Ij4ke2VzY2FwZUF0dHIoYy5uYW1lKX08L29wdGlvbj5gKS5qb2luKCcnKTsKICBzZWwudmFsdWUgPSBjdXI7Cn0KYXN5bmMgZnVuY3Rpb24gbG9hZEhpc3RvcmlhbFBlZGlkb3MoKXsKICBjb25zdCBjaCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoaXN0b3JpYWwtZmlsdGVyLWNoYW5uZWwnKS52YWx1ZTsKICBjb25zdCBtbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoaXN0b3JpYWwtZmlsdGVyLW1vbnRoJykudmFsdWU7IC8vICdZWVlZLU1NJwogIGNvbnN0IHN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpc3RvcmlhbC1maWx0ZXItc3RhdHVzJykudmFsdWU7CiAgbGV0IHEgPSBzYi5mcm9tKCdvcmRlcnMnKS5zZWxlY3QoJyosIGNoYW5uZWxzKG5hbWUsIGlzX2RlbW8sIGlzX29ubGluZV9zYWxlKSwgb3JkZXJfaXRlbXMoKiwgaWxsdXN0cmF0aW9ucyhyZWYsbmFtZSxwcm9kdWN0X3R5cGUpKScpCiAgICAuaW4oJ3N0YXR1cycsIHN0ID8gW3N0XSA6IFsnZW52aWFkbycsJ2NhbmNlbGFkbyddKQogICAgLm9yZGVyKCdjcmVhdGVkX2F0Jywge2FzY2VuZGluZzpmYWxzZX0pCiAgICAubGltaXQoMzAwKTsKICBpZihjaCkgcSA9IHEuZXEoJ2NoYW5uZWxfaWQnLCBjaCk7CiAgaWYobW8pewogICAgY29uc3QgW3ksbV0gPSBtby5zcGxpdCgnLScpLm1hcChOdW1iZXIpOwogICAgY29uc3Qgc3RhcnQgPSBtbysnLTAxJzsKICAgIGNvbnN0IGVuZCA9IChtPT09MTIgPyAoeSsxKSsnLTAxJyA6IHkrJy0nK1N0cmluZyhtKzEpLnBhZFN0YXJ0KDIsJzAnKSkgKyAnLTAxJzsgLy8gMSBkZWwgbWVzIHNpZ3VpZW50ZSwgc2luIHBhc2FyIHBvciBob3JhIHVuaXZlcnNhbAogICAgcSA9IHEuZ3RlKCdvcmRlcl9kYXRlJywgc3RhcnQpLmx0KCdvcmRlcl9kYXRlJywgZW5kKTsKICB9CiAgY29uc3Qge2RhdGEsIGVycm9yfSA9IGF3YWl0IHE7CiAgaWYoZXJyb3IpeyBhbGVydCgnRXJyb3IgY2FyZ2FuZG8gZWwgaGlzdG9yaWFsOiAnK2Vycm9yLm1lc3NhZ2UpOyByZXR1cm47IH0KICBoaXN0b3JpYWxPcmRlcnNMaXN0ID0gKGRhdGEgfHwgW10pLmZpbHRlcihvID0+ICFvLmNoYW5uZWxzPy5pc19kZW1vKTsKICByZW5kZXJIaXN0b3JpYWxPcmRlcnMoaGlzdG9yaWFsT3JkZXJzTGlzdCk7Cn0KZnVuY3Rpb24gcmVuZGVySGlzdG9yaWFsT3JkZXJzKG9yZGVycyl7CiAgY29uc3QgY291bnRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoaXN0b3JpYWwtcGVkaWRvcy1jb3VudCcpOwogIGlmKGNvdW50RWwpIGNvdW50RWwudGV4dENvbnRlbnQgPSBvcmRlcnMubGVuZ3RoICsgKG9yZGVycy5sZW5ndGg+PTMwMCA\/ICcg4oCUIG1vc3RyYW5kbyBsb3MgMzAwIG3DoXMgcmVjaWVudGVzIGNvbiBlc3RlIGZpbHRybzsgYWZpbmEgZWwgZmlsdHJvICh0aWVuZGEgbyBtZXMpIHBhcmEgdmVyIGVsIHJlc3RvJyA6ICcgcGVkaWRvJysob3JkZXJzLmxlbmd0aD09PTE\/Jyc6J3MnKSk7CiAgY29uc3QgdGJvZHkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYWRtaW4tb3JkZXJzLWhpc3RvcmlhbCB0Ym9keScpOwogIHRib2R5LmlubmVySFRNTCA9IG9yZGVycy5tYXAoKG8saWR4KSA9PiB7CiAgICBjb25zdCBuID0gKG8ub3JkZXJfaXRlbXN8fFtdKS5sZW5ndGg7CiAgICBjb25zdCBpdGVtc0h0bWwgPSAoby5vcmRlcl9pdGVtc3x8W10pLm1hcChpdD0+YCR7aXQuaWxsdXN0cmF0aW9ucz8ucmVmfSDigJQgJHtpdC5pbGx1c3RyYXRpb25zPy5uYW1lfHwnJ30gJHtpdC5mb3JtYXR9IHgke2l0LnF1YW50aXR5fWApLmpvaW4oJzxicj4nKTsKICAgIHJldHVybiBgPHRyPgogICAgICA8dGQ+JHtuZXcgRGF0ZShvLmNyZWF0ZWRfYXQpLnRvTG9jYWxlRGF0ZVN0cmluZyhhcHBMb2NhbGUoKSl9PC90ZD4KICAgICAgPHRkPiR7by5jaGFubmVscz8ubmFtZXx8Jyd9PC90ZD4KICAgICAgPHRkPiR7ZXNjYXBlQXR0cihvLmN1c3RvbWVyX25hbWUpfTwvdGQ+CiAgICAgIDx0ZD4KICAgICAgICA8c3BhbiBzdHlsZT0iY3Vyc29yOnBvaW50ZXI7Y29sb3I6dmFyKC0tYWNjZW50KTtmb250LXNpemU6MTJweDsiIG9uY2xpY2s9InRvZ2dsZU9yZGVySXRlbXNEZXRhaWwodGhpcywnaGlzdG9yaWFsLWRldGFpbC0ke2lkeH0nLCR7bn0pIj7ilrggJHtufSDDrXRlbSR7bj09PTE\/Jyc6J3MnfSDigJQgdmVyPC9zcGFuPgogICAgICAgIDxkaXYgaWQ9Imhpc3RvcmlhbC1kZXRhaWwtJHtpZHh9IiBjbGFzcz0iaGlkZGVuIiBzdHlsZT0ibWFyZ2luLXRvcDo0cHg7Zm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tc3VhdmUpOyI+JHtpdGVtc0h0bWx9PC9kaXY+CiAgICAgIDwvdGQ+CiAgICAgIDx0ZD4KICAgICAgICA8c2VsZWN0IG9uY2hhbmdlPSJ1cGRhdGVPcmRlclN0YXR1cygnJHtvLmlkfScsIHRoaXMudmFsdWUpIj4KICAgICAgICAgICR7T1JERVJfU1RBVFVTRVMubWFwKHM9PmA8b3B0aW9uIHZhbHVlPSIke3N9IiAke3M9PT1vLnN0YXR1cz8nc2VsZWN0ZWQnOicnfT4ke3N9PC9vcHRpb24+YCkuam9pbignJyl9CiAgICAgICAgPC9zZWxlY3Q+CiAgICAgIDwvdGQ+CiAgICAgIDx0ZD48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBzZWNvbmRhcnkgc21hbGwiIG9uY2xpY2s9ImFza0RlbGV0ZU9yZGVyKCcke28uaWR9JywgdGhpcykiPkJvcnJhcjwvYnV0dG9uPjwvdGQ+CiAgICA8L3RyPmA7CiAgfSkuam9pbignJyk7Cn0KZnVuY3Rpb24gZG93bmxvYWRIaXN0b3JpYWxDU1YoKXsKICBjb25zdCBoZWFkZXIgPSBbJ0ZlY2hhJywnQ2FuYWwnLCdDbGllbnRlJywnSWx1c3RyYWNpw7NuJywnRm9ybWF0bycsJ0NhbnRpZGFkJywnRXN0YWRvJ107CiAgY29uc3Qgcm93cyA9IFtdOwogIGhpc3RvcmlhbE9yZGVyc0xpc3QuZm9yRWFjaChvPT57CiAgICBjb25zdCBmZWNoYSA9IG5ldyBEYXRlKG8uY3JlYXRlZF9hdCkudG9Mb2NhbGVEYXRlU3RyaW5nKGFwcExvY2FsZSgpKTsKICAgIChvLm9yZGVyX2l0ZW1zfHxbXSkuZm9yRWFjaChpdD0+ewogICAgICByb3dzLnB1c2goW2ZlY2hhLCBvLmNoYW5uZWxzPy5uYW1lfHwnJywgby5jdXN0b21lcl9uYW1lLCAoKGl0LmlsbHVzdHJhdGlvbnM\/LnJlZnx8JycpKycgJysoaXQuaWxsdXN0cmF0aW9ucz8ubmFtZXx8JycpKS50cmltKCksIGl0LmZvcm1hdCwgaXQucXVhbnRpdHksIG8uc3RhdHVzXSk7CiAgICB9KTsKICB9KTsKICBkb3dubG9hZENTVignaGlzdG9yaWFsLXBlZGlkb3MtaXN0cmljZS0nK2ZlY2hhTG9jYWwoKSsnLmNzdicsIGhlYWRlciwgcm93cyk7Cn0KZnVuY3Rpb24gZG93bmxvYWRTYWxlc0NTVigpewogIGNvbnN0IGNoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbGVzLWZpbHRlci1jaGFubmVsJykudmFsdWU7CiAgY29uc3QgbW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FsZXMtZmlsdGVyLW1vbnRoJykudmFsdWU7CiAgY29uc3QgdHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FsZXMtZmlsdGVyLXR5cGUnKS52YWx1ZTsKICBjb25zdCBmaWx0ZXJlZCA9IGFsbFNhbGVzQ2FjaGUuZmlsdGVyKHMgPT4gKCFjaCB8fCBzLmNoYW5uZWxfaWQ9PT1jaCkgJiYgKCFtbyB8fCBzLm1vbnRoPT09bW8pICYmICghdHkgfHwgKHMuaWxsdXN0cmF0aW9ucz8ucHJvZHVjdF90eXBlfHwnbGFtaW5hJyk9PT10eSkpOwogIGNvbnN0IGhlYWRlciA9IFsnTWVzJywnQ2FuYWwnLCdJbHVzdHJhY2nDs24nLCdGb3JtYXRvJywnVW5pZGFkZXMnXTsKICBjb25zdCByb3dzID0gZmlsdGVyZWQubWFwKHM9PltzLm1vbnRoLCBzLmNoYW5uZWxzPy5uYW1lfHwnJywgKChzLmlsbHVzdHJhdGlvbnM\/LnJlZnx8JycpKycgJysocy5pbGx1c3RyYXRpb25zPy5uYW1lfHwnJykpLnRyaW0oKSwgcy5mb3JtYXQsIHMudW5pdHNfc29sZF0pOwogIGRvd25sb2FkQ1NWKCd2ZW50YXMtaXN0cmljZS0nK2ZlY2hhTG9jYWwoKSsnLmNzdicsIGhlYWRlciwgcm93cyk7Cn0KZnVuY3Rpb24gc2V0TmV4dFJlZlBsYWNlaG9sZGVyKGxpc3QsIHByZWZpeCwgYmFzZSl7CiAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKCdeJytwcmVmaXgrJy0oXFxkKykkJyk7CiAgY29uc3QgbnVtcyA9IChsaXN0fHxbXSkubWFwKGk9PnsKICAgIGNvbnN0IG0gPSByZS5leGVjKGkucmVmfHwnJyk7CiAgICByZXR1cm4gbSA\/IHBhcnNlSW50KG1bMV0sMTApIDogMDsKICB9KTsKICBjb25zdCBuZXh0ID0gKG51bXMubGVuZ3RoID8gTWF0aC5tYXgoLi4ubnVtcykgOiBiYXNlKSArIDE7CiAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV3LXJlZicpOwogIGlmKGVsKSBlbC5wbGFjZWhvbGRlciA9ICdlai4gJyArIHByZWZpeCArICctJyArIFN0cmluZyhuZXh0KS5wYWRTdGFydCgzLCcwJyk7Cn0KLy8gRXN0ZSBzZWxlY3RvciBkZSB0aXBvIGVzIFNPTE8gZGVsIGZvcm11bGFyaW8gZGUgYcOxYWRpciAoZGVjaWRlIHF1w6kgY2FtcG9zIHBlZGlyOiBmb3JtYXRvcwovLyBwYXJhIGzDoW1pbmFzLCBzdG9jayBpbmljaWFsIHBhcmEgZWwgcmVzdG8g4oCUIHkgc3VnaWVyZSBsYSBzaWd1aWVudGUgcmVmZXJlbmNpYSkuIFlhIE5PIGRlY2lkZQovLyBxdcOpIGxpc3RhIGRlICJ2ZXIvZWRpdGFyIGV4aXN0ZW50ZXMiIHNlIG11ZXN0cmEgYWJham8g4oCUIGVzbyBsbyBsbGV2YSBzdSBwcm9waW8gc2VsZWN0b3IKLy8gaW5kZXBlbmRpZW50ZSwgc2V0QWRtaW5DYXRhbG9nVmlld1R5cGUoKSwgcGFyYSBxdWUgY29uc3VsdGFyL2VkaXRhciBsbyBxdWUgeWEgdGllbmVzIG5vCi8vIGRlcGVuZGEgZGUgdG9jYXIgZWwgZm9ybXVsYXJpbyBkZSAiYcOxYWRpciBudWV2byIuCmZ1bmN0aW9uIG9uTmV3UHJvZHVjdFR5cGVDaGFuZ2UoKXsKICBjb25zdCB0eXBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25ldy1wcm9kdWN0LXR5cGUnKT8udmFsdWUgfHwgJ2xhbWluYSc7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25ldy1mb3JtYXRzLXdyYXAnKS5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nLCB0eXBlIT09J2xhbWluYScpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduZXctc3RvY2std3JhcCcpLmNsYXNzTGlzdC50b2dnbGUoJ2hpZGRlbicsIHR5cGU9PT0nbGFtaW5hJyk7CiAgaWYodHlwZT09PSdsYW1pbmEnKSBzZXROZXh0UmVmUGxhY2Vob2xkZXIoYWRtaW5MYW1pbmFzTGlzdCwgJ0lMJywgODIpOwogIGVsc2UgaWYodHlwZT09PSdsaWJyZXRhJykgc2V0TmV4dFJlZlBsYWNlaG9sZGVyKGFkbWluTGlicmV0YXNMaXN0LCAnTEInLCAwKTsKICBlbHNlIHsKICAgIGNvbnN0IHQgPSBFWFRSQV9TVE9DS19UWVBFUy5maW5kKHg9Pngua2V5PT09dHlwZSk7CiAgICBpZih0KSBzZXROZXh0UmVmUGxhY2Vob2xkZXIoYWRtaW5FeHRyYUxpc3RzW3R5cGVdfHxbXSwgdC5yZWZQcmVmaXgsIDApOwogIH0KfQpmdW5jdGlvbiBmaWx0ZXJBZG1pbklsbHVzdHJhdGlvbnMocSl7CiAgY29uc3QgcXVlcnkgPSAocXx8JycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNhZG1pbi1pbGx1c3RyYXRpb25zID4gZGl2W2lkXj0iYWRtaW4taWxsLSJdJykuZm9yRWFjaChyb3c9PnsKICAgIGNvbnN0IHRleHQgPSByb3cudGV4dENvbnRlbnQudG9Mb3dlckNhc2UoKTsKICAgIHJvdy5zdHlsZS5kaXNwbGF5ID0gKCFxdWVyeSB8fCB0ZXh0LmluY2x1ZGVzKHF1ZXJ5KSkgPyAnJyA6ICdub25lJzsKICB9KTsKfQpmdW5jdGlvbiBmaWx0ZXJBZG1pbkxpYnJldGFzKHEpewogIGNvbnN0IHF1ZXJ5ID0gKHF8fCcnKS50cmltKCkudG9Mb3dlckNhc2UoKTsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjYWRtaW4tbGlicmV0YXMgPiBkaXZbaWRePSJhZG1pbi1sYi0iXScpLmZvckVhY2gocm93PT57CiAgICBjb25zdCB0ZXh0ID0gcm93LnRleHRDb250ZW50LnRvTG93ZXJDYXNlKCk7CiAgICByb3cuc3R5bGUuZGlzcGxheSA9ICghcXVlcnkgfHwgdGV4dC5pbmNsdWRlcyhxdWVyeSkpID8gJycgOiAnbm9uZSc7CiAgfSk7Cn0KLy8gMjkvMDkvMjAyNiAocmVwYXNvKTogcXVpdGFkbyBlbCBhcnJhc3RyZSBwYXJhIHJlb3JkZW5hci4gQWwgc29sdGFyIHJlZXNjcmliw61hIGxhcyByZWZlcmVuY2lhcyBJTC0gZGUKLy8gdG9kYXMgbGFzIGzDoW1pbmFzIGRlIHBvciBtZWRpbyAoc2luIHByZWd1bnRhcikgeSBwb3IgbGEgbm9jaGUgbGEgd2ViIGhhYnLDrWEgY2FtYmlhZG8gc3VzIG5vbWJyZXM7Ci8vIGFkZW3DoXMgbm8gc2VydsOtYSBkZSBuYWRhIHBvcnF1ZSBsYSBsaXN0YSBzZSBvcmRlbmEgcG9yIG5vbWJyZS4gTGFzIHJlZmVyZW5jaWFzIG5vIHNlIHRvY2FuIGRlc2RlIGFxdcOtLgpmdW5jdGlvbiByZW5kZXJBZG1pbklsbHVzdHJhdGlvbnMobGlzdCl7CiAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtaW4taWxsdXN0cmF0aW9ucycpOwogIGVsLmlubmVySFRNTCA9IGxpc3QubWFwKChpLCBpZHgpID0+IGAKICAgIDxkaXYgY2xhc3M9InJvdyBhZG1pbi1pdGVtIiBzdHlsZT0iYWxpZ24taXRlbXM6ZmxleC1zdGFydDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjhweDsiIGlkPSJhZG1pbi1pbGwtJHtpLmlkfSI+CiAgICAgIDxkaXYgY2xhc3M9ImFkbWluLWl0ZW0tdGh1bWIiPiR7aS5pbWFnZV91cmw\/YDxpbWArYGcgc3JjPSIke3RodW1iU3JjKGkpfSIgYWx0PSIkeyhpLm5hbWV8fGkucmVmfHwnJykucmVwbGFjZSgvIi9nLCcmcXVvdDsnKX0iIGxvYWRpbmc9ImxhenkiIHN0eWxlPSJ3aWR0aDoxMDhweDtoZWlnaHQ6MTQ0cHg7b2JqZWN0LWZpdDpjb250YWluO2JhY2tncm91bmQ6dmFyKC0tY3JlbWEtMik7Ym9yZGVyLXJhZGl1czo0cHg7ZGlzcGxheTpibG9jazsiPmA6YDxkaXYgc3R5bGU9IndpZHRoOjEwOHB4O2hlaWdodDoxNDRweDtiYWNrZ3JvdW5kOnZhcigtLWNyZW1hLTIpO2JvcmRlci1yYWRpdXM6NHB4OyI+PC9kaXY+YH08L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iYWRtaW4taXRlbS1ib2R5Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1pdGVtLXRpdGxlIj48c3Ryb25nPiR7aS5yZWZ9PC9zdHJvbmc+IOKAlCAke2kubmFtZX0ke2FkbWluRXN0YWRvSHRtbChpKX08ZGl2IHN0eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij4keyhpLmZvcm1hdHNfYXZhaWxhYmxlfHxbXSkuam9pbignLCAnKX08L2Rpdj48L2Rpdj4KICAgICAgICAke2FkbWluQWNjaW9uZXNIdG1sKGksIGBzdGFydEVkaXRJbGx1c3RyYXRpb24oJyR7aS5pZH0nKWApfQogICAgICA8L2Rpdj4KICAgIDwvZGl2PmApLmpvaW4oJycpOwogIGNvbnN0IHNlYXJjaEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbWluLWlsbC1zZWFyY2gnKTsKICBpZihzZWFyY2hFbCAmJiBzZWFyY2hFbC52YWx1ZSkgZmlsdGVyQWRtaW5JbGx1c3RyYXRpb25zKHNlYXJjaEVsLnZhbHVlKTsKfQpmdW5jdGlvbiBzdGFydEVkaXRJbGx1c3RyYXRpb24oaWQpewogIGNvbnN0IGkgPSBhZG1pbkxhbWluYXNMaXN0LmZpbmQoeD0+eC5pZD09PWlkKTsKICBpZighaSkgcmV0dXJuOwogIGNvbnN0IHJvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1pbi1pbGwtJytpZCk7CiAgaWYoIXJvdykgcmV0dXJuOwogIHJvdy5pbm5lckhUTUwgPSBgCiAgICA8ZGl2IHN0eWxlPSJ3aWR0aDoxMDhweDtmbGV4OjAgMCAxMDhweDsiPiR7YWRtaW5UaHVtYkh0bWwoaSl9PC9kaXY+CiAgICAke2FkbWluVGh1bWJVcGxvYWRIdG1sKGkpfQogICAgPGRpdiBzdHlsZT0iZmxleDoxO21pbi13aWR0aDoyMjBweDsiPgogICAgICA8bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTsiPlJlZmVyZW5jaWE8L2xhYmVsPgogICAgICA8aW5wdXQgaWQ9ImVkaXQtcmVmLSR7aWR9IiB2YWx1ZT0iJHtpLnJlZn0iIHN0eWxlPSJ3aWR0aDoxMDAlO3BhZGRpbmc6NnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo2cHg7Ij4KICAgICAgPGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7bWFyZ2luLXRvcDo2cHg7ZGlzcGxheTpibG9jazsiPk5vbWJyZTwvbGFiZWw+CiAgICAgIDxpbnB1dCBpZD0iZWRpdC1uYW1lLSR7aWR9IiB2YWx1ZT0iJHtpLm5hbWV9IiBzdHlsZT0id2lkdGg6MTAwJTtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6NnB4OyI+CiAgICAgIDxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tc3VhdmUpO21hcmdpbi10b3A6NnB4O2Rpc3BsYXk6YmxvY2s7Ij5Gb3JtYXRvcyAoc2VwYXJhZG9zIHBvciBjb21hKTwvbGFiZWw+CiAgICAgIDxpbnB1dCBpZD0iZWRpdC1mb3JtYXRzLSR7aWR9IiB2YWx1ZT0iJHsoaS5mb3JtYXRzX2F2YWlsYWJsZXx8W10pLmpvaW4oJywgJyl9IiBzdHlsZT0id2lkdGg6MTAwJTtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6NnB4OyI+CiAgICA8L2Rpdj4KICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6NnB4OyI+CiAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIHNtYWxsIiBvbmNsaWNrPSJzYXZlSWxsdXN0cmF0aW9uRWRpdCgnJHtpZH0nKSI+R3VhcmRhcjwvYnV0dG9uPgogICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBzZWNvbmRhcnkgc21hbGwiIG9uY2xpY2s9InJlbmRlckFkbWluSWxsdXN0cmF0aW9ucyhhZG1pbkxhbWluYXNMaXN0KSI+Q2FuY2VsYXI8L2J1dHRvbj4KICAgIDwvZGl2PmA7Cn0KYXN5bmMgZnVuY3Rpb24gc2F2ZUlsbHVzdHJhdGlvbkVkaXQoaWQpewogIGNvbnN0IHJlZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0LXJlZi0nK2lkKS52YWx1ZS50cmltKCk7CiAgY29uc3QgbmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0LW5hbWUtJytpZCkudmFsdWUudHJpbSgpOwogIGNvbnN0IGZvcm1hdHNfYXZhaWxhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXQtZm9ybWF0cy0nK2lkKS52YWx1ZS5zcGxpdCgnLCcpLm1hcChzPT5zLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pOwogIGlmKCFyZWYgfHwgIW5hbWUpeyBhbGVydCgnUmVmZXJlbmNpYSB5IG5vbWJyZSBzb24gb2JsaWdhdG9yaW9zLicpOyByZXR1cm47IH0KICBpZighZm9ybWF0c19hdmFpbGFibGUubGVuZ3RoKXsgYWxlcnQoJ0HDsWFkZSBhbCBtZW5vcyB1biBmb3JtYXRvIGRpc3BvbmlibGUg4oCUIHNpIHNlIGRlamEgdmFjw61vLCBlbCBwcm9kdWN0byBxdWVkYSBlbiBlbCBjYXTDoWxvZ28gcGVybyBubyBzZSBwdWVkZSBwZWRpci4nKTsgcmV0dXJuOyB9CiAgY29uc3Qge2Vycm9yfSA9IGF3YWl0IHNiLmZyb20oJ2lsbHVzdHJhdGlvbnMnKS51cGRhdGUoe3JlZiwgbmFtZSwgZm9ybWF0c19hdmFpbGFibGV9KS5lcSgnaWQnLCBpZCk7CiAgaWYoZXJyb3IpeyBhbGVydCgnRXJyb3IgZ3VhcmRhbmRvOiAnK2ZyaWVuZGx5RGJFcnJvcihlcnJvcikpOyByZXR1cm47IH0KICBsb2dBY3Rpdml0eSgnY2F0YWxvZ28nLCBgRWRpdMOzICR7cmVmfSDigJQgJHtuYW1lfSAoZm9ybWF0b3M6ICR7Zm9ybWF0c19hdmFpbGFibGUuam9pbignLCAnKX0pYCk7CiAgbG9hZEFkbWluRGF0YSgpOwogIGxvYWRJbGx1c3RyYXRpb25zKCkudGhlbihyZW5kZXJDYXRhbG9nKTsKfQovLyBHZW5lcmEgZW4gZWwgbmF2ZWdhZG9yIHVuYSBtaW5pYXR1cmEgV2ViUCAoNDgwIHB4IGRlIGFuY2hvKSBhIHBhcnRpciBkZSBsYSBmb3RvIGVsZWdpZGEuCmFzeW5jIGZ1bmN0aW9uIG1ha2VUaHVtYkJsb2IoZmlsZSwgd2lkdGg9NDgwKXsKICBjb25zdCBibXAgPSBhd2FpdCBjcmVhdGVJbWFnZUJpdG1hcChmaWxlKTsKICBjb25zdCBzY2FsZSA9IE1hdGgubWluKDEsIHdpZHRoIC8gYm1wLndpZHRoKTsKICBjb25zdCBjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CiAgYy53aWR0aCA9IE1hdGgucm91bmQoYm1wLndpZHRoICogc2NhbGUpOyBjLmhlaWdodCA9IE1hdGgucm91bmQoYm1wLmhlaWdodCAqIHNjYWxlKTsKICBjLmdldENvbnRleHQoJzJkJykuZHJhd0ltYWdlKGJtcCwgMCwgMCwgYy53aWR0aCwgYy5oZWlnaHQpOwogIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZShyZXMgPT4gYy50b0Jsb2IocmVzLCAnaW1hZ2Uvd2VicCcsIDAuOCkpOwp9CmFzeW5jIGZ1bmN0aW9uIHVwbG9hZEltYWdlKGlkLCByZWYsIGZpbGUpewogIGlmKCFmaWxlKSByZXR1cm47CiAgY29uc3QgdHMgPSBEYXRlLm5vdygpOwogIGNvbnN0IHBhdGggPSByZWYgKyAnLScgKyB0cyArICcuJyArIGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpOwogIGNvbnN0IHtlcnJvcn0gPSBhd2FpdCBzYi5zdG9yYWdlLmZyb20oJ2lsbHVzdHJhdGlvbnMnKS51cGxvYWQocGF0aCwgZmlsZSwge3Vwc2VydDp0cnVlLCBjYWNoZUNvbnRyb2w6JzMxNTM2MDAwJ30pOwogIGlmKGVycm9yKXsgYWxlcnQoJ0Vycm9yIHN1YmllbmRvIGltYWdlbjogJytlcnJvci5tZXNzYWdlKTsgcmV0dXJuOyB9CiAgY29uc3QgeyBkYXRhOnB1YiB9ID0gc2Iuc3RvcmFnZS5mcm9tKCdpbGx1c3RyYXRpb25zJykuZ2V0UHVibGljVXJsKHBhdGgpOwogIC8vIE1pbmlhdHVyYTogc2kgZmFsbGEgcG9yIGxvIHF1ZSBzZWEsIHNlIGRlamEgdmFjw61hIHkgbGEgYXBwIHVzYSBsYSBmb3RvIGdyYW5kZS4KICBsZXQgdGh1bWJfdXJsID0gbnVsbDsKICB0cnkgewogICAgY29uc3QgdGIgPSBhd2FpdCBtYWtlVGh1bWJCbG9iKGZpbGUpOwogICAgaWYodGIgJiYgdGIudHlwZSA9PT0gJ2ltYWdlL3dlYnAnKXsKICAgICAgY29uc3QgdHBhdGggPSBgdGh1bWJzLyR7aWR9LSR7dHN9LndlYnBgOwogICAgICBjb25zdCB7ZXJyb3I6IHRlcnJ9ID0gYXdhaXQgc2Iuc3RvcmFnZS5mcm9tKCdpbGx1c3RyYXRpb25zJykudXBsb2FkKHRwYXRoLCB0Yiwge2NvbnRlbnRUeXBlOidpbWFnZS93ZWJwJywgY2FjaGVDb250cm9sOiczMTUzNjAwMCd9KTsKICAgICAgaWYoIXRlcnIpIHRodW1iX3VybCA9IHNiLnN0b3JhZ2UuZnJvbSgnaWxsdXN0cmF0aW9ucycpLmdldFB1YmxpY1VybCh0cGF0aCkuZGF0YS5wdWJsaWNVcmw7CiAgICB9CiAgfSBjYXRjaChlKSB7fQogIGF3YWl0IHNiLmZyb20oJ2lsbHVzdHJhdGlvbnMnKS51cGRhdGUoe2ltYWdlX3VybDogcHViLnB1YmxpY1VybCwgdGh1bWJfdXJsfSkuZXEoJ2lkJywgaWQpOwogIGxvZ0FjdGl2aXR5KCdjYXRhbG9nbycsICdTdWJpw7MgZm90byBudWV2YSBkZSAnICsgaWxsTGFiZWwoaWQpKTsKICBsb2FkQWRtaW5EYXRhKCk7CiAgbG9hZElsbHVzdHJhdGlvbnMoKS50aGVuKHJlbmRlckNhdGFsb2cpOwp9Ci8vIFRhbmRhIDIgKFAxNCwgMDYvMTAvMjAyNjsgUmHDumw6IMKraGF5IGRlbWFzaWFkYXMgY29zYXMsIGJvdG9uZXPCuyk6IGVuIGNhZGEgYXJ0w61jdWxvIGRlIEFkbWluLCBhIGxhIHZpc3RhIHNvbG8gwqtFZGl0YXLCuzsKLy8gwqtTdWJpciBmb3RvwrssIMKrQWN0aXZhci9EZXNhY3RpdmFywrsgeSDCq05ld8K7IHZhbiBkZW50cm8gZGUgwqtNw6FzwrsuIFNpIGVzdMOhIGRlc2FjdGl2YWRvIG8gZXMgTmV3IHNlIHZlIGNvbW8gZXRpcXVldGEganVudG8gYWwgbm9tYnJlLgpmdW5jdGlvbiBhZG1pbkFjY2lvbmVzSHRtbChpLCBlZGl0YXJKcyl7CiAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJhZG1pbi1pdGVtLWFjdGlvbnMiPgogICAgPGlucHV0IHR5cGU9ImZpbGUiIGFjY2VwdD0iaW1hZ2UvKiIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiIGlkPSJmaWxlLSR7aS5pZH0iIG9uY2hhbmdlPSJ1cGxvYWRJbWFnZSgnJHtpLmlkfScsJyR7aS5yZWZ9Jyx0aGlzLmZpbGVzWzBdKSI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBzZWNvbmRhcnkgc21hbGwiIG9uY2xpY2s9IiR7ZWRpdGFySnN9Ij5FZGl0YXI8L2J1dHRvbj4KICAgIDxkZXRhaWxzIGNsYXNzPSJtYXMtYWNjaW9uZXMiPjxzdW1tYXJ5IGNsYXNzPSJidG4gc2Vjb25kYXJ5IHNtYWxsIj5Nw6FzPC9zdW1tYXJ5PjxkaXYgY2xhc3M9Im1hcy1tZW51Ij4KICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIG9uY2xpY2s9InRoaXMuY2xvc2VzdCgnZGV0YWlscycpLm9wZW49ZmFsc2U7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbGUtJHtpLmlkfScpLmNsaWNrKCkiPlN1YmlyIGZvdG88L2J1dHRvbj4KICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIG9uY2xpY2s9InRvZ2dsZUFjdGl2ZSgnJHtpLmlkfScsICR7IWkuYWN0aXZlfSkiPiR7aS5hY3RpdmU\/J0Rlc2FjdGl2YXInOidBY3RpdmFyJ308L2J1dHRvbj4KICAgICAgJHtpc05ld0l0ZW0oaSkgPyBgPGJ1dHRvbiB0eXBlPSJidXR0b24iIG9uY2xpY2s9InRvZ2dsZU5ldygnJHtpLmlkfScsIGZhbHNlKSI+UXVpdGFyIE5ldzwvYnV0dG9uPmAgOiBgPGJ1dHRvbiB0eXBlPSJidXR0b24iIG9uY2xpY2s9InRvZ2dsZU5ldygnJHtpLmlkfScsIHRydWUpIj5NYXJjYXIgY29tbyBOZXc8L2J1dHRvbj5gfQogICAgPC9kaXY+PC9kZXRhaWxzPgogIDwvZGl2PmA7Cn0KZnVuY3Rpb24gYWRtaW5Fc3RhZG9IdG1sKGkpewogIGxldCBoID0gJyc7CiAgaWYoIWkuYWN0aXZlKSBoICs9ICcgPHNwYW4gY2xhc3M9ImNoYW4tYmFkZ2UgZXN0YWRvLW9mZiI+ZGVzYWN0aXZhZG88L3NwYW4+JzsKICBpZihpc05ld0l0ZW0oaSkpIGggKz0gYCA8c3BhbiBjbGFzcz0iY2hhbi1iYWRnZSBlc3RhZG8tbmV3IiB0aXRsZT0iU2UgcXVpdGEgc29sYSBlbCAke25ldyBEYXRlKG5ldyBEYXRlKGkubmV3X3NpbmNlKS5nZXRUaW1lKCkgKyBORVdfRFVSQVRJT05fTVMpLnRvTG9jYWxlRGF0ZVN0cmluZyhhcHBMb2NhbGUoKSl9Ij5OZXc8L3NwYW4+YDsKICByZXR1cm4gaDsKfQpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGU9PnsgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscy5tYXMtYWNjaW9uZXNbb3Blbl0nKS5mb3JFYWNoKGQ9PnsgaWYoIWQuY29udGFpbnMoZS50YXJnZXQpKSBkLm9wZW4gPSBmYWxzZTsgfSk7IH0pOwovLyAxOC8wOS8yMDI2OiBib3TDs24gIk5ldyIgZW4gY2FkYSBhcnTDrWN1bG8gZGUgQWRtaW4gKEzDoW1pbmFzLCBMaWJyZXRhcyB5IHRpcG9zIGV4dHJhKS4KLy8gQWwgbWFyY2FybG8gc2UgZ3VhcmRhIGxhIGZlY2hhIGVuIG5ld19zaW5jZTsgY2FkdWNhIHNvbGEgYSBsb3MgMyBtZXNlcyAodmVyIGlzTmV3SXRlbSkuCmZ1bmN0aW9uIGFkbWluTmV3QnRuSHRtbChpKXsKICBpZihpc05ld0l0ZW0oaSkpewogICAgY29uc3QgdW50aWwgPSBuZXcgRGF0ZShuZXcgRGF0ZShpLm5ld19zaW5jZSkuZ2V0VGltZSgpICsgTkVXX0RVUkFUSU9OX01TKS50b0xvY2FsZURhdGVTdHJpbmcoYXBwTG9jYWxlKCkpOwogICAgcmV0dXJuIGA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBzbWFsbCBuZXctdG9nZ2xlIG9uIiB0aXRsZT0iU2UgcXVpdGEgc29sYSBlbCAke3VudGlsfSIgb25jbGljaz0idG9nZ2xlTmV3KCcke2kuaWR9JywgZmFsc2UpIj7imIUgTmV3IMK3IHF1aXRhcjwvYnV0dG9uPmA7CiAgfQogIHJldHVybiBgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gc2Vjb25kYXJ5IHNtYWxsIG5ldy10b2dnbGUiIG9uY2xpY2s9InRvZ2dsZU5ldygnJHtpLmlkfScsIHRydWUpIj7imIYgTWFyY2FyIE5ldzwvYnV0dG9uPmA7Cn0KYXN5bmMgZnVuY3Rpb24gdG9nZ2xlTmV3KGlkLCBvbil7CiAgY29uc3Qge2Vycm9yfSA9IGF3YWl0IHNiLmZyb20oJ2lsbHVzdHJhdGlvbnMnKS51cGRhdGUoe25ld19zaW5jZTogb24gPyBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkgOiBudWxsfSkuZXEoJ2lkJywgaWQpOwogIGlmKGVycm9yKXsgYWxlcnQoJ05vIHNlIHB1ZG8gZ3VhcmRhcjogJyArIGZyaWVuZGx5RGJFcnJvcihlcnJvcikpOyByZXR1cm47IH0KICBsb2dBY3Rpdml0eSgnY2F0YWxvZ28nLCAob24gPyAnTWFyY8OzIGNvbW8gTmV3OiAnIDogJ1F1aXTDsyBOZXcgZGU6ICcpICsgaWxsTGFiZWwoaWQpKTsKICBsb2FkQWRtaW5EYXRhKCk7CiAgbG9hZElsbHVzdHJhdGlvbnMoKS50aGVuKHJlbmRlckNhdGFsb2cpOwp9CmFzeW5jIGZ1bmN0aW9uIHRvZ2dsZUFjdGl2ZShpZCwgdmFsKXsKICBhd2FpdCBzYi5mcm9tKCdpbGx1c3RyYXRpb25zJykudXBkYXRlKHthY3RpdmU6IHZhbH0pLmVxKCdpZCcsIGlkKTsKICBsb2dBY3Rpdml0eSgnY2F0YWxvZ28nLCAodmFsID8gJ0FjdGl2w7M6ICcgOiAnRGVzYWN0aXbDszogJykgKyBpbGxMYWJlbChpZCkpOwogIGxvYWRBZG1pbkRhdGEoKTsKICBsb2FkSWxsdXN0cmF0aW9ucygpLnRoZW4ocmVuZGVyQ2F0YWxvZyk7Cn0KZnVuY3Rpb24gcmVuZGVyQWRtaW5MaWJyZXRhcyhsaXN0KXsKICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1pbi1saWJyZXRhcycpOwogIGVsLmlubmVySFRNTCA9IGxpc3QubWFwKGkgPT4gYAogICAgPGRpdiBjbGFzcz0icm93IGFkbWluLWl0ZW0iIHN0eWxlPSJhbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6OHB4OyIgaWQ9ImFkbWluLWxiLSR7aS5pZH0iPgogICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1pdGVtLXRodW1iIj4ke2kuaW1hZ2VfdXJsP2A8aW1gK2BnIHNyYz0iJHt0aHVtYlNyYyhpKX0iIGFsdD0iJHsoaS5uYW1lfHxpLnJlZnx8JycpLnJlcGxhY2UoLyIvZywnJnF1b3Q7Jyl9IiBsb2FkaW5nPSJsYXp5IiBzdHlsZT0id2lkdGg6MTA4cHg7aGVpZ2h0OjE0NHB4O29iamVjdC1maXQ6Y29udGFpbjtiYWNrZ3JvdW5kOnZhcigtLWNyZW1hLTIpO2JvcmRlci1yYWRpdXM6NHB4O2Rpc3BsYXk6YmxvY2s7Ij5gOmA8ZGl2IHN0eWxlPSJ3aWR0aDoxMDhweDtoZWlnaHQ6MTQ0cHg7YmFja2dyb3VuZDp2YXIoLS1jcmVtYS0yKTtib3JkZXItcmFkaXVzOjRweDsiPjwvZGl2PmB9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImFkbWluLWl0ZW0tYm9keSI+CiAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4taXRlbS10aXRsZSI+PHN0cm9uZz4ke2kucmVmfTwvc3Ryb25nPiDigJQgJHtpLm5hbWV9JHthZG1pbkVzdGFkb0h0bWwoaSl9PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4taXRlbS1zdG9jayI+PGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS1zdWF2ZSk7ZGlzcGxheTpibG9jazsiPlN0b2NrPC9sYWJlbD48aW5wdXQgdHlwZT0ibnVtYmVyIiBtaW49IjAiIHZhbHVlPSIke2kuc3RvY2tfcXR5fHwwfSIgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzo0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjRweDsiIG9uY2hhbmdlPSJzZXRMaWJyZXRhU3RvY2soJyR7aS5pZH0nLHRoaXMudmFsdWUpIj48L2Rpdj4KICAgICAgICAke2FkbWluQWNjaW9uZXNIdG1sKGksIGBzdGFydEVkaXRMaWJyZXRhKCcke2kuaWR9JylgKX0KICAgICAgPC9kaXY+CiAgICA8L2Rpdj5gKS5qb2luKCcnKTsKICBjb25zdCBzZWFyY2hFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1pbi1saWJyZXRhLXNlYXJjaCcpOwogIGlmKHNlYXJjaEVsICYmIHNlYXJjaEVsLnZhbHVlKSBmaWx0ZXJBZG1pbkxpYnJldGFzKHNlYXJjaEVsLnZhbHVlKTsKfQphc3luYyBmdW5jdGlvbiBzZXRMaWJyZXRhU3RvY2soaWQsIHZhbHVlKXsKICBjb25zdCBzdG9ja19xdHkgPSBNYXRoLm1heCgwLCBwYXJzZUludCh2YWx1ZXx8JzAnLDEwKSB8fCAwKTsKICBjb25zdCBpdGVtID0gYWRtaW5MaWJyZXRhc0xpc3QuZmluZCh4PT54LmlkPT09aWQpOwogIGNvbnN0IG9sZFF0eSA9IGl0ZW0gPyAoaXRlbS5zdG9ja19xdHl8fDApIDogMDsKICBjb25zdCB7ZXJyb3J9ID0gYXdhaXQgc2IuZnJvbSgnaWxsdXN0cmF0aW9ucycpLnVwZGF0ZSh7c3RvY2tfcXR5fSkuZXEoJ2lkJywgaWQpOwogIGlmKGVycm9yKXsgYWxlcnQoJ0Vycm9yIGd1YXJkYW5kbyBzdG9jazogJytlcnJvci5tZXNzYWdlKTsgcmV0dXJuOyB9CiAgaWYoaXRlbSkgaXRlbS5zdG9ja19xdHkgPSBzdG9ja19xdHk7CiAgY29uc3QgYWxzbyA9IGFkbWluSWxsdXN0cmF0aW9uc0xpc3QuZmluZCh4PT54LmlkPT09aWQpOwogIGlmKGFsc28pIGFsc28uc3RvY2tfcXR5ID0gc3RvY2tfcXR5OwogIGlmKHN0b2NrX3F0eSAhPT0gb2xkUXR5KXsKICAgIGxvZ0FjdGl2aXR5KCdzdG9jaycsIGBDYW1iacOzIHN0b2NrIGRlICR7aXRlbT9pdGVtLnJlZjonPyd9OiAke29sZFF0eX0g4oaSICR7c3RvY2tfcXR5fWApOwogIH0KfQpmdW5jdGlvbiBzdGFydEVkaXRMaWJyZXRhKGlkKXsKICBjb25zdCBpID0gYWRtaW5MaWJyZXRhc0xpc3QuZmluZCh4PT54LmlkPT09aWQpOwogIGlmKCFpKSByZXR1cm47CiAgY29uc3Qgcm93ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbWluLWxiLScraWQpOwogIGlmKCFyb3cpIHJldHVybjsKICByb3cuaW5uZXJIVE1MID0gYAogICAgPGRpdiBzdHlsZT0id2lkdGg6MTA4cHg7ZmxleDowIDAgMTA4cHg7Ij4ke2FkbWluVGh1bWJIdG1sKGkpfTwvZGl2PgogICAgJHthZG1pblRodW1iVXBsb2FkSHRtbChpKX0KICAgIDxkaXYgc3R5bGU9ImZsZXg6MTttaW4td2lkdGg6MjIwcHg7Ij4KICAgICAgPGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij5SZWZlcmVuY2lhPC9sYWJlbD4KICAgICAgPGlucHV0IGlkPSJlZGl0LWxiLXJlZi0ke2lkfSIgdmFsdWU9IiR7aS5yZWZ9IiBzdHlsZT0id2lkdGg6MTAwJTtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6NnB4OyI+CiAgICAgIDxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tc3VhdmUpO21hcmdpbi10b3A6NnB4O2Rpc3BsYXk6YmxvY2s7Ij5Ob21icmU8L2xhYmVsPgogICAgICA8aW5wdXQgaWQ9ImVkaXQtbGItbmFtZS0ke2lkfSIgdmFsdWU9IiR7aS5uYW1lfSIgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzo2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjZweDsiPgogICAgPC9kaXY+CiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjZweDsiPgogICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBzbWFsbCIgb25jbGljaz0ic2F2ZUxpYnJldGFFZGl0KCcke2lkfScpIj5HdWFyZGFyPC9idXR0b24+CiAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIHNlY29uZGFyeSBzbWFsbCIgb25jbGljaz0icmVuZGVyQWRtaW5MaWJyZXRhcyhhZG1pbkxpYnJldGFzTGlzdCkiPkNhbmNlbGFyPC9idXR0b24+CiAgICA8L2Rpdj5gOwp9CmFzeW5jIGZ1bmN0aW9uIHNhdmVMaWJyZXRhRWRpdChpZCl7CiAgY29uc3QgcmVmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXQtbGItcmVmLScraWQpLnZhbHVlLnRyaW0oKTsKICBjb25zdCBuYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXQtbGItbmFtZS0nK2lkKS52YWx1ZS50cmltKCk7CiAgaWYoIXJlZiB8fCAhbmFtZSl7IGFsZXJ0KCdSZWZlcmVuY2lhIHkgbm9tYnJlIHNvbiBvYmxpZ2F0b3Jpb3MuJyk7IHJldHVybjsgfQogIGNvbnN0IHtlcnJvcn0gPSBhd2FpdCBzYi5mcm9tKCdpbGx1c3RyYXRpb25zJykudXBkYXRlKHtyZWYsIG5hbWV9KS5lcSgnaWQnLCBpZCk7CiAgaWYoZXJyb3IpeyBhbGVydCgnRXJyb3IgZ3VhcmRhbmRvOiAnK2ZyaWVuZGx5RGJFcnJvcihlcnJvcikpOyByZXR1cm47IH0KICBsb2dBY3Rpdml0eSgnY2F0YWxvZ28nLCBgRWRpdMOzICR7cmVmfSDigJQgJHtuYW1lfWApOwogIGxvYWRBZG1pbkRhdGEoKTsKICBsb2FkSWxsdXN0cmF0aW9ucygpLnRoZW4ocmVuZGVyQ2F0YWxvZyk7Cn0KLy8gLS0tLS0tLS0tLSBTRUNDSU9ORVMgQURNSU4gR0VOw4lSSUNBUyBQQVJBIFRJUE9TIEVYVFJBIChwZWdhdGluYXMsIGV0Yy4pIC0tLS0tLS0tLS0KLy8gTWlzbW8gcGF0csOzbiBxdWUgbGlicmV0YXMgKHN0b2NrIGVuIHVuaWRhZGVzLCBzaW4gZm9ybWF0b3MpLCBwYXJhbWV0cml6YWRvIHBvciAidHlwZSIKLy8gcGFyYSBubyB0ZW5lciBxdWUgZHVwbGljYXIgdG9kbyBlc3RlIGJsb3F1ZSBjYWRhIHZleiBxdWUgc2UgYcOxYWRhIHVuIHRpcG8gbnVldm8uCmZ1bmN0aW9uIGJ1aWxkQWRtaW5FeHRyYVNlY3Rpb25zKCl7CiAgY29uc3QgYnRuV3JhcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXR2aWV3LXR5cGUtZXh0cmEnKTsKICBpZihidG5XcmFwKSBidG5XcmFwLmlubmVySFRNTCA9IGV4dHJhVHlwZXNTaG93bigpLm1hcCh0PT5gPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJjYXR2aWV3LXR5cGUtJHt0LmtleX0iIG9uY2xpY2s9InNldEFkbWluQ2F0YWxvZ1ZpZXdUeXBlKCcke3Qua2V5fScpIj4ke3QubGFiZWx9PC9idXR0b24+YCkuam9pbignJyk7CiAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1pbi1leHRyYS1zZWN0aW9ucycpOwogIGlmKCF3cmFwKSByZXR1cm47CiAgd3JhcC5pbm5lckhUTUwgPSBleHRyYVR5cGVzU2hvd24oKS5tYXAodD0+YAogICAgPGRpdiBpZD0iYWRtaW4tZXh0cmEtJHt0LmtleX0tc2VjdGlvbiIgY2xhc3M9InBlZGNhcmQgaGlkZGVuIiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxNHB4OyI+CiAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icGVkY2FyZC1oZWFkZXIiIG9uY2xpY2s9InRvZ2dsZVBlZGNhcmQoJ2NhdC1leHRyYS0ke3Qua2V5fScpIj4KICAgICAgICA8c3BhbiBjbGFzcz0icGVkY2FyZC10aXRsZSI+JHt0LmxhYmVsfSA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6NDAwO2NvbG9yOnZhcigtLXN1YXZlKTsiPihlZGl0YXIgLyBzdG9jayAvIHN1YmlyIGZvdG8gLyBhY3RpdmFyLWRlc2FjdGl2YXIpPC9zcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBpZD0icGVkY2FyZC1jYXJldC1jYXQtZXh0cmEtJHt0LmtleX0iIGNsYXNzPSJwZWRjYXJkLWNhcmV0Ij7ilr4gb2N1bHRhcjwvc3Bhbj4KICAgICAgPC9idXR0b24+CiAgICAgIDxkaXYgaWQ9InBlZGNhcmQtYm9keS1jYXQtZXh0cmEtJHt0LmtleX0iIGNsYXNzPSJwZWRjYXJkLWJvZHkiPgogICAgICAgIDxpbnB1dCBpZD0iYWRtaW4tZXh0cmEtJHt0LmtleX0tc2VhcmNoIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iQnVzY2FyIHBvciByZWZlcmVuY2lhIG8gbm9tYnJl4oCmIiBvbmlucHV0PSJmaWx0ZXJBZG1pbkV4dHJhKCcke3Qua2V5fScsIHRoaXMudmFsdWUpIiBzdHlsZT0ibWF4LXdpZHRoOjMyMHB4O3BhZGRpbmc6OHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo2cHg7Zm9udC1zaXplOjE0cHg7bWFyZ2luLWJvdHRvbToxMnB4O2Rpc3BsYXk6YmxvY2s7Ij4KICAgICAgICA8ZGl2IGlkPSJhZG1pbi1leHRyYS0ke3Qua2V5fSI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+YCkuam9pbignJyk7Cn0KZnVuY3Rpb24gcmVuZGVyQWRtaW5FeHRyYSh0eXBlLCBsaXN0KXsKICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1pbi1leHRyYS0nK3R5cGUpOwogIGlmKCFlbCkgcmV0dXJuOwogIGVsLmlubmVySFRNTCA9IChsaXN0fHxbXSkubWFwKGkgPT4gYAogICAgPGRpdiBjbGFzcz0icm93IGFkbWluLWl0ZW0iIHN0eWxlPSJhbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6OHB4OyIgaWQ9ImFkbWluLWV4LSR7dHlwZX0tJHtpLmlkfSI+CiAgICAgIDxkaXYgY2xhc3M9ImFkbWluLWl0ZW0tdGh1bWIiPiR7aS5pbWFnZV91cmw\/YDxpbWArYGcgc3JjPSIke3RodW1iU3JjKGkpfSIgYWx0PSIkeyhpLm5hbWV8fGkucmVmfHwnJykucmVwbGFjZSgvIi9nLCcmcXVvdDsnKX0iIGxvYWRpbmc9ImxhenkiIHN0eWxlPSJ3aWR0aDoxMDhweDtoZWlnaHQ6MTQ0cHg7b2JqZWN0LWZpdDpjb250YWluO2JhY2tncm91bmQ6dmFyKC0tY3JlbWEtMik7Ym9yZGVyLXJhZGl1czo0cHg7ZGlzcGxheTpibG9jazsiPmA6YDxkaXYgc3R5bGU9IndpZHRoOjEwOHB4O2hlaWdodDoxNDRweDtiYWNrZ3JvdW5kOnZhcigtLWNyZW1hLTIpO2JvcmRlci1yYWRpdXM6NHB4OyI+PC9kaXY+YH08L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iYWRtaW4taXRlbS1ib2R5Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1pdGVtLXRpdGxlIj48c3Ryb25nPiR7aS5yZWZ9PC9zdHJvbmc+IOKAlCAke2kubmFtZX0ke2FkbWluRXN0YWRvSHRtbChpKX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1pdGVtLXN0b2NrIj48bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXN1YXZlKTtkaXNwbGF5OmJsb2NrOyI+U3RvY2s8L2xhYmVsPjxpbnB1dCB0eXBlPSJudW1iZXIiIG1pbj0iMCIgdmFsdWU9IiR7aS5zdG9ja19xdHl8fDB9IiBzdHlsZT0id2lkdGg6MTAwJTtwYWRkaW5nOjRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6NHB4OyIgb25jaGFuZ2U9InNldEV4dHJhU3RvY2soJyR7dHlwZX0nLCcke2kuaWR9Jyx0aGlzLnZhbHVlKSI+PC9kaXY+CiAgICAgICAgJHthZG1pbkFjY2lvbmVzSHRtbChpLCBgc3RhcnRFZGl0RXh0cmEoJyR7dHlwZX0nLCcke2kuaWR9JylgKX0KICAgICAgPC9kaXY+CiAgICA8L2Rpdj5gKS5qb2luKCcnKTsKICBjb25zdCBzZWFyY2hFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1pbi1leHRyYS0nK3R5cGUrJy1zZWFyY2gnKTsKICBpZihzZWFyY2hFbCAmJiBzZWFyY2hFbC52YWx1ZSkgZmlsdGVyQWRtaW5FeHRyYSh0eXBlLCBzZWFyY2hFbC52YWx1ZSk7Cn0KZnVuY3Rpb24gZmlsdGVyQWRtaW5FeHRyYSh0eXBlLCBxKXsKICBjb25zdCBxdWVyeSA9IChxfHwnJykudHJpbSgpLnRvTG93ZXJDYXNlKCk7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI2FkbWluLWV4dHJhLScrdHlwZSsnID4gZGl2W2lkXj0iYWRtaW4tZXgtJyt0eXBlKyctIl0nKS5mb3JFYWNoKHJvdz0+ewogICAgY29uc3QgdGV4dCA9IHJvdy50ZXh0Q29udGVudC50b0xvd2VyQ2FzZSgpOwogICAgcm93LnN0eWxlLmRpc3BsYXkgPSAoIXF1ZXJ5IHx8IHRleHQuaW5jbHVkZXMocXVlcnkpKSA\/ICcnIDogJ25vbmUnOwogIH0pOwp9CmFzeW5jIGZ1bmN0aW9uIHNldEV4dHJhU3RvY2sodHlwZSwgaWQsIHZhbHVlKXsKICBjb25zdCBzdG9ja19xdHkgPSBNYXRoLm1heCgwLCBwYXJzZUludCh2YWx1ZXx8JzAnLDEwKSB8fCAwKTsKICBjb25zdCBpdGVtID0gKGFkbWluRXh0cmFMaXN0c1t0eXBlXXx8W10pLmZpbmQoeD0+eC5pZD09PWlkKTsKICBjb25zdCBvbGRRdHkgPSBpdGVtID8gKGl0ZW0uc3RvY2tfcXR5fHwwKSA6IDA7CiAgY29uc3Qge2Vycm9yfSA9IGF3YWl0IHNiLmZyb20oJ2lsbHVzdHJhdGlvbnMnKS51cGRhdGUoe3N0b2NrX3F0eX0pLmVxKCdpZCcsIGlkKTsKICBpZihlcnJvcil7IGFsZXJ0KCdFcnJvciBndWFyZGFuZG8gc3RvY2s6ICcrZXJyb3IubWVzc2FnZSk7IHJldHVybjsgfQogIGlmKGl0ZW0pIGl0ZW0uc3RvY2tfcXR5ID0gc3RvY2tfcXR5OwogIGNvbnN0IGFsc28gPSBhZG1pbklsbHVzdHJhdGlvbnNMaXN0LmZpbmQoeD0+eC5pZD09PWlkKTsKICBpZihhbHNvKSBhbHNvLnN0b2NrX3F0eSA9IHN0b2NrX3F0eTsKICBpZihzdG9ja19xdHkgIT09IG9sZFF0eSl7CiAgICBsb2dBY3Rpdml0eSgnc3RvY2snLCBgQ2FtYmnDsyBzdG9jayBkZSAke2l0ZW0\/aXRlbS5yZWY6Jz8nfTogJHtvbGRRdHl9IOKGkiAke3N0b2NrX3F0eX1gKTsKICB9Cn0KZnVuY3Rpb24gc3RhcnRFZGl0RXh0cmEodHlwZSwgaWQpewogIGNvbnN0IGkgPSAoYWRtaW5FeHRyYUxpc3RzW3R5cGVdfHxbXSkuZmluZCh4PT54LmlkPT09aWQpOwogIGlmKCFpKSByZXR1cm47CiAgY29uc3Qgcm93ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbWluLWV4LScrdHlwZSsnLScraWQpOwogIGlmKCFyb3cpIHJldHVybjsKICByb3cuaW5uZXJIVE1MID0gYAogICAgPGRpdiBzdHlsZT0id2lkdGg6MTA4cHg7ZmxleDowIDAgMTA4cHg7Ij4ke2FkbWluVGh1bWJIdG1sKGkpfTwvZGl2PgogICAgJHthZG1pblRodW1iVXBsb2FkSHRtbChpKX0KICAgIDxkaXYgc3R5bGU9ImZsZXg6MTttaW4td2lkdGg6MjIwcHg7Ij4KICAgICAgPGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij5SZWZlcmVuY2lhPC9sYWJlbD4KICAgICAgPGlucHV0IGlkPSJlZGl0LWV4LXJlZi0ke2lkfSIgdmFsdWU9IiR7aS5yZWZ9IiBzdHlsZT0id2lkdGg6MTAwJTtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6NnB4OyI+CiAgICAgIDxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tc3VhdmUpO21hcmdpbi10b3A6NnB4O2Rpc3BsYXk6YmxvY2s7Ij5Ob21icmU8L2xhYmVsPgogICAgICA8aW5wdXQgaWQ9ImVkaXQtZXgtbmFtZS0ke2lkfSIgdmFsdWU9IiR7aS5uYW1lfSIgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzo2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjZweDsiPgogICAgPC9kaXY+CiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjZweDsiPgogICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBzbWFsbCIgb25jbGljaz0ic2F2ZUV4dHJhRWRpdCgnJHt0eXBlfScsJyR7aWR9JykiPkd1YXJkYXI8L2J1dHRvbj4KICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gc2Vjb25kYXJ5IHNtYWxsIiBvbmNsaWNrPSJyZW5kZXJBZG1pbkV4dHJhKCcke3R5cGV9JywgYWRtaW5FeHRyYUxpc3RzWycke3R5cGV9J118fFtdKSI+Q2FuY2VsYXI8L2J1dHRvbj4KICAgIDwvZGl2PmA7Cn0KYXN5bmMgZnVuY3Rpb24gc2F2ZUV4dHJhRWRpdCh0eXBlLCBpZCl7CiAgY29uc3QgcmVmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXQtZXgtcmVmLScraWQpLnZhbHVlLnRyaW0oKTsKICBjb25zdCBuYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXQtZXgtbmFtZS0nK2lkKS52YWx1ZS50cmltKCk7CiAgaWYoIXJlZiB8fCAhbmFtZSl7IGFsZXJ0KCdSZWZlcmVuY2lhIHkgbm9tYnJlIHNvbiBvYmxpZ2F0b3Jpb3MuJyk7IHJldHVybjsgfQogIGNvbnN0IHtlcnJvcn0gPSBhd2FpdCBzYi5mcm9tKCdpbGx1c3RyYXRpb25zJykudXBkYXRlKHtyZWYsIG5hbWV9KS5lcSgnaWQnLCBpZCk7CiAgaWYoZXJyb3IpeyBhbGVydCgnRXJyb3IgZ3VhcmRhbmRvOiAnK2ZyaWVuZGx5RGJFcnJvcihlcnJvcikpOyByZXR1cm47IH0KICBsb2dBY3Rpdml0eSgnY2F0YWxvZ28nLCBgRWRpdMOzICR7cmVmfSDigJQgJHtuYW1lfWApOwogIGxvYWRBZG1pbkRhdGEoKTsKICBsb2FkSWxsdXN0cmF0aW9ucygpLnRoZW4ocmVuZGVyQ2F0YWxvZyk7Cn0KZnVuY3Rpb24gYnVpbGRBZG1pblN0b2NrRXh0cmFCbG9ja3MoKXsKICBjb25zdCBidG5XcmFwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0b2NrLXR5cGUtZXh0cmEnKTsKICBpZihidG5XcmFwKSBidG5XcmFwLmlubmVySFRNTCA9IGV4dHJhVHlwZXNTaG93bigpLm1hcCh0PT5gPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJzdG9jay10eXBlLSR7dC5rZXl9IiBvbmNsaWNrPSJzZXRTdG9ja1ZpZXdUeXBlKCcke3Qua2V5fScpIj4ke3QubGFiZWx9PC9idXR0b24+YCkuam9pbignJyk7CiAgY29uc3QgYmxvY2tXcmFwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0b2NrLWV4dHJhLWJsb2NrcycpOwogIGlmKGJsb2NrV3JhcCkgYmxvY2tXcmFwLmlubmVySFRNTCA9IGV4dHJhVHlwZXNTaG93bigpLm1hcCh0PT5gCiAgICA8ZGl2IGlkPSJzdG9jay1leHRyYS0ke3Qua2V5fS1ibG9jayIgY2xhc3M9InBlZGNhcmQgaGlkZGVuIiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxNHB4OyI+CiAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icGVkY2FyZC1oZWFkZXIiIG9uY2xpY2s9InRvZ2dsZVBlZGNhcmQoJ3N0b2NrLWV4dHJhLSR7dC5rZXl9JykiPgogICAgICAgIDxzcGFuIGNsYXNzPSJwZWRjYXJkLXRpdGxlIj5TdG9jayBkZSAke3QubGFiZWwudG9Mb3dlckNhc2UoKX08L3NwYW4+CiAgICAgICAgPHNwYW4gaWQ9InBlZGNhcmQtY2FyZXQtc3RvY2stZXh0cmEtJHt0LmtleX0iIGNsYXNzPSJwZWRjYXJkLWNhcmV0Ij7ilr4gb2N1bHRhcjwvc3Bhbj4KICAgICAgPC9idXR0b24+CiAgICAgIDxkaXYgaWQ9InBlZGNhcmQtYm9keS1zdG9jay1leHRyYS0ke3Qua2V5fSIgY2xhc3M9InBlZGNhcmQtYm9keSI+CiAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZzoxMHB4O2JhY2tncm91bmQ6dmFyKC0tY3JlbWEtMik7Ym9yZGVyLXJhZGl1czo4cHg7bWFyZ2luLWJvdHRvbToxNHB4OyI+CiAgICAgICAgICA8bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTtkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206NHB4OyI+RWxpZ2UgcG9yIHN1IGZvdG88L2xhYmVsPgogICAgICAgICAgPGlucHV0IGlkPSJhZGRzdG9jay1leC0ke3Qua2V5fS1zZWFyY2giIHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSJCdXNjYXIgcG9yIHJlZmVyZW5jaWEgbyBub21icmUgKG9wY2lvbmFsKeKApiIgb25pbnB1dD0icmVuZGVyU3RvY2tBZGRQaWNrZXJHZW5lcmljKCdleHRyYScsJyR7dC5rZXl9JykiIHN0eWxlPSJ3aWR0aDoxMDAlO21heC13aWR0aDozMjBweDtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6NnB4O21hcmdpbi1ib3R0b206OHB4OyI+CiAgICAgICAgICA8aW5wdXQgaWQ9ImFkZHN0b2NrLWV4LSR7dC5rZXl9LWlkIiB0eXBlPSJoaWRkZW4iPgogICAgICAgICAgPGRpdiBpZD0iYWRkc3RvY2stZXgtJHt0LmtleX0tcGlja2VyIiBzdHlsZT0iZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo2cHg7bWF4LWhlaWdodDoyMDBweDtvdmVyZmxvdy15OmF1dG87cGFkZGluZzoycHg7Ij48L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6OHB4O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWl0ZW1zOmZsZXgtZW5kO21hcmdpbi10b3A6MTBweDsiPgogICAgICAgICAgICA8ZGl2IHN0eWxlPSJmbGV4OjI7bWluLXdpZHRoOjE2MHB4OyI+PGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjJweDsiPkVsZWdpZGE8L2xhYmVsPjxkaXYgaWQ9ImFkZHN0b2NrLWV4LSR7dC5rZXl9LXNlbGVjdGVkIiBzdHlsZT0icGFkZGluZzo2cHg7Zm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tYXZpc28pOyI+TmluZ3VuYSDigJQgdG9jYSB1bmEgZm90byBkZSBhcnJpYmE8L2Rpdj48L2Rpdj4KICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWF4LXdpZHRoOjgwcHg7Ij48bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTtkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206MnB4OyI+Q2FudGlkYWQ8L2xhYmVsPjxpbnB1dCBpZD0iYWRkc3RvY2stZXgtJHt0LmtleX0tcXR5IiB0eXBlPSJudW1iZXIiIG1pbj0iMSIgdmFsdWU9IjEiIHN0eWxlPSJ3aWR0aDoxMDAlO3BhZGRpbmc6NnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo2cHg7Ij48L2Rpdj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gc21hbGwiIG9uY2xpY2s9ImFkZFN0b2NrRW50cnlHZW5lcmljKCdleHRyYScsJyR7dC5rZXl9JykiPisgQcOxYWRpciBzdG9jazwvYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW4tdG9wOjA7Ij5MYXMgcXVlIHRpZW5lbiBtZW5vcyBzdG9jayBzYWxlbiByZXNhbHRhZGFzIGFycmliYS48L3A+CiAgICAgICAgPGlucHV0IGlkPSJhZG1pbi1leHRyYS1zdG9jay0ke3Qua2V5fS1zZWFyY2giIHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSJCdXNjYXIgcG9yIHJlZmVyZW5jaWEgbyBub21icmUuLi4iIG9uaW5wdXQ9ImZpbHRlckV4dHJhU3RvY2soJyR7dC5rZXl9JykiIHN0eWxlPSJ3aWR0aDoxMDAlO21heC13aWR0aDozMjBweDtwYWRkaW5nOjhweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6NnB4O21hcmdpbi1ib3R0b206MTBweDsiPgogICAgICAgIDxkaXYgaWQ9ImFkbWluLWV4dHJhLXN0b2NrLSR7dC5rZXl9Ij48L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj5gKS5qb2luKCcnKTsKfQovLyAtLS0tLS0tLS0tIEF2aXNvIGZsb3RhbnRlICsgY29uZmlybWFjacOzbiBhbnRlcyBkZSBjYW1iaWFyIHVuIHN0b2NrIGEgbWFubyAtLS0tLS0tLS0tCi8vIE1pc21vIHBhdHLDs24gcmV1dGlsaXphZG8gZW4gbMOhbWluYXMsIGxpYnJldGFzIHkgdGlwb3MgZXh0cmE6IG51bmNhIHNlIHNvYnJlZXNjcmliZSB1bgovLyBuw7ptZXJvIHNpbGVuY2lvc2FtZW50ZSDigJQgc2UgcGlkZSBjb25maXJtYXIgZWwgY2FtYmlvIChhbnRlcyDihpIgZGVzcHXDqXMpIHkgc2UgYXZpc2EgYWwgdGVybWluYXIuCi8vIFRhbmRhIDIgKFAxNSwgMDYvMTAvMjAyNik6IGF2aXNvcyB5IHByZWd1bnRhcyBjb24gZWwgYXNwZWN0byBkZWwgY2F0w6Fsb2dvIGVuIHZleiBkZSBsYXMgdmVudGFuYXMgZ3Jpc2VzIGRlbCBuYXZlZ2Fkb3IKLy8gKHJvbXDDrWFuIGVsIGRpc2XDsW8geSBlbiBhbGd1bm9zIG5hdmVnYWRvcmVzIHNhbMOtYW4gZW4gaW5nbMOpcykuIGFsZXJ0KCkgcGFzYSBhIHNlciB1biBhdmlzbyBhYmFqbyBxdWUgc2UgdmEgc29sbyAobcOhcwovLyB0aWVtcG8gY3VhbnRvIG3DoXMgbGFyZ28pOyBjb25maXJtKCkgeSBwcm9tcHQoKSBzb24gdW5hIHZlbnRhbml0YSBwcm9waWE6IGNvbmZpcm1hKCkgeSBwcmVndW50YSgpIGRldnVlbHZlbiB1bmEgcHJvbWVzYS4Kd2luZG93LmFsZXJ0ID0gZnVuY3Rpb24obXNnKXsgbXNnID0gU3RyaW5nKG1zZyA\/PyAnJyk7IHN0b2NrVG9hc3QobXNnLCBNYXRoLm1pbig5MDAwLCAyNjAwICsgbXNnLmxlbmd0aCAqIDQ1KSk7IH07CmZ1bmN0aW9uIGRpYWxvZ28odGV4dG8sIG8pewogIG8gPSBvIHx8IHt9OwogIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlPT57CiAgICBjb25zdCBmb25kbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgZm9uZG8uY2xhc3NOYW1lID0gJ2RsZy1mb25kbyc7IGZvbmRvLnNldEF0dHJpYnV0ZSgnZGF0YS1uby1pMThuJywgJycpOwogICAgZm9uZG8uaW5uZXJIVE1MID0gYDxkaXYgY2xhc3M9ImRsZyIgcm9sZT0iZGlhbG9nIiBhcmlhLW1vZGFsPSJ0cnVlIj48cCBjbGFzcz0iZGxnLXRleHRvIj48L3A+JHtvLmNhbXBvID8gYDxpbnB1dCBjbGFzcz0iZGxnLWNhbXBvIiBpZD0iZGxnLWNhbXBvIiB0eXBlPSIke28uY2FtcG89PT0ncGFzc3dvcmQnPydwYXNzd29yZCc6J3RleHQnfSIgYXV0b2NvbXBsZXRlPSIke28uY2FtcG89PT0ncGFzc3dvcmQnPydjdXJyZW50LXBhc3N3b3JkJzonb2ZmJ30iPmAgOiAnJ308ZGl2IGNsYXNzPSJkbGctYm90b25lcyI+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gc2Vjb25kYXJ5IGRsZy1ubyI+PC9idXR0b24+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gZGxnLXNpIj48L2J1dHRvbj48L2Rpdj48L2Rpdj5gOwogICAgZm9uZG8ucXVlcnlTZWxlY3RvcignLmRsZy10ZXh0bycpLnRleHRDb250ZW50ID0gdGV4dG87CiAgICBjb25zdCBzaSA9IGZvbmRvLnF1ZXJ5U2VsZWN0b3IoJy5kbGctc2knKSwgbm8gPSBmb25kby5xdWVyeVNlbGVjdG9yKCcuZGxnLW5vJyksIGNhbXBvID0gZm9uZG8ucXVlcnlTZWxlY3RvcignLmRsZy1jYW1wbycpOwogICAgc2kudGV4dENvbnRlbnQgPSBvLnNpIHx8IHQoJ0FjZXB0YXInKTsgbm8udGV4dENvbnRlbnQgPSBvLm5vIHx8IHQoJ0NhbmNlbGFyJyk7CiAgICBjb25zdCBuYWRhID0gby5jYW1wbyA\/IG51bGwgOiBmYWxzZTsKICAgIGNvbnN0IHRlY2xhID0gZT0+eyBpZihlLmtleT09PSdFc2NhcGUnKXsgZS5wcmV2ZW50RGVmYXVsdCgpOyBjaWVycmEobmFkYSk7IH0gZWxzZSBpZihlLmtleT09PSdFbnRlcicgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PW5vKXsgZS5wcmV2ZW50RGVmYXVsdCgpOyBzaS5jbGljaygpOyB9IH07CiAgICBjb25zdCBjaWVycmEgPSB2PT57IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0ZWNsYSwgdHJ1ZSk7IGZvbmRvLnJlbW92ZSgpOyByZXNvbHZlKHYpOyB9OwogICAgc2kub25jbGljayA9ICgpPT4gY2llcnJhKG8uY2FtcG8gPyBjYW1wby52YWx1ZSA6IHRydWUpOwogICAgbm8ub25jbGljayA9ICgpPT4gY2llcnJhKG5hZGEpOwogICAgZm9uZG8uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlPT57IGlmKGUudGFyZ2V0PT09Zm9uZG8pIGNpZXJyYShuYWRhKTsgfSk7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGVjbGEsIHRydWUpOwogICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmb25kbyk7CiAgICBzZXRUaW1lb3V0KCgpPT4gKGNhbXBvIHx8IHNpKS5mb2N1cygpLCAwKTsKICB9KTsKfQpjb25zdCBjb25maXJtYSA9ICh0ZXh0bywgbykgPT4gZGlhbG9nbyh0ZXh0bywgbyk7CmNvbnN0IHByZWd1bnRhID0gKHRleHRvLCBjYW1wbykgPT4gZGlhbG9nbyh0ZXh0bywge2NhbXBvfSk7CmZ1bmN0aW9uIHN0b2NrVG9hc3QobXNnLCBtcyl7CiAgbGV0IGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdG9jay10b2FzdCcpOwogIGlmKCFib3gpewogICAgYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBib3guaWQgPSAnc3RvY2stdG9hc3QnOwogICAgYm94LnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246Zml4ZWQ7Ym90dG9tOjIwcHg7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7YmFja2dyb3VuZDp2YXIoLS1pbmspO2NvbG9yOiNmZmY7cGFkZGluZzoxMHB4IDE4cHg7Ym9yZGVyLXJhZGl1czo4cHg7Zm9udC1zaXplOjEzcHg7ei1pbmRleDo5OTk7Ym94LXNoYWRvdzowIDRweCAxMnB4IHJnYmEoMCwwLDAsLjIpO29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgLjJzO21heC13aWR0aDo5MCU7dGV4dC1hbGlnbjpjZW50ZXI7JzsKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYm94KTsKICB9CiAgYm94LnRleHRDb250ZW50ID0gbXNnOwogIGJveC5zdHlsZS5vcGFjaXR5ID0gJzEnOwogIGNsZWFyVGltZW91dChib3guX3QpOwogIGJveC5fdCA9IHNldFRpbWVvdXQoKCk9PnsgYm94LnN0eWxlLm9wYWNpdHkgPSAnMCc7IH0sIG1zIHx8IDI2MDApOwp9Ci8vIEN1YWRyw61jdWxhIGRlIGZpY2hhcyByZXV0aWxpemFkYSBlbiBsaWJyZXRhcyB5IGV4dHJhczogdW5hIGZpY2hhIGNvbXBhY3RhIHBvciBhcnTDrWN1bG8sIGNvbiBzdQovLyBmb3RvIGFycmliYSAocGFyYSBpZGVudGlmaWNhcmxvIGRlIHVuIHZpc3Rhem8pIHkgZGViYWpvIHVuIGNvbnRyb2wgKy8tIHBhcmEgc3ViaXIgbyBiYWphciBlbAovLyBzdG9jaywgbcOhcyB1biBib3TDs24gcGFyYSBib3JyYXJsbyAocG9uZXJsbyBhIDApIGRlIGdvbHBlIHNpbiB0ZW5lciBxdWUgZGFybGUgYWwgIi0iIG11Y2hhcyB2ZWNlcy4KLy8gU29sbyBzZSBsaXN0YW4gYXJ0w61jdWxvcyBjb24gc3RvY2sgPiAwIOKAlCBhIDAgbm8gaGFjZSBmYWx0YSB2ZXJsbywgeWEgbm8gZXMgImxvIHF1ZSB0ZSBxdWVkYSIuCmZ1bmN0aW9uIHN0b2NrQ2FyZExpc3RIdG1sKGxpc3QsIGFwcGx5Rm5CdWlsZGVyKXsKICBjb25zdCB3aXRoU3RvY2sgPSAobGlzdHx8W10pLmZpbHRlcihpID0+IChpLnN0b2NrX3F0eXx8MCkgPiAwKTsKICBpZighd2l0aFN0b2NrLmxlbmd0aCkgcmV0dXJuICc8cCBzdHlsZT0iZm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tc3VhdmUpOyI+Tm8gdGllbmVzIHN0b2NrIGd1YXJkYWRvIGFob3JhIG1pc21vIGVuIGVzdGEgY2F0ZWdvcsOtYS48L3A+JzsKICBjb25zdCBjYXJkcyA9IHdpdGhTdG9jay5tYXAoaT0+ewogICAgY29uc3QgcXR5ID0gaS5zdG9ja19xdHl8fDA7CiAgICBjb25zdCBsb3cgPSBxdHkgPD0gMTsKICAgIGNvbnN0IGxhYmVsID0gKGkucmVmKycg4oCUICcraS5uYW1lKS5yZXBsYWNlKC8nL2csIlxcJyIpOwogICAgY29uc3QgZm4gPSBhcHBseUZuQnVpbGRlcihpKTsKICAgIGNvbnN0IHRodW1iID0gaS5pbWFnZV91cmwKICAgICAgPyBgPGltYCtgZyBzcmM9IiR7dGh1bWJTcmMoaSl9IiBhbHQ9IiR7KGkubmFtZXx8aS5yZWZ8fCcnKS5yZXBsYWNlKC8iL2csJyZxdW90OycpfSIgbG9hZGluZz0ibGF6eSIgc3R5bGU9IndpZHRoOjEwMCU7YXNwZWN0LXJhdGlvOjMvNDtvYmplY3QtZml0OmNvdmVyO2Rpc3BsYXk6YmxvY2s7YmFja2dyb3VuZDp2YXIoLS1jcmVtYS0yKTsiPmAKICAgICAgOiBgPGRpdiBzdHlsZT0id2lkdGg6MTAwJTthc3BlY3QtcmF0aW86My80O2JhY2tncm91bmQ6dmFyKC0tY3JlbWEtMik7Ij48L2Rpdj5gOwogICAgcmV0dXJuIGA8ZGl2IHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6OHB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOiNmZmY7JHtsb3c\/J2JveC1zaGFkb3c6MCAwIDAgMnB4ICNmZGVjYzggaW5zZXQ7JzonJ30iPgogICAgICAke3RodW1ifQogICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOjZweCA3cHggOHB4OyI+CiAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NjAwO2xpbmUtaGVpZ2h0OjEuMjU7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwOyI+JHtpLnJlZn08L2Rpdj4KICAgICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS1zdWF2ZSk7bGluZS1oZWlnaHQ6MS4yNTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXA7bWFyZ2luLWJvdHRvbTo2cHg7Ij4ke2kubmFtZX0ke2xvdz8nIDxzcGFuIHN0eWxlPSJjb2xvcjp2YXIoLS1lcnJvcik7Ij7CtyBwb2NvPC9zcGFuPic6Jyd9PC9kaXY+CiAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6MTZweDtvdmVyZmxvdzpoaWRkZW47Ij4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBzdHlsZT0id2lkdGg6MjZweDtoZWlnaHQ6MjZweDtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kOnZhcigtLWNyZW1hLTIpO2ZvbnQtc2l6ZToxNXB4O2N1cnNvcjpwb2ludGVyO2ZsZXgtc2hyaW5rOjA7IiBvbmNsaWNrPSJzdGVwU3RvY2tDYXJkKCR7Zm59LCAke3F0eX0sIC0xKSI+4oiSPC9idXR0b24+CiAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwOyI+JHtxdHl9PC9zcGFuPgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIHN0eWxlPSJ3aWR0aDoyNnB4O2hlaWdodDoyNnB4O2JvcmRlcjpub25lO2JhY2tncm91bmQ6dmFyKC0tY3JlbWEtMik7Zm9udC1zaXplOjE1cHg7Y3Vyc29yOnBvaW50ZXI7ZmxleC1zaHJpbms6MDsiIG9uY2xpY2s9InN0ZXBTdG9ja0NhcmQoJHtmbn0sICR7cXR5fSwgMSkiPis8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBzZWNvbmRhcnkgc21hbGwiIHN0eWxlPSJ3aWR0aDoxMDAlO21hcmdpbi10b3A6NnB4O2NvbG9yOnZhcigtLWVycm9yKTtib3JkZXItY29sb3I6I2ExMjYyNjsiIG9uY2xpY2s9ImNvbmZpcm1TdG9ja0NoYW5nZSgke3F0eX0sIDAsICcke2xhYmVsfScsICR7Zm59KSI+Qm9ycmFyPC9idXR0b24+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+YDsKICB9KS5qb2luKCcnKTsKICByZXR1cm4gYDxkaXYgY2xhc3M9ImdyaWQgc21hbGwgc3RvY2stZ3JpZCIgc3R5bGU9ImdyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maWxsLG1pbm1heCgxMzBweCwxZnIpKTsiPiR7Y2FyZHN9PC9kaXY+YDsKfQovLyBTdWJpci9iYWphciAxIHVuaWRhZCBjb24gbG9zIGJvdG9uZXMgKy8tIGRlIHVuYSBmaWNoYTogc2UgYXBsaWNhIGFsIG1vbWVudG8sIHNpbiBjb25maXJtYXIgY2FkYQovLyBjbGljIChlbCBuw7ptZXJvIGVzdMOhIGEgbGEgdmlzdGEsIGVzIHVuIGFqdXN0ZSBwZXF1ZcOxbyB5IGRlbGliZXJhZG8pLiBQb25lciBhIDAgZGUgZ29scGUgKGJvdMOzbgovLyAiQm9ycmFyIikgc8OtIHBhc2EgcG9yIGNvbmZpcm1TdG9ja0NoYW5nZSwgcG9ycXVlIGFow60gc8OtIHNlIHB1ZWRlIHBlcmRlciBkZSB1biB0aXLDs24gdG9kbyBsbyBxdWUgaGFiw61hLgphc3luYyBmdW5jdGlvbiBzdGVwU3RvY2tDYXJkKGFwcGx5Rm4sIGN1cnJlbnRRdHksIGRlbHRhKXsKICBjb25zdCBxID0gTWF0aC5tYXgoMCwgKGN1cnJlbnRRdHl8fDApICsgZGVsdGEpOwogIGF3YWl0IGFwcGx5Rm4ocSk7Cn0KYXN5bmMgZnVuY3Rpb24gY29uZmlybVN0b2NrQ2hhbmdlKG9sZFZhbCwgbmV3VmFsLCBsYWJlbCwgYXBwbHlGbiwgaW5wdXRFbCl7CiAgY29uc3QgcXR5ID0gTWF0aC5tYXgoMCwgcGFyc2VJbnQobmV3VmFsfHwnMCcsMTApIHx8IDApOwogIGlmKHF0eSA9PT0gKG9sZFZhbHx8MCkpIHJldHVybjsKICBpZighKGF3YWl0IGNvbmZpcm1hKGBWYXMgYSBjYW1iaWFyIGVsIHN0b2NrIGRlICR7bGFiZWx9OiAke29sZFZhbHx8MH0g4oaSICR7cXR5fS4gwr9Db25maXJtYXM\/YCkpKXsKICAgIGlmKGlucHV0RWwpIGlucHV0RWwudmFsdWUgPSBvbGRWYWx8fDA7CiAgICByZXR1cm47CiAgfQogIGF3YWl0IGFwcGx5Rm4ocXR5KTsKICBzdG9ja1RvYXN0KGBTdG9jayBhY3R1YWxpemFkbyDigJQgJHtsYWJlbH06ICR7cXR5fS5gKTsKfQpmdW5jdGlvbiByZW5kZXJFeHRyYVN0b2NrVGFibGUodHlwZSwgbGlzdCl7CiAgZXh0cmFTdG9ja0NhY2hlW3R5cGVdID0gbGlzdCB8fCBbXTsKICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1pbi1leHRyYS1zdG9jay0nK3R5cGUpOwogIGlmKCFlbCkgcmV0dXJuOwogIGNvbnN0IGZpbHRlclRleHQgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbWluLWV4dHJhLXN0b2NrLScrdHlwZSsnLXNlYXJjaCcpPy52YWx1ZSB8fCAnJykudG9Mb3dlckNhc2UoKS50cmltKCk7CiAgY29uc3QgZmlsdGVyZWQgPSBmaWx0ZXJUZXh0ID8gZXh0cmFTdG9ja0NhY2hlW3R5cGVdLmZpbHRlcihpPT4oKGkucmVmfHwnJykrJyAnKyhpLm5hbWV8fCcnKSkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJUZXh0KSkgOiBleHRyYVN0b2NrQ2FjaGVbdHlwZV07CiAgaWYoIWZpbHRlcmVkLmxlbmd0aCl7IGVsLmlubmVySFRNTCA9ICc8cCBzdHlsZT0iZm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tc3VhdmUpOyI+Tm8gc2UgZW5jb250csOzIG5pbmfDum4gcmVzdWx0YWRvIGNvbiBlc2UgY3JpdGVyaW8uPC9wPic7IHJldHVybjsgfQogIGNvbnN0IHNvcnRlZCA9IHNvcnRCeU5hbWVFcyhmaWx0ZXJlZCk7CiAgZWwuaW5uZXJIVE1MID0gc3RvY2tDYXJkTGlzdEh0bWwoc29ydGVkLCAoaSk9PmAocSk9PnNldEV4dHJhU3RvY2tGcm9tU3RvY2tUYWIoJyR7dHlwZX0nLCcke2kuaWR9JyxxKWApOwp9CmZ1bmN0aW9uIGZpbHRlckV4dHJhU3RvY2sodHlwZSl7IHJlbmRlckV4dHJhU3RvY2tUYWJsZSh0eXBlLCBleHRyYVN0b2NrQ2FjaGVbdHlwZV18fFtdKTsgfQphc3luYyBmdW5jdGlvbiBzZXRFeHRyYVN0b2NrRnJvbVN0b2NrVGFiKHR5cGUsIGlkLCB2YWx1ZSl7CiAgYXdhaXQgc2V0RXh0cmFTdG9jayh0eXBlLCBpZCwgdmFsdWUpOwogIGNvbnN0IGl0ZW0gPSAoZXh0cmFTdG9ja0NhY2hlW3R5cGVdfHxbXSkuZmluZCh4PT54LmlkPT09aWQpOwogIGlmKGl0ZW0pIGl0ZW0uc3RvY2tfcXR5ID0gTWF0aC5tYXgoMCwgcGFyc2VJbnQodmFsdWV8fCcwJywxMCl8fDApOwogIHJlbmRlckV4dHJhU3RvY2tUYWJsZSh0eXBlLCBleHRyYVN0b2NrQ2FjaGVbdHlwZV18fFtdKTsKfQovLyAtLS0tLS0tLS0tIEluc2VydGFyIHZlbnRhIGEgbm9tYnJlIGRlIHVuYSB0aWVuZGEgKEFkbWluIOKGkiBWZW50YXMgeSBlc3RhZMOtc3RpY2FzKSAtLS0tLS0tLS0tCmxldCBhZG1pblNhbGVUeXBlID0gJ2xhbWluYSc7CmZ1bmN0aW9uIHBvcHVsYXRlQWRtaW5TYWxlQ2hhbm5lbFNlbGVjdCgpewogIGNvbnN0IHNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1zYWxlLWNoYW5uZWwnKTsKICBpZighc2VsKSByZXR1cm47CiAgY29uc3QgY3VyID0gc2VsLnZhbHVlOwogIC8vIFNpbiB0aWVuZGEgcHJlc2VsZWNjaW9uYWRhIOKAlCBhbnRlcyBzZSBxdWVkYWJhIGxhIHByaW1lcmEgZGUgbGEgbGlzdGEgKGFsZmFiw6l0aWNhKSB5IHNhbMOtYQogIC8vIHN1IHN0b2NrIGFiaWVydG8gc2luIHF1ZSBuYWRpZSBsYSBodWJpZXJhIGVsZWdpZG8sIGRhbmRvIGxhIHNlbnNhY2nDs24gZGUgdW4gZGF0byBhbGVhdG9yaW8uCiAgc2VsLmlubmVySFRNTCA9ICc8b3B0aW9uIHZhbHVlPSIiPuKAlCBFbGlnZSB1bmEgdGllbmRhIOKAlDwvb3B0aW9uPicgKyBhZG1pbkNoYW5uZWxzTGlzdC5maWx0ZXIoYz0+IWMuaXNfZGVtbykubWFwKGM9PmA8b3B0aW9uIHZhbHVlPSIke2MuaWR9Ij4ke2VzY2FwZUF0dHIoYy5uYW1lKX08L29wdGlvbj5gKS5qb2luKCcnKTsKICBzZWwudmFsdWUgPSBjdXIgfHwgJyc7CiAgcmVmcmVzaEFkbWluU2FsZVN0b2NrUHJldmlldygpOwogIHJlZnJlc2hBZG1pblNhbGVJbGxPcHRpb25zKCk7Cn0KLy8gSWd1YWwgcXVlIGVsIHN0b2NrIHBvciB0aWVuZGEgZGUgQWRtaW4g4oaSIFRpZW5kYXMsIHBlcm8gYXF1w60ganVudG8gYWwgZm9ybXVsYXJpbyBkZSAiSW5zZXJ0YXIKLy8gdmVudGEgYSBub21icmUgZGUgdW5hIHRpZW5kYSIsIHBhcmEgdmVybG8gc2luIHRlbmVyIHF1ZSBpciBhIG1pcmFybG8gYSBvdHJhIHBlc3Rhw7FhLiBVc2EgbGFzCi8vIG1pc21hcyBjYWNow6lzIHlhIGNhcmdhZGFzIChhbGxTaGlwcGVkT3JkZXJzQ2FjaGUvYWxsU2FsZXNDYWNoZSksIHNpbiBuaW5ndW5hIGNvbnN1bHRhIGV4dHJhLgpmdW5jdGlvbiByZWZyZXNoQWRtaW5TYWxlU3RvY2tQcmV2aWV3KCl7CiAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtc2FsZS1zdG9jay1wcmV2aWV3Jyk7CiAgaWYoIWVsKSByZXR1cm47CiAgY29uc3QgY2hhbm5lbElkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbXNhbGUtY2hhbm5lbCcpPy52YWx1ZTsKICBpZighY2hhbm5lbElkKXsgZWwuaW5uZXJIVE1MID0gJzxwIHN0eWxlPSJmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij5FbGlnZSB1bmEgdGllbmRhIGFycmliYSBwYXJhIHZlciBzdSBzdG9jay48L3A+JzsgcmV0dXJuOyB9CiAgcmVuZGVyU3RvY2tXaXRoVHlwZUZpbHRlcignYWRtc2FsZS1zdG9jay1wcmV2aWV3JywgY29tcHV0ZUNoYW5uZWxTdG9ja1Jvd3MoY2hhbm5lbElkKSwgY2hhbm5lbFN0b2NrVGFibGVIdG1sKTsKfQovLyBBbnRlcyBlc3RhIGxpc3RhIHNhbMOtYSBmaWx0cmFkYSBwb3IgbG8gcXVlIGVsIHNpc3RlbWEgY3Jlw61hIHF1ZSBsZSBxdWVkYWJhIGEgbGEgdGllbmRhIGVsZWdpZGEKLy8g4oCUIHBlcm8gbWllbnRyYXMgc2UgZXN0w6EgY2FyZ2FuZG8gYSBtYW5vIGVsIGhpc3TDs3JpY28gZGUgdmVudGFzIGRlIGFudGVzIGRlIGVzdGEgd2ViLCBlc2UgY8OhbGN1bG8KLy8gbm8gZXMgZmlhYmxlIChwYXJhIGNhc2kgdG9kbyBzYWxlICIwIGRpc3BvbmlibGUiIGF1bnF1ZSBsYSB0aWVuZGEgc8OtIGxvIHZlbmRpZXJhIGRlIHZlcmRhZCksIGFzw60KLy8gcXVlIGxhIGxpc3RhIGRlIGZvdG9zIHNlIGRlasOzIGlndWFsIHF1ZSBlbiBBZG1pbiDihpIgSW52ZW50YXJpbzogdG9kYXMgbGFzIGzDoW1pbmFzL2xpYnJldGFzIGFjdGl2YXMKLy8gZGUgZXNlIHRpcG8sIHNpbiBkZXBlbmRlciBkZSBlbGVnaXIgdGllbmRhIG5pIGRlIG5pbmfDum4gY8OhbGN1bG8gZGUgc3RvY2sgKDE2LzA5LzIwMjYsIGEgcGV0aWNpw7NuCi8vIGRlIFJhw7psIOKAlCAicXVpZXJvIHF1ZSBtaSBwcmltYSB2ZWEgbGEgZm90byBzaW4gdGVuZXIgcXVlIGNhbWJpYXIgZGUgcGVzdGHDsWEiKS4KZnVuY3Rpb24gYWRtaW5TYWxlSWxsT3B0aW9ucyh0eXBlKXsKICAvLyAxNi8wOS8yMDI2OiBzZSBleGNsdXllbiBsYXMgZGVzYWN0aXZhZGFzIChpLmFjdGl2ZT09PWZhbHNlKSDigJQgUmHDumwgZGV0ZWN0w7MgcXVlIHNhbMOtYW4KICAvLyBpbHVzdHJhY2lvbmVzIGRlc2FjdGl2YWRhcyAocmVmIDE1IHkgMjkpIGNvbW8gZWxlZ2libGVzIGFsIGluc2VydGFyIHVuYSB2ZW50YSBtYW51YWwuCiAgY29uc3Qgc2NvcGUgPSBzb3J0QnlOYW1lRXMoYWRtaW5JbGx1c3RyYXRpb25zTGlzdC5maWx0ZXIoaT0+KGkucHJvZHVjdF90eXBlfHwnbGFtaW5hJyk9PT10eXBlICYmIGkuYWN0aXZlIT09ZmFsc2UpKTsKICByZXR1cm4gc2NvcGUubWFwKGk9PmA8b3B0aW9uIHZhbHVlPSIke2kuaWR9IiBkYXRhLWZvcm1hdHM9IiR7KGkuZm9ybWF0c19hdmFpbGFibGV8fFtdKS5qb2luKCcsJyl9Ij4ke2kucmVmfSDigJQgJHtpLm5hbWV9PC9vcHRpb24+YCkuam9pbignJyk7Cn0KZnVuY3Rpb24gcmVmcmVzaEFkbWluU2FsZUlsbE9wdGlvbnMoKXsKICBjb25zdCBzZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtc2FsZS1pbGwnKTsKICBpZighc2VsKSByZXR1cm47CiAgc2VsLmlubmVySFRNTCA9IGFkbWluU2FsZUlsbE9wdGlvbnMoYWRtaW5TYWxlVHlwZSk7CiAgcmVmcmVzaEZvcm1hdE9wdGlvbnMoc2VsLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtc2FsZS1mbXQnKSk7CiAgdXBkYXRlQWRtaW5TYWxlTWF4VUkoKTsKICByZW5kZXJBZG1pblNhbGVJbGxQaWNrZXIoKTsKfQovLyBTZWxlY3RvciB2aXN1YWwgKGNvbiBmb3RvKSBkZSBsYSBpbHVzdHJhY2nDs24gcGFyYSAiSW5zZXJ0YXIgdmVudGEgYSBub21icmUgZGUgdW5hIHRpZW5kYSIg4oCUCi8vIG1pc21vIHBhdHLDs24gcXVlIGVsIHBpY2tlciBkZSAiKyBBw7FhZGlyIHN0b2NrIi4gUGludGEgdW5hIGZvdG8gcG9yIGNhZGEgPG9wdGlvbj4gZGVsCi8vIDxzZWxlY3QgaWQ9ImFkbXNhbGUtaWxsIj4gKGFob3JhIHNpZW1wcmUgc29uIHRvZGFzIGxhcyBkZWwgdGlwbyBlbGVnaWRvLCB2ZXIgYXJyaWJhKS4KZnVuY3Rpb24gcmVuZGVyQWRtaW5TYWxlSWxsUGlja2VyKCl7CiAgY29uc3Qgc2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbXNhbGUtaWxsJyk7CiAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1zYWxlLWlsbC1waWNrZXInKTsKICBjb25zdCBzZWxlY3RlZEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbXNhbGUtaWxsLXNlbGVjdGVkJyk7CiAgaWYoIXNlbCB8fCAhd3JhcCkgcmV0dXJuOwogIGNvbnN0IGlkcyA9IFsuLi5zZWwub3B0aW9uc10ubWFwKG89Pm8udmFsdWUpLmZpbHRlcihCb29sZWFuKTsKICBjb25zdCBzZWxlY3RlZElkID0gc2VsLnZhbHVlOwogIGlmKCFpZHMubGVuZ3RoKXsKICAgIHdyYXAuaW5uZXJIVE1MID0gJyc7CiAgICBpZihzZWxlY3RlZEVsKSBzZWxlY3RlZEVsLnRleHRDb250ZW50ID0gJyc7CiAgICByZXR1cm47CiAgfQogIHdyYXAuaW5uZXJIVE1MID0gaWRzLm1hcChpZD0+ewogICAgY29uc3QgaSA9IGFkbWluSWxsdXN0cmF0aW9uc0xpc3QuZmluZCh4PT54LmlkPT09aWQpOwogICAgaWYoIWkpIHJldHVybiAnJzsKICAgIGNvbnN0IGlzU2VsID0gaWQgPT09IHNlbGVjdGVkSWQ7CiAgICAvLyAxNi8wOS8yMDI2OiBmb3RvcyBtw6FzIGdyYW5kZXMgcXVlIGVsIHBpY2tlciBnZW7DqXJpY28gZGUgIisgQcOxYWRpciBzdG9jayIg4oCUIGVzdGUgcGlja2VyCiAgICAvLyBhaG9yYSB2aXZlIGVuIHN1IHByb3BpYSBmaWxhIGEgdG9kbyBlbCBhbmNobywgYXPDrSBxdWUgc2UgYXByb3ZlY2hhIGVsIGVzcGFjaW8uCiAgICBjb25zdCB0aHVtYiA9IGkuaW1hZ2VfdXJsCiAgICAgID8gYDxpbWArYGcgc3JjPSIke3RodW1iU3JjKGkpfSIgYWx0PSIkeyhpLm5hbWV8fGkucmVmfHwnJykucmVwbGFjZSgvIi9nLCcmcXVvdDsnKX0iIGxvYWRpbmc9ImxhenkiIHN0eWxlPSJ3aWR0aDo2NHB4O2hlaWdodDo4NHB4O29iamVjdC1maXQ6Y292ZXI7Ym9yZGVyLXJhZGl1czo0cHg7ZGlzcGxheTpibG9jazsiPmAKICAgICAgOiBgPGRpdiBzdHlsZT0id2lkdGg6NjRweDtoZWlnaHQ6ODRweDtiYWNrZ3JvdW5kOnZhcigtLWNyZW1hLTIpO2JvcmRlci1yYWRpdXM6NHB4OyI+PC9kaXY+YDsKICAgIHJldHVybiBgPGJ1dHRvbiB0eXBlPSJidXR0b24iIHRpdGxlPSIkeyhpLnJlZisnIOKAlCAnK2kubmFtZSkucmVwbGFjZSgvIi9nLCcmcXVvdDsnKX0iIG9uY2xpY2s9InNlbGVjdEFkbWluU2FsZUlsbCgnJHtpZH0nKSIgc3R5bGU9ImJvcmRlcjoycHggc29saWQgJHtpc1NlbD8ndmFyKC0tYWNjZW50KSc6J3RyYW5zcGFyZW50J307Ym9yZGVyLXJhZGl1czo2cHg7cGFkZGluZzoycHg7YmFja2dyb3VuZDpub25lO2N1cnNvcjpwb2ludGVyO2xpbmUtaGVpZ2h0OjA7Ij4ke3RodW1ifTwvYnV0dG9uPmA7CiAgfSkuam9pbignJyk7CiAgY29uc3QgaXRlbSA9IGFkbWluSWxsdXN0cmF0aW9uc0xpc3QuZmluZCh4PT54LmlkPT09c2VsZWN0ZWRJZCk7CiAgaWYoc2VsZWN0ZWRFbCl7CiAgICBzZWxlY3RlZEVsLnRleHRDb250ZW50ID0gaXRlbSA\/IChpdGVtLnJlZisnIOKAlCAnK2l0ZW0ubmFtZSkgOiAoaWRzLmxlbmd0aCA\/ICdOaW5ndW5hIOKAlCB0b2NhIHVuYSBmb3RvIGRlIGFycmliYScgOiAnJyk7CiAgICBzZWxlY3RlZEVsLnN0eWxlLmNvbG9yID0gaXRlbSA\/ICd2YXIoLS1pbmspJyA6ICcjOGE1YTAwJzsKICB9Cn0KZnVuY3Rpb24gc2VsZWN0QWRtaW5TYWxlSWxsKGlkKXsKICBjb25zdCBzZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtc2FsZS1pbGwnKTsKICBpZighc2VsKSByZXR1cm47CiAgc2VsLnZhbHVlID0gaWQ7CiAgcmVmcmVzaEZvcm1hdE9wdGlvbnMoc2VsLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtc2FsZS1mbXQnKSk7CiAgdXBkYXRlQWRtaW5TYWxlTWF4VUkoKTsKICByZW5kZXJBZG1pblNhbGVJbGxQaWNrZXIoKTsKfQovLyBBbnRlcyBwb27DrWEgdW4gdG9wZSBkdXJvICh5IGJsb3F1ZWFiYSBlbCBlbnbDrW8pIGJhc2FkbyBlbiBsbyBxdWUgZWwgc2lzdGVtYSBjcmXDrWEgcXVlIGxlCi8vIHF1ZWRhYmEgYSBsYSB0aWVuZGEg4oCUIHF1aXRhZG8gZWwgMTYvMDkvMjAyNiBhIHBldGljacOzbiBkZSBSYcO6bDogbWllbnRyYXMgc2UgY2FyZ2EgYSBtYW5vIGVsCi8vIGhpc3TDs3JpY28gZGUgdmVudGFzIGRlIGFudGVzIGRlIGVzdGEgd2ViLCBlc2UgY8OhbGN1bG8gbm8gZXMgZmlhYmxlLCBhc8OtIHF1ZSBhcXXDrSBzb2xvIHNlIGRlamEKLy8gY29tbyByZWZlcmVuY2lhIGluZm9ybWF0aXZhIChubyBibG9xdWVhKSBjdWFuZG8gaGF5IGRhdG9zOyBzaSBubyBoYXkgZGF0byBmaWFibGUsIG5vIHNlIG11ZXN0cmEKLy8gbmFkYS4gRWwgw7puaWNvIGzDrW1pdGUgcmVhbCBxdWUgcXVlZGEgZXMgInVuaWRhZGVzID4gMCIsIGNvbXByb2JhZG8gZW4gc3VibWl0QWRtaW5TYWxlKCkuCmZ1bmN0aW9uIHVwZGF0ZUFkbWluU2FsZU1heFVJKCl7CiAgY29uc3QgY2hhbm5lbF9pZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1zYWxlLWNoYW5uZWwnKT8udmFsdWU7CiAgY29uc3QgaWxsdXN0cmF0aW9uX2lkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbXNhbGUtaWxsJyk\/LnZhbHVlOwogIGNvbnN0IGZvcm1hdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1zYWxlLWZtdCcpPy52YWx1ZTsKICBjb25zdCBxdHlJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1zYWxlLXF0eScpOwogIGlmKCFxdHlJbnB1dCkgcmV0dXJuOwogIHF0eUlucHV0LnJlbW92ZUF0dHJpYnV0ZSgnbWF4Jyk7CiAgaWYoIWNoYW5uZWxfaWQgfHwgIWlsbHVzdHJhdGlvbl9pZCB8fCAhZm9ybWF0KXsgcXR5SW5wdXQudGl0bGU9Jyc7IHJldHVybjsgfQogIGNvbnN0IHN0b2NrUm93ID0gY29tcHV0ZUNoYW5uZWxTdG9ja1Jvd3MoY2hhbm5lbF9pZCkuZmluZChyPT5yLmlsbHVzdHJhdGlvbl9pZD09PWlsbHVzdHJhdGlvbl9pZCAmJiByLmZvcm1hdD09PWZvcm1hdCk7CiAgY29uc3QgbWF4ID0gc3RvY2tSb3cgPyAoc3RvY2tSb3cuZW50cmVnYWRvIC0gc3RvY2tSb3cudmVuZGlkbykgOiAwOwogIHF0eUlucHV0LnRpdGxlID0gJ1NlZ8O6biBlbCBzaXN0ZW1hLCBhIGVzdGEgdGllbmRhIGxlIHF1ZWRhYmFuICcgKyBtYXggKyAnIHVuaWRhZGVzIChkYXRvIG9yaWVudGF0aXZvLCBubyBibG9xdWVhKS4nOwp9CmZ1bmN0aW9uIHNldEFkbWluU2FsZVR5cGUodCl7CiAgYWRtaW5TYWxlVHlwZSA9IHQ7CiAgYWxsVHlwZUtleXMoKS5mb3JFYWNoKGs9PnsgY29uc3QgYj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtc2FsZS10eXBlLScrayk7IGlmKGIpIGIuY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aXZlJywgdD09PWspOyB9KTsKICByZWZyZXNoQWRtaW5TYWxlSWxsT3B0aW9ucygpOwp9CmxldCBwZW5kaW5nQWRtaW5TYWxlUGF5bG9hZCA9IG51bGw7CmZ1bmN0aW9uIHN1Ym1pdEFkbWluU2FsZShlKXsKICBpZihlKSBlLnByZXZlbnREZWZhdWx0KCk7CiAgY29uc3QgY2hhbm5lbFNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1zYWxlLWNoYW5uZWwnKTsKICBjb25zdCBjaGFubmVsX2lkID0gY2hhbm5lbFNlbC52YWx1ZTsKICBjb25zdCBtb250aFZhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1zYWxlLW1vbnRoJykudmFsdWU7CiAgY29uc3QgaWxsU2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbXNhbGUtaWxsJyk7CiAgY29uc3QgaWxsdXN0cmF0aW9uX2lkID0gaWxsU2VsLnZhbHVlOwogIGNvbnN0IGZvcm1hdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1zYWxlLWZtdCcpLnZhbHVlOwogIGNvbnN0IHVuaXRzX3NvbGQgPSBwYXJzZUludChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtc2FsZS1xdHknKS52YWx1ZXx8JzAnLDEwKTsKICBjb25zdCBtc2dFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1zYWxlLW1zZycpOwogIGlmKCFjaGFubmVsX2lkIHx8ICFtb250aFZhbCB8fCAhaWxsdXN0cmF0aW9uX2lkIHx8ICFmb3JtYXQgfHwgISh1bml0c19zb2xkPjApKXsKICAgIG1zZ0VsLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPSJtc2cgZXJyIj5SZWxsZW5hIHRpZW5kYSwgbWVzLCBpbHVzdHJhY2nDs24sIGZvcm1hdG8geSB1bmlkYWRlcyAobWF5b3IgcXVlIDApLjwvZGl2Pic7CiAgICByZXR1cm4gZmFsc2U7CiAgfQogIC8vIEFudGVzIGJsb3F1ZWFiYSBhcXXDrSBzaSBzdXBlcmFiYSBsbyBxdWUgZWwgc2lzdGVtYSBjcmXDrWEgcXVlIGxlIHF1ZWRhYmEgYSBsYSB0aWVuZGEg4oCUIHF1aXRhZG8KICAvLyBlbCAxNi8wOS8yMDI2IGEgcGV0aWNpw7NuIGRlIFJhw7psIChlc2UgY8OhbGN1bG8gbm8gZXMgZmlhYmxlIG1pZW50cmFzIHNlIGNhcmdhIGEgbWFubyBlbAogIC8vIGhpc3TDs3JpY28gZGUgdmVudGFzIGRlIGFudGVzIGRlIGVzdGEgd2ViKS4gRWwgZGF0byBzaWd1ZSBkaXNwb25pYmxlIGNvbW8gcmVmZXJlbmNpYSAodG9vbHRpcAogIC8vIGRlbCBjYW1wbyBVbmlkYWRlcywgdmVyIHVwZGF0ZUFkbWluU2FsZU1heFVJKSwgcGVybyB5YSBubyBpbXBpZGUgZ3VhcmRhci4KICBtc2dFbC5pbm5lckhUTUwgPSAnJzsKICBjb25zdCBjaGFubmVsTmFtZSA9IGNoYW5uZWxTZWwub3B0aW9uc1tjaGFubmVsU2VsLnNlbGVjdGVkSW5kZXhdPy50ZXh0Q29udGVudCB8fCAnJzsKICBjb25zdCBpbGxMYWJlbCA9IGlsbFNlbC5vcHRpb25zW2lsbFNlbC5zZWxlY3RlZEluZGV4XT8udGV4dENvbnRlbnQgfHwgJyc7CiAgY29uc3QgbW9udGhMYWJlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1zYWxlLW1vbnRoJykub3B0aW9uc1tkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtc2FsZS1tb250aCcpLnNlbGVjdGVkSW5kZXhdPy50ZXh0Q29udGVudCB8fCBtb250aFZhbDsKICBwZW5kaW5nQWRtaW5TYWxlUGF5bG9hZCA9IHtjaGFubmVsX2lkLCBtb250aDogbW9udGhWYWwrJy0wMScsIGlsbHVzdHJhdGlvbl9pZCwgZm9ybWF0LCB1bml0c19zb2xkLCBjaGFubmVsTmFtZSwgaWxsTGFiZWwsIG1vbnRoTGFiZWx9OwogIGNvbnN0IHN1bW1hcnlFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1zYWxlLWNvbmZpcm0tc3VtbWFyeScpOwogIGlmKHN1bW1hcnlFbCkgc3VtbWFyeUVsLmlubmVySFRNTCA9IGAKICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW4tYm90dG9tOjhweDsiPjxzdHJvbmc+VGllbmRhOjwvc3Ryb25nPiAke2NoYW5uZWxOYW1lfSAmbmJzcDvCtyZuYnNwOyA8c3Ryb25nPk1lczo8L3N0cm9uZz4gJHttb250aExhYmVsfTwvZGl2PgogICAgPGRpdj4ke2lsbExhYmVsfSAoJHtmb3JtYXR9KSA8c3Ryb25nIHN0eWxlPSJmbG9hdDpyaWdodDsiPsOXICR7dW5pdHNfc29sZH08L3N0cm9uZz48L2Rpdj4KICAgIDxwIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7bWFyZ2luLXRvcDoxMHB4OyI+U2Ugc3VtYSBhIGxvIHF1ZSB5YSBodWJpZXJhIHJlZ2lzdHJhZG8gcGFyYSBlc2EgdGllbmRhL2lsdXN0cmFjacOzbi9mb3JtYXRvL21lcy48L3A+CiAgYDsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtc2FsZS1jb25maXJtLW1zZycpLmlubmVySFRNTCA9ICcnOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1zYWxlLWNvbmZpcm0tbW9kYWwnKS5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTsKICByZXR1cm4gZmFsc2U7Cn0KZnVuY3Rpb24gY2xvc2VBZG1pblNhbGVDb25maXJtKCl7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbXNhbGUtY29uZmlybS1tb2RhbCcpLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpOwogIHBlbmRpbmdBZG1pblNhbGVQYXlsb2FkID0gbnVsbDsKfQphc3luYyBmdW5jdGlvbiBjb25maXJtU3VibWl0QWRtaW5TYWxlKCl7CiAgaWYoIXBlbmRpbmdBZG1pblNhbGVQYXlsb2FkKSByZXR1cm47CiAgY29uc3Qge2NoYW5uZWxfaWQsIG1vbnRoLCBpbGx1c3RyYXRpb25faWQsIGZvcm1hdCwgdW5pdHNfc29sZCwgY2hhbm5lbE5hbWUsIGlsbExhYmVsLCBtb250aExhYmVsfSA9IHBlbmRpbmdBZG1pblNhbGVQYXlsb2FkOwogIGNvbnN0IGJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1zYWxlLWNvbmZpcm0tYnRuJyk7CiAgY29uc3QgbW9kYWxNc2dFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1zYWxlLWNvbmZpcm0tbXNnJyk7CiAgaWYoYnRuKSBidG4uZGlzYWJsZWQgPSB0cnVlOwogIGNvbnN0IHtkYXRhOiBleGlzdGluZ30gPSBhd2FpdCBzYi5mcm9tKCdtb250aGx5X3NhbGVzJykuc2VsZWN0KCdpZCwgdW5pdHNfc29sZCcpLmVxKCdjaGFubmVsX2lkJywgY2hhbm5lbF9pZCkuZXEoJ2lsbHVzdHJhdGlvbl9pZCcsIGlsbHVzdHJhdGlvbl9pZCkuZXEoJ2Zvcm1hdCcsIGZvcm1hdCkuZXEoJ21vbnRoJywgbW9udGgpLm1heWJlU2luZ2xlKCk7CiAgbGV0IGVycm9yOwogIGlmKGV4aXN0aW5nKXsKICAgICh7ZXJyb3J9ID0gYXdhaXQgc2IuZnJvbSgnbW9udGhseV9zYWxlcycpLnVwZGF0ZSh7dW5pdHNfc29sZDogKGV4aXN0aW5nLnVuaXRzX3NvbGR8fDApICsgdW5pdHNfc29sZH0pLmVxKCdpZCcsIGV4aXN0aW5nLmlkKSk7CiAgfSBlbHNlIHsKICAgICh7ZXJyb3J9ID0gYXdhaXQgc2IuZnJvbSgnbW9udGhseV9zYWxlcycpLmluc2VydCh7Y2hhbm5lbF9pZCwgaWxsdXN0cmF0aW9uX2lkLCBmb3JtYXQsIG1vbnRoLCB1bml0c19zb2xkfSkpOwogIH0KICBpZihidG4pIGJ0bi5kaXNhYmxlZCA9IGZhbHNlOwogIGlmKGVycm9yKXsgaWYobW9kYWxNc2dFbCkgbW9kYWxNc2dFbC5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0ibXNnIGVyciI+RXJyb3I6ICcrZXJyb3IubWVzc2FnZSsnPC9kaXY+JzsgcmV0dXJuOyB9CiAgbG9nQWN0aXZpdHkoJ3ZlbnRhJywgYEluc2VydMOzIHZlbnRhIGEgbm9tYnJlIGRlICIke2NoYW5uZWxOYW1lfSI6ICR7aWxsTGFiZWx9ICgke2Zvcm1hdH0pIMOXICR7dW5pdHNfc29sZH0g4oCUICR7bW9udGhMYWJlbH1gKTsKICBjbG9zZUFkbWluU2FsZUNvbmZpcm0oKTsKICBjb25zdCBtc2dFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1zYWxlLW1zZycpOwogIGlmKG1zZ0VsKSBtc2dFbC5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0ibXNnIG9rIj5WZW50YSByZWdpc3RyYWRhLjwvZGl2Pic7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbXNhbGUtcXR5JykudmFsdWUgPSAxOwogIGxvYWRBZG1pbkRhdGEoKTsKfQpmdW5jdGlvbiByZW5kZXJDYXRhbG9nVmlzaWJpbGl0eVRvZ2dsZXMoKXsKICBjb25zdCB3cmFwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdGFsb2ctdmlzaWJpbGl0eS10b2dnbGVzJyk7CiAgaWYoIXdyYXApIHJldHVybjsKICB3cmFwLmlubmVySFRNTCA9IGV4dHJhVHlwZXNTaG93bigpLm1hcCh0PT57CiAgICBjb25zdCBjaGVja2VkID0gc2l0ZVNldHRpbmdzQ2FjaGVbdC5zZXR0aW5nS2V5XSA9PT0gJ3RydWUnOwogICAgcmV0dXJuIGA8bGFiZWwgc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDtmb250LXNpemU6MTRweDtjdXJzb3I6cG9pbnRlcjsiPgogICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giICR7Y2hlY2tlZD8nY2hlY2tlZCc6Jyd9IG9uY2hhbmdlPSJ0b2dnbGVDYXRhbG9nVmlzaWJpbGl0eSgnJHt0LmtleX0nLCB0aGlzLmNoZWNrZWQpIj4gJHt0LmxhYmVsfQogICAgPC9sYWJlbD5gOwogIH0pLmpvaW4oJycpOwp9CmFzeW5jIGZ1bmN0aW9uIHRvZ2dsZUNhdGFsb2dWaXNpYmlsaXR5KHR5cGUsIHZpc2libGUpewogIGNvbnN0IHQgPSBFWFRSQV9TVE9DS19UWVBFUy5maW5kKHg9Pngua2V5PT09dHlwZSk7CiAgaWYoIXQpIHJldHVybjsKICBjb25zdCB7ZXJyb3J9ID0gYXdhaXQgc2IuZnJvbSgnc2l0ZV9zZXR0aW5ncycpLnVwc2VydCh7a2V5OnQuc2V0dGluZ0tleSwgdmFsdWU6IHZpc2libGU\/J3RydWUnOidmYWxzZSd9LCB7b25Db25mbGljdDona2V5J30pOwogIGlmKGVycm9yKXsgYWxlcnQoJ0Vycm9yIGd1YXJkYW5kbzogJytlcnJvci5tZXNzYWdlKTsgcmV0dXJuOyB9CiAgc2l0ZVNldHRpbmdzQ2FjaGVbdC5zZXR0aW5nS2V5XSA9IHZpc2libGU\/J3RydWUnOidmYWxzZSc7CiAgYnVpbGRFeHRyYVR5cGVCdXR0b25zKCk7CiAgLy8gU2kgaGF5IHRhcmpldGFzIGRlIHRpZW5kYSBhYmllcnRhcyBjb24gIkHDsWFkaXIgc3RvY2sgYSBtYW5vIiB2aXNpYmxlLCBzdXMgcGVzdGHDsWFzIGRlIHRpcG8KICAvLyB0YW1iacOpbiBkZXBlbmRlbiBkZSBlc3RhIHZpc2liaWxpZGFkIOKAlCBzZSBhY3R1YWxpemFuIGFsIG1vbWVudG8sIHNpbiBlc3BlcmFyIGEgcmVjYXJnYXIuCiAgZXhwYW5kZWRDaGFubmVsSWRzLmZvckVhY2goaWQ9PmJ1aWxkU3RvY2tBZGp1c3RUeXBlQnV0dG9ucyhpZCkpOwp9CmFzeW5jIGZ1bmN0aW9uIGFkZElsbHVzdHJhdGlvbihlKXsKICBlLnByZXZlbnREZWZhdWx0KCk7CiAgY29uc3QgdHlwZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduZXctcHJvZHVjdC10eXBlJykudmFsdWU7CiAgY29uc3QgcmVmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25ldy1yZWYnKS52YWx1ZTsKICBjb25zdCBuYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25ldy1uYW1lJykudmFsdWU7CiAgY29uc3QgZmlsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduZXctaW1hZ2UnKS5maWxlc1swXTsKICBjb25zdCBwYXlsb2FkID0ge3JlZiwgbmFtZSwgcHJvZHVjdF90eXBlOiB0eXBlfTsKICBjb25zdCBtc2dFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduZXctaWxsLW1zZycpOwogIGlmKHR5cGUhPT0nbGFtaW5hJyl7CiAgICBwYXlsb2FkLmZvcm1hdHNfYXZhaWxhYmxlID0gWydVbmlkYWQnXTsKICAgIHBheWxvYWQuc3RvY2tfcXR5ID0gcGFyc2VJbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25ldy1zdG9jaycpLnZhbHVlfHwnMCcsMTApIHx8IDA7CiAgfSBlbHNlIHsKICAgIHBheWxvYWQuZm9ybWF0c19hdmFpbGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV3LWZvcm1hdHMnKS52YWx1ZS5zcGxpdCgnLCcpLm1hcChzPT5zLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pOwogIH0KICBpZighcGF5bG9hZC5mb3JtYXRzX2F2YWlsYWJsZS5sZW5ndGgpewogICAgbXNnRWwuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9Im1zZyBlcnIiPkHDsWFkZSBhbCBtZW5vcyB1biBmb3JtYXRvIGRpc3BvbmlibGUgKGVqLiBBMywgQTQpIOKAlCBzaSBzZSBkZWphIHZhY8OtbywgZWwgcHJvZHVjdG8gYXBhcmVjZXLDrWEgZW4gZWwgY2F0w6Fsb2dvIHBlcm8gbm8gc2UgcG9kcsOtYSBwZWRpci48L2Rpdj4nOwogICAgcmV0dXJuIGZhbHNlOwogIH0KICBjb25zdCB7ZGF0YSwgZXJyb3J9ID0gYXdhaXQgc2IuZnJvbSgnaWxsdXN0cmF0aW9ucycpLmluc2VydChwYXlsb2FkKS5zZWxlY3QoKS5zaW5nbGUoKTsKICBpZihlcnJvcil7IG1zZ0VsLmlubmVySFRNTD0nPGRpdiBjbGFzcz0ibXNnIGVyciI+JytmcmllbmRseURiRXJyb3IoZXJyb3IpKyc8L2Rpdj4nOyByZXR1cm4gZmFsc2U7IH0KICBpZihmaWxlKXsgYXdhaXQgdXBsb2FkSW1hZ2UoZGF0YS5pZCwgcmVmLCBmaWxlKTsgfQogIG1zZ0VsLmlubmVySFRNTD0nPGRpdiBjbGFzcz0ibXNnIG9rIj5Qcm9kdWN0byBhw7FhZGlkby48L2Rpdj4nOwogIGxvZ0FjdGl2aXR5KCdjYXRhbG9nbycsIGBBw7FhZGnDsyBlbCBwcm9kdWN0byAke3JlZn0g4oCUICR7bmFtZX1gKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV3LXJlZicpLnZhbHVlPScnOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV3LW5hbWUnKS52YWx1ZT0nJzsKICBjb25zdCBzdG9ja0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25ldy1zdG9jaycpOyBpZihzdG9ja0VsKSBzdG9ja0VsLnZhbHVlID0gJzAnOwogIGxvYWRBZG1pbkRhdGEoKTsgbG9hZElsbHVzdHJhdGlvbnMoKS50aGVuKHJlbmRlckNhdGFsb2cpOwogIHJldHVybiBmYWxzZTsKfQovLyBVbiBwZWRpZG8gZXN0w6EgImxpc3RvIiBjdWFuZG8gY2FkYSB1bm8gZGUgc3VzIMOtdGVtcyB5YSBlc3TDoSBtYXJjYWRvIGNvbW8gaW1wcmVzby9wcmVwYXJhZG8KLy8gZW4gbG9zIHJlc8O6bWVuZXMgZGUgYXJyaWJhLiBTaXJ2ZSBwYXJhIHBvZGVyIGRlc3BhY2hhciBkZSBnb2xwZSB0b2RvIGxvIGRlIHVuYSB0aWVuZGEgc2luCi8vIHRlbmVyIHF1ZSBpciBwZWRpZG8gYSBwZWRpZG8uCmZ1bmN0aW9uIGlzT3JkZXJSZWFkeShvKXsKICBjb25zdCBpdGVtcyA9IG8ub3JkZXJfaXRlbXN8fFtdOwogIGlmKCFpdGVtcy5sZW5ndGgpIHJldHVybiBmYWxzZTsKICByZXR1cm4gaXRlbXMuZXZlcnkoaXQ9PnsKICAgIGNvbnN0IHB0eXBlID0gaXQuaWxsdXN0cmF0aW9ucz8ucHJvZHVjdF90eXBlOwogICAgaWYocHR5cGU9PT0nbGlicmV0YScpIHJldHVybiBsaWJyZXRhc1BlbmRpbmdDaGVja2VkLmhhcyhvLmlkKyd8JytpdC5pbGx1c3RyYXRpb25faWQpOwogICAgaWYocHR5cGUgJiYgcHR5cGUhPT0nbGFtaW5hJyl7CiAgICAgIC8vIFRpcG9zIGV4dHJhIChwZWdhdGluYXMsIGVqZW1wbG8uLi4pOiBhaG9yYSB0aWVuZW4gc3UgcHJvcGlhIHRhcmpldGEgZGUgInBlbmRpZW50ZXMiLAogICAgICAvLyBhc8OtIHF1ZSBibG9xdWVhbiBlbCDinIUgaWd1YWwgcXVlIGxpYnJldGFzIGhhc3RhIHF1ZSBzZSBtYXJxdWVuIGNvbW8gcHJlcGFyYWRvcy4KICAgICAgY29uc3QgY2hlY2tlZFNldCA9IGV4dHJhUGVuZGluZ0NoZWNrZWRbcHR5cGVdOwogICAgICByZXR1cm4gY2hlY2tlZFNldCA\/IGNoZWNrZWRTZXQuaGFzKG8uaWQrJ3wnK2l0LmlsbHVzdHJhdGlvbl9pZCkgOiB0cnVlOwogICAgfQogICAgcmV0dXJuIHByaW50U3VtbWFyeUNoZWNrZWQuaGFzKG8uaWQrJ3wnK2l0LmlsbHVzdHJhdGlvbl9pZCsnfCcraXQuZm9ybWF0KTsKICB9KTsKfQpsZXQgbGFzdE9yZGVyR3JvdXBzID0gW107IC8vIFt7bmFtZSwgb3JkZXJzfV0sIGVuIGVsIG1pc21vIG9yZGVuIHF1ZSBzZSBwaW50w7MKLy8gTGFzIDMgdGFyamV0YXMgKFBlZGlkb3MgcGVuZGllbnRlcyAvIEzDoW1pbmFzIC8gTGlicmV0YXMpIHNvbiBpbmRlcGVuZGllbnRlczogY2FkYSB1bmEgc2UKLy8gYWJyZSB5IGNpZXJyYSBwb3Igc3UgY3VlbnRhIHkgc2llbXByZSBxdWVkYSB2aXNpYmxlIGNvbiBzdSByZXN1bWVuLCBhdW5xdWUgZXN0w6kgY2VycmFkYS4KZnVuY3Rpb24gdG9nZ2xlUGVkY2FyZChuYW1lKXsKICBjb25zdCBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BlZGNhcmQtYm9keS0nK25hbWUpOwogIGNvbnN0IGNhcmV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BlZGNhcmQtY2FyZXQtJytuYW1lKTsKICBpZighYm9keSkgcmV0dXJuOwogIGNvbnN0IHdpbGxTaG93ID0gYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpOwogIGJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJyk7CiAgaWYoY2FyZXQpIGNhcmV0LnRleHRDb250ZW50ID0gd2lsbFNob3cgPyAn4pa+IG9jdWx0YXInIDogJ+KWuCB2ZXInOwp9Ci8vIEluc2lnbmlhcyBlbiBsYSBwZXN0YcOxYSAiQWRtaW4iIOKAlCBzZSB2ZW4gZGVzZGUgY3VhbHF1aWVyIHBhbnRhbGxhLCBzaW4gdGVuZXIgcXVlIGVudHJhciBlbgovLyBQZWRpZG9zIG5pIGRlc3BsZWdhciBuaW5ndW5hIHRhcmpldGEuIERvcyBhdmlzb3Mgc2VwYXJhZG9zLCBwb3JxdWUgc29uIGRvcyBtb21lbnRvcyBkaXN0aW50b3M6Ci8vIGxhIG5hcmFuamEgc29uIHBlZGlkb3MgcXVlIGFjYWJhbiBkZSBsbGVnYXIgeSBhw7puIG5vIGVzdMOhbiBkZWwgdG9kbyBpbXByZXNvcy9wcmVwYXJhZG9zOyBsYQovLyB2ZXJkZSBzb24gbG9zIHF1ZSB5YSBlc3TDoW4gbGlzdG9zIHkgc29sbyBmYWx0YSBlbnZpYXJsb3MgKGltcHJpbWlyIHkgZW52aWFyIG5vIHBhc2FuIGVuIGVsCi8vIG1pc21vIG1vbWVudG8g4oCUIHNlIGltcHJpbWUgZW4gY2FzYSB5IHNlIGVudsOtYSBjdWFuZG8gdG9xdWUgaXIgYSBhbGfDum4gc2l0aW8pLiBVbiBwZWRpZG8gbnVuY2EKLy8gY3VlbnRhIGVuIGxhcyBkb3MgYSBsYSB2ZXo6IHBhc2EgZGUgbmFyYW5qYSBhIHZlcmRlIGVuIGN1YW50byBxdWVkYSB0b2RvIG1hcmNhZG8gY29tbyBpbXByZXNvLgpmdW5jdGlvbiB1cGRhdGVOYXZBZG1pblJlYWR5QmFkZ2UoKXsKICBjb25zdCBiYWRnZUVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25hdi1hZG1pbi1yZWFkeS1iYWRnZScpOwogIGNvbnN0IG5ld0JhZGdlRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmF2LWFkbWluLW5ldy1iYWRnZScpOwogIGlmKCFiYWRnZUVsKSByZXR1cm47CiAgbGV0IHJlYWR5ID0gMCwgbm90UmVhZHkgPSAwOwogIGlmKCFpc1Jlc3RyaWN0ZWRBZG1pbil7CiAgICBsYXN0T3JkZXJHcm91cHMuZm9yRWFjaChnPT5nLm9yZGVycy5mb3JFYWNoKG89PnsgaWYoaXNPcmRlclJlYWR5KG8pKSByZWFkeSsrOyBlbHNlIG5vdFJlYWR5Kys7IH0pKTsKICB9CiAgaWYocmVhZHk+MCl7IGJhZGdlRWwudGV4dENvbnRlbnQgPSByZWFkeTsgYmFkZ2VFbC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTsgfQogIGVsc2UgYmFkZ2VFbC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTsKICBpZihuZXdCYWRnZUVsKXsKICAgIGlmKG5vdFJlYWR5PjApeyBuZXdCYWRnZUVsLnRleHRDb250ZW50ID0gbm90UmVhZHk7IG5ld0JhZGdlRWwuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7IH0KICAgIGVsc2UgbmV3QmFkZ2VFbC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTsKICB9Cn0KZnVuY3Rpb24gcmVuZGVyQWRtaW5PcmRlcnMob3JkZXJzKXsKICBjb25zdCBjb3VudEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BlZGlkb3MtY291bnQnKTsKICBpZihjb3VudEVsKSBjb3VudEVsLnRleHRDb250ZW50ID0gJygnICsgb3JkZXJzLmxlbmd0aCArICcpJzsKICBjb25zdCBzdWJDb3VudEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FzdWItcGVkaWRvcy1jb3VudCcpOwogIGlmKHN1YkNvdW50RWwpIHN1YkNvdW50RWwudGV4dENvbnRlbnQgPSBvcmRlcnMubGVuZ3RoID8gU3RyaW5nKG9yZGVycy5sZW5ndGgpIDogJyc7CiAgYWRtaW5BYnJlRW5QcmVwYXJhY2lvbihvcmRlcnMubGVuZ3RoKTsKICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtaW4tb3JkZXJzJyk7CiAgaWYoIWNvbnRhaW5lcikgcmV0dXJuOwogIGlmKCFvcmRlcnMubGVuZ3RoKXsKICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXN1YXZlKTsiPk5vIGhheSBwZWRpZG9zIHBlbmRpZW50ZXMuPC9wPic7CiAgICBsYXN0T3JkZXJHcm91cHMgPSBbXTsKICAgIGNvbnN0IHN1bUVsMCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwZWRjYXJkLXN1bW1hcnktcGVuZGllbnRlcycpOwogICAgaWYoc3VtRWwwKSBzdW1FbDAudGV4dENvbnRlbnQgPSAnbmFkYSBwZW5kaWVudGUnOwogICAgdXBkYXRlTmF2QWRtaW5SZWFkeUJhZGdlKCk7CiAgICByZXR1cm47CiAgfQogIGNvbnN0IGJ5TmFtZSA9IHt9OwogIG9yZGVycy5mb3JFYWNoKG89PnsKICAgIGNvbnN0IG5hbWUgPSBvLmNoYW5uZWxzPy5uYW1lIHx8IG8uY3VzdG9tZXJfbmFtZSB8fCAn4oCUJzsKICAgIGlmKCFieU5hbWVbbmFtZV0pIGJ5TmFtZVtuYW1lXSA9IFtdOwogICAgYnlOYW1lW25hbWVdLnB1c2gobyk7CiAgfSk7CiAgY29uc3QgbmFtZXMgPSBPYmplY3Qua2V5cyhieU5hbWUpLnNvcnQoKGEsYik9PmEubG9jYWxlQ29tcGFyZShiKSk7CiAgbGFzdE9yZGVyR3JvdXBzID0gbmFtZXMubWFwKG5hbWU9Pih7bmFtZSwgb3JkZXJzOiBieU5hbWVbbmFtZV0sIGNoYW5uZWw6IGJ5TmFtZVtuYW1lXVswXS5jaGFubmVsc30pKTsKICBjb25zdCByZWFkeUdyb3VwcyA9IGxhc3RPcmRlckdyb3Vwcy5maWx0ZXIoZz0+Zy5vcmRlcnMuc29tZShpc09yZGVyUmVhZHkpKS5sZW5ndGg7CiAgY29uc3Qgc3VtRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGVkY2FyZC1zdW1tYXJ5LXBlbmRpZW50ZXMnKTsKICBpZihzdW1FbCkgc3VtRWwudGV4dENvbnRlbnQgPSBgJHtuYW1lcy5sZW5ndGh9IHRpZW5kYSR7bmFtZXMubGVuZ3RoPT09MT8nJzoncyd9YCArIChyZWFkeUdyb3Vwcz4wID8gYCDCtyDinJMgJHtyZWFkeUdyb3Vwc30gbGlzdGEke3JlYWR5R3JvdXBzPT09MT8nJzoncyd9IHBhcmEgZW52aWFyYCA6ICcnKTsKICB1cGRhdGVOYXZBZG1pblJlYWR5QmFkZ2UoKTsKICBjb250YWluZXIuaW5uZXJIVE1MID0gbGFzdE9yZGVyR3JvdXBzLm1hcCgoZywgZ2kpID0+IHsKICAgIGNvbnN0IHJlYWR5Q291bnQgPSBnLm9yZGVycy5maWx0ZXIoaXNPcmRlclJlYWR5KS5sZW5ndGg7CiAgICBjb25zdCByZWFkeUJhZGdlID0gcmVhZHlDb3VudD4wID8gYCA8c3BhbiBzdHlsZT0iY29sb3I6dmFyKC0tb2spO2ZvbnQtd2VpZ2h0OjYwMDsiPuKckyAke3JlYWR5Q291bnR9IGxpc3RvJHtyZWFkeUNvdW50PT09MT8nJzoncyd9IHBhcmEgZW52aWFyPC9zcGFuPmAgOiAnJzsKICAgIGNvbnN0IHNlbmRCdG4gPSByZWFkeUNvdW50PjAgPyBgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gc21hbGwiIG9uY2xpY2s9ImV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO21hcmtHcm91cFJlYWR5U2VudCgke2dpfSkiPk1hcmNhciAke3JlYWR5Q291bnR9IGVudmlhZG8ke3JlYWR5Q291bnQ9PT0xPycnOidzJ308L2J1dHRvbj5gIDogJyc7CiAgICAvLyBUYW5kYSAzIChQMTYsIDA2LzEwLzIwMjYpOiBjYWRhIHBlZGlkbyBhIGxvIGFuY2hvLCBjb24gc3VzIGFydMOtY3Vsb3MgYSBsYSB2aXN0YSAoZm90bywgcmVmZXJlbmNpYSwgbm9tYnJlLCBmb3JtYXRvIHkKICAgIC8vIGNhbnRpZGFkLCBwb3IgdGlwbyB5IGZvcm1hdG8pLCBsYXMgbm90YXMgZGUgbGEgdGllbmRhIHkgZWwgZXN0YWRvLiDCq0JvcnJhcsK7IHlhIG5vIGVzdMOhIGFsIGxhZG8gZGVsIGVzdGFkbzogdmEgZW4gwqtNw6FzwrsuCiAgICBjb25zdCBwZWRpZG9zID0gZy5vcmRlcnMubWFwKG8gPT4gewogICAgICBjb25zdCBpdHMgPSBvLm9yZGVyX2l0ZW1zfHxbXTsKICAgICAgY29uc3QgdWRzID0gaXRzLnJlZHVjZSgobixpdCk9Pm4rKGl0LnF1YW50aXR5fHwwKSwgMCk7CiAgICAgIGNvbnN0IHJlYWR5ID0gaXNPcmRlclJlYWR5KG8pOwogICAgICByZXR1cm4gYDxkaXYgY2xhc3M9InBkLXBlZGlkbyR7cmVhZHk\/JyBsaXN0byc6Jyd9Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJwZC1jYWJlemEiPgogICAgICAgICAgPGRpdiBjbGFzcz0icGQtcXVpZW4iPjxzdHJvbmc+JHtuZXcgRGF0ZShvLmNyZWF0ZWRfYXQpLnRvTG9jYWxlRGF0ZVN0cmluZyhhcHBMb2NhbGUoKSl9PC9zdHJvbmc+JHtvLmN1c3RvbWVyX25hbWUgPyAnIMK3ICcgKyBlc2NhcGVBdHRyKG8uY3VzdG9tZXJfbmFtZSkgOiAnJ30KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBkLWN1ZW50YSI+JHtpdHMubGVuZ3RofSBhcnTDrWN1bG8ke2l0cy5sZW5ndGg9PT0xPycnOidzJ30gwrcgJHt1ZHN9IHVuaWRhZCR7dWRzPT09MT8nJzonZXMnfTwvc3Bhbj4ke3JlYWR5ID8gJyA8c3BhbiBjbGFzcz0icGQtbGlzdG8iPuKckyBsaXN0byBwYXJhIGVudmlhcjwvc3Bhbj4nIDogJyd9PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwZC1hY2Npb25lcyI+CiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0icGQtZXN0YWRvIj5Fc3RhZG8gPHNlbGVjdCBvbmNoYW5nZT0idXBkYXRlT3JkZXJTdGF0dXMoJyR7by5pZH0nLCB0aGlzLnZhbHVlKSI+JHtPUkRFUl9TVEFUVVNFUy5tYXAoc3Q9PmA8b3B0aW9uIHZhbHVlPSIke3N0fSIgJHtzdD09PW8uc3RhdHVzPydzZWxlY3RlZCc6Jyd9PiR7c3R9PC9vcHRpb24+YCkuam9pbignJyl9PC9zZWxlY3Q+PC9sYWJlbD4KICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9Im1hcy1hY2Npb25lcyI+PHN1bW1hcnkgY2xhc3M9ImJ0biBzZWNvbmRhcnkgc21hbGwiPk3DoXM8L3N1bW1hcnk+PGRpdiBjbGFzcz0ibWFzLW1lbnUiPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icGVsaWdybyIgb25jbGljaz0iYXNrRGVsZXRlT3JkZXIoJyR7by5pZH0nLCB0aGlzKSI+Qm9ycmFyIHBlZGlkbzwvYnV0dG9uPjwvZGl2PjwvZGV0YWlscz4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgICR7by5ub3RlcyA\/IGA8ZGl2IGNsYXNzPSJwZC1ub3RhcyI+PHN0cm9uZz5Ob3RhcyBkZSBsYSB0aWVuZGE6PC9zdHJvbmc+ICR7ZXNjYXBlQXR0cihvLm5vdGVzKX08L2Rpdj5gIDogJyd9CiAgICAgICAgJHtwZWRpZG9MaW5lYXNIdG1sKG8pfQogICAgICA8L2Rpdj5gOwogICAgfSkuam9pbignJyk7CiAgICByZXR1cm4gYDxkaXYgc3R5bGU9ImJhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6OHB4O21hcmdpbi1ib3R0b206MTBweDtvdmVyZmxvdzpoaWRkZW47Ij4KICAgICAgPGRpdiBzdHlsZT0icGFkZGluZzoxMHB4IDEycHg7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4OyIgb25jbGljaz0idG9nZ2xlT3JkZXJHcm91cCgke2dpfSkiPgogICAgICAgIDxzcGFuPjxzdHJvbmc+JHtlc2NhcGVBdHRyKGcubmFtZSl9PC9zdHJvbmc+IDxzcGFuIHN0eWxlPSJjb2xvcjp2YXIoLS1zdWF2ZSk7Zm9udC13ZWlnaHQ6NDAwOyI+KCR7Zy5vcmRlcnMubGVuZ3RofSBwZWRpZG8ke2cub3JkZXJzLmxlbmd0aD09PTE\/Jyc6J3MnfSk8L3NwYW4+JHtyZWFkeUJhZGdlfTwvc3Bhbj4KICAgICAgICA8c3BhbiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4OyI+CiAgICAgICAgICAke3NlbmRCdG59CiAgICAgICAgICA8c3BhbiBpZD0ib3JkZXItZ3JvdXAtY2FyZXQtJHtnaX0iIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij7ilrggdmVyPC9zcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgaWQ9Im9yZGVyLWdyb3VwLWRldGFpbC0ke2dpfSIgY2xhc3M9ImhpZGRlbiIgc3R5bGU9InBhZGRpbmc6MCAxMnB4IDEycHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tbGluZSk7Ij4KICAgICAgICAke3NoaXBwaW5nSW5mb0h0bWwoZy5jaGFubmVsKX0KICAgICAgICAke3BlZGlkb3N9CiAgICAgIDwvZGl2PgogICAgPC9kaXY+YDsKICB9KS5qb2luKCcnKTsKfQovLyBBcnTDrWN1bG9zIGRlIHVuIHBlZGlkbyBwYXJhIHByZXBhcmFybG86IHBvciB0aXBvIChsw6FtaW5hcyBwcmltZXJvKSwgZm9ybWF0byAoQTMsIEE0LCBBNSwgMTR4NDIpIHkgcmVmZXJlbmNpYS4KZnVuY3Rpb24gcGVkaWRvTGluZWFzSHRtbChvKXsKICBjb25zdCB0aXBvID0gaXQgPT4gaXQuaWxsdXN0cmF0aW9ucz8ucHJvZHVjdF90eXBlIHx8ICdsYW1pbmEnOwogIGNvbnN0IHBvcyA9IGYgPT4geyBjb25zdCBpID0gT1JERU5fRk9STUFUT1MuaW5kZXhPZihmKTsgcmV0dXJuIGkgPCAwID8gOTkgOiBpOyB9OwogIGNvbnN0IGl0ZW1zID0gKG8ub3JkZXJfaXRlbXN8fFtdKS5zbGljZSgpLnNvcnQoKGEsYik9PgogICAgKHRpcG8oYSk9PT10aXBvKGIpID8gMCA6IHRpcG8oYSk9PT0nbGFtaW5hJyA\/IC0xIDogdGlwbyhiKT09PSdsYW1pbmEnID8gMSA6IHRpcG8oYSkubG9jYWxlQ29tcGFyZSh0aXBvKGIpKSkKICAgIHx8IHBvcyhhLmZvcm1hdCkgLSBwb3MoYi5mb3JtYXQpCiAgICB8fCBTdHJpbmcoYS5pbGx1c3RyYXRpb25zPy5yZWZ8fCcnKS5sb2NhbGVDb21wYXJlKFN0cmluZyhiLmlsbHVzdHJhdGlvbnM\/LnJlZnx8JycpLCAnZXMnLCB7bnVtZXJpYzp0cnVlfSkpOwogIGNvbnN0IGJ1c2NhSWxsID0gaWQgPT4gaWxsdXN0cmF0aW9ucy5maW5kKHg9PnguaWQ9PT1pZCkKICAgIHx8ICh0eXBlb2YgYWRtaW5MYW1pbmFzTGlzdCE9PSd1bmRlZmluZWQnICYmIGFkbWluTGFtaW5hc0xpc3QuZmluZCh4PT54LmlkPT09aWQpKQogICAgfHwgKHR5cGVvZiBhZG1pbkxpYnJldGFzTGlzdCE9PSd1bmRlZmluZWQnICYmIGFkbWluTGlicmV0YXNMaXN0LmZpbmQoeD0+eC5pZD09PWlkKSkgfHwgbnVsbDsKICByZXR1cm4gYDxkaXYgY2xhc3M9InBkLWxpbmVhcyI+JHtpdGVtcy5tYXAoaXQ9PnsKICAgIGNvbnN0IGlsbCA9IGJ1c2NhSWxsKGl0LmlsbHVzdHJhdGlvbl9pZCk7CiAgICBjb25zdCB0aCA9IGlsbD8uaW1hZ2VfdXJsID8gYDxpbWArYGcgc3JjPSIke3RodW1iU3JjKGlsbCl9IiBhbHQ9IiIgbG9hZGluZz0ibGF6eSI+YCA6ICc8c3BhbiBjbGFzcz0icGQtc2luZm90byI+PC9zcGFuPic7CiAgICByZXR1cm4gYDxkaXYgY2xhc3M9InBkLWxpbmVhIj4ke3RofTxzcGFuIGNsYXNzPSJwZC10ZXh0byI+PHNwYW4gY2xhc3M9InBkLXJlZiI+JHtlc2NhcGVBdHRyKGl0LmlsbHVzdHJhdGlvbnM\/LnJlZnx8JycpfTwvc3Bhbj4ke2VzY2FwZUF0dHIoaXQuaWxsdXN0cmF0aW9ucz8ubmFtZXx8JycpfTwvc3Bhbj48c3BhbiBjbGFzcz0icGQtZm10Ij4ke2VzY2FwZUF0dHIoaXQuZm9ybWF0fHwnJyl9PC9zcGFuPjxzdHJvbmcgY2xhc3M9InBkLWNhbnQiPsOXJHtpdC5xdWFudGl0eX08L3N0cm9uZz48L2Rpdj5gOwogIH0pLmpvaW4oJycpfTwvZGl2PmA7Cn0KLy8gMTgvMDkvMjAyNjogZGF0b3MgZGUgZW52w61vIGRlIGxhIHRpZW5kYSAobG9zIHJlbGxlbmEgZWxsYSBlbiAiTWlzIGRhdG9zIikgYSBsYSB2aXN0YSBhbCBwcmVwYXJhcgovLyBzdSBwZWRpZG8uIFNpIG1hcmPDsyAibWlzbWEgZGlyZWNjacOzbiIsIHNlIHVzYSBsYSBkZSBmYWN0dXJhY2nDs24uCmZ1bmN0aW9uIHNoaXBwaW5nSW5mb0h0bWwoYyl7CiAgaWYoIWMgfHwgYy5pc19vbmxpbmVfc2FsZSkgcmV0dXJuICcnOwogIGNvbnN0IHNhbWUgPSBjLnNoaXBfc2FtZV9hc19iaWxsaW5nICE9PSBmYWxzZTsKICBjb25zdCBhZGRyID0gc2FtZSA\/IFtjLmFkZHJlc3MsIFtjLnBvc3RhbF9jb2RlLCBjLmNpdHldLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJyldIDogW2Muc2hpcF9hZGRyZXNzLCBbYy5zaGlwX3Bvc3RhbF9jb2RlLCBjLnNoaXBfY2l0eV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKSwgYy5zaGlwX3Byb3ZpbmNlXTsKICBjb25zdCBsaW5lcyA9IGFkZHIuZmlsdGVyKEJvb2xlYW4pLm1hcChlc2NhcGVBdHRyKTsKICBjb25zdCBwaG9uZSA9IHNhbWUgPyBjLnBob25lIDogKGMuc2hpcF9waG9uZSB8fCBjLnBob25lKTsKICBjb25zdCBleHRyYSA9IFsKICAgIGMuZGVsaXZlcnlfaG91cnMgPyAnSG9yYXJpbzogJyArIGRlbGl2ZXJ5SG91cnNMYWJlbChjLmRlbGl2ZXJ5X2hvdXJzKSA6ICcnLAogICAgcGhvbmUgPyAnVGVsLiAnICsgZXNjYXBlQXR0cihwaG9uZSkgOiAnJywKICAgIGMuZGVsaXZlcnlfbm90ZXMgPyAnTm90YXM6ICcgKyBlc2NhcGVBdHRyKGMuZGVsaXZlcnlfbm90ZXMpIDogJycKICBdLmZpbHRlcihCb29sZWFuKTsKICBpZighbGluZXMubGVuZ3RoICYmICFleHRyYS5sZW5ndGgpIHJldHVybiAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW46MTBweCAwIDRweDsiPkVzdGEgdGllbmRhIGHDum4gbm8gaGEgcmVsbGVuYWRvIHN1cyBkYXRvcyBkZSBlbnbDrW8uPC9wPic7CiAgcmV0dXJuIGA8ZGl2IHN0eWxlPSJmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1pbmspO2JhY2tncm91bmQ6dmFyKC0tY3JlbWEtMik7Ym9yZGVyLXJhZGl1czo2cHg7cGFkZGluZzo4cHggMTBweDttYXJnaW46MTBweCAwIDZweDtsaW5lLWhlaWdodDoxLjU7Ij4KICAgIDxzdHJvbmcgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTsiPkVudmlhciBhPC9zdHJvbmc+PGJyPiR7bGluZXMuam9pbignPGJyPicpIHx8ICc8c3BhbiBzdHlsZT0iY29sb3I6dmFyKC0tc3VhdmUpOyI+KHNpbiBkaXJlY2Npw7NuKTwvc3Bhbj4nfSR7ZXh0cmEubGVuZ3RoID8gJzxicj4nICsgZXh0cmEuam9pbignIMK3ICcpIDogJyd9CiAgPC9kaXY+YDsKfQpmdW5jdGlvbiB0b2dnbGVPcmRlckdyb3VwKGdpKXsKICBjb25zdCBkZXRhaWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkZXItZ3JvdXAtZGV0YWlsLScrZ2kpOwogIGNvbnN0IGNhcmV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29yZGVyLWdyb3VwLWNhcmV0LScrZ2kpOwogIGlmKCFkZXRhaWwpIHJldHVybjsKICBjb25zdCB3aWxsU2hvdyA9IGRldGFpbC5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpOwogIGRldGFpbC5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nKTsKICBpZihjYXJldCkgY2FyZXQudGV4dENvbnRlbnQgPSB3aWxsU2hvdyA\/ICfilr4gb2N1bHRhcicgOiAn4pa4IHZlcic7Cn0KZnVuY3Rpb24gdG9nZ2xlT3JkZXJJdGVtc0RldGFpbChlbCwgZGV0YWlsSWQsIG4pewogIGNvbnN0IGRldGFpbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRldGFpbElkKTsKICBpZighZGV0YWlsKSByZXR1cm47CiAgY29uc3Qgd2lsbFNob3cgPSBkZXRhaWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdoaWRkZW4nKTsKICBkZXRhaWwuY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJyk7CiAgZWwudGV4dENvbnRlbnQgPSAod2lsbFNob3cgPyAn4pa+ICcgOiAn4pa4ICcpICsgbiArICcgw610ZW0nICsgKG49PT0xPycnOidzJykgKyAod2lsbFNob3cgPyAnIOKAlCBvY3VsdGFyJyA6ICcg4oCUIHZlcicpOwp9Ci8vIEzDs2dpY2EgZGUgY2FtYmlvIGRlIGVzdGFkbyBzaW4gcmVjYXJnYXIgKHBhcmEgcG9kZXIgYXBsaWNhcmxhIHZhcmlhcyB2ZWNlcyBzZWd1aWRhcwovLyBhbCBkZXNwYWNoYXIgdG9kYSB1bmEgdGllbmRhIGRlIGdvbHBlLCB5IHJlY2FyZ2FyIHNvbG8gdW5hIHZleiBhbCBmaW5hbCkuCi8vIDE4LzA5LzIwMjY6IGFsIG1hcmNhciBjb21vIGVudmlhZG8gc2UgZ3VhcmRhIGVuIG9yZGVycy5zdG9ja19kZWR1Y3RlZCBsbyBxdWUgc2UgZGVzY29udMOzIERFCi8vIFZFUkRBRCAoZWwgc3RvY2sgbnVuY2EgYmFqYSBkZSAwLCBhc8OtIHF1ZSBwdWVkZSBzZXIgbWVub3MgcXVlIGxvIHBlZGlkbykgeSBsYSB2ZW50YSBhdXRvbcOhdGljYQovLyBkZSAiVmVudGEgT25saW5lIi4gQXPDrSwgc2kgbHVlZ28gc2UgYm9ycmEgZWwgcGVkaWRvIG8gdnVlbHZlIGEgcGVuZGllbnRlL2NhbmNlbGFkbywgc2UgcHVlZGUKLy8gZGV2b2x2ZXIgZXhhY3RhbWVudGUgZXNvIChyZXZlcnRPcmRlclNoaXBtZW50KS4gYG9wdHMucmV0dXJuU3RvY2s9ZmFsc2VgID0gbm8gZGV2b2x2ZXIgbmFkYS4KLy8gMjkvMDkvMjAyNiAocmVwYXNvKTogc2kgZWwgY2FtYmlvIGRlIGVzdGFkbyBubyBzZSBndWFyZGEsIHNlIHBhcmEgYXF1w60gKGFudGVzIHNlZ3XDrWEgeSBkZXNjb250YWJhCi8vIHN0b2NrIGlndWFsKTsgbGFzIGV4aXN0ZW5jaWFzIGRlIGxpYnJldGFzIHNlIGxlZW4gYWwgbW9tZW50byAobm8gZGUgbGEgbGlzdGEgY2FyZ2FkYSwgcXVlIHB1ZWRlCi8vIHNlciB2aWVqYSBzaSBoYXkgb3RyYSBwZXN0YcOxYSk7IHkgZW4gc3RvY2tfZGVkdWN0ZWQgc29sbyBzZSBhcHVudGEgbG8gcXVlIGRlIHZlcmRhZCBzZSBkZXNjb250w7MsCi8vIHBhcmEgcXVlIMKrZGVzaGFjZXIgZW52w61vwrsgZGV2dWVsdmEgbG8ganVzdG8uIERldnVlbHZlIGZhbHNlIHNpIG5vIHNlIHB1ZG8uCmFzeW5jIGZ1bmN0aW9uIGFwcGx5T3JkZXJTdGF0dXMob3JkZXIsIHN0YXR1cywgb3B0cz17fSl7CiAgY29uc3Qgd2FzU2VudCA9IG9yZGVyLnN0YXR1cyA9PT0gJ2VudmlhZG8nOwogIGlmKHdhc1NlbnQgJiYgc3RhdHVzIT09J2VudmlhZG8nKXsKICAgIGF3YWl0IHJldmVydE9yZGVyU2hpcG1lbnQob3JkZXIsIG9wdHMucmV0dXJuU3RvY2sgIT09IGZhbHNlKTsKICB9CiAgY29uc3QgdXBkID0ge3N0YXR1c307CiAgaWYoc3RhdHVzPT09J2VudmlhZG8nKXsKICAgIHVwZC5zaGlwcGVkX2F0ID0gKG9wdHMuc2hpcCAmJiBvcHRzLnNoaXAuc2hpcHBlZF9hdCkgfHwgZmVjaGFMb2NhbCgpOwogICAgdXBkLnRyYWNraW5nID0gKG9wdHMuc2hpcCAmJiBvcHRzLnNoaXAudHJhY2tpbmcpIHx8IG51bGw7CiAgfSBlbHNlIGlmKHdhc1NlbnQpewogICAgdXBkLnNoaXBwZWRfYXQgPSBudWxsOwogICAgdXBkLnRyYWNraW5nID0gbnVsbDsKICB9CiAgY29uc3Qge2Vycm9yOiB1cGRFcnJvcn0gPSBhd2FpdCBzYi5mcm9tKCdvcmRlcnMnKS51cGRhdGUodXBkKS5lcSgnaWQnLCBvcmRlci5pZCk7CiAgaWYodXBkRXJyb3IpeyBhbGVydCgnTm8gc2UgcHVkbyBjYW1iaWFyIGVsIHBlZGlkbzogJyArIHVwZEVycm9yLm1lc3NhZ2UpOyByZXR1cm4gZmFsc2U7IH0KICBPYmplY3QuYXNzaWduKG9yZGVyLCB1cGQpOwogIGlmKHN0YXR1cz09PSdlbnZpYWRvJyAmJiAhd2FzU2VudCl7CiAgICBjb25zdCBkZWR1Y3RlZCA9IHt1bml0czogW10sIHByaW50OiBbXSwgb25saW5lX3NhbGVzOiBbXX07CiAgICAvLyBBbCBtYXJjYXIgdW4gcGVkaWRvIGNvbW8gZW52aWFkbywgc2UgZGVzY3VlbnRhIHR1IHN0b2NrIGF1dG9tw6F0aWNhbWVudGUgcGFyYSBjdWFscXVpZXIKICAgIC8vIHRpcG8gY29uIHN0b2NrIHByb3BpbyAobGlicmV0YXMsIHBlZ2F0aW5hcywgeSBsb3MgcXVlIHNlIGHDsWFkYW4pLgogICAgLy8gKHVuYSBzb2xhIHZlejogc2kgeWEgZXN0YWJhIGVuICJlbnZpYWRvIiBubyBzZSB2dWVsdmUgYSBkZXNjb250YXIpLgogICAgY29uc3Qgc3RvY2tJdGVtcyA9IChvcmRlci5vcmRlcl9pdGVtc3x8W10pLmZpbHRlcihpdD0+eyBjb25zdCBwdD1pdC5pbGx1c3RyYXRpb25zPy5wcm9kdWN0X3R5cGU7IHJldHVybiBwdCAmJiBwdCE9PSdsYW1pbmEnOyB9KTsKICAgIGZvcihjb25zdCBpdCBvZiBzdG9ja0l0ZW1zKXsKICAgICAgY29uc3QgcHJvZCA9IGFkbWluSWxsdXN0cmF0aW9uc0xpc3QuZmluZCh4PT54LmlkPT09aXQuaWxsdXN0cmF0aW9uX2lkKTsKICAgICAgY29uc3Qge2RhdGE6IGZyZXNofSA9IGF3YWl0IHNiLmZyb20oJ2lsbHVzdHJhdGlvbnMnKS5zZWxlY3QoJ3N0b2NrX3F0eScpLmVxKCdpZCcsIGl0LmlsbHVzdHJhdGlvbl9pZCkubWF5YmVTaW5nbGUoKTsKICAgICAgY29uc3QgY3VycmVudCA9IGZyZXNoID8gKGZyZXNoLnN0b2NrX3F0eXx8MCkgOiAwOwogICAgICBjb25zdCBuZXh0ID0gTWF0aC5tYXgoMCwgY3VycmVudCAtIGl0LnF1YW50aXR5KTsKICAgICAgY29uc3Qge2Vycm9yOiBlU3RvY2t9ID0gYXdhaXQgc2IuZnJvbSgnaWxsdXN0cmF0aW9ucycpLnVwZGF0ZSh7c3RvY2tfcXR5OiBuZXh0fSkuZXEoJ2lkJywgaXQuaWxsdXN0cmF0aW9uX2lkKTsKICAgICAgaWYoZVN0b2NrKSBjb250aW51ZTsKICAgICAgaWYocHJvZCkgcHJvZC5zdG9ja19xdHkgPSBuZXh0OwogICAgICBpZihjdXJyZW50IC0gbmV4dCA+IDApIGRlZHVjdGVkLnVuaXRzLnB1c2goe2lsbHVzdHJhdGlvbl9pZDogaXQuaWxsdXN0cmF0aW9uX2lkLCBxdHk6IGN1cnJlbnQgLSBuZXh0fSk7CiAgICB9CiAgICAvLyBMYXMgbMOhbWluYXMgc8OtIGxsZXZhbiBzdG9jayBwcm9waW8gdGFtYmnDqW4gKGltcHJlc2lvbmVzIHlhIGhlY2hhcywgZW4gIlN0b2NrIik6IGFudGVzIG5vIHNlCiAgICAvLyByZXN0YWJhIGFxdcOtIHBvcnF1ZSBzZSBwZW5zw7MgcXVlICJJbXByZXNpb25lcyIgZXJhIHNvbG8gcGFyYSBjYWxjdWxhciBjdcOhbnRvIGltcHJpbWlyIGRlCiAgICAvLyBudWV2bywgcGVybyBlbiBsYSBwcsOhY3RpY2EgZXMgdHUgc3RvY2sgZsOtc2ljbyBkZSB2ZXJkYWQg4oCUIHNpIGVudsOtYXMgNiB1bmlkYWRlcyBxdWUgeWEgdGVuw61hcwogICAgLy8gaW1wcmVzYXMsIGVzYXMgNiBkZWphbiBkZSBlc3RhciBkaXNwb25pYmxlcyB5IGhheSBxdWUgcmVzdGFybGFzIGlndWFsIHF1ZSBjb24gbGlicmV0YXMuCiAgICBjb25zdCBsYW1pbmFJdGVtcyA9IChvcmRlci5vcmRlcl9pdGVtc3x8W10pLmZpbHRlcihpdD0+eyBjb25zdCBwdD1pdC5pbGx1c3RyYXRpb25zPy5wcm9kdWN0X3R5cGV8fCdsYW1pbmEnOyByZXR1cm4gcHQ9PT0nbGFtaW5hJzsgfSk7CiAgICBmb3IoY29uc3QgaXQgb2YgbGFtaW5hSXRlbXMpewogICAgICBjb25zdCB7ZGF0YTogZXhpc3Rpbmd9ID0gYXdhaXQgc2IuZnJvbSgncHJpbnRfc3RvY2snKS5zZWxlY3QoJ3ByaW50ZWRfcXR5JykuZXEoJ2lsbHVzdHJhdGlvbl9pZCcsIGl0LmlsbHVzdHJhdGlvbl9pZCkuZXEoJ2Zvcm1hdCcsIGl0LmZvcm1hdCkubWF5YmVTaW5nbGUoKTsKICAgICAgaWYoIWV4aXN0aW5nKSBjb250aW51ZTsgLy8gbm8gaGFiw61hIHN0b2NrIGRlY2xhcmFkbyBwYXJhIGVzdGEgcmVmZXJlbmNpYS9mb3JtYXRvIOKAlCBuYWRhIHF1ZSByZXN0YXIKICAgICAgY29uc3QgbmV4dCA9IE1hdGgubWF4KDAsIChleGlzdGluZy5wcmludGVkX3F0eXx8MCkgLSBpdC5xdWFudGl0eSk7CiAgICAgIGNvbnN0IHtlcnJvcjogZVByaW50fSA9IGF3YWl0IHNiLmZyb20oJ3ByaW50X3N0b2NrJykudXBkYXRlKHtwcmludGVkX3F0eTogbmV4dCwgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpfSkuZXEoJ2lsbHVzdHJhdGlvbl9pZCcsIGl0LmlsbHVzdHJhdGlvbl9pZCkuZXEoJ2Zvcm1hdCcsIGl0LmZvcm1hdCk7CiAgICAgIGlmKGVQcmludCkgY29udGludWU7CiAgICAgIGlmKChleGlzdGluZy5wcmludGVkX3F0eXx8MCkgLSBuZXh0ID4gMCkgZGVkdWN0ZWQucHJpbnQucHVzaCh7aWxsdXN0cmF0aW9uX2lkOiBpdC5pbGx1c3RyYXRpb25faWQsIGZvcm1hdDogaXQuZm9ybWF0LCBxdHk6IChleGlzdGluZy5wcmludGVkX3F0eXx8MCkgLSBuZXh0fSk7CiAgICB9CiAgICAvLyBDYW5hbCAiVmVudGEgT25saW5lIjogYXF1w60gImVudHJlZ2FkbyIgeSAidmVuZGlkbyIgc29uIGVsIG1pc21vIGhlY2hvIChBbmRyZWEgZ2VzdGlvbmEKICAgIC8vIGVsbGEgbWlzbWEgZXN0b3MgcGVkaWRvcyBkZXNkZSBzdSBjdWVudGEgYWRtaW4sIG5vIGhheSBvdHJvIHBhc28gZGUgY29uZmlybWFjacOzbiksIGFzw60gcXVlCiAgICAvLyBhbCBtYXJjYXIgZWwgcGVkaWRvIGNvbW8gZW52aWFkbyBzZSByZWdpc3RyYSBsYSB2ZW50YSBhdXRvbcOhdGljYW1lbnRlIOKAlCBzaW4gZXN0bywgZXN0YXMKICAgIC8vIHVuaWRhZGVzIHF1ZWRhYmFuICJlbnRyZWdhZGFzIiBwZXJvIG51bmNhIGFwYXJlY8OtYW4gY29tbyB2ZW5kaWRhcyBlbiBWZW50YXMgeSBzdG9jay4KICAgIGlmKG9yZGVyLmNoYW5uZWxzPy5pc19vbmxpbmVfc2FsZSl7CiAgICAgIGNvbnN0IG1vbnRoU3RyID0gZmVjaGFMb2NhbCgpLnNsaWNlKDAsNykgKyAnLTAxJzsKICAgICAgZm9yKGNvbnN0IGl0IG9mIChvcmRlci5vcmRlcl9pdGVtc3x8W10pKXsKICAgICAgICBjb25zdCB7ZGF0YTogZXhpc3RpbmdTYWxlfSA9IGF3YWl0IHNiLmZyb20oJ21vbnRobHlfc2FsZXMnKS5zZWxlY3QoJ2lkLCB1bml0c19zb2xkJykuZXEoJ2NoYW5uZWxfaWQnLCBvcmRlci5jaGFubmVsX2lkKS5lcSgnaWxsdXN0cmF0aW9uX2lkJywgaXQuaWxsdXN0cmF0aW9uX2lkKS5lcSgnZm9ybWF0JywgaXQuZm9ybWF0KS5lcSgnbW9udGgnLCBtb250aFN0cikubWF5YmVTaW5nbGUoKTsKICAgICAgICBjb25zdCB7ZXJyb3I6IGVTYWxlfSA9IGV4aXN0aW5nU2FsZQogICAgICAgICAgPyBhd2FpdCBzYi5mcm9tKCdtb250aGx5X3NhbGVzJykudXBkYXRlKHt1bml0c19zb2xkOiAoZXhpc3RpbmdTYWxlLnVuaXRzX3NvbGR8fDApICsgaXQucXVhbnRpdHl9KS5lcSgnaWQnLCBleGlzdGluZ1NhbGUuaWQpCiAgICAgICAgICA6IGF3YWl0IHNiLmZyb20oJ21vbnRobHlfc2FsZXMnKS5pbnNlcnQoe2NoYW5uZWxfaWQ6IG9yZGVyLmNoYW5uZWxfaWQsIGlsbHVzdHJhdGlvbl9pZDogaXQuaWxsdXN0cmF0aW9uX2lkLCBmb3JtYXQ6IGl0LmZvcm1hdCwgbW9udGg6IG1vbnRoU3RyLCB1bml0c19zb2xkOiBpdC5xdWFudGl0eX0pOwogICAgICAgIGlmKGVTYWxlKSBjb250aW51ZTsKICAgICAgICBkZWR1Y3RlZC5vbmxpbmVfc2FsZXMucHVzaCh7aWxsdXN0cmF0aW9uX2lkOiBpdC5pbGx1c3RyYXRpb25faWQsIGZvcm1hdDogaXQuZm9ybWF0LCBtb250aDogbW9udGhTdHIsIHF0eTogaXQucXVhbnRpdHl9KTsKICAgICAgfQogICAgfQogICAgYXdhaXQgc2IuZnJvbSgnb3JkZXJzJykudXBkYXRlKHtzdG9ja19kZWR1Y3RlZDogZGVkdWN0ZWR9KS5lcSgnaWQnLCBvcmRlci5pZCk7CiAgICBvcmRlci5zdG9ja19kZWR1Y3RlZCA9IGRlZHVjdGVkOwogIH0KICByZXR1cm4gdHJ1ZTsKfQovLyBEZXNoYWNlIGxvIHF1ZSBoaXpvIG1hcmNhciB1biBwZWRpZG8gY29tbyBlbnZpYWRvLiBTaSBlbCBwZWRpZG8gZXMgZGUgYW50ZXMgZGVsIDE4LzA5LzIwMjYgbm8KLy8gdGllbmUgc3RvY2tfZGVkdWN0ZWQgZ3VhcmRhZG86IGVuIGVzZSBjYXNvLCBzaSBzZSBwaWRlIGRldm9sdmVyLCBzZSBkZXZ1ZWx2ZW4gbGFzIGNhbnRpZGFkZXMgZGVsCi8vIHBlZGlkbyAoc29sbyBhIGxvcyBmb3JtYXRvcyBkZSBsw6FtaW5hIHF1ZSB5YSB0aWVuZW4gZmlsYSBkZSBzdG9jaykgeSBsYSB2ZW50YSBvbmxpbmUgbm8gc2UgdG9jYS4KYXN5bmMgZnVuY3Rpb24gcmV2ZXJ0T3JkZXJTaGlwbWVudChvcmRlciwgcmV0dXJuU3RvY2spewogIGNvbnN0IGQgPSBvcmRlci5zdG9ja19kZWR1Y3RlZDsKICBjb25zdCBkb25lID0gW107CiAgaWYocmV0dXJuU3RvY2spewogICAgY29uc3QgcmVmT2YgPSBpZCA9PiAob3JkZXIub3JkZXJfaXRlbXN8fFtdKS5maW5kKGl0PT5pdC5pbGx1c3RyYXRpb25faWQ9PT1pZCk\/LmlsbHVzdHJhdGlvbnM\/LnJlZiB8fCAnPyc7CiAgICBjb25zdCB1bml0c0xpc3QgPSBkID8gZC51bml0cyA6IChvcmRlci5vcmRlcl9pdGVtc3x8W10pLmZpbHRlcihpdD0+KGl0LmlsbHVzdHJhdGlvbnM\/LnByb2R1Y3RfdHlwZXx8J2xhbWluYScpIT09J2xhbWluYScpLm1hcChpdD0+KHtpbGx1c3RyYXRpb25faWQ6IGl0LmlsbHVzdHJhdGlvbl9pZCwgcXR5OiBpdC5xdWFudGl0eX0pKTsKICAgIGNvbnN0IHByaW50TGlzdCA9IGQgPyBkLnByaW50IDogKG9yZGVyLm9yZGVyX2l0ZW1zfHxbXSkuZmlsdGVyKGl0PT4oaXQuaWxsdXN0cmF0aW9ucz8ucHJvZHVjdF90eXBlfHwnbGFtaW5hJyk9PT0nbGFtaW5hJykubWFwKGl0PT4oe2lsbHVzdHJhdGlvbl9pZDogaXQuaWxsdXN0cmF0aW9uX2lkLCBmb3JtYXQ6IGl0LmZvcm1hdCwgcXR5OiBpdC5xdWFudGl0eX0pKTsKICAgIGZvcihjb25zdCB1IG9mIHVuaXRzTGlzdCl7CiAgICAgIGNvbnN0IHtkYXRhOiBwcm9kfSA9IGF3YWl0IHNiLmZyb20oJ2lsbHVzdHJhdGlvbnMnKS5zZWxlY3QoJ3N0b2NrX3F0eScpLmVxKCdpZCcsIHUuaWxsdXN0cmF0aW9uX2lkKS5tYXliZVNpbmdsZSgpOwogICAgICBpZighcHJvZCkgY29udGludWU7CiAgICAgIGF3YWl0IHNiLmZyb20oJ2lsbHVzdHJhdGlvbnMnKS51cGRhdGUoe3N0b2NrX3F0eTogKHByb2Quc3RvY2tfcXR5fHwwKSArIHUucXR5fSkuZXEoJ2lkJywgdS5pbGx1c3RyYXRpb25faWQpOwogICAgICBkb25lLnB1c2goYCR7cmVmT2YodS5pbGx1c3RyYXRpb25faWQpfSArJHt1LnF0eX1gKTsKICAgIH0KICAgIGZvcihjb25zdCBwIG9mIHByaW50TGlzdCl7CiAgICAgIGNvbnN0IHtkYXRhOiByb3d9ID0gYXdhaXQgc2IuZnJvbSgncHJpbnRfc3RvY2snKS5zZWxlY3QoJ3ByaW50ZWRfcXR5JykuZXEoJ2lsbHVzdHJhdGlvbl9pZCcsIHAuaWxsdXN0cmF0aW9uX2lkKS5lcSgnZm9ybWF0JywgcC5mb3JtYXQpLm1heWJlU2luZ2xlKCk7CiAgICAgIGlmKCFyb3cpIGNvbnRpbnVlOwogICAgICBhd2FpdCBzYi5mcm9tKCdwcmludF9zdG9jaycpLnVwZGF0ZSh7cHJpbnRlZF9xdHk6IChyb3cucHJpbnRlZF9xdHl8fDApICsgcC5xdHksIHVwZGF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKX0pLmVxKCdpbGx1c3RyYXRpb25faWQnLCBwLmlsbHVzdHJhdGlvbl9pZCkuZXEoJ2Zvcm1hdCcsIHAuZm9ybWF0KTsKICAgICAgZG9uZS5wdXNoKGAke3JlZk9mKHAuaWxsdXN0cmF0aW9uX2lkKX0gJHtwLmZvcm1hdH0gKyR7cC5xdHl9YCk7CiAgICB9CiAgfQogIC8vIExhIHZlbnRhIGF1dG9tw6F0aWNhIGRlICJWZW50YSBPbmxpbmUiIHNpZW1wcmUgc2UgcXVpdGEgKGVsIHBlZGlkbyBkZWphIGRlIGVzdGFyIGVudmlhZG8pLgogIGZvcihjb25zdCB2IG9mIChkPy5vbmxpbmVfc2FsZXN8fFtdKSl7CiAgICBjb25zdCB7ZGF0YTogc2FsZX0gPSBhd2FpdCBzYi5mcm9tKCdtb250aGx5X3NhbGVzJykuc2VsZWN0KCdpZCwgdW5pdHNfc29sZCcpLmVxKCdjaGFubmVsX2lkJywgb3JkZXIuY2hhbm5lbF9pZCkuZXEoJ2lsbHVzdHJhdGlvbl9pZCcsIHYuaWxsdXN0cmF0aW9uX2lkKS5lcSgnZm9ybWF0Jywgdi5mb3JtYXQpLmVxKCdtb250aCcsIHYubW9udGgpLm1heWJlU2luZ2xlKCk7CiAgICBpZighc2FsZSkgY29udGludWU7CiAgICBjb25zdCBsZWZ0ID0gKHNhbGUudW5pdHNfc29sZHx8MCkgLSB2LnF0eTsKICAgIGlmKGxlZnQgPiAwKSBhd2FpdCBzYi5mcm9tKCdtb250aGx5X3NhbGVzJykudXBkYXRlKHt1bml0c19zb2xkOiBsZWZ0fSkuZXEoJ2lkJywgc2FsZS5pZCk7CiAgICBlbHNlIGF3YWl0IHNiLmZyb20oJ21vbnRobHlfc2FsZXMnKS5kZWxldGUoKS5lcSgnaWQnLCBzYWxlLmlkKTsKICB9CiAgYXdhaXQgc2IuZnJvbSgnb3JkZXJzJykudXBkYXRlKHtzdG9ja19kZWR1Y3RlZDogbnVsbH0pLmVxKCdpZCcsIG9yZGVyLmlkKTsKICBvcmRlci5zdG9ja19kZWR1Y3RlZCA9IG51bGw7CiAgcmV0dXJuIGRvbmU7Cn0KLy8gMjkvMDkvMjAyNjogbWllbnRyYXMgc2UgZ3VhcmRhIHVuIGNhbWJpbyBkZSBlc3RhZG8gbm8gc2UgYWRtaXRlIG90cm8gKHVuIGRvYmxlIGNsaWMgcHJvY2VzYWJhIGVsCi8vIG1pc21vIHBlZGlkbyBkb3MgdmVjZXMgeSBkZXNjb250YWJhIGVsIHN0b2NrIGRvcyB2ZWNlcykuCmxldCBvcmRlclN0YXR1c0J1c3kgPSBmYWxzZTsKYXN5bmMgZnVuY3Rpb24gdXBkYXRlT3JkZXJTdGF0dXMoaWQsIHN0YXR1cyl7CiAgaWYob3JkZXJTdGF0dXNCdXN5KXsgYWxlcnQoJ0VzcGVyYSB1biBtb21lbnRvOiB0b2RhdsOtYSBzZSBlc3TDoSBndWFyZGFuZG8gZWwgY2FtYmlvIGFudGVyaW9yLicpOyBsb2FkQWRtaW5EYXRhKCk7IHJldHVybjsgfQogIG9yZGVyU3RhdHVzQnVzeSA9IHRydWU7CiAgdHJ5IHsgYXdhaXQgdXBkYXRlT3JkZXJTdGF0dXNOb3coaWQsIHN0YXR1cyk7IH0gZmluYWxseSB7IG9yZGVyU3RhdHVzQnVzeSA9IGZhbHNlOyB9Cn0KYXN5bmMgZnVuY3Rpb24gdXBkYXRlT3JkZXJTdGF0dXNOb3coaWQsIHN0YXR1cyl7CiAgY29uc3Qgb3JkZXIgPSBhZG1pbk9yZGVyc0xpc3QuZmluZChvPT5vLmlkPT09aWQpIHx8IGhpc3RvcmlhbE9yZGVyc0xpc3QuZmluZChvPT5vLmlkPT09aWQpOwogIGlmKCFvcmRlcikgcmV0dXJuOwogIGlmKG9yZGVyLnN0YXR1cz09PSdlbnZpYWRvJyAmJiBzdGF0dXMhPT0nZW52aWFkbycpewogICAgY29uc3QgY2hvaWNlID0gYXdhaXQgYXNrUmV0dXJuU3RvY2sob3JkZXIsIGBWYXMgYSBwYXNhciBlc3RlIHBlZGlkbyBkZSAiZW52aWFkbyIgYSAiJHtzdGF0dXN9Ii5gKTsKICAgIGlmKGNob2ljZT09PW51bGwpeyBsb2FkQWRtaW5EYXRhKCk7IHJldHVybjsgfSAvLyBjYW5jZWxhZG86IHNlIHJlcGludGEgcGFyYSBkZXZvbHZlciBlbCBkZXNwbGVnYWJsZSBhICJlbnZpYWRvIgogICAgY29uc3Qgd2hvID0gb3JkZXIuY2hhbm5lbHM\/Lm5hbWUgfHwgb3JkZXIuY3VzdG9tZXJfbmFtZSB8fCAnJzsKICAgIGlmKCEoYXdhaXQgYXBwbHlPcmRlclN0YXR1cyhvcmRlciwgc3RhdHVzLCB7cmV0dXJuU3RvY2s6IGNob2ljZX0pKSl7IGxvYWRBZG1pbkRhdGEoKTsgcmV0dXJuOyB9CiAgICBsb2dBY3Rpdml0eSgncGVkaWRvJywgYFBhc8OzIHVuIHBlZGlkbyBlbnZpYWRvIGRlICR7d2hvfSBhICIke3N0YXR1c30iYCArIChjaG9pY2UgPyAnIHkgZGV2b2x2acOzIGxvIGRlc2NvbnRhZG8gYWwgc3RvY2sgZGUgSVNUUklDRScgOiAnIHNpbiBkZXZvbHZlciBuYWRhIGFsIHN0b2NrIGRlIElTVFJJQ0UnKSk7CiAgICBsb2FkQWRtaW5EYXRhKCk7CiAgICByZXR1cm47CiAgfQogIGNvbnN0IHByZXZTdGF0dXMgPSBvcmRlci5zdGF0dXM7CiAgbGV0IHNoaXAgPSBudWxsOwogIGlmKHN0YXR1cz09PSdlbnZpYWRvJyl7CiAgICBzaGlwID0gYXdhaXQgYXNrU2hpcEluZm8oW29yZGVyXSwgb3JkZXIuY2hhbm5lbHM\/Lm5hbWUgfHwgb3JkZXIuY3VzdG9tZXJfbmFtZSB8fCAnJyk7CiAgICBpZihzaGlwPT09bnVsbCl7IGxvYWRBZG1pbkRhdGEoKTsgcmV0dXJuOyB9IC8vIGNhbmNlbGFkbzogc2UgcmVwaW50YSBlbCBkZXNwbGVnYWJsZQogIH0KICBpZighKGF3YWl0IGFwcGx5T3JkZXJTdGF0dXMob3JkZXIsIHN0YXR1cywge3NoaXB9KSkpeyBsb2FkQWRtaW5EYXRhKCk7IHJldHVybjsgfQogIGxvZ0FjdGl2aXR5KCdwZWRpZG8nLCBgQ2FtYmnDsyBlbCBwZWRpZG8gZGUgJHtvcmRlci5jaGFubmVscz8ubmFtZSB8fCBvcmRlci5jdXN0b21lcl9uYW1lIHx8ICcnfSR7b3JkZXIuY3VzdG9tZXJfbmFtZSA\/ICcgKCcrb3JkZXIuY3VzdG9tZXJfbmFtZSsnKScgOiAnJ30gZGUgIiR7cHJldlN0YXR1c30iIGEgIiR7c3RhdHVzfSJgKTsKICAvLyBFbCBwZWRpZG8gcHVlZGUgcGFzYXIgZGUgcGVuZGllbnRlIGEgYXJjaGl2YWRvIChvIGFsIHJldsOpcyksIGFzw60gcXVlIHJlZnJlc2NhbW9zIGFtYmFzIGxpc3RhcwogIC8vIChsb2FkQWRtaW5EYXRhIHlhIHJlY2FyZ2EgZWwgaGlzdG9yaWFsIHRhbWJpw6luLCBzaSBlc3TDoSBhYmllcnRvKS4KICBsb2FkQWRtaW5EYXRhKCk7Cn0KYXN5bmMgZnVuY3Rpb24gbWFya0dyb3VwUmVhZHlTZW50KGdpKXsKICBpZihvcmRlclN0YXR1c0J1c3kpeyBhbGVydCgnRXNwZXJhIHVuIG1vbWVudG86IHRvZGF2w61hIHNlIGVzdMOhIGd1YXJkYW5kbyBlbCBjYW1iaW8gYW50ZXJpb3IuJyk7IHJldHVybjsgfQogIGNvbnN0IGcgPSBsYXN0T3JkZXJHcm91cHNbZ2ldOwogIGlmKCFnKSByZXR1cm47CiAgY29uc3QgcmVhZHkgPSBnLm9yZGVycy5maWx0ZXIoaXNPcmRlclJlYWR5KTsKICBpZighcmVhZHkubGVuZ3RoKSByZXR1cm47CiAgY29uc3Qgc2hpcCA9IGF3YWl0IGFza1NoaXBJbmZvKHJlYWR5LCBnLm5hbWUpOwogIGlmKHNoaXA9PT1udWxsKSByZXR1cm47CiAgb3JkZXJTdGF0dXNCdXN5ID0gdHJ1ZTsKICBsZXQgaGVjaG9zID0gMDsKICB0cnkgewogICAgZm9yKGNvbnN0IG8gb2YgcmVhZHkpeyBpZighKGF3YWl0IGFwcGx5T3JkZXJTdGF0dXMobywgJ2VudmlhZG8nLCB7c2hpcH0pKSkgYnJlYWs7IGhlY2hvcysrOyB9CiAgfSBmaW5hbGx5IHsgb3JkZXJTdGF0dXNCdXN5ID0gZmFsc2U7IH0KICBpZihoZWNob3MpIGxvZ0FjdGl2aXR5KCdwZWRpZG8nLCBgTWFyY8OzIGNvbW8gZW52aWFkbyR7aGVjaG9zPT09MT8nJzoncyd9ICR7aGVjaG9zfSBwZWRpZG8ke2hlY2hvcz09PTE\/Jyc6J3MnfSBkZSAke2cubmFtZX1gKTsKICBsb2FkQWRtaW5EYXRhKCk7Cn0KbGV0IHBlbmRpbmdEZWxldGVPcmRlcklkID0gbnVsbDsKZnVuY3Rpb24gYXNrRGVsZXRlT3JkZXIoaWQsIGJ0bil7CiAgaWYocGVuZGluZ0RlbGV0ZU9yZGVySWQgPT09IGlkKXsKICAgIGRlbGV0ZU9yZGVyKGlkKTsKICAgIHBlbmRpbmdEZWxldGVPcmRlcklkID0gbnVsbDsKICAgIHJldHVybjsKICB9CiAgcGVuZGluZ0RlbGV0ZU9yZGVySWQgPSBpZDsKICBidG4udGV4dENvbnRlbnQgPSAnwr9TZWd1cm8\/IFPDrSwgYm9ycmFyJzsKICBidG4uc3R5bGUuYmFja2dyb3VuZCA9ICcjYTEyNjI2JzsKICBidG4uc3R5bGUuY29sb3IgPSAnI2ZmZic7CiAgYnRuLnN0eWxlLmJvcmRlckNvbG9yID0gJyNhMTI2MjYnOwogIHNldFRpbWVvdXQoKCk9PnsKICAgIGlmKHBlbmRpbmdEZWxldGVPcmRlcklkID09PSBpZCl7CiAgICAgIHBlbmRpbmdEZWxldGVPcmRlcklkID0gbnVsbDsKICAgICAgYnRuLnRleHRDb250ZW50ID0gJ0JvcnJhcic7CiAgICAgIGJ0bi5zdHlsZS5iYWNrZ3JvdW5kID0gJyc7CiAgICAgIGJ0bi5zdHlsZS5jb2xvciA9ICcnOwogICAgICBidG4uc3R5bGUuYm9yZGVyQ29sb3IgPSAnJzsKICAgIH0KICB9LCA2MDAwKTsKfQphc3luYyBmdW5jdGlvbiBkZWxldGVPcmRlcihpZCl7CiAgY29uc3Qgb3JkZXIgPSBhZG1pbk9yZGVyc0xpc3QuZmluZChvPT5vLmlkPT09aWQpIHx8IGhpc3RvcmlhbE9yZGVyc0xpc3QuZmluZChvPT5vLmlkPT09aWQpOwogIGNvbnN0IHdobyA9IG9yZGVyPy5jaGFubmVscz8ubmFtZSB8fCBvcmRlcj8uY3VzdG9tZXJfbmFtZSB8fCAnJzsKICBpZihvcmRlciAmJiBvcmRlci5zdGF0dXM9PT0nZW52aWFkbycpewogICAgY29uc3QgY2hvaWNlID0gYXdhaXQgYXNrUmV0dXJuU3RvY2sob3JkZXIsICdFc3RlIHBlZGlkbyB5YSBlc3TDoSBtYXJjYWRvIGNvbW8gZW52aWFkby4nKTsKICAgIGlmKGNob2ljZT09PW51bGwpeyBsb2FkQWRtaW5EYXRhKCk7IHJldHVybjsgfQogICAgY29uc3QgZG9uZSA9IGF3YWl0IHJldmVydE9yZGVyU2hpcG1lbnQob3JkZXIsIGNob2ljZSk7CiAgICBhd2FpdCBzYi5mcm9tKCdvcmRlcl9pdGVtcycpLmRlbGV0ZSgpLmVxKCdvcmRlcl9pZCcsIGlkKTsKICAgIGF3YWl0IHNiLmZyb20oJ29yZGVycycpLmRlbGV0ZSgpLmVxKCdpZCcsIGlkKTsKICAgIGxvZ0FjdGl2aXR5KCdwZWRpZG8nLCBgQm9ycsOzIHVuIHBlZGlkbyBlbnZpYWRvIGRlICR7d2hvfWAgKyAoY2hvaWNlID8gKGRvbmUubGVuZ3RoID8gYCB5IGRldm9sdmnDsyBhbCBzdG9jayBkZSBJU1RSSUNFOiAke2RvbmUuam9pbignLCAnKX1gIDogJyAobm8gaGFiw61hIG5hZGEgcXVlIGRldm9sdmVyIGFsIHN0b2NrKScpIDogJyBzaW4gZGV2b2x2ZXIgbmFkYSBhbCBzdG9jayBkZSBJU1RSSUNFJykpOwogICAgbG9hZEFkbWluRGF0YSgpOwogICAgcmV0dXJuOwogIH0KICBhd2FpdCBzYi5mcm9tKCdvcmRlcl9pdGVtcycpLmRlbGV0ZSgpLmVxKCdvcmRlcl9pZCcsIGlkKTsKICBhd2FpdCBzYi5mcm9tKCdvcmRlcnMnKS5kZWxldGUoKS5lcSgnaWQnLCBpZCk7CiAgaWYob3JkZXIpIGxvZ0FjdGl2aXR5KCdwZWRpZG8nLCBgQm9ycsOzIHVuIHBlZGlkbyAke29yZGVyLnN0YXR1c3x8Jyd9IGRlICR7d2hvfWApOwogIGxvYWRBZG1pbkRhdGEoKTsKfQovLyBWZW50YW5hIGRlIGNvbmZpcm1hY2nDs24gY29uIHRyZXMgc2FsaWRhczogdHJ1ZSA9IGRldm9sdmVyIHN0b2NrLCBmYWxzZSA9IG5vIGRldm9sdmVyLCBudWxsID0gY2FuY2VsYXIuCi8vIDI2LzA5LzIwMjY6IGFsIG1hcmNhciBjb21vIGVudmlhZG8gc2UgcGlkZW4gbGEgZmVjaGEgZGUgZW52w61vIHkgZWwgbsK6IGRlIHNlZ3VpbWllbnRvIChvcGNpb25hbCk7Ci8vIGxhIHRpZW5kYSBsb3MgdmUgZW4gwqtUdXMgcGVkaWRvc8K7IHkgbGUgbGxlZ2EgdW4gY29ycmVvIGNvbiBlbGxvcy4KZnVuY3Rpb24gYXNrU2hpcEluZm8ob3JkZXJzLCBzdG9yZU5hbWUpewogIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlPT57CiAgICBjb25zdCBuID0gb3JkZXJzLmxlbmd0aDsKICAgIGNvbnN0IHRvZGF5ID0gZmVjaGFMb2NhbCgpOwogICAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC40NSk7ei1pbmRleDo2MDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZzoxNnB4Oyc7CiAgICB3cmFwLmlubmVySFRNTCA9IGA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWNhcmQpO2JvcmRlci1yYWRpdXM6MTBweDttYXgtd2lkdGg6NDQwcHg7d2lkdGg6MTAwJTtwYWRkaW5nOjIwcHg7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS40NTsiPgogICAgICA8aDMgc3R5bGU9Im1hcmdpbjowIDAgOHB4OyI+TWFyY2FyIGNvbW8gZW52aWFkbzwvaDM+CiAgICAgIDxwIHN0eWxlPSJtYXJnaW46MCAwIDEycHg7Ij4ke249PT0xPydFbCBwZWRpZG8nOidMb3MgJytuKycgcGVkaWRvcyd9IGRlIDxzdHJvbmc+JHtlc2NhcGVBdHRyKHN0b3JlTmFtZSl9PC9zdHJvbmc+ICR7bj09PTE\/J3Bhc2Fyw6EnOidwYXNhcsOhbid9IGFsIGhpc3RvcmlhbC4gTGEgdGllbmRhIHZlcsOhIGVzdG9zIGRhdG9zIHkgcmVjaWJpcsOhIHVuIGNvcnJlby48L3A+CiAgICAgIDxsYWJlbCBmb3I9InNoaXAtZGF0ZSIgc3R5bGU9ImRpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tc3VhdmUpOyI+RmVjaGEgZGUgZW52w61vPC9sYWJlbD4KICAgICAgPGlucHV0IHR5cGU9ImRhdGUiIGlkPSJzaGlwLWRhdGUiIHZhbHVlPSIke3RvZGF5fSIgc3R5bGU9InBhZGRpbmc6N3B4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo2cHg7bWFyZ2luLWJvdHRvbToxMHB4OyI+CiAgICAgIDxsYWJlbCBmb3I9InNoaXAtdHJhY2tpbmciIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTsiPk7CuiBkZSBzZWd1aW1pZW50byBvIGVubGFjZSAob3BjaW9uYWwpPC9sYWJlbD4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJzaGlwLXRyYWNraW5nIiBhdXRvY29tcGxldGU9Im9mZiIgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzo3cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjZweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ij4KICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHg7bWFyZ2luLXRvcDoxNnB4OyI+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4iIGRhdGEtdj0ib2siPk1hcmNhciBjb21vIGVudmlhZG88L2J1dHRvbj4KICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBzZWNvbmRhcnkiIGRhdGEtdj0iY2FuY2VsIj5DYW5jZWxhcjwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PmA7CiAgICB3cmFwLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZT0+ewogICAgICBjb25zdCB2ID0gZS50YXJnZXQ\/LmRhdGFzZXQ\/LnYgfHwgKGUudGFyZ2V0PT09d3JhcCA\/ICdjYW5jZWwnIDogbnVsbCk7CiAgICAgIGlmKCF2KSByZXR1cm47CiAgICAgIGNvbnN0IGRhdGUgPSB3cmFwLnF1ZXJ5U2VsZWN0b3IoJyNzaGlwLWRhdGUnKS52YWx1ZSB8fCB0b2RheTsKICAgICAgY29uc3QgdHJhY2tpbmcgPSB3cmFwLnF1ZXJ5U2VsZWN0b3IoJyNzaGlwLXRyYWNraW5nJykudmFsdWUudHJpbSgpOwogICAgICB3cmFwLnJlbW92ZSgpOwogICAgICByZXNvbHZlKHY9PT0nb2snID8ge3NoaXBwZWRfYXQ6IGRhdGUsIHRyYWNraW5nOiB0cmFja2luZyB8fCBudWxsfSA6IG51bGwpOwogICAgfSk7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHdyYXApOwogICAgd3JhcC5xdWVyeVNlbGVjdG9yKCcjc2hpcC10cmFja2luZycpLmZvY3VzKCk7CiAgfSk7Cn0KZnVuY3Rpb24gYXNrUmV0dXJuU3RvY2sob3JkZXIsIGludHJvKXsKICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZT0+ewogICAgY29uc3Qgd2hvID0gZXNjYXBlQXR0cihvcmRlci5jaGFubmVscz8ubmFtZSB8fCBvcmRlci5jdXN0b21lcl9uYW1lIHx8ICdsYSB0aWVuZGEnKTsKICAgIGNvbnN0IGQgPSBvcmRlci5zdG9ja19kZWR1Y3RlZDsKICAgIGxldCBkZXRhaWw7CiAgICBpZihkKXsKICAgICAgY29uc3QgcmVmT2YgPSBpZCA9PiAob3JkZXIub3JkZXJfaXRlbXN8fFtdKS5maW5kKGl0PT5pdC5pbGx1c3RyYXRpb25faWQ9PT1pZCk\/LmlsbHVzdHJhdGlvbnM\/LnJlZiB8fCAnPyc7CiAgICAgIGNvbnN0IHBhcnRzID0gWy4uLmQudW5pdHMubWFwKHU9PmAke3JlZk9mKHUuaWxsdXN0cmF0aW9uX2lkKX0gKyR7dS5xdHl9YCksIC4uLmQucHJpbnQubWFwKHA9PmAke3JlZk9mKHAuaWxsdXN0cmF0aW9uX2lkKX0gJHtwLmZvcm1hdH0gKyR7cC5xdHl9YCldOwogICAgICBkZXRhaWwgPSBwYXJ0cy5sZW5ndGggPyBgQWwgZW52aWFybG8gc2UgZGVzY29udMOzIGRlIHR1IHN0b2NrOiA8c3Ryb25nPiR7cGFydHMuam9pbignLCAnKX08L3N0cm9uZz4uYCA6ICdBbCBlbnZpYXJsbyBubyBzZSBkZXNjb250w7MgbmFkYSBkZSB0dSBzdG9jayAobm8gaGFiw61hIHVuaWRhZGVzKS4nOwogICAgfSBlbHNlIHsKICAgICAgZGV0YWlsID0gJ0VzIHVuIHBlZGlkbyBhbnRlcmlvciBhbCAxOC8wOS8yMDI2OiBubyBxdWVkw7MgYXB1bnRhZG8gZXhhY3RhbWVudGUgY3XDoW50byBzZSBkZXNjb250w7MuIFNpIGVsaWdlcyBkZXZvbHZlciwgc2Ugc3VtYW4gbGFzIGNhbnRpZGFkZXMgZGVsIHBlZGlkby4nOwogICAgfQogICAgY29uc3Qgb25saW5lID0gb3JkZXIuY2hhbm5lbHM\/LmlzX29ubGluZV9zYWxlID8gJzxwIHN0eWxlPSJtYXJnaW46OHB4IDAgMDsiPkNvbW8gZXMgZGUgPHN0cm9uZz5WZW50YSBPbmxpbmU8L3N0cm9uZz4sIHRhbWJpw6luIHNlIHF1aXRhcsOhIGxhIHZlbnRhIHF1ZSBzZSBhcHVudMOzIGFsIGVudmlhcmxvLjwvcD4nIDogJyc7CiAgICBjb25zdCB3cmFwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICB3cmFwLnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjQ1KTt6LWluZGV4OjYwO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwYWRkaW5nOjE2cHg7JzsKICAgIHdyYXAuaW5uZXJIVE1MID0gYDxkaXYgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tY2FyZCk7Ym9yZGVyLXJhZGl1czoxMHB4O21heC13aWR0aDo0NDBweDt3aWR0aDoxMDAlO3BhZGRpbmc6MjBweDtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjQ1OyI+CiAgICAgIDxoMyBzdHlsZT0ibWFyZ2luOjAgMCA4cHg7Ij7Cv0Rldm9sdmVyIGVsIHN0b2NrPzwvaDM+CiAgICAgIDxwIHN0eWxlPSJtYXJnaW46MDsiPiR7aW50cm99ICR7d2hvfSBkZWphcsOhIGRlIHRlbmVyIGVzdGFzIHVuaWRhZGVzIGVuIHN1IHN0b2NrLjwvcD4KICAgICAgPHAgc3R5bGU9Im1hcmdpbjo4cHggMCAwOyI+JHtkZXRhaWx9PC9wPiR7b25saW5lfQogICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjhweDttYXJnaW4tdG9wOjE2cHg7Ij4KICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biIgZGF0YS12PSJ5ZXMiPlPDrSwgZGV2b2x2ZXIgYSBtaSBzdG9jazwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIHNlY29uZGFyeSIgZGF0YS12PSJubyI+Tm8sIGVsIG1hdGVyaWFsIHlhIHNhbGnDszwvYnV0dG9uPgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIHNlY29uZGFyeSIgZGF0YS12PSJjYW5jZWwiPkNhbmNlbGFyPC9idXR0b24+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+YDsKICAgIHdyYXAuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlPT57CiAgICAgIGNvbnN0IHYgPSBlLnRhcmdldD8uZGF0YXNldD8udiB8fCAoZS50YXJnZXQ9PT13cmFwID8gJ2NhbmNlbCcgOiBudWxsKTsKICAgICAgaWYoIXYpIHJldHVybjsKICAgICAgd3JhcC5yZW1vdmUoKTsKICAgICAgcmVzb2x2ZSh2PT09J3llcycgPyB0cnVlIDogdj09PSdubycgPyBmYWxzZSA6IG51bGwpOwogICAgfSk7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHdyYXApOwogIH0pOwp9Ci8vIExvcyBjaGVja3MgZGUgIkltcHJlc28iIHkgIlByZXBhcmFkYSIgc2UgZ3VhcmRhbiBlbiBlc3RlIG5hdmVnYWRvciAobG9jYWxTdG9yYWdlKSBwYXJhIHF1ZQovLyBubyBzZSBwaWVyZGFuIGFsIHJlY2FyZ2FyIGxhIHDDoWdpbmEg4oCUIGFudGVzIHNlIG9sdmlkYWJhbiB5IGxhIGxpc3RhIHZvbHbDrWEgYSBhcGFyZWNlciBlbnRlcmEKLy8gc2luIG1hcmNhciwgZGFuZG8gbGEgc2Vuc2FjacOzbiBkZSBxdWUgbWFyY2FyIG5vIHNlcnbDrWEgZGUgbmFkYS4KZnVuY3Rpb24gbG9hZENoZWNrZWRTZXQoa2V5KXsKICB0cnkgewogICAgY29uc3QgcmF3ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTsKICAgIHJldHVybiByYXcgPyBuZXcgU2V0KEpTT04ucGFyc2UocmF3KSkgOiBuZXcgU2V0KCk7CiAgfSBjYXRjaChlKXsgcmV0dXJuIG5ldyBTZXQoKTsgfQp9Ci8vIDE4LzA5LzIwMjY6IGxhcyBtYXJjYXMgc2UgY29tcGFydGVuIGVudHJlIGFkbWlucyBhIHRyYXbDqXMgZGUgbGEgdGFibGEgcHJlcF9jaGVja3MgKGFudGVzIHNvbG8KLy8gdml2w61hbiBlbiBlbCBsb2NhbFN0b3JhZ2UgZGUgcXVpZW4gbWFyY2FiYSkuIGxvY2FsU3RvcmFnZSBzZSBzaWd1ZSB1c2FuZG8gY29tbyBjb3BpYSBsb2NhbC4KY29uc3QgcHJlcFN5bmNlZCA9IHt9OyAgICAgIC8vIHNldF9rZXkgLT4gU2V0IGRlIGl0ZW1fa2V5IHF1ZSB5YSBlc3TDoW4gZW4gU3VwYWJhc2UKbGV0IHByZXBTeW5jUmVhZHkgPSBmYWxzZTsgIC8vIGhhc3RhIGNhcmdhciBkZSBTdXBhYmFzZSBubyBzZSBlc2NyaWJlIG5hZGEgKGV2aXRhIHBpc2FyIG1hcmNhcyBhamVuYXMpCmZ1bmN0aW9uIHByZXBTZXRLZXlzKCl7CiAgcmV0dXJuIFsnaXN0cmljZV9pbXByZXNvX2NoZWNrZWQnLCAnaXN0cmljZV9saWJyZXRhc19wcmVwYXJhZGFfY2hlY2tlZCcsIC4uLkVYVFJBX1NUT0NLX1RZUEVTLm1hcCh0PT4naXN0cmljZV9leHRyYV9wcmVwYXJhZGFfY2hlY2tlZF8nK3Qua2V5KV07Cn0KZnVuY3Rpb24gc2F2ZUNoZWNrZWRTZXQoa2V5LCBzZXQpewogIHRyeSB7IGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkoWy4uLnNldF0pKTsgfSBjYXRjaChlKXt9CiAgaWYoIXByZXBTeW5jUmVhZHkgfHwgbG9ja2VkQ2hhbm5lbCkgcmV0dXJuOwogIGNvbnN0IHByZXYgPSBwcmVwU3luY2VkW2tleV0gfHwgbmV3IFNldCgpOwogIGNvbnN0IGFkZGVkID0gWy4uLnNldF0uZmlsdGVyKGs9PiFwcmV2LmhhcyhrKSk7CiAgY29uc3QgcmVtb3ZlZCA9IFsuLi5wcmV2XS5maWx0ZXIoaz0+IXNldC5oYXMoaykpOwogIHByZXBTeW5jZWRba2V5XSA9IG5ldyBTZXQoc2V0KTsKICBjb25zdCB3aG8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGVhZGVyLXVzZXItbmFtZScpPy50ZXh0Q29udGVudCB8fCAnQWRtaW4nOwogIGlmKGFkZGVkLmxlbmd0aCkgc2IuZnJvbSgncHJlcF9jaGVja3MnKS51cHNlcnQoYWRkZWQubWFwKGs9Pih7c2V0X2tleTprZXksIGl0ZW1fa2V5OmssIGNoZWNrZWRfYnk6d2hvfSkpKS50aGVuKCgpPT57fSk7CiAgaWYocmVtb3ZlZC5sZW5ndGgpIHNiLmZyb20oJ3ByZXBfY2hlY2tzJykuZGVsZXRlKCkuZXEoJ3NldF9rZXknLCBrZXkpLmluKCdpdGVtX2tleScsIHJlbW92ZWQpLnRoZW4oKCk9Pnt9KTsKfQpmdW5jdGlvbiBnZXRQcmVwU2V0KGtleSl7CiAgaWYoa2V5ID09PSAnaXN0cmljZV9pbXByZXNvX2NoZWNrZWQnKSByZXR1cm4gcHJpbnRTdW1tYXJ5Q2hlY2tlZDsKICBpZihrZXkgPT09ICdpc3RyaWNlX2xpYnJldGFzX3ByZXBhcmFkYV9jaGVja2VkJykgcmV0dXJuIGxpYnJldGFzUGVuZGluZ0NoZWNrZWQ7CiAgY29uc3QgdCA9IGtleS5yZXBsYWNlKCdpc3RyaWNlX2V4dHJhX3ByZXBhcmFkYV9jaGVja2VkXycsJycpOwogIHJldHVybiBleHRyYVBlbmRpbmdDaGVja2VkW3RdIHx8IChleHRyYVBlbmRpbmdDaGVja2VkW3RdID0gbmV3IFNldCgpKTsKfQpmdW5jdGlvbiBzZXRQcmVwU2V0KGtleSwgc2V0KXsKICBpZihrZXkgPT09ICdpc3RyaWNlX2ltcHJlc29fY2hlY2tlZCcpIHByaW50U3VtbWFyeUNoZWNrZWQgPSBzZXQ7CiAgZWxzZSBpZihrZXkgPT09ICdpc3RyaWNlX2xpYnJldGFzX3ByZXBhcmFkYV9jaGVja2VkJykgbGlicmV0YXNQZW5kaW5nQ2hlY2tlZCA9IHNldDsKICBlbHNlIGV4dHJhUGVuZGluZ0NoZWNrZWRba2V5LnJlcGxhY2UoJ2lzdHJpY2VfZXh0cmFfcHJlcGFyYWRhX2NoZWNrZWRfJywnJyldID0gc2V0Owp9Ci8vIENhcmdhIGxhcyBtYXJjYXMgY29tcGFydGlkYXMuIExhIHByaW1lcmEgdmV6IGVuIGNhZGEgbmF2ZWdhZG9yIHN1YmUgdGFtYmnDqW4gbGFzIG1hcmNhcyBxdWUKLy8geWEgdHV2aWVyYSBndWFyZGFkYXMgZW4gbG9jYWwgKHNvbG8gZGUgcGVkaWRvcyBxdWUgc2lndWVuIHBlbmRpZW50ZXMpLCBwYXJhIG5vIHBlcmRlcmxhcy4KYXN5bmMgZnVuY3Rpb24gc3luY1ByZXBDaGVja3NGcm9tRGIocGVuZGluZ09yZGVycyl7CiAgY29uc3Qge2RhdGEsIGVycm9yfSA9IGF3YWl0IHNiLmZyb20oJ3ByZXBfY2hlY2tzJykuc2VsZWN0KCdzZXRfa2V5LGl0ZW1fa2V5Jyk7CiAgaWYoZXJyb3IpIHJldHVybjsgLy8gc2luIGNvbmV4acOzbiBvIHNpbiBwZXJtaXNvOiBzZSBzaWd1ZSBjb24gbG8gbG9jYWwKICBjb25zdCByZW1vdGUgPSB7fTsKICAoZGF0YXx8W10pLmZvckVhY2gocj0+eyAocmVtb3RlW3Iuc2V0X2tleV0gfHw9IG5ldyBTZXQoKSkuYWRkKHIuaXRlbV9rZXkpOyB9KTsKICBjb25zdCBwZW5kaW5nSWRzID0gbmV3IFNldCgocGVuZGluZ09yZGVyc3x8W10pLm1hcChvPT5vLmlkKSk7CiAgbGV0IG1pZ3JhdGVkID0gZmFsc2U7CiAgdHJ5IHsgbWlncmF0ZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnaXN0cmljZV9wcmVwX21pZ3JhdGVkJykgPT09ICcxJzsgfSBjYXRjaChlKXt9CiAgY29uc3Qgd2hvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlYWRlci11c2VyLW5hbWUnKT8udGV4dENvbnRlbnQgfHwgJ0FkbWluJzsKICBmb3IoY29uc3Qga2V5IG9mIHByZXBTZXRLZXlzKCkpewogICAgY29uc3Qgc2V0ID0gbmV3IFNldChyZW1vdGVba2V5XSB8fCBbXSk7CiAgICBpZighbWlncmF0ZWQpewogICAgICBjb25zdCB0b1VwbG9hZCA9IFsuLi5nZXRQcmVwU2V0KGtleSldLmZpbHRlcihrPT5wZW5kaW5nSWRzLmhhcyhrLnNwbGl0KCd8JylbMF0pICYmICFzZXQuaGFzKGspKTsKICAgICAgaWYodG9VcGxvYWQubGVuZ3RoKXsKICAgICAgICBhd2FpdCBzYi5mcm9tKCdwcmVwX2NoZWNrcycpLnVwc2VydCh0b1VwbG9hZC5tYXAoaz0+KHtzZXRfa2V5OmtleSwgaXRlbV9rZXk6aywgY2hlY2tlZF9ieTp3aG99KSkpOwogICAgICAgIHRvVXBsb2FkLmZvckVhY2goaz0+c2V0LmFkZChrKSk7CiAgICAgIH0KICAgIH0KICAgIHByZXBTeW5jZWRba2V5XSA9IG5ldyBTZXQoc2V0KTsKICAgIHNldFByZXBTZXQoa2V5LCBzZXQpOwogICAgdHJ5IHsgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeShbLi4uc2V0XSkpOyB9IGNhdGNoKGUpe30KICB9CiAgdHJ5IHsgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2lzdHJpY2VfcHJlcF9taWdyYXRlZCcsICcxJyk7IH0gY2F0Y2goZSl7fQogIHByZXBTeW5jUmVhZHkgPSB0cnVlOwp9CmxldCBsYXN0UHJpbnRTdW1tYXJ5Um93cyA9IFtdOwpsZXQgcHJpbnRTdW1tYXJ5Q2hlY2tlZCA9IGxvYWRDaGVja2VkU2V0KCdpc3RyaWNlX2ltcHJlc29fY2hlY2tlZCcpOwovLyBTb2JyYW50ZSBkZSBBNSBwZW5kaWVudGUgZGUgY29uZmlybWFyIChubyBwZXJzaXN0ZSBlbnRyZSByZWNhcmdhcyBhIHByb3DDs3NpdG86IGVzIHVuIGF2aXNvIHB1bnR1YWwKLy8ganVzdG8gYWwgbWFyY2FyIGNvbW8gaW1wcmVzYSB1bmEgbMOtbmVhIGRlIEE1IGNvbiBjYW50aWRhZCBpbXBhciDigJQgbG9zIEE1IHNpZW1wcmUgc2FsZW4gZGUgZG9zIGVuIGRvcwovLyBkZSBsYSBtaXNtYSBpbHVzdHJhY2nDs24gZW4gdW5hIGhvamEgQTQsIGFzw60gcXVlIHNvYnJhIDEgY2FkYSB2ZXogcXVlIHNlIGltcHJpbWUgdW4gbsO6bWVybyBpbXBhcikuCmxldCBhNVN1cnBsdXNQZW5kaW5nID0gbmV3IFNldCgpOwpsZXQgbGFzdExpYnJldGFzUGVuZGluZ1Jvd3MgPSBbXTsKbGV0IGxpYnJldGFzUGVuZGluZ0NoZWNrZWQgPSBsb2FkQ2hlY2tlZFNldCgnaXN0cmljZV9saWJyZXRhc19wcmVwYXJhZGFfY2hlY2tlZCcpOwpsZXQgcGFwZXJTdG9jayA9IHtBMzowLCBBNDowfTsKYXN5bmMgZnVuY3Rpb24gbG9hZFBhcGVyU3RvY2soKXsKICBjb25zdCB7ZGF0YX0gPSBhd2FpdCBzYi5mcm9tKCdzaXRlX3NldHRpbmdzJykuc2VsZWN0KCcqJykuaW4oJ2tleScsIFsncGFwZXJfc3RvY2tfQTMnLCdwYXBlcl9zdG9ja19BNCddKTsKICBwYXBlclN0b2NrID0ge0EzOjAsIEE0OjB9OwogIChkYXRhfHxbXSkuZm9yRWFjaChyb3c9PnsKICAgIGNvbnN0IGZtdCA9IHJvdy5rZXkucmVwbGFjZSgncGFwZXJfc3RvY2tfJywnJyk7CiAgICBwYXBlclN0b2NrW2ZtdF0gPSBwYXJzZUludChyb3cudmFsdWUsMTApfHwwOwogIH0pOwp9CmFzeW5jIGZ1bmN0aW9uIHNhdmVQYXBlclN0b2NrKGZvcm1hdCl7CiAgYXdhaXQgc2IuZnJvbSgnc2l0ZV9zZXR0aW5ncycpLnVwc2VydCh7a2V5OidwYXBlcl9zdG9ja18nK2Zvcm1hdCwgdmFsdWU6IFN0cmluZyhNYXRoLm1heCgwLCBwYXBlclN0b2NrW2Zvcm1hdF18fDApKX0sIHtvbkNvbmZsaWN0OidrZXknfSk7Cn0KbGV0IHBhcGVyTGFzdFNhdmVkID0gbnVsbDsKYXN5bmMgZnVuY3Rpb24gc2V0UGFwZXJTdG9ja1ZhbHVlKGZvcm1hdCwgdmFsdWUpewogIGNvbnN0IG4gPSBNYXRoLm1heCgwLCBwYXJzZUludCh2YWx1ZXx8JzAnLDEwKSB8fCAwKTsKICBjb25zdCBwcmV2UGFwZXIgPSBwYXBlclN0b2NrW2Zvcm1hdF0gfHwgMDsKICBwYXBlclN0b2NrW2Zvcm1hdF0gPSBuOwogIGF3YWl0IHNhdmVQYXBlclN0b2NrKGZvcm1hdCk7CiAgaWYocHJldlBhcGVyICE9PSBuKSBsb2dBY3Rpdml0eSgnc3RvY2snLCBgUGFwZWwgJHtmb3JtYXR9OiAke3ByZXZQYXBlcn0g4oaSICR7bn0gaG9qYXNgKTsKICBwYXBlckxhc3RTYXZlZCA9IGZvcm1hdDsKICByZW5kZXJQcmludFN1bW1hcnlUYWJsZSgpOwogIHNldFRpbWVvdXQoKCk9PnsgcGFwZXJMYXN0U2F2ZWQgPSBudWxsOyB9LCAxNTAwKTsKfQovLyBGb3JtYXRvcyBxdWUgdmFuIERPUyBQT1IgSE9KQSB5IHB1ZWRlbiBzZXIgZGUgbMOhbWluYXMgZGlzdGludGFzICgyMy8wOS8yMDI2LCBkZWNpc2nDs24gZGUgUmHDumwpOgovLyAxNHg0MiA9IG1lZGlhIEEzLCBBNSA9IG1lZGlvIEE0LiBMYSBhcHAgZGUgaW1wcmVzacOzbiBsb3MgbW9udGEgYSBzYW5ncmUgZGUgZG9zIGVuIGRvcywgYXPDrSBxdWUgZWwKLy8gcGFwZWwgbm8gc2UgY2FsY3VsYSBmaWxhIGEgZmlsYTogc2Ugc3VtYW4gdG9kYXMgbGFzIHVuaWRhZGVzIHkgc2UgcmVkb25kZWEgVU5BIHNvbGEgdmV6LiBTaSBzYWxlCi8vIGltcGFyLCBsYSDDumx0aW1hIHNlIGltcHJpbWUgZG9zIHZlY2VzIHkgbGEgZGUgbcOhcyB2YSBhbCBzdG9jayAobnVuY2EgcXVlZGEgbWVkaWEgaG9qYSBsaWJyZSkuCmNvbnN0IFBBUkVTID0geycxNHg0Mic6ICdBMycsICdBNSc6ICdBNCd9Owpjb25zdCBYNDJfUE9SX0hPSkEgPSAyOwpsZXQgcGFyZXNDaGFyZ2VkID0geycxNHg0Mic6IDAsICdBNSc6IDB9OyAgLy8gaG9qYXMgeWEgZGVzY29udGFkYXMgcG9yIGxvIG1hcmNhZG8gY29tbyBpbXByZXNvCmxldCBwYXJlc0luaXQgPSBmYWxzZTsgICAgICAgICAgICAgICAgICAgICAgLy8gYWwgcmVjYXJnYXIsIGxvIHlhIG1hcmNhZG8gdmllbmUgZGUgYW50ZXM6IG5vIHNlIHZ1ZWx2ZSBhIGNvYnJhcgpmdW5jdGlvbiBwYXJlc1VuaXRzQ2hlY2tlZChmbXQpewogIHJldHVybiAobGFzdFByaW50U3VtbWFyeVJvd3N8fFtdKS5yZWR1Y2UoKG4scik9PgogICAgKHIuZm9ybWF0PT09Zm10ICYmIHByaW50U3VtbWFyeUNoZWNrZWQuaGFzKHIua2V5KSkgPyBuICsgTWF0aC5tYXgoMCwgci5xdHkgLSByLnN0b2NrUXR5KSA6IG4sIDApOwp9CmZ1bmN0aW9uIHg0MlVuaXRzQ2hlY2tlZCgpeyByZXR1cm4gcGFyZXNVbml0c0NoZWNrZWQoJzE0eDQyJyk7IH0KYXN5bmMgZnVuY3Rpb24gYWp1c3RhUGFwZWxQYXJlcyhvcHRzPXt9KXsKICBmb3IoY29uc3QgW2ZtdCwgcGFwZWxdIG9mIE9iamVjdC5lbnRyaWVzKFBBUkVTKSl7CiAgICBjb25zdCBuZWNlc2l0YSA9IE1hdGguY2VpbChwYXJlc1VuaXRzQ2hlY2tlZChmbXQpIC8gMik7CiAgICAvLyAyOS8wOS8yMDI2OiBzaSBiYWphIHBvcnF1ZSBlbCBwZWRpZG8geWEgbm8gZXN0w6EgZW4gbGEgbGlzdGEgKGVudmlhZG8sIGNhbmNlbGFkbyBvIGJvcnJhZG8pLCBlc2UKICAgIC8vIHBhcGVsIHlhIHNlIGdhc3TDsyBhbCBpbXByaW1pcjogbm8gc2UgZGV2dWVsdmUuIFNvbG8gc2UgZGV2dWVsdmUgc2kgc2UgZGVzbWFyY2EgYSBtYW5vLgogICAgaWYob3B0cy5zaW5EZXZvbHZlciAmJiBuZWNlc2l0YSA8IHBhcmVzQ2hhcmdlZFtmbXRdKXsgcGFyZXNDaGFyZ2VkW2ZtdF0gPSBuZWNlc2l0YTsgY29udGludWU7IH0KICAgIGNvbnN0IGRpc3BvbmlibGUgPSBwYXBlclN0b2NrW3BhcGVsXSB8fCAwOwogICAgY29uc3QgY29icmFyID0gTWF0aC5taW4obmVjZXNpdGEsIHBhcmVzQ2hhcmdlZFtmbXRdICsgZGlzcG9uaWJsZSk7IC8vIG5vIHNlIGRlc2N1ZW50YSBwYXBlbCBxdWUgbm8gaGF5CiAgICBpZihjb2JyYXIgPT09IHBhcmVzQ2hhcmdlZFtmbXRdKSBjb250aW51ZTsKICAgIHBhcGVyU3RvY2tbcGFwZWxdID0gZGlzcG9uaWJsZSAtIChjb2JyYXIgLSBwYXJlc0NoYXJnZWRbZm10XSk7CiAgICBwYXJlc0NoYXJnZWRbZm10XSA9IGNvYnJhcjsKICAgIGF3YWl0IHNhdmVQYXBlclN0b2NrKHBhcGVsKTsKICB9Cn0KLy8gTGEgY29waWEgZGUgbcOhcyBjdWFuZG8gdW4gZm9ybWF0byBkZSBwYXJlcyBzYWxlIGltcGFyOiBlcyBsYSDDmkxUSU1BIGzDoW1pbmEgZGUgZXNlIGZvcm1hdG8gZW4gZWwKLy8gb3JkZW4gZGUgbGEgbGlzdGEgKG1pc21vIGNyaXRlcmlvIHF1ZSBsYSBhcHAgZGUgaW1wcmVzacOzbiwgcXVlIHJlY2liZSBsYSBsaXN0YSBlbiBlc3RlIG9yZGVuKS4KZnVuY3Rpb24gc29icmFudGVzUGFyZXMocm93cyl7CiAgY29uc3Qgb3V0ID0gW107CiAgZm9yKGNvbnN0IGZtdCBvZiBPYmplY3Qua2V5cyhQQVJFUykpewogICAgY29uc3Qgb3JkZW4gPSBbXTsgY29uc3QgdW5pZGFkZXMgPSB7fTsKICAgIHJvd3MuZm9yRWFjaChyPT57IGlmKHIuZm9ybWF0IT09Zm10KSByZXR1cm47IGNvbnN0IG4gPSBNYXRoLm1heCgwLCByLnF0eSAtIHIuc3RvY2tRdHkpOyBpZihuPD0wKSByZXR1cm47CiAgICAgIGlmKCEoci5yZWYgaW4gdW5pZGFkZXMpKXsgb3JkZW4ucHVzaChyKTsgdW5pZGFkZXNbci5yZWZdID0gMDsgfSB1bmlkYWRlc1tyLnJlZl0gKz0gbjsgfSk7CiAgICBjb25zdCB0b3RhbCA9IE9iamVjdC52YWx1ZXModW5pZGFkZXMpLnJlZHVjZSgoYSxiKT0+YStiLCAwKTsKICAgIGlmKHRvdGFsICUgMiA9PT0gMSl7IGNvbnN0IHUgPSBvcmRlbltvcmRlbi5sZW5ndGgtMV07CiAgICAgIG91dC5wdXNoKHtmbXQsIHJlZjogdS5yZWYsIG5hbWU6IHUubmFtZSwgaWxsdXN0cmF0aW9uX2lkOiB1LmlsbHVzdHJhdGlvbl9pZCwgZmlybWE6IGZtdCsnfCcrb3JkZW4ubWFwKHg9PngucmVmKyc6Jyt1bmlkYWRlc1t4LnJlZl0pLmpvaW4oJywnKX0pOyB9CiAgfQogIHJldHVybiBvdXQ7Cn0KZnVuY3Rpb24gc29icmFudGVZYUFuYWRpZG8oZmlybWEpeyB0cnkgeyByZXR1cm4gKEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2lzdHJpY2Vfc29icmFudGVzX2FuYWRpZG9zJyl8fCdbXScpKS5pbmNsdWRlcyhmaXJtYSk7IH0gY2F0Y2goZSl7IHJldHVybiBmYWxzZTsgfSB9CmFzeW5jIGZ1bmN0aW9uIGFuYWRpclNvYnJhbnRlKGZtdCl7CiAgY29uc3QgcyA9IHNvYnJhbnRlc1BhcmVzKGxhc3RQcmludFN1bW1hcnlSb3dzKS5maW5kKHg9PnguZm10PT09Zm10KTsKICBpZighcyB8fCBzb2JyYW50ZVlhQW5hZGlkbyhzLmZpcm1hKSkgcmV0dXJuOwogIGNvbnN0IGV4aXN0aW5nID0gc3RvY2tEYXRhQ2FjaGUuc3RvY2suZmluZCh4PT54LmlsbHVzdHJhdGlvbl9pZD09PXMuaWxsdXN0cmF0aW9uX2lkICYmIHguZm9ybWF0PT09Zm10KTsKICBjb25zdCBuZXh0ID0gKGV4aXN0aW5nP2V4aXN0aW5nLnByaW50ZWRfcXR5OjApICsgMTsKICBhd2FpdCBzZXRTdG9jayhzLmlsbHVzdHJhdGlvbl9pZCwgZm10LCBuZXh0KTsKICB0cnkgeyBjb25zdCBsID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnaXN0cmljZV9zb2JyYW50ZXNfYW5hZGlkb3MnKXx8J1tdJyk7IGwucHVzaChzLmZpcm1hKTsgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2lzdHJpY2Vfc29icmFudGVzX2FuYWRpZG9zJywgSlNPTi5zdHJpbmdpZnkobC5zbGljZSgtNTApKSk7IH0gY2F0Y2goZSl7fQogIHN0b2NrVG9hc3QoYEHDsWFkaWRvOiArMSAke2ZtdH0gZGUgJHtzLnJlZn0gKGNvcGlhIGRlIG3DoXMpLiBUb3RhbCBhaG9yYTogJHtuZXh0fS5gKTsKICByZW5kZXJQcmludFN1bW1hcnlUYWJsZSgpOwp9Ci8vIEFicmUgbGEgYXBwIGRlIGltcHJlc2nDs24gZGVsIE1hYyBjb24gbG8gcXVlIGZhbHRhIHBvciBpbXByaW1pciAoc2luIG1hcmNhciksIGVuIGVsIG9yZGVuIGRlIGxhIGxpc3RhLgpmdW5jdGlvbiBlbnZpYXJBQXBwSW1wcmVzaW9uKCl7CiAgY29uc3QganVudGFzID0gW107CiAgY29uc3QgaWR4ID0ge307CiAgKGxhc3RQcmludFN1bW1hcnlSb3dzfHxbXSkuZm9yRWFjaChyPT57CiAgICBpZihwcmludFN1bW1hcnlDaGVja2VkLmhhcyhyLmtleSkpIHJldHVybjsKICAgIGNvbnN0IG4gPSBNYXRoLm1heCgwLCByLnF0eSAtIHIuc3RvY2tRdHkpOyBpZihuPD0wKSByZXR1cm47CiAgICBjb25zdCBrID0gci5yZWYrJ3wnK3IuZm9ybWF0OwogICAgaWYoayBpbiBpZHgpIGp1bnRhc1tpZHhba11dLmltcHJpbWlyICs9IG47CiAgICBlbHNlIHsgaWR4W2tdID0ganVudGFzLmxlbmd0aDsganVudGFzLnB1c2goe3JlZjpyLnJlZiwgbm9tYnJlOnIubmFtZSwgZm9ybWF0bzpyLmZvcm1hdCwgaW1wcmltaXI6bn0pOyB9CiAgfSk7CiAgaWYoIWp1bnRhcy5sZW5ndGgpeyBhbGVydCgnTm8gaGF5IG5hZGEgcGVuZGllbnRlIGRlIGltcHJpbWlyLicpOyByZXR1cm47IH0KICB3aW5kb3cub3BlbignaHR0cDovLzEyNy4wLjAuMTo4NzkwLyNsaXN0YT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGp1bnRhcykpLCAnaXN0cmljZS1pbXByZXNpb24nKTsKfQpmdW5jdGlvbiBzaGVldHNGb3JSb3cocil7CiAgY29uc3QgdG9QcmludCA9IE1hdGgubWF4KDAsIHIucXR5IC0gci5zdG9ja1F0eSk7CiAgaWYodG9QcmludDw9MCkgcmV0dXJuIHtmb3JtYXQ6bnVsbCwgc2hlZXRzOjB9OwogIGlmKFBBUkVTW3IuZm9ybWF0XSkgcmV0dXJuIHtmb3JtYXQ6bnVsbCwgc2hlZXRzOjB9OyAgLy8gMTR4NDIgeSBBNTogbG9zIGxsZXZhIGFqdXN0YVBhcGVsUGFyZXMoKSwgZW4gYmxvcXVlCiAgaWYoci5mb3JtYXQ9PT0nQTMnKSByZXR1cm4ge2Zvcm1hdDonQTMnLCBzaGVldHM6IHRvUHJpbnR9OwogIGlmKHIuZm9ybWF0PT09J0E0JykgcmV0dXJuIHtmb3JtYXQ6J0E0Jywgc2hlZXRzOiB0b1ByaW50fTsKICByZXR1cm4ge2Zvcm1hdDpudWxsLCBzaGVldHM6MH07Cn0KZnVuY3Rpb24gcmVuZGVyUHJpbnRTdW1tYXJ5KG9yZGVycywgc3RvY2spewogIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbWluLXByaW50LXN1bW1hcnknKTsKICBpZighZWwpIHJldHVybjsKICAvLyBVbmEgZmlsYSBwb3IgcGVkaWRvIChubyBzZSBhY3VtdWxhbiB2YXJpYXMgdGllbmRhcyBlbiB1bmEgc29sYSBmaWxhKTogYXPDrSBwdWVkZXMgbWFyY2FyCiAgLy8gY29tbyBpbXByZXNhIGxhIGRlIHVuYSB0aWVuZGEgc2luIHF1ZSBzZSBtYXJxdWUgdGFtYmnDqW4gbGEgZGUgb3RyYSBxdWUgcGlkacOzIGxvIG1pc21vLAogIC8vIHkgdGVybWluYXIgdW4gcGVkaWRvIGFudGVzIHF1ZSBvdHJvLgogIGNvbnN0IHBlbmRpbmcgPSBvcmRlcnMuZmlsdGVyKG89Pk9QRU5fU1RBVFVTRVMuaW5jbHVkZXMoby5zdGF0dXMpKTsKICBjb25zdCByb3dzID0gW107CiAgcGVuZGluZy5mb3JFYWNoKG89PnsKICAgIChvLm9yZGVyX2l0ZW1zfHxbXSkuZmlsdGVyKGl0PT4oaXQuaWxsdXN0cmF0aW9ucz8ucHJvZHVjdF90eXBlfHwnbGFtaW5hJyk9PT0nbGFtaW5hJykuZm9yRWFjaChpdD0+ewogICAgICByb3dzLnB1c2goewogICAgICAgIGtleTogby5pZCsnfCcraXQuaWxsdXN0cmF0aW9uX2lkKyd8JytpdC5mb3JtYXQsCiAgICAgICAgaWxsdXN0cmF0aW9uX2lkOiBpdC5pbGx1c3RyYXRpb25faWQsCiAgICAgICAgcmVmOiBpdC5pbGx1c3RyYXRpb25zPy5yZWZ8fCcnLAogICAgICAgIG5hbWU6IGl0LmlsbHVzdHJhdGlvbnM\/Lm5hbWV8fCcnLAogICAgICAgIGZvcm1hdDogaXQuZm9ybWF0LAogICAgICAgIHF0eTogaXQucXVhbnRpdHksCiAgICAgICAgdGllbmRhOiBvLmNoYW5uZWxzPy5uYW1lIHx8IG8uY3VzdG9tZXJfbmFtZSB8fCAn4oCUJwogICAgICB9KTsKICAgIH0pOwogIH0pOwogIHJvd3Muc29ydCgoYSxiKT0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSwgJ2VzJywge3NlbnNpdGl2aXR5OidiYXNlJywgbnVtZXJpYzp0cnVlfSkgfHwgYS50aWVuZGEubG9jYWxlQ29tcGFyZShiLnRpZW5kYSkpOwogIC8vIEVsIHN0b2NrIHlhIGltcHJlc28gZXMgZsOtc2ljbyB5IGNvbXBhcnRpZG86IHNpIGRvcyBwZWRpZG9zIHBpZGVuIGxhIG1pc21hIHJlZmVyZW5jaWEvZm9ybWF0bywKICAvLyBzZSByZXBhcnRlIGVudHJlIHN1cyBmaWxhcyBlbiBvcmRlbiAoc2luIGNvbnRhciBlbCBtaXNtbyBzdG9jayBkb3MgdmVjZXMpLgogIGNvbnN0IHJlbWFpbmluZ1N0b2NrID0ge307CiAgKHN0b2NrfHxbXSkuZm9yRWFjaChzPT57IHJlbWFpbmluZ1N0b2NrW3MuaWxsdXN0cmF0aW9uX2lkKyd8JytzLmZvcm1hdF0gPSBzLnByaW50ZWRfcXR5OyB9KTsKICByb3dzLmZvckVhY2gocj0+ewogICAgY29uc3Qgc2sgPSByLmlsbHVzdHJhdGlvbl9pZCsnfCcrci5mb3JtYXQ7CiAgICBjb25zdCBhdmFpbCA9IHJlbWFpbmluZ1N0b2NrW3NrXXx8MDsKICAgIGNvbnN0IHVzZWQgPSBNYXRoLm1pbihhdmFpbCwgci5xdHkpOwogICAgci5zdG9ja1F0eSA9IHVzZWQ7CiAgICByZW1haW5pbmdTdG9ja1tza10gPSBhdmFpbCAtIHVzZWQ7CiAgfSk7CiAgbGFzdFByaW50U3VtbWFyeVJvd3MgPSByb3dzOwogIC8vIGRyb3AgY2hlY2tlZC1zdGF0ZSBmb3Igcm93cyB0aGF0IG5vIGxvbmdlciBleGlzdCAoZS5nLiBvcmRlciBnb3QgY2FuY2VsbGVkL3ByaW50ZWQgZWxzZXdoZXJlKQogIGNvbnN0IHZhbGlkS2V5cyA9IG5ldyBTZXQocm93cy5tYXAocj0+ci5rZXkpKTsKICBbLi4ucHJpbnRTdW1tYXJ5Q2hlY2tlZF0uZm9yRWFjaChrPT57IGlmKCF2YWxpZEtleXMuaGFzKGspKSBwcmludFN1bW1hcnlDaGVja2VkLmRlbGV0ZShrKTsgfSk7CiAgWy4uLmE1U3VycGx1c1BlbmRpbmddLmZvckVhY2goaz0+eyBpZighdmFsaWRLZXlzLmhhcyhrKSkgYTVTdXJwbHVzUGVuZGluZy5kZWxldGUoayk7IH0pOwogIGlmKCFwYXJlc0luaXQpeyBmb3IoY29uc3QgZiBvZiBPYmplY3Qua2V5cyhQQVJFUykpIHBhcmVzQ2hhcmdlZFtmXSA9IE1hdGguY2VpbChwYXJlc1VuaXRzQ2hlY2tlZChmKS8yKTsgcGFyZXNJbml0ID0gdHJ1ZTsgfQogIGVsc2UgYWp1c3RhUGFwZWxQYXJlcyh7c2luRGV2b2x2ZXI6dHJ1ZX0pOwogIHNhdmVDaGVja2VkU2V0KCdpc3RyaWNlX2ltcHJlc29fY2hlY2tlZCcsIHByaW50U3VtbWFyeUNoZWNrZWQpOwogIHJlbmRlclByaW50U3VtbWFyeVRhYmxlKCk7Cn0KZnVuY3Rpb24gcmVuZGVyTGlicmV0YXNQZW5kaW5nU3VtbWFyeShvcmRlcnMpewogIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbWluLWxpYnJldGFzLXN1bW1hcnknKTsKICBpZighZWwpIHJldHVybjsKICAvLyBJZ3VhbCBxdWUgZW4gbMOhbWluYXM6IHVuYSBmaWxhIHBvciBwZWRpZG8sIG5vIGFjdW11bGFkbyBwb3IgdGllbmRhLgogIGNvbnN0IHBlbmRpbmcgPSAob3JkZXJzfHxbXSkuZmlsdGVyKG89Pk9QRU5fU1RBVFVTRVMuaW5jbHVkZXMoby5zdGF0dXMpKTsKICBjb25zdCByb3dzID0gW107CiAgcGVuZGluZy5mb3JFYWNoKG89PnsKICAgIChvLm9yZGVyX2l0ZW1zfHxbXSkuZmlsdGVyKGl0PT5pdC5pbGx1c3RyYXRpb25zPy5wcm9kdWN0X3R5cGU9PT0nbGlicmV0YScpLmZvckVhY2goaXQ9PnsKICAgICAgcm93cy5wdXNoKHsKICAgICAgICBrZXk6IG8uaWQrJ3wnK2l0LmlsbHVzdHJhdGlvbl9pZCwKICAgICAgICBpbGx1c3RyYXRpb25faWQ6IGl0LmlsbHVzdHJhdGlvbl9pZCwKICAgICAgICByZWY6IGl0LmlsbHVzdHJhdGlvbnM\/LnJlZnx8JycsCiAgICAgICAgbmFtZTogaXQuaWxsdXN0cmF0aW9ucz8ubmFtZXx8JycsCiAgICAgICAgcXR5OiBpdC5xdWFudGl0eSwKICAgICAgICB0aWVuZGE6IG8uY2hhbm5lbHM\/Lm5hbWUgfHwgby5jdXN0b21lcl9uYW1lIHx8ICfigJQnCiAgICAgIH0pOwogICAgfSk7CiAgfSk7CiAgcm93cy5zb3J0KChhLGIpPT5hLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUsICdlcycsIHtzZW5zaXRpdml0eTonYmFzZScsIG51bWVyaWM6dHJ1ZX0pIHx8IGEudGllbmRhLmxvY2FsZUNvbXBhcmUoYi50aWVuZGEpKTsKICBsYXN0TGlicmV0YXNQZW5kaW5nUm93cyA9IHJvd3M7CiAgY29uc3QgdmFsaWRLZXlzID0gbmV3IFNldChyb3dzLm1hcChyPT5yLmtleSkpOwogIFsuLi5saWJyZXRhc1BlbmRpbmdDaGVja2VkXS5mb3JFYWNoKGs9PnsgaWYoIXZhbGlkS2V5cy5oYXMoaykpIGxpYnJldGFzUGVuZGluZ0NoZWNrZWQuZGVsZXRlKGspOyB9KTsKICBzYXZlQ2hlY2tlZFNldCgnaXN0cmljZV9saWJyZXRhc19wcmVwYXJhZGFfY2hlY2tlZCcsIGxpYnJldGFzUGVuZGluZ0NoZWNrZWQpOwogIHJlbmRlckxpYnJldGFzUGVuZGluZ1RhYmxlKCk7Cn0KZnVuY3Rpb24gcmVuZGVyTGlicmV0YXNQZW5kaW5nVGFibGUoKXsKICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1pbi1saWJyZXRhcy1zdW1tYXJ5Jyk7CiAgaWYoIWVsKSByZXR1cm47CiAgY29uc3Qgcm93cyA9IGxhc3RMaWJyZXRhc1BlbmRpbmdSb3dzOwogIGNvbnN0IGRvbmVDb3VudCA9IHJvd3MuZmlsdGVyKHI9PmxpYnJldGFzUGVuZGluZ0NoZWNrZWQuaGFzKHIua2V5KSkubGVuZ3RoOwogIGNvbnN0IHVUb3RhbCA9IHJvd3MucmVkdWNlKChuLHIpPT5uK3IucXR5LCAwKTsKICBjb25zdCB1SGVjaGFzID0gcm93cy5yZWR1Y2UoKG4scik9PmxpYnJldGFzUGVuZGluZ0NoZWNrZWQuaGFzKHIua2V5KSA\/IG4rci5xdHkgOiBuLCAwKTsKICBjb25zdCBzdW1FbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwZWRjYXJkLXN1bW1hcnktbGlicmV0YXMnKTsKICBpZihzdW1FbCkgc3VtRWwudGV4dENvbnRlbnQgPSByb3dzLmxlbmd0aCA\/IGBQcmVwYXJhZGFzICR7dUhlY2hhc30gZGUgJHt1VG90YWx9IMK3IGZhbHRhbiAke3VUb3RhbC11SGVjaGFzfWAgOiAnbmFkYSBwZW5kaWVudGUnOwogIGlmKCFyb3dzLmxlbmd0aCl7IGVsLmlubmVySFRNTD0nPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXN1YXZlKTsiPk5vIGhheSBsaWJyZXRhcyBwZW5kaWVudGVzIGRlIGVudmlhci48L3A+JzsgcmV0dXJuOyB9CiAgY29uc3QgYWN0aW9ucyA9IGA8ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjhweDtkaXNwbGF5OmZsZXg7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDsiPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gc2Vjb25kYXJ5IHNtYWxsIiBvbmNsaWNrPSJtYXJrQWxsTGlicmV0YXNQZW5kaW5nKHRydWUpIj5NYXJjYXIgdG9kbzwvYnV0dG9uPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gc2Vjb25kYXJ5IHNtYWxsIiBvbmNsaWNrPSJtYXJrQWxsTGlicmV0YXNQZW5kaW5nKGZhbHNlKSI+RGVzbWFyY2FyIHRvZG88L2J1dHRvbj4KICA8L2Rpdj5gOwogIGNvbnN0IHByb2dyZXNzID0gYDxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW4tYm90dG9tOjhweDsiPk1vZGVsb3M6ICR7ZG9uZUNvdW50fSBkZSAke3Jvd3MubGVuZ3RofSDCtyBBIHByZXBhcmFyOiAke3VUb3RhbH0gwrcgPHN0cm9uZz5QcmVwYXJhZGFzOiAke3VIZWNoYXN9PC9zdHJvbmc+IMK3IEZhbHRhbjogJHt1VG90YWwtdUhlY2hhc308L2Rpdj5gOwogIGNvbnN0IGJvZHkgPSByb3dzLm1hcChyPT57CiAgICBjb25zdCBjaGVja2VkID0gbGlicmV0YXNQZW5kaW5nQ2hlY2tlZC5oYXMoci5rZXkpOwogICAgcmV0dXJuIGA8dHIgc3R5bGU9IiR7Y2hlY2tlZD8nb3BhY2l0eTouNDU7JzonJ30iPgogICAgICA8dGQ+JHtjaGVja2VkPyc8c3BhbiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaDsiPicrci5yZWYrJyDigJQgJytyLm5hbWUrJzwvc3Bhbj4nOnIucmVmKycg4oCUICcrci5uYW1lfTwvdGQ+CiAgICAgIDx0ZD48c3Ryb25nPiR7ci5xdHl9PC9zdHJvbmc+PC90ZD4KICAgICAgPHRkIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij4ke2VzY2FwZUF0dHIoci50aWVuZGEpfTwvdGQ+CiAgICAgIDx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giICR7Y2hlY2tlZD8nY2hlY2tlZCc6Jyd9IG9uY2hhbmdlPSJ0b2dnbGVMaWJyZXRhUGVuZGluZ0NoZWNrZWQoJyR7ci5rZXl9JykiIHN0eWxlPSJ3aWR0aDoxOHB4O2hlaWdodDoxOHB4O2N1cnNvcjpwb2ludGVyOyI+PC90ZD4KICAgIDwvdHI+YDsKICB9KS5qb2luKCcnKTsKICBlbC5pbm5lckhUTUwgPSBgPGRpdiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1jcmVtYS0yKTtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjEwcHggMTJweDsiPgogICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW4tdG9wOjA7Ij5BbCBtYXJjYXIgZWwgcGVkaWRvIGNvbW8gImVudmlhZG8iIGVuIFBlZGlkb3MgcGVuZGllbnRlcywgc2UgZGVzY3VlbnRhIHNvbG8gZGUgdHUgc3RvY2sgYXV0b23DoXRpY2FtZW50ZS4gVXNhIGVsIGNoZWNrIHBhcmEgaXIgbWFyY2FuZG8gbGFzIHF1ZSB5YSB0aWVuZXMgcHJlcGFyYWRhcy48L3A+CiAgICAke2FjdGlvbnN9JHtwcm9ncmVzc30KICAgIDxkaXYgc3R5bGU9Im92ZXJmbG93LXg6YXV0bzsiPjx0YWJsZT48dGhlYWQ+PHRyPjx0aD5MaWJyZXRhPC90aD48dGg+Q2FudGlkYWQ8L3RoPjx0aD5QYXJhPC90aD48dGg+UHJlcGFyYWRhPC90aD48L3RyPjwvdGhlYWQ+PHRib2R5PiR7Ym9keX08L3Rib2R5PjwvdGFibGU+PC9kaXY+CiAgPC9kaXY+YDsKfQpmdW5jdGlvbiB0b2dnbGVMaWJyZXRhUGVuZGluZ0NoZWNrZWQoa2V5KXsKICBpZihsaWJyZXRhc1BlbmRpbmdDaGVja2VkLmhhcyhrZXkpKSBsaWJyZXRhc1BlbmRpbmdDaGVja2VkLmRlbGV0ZShrZXkpOwogIGVsc2UgbGlicmV0YXNQZW5kaW5nQ2hlY2tlZC5hZGQoa2V5KTsKICBzYXZlQ2hlY2tlZFNldCgnaXN0cmljZV9saWJyZXRhc19wcmVwYXJhZGFfY2hlY2tlZCcsIGxpYnJldGFzUGVuZGluZ0NoZWNrZWQpOwogIHJlbmRlckxpYnJldGFzUGVuZGluZ1RhYmxlKCk7CiAgcmVuZGVyQWRtaW5PcmRlcnMoYWRtaW5PcmRlcnNMaXN0KTsgLy8gcmVmbGVqYSBhbCBtb21lbnRvIGVsIOKchSAibGlzdG8gcGFyYSBlbnZpYXIiIGRlIHN1IHRpZW5kYQp9CmZ1bmN0aW9uIG1hcmtBbGxMaWJyZXRhc1BlbmRpbmcoY2hlY2tlZCl7CiAgaWYoY2hlY2tlZCkgbGFzdExpYnJldGFzUGVuZGluZ1Jvd3MuZm9yRWFjaChyPT5saWJyZXRhc1BlbmRpbmdDaGVja2VkLmFkZChyLmtleSkpOwogIGVsc2UgbGlicmV0YXNQZW5kaW5nQ2hlY2tlZC5jbGVhcigpOwogIHNhdmVDaGVja2VkU2V0KCdpc3RyaWNlX2xpYnJldGFzX3ByZXBhcmFkYV9jaGVja2VkJywgbGlicmV0YXNQZW5kaW5nQ2hlY2tlZCk7CiAgcmVuZGVyTGlicmV0YXNQZW5kaW5nVGFibGUoKTsKICByZW5kZXJBZG1pbk9yZGVycyhhZG1pbk9yZGVyc0xpc3QpOwp9Ci8vIC0tLS0tLS0tLS0gTUlTTU8gUEFORUwgREUgIlBFTkRJRU5URVMiIFFVRSBMSUJSRVRBUywgUEVSTyBQQVJBIENVQUxRVUlFUiBUSVBPIEVYVFJBCi8vIChwZWdhdGluYXMsIGVqZW1wbG8sIHkgbG9zIHF1ZSBzZSBhw7FhZGFuKSDigJQgYW50ZXMgZXN0b3MgdGlwb3Mgbm8gdGVuw61hbiB0YXJqZXRhIHByb3BpYSBlbgovLyAiUGVkaWRvcyIgeSBwb3IgZXNvIG51bmNhIGJsb3F1ZWFiYW4gZWwg4pyFICJsaXN0byBwYXJhIGVudmlhciIgZGUgdW5hIHRpZW5kYS4KbGV0IGxhc3RFeHRyYVBlbmRpbmdSb3dzID0ge307IC8vIHt0eXBlOiByb3dzfQpsZXQgZXh0cmFQZW5kaW5nQ2hlY2tlZCA9IHt9OyAvLyB7dHlwZTogU2V0fQpFWFRSQV9TVE9DS19UWVBFUy5mb3JFYWNoKHQ9PnsgZXh0cmFQZW5kaW5nQ2hlY2tlZFt0LmtleV0gPSBsb2FkQ2hlY2tlZFNldCgnaXN0cmljZV9leHRyYV9wcmVwYXJhZGFfY2hlY2tlZF8nK3Qua2V5KTsgfSk7Ci8vIEdlbmVyYSwgZW4gbGEgY29sdW1uYSBkZXJlY2hhIGRlICJQZWRpZG9zIiwgdW5hIHRhcmpldGEgcGxlZ2FibGUgcG9yIGNhZGEgdGlwbyBleHRyYSBhY3Rpdm8KLy8gKG1pc21hIHRhcmpldGEgcXVlIExpYnJldGFzKSDigJQgYXPDrSB1biB0aXBvIG51ZXZvIHF1ZSBzZSBhw7FhZGEgYSBFWFRSQV9TVE9DS19UWVBFUyBhcGFyZWNlIGFxdcOtCi8vIGF1dG9tw6F0aWNhbWVudGUsIHNpbiB0b2NhciBlc3RlIGFyY2hpdm8gb3RyYSB2ZXouCmZ1bmN0aW9uIGJ1aWxkQWRtaW5FeHRyYVBlZGNhcmRzKCl7CiAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1pbi1leHRyYS1wZWRjYXJkcycpOwogIGlmKCF3cmFwKSByZXR1cm47CiAgd3JhcC5pbm5lckhUTUwgPSBleHRyYVR5cGVzU2hvd24oKS5tYXAodD0+YAogICAgPGRpdiBjbGFzcz0icGVkY2FyZCIgaWQ9InBlZGNhcmQtZXh0cmEtJHt0LmtleX0iPgogICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InBlZGNhcmQtaGVhZGVyIiBvbmNsaWNrPSJ0b2dnbGVQZWRjYXJkKCdleHRyYS0ke3Qua2V5fScpIj4KICAgICAgICA8c3BhbiBjbGFzcz0icGVkY2FyZC10aXRsZSI+JHt0LmxhYmVsfSBwZW5kaWVudGVzPC9zcGFuPgogICAgICAgIDxzcGFuIHN0eWxlPSJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4OyI+CiAgICAgICAgICA8c3BhbiBpZD0icGVkY2FyZC1zdW1tYXJ5LWV4dHJhLSR7dC5rZXl9IiBjbGFzcz0icGVkY2FyZC1zdW1tYXJ5Ij48L3NwYW4+CiAgICAgICAgICA8c3BhbiBpZD0icGVkY2FyZC1jYXJldC1leHRyYS0ke3Qua2V5fSIgY2xhc3M9InBlZGNhcmQtY2FyZXQiPuKWuCB2ZXI8L3NwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L2J1dHRvbj4KICAgICAgPGRpdiBpZD0icGVkY2FyZC1ib2R5LWV4dHJhLSR7dC5rZXl9IiBjbGFzcz0icGVkY2FyZC1ib2R5IGhpZGRlbiI+CiAgICAgICAgPGRpdiBpZD0iYWRtaW4tZXh0cmEtcGVuZGluZy0ke3Qua2V5fSI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+YCkuam9pbignJyk7Cn0KZnVuY3Rpb24gcmVuZGVyRXh0cmFQZW5kaW5nU3VtbWFyeSh0eXBlLCBvcmRlcnMpewogIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbWluLWV4dHJhLXBlbmRpbmctJyt0eXBlKTsKICBpZighZWwpIHJldHVybjsKICAvLyBJZ3VhbCBxdWUgZW4gbGlicmV0YXM6IHVuYSBmaWxhIHBvciBwZWRpZG8sIG5vIGFjdW11bGFkbyBwb3IgdGllbmRhLgogIGNvbnN0IHBlbmRpbmcgPSAob3JkZXJzfHxbXSkuZmlsdGVyKG89Pk9QRU5fU1RBVFVTRVMuaW5jbHVkZXMoby5zdGF0dXMpKTsKICBjb25zdCByb3dzID0gW107CiAgcGVuZGluZy5mb3JFYWNoKG89PnsKICAgIChvLm9yZGVyX2l0ZW1zfHxbXSkuZmlsdGVyKGl0PT5pdC5pbGx1c3RyYXRpb25zPy5wcm9kdWN0X3R5cGU9PT10eXBlKS5mb3JFYWNoKGl0PT57CiAgICAgIHJvd3MucHVzaCh7CiAgICAgICAga2V5OiBvLmlkKyd8JytpdC5pbGx1c3RyYXRpb25faWQsCiAgICAgICAgaWxsdXN0cmF0aW9uX2lkOiBpdC5pbGx1c3RyYXRpb25faWQsCiAgICAgICAgcmVmOiBpdC5pbGx1c3RyYXRpb25zPy5yZWZ8fCcnLAogICAgICAgIG5hbWU6IGl0LmlsbHVzdHJhdGlvbnM\/Lm5hbWV8fCcnLAogICAgICAgIHF0eTogaXQucXVhbnRpdHksCiAgICAgICAgdGllbmRhOiBvLmNoYW5uZWxzPy5uYW1lIHx8IG8uY3VzdG9tZXJfbmFtZSB8fCAn4oCUJwogICAgICB9KTsKICAgIH0pOwogIH0pOwogIHJvd3Muc29ydCgoYSxiKT0+YS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lLCAnZXMnLCB7c2Vuc2l0aXZpdHk6J2Jhc2UnLCBudW1lcmljOnRydWV9KSB8fCBhLnRpZW5kYS5sb2NhbGVDb21wYXJlKGIudGllbmRhKSk7CiAgbGFzdEV4dHJhUGVuZGluZ1Jvd3NbdHlwZV0gPSByb3dzOwogIGNvbnN0IGNoZWNrZWRTZXQgPSBleHRyYVBlbmRpbmdDaGVja2VkW3R5cGVdIHx8IChleHRyYVBlbmRpbmdDaGVja2VkW3R5cGVdID0gbmV3IFNldCgpKTsKICBjb25zdCB2YWxpZEtleXMgPSBuZXcgU2V0KHJvd3MubWFwKHI9PnIua2V5KSk7CiAgWy4uLmNoZWNrZWRTZXRdLmZvckVhY2goaz0+eyBpZighdmFsaWRLZXlzLmhhcyhrKSkgY2hlY2tlZFNldC5kZWxldGUoayk7IH0pOwogIHNhdmVDaGVja2VkU2V0KCdpc3RyaWNlX2V4dHJhX3ByZXBhcmFkYV9jaGVja2VkXycrdHlwZSwgY2hlY2tlZFNldCk7CiAgcmVuZGVyRXh0cmFQZW5kaW5nVGFibGUodHlwZSk7Cn0KZnVuY3Rpb24gcmVuZGVyRXh0cmFQZW5kaW5nVGFibGUodHlwZSl7CiAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtaW4tZXh0cmEtcGVuZGluZy0nK3R5cGUpOwogIGlmKCFlbCkgcmV0dXJuOwogIGNvbnN0IHJvd3MgPSBsYXN0RXh0cmFQZW5kaW5nUm93c1t0eXBlXSB8fCBbXTsKICBjb25zdCBjaGVja2VkU2V0ID0gZXh0cmFQZW5kaW5nQ2hlY2tlZFt0eXBlXSB8fCAoZXh0cmFQZW5kaW5nQ2hlY2tlZFt0eXBlXSA9IG5ldyBTZXQoKSk7CiAgY29uc3QgZG9uZUNvdW50ID0gcm93cy5maWx0ZXIocj0+Y2hlY2tlZFNldC5oYXMoci5rZXkpKS5sZW5ndGg7CiAgY29uc3QgdVRvdGFsID0gcm93cy5yZWR1Y2UoKG4scik9Pm4rci5xdHksIDApOwogIGNvbnN0IHVIZWNoYXMgPSByb3dzLnJlZHVjZSgobixyKT0+Y2hlY2tlZFNldC5oYXMoci5rZXkpID8gbityLnF0eSA6IG4sIDApOwogIGNvbnN0IHN1bUVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BlZGNhcmQtc3VtbWFyeS1leHRyYS0nK3R5cGUpOwogIGlmKHN1bUVsKSBzdW1FbC50ZXh0Q29udGVudCA9IHJvd3MubGVuZ3RoID8gYFByZXBhcmFkYXMgJHt1SGVjaGFzfSBkZSAke3VUb3RhbH0gwrcgZmFsdGFuICR7dVRvdGFsLXVIZWNoYXN9YCA6ICduYWRhIHBlbmRpZW50ZSc7CiAgaWYoIXJvd3MubGVuZ3RoKXsgZWwuaW5uZXJIVE1MID0gJzxwIHN0eWxlPSJmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij5ObyBoYXkgJyt0eXBlTWV0YSh0eXBlKS5wbHVyYWwrJyBwZW5kaWVudGVzIGRlIGVudmlhci48L3A+JzsgcmV0dXJuOyB9CiAgY29uc3QgYWN0aW9ucyA9IGA8ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjhweDtkaXNwbGF5OmZsZXg7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDsiPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gc2Vjb25kYXJ5IHNtYWxsIiBvbmNsaWNrPSJtYXJrQWxsRXh0cmFQZW5kaW5nKCcke3R5cGV9JywgdHJ1ZSkiPk1hcmNhciB0b2RvPC9idXR0b24+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBzZWNvbmRhcnkgc21hbGwiIG9uY2xpY2s9Im1hcmtBbGxFeHRyYVBlbmRpbmcoJyR7dHlwZX0nLCBmYWxzZSkiPkRlc21hcmNhciB0b2RvPC9idXR0b24+CiAgPC9kaXY+YDsKICBjb25zdCBwcm9ncmVzcyA9IGA8ZGl2IHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7bWFyZ2luLWJvdHRvbTo4cHg7Ij5Nb2RlbG9zOiAke2RvbmVDb3VudH0gZGUgJHtyb3dzLmxlbmd0aH0gwrcgQSBwcmVwYXJhcjogJHt1VG90YWx9IMK3IDxzdHJvbmc+UHJlcGFyYWRhczogJHt1SGVjaGFzfTwvc3Ryb25nPiDCtyBGYWx0YW46ICR7dVRvdGFsLXVIZWNoYXN9PC9kaXY+YDsKICBjb25zdCBib2R5ID0gcm93cy5tYXAocj0+ewogICAgY29uc3QgY2hlY2tlZCA9IGNoZWNrZWRTZXQuaGFzKHIua2V5KTsKICAgIHJldHVybiBgPHRyIHN0eWxlPSIke2NoZWNrZWQ\/J29wYWNpdHk6LjQ1Oyc6Jyd9Ij4KICAgICAgPHRkPiR7Y2hlY2tlZD8nPHNwYW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2g7Ij4nK3IucmVmKycg4oCUICcrci5uYW1lKyc8L3NwYW4+JzpyLnJlZisnIOKAlCAnK3IubmFtZX08L3RkPgogICAgICA8dGQ+PHN0cm9uZz4ke3IucXR5fTwvc3Ryb25nPjwvdGQ+CiAgICAgIDx0ZCBzdHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tc3VhdmUpOyI+JHtlc2NhcGVBdHRyKHIudGllbmRhKX08L3RkPgogICAgICA8dGQgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiAke2NoZWNrZWQ\/J2NoZWNrZWQnOicnfSBvbmNoYW5nZT0idG9nZ2xlRXh0cmFQZW5kaW5nQ2hlY2tlZCgnJHt0eXBlfScsJyR7ci5rZXl9JykiIHN0eWxlPSJ3aWR0aDoxOHB4O2hlaWdodDoxOHB4O2N1cnNvcjpwb2ludGVyOyI+PC90ZD4KICAgIDwvdHI+YDsKICB9KS5qb2luKCcnKTsKICBlbC5pbm5lckhUTUwgPSBgPGRpdiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1jcmVtYS0yKTtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjEwcHggMTJweDsiPgogICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW4tdG9wOjA7Ij5BbCBtYXJjYXIgZWwgcGVkaWRvIGNvbW8gImVudmlhZG8iIGVuIFBlZGlkb3MgcGVuZGllbnRlcywgc2UgZGVzY3VlbnRhIHNvbG8gZGUgdHUgc3RvY2sgYXV0b23DoXRpY2FtZW50ZS4gVXNhIGVsIGNoZWNrIHBhcmEgaXIgbWFyY2FuZG8gbGFzIHF1ZSB5YSB0aWVuZXMgcHJlcGFyYWRhcy48L3A+CiAgICAke2FjdGlvbnN9JHtwcm9ncmVzc30KICAgIDxkaXYgc3R5bGU9Im92ZXJmbG93LXg6YXV0bzsiPjx0YWJsZT48dGhlYWQ+PHRyPjx0aD4ke3R5cGVNZXRhKHR5cGUpLmxhYmVsfTwvdGg+PHRoPkNhbnRpZGFkPC90aD48dGg+UGFyYTwvdGg+PHRoPlByZXBhcmFkYTwvdGg+PC90cj48L3RoZWFkPjx0Ym9keT4ke2JvZHl9PC90Ym9keT48L3RhYmxlPjwvZGl2PgogIDwvZGl2PmA7Cn0KZnVuY3Rpb24gdG9nZ2xlRXh0cmFQZW5kaW5nQ2hlY2tlZCh0eXBlLCBrZXkpewogIGNvbnN0IGNoZWNrZWRTZXQgPSBleHRyYVBlbmRpbmdDaGVja2VkW3R5cGVdIHx8IChleHRyYVBlbmRpbmdDaGVja2VkW3R5cGVdID0gbmV3IFNldCgpKTsKICBpZihjaGVja2VkU2V0LmhhcyhrZXkpKSBjaGVja2VkU2V0LmRlbGV0ZShrZXkpOyBlbHNlIGNoZWNrZWRTZXQuYWRkKGtleSk7CiAgc2F2ZUNoZWNrZWRTZXQoJ2lzdHJpY2VfZXh0cmFfcHJlcGFyYWRhX2NoZWNrZWRfJyt0eXBlLCBjaGVja2VkU2V0KTsKICByZW5kZXJFeHRyYVBlbmRpbmdUYWJsZSh0eXBlKTsKICByZW5kZXJBZG1pbk9yZGVycyhhZG1pbk9yZGVyc0xpc3QpOyAvLyByZWZsZWphIGFsIG1vbWVudG8gZWwg4pyFICJsaXN0byBwYXJhIGVudmlhciIgZGUgc3UgdGllbmRhCn0KZnVuY3Rpb24gbWFya0FsbEV4dHJhUGVuZGluZyh0eXBlLCBjaGVja2VkKXsKICBjb25zdCBjaGVja2VkU2V0ID0gZXh0cmFQZW5kaW5nQ2hlY2tlZFt0eXBlXSB8fCAoZXh0cmFQZW5kaW5nQ2hlY2tlZFt0eXBlXSA9IG5ldyBTZXQoKSk7CiAgaWYoY2hlY2tlZCkgKGxhc3RFeHRyYVBlbmRpbmdSb3dzW3R5cGVdfHxbXSkuZm9yRWFjaChyPT5jaGVja2VkU2V0LmFkZChyLmtleSkpOwogIGVsc2UgY2hlY2tlZFNldC5jbGVhcigpOwogIHNhdmVDaGVja2VkU2V0KCdpc3RyaWNlX2V4dHJhX3ByZXBhcmFkYV9jaGVja2VkXycrdHlwZSwgY2hlY2tlZFNldCk7CiAgcmVuZGVyRXh0cmFQZW5kaW5nVGFibGUodHlwZSk7CiAgcmVuZGVyQWRtaW5PcmRlcnMoYWRtaW5PcmRlcnNMaXN0KTsKfQovLyDCq0zDoW1pbmFzIHBhcmEgaW1wcmltaXLCuywgcmVoZWNoYSAoUmHDumwsIDA1LzEwLzIwMjY6IMKraGF5IHF1ZSBhcnJlZ2xhcmxvIGJpZW7CuyB5IMKraGF5IGRlbWFzaWFkYXMgY29zYXMsIGJvdG9uZXPCuykuCi8vIEFycmliYSB1bmEgZnJhc2UgY29uIGxvIHF1ZSBmYWx0YSB5IFVOIGJvdMOzbiAoSW1wcmltaXIgbG8gcXVlIGZhbHRhKTsgZWwgUERGIHF1ZWRhIGNvbW8gZW5sYWNlOyDCq01hcmNhciB0b2RvwrsgZXMgbGEgY2FzaWxsYQovLyBkZSBsYSBjYWJlY2VyYSBkZSBsYSB0YWJsYTsgZWwgcGFwZWwsIGVuIHVuYSB0YWJsaXRhIChuZWNlc2l0YXMgLyB0aWVuZXMgLyBkZXNwdcOpcykuIEVuIGVsIG3Ds3ZpbCBsYSB0YWJsYSBzZSBxdWVkYSBlbgovLyB0cmVzIGNvbHVtbmFzOiBjYXNpbGxhLCBsw6FtaW5hIChjb24gZWwgZGV0YWxsZSBkZWJham8pIHkgY3XDoW50YXMgaGF5IHF1ZSBpbXByaW1pci4KZnVuY3Rpb24gcmVuZGVyUHJpbnRTdW1tYXJ5VGFibGUoKXsKICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1pbi1wcmludC1zdW1tYXJ5Jyk7CiAgaWYoIWVsKSByZXR1cm47CiAgY29uc3Qgcm93cyA9IGxhc3RQcmludFN1bW1hcnlSb3dzOwogIC8vIExhcyBmaWxhcyBzb24gbW9kZWxvczsgbG8gcXVlIGhheSBxdWUgc2FiZXIgZXMgY3XDoW50YXMgbMOhbWluYXMgc2FsZW4gZGUgbGEgaW1wcmVzb3JhLgogIGNvbnN0IHVQZWRpZGFzID0gcm93cy5yZWR1Y2UoKG4scik9Pm4rci5xdHksIDApOwogIGNvbnN0IHVJbXByaW1pciA9IHJvd3MucmVkdWNlKChuLHIpPT5uK01hdGgubWF4KDAsIHIucXR5LXIuc3RvY2tRdHkpLCAwKTsKICBjb25zdCB1SGVjaGFzID0gcm93cy5yZWR1Y2UoKG4scik9PnByaW50U3VtbWFyeUNoZWNrZWQuaGFzKHIua2V5KSA\/IG4rTWF0aC5tYXgoMCwgci5xdHktci5zdG9ja1F0eSkgOiBuLCAwKTsKICBjb25zdCBmYWx0YW4gPSB1SW1wcmltaXIgLSB1SGVjaGFzLCBkZVN0b2NrID0gdVBlZGlkYXMgLSB1SW1wcmltaXI7CiAgY29uc3Qgc3VtRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGVkY2FyZC1zdW1tYXJ5LWxhbWluYXMnKTsKICBpZihzdW1FbCkgc3VtRWwudGV4dENvbnRlbnQgPSAhcm93cy5sZW5ndGggPyAnbmFkYSBwZW5kaWVudGUnIDogKGZhbHRhbiA\/IGBmYWx0YW4gJHtmYWx0YW59IGRlICR7dVBlZGlkYXN9YCA6IGB0b2RvIGxpc3RvICgke3VQZWRpZGFzfSlgKTsKICBpZighcm93cy5sZW5ndGgpeyBlbC5pbm5lckhUTUwgPSAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXN1YXZlKTsiPk5vIGhheSBwZWRpZG9zIHBlbmRpZW50ZXMgZGUgaW1wcmltaXIuPC9wPic7IHJldHVybjsgfQogIGNvbnN0IHBsdXJhbCA9IChuLCB1bm8sIHZhcmlvcykgPT4gbj09PTEgPyB1bm8gOiB2YXJpb3M7CiAgY29uc3QgZXN0YWRvID0gYDxwIGNsYXNzPSJpbXAtZXN0YWRvIj4ke2ZhbHRhbgogICAgICA\/IGA8c3Ryb25nPkZhbHRhbiAke2ZhbHRhbn0gJHtwbHVyYWwoZmFsdGFuLCdsw6FtaW5hJywnbMOhbWluYXMnKX0gcG9yIGltcHJpbWlyLjwvc3Ryb25nPmAKICAgICAgOiBgPHN0cm9uZz5Ub2RvIGltcHJlc28uPC9zdHJvbmc+YH0KICAgIDxzcGFuIGNsYXNzPSJpbXAtc3ViIj5ZYSB0aWVuZXMgJHt1UGVkaWRhcy1mYWx0YW59IGRlICR7dVBlZGlkYXN9JHsoZGVTdG9ja3x8dUhlY2hhcykgPyBgICgke1tkZVN0b2NrP2RlU3RvY2srJyBkZSB0dSBzdG9jayc6JycsIHVIZWNoYXM\/dUhlY2hhcysnIGltcHJlc2FzIGFob3JhJzonJ10uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyArICcpfSlgIDogJyd9Ljwvc3Bhbj48L3A+YDsKICBjb25zdCBhY2Npb25lcyA9IGA8ZGl2IGNsYXNzPSJpbXAtYWNjaW9uZXMgbm8tcHJpbnQiPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4iIG9uY2xpY2s9ImVudmlhckFBcHBJbXByZXNpb24oKSIgJHtmYWx0YW4\/Jyc6J2Rpc2FibGVkJ30+JHtmYWx0YW4gPyBgSW1wcmltaXIgbG8gcXVlIGZhbHRhICgke2ZhbHRhbn0pYCA6ICdOYWRhIHBvciBpbXByaW1pcid9PC9idXR0b24+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0bi1lbmxhY2UiIG9uY2xpY2s9ImRvd25sb2FkUHJpbnRTdW1tYXJ5UERGKCkiPkRlc2NhcmdhciBQREY8L2J1dHRvbj4KICA8L2Rpdj4KICA8cCBjbGFzcz0ibm8tcHJpbnQgcGlzdGEtaW1wcmltaXIiPlNlIGFicmUgZW4gbGEgYXBwIGRlIGltcHJlc2nDs24gZGVsIE1hYywgcXVlIHRpZW5lIHF1ZSBlc3RhciBhYmllcnRhIChkb2JsZSBjbGljIGVuIMKrQWJyaXIgYXBwIGRlIGltcHJlc2nDs27CuykuPC9wPmA7CiAgY29uc3QgcGFwZXIgPSBjb21wdXRlUGFwZXJOZWVkcyhyb3dzLCBwcmludFN1bW1hcnlDaGVja2VkKTsKICBjb25zdCBvdGhlckxpbmVzID0gT2JqZWN0LmVudHJpZXMocGFwZXIub3RoZXJTaGVldHMpLm1hcCgoW2Ysbl0pPT5gJHtufSBob2phcyAke2Z9YCkuam9pbignIMK3ICcpOwogIGNvbnN0IGRlc3B1ZXMgPSBuID0+IG4gPj0gMCA\/IGA8c3BhbiBjbGFzcz0icXVlZGEiPnRlIHF1ZWRhbiAke259PC9zcGFuPmAgOiBgPHNwYW4gY2xhc3M9ImZhbHRhIj50ZSBmYWx0YW4gJHstbn08L3NwYW4+YDsKICBjb25zdCBub3RhcyA9IFsKICAgIHBhcGVyLng0MlNoZWV0cz4wID8gYEEzIGluY2x1eWUgJHtwYXBlci54NDJTaGVldHN9ICR7cGx1cmFsKHBhcGVyLng0MlNoZWV0cywnaG9qYScsJ2hvamFzJyl9IHBhcmEgJHtwYXBlci54NDJVbml0c30gZGUgMTR4NDIgKDIgcG9yIGhvamEpLmAgOiAnJywKICAgIHBhcGVyLmE1U2hlZXRzPjAgPyBgQTQgaW5jbHV5ZSAke3BhcGVyLmE1U2hlZXRzfSAke3BsdXJhbChwYXBlci5hNVNoZWV0cywnaG9qYScsJ2hvamFzJyl9IHBhcmEgJHtwYXBlci5hNVVuaXRzfSBBNSAoMiBwb3IgaG9qYSkuYCA6ICcnLAogICAgb3RoZXJMaW5lcyA\/ICdBZGVtw6FzOiAnICsgb3RoZXJMaW5lcyArICcuJyA6ICcnCiAgXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpOwogIGNvbnN0IHNvYnJhbnRlcyA9IHNvYnJhbnRlc1BhcmVzKHJvd3MpLm1hcCh4PT5gPGRpdiBjbGFzcz0iaW1wLWF2aXNvIG5vLXByaW50Ij5Mb3MgJHt4LmZtdH0gc2FsZW4gaW1wYXJlczogbGEgw7psdGltYSBob2phIGxsZXZhIDIgZGUgPHN0cm9uZz4ke3gucmVmfSDigJQgJHtlc2NhcGVBdHRyKHgubmFtZSl9PC9zdHJvbmc+OyAxIGVzIHBhcmEgdHUgc3RvY2suCiAgICAgICR7c29icmFudGVZYUFuYWRpZG8oeC5maXJtYSkgPyAnPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLW9rKTsiPuKckyB5YSBhw7FhZGlkYSBhbCBzdG9jazwvc3Bhbj4nIDogYDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuLWVubGFjZSIgb25jbGljaz0iYW5hZGlyU29icmFudGUoJyR7eC5mbXR9JykiPkHDsWFkaXIgYWwgc3RvY2sgY3VhbmRvIGxhIHRlbmdhczwvYnV0dG9uPmB9PC9kaXY+YCkuam9pbignJyk7CiAgY29uc3QgcGFwZWwgPSBgPGRpdiBjbGFzcz0iaW1wLXBhcGVsIj4KICAgIDx0YWJsZT4KICAgICAgPHRyPjx0aD5QYXBlbDwvdGg+PHRoPkEzPC90aD48dGg+QTQ8L3RoPjwvdHI+CiAgICAgIDx0cj48dGQ+TmVjZXNpdGFzPC90ZD48dGQ+JHtwYXBlci5hM308L3RkPjx0ZD4ke3BhcGVyLmE0fTwvdGQ+PC90cj4KICAgICAgPHRyPjx0ZD5UaWVuZXM8L3RkPgogICAgICAgIDx0ZD48aW5wdXQgdHlwZT0ibnVtYmVyIiBtaW49IjAiIHZhbHVlPSIke3BhcGVyU3RvY2suQTN8fDB9IiBhcmlhLWxhYmVsPSJIb2phcyBBMyBxdWUgdGllbmVzIiBvbmNoYW5nZT0ic2V0UGFwZXJTdG9ja1ZhbHVlKCdBMycsdGhpcy52YWx1ZSkiPiR7cGFwZXJMYXN0U2F2ZWQ9PT0nQTMnPyc8c3BhbiBjbGFzcz0ic2F2ZWQtdGljayI+4pyTPC9zcGFuPic6Jyd9PC90ZD4KICAgICAgICA8dGQ+PGlucHV0IHR5cGU9Im51bWJlciIgbWluPSIwIiB2YWx1ZT0iJHtwYXBlclN0b2NrLkE0fHwwfSIgYXJpYS1sYWJlbD0iSG9qYXMgQTQgcXVlIHRpZW5lcyIgb25jaGFuZ2U9InNldFBhcGVyU3RvY2tWYWx1ZSgnQTQnLHRoaXMudmFsdWUpIj4ke3BhcGVyTGFzdFNhdmVkPT09J0E0Jz8nPHNwYW4gY2xhc3M9InNhdmVkLXRpY2siPuKckzwvc3Bhbj4nOicnfTwvdGQ+PC90cj4KICAgICAgPHRyPjx0ZD5EZXNwdcOpczwvdGQ+PHRkPiR7ZGVzcHVlcygocGFwZXJTdG9jay5BM3x8MCkgLSBwYXBlci5hMyl9PC90ZD48dGQ+JHtkZXNwdWVzKChwYXBlclN0b2NrLkE0fHwwKSAtIHBhcGVyLmE0KX08L3RkPjwvdHI+CiAgICA8L3RhYmxlPgogICAgJHtub3RhcyA\/IGA8cCBjbGFzcz0iaW1wLW5vdGEiPiR7bm90YXN9PC9wPmAgOiAnJ30ke3NvYnJhbnRlc30KICA8L2Rpdj5gOwogIGNvbnN0IHRvZGFzID0gcm93cy5ldmVyeShyPT5wcmludFN1bW1hcnlDaGVja2VkLmhhcyhyLmtleSkpOwogIGNvbnN0IGJvZHkgPSByb3dzLm1hcChyPT57CiAgICBjb25zdCB0b1ByaW50ID0gTWF0aC5tYXgoMCwgci5xdHkgLSByLnN0b2NrUXR5KTsKICAgIGNvbnN0IGNoZWNrZWQgPSBwcmludFN1bW1hcnlDaGVja2VkLmhhcyhyLmtleSk7CiAgICBjb25zdCBlblN0b2NrID0gTWF0aC5taW4oci5zdG9ja1F0eSwgci5xdHkpOwogICAgY29uc3Qgc3RvY2tDZWxsID0gZW5TdG9jayA+IDAgPyBgPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLW9rKTsiPiR7ZW5TdG9ja308L3NwYW4+YCA6ICc8c3BhbiBzdHlsZT0iY29sb3I6dmFyKC0tc3VhdmUpOyI+4oCUPC9zcGFuPic7CiAgICBjb25zdCBwcmludENlbGwgPSB0b1ByaW50ID4gMCA\/IGA8c3BhbiBjbGFzcz0idGktcGlsbCBmYWx0YSI+JHt0b1ByaW50fTwvc3Bhbj5gIDogYDxzcGFuIGNsYXNzPSJ0aS1waWxsIG5hZGEiPuKckyBuYWRhPC9zcGFuPmA7CiAgICBjb25zdCBzdXJwbHVzTm90ZSA9IGE1U3VycGx1c1BlbmRpbmcuaGFzKHIua2V5KQogICAgICA\/IGA8ZGl2IGNsYXNzPSJpbXAtYXZpc28gbm8tcHJpbnQiPsK\/VGUgc29icsOzIDEgQTUgZGUgJHtyLnJlZn0\/IDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuLWVubGFjZSIgb25jbGljaz0iYWRkQTVQcmludFN1cnBsdXMoJyR7ci5rZXl9JykiPkHDsWFkaXIgYWwgc3RvY2s8L2J1dHRvbj48L2Rpdj5gCiAgICAgIDogJyc7CiAgICBjb25zdCBtaW5pID0gW3IuZm9ybWF0LCBgcGVkaWRhcyAke3IucXR5fWAsIGVuU3RvY2sgPyBgJHtlblN0b2NrfSBkZSB0dSBzdG9ja2AgOiAnJywgZXNjYXBlQXR0cihyLnRpZW5kYSldLmZpbHRlcihCb29sZWFuKS5qb2luKCcgwrcgJyk7CiAgICByZXR1cm4gYDx0ciBjbGFzcz0iJHtjaGVja2VkPydoZWNoYSc6Jyd9Ij4KICAgICAgPHRkIGNsYXNzPSJuby1wcmludCB0aS1jaGVjayI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiAke2NoZWNrZWQ\/J2NoZWNrZWQnOicnfSBhcmlhLWxhYmVsPSJJbXByZXNhOiAke3IucmVmfSIgb25jaGFuZ2U9InRvZ2dsZVByaW50Q2hlY2tlZCgnJHtyLmtleX0nKSI+PC90ZD4KICAgICAgPHRkIGNsYXNzPSJ0aS1sYW1pbmEiPjxzcGFuIGNsYXNzPSJ0aS1yZWYiPiR7ci5yZWZ9PC9zcGFuPjxzcGFuIGNsYXNzPSJ0aS1ub21icmUiPiR7ZXNjYXBlQXR0cihyLm5hbWUpfTwvc3Bhbj48c3BhbiBjbGFzcz0idGktbWluaSI+JHttaW5pfTwvc3Bhbj4ke3N1cnBsdXNOb3RlfTwvdGQ+CiAgICAgIDx0ZCBjbGFzcz0idGktZm10Ij4ke3IuZm9ybWF0fTwvdGQ+CiAgICAgIDx0ZCBjbGFzcz0iYyB0aS1uIj4ke3IucXR5fTwvdGQ+CiAgICAgIDx0ZCBjbGFzcz0iYyB0aS1uIj4ke3N0b2NrQ2VsbH08L3RkPgogICAgICA8dGQgY2xhc3M9ImMgdGktaW1wIj4ke3ByaW50Q2VsbH08L3RkPgogICAgICA8dGQgY2xhc3M9InRpLXBhcmEiPiR7ZXNjYXBlQXR0cihyLnRpZW5kYSl9PC90ZD4KICAgIDwvdHI+YDsKICB9KS5qb2luKCcnKTsKICBjb25zdCB0YWJsYSA9IGA8ZGl2IHN0eWxlPSJvdmVyZmxvdy14OmF1dG87Ij48dGFibGUgY2xhc3M9InRhYmxhLWltcHJpbWlyIj48dGhlYWQ+PHRyPgogICAgICA8dGggY2xhc3M9Im5vLXByaW50IHRpLWNoZWNrIj48aW5wdXQgdHlwZT0iY2hlY2tib3giICR7dG9kYXM\/J2NoZWNrZWQnOicnfSBhcmlhLWxhYmVsPSJNYXJjYXIgdG9kYXMgY29tbyBpbXByZXNhcyIgdGl0bGU9Ik1hcmNhciBvIGRlc21hcmNhciB0b2RhcyIgb25jaGFuZ2U9Im1hcmtBbGxQcmludFN1bW1hcnkodGhpcy5jaGVja2VkKSI+PC90aD4KICAgICAgPHRoPkzDoW1pbmE8L3RoPjx0aCBjbGFzcz0idGktZm10Ij5Gb3JtYXRvPC90aD48dGggY2xhc3M9ImMgdGktbiI+UGVkaWRhczwvdGg+PHRoIGNsYXNzPSJjIHRpLW4iPkRlIHR1IHN0b2NrPC90aD48dGggY2xhc3M9ImMgdGktaW1wIj5BIGltcHJpbWlyPC90aD48dGggY2xhc3M9InRpLXBhcmEiPlBhcmE8L3RoPgogICAgPC90cj48L3RoZWFkPjx0Ym9keT4ke2JvZHl9PC90Ym9keT48L3RhYmxlPjwvZGl2PmA7CiAgZWwuaW5uZXJIVE1MID0gZXN0YWRvICsgYWNjaW9uZXMgKyBwYXBlbCArIHRhYmxhOwp9CmZ1bmN0aW9uIGNvbXB1dGVQYXBlck5lZWRzKHJvd3MsIGNoZWNrZWRTZXQpewogIC8vIEE1IHkgMTR4NDIgdmFuIGRvcyBwb3IgaG9qYSB5IHB1ZWRlbiBzZXIgZGUgbMOhbWluYXMgZGlzdGludGFzOiBzZSBzdW1hbiB5IHNlIHJlZG9uZGVhIHVuYSB2ZXouCiAgbGV0IGEzPTAsIGE0PTAsIGE1VW5pdHM9MCwgYTVTaGVldHM9MCwgeDQyVW5pdHM9MDsKICBjb25zdCBvdGhlclNoZWV0cyA9IHt9OwogIHJvd3MuZm9yRWFjaChyPT57CiAgICBpZihjaGVja2VkU2V0LmhhcyhyLmtleSkpIHJldHVybjsgLy8geWEgaW1wcmVzbywgbm8gY3VlbnRhCiAgICBjb25zdCB0b1ByaW50ID0gTWF0aC5tYXgoMCwgci5xdHkgLSByLnN0b2NrUXR5KTsKICAgIGlmKHRvUHJpbnQ8PTApIHJldHVybjsKICAgIGlmKHIuZm9ybWF0PT09J0E1JykgYTVVbml0cyArPSB0b1ByaW50OyAgICAgICAgICAgICAgIC8vIHNlIHJlZG9uZGVhIGFsIGZpbmFsLCB0b2RvcyBqdW50b3MKICAgIGVsc2UgaWYoci5mb3JtYXQ9PT0nQTQnKSBhNCArPSB0b1ByaW50OwogICAgZWxzZSBpZihyLmZvcm1hdD09PSdBMycpIGEzICs9IHRvUHJpbnQ7CiAgICBlbHNlIGlmKHIuZm9ybWF0PT09JzE0eDQyJykgeDQyVW5pdHMgKz0gdG9QcmludDsgICAvLyBzZSByZWRvbmRlYSBhbCBmaW5hbCwgdG9kb3MganVudG9zCiAgICBlbHNlIG90aGVyU2hlZXRzW3IuZm9ybWF0XSA9IChvdGhlclNoZWV0c1tyLmZvcm1hdF18fDApICsgdG9QcmludDsKICB9KTsKICBjb25zdCB4NDJTaGVldHMgPSBNYXRoLmNlaWwoeDQyVW5pdHMgLyBYNDJfUE9SX0hPSkEpOwogIGE1U2hlZXRzID0gTWF0aC5jZWlsKGE1VW5pdHMgLyAyKTsKICByZXR1cm4ge2EzOiBhMyArIHg0MlNoZWV0cywgYTQ6IGE0ICsgYTVTaGVldHMsIGE1VW5pdHMsIGE1U2hlZXRzLCB4NDJVbml0cywgeDQyU2hlZXRzLCBvdGhlclNoZWV0c307Cn0KLy8gR3VhcmRhLCBwb3IgY2FkYSBmaWxhIG1hcmNhZGEgY29tbyBpbXByZXNhLCBjdcOhbnRvIHBhcGVsIHNlIGRlc2NvbnTDsyBSRUFMTUVOVEUKLy8gKHB1ZWRlIHNlciBtZW5vcyBkZSBsbyBxdWUgInBlZMOtYSIgbGEgZmlsYSBzaSBubyBoYWLDrWEgc3VmaWNpZW50ZSBzdG9jaykuIEFzw60sCi8vIGFsIGRlc21hcmNhcmxhLCBzZSBkZXZ1ZWx2ZSBlc2EgbWlzbWEgY2FudGlkYWQgZXhhY3RhIHkgbnVuY2EgYXBhcmVjZSBwYXBlbCBkZSBsYSBuYWRhLgpsZXQgcHJpbnRQYXBlckRlbHRhID0ge307CmZ1bmN0aW9uIGFwcGx5UHJpbnRDaGVjayhyb3cpewogIGNvbnN0IHtmb3JtYXQsIHNoZWV0c30gPSBzaGVldHNGb3JSb3cocm93KTsKICBpZighZm9ybWF0IHx8IHNoZWV0czw9MCkgcmV0dXJuIG51bGw7CiAgY29uc3QgYXZhaWxhYmxlID0gcGFwZXJTdG9ja1tmb3JtYXRdfHwwOwogIGNvbnN0IGFjdHVhbCA9IE1hdGgubWluKHNoZWV0cywgYXZhaWxhYmxlKTsKICBwYXBlclN0b2NrW2Zvcm1hdF0gPSBhdmFpbGFibGUgLSBhY3R1YWw7CiAgcHJpbnRQYXBlckRlbHRhW3Jvdy5rZXldID0ge2Zvcm1hdCwgYW1vdW50OiBhY3R1YWx9OwogIHJldHVybiBmb3JtYXQ7Cn0KZnVuY3Rpb24gYXBwbHlQcmludFVuY2hlY2socm93KXsKICBjb25zdCBzdG9yZWQgPSBwcmludFBhcGVyRGVsdGFbcm93LmtleV07CiAgaWYoIXN0b3JlZCkgcmV0dXJuIG51bGw7CiAgcGFwZXJTdG9ja1tzdG9yZWQuZm9ybWF0XSA9IChwYXBlclN0b2NrW3N0b3JlZC5mb3JtYXRdfHwwKSArIHN0b3JlZC5hbW91bnQ7CiAgZGVsZXRlIHByaW50UGFwZXJEZWx0YVtyb3cua2V5XTsKICByZXR1cm4gc3RvcmVkLmZvcm1hdDsKfQphc3luYyBmdW5jdGlvbiB0b2dnbGVQcmludENoZWNrZWQoa2V5KXsKICBjb25zdCB3YXNDaGVja2VkID0gcHJpbnRTdW1tYXJ5Q2hlY2tlZC5oYXMoa2V5KTsKICBjb25zdCByb3cgPSBsYXN0UHJpbnRTdW1tYXJ5Um93cy5maW5kKHI9PnIua2V5PT09a2V5KTsKICBsZXQgY2hhbmdlZEZvcm1hdCA9IG51bGw7CiAgaWYod2FzQ2hlY2tlZCl7CiAgICBwcmludFN1bW1hcnlDaGVja2VkLmRlbGV0ZShrZXkpOwogICAgaWYocm93KSBjaGFuZ2VkRm9ybWF0ID0gYXBwbHlQcmludFVuY2hlY2socm93KTsKICAgIGE1U3VycGx1c1BlbmRpbmcuZGVsZXRlKGtleSk7CiAgfSBlbHNlIHsKICAgIHByaW50U3VtbWFyeUNoZWNrZWQuYWRkKGtleSk7CiAgICBpZihyb3cpIGNoYW5nZWRGb3JtYXQgPSBhcHBseVByaW50Q2hlY2socm93KTsKICB9CiAgaWYoY2hhbmdlZEZvcm1hdCkgYXdhaXQgc2F2ZVBhcGVyU3RvY2soY2hhbmdlZEZvcm1hdCk7CiAgYXdhaXQgYWp1c3RhUGFwZWxQYXJlcygpOwogIHNhdmVDaGVja2VkU2V0KCdpc3RyaWNlX2ltcHJlc29fY2hlY2tlZCcsIHByaW50U3VtbWFyeUNoZWNrZWQpOwogIHJlbmRlclByaW50U3VtbWFyeVRhYmxlKCk7CiAgcmVuZGVyQWRtaW5PcmRlcnMoYWRtaW5PcmRlcnNMaXN0KTsgLy8gcmVmbGVqYSBhbCBtb21lbnRvIGVsIOKchSAibGlzdG8gcGFyYSBlbnZpYXIiIGRlIHN1IHRpZW5kYQp9Ci8vIFNlIGxsYW1hIGRlc2RlIGVsIGF2aXNvICLCv1RlIHNvYnLDsyAxIEE1PyIgcXVlIGFwYXJlY2UgYWwgbWFyY2FyIGNvbW8gaW1wcmVzYSB1bmEgbMOtbmVhIGRlIEE1IGNvbgovLyBjYW50aWRhZCBpbXBhciAodmVyIHRvZ2dsZVByaW50Q2hlY2tlZCkuIFN1bWEgMSBhbCBzdG9jayBkZSBlc2EgaWx1c3RyYWNpw7NuL0E1IChudW5jYSBzb2JyZXNjcmliZSkKLy8geSBoYWNlIGRlc2FwYXJlY2VyIGVsIGF2aXNvIHBhcmEgcXVlIG5vIHNlIHB1ZWRhIHB1bHNhciBkb3MgdmVjZXMgcG9yIGVycm9yLgphc3luYyBmdW5jdGlvbiBhZGRBNVByaW50U3VycGx1cyhrZXkpewogIGNvbnN0IHJvdyA9IGxhc3RQcmludFN1bW1hcnlSb3dzLmZpbmQocj0+ci5rZXk9PT1rZXkpOwogIGlmKCFyb3cpeyBhNVN1cnBsdXNQZW5kaW5nLmRlbGV0ZShrZXkpOyByZW5kZXJQcmludFN1bW1hcnlUYWJsZSgpOyByZXR1cm47IH0KICBjb25zdCBleGlzdGluZyA9IHN0b2NrRGF0YUNhY2hlLnN0b2NrLmZpbmQocz0+cy5pbGx1c3RyYXRpb25faWQ9PT1yb3cuaWxsdXN0cmF0aW9uX2lkICYmIHMuZm9ybWF0PT09J0E1Jyk7CiAgY29uc3QgbmV4dCA9IChleGlzdGluZz9leGlzdGluZy5wcmludGVkX3F0eTowKSArIDE7CiAgYXdhaXQgc2V0U3RvY2socm93LmlsbHVzdHJhdGlvbl9pZCwgJ0E1JywgbmV4dCk7CiAgYTVTdXJwbHVzUGVuZGluZy5kZWxldGUoa2V5KTsKICBzdG9ja1RvYXN0KGBBw7FhZGlkbzogKzEgQTUgZGUgJHtyb3cucmVmfSAoc29icmFudGUpLiBUb3RhbCBhaG9yYTogJHtuZXh0fS5gKTsKICByZW5kZXJQcmludFN1bW1hcnlUYWJsZSgpOwp9CmFzeW5jIGZ1bmN0aW9uIG1hcmtBbGxQcmludFN1bW1hcnkoY2hlY2tlZCl7CiAgY29uc3QgZm9ybWF0c0NoYW5nZWQgPSBuZXcgU2V0KCk7CiAgbGFzdFByaW50U3VtbWFyeVJvd3MuZm9yRWFjaChyPT57CiAgICBjb25zdCBhbHJlYWR5ID0gcHJpbnRTdW1tYXJ5Q2hlY2tlZC5oYXMoci5rZXkpOwogICAgaWYoY2hlY2tlZCAmJiAhYWxyZWFkeSl7CiAgICAgIHByaW50U3VtbWFyeUNoZWNrZWQuYWRkKHIua2V5KTsKICAgICAgY29uc3QgZm10ID0gYXBwbHlQcmludENoZWNrKHIpOwogICAgICBpZihmbXQpIGZvcm1hdHNDaGFuZ2VkLmFkZChmbXQpOwogICAgfSBlbHNlIGlmKCFjaGVja2VkICYmIGFscmVhZHkpewogICAgICBwcmludFN1bW1hcnlDaGVja2VkLmRlbGV0ZShyLmtleSk7CiAgICAgIGNvbnN0IGZtdCA9IGFwcGx5UHJpbnRVbmNoZWNrKHIpOwogICAgICBpZihmbXQpIGZvcm1hdHNDaGFuZ2VkLmFkZChmbXQpOwogICAgICBhNVN1cnBsdXNQZW5kaW5nLmRlbGV0ZShyLmtleSk7CiAgICB9CiAgfSk7CiAgZm9yKGNvbnN0IGZtdCBvZiBmb3JtYXRzQ2hhbmdlZCl7CiAgICBhd2FpdCBzYXZlUGFwZXJTdG9jayhmbXQpOwogIH0KICBhd2FpdCBhanVzdGFQYXBlbFBhcmVzKCk7CiAgc2F2ZUNoZWNrZWRTZXQoJ2lzdHJpY2VfaW1wcmVzb19jaGVja2VkJywgcHJpbnRTdW1tYXJ5Q2hlY2tlZCk7CiAgcmVuZGVyUHJpbnRTdW1tYXJ5VGFibGUoKTsKICByZW5kZXJBZG1pbk9yZGVycyhhZG1pbk9yZGVyc0xpc3QpOwp9CmZ1bmN0aW9uIGRvd25sb2FkUHJpbnRTdW1tYXJ5UERGKCl7CiAgaWYoIXdpbmRvdy5qc3BkZil7IGFsZXJ0KCdObyBzZSBwdWRvIGNhcmdhciBlbCBnZW5lcmFkb3IgZGUgUERGLiBSZXZpc2EgdHUgY29uZXhpw7NuIGUgaW50w6ludGFsbyBkZSBudWV2by4nKTsgcmV0dXJuOyB9CiAgdHJ5IHsKICBjb25zdCB7IGpzUERGIH0gPSB3aW5kb3cuanNwZGY7CiAgY29uc3QgZG9jID0gbmV3IGpzUERGKCk7CiAgY29uc3Qgcm93cyA9IGxhc3RQcmludFN1bW1hcnlSb3dzIHx8IFtdOwogIC8vIE1pc21vcyBuw7ptZXJvcyBxdWUgZW4gcGFudGFsbGE6IHRvdGFsLCBsbyBxdWUgeWEgaGF5IGltcHJlc28gKHN0b2NrICsgbWFyY2FkYXMpIHkgbG8gcXVlIGZhbHRhLgogIGNvbnN0IHVQZWRpZGFzID0gcm93cy5yZWR1Y2UoKG4scik9Pm4rci5xdHksIDApOwogIGNvbnN0IHVJbXByaW1pciA9IHJvd3MucmVkdWNlKChuLHIpPT5uK01hdGgubWF4KDAsIHIucXR5LXIuc3RvY2tRdHkpLCAwKTsKICBjb25zdCB1SGVjaGFzID0gcm93cy5yZWR1Y2UoKG4scik9PnByaW50U3VtbWFyeUNoZWNrZWQuaGFzKHIua2V5KSA\/IG4rTWF0aC5tYXgoMCwgci5xdHktci5zdG9ja1F0eSkgOiBuLCAwKTsKICBjb25zdCBwYXBlciA9IGNvbXB1dGVQYXBlck5lZWRzKHJvd3MsIHByaW50U3VtbWFyeUNoZWNrZWQpOwogIGxldCB5ID0gMTU7CiAgZG9jLnNldEZvbnRTaXplKDE0KTsKICBkb2MudGV4dCgnTMOhbWluYXMgcGFyYSBpbXByaW1pciDigJQgSVNUUklDRScsIDE0LCB5KTsKICB5ICs9IDY7CiAgZG9jLnNldEZvbnRTaXplKDkpOwogIGRvYy50ZXh0KG5ldyBEYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKGFwcExvY2FsZSgpKSwgMTQsIHkpOwogIHkgKz0gODsKICBpZighcm93cy5sZW5ndGgpewogICAgZG9jLnNldEZvbnRTaXplKDExKTsKICAgIGRvYy50ZXh0KCdObyBoYXkgcGVkaWRvcyBwZW5kaWVudGVzIGRlIGltcHJpbWlyLicsIDE0LCB5KTsKICB9IGVsc2UgewogICAgZG9jLnNldEZvbnRTaXplKDExKTsgZG9jLnNldEZvbnQodW5kZWZpbmVkLCAnYm9sZCcpOwogICAgZG9jLnRleHQoYFRvdGFsOiAke3VQZWRpZGFzfSAgIMK3ICAgSGF5IGltcHJlc2FzOiAke3VQZWRpZGFzLXVJbXByaW1pcit1SGVjaGFzfSAgIMK3ICAgRmFsdGFuIHBvciBpbXByaW1pcjogJHt1SW1wcmltaXItdUhlY2hhc31gLCAxNCwgeSk7CiAgICBkb2Muc2V0Rm9udCh1bmRlZmluZWQsICdub3JtYWwnKTsgeSArPSA1OwogICAgZG9jLnNldEZvbnRTaXplKDkpOwogICAgZG9jLnRleHQoYFBhcGVsIHF1ZSBmYWx0YTogJHtwYXBlci5hM30gaG9qYXMgQTMgwrcgJHtwYXBlci5hNH0gaG9qYXMgQTRgLCAxNCwgeSk7CiAgICB5ICs9IDg7CiAgICAvLyBUYWJsYTogUmVmZXJlbmNpYSB8IEZvcm1hdG8gfCBQZWRpZGFzIHwgRGUgdHUgc3RvY2sgfCBBIGltcHJpbWlyIHwgUGFyYQogICAgY29uc3QgWCA9IHtyZWY6MTQsIGZtdDoxMTIsIHBlZDoxMzIsIHN0azoxNTIsIGltcDoxNzIsIHBhcmE6MTkwfTsKICAgIGNvbnN0IGNhYiA9ICgpPT57IGRvYy5zZXRGb250U2l6ZSg4KTsgZG9jLnNldFRleHRDb2xvcigxMTApOyBkb2MudGV4dCgnUmVmZXJlbmNpYScsIFgucmVmLCB5KTsgZG9jLnRleHQoJ0Zvcm1hdG8nLCBYLmZtdCwgeSk7CiAgICAgIGRvYy50ZXh0KCdQZWRpZGFzJywgWC5wZWQsIHkpOyBkb2MudGV4dCgnRGUgdHUgc3RvY2snLCBYLnN0ay0yLCB5KTsgZG9jLnRleHQoJ0EgaW1wcmltaXInLCBYLmltcC0xLCB5KTsgZG9jLnRleHQoJ1BhcmEnLCBYLnBhcmEsIHkpOwogICAgICBkb2Muc2V0VGV4dENvbG9yKDApOyB5ICs9IDI7IGRvYy5zZXREcmF3Q29sb3IoMjAwKTsgZG9jLmxpbmUoMTQsIHksIDIwMCwgeSk7IHkgKz0gNTsgfTsKICAgIGNhYigpOwogICAgcm93cy5mb3JFYWNoKHI9PnsKICAgICAgaWYoeSA+IDI4MCl7IGRvYy5hZGRQYWdlKCk7IHkgPSAxNTsgY2FiKCk7IH0KICAgICAgY29uc3QgdG9QcmludCA9IE1hdGgubWF4KDAsIHIucXR5IC0gci5zdG9ja1F0eSk7CiAgICAgIGNvbnN0IGVuU3RvY2sgPSBNYXRoLm1pbihyLnN0b2NrUXR5LCByLnF0eSk7CiAgICAgIGNvbnN0IGhlY2hhID0gcHJpbnRTdW1tYXJ5Q2hlY2tlZC5oYXMoci5rZXkpOwogICAgICBkb2Muc2V0Rm9udFNpemUoMTApOwogICAgICBpZihoZWNoYSkgZG9jLnNldFRleHRDb2xvcigxNTApOwogICAgICBkb2MudGV4dChkb2Muc3BsaXRUZXh0VG9TaXplKGAke3IucmVmfSDigJQgJHtyLm5hbWV9JHtoZWNoYT8nIChpbXByZXNhKSc6Jyd9YCwgOTUpWzBdLCBYLnJlZiwgeSk7CiAgICAgIGRvYy50ZXh0KFN0cmluZyhyLmZvcm1hdCksIFguZm10LCB5KTsKICAgICAgZG9jLnRleHQoU3RyaW5nKHIucXR5KSwgWC5wZWQrNCwgeSk7CiAgICAgIGRvYy50ZXh0KGVuU3RvY2sgPyBTdHJpbmcoZW5TdG9jaykgOiAn4oCUJywgWC5zdGsrNCwgeSk7CiAgICAgIGRvYy5zZXRGb250KHVuZGVmaW5lZCwgJ2JvbGQnKTsgZG9jLnRleHQodG9QcmludCA\/IFN0cmluZyh0b1ByaW50KSA6ICduYWRhJywgWC5pbXArNCwgeSk7IGRvYy5zZXRGb250KHVuZGVmaW5lZCwgJ25vcm1hbCcpOwogICAgICBkb2Muc2V0Rm9udFNpemUoOCk7IGRvYy50ZXh0KGRvYy5zcGxpdFRleHRUb1NpemUoU3RyaW5nKHIudGllbmRhIHx8ICfigJQnKSwgMTgpWzBdLCBYLnBhcmEsIHkpOwogICAgICBkb2Muc2V0VGV4dENvbG9yKDApOwogICAgICB5ICs9IDY7CiAgICB9KTsKICB9CiAgZG9jLnNhdmUoJ2xhbWluYXMtcGFyYS1pbXByaW1pci1pc3RyaWNlLScgKyBmZWNoYUxvY2FsKCkgKyAnLnBkZicpOwogIH0gY2F0Y2goZSl7CiAgICBjb25zb2xlLmVycm9yKGUpOwogICAgYWxlcnQoJ05vIHNlIHB1ZG8gZ2VuZXJhciBlbCBQREY6ICcgKyBlLm1lc3NhZ2UpOwogIH0KfQpmdW5jdGlvbiBzbHVnaWZ5Q2hhbm5lbChzKXsKICBjb25zdCBiYXNlID0gKHN8fCcnKS50b1N0cmluZygpLm5vcm1hbGl6ZSgnTkZEJykucmVwbGFjZSgvW8yALc2vXS9nLCcnKS50b0xvd2VyQ2FzZSgpLnRyaW0oKS5yZXBsYWNlKC9bXmEtejAtOV0rL2csJy0nKS5yZXBsYWNlKC8oXi18LSQpL2csJycpOwogIHJldHVybiBiYXNlIHx8ICgndGllbmRhLScrRGF0ZS5ub3coKSk7Cn0KYXN5bmMgZnVuY3Rpb24gYWRkQ2hhbm5lbChlKXsKICBlLnByZXZlbnREZWZhdWx0KCk7CiAgY29uc3QgbmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduZXctY2hhbm5lbC1uYW1lJykudmFsdWUudHJpbSgpOwogIGNvbnN0IGNvbnRhY3RfZW1haWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV3LWNoYW5uZWwtZW1haWwnKS52YWx1ZS50cmltKCk7CiAgY29uc3QgcGhvbmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV3LWNoYW5uZWwtcGhvbmUnKS52YWx1ZS50cmltKCk7CiAgY29uc3QgY2l0eSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduZXctY2hhbm5lbC1jaXR5JykudmFsdWUudHJpbSgpOwogIGNvbnN0IG1zZ0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25ldy1jaGFubmVsLW1zZycpOwogIGlmKCFuYW1lKXsgbXNnRWwuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJtc2cgZXJyIj5FbCBub21icmUgZXMgb2JsaWdhdG9yaW8uPC9kaXY+JzsgcmV0dXJuIGZhbHNlOyB9CiAgbGV0IHNsdWcgPSBzbHVnaWZ5Q2hhbm5lbChuYW1lKTsKICBjb25zdCBwYXlsb2FkID0ge25hbWUsIHNsdWcsIGNvbnRhY3RfZW1haWw6IGNvbnRhY3RfZW1haWwgfHwgbnVsbCwgcGhvbmU6IHBob25lIHx8IG51bGwsIGNpdHk6IGNpdHkgfHwgbnVsbH07CiAgbGV0IHtlcnJvcn0gPSBhd2FpdCBzYi5mcm9tKCdjaGFubmVscycpLmluc2VydChwYXlsb2FkKTsKICBpZihlcnJvciAmJiAvc2x1Zy8udGVzdChlcnJvci5tZXNzYWdlKSl7CiAgICBzbHVnID0gc2x1ZyArICctJyArIERhdGUubm93KCkudG9TdHJpbmcoKS5zbGljZSgtNSk7CiAgICAoe2Vycm9yfSA9IGF3YWl0IHNiLmZyb20oJ2NoYW5uZWxzJykuaW5zZXJ0KHsuLi5wYXlsb2FkLCBzbHVnfSkpOwogIH0KICBpZihlcnJvcil7IG1zZ0VsLmlubmVySFRNTD0nPGRpdiBjbGFzcz0ibXNnIGVyciI+JytlcnJvci5tZXNzYWdlKyc8L2Rpdj4nOyByZXR1cm4gZmFsc2U7IH0KICBtc2dFbC5pbm5lckhUTUw9JzxkaXYgY2xhc3M9Im1zZyBvayI+VGllbmRhIGHDsWFkaWRhLjwvZGl2Pic7CiAgbG9nQWN0aXZpdHkoJ2RhdG9zJywgJ0RpbyBkZSBhbHRhIGxhIHRpZW5kYSAnICsgbmFtZSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25ldy1jaGFubmVsLW5hbWUnKS52YWx1ZT0nJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV3LWNoYW5uZWwtZW1haWwnKS52YWx1ZT0nJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV3LWNoYW5uZWwtcGhvbmUnKS52YWx1ZT0nJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV3LWNoYW5uZWwtY2l0eScpLnZhbHVlPScnOwogIGxvYWRBZG1pbkRhdGEoKTsKICByZXR1cm4gZmFsc2U7Cn0KZnVuY3Rpb24gY29tcHV0ZUNoYW5uZWxTdG9ja1Jvd3MoY2hhbm5lbElkKXsKICBjb25zdCBtYXAgPSB7fTsKICAoYWxsU2hpcHBlZE9yZGVyc0NhY2hlfHxbXSkuZmlsdGVyKG89Pm8uY2hhbm5lbF9pZD09PWNoYW5uZWxJZCkuZm9yRWFjaChvPT4oby5vcmRlcl9pdGVtc3x8W10pLmZvckVhY2goaXQ9PnsKICAgIGNvbnN0IGtleSA9IGl0LmlsbHVzdHJhdGlvbl9pZCsnfCcraXQuZm9ybWF0OwogICAgaWYoIW1hcFtrZXldKSBtYXBba2V5XSA9IHtpbGx1c3RyYXRpb25faWQ6IGl0LmlsbHVzdHJhdGlvbl9pZCwgcmVmOiBpdC5pbGx1c3RyYXRpb25zPy5yZWZ8fCcnLCBuYW1lOiBpdC5pbGx1c3RyYXRpb25zPy5uYW1lfHwnJywgcHJvZHVjdF90eXBlOiBpdC5pbGx1c3RyYXRpb25zPy5wcm9kdWN0X3R5cGV8fCdsYW1pbmEnLCBmb3JtYXQ6IGl0LmZvcm1hdCwgZW50cmVnYWRvOjAsIHZlbmRpZG86MH07CiAgICBtYXBba2V5XS5lbnRyZWdhZG8gKz0gaXQucXVhbnRpdHk7CiAgfSkpOwogIC8vIFN0b2NrIG1ldGlkbyBhIG1hbm8gKHNpbiBwZWRpZG8pIOKAlCBjdWVudGEgaWd1YWwgcXVlIHNpIHNlIGh1YmllcmEgImVudHJlZ2FkbyIgcG9yIHBlZGlkby4KICAoYWxsQWRqdXN0bWVudHNDYWNoZXx8W10pLmZpbHRlcihhPT5hLmNoYW5uZWxfaWQ9PT1jaGFubmVsSWQpLmZvckVhY2goYT0+ewogICAgY29uc3Qga2V5ID0gYS5pbGx1c3RyYXRpb25faWQrJ3wnK2EuZm9ybWF0OwogICAgaWYoIW1hcFtrZXldKSBtYXBba2V5XSA9IHtpbGx1c3RyYXRpb25faWQ6IGEuaWxsdXN0cmF0aW9uX2lkLCByZWY6IGEuaWxsdXN0cmF0aW9ucz8ucmVmfHwnJywgbmFtZTogYS5pbGx1c3RyYXRpb25zPy5uYW1lfHwnJywgcHJvZHVjdF90eXBlOiBhLmlsbHVzdHJhdGlvbnM\/LnByb2R1Y3RfdHlwZXx8J2xhbWluYScsIGZvcm1hdDogYS5mb3JtYXQsIGVudHJlZ2FkbzowLCB2ZW5kaWRvOjB9OwogICAgbWFwW2tleV0uZW50cmVnYWRvICs9IGEucXVhbnRpdHk7CiAgfSk7CiAgKGFsbFNhbGVzQ2FjaGV8fFtdKS5maWx0ZXIocz0+cy5jaGFubmVsX2lkPT09Y2hhbm5lbElkKS5mb3JFYWNoKHM9PnsKICAgIGNvbnN0IGtleSA9IHMuaWxsdXN0cmF0aW9uX2lkKyd8JytzLmZvcm1hdDsKICAgIGlmKCFtYXBba2V5XSkgbWFwW2tleV0gPSB7aWxsdXN0cmF0aW9uX2lkOiBzLmlsbHVzdHJhdGlvbl9pZCwgcmVmOiBzLmlsbHVzdHJhdGlvbnM\/LnJlZnx8JycsIG5hbWU6IHMuaWxsdXN0cmF0aW9ucz8ubmFtZXx8JycsIHByb2R1Y3RfdHlwZTogcy5pbGx1c3RyYXRpb25zPy5wcm9kdWN0X3R5cGV8fCdsYW1pbmEnLCBmb3JtYXQ6IHMuZm9ybWF0LCBlbnRyZWdhZG86MCwgdmVuZGlkbzowfTsKICAgIG1hcFtrZXldLnZlbmRpZG8gKz0gcy51bml0c19zb2xkOwogIH0pOwogIHJldHVybiBzb3J0QnlOYW1lRXMoT2JqZWN0LnZhbHVlcyhtYXApKTsKfQpmdW5jdGlvbiBjaGFubmVsSGFzTG93U3RvY2socm93cyl7CiAgcmV0dXJuIHJvd3Muc29tZShyID0+IChyLmVudHJlZ2FkbyAtIHIudmVuZGlkbykgPD0gMCk7Cn0KZnVuY3Rpb24gY2hhbm5lbFN0b2NrVGFibGVIdG1sKHJvd3MpewogIC8vICJFbnRyZWdhZG8iID0gdG9kbyBsbyBxdWUgbGUgaGVtb3MgZW52aWFkbyAocGVkaWRvcyBtYXJjYWRvcyBjb21vICJlbnZpYWRvIikgYSBlc3RhIHRpZW5kYS4KICAvLyAiVmVuZGlkbyIgPSBsbyBxdWUgbGEgcHJvcGlhIHRpZW5kYSBoYSByZXBvcnRhZG8gZW4gIlJlcG9ydGFyIHZlbnRhcyBkZWwgbWVzIiAobyBsbyBxdWUKICAvLyBoYXlhbW9zIGFub3RhZG8gbm9zb3Ryb3MgZW4gc3Ugbm9tYnJlIGRlc2RlIEFkbWluIOKGkiBWZW50YXMpLgogIC8vIERlYmVyw61hIHF1ZWRhciA9IGVudHJlZ2FkbyAtIHZlbmRpZG8uIFNpIGxhIHRpZW5kYSBubyByZXBvcnRhLCBlc3RhIGNpZnJhIG5vIGJhamEgc29sYS4KICBpZighcm93cy5sZW5ndGgpewogICAgcmV0dXJuICc8ZGl2IHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7cGFkZGluZzo2cHggMDsiPlNpbiBwZWRpZG9zIGVudmlhZG9zIG5pIHZlbnRhcyByZXBvcnRhZGFzIHRvZGF2w61hIHBhcmEgZXN0YSB0aWVuZGEuPC9kaXY+JzsKICB9CiAgcmV0dXJuIGA8ZGl2IHN0eWxlPSJvdmVyZmxvdy14OmF1dG87Ij48dGFibGUgY2xhc3M9InN0b2NrLXRhYmxlIiBzdHlsZT0id2lkdGg6MTAwJTtmb250LXNpemU6MTNweDsiPjx0aGVhZD48dHI+PHRoIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij5SZWY8L3RoPjx0aCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+Tm9tYnJlPC90aD48dGg+Rm9ybWF0bzwvdGg+PHRoPkVudHJlZ2FkbzwvdGg+PHRoPlZlbmRpZG8gKHJlcG9ydGFkbyk8L3RoPjx0aD5EZWJlcsOtYSBxdWVkYXI8L3RoPjwvdHI+PC90aGVhZD48dGJvZHk+JHsKICAgIHJvd3MubWFwKHI9PnsKICAgICAgY29uc3QgcmVzdGFudGUgPSByLmVudHJlZ2FkbyAtIHIudmVuZGlkbzsKICAgICAgLy8gMCBvIG5lZ2F0aXZvIG5vIGRlYmVyw61hIHBhc2FyIG51bmNhIGVuIGxhIHJlYWxpZGFkIChubyBzZSBwdWVkZSB2ZW5kZXIgbG8gcXVlIG5vIHNlCiAgICAgIC8vIGhhIGVudHJlZ2Fkbykg4oCUIGVuIHJvam8gcGFyYSBxdWUgc2FsdGUgYSBsYSB2aXN0YSBxdWUgaGF5IHVuIGRlc2N1YWRyZSBxdWUgcmV2aXNhci4KICAgICAgY29uc3Qgc3R5bGUgPSByZXN0YW50ZTw9MCA\/ICdjb2xvcjp2YXIoLS1lcnJvcik7Zm9udC13ZWlnaHQ6NzAwOycgOiAnZm9udC13ZWlnaHQ6NjAwOyc7CiAgICAgIHJldHVybiBgPHRyPjx0ZD4ke3IucmVmfTwvdGQ+PHRkPiR7ci5uYW1lfTwvdGQ+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsiPiR7ci5mb3JtYXR9PC90ZD48dGQgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyI+JHtyLmVudHJlZ2Fkb308L3RkPjx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7Ij4ke3IudmVuZGlkb308L3RkPjx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7JHtzdHlsZX0iPiR7cmVzdGFudGV9PC90ZD48L3RyPmA7CiAgICB9KS5qb2luKCcnKQogIH08L3Rib2R5PjwvdGFibGU+PC9kaXY+PHAgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW4tdG9wOjZweDsiPkVudHJlZ2FkbyA9IHN1bWEgZGUgcGVkaWRvcyBtYXJjYWRvcyAiZW52aWFkbyIgYSBlc3RhIHRpZW5kYS4gVmVuZGlkbyA9IGxvIHJlcG9ydGFkbyBwb3IgbGEgdGllbmRhIGVuICJSZXBvcnRhciB2ZW50YXMgZGVsIG1lcyIgKG8gYW5vdGFkbyBwb3IgdGkgZW4gQWRtaW4g4oaSIFZlbnRhcykuIEVuIHJvam86IDAgbyBuZWdhdGl2byBubyBlcyBmw61zaWNhbWVudGUgcG9zaWJsZSwgaW5kaWNhIHVuIGRlc2N1YWRyZSDigJQgcmV2w61zYWxvLjwvcD5gOwp9Ci8vIDI5LzA5LzIwMjY6IGNvcGlhIGRlIGNhZGEgdGllbmRhIHRhbCBjb21vIHNlIHBpbnTDsywgcGFyYSBndWFyZGFyIGx1ZWdvIHNvbG8gbG8gcXVlIEFkbWluIGNhbWJpZS4KbGV0IHJlbmRlcmVkQ2hhbm5lbHMgPSB7fTsKZnVuY3Rpb24gcmVuZGVyQWRtaW5DaGFubmVscyhsaXN0KXsKICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1pbi1jaGFubmVscycpOwogIGlmKCFlbCkgcmV0dXJuOwogIHJlbmRlcmVkQ2hhbm5lbHMgPSB7fTsKICAobGlzdHx8W10pLmZvckVhY2goYz0+eyByZW5kZXJlZENoYW5uZWxzW2MuaWRdID0gey4uLmN9OyB9KTsKICBlbC5pbm5lckhUTUwgPSBsaXN0Lm1hcCgoYywgaWR4KSA9PiB7CiAgICBjb25zdCByb3dzID0gY29tcHV0ZUNoYW5uZWxTdG9ja1Jvd3MoYy5pZCk7CiAgICBjb25zdCBsb3dTdG9jayA9IGNoYW5uZWxIYXNMb3dTdG9jayhyb3dzKTsKICAgIGNvbnN0IGlzT3BlbiA9IGV4cGFuZGVkQ2hhbm5lbElkcy5oYXMoYy5pZCk7CiAgICByZXR1cm4gYAogICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo4cHg7bWFyZ2luLWJvdHRvbToxMHB4O292ZXJmbG93OmhpZGRlbjsiPgogICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgb25jbGljaz0idG9nZ2xlQ2hhbm5lbERldGFpbCgnJHtjLmlkfScpIiBzdHlsZT0id2lkdGg6MTAwJTt0ZXh0LWFsaWduOmxlZnQ7YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO3BhZGRpbmc6MTBweCAxMnB4O2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjYwMDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7Ij4KICAgICAgICA8c3Bhbj4ke2MubmFtZX0ke2MuaXNfZGVtbyA\/ICcgPHNwYW4gY2xhc3M9ImNoYW4tYmFkZ2UgZGVtbyIgdGl0bGU9IlNvbG8gcGFyYSBlbnNlw7FhciBsYSB3ZWIsIG5vIGVzIHVuYSB0aWVuZGEgcmVhbCI+ZGVtbzwvc3Bhbj4nIDogJyd9JHtsb3dTdG9jayA\/ICcgPHNwYW4gY2xhc3M9ImNoYW4tYmFkZ2UgbG93Ij5zdG9jayBiYWpvPC9zcGFuPicgOiAnJ308L3NwYW4+CiAgICAgICAgPHNwYW4gaWQ9ImNoYW4tY2FyZXQtJHtjLmlkfSIgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTtmb250LXdlaWdodDo0MDA7Ij4ke2lzT3BlbiA\/ICfilr4gb2N1bHRhcicgOiAn4pa4IHZlciAvIGVkaXRhcid9PC9zcGFuPgogICAgICA8L2J1dHRvbj4KICAgICAgPGRpdiBpZD0iY2hhbi1kZXRhaWwtJHtjLmlkfSIgY2xhc3M9IiR7aXNPcGVuID8gJycgOiAnaGlkZGVuJ30iIHN0eWxlPSJwYWRkaW5nOjAgMTBweCAxMHB4OyI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSIgc3R5bGU9Im1hcmdpbi10b3A6MDsiPlN0b2NrIGVuIGVzdGEgdGllbmRhPC9kaXY+CiAgICAgICAgPGRpdiBpZD0iY2hhbi1zdG9jay0ke2MuaWR9Ij48L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0icGVkY2FyZCIgc3R5bGU9Im1hcmdpbi10b3A6MTRweDsiPgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJwZWRjYXJkLWhlYWRlciIgb25jbGljaz0idG9nZ2xlUGVkY2FyZCgnc3RvY2thZGotJHtjLmlkfScpIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBlZGNhcmQtdGl0bGUiPkHDsWFkaXIgc3RvY2sgYSBtYW5vIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDo0MDA7Y29sb3I6dmFyKC0tc3VhdmUpOyI+KHNpbiBwZWRpZG8gbmkgdmVudGEpPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gaWQ9InBlZGNhcmQtY2FyZXQtc3RvY2thZGotJHtjLmlkfSIgY2xhc3M9InBlZGNhcmQtY2FyZXQiPuKWuCB2ZXI8L3NwYW4+CiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIDxkaXYgaWQ9InBlZGNhcmQtYm9keS1zdG9ja2Fkai0ke2MuaWR9IiBjbGFzcz0icGVkY2FyZC1ib2R5IGhpZGRlbiI+CiAgICAgICAgICAgIDxwIHN0eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS1zdWF2ZSk7bWFyZ2luOi00cHggMCA2cHg7Ij5QYXJhIGN1YW5kbyBlc3RhIHRpZW5kYSB5YSB0aWVuZSBmw61zaWNhbWVudGUgc3RvY2sg4oCUIHJlcGFydG8gZW4gcGVyc29uYSwgY29udGVvIGluaWNpYWwuLi4g4oCUIHNpbiBjcmVhciB1biBwZWRpZG8uIFNlIHN1bWEgZGlyZWN0byBhIGxvIHF1ZSB5YSB0aWVuZS48L3A+CiAgICAgICAgICAgIDxkaXYgaWQ9InN0b2NrYWRqLXR5cGUtJHtjLmlkfSIgY2xhc3M9InNpemVidG5zIiBzdHlsZT0ibWFyZ2luOjAgMCA4cHg7Ij48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93IiBzdHlsZT0iYWxpZ24taXRlbXM6ZmxleC1lbmQ7ZmxleC13cmFwOndyYXA7Ij4KICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJmbGV4OjI7bWluLXdpZHRoOjE4MHB4OyI+PGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij5JbHVzdHJhY2nDs24gLyBwcm9kdWN0bzwvbGFiZWw+PHNlbGVjdCBpZD0ic3RvY2thZGotaWxsLSR7Yy5pZH0iIG9uY2hhbmdlPSJvbkFkbWluU3RvY2tBZGp1c3RJbGxDaGFuZ2UoJyR7Yy5pZH0nKSIgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzo2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjZweDsiPiR7aWxsdXN0cmF0aW9uT3B0aW9ucyhudWxsLCBhZG1pblN0b2NrQWRqdXN0VHlwZVtjLmlkXSB8fCAnbGFtaW5hJyl9PC9zZWxlY3Q+PC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWluLXdpZHRoOjkwcHg7Ij48bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXN1YXZlKTsiPkZvcm1hdG88L2xhYmVsPjxzZWxlY3QgaWQ9InN0b2NrYWRqLWZtdC0ke2MuaWR9IiBzdHlsZT0id2lkdGg6MTAwJTtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6NnB4OyI+PC9zZWxlY3Q+PC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWF4LXdpZHRoOjgwcHg7Ij48bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXN1YXZlKTsiPkNhbnRpZGFkPC9sYWJlbD48aW5wdXQgaWQ9InN0b2NrYWRqLXF0eS0ke2MuaWR9IiB0eXBlPSJudW1iZXIiIG1pbj0iMSIgdmFsdWU9IjEiIHN0eWxlPSJ3aWR0aDoxMDAlO3BhZGRpbmc6NnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo2cHg7Ij48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyIgc3R5bGU9ImFsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LXdyYXA6d3JhcDttYXJnaW4tdG9wOjZweDsiPgogICAgICAgICAgICAgIDxpbnB1dCBpZD0ic3RvY2thZGotbm90ZS0ke2MuaWR9IiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iTm90YSAob3BjaW9uYWwsIGVqLiAnY29udGVvIGluaWNpYWwgMDkvMjAyNicpIiBzdHlsZT0iZmxleDoxO21pbi13aWR0aDoxODBweDtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6NnB4OyI+CiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJzdG9ja2Fkai1idG4tJHtjLmlkfSIgY2xhc3M9ImJ0biBzbWFsbCIgb25jbGljaz0ic3VibWl0QWRtaW5TdG9ja0FkanVzdCgnJHtjLmlkfScpIj4rIEHDsWFkaXIgc3RvY2s8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9InN0b2NrYWRqLW1zZy0ke2MuaWR9IiBzdHlsZT0iZm9udC1zaXplOjEycHg7bWFyZ2luLXRvcDo0cHg7Ij48L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ic3RvY2thZGotbGlzdC0ke2MuaWR9Ij48L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciIHN0eWxlPSJhbGlnbi1pdGVtczpmbGV4LWVuZDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tdG9wOjE0cHg7bWFyZ2luLWJvdHRvbTowO2JvcmRlci10b3A6MXB4IGRhc2hlZCB2YXIoLS1saW5lKTtwYWRkaW5nLXRvcDoxMHB4OyI+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJmbGV4OjE7bWluLXdpZHRoOjE1MHB4OyI+CiAgICAgICAgICAgIDxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tc3VhdmUpOyI+Tm9tYnJlPC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IGlkPSJjaGFuLW5hbWUtJHtjLmlkfSIgdmFsdWU9IiR7Yy5uYW1lfSIgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzo2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjZweDsiPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJmbGV4OjE7bWluLXdpZHRoOjE1MHB4OyI+CiAgICAgICAgICAgIDxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tc3VhdmUpOyI+Tm9tYnJlIGRlIGNvbnRhY3RvPC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IGlkPSJjaGFuLWNvbnRhY3RuYW1lLSR7Yy5pZH0iIHZhbHVlPSIke2VzY2FwZUF0dHIoYy5jb250YWN0X25hbWUpfSIgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzo2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjZweDsiPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJmbGV4OjE7bWluLXdpZHRoOjE1MHB4OyI+CiAgICAgICAgICAgIDxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tc3VhdmUpOyI+RW1haWwgZGUgY29udGFjdG88L2xhYmVsPgogICAgICAgICAgICA8aW5wdXQgaWQ9ImNoYW4tZW1haWwtJHtjLmlkfSIgdmFsdWU9IiR7ZXNjYXBlQXR0cihjLmNvbnRhY3RfZW1haWwpfSIgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzo2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjZweDsiPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJmbGV4OjE7bWluLXdpZHRoOjEzMHB4OyI+CiAgICAgICAgICAgIDxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tc3VhdmUpOyI+VGVsw6lmb25vPC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IGlkPSJjaGFuLXBob25lLSR7Yy5pZH0iIHZhbHVlPSIke2VzY2FwZUF0dHIoYy5waG9uZSl9IiBzdHlsZT0id2lkdGg6MTAwJTtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6NnB4OyI+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9ImZsZXg6MTttaW4td2lkdGg6MTMwcHg7Ij4KICAgICAgICAgICAgPGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij5DaXVkYWQ8L2xhYmVsPgogICAgICAgICAgICA8aW5wdXQgaWQ9ImNoYW4tY2l0eS0ke2MuaWR9IiB2YWx1ZT0iJHtlc2NhcGVBdHRyKGMuY2l0eSl9IiBzdHlsZT0id2lkdGg6MTAwJTtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6NnB4OyI+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9ImZsZXg6MCAxIDEyMHB4O21pbi13aWR0aDoxMTBweDsiPgogICAgICAgICAgICA8bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXN1YXZlKTsiPklkaW9tYTwvbGFiZWw+CiAgICAgICAgICAgIDxzZWxlY3QgaWQ9ImNoYW4tbGFuZy0ke2MuaWR9IiBzdHlsZT0id2lkdGg6MTAwJTtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6NnB4OyI+CiAgICAgICAgICAgICAgJHtbWycnLCdBdXRvbcOhdGljbyddLFsnZXMnLCdFc3Bhw7FvbCddLFsnZW4nLCdFbmdsaXNoJ10sWydpdCcsJ0l0YWxpYW5vJ11dLm1hcCgoW2ssbF0pPT5gPG9wdGlvbiB2YWx1ZT0iJHtrfSIgJHsoYy5sYW5ndWFnZXx8JycpPT09az8nc2VsZWN0ZWQnOicnfT4ke2x9PC9vcHRpb24+YCkuam9pbignJyl9CiAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJmbGV4OjE7bWluLXdpZHRoOjE1MHB4OyI+CiAgICAgICAgICAgIDxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tc3VhdmUpOyI+Q29udHJhc2XDsWEgZGUgYWNjZXNvPC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDo0cHg7Ij4KICAgICAgICAgICAgICA8aW5wdXQgaWQ9ImNoYW4tcGFzcy0ke2MuaWR9IiB0eXBlPSJwYXNzd29yZCIgYXV0b2NvbXBsZXRlPSJuZXctcGFzc3dvcmQiIHBsYWNlaG9sZGVyPSIkeyhjLnBhc3N3b3JkX2hhc2h8fGMucGFzc3dvcmQpID8gJ1RpZW5lIGNvbnRyYXNlw7FhIMK3IGVzY3JpYmUgdW5hIG51ZXZhIHBhcmEgY2FtYmlhcmxhJyA6ICdTaW4gY29udHJhc2XDsWEgKHNpbiBhY2Nlc28gcHJvcGlvKSd9IiB2YWx1ZT0iIiBzdHlsZT0id2lkdGg6MTAwJTtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6NnB4OyI+CiAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAkeyhjLnBhc3N3b3JkX2hhc2h8fGMucGFzc3dvcmQpID8gYDxsYWJlbCBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDo2cHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW4tdG9wOjRweDsiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImNoYW4tcGFzc29mZi0ke2MuaWR9Ij4gUXVpdGFyIGVsIGFjY2VzbyBkZSBlc3RhIHRpZW5kYTwvbGFiZWw+YCA6ICcnfQogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRldGFpbHMgc3R5bGU9Im1hcmdpbi10b3A6MTBweDsiPgogICAgICAgICAgPHN1bW1hcnkgc3R5bGU9ImN1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTsiPlZlciBkYXRvcyBkZSBmYWN0dXJhY2nDs248L3N1bW1hcnk+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciIHN0eWxlPSJhbGlnbi1pdGVtczpmbGV4LWVuZDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tdG9wOjhweDttYXJnaW4tYm90dG9tOjA7Ij4KICAgICAgICAgICAgPGRpdiBzdHlsZT0iZmxleDoxO21pbi13aWR0aDoxNzBweDsiPgogICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tc3VhdmUpOyI+Tm9tYnJlIGZpc2NhbCAvIHJhesOzbiBzb2NpYWw8L2xhYmVsPgogICAgICAgICAgICAgIDxpbnB1dCBpZD0iY2hhbi1iaWxsbmFtZS0ke2MuaWR9IiB2YWx1ZT0iJHtlc2NhcGVBdHRyKGMuYmlsbGluZ19uYW1lKX0iIHBsYWNlaG9sZGVyPSJTaW4gaW5kaWNhciIgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzo2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjZweDsiPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBzdHlsZT0iZmxleDoxO21pbi13aWR0aDoxNzBweDsiPgogICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tc3VhdmUpOyI+RGlyZWNjacOzbjwvbGFiZWw+CiAgICAgICAgICAgICAgPGlucHV0IGlkPSJjaGFuLWFkZHJlc3MtJHtjLmlkfSIgdmFsdWU9IiR7ZXNjYXBlQXR0cihjLmFkZHJlc3MpfSIgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzo2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjZweDsiPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBzdHlsZT0iZmxleDoxO21pbi13aWR0aDoxMTBweDsiPgogICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tc3VhdmUpOyI+Q8OzZGlnbyBwb3N0YWw8L2xhYmVsPgogICAgICAgICAgICAgIDxpbnB1dCBpZD0iY2hhbi1wb3N0YWwtJHtjLmlkfSIgdmFsdWU9IiR7ZXNjYXBlQXR0cihjLnBvc3RhbF9jb2RlKX0iIHN0eWxlPSJ3aWR0aDoxMDAlO3BhZGRpbmc6NnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo2cHg7Ij4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZsZXg6MTttaW4td2lkdGg6MTMwcHg7Ij4KICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXN1YXZlKTsiPk5JRSAvIENJRjwvbGFiZWw+CiAgICAgICAgICAgICAgPGlucHV0IGlkPSJjaGFuLXRheGlkLSR7Yy5pZH0iIHZhbHVlPSIke2VzY2FwZUF0dHIoYy50YXhfaWQpfSIgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzo2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjZweDsiPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW46NHB4IDAgMDsiPkVzdG9zIGRhdG9zIGxvcyByZWxsZW5hIGxhIHByb3BpYSB0aWVuZGEgZGVzZGUgc3UgYWNjZXNvLCBwYXJhIHN1cyBmYWN0dXJhcy48L3A+CiAgICAgICAgPC9kZXRhaWxzPgogICAgICAgIDxkZXRhaWxzIHN0eWxlPSJtYXJnaW4tdG9wOjEwcHg7Ij4KICAgICAgICAgIDxzdW1tYXJ5IHN0eWxlPSJjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij5WZXIgZGF0b3MgZGUgZW52w61vJHtjLmRlbGl2ZXJ5X2hvdXJzID8gJyDCtyAnK2RlbGl2ZXJ5SG91cnNMYWJlbChjLmRlbGl2ZXJ5X2hvdXJzKSA6ICcnfTwvc3VtbWFyeT4KICAgICAgICAgIDxsYWJlbCBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW4tdG9wOjhweDtjdXJzb3I6cG9pbnRlcjsiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJjaGFuLXNoaXBzYW1lLSR7Yy5pZH0iICR7Yy5zaGlwX3NhbWVfYXNfYmlsbGluZyE9PWZhbHNlPydjaGVja2VkJzonJ30gc3R5bGU9IndpZHRoOmF1dG87Ij4gTWlzbWEgZGlyZWNjacOzbiBxdWUgbGEgZGUgZmFjdHVyYWNpw7NuCiAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgPGRpdiBjbGFzcz0icm93IiBzdHlsZT0iYWxpZ24taXRlbXM6ZmxleC1lbmQ7ZmxleC13cmFwOndyYXA7bWFyZ2luLXRvcDo4cHg7bWFyZ2luLWJvdHRvbTowOyI+CiAgICAgICAgICAgICR7W1snc2hpcGFkZHInLCdEaXJlY2Npw7NuIGRlIGVudsOtbycsYy5zaGlwX2FkZHJlc3MsMTcwXSxbJ3NoaXBwb3N0YWwnLCdDw7NkaWdvIHBvc3RhbCcsYy5zaGlwX3Bvc3RhbF9jb2RlLDExMF0sWydzaGlwY2l0eScsJ0NpdWRhZCcsYy5zaGlwX2NpdHksMTMwXSxbJ3NoaXBwcm92JywnUHJvdmluY2lhJyxjLnNoaXBfcHJvdmluY2UsMTMwXSxbJ3NoaXBwaG9uZScsJ1RlbMOpZm9ubyAodHJhbnNwb3J0aXN0YSknLGMuc2hpcF9waG9uZSwxMzBdXS5tYXAoKFtrLGwsdix3XSk9PmAKICAgICAgICAgICAgPGRpdiBzdHlsZT0iZmxleDoxO21pbi13aWR0aDoke3d9cHg7Ij4KICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXN1YXZlKTsiPiR7bH08L2xhYmVsPgogICAgICAgICAgICAgIDxpbnB1dCBpZD0iY2hhbi0ke2t9LSR7Yy5pZH0iIHZhbHVlPSIke2VzY2FwZUF0dHIodil9IiBzdHlsZT0id2lkdGg6MTAwJTtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6NnB4OyI+CiAgICAgICAgICAgIDwvZGl2PmApLmpvaW4oJycpfQogICAgICAgICAgICA8ZGl2IHN0eWxlPSJmbGV4OjE7bWluLXdpZHRoOjE1MHB4OyI+CiAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij5Ib3JhcmlvIGRlIHJlY2VwY2nDs248L2xhYmVsPgogICAgICAgICAgICAgIDxzZWxlY3QgaWQ9ImNoYW4taG91cnMtJHtjLmlkfSIgc3R5bGU9IndpZHRoOjEwMCU7cGFkZGluZzo2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjZweDsiPgogICAgICAgICAgICAgICAgJHtbWycnLCfigJQgU2luIGluZGljYXIg4oCUJ10sLi4uT2JqZWN0LmVudHJpZXMoREVMSVZFUllfSE9VUlMpXS5tYXAoKFtrLGxdKT0+YDxvcHRpb24gdmFsdWU9IiR7a30iICR7KGMuZGVsaXZlcnlfaG91cnN8fCcnKT09PWs\/J3NlbGVjdGVkJzonJ30+JHtsfTwvb3B0aW9uPmApLmpvaW4oJycpfQogICAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBzdHlsZT0iZmxleDoyO21pbi13aWR0aDoyMDBweDsiPgogICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT0iZm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tc3VhdmUpOyI+Tm90YXMgcGFyYSBsYSBlbnRyZWdhPC9sYWJlbD4KICAgICAgICAgICAgICA8aW5wdXQgaWQ9ImNoYW4tbm90ZXMtJHtjLmlkfSIgdmFsdWU9IiR7ZXNjYXBlQXR0cihjLmRlbGl2ZXJ5X25vdGVzKX0iIHN0eWxlPSJ3aWR0aDoxMDAlO3BhZGRpbmc6NnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo2cHg7Ij4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgPGRpdiBjbGFzcz0icm93IiBzdHlsZT0iYWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO21hcmdpbi10b3A6MTJweDttYXJnaW4tYm90dG9tOjA7Ij4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIHNtYWxsIiBvbmNsaWNrPSJzYXZlQ2hhbm5lbCgnJHtjLmlkfScpIj5HdWFyZGFyPC9idXR0b24+CiAgICAgICAgICAke2MuaXNfZGVtbyA\/IGA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBzbWFsbCIgb25jbGljaz0icmVzZXREZW1vKHRoaXMpIiB0aXRsZT0iQm9ycmEgbG8gZGUgbGEgRGVtbyB5IGxhIGRlamEgY29uIHBlZGlkb3MgeSB2ZW50YXMgZGUgZWplbXBsbyI+UmVzdGFibGVjZXIgbGEgRGVtbzwvYnV0dG9uPmAgOiBgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gc2Vjb25kYXJ5IHNtYWxsIiBvbmNsaWNrPSJhc2tEZWxldGVDaGFubmVsKCcke2MuaWR9JywgdGhpcykiPkJvcnJhcjwvYnV0dG9uPmB9CiAgICAgICAgICA8c3BhbiBpZD0iY2hhbi1tc2ctJHtjLmlkfSIgc3R5bGU9ImZvbnQtc2l6ZToxMnB4OyI+PC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PmA7CiAgfSkuam9pbignJyk7CiAgbGlzdC5mb3JFYWNoKGM9PnJlbmRlclN0b2NrV2l0aFR5cGVGaWx0ZXIoJ2NoYW4tc3RvY2stJytjLmlkLCBjb21wdXRlQ2hhbm5lbFN0b2NrUm93cyhjLmlkKSwgY2hhbm5lbFN0b2NrVGFibGVIdG1sKSk7CiAgbGlzdC5mb3JFYWNoKGM9PnsgYnVpbGRTdG9ja0FkanVzdFR5cGVCdXR0b25zKGMuaWQpOyBvbkFkbWluU3RvY2tBZGp1c3RJbGxDaGFuZ2UoYy5pZCk7IHJlbmRlckFkbWluU3RvY2tBZGp1c3RMaXN0KGMuaWQpOyB9KTsKfQpmdW5jdGlvbiB0b2dnbGVDaGFubmVsRGV0YWlsKGlkKXsKICBjb25zdCBkZXRhaWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hhbi1kZXRhaWwtJytpZCk7CiAgY29uc3QgY2FyZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hhbi1jYXJldC0nK2lkKTsKICBpZighZGV0YWlsKSByZXR1cm47CiAgY29uc3Qgd2lsbFNob3cgPSBkZXRhaWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdoaWRkZW4nKTsKICBkZXRhaWwuY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJyk7CiAgaWYoY2FyZXQpIGNhcmV0LnRleHRDb250ZW50ID0gd2lsbFNob3cgPyAn4pa+IG9jdWx0YXInIDogJ+KWuCB2ZXIgLyBlZGl0YXInOwogIGlmKHdpbGxTaG93KSBleHBhbmRlZENoYW5uZWxJZHMuYWRkKGlkKTsgZWxzZSBleHBhbmRlZENoYW5uZWxJZHMuZGVsZXRlKGlkKTsKfQpmdW5jdGlvbiB0b2dnbGVDaGFubmVsUGFzc3dvcmRWaXNpYmlsaXR5KGlkKXsKICBjb25zdCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFuLXBhc3MtJytpZCk7CiAgY29uc3QgZXllID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYW4tcGFzcy1leWUtJytpZCk7CiAgaWYoIWlucHV0KSByZXR1cm47CiAgY29uc3Qgc2hvd2luZyA9IGlucHV0LnR5cGUgPT09ICd0ZXh0JzsKICBpbnB1dC50eXBlID0gc2hvd2luZyA\/ICdwYXNzd29yZCcgOiAndGV4dCc7Cn0KYXN5bmMgZnVuY3Rpb24gc2F2ZUNoYW5uZWwoaWQpewogIGNvbnN0IG5hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hhbi1uYW1lLScraWQpLnZhbHVlLnRyaW0oKTsKICBjb25zdCBjb250YWN0X25hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hhbi1jb250YWN0bmFtZS0nK2lkKS52YWx1ZS50cmltKCk7CiAgY29uc3QgY29udGFjdF9lbWFpbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFuLWVtYWlsLScraWQpLnZhbHVlLnRyaW0oKTsKICBjb25zdCBwaG9uZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFuLXBob25lLScraWQpLnZhbHVlLnRyaW0oKTsKICBjb25zdCBjaXR5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYW4tY2l0eS0nK2lkKS52YWx1ZS50cmltKCk7CiAgY29uc3QgcGFzcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFuLXBhc3MtJytpZCkudmFsdWUudHJpbSgpOwogIGNvbnN0IGJpbGxpbmdfbmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFuLWJpbGxuYW1lLScraWQpLnZhbHVlLnRyaW0oKTsKICBjb25zdCBhZGRyZXNzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYW4tYWRkcmVzcy0nK2lkKS52YWx1ZS50cmltKCk7CiAgY29uc3QgcG9zdGFsX2NvZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hhbi1wb3N0YWwtJytpZCkudmFsdWUudHJpbSgpOwogIGNvbnN0IHRheF9pZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFuLXRheGlkLScraWQpLnZhbHVlLnRyaW0oKTsKICBjb25zdCBtc2dFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFuLW1zZy0nK2lkKTsKICBpZighbmFtZSl7IG1zZ0VsLnRleHRDb250ZW50ID0gJ0VsIG5vbWJyZSBubyBwdWVkZSBxdWVkYXIgdmFjw61vJzsgcmV0dXJuOyB9CiAgY29uc3Qgc2hpcFZhbCA9IGsgPT4gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBjaGFuLSR7a30tJHtpZH1gKT8udmFsdWUgfHwgJycpLnRyaW0oKSB8fCBudWxsOwogIGNvbnN0IHNoaXAgPSB7CiAgICBzaGlwX3NhbWVfYXNfYmlsbGluZzogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYW4tc2hpcHNhbWUtJytpZCk\/LmNoZWNrZWQgIT09IGZhbHNlLAogICAgc2hpcF9hZGRyZXNzOiBzaGlwVmFsKCdzaGlwYWRkcicpLCBzaGlwX3Bvc3RhbF9jb2RlOiBzaGlwVmFsKCdzaGlwcG9zdGFsJyksIHNoaXBfY2l0eTogc2hpcFZhbCgnc2hpcGNpdHknKSwKICAgIHNoaXBfcHJvdmluY2U6IHNoaXBWYWwoJ3NoaXBwcm92JyksIHNoaXBfcGhvbmU6IHNoaXBWYWwoJ3NoaXBwaG9uZScpLAogICAgZGVsaXZlcnlfaG91cnM6IHNoaXBWYWwoJ2hvdXJzJyksIGRlbGl2ZXJ5X25vdGVzOiBzaGlwVmFsKCdub3RlcycpLAogICAgbGFuZ3VhZ2U6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFuLWxhbmctJytpZCk\/LnZhbHVlIHx8IG51bGwKICB9OwogIGNvbnN0IG51ZXZvID0ge25hbWUsIGNvbnRhY3RfbmFtZTogY29udGFjdF9uYW1lIHx8IG51bGwsIGNvbnRhY3RfZW1haWw6IGNvbnRhY3RfZW1haWwgfHwgbnVsbCwgcGhvbmU6IHBob25lIHx8IG51bGwsIGNpdHk6IGNpdHkgfHwgbnVsbCwgcGFzc3dvcmQ6IHBhc3MgfHwgbnVsbCwgYmlsbGluZ19uYW1lOiBiaWxsaW5nX25hbWUgfHwgbnVsbCwgYWRkcmVzczogYWRkcmVzcyB8fCBudWxsLCBwb3N0YWxfY29kZTogcG9zdGFsX2NvZGUgfHwgbnVsbCwgdGF4X2lkOiB0YXhfaWQgfHwgbnVsbCwgLi4uc2hpcH07CiAgLy8gMjkvMDkvMjAyNiAocmVwYXNvKTogc29sbyBzZSBtYW5kYW4gbG9zIGNhbXBvcyBxdWUgQWRtaW4gaGEgY2FtYmlhZG8uIEFudGVzIHNlIG1hbmRhYmFuIHRvZG9zIHksCiAgLy8gc2kgbGEgdGllbmRhIGhhYsOtYSBjYW1iaWFkbyBtaWVudHJhcyBzdSBjb250cmFzZcOxYSBvIHN1IGRpcmVjY2nDs24sIHNlIGxlIHZvbHbDrWFuIGEgcG9uZXIgbGFzIHZpZWphcy4KICBjb25zdCBhbnRlcyA9IHJlbmRlcmVkQ2hhbm5lbHNbaWRdIHx8IHt9OwogIGNvbnN0IGlndWFsID0gKGEsIGIpID0+IChhPT09dHJ1ZXx8YT09PWZhbHNlfHxiPT09dHJ1ZXx8Yj09PWZhbHNlKSA\/IChhIT09ZmFsc2UpPT09KGIhPT1mYWxzZSkgOiBTdHJpbmcoYT8\/JycpLnRyaW0oKT09PVN0cmluZyhiPz8nJykudHJpbSgpOwogIGNvbnN0IGNhbWJpb3MgPSB7fTsKICBPYmplY3Qua2V5cyhudWV2bykuZm9yRWFjaChrPT57IGlmKCFpZ3VhbChudWV2b1trXSwgYW50ZXNba10pKSBjYW1iaW9zW2tdID0gbnVldm9ba107IH0pOwogIC8vIDA0LzEwLzIwMjY6IGxhcyBjb250cmFzZcOxYXMgc2UgZ3VhcmRhbiBjaWZyYWRhcyAoaHVlbGxhKSB5IEFkbWluIHlhIG5vIGxhcyB2ZS4gU2kgc2UgZXNjcmliZSB1bmEgbnVldmEsIHNlIG1hbmRhCiAgLy8gZW4gwqtwYXNzd29yZMK7IHkgbGEgYmFzZSBkZSBkYXRvcyBndWFyZGEgc3UgaHVlbGxhIHkgYm9ycmEgZWwgdGV4dG87IMKrUXVpdGFyIGVsIGFjY2Vzb8K7IGJvcnJhIGxhIGh1ZWxsYS4KICBkZWxldGUgY2FtYmlvcy5wYXNzd29yZDsKICBpZihwYXNzKSBjYW1iaW9zLnBhc3N3b3JkID0gcGFzczsKICBpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hhbi1wYXNzb2ZmLScraWQpPy5jaGVja2VkICYmICFwYXNzKXsKICAgIGlmKCdwYXNzd29yZF9oYXNoJyBpbiBhbnRlcykgY2FtYmlvcy5wYXNzd29yZF9oYXNoID0gbnVsbDsgZWxzZSBjYW1iaW9zLnBhc3N3b3JkID0gbnVsbDsgLy8gKGFudGVzIGRlIHBlZ2FyIGVsIFNRTCBubyBoYXkgaHVlbGxhKQogIH0KICBpZighT2JqZWN0LmtleXMoY2FtYmlvcykubGVuZ3RoKXsgbXNnRWwudGV4dENvbnRlbnQgPSAnU2luIGNhbWJpb3MnOyBzZXRUaW1lb3V0KCgpPT57IGlmKG1zZ0VsKSBtc2dFbC50ZXh0Q29udGVudD0nJzsgfSwgMjAwMCk7IHJldHVybjsgfQogIGNvbnN0IHtlcnJvcn0gPSBhd2FpdCBzYi5mcm9tKCdjaGFubmVscycpLnVwZGF0ZShjYW1iaW9zKS5lcSgnaWQnLCBpZCk7CiAgbXNnRWwudGV4dENvbnRlbnQgPSBlcnJvciA\/ICdFcnJvcicgOiAnR3VhcmRhZG8nOwogIGlmKCFlcnJvcil7IGxvZ0FjdGl2aXR5KCdkYXRvcycsICdFZGl0w7MgbG9zIGRhdG9zIGRlIGxhIHRpZW5kYSAnICsgbmFtZSk7IHNldFRpbWVvdXQoKCk9PnsgaWYobXNnRWwpIG1zZ0VsLnRleHRDb250ZW50PScnOyB9LCAyMDAwKTsgbG9hZEFkbWluRGF0YSgpOyB9Cn0KbGV0IHBlbmRpbmdEZWxldGVDaGFubmVsSWQgPSBudWxsOwpmdW5jdGlvbiBhc2tEZWxldGVDaGFubmVsKGlkLCBidG4pewogIGlmKHBlbmRpbmdEZWxldGVDaGFubmVsSWQgPT09IGlkKXsKICAgIGRlbGV0ZUNoYW5uZWwoaWQsIGJ0bik7CiAgICBwZW5kaW5nRGVsZXRlQ2hhbm5lbElkID0gbnVsbDsKICAgIHJldHVybjsKICB9CiAgcGVuZGluZ0RlbGV0ZUNoYW5uZWxJZCA9IGlkOwogIGJ0bi50ZXh0Q29udGVudCA9ICfCv1NlZ3Vybz8gU8OtLCBib3JyYXInOwogIGJ0bi5zdHlsZS5iYWNrZ3JvdW5kID0gJyNhMTI2MjYnOwogIGJ0bi5zdHlsZS5jb2xvciA9ICcjZmZmJzsKICBidG4uc3R5bGUuYm9yZGVyQ29sb3IgPSAnI2ExMjYyNic7CiAgc2V0VGltZW91dCgoKT0+ewogICAgaWYocGVuZGluZ0RlbGV0ZUNoYW5uZWxJZCA9PT0gaWQpewogICAgICBwZW5kaW5nRGVsZXRlQ2hhbm5lbElkID0gbnVsbDsKICAgICAgYnRuLnRleHRDb250ZW50ID0gJ0JvcnJhcic7CiAgICAgIGJ0bi5zdHlsZS5iYWNrZ3JvdW5kID0gJyc7CiAgICAgIGJ0bi5zdHlsZS5jb2xvciA9ICcnOwogICAgICBidG4uc3R5bGUuYm9yZGVyQ29sb3IgPSAnJzsKICAgIH0KICB9LCA2MDAwKTsKfQovLyAxOS8wOS8yMDI2OiBsYSBEZW1vIGVzIGVsIGVzY2FwYXJhdGUgcGFyYSB0aWVuZGFzIG51ZXZhcy4gRXN0ZSBib3TDs24gbGEgZGVqYSBjb24gdW4gZWplbXBsbwovLyBjb21wbGV0byAoMiBwZWRpZG9zIGVudmlhZG9zLCAxIHBlbmRpZW50ZSB5IHZlbnRhcyBkZSAzIG1lc2VzLCBjb24gZmVjaGFzIHJlbGF0aXZhcyBhIGhveSkg4oCUCi8vIGZ1bmNpw7NuIHJlc2V0X2RlbW8oKSBlbiBTdXBhYmFzZSwgcXVlIHNvbG8gdG9jYSBkYXRvcyBkZSBsYSBjdWVudGEgRGVtby4KYXN5bmMgZnVuY3Rpb24gcmVzZXREZW1vKGJ0bil7CiAgaWYoIShhd2FpdCBjb25maXJtYSgnwr9SZXN0YWJsZWNlciBsYSBjdWVudGEgRGVtbz9cblxuU2UgYm9ycmFuIHN1cyBwZWRpZG9zLCB2ZW50YXMgeSBzdG9jayB5IHNlIHBvbmVuIGRhdG9zIGRlIGVqZW1wbG8gbnVldm9zIChwZWRpZG9zIGVudmlhZG9zLCB1bm8gcGVuZGllbnRlIHkgdmVudGFzIGRlIGxvcyDDumx0aW1vcyAzIG1lc2VzKS4gTm8gYWZlY3RhIGEgbmluZ3VuYSB0aWVuZGEgcmVhbCBuaSBhIHR1IHN0b2NrLicpKSkgcmV0dXJuOwogIGNvbnN0IG9sZCA9IGJ0bi50ZXh0Q29udGVudDsKICBidG4uZGlzYWJsZWQgPSB0cnVlOyBidG4udGV4dENvbnRlbnQgPSAnUmVzdGFibGVjaWVuZG\/igKYnOwogIGNvbnN0IHtlcnJvcn0gPSBhd2FpdCBzYi5ycGMoJ3Jlc2V0X2RlbW8nKTsKICBidG4uZGlzYWJsZWQgPSBmYWxzZTsKICBpZihlcnJvcil7IGJ0bi50ZXh0Q29udGVudCA9IG9sZDsgYWxlcnQoJ05vIHNlIHB1ZG8gcmVzdGFibGVjZXI6ICcgKyBlcnJvci5tZXNzYWdlKTsgcmV0dXJuOyB9CiAgYnRuLnRleHRDb250ZW50ID0gJ+KckyBEZW1vIHJlc3RhYmxlY2lkYSc7CiAgbG9nQWN0aXZpdHkoJ2RhdG9zJywgJ1Jlc3RhYmxlY2nDsyBsYSBjdWVudGEgRGVtbyBjb24gZGF0b3MgZGUgZWplbXBsbycpOwogIHNldFRpbWVvdXQoKCk9PnsgYnRuLnRleHRDb250ZW50ID0gb2xkOyB9LCAyNTAwKTsKICBsb2FkQWRtaW5EYXRhKCk7Cn0KYXN5bmMgZnVuY3Rpb24gZGVsZXRlQ2hhbm5lbChpZCwgYnRuKXsKICBjb25zdCBjaE5hbWUgPSAoYWRtaW5DaGFubmVsc0xpc3R8fFtdKS5maW5kKGM9PmMuaWQ9PT1pZCk\/Lm5hbWUgfHwgJyc7CiAgY29uc3Qge2Vycm9yfSA9IGF3YWl0IHNiLmZyb20oJ2NoYW5uZWxzJykuZGVsZXRlKCkuZXEoJ2lkJywgaWQpOwogIGlmKGVycm9yKXsKICAgIGNvbnN0IG1zZ0VsID0gYnRuLnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignW2lkXj0iY2hhbi1tc2ctIl0nKTsKICAgIGlmKC9mb3JlaWduIGtleXx2aW9sYXRlcy8udGVzdChlcnJvci5tZXNzYWdlKSl7CiAgICAgIGlmKG1zZ0VsKSBtc2dFbC50ZXh0Q29udGVudCA9ICdObyBzZSBwdWVkZSBib3JyYXI6IHRpZW5lIHBlZGlkb3MgbyB2ZW50YXMgcmVnaXN0cmFkb3MuJzsKICAgIH0gZWxzZSBpZihtc2dFbCl7CiAgICAgIG1zZ0VsLnRleHRDb250ZW50ID0gJ0Vycm9yOiAnICsgZXJyb3IubWVzc2FnZTsKICAgIH0KICAgIGJ0bi50ZXh0Q29udGVudCA9ICdCb3JyYXInOwogICAgYnRuLnN0eWxlLmJhY2tncm91bmQgPSAnJzsgYnRuLnN0eWxlLmNvbG9yID0gJyc7IGJ0bi5zdHlsZS5ib3JkZXJDb2xvciA9ICcnOwogICAgcmV0dXJuOwogIH0KICBsb2dBY3Rpdml0eSgnZGF0b3MnLCAnQm9ycsOzIGxhIHRpZW5kYSAnICsgY2hOYW1lKTsKICBsb2FkQWRtaW5EYXRhKCk7Cn0KLy8gLS0tLS0tLS0tLSBTdG9jayBtZXRpZG8gYSBtYW5vIHBvciB0aWVuZGEgKHNpbiBwYXNhciBwb3IgdW4gcGVkaWRvKSAtLS0tLS0tLS0tCi8vIFZpdmUgZGVudHJvIGRlIGxhIHByb3BpYSB0YXJqZXRhIGRlIGNhZGEgdGllbmRhIChBZG1pbiDihpIgVGllbmRhcyksIGp1bnRvIGEgc3Ugc3RvY2sg4oCUIHBhcmEKLy8gY3VhbmRvIHVuYSB0aWVuZGEgeWEgdGllbmUgZsOtc2ljYW1lbnRlIHN0b2NrIChyZXBhcnRvIGVuIHBlcnNvbmEsIGNvbnRlbyBpbmljaWFsLi4uKSB5IG5vIHRpZW5lCi8vIHNlbnRpZG8gY3JlYXIgdW4gcGVkaWRvIGZhbHNvIHNvbG8gcGFyYSBxdWUgY3VlbnRlLiBTZSBndWFyZGEgZW4gc3UgcHJvcGlhIHRhYmxhCi8vIChzdG9ja19hZGp1c3RtZW50cykgeSBzZSBzdW1hIGEgImVudHJlZ2FkbyIgZW4gY29tcHV0ZUNoYW5uZWxTdG9ja1Jvd3MvY29tcHV0ZUNoYW5uZWxTdG9ja1Jvd3NSZW1vdGUsCi8vIGFzw60gcXVlIHRvZG8gbG8gZGVtw6FzIChzdG9jayBiYWpvLCBsbyBxdWUgcHVlZGUgcmVwb3J0YXIgY29tbyB2ZW5kaWRvLCBldGMuKSBsbyB0aWVuZSBlbiBjdWVudGEKLy8gYXV0b23DoXRpY2FtZW50ZS4KLy8gVGlwb3MgcXVlIHB1ZWRlIG9mcmVjZXIgIkHDsWFkaXIgc3RvY2sgYSBtYW5vIjogTMOhbWluYSB5IExpYnJldGEgc2llbXByZSAobm8gdGllbmVuCi8vIGludGVycnVwdG9yIGRlIHZpc2liaWxpZGFkKSwgbcOhcyBsb3MgdGlwb3MgZXh0cmEgcXVlIGVzdMOpbiBhY3RpdmFkb3MgYWhvcmEgbWlzbW8gZW4KLy8gQWRtaW4g4oaSIENhdMOhbG9nbyDihpIgVmlzaWJpbGlkYWQg4oCUIGlndWFsIHF1ZSBsYXMgcGVzdGHDsWFzIGRlbCBjYXTDoWxvZ28vcGVkaWRvcy92ZW50YXMuCmZ1bmN0aW9uIHN0b2NrQWRqdXN0QXZhaWxhYmxlVHlwZXMoKXsKICByZXR1cm4gWwogICAge2tleTonbGFtaW5hJywgbGFiZWw6J0zDoW1pbmFzJ30sCiAgICB7a2V5OidsaWJyZXRhJywgbGFiZWw6J0xpYnJldGFzJ30sCiAgICAuLi5FWFRSQV9TVE9DS19UWVBFUy5maWx0ZXIoaXNFeHRyYVR5cGVWaXNpYmxlKS5tYXAodD0+KHtrZXk6dC5rZXksIGxhYmVsOnQubGFiZWx9KSksCiAgXTsKfQpmdW5jdGlvbiBidWlsZFN0b2NrQWRqdXN0VHlwZUJ1dHRvbnMoY2hhbm5lbElkKXsKICBjb25zdCB3cmFwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0b2NrYWRqLXR5cGUtJytjaGFubmVsSWQpOwogIGlmKCF3cmFwKSByZXR1cm47CiAgY29uc3QgYXZhaWxhYmxlID0gc3RvY2tBZGp1c3RBdmFpbGFibGVUeXBlcygpOwogIGxldCBjdXJyZW50ID0gYWRtaW5TdG9ja0FkanVzdFR5cGVbY2hhbm5lbElkXSB8fCAnbGFtaW5hJzsKICAvLyBTaSBlbCB0aXBvIHF1ZSB0ZW7DrWEgZWxlZ2lkbyBlc3RhIHRpZW5kYSBkZWphIGRlIGVzdGFyIGRpc3BvbmlibGUgKHAuZWouIFJhw7psIGRlc2FjdGl2YQogIC8vICJwZWdhdGluYXMiIGVuIFZpc2liaWxpZGFkIG1pZW50cmFzIGVzYSBwZXN0YcOxYSBlc3RhYmEgcHVlc3RhKSwgdm9sdmVtb3MgYSBMw6FtaW5hIGVuIHZleiBkZQogIC8vIGRlamFyIHVuYSBwZXN0YcOxYSBhY3RpdmEgcXVlIHlhIG5vIGV4aXN0ZS4KICBpZighYXZhaWxhYmxlLnNvbWUodD0+dC5rZXk9PT1jdXJyZW50KSl7CiAgICBjdXJyZW50ID0gJ2xhbWluYSc7CiAgICBhZG1pblN0b2NrQWRqdXN0VHlwZVtjaGFubmVsSWRdID0gY3VycmVudDsKICAgIGNvbnN0IGlsbFNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdG9ja2Fkai1pbGwtJytjaGFubmVsSWQpOwogICAgaWYoaWxsU2VsKSBpbGxTZWwuaW5uZXJIVE1MID0gaWxsdXN0cmF0aW9uT3B0aW9ucyhudWxsLCBjdXJyZW50KTsKICB9CiAgd3JhcC5pbm5lckhUTUwgPSBhdmFpbGFibGUubWFwKHQ9PgogICAgYDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iJHt0LmtleT09PWN1cnJlbnQ\/J2FjdGl2ZSc6Jyd9IiBvbmNsaWNrPSJzZXRBZG1pblN0b2NrQWRqdXN0VHlwZSgnJHtjaGFubmVsSWR9JywnJHt0LmtleX0nKSI+JHt0LmxhYmVsfTwvYnV0dG9uPmAKICApLmpvaW4oJycpOwp9CmZ1bmN0aW9uIHNldEFkbWluU3RvY2tBZGp1c3RUeXBlKGNoYW5uZWxJZCwgdHlwZSl7CiAgYWRtaW5TdG9ja0FkanVzdFR5cGVbY2hhbm5lbElkXSA9IHR5cGU7CiAgYnVpbGRTdG9ja0FkanVzdFR5cGVCdXR0b25zKGNoYW5uZWxJZCk7CiAgY29uc3QgaWxsU2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0b2NrYWRqLWlsbC0nK2NoYW5uZWxJZCk7CiAgaWYoaWxsU2VsKSBpbGxTZWwuaW5uZXJIVE1MID0gaWxsdXN0cmF0aW9uT3B0aW9ucyhudWxsLCB0eXBlKTsKICBvbkFkbWluU3RvY2tBZGp1c3RJbGxDaGFuZ2UoY2hhbm5lbElkKTsKfQpmdW5jdGlvbiBvbkFkbWluU3RvY2tBZGp1c3RJbGxDaGFuZ2UoY2hhbm5lbElkKXsKICBjb25zdCBpbGxTZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RvY2thZGotaWxsLScrY2hhbm5lbElkKTsKICBjb25zdCBmbXRTZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RvY2thZGotZm10LScrY2hhbm5lbElkKTsKICBpZighaWxsU2VsIHx8ICFmbXRTZWwpIHJldHVybjsKICBjb25zdCBpbGwgPSBpbGx1c3RyYXRpb25zLmZpbmQoeD0+eC5pZD09PWlsbFNlbC52YWx1ZSk7CiAgY29uc3QgZm10cyA9IChpbGw\/LmZvcm1hdHNfYXZhaWxhYmxlKXx8W107CiAgZm10U2VsLmlubmVySFRNTCA9IGZtdHMubWFwKGY9PmA8b3B0aW9uIHZhbHVlPSIke2Z9Ij4ke2Z9PC9vcHRpb24+YCkuam9pbignJyk7Cn0KYXN5bmMgZnVuY3Rpb24gc3VibWl0QWRtaW5TdG9ja0FkanVzdChjaGFubmVsSWQpewogIGNvbnN0IGlsbElkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0b2NrYWRqLWlsbC0nK2NoYW5uZWxJZCk\/LnZhbHVlOwogIGNvbnN0IGZvcm1hdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdG9ja2Fkai1mbXQtJytjaGFubmVsSWQpPy52YWx1ZTsKICBjb25zdCBxdHkgPSBwYXJzZUludChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RvY2thZGotcXR5LScrY2hhbm5lbElkKT8udmFsdWV8fCcwJywxMCk7CiAgY29uc3Qgbm90ZUlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0b2NrYWRqLW5vdGUtJytjaGFubmVsSWQpOwogIGNvbnN0IG5vdGUgPSAobm90ZUlucHV0Py52YWx1ZXx8JycpLnRyaW0oKTsKICBjb25zdCBtc2dFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdG9ja2Fkai1tc2ctJytjaGFubmVsSWQpOwogIGNvbnN0IGJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdG9ja2Fkai1idG4tJytjaGFubmVsSWQpOwogIGlmKCFpbGxJZCB8fCAhZm9ybWF0KXsgaWYobXNnRWwpIG1zZ0VsLnRleHRDb250ZW50ID0gJ0VsaWdlIGlsdXN0cmFjacOzbi9wcm9kdWN0byB5IGZvcm1hdG8uJzsgcmV0dXJuOyB9CiAgaWYoIXF0eSB8fCBxdHk8MSl7IGlmKG1zZ0VsKSBtc2dFbC50ZXh0Q29udGVudCA9ICdQb24gdW5hIGNhbnRpZGFkIG1heW9yIHF1ZSAwLic7IHJldHVybjsgfQogIC8vIEV2aXRhIGVudsOtb3MgZG9ibGVzIChjbGljIHJlcGV0aWRvIG1pZW50cmFzIGHDum4gZXN0w6EgZ3VhcmRhbmRvKSwgcXVlIGVzIGxvIHF1ZSBkZWphYmEgZWwKICAvLyBtZW5zYWplIGNvbGdhZG8gZW4gIkd1YXJkYW5kby4uLiIg4oCUIGxhIHBldGljacOzbiBkZSBhbnRlcyBzZWd1w61hIGVuIG1hcmNoYSB5IHVuYSBzZWd1bmRhCiAgLy8gcGlzYWJhIGVsIG1lbnNhamUgc2luIHF1ZSBuYWRpZSBsbyBhY3R1YWxpemFzZSBudW5jYS4KICBpZihidG4gJiYgYnRuLmRpc2FibGVkKSByZXR1cm47CiAgaWYoYnRuKSBidG4uZGlzYWJsZWQgPSB0cnVlOwogIGlmKG1zZ0VsKSBtc2dFbC50ZXh0Q29udGVudCA9ICdHdWFyZGFuZG8uLi4nOwogIHRyeXsKICAgIGNvbnN0IHtlcnJvcn0gPSBhd2FpdCBzYi5mcm9tKCdzdG9ja19hZGp1c3RtZW50cycpLmluc2VydCh7Y2hhbm5lbF9pZDogY2hhbm5lbElkLCBpbGx1c3RyYXRpb25faWQ6IGlsbElkLCBmb3JtYXQsIHF1YW50aXR5OiBxdHksIG5vdGU6IG5vdGUgfHwgbnVsbH0pOwogICAgaWYoZXJyb3IpeyBpZihtc2dFbCkgbXNnRWwudGV4dENvbnRlbnQgPSAnRXJyb3I6ICcgKyBlcnJvci5tZXNzYWdlOyByZXR1cm47IH0KICAgIGNvbnN0IHF0eUlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0b2NrYWRqLXF0eS0nK2NoYW5uZWxJZCk7CiAgICBpZihxdHlJbnB1dCkgcXR5SW5wdXQudmFsdWUgPSAxOwogICAgaWYobm90ZUlucHV0KSBub3RlSW5wdXQudmFsdWUgPSAnJzsKICAgIGlmKG1zZ0VsKXsgbXNnRWwudGV4dENvbnRlbnQgPSAn4pyTIEHDsWFkaWRvJzsgc2V0VGltZW91dCgoKT0+eyBpZihtc2dFbCkgbXNnRWwudGV4dENvbnRlbnQ9Jyc7IH0sIDI1MDApOyB9CiAgICBsb2dBY3Rpdml0eSgnc3RvY2snLCBgQcOxYWRpw7Mgc3RvY2sgYSBtYW5vIGEgJHsoYWRtaW5DaGFubmVsc0xpc3R8fFtdKS5maW5kKGM9PmMuaWQ9PT1jaGFubmVsSWQpPy5uYW1lIHx8ICd1bmEgdGllbmRhJ306ICR7aWxsTGFiZWwoaWxsSWQpfSAke2Zvcm1hdH0gKyR7cXR5fSR7bm90ZSA\/ICcgKCcrbm90ZSsnKScgOiAnJ31gKTsKICAgIGFsbEFkanVzdG1lbnRzQ2FjaGUudW5zaGlmdCh7aWQ6J3RtcC0nK0RhdGUubm93KCksIGNoYW5uZWxfaWQ6IGNoYW5uZWxJZCwgaWxsdXN0cmF0aW9uX2lkOiBpbGxJZCwgZm9ybWF0LCBxdWFudGl0eTogcXR5LCBub3RlOiBub3RlfHxudWxsLCBpbGx1c3RyYXRpb25zOiBpbGx1c3RyYXRpb25zLmZpbmQoeD0+eC5pZD09PWlsbElkKSwgY2hhbm5lbHM6IChhZG1pbkNoYW5uZWxzTGlzdHx8W10pLmZpbmQoYz0+Yy5pZD09PWNoYW5uZWxJZCkgfHwgbnVsbH0pOwogICAgcmVuZGVyQWRtaW5TdG9ja0FkanVzdExpc3QoY2hhbm5lbElkKTsKICAgIGF3YWl0IGxvYWRBZG1pbkRhdGEoKTsKICB9Y2F0Y2goZSl7CiAgICAvLyBDdWFscXVpZXIgZmFsbG8gaW5lc3BlcmFkbyAoZGUgcmVkLCBldGMuKSB0YW1iacOpbiBhdmlzYSBlbiB2ZXogZGUgZGVqYXIgIkd1YXJkYW5kby4uLiIgY29sZ2Fkby4KICAgIGlmKG1zZ0VsKSBtc2dFbC50ZXh0Q29udGVudCA9ICdFcnJvcjogJyArIChlPy5tZXNzYWdlIHx8ICdmYWxsbyBkZSBjb25leGnDs24sIHBydWViYSBkZSBudWV2by4nKTsKICB9ZmluYWxseXsKICAgIGlmKGJ0bikgYnRuLmRpc2FibGVkID0gZmFsc2U7CiAgfQp9CmZ1bmN0aW9uIHJlbmRlckFkbWluU3RvY2tBZGp1c3RMaXN0KGNoYW5uZWxJZCl7CiAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RvY2thZGotbGlzdC0nK2NoYW5uZWxJZCk7CiAgaWYoIWVsKSByZXR1cm47CiAgY29uc3Qgcm93cyA9IChhbGxBZGp1c3RtZW50c0NhY2hlfHxbXSkuZmlsdGVyKGE9PmEuY2hhbm5lbF9pZD09PWNoYW5uZWxJZCk7CiAgaWYoIXJvd3MubGVuZ3RoKXsgZWwuaW5uZXJIVE1MID0gJzxwIHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWF2ZSk7bWFyZ2luOjZweCAwIDA7Ij5TaW4gc3RvY2sgYcOxYWRpZG8gYSBtYW5vIHRvZGF2w61hIHBhcmEgZXN0YSB0aWVuZGEuPC9wPic7IHJldHVybjsgfQogIGVsLmlubmVySFRNTCA9IGA8ZGl2IHN0eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS1zdWF2ZSk7bWFyZ2luOjEwcHggMCAycHg7Ij5Bw7FhZGlkbyBhIG1hbm86PC9kaXY+PGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MnB4OyI+JHsKICAgIHJvd3MubWFwKGE9PmA8ZGl2IHN0eWxlPSJmb250LXNpemU6MTJweDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7YmFja2dyb3VuZDp2YXIoLS1jcmVtYS0yKTtib3JkZXItcmFkaXVzOjRweDtwYWRkaW5nOjRweCA4cHg7Ij4KICAgICAgPHNwYW4+JHthLmlsbHVzdHJhdGlvbnM\/LnJlZnx8Jyd9ICR7YS5pbGx1c3RyYXRpb25zPy5uYW1lfHwnJ30gwrcgJHthLmZvcm1hdH0gwrcgKyR7YS5xdWFudGl0eX0ke2Eubm90ZT8nIOKAlCA8c3BhbiBzdHlsZT0iY29sb3I6dmFyKC0tc3VhdmUpOyI+Jytlc2NhcGVBdHRyKGEubm90ZSkrJzwvc3Bhbj4nOicnfTwvc3Bhbj4KICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIG9uY2xpY2s9ImRlbGV0ZUFkbWluU3RvY2tBZGp1c3QoJyR7YS5pZH0nKSIgdGl0bGU9IlF1aXRhciIgc3R5bGU9ImJhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjb2xvcjp2YXIoLS1lcnJvcik7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjEycHg7Ij7inJU8L2J1dHRvbj4KICAgIDwvZGl2PmApLmpvaW4oJycpCiAgfTwvZGl2PmA7Cn0KYXN5bmMgZnVuY3Rpb24gZGVsZXRlQWRtaW5TdG9ja0FkanVzdChpZCl7CiAgY29uc3QgYWRqID0gKGFsbEFkanVzdG1lbnRzQ2FjaGV8fFtdKS5maW5kKGE9PmEuaWQ9PT1pZCk7CiAgY29uc3Qge2Vycm9yfSA9IGF3YWl0IHNiLmZyb20oJ3N0b2NrX2FkanVzdG1lbnRzJykuZGVsZXRlKCkuZXEoJ2lkJywgaWQpOwogIGlmKGVycm9yKXsgYWxlcnQoJ0Vycm9yIGJvcnJhbmRvOiAnK2Vycm9yLm1lc3NhZ2UpOyByZXR1cm47IH0KICBpZihhZGopIGxvZ0FjdGl2aXR5KCdzdG9jaycsIGBRdWl0w7Mgc3RvY2sgYcOxYWRpZG8gYSBtYW5vIGRlICR7YWRqLmNoYW5uZWxzPy5uYW1lIHx8ICd1bmEgdGllbmRhJ306ICR7aWxsTGFiZWwoYWRqLmlsbHVzdHJhdGlvbl9pZCl9ICR7YWRqLmZvcm1hdH0g4oiSJHthZGoucXVhbnRpdHl9YCk7CiAgYXdhaXQgbG9hZEFkbWluRGF0YSgpOwp9Ci8vIC0tLS0tLS0tLS0gIk1pIHN0b2NrIiAocGFydGUgZGVsIGNsaWVudGUsIHNvbG8gbGVjdHVyYSkgLS0tLS0tLS0tLQovLyBTdG9jayBtb3N0cmFkbyBhaG9yYSBtaXNtbyBlbiAiVmVudGFzIHkgc3RvY2siIChkZSBzb2xvIGxlY3R1cmEsIHNpbiBuYWRhIGVkaXRhYmxlKSDigJQgc2lndWUKLy8gYWwgY2FuYWwgZWxlZ2lkbyBlbiBlbCBkZXNwbGVnYWJsZSAiVHUgY2FuYWwiLgpsZXQgbXlTdG9ja1Jvd3MgPSBbXTsKbGV0IG15U3RvY2tDaGFubmVsTmFtZSA9ICcnOwovLyBDw6FsY3VsbyBjb21wYXJ0aWRvIChlbnRyZWdhZG8gLSB2ZW5kaWRvIHJlcG9ydGFkbykgcGFyYSB1biBjYW5hbCBjdWFscXVpZXJhLgphc3luYyBmdW5jdGlvbiBjb21wdXRlQ2hhbm5lbFN0b2NrUm93c1JlbW90ZShjaGFubmVsSWQpewogIGlmKCFjaGFubmVsSWQpIHJldHVybiBbXTsKICAvLyBVbmEgdGllbmRhIGNvbiBhY2Nlc28gcHJvcGlvIChzaWVtcHJlIGNvbnN1bHRhbmRvIFNVIFBST1BJTyBjYW5hbCwgZXMgbG8gw7puaWNvIHF1ZSBwdWVkZQogIC8vIGVsZWdpcikgdXNhIGxhIGZ1bmNpw7NuIHF1ZSBjb21wcnVlYmEgc3UgY29udHJhc2XDsWEgeSB5YSBkZXZ1ZWx2ZSB0b2RvIGFncmVnYWRvLiBFbAogIC8vIG1hZXN0cm8vYWRtaW4sIG1pcmFuZG8gZWwgc3RvY2sgZGUgY3VhbHF1aWVyIHRpZW5kYSwgc2lndWUgY29uIGxhcyBjb25zdWx0YXMgZGlyZWN0YXMgKHN1CiAgLy8gc2VzacOzbiByZWFsIGRlIFN1cGFiYXNlIEF1dGggeWEgbG8gcGVybWl0ZSkuCiAgaWYobG9ja2VkQ2hhbm5lbCAmJiBjaGFubmVsSWQgPT09IGxvY2tlZENoYW5uZWwuaWQpewogICAgY29uc3QgeyBkYXRhLCBlcnJvciB9ID0gYXdhaXQgc2IucnBjKCdnZXRfc3RvcmVfc3RvY2snLCB7IGlucHV0X2NoYW5uZWxfaWQ6IGNoYW5uZWxJZCwgaW5wdXRfcGFzc3dvcmQ6IGxvY2tlZENoYW5uZWxQYXNzd29yZCB9KTsKICAgIGlmKGVycm9yKSByZXR1cm4gbnVsbDsKICAgIHJldHVybiBzb3J0QnlOYW1lRXMoKGRhdGF8fFtdKS5tYXAocj0+KHtpbGx1c3RyYXRpb25faWQ6ci5pbGx1c3RyYXRpb25faWQsIHJlZjpyLnJlZnx8JycsIG5hbWU6ci5uYW1lfHwnJywgcHJvZHVjdF90eXBlOnIucHJvZHVjdF90eXBlfHwnbGFtaW5hJywgZm9ybWF0OnIuZm9ybWF0LCBlbnRyZWdhZG86ci5lbnRyZWdhZG98fDAsIHZlbmRpZG86ci52ZW5kaWRvfHwwfSkpKTsKICB9CiAgY29uc3Qge2RhdGE6IG9yZGVycywgZXJyb3J9ID0gYXdhaXQgc2IuZnJvbSgnb3JkZXJzJykKICAgIC5zZWxlY3QoJ29yZGVyX2l0ZW1zKHF1YW50aXR5LCBmb3JtYXQsIGlsbHVzdHJhdGlvbl9pZCwgaWxsdXN0cmF0aW9ucyhyZWYsbmFtZSxwcm9kdWN0X3R5cGUpKScpCiAgICAuZXEoJ2NoYW5uZWxfaWQnLCBjaGFubmVsSWQpLmVxKCdzdGF0dXMnLCdlbnZpYWRvJyk7CiAgaWYoZXJyb3IpIHJldHVybiBudWxsOwogIGNvbnN0IG1hcCA9IHt9OwogIChvcmRlcnN8fFtdKS5mb3JFYWNoKG89PihvLm9yZGVyX2l0ZW1zfHxbXSkuZm9yRWFjaChpdD0+ewogICAgY29uc3Qga2V5ID0gaXQuaWxsdXN0cmF0aW9uX2lkKyd8JytpdC5mb3JtYXQ7CiAgICBpZighbWFwW2tleV0pIG1hcFtrZXldID0ge2lsbHVzdHJhdGlvbl9pZDogaXQuaWxsdXN0cmF0aW9uX2lkLCByZWY6IGl0LmlsbHVzdHJhdGlvbnM\/LnJlZnx8JycsIG5hbWU6IGl0LmlsbHVzdHJhdGlvbnM\/Lm5hbWV8fCcnLCBwcm9kdWN0X3R5cGU6IGl0LmlsbHVzdHJhdGlvbnM\/LnByb2R1Y3RfdHlwZXx8J2xhbWluYScsIGZvcm1hdDogaXQuZm9ybWF0LCBlbnRyZWdhZG86MCwgdmVuZGlkbzowfTsKICAgIG1hcFtrZXldLmVudHJlZ2FkbyArPSBpdC5xdWFudGl0eTsKICB9KSk7CiAgLy8gU3RvY2sgbWV0aWRvIGEgbWFubyAoc2luIHBlZGlkbykg4oCUIGN1ZW50YSBpZ3VhbCBxdWUgc2kgc2UgaHViaWVyYSAiZW50cmVnYWRvIiBwb3IgcGVkaWRvLgogIGNvbnN0IHtkYXRhOiBhZGp1c3RtZW50c30gPSBhd2FpdCBzYi5mcm9tKCdzdG9ja19hZGp1c3RtZW50cycpLnNlbGVjdCgnaWxsdXN0cmF0aW9uX2lkLCBmb3JtYXQsIHF1YW50aXR5LCBpbGx1c3RyYXRpb25zKHJlZixuYW1lLHByb2R1Y3RfdHlwZSknKS5lcSgnY2hhbm5lbF9pZCcsIGNoYW5uZWxJZCk7CiAgKGFkanVzdG1lbnRzfHxbXSkuZm9yRWFjaChhPT57CiAgICBjb25zdCBrZXkgPSBhLmlsbHVzdHJhdGlvbl9pZCsnfCcrYS5mb3JtYXQ7CiAgICBpZighbWFwW2tleV0pIG1hcFtrZXldID0ge2lsbHVzdHJhdGlvbl9pZDogYS5pbGx1c3RyYXRpb25faWQsIHJlZjogYS5pbGx1c3RyYXRpb25zPy5yZWZ8fCcnLCBuYW1lOiBhLmlsbHVzdHJhdGlvbnM\/Lm5hbWV8fCcnLCBwcm9kdWN0X3R5cGU6IGEuaWxsdXN0cmF0aW9ucz8ucHJvZHVjdF90eXBlfHwnbGFtaW5hJywgZm9ybWF0OiBhLmZvcm1hdCwgZW50cmVnYWRvOjAsIHZlbmRpZG86MH07CiAgICBtYXBba2V5XS5lbnRyZWdhZG8gKz0gYS5xdWFudGl0eTsKICB9KTsKICBjb25zdCB7ZGF0YTogc2FsZXN9ID0gYXdhaXQgc2IuZnJvbSgnbW9udGhseV9zYWxlcycpLnNlbGVjdCgnaWxsdXN0cmF0aW9uX2lkLCBmb3JtYXQsIHVuaXRzX3NvbGQsIGlsbHVzdHJhdGlvbnMocmVmLG5hbWUscHJvZHVjdF90eXBlKScpLmVxKCdjaGFubmVsX2lkJywgY2hhbm5lbElkKTsKICAoc2FsZXN8fFtdKS5mb3JFYWNoKHM9PnsKICAgIGNvbnN0IGtleSA9IHMuaWxsdXN0cmF0aW9uX2lkKyd8JytzLmZvcm1hdDsKICAgIGlmKCFtYXBba2V5XSkgbWFwW2tleV0gPSB7aWxsdXN0cmF0aW9uX2lkOiBzLmlsbHVzdHJhdGlvbl9pZCwgcmVmOiBzLmlsbHVzdHJhdGlvbnM\/LnJlZnx8JycsIG5hbWU6IHMuaWxsdXN0cmF0aW9ucz8ubmFtZXx8JycsIHByb2R1Y3RfdHlwZTogcy5pbGx1c3RyYXRpb25zPy5wcm9kdWN0X3R5cGV8fCdsYW1pbmEnLCBmb3JtYXQ6IHMuZm9ybWF0LCBlbnRyZWdhZG86MCwgdmVuZGlkbzowfTsKICAgIG1hcFtrZXldLnZlbmRpZG8gKz0gcy51bml0c19zb2xkfHwwOwogIH0pOwogIHJldHVybiBzb3J0QnlOYW1lRXMoT2JqZWN0LnZhbHVlcyhtYXApKTsKfQovLyBNYXBhIGlsbHVzdHJhdGlvbl9pZCAtPiBTZXQoZm9ybWF0b3MpIHF1ZSBzZSBwdWVkZSBlbGVnaXIgcGFyYSByZXBvcnRhciB1bmEgdmVudGE6IGxvcyBxdWUKLy8gdGVuZ2FuIHN0b2NrIGFjdHVhbCAocmVzdGFudGUgPiAwKSBtw6FzLCBzaSBzZSBwYXNhbiwgbG9zIHF1ZSB5YSB0dXZpZXJhbiB1biByZXBvcnRlIGd1YXJkYWRvCi8vIHBhcmEgZXNlIG1lcyBlbiBjb25jcmV0byAocGFyYSBwb2RlciBjb3JyZWdpciB1biBtZXMgeWEgcmVwb3J0YWRvIGF1bnF1ZSBzdSBzdG9jayBoYXlhCi8vIHF1ZWRhZG8gYSAwIG1pZW50cmFzIHRhbnRvKS4KZnVuY3Rpb24gY29tcHV0ZVNhbGVBbGxvd2VkTWFwKHN0b2NrUm93cywgZXhpc3RpbmdGb3JNb250aCl7CiAgY29uc3QgYWxsb3dlZCA9IHt9OwogIChzdG9ja1Jvd3N8fFtdKS5mb3JFYWNoKHI9PnsKICAgIGlmKCFyLmlsbHVzdHJhdGlvbl9pZCkgcmV0dXJuOwogICAgaWYoKHIuZW50cmVnYWRvIC0gci52ZW5kaWRvKSA+IDApewogICAgICBpZighYWxsb3dlZFtyLmlsbHVzdHJhdGlvbl9pZF0pIGFsbG93ZWRbci5pbGx1c3RyYXRpb25faWRdID0gbmV3IFNldCgpOwogICAgICBhbGxvd2VkW3IuaWxsdXN0cmF0aW9uX2lkXS5hZGQoci5mb3JtYXQpOwogICAgfQogIH0pOwogIHJldHVybiBhbGxvd2VkOwp9Ci8vIEN1w6FudGFzIHVuaWRhZGVzIGRlIGVzYSBpbHVzdHJhY2nDs24rZm9ybWF0byBwdWVkZSByZXBvcnRhciBjb21vIHZlbmRpZGFzIGVzYSB0aWVuZGEgY29tbyBtw6F4aW1vOgovLyBsbyBxdWUgbGUgcXVlZGEgKGVudHJlZ2FkbyDiiJIgdmVuZGlkbykuIDI5LzA5LzIwMjY6IHVuIHNlZ3VuZG8gcmVwb3J0ZSBkZWwgbWlzbW8gbWVzIHNlIFNVTUEgYWwKLy8gcHJpbWVybyAoYW50ZXMgbG8gc3VzdGl0dcOtYSB5IHNlIHBlcmTDrWFuIHZlbnRhcyksIGFzw60gcXVlIHlhIG5vIHNlIGN1ZW50YSBsbyByZXBvcnRhZG8gZXN0ZSBtZXMuCmZ1bmN0aW9uIHNhbGVSb3dNYXhRdHkoaWxsdXN0cmF0aW9uX2lkLCBmb3JtYXQpewogIGNvbnN0IHN0b2NrUm93ID0gKG15U3RvY2tSb3dzfHxbXSkuZmluZChyPT5yLmlsbHVzdHJhdGlvbl9pZD09PWlsbHVzdHJhdGlvbl9pZCAmJiByLmZvcm1hdD09PWZvcm1hdCk7CiAgY29uc3QgZW50cmVnYWRvID0gc3RvY2tSb3cgPyBzdG9ja1Jvdy5lbnRyZWdhZG8gOiAwOwogIGNvbnN0IHZlbmRpZG8gPSBzdG9ja1JvdyA\/IHN0b2NrUm93LnZlbmRpZG8gOiAwOwogIHJldHVybiBNYXRoLm1heCgwLCBlbnRyZWdhZG8gLSB2ZW5kaWRvKTsKfQovLyBJZ3VhbCBxdWUgaWxsdXN0cmF0aW9uT3B0aW9ucygpLCBwZXJvIHJlc3RyaW5naWRvIGEgbG8gcXVlIGNvbXB1dGVTYWxlQWxsb3dlZE1hcCgpIHBlcm1pdGUg4oCUCi8vIGFzw60gZWwgZGVzcGxlZ2FibGUgZGUgIlJlcG9ydGFyIHZlbnRhcyIgbm8gZGVqYSBlbGVnaXIgcG9yIGVycm9yIGFsZ28gcXVlIGVzYSB0aWVuZGEgbm8gdGllbmUuCmZ1bmN0aW9uIHNhbGVJbGx1c3RyYXRpb25PcHRpb25zKHNlbGVjdGVkSWQsIHR5cGUsIGFsbG93ZWRNYXApewogIGNvbnN0IHNjb3BlID0gaWxsdXN0cmF0aW9ucy5maWx0ZXIoaT0+KGkucHJvZHVjdF90eXBlfHwnbGFtaW5hJyk9PT10eXBlICYmIGFsbG93ZWRNYXBbaS5pZF0gJiYgYWxsb3dlZE1hcFtpLmlkXS5zaXplKTsKICByZXR1cm4gc2NvcGUubWFwKGk9PmA8b3B0aW9uIHZhbHVlPSIke2kuaWR9IiBkYXRhLWZvcm1hdHM9IiR7Wy4uLmFsbG93ZWRNYXBbaS5pZF1dLmpvaW4oJywnKX0iICR7aS5pZD09PXNlbGVjdGVkSWQ\/J3NlbGVjdGVkJzonJ30+JHtpLnJlZn0g4oCUICR7aS5uYW1lfTwvb3B0aW9uPmApLmpvaW4oJycpOwp9Ci8vIEVzdGEgdGFibGEgZXMgbGEgcXVlIHZlIGxhIHByb3BpYSB0aWVuZGEgKGVuICJWZW50YXMgeSBzdG9jayIpLiBMYXMgbMOtbmVhcyBxdWUgeWEgaGFuCi8vIGxsZWdhZG8gYSAwICh0b2RvIGxvIGVudHJlZ2FkbyB5YSBlc3TDoSB2ZW5kaWRvL3JlcG9ydGFkbykgc2UgcXVpdGFuIGRlIGxhIHZpc3RhOiBsYSB0aWVuZGEKLy8geWEgcHVlZGUgY29uc3VsdGFyIHN1cyB2ZW50YXMgeSBlc3RhZMOtc3RpY2FzIGFudGVyaW9yZXMgZW4gb3RybyBzaXRpbywgeSBkZWphciBhaMOtIHVuYSBmaWxhCi8vIGVuIDAgc29sbyBnZW5lcmEgY29uZnVzacOzbiAoIsK\/ZXN0byBzaWduaWZpY2EgcXVlIHlhIG5vIG1lIHF1ZWRhIGRlIGVzdG8gcGFyYSBzaWVtcHJlPyIpLiBFbAovLyBhdmlzbyBkZSAic3RvY2sgYmFqbyIgZXMgY29zYSBhcGFydGUgeSBzb2xvIHNlIGxlIG11ZXN0cmEgYWwgYWRtaW4gKGNoYW5uZWxTdG9ja1RhYmxlSHRtbCwKLy8gbcOhcyBhYmFqbykg4oCUIGEgbGEgdGllbmRhIG5vIGxlIGludGVyZXNhIGVzZSBhdmlzbyBwb3JxdWUgcGFyYSBlbGxhIHNpZW1wcmUgZXN0YXLDoSBiYWpvLgpmdW5jdGlvbiBzdG9ja1Jvd3NUYWJsZUh0bWwocm93cywge3dpdGhFbnRyZWdhZG9WZW5kaWRvPXRydWV9ID0ge30pewogIGNvbnN0IHZpc2libGUgPSAocm93c3x8W10pLmZpbHRlcihyID0+IChyLmVudHJlZ2FkbyAtIHIudmVuZGlkbykgPiAwKTsKICBpZighdmlzaWJsZS5sZW5ndGgpewogICAgLy8gRG9zIHNpdHVhY2lvbmVzIGRpc3RpbnRhcyBzZSB2ZcOtYW4gaWd1YWwgYW50ZXMgKCJUb2RhdsOtYSBubyBoYXkgc3RvY2sgcmVnaXN0cmFkby4iKSwgeSBsYQogICAgLy8gcHJpbWVyYSBwdWVkZSBwYXJlY2VyIHF1ZSBsYSBww6FnaW5hIG5vIGhhIGNhcmdhZG8gYmllbjogbnVuY2Egc2UgbGUgaGEgZW50cmVnYWRvIG5hZGEKICAgIC8vIChwcmltZXJhIHZleikgdnMuIHlhIHNlIGxlIGVudHJlZ8OzIGFsZ28gcGVybyBlc3TDoSB0b2RvIHZlbmRpZG8vcmVwb3J0YWRvIChidWVuYSBzZcOxYWwpLgogICAgcmV0dXJuIChyb3dzfHxbXSkubGVuZ3RoCiAgICAgID8gJzxwIHN0eWxlPSJmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij5ObyB0ZSBxdWVkYSBzdG9jayBzaW4gdmVuZGVyIGFob3JhIG1pc21vIOKAlCB0b2RvIGxvIGVudHJlZ2FkbyB5YSBlc3TDoSB2ZW5kaWRvIG8gcmVwb3J0YWRvLjwvcD4nCiAgICAgIDogJzxwIHN0eWxlPSJmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij5BcXXDrSB2ZXLDoXMgdHUgc3RvY2sgZW4gY3VhbnRvIHRlbmdhcyBhbGfDum4gcGVkaWRvIGVudHJlZ2Fkby48L3A+JzsKICB9CiAgLy8gRW4gbcOzdmlsICh2ZXIgLnN0b2NrLW1pbmUgZW4gZWwgQ1NTKSBzZSBlc2NvbmRlbiBSZWYsIEVudHJlZ2FkbyB5IFZlbmRpZG8gcGFyYSBxdWUgwqtUZSBxdWVkYcK7IHNlCiAgLy8gdmVhIHNpbiBkZXNwbGF6YXIgbGEgdGFibGE7IEVudHJlZ2Fkby9WZW5kaWRvIHBhc2FuIGEgdW5hIGzDrW5lYSBwZXF1ZcOxYSBkZWJham8gZGVsIG5vbWJyZS4KICBjb25zdCBleHRyYUhlYWQgPSB3aXRoRW50cmVnYWRvVmVuZGlkbyA\/ICc8dGggY2xhc3M9InNtLWV4dHJhIj5FbnRyZWdhZG88L3RoPjx0aCBjbGFzcz0ic20tZXh0cmEiPlZlbmRpZG88L3RoPicgOiAnJzsKICByZXR1cm4gYDxkaXYgc3R5bGU9Im92ZXJmbG93LXg6YXV0bzsiPjx0YWJsZSBjbGFzcz0ic3RvY2stdGFibGUgc3RvY2stbWluZSIgc3R5bGU9IndpZHRoOjEwMCU7Zm9udC1zaXplOjEzcHg7Ij48dGhlYWQ+PHRyPjx0aCBjbGFzcz0ic20tcmVmIiBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0OyI+UmVmPC90aD48dGggc3R5bGU9InRleHQtYWxpZ246bGVmdDsiPk5vbWJyZTwvdGg+PHRoPkZvcm1hdG88L3RoPiR7ZXh0cmFIZWFkfTx0aD5UZSBxdWVkYTwvdGg+PC90cj48L3RoZWFkPjx0Ym9keT4kewogICAgdmlzaWJsZS5tYXAocj0+ewogICAgICBjb25zdCByZXN0YW50ZSA9IHIuZW50cmVnYWRvIC0gci52ZW5kaWRvOwogICAgICBjb25zdCBleHRyYUNlbGxzID0gd2l0aEVudHJlZ2Fkb1ZlbmRpZG8gPyBgPHRkIGNsYXNzPSJzbS1leHRyYSIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyI+JHtyLmVudHJlZ2Fkb308L3RkPjx0ZCBjbGFzcz0ic20tZXh0cmEiIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsiPiR7ci52ZW5kaWRvfTwvdGQ+YCA6ICcnOwogICAgICBjb25zdCBtaW5pID0gd2l0aEVudHJlZ2Fkb1ZlbmRpZG8gPyBgPHNwYW4gY2xhc3M9InNtLW1pbmkiPiR7dCgnRW50cmVnYWRvJyl9ICR7ci5lbnRyZWdhZG99IMK3ICR7dCgnVmVuZGlkbycpfSAke3IudmVuZGlkb308L3NwYW4+YCA6ICcnOwogICAgICByZXR1cm4gYDx0cj48dGQgY2xhc3M9InNtLXJlZiI+JHtyLnJlZn08L3RkPjx0ZD4ke3IubmFtZX0ke21pbml9PC90ZD48dGQgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyI+JHtyLmZvcm1hdH08L3RkPiR7ZXh0cmFDZWxsc308dGQgY2xhc3M9InNtLXF1ZWRhIiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7Zm9udC13ZWlnaHQ6NjAwOyI+JHtyZXN0YW50ZX08L3RkPjwvdHI+YDsKICAgIH0pLmpvaW4oJycpCiAgfTwvdGJvZHk+PC90YWJsZT48L2Rpdj5gOwp9Ci8vIEZpbHRybyBwb3IgdGlwbyBkZSBwcm9kdWN0byAoVG9kbyAvIEzDoW1pbmFzIC8gTGlicmV0YXMgLyAuLi4pIHJldXRpbGl6YWJsZSBlbiBjdWFscXVpZXIgdGFibGEKLy8gZGUgc3RvY2sg4oCUIGFzw60sIHNpIGxhIGxpc3RhIGVzIGxhcmdhLCBzZSBwdWVkZSBtaXJhciBzb2xvIHVuIHRpcG8gYSBsYSB2ZXogZW4gdmV6IGRlIHRvZG8KLy8gbWV6Y2xhZG8uIGByZW5kZXJGbmAgZXMgbGEgZnVuY2nDs24gcXVlIHBpbnRhIGxhIHRhYmxhIGVuIHPDrSAoc3RvY2tSb3dzVGFibGVIdG1sIG8KLy8gY2hhbm5lbFN0b2NrVGFibGVIdG1sKSDigJQgZXN0byBzb2xvIGHDsWFkZSBsb3MgYm90b25lcyBkZSBhcnJpYmEgeSBmaWx0cmEgbGFzIGZpbGFzIGFudGVzLgpsZXQgc3RvY2tGaWx0ZXJDYWNoZSA9IHt9OyAvLyBjb250YWluZXJJZCAtPiB7cm93cywgcmVuZGVyRm59CmxldCBzdG9ja0ZpbHRlclNlbGVjdGVkID0ge307IC8vIGNvbnRhaW5lcklkIC0+IHR5cGUga2V5IHNlbGVjY2lvbmFkbyAoJycgPSB0b2RvKQpmdW5jdGlvbiBzdG9ja0ZpbHRlckxhYmVsKHR5cGUpewogIGlmKHR5cGU9PT0nbGFtaW5hJykgcmV0dXJuICdMw6FtaW5hcyc7CiAgaWYodHlwZT09PSdsaWJyZXRhJykgcmV0dXJuICdMaWJyZXRhcyc7CiAgY29uc3QgdCA9IEVYVFJBX1NUT0NLX1RZUEVTLmZpbmQoeD0+eC5rZXk9PT10eXBlKTsKICByZXR1cm4gdCA\/IHQubGFiZWwgOiB0eXBlOwp9CmZ1bmN0aW9uIHJlbmRlclN0b2NrV2l0aFR5cGVGaWx0ZXIoY29udGFpbmVySWQsIHJvd3MsIHJlbmRlckZuKXsKICBzdG9ja0ZpbHRlckNhY2hlW2NvbnRhaW5lcklkXSA9IHtyb3dzLCByZW5kZXJGbn07CiAgaWYoIShjb250YWluZXJJZCBpbiBzdG9ja0ZpbHRlclNlbGVjdGVkKSkgc3RvY2tGaWx0ZXJTZWxlY3RlZFtjb250YWluZXJJZF0gPSAnJzsKICBwYWludFN0b2NrRmlsdGVyVGFibGUoY29udGFpbmVySWQpOwp9CmZ1bmN0aW9uIHBhaW50U3RvY2tGaWx0ZXJUYWJsZShjb250YWluZXJJZCl7CiAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb250YWluZXJJZCk7CiAgY29uc3QgY2FjaGUgPSBzdG9ja0ZpbHRlckNhY2hlW2NvbnRhaW5lcklkXTsKICBpZighZWwgfHwgIWNhY2hlKSByZXR1cm47CiAgY29uc3Qge3Jvd3MsIHJlbmRlckZufSA9IGNhY2hlOwogIGNvbnN0IHByZXNlbnRUeXBlcyA9IFsuLi5uZXcgU2V0KHJvd3MubWFwKHI9PnIucHJvZHVjdF90eXBlfHwnbGFtaW5hJykpXTsKICBjb25zdCBzZWwgPSBzdG9ja0ZpbHRlclNlbGVjdGVkW2NvbnRhaW5lcklkXSB8fCAnJzsKICBsZXQgYnRuc0h0bWwgPSAnJzsKICBpZihwcmVzZW50VHlwZXMubGVuZ3RoID4gMSl7CiAgICBjb25zdCBidG5zID0gWyc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IicrKCFzZWw\/J2FjdGl2ZSc6JycpKyciIG9uY2xpY2s9InNldFN0b2NrVHlwZUZpbHRlcihcJycrY29udGFpbmVySWQrJ1wnLFwnXCcpIj5Ub2RvPC9idXR0b24+J10KICAgICAgLmNvbmNhdChwcmVzZW50VHlwZXMubWFwKHQ9PmA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IiR7c2VsPT09dD8nYWN0aXZlJzonJ30iIG9uY2xpY2s9InNldFN0b2NrVHlwZUZpbHRlcignJHtjb250YWluZXJJZH0nLCcke3R9JykiPiR7c3RvY2tGaWx0ZXJMYWJlbCh0KX08L2J1dHRvbj5gKSk7CiAgICBidG5zSHRtbCA9IGA8ZGl2IGNsYXNzPSJzaXplYnRucyBuby1wcmludCIgc3R5bGU9Im1hcmdpbi1ib3R0b206MTBweDsiPiR7YnRucy5qb2luKCcnKX08L2Rpdj5gOwogIH0KICBjb25zdCBmaWx0ZXJlZCA9IHNlbCA\/IHJvd3MuZmlsdGVyKHI9PihyLnByb2R1Y3RfdHlwZXx8J2xhbWluYScpPT09c2VsKSA6IHJvd3M7CiAgZWwuaW5uZXJIVE1MID0gYnRuc0h0bWwgKyByZW5kZXJGbihmaWx0ZXJlZCk7Cn0KZnVuY3Rpb24gc2V0U3RvY2tUeXBlRmlsdGVyKGNvbnRhaW5lcklkLCB0eXBlKXsKICBzdG9ja0ZpbHRlclNlbGVjdGVkW2NvbnRhaW5lcklkXSA9IHR5cGU7CiAgcGFpbnRTdG9ja0ZpbHRlclRhYmxlKGNvbnRhaW5lcklkKTsKfQovLyBTdG9jayBkZW50cm8gZGUgIlZlbnRhcyB5IHN0b2NrIjogc2lndWUgYWwgY2FuYWwgZWxlZ2lkbyBlbiAiVHUgY2FuYWwiIChhc8OtIHNpcnZlIHRhbnRvIHBhcmEKLy8gdW5hIHRpZW5kYSBtaXJhbmRvIGxvIHN1eW8gY29tbyBwYXJhIGVsIG1hZXN0cm8gcmVwb3J0YW5kbyBlbiBub21icmUgZGUgb3RyYSkuIEFudGVzIHZpdsOtYSBlbgovLyB1bmEgcGVzdGHDsWEgIk1pIHN0b2NrIiBhcGFydGUg4oCUIHNlIGZ1c2lvbsOzIGFxdcOtIHBhcmEgbm8gdGVuZXIgcXVlIGlyIGRlIHVuIHNpdGlvIGEgb3Ryby4KYXN5bmMgZnVuY3Rpb24gcmVmcmVzaFNhbGVTdG9ja1ByZXZpZXcoKXsKICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteS1zdG9jay10YWJsZScpOwogIGlmKCFlbCkgcmV0dXJuOwogIGNvbnN0IGNoYW5uZWxJZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYWxlLWNoYW5uZWwnKT8udmFsdWU7CiAgY29uc3QgaGVhZGluZ0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pc3RvY2stcHJpbnQtaGVhZGluZycpOwogIGlmKCFjaGFubmVsSWQpeyBlbC5pbm5lckhUTUwgPSAnJzsgaWYoaGVhZGluZ0VsKSBoZWFkaW5nRWwudGV4dENvbnRlbnQgPSAnJzsgcmV0dXJuOyB9CiAgZWwuaW5uZXJIVE1MID0gJzxwIHN0eWxlPSJmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij5DYXJnYW5kb+KApjwvcD4nOwogIGNvbnN0IGNoYW5uZWxOYW1lID0gKGNoYW5uZWxzLmZpbmQoYz0+Yy5pZD09PWNoYW5uZWxJZCk\/Lm5hbWUpIHx8ICcnOwogIGlmKGhlYWRpbmdFbCkgaGVhZGluZ0VsLnRleHRDb250ZW50ID0gY2hhbm5lbE5hbWUgKyAnIOKAlCAnICsgbmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoYXBwTG9jYWxlKCkpOwogIGNvbnN0IHJvd3MgPSBhd2FpdCBjb21wdXRlQ2hhbm5lbFN0b2NrUm93c1JlbW90ZShjaGFubmVsSWQpOwogIGlmKHJvd3M9PT1udWxsKXsgZWwuaW5uZXJIVE1MID0gJzxwIHN0eWxlPSJmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1lcnJvcik7Ij5ObyBzZSBwdWRvIGNhcmdhciBlbCBzdG9jay48L3A+JzsgcmV0dXJuOyB9CiAgbXlTdG9ja1Jvd3MgPSByb3dzOwogIG15U3RvY2tDaGFubmVsTmFtZSA9IGNoYW5uZWxOYW1lOwogIHJlbmRlclN0b2NrV2l0aFR5cGVGaWx0ZXIoJ215LXN0b2NrLXRhYmxlJywgcm93cywgc3RvY2tSb3dzVGFibGVIdG1sKTsKfQpmdW5jdGlvbiBkb3dubG9hZE15U3RvY2tDU1YoKXsKICBjb25zdCBoZWFkZXIgPSBbJ1JlZicsJ05vbWJyZScsJ0Zvcm1hdG8nLCdFbnRyZWdhZG8nLCdWZW5kaWRvJywnVGUgcXVlZGEnXS5tYXAoaD0+dChoKSk7CiAgY29uc3Qgcm93cyA9IG15U3RvY2tSb3dzLm1hcChyPT5bci5yZWYsIHIubmFtZSwgci5mb3JtYXQsIHIuZW50cmVnYWRvLCByLnZlbmRpZG8sIHIuZW50cmVnYWRvLXIudmVuZGlkb10pOwogIGNvbnN0IHNhZmVOYW1lID0gKG15U3RvY2tDaGFubmVsTmFtZXx8JycpLnJlcGxhY2UoL1teYS16MC05w6HDqcOtw7PDusOxw7xdKy9naSwnLScpOwogIGRvd25sb2FkQ1NWKCdzdG9jay0nK3NhZmVOYW1lKyctJytmZWNoYUxvY2FsKCkrJy5jc3YnLCBoZWFkZXIsIHJvd3MpOwp9CmZ1bmN0aW9uIHNldFN0b2NrVmlld1R5cGUodCl7CiAgYWxsVHlwZUtleXMoKS5mb3JFYWNoKGs9PnsgY29uc3QgYj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RvY2stdHlwZS0nK2spOyBpZihiKSBiLmNsYXNzTGlzdC50b2dnbGUoJ2FjdGl2ZScsIHQ9PT1rKTsgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0b2NrLWxhbWluYXMtYmxvY2snKS5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nLCB0IT09J2xhbWluYScpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdG9jay1saWJyZXRhcy1ibG9jaycpLmNsYXNzTGlzdC50b2dnbGUoJ2hpZGRlbicsIHQhPT0nbGlicmV0YScpOwogIEVYVFJBX1NUT0NLX1RZUEVTLmZvckVhY2goeD0+ewogICAgY29uc3QgYmxvY2sgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RvY2stZXh0cmEtJyt4LmtleSsnLWJsb2NrJyk7CiAgICBpZihibG9jaykgYmxvY2suY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJywgdCE9PXgua2V5KTsKICB9KTsKfQovLyBNaXNtbyBwYXRyw7NuIHF1ZSBzZXRTdG9ja1ZpZXdUeXBlKCkgZGUgYXJyaWJhLCBwZXJvIHBhcmEgQWRtaW4g4oaSIENhdMOhbG9nbyDihpIgIlZlci9lZGl0YXIKLy8gcHJvZHVjdG9zIGV4aXN0ZW50ZXMiOiBkZWNpZGUgcXXDqSBsaXN0YSBkZSBnZXN0acOzbiAoTMOhbWluYXMvTGlicmV0YXMvdGlwb3MgZXh0cmEpIHNlIHZlLAovLyB0b3RhbG1lbnRlIGFwYXJ0ZSBkZSBsbyBxdWUgZXN0w6kgZWxlZ2lkbyBlbiBlbCBmb3JtdWxhcmlvICJBw7FhZGlyIHByb2R1Y3RvIG51ZXZvIi4KZnVuY3Rpb24gc2V0QWRtaW5DYXRhbG9nVmlld1R5cGUodCl7CiAgYWxsVHlwZUtleXMoKS5mb3JFYWNoKGs9PnsgY29uc3QgYj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0dmlldy10eXBlLScrayk7IGlmKGIpIGIuY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aXZlJywgdD09PWspOyB9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtaW4tbGFtaW5hcy1zZWN0aW9uJykuY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJywgdCE9PSdsYW1pbmEnKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtaW4tbGlicmV0YXMtc2VjdGlvbicpLmNsYXNzTGlzdC50b2dnbGUoJ2hpZGRlbicsIHQhPT0nbGlicmV0YScpOwogIEVYVFJBX1NUT0NLX1RZUEVTLmZvckVhY2goeD0+ewogICAgY29uc3Qgc2VjID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbWluLWV4dHJhLScreC5rZXkrJy1zZWN0aW9uJyk7CiAgICBpZihzZWMpIHNlYy5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nLCB0IT09eC5rZXkpOwogIH0pOwp9CmxldCBzdG9ja0RhdGFDYWNoZSA9IHtzdG9jazpbXSwgYWxsSWxsOltdfTsKZnVuY3Rpb24gZmlsdGVyQWRtaW5TdG9jaygpewogIHJlbmRlckFkbWluU3RvY2soc3RvY2tEYXRhQ2FjaGUuc3RvY2ssIHN0b2NrRGF0YUNhY2hlLmFsbElsbCk7Cn0KLy8gQW50ZXMgZXN0YSB2aXN0YSBtb3N0cmFiYSB1bmEgcmVqaWxsYSBjb24gVE9EQVMgbGFzIGzDoW1pbmFzIMOXIFRPRE9TIGxvcyBmb3JtYXRvcywgbGEgbWF5b3LDrWEKLy8gYSAwIOKAlCBwZW5zYWRhIHBhcmEgcXVpZW4gbWFudGllbmUgdW4gaW52ZW50YXJpbyBzaWVtcHJlIGxsZW5vLiBBcXXDrSBsYSBub3JtYSBlcyBpbXByaW1pciBhbAovLyBtb21lbnRvLCBhc8OtIHF1ZSBzZSBsZSBkYSBsYSB2dWVsdGE6IHNvbG8gc2UgbGlzdGFuIGxhcyBjb21iaW5hY2lvbmVzIHF1ZSB0aWVuZW4gc3RvY2sKLy8gc29icmFudGUgZGUgdmVyZGFkIChwcmludGVkX3F0eSA+IDApLCBjb21vIHVuYSBsaXN0YSBjb3J0YSBkZSAiZXN0byBlcyBsbyBxdWUgdGUgaGEgcXVlZGFkbyIuCi8vIEHDsWFkaXIgc3RvY2sgbnVldm8gZXMgdW4gZ2VzdG8gcHVudHVhbCBhcGFydGUgKGZvcm11bGFyaW8gZGUgYXJyaWJhLCBwb3B1bGF0ZUFkZFN0b2NrRm9ybSAvCi8vIGFkZEFkbWluU3RvY2tFbnRyeSksIG5vIHVuYSBjYXNpbGxhIHF1ZSBoYXkgcXVlIHJlbGxlbmFyIHBhcmEgY2FkYSByZWZlcmVuY2lhLgovLyBPcmRlbiBmaWpvIGRlIGZvcm1hdG9zIGRlbnRybyBkZSBjYWRhIGlsdXN0cmFjacOzbiwgcGFyYSBxdWUgQTMvQTQvQTUgbm8gc2FsZ2FuIG1lemNsYWRvcwovLyBlbnRyZSBpbHVzdHJhY2lvbmVzIGRpc3RpbnRhcyAoYW50ZXMgc2Ugb3JkZW5hYmEgdG9kbyBqdW50byBzb2xvIHBvciBjYW50aWRhZCkuCmNvbnN0IFNUT0NLX0ZPUk1BVF9PUkRFUiA9IFsnQTMnLCdBNCcsJ0E1JywnMTR4NDInXTsKZnVuY3Rpb24gc3RvY2tGb3JtYXRSYW5rKGYpeyBjb25zdCBpID0gU1RPQ0tfRk9STUFUX09SREVSLmluZGV4T2YoZik7IHJldHVybiBpPT09LTEgPyA5OSA6IGk7IH0KZnVuY3Rpb24gcmVuZGVyQWRtaW5TdG9jayhzdG9jaywgYWxsSWxsKXsKICBzdG9ja0RhdGFDYWNoZSA9IHtzdG9jaywgYWxsSWxsfTsKICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1pbi1zdG9jaycpOwogIGNvbnN0IGZpbHRlclRleHQgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbWluLXN0b2NrLXNlYXJjaCcpPy52YWx1ZSB8fCAnJykudG9Mb3dlckNhc2UoKS50cmltKCk7CiAgY29uc3QgYnlJZCA9IHt9OwogIGFsbElsbC5mb3JFYWNoKGk9PnsgYnlJZFtpLmlkXSA9IGk7IH0pOwogIGxldCBlbnRyaWVzID0gKHN0b2NrfHxbXSkKICAgIC5maWx0ZXIocyA9PiAocy5wcmludGVkX3F0eXx8MCkgPiAwKQogICAgLm1hcChzID0+ICh7IHMsIGlsbDogYnlJZFtzLmlsbHVzdHJhdGlvbl9pZF0gfSkpCiAgICAuZmlsdGVyKGUgPT4gZS5pbGwpOyAvLyBzb2xvIGzDoW1pbmFzIGFjdGl2YXMgZW4gZWwgY2F0w6Fsb2dvCiAgaWYoZmlsdGVyVGV4dCl7CiAgICBlbnRyaWVzID0gZW50cmllcy5maWx0ZXIoKHtpbGx9KSA9PiAoaWxsLnJlZnx8JycpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVGV4dCkgfHwgKGlsbC5uYW1lfHwnJykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJUZXh0KSk7CiAgfQogIGlmKCFlbnRyaWVzLmxlbmd0aCl7CiAgICBlbC5pbm5lckhUTUwgPSBgPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXN1YXZlKTsiPiR7ZmlsdGVyVGV4dCA\/ICdObyBoYXkgc3RvY2sgc29icmFudGUgcXVlIGNvaW5jaWRhIGNvbiBlc2EgYsO6c3F1ZWRhLicgOiAnTm8gdGllbmVzIHN0b2NrIHNvYnJhbnRlIGFob3JhIG1pc21vIOKAlCB0b2RvIGxvIHF1ZSBzZSBwaWRlIHNlIGltcHJpbWUgYWwgbW9tZW50by4nfTwvcD5gOwogICAgcmV0dXJuOwogIH0KICAvLyBBZ3J1cGFkbyBwb3IgaWx1c3RyYWNpw7NuLCB5IGRlbnRybyBkZSBjYWRhIHVuYSBsb3MgZm9ybWF0b3Mgc2llbXByZSBlbiBlbCBtaXNtbyBvcmRlbgogIC8vIChBMywgQTQsIEE1Li4uKSDigJQgYW50ZXMgc2Fsw61hIHRvZG8gbWV6Y2xhZG8gcG9ycXVlIHNlIG9yZGVuYWJhIHNvbG8gcG9yIGNhbnRpZGFkLgogIGNvbnN0IGdyb3VwcyA9IHt9OwogIGVudHJpZXMuZm9yRWFjaCgoe3MsIGlsbH0pID0+IHsKICAgIGlmKCFncm91cHNbaWxsLmlkXSkgZ3JvdXBzW2lsbC5pZF0gPSB7aWxsLCBpdGVtczogW119OwogICAgZ3JvdXBzW2lsbC5pZF0uaXRlbXMucHVzaChzKTsKICB9KTsKICBjb25zdCBncm91cExpc3QgPSBPYmplY3QudmFsdWVzKGdyb3Vwcyk7CiAgZ3JvdXBMaXN0LmZvckVhY2goZyA9PiBnLml0ZW1zLnNvcnQoKGEsYikgPT4gc3RvY2tGb3JtYXRSYW5rKGEuZm9ybWF0KSAtIHN0b2NrRm9ybWF0UmFuayhiLmZvcm1hdCkpKTsKICBncm91cExpc3Quc29ydCgoYSxiKSA9PiAoYS5pbGwubmFtZXx8JycpLmxvY2FsZUNvbXBhcmUoYi5pbGwubmFtZXx8JycsICdlcycsIHtzZW5zaXRpdml0eTonYmFzZScsIG51bWVyaWM6dHJ1ZX0pKTsKICBjb25zdCBjYXJkcyA9IGdyb3VwTGlzdC5tYXAoKHtpbGwsIGl0ZW1zfSkgPT4gewogICAgY29uc3QgZm9ybWF0Um93cyA9IGl0ZW1zLm1hcChzID0+IHsKICAgICAgY29uc3QgbG93ID0gKHMucHJpbnRlZF9xdHl8fDApIDw9IDE7CiAgICAgIGNvbnN0IGxhYmVsID0gKGlsbC5yZWYrJyAoJytzLmZvcm1hdCsnKScpLnJlcGxhY2UoLycvZywiXFwnIik7CiAgICAgIGNvbnN0IGZuID0gYChxKT0+c2V0U3RvY2soJyR7aWxsLmlkfScsJyR7cy5mb3JtYXR9JyxxKWA7CiAgICAgIHJldHVybiBgPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6NHB4O3BhZGRpbmc6M3B4IDA7JHtsb3c\/J2NvbG9yOnZhcigtLWVycm9yKTsnOicnfSI+CiAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXN1YXZlKTsiPiR7cy5mb3JtYXR9JHtsb3c\/JyA8c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwcHg7Ij4ocG9jYXMpPC9zcGFuPic6Jyd9PC9zcGFuPgogICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjNweDtmbGV4LXNocmluazowOyI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgc3R5bGU9IndpZHRoOjIycHg7aGVpZ2h0OjIycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjNweDtiYWNrZ3JvdW5kOiNmZmY7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MTtjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOjA7IiBvbmNsaWNrPSJzdGVwU3RvY2tDYXJkKCR7Zm59LCAke3MucHJpbnRlZF9xdHl8fDB9LCAtMSkiPuKIkjwvYnV0dG9uPgogICAgICAgICAgPHNwYW4gc3R5bGU9Im1pbi13aWR0aDoxNnB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMDsiPiR7cy5wcmludGVkX3F0eX08L3NwYW4+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgc3R5bGU9IndpZHRoOjIycHg7aGVpZ2h0OjIycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjNweDtiYWNrZ3JvdW5kOiNmZmY7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MTtjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOjA7IiBvbmNsaWNrPSJzdGVwU3RvY2tDYXJkKCR7Zm59LCAke3MucHJpbnRlZF9xdHl8fDB9LCAxKSI+KzwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIHRpdGxlPSJCb3JyYXIiIHN0eWxlPSJ3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2JvcmRlcjpub25lO2JhY2tncm91bmQ6bm9uZTtjb2xvcjp2YXIoLS1lcnJvcik7Zm9udC1zaXplOjEzcHg7Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzowOyIgb25jbGljaz0iY29uZmlybVN0b2NrQ2hhbmdlKCR7cy5wcmludGVkX3F0eXx8MH0sIDAsICcke2xhYmVsfScsICR7Zm59KSI+4pyVPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PmA7CiAgICB9KS5qb2luKCcnKTsKICAgIGNvbnN0IHRodW1iID0gaWxsLmltYWdlX3VybAogICAgICA\/IGA8aW1gK2BnIHNyYz0iJHt0aHVtYlNyYyhpbGwpfSIgYWx0PSIkeyhpbGwubmFtZXx8aWxsLnJlZnx8JycpLnJlcGxhY2UoLyIvZywnJnF1b3Q7Jyl9IiBsb2FkaW5nPSJsYXp5IiBzdHlsZT0id2lkdGg6MTAwJTthc3BlY3QtcmF0aW86My80O29iamVjdC1maXQ6Y292ZXI7ZGlzcGxheTpibG9jaztiYWNrZ3JvdW5kOnZhcigtLWNyZW1hLTIpOyI+YAogICAgICA6IGA8ZGl2IHN0eWxlPSJ3aWR0aDoxMDAlO2FzcGVjdC1yYXRpbzozLzQ7YmFja2dyb3VuZDp2YXIoLS1jcmVtYS0yKTsiPjwvZGl2PmA7CiAgICByZXR1cm4gYDxkaXYgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo4cHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6I2ZmZjsiPgogICAgICAke3RodW1ifQogICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOjZweCA3cHggOHB4OyI+CiAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NjAwO2xpbmUtaGVpZ2h0OjEuMjU7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwOyI+JHtpbGwucmVmfTwvZGl2PgogICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXN1YXZlKTtsaW5lLWhlaWdodDoxLjI1O292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDttYXJnaW4tYm90dG9tOjRweDsiPiR7aWxsLm5hbWV9PC9kaXY+CiAgICAgICAgJHtmb3JtYXRSb3dzfQogICAgICA8L2Rpdj4KICAgIDwvZGl2PmA7CiAgfSkuam9pbignJyk7CiAgZWwuaW5uZXJIVE1MID0gYDxkaXYgY2xhc3M9ImdyaWQgc21hbGwgc3RvY2stZ3JpZCIgc3R5bGU9ImdyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maWxsLG1pbm1heCgxNDBweCwxZnIpKTsiPiR7Y2FyZHN9PC9kaXY+YDsKfQovLyBGb3JtdWxhcmlvICIrIEHDsWFkaXIgc3RvY2siOiBzZSBlbGlnZSBsYSBpbHVzdHJhY2nDs24gdG9jYW5kbyBzdSBmb3RvIChubyB1biBkZXNwbGVnYWJsZSBkZQovLyB0ZXh0bykg4oCUIHVuIHNlbGVjdCBuYXRpdm8gbm8gZGVqYSB2ZXIgbGEgaW1hZ2VuIG1pZW50cmFzIHJlcGFzYXMgbGFzIG9wY2lvbmVzIHNpbiBoYWJlcgovLyBlbGVnaWRvIHlhIHVuYSwgYXPDrSBxdWUgYXF1w60gc2UgdmUgbGEgY3VhZHLDrWN1bGEgZW50ZXJhIGRlIHVuYSB2ZXogeSBzZSB0b2NhIGxhIHF1ZSBlcy4KZnVuY3Rpb24gcG9wdWxhdGVBZGRTdG9ja0Zvcm0oKXsKICBjb25zdCBpbGxJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZGRzdG9jay1pbGwnKTsKICBpZighaWxsSW5wdXQpIHJldHVybjsKICBpbGxJbnB1dC52YWx1ZSA9ICcnOwogIGNvbnN0IHNlYXJjaEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkZHN0b2NrLWlsbC1zZWFyY2gnKTsKICBpZihzZWFyY2hFbCkgc2VhcmNoRWwudmFsdWUgPSAnJzsKICByZW5kZXJBZGRTdG9ja1BpY2tlcigpOwogIG9uQWRkU3RvY2tJbGxDaGFuZ2UoKTsKfQpmdW5jdGlvbiByZW5kZXJBZGRTdG9ja1BpY2tlcigpewogIGNvbnN0IHdyYXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRkc3RvY2staWxsLXBpY2tlcicpOwogIGlmKCF3cmFwKSByZXR1cm47CiAgY29uc3QgZmlsdGVyVGV4dCA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRkc3RvY2staWxsLXNlYXJjaCcpPy52YWx1ZSB8fCAnJykudG9Mb3dlckNhc2UoKS50cmltKCk7CiAgY29uc3Qgc2VsZWN0ZWRJZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZGRzdG9jay1pbGwnKT8udmFsdWU7CiAgbGV0IGxpc3QgPSBpbGx1c3RyYXRpb25zLmZpbHRlcihpID0+IChpLnByb2R1Y3RfdHlwZXx8J2xhbWluYScpPT09J2xhbWluYScpOwogIGlmKGZpbHRlclRleHQpIGxpc3QgPSBsaXN0LmZpbHRlcihpID0+IChpLnJlZnx8JycpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVGV4dCkgfHwgKGkubmFtZXx8JycpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVGV4dCkpOwogIGxpc3QgPSBzb3J0QnlOYW1lRXMobGlzdCk7CiAgaWYoIWxpc3QubGVuZ3RoKXsgd3JhcC5pbm5lckhUTUwgPSAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW46MDsiPk5pbmd1bmEgaWx1c3RyYWNpw7NuIGNvaW5jaWRlIGNvbiBlc2EgYsO6c3F1ZWRhLjwvcD4nOyByZXR1cm47IH0KICB3cmFwLmlubmVySFRNTCA9IGxpc3QubWFwKGkgPT4gewogICAgY29uc3Qgc2VsID0gaS5pZCA9PT0gc2VsZWN0ZWRJZDsKICAgIGNvbnN0IHRodW1iID0gaS5pbWFnZV91cmwKICAgICAgPyBgPGltYCtgZyBzcmM9IiR7dGh1bWJTcmMoaSl9IiBhbHQ9IiR7KGkubmFtZXx8aS5yZWZ8fCcnKS5yZXBsYWNlKC8iL2csJyZxdW90OycpfSIgbG9hZGluZz0ibGF6eSIgc3R5bGU9IndpZHRoOjQ0cHg7aGVpZ2h0OjU4cHg7b2JqZWN0LWZpdDpjb3Zlcjtib3JkZXItcmFkaXVzOjRweDtkaXNwbGF5OmJsb2NrOyI+YAogICAgICA6IGA8ZGl2IHN0eWxlPSJ3aWR0aDo0NHB4O2hlaWdodDo1OHB4O2JhY2tncm91bmQ6dmFyKC0tY3JlbWEtMik7Ym9yZGVyLXJhZGl1czo0cHg7Ij48L2Rpdj5gOwogICAgcmV0dXJuIGA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgdGl0bGU9IiR7KGkucmVmKycg4oCUICcraS5uYW1lKS5yZXBsYWNlKC8iL2csJyZxdW90OycpfSIgb25jbGljaz0ic2VsZWN0QWRkU3RvY2tJbGwoJyR7aS5pZH0nKSIgc3R5bGU9ImJvcmRlcjoycHggc29saWQgJHtzZWw\/J3ZhcigtLWFjY2VudCknOid0cmFuc3BhcmVudCd9O2JvcmRlci1yYWRpdXM6NnB4O3BhZGRpbmc6MnB4O2JhY2tncm91bmQ6bm9uZTtjdXJzb3I6cG9pbnRlcjtsaW5lLWhlaWdodDowOyI+JHt0aHVtYn08L2J1dHRvbj5gOwogIH0pLmpvaW4oJycpOwp9CmZ1bmN0aW9uIHNlbGVjdEFkZFN0b2NrSWxsKGlkKXsKICBjb25zdCBpbGxJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZGRzdG9jay1pbGwnKTsKICBpZihpbGxJbnB1dCkgaWxsSW5wdXQudmFsdWUgPSBpZDsKICByZW5kZXJBZGRTdG9ja1BpY2tlcigpOwogIG9uQWRkU3RvY2tJbGxDaGFuZ2UoKTsKfQpmdW5jdGlvbiBvbkFkZFN0b2NrSWxsQ2hhbmdlKCl7CiAgY29uc3QgaWxsSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRkc3RvY2staWxsJyk7CiAgY29uc3QgZm10U2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkZHN0b2NrLWZtdCcpOwogIGNvbnN0IHNlbGVjdGVkRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRkc3RvY2staWxsLXNlbGVjdGVkJyk7CiAgaWYoIWlsbElucHV0IHx8ICFmbXRTZWwpIHJldHVybjsKICBjb25zdCBpbGwgPSBhZG1pbkxhbWluYXNMaXN0LmZpbmQoeD0+eC5pZD09PWlsbElucHV0LnZhbHVlKTsKICBjb25zdCBmbXRzID0gKGlsbD8uZm9ybWF0c19hdmFpbGFibGUpfHxbXTsKICBmbXRTZWwuaW5uZXJIVE1MID0gZm10cy5tYXAoZj0+YDxvcHRpb24gdmFsdWU9IiR7Zn0iPiR7Zn08L29wdGlvbj5gKS5qb2luKCcnKTsKICBpZihzZWxlY3RlZEVsKXsKICAgIHNlbGVjdGVkRWwudGV4dENvbnRlbnQgPSBpbGwgPyAoaWxsLnJlZisnIOKAlCAnK2lsbC5uYW1lKSA6ICdOaW5ndW5hIOKAlCB0b2NhIHVuYSBmb3RvIGRlIGFycmliYSc7CiAgICBzZWxlY3RlZEVsLnN0eWxlLmNvbG9yID0gaWxsID8gJ3ZhcigtLWluayknIDogJyM4YTVhMDAnOwogIH0KfQphc3luYyBmdW5jdGlvbiBhZGRBZG1pblN0b2NrRW50cnkoKXsKICBjb25zdCBpbGxJZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZGRzdG9jay1pbGwnKT8udmFsdWU7CiAgY29uc3QgZm10ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkZHN0b2NrLWZtdCcpPy52YWx1ZTsKICBjb25zdCBxdHkgPSBwYXJzZUludChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRkc3RvY2stcXR5Jyk\/LnZhbHVlfHwnMCcsMTApOwogIGlmKCFpbGxJZCB8fCAhZm10KXsgYWxlcnQoJ0VsaWdlIHVuIGFydMOtY3VsbyB5IHVuIGZvcm1hdG8uJyk7IHJldHVybjsgfQogIGlmKCFxdHkgfHwgcXR5PDEpeyBhbGVydCgnUG9uIHVuYSBjYW50aWRhZCBtYXlvciBxdWUgMC4nKTsgcmV0dXJuOyB9CiAgY29uc3QgaWxsID0gYWRtaW5MYW1pbmFzTGlzdC5maW5kKHg9PnguaWQ9PT1pbGxJZCk7CiAgY29uc3QgZXhpc3RpbmcgPSBzdG9ja0RhdGFDYWNoZS5zdG9jay5maW5kKHM9PnMuaWxsdXN0cmF0aW9uX2lkPT09aWxsSWQgJiYgcy5mb3JtYXQ9PT1mbXQpOwogIGNvbnN0IG5leHQgPSAoZXhpc3Rpbmc\/ZXhpc3RpbmcucHJpbnRlZF9xdHk6MCkgKyBxdHk7IC8vIHNlIHN1bWEgYSBsbyBxdWUgeWEgaHViaWVyYSwgbm8gbG8gc3VzdGl0dXllCiAgYXdhaXQgc2V0U3RvY2soaWxsSWQsIGZtdCwgbmV4dCk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkZHN0b2NrLXF0eScpLnZhbHVlID0gMTsKICBzdG9ja1RvYXN0KGBBw7FhZGlkbzogKyR7cXR5fSBkZSAke2lsbD9pbGwucmVmOicnfSAoJHtmbXR9KS4gVG90YWwgYWhvcmE6ICR7bmV4dH0uYCk7Cn0KLy8gLS0tLS0tLS0tLSAiKyBBw7FhZGlyIHN0b2NrIiBnZW7DqXJpY28gcGFyYSBsaWJyZXRhcyB5IHRpcG9zIGV4dHJhIChtaXNtbyBwYXRyw7NuIHF1ZSBsw6FtaW5hcywgcGVybwovLyBzaW4gZm9ybWF0byDigJQgc29sbyB1bmlkYWRlcykg4oCUIHJldXRpbGl6YWRvIHBhcmEgcXVlIGN1YWxxdWllciB0aXBvIG51ZXZvIGxvIHRlbmdhIGF1dG9tw6F0aWNhbWVudGUuIC0tLS0tLS0tLS0KZnVuY3Rpb24gc3RvY2tBZGRJZHMoa2luZCwgdHlwZSl7CiAgY29uc3Qgc3VmZml4ID0ga2luZD09PSdsaWJyZXRhJyA\/ICdsYicgOiAnZXgtJyt0eXBlOwogIHJldHVybiB7CiAgICBzZWFyY2g6ICdhZGRzdG9jay0nK3N1ZmZpeCsnLXNlYXJjaCcsCiAgICBpZElucHV0OiAnYWRkc3RvY2stJytzdWZmaXgrJy1pZCcsCiAgICBwaWNrZXI6ICdhZGRzdG9jay0nK3N1ZmZpeCsnLXBpY2tlcicsCiAgICBzZWxlY3RlZDogJ2FkZHN0b2NrLScrc3VmZml4Kyctc2VsZWN0ZWQnLAogICAgcXR5OiAnYWRkc3RvY2stJytzdWZmaXgrJy1xdHknCiAgfTsKfQpmdW5jdGlvbiBzdG9ja0FkZExpc3Qoa2luZCwgdHlwZSl7CiAgcmV0dXJuIGtpbmQ9PT0nbGlicmV0YScgPyBhZG1pbkxpYnJldGFzTGlzdCA6IChhZG1pbkV4dHJhTGlzdHNbdHlwZV18fFtdKTsKfQpmdW5jdGlvbiBwb3B1bGF0ZVN0b2NrQWRkRm9ybUdlbmVyaWMoa2luZCwgdHlwZSl7CiAgY29uc3QgaWRzID0gc3RvY2tBZGRJZHMoa2luZCwgdHlwZSk7CiAgY29uc3QgaWRJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkcy5pZElucHV0KTsKICBpZighaWRJbnB1dCkgcmV0dXJuOwogIGlkSW5wdXQudmFsdWUgPSAnJzsKICBjb25zdCBzZWFyY2hFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkcy5zZWFyY2gpOwogIGlmKHNlYXJjaEVsKSBzZWFyY2hFbC52YWx1ZSA9ICcnOwogIHJlbmRlclN0b2NrQWRkUGlja2VyR2VuZXJpYyhraW5kLCB0eXBlKTsKICBvblN0b2NrQWRkSWxsQ2hhbmdlR2VuZXJpYyhraW5kLCB0eXBlKTsKfQpmdW5jdGlvbiByZW5kZXJTdG9ja0FkZFBpY2tlckdlbmVyaWMoa2luZCwgdHlwZSl7CiAgY29uc3QgaWRzID0gc3RvY2tBZGRJZHMoa2luZCwgdHlwZSk7CiAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkcy5waWNrZXIpOwogIGlmKCF3cmFwKSByZXR1cm47CiAgY29uc3QgZmlsdGVyVGV4dCA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZHMuc2VhcmNoKT8udmFsdWUgfHwgJycpLnRvTG93ZXJDYXNlKCkudHJpbSgpOwogIGNvbnN0IHNlbGVjdGVkSWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZHMuaWRJbnB1dCk\/LnZhbHVlOwogIGxldCBsaXN0ID0gc3RvY2tBZGRMaXN0KGtpbmQsIHR5cGUpOwogIGlmKGZpbHRlclRleHQpIGxpc3QgPSBsaXN0LmZpbHRlcihpID0+IChpLnJlZnx8JycpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVGV4dCkgfHwgKGkubmFtZXx8JycpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVGV4dCkpOwogIGxpc3QgPSBzb3J0QnlOYW1lRXMobGlzdCk7CiAgaWYoIWxpc3QubGVuZ3RoKXsgd3JhcC5pbm5lckhUTUwgPSAnPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW46MDsiPk5pbmd1bmEgY29pbmNpZGUgY29uIGVzYSBiw7pzcXVlZGEuPC9wPic7IHJldHVybjsgfQogIHdyYXAuaW5uZXJIVE1MID0gbGlzdC5tYXAoaSA9PiB7CiAgICBjb25zdCBzZWwgPSBpLmlkID09PSBzZWxlY3RlZElkOwogICAgY29uc3QgdGh1bWIgPSBpLmltYWdlX3VybAogICAgICA\/IGA8aW1gK2BnIHNyYz0iJHt0aHVtYlNyYyhpKX0iIGFsdD0iJHsoaS5uYW1lfHxpLnJlZnx8JycpLnJlcGxhY2UoLyIvZywnJnF1b3Q7Jyl9IiBsb2FkaW5nPSJsYXp5IiBzdHlsZT0id2lkdGg6NDRweDtoZWlnaHQ6NThweDtvYmplY3QtZml0OmNvdmVyO2JvcmRlci1yYWRpdXM6NHB4O2Rpc3BsYXk6YmxvY2s7Ij5gCiAgICAgIDogYDxkaXYgc3R5bGU9IndpZHRoOjQ0cHg7aGVpZ2h0OjU4cHg7YmFja2dyb3VuZDp2YXIoLS1jcmVtYS0yKTtib3JkZXItcmFkaXVzOjRweDsiPjwvZGl2PmA7CiAgICByZXR1cm4gYDxidXR0b24gdHlwZT0iYnV0dG9uIiB0aXRsZT0iJHsoaS5yZWYrJyDigJQgJytpLm5hbWUpLnJlcGxhY2UoLyIvZywnJnF1b3Q7Jyl9IiBvbmNsaWNrPSJzZWxlY3RTdG9ja0FkZElsbEdlbmVyaWMoJyR7a2luZH0nLCcke3R5cGV8fCcnfScsJyR7aS5pZH0nKSIgc3R5bGU9ImJvcmRlcjoycHggc29saWQgJHtzZWw\/J3ZhcigtLWFjY2VudCknOid0cmFuc3BhcmVudCd9O2JvcmRlci1yYWRpdXM6NnB4O3BhZGRpbmc6MnB4O2JhY2tncm91bmQ6bm9uZTtjdXJzb3I6cG9pbnRlcjtsaW5lLWhlaWdodDowOyI+JHt0aHVtYn08L2J1dHRvbj5gOwogIH0pLmpvaW4oJycpOwp9CmZ1bmN0aW9uIHNlbGVjdFN0b2NrQWRkSWxsR2VuZXJpYyhraW5kLCB0eXBlLCBpZCl7CiAgY29uc3QgaWRzID0gc3RvY2tBZGRJZHMoa2luZCwgdHlwZSk7CiAgY29uc3QgaWRJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkcy5pZElucHV0KTsKICBpZihpZElucHV0KSBpZElucHV0LnZhbHVlID0gaWQ7CiAgcmVuZGVyU3RvY2tBZGRQaWNrZXJHZW5lcmljKGtpbmQsIHR5cGUpOwogIG9uU3RvY2tBZGRJbGxDaGFuZ2VHZW5lcmljKGtpbmQsIHR5cGUpOwp9CmZ1bmN0aW9uIG9uU3RvY2tBZGRJbGxDaGFuZ2VHZW5lcmljKGtpbmQsIHR5cGUpewogIGNvbnN0IGlkcyA9IHN0b2NrQWRkSWRzKGtpbmQsIHR5cGUpOwogIGNvbnN0IGlkSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZHMuaWRJbnB1dCk7CiAgY29uc3Qgc2VsZWN0ZWRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkcy5zZWxlY3RlZCk7CiAgaWYoIWlkSW5wdXQpIHJldHVybjsKICBjb25zdCBpdGVtID0gc3RvY2tBZGRMaXN0KGtpbmQsIHR5cGUpLmZpbmQoeD0+eC5pZD09PWlkSW5wdXQudmFsdWUpOwogIGlmKHNlbGVjdGVkRWwpewogICAgc2VsZWN0ZWRFbC50ZXh0Q29udGVudCA9IGl0ZW0gPyAoaXRlbS5yZWYrJyDigJQgJytpdGVtLm5hbWUpIDogJ05pbmd1bmEg4oCUIHRvY2EgdW5hIGZvdG8gZGUgYXJyaWJhJzsKICAgIHNlbGVjdGVkRWwuc3R5bGUuY29sb3IgPSBpdGVtID8gJ3ZhcigtLWluayknIDogJyM4YTVhMDAnOwogIH0KfQphc3luYyBmdW5jdGlvbiBhZGRTdG9ja0VudHJ5R2VuZXJpYyhraW5kLCB0eXBlKXsKICBjb25zdCBpZHMgPSBzdG9ja0FkZElkcyhraW5kLCB0eXBlKTsKICBjb25zdCBpZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkcy5pZElucHV0KT8udmFsdWU7CiAgY29uc3QgcXR5ID0gcGFyc2VJbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRzLnF0eSk\/LnZhbHVlfHwnMCcsMTApOwogIGlmKCFpZCl7IGFsZXJ0KCdFbGlnZSB1biBhcnTDrWN1bG8uJyk7IHJldHVybjsgfQogIGlmKCFxdHkgfHwgcXR5PDEpeyBhbGVydCgnUG9uIHVuYSBjYW50aWRhZCBtYXlvciBxdWUgMC4nKTsgcmV0dXJuOyB9CiAgY29uc3QgaXRlbSA9IHN0b2NrQWRkTGlzdChraW5kLCB0eXBlKS5maW5kKHg9PnguaWQ9PT1pZCk7CiAgY29uc3QgbmV4dCA9IChpdGVtPy5zdG9ja19xdHl8fDApICsgcXR5OyAvLyBzZSBzdW1hIGEgbG8gcXVlIHlhIGh1YmllcmEsIG5vIGxvIHN1c3RpdHV5ZQogIGlmKGtpbmQ9PT0nbGlicmV0YScpewogICAgYXdhaXQgc2V0TGlicmV0YVN0b2NrKGlkLCBuZXh0KTsKICAgIHJlbmRlckxpYnJldGFzU3RvY2tUYWJsZShsaWJyZXRhc1N0b2NrQ2FjaGUubGVuZ3RoID8gbGlicmV0YXNTdG9ja0NhY2hlIDogYWRtaW5MaWJyZXRhc0xpc3QpOwogIH0gZWxzZSB7CiAgICBhd2FpdCBzZXRFeHRyYVN0b2NrKHR5cGUsIGlkLCBuZXh0KTsKICAgIHJlbmRlckV4dHJhU3RvY2tUYWJsZSh0eXBlLCBleHRyYVN0b2NrQ2FjaGVbdHlwZV0gfHwgYWRtaW5FeHRyYUxpc3RzW3R5cGVdIHx8IFtdKTsKICB9CiAgY29uc3QgcXR5RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZHMucXR5KTsKICBpZihxdHlFbCkgcXR5RWwudmFsdWUgPSAxOwogIHBvcHVsYXRlU3RvY2tBZGRGb3JtR2VuZXJpYyhraW5kLCB0eXBlKTsKICBzdG9ja1RvYXN0KGBBw7FhZGlkbzogKyR7cXR5fSBkZSAke2l0ZW0\/aXRlbS5yZWY6Jyd9LiBUb3RhbCBhaG9yYTogJHtuZXh0fS5gKTsKfQpsZXQgbGlicmV0YXNTdG9ja0NhY2hlID0gW107CmZ1bmN0aW9uIGZpbHRlckxpYnJldGFzU3RvY2soKXsKICByZW5kZXJMaWJyZXRhc1N0b2NrVGFibGUobGlicmV0YXNTdG9ja0NhY2hlKTsKfQpmdW5jdGlvbiByZW5kZXJMaWJyZXRhc1N0b2NrVGFibGUobGlzdCl7CiAgbGlicmV0YXNTdG9ja0NhY2hlID0gbGlzdDsKICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1pbi1saWJyZXRhcy1zdG9jaycpOwogIGlmKCFlbCkgcmV0dXJuOwogIGNvbnN0IGZpbHRlclRleHQgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbWluLWxpYnJldGFzLXN0b2NrLXNlYXJjaCcpPy52YWx1ZSB8fCAnJykudG9Mb3dlckNhc2UoKS50cmltKCk7CiAgY29uc3Qgc2NvcGVkID0gZmlsdGVyVGV4dAogICAgPyBsaXN0LmZpbHRlcihpID0+IChpLnJlZnx8JycpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVGV4dCkgfHwgKGkubmFtZXx8JycpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVGV4dCkpCiAgICA6IGxpc3Q7CiAgaWYoIXNjb3BlZC5sZW5ndGgpewogICAgZWwuaW5uZXJIVE1MID0gJzxwIHN0eWxlPSJmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1zdWF2ZSk7Ij5ObyBzZSBlbmNvbnRyw7MgbmluZ3VuYSBsaWJyZXRhIGNvbiBlc2UgY3JpdGVyaW8uPC9wPic7CiAgICByZXR1cm47CiAgfQogIGNvbnN0IHNvcnRlZCA9IHNvcnRCeU5hbWVFcyhzY29wZWQpOwogIGVsLmlubmVySFRNTCA9IHN0b2NrQ2FyZExpc3RIdG1sKHNvcnRlZCwgKGkpPT5gKHEpPT5zZXRMaWJyZXRhU3RvY2tGcm9tU3RvY2tUYWIoJyR7aS5pZH0nLHEpYCk7Cn0KYXN5bmMgZnVuY3Rpb24gc2V0TGlicmV0YVN0b2NrRnJvbVN0b2NrVGFiKGlkLCB2YWx1ZSl7CiAgYXdhaXQgc2V0TGlicmV0YVN0b2NrKGlkLCB2YWx1ZSk7CiAgY29uc3QgaXRlbSA9IGxpYnJldGFzU3RvY2tDYWNoZS5maW5kKHg9PnguaWQ9PT1pZCk7CiAgaWYoaXRlbSkgaXRlbS5zdG9ja19xdHkgPSBNYXRoLm1heCgwLCBwYXJzZUludCh2YWx1ZXx8JzAnLDEwKSB8fCAwKTsKICByZW5kZXJMaWJyZXRhc1N0b2NrVGFibGUobGlicmV0YXNTdG9ja0NhY2hlKTsKfQphc3luYyBmdW5jdGlvbiBzZXRTdG9jayhpbGx1c3RyYXRpb25faWQsIGZvcm1hdCwgcHJpbnRlZF9xdHkpewogIGNvbnN0IHF0eSA9IHBhcnNlSW50KHByaW50ZWRfcXR5fHwnMCcsMTApOwogIGNvbnN0IGV4aXN0aW5nID0gc3RvY2tEYXRhQ2FjaGUuc3RvY2suZmluZChzPT5zLmlsbHVzdHJhdGlvbl9pZD09PWlsbHVzdHJhdGlvbl9pZCAmJiBzLmZvcm1hdD09PWZvcm1hdCk7CiAgY29uc3Qgb2xkUXR5ID0gZXhpc3RpbmcgPyBleGlzdGluZy5wcmludGVkX3F0eSA6IDA7CiAgY29uc3Qge2Vycm9yfSA9IGF3YWl0IHNiLmZyb20oJ3ByaW50X3N0b2NrJykudXBzZXJ0KHtpbGx1c3RyYXRpb25faWQsIGZvcm1hdCwgcHJpbnRlZF9xdHk6IHF0eSwgdXBkYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpfSwge29uQ29uZmxpY3Q6J2lsbHVzdHJhdGlvbl9pZCxmb3JtYXQnfSk7CiAgaWYoZXJyb3IpeyBhbGVydCgnRXJyb3IgZ3VhcmRhbmRvIHN0b2NrOiAnK2Vycm9yLm1lc3NhZ2UpOyByZXR1cm47IH0KICBjb25zdCBpZHggPSBzdG9ja0RhdGFDYWNoZS5zdG9jay5maW5kSW5kZXgocz0+cy5pbGx1c3RyYXRpb25faWQ9PT1pbGx1c3RyYXRpb25faWQgJiYgcy5mb3JtYXQ9PT1mb3JtYXQpOwogIGlmKGlkeD4tMSl7IHN0b2NrRGF0YUNhY2hlLnN0b2NrW2lkeF0ucHJpbnRlZF9xdHkgPSBxdHk7IH0KICBlbHNlIHsgc3RvY2tEYXRhQ2FjaGUuc3RvY2sucHVzaCh7aWxsdXN0cmF0aW9uX2lkLCBmb3JtYXQsIHByaW50ZWRfcXR5OiBxdHl9KTsgfQogIGlmKHF0eSAhPT0gb2xkUXR5KXsKICAgIGNvbnN0IGlsbCA9IChzdG9ja0RhdGFDYWNoZS5hbGxJbGx8fGFkbWluSWxsdXN0cmF0aW9uc0xpc3R8fFtdKS5maW5kKHg9PnguaWQ9PT1pbGx1c3RyYXRpb25faWQpOwogICAgbG9nQWN0aXZpdHkoJ3N0b2NrJywgYENhbWJpw7Mgc3RvY2sgZGUgJHtpbGw\/aWxsLnJlZjonPyd9ICgke2Zvcm1hdH0pOiAke29sZFF0eX0g4oaSICR7cXR5fWApOwogIH0KICByZW5kZXJBZG1pblN0b2NrKHN0b2NrRGF0YUNhY2hlLnN0b2NrLCBzdG9ja0RhdGFDYWNoZS5hbGxJbGwpOwp9CmZ1bmN0aW9uIHJlbmRlckFkbWluU2FsZXMoc2FsZXMpewogIGNvbnN0IHRib2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2FkbWluLXNhbGVzIHRib2R5Jyk7CiAgdGJvZHkuaW5uZXJIVE1MID0gc2FsZXMubWFwKHMgPT4gYAogICAgPHRyIGRhdGEtc2FsZS1pZD0iJHtzLmlkfSI+CiAgICAgIDx0ZD4ke3MubW9udGh9PC90ZD4KICAgICAgPHRkPiR7cy5jaGFubmVscz8ubmFtZXx8Jyd9PC90ZD4KICAgICAgPHRkPiR7cy5pbGx1c3RyYXRpb25zPy5yZWZ9ICR7cy5pbGx1c3RyYXRpb25zPy5uYW1lfTwvdGQ+CiAgICAgIDx0ZD4ke3MuZm9ybWF0fTwvdGQ+CiAgICAgIDx0ZCBjbGFzcz0ic2FsZS11bml0cy1jZWxsIj4ke3MudW5pdHNfc29sZH08L3RkPgogICAgICA8dGQgY2xhc3M9InNhbGUtYWN0aW9ucy1jZWxsIiBzdHlsZT0id2hpdGUtc3BhY2U6bm93cmFwOyI+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gc2Vjb25kYXJ5IHNtYWxsIiBvbmNsaWNrPSJlZGl0QWRtaW5TYWxlUm93KCcke3MuaWR9JywgJHtzLnVuaXRzX3NvbGR9KSI+RWRpdGFyPC9idXR0b24+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gc2Vjb25kYXJ5IHNtYWxsIiBzdHlsZT0iYm9yZGVyLWNvbG9yOiNhMTI2MjY7Y29sb3I6dmFyKC0tZXJyb3IpOyIgb25jbGljaz0iZGVsZXRlQWRtaW5TYWxlUm93KCcke3MuaWR9JywgdGhpcykiPkJvcnJhcjwvYnV0dG9uPgogICAgICA8L3RkPgogICAgPC90cj5gKS5qb2luKCcnKTsKfQovLyBDb3JyaWdlIG8gYm9ycmEgdW5hIGzDrW5lYSBkZSB2ZW50YSB5YSByZXBvcnRhZGEgKHBvciBzaSB0dSBwcmltYSB1IG90cmEgcGVyc29uYSBzZSBlcXVpdm9jw7MgYWwKLy8gaW50cm9kdWNpcmxhIGEgbWFubyBlbiAiSW5zZXJ0YXIgdmVudGEgYSBub21icmUgZGUgdW5hIHRpZW5kYSIsIG8gYWwgcmVwb3J0YXJsYSBsYSBwcm9waWEgdGllbmRhKS4KZnVuY3Rpb24gZWRpdEFkbWluU2FsZVJvdyhpZCwgY3VycmVudFVuaXRzKXsKICBjb25zdCB0ciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNhZG1pbi1zYWxlcyB0cltkYXRhLXNhbGUtaWQ9IicraWQrJyJdJyk7CiAgaWYoIXRyKSByZXR1cm47CiAgY29uc3QgdW5pdHNDZWxsID0gdHIucXVlcnlTZWxlY3RvcignLnNhbGUtdW5pdHMtY2VsbCcpOwogIGNvbnN0IGFjdGlvbnNDZWxsID0gdHIucXVlcnlTZWxlY3RvcignLnNhbGUtYWN0aW9ucy1jZWxsJyk7CiAgdW5pdHNDZWxsLmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT0ibnVtYmVyIiBtaW49IjAiIHZhbHVlPSInK2N1cnJlbnRVbml0cysnIiBjbGFzcz0ic2FsZS1lZGl0LWlucHV0IiBzdHlsZT0id2lkdGg6NzBweDsiPic7CiAgYWN0aW9uc0NlbGwuaW5uZXJIVE1MID0KICAgICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBzbWFsbCIgb25jbGljaz0ic2F2ZUFkbWluU2FsZVJvdyhcJycraWQrJ1wnLCB0aGlzKSI+R3VhcmRhcjwvYnV0dG9uPiAnKwogICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIHNlY29uZGFyeSBzbWFsbCIgb25jbGljaz0iZmlsdGVyQWRtaW5TYWxlcygpIj5DYW5jZWxhcjwvYnV0dG9uPic7Cn0KYXN5bmMgZnVuY3Rpb24gc2F2ZUFkbWluU2FsZVJvdyhpZCwgYnRuKXsKICBjb25zdCB0ciA9IGJ0bi5jbG9zZXN0KCd0cicpOwogIGNvbnN0IGlucHV0ID0gdHIucXVlcnlTZWxlY3RvcignLnNhbGUtZWRpdC1pbnB1dCcpOwogIGNvbnN0IG5ld1VuaXRzID0gcGFyc2VJbnQoaW5wdXQudmFsdWV8fCcnLDEwKTsKICBpZighKG5ld1VuaXRzPj0wKSl7IGFsZXJ0KCdJbmRpY2EgdW5hIGNhbnRpZGFkIGRlIDAgbyBtw6FzLicpOyByZXR1cm47IH0KICBidG4uZGlzYWJsZWQgPSB0cnVlOwogIGNvbnN0IHtlcnJvcn0gPSBhd2FpdCBzYi5mcm9tKCdtb250aGx5X3NhbGVzJykudXBkYXRlKHt1bml0c19zb2xkOm5ld1VuaXRzfSkuZXEoJ2lkJywgaWQpOwogIGlmKGVycm9yKXsgYWxlcnQoJ0Vycm9yIGd1YXJkYW5kbzogJytlcnJvci5tZXNzYWdlKTsgYnRuLmRpc2FibGVkID0gZmFsc2U7IHJldHVybjsgfQogIGxvYWRBZG1pbkRhdGEoKTsKfQphc3luYyBmdW5jdGlvbiBkZWxldGVBZG1pblNhbGVSb3coaWQsIGJ0bil7CiAgaWYoIShhd2FpdCBjb25maXJtYSgnwr9Cb3JyYXIgZXN0YSBsw61uZWEgZGUgdmVudGE\/IE5vIHNlIHB1ZWRlIGRlc2hhY2VyLicsIHtzaTonQm9ycmFyJ30pKSkgcmV0dXJuOwogIGJ0bi5kaXNhYmxlZCA9IHRydWU7CiAgY29uc3Qge2Vycm9yfSA9IGF3YWl0IHNiLmZyb20oJ21vbnRobHlfc2FsZXMnKS5kZWxldGUoKS5lcSgnaWQnLCBpZCk7CiAgaWYoZXJyb3IpeyBhbGVydCgnRXJyb3IgYm9ycmFuZG86ICcrZXJyb3IubWVzc2FnZSk7IGJ0bi5kaXNhYmxlZCA9IGZhbHNlOyByZXR1cm47IH0KICBsb2FkQWRtaW5EYXRhKCk7Cn0KbGV0IGN1cnJlbnRTdGF0c1R5cGUgPSAndG9kb3MnOyAvLyAndG9kb3MnIHwgJ2xhbWluYScgfCAnbGlicmV0YScKbGV0IGN1cnJlbnRTdGF0c1ZpZXcgPSAndmVuZGlkYXMnOyAvLyAndmVuZGlkYXMnIHwgJ2Z1ZXJhJwpmdW5jdGlvbiBzZXRTdGF0c1R5cGUodHlwZSl7CiAgY3VycmVudFN0YXRzVHlwZSA9IHR5cGU7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRzLXR5cGUtdG9kb3MnKS5jbGFzc0xpc3QudG9nZ2xlKCdhY3RpdmUnLCB0eXBlPT09J3RvZG9zJyk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRzLXR5cGUtbGFtaW5hJykuY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aXZlJywgdHlwZT09PSdsYW1pbmEnKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdHMtdHlwZS1saWJyZXRhJykuY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aXZlJywgdHlwZT09PSdsaWJyZXRhJyk7CiAgcmVuZGVyQ3VycmVudFN0YXRzKCk7Cn0KZnVuY3Rpb24gc2V0U3RhdHNWaWV3KHZpZXcpewogIGN1cnJlbnRTdGF0c1ZpZXcgPSB2aWV3OwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0cy12aWV3LXZlbmRpZGFzJykuY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aXZlJywgdmlldz09PSd2ZW5kaWRhcycpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0cy12aWV3LWZ1ZXJhJykuY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aXZlJywgdmlldz09PSdmdWVyYScpOwogIGNvbnN0IGNhcHRpb25FbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1pbi1zdGF0cy1jYXB0aW9uJyk7CiAgaWYoY2FwdGlvbkVsKSBjYXB0aW9uRWwudGV4dENvbnRlbnQgPSB2aWV3PT09J2Z1ZXJhJwogICAgPyAnTG8gcXVlIGhhcyBlbnRyZWdhZG8gYSBsYXMgdGllbmRhcyB5IHRvZGF2w61hIG5vIGhhbiByZXBvcnRhZG8gY29tbyB2ZW5kaWRvIOKAlCBsbyBxdWUgdGllbmVuIGVuIGxhIGNhbGxlLiBQdWxzYSAidGllbmRhcyIgZW4gdW5hIGzDrW5lYSBwYXJhIHZlciBxdWnDqW4gbGEgdGllbmUuJwogICAgOiAnU29sbyBjdWVudGEgbG8gcmVwb3J0YWRvIGNvbW8gdmVuZGlkbyBwb3IgY2FkYSB0aWVuZGEuJzsKICByZW5kZXJDdXJyZW50U3RhdHMoKTsKfQpsZXQgY3VycmVudFN0YXRzUGVyaW9kbyA9ICd0b2RvJzsgLy8gJ3RvZG8nIHwgJ0FBQUEnIHwgJ0FBQUEtTU0nCmxldCBjdXJyZW50U3RhdHNDYW5hbCA9ICd0b2RvJzsgICAvLyAndG9kbycgfCAndGllbmRhcycgfCAnd2ViJyAoY2FuYWwgwqtWZW50YSBPbmxpbmXCuyA9IHZlbnRhcyBkZSBsYSB3ZWIpCmZ1bmN0aW9uIHNldFN0YXRzUGVyaW9kbyh2KXsgY3VycmVudFN0YXRzUGVyaW9kbyA9IHYgfHwgJ3RvZG8nOyByZW5kZXJDdXJyZW50U3RhdHMoKTsgfQpmdW5jdGlvbiBzZXRTdGF0c0NhbmFsKGMpewogIGN1cnJlbnRTdGF0c0NhbmFsID0gYzsKICBbJ3RvZG8nLCd0aWVuZGFzJywnd2ViJ10uZm9yRWFjaChrPT5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdHMtY2FuYWwtJytrKT8uY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aXZlJywgaz09PWMpKTsKICByZW5kZXJDdXJyZW50U3RhdHMoKTsKfQpmdW5jdGlvbiBzdGF0c1ZlbnRhc0ZpbHRyYWRhcygpewogIHJldHVybiAoYWxsU2FsZXNDYWNoZXx8W10pLmZpbHRlcihzPT57CiAgICBjb25zdCB3ZWIgPSAhIXMuY2hhbm5lbHM\/LmlzX29ubGluZV9zYWxlOwogICAgaWYoY3VycmVudFN0YXRzQ2FuYWw9PT0ndGllbmRhcycgJiYgd2ViKSByZXR1cm4gZmFsc2U7CiAgICBpZihjdXJyZW50U3RhdHNDYW5hbD09PSd3ZWInICYmICF3ZWIpIHJldHVybiBmYWxzZTsKICAgIHJldHVybiBjdXJyZW50U3RhdHNQZXJpb2RvPT09J3RvZG8nIHx8IFN0cmluZyhzLm1vbnRofHwnJykuc3RhcnRzV2l0aChjdXJyZW50U3RhdHNQZXJpb2RvKTsKICB9KTsKfQovLyBFbCBkZXNwbGVnYWJsZSBkZSBwZXJpb2RvIHNlIHJlaGFjZSBjb24gbG9zIGHDsW9zIHkgbWVzZXMgcXVlIHRpZW5lbiB2ZW50YXMgKGxvIG3DoXMgcmVjaWVudGUgcHJpbWVybykuCmZ1bmN0aW9uIHBpbnRhUGVyaW9kb3NTdGF0cygpewogIGNvbnN0IHNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0cy1wZXJpb2RvJyk7IGlmKCFzZWwpIHJldHVybjsKICBjb25zdCBtZXNlcyA9IFsuLi5uZXcgU2V0KChhbGxTYWxlc0NhY2hlfHxbXSkubWFwKHM9PlN0cmluZyhzLm1vbnRofHwnJykuc2xpY2UoMCw3KSkuZmlsdGVyKEJvb2xlYW4pKV0uc29ydCgpLnJldmVyc2UoKTsKICBjb25zdCBhbmlvcyA9IFsuLi5uZXcgU2V0KG1lc2VzLm1hcChtPT5tLnNsaWNlKDAsNCkpKV07CiAgY29uc3Qgbm9tYnJlTWVzID0gbSA9PiB7IGNvbnN0IGQgPSBuZXcgRGF0ZShtKyctMDFUMTI6MDA6MDAnKTsgY29uc3QgdCA9IGQudG9Mb2NhbGVEYXRlU3RyaW5nKGFwcExvY2FsZSgpLCB7bW9udGg6J2xvbmcnLCB5ZWFyOidudW1lcmljJ30pOyByZXR1cm4gdC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpOyB9OwogIGNvbnN0IGh0bWwgPSAnPG9wdGlvbiB2YWx1ZT0idG9kbyI+VG9kbzwvb3B0aW9uPicgKyBhbmlvcy5tYXAoYT0+YDxvcHRpb24gdmFsdWU9IiR7YX0iPkHDsW8gJHthfTwvb3B0aW9uPmApLmpvaW4oJycpICsgbWVzZXMubWFwKG09PmA8b3B0aW9uIHZhbHVlPSIke219Ij4ke25vbWJyZU1lcyhtKX08L29wdGlvbj5gKS5qb2luKCcnKTsKICBpZihzZWwuaW5uZXJIVE1MICE9PSBodG1sKXsgc2VsLmlubmVySFRNTCA9IGh0bWw7IH0KICBzZWwudmFsdWUgPSBbLi4uc2VsLm9wdGlvbnNdLnNvbWUobz0+by52YWx1ZT09PWN1cnJlbnRTdGF0c1BlcmlvZG8pID8gY3VycmVudFN0YXRzUGVyaW9kbyA6ICd0b2RvJzsKICBjdXJyZW50U3RhdHNQZXJpb2RvID0gc2VsLnZhbHVlOwp9CmZ1bmN0aW9uIHJlbmRlckN1cnJlbnRTdGF0cygpewogIGNvbnN0IGZpbHRyb3MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdHMtZmlsdHJvcy12ZW50YXMnKTsKICBpZihmaWx0cm9zKSBmaWx0cm9zLmNsYXNzTGlzdC50b2dnbGUoJ2hpZGRlbicsIGN1cnJlbnRTdGF0c1ZpZXc9PT0nZnVlcmEnKTsgLy8gZWwgZGVww7NzaXRvIGVzIGxvIGRlIGFob3JhOiBubyB2YSBwb3IgbWVzZXMKICBpZihjdXJyZW50U3RhdHNWaWV3PT09J2Z1ZXJhJykgcmVuZGVyT3V0c3RhbmRpbmdTdG9jayhjdXJyZW50U3RhdHNUeXBlKTsKICBlbHNlIHsgcGludGFQZXJpb2Rvc1N0YXRzKCk7IHJlbmRlclN0YXRzKHN0YXRzVmVudGFzRmlsdHJhZGFzKCksIGN1cnJlbnRTdGF0c1R5cGUpOyB9Cn0KLy8gIk3DoXMgdmVuZGlkYXMiOiBzb2xvIGxvIHF1ZSBsYXMgdGllbmRhcyBoYW4gcmVwb3J0YWRvIGNvbW8gdmVuZGlkbyBkZSB2ZXJkYWQKLy8gKG1vbnRobHlfc2FsZXMpIOKAlCBsbyBlbnRyZWdhZG8gKG9yZGVyX2l0ZW1zKSBubyBjdWVudGEgYXF1w60sIHBhcmEgbm8gaW5mbGFyIGVsIHJhbmtpbmcKLy8gY29uIHN0b2NrIHF1ZSBhw7puIG5vIHNlIGhhIHZlbmRpZG8uCi8vIGJ5U3RvcmU6IGlndWFsIHF1ZSBlbiAiRnVlcmEgZW4gZGVww7NzaXRvIiDigJQgZGVzZ2xvc2UgcG9yIHRpZW5kYSBkZSBjYWRhIGzDrW5lYSwgcGFyYSBwb2RlciB2ZXIKLy8gY29uIGVsIGJvdMOzbiAi4pa4IHRpZW5kYXMiIHF1acOpbiBoYSB2ZW5kaWRvIG3DoXMgZGUgZXNhIGlsdXN0cmFjacOzbiBzaW4gc2FsaXIgZGUgbGEgdmlzdGEuCmZ1bmN0aW9uIHJlbmRlclN0YXRzKHNhbGVzLCB0eXBlKXsKICB0eXBlID0gdHlwZSB8fCAndG9kb3MnOwogIGNvbnN0IHRvdGFscyA9IHt9OwogIGNvbnN0IGJ5U3RvcmUgPSB7fTsKICAoc2FsZXN8fFtdKS5mb3JFYWNoKHM9PnsKICAgIGNvbnN0IHB0ID0gcy5pbGx1c3RyYXRpb25zPy5wcm9kdWN0X3R5cGUgfHwgJ2xhbWluYSc7CiAgICBpZih0eXBlIT09J3RvZG9zJyAmJiBwdCE9PXR5cGUpIHJldHVybjsKICAgIGNvbnN0IGtleSA9IHMuaWxsdXN0cmF0aW9ucz8ucmVmKycg4oCUICcrcy5pbGx1c3RyYXRpb25zPy5uYW1lOwogICAgdG90YWxzW2tleV0gPSAodG90YWxzW2tleV18fDApICsgcy51bml0c19zb2xkOwogICAgY29uc3Qgc3RvcmVOYW1lID0gcy5jaGFubmVscz8ubmFtZSB8fCAnKHRpZW5kYSBzaW4gbm9tYnJlKSc7CiAgICBieVN0b3JlW2tleV0gPSBieVN0b3JlW2tleV0gfHwge307CiAgICBieVN0b3JlW2tleV1bc3RvcmVOYW1lXSA9IChieVN0b3JlW2tleV1bc3RvcmVOYW1lXXx8MCkgKyBzLnVuaXRzX3NvbGQ7CiAgfSk7CiAgLy8gVG90YWwgYXJyaWJhOiB1bmlkYWRlcyB2ZW5kaWRhcyB5LCBzaSBzZSBtaXJhbiBsYXMgZG9zIGNvc2FzLCBjdcOhbnRhcyBlbiB0aWVuZGFzIHkgY3XDoW50YXMgZW4gbGEgd2ViCiAgY29uc3QgdG90ID0gZWwgPT4gZWwucmVkdWNlKChuLHMpPT5uKyhzLnVuaXRzX3NvbGR8fDApLCAwKTsKICBjb25zdCBkZWxUaXBvID0gKHNhbGVzfHxbXSkuZmlsdGVyKHM9PnR5cGU9PT0ndG9kb3MnIHx8IChzLmlsbHVzdHJhdGlvbnM\/LnByb2R1Y3RfdHlwZXx8J2xhbWluYScpPT09dHlwZSk7CiAgY29uc3QgZW5XZWIgPSB0b3QoZGVsVGlwby5maWx0ZXIocz0+cy5jaGFubmVscz8uaXNfb25saW5lX3NhbGUpKSwgdG90YWwgPSB0b3QoZGVsVGlwbyk7CiAgY29uc3QgdG90RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRtaW4tc3RhdHMtdG90YWwnKTsKICBpZih0b3RFbCkgdG90RWwuaW5uZXJIVE1MID0gdG90YWwgPyBgPHN0cm9uZz4ke3RvdGFsfSB1bmlkYWQke3RvdGFsPT09MT8nJzonZXMnfSB2ZW5kaWRhJHt0b3RhbD09PTE\/Jyc6J3MnfTwvc3Ryb25nPmAgKyAoY3VycmVudFN0YXRzQ2FuYWw9PT0ndG9kbycgPyBgIMK3ICR7dG90YWwtZW5XZWJ9IGVuIHRpZW5kYXMgwrcgJHtlbldlYn0gZW4gbGEgd2ViYCA6ICcnKSA6ICcnOwogIHJlbmRlclN0YXRzQmFycyh0b3RhbHMsIGJ5U3RvcmUpOwp9Ci8vICJGdWVyYSBlbiBkZXDDs3NpdG8iOiBlbnRyZWdhZG8gKHBlZGlkb3MgImVudmlhZG8iKSBtZW5vcyB2ZW5kaWRvIChtb250aGx5X3NhbGVzKSwgYWdydXBhZG8KLy8gcG9yIGlsdXN0cmFjacOzbiDigJQgbG8gcXVlIGFuZGEgcmVwYXJ0aWRvIHkgdG9kYXbDrWEgbm8gc2UgaGEgdmVuZGlkby4gQWRlbcOhcyBkZSBsb3MgdG90YWxlcwovLyBzZSBjYWxjdWxhIHVuIGRlc2dsb3NlIHBvciB0aWVuZGEgZGUgY2FkYSBpbHVzdHJhY2nDs24gKGJyZWFrZG93bnMpLCBwYXJhIHF1ZSByZW5kZXJTdGF0c0JhcnMKLy8gbG8gbXVlc3RyZSBjb21vIHRvb2x0aXAgYWwgcGFzYXIgZWwgcmF0w7NuIOKAlCBhc8OtIHNlIHZlIGRlIHVuIHZpc3Rhem8gcXXDqSBzZSBkZWJlIHJlcG9uZXIvdmVuZGVyCi8vIHksIHNpIGhhY2UgZmFsdGEsIHF1acOpbiBsbyB0aWVuZSBzaW4gc2FsaXJzZSBkZSBsYSBtaXNtYSB2aXN0YS4gVXNhIGxhcyBtaXNtYXMgY2FjaMOpcyBxdWUgeWEKLy8gc2UgY2FyZ2FuIHBhcmEgQWRtaW4g4oaSIFRpZW5kYXMsIHNpbiBuaW5ndW5hIGNvbnN1bHRhIGV4dHJhLgpmdW5jdGlvbiByZW5kZXJPdXRzdGFuZGluZ1N0b2NrKHR5cGUpewogIHR5cGUgPSB0eXBlIHx8ICd0b2Rvcyc7CiAgY29uc3QgdG90YWxzID0ge307CiAgY29uc3QgYnlTdG9yZSA9IHt9OyAvLyBrZXkgaWx1c3RyYWNpw7NuIC0+IHt0aWVuZGE6IGNhbnRpZGFkfQogIChhbGxTaGlwcGVkT3JkZXJzQ2FjaGV8fFtdKS5mb3JFYWNoKG89PnsKICAgIGNvbnN0IHN0b3JlTmFtZSA9IG8uY2hhbm5lbHM\/Lm5hbWUgfHwgJyh0aWVuZGEgc2luIG5vbWJyZSknOwogICAgKG8ub3JkZXJfaXRlbXN8fFtdKS5mb3JFYWNoKGl0PT57CiAgICAgIGNvbnN0IHB0ID0gaXQuaWxsdXN0cmF0aW9ucz8ucHJvZHVjdF90eXBlIHx8ICdsYW1pbmEnOwogICAgICBpZih0eXBlIT09J3RvZG9zJyAmJiBwdCE9PXR5cGUpIHJldHVybjsKICAgICAgY29uc3Qga2V5ID0gaXQuaWxsdXN0cmF0aW9ucz8ucmVmKycg4oCUICcraXQuaWxsdXN0cmF0aW9ucz8ubmFtZTsKICAgICAgdG90YWxzW2tleV0gPSAodG90YWxzW2tleV18fDApICsgaXQucXVhbnRpdHk7CiAgICAgIGJ5U3RvcmVba2V5XSA9IGJ5U3RvcmVba2V5XSB8fCB7fTsKICAgICAgYnlTdG9yZVtrZXldW3N0b3JlTmFtZV0gPSAoYnlTdG9yZVtrZXldW3N0b3JlTmFtZV18fDApICsgaXQucXVhbnRpdHk7CiAgICB9KTsKICB9KTsKICAvLyAxOC8wOS8yMDI2OiBlbCBzdG9jayBhw7FhZGlkbyBhIG1hbm8gZW4gVGllbmRhcyAoc2luIHBlZGlkbykgdGFtYmnDqW4gZXN0w6EgImZ1ZXJhIGVuIGRlcMOzc2l0byIKICAvLyDigJQgYW50ZXMgbm8gc2Ugc3VtYWJhIHksIHAuIGVqLiwgdG9kbyBsbyBkZSBWYWlkaGUgKGNhcmdhZG8gYSBtYW5vKSBubyBhcGFyZWPDrWEuCiAgKGFsbEFkanVzdG1lbnRzQ2FjaGV8fFtdKS5mb3JFYWNoKGE9PnsKICAgIGlmKGEuY2hhbm5lbHM\/LmlzX2RlbW8pIHJldHVybjsKICAgIGNvbnN0IHB0ID0gYS5pbGx1c3RyYXRpb25zPy5wcm9kdWN0X3R5cGUgfHwgJ2xhbWluYSc7CiAgICBpZih0eXBlIT09J3RvZG9zJyAmJiBwdCE9PXR5cGUpIHJldHVybjsKICAgIGNvbnN0IGtleSA9IGEuaWxsdXN0cmF0aW9ucz8ucmVmKycg4oCUICcrYS5pbGx1c3RyYXRpb25zPy5uYW1lOwogICAgdG90YWxzW2tleV0gPSAodG90YWxzW2tleV18fDApICsgYS5xdWFudGl0eTsKICAgIGNvbnN0IHN0b3JlTmFtZSA9IGEuY2hhbm5lbHM\/Lm5hbWUgfHwgJyh0aWVuZGEgc2luIG5vbWJyZSknOwogICAgYnlTdG9yZVtrZXldID0gYnlTdG9yZVtrZXldIHx8IHt9OwogICAgYnlTdG9yZVtrZXldW3N0b3JlTmFtZV0gPSAoYnlTdG9yZVtrZXldW3N0b3JlTmFtZV18fDApICsgYS5xdWFudGl0eTsKICB9KTsKICAoYWxsU2FsZXNDYWNoZXx8W10pLmZvckVhY2gocz0+ewogICAgY29uc3QgcHQgPSBzLmlsbHVzdHJhdGlvbnM\/LnByb2R1Y3RfdHlwZSB8fCAnbGFtaW5hJzsKICAgIGlmKHR5cGUhPT0ndG9kb3MnICYmIHB0IT09dHlwZSkgcmV0dXJuOwogICAgY29uc3Qga2V5ID0gcy5pbGx1c3RyYXRpb25zPy5yZWYrJyDigJQgJytzLmlsbHVzdHJhdGlvbnM\/Lm5hbWU7CiAgICB0b3RhbHNba2V5XSA9ICh0b3RhbHNba2V5XXx8MCkgLSBzLnVuaXRzX3NvbGQ7CiAgICBjb25zdCBzdG9yZU5hbWUgPSBzLmNoYW5uZWxzPy5uYW1lIHx8ICcodGllbmRhIHNpbiBub21icmUpJzsKICAgIGJ5U3RvcmVba2V5XSA9IGJ5U3RvcmVba2V5XSB8fCB7fTsKICAgIGJ5U3RvcmVba2V5XVtzdG9yZU5hbWVdID0gKGJ5U3RvcmVba2V5XVtzdG9yZU5hbWVdfHwwKSAtIHMudW5pdHNfc29sZDsKICB9KTsKICBjb25zdCB0b3RFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1pbi1zdGF0cy10b3RhbCcpOwogIGlmKHRvdEVsKXsKICAgIGNvbnN0IGZ1ZXJhID0gT2JqZWN0LnZhbHVlcyh0b3RhbHMpLmZpbHRlcihxPT5xPjApLnJlZHVjZSgobixxKT0+bitxLCAwKTsKICAgIGNvbnN0IHRpZW5kYXMgPSBuZXcgU2V0KCk7IE9iamVjdC52YWx1ZXMoYnlTdG9yZSkuZm9yRWFjaChtPT5PYmplY3QuZW50cmllcyhtKS5mb3JFYWNoKChbc3QscV0pPT57IGlmKHE+MCkgdGllbmRhcy5hZGQoc3QpOyB9KSk7CiAgICB0b3RFbC5pbm5lckhUTUwgPSBmdWVyYSA\/IGA8c3Ryb25nPiR7ZnVlcmF9IHVuaWRhZCR7ZnVlcmE9PT0xPycnOidlcyd9IGVuIGRlcMOzc2l0bzwvc3Ryb25nPiDCtyBlbiAke3RpZW5kYXMuc2l6ZX0gdGllbmRhJHt0aWVuZGFzLnNpemU9PT0xPycnOidzJ31gIDogJyc7CiAgfQogIHJlbmRlclN0YXRzQmFycyh0b3RhbHMsIGJ5U3RvcmUsIHthbGw6dHJ1ZX0pOwp9Ci8vIGJ5U3RvcmUgKG9wY2lvbmFsKTogeyBtaXNtYUNsYXZlUXVlVG90YWxzOiB7bm9tYnJlVGllbmRhOiBjYW50aWRhZH0gfSDigJQgc2kgc2UgcGFzYSwgY2FkYQovLyBiYXJyYSBsbGV2YSB1biBib3TDs24gIuKWuCB0aWVuZGFzIiBxdWUgZGVzcGxpZWdhIGVsIGRlc2dsb3NlIHBvciB0aWVuZGEgZGUgZXNhIGzDrW5lYSwgb3JkZW5hZG8KLy8gZGUgbWF5b3IgYSBtZW5vci4gU2UgdXNhIGVuICJGdWVyYSBlbiBkZXDDs3NpdG8iIHBhcmEgcG9kZXIgdmVyLCBzaW4gc2FsaXIgZGUgbGEgdmlzdGEgcG9yCi8vIGlsdXN0cmFjacOzbiwgcXXDqSB0aWVuZGFzIHRpZW5lbiBjYWRhIHVuYSBlbiBsYSBjYWxsZS4gQW50ZXMgZXN0byBlcmEgdW4gdG9vbHRpcCBuYXRpdm8KLy8gKHRpdGxlKSBhbCBwYXNhciBlbCByYXTDs24sIHBlcm8gZW4gbGEgcHLDoWN0aWNhIG5vIHNlIHZlw61hIGJpZW4gKGRlcGVuZGUgZGVsIG5hdmVnYWRvci9TTykg4oCUCi8vIHVuIGJvdMOzbiBxdWUgZGVzcGxpZWdhIGVzIG3DoXMgZmlhYmxlIHkgYWRlbcOhcyBmdW5jaW9uYSBpZ3VhbCBlbiBlbCBtw7N2aWwsIGRvbmRlIG5vIGhheSBob3Zlci4KZnVuY3Rpb24gcmVuZGVyU3RhdHNCYXJzKHRvdGFscywgYnlTdG9yZSwgb3B0cz17fSl7CiAgY29uc3Qgc29ydGVkID0gT2JqZWN0LmVudHJpZXModG90YWxzKS5maWx0ZXIoKFsscXR5XSk9PnF0eT4wKS5zb3J0KChhLGIpPT5iWzFdLWFbMV0pOwogIGNvbnN0IGFyciA9IG9wdHMuYWxsID8gc29ydGVkIDogc29ydGVkLnNsaWNlKDAsMTUpOwogIGNvbnN0IG1heCA9IGFyci5sZW5ndGggPyBhcnJbMF1bMV0gOiAxOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZG1pbi1zdGF0cycpLmlubmVySFRNTCA9IGFyci5tYXAoKFtuYW1lLHF0eV0sIGlkeCk9PnsKICAgIGNvbnN0IHN0b3JlcyA9IChieVN0b3JlICYmIGJ5U3RvcmVbbmFtZV0pID8gT2JqZWN0LmVudHJpZXMoYnlTdG9yZVtuYW1lXSkuZmlsdGVyKChbLHFdKT0+cT4wKS5zb3J0KChhLGIpPT5iWzFdLWFbMV0pIDogW107CiAgICBjb25zdCB0b2dnbGVCdG4gPSBzdG9yZXMubGVuZ3RoCiAgICAgID8gYDxidXR0b24gdHlwZT0iYnV0dG9uIiBpZD0ic3RhdGJyZWFrLWNhcmV0LSR7aWR4fSIgb25jbGljaz0idG9nZ2xlU3RhdEJyZWFrZG93bigke2lkeH0pIiBzdHlsZT0iYmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2NvbG9yOnZhcigtLWVycm9yKTtmb250LXNpemU6MTJweDtjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOjAgMCAwIDhweDsiPuKWuCB0aWVuZGFzPC9idXR0b24+YAogICAgICA6ICcnOwogICAgY29uc3QgYnJlYWtkb3duQm9keSA9IHN0b3Jlcy5sZW5ndGgKICAgICAgPyBgPGRpdiBpZD0ic3RhdGJyZWFrLSR7aWR4fSIgY2xhc3M9ImhpZGRlbiIgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXN1YXZlKTttYXJnaW4tdG9wOjNweDsiPiR7c3RvcmVzLm1hcCgoW3MscV0pPT5gJHtzfTogJHtxfWApLmpvaW4oJyDCtyAnKX08L2Rpdj5gCiAgICAgIDogJyc7CiAgICByZXR1cm4gYAogICAgPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbTo4cHg7Ij4KICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2ZvbnQtc2l6ZToxM3B4OyI+PHNwYW4+JHtuYW1lfSR7dG9nZ2xlQnRufTwvc3Bhbj48c3Ryb25nPiR7cXR5fTwvc3Ryb25nPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzdGF0YmFyIj48c3BhbiBzdHlsZT0id2lkdGg6JHsocXR5L21heCoxMDApfSU7Ij48L3NwYW4+PC9kaXY+CiAgICAgICR7YnJlYWtkb3duQm9keX0KICAgIDwvZGl2PmA7CiAgfSkuam9pbignJykgfHwgJzxwIHN0eWxlPSJjb2xvcjp2YXIoLS1zdWF2ZSk7Zm9udC1zaXplOjEzcHg7Ij5Ub2RhdsOtYSBubyBoYXkgZGF0b3MuPC9wPic7Cn0KZnVuY3Rpb24gdG9nZ2xlU3RhdEJyZWFrZG93bihpZHgpewogIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdGJyZWFrLScraWR4KTsKICBjb25zdCBjYXJldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0YnJlYWstY2FyZXQtJytpZHgpOwogIGlmKCFib2R5KSByZXR1cm47CiAgY29uc3Qgbm93SGlkZGVuID0gIWJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCdoaWRkZW4nKTsKICBib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2hpZGRlbicpOwogIGlmKGNhcmV0KSBjYXJldC50ZXh0Q29udGVudCA9IG5vd0hpZGRlbiA\/ICfilrggdGllbmRhcycgOiAn4pa+IHRpZW5kYXMnOwp9Cjwvc2NyaXB0Pgo8c2NyaXB0PgovLyAyNC8wOS8yMDI2OiBib3TDs24gY29uIHVuIG9qbyBlbiBjYWRhIGNhbXBvIGRlIGNvbnRyYXNlw7FhIHBhcmEgdmVyIGxvIHF1ZSBzZSBlc2NyaWJlLgovLyBTZSBhcGxpY2Egc29sbyBhIHRvZG9zIGxvcyBjYW1wb3MgdHlwZT1wYXNzd29yZCwgdGFtYmnDqW4gYSBsb3MgcXVlIGxhIGFwcCBjcmVhIGRlc3B1w6lzIChNdXRhdGlvbk9ic2VydmVyKS4KKGZ1bmN0aW9uKCl7CiAgdmFyIE9KTz0nPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTEgMTJzNC04IDExLTggMTEgOCAxMSA4LTQgOC0xMSA4LTExLTgtMTEtOHoiLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIzIi8+PC9zdmc+JzsKICB2YXIgT0pPX05PPSc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNMTcuOTQgMTcuOTRBMTAuMDcgMTAuMDcgMCAwIDEgMTIgMjBjLTcgMC0xMS04LTExLThhMTguNDUgMTguNDUgMCAwIDEgNS4wNi01Ljk0Ii8+PHBhdGggZD0iTTkuOSA0LjI0QTkuMTIgOS4xMiAwIDAgMSAxMiA0YzcgMCAxMSA4IDExIDhhMTguNSAxOC41IDAgMCAxLTIuMTYgMy4xOSIvPjxwYXRoIGQ9Ik0xNC4xMiAxNC4xMmEzIDMgMCAxIDEtNC4yNC00LjI0Ii8+PGxpbmUgeDE9IjEiIHkxPSIxIiB4Mj0iMjMiIHkyPSIyMyIvPjwvc3ZnPic7CiAgZnVuY3Rpb24gZXRpcXVldGEodmVyKXsgdmFyIGw9KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nfHwnZXMnKS5zbGljZSgwLDIpOwogICAgdmFyIHQ9e2VzOlsnTW9zdHJhciBjb250cmFzZcOxYScsJ09jdWx0YXIgY29udHJhc2XDsWEnXSxlbjpbJ1Nob3cgcGFzc3dvcmQnLCdIaWRlIHBhc3N3b3JkJ10saXQ6WydNb3N0cmEgcGFzc3dvcmQnLCdOYXNjb25kaSBwYXNzd29yZCddfVtsXXx8WydNb3N0cmFyIGNvbnRyYXNlw7FhJywnT2N1bHRhciBjb250cmFzZcOxYSddOwogICAgcmV0dXJuIHZlcj90WzFdOnRbMF07IH0KICBmdW5jdGlvbiBwb25lcihpbnApewogICAgaWYoaW5wLmRhdGFzZXQuZXllKSByZXR1cm47IGlucC5kYXRhc2V0LmV5ZT0nMSc7CiAgICB2YXIgd3JhcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7IHdyYXAuY2xhc3NOYW1lPSdwYXNzLWV5ZS13cmFwJzsKICAgIGlmKGlucC5zdHlsZS5tYXhXaWR0aCl7IHdyYXAuc3R5bGUubWF4V2lkdGg9aW5wLnN0eWxlLm1heFdpZHRoOyB9CiAgICBpbnAucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUod3JhcCwgaW5wKTsgd3JhcC5hcHBlbmRDaGlsZChpbnApOwogICAgdmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7IGIudHlwZT0nYnV0dG9uJzsgYi5jbGFzc05hbWU9J3Bhc3MtZXllJzsgYi50YWJJbmRleD0tMTsKICAgIGIuaW5uZXJIVE1MPU9KTzsgYi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLGV0aXF1ZXRhKGZhbHNlKSk7IGIudGl0bGU9ZXRpcXVldGEoZmFsc2UpOwogICAgYi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLGZ1bmN0aW9uKGUpeyBlLnByZXZlbnREZWZhdWx0KCk7IH0pOwogICAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsgdmFyIHZlcj1pbnAudHlwZT09PSdwYXNzd29yZCc7IGlucC50eXBlPXZlcj8ndGV4dCc6J3Bhc3N3b3JkJzsKICAgICAgYi5pbm5lckhUTUw9dmVyP09KT19OTzpPSk87IGIuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJyxldGlxdWV0YSh2ZXIpKTsgYi50aXRsZT1ldGlxdWV0YSh2ZXIpOyBpbnAuZm9jdXMoKTsgfSk7CiAgICB3cmFwLmFwcGVuZENoaWxkKGIpOwogIH0KICBmdW5jdGlvbiB0b2RvcygpeyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPXBhc3N3b3JkXScpLmZvckVhY2gocG9uZXIpOyB9CiAgdG9kb3MoKTsKICBuZXcgTXV0YXRpb25PYnNlcnZlcih0b2Rvcykub2JzZXJ2ZShkb2N1bWVudC5ib2R5LHtjaGlsZExpc3Q6dHJ1ZSxzdWJ0cmVlOnRydWV9KTsKfSkoKTsKPC9zY3JpcHQ+CjwvYm9keT4=')));\n  document.open();\n  document.write(html);\n  document.close();\n}\nif(document.readyState==='complete'){ __istriceReplace(); } else { window.addEventListener('load', __istriceReplace); }\n<\/script><\/p>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-950565","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/istriceillustration.com\/en\/wp-json\/wp\/v2\/pages\/950565","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/istriceillustration.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/istriceillustration.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/istriceillustration.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/istriceillustration.com\/en\/wp-json\/wp\/v2\/comments?post=950565"}],"version-history":[{"count":14,"href":"https:\/\/istriceillustration.com\/en\/wp-json\/wp\/v2\/pages\/950565\/revisions"}],"predecessor-version":[{"id":960007,"href":"https:\/\/istriceillustration.com\/en\/wp-json\/wp\/v2\/pages\/950565\/revisions\/960007"}],"wp:attachment":[{"href":"https:\/\/istriceillustration.com\/en\/wp-json\/wp\/v2\/media?parent=950565"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}