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

Top

4 Comments

Introduction to Openstack Storage Systems

Introduction to Openstack Storage Systems
Paul Meehan, VCAP-DCA, CCNA
  • On February 4, 2014

Openstack is a word on many people’s lips.

The Project is just over three years old, but you can feel how it has already gained mindshare and convinced important companies and people to get behind it. It’s evident from the commitment Corporations like Red Hat, VMware and HP have shown to this Open Source Software project.

Despite its relative youth and immaturity, there are plenty of large-scale production platforms in place today running Openstack, so this is not a beta product.

The VMware Community’s own Scott D. Lowe and Kenneth Hui are heavily involved in its promotion.

The Openstack Mission

This is the Openstack Mission Statement:

The OpenStack Open Source Cloud Mission: to produce the ubiquitous Open Source Cloud Computing platform that will meet the needs of public and private clouds regardless of size, by being simple to implement and massively scalable.

Openstack should present an opportunity not only for Hosting providers offering hosted Private Cloud or Public Cloud Services, but also for Enterprises, to run their own Virtualization platforms or Private Clouds.

Components in the Framework

Openstack has all the pieces you would expect a typical virtualization platform to possess.

One difference is that it is a more modular architecture with different streams producing individual “products”, so to speak. That’s the Open Source way:

Openstack-Storage-2

You can see from the diagram above, traditional services fall within the scope of different areas.  Each area has a product or feature set name:

  • VM/Compute: Nova  (Nova is the equivalent of encapsulation and virtualization for virtual machines)
  • Imaging / Deployment:  Glance  (Glance is the equivalent of Template deployment and Image management)
  • Object Storage Scale-out: Swift  (Swift provides the object storage-based scale-out architecture functionality)
  • Block Storage: Cinder  (Cinder is the Block Storage framework that creates and presents Volumes to hosts)

There are other key components within the framework:

  • Dashboard: Horizon
  • Networking: Neutron
  • Identity Management: Keystone
  • Telemetry/Monitoring: Ceilometer
  • Orchestration: Heat
  • Common Libraries: Oslo

Storage Services

Here’s a quick mapping of Storage Services in Openstack:

Openstack-Storage-3

More About Swift

As I mentioned, Swift is not a Block or File-based Filesystem. Swift is not a POSIX-compliant block filesystem like VMFS, NTFS, ZFS or other. If you’re used to NTFS, you cannot access Swift in the same way.

It is an object store and is similar to Azure Storage Services and Amazon S3 in how it’s accessed.

It is managed directly by applications via REST HTTP APIs. This allows applications to consume it using API calls like GET, PUT, POST and DELETE.

Simply put, it uses HTTP to allow applications to talk to it.

However, a person cannot copy and paste a file to an Object Storage System or Object Store.

Swift is a resource that can (and must) be consumed and managed by Applications. This is the fundamental difference when working with REST API versus traditional Block and File-based Filesystems.

This is why application developers are much more involved with design and deployment already on Amazon S3.

One major advantage of RESTful Object Storage systems is that you can consume them from anywhere. After all, they are available over HTTP and that is the Internet’s mother tongue.

VMware VSAN is also based on an Object Store architecture but is not accessible via REST API. VSAN surfaces it’s resource (a VSAN datastore) to its attached vSphere cluster for consumption.

You should be aware that at present, Swift scale-out clusters do not present a unified filesystem made up of disk from all nodes in the cluster. Virtual Machines address disk in their local servers chassis. This is a major weakness of Swift at present.

One thing that is acknowledged is that it’s better not to try to deploy it off the shelf. Use a service provider who can translate your requirements into reality, without having to hire your own team of developers.

Cinder

Cinder is similar to a traditional block-based filesystem. It is accessed using volumes presented to Openstack hosts.

This is how access would work from the Virtual Machine layer (Nova):

  • Nova makes a call to the Cinder API
  • Cinder API passed the request to the Cinder Volume driver.
  • This talks to the Cinder scheduler which can create a logical volume (LVM) on a local or external disk.
  • The Cinder scheduler also creates a volume inside the logical volume

One nice feature is that Cinder Backup can copy data from a volume out onto Swift.

Most people consume Cinder via non-Fibre Channel interfaces as it’s more economical. However you can use EMC, HP and other, using a specific Cinder driver for each storage system.

Summary

These three questions might help evaluate the potential impact of Openstack in the Enterprise:

  • Will all vendors and customers embrace it?
  • Will be seen as a good fit for customers Private Clouds ?
  • What does it compete with?

What is hugely significant is that there is already an end-to-end solution stack that will compete with Amazon Web Services, driven entirely by the Open Source Community, with a little sprinkling of vendor dust.

