Communication Preferences

[fusion_builder_container hundred_percent=”no” equal_height_columns=”no” menu_anchor=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” 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_size=”” border_color=”” border_style=”solid” margin_top=”” margin_bottom=”” padding_top=”” padding_right=”” padding_bottom=”” padding_left=””][fusion_builder_row][fusion_builder_column type=”1_1″ spacing=”” center_content=”no” hover_type=”none” link=”” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” background_color=”” background_image=”” background_position=”left top” background_repeat=”no-repeat” border_size=”0″ border_color=”” border_style=”solid” border_position=”all” padding=”” dimension_margin=”undefined” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_code]Jmx0O3N0eWxlJmd0OwogI19mb3JtXzNfIHsgZm9udC1zaXplOjE0cHg7IGxpbmUtaGVpZ2h0OjEuNjsgZm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgc2Fucy1zZXJpZjsgbWFyZ2luOjA7IH0KICNfZm9ybV8zXyAqIHsgb3V0bGluZTowOyB9CiAuX2Zvcm1faGlkZSB7IGRpc3BsYXk6bm9uZTsgdmlzaWJpbGl0eTpoaWRkZW47IH0KIC5fZm9ybV9zaG93IHsgZGlzcGxheTpibG9jazsgdmlzaWJpbGl0eTp2aXNpYmxlOyB9CiAjX2Zvcm1fM18uX2Zvcm0tdG9wIHsgdG9wOjA7IH0KICNfZm9ybV8zXy5fZm9ybS1ib3R0b20geyBib3R0b206MDsgfQogI19mb3JtXzNfLl9mb3JtLWxlZnQgeyBsZWZ0OjA7IH0KICNfZm9ybV8zXy5fZm9ybS1yaWdodCB7IHJpZ2h0OjA7IH0KICNfZm9ybV8zXyBpbnB1dFt0eXBlPSZxdW90O3RleHQmcXVvdDtdLCNfZm9ybV8zXyBpbnB1dFt0eXBlPSZxdW90O2RhdGUmcXVvdDtdLCNfZm9ybV8zXyB0ZXh0YXJlYSB7IHBhZGRpbmc6NnB4OyBoZWlnaHQ6YXV0bzsgYm9yZGVyOiM5Nzk3OTcgMXB4IHNvbGlkOyBib3JkZXItcmFkaXVzOjRweDsgY29sb3I6IzAwMCAhaW1wb3J0YW50OyBmb250LXNpemU6MTNweDsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0KICNfZm9ybV8zXyB0ZXh0YXJlYSB7IHJlc2l6ZTpub25lOyB9CiAjX2Zvcm1fM18gLl9zdWJtaXQgeyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgY3Vyc29yOnBvaW50ZXI7IGZvbnQtZmFtaWx5OmFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6MTRweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6IzMzMyAhaW1wb3J0YW50OyBib3JkZXI6MCAhaW1wb3J0YW50OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4ICFpbXBvcnRhbnQ7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHggIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czo0cHggIWltcG9ydGFudDsgY29sb3I6I2ZmZiAhaW1wb3J0YW50OyBwYWRkaW5nOjEwcHggIWltcG9ydGFudDsgfQogI19mb3JtXzNfIC5fY2xvc2UtaWNvbiB7IGN1cnNvcjpwb2ludGVyOyBiYWNrZ3JvdW5kLWltYWdlOnVybCgmI3gyNztodHRwczovL2QyMjZhajRhbzF0NjFxLmNsb3VkZnJvbnQubmV0L2VzZmt5amgxdV9mb3Jtcy1jbG9zZS1kYXJrLnBuZyYjeDI3Oyk7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjE0LjJweCAxNC4ycHg7IHBvc2l0aW9uOmFic29sdXRlOyBkaXNwbGF5OmJsb2NrOyB0b3A6MTFweDsgcmlnaHQ6OXB4OyBvdmVyZmxvdzpoaWRkZW47IHdpZHRoOjE2LjJweDsgaGVpZ2h0OjE2LjJweDsgfQogI19mb3JtXzNfIC5fY2xvc2UtaWNvbjpiZWZvcmUgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfQogI19mb3JtXzNfIC5fZm9ybS1ib2R5IHsgbWFyZ2luLWJvdHRvbTozMHB4OyB9CiAjX2Zvcm1fM18gLl9mb3JtLWltYWdlLWxlZnQgeyB3aWR0aDoxNTBweDsgZmxvYXQ6bGVmdDsgfQogI19mb3JtXzNfIC5fZm9ybS1jb250ZW50LXJpZ2h0IHsgbWFyZ2luLWxlZnQ6MTY0cHg7IH0KICNfZm9ybV8zXyAuX2Zvcm0tYnJhbmRpbmcgeyBjb2xvcjojZmZmOyBmb250LXNpemU6MTBweDsgY2xlYXI6Ym90aDsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW4tdG9wOjMwcHg7IGZvbnQtd2VpZ2h0OjEwMDsgfQogI19mb3JtXzNfIC5fZm9ybS1icmFuZGluZyAuX2xvZ28geyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMzBweDsgaGVpZ2h0OjE0cHg7IG1hcmdpbi10b3A6NnB4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgmI3gyNztodHRwczovL2QyMjZhajRhbzF0NjFxLmNsb3VkZnJvbnQubmV0L2hoOXVqcWd2NV9hY2xvZ29fbGkucG5nJiN4Mjc7KTsgYmFja2dyb3VuZC1zaXplOjEzMHB4IGF1dG87IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgfQogI19mb3JtXzNfIC5fZm9ybS1sYWJlbCwjX2Zvcm1fM18gLl9mb3JtX2VsZW1lbnQgLl9mb3JtLWxhYmVsIHsgZm9udC13ZWlnaHQ6Ym9sZDsgbWFyZ2luLWJvdHRvbTo1cHg7IGRpc3BsYXk6YmxvY2s7IH0KICNfZm9ybV8zXy5fZGFyayAuX2Zvcm0tYnJhbmRpbmcgeyBjb2xvcjojMzMzOyB9CiAjX2Zvcm1fM18uX2RhcmsgLl9mb3JtLWJyYW5kaW5nIC5fbG9nbyB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCYjeDI3O2h0dHBzOi8vZDIyNmFqNGFvMXQ2MXEuY2xvdWRmcm9udC5uZXQvamZ0cTJjOHNfYWNsb2dvX2RrLnBuZyYjeDI3Oyk7IH0KICNfZm9ybV8zXyAuX2Zvcm1fZWxlbWVudCB7IHBvc2l0aW9uOnJlbGF0aXZlOyBtYXJnaW4tYm90dG9tOjEwcHg7IGZvbnQtc2l6ZTowOyBtYXgtd2lkdGg6MTAwJTsgfQogI19mb3JtXzNfIC5fZm9ybV9lbGVtZW50ICogeyBmb250LXNpemU6MTRweDsgfQogI19mb3JtXzNfIC5fZm9ybV9lbGVtZW50Ll9jbGVhciB7IGNsZWFyOmJvdGg7IHdpZHRoOjEwMCU7IGZsb2F0Om5vbmU7IH0KICNfZm9ybV8zXyAuX2Zvcm1fZWxlbWVudC5fY2xlYXI6YWZ0ZXIgeyBjbGVhcjpsZWZ0OyB9CiAjX2Zvcm1fM18gLl9mb3JtX2VsZW1lbnQgaW5wdXRbdHlwZT0mcXVvdDt0ZXh0JnF1b3Q7XSwjX2Zvcm1fM18gLl9mb3JtX2VsZW1lbnQgaW5wdXRbdHlwZT0mcXVvdDtkYXRlJnF1b3Q7XSwjX2Zvcm1fM18gLl9mb3JtX2VsZW1lbnQgc2VsZWN0LCNfZm9ybV8zXyAuX2Zvcm1fZWxlbWVudCB0ZXh0YXJlYTpub3QoLmctcmVjYXB0Y2hhLXJlc3BvbnNlKSB7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjEwMCU7IC13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94OyAtbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgYm94LXNpemluZzpib3JkZXItYm94OyB9CiAjX2Zvcm1fM18gLl9maWVsZC13cmFwcGVyIHsgcG9zaXRpb246cmVsYXRpdmU7IH0KICNfZm9ybV8zXyAuX2lubGluZS1zdHlsZSB7IGZsb2F0OmxlZnQ7IH0KICNfZm9ybV8zXyAuX2lubGluZS1zdHlsZSBpbnB1dFt0eXBlPSZxdW90O3RleHQmcXVvdDtdIHsgd2lkdGg6MTUwcHg7IH0KICNfZm9ybV8zXyAuX2lubGluZS1zdHlsZTpub3QoLl9jbGVhcikgKyAuX2lubGluZS1zdHlsZTpub3QoLl9jbGVhcikgeyBtYXJnaW4tbGVmdDoyMHB4OyB9CiAjX2Zvcm1fM18gLl9mb3JtX2VsZW1lbnQgaW1nLl9mb3JtLWltYWdlIHsgbWF4LXdpZHRoOjEwMCU7IH0KICNfZm9ybV8zXyAuX2NsZWFyLWVsZW1lbnQgeyBjbGVhcjpsZWZ0OyB9CiAjX2Zvcm1fM18gLl9mdWxsX3dpZHRoIHsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzNfIC5fZm9ybV9mdWxsX2ZpZWxkIHsgZGlzcGxheTpibG9jazsgd2lkdGg6MTAwJTsgbWFyZ2luLWJvdHRvbToxMHB4OyB9CiAjX2Zvcm1fM18gaW5wdXRbdHlwZT0mcXVvdDt0ZXh0JnF1b3Q7XS5faGFzX2Vycm9yLCNfZm9ybV8zXyB0ZXh0YXJlYS5faGFzX2Vycm9yIHsgYm9yZGVyOiNmMzdjN2IgMXB4IHNvbGlkOyB9CiAjX2Zvcm1fM18gaW5wdXRbdHlwZT0mcXVvdDtjaGVja2JveCZxdW90O10uX2hhc19lcnJvciB7IG91dGxpbmU6I2YzN2M3YiAxcHggc29saWQ7IH0KICNfZm9ybV8zXyAuX2Vycm9yIHsgZGlzcGxheTpibG9jazsgcG9zaXRpb246YWJzb2x1dGU7IGZvbnQtc2l6ZToxM3B4OyB6LWluZGV4OjEwMDAwMDAxOyB9CiAjX2Zvcm1fM18gLl9lcnJvci5fYWJvdmUgeyBwYWRkaW5nLWJvdHRvbTo0cHg7IHRvcDotNDFweDsgcmlnaHQ6MDsgfQogI19mb3JtXzNfIC5fZXJyb3IuX2JlbG93IHsgcGFkZGluZy10b3A6NHB4OyB0b3A6MTAwJTsgcmlnaHQ6MDsgfQogI19mb3JtXzNfIC5fZXJyb3IuX2Fib3ZlIC5fZXJyb3ItYXJyb3cgeyBib3R0b206MDsgcmlnaHQ6MTVweDsgYm9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjVweCBzb2xpZCAjZjM3YzdiOyB9CiAjX2Zvcm1fM18gLl9lcnJvci5fYmVsb3cgLl9lcnJvci1hcnJvdyB7IHRvcDowOyByaWdodDoxNXB4OyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1ib3R0b206NXB4IHNvbGlkICNmMzdjN2I7IH0KICNfZm9ybV8zXyAuX2Vycm9yLWlubmVyIHsgcGFkZGluZzo4cHggMTJweDsgYmFja2dyb3VuZC1jb2xvcjojZjM3YzdiOyBmb250LXNpemU6MTNweDsgZm9udC1mYW1pbHk6YXJpYWwsIHNhbnMtc2VyaWY7IGNvbG9yOiNmZmY7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IH0KICNfZm9ybV8zXyAuX2Vycm9yLWlubmVyLl9mb3JtX2Vycm9yIHsgbWFyZ2luLWJvdHRvbTo1cHg7IHRleHQtYWxpZ246bGVmdDsgfQogI19mb3JtXzNfIC5fYnV0dG9uLXdyYXBwZXIgLl9lcnJvci1pbm5lci5fZm9ybV9lcnJvciB7IHBvc2l0aW9uOnN0YXRpYzsgfQogI19mb3JtXzNfIC5fZXJyb3ItaW5uZXIuX25vX2Fycm93IHsgbWFyZ2luLWJvdHRvbToxMHB4OyB9CiAjX2Zvcm1fM18gLl9lcnJvci1hcnJvdyB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDowOyBoZWlnaHQ6MDsgfQogI19mb3JtXzNfIC5fZXJyb3ItaHRtbCB7IG1hcmdpbi1ib3R0b206MTBweDsgfQogLnBpa2Etc2luZ2xlIHsgei1pbmRleDoxMDAwMDAwMSAhaW1wb3J0YW50OyB9CiBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjMyMHB4KSBhbmQgKG1heC13aWR0aDo2NjdweCkgeyA6Oi13ZWJraXQtc2Nyb2xsYmFyIHsgZGlzcGxheTpub25lOyB9CiAjX2Zvcm1fM18geyBtYXJnaW46MDsgd2lkdGg6MTAwJTsgbWluLXdpZHRoOjEwMCU7IG1heC13aWR0aDoxMDAlOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0KICNfZm9ybV8zXyAqIHsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IGZvbnQtc2l6ZToxZW07IH0KICNfZm9ybV8zXyAuX2Zvcm0tY29udGVudCB7IG1hcmdpbjowOyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fM18gLl9mb3JtLWlubmVyIHsgZGlzcGxheTpibG9jazsgbWluLXdpZHRoOjEwMCU7IH0KICNfZm9ybV8zXyAuX2Zvcm0tdGl0bGUsI19mb3JtXzNfIC5faW5saW5lLXN0eWxlIHsgbWFyZ2luLXRvcDowOyBtYXJnaW4tcmlnaHQ6MDsgbWFyZ2luLWxlZnQ6MDsgfQogI19mb3JtXzNfIC5fZm9ybS10aXRsZSB7IGZvbnQtc2l6ZToxLjJlbTsgfQogI19mb3JtXzNfIC5fZm9ybV9lbGVtZW50IHsgbWFyZ2luOjAgMCAyMHB4OyBwYWRkaW5nOjA7IHdpZHRoOjEwMCU7IH0KICNfZm9ybV8zXyAuX2Zvcm0tZWxlbWVudCwjX2Zvcm1fM18gLl9pbmxpbmUtc3R5bGUsI19mb3JtXzNfIGlucHV0W3R5cGU9JnF1b3Q7dGV4dCZxdW90O10sI19mb3JtXzNfIGxhYmVsLCNfZm9ybV8zXyBwLCNfZm9ybV8zXyB0ZXh0YXJlYTpub3QoLmctcmVjYXB0Y2hhLXJlc3BvbnNlKSB7IGZsb2F0Om5vbmU7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjEwMCU7IH0KICNfZm9ybV8zXyAuX3Jvdy5fY2hlY2tib3gtcmFkaW8gbGFiZWwgeyBkaXNwbGF5OmlubGluZTsgfQogI19mb3JtXzNfIC5fcm93LCNfZm9ybV8zXyBwLCNfZm9ybV8zXyBsYWJlbCB7IG1hcmdpbi1ib3R0b206MC43ZW07IHdpZHRoOjEwMCU7IH0KICNfZm9ybV8zXyAuX3JvdyBpbnB1dFt0eXBlPSZxdW90O2NoZWNrYm94JnF1b3Q7XSwjX2Zvcm1fM18gLl9yb3cgaW5wdXRbdHlwZT0mcXVvdDtyYWRpbyZxdW90O10geyBtYXJnaW46MCAhaW1wb3J0YW50OyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGUgIWltcG9ydGFudDsgfQogI19mb3JtXzNfIC5fcm93IGlucHV0W3R5cGU9JnF1b3Q7Y2hlY2tib3gmcXVvdDtdICsgc3BhbiBsYWJlbCB7IGRpc3BsYXk6aW5saW5lOyB9CiAjX2Zvcm1fM18gLl9yb3cgc3BhbiBsYWJlbCB7IG1hcmdpbjowICFpbXBvcnRhbnQ7IHdpZHRoOmluaXRpYWwgIWltcG9ydGFudDsgdmVydGljYWwtYWxpZ246bWlkZGxlICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zXyAuX2Zvcm0taW1hZ2UgeyBtYXgtd2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG8gIWltcG9ydGFudDsgfQogI19mb3JtXzNfIGlucHV0W3R5cGU9JnF1b3Q7dGV4dCZxdW90O10geyBwYWRkaW5nLWxlZnQ6MTBweDsgcGFkZGluZy1yaWdodDoxMHB4OyBmb250LXNpemU6MTZweDsgbGluZS1oZWlnaHQ6MS4zZW07IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyB9CiAjX2Zvcm1fM18gaW5wdXRbdHlwZT0mcXVvdDtyYWRpbyZxdW90O10sI19mb3JtXzNfIGlucHV0W3R5cGU9JnF1b3Q7Y2hlY2tib3gmcXVvdDtdIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHdpZHRoOjEuM2VtOyBoZWlnaHQ6MS4zZW07IGZvbnQtc2l6ZToxZW07IG1hcmdpbjowIDAuM2VtIDAgMDsgdmVydGljYWwtYWxpZ246YmFzZWxpbmU7IH0KICNfZm9ybV8zXyBidXR0b25bdHlwZT0mcXVvdDtzdWJtaXQmcXVvdDtdIHsgcGFkZGluZzoyMHB4OyBmb250LXNpemU6MS41ZW07IH0KICNfZm9ybV8zXyAuX2lubGluZS1zdHlsZSB7IG1hcmdpbjoyMHB4IDAgMCAhaW1wb3J0YW50OyB9CiB9CiAjX2Zvcm1fM18geyBwb3NpdGlvbjpyZWxhdGl2ZTsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW46MjVweCBhdXRvIDA7IHBhZGRpbmc6MjBweDsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7ICp6b29tOjE7IGJhY2tncm91bmQ6I2ZmZiAhaW1wb3J0YW50OyBib3JkZXI6MHB4IHNvbGlkICNiMGIwYjAgIWltcG9ydGFudDsgd2lkdGg6NTAwcHg7IC1tb3otYm9yZGVyLXJhZGl1czowcHggIWltcG9ydGFudDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjBweCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjBweCAhaW1wb3J0YW50OyBjb2xvcjojMDAwICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zXyAuX2Zvcm0tdGl0bGUgeyBmb250LXNpemU6MjJweDsgbGluZS1oZWlnaHQ6MjJweDsgZm9udC13ZWlnaHQ6NjAwOyBtYXJnaW4tYm90dG9tOjA7IH0KICNfZm9ybV8zXzpiZWZvcmUsI19mb3JtXzNfOmFmdGVyIHsgY29udGVudDomcXVvdDsgJnF1b3Q7OyBkaXNwbGF5OnRhYmxlOyB9CiAjX2Zvcm1fM186YWZ0ZXIgeyBjbGVhcjpib3RoOyB9CiAjX2Zvcm1fM18uX2lubGluZS1zdHlsZSB7IHdpZHRoOmF1dG87IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9CiAjX2Zvcm1fM18uX2lubGluZS1zdHlsZSBpbnB1dFt0eXBlPSZxdW90O3RleHQmcXVvdDtdLCNfZm9ybV8zXy5faW5saW5lLXN0eWxlIGlucHV0W3R5cGU9JnF1b3Q7ZGF0ZSZxdW90O10geyBwYWRkaW5nOjEwcHggMTJweDsgfQogI19mb3JtXzNfLl9pbmxpbmUtc3R5bGUgYnV0dG9uLl9pbmxpbmUtc3R5bGUgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjI3cHg7IH0KICNfZm9ybV8zXy5faW5saW5lLXN0eWxlIHAgeyBtYXJnaW46MDsgfQogI19mb3JtXzNfLl9pbmxpbmUtc3R5bGUgLl9idXR0b24td3JhcHBlciB7IHBvc2l0aW9uOnJlbGF0aXZlOyBtYXJnaW46MjdweCAxMi41cHggMCAyMHB4OyB9CiAjX2Zvcm1fM18gLl9mb3JtLXRoYW5rLXlvdSB7IHBvc2l0aW9uOnJlbGF0aXZlOyBsZWZ0OjA7IHJpZ2h0OjA7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MThweDsgfQogQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDozMjBweCkgYW5kIChtYXgtd2lkdGg6NjY3cHgpIHsgI19mb3JtXzNfLl9pbmxpbmUtZm9ybS5faW5saW5lLXN0eWxlIC5faW5saW5lLXN0eWxlLl9idXR0b24td3JhcHBlciB7IG1hcmdpbi10b3A6MjBweCAhaW1wb3J0YW50OyBtYXJnaW4tbGVmdDowICFpbXBvcnRhbnQ7IH0KIH0KJmx0Oy9zdHlsZSZndDsKJmx0O2Zvcm0gbWV0aG9kPSZxdW90O1BPU1QmcXVvdDsgYWN0aW9uPSZxdW90O2h0dHBzOi8vYXV0b21hdGVseS5hY3RpdmVob3N0ZWQuY29tL3Byb2MucGhwJnF1b3Q7IGlkPSZxdW90O19mb3JtXzNfJnF1b3Q7IGNsYXNzPSZxdW90O19mb3JtIF9mb3JtXzMgX2lubGluZS1mb3JtICBfZGFyayZxdW90OyBub3ZhbGlkYXRlJmd0OwogICZsdDtpbnB1dCB0eXBlPSZxdW90O2hpZGRlbiZxdW90OyBuYW1lPSZxdW90O3UmcXVvdDsgdmFsdWU9JnF1b3Q7MyZxdW90OyAvJmd0OwogICZsdDtpbnB1dCB0eXBlPSZxdW90O2hpZGRlbiZxdW90OyBuYW1lPSZxdW90O2YmcXVvdDsgdmFsdWU9JnF1b3Q7MyZxdW90OyAvJmd0OwogICZsdDtpbnB1dCB0eXBlPSZxdW90O2hpZGRlbiZxdW90OyBuYW1lPSZxdW90O3MmcXVvdDsgLyZndDsKICAmbHQ7aW5wdXQgdHlwZT0mcXVvdDtoaWRkZW4mcXVvdDsgbmFtZT0mcXVvdDtjJnF1b3Q7IHZhbHVlPSZxdW90OzAmcXVvdDsgLyZndDsKICAmbHQ7aW5wdXQgdHlwZT0mcXVvdDtoaWRkZW4mcXVvdDsgbmFtZT0mcXVvdDttJnF1b3Q7IHZhbHVlPSZxdW90OzAmcXVvdDsgLyZndDsKICAmbHQ7aW5wdXQgdHlwZT0mcXVvdDtoaWRkZW4mcXVvdDsgbmFtZT0mcXVvdDthY3QmcXVvdDsgdmFsdWU9JnF1b3Q7c3ViJnF1b3Q7IC8mZ3Q7CiAgJmx0O2lucHV0IHR5cGU9JnF1b3Q7aGlkZGVuJnF1b3Q7IG5hbWU9JnF1b3Q7diZxdW90OyB2YWx1ZT0mcXVvdDsyJnF1b3Q7IC8mZ3Q7CiAgJmx0O2RpdiBjbGFzcz0mcXVvdDtfZm9ybS1jb250ZW50JnF1b3Q7Jmd0OwogICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtfZm9ybV9lbGVtZW50IF94NjkyODgyODIgX2Z1bGxfd2lkdGggX2NsZWFyJnF1b3Q7ICZndDsKICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtfZm9ybS10aXRsZSZxdW90OyZndDsKICAgICAgICBVcGRhdGUgeW91ciBzdWJzY3JpcHRpb24gcHJlZmVyZW5jZXMKICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAmbHQ7L2RpdiZndDsKICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7X2Zvcm1fZWxlbWVudCBfeDU5MTMxMDI4IF9mdWxsX3dpZHRoIF9jbGVhciZxdW90OyAmZ3Q7CiAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7X2h0bWwtY29kZSZxdW90OyZndDsKICAgICAgICAmbHQ7cCZndDsKICAgICAgICAgIFBsZWFzZSB1c2UgdGhlIGZvbGxvd2luZyBmb3JtIHRvIHVwZGF0ZSB5b3VyIHN1YnNjcmlwdGlvbiBwcmVmZXJlbmNlcwogICAgICAgICZsdDsvcCZndDsKICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAmbHQ7L2RpdiZndDsKICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7X2Zvcm1fZWxlbWVudCBfeDA0MDMxMzUwIF9mdWxsX3dpZHRoICZxdW90OyAmZ3Q7CiAgICAgICZsdDtsYWJlbCBjbGFzcz0mcXVvdDtfZm9ybS1sYWJlbCZxdW90OyZndDsKICAgICAgICBGdWxsIE5hbWUKICAgICAgJmx0Oy9sYWJlbCZndDsKICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtfZmllbGQtd3JhcHBlciZxdW90OyZndDsKICAgICAgICAmbHQ7aW5wdXQgdHlwZT0mcXVvdDt0ZXh0JnF1b3Q7IG5hbWU9JnF1b3Q7ZnVsbG5hbWUmcXVvdDsgcGxhY2Vob2xkZXI9JnF1b3Q7VHlwZSB5b3VyIG5hbWUmcXVvdDsgLyZndDsKICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAmbHQ7L2RpdiZndDsKICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7X2Zvcm1fZWxlbWVudCBfeDIyNjM2NDg2IF9mdWxsX3dpZHRoICZxdW90OyAmZ3Q7CiAgICAgICZsdDtsYWJlbCBjbGFzcz0mcXVvdDtfZm9ybS1sYWJlbCZxdW90OyZndDsKICAgICAgICBFbWFpbCoKICAgICAgJmx0Oy9sYWJlbCZndDsKICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtfZmllbGQtd3JhcHBlciZxdW90OyZndDsKICAgICAgICAmbHQ7aW5wdXQgdHlwZT0mcXVvdDt0ZXh0JnF1b3Q7IG5hbWU9JnF1b3Q7ZW1haWwmcXVvdDsgcGxhY2Vob2xkZXI9JnF1b3Q7VHlwZSB5b3VyIGVtYWlsJnF1b3Q7IHJlcXVpcmVkLyZndDsKICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAmbHQ7L2RpdiZndDsKICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7X2Zvcm1fZWxlbWVudCBfZmllbGQ1IF9mdWxsX3dpZHRoICZxdW90OyAmZ3Q7CiAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7X3JvdyZxdW90OyZndDsKICAgICAgICAmbHQ7bGFiZWwgY2xhc3M9JnF1b3Q7X2Zvcm0tbGFiZWwmcXVvdDsmZ3Q7CiAgICAgICAgICBTdWJzY3JpcHRpb24gUHJlZmVyZW5jZXMKICAgICAgICAmbHQ7L2xhYmVsJmd0OwogICAgICAmbHQ7L2RpdiZndDsKICAgICAgJmx0O2lucHV0IHR5cGU9JnF1b3Q7aGlkZGVuJnF1b3Q7IG5hbWU9JnF1b3Q7ZmllbGRbNV1bXSZxdW90OyB2YWx1ZT0mcXVvdDt+fCZxdW90OyZndDsKICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtfcm93IF9jaGVja2JveC1yYWRpbyZxdW90OyZndDsKICAgICAgICAmbHQ7aW5wdXQgaWQ9JnF1b3Q7ZmllbGRfNVByb2R1Y3QgLyBmZWF0dXJlIHVwZGF0ZXMmcXVvdDsgdHlwZT0mcXVvdDtjaGVja2JveCZxdW90OyBuYW1lPSZxdW90O2ZpZWxkWzVdW10mcXVvdDsgdmFsdWU9JnF1b3Q7UHJvZHVjdCAvIGZlYXR1cmUgdXBkYXRlcyZxdW90OyAgICZndDsKICAgICAgICAmbHQ7c3BhbiZndDsKICAgICAgICAgICZsdDtsYWJlbCBmb3I9JnF1b3Q7ZmllbGRfNVByb2R1Y3QgLyBmZWF0dXJlIHVwZGF0ZXMmcXVvdDsmZ3Q7CiAgICAgICAgICAgIFByb2R1Y3QgLyBmZWF0dXJlIHVwZGF0ZXMKICAgICAgICAgICZsdDsvbGFiZWwmZ3Q7CiAgICAgICAgJmx0Oy9zcGFuJmd0OwogICAgICAmbHQ7L2RpdiZndDsKICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtfcm93IF9jaGVja2JveC1yYWRpbyZxdW90OyZndDsKICAgICAgICAmbHQ7aW5wdXQgaWQ9JnF1b3Q7ZmllbGRfNU5ld3NsZXR0ZXImcXVvdDsgdHlwZT0mcXVvdDtjaGVja2JveCZxdW90OyBuYW1lPSZxdW90O2ZpZWxkWzVdW10mcXVvdDsgdmFsdWU9JnF1b3Q7TmV3c2xldHRlciZxdW90OyAgICZndDsKICAgICAgICAmbHQ7c3BhbiZndDsKICAgICAgICAgICZsdDtsYWJlbCBmb3I9JnF1b3Q7ZmllbGRfNU5ld3NsZXR0ZXImcXVvdDsmZ3Q7CiAgICAgICAgICAgIE5ld3NsZXR0ZXIKICAgICAgICAgICZsdDsvbGFiZWwmZ3Q7CiAgICAgICAgJmx0Oy9zcGFuJmd0OwogICAgICAmbHQ7L2RpdiZndDsKICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtfcm93IF9jaGVja2JveC1yYWRpbyZxdW90OyZndDsKICAgICAgICAmbHQ7aW5wdXQgaWQ9JnF1b3Q7ZmllbGRfNU1hcmtldGluZyB1cGRhdGVzJnF1b3Q7IHR5cGU9JnF1b3Q7Y2hlY2tib3gmcXVvdDsgbmFtZT0mcXVvdDtmaWVsZFs1XVtdJnF1b3Q7IHZhbHVlPSZxdW90O01hcmtldGluZyB1cGRhdGVzJnF1b3Q7ICAgJmd0OwogICAgICAgICZsdDtzcGFuJmd0OwogICAgICAgICAgJmx0O2xhYmVsIGZvcj0mcXVvdDtmaWVsZF81TWFya2V0aW5nIHVwZGF0ZXMmcXVvdDsmZ3Q7CiAgICAgICAgICAgIE1hcmtldGluZyB1cGRhdGVzCiAgICAgICAgICAmbHQ7L2xhYmVsJmd0OwogICAgICAgICZsdDsvc3BhbiZndDsKICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7X3JvdyBfY2hlY2tib3gtcmFkaW8mcXVvdDsmZ3Q7CiAgICAgICAgJmx0O2lucHV0IGlkPSZxdW90O2ZpZWxkXzVDbGllbnQgc3BlY2lmaWMgY29tbXVuaWNhdGlvbiZxdW90OyB0eXBlPSZxdW90O2NoZWNrYm94JnF1b3Q7IG5hbWU9JnF1b3Q7ZmllbGRbNV1bXSZxdW90OyB2YWx1ZT0mcXVvdDtDbGllbnQgc3BlY2lmaWMgY29tbXVuaWNhdGlvbiZxdW90OyAgICZndDsKICAgICAgICAmbHQ7c3BhbiZndDsKICAgICAgICAgICZsdDtsYWJlbCBmb3I9JnF1b3Q7ZmllbGRfNUNsaWVudCBzcGVjaWZpYyBjb21tdW5pY2F0aW9uJnF1b3Q7Jmd0OwogICAgICAgICAgICBDbGllbnQgc3BlY2lmaWMgY29tbXVuaWNhdGlvbgogICAgICAgICAgJmx0Oy9sYWJlbCZndDsKICAgICAgICAmbHQ7L3NwYW4mZ3Q7CiAgICAgICZsdDsvZGl2Jmd0OwogICAgJmx0Oy9kaXYmZ3Q7CiAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O19idXR0b24td3JhcHBlciBfZnVsbF93aWR0aCZxdW90OyZndDsKICAgICAgJmx0O2J1dHRvbiBpZD0mcXVvdDtfZm9ybV8zX3N1Ym1pdCZxdW90OyBjbGFzcz0mcXVvdDtfc3VibWl0JnF1b3Q7IHR5cGU9JnF1b3Q7c3VibWl0JnF1b3Q7Jmd0OwogICAgICAgIFVwZGF0ZQogICAgICAmbHQ7L2J1dHRvbiZndDsKICAgICZsdDsvZGl2Jmd0OwogICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtfY2xlYXItZWxlbWVudCZxdW90OyZndDsKICAgICZsdDsvZGl2Jmd0OwogICZsdDsvZGl2Jmd0OwogICZsdDtkaXYgY2xhc3M9JnF1b3Q7X2Zvcm0tdGhhbmsteW91JnF1b3Q7IHN0eWxlPSZxdW90O2Rpc3BsYXk6bm9uZTsmcXVvdDsmZ3Q7CiAgJmx0Oy9kaXYmZ3Q7CiAgJmx0O2RpdiBjbGFzcz0mcXVvdDtfZm9ybS1icmFuZGluZyZxdW90OyZndDsKICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7X21hcmtldGluZy1ieSZxdW90OyZndDsKICAgICAgTWFya2V0aW5nIGJ5CiAgICAmbHQ7L2RpdiZndDsKICAgICZsdDthIGhyZWY9JnF1b3Q7aHR0cDovL3d3dy5hY3RpdmVjYW1wYWlnbi5jb20mcXVvdDsgY2xhc3M9JnF1b3Q7X2xvZ28mcXVvdDsmZ3Q7Jmx0Oy9hJmd0OwogICZsdDsvZGl2Jmd0OwombHQ7L2Zvcm0mZ3Q7Jmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyZndDsKd2luZG93LmNmaWVsZHMgPSB7JnF1b3Q7NSZxdW90OzomcXVvdDtzdWJzY3JpcHRpb25fcHJlZmVyZW5jZXMmcXVvdDt9Owp3aW5kb3cuX3Nob3dfdGhhbmtfeW91ID0gZnVuY3Rpb24oaWQsIG1lc3NhZ2UsIHRyYWNrY21wX3VybCkgewogIHZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJiN4Mjc7X2Zvcm1fJiN4Mjc7ICsgaWQgKyAmI3gyNztfJiN4Mjc7KSwgdGhhbmtfeW91ID0gZm9ybS5xdWVyeVNlbGVjdG9yKCYjeDI3Oy5fZm9ybS10aGFuay15b3UmI3gyNzspOwogIGZvcm0ucXVlcnlTZWxlY3RvcigmI3gyNzsuX2Zvcm0tY29udGVudCYjeDI3Oykuc3R5bGUuZGlzcGxheSA9ICYjeDI3O25vbmUmI3gyNzs7CiAgdGhhbmtfeW91LmlubmVySFRNTCA9IG1lc3NhZ2U7CiAgdGhhbmtfeW91LnN0eWxlLmRpc3BsYXkgPSAmI3gyNztibG9jayYjeDI3OzsKICBpZiAodHlwZW9mKHRyYWNrY21wX3VybCkgIT0gJiN4Mjc7dW5kZWZpbmVkJiN4Mjc7ICZhbXA7JmFtcDsgdHJhY2tjbXBfdXJsKSB7CiAgICAvLyBTaXRlIHRyYWNraW5nIFVSTCB0byB1c2UgYWZ0ZXIgaW5saW5lIGZvcm0gc3VibWlzc2lvbi4KICAgIF9sb2FkX3NjcmlwdCh0cmFja2NtcF91cmwpOwogIH0KICBpZiAodHlwZW9mIHdpbmRvdy5fZm9ybV9jYWxsYmFjayAhPT0gJiN4Mjc7dW5kZWZpbmVkJiN4Mjc7KSB3aW5kb3cuX2Zvcm1fY2FsbGJhY2soaWQpOwp9Owp3aW5kb3cuX3Nob3dfZXJyb3IgPSBmdW5jdGlvbihpZCwgbWVzc2FnZSwgaHRtbCkgewogIHZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJiN4Mjc7X2Zvcm1fJiN4Mjc7ICsgaWQgKyAmI3gyNztfJiN4Mjc7KSwgZXJyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgmI3gyNztkaXYmI3gyNzspLCBidXR0b24gPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJiN4Mjc7YnV0dG9uJiN4Mjc7KSwgb2xkX2Vycm9yID0gZm9ybS5xdWVyeVNlbGVjdG9yKCYjeDI3Oy5fZm9ybV9lcnJvciYjeDI3Oyk7CiAgaWYgKG9sZF9lcnJvcikgb2xkX2Vycm9yLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQob2xkX2Vycm9yKTsKICBlcnIuaW5uZXJIVE1MID0gbWVzc2FnZTsKICBlcnIuY2xhc3NOYW1lID0gJiN4Mjc7X2Vycm9yLWlubmVyIF9mb3JtX2Vycm9yIF9ub19hcnJvdyYjeDI3OzsKICB2YXIgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJiN4Mjc7ZGl2JiN4Mjc7KTsKICB3cmFwcGVyLmNsYXNzTmFtZSA9ICYjeDI3O19mb3JtLWlubmVyJiN4Mjc7OwogIHdyYXBwZXIuYXBwZW5kQ2hpbGQoZXJyKTsKICBidXR0b24ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUod3JhcHBlciwgYnV0dG9uKTsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCYjeDI3O1tpZF49JnF1b3Q7X2Zvcm0mcXVvdDtdW2lkJD0mcXVvdDtfc3VibWl0JnF1b3Q7XSYjeDI3OykuZGlzYWJsZWQgPSBmYWxzZTsKICBpZiAoaHRtbCkgewogICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJiN4Mjc7ZGl2JiN4Mjc7KTsKICAgIGRpdi5jbGFzc05hbWUgPSAmI3gyNztfZXJyb3ItaHRtbCYjeDI3OzsKICAgIGRpdi5pbm5lckhUTUwgPSBodG1sOwogICAgZXJyLmFwcGVuZENoaWxkKGRpdik7CiAgfQp9Owp3aW5kb3cuX2xvYWRfc2NyaXB0ID0gZnVuY3Rpb24odXJsLCBjYWxsYmFjaykgewogICAgdmFyIGhlYWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCYjeDI3O2hlYWQmI3gyNzspLCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCYjeDI3O3NjcmlwdCYjeDI3OyksIHIgPSBmYWxzZTsKICAgIHNjcmlwdC50eXBlID0gJiN4Mjc7dGV4dC9qYXZhc2NyaXB0JiN4Mjc7OwogICAgc2NyaXB0LmNoYXJzZXQgPSAmI3gyNzt1dGYtOCYjeDI3OzsKICAgIHNjcmlwdC5zcmMgPSB1cmw7CiAgICBpZiAoY2FsbGJhY2spIHsKICAgICAgc2NyaXB0Lm9ubG9hZCA9IHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgaWYgKCFyICZhbXA7JmFtcDsgKCF0aGlzLnJlYWR5U3RhdGUgfHwgdGhpcy5yZWFkeVN0YXRlID09ICYjeDI3O2NvbXBsZXRlJiN4Mjc7KSkgewogICAgICAgIHIgPSB0cnVlOwogICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgfQogICAgICB9OwogICAgfQogICAgaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpOwp9OwooZnVuY3Rpb24oKSB7CiAgaWYgKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc2VhcmNoKCZxdW90O2V4Y2x1ZGVmb3JtJnF1b3Q7KSAhPT0gLTEpIHJldHVybiBmYWxzZTsKICB2YXIgZ2V0Q29va2llID0gZnVuY3Rpb24obmFtZSkgewogICAgdmFyIG1hdGNoID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoJiN4Mjc7KF58OyApJiN4Mjc7ICsgbmFtZSArICYjeDI3Oz0oW147XSspJiN4Mjc7KSk7CiAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsyXSA6IG51bGw7CiAgfQogIHZhciBzZXRDb29raWUgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkgewogICAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7CiAgICB2YXIgdGltZSA9IG5vdy5nZXRUaW1lKCk7CiAgICB2YXIgZXhwaXJlVGltZSA9IHRpbWUgKyAxMDAwICogNjAgKiA2MCAqIDI0ICogMzY1OwogICAgbm93LnNldFRpbWUoZXhwaXJlVGltZSk7CiAgICBkb2N1bWVudC5jb29raWUgPSBuYW1lICsgJiN4Mjc7PSYjeDI3OyArIHZhbHVlICsgJiN4Mjc7OyBleHBpcmVzPSYjeDI3OyArIG5vdyArICYjeDI3OztwYXRoPS8mI3gyNzs7CiAgfQogICAgICB2YXIgYWRkRXZlbnQgPSBmdW5jdGlvbihlbGVtZW50LCBldmVudCwgZnVuYykgewogICAgaWYgKGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGZ1bmMpOwogICAgfSBlbHNlIHsKICAgICAgdmFyIG9sZEZ1bmMgPSBlbGVtZW50WyYjeDI3O29uJiN4Mjc7ICsgZXZlbnRdOwogICAgICBlbGVtZW50WyYjeDI3O29uJiN4Mjc7ICsgZXZlbnRdID0gZnVuY3Rpb24oKSB7CiAgICAgICAgb2xkRnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgfTsKICAgIH0KICB9CiAgdmFyIF9yZW1vdmVkID0gZmFsc2U7CiAgdmFyIGZvcm1fdG9fc3VibWl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJiN4Mjc7X2Zvcm1fM18mI3gyNzspOwogIHZhciBhbGxJbnB1dHMgPSBmb3JtX3RvX3N1Ym1pdC5xdWVyeVNlbGVjdG9yQWxsKCYjeDI3O2lucHV0LCBzZWxlY3QsIHRleHRhcmVhJiN4Mjc7KSwgdG9vbHRpcHMgPSBbXSwgc3VibWl0dGVkID0gZmFsc2U7CgogIHZhciBnZXRVcmxQYXJhbSA9IGZ1bmN0aW9uKG5hbWUpIHsKICAgIHZhciByZWdleFN0ciA9ICYjeDI3O1tcPyZhbXA7XSYjeDI3OyArIG5hbWUgKyAmI3gyNzs9KFteJmFtcDsjXSopJiN4Mjc7OwogICAgdmFyIHJlc3VsdHMgPSBuZXcgUmVnRXhwKHJlZ2V4U3RyLCAmI3gyNztpJiN4Mjc7KS5leGVjKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTsKICAgIHJldHVybiByZXN1bHRzICE9IHVuZGVmaW5lZCA/IGRlY29kZVVSSUNvbXBvbmVudChyZXN1bHRzWzFdKSA6IGZhbHNlOwogIH07CgogIGZvciAodmFyIGkgPSAwOyBpICZsdDsgYWxsSW5wdXRzLmxlbmd0aDsgaSsrKSB7CiAgICB2YXIgcmVnZXhTdHIgPSAmcXVvdDtmaWVsZFxcWyhcXGQrKVxcXSZxdW90OzsKICAgIHZhciByZXN1bHRzID0gbmV3IFJlZ0V4cChyZWdleFN0cikuZXhlYyhhbGxJbnB1dHNbaV0ubmFtZSk7CiAgICBpZiAocmVzdWx0cyAhPSB1bmRlZmluZWQpIHsKICAgICAgYWxsSW5wdXRzW2ldLmRhdGFzZXQubmFtZSA9IHdpbmRvdy5jZmllbGRzW3Jlc3VsdHNbMV1dOwogICAgfSBlbHNlIHsKICAgICAgYWxsSW5wdXRzW2ldLmRhdGFzZXQubmFtZSA9IGFsbElucHV0c1tpXS5uYW1lOwogICAgfQogICAgdmFyIGZpZWxkVmFsID0gZ2V0VXJsUGFyYW0oYWxsSW5wdXRzW2ldLmRhdGFzZXQubmFtZSk7CgogICAgaWYgKGZpZWxkVmFsKSB7CiAgICAgIGlmIChhbGxJbnB1dHNbaV0udHlwZSA9PSAmcXVvdDtyYWRpbyZxdW90OyB8fCBhbGxJbnB1dHNbaV0udHlwZSA9PSAmcXVvdDtjaGVja2JveCZxdW90OykgewogICAgICAgIGlmIChhbGxJbnB1dHNbaV0udmFsdWUgPT0gZmllbGRWYWwpIHsKICAgICAgICAgIGFsbElucHV0c1tpXS5jaGVja2VkID0gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgYWxsSW5wdXRzW2ldLnZhbHVlID0gZmllbGRWYWw7CiAgICAgIH0KICAgIH0KICB9CgogIHZhciByZW1vdmVfdG9vbHRpcHMgPSBmdW5jdGlvbigpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpICZsdDsgdG9vbHRpcHMubGVuZ3RoOyBpKyspIHsKICAgICAgdG9vbHRpcHNbaV0udGlwLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodG9vbHRpcHNbaV0udGlwKTsKICAgIH0KICAgICAgdG9vbHRpcHMgPSBbXTsKICB9OwogIHZhciByZW1vdmVfdG9vbHRpcCA9IGZ1bmN0aW9uKGVsZW0pIHsKICAgIGZvciAodmFyIGkgPSAwOyBpICZsdDsgdG9vbHRpcHMubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKHRvb2x0aXBzW2ldLmVsZW0gPT09IGVsZW0pIHsKICAgICAgICB0b29sdGlwc1tpXS50aXAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0b29sdGlwc1tpXS50aXApOwogICAgICAgIHRvb2x0aXBzLnNwbGljZShpLCAxKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgIH0KICB9OwogIHZhciBjcmVhdGVfdG9vbHRpcCA9IGZ1bmN0aW9uKGVsZW0sIHRleHQpIHsKICAgIHZhciB0b29sdGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgmI3gyNztkaXYmI3gyNzspLCBhcnJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJiN4Mjc7ZGl2JiN4Mjc7KSwgaW5uZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCYjeDI3O2RpdiYjeDI3OyksIG5ld190b29sdGlwID0ge307CiAgICBpZiAoZWxlbS50eXBlICE9ICYjeDI3O3JhZGlvJiN4Mjc7ICZhbXA7JmFtcDsgZWxlbS50eXBlICE9ICYjeDI3O2NoZWNrYm94JiN4Mjc7KSB7CiAgICAgIHRvb2x0aXAuY2xhc3NOYW1lID0gJiN4Mjc7X2Vycm9yJiN4Mjc7OwogICAgICBhcnJvdy5jbGFzc05hbWUgPSAmI3gyNztfZXJyb3ItYXJyb3cmI3gyNzs7CiAgICAgIGlubmVyLmNsYXNzTmFtZSA9ICYjeDI3O19lcnJvci1pbm5lciYjeDI3OzsKICAgICAgaW5uZXIuaW5uZXJIVE1MID0gdGV4dDsKICAgICAgdG9vbHRpcC5hcHBlbmRDaGlsZChhcnJvdyk7CiAgICAgIHRvb2x0aXAuYXBwZW5kQ2hpbGQoaW5uZXIpOwogICAgICBlbGVtLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodG9vbHRpcCk7CiAgICB9IGVsc2UgewogICAgICB0b29sdGlwLmNsYXNzTmFtZSA9ICYjeDI3O19lcnJvci1pbm5lciBfbm9fYXJyb3cmI3gyNzs7CiAgICAgIHRvb2x0aXAuaW5uZXJIVE1MID0gdGV4dDsKICAgICAgZWxlbS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0b29sdGlwLCBlbGVtKTsKICAgICAgbmV3X3Rvb2x0aXAubm9fYXJyb3cgPSB0cnVlOwogICAgfQogICAgbmV3X3Rvb2x0aXAudGlwID0gdG9vbHRpcDsKICAgIG5ld190b29sdGlwLmVsZW0gPSBlbGVtOwogICAgdG9vbHRpcHMucHVzaChuZXdfdG9vbHRpcCk7CiAgICByZXR1cm4gbmV3X3Rvb2x0aXA7CiAgfTsKICB2YXIgcmVzaXplX3Rvb2x0aXAgPSBmdW5jdGlvbih0b29sdGlwKSB7CiAgICB2YXIgcmVjdCA9IHRvb2x0aXAuZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIHZhciBkb2MgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHNjcm9sbFBvc2l0aW9uID0gcmVjdC50b3AgLSAoKHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2Muc2Nyb2xsVG9wKSAgLSAoZG9jLmNsaWVudFRvcCB8fCAwKSk7CiAgICBpZiAoc2Nyb2xsUG9zaXRpb24gJmx0OyA0MCkgewogICAgICB0b29sdGlwLnRpcC5jbGFzc05hbWUgPSB0b29sdGlwLnRpcC5jbGFzc05hbWUucmVwbGFjZSgvID8oX2Fib3ZlfF9iZWxvdykgPy9nLCAmI3gyNzsmI3gyNzspICsgJiN4Mjc7IF9iZWxvdyYjeDI3OzsKICAgIH0gZWxzZSB7CiAgICAgIHRvb2x0aXAudGlwLmNsYXNzTmFtZSA9IHRvb2x0aXAudGlwLmNsYXNzTmFtZS5yZXBsYWNlKC8gPyhfYWJvdmV8X2JlbG93KSA/L2csICYjeDI3OyYjeDI3OykgKyAmI3gyNzsgX2Fib3ZlJiN4Mjc7OwogICAgfQogIH07CiAgdmFyIHJlc2l6ZV90b29sdGlwcyA9IGZ1bmN0aW9uKCkgewogICAgaWYgKF9yZW1vdmVkKSByZXR1cm47CiAgICBmb3IgKHZhciBpID0gMDsgaSAmbHQ7IHRvb2x0aXBzLmxlbmd0aDsgaSsrKSB7CiAgICAgIGlmICghdG9vbHRpcHNbaV0ubm9fYXJyb3cpIHJlc2l6ZV90b29sdGlwKHRvb2x0aXBzW2ldKTsKICAgIH0KICB9OwogIHZhciB2YWxpZGF0ZV9maWVsZCA9IGZ1bmN0aW9uKGVsZW0sIHJlbW92ZSkgewogICAgdmFyIHRvb2x0aXAgPSBudWxsLCB2YWx1ZSA9IGVsZW0udmFsdWUsIG5vX2Vycm9yID0gdHJ1ZTsKICAgIHJlbW92ZSA/IHJlbW92ZV90b29sdGlwKGVsZW0pIDogZmFsc2U7CiAgICBpZiAoZWxlbS50eXBlICE9ICYjeDI3O2NoZWNrYm94JiN4Mjc7KSBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lLnJlcGxhY2UoLyA/X2hhc19lcnJvciA/L2csICYjeDI3OyYjeDI3Oyk7CiAgICBpZiAoZWxlbS5nZXRBdHRyaWJ1dGUoJiN4Mjc7cmVxdWlyZWQmI3gyNzspICE9PSBudWxsKSB7CiAgICAgIGlmIChlbGVtLnR5cGUgPT0gJiN4Mjc7cmFkaW8mI3gyNzsgfHwgKGVsZW0udHlwZSA9PSAmI3gyNztjaGVja2JveCYjeDI3OyAmYW1wOyZhbXA7IC9hbnkvLnRlc3QoZWxlbS5jbGFzc05hbWUpKSkgewogICAgICAgIHZhciBlbGVtcyA9IGZvcm1fdG9fc3VibWl0LmVsZW1lbnRzW2VsZW0ubmFtZV07CiAgICAgICAgaWYgKCEoZWxlbXMgaW5zdGFuY2VvZiBOb2RlTGlzdCB8fCBlbGVtcyBpbnN0YW5jZW9mIEhUTUxDb2xsZWN0aW9uKSB8fCBlbGVtcy5sZW5ndGggJmx0Oz0gMSkgewogICAgICAgICAgbm9fZXJyb3IgPSBlbGVtLmNoZWNrZWQ7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpICZsdDsgZWxlbXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKGVsZW1zW2ldLmNoZWNrZWQpIG5vX2Vycm9yID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFub19lcnJvcikgewogICAgICAgICAgdG9vbHRpcCA9IGNyZWF0ZV90b29sdGlwKGVsZW0sICZxdW90O1BsZWFzZSBzZWxlY3QgYW4gb3B0aW9uLiZxdW90Oyk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGVsZW0udHlwZSA9PSYjeDI3O2NoZWNrYm94JiN4Mjc7KSB7CiAgICAgICAgdmFyIGVsZW1zID0gZm9ybV90b19zdWJtaXQuZWxlbWVudHNbZWxlbS5uYW1lXSwgZm91bmQgPSBmYWxzZSwgZXJyID0gW107CiAgICAgICAgbm9fZXJyb3IgPSB0cnVlOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpICZsdDsgZWxlbXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIGlmIChlbGVtc1tpXS5nZXRBdHRyaWJ1dGUoJiN4Mjc7cmVxdWlyZWQmI3gyNzspID09PSBudWxsKSBjb250aW51ZTsKICAgICAgICAgIGlmICghZm91bmQgJmFtcDsmYW1wOyBlbGVtc1tpXSAhPT0gZWxlbSkgcmV0dXJuIHRydWU7CiAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICBlbGVtc1tpXS5jbGFzc05hbWUgPSBlbGVtc1tpXS5jbGFzc05hbWUucmVwbGFjZSgvID9faGFzX2Vycm9yID8vZywgJiN4Mjc7JiN4Mjc7KTsKICAgICAgICAgIGlmICghZWxlbXNbaV0uY2hlY2tlZCkgewogICAgICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgICAgICBlbGVtc1tpXS5jbGFzc05hbWUgPSBlbGVtc1tpXS5jbGFzc05hbWUgKyAmI3gyNzsgX2hhc19lcnJvciYjeDI3OzsKICAgICAgICAgICAgZXJyLnB1c2goJnF1b3Q7Q2hlY2tpbmcgJXMgaXMgcmVxdWlyZWQmcXVvdDsucmVwbGFjZSgmcXVvdDslcyZxdW90OywgZWxlbXNbaV0udmFsdWUpKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFub19lcnJvcikgewogICAgICAgICAgdG9vbHRpcCA9IGNyZWF0ZV90b29sdGlwKGVsZW0sIGVyci5qb2luKCYjeDI3OyZsdDtici8mZ3Q7JiN4Mjc7KSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGVsZW0udGFnTmFtZSA9PSAmI3gyNztTRUxFQ1QmI3gyNzspIHsKICAgICAgICB2YXIgc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgIGlmIChlbGVtLm11bHRpcGxlKSB7CiAgICAgICAgICBzZWxlY3RlZCA9IGZhbHNlOwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgJmx0OyBlbGVtLm9wdGlvbnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKGVsZW0ub3B0aW9uc1tpXS5zZWxlY3RlZCkgewogICAgICAgICAgICAgIHNlbGVjdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSAmbHQ7IGVsZW0ub3B0aW9ucy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoZWxlbS5vcHRpb25zW2ldLnNlbGVjdGVkICZhbXA7JmFtcDsgIWVsZW0ub3B0aW9uc1tpXS52YWx1ZSkgewogICAgICAgICAgICAgIHNlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFzZWxlY3RlZCkgewogICAgICAgICAgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZSArICYjeDI3OyBfaGFzX2Vycm9yJiN4Mjc7OwogICAgICAgICAgbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAmcXVvdDtQbGVhc2Ugc2VsZWN0IGFuIG9wdGlvbi4mcXVvdDspOwogICAgICAgIH0KICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAmI3gyNzsmI3gyNzspIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJiN4Mjc7IF9oYXNfZXJyb3ImI3gyNzs7CiAgICAgICAgbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgICB0b29sdGlwID0gY3JlYXRlX3Rvb2x0aXAoZWxlbSwgJnF1b3Q7VGhpcyBmaWVsZCBpcyByZXF1aXJlZC4mcXVvdDspOwogICAgICB9CiAgICB9CiAgICBpZiAobm9fZXJyb3IgJmFtcDsmYW1wOyBlbGVtLm5hbWUgPT0gJiN4Mjc7ZW1haWwmI3gyNzspIHsKICAgICAgaWYgKCF2YWx1ZS5tYXRjaCgvXltcK19hLXowLTktJiN4Mjc7JmFtcDs9XSsoXC5bXCtfYS16MC05LSYjeDI3O10rKSpAW2EtejAtOS1dKyhcLlthLXowLTktXSspKihcLlthLXpdezIsfSkkL2kpKSB7CiAgICAgICAgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZSArICYjeDI3OyBfaGFzX2Vycm9yJiN4Mjc7OwogICAgICAgIG5vX2Vycm9yID0gZmFsc2U7CiAgICAgICAgdG9vbHRpcCA9IGNyZWF0ZV90b29sdGlwKGVsZW0sICZxdW90O0VudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcy4mcXVvdDspOwogICAgICB9CiAgICB9CiAgICBpZiAobm9fZXJyb3IgJmFtcDsmYW1wOyAvZGF0ZV9maWVsZC8udGVzdChlbGVtLmNsYXNzTmFtZSkpIHsKICAgICAgaWYgKCF2YWx1ZS5tYXRjaCgvXlxkXGRcZFxkLVxkXGQtXGRcZCQvKSkgewogICAgICAgIGVsZW0uY2xhc3NOYW1lID0gZWxlbS5jbGFzc05hbWUgKyAmI3gyNzsgX2hhc19lcnJvciYjeDI3OzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAmcXVvdDtFbnRlciBhIHZhbGlkIGRhdGUuJnF1b3Q7KTsKICAgICAgfQogICAgfQogICAgdG9vbHRpcCA/IHJlc2l6ZV90b29sdGlwKHRvb2x0aXApIDogZmFsc2U7CiAgICByZXR1cm4gbm9fZXJyb3I7CiAgfTsKICB2YXIgbmVlZHNfdmFsaWRhdGUgPSBmdW5jdGlvbihlbCkgewogICAgcmV0dXJuIGVsLm5hbWUgPT0gJiN4Mjc7ZW1haWwmI3gyNzsgfHwgZWwuZ2V0QXR0cmlidXRlKCYjeDI3O3JlcXVpcmVkJiN4Mjc7KSAhPT0gbnVsbDsKICB9OwogIHZhciB2YWxpZGF0ZV9mb3JtID0gZnVuY3Rpb24oZSkgewogICAgdmFyIGVyciA9IGZvcm1fdG9fc3VibWl0LnF1ZXJ5U2VsZWN0b3IoJiN4Mjc7Ll9mb3JtX2Vycm9yJiN4Mjc7KSwgbm9fZXJyb3IgPSB0cnVlOwogICAgaWYgKCFzdWJtaXR0ZWQpIHsKICAgICAgc3VibWl0dGVkID0gdHJ1ZTsKICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGFsbElucHV0cy5sZW5ndGg7IGkgJmx0OyBsZW47IGkrKykgewogICAgICAgIHZhciBpbnB1dCA9IGFsbElucHV0c1tpXTsKICAgICAgICBpZiAobmVlZHNfdmFsaWRhdGUoaW5wdXQpKSB7CiAgICAgICAgICBpZiAoaW5wdXQudHlwZSA9PSAmI3gyNzt0ZXh0JiN4Mjc7KSB7CiAgICAgICAgICAgIGFkZEV2ZW50KGlucHV0LCAmI3gyNztibHVyJiN4Mjc7LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS50cmltKCk7CiAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBhZGRFdmVudChpbnB1dCwgJiN4Mjc7aW5wdXQmI3gyNzssIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHZhbGlkYXRlX2ZpZWxkKHRoaXMsIHRydWUpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQudHlwZSA9PSAmI3gyNztyYWRpbyYjeDI3OyB8fCBpbnB1dC50eXBlID09ICYjeDI3O2NoZWNrYm94JiN4Mjc7KSB7CiAgICAgICAgICAgIChmdW5jdGlvbihlbCkgewogICAgICAgICAgICAgIHZhciByYWRpb3MgPSBmb3JtX3RvX3N1Ym1pdC5lbGVtZW50c1tlbC5uYW1lXTsKICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSAmbHQ7IHJhZGlvcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgYWRkRXZlbnQocmFkaW9zW2ldLCAmI3gyNztjbGljayYjeDI3OywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX2ZpZWxkKGVsLCB0cnVlKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkoaW5wdXQpOwogICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC50YWdOYW1lID09ICYjeDI3O1NFTEVDVCYjeDI3OykgewogICAgICAgICAgICBhZGRFdmVudChpbnB1dCwgJiN4Mjc7Y2hhbmdlJiN4Mjc7LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB2YWxpZGF0ZV9maWVsZCh0aGlzLCB0cnVlKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICByZW1vdmVfdG9vbHRpcHMoKTsKICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhbGxJbnB1dHMubGVuZ3RoOyBpICZsdDsgbGVuOyBpKyspIHsKICAgICAgdmFyIGVsZW0gPSBhbGxJbnB1dHNbaV07CiAgICAgIGlmIChuZWVkc192YWxpZGF0ZShlbGVtKSkgewogICAgICAgIGlmIChlbGVtLnRhZ05hbWUudG9Mb3dlckNhc2UoKSAhPT0gJnF1b3Q7c2VsZWN0JnF1b3Q7KSB7CiAgICAgICAgICBlbGVtLnZhbHVlID0gZWxlbS52YWx1ZS50cmltKCk7CiAgICAgICAgfQogICAgICAgIHZhbGlkYXRlX2ZpZWxkKGVsZW0pID8gdHJ1ZSA6IG5vX2Vycm9yID0gZmFsc2U7CiAgICAgIH0KICAgIH0KICAgIGlmICghbm9fZXJyb3IgJmFtcDsmYW1wOyBlKSB7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIH0KICAgIHJlc2l6ZV90b29sdGlwcygpOwogICAgcmV0dXJuIG5vX2Vycm9yOwogIH07CiAgYWRkRXZlbnQod2luZG93LCAmI3gyNztyZXNpemUmI3gyNzssIHJlc2l6ZV90b29sdGlwcyk7CiAgYWRkRXZlbnQod2luZG93LCAmI3gyNztzY3JvbGwmI3gyNzssIHJlc2l6ZV90b29sdGlwcyk7CiAgd2luZG93Ll9vbGRfc2VyaWFsaXplID0gbnVsbDsKICBpZiAodHlwZW9mIHNlcmlhbGl6ZSAhPT0gJiN4Mjc7dW5kZWZpbmVkJiN4Mjc7KSB3aW5kb3cuX29sZF9zZXJpYWxpemUgPSB3aW5kb3cuc2VyaWFsaXplOwogIF9sb2FkX3NjcmlwdCgmcXVvdDsvL2QzcnhhaWo1NnZqZWdlLmNsb3VkZnJvbnQubmV0L2Zvcm0tc2VyaWFsaXplLzAuMy9zZXJpYWxpemUubWluLmpzJnF1b3Q7LCBmdW5jdGlvbigpIHsKICAgIHdpbmRvdy5fZm9ybV9zZXJpYWxpemUgPSB3aW5kb3cuc2VyaWFsaXplOwogICAgaWYgKHdpbmRvdy5fb2xkX3NlcmlhbGl6ZSkgd2luZG93LnNlcmlhbGl6ZSA9IHdpbmRvdy5fb2xkX3NlcmlhbGl6ZTsKICB9KTsKICB2YXIgZm9ybV9zdWJtaXQgPSBmdW5jdGlvbihlKSB7CiAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICBpZiAodmFsaWRhdGVfZm9ybSgpKSB7CiAgICAgIC8vIHVzZSB0aGlzIHRyaWNrIHRvIGdldCB0aGUgc3VibWl0IGJ1dHRvbiAmYW1wOyBkaXNhYmxlIGl0IHVzaW5nIHBsYWluIGphdmFzY3JpcHQKICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigmI3gyNztbaWRePSZxdW90O19mb3JtJnF1b3Q7XVtpZCQ9JnF1b3Q7X3N1Ym1pdCZxdW90O10mI3gyNzspLmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgICAgdmFyIHNlcmlhbGl6ZWQgPSBfZm9ybV9zZXJpYWxpemUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJiN4Mjc7X2Zvcm1fM18mI3gyNzspKTsKICAgICAgdmFyIGVyciA9IGZvcm1fdG9fc3VibWl0LnF1ZXJ5U2VsZWN0b3IoJiN4Mjc7Ll9mb3JtX2Vycm9yJiN4Mjc7KTsKICAgICAgZXJyID8gZXJyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZXJyKSA6IGZhbHNlOwogICAgICBfbG9hZF9zY3JpcHQoJiN4Mjc7aHR0cHM6Ly9hdXRvbWF0ZWx5LmFjdGl2ZWhvc3RlZC5jb20vcHJvYy5waHA/JiN4Mjc7ICsgc2VyaWFsaXplZCArICYjeDI3OyZhbXA7anNvbnA9dHJ1ZSYjeDI3Oyk7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7CiAgfTsKICBhZGRFdmVudChmb3JtX3RvX3N1Ym1pdCwgJiN4Mjc7c3VibWl0JiN4Mjc7LCBmb3JtX3N1Ym1pdCk7Cn0pKCk7CgombHQ7L3NjcmlwdCZndDs=[/fusion_code][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]