///////////////////////////////////////////////// // AUTOGENERATED AT SVN EXPORT TIME // DO NOT EDIT ///////////////////////////////////////////////// ?> Minneapolis Content
///////////////////////////////////////////////// // AUTOGENERATED AT SVN EXPORT TIME // DO NOT EDIT ///////////////////////////////////////////////// ?> YTo2OntzOjEzOiJjb250ZW50U3RhdHVzIjthOjE6e3M6Njoic3RhdHVzIjtiOjE7fXM6NzoiY29udGVudCI7czowOiIiO3M6MTM6ImNvbnRlbnRMZW5ndGgiO2k6MDtzOjExOiJtZXRhQ29udGVudCI7TjtzOjk6IkNhY2hlZGF0YSI7YTowOnt9czo3OiJDb250ZXh0IjthOjc6e3M6MTQ6IkFkSW5kZXhTZWN0aW9uIjtzOjQ6Im5ld3MiO3M6NzoiU2VjdGlvbiI7czo0OiJuZXdzIjtzOjE2OiJPQVNRdWVyeUNhdGVnb3J5IjtzOjQ6Ik5ld3MiO3M6MTk6Ik9BU1F1ZXJ5U3ViY2F0ZWdvcnkiO3M6NjoiU2VhcmNoIjtzOjEwOiJwYWdlUGFyYW1zIjtzOjMxOiIKICAgICAgICAgIAogICAgICAgICAgCiAgICAgICAgIjtzOjc6Ik9yaWdVcmwiO3M6NjA6Ii8yMDEyLTEyLTE5L2FydHMvMi1waWFub3MtNC1oYW5kcy1hbmQtdGhlLXNhbnRhbGFuZC1kaWFyaWVzLyI7czozOiJVcmwiO3M6MTAwOiIvYWRzL2ZsYXRBZHMvY2xpY2t0b3AvY2xpY2t0b3AvLy9vcmlnVXJsOi8yMDEyLTEyLTE5L2FydHMvMi1waWFub3MtNC1oYW5kcy1hbmQtdGhlLXNhbnRhbGFuZC1kaWFyaWVzIjt9fQ

Top

news

Stories

 
///////////////////////////////////////////////// // AUTOGENERATED AT SVN EXPORT TIME // DO NOT EDIT ///////////////////////////////////////////////// ?> YTo3OntzOjEzOiJjb250ZW50U3RhdHVzIjthOjE6e3M6Njoic3RhdHVzIjtiOjE7fXM6NzoiY29udGVudCI7czo0MTY3NDoiPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KICAgIHZhciBNVk5fUFVCID0gTVZOX1BVQiB8fCB7J2FjdGlvbic6J2FydGljbGUnLCAndXJsJzonaHR0cDovL3d3dy5jaXR5cGFnZXMuY29tLzIwMTItMTItMTkvYXJ0cy8yLXBpYW5vcy00LWhhbmRzLWFuZC10aGUtc2FudGFsYW5kLWRpYXJpZXMvJ307DQogICAgdmFyIE1WTl9TSE9XX1dFTENPTUUgPSBNVk5fU0hPV19XRUxDT01FIHx8IHRydWU7DQogICAgaWYoIXdpbmRvdy5SZWNhcHRjaGEpew0KICAgICAgICAkLmdldFNjcmlwdCgnaHR0cDovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkvanMvcmVjYXB0Y2hhX2FqYXguanMnKTsNCiAgICB9DQo8L3NjcmlwdD4NCg0KPGRpdiBjbGFzcz0nY29udGVudHZpZXcnPg0KIDxkaXYgY2xhc3M9J3NoYXJlcyc+DQogPHVsIGNsYXNzPSJTaGFyZV9CdXR0b25zIj48bGkgY2xhc3M9IkZhY2Vib29rX0xpa2UiPjxkaXYgaWQ9ImZiLXJvb3QiPjwvZGl2Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8vPCFbQ0RBVEFbCihmdW5jdGlvbihkLCBzLCBpZCkgew0KICB2YXIganMsIGZqcyA9IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUocylbMF07DQogIGlmIChkLmdldEVsZW1lbnRCeUlkKGlkKSkgcmV0dXJuOw0KICBqcyA9IGQuY3JlYXRlRWxlbWVudChzKTsganMuaWQgPSBpZDsNCiAganMuc3JjID0gIi8vY29ubmVjdC5mYWNlYm9vay5uZXQvZW5fVVMvYWxsLmpzI3hmYm1sPTEmYXBwSWQ9MjA3OTEwNjc1ODkxNjA0IjsNCiAgZmpzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGpzLCBmanMpOw0KICAgIH0oZG9jdW1lbnQsICdzY3JpcHQnLCAnZmFjZWJvb2stanNzZGsnKSk7Ci8vXV0+Cjwvc2NyaXB0Pgo8ZGl2IGNsYXNzPSJmYi1saWtlIiBkYXRhLXNlbmQ9InRydWUiIGRhdGEtaHJlZj0iaHR0cCUzQSUyRiUyRnd3dy5jaXR5cGFnZXMuY29tJTJGMjAxMi0xMi0xOSUyRmFydHMlMkYyLXBpYW5vcy00LWhhbmRzLWFuZC10aGUtc2FudGFsYW5kLWRpYXJpZXMlMkYiIGRhdGEtbGF5b3V0PSJidXR0b25fY291bnQiIGRhdGEtd2lkdGg9IjE1MCIgZGF0YS1zaG93LWZhY2VzPSJ0cnVlIj48L2Rpdj48L2xpPgo8bGkgY2xhc3M9IlR3aXR0ZXIiPjxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vc2hhcmUiIGNsYXNzPSJ0d2l0dGVyLXNoYXJlLWJ1dHRvbiIgZGF0YS10ZXh0PSIyIFBpYW5vcyA0IEhhbmRzIGFuZCBUaGUgU2FudGFsYW5kIERpYXJpZXMiIGRhdGEtdXJsPSJodHRwOi8vd3d3LmNpdHlwYWdlcy5jb20vMjAxMi0xMi0xOS9hcnRzLzItcGlhbm9zLTQtaGFuZHMtYW5kLXRoZS1zYW50YWxhbmQtZGlhcmllcy8iIGRhdGEtdmlhPSJjaXR5cGFnZXMiPjwvYT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwohZnVuY3Rpb24oZCxzLGlkKXt2YXIganMsZmpzPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUocylbMF07aWYoIWQuZ2V0RWxlbWVudEJ5SWQoaWQpKXtqcz1kLmNyZWF0ZUVsZW1lbnQocyk7anMuaWQ9aWQ7anMuc3JjPSIvL3BsYXRmb3JtLnR3aXR0ZXIuY29tL3dpZGdldHMuanMiO2Zqcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShqcyxmanMpO319KGRvY3VtZW50LCJzY3JpcHQiLCJ0d2l0dGVyLXdqcyIpOwovL11dPgo8L3NjcmlwdD48L2xpPgo8bGkgY2xhc3M9IlN0dW1ibGVfVXBvbiI+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwooZnVuY3Rpb24oKSB7dmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7IGxpLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsgbGkuYXN5bmMgPSB0cnVlOw0KICAgIGxpLnNyYyA9ICgnaHR0cHM6JyA9PSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCA/ICdodHRwczonIDogJ2h0dHA6JykgKyAnLy9wbGF0Zm9ybS5zdHVtYmxldXBvbi5jb20vMS93aWRnZXRzLmpzJzsNCiAgICB2YXIgcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsgcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShsaSwgcyk7DQogIH0pKCk7Ci8vXV0+Cjwvc2NyaXB0Pgo8c3U6YmFkZ2UgbGF5b3V0PSIxIj48L3N1OmJhZGdlPjwvbGk+CjxsaSBjbGFzcz0iUG9ja2V0Ij48YSBkYXRhLXBvY2tldC1sYWJlbD0icG9ja2V0IiBkYXRhLXNhdmUtdXJsPSJodHRwJTNBJTJGJTJGd3d3LmNpdHlwYWdlcy5jb20lMkYyMDEyLTEyLTE5JTJGYXJ0cyUyRjItcGlhbm9zLTQtaGFuZHMtYW5kLXRoZS1zYW50YWxhbmQtZGlhcmllcyUyRiIgZGF0YS1wb2NrZXQtY291bnQ9Imhvcml6b250YWwiIGNsYXNzPSJwb2NrZXQtYnRuIiBkYXRhLWxhbmc9ImVuIj48L2E+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4hZnVuY3Rpb24oZCxpKXtpZighZC5nZXRFbGVtZW50QnlJZChpKSl7dmFyIGo9ZC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtqLmlkPWk7ai5zcmM9Imh0dHBzOi8vd2lkZ2V0cy5nZXRwb2NrZXQuY29tL3YxL2ovYnRuLmpzP3Y9MSI7dmFyIHc9ZC5nZXRFbGVtZW50QnlJZChpKTtkLmJvZHkuYXBwZW5kQ2hpbGQoaik7fX0oZG9jdW1lbnQsInBvY2tldC1idG4tanMiKTs8L3NjcmlwdD48L2xpPgo8bGkgY2xhc3M9Ikdvb2dsZVBsdXMiPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLy88IVtDREFUQVsKKGZ1bmN0aW9uKCkgew0KICAgIHZhciBwbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOyBwby50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7IHBvLmFzeW5jID0gdHJ1ZTsNCiAgICBwby5zcmMgPSAnaHR0cHM6Ly9hcGlzLmdvb2dsZS5jb20vanMvcGx1c29uZS5qcyc7DQogICAgdmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07IHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocG8sIHMpOw0KICB9KSgpOwovL11dPgo8L3NjcmlwdD4KPGc6cGx1c29uZSBzaXplPSJtZWRpdW0iIGhyZWY9Imh0dHA6Ly93d3cuY2l0eXBhZ2VzLmNvbS8yMDEyLTEyLTE5L2FydHMvMi1waWFub3MtNC1oYW5kcy1hbmQtdGhlLXNhbnRhbGFuZC1kaWFyaWVzLyI+PC9nOnBsdXNvbmU+PC9saT48L3VsPjxkaXYgY2xhc3M9IkNsZWFySXQiPjwvZGl2PiA8L2Rpdj4NCiA8ZGl2IGNsYXNzPSdjb250ZW50X2hlYWQnPg0KICA8aDEgY2xhc3M9J2hlYWRsaW5lJz48aT4yIFBpYW5vcyA0IEhhbmRzPC9pPiBhbmQgPGk+VGhlIFNhbnRhbGFuZCBEaWFyaWVzPC9pPjwvaDE+DQogIDxoMz5Gcm9tIG11c2ljYWwgc3RhZ2UgZHJlYW1zIHRvIGJlY29taW5nIGFuIGVsZiwgdGhlc2UgZmF2b3JpdGVzIGFyZSB3b3J0aCBhbm90aGVyIGxvb2s8L2gzPg0KICA8ZGl2IGNsYXNzPSdieWxpbmUnPg0KICAgIDxzcGFuIGNsYXNzPSd0ZXh0c2l6ZScgdGl0bGU9J0NsaWNrIHRvIHJlc2l6ZSB0ZXh0Jz48YSBjbGFzcz0nc20nIGhyZWY9J2phdmFzY3JpcHQ6OycgaWQ9J3RleHRfc2l6ZV9zbSc+QTwvYT4gIDxhIGNsYXNzPSdtZWQnIGhyZWY9J2phdmFzY3JpcHQ6OycgaWQ9J3RleHRfc2l6ZV9tZWQnPkE8L2E+ICA8YSBjbGFzcz0nbGcnIGhyZWY9J2phdmFzY3JpcHQ6OycgaWQ9J3RleHRfc2l6ZV9sZyc+QTwvYT48L3NwYW4+IA0KICAgIDxzcGFuIGNsYXNzPSJjb21tZW50bGluayI+DQogICAgICAgIDxhIGhyZWY9IiNsaXZlZnlyZSI+Q29tbWVudHM8L2E+DQogICAgICAgICAgICAoPHNwYW4gY2xhc3M9ImxpdmVmeXJlLWNvbW1lbnRjb3VudCIgZGF0YS1sZnYzLWNvdW50ZXI9InRydWUiPjA8L3NwYW4+KQ0KICAgIDwvc3Bhbj4NCiAgQnkgPGEgaHJlZj0iL2F1dGhvcnMvZWQtaHV5Y2siIENsYXNzPSJhdXRob3IiPkVkIEh1eWNrPC9hPiA8c3BhbiBjbGFzcz0ncHViZGF0ZSc+V2VkbmVzZGF5LCBEZWMgMTkgMjAxMjwvc3Bhbj4NCiAgPC9kaXY+DQogPC9kaXY+DQo8IS0tZ29vZ2xlb246IGFsbC0tPg0KICAgICAgICAgICAgPG1ldGEgbmFtZT0id2VidGl0bGUiIGNvbnRlbnQ9IjIgUGlhbm9zIDQgSGFuZHMgYW5kIFRoZSBTYW50YWxhbmQgRGlhcmllcyAtIEZyb20gbXVzaWNhbCBzdGFnZSBkcmVhbXMgdG8gYmVjb21pbmcgYW4gZWxmLCB0aGVzZSBmYXZvcml0ZXMgYXJlIHdvcnRoIGFub3RoZXIgbG9vayI+CiAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJ3ZWJkZXNjcmlwdGlvbiIgY29udGVudD0iMiBQaWFub3MgNCBIYW5kc1BhcmsgU3F1YXJlIFRoZWF0cmUyMCBXLiBTZXZlbnRoIFBsLiwgU3QuIFBhdWw2NTEuMjkxLjcwMDU7IHRocm91Z2ggRGVjLiAzMAoKVGhlIFNhbnRhbGFuZCBEaWFyaWVzU291dGhlcm4gVGhlYXRyZTE0MjAgUy4gV2FzaGluZ3RvbiBBdmUuLCBNaW5uZWFwb2xpczYxMi43MjQuMzc2MDsgdGhyb3VnaCBEZWMuIDIzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iRWQgSHV5Y2siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJhdXRob3JVUkwiIGNvbnRlbnQ9Ii9hdXRob3JzL2VkLWh1eWNrIj4KICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0idGh1bWJuYWlsIiBjb250ZW50PSJodHRwOi8vbWVkaWEuY2l0eXBhZ2VzLmNvbS84NDI4MTYxLjk5LmpwZyI+CiAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJ0aHVtYnNyYyIgY29udGVudD0iY2ZhZi84NDI4MTYxLnQuanBnIj4KICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImhlYWRsaW5lIiBjb250ZW50PSIyIFBpYW5vcyA0IEhhbmRzIGFuZCBUaGUgU2FudGFsYW5kIERpYXJpZXMiPgogICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0ic3ViaGVhZGxpbmUiIGNvbnRlbnQ9IkZyb20gbXVzaWNhbCBzdGFnZSBkcmVhbXMgdG8gYmVjb21pbmcgYW4gZWxmLCB0aGVzZSBmYXZvcml0ZXMgYXJlIHdvcnRoIGFub3RoZXIgbG9vayI+CiAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJkYXRlIiBjb250ZW50PSIyMDEyLTEyLTE4IDEzOjM4OjI5Ij4KICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImNvbW1lbnRzIiBjb250ZW50PSIwIj4KICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9InNlY3Rpb24iIGNvbnRlbnQ9IkFydHMiPgogICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iY2F0ZWdvcnkiIGNvbnRlbnQ9IlRoZWF0ZXIiPgogICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0ib2JqaWQiIGNvbnRlbnQ9IjI2Njk4ODciPgogICAgDQogPGRpdiBjbGFzcz0nY29udGVudF9ib2R5IHNtJz4NCgo8cD48YSB0aXRsZT0iUmljaGFyZCBHcmVlbmJsYXR0IiBocmVmPSIvcmVsYXRlZC90by9SaWNoYXJkK0dyZWVuYmxhdHQvIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0+Q2xpY2t8a2V5d29yZFtSaWNoYXJkK0dyZWVuYmxhdHRdIiA+UmljaGFyZCBHcmVlbmJsYXR0PC9hPiBhbmQgPGEgdGl0bGU9IlRlZCBEeWtzdHJhIiBocmVmPSIvcmVsYXRlZC90by9UZWQrRHlrc3RyYS8iIGRhdGEtb21uaS10cmFjaz0iSW5mb3JtLT5DbGlja3xrZXl3b3JkW1RlZCtEeWtzdHJhXSIgPlRlZCBEeWtzdHJhPC9hPiBjcmVhdGVkIDxpPjIgUGlhbm9zIDQgSGFuZHM8L2k+IG91dCBvZiBtZW1vcmllcyBvZiB0aGVpciB5b3V0aGZ1bCB5ZWFycywgd2hlbiB0aGV5IHByYWN0aWNlZCBoYXJkIGFuZCBkcmVhbWVkIGJpZyBvZiBiZWluZyBwcm9mZXNzaW9uYWwgY2xhc3NpY2FsIG11c2ljaWFucy48L3A+CjxkaXYgY2xhc3M9J2NvbnRlbnRfaW5zZXJ0IGNoaXNlbF91Jz4NCiA8ZGl2IGNsYXNzPSdpbnNlcnRfcGhvdG8nPg0KICA8YSBocmVmPSIvcGhvdG9HYWxsZXJ5L2luZGV4LzI2Njk4ODcvMCI+PGltZyBzcmM9Imh0dHA6Ly9tZWRpYS5jaXR5cGFnZXMuY29tLzItcGlhbm9zLTQtaGFuZHMtYW5kLXRoZS1zYW50YWxhbmQtZGlhcmllcy44NDI4MTYxLjQwLmpwZyIgY2xhc3M9ImZyYW1lZCIgYWx0PSJXaGVuIGdvb2QgaXNuJiMwMzk7dCBnb29kIGVub3VnaDogTWljaGFlbCBQZWFyY2UtRG9ubGV5IChsZWZ0KSBhbmQgUGV0ZXIgVml0YWxlIiAvPjwvYT4NCiAgPGRpdiBjbGFzcz0nY3JlZCc+UGV0cm9uZWxsYSBZc3RtYTwvZGl2Pg0KICA8ZGl2IGNsYXNzPSdjYXAnPldoZW4gZ29vZCBpc24ndCBnb29kIGVub3VnaDogTWljaGFlbCBQZWFyY2UtRG9ubGV5IChsZWZ0KSBhbmQgUGV0ZXIgVml0YWxlPC9kaXY+DQogPC9kaXY+DQoNCg0KDQoNCg0KDQogICAgDQogICANCg0KDQoNCg0KDQogPGRpdiBjbGFzcz0nZGV0X3JlbCc+DQogIDxoMj5EZXRhaWxzPC9oMj4NCiAgPGRpdiBjbGFzcz0nZGVldHMnPjxwIGFsaWduPSJjZW50ZXIiPjIgUGlhbm9zIDQgSGFuZHM8L2JyID5QYXJrIFNxdWFyZSBUaGVhdHJlPC9iciA+MjAgVy4gU2V2ZW50aCBQbC4sIFN0LiBQYXVsPC9iciA+NjUxLjI5MS43MDA1OyB0aHJvdWdoIERlYy4gMzA8L3A+Cgo8cCBhbGlnbj0iY2VudGVyIj5UaGUgU2FudGFsYW5kIERpYXJpZXM8L2JyID5Tb3V0aGVybiBUaGVhdHJlPC9iciA+MTQyMCBTLiBXYXNoaW5ndG9uIEF2ZS4sIE1pbm5lYXBvbGlzPC9iciA+NjEyLjcyNC4zNzYwOyB0aHJvdWdoIERlYy4gMjM8L3A+PC9kaXY+DQo8IS0tIFJlY2VudFJlbGF0ZWQgd2lkZ2V0IGhlcmUgLS0+CiAgICA8aDI+UmVsYXRlZCBDb250ZW50PC9oMj4KICA8ZGl2IGNsYXNzPSdkZWV0cyByZWxhdGVkJz4KICAgPHVsPgogICAgPGxpID48YSBocmVmPSJodHRwOi8vd3d3LmNpdHlwYWdlcy5jb20vMjAxMi0xMi0wNS9jYWxlbmRhci90aGUtc2FudGFsYW5kLWRpYXJpZXMvIj5UaGUgU2FudGFsYW5kIERpYXJpZXM8L2E+PGRpdiBjbGFzcz0nZGF0ZSc+RGVjZW1iZXIgNSwgMjAxMjwvZGl2PjwvbGk+PGxpID48YSBocmVmPSJodHRwOi8vYmxvZ3MuY2l0eXBhZ2VzLmNvbS9kcmVzc2luZ3Jvb20vMjAxMS8xMS9jcnVtcGV0X2lzX2JhY2tfYXRfZnJhbmtfdGhlYXRyZV9mb3JfdGhlX3NhbnRhbGFuZF9kaWFyaWVzLnBocCI+Q3J1bXBldCBpcyBiYWNrIGF0IEZyYW5rIFRoZWF0cmUgZm9yICdUaGUgU2FudGFsYW5kIERpYXJpZXMnPC9hPjxkaXYgY2xhc3M9J2RhdGUnPk5vdmVtYmVyIDMwLCAyMDExPC9kaXY+PC9saT48bGkgPjxhIGhyZWY9Imh0dHA6Ly9ibG9ncy5jaXR5cGFnZXMuY29tL2dpbW1lbm9pc2UvMjAxMi8xMi90ZW5fbW9zdF9kZXByZXNzaW5nX2NvdW50cnlfY2hyaXN0bWFzX3NvbmdzLnBocCI+VGhlIHRlbiBtb3N0IGRlcHJlc3NpbmcgY291bnRyeSBDaHJpc3RtYXMgc29uZ3M8L2E+PGRpdiBjbGFzcz0nZGF0ZSc+RGVjZW1iZXIgMjAsIDIwMTI8L2Rpdj48L2xpPjxsaSA+PGEgaHJlZj0iaHR0cDovL2Jsb2dzLmNpdHlwYWdlcy5jb20vZ2ltbWVub2lzZS8yMDEyLzEyL3R3aW5fY2l0aWVzX211c2ljaWFuc19jaHJpc3RtYXNfbXVzaWNfYmVzdF93b3JzdC5waHAiPlR3aW4gQ2l0aWVzIG11c2ljaWFucyBvbiBDaHJpc3RtYXMgbXVzaWMgYXQgaXRzIGJlc3QgYW5kIHdvcnN0PC9hPjxkaXYgY2xhc3M9J2RhdGUnPkRlY2VtYmVyIDE5LCAyMDEyPC9kaXY+PC9saT48bGkgY2xhc3M9Imxhc3QiPjxhIGhyZWY9Imh0dHA6Ly93d3cuY2l0eXBhZ2VzLmNvbS8yMDEyLTExLTIxL2NhbGVuZGFyL2NocmlzdG1hcy1vZi1zd2luZy8iPkNocmlzdG1hcyBvZiBTd2luZzwvYT48ZGl2IGNsYXNzPSdkYXRlJz5Ob3ZlbWJlciAyMSwgMjAxMjwvZGl2PjwvbGk+ICAgPC91bD4KICA8L2Rpdj4KICAKICAgIDxoMj5Nb3JlIEFib3V0PC9oMj4KICA8ZGl2IGNsYXNzPSdkZWV0cyBtb3JlYWJvdXQnPgogICA8dWw+CiAgICA8bGk+PGEgaHJlZj0iL3JlbGF0ZWQvdG8vUGV0ZXIrVml0YWxlLyIgZGF0YS1vbW5pLXRyYWNrPSJJbmZvcm0tJmd0O0NsaWNrfGtleXdvcmRbUGV0ZXIrVml0YWxlXSI+UGV0ZXIgVml0YWxlPC9hPjwvbGk+PGxpPjxhIGhyZWY9Ii9yZWxhdGVkL3RvL01pY2hhZWwrUGVhcmNlLURvbmxleS8iIGRhdGEtb21uaS10cmFjaz0iSW5mb3JtLSZndDtDbGlja3xrZXl3b3JkW01pY2hhZWwrUGVhcmNlLURvbmxleV0iPk1pY2hhZWwgUGVhcmNlLURvbmxleTwvYT48L2xpPjxsaT48YSBocmVmPSIvcmVsYXRlZC90by9Kb2UrTGVhcnkvIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0mZ3Q7Q2xpY2t8a2V5d29yZFtKb2UrTGVhcnldIj5Kb2UgTGVhcnk8L2E+PC9saT48bGk+PGEgaHJlZj0iL3JlbGF0ZWQvdG8vRGF2aWQrU2VkYXJpcy8iIGRhdGEtb21uaS10cmFjaz0iSW5mb3JtLSZndDtDbGlja3xrZXl3b3JkW0RhdmlkK1NlZGFyaXNdIj5EYXZpZCBTZWRhcmlzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Ii9yZWxhdGVkL3RvL1RlZCtEeWtzdHJhLyIgZGF0YS1vbW5pLXRyYWNrPSJJbmZvcm0tJmd0O0NsaWNrfGtleXdvcmRbVGVkK0R5a3N0cmFdIj5UZWQgRHlrc3RyYTwvYT48L2xpPiAgIDwvdWw+CiAgPC9kaXY+CiAgPCEtLSAvUmVjZW50UmVsYXRlZCB3aWRnZXQgaGVyZSAtLT4gIDwhLS0gTmV3c2xldHRlciBTaWdudXAgLS0+DQogIDxtdm46YXJ0aWNsZS1zaWdudXAgc2VjdGlvbj0iYXJ0cyIgdHlwZT0iZW1haWwiIHNpemU9InNtYWxsIj48L212bjphcnRpY2xlLXNpZ251cD4NCiA8L2Rpdj4NCjwvZGl2Pg0KPHA+VGhlIHBsYXkgKHdpdGggbG90cyBvZiBtdXNpYykgbWFrZXMgYSByZXR1cm4gdG8gUGFyayBTcXVhcmUgVGhlYXRyZSwgYW5kIGl0IHByb3ZlcyBvbmNlIGFnYWluIHRvIGJlIGEgc2hvd2Nhc2UgZm9yIGFjdG9ycyA8YSB0aXRsZT0iUGV0ZXIgVml0YWxlIiBocmVmPSIvcmVsYXRlZC90by9QZXRlcitWaXRhbGUvIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0+Q2xpY2t8a2V5d29yZFtQZXRlcitWaXRhbGVdIiA+UGV0ZXIgVml0YWxlPC9hPiBhbmQgPGEgdGl0bGU9Ik1pY2hhZWwgUGVhcmNlLURvbmxleSIgaHJlZj0iL3JlbGF0ZWQvdG8vTWljaGFlbCtQZWFyY2UtRG9ubGV5LyIgZGF0YS1vbW5pLXRyYWNrPSJJbmZvcm0tPkNsaWNrfGtleXdvcmRbTWljaGFlbCtQZWFyY2UtRG9ubGV5XSIgPk1pY2hhZWwgUGVhcmNlLURvbmxleTwvYT4sIHdobyBub3Qgb25seSB0YWtlIG9uIG15cmlhZCBjaGFyYWN0ZXJzIGJ1dCB0YWNrbGUgcGxlbnR5IG9mIG11c2ljIG9uIHRoZSBtYWluIGZlYXR1cmUgb2YgdGhlIHNldDogYSBwYWlyIG9mIGdyYW5kIHBpYW5vcy48L3A+CjxwPlZpdGFsZSBhbmQgUGVhcmNlLURvbmxleSBwbGF5IGNoYXJhY3RlcnMgbXVjaCBsaWtlIHRoZSBwbGF5d3JpZ2h0cywgYW5kIHRoZXkgZXZlbiB0YWtlIG9uIHRoZSBuYW1lcyBvZiB0aGUgYXV0aG9ycy4gVGhlIG1haW4gYWN0aW9uIG9mIHRoZSBwbGF5IHRha2VzIHBsYWNlIG92ZXIgYSBkZWNhZGUsIGFzIHRoZXkgZ28gZnJvbSBlbGVtZW50YXJ5IHNjaG9vbCBraWRzIG1ha2luZyB0aGVpciBmaXJzdCBpbnJvYWRzIHRvIHBsYXlpbmcgbXVzaWMgdG8gdGVlbmFnZXJzIHdob3NlIGFtYml0aW9ucyBoYXZlIG91dHN0cmlwcGVkIHRoZWlyIGRyaXZlIGFuZCB0YWxlbnQuPC9wPgo8cD5BbG9uZyB0aGUgd2F5LCB0aGUgYWN0b3JzIGFsc28gZ2V0IHRvIHBsYXkgYSB2YXJpZXR5IG9mIGVjY2VudHJpYyBwaWFubyB0ZWFjaGVycyB3aG8gZ2l2ZSBzb21ldGltZXMgY29udHJhZGljdG9yeSBhZHZpY2UuIFRoZXkgYXJlIGFsc28gdG9ybWVudGVkIGJ5IHBhcmVudHMgd2hvIG1heSBkcml2ZSB0aGVtIHRvIHBsYXksIHBsYXksIHBsYXksIGJ1dCBhbHNvIGV2ZW50dWFsbHkgYXJlIGNvbmNlcm5lZCBieSBqdXN0IGhvdyBtdWNoIHRpbWUgdGhleSBhcmUgc3BlbmRpbmcgYXQgdGhlIGtleWJvYXJkLjwvcD4KPHA+QWxsIHRoaXMgY29tZXMgdG8gYSBoZWFkIHdoZW4gUmljaGFyZCBhbmQgVGVkIGxvb2sgdG8ganVtcCB1cCB0byB0aGUgbmV4dCBzdGFnZS4gSW4gYSBwYWlyIG9mIGh1bWlsaWF0aW5nIHNjZW5lcywgdGhleSBsZWFybiB0aGF0IHRoZWlyIHRhbGVudCBpcyBsaXR0bGUgbW9yZSB0aGFuIGF2ZXJhZ2UgaW4gdGhlIGdyZWF0ZXIgd29ybGQgYW5kIHRoYXQgdGhlaXIgZnV0dXJlcyBsaWtlbHkgbGllIG91dHNpZGUgdGhlIGNvbmNlcnQgc3RhZ2UgKHRob3VnaCBmb3IgYm90aCBvZiB0aGUgcmVhbCBhdXRob3JzIGl0IGVuZGVkIHVwIGJlaW5nIG9uc3RhZ2UpLjwvcD4KPHA+VGhlc2Ugcm9sZXMgYXJlIGRpZmZpY3VsdCB0byBjYXN0LCBhcyB0aGV5IGRlbWFuZCBwZXJmb3JtZXJzIHdobyBjYW4gYm90aCBhY3QgYW5kIHBsYXkgYXQgaGlnaCBsZXZlbHMuIFRoZSBwYWlyIGhlcmUgZG9lcyB3ZWxsIG9uIGJvdGggc2lkZXMgb2YgdGhlIGVxdWF0aW9uLCBzaG93Y2FzaW5nIHRoZSBjaG9wcyBuZWVkZWQgdG8gYnJpbmcgdGhlIHNob3cgdG8gZnVsbCBsaWZlLiBUaGV5J3ZlIGhhZCBwcmFjdGljZSwgc2luY2UgdGhpcyBpcyB0aGUgc2Vjb25kIHRpbWUgaW4gdGhyZWUgaG9saWRheSBzZWFzb25zIHRoYXQgUGFyayBTcXVhcmUgaGFzIHByZXNlbnRlZCB0aGUgd29yay4gSG93ZXZlciwgaXQncyBhIHdvcnRoeSByZXZpdmFsLCBhcyBpdCdzIGEgc2hvdyB0aGF0IHJldmVhbHMgbXVjaCB0aGUgc2Vjb25kIHRpbWUgYXJvdW5kLjwvcD4KPHA+PGI+VGhlIFNhbnRhbGFuZCBEaWFyaWVzPC9iPjwvcD4KPHA+PGI+RjwvYj5yYW5rIFRoZWF0cmUncyA8aT5UaGUgU2FudGFsYW5kIERpYXJpZXM8L2k+IG9wZW5zIHdpdGhvdXQgYW55IHJlYWwgZmFuZmFyZS4gVGhlIGxpZ2h0cyBkaW0gYSBiaXQgYW5kIGFjdG9yIDxhIHRpdGxlPSJKb2UgTGVhcnkiIGhyZWY9Ii9yZWxhdGVkL3RvL0pvZStMZWFyeS8iIGRhdGEtb21uaS10cmFjaz0iSW5mb3JtLT5DbGlja3xrZXl3b3JkW0pvZStMZWFyeV0iID5Kb2UgTGVhcnk8L2E+IHdhbGtzIG9udG8gdGhlIHN0YWdlLCBkcmVzc2VkIGluIHN0cmVldCBjbG90aGVzLiBJdCdzIHRoZSB0cmFuc2Zvcm1hdGlvbiB0aGF0IHRha2VzIHBsYWNlIGluIHRoZSBuZXh0IDcwIG1pbnV0ZXMgdGhhdCBpcyB0aGUgc3RhciBvZiB0aGUgc2hvdy48L3A+CjxwPkJhc2VkIG9uIDxhIHRpdGxlPSJEYXZpZCBTZWRhcmlzIiBocmVmPSIvcmVsYXRlZC90by9EYXZpZCtTZWRhcmlzLyIgZGF0YS1vbW5pLXRyYWNrPSJJbmZvcm0tPkNsaWNrfGtleXdvcmRbRGF2aWQrU2VkYXJpc10iID5EYXZpZCBTZWRhcmlzPC9hPidzIGZhbW91cyBtZW1vcmllcyBvZiB3b3JraW5nIGFzIGFuIGVsZiBhdCA8YSB0aXRsZT0iTWFjeSdzIEluYy4iIGhyZWY9Ii9yZWxhdGVkL3RvL01hY3kncytJbmMuLyIgZGF0YS1vbW5pLXRyYWNrPSJJbmZvcm0tPkNsaWNrfGtleXdvcmRbTWFjeSdzK0luYy5dIiA+TWFjeSdzPC9hPiBTYW50YWxhbmQgaW4gTmV3IFlvcmsgQ2l0eSwgdGhlIHN0YWdlIHZlcnNpb24gaXMgb2Z0ZW4gYSBzY2F0dGVyc2hvdCB0cmlwIGludG8gYSA8YSB0aXRsZT0iQ2hyaXN0bWFzIiBocmVmPSIvcmVsYXRlZC90by9DaHJpc3RtYXMvIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0+Q2xpY2t8a2V5d29yZFtDaHJpc3RtYXNdIiA+Q2hyaXN0bWFzPC9hPiBwYXN0LiA8YSB0aXRsZT0iSm9lIE1hbnRlbGxvIiBocmVmPSIvcmVsYXRlZC90by9Kb2UrTWFudGVsbG8vIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0+Q2xpY2t8a2V5d29yZFtKb2UrTWFudGVsbG9dIiA+Sm9lIE1hbnRlbGxvPC9hPidzIHNjcmlwdCBkb2Vzbid0IG5lY2Vzc2FyaWx5IHByb3ZpZGUgYSBjbGVhciBqb3VybmV5IGZvciBvdXIgY2hhcmFjdGVyLCB3aXRoIHJlY29sbGVjdGlvbnMgc2VlbWluZ2x5IGdhdGhlcmVkIHdpdGhvdXQgdGhvdWdodCB0byB0aGUgc2hhcGUgb2YgdGhlIHBpZWNlLjwvcD4KPHA+RGVzcGl0ZSB0aGVzZSBkaXNhZHZhbnRhZ2VzLCB0aGUgc3RhZ2Ugc2hvdyAmbWRhc2g7IEZyYW5rJ3MgdGhpcmQgZm9yYXkgJm1kYXNoOyBpcyB0cmVtZW5kb3VzbHkgZnVuLCB3aXRoIGxvdHMgb2Ygc2hhcnAgKGV2ZW4gYnJ1dGFsKSBodW1vciBhbmQgYSBjb3JlIHRoYXQgY2FuIGdldCB0byB0aGUgbW9zdCBqYWRlZCBvZiB2aWV3ZXJzLiBBZnRlciBhbGwsIGlmIFNlZGFyaXMgY2FuIGZpbmQgYSBiaXQgb2YgYXV0aGVudGljIENocmlzdG1hcyBjaGVlciBhdCBNYWN5J3MsIHRoZW4gd2UgYWxsIGNhbiBmaW5kIGl0IHNvbWV3aGVyZS48L3A+CjxwPkxlYXJ5IG1vdmVzIGVhc2lseSBpbnRvIHRoZSBjaGFyYWN0ZXIsIGFzIGNvbWZvcnRhYmxlIGluIHRoZSBtYWQgZWxmIGNvc3R1bWUgYXMgaW4gdGhlIHJlZ3VsYXIgY2xvdGhlcyBoZSB3ZWFycyBhdCB0aGUgYmVnaW5uaW5nLiBIZSBpcyBhYmxlIHRvIHRpZSBhbGwgdGhlIGRpZmZ1c2UgcGllY2VzIG9mIHRoZSBzY3JpcHQgdG9nZXRoZXIsIG1haW5seSB0aHJvdWdoIGhpcyBjaGFybSBhcyBhIHBlcmZvcm1lciBhbmQgdGhlIGFiaWxpdHkgdG8gZ2V0IGJleW9uZCB0aGUgaHVtb3IgaW50byB0aGUgY29yZSBvZiB3aGF0J3MgaGFwcGVuaW5nIG9uc3RhZ2UuPC9wPgo8cD5UaGUgc3RhZ2luZyBieSA8YSB0aXRsZT0iV2VuZHkgS25veCIgaHJlZj0iL3JlbGF0ZWQvdG8vV2VuZHkrS25veC8iIGRhdGEtb21uaS10cmFjaz0iSW5mb3JtLT5DbGlja3xrZXl3b3JkW1dlbmR5K0tub3hdIiA+V2VuZHkgS25veDwvYT4gaXMgZXF1YWxseSBhZGVwdCwgd2hpbGUgc2V0IGRlc2lnbmVyIDxhIHRpdGxlPSJTdGV2ZSBSb2hkZSIgaHJlZj0iL3JlbGF0ZWQvdG8vU3RldmUrUm9oZGUvIiBkYXRhLW9tbmktdHJhY2s9IkluZm9ybS0+Q2xpY2t8a2V5d29yZFtTdGV2ZStSb2hkZV0iID5TdGV2ZSBSb2hkZTwvYT4gZ2l2ZXMgdXMgd29yayB0aGF0IGZpbGxzIHRoZSBzcGFjZSBhdCB0aGUgU291dGhlcm4gd2l0aG91dCBvdmVyd2hlbG1pbmcgTGVhcnkgb3IgdGhlIHBsYXkuPC9wPiA8L2Rpdj4NCg0KDQo8IS0tZ29vZ2xlb2ZmOiBhbGwtLT4NCg0KPGRpdiBjbGFzcz0nYm90dG9tbGlua3MnPg0KDQogICAgICAgICAgICA8aDI+UmVsYXRlZCBDb250ZW50PC9oMj4NCiAgICAgICAgPGRpdiBjbGFzcz0iT1VUQlJBSU4iIGRhdGEtc3JjPSJodHRwOi8vd3d3LmNpdHlwYWdlcy5jb20vMjAxMi0xMi0xOS9hcnRzLzItcGlhbm9zLTQtaGFuZHMtYW5kLXRoZS1zYW50YWxhbmQtZGlhcmllcy8iIGRhdGEtd2lkZ2V0LWlkPSJBUl8yIiBkYXRhLW9iLXRlbXBsYXRlPSJtaW4iPjwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZlYXR1cmVkQWRJbmRleEFkIj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9J2NoaXNlbF91IEFJZmVhdHVyZWQnPg0KICBDaGVjayBvdXQgdGhpcyB3ZWVrJ3MgZmVhdHVyZWQgYWQgZm9yIFNlcnZpY2VzPCEtLSBsaW5rIHRvIGFwcHJvcHJpYXRlIGFkIGluZGV4IGNhdGVnb3J5IC0tPg0KICA8ZGl2IGNsYXNzPSdpbm5lcic+DQogICAgPGRpdj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPScvYWRJbmRleC8tODA3ODMvJz48aW1nIGNsYXNzPSdmcmFtZWQnIHNyYz0naHR0cDovL21lZGlhLmNpdHlwYWdlcy5jb20vODg1NjQ1Ni4xMy5qcGcnLz48L2E+PCEtLSBsaW5rIHRvIGFkIGluZGV4IGFkLCBpbWcgZGVmIDEzLCBhZHZlcnRpc2VyIGxvZ28gLS0+DQogICAgICAgICAgICA8aDQ+PGEgaHJlZj0nL2FkSW5kZXgvLTgwNzgzLyc+TWNOYWxseSBTbWl0aCBDb2xsZWdlIG9mIE11c2ljPC9hPjwvaDQ+PCEtLSBsaW5rIHRvIGFkIGluZGV4IGFkIC0tPg0KICAgICAgPGg1Pg0KICAgICAgICA8YSBocmVmPScvYWRJbmRleC8tODA3ODMvMTkzODI5MC8nPlZpZXcgQWQ8L2E+PCEtLSBsaW5rIHRvIGFkIGluZGV4IGFkIC0tPg0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPScjJyB2YWx1ZT0iMTkzODI5MCIgY2xhc3M9InRyYWNrIiBuYW1lPSJ2aWV3c2l0ZSI+VmlldyBXZWJzaXRlPC9hPjwhLS0gaWYgYXBwbGljYWJsZSwgbGluayB0byBleHRlcm5hbCB3ZWJzaXRlIC0tPg0KICAgICAgICAgICAgICA8L2g1Pg0KICAgIDwvZGl2Pg0KICA8L2Rpdj4NCiAgPGEgY2xhc3M9J21vcmUnIGhyZWY9Ii9hZEluZGV4LyI+TW9yZSBBZHMgPj48L2E+PCEtLSBsaW5rIHRvIGFkIGluZGV4IC0tPg0KPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgICAgICAgIDwhLS0gTmV3c2xldHRlciBTaWdudXAgLS0+DQogICAgICAgIDxtdm46YXJ0aWNsZS1zaWdudXAgc2VjdGlvbj0iYXJ0cyIgdHlwZT0iZW1haWwiIHNpemU9ImxhcmdlIj48L212bjphcnRpY2xlLXNpZ251cD4NCiAgICANCg0KDQo8IS0tIE5PR1NBIC0tPg0KPGRpdiBjbGFzcz0nYXJ0aWNsZWxpbmtzJyBpZD0nYXJ0aWNsZWxpbmtzJz4NCiAgICA8dGFibGU+DQogICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0ZD48YSBocmVmPScvZmVlZGJhY2svc2VuZFRvRnJpZW5kLz9vYmppZD0yNjY5ODg3Jz48aW1nIHNyYz0naHR0cDovL2Fzc2V0cy5jaXR5cGFnZXMuY29tL2ltZy9jbGVhcjUucG5nJyBpZD0naW1nX2VtYWlsX3RvX2ZyaWVuZCcgLz48ZGl2PkVtYWlsPGJyLz50byBGcmllbmQ8L2Rpdj48L2E+PC90ZD4KPHRkPjxhIGhyZWY9Jy9mZWVkYmFjay9FbWFpbEFuRW1wbG95ZWUvP2RlcGFydG1lbnQ9bGV0dGVycyc+PGltZyBzcmM9J2h0dHA6Ly9hc3NldHMuY2l0eXBhZ2VzLmNvbS9pbWcvY2xlYXI1LnBuZycgaWQ9J2ltZ193cml0ZScgLz48ZGl2PldyaXRlIHRvPGJyLz5FZGl0b3I8L2Rpdj48L2E+PC90ZD4KPHRkPjxhIGhyZWY9Jy9jb250ZW50L3ByaW50VmVyc2lvbi8yNjY5ODg3JyByZWw9J25vZm9sbG93Jz48aW1nIHNyYz0naHR0cDovL2Fzc2V0cy5jaXR5cGFnZXMuY29tL2ltZy9jbGVhcjUucG5nJyBpZD0naW1nX3ByaW50JyAvPjxkaXY+UHJpbnQ8YnIvPkFydGljbGU8L2Rpdj48L2E+PC90ZD4gICAgICAgIDwvdHI+DQogICAgPC90YWJsZT4NCjwvZGl2Pg0KDQogPCEtLSAvTk9HU0EgLS0+PCEtLSBCZVNvY2lhbCB3aWRnZXQgaGVyZSAtLT4NCjwhLS0gYXJ0aWNsZWxpbmtzIGVsZW1lbnQgaGVyZSAtLT4NCjwhLS0gcmVkZGl0IGJ1dHRvbiAtLT4NCiAgICA8ZGl2IGNsYXNzPSJyZWRkaXQtY29udGFpbmVyIj4NCiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnJlZGRpdF9uZXd3aW5kb3c9JzEnPC9zY3JpcHQ+DQogICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly93d3cucmVkZGl0LmNvbS9zdGF0aWMvYnV0dG9uL2J1dHRvbjEuanMiPjwvc2NyaXB0Pg0KICAgIDwvZGl2Pg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9J3RyaXBsZWJhcic+Jm5ic3A7PC9kaXY+DQo8YSBuYW1lPSJDb21tZW50cyI+PC9hPjxhIG5hbWU9ImNvbW1lbnRzIj48L2E+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vem9yLmxpdmVmeXJlLmNvbS93anMvdjMuMC9qYXZhc2NyaXB0cy9saXZlZnlyZS5qcyI+PC9zY3JpcHQ+CjxkaXYgY2xhc3M9ImxmQm94IHYzIj4KICAgIDxzcGFuIGNsYXNzPSJsaW5rcyI+CiAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5teXZvaWNlbmF0aW9uLmNvbSI+PGltZyBzcmM9IkBBc3NldFNlcnZlclByZWZpeEAvaW1nL2xvZ28tbXZuLTEwMC5wbmciIGFsdD0iTXkgVm9pY2UgTmF0aW9uIi8+PC9hPgogICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cubXl2b2ljZW5hdGlvbi5jb20vYWJvdXQvaGVscC8iPjxpbWcgY2xhc3M9ImxmSGVscCIgc3JjPSJAQXNzZXRTZXJ2ZXJQcmVmaXhAL2ltZy9jbGVhcjUucG5nIiBhbHQ9IkhlbHAiIHRpdGxlPSJIZWxwIi8+PC9hPgogICAgPC9zcGFuPgogICAgPGRpdiBpZD0ibGl2ZWZ5cmUiPjxzY3JpcHQ+CiAgKGZ1bmN0aW9uKCkgewogICAgCiAgIHZhciBhPXRoaXM7dmFyIGIsYyxkLGUsZjtmdW5jdGlvbiBnKCl7cmV0dXJuIGEubmF2aWdhdG9yP2EubmF2aWdhdG9yLnVzZXJBZ2VudDpudWxsfWY9ZT1kPWM9Yj0hMTt2YXIgaDtpZihoPWcoKSl7dmFyIGk9YS5uYXZpZ2F0b3I7Yj0wPT1oLmluZGV4T2YoIk9wZXJhIik7Yz0hYiYmLTEhPWguaW5kZXhPZigiTVNJRSIpO2U9KGQ9IWImJi0xIT1oLmluZGV4T2YoIldlYktpdCIpKSYmLTEhPWguaW5kZXhPZigiTW9iaWxlIik7Zj0hYiYmIWQmJiJHZWNrbyI9PWkucHJvZHVjdH12YXIgaj1jLGs9ZixsPWQsbT1lO3ZhciBuO2lmKGImJmEub3BlcmEpe3ZhciBvPWEub3BlcmEudmVyc2lvbjsiZnVuY3Rpb24iPT10eXBlb2YgbyYmbygpfWVsc2Ugaz9uPS9ydlw6KFteXCk7XSspKFwpfDspLzpqP249L01TSUVccysoW15cKTtdKykoXCl8OykvOmwmJihuPS9XZWJLaXRcLyhcUyspLyksbiYmbi5leGVjKGcoKSk7dmFyIHA9ZG9jdW1lbnQscT1wLmNyZWF0ZUVsZW1lbnQoImxpbmsiKTtxLnJlbD0ic3R5bGVzaGVldCI7cS50eXBlPSJ0ZXh0L2NzcyI7cS5ocmVmPSJodHRwOi8vd3d3LmxpdmVmeXJlLmNvbS93anMvdjMuMC9jc3MvbGl2ZWZ5cmVfIisobT8ibW9iaWxlIjoiZW1iZWQiKSsiLmNzcyI7cS5tZWRpYT0iYWxsIjtwLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQocSk7dmFyIHI9ImhlYWRlciBoZ3JvdXAgZm9vdGVyIGFydGljbGUgc2VjdGlvbiBhc2lkZSBuYXYgZmlndXJlIGZpZ2NhcHRpb24gZW1iZWQgYXVkaW8gdmlkZW8gY2FudmFzIGRldGFpbHMgc3VtbWFyeSB0aW1lIG1hcmsiLnNwbGl0KCIgIikscz1wLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSx0O2Zvcih0PTA7IHQ8ci5sZW5ndGg7IHQrKyl7cy5hcHBlbmRDaGlsZChwLmNyZWF0ZUVsZW1lbnQoclt0XSkpfTsKICAgfSkoKTsgICAgCjwvc2NyaXB0Pgo8ZGl2IGNsYXNzPSJmeXJlIGZ5cmUtd2lkdGgtbGFyZ2UiPgogIDxkaXYgY2xhc3M9ImZ5cmUtd2lkZ2V0Ij4KICAgIDxkaXYgY2xhc3M9ImZ5cmUtc3RyZWFtLXN0YXRzIj4KICAgICAgPGRpdiBjbGFzcz0iZnlyZS1jb21tZW50LWNvdW50Ij4KICAgICAgICA8c3Bhbj4wIGNvbW1lbnRzPC9zcGFuPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImZ5cmUtZGl2aWRlciI+PC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJmeXJlLWhlbHAiPgogICAgICAgIDxkaXYgY2xhc3M9ImZ5cmUtYm94LXdyYXBwZXIiPgogICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2xpdmVmeXJlLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPjxzcGFuIGNsYXNzPSJmeXJlLWxvZ28tZHJvcCI+Jm5ic3A8L3NwYW4+CiAgICAgICAgICA8aW1nIGNsYXNzPSJmeXJlLWxvZ28taGVscCIgc3JjPSJodHRwOi8vd3d3LmxpdmVmeXJlLmNvbS93anMvdjMuMC9pbWFnZXMvbGYtbG9nby5wbmciIGFsdD0iTGl2ZWZ5cmUiIC8+PC9hPgogICAgICAgICAgCiAgICAgICAgICA8dWwgY2xhc3M9ImZ5cmUtYm94LWxpc3QiPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2xpdmVmeXJlLmNvbSIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJHZXQgTGl2ZWZ5cmUiPkdldAogICAgICAgICAgICBMaXZlZnlyZTwvYT48L2xpPgoKICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9zdXBwb3J0LmxpdmVmeXJlLmNvbSIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPQogICAgICAgICAgICAiRkFRIj5GQVE8L2E+PC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZnlyZS1hdXRoIj4KICAgICAgPGRpdiBjbGFzcz0iZnlyZS1sb2dpbi1iYXIiPjxhIHJlbD0ibm9mb2xsb3ciIGhyZWY9IiMiIGNsYXNzPSJmeXJlLXVzZXItbG9nZ2Vkb3V0Ij5TaWduIGluPC9hPjwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZnlyZS1lZGl0b3IiPgogICAgICA8ZGl2IGNsYXNzPSJmeXJlLWVkaXRvci1jb250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImZ5cmUtZWRpdG9yLWVkaXRhYmxlIiBzdHlsZT0iaGVpZ2h0OiAxMDBweDsiPjwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJmeXJlLWVkaXRvci10b29sYmFyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctdG9vbGJhciBnb29nLXRvb2xiYXItaG9yaXpvbnRhbCIgc3R5bGU9CiAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiIHJvbGU9InRvb2xiYXIiIGFyaWEtYWN0aXZlZGVzY2VuZGFudD0iIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy1pbmxpbmUtYmxvY2sgZnlyZS1idXR0b24tbGVmdCBmeXJlLWZvcm1hdC1idXR0b24iIHRpdGxlPSIiCiAgICAgICAgICAgIHJvbGU9ImJ1dHRvbiIgc3R5bGU9Ii13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IiBpZD0iOjAiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGZ5cmUtYnV0dG9uLWxlZnQtb3V0ZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy1pbmxpbmUtYmxvY2sgZnlyZS1idXR0b24tbGVmdC1pbm5lci1ib3giIHN0eWxlPQogICAgICAgICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij48L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBmeXJlLWJ1dHRvbi1sZWZ0IGZ5cmUtbWVudGlvbi1idXR0b24iIHRpdGxlPSIiCiAgICAgICAgICAgIHJvbGU9ImJ1dHRvbiIgc3R5bGU9Ii13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IiBpZD0iOjEiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGZ5cmUtYnV0dG9uLWxlZnQtb3V0ZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy1pbmxpbmUtYmxvY2sgZnlyZS1idXR0b24tbGVmdC1pbm5lci1ib3giIHN0eWxlPQogICAgICAgICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij48L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBmeXJlLWJ1dHRvbi1sZWZ0IGZ5cmUtZm9sbG93LWJ1dHRvbiIgdGl0bGU9IiIKICAgICAgICAgICAgcm9sZT0iYnV0dG9uIiBzdHlsZT0iLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiIGlkPSI6MiI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy1pbmxpbmUtYmxvY2sgZnlyZS1idXR0b24tbGVmdC1vdXRlci1ib3giIHN0eWxlPQogICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBmeXJlLWJ1dHRvbi1sZWZ0LWlubmVyLWJveCIgc3R5bGU9CiAgICAgICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPgogICAgICAgICAgICAgICAgICArIEZvbGxvdwogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0KICAgICAgICAgICAgImdvb2ctaW5saW5lLWJsb2NrIGZ5cmUtYnV0dG9uLXJpZ2h0IGZ5cmUtcG9zdC1idXR0b24gZnlyZS1wb3N0LWJ1dHRvbi1lbmFibGVkIgogICAgICAgICAgICB0aXRsZT0iIiByb2xlPSJidXR0b24iIHN0eWxlPSItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyIgaWQ9IjozIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBmeXJlLWJ1dHRvbi1yaWdodC1vdXRlci1ib3giIHN0eWxlPQogICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBmeXJlLWJ1dHRvbi1yaWdodC1pbm5lci1ib3giIHN0eWxlPQogICAgICAgICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij4KICAgICAgICAgICAgICAgICAgUG9zdCBjb21tZW50CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPQogICAgICAgICAgICAiZ29vZy1pbmxpbmUtYmxvY2sgZnlyZS1idXR0b24tcmlnaHQgZnlyZS1wb3N0LXRvIGZ5cmUtcG9zdC10by1mYWNlYm9vayIKICAgICAgICAgICAgdGl0bGU9IiIgcm9sZT0iYnV0dG9uIiBzdHlsZT0iLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiIGlkPSI6NCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy1pbmxpbmUtYmxvY2sgZnlyZS1idXR0b24tcmlnaHQtb3V0ZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy1pbmxpbmUtYmxvY2sgZnlyZS1idXR0b24tcmlnaHQtaW5uZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0KICAgICAgICAgICAgImdvb2ctaW5saW5lLWJsb2NrIGZ5cmUtYnV0dG9uLXJpZ2h0IGZ5cmUtcG9zdC10byBmeXJlLXBvc3QtdG8tdHdpdHRlciIKICAgICAgICAgICAgdGl0bGU9IiIgcm9sZT0iYnV0dG9uIiBzdHlsZT0iLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiIGlkPSI6NSI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy1pbmxpbmUtYmxvY2sgZnlyZS1idXR0b24tcmlnaHQtb3V0ZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy1pbmxpbmUtYmxvY2sgZnlyZS1idXR0b24tcmlnaHQtaW5uZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0KICAgICAgICAgICAgImdvb2ctaW5saW5lLWJsb2NrIGZ5cmUtYnV0dG9uLXJpZ2h0IGZ5cmUtcG9zdC10byBmeXJlLXBvc3QtdG8tbGlua2VkaW4iCiAgICAgICAgICAgIHRpdGxlPSIiIHJvbGU9ImJ1dHRvbiIgc3R5bGU9Ii13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IiBpZD0iOjciPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGZ5cmUtYnV0dG9uLXJpZ2h0LW91dGVyLWJveCIgc3R5bGU9CiAgICAgICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGZ5cmUtYnV0dG9uLXJpZ2h0LWlubmVyLWJveCIgc3R5bGU9CiAgICAgICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPjwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctdG9vbGJhci1zZXBhcmF0b3IgZ29vZy1pbmxpbmUtYmxvY2siIHN0eWxlPQogICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiIHJvbGU9InNlcGFyYXRvciIgaWQ9Ijo2Ij4KICAgICAgICAgICAgICAmbmJzcDsKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJmeXJlLWZvcm1hdC10b29sYmFyIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLXRvb2xiYXIgZ29vZy10b29sYmFyLWhvcml6b250YWwiIHN0eWxlPQogICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiIHJvbGU9InRvb2xiYXIiIHRhYmluZGV4PSItMSI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy1pbmxpbmUtYmxvY2sgZ29vZy10b29sYmFyLWJ1dHRvbiIgdGl0bGU9IkJvbGQiCiAgICAgICAgICAgICAgYXJpYS1wcmVzc2VkPSJ0cnVlIiByb2xlPSJidXR0b24iIHN0eWxlPSItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyIgaWQ9CiAgICAgICAgICAgICAgIitib2xkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGdvb2ctdG9vbGJhci1idXR0b24tb3V0ZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGdvb2ctdG9vbGJhci1idXR0b24taW5uZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ci1pY29uIHRyLWJvbGQiIHN0eWxlPSItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGdvb2ctdG9vbGJhci1idXR0b24iIHRpdGxlPSJJdGFsaWMiCiAgICAgICAgICAgICAgYXJpYS1wcmVzc2VkPSJ0cnVlIiByb2xlPSJidXR0b24iIHN0eWxlPSItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyIgaWQ9CiAgICAgICAgICAgICAgIitpdGFsaWMiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy1pbmxpbmUtYmxvY2sgZ29vZy10b29sYmFyLWJ1dHRvbi1vdXRlci1ib3giIHN0eWxlPQogICAgICAgICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy1pbmxpbmUtYmxvY2sgZ29vZy10b29sYmFyLWJ1dHRvbi1pbm5lci1ib3giIHN0eWxlPQogICAgICAgICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRyLWljb24gdHItaXRhbGljIiBzdHlsZT0iLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBnb29nLXRvb2xiYXItYnV0dG9uIiB0aXRsZT0iVW5kZXJsaW5lIgogICAgICAgICAgICAgIGFyaWEtcHJlc3NlZD0idHJ1ZSIgcm9sZT0iYnV0dG9uIiBzdHlsZT0iLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiIGlkPQogICAgICAgICAgICAgICIrdW5kZXJsaW5lIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGdvb2ctdG9vbGJhci1idXR0b24tb3V0ZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGdvb2ctdG9vbGJhci1idXR0b24taW5uZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ci1pY29uIHRyLXVuZGVybGluZSIgc3R5bGU9Ii13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ29vZy1pbmxpbmUtYmxvY2sgZ29vZy10b29sYmFyLWJ1dHRvbiIgdGl0bGU9CiAgICAgICAgICAgICAgIkFkZCBvciByZW1vdmUgbGluayIgYXJpYS1wcmVzc2VkPSJ0cnVlIiByb2xlPSJidXR0b24iIHN0eWxlPQogICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyIgaWQ9IitsaW5rIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGdvb2ctdG9vbGJhci1idXR0b24tb3V0ZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGdvb2ctdG9vbGJhci1idXR0b24taW5uZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ci1saW5rIiBzdHlsZT0iLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPgogICAgICAgICAgICAgICAgICAgICAgTGluawogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBnb29nLXRvb2xiYXItYnV0dG9uIiB0aXRsZT0iTnVtYmVyZWQgbGlzdCIKICAgICAgICAgICAgICBhcmlhLXByZXNzZWQ9InRydWUiIHJvbGU9ImJ1dHRvbiIgc3R5bGU9Ii13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IiBpZD0KICAgICAgICAgICAgICAiK2luc2VydE9yZGVyZWRMaXN0Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGdvb2ctdG9vbGJhci1idXR0b24tb3V0ZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGdvb2ctdG9vbGJhci1idXR0b24taW5uZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ci1pY29uIHRyLWluc2VydE9yZGVyZWRMaXN0IiBzdHlsZT0KICAgICAgICAgICAgICAgICAgICAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsiPjwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnb29nLWlubGluZS1ibG9jayBnb29nLXRvb2xiYXItYnV0dG9uIiB0aXRsZT0iQnVsbGV0IGxpc3QiCiAgICAgICAgICAgICAgYXJpYS1wcmVzc2VkPSJ0cnVlIiByb2xlPSJidXR0b24iIHN0eWxlPSItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyIgaWQ9CiAgICAgICAgICAgICAgIitpbnNlcnRVbm9yZGVyZWRMaXN0Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGdvb2ctdG9vbGJhci1idXR0b24tb3V0ZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imdvb2ctaW5saW5lLWJsb2NrIGdvb2ctdG9vbGJhci1idXR0b24taW5uZXItYm94IiBzdHlsZT0KICAgICAgICAgICAgICAgICAgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ci1pY29uIHRyLWluc2VydFVub3JkZXJlZExpc3QiIHN0eWxlPQogICAgICAgICAgICAgICAgICAgICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZnlyZS1jb21tZW50LXN0cmVhbSIgc3R5bGU9IiI+CiAgICAgIDxkaXYgY2xhc3M9ImZ5cmUtc3RyZWFtLXNvcnQiPgogICAgICAgIFNvcnQ6IDxhIGNsYXNzPSJmeXJlLXN0cmVhbS1zb3J0LW5ld2VzdCI+TmV3ZXN0PC9hPiB8IDxhIGNsYXNzPQogICAgICAgICJmeXJlLXN0cmVhbS1zb3J0LW9sZGVzdCI+T2xkZXN0PC9hPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImZ5cmUtc3RyZWFtLWNvbnRlbnQiPiAgICAgIAogICAgICAgIAogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPC9kaXY+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIE1WTi5vblJlYWR5KGZ1bmN0aW9uKCQpewogICAgICAgICAgICB2YXIgTEZfQ29tcG9uZW50ID0gZnVuY3Rpb24oY29udHJvbGxlcil7CiAgICAgICAgICAgICAgICB2YXIgbWUgPSB0aGlzOwogICAgICAgICAgICAgICAgbWUuTVZOID0gY29udHJvbGxlcjsKICAgICAgICAgICAgICAgIG1lLnZlcnNpb24gPSAnTGl2ZUZ5cmUgZm9yIE1WTiAyLjAnOwogICAgICAgICAgICAgICAgbWUuYXV0b0luaXQgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBMRl9Db21wb25lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgY29va2llTmFtZTogJ2xpdmVmeXJlX3Rva2VuJywKICAgICAgICAgICAgICAgIGFub25OYW1lOiAnTVZOW2Fub25dJywKICAgICAgICAgICAgICAgIGFub246IG51bGwsCiAgICAgICAgICAgICAgICBsb2dpbjogZnVuY3Rpb24obmV3VG9rZW4pewogICAgICAgICAgICAgICAgICAgIHZhciBtZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRva2VuID0gbmV3VG9rZW58fFZWTS5nZXRDb29raWUobWUuY29va2llTmFtZSl8fGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGlmKHRva2VuKXsKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnlyZS5jb252LmxvZ2luKHRva2VuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lLmNsZWFuKHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9Y2F0Y2goZSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWVk0uZGVsQ29va2llKG1lLmNvb2tpZU5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIW5ld1Rva2VuKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZS5sb2dpbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgIE1WTi5xdWV1ZShmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobWUuTVZOLnVzZXJ8fFZWTS5nZXRDb29raWUobWUuYW5vbk5hbWUpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWVk0uZGVidWcucCgnUmVxdWVzdGluZyBOZXcgVG9rZW4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZS5NVk4uc3NvLmdldExmVG9rZW4oZnVuY3Rpb24ob2JqKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYob2JqICYmIG9iai5zdGF0dXMgPT0gJ3N1Y2Nlc3MnKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZWTS5zZXRDb29raWUobWUuY29va2llTmFtZSwgb2JqLnRva2VuLnRva2VuLCBmYWxzZSwgIi8iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lLmxvZ2luKG9iai50b2tlbi50b2tlbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGJpbmRzOiBmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgIHZhciBtZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgaWYoIW1lLmF1dGgpewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXV0aCA9IG5ldyBmeXJlLmNvbnYuUmVtb3RlQXV0aERlbGVnYXRlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGF1dGgubG9naW4gPSBmdW5jdGlvbihoYW5kbGVBcyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVk4ucXVldWUoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZighbWUuTVZOLnVzZXIpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZS5NVk4ub21uaS5hY3Rpb25TcmMgPSAnbGYnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZS5NVk4ub21uaS5hY3Rpb24obWUuTVZOLm9tbmkuYnVpbGRBY3Rpb24oJ2xvZ2luJywge3NpZDogbWUuZ2V0U0lEKCl9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1WTi5xdWV1ZShmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVZOLkxGLmxvZ2luKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQXMuZmFpbHVyZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGF1dGgubG9nb3V0ID0gZnVuY3Rpb24oaGFuZGxlQXMpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTVZOLnF1ZXVlKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobWUuTVZOLnVzZXJ8fFZWTS5nZXRDb29raWUobWUuYW5vbk5hbWUpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVlZNLmRlbENvb2tpZShtZS5jb29raWVOYW1lLCAnLycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWVk0uZGVsQ29va2llKG1lLmFub25OYW1lLCAnLycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZS5NVk4ub21uaS5hY3Rpb24oJ2xvZ291dCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQXMuc3VjY2VzcygpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGF1dGgudmlld1Byb2ZpbGUgPSBmdW5jdGlvbihoYW5kbGVBcywgYXV0aG9yKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFhdXRob3IuaWQubWF0Y2goL15hbm9uXy8pICYmIGF1dGhvci5wcm9maWxlVXJsICE9ICIiKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBhdXRob3IucHJvZmlsZVVybDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVBcy5zdWNjZXNzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZS5jbGVhbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGF1dGguZWRpdFByb2ZpbGUgPSBmdW5jdGlvbihoYW5kbGVBcywgYXV0aG9yKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGF1dGhvci5pZC5tYXRjaCgvXmFub25fLykpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lLmNsZWFuKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQXMuZmFpbHVyZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gImh0dHA6Ly93d3cubXl2b2ljZW5hdGlvbi5jb20vcHJvZmlsZS9zZXR0aW5ncy8iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUFzLnN1Y2Nlc3MoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBtZS5hdXRoID0gYXV0aDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lLmF1dGg7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgY2xlYW46IGZ1bmN0aW9uKGNhbGxlZEFmdGVyTG9naW4sIGF0dGVtcHQpewogICAgICAgICAgICAgICAgICAgIHZhciBtZSA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgTVZOLnF1ZXVlKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIEFOT04KICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2FsbGVkQWZ0ZXJMb2dpbiB8fCBtZS5hbm9uID09IG51bGwpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZnlyZS5jb252LnVzZXIgJiYgZnlyZS5jb252LnVzZXIuaWQpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lLmFub24gPSAoZnlyZS5jb252LnVzZXIuaWQubWF0Y2goL15hbm9uXy8pKSA/IHRydWUgOiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmKGNhbGxlZEFmdGVyTG9naW4pewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGVtcHQgPSAoYXR0ZW1wdCkgPyBhdHRlbXB0ICsgMSA6IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXR0ZW1wdCA+IDUpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWVk0uZGVidWcucCgnTEYgTG9naW4gRmFpbGVkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZWTS5kZWxDb29raWUobWUuY29va2llTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZWTS5kZWJ1Zy5wKCdMRiBMb2dpbiBDaGVjayBBdHRlbXB0OiAnK2F0dGVtcHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe21lLmNsZWFuKHRydWUsIGF0dGVtcHQpfSwgMTAwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFOT04gQ2xlYW4gVXAKICAgICAgICAgICAgICAgICAgICAgICAgaWYobWUuYW5vbiA9PSB0cnVlKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJ2xpID4gYVt0aXRsZT0iRWRpdCBQcm9maWxlIl0nLCAnLmZ5cmUtYm94LWxpc3QnKS5wYXJlbnQoJ2xpJykucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBBY2NvdW50IEJ1dHRvbgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIU1WTi51c2VyICYmICFWVk0uZ2V0Q29va2llKE1WTi5MRi5hbm9uTmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkZWwgPSAkKCdkaXYuZnlyZS1sb2dpbi1iYXInLCAnI2xpdmVmeXJlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkZWwubGVuZ3RoICYmICRlbC5jaGlsZHJlbigpLmxlbmd0aCA9PSAxICYmICEkKCcuZnlyZS11c2VyLWxvZ2dlZGluJywgJGVsKS5sZW5ndGgpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlbC5hcHBlbmQoJzxzcGFuIGNsYXNzPSJjcmVhdGUtbXZuLWFjY291bnQiPiBvciA8c3BhbiBjbGFzcz0ibGZyZWciPkNyZWF0ZSBBY2NvdW50PC9zcGFuPjwvc3Bhbj4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gRWFjaCBDb21tZW50L1JlcGx5CiAgICAgICAgICAgICAgICAgICAgICAgICQoJy5meXJlLWNvbW1lbnQtd3JhcHBlcicpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkZWwgPSAkKCcuZnlyZS1jb21tZW50LXVzZXJbZGF0YS1hdXRob3ItaWRePSJhbm9uXyJdJywgdGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkZWwubGVuZ3RoKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb21tZW50IEF2YXRhcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJ2EnLCAkZWwpLnJlcGxhY2VXaXRoKCQoJ2EgaW1nJywgJGVsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigndGl0bGUnLCAnQW5vbnltb3VzIFVzZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29tbWVudCBBdXRob3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZWwgPSAkZWwucGFyZW50KCkuZmluZCgnaGVhZGVyIGEnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZWwucmVwbGFjZVdpdGgoJCgnPHNwYW4vPicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnYW5vbl91c2VybmFtZScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50ZXh0KCRlbC50ZXh0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCd0aXRsZScsICdBbm9ueW1vdXMgVXNlcicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbW1lbnQgTWVudGlvbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJ2EuZnlyZS1tZW50aW9uW3Jlc291cmNlXj0iYWNjdDphbm9uXyJdJywgdGhpcykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucmVwbGFjZVdpdGgoJCgnPHNwYW4vPicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnYW5vbl91c2VybmFtZScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50ZXh0KCdAJyArICQoJ3NwYW5bcHJvcGVydHk9Im5hbWUiXScsIHRoaXMpLnRleHQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ3RpdGxlJywgJ0Fub255bW91cyBVc2VyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb21tZW50IExpa2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuZnlyZS1hdmF0YXInLCB0aGlzKS5maWx0ZXIoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCQoJ2ltZ1tzcmMqPSIvYW5vbi8iXScsIHRoaXMpLmxlbmd0aCkgPyB0cnVlIDogZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnYScsIHRoaXMpLnJlcGxhY2VXaXRoKCQoJ2EgaW1nJywgdGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ3RpdGxlJywgJ0Fub255bW91cyBVc2VyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbHRlcignW2NsYXNzKj0iZnlyZS1jb21tZW50LWF1dGhvci10YWctIl0nKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2xhc3NlcyA9IHRoaXMuY2xhc3NOYW1lLnNwbGl0KCcgJyksIHRhZ3MsIGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzID0gJCh0aGlzKSwgJG5hbWUgPSAkdGhpcy5maW5kKCcuZnlyZS1jb21tZW50LXVzZXJuYW1lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRuYW1lLm5leHQoKS5pcygnLmZ5cmUtbW9kZXJhdG9yJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUubmV4dCgpLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBjbGFzc2VzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbGFzc2VzW2ldLmluZGV4T2YoJ2Z5cmUtY29tbWVudC1hdXRob3ItdGFnLScpID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcgPSBjbGFzc2VzW2ldLnNwbGl0KCctJykucG9wKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnaGFzLW12bi1iYWRnZScpLnJlbW92ZUNsYXNzKGNsYXNzZXNbaV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZS5hZnRlcignPGkgY2xhc3M9Im12bi1iYWRnZSAnK3RhZysnIj4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBnZXRTSUQ6IGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNyY19kZXNjID0gJyc7CiAgICAgICAgICAgICAgICAgICAgaWYod2luZG93Lk9BU19xdWVyeV9jYXRlZ29yeXx8ZmFsc2UpewogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2goT0FTX3F1ZXJ5X2NhdGVnb3J5LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXHMvLCcnKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhcnRzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfZGVzYyA9IDEwMzM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmaWxtJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vdmllcyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2Rlc2MgPSAxMDM0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbXVzaWMnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19kZXNjID0gMTAzNTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ25ld3MnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19kZXNjID0gMTAzNjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jlc3RhdXJhbnRzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2RpbmluZyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb29kJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfZGVzYyA9IDEwMzc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmVzdG9mJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfZGVzYyA9IDEwMzg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiAnOHw1M3wnK3NyY19kZXNjOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgoKICAgICAgICAgICAgTVZOLmxvYWQoewogICAgICAgICAgICAgICAgJ0xGJzp7CiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBMRl9Db21wb25lbnQsCiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7fQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdmFyIHBhZ2VfdGl0bGUgPSAkKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJykpLmZpbmQoJ21ldGFbcHJvcGVydHk9Im9nOnRpdGxlIl0sIG1ldGFbbmFtZT0id2VidGl0bGUiXScpLmF0dHIoJ2NvbnRlbnQnKTsKICAgICAgICAgICAgaWYgKCFwYWdlX3RpdGxlKSB7CiAgICAgICAgICAgICAgICBwYWdlX3RpdGxlID0gJChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGl0bGUnKSkudGV4dCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHdpbmRvdy5jb252ID0gZnlyZS5jb252LmxvYWQoewogICAgICAgICAgICAgICAgbmV0d29yazogJ215dm9pY2VuYXRpb24uZnlyZS5jbycsCiAgICAgICAgICAgICAgICBhdXRoRGVsZWdhdGU6IE1WTi5MRi5iaW5kcygpLAogICAgICAgICAgICAgICAgc3RyaW5nczogewogICAgICAgICAgICAgICAgICAgIHNoYXJlRGVmYXVsdFRleHQ6IHBhZ2VfdGl0bGUgPyAiQ2hlY2sgb3V0ICVzJ3MgcG9zdCBvbiBcIiIgKyBwYWdlX3RpdGxlICsgIlwiISIgOiAiQ2hlY2sgb3V0ICVzJ3MgcG9zdCEiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIFt7CiAgICAgICAgICAgICAgICAnYXJ0aWNsZUlkJzogJ0wyTnZiblJsYm5RdmRtbGxkeTh5TmpZNU9EZzMnLAogICAgICAgICAgICAgICAgJ2NoZWNrc3VtJzogJ2NlZTAwMDAxNDZiNDljODYzOGQzY2Q2NDAzNDBmZDFkJywKICAgICAgICAgICAgICAgICdjb2xsZWN0aW9uTWV0YSc6ICdleUowZVhBaU9pSnFkM1FpTENKaGJHY2lPaUpJVXpJMU5pSjkuZXlKMGFYUnNaU0k2SWp4cFBqSWdVR2xoYm05eklEUWdTR0Z1WkhNOFhDOXBQaUJoYm1RZ1BHay1WR2hsSUZOaGJuUmhiR0Z1WkNCRWFXRnlhV1Z6UEZ3dmFUNGlMQ0oxY213aU9pSm9kSFJ3T2x3dlhDOTNkM2N1WTJsMGVYQmhaMlZ6TG1OdmJWd3ZNakF4TWkweE1pMHhPVnd2WVhKMGMxd3ZNaTF3YVdGdWIzTXROQzFvWVc1a2N5MWhibVF0ZEdobExYTmhiblJoYkdGdVpDMWthV0Z5YVdWelhDOGlMQ0owWVdkeklqb2liV2x1TEdGeWRHbGpiR1VzYm1WM2N5eHRhVzVmWVhKMGFXTnNaU3h0YVc1ZmJtVjNjeXhoY25ScFkyeGxYMjVsZDNNc2JXbHVYMkZ5ZEdsamJHVmZibVYzY3lJc0ltTm9aV05yYzNWdElqb2lZMlZsTURBd01ERTBObUkwT1dNNE5qTTRaRE5qWkRZME1ETTBNR1prTVdRaUxDSmhjblJwWTJ4bFNXUWlPaUpNTWs1MlltNVNiR0p1VVhaa2JXeHNaSGs0ZVU1cVdUVlBSR2N6SW4wLnB4WnBMckVsUmhsMFJHczZJTUVZektqOXFGTTVRS0Z0d2dha2RqV19ZeDQnLAogICAgICAgICAgICAgICAgJ2VsJzogJ2xpdmVmeXJlJywKICAgICAgICAgICAgICAgICdzaXRlSWQnOiAnMzA0NTMyJywKICAgICAgICAgICAgICAgICdhdXRoUGFnZVJlbG9hZCc6IHRydWUKICAgICAgICAgICAgfV0sIGZ1bmN0aW9uKHdpZGdldCl7CiAgICAgICAgICAgICAgICBNVk4uTEYubG9naW4oKTsKICAgICAgICAgICAgICAgIHdpZGdldC5vbignaW5pdGlhbFJlbmRlckNvbXBsZXRlJywgTVZOLkxGLmNsZWFuKTsKICAgICAgICAgICAgICAgIHdpZGdldC5vbignY29tbWVudFBvc3RlZCcsIE1WTi5MRi5jbGVhbik7CiAgICAgICAgICAgICAgICB3aWRnZXQub24oJ2NvbW1lbnRGbGFnZ2VkJywgTVZOLkxGLmNsZWFuKTsKICAgICAgICAgICAgICAgIHdpZGdldC5vbignY29tbWVudExpa2VkJywgTVZOLkxGLmNsZWFuKTsKICAgICAgICAgICAgICAgIHdpZGdldC5vbignY29tbWVudFNoYXJlZCcsIE1WTi5MRi5jbGVhbik7CiAgICAgICAgICAgICAgICB3aWRnZXQub24oJ2NvbW1lbnRDb3VudFVwZGF0ZWQnLCBmdW5jdGlvbihkYXRhKXsKICAgICAgICAgICAgICAgICAgICBNVk4uTEYuY2xlYW4oKTsKICAgICAgICAgICAgICAgICAgICBNVk4ucXVldWUoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgJCgnW2RhdGEtbGZ2My1jb3VudGVyXScpLnRleHQoZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgTVZOLkxGLmNoYW5nZSA9IGZ1bmN0aW9uKGNvbnYpewogICAgICAgICAgICAgICAgICAgIE1WTi5xdWV1ZShmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXQuY2hhbmdlQ29sbGVjdGlvbihjb252KTsKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgTVZOLnF1ZXVlKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgLy8gUmVnaXN0ZXIgQnV0dG9uCiAgICAgICAgICAgICAgICAgICAgJCgnLmxmcmVnJywgJyNsaXZlZnlyZScpLmxpdmUoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoIU1WTi51c2VyKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVk4ub21uaS5hY3Rpb25TcmMgPSAnbGYnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgTVZOLm9tbmkuYWN0aW9uKE1WTi5vbW5pLmJ1aWxkQWN0aW9uKCdqb2luJywge3NpZDogTVZOLkxGLmdldFNJRCgpfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVk4uTEYubG9naW4oKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIC8vIGhhY2sgb3VyIGhvdmVyY2FyZHMgb250byB0aGUgbGl2ZWZ5cmUgdXNlciBpbWdzL2xpbmtzCiAgICAgICAgICAgICAgICAgICAgdmFyIGRlX2xpdmVfZ2F0ZSA9IGZ1bmN0aW9uKCRlbCwgc2VsLCBldiwgY2IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRlbC5kZWxlZ2F0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsLmRlbGVnYXRlKHNlbCwgZXYsIGNiKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZWwubGl2ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsLmZpbmQoc2VsKS5saXZlKGV2LCBjYik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIGRlX2xpdmVfZ2F0ZSgkKCcjbGl2ZWZ5cmUnKSwgJy5meXJlLWNvbW1lbnQtd3JhcHBlcicsICdtb3VzZWVudGVyJywgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eSgnbXZuLWhvdmVyY2FyZC1lbicpKSByZXR1cm47CgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHVzZXIgPSAkdGhpcy5maW5kKCcuZnlyZS1jb21tZW50LXVzZXInKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpZCAgID0gJHVzZXIuZGF0YSgnYXV0aG9yLWlkJyk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVpZCB8fCB1aWQuaW5kZXhPZignYW5vbl8nKSA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuYXR0cignbXZuLWhvdmVyY2FyZC1lbicsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJHVzZXIuYWRkKCR0aGlzLmZpbmQoJy5meXJlLWNvbW1lbnQtdXNlcm5hbWVbaHJlZl0nKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLW9tbmktdXNlcicsIHVpZC5zcGxpdCgnQCcpLnNsaWNlKDAsMSkuam9pbigpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRhdGEoJ29tbmktdXNlcm5hbWUnLCAkdXNlci5kYXRhKCdmcm9tJykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGF0YSgnb21uaS11c2VycGhvdG8nLCAkdXNlci5maW5kKCdpbWcnKS5hdHRyKCdzcmMnKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5hdHRyKCdtdm4taG92ZXJjYXJkLWVuJywgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgLy8gTW92ZSBOb3RpZmljYXRpb24gV2luZG93CiAgICAgICAgICAgICAgICAgICAgdmFyIHNldE5vdGlmeVBvc2l0aW9uID0gZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmZ5cmUtbm90aWZpZXItY29udGFpbmVyJykuY3NzKCdyaWdodCcsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgkKCdib2R5Jykud2lkdGgoKSAtICQoJyNsaXZlZnlyZScpLm9mZnNldCgpLmxlZnQgLSBwYXJzZUludCgkKHRoaXMpLmNzcygnd2lkdGgnKS5yZXBsYWNlKCdweCcsICcnKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBzZXROb3RpZnlQb3NpdGlvbigpOwogICAgICAgICAgICAgICAgICAgICQod2luZG93KS5iaW5kKCdyZXNpemUgc2Nyb2xsJywgc2V0Tm90aWZ5UG9zaXRpb24pOwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICA8L3NjcmlwdD4KICAgIDxkaXYgaWQ9InBvd2VyZWRfYnlfbGl2ZWZ5cmVfbmV3Ij48YSBocmVmPSJodHRwOi8vbGl2ZWZ5cmUuY29tIiB0YXJnZXQ9Il9ibGFuayI+UG93ZXJlZCBieSBMaXZlZnlyZTwvYT48L2Rpdj4KPC9kaXY+DQo8ZGl2IGNsYXNzPSd0cmlwbGViYXInPiZuYnNwOzwvZGl2Pg0KDQo8IS0tIFJlY2VudEFydGljbGVzV2lkZ2V0IC0tPg0KICAgIDwhLS0gL1JlY2VudEFlcnRpY2xlc1dpZGdldCAtLT4NCg0KDQo8L2Rpdj4NCjxmb3JtIGlkPSJUcmFja2VyRm9ybSI+DQogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ib2JqaWQiIHZhbHVlPSIyNjY5ODg3IiAvPg0KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InR5cGUiIHZhbHVlPSJzdG9yeSIgLz4NCiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzZW5kVG9GcmllbmQiIHZhbHVlPSIwIiAvPg0KPC9mb3JtPg0KDQo8ZGl2IGNsYXNzPSJPVVRCUkFJTiIgZGF0YS1zcmM9Imh0dHA6Ly93d3cuY2l0eXBhZ2VzLmNvbS8yMDEyLTEyLTE5L2FydHMvMi1waWFub3MtNC1oYW5kcy1hbmQtdGhlLXNhbnRhbGFuZC1kaWFyaWVzLyIgZGF0YS13aWRnZXQtaWQ9IkZUX04yIiBkYXRhLW9iLXRlbXBsYXRlPSJtaW4iPjwvZGl2Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGFzeW5jPSJhc3luYyIgc3JjPSJodHRwOi8vd2lkZ2V0cy5vdXRicmFpbi5jb20vb3V0YnJhaW4uanMiPjwvc2NyaXB0PiI7czoxMzoiY29udGVudExlbmd0aCI7aTo0MTY3NDtzOjExOiJtZXRhQ29udGVudCI7YToxNjp7czoxMzoib2c6aW1hZ2VfbGFzdCI7YToxOntpOjA7czo0NDoiaHR0cDovL3d3dy5jaXR5cGFnZXMuY29tL2ltZy9jaXR5bG9nby1sZy5wbmciO31zOjg6ImtleXdvcmRzIjtzOjE6IiwiO3M6Nzoib2c6dHlwZSI7czo3OiJhcnRpY2xlIjtzOjg6Im9nOmltYWdlIjthOjE6e2k6MDtzOjM5OiJodHRwOi8vbWVkaWEubmV3dGltZXMuY29tLzg0MjgxNjEuMC5qcGciO31zOjExOiJvYXNTaXRlUGFnZSI7czo1OiIvYXJ0cyI7czoxNDoiYWRJbmRleFNlY3Rpb24iO3M6NDoiYXJ0cyI7czo3OiJwdWJkYXRlIjtzOjE5OiIyMDEyLTEyLTE4IDEzOjM4OjI5IjtzOjEzOiJjYW5vbmljYWxMaW5rIjtzOjY1OiIvMjAxMi0xMi0xOS9hcnRzLzItcGlhbm9zLTQtaGFuZHMtYW5kLXRoZS1zYW50YWxhbmQtZGlhcmllcy9mdWxsLyI7czo2OiJvZzp1cmwiO3M6ODQ6Imh0dHA6Ly93d3cuY2l0eXBhZ2VzLmNvbS8yMDEyLTEyLTE5L2FydHMvMi1waWFub3MtNC1oYW5kcy1hbmQtdGhlLXNhbnRhbGFuZC1kaWFyaWVzLyI7czo4OiJ3ZWJUaXRsZSI7czo4NToiMiBQaWFub3MgNCBIYW5kcyBhbmQgVGhlIFNhbnRhbGFuZCBEaWFyaWVzIC0gUGFnZSAxIC0gQXJ0cyAtIEBDSVRZTkFNRUAgLSBAUEFQRVJOQU1FQCI7czo4OiJvZzp0aXRsZSI7czo0MjoiMiBQaWFub3MgNCBIYW5kcyBhbmQgVGhlIFNhbnRhbGFuZCBEaWFyaWVzIjtzOjg1OiIyIFBpYW5vcyA0IEhhbmRzIGFuZCBUaGUgU2FudGFsYW5kIERpYXJpZXMgLSBQYWdlIDEgLSBBcnRzIC0gQENJVFlOQU1FQCAtIEBQQVBFUk5BTUVAIjtzOjQ6InRydWUiO3M6NjoibWVkaXVtIjtzOjQ6Im5ld3MiO3M6MTE6IndlYlN1YlRpdGxlIjtzOjQ6IkFydHMiO3M6MTE6ImRlc2NyaXB0aW9uIjtzOjIxOToiUmljaGFyZCBHcmVlbmJsYXR0IGFuZCBUZWQgRHlrc3RyYSBjcmVhdGVkIDIgUGlhbm9zIDQgSGFuZHMgb3V0IG9mIG1lbW9yaWVzIG9mIHRoZWlyIHlvdXRoZnVsIHllYXJzLCB3aGVuIHRoZXkgcHJhY3RpY2VkIGhhcmQgYW5kIGRyZWFtZWQgYmlnIG9mIGJlaW5nIHByb2Zlc3Npb25hbCBjbGFzc2ljYWwgbXVzaWNpYW5zLgpUaGUgcGxheSAod2l0aCBsb3RzIG9mIG11c2ljKSBtYWtlIjtzOjE0OiJvZzpkZXNjcmlwdGlvbiI7czoyMTk6IlJpY2hhcmQgR3JlZW5ibGF0dCBhbmQgVGVkIER5a3N0cmEgY3JlYXRlZCAyIFBpYW5vcyA0IEhhbmRzIG91dCBvZiBtZW1vcmllcyBvZiB0aGVpciB5b3V0aGZ1bCB5ZWFycywgd2hlbiB0aGV5IHByYWN0aWNlZCBoYXJkIGFuZCBkcmVhbWVkIGJpZyBvZiBiZWluZyBwcm9mZXNzaW9uYWwgY2xhc3NpY2FsIG11c2ljaWFucy4KVGhlIHBsYXkgKHdpdGggbG90cyBvZiBtdXNpYykgbWFrZSI7fXM6OToiQ2FjaGVkYXRhIjthOjA6e31zOjc6IkNvbnRleHQiO2E6MTE6e3M6MTQ6IkFkSW5kZXhTZWN0aW9uIjtzOjQ6ImFydHMiO3M6NzoiU2VjdGlvbiI7czo0OiJhcnRzIjtzOjE2OiJPQVNRdWVyeUNhdGVnb3J5IjtzOjQ6IkFydHMiO3M6MTk6Ik9BU1F1ZXJ5U3ViY2F0ZWdvcnkiO3M6ODoiQXJ0aWNsZXMiO3M6MTA6InBhZ2VQYXJhbXMiO3M6MzE6IgogICAgICAgICAgCiAgICAgICAgICAKICAgICAgICAiO3M6NzoiT3JpZ1VybCI7czo2MDoiLzIwMTItMTItMTkvYXJ0cy8yLXBpYW5vcy00LWhhbmRzLWFuZC10aGUtc2FudGFsYW5kLWRpYXJpZXMvIjtzOjM6IlVybCI7czoxMjU6Ii9jb250ZW50L3ZpZXcvMi1waWFub3MtNC1oYW5kcy1hbmQtdGhlLXNhbnRhbGFuZC1kaWFyaWVzLy9vcmlnVXJsOi8yMDEyLTEyLTE5L2FydHMvMi1waWFub3MtNC1oYW5kcy1hbmQtdGhlLXNhbnRhbGFuZC1kaWFyaWVzIjtzOjEzOiJDb21tZW50c09iaklkIjtzOjc6IjI2Njk4ODciO3M6MTA6IlN1YnNlY3Rpb24iO3M6MDoiIjtzOjE0OiJPQVNRdWVyeUF1dGhvciI7czo4OiJFZF9IdXljayI7czo5OiJJc3N1ZURhdGUiO3M6MTA6IjIwMTItMTItMTkiO31zOjE4OiJQb3N0UHJvY2Vzc01lc3NhZ2UiO086MjQ6IlZWTV9NZXNzYWdlUXVldWVfTWVzc2FnZSI6Mjp7czo4OiIAKgBfdHlwZSI7czo3OiJBZEluZGV4IjtzOjExOiIAKgBfcGF5bG9hZCI7YToxOntpOjA7YToyOntzOjI6ImlkIjtzOjc6IjE5MzgyOTAiO3M6NDoidHlwZSI7czoxMToidG93ZXJfdmlld3MiO319fX0
///////////////////////////////////////////////// // AUTOGENERATED AT SVN EXPORT TIME // DO NOT EDIT ///////////////////////////////////////////////// ?> YTo2OntzOjEzOiJjb250ZW50U3RhdHVzIjthOjE6e3M6Njoic3RhdHVzIjtiOjE7fXM6NzoiY29udGVudCI7czoxNzA6IjwhLS0gTk9HU0EgLS0+CjxkaXYgY2xhc3M9IkFkcyIgaWQ9Ik1pZGRsZSI+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgPCEtLQogICAgICAgIE9BU19BRCgnTWlkZGxlJyk7CiAgICAgICAgLy8tLT4KICAgIDwvc2NyaXB0Pgo8L2Rpdj4KPCEtLSAvTk9HU0EgLS0+IjtzOjEzOiJjb250ZW50TGVuZ3RoIjtpOjE3MDtzOjExOiJtZXRhQ29udGVudCI7YToxOntzOjEzOiJvZzppbWFnZV9sYXN0IjthOjE6e2k6MDtzOjQ0OiJodHRwOi8vd3d3LmNpdHlwYWdlcy5jb20vaW1nL2NpdHlsb2dvLWxnLnBuZyI7fX1zOjk6IkNhY2hlZGF0YSI7YTowOnt9czo3OiJDb250ZXh0IjthOjc6e3M6MTQ6IkFkSW5kZXhTZWN0aW9uIjtzOjU6Im11c2ljIjtzOjExOiJhbHBoYUxldHRlciI7czoxOiJJIjtzOjc6IlNlY3Rpb24iO3M6NToibXVzaWMiO3M6MTY6Ik9BU1F1ZXJ5Q2F0ZWdvcnkiO3M6NToiTXVzaWMiO3M6MTk6Ik9BU1F1ZXJ5U3ViY2F0ZWdvcnkiO3M6NjoiU2VhcmNoIjtzOjc6Ik9yaWdVcmwiO3M6MzQ6Ii9kaXJlY3RvcnkvdGhlYXRlcnMvYWxwaGFMZXR0ZXI6SS8iO3M6MzoiVXJsIjtzOjczOiIvc2VydmljZXMvZ2V0RWxlbWVudC9BZHMvWVRveE9udHpPamc2SW5CdmMybDBhVzl1SWp0ek9qWTZJazFwWkdSc1pTSTdmUT09Ijt9fQ
///////////////////////////////////////////////// // AUTOGENERATED AT SVN EXPORT TIME // DO NOT EDIT ///////////////////////////////////////////////// ?> YTo2OntzOjEzOiJjb250ZW50U3RhdHVzIjthOjE6e3M6Njoic3RhdHVzIjtiOjE7fXM6NzoiY29udGVudCI7czo1NzE6IjxkaXYgY2xhc3M9ImZhY2Vib29rX3JlY29tbWVuZGVkIj4KICAgIDxkaXYgY2xhc3M9ImZhY2Vib29rX3JlY29tbWVuZGVkX2hlYWRlciI+CiAgICAgICAgPGgyPkNpdHlwYWdlcyBvbiBGYWNlYm9vazwvaDI+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InRvcF9zdG9yaWVzIHJlY29tbWVuZGVkX3N0b3JpZXMiPgogICAgICAgIDxpZnJhbWUgc3JjPSJodHRwOi8vd3d3LmZhY2Vib29rLmNvbS9wbHVnaW5zL2FjdGl2aXR5LnBocD9zaXRlPWNpdHlwYWdlcy5jb20sYmxvZ3MuY2l0eXBhZ2VzLmNvbSZhbXA7d2lkdGg9MzY4JmFtcDtoZWlnaHQ9MzAwJmFtcDtoZWFkZXI9ZmFsc2UmYW1wO2NvbG9yc2NoZW1lPWxpZ2h0JmFtcDtmb250PWFyaWFsJmFtcDtib3JkZXJfY29sb3I9JTIzZmZmZmZmJmFtcDtyZWNvbW1lbmRhdGlvbnM9ZmFsc2UiIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPSIwIiBzdHlsZT0iYm9yZGVyOm5vbmU7IG92ZXJmbG93OmhpZGRlbjsgd2lkdGg6MzY4cHg7IGhlaWdodDozMDBweDsiIGFsbG93VHJhbnNwYXJlbmN5PSJ0cnVlIj48L2lmcmFtZT4KICAgIDwvZGl2Pgo8L2Rpdj4iO3M6MTM6ImNvbnRlbnRMZW5ndGgiO2k6NTcxO3M6MTE6Im1ldGFDb250ZW50IjthOjE6e3M6MTM6Im9nOmltYWdlX2xhc3QiO2E6MTp7aTowO3M6NDQ6Imh0dHA6Ly93d3cuY2l0eXBhZ2VzLmNvbS9pbWcvY2l0eWxvZ28tbGcucG5nIjt9fXM6OToiQ2FjaGVkYXRhIjthOjA6e31zOjc6IkNvbnRleHQiO2E6MTE6e3M6MTQ6IkFkSW5kZXhTZWN0aW9uIjtzOjQ6Im5ld3MiO3M6NzoiU2VjdGlvbiI7czo0OiJuZXdzIjtzOjE2OiJPQVNRdWVyeUNhdGVnb3J5IjtzOjQ6Ik5ld3MiO3M6MTk6Ik9BU1F1ZXJ5U3ViY2F0ZWdvcnkiO3M6NjoiU2VhcmNoIjtzOjEwOiJwYWdlUGFyYW1zIjtzOjMxOiIKICAgICAgICAgIAogICAgICAgICAgCiAgICAgICAgIjtzOjc6Ik9yaWdVcmwiO3M6NjA6Ii8yMDEyLTEyLTE5L2FydHMvMi1waWFub3MtNC1oYW5kcy1hbmQtdGhlLXNhbnRhbGFuZC1kaWFyaWVzLyI7czozOiJVcmwiO3M6Mjk6Ii9zZXJ2aWNlcy9mYWNlYm9va1JlY29tbWVuZGVkIjtzOjEzOiJDb21tZW50c09iaklkIjtzOjY6IjQ5MjU5OCI7czoxMDoiU3Vic2VjdGlvbiI7czo3OiJGZWF0dXJlIjtzOjE0OiJPQVNRdWVyeUF1dGhvciI7czoxMjoiTWF0dF9TbnlkZXJzIjtzOjk6Iklzc3VlRGF0ZSI7czoxMDoiMjAwOC0wNi0yNSI7fX0
///////////////////////////////////////////////// // AUTOGENERATED AT SVN EXPORT TIME // DO NOT EDIT ///////////////////////////////////////////////// ?> YTo2OntzOjEzOiJjb250ZW50U3RhdHVzIjthOjE6e3M6Njoic3RhdHVzIjtiOjE7fXM6NzoiY29udGVudCI7czo0MzE6IjxkaXYgY2xhc3M9J2NoaXNlbF91IHJfYm94IHNwZWNpYWxyZXBvcnRzJz4NCiAgIDxkaXYgY2xhc3M9J2dyYXknPg0KICAgIDxoMj5TcGVjaWFsIFJlcG9ydHM8L2gyPg0KICAgIDxkaXYgY2xhc3M9J2NoaXNlbF9kIHdoaXRlJz4NCiAgICAgPHVsPg0KPGxpPjxhIGhyZWY9Ii9zcGVjaWFsUmVwb3J0cy9taWNoZWxlLWJhY2htYW5uLWEtaGlzdG9yeS1vZi1jcmF6eS1ob21vcGhvYmlhLWFuZC1saWVzLTI4MjM3ODAvIj5NaWNoZWxlIEJhY2htYW5uOiBBIGhpc3Rvcnkgb2YgY3JhenksIGhvbW9waG9iaWEsIGFuZCBsaWVzPC9hPjwvbGk+ICAgICAgPGxpIGNsYXNzPSdtb3JlJz48YSBocmVmPScvc3BlY2lhbFJlcG9ydHMnPk1vcmUgU3BlY2lhbCBSZXBvcnRzID4+PC9hPjwvbGk+DQogICAgIDwvdWw+DQogICAgPC9kaXY+DQogICA8L2Rpdj4NCiAgPC9kaXY+IjtzOjEzOiJjb250ZW50TGVuZ3RoIjtpOjQzMTtzOjExOiJtZXRhQ29udGVudCI7YToxOntzOjEzOiJvZzppbWFnZV9sYXN0IjthOjE6e2k6MDtzOjQ0OiJodHRwOi8vd3d3LmNpdHlwYWdlcy5jb20vaW1nL2NpdHlsb2dvLWxnLnBuZyI7fX1zOjk6IkNhY2hlZGF0YSI7YToxOntpOjA7czo3OiIyODIzNzgwIjt9czo3OiJDb250ZXh0IjthOjE3OntzOjE0OiJBZEluZGV4U2VjdGlvbiI7czo0OiJuZXdzIjtzOjc6IlNlY3Rpb24iO3M6NDoibmV3cyI7czoxNjoiT0FTUXVlcnlDYXRlZ29yeSI7czo0OiJOZXdzIjtzOjE5OiJPQVNRdWVyeVN1YmNhdGVnb3J5IjtzOjY6IlNlYXJjaCI7czoxMDoicGFnZVBhcmFtcyI7czozMToiCiAgICAgICAgICAKICAgICAgICAgIAogICAgICAgICI7czo3OiJPcmlnVXJsIjtzOjQxOiIvMjAwOS0xMi0xNi9jYWxlbmRhci9tYXNvbi1qZW5uaW5ncy9mdWxsLyI7czozOiJVcmwiO3M6MzY6Ii9zcGVjaWFsUmVwb3J0cy9TcGVjaWFsUmVwb3J0c1dpZGdldCI7czoxMzoiQ29tbWVudHNPYmpJZCI7czo2OiI0OTI1OTgiO3M6MTA6IlN1YnNlY3Rpb24iO3M6NzoiRmVhdHVyZSI7czoxNDoiT0FTUXVlcnlBdXRob3IiO3M6MTI6Ik1hdHRfU255ZGVycyI7czo5OiJJc3N1ZURhdGUiO3M6MTA6IjIwMDgtMDYtMjUiO3M6MTA6ImJlc3RPZlllYXIiO3M6NDoiMjAxMyI7czoxNToiZmVhdHVyZWRTdG9yaWVzIjthOjE1OntpOjA7czo3OiIyODI4MTkwIjtpOjE7czo3OiIyODIzMDYzIjtpOjI7czo3OiIyODE2ODAyIjtpOjM7czo3OiIyODEwMDY1IjtpOjQ7czo3OiIyODAzMjYwIjtpOjU7czo3OiIyODAzMjU4IjtpOjY7czo3OiIyNzk2MzQ2IjtpOjc7czo3OiIyNzg5MDQ5IjtpOjg7czo3OiIyNzgxNTYyIjtpOjk7czo3OiIyNzc0MDYyIjtpOjEwO3M6NzoiMjc2NzQ0MCI7aToxMTtzOjc6IjI3Njc0MzgiO2k6MTI7czo3OiIyNzYxMTAwIjtpOjEzO3M6NzoiMjc1MzY3MSI7aToxNDtzOjc6IjI3NTM2NjQiO31zOjEyOiJjYXRlZ29yeU5hbWUiO3M6NzoiVGhlYXRlciI7czo0OiJwYWdlIjtzOjQ6IjEwMDciO3M6Nzoic2VjdGlvbiI7czo0OiIzNzQzIjtzOjg6ImNhdGVnb3J5IjtzOjQ6IjQyNDMiO319
///////////////////////////////////////////////// // AUTOGENERATED AT SVN EXPORT TIME // DO NOT EDIT ///////////////////////////////////////////////// ?> YTo2OntzOjEzOiJjb250ZW50U3RhdHVzIjthOjE6e3M6Njoic3RhdHVzIjtiOjE7fXM6NzoiY29udGVudCI7czowOiIiO3M6MTM6ImNvbnRlbnRMZW5ndGgiO2k6MDtzOjExOiJtZXRhQ29udGVudCI7YToxOntzOjEzOiJvZzppbWFnZV9sYXN0IjthOjE6e2k6MDtzOjQ0OiJodHRwOi8vd3d3LmNpdHlwYWdlcy5jb20vaW1nL2NpdHlsb2dvLWxnLnBuZyI7fX1zOjk6IkNhY2hlZGF0YSI7YTowOnt9czo3OiJDb250ZXh0IjthOjE3OntzOjE0OiJBZEluZGV4U2VjdGlvbiI7czo0OiJuZXdzIjtzOjc6IlNlY3Rpb24iO3M6NDoibmV3cyI7czoxNjoiT0FTUXVlcnlDYXRlZ29yeSI7czo0OiJOZXdzIjtzOjE5OiJPQVNRdWVyeVN1YmNhdGVnb3J5IjtzOjY6IlNlYXJjaCI7czoxMDoicGFnZVBhcmFtcyI7czozMToiCiAgICAgICAgICAKICAgICAgICAgIAogICAgICAgICI7czo3OiJPcmlnVXJsIjtzOjYwOiIvMjAxMi0xMi0xOS9hcnRzLzItcGlhbm9zLTQtaGFuZHMtYW5kLXRoZS1zYW50YWxhbmQtZGlhcmllcy8iO3M6MzoiVXJsIjtzOjE1OiIvc2VvL3BhcnRuZXJCb3giO3M6MTM6IkNvbW1lbnRzT2JqSWQiO3M6NjoiNDkyNTk4IjtzOjEwOiJTdWJzZWN0aW9uIjtzOjc6IkZlYXR1cmUiO3M6MTQ6Ik9BU1F1ZXJ5QXV0aG9yIjtzOjEyOiJNYXR0X1NueWRlcnMiO3M6OToiSXNzdWVEYXRlIjtzOjEwOiIyMDA4LTA2LTI1IjtzOjEwOiJiZXN0T2ZZZWFyIjtzOjQ6IjIwMTMiO3M6MTU6ImZlYXR1cmVkU3RvcmllcyI7YToxNTp7aTowO3M6NzoiMjgyODE5MCI7aToxO3M6NzoiMjgyMzA2MyI7aToyO3M6NzoiMjgxNjgwMiI7aTozO3M6NzoiMjgxMDA2NSI7aTo0O3M6NzoiMjgwMzI2MCI7aTo1O3M6NzoiMjgwMzI1OCI7aTo2O3M6NzoiMjc5NjM0NiI7aTo3O3M6NzoiMjc4OTA0OSI7aTo4O3M6NzoiMjc4MTU2MiI7aTo5O3M6NzoiMjc3NDA2MiI7aToxMDtzOjc6IjI3Njc0NDAiO2k6MTE7czo3OiIyNzY3NDM4IjtpOjEyO3M6NzoiMjc2MTEwMCI7aToxMztzOjc6IjI3NTM2NzEiO2k6MTQ7czo3OiIyNzUzNjY0Ijt9czoxMjoiY2F0ZWdvcnlOYW1lIjtzOjc6IlRoZWF0ZXIiO3M6NDoicGFnZSI7czo0OiIxMDA3IjtzOjc6InNlY3Rpb24iO3M6NDoiMzc0MyI7czo4OiJjYXRlZ29yeSI7czo0OiI0MjQzIjt9fQ
///////////////////////////////////////////////// // AUTOGENERATED AT SVN EXPORT TIME // DO NOT EDIT ///////////////////////////////////////////////// ?> YTo2OntzOjEzOiJjb250ZW50U3RhdHVzIjthOjE6e3M6Njoic3RhdHVzIjtiOjE7fXM6NzoiY29udGVudCI7czowOiIiO3M6MTM6ImNvbnRlbnRMZW5ndGgiO2k6MDtzOjExOiJtZXRhQ29udGVudCI7TjtzOjk6IkNhY2hlZGF0YSI7YTowOnt9czo3OiJDb250ZXh0IjthOjExOntzOjE0OiJBZEluZGV4U2VjdGlvbiI7czo0OiJuZXdzIjtzOjc6IlNlY3Rpb24iO3M6NDoibmV3cyI7czoxNjoiT0FTUXVlcnlDYXRlZ29yeSI7czo0OiJOZXdzIjtzOjE5OiJPQVNRdWVyeVN1YmNhdGVnb3J5IjtzOjY6IlNlYXJjaCI7czoxMDoicGFnZVBhcmFtcyI7czozMToiCiAgICAgICAgICAKICAgICAgICAgIAogICAgICAgICI7czo3OiJPcmlnVXJsIjtzOjYwOiIvMjAxMi0xMi0xOS9hcnRzLzItcGlhbm9zLTQtaGFuZHMtYW5kLXRoZS1zYW50YWxhbmQtZGlhcmllcy8iO3M6MzoiVXJsIjtzOjEwNjoiL2Fkcy9mbGF0QWRzL2NsaWNrYm90dG9tL2NsaWNrYm90dG9tLy8vb3JpZ1VybDovMjAxMi0xMi0xOS9hcnRzLzItcGlhbm9zLTQtaGFuZHMtYW5kLXRoZS1zYW50YWxhbmQtZGlhcmllcyI7czoxMzoiQ29tbWVudHNPYmpJZCI7czo2OiI0OTI1OTgiO3M6MTA6IlN1YnNlY3Rpb24iO3M6MDoiIjtzOjE0OiJPQVNRdWVyeUF1dGhvciI7czoxMjoiTWF0dF9TbnlkZXJzIjtzOjk6Iklzc3VlRGF0ZSI7czoxMDoiMjAwOC0wNi0yNSI7fX0
©2013 City Pages, LLC, All rights reserved.
Browse Voice Nation
  • Voice Places Minneapolis / St. Paul

    Voice Places

    Find everything you're looking for in your city

  • Happy Hour App

    Happy Hour App

    Find the best happy hour deals in your city

  • Daily Deals

    Daily Deals

    Get today's exclusive deals at savings of anywhere from 50-90%

  • Best Of

    Best Of...

    Check out the hottest list of places and things to do around your city