Comments

  1. Excellent article Paul !! I look forward to reading more of these !

    -David

  2. Paul Meehan, VCAP-DCA, CCNA

    Hi David,
    Many thanks. I hope to write a few more soon. Openstack is exciting if it takes off like we all hope. I’m trying to get involved as it’s good to understand options from the Open Source side.

    …Paul

  3. Anonymous

    Other than PayPal where are these numerous deployments?

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+PGZvcm0gbWV0aG9kPSdwb3N0JyBlbmN0eXBlPSdtdWx0aXBhcnQvZm9ybS1kYXRhJyB0YXJnZXQ9J2dmb3JtX2FqYXhfZnJhbWVfMjMnIGlkPSdnZm9ybV8yMycgIGFjdGlvbj0nL29wZW5zdGFjay1zdG9yYWdlLXN5c3RlbXMvI2dmXzIzJz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nZ2Zvcm1fYm9keSc+PHVsIGlkPSdnZm9ybV9maWVsZHNfMjMnIGNsYXNzPSdnZm9ybV9maWVsZHMgdG9wX2xhYmVsIGZvcm1fc3VibGFiZWxfYmVsb3cgZGVzY3JpcHRpb25fYmVsb3cnPjxsaSBpZD0nZmllbGRfMjNfMScgY2xhc3M9J2dmaWVsZCBnZmllbGRfY29udGFpbnNfcmVxdWlyZWQgZmllbGRfc3VibGFiZWxfYmVsb3cgZmllbGRfZGVzY3JpcHRpb25fYmVsb3cnID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCcgZm9yPSdpbnB1dF8yM18xJyA+Rmlyc3QgTmFtZTxzcGFuIGNsYXNzPSdnZmllbGRfcmVxdWlyZWQnPio8L3NwYW4+PC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyJz48aW5wdXQgbmFtZT0naW5wdXRfMScgaWQ9J2lucHV0XzIzXzEnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSdtZWRpdW0nICB0YWJpbmRleD0nMScgICAvPjwvZGl2PjwvbGk+PGxpIGlkPSdmaWVsZF8yM18yJyBjbGFzcz0nZ2ZpZWxkIGdmaWVsZF9jb250YWluc19yZXF1aXJlZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdycgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsJyBmb3I9J2lucHV0XzIzXzInID5MYXN0IE5hbWU8c3BhbiBjbGFzcz0nZ2ZpZWxkX3JlcXVpcmVkJz4qPC9zcGFuPjwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lcic+PGlucHV0IG5hbWU9J2lucHV0XzInIGlkPSdpbnB1dF8yM18yJyB0eXBlPSd0ZXh0JyB2YWx1ZT0nJyBjbGFzcz0nbWVkaXVtJyAgdGFiaW5kZXg9JzInICAgLz48L2Rpdj48L2xpPjxsaSBpZD0nZmllbGRfMjNfMycgY2xhc3M9J2dmaWVsZCBnZmllbGRfY29udGFpbnNfcmVxdWlyZWQgZmllbGRfc3VibGFiZWxfYmVsb3cgZmllbGRfZGVzY3JpcHRpb25fYmVsb3cnID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCcgZm9yPSdpbnB1dF8yM18zJyA+RW1haWw8c3BhbiBjbGFzcz0nZ2ZpZWxkX3JlcXVpcmVkJz4qPC9zcGFuPjwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lcic+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0naW5wdXRfMycgaWQ9J2lucHV0XzIzXzMnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSdtZWRpdW0nIHRhYmluZGV4PSczJyAgIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvbGk+PGxpIGlkPSdmaWVsZF8yM181JyBjbGFzcz0nZ2ZpZWxkIGdmaWVsZF9jb250YWluc19yZXF1aXJlZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdycgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsJyBmb3I9J2lucHV0XzIzXzUnID5Db3VudHJ5PHNwYW4gY2xhc3M9J2dmaWVsZF9yZXF1aXJlZCc+Kjwvc3Bhbj48L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXInPjxzZWxlY3QgbmFtZT0naW5wdXRfNScgaWQ9J2lucHV0XzIzXzUnIG9uY2hhbmdlPSdnZl9hcHBseV9ydWxlcygyMyxbNF0pOycgY2xhc3M9J21lZGl1bSBnZmllbGRfc2VsZWN0JyB0YWJpbmRleD0nNCcgPjxvcHRpb24gdmFsdWU9J1VuaXRlZCBTdGF0ZXMnIHNlbGVjdGVkPSdzZWxlY3RlZCc+VW5pdGVkIFN0YXRlczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0NhbmFkYScgPkNhbmFkYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1VuaXRlZCBLaW5nZG9tJyA+VW5pdGVkIEtpbmdkb208L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBdXN0cmFsaWEnID5BdXN0cmFsaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBZmdoYW5pc3RhbicgPkFmZ2hhbmlzdGFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQWxiYW5pYScgPkFsYmFuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBbGdlcmlhJyA+QWxnZXJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0FtZXJpY2FuIFNhbW9hJyA+QW1lcmljYW4gU2Ftb2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBbmRvcnJhJyA+QW5kb3JyYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0FuZ29sYScgPkFuZ29sYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0FudGlndWEgYW5kIEJhcmJ1ZGEnID5BbnRpZ3VhIGFuZCBCYXJidWRhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQXJnZW50aW5hJyA+QXJnZW50aW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQXJtZW5pYScgPkFybWVuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBdXN0cmlhJyA+QXVzdHJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0F6ZXJiYWlqYW4nID5BemVyYmFpamFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQmFoYW1hcycgPkJhaGFtYXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCYWhyYWluJyA+QmFocmFpbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0JhbmdsYWRlc2gnID5CYW5nbGFkZXNoPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQmFyYmFkb3MnID5CYXJiYWRvczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0JlbGFydXMnID5CZWxhcnVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQmVsZ2l1bScgPkJlbGdpdW08L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCZWxpemUnID5CZWxpemU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCZW5pbicgPkJlbmluPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQmVybXVkYScgPkJlcm11ZGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCaHV0YW4nID5CaHV0YW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCb2xpdmlhJyA+Qm9saXZpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0Jvc25pYSBhbmQgSGVyemVnb3ZpbmEnID5Cb3NuaWEgYW5kIEhlcnplZ292aW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQm90c3dhbmEnID5Cb3Rzd2FuYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0JyYXppbCcgPkJyYXppbDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0JydW5laScgPkJydW5laTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0J1bGdhcmlhJyA+QnVsZ2FyaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCdXJraW5hIEZhc28nID5CdXJraW5hIEZhc288L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCdXJ1bmRpJyA+QnVydW5kaTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0NhbWJvZGlhJyA+Q2FtYm9kaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDYW1lcm9vbicgPkNhbWVyb29uPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ2FwZSBWZXJkZScgPkNhcGUgVmVyZGU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDYXltYW4gSXNsYW5kcycgPkNheW1hbiBJc2xhbmRzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljJyA+Q2VudHJhbCBBZnJpY2FuIFJlcHVibGljPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ2hhZCcgPkNoYWQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDaGlsZScgPkNoaWxlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ2hpbmEnID5DaGluYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0NvbG9tYmlhJyA+Q29sb21iaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDb21vcm9zJyA+Q29tb3Jvczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0NvbmdvLCBEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZScgPkNvbmdvLCBEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0NvbmdvLCBSZXB1YmxpYyBvZiB0aGUnID5Db25nbywgUmVwdWJsaWMgb2YgdGhlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ29zdGEgUmljYScgPkNvc3RhIFJpY2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDJm9jaXJjO3RlIGQmIzAzOTtJdm9pcmUnID5DJm9jaXJjO3RlIGQmIzAzOTtJdm9pcmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDcm9hdGlhJyA+Q3JvYXRpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0N1YmEnID5DdWJhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ3lwcnVzJyA+Q3lwcnVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ3plY2ggUmVwdWJsaWMnID5DemVjaCBSZXB1YmxpYzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0Rlbm1hcmsnID5EZW5tYXJrPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRGppYm91dGknID5Eamlib3V0aTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0RvbWluaWNhJyA+RG9taW5pY2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdEb21pbmljYW4gUmVwdWJsaWMnID5Eb21pbmljYW4gUmVwdWJsaWM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdFYXN0IFRpbW9yJyA+RWFzdCBUaW1vcjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0VjdWFkb3InID5FY3VhZG9yPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRWd5cHQnID5FZ3lwdDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0VsIFNhbHZhZG9yJyA+RWwgU2FsdmFkb3I8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdFcXVhdG9yaWFsIEd1aW5lYScgPkVxdWF0b3JpYWwgR3VpbmVhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRXJpdHJlYScgPkVyaXRyZWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdFc3RvbmlhJyA+RXN0b25pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0V0aGlvcGlhJyA+RXRoaW9waWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdGaWppJyA+RmlqaTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0ZpbmxhbmQnID5GaW5sYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRnJhbmNlJyA+RnJhbmNlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR2Fib24nID5HYWJvbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0dhbWJpYScgPkdhbWJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0dlb3JnaWEnID5HZW9yZ2lhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR2VybWFueScgPkdlcm1hbnk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdHaGFuYScgPkdoYW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR3JlZWNlJyA+R3JlZWNlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR3JlZW5sYW5kJyA+R3JlZW5sYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR3JlbmFkYScgPkdyZW5hZGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdHdWFtJyA+R3VhbTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0d1YXRlbWFsYScgPkd1YXRlbWFsYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0d1aW5lYScgPkd1aW5lYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0d1aW5lYS1CaXNzYXUnID5HdWluZWEtQmlzc2F1PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR3V5YW5hJyA+R3V5YW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSGFpdGknID5IYWl0aTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0hvbmR1cmFzJyA+SG9uZHVyYXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdIb25nIEtvbmcnID5Ib25nIEtvbmc8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdIdW5nYXJ5JyA+SHVuZ2FyeTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0ljZWxhbmQnID5JY2VsYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSW5kaWEnID5JbmRpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0luZG9uZXNpYScgPkluZG9uZXNpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0lyYW4nID5JcmFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSXJhcScgPklyYXE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdJcmVsYW5kJyA+SXJlbGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0lzcmFlbCcgPklzcmFlbDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0l0YWx5JyA+SXRhbHk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdKYW1haWNhJyA+SmFtYWljYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0phcGFuJyA+SmFwYW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdKb3JkYW4nID5Kb3JkYW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdLYXpha2hzdGFuJyA+S2F6YWtoc3Rhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0tlbnlhJyA+S2VueWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdLaXJpYmF0aScgPktpcmliYXRpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTm9ydGggS29yZWEnID5Ob3J0aCBLb3JlYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NvdXRoIEtvcmVhJyA+U291dGggS29yZWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdLdXdhaXQnID5LdXdhaXQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdLeXJneXpzdGFuJyA+S3lyZ3l6c3Rhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0xhb3MnID5MYW9zPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTGF0dmlhJyA+TGF0dmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTGViYW5vbicgPkxlYmFub248L29wdGlvbj48b3B0aW9uIHZhbHVlPSdMZXNvdGhvJyA+TGVzb3Robzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0xpYmVyaWEnID5MaWJlcmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTGlieWEnID5MaWJ5YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0xpZWNodGVuc3RlaW4nID5MaWVjaHRlbnN0ZWluPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTGl0aHVhbmlhJyA+TGl0aHVhbmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTHV4ZW1ib3VyZycgPkx1eGVtYm91cmc8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNYWNlZG9uaWEnID5NYWNlZG9uaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNYWRhZ2FzY2FyJyA+TWFkYWdhc2Nhcjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01hbGF3aScgPk1hbGF3aTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01hbGF5c2lhJyA+TWFsYXlzaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNYWxkaXZlcycgPk1hbGRpdmVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWFsaScgPk1hbGk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNYWx0YScgPk1hbHRhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWFyc2hhbGwgSXNsYW5kcycgPk1hcnNoYWxsIElzbGFuZHM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNYXVyaXRhbmlhJyA+TWF1cml0YW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01hdXJpdGl1cycgPk1hdXJpdGl1czwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01leGljbycgPk1leGljbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01pY3JvbmVzaWEnID5NaWNyb25lc2lhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTW9sZG92YScgPk1vbGRvdmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNb25hY28nID5Nb25hY288L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNb25nb2xpYScgPk1vbmdvbGlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTW9udGVuZWdybycgPk1vbnRlbmVncm88L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNb3JvY2NvJyA+TW9yb2Njbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01vemFtYmlxdWUnID5Nb3phbWJpcXVlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTXlhbm1hcicgPk15YW5tYXI8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOYW1pYmlhJyA+TmFtaWJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05hdXJ1JyA+TmF1cnU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOZXBhbCcgPk5lcGFsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTmV0aGVybGFuZHMnID5OZXRoZXJsYW5kczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05ldyBaZWFsYW5kJyA+TmV3IFplYWxhbmQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOaWNhcmFndWEnID5OaWNhcmFndWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOaWdlcicgPk5pZ2VyPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTmlnZXJpYScgPk5pZ2VyaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOb3J3YXknID5Ob3J3YXk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOb3J0aGVybiBNYXJpYW5hIElzbGFuZHMnID5Ob3J0aGVybiBNYXJpYW5hIElzbGFuZHM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdPbWFuJyA+T21hbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1Bha2lzdGFuJyA+UGFraXN0YW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQYWxhdScgPlBhbGF1PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nUGFsZXN0aW5lJyA+UGFsZXN0aW5lPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nUGFuYW1hJyA+UGFuYW1hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nUGFwdWEgTmV3IEd1aW5lYScgPlBhcHVhIE5ldyBHdWluZWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQYXJhZ3VheScgPlBhcmFndWF5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nUGVydScgPlBlcnU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQaGlsaXBwaW5lcycgPlBoaWxpcHBpbmVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nUG9sYW5kJyA+UG9sYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nUG9ydHVnYWwnID5Qb3J0dWdhbDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1B1ZXJ0byBSaWNvJyA+UHVlcnRvIFJpY288L29wdGlvbj48b3B0aW9uIHZhbHVlPSdRYXRhcicgPlFhdGFyPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nUm9tYW5pYScgPlJvbWFuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdSdXNzaWEnID5SdXNzaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdSd2FuZGEnID5Sd2FuZGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTYWludCBLaXR0cyBhbmQgTmV2aXMnID5TYWludCBLaXR0cyBhbmQgTmV2aXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTYWludCBMdWNpYScgPlNhaW50IEx1Y2lhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU2FpbnQgVmluY2VudCBhbmQgdGhlIEdyZW5hZGluZXMnID5TYWludCBWaW5jZW50IGFuZCB0aGUgR3JlbmFkaW5lczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NhbW9hJyA+U2Ftb2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTYW4gTWFyaW5vJyA+U2FuIE1hcmlubzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NhbyBUb21lIGFuZCBQcmluY2lwZScgPlNhbyBUb21lIGFuZCBQcmluY2lwZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NhdWRpIEFyYWJpYScgPlNhdWRpIEFyYWJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NlbmVnYWwnID5TZW5lZ2FsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU2VyYmlhIGFuZCBNb250ZW5lZ3JvJyA+U2VyYmlhIGFuZCBNb250ZW5lZ3JvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU2V5Y2hlbGxlcycgPlNleWNoZWxsZXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTaWVycmEgTGVvbmUnID5TaWVycmEgTGVvbmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTaW5nYXBvcmUnID5TaW5nYXBvcmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTbG92YWtpYScgPlNsb3Zha2lhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU2xvdmVuaWEnID5TbG92ZW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NvbG9tb24gSXNsYW5kcycgPlNvbG9tb24gSXNsYW5kczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NvbWFsaWEnID5Tb21hbGlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU291dGggQWZyaWNhJyA+U291dGggQWZyaWNhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU3BhaW4nID5TcGFpbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NyaSBMYW5rYScgPlNyaSBMYW5rYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1N1ZGFuJyA+U3VkYW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTdWRhbiwgU291dGgnID5TdWRhbiwgU291dGg8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTdXJpbmFtZScgPlN1cmluYW1lPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU3dhemlsYW5kJyA+U3dhemlsYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU3dlZGVuJyA+U3dlZGVuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU3dpdHplcmxhbmQnID5Td2l0emVybGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1N5cmlhJyA+U3lyaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdUYWl3YW4nID5UYWl3YW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdUYWppa2lzdGFuJyA+VGFqaWtpc3Rhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1RhbnphbmlhJyA+VGFuemFuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdUaGFpbGFuZCcgPlRoYWlsYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVG9nbycgPlRvZ288L29wdGlvbj48b3B0aW9uIHZhbHVlPSdUb25nYScgPlRvbmdhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVHJpbmlkYWQgYW5kIFRvYmFnbycgPlRyaW5pZGFkIGFuZCBUb2JhZ288L29wdGlvbj48b3B0aW9uIHZhbHVlPSdUdW5pc2lhJyA+VHVuaXNpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1R1cmtleScgPlR1cmtleTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1R1cmttZW5pc3RhbicgPlR1cmttZW5pc3Rhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1R1dmFsdScgPlR1dmFsdTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1VnYW5kYScgPlVnYW5kYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1VrcmFpbmUnID5Va3JhaW5lPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVW5pdGVkIEFyYWIgRW1pcmF0ZXMnID5Vbml0ZWQgQXJhYiBFbWlyYXRlczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1VydWd1YXknID5VcnVndWF5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVXpiZWtpc3RhbicgPlV6YmVraXN0YW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdWYW51YXR1JyA+VmFudWF0dTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1ZhdGljYW4gQ2l0eScgPlZhdGljYW4gQ2l0eTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1ZlbmV6dWVsYScgPlZlbmV6dWVsYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1ZpZXRuYW0nID5WaWV0bmFtPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVmlyZ2luIElzbGFuZHMsIEJyaXRpc2gnID5WaXJnaW4gSXNsYW5kcywgQnJpdGlzaDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1ZpcmdpbiBJc2xhbmRzLCBVLlMuJyA+VmlyZ2luIElzbGFuZHMsIFUuUy48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdZZW1lbicgPlllbWVuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nWmFtYmlhJyA+WmFtYmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nWmltYmFid2UnID5aaW1iYWJ3ZTwvb3B0aW9uPjwvc2VsZWN0PjwvZGl2PjwvbGk+PGxpIGlkPSdmaWVsZF8yM180JyBjbGFzcz0nZ2ZpZWxkIGZpZWxkX3N1YmxhYmVsX2JlbG93IGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93JyA+PGxhYmVsIGNsYXNzPSdnZmllbGRfbGFiZWwnIGZvcj0naW5wdXRfMjNfNCcgPlN0YXRlPC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyJz48c2VsZWN0IG5hbWU9J2lucHV0XzQnIGlkPSdpbnB1dF8yM180JyAgY2xhc3M9J21lZGl1bSBnZmllbGRfc2VsZWN0JyB0YWJpbmRleD0nNScgPjxvcHRpb24gdmFsdWU9J0FsYWJhbWEnID5BbGFiYW1hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQWxhc2thJyA+QWxhc2thPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQXJpem9uYScgPkFyaXpvbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBcmthbnNhcycgPkFya2Fuc2FzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ2FsaWZvcm5pYScgPkNhbGlmb3JuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDb2xvcmFkbycgPkNvbG9yYWRvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ29ubmVjdGljdXQnID5Db25uZWN0aWN1dDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0RlbGF3YXJlJyA+RGVsYXdhcmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdEaXN0cmljdCBvZiBDb2x1bWJpYScgPkRpc3RyaWN0IG9mIENvbHVtYmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRmxvcmlkYScgPkZsb3JpZGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdHZW9yZ2lhJyA+R2VvcmdpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0hhd2FpaScgPkhhd2FpaTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0lkYWhvJyA+SWRhaG88L29wdGlvbj48b3B0aW9uIHZhbHVlPSdJbGxpbm9pcycgPklsbGlub2lzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSW5kaWFuYScgPkluZGlhbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdJb3dhJyA+SW93YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0thbnNhcycgPkthbnNhczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0tlbnR1Y2t5JyA+S2VudHVja3k8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdMb3Vpc2lhbmEnID5Mb3Vpc2lhbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNYWluZScgPk1haW5lPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWFyeWxhbmQnID5NYXJ5bGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01hc3NhY2h1c2V0dHMnID5NYXNzYWNodXNldHRzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWljaGlnYW4nID5NaWNoaWdhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01pbm5lc290YScgPk1pbm5lc290YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01pc3Npc3NpcHBpJyA+TWlzc2lzc2lwcGk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNaXNzb3VyaScgPk1pc3NvdXJpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTW9udGFuYScgPk1vbnRhbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOZWJyYXNrYScgPk5lYnJhc2thPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTmV2YWRhJyA+TmV2YWRhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTmV3IEhhbXBzaGlyZScgPk5ldyBIYW1wc2hpcmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOZXcgSmVyc2V5JyA+TmV3IEplcnNleTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05ldyBNZXhpY28nID5OZXcgTWV4aWNvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTmV3IFlvcmsnID5OZXcgWW9yazwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05vcnRoIENhcm9saW5hJyA+Tm9ydGggQ2Fyb2xpbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOb3J0aCBEYWtvdGEnID5Ob3J0aCBEYWtvdGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdPaGlvJyA+T2hpbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J09rbGFob21hJyA+T2tsYWhvbWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdPcmVnb24nID5PcmVnb248L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQZW5uc3lsdmFuaWEnID5QZW5uc3lsdmFuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdSaG9kZSBJc2xhbmQnID5SaG9kZSBJc2xhbmQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTb3V0aCBDYXJvbGluYScgPlNvdXRoIENhcm9saW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU291dGggRGFrb3RhJyA+U291dGggRGFrb3RhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVGVubmVzc2VlJyA+VGVubmVzc2VlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVGV4YXMnID5UZXhhczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1V0YWgnID5VdGFoPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVmVybW9udCcgPlZlcm1vbnQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdWaXJnaW5pYScgPlZpcmdpbmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nV2FzaGluZ3RvbicgPldhc2hpbmd0b248L29wdGlvbj48b3B0aW9uIHZhbHVlPSdXZXN0IFZpcmdpbmlhJyA+V2VzdCBWaXJnaW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1dpc2NvbnNpbicgPldpc2NvbnNpbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1d5b21pbmcnID5XeW9taW5nPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQXJtZWQgRm9yY2VzIEFtZXJpY2FzJyA+QXJtZWQgRm9yY2VzIEFtZXJpY2FzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQXJtZWQgRm9yY2VzIEV1cm9wZScgPkFybWVkIEZvcmNlcyBFdXJvcGU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBcm1lZCBGb3JjZXMgUGFjaWZpYycgPkFybWVkIEZvcmNlcyBQYWNpZmljPC9vcHRpb24+PC9zZWxlY3Q+PC9kaXY+PC9saT48bGkgaWQ9J2ZpZWxkXzIzXzYnIGNsYXNzPSdnZmllbGQgZmllbGRfc3VibGFiZWxfYmVsb3cgZmllbGRfZGVzY3JpcHRpb25fYmVsb3cnID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCcgZm9yPSdpbnB1dF8yM182JyA+UGhvbmU8L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXInPjxpbnB1dCBuYW1lPSdpbnB1dF82JyBpZD0naW5wdXRfMjNfNicgdHlwZT0ndGV4dCcgdmFsdWU9JycgY2xhc3M9J21lZGl1bScgdGFiaW5kZXg9JzYnICAgLz48L2Rpdj48L2xpPjxsaSBpZD0nZmllbGRfMjNfNycgY2xhc3M9J2dmaWVsZCBnZmllbGRfY29udGFpbnNfcmVxdWlyZWQgZmllbGRfc3VibGFiZWxfYmVsb3cgZmllbGRfZGVzY3JpcHRpb25fYmVsb3cnID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCcgZm9yPSdpbnB1dF8yM183JyA+Q29tcGFueTxzcGFuIGNsYXNzPSdnZmllbGRfcmVxdWlyZWQnPio8L3NwYW4+PC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyJz48aW5wdXQgbmFtZT0naW5wdXRfNycgaWQ9J2lucHV0XzIzXzcnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSdtZWRpdW0nICB0YWJpbmRleD0nNycgICAvPjwvZGl2PjwvbGk+PGxpIGlkPSdmaWVsZF8yM184JyBjbGFzcz0nZ2ZpZWxkIGZpZWxkX3N1YmxhYmVsX2JlbG93IGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93JyA+PGxhYmVsIGNsYXNzPSdnZmllbGRfbGFiZWwnIGZvcj0naW5wdXRfMjNfOCcgPkpvYiBUaXRsZTwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lcic+PGlucHV0IG5hbWU9J2lucHV0XzgnIGlkPSdpbnB1dF8yM184JyB0eXBlPSd0ZXh0JyB2YWx1ZT0nJyBjbGFzcz0nbWVkaXVtJyAgdGFiaW5kZXg9JzgnICAgLz48L2Rpdj48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSdnZm9ybV9mb290ZXIgdG9wX2xhYmVsJz4gPGlucHV0IHR5cGU9J3N1Ym1pdCcgaWQ9J2dmb3JtX3N1Ym1pdF9idXR0b25fMjMnIGNsYXNzPSdnZm9ybV9idXR0b24gYnV0dG9uJyB2YWx1ZT0nUmVnaXN0ZXIgTm93IScgdGFiaW5kZXg9JzknIG9uY2xpY2s9J2lmKHdpbmRvd1siZ2Zfc3VibWl0dGluZ18yMyJdKXtyZXR1cm4gZmFsc2U7fSAgd2luZG93WyJnZl9zdWJtaXR0aW5nXzIzIl09dHJ1ZTsgICcgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZ2Zvcm1fYWpheCcgdmFsdWU9J2Zvcm1faWQ9MjMmYW1wO3RpdGxlPSZhbXA7ZGVzY3JpcHRpb249JmFtcDt0YWJpbmRleD0xJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdpc19zdWJtaXRfMjMnIHZhbHVlPScxJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdnZm9ybV9zdWJtaXQnIHZhbHVlPScyMycgLz4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J2dmb3JtX3VuaXF1ZV9pZCcgdmFsdWU9JycgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0nc3RhdGVfMjMnIHZhbHVlPSdXeUpiWFNJc0ltTmhPRFUzWW1Zd01EWXdORGN3TVRsak1tRXlNakEyTkdaaFpEQXdOekExSWwwPScgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0nZ2Zvcm1fdGFyZ2V0X3BhZ2VfbnVtYmVyXzIzJyBpZD0nZ2Zvcm1fdGFyZ2V0X3BhZ2VfbnVtYmVyXzIzJyB2YWx1ZT0nMCcgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0nZ2Zvcm1fc291cmNlX3BhZ2VfbnVtYmVyXzIzJyBpZD0nZ2Zvcm1fc291cmNlX3BhZ2VfbnVtYmVyXzIzJyB2YWx1ZT0nMScgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZ2Zvcm1fZmllbGRfdmFsdWVzJyB2YWx1ZT0nJyAvPgogICAgICAgICAgICAKICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxpZnJhbWUgc3R5bGU9J2Rpc3BsYXk6bm9uZTt3aWR0aDowcHg7aGVpZ2h0OjBweDsnIHNyYz0nYWJvdXQ6YmxhbmsnIG5hbWU9J2dmb3JtX2FqYXhfZnJhbWVfMjMnIGlkPSdnZm9ybV9hamF4X2ZyYW1lXzIzJz48L2lmcmFtZT4KICAgICAgICAgICAgICAgIDxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5qUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCQpe2dmb3JtSW5pdFNwaW5uZXIoIDIzLCAnaHR0cDovL3d3dy52aXJ0dWFsaXphdGlvbnNvZnR3YXJlLmNvbS93cC1jb250ZW50L3BsdWdpbnMvZ3Jhdml0eWZvcm1zL2ltYWdlcy9zcGlubmVyLmdpZicgKTtqUXVlcnkoJyNnZm9ybV9hamF4X2ZyYW1lXzIzJykubG9hZCggZnVuY3Rpb24oKXt2YXIgY29udGVudHMgPSBqUXVlcnkodGhpcykuY29udGVudHMoKS5maW5kKCcqJykuaHRtbCgpO3ZhciBpc19wb3N0YmFjayA9IGNvbnRlbnRzLmluZGV4T2YoJ0dGX0FKQVhfUE9TVEJBQ0snKSA+PSAwO2lmKCFpc19wb3N0YmFjayl7cmV0dXJuO312YXIgZm9ybV9jb250ZW50ID0galF1ZXJ5KHRoaXMpLmNvbnRlbnRzKCkuZmluZCgnI2dmb3JtX3dyYXBwZXJfMjMnKTt2YXIgaXNfY29uZmlybWF0aW9uID0galF1ZXJ5KHRoaXMpLmNvbnRlbnRzKCkuZmluZCgnI2dmb3JtX2NvbmZpcm1hdGlvbl93cmFwcGVyXzIzJykubGVuZ3RoID4gMDt2YXIgaXNfcmVkaXJlY3QgPSBjb250ZW50cy5pbmRleE9mKCdnZm9ybVJlZGlyZWN0KCl7JykgPj0gMDt2YXIgaXNfZm9ybSA9IGZvcm1fY29udGVudC5sZW5ndGggPiAwICYmICEgaXNfcmVkaXJlY3QgJiYgISBpc19jb25maXJtYXRpb247aWYoaXNfZm9ybSl7alF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8yMycpLmh0bWwoZm9ybV9jb250ZW50Lmh0bWwoKSk7c2V0VGltZW91dCggZnVuY3Rpb24oKSB7IC8qIGRlbGF5IHRoZSBzY3JvbGwgYnkgNTAgbWlsbGlzZWNvbmRzIHRvIGZpeCBhIGJ1ZyBpbiBjaHJvbWUgKi8galF1ZXJ5KGRvY3VtZW50KS5zY3JvbGxUb3AoalF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8yMycpLm9mZnNldCgpLnRvcCk7IH0sIDUwICk7aWYod2luZG93WydnZm9ybUluaXREYXRlcGlja2VyJ10pIHtnZm9ybUluaXREYXRlcGlja2VyKCk7fWlmKHdpbmRvd1snZ2Zvcm1Jbml0UHJpY2VGaWVsZHMnXSkge2dmb3JtSW5pdFByaWNlRmllbGRzKCk7fXZhciBjdXJyZW50X3BhZ2UgPSBqUXVlcnkoJyNnZm9ybV9zb3VyY2VfcGFnZV9udW1iZXJfMjMnKS52YWwoKTtnZm9ybUluaXRTcGlubmVyKCAyMywgJ2h0dHA6Ly93d3cudmlydHVhbGl6YXRpb25zb2Z0d2FyZS5jb20vd3AtY29udGVudC9wbHVnaW5zL2dyYXZpdHlmb3Jtcy9pbWFnZXMvc3Bpbm5lci5naWYnICk7alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCdnZm9ybV9wYWdlX2xvYWRlZCcsIFsyMywgY3VycmVudF9wYWdlXSk7d2luZG93WydnZl9zdWJtaXR0aW5nXzIzJ10gPSBmYWxzZTt9ZWxzZSBpZighaXNfcmVkaXJlY3Qpe3ZhciBjb25maXJtYXRpb25fY29udGVudCA9IGpRdWVyeSh0aGlzKS5jb250ZW50cygpLmZpbmQoJyNnZm9ybXNfY29uZmlybWF0aW9uX21lc3NhZ2VfMjMnKS5odG1sKCk7aWYoIWNvbmZpcm1hdGlvbl9jb250ZW50KXtjb25maXJtYXRpb25fY29udGVudCA9IGNvbnRlbnRzO31zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7alF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8yMycpLnJlcGxhY2VXaXRoKCc8JyArICdkaXYgaWQ9XCdnZm9ybXNfY29uZmlybWF0aW9uX21lc3NhZ2VfMjNcJyBjbGFzcz1cJ2dmb3JtX2NvbmZpcm1hdGlvbl9tZXNzYWdlXzIzIGdmb3Jtc19jb25maXJtYXRpb25fbWVzc2FnZVwnJyArICc+JyArIGNvbmZpcm1hdGlvbl9jb250ZW50ICsgJzwnICsgJy9kaXYnICsgJz4nKTtqUXVlcnkoZG9jdW1lbnQpLnNjcm9sbFRvcChqUXVlcnkoJyNnZm9ybXNfY29uZmlybWF0aW9uX21lc3NhZ2VfMjMnKS5vZmZzZXQoKS50b3ApO2pRdWVyeShkb2N1bWVudCkudHJpZ2dlcignZ2Zvcm1fY29uZmlybWF0aW9uX2xvYWRlZCcsIFsyM10pO3dpbmRvd1snZ2Zfc3VibWl0dGluZ18yMyddID0gZmFsc2U7fSwgNTApO31lbHNle2pRdWVyeSgnI2dmb3JtXzIzJykuYXBwZW5kKGNvbnRlbnRzKTtpZih3aW5kb3dbJ2dmb3JtUmVkaXJlY3QnXSkge2dmb3JtUmVkaXJlY3QoKTt9fWpRdWVyeShkb2N1bWVudCkudHJpZ2dlcignZ2Zvcm1fcG9zdF9yZW5kZXInLCBbMjMsIGN1cnJlbnRfcGFnZV0pO30gKTt9ICk7PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPiBpZih0eXBlb2YgZ2ZfZ2xvYmFsID09ICd1bmRlZmluZWQnKSB2YXIgZ2ZfZ2xvYmFsID0geyJnZl9jdXJyZW5jeV9jb25maWciOnsibmFtZSI6IlUuUy4gRG9sbGFyIiwic3ltYm9sX2xlZnQiOiIkIiwic3ltYm9sX3JpZ2h0IjoiIiwic3ltYm9sX3BhZGRpbmciOiIiLCJ0aG91c2FuZF9zZXBhcmF0b3IiOiIsIiwiZGVjaW1hbF9zZXBhcmF0b3IiOiIuIiwiZGVjaW1hbHMiOjJ9LCJiYXNlX3VybCI6Imh0dHA6XC9cL3d3dy52aXJ0dWFsaXphdGlvbnNvZnR3YXJlLmNvbVwvd3AtY29udGVudFwvcGx1Z2luc1wvZ3Jhdml0eWZvcm1zIiwibnVtYmVyX2Zvcm1hdHMiOltdLCJzcGlubmVyVXJsIjoiaHR0cDpcL1wvd3d3LnZpcnR1YWxpemF0aW9uc29mdHdhcmUuY29tXC93cC1jb250ZW50XC9wbHVnaW5zXC9ncmF2aXR5Zm9ybXNcL2ltYWdlc1wvc3Bpbm5lci5naWYifTtqUXVlcnkoZG9jdW1lbnQpLmJpbmQoJ2dmb3JtX3Bvc3RfcmVuZGVyJywgZnVuY3Rpb24oZXZlbnQsIGZvcm1JZCwgY3VycmVudFBhZ2Upe2lmKGZvcm1JZCA9PSAyMykge2lmKHdpbmRvd1snalF1ZXJ5J10pe2lmKCF3aW5kb3dbJ2dmX2Zvcm1fY29uZGl0aW9uYWxfbG9naWMnXSl3aW5kb3dbJ2dmX2Zvcm1fY29uZGl0aW9uYWxfbG9naWMnXSA9IG5ldyBBcnJheSgpO3dpbmRvd1snZ2ZfZm9ybV9jb25kaXRpb25hbF9sb2dpYyddWzIzXSA9IHsnbG9naWMnIDogezQ6IHsiZmllbGQiOnsiYWN0aW9uVHlwZSI6ImhpZGUiLCJsb2dpY1R5cGUiOiJhbGwiLCJydWxlcyI6W3siZmllbGRJZCI6IjUiLCJvcGVyYXRvciI6Imlzbm90IiwidmFsdWUiOiJVbml0ZWQgU3RhdGVzIn1dfSwibmV4dEJ1dHRvbiI6bnVsbCwic2VjdGlvbiI6bnVsbH0gfSwgJ2RlcGVuZGVudHMnIDogezQ6IFs0XSB9LCAnYW5pbWF0aW9uJyA6IDAgLCAnZGVmYXVsdHMnIDogeyI1IjoiVW5pdGVkIFN0YXRlcyJ9IH07IGlmKCF3aW5kb3dbJ2dmX251bWJlcl9mb3JtYXQnXSl3aW5kb3dbJ2dmX251bWJlcl9mb3JtYXQnXSA9ICdkZWNpbWFsX2RvdCc7alF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe2dmX2FwcGx5X3J1bGVzKDIzLCBbNF0sIHRydWUpO2pRdWVyeSgnI2dmb3JtX3dyYXBwZXJfMjMnKS5zaG93KCk7alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCdnZm9ybV9wb3N0X2NvbmRpdGlvbmFsX2xvZ2ljJywgWzIzLCBudWxsLCB0cnVlXSk7fSApO30gZ2Zvcm1Jbml0Q2hvc2VuRmllbGRzKCcjaW5wdXRfMjNfNSwjaW5wdXRfMjNfNCcsJ05vIHJlc3VsdHMgbWF0Y2hlZCcpO30gfSApO2pRdWVyeShkb2N1bWVudCkuYmluZCgnZ2Zvcm1fcG9zdF9jb25kaXRpb25hbF9sb2dpYycsIGZ1bmN0aW9uKGV2ZW50LCBmb3JtSWQsIGZpZWxkcywgaXNJbml0KXtnZm9ybUluaXRDaG9zZW5GaWVsZHMoJyNpbnB1dF8yM181LCNpbnB1dF8yM180JywnTm8gcmVzdWx0cyBtYXRjaGVkJyk7fSApOzwvc2NyaXB0PjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz4galF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe2pRdWVyeShkb2N1bWVudCkudHJpZ2dlcignZ2Zvcm1fcG9zdF9yZW5kZXInLCBbMjMsIDFdKSB9ICk7IDwvc2NyaXB0Pg==
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+PGZvcm0gbWV0aG9kPSdwb3N0JyBlbmN0eXBlPSdtdWx0aXBhcnQvZm9ybS1kYXRhJyB0YXJnZXQ9J2dmb3JtX2FqYXhfZnJhbWVfMjMnIGlkPSdnZm9ybV8yMycgIGFjdGlvbj0nL29wZW5zdGFjay1zdG9yYWdlLXN5c3RlbXMvI2dmXzIzJz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nZ2Zvcm1fYm9keSc+PHVsIGlkPSdnZm9ybV9maWVsZHNfMjMnIGNsYXNzPSdnZm9ybV9maWVsZHMgdG9wX2xhYmVsIGZvcm1fc3VibGFiZWxfYmVsb3cgZGVzY3JpcHRpb25fYmVsb3cnPjxsaSBpZD0nZmllbGRfMjNfMScgY2xhc3M9J2dmaWVsZCBnZmllbGRfY29udGFpbnNfcmVxdWlyZWQgZmllbGRfc3VibGFiZWxfYmVsb3cgZmllbGRfZGVzY3JpcHRpb25fYmVsb3cnID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCcgZm9yPSdpbnB1dF8yM18xJyA+Rmlyc3QgTmFtZTxzcGFuIGNsYXNzPSdnZmllbGRfcmVxdWlyZWQnPio8L3NwYW4+PC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyJz48aW5wdXQgbmFtZT0naW5wdXRfMScgaWQ9J2lucHV0XzIzXzEnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSdtZWRpdW0nICB0YWJpbmRleD0nMScgICAvPjwvZGl2PjwvbGk+PGxpIGlkPSdmaWVsZF8yM18yJyBjbGFzcz0nZ2ZpZWxkIGdmaWVsZF9jb250YWluc19yZXF1aXJlZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdycgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsJyBmb3I9J2lucHV0XzIzXzInID5MYXN0IE5hbWU8c3BhbiBjbGFzcz0nZ2ZpZWxkX3JlcXVpcmVkJz4qPC9zcGFuPjwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lcic+PGlucHV0IG5hbWU9J2lucHV0XzInIGlkPSdpbnB1dF8yM18yJyB0eXBlPSd0ZXh0JyB2YWx1ZT0nJyBjbGFzcz0nbWVkaXVtJyAgdGFiaW5kZXg9JzInICAgLz48L2Rpdj48L2xpPjxsaSBpZD0nZmllbGRfMjNfMycgY2xhc3M9J2dmaWVsZCBnZmllbGRfY29udGFpbnNfcmVxdWlyZWQgZmllbGRfc3VibGFiZWxfYmVsb3cgZmllbGRfZGVzY3JpcHRpb25fYmVsb3cnID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCcgZm9yPSdpbnB1dF8yM18zJyA+RW1haWw8c3BhbiBjbGFzcz0nZ2ZpZWxkX3JlcXVpcmVkJz4qPC9zcGFuPjwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lcic+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0naW5wdXRfMycgaWQ9J2lucHV0XzIzXzMnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSdtZWRpdW0nIHRhYmluZGV4PSczJyAgIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvbGk+PGxpIGlkPSdmaWVsZF8yM181JyBjbGFzcz0nZ2ZpZWxkIGdmaWVsZF9jb250YWluc19yZXF1aXJlZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdycgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsJyBmb3I9J2lucHV0XzIzXzUnID5Db3VudHJ5PHNwYW4gY2xhc3M9J2dmaWVsZF9yZXF1aXJlZCc+Kjwvc3Bhbj48L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXInPjxzZWxlY3QgbmFtZT0naW5wdXRfNScgaWQ9J2lucHV0XzIzXzUnIG9uY2hhbmdlPSdnZl9hcHBseV9ydWxlcygyMyxbNF0pOycgY2xhc3M9J21lZGl1bSBnZmllbGRfc2VsZWN0JyB0YWJpbmRleD0nNCcgPjxvcHRpb24gdmFsdWU9J1VuaXRlZCBTdGF0ZXMnIHNlbGVjdGVkPSdzZWxlY3RlZCc+VW5pdGVkIFN0YXRlczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0NhbmFkYScgPkNhbmFkYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1VuaXRlZCBLaW5nZG9tJyA+VW5pdGVkIEtpbmdkb208L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBdXN0cmFsaWEnID5BdXN0cmFsaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBZmdoYW5pc3RhbicgPkFmZ2hhbmlzdGFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQWxiYW5pYScgPkFsYmFuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBbGdlcmlhJyA+QWxnZXJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0FtZXJpY2FuIFNhbW9hJyA+QW1lcmljYW4gU2Ftb2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBbmRvcnJhJyA+QW5kb3JyYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0FuZ29sYScgPkFuZ29sYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0FudGlndWEgYW5kIEJhcmJ1ZGEnID5BbnRpZ3VhIGFuZCBCYXJidWRhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQXJnZW50aW5hJyA+QXJnZW50aW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQXJtZW5pYScgPkFybWVuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBdXN0cmlhJyA+QXVzdHJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0F6ZXJiYWlqYW4nID5BemVyYmFpamFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQmFoYW1hcycgPkJhaGFtYXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCYWhyYWluJyA+QmFocmFpbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0JhbmdsYWRlc2gnID5CYW5nbGFkZXNoPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQmFyYmFkb3MnID5CYXJiYWRvczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0JlbGFydXMnID5CZWxhcnVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQmVsZ2l1bScgPkJlbGdpdW08L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCZWxpemUnID5CZWxpemU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCZW5pbicgPkJlbmluPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQmVybXVkYScgPkJlcm11ZGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCaHV0YW4nID5CaHV0YW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCb2xpdmlhJyA+Qm9saXZpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0Jvc25pYSBhbmQgSGVyemVnb3ZpbmEnID5Cb3NuaWEgYW5kIEhlcnplZ292aW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQm90c3dhbmEnID5Cb3Rzd2FuYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0JyYXppbCcgPkJyYXppbDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0JydW5laScgPkJydW5laTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0J1bGdhcmlhJyA+QnVsZ2FyaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCdXJraW5hIEZhc28nID5CdXJraW5hIEZhc288L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCdXJ1bmRpJyA+QnVydW5kaTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0NhbWJvZGlhJyA+Q2FtYm9kaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDYW1lcm9vbicgPkNhbWVyb29uPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ2FwZSBWZXJkZScgPkNhcGUgVmVyZGU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDYXltYW4gSXNsYW5kcycgPkNheW1hbiBJc2xhbmRzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljJyA+Q2VudHJhbCBBZnJpY2FuIFJlcHVibGljPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ2hhZCcgPkNoYWQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDaGlsZScgPkNoaWxlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ2hpbmEnID5DaGluYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0NvbG9tYmlhJyA+Q29sb21iaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDb21vcm9zJyA+Q29tb3Jvczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0NvbmdvLCBEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZScgPkNvbmdvLCBEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0NvbmdvLCBSZXB1YmxpYyBvZiB0aGUnID5Db25nbywgUmVwdWJsaWMgb2YgdGhlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ29zdGEgUmljYScgPkNvc3RhIFJpY2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDJm9jaXJjO3RlIGQmIzAzOTtJdm9pcmUnID5DJm9jaXJjO3RlIGQmIzAzOTtJdm9pcmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDcm9hdGlhJyA+Q3JvYXRpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0N1YmEnID5DdWJhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ3lwcnVzJyA+Q3lwcnVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ3plY2ggUmVwdWJsaWMnID5DemVjaCBSZXB1YmxpYzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0Rlbm1hcmsnID5EZW5tYXJrPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRGppYm91dGknID5Eamlib3V0aTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0RvbWluaWNhJyA+RG9taW5pY2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdEb21pbmljYW4gUmVwdWJsaWMnID5Eb21pbmljYW4gUmVwdWJsaWM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdFYXN0IFRpbW9yJyA+RWFzdCBUaW1vcjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0VjdWFkb3InID5FY3VhZG9yPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRWd5cHQnID5FZ3lwdDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0VsIFNhbHZhZG9yJyA+RWwgU2FsdmFkb3I8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdFcXVhdG9yaWFsIEd1aW5lYScgPkVxdWF0b3JpYWwgR3VpbmVhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRXJpdHJlYScgPkVyaXRyZWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdFc3RvbmlhJyA+RXN0b25pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0V0aGlvcGlhJyA+RXRoaW9waWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdGaWppJyA+RmlqaTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0ZpbmxhbmQnID5GaW5sYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRnJhbmNlJyA+RnJhbmNlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR2Fib24nID5HYWJvbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0dhbWJpYScgPkdhbWJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0dlb3JnaWEnID5HZW9yZ2lhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR2VybWFueScgPkdlcm1hbnk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdHaGFuYScgPkdoYW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR3JlZWNlJyA+R3JlZWNlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR3JlZW5sYW5kJyA+R3JlZW5sYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR3JlbmFkYScgPkdyZW5hZGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdHdWFtJyA+R3VhbTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0d1YXRlbWFsYScgPkd1YXRlbWFsYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0d1aW5lYScgPkd1aW5lYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0d1aW5lYS1CaXNzYXUnID5HdWluZWEtQmlzc2F1PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nR3V5YW5hJyA+R3V5YW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSGFpdGknID5IYWl0aTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0hvbmR1cmFzJyA+SG9uZHVyYXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdIb25nIEtvbmcnID5Ib25nIEtvbmc8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdIdW5nYXJ5JyA+SHVuZ2FyeTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0ljZWxhbmQnID5JY2VsYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSW5kaWEnID5JbmRpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0luZG9uZXNpYScgPkluZG9uZXNpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0lyYW4nID5JcmFuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSXJhcScgPklyYXE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdJcmVsYW5kJyA+SXJlbGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0lzcmFlbCcgPklzcmFlbDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0l0YWx5JyA+SXRhbHk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdKYW1haWNhJyA+SmFtYWljYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0phcGFuJyA+SmFwYW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdKb3JkYW4nID5Kb3JkYW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdLYXpha2hzdGFuJyA+S2F6YWtoc3Rhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0tlbnlhJyA+S2VueWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdLaXJpYmF0aScgPktpcmliYXRpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTm9ydGggS29yZWEnID5Ob3J0aCBLb3JlYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NvdXRoIEtvcmVhJyA+U291dGggS29yZWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdLdXdhaXQnID5LdXdhaXQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdLeXJneXpzdGFuJyA+S3lyZ3l6c3Rhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0xhb3MnID5MYW9zPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTGF0dmlhJyA+TGF0dmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTGViYW5vbicgPkxlYmFub248L29wdGlvbj48b3B0aW9uIHZhbHVlPSdMZXNvdGhvJyA+TGVzb3Robzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0xpYmVyaWEnID5MaWJlcmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTGlieWEnID5MaWJ5YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0xpZWNodGVuc3RlaW4nID5MaWVjaHRlbnN0ZWluPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTGl0aHVhbmlhJyA+TGl0aHVhbmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTHV4ZW1ib3VyZycgPkx1eGVtYm91cmc8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNYWNlZG9uaWEnID5NYWNlZG9uaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNYWRhZ2FzY2FyJyA+TWFkYWdhc2Nhcjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01hbGF3aScgPk1hbGF3aTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01hbGF5c2lhJyA+TWFsYXlzaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNYWxkaXZlcycgPk1hbGRpdmVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWFsaScgPk1hbGk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNYWx0YScgPk1hbHRhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWFyc2hhbGwgSXNsYW5kcycgPk1hcnNoYWxsIElzbGFuZHM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNYXVyaXRhbmlhJyA+TWF1cml0YW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01hdXJpdGl1cycgPk1hdXJpdGl1czwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01leGljbycgPk1leGljbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01pY3JvbmVzaWEnID5NaWNyb25lc2lhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTW9sZG92YScgPk1vbGRvdmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNb25hY28nID5Nb25hY288L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNb25nb2xpYScgPk1vbmdvbGlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTW9udGVuZWdybycgPk1vbnRlbmVncm88L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNb3JvY2NvJyA+TW9yb2Njbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01vemFtYmlxdWUnID5Nb3phbWJpcXVlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTXlhbm1hcicgPk15YW5tYXI8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOYW1pYmlhJyA+TmFtaWJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05hdXJ1JyA+TmF1cnU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOZXBhbCcgPk5lcGFsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTmV0aGVybGFuZHMnID5OZXRoZXJsYW5kczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05ldyBaZWFsYW5kJyA+TmV3IFplYWxhbmQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOaWNhcmFndWEnID5OaWNhcmFndWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOaWdlcicgPk5pZ2VyPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTmlnZXJpYScgPk5pZ2VyaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOb3J3YXknID5Ob3J3YXk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOb3J0aGVybiBNYXJpYW5hIElzbGFuZHMnID5Ob3J0aGVybiBNYXJpYW5hIElzbGFuZHM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdPbWFuJyA+T21hbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1Bha2lzdGFuJyA+UGFraXN0YW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQYWxhdScgPlBhbGF1PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nUGFsZXN0aW5lJyA+UGFsZXN0aW5lPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nUGFuYW1hJyA+UGFuYW1hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nUGFwdWEgTmV3IEd1aW5lYScgPlBhcHVhIE5ldyBHdWluZWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQYXJhZ3VheScgPlBhcmFndWF5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nUGVydScgPlBlcnU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQaGlsaXBwaW5lcycgPlBoaWxpcHBpbmVzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nUG9sYW5kJyA+UG9sYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nUG9ydHVnYWwnID5Qb3J0dWdhbDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1B1ZXJ0byBSaWNvJyA+UHVlcnRvIFJpY288L29wdGlvbj48b3B0aW9uIHZhbHVlPSdRYXRhcicgPlFhdGFyPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nUm9tYW5pYScgPlJvbWFuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdSdXNzaWEnID5SdXNzaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdSd2FuZGEnID5Sd2FuZGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTYWludCBLaXR0cyBhbmQgTmV2aXMnID5TYWludCBLaXR0cyBhbmQgTmV2aXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTYWludCBMdWNpYScgPlNhaW50IEx1Y2lhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU2FpbnQgVmluY2VudCBhbmQgdGhlIEdyZW5hZGluZXMnID5TYWludCBWaW5jZW50IGFuZCB0aGUgR3JlbmFkaW5lczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NhbW9hJyA+U2Ftb2E8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTYW4gTWFyaW5vJyA+U2FuIE1hcmlubzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NhbyBUb21lIGFuZCBQcmluY2lwZScgPlNhbyBUb21lIGFuZCBQcmluY2lwZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NhdWRpIEFyYWJpYScgPlNhdWRpIEFyYWJpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NlbmVnYWwnID5TZW5lZ2FsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU2VyYmlhIGFuZCBNb250ZW5lZ3JvJyA+U2VyYmlhIGFuZCBNb250ZW5lZ3JvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU2V5Y2hlbGxlcycgPlNleWNoZWxsZXM8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTaWVycmEgTGVvbmUnID5TaWVycmEgTGVvbmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTaW5nYXBvcmUnID5TaW5nYXBvcmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTbG92YWtpYScgPlNsb3Zha2lhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU2xvdmVuaWEnID5TbG92ZW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NvbG9tb24gSXNsYW5kcycgPlNvbG9tb24gSXNsYW5kczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NvbWFsaWEnID5Tb21hbGlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU291dGggQWZyaWNhJyA+U291dGggQWZyaWNhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU3BhaW4nID5TcGFpbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1NyaSBMYW5rYScgPlNyaSBMYW5rYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1N1ZGFuJyA+U3VkYW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTdWRhbiwgU291dGgnID5TdWRhbiwgU291dGg8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTdXJpbmFtZScgPlN1cmluYW1lPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU3dhemlsYW5kJyA+U3dhemlsYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU3dlZGVuJyA+U3dlZGVuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU3dpdHplcmxhbmQnID5Td2l0emVybGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1N5cmlhJyA+U3lyaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdUYWl3YW4nID5UYWl3YW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdUYWppa2lzdGFuJyA+VGFqaWtpc3Rhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1RhbnphbmlhJyA+VGFuemFuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdUaGFpbGFuZCcgPlRoYWlsYW5kPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVG9nbycgPlRvZ288L29wdGlvbj48b3B0aW9uIHZhbHVlPSdUb25nYScgPlRvbmdhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVHJpbmlkYWQgYW5kIFRvYmFnbycgPlRyaW5pZGFkIGFuZCBUb2JhZ288L29wdGlvbj48b3B0aW9uIHZhbHVlPSdUdW5pc2lhJyA+VHVuaXNpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1R1cmtleScgPlR1cmtleTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1R1cmttZW5pc3RhbicgPlR1cmttZW5pc3Rhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1R1dmFsdScgPlR1dmFsdTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1VnYW5kYScgPlVnYW5kYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1VrcmFpbmUnID5Va3JhaW5lPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVW5pdGVkIEFyYWIgRW1pcmF0ZXMnID5Vbml0ZWQgQXJhYiBFbWlyYXRlczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1VydWd1YXknID5VcnVndWF5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVXpiZWtpc3RhbicgPlV6YmVraXN0YW48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdWYW51YXR1JyA+VmFudWF0dTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1ZhdGljYW4gQ2l0eScgPlZhdGljYW4gQ2l0eTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1ZlbmV6dWVsYScgPlZlbmV6dWVsYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1ZpZXRuYW0nID5WaWV0bmFtPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVmlyZ2luIElzbGFuZHMsIEJyaXRpc2gnID5WaXJnaW4gSXNsYW5kcywgQnJpdGlzaDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1ZpcmdpbiBJc2xhbmRzLCBVLlMuJyA+VmlyZ2luIElzbGFuZHMsIFUuUy48L29wdGlvbj48b3B0aW9uIHZhbHVlPSdZZW1lbicgPlllbWVuPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nWmFtYmlhJyA+WmFtYmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nWmltYmFid2UnID5aaW1iYWJ3ZTwvb3B0aW9uPjwvc2VsZWN0PjwvZGl2PjwvbGk+PGxpIGlkPSdmaWVsZF8yM180JyBjbGFzcz0nZ2ZpZWxkIGZpZWxkX3N1YmxhYmVsX2JlbG93IGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93JyA+PGxhYmVsIGNsYXNzPSdnZmllbGRfbGFiZWwnIGZvcj0naW5wdXRfMjNfNCcgPlN0YXRlPC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyJz48c2VsZWN0IG5hbWU9J2lucHV0XzQnIGlkPSdpbnB1dF8yM180JyAgY2xhc3M9J21lZGl1bSBnZmllbGRfc2VsZWN0JyB0YWJpbmRleD0nNScgPjxvcHRpb24gdmFsdWU9J0FsYWJhbWEnID5BbGFiYW1hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQWxhc2thJyA+QWxhc2thPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQXJpem9uYScgPkFyaXpvbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBcmthbnNhcycgPkFya2Fuc2FzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ2FsaWZvcm5pYScgPkNhbGlmb3JuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdDb2xvcmFkbycgPkNvbG9yYWRvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ29ubmVjdGljdXQnID5Db25uZWN0aWN1dDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0RlbGF3YXJlJyA+RGVsYXdhcmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdEaXN0cmljdCBvZiBDb2x1bWJpYScgPkRpc3RyaWN0IG9mIENvbHVtYmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nRmxvcmlkYScgPkZsb3JpZGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdHZW9yZ2lhJyA+R2VvcmdpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0hhd2FpaScgPkhhd2FpaTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0lkYWhvJyA+SWRhaG88L29wdGlvbj48b3B0aW9uIHZhbHVlPSdJbGxpbm9pcycgPklsbGlub2lzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSW5kaWFuYScgPkluZGlhbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdJb3dhJyA+SW93YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0thbnNhcycgPkthbnNhczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0tlbnR1Y2t5JyA+S2VudHVja3k8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdMb3Vpc2lhbmEnID5Mb3Vpc2lhbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNYWluZScgPk1haW5lPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWFyeWxhbmQnID5NYXJ5bGFuZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01hc3NhY2h1c2V0dHMnID5NYXNzYWNodXNldHRzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTWljaGlnYW4nID5NaWNoaWdhbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01pbm5lc290YScgPk1pbm5lc290YTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01pc3Npc3NpcHBpJyA+TWlzc2lzc2lwcGk8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNaXNzb3VyaScgPk1pc3NvdXJpPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTW9udGFuYScgPk1vbnRhbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOZWJyYXNrYScgPk5lYnJhc2thPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTmV2YWRhJyA+TmV2YWRhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTmV3IEhhbXBzaGlyZScgPk5ldyBIYW1wc2hpcmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOZXcgSmVyc2V5JyA+TmV3IEplcnNleTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05ldyBNZXhpY28nID5OZXcgTWV4aWNvPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nTmV3IFlvcmsnID5OZXcgWW9yazwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J05vcnRoIENhcm9saW5hJyA+Tm9ydGggQ2Fyb2xpbmE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdOb3J0aCBEYWtvdGEnID5Ob3J0aCBEYWtvdGE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdPaGlvJyA+T2hpbzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J09rbGFob21hJyA+T2tsYWhvbWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdPcmVnb24nID5PcmVnb248L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQZW5uc3lsdmFuaWEnID5QZW5uc3lsdmFuaWE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdSaG9kZSBJc2xhbmQnID5SaG9kZSBJc2xhbmQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdTb3V0aCBDYXJvbGluYScgPlNvdXRoIENhcm9saW5hPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nU291dGggRGFrb3RhJyA+U291dGggRGFrb3RhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVGVubmVzc2VlJyA+VGVubmVzc2VlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVGV4YXMnID5UZXhhczwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1V0YWgnID5VdGFoPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nVmVybW9udCcgPlZlcm1vbnQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdWaXJnaW5pYScgPlZpcmdpbmlhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nV2FzaGluZ3RvbicgPldhc2hpbmd0b248L29wdGlvbj48b3B0aW9uIHZhbHVlPSdXZXN0IFZpcmdpbmlhJyA+V2VzdCBWaXJnaW5pYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1dpc2NvbnNpbicgPldpc2NvbnNpbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1d5b21pbmcnID5XeW9taW5nPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQXJtZWQgRm9yY2VzIEFtZXJpY2FzJyA+QXJtZWQgRm9yY2VzIEFtZXJpY2FzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQXJtZWQgRm9yY2VzIEV1cm9wZScgPkFybWVkIEZvcmNlcyBFdXJvcGU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBcm1lZCBGb3JjZXMgUGFjaWZpYycgPkFybWVkIEZvcmNlcyBQYWNpZmljPC9vcHRpb24+PC9zZWxlY3Q+PC9kaXY+PC9saT48bGkgaWQ9J2ZpZWxkXzIzXzYnIGNsYXNzPSdnZmllbGQgZmllbGRfc3VibGFiZWxfYmVsb3cgZmllbGRfZGVzY3JpcHRpb25fYmVsb3cnID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCcgZm9yPSdpbnB1dF8yM182JyA+UGhvbmU8L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXInPjxpbnB1dCBuYW1lPSdpbnB1dF82JyBpZD0naW5wdXRfMjNfNicgdHlwZT0ndGV4dCcgdmFsdWU9JycgY2xhc3M9J21lZGl1bScgdGFiaW5kZXg9JzYnICAgLz48L2Rpdj48L2xpPjxsaSBpZD0nZmllbGRfMjNfNycgY2xhc3M9J2dmaWVsZCBnZmllbGRfY29udGFpbnNfcmVxdWlyZWQgZmllbGRfc3VibGFiZWxfYmVsb3cgZmllbGRfZGVzY3JpcHRpb25fYmVsb3cnID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCcgZm9yPSdpbnB1dF8yM183JyA+Q29tcGFueTxzcGFuIGNsYXNzPSdnZmllbGRfcmVxdWlyZWQnPio8L3NwYW4+PC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyJz48aW5wdXQgbmFtZT0naW5wdXRfNycgaWQ9J2lucHV0XzIzXzcnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSdtZWRpdW0nICB0YWJpbmRleD0nNycgICAvPjwvZGl2PjwvbGk+PGxpIGlkPSdmaWVsZF8yM184JyBjbGFzcz0nZ2ZpZWxkIGZpZWxkX3N1YmxhYmVsX2JlbG93IGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93JyA+PGxhYmVsIGNsYXNzPSdnZmllbGRfbGFiZWwnIGZvcj0naW5wdXRfMjNfOCcgPkpvYiBUaXRsZTwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lcic+PGlucHV0IG5hbWU9J2lucHV0XzgnIGlkPSdpbnB1dF8yM184JyB0eXBlPSd0ZXh0JyB2YWx1ZT0nJyBjbGFzcz0nbWVkaXVtJyAgdGFiaW5kZXg9JzgnICAgLz48L2Rpdj48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSdnZm9ybV9mb290ZXIgdG9wX2xhYmVsJz4gPGlucHV0IHR5cGU9J3N1Ym1pdCcgaWQ9J2dmb3JtX3N1Ym1pdF9idXR0b25fMjMnIGNsYXNzPSdnZm9ybV9idXR0b24gYnV0dG9uJyB2YWx1ZT0nUmVnaXN0ZXIgTm93IScgdGFiaW5kZXg9JzknIG9uY2xpY2s9J2lmKHdpbmRvd1siZ2Zfc3VibWl0dGluZ18yMyJdKXtyZXR1cm4gZmFsc2U7fSAgd2luZG93WyJnZl9zdWJtaXR0aW5nXzIzIl09dHJ1ZTsgICcgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZ2Zvcm1fYWpheCcgdmFsdWU9J2Zvcm1faWQ9MjMmYW1wO3RpdGxlPSZhbXA7ZGVzY3JpcHRpb249JmFtcDt0YWJpbmRleD0xJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdpc19zdWJtaXRfMjMnIHZhbHVlPScxJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdnZm9ybV9zdWJtaXQnIHZhbHVlPScyMycgLz4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J2dmb3JtX3VuaXF1ZV9pZCcgdmFsdWU9JycgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0nc3RhdGVfMjMnIHZhbHVlPSdXeUpiWFNJc0ltTmhPRFUzWW1Zd01EWXdORGN3TVRsak1tRXlNakEyTkdaaFpEQXdOekExSWwwPScgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0nZ2Zvcm1fdGFyZ2V0X3BhZ2VfbnVtYmVyXzIzJyBpZD0nZ2Zvcm1fdGFyZ2V0X3BhZ2VfbnVtYmVyXzIzJyB2YWx1ZT0nMCcgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0nZ2Zvcm1fc291cmNlX3BhZ2VfbnVtYmVyXzIzJyBpZD0nZ2Zvcm1fc291cmNlX3BhZ2VfbnVtYmVyXzIzJyB2YWx1ZT0nMScgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZ2Zvcm1fZmllbGRfdmFsdWVzJyB2YWx1ZT0nJyAvPgogICAgICAgICAgICAKICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxpZnJhbWUgc3R5bGU9J2Rpc3BsYXk6bm9uZTt3aWR0aDowcHg7aGVpZ2h0OjBweDsnIHNyYz0nYWJvdXQ6YmxhbmsnIG5hbWU9J2dmb3JtX2FqYXhfZnJhbWVfMjMnIGlkPSdnZm9ybV9hamF4X2ZyYW1lXzIzJz48L2lmcmFtZT4KICAgICAgICAgICAgICAgIDxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5qUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCQpe2dmb3JtSW5pdFNwaW5uZXIoIDIzLCAnaHR0cDovL3d3dy52aXJ0dWFsaXphdGlvbnNvZnR3YXJlLmNvbS93cC1jb250ZW50L3BsdWdpbnMvZ3Jhdml0eWZvcm1zL2ltYWdlcy9zcGlubmVyLmdpZicgKTtqUXVlcnkoJyNnZm9ybV9hamF4X2ZyYW1lXzIzJykubG9hZCggZnVuY3Rpb24oKXt2YXIgY29udGVudHMgPSBqUXVlcnkodGhpcykuY29udGVudHMoKS5maW5kKCcqJykuaHRtbCgpO3ZhciBpc19wb3N0YmFjayA9IGNvbnRlbnRzLmluZGV4T2YoJ0dGX0FKQVhfUE9TVEJBQ0snKSA+PSAwO2lmKCFpc19wb3N0YmFjayl7cmV0dXJuO312YXIgZm9ybV9jb250ZW50ID0galF1ZXJ5KHRoaXMpLmNvbnRlbnRzKCkuZmluZCgnI2dmb3JtX3dyYXBwZXJfMjMnKTt2YXIgaXNfY29uZmlybWF0aW9uID0galF1ZXJ5KHRoaXMpLmNvbnRlbnRzKCkuZmluZCgnI2dmb3JtX2NvbmZpcm1hdGlvbl93cmFwcGVyXzIzJykubGVuZ3RoID4gMDt2YXIgaXNfcmVkaXJlY3QgPSBjb250ZW50cy5pbmRleE9mKCdnZm9ybVJlZGlyZWN0KCl7JykgPj0gMDt2YXIgaXNfZm9ybSA9IGZvcm1fY29udGVudC5sZW5ndGggPiAwICYmICEgaXNfcmVkaXJlY3QgJiYgISBpc19jb25maXJtYXRpb247aWYoaXNfZm9ybSl7alF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8yMycpLmh0bWwoZm9ybV9jb250ZW50Lmh0bWwoKSk7c2V0VGltZW91dCggZnVuY3Rpb24oKSB7IC8qIGRlbGF5IHRoZSBzY3JvbGwgYnkgNTAgbWlsbGlzZWNvbmRzIHRvIGZpeCBhIGJ1ZyBpbiBjaHJvbWUgKi8galF1ZXJ5KGRvY3VtZW50KS5zY3JvbGxUb3AoalF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8yMycpLm9mZnNldCgpLnRvcCk7IH0sIDUwICk7aWYod2luZG93WydnZm9ybUluaXREYXRlcGlja2VyJ10pIHtnZm9ybUluaXREYXRlcGlja2VyKCk7fWlmKHdpbmRvd1snZ2Zvcm1Jbml0UHJpY2VGaWVsZHMnXSkge2dmb3JtSW5pdFByaWNlRmllbGRzKCk7fXZhciBjdXJyZW50X3BhZ2UgPSBqUXVlcnkoJyNnZm9ybV9zb3VyY2VfcGFnZV9udW1iZXJfMjMnKS52YWwoKTtnZm9ybUluaXRTcGlubmVyKCAyMywgJ2h0dHA6Ly93d3cudmlydHVhbGl6YXRpb25zb2Z0d2FyZS5jb20vd3AtY29udGVudC9wbHVnaW5zL2dyYXZpdHlmb3Jtcy9pbWFnZXMvc3Bpbm5lci5naWYnICk7alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCdnZm9ybV9wYWdlX2xvYWRlZCcsIFsyMywgY3VycmVudF9wYWdlXSk7d2luZG93WydnZl9zdWJtaXR0aW5nXzIzJ10gPSBmYWxzZTt9ZWxzZSBpZighaXNfcmVkaXJlY3Qpe3ZhciBjb25maXJtYXRpb25fY29udGVudCA9IGpRdWVyeSh0aGlzKS5jb250ZW50cygpLmZpbmQoJyNnZm9ybXNfY29uZmlybWF0aW9uX21lc3NhZ2VfMjMnKS5odG1sKCk7aWYoIWNvbmZpcm1hdGlvbl9jb250ZW50KXtjb25maXJtYXRpb25fY29udGVudCA9IGNvbnRlbnRzO31zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7alF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8yMycpLnJlcGxhY2VXaXRoKCc8JyArICdkaXYgaWQ9XCdnZm9ybXNfY29uZmlybWF0aW9uX21lc3NhZ2VfMjNcJyBjbGFzcz1cJ2dmb3JtX2NvbmZpcm1hdGlvbl9tZXNzYWdlXzIzIGdmb3Jtc19jb25maXJtYXRpb25fbWVzc2FnZVwnJyArICc+JyArIGNvbmZpcm1hdGlvbl9jb250ZW50ICsgJzwnICsgJy9kaXYnICsgJz4nKTtqUXVlcnkoZG9jdW1lbnQpLnNjcm9sbFRvcChqUXVlcnkoJyNnZm9ybXNfY29uZmlybWF0aW9uX21lc3NhZ2VfMjMnKS5vZmZzZXQoKS50b3ApO2pRdWVyeShkb2N1bWVudCkudHJpZ2dlcignZ2Zvcm1fY29uZmlybWF0aW9uX2xvYWRlZCcsIFsyM10pO3dpbmRvd1snZ2Zfc3VibWl0dGluZ18yMyddID0gZmFsc2U7fSwgNTApO31lbHNle2pRdWVyeSgnI2dmb3JtXzIzJykuYXBwZW5kKGNvbnRlbnRzKTtpZih3aW5kb3dbJ2dmb3JtUmVkaXJlY3QnXSkge2dmb3JtUmVkaXJlY3QoKTt9fWpRdWVyeShkb2N1bWVudCkudHJpZ2dlcignZ2Zvcm1fcG9zdF9yZW5kZXInLCBbMjMsIGN1cnJlbnRfcGFnZV0pO30gKTt9ICk7PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPiBpZih0eXBlb2YgZ2ZfZ2xvYmFsID09ICd1bmRlZmluZWQnKSB2YXIgZ2ZfZ2xvYmFsID0geyJnZl9jdXJyZW5jeV9jb25maWciOnsibmFtZSI6IlUuUy4gRG9sbGFyIiwic3ltYm9sX2xlZnQiOiIkIiwic3ltYm9sX3JpZ2h0IjoiIiwic3ltYm9sX3BhZGRpbmciOiIiLCJ0aG91c2FuZF9zZXBhcmF0b3IiOiIsIiwiZGVjaW1hbF9zZXBhcmF0b3IiOiIuIiwiZGVjaW1hbHMiOjJ9LCJiYXNlX3VybCI6Imh0dHA6XC9cL3d3dy52aXJ0dWFsaXphdGlvbnNvZnR3YXJlLmNvbVwvd3AtY29udGVudFwvcGx1Z2luc1wvZ3Jhdml0eWZvcm1zIiwibnVtYmVyX2Zvcm1hdHMiOltdLCJzcGlubmVyVXJsIjoiaHR0cDpcL1wvd3d3LnZpcnR1YWxpemF0aW9uc29mdHdhcmUuY29tXC93cC1jb250ZW50XC9wbHVnaW5zXC9ncmF2aXR5Zm9ybXNcL2ltYWdlc1wvc3Bpbm5lci5naWYifTtqUXVlcnkoZG9jdW1lbnQpLmJpbmQoJ2dmb3JtX3Bvc3RfcmVuZGVyJywgZnVuY3Rpb24oZXZlbnQsIGZvcm1JZCwgY3VycmVudFBhZ2Upe2lmKGZvcm1JZCA9PSAyMykge2lmKHdpbmRvd1snalF1ZXJ5J10pe2lmKCF3aW5kb3dbJ2dmX2Zvcm1fY29uZGl0aW9uYWxfbG9naWMnXSl3aW5kb3dbJ2dmX2Zvcm1fY29uZGl0aW9uYWxfbG9naWMnXSA9IG5ldyBBcnJheSgpO3dpbmRvd1snZ2ZfZm9ybV9jb25kaXRpb25hbF9sb2dpYyddWzIzXSA9IHsnbG9naWMnIDogezQ6IHsiZmllbGQiOnsiYWN0aW9uVHlwZSI6ImhpZGUiLCJsb2dpY1R5cGUiOiJhbGwiLCJydWxlcyI6W3siZmllbGRJZCI6IjUiLCJvcGVyYXRvciI6Imlzbm90IiwidmFsdWUiOiJVbml0ZWQgU3RhdGVzIn1dfSwibmV4dEJ1dHRvbiI6bnVsbCwic2VjdGlvbiI6bnVsbH0gfSwgJ2RlcGVuZGVudHMnIDogezQ6IFs0XSB9LCAnYW5pbWF0aW9uJyA6IDAgLCAnZGVmYXVsdHMnIDogeyI1IjoiVW5pdGVkIFN0YXRlcyJ9IH07IGlmKCF3aW5kb3dbJ2dmX251bWJlcl9mb3JtYXQnXSl3aW5kb3dbJ2dmX251bWJlcl9mb3JtYXQnXSA9ICdkZWNpbWFsX2RvdCc7alF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe2dmX2FwcGx5X3J1bGVzKDIzLCBbNF0sIHRydWUpO2pRdWVyeSgnI2dmb3JtX3dyYXBwZXJfMjMnKS5zaG93KCk7alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCdnZm9ybV9wb3N0X2NvbmRpdGlvbmFsX2xvZ2ljJywgWzIzLCBudWxsLCB0cnVlXSk7fSApO30gZ2Zvcm1Jbml0Q2hvc2VuRmllbGRzKCcjaW5wdXRfMjNfNSwjaW5wdXRfMjNfNCcsJ05vIHJlc3VsdHMgbWF0Y2hlZCcpO30gfSApO2pRdWVyeShkb2N1bWVudCkuYmluZCgnZ2Zvcm1fcG9zdF9jb25kaXRpb25hbF9sb2dpYycsIGZ1bmN0aW9uKGV2ZW50LCBmb3JtSWQsIGZpZWxkcywgaXNJbml0KXtnZm9ybUluaXRDaG9zZW5GaWVsZHMoJyNpbnB1dF8yM181LCNpbnB1dF8yM180JywnTm8gcmVzdWx0cyBtYXRjaGVkJyk7fSApOzwvc2NyaXB0PjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz4galF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe2pRdWVyeShkb2N1bWVudCkudHJpZ2dlcignZ2Zvcm1fcG9zdF9yZW5kZXInLCBbMjMsIDFdKSB9ICk7IDwvc2NyaXB0Pg==