Map

[fusion_builder_container type=”flex” hundred_percent=”yes” equal_height_columns=”no” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” background_position=”center center” background_repeat=”no-repeat” fade=”no” background_parallax=”none” parallax_speed=”0.3″ video_aspect_ratio=”16:9″ video_loop=”yes” video_mute=”yes” border_style=”solid” hundred_percent_height=”yes” hundred_percent_height_scroll=”no” flex_align_items=”flex-end” align_content=”space-around” padding_left=”0px” padding_right=”0px” padding_top=”0px” margin_top=”0px” padding_bottom=”0px” box_shadow=”no” background_color=”#eff1f0″][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ background_position=”left top” border_style=”solid” border_position=”all” spacing=”yes” background_repeat=”no-repeat” margin_top=”0px” margin_bottom=”0px” animation_speed=”0.3″ animation_direction=”left” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” center_content=”no” last=”true” hover_type=”none” min_height=”” link=”” background_blend_mode=”overlay” first=”true”][fusion_text columns=”” column_min_width=”” column_spacing=”” rule_style=”default” rule_size=”” rule_color=”” content_alignment_medium=”” content_alignment_small=”” content_alignment=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” sticky_display=”normal,sticky” class=”” id=”” margin_top=”” margin_right=”” margin_bottom=”” margin_left=”” font_size=”” fusion_font_family_text_font=”” fusion_font_variant_text_font=”” line_height=”” letter_spacing=”” text_transform=”none” text_color=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=””]

We’re aiming to build a map of creative activities, cultural sites and projects in Edenderry and the surrounding areas. We’re just getting started and need your help to gather details. If you are involved with a regular creative group, manage a venue or anything else you think might be related, get in touch! Email us info@creativeplacesedenderry.ie

[/fusion_text][fusion_code]PCFET0NUWVBFIGh0bWw+CjxodG1sPgoKPGhlYWQ+CiAgPG1ldGEgY2hhcnNldD0ndXRmLTgnIC8+CiAgPHRpdGxlPkVkZW5kZXJyeTwvdGl0bGU+CiAgPG1ldGEgbmFtZT0ndmlld3BvcnQnIGNvbnRlbnQ9J2luaXRpYWwtc2NhbGU9MSxtYXhpbXVtLXNjYWxlPTEsdXNlci1zY2FsYWJsZT1ubycgLz4KICA8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20iPgogIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbSIgY3Jvc3NvcmlnaW4+CiAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1OdW5pdG86d2dodEAzMDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiPgogIDwhLS0gPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBocmVmPSJpbWciIHR5cGU9ImltYWdlL3gtaWNvbiI+IC0tPgogIDxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1PcGVuK1NhbnMiIHJlbD0ic3R5bGVzaGVldCI+CiAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9hcGkubWFwYm94LmNvbS9tYXBib3gtZ2wtanMvdjIuNS4xL21hcGJveC1nbC5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9hamF4LmFzcG5ldGNkbi5jb20vYWpheC9qcXVlcnkudWkvMS4xMi4xL3RoZW1lcy9ibGl0emVyL2pxdWVyeS11aS5jc3MiPgogIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvZm9udC1hd2Vzb21lLzQuNy4wL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyI+CiAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5LzMuNC4xL2pxdWVyeS5taW4uanMiPjwvc2NyaXB0PgogIDxzY3JpcHQgc3JjPSJodHRwczovL2NvZGUuanF1ZXJ5LmNvbS91aS8xLjEyLjEvanF1ZXJ5LXVpLm1pbi5qcyIKICAgIGludGVncml0eT0ic2hhMjU2LVZhelA5N1pDd3Rla0FzdmdQQlNVd1BGS2Ryd0QzdW5VZlNHVllyYWhVcVU9IiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD4KICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9hcGkubWFwYm94LmNvbS9tYXBib3gtZ2wtanMvdjIuNS4xL21hcGJveC1nbC5qcyI+PC9zY3JpcHQ+CiAgPHN0eWxlPgogICAgLyogbG9hZCBmb250Ki8KCiAgICAvKiBAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogR2lsbFNhbnM7CiAgc3JjOiB1cmwoImdpbGwtc2Fucy1ub3ZhLWxpZ2h0LnR0ZiIpIGZvcm1hdCgib3BlbnR5cGUiKTsKfSAqLwoKICAgIC8qIGJvZHkgewogIG1hcmdpbjogMDsKICBwYWRkaW5nOiAwOwogIGZvbnQtZmFtaWx5OiAiTnVuaXRvIiwgc2Fucy1zZXJpZjsKfSAqLwoKICAgIC8qICNtYXAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgYm90dG9tOiAwOwogIHdpZHRoOiAxMDAlOwp9ICovCi5tYXAtd3JhcHBlcnsKICBoZWlnaHQ6IDc3MHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbWFyZ2luLXRvcDogLTcwcHg7CiAgICB6LWluZGV4OiAxMDsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCiAgICAjcG9zdC01MzMxPmRpdj5kaXY+ZGl2IHsKICAgICAgaGVpZ2h0OiA3NTBweCAhaW1wb3J0YW50OwogICAgfQoKICAgIC8qIC5mdXNpb24tZnVsbHdpZHRoLAogICAgLmZ1bGx3aWR0aC1ib3gsCiAgICAuZnVzaW9uLWJ1aWxkZXItcm93LTMsCiAgICAuZnVzaW9uLWZsZXgtY29udGFpbmVyLAogICAgLmh1bmRyZWQtcGVyY2VudC1mdWxsd2lkdGgsCiAgICAubm9uLWh1bmRyZWQtcGVyY2VudC1oZWlnaHQtc2Nyb2xsaW5nIAogICAgLmh1bmRyZWQtcGVyY2VudC1oZWlnaHQgewogICAgICBoZWlnaHQ6IDc1MHB4ICFpbXBvcnRhbnQ7CiAgICB9ICovCgoKICAgICNtYXAgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBoZWlnaHQ6IDc1MHB4OwogICAgfQoKICAgIGkuZmEtYW5nbGUtcmlnaHQgewogICAgICB6LWluZGV4OiAyMDAxOwogICAgICBtYXJnaW4tbGVmdDogLTE4cHg7CiAgICAgIGhlaWdodDogNDVweDsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzZmNzk2YjsKICAgICAgYm9yZGVyLWNvbG9yOiAjNmY3OTZiOwogICAgICB3aWR0aDogNDVweDsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICBsZWZ0OiAwcHg7CiAgICAgIHRvcDogY2FsYyg1MCUgLSAxMTZweCk7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzk0YThhYTsKICAgICAgYm9yZGVyOiAxcHggc29saWQgIzk0YThhYTsKICAgICAgYm9yZGVyLXJhZGl1czogMzBweDsKICAgICAgcGFkZGluZy1sZWZ0OiAxN3B4OwogICAgICBwYWRkaW5nLXRvcDogMHB4OwogICAgICBmb250LXNpemU6IDQzcHg7CiAgICB9CgogICAgLypzZWFyY2ggYXV0b2NvbXBsZXRlIGJ5IGpxdWVyeSB1aSovCgogICAgLnVpLWF1dG9jb21wbGV0ZSB7CiAgICAgIG1heC1oZWlnaHQ6IDEwMHB4OwogICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgIGZvbnQ6IDEycHgvMjBweCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwogICAgICBjb2xvcjogYmxhY2tyZ2JhKDAsIDAsIDEsIDAuNSk7CiAgICAgIHdpZHRoOiA1MHB4OwogICAgfQoKICAgIC8qZW5kIHNlYXJjaCBhdXRvY29tcGxldGUgdWkgYnkganF1ZXJ5IHVpKi8KCiAgICAubWFya2VyLWljb24sCiAgICAubWFya2VyLXRleHQgewogICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIG1hcmdpbi1sZWZ0OiAycHg7CiAgICB9CgogICAgLm1hcmtlci1pY29uIHsKICAgICAgYm9yZGVyLWNvbG9yOiBhcXVhbWFyaW5lOwogICAgICBib3JkZXItd2lkdGg6IDEyMHB4OwogICAgICBtYXJnaW4tdG9wOiAycHg7CiAgICB9CgogICAgLm1hcmtlci10ZXh0IHsKICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7CiAgICB9CgogICAgLyogLm1hcGJveGdsLW1hcmtlciB7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0gKi8KCiAgICAubWFya2VyIHsKICAgICAgLyogYmFja2dyb3VuZC1pbWFnZTogdXJsKCdtYXJrZXIuc3ZnJyk7ICovCiAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CiAgICAgIC8qIGJvcmRlcjogMXB4IHNvbGlkICNmZjE0OTM7ICovCiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7CiAgICAgIHBhZGRpbmc6IDJweDsKICAgICAgd2lkdGg6IDE4cHg7CiAgICAgIGhlaWdodDogMjRweDsKICAgICAgLyogYm9yZGVyLXJhZGl1czogNTAlOyAqLwogICAgICAvKiBvcGFjaXR5OiAwLjg7ICovCiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIH0KCiAgICAubWFya2VyOmhvdmVyIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzFlNGVmNDsKICAgIH0KCgoKICAgIC5zZWxlY3RlZE1hcmtlciB7CiAgICAgIC8qIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnbWFya2VyLnN2ZycpOyAqLwogICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwogICAgICBib3JkZXI6IG5vbmU7CiAgICAgIHdpZHRoOiAzNXB4OwogICAgICBoZWlnaHQ6IDM1cHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgb3BhY2l0eTogMC44OwogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB9CgogICAgcC5idXR0b24gewogICAgICBjb2xvcjogI0ZGRkZGRjsKICAgIH0KCiAgICAvKnBvcHVwIHN0eWxpbmcqLwoKICAgIC5tYXBib3hnbC1wb3B1cC1jbG9zZS1idXR0b24gewogICAgICBmbG9hdDogcmlnaHQ7CiAgICAgIHJpZ2h0OiAxM3B4OwogICAgICBib3JkZXItcmFkaXVzOiAyMXB4OwogICAgICBib3JkZXI6IDFweCBzb2xpZCAjMWU0ZWY0OwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwogICAgICB3aWR0aDogMjBweDsKICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIGNvbG9yOiAjMWU0ZWY0OwogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICAgIHBhZGRpbmc6IDA7CiAgICB9CgogICAgLm1hcGJveGdsLXBvcHVwLWNsb3NlLWJ1dHRvbjpob3ZlciB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxZTRlZjQ7CiAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICBib3JkZXI6IDFweCBzb2xpZCAjZmZmZmZmOwogICAgfQoKICAgIC5tYXBib3hnbC1wb3B1cC10aXAgewogICAgICBtYXJnaW4tbGVmdDogMSU7CiAgICB9CgogICAgLm1hcGJveGdsLXBvcHVwLWNvbnRlbnQgewogICAgICAvKiBmb250OiAxNnB4LzE0cHggIkxlYWd1ZSBHb3RoaWMiLCAiU291cmNlIFNhbnMgUHJvIiwgSGVsdmV0aWNhLCBBcmlhbDsgKi8KICAgICAgLyogZm9udC1mYW1pbHk6ICdOdW5pdG8nLCBzYW5zLXNlcmlmOyAqLwogICAgICBmb250OiAxNnB4LzE0cHggIk51bml0byIsIHNhbnMtc2VyaWY7CiAgICAgIHdpZHRoOiAyNjBweDsKICAgICAgYm9yZGVyOiAxcHggc29saWQgIzFhNDdmZjsKICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKICAgICAgY29sb3I6ICMxZTRlZjQ7CiAgICAgIG1hcmdpbi1sZWZ0OiAtMTJweDsKICAgIH0KCiAgICAubWFwYm94Z2wtcG9wdXAtY29udGVudCBpbWcucG9wdXAtaWNvbiB7CiAgICAgIHdpZHRoOiAyMyU7CiAgICAgIC8qIGJvcmRlci1yYWRpdXM6IDIxcHg7ICovCiAgICAgIG1hcmdpbi1sZWZ0OiAxMDJweDsKICAgICAgb3BhY2l0eTogNTAlOwogICAgfQoKICAgIGltZy5wb3B1cC1pbWFnZS1pY29uIHsKICAgICAgd2lkdGg6IDI0cHg7CiAgICAgIG1hcmdpbi1yaWdodDogMTNweDsKICAgIH0KCiAgICAubWFwYm94Z2wtcG9wdXAtY29udGVudCBzcGFuPmltZyB7CiAgICAgIHdpZHRoOiAxNSU7CiAgICAgIGJvcmRlci1yYWRpdXM6IDIxcHg7CiAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICB9CgogICAgLm1hcGJveGdsLXBvcHVwLWNvbnRlbnQgZGl2LnRpdGxlIHsKICAgICAgZm9udDogMjBweC8xNHB4ICJHaWxsU2FucyIsICJTb3VyY2UgU2FucyBQcm8iLCBIZWx2ZXRpY2EsIEFyaWFsOwogICAgICBjb2xvcjogIzFlNGVmNDsKICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgbGluZS1oZWlnaHQ6IDIxcHg7CiAgICAgIG1hcmdpbi1yaWdodDogMjJweDsKICAgIH0KCiAgICAubWFwYm94Z2wtcG9wdXAtY29udGVudCBkaXYuZGVzY3JpcHRpb24gewogICAgICAvKiBmb250OiAyMHB4LzE0cHggIkdpbGxTYW5zIiwgIlNvdXJjZSBTYW5zIFBybyIsIEhlbHZldGljYSwgQXJpYWw7CiAgY29sb3I6ICMyNjgwODQ7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGxpbmUtaGVpZ2h0OiAyMXB4OwogIG1hcmdpbi1yaWdodDogMjJweDsgKi8KICAgICAgbWFyZ2luLXRvcDogMjdweDsKICAgIH0KCiAgICAubWFwYm94Z2wtcG9wdXAtY29udGVudCBkaXYuY29udGVudCB7CiAgICAgIGhlaWdodDogMzNweDsKICAgICAgd2lkdGg6IDk4JTsKICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwogICAgICAvKiBjb2xvcjogIzAwMDAwMDsgKi8KICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgbWFyZ2luLXRvcDogMTBweDsKICAgIH0KCiAgICAubWFwYm94Z2wtcG9wdXAtY29udGVudCBkaXYuY29udGVudCBpbWcgewogICAgICB3aWR0aDogMjAwcHg7CiAgICAgIC8qIGhlaWdodDogMjAwcHg7ICovCiAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA4cHg7CiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDhweDsKICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDhweDsKICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogOHB4OwogICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgfQoKICAgIHAudHJhdmVsLXRpbWUgewogICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIG1hcmdpbi10b3A6IDEycHg7CiAgICB9CgogICAgZGl2LmV4cGxvcmUtYnV0dG9uIHsKICAgICAgYm9yZGVyLWNvbG9yOiAjMWU0ZWY0OwogICAgfQoKICAgIC5tYXBib3hnbC1wb3B1cC1jb250ZW50IGEgewogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgcGFkZGluZy10b3A6IDExcHg7CiAgICAgIHBhZGRpbmctYm90dG9tOiA4cHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgLyogZm9udDogMTAwIDM0IEdpbGxTYW5zOyAqLwogICAgICBmb250LXNpemU6IG1lZGl1bTsKICAgICAgbWFyZ2luLWJvdHRvbTogNHB4OwogICAgICBtYXJnaW4tdG9wOiAyM3B4OwogICAgICBtYXJnaW4tbGVmdDogLTJweDsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKICAgICAgY29sb3I6ICMxZTRlZjQ7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMxZTRlZjQ7CiAgICB9CgogICAgLm1hcGJveGdsLXBvcHVwLWNvbnRlbnQgYTpob3ZlciB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxZTRlZjQ7CiAgICAgIGJvcmRlci1jb2xvcjogI2ZmZmZmZjsKICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICB9CgogICAgLm1hcGJveGdsLXBvcHVwLWFuY2hvci10b3AgLm1hcGJveGdsLXBvcHVwLXRpcCwKICAgIC5tYXBib3hnbC1wb3B1cC1hbmNob3ItdG9wLWxlZnQgLm1hcGJveGdsLXBvcHVwLXRpcCwKICAgIC5tYXBib3hnbC1wb3B1cC1hbmNob3ItdG9wLXJpZ2h0IC5tYXBib3hnbC1wb3B1cC10aXAgewogICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjMWU0ZWY0OwogICAgfQoKICAgIC5tYXBib3hnbC1wb3B1cC1hbmNob3ItYm90dG9tIC5tYXBib3hnbC1wb3B1cC10aXAsCiAgICAubWFwYm94Z2wtcG9wdXAtYW5jaG9yLWJvdHRvbS1sZWZ0IC5tYXBib3hnbC1wb3B1cC10aXAsCiAgICAubWFwYm94Z2wtcG9wdXAtYW5jaG9yLWJvdHRvbS1yaWdodCAubWFwYm94Z2wtcG9wdXAtdGlwIHsKICAgICAgYm9yZGVyLXRvcC1jb2xvcjogIzFlNGVmNDsKICAgIH0KCiAgICAubWFwYm94Z2wtcG9wdXAtYW5jaG9yLWxlZnQgLm1hcGJveGdsLXBvcHVwLXRpcCB7CiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogIzFlNGVmNDsKICAgIH0KCiAgICAubWFwYm94Z2wtcG9wdXAtYW5jaG9yLXJpZ2h0IC5tYXBib3hnbC1wb3B1cC10aXAgewogICAgICBib3JkZXItbGVmdC1jb2xvcjogIzFlNGVmNDsKICAgIH0KCgoKICAgIC8qZW5kIHBvcHVwIHN0eWxpbmcqLwoKICAgIC8qcHJpbnQqLwoKICAgIC8qIEBtZWRpYSBwcmludCB7CiAgICBkaXYjbWFwIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgIH0KICAgIC5kaXYyLm1lbnUtYXJlYSB7CiAgICAgICAgd2lkdGg6IDA7CiAgICB9Cn0gKi8KCiAgICAjZXhwbG9yZS1pdGVtIHsKICAgICAgbWFyZ2luLXRvcDogMjAwcHg7CiAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB6LWluZGV4OiAxOwogICAgICB0b3A6IDEwcHg7CiAgICAgIHJpZ2h0OiAyMHB4OwogICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgYm9yZGVyLXJhZGl1czogMTdweDsKICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICBmbG9hdDogbGVmdDsKICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgbWFyZ2luOiAxMHB4OwogICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4OwogICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgICAgIHBhZGRpbmctdG9wOiAycHg7CiAgICAgIHBhZGRpbmctYm90dG9tOiAycHg7CiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWE0N2ZmOwogICAgICBjb2xvcjogI2ZmZmZmZjsKICAgIH0KCiAgICAvKiBsYXllcnMgbGlzdCAqLwogICAgI21lbnUgewogICAgICAvKiBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIHRvcDogMzYzcHg7CiAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjY2NjOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOwogICAgICB6LWluZGV4OiAxMDAwOwogICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7ICovCiAgICAgIHotaW5kZXg6IDEwMDA7CiAgICAgIHBvc2l0aW9uOiBzdGF0aWM7CiAgICAgIGJvdHRvbTogMHB4OwogICAgICB0b3A6IGF1dG87CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgIHotaW5kZXg6IDEwMDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjY2M7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjYzsKICAgIH0KCiAgICAjbWVudSBsaSB7CiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIGJvcmRlci1yYWRpdXM6IDE3cHg7CiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgZm9udC1zaXplOiAxN3B4OwogICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgbWFyZ2luOiAxMHB4OwogICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4OwogICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgICAgIHBhZGRpbmctdG9wOiAycHg7CiAgICAgIHBhZGRpbmctYm90dG9tOiAycHg7CiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgY29sb3I6ICMwMDAwMDA7CiAgICB9CgogICAgI21lbnUgbGkjZmlsdGVyLXRpdGxlIHsKICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIH0KCiAgICAjbWVudSBsaSBhIHsKICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICBjb2xvcjogIzAwMDAwMDsKICAgIH0KCiAgICAjbWVudSBsaSBpbWcgewogICAgICB3aWR0aDogMTVweDsKICAgICAgaGVpZ2h0OiAyNHB4OwogICAgICBtYXJnaW4tYm90dG9tOiAtNnB4OwogICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICB9CgogICAgLyogI21lbnUgYTpsYXN0LWNoaWxkIHsKICBib3JkZXI6IG5vbmU7Cn0gKi8KCiAgICAvKiAjbWVudSBhOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGY4OwogIGNvbG9yOiAjMWE0N2ZmOwogIGJvcmRlcjogMnB4IHNvbGlkICMxYTQ3ZmY7Cn0gKi8KCiAgICAjbWVudSBhLmFjdGl2ZSB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxZTRlZjQ7CiAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgfQoKICAgICNtZW51IGEuYWN0aXZlOmhvdmVyIHsKICAgICAgYmFja2dyb3VuZDogIzFlNGVmNDsKICAgIH0KCiAgICAvKiBlbmQgbGF5ZXJzIGxpc3QqLwoKICAgICN0aXRsZSB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICB3aWR0aDogMjklOwogICAgICBoZWlnaHQ6IDgycHg7CiAgICAgIHBhZGRpbmc6IDA7CiAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICBmb250LXNpemU6IDU5cHg7CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgY29sb3I6ICMxYTQ3ZmY7CiAgICAgIGJhY2tncm91bmQ6ICNGRkZGRkY7CiAgICAgIHRvcDogMTAwcHg7CiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgfQoKICAgICNtYXA+ZGl2Lm1hcGJveGdsLWNvbnRyb2wtY29udGFpbmVyPmRpdi5tYXBib3hnbC1jdHJsLWJvdHRvbS1yaWdodD5kaXY+ZGl2PmE6bnRoLWNoaWxkKDEpIHsKICAgICAgY29sb3I6ICMxOWIzZmY7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7CiAgICAgIHBhZGRpbmc6IDNweDsKICAgICAgLyogZm9udC13ZWlnaHQ6IGJvbGQ7ICovCiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIH0KCiAgICAvKmhpZGUgZ2VvbG9jYXRpb24gYnV0dG9uKi8KICAgIC5tYXBib3hnbC1jdHJsLWdyb3VwPi5tYXBib3hnbC1jdHJsLWdlb2xvY2F0ZSB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgLnNpZGViYXItdHdvIHsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB3aWR0aDogMzMlOwogICAgICBoZWlnaHQ6IDc1MHB4OwogICAgICByaWdodDogMDsKICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIGZsb2F0OiByaWdodDsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsKICAgICAgY29sb3I6ICMwMDAwMDA7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIC8qIHotaW5kZXg6IDEwMDA7ICovCiAgICB9CgogICAgLyogLmFuaW1hdGVkIHsKICBhbmltYXRpb24tZHVyYXRpb246IDFzOwogIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7Cn0KCi5zbGlkZU91dFJpZ2h0IHsKICBhbmltYXRpb24tbmFtZTogc2xpZGVPdXRSaWdodDsKfSAqLwoKICAgIGRpdi5pbmZvIHsKICAgICAgaGVpZ2h0OiA3NTBweDsKICAgIH0KCiAgICBkaXYudGV4dC1pbmZvIHsKICAgICAgbWFyZ2luLWxlZnQ6IDRweDsKICAgIH0KCiAgICBwLmNhdGVnb3J5IHsKICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICBsaW5lLWhlaWdodDogMHB4OwogICAgICBtYXJnaW4tdG9wOiAxM3B4OwogICAgfQoKICAgICNwb3N0LTUzMzE+ZGl2PmRpdj5kaXY+ZGl2PmRpdj5kaXY+ZGl2LnNpZGViYXItdHdvLmFuaW1hdGVkLnNsaWRlT3V0UmlnaHQ+ZGl2PmRpdj5oMiB7CiAgICAgIG1hcmdpbi10b3A6IC0yMXB4OwogICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgIHBhZGRpbmc6IDA7CiAgICB9CgogICAgI3Bvc3QtNTMzMT5kaXY+ZGl2PmRpdj5kaXY+ZGl2PmRpdj5kaXYuc2lkZWJhci10d28uYW5pbWF0ZWQuc2xpZGVPdXRSaWdodD5kaXY+ZGl2PnAuZGVzY3JpcHRpb24gewogICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICAgIHBhZGRpbmctYm90dG9tOiAwOwogICAgICBsaW5lLWhlaWdodDogMTdweDsKICAgICAgbWFyZ2luLXRvcDogLTIzcHg7CgogICAgfQoKICAgIGEuYnV0dG9uIHsKICAgICAgZm9udC1zaXplOiAxNXB4OwogICAgICBsaW5lLWhlaWdodDogMjBweDsKICAgICAgcGFkZGluZzogMTRweCAyMHB4OwogICAgICBtaW4td2lkdGg6IDIyMHB4OwogICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgbWFyZ2luLXRvcDogNXB4OwogICAgICBib3JkZXItcmFkaXVzOiAyNXB4OwogICAgICBib3gtc2hhZG93OiAycHggMnB4IDJweCAjMTUxNTE1OwogICAgICBsZXR0ZXItc3BhY2luZzogMXB4OwogICAgfQoKICAgIGltZy5pbmZvLWltYWdlIHsKICAgICAgd2lkdGg6IDEwMCU7CiAgICB9CgogICAgI3Bvc3QtNTMzMT5kaXY+ZGl2PmRpdj5kaXY+ZGl2PmRpdj5kaXYuc2lkZWJhci10d28uYW5pbWF0ZWQuc2xpZGVPdXRSaWdodD5pIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzZmNzk2YjsKICAgICAgYm9yZGVyLWNvbG9yOiAjNmY3OTZiOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGxlZnQ6IC0yNXB4OwogICAgICB0b3A6IGNhbGMoNTAlIC0gMjVweCk7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzk0YThhYTsKICAgICAgYm9yZGVyOiA3cHggc29saWQgIzk0YThhYTsKICAgIH0KCiAgICAuc2lkZWJhci10d28gYS5idXR0b24gewogICAgICBjb2xvcjogI0ZGRkZGRjsKICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgfQoKICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjZweCkgewogICAgICBsaSNmaWx0ZXItdGl0bGUgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgIH0KICA8L3N0eWxlPgo8L2hlYWQ+Cgo8Ym9keT4KCiAgPGRpdiBjbGFzcz0ibWFwLXdyYXBwZXIiPgogICAgPGRpdiBpZD0nbWFwJz48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InNpZGViYXItdHdvIGFuaW1hdGVkIHNsaWRlT3V0UmlnaHQiPgogICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtYW5nbGUtcmlnaHQiPjwvaT48L3NwYW4+CiAgICAgIDxkaXYgY2xhc3M9ImluZm8iPjwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBpZD0ibWVudSI+CiAgICA8dWw+CiAgICAgIDxsaSBpZD0iZmlsdGVyLXRpdGxlIj5GaWx0ZXIgYnk6IDwvbGk+CiAgICA8L3VsPgoKICA8L2Rpdj4KCgoKICA8c2NyaXB0PgogICAgLy8gICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpewogICAgLy8gICAgICAgICAgJCgiYSNwcm9ncmFtbWUtcHJvamVjdHMiKS5jbGljayhmdW5jdGlvbigpeyAgICAgIAogICAgLy8gICAgICAgbG9jYXRpb24uaHJlZiA9ICJodHRwczovL2NyZWF0aXZlcGxhY2VzZWRlbmRlcnJ5LmllLz9wYWdlX2lkPTUzMzEjbWFwIjsKICAgIC8vICAgICB9KQogICAgLy8gY29uc29sZS5sb2coIndpbmRvd2xvYWQiKQogICAgLy8gICAgIHZhciBocmVmID0gJ2h0dHBzOi8vY3JlYXRpdmVwbGFjZXNlZGVuZGVycnkuaWUvP3BhZ2VfaWQ9NTMzMSNtYXAnOwogICAgLy8gICAgICQoImEjcHJvZ3JhbW1lLXByb2plY3RzIikuaHRtbCgoJzxhIGhyZWY9IicgKyBocmVmICsgJyI+PC9hPicpKTsKICAgIC8vICAgICAkKCJhI2V2ZW50cyIpLmh0bWwoKCc8YSBocmVmPSInICsgaHJlZiArICciPjwvYT4nKSk7CiAgICAvLyAgICAgJCgiYSNjdWx0dXJhbC1oaXN0b3JpY2FsLXNpdGVzIikuaHRtbCgoJzxhIGhyZWY9IicgKyBocmVmICsgJyI+PC9hPicpKTsKICAgIC8vICAgICB9CgoKICAgIC8vIGNsb3NlIHJpZ2h0IHNpZGViYXIgb24gY2xpY2tpbmcgb24gdGhlIG1hcAogICAgLy8gJCgiLm1hcGJveGdsLWNhbnZhcyIpLmNsaWNrKGZ1bmN0aW9uICgpIHsKICAgIC8vICAgJCgiLnNpZGViYXItdHdvIikuY3NzKCJkaXNwbGF5IiwgIm5vbmUiKTsKICAgIC8vICAgJCgiI21hcCIpLmNzcygid2lkdGgiLCAiMTAwJSIpOwogICAgLy8gfSk7CiAgICAvLy8vCgogICAgbWFwYm94Z2wuYWNjZXNzVG9rZW4gPQogICAgICAicGsuZXlKMUlqb2lZMmhsWlc1aVpXVnVJaXdpWVNJNkltTnJkM28yT0dobFpqQXphV1V5Ym5Gc2JtMXZiMnRvTnpraWZRLkJLamJabjZiOXZ5Ri1pd2d0Qy1NbnciOwoKICAgIHZhciBmaWx0ZXJHcm91cCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsbCIpOwogICAgLy8gdmFyIGZpbHRlckdyb3VwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbHRlci1ncm91cCcpOwoKICAgIHZhciBtYXAgPSBuZXcgbWFwYm94Z2wuTWFwKHsKICAgICAgY29udGFpbmVyOiAibWFwIiwKICAgICAgc3R5bGU6ICJtYXBib3g6Ly9zdHlsZXMvY2hlZW5iZWVuL2NreXlmY3Q2NDAwN3IxNHFsYjgybW8zYnMiLAogICAgICBjZW50ZXI6IFstNy4wNjEyMDgsIDUzLjMzODUwNl0sCiAgICAgIHpvb206IDEwLAogICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWUsCiAgICAgIGN1c3RvbUF0dHJpYnV0aW9uOgogICAgICAgICc8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj1odHRwOi8vd3d3Lmdlb2NhZGRlci5iZy9lbi9wb3J0Zm9saW8uaHRtbD5HRU9DQURERVI8L2E+JywKICAgIH0pOwoKICAgIHZhciBib3VuZHMgPSBuZXcgbWFwYm94Z2wuTG5nTGF0Qm91bmRzKCk7CgogICAgdmFyIG1hcmtlcnNBbGxJZHNBbmRUeXBlcyA9IFtdOwoKICAgIC8vLyBsb2FkaW5nIFBPSXMgZGF0YSBmcm9tIEdvb2dsZSBTaGVldHMgdGFibGUvLy8KICAgICQuZ2V0SlNPTigKICAgICAgImh0dHBzOi8vc2hlZXRzLmdvb2dsZWFwaXMuY29tL3Y0L3NwcmVhZHNoZWV0cy8xZUJSaVp5VUhhT2JycXgtOVJ5c2JzWlhWbjJxdWk1OEstdWNkbF9TY2E0ay92YWx1ZXMvU2hlZXQxIUEyOkkxMDAwP21ham9yRGltZW5zaW9uPVJPV1Mma2V5PUFJemFTeUNuY3JOdDQ1Y1BBaHItX3VxQnZDNmUtT3Axc2FHWjVfOCIsCiAgICAgIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIHJlc3BvbnNlLnZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uIChtYXJrZXIpIHsKICAgICAgICAgIGlmICh0eXBlb2YgbWFya2VyWzFdICE9PSAidW5kZWZpbmVkIikgewogICAgICAgICAgICB2YXIgZGVzdGluYXRpb24gPSBtYXJrZXJbMF07CiAgICAgICAgICAgIHZhciBjYXRlZ29yeSA9IG1hcmtlclsxXTsKICAgICAgICAgICAgdmFyIG1hcmtlcklkID0gbWFya2VyWzJdOwogICAgICAgICAgICB2YXIgbGF0aXR1ZGUgPSBwYXJzZUZsb2F0KG1hcmtlclszXSk7CiAgICAgICAgICAgIHZhciBsb25naXR1ZGUgPSBwYXJzZUZsb2F0KG1hcmtlcls0XSk7CiAgICAgICAgICAgIHZhciBidXR0b25MaW5rID0gbWFya2VyWzVdCiAgICAgICAgICAgIHZhciBkZXRhaWxzID0gbWFya2VyWzZdOwogICAgICAgICAgICB2YXIgcGhvdG8gPSBtYXJrZXJbN10KICAgICAgICAgICAgdmFyIGljb24gPSBtYXJrZXJbOF07CgoKCiAgICAgICAgICAgIGJvdW5kcy5leHRlbmQoW2xvbmdpdHVkZSwgbGF0aXR1ZGVdKTsKCiAgICAgICAgICAgIG1hcmtlcnNBbGxJZHNBbmRUeXBlcy5wdXNoKHsgbWFya2VySWQ6IG1hcmtlcklkLCBjYXRlZ29yeTogY2F0ZWdvcnksIGljb246IGljb24gfSk7CgogICAgICAgICAgICB2YXIgcG9wdXBDb250ZW50ID0KICAgICAgICAgICAgICAiPGRpdiBjbGFzcz0ndGl0bGUnPjxiPiIgKwogICAgICAgICAgICAgIGRlc3RpbmF0aW9uICsKICAgICAgICAgICAgICAiPC9iPjwvZGl2PiIgKwogICAgICAgICAgICAgICI8ZGl2IGNsYXNzPSd2aXNpdCc+IiArCiAgICAgICAgICAgICAgIjxwIGNsYXNzPSd0cmF2ZWwtdGltZSc+PGI+IiArCiAgICAgICAgICAgICAgZGV0YWlscyArCiAgICAgICAgICAgICAgIjwvYj48L3A+IjsKCiAgICAgICAgICAgIC8vIGlmIChtYXJrZXJJZCAhPT0gImFoLWNhYmluIikgewogICAgICAgICAgICAvLyAgIHBvcHVwQ29udGVudCArPQogICAgICAgICAgICAvLyAgICAgIjxwIGNsYXNzPSd0cmF2ZWwtdGltZSc+PGltZyBjbGFzcz0ncG9wdXAtaW1hZ2UtaWNvbicgc3JjPSdpY29ucy9jYXItdHdvLnN2Zyc+PGI+IiArCiAgICAgICAgICAgIC8vICAgICB0cmF2ZWwgKwogICAgICAgICAgICAvLyAgICAgIjwvYj48L3A+IjsKICAgICAgICAgICAgLy8gfQoKICAgICAgICAgICAgLy8gcG9wdXBDb250ZW50ICs9CiAgICAgICAgICAgIC8vICAgIjxwIGNsYXNzPSd2aXNpdC1kaXJlY3RvcnknPjxiPjxhIHRhcmdldD0nYmxhbmsnIGhyZWY9JyIgKwogICAgICAgICAgICAvLyAgIGJ1dHRvbkxpbmsgKwogICAgICAgICAgICAvLyAgICInPiIgKwogICAgICAgICAgICAvLyAgICJTZWUgbW9yZTwvYT48L2I+PC9wPiIgKwogICAgICAgICAgICAvLyAgICI8L2Rpdj4iOwogICAgICAgICAgICAvLyBwb3B1cCA9IG5ldyBtYXBib3hnbC5Qb3B1cCh7IGNsb3NlT25DbGljazogZmFsc2UgfSkuc2V0SFRNTCgKICAgICAgICAgICAgLy8gICBwb3B1cENvbnRlbnQKICAgICAgICAgICAgLy8gKTsKCiAgICAgICAgICAgIC8vIGNyZWF0ZSBhIEhUTUwgZWxlbWVudCBmb3IgZWFjaCBmZWF0dXJlCiAgICAgICAgICAgIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICAgICBlbC5jbGFzc05hbWUgPSAibWFya2VyICIgKyBtYXJrZXJJZDsKICAgICAgICAgICAgZWwuaWQgPSBtYXJrZXJJZDsKCiAgICAgICAgICAgIHZhciBtYXJrZXJPYmogPSBuZXcgbWFwYm94Z2wuTWFya2VyKGVsKQogICAgICAgICAgICAgIC5zZXRMbmdMYXQoW2xvbmdpdHVkZSwgbGF0aXR1ZGVdKQogICAgICAgICAgICAgIC8vIC5zZXRQb3B1cChwb3B1cCkKICAgICAgICAgICAgICAuYWRkVG8obWFwKTsKCiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAvLyBjcmVhdGVQb3BVcChtYXJrZXIpOwogICAgICAgICAgICAgIGZpbGxSaWdodFNpZGViYXJJbmZvKG1hcmtlcikKICAgICAgICAgICAgfSkKCiAgICAgICAgICAgIGVsLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICJ1cmwoIiArIGljb24gKyAiKSI7CiAgICAgICAgICAgIGVsLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICJyZ2JhKDAsMCwwLDApIjsKICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgdmFyIG9iamVjdHNKc29uID0gbWFya2Vyc0FsbElkc0FuZFR5cGVzLm1hcCgob2JqZWN0KSA9PgogICAgICAgICAgSlNPTi5zdHJpbmdpZnkob2JqZWN0KQogICAgICAgICk7CiAgICAgICAgdmFyIG9iamVjdHNKc29uU2V0ID0gbmV3IFNldChvYmplY3RzSnNvbik7CiAgICAgICAgdmFyIHVuaXF1ZUpzb25BcnJheSA9IEFycmF5LmZyb20ob2JqZWN0c0pzb25TZXQpOwogICAgICAgIHZhciB1bmlxdWVPYmplY3RzQnlDb250ZW50ID0gdW5pcXVlSnNvbkFycmF5Lm1hcCgoc3RyaW5nKSA9PgogICAgICAgICAgSlNPTi5wYXJzZShzdHJpbmcpCiAgICAgICAgKTsKCgoKICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHVuaXF1ZU9iamVjdHNCeUNvbnRlbnQpIHsKICAgICAgICAgICQoIiNtZW51IHVsIikuYXBwZW5kKAogICAgICAgICAgICAiPGxpPjxpbWcgc3JjPSciICsgdmFsdWVbImljb24iXSArICInPjxhIGNsYXNzPSdtYXAtYnV0dG9ucycgaHJlZj0nIycgaWQ9JyIgKyB2YWx1ZVsibWFya2VySWQiXSArICInPiIgKyB2YWx1ZVsiY2F0ZWdvcnkiXSArICI8L2E+PC9saT4iCiAgICAgICAgICApOwoKICAgICAgICAgICQoImEjIiArIHZhbHVlWyJtYXJrZXJJZCJdKS5jbGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICQoIi5tYXBib3hnbC1wb3B1cCIpLnJlbW92ZSgpOwogICAgICAgICAgICBpZiAoJCgiZGl2LiIgKyB2YWx1ZVsibWFya2VySWQiXSkuY3NzKCJ2aXNpYmlsaXR5IikgPT0gInZpc2libGUiKSB7CiAgICAgICAgICAgICAgJCgiZGl2LiIgKyB2YWx1ZVsibWFya2VySWQiXSkuY3NzKCJ2aXNpYmlsaXR5IiwgImhpZGRlbiIpOwogICAgICAgICAgICAgICQoImxpIyIgKyB2YWx1ZVsibWFya2VySWQiXSkuY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIiwgIiNGRkZGRkYiKTsKICAgICAgICAgICAgICAkKCJsaSMiICsgdmFsdWVbIm1hcmtlcklkIl0pLmNzcygiY29sb3IiLCAiIzFFNEVGNCIpOwogICAgICAgICAgICAgICQoImxpIyIgKyB2YWx1ZVsibWFya2VySWQiXSkuY3NzKCJib3JkZXIiLCAiMXB4IHNvbGlkICMxRTRFRjQiKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAkKCJkaXYuIiArIHZhbHVlWyJtYXJrZXJJZCJdKS5jc3MoInZpc2liaWxpdHkiLCAidmlzaWJsZSIpOwogICAgICAgICAgICAgICQoImxpIyIgKyB2YWx1ZVsibWFya2VySWQiXSkuY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIiwgIiMxRTRFRjQiKTsKICAgICAgICAgICAgICAkKCJsaSMiICsgdmFsdWVbIm1hcmtlcklkIl0pLmNzcygiY29sb3IiLCAiI0ZGRkZGRiIpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKCiAgICAgICAgICAkKCJhIyIgKyB2YWx1ZVsibWFya2VySWQiXSkubW91c2VlbnRlcihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGlmICgkKCJkaXYuIiArIHZhbHVlWyJtYXJrZXJJZCJdKS5jc3MoInZpc2liaWxpdHkiKSA9PSAidmlzaWJsZSIpIHsKICAgICAgICAgICAgICAkKCJsaSMiICsgdmFsdWVbIm1hcmtlcklkIl0pLmNzcygiYmFja2dyb3VuZC1jb2xvciIsICIjRkZGRkZGIik7CiAgICAgICAgICAgICAgJCgibGkjIiArIHZhbHVlWyJtYXJrZXJJZCJdKS5jc3MoImNvbG9yIiwgIiMxRTRFRjQiKTsKICAgICAgICAgICAgICAkKCJsaSMiICsgdmFsdWVbIm1hcmtlcklkIl0pLmNzcygiYm9yZGVyIiwgIjFweCBzb2xpZCAjMUU0RUY0Iik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgJCgibGkjIiArIHZhbHVlWyJtYXJrZXJJZCJdKS5jc3MoImJhY2tncm91bmQtY29sb3IiLCAiIzFFNEVGNCIpOwogICAgICAgICAgICAgICQoImxpIyIgKyB2YWx1ZVsibWFya2VySWQiXSkuY3NzKCJjb2xvciIsICIjRkZGRkZGIik7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwoKICAgICAgICAgICQoImEjIiArIHZhbHVlWyJtYXJrZXJJZCJdKS5tb3VzZWxlYXZlKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKCQoImRpdi4iICsgdmFsdWVbIm1hcmtlcklkIl0pLmNzcygidmlzaWJpbGl0eSIpID09ICJ2aXNpYmxlIikgewogICAgICAgICAgICAgICQoImxpIyIgKyB2YWx1ZVsibWFya2VySWQiXSkuY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIiwgIiMxRTRFRjQiKTsKICAgICAgICAgICAgICAkKCJsaSMiICsgdmFsdWVbIm1hcmtlcklkIl0pLmNzcygiY29sb3IiLCAiI0ZGRkZGRiIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICQoImxpIyIgKyB2YWx1ZVsibWFya2VySWQiXSkuY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIiwgIiNGRkZGRkYiKTsKICAgICAgICAgICAgICAkKCJsaSMiICsgdmFsdWVbIm1hcmtlcklkIl0pLmNzcygiY29sb3IiLCAiIzFFNEVGNCIpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgICQoIi5tYXAtYnV0dG9ucyIpLmNsaWNrKGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAvLyBjb25zb2xlLmxvZygiZGVzaSIpOwogICAgICAgICAgLy8gbG9jYXRpb24uaHJlZiA9ICJodHRwczovL2dlb2NhZGRlci5iZyI7CiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gImh0dHBzOi8vY3JlYXRpdmVwbGFjZXNlZGVuZGVycnkuaWUvP3BhZ2VfaWQ9NTMzMSNtYXAiOwogICAgICAgIH0pOwoKICAgICAgICAvLyBjbG9zZSBhbGwgb3BlbmVkIHBvcHVwcwogICAgICAgICQoIi5tYXJrZXIiKS5jbGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAkKCIubWFwYm94Z2wtcG9wdXAiKS5yZW1vdmUoKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gJCgiLm1hcGJveGdsLWNhbnZhcyIpLmNsaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAvLyAgIGNvbnNvbGUubG9nKCJkZXNpIik7CiAgICAgICAgLy8gICAkKCIubWFwYm94Z2wtcG9wdXAiKS5yZW1vdmUoKTsKICAgICAgICAvLyB9KTsKCiAgICAgICAgLy8gY2xvc2UgYWxsIG9wZW5lZCBwb3B1cHMKICAgICAgICAvLyAkKCIubWFya2VyIikuY2xpY2soZnVuY3Rpb24gKCkgewogICAgICAgIC8vICAgJCgiLnNpZGViYXItdHdvIikucmVtb3ZlKCk7CiAgICAgICAgLy8gfSk7CgogICAgICAgIC8vICQoIi5tYXBib3hnbC1jYW52YXMiKS5jbGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgLy8gICBjb25zb2xlLmxvZygiZGVzaSIpCiAgICAgICAgLy8gICAkKCIuc2lkZWJhci10d28iKS5jc3MoIndpZHRoIiwgIjAiKTsKICAgICAgICAvLyAgICQoIiNtYXAiKS5jc3MoIndpZHRoIiwgIjEwMCUiKTsKICAgICAgICAvLyB9KTsKCiAgICAgICAgbWFwLmZpdEJvdW5kcyhib3VuZHMsIHsgcGFkZGluZzogODAgfSk7CgogICAgICAgIC8vICAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkgewogICAgICAgIC8vICAgICAgIHZhciB3aW5kb3dXaWR0aCA9IHdpbmRvdy5vdXRlcldpZHRoOwogICAgICAgIC8vICAgICAgIHZhciBwb3NpdGlvbiA9ICQoIiNtZW51LWl0ZW0tNDg0NCIpLm9mZnNldCgpLnRvcDsKICAgICAgICAvLyAgICAgICBjb25zb2xlLmxvZyhwb3NpdGlvbikKICAgICAgICAvLyAgICAgICBwb3NpdGlvbiAtPSAxMDE1OwogICAgICAgIC8vICAgICAgIHBvc2l0aW9uVGV4dCA9ICIiICsgcG9zaXRpb24gKyAicHgiOwogICAgICAgIC8vICAgICAgIGNvbnNvbGUubG9nKHBvc2l0aW9uVGV4dCkKICAgICAgICAvLyAgICAgICAkKCIjbWVudSIpLmNzcygndG9wJywgcG9zaXRpb25UZXh0KQoKICAgICAgICAvLyAgIC8vIHZhciBibGFua0ludGVyYWN0aXZlTWFwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1hcCIpOwogICAgICAgIC8vICAgLy8gdmFyIGludGVyYWN0aXZlTWFwVG9wT2Zmc2V0ID0gYmxhbmtJbnRlcmFjdGl2ZU1hcC5vZmZzZXRUb3A7CiAgICAgICAgLy8gICAvLyB2YXIgbWVudUJsb2NrID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1lbnUtZm9vdGVyLW1lbnUtMSIpOwogICAgICAgIC8vICAgLy8gY29uc29sZS5sb2coaW50ZXJhY3RpdmVNYXBUb3BPZmZzZXQpCiAgICAgICAgLy8gICAvLyBpbnRlcmFjdGl2ZU1hcFRvcE9mZnNldCAtPSA3NTA7CiAgICAgICAgLy8gICAvLyBjb25zb2xlLmxvZyhpbnRlcmFjdGl2ZU1hcFRvcE9mZnNldCkKICAgICAgICAvLyAgIC8vIG1lbnVCbG9jay5zdHlsZS50b3AgPSAiIiArIGludGVyYWN0aXZlTWFwVG9wT2Zmc2V0ICsgInB4IjsKCiAgICAgICAgLy8gICAvLyB2YXIgd2luZG93V2lkdGggPSB3aW5kb3cub3V0ZXJXaWR0aDsKICAgICAgICAvLyAgIC8vIGlmICh3aW5kb3dXaWR0aCA8IDc2NikgewogICAgICAgIC8vICAgLy8gICBpbnRlcmFjdGl2ZU1hcFRvcE9mZnNldCArPSA0MDA7CiAgICAgICAgLy8gICAvLyAgIHNpZGViYXJCbG9jay5zdHlsZS50b3AgPSAiIiArIGludGVyYWN0aXZlTWFwVG9wT2Zmc2V0ICsgInB4IjsKICAgICAgICAvLyAgIC8vICAgYmxhbmtJbnRlcmFjdGl2ZU1hcC5zdHlsZS5oZWlnaHQgPSAiODAwcHgiOwogICAgICAgIC8vICAgLy8gfQogICAgICAgIC8vIH07CiAgICAgIH0KICAgICk7CgogICAgLy8gcG9wdXAgdG9nZ2xpbmcgLy8KICAgIGZ1bmN0aW9uIHRvZ2dsZVBvcHVwKCkgewogICAgICB2YXIgcG9wdXAgPSB0aGlzLl9wb3B1cDsKCiAgICAgIGlmICghcG9wdXApIHJldHVybjsKICAgICAgZWxzZSBpZiAocG9wdXAuaXNPcGVuKCkpIHBvcHVwLnJlbW92ZSgpOwogICAgICBlbHNlIHBvcHVwLmFkZFRvKHRoaXMuX21hcCk7CiAgICB9CiAgICAvLyBlbmQgcG9wdXAgdG9nZ2xpbmcvLwoKCiAgICAvLyBBZGQgZGF0YSB0byB0aGUgcmlnaHQgc2lkZWJhcgogICAgZnVuY3Rpb24gZmlsbFJpZ2h0U2lkZWJhckluZm8oY3VycmVudEZlYXR1cmUpIHsKICAgICAgJCgiLnNpZGViYXItdHdvIikuY3NzKCJkaXNwbGF5IiwgImJsb2NrIik7CiAgICAgICQoIiNtYXAiKS5jc3MoIndpZHRoIiwgIjY2JSIpOwoKICAgICAgdmFyIHJpZ2h0U0lkZWJhckNvbnRlbnQgPSAiPHA+IiArIGN1cnJlbnRGZWF0dXJlWzJdICsgIjwvcD4iCgoKICAgICAgJCgiLmluZm8iKS5odG1sKCI8aW1nIGNsYXNzPSdpbmZvLWltYWdlJyBzcmM9JyIgKyBjdXJyZW50RmVhdHVyZVs3XSArICInPjxkaXYgY2xhc3M9J3RleHQtaW5mbyc+PHAgY2xhc3M9J2NhdGVnb3J5Jz4iICsgY3VycmVudEZlYXR1cmVbMV0gKyAiPC9wPjxoMiBzdHlsZT0nY29sb3I6IiArIGdldENvbG9yKGN1cnJlbnRGZWF0dXJlWzJdKSArICInIGNsYXNzPSd0aXRsZSc+IiArIGN1cnJlbnRGZWF0dXJlWzBdICsgIjwvaDI+PHAgY2xhc3M9J2Rlc2NyaXB0aW9uJz4iICsgY3VycmVudEZlYXR1cmVbNl0gKyAiPC9wPjxhIHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiIgKyBnZXRDb2xvcihjdXJyZW50RmVhdHVyZVsyXSkgKyAiJyAgdGFyZ2V0PSdibGFuaycgY2xhc3M9J2J1dHRvbicgaHJlZj0nIiArIGN1cnJlbnRGZWF0dXJlWzVdICsgIic+TU9SRSBJTkZPPC9hPjwvZGl2PiIpCgogICAgICB2YXIgYm9yZGVyTGVmdCA9ICIycHggc29saWQgIiArIGdldENvbG9yKGN1cnJlbnRGZWF0dXJlWzJdKTsKICAgICAgJCgiLnNpZGViYXItdHdvIikuY3NzKCJib3JkZXItbGVmdCIsIGJvcmRlckxlZnQpCgoKCiAgICB9CiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLwoKCiAgICBmdW5jdGlvbiBnZXRDb2xvcihyZXByZXNlbnRhdGl2ZU5hbWUpIHsKICAgICAgdmFyIGNvbG9yID0gIiI7CiAgICAgIHN3aXRjaCAocmVwcmVzZW50YXRpdmVOYW1lKSB7CiAgICAgICAgY2FzZSAicHJvZ3JhbW1lLXByb2plY3RzIjoKICAgICAgICAgIGNvbG9yID0gIiNlYzAwMDAiOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAiZXZlbnRzIjoKICAgICAgICAgIGNvbG9yID0gIiNmNzk0MWQiOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAiY3VsdHVyYWwtaGlzdG9yaWNhbC1zaXRlcyI6CiAgICAgICAgICBjb2xvciA9ICIjMzNiYjMzIjsKICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIHJldHVybiBjb2xvcjsKICAgIH0KCgogICAgLy8gY2xvc2UgcmlnaHQgc2lkZWJhciBvbiBjbGlja2luZyBvbiB0aGUgbWFwCiAgICAkKCIubWFwYm94Z2wtY2FudmFzIikuY2xpY2soZnVuY3Rpb24gKCkgewogICAgICAkKCIuc2lkZWJhci10d28iKS5jc3MoImRpc3BsYXkiLCAibm9uZSIpOwogICAgICAkKCIjbWFwIikuY3NzKCJ3aWR0aCIsICIxMDAlIik7CiAgICB9KTsKCgoKCgoKICA8L3NjcmlwdD4KCjwvYm9keT4KCjwvaHRtbD4=[/fusion_code][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]