[fusion_builder_container admin_label=”Desktop” hundred_percent=”yes” hundred_percent_height=”no” hundred_percent_height_scroll=”no” hundred_percent_height_center_content=”yes” equal_height_columns=”no” menu_anchor=”” hide_on_mobile=”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=”2%” padding_right=”10%” padding_bottom=”2%” padding_left=”10%” admin_toggled=”no”][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ spacing=”yes” center_content=”no” link=”” target=”_self” min_height=”” hide_on_mobile=”medium-visibility,large-visibility” class=”” id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” hover_type=”none” border_size=”” border_color=”” border_style=”solid” border_position=”all” padding_top=”2%” padding_right=”10%” padding_bottom=”2%” padding_left=”10%” margin_top=”0px” margin_bottom=”0px” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][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=””]

How Traders Can Join the Fintech Movement

As Fintech continues to make waves through the industry of finance, certain lessons are quickly being learned. The impact of technology is already a well-known concept in retail banking, wherein the disruption is self-evident. But what of technology’s impact on capital markets and the trading floor? Is disruption as rife in these sectors, or are investment banks somehow immune to competition from emerging tech?
Earlier this month, on November 6th, CFTE held a fireside chat with finance leaders to address these questions and more. Hosted by MUFG, the 5th largest bank worldwide, in their European Headquarters in London, the evening freely invited CFTE alumni and learners to gain insight from a panel formed of MUFG’s Stephane Alex; Behavox’s Alex Viall; Mosaic Smart Data’s Matt Hodgson, and not leastly our co-founder Huy Nguyen Trieu.
The evening held much discussion on the various strategies and frameworks employed by leading financial figures to adapt to the industry’s rapid digitisation. A packed hall of keen professionals heard from Stephane Alex, Head of Global Customer Marketing at MUFG, as he outlined his firm’s major focus over the past five years: Innovation. Following their expansion out of Japan, the fields of Artificial Intelligence, Big Data, Blockchain, Robotic Process Automation (RPA) were all areas of innovation for MUFG. Meanwhile, as the bank continued to develop schemes based on these emerging technologies, they also had to be innovative on the trading floor. This meant greater importance on the pillars of: Risk Management, Data-driven Predictions, Sales, and Settlement.
As the panel drew on, Matt Hodgson, CEO of Mosaic Smart Data, shared his firm’s response to digitisation. Describing the idea of ‘fixed income’ as a personal pain point, he needed his 2013 company to sufficiently solve this problem. And so, Mosaic Smart Data began selling software which addressed fixed income issues, adding value to the front end. By providing an API framework to entire organisations at a time, their brand offered unique value to the industry. Following this forceful ‘migration’ to electronic and digital channels, a new problem reared its head: communication via a common messaging language. Similar to Stephane and MUFG, Matt and his firm responded by leaning on four pillars for the solution. In their case, this meant:

  1. Aggregating transactions over different channels.
  2. Solving KPI and provide a framework delivering effective insight.
  3. Combining multiple segments of clients into one. To avoid the pitfalls of spamming clients.
  4. Their product needed lightning-quick response times (like Apple & Netflix).

Once these principles were in place, Matt’s team was able to match their competitors’ pace of innovation and digital transformation. Alex Viall, Head of Regulatory Intelligence at Behavox, opined on how this pace has changed in recent years. Armed with experience as a regulator, he acknowledged his company’s role: to hold huge amounts of data, group them into a manageable data lake, and run algorithms which would generate meaningful findings and insights for clients.
The panel grew into conversation of current and future trends in Finance, and panellists were asked to briefly breakdown important factors in the industry.
Stephane Alex of MUFG spoke on:

  1. Simplicity of Finance.
  2. Transparency of institutions and services.
  3. Affordability of consumer-facing services.

Matt Hodgson of Mosaic Smart Data declared:

  1. While Fintech soars, banks need to realise they’re also invited to engage.
  2. The costs of nascent tech will decrease.
  3. There will be greater pressure on human capital in front offices.
  4. Process data is nigh-on impossible for humans.

While Alex Viall of Behavox said:

  1. Respect for data and its value rose as people started to mine and work with said data. This will continue.
  2. People are seeking more evidence-based answers instead of tradition.
  3. Data’s ability to personalise services is vital.
  4. Delivering information in real-life is an extraordinary technological leap in finance.

As promised, the evening also saw discussion on the role of automation, and more specifically how it affects the industry workforce. CFTE co-founder Huy Nguyen Trieu probed the panel on the topic, asking which activities in trading are currently in danger of disappearing. In response, Stephane Alex noted that management must take responsibility and sustain some roles for their employees with their oversight.
Next, the panellists were pressed on specific applications of emerging technologies. Algorithms will continue to dominate the trading floor, predicts Stephane, while Matt noted the importance of efficiency in data. Real-time information was not commonplace half a decade ago, while modern finance is much more capable to understand customers thanks to smarter tools. As a result, the roles of those in sales will dramatically change in terms of strategy as they adopt more intellectual approaches to their processes.
All experts called on more urgency in financial institutions taking larger risks, and to take them more often. The trio also highlighted a multitude of examples that showcase current innovations in capitals markets and banking today. For one, there are considerable changes in infrastructure, as Data Scientists and Data Engineers become more prominent. Another salient point is the difference in large and small firms– large institutions have the access and capability to utilise massive amounts of data, while smaller firms without this flow need to act in clever ways to arrive at the same conclusions. Artificial Intelligence will bridge this gap.

Ultimately, a large amount of the trading workforce remains afraid to lose their jobs to automation as a result of continued digital transformation. To these workers, t
he panel provided some words of encouragement and methods of practice:

  • Stephane Alex claimed that since the workforce as whole is becoming smarter, this means the middle and back office will also have to learn and become better. He presented this as positive affirmation that most workers would not get lost in the shuffle.
  • Alex Viall said “It depends on how you embrace technology and change. People can be creative; you need to create the right environment you personally need to be interested in tech and focus on all the tools that can make you more productive. Everything [in finance] is going to be more transparent.”
  • Matt Hodgson opined “[You should be] Continuing education! We encourage everybody to learn. No matter what: improve and learn. Share information openly; break down silos. If we don’t cannibalize ourselves someone will do it for us.”

This event is one of many in CFTE’s calendar which tackles prominent themes in Fintech. For more information on our future events, please subscribe to our events newsletter below. 
[/fusion_text][/fusion_builder_column][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_position=”left top” undefined=”” background_repeat=”no-repeat” hover_type=”none” border_size=”0″ border_color=”” border_style=”solid” border_position=”all” padding_top=”2%” padding_right=”” padding_bottom=”1%” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_separator style_type=”default” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” sep_color=”” top_margin=”” bottom_margin=”” border_size=”2″ icon=”” icon_circle=”” icon_circle_color=”” width=”” alignment=”center” /][/fusion_builder_column][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=”relatedPosts” id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” hover_type=”none” border_size=”0″ border_color=”” border_style=”solid” border_position=”all” padding_top=”” padding_right=”10%” padding_bottom=”0%” padding_left=”10%” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][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=””]

Related Posts

[/fusion_text][fusion_separator style_type=”default” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” sep_color=”” top_margin=”2%” bottom_margin=”” border_size=”0″ icon=”” icon_circle=”” icon_circle_color=”” width=”” alignment=”center” /][fusion_builder_row_inner][fusion_builder_column_inner type=”1_3″ layout=”1_3″ spacing=”” center_content=”no” hover_type=”none” link=”” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogPost” id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” border_size=”0″ border_color=”” border_style=”solid” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no” border_position=”all”][fusion_recent_posts layout=”default” hover_type=”none” columns=”1″ number_posts=”1″ offset=”1″ pull_by=”category” cat_slug=”events” exclude_cats=”” tag_slug=”” exclude_tags=”” thumbnail=”yes” title=”yes” meta=”yes” meta_author=”no” meta_categories=”no” meta_date=”yes” meta_comments=”no” meta_tags=”no” content_alignment=”” excerpt=”no” excerpt_length=”0″ strip_html=”yes” scrolling=”no” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogImage” id=”BlogImage” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” /][/fusion_builder_column_inner][fusion_builder_column_inner type=”1_3″ layout=”1_3″ spacing=”” center_content=”no” hover_type=”none” link=”” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogPost” id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” border_size=”0″ border_color=”” border_style=”solid” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no” border_position=”all”][fusion_recent_posts layout=”default” hover_type=”none” columns=”1″ number_posts=”1″ offset=”4″ pull_by=”category” cat_slug=”events” exclude_cats=”” tag_slug=”” exclude_tags=”” thumbnail=”yes” title=”yes” meta=”yes” meta_author=”no” meta_categories=”no” meta_date=”yes” meta_comments=”no” meta_tags=”no” content_alignment=”” excerpt=”no” excerpt_length=”0″ strip_html=”yes” scrolling=”no” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogImage” id=”BlogImage” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” /][/fusion_builder_column_inner][fusion_builder_column_inner type=”1_3″ layout=”1_3″ spacing=”” center_content=”no” hover_type=”none” link=”” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogPost” id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” border_size=”0″ border_color=”” border_style=”solid” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no” border_position=”all”][fusion_recent_posts layout=”default” hover_type=”none” columns=”1″ number_posts=”1″ offset=”6″ pull_by=”category” cat_slug=”events” exclude_cats=”” tag_slug=”” exclude_tags=”” thumbnail=”yes” title=”yes” meta=”yes” meta_author=”no” meta_categories=”no” meta_date=”yes” meta_comments=”no” meta_tags=”no” content_alignment=”” excerpt=”no” excerpt_length=”0″ strip_html=”yes” scrolling=”no” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogImage” id=”BlogImage” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” /][/fusion_builder_column_inner][/fusion_builder_row_inner][/fusion_builder_column][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_position=”left top” undefined=”” background_repeat=”no-repeat” hover_type=”none” border_size=”0″ border_color=”” border_style=”solid” border_position=”all” padding_top=”2%” padding_right=”” padding_bottom=”1%” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_separator style_type=”default” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” sep_color=”” top_margin=”” bottom_margin=”” border_size=”2″ icon=”” icon_circle=”” icon_circle_color=”” width=”” alignment=”center” /][/fusion_builder_column][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_position=”left top” background_repeat=”no-repeat” hover_type=”none” border_size=”0″ 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=”no”][fusion_code]PHN0eWxlPgogI19mb3JtXzMxXyB7IGZvbnQtc2l6ZToxNHB4OyBsaW5lLWhlaWdodDoxLjY7IGZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IG1hcmdpbjowOyB9CiAjX2Zvcm1fMzFfICogeyBvdXRsaW5lOjA7IH0KIC5fZm9ybV9oaWRlIHsgZGlzcGxheTpub25lOyB2aXNpYmlsaXR5OmhpZGRlbjsgfQogLl9mb3JtX3Nob3cgeyBkaXNwbGF5OmJsb2NrOyB2aXNpYmlsaXR5OnZpc2libGU7IH0KICNfZm9ybV8zMV8uX2Zvcm0tdG9wIHsgdG9wOjA7IH0KICNfZm9ybV8zMV8uX2Zvcm0tYm90dG9tIHsgYm90dG9tOjA7IH0KICNfZm9ybV8zMV8uX2Zvcm0tbGVmdCB7IGxlZnQ6MDsgfQogI19mb3JtXzMxXy5fZm9ybS1yaWdodCB7IHJpZ2h0OjA7IH0KICNfZm9ybV8zMV8gaW5wdXRbdHlwZT0idGV4dCJdLCNfZm9ybV8zMV8gaW5wdXRbdHlwZT0iZGF0ZSJdLCNfZm9ybV8zMV8gdGV4dGFyZWEgeyBwYWRkaW5nOjZweDsgaGVpZ2h0OmF1dG87IGJvcmRlcjojOTc5Nzk3IDFweCBzb2xpZDsgYm9yZGVyLXJhZGl1czo0cHg7IGNvbG9yOiMwMDAgIWltcG9ydGFudDsgZm9udC1zaXplOjEzcHg7IC13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94OyAtbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgYm94LXNpemluZzpib3JkZXItYm94OyB9CiAjX2Zvcm1fMzFfIHRleHRhcmVhIHsgcmVzaXplOm5vbmU7IH0KICNfZm9ybV8zMV8gLl9zdWJtaXQgeyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgY3Vyc29yOnBvaW50ZXI7IGZvbnQtZmFtaWx5OmFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6MTRweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6IzhmMDcwNyAhaW1wb3J0YW50OyBib3JkZXI6MCAhaW1wb3J0YW50OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4ICFpbXBvcnRhbnQ7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHggIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czo0cHggIWltcG9ydGFudDsgY29sb3I6I2ZmZiAhaW1wb3J0YW50OyBwYWRkaW5nOjEwcHggIWltcG9ydGFudDsgfQogI19mb3JtXzMxXyAuX2Nsb3NlLWljb24geyBjdXJzb3I6cG9pbnRlcjsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2h0dHBzOi8vZDIyNmFqNGFvMXQ2MXEuY2xvdWRmcm9udC5uZXQvZXNma3lqaDF1X2Zvcm1zLWNsb3NlLWRhcmsucG5nJyk7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjE0LjJweCAxNC4ycHg7IHBvc2l0aW9uOmFic29sdXRlOyBkaXNwbGF5OmJsb2NrOyB0b3A6MTFweDsgcmlnaHQ6OXB4OyBvdmVyZmxvdzpoaWRkZW47IHdpZHRoOjE2LjJweDsgaGVpZ2h0OjE2LjJweDsgfQogI19mb3JtXzMxXyAuX2Nsb3NlLWljb246YmVmb3JlIHsgcG9zaXRpb246cmVsYXRpdmU7IH0KICNfZm9ybV8zMV8gLl9mb3JtLWJvZHkgeyBtYXJnaW4tYm90dG9tOjMwcHg7IH0KICNfZm9ybV8zMV8gLl9mb3JtLWltYWdlLWxlZnQgeyB3aWR0aDoxNTBweDsgZmxvYXQ6bGVmdDsgfQogI19mb3JtXzMxXyAuX2Zvcm0tY29udGVudC1yaWdodCB7IG1hcmdpbi1sZWZ0OjE2NHB4OyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1icmFuZGluZyB7IGNvbG9yOiNmZmY7IGZvbnQtc2l6ZToxMHB4OyBjbGVhcjpib3RoOyB0ZXh0LWFsaWduOmxlZnQ7IG1hcmdpbi10b3A6MzBweDsgZm9udC13ZWlnaHQ6MTAwOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1icmFuZGluZyAuX2xvZ28geyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMzBweDsgaGVpZ2h0OjE0cHg7IG1hcmdpbi10b3A6NnB4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnaHR0cHM6Ly9kMjI2YWo0YW8xdDYxcS5jbG91ZGZyb250Lm5ldC9oaDl1anFndjVfYWNsb2dvX2xpLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MTMwcHggYXV0bzsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1sYWJlbCwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IC5fZm9ybS1sYWJlbCB7IGZvbnQtd2VpZ2h0OmJvbGQ7IG1hcmdpbi1ib3R0b206NXB4OyBkaXNwbGF5OmJsb2NrOyB9CiAjX2Zvcm1fMzFfL
l9kYXJrIC5fZm9ybS1icmFuZGluZyB7IGNvbG9yOiMzMzM7IH0KICNfZm9ybV8zMV8uX2RhcmsgLl9mb3JtLWJyYW5kaW5nIC5fbG9nbyB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCdodHRwczovL2QyMjZhajRhbzF0NjFxLmNsb3VkZnJvbnQubmV0L2pmdHEyYzhzX2FjbG9nb19kay5wbmcnKTsgfQogI19mb3JtXzMxXyAuX2Zvcm1fZWxlbWVudCB7IHBvc2l0aW9uOnJlbGF0aXZlOyBtYXJnaW4tYm90dG9tOjEwcHg7IGZvbnQtc2l6ZTowOyBtYXgtd2lkdGg6MTAwJTsgfQogI19mb3JtXzMxXyAuX2Zvcm1fZWxlbWVudCAqIHsgZm9udC1zaXplOjE0cHg7IH0KICNfZm9ybV8zMV8gLl9mb3JtX2VsZW1lbnQuX2NsZWFyIHsgY2xlYXI6Ym90aDsgd2lkdGg6MTAwJTsgZmxvYXQ6bm9uZTsgfQogI19mb3JtXzMxXyAuX2Zvcm1fZWxlbWVudC5fY2xlYXI6YWZ0ZXIgeyBjbGVhcjpsZWZ0OyB9CiAjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IGlucHV0W3R5cGU9InRleHQiXSwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IGlucHV0W3R5cGU9ImRhdGUiXSwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IHNlbGVjdCwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IHRleHRhcmVhOm5vdCguZy1yZWNhcHRjaGEtcmVzcG9uc2UpIHsgZGlzcGxheTpibG9jazsgd2lkdGg6MTAwJTsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0KICNfZm9ybV8zMV8gLl9maWVsZC13cmFwcGVyIHsgcG9zaXRpb246cmVsYXRpdmU7IH0KICNfZm9ybV8zMV8gLl9pbmxpbmUtc3R5bGUgeyBmbG9hdDpsZWZ0OyB9CiAjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlIGlucHV0W3R5cGU9InRleHQiXSB7IHdpZHRoOjE1MHB4OyB9CiAjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlOm5vdCguX2NsZWFyKSArIC5faW5saW5lLXN0eWxlOm5vdCguX2NsZWFyKSB7IG1hcmdpbi1sZWZ0OjIwcHg7IH0KICNfZm9ybV8zMV8gLl9mb3JtX2VsZW1lbnQgaW1nLl9mb3JtLWltYWdlIHsgbWF4LXdpZHRoOjEwMCU7IH0KICNfZm9ybV8zMV8gLl9jbGVhci1lbGVtZW50IHsgY2xlYXI6bGVmdDsgfQogI19mb3JtXzMxXyAuX2Z1bGxfd2lkdGggeyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybV9mdWxsX2ZpZWxkIHsgZGlzcGxheTpibG9jazsgd2lkdGg6MTAwJTsgbWFyZ2luLWJvdHRvbToxMHB4OyB9CiAjX2Zvcm1fMzFfIGlucHV0W3R5cGU9InRleHQiXS5faGFzX2Vycm9yLCNfZm9ybV8zMV8gdGV4dGFyZWEuX2hhc19lcnJvciB7IGJvcmRlcjojZjM3YzdiIDFweCBzb2xpZDsgfQogI19mb3JtXzMxXyBpbnB1dFt0eXBlPSJjaGVja2JveCJdLl9oYXNfZXJyb3IgeyBvdXRsaW5lOiNmMzdjN2IgMXB4IHNvbGlkOyB9CiAjX2Zvcm1fMzFfIC5fZXJyb3IgeyBkaXNwbGF5OmJsb2NrOyBwb3NpdGlvbjphYnNvbHV0ZTsgZm9udC1zaXplOjEzcHg7IHotaW5kZXg6MTAwMDAwMDE7IH0KICNfZm9ybV8zMV8gLl9lcnJvci5fYWJvdmUgeyBwYWRkaW5nLWJvdHRvbTo0cHg7IHRvcDotNDFweDsgcmlnaHQ6MDsgfQogI19mb3JtXzMxXyAuX2Vycm9yLl9iZWxvdyB7IHBhZGRpbmctdG9wOjRweDsgdG9wOjEwMCU7IHJpZ2h0OjA7IH0KICNfZm9ybV8zMV8gLl9lcnJvci5fYWJvdmUgLl9lcnJvci1hcnJvdyB7IGJvdHRvbTowOyByaWdodDoxNXB4OyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6NXB4IHNvbGlkICNmMzdjN2I7IH0KICNfZm9ybV8zMV8gLl9lcnJvci5fYmVsb3cgLl9lcnJvci1hcnJvdyB7IHRvcDowOyByaWdodDoxNXB4OyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1ib3R0b206NXB4IHNvbGlkICNmMzdjN2I7IH0KICNfZm9ybV8zMV8gLl9lcnJvci1pbm5lciB7IHBhZGRpbmc6OHB4IDEycHg7IGJhY2tncm91bmQtY29sb3I6I2YzN2M3YjsgZm9udC1zaXplOjEzcHg7IGZvbnQtZmFtaWx5OmFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyB9CiAjX2Zvcm1fMzFfIC5fZXJyb3ItaW5uZXIuX2Zvcm1fZXJyb3IgeyBtYXJnaW4tYm90dG9tOjVweDsgdGV4dC1hbGlnbjpsZWZ0OyB9CiAjX2Zvcm1fMzFfIC5fYnV0dG9uLXdyYXBwZXIgLl9lcnJvci1pbm5lci5fZm9ybV9lcnJvciB7IHBvc2l0aW9uOnN0YXRpYzsgfQogI19mb3JtXzMxXyAuX2Vycm9yLWlubmVyLl9ub19hcnJvdyB7IG1hcmdpbi1ib3R0b206MTBweDsgfQogI19mb3JtXzMxXyAuX2Vycm9yLWFycm93IHsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjA7IGhlaWdodDowOyB9CiAjX2Zvcm1fMzFfIC5fZXJyb3ItaHRtbCB7IG1hcmdpbi1ib3R0b206MTBweDsgfQogLnBpa2Etc2luZ2xlIHsgei1pbmRleDoxMDAwMDAwMSAhaW1wb3J0YW50OyB9CiBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjMyMHB4KSBhbmQgKG1heC13aWR0aDo2NjdweCkgeyA6Oi13ZWJraXQtc2Nyb2xsYmFyIHsgZGlzcGxheTpub25lOyB9CiAjX2Zvcm1fMzFfIHsgbWFyZ2luOjA7IHdpZHRoOjEwMCU7IG1pbi13aWR0aDoxMDAlOyBtYXgtd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyB9CiAjX2Zvcm1fMzFfICogeyAtd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgLW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgZm9udC1zaXplOjFlbTsgfQogI19mb3JtXzMxXyAuX2Zvcm0tY29udGVudCB7IG1hcmdpbjowOyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1pbm5lciB7IGRpc3BsYXk6YmxvY2s7IG1pbi13aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS10aXRsZSwjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlIHsgbWFyZ2luLXRvcDowOyBtYXJnaW4tcmlnaHQ6MDsgbWFyZ2luLWxlZnQ6MDsgfQogI19mb3JtXzMxXyAuX2Zvcm0tdGl0bGUgeyBmb250LXNpemU6MS4yZW07IH0KICNfZm9ybV8zMV8gLl9mb3JtX2VsZW1lbnQgeyBtYXJnaW46MCAwIDIwcHg7IHBhZGRpbmc6MDsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzMxXyAuX2Zvcm0tZWxlbWVudCwjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlLCNfZm9ybV8zMV8gaW5wdXRbdHlwZT0idGV4dCJdLCNfZm9ybV8zMV8gbGFiZWwsI19mb3JtXzMxXyBwLCNfZm9ybV8zMV8gdGV4dGFyZWE6bm90KC5nLXJlY2FwdGNoYS1yZXNwb25zZSkgeyBmbG9hdDpub25lOyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fcm93Ll9jaGVja2JveC1yYWRpbyBsYWJlbCB7IGRpc3BsYXk6aW5saW5lOyB9CiAjX2Zvcm1fMzFfIC5fcm93LCNfZm9ybV8zMV8gcCwjX2Zvcm1fMzFfIGxhYmVsIHsgbWFyZ2luLWJvdHRvbTowLjdlbTsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzMxXyAuX3JvdyBpbnB1dFt0eXBlPSJjaGVja2JveCJdLCNfZm9ybV8zMV8gLl9yb3cgaW5wdXRbdHlwZT0icmFkaW8iXSB7IG1hcmdpbjowICFpbXBvcnRhbnQ7IHZlcnRpY2FsLWFsaWduOm1pZGRsZSAhaW1wb3J0YW50OyB9CiAjX2Zvcm1fMzFfIC5fcm93IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gKyBzcGFuIGxhYmVsIHsgZGlzcGxheTppbmxpbmU7IH0KICNfZm9ybV8zMV8gLl9yb3cgc3BhbiBsYWJlbCB7IG1hcmdpbjowICFpbXBvcnRhbnQ7IHdpZHRoOmluaXRpYWwgIWltcG9ydGFudDsgdmVydGljYWwtYWxpZ246bWlkZGxlICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zMV8gLl9mb3JtLWltYWdlIHsgbWF4LXdpZHRoOjEwMCU7IGhlaWdodDphdXRvICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zMV8gaW5wdXRbdHlwZT0idGV4dCJdIHsgcGFkZGluZy1sZWZ0OjEwcHg7IHBhZGRpbmctcmlnaHQ6MTBweDsgZm9udC1zaXplOjE2cHg7IGxpbmUtaGVpZ2h0OjEuM2VtOyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgfQogI19mb3JtXzMxXyBpbnB1dFt0eXBlPSJyYWRpbyJdLCNfZm9ybV8zMV8gaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB3aWR0aDoxLjNlbTsgaGVpZ2h0OjEuM2VtOyBmb250LXNpemU6MWVtOyBtYXJnaW46MCAwLjNlbSAwIDA7IHZlcnRpY2FsLWFsaWduOmJhc2VsaW5lOyB9CiAjX2Zvcm1fMzFfIGJ1dHRvblt0eXBlPSJzdWJtaXQiXSB7IHBhZGRpbmc6MjBweDsgZm9udC1zaXplOjEuNWVtOyB9CiAjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlIHsgbWFyZ2luOjIwcHggMCAwICFpbXBvcnRhbnQ7IH0KIH0KICNfZm9ybV8zMV8geyBwb3NpdGlvbjpyZWxhdGl2ZTsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW46MjVweCBhdXRvIDA7IHBhZGRpbmc6MjBweDsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7ICp6b29tOjE7IGJhY2tncm91bmQ6I2ZmZiAhaW1wb3J0YW50OyBib3JkZXI6MHB4IHNvbGlkICNiMGIwYjAgIWltcG9ydGFudDsgd2lkdGg6NTAwcHg7IC1tb3otYm9yZGVyLXJhZGl1czowcHggIWltcG9ydGFudDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjBweCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjBweCAhaW1wb3J0YW50OyBjb2xvcjojMDAwICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zMV8gLl9mb3JtLXRpdGxlIHsgZm9udC1zaXplOjIycHg7IGxpbmUtaGVpZ2h0OjIycHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWFyZ2luLWJvdHRvbTowOyB9CiAjX2Zvcm1fMzFfOmJlZm9yZSwjX2Zvcm1fMzFfOmFmdGVyIHsgY29udGVudDoiICI7IGRpc3BsYXk6dGFibGU7IH0KICNfZm9ybV8zMV86YWZ0ZXIgeyBjbGVhcjpib3RoOyB9CiAjX2Zvcm1fMzFfLl9pbmxpbmUtc3R5bGUgeyB3aWR0aDphdXRvOyBkaXNwbGF5OmlubGluZS1ibG9jazsgfQogI19mb3JtXzMxXy5faW5saW5lLXN0eWxlIGlucHV0W3R5cGU9InRleHQiXSwjX2Zvcm1fMzFfLl9pbmxpbmUtc3R5bGUgaW5wdXRbdHlwZT0iZGF0ZSJdIHsgcGFkZGluZzoxMHB4IDEycHg7IH0KICNfZm9ybV8zMV8uX2lubGluZS1zdHlsZSBidXR0b24uX2lubGluZS1zdHlsZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6MjdweDsgfQogI19mb3JtXzMxXy5faW5saW5lLXN0eWxlIHAgeyBtYXJnaW46MDsgfQogI19mb3JtXzMxXy5faW5saW5lLXN0eWxlIC5fYnV0dG9uLXdyYXBwZXIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luOjI3cHggMTIuNXB4IDAgMjBweDsgfQogI19mb3JtXzMxXyAuX2Zvcm0tdGhhbmsteW91IHsgcG9zaXRpb246cmVsYXRpdmU7IGxlZnQ6MDsgcmlnaHQ6MDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxOHB4OyB9CiBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjMyMHB4KSBhbmQgKG1heC13aWR0aDo2NjdweCkgeyAjX2Zvcm1fMzFfLl9pbmxpbmUtZm9ybS5faW5saW5lLXN0eWxlIC5faW5saW5lLXN0eWxlLl9idXR0b24td3JhcHBlciB7IG1hcmdpbi10b3A6MjBweCAhaW1wb3J0YW50OyBtYXJnaW4tbGVmdDowICFpbXBvcnRhbnQ7IH0KIH0KPC9zdHlsZT4KPGZvcm0gbWV0aG9kPSJQT1NUIiBhY3Rpb249Imh0dHBzOi8vY2Z0ZS5hY3RpdmVob3N0ZWQuY29tL3Byb2MucGhwIiBpZD0iX2Zvcm1fMzFfIiBjbGFzcz0iX2Zvcm0gX2Zvcm1fMzEgX2lubGluZS1mb3JtICBfZGFyayIgbm92YWxpZGF0ZT4KICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ1IiB2YWx1ZT0iMzEiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZiIgdmFsdWU9IjMxIiAvPgogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InMiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYyIgdmFsdWU9IjAiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibSIgdmFsdWU9IjAiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3ViIiAvPgogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InYiIHZhbHVlPSIyIiAvPgogIDxkaXYgY2xh
c3M9Il9mb3JtLWNvbnRlbnQiPgogICAgPGRpdiBjbGFzcz0iX2Zvcm1fZWxlbWVudCBfeDU0MjQzOTgyIF9mdWxsX3dpZHRoIF9jbGVhciIgPgogICAgICA8ZGl2IGNsYXNzPSJfZm9ybS10aXRsZSI+CiAgICAgICAgU3Vic2NyaWJlIHRvIENGVEUmIzAzOTtzIEV2ZW50IE5ld3NsZXR0ZXIKICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Il9mb3JtX2VsZW1lbnQgX3g2MDkzMzQ3MiBfZnVsbF93aWR0aCAiID4KICAgICAgPGxhYmVsIGNsYXNzPSJfZm9ybS1sYWJlbCI+CiAgICAgICAgRmlyc3QgTmFtZSoKICAgICAgPC9sYWJlbD4KICAgICAgPGRpdiBjbGFzcz0iX2ZpZWxkLXdyYXBwZXIiPgogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmaXJzdG5hbWUiIHBsYWNlaG9sZGVyPSJUeXBlIHlvdXIgZmlyc3QgbmFtZSIgcmVxdWlyZWQvPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iX2Zvcm1fZWxlbWVudCBfeDQyNjQ4NjAwIF9mdWxsX3dpZHRoICIgPgogICAgICA8bGFiZWwgY2xhc3M9Il9mb3JtLWxhYmVsIj4KICAgICAgICBMYXN0IE5hbWUqCiAgICAgIDwvbGFiZWw+CiAgICAgIDxkaXYgY2xhc3M9Il9maWVsZC13cmFwcGVyIj4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibGFzdG5hbWUiIHBsYWNlaG9sZGVyPSJUeXBlIHlvdXIgbGFzdCBuYW1lIiByZXF1aXJlZC8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF94MDQ5NzQ5MTkgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgIEVtYWlsKgogICAgICA8L2xhYmVsPgogICAgICA8ZGl2IGNsYXNzPSJfZmllbGQtd3JhcHBlciI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImVtYWlsIiBwbGFjZWhvbGRlcj0iVHlwZSB5b3VyIGVtYWlsIiByZXF1aXJlZC8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF9maWVsZDEgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgIENvdW50cnkqCiAgICAgIDwvbGFiZWw+CiAgICAgIDxkaXYgY2xhc3M9Il9maWVsZC13cmFwcGVyIj4KICAgICAgICA8c2VsZWN0IG5hbWU9ImZpZWxkWzFdIiByZXF1aXJlZD4KICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFmZ2hhbmlzdGFuIiA+CiAgICAgICAgICAgIEFmZ2hhbmlzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFsYmFuaWEiID4KICAgICAgICAgICAgQWxiYW5pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBbGdlcmlhIiA+CiAgICAgICAgICAgIEFsZ2VyaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW1lcmljYW4gU2Ftb2EiID4KICAgICAgICAgICAgQW1lcmljYW4gU2Ftb2EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW5kb3JyYSIgPgogICAgICAgICAgICBBbmRvcnJhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFuZ29sYSIgPgogICAgICAgICAgICBBbmdvbGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW5ndWlsbGEiID4KICAgICAgICAgICAgQW5ndWlsbGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW50YXJjdGljYSIgPgogICAgICAgICAgICBBbnRhcmN0aWNhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFudGlndWEgYW5kIEJhcmJ1ZGEiID4KICAgICAgICAgICAgQW50aWd1YSBhbmQgQmFyYnVkYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBcmdlbnRpbmEiID4KICAgICAgICAgICAgQXJnZW50aW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFybWVuaWEiID4KICAgICAgICAgICAgQXJtZW5pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBcnViYSIgPgogICAgICAgICAgICBBcnViYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBdXN0cmFsaWEiID4KICAgICAgICAgICAgQXVzdHJhbGlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkF1c3RyaWEiID4KICAgICAgICAgICAgQXVzdHJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBemVyYmFpamFuIiA+CiAgICAgICAgICAgIEF6ZXJiYWlqYW4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmFoYW1hcyIgPgogICAgICAgICAgICBCYWhhbWFzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJhaHJhaW4iID4KICAgICAgICAgICAgQmFocmFpbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCYW5nbGFkZXNoIiA+CiAgICAgICAgICAgIEJhbmdsYWRlc2gKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmFyYmFkb3MiID4KICAgICAgICAgICAgQmFyYmFkb3MKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmVsYXJ1cyIgPgogICAgICAgICAgICBCZWxhcnVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJlbGdpdW0iID4KICAgICAgICAgICAgQmVsZ2l1bQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCZWxpemUiID4KICAgICAgICAgICAgQmVsaXplCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJlbmluIiA+CiAgICAgICAgICAgIEJlbmluCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJlcm11ZGEiID4KICAgICAgICAgICAgQmVybXVkYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCaHV0YW4iID4KICAgICAgICAgICAgQmh1dGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJvbGl2aWEiID4KICAgICAgICAgICAgQm9saXZpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCb3NuaWEgYW5kIEhlcnplZ292aW5hIiA+CiAgICAgICAgICAgIEJvc25pYSBhbmQgSGVyemVnb3ZpbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQm90c3dhbmEiID4KICAgICAgICAgICAgQm90c3dhbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQm91dmV0IElzbGFuZCIgPgogICAgICAgICAgICBCb3V2ZXQgSXNsYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJyYXppbCIgPgogICAgICAgICAgICBCcmF6aWwKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQnJpdGlzaCBJbmRpYW4gT2NlYW4gVGVycml0b3J5IiA+CiAgICAgICAgICAgIEJyaXRpc2ggSW5kaWFuIE9jZWFuIFRlcnJpdG9yeQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCcnVuZWkgRGFydXNzYWxhbSIgPgogICAgICAgICAgICBCcnVuZWkgRGFydXNzYWxhbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCdWxnYXJpYSIgPgogICAgICAgICAgICBCdWxnYXJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCdXJraW5hIEZhc28iID4KICAgICAgICAgICAgQnVya2luYSBGYXNvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJ1cnVuZGkiID4KICAgICAgICAgICAgQnVydW5kaQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYW1ib2RpYSIgPgogICAgICAgICAgICBDYW1ib2RpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYW1lcm9vbiIgPgogICAgICAgICAgICBDYW1lcm9vbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYW5hZGEiID4KICAgICAgICAgICAgQ2FuYWRhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNhcGUgVmVyZGUiID4KICAgICAgICAgICAgQ2FwZSBWZXJkZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYXltYW4gSXNsYW5kcyIgPgogICAgICAgICAgICBDYXltYW4gSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDZW50cmFsIEFmcmljYW4gUmVwdWJsaWMiID4KICAgICAgICAgICAgQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNoYWQiID4KICAgICAgICAgICAgQ2hhZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDaGlsZSIgPgogICAgICAgICAgICBDaGlsZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDaGluYSIgPgogICAgICAgICAgICBDaGluYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDaHJpc3RtYXMgSXNsYW5kIiA+CiAgICAgICAgICAgIENocmlzdG1hcyBJc2xhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29jb3MgKEtlZWxpbmcpIElzbGFuZHMiID4KICAgICAgICAgICAgQ29jb3MgKEtlZWxpbmcpIElzbGFuZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29sb21iaWEiID4KICAgICAgICAgICAgQ29sb21iaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29tb3JvcyIgPgogICAgICAgICAgICBDb21vcm9zCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNvbmdvIiA+CiAgICAgICAgICAgIENvbmdvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNvbmdvLCB0aGUgRGVtb2NyYXRpYyBSZXB1YmxpYyBvZiB0aGUiID4KICAgICAgICAgICAgQ29uZ28sIHRoZSBEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDb29rIElzbGFuZHMiID4KICAgICAgICAgICAgQ29vayBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNvc3RhIFJpY2EiID4KICAgICAgICAgICAgQ29zdGEgUmljYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDb3RlIEQmIzAzOTtJdm9pcmUiID4KICAgICAgICAgICAgQ290ZSBEJiMwMzk7SXZvaXJlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNyb2F0aWEiID4KICAgICAgICAgICAgQ3JvYXRpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDdWJhIiA+CiAgICAgICAgICAgIEN1YmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ3lwcnVzIiA+CiAgICAgICAgICAgIEN5cHJ1cwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDemVjaCBSZXB1YmxpYyIgPgogICAgICAgICAgICBDemVjaCBSZXB1YmxpYwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJEZW5tYXJrIiA+CiAgICAgICAgICAgIERlbm1hcmsKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRGppYm91dGkiID4KICAgICAgICAgICAgRGppYm91dGkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRG9taW5pY2EiID4KICA
gICAgICAgICAgRG9taW5pY2EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRG9taW5pY2FuIFJlcHVibGljIiA+CiAgICAgICAgICAgIERvbWluaWNhbiBSZXB1YmxpYwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJFY3VhZG9yIiA+CiAgICAgICAgICAgIEVjdWFkb3IKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRWd5cHQiID4KICAgICAgICAgICAgRWd5cHQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRWwgU2FsdmFkb3IiID4KICAgICAgICAgICAgRWwgU2FsdmFkb3IKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRXF1YXRvcmlhbCBHdWluZWEiID4KICAgICAgICAgICAgRXF1YXRvcmlhbCBHdWluZWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRXJpdHJlYSIgPgogICAgICAgICAgICBFcml0cmVhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkVzdG9uaWEiID4KICAgICAgICAgICAgRXN0b25pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJFdGhpb3BpYSIgPgogICAgICAgICAgICBFdGhpb3BpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGYWxrbGFuZCBJc2xhbmRzIChNYWx2aW5hcykiID4KICAgICAgICAgICAgRmFsa2xhbmQgSXNsYW5kcyAoTWFsdmluYXMpCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZhcm9lIElzbGFuZHMiID4KICAgICAgICAgICAgRmFyb2UgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGaWppIiA+CiAgICAgICAgICAgIEZpamkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRmlubGFuZCIgPgogICAgICAgICAgICBGaW5sYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZyYW5jZSIgPgogICAgICAgICAgICBGcmFuY2UKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRnJlbmNoIEd1aWFuYSIgPgogICAgICAgICAgICBGcmVuY2ggR3VpYW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZyZW5jaCBQb2x5bmVzaWEiID4KICAgICAgICAgICAgRnJlbmNoIFBvbHluZXNpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXMiID4KICAgICAgICAgICAgRnJlbmNoIFNvdXRoZXJuIFRlcnJpdG9yaWVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdhYm9uIiA+CiAgICAgICAgICAgIEdhYm9uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdhbWJpYSIgPgogICAgICAgICAgICBHYW1iaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR2VvcmdpYSIgPgogICAgICAgICAgICBHZW9yZ2lhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikdlcm1hbnkiID4KICAgICAgICAgICAgR2VybWFueQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHaGFuYSIgPgogICAgICAgICAgICBHaGFuYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHaWJyYWx0YXIiID4KICAgICAgICAgICAgR2licmFsdGFyCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdyZWVjZSIgPgogICAgICAgICAgICBHcmVlY2UKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3JlZW5sYW5kIiA+CiAgICAgICAgICAgIEdyZWVubGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHcmVuYWRhIiA+CiAgICAgICAgICAgIEdyZW5hZGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3VhZGVsb3VwZSIgPgogICAgICAgICAgICBHdWFkZWxvdXBlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1YW0iID4KICAgICAgICAgICAgR3VhbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHdWF0ZW1hbGEiID4KICAgICAgICAgICAgR3VhdGVtYWxhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1ZXJuc2V5IiA+CiAgICAgICAgICAgIEd1ZXJuc2V5CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1aW5lYSIgPgogICAgICAgICAgICBHdWluZWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3VpbmVhLUJpc3NhdSIgPgogICAgICAgICAgICBHdWluZWEtQmlzc2F1CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1eWFuYSIgPgogICAgICAgICAgICBHdXlhbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSGFpdGkiID4KICAgICAgICAgICAgSGFpdGkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSGVhcmQgSXNsYW5kIGFuZCBNY2RvbmFsZCBJc2xhbmRzIiA+CiAgICAgICAgICAgIEhlYXJkIElzbGFuZCBhbmQgTWNkb25hbGQgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIb2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKSIgPgogICAgICAgICAgICBIb2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIb25kdXJhcyIgPgogICAgICAgICAgICBIb25kdXJhcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIb25nIEtvbmciID4KICAgICAgICAgICAgSG9uZyBLb25nCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikh1bmdhcnkiID4KICAgICAgICAgICAgSHVuZ2FyeQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJY2VsYW5kIiA+CiAgICAgICAgICAgIEljZWxhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSW5kaWEiID4KICAgICAgICAgICAgSW5kaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSW5kb25lc2lhIiA+CiAgICAgICAgICAgIEluZG9uZXNpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJcmFuLCBJc2xhbWljIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIElyYW4sIElzbGFtaWMgUmVwdWJsaWMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSXJhcSIgPgogICAgICAgICAgICBJcmFxCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IklyZWxhbmQiID4KICAgICAgICAgICAgSXJlbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJc3JhZWwiID4KICAgICAgICAgICAgSXNyYWVsCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikl0YWx5IiA+CiAgICAgICAgICAgIEl0YWx5CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkphbWFpY2EiID4KICAgICAgICAgICAgSmFtYWljYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJKYXBhbiIgPgogICAgICAgICAgICBKYXBhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJKb3JkYW4iID4KICAgICAgICAgICAgSm9yZGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkthemFraHN0YW4iID4KICAgICAgICAgICAgS2F6YWtoc3RhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLZW55YSIgPgogICAgICAgICAgICBLZW55YQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLaXJpYmF0aSIgPgogICAgICAgICAgICBLaXJpYmF0aQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLb3JlYSwgRGVtb2NyYXRpYyBQZW9wbGUmIzAzOTtzIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIEtvcmVhLCBEZW1vY3JhdGljIFBlb3BsZSYjMDM5O3MgUmVwdWJsaWMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iS29yZWEsIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIEtvcmVhLCBSZXB1YmxpYyBvZgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLdXdhaXQiID4KICAgICAgICAgICAgS3V3YWl0CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikt5cmd5enN0YW4iID4KICAgICAgICAgICAgS3lyZ3l6c3RhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMYW8gUGVvcGxlJiMwMzk7cyBEZW1vY3JhdGljIFJlcHVibGljIiA+CiAgICAgICAgICAgIExhbyBQZW9wbGUmIzAzOTtzIERlbW9jcmF0aWMgUmVwdWJsaWMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTGF0dmlhIiA+CiAgICAgICAgICAgIExhdHZpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMZWJhbm9uIiA+CiAgICAgICAgICAgIExlYmFub24KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTGVzb3RobyIgPgogICAgICAgICAgICBMZXNvdGhvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkxpYmVyaWEiID4KICAgICAgICAgICAgTGliZXJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMaWJ5YW4gQXJhYiBKYW1haGlyaXlhIiA+CiAgICAgICAgICAgIExpYnlhbiBBcmFiIEphbWFoaXJpeWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTGllY2h0ZW5zdGVpbiIgPgogICAgICAgICAgICBMaWVjaHRlbnN0ZWluCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkxpdGh1YW5pYSIgPgogICAgICAgICAgICBMaXRodWFuaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTHV4ZW1ib3VyZyIgPgogICAgICAgICAgICBMdXhlbWJvdXJnCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hY2FvIiA+CiAgICAgICAgICAgIE1hY2FvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hY2Vkb25pYSwgdGhlIEZvcm1lciBZdWdvc2xhdiBSZXB1YmxpYyBvZiIgPgogICAgICAgICAgICBNYWNlZG9uaWEsIHRoZSBGb3JtZXIgWXVnb3NsYXYgUmVwdWJsaWMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFkYWdhc2NhciIgPgogICAgICAgICAgICBNYWRhZ2FzY2FyCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hbGF3aSIgPgogICAgICAgICAgICBNYWxhd2kKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFsYXlzaWEiID4KICAgICAgICAgICAgTWFsYXlzaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFsZGl2ZXMiID4KICAgICAgICAgICAgTWFsZGl2ZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFsaSIgPgogICAgICAgICAgICBNYWxpCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hbHRhIiA+CiAgICAgICAgICAgIE1hbHRhCiAgICAgICAgICA8L2
9wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hcnNoYWxsIElzbGFuZHMiID4KICAgICAgICAgICAgTWFyc2hhbGwgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNYXJ0aW5pcXVlIiA+CiAgICAgICAgICAgIE1hcnRpbmlxdWUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWF1cml0YW5pYSIgPgogICAgICAgICAgICBNYXVyaXRhbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hdXJpdGl1cyIgPgogICAgICAgICAgICBNYXVyaXRpdXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWF5b3R0ZSIgPgogICAgICAgICAgICBNYXlvdHRlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1leGljbyIgPgogICAgICAgICAgICBNZXhpY28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWljcm9uZXNpYSwgRmVkZXJhdGVkIFN0YXRlcyBvZiIgPgogICAgICAgICAgICBNaWNyb25lc2lhLCBGZWRlcmF0ZWQgU3RhdGVzIG9mCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1vbGRvdmEsIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIE1vbGRvdmEsIFJlcHVibGljIG9mCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1vbmFjbyIgPgogICAgICAgICAgICBNb25hY28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW9uZ29saWEiID4KICAgICAgICAgICAgTW9uZ29saWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW9udGVuZWdybyIgPgogICAgICAgICAgICBNb250ZW5lZ3JvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1vbnRzZXJyYXQiID4KICAgICAgICAgICAgTW9udHNlcnJhdAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNb3JvY2NvIiA+CiAgICAgICAgICAgIE1vcm9jY28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW96YW1iaXF1ZSIgPgogICAgICAgICAgICBNb3phbWJpcXVlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik15YW5tYXIiID4KICAgICAgICAgICAgTXlhbm1hcgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOYW1pYmlhIiA+CiAgICAgICAgICAgIE5hbWliaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmF1cnUiID4KICAgICAgICAgICAgTmF1cnUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmVwYWwiID4KICAgICAgICAgICAgTmVwYWwKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmV0aGVybGFuZHMiID4KICAgICAgICAgICAgTmV0aGVybGFuZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmV0aGVybGFuZHMgQW50aWxsZXMiID4KICAgICAgICAgICAgTmV0aGVybGFuZHMgQW50aWxsZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmV3IENhbGVkb25pYSIgPgogICAgICAgICAgICBOZXcgQ2FsZWRvbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5ldyBaZWFsYW5kIiA+CiAgICAgICAgICAgIE5ldyBaZWFsYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5pY2FyYWd1YSIgPgogICAgICAgICAgICBOaWNhcmFndWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmlnZXIiID4KICAgICAgICAgICAgTmlnZXIKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmlnZXJpYSIgPgogICAgICAgICAgICBOaWdlcmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5pdWUiID4KICAgICAgICAgICAgTml1ZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOb3Jmb2xrIElzbGFuZCIgPgogICAgICAgICAgICBOb3Jmb2xrIElzbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOb3J0aGVybiBNYXJpYW5hIElzbGFuZHMiID4KICAgICAgICAgICAgTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5vcndheSIgPgogICAgICAgICAgICBOb3J3YXkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iT21hbiIgPgogICAgICAgICAgICBPbWFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBha2lzdGFuIiA+CiAgICAgICAgICAgIFBha2lzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBhbGF1IiA+CiAgICAgICAgICAgIFBhbGF1CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBhbGVzdGluaWFuIFRlcnJpdG9yeSwgT2NjdXBpZWQiID4KICAgICAgICAgICAgUGFsZXN0aW5pYW4gVGVycml0b3J5LCBPY2N1cGllZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQYW5hbWEiID4KICAgICAgICAgICAgUGFuYW1hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBhcHVhIE5ldyBHdWluZWEiID4KICAgICAgICAgICAgUGFwdWEgTmV3IEd1aW5lYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQYXJhZ3VheSIgPgogICAgICAgICAgICBQYXJhZ3VheQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQZXJ1IiA+CiAgICAgICAgICAgIFBlcnUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUGhpbGlwcGluZXMiID4KICAgICAgICAgICAgUGhpbGlwcGluZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUGl0Y2Fpcm4iID4KICAgICAgICAgICAgUGl0Y2Fpcm4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUG9sYW5kIiA+CiAgICAgICAgICAgIFBvbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQb3J0dWdhbCIgPgogICAgICAgICAgICBQb3J0dWdhbAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQdWVydG8gUmljbyIgPgogICAgICAgICAgICBQdWVydG8gUmljbwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJRYXRhciIgPgogICAgICAgICAgICBRYXRhcgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJSZXVuaW9uIiA+CiAgICAgICAgICAgIFJldW5pb24KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUm9tYW5pYSIgPgogICAgICAgICAgICBSb21hbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlJ1c3NpYW4gRmVkZXJhdGlvbiIgPgogICAgICAgICAgICBSdXNzaWFuIEZlZGVyYXRpb24KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUndhbmRhIiA+CiAgICAgICAgICAgIFJ3YW5kYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTYWludCBIZWxlbmEiID4KICAgICAgICAgICAgU2FpbnQgSGVsZW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhaW50IEtpdHRzIGFuZCBOZXZpcyIgPgogICAgICAgICAgICBTYWludCBLaXR0cyBhbmQgTmV2aXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2FpbnQgTHVjaWEiID4KICAgICAgICAgICAgU2FpbnQgTHVjaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2FpbnQgUGllcnJlIGFuZCBNaXF1ZWxvbiIgPgogICAgICAgICAgICBTYWludCBQaWVycmUgYW5kIE1pcXVlbG9uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzIiA+CiAgICAgICAgICAgIFNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhbW9hIiA+CiAgICAgICAgICAgIFNhbW9hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhbiBNYXJpbm8iID4KICAgICAgICAgICAgU2FuIE1hcmlubwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTYW8gVG9tZSBhbmQgUHJpbmNpcGUiID4KICAgICAgICAgICAgU2FvIFRvbWUgYW5kIFByaW5jaXBlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhdWRpIEFyYWJpYSIgPgogICAgICAgICAgICBTYXVkaSBBcmFiaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2VuZWdhbCIgPgogICAgICAgICAgICBTZW5lZ2FsCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNlcmJpYSIgPgogICAgICAgICAgICBTZXJiaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2V5Y2hlbGxlcyIgPgogICAgICAgICAgICBTZXljaGVsbGVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNpZXJyYSBMZW9uZSIgPgogICAgICAgICAgICBTaWVycmEgTGVvbmUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2luZ2Fwb3JlIiA+CiAgICAgICAgICAgIFNpbmdhcG9yZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTbG92YWtpYSIgPgogICAgICAgICAgICBTbG92YWtpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTbG92ZW5pYSIgPgogICAgICAgICAgICBTbG92ZW5pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTb2xvbW9uIElzbGFuZHMiID4KICAgICAgICAgICAgU29sb21vbiBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNvbWFsaWEiID4KICAgICAgICAgICAgU29tYWxpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTb3V0aCBBZnJpY2EiID4KICAgICAgICAgICAgU291dGggQWZyaWNhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNvdXRoIEdlb3JnaWEgYW5kIHRoZSBTb3V0aCBTYW5kd2ljaCBJc2xhbmRzIiA+CiAgICAgICAgICAgIFNvdXRoIEdlb3JnaWEgYW5kIHRoZSBTb3V0aCBTYW5kd2ljaCBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNwYWluIiA+CiAgICAgICAgICAgIFNwYWluCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNyaSBMYW5rYSIgPgogICAgICAgICAgICBTcmkgTGFua2EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3VkYW4iID4KICAgICAgICAgICAgU3VkYW4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3VyaW5hbWUiID4KICAgICAgICAgICAgU3VyaW5hbWUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3ZhbGJhcmQgYW5kIEphbiBNYXllbiIgPgogICAgICAgICAgICBTdmFsYmFyZCBhbmQgSmFuIE1heWVuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlN3YXppbGFuZCIgPgogICAgICAgI
CAgICBTd2F6aWxhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3dlZGVuIiA+CiAgICAgICAgICAgIFN3ZWRlbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTd2l0emVybGFuZCIgPgogICAgICAgICAgICBTd2l0emVybGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTeXJpYW4gQXJhYiBSZXB1YmxpYyIgPgogICAgICAgICAgICBTeXJpYW4gQXJhYiBSZXB1YmxpYwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUYWl3YW4sIFByb3ZpbmNlIG9mIENoaW5hIiA+CiAgICAgICAgICAgIFRhaXdhbiwgUHJvdmluY2Ugb2YgQ2hpbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVGFqaWtpc3RhbiIgPgogICAgICAgICAgICBUYWppa2lzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRhbnphbmlhLCBVbml0ZWQgUmVwdWJsaWMgb2YiID4KICAgICAgICAgICAgVGFuemFuaWEsIFVuaXRlZCBSZXB1YmxpYyBvZgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUaGFpbGFuZCIgPgogICAgICAgICAgICBUaGFpbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUaW1vci1MZXN0ZSIgPgogICAgICAgICAgICBUaW1vci1MZXN0ZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUb2dvIiA+CiAgICAgICAgICAgIFRvZ28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVG9rZWxhdSIgPgogICAgICAgICAgICBUb2tlbGF1CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRvbmdhIiA+CiAgICAgICAgICAgIFRvbmdhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRyaW5pZGFkIGFuZCBUb2JhZ28iID4KICAgICAgICAgICAgVHJpbmlkYWQgYW5kIFRvYmFnbwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUdW5pc2lhIiA+CiAgICAgICAgICAgIFR1bmlzaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVHVya2V5IiA+CiAgICAgICAgICAgIFR1cmtleQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUdXJrbWVuaXN0YW4iID4KICAgICAgICAgICAgVHVya21lbmlzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlR1cmtzIGFuZCBDYWljb3MgSXNsYW5kcyIgPgogICAgICAgICAgICBUdXJrcyBhbmQgQ2FpY29zIElzbGFuZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVHV2YWx1IiA+CiAgICAgICAgICAgIFR1dmFsdQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVZ2FuZGEiID4KICAgICAgICAgICAgVWdhbmRhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlVrcmFpbmUiID4KICAgICAgICAgICAgVWtyYWluZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVbml0ZWQgQXJhYiBFbWlyYXRlcyIgPgogICAgICAgICAgICBVbml0ZWQgQXJhYiBFbWlyYXRlcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVbml0ZWQgS2luZ2RvbSIgPgogICAgICAgICAgICBVbml0ZWQgS2luZ2RvbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVbml0ZWQgU3RhdGVzIiA+CiAgICAgICAgICAgIFVuaXRlZCBTdGF0ZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVW5pdGVkIFN0YXRlcyBNaW5vciBPdXRseWluZyBJc2xhbmRzIiA+CiAgICAgICAgICAgIFVuaXRlZCBTdGF0ZXMgTWlub3IgT3V0bHlpbmcgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVcnVndWF5IiA+CiAgICAgICAgICAgIFVydWd1YXkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVXpiZWtpc3RhbiIgPgogICAgICAgICAgICBVemJla2lzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlZhbnVhdHUiID4KICAgICAgICAgICAgVmFudWF0dQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWZW5lenVlbGEiID4KICAgICAgICAgICAgVmVuZXp1ZWxhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlZpZXRuYW0iID4KICAgICAgICAgICAgVmlldG5hbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWaXJnaW4gSXNsYW5kcywgQnJpdGlzaCIgPgogICAgICAgICAgICBWaXJnaW4gSXNsYW5kcywgQnJpdGlzaAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWaXJnaW4gSXNsYW5kcywgVS5zLiIgPgogICAgICAgICAgICBWaXJnaW4gSXNsYW5kcywgVS5zLgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJXYWxsaXMgYW5kIEZ1dHVuYSIgPgogICAgICAgICAgICBXYWxsaXMgYW5kIEZ1dHVuYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJXZXN0ZXJuIFNhaGFyYSIgPgogICAgICAgICAgICBXZXN0ZXJuIFNhaGFyYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJZZW1lbiIgPgogICAgICAgICAgICBZZW1lbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJaYW1iaWEiID4KICAgICAgICAgICAgWmFtYmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlppbWJhYndlIiA+CiAgICAgICAgICAgIFppbWJhYndlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNHIiA+CiAgICAgICAgICAgIFNHCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNBTkFEQSIgPgogICAgICAgICAgICBDQU5BREEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iS29yZWEiID4KICAgICAgICAgICAgS29yZWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIiA+CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikx1eGVtYm91cmdoIiA+CiAgICAgICAgICAgIEx1eGVtYm91cmdoCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1ZIiA+CiAgICAgICAgICAgIE1ZCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkVTV0FSVElOSSIgPgogICAgICAgICAgICBFU1dBUlRJTkkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZVN3YXRpbmkgIiA+CiAgICAgICAgICAgIGVTd2F0aW5pCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNaIiA+CiAgICAgICAgICAgIFNaCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNBIiA+CiAgICAgICAgICAgIENBCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdyZWF0IEJyaXRhaW4iID4KICAgICAgICAgICAgR3JlYXQgQnJpdGFpbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJSdXNzaWEiID4KICAgICAgICAgICAgUnVzc2lhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkhvbmcgS29uZyBTQVIgQ2hpbmEiID4KICAgICAgICAgICAgSG9uZyBLb25nIFNBUiBDaGluYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMb25kb24iID4KICAgICAgICAgICAgTG9uZG9uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICA8L3NlbGVjdD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Il9mb3JtX2VsZW1lbnQgX2ZpZWxkMiBfZnVsbF93aWR0aCAiID4KICAgICAgPGRpdiBjbGFzcz0iX3JvdyI+CiAgICAgICAgPGxhYmVsIGNsYXNzPSJfZm9ybS1sYWJlbCI+CiAgICAgICAgICBQcml2YWN5IFBvbGljeSoKICAgICAgICA8L2xhYmVsPgogICAgICA8L2Rpdj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmllbGRbMl1bXSIgdmFsdWU9In58Ij4KICAgICAgPGRpdiBjbGFzcz0iX3JvdyBfY2hlY2tib3gtcmFkaW8iPgogICAgICAgIDxpbnB1dCBpZD0iZmllbGRfMkkgcmVhZCBhbmQgdW5kZXJzdG9vZCBDRlRFIFByaXZhY3kgUG9saWN5ICh3d3cuY2Z0ZS5lZHVjYXRpb24vcHJpdmFjeS1wb2xpY3kpIiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZmllbGRbMl1bXSIgdmFsdWU9IkkgcmVhZCBhbmQgdW5kZXJzdG9vZCBDRlRFIFByaXZhY3kgUG9saWN5ICh3d3cuY2Z0ZS5lZHVjYXRpb24vcHJpdmFjeS1wb2xpY3kpIiBjbGFzcz0iYW55IiAgcmVxdWlyZWQ+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8bGFiZWwgZm9yPSJmaWVsZF8ySSByZWFkIGFuZCB1bmRlcnN0b29kIENGVEUgUHJpdmFjeSBQb2xpY3kgKHd3dy5jZnRlLmVkdWNhdGlvbi9wcml2YWN5LXBvbGljeSkiPgogICAgICAgICAgICBJIHJlYWQgYW5kIHVuZGVyc3Rvb2QgQ0ZURSBQcml2YWN5IFBvbGljeSAod3d3LmNmdGUuZWR1Y2F0aW9uL3ByaXZhY3ktcG9saWN5KQogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF9maWVsZDMgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxkaXYgY2xhc3M9Il9yb3ciPgogICAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgICAgQ29tbXVuaWNhdGlvbiBvcHRpb25zCiAgICAgICAgPC9sYWJlbD4KICAgICAgPC9kaXY+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpZWxkWzNdW10iIHZhbHVlPSJ+fCI+CiAgICAgIDxkaXYgY2xhc3M9Il9yb3cgX2NoZWNrYm94LXJhZGlvIj4KICAgICAgICA8aW5wdXQgaWQ9ImZpZWxkXzNJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSYjMDM5O3MgY291cnNlcyBieSBlbWFpbCIgdHlwZT0iY2hlY2tib3giIG5hbWU9ImZpZWxkWzNdW10iIHZhbHVlPSJJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSYjMDM5O3MgY291cnNlcyBieSBlbWFpbCIgICA+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8bGFiZWwgZm9yPSJmaWVsZF8zSSYjMDM5O20gaGFwcHkgdG8gcmVjZWl2ZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IENGVEUmIzAzOTtzIGNvdXJzZXMgYnkgZW1haWwiPgogICAgICAgICAgICBJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSYjMDM5O3MgY291cnNlcyBieSBlbWFpbAogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJfcm93IF9jaGVja2JveC1yYWRpbyI+CiAgICAgICAgPGlucHV0IGlkPSJmaWVsZF8zSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZ2VuZXJhbCBuZXdzbGV0dGVyIiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZmllbGRbM11bXSIgdmFsdWU9Ikkgd2FudCB0byByZWNlaXZlIENGVEUmIzAzOTtzIGdlbmVyYWwgbmV3c2xldHRlciIgICA+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8bGFiZWwgZm9yPSJmaWVsZF8zSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZ2VuZXJhbCBuZXdzbGV0dGVyIj4KICAgICAgICAgICAgSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZ2VuZXJhbCBuZXdzbGV0dGVyCiAgICAgICAgICA8L2xhYmVsPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYg
Y2xhc3M9Il9yb3cgX2NoZWNrYm94LXJhZGlvIj4KICAgICAgICA8aW5wdXQgaWQ9ImZpZWxkXzNJIHdhbnQgdG8gcmVjZWl2ZSBDRlRFJiMwMzk7cyBldmVudHMgbmV3c2xldHRlciAiIHR5cGU9ImNoZWNrYm94IiBuYW1lPSJmaWVsZFszXVtdIiB2YWx1ZT0iSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZXZlbnRzIG5ld3NsZXR0ZXIgIiAgID4KICAgICAgICA8c3Bhbj4KICAgICAgICAgIDxsYWJlbCBmb3I9ImZpZWxkXzNJIHdhbnQgdG8gcmVjZWl2ZSBDRlRFJiMwMzk7cyBldmVudHMgbmV3c2xldHRlciAiPgogICAgICAgICAgICBJIHdhbnQgdG8gcmVjZWl2ZSBDRlRFJiMwMzk7cyBldmVudHMgbmV3c2xldHRlcgogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfYnV0dG9uLXdyYXBwZXIgX2Z1bGxfd2lkdGgiPgogICAgICA8YnV0dG9uIGlkPSJfZm9ybV8zMV9zdWJtaXQiIGNsYXNzPSJfc3VibWl0IiB0eXBlPSJzdWJtaXQiPgogICAgICAgIFN1Ym1pdAogICAgICA8L2J1dHRvbj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iX2NsZWFyLWVsZW1lbnQiPgogICAgPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iX2Zvcm0tdGhhbmsteW91IiBzdHlsZT0iZGlzcGxheTpub25lOyI+CiAgPC9kaXY+CjwvZm9ybT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CndpbmRvdy5jZmllbGRzID0geyIxIjoiY291bnRyeSIsIjIiOiJwcml2YWN5X3BvbGljeSIsIjMiOiJjb21tdW5pY2F0aW9uX29wdGlvbnMifTsKd2luZG93Ll9zaG93X3RoYW5rX3lvdSA9IGZ1bmN0aW9uKGlkLCBtZXNzYWdlLCB0cmFja2NtcF91cmwpIHsKICB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfZm9ybV8nICsgaWQgKyAnXycpLCB0aGFua195b3UgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybS10aGFuay15b3UnKTsKICBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybS1jb250ZW50Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICB0aGFua195b3UuaW5uZXJIVE1MID0gbWVzc2FnZTsKICB0aGFua195b3Uuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgaWYgKHR5cGVvZih0cmFja2NtcF91cmwpICE9ICd1bmRlZmluZWQnICYmIHRyYWNrY21wX3VybCkgewogICAgLy8gU2l0ZSB0cmFja2luZyBVUkwgdG8gdXNlIGFmdGVyIGlubGluZSBmb3JtIHN1Ym1pc3Npb24uCiAgICBfbG9hZF9zY3JpcHQodHJhY2tjbXBfdXJsKTsKICB9CiAgaWYgKHR5cGVvZiB3aW5kb3cuX2Zvcm1fY2FsbGJhY2sgIT09ICd1bmRlZmluZWQnKSB3aW5kb3cuX2Zvcm1fY2FsbGJhY2soaWQpOwp9Owp3aW5kb3cuX3Nob3dfZXJyb3IgPSBmdW5jdGlvbihpZCwgbWVzc2FnZSwgaHRtbCkgewogIHZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ19mb3JtXycgKyBpZCArICdfJyksIGVyciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLCBidXR0b24gPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpLCBvbGRfZXJyb3IgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybV9lcnJvcicpOwogIGlmIChvbGRfZXJyb3IpIG9sZF9lcnJvci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG9sZF9lcnJvcik7CiAgZXJyLmlubmVySFRNTCA9IG1lc3NhZ2U7CiAgZXJyLmNsYXNzTmFtZSA9ICdfZXJyb3ItaW5uZXIgX2Zvcm1fZXJyb3IgX25vX2Fycm93JzsKICB2YXIgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogIHdyYXBwZXIuY2xhc3NOYW1lID0gJ19mb3JtLWlubmVyJzsKICB3cmFwcGVyLmFwcGVuZENoaWxkKGVycik7CiAgYnV0dG9uLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHdyYXBwZXIsIGJ1dHRvbik7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2lkXj0iX2Zvcm0iXVtpZCQ9Il9zdWJtaXQiXScpLmRpc2FibGVkID0gZmFsc2U7CiAgaWYgKGh0bWwpIHsKICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGRpdi5jbGFzc05hbWUgPSAnX2Vycm9yLWh0bWwnOwogICAgZGl2LmlubmVySFRNTCA9IGh0bWw7CiAgICBlcnIuYXBwZW5kQ2hpbGQoZGl2KTsKICB9Cn07CndpbmRvdy5fbG9hZF9zY3JpcHQgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKSB7CiAgICB2YXIgaGVhZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKSwgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JyksIHIgPSBmYWxzZTsKICAgIHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICBzY3JpcHQuY2hhcnNldCA9ICd1dGYtOCc7CiAgICBzY3JpcHQuc3JjID0gdXJsOwogICAgaWYgKGNhbGxiYWNrKSB7CiAgICAgIHNjcmlwdC5vbmxvYWQgPSBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgIGlmICghciAmJiAoIXRoaXMucmVhZHlTdGF0ZSB8fCB0aGlzLnJlYWR5U3RhdGUgPT0gJ2NvbXBsZXRlJykpIHsKICAgICAgICByID0gdHJ1ZTsKICAgICAgICBjYWxsYmFjaygpOwogICAgICAgIH0KICAgICAgfTsKICAgIH0KICAgIGhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKfTsKKGZ1bmN0aW9uKCkgewogIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoLnNlYXJjaCgiZXhjbHVkZWZvcm0iKSAhPT0gLTEpIHJldHVybiBmYWxzZTsKICB2YXIgZ2V0Q29va2llID0gZnVuY3Rpb24obmFtZSkgewogICAgdmFyIG1hdGNoID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoJyhefDsgKScgKyBuYW1lICsgJz0oW147XSspJykpOwogICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMl0gOiBudWxsOwogIH0KICB2YXIgc2V0Q29va2llID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHsKICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpOwogICAgdmFyIHRpbWUgPSBub3cuZ2V0VGltZSgpOwogICAgdmFyIGV4cGlyZVRpbWUgPSB0aW1lICsgMTAwMCAqIDYwICogNjAgKiAyNCAqIDM2NTsKICAgIG5vdy5zZXRUaW1lKGV4cGlyZVRpbWUpOwogICAgZG9jdW1lbnQuY29va2llID0gbmFtZSArICc9JyArIHZhbHVlICsgJzsgZXhwaXJlcz0nICsgbm93ICsgJztwYXRoPS8nOwogIH0KICAgICAgdmFyIGFkZEV2ZW50ID0gZnVuY3Rpb24oZWxlbWVudCwgZXZlbnQsIGZ1bmMpIHsKICAgIGlmIChlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHsKICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBmdW5jKTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBvbGRGdW5jID0gZWxlbWVudFsnb24nICsgZXZlbnRdOwogICAgICBlbGVtZW50WydvbicgKyBldmVudF0gPSBmdW5jdGlvbigpIHsKICAgICAgICBvbGRGdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICB9OwogICAgfQogIH0KICB2YXIgX3JlbW92ZWQgPSBmYWxzZTsKICB2YXIgZm9ybV90b19zdWJtaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnX2Zvcm1fMzFfJyk7CiAgdmFyIGFsbElucHV0cyA9IGZvcm1fdG9fc3VibWl0LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0LCBzZWxlY3QsIHRleHRhcmVhJyksIHRvb2x0aXBzID0gW10sIHN1Ym1pdHRlZCA9IGZhbHNlOwoKICB2YXIgZ2V0VXJsUGFyYW0gPSBmdW5jdGlvbihuYW1lKSB7CiAgICB2YXIgcmVnZXhTdHIgPSAnW1w/Jl0nICsgbmFtZSArICc9KFteJiNdKiknOwogICAgdmFyIHJlc3VsdHMgPSBuZXcgUmVnRXhwKHJlZ2V4U3RyLCAnaScpLmV4ZWMod2luZG93LmxvY2F0aW9uLmhyZWYpOwogICAgcmV0dXJuIHJlc3VsdHMgIT0gdW5kZWZpbmVkID8gZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMV0pIDogZmFsc2U7CiAgfTsKCiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxJbnB1dHMubGVuZ3RoOyBpKyspIHsKICAgIHZhciByZWdleFN0ciA9ICJmaWVsZFxcWyhcXGQrKVxcXSI7CiAgICB2YXIgcmVzdWx0cyA9IG5ldyBSZWdFeHAocmVnZXhTdHIpLmV4ZWMoYWxsSW5wdXRzW2ldLm5hbWUpOwogICAgaWYgKHJlc3VsdHMgIT0gdW5kZWZpbmVkKSB7CiAgICAgIGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUgPSB3aW5kb3cuY2ZpZWxkc1tyZXN1bHRzWzFdXTsKICAgIH0gZWxzZSB7CiAgICAgIGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUgPSBhbGxJbnB1dHNbaV0ubmFtZTsKICAgIH0KICAgIHZhciBmaWVsZFZhbCA9IGdldFVybFBhcmFtKGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUpOwoKICAgIGlmIChmaWVsZFZhbCkgewogICAgICBpZiAoYWxsSW5wdXRzW2ldLnR5cGUgPT0gInJhZGlvIiB8fCBhbGxJbnB1dHNbaV0udHlwZSA9PSAiY2hlY2tib3giKSB7CiAgICAgICAgaWYgKGFsbElucHV0c1tpXS52YWx1ZSA9PSBmaWVsZFZhbCkgewogICAgICAgICAgYWxsSW5wdXRzW2ldLmNoZWNrZWQgPSB0cnVlOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBhbGxJbnB1dHNbaV0udmFsdWUgPSBmaWVsZFZhbDsKICAgICAgfQogICAgfQogIH0KCiAgdmFyIHJlbW92ZV90b29sdGlwcyA9IGZ1bmN0aW9uKCkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b29sdGlwcy5sZW5ndGg7IGkrKykgewogICAgICB0b29sdGlwc1tpXS50aXAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0b29sdGlwc1tpXS50aXApOwogICAgfQogICAgICB0b29sdGlwcyA9IFtdOwogIH07CiAgdmFyIHJlbW92ZV90b29sdGlwID0gZnVuY3Rpb24oZWxlbSkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b29sdGlwcy5sZW5ndGg7IGkrKykgewogICAgICBpZiAodG9vbHRpcHNbaV0uZWxlbSA9PT0gZWxlbSkgewogICAgICAgIHRvb2x0aXBzW2ldLnRpcC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRvb2x0aXBzW2ldLnRpcCk7CiAgICAgICAgdG9vbHRpcHMuc3BsaWNlKGksIDEpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgfQogIH07CiAgdmFyIGNyZWF0ZV90b29sdGlwID0gZnVuY3Rpb24oZWxlbSwgdGV4dCkgewogICAgdmFyIHRvb2x0aXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgYXJyb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgaW5uZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgbmV3X3Rvb2x0aXAgPSB7fTsKICAgIGlmIChlbGVtLnR5cGUgIT0gJ3JhZGlvJyAmJiBlbGVtLnR5cGUgIT0gJ2NoZWNrYm94JykgewogICAgICB0b29sdGlwLmNsYXNzTmFtZSA9ICdfZXJyb3InOwogICAgICBhcnJvdy5jbGFzc05hbWUgPSAnX2Vycm9yLWFycm93JzsKICAgICAgaW5uZXIuY2xhc3NOYW1lID0gJ19lcnJvci1pbm5lcic7CiAgICAgIGlubmVyLmlubmVySFRNTCA9IHRleHQ7CiAgICAgIHRvb2x0aXAuYXBwZW5kQ2hpbGQoYXJyb3cpOwogICAgICB0b29sdGlwLmFwcGVuZENoaWxkKGlubmVyKTsKICAgICAgZWxlbS5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRvb2x0aXApOwogICAgfSBlbHNlIHsKICAgICAgdG9vbHRpcC5jbGFzc05hbWUgPSAnX2Vycm9yLWlubmVyIF9ub19hcnJvdyc7CiAgICAgIHRvb2x0aXAuaW5uZXJIVE1MID0gdGV4dDsKICAgICAgZWxlbS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0b29sdGlwLCBlbGVtKTsKICAgICAgbmV3X3Rvb2x0aXAubm9fYXJyb3cgPSB0cnVlOwogICAgfQogICAgbmV3X3Rvb2x0aXAudGlwID0gdG9vbHRpcDsKICAgIG5ld190b29sdGlwLmVsZW0gPSBlbGVtOwogICAgdG9vbHRpcHMucHVzaChuZXdfdG9vbHRpcCk7CiAgICByZXR1cm4gbmV3X3Rvb2x0aXA7CiAgfTsKICB2YXIgcmVzaXplX3Rvb2x0aXAgPSBmdW5jdGlvbih0b29sdGlwKSB7CiAgICB2YXIgcmVjdCA9IHRvb2x0aXAuZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIHZhciBkb2MgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHNjcm9sbFBvc2l0aW9uID0gcmVjdC50b3AgLSAoKHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2Muc2Nyb2xsVG9wKSAgLSAoZG9jLmNsaWVudFRvcCB8fCAwKSk7CiAgICBpZiAoc2Nyb2xsUG9zaXRpb24gPCA0MCkgewogICAgICB0b29sdGlwLnRpcC5jbGFzc05hbWUgPSB0b29sdGlwLnRpcC5jbGFzc05hbWUucmVwbGFjZSgvID8oX2Fib3ZlfF9iZWxvdykgPy9nLCAnJykgKyAnIF9iZWxvdyc7CiA
gICB9IGVsc2UgewogICAgICB0b29sdGlwLnRpcC5jbGFzc05hbWUgPSB0b29sdGlwLnRpcC5jbGFzc05hbWUucmVwbGFjZSgvID8oX2Fib3ZlfF9iZWxvdykgPy9nLCAnJykgKyAnIF9hYm92ZSc7CiAgICB9CiAgfTsKICB2YXIgcmVzaXplX3Rvb2x0aXBzID0gZnVuY3Rpb24oKSB7CiAgICBpZiAoX3JlbW92ZWQpIHJldHVybjsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9vbHRpcHMubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKCF0b29sdGlwc1tpXS5ub19hcnJvdykgcmVzaXplX3Rvb2x0aXAodG9vbHRpcHNbaV0pOwogICAgfQogIH07CiAgdmFyIHZhbGlkYXRlX2ZpZWxkID0gZnVuY3Rpb24oZWxlbSwgcmVtb3ZlKSB7CiAgICB2YXIgdG9vbHRpcCA9IG51bGwsIHZhbHVlID0gZWxlbS52YWx1ZSwgbm9fZXJyb3IgPSB0cnVlOwogICAgcmVtb3ZlID8gcmVtb3ZlX3Rvb2x0aXAoZWxlbSkgOiBmYWxzZTsKICAgIGlmIChlbGVtLnR5cGUgIT0gJ2NoZWNrYm94JykgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZS5yZXBsYWNlKC8gP19oYXNfZXJyb3IgPy9nLCAnJyk7CiAgICBpZiAoZWxlbS5nZXRBdHRyaWJ1dGUoJ3JlcXVpcmVkJykgIT09IG51bGwpIHsKICAgICAgaWYgKGVsZW0udHlwZSA9PSAncmFkaW8nIHx8IChlbGVtLnR5cGUgPT0gJ2NoZWNrYm94JyAmJiAvYW55Ly50ZXN0KGVsZW0uY2xhc3NOYW1lKSkpIHsKICAgICAgICB2YXIgZWxlbXMgPSBmb3JtX3RvX3N1Ym1pdC5lbGVtZW50c1tlbGVtLm5hbWVdOwogICAgICAgIGlmICghKGVsZW1zIGluc3RhbmNlb2YgTm9kZUxpc3QgfHwgZWxlbXMgaW5zdGFuY2VvZiBIVE1MQ29sbGVjdGlvbikgfHwgZWxlbXMubGVuZ3RoIDw9IDEpIHsKICAgICAgICAgIG5vX2Vycm9yID0gZWxlbS5jaGVja2VkOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIG5vX2Vycm9yID0gZmFsc2U7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChlbGVtc1tpXS5jaGVja2VkKSBub19lcnJvciA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghbm9fZXJyb3IpIHsKICAgICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiUGxlYXNlIHNlbGVjdCBhbiBvcHRpb24uIik7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGVsZW0udHlwZSA9PSdjaGVja2JveCcpIHsKICAgICAgICB2YXIgZWxlbXMgPSBmb3JtX3RvX3N1Ym1pdC5lbGVtZW50c1tlbGVtLm5hbWVdLCBmb3VuZCA9IGZhbHNlLCBlcnIgPSBbXTsKICAgICAgICBub19lcnJvciA9IHRydWU7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgaWYgKGVsZW1zW2ldLmdldEF0dHJpYnV0ZSgncmVxdWlyZWQnKSA9PT0gbnVsbCkgY29udGludWU7CiAgICAgICAgICBpZiAoIWZvdW5kICYmIGVsZW1zW2ldICE9PSBlbGVtKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgIGVsZW1zW2ldLmNsYXNzTmFtZSA9IGVsZW1zW2ldLmNsYXNzTmFtZS5yZXBsYWNlKC8gP19oYXNfZXJyb3IgPy9nLCAnJyk7CiAgICAgICAgICBpZiAoIWVsZW1zW2ldLmNoZWNrZWQpIHsKICAgICAgICAgICAgbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgICAgICAgZWxlbXNbaV0uY2xhc3NOYW1lID0gZWxlbXNbaV0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICAgICAgZXJyLnB1c2goIkNoZWNraW5nICVzIGlzIHJlcXVpcmVkIi5yZXBsYWNlKCIlcyIsIGVsZW1zW2ldLnZhbHVlKSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghbm9fZXJyb3IpIHsKICAgICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCBlcnIuam9pbignPGJyLz4nKSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGVsZW0udGFnTmFtZSA9PSAnU0VMRUNUJykgewogICAgICAgIHZhciBzZWxlY3RlZCA9IHRydWU7CiAgICAgICAgaWYgKGVsZW0ubXVsdGlwbGUpIHsKICAgICAgICAgIHNlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW0ub3B0aW9ucy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoZWxlbS5vcHRpb25zW2ldLnNlbGVjdGVkKSB7CiAgICAgICAgICAgICAgc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbS5vcHRpb25zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChlbGVtLm9wdGlvbnNbaV0uc2VsZWN0ZWQgJiYgIWVsZW0ub3B0aW9uc1tpXS52YWx1ZSkgewogICAgICAgICAgICAgIHNlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFzZWxlY3RlZCkgewogICAgICAgICAgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZSArICcgX2hhc19lcnJvcic7CiAgICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgICAgdG9vbHRpcCA9IGNyZWF0ZV90b29sdGlwKGVsZW0sICJQbGVhc2Ugc2VsZWN0IGFuIG9wdGlvbi4iKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKTsKICAgICAgfQogICAgfQogICAgaWYgKG5vX2Vycm9yICYmIGVsZW0ubmFtZSA9PSAnZW1haWwnKSB7CiAgICAgIGlmICghdmFsdWUubWF0Y2goL15bXCtfYS16MC05LScmPV0rKFwuW1wrX2EtejAtOS0nXSspKkBbYS16MC05LV0rKFwuW2EtejAtOS1dKykqKFwuW2Etel17Mix9KSQvaSkpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiRW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzLiIpOwogICAgICB9CiAgICB9CiAgICBpZiAobm9fZXJyb3IgJiYgL2RhdGVfZmllbGQvLnRlc3QoZWxlbS5jbGFzc05hbWUpKSB7CiAgICAgIGlmICghdmFsdWUubWF0Y2goL15cZFxkXGRcZC1cZFxkLVxkXGQkLykpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiRW50ZXIgYSB2YWxpZCBkYXRlLiIpOwogICAgICB9CiAgICB9CiAgICB0b29sdGlwID8gcmVzaXplX3Rvb2x0aXAodG9vbHRpcCkgOiBmYWxzZTsKICAgIHJldHVybiBub19lcnJvcjsKICB9OwogIHZhciBuZWVkc192YWxpZGF0ZSA9IGZ1bmN0aW9uKGVsKSB7CiAgICByZXR1cm4gZWwubmFtZSA9PSAnZW1haWwnIHx8IGVsLmdldEF0dHJpYnV0ZSgncmVxdWlyZWQnKSAhPT0gbnVsbDsKICB9OwogIHZhciB2YWxpZGF0ZV9mb3JtID0gZnVuY3Rpb24oZSkgewogICAgdmFyIGVyciA9IGZvcm1fdG9fc3VibWl0LnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybV9lcnJvcicpLCBub19lcnJvciA9IHRydWU7CiAgICBpZiAoIXN1Ym1pdHRlZCkgewogICAgICBzdWJtaXR0ZWQgPSB0cnVlOwogICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYWxsSW5wdXRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgdmFyIGlucHV0ID0gYWxsSW5wdXRzW2ldOwogICAgICAgIGlmIChuZWVkc192YWxpZGF0ZShpbnB1dCkpIHsKICAgICAgICAgIGlmIChpbnB1dC50eXBlID09ICd0ZXh0JykgewogICAgICAgICAgICBhZGRFdmVudChpbnB1dCwgJ2JsdXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS50cmltKCk7CiAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBhZGRFdmVudChpbnB1dCwgJ2lucHV0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC50eXBlID09ICdyYWRpbycgfHwgaW5wdXQudHlwZSA9PSAnY2hlY2tib3gnKSB7CiAgICAgICAgICAgIChmdW5jdGlvbihlbCkgewogICAgICAgICAgICAgIHZhciByYWRpb3MgPSBmb3JtX3RvX3N1Ym1pdC5lbGVtZW50c1tlbC5uYW1lXTsKICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhZGlvcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgYWRkRXZlbnQocmFkaW9zW2ldLCAnY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQoZWwsIHRydWUpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KShpbnB1dCk7CiAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnRhZ05hbWUgPT0gJ1NFTEVDVCcpIHsKICAgICAgICAgICAgYWRkRXZlbnQoaW5wdXQsICdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB2YWxpZGF0ZV9maWVsZCh0aGlzLCB0cnVlKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICByZW1vdmVfdG9vbHRpcHMoKTsKICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhbGxJbnB1dHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKICAgICAgdmFyIGVsZW0gPSBhbGxJbnB1dHNbaV07CiAgICAgIGlmIChuZWVkc192YWxpZGF0ZShlbGVtKSkgewogICAgICAgIGlmIChlbGVtLnRhZ05hbWUudG9Mb3dlckNhc2UoKSAhPT0gInNlbGVjdCIpIHsKICAgICAgICAgIGVsZW0udmFsdWUgPSBlbGVtLnZhbHVlLnRyaW0oKTsKICAgICAgICB9CiAgICAgICAgdmFsaWRhdGVfZmllbGQoZWxlbSkgPyB0cnVlIDogbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgfQogICAgfQogICAgaWYgKCFub19lcnJvciAmJiBlKSB7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIH0KICAgIHJlc2l6ZV90b29sdGlwcygpOwogICAgcmV0dXJuIG5vX2Vycm9yOwogIH07CiAgYWRkRXZlbnQod2luZG93LCAncmVzaXplJywgcmVzaXplX3Rvb2x0aXBzKTsKICBhZGRFdmVudCh3aW5kb3csICdzY3JvbGwnLCByZXNpemVfdG9vbHRpcHMpOwogIHdpbmRvdy5fb2xkX3NlcmlhbGl6ZSA9IG51bGw7CiAgaWYgKHR5cGVvZiBzZXJpYWxpemUgIT09ICd1bmRlZmluZWQnKSB3aW5kb3cuX29sZF9zZXJpYWxpemUgPSB3aW5kb3cuc2VyaWFsaXplOwogIF9sb2FkX3NjcmlwdCgiLy9kM3J4YWlqNTZ2amVnZS5jbG91ZGZyb250Lm5ldC9mb3JtLXNlcmlhbGl6ZS8wLjMvc2VyaWFsaXplLm1pbi5qcyIsIGZ1bmN0aW9uKCkgewogICAgd2luZG93Ll9mb3JtX3NlcmlhbGl6ZSA9IHdpbmRvdy5zZXJpYWxpemU7CiAgICBpZiAod2luZG93Ll9vbGRfc2VyaWFsaXplKSB3aW5kb3cuc2VyaWFsaXplID0gd2luZG93Ll9vbGRfc2VyaWFsaXplOwogIH0pOwogIHZhciBmb3JtX3N1Ym1pdCA9IGZ1bmN0aW9uKGUpIHsKICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIGlmICh2YWxpZGF0ZV9mb3JtKCkpIHsKICAgICAgLy8gdXNlIHRoaXMgdHJpY2sgdG8gZ2V0IHRoZSBzdWJtaXQgYnV0dG9uICYgZGlzYWJsZSBpdCB1c2luZyBwbGFpbiBqYXZhc2NyaXB0CiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNfZm9ybV8zMV9zdWJtaXQnKS5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgICAgIHZhciBzZXJpYWxpemVkID0gX2Zvcm1fc2VyaWFsaXplKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfZm9ybV8zMV8nKSk7CiAgICAgIHZhciBlcnIgPSBmb3JtX3RvX3N1Ym1pdC5xdWVyeVNlbGVjdG9yKCcuX2Zvcm1fZXJyb3InKTsKICAgICAgZXJyID8gZXJyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZXJyKSA6IGZhbHNlOwogICAgICBfbG9hZF9zY3JpcH
QoJ2h0dHBzOi8vY2Z0ZS5hY3RpdmVob3N0ZWQuY29tL3Byb2MucGhwPycgKyBzZXJpYWxpemVkICsgJyZqc29ucD10cnVlJyk7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7CiAgfTsKICBhZGRFdmVudChmb3JtX3RvX3N1Ym1pdCwgJ3N1Ym1pdCcsIGZvcm1fc3VibWl0KTsKfSkoKTsKCjwvc2NyaXB0Pg==[/fusion_code][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container][fusion_builder_container admin_label=”Mobile” hundred_percent=”yes” 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” 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=”2%” padding_right=”2%” padding_bottom=”2%” padding_left=”2%”][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ spacing=”yes” center_content=”no” link=”” target=”_self” min_height=”” hide_on_mobile=”small-visibility” class=”” id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” hover_type=”none” border_size=”” border_color=”” border_style=”solid” border_position=”all” padding_top=”2%” padding_right=”2%” padding_bottom=”2%” padding_left=”2%” margin_top=”0px” margin_bottom=”0px” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][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=””]

How Traders Can Join the Fintech Movement

As Fintech continues to make waves through the industry of finance, certain lessons are quickly being learned. The impact of technology is already a well-known concept in retail banking, wherein the disruption is self-evident. But what of technology’s impact on capital markets and the trading floor? Is disruption as rife in these sectors, or are investment banks somehow immune to competition from emerging tech?
Earlier this month, on November 6th, CFTE held a fireside chat with finance leaders to address these questions and more. Hosted by MUFG, the 5th largest bank worldwide, in their European Headquarters in London, the evening freely invited CFTE alumni and learners to gain insight from a panel formed of MUFG’s Stephane Alex; Behavox’s Alex Viall; Mosaic Smart Data’s Matt Hodgson, and not leastly our co-founder Huy Nguyen Trieu.
The evening held much discussion on the various strategies and frameworks employed by leading financial figures to adapt to the industry’s rapid digitisation. A packed hall of keen professionals heard from Stephane Alex, Head of Global Customer Marketing at MUFG, as he outlined his firm’s major focus over the past five years: Innovation. Following their expansion out of Japan, the fields of Artificial Intelligence, Big Data, Blockchain, Robotic Process Automation (RPA) were all areas of innovation for MUFG. Meanwhile, as the bank continued to develop schemes based on these emerging technologies, they also had to be innovative on the trading floor. This meant greater importance on the pillars of: Risk Management, Data-driven Predictions, Sales, and Settlement.
As the panel drew on, Matt Hodgson, CEO of Mosaic Smart Data, shared his firm’s response to digitisation. Describing the idea of ‘fixed income’ as a personal pain point, he needed his 2013 company to sufficiently solve this problem. And so, Mosaic Smart Data began selling software which addressed fixed income issues, adding value to the front end. By providing an API framework to entire organisations at a time, their brand offered unique value to the industry. Following this forceful ‘migration’ to electronic and digital channels, a new problem reared its head: communication via a common messaging language. Similar to Stephane and MUFG, Matt and his firm responded by leaning on four pillars for the solution. In their case, this meant:

  1. Aggregating transactions over different channels.
  2. Solving KPI and provide a framework delivering effective insight.
  3. Combining multiple segments of clients into one. To avoid the pitfalls of spamming clients.
  4. Their product needed lightning-quick response times (like Apple & Netflix).

Once these principles were in place, Matt’s team was able to match their competitors’ pace of innovation and digital transformation. Alex Viall, Head of Regulatory Intelligence at Behavox, opined on how this pace has changed in recent years. Armed with experience as a regulator, he acknowledged his company’s role: to hold huge amounts of data, group them into a manageable data lake, and run algorithms which would generate meaningful findings and insights for clients.
The panel grew into conversation of current and future trends in Finance, and panellists were asked to briefly breakdown important factors in the industry.
Stephane Alex of MUFG spoke on:

  1. Simplicity of Finance.
  2. Transparency of institutions and services.
  3. Affordability of consumer-facing services.

Matt Hodgson of Mosaic Smart Data declared:

  1. While Fintech soars, banks need to realise they’re also invited to engage.
  2. The costs of nascent tech will decrease.
  3. There will be greater pressure on human capital in front offices.
  4. Process data is nigh-on impossible for humans.

While Alex Viall of Behavox said:

  1. Respect for data and its value rose as people started to mine and work with said data. This will continue.
  2. People are seeking more evidence-based answers instead of tradition.
  3. Data’s ability to personalise services is vital.
  4. Delivering information in real-life is an extraordinary technological leap in finance.

As promised, the evening also saw discussion on the role of automation, and more specifically how it affects the industry workforce. CFTE co-founder Huy Nguyen Trieu probed the panel on the topic, asking which activities in trading are currently in danger of disappearing. In response, Stephane Alex noted that management must take responsibility and sustain some roles for their employees with their oversight.
Next, the panellists were pressed on specific applications of emerging technologies. Algorithms will continue to dominate the trading floor, predicts Stephane, while Matt noted the importance of efficiency in data. Real-time information was not commonplace half a decade ago, while modern finance is much more capable to understand customers thanks to smarter tools. As a result, the roles of those in sales will dramatically change in terms of strategy as they adopt more intellectual approaches to their processes.
All experts called on more urgency in financial institutions taking larger risks, and to take them more often. The trio also highlighted a multitude of examples that showcase current innovations in capitals markets and banking today. For one, there are considerable changes in infrastructure, as Data Scientists and Data Engineers become more prominent. Another salient point is the difference in large and small firms– large institutions have the access and capability to utilise massive amounts of data, while smaller firms without this flow need to act in clever ways to arrive at the same conclusions. Artificial Intelligence will bridge this gap.

Ultimately, a large amount of the trading workforce remains afraid to lose their jobs to automation as a result of continued digital transformation. To these workers, t
he panel provided some words of encouragement and methods of practice:

  • Stephane Alex claimed that since the workforce as whole is becoming smarter, this means the middle and back office will also have to learn and become better. He presented this as positive affirmation that most workers would not get lost in the shuffle.
  • Alex Viall said “It depends on how you embrace technology and change. People can be creative; you need to create the right environment you personally need to be interested in tech and focus on all the tools that can make you more productive. Everything [in finance] is going to be more transparent.”
  • Matt Hodgson opined “[You should be] Continuing education! We encourage everybody to learn. No matter what: improve and learn. Share information openly; break down silos. If we don’t cannibalize ourselves someone will do it for us.”

This event is one of many in CFTE’s calendar which tackles prominent themes in Fintech. For more information on our future events, please subscribe to our events newsletter below.
[/fusion_text][/fusion_builder_column][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_position=”left top” undefined=”” background_repeat=”no-repeat” hover_type=”none” border_size=”0″ border_color=”” border_style=”solid” border_position=”all” padding_top=”2%” padding_right=”” padding_bottom=”1%” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_separator style_type=”default” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” sep_color=”” top_margin=”” bottom_margin=”2%” border_size=”2″ icon=”” icon_circle=”” icon_circle_color=”” width=”” alignment=”center” /][/fusion_builder_column][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=”relatedPostsMobile” id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” hover_type=”none” border_size=”0″ border_color=”” border_style=”solid” border_position=”all” padding_top=”0%” padding_right=”2%” padding_bottom=”0%” padding_left=”2%” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][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=””]

Related Posts

[/fusion_text][fusion_separator style_type=”default” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” sep_color=”” top_margin=”10%” bottom_margin=”” border_size=”0″ icon=”” icon_circle=”” icon_circle_color=”” width=”” alignment=”center” /][fusion_builder_row_inner][fusion_builder_column_inner type=”1_1″ layout=”1_3″ spacing=”” center_content=”no” hover_type=”none” link=”” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogPost” id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” border_size=”0″ border_color=”” border_style=”solid” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no” border_position=”all”][fusion_recent_posts layout=”default” hover_type=”none” columns=”1″ number_posts=”1″ offset=”1″ pull_by=”category” cat_slug=”events” exclude_cats=”” tag_slug=”” exclude_tags=”” thumbnail=”yes” title=”yes” meta=”yes” meta_author=”no” meta_categories=”no” meta_date=”yes” meta_comments=”no” meta_tags=”no” content_alignment=”” excerpt=”no” excerpt_length=”0″ strip_html=”yes” scrolling=”no” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogImage” id=”BlogImage” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” /][/fusion_builder_column_inner][fusion_builder_column_inner type=”1_1″ layout=”1_3″ spacing=”” center_content=”no” hover_type=”none” link=”” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogPost” id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” border_size=”0″ border_color=”” border_style=”solid” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no” border_position=”all”][fusion_recent_posts layout=”default” hover_type=”none” columns=”1″ number_posts=”1″ offset=”8″ pull_by=”category” cat_slug=”events” exclude_cats=”” tag_slug=”” exclude_tags=”” thumbnail=”yes” title=”yes” meta=”yes” meta_author=”no” meta_categories=”no” meta_date=”yes” meta_comments=”no” meta_tags=”no” content_alignment=”” excerpt=”no” excerpt_length=”0″ strip_html=”yes” scrolling=”no” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogImage” id=”BlogImage” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” /][/fusion_builder_column_inner][fusion_builder_column_inner type=”1_1″ layout=”1_3″ spacing=”” center_content=”no” hover_type=”none” link=”” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogPost” id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” border_size=”0″ border_color=”” border_style=”solid” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no” border_position=”all”][fusion_recent_posts layout=”default” hover_type=”none” columns=”1″ number_posts=”1″ offset=”10″ pull_by=”category” cat_slug=”events” exclude_cats=”” tag_slug=”” exclude_tags=”” thumbnail=”yes” title=”yes” meta=”yes” meta_author=”no” meta_categories=”no” meta_date=”yes” meta_comments=”no” meta_tags=”no” content_alignment=”” excerpt=”no” excerpt_length=”0″ strip_html=”yes” scrolling=”no” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogImage” id=”BlogImage” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” /][/fusion_builder_column_inner][/fusion_builder_row_inner][/fusion_builder_column][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_position=”left top” undefined=”” background_repeat=”no-repeat” hover_type=”none” border_size=”0″ border_color=”” border_style=”solid” border_position=”all” padding_top=”2%” padding_right=”” padding_bottom=”1%” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_separator style_type=”default” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” sep_color=”” top_margin=”” bottom_margin=”” border_size=”2″ icon=”” icon_circle=”” icon_circle_color=”” width=”” alignment=”center” /][/fusion_builder_column][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_position=”left top” background_repeat=”no-repeat” hover_type=”none” border_size=”0″ 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=”no”][fusion_code]PHN0eWxlPgogI19mb3JtXzMxXyB7IGZvbnQtc2l6ZToxNHB4OyBsaW5lLWhlaWdodDoxLjY7IGZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IG1hcmdpbjowOyB9CiAjX2Zvcm1fMzFfICogeyBvdXRsaW5lOjA7IH0KIC5fZm9ybV9oaWRlIHsgZGlzcGxheTpub25lOyB2aXNpYmlsaXR5OmhpZGRlbjsgfQogLl9mb3JtX3Nob3cgeyBkaXNwbGF5OmJsb2NrOyB2aXNpYmlsaXR5OnZpc2libGU7IH0KICNfZm9ybV8zMV8uX2Zvcm0tdG9wIHsgdG9wOjA7IH0KICNfZm9ybV8zMV8uX2Zvcm0tYm90dG9tIHsgYm90dG9tOjA7IH0KICNfZm9ybV8zMV8uX2Zvcm0tbGVmdCB7IGxlZnQ6MDsgfQogI19mb3JtXzMxXy5fZm9ybS1yaWdodCB7IHJpZ2h0OjA7IH0KICNfZm9ybV8zMV8gaW5wdXRbdHlwZT0idGV4dCJdLCNfZm9ybV8zMV8gaW5wdXRbdHlwZT0iZGF0ZSJdLCNfZm9ybV8zMV8gdGV4dGFyZWEgeyBwYWRkaW5nOjZweDsgaGVpZ2h0OmF1dG87IGJvcmRlcjojOTc5Nzk3IDFweCBzb2xpZDsgYm9yZGVyLXJhZGl1czo0cHg7IGNvbG9yOiMwMDAgIWltcG9ydGFudDsgZm9udC1zaXplOjEzcHg7IC13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94OyAtbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgYm94LXNpemluZzpib3JkZXItYm94OyB9CiAjX2Zvcm1fMzFfIHRleHRhcmVhIHsgcmVzaXplOm5vbmU7IH0KICNfZm9ybV8zMV8gLl9zdWJtaXQgeyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgY3Vyc29yOnBvaW50ZXI7IGZvbnQtZmFtaWx5OmFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6MTRweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6IzhmMDcwNyAhaW1wb3J0YW50OyBib3JkZXI6MCAhaW1wb3J0YW50OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4ICFpbXBvcnRhbnQ7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHggIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czo0cHggIWltcG9ydGFudDsgY29sb3I6I2ZmZiAhaW1wb3J0YW50OyBwYWRkaW5nOjEwcHggIWltcG9ydGFudDsgfQogI19mb3JtXzMxXyAuX2Nsb3NlLWljb24geyBjdXJzb3I6cG9pbnRlcjsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2h0dHBzOi8vZDIyNmFqNGFvMXQ2MXEuY2xvdWRmcm9udC5uZXQvZXNma3lqaDF1X2Zvcm1zLWNsb3NlLWRhcmsucG5nJyk7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjE0LjJweCAxNC4ycHg7IHBvc2l0aW9uOmFic29sdXRlOyBkaXNwbGF5OmJsb2NrOyB0b3A6MTFweDsgcmlnaHQ6OXB4OyBvdmVyZmxvdzpoaWRkZW47IHdpZHRoOjE2LjJweDsgaGVpZ2h0OjE2LjJweDsgfQogI19mb3JtXzMxXyAuX2Nsb3NlLWljb246YmVmb3JlIHsgcG9zaXRpb246cmVsYXRpdmU7IH0KICNfZm9ybV8zMV8gLl9mb3JtLWJvZHkgeyBtYXJnaW4tYm90dG9tOjMwcHg7IH0KICNfZm9ybV8zMV8gLl9mb3JtLWltYWdlLWxlZnQgeyB3aWR0aDoxNTBweDsgZmxvYXQ6bGVmdDsgfQogI19mb3JtXzMxXyAuX2Zvcm0tY29udGVudC1yaWdodCB7IG1hcmdpbi1sZWZ0OjE2NHB4OyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1icmFuZGluZyB7IGNvbG9yOiNmZmY7IGZvbnQtc2l6ZToxMHB4OyBjbGVhcjpib3RoOyB0ZXh0LWFsaWduOmxlZnQ7IG1hcmdpbi10b3A6MzBweDsgZm9udC13ZWlnaHQ6MTAwOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1icmFuZGluZyAuX2xvZ28geyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMzBweDsgaGVpZ2h0OjE0cHg7IG1hcmdpbi10b3A6NnB4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnaHR0cHM6Ly9kMjI2YWo0YW8xdDYxcS5jbG91ZGZyb250Lm5ldC9oaDl1anFndjVfYWNsb2dvX2xpLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MTMwcHggYXV0bzsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1sYWJlbCwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IC5fZm9ybS1sYWJlbCB7IGZvbnQtd2VpZ2h0OmJvbGQ7IG1hcmdpbi1ib3R0b206NXB4OyBkaXNwbGF5OmJsb2NrOyB9CiAjX2Zvcm1fMzF
fLl9kYXJrIC5fZm9ybS1icmFuZGluZyB7IGNvbG9yOiMzMzM7IH0KICNfZm9ybV8zMV8uX2RhcmsgLl9mb3JtLWJyYW5kaW5nIC5fbG9nbyB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCdodHRwczovL2QyMjZhajRhbzF0NjFxLmNsb3VkZnJvbnQubmV0L2pmdHEyYzhzX2FjbG9nb19kay5wbmcnKTsgfQogI19mb3JtXzMxXyAuX2Zvcm1fZWxlbWVudCB7IHBvc2l0aW9uOnJlbGF0aXZlOyBtYXJnaW4tYm90dG9tOjEwcHg7IGZvbnQtc2l6ZTowOyBtYXgtd2lkdGg6MTAwJTsgfQogI19mb3JtXzMxXyAuX2Zvcm1fZWxlbWVudCAqIHsgZm9udC1zaXplOjE0cHg7IH0KICNfZm9ybV8zMV8gLl9mb3JtX2VsZW1lbnQuX2NsZWFyIHsgY2xlYXI6Ym90aDsgd2lkdGg6MTAwJTsgZmxvYXQ6bm9uZTsgfQogI19mb3JtXzMxXyAuX2Zvcm1fZWxlbWVudC5fY2xlYXI6YWZ0ZXIgeyBjbGVhcjpsZWZ0OyB9CiAjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IGlucHV0W3R5cGU9InRleHQiXSwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IGlucHV0W3R5cGU9ImRhdGUiXSwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IHNlbGVjdCwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IHRleHRhcmVhOm5vdCguZy1yZWNhcHRjaGEtcmVzcG9uc2UpIHsgZGlzcGxheTpibG9jazsgd2lkdGg6MTAwJTsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0KICNfZm9ybV8zMV8gLl9maWVsZC13cmFwcGVyIHsgcG9zaXRpb246cmVsYXRpdmU7IH0KICNfZm9ybV8zMV8gLl9pbmxpbmUtc3R5bGUgeyBmbG9hdDpsZWZ0OyB9CiAjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlIGlucHV0W3R5cGU9InRleHQiXSB7IHdpZHRoOjE1MHB4OyB9CiAjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlOm5vdCguX2NsZWFyKSArIC5faW5saW5lLXN0eWxlOm5vdCguX2NsZWFyKSB7IG1hcmdpbi1sZWZ0OjIwcHg7IH0KICNfZm9ybV8zMV8gLl9mb3JtX2VsZW1lbnQgaW1nLl9mb3JtLWltYWdlIHsgbWF4LXdpZHRoOjEwMCU7IH0KICNfZm9ybV8zMV8gLl9jbGVhci1lbGVtZW50IHsgY2xlYXI6bGVmdDsgfQogI19mb3JtXzMxXyAuX2Z1bGxfd2lkdGggeyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybV9mdWxsX2ZpZWxkIHsgZGlzcGxheTpibG9jazsgd2lkdGg6MTAwJTsgbWFyZ2luLWJvdHRvbToxMHB4OyB9CiAjX2Zvcm1fMzFfIGlucHV0W3R5cGU9InRleHQiXS5faGFzX2Vycm9yLCNfZm9ybV8zMV8gdGV4dGFyZWEuX2hhc19lcnJvciB7IGJvcmRlcjojZjM3YzdiIDFweCBzb2xpZDsgfQogI19mb3JtXzMxXyBpbnB1dFt0eXBlPSJjaGVja2JveCJdLl9oYXNfZXJyb3IgeyBvdXRsaW5lOiNmMzdjN2IgMXB4IHNvbGlkOyB9CiAjX2Zvcm1fMzFfIC5fZXJyb3IgeyBkaXNwbGF5OmJsb2NrOyBwb3NpdGlvbjphYnNvbHV0ZTsgZm9udC1zaXplOjEzcHg7IHotaW5kZXg6MTAwMDAwMDE7IH0KICNfZm9ybV8zMV8gLl9lcnJvci5fYWJvdmUgeyBwYWRkaW5nLWJvdHRvbTo0cHg7IHRvcDotNDFweDsgcmlnaHQ6MDsgfQogI19mb3JtXzMxXyAuX2Vycm9yLl9iZWxvdyB7IHBhZGRpbmctdG9wOjRweDsgdG9wOjEwMCU7IHJpZ2h0OjA7IH0KICNfZm9ybV8zMV8gLl9lcnJvci5fYWJvdmUgLl9lcnJvci1hcnJvdyB7IGJvdHRvbTowOyByaWdodDoxNXB4OyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6NXB4IHNvbGlkICNmMzdjN2I7IH0KICNfZm9ybV8zMV8gLl9lcnJvci5fYmVsb3cgLl9lcnJvci1hcnJvdyB7IHRvcDowOyByaWdodDoxNXB4OyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1ib3R0b206NXB4IHNvbGlkICNmMzdjN2I7IH0KICNfZm9ybV8zMV8gLl9lcnJvci1pbm5lciB7IHBhZGRpbmc6OHB4IDEycHg7IGJhY2tncm91bmQtY29sb3I6I2YzN2M3YjsgZm9udC1zaXplOjEzcHg7IGZvbnQtZmFtaWx5OmFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyB9CiAjX2Zvcm1fMzFfIC5fZXJyb3ItaW5uZXIuX2Zvcm1fZXJyb3IgeyBtYXJnaW4tYm90dG9tOjVweDsgdGV4dC1hbGlnbjpsZWZ0OyB9CiAjX2Zvcm1fMzFfIC5fYnV0dG9uLXdyYXBwZXIgLl9lcnJvci1pbm5lci5fZm9ybV9lcnJvciB7IHBvc2l0aW9uOnN0YXRpYzsgfQogI19mb3JtXzMxXyAuX2Vycm9yLWlubmVyLl9ub19hcnJvdyB7IG1hcmdpbi1ib3R0b206MTBweDsgfQogI19mb3JtXzMxXyAuX2Vycm9yLWFycm93IHsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjA7IGhlaWdodDowOyB9CiAjX2Zvcm1fMzFfIC5fZXJyb3ItaHRtbCB7IG1hcmdpbi1ib3R0b206MTBweDsgfQogLnBpa2Etc2luZ2xlIHsgei1pbmRleDoxMDAwMDAwMSAhaW1wb3J0YW50OyB9CiBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjMyMHB4KSBhbmQgKG1heC13aWR0aDo2NjdweCkgeyA6Oi13ZWJraXQtc2Nyb2xsYmFyIHsgZGlzcGxheTpub25lOyB9CiAjX2Zvcm1fMzFfIHsgbWFyZ2luOjA7IHdpZHRoOjEwMCU7IG1pbi13aWR0aDoxMDAlOyBtYXgtd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyB9CiAjX2Zvcm1fMzFfICogeyAtd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgLW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgZm9udC1zaXplOjFlbTsgfQogI19mb3JtXzMxXyAuX2Zvcm0tY29udGVudCB7IG1hcmdpbjowOyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1pbm5lciB7IGRpc3BsYXk6YmxvY2s7IG1pbi13aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS10aXRsZSwjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlIHsgbWFyZ2luLXRvcDowOyBtYXJnaW4tcmlnaHQ6MDsgbWFyZ2luLWxlZnQ6MDsgfQogI19mb3JtXzMxXyAuX2Zvcm0tdGl0bGUgeyBmb250LXNpemU6MS4yZW07IH0KICNfZm9ybV8zMV8gLl9mb3JtX2VsZW1lbnQgeyBtYXJnaW46MCAwIDIwcHg7IHBhZGRpbmc6MDsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzMxXyAuX2Zvcm0tZWxlbWVudCwjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlLCNfZm9ybV8zMV8gaW5wdXRbdHlwZT0idGV4dCJdLCNfZm9ybV8zMV8gbGFiZWwsI19mb3JtXzMxXyBwLCNfZm9ybV8zMV8gdGV4dGFyZWE6bm90KC5nLXJlY2FwdGNoYS1yZXNwb25zZSkgeyBmbG9hdDpub25lOyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fcm93Ll9jaGVja2JveC1yYWRpbyBsYWJlbCB7IGRpc3BsYXk6aW5saW5lOyB9CiAjX2Zvcm1fMzFfIC5fcm93LCNfZm9ybV8zMV8gcCwjX2Zvcm1fMzFfIGxhYmVsIHsgbWFyZ2luLWJvdHRvbTowLjdlbTsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzMxXyAuX3JvdyBpbnB1dFt0eXBlPSJjaGVja2JveCJdLCNfZm9ybV8zMV8gLl9yb3cgaW5wdXRbdHlwZT0icmFkaW8iXSB7IG1hcmdpbjowICFpbXBvcnRhbnQ7IHZlcnRpY2FsLWFsaWduOm1pZGRsZSAhaW1wb3J0YW50OyB9CiAjX2Zvcm1fMzFfIC5fcm93IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gKyBzcGFuIGxhYmVsIHsgZGlzcGxheTppbmxpbmU7IH0KICNfZm9ybV8zMV8gLl9yb3cgc3BhbiBsYWJlbCB7IG1hcmdpbjowICFpbXBvcnRhbnQ7IHdpZHRoOmluaXRpYWwgIWltcG9ydGFudDsgdmVydGljYWwtYWxpZ246bWlkZGxlICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zMV8gLl9mb3JtLWltYWdlIHsgbWF4LXdpZHRoOjEwMCU7IGhlaWdodDphdXRvICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zMV8gaW5wdXRbdHlwZT0idGV4dCJdIHsgcGFkZGluZy1sZWZ0OjEwcHg7IHBhZGRpbmctcmlnaHQ6MTBweDsgZm9udC1zaXplOjE2cHg7IGxpbmUtaGVpZ2h0OjEuM2VtOyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgfQogI19mb3JtXzMxXyBpbnB1dFt0eXBlPSJyYWRpbyJdLCNfZm9ybV8zMV8gaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB3aWR0aDoxLjNlbTsgaGVpZ2h0OjEuM2VtOyBmb250LXNpemU6MWVtOyBtYXJnaW46MCAwLjNlbSAwIDA7IHZlcnRpY2FsLWFsaWduOmJhc2VsaW5lOyB9CiAjX2Zvcm1fMzFfIGJ1dHRvblt0eXBlPSJzdWJtaXQiXSB7IHBhZGRpbmc6MjBweDsgZm9udC1zaXplOjEuNWVtOyB9CiAjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlIHsgbWFyZ2luOjIwcHggMCAwICFpbXBvcnRhbnQ7IH0KIH0KICNfZm9ybV8zMV8geyBwb3NpdGlvbjpyZWxhdGl2ZTsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW46MjVweCBhdXRvIDA7IHBhZGRpbmc6MjBweDsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7ICp6b29tOjE7IGJhY2tncm91bmQ6I2ZmZiAhaW1wb3J0YW50OyBib3JkZXI6MHB4IHNvbGlkICNiMGIwYjAgIWltcG9ydGFudDsgd2lkdGg6NTAwcHg7IC1tb3otYm9yZGVyLXJhZGl1czowcHggIWltcG9ydGFudDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjBweCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjBweCAhaW1wb3J0YW50OyBjb2xvcjojMDAwICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zMV8gLl9mb3JtLXRpdGxlIHsgZm9udC1zaXplOjIycHg7IGxpbmUtaGVpZ2h0OjIycHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWFyZ2luLWJvdHRvbTowOyB9CiAjX2Zvcm1fMzFfOmJlZm9yZSwjX2Zvcm1fMzFfOmFmdGVyIHsgY29udGVudDoiICI7IGRpc3BsYXk6dGFibGU7IH0KICNfZm9ybV8zMV86YWZ0ZXIgeyBjbGVhcjpib3RoOyB9CiAjX2Zvcm1fMzFfLl9pbmxpbmUtc3R5bGUgeyB3aWR0aDphdXRvOyBkaXNwbGF5OmlubGluZS1ibG9jazsgfQogI19mb3JtXzMxXy5faW5saW5lLXN0eWxlIGlucHV0W3R5cGU9InRleHQiXSwjX2Zvcm1fMzFfLl9pbmxpbmUtc3R5bGUgaW5wdXRbdHlwZT0iZGF0ZSJdIHsgcGFkZGluZzoxMHB4IDEycHg7IH0KICNfZm9ybV8zMV8uX2lubGluZS1zdHlsZSBidXR0b24uX2lubGluZS1zdHlsZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6MjdweDsgfQogI19mb3JtXzMxXy5faW5saW5lLXN0eWxlIHAgeyBtYXJnaW46MDsgfQogI19mb3JtXzMxXy5faW5saW5lLXN0eWxlIC5fYnV0dG9uLXdyYXBwZXIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luOjI3cHggMTIuNXB4IDAgMjBweDsgfQogI19mb3JtXzMxXyAuX2Zvcm0tdGhhbmsteW91IHsgcG9zaXRpb246cmVsYXRpdmU7IGxlZnQ6MDsgcmlnaHQ6MDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxOHB4OyB9CiBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjMyMHB4KSBhbmQgKG1heC13aWR0aDo2NjdweCkgeyAjX2Zvcm1fMzFfLl9pbmxpbmUtZm9ybS5faW5saW5lLXN0eWxlIC5faW5saW5lLXN0eWxlLl9idXR0b24td3JhcHBlciB7IG1hcmdpbi10b3A6MjBweCAhaW1wb3J0YW50OyBtYXJnaW4tbGVmdDowICFpbXBvcnRhbnQ7IH0KIH0KPC9zdHlsZT4KPGZvcm0gbWV0aG9kPSJQT1NUIiBhY3Rpb249Imh0dHBzOi8vY2Z0ZS5hY3RpdmVob3N0ZWQuY29tL3Byb2MucGhwIiBpZD0iX2Zvcm1fMzFfIiBjbGFzcz0iX2Zvcm0gX2Zvcm1fMzEgX2lubGluZS1mb3JtICBfZGFyayIgbm92YWxpZGF0ZT4KICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ1IiB2YWx1ZT0iMzEiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZiIgdmFsdWU9IjMxIiAvPgogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InMiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYyIgdmFsdWU9IjAiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibSIgdmFsdWU9IjAiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3ViIiAvPgogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InYiIHZhbHVlPSIyIiAvPgogIDxkaXYgY2
xhc3M9Il9mb3JtLWNvbnRlbnQiPgogICAgPGRpdiBjbGFzcz0iX2Zvcm1fZWxlbWVudCBfeDU0MjQzOTgyIF9mdWxsX3dpZHRoIF9jbGVhciIgPgogICAgICA8ZGl2IGNsYXNzPSJfZm9ybS10aXRsZSI+CiAgICAgICAgU3Vic2NyaWJlIHRvIENGVEUmIzAzOTtzIEV2ZW50IE5ld3NsZXR0ZXIKICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Il9mb3JtX2VsZW1lbnQgX3g2MDkzMzQ3MiBfZnVsbF93aWR0aCAiID4KICAgICAgPGxhYmVsIGNsYXNzPSJfZm9ybS1sYWJlbCI+CiAgICAgICAgRmlyc3QgTmFtZSoKICAgICAgPC9sYWJlbD4KICAgICAgPGRpdiBjbGFzcz0iX2ZpZWxkLXdyYXBwZXIiPgogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmaXJzdG5hbWUiIHBsYWNlaG9sZGVyPSJUeXBlIHlvdXIgZmlyc3QgbmFtZSIgcmVxdWlyZWQvPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iX2Zvcm1fZWxlbWVudCBfeDQyNjQ4NjAwIF9mdWxsX3dpZHRoICIgPgogICAgICA8bGFiZWwgY2xhc3M9Il9mb3JtLWxhYmVsIj4KICAgICAgICBMYXN0IE5hbWUqCiAgICAgIDwvbGFiZWw+CiAgICAgIDxkaXYgY2xhc3M9Il9maWVsZC13cmFwcGVyIj4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibGFzdG5hbWUiIHBsYWNlaG9sZGVyPSJUeXBlIHlvdXIgbGFzdCBuYW1lIiByZXF1aXJlZC8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF94MDQ5NzQ5MTkgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgIEVtYWlsKgogICAgICA8L2xhYmVsPgogICAgICA8ZGl2IGNsYXNzPSJfZmllbGQtd3JhcHBlciI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImVtYWlsIiBwbGFjZWhvbGRlcj0iVHlwZSB5b3VyIGVtYWlsIiByZXF1aXJlZC8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF9maWVsZDEgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgIENvdW50cnkqCiAgICAgIDwvbGFiZWw+CiAgICAgIDxkaXYgY2xhc3M9Il9maWVsZC13cmFwcGVyIj4KICAgICAgICA8c2VsZWN0IG5hbWU9ImZpZWxkWzFdIiByZXF1aXJlZD4KICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFmZ2hhbmlzdGFuIiA+CiAgICAgICAgICAgIEFmZ2hhbmlzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFsYmFuaWEiID4KICAgICAgICAgICAgQWxiYW5pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBbGdlcmlhIiA+CiAgICAgICAgICAgIEFsZ2VyaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW1lcmljYW4gU2Ftb2EiID4KICAgICAgICAgICAgQW1lcmljYW4gU2Ftb2EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW5kb3JyYSIgPgogICAgICAgICAgICBBbmRvcnJhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFuZ29sYSIgPgogICAgICAgICAgICBBbmdvbGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW5ndWlsbGEiID4KICAgICAgICAgICAgQW5ndWlsbGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW50YXJjdGljYSIgPgogICAgICAgICAgICBBbnRhcmN0aWNhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFudGlndWEgYW5kIEJhcmJ1ZGEiID4KICAgICAgICAgICAgQW50aWd1YSBhbmQgQmFyYnVkYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBcmdlbnRpbmEiID4KICAgICAgICAgICAgQXJnZW50aW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFybWVuaWEiID4KICAgICAgICAgICAgQXJtZW5pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBcnViYSIgPgogICAgICAgICAgICBBcnViYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBdXN0cmFsaWEiID4KICAgICAgICAgICAgQXVzdHJhbGlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkF1c3RyaWEiID4KICAgICAgICAgICAgQXVzdHJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBemVyYmFpamFuIiA+CiAgICAgICAgICAgIEF6ZXJiYWlqYW4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmFoYW1hcyIgPgogICAgICAgICAgICBCYWhhbWFzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJhaHJhaW4iID4KICAgICAgICAgICAgQmFocmFpbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCYW5nbGFkZXNoIiA+CiAgICAgICAgICAgIEJhbmdsYWRlc2gKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmFyYmFkb3MiID4KICAgICAgICAgICAgQmFyYmFkb3MKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmVsYXJ1cyIgPgogICAgICAgICAgICBCZWxhcnVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJlbGdpdW0iID4KICAgICAgICAgICAgQmVsZ2l1bQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCZWxpemUiID4KICAgICAgICAgICAgQmVsaXplCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJlbmluIiA+CiAgICAgICAgICAgIEJlbmluCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJlcm11ZGEiID4KICAgICAgICAgICAgQmVybXVkYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCaHV0YW4iID4KICAgICAgICAgICAgQmh1dGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJvbGl2aWEiID4KICAgICAgICAgICAgQm9saXZpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCb3NuaWEgYW5kIEhlcnplZ292aW5hIiA+CiAgICAgICAgICAgIEJvc25pYSBhbmQgSGVyemVnb3ZpbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQm90c3dhbmEiID4KICAgICAgICAgICAgQm90c3dhbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQm91dmV0IElzbGFuZCIgPgogICAgICAgICAgICBCb3V2ZXQgSXNsYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJyYXppbCIgPgogICAgICAgICAgICBCcmF6aWwKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQnJpdGlzaCBJbmRpYW4gT2NlYW4gVGVycml0b3J5IiA+CiAgICAgICAgICAgIEJyaXRpc2ggSW5kaWFuIE9jZWFuIFRlcnJpdG9yeQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCcnVuZWkgRGFydXNzYWxhbSIgPgogICAgICAgICAgICBCcnVuZWkgRGFydXNzYWxhbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCdWxnYXJpYSIgPgogICAgICAgICAgICBCdWxnYXJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCdXJraW5hIEZhc28iID4KICAgICAgICAgICAgQnVya2luYSBGYXNvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJ1cnVuZGkiID4KICAgICAgICAgICAgQnVydW5kaQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYW1ib2RpYSIgPgogICAgICAgICAgICBDYW1ib2RpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYW1lcm9vbiIgPgogICAgICAgICAgICBDYW1lcm9vbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYW5hZGEiID4KICAgICAgICAgICAgQ2FuYWRhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNhcGUgVmVyZGUiID4KICAgICAgICAgICAgQ2FwZSBWZXJkZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYXltYW4gSXNsYW5kcyIgPgogICAgICAgICAgICBDYXltYW4gSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDZW50cmFsIEFmcmljYW4gUmVwdWJsaWMiID4KICAgICAgICAgICAgQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNoYWQiID4KICAgICAgICAgICAgQ2hhZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDaGlsZSIgPgogICAgICAgICAgICBDaGlsZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDaGluYSIgPgogICAgICAgICAgICBDaGluYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDaHJpc3RtYXMgSXNsYW5kIiA+CiAgICAgICAgICAgIENocmlzdG1hcyBJc2xhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29jb3MgKEtlZWxpbmcpIElzbGFuZHMiID4KICAgICAgICAgICAgQ29jb3MgKEtlZWxpbmcpIElzbGFuZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29sb21iaWEiID4KICAgICAgICAgICAgQ29sb21iaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29tb3JvcyIgPgogICAgICAgICAgICBDb21vcm9zCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNvbmdvIiA+CiAgICAgICAgICAgIENvbmdvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNvbmdvLCB0aGUgRGVtb2NyYXRpYyBSZXB1YmxpYyBvZiB0aGUiID4KICAgICAgICAgICAgQ29uZ28sIHRoZSBEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDb29rIElzbGFuZHMiID4KICAgICAgICAgICAgQ29vayBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNvc3RhIFJpY2EiID4KICAgICAgICAgICAgQ29zdGEgUmljYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDb3RlIEQmIzAzOTtJdm9pcmUiID4KICAgICAgICAgICAgQ290ZSBEJiMwMzk7SXZvaXJlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNyb2F0aWEiID4KICAgICAgICAgICAgQ3JvYXRpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDdWJhIiA+CiAgICAgICAgICAgIEN1YmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ3lwcnVzIiA+CiAgICAgICAgICAgIEN5cHJ1cwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDemVjaCBSZXB1YmxpYyIgPgogICAgICAgICAgICBDemVjaCBSZXB1YmxpYwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJEZW5tYXJrIiA+CiAgICAgICAgICAgIERlbm1hcmsKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRGppYm91dGkiID4KICAgICAgICAgICAgRGppYm91dGkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRG9taW5pY2EiID4KI
CAgICAgICAgICAgRG9taW5pY2EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRG9taW5pY2FuIFJlcHVibGljIiA+CiAgICAgICAgICAgIERvbWluaWNhbiBSZXB1YmxpYwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJFY3VhZG9yIiA+CiAgICAgICAgICAgIEVjdWFkb3IKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRWd5cHQiID4KICAgICAgICAgICAgRWd5cHQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRWwgU2FsdmFkb3IiID4KICAgICAgICAgICAgRWwgU2FsdmFkb3IKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRXF1YXRvcmlhbCBHdWluZWEiID4KICAgICAgICAgICAgRXF1YXRvcmlhbCBHdWluZWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRXJpdHJlYSIgPgogICAgICAgICAgICBFcml0cmVhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkVzdG9uaWEiID4KICAgICAgICAgICAgRXN0b25pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJFdGhpb3BpYSIgPgogICAgICAgICAgICBFdGhpb3BpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGYWxrbGFuZCBJc2xhbmRzIChNYWx2aW5hcykiID4KICAgICAgICAgICAgRmFsa2xhbmQgSXNsYW5kcyAoTWFsdmluYXMpCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZhcm9lIElzbGFuZHMiID4KICAgICAgICAgICAgRmFyb2UgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGaWppIiA+CiAgICAgICAgICAgIEZpamkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRmlubGFuZCIgPgogICAgICAgICAgICBGaW5sYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZyYW5jZSIgPgogICAgICAgICAgICBGcmFuY2UKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRnJlbmNoIEd1aWFuYSIgPgogICAgICAgICAgICBGcmVuY2ggR3VpYW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZyZW5jaCBQb2x5bmVzaWEiID4KICAgICAgICAgICAgRnJlbmNoIFBvbHluZXNpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXMiID4KICAgICAgICAgICAgRnJlbmNoIFNvdXRoZXJuIFRlcnJpdG9yaWVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdhYm9uIiA+CiAgICAgICAgICAgIEdhYm9uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdhbWJpYSIgPgogICAgICAgICAgICBHYW1iaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR2VvcmdpYSIgPgogICAgICAgICAgICBHZW9yZ2lhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikdlcm1hbnkiID4KICAgICAgICAgICAgR2VybWFueQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHaGFuYSIgPgogICAgICAgICAgICBHaGFuYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHaWJyYWx0YXIiID4KICAgICAgICAgICAgR2licmFsdGFyCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdyZWVjZSIgPgogICAgICAgICAgICBHcmVlY2UKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3JlZW5sYW5kIiA+CiAgICAgICAgICAgIEdyZWVubGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHcmVuYWRhIiA+CiAgICAgICAgICAgIEdyZW5hZGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3VhZGVsb3VwZSIgPgogICAgICAgICAgICBHdWFkZWxvdXBlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1YW0iID4KICAgICAgICAgICAgR3VhbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHdWF0ZW1hbGEiID4KICAgICAgICAgICAgR3VhdGVtYWxhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1ZXJuc2V5IiA+CiAgICAgICAgICAgIEd1ZXJuc2V5CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1aW5lYSIgPgogICAgICAgICAgICBHdWluZWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3VpbmVhLUJpc3NhdSIgPgogICAgICAgICAgICBHdWluZWEtQmlzc2F1CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1eWFuYSIgPgogICAgICAgICAgICBHdXlhbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSGFpdGkiID4KICAgICAgICAgICAgSGFpdGkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSGVhcmQgSXNsYW5kIGFuZCBNY2RvbmFsZCBJc2xhbmRzIiA+CiAgICAgICAgICAgIEhlYXJkIElzbGFuZCBhbmQgTWNkb25hbGQgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIb2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKSIgPgogICAgICAgICAgICBIb2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIb25kdXJhcyIgPgogICAgICAgICAgICBIb25kdXJhcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIb25nIEtvbmciID4KICAgICAgICAgICAgSG9uZyBLb25nCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikh1bmdhcnkiID4KICAgICAgICAgICAgSHVuZ2FyeQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJY2VsYW5kIiA+CiAgICAgICAgICAgIEljZWxhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSW5kaWEiID4KICAgICAgICAgICAgSW5kaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSW5kb25lc2lhIiA+CiAgICAgICAgICAgIEluZG9uZXNpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJcmFuLCBJc2xhbWljIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIElyYW4sIElzbGFtaWMgUmVwdWJsaWMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSXJhcSIgPgogICAgICAgICAgICBJcmFxCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IklyZWxhbmQiID4KICAgICAgICAgICAgSXJlbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJc3JhZWwiID4KICAgICAgICAgICAgSXNyYWVsCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikl0YWx5IiA+CiAgICAgICAgICAgIEl0YWx5CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkphbWFpY2EiID4KICAgICAgICAgICAgSmFtYWljYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJKYXBhbiIgPgogICAgICAgICAgICBKYXBhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJKb3JkYW4iID4KICAgICAgICAgICAgSm9yZGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkthemFraHN0YW4iID4KICAgICAgICAgICAgS2F6YWtoc3RhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLZW55YSIgPgogICAgICAgICAgICBLZW55YQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLaXJpYmF0aSIgPgogICAgICAgICAgICBLaXJpYmF0aQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLb3JlYSwgRGVtb2NyYXRpYyBQZW9wbGUmIzAzOTtzIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIEtvcmVhLCBEZW1vY3JhdGljIFBlb3BsZSYjMDM5O3MgUmVwdWJsaWMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iS29yZWEsIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIEtvcmVhLCBSZXB1YmxpYyBvZgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLdXdhaXQiID4KICAgICAgICAgICAgS3V3YWl0CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikt5cmd5enN0YW4iID4KICAgICAgICAgICAgS3lyZ3l6c3RhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMYW8gUGVvcGxlJiMwMzk7cyBEZW1vY3JhdGljIFJlcHVibGljIiA+CiAgICAgICAgICAgIExhbyBQZW9wbGUmIzAzOTtzIERlbW9jcmF0aWMgUmVwdWJsaWMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTGF0dmlhIiA+CiAgICAgICAgICAgIExhdHZpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMZWJhbm9uIiA+CiAgICAgICAgICAgIExlYmFub24KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTGVzb3RobyIgPgogICAgICAgICAgICBMZXNvdGhvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkxpYmVyaWEiID4KICAgICAgICAgICAgTGliZXJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMaWJ5YW4gQXJhYiBKYW1haGlyaXlhIiA+CiAgICAgICAgICAgIExpYnlhbiBBcmFiIEphbWFoaXJpeWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTGllY2h0ZW5zdGVpbiIgPgogICAgICAgICAgICBMaWVjaHRlbnN0ZWluCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkxpdGh1YW5pYSIgPgogICAgICAgICAgICBMaXRodWFuaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTHV4ZW1ib3VyZyIgPgogICAgICAgICAgICBMdXhlbWJvdXJnCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hY2FvIiA+CiAgICAgICAgICAgIE1hY2FvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hY2Vkb25pYSwgdGhlIEZvcm1lciBZdWdvc2xhdiBSZXB1YmxpYyBvZiIgPgogICAgICAgICAgICBNYWNlZG9uaWEsIHRoZSBGb3JtZXIgWXVnb3NsYXYgUmVwdWJsaWMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFkYWdhc2NhciIgPgogICAgICAgICAgICBNYWRhZ2FzY2FyCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hbGF3aSIgPgogICAgICAgICAgICBNYWxhd2kKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFsYXlzaWEiID4KICAgICAgICAgICAgTWFsYXlzaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFsZGl2ZXMiID4KICAgICAgICAgICAgTWFsZGl2ZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFsaSIgPgogICAgICAgICAgICBNYWxpCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hbHRhIiA+CiAgICAgICAgICAgIE1hbHRhCiAgICAgICAgICA8
L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hcnNoYWxsIElzbGFuZHMiID4KICAgICAgICAgICAgTWFyc2hhbGwgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNYXJ0aW5pcXVlIiA+CiAgICAgICAgICAgIE1hcnRpbmlxdWUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWF1cml0YW5pYSIgPgogICAgICAgICAgICBNYXVyaXRhbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hdXJpdGl1cyIgPgogICAgICAgICAgICBNYXVyaXRpdXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWF5b3R0ZSIgPgogICAgICAgICAgICBNYXlvdHRlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1leGljbyIgPgogICAgICAgICAgICBNZXhpY28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWljcm9uZXNpYSwgRmVkZXJhdGVkIFN0YXRlcyBvZiIgPgogICAgICAgICAgICBNaWNyb25lc2lhLCBGZWRlcmF0ZWQgU3RhdGVzIG9mCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1vbGRvdmEsIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIE1vbGRvdmEsIFJlcHVibGljIG9mCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1vbmFjbyIgPgogICAgICAgICAgICBNb25hY28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW9uZ29saWEiID4KICAgICAgICAgICAgTW9uZ29saWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW9udGVuZWdybyIgPgogICAgICAgICAgICBNb250ZW5lZ3JvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1vbnRzZXJyYXQiID4KICAgICAgICAgICAgTW9udHNlcnJhdAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNb3JvY2NvIiA+CiAgICAgICAgICAgIE1vcm9jY28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW96YW1iaXF1ZSIgPgogICAgICAgICAgICBNb3phbWJpcXVlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik15YW5tYXIiID4KICAgICAgICAgICAgTXlhbm1hcgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOYW1pYmlhIiA+CiAgICAgICAgICAgIE5hbWliaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmF1cnUiID4KICAgICAgICAgICAgTmF1cnUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmVwYWwiID4KICAgICAgICAgICAgTmVwYWwKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmV0aGVybGFuZHMiID4KICAgICAgICAgICAgTmV0aGVybGFuZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmV0aGVybGFuZHMgQW50aWxsZXMiID4KICAgICAgICAgICAgTmV0aGVybGFuZHMgQW50aWxsZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmV3IENhbGVkb25pYSIgPgogICAgICAgICAgICBOZXcgQ2FsZWRvbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5ldyBaZWFsYW5kIiA+CiAgICAgICAgICAgIE5ldyBaZWFsYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5pY2FyYWd1YSIgPgogICAgICAgICAgICBOaWNhcmFndWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmlnZXIiID4KICAgICAgICAgICAgTmlnZXIKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmlnZXJpYSIgPgogICAgICAgICAgICBOaWdlcmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5pdWUiID4KICAgICAgICAgICAgTml1ZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOb3Jmb2xrIElzbGFuZCIgPgogICAgICAgICAgICBOb3Jmb2xrIElzbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOb3J0aGVybiBNYXJpYW5hIElzbGFuZHMiID4KICAgICAgICAgICAgTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5vcndheSIgPgogICAgICAgICAgICBOb3J3YXkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iT21hbiIgPgogICAgICAgICAgICBPbWFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBha2lzdGFuIiA+CiAgICAgICAgICAgIFBha2lzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBhbGF1IiA+CiAgICAgICAgICAgIFBhbGF1CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBhbGVzdGluaWFuIFRlcnJpdG9yeSwgT2NjdXBpZWQiID4KICAgICAgICAgICAgUGFsZXN0aW5pYW4gVGVycml0b3J5LCBPY2N1cGllZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQYW5hbWEiID4KICAgICAgICAgICAgUGFuYW1hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBhcHVhIE5ldyBHdWluZWEiID4KICAgICAgICAgICAgUGFwdWEgTmV3IEd1aW5lYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQYXJhZ3VheSIgPgogICAgICAgICAgICBQYXJhZ3VheQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQZXJ1IiA+CiAgICAgICAgICAgIFBlcnUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUGhpbGlwcGluZXMiID4KICAgICAgICAgICAgUGhpbGlwcGluZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUGl0Y2Fpcm4iID4KICAgICAgICAgICAgUGl0Y2Fpcm4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUG9sYW5kIiA+CiAgICAgICAgICAgIFBvbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQb3J0dWdhbCIgPgogICAgICAgICAgICBQb3J0dWdhbAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQdWVydG8gUmljbyIgPgogICAgICAgICAgICBQdWVydG8gUmljbwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJRYXRhciIgPgogICAgICAgICAgICBRYXRhcgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJSZXVuaW9uIiA+CiAgICAgICAgICAgIFJldW5pb24KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUm9tYW5pYSIgPgogICAgICAgICAgICBSb21hbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlJ1c3NpYW4gRmVkZXJhdGlvbiIgPgogICAgICAgICAgICBSdXNzaWFuIEZlZGVyYXRpb24KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUndhbmRhIiA+CiAgICAgICAgICAgIFJ3YW5kYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTYWludCBIZWxlbmEiID4KICAgICAgICAgICAgU2FpbnQgSGVsZW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhaW50IEtpdHRzIGFuZCBOZXZpcyIgPgogICAgICAgICAgICBTYWludCBLaXR0cyBhbmQgTmV2aXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2FpbnQgTHVjaWEiID4KICAgICAgICAgICAgU2FpbnQgTHVjaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2FpbnQgUGllcnJlIGFuZCBNaXF1ZWxvbiIgPgogICAgICAgICAgICBTYWludCBQaWVycmUgYW5kIE1pcXVlbG9uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzIiA+CiAgICAgICAgICAgIFNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhbW9hIiA+CiAgICAgICAgICAgIFNhbW9hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhbiBNYXJpbm8iID4KICAgICAgICAgICAgU2FuIE1hcmlubwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTYW8gVG9tZSBhbmQgUHJpbmNpcGUiID4KICAgICAgICAgICAgU2FvIFRvbWUgYW5kIFByaW5jaXBlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhdWRpIEFyYWJpYSIgPgogICAgICAgICAgICBTYXVkaSBBcmFiaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2VuZWdhbCIgPgogICAgICAgICAgICBTZW5lZ2FsCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNlcmJpYSIgPgogICAgICAgICAgICBTZXJiaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2V5Y2hlbGxlcyIgPgogICAgICAgICAgICBTZXljaGVsbGVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNpZXJyYSBMZW9uZSIgPgogICAgICAgICAgICBTaWVycmEgTGVvbmUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2luZ2Fwb3JlIiA+CiAgICAgICAgICAgIFNpbmdhcG9yZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTbG92YWtpYSIgPgogICAgICAgICAgICBTbG92YWtpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTbG92ZW5pYSIgPgogICAgICAgICAgICBTbG92ZW5pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTb2xvbW9uIElzbGFuZHMiID4KICAgICAgICAgICAgU29sb21vbiBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNvbWFsaWEiID4KICAgICAgICAgICAgU29tYWxpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTb3V0aCBBZnJpY2EiID4KICAgICAgICAgICAgU291dGggQWZyaWNhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNvdXRoIEdlb3JnaWEgYW5kIHRoZSBTb3V0aCBTYW5kd2ljaCBJc2xhbmRzIiA+CiAgICAgICAgICAgIFNvdXRoIEdlb3JnaWEgYW5kIHRoZSBTb3V0aCBTYW5kd2ljaCBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNwYWluIiA+CiAgICAgICAgICAgIFNwYWluCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNyaSBMYW5rYSIgPgogICAgICAgICAgICBTcmkgTGFua2EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3VkYW4iID4KICAgICAgICAgICAgU3VkYW4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3VyaW5hbWUiID4KICAgICAgICAgICAgU3VyaW5hbWUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3ZhbGJhcmQgYW5kIEphbiBNYXllbiIgPgogICAgICAgICAgICBTdmFsYmFyZCBhbmQgSmFuIE1heWVuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlN3YXppbGFuZCIgPgogICAgICA
gICAgICBTd2F6aWxhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3dlZGVuIiA+CiAgICAgICAgICAgIFN3ZWRlbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTd2l0emVybGFuZCIgPgogICAgICAgICAgICBTd2l0emVybGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTeXJpYW4gQXJhYiBSZXB1YmxpYyIgPgogICAgICAgICAgICBTeXJpYW4gQXJhYiBSZXB1YmxpYwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUYWl3YW4sIFByb3ZpbmNlIG9mIENoaW5hIiA+CiAgICAgICAgICAgIFRhaXdhbiwgUHJvdmluY2Ugb2YgQ2hpbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVGFqaWtpc3RhbiIgPgogICAgICAgICAgICBUYWppa2lzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRhbnphbmlhLCBVbml0ZWQgUmVwdWJsaWMgb2YiID4KICAgICAgICAgICAgVGFuemFuaWEsIFVuaXRlZCBSZXB1YmxpYyBvZgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUaGFpbGFuZCIgPgogICAgICAgICAgICBUaGFpbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUaW1vci1MZXN0ZSIgPgogICAgICAgICAgICBUaW1vci1MZXN0ZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUb2dvIiA+CiAgICAgICAgICAgIFRvZ28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVG9rZWxhdSIgPgogICAgICAgICAgICBUb2tlbGF1CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRvbmdhIiA+CiAgICAgICAgICAgIFRvbmdhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRyaW5pZGFkIGFuZCBUb2JhZ28iID4KICAgICAgICAgICAgVHJpbmlkYWQgYW5kIFRvYmFnbwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUdW5pc2lhIiA+CiAgICAgICAgICAgIFR1bmlzaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVHVya2V5IiA+CiAgICAgICAgICAgIFR1cmtleQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUdXJrbWVuaXN0YW4iID4KICAgICAgICAgICAgVHVya21lbmlzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlR1cmtzIGFuZCBDYWljb3MgSXNsYW5kcyIgPgogICAgICAgICAgICBUdXJrcyBhbmQgQ2FpY29zIElzbGFuZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVHV2YWx1IiA+CiAgICAgICAgICAgIFR1dmFsdQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVZ2FuZGEiID4KICAgICAgICAgICAgVWdhbmRhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlVrcmFpbmUiID4KICAgICAgICAgICAgVWtyYWluZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVbml0ZWQgQXJhYiBFbWlyYXRlcyIgPgogICAgICAgICAgICBVbml0ZWQgQXJhYiBFbWlyYXRlcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVbml0ZWQgS2luZ2RvbSIgPgogICAgICAgICAgICBVbml0ZWQgS2luZ2RvbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVbml0ZWQgU3RhdGVzIiA+CiAgICAgICAgICAgIFVuaXRlZCBTdGF0ZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVW5pdGVkIFN0YXRlcyBNaW5vciBPdXRseWluZyBJc2xhbmRzIiA+CiAgICAgICAgICAgIFVuaXRlZCBTdGF0ZXMgTWlub3IgT3V0bHlpbmcgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVcnVndWF5IiA+CiAgICAgICAgICAgIFVydWd1YXkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVXpiZWtpc3RhbiIgPgogICAgICAgICAgICBVemJla2lzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlZhbnVhdHUiID4KICAgICAgICAgICAgVmFudWF0dQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWZW5lenVlbGEiID4KICAgICAgICAgICAgVmVuZXp1ZWxhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlZpZXRuYW0iID4KICAgICAgICAgICAgVmlldG5hbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWaXJnaW4gSXNsYW5kcywgQnJpdGlzaCIgPgogICAgICAgICAgICBWaXJnaW4gSXNsYW5kcywgQnJpdGlzaAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWaXJnaW4gSXNsYW5kcywgVS5zLiIgPgogICAgICAgICAgICBWaXJnaW4gSXNsYW5kcywgVS5zLgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJXYWxsaXMgYW5kIEZ1dHVuYSIgPgogICAgICAgICAgICBXYWxsaXMgYW5kIEZ1dHVuYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJXZXN0ZXJuIFNhaGFyYSIgPgogICAgICAgICAgICBXZXN0ZXJuIFNhaGFyYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJZZW1lbiIgPgogICAgICAgICAgICBZZW1lbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJaYW1iaWEiID4KICAgICAgICAgICAgWmFtYmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlppbWJhYndlIiA+CiAgICAgICAgICAgIFppbWJhYndlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNHIiA+CiAgICAgICAgICAgIFNHCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNBTkFEQSIgPgogICAgICAgICAgICBDQU5BREEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iS29yZWEiID4KICAgICAgICAgICAgS29yZWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIiA+CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikx1eGVtYm91cmdoIiA+CiAgICAgICAgICAgIEx1eGVtYm91cmdoCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1ZIiA+CiAgICAgICAgICAgIE1ZCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkVTV0FSVElOSSIgPgogICAgICAgICAgICBFU1dBUlRJTkkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZVN3YXRpbmkgIiA+CiAgICAgICAgICAgIGVTd2F0aW5pCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNaIiA+CiAgICAgICAgICAgIFNaCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNBIiA+CiAgICAgICAgICAgIENBCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdyZWF0IEJyaXRhaW4iID4KICAgICAgICAgICAgR3JlYXQgQnJpdGFpbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJSdXNzaWEiID4KICAgICAgICAgICAgUnVzc2lhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkhvbmcgS29uZyBTQVIgQ2hpbmEiID4KICAgICAgICAgICAgSG9uZyBLb25nIFNBUiBDaGluYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMb25kb24iID4KICAgICAgICAgICAgTG9uZG9uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICA8L3NlbGVjdD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Il9mb3JtX2VsZW1lbnQgX2ZpZWxkMiBfZnVsbF93aWR0aCAiID4KICAgICAgPGRpdiBjbGFzcz0iX3JvdyI+CiAgICAgICAgPGxhYmVsIGNsYXNzPSJfZm9ybS1sYWJlbCI+CiAgICAgICAgICBQcml2YWN5IFBvbGljeSoKICAgICAgICA8L2xhYmVsPgogICAgICA8L2Rpdj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmllbGRbMl1bXSIgdmFsdWU9In58Ij4KICAgICAgPGRpdiBjbGFzcz0iX3JvdyBfY2hlY2tib3gtcmFkaW8iPgogICAgICAgIDxpbnB1dCBpZD0iZmllbGRfMkkgcmVhZCBhbmQgdW5kZXJzdG9vZCBDRlRFIFByaXZhY3kgUG9saWN5ICh3d3cuY2Z0ZS5lZHVjYXRpb24vcHJpdmFjeS1wb2xpY3kpIiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZmllbGRbMl1bXSIgdmFsdWU9IkkgcmVhZCBhbmQgdW5kZXJzdG9vZCBDRlRFIFByaXZhY3kgUG9saWN5ICh3d3cuY2Z0ZS5lZHVjYXRpb24vcHJpdmFjeS1wb2xpY3kpIiBjbGFzcz0iYW55IiAgcmVxdWlyZWQ+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8bGFiZWwgZm9yPSJmaWVsZF8ySSByZWFkIGFuZCB1bmRlcnN0b29kIENGVEUgUHJpdmFjeSBQb2xpY3kgKHd3dy5jZnRlLmVkdWNhdGlvbi9wcml2YWN5LXBvbGljeSkiPgogICAgICAgICAgICBJIHJlYWQgYW5kIHVuZGVyc3Rvb2QgQ0ZURSBQcml2YWN5IFBvbGljeSAod3d3LmNmdGUuZWR1Y2F0aW9uL3ByaXZhY3ktcG9saWN5KQogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF9maWVsZDMgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxkaXYgY2xhc3M9Il9yb3ciPgogICAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgICAgQ29tbXVuaWNhdGlvbiBvcHRpb25zCiAgICAgICAgPC9sYWJlbD4KICAgICAgPC9kaXY+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpZWxkWzNdW10iIHZhbHVlPSJ+fCI+CiAgICAgIDxkaXYgY2xhc3M9Il9yb3cgX2NoZWNrYm94LXJhZGlvIj4KICAgICAgICA8aW5wdXQgaWQ9ImZpZWxkXzNJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSYjMDM5O3MgY291cnNlcyBieSBlbWFpbCIgdHlwZT0iY2hlY2tib3giIG5hbWU9ImZpZWxkWzNdW10iIHZhbHVlPSJJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSYjMDM5O3MgY291cnNlcyBieSBlbWFpbCIgICA+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8bGFiZWwgZm9yPSJmaWVsZF8zSSYjMDM5O20gaGFwcHkgdG8gcmVjZWl2ZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IENGVEUmIzAzOTtzIGNvdXJzZXMgYnkgZW1haWwiPgogICAgICAgICAgICBJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSYjMDM5O3MgY291cnNlcyBieSBlbWFpbAogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJfcm93IF9jaGVja2JveC1yYWRpbyI+CiAgICAgICAgPGlucHV0IGlkPSJmaWVsZF8zSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZ2VuZXJhbCBuZXdzbGV0dGVyIiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZmllbGRbM11bXSIgdmFsdWU9Ikkgd2FudCB0byByZWNlaXZlIENGVEUmIzAzOTtzIGdlbmVyYWwgbmV3c2xldHRlciIgICA+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8bGFiZWwgZm9yPSJmaWVsZF8zSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZ2VuZXJhbCBuZXdzbGV0dGVyIj4KICAgICAgICAgICAgSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZ2VuZXJhbCBuZXdzbGV0dGVyCiAgICAgICAgICA8L2xhYmVsPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaX
YgY2xhc3M9Il9yb3cgX2NoZWNrYm94LXJhZGlvIj4KICAgICAgICA8aW5wdXQgaWQ9ImZpZWxkXzNJIHdhbnQgdG8gcmVjZWl2ZSBDRlRFJiMwMzk7cyBldmVudHMgbmV3c2xldHRlciAiIHR5cGU9ImNoZWNrYm94IiBuYW1lPSJmaWVsZFszXVtdIiB2YWx1ZT0iSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZXZlbnRzIG5ld3NsZXR0ZXIgIiAgID4KICAgICAgICA8c3Bhbj4KICAgICAgICAgIDxsYWJlbCBmb3I9ImZpZWxkXzNJIHdhbnQgdG8gcmVjZWl2ZSBDRlRFJiMwMzk7cyBldmVudHMgbmV3c2xldHRlciAiPgogICAgICAgICAgICBJIHdhbnQgdG8gcmVjZWl2ZSBDRlRFJiMwMzk7cyBldmVudHMgbmV3c2xldHRlcgogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfYnV0dG9uLXdyYXBwZXIgX2Z1bGxfd2lkdGgiPgogICAgICA8YnV0dG9uIGlkPSJfZm9ybV8zMV9zdWJtaXQiIGNsYXNzPSJfc3VibWl0IiB0eXBlPSJzdWJtaXQiPgogICAgICAgIFN1Ym1pdAogICAgICA8L2J1dHRvbj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iX2NsZWFyLWVsZW1lbnQiPgogICAgPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iX2Zvcm0tdGhhbmsteW91IiBzdHlsZT0iZGlzcGxheTpub25lOyI+CiAgPC9kaXY+CjwvZm9ybT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CndpbmRvdy5jZmllbGRzID0geyIxIjoiY291bnRyeSIsIjIiOiJwcml2YWN5X3BvbGljeSIsIjMiOiJjb21tdW5pY2F0aW9uX29wdGlvbnMifTsKd2luZG93Ll9zaG93X3RoYW5rX3lvdSA9IGZ1bmN0aW9uKGlkLCBtZXNzYWdlLCB0cmFja2NtcF91cmwpIHsKICB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfZm9ybV8nICsgaWQgKyAnXycpLCB0aGFua195b3UgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybS10aGFuay15b3UnKTsKICBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybS1jb250ZW50Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICB0aGFua195b3UuaW5uZXJIVE1MID0gbWVzc2FnZTsKICB0aGFua195b3Uuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgaWYgKHR5cGVvZih0cmFja2NtcF91cmwpICE9ICd1bmRlZmluZWQnICYmIHRyYWNrY21wX3VybCkgewogICAgLy8gU2l0ZSB0cmFja2luZyBVUkwgdG8gdXNlIGFmdGVyIGlubGluZSBmb3JtIHN1Ym1pc3Npb24uCiAgICBfbG9hZF9zY3JpcHQodHJhY2tjbXBfdXJsKTsKICB9CiAgaWYgKHR5cGVvZiB3aW5kb3cuX2Zvcm1fY2FsbGJhY2sgIT09ICd1bmRlZmluZWQnKSB3aW5kb3cuX2Zvcm1fY2FsbGJhY2soaWQpOwp9Owp3aW5kb3cuX3Nob3dfZXJyb3IgPSBmdW5jdGlvbihpZCwgbWVzc2FnZSwgaHRtbCkgewogIHZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ19mb3JtXycgKyBpZCArICdfJyksIGVyciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLCBidXR0b24gPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpLCBvbGRfZXJyb3IgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybV9lcnJvcicpOwogIGlmIChvbGRfZXJyb3IpIG9sZF9lcnJvci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG9sZF9lcnJvcik7CiAgZXJyLmlubmVySFRNTCA9IG1lc3NhZ2U7CiAgZXJyLmNsYXNzTmFtZSA9ICdfZXJyb3ItaW5uZXIgX2Zvcm1fZXJyb3IgX25vX2Fycm93JzsKICB2YXIgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogIHdyYXBwZXIuY2xhc3NOYW1lID0gJ19mb3JtLWlubmVyJzsKICB3cmFwcGVyLmFwcGVuZENoaWxkKGVycik7CiAgYnV0dG9uLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHdyYXBwZXIsIGJ1dHRvbik7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2lkXj0iX2Zvcm0iXVtpZCQ9Il9zdWJtaXQiXScpLmRpc2FibGVkID0gZmFsc2U7CiAgaWYgKGh0bWwpIHsKICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGRpdi5jbGFzc05hbWUgPSAnX2Vycm9yLWh0bWwnOwogICAgZGl2LmlubmVySFRNTCA9IGh0bWw7CiAgICBlcnIuYXBwZW5kQ2hpbGQoZGl2KTsKICB9Cn07CndpbmRvdy5fbG9hZF9zY3JpcHQgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKSB7CiAgICB2YXIgaGVhZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKSwgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JyksIHIgPSBmYWxzZTsKICAgIHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICBzY3JpcHQuY2hhcnNldCA9ICd1dGYtOCc7CiAgICBzY3JpcHQuc3JjID0gdXJsOwogICAgaWYgKGNhbGxiYWNrKSB7CiAgICAgIHNjcmlwdC5vbmxvYWQgPSBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgIGlmICghciAmJiAoIXRoaXMucmVhZHlTdGF0ZSB8fCB0aGlzLnJlYWR5U3RhdGUgPT0gJ2NvbXBsZXRlJykpIHsKICAgICAgICByID0gdHJ1ZTsKICAgICAgICBjYWxsYmFjaygpOwogICAgICAgIH0KICAgICAgfTsKICAgIH0KICAgIGhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKfTsKKGZ1bmN0aW9uKCkgewogIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoLnNlYXJjaCgiZXhjbHVkZWZvcm0iKSAhPT0gLTEpIHJldHVybiBmYWxzZTsKICB2YXIgZ2V0Q29va2llID0gZnVuY3Rpb24obmFtZSkgewogICAgdmFyIG1hdGNoID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoJyhefDsgKScgKyBuYW1lICsgJz0oW147XSspJykpOwogICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMl0gOiBudWxsOwogIH0KICB2YXIgc2V0Q29va2llID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHsKICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpOwogICAgdmFyIHRpbWUgPSBub3cuZ2V0VGltZSgpOwogICAgdmFyIGV4cGlyZVRpbWUgPSB0aW1lICsgMTAwMCAqIDYwICogNjAgKiAyNCAqIDM2NTsKICAgIG5vdy5zZXRUaW1lKGV4cGlyZVRpbWUpOwogICAgZG9jdW1lbnQuY29va2llID0gbmFtZSArICc9JyArIHZhbHVlICsgJzsgZXhwaXJlcz0nICsgbm93ICsgJztwYXRoPS8nOwogIH0KICAgICAgdmFyIGFkZEV2ZW50ID0gZnVuY3Rpb24oZWxlbWVudCwgZXZlbnQsIGZ1bmMpIHsKICAgIGlmIChlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHsKICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBmdW5jKTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBvbGRGdW5jID0gZWxlbWVudFsnb24nICsgZXZlbnRdOwogICAgICBlbGVtZW50WydvbicgKyBldmVudF0gPSBmdW5jdGlvbigpIHsKICAgICAgICBvbGRGdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICB9OwogICAgfQogIH0KICB2YXIgX3JlbW92ZWQgPSBmYWxzZTsKICB2YXIgZm9ybV90b19zdWJtaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnX2Zvcm1fMzFfJyk7CiAgdmFyIGFsbElucHV0cyA9IGZvcm1fdG9fc3VibWl0LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0LCBzZWxlY3QsIHRleHRhcmVhJyksIHRvb2x0aXBzID0gW10sIHN1Ym1pdHRlZCA9IGZhbHNlOwoKICB2YXIgZ2V0VXJsUGFyYW0gPSBmdW5jdGlvbihuYW1lKSB7CiAgICB2YXIgcmVnZXhTdHIgPSAnW1w/Jl0nICsgbmFtZSArICc9KFteJiNdKiknOwogICAgdmFyIHJlc3VsdHMgPSBuZXcgUmVnRXhwKHJlZ2V4U3RyLCAnaScpLmV4ZWMod2luZG93LmxvY2F0aW9uLmhyZWYpOwogICAgcmV0dXJuIHJlc3VsdHMgIT0gdW5kZWZpbmVkID8gZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMV0pIDogZmFsc2U7CiAgfTsKCiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxJbnB1dHMubGVuZ3RoOyBpKyspIHsKICAgIHZhciByZWdleFN0ciA9ICJmaWVsZFxcWyhcXGQrKVxcXSI7CiAgICB2YXIgcmVzdWx0cyA9IG5ldyBSZWdFeHAocmVnZXhTdHIpLmV4ZWMoYWxsSW5wdXRzW2ldLm5hbWUpOwogICAgaWYgKHJlc3VsdHMgIT0gdW5kZWZpbmVkKSB7CiAgICAgIGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUgPSB3aW5kb3cuY2ZpZWxkc1tyZXN1bHRzWzFdXTsKICAgIH0gZWxzZSB7CiAgICAgIGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUgPSBhbGxJbnB1dHNbaV0ubmFtZTsKICAgIH0KICAgIHZhciBmaWVsZFZhbCA9IGdldFVybFBhcmFtKGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUpOwoKICAgIGlmIChmaWVsZFZhbCkgewogICAgICBpZiAoYWxsSW5wdXRzW2ldLnR5cGUgPT0gInJhZGlvIiB8fCBhbGxJbnB1dHNbaV0udHlwZSA9PSAiY2hlY2tib3giKSB7CiAgICAgICAgaWYgKGFsbElucHV0c1tpXS52YWx1ZSA9PSBmaWVsZFZhbCkgewogICAgICAgICAgYWxsSW5wdXRzW2ldLmNoZWNrZWQgPSB0cnVlOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBhbGxJbnB1dHNbaV0udmFsdWUgPSBmaWVsZFZhbDsKICAgICAgfQogICAgfQogIH0KCiAgdmFyIHJlbW92ZV90b29sdGlwcyA9IGZ1bmN0aW9uKCkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b29sdGlwcy5sZW5ndGg7IGkrKykgewogICAgICB0b29sdGlwc1tpXS50aXAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0b29sdGlwc1tpXS50aXApOwogICAgfQogICAgICB0b29sdGlwcyA9IFtdOwogIH07CiAgdmFyIHJlbW92ZV90b29sdGlwID0gZnVuY3Rpb24oZWxlbSkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b29sdGlwcy5sZW5ndGg7IGkrKykgewogICAgICBpZiAodG9vbHRpcHNbaV0uZWxlbSA9PT0gZWxlbSkgewogICAgICAgIHRvb2x0aXBzW2ldLnRpcC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRvb2x0aXBzW2ldLnRpcCk7CiAgICAgICAgdG9vbHRpcHMuc3BsaWNlKGksIDEpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgfQogIH07CiAgdmFyIGNyZWF0ZV90b29sdGlwID0gZnVuY3Rpb24oZWxlbSwgdGV4dCkgewogICAgdmFyIHRvb2x0aXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgYXJyb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgaW5uZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgbmV3X3Rvb2x0aXAgPSB7fTsKICAgIGlmIChlbGVtLnR5cGUgIT0gJ3JhZGlvJyAmJiBlbGVtLnR5cGUgIT0gJ2NoZWNrYm94JykgewogICAgICB0b29sdGlwLmNsYXNzTmFtZSA9ICdfZXJyb3InOwogICAgICBhcnJvdy5jbGFzc05hbWUgPSAnX2Vycm9yLWFycm93JzsKICAgICAgaW5uZXIuY2xhc3NOYW1lID0gJ19lcnJvci1pbm5lcic7CiAgICAgIGlubmVyLmlubmVySFRNTCA9IHRleHQ7CiAgICAgIHRvb2x0aXAuYXBwZW5kQ2hpbGQoYXJyb3cpOwogICAgICB0b29sdGlwLmFwcGVuZENoaWxkKGlubmVyKTsKICAgICAgZWxlbS5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRvb2x0aXApOwogICAgfSBlbHNlIHsKICAgICAgdG9vbHRpcC5jbGFzc05hbWUgPSAnX2Vycm9yLWlubmVyIF9ub19hcnJvdyc7CiAgICAgIHRvb2x0aXAuaW5uZXJIVE1MID0gdGV4dDsKICAgICAgZWxlbS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0b29sdGlwLCBlbGVtKTsKICAgICAgbmV3X3Rvb2x0aXAubm9fYXJyb3cgPSB0cnVlOwogICAgfQogICAgbmV3X3Rvb2x0aXAudGlwID0gdG9vbHRpcDsKICAgIG5ld190b29sdGlwLmVsZW0gPSBlbGVtOwogICAgdG9vbHRpcHMucHVzaChuZXdfdG9vbHRpcCk7CiAgICByZXR1cm4gbmV3X3Rvb2x0aXA7CiAgfTsKICB2YXIgcmVzaXplX3Rvb2x0aXAgPSBmdW5jdGlvbih0b29sdGlwKSB7CiAgICB2YXIgcmVjdCA9IHRvb2x0aXAuZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIHZhciBkb2MgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHNjcm9sbFBvc2l0aW9uID0gcmVjdC50b3AgLSAoKHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2Muc2Nyb2xsVG9wKSAgLSAoZG9jLmNsaWVudFRvcCB8fCAwKSk7CiAgICBpZiAoc2Nyb2xsUG9zaXRpb24gPCA0MCkgewogICAgICB0b29sdGlwLnRpcC5jbGFzc05hbWUgPSB0b29sdGlwLnRpcC5jbGFzc05hbWUucmVwbGFjZSgvID8oX2Fib3ZlfF9iZWxvdykgPy9nLCAnJykgKyAnIF9iZWxvdyc7C
iAgICB9IGVsc2UgewogICAgICB0b29sdGlwLnRpcC5jbGFzc05hbWUgPSB0b29sdGlwLnRpcC5jbGFzc05hbWUucmVwbGFjZSgvID8oX2Fib3ZlfF9iZWxvdykgPy9nLCAnJykgKyAnIF9hYm92ZSc7CiAgICB9CiAgfTsKICB2YXIgcmVzaXplX3Rvb2x0aXBzID0gZnVuY3Rpb24oKSB7CiAgICBpZiAoX3JlbW92ZWQpIHJldHVybjsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9vbHRpcHMubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKCF0b29sdGlwc1tpXS5ub19hcnJvdykgcmVzaXplX3Rvb2x0aXAodG9vbHRpcHNbaV0pOwogICAgfQogIH07CiAgdmFyIHZhbGlkYXRlX2ZpZWxkID0gZnVuY3Rpb24oZWxlbSwgcmVtb3ZlKSB7CiAgICB2YXIgdG9vbHRpcCA9IG51bGwsIHZhbHVlID0gZWxlbS52YWx1ZSwgbm9fZXJyb3IgPSB0cnVlOwogICAgcmVtb3ZlID8gcmVtb3ZlX3Rvb2x0aXAoZWxlbSkgOiBmYWxzZTsKICAgIGlmIChlbGVtLnR5cGUgIT0gJ2NoZWNrYm94JykgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZS5yZXBsYWNlKC8gP19oYXNfZXJyb3IgPy9nLCAnJyk7CiAgICBpZiAoZWxlbS5nZXRBdHRyaWJ1dGUoJ3JlcXVpcmVkJykgIT09IG51bGwpIHsKICAgICAgaWYgKGVsZW0udHlwZSA9PSAncmFkaW8nIHx8IChlbGVtLnR5cGUgPT0gJ2NoZWNrYm94JyAmJiAvYW55Ly50ZXN0KGVsZW0uY2xhc3NOYW1lKSkpIHsKICAgICAgICB2YXIgZWxlbXMgPSBmb3JtX3RvX3N1Ym1pdC5lbGVtZW50c1tlbGVtLm5hbWVdOwogICAgICAgIGlmICghKGVsZW1zIGluc3RhbmNlb2YgTm9kZUxpc3QgfHwgZWxlbXMgaW5zdGFuY2VvZiBIVE1MQ29sbGVjdGlvbikgfHwgZWxlbXMubGVuZ3RoIDw9IDEpIHsKICAgICAgICAgIG5vX2Vycm9yID0gZWxlbS5jaGVja2VkOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIG5vX2Vycm9yID0gZmFsc2U7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChlbGVtc1tpXS5jaGVja2VkKSBub19lcnJvciA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghbm9fZXJyb3IpIHsKICAgICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiUGxlYXNlIHNlbGVjdCBhbiBvcHRpb24uIik7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGVsZW0udHlwZSA9PSdjaGVja2JveCcpIHsKICAgICAgICB2YXIgZWxlbXMgPSBmb3JtX3RvX3N1Ym1pdC5lbGVtZW50c1tlbGVtLm5hbWVdLCBmb3VuZCA9IGZhbHNlLCBlcnIgPSBbXTsKICAgICAgICBub19lcnJvciA9IHRydWU7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgaWYgKGVsZW1zW2ldLmdldEF0dHJpYnV0ZSgncmVxdWlyZWQnKSA9PT0gbnVsbCkgY29udGludWU7CiAgICAgICAgICBpZiAoIWZvdW5kICYmIGVsZW1zW2ldICE9PSBlbGVtKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgIGVsZW1zW2ldLmNsYXNzTmFtZSA9IGVsZW1zW2ldLmNsYXNzTmFtZS5yZXBsYWNlKC8gP19oYXNfZXJyb3IgPy9nLCAnJyk7CiAgICAgICAgICBpZiAoIWVsZW1zW2ldLmNoZWNrZWQpIHsKICAgICAgICAgICAgbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgICAgICAgZWxlbXNbaV0uY2xhc3NOYW1lID0gZWxlbXNbaV0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICAgICAgZXJyLnB1c2goIkNoZWNraW5nICVzIGlzIHJlcXVpcmVkIi5yZXBsYWNlKCIlcyIsIGVsZW1zW2ldLnZhbHVlKSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghbm9fZXJyb3IpIHsKICAgICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCBlcnIuam9pbignPGJyLz4nKSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGVsZW0udGFnTmFtZSA9PSAnU0VMRUNUJykgewogICAgICAgIHZhciBzZWxlY3RlZCA9IHRydWU7CiAgICAgICAgaWYgKGVsZW0ubXVsdGlwbGUpIHsKICAgICAgICAgIHNlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW0ub3B0aW9ucy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoZWxlbS5vcHRpb25zW2ldLnNlbGVjdGVkKSB7CiAgICAgICAgICAgICAgc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbS5vcHRpb25zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChlbGVtLm9wdGlvbnNbaV0uc2VsZWN0ZWQgJiYgIWVsZW0ub3B0aW9uc1tpXS52YWx1ZSkgewogICAgICAgICAgICAgIHNlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFzZWxlY3RlZCkgewogICAgICAgICAgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZSArICcgX2hhc19lcnJvcic7CiAgICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgICAgdG9vbHRpcCA9IGNyZWF0ZV90b29sdGlwKGVsZW0sICJQbGVhc2Ugc2VsZWN0IGFuIG9wdGlvbi4iKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKTsKICAgICAgfQogICAgfQogICAgaWYgKG5vX2Vycm9yICYmIGVsZW0ubmFtZSA9PSAnZW1haWwnKSB7CiAgICAgIGlmICghdmFsdWUubWF0Y2goL15bXCtfYS16MC05LScmPV0rKFwuW1wrX2EtejAtOS0nXSspKkBbYS16MC05LV0rKFwuW2EtejAtOS1dKykqKFwuW2Etel17Mix9KSQvaSkpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiRW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzLiIpOwogICAgICB9CiAgICB9CiAgICBpZiAobm9fZXJyb3IgJiYgL2RhdGVfZmllbGQvLnRlc3QoZWxlbS5jbGFzc05hbWUpKSB7CiAgICAgIGlmICghdmFsdWUubWF0Y2goL15cZFxkXGRcZC1cZFxkLVxkXGQkLykpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiRW50ZXIgYSB2YWxpZCBkYXRlLiIpOwogICAgICB9CiAgICB9CiAgICB0b29sdGlwID8gcmVzaXplX3Rvb2x0aXAodG9vbHRpcCkgOiBmYWxzZTsKICAgIHJldHVybiBub19lcnJvcjsKICB9OwogIHZhciBuZWVkc192YWxpZGF0ZSA9IGZ1bmN0aW9uKGVsKSB7CiAgICByZXR1cm4gZWwubmFtZSA9PSAnZW1haWwnIHx8IGVsLmdldEF0dHJpYnV0ZSgncmVxdWlyZWQnKSAhPT0gbnVsbDsKICB9OwogIHZhciB2YWxpZGF0ZV9mb3JtID0gZnVuY3Rpb24oZSkgewogICAgdmFyIGVyciA9IGZvcm1fdG9fc3VibWl0LnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybV9lcnJvcicpLCBub19lcnJvciA9IHRydWU7CiAgICBpZiAoIXN1Ym1pdHRlZCkgewogICAgICBzdWJtaXR0ZWQgPSB0cnVlOwogICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYWxsSW5wdXRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgdmFyIGlucHV0ID0gYWxsSW5wdXRzW2ldOwogICAgICAgIGlmIChuZWVkc192YWxpZGF0ZShpbnB1dCkpIHsKICAgICAgICAgIGlmIChpbnB1dC50eXBlID09ICd0ZXh0JykgewogICAgICAgICAgICBhZGRFdmVudChpbnB1dCwgJ2JsdXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS50cmltKCk7CiAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBhZGRFdmVudChpbnB1dCwgJ2lucHV0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC50eXBlID09ICdyYWRpbycgfHwgaW5wdXQudHlwZSA9PSAnY2hlY2tib3gnKSB7CiAgICAgICAgICAgIChmdW5jdGlvbihlbCkgewogICAgICAgICAgICAgIHZhciByYWRpb3MgPSBmb3JtX3RvX3N1Ym1pdC5lbGVtZW50c1tlbC5uYW1lXTsKICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhZGlvcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgYWRkRXZlbnQocmFkaW9zW2ldLCAnY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQoZWwsIHRydWUpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KShpbnB1dCk7CiAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnRhZ05hbWUgPT0gJ1NFTEVDVCcpIHsKICAgICAgICAgICAgYWRkRXZlbnQoaW5wdXQsICdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB2YWxpZGF0ZV9maWVsZCh0aGlzLCB0cnVlKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICByZW1vdmVfdG9vbHRpcHMoKTsKICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhbGxJbnB1dHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKICAgICAgdmFyIGVsZW0gPSBhbGxJbnB1dHNbaV07CiAgICAgIGlmIChuZWVkc192YWxpZGF0ZShlbGVtKSkgewogICAgICAgIGlmIChlbGVtLnRhZ05hbWUudG9Mb3dlckNhc2UoKSAhPT0gInNlbGVjdCIpIHsKICAgICAgICAgIGVsZW0udmFsdWUgPSBlbGVtLnZhbHVlLnRyaW0oKTsKICAgICAgICB9CiAgICAgICAgdmFsaWRhdGVfZmllbGQoZWxlbSkgPyB0cnVlIDogbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgfQogICAgfQogICAgaWYgKCFub19lcnJvciAmJiBlKSB7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIH0KICAgIHJlc2l6ZV90b29sdGlwcygpOwogICAgcmV0dXJuIG5vX2Vycm9yOwogIH07CiAgYWRkRXZlbnQod2luZG93LCAncmVzaXplJywgcmVzaXplX3Rvb2x0aXBzKTsKICBhZGRFdmVudCh3aW5kb3csICdzY3JvbGwnLCByZXNpemVfdG9vbHRpcHMpOwogIHdpbmRvdy5fb2xkX3NlcmlhbGl6ZSA9IG51bGw7CiAgaWYgKHR5cGVvZiBzZXJpYWxpemUgIT09ICd1bmRlZmluZWQnKSB3aW5kb3cuX29sZF9zZXJpYWxpemUgPSB3aW5kb3cuc2VyaWFsaXplOwogIF9sb2FkX3NjcmlwdCgiLy9kM3J4YWlqNTZ2amVnZS5jbG91ZGZyb250Lm5ldC9mb3JtLXNlcmlhbGl6ZS8wLjMvc2VyaWFsaXplLm1pbi5qcyIsIGZ1bmN0aW9uKCkgewogICAgd2luZG93Ll9mb3JtX3NlcmlhbGl6ZSA9IHdpbmRvdy5zZXJpYWxpemU7CiAgICBpZiAod2luZG93Ll9vbGRfc2VyaWFsaXplKSB3aW5kb3cuc2VyaWFsaXplID0gd2luZG93Ll9vbGRfc2VyaWFsaXplOwogIH0pOwogIHZhciBmb3JtX3N1Ym1pdCA9IGZ1bmN0aW9uKGUpIHsKICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIGlmICh2YWxpZGF0ZV9mb3JtKCkpIHsKICAgICAgLy8gdXNlIHRoaXMgdHJpY2sgdG8gZ2V0IHRoZSBzdWJtaXQgYnV0dG9uICYgZGlzYWJsZSBpdCB1c2luZyBwbGFpbiBqYXZhc2NyaXB0CiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNfZm9ybV8zMV9zdWJtaXQnKS5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgICAgIHZhciBzZXJpYWxpemVkID0gX2Zvcm1fc2VyaWFsaXplKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfZm9ybV8zMV8nKSk7CiAgICAgIHZhciBlcnIgPSBmb3JtX3RvX3N1Ym1pdC5xdWVyeVNlbGVjdG9yKCcuX2Zvcm1fZXJyb3InKTsKICAgICAgZXJyID8gZXJyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZXJyKSA6IGZhbHNlOwogICAgICBfbG9hZF9zY3Jp
cHQoJ2h0dHBzOi8vY2Z0ZS5hY3RpdmVob3N0ZWQuY29tL3Byb2MucGhwPycgKyBzZXJpYWxpemVkICsgJyZqc29ucD10cnVlJyk7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7CiAgfTsKICBhZGRFdmVudChmb3JtX3RvX3N1Ym1pdCwgJ3N1Ym1pdCcsIGZvcm1fc3VibWl0KTsKfSkoKTsKCjwvc2NyaXB0Pg==[/fusion_code][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]

Learn the skills of Fintech

Learn the skills of Fintech

More To Explore

Frequently Asked Questions

The Centre for Finance, Technology & Entrepreneurship (CFTE) is a global education platform that aims to equip financial professionals and organisations with the necessary skills to remain competitive in a rapidly changing industry. Our leading training programmes, curated by global industry experts, help talent build skills to join the digital revolution in finance. CFTE’s courses are globally recognised with accreditations from ACT, IBF, CPD, SkillsFuture and ABS.

At CFTE, our mission resonates with every learner’s goals to rapidly advance in their career, to thrive in their next project or even to lead the disruption in finance with their own venture. To help you do this, CFTE gives you the tools you need to master the right skills in digital finance. We bring exclusive insights from leaders that are steering the developments in the financial sphere from global CEOs to disruptive entrepreneurs. With CFTE you don’t just learn what’s in the books, you live the experience by grasping real-world applications.

If you are looking for rich insights into how the Financial Technology arena is transforming from within, we can help you get the latest knowledge that will stir things up in your career. CFTE offers leading online programmes in digital finance, covering an expanse of topics like – Payments, AI, Open Banking, Platforms, Fintech, Intrapreneurship and more, that will help you conquer the financial technology landscape. With this expertise at your disposal, you will be on track to turbocharge your career.

You will be learning from a curated line-up of industry leaders, experts, and entrepreneurs hailing from Fortune 500 companies and Tech Unicorns, among others. They will each be presenting their knowledge and experience in the field of digital finance. No matter if you are embarking on a new journey or fortifying your role, these lecturers and guest experts will guide you through the perspective of established institutions like – Starling Bank, Wells Fargo, tech giants like – Google, IBM, successful startups such as – Kabbage or Plaid, among many more!