Propellers

[fusion_builder_container hundred_percent=”no” hundred_percent_height=”no” hundred_percent_height_scroll=”no” hundred_percent_height_center_content=”yes” equal_height_columns=”no” menu_anchor=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” status=”published” publish_date=”” class=”” id=”” background_color=”” background_image=”https://electricyacht.com/wp-content/uploads/2019/03/sailboats-1920.jpg” background_position=”center center” background_repeat=”no-repeat” fade=”no” background_parallax=”none” enable_mobile=”no” parallax_speed=”0.3″ video_mp4=”” video_webm=”” video_ogv=”” video_url=”” video_aspect_ratio=”16:9″ video_loop=”yes” video_mute=”yes” video_preview_image=”” border_color=”” border_style=”solid” margin_top=”” margin_bottom=”” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” type=”legacy”][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ spacing=”” center_content=”no” link=”” target=”_self” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” background_image_id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” hover_type=”none” border_color=”” border_style=”solid” border_position=”all” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”true” border_sizes_top=”0″ border_sizes_bottom=”0″ border_sizes_left=”0″ border_sizes_right=”0″ type=”1_1″ first=”true”][fusion_title hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” content_align=”center” size=”1″ font_size=”” line_height=”” letter_spacing=”” margin_top=”30px” margin_bottom=”30px” text_color=”#ffffff” style_type=”default” sep_color=””]

Propellers

[/fusion_title][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container][fusion_builder_container hundred_percent=”no” hundred_percent_height=”no” hundred_percent_height_scroll=”no” hundred_percent_height_center_content=”yes” equal_height_columns=”no” menu_anchor=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” status=”published” publish_date=”” class=”” id=”” background_color=”” background_image=”” background_position=”center center” background_repeat=”no-repeat” fade=”no” background_parallax=”none” enable_mobile=”no” parallax_speed=”0.3″ video_mp4=”” video_webm=”” video_ogv=”” video_url=”” video_aspect_ratio=”16:9″ video_loop=”yes” video_mute=”yes” video_preview_image=”” border_color=”” border_style=”solid” margin_top=”” margin_bottom=”” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” type=”legacy”][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ spacing=”” center_content=”no” link=”” target=”_self” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” background_color=”” background_image=”” background_image_id=”” background_position=”left top” background_repeat=”no-repeat” hover_type=”none” border_color=”” border_style=”solid” border_position=”all” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”true” border_sizes_top=”0″ border_sizes_bottom=”0″ border_sizes_left=”0″ border_sizes_right=”0″ type=”1_1″ first=”true”][fusion_text columns=”” column_min_width=”” column_spacing=”” rule_style=”default” rule_size=”” rule_color=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=””]

Propeller Type

The propeller is where “the rubber meets the road” so to speak. More accurately for marine applications, it is where the “metal meets the water”.

There are many factors that determine the best choice of propeller for a given application. For auxiliary sailboats, it is often a compromise between sailing drag and performance when motoring. In particular, is effectiveness when maneuvering.

In this regard, a fixed three blade propeller will provide the best overall motoring performance. It will also provide the best regeneration under sail. On the downside, of course, is additional sailing drag.

There are a number of types of propellers in common usage. Each has its advantages and disadvantages.

In general, a two blade fixed is a good compromise with respect to overall performance and reduced sailing drag. Typically, their motoring performance is good, but they suffer reduced effectiveness when maneuvering.

Of course, feathering and folding propellers provide the greatest reduction in drag. This must be weighed against their effectiveness when motoring or maneuvering. All brands are not equal.

Propeller Sizing

Anyone familiar with a diesel repower is aware of the importance of matching the propeller to the engine and transmission ratio. The most important factors are diameter and pitch. This will determine how much power a propeller will absorb at a given shaft speed.

If the propeller absorbs too much power, the engine will be over loaded. It will not get to its designed maximum speed because it will reach its maximum torque capability before reaching the designed maximum speed (RPM). This is a serious issue and will cause engine damage.

If the propeller does not absorb enough power, the engine will over speed at full throttle. This is also a serious issue and will result in engine damage unless the operator restricts engine speed to the designed maximum.

The situation is different for an EP motor. As long as the system is properly designed, it will not be damaged by a mismatch. However, a proper match is still necessary to obtain full power from your EP motor.

Unlike other EP suppliers, Electric Yacht can supply a range of speed reduction ratios. When properly matched, the electric motor is allowed to run at its optimum torque/speed while the propeller shaft turns at the best speed for the boat/propeller combination. In most cases, we can match your existing boat and propeller combination such that you will get the most of your EP motor.

[/fusion_text][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container][fusion_builder_container hundred_percent=”no” hundred_percent_height=”no” hundred_percent_height_scroll=”no” hundred_percent_height_center_content=”yes” equal_height_columns=”no” menu_anchor=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” status=”published” publish_date=”” class=”” id=”” background_color=”#0866ad” background_image=”” background_position=”center center” background_repeat=”no-repeat” fade=”no” background_parallax=”none” enable_mobile=”no” parallax_speed=”0.3″ video_mp4=”” video_webm=”” video_ogv=”” video_url=”” video_aspect_ratio=”16:9″ video_loop=”yes” video_mute=”yes” video_preview_image=”” border_color=”” border_style=”solid” margin_top=”” margin_bottom=”” padding_top=”20px” padding_right=”” padding_bottom=”20px” padding_left=”” type=”legacy”][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ spacing=”” center_content=”no” link=”” target=”_self” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” background_color=”” background_image=”” background_image_id=”” background_position=”left top” background_repeat=”no-repeat” hover_type=”none” border_color=”” border_style=”solid” border_position=”all” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”true” border_sizes_top=”0″ border_sizes_bottom=”0″ border_sizes_left=”0″ border_sizes_right=”0″ type=”1_1″ first=”true”][fusion_button link=”/find-your-boat” text_transform=”” title=”” target=”_self” link_attributes=”” alignment=”center” modal=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” color=”default” button_gradient_top_color=”” button_gradient_bottom_color=”” button_gradient_top_color_hover=”” button_gradient_bottom_color_hover=”” accent_color=”” accent_hover_color=”” type=”” bevel_color=”” border_width=”” size=”” stretch=”default” icon=”” icon_position=”left” icon_divider=”no” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” border_radius=””]Find Your Boat[/fusion_button][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container][fusion_builder_container hundred_percent=”no” hundred_percent_height=”no” hundred_percent_height_scroll=”no” hundred_percent_height_center_content=”yes” equal_height_columns=”no” menu_anchor=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” status=”published” publish_date=”” class=”” id=”” background_color=”” background_image=”” background_position=”center center” background_repeat=”no-repeat” fade=”no” background_parallax=”none” enable_mobile=”no” parallax_speed=”0.3″ video_mp4=”” video_webm=”” video_ogv=”” video_url=”” video_aspect_ratio=”16:9″ video_loop=”yes” video_mute=”yes” video_preview_image=”” border_color=”” border_style=”solid” margin_top=”” margin_bottom=”” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” type=”legacy”][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ spacing=”” center_content=”no” link=”” target=”_self” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” background_color=”” background_image=”” background_image_id=”” background_position=”left top” background_repeat=”no-repeat” hover_type=”none” border_color=”” border_style=”solid” border_position=”all” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”true” border_sizes_top=”0″ border_sizes_bottom=”0″ border_sizes_left=”0″ border_sizes_right=”0″ type=”1_1″ first=”true”][fusion_title hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” content_align=”center” size=”2″ font_size=”” line_height=”” letter_spacing=”” margin_top=”” margin_bottom=”” text_color=”” style_type=”default” sep_color=””]

Questions? We have answers

[/fusion_title][fusion_code]PHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCmh0bWwsYm9keXsKCiAgICAgICAgICAgICAgIG1hcmdpbjogMHB4OwoKfQoKLmJnbi13Zi13cmFwcGVyICogewoKICAgICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKCn0KCi5iZ24td2Ytd3JhcHBlciB7CgogICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKCiAgICAgICAgICAgICAgIG1heC13aWR0aDogOTAwcHg7CgogICAgICAgICAgICAgICBtYXJnaW46YXV0bzsKCiAgICAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKCiAgICAgICAgICAgICAgIHBhZGRpbmc6IDE1cHg7CgogICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7CgogICAgICAgICAgICAgICBjb2xvcjojMzMzOwoKfQoKLmJnbi13Zi1yb3cgewoKICAgICAgICAgICAgICAgcGFkZGluZzogNXB4IDAgMTVweCAwOwoKICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDsKCn0KCi5iZ24td2YtbGFiZWx7CgogICAgICAgICAgICAgICBwYWRkaW5nOiA3cHggMjBweCA1cHggMzVweDsKCiAgICAgICAgICAgICAgIHdpZHRoOiAyNiU7CgogICAgICAgICAgICAgICBib3JkZXI6IDA7CgogICAgICAgICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7CgogICAgICAgICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkOwoKICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwoKfQoKLmJnbi13Zi1maWVsZCB7CgogICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwoKICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKCiAgICAgICAgICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7CgogICAgICAgICAgICAgICBib3JkZXI6IDA7CgogICAgICAgICAgICAgICBmbGV4OiAxOwoKfQoKaW5wdXQ6OmZvY3VzewoKICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzE5ODBkODsKCn0KCi5iZ24tc3RhciB7CgogICAgICAgICAgICAgICBjb2xvcjogI2JiMDcwNzt3aWR0aDogMTBweDtoZWlnaHQ6IDEwcHg7ei1pbmRleDogMTtmb250LXNpemU6IDE0cHg7dGV4dC10cmFuc2Zvcm06IGluaGVyaXQ7cG9zaXRpb246IGFic29sdXRlOwoKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTkwcHgpIHsKCi5iZ24td2Ytd3JhcHBlciB7CgogICAgICAgICAgICAgICBtYXgtd2lkdGg6IDgwJSAhSW1wb3J0YW50OwoKICAgICAgICAgICAgICAgYm9yZGVyOiAwOwoKfQoKLmJnbi13Zi1yb3csCgouYmduLXdmLWxhYmVsLAoKLmJnbi13Zi1maWVsZCB7CgogICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKCiAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOwoKfQoKLmJnbi13Zi1maWVsZCBpbnB1dFt0eXBlPXRleHRdLAoKLmJnbi13Zi1maWVsZCBzZWxlY3QsCgouYmduLXdmLWZpZWxkIHRleHRhcmVhIHt3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9CgouYmduLXdmLWZpZWxkIGRpdiA+IHNlbGVjdHsKCiAgICAgICAgICAgICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7Cgp9CgouYmduLXdmLWxhYmVsOmVtcHR5e2Rpc3BsYXk6IG5vbmU7IH0KCn0KCjwvc3R5bGU+Cgo8ZGl2IGNsYXNzPSdiZ24td2Ytd3JhcHBlcicgaWQ9J0JpZ2luV2ViVG9FbnRpdHlGb3JtRGl2NTMxNDY0MzAwMDAwMDQwMzAwOScgc3R5bGU9J21heC13aWR0aDo2MDBweDttYXJnaW46MmVtIGF1dG87cGFkZGluZzogMTVweDtib3JkZXI6MXB4IHNvbGlkICNlMWUxZTE7YmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtjb2xvcjpibGFjazsnPgoKPG1ldGEgbmFtZT0ndmlld3BvcnQnIGNvbnRlbnQ9J3dpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAnPgoKPE1FVEEgSFRUUC1FUVVJViA9J2NvbnRlbnQtdHlwZScgQ09OVEVOVD0ndGV4dC9odG1sO2NoYXJzZXQ9VVRGLTgnPgoKPGZvcm0gaWQ9J0JpZ2luV2ViVG9Db250YWN0Rm9ybTUzMTQ2NDMwMDAwMDA0MDMwMDknIG5hbWU9J0JpZ2luV2ViVG9Db250YWN0Rm9ybTUzMTQ2NDMwMDAwMDA0MDMwMDknIG1ldGhvZD0nUE9TVCcgZW5jdHlwZT0nbXVsdGlwYXJ0L2Zvcm0tZGF0YScgb25TdWJtaXQ9J2phdmFzY3JpcHQ6ZG9jdW1lbnQuY2hhcnNldD0iVVRGLTgiOyByZXR1cm4gdmFsaWRhdGVGb3JtNTMxNDY0MzAwMDAwMDQwMzAwOSgpJyBhY2NlcHQtY2hhcnNldD0nVVRGLTgnIHN0eWxlPSdtYXJnaW46IDA7Jz4KCjwhLS0gRG8gbm90IHJlbW92ZSB0aGlzIGNvZGUuIC0tPgoKICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J3RleHQnIHN0eWxlPSdkaXNwbGF5Om5vbmU7JyBuYW1lPSd4blFzanNkcCcgdmFsdWU9JzM3NjQ5OTBmMzQ3NzU3OWEzNzgwZTRjYTMzYjEyNDc0MWRjNDYxZDcxY2VjYTViZGVmZTM5M2EzYjU2NDBlZmUnLz4KCiAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3pjX2dhZCcgaWQ9J3pjX2dhZCcgdmFsdWU9JycvPgoKICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J3RleHQnIHN0eWxlPSdkaXNwbGF5Om5vbmU7JyBuYW1lPSd4bUl3dExEJyB2YWx1ZT0nNjJlMjNlNDU2NDMxOWRhMWNiOThmYThmYWE1MTdjMWI5MTQyNGEyNmFhMDFhMzM1NWJkZGRhNWVkMjYwNDk2OScvPgoKICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J3RleHQnIHN0eWxlPSdkaXNwbGF5Om5vbmU7JyBuYW1lPSdhY3Rpb25UeXBlJyB2YWx1ZT0nUTI5dWRHRmpkSE09Jy8+CgogICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ndGV4dCcgc3R5bGU9J2Rpc3BsYXk6bm9uZTsnIG5hbWU9J3JldHVyblVSTCcgdmFsdWU9J2h0dHBzOi8vZWxlY3RyaWN5YWNodC5jb20vY29udGFjdC8nIC8+CgogICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6IDIxcHg7IG1hcmdpbi1ib3R0b206IDI1cHg7d29yZC1icmVhazogYnJlYWstd29yZDtwYWRkaW5nLWxlZnQ6IDE1cHg7Ij5Db250YWN0IFVzPC9kaXY+CgogICAgICAgICAgICAgICA8ZGl2IGlkPSJlbGVtZW50RGl2NTMxNDY0MzAwMDAwMDQwMzAwOSIgc3R5bGU9ImJvcmRlcjowO3dpZHRoOiAxMDAlO2JhY2tncm91bmQtY29sb3I6IHdoaXRlO2NvbG9yOmJsYWNrO2ZvbnQtZmFtaWx5OkFyaWFsO3RleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOiAxNTsiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnbi13Zi1yb3ciPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZ24td2YtbGFiZWwiPkZpcnN0IE5hbWUKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJiZ24tc3RhciI+JiM0Mjs8L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZ24td2YtZmllbGQiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9IkZpcnN0IE5hbWUiIHR5cGU9InRleHQiIG1heGxlbmd0aD0iNDAiIHZhbHVlPSIiIHBsYWNlaG9sZGVyPSIiIHN0eWxlPSIgYm9yZGVyOiAxcHggc29saWQgI2UyZTBkZjtwYWRkaW5nOiAxMHB4IDE1cHg7bWF4LXdpZHRoOiA0ODBweDtib3JkZXItcmFkaXVzOjNweDt3aWR0aDogNjAlOyIvPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZ24td2Ytcm93Ij4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmduLXdmLWxhYmVsIj5MYXN0IE5hbWUKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJiZ24tc3RhciI+JiM0Mjs8L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZ24td2YtZmllbGQiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9Ikxhc3QgTmFtZSIgdHlwZT0idGV4dCIgbWF4bGVuZ3RoPSI4MCIgdmFsdWU9IiIgcGxhY2Vob2xkZXI9IiIgc3R5bGU9IiBib3JkZXI6IDFweCBzb2xpZCAjZTJlMGRmO3BhZGRpbmc6IDEwcHggMTVweDttYXgtd2lkdGg6IDQ4MHB4O2JvcmRlci1yYWRpdXM6M3B4O3dpZHRoOiA2MCU7Ii8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnbi13Zi1yb3ciPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZ24td2YtbGFiZWwiPkJvYXQKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJiZ24tc3RhciI+JiM0Mjs8L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZ24td2YtZmllbGQiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9IkNPTlRBQ1RDRjEiIHR5cGU9InRleHQiIG1heGxlbmd0aD0iMjU1IiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iIiBzdHlsZT0iIGJvcmRlcjogMXB4IHNvbGlkICNlMmUwZGY7cGFkZGluZzogMTBweCAxNXB4O21heC13aWR0aDogNDgwcHg7Ym9yZGVyLXJhZGl1czozcHg7d2lkdGg6IDYwJTsiLz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmduLXdmLXJvdyI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnbi13Zi1sYWJlbCI+WW91ciBuZWVkcwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJnbi1zdGFyIj4mIzQyOzwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnbi13Zi1maWVsZCI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgbmFtZT0iRGVzY3JpcHRpb24iIG1heGxlbmd0aD0iMzIwMDAiIHBsYWNlaG9sZGVyPSIiIHN0eWxlPSIgYm9yZGVyOiAxcHggc29saWQgI2UyZTBkZjtwYWRkaW5nOiAxMHB4IDE1cHg7bWF4LXdpZHRoOiA0ODBweDtib3JkZXItcmFkaXVzOjNweDt3aWR0aDogNjAlOyI+PC90ZXh0YXJlYT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmduLXdmLXJvdyI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnbi13Zi1sYWJlbCI+RW1haWwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJiZ24tc3RhciI+JiM0Mjs8L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZ24td2YtZmllbGQiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9IkVtYWlsIiB0eXBlPSJ0ZXh0IiBtYXhsZW5ndGg9IjEwMCIgdmFsdWU9IiIgcGxhY2Vob2xkZXI9IiIgc3R5bGU9IiBib3JkZXI6IDFweCBzb2xpZCAjZTJlMGRmO3BhZGRpbmc6IDEwcHggMTVweDttYXgtd2lkdGg6IDQ4MHB4O2JvcmRlci1yYWRpdXM6M3B4O3dpZHRoOiA2MCU7Ii8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnbi13Zi1yb3ciPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZ24td2YtbGFiZWwiPlBob25lCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYmduLXN0YXIiPiYjNDI7PC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmduLXdmLWZpZWxkIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJQaG9uZSIgdHlwZT0idGV4dCIgbWF4bGVuZ3RoPSI1MCIgdmFsdWU9IiIgcGxhY2Vob2xkZXI9IiIgc3R5bGU9IiBib3JkZXI6IDFweCBzb2xpZCAjZTJlMGRmO3BhZGRpbmc6IDEwcHggMTVweDttYXgtd2lkdGg6IDQ4MHB4O2JvcmRlci1yYWRpdXM6M3B4O3dpZHRoOiA2MCU7Ii8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnbi13Zi1yb3ciPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZ24td2YtbGFiZWwiPk1haWxpbmcgU3RyZWV0CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZ24td2YtZmllbGQiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9Ik1haWxpbmcgU3RyZWV0IiB0eXBlPSJ0ZXh0IiBtYXhsZW5ndGg9IjI1MCIgdmFsdWU9IiIgcGxhY2Vob2xkZXI9IiIgc3R5bGU9IiBib3JkZXI6IDFweCBzb2xpZCAjZTJlMGRmO3BhZGRpbmc6IDEwcHggMTVweDttYXgtd2lkdGg6IDQ4MHB4O2JvcmRlci1yYWRpdXM6M3B4O3dpZHRoOiA2MCU7Ii8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnbi13Zi1yb3ciPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZ24td2YtbGFiZWwiPk1haWxpbmcgQ2l0eQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmduLXdmLWZpZWxkIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJNYWlsaW5nIENpdHkiIHR5cGU9InRleHQiIG1heGxlbmd0aD0iMTAwIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iIiBzdHlsZT0iIGJvcmRlcjogMXB4IHNvbGlkICNlMmUwZGY7cGFkZGluZzogMTBweCAxNXB4O21heC13aWR0aDogNDgwcHg7Ym9yZGVyLXJhZGl1czozcHg7d2lkdGg6IDYwJTsiLz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmduLXdmLXJvdyI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnbi13Zi1sYWJlbCI+TWFpbGluZyBTdGF0ZQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmduLXdmLWZpZWxkIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJNYWlsaW5nIFN0YXRlIiB0eXBlPSJ0ZXh0IiBtYXhsZW5ndGg9IjEwMCIgdmFsdWU9IiIgcGxhY2Vob2xkZXI9IiIgc3R5bGU9IiBib3JkZXI6IDFweCBzb2xpZCAjZTJlMGRmO3BhZGRpbmc6IDEwcHggMTVweDttYXgtd2lkdGg6IDQ4MHB4O2JvcmRlci1yYWRpdXM6M3B4O3dpZHRoOiA2MCU7Ii8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnbi13Zi1yb3ciPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZ24td2YtbGFiZWwiPk1haWxpbmcgWmlwCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZ24td2YtZmllbGQiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9Ik1haWxpbmcgWmlwIiB0eXBlPSJ0ZXh0IiBtYXhsZW5ndGg9IjMwIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iIiBzdHlsZT0iIGJvcmRlcjogMXB4IHNvbGlkICNlMmUwZGY7cGFkZGluZzogMTBweCAxNXB4O21heC13aWR0aDogNDgwcHg7Ym9yZGVyLXJhZGl1czozcHg7d2lkdGg6IDYwJTsiLz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmduLXdmLXJvdyI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnbi13Zi1sYWJlbCI+TWFpbGluZyBDb3VudHJ5CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZ24td2YtZmllbGQiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9Ik1haWxpbmcgQ291bnRyeSIgdHlwZT0idGV4dCIgbWF4bGVuZ3RoPSIxMDAiIHZhbHVlPSIiIHBsYWNlaG9sZGVyPSIiIHN0eWxlPSIgYm9yZGVyOiAxcHggc29saWQgI2UyZTBkZjtwYWRkaW5nOiAxMHB4IDE1cHg7bWF4LXdpZHRoOiA0ODBweDtib3JkZXItcmFkaXVzOjNweDt3aWR0aDogNjAlOyIvPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmduLXdmLXJvdyIgc3R5bGU9Im1hcmdpbi10b3A6IDVweDsiPjxkaXYgY2xhc3M9ImJnbi13Zi1sYWJlbCI+PC9kaXY+PGRpdiBjbGFzcz0iYmduLXdmLWZpZWxkIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG9uY2xpY2s9J2Rpc2FibGVTdWJtaXR3aGlsZVJlc2V0NTMxNDY0MzAwMDAwMDQwMzAwOSgpJyB0eXBlPSdyZXNldCcgc3R5bGU9J21hcmdpbi1yaWdodDogMTBweDttYXJnaW4tYm90dG9tOiAxMHB4O2ZvbnQtc2l6ZToxM3B4O2JvcmRlci1yYWRpdXM6IDNweDt2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO2JhY2tncm91bmQtY29sb3I6ICNmZmY7Ym9yZGVyLWNvbG9yOiAjMjIyO3BhZGRpbmc6IDhweCAxNXB4O2NvbG9yOiAjM2MzYzNjO2JvcmRlcjogc29saWQgMXB4ICNkNGQzZDI7ZGlzcGxheTogaW5saW5lLWJsb2NrO3dpZHRoOiBhdXRvOycgdmFsdWU9J1Jlc2V0JyAvPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9J21hcmdpbi1ib3R0b206IDEwcHg7IG9wYWNpdHk6OyBmb250LXNpemU6MTNweDtjb2xvcjogI2ZmZjtib3JkZXItcmFkaXVzOiAzcHg7dmVydGljYWwtYWxpZ246IG1pZGRsZTtiYWNrZ3JvdW5kLWNvbG9yOiAjMTk4MGQ4O2JvcmRlci1jb2xvcjogIzE5ODBkODtwYWRkaW5nOiA4cHggMTVweDtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7d2lkdGg6IGF1dG87JyAgaWQ9J2Zvcm1zdWJtaXQ1MzE0NjQzMDAwMDAwNDAzMDA5JyB0eXBlPSdzdWJtaXQnIHZhbHVlPSdTdWJtaXQnIC8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kaXY+CgogICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgIDxzY3JpcHQ+CgogICAgICAgICAgICAgIAoKIGZ1bmN0aW9uIGRpc2FibGVTdWJtaXR3aGlsZVJlc2V0NTMxNDY0MzAwMDAwMDQwMzAwOSgpIHsKCiAgICAgICAgICAgICAgIHZhciBzdWJtaXRidXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybXN1Ym1pdDUzMTQ2NDMwMDAwMDA0MDMwMDknKTsKCiAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJpdmFjeVRvb2w1MzE0NjQzMDAwMDAwNDAzMDA5JykgIT09IG51bGwgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNlbnRUb29sJykgIT09IG51bGwpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXRidXR0b24uZGlzYWJsZWQgPSB0cnVlOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym1pdGJ1dHRvbi5zdHlsZS5vcGFjaXR5ID0gJzAuNTsnOwoKICAgICAgICAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXRidXR0b24ucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpOwoKICAgICAgICAgICAgICAgfQoKfQoKZnVuY3Rpb24gY2hlY2tNYW5kYXRvcnk1MzE0NjQzMDAwMDAwNDAzMDA5KCkgewoKICAgICAgICAgICAgICAgIHZhciBtbmRGaWVsZHM9bmV3IEFycmF5KCdGaXJzdCBOYW1lJywnTGFzdCBOYW1lJywnQ09OVEFDVENGMScsJ0Rlc2NyaXB0aW9uJywnRW1haWwnLCdQaG9uZScpOwoKICAgICAgICAgICAgICAgIHZhciBmbGRMYW5nVmFsPW5ldyBBcnJheSgnRmlyc3QgTmFtZScsJ0xhc3QgTmFtZScsJ0JvYXQnLCdZb3VyIG5lZWRzJywnRW1haWwnLCdQaG9uZScpOwoKICAgICAgICAgICAgICAgIHZhciBpOwoKICAgICAgICAgICAgICAgIHZhciBtbmRGaWVsZHNsZW5ndGg9bW5kRmllbGRzLmxlbmd0aDsKCiAgICAgICAgICAgICAgICB2YXIgZmllbGRPYmo7CgogICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1uZEZpZWxkc2xlbmd0aDsgaSsrKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRPYmogPSBkb2N1bWVudC5mb3Jtcy5CaWdpbldlYlRvQ29udGFjdEZvcm01MzE0NjQzMDAwMDAwNDAzMDA5W21uZEZpZWxkc1tpXV07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkT2JqKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZE9iai52YWx1ZS5yZXBsYWNlKC9ecyt8cyskL2csICcnKS5sZW5ndGggPT09IDApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZE9iai50eXBlID09PSAnZmlsZScpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydCgnUGxlYXNlIHNlbGVjdCBhIGZpbGUgdG8gdXBsb2FkLicpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkT2JqLmZvY3VzKCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoZmxkTGFuZ1ZhbFtpXSArICcgY2Fubm90IGJlIGVtcHR5LicpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRPYmouZm9jdXMoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZE9iai5ub2RlTmFtZSA9PT0gJ1NFTEVDVCcpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZE9iai5vcHRpb25zW2ZpZWxkT2JqLnNlbGVjdGVkSW5kZXhdLnZhbHVlID09PSAnLU5vbmUtJykgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KGZsZExhbmdWYWxbaV0gKyAnIGNhbm5vdCBiZSBub25lLicpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkT2JqLmZvY3VzKCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkT2JqLnR5cGUgPT09ICdjaGVja2JveCcpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZE9iai5jaGVja2VkID09PSBmYWxzZSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KCdQbGVhc2UgYWNjZXB0ICAnICsgZmxkTGFuZ1ZhbFtpXSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRPYmouZm9jdXMoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkT2JqLm5hbWUgPT09ICdMYXN0IE5hbWUnICYmIGZpZWxkT2JqLnZhbHVlKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gZmllbGRPYmoudmFsdWU7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKCn0KCiAgICAgICAgICAgICAgIGZ1bmN0aW9uIHZhbGlkYXRlRmlsZVVwbG9hZCgpe3ZhciBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aGVGaWxlIiksdD0wO2lmKGUpe2lmKGUuZmlsZXMubGVuZ3RoPjMpcmV0dXJuIGFsZXJ0KCJZb3UgY2FuIHVwbG9hZCBhIG1heGltdW0gb2YgdGhyZWUgZmlsZXMgYXQgYSB0aW1lLiIpLCExO2lmKCJmaWxlcyJpbiBlKXt2YXIgaT1lLmZpbGVzLmxlbmd0aDtpZigwIT09aSl7Zm9yKHZhciBvPTA7bzxpO28rKyl7dmFyIGE9ZS5maWxlc1tvXTsic2l6ZSJpbiBhJiYodCs9YS5zaXplKX1pZih0PjIwOTcxNTIwKXJldHVybiBhbGVydCgiVG90YWwgZmlsZShzKSBzaXplIHNob3VsZCBub3QgZXhjZWVkIDIwTUIuIiksITF9fX1yZXR1cm4hMH08L3NjcmlwdD4KCiAgICAgICAgICAgICAgICA8c2NyaXB0IGlkPSd3Zl9zY3JpcHQnIHNyYz0naHR0cHM6Ly9iaWdpbi56b2hvLmNvbS9jcm0vV2ViZm9ybVNjcmlwdFNlcnZsZXQ/cmlkPTYyZTIzZTQ1NjQzMTlkYTFjYjk4ZmE4ZmFhNTE3YzFiOTE0MjRhMjZhYTAxYTMzNTViZGRkYTVlZDI2MDQ5NjlnaWQzNzY0OTkwZjM0Nzc1NzlhMzc4MGU0Y2EzM2IxMjQ3NDFkYzQ2MWQ3MWNlY2E1YmRlZmUzOTNhM2I1NjQwZWZlJz48L3NjcmlwdD4KCjwvZm9ybT4KCjwvZGl2Pg==[/fusion_code][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]