We send weekly emails with reviews and information about social events.[/fusion_text][/fullwidth][fullwidth background_color=”” background_image=”” background_parallax=”none” enable_mobile=”no” parallax_speed=”0.3″ background_repeat=”no-repeat” background_position=”left top” video_url=”” video_aspect_ratio=”16:9″ video_webm=”” video_mp4=”” video_ogv=”” video_preview_image=”” overlay_color=”” overlay_opacity=”0.5″ video_mute=”yes” video_loop=”yes” fade=”no” border_size=”0px” border_color=”” border_style=”solid” padding_top=”0″ padding_bottom=”0″ padding_left=”0″ padding_right=”0″ hundred_percent=”yes” equal_height_columns=”yes” hide_on_mobile=”no” menu_anchor=”” class=”” id=””][fusion_code]IDxTQ1JJUFQgbGFuZ3VhZ2U9IkphdmFzY3JpcHQiPiANCiAgICA8IS0tIA0KICAgIA0KICAgIC8vRU5URVIgQUxMIFRIRSBSRVFVUkVEIEZJRUxEUyBOQU1FUyBIRVJFDQogICAgdmFyIHJmbmFtZXM9bmV3IEFycmF5KCJDSV9lbWFpbCIpOyB2YXIgcmZkZXNjPW5ldyBBcnJheSgiRW1haWwgQWRkcmVzcyIpOyB2YXIgdmFsX2VtYWlsX25hbWVzPW5ldyBBcnJheSgiQ0lfZW1haWwiKTsgdmFyIHZhbF9lbWFpbF9kZXNjPW5ldyBBcnJheSgiRW1haWwgQWRkcmVzcyIpOyB2YXIgdmFsX3Bob25lX25hbWVzPW5ldyBBcnJheSgpOyB2YXIgdmFsX3Bob25lX2Rlc2M9bmV3IEFycmF5KCk7IHZhciB2YWxfemlwY29kZV9uYW1lcz1uZXcgQXJyYXkoKTsgdmFyIHZhbF96aXBjb2RlX2Rlc2M9bmV3IEFycmF5KCk7IHZhciB2YWxfbnVtZXJpY19uYW1lcz1uZXcgQXJyYXkoKTsgdmFyIHZhbF9udW1lcmljX2Rlc2M9bmV3IEFycmF5KCk7IA0KICAgIA0KICAgIA0KICAgIC8vIGlzRW1haWwgKFNUUklORyBzIFssIEJPT0xFQU4gZW1wdHlPS10pDQogICAgLy8gd2hpdGVzcGFjZSBjaGFyYWN0ZXJzDQogICAgdmFyIHdoaXRlc3BhY2VfQ0kgPSAiIFx0XG5cciI7DQogICAgDQogICAgLy8gDQogICAgLy8gRW1haWwgYWRkcmVzcyBtdXN0IGJlIG9mIGZvcm0gYUBiLmMgLi4uIGluIG90aGVyIHdvcmRzOg0KICAgIC8vICogdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGJlZm9yZSB0aGUgQA0KICAgIC8vICogdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIC4NCiAgICAvLyAqIHRoZSBjaGFyYWN0ZXJzIEAgYW5kIC4gYXJlIGJvdGggcmVxdWlyZWQNCiAgICBmdW5jdGlvbiBpc1ZhbGlkRW1haWxfQ0kocykNCiAgICB7ICAgDQogICAgICAgIGlmIChpc0VtcHR5X0NJKHMpKSByZXR1cm4gZmFsc2U7DQogICAgICAgDQogICAgICAgIC8vIGlzIHMgd2hpdGVzcGFjZT8NCiAgICAgICAgaWYgKGlzV2hpdGVzcGFjZV9DSShzKSkgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgDQogICAgICAgIC8vIHRoZXJlIG11c3QgYmUgPj0gMSBjaGFyYWN0ZXIgYmVmb3JlIEAsIHNvIHdlDQogICAgICAgIC8vIHN0YXJ0IGxvb2tpbmcgYXQgY2hhcmFjdGVyIHBvc2l0aW9uIDEgDQogICAgICAgIC8vIChpLmUuIHNlY29uZCBjaGFyYWN0ZXIpDQogICAgICAgIHZhciBpID0gMTsNCiAgICAgICAgdmFyIHNMZW5ndGggPSBzLmxlbmd0aDsNCiAgICANCiAgICAgICAgLy8gbG9vayBmb3IgQA0KICAgICAgICB3aGlsZSAoKGkgPCBzTGVuZ3RoKSAmJiAocy5jaGFyQXQoaSkgIT0gIkAiKSkNCiAgICAgICAgeyBpKysNCiAgICAgICAgfQ0KICAgIA0KICAgICAgICBpZiAoKGkgPj0gc0xlbmd0aCkgfHwgKHMuY2hhckF0KGkpICE9ICJAIikpIHJldHVybiBmYWxzZTsNCiAgICAgICAgZWxzZSBpICs9IDI7DQogICAgDQogICAgICAgIC8vIGxvb2sgZm9yIC4NCiAgICAgICAgd2hpbGUgKChpIDwgc0xlbmd0aCkgJiYgKHMuY2hhckF0KGkpICE9ICIuIikpDQogICAgICAgIHsgaSsrDQogICAgICAgIH0NCiAgICANCiAgICAgICAgLy8gdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGFmdGVyIHRoZSAuDQogICAgICAgIGlmICgoaSA+PSBzTGVuZ3RoIC0gMSkgfHwgKHMuY2hhckF0KGkpICE9ICIuIikpIHJldHVybiBmYWxzZTsNCiAgICAgICAgZWxzZSByZXR1cm4gdHJ1ZTsNCiAgICB9DQogICAgDQogICAgZnVuY3Rpb24gaXNWYWxpZFBob25lX0NJKHMpDQogICAgeyAgIA0KICAgICAgICBpZiAoaXNFbXB0eV9DSShzKSkgcmV0dXJuIGZhbHNlOw0KICAgICAgIA0KICAgICAgICAvLyBpcyBzIHdoaXRlc3BhY2U/DQogICAgICAgIGlmIChpc1doaXRlc3BhY2VfQ0kocykpIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICANCiAgICAgICAgLy8gdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGFmdGVyIHRoZSAuDQogICAgICAgIHZhciByZWdleE9iaiA9IC9eXCg/KFswLTldezN9KVwpP1stLiBdPyhbMC05XXszfSlbLS4gXT8oWzAtOV17NH0pJC87DQogICAgDQogICAgICAgIGlmIChyZWdleE9iai50ZXN0KHMpKSB7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgIC8vdmFyIGZvcm1hdHRlZFBob25lTnVtYmVyID0gc3ViamVjdFN0cmluZy5yZXBsYWNlKHJlZ2V4T2JqLCAiKCQxKSAkMi0kMyIpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgfQ0KICAgIA0KICAgIGZ1bmN0aW9uIGlzVmFsaWRaaXBDb2RlX0NJKHMpDQogICAgeyAgIA0KICAgICAgICBpZiAoaXNFbXB0eV9DSShzKSkgcmV0dXJuIGZhbHNlOw0KICAgICAgIA0KICAgICAgICAvLyBpcyBzIHdoaXRlc3BhY2U/DQogICAgICAgIGlmIChpc1doaXRlc3BhY2VfQ0kocykpIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICANCiAgICAgICAgLy8gdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGFmdGVyIHRoZSAuDQogICAgICAgIHZhciByZWdleE9iaiA9IC8oXlxkezV9JCl8KF5cZHs1fS1cZHs0fSQpLzsNCiAgICANCiAgICAgICAgaWYgKHJlZ2V4T2JqLnRlc3QocykpIHsNCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgLy92YXIgZm9ybWF0dGVkUGhvbmVOdW1iZXIgPSBzdWJqZWN0U3RyaW5nLnJlcGxhY2UocmVnZXhPYmosICIoJDEpICQyLSQzIik7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICB9DQogICAgDQogICAgDQogICAgZnVuY3Rpb24gaXNOdW1lcmljX0NJKHMpDQogICAgeyAgIA0KICAgICAgICBpZiAoaXNFbXB0eV9DSShzKSkgcmV0dXJuIGZhbHNlOw0KICAgICAgIA0KICAgICAgICAvLyBpcyBzIHdoaXRlc3BhY2U/DQogICAgICAgIGlmIChpc1doaXRlc3BhY2VfQ0kocykpIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICANCiAgICAgICAgcmV0dXJuICFpc05hTihwYXJzZUZsb2F0KHMpKSAmJiBpc0Zpbml0ZShzKTsNCiAgICB9DQogICAgDQogICAgLy8gQ2hlY2sgd2hldGhlciBzdHJpbmcgcyBpcyBlbXB0eS4NCiAgICBmdW5jdGlvbiBpc0VtcHR5X0NJKHMpDQogICAgeyAgIA0KICAgICAgICByZXR1cm4gKChzID09IG51bGwpIHx8IChzLmxlbmd0aCA9PSAwKSkNCiAgICB9DQogICAgDQogICAgLy8gUmV0dXJucyB0cnVlIGlmIHN0cmluZyBzIGlzIGVtcHR5IG9yIA0KICAgIC8vIHdoaXRlc3BhY2UgY2hhcmFjdGVycyBvbmx5Lg0KICAgIGZ1bmN0aW9uIGlzV2hpdGVzcGFjZV9DSShzKQ0KICAgIHsgICANCiAgICAgICAgdmFyIGk7DQogICAgDQogICAgICAgIC8vIElzIHMgZW1wdHk/DQogICAgICAgIGlmIChpc0VtcHR5X0NJKHMpKSByZXR1cm4gdHJ1ZTsNCiAgICANCiAgICAgICAgLy8gU2VhcmNoIHRocm91Z2ggc3RyaW5nIGNoYXJhY3RlcnMgb25lIGJ5IG9uZQ0KICAgICAgICAvLyB1bnRpbCB3ZSBmaW5kIGEgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyLg0KICAgICAgICAvLyBXaGVuIHdlIGRvLCByZXR1cm4gZmFsc2U7IGlmIHdlIGRvbnQsIHJldHVybiB0cnVlLg0KICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcy5sZW5ndGg7IGkrKykNCiAgICAgICAgeyAgIA0KICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCBjdXJyZW50IGNoYXJhY3RlciBpc250IHdoaXRlc3BhY2UuDQogICAgICAgICAgICB2YXIgYyA9IHMuY2hhckF0KGkpOw0KICAgIA0KICAgICAgICAgICAgaWYgKHdoaXRlc3BhY2VfQ0kuaW5kZXhPZihjKSA9PSAtMSkgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIC8vIEFsbCBjaGFyYWN0ZXJzIGFyZSB3aGl0ZXNwYWNlLg0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQogICAgDQogICAgZnVuY3Rpb24gY2hlY2tGb3JtX0NJKCkgeyANCiAgICAgICAgdmFyIG1lc3NhZ2UgPSAiIjsNCiAgICAgICAgDQogICAgICAgIC8vaWYgKCFpc1ZhbGlkRW1haWxfQ0koZG9jdW1lbnQuQ0lfc3Vic2NyaWJlRm9ybS5lbGVtZW50c1snJ0VtYWlsQWRkcmVzcycnXS52YWx1ZSkpIHsNCiAgICAvLwlkb2N1bWVudC5DSV9zdWJzY3JpYmVGb3JtLmVsZW1lbnRzWycnRW1haWxBZGRyZXNzJyddLnN0eWxlLmJhY2tncm91bmRDb2xvcj0ieWVsbG93IjsNCiAgICAvLwkJLy9hbGVydCgiUGxlYXNlIGVudGVyIGEgdmFsaWQgRW1haWwgQWRkcmVzcy4gKHlvdXJuYW1lQGRvbWFpbi5jb20pIik7DQogICAgLy8JCW1lc3NhZ2UgPSAiUGxlYXNlIGVudGVyIGEgdmFsaWQgRW1haWwgQWRkcmVzcy4gKHlvdXJuYW1lQGRvbWFpbi5jb20pXG5cciIgOw0KICAgIC8vCQlkb2N1bWVudC5DSV9zdWJzY3JpYmVGb3JtLmVsZW1lbnRzWycnRW1haWxBZGRyZXNzJyddLmZvY3VzKCk7DQogICAgLy8JCQ0KICAgIC8vCX0NCiAgICAgICAgDQogICAgICAgIGZvcih2YXIgaT0wOyBpPHJmbmFtZXMubGVuZ3RoOyBpKyspIHsgDQogICAgICAgICAgICBpZiAoZG9jdW1lbnQuQ0lfc3Vic2NyaWJlRm9ybS5lbGVtZW50c1tyZm5hbWVzW2ldXS52YWx1ZSA9PSAiIikgew0KICAgICAgICAgICAgZG9jdW1lbnQuQ0lfc3Vic2NyaWJlRm9ybS5lbGVtZW50c1tyZm5hbWVzW2ldXS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9InllbGxvdyI7DQogICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZSArIHJmZGVzY1tpXSArICIgaXMgcmVxdWlyZWQgXG5cciI7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIGZvcih2YXIgaT0wOyBpPHZhbF9lbWFpbF9uYW1lcy5sZW5ndGg7IGkrKykgeyANCiAgICAgICAgICAgIGlmIChkb2N1bWVudC5DSV9zdWJzY3JpYmVGb3JtLmVsZW1lbnRzW3ZhbF9lbWFpbF9uYW1lc1tpXV0udmFsdWUgIT0gIiIgJiYgIWlzVmFsaWRFbWFpbF9DSShkb2N1bWVudC5DSV9zdWJzY3JpYmVGb3JtLmVsZW1lbnRzW3ZhbF9lbWFpbF9uYW1lc1tpXV0udmFsdWUpKSB7DQogICAgICAgICAgICAgICAgZG9jdW1lbnQuQ0lfc3Vic2NyaWJlRm9ybS5lbGVtZW50c1t2YWxfZW1haWxfbmFtZXNbaV1dLnN0eWxlLmJhY2tncm91bmRDb2xvcj0ieWVsbG93IjsNCiAgICAgICAgICAgICAgICAvL2FsZXJ0KCJQbGVhc2UgZW50ZXIgYSB2YWxpZCBFbWFpbCBBZGRyZXNzLiAoeW91cm5hbWVAZG9tYWluLmNvbSkiKTsNCiAgICAgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZSArIHZhbF9lbWFpbF9kZXNjW2ldICsgIiBtdXN0IGJlIGEgdmFsaWQgZW1haWwgYWRkcmVzcy4gKHlvdXJuYW1lQGRvbWFpbi5jb20pXG5cciIgOw0KICAgICAgICAgICAgICAgIC8vZG9jdW1lbnQuQ0lfc3Vic2NyaWJlRm9ybS5lbGVtZW50c1t2YWxfZW1haWxfbmFtZXNbaV1dLmZvY3VzKCk7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIGZvcih2YXIgaT0wOyBpPHZhbF9waG9uZV9uYW1lcy5sZW5ndGg7IGkrKykgeyANCiAgICAgICAgICAgIGlmIChkb2N1bWVudC5DSV9zdWJzY3JpYmVGb3JtLmVsZW1lbnRzW3ZhbF9waG9uZV9uYW1lc1tpXV0udmFsdWUgIT0gIiIgJiYgIWlzVmFsaWRQaG9uZV9DSShkb2N1bWVudC5DSV9zdWJzY3JpYmVGb3JtLmVsZW1lbnRzW3ZhbF9waG9uZV9uYW1lc1tpXV0udmFsdWUpKSB7DQogICAgICAgICAgICAgICAgZG9jdW1lbnQuQ0lfc3Vic2NyaWJlRm9ybS5lbGVtZW50c1t2YWxfcGhvbmVfbmFtZXNbaV1dLnN0eWxlLmJhY2tncm91bmRDb2xvcj0ieWVsbG93IjsNCiAgICAgICAgICAgICAgICAvL2FsZXJ0KCJQbGVhc2UgZW50ZXIgYSB2YWxpZCBFbWFpbCBBZGRyZXNzLiAoeW91cm5hbWVAZG9tYWluLmNvbSkiKTsNCiAgICAgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZSArIHZhbF9waG9uZV9kZXNjW2ldICsgIiBtdXN0IGJlIGEgdmFsaWQgcGhvbmUgbnVtYmVyIFxuXHIiOw0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBmb3IodmFyIGk9MDsgaTx2YWxfemlwY29kZV9uYW1lcy5sZW5ndGg7IGkrKykgeyANCiAgICAgICAgICAgIGlmIChkb2N1bWVudC5DSV9zdWJzY3JpYmVGb3JtLmVsZW1lbnRzW3ZhbF96aXBjb2RlX25hbWVzW2ldXS52YWx1ZSAhPSAiIiAmJiAhaXNWYWxpZFppcENvZGVfQ0koZG9jdW1lbnQuQ0lfc3Vic2NyaWJlRm9ybS5lbGVtZW50c1t2YWxfemlwY29kZV9uYW1lc1tpXV0udmFsdWUpKSB7DQogICAgICAgICAgICAgICAgZG9jdW1lbnQuQ0lfc3Vic2NyaWJlRm9ybS5lbGVtZW50c1t2YWxfemlwY29kZV9uYW1lc1tpXV0uc3R5bGUuYmFja2dyb3VuZENvbG9yPSJ5ZWxsb3ciOw0KICAgICAgICAgICAgICAgIC8vYWxlcnQoIlBsZWFzZSBlbnRlciBhIHZhbGlkIEVtYWlsIEFkZHJlc3MuICh5b3VybmFtZUBkb21haW4uY29tKSIpOw0KICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlICsgdmFsX3ppcGNvZGVfZGVzY1tpXSArICIgbXVzdCBiZSBhIHZhbGlkIHppcGNvZGUgXG5cciI7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIGZvcih2YXIgaT0wOyBpPHZhbF9udW1lcmljX25hbWVzLmxlbmd0aDsgaSsrKSB7IA0KICAgICAgICAgICAgaWYgKGRvY3VtZW50LkNJX3N1YnNjcmliZUZvcm0uZWxlbWVudHNbdmFsX251bWVyaWNfbmFtZXNbaV1dLnZhbHVlICE9ICIiICYmICFpc051bWVyaWNfQ0koZG9jdW1lbnQuQ0lfc3Vic2NyaWJlRm9ybS5lbGVtZW50c1t2YWxfbnVtZXJpY19uYW1lc1tpXV0udmFsdWUpKSB7DQogICAgICAgICAgICAgICAgZG9jdW1lbnQuQ0lfc3Vic2NyaWJlRm9ybS5lbGVtZW50c1t2YWxfbnVtZXJpY19uYW1lc1tpXV0uc3R5bGUuYmFja2dyb3VuZENvbG9yPSJ5ZWxsb3ciOw0KICAgICAgICAgICAgICAgIC8vYWxlcnQoIlBsZWFzZSBlbnRlciBhIHZhbGlkIEVtYWlsIEFkZHJlc3MuICh5b3VybmFtZUBkb21haW4uY29tKSIpOw0KICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlICsgdmFsX251bWVyaWNfZGVzY1tpXSArICIgbXVzdCBiZSBudW1lcmljIFxuXHIiOw0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoJCQ0KCQkvKiBjaGVjayBzdWJtaXQgY29kZTogc2hvdyBvbmx5IGlmIHRoZSBjaGVja2JveCBpcyBhZGRlZCovDQoJCQ0KICAgICAgICAvKmVuZCBjaGVjayBzdWJtaXQgY29kZSAqLw0KDQogICAgDQogICAgICAgIGlmIChtZXNzYWdlLmxlbmd0aCA+IDEpIHsgDQogICAgICAgICAgICBhbGVydChtZXNzYWdlKTsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KCQllbHNlDQoJCXsNCgkJCWRvY3VtZW50LkNJX3N1YnNjcmliZUZvcm0uc3VibWl0KCk7DQoJCX0NCiAgICANCiAgICB9DQogICAgDQoNCgkNCgkNCgkNCgkvL1N1Ym1pdCBjb25maXJtYXRpb24gY29kZTogc2hvdyBvbmx5IGlmIGRlZmluZWQNCgkNCgkNCgkNCgkNCgkNCgkvKiBGaW5kIHVzZXIgbGFuZ3VhZ2UqLw0KCXZhciB1c2VyTGFuZyA9IChuYXZpZ2F0b3IubGFuZ3VhZ2UpID8gbmF2aWdhdG9yLmxhbmd1YWdlIDogbmF2aWdhdG9yLnVzZXJMYW5ndWFnZTsNCgl1c2VyTGFuZyA9IHVzZXJMYW5nLnN1YnN0cigwLDIpOw0KCXVzZXJMYW5nID0gdXNlckxhbmcudG9VcHBlckNhc2UoKTsNCgkJDQoJLyogU2V0IHRoZSBzdWJtaXQgY29uZmlybWF0aW9uIHRleHQgdG8gdGhlIGFwcHJvcHJpYXRlIGxhbmd1YWdlICovDQoJZnVuY3Rpb24gY2hlY2tMYW5ndWFnZVNldHRpbmcoKXsNCgkJdmFyIGNvbmZpcm1hdGlvbl90ZXh0X2xhbmd1YWdlID0gIiI7DQoJCXZhciBkZWZhdWx0X2NvbmZpcm1hdGlvbl90ZXh0ID0gIkkgYWdyZWUgdGhhdCB0aGUgYWJvdmUgaW5mb3JtYXRpb24gaXMgY29ycmVjdCI7DQoJCXZhciBzdWJtaXRDb25maXJtSFRNTCA9IGZvcm1fbGFiZWxfbGFuZ3VhZ2UgPSBsaXN0X2xhYmVsX2xhbmd1YWdlID0nJzsNCgkJdmFyIGRlZmF1bHRfYnRuX3RleHQgPSAiU3Vic2NyaWJlISI7DQoJCQ0KCQljb25zb2xlLmxvZyh1c2VyTGFuZyk7DQoJCQ0KCQ0KCQ0KCQ0KCQ0KCQkvKiBDaGVjayBmb3IgZGVzaWduYXRlZCBsYW5ndWFnZXMgKi8NCgkJaWYodXNlckxhbmcgPT0gJ0ZSJyl7DQoJCQljb25maXJtYXRpb25fdGV4dF9sYW5ndWFnZSA9ICIiOw0KCQkJZm9ybV9sYWJlbF9sYW5ndWFnZSA9ICJWb3VzIHBvdXZleiB2b3VzIGFib25uZXIgw6Agbm90cmUgbGlzdGUgZFwnZW52b2kgZW4gcmVtcGxpc3NhbnQgbGUgZm9ybXVsYWlyZSBjaS1kZXNzb3VzIGV0IGNsaXF1ZXogc3VyIFwiQWJvbm5lei12b3VzXCIgYm91dG9uLiI7DQoJCQlsaXN0X2xhYmVsX2xhbmd1YWdlID0gIlNcJ2lsIHZvdXMgcGxhw650IHPDqWxlY3Rpb25uZXIgdm9zIGxpc3RlcyBkXCdpbnTDqXLDqnQiOw0KCQkJYnRuX3RleHRfbGFuZ3VhZ2UgPSAiQWJvbm5lei12b3VzIjsNCgkJfSBlbHNlIGlmKHVzZXJMYW5nID09ICdEVScpew0KCQkJY29uZmlybWF0aW9uX3RleHRfbGFuZ3VhZ2UgPSAiIjsNCgkJCWZvcm1fbGFiZWxfbGFuZ3VhZ2UgPSAiU2llIGvDtm5uZW4gYXVmIHVuc2VyZSBNYWlsaW5nbGlzdGUsIGluZGVtIFNpZSBkYXMgZm9sZ2VuZGUgRm9ybXVsYXIgYXVzIHVuZCBrbGlja2VuIFNpZSBhdWYgZGllIFNjaGFsdGZsw6RjaGUgXCJBYm9ubmllcmVuXCIgYWJvbm5pZXJlbi4iOw0KCQkJbGlzdF9sYWJlbF9sYW5ndWFnZSA9ICJCaXR0ZSB3YWhsZW4gU2llIElocmUgTGlzdGVuIHZvbiBJbnRlcmVzc2UiOw0KCQkJYnRuX3RleHRfbGFuZ3VhZ2UgPSAiQWJvbm5pZXJlbiI7DQoJCX0gZWxzZSBpZih1c2VyTGFuZyA9PSAnRVMnKXsNCgkJCWNvbmZpcm1hdGlvbl90ZXh0X2xhbmd1YWdlID0gIiI7DQoJCQlmb3JtX2xhYmVsX2xhbmd1YWdlID0gIlVzdGVkIHB1ZWRlIHN1c2NyaWJpcnNlIGEgbnVlc3RyYSBsaXN0YSBkZSBjb3JyZW8gcmVsbGVuYW5kbyBlbCBzaWd1aWVudGUgZm9ybXVsYXJpbyB5IGhhZ2EgY2xpYyBlbiBlbCBib3TDs24gXCJTdXNjcmliaXJzZVwiLiI7DQoJCQlsaXN0X2xhYmVsX2xhbmd1YWdlID0gIlBvciBmYXZvciwgc2VsZWNjaW9uZSBsYXMgbGlzdGFzIGRlIGludGVyw6lzIjsNCgkJCWJ0bl90ZXh0X2xhbmd1YWdlID0gIlN1c2NyaWJpcnNlIjsNCgkJfSBlbHNlIGlmKHVzZXJMYW5nID09ICdJVCcpew0KCQkJY29uZmlybWF0aW9uX3RleHRfbGFuZ3VhZ2UgPSAiIjsJDQoJCQlmb3JtX2xhYmVsX2xhbmd1YWdlID0gIsOIIHBvc3NpYmlsZSBpc2NyaXZlcnNpIGFsbGEgbm9zdHJhIG1haWxpbmcgbGlzdCBjb21waWxhbmRvIGlsIG1vZHVsbyBxdWkgc290dG8gZSBjbGljY2FuZG8gc3VsIHRhc3RvIFwiSXNjcml2aXRpXCIuIjsJDQoJCQlsaXN0X2xhYmVsX2xhbmd1YWdlID0gIlNpIHByZWdhIGRpIHNlbGV6aW9uYXJlIGxlIHZvc3RyZSBsaXN0ZSBkaSBpbnRlcmVzc2UiOw0KCQkJYnRuX3RleHRfbGFuZ3VhZ2UgPSAiSXNjcml2aXRpIjsNCgkJDQoJCX0gZWxzZSB7IC8qIEVuZ2xpc2ggKi8NCgkJCWNvbmZpcm1hdGlvbl90ZXh0X2xhbmd1YWdlID0gIiI7DQoJCQlmb3JtX2xhYmVsX2xhbmd1YWdlID0gIlNpZ24tdXAgdG8gcmVjZWl2ZSBvdXIgV2Vla2x5IFNvY2lhbCBFdmVudCBFbWFpbHM6IjsNCgkJCWxpc3RfbGFiZWxfbGFuZ3VhZ2UgPSAiIjsNCgkJCWJ0bl90ZXh0X2xhbmd1YWdlID0gIlN1YnNjcmliZSI7DQoJCX0NCgkNCgkNCgkJLypVc2UgdGhlIGJyb3dzZXIncyBpbmJ1aWx0IEhUTUwgZXNjYXBlIGZ1bmN0aW9uYWxpdHkgdG8gaGFuZGxlIG1hbnkgb2YgdGhlIGNoYXJhY3RlcnMqLw0KCSAgCXZhciBsX2h0bWxfZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQoJICAJbF9odG1sX2Rpdi5pbm5lclRleHQgPSBsX2h0bWxfZGl2LnRleHRDb250ZW50ID0gY29uZmlybWF0aW9uX3RleHRfbGFuZ3VhZ2U7DQoJICAJY29uZmlybWF0aW9uX3RleHRfbGFuZ3VhZ2UgPSBsX2h0bWxfZGl2LmlubmVySFRNTDsNCgkJDQoJCQ0KCQkvKiBDaGFuZ2UgdGhlIGZvcm0gZGVzY3JpcHRpb24vbGFiZWwgdG8gdGhlIGNvcnJlY3QgbGFuZ3VhZ2UgKi8NCgkJZm9ybUxhYmVsSFRNTCA9IGZvcm1fbGFiZWxfbGFuZ3VhZ2U7DQoJCQ0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybV9sYWJlbF9kaXNwbGF5JykuaW5uZXJIVE1MID0gZm9ybUxhYmVsSFRNTDsNCgkJDQoJCQ0KCQkNCgkJLyogQ2hhbmdlIHRoZSBidXR0b24gdGV4dCB0byB0aGUgY29ycmVjdCBsYW5ndWFnZSAqLw0KCQlpZiAoYnRuX3RleHRfbGFuZ3VhZ2UgPT0gJycpew0KCQkJYnRuX3RleHRfbGFuZ3VhZ2UgPSBkZWZhdWx0X2J0bl90ZXh0OwkNCgkJfQ0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQ0lfc3VibWl0JykudmFsdWUgPSBidG5fdGV4dF9sYW5ndWFnZTsNCgkJDQoJCS8qIENoYW5nZSB0aGUgY2hlY2tib3ggc3VibWl0IGNvbmZpcm1hdGlvbiB0ZXh0IHRvIHRoZSBjb3JyZWN0IGxhbmd1YWdlICovDQoJCXN1Ym1pdENvbmZpcm1IVE1MID0gJzxpbnB1dCBvbkNsaWNrPSJhZ3JlZXN1Ym1pdF9DSSh0aGlzKSIgdHlwZT0iY2hlY2tib3giIG5hbWU9InN1Ym1pdF9jb25maXJtYXRpb24iIGlkPSJzdWJtaXRfY29uZmlybWF0aW9uIiB2YWx1ZT0ic3VibWl0X2NvbmZpcm1hdGlvbiI+Jm5ic3A7Jytjb25maXJtYXRpb25fdGV4dF9sYW5ndWFnZSsnJzsNCgkJDQogICAgICAgIA0KCQkNCgl9LypFbmQgY2hlY2tMYW5ndWFnZVNldHRpbmcoKSAqLw0KCQkJDQoJDQoJLyogQWZ0ZXIgdGhlIHRleHQgYXJlYXMgYXJlIGxvYWRlZCwgY2hlY2sgYnJvd3NlciBsYW5ndWFnZSBhbmQgY2hhbmdlIHRoZSBzdWJtaXQgY29uZmlybWF0aW9uIHRleHQgKi8NCgl3aW5kb3cub25sb2FkPWZ1bmN0aW9uKCkgew0KCQljaGVja0xhbmd1YWdlU2V0dGluZygpOw0KCX0NCgkNCgkNCiAgICANCiAgICAvLy0tPiANCiAgICA8L1NDUklQVD4NCg0KDQoNCg0KPGZvcm0gYWN0aW9uPSJodHRwOi8vcG9ydGFsLmVtYWlsbmV0d29ya3MuY29tL3djL3djLmNmbSIgbmFtZT0iQ0lfc3Vic2NyaWJlRm9ybSIgaWQ9IkNJX3N1YnNjcmliZUZvcm0iIG1ldGhvZD0icG9zdCI+DQoNCjx0YWJsZSB3aWR0aD0iNTAwIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMzMzMzMzM7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7IHBhZGRpbmc6IDhweDsiPg0KCQ0KCQkJPHRkPg0KCQkJDQoJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ0lfdGhhbmt5b3UiIHZhbHVlPSJodHRwOi8vd3d3Lmxqc29jaWFsLmNvbS90aGFua3lvdSI+DQoJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ0lfdGhhbmt5b3UyIiB2YWx1ZT0iaHR0cDovL3d3dy5sanNvY2lhbC5jb20vdGhhbmt5b3UyIj4NCgkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDSV9lcnIiIHZhbHVlPSJodHRwOi8vcG9ydGFsLmVtYWlsbmV0d29ya3MuY29tL3djL2Vycm9yLmNmbSI+DQoJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ0lfQWN0aW9uIiB2YWx1ZT0ic3ViIj4NCgkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDSV9MSUQiIHZhbHVlPSIyNTkzOTI4NTEwIj4NCgkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDSV9NSUQiIHZhbHVlPSIxNDY4MjIxNDkiPg0KCQkJCQ0KCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNJX0ZJRDIiIHZhbHVlPSIxMDAwSlc3MDAwMDAwMDAwMTNIIj4NCg0KDQoJCQkJDQoJCQkJDQoJCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNJX3RyaWdnZXJlZGlkIiB2YWx1ZT0iNzU3ODU1NzY3Ij4NCgkJCQkNCg0KCQkJCTx0YWJsZSB3aWR0aD0iOTAlIiBib3JkZXI9IjAiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgc3R5bGU9InBhZGRpbmc6IDhweDsiPg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQgYWxpZ249ImNlbnRlciIgaWQ9ImZvcm1fbGFiZWxfZGlzcGxheSIgc3R5bGU9InBhZGRpbmc6IDNweDsgZm9udC1mYW1pbHk6QXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsiPlNpZ24tdXAgdG8gcmVjZWl2ZSBvdXIgV2Vla2x5IFNvY2lhbCBFdmVudCBFbWFpbHM6PC90ZD4NCgkJCQkJPC90cj4NCgkJCQkJPHRyPg0KCQkJCQkJPHRkIGFsaWduPSJjZW50ZXIiPg0KCQkJCQkJCTx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPg0KDQoJCQkJCQkJDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzNSUiIGFsaWduPSJyaWdodCIgc3R5bGU9InBhZGRpbmc6IDNweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9udCBjb2xvcj0iIzMzMzMzMyIgZmFjZT0iQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPjxmb250IGNvbG9yPSIjOTkwMDAwIiA+KjwvZm9udD48L3N0cm9uZz5FbWFpbCBBZGRyZXNzOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZvbnQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjY1JSIgc3R5bGU9InBhZGRpbmc6IDNweDsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJsZWZ0Ij48Zm9udCBmYWNlPSJBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIzMCIgbmFtZT0iQ0lfZW1haWwiIG1heGxlbmd0aD0iMTUwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb250PjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiIHN0eWxlPSJwYWRkaW5nOiAzcHggM3B4IDZweCAzcHg7Ij4gICA8cCBhbGlnbj0iY2VudGVyIj4gPGZvbnQgZmFjZT0iQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiI+IA0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iQ0lfc3VibWl0IiBuYW1lPSJDSV9zdWJtaXQiIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlN1YnNjcmliZSIgb25DbGljaz0iY2hlY2tGb3JtX0NJKCk7IiA+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9udD48L3A+PC90ZD48dHI+DQogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICANCiAgICAgICAgPC90YWJsZT4NCiAgICAgICAgPC90ZD48L3RyPg0KICAgIDwvdGFibGU+DQo8L2Zvcm0+DQoNCg0KPFNDUklQVCBsYW5ndWFnZT0iSmF2YXNjcmlwdCI+DQo8IS0tDQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgZnVuY3Rpb24gbXlfZ2V0UGFyYW1WYWwocGFyYW0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHF1ZXJ5ID0gbG9jYXRpb24uc2VhcmNoOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVnZXhwID0gbmV3IFJlZ0V4cCgiW1xcPyZdIiArIHBhcmFtICsgIlw9KFteXCYjXSopIiwgImkiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IHF1ZXJ5Lm1hdGNoKHJlZ2V4cCkgfHwgIiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWxbMV0gfHwgIiI7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmZvcm1zLkNJX3N1YnNjcmliZUZvcm0gIT09IHVuZGVmaW5lZA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBkb2N1bWVudC5mb3Jtcy5DSV9zdWJzY3JpYmVGb3JtLkNJX2VtYWlsICE9PSB1bmRlZmluZWQNCiAgICAgICAgICAgICAgICApIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdF9lbWFpbCA9IG15X2dldFBhcmFtVmFsKCdteWVtYWlsJyk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRfZW1haWwgIT09IHVuZGVmaW5lZA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdHlwZW9mIHRfZW1haWwgPT09ICdzdHJpbmcnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0X2VtYWlsLmxlbmd0aCA+IDUpIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZm9ybXMuQ0lfc3Vic2NyaWJlRm9ybS5DSV9lbWFpbC52YWx1ZSA9IHRfZW1haWw7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQovLy0tPg0KPC9TQ1JJUFQ+[/fusion_code][/fullwidth]