Image Image Image Image Image Image Image Image Image Image
Scroll to top

Top

No Comments

Top 5 VMware Admin Tips to Keep App Owners Happy

Top 5 VMware Admin Tips to Keep App Owners Happy
David Davis, vExpert, VCP/VCAP, CCIE
  • On September 29, 2014

In my last post, Storage Education and Learning Resources for VMware Admins, I provided numerous resources for VMware Admins to get up to speed on storage. Whenever you think about storage, and the rest of the infrastructure in the datacenter, you should always keep in mind that the reason it exists in the first place is to run your company’s applications. After all, it’s those business applications that pay for the servers, storage, and even our salaries. Thus, it’s in our interest, and the company’s best interest if we can find ways to keep application owners and end users happy. Unfortunately, most virtualization monitoring tools have little application insight. So how do you know that the storage tweak you made, the expensive new array you put in, or the new flash caching actually helped the applications run faster?

Here are five tips that can help you, as a VMware admin 1) keep application owners happy and 2) help you to prove that your work really improves application performance.

#1: Gain Performance and Capacity Insight

Application performance is going to be determined (in most cases) by the resources that the OS and application have to work with. Those resources are:

  • Virtual CPU
  • Virtual memory
  • Storage throughput (I/O) and latency
  • Network throughput and latency

Note: storage capacity is also a resource but it doesn’t have an effect on performance unless you run out of it. Still, it should be monitored to ensure that doesn’t happen.

If any one of these resources becomes constrained then your application performance will start to degrade. For example, when physical memory is depleted on a vSphere host, the host will use compression and then swap memory out to disk. Since disk is slower, the memory performance will be slower, resulting in slower application performance for the VMs running on that host.

If there is an increase in storage latency for a particular vSphere datastore then the VMs stored on that datastore will experience application performance degradation.

Do you know what the normal resource utilizations are for your virtual machines and hosts? Do you know what the normal storage latency is to your shared storage? These “norms” when application performance is acceptable are called “performance baselines”. You should know what the baseline performance metrics are so that if you have a performance issue, you can identify which metrics are out of the normal range.

To monitor these types of performance statistics and to monitor capacity over time, every virtualization admin should have a virtualization performance / capacity tool in place and – most importantly – USE IT FREQUENTLY. All too often tools are purchased but not implemented or are implemented but simply ignored until there is an issue. While the tools may help to solve the problem during “fire fighting mode”, you’ll spend much more time and energy to find the problem. Additionally, if the tool had of been used properly before the problem, most performance issues can be prevented.

Examples of virtualization performance monitoring and capacity analysis tools are:

1-vcenter-operations-manager-custom-dashboard

Figure 1 – vCenter Operations Manager

#2: Know Your Applications

Too many “infrastructure people” couldn’t care less about the applications that actually run in the datacenter. They don’t want to learn about them, they don’t want to talk to app owners or end users, and they only see apps in terms of their resource utilization profile. In my opinion, this is a mistake

Almost every company has in-house enterprise applications like Microsoft active directory (AD), Exchange Server, SQL, and others. Many companies have in-house applications that they have developed or have purchased, just for their industry and use-case.

I encourage you to take the time to learn about all these applications and get to know the application owners. By understanding the purpose, criticality, dependencies, financial impact, and data flow of your company’s applications, you’ll be more successful at achieving availability, performance, security, data protection, and disaster recovery (and being successful in your job).

For example, what does your mail server need to function? What are all the dependencies? What would be the financial impact to your company if email were down for, say, 1 hour?

2-microsoft-exchange-communication-dependencies

Figure 2 – Exchange Server 2013 Dependencies Diagram

#3: Utilize Application Performance Monitoring

Once you understand the critical applications at your company and their financial impacts, you’ll realize that you are in a unique position to improve application performance with the resources available to you in the datacenter.

To show that you have or have not improved application performance, you’ll need real metrics. While those may be available with many of the enterprise applications, they can be difficult to obtain. Additionally, when you obtain them you are usually doing it for a one-time project on a single host, or handful of hosts.

In order to monitor application-level metrics across the entire datacenter, you need to look at application performance monitoring tools (APM).

Some of the popular application performance monitoring tools available are:

For example, here you see Solarwinds SAM showing SQL performance data-

3-solarwinds-sam-sql-performance-report

Figure 3 – SQL Performance Data from Solarwinds SAM

#4: Shareable Data

One of the main features to look for in whatever application monitoring system you implement is the ability to easily share data with application owners. Even better are custom dashboards that you can create to show, for example, company executives the status of all critical enterprise applications, as you see in Figure 4 below.

This way, the application owners and executives don’t have to come to you to ask for information nor will they ever “point the finger” at you when there are application issues (unless it is deserved, which the report data will prove).

4-appdynamics-executive-dashboard

Figure 4 – Custom Application Performance Dashboard from AppDynamics

#5: Infinio Accelerator

With server consolidation using virtualization and increased density of servers (compute and memory), application performance today is more dependent on storage I/O and latency than ever before. For that reason, many companies have been looking to flash storage to improve application performance. One of the popular uses for flash is to install it in vSphere hosts for caching. The downside to that of course is 1) the cost of the flash and 2) the downtime to install it.

One vSphere caching solution I’ve found is fascinating because it requires no hardware to install, requires no downtime to deploy, and offers a free fully functioning evaluation. That solution is Infinio Accelerator.

Infinio’s version 2.0 adds several capabilities to help you better understand your storage performance per virtual machine (which usually maps to a single application).  For each accelerated datastore, Infinio offers analysis of storage I/O on a per-virtual machine basis, such as which VMs benefit most from caching, and which are generating the most I/O.

For example, here you see a breakdown of the top virtual machines on a datastore, ranked by top I/O reads.

5-infinio-accelerator-top-virtual-machines-io-breakdown

Figure 5

Also in the (soon to be released) Accelerator 2.0 is “Cache Advisor”. With Cache Advisor, you’ll be able to see what happens to virtual machine performance if you were to add more memory to Infinio.

6-infinio-accelerator-cache-advisor

Figure 6

You can sign up to be notified when Infinio Accelerator 2.0 goes into beta here: http://bit.ly/1p7lCJE

Summary

No longer should you think about simply buying more CPU, memory, or disk. Instead, ask yourself – what can I do to improve application performance? After all, if you think about it, improving application performance is one of the most important things that we can do for the company. And remember – to measure the effect that you have on application performance, make sure that you have the right tools in place!

Submit a Comment

Do you want massive traffic?
Dignissim enim porta aliquam nisi pellentesque. Pulvinar rhoncus magnis turpis sit odio pid pulvinar mattis integer aliquam!
  • Goblinus globalus fantumo tubus dia montes
  • Scelerisque cursus dignissim lopatico vutario
  • Montes vutario lacus quis preambul den lacus
  • Leftomato denitro oculus softam lorum quis
  • Spiratio dodenus christmas gulleria tix digit
  • Dualo fitemus lacus quis preambul pat turtulis
* we never share your e-mail with third parties.
COMPANY NAME
221, Mount Olimpus, Rheasilvia, Mars,
Solar System, Milky Way Galaxy
+1 (999) 123-45-67
Thank You. We will contact you as soon as possible.
Do you want more traffic?
Dignissim enim porta aliquam nisi pellentesque. Pulvinar rhoncus magnis turpis sit odio pid pulvinar mattis integer aliquam!
  • Goblinus globalus fantumo tubus dia montes
  • Scelerisque cursus dignissim lopatico vutario
  • Montes vutario lacus quis preambul den lacus
  • Leftomato denitro oculus softam lorum quis
  • Spiratio dodenus christmas gulleria tix digit
  • Dualo fitemus lacus quis preambul pat turtulis
  • Scelerisque cursus dignissim lopatico vutario
  • Montes vutario lacus quis preambul den lacus
SUBSCRIBE TO OUR NEWSLETTER AND START INCREASING YOUR PROFITS NOW!
* we never share your e-mail with third parties.
SUBSCRIBE TO NEWSLETTER
Turpis dis amet adipiscing hac montes odio ac velit? Porta, non rhoncus vut, vel, et adipiscing magna pulvinar adipiscing est adipiscing urna. Dignissim rhoncus scelerisque pulvinar?
SUBSCRIBE TO OUR NEWSLETTER
PGlmcmFtZSB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBzcmM9Imh0dHA6Ly93d3cueW91dHViZS5jb20vZW1iZWQvajhsU2NITzJtTTAiIGZyYW1lYm9yZGVyPSIwIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+
All rights reserved © Company Name, 2014
CONTACT US
COMPANY NAME
221, Mount Olimpus, Rheasilvia, Mars
Solar System, Milky Way Galaxy
+1 (999) 999-99-99
Thank You. We will contact you as soon as possible.
Macbook Pro
* Intel Core i7 (3.8GHz, 6MB cache)
* Retina Display (2880 x 1880 px)
* NVIDIA GeForce GT 750M (Iris)
* 802.11ac Wi-Fi and Bluetooth 4.0
* Thunderbolt 2 (up to 20Gb/s)
* Faster All-Flash Storage (X1)
* Long Lasting Battery (9 hours)
Ivan Churakov, developer
Tel.:
Fax:
E-mail:
Website:
+1 (800) 800-1234, +1 (800) 123-4567
+1 (800) 800-1234 (ext. 1234)
ivan.churakov@domain.tld
http://halfdata.com/
My CodeCanyon Portfolio
Banner Manager Pro - CodeCanyon Item for Sale
Coming Soon and Maintenance Mode - CodeCanyon Item for Sale
Code Shop - CodeCanyon Item for Sale
Keyword Tooltips - CodeCanyon Item for Sale
Subscribe & Download - CodeCanyon Item for Sale
"A placerat mauris placerat et penatibus porta aliquet sed dapibus, pulvinar urna cum aliquet arcu lectus sed tortor aliquet sed dapibus."
John Doe, Astronomer
Bubble Company Inc. © 2011-2014
SUBSCRIBE TO NEWSLETTER
PGlmcmFtZSB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBzcmM9Ii8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL3NCV1BDdmR2OEJrP2F1dG9wbGF5PTEiIGZyYW1lYm9yZGVyPSIwIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+
ENJOY AURORA BOREALIS
SUBSCRIBE TO NEWSLETTER
INTERGALACTIC COMPANY
"Ridiculus enim cras placerat facilisis amet lorem ipsum scelerisque sagittis lorem tis!"
Jojn Doe, CEO
Tel.: +1 (800) 123-45-67, +1 (800) 123-45-68
Fax: +1 (800) 123-45-69 (any time, 24/7/365)
E-mail: info@intergalactic.company
Website: http://www.intergalactic.company
Address:
221, Mount Olimpus,
Rheasilvia region, Mars,
Solar System, Milky Way Galaxy
Do you want more traffic?
Dignissim enim porta aliquam nisi pellentesque. Pulvinar rhoncus magnis turpis sit odio pid pulvinar mattis integer aliquam!
  • Goblinus globalus fantumo tubus dia
  • Scelerisque cursus dignissim lopatico
  • Montes vutario lacus quis preambul
  • Leftomato denitro oculus softam lorum
  • Spiratio dodenus christmas gulleria tix
  • Dualo fitemus lacus quis preambul bela
PGlmcmFtZSB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBzcmM9Imh0dHA6Ly93d3cueW91dHViZS5jb20vZW1iZWQvajhsU2NITzJtTTAiIGZyYW1lYm9yZGVyPSIwIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+
* we never share your details with third parties.
Do you want massive traffic?
Scelerisque augue ac hac, aliquet, nascetur turpis. Augue diam phasellus odio lorem integer, aliquam aliquam sociis nisi adipiscing hacac.
  • Goblinus globalus fantumo tubus dia
  • Scelerisque cursus dignissim lopatico
  • Montes vutario lacus quis preambul
  • Leftomato denitro oculus softam lorum
  • Spiratio dodenus christmas gulleria tix
  • Dualo fitemus lacus quis preambul bela
PGlmcmFtZSB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBzcmM9Imh0dHA6Ly93d3cueW91dHViZS5jb20vZW1iZWQvajhsU2NITzJtTTAiIGZyYW1lYm9yZGVyPSIwIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+
* we never share your details with third parties.
CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdnZl9icm93c2VyX3Vua25vd24gZ2Zvcm1fd3JhcHBlcicgaWQ9J2dmb3JtX3dyYXBwZXJfMjMnIHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxhIGlkPSdnZl8yMycgbmFtZT0nZ2ZfMjMnIGNsYXNzPSdnZm9ybV9hbmNob3InID48L2E+PGZvcm0gbWV0aG9kPSdwb3N0JyBlbmN0eXBlPSdtdWx0aXBhcnQvZm9ybS1kYXRhJyB0YXJnZXQ9J2dmb3JtX2FqYXhfZnJhbWVfMjMnIGlkPSdnZm9ybV8yMycgIGFjdGlvbj0nL3RvcC01LXZtd2FyZS1hZG1pbi10aXBzLWtlZXAtYXBwLW93bmVycy1oYXBweS8jZ2ZfMjMnPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdnZm9ybV9ib2R5Jz48dWwgaWQ9J2dmb3JtX2ZpZWxkc18yMycgY2xhc3M9J2dmb3JtX2ZpZWxkcyB0b3BfbGFiZWwgZm9ybV9zdWJsYWJlbF9iZWxvdyBkZXNjcmlwdGlvbl9iZWxvdyc+PGxpIGlkPSdmaWVsZF8yM18xJyBjbGFzcz0nZ2ZpZWxkIGdmaWVsZF9jb250YWluc19yZXF1aXJlZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdycgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsJyBmb3I9J2lucHV0XzIzXzEnID5GaXJzdCBOYW1lPHNwYW4gY2xhc3M9J2dmaWVsZF9yZXF1aXJlZCc+Kjwvc3Bhbj48L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXInPjxpbnB1dCBuYW1lPSdpbnB1dF8xJyBpZD0naW5wdXRfMjNfMScgdHlwZT0ndGV4dCcgdmFsdWU9JycgY2xhc3M9J21lZGl1bScgIHRhYmluZGV4PScxJyAgIC8+PC9kaXY+PC9saT48bGkgaWQ9J2ZpZWxkXzIzXzInIGNsYXNzPSdnZmllbGQgZ2ZpZWxkX2NvbnRhaW5zX3JlcXVpcmVkIGZpZWxkX3N1YmxhYmVsX2JlbG93IGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93JyA+PGxhYmVsIGNsYXNzPSdnZmllbGRfbGFiZWwnIGZvcj0naW5wdXRfMjNfMicgPkxhc3QgTmFtZTxzcGFuIGNsYXNzPSdnZmllbGRfcmVxdWlyZWQnPio8L3NwYW4+PC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyJz48aW5wdXQgbmFtZT0naW5wdXRfMicgaWQ9J2lucHV0XzIzXzInIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSdtZWRpdW0nICB0YWJpbmRleD0nMicgICAvPjwvZGl2PjwvbGk+PGxpIGlkPSdmaWVsZF8yM18zJyBjbGFzcz0nZ2ZpZWxkIGdmaWVsZF9jb250YWluc19yZXF1aXJlZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdycgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsJyBmb3I9J2lucHV0XzIzXzMnID5FbWFpbDxzcGFuIGNsYXNzPSdnZmllbGRfcmVxdWlyZWQnPio8L3NwYW4+PC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSdpbnB1dF8zJyBpZD0naW5wdXRfMjNfMycgdHlwZT0ndGV4dCcgdmFsdWU9JycgY2xhc3M9J21lZGl1bScgdGFiaW5kZXg9JzMnICAgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9saT48bGkgaWQ9J2ZpZWxkXzIzXzUnIGNsYXNzPSdnZmllbGQgZ2ZpZWxkX2NvbnRhaW5zX3JlcXVpcmVkIGZpZWxkX3N1YmxhYmVsX2JlbG93IGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93JyA+PGxhYmVsIGNsYXNzPSdnZmllbGRfbGFiZWwnIGZvcj0naW5wdXRfMjNfNScgPkNvdW50cnk8c3BhbiBjbGFzcz0nZ2ZpZWxkX3JlcXVpcmVkJz4qPC9zcGFuPjwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lcic+PHNlbGVjdCBuYW1lPSdpbnB1dF81JyBpZD0naW5wdXRfMjNfNScgb25jaGFuZ2U9J2dmX2FwcGx5X3J1bGVzKDIzLFs0XSk7JyBjbGFzcz0nbWVkaXVtIGdmaWVsZF9zZWxlY3QnIHRhYmluZGV4PSc0JyA+PG9wdGlvbiB2YWx1ZT0nVW5pdGVkIFN0YXRlcycgc2VsZWN0ZWQ9J3NlbGVjdGVkJz5Vbml0ZWQgU3RhdGVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ2FuYWRhJyA+Q2FuYWRhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVW5pdGVkIEtpbmdkb20nID5Vbml0ZWQgS2luZ2RvbTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0F1c3RyYWxpYScgPkF1c3RyYWxpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0FmZ2hhbmlzdGFuJyA+QWZnaGFuaXN0YW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBbGJhbmlhJyA+QWxiYW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0FsZ2VyaWEnID5BbGdlcmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQW1lcmljYW4gU2Ftb2EnID5BbWVyaWNhbiBTYW1vYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0FuZG9ycmEnID5BbmRvcnJhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQW5nb2xhJyA+QW5nb2xhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQW50aWd1YSBhbmQgQmFyYnVkYScgPkFudGlndWEgYW5kIEJhcmJ1ZGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBcmdlbnRpbmEnID5BcmdlbnRpbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBcm1lbmlhJyA+QXJtZW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0F1c3RyaWEnID5BdXN0cmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQXplcmJhaWphbicgPkF6ZXJiYWlqYW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCYWhhbWFzJyA+QmFoYW1hczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0JhaHJhaW4nID5CYWhyYWluPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQmFuZ2xhZGVzaCcgPkJhbmdsYWRlc2g8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCYXJiYWRvcycgPkJhcmJhZG9zPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQmVsYXJ1cycgPkJlbGFydXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCZWxnaXVtJyA+QmVsZ2l1bTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0JlbGl6ZScgPkJlbGl6ZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0JlbmluJyA+QmVuaW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCZXJtdWRhJyA+QmVybXVkYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0JodXRhbicgPkJodXRhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0JvbGl2aWEnID5Cb2xpdmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQm9zbmlhIGFuZCBIZXJ6ZWdvdmluYScgPkJvc25pYSBhbmQgSGVyemVnb3ZpbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCb3Rzd2FuYScgPkJvdHN3YW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQnJhemlsJyA+QnJhemlsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQnJ1bmVpJyA+QnJ1bmVpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQnVsZ2FyaWEnID5CdWxnYXJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0J1cmtpbmEgRmFzbycgPkJ1cmtpbmEgRmFzbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0J1cnVuZGknID5CdXJ1bmRpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ2FtYm9kaWEnID5DYW1ib2RpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0NhbWVyb29uJyA+Q2FtZXJvb248L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDYXBlIFZlcmRlJyA+Q2FwZSBWZXJkZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0NheW1hbiBJc2xhbmRzJyA+Q2F5bWFuIElzbGFuZHM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDZW50cmFsIEFmcmljYW4gUmVwdWJsaWMnID5DZW50cmFsIEFmcmljYW4gUmVwdWJsaWM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDaGFkJyA+Q2hhZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0NoaWxlJyA+Q2hpbGU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDaGluYScgPkNoaW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ29sb21iaWEnID5Db2xvbWJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0NvbW9yb3MnID5Db21vcm9zPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ29uZ28sIERlbW9jcmF0aWMgUmVwdWJsaWMgb2YgdGhlJyA+Q29uZ28sIERlbW9jcmF0aWMgUmVwdWJsaWMgb2YgdGhlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ29uZ28sIFJlcHVibGljIG9mIHRoZScgPkNvbmdvLCBSZXB1YmxpYyBvZiB0aGU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDb3N0YSBSaWNhJyA+Q29zdGEgUmljYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0Mmb2NpcmM7dGUgZCYjMDM5O0l2b2lyZScgPkMmb2NpcmM7dGUgZCYjMDM5O0l2b2lyZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0Nyb2F0aWEnID5Dcm9hdGlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ3ViYScgPkN1YmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDeXBydXMnID5DeXBydXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDemVjaCBSZXB1YmxpYycgPkN6ZWNoIFJlcHVibGljPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRGVubWFyaycgPkRlbm1hcms8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdEamlib3V0aScgPkRqaWJvdXRpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRG9taW5pY2EnID5Eb21pbmljYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0RvbWluaWNhbiBSZXB1YmxpYycgPkRvbWluaWNhbiBSZXB1YmxpYzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0Vhc3QgVGltb3InID5FYXN0IFRpbW9yPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRWN1YWRvcicgPkVjdWFkb3I8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdFZ3lwdCcgPkVneXB0PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRWwgU2FsdmFkb3InID5FbCBTYWx2YWRvcjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0VxdWF0b3JpYWwgR3VpbmVhJyA+RXF1YXRvcmlhbCBHdWluZWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdFcml0cmVhJyA+RXJpdHJlYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0VzdG9uaWEnID5Fc3RvbmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRXRoaW9waWEnID5FdGhpb3BpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0ZpamknID5GaWppPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRmlubGFuZCcgPkZpbmxhbmQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdGcmFuY2UnID5GcmFuY2U8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdHYWJvbicgPkdhYm9uPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR2FtYmlhJyA+R2FtYmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR2VvcmdpYScgPkdlb3JnaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdHZXJtYW55JyA+R2VybWFueTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0doYW5hJyA+R2hhbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdHcmVlY2UnID5HcmVlY2U8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdHcmVlbmxhbmQnID5HcmVlbmxhbmQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdHcmVuYWRhJyA+R3JlbmFkYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0d1YW0nID5HdWFtPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR3VhdGVtYWxhJyA+R3VhdGVtYWxhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR3VpbmVhJyA+R3VpbmVhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR3VpbmVhLUJpc3NhdScgPkd1aW5lYS1CaXNzYXU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdHdXlhbmEnID5HdXlhbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdIYWl0aScgPkhhaXRpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSG9uZHVyYXMnID5Ib25kdXJhczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0hvbmcgS29uZycgPkhvbmcgS29uZzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0h1bmdhcnknID5IdW5nYXJ5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSWNlbGFuZCcgPkljZWxhbmQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdJbmRpYScgPkluZGlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSW5kb25lc2lhJyA+SW5kb25lc2lhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSXJhbicgPklyYW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdJcmFxJyA+SXJhcTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0lyZWxhbmQnID5JcmVsYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSXNyYWVsJyA+SXNyYWVsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSXRhbHknID5JdGFseTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0phbWFpY2EnID5KYW1haWNhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSmFwYW4nID5KYXBhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0pvcmRhbicgPkpvcmRhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0themFraHN0YW4nID5LYXpha2hzdGFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nS2VueWEnID5LZW55YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0tpcmliYXRpJyA+S2lyaWJhdGk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOb3J0aCBLb3JlYScgPk5vcnRoIEtvcmVhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU291dGggS29yZWEnID5Tb3V0aCBLb3JlYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0t1d2FpdCcgPkt1d2FpdDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0t5cmd5enN0YW4nID5LeXJneXpzdGFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTGFvcycgPkxhb3M8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdMYXR2aWEnID5MYXR2aWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdMZWJhbm9uJyA+TGViYW5vbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0xlc290aG8nID5MZXNvdGhvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTGliZXJpYScgPkxpYmVyaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdMaWJ5YScgPkxpYnlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTGllY2h0ZW5zdGVpbicgPkxpZWNodGVuc3RlaW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdMaXRodWFuaWEnID5MaXRodWFuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdMdXhlbWJvdXJnJyA+THV4ZW1ib3VyZzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01hY2Vkb25pYScgPk1hY2Vkb25pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01hZGFnYXNjYXInID5NYWRhZ2FzY2FyPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWFsYXdpJyA+TWFsYXdpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWFsYXlzaWEnID5NYWxheXNpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01hbGRpdmVzJyA+TWFsZGl2ZXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNYWxpJyA+TWFsaTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01hbHRhJyA+TWFsdGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNYXJzaGFsbCBJc2xhbmRzJyA+TWFyc2hhbGwgSXNsYW5kczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01hdXJpdGFuaWEnID5NYXVyaXRhbmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWF1cml0aXVzJyA+TWF1cml0aXVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWV4aWNvJyA+TWV4aWNvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWljcm9uZXNpYScgPk1pY3JvbmVzaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNb2xkb3ZhJyA+TW9sZG92YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01vbmFjbycgPk1vbmFjbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01vbmdvbGlhJyA+TW9uZ29saWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNb250ZW5lZ3JvJyA+TW9udGVuZWdybzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01vcm9jY28nID5Nb3JvY2NvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTW96YW1iaXF1ZScgPk1vemFtYmlxdWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNeWFubWFyJyA+TXlhbm1hcjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05hbWliaWEnID5OYW1pYmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTmF1cnUnID5OYXVydTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05lcGFsJyA+TmVwYWw8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOZXRoZXJsYW5kcycgPk5ldGhlcmxhbmRzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTmV3IFplYWxhbmQnID5OZXcgWmVhbGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05pY2FyYWd1YScgPk5pY2FyYWd1YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05pZ2VyJyA+TmlnZXI8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOaWdlcmlhJyA+TmlnZXJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05vcndheScgPk5vcndheTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05vcnRoZXJuIE1hcmlhbmEgSXNsYW5kcycgPk5vcnRoZXJuIE1hcmlhbmEgSXNsYW5kczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J09tYW4nID5PbWFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nUGFraXN0YW4nID5QYWtpc3Rhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1BhbGF1JyA+UGFsYXU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQYWxlc3RpbmUnID5QYWxlc3RpbmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQYW5hbWEnID5QYW5hbWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQYXB1YSBOZXcgR3VpbmVhJyA+UGFwdWEgTmV3IEd1aW5lYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1BhcmFndWF5JyA+UGFyYWd1YXk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQZXJ1JyA+UGVydTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1BoaWxpcHBpbmVzJyA+UGhpbGlwcGluZXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQb2xhbmQnID5Qb2xhbmQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQb3J0dWdhbCcgPlBvcnR1Z2FsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nUHVlcnRvIFJpY28nID5QdWVydG8gUmljbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1FhdGFyJyA+UWF0YXI8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdSb21hbmlhJyA+Um9tYW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1J1c3NpYScgPlJ1c3NpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1J3YW5kYScgPlJ3YW5kYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NhaW50IEtpdHRzIGFuZCBOZXZpcycgPlNhaW50IEtpdHRzIGFuZCBOZXZpczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NhaW50IEx1Y2lhJyA+U2FpbnQgTHVjaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTYWludCBWaW5jZW50IGFuZCB0aGUgR3JlbmFkaW5lcycgPlNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU2Ftb2EnID5TYW1vYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NhbiBNYXJpbm8nID5TYW4gTWFyaW5vPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU2FvIFRvbWUgYW5kIFByaW5jaXBlJyA+U2FvIFRvbWUgYW5kIFByaW5jaXBlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU2F1ZGkgQXJhYmlhJyA+U2F1ZGkgQXJhYmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU2VuZWdhbCcgPlNlbmVnYWw8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTZXJiaWEgYW5kIE1vbnRlbmVncm8nID5TZXJiaWEgYW5kIE1vbnRlbmVncm88L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTZXljaGVsbGVzJyA+U2V5Y2hlbGxlczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NpZXJyYSBMZW9uZScgPlNpZXJyYSBMZW9uZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NpbmdhcG9yZScgPlNpbmdhcG9yZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1Nsb3Zha2lhJyA+U2xvdmFraWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTbG92ZW5pYScgPlNsb3ZlbmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU29sb21vbiBJc2xhbmRzJyA+U29sb21vbiBJc2xhbmRzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU29tYWxpYScgPlNvbWFsaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTb3V0aCBBZnJpY2EnID5Tb3V0aCBBZnJpY2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTcGFpbicgPlNwYWluPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU3JpIExhbmthJyA+U3JpIExhbmthPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU3VkYW4nID5TdWRhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1N1ZGFuLCBTb3V0aCcgPlN1ZGFuLCBTb3V0aDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1N1cmluYW1lJyA+U3VyaW5hbWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTd2F6aWxhbmQnID5Td2F6aWxhbmQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTd2VkZW4nID5Td2VkZW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTd2l0emVybGFuZCcgPlN3aXR6ZXJsYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU3lyaWEnID5TeXJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1RhaXdhbicgPlRhaXdhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1RhamlraXN0YW4nID5UYWppa2lzdGFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVGFuemFuaWEnID5UYW56YW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1RoYWlsYW5kJyA+VGhhaWxhbmQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdUb2dvJyA+VG9nbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1RvbmdhJyA+VG9uZ2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdUcmluaWRhZCBhbmQgVG9iYWdvJyA+VHJpbmlkYWQgYW5kIFRvYmFnbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1R1bmlzaWEnID5UdW5pc2lhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVHVya2V5JyA+VHVya2V5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVHVya21lbmlzdGFuJyA+VHVya21lbmlzdGFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVHV2YWx1JyA+VHV2YWx1PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVWdhbmRhJyA+VWdhbmRhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVWtyYWluZScgPlVrcmFpbmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdVbml0ZWQgQXJhYiBFbWlyYXRlcycgPlVuaXRlZCBBcmFiIEVtaXJhdGVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVXJ1Z3VheScgPlVydWd1YXk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdVemJla2lzdGFuJyA+VXpiZWtpc3Rhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1ZhbnVhdHUnID5WYW51YXR1PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVmF0aWNhbiBDaXR5JyA+VmF0aWNhbiBDaXR5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVmVuZXp1ZWxhJyA+VmVuZXp1ZWxhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVmlldG5hbScgPlZpZXRuYW08L29wdGlvbj48b3B0aW9uIHZhbHVlPSdWaXJnaW4gSXNsYW5kcywgQnJpdGlzaCcgPlZpcmdpbiBJc2xhbmRzLCBCcml0aXNoPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVmlyZ2luIElzbGFuZHMsIFUuUy4nID5WaXJnaW4gSXNsYW5kcywgVS5TLjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1llbWVuJyA+WWVtZW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdaYW1iaWEnID5aYW1iaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdaaW1iYWJ3ZScgPlppbWJhYndlPC9vcHRpb24+PC9zZWxlY3Q+PC9kaXY+PC9saT48bGkgaWQ9J2ZpZWxkXzIzXzQnIGNsYXNzPSdnZmllbGQgZmllbGRfc3VibGFiZWxfYmVsb3cgZmllbGRfZGVzY3JpcHRpb25fYmVsb3cnID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCcgZm9yPSdpbnB1dF8yM180JyA+U3RhdGU8L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXInPjxzZWxlY3QgbmFtZT0naW5wdXRfNCcgaWQ9J2lucHV0XzIzXzQnICBjbGFzcz0nbWVkaXVtIGdmaWVsZF9zZWxlY3QnIHRhYmluZGV4PSc1JyA+PG9wdGlvbiB2YWx1ZT0nQWxhYmFtYScgPkFsYWJhbWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBbGFza2EnID5BbGFza2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBcml6b25hJyA+QXJpem9uYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0Fya2Fuc2FzJyA+QXJrYW5zYXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDYWxpZm9ybmlhJyA+Q2FsaWZvcm5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0NvbG9yYWRvJyA+Q29sb3JhZG88L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDb25uZWN0aWN1dCcgPkNvbm5lY3RpY3V0PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRGVsYXdhcmUnID5EZWxhd2FyZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0Rpc3RyaWN0IG9mIENvbHVtYmlhJyA+RGlzdHJpY3Qgb2YgQ29sdW1iaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdGbG9yaWRhJyA+RmxvcmlkYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0dlb3JnaWEnID5HZW9yZ2lhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSGF3YWlpJyA+SGF3YWlpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSWRhaG8nID5JZGFobzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0lsbGlub2lzJyA+SWxsaW5vaXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdJbmRpYW5hJyA+SW5kaWFuYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0lvd2EnID5Jb3dhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nS2Fuc2FzJyA+S2Fuc2FzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nS2VudHVja3knID5LZW50dWNreTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0xvdWlzaWFuYScgPkxvdWlzaWFuYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01haW5lJyA+TWFpbmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNYXJ5bGFuZCcgPk1hcnlsYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWFzc2FjaHVzZXR0cycgPk1hc3NhY2h1c2V0dHM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNaWNoaWdhbicgPk1pY2hpZ2FuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWlubmVzb3RhJyA+TWlubmVzb3RhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWlzc2lzc2lwcGknID5NaXNzaXNzaXBwaTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01pc3NvdXJpJyA+TWlzc291cmk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNb250YW5hJyA+TW9udGFuYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05lYnJhc2thJyA+TmVicmFza2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOZXZhZGEnID5OZXZhZGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOZXcgSGFtcHNoaXJlJyA+TmV3IEhhbXBzaGlyZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05ldyBKZXJzZXknID5OZXcgSmVyc2V5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTmV3IE1leGljbycgPk5ldyBNZXhpY288L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOZXcgWW9yaycgPk5ldyBZb3JrPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTm9ydGggQ2Fyb2xpbmEnID5Ob3J0aCBDYXJvbGluYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05vcnRoIERha290YScgPk5vcnRoIERha290YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J09oaW8nID5PaGlvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nT2tsYWhvbWEnID5Pa2xhaG9tYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J09yZWdvbicgPk9yZWdvbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1Blbm5zeWx2YW5pYScgPlBlbm5zeWx2YW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1Job2RlIElzbGFuZCcgPlJob2RlIElzbGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NvdXRoIENhcm9saW5hJyA+U291dGggQ2Fyb2xpbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTb3V0aCBEYWtvdGEnID5Tb3V0aCBEYWtvdGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdUZW5uZXNzZWUnID5UZW5uZXNzZWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdUZXhhcycgPlRleGFzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVXRhaCcgPlV0YWg8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdWZXJtb250JyA+VmVybW9udDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1ZpcmdpbmlhJyA+VmlyZ2luaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdXYXNoaW5ndG9uJyA+V2FzaGluZ3Rvbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1dlc3QgVmlyZ2luaWEnID5XZXN0IFZpcmdpbmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nV2lzY29uc2luJyA+V2lzY29uc2luPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nV3lvbWluZycgPld5b21pbmc8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBcm1lZCBGb3JjZXMgQW1lcmljYXMnID5Bcm1lZCBGb3JjZXMgQW1lcmljYXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBcm1lZCBGb3JjZXMgRXVyb3BlJyA+QXJtZWQgRm9yY2VzIEV1cm9wZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0FybWVkIEZvcmNlcyBQYWNpZmljJyA+QXJtZWQgRm9yY2VzIFBhY2lmaWM8L29wdGlvbj48L3NlbGVjdD48L2Rpdj48L2xpPjxsaSBpZD0nZmllbGRfMjNfNicgY2xhc3M9J2dmaWVsZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdycgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsJyBmb3I9J2lucHV0XzIzXzYnID5QaG9uZTwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lcic+PGlucHV0IG5hbWU9J2lucHV0XzYnIGlkPSdpbnB1dF8yM182JyB0eXBlPSd0ZXh0JyB2YWx1ZT0nJyBjbGFzcz0nbWVkaXVtJyB0YWJpbmRleD0nNicgICAvPjwvZGl2PjwvbGk+PGxpIGlkPSdmaWVsZF8yM183JyBjbGFzcz0nZ2ZpZWxkIGdmaWVsZF9jb250YWluc19yZXF1aXJlZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdycgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsJyBmb3I9J2lucHV0XzIzXzcnID5Db21wYW55PHNwYW4gY2xhc3M9J2dmaWVsZF9yZXF1aXJlZCc+Kjwvc3Bhbj48L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXInPjxpbnB1dCBuYW1lPSdpbnB1dF83JyBpZD0naW5wdXRfMjNfNycgdHlwZT0ndGV4dCcgdmFsdWU9JycgY2xhc3M9J21lZGl1bScgIHRhYmluZGV4PSc3JyAgIC8+PC9kaXY+PC9saT48bGkgaWQ9J2ZpZWxkXzIzXzgnIGNsYXNzPSdnZmllbGQgZmllbGRfc3VibGFiZWxfYmVsb3cgZmllbGRfZGVzY3JpcHRpb25fYmVsb3cnID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCcgZm9yPSdpbnB1dF8yM184JyA+Sm9iIFRpdGxlPC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyJz48aW5wdXQgbmFtZT0naW5wdXRfOCcgaWQ9J2lucHV0XzIzXzgnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSdtZWRpdW0nICB0YWJpbmRleD0nOCcgICAvPjwvZGl2PjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9J2dmb3JtX2Zvb3RlciB0b3BfbGFiZWwnPiA8aW5wdXQgdHlwZT0nc3VibWl0JyBpZD0nZ2Zvcm1fc3VibWl0X2J1dHRvbl8yMycgY2xhc3M9J2dmb3JtX2J1dHRvbiBidXR0b24nIHZhbHVlPSdSZWdpc3RlciBOb3chJyB0YWJpbmRleD0nOScgb25jbGljaz0naWYod2luZG93WyJnZl9zdWJtaXR0aW5nXzIzIl0pe3JldHVybiBmYWxzZTt9ICB3aW5kb3dbImdmX3N1Ym1pdHRpbmdfMjMiXT10cnVlOyAgJyAvPiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdnZm9ybV9hamF4JyB2YWx1ZT0nZm9ybV9pZD0yMyZhbXA7dGl0bGU9JmFtcDtkZXNjcmlwdGlvbj0mYW1wO3RhYmluZGV4PTEnIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J2lzX3N1Ym1pdF8yMycgdmFsdWU9JzEnIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J2dmb3JtX3N1Ym1pdCcgdmFsdWU9JzIzJyAvPgogICAgICAgICAgICAKICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0nZ2Zvcm1fdW5pcXVlX2lkJyB2YWx1ZT0nJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdzdGF0ZV8yMycgdmFsdWU9J1d5SmJYU0lzSW1OaE9EVTNZbVl3TURZd05EY3dNVGxqTW1FeU1qQTJOR1poWkRBd056QTFJbDA9JyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdnZm9ybV90YXJnZXRfcGFnZV9udW1iZXJfMjMnIGlkPSdnZm9ybV90YXJnZXRfcGFnZV9udW1iZXJfMjMnIHZhbHVlPScwJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdnZm9ybV9zb3VyY2VfcGFnZV9udW1iZXJfMjMnIGlkPSdnZm9ybV9zb3VyY2VfcGFnZV9udW1iZXJfMjMnIHZhbHVlPScxJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdnZm9ybV9maWVsZF92YWx1ZXMnIHZhbHVlPScnIC8+CiAgICAgICAgICAgIAogICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGlmcmFtZSBzdHlsZT0nZGlzcGxheTpub25lO3dpZHRoOjBweDtoZWlnaHQ6MHB4Oycgc3JjPSdhYm91dDpibGFuaycgbmFtZT0nZ2Zvcm1fYWpheF9mcmFtZV8yMycgaWQ9J2dmb3JtX2FqYXhfZnJhbWVfMjMnPjwvaWZyYW1lPgogICAgICAgICAgICAgICAgPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oJCl7Z2Zvcm1Jbml0U3Bpbm5lciggMjMsICdodHRwOi8vd3d3LnZpcnR1YWxpemF0aW9uc29mdHdhcmUuY29tL3dwLWNvbnRlbnQvcGx1Z2lucy9ncmF2aXR5Zm9ybXMvaW1hZ2VzL3NwaW5uZXIuZ2lmJyApO2pRdWVyeSgnI2dmb3JtX2FqYXhfZnJhbWVfMjMnKS5sb2FkKCBmdW5jdGlvbigpe3ZhciBjb250ZW50cyA9IGpRdWVyeSh0aGlzKS5jb250ZW50cygpLmZpbmQoJyonKS5odG1sKCk7dmFyIGlzX3Bvc3RiYWNrID0gY29udGVudHMuaW5kZXhPZignR0ZfQUpBWF9QT1NUQkFDSycpID49IDA7aWYoIWlzX3Bvc3RiYWNrKXtyZXR1cm47fXZhciBmb3JtX2NvbnRlbnQgPSBqUXVlcnkodGhpcykuY29udGVudHMoKS5maW5kKCcjZ2Zvcm1fd3JhcHBlcl8yMycpO3ZhciBpc19jb25maXJtYXRpb24gPSBqUXVlcnkodGhpcykuY29udGVudHMoKS5maW5kKCcjZ2Zvcm1fY29uZmlybWF0aW9uX3dyYXBwZXJfMjMnKS5sZW5ndGggPiAwO3ZhciBpc19yZWRpcmVjdCA9IGNvbnRlbnRzLmluZGV4T2YoJ2dmb3JtUmVkaXJlY3QoKXsnKSA+PSAwO3ZhciBpc19mb3JtID0gZm9ybV9jb250ZW50Lmxlbmd0aCA+IDAgJiYgISBpc19yZWRpcmVjdCAmJiAhIGlzX2NvbmZpcm1hdGlvbjtpZihpc19mb3JtKXtqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzIzJykuaHRtbChmb3JtX2NvbnRlbnQuaHRtbCgpKTtzZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsgLyogZGVsYXkgdGhlIHNjcm9sbCBieSA1MCBtaWxsaXNlY29uZHMgdG8gZml4IGEgYnVnIGluIGNocm9tZSAqLyBqUXVlcnkoZG9jdW1lbnQpLnNjcm9sbFRvcChqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzIzJykub2Zmc2V0KCkudG9wKTsgfSwgNTAgKTtpZih3aW5kb3dbJ2dmb3JtSW5pdERhdGVwaWNrZXInXSkge2dmb3JtSW5pdERhdGVwaWNrZXIoKTt9aWYod2luZG93WydnZm9ybUluaXRQcmljZUZpZWxkcyddKSB7Z2Zvcm1Jbml0UHJpY2VGaWVsZHMoKTt9dmFyIGN1cnJlbnRfcGFnZSA9IGpRdWVyeSgnI2dmb3JtX3NvdXJjZV9wYWdlX251bWJlcl8yMycpLnZhbCgpO2dmb3JtSW5pdFNwaW5uZXIoIDIzLCAnaHR0cDovL3d3dy52aXJ0dWFsaXphdGlvbnNvZnR3YXJlLmNvbS93cC1jb250ZW50L3BsdWdpbnMvZ3Jhdml0eWZvcm1zL2ltYWdlcy9zcGlubmVyLmdpZicgKTtqUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXIoJ2dmb3JtX3BhZ2VfbG9hZGVkJywgWzIzLCBjdXJyZW50X3BhZ2VdKTt3aW5kb3dbJ2dmX3N1Ym1pdHRpbmdfMjMnXSA9IGZhbHNlO31lbHNlIGlmKCFpc19yZWRpcmVjdCl7dmFyIGNvbmZpcm1hdGlvbl9jb250ZW50ID0galF1ZXJ5KHRoaXMpLmNvbnRlbnRzKCkuZmluZCgnI2dmb3Jtc19jb25maXJtYXRpb25fbWVzc2FnZV8yMycpLmh0bWwoKTtpZighY29uZmlybWF0aW9uX2NvbnRlbnQpe2NvbmZpcm1hdGlvbl9jb250ZW50ID0gY29udGVudHM7fXNldFRpbWVvdXQoZnVuY3Rpb24oKXtqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzIzJykucmVwbGFjZVdpdGgoJzwnICsgJ2RpdiBpZD1cJ2dmb3Jtc19jb25maXJtYXRpb25fbWVzc2FnZV8yM1wnIGNsYXNzPVwnZ2Zvcm1fY29uZmlybWF0aW9uX21lc3NhZ2VfMjMgZ2Zvcm1zX2NvbmZpcm1hdGlvbl9tZXNzYWdlXCcnICsgJz4nICsgY29uZmlybWF0aW9uX2NvbnRlbnQgKyAnPCcgKyAnL2RpdicgKyAnPicpO2pRdWVyeShkb2N1bWVudCkuc2Nyb2xsVG9wKGpRdWVyeSgnI2dmb3Jtc19jb25maXJtYXRpb25fbWVzc2FnZV8yMycpLm9mZnNldCgpLnRvcCk7alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCdnZm9ybV9jb25maXJtYXRpb25fbG9hZGVkJywgWzIzXSk7d2luZG93WydnZl9zdWJtaXR0aW5nXzIzJ10gPSBmYWxzZTt9LCA1MCk7fWVsc2V7alF1ZXJ5KCcjZ2Zvcm1fMjMnKS5hcHBlbmQoY29udGVudHMpO2lmKHdpbmRvd1snZ2Zvcm1SZWRpcmVjdCddKSB7Z2Zvcm1SZWRpcmVjdCgpO319alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCdnZm9ybV9wb3N0X3JlbmRlcicsIFsyMywgY3VycmVudF9wYWdlXSk7fSApO30gKTs8L3NjcmlwdD48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+IGlmKHR5cGVvZiBnZl9nbG9iYWwgPT0gJ3VuZGVmaW5lZCcpIHZhciBnZl9nbG9iYWwgPSB7ImdmX2N1cnJlbmN5X2NvbmZpZyI6eyJuYW1lIjoiVS5TLiBEb2xsYXIiLCJzeW1ib2xfbGVmdCI6IiQiLCJzeW1ib2xfcmlnaHQiOiIiLCJzeW1ib2xfcGFkZGluZyI6IiIsInRob3VzYW5kX3NlcGFyYXRvciI6IiwiLCJkZWNpbWFsX3NlcGFyYXRvciI6Ii4iLCJkZWNpbWFscyI6Mn0sImJhc2VfdXJsIjoiaHR0cDpcL1wvd3d3LnZpcnR1YWxpemF0aW9uc29mdHdhcmUuY29tXC93cC1jb250ZW50XC9wbHVnaW5zXC9ncmF2aXR5Zm9ybXMiLCJudW1iZXJfZm9ybWF0cyI6W10sInNwaW5uZXJVcmwiOiJodHRwOlwvXC93d3cudmlydHVhbGl6YXRpb25zb2Z0d2FyZS5jb21cL3dwLWNvbnRlbnRcL3BsdWdpbnNcL2dyYXZpdHlmb3Jtc1wvaW1hZ2VzXC9zcGlubmVyLmdpZiJ9O2pRdWVyeShkb2N1bWVudCkuYmluZCgnZ2Zvcm1fcG9zdF9yZW5kZXInLCBmdW5jdGlvbihldmVudCwgZm9ybUlkLCBjdXJyZW50UGFnZSl7aWYoZm9ybUlkID09IDIzKSB7aWYod2luZG93WydqUXVlcnknXSl7aWYoIXdpbmRvd1snZ2ZfZm9ybV9jb25kaXRpb25hbF9sb2dpYyddKXdpbmRvd1snZ2ZfZm9ybV9jb25kaXRpb25hbF9sb2dpYyddID0gbmV3IEFycmF5KCk7d2luZG93WydnZl9mb3JtX2NvbmRpdGlvbmFsX2xvZ2ljJ11bMjNdID0geydsb2dpYycgOiB7NDogeyJmaWVsZCI6eyJhY3Rpb25UeXBlIjoiaGlkZSIsImxvZ2ljVHlwZSI6ImFsbCIsInJ1bGVzIjpbeyJmaWVsZElkIjoiNSIsIm9wZXJhdG9yIjoiaXNub3QiLCJ2YWx1ZSI6IlVuaXRlZCBTdGF0ZXMifV19LCJuZXh0QnV0dG9uIjpudWxsLCJzZWN0aW9uIjpudWxsfSB9LCAnZGVwZW5kZW50cycgOiB7NDogWzRdIH0sICdhbmltYXRpb24nIDogMCAsICdkZWZhdWx0cycgOiB7IjUiOiJVbml0ZWQgU3RhdGVzIn0gfTsgaWYoIXdpbmRvd1snZ2ZfbnVtYmVyX2Zvcm1hdCddKXdpbmRvd1snZ2ZfbnVtYmVyX2Zvcm1hdCddID0gJ2RlY2ltYWxfZG90JztqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7Z2ZfYXBwbHlfcnVsZXMoMjMsIFs0XSwgdHJ1ZSk7alF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8yMycpLnNob3coKTtqUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXIoJ2dmb3JtX3Bvc3RfY29uZGl0aW9uYWxfbG9naWMnLCBbMjMsIG51bGwsIHRydWVdKTt9ICk7fSBnZm9ybUluaXRDaG9zZW5GaWVsZHMoJyNpbnB1dF8yM181LCNpbnB1dF8yM180JywnTm8gcmVzdWx0cyBtYXRjaGVkJyk7fSB9ICk7alF1ZXJ5KGRvY3VtZW50KS5iaW5kKCdnZm9ybV9wb3N0X2NvbmRpdGlvbmFsX2xvZ2ljJywgZnVuY3Rpb24oZXZlbnQsIGZvcm1JZCwgZmllbGRzLCBpc0luaXQpe2dmb3JtSW5pdENob3NlbkZpZWxkcygnI2lucHV0XzIzXzUsI2lucHV0XzIzXzQnLCdObyByZXN1bHRzIG1hdGNoZWQnKTt9ICk7PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPiBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCdnZm9ybV9wb3N0X3JlbmRlcicsIFsyMywgMV0pIH0gKTsgPC9zY3JpcHQ+
Can't Make the time?
Can't Make the Webinar Time?

Request the Recording!
If you haven’t had these virtual machine problems yet – you will! These VM problems and their solutions have been selected based on the real-world feedback from thousands of VMware Admins and you’ll have two vExperts on the webinar to offer insight and remedies.
arrow-right-green
CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdnZl9icm93c2VyX3Vua25vd24gZ2Zvcm1fd3JhcHBlcicgaWQ9J2dmb3JtX3dyYXBwZXJfMjMnIHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxhIGlkPSdnZl8yMycgbmFtZT0nZ2ZfMjMnIGNsYXNzPSdnZm9ybV9hbmNob3InID48L2E+PGZvcm0gbWV0aG9kPSdwb3N0JyBlbmN0eXBlPSdtdWx0aXBhcnQvZm9ybS1kYXRhJyB0YXJnZXQ9J2dmb3JtX2FqYXhfZnJhbWVfMjMnIGlkPSdnZm9ybV8yMycgIGFjdGlvbj0nL3RvcC01LXZtd2FyZS1hZG1pbi10aXBzLWtlZXAtYXBwLW93bmVycy1oYXBweS8jZ2ZfMjMnPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdnZm9ybV9ib2R5Jz48dWwgaWQ9J2dmb3JtX2ZpZWxkc18yMycgY2xhc3M9J2dmb3JtX2ZpZWxkcyB0b3BfbGFiZWwgZm9ybV9zdWJsYWJlbF9iZWxvdyBkZXNjcmlwdGlvbl9iZWxvdyc+PGxpIGlkPSdmaWVsZF8yM18xJyBjbGFzcz0nZ2ZpZWxkIGdmaWVsZF9jb250YWluc19yZXF1aXJlZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdycgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsJyBmb3I9J2lucHV0XzIzXzEnID5GaXJzdCBOYW1lPHNwYW4gY2xhc3M9J2dmaWVsZF9yZXF1aXJlZCc+Kjwvc3Bhbj48L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXInPjxpbnB1dCBuYW1lPSdpbnB1dF8xJyBpZD0naW5wdXRfMjNfMScgdHlwZT0ndGV4dCcgdmFsdWU9JycgY2xhc3M9J21lZGl1bScgIHRhYmluZGV4PScxJyAgIC8+PC9kaXY+PC9saT48bGkgaWQ9J2ZpZWxkXzIzXzInIGNsYXNzPSdnZmllbGQgZ2ZpZWxkX2NvbnRhaW5zX3JlcXVpcmVkIGZpZWxkX3N1YmxhYmVsX2JlbG93IGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93JyA+PGxhYmVsIGNsYXNzPSdnZmllbGRfbGFiZWwnIGZvcj0naW5wdXRfMjNfMicgPkxhc3QgTmFtZTxzcGFuIGNsYXNzPSdnZmllbGRfcmVxdWlyZWQnPio8L3NwYW4+PC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyJz48aW5wdXQgbmFtZT0naW5wdXRfMicgaWQ9J2lucHV0XzIzXzInIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSdtZWRpdW0nICB0YWJpbmRleD0nMicgICAvPjwvZGl2PjwvbGk+PGxpIGlkPSdmaWVsZF8yM18zJyBjbGFzcz0nZ2ZpZWxkIGdmaWVsZF9jb250YWluc19yZXF1aXJlZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdycgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsJyBmb3I9J2lucHV0XzIzXzMnID5FbWFpbDxzcGFuIGNsYXNzPSdnZmllbGRfcmVxdWlyZWQnPio8L3NwYW4+PC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSdpbnB1dF8zJyBpZD0naW5wdXRfMjNfMycgdHlwZT0ndGV4dCcgdmFsdWU9JycgY2xhc3M9J21lZGl1bScgdGFiaW5kZXg9JzMnICAgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9saT48bGkgaWQ9J2ZpZWxkXzIzXzUnIGNsYXNzPSdnZmllbGQgZ2ZpZWxkX2NvbnRhaW5zX3JlcXVpcmVkIGZpZWxkX3N1YmxhYmVsX2JlbG93IGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93JyA+PGxhYmVsIGNsYXNzPSdnZmllbGRfbGFiZWwnIGZvcj0naW5wdXRfMjNfNScgPkNvdW50cnk8c3BhbiBjbGFzcz0nZ2ZpZWxkX3JlcXVpcmVkJz4qPC9zcGFuPjwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lcic+PHNlbGVjdCBuYW1lPSdpbnB1dF81JyBpZD0naW5wdXRfMjNfNScgb25jaGFuZ2U9J2dmX2FwcGx5X3J1bGVzKDIzLFs0XSk7JyBjbGFzcz0nbWVkaXVtIGdmaWVsZF9zZWxlY3QnIHRhYmluZGV4PSc0JyA+PG9wdGlvbiB2YWx1ZT0nVW5pdGVkIFN0YXRlcycgc2VsZWN0ZWQ9J3NlbGVjdGVkJz5Vbml0ZWQgU3RhdGVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ2FuYWRhJyA+Q2FuYWRhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVW5pdGVkIEtpbmdkb20nID5Vbml0ZWQgS2luZ2RvbTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0F1c3RyYWxpYScgPkF1c3RyYWxpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0FmZ2hhbmlzdGFuJyA+QWZnaGFuaXN0YW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBbGJhbmlhJyA+QWxiYW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0FsZ2VyaWEnID5BbGdlcmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQW1lcmljYW4gU2Ftb2EnID5BbWVyaWNhbiBTYW1vYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0FuZG9ycmEnID5BbmRvcnJhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQW5nb2xhJyA+QW5nb2xhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQW50aWd1YSBhbmQgQmFyYnVkYScgPkFudGlndWEgYW5kIEJhcmJ1ZGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBcmdlbnRpbmEnID5BcmdlbnRpbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBcm1lbmlhJyA+QXJtZW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0F1c3RyaWEnID5BdXN0cmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQXplcmJhaWphbicgPkF6ZXJiYWlqYW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCYWhhbWFzJyA+QmFoYW1hczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0JhaHJhaW4nID5CYWhyYWluPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQmFuZ2xhZGVzaCcgPkJhbmdsYWRlc2g8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCYXJiYWRvcycgPkJhcmJhZG9zPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQmVsYXJ1cycgPkJlbGFydXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCZWxnaXVtJyA+QmVsZ2l1bTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0JlbGl6ZScgPkJlbGl6ZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0JlbmluJyA+QmVuaW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCZXJtdWRhJyA+QmVybXVkYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0JodXRhbicgPkJodXRhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0JvbGl2aWEnID5Cb2xpdmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQm9zbmlhIGFuZCBIZXJ6ZWdvdmluYScgPkJvc25pYSBhbmQgSGVyemVnb3ZpbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCb3Rzd2FuYScgPkJvdHN3YW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQnJhemlsJyA+QnJhemlsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQnJ1bmVpJyA+QnJ1bmVpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQnVsZ2FyaWEnID5CdWxnYXJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0J1cmtpbmEgRmFzbycgPkJ1cmtpbmEgRmFzbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0J1cnVuZGknID5CdXJ1bmRpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ2FtYm9kaWEnID5DYW1ib2RpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0NhbWVyb29uJyA+Q2FtZXJvb248L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDYXBlIFZlcmRlJyA+Q2FwZSBWZXJkZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0NheW1hbiBJc2xhbmRzJyA+Q2F5bWFuIElzbGFuZHM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDZW50cmFsIEFmcmljYW4gUmVwdWJsaWMnID5DZW50cmFsIEFmcmljYW4gUmVwdWJsaWM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDaGFkJyA+Q2hhZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0NoaWxlJyA+Q2hpbGU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDaGluYScgPkNoaW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ29sb21iaWEnID5Db2xvbWJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0NvbW9yb3MnID5Db21vcm9zPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ29uZ28sIERlbW9jcmF0aWMgUmVwdWJsaWMgb2YgdGhlJyA+Q29uZ28sIERlbW9jcmF0aWMgUmVwdWJsaWMgb2YgdGhlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ29uZ28sIFJlcHVibGljIG9mIHRoZScgPkNvbmdvLCBSZXB1YmxpYyBvZiB0aGU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDb3N0YSBSaWNhJyA+Q29zdGEgUmljYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0Mmb2NpcmM7dGUgZCYjMDM5O0l2b2lyZScgPkMmb2NpcmM7dGUgZCYjMDM5O0l2b2lyZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0Nyb2F0aWEnID5Dcm9hdGlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ3ViYScgPkN1YmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDeXBydXMnID5DeXBydXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDemVjaCBSZXB1YmxpYycgPkN6ZWNoIFJlcHVibGljPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRGVubWFyaycgPkRlbm1hcms8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdEamlib3V0aScgPkRqaWJvdXRpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRG9taW5pY2EnID5Eb21pbmljYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0RvbWluaWNhbiBSZXB1YmxpYycgPkRvbWluaWNhbiBSZXB1YmxpYzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0Vhc3QgVGltb3InID5FYXN0IFRpbW9yPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRWN1YWRvcicgPkVjdWFkb3I8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdFZ3lwdCcgPkVneXB0PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRWwgU2FsdmFkb3InID5FbCBTYWx2YWRvcjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0VxdWF0b3JpYWwgR3VpbmVhJyA+RXF1YXRvcmlhbCBHdWluZWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdFcml0cmVhJyA+RXJpdHJlYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0VzdG9uaWEnID5Fc3RvbmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRXRoaW9waWEnID5FdGhpb3BpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0ZpamknID5GaWppPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRmlubGFuZCcgPkZpbmxhbmQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdGcmFuY2UnID5GcmFuY2U8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdHYWJvbicgPkdhYm9uPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR2FtYmlhJyA+R2FtYmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR2VvcmdpYScgPkdlb3JnaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdHZXJtYW55JyA+R2VybWFueTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0doYW5hJyA+R2hhbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdHcmVlY2UnID5HcmVlY2U8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdHcmVlbmxhbmQnID5HcmVlbmxhbmQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdHcmVuYWRhJyA+R3JlbmFkYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0d1YW0nID5HdWFtPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR3VhdGVtYWxhJyA+R3VhdGVtYWxhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR3VpbmVhJyA+R3VpbmVhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR3VpbmVhLUJpc3NhdScgPkd1aW5lYS1CaXNzYXU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdHdXlhbmEnID5HdXlhbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdIYWl0aScgPkhhaXRpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSG9uZHVyYXMnID5Ib25kdXJhczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0hvbmcgS29uZycgPkhvbmcgS29uZzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0h1bmdhcnknID5IdW5nYXJ5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSWNlbGFuZCcgPkljZWxhbmQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdJbmRpYScgPkluZGlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSW5kb25lc2lhJyA+SW5kb25lc2lhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSXJhbicgPklyYW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdJcmFxJyA+SXJhcTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0lyZWxhbmQnID5JcmVsYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSXNyYWVsJyA+SXNyYWVsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSXRhbHknID5JdGFseTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0phbWFpY2EnID5KYW1haWNhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSmFwYW4nID5KYXBhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0pvcmRhbicgPkpvcmRhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0themFraHN0YW4nID5LYXpha2hzdGFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nS2VueWEnID5LZW55YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0tpcmliYXRpJyA+S2lyaWJhdGk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOb3J0aCBLb3JlYScgPk5vcnRoIEtvcmVhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU291dGggS29yZWEnID5Tb3V0aCBLb3JlYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0t1d2FpdCcgPkt1d2FpdDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0t5cmd5enN0YW4nID5LeXJneXpzdGFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTGFvcycgPkxhb3M8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdMYXR2aWEnID5MYXR2aWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdMZWJhbm9uJyA+TGViYW5vbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0xlc290aG8nID5MZXNvdGhvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTGliZXJpYScgPkxpYmVyaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdMaWJ5YScgPkxpYnlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTGllY2h0ZW5zdGVpbicgPkxpZWNodGVuc3RlaW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdMaXRodWFuaWEnID5MaXRodWFuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdMdXhlbWJvdXJnJyA+THV4ZW1ib3VyZzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01hY2Vkb25pYScgPk1hY2Vkb25pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01hZGFnYXNjYXInID5NYWRhZ2FzY2FyPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWFsYXdpJyA+TWFsYXdpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWFsYXlzaWEnID5NYWxheXNpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01hbGRpdmVzJyA+TWFsZGl2ZXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNYWxpJyA+TWFsaTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01hbHRhJyA+TWFsdGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNYXJzaGFsbCBJc2xhbmRzJyA+TWFyc2hhbGwgSXNsYW5kczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01hdXJpdGFuaWEnID5NYXVyaXRhbmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWF1cml0aXVzJyA+TWF1cml0aXVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWV4aWNvJyA+TWV4aWNvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWljcm9uZXNpYScgPk1pY3JvbmVzaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNb2xkb3ZhJyA+TW9sZG92YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01vbmFjbycgPk1vbmFjbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01vbmdvbGlhJyA+TW9uZ29saWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNb250ZW5lZ3JvJyA+TW9udGVuZWdybzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01vcm9jY28nID5Nb3JvY2NvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTW96YW1iaXF1ZScgPk1vemFtYmlxdWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNeWFubWFyJyA+TXlhbm1hcjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05hbWliaWEnID5OYW1pYmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTmF1cnUnID5OYXVydTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05lcGFsJyA+TmVwYWw8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOZXRoZXJsYW5kcycgPk5ldGhlcmxhbmRzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTmV3IFplYWxhbmQnID5OZXcgWmVhbGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05pY2FyYWd1YScgPk5pY2FyYWd1YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05pZ2VyJyA+TmlnZXI8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOaWdlcmlhJyA+TmlnZXJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05vcndheScgPk5vcndheTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05vcnRoZXJuIE1hcmlhbmEgSXNsYW5kcycgPk5vcnRoZXJuIE1hcmlhbmEgSXNsYW5kczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J09tYW4nID5PbWFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nUGFraXN0YW4nID5QYWtpc3Rhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1BhbGF1JyA+UGFsYXU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQYWxlc3RpbmUnID5QYWxlc3RpbmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQYW5hbWEnID5QYW5hbWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQYXB1YSBOZXcgR3VpbmVhJyA+UGFwdWEgTmV3IEd1aW5lYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1BhcmFndWF5JyA+UGFyYWd1YXk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQZXJ1JyA+UGVydTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1BoaWxpcHBpbmVzJyA+UGhpbGlwcGluZXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQb2xhbmQnID5Qb2xhbmQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQb3J0dWdhbCcgPlBvcnR1Z2FsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nUHVlcnRvIFJpY28nID5QdWVydG8gUmljbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1FhdGFyJyA+UWF0YXI8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdSb21hbmlhJyA+Um9tYW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1J1c3NpYScgPlJ1c3NpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1J3YW5kYScgPlJ3YW5kYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NhaW50IEtpdHRzIGFuZCBOZXZpcycgPlNhaW50IEtpdHRzIGFuZCBOZXZpczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NhaW50IEx1Y2lhJyA+U2FpbnQgTHVjaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTYWludCBWaW5jZW50IGFuZCB0aGUgR3JlbmFkaW5lcycgPlNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU2Ftb2EnID5TYW1vYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NhbiBNYXJpbm8nID5TYW4gTWFyaW5vPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU2FvIFRvbWUgYW5kIFByaW5jaXBlJyA+U2FvIFRvbWUgYW5kIFByaW5jaXBlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU2F1ZGkgQXJhYmlhJyA+U2F1ZGkgQXJhYmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU2VuZWdhbCcgPlNlbmVnYWw8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTZXJiaWEgYW5kIE1vbnRlbmVncm8nID5TZXJiaWEgYW5kIE1vbnRlbmVncm88L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTZXljaGVsbGVzJyA+U2V5Y2hlbGxlczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NpZXJyYSBMZW9uZScgPlNpZXJyYSBMZW9uZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NpbmdhcG9yZScgPlNpbmdhcG9yZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1Nsb3Zha2lhJyA+U2xvdmFraWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTbG92ZW5pYScgPlNsb3ZlbmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU29sb21vbiBJc2xhbmRzJyA+U29sb21vbiBJc2xhbmRzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU29tYWxpYScgPlNvbWFsaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTb3V0aCBBZnJpY2EnID5Tb3V0aCBBZnJpY2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTcGFpbicgPlNwYWluPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU3JpIExhbmthJyA+U3JpIExhbmthPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU3VkYW4nID5TdWRhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1N1ZGFuLCBTb3V0aCcgPlN1ZGFuLCBTb3V0aDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1N1cmluYW1lJyA+U3VyaW5hbWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTd2F6aWxhbmQnID5Td2F6aWxhbmQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTd2VkZW4nID5Td2VkZW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTd2l0emVybGFuZCcgPlN3aXR6ZXJsYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU3lyaWEnID5TeXJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1RhaXdhbicgPlRhaXdhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1RhamlraXN0YW4nID5UYWppa2lzdGFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVGFuemFuaWEnID5UYW56YW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1RoYWlsYW5kJyA+VGhhaWxhbmQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdUb2dvJyA+VG9nbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1RvbmdhJyA+VG9uZ2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdUcmluaWRhZCBhbmQgVG9iYWdvJyA+VHJpbmlkYWQgYW5kIFRvYmFnbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1R1bmlzaWEnID5UdW5pc2lhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVHVya2V5JyA+VHVya2V5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVHVya21lbmlzdGFuJyA+VHVya21lbmlzdGFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVHV2YWx1JyA+VHV2YWx1PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVWdhbmRhJyA+VWdhbmRhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVWtyYWluZScgPlVrcmFpbmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdVbml0ZWQgQXJhYiBFbWlyYXRlcycgPlVuaXRlZCBBcmFiIEVtaXJhdGVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVXJ1Z3VheScgPlVydWd1YXk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdVemJla2lzdGFuJyA+VXpiZWtpc3Rhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1ZhbnVhdHUnID5WYW51YXR1PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVmF0aWNhbiBDaXR5JyA+VmF0aWNhbiBDaXR5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVmVuZXp1ZWxhJyA+VmVuZXp1ZWxhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVmlldG5hbScgPlZpZXRuYW08L29wdGlvbj48b3B0aW9uIHZhbHVlPSdWaXJnaW4gSXNsYW5kcywgQnJpdGlzaCcgPlZpcmdpbiBJc2xhbmRzLCBCcml0aXNoPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVmlyZ2luIElzbGFuZHMsIFUuUy4nID5WaXJnaW4gSXNsYW5kcywgVS5TLjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1llbWVuJyA+WWVtZW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdaYW1iaWEnID5aYW1iaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdaaW1iYWJ3ZScgPlppbWJhYndlPC9vcHRpb24+PC9zZWxlY3Q+PC9kaXY+PC9saT48bGkgaWQ9J2ZpZWxkXzIzXzQnIGNsYXNzPSdnZmllbGQgZmllbGRfc3VibGFiZWxfYmVsb3cgZmllbGRfZGVzY3JpcHRpb25fYmVsb3cnID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCcgZm9yPSdpbnB1dF8yM180JyA+U3RhdGU8L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXInPjxzZWxlY3QgbmFtZT0naW5wdXRfNCcgaWQ9J2lucHV0XzIzXzQnICBjbGFzcz0nbWVkaXVtIGdmaWVsZF9zZWxlY3QnIHRhYmluZGV4PSc1JyA+PG9wdGlvbiB2YWx1ZT0nQWxhYmFtYScgPkFsYWJhbWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBbGFza2EnID5BbGFza2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBcml6b25hJyA+QXJpem9uYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0Fya2Fuc2FzJyA+QXJrYW5zYXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDYWxpZm9ybmlhJyA+Q2FsaWZvcm5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0NvbG9yYWRvJyA+Q29sb3JhZG88L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDb25uZWN0aWN1dCcgPkNvbm5lY3RpY3V0PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRGVsYXdhcmUnID5EZWxhd2FyZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0Rpc3RyaWN0IG9mIENvbHVtYmlhJyA+RGlzdHJpY3Qgb2YgQ29sdW1iaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdGbG9yaWRhJyA+RmxvcmlkYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0dlb3JnaWEnID5HZW9yZ2lhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSGF3YWlpJyA+SGF3YWlpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSWRhaG8nID5JZGFobzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0lsbGlub2lzJyA+SWxsaW5vaXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdJbmRpYW5hJyA+SW5kaWFuYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0lvd2EnID5Jb3dhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nS2Fuc2FzJyA+S2Fuc2FzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nS2VudHVja3knID5LZW50dWNreTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0xvdWlzaWFuYScgPkxvdWlzaWFuYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01haW5lJyA+TWFpbmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNYXJ5bGFuZCcgPk1hcnlsYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWFzc2FjaHVzZXR0cycgPk1hc3NhY2h1c2V0dHM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNaWNoaWdhbicgPk1pY2hpZ2FuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWlubmVzb3RhJyA+TWlubmVzb3RhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWlzc2lzc2lwcGknID5NaXNzaXNzaXBwaTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01pc3NvdXJpJyA+TWlzc291cmk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNb250YW5hJyA+TW9udGFuYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05lYnJhc2thJyA+TmVicmFza2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOZXZhZGEnID5OZXZhZGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOZXcgSGFtcHNoaXJlJyA+TmV3IEhhbXBzaGlyZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05ldyBKZXJzZXknID5OZXcgSmVyc2V5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTmV3IE1leGljbycgPk5ldyBNZXhpY288L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOZXcgWW9yaycgPk5ldyBZb3JrPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTm9ydGggQ2Fyb2xpbmEnID5Ob3J0aCBDYXJvbGluYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05vcnRoIERha290YScgPk5vcnRoIERha290YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J09oaW8nID5PaGlvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nT2tsYWhvbWEnID5Pa2xhaG9tYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J09yZWdvbicgPk9yZWdvbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1Blbm5zeWx2YW5pYScgPlBlbm5zeWx2YW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1Job2RlIElzbGFuZCcgPlJob2RlIElzbGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NvdXRoIENhcm9saW5hJyA+U291dGggQ2Fyb2xpbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTb3V0aCBEYWtvdGEnID5Tb3V0aCBEYWtvdGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdUZW5uZXNzZWUnID5UZW5uZXNzZWU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdUZXhhcycgPlRleGFzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVXRhaCcgPlV0YWg8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdWZXJtb250JyA+VmVybW9udDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1ZpcmdpbmlhJyA+VmlyZ2luaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdXYXNoaW5ndG9uJyA+V2FzaGluZ3Rvbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1dlc3QgVmlyZ2luaWEnID5XZXN0IFZpcmdpbmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nV2lzY29uc2luJyA+V2lzY29uc2luPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nV3lvbWluZycgPld5b21pbmc8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBcm1lZCBGb3JjZXMgQW1lcmljYXMnID5Bcm1lZCBGb3JjZXMgQW1lcmljYXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBcm1lZCBGb3JjZXMgRXVyb3BlJyA+QXJtZWQgRm9yY2VzIEV1cm9wZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0FybWVkIEZvcmNlcyBQYWNpZmljJyA+QXJtZWQgRm9yY2VzIFBhY2lmaWM8L29wdGlvbj48L3NlbGVjdD48L2Rpdj48L2xpPjxsaSBpZD0nZmllbGRfMjNfNicgY2xhc3M9J2dmaWVsZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdycgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsJyBmb3I9J2lucHV0XzIzXzYnID5QaG9uZTwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lcic+PGlucHV0IG5hbWU9J2lucHV0XzYnIGlkPSdpbnB1dF8yM182JyB0eXBlPSd0ZXh0JyB2YWx1ZT0nJyBjbGFzcz0nbWVkaXVtJyB0YWJpbmRleD0nNicgICAvPjwvZGl2PjwvbGk+PGxpIGlkPSdmaWVsZF8yM183JyBjbGFzcz0nZ2ZpZWxkIGdmaWVsZF9jb250YWluc19yZXF1aXJlZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdycgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsJyBmb3I9J2lucHV0XzIzXzcnID5Db21wYW55PHNwYW4gY2xhc3M9J2dmaWVsZF9yZXF1aXJlZCc+Kjwvc3Bhbj48L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXInPjxpbnB1dCBuYW1lPSdpbnB1dF83JyBpZD0naW5wdXRfMjNfNycgdHlwZT0ndGV4dCcgdmFsdWU9JycgY2xhc3M9J21lZGl1bScgIHRhYmluZGV4PSc3JyAgIC8+PC9kaXY+PC9saT48bGkgaWQ9J2ZpZWxkXzIzXzgnIGNsYXNzPSdnZmllbGQgZmllbGRfc3VibGFiZWxfYmVsb3cgZmllbGRfZGVzY3JpcHRpb25fYmVsb3cnID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCcgZm9yPSdpbnB1dF8yM184JyA+Sm9iIFRpdGxlPC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyJz48aW5wdXQgbmFtZT0naW5wdXRfOCcgaWQ9J2lucHV0XzIzXzgnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSdtZWRpdW0nICB0YWJpbmRleD0nOCcgICAvPjwvZGl2PjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9J2dmb3JtX2Zvb3RlciB0b3BfbGFiZWwnPiA8aW5wdXQgdHlwZT0nc3VibWl0JyBpZD0nZ2Zvcm1fc3VibWl0X2J1dHRvbl8yMycgY2xhc3M9J2dmb3JtX2J1dHRvbiBidXR0b24nIHZhbHVlPSdSZWdpc3RlciBOb3chJyB0YWJpbmRleD0nOScgb25jbGljaz0naWYod2luZG93WyJnZl9zdWJtaXR0aW5nXzIzIl0pe3JldHVybiBmYWxzZTt9ICB3aW5kb3dbImdmX3N1Ym1pdHRpbmdfMjMiXT10cnVlOyAgJyAvPiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdnZm9ybV9hamF4JyB2YWx1ZT0nZm9ybV9pZD0yMyZhbXA7dGl0bGU9JmFtcDtkZXNjcmlwdGlvbj0mYW1wO3RhYmluZGV4PTEnIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J2lzX3N1Ym1pdF8yMycgdmFsdWU9JzEnIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J2dmb3JtX3N1Ym1pdCcgdmFsdWU9JzIzJyAvPgogICAgICAgICAgICAKICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0nZ2Zvcm1fdW5pcXVlX2lkJyB2YWx1ZT0nJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdzdGF0ZV8yMycgdmFsdWU9J1d5SmJYU0lzSW1OaE9EVTNZbVl3TURZd05EY3dNVGxqTW1FeU1qQTJOR1poWkRBd056QTFJbDA9JyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdnZm9ybV90YXJnZXRfcGFnZV9udW1iZXJfMjMnIGlkPSdnZm9ybV90YXJnZXRfcGFnZV9udW1iZXJfMjMnIHZhbHVlPScwJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdnZm9ybV9zb3VyY2VfcGFnZV9udW1iZXJfMjMnIGlkPSdnZm9ybV9zb3VyY2VfcGFnZV9udW1iZXJfMjMnIHZhbHVlPScxJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdnZm9ybV9maWVsZF92YWx1ZXMnIHZhbHVlPScnIC8+CiAgICAgICAgICAgIAogICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGlmcmFtZSBzdHlsZT0nZGlzcGxheTpub25lO3dpZHRoOjBweDtoZWlnaHQ6MHB4Oycgc3JjPSdhYm91dDpibGFuaycgbmFtZT0nZ2Zvcm1fYWpheF9mcmFtZV8yMycgaWQ9J2dmb3JtX2FqYXhfZnJhbWVfMjMnPjwvaWZyYW1lPgogICAgICAgICAgICAgICAgPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oJCl7Z2Zvcm1Jbml0U3Bpbm5lciggMjMsICdodHRwOi8vd3d3LnZpcnR1YWxpemF0aW9uc29mdHdhcmUuY29tL3dwLWNvbnRlbnQvcGx1Z2lucy9ncmF2aXR5Zm9ybXMvaW1hZ2VzL3NwaW5uZXIuZ2lmJyApO2pRdWVyeSgnI2dmb3JtX2FqYXhfZnJhbWVfMjMnKS5sb2FkKCBmdW5jdGlvbigpe3ZhciBjb250ZW50cyA9IGpRdWVyeSh0aGlzKS5jb250ZW50cygpLmZpbmQoJyonKS5odG1sKCk7dmFyIGlzX3Bvc3RiYWNrID0gY29udGVudHMuaW5kZXhPZignR0ZfQUpBWF9QT1NUQkFDSycpID49IDA7aWYoIWlzX3Bvc3RiYWNrKXtyZXR1cm47fXZhciBmb3JtX2NvbnRlbnQgPSBqUXVlcnkodGhpcykuY29udGVudHMoKS5maW5kKCcjZ2Zvcm1fd3JhcHBlcl8yMycpO3ZhciBpc19jb25maXJtYXRpb24gPSBqUXVlcnkodGhpcykuY29udGVudHMoKS5maW5kKCcjZ2Zvcm1fY29uZmlybWF0aW9uX3dyYXBwZXJfMjMnKS5sZW5ndGggPiAwO3ZhciBpc19yZWRpcmVjdCA9IGNvbnRlbnRzLmluZGV4T2YoJ2dmb3JtUmVkaXJlY3QoKXsnKSA+PSAwO3ZhciBpc19mb3JtID0gZm9ybV9jb250ZW50Lmxlbmd0aCA+IDAgJiYgISBpc19yZWRpcmVjdCAmJiAhIGlzX2NvbmZpcm1hdGlvbjtpZihpc19mb3JtKXtqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzIzJykuaHRtbChmb3JtX2NvbnRlbnQuaHRtbCgpKTtzZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsgLyogZGVsYXkgdGhlIHNjcm9sbCBieSA1MCBtaWxsaXNlY29uZHMgdG8gZml4IGEgYnVnIGluIGNocm9tZSAqLyBqUXVlcnkoZG9jdW1lbnQpLnNjcm9sbFRvcChqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzIzJykub2Zmc2V0KCkudG9wKTsgfSwgNTAgKTtpZih3aW5kb3dbJ2dmb3JtSW5pdERhdGVwaWNrZXInXSkge2dmb3JtSW5pdERhdGVwaWNrZXIoKTt9aWYod2luZG93WydnZm9ybUluaXRQcmljZUZpZWxkcyddKSB7Z2Zvcm1Jbml0UHJpY2VGaWVsZHMoKTt9dmFyIGN1cnJlbnRfcGFnZSA9IGpRdWVyeSgnI2dmb3JtX3NvdXJjZV9wYWdlX251bWJlcl8yMycpLnZhbCgpO2dmb3JtSW5pdFNwaW5uZXIoIDIzLCAnaHR0cDovL3d3dy52aXJ0dWFsaXphdGlvbnNvZnR3YXJlLmNvbS93cC1jb250ZW50L3BsdWdpbnMvZ3Jhdml0eWZvcm1zL2ltYWdlcy9zcGlubmVyLmdpZicgKTtqUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXIoJ2dmb3JtX3BhZ2VfbG9hZGVkJywgWzIzLCBjdXJyZW50X3BhZ2VdKTt3aW5kb3dbJ2dmX3N1Ym1pdHRpbmdfMjMnXSA9IGZhbHNlO31lbHNlIGlmKCFpc19yZWRpcmVjdCl7dmFyIGNvbmZpcm1hdGlvbl9jb250ZW50ID0galF1ZXJ5KHRoaXMpLmNvbnRlbnRzKCkuZmluZCgnI2dmb3Jtc19jb25maXJtYXRpb25fbWVzc2FnZV8yMycpLmh0bWwoKTtpZighY29uZmlybWF0aW9uX2NvbnRlbnQpe2NvbmZpcm1hdGlvbl9jb250ZW50ID0gY29udGVudHM7fXNldFRpbWVvdXQoZnVuY3Rpb24oKXtqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzIzJykucmVwbGFjZVdpdGgoJzwnICsgJ2RpdiBpZD1cJ2dmb3Jtc19jb25maXJtYXRpb25fbWVzc2FnZV8yM1wnIGNsYXNzPVwnZ2Zvcm1fY29uZmlybWF0aW9uX21lc3NhZ2VfMjMgZ2Zvcm1zX2NvbmZpcm1hdGlvbl9tZXNzYWdlXCcnICsgJz4nICsgY29uZmlybWF0aW9uX2NvbnRlbnQgKyAnPCcgKyAnL2RpdicgKyAnPicpO2pRdWVyeShkb2N1bWVudCkuc2Nyb2xsVG9wKGpRdWVyeSgnI2dmb3Jtc19jb25maXJtYXRpb25fbWVzc2FnZV8yMycpLm9mZnNldCgpLnRvcCk7alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCdnZm9ybV9jb25maXJtYXRpb25fbG9hZGVkJywgWzIzXSk7d2luZG93WydnZl9zdWJtaXR0aW5nXzIzJ10gPSBmYWxzZTt9LCA1MCk7fWVsc2V7alF1ZXJ5KCcjZ2Zvcm1fMjMnKS5hcHBlbmQoY29udGVudHMpO2lmKHdpbmRvd1snZ2Zvcm1SZWRpcmVjdCddKSB7Z2Zvcm1SZWRpcmVjdCgpO319alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCdnZm9ybV9wb3N0X3JlbmRlcicsIFsyMywgY3VycmVudF9wYWdlXSk7fSApO30gKTs8L3NjcmlwdD48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+IGlmKHR5cGVvZiBnZl9nbG9iYWwgPT0gJ3VuZGVmaW5lZCcpIHZhciBnZl9nbG9iYWwgPSB7ImdmX2N1cnJlbmN5X2NvbmZpZyI6eyJuYW1lIjoiVS5TLiBEb2xsYXIiLCJzeW1ib2xfbGVmdCI6IiQiLCJzeW1ib2xfcmlnaHQiOiIiLCJzeW1ib2xfcGFkZGluZyI6IiIsInRob3VzYW5kX3NlcGFyYXRvciI6IiwiLCJkZWNpbWFsX3NlcGFyYXRvciI6Ii4iLCJkZWNpbWFscyI6Mn0sImJhc2VfdXJsIjoiaHR0cDpcL1wvd3d3LnZpcnR1YWxpemF0aW9uc29mdHdhcmUuY29tXC93cC1jb250ZW50XC9wbHVnaW5zXC9ncmF2aXR5Zm9ybXMiLCJudW1iZXJfZm9ybWF0cyI6W10sInNwaW5uZXJVcmwiOiJodHRwOlwvXC93d3cudmlydHVhbGl6YXRpb25zb2Z0d2FyZS5jb21cL3dwLWNvbnRlbnRcL3BsdWdpbnNcL2dyYXZpdHlmb3Jtc1wvaW1hZ2VzXC9zcGlubmVyLmdpZiJ9O2pRdWVyeShkb2N1bWVudCkuYmluZCgnZ2Zvcm1fcG9zdF9yZW5kZXInLCBmdW5jdGlvbihldmVudCwgZm9ybUlkLCBjdXJyZW50UGFnZSl7aWYoZm9ybUlkID09IDIzKSB7aWYod2luZG93WydqUXVlcnknXSl7aWYoIXdpbmRvd1snZ2ZfZm9ybV9jb25kaXRpb25hbF9sb2dpYyddKXdpbmRvd1snZ2ZfZm9ybV9jb25kaXRpb25hbF9sb2dpYyddID0gbmV3IEFycmF5KCk7d2luZG93WydnZl9mb3JtX2NvbmRpdGlvbmFsX2xvZ2ljJ11bMjNdID0geydsb2dpYycgOiB7NDogeyJmaWVsZCI6eyJhY3Rpb25UeXBlIjoiaGlkZSIsImxvZ2ljVHlwZSI6ImFsbCIsInJ1bGVzIjpbeyJmaWVsZElkIjoiNSIsIm9wZXJhdG9yIjoiaXNub3QiLCJ2YWx1ZSI6IlVuaXRlZCBTdGF0ZXMifV19LCJuZXh0QnV0dG9uIjpudWxsLCJzZWN0aW9uIjpudWxsfSB9LCAnZGVwZW5kZW50cycgOiB7NDogWzRdIH0sICdhbmltYXRpb24nIDogMCAsICdkZWZhdWx0cycgOiB7IjUiOiJVbml0ZWQgU3RhdGVzIn0gfTsgaWYoIXdpbmRvd1snZ2ZfbnVtYmVyX2Zvcm1hdCddKXdpbmRvd1snZ2ZfbnVtYmVyX2Zvcm1hdCddID0gJ2RlY2ltYWxfZG90JztqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7Z2ZfYXBwbHlfcnVsZXMoMjMsIFs0XSwgdHJ1ZSk7alF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8yMycpLnNob3coKTtqUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXIoJ2dmb3JtX3Bvc3RfY29uZGl0aW9uYWxfbG9naWMnLCBbMjMsIG51bGwsIHRydWVdKTt9ICk7fSBnZm9ybUluaXRDaG9zZW5GaWVsZHMoJyNpbnB1dF8yM181LCNpbnB1dF8yM180JywnTm8gcmVzdWx0cyBtYXRjaGVkJyk7fSB9ICk7alF1ZXJ5KGRvY3VtZW50KS5iaW5kKCdnZm9ybV9wb3N0X2NvbmRpdGlvbmFsX2xvZ2ljJywgZnVuY3Rpb24oZXZlbnQsIGZvcm1JZCwgZmllbGRzLCBpc0luaXQpe2dmb3JtSW5pdENob3NlbkZpZWxkcygnI2lucHV0XzIzXzUsI2lucHV0XzIzXzQnLCdObyByZXN1bHRzIG1hdGNoZWQnKTt9ICk7PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPiBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCdnZm9ybV9wb3N0X3JlbmRlcicsIFsyMywgMV0pIH0gKTsgPC9zY3JpcHQ+