{"id":15289,"date":"2026-05-07T18:16:47","date_gmt":"2026-05-07T12:46:47","guid":{"rendered":"https:\/\/utho.com\/blog\/?p=15289"},"modified":"2026-05-07T18:20:21","modified_gmt":"2026-05-07T12:50:21","slug":"cloud-security-tips","status":"publish","type":"post","link":"https:\/\/utho.com\/blog\/cloud-security-tips\/","title":{"rendered":"10 Cloud Security Tips to Stop Breaches in 2026"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The cloud computing age has brought many big changes. You can make a server in just a few minutes, store a large amount of data without building physical systems and run your business from a laptop. Cloud computing is flexible, scalable and affordable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But as more businesses move online following the right cloud security tips has become more important than ever.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When a company transfers to the cloud, its priceless and sensitive information goes into an ecosystem that the company does not fully control. Attackers already know about this weakness. In 2023 82% of all data breaches happened in the cloud according to IBM\u2019s Cost of a Data Breach Report. On average every attack caused losses of more than $4.45 million. In the years after that this number kept growing and by 2026 cloud systems became one of the biggest targets for hackers around the world.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But there is also good news. Most attacks happen not because hackers use very advanced tricks but because people make simple mistakes and use weak security. By following the right cloud security tips businesses of all sizes can lower risks and protect their important data in a better way.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This guide gives ten simple cloud security tips that are easy to follow easy to use and proven to work for modern businesses.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1672\" height=\"1119\" src=\"https:\/\/utho.com\/blog\/wp-content\/uploads\/image-4.jpeg\" alt=\"cloud security tips\" class=\"wp-image-15291\" srcset=\"https:\/\/utho.com\/blog\/wp-content\/uploads\/image-4.jpeg 1672w, https:\/\/utho.com\/blog\/wp-content\/uploads\/image-4-300x201.jpeg 300w, https:\/\/utho.com\/blog\/wp-content\/uploads\/image-4-767x513.jpeg 767w, https:\/\/utho.com\/blog\/wp-content\/uploads\/image-4-1024x685.jpeg 1024w, https:\/\/utho.com\/blog\/wp-content\/uploads\/image-4-1536x1028.jpeg 1536w\" sizes=\"auto, (max-width: 1672px) 100vw, 1672px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1. Your Password Is the Front Door to Your Cloud \u2014 Stop Leaving It Unlocked<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">One of the most important <strong>cloud security tips<\/strong> is surprisingly simple: use strong passwords. Let us start with a very basic mistake that many people and even companies still make.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In 2024, one of the most commonly used passwords in company hacks was still \u201c123456.\u201d This is not a joke. Real businesses with real customer data were using extremely weak passwords. Your password is the very first thing protecting your cloud environment. If your password is weak, your data can be stolen within minutes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Passwords are your first line of defense. If they are weak, nothing else really matters.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Why weak passwords are dangerous<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Attackers use a method called credential stuffing. In this attack hackers take old leaked passwords from data breaches and try them on cloud login pages. Billions of stolen passwords are already shared on the dark web. If you use the same password on many accounts then your cloud account can become unsafe very easily.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hackers also use smart computer tools that can try thousands of passwords every second. Small and easy passwords can be broken in only a few seconds. Passwords that use simple names years or easy words are not safe for cloud accounts.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What to do<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use a password that has at least 16 characters.<\/li>\n\n\n\n<li>Use capital letters, small letters numbers and symbols together.<\/li>\n\n\n\n<li>Do not use your name, birthday mobile number or easy words in passwords.<\/li>\n\n\n\n<li>Never use one password for many accounts because one leaked password can put all accounts in danger.<\/li>\n\n\n\n<li>Use a password manager to create strong passwords and keep them safe.<\/li>\n\n\n\n<li>Change passwords again and again especially for admin accounts. Changing passwords every 90 days is a good safety habit for businesses.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Real example<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In 2022 a healthcare company faced a big cloud security attack because an admin account used the password \u201cWelcome2022.\u201d The password was very easy because it used the company name and year. Hackers used automatic password tools and broke the password in less than three minutes. After this attack the company lost important data and faced serious problems.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Following simple cloud security tips like using strong passwords, safe login methods and changing passwords often can help businesses stay safe from these easy attacks.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2. A Password Alone Is Not Enough Anymore \u2014 Add a Second Lock Right Now<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A strong password alone is no longer enough in 2026. You need another layer of protection.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Multi-factor authentication (MFA) verifies your identity in two ways. One factor is something you know, like a password. The second factor is something you have, such as a mobile device, authentication app, or hardware security key. Even if attackers steal your password, they still cannot access your account without the second verification step.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How MFA works in practice<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The most common MFA method is receiving a one-time code through SMS. While this is better than using only a password, SMS authentication can still be vulnerable to SIM-swapping attacks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A safer option is using authenticator apps like Google Authenticator, Microsoft Authenticator, or Authy. These apps generate secure time-based codes directly on your device.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The strongest option is using a hardware security key such as YubiKey. You physically connect or tap the key during login, making account compromise extremely difficult.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Where to enable MFA<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Enable MFA on every account connected to your cloud infrastructure, including:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>AWS, Azure, and Google Cloud accounts<\/li>\n\n\n\n<li>Email accounts<\/li>\n\n\n\n<li>Developer platforms like GitHub and GitLab<\/li>\n\n\n\n<li>CI\/CD tools<\/li>\n\n\n\n<li>VPNs<\/li>\n\n\n\n<li>Internal admin dashboards<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Pay extra attention to root and administrator accounts because they control your entire cloud environment.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>The numbers<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Microsoft research shows that MFA blocks more than 99.9% of automated account compromise attempts. Among all modern <strong>cloud security tips<\/strong>, enabling MFA remains one of the most effective and affordable security measures any organization can implement.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3. Not Everyone on Your Team Needs the Keys to Everything \u2014 Limit Access on Purpose<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Not everyone in your organization needs access to everything. In fact, most people need access to very little.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The principle of least privilege means giving users systems and apps only the access they need to do their job. They should not get extra access.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Why over permissioning is dangerous<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">When you give too much access you create more risk. If an account with too much power gets hacked through phishing a weak password or a stolen device the attacker gets all that power too. Less access means less damage.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The same rule is true for apps and services. An app that reads data from one database does not need permission to change data in another database. A service that sends emails does not need access to your storage files.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How to implement least privilege<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Start with a check of all accounts and access. Look at your cloud system and see who can use what. You will often find old accounts with extra roles and permissions that were given for a short time but never removed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For human users, give roles based on their job. Cloud platforms already have ready roles for common jobs. Start with those roles and change them only when needed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For service accounts and apps create separate accounts with only the access they truly need. Never use an admin account to run automatic tasks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Review and clean up access quarterly. People change roles. People leave. Projects end. Access should change with them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Set up access expiration. For temporary projects or contractors, use time-limited access that automatically revokes itself after a set date.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>A practical example<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A company running on AWS had a developer account with full S3 access \u2014 all buckets, read and write. When that developer&#8217;s laptop was stolen and their credentials were compromised, the attacker downloaded 200GB of customer data. If that account had been scoped to only the two buckets the developer actually needed, the damage would have been near zero.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4. Even If Your Data Gets Stolen, Encryption Makes It Completely Useless to Attackers<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Even if your data gets stolen, encryption can make it useless for attackers. Encryption changes your data into secret code that people cannot read. Only the right key can open and read that data. If an attacker gets your data but does not have the key the data is of no use.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There are two times when your data must be protected with encryption.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Encryption at rest<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This protects data while it is saved in systems like databases, files storage and backups. Many cloud services turn on encryption by default but you should still check your settings and know who controls the keys.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cloud companies give special tools to manage encryption keys. These tools keep your keys safe and separate from your data. You should use these tools to protect your information.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you want the highest level of safety use customer managed keys. This means you control the keys and not the cloud company. Even if the cloud system gets hacked your data will still stay safe.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Encryption in transit<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This protects data as it moves between systems \u2014 from a browser to your app, between microservices, between your cloud and an external API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Always use TLS 1.2 or TLS 1.3 for all connections. HTTP without S is unacceptable for anything involving sensitive data. Check that your load balancers, APIs, and internal service connections all enforce encrypted communication.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Key management<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Encryption is only as strong as your key management. If someone gets your encryption keys, they can decrypt everything. Never store keys next to the data they protect. Rotate keys periodically. Use separate keys for different data classifications.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>5. You Cannot Stop a Breach You Never See Coming \u2014 Set Up Continuous Monitoring Today<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Security is not a one-time setup. It is an ongoing vigilance.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Most companies find out about hacks very late. Many times they know after many weeks or even months. Studies show that companies take about 207 days to find a cloud breach. That is almost seven months of an attacker staying inside the system without being noticed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Continuous monitoring can reduce this time a lot.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What to monitor<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Login events like successful logins and failed logins. Watch for logins from strange places, strange times or many failed attempts.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Setting changes like who changed settings in your cloud system. Watch for new security rules, new user accounts, changed permissions or logging turned off.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Data access patterns like very large downloads or access to sensitive data by accounts that do not usually use it. Also watch for data being sent to outside locations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Network traffic like unknown connections leaving your system traffic going to harmful addresses or very large amounts of data moving out.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Tools available<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">All big cloud companies give built in monitoring tools. These tools record activity and help find threats. They watch your system and warn you when something looks unsafe.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For one clear view you can use special security platforms. These platforms collect logs from many systems and show strange activity in one place.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Setting up alerts<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">First understand what normal activity looks like in your system. Then create alerts when something different happens. A worker who logs in during the day from one city but suddenly logs in at night from another country should be checked. An account that suddenly downloads 50GB of data when it usually downloads only 1GB should also be checked.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Start with very important alerts like admin account logins security protection turned off new admin accounts created or private data made public.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>6. Every Unpatched System Is an Open Invitation \u2014 Patch Before Attackers Walk Through<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">New security problems in software are found all the time. When a company releases a patch it means there was a weakness in the software. Attackers quickly search for systems that did not install the patch yet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The time between patch release and patch install is a very dangerous time in security.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How quickly should you patch<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For very serious problems, fix them within 24 to 48 hours. For high level problems, fix them within 7 days. For medium level problems, fix them within 30 days.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This may sound very fast but it is very important for safety.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In 2017 a big company data breach exposed the personal data of 147 million people. A fix for the problem was ready two months before the attack. But the company never installed the patch.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What needs patching<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Operating systems on cloud machines. Container images. App libraries and dependencies. Third party tools and plugins. Cloud system agents. Database software.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Any system that runs software can have security problems. Every system needs updates.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How to make patching manageable<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use automatic patch updates when possible. Many cloud tools can install updates on a set schedule without manual work.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For app libraries use tools that check for updates and send update requests automatically when a new version is ready.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Keep a list of all software in your system so you know what is running. You cannot update software if you do not know it exists.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Remove software and services that you do not use. Fewer systems mean fewer security risks to manage.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>7. A Backup Nobody Has Tested Is Just False Hope \u2014 Here Is How to Do It Right<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A backup is useful only when you can restore your data from it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ransomware attacks are increasing in cloud systems. In these attacks hackers try to find backups first and then delete or lock them. If your backups are in the same place as your main data one attack can destroy everything.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>The 3 2 1 backup rule<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Keep 3 copies of your data. Store them in 2 different types of storage. Keep 1 copy in a different place or separate account.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In cloud systems this means your main data in your main account, one backup in another region and one backup in a totally different cloud account with separate login details.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Immutable backups<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The best protection from ransomware is immutable backups. This means backups that cannot be changed or deleted for a fixed time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cloud services provide special storage options where backups are locked.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Even if a hacker gets access to your main account they cannot delete or change these locked backups.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Test your backups<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Schedule restoration tests every quarter. Pick a random backup. Restore it to a test environment. Verify the data is intact and applications work correctly. Measure how long it takes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This serves two purposes: it confirms your backups actually work, and it tells you your recovery time \u2014 which you need to know before a crisis, not during one.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Document your recovery process step by step. In an incident, you want people following a clear checklist, not figuring things out under pressure.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>8. APIs Are the Side Door Hackers Love Most \u2014 Lock Them Down Before Someone Slips Through<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">APIs are the nervous system of modern cloud applications. They connect your services, power your mobile apps, let third parties integrate with your platform. They are also consistently one of the most exploited attack surfaces.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The OWASP API Security Top 10 \u2014 a definitive guide to API vulnerabilities \u2014 identifies broken authentication, excessive data exposure, and lack of rate limiting as the most common issues.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Authentication and authorization<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Every API endpoint should require authentication. No exceptions. Use industry standards like OAuth 2.0 with JWT tokens for user-facing APIs. Use API keys with strict scopes for service-to-service communication.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Apply authorization at the data level. A user authenticated to your API should only see their own data, not everybody&#8217;s data. This kind of vulnerability \u2014 called BOLA (Broken Object Level Authorization) \u2014 is the most common API flaw found in security audits.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Rate limiting and throttling<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Without rate limiting, attackers can hammer your API with thousands of requests per second. This can be used to brute-force authentication, scrape sensitive data, or take your service down.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Set rate limits per user, per IP, and per API key. Alert when limits are consistently being hit.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Input validation<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Never trust data coming into your API. Validate every field. Reject unexpected inputs. Use parameterized queries to prevent SQL injection. Sanitize inputs to prevent script injection.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>API inventory and monitoring<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Maintain a complete inventory of all your APIs \u2014 internal and external. Unofficial, undocumented APIs are common and dangerous. They tend to lack proper security controls because nobody is formally responsible for them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Log all API calls with timestamps, user identities, IP addresses, and response codes. Review logs for unusual patterns. A single account calling a sensitive endpoint thousands of times deserves attention.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Run regular API security testing. Tools like OWASP ZAP and Postman can automate many checks.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>9. Your Team Is Both Your Strongest Asset and Your Biggest Security Risk \u2014 Train Them Well<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Technology alone cannot protect you. Your people interact with your cloud environment every day. One wrong click can bypass every technical control you have in place.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In 2025, phishing remained the initial attack vector in over 36% of cloud breaches. These are not crude, obviously suspicious emails. Modern phishing emails are carefully crafted, personalized, and designed to create urgency.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Attackers research your company. They know who your CEO is. They know what tools you use. They send emails that look like they came from your cloud provider saying your account is about to be suspended. Or from HR with a link to open enrollment. One click and credentials are stolen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What training should cover<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Phishing awareness means learning how to find fake emails. You should check if the email looks strange or unsafe. Always check the sender before trusting it. If something feels wrong do not click it. Use real examples to understand better. Companies also send fake test emails to see who clicks on them and then give extra training.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Password hygiene means using passwords in a safe way. Password managers help you create and store strong passwords. Never use the same password everywhere. If you think your password is stolen, change it immediately.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Safe handling of credentials means never sharing your passwords with anyone. Do not paste passwords in chat tools. Do not save them in files or code. Keep them private always.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Incident reporting means telling your team if something looks suspicious. It should be easy and safe to report problems. There should be no blame or punishment. Everyone should feel free to report issues.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Device security means keeping your work device safe. Lock your screen when you leave your system. If your device is lost or stolen report it immediately. Do not use personal devices for work without permission.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How to make training stick<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Short training is better than long training. Small sessions every month work better than one long session in a year.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Training should match the job role. Different people need different lessons based on their work.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Regular tests are important. Fake phishing emails should be sent every few months to check awareness. Track results and improve over time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Security culture starts from leaders. If leaders take security seriously others will also follow.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>10. A Breach Will Happen One Day \u2014 Your Incident Response Plan Is What Saves You<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Even with all these controls in place, something will eventually go wrong. A misconfiguration will slip through. An attacker will find a gap. An employee will click something they should not have. openly, everyone else follows<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What separates companies that recover quickly from those that suffer catastrophic damage is not whether they got breached \u2014 it is how prepared they were when it happened.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An incident response plan is your documented playbook for handling security incidents. It removes confusion, reduces response time, and limits damage.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>The six phases of incident response<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Preparation<\/strong> \u2014 Build the plan before you need it. Define roles and responsibilities. Make sure everyone knows what to do. Have contact lists ready. Set up the tools you will need.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Detection and Analysis<\/strong> \u2014 How do you find out an incident is happening? What are the initial steps to understand the scope? Who gets notified and in what order?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Containment<\/strong> \u2014 How do you stop the incident from spreading? Do you isolate compromised systems? Rotate credentials? Block suspicious IP addresses? Short-term containment is about stopping the bleeding. Long-term containment is about maintaining operations while you investigate.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Eradication<\/strong> \u2014 Remove the attacker from your environment. Close the vulnerability they used. Verify no backdoors were left behind.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Recovery<\/strong> \u2014 Restore normal operations. Bring systems back online carefully. Verify integrity before reconnecting to production.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Post-Incident Review<\/strong> \u2014 What happened? How did the attacker get in? What detection failures allowed them to operate undetected? What would you do differently? This phase is where security gets better over time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Practicing the plan<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Writing a plan is not enough. Practice it. Run tabletop exercises where you walk through a hypothetical scenario \u2014 a ransomware attack, a credential compromise, a data leak \u2014 and talk through the response.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then run simulations where you actually execute parts of the plan. Rotate credentials. Isolate a system. Restore from backup. Find out what is harder than expected before a real incident forces your hand.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Review and update the plan at least annually, and after any significant change to your cloud environment or after any real incident.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What to include in the plan<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Contact list for the response team, cloud provider support, legal counsel, PR<\/li>\n\n\n\n<li>Classification criteria \u2014 what counts as a minor incident vs. a major breach<\/li>\n\n\n\n<li>Decision tree for common incident types<\/li>\n\n\n\n<li>Communication templates for internal notification and external disclosure<\/li>\n\n\n\n<li>Regulatory reporting requirements and timelines (GDPR 72-hour rule, for example)<\/li>\n\n\n\n<li>Backup and recovery procedures<\/li>\n\n\n\n<li>Post-incident review template<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Bonus: Key Principles to Keep in Mind<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Beyond these ten strategies, there are a few broader principles that can strengthen your overall cloud protection strategy. Understanding these concepts will help you apply the right <strong>cloud security tips<\/strong> more effectively across your organization.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Shared responsibility model<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cloud providers are responsible for securing the infrastructure itself, but you are responsible for securing everything you place inside the cloud \u2014 including your data, user access, configurations, and applications. Many organizations mistakenly assume that the cloud provider handles all security tasks. In reality, misconfigured storage, weak access controls, and exposed applications are still the customer\u2019s responsibility.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Zero trust<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Traditional security models followed the idea of \u201ctrust but verify.\u201d Modern cloud environments now follow a zero-trust approach, which means \u201cnever trust, always verify.\u201d No user, device, or service should receive automatic trust simply because it exists inside the network. Every access request should be authenticated, validated, and monitored continuously.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Security as an ongoing process<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cloud security is not a one-time project. Threats evolve constantly, and your cloud infrastructure changes over time as your business grows. Regular audits, updates, monitoring, employee awareness, and continuous improvements are essential parts of long-term security management.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Defense in depth<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Never rely on a single security control. Strong protection comes from layering multiple defenses together. Passwords, MFA, encryption, monitoring systems, backups, firewalls, and access restrictions work best when combined. One of the most valuable <strong>cloud security tips<\/strong> is to build multiple layers of protection so that if one fails, another still protects your environment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Final Thoughts<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cloud security in 2026 is no longer optional. Cyberattacks are increasing in both volume and sophistication, while the consequences of a data breach continue to grow more severe. Financial losses, legal penalties, operational downtime, and damage to customer trust can affect businesses of every size.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The good news is that the fundamentals still work. Strong authentication, proper access management, encryption, monitoring, regular patching, secure backups, employee training, and incident response planning remain the foundation of effective cloud protection.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">These strategies are not overly complicated or expensive. Most businesses can implement them by consistently following proven <strong>cloud security tips<\/strong> and treating cybersecurity as an ongoing business priority rather than an afterthought.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Start by fixing your weakest area first. Improve one layer at a time. Review your systems regularly and never assume your company is too small to become a target.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In 2026, every organization operating in the cloud faces cyber risks. The businesses that stay secure are the ones that consistently follow best practices, maintain visibility into their systems, and take security seriously every single day.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The cloud computing age has brought many big changes. You can make a server in just a few minutes, store a large amount of data without building physical systems and run your business from a laptop. Cloud computing is flexible, scalable and affordable. But as more businesses move online following the right cloud security tips [&hellip;]<\/p>\n","protected":false},"author":21,"featured_media":15300,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"{\"document\":\"AAAH0ZqklxbtEdATGlQcoAEBAQgASAIISooIAQEIAkJIAK4DAQEIAkJIAK4PAQEIAkJIAJIJAQEIAkJIAIoEAQEIAEgAEAEBCAJCSACIAwEBCAJCSACWBgEBCAJCSACSCgEBCAJCSACAAwEBCAJCSACyAQEBCAJCSACOCgEBCAJCSACkBwEBCAJCSACGAQEBCABIDgIBAQgCSgCsAQEBCAJKAI4CAQEIAkoAngIBAQgCSgCWAwEBCAJKAJgCAQEIAkrWDLIQAQEIAkJIAIoBAQEIAkJIAJoLAQEIAkJIAKAFAQEIAkJIAIADAQEIAkJIAIQDAQEIAkJIAIYLAQEIAkJIAKQBAQEIAkJIAIIGAQEIAkJIAKoFAQEIAkJIAKIFAQEIAkJIAJgBAQEIAkJIAKwCAQEIAEgOAgEBCAJKAJgBAQEIAkoAKgEBCAJKAKIBAQEIAkoAJAEBCAJKABYBAQgCSu4ErgUBAQgCQkgApAMBAQgCQkgAiAEBAQgCQkgAoggBAQgCQkgAoAMBAQgCQkgArAMBAQgCQkgAsgQBAQgCqAHqAUgAtAgBAQgCQkgAhAcBAQgCogHkAUgAqggBAQgCQkgAlAUBAQgCQkgArgQBAQgCQkgAvAMBAQgCQkgAqAQBAQgCQkgAmAEBAQgCQkgAkAsBAQgCQkgAnAMBAQgCQkgAtAgBAQgCQkgAmgIBAQgCJGZIAKYHAQEIAkJIALQFAQEIAkJIAJQGAQEIAkJIAJwBAQEIAkJIAKYEAQEIAkJIAJgHAQEIAkJIAI4BAQEIAkJIAL4HAQEIAwAITEgApAMBAQgCQkgAigIBAQgCQkgAoAgBAQgCQkgAsgEBAQgCgAEIygFIAJ4FAQEIAkJIAIYFAQEIAkJIAJ4FAQEIAkJIAKIEAQEIAogBygFIAK4GAQEIAkJIALIEAQEIAoQBCM4BSACMDAEBCAJCSACyBAEBCAJCSACcAwEBCAJCSACyBgEBCAJCSAC8AgEBCAKaAQjkAUgAsAYBAQgCQkgAigIBAQgCQkgAhgYBAQgCiAHKAUgAmgYBAQgCQkgAugIBAQgCoAHiAUgApAUBAQgCQkgAvAMBAQgCQkgAkAQBAQgCQkgAmAMBAQgCQkgAjAMBAQgCQkgAjgIBAQgCQkgAjgcBAQgCjAHOAUgAngUBAQgCQkgArAUBAQgChAHGAUgAnAUBAQgCQkgAoAIBAQgCQkgAmAMBAQgCQkgAlAEBAQgCQkgAvgUBAQgCQkgAjgUBAQgCQkgAsgQBAQgCQkgApAMBAQgCQkgAlgcBAQgCQkgAhgYBAQgCQkgAsgEBAQgCQkgAtAYBAQgCQkgAlAgBAQgCQkgAqgEBAQgCQkgAigYBAQgCQkgAkAMBAQgCQkgAkgEBAQgCQkgAvgUBAQgCQkgAqgEBAQgCQkgAhgcBAQgCQkgAqAYBAQgCQkgAiAMBAQgCQkgApgMBAQgCQkgAnAUBAQgCQkgAkgcBAQgCQkgAhgkBAQgCQkgApgEBAQgCQkgAqAoBAQgCQkgAgAcBAQgCQkgArgUBAQgCQkgAqAYBAQgCQkgAtAYBAQgClgHYAUgAlgUBAQgCQkgAkAMBAQgCQkgApAQBAQgCQkgAkgMBAQgCQkgAkgMBAQgCQkgAlAcBAQgCQkgApAUBAQgCQkgAvAQBAQgCQkgAuAEBAQgCQkgAlgYBAQgCQkgAsAUBAQgCQkgAnAkBAQgCQkgAtAQBAQgCQkgArgQBAQgCQkgAlAcBAQgCQkgAmAEBAQgCQkgAqgYBAQgCQkgAqAYBAQgCQkgAmAQBAQgCQkgAqAEBAQgASA4CAQEIAkoAqAIBAQgCSgCmAgEBCAJKAJwBAQEIAkoAoAIBAQgCSgCuAgEBCAJKAIoBAQEIAkrSDZoOAQEIAkJIALwBAQEIAkJIAJwIAQEIAkJIAKgBAQEIAkJIAKgNAQEIAkJIAIYBAQEIAkJIAJ4LAQEIAkJIAK4BAQEIAkJIAL4IAQEIAkJIAJIBAQEIAkJIAJwMAQEIAkJIAI4BAQEIAkJIAKoJAQEIAkJIAJgIAQEIAkJIAIQIAQEIAkJIAJQFAQEIAkJI5IgGAQKakAYCBALmuwaK7gamBLQ2oAK0G6QCtBOaBIRWugSYCyy0CJAJLKoIhhmyAq4MtgSIDiymB7APtgK4DqgCnAm+BLIQuAacEyyuBr4GLIwMvga2BKgMLLAGuAssiAcuqgMspAWoEKYElgwsngW4ByycBaAJrgKUFL4ElhCMA4IShAOUDKwCnAeEA4wVgAWKGoADgCwslgWKEKwEihaSA\/jpDEIAhsMG0O4GAhqIeQQCrjrcCLLaDQEBCAMACExI1gMC\/IYOkooOBALCzgbmwAYEArg4BAK8QAQCoDYEAgCCA5jkCwEBCAJKSALS5wum6gvo5wuk5wsC5uoLkjQEAqhGBAKy6QSySJJStkeoRZJc3p4HBAKuggiSjAIGAvrCDZj9DQEBCAJCSOr0De4IkIsOAQEIAkJIzosOBAKQkg7ggg6kgg4BAQgCQkjA+g3kCJSQDgEBCAJCSNKQDgQCkJcO5p4HLIQSLPzwBgQCupIO8PcNtPcNAQEIAkJI1PAN3gcEApT3Bp4ihuwG2usGruQG5OsNBAK4+Q3k7A0EAqbsDfzzBoIYrhGO8wUDAOQzAvQGxqUH7ogHBAKQzw\/evQ8EAqC9D+riDdABBAKE5A3s+wiUHpakAoS5BkYC8N4Nju4NAkQIAkTmD64PAkQQAkz48w0IAQiCqweGygamBeYGAwjk9A28+w0BAgoCQgENSvQHAkS4DOb7DdgFkIUOAQIKAghKAQ1KngQCBgIEAwT6BM6FDqqODgECCgJCAQJKCgEITOiODqaXDgECCgJCAQJKCgEI+oEO0AEEAgCkBpyBDgEBCAJKAI4BAQEISAAOAQEIAkrkAQL4hw6Cjw6AAQjqiQ6qiQ7MAQLCjw6ulQ4CTMb\/BobKBsavBvCkB54e6gEEAqj7DQLG9Q2MgwIEAoLyC+yXDLCXDAEBCAJCSO6XDAQCiAXQBZafDAEBCAJCSOzFDAQCktgFhJwCgC8sljDYgAkEAtYHBALKCwQCwBEEAtgiBALcC6rjDQEBCAJCSOjjDQQC0guK8w0BAQgCQkjI8w0EAvgdipUOAQEIAkJIyJUOBALcCaCiDgEBCAJCSOLiBrYHqgMsiCcslg0svA6WLI4VmA+ICsD7CJjrDgEBCAJCSOJvAkTy7A0EAs4tBAKyjg8C9IIP6Bemmg8BAQgCQkjqhAECRNqKDrKUDwEBCAJCSPIFAkT4gg\/GDIirDwEBCAIQUkjuhQgsrA0sqCQsqBKqtQSQugP2pwi+pwjevRKEgw+WnAEDAMABlO4G9LkFmIQHvlSySJJStkeoRZJclmTurQuk9A325A26+Q3wiQcshBIsyM4G2geS9waeIgAspugG0NEGrhHK7AH6mwWO5wSUHpakAvipB4zqDQEAwuYNnvYNlAmaCfL4DYKPDtQwLMavBvCkB54evOcBmpIM7OUGhJwCgC8sljD0ywnIC+od3gimuQe2B6oDLIgnLJYNLLwOliyOFZgPiArS9AjqKb4QpogP1u8Hju0G9t4GvPEG6MwGLKgSitcH1RUoACEBJwIoBicAKAAhACgAJwAEAAcAKAInASgAJwCoAAQAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicAKAAnAYcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInACgBJwAHACgCJwEEACcAhwAoAicBBAAnAIcAKAInAQQAJwCHACgCJwEEACcAhwAoAicBBAAnAIcAKAInAQQAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwAoAScABwAoAicBBAAnAIcAKAInAQQAJwCHACgCJwEEACcAhwAoAicBBAAnAIcAKAInAQQAJwCHACgCJwEEACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBACEACgAJwCHACgCJwEEACgAJwCHACgCJwEEAIQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAhAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBACEASgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEAIQBKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAhAAoACcAhwAoAicBBAAoACcAhwAoAicBBACEASgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEAIQBKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAhAAoACcAhwAoAicBBAAoACcAhwAoAicBBACEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEAIQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAhAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBACEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwAoAScABwAoAicBBAAnAIcAKAInAQQAJwCHACgCJwEEACcAhwAoAicBBAAnAIcAKAInAQQAJwCHACgCJwEEACcAhwAoAicBBAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnACgEqAMEAIEAhACBAIQAgQCEAIEAhACBAIQBgQCEAYEAhACBAIQAgQCEAYEAhACBAIQAgQCEAIEAhACBAIQBgQCEAYEAhACBAIQBgQCEAIEBhAKBAIQAgQCEAYEAhAGBAIQAgQCEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEAhAGBAIQAgQCEAIEAhACoACgBxAChAagAIQGoASgAhADHACgCJwEEAIQBKAAnAKgEKADEAKgBKACoASgAqAEoAKgBKAEHACgCJwEEACcAqAGnAAQAqAIoAKgBKACoASgAxAWoASgAxAChAscAKAInAQQAKAAnAIQAxwAoAicBBAAoACcAqAEoAKgAxwAoAicBBAAoACcAhADHACgCJwEEACgAJwCoASgAqADEA6gBKACoAMcAKAInAQQAKAAnAEQAhACoASgAxADBAMQBqAIoAKgCKACoAMQCoQKoAsQAqAEoAKgCKACoAMQAqAEoAKgAxAHBAKgJxACoBSgLxADBAMQAqArHACgDJwEEACgPJwCoA4QAxwAoAycBBACEACgPJwCoCoQAxwAoAycBBAAoBCcAKAqEAMcAKAMnAQQAKAQnACgKxACoASgBBwAoAicBBAAnAIcAKAInAocAKAInAQQAJwCoAacABACEAagAxACoASgAqALEAcEAxAGoASgAqAQoAKgAxwAoAicBBAAoACcAqAEoAIQAxwAoAicBBAAoACcAqAEoAMEAxAOoASgAqAEoAKgBKACoASgAqAEoAMcAKAInAQQAKAAnAKgBKADHACgCJwEEACgAJwCoASgAxwAoAicBBAAoACcAqAEoAMcAKAInAQQAKAAnAMEAxAvHACgCJwEEACgAJwCoBCgAqAEoAKgCxwAoAicBBAAoACcAqALHACgCJwEEACgAJwCoAoQAxwAoAicBBACEACgAJwDEAsEAxAKoASgAxACo8\/gE4egEc3RhdGV2ZXJzaW9uZG9jdW1lbnRkYXRlZG9jdW1lbnRzdGF0dXNkb2N1bWVudHRpdGxlZG9jdW1lbnRjb250ZW50ZG9jdW1lbnRleGNlcnB0ZG9jdW1lbnRhdXRob3Jkb2N1bWVudGZlYXR1cmVkX21lZGlhZG9jdW1lbnRjb21tZW50X3N0YXR1c2RvY3VtZW50cGluZ19zdGF0dXNkb2N1bWVudHN0aWNreWRvY3VtZW50dGVtcGxhdGVkb2N1bWVudGZvcm1hdGRvY3VtZW50bWV0YWZvb3Rub3Rlc2RvY3VtZW50Y2F0ZWdvcmllc2RvY3VtZW50dGFnc2RvY3VtZW50YmxvY2tzMTAgQ2xvdWQgU2VjdXJpdHkgVGlwcyB0byBTdG9wIEJyZWFjaGVzIGluIDIwMjZjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRkcm9wQ2FwaW5uZXJCbG9ja3NUaGUgY2xvdWQgY29tcHV0aW5nIGFnZSBoYXMgYnJvdWdodCBtYW55IGJpZyBjaGFuZ2VzLiBZb3UgY2FuIG1ha2UgYSBzZXJ2ZXIgaW4ganVzdCBhIGZldyBtaW51dGVzLCBzdG9yZSBhIGxhcmdlIGFtb3VudCBvZiBkYXRhIHdpdGhvdXQgYnVpbGRpbmcgcGh5c2ljYWwgc3lzdGVtcyBhbmQgcnVuIHlvdXIgYnVzaW5lc3MgZnJvbSBhIGxhcHRvcC4gQ2xvdWQgY29tcHV0aW5nIGlzIGZsZXhpYmxlLCBzY2FsYWJsZSBhbmQgYWZmb3JkYWJsZS5jbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRCdXQgYXMgbW9yZSBidXNpbmVzc2VzIG1vdmUgb25saW5lIGZvbGxvd2luZyB0aGUgcmlnaHQgY2xvdWQgc2VjdXJpdHkgdGlwcyBoYXMgYmVjb21lIG1vcmUgaW1wb3J0YW50IHRoYW4gZXZlci5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRXaGVuIGEgY29tcGFueSB0cmFuc2ZlcnMgdG8gdGhlIGNsb3VkLCBpdHMgcHJpY2VsZXNzIGFuZCBzZW5zaXRpdmUgaW5mb3JtYXRpb24gZ29lcyBpbnRvIGFuIGVjb3N5c3RlbSB0aGF0IHRoZSBjb21wYW55IGRvZXMgbm90IGZ1bGx5IGNvbnRyb2wuIEF0dGFja2VycyBhbHJlYWR5IGtub3cgYWJvdXQgdGhpcyB3ZWFrbmVzcy4gSW4gMjAyMyA4MiUgb2YgYWxsIGRhdGEgYnJlYWNoZXMgaGFwcGVuZWQgaW4gdGhlIGNsb3VkIGFjY29yZGluZyB0byBJQk3igJlzIENvc3Qgb2YgYSBEYXRhIEJyZWFjaCBSZXBvcnQuIE9uIGF2ZXJhZ2UgZXZlcnkgYXR0YWNrIGNhdXNlZCBsb3NzZXMgb2YgbW9yZSB0aGFuICQ0LjQ1IG1pbGxpb24uIEluIHRoZSB5ZWFycyBhZnRlciB0aGF0IHRoaXMgbnVtYmVyIGtlcHQgZ3Jvd2luZyBhbmQgYnkgMjAyNiBjbG91ZCBzeXN0ZW1zIGJlY2FtZSBvbmUgb2YgdGhlIGJpZ2dlc3QgdGFyZ2V0cyBmb3IgaGFja2VycyBhcm91bmQgdGhlIHdvcmxkLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEJ1dCB0aGVyZSBpcyBhbHNvIGdvb2QgbmV3cy4gTW9zdCBhdHRhY2tzIGhhcHBlbiBub3QgYmVjYXVzZSBoYWNrZXJzIHVzZSB2ZXJ5IGFkdmFuY2VkIHRyaWNrcyBidXQgYmVjYXVzZSBwZW9wbGUgbWFrZSBzaW1wbGUgbWlzdGFrZXMgYW5kIHVzZSB3ZWFrIHNlY3VyaXR5LiBCeSBmb2xsb3dpbmcgdGhlIHJpZ2h0IGNsb3VkIHNlY3VyaXR5IHRpcHMgYnVzaW5lc3NlcyBvZiBhbGwgc2l6ZXMgY2FuIGxvd2VyIHJpc2tzIGFuZCBwcm90ZWN0IHRoZWlyIGltcG9ydGFudCBkYXRhIGluIGEgYmV0dGVyIHdheS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaGlzIGd1aWRlIGdpdmVzIHRlbiBzaW1wbGUgY2xvdWQgc2VjdXJpdHkgdGlwcyB0aGF0IGFyZSBlYXN5IHRvIGZvbGxvdyBlYXN5IHRvIHVzZSBhbmQgcHJvdmVuIHRvIHdvcmsgZm9yIG1vZGVybiBidXNpbmVzc2VzLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzYWx0Y2FwdGlvbmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz4xLiBZb3VyIFBhc3N3b3JkIElzIHRoZSBGcm9udCBEb29yIHRvIFlvdXIgQ2xvdWQg4oCUIFN0b3AgTGVhdmluZyBJdCBVbmxvY2tlZDwvc3Ryb25nPmxldmVsaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRPbmUgb2YgdGhlIG1vc3QgaW1wb3J0YW50IDxzdHJvbmc+Y2xvdWQgc2VjdXJpdHkgdGlwczwvc3Ryb25nPiBpcyBzdXJwcmlzaW5nbHkgc2ltcGxlOiB1c2Ugc3Ryb25nIHBhc3N3b3Jkcy4gTGV0IHVzIHN0YXJ0IHdpdGggYSB2ZXJ5IGJhc2ljIG1pc3Rha2UgdGhhdCBtYW55IHBlb3BsZSBhbmQgZXZlbiBjb21wYW5pZXMgc3RpbGwgbWFrZS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRJbiAyMDI0LCBvbmUgb2YgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBwYXNzd29yZHMgaW4gY29tcGFueSBoYWNrcyB3YXMgc3RpbGwg4oCcMTIzNDU2LuKAnSBUaGlzIGlzIG5vdCBhIGpva2UuIFJlYWwgYnVzaW5lc3NlcyB3aXRoIHJlYWwgY3VzdG9tZXIgZGF0YSB3ZXJlIHVzaW5nIGV4dHJlbWVseSB3ZWFrIHBhc3N3b3Jkcy4gWW91ciBwYXNzd29yZCBpcyB0aGUgdmVyeSBmaXJzdCB0aGluZyBwcm90ZWN0aW5nIHlvdXIgY2xvdWQgZW52aXJvbm1lbnQuIElmIHlvdXIgcGFzc3dvcmQgaXMgd2VhaywgeW91ciBkYXRhIGNhbiBiZSBzdG9sZW4gd2l0aGluIG1pbnV0ZXMuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50UGFzc3dvcmRzIGFyZSB5b3VyIGZpcnN0IGxpbmUgb2YgZGVmZW5zZS4gSWYgdGhleSBhcmUgd2Vhaywgbm90aGluZyBlbHNlIHJlYWxseSBtYXR0ZXJzLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+V2h5IHdlYWsgcGFzc3dvcmRzIGFyZSBkYW5nZXJvdXM8L3N0cm9uZz5sZXZlbGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50QXR0YWNrZXJzIHVzZSBhIG1ldGhvZCBjYWxsZWQgY3JlZGVudGlhbCBzdHVmZmluZy4gSW4gdGhpcyBhdHRhY2sgaGFja2VycyB0YWtlIG9sZCBsZWFrZWQgcGFzc3dvcmRzIGZyb20gZGF0YSBicmVhY2hlcyBhbmQgdHJ5IHRoZW0gb24gY2xvdWQgbG9naW4gcGFnZXMuIEJpbGxpb25zIG9mIHN0b2xlbiBwYXNzd29yZHMgYXJlIGFscmVhZHkgc2hhcmVkIG9uIHRoZSBkYXJrIHdlYi4gSWYgeW91IHVzZSB0aGUgc2FtZSBwYXNzd29yZCBvbiBtYW55IGFjY291bnRzIHRoZW4geW91ciBjbG91ZCBhY2NvdW50IGNhbiBiZWNvbWUgdW5zYWZlIHZlcnkgZWFzaWx5LmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEhhY2tlcnMgYWxzbyB1c2Ugc21hcnQgY29tcHV0ZXIgdG9vbHMgdGhhdCBjYW4gdHJ5IHRob3VzYW5kcyBvZiBwYXNzd29yZHMgZXZlcnkgc2Vjb25kLiBTbWFsbCBhbmQgZWFzeSBwYXNzd29yZHMgY2FuIGJlIGJyb2tlbiBpbiBvbmx5IGEgZmV3IHNlY29uZHMuIFBhc3N3b3JkcyB0aGF0IHVzZSBzaW1wbGUgbmFtZXMgeWVhcnMgb3IgZWFzeSB3b3JkcyBhcmUgbm90IHNhZmUgZm9yIGNsb3VkIGFjY291bnRzLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+V2hhdCB0byBkbzwvc3Ryb25nPmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzb3JkZXJlZHZhbHVlc2lubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VXNlIGEgcGFzc3dvcmQgdGhhdCBoYXMgYXQgbGVhc3QgMTYgY2hhcmFjdGVycy5pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFVzZSBjYXBpdGFsIGxldHRlcnMsIHNtYWxsIGxldHRlcnMgbnVtYmVycyBhbmQgc3ltYm9scyB0b2dldGhlci5pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudERvIG5vdCB1c2UgeW91ciBuYW1lLCBiaXJ0aGRheSBtb2JpbGUgbnVtYmVyIG9yIGVhc3kgd29yZHMgaW4gcGFzc3dvcmRzLmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50TmV2ZXIgdXNlIG9uZSBwYXNzd29yZCBmb3IgbWFueSBhY2NvdW50cyBiZWNhdXNlIG9uZSBsZWFrZWQgcGFzc3dvcmQgY2FuIHB1dCBhbGwgYWNjb3VudHMgaW4gZGFuZ2VyLmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VXNlIGEgcGFzc3dvcmQgbWFuYWdlciB0byBjcmVhdGUgc3Ryb25nIHBhc3N3b3JkcyBhbmQga2VlcCB0aGVtIHNhZmUuaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRDaGFuZ2UgcGFzc3dvcmRzIGFnYWluIGFuZCBhZ2FpbiBlc3BlY2lhbGx5IGZvciBhZG1pbiBhY2NvdW50cy4gQ2hhbmdpbmcgcGFzc3dvcmRzIGV2ZXJ5IDkwIGRheXMgaXMgYSBnb29kIHNhZmV0eSBoYWJpdCBmb3IgYnVzaW5lc3Nlcy5pbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+UmVhbCBleGFtcGxlPC9zdHJvbmc+ZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50SW4gMjAyMiBhIGhlYWx0aGNhcmUgY29tcGFueSBmYWNlZCBhIGJpZyBjbG91ZCBzZWN1cml0eSBhdHRhY2sgYmVjYXVzZSBhbiBhZG1pbiBhY2NvdW50IHVzZWQgdGhlIHBhc3N3b3JkIOKAnFdlbGNvbWUyMDIyLuKAnSBUaGUgcGFzc3dvcmQgd2FzIHZlcnkgZWFzeSBiZWNhdXNlIGl0IHVzZWQgdGhlIGNvbXBhbnkgbmFtZSBhbmQgeWVhci4gSGFja2VycyB1c2VkIGF1dG9tYXRpYyBwYXNzd29yZCB0b29scyBhbmQgYnJva2UgdGhlIHBhc3N3b3JkIGluIGxlc3MgdGhhbiB0aHJlZSBtaW51dGVzLiBBZnRlciB0aGlzIGF0dGFjayB0aGUgY29tcGFueSBsb3N0IGltcG9ydGFudCBkYXRhIGFuZCBmYWNlZCBzZXJpb3VzIHByb2JsZW1zLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEZvbGxvd2luZyBzaW1wbGUgY2xvdWQgc2VjdXJpdHkgdGlwcyBsaWtlIHVzaW5nIHN0cm9uZyBwYXNzd29yZHMsIHNhZmUgbG9naW4gbWV0aG9kcyBhbmQgY2hhbmdpbmcgcGFzc3dvcmRzIG9mdGVuIGNhbiBoZWxwIGJ1c2luZXNzZXMgc3RheSBzYWZlIGZyb20gdGhlc2UgZWFzeSBhdHRhY2tzLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+Mi4gQSBQYXNzd29yZCBBbG9uZSBJcyBOb3QgRW5vdWdoIEFueW1vcmUg4oCUIEFkZCBhIFNlY29uZCBMb2NrIFJpZ2h0IE5vdzwvc3Ryb25nPmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEEgc3Ryb25nIHBhc3N3b3JkIGFsb25lIGlzIG5vIGxvbmdlciBlbm91Z2ggaW4gMjAyNi4gWW91IG5lZWQgYW5vdGhlciBsYXllciBvZiBwcm90ZWN0aW9uLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudE11bHRpLWZhY3RvciBhdXRoZW50aWNhdGlvbiAoTUZBKSB2ZXJpZmllcyB5b3VyIGlkZW50aXR5IGluIHR3byB3YXlzLiBPbmUgZmFjdG9yIGlzIHNvbWV0aGluZyB5b3Uga25vdywgbGlrZSBhIHBhc3N3b3JkLiBUaGUgc2Vjb25kIGZhY3RvciBpcyBzb21ldGhpbmcgeW91IGhhdmUsIHN1Y2ggYXMgYSBtb2JpbGUgZGV2aWNlLCBhdXRoZW50aWNhdGlvbiBhcHAsIG9yIGhhcmR3YXJlIHNlY3VyaXR5IGtleS4gRXZlbiBpZiBhdHRhY2tlcnMgc3RlYWwgeW91ciBwYXNzd29yZCwgdGhleSBzdGlsbCBjYW5ub3QgYWNjZXNzIHlvdXIgYWNjb3VudCB3aXRob3V0IHRoZSBzZWNvbmQgdmVyaWZpY2F0aW9uIHN0ZXAuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5Ib3cgTUZBIHdvcmtzIGluIHByYWN0aWNlPC9zdHJvbmc+bGV2ZWxpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFRoZSBtb3N0IGNvbW1vbiBNRkEgbWV0aG9kIGlzIHJlY2VpdmluZyBhIG9uZS10aW1lIGNvZGUgdGhyb3VnaCBTTVMuIFdoaWxlIHRoaXMgaXMgYmV0dGVyIHRoYW4gdXNpbmcgb25seSBhIHBhc3N3b3JkLCBTTVMgYXV0aGVudGljYXRpb24gY2FuIHN0aWxsIGJlIHZ1bG5lcmFibGUgdG8gU0lNLXN3YXBwaW5nIGF0dGFja3MuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50QSBzYWZlciBvcHRpb24gaXMgdXNpbmcgYXV0aGVudGljYXRvciBhcHBzIGxpa2UgR29vZ2xlIEF1dGhlbnRpY2F0b3IsIE1pY3Jvc29mdCBBdXRoZW50aWNhdG9yLCBvciBBdXRoeS4gVGhlc2UgYXBwcyBnZW5lcmF0ZSBzZWN1cmUgdGltZS1iYXNlZCBjb2RlcyBkaXJlY3RseSBvbiB5b3VyIGRldmljZS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaGUgc3Ryb25nZXN0IG9wdGlvbiBpcyB1c2luZyBhIGhhcmR3YXJlIHNlY3VyaXR5IGtleSBzdWNoIGFzIFl1YmlLZXkuIFlvdSBwaHlzaWNhbGx5IGNvbm5lY3Qgb3IgdGFwIHRoZSBrZXkgZHVyaW5nIGxvZ2luLCBtYWtpbmcgYWNjb3VudCBjb21wcm9taXNlIGV4dHJlbWVseSBkaWZmaWN1bHQuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5XaGVyZSB0byBlbmFibGUgTUZBPC9zdHJvbmc+bGV2ZWxpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEVuYWJsZSBNRkEgb24gZXZlcnkgYWNjb3VudCBjb25uZWN0ZWQgdG8geW91ciBjbG91ZCBpbmZyYXN0cnVjdHVyZSwgaW5jbHVkaW5nOmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzb3JkZXJlZHZhbHVlc2lubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50QVdTLCBBenVyZSwgYW5kIEdvb2dsZSBDbG91ZCBhY2NvdW50c2lubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50RW1haWwgYWNjb3VudHNpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudERldmVsb3BlciBwbGF0Zm9ybXMgbGlrZSBHaXRIdWIgYW5kIEdpdExhYmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50Q0kvQ0QgdG9vbHNpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFZQTnNpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEludGVybmFsIGFkbWluIGRhc2hib2FyZHNpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFBheSBleHRyYSBhdHRlbnRpb24gdG8gcm9vdCBhbmQgYWRtaW5pc3RyYXRvciBhY2NvdW50cyBiZWNhdXNlIHRoZXkgY29udHJvbCB5b3VyIGVudGlyZSBjbG91ZCBlbnZpcm9ubWVudC5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPlRoZSBudW1iZXJzPC9zdHJvbmc+bGV2ZWxpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudE1pY3Jvc29mdCByZXNlYXJjaCBzaG93cyB0aGF0IE1GQSBibG9ja3MgbW9yZSB0aGFuIDk5LjklIG9mIGF1dG9tYXRlZCBhY2NvdW50IGNvbXByb21pc2UgYXR0ZW1wdHMuIEFtb25nIGFsbCBtb2Rlcm4gPHN0cm9uZz5jbG91ZCBzZWN1cml0eSB0aXBzPC9zdHJvbmc+LCBlbmFibGluZyBNRkEgcmVtYWlucyBvbmUgb2YgdGhlIG1vc3QgZWZmZWN0aXZlIGFuZCBhZmZvcmRhYmxlIHNlY3VyaXR5IG1lYXN1cmVzIGFueSBvcmdhbml6YXRpb24gY2FuIGltcGxlbWVudC5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8YnI+PHN0cm9uZz4zLiBOb3QgRXZlcnlvbmUgb24gWW91ciBUZWFtIE5lZWRzIHRoZSBLZXlzIHRvIEV2ZXJ5dGhpbmcg4oCUIExpbWl0IEFjY2VzcyBvbiBQdXJwb3NlPC9zdHJvbmc+ZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50Tm90IGV2ZXJ5b25lIGluIHlvdXIgb3JnYW5pemF0aW9uIG5lZWRzIGFjY2VzcyB0byBldmVyeXRoaW5nLiBJbiBmYWN0LCBtb3N0IHBlb3BsZSBuZWVkIGFjY2VzcyB0byB2ZXJ5IGxpdHRsZS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaGUgcHJpbmNpcGxlIG9mIGxlYXN0IHByaXZpbGVnZSBtZWFucyBnaXZpbmcgdXNlcnMgc3lzdGVtcyBhbmQgYXBwcyBvbmx5IHRoZSBhY2Nlc3MgdGhleSBuZWVkIHRvIGRvIHRoZWlyIGpvYi4gVGhleSBzaG91bGQgbm90IGdldCBleHRyYSBhY2Nlc3MuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5XaHkgb3ZlciBwZXJtaXNzaW9uaW5nIGlzIGRhbmdlcm91czwvc3Ryb25nPjxicj5XaGVuIHlvdSBnaXZlIHRvbyBtdWNoIGFjY2VzcyB5b3UgY3JlYXRlIG1vcmUgcmlzay4gSWYgYW4gYWNjb3VudCB3aXRoIHRvbyBtdWNoIHBvd2VyIGdldHMgaGFja2VkIHRocm91Z2ggcGhpc2hpbmcgYSB3ZWFrIHBhc3N3b3JkIG9yIGEgc3RvbGVuIGRldmljZSB0aGUgYXR0YWNrZXIgZ2V0cyBhbGwgdGhhdCBwb3dlciB0b28uIExlc3MgYWNjZXNzIG1lYW5zIGxlc3MgZGFtYWdlLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFRoZSBzYW1lIHJ1bGUgaXMgdHJ1ZSBmb3IgYXBwcyBhbmQgc2VydmljZXMuIEFuIGFwcCB0aGF0IHJlYWRzIGRhdGEgZnJvbSBvbmUgZGF0YWJhc2UgZG9lcyBub3QgbmVlZCBwZXJtaXNzaW9uIHRvIGNoYW5nZSBkYXRhIGluIGFub3RoZXIgZGF0YWJhc2UuIEEgc2VydmljZSB0aGF0IHNlbmRzIGVtYWlscyBkb2VzIG5vdCBuZWVkIGFjY2VzcyB0byB5b3VyIHN0b3JhZ2UgZmlsZXMuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5Ib3cgdG8gaW1wbGVtZW50IGxlYXN0IHByaXZpbGVnZTwvc3Ryb25nPjxicj5TdGFydCB3aXRoIGEgY2hlY2sgb2YgYWxsIGFjY291bnRzIGFuZCBhY2Nlc3MuIExvb2sgYXQgeW91ciBjbG91ZCBzeXN0ZW0gYW5kIHNlZSB3aG8gY2FuIHVzZSB3aGF0LiBZb3Ugd2lsbCBvZnRlbiBmaW5kIG9sZCBhY2NvdW50cyB3aXRoIGV4dHJhIHJvbGVzIGFuZCBwZXJtaXNzaW9ucyB0aGF0IHdlcmUgZ2l2ZW4gZm9yIGEgc2hvcnQgdGltZSBidXQgbmV2ZXIgcmVtb3ZlZC5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRGb3IgaHVtYW4gdXNlcnMsIGdpdmUgcm9sZXMgYmFzZWQgb24gdGhlaXIgam9iLiBDbG91ZCBwbGF0Zm9ybXMgYWxyZWFkeSBoYXZlIHJlYWR5IHJvbGVzIGZvciBjb21tb24gam9icy4gU3RhcnQgd2l0aCB0aG9zZSByb2xlcyBhbmQgY2hhbmdlIHRoZW0gb25seSB3aGVuIG5lZWRlZC5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRGb3Igc2VydmljZSBhY2NvdW50cyBhbmQgYXBwcyBjcmVhdGUgc2VwYXJhdGUgYWNjb3VudHMgd2l0aCBvbmx5IHRoZSBhY2Nlc3MgdGhleSB0cnVseSBuZWVkLiBOZXZlciB1c2UgYW4gYWRtaW4gYWNjb3VudCB0byBydW4gYXV0b21hdGljIHRhc2tzLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFJldmlldyBhbmQgY2xlYW4gdXAgYWNjZXNzIHF1YXJ0ZXJseS4gUGVvcGxlIGNoYW5nZSByb2xlcy4gUGVvcGxlIGxlYXZlLiBQcm9qZWN0cyBlbmQuIEFjY2VzcyBzaG91bGQgY2hhbmdlIHdpdGggdGhlbS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRTZXQgdXAgYWNjZXNzIGV4cGlyYXRpb24uIEZvciB0ZW1wb3JhcnkgcHJvamVjdHMgb3IgY29udHJhY3RvcnMsIHVzZSB0aW1lLWxpbWl0ZWQgYWNjZXNzIHRoYXQgYXV0b21hdGljYWxseSByZXZva2VzIGl0c2VsZiBhZnRlciBhIHNldCBkYXRlLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+QSBwcmFjdGljYWwgZXhhbXBsZTwvc3Ryb25nPmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEEgY29tcGFueSBydW5uaW5nIG9uIEFXUyBoYWQgYSBkZXZlbG9wZXIgYWNjb3VudCB3aXRoIGZ1bGwgUzMgYWNjZXNzIOKAlCBhbGwgYnVja2V0cywgcmVhZCBhbmQgd3JpdGUuIFdoZW4gdGhhdCBkZXZlbG9wZXIncyBsYXB0b3Agd2FzIHN0b2xlbiBhbmQgdGhlaXIgY3JlZGVudGlhbHMgd2VyZSBjb21wcm9taXNlZCwgdGhlIGF0dGFja2VyIGRvd25sb2FkZWQgMjAwR0Igb2YgY3VzdG9tZXIgZGF0YS4gSWYgdGhhdCBhY2NvdW50IGhhZCBiZWVuIHNjb3BlZCB0byBvbmx5IHRoZSB0d28gYnVja2V0cyB0aGUgZGV2ZWxvcGVyIGFjdHVhbGx5IG5lZWRlZCwgdGhlIGRhbWFnZSB3b3VsZCBoYXZlIGJlZW4gbmVhciB6ZXJvLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+NC4gRXZlbiBJZiBZb3VyIERhdGEgR2V0cyBTdG9sZW4sIEVuY3J5cHRpb24gTWFrZXMgSXQgQ29tcGxldGVseSBVc2VsZXNzIHRvIEF0dGFja2Vyczwvc3Ryb25nPmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEV2ZW4gaWYgeW91ciBkYXRhIGdldHMgc3RvbGVuLCBlbmNyeXB0aW9uIGNhbiBtYWtlIGl0IHVzZWxlc3MgZm9yIGF0dGFja2Vycy4gRW5jcnlwdGlvbiBjaGFuZ2VzIHlvdXIgZGF0YSBpbnRvIHNlY3JldCBjb2RlIHRoYXQgcGVvcGxlIGNhbm5vdCByZWFkLiBPbmx5IHRoZSByaWdodCBrZXkgY2FuIG9wZW4gYW5kIHJlYWQgdGhhdCBkYXRhLiBJZiBhbiBhdHRhY2tlciBnZXRzIHlvdXIgZGF0YSBidXQgZG9lcyBub3QgaGF2ZSB0aGUga2V5IHRoZSBkYXRhIGlzIG9mIG5vIHVzZS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaGVyZSBhcmUgdHdvIHRpbWVzIHdoZW4geW91ciBkYXRhIG11c3QgYmUgcHJvdGVjdGVkIHdpdGggZW5jcnlwdGlvbi5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRFbmNyeXB0aW9uIGF0IHJlc3Q8YnI+VGhpcyBwcm90ZWN0cyBkYXRhIHdoaWxlIGl0IGlzIHNhdmVkIGluIHN5c3RlbXMgbGlrZSBkYXRhYmFzZXMsIGZpbGVzIHN0b3JhZ2UgYW5kIGJhY2t1cHMuIE1hbnkgY2xvdWQgc2VydmljZXMgdHVybiBvbiBlbmNyeXB0aW9uIGJ5IGRlZmF1bHQgYnV0IHlvdSBzaG91bGQgc3RpbGwgY2hlY2sgeW91ciBzZXR0aW5ncyBhbmQga25vdyB3aG8gY29udHJvbHMgdGhlIGtleXMuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50Q2xvdWQgY29tcGFuaWVzIGdpdmUgc3BlY2lhbCB0b29scyB0byBtYW5hZ2UgZW5jcnlwdGlvbiBrZXlzLiBUaGVzZSB0b29scyBrZWVwIHlvdXIga2V5cyBzYWZlIGFuZCBzZXBhcmF0ZSBmcm9tIHlvdXIgZGF0YS4gWW91IHNob3VsZCB1c2UgdGhlc2UgdG9vbHMgdG8gcHJvdGVjdCB5b3VyIGluZm9ybWF0aW9uLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudElmIHlvdSB3YW50IHRoZSBoaWdoZXN0IGxldmVsIG9mIHNhZmV0eSB1c2UgY3VzdG9tZXIgbWFuYWdlZCBrZXlzLiBUaGlzIG1lYW5zIHlvdSBjb250cm9sIHRoZSBrZXlzIGFuZCBub3QgdGhlIGNsb3VkIGNvbXBhbnkuIEV2ZW4gaWYgdGhlIGNsb3VkIHN5c3RlbSBnZXRzIGhhY2tlZCB5b3VyIGRhdGEgd2lsbCBzdGlsbCBzdGF5IHNhZmUuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5FbmNyeXB0aW9uIGluIHRyYW5zaXQ8L3N0cm9uZz5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaGlzIHByb3RlY3RzIGRhdGEgYXMgaXQgbW92ZXMgYmV0d2VlbiBzeXN0ZW1zIOKAlCBmcm9tIGEgYnJvd3NlciB0byB5b3VyIGFwcCwgYmV0d2VlbiBtaWNyb3NlcnZpY2VzLCBiZXR3ZWVuIHlvdXIgY2xvdWQgYW5kIGFuIGV4dGVybmFsIEFQSS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRBbHdheXMgdXNlIFRMUyAxLjIgb3IgVExTIDEuMyBmb3IgYWxsIGNvbm5lY3Rpb25zLiBIVFRQIHdpdGhvdXQgUyBpcyB1bmFjY2VwdGFibGUgZm9yIGFueXRoaW5nIGludm9sdmluZyBzZW5zaXRpdmUgZGF0YS4gQ2hlY2sgdGhhdCB5b3VyIGxvYWQgYmFsYW5jZXJzLCBBUElzLCBhbmQgaW50ZXJuYWwgc2VydmljZSBjb25uZWN0aW9ucyBhbGwgZW5mb3JjZSBlbmNyeXB0ZWQgY29tbXVuaWNhdGlvbi5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPktleSBtYW5hZ2VtZW50PC9zdHJvbmc+ZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50RW5jcnlwdGlvbiBpcyBvbmx5IGFzIHN0cm9uZyBhcyB5b3VyIGtleSBtYW5hZ2VtZW50LiBJZiBzb21lb25lIGdldHMgeW91ciBlbmNyeXB0aW9uIGtleXMsIHRoZXkgY2FuIGRlY3J5cHQgZXZlcnl0aGluZy4gTmV2ZXIgc3RvcmUga2V5cyBuZXh0IHRvIHRoZSBkYXRhIHRoZXkgcHJvdGVjdC4gUm90YXRlIGtleXMgcGVyaW9kaWNhbGx5LiBVc2Ugc2VwYXJhdGUga2V5cyBmb3IgZGlmZmVyZW50IGRhdGEgY2xhc3NpZmljYXRpb25zLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxicj48c3Ryb25nPjUuIFlvdSBDYW5ub3QgU3RvcCBhIEJyZWFjaCBZb3UgTmV2ZXIgU2VlIENvbWluZyDigJQgU2V0IFVwIENvbnRpbnVvdXMgTW9uaXRvcmluZyBUb2RheTwvc3Ryb25nPmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFNlY3VyaXR5IGlzIG5vdCBhIG9uZS10aW1lIHNldHVwLiBJdCBpcyBhbiBvbmdvaW5nIHZpZ2lsYW5jZS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRNb3N0IGNvbXBhbmllcyBmaW5kIG91dCBhYm91dCBoYWNrcyB2ZXJ5IGxhdGUuIE1hbnkgdGltZXMgdGhleSBrbm93IGFmdGVyIG1hbnkgd2Vla3Mgb3IgZXZlbiBtb250aHMuIFN0dWRpZXMgc2hvdyB0aGF0IGNvbXBhbmllcyB0YWtlIGFib3V0IDIwNyBkYXlzIHRvIGZpbmQgYSBjbG91ZCBicmVhY2guIFRoYXQgaXMgYWxtb3N0IHNldmVuIG1vbnRocyBvZiBhbiBhdHRhY2tlciBzdGF5aW5nIGluc2lkZSB0aGUgc3lzdGVtIHdpdGhvdXQgYmVpbmcgbm90aWNlZC5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRDb250aW51b3VzIG1vbml0b3JpbmcgY2FuIHJlZHVjZSB0aGlzIHRpbWUgYSBsb3QuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5XaGF0IHRvIG1vbml0b3I8L3N0cm9uZz48YnI+TG9naW4gZXZlbnRzIGxpa2Ugc3VjY2Vzc2Z1bCBsb2dpbnMgYW5kIGZhaWxlZCBsb2dpbnMuIFdhdGNoIGZvciBsb2dpbnMgZnJvbSBzdHJhbmdlIHBsYWNlcywgc3RyYW5nZSB0aW1lcyBvciBtYW55IGZhaWxlZCBhdHRlbXB0cy5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRTZXR0aW5nIGNoYW5nZXMgbGlrZSB3aG8gY2hhbmdlZCBzZXR0aW5ncyBpbiB5b3VyIGNsb3VkIHN5c3RlbS4gV2F0Y2ggZm9yIG5ldyBzZWN1cml0eSBydWxlcywgbmV3IHVzZXIgYWNjb3VudHMsIGNoYW5nZWQgcGVybWlzc2lvbnMgb3IgbG9nZ2luZyB0dXJuZWQgb2ZmLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudERhdGEgYWNjZXNzIHBhdHRlcm5zIGxpa2UgdmVyeSBsYXJnZSBkb3dubG9hZHMgb3IgYWNjZXNzIHRvIHNlbnNpdGl2ZSBkYXRhIGJ5IGFjY291bnRzIHRoYXQgZG8gbm90IHVzdWFsbHkgdXNlIGl0LiBBbHNvIHdhdGNoIGZvciBkYXRhIGJlaW5nIHNlbnQgdG8gb3V0c2lkZSBsb2NhdGlvbnMuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50TmV0d29yayB0cmFmZmljIGxpa2UgdW5rbm93biBjb25uZWN0aW9ucyBsZWF2aW5nIHlvdXIgc3lzdGVtIHRyYWZmaWMgZ29pbmcgdG8gaGFybWZ1bCBhZGRyZXNzZXMgb3IgdmVyeSBsYXJnZSBhbW91bnRzIG9mIGRhdGEgbW92aW5nIG91dC5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPlRvb2xzIGF2YWlsYWJsZTwvc3Ryb25nPjxicj5BbGwgYmlnIGNsb3VkIGNvbXBhbmllcyBnaXZlIGJ1aWx0IGluIG1vbml0b3JpbmcgdG9vbHMuIFRoZXNlIHRvb2xzIHJlY29yZCBhY3Rpdml0eSBhbmQgaGVscCBmaW5kIHRocmVhdHMuIFRoZXkgd2F0Y2ggeW91ciBzeXN0ZW0gYW5kIHdhcm4geW91IHdoZW4gc29tZXRoaW5nIGxvb2tzIHVuc2FmZS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRGb3Igb25lIGNsZWFyIHZpZXcgeW91IGNhbiB1c2Ugc3BlY2lhbCBzZWN1cml0eSBwbGF0Zm9ybXMuIFRoZXNlIHBsYXRmb3JtcyBjb2xsZWN0IGxvZ3MgZnJvbSBtYW55IHN5c3RlbXMgYW5kIHNob3cgc3RyYW5nZSBhY3Rpdml0eSBpbiBvbmUgcGxhY2UuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5TZXR0aW5nIHVwIGFsZXJ0czwvc3Ryb25nPjxicj5GaXJzdCB1bmRlcnN0YW5kIHdoYXQgbm9ybWFsIGFjdGl2aXR5IGxvb2tzIGxpa2UgaW4geW91ciBzeXN0ZW0uIFRoZW4gY3JlYXRlIGFsZXJ0cyB3aGVuIHNvbWV0aGluZyBkaWZmZXJlbnQgaGFwcGVucy4gQSB3b3JrZXIgd2hvIGxvZ3MgaW4gZHVyaW5nIHRoZSBkYXkgZnJvbSBvbmUgY2l0eSBidXQgc3VkZGVubHkgbG9ncyBpbiBhdCBuaWdodCBmcm9tIGFub3RoZXIgY291bnRyeSBzaG91bGQgYmUgY2hlY2tlZC4gQW4gYWNjb3VudCB0aGF0IHN1ZGRlbmx5IGRvd25sb2FkcyA1MEdCIG9mIGRhdGEgd2hlbiBpdCB1c3VhbGx5IGRvd25sb2FkcyBvbmx5IDFHQiBzaG91bGQgYWxzbyBiZSBjaGVja2VkLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFN0YXJ0IHdpdGggdmVyeSBpbXBvcnRhbnQgYWxlcnRzIGxpa2UgYWRtaW4gYWNjb3VudCBsb2dpbnMgc2VjdXJpdHkgcHJvdGVjdGlvbiB0dXJuZWQgb2ZmIG5ldyBhZG1pbiBhY2NvdW50cyBjcmVhdGVkIG9yIHByaXZhdGUgZGF0YSBtYWRlIHB1YmxpYy5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPjYuIEV2ZXJ5IFVucGF0Y2hlZCBTeXN0ZW0gSXMgYW4gT3BlbiBJbnZpdGF0aW9uIOKAlCBQYXRjaCBCZWZvcmUgQXR0YWNrZXJzIFdhbGsgVGhyb3VnaDwvc3Ryb25nPmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudE5ldyBzZWN1cml0eSBwcm9ibGVtcyBpbiBzb2Z0d2FyZSBhcmUgZm91bmQgYWxsIHRoZSB0aW1lLiBXaGVuIGEgY29tcGFueSByZWxlYXNlcyBhIHBhdGNoIGl0IG1lYW5zIHRoZXJlIHdhcyBhIHdlYWtuZXNzIGluIHRoZSBzb2Z0d2FyZS4gQXR0YWNrZXJzIHF1aWNrbHkgc2VhcmNoIGZvciBzeXN0ZW1zIHRoYXQgZGlkIG5vdCBpbnN0YWxsIHRoZSBwYXRjaCB5ZXQuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VGhlIHRpbWUgYmV0d2VlbiBwYXRjaCByZWxlYXNlIGFuZCBwYXRjaCBpbnN0YWxsIGlzIGEgdmVyeSBkYW5nZXJvdXMgdGltZSBpbiBzZWN1cml0eS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPkhvdyBxdWlja2x5IHNob3VsZCB5b3UgcGF0Y2g8L3N0cm9uZz48YnI+Rm9yIHZlcnkgc2VyaW91cyBwcm9ibGVtcywgZml4IHRoZW0gd2l0aGluIDI0IHRvIDQ4IGhvdXJzLiBGb3IgaGlnaCBsZXZlbCBwcm9ibGVtcywgZml4IHRoZW0gd2l0aGluIDcgZGF5cy4gRm9yIG1lZGl1bSBsZXZlbCBwcm9ibGVtcywgZml4IHRoZW0gd2l0aGluIDMwIGRheXMuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VGhpcyBtYXkgc291bmQgdmVyeSBmYXN0IGJ1dCBpdCBpcyB2ZXJ5IGltcG9ydGFudCBmb3Igc2FmZXR5LmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEluIDIwMTcgYSBiaWcgY29tcGFueSBkYXRhIGJyZWFjaCBleHBvc2VkIHRoZSBwZXJzb25hbCBkYXRhIG9mIDE0NyBtaWxsaW9uIHBlb3BsZS4gQSBmaXggZm9yIHRoZSBwcm9ibGVtIHdhcyByZWFkeSB0d28gbW9udGhzIGJlZm9yZSB0aGUgYXR0YWNrLiBCdXQgdGhlIGNvbXBhbnkgbmV2ZXIgaW5zdGFsbGVkIHRoZSBwYXRjaC5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPldoYXQgbmVlZHMgcGF0Y2hpbmc8L3N0cm9uZz48YnI+T3BlcmF0aW5nIHN5c3RlbXMgb24gY2xvdWQgbWFjaGluZXMuIENvbnRhaW5lciBpbWFnZXMuIEFwcCBsaWJyYXJpZXMgYW5kIGRlcGVuZGVuY2llcy4gVGhpcmQgcGFydHkgdG9vbHMgYW5kIHBsdWdpbnMuIENsb3VkIHN5c3RlbSBhZ2VudHMuIERhdGFiYXNlIHNvZnR3YXJlLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEFueSBzeXN0ZW0gdGhhdCBydW5zIHNvZnR3YXJlIGNhbiBoYXZlIHNlY3VyaXR5IHByb2JsZW1zLiBFdmVyeSBzeXN0ZW0gbmVlZHMgdXBkYXRlcy5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPkhvdyB0byBtYWtlIHBhdGNoaW5nIG1hbmFnZWFibGU8L3N0cm9uZz48YnI+VXNlIGF1dG9tYXRpYyBwYXRjaCB1cGRhdGVzIHdoZW4gcG9zc2libGUuIE1hbnkgY2xvdWQgdG9vbHMgY2FuIGluc3RhbGwgdXBkYXRlcyBvbiBhIHNldCBzY2hlZHVsZSB3aXRob3V0IG1hbnVhbCB3b3JrLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEZvciBhcHAgbGlicmFyaWVzIHVzZSB0b29scyB0aGF0IGNoZWNrIGZvciB1cGRhdGVzIGFuZCBzZW5kIHVwZGF0ZSByZXF1ZXN0cyBhdXRvbWF0aWNhbGx5IHdoZW4gYSBuZXcgdmVyc2lvbiBpcyByZWFkeS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRLZWVwIGEgbGlzdCBvZiBhbGwgc29mdHdhcmUgaW4geW91ciBzeXN0ZW0gc28geW91IGtub3cgd2hhdCBpcyBydW5uaW5nLiBZb3UgY2Fubm90IHVwZGF0ZSBzb2Z0d2FyZSBpZiB5b3UgZG8gbm90IGtub3cgaXQgZXhpc3RzLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFJlbW92ZSBzb2Z0d2FyZSBhbmQgc2VydmljZXMgdGhhdCB5b3UgZG8gbm90IHVzZS4gRmV3ZXIgc3lzdGVtcyBtZWFuIGZld2VyIHNlY3VyaXR5IHJpc2tzIHRvIG1hbmFnZS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPjcuIEEgQmFja3VwIE5vYm9keSBIYXMgVGVzdGVkIElzIEp1c3QgRmFsc2UgSG9wZSDigJQgSGVyZSBJcyBIb3cgdG8gRG8gSXQgUmlnaHQ8L3N0cm9uZz5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRBIGJhY2t1cCBpcyB1c2VmdWwgb25seSB3aGVuIHlvdSBjYW4gcmVzdG9yZSB5b3VyIGRhdGEgZnJvbSBpdC5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRSYW5zb213YXJlIGF0dGFja3MgYXJlIGluY3JlYXNpbmcgaW4gY2xvdWQgc3lzdGVtcy4gSW4gdGhlc2UgYXR0YWNrcyBoYWNrZXJzIHRyeSB0byBmaW5kIGJhY2t1cHMgZmlyc3QgYW5kIHRoZW4gZGVsZXRlIG9yIGxvY2sgdGhlbS4gSWYgeW91ciBiYWNrdXBzIGFyZSBpbiB0aGUgc2FtZSBwbGFjZSBhcyB5b3VyIG1haW4gZGF0YSBvbmUgYXR0YWNrIGNhbiBkZXN0cm95IGV2ZXJ5dGhpbmcuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5UaGUgMyAyIDEgYmFja3VwIHJ1bGU8L3N0cm9uZz48YnI+S2VlcCAzIGNvcGllcyBvZiB5b3VyIGRhdGEuIFN0b3JlIHRoZW0gaW4gMiBkaWZmZXJlbnQgdHlwZXMgb2Ygc3RvcmFnZS4gS2VlcCAxIGNvcHkgaW4gYSBkaWZmZXJlbnQgcGxhY2Ugb3Igc2VwYXJhdGUgYWNjb3VudC5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRJbiBjbG91ZCBzeXN0ZW1zIHRoaXMgbWVhbnMgeW91ciBtYWluIGRhdGEgaW4geW91ciBtYWluIGFjY291bnQsIG9uZSBiYWNrdXAgaW4gYW5vdGhlciByZWdpb24gYW5kIG9uZSBiYWNrdXAgaW4gYSB0b3RhbGx5IGRpZmZlcmVudCBjbG91ZCBhY2NvdW50IHdpdGggc2VwYXJhdGUgbG9naW4gZGV0YWlscy5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPkltbXV0YWJsZSBiYWNrdXBzPC9zdHJvbmc+PGJyPlRoZSBiZXN0IHByb3RlY3Rpb24gZnJvbSByYW5zb213YXJlIGlzIGltbXV0YWJsZSBiYWNrdXBzLiBUaGlzIG1lYW5zIGJhY2t1cHMgdGhhdCBjYW5ub3QgYmUgY2hhbmdlZCBvciBkZWxldGVkIGZvciBhIGZpeGVkIHRpbWUuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50Q2xvdWQgc2VydmljZXMgcHJvdmlkZSBzcGVjaWFsIHN0b3JhZ2Ugb3B0aW9ucyB3aGVyZSBiYWNrdXBzIGFyZSBsb2NrZWQuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50RXZlbiBpZiBhIGhhY2tlciBnZXRzIGFjY2VzcyB0byB5b3VyIG1haW4gYWNjb3VudCB0aGV5IGNhbm5vdCBkZWxldGUgb3IgY2hhbmdlIHRoZXNlIGxvY2tlZCBiYWNrdXBzLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+VGVzdCB5b3VyIGJhY2t1cHM8L3N0cm9uZz5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRTY2hlZHVsZSByZXN0b3JhdGlvbiB0ZXN0cyBldmVyeSBxdWFydGVyLiBQaWNrIGEgcmFuZG9tIGJhY2t1cC4gUmVzdG9yZSBpdCB0byBhIHRlc3QgZW52aXJvbm1lbnQuIFZlcmlmeSB0aGUgZGF0YSBpcyBpbnRhY3QgYW5kIGFwcGxpY2F0aW9ucyB3b3JrIGNvcnJlY3RseS4gTWVhc3VyZSBob3cgbG9uZyBpdCB0YWtlcy5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaGlzIHNlcnZlcyB0d28gcHVycG9zZXM6IGl0IGNvbmZpcm1zIHlvdXIgYmFja3VwcyBhY3R1YWxseSB3b3JrLCBhbmQgaXQgdGVsbHMgeW91IHlvdXIgcmVjb3ZlcnkgdGltZSDigJQgd2hpY2ggeW91IG5lZWQgdG8ga25vdyBiZWZvcmUgYSBjcmlzaXMsIG5vdCBkdXJpbmcgb25lLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudERvY3VtZW50IHlvdXIgcmVjb3ZlcnkgcHJvY2VzcyBzdGVwIGJ5IHN0ZXAuIEluIGFuIGluY2lkZW50LCB5b3Ugd2FudCBwZW9wbGUgZm9sbG93aW5nIGEgY2xlYXIgY2hlY2tsaXN0LCBub3QgZmlndXJpbmcgdGhpbmdzIG91dCB1bmRlciBwcmVzc3VyZS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPjguIEFQSXMgQXJlIHRoZSBTaWRlIERvb3IgSGFja2VycyBMb3ZlIE1vc3Qg4oCUIExvY2sgVGhlbSBEb3duIEJlZm9yZSBTb21lb25lIFNsaXBzIFRocm91Z2g8L3N0cm9uZz5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRBUElzIGFyZSB0aGUgbmVydm91cyBzeXN0ZW0gb2YgbW9kZXJuIGNsb3VkIGFwcGxpY2F0aW9ucy4gVGhleSBjb25uZWN0IHlvdXIgc2VydmljZXMsIHBvd2VyIHlvdXIgbW9iaWxlIGFwcHMsIGxldCB0aGlyZCBwYXJ0aWVzIGludGVncmF0ZSB3aXRoIHlvdXIgcGxhdGZvcm0uIFRoZXkgYXJlIGFsc28gY29uc2lzdGVudGx5IG9uZSBvZiB0aGUgbW9zdCBleHBsb2l0ZWQgYXR0YWNrIHN1cmZhY2VzLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFRoZSBPV0FTUCBBUEkgU2VjdXJpdHkgVG9wIDEwIOKAlCBhIGRlZmluaXRpdmUgZ3VpZGUgdG8gQVBJIHZ1bG5lcmFiaWxpdGllcyDigJQgaWRlbnRpZmllcyBicm9rZW4gYXV0aGVudGljYXRpb24sIGV4Y2Vzc2l2ZSBkYXRhIGV4cG9zdXJlLCBhbmQgbGFjayBvZiByYXRlIGxpbWl0aW5nIGFzIHRoZSBtb3N0IGNvbW1vbiBpc3N1ZXMuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5BdXRoZW50aWNhdGlvbiBhbmQgYXV0aG9yaXphdGlvbjwvc3Ryb25nPmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEV2ZXJ5IEFQSSBlbmRwb2ludCBzaG91bGQgcmVxdWlyZSBhdXRoZW50aWNhdGlvbi4gTm8gZXhjZXB0aW9ucy4gVXNlIGluZHVzdHJ5IHN0YW5kYXJkcyBsaWtlIE9BdXRoIDIuMCB3aXRoIEpXVCB0b2tlbnMgZm9yIHVzZXItZmFjaW5nIEFQSXMuIFVzZSBBUEkga2V5cyB3aXRoIHN0cmljdCBzY29wZXMgZm9yIHNlcnZpY2UtdG8tc2VydmljZSBjb21tdW5pY2F0aW9uLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEFwcGx5IGF1dGhvcml6YXRpb24gYXQgdGhlIGRhdGEgbGV2ZWwuIEEgdXNlciBhdXRoZW50aWNhdGVkIHRvIHlvdXIgQVBJIHNob3VsZCBvbmx5IHNlZSB0aGVpciBvd24gZGF0YSwgbm90IGV2ZXJ5Ym9keSdzIGRhdGEuIFRoaXMga2luZCBvZiB2dWxuZXJhYmlsaXR5IOKAlCBjYWxsZWQgQk9MQSAoQnJva2VuIE9iamVjdCBMZXZlbCBBdXRob3JpemF0aW9uKSDigJQgaXMgdGhlIG1vc3QgY29tbW9uIEFQSSBmbGF3IGZvdW5kIGluIHNlY3VyaXR5IGF1ZGl0cy5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPlJhdGUgbGltaXRpbmcgYW5kIHRocm90dGxpbmc8L3N0cm9uZz5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRXaXRob3V0IHJhdGUgbGltaXRpbmcsIGF0dGFja2VycyBjYW4gaGFtbWVyIHlvdXIgQVBJIHdpdGggdGhvdXNhbmRzIG9mIHJlcXVlc3RzIHBlciBzZWNvbmQuIFRoaXMgY2FuIGJlIHVzZWQgdG8gYnJ1dGUtZm9yY2UgYXV0aGVudGljYXRpb24sIHNjcmFwZSBzZW5zaXRpdmUgZGF0YSwgb3IgdGFrZSB5b3VyIHNlcnZpY2UgZG93bi5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRTZXQgcmF0ZSBsaW1pdHMgcGVyIHVzZXIsIHBlciBJUCwgYW5kIHBlciBBUEkga2V5LiBBbGVydCB3aGVuIGxpbWl0cyBhcmUgY29uc2lzdGVudGx5IGJlaW5nIGhpdC5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPklucHV0IHZhbGlkYXRpb248L3N0cm9uZz5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnROZXZlciB0cnVzdCBkYXRhIGNvbWluZyBpbnRvIHlvdXIgQVBJLiBWYWxpZGF0ZSBldmVyeSBmaWVsZC4gUmVqZWN0IHVuZXhwZWN0ZWQgaW5wdXRzLiBVc2UgcGFyYW1ldGVyaXplZCBxdWVyaWVzIHRvIHByZXZlbnQgU1FMIGluamVjdGlvbi4gU2FuaXRpemUgaW5wdXRzIHRvIHByZXZlbnQgc2NyaXB0IGluamVjdGlvbi5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPkFQSSBpbnZlbnRvcnkgYW5kIG1vbml0b3Jpbmc8L3N0cm9uZz5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRNYWludGFpbiBhIGNvbXBsZXRlIGludmVudG9yeSBvZiBhbGwgeW91ciBBUElzIOKAlCBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwuIFVub2ZmaWNpYWwsIHVuZG9jdW1lbnRlZCBBUElzIGFyZSBjb21tb24gYW5kIGRhbmdlcm91cy4gVGhleSB0ZW5kIHRvIGxhY2sgcHJvcGVyIHNlY3VyaXR5IGNvbnRyb2xzIGJlY2F1c2Ugbm9ib2R5IGlzIGZvcm1hbGx5IHJlc3BvbnNpYmxlIGZvciB0aGVtLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudExvZyBhbGwgQVBJIGNhbGxzIHdpdGggdGltZXN0YW1wcywgdXNlciBpZGVudGl0aWVzLCBJUCBhZGRyZXNzZXMsIGFuZCByZXNwb25zZSBjb2Rlcy4gUmV2aWV3IGxvZ3MgZm9yIHVudXN1YWwgcGF0dGVybnMuIEEgc2luZ2xlIGFjY291bnQgY2FsbGluZyBhIHNlbnNpdGl2ZSBlbmRwb2ludCB0aG91c2FuZHMgb2YgdGltZXMgZGVzZXJ2ZXMgYXR0ZW50aW9uLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFJ1biByZWd1bGFyIEFQSSBzZWN1cml0eSB0ZXN0aW5nLiBUb29scyBsaWtlIE9XQVNQIFpBUCBhbmQgUG9zdG1hbiBjYW4gYXV0b21hdGUgbWFueSBjaGVja3MuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz45LiBZb3VyIFRlYW0gSXMgQm90aCBZb3VyIFN0cm9uZ2VzdCBBc3NldCBhbmQgWW91ciBCaWdnZXN0IFNlY3VyaXR5IFJpc2sg4oCUIFRyYWluIFRoZW0gV2VsbDwvc3Ryb25nPmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFRlY2hub2xvZ3kgYWxvbmUgY2Fubm90IHByb3RlY3QgeW91LiBZb3VyIHBlb3BsZSBpbnRlcmFjdCB3aXRoIHlvdXIgY2xvdWQgZW52aXJvbm1lbnQgZXZlcnkgZGF5LiBPbmUgd3JvbmcgY2xpY2sgY2FuIGJ5cGFzcyBldmVyeSB0ZWNobmljYWwgY29udHJvbCB5b3UgaGF2ZSBpbiBwbGFjZS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRJbiAyMDI1LCBwaGlzaGluZyByZW1haW5lZCB0aGUgaW5pdGlhbCBhdHRhY2sgdmVjdG9yIGluIG92ZXIgMzYlIG9mIGNsb3VkIGJyZWFjaGVzLiBUaGVzZSBhcmUgbm90IGNydWRlLCBvYnZpb3VzbHkgc3VzcGljaW91cyBlbWFpbHMuIE1vZGVybiBwaGlzaGluZyBlbWFpbHMgYXJlIGNhcmVmdWxseSBjcmFmdGVkLCBwZXJzb25hbGl6ZWQsIGFuZCBkZXNpZ25lZCB0byBjcmVhdGUgdXJnZW5jeS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRBdHRhY2tlcnMgcmVzZWFyY2ggeW91ciBjb21wYW55LiBUaGV5IGtub3cgd2hvIHlvdXIgQ0VPIGlzLiBUaGV5IGtub3cgd2hhdCB0b29scyB5b3UgdXNlLiBUaGV5IHNlbmQgZW1haWxzIHRoYXQgbG9vayBsaWtlIHRoZXkgY2FtZSBmcm9tIHlvdXIgY2xvdWQgcHJvdmlkZXIgc2F5aW5nIHlvdXIgYWNjb3VudCBpcyBhYm91dCB0byBiZSBzdXNwZW5kZWQuIE9yIGZyb20gSFIgd2l0aCBhIGxpbmsgdG8gb3BlbiBlbnJvbGxtZW50LiBPbmUgY2xpY2sgYW5kIGNyZWRlbnRpYWxzIGFyZSBzdG9sZW4uZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5XaGF0IHRyYWluaW5nIHNob3VsZCBjb3Zlcjwvc3Ryb25nPmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFBoaXNoaW5nIGF3YXJlbmVzcyBtZWFucyBsZWFybmluZyBob3cgdG8gZmluZCBmYWtlIGVtYWlscy4gWW91IHNob3VsZCBjaGVjayBpZiB0aGUgZW1haWwgbG9va3Mgc3RyYW5nZSBvciB1bnNhZmUuIEFsd2F5cyBjaGVjayB0aGUgc2VuZGVyIGJlZm9yZSB0cnVzdGluZyBpdC4gSWYgc29tZXRoaW5nIGZlZWxzIHdyb25nIGRvIG5vdCBjbGljayBpdC4gVXNlIHJlYWwgZXhhbXBsZXMgdG8gdW5kZXJzdGFuZCBiZXR0ZXIuIENvbXBhbmllcyBhbHNvIHNlbmQgZmFrZSB0ZXN0IGVtYWlscyB0byBzZWUgd2hvIGNsaWNrcyBvbiB0aGVtIGFuZCB0aGVuIGdpdmUgZXh0cmEgdHJhaW5pbmcuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50UGFzc3dvcmQgaHlnaWVuZSBtZWFucyB1c2luZyBwYXNzd29yZHMgaW4gYSBzYWZlIHdheS4gUGFzc3dvcmQgbWFuYWdlcnMgaGVscCB5b3UgY3JlYXRlIGFuZCBzdG9yZSBzdHJvbmcgcGFzc3dvcmRzLiBOZXZlciB1c2UgdGhlIHNhbWUgcGFzc3dvcmQgZXZlcnl3aGVyZS4gSWYgeW91IHRoaW5rIHlvdXIgcGFzc3dvcmQgaXMgc3RvbGVuLCBjaGFuZ2UgaXQgaW1tZWRpYXRlbHkuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50U2FmZSBoYW5kbGluZyBvZiBjcmVkZW50aWFscyBtZWFucyBuZXZlciBzaGFyaW5nIHlvdXIgcGFzc3dvcmRzIHdpdGggYW55b25lLiBEbyBub3QgcGFzdGUgcGFzc3dvcmRzIGluIGNoYXQgdG9vbHMuIERvIG5vdCBzYXZlIHRoZW0gaW4gZmlsZXMgb3IgY29kZS4gS2VlcCB0aGVtIHByaXZhdGUgYWx3YXlzLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEluY2lkZW50IHJlcG9ydGluZyBtZWFucyB0ZWxsaW5nIHlvdXIgdGVhbSBpZiBzb21ldGhpbmcgbG9va3Mgc3VzcGljaW91cy4gSXQgc2hvdWxkIGJlIGVhc3kgYW5kIHNhZmUgdG8gcmVwb3J0IHByb2JsZW1zLiBUaGVyZSBzaG91bGQgYmUgbm8gYmxhbWUgb3IgcHVuaXNobWVudC4gRXZlcnlvbmUgc2hvdWxkIGZlZWwgZnJlZSB0byByZXBvcnQgaXNzdWVzLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudERldmljZSBzZWN1cml0eSBtZWFucyBrZWVwaW5nIHlvdXIgd29yayBkZXZpY2Ugc2FmZS4gTG9jayB5b3VyIHNjcmVlbiB3aGVuIHlvdSBsZWF2ZSB5b3VyIHN5c3RlbS4gSWYgeW91ciBkZXZpY2UgaXMgbG9zdCBvciBzdG9sZW4gcmVwb3J0IGl0IGltbWVkaWF0ZWx5LiBEbyBub3QgdXNlIHBlcnNvbmFsIGRldmljZXMgZm9yIHdvcmsgd2l0aG91dCBwZXJtaXNzaW9uLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+SG93IHRvIG1ha2UgdHJhaW5pbmcgc3RpY2s8L3N0cm9uZz48YnI+U2hvcnQgdHJhaW5pbmcgaXMgYmV0dGVyIHRoYW4gbG9uZyB0cmFpbmluZy4gU21hbGwgc2Vzc2lvbnMgZXZlcnkgbW9udGggd29yayBiZXR0ZXIgdGhhbiBvbmUgbG9uZyBzZXNzaW9uIGluIGEgeWVhci5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRUcmFpbmluZyBzaG91bGQgbWF0Y2ggdGhlIGpvYiByb2xlLiBEaWZmZXJlbnQgcGVvcGxlIG5lZWQgZGlmZmVyZW50IGxlc3NvbnMgYmFzZWQgb24gdGhlaXIgd29yay5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRSZWd1bGFyIHRlc3RzIGFyZSBpbXBvcnRhbnQuIEZha2UgcGhpc2hpbmcgZW1haWxzIHNob3VsZCBiZSBzZW50IGV2ZXJ5IGZldyBtb250aHMgdG8gY2hlY2sgYXdhcmVuZXNzLiBUcmFjayByZXN1bHRzIGFuZCBpbXByb3ZlIG92ZXIgdGltZS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRTZWN1cml0eSBjdWx0dXJlIHN0YXJ0cyBmcm9tIGxlYWRlcnMuIElmIGxlYWRlcnMgdGFrZSBzZWN1cml0eSBzZXJpb3VzbHkgb3RoZXJzIHdpbGwgYWxzbyBmb2xsb3cuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz4xMC4gQSBCcmVhY2ggV2lsbCBIYXBwZW4gT25lIERheSDigJQgWW91ciBJbmNpZGVudCBSZXNwb25zZSBQbGFuIElzIFdoYXQgU2F2ZXMgWW91PC9zdHJvbmc+ZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50RXZlbiB3aXRoIGFsbCB0aGVzZSBjb250cm9scyBpbiBwbGFjZSwgc29tZXRoaW5nIHdpbGwgZXZlbnR1YWxseSBnbyB3cm9uZy4gQSBtaXNjb25maWd1cmF0aW9uIHdpbGwgc2xpcCB0aHJvdWdoLiBBbiBhdHRhY2tlciB3aWxsIGZpbmQgYSBnYXAuIEFuIGVtcGxveWVlIHdpbGwgY2xpY2sgc29tZXRoaW5nIHRoZXkgc2hvdWxkIG5vdCBoYXZlLiBvcGVubHksIGV2ZXJ5b25lIGVsc2UgZm9sbG93c2Ryb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFdoYXQgc2VwYXJhdGVzIGNvbXBhbmllcyB0aGF0IHJlY292ZXIgcXVpY2tseSBmcm9tIHRob3NlIHRoYXQgc3VmZmVyIGNhdGFzdHJvcGhpYyBkYW1hZ2UgaXMgbm90IHdoZXRoZXIgdGhleSBnb3QgYnJlYWNoZWQg4oCUIGl0IGlzIGhvdyBwcmVwYXJlZCB0aGV5IHdlcmUgd2hlbiBpdCBoYXBwZW5lZC5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRBbiBpbmNpZGVudCByZXNwb25zZSBwbGFuIGlzIHlvdXIgZG9jdW1lbnRlZCBwbGF5Ym9vayBmb3IgaGFuZGxpbmcgc2VjdXJpdHkgaW5jaWRlbnRzLiBJdCByZW1vdmVzIGNvbmZ1c2lvbiwgcmVkdWNlcyByZXNwb25zZSB0aW1lLCBhbmQgbGltaXRzIGRhbWFnZS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPlRoZSBzaXggcGhhc2VzIG9mIGluY2lkZW50IHJlc3BvbnNlPC9zdHJvbmc+ZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5QcmVwYXJhdGlvbjwvc3Ryb25nPiDigJQgQnVpbGQgdGhlIHBsYW4gYmVmb3JlIHlvdSBuZWVkIGl0LiBEZWZpbmUgcm9sZXMgYW5kIHJlc3BvbnNpYmlsaXRpZXMuIE1ha2Ugc3VyZSBldmVyeW9uZSBrbm93cyB3aGF0IHRvIGRvLiBIYXZlIGNvbnRhY3QgbGlzdHMgcmVhZHkuIFNldCB1cCB0aGUgdG9vbHMgeW91IHdpbGwgbmVlZC5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPkRldGVjdGlvbiBhbmQgQW5hbHlzaXM8L3N0cm9uZz4g4oCUIEhvdyBkbyB5b3UgZmluZCBvdXQgYW4gaW5jaWRlbnQgaXMgaGFwcGVuaW5nPyBXaGF0IGFyZSB0aGUgaW5pdGlhbCBzdGVwcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZT8gV2hvIGdldHMgbm90aWZpZWQgYW5kIGluIHdoYXQgb3JkZXI\/ZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5Db250YWlubWVudDwvc3Ryb25nPiDigJQgSG93IGRvIHlvdSBzdG9wIHRoZSBpbmNpZGVudCBmcm9tIHNwcmVhZGluZz8gRG8geW91IGlzb2xhdGUgY29tcHJvbWlzZWQgc3lzdGVtcz8gUm90YXRlIGNyZWRlbnRpYWxzPyBCbG9jayBzdXNwaWNpb3VzIElQIGFkZHJlc3Nlcz8gU2hvcnQtdGVybSBjb250YWlubWVudCBpcyBhYm91dCBzdG9wcGluZyB0aGUgYmxlZWRpbmcuIExvbmctdGVybSBjb250YWlubWVudCBpcyBhYm91dCBtYWludGFpbmluZyBvcGVyYXRpb25zIHdoaWxlIHlvdSBpbnZlc3RpZ2F0ZS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPkVyYWRpY2F0aW9uPC9zdHJvbmc+IOKAlCBSZW1vdmUgdGhlIGF0dGFja2VyIGZyb20geW91ciBlbnZpcm9ubWVudC4gQ2xvc2UgdGhlIHZ1bG5lcmFiaWxpdHkgdGhleSB1c2VkLiBWZXJpZnkgbm8gYmFja2Rvb3JzIHdlcmUgbGVmdCBiZWhpbmQuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5SZWNvdmVyeTwvc3Ryb25nPiDigJQgUmVzdG9yZSBub3JtYWwgb3BlcmF0aW9ucy4gQnJpbmcgc3lzdGVtcyBiYWNrIG9ubGluZSBjYXJlZnVsbHkuIFZlcmlmeSBpbnRlZ3JpdHkgYmVmb3JlIHJlY29ubmVjdGluZyB0byBwcm9kdWN0aW9uLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+UG9zdC1JbmNpZGVudCBSZXZpZXc8L3N0cm9uZz4g4oCUIFdoYXQgaGFwcGVuZWQ\/IEhvdyBkaWQgdGhlIGF0dGFja2VyIGdldCBpbj8gV2hhdCBkZXRlY3Rpb24gZmFpbHVyZXMgYWxsb3dlZCB0aGVtIHRvIG9wZXJhdGUgdW5kZXRlY3RlZD8gV2hhdCB3b3VsZCB5b3UgZG8gZGlmZmVyZW50bHk\/IFRoaXMgcGhhc2UgaXMgd2hlcmUgc2VjdXJpdHkgZ2V0cyBiZXR0ZXIgb3ZlciB0aW1lLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+UHJhY3RpY2luZyB0aGUgcGxhbjwvc3Ryb25nPmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFdyaXRpbmcgYSBwbGFuIGlzIG5vdCBlbm91Z2guIFByYWN0aWNlIGl0LiBSdW4gdGFibGV0b3AgZXhlcmNpc2VzIHdoZXJlIHlvdSB3YWxrIHRocm91Z2ggYSBoeXBvdGhldGljYWwgc2NlbmFyaW8g4oCUIGEgcmFuc29td2FyZSBhdHRhY2ssIGEgY3JlZGVudGlhbCBjb21wcm9taXNlLCBhIGRhdGEgbGVhayDigJQgYW5kIHRhbGsgdGhyb3VnaCB0aGUgcmVzcG9uc2UuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VGhlbiBydW4gc2ltdWxhdGlvbnMgd2hlcmUgeW91IGFjdHVhbGx5IGV4ZWN1dGUgcGFydHMgb2YgdGhlIHBsYW4uIFJvdGF0ZSBjcmVkZW50aWFscy4gSXNvbGF0ZSBhIHN5c3RlbS4gUmVzdG9yZSBmcm9tIGJhY2t1cC4gRmluZCBvdXQgd2hhdCBpcyBoYXJkZXIgdGhhbiBleHBlY3RlZCBiZWZvcmUgYSByZWFsIGluY2lkZW50IGZvcmNlcyB5b3VyIGhhbmQuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50UmV2aWV3IGFuZCB1cGRhdGUgdGhlIHBsYW4gYXQgbGVhc3QgYW5udWFsbHksIGFuZCBhZnRlciBhbnkgc2lnbmlmaWNhbnQgY2hhbmdlIHRvIHlvdXIgY2xvdWQgZW52aXJvbm1lbnQgb3IgYWZ0ZXIgYW55IHJlYWwgaW5jaWRlbnQuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5XaGF0IHRvIGluY2x1ZGUgaW4gdGhlIHBsYW48L3N0cm9uZz5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc29yZGVyZWR2YWx1ZXNpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudENvbnRhY3QgbGlzdCBmb3IgdGhlIHJlc3BvbnNlIHRlYW0sIGNsb3VkIHByb3ZpZGVyIHN1cHBvcnQsIGxlZ2FsIGNvdW5zZWwsIFBSaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRDbGFzc2lmaWNhdGlvbiBjcml0ZXJpYSDigJQgd2hhdCBjb3VudHMgYXMgYSBtaW5vciBpbmNpZGVudCB2cy4gYSBtYWpvciBicmVhY2hpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudERlY2lzaW9uIHRyZWUgZm9yIGNvbW1vbiBpbmNpZGVudCB0eXBlc2lubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50Q29tbXVuaWNhdGlvbiB0ZW1wbGF0ZXMgZm9yIGludGVybmFsIG5vdGlmaWNhdGlvbiBhbmQgZXh0ZXJuYWwgZGlzY2xvc3VyZWlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50UmVndWxhdG9yeSByZXBvcnRpbmcgcmVxdWlyZW1lbnRzIGFuZCB0aW1lbGluZXMgKEdEUFIgNzItaG91ciBydWxlLCBmb3IgZXhhbXBsZSlpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEJhY2t1cCBhbmQgcmVjb3ZlcnkgcHJvY2VkdXJlc2lubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50UG9zdC1pbmNpZGVudCByZXZpZXcgdGVtcGxhdGVpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+Qm9udXM6IEtleSBQcmluY2lwbGVzIHRvIEtlZXAgaW4gTWluZDwvc3Ryb25nPmxldmVsaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRCZXlvbmQgdGhlc2UgdGVuIHN0cmF0ZWdpZXMsIHRoZXJlIGFyZSBhIGZldyBicm9hZGVyIHByaW5jaXBsZXMgdGhhdCBjYW4gc3RyZW5ndGhlbiB5b3VyIG92ZXJhbGwgY2xvdWQgcHJvdGVjdGlvbiBzdHJhdGVneS4gVW5kZXJzdGFuZGluZyB0aGVzZSBjb25jZXB0cyB3aWxsIGhlbHAgeW91IGFwcGx5IHRoZSByaWdodCA8c3Ryb25nPmNsb3VkIHNlY3VyaXR5IHRpcHM8L3N0cm9uZz4gbW9yZSBlZmZlY3RpdmVseSBhY3Jvc3MgeW91ciBvcmdhbml6YXRpb24uZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5TaGFyZWQgcmVzcG9uc2liaWxpdHkgbW9kZWw8L3N0cm9uZz5sZXZlbGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50Q2xvdWQgcHJvdmlkZXJzIGFyZSByZXNwb25zaWJsZSBmb3Igc2VjdXJpbmcgdGhlIGluZnJhc3RydWN0dXJlIGl0c2VsZiwgYnV0IHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIHNlY3VyaW5nIGV2ZXJ5dGhpbmcgeW91IHBsYWNlIGluc2lkZSB0aGUgY2xvdWQg4oCUIGluY2x1ZGluZyB5b3VyIGRhdGEsIHVzZXIgYWNjZXNzLCBjb25maWd1cmF0aW9ucywgYW5kIGFwcGxpY2F0aW9ucy4gTWFueSBvcmdhbml6YXRpb25zIG1pc3Rha2VubHkgYXNzdW1lIHRoYXQgdGhlIGNsb3VkIHByb3ZpZGVyIGhhbmRsZXMgYWxsIHNlY3VyaXR5IHRhc2tzLiBJbiByZWFsaXR5LCBtaXNjb25maWd1cmVkIHN0b3JhZ2UsIHdlYWsgYWNjZXNzIGNvbnRyb2xzLCBhbmQgZXhwb3NlZCBhcHBsaWNhdGlvbnMgYXJlIHN0aWxsIHRoZSBjdXN0b21lcuKAmXMgcmVzcG9uc2liaWxpdHkuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5aZXJvIHRydXN0PC9zdHJvbmc+bGV2ZWxpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFRyYWRpdGlvbmFsIHNlY3VyaXR5IG1vZGVscyBmb2xsb3dlZCB0aGUgaWRlYSBvZiDigJx0cnVzdCBidXQgdmVyaWZ5LuKAnSBNb2Rlcm4gY2xvdWQgZW52aXJvbm1lbnRzIG5vdyBmb2xsb3cgYSB6ZXJvLXRydXN0IGFwcHJvYWNoLCB3aGljaCBtZWFucyDigJxuZXZlciB0cnVzdCwgYWx3YXlzIHZlcmlmeS7igJ0gTm8gdXNlciwgZGV2aWNlLCBvciBzZXJ2aWNlIHNob3VsZCByZWNlaXZlIGF1dG9tYXRpYyB0cnVzdCBzaW1wbHkgYmVjYXVzZSBpdCBleGlzdHMgaW5zaWRlIHRoZSBuZXR3b3JrLiBFdmVyeSBhY2Nlc3MgcmVxdWVzdCBzaG91bGQgYmUgYXV0aGVudGljYXRlZCwgdmFsaWRhdGVkLCBhbmQgbW9uaXRvcmVkIGNvbnRpbnVvdXNseS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPlNlY3VyaXR5IGFzIGFuIG9uZ29pbmcgcHJvY2Vzczwvc3Ryb25nPmxldmVsaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRDbG91ZCBzZWN1cml0eSBpcyBub3QgYSBvbmUtdGltZSBwcm9qZWN0LiBUaHJlYXRzIGV2b2x2ZSBjb25zdGFudGx5LCBhbmQgeW91ciBjbG91ZCBpbmZyYXN0cnVjdHVyZSBjaGFuZ2VzIG92ZXIgdGltZSBhcyB5b3VyIGJ1c2luZXNzIGdyb3dzLiBSZWd1bGFyIGF1ZGl0cywgdXBkYXRlcywgbW9uaXRvcmluZywgZW1wbG95ZWUgYXdhcmVuZXNzLCBhbmQgY29udGludW91cyBpbXByb3ZlbWVudHMgYXJlIGVzc2VudGlhbCBwYXJ0cyBvZiBsb25nLXRlcm0gc2VjdXJpdHkgbWFuYWdlbWVudC5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPkRlZmVuc2UgaW4gZGVwdGg8L3N0cm9uZz5sZXZlbGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50TmV2ZXIgcmVseSBvbiBhIHNpbmdsZSBzZWN1cml0eSBjb250cm9sLiBTdHJvbmcgcHJvdGVjdGlvbiBjb21lcyBmcm9tIGxheWVyaW5nIG11bHRpcGxlIGRlZmVuc2VzIHRvZ2V0aGVyLiBQYXNzd29yZHMsIE1GQSwgZW5jcnlwdGlvbiwgbW9uaXRvcmluZyBzeXN0ZW1zLCBiYWNrdXBzLCBmaXJld2FsbHMsIGFuZCBhY2Nlc3MgcmVzdHJpY3Rpb25zIHdvcmsgYmVzdCB3aGVuIGNvbWJpbmVkLiBPbmUgb2YgdGhlIG1vc3QgdmFsdWFibGUgPHN0cm9uZz5jbG91ZCBzZWN1cml0eSB0aXBzPC9zdHJvbmc+IGlzIHRvIGJ1aWxkIG11bHRpcGxlIGxheWVycyBvZiBwcm90ZWN0aW9uIHNvIHRoYXQgaWYgb25lIGZhaWxzLCBhbm90aGVyIHN0aWxsIHByb3RlY3RzIHlvdXIgZW52aXJvbm1lbnQuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5GaW5hbCBUaG91Z2h0czwvc3Ryb25nPmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudENsb3VkIHNlY3VyaXR5IGluIDIwMjYgaXMgbm8gbG9uZ2VyIG9wdGlvbmFsLiBDeWJlcmF0dGFja3MgYXJlIGluY3JlYXNpbmcgaW4gYm90aCB2b2x1bWUgYW5kIHNvcGhpc3RpY2F0aW9uLCB3aGlsZSB0aGUgY29uc2VxdWVuY2VzIG9mIGEgZGF0YSBicmVhY2ggY29udGludWUgdG8gZ3JvdyBtb3JlIHNldmVyZS4gRmluYW5jaWFsIGxvc3NlcywgbGVnYWwgcGVuYWx0aWVzLCBvcGVyYXRpb25hbCBkb3dudGltZSwgYW5kIGRhbWFnZSB0byBjdXN0b21lciB0cnVzdCBjYW4gYWZmZWN0IGJ1c2luZXNzZXMgb2YgZXZlcnkgc2l6ZS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaGUgZ29vZCBuZXdzIGlzIHRoYXQgdGhlIGZ1bmRhbWVudGFscyBzdGlsbCB3b3JrLiBTdHJvbmcgYXV0aGVudGljYXRpb24sIHByb3BlciBhY2Nlc3MgbWFuYWdlbWVudCwgZW5jcnlwdGlvbiwgbW9uaXRvcmluZywgcmVndWxhciBwYXRjaGluZywgc2VjdXJlIGJhY2t1cHMsIGVtcGxveWVlIHRyYWluaW5nLCBhbmQgaW5jaWRlbnQgcmVzcG9uc2UgcGxhbm5pbmcgcmVtYWluIHRoZSBmb3VuZGF0aW9uIG9mIGVmZmVjdGl2ZSBjbG91ZCBwcm90ZWN0aW9uLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFRoZXNlIHN0cmF0ZWdpZXMgYXJlIG5vdCBvdmVybHkgY29tcGxpY2F0ZWQgb3IgZXhwZW5zaXZlLiBNb3N0IGJ1c2luZXNzZXMgY2FuIGltcGxlbWVudCB0aGVtIGJ5IGNvbnNpc3RlbnRseSBmb2xsb3dpbmcgcHJvdmVuIDxzdHJvbmc+Y2xvdWQgc2VjdXJpdHkgdGlwczwvc3Ryb25nPiBhbmQgdHJlYXRpbmcgY3liZXJzZWN1cml0eSBhcyBhbiBvbmdvaW5nIGJ1c2luZXNzIHByaW9yaXR5IHJhdGhlciB0aGFuIGFuIGFmdGVydGhvdWdodC5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRTdGFydCBieSBmaXhpbmcgeW91ciB3ZWFrZXN0IGFyZWEgZmlyc3QuIEltcHJvdmUgb25lIGxheWVyIGF0IGEgdGltZS4gUmV2aWV3IHlvdXIgc3lzdGVtcyByZWd1bGFybHkgYW5kIG5ldmVyIGFzc3VtZSB5b3VyIGNvbXBhbnkgaXMgdG9vIHNtYWxsIHRvIGJlY29tZSBhIHRhcmdldC5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRJbiAyMDI2LCBldmVyeSBvcmdhbml6YXRpb24gb3BlcmF0aW5nIGluIHRoZSBjbG91ZCBmYWNlcyBjeWJlciByaXNrcy4gVGhlIGJ1c2luZXNzZXMgdGhhdCBzdGF5IHNlY3VyZSBhcmUgdGhlIG9uZXMgdGhhdCBjb25zaXN0ZW50bHkgZm9sbG93IGJlc3QgcHJhY3RpY2VzLCBtYWludGFpbiB2aXNpYmlsaXR5IGludG8gdGhlaXIgc3lzdGVtcywgYW5kIHRha2Ugc2VjdXJpdHkgc2VyaW91c2x5IGV2ZXJ5IHNpbmdsZSBkYXkuZHJvcENhcGlubmVyQmxvY2tzaWRsaW5rdXJsc2l6ZVNsdWdsaW5rRGVzdGluYXRpb248IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VGhlIGNsb3VkIGNvbXB1dGluZyBhZ2UgaGFzIGJyb3VnaHQgbWFueSBiaWcgY2hhbmdlcy4gWW91IGNhbiBtYWtlIGEgc2VydmVyIGluIGp1c3QgYSBmZXcgbWludXRlcywgc3RvcmUgYSBsYXJnZSBhbW91bnQgb2YgZGF0YSB3aXRob3V0IGJ1aWxkaW5nIHBoeXNpY2FsIHN5c3RlbXMgYW5kIHJ1biB5b3VyIGJ1c2luZXNzIGZyb20gYSBsYXB0b3AuIENsb3VkIGNvbXB1dGluZyBpcyBmbGV4aWJsZSwgc2NhbGFibGUgYW5kIGFmZm9yZGFibGUuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+QnV0IGFzIG1vcmUgYnVzaW5lc3NlcyBtb3ZlIG9ubGluZSBmb2xsb3dpbmcgdGhlIHJpZ2h0IGNsb3VkIHNlY3VyaXR5IHRpcHMgaGFzIGJlY29tZSBtb3JlIGltcG9ydGFudCB0aGFuIGV2ZXIuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+V2hlbiBhIGNvbXBhbnkgdHJhbnNmZXJzIHRvIHRoZSBjbG91ZCwgaXRzIHByaWNlbGVzcyBhbmQgc2Vuc2l0aXZlIGluZm9ybWF0aW9uIGdvZXMgaW50byBhbiBlY29zeXN0ZW0gdGhhdCB0aGUgY29tcGFueSBkb2VzIG5vdCBmdWxseSBjb250cm9sLiBBdHRhY2tlcnMgYWxyZWFkeSBrbm93IGFib3V0IHRoaXMgd2Vha25lc3MuIEluIDIwMjMgODIlIG9mIGFsbCBkYXRhIGJyZWFjaGVzIGhhcHBlbmVkIGluIHRoZSBjbG91ZCBhY2NvcmRpbmcgdG8gSUJN4oCZcyBDb3N0IG9mIGEgRGF0YSBCcmVhY2ggUmVwb3J0LiBPbiBhdmVyYWdlIGV2ZXJ5IGF0dGFjayBjYXVzZWQgbG9zc2VzIG9mIG1vcmUgdGhhbiAkNC40NSBtaWxsaW9uLiBJbiB0aGUgeWVhcnMgYWZ0ZXIgdGhhdCB0aGlzIG51bWJlciBrZXB0IGdyb3dpbmcgYW5kIGJ5IDIwMjYgY2xvdWQgc3lzdGVtcyBiZWNhbWUgb25lIG9mIHRoZSBiaWdnZXN0IHRhcmdldHMgZm9yIGhhY2tlcnMgYXJvdW5kIHRoZSB3b3JsZC48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5CdXQgdGhlcmUgaXMgYWxzbyBnb29kIG5ld3MuIE1vc3QgYXR0YWNrcyBoYXBwZW4gbm90IGJlY2F1c2UgaGFja2VycyB1c2UgdmVyeSBhZHZhbmNlZCB0cmlja3MgYnV0IGJlY2F1c2UgcGVvcGxlIG1ha2Ugc2ltcGxlIG1pc3Rha2VzIGFuZCB1c2Ugd2VhayBzZWN1cml0eS4gQnkgZm9sbG93aW5nIHRoZSByaWdodCBjbG91ZCBzZWN1cml0eSB0aXBzIGJ1c2luZXNzZXMgb2YgYWxsIHNpemVzIGNhbiBsb3dlciByaXNrcyBhbmQgcHJvdGVjdCB0aGVpciBpbXBvcnRhbnQgZGF0YSBpbiBhIGJldHRlciB3YXkuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VGhpcyBndWlkZSBnaXZlcyB0ZW4gc2ltcGxlIGNsb3VkIHNlY3VyaXR5IHRpcHMgdGhhdCBhcmUgZWFzeSB0byBmb2xsb3cgZWFzeSB0byB1c2UgYW5kIHByb3ZlbiB0byB3b3JrIGZvciBtb2Rlcm4gYnVzaW5lc3Nlcy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aW1hZ2UgeyJpZCI6MTUyOTEsInNpemVTbHVnIjoiZnVsbCIsImxpbmtEZXN0aW5hdGlvbiI6Im5vbmUifSAtLT4KPCEtLSAvd3A6aW1hZ2UgLS0+Cgo8IS0tIHdwOmhlYWRpbmcgLS0+CjxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz4xLiBZb3VyIFBhc3N3b3JkIElzIHRoZSBGcm9udCBEb29yIHRvIFlvdXIgQ2xvdWQg4oCUIFN0b3AgTGVhdmluZyBJdCBVbmxvY2tlZDwvc3Ryb25nPjwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+T25lIG9mIHRoZSBtb3N0IGltcG9ydGFudCA8c3Ryb25nPmNsb3VkIHNlY3VyaXR5IHRpcHM8L3N0cm9uZz4gaXMgc3VycHJpc2luZ2x5IHNpbXBsZTogdXNlIHN0cm9uZyBwYXNzd29yZHMuIExldCB1cyBzdGFydCB3aXRoIGEgdmVyeSBiYXNpYyBtaXN0YWtlIHRoYXQgbWFueSBwZW9wbGUgYW5kIGV2ZW4gY29tcGFuaWVzIHN0aWxsIG1ha2UuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+SW4gMjAyNCwgb25lIG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgcGFzc3dvcmRzIGluIGNvbXBhbnkgaGFja3Mgd2FzIHN0aWxsIOKAnDEyMzQ1Ni7igJ0gVGhpcyBpcyBub3QgYSBqb2tlLiBSZWFsIGJ1c2luZXNzZXMgd2l0aCByZWFsIGN1c3RvbWVyIGRhdGEgd2VyZSB1c2luZyBleHRyZW1lbHkgd2VhayBwYXNzd29yZHMuIFlvdXIgcGFzc3dvcmQgaXMgdGhlIHZlcnkgZmlyc3QgdGhpbmcgcHJvdGVjdGluZyB5b3VyIGNsb3VkIGVudmlyb25tZW50LiBJZiB5b3VyIHBhc3N3b3JkIGlzIHdlYWssIHlvdXIgZGF0YSBjYW4gYmUgc3RvbGVuIHdpdGhpbiBtaW51dGVzLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlBhc3N3b3JkcyBhcmUgeW91ciBmaXJzdCBsaW5lIG9mIGRlZmVuc2UuIElmIHRoZXkgYXJlIHdlYWssIG5vdGhpbmcgZWxzZSByZWFsbHkgbWF0dGVycy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPldoeSB3ZWFrIHBhc3N3b3JkcyBhcmUgZGFuZ2Vyb3VzPC9zdHJvbmc+PC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5BdHRhY2tlcnMgdXNlIGEgbWV0aG9kIGNhbGxlZCBjcmVkZW50aWFsIHN0dWZmaW5nLiBJbiB0aGlzIGF0dGFjayBoYWNrZXJzIHRha2Ugb2xkIGxlYWtlZCBwYXNzd29yZHMgZnJvbSBkYXRhIGJyZWFjaGVzIGFuZCB0cnkgdGhlbSBvbiBjbG91ZCBsb2dpbiBwYWdlcy4gQmlsbGlvbnMgb2Ygc3RvbGVuIHBhc3N3b3JkcyBhcmUgYWxyZWFkeSBzaGFyZWQgb24gdGhlIGRhcmsgd2ViLiBJZiB5b3UgdXNlIHRoZSBzYW1lIHBhc3N3b3JkIG9uIG1hbnkgYWNjb3VudHMgdGhlbiB5b3VyIGNsb3VkIGFjY291bnQgY2FuIGJlY29tZSB1bnNhZmUgdmVyeSBlYXNpbHkuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+SGFja2VycyBhbHNvIHVzZSBzbWFydCBjb21wdXRlciB0b29scyB0aGF0IGNhbiB0cnkgdGhvdXNhbmRzIG9mIHBhc3N3b3JkcyBldmVyeSBzZWNvbmQuIFNtYWxsIGFuZCBlYXN5IHBhc3N3b3JkcyBjYW4gYmUgYnJva2VuIGluIG9ubHkgYSBmZXcgc2Vjb25kcy4gUGFzc3dvcmRzIHRoYXQgdXNlIHNpbXBsZSBuYW1lcyB5ZWFycyBvciBlYXN5IHdvcmRzIGFyZSBub3Qgc2FmZSBmb3IgY2xvdWQgYWNjb3VudHMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+CgoKPCEtLSB3cDpsaXN0IC0tPgo8dWwgY2xhc3M9IndwLWJsb2NrLWxpc3QiPjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+VXNlIGEgcGFzc3dvcmQgdGhhdCBoYXMgYXQgbGVhc3QgMTYgY2hhcmFjdGVycy48L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPlVzZSBjYXBpdGFsIGxldHRlcnMsIHNtYWxsIGxldHRlcnMgbnVtYmVycyBhbmQgc3ltYm9scyB0b2dldGhlci48L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPkRvIG5vdCB1c2UgeW91ciBuYW1lLCBiaXJ0aGRheSBtb2JpbGUgbnVtYmVyIG9yIGVhc3kgd29yZHMgaW4gcGFzc3dvcmRzLjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+TmV2ZXIgdXNlIG9uZSBwYXNzd29yZCBmb3IgbWFueSBhY2NvdW50cyBiZWNhdXNlIG9uZSBsZWFrZWQgcGFzc3dvcmQgY2FuIHB1dCBhbGwgYWNjb3VudHMgaW4gZGFuZ2VyLjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+VXNlIGEgcGFzc3dvcmQgbWFuYWdlciB0byBjcmVhdGUgc3Ryb25nIHBhc3N3b3JkcyBhbmQga2VlcCB0aGVtIHNhZmUuPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT5DaGFuZ2UgcGFzc3dvcmRzIGFnYWluIGFuZCBhZ2FpbiBlc3BlY2lhbGx5IGZvciBhZG1pbiBhY2NvdW50cy4gQ2hhbmdpbmcgcGFzc3dvcmRzIGV2ZXJ5IDkwIGRheXMgaXMgYSBnb29kIHNhZmV0eSBoYWJpdCBmb3IgYnVzaW5lc3Nlcy48L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+PC91bD4KPCEtLSAvd3A6bGlzdCAtLT4KCgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+SW4gMjAyMiBhIGhlYWx0aGNhcmUgY29tcGFueSBmYWNlZCBhIGJpZyBjbG91ZCBzZWN1cml0eSBhdHRhY2sgYmVjYXVzZSBhbiBhZG1pbiBhY2NvdW50IHVzZWQgdGhlIHBhc3N3b3JkIOKAnFdlbGNvbWUyMDIyLuKAnSBUaGUgcGFzc3dvcmQgd2FzIHZlcnkgZWFzeSBiZWNhdXNlIGl0IHVzZWQgdGhlIGNvbXBhbnkgbmFtZSBhbmQgeWVhci4gSGFja2VycyB1c2VkIGF1dG9tYXRpYyBwYXNzd29yZCB0b29scyBhbmQgYnJva2UgdGhlIHBhc3N3b3JkIGluIGxlc3MgdGhhbiB0aHJlZSBtaW51dGVzLiBBZnRlciB0aGlzIGF0dGFjayB0aGUgY29tcGFueSBsb3N0IGltcG9ydGFudCBkYXRhIGFuZCBmYWNlZCBzZXJpb3VzIHByb2JsZW1zLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkZvbGxvd2luZyBzaW1wbGUgY2xvdWQgc2VjdXJpdHkgdGlwcyBsaWtlIHVzaW5nIHN0cm9uZyBwYXNzd29yZHMsIHNhZmUgbG9naW4gbWV0aG9kcyBhbmQgY2hhbmdpbmcgcGFzc3dvcmRzIG9mdGVuIGNhbiBoZWxwIGJ1c2luZXNzZXMgc3RheSBzYWZlIGZyb20gdGhlc2UgZWFzeSBhdHRhY2tzLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5BIHN0cm9uZyBwYXNzd29yZCBhbG9uZSBpcyBubyBsb25nZXIgZW5vdWdoIGluIDIwMjYuIFlvdSBuZWVkIGFub3RoZXIgbGF5ZXIgb2YgcHJvdGVjdGlvbi48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5NdWx0aS1mYWN0b3IgYXV0aGVudGljYXRpb24gKE1GQSkgdmVyaWZpZXMgeW91ciBpZGVudGl0eSBpbiB0d28gd2F5cy4gT25lIGZhY3RvciBpcyBzb21ldGhpbmcgeW91IGtub3csIGxpa2UgYSBwYXNzd29yZC4gVGhlIHNlY29uZCBmYWN0b3IgaXMgc29tZXRoaW5nIHlvdSBoYXZlLCBzdWNoIGFzIGEgbW9iaWxlIGRldmljZSwgYXV0aGVudGljYXRpb24gYXBwLCBvciBoYXJkd2FyZSBzZWN1cml0eSBrZXkuIEV2ZW4gaWYgYXR0YWNrZXJzIHN0ZWFsIHlvdXIgcGFzc3dvcmQsIHRoZXkgc3RpbGwgY2Fubm90IGFjY2VzcyB5b3VyIGFjY291bnQgd2l0aG91dCB0aGUgc2Vjb25kIHZlcmlmaWNhdGlvbiBzdGVwLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+SG93IE1GQSB3b3JrcyBpbiBwcmFjdGljZTwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VGhlIG1vc3QgY29tbW9uIE1GQSBtZXRob2QgaXMgcmVjZWl2aW5nIGEgb25lLXRpbWUgY29kZSB0aHJvdWdoIFNNUy4gV2hpbGUgdGhpcyBpcyBiZXR0ZXIgdGhhbiB1c2luZyBvbmx5IGEgcGFzc3dvcmQsIFNNUyBhdXRoZW50aWNhdGlvbiBjYW4gc3RpbGwgYmUgdnVsbmVyYWJsZSB0byBTSU0tc3dhcHBpbmcgYXR0YWNrcy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5BIHNhZmVyIG9wdGlvbiBpcyB1c2luZyBhdXRoZW50aWNhdG9yIGFwcHMgbGlrZSBHb29nbGUgQXV0aGVudGljYXRvciwgTWljcm9zb2Z0IEF1dGhlbnRpY2F0b3IsIG9yIEF1dGh5LiBUaGVzZSBhcHBzIGdlbmVyYXRlIHNlY3VyZSB0aW1lLWJhc2VkIGNvZGVzIGRpcmVjdGx5IG9uIHlvdXIgZGV2aWNlLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRoZSBzdHJvbmdlc3Qgb3B0aW9uIGlzIHVzaW5nIGEgaGFyZHdhcmUgc2VjdXJpdHkga2V5IHN1Y2ggYXMgWXViaUtleS4gWW91IHBoeXNpY2FsbHkgY29ubmVjdCBvciB0YXAgdGhlIGtleSBkdXJpbmcgbG9naW4sIG1ha2luZyBhY2NvdW50IGNvbXByb21pc2UgZXh0cmVtZWx5IGRpZmZpY3VsdC48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPldoZXJlIHRvIGVuYWJsZSBNRkE8L3N0cm9uZz48L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkVuYWJsZSBNRkEgb24gZXZlcnkgYWNjb3VudCBjb25uZWN0ZWQgdG8geW91ciBjbG91ZCBpbmZyYXN0cnVjdHVyZSwgaW5jbHVkaW5nOjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpsaXN0IC0tPgo8dWwgY2xhc3M9IndwLWJsb2NrLWxpc3QiPjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+QVdTLCBBenVyZSwgYW5kIEdvb2dsZSBDbG91ZCBhY2NvdW50czwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+RW1haWwgYWNjb3VudHM8L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPkRldmVsb3BlciBwbGF0Zm9ybXMgbGlrZSBHaXRIdWIgYW5kIEdpdExhYjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+Q0kvQ0QgdG9vbHM8L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPlZQTnM8L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPkludGVybmFsIGFkbWluIGRhc2hib2FyZHM8L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+PC91bD4KPCEtLSAvd3A6bGlzdCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5QYXkgZXh0cmEgYXR0ZW50aW9uIHRvIHJvb3QgYW5kIGFkbWluaXN0cmF0b3IgYWNjb3VudHMgYmVjYXVzZSB0aGV5IGNvbnRyb2wgeW91ciBlbnRpcmUgY2xvdWQgZW52aXJvbm1lbnQuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6M30gLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5UaGUgbnVtYmVyczwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+TWljcm9zb2Z0IHJlc2VhcmNoIHNob3dzIHRoYXQgTUZBIGJsb2NrcyBtb3JlIHRoYW4gOTkuOSUgb2YgYXV0b21hdGVkIGFjY291bnQgY29tcHJvbWlzZSBhdHRlbXB0cy4gQW1vbmcgYWxsIG1vZGVybiA8c3Ryb25nPmNsb3VkIHNlY3VyaXR5IHRpcHM8L3N0cm9uZz4sIGVuYWJsaW5nIE1GQSByZW1haW5zIG9uZSBvZiB0aGUgbW9zdCBlZmZlY3RpdmUgYW5kIGFmZm9yZGFibGUgc2VjdXJpdHkgbWVhc3VyZXMgYW55IG9yZ2FuaXphdGlvbiBjYW4gaW1wbGVtZW50LjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Ob3QgZXZlcnlvbmUgaW4geW91ciBvcmdhbml6YXRpb24gbmVlZHMgYWNjZXNzIHRvIGV2ZXJ5dGhpbmcuIEluIGZhY3QsIG1vc3QgcGVvcGxlIG5lZWQgYWNjZXNzIHRvIHZlcnkgbGl0dGxlLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRoZSBwcmluY2lwbGUgb2YgbGVhc3QgcHJpdmlsZWdlIG1lYW5zIGdpdmluZyB1c2VycyBzeXN0ZW1zIGFuZCBhcHBzIG9ubHkgdGhlIGFjY2VzcyB0aGV5IG5lZWQgdG8gZG8gdGhlaXIgam9iLiBUaGV5IHNob3VsZCBub3QgZ2V0IGV4dHJhIGFjY2Vzcy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VGhlIHNhbWUgcnVsZSBpcyB0cnVlIGZvciBhcHBzIGFuZCBzZXJ2aWNlcy4gQW4gYXBwIHRoYXQgcmVhZHMgZGF0YSBmcm9tIG9uZSBkYXRhYmFzZSBkb2VzIG5vdCBuZWVkIHBlcm1pc3Npb24gdG8gY2hhbmdlIGRhdGEgaW4gYW5vdGhlciBkYXRhYmFzZS4gQSBzZXJ2aWNlIHRoYXQgc2VuZHMgZW1haWxzIGRvZXMgbm90IG5lZWQgYWNjZXNzIHRvIHlvdXIgc3RvcmFnZSBmaWxlcy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+Rm9yIGh1bWFuIHVzZXJzLCBnaXZlIHJvbGVzIGJhc2VkIG9uIHRoZWlyIGpvYi4gQ2xvdWQgcGxhdGZvcm1zIGFscmVhZHkgaGF2ZSByZWFkeSByb2xlcyBmb3IgY29tbW9uIGpvYnMuIFN0YXJ0IHdpdGggdGhvc2Ugcm9sZXMgYW5kIGNoYW5nZSB0aGVtIG9ubHkgd2hlbiBuZWVkZWQuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+Rm9yIHNlcnZpY2UgYWNjb3VudHMgYW5kIGFwcHMgY3JlYXRlIHNlcGFyYXRlIGFjY291bnRzIHdpdGggb25seSB0aGUgYWNjZXNzIHRoZXkgdHJ1bHkgbmVlZC4gTmV2ZXIgdXNlIGFuIGFkbWluIGFjY291bnQgdG8gcnVuIGF1dG9tYXRpYyB0YXNrcy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5SZXZpZXcgYW5kIGNsZWFuIHVwIGFjY2VzcyBxdWFydGVybHkuIFBlb3BsZSBjaGFuZ2Ugcm9sZXMuIFBlb3BsZSBsZWF2ZS4gUHJvamVjdHMgZW5kLiBBY2Nlc3Mgc2hvdWxkIGNoYW5nZSB3aXRoIHRoZW0uPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+U2V0IHVwIGFjY2VzcyBleHBpcmF0aW9uLiBGb3IgdGVtcG9yYXJ5IHByb2plY3RzIG9yIGNvbnRyYWN0b3JzLCB1c2UgdGltZS1saW1pdGVkIGFjY2VzcyB0aGF0IGF1dG9tYXRpY2FsbHkgcmV2b2tlcyBpdHNlbGYgYWZ0ZXIgYSBzZXQgZGF0ZS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+QSBjb21wYW55IHJ1bm5pbmcgb24gQVdTIGhhZCBhIGRldmVsb3BlciBhY2NvdW50IHdpdGggZnVsbCBTMyBhY2Nlc3Mg4oCUIGFsbCBidWNrZXRzLCByZWFkIGFuZCB3cml0ZS4gV2hlbiB0aGF0IGRldmVsb3BlcidzIGxhcHRvcCB3YXMgc3RvbGVuIGFuZCB0aGVpciBjcmVkZW50aWFscyB3ZXJlIGNvbXByb21pc2VkLCB0aGUgYXR0YWNrZXIgZG93bmxvYWRlZCAyMDBHQiBvZiBjdXN0b21lciBkYXRhLiBJZiB0aGF0IGFjY291bnQgaGFkIGJlZW4gc2NvcGVkIHRvIG9ubHkgdGhlIHR3byBidWNrZXRzIHRoZSBkZXZlbG9wZXIgYWN0dWFsbHkgbmVlZGVkLCB0aGUgZGFtYWdlIHdvdWxkIGhhdmUgYmVlbiBuZWFyIHplcm8uPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+CgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkV2ZW4gaWYgeW91ciBkYXRhIGdldHMgc3RvbGVuLCBlbmNyeXB0aW9uIGNhbiBtYWtlIGl0IHVzZWxlc3MgZm9yIGF0dGFja2Vycy4gRW5jcnlwdGlvbiBjaGFuZ2VzIHlvdXIgZGF0YSBpbnRvIHNlY3JldCBjb2RlIHRoYXQgcGVvcGxlIGNhbm5vdCByZWFkLiBPbmx5IHRoZSByaWdodCBrZXkgY2FuIG9wZW4gYW5kIHJlYWQgdGhhdCBkYXRhLiBJZiBhbiBhdHRhY2tlciBnZXRzIHlvdXIgZGF0YSBidXQgZG9lcyBub3QgaGF2ZSB0aGUga2V5IHRoZSBkYXRhIGlzIG9mIG5vIHVzZS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5UaGVyZSBhcmUgdHdvIHRpbWVzIHdoZW4geW91ciBkYXRhIG11c3QgYmUgcHJvdGVjdGVkIHdpdGggZW5jcnlwdGlvbi48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+Q2xvdWQgY29tcGFuaWVzIGdpdmUgc3BlY2lhbCB0b29scyB0byBtYW5hZ2UgZW5jcnlwdGlvbiBrZXlzLiBUaGVzZSB0b29scyBrZWVwIHlvdXIga2V5cyBzYWZlIGFuZCBzZXBhcmF0ZSBmcm9tIHlvdXIgZGF0YS4gWW91IHNob3VsZCB1c2UgdGhlc2UgdG9vbHMgdG8gcHJvdGVjdCB5b3VyIGluZm9ybWF0aW9uLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPklmIHlvdSB3YW50IHRoZSBoaWdoZXN0IGxldmVsIG9mIHNhZmV0eSB1c2UgY3VzdG9tZXIgbWFuYWdlZCBrZXlzLiBUaGlzIG1lYW5zIHlvdSBjb250cm9sIHRoZSBrZXlzIGFuZCBub3QgdGhlIGNsb3VkIGNvbXBhbnkuIEV2ZW4gaWYgdGhlIGNsb3VkIHN5c3RlbSBnZXRzIGhhY2tlZCB5b3VyIGRhdGEgd2lsbCBzdGlsbCBzdGF5IHNhZmUuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+CgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRoaXMgcHJvdGVjdHMgZGF0YSBhcyBpdCBtb3ZlcyBiZXR3ZWVuIHN5c3RlbXMg4oCUIGZyb20gYSBicm93c2VyIHRvIHlvdXIgYXBwLCBiZXR3ZWVuIG1pY3Jvc2VydmljZXMsIGJldHdlZW4geW91ciBjbG91ZCBhbmQgYW4gZXh0ZXJuYWwgQVBJLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkFsd2F5cyB1c2UgVExTIDEuMiBvciBUTFMgMS4zIGZvciBhbGwgY29ubmVjdGlvbnMuIEhUVFAgd2l0aG91dCBTIGlzIHVuYWNjZXB0YWJsZSBmb3IgYW55dGhpbmcgaW52b2x2aW5nIHNlbnNpdGl2ZSBkYXRhLiBDaGVjayB0aGF0IHlvdXIgbG9hZCBiYWxhbmNlcnMsIEFQSXMsIGFuZCBpbnRlcm5hbCBzZXJ2aWNlIGNvbm5lY3Rpb25zIGFsbCBlbmZvcmNlIGVuY3J5cHRlZCBjb21tdW5pY2F0aW9uLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5FbmNyeXB0aW9uIGlzIG9ubHkgYXMgc3Ryb25nIGFzIHlvdXIga2V5IG1hbmFnZW1lbnQuIElmIHNvbWVvbmUgZ2V0cyB5b3VyIGVuY3J5cHRpb24ga2V5cywgdGhleSBjYW4gZGVjcnlwdCBldmVyeXRoaW5nLiBOZXZlciBzdG9yZSBrZXlzIG5leHQgdG8gdGhlIGRhdGEgdGhleSBwcm90ZWN0LiBSb3RhdGUga2V5cyBwZXJpb2RpY2FsbHkuIFVzZSBzZXBhcmF0ZSBrZXlzIGZvciBkaWZmZXJlbnQgZGF0YSBjbGFzc2lmaWNhdGlvbnMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+CgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlNlY3VyaXR5IGlzIG5vdCBhIG9uZS10aW1lIHNldHVwLiBJdCBpcyBhbiBvbmdvaW5nIHZpZ2lsYW5jZS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Nb3N0IGNvbXBhbmllcyBmaW5kIG91dCBhYm91dCBoYWNrcyB2ZXJ5IGxhdGUuIE1hbnkgdGltZXMgdGhleSBrbm93IGFmdGVyIG1hbnkgd2Vla3Mgb3IgZXZlbiBtb250aHMuIFN0dWRpZXMgc2hvdyB0aGF0IGNvbXBhbmllcyB0YWtlIGFib3V0IDIwNyBkYXlzIHRvIGZpbmQgYSBjbG91ZCBicmVhY2guIFRoYXQgaXMgYWxtb3N0IHNldmVuIG1vbnRocyBvZiBhbiBhdHRhY2tlciBzdGF5aW5nIGluc2lkZSB0aGUgc3lzdGVtIHdpdGhvdXQgYmVpbmcgbm90aWNlZC48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Db250aW51b3VzIG1vbml0b3JpbmcgY2FuIHJlZHVjZSB0aGlzIHRpbWUgYSBsb3QuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+CgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlNldHRpbmcgY2hhbmdlcyBsaWtlIHdobyBjaGFuZ2VkIHNldHRpbmdzIGluIHlvdXIgY2xvdWQgc3lzdGVtLiBXYXRjaCBmb3IgbmV3IHNlY3VyaXR5IHJ1bGVzLCBuZXcgdXNlciBhY2NvdW50cywgY2hhbmdlZCBwZXJtaXNzaW9ucyBvciBsb2dnaW5nIHR1cm5lZCBvZmYuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+RGF0YSBhY2Nlc3MgcGF0dGVybnMgbGlrZSB2ZXJ5IGxhcmdlIGRvd25sb2FkcyBvciBhY2Nlc3MgdG8gc2Vuc2l0aXZlIGRhdGEgYnkgYWNjb3VudHMgdGhhdCBkbyBub3QgdXN1YWxseSB1c2UgaXQuIEFsc28gd2F0Y2ggZm9yIGRhdGEgYmVpbmcgc2VudCB0byBvdXRzaWRlIGxvY2F0aW9ucy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5OZXR3b3JrIHRyYWZmaWMgbGlrZSB1bmtub3duIGNvbm5lY3Rpb25zIGxlYXZpbmcgeW91ciBzeXN0ZW0gdHJhZmZpYyBnb2luZyB0byBoYXJtZnVsIGFkZHJlc3NlcyBvciB2ZXJ5IGxhcmdlIGFtb3VudHMgb2YgZGF0YSBtb3Zpbmcgb3V0LjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Gb3Igb25lIGNsZWFyIHZpZXcgeW91IGNhbiB1c2Ugc3BlY2lhbCBzZWN1cml0eSBwbGF0Zm9ybXMuIFRoZXNlIHBsYXRmb3JtcyBjb2xsZWN0IGxvZ3MgZnJvbSBtYW55IHN5c3RlbXMgYW5kIHNob3cgc3RyYW5nZSBhY3Rpdml0eSBpbiBvbmUgcGxhY2UuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlN0YXJ0IHdpdGggdmVyeSBpbXBvcnRhbnQgYWxlcnRzIGxpa2UgYWRtaW4gYWNjb3VudCBsb2dpbnMgc2VjdXJpdHkgcHJvdGVjdGlvbiB0dXJuZWQgb2ZmIG5ldyBhZG1pbiBhY2NvdW50cyBjcmVhdGVkIG9yIHByaXZhdGUgZGF0YSBtYWRlIHB1YmxpYy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+TmV3IHNlY3VyaXR5IHByb2JsZW1zIGluIHNvZnR3YXJlIGFyZSBmb3VuZCBhbGwgdGhlIHRpbWUuIFdoZW4gYSBjb21wYW55IHJlbGVhc2VzIGEgcGF0Y2ggaXQgbWVhbnMgdGhlcmUgd2FzIGEgd2Vha25lc3MgaW4gdGhlIHNvZnR3YXJlLiBBdHRhY2tlcnMgcXVpY2tseSBzZWFyY2ggZm9yIHN5c3RlbXMgdGhhdCBkaWQgbm90IGluc3RhbGwgdGhlIHBhdGNoIHlldC48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5UaGUgdGltZSBiZXR3ZWVuIHBhdGNoIHJlbGVhc2UgYW5kIHBhdGNoIGluc3RhbGwgaXMgYSB2ZXJ5IGRhbmdlcm91cyB0aW1lIGluIHNlY3VyaXR5LjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5UaGlzIG1heSBzb3VuZCB2ZXJ5IGZhc3QgYnV0IGl0IGlzIHZlcnkgaW1wb3J0YW50IGZvciBzYWZldHkuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+SW4gMjAxNyBhIGJpZyBjb21wYW55IGRhdGEgYnJlYWNoIGV4cG9zZWQgdGhlIHBlcnNvbmFsIGRhdGEgb2YgMTQ3IG1pbGxpb24gcGVvcGxlLiBBIGZpeCBmb3IgdGhlIHByb2JsZW0gd2FzIHJlYWR5IHR3byBtb250aHMgYmVmb3JlIHRoZSBhdHRhY2suIEJ1dCB0aGUgY29tcGFueSBuZXZlciBpbnN0YWxsZWQgdGhlIHBhdGNoLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Bbnkgc3lzdGVtIHRoYXQgcnVucyBzb2Z0d2FyZSBjYW4gaGF2ZSBzZWN1cml0eSBwcm9ibGVtcy4gRXZlcnkgc3lzdGVtIG5lZWRzIHVwZGF0ZXMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkZvciBhcHAgbGlicmFyaWVzIHVzZSB0b29scyB0aGF0IGNoZWNrIGZvciB1cGRhdGVzIGFuZCBzZW5kIHVwZGF0ZSByZXF1ZXN0cyBhdXRvbWF0aWNhbGx5IHdoZW4gYSBuZXcgdmVyc2lvbiBpcyByZWFkeS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5LZWVwIGEgbGlzdCBvZiBhbGwgc29mdHdhcmUgaW4geW91ciBzeXN0ZW0gc28geW91IGtub3cgd2hhdCBpcyBydW5uaW5nLiBZb3UgY2Fubm90IHVwZGF0ZSBzb2Z0d2FyZSBpZiB5b3UgZG8gbm90IGtub3cgaXQgZXhpc3RzLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlJlbW92ZSBzb2Z0d2FyZSBhbmQgc2VydmljZXMgdGhhdCB5b3UgZG8gbm90IHVzZS4gRmV3ZXIgc3lzdGVtcyBtZWFuIGZld2VyIHNlY3VyaXR5IHJpc2tzIHRvIG1hbmFnZS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+QSBiYWNrdXAgaXMgdXNlZnVsIG9ubHkgd2hlbiB5b3UgY2FuIHJlc3RvcmUgeW91ciBkYXRhIGZyb20gaXQuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+UmFuc29td2FyZSBhdHRhY2tzIGFyZSBpbmNyZWFzaW5nIGluIGNsb3VkIHN5c3RlbXMuIEluIHRoZXNlIGF0dGFja3MgaGFja2VycyB0cnkgdG8gZmluZCBiYWNrdXBzIGZpcnN0IGFuZCB0aGVuIGRlbGV0ZSBvciBsb2NrIHRoZW0uIElmIHlvdXIgYmFja3VwcyBhcmUgaW4gdGhlIHNhbWUgcGxhY2UgYXMgeW91ciBtYWluIGRhdGEgb25lIGF0dGFjayBjYW4gZGVzdHJveSBldmVyeXRoaW5nLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5JbiBjbG91ZCBzeXN0ZW1zIHRoaXMgbWVhbnMgeW91ciBtYWluIGRhdGEgaW4geW91ciBtYWluIGFjY291bnQsIG9uZSBiYWNrdXAgaW4gYW5vdGhlciByZWdpb24gYW5kIG9uZSBiYWNrdXAgaW4gYSB0b3RhbGx5IGRpZmZlcmVudCBjbG91ZCBhY2NvdW50IHdpdGggc2VwYXJhdGUgbG9naW4gZGV0YWlscy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+Q2xvdWQgc2VydmljZXMgcHJvdmlkZSBzcGVjaWFsIHN0b3JhZ2Ugb3B0aW9ucyB3aGVyZSBiYWNrdXBzIGFyZSBsb2NrZWQuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+RXZlbiBpZiBhIGhhY2tlciBnZXRzIGFjY2VzcyB0byB5b3VyIG1haW4gYWNjb3VudCB0aGV5IGNhbm5vdCBkZWxldGUgb3IgY2hhbmdlIHRoZXNlIGxvY2tlZCBiYWNrdXBzLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5TY2hlZHVsZSByZXN0b3JhdGlvbiB0ZXN0cyBldmVyeSBxdWFydGVyLiBQaWNrIGEgcmFuZG9tIGJhY2t1cC4gUmVzdG9yZSBpdCB0byBhIHRlc3QgZW52aXJvbm1lbnQuIFZlcmlmeSB0aGUgZGF0YSBpcyBpbnRhY3QgYW5kIGFwcGxpY2F0aW9ucyB3b3JrIGNvcnJlY3RseS4gTWVhc3VyZSBob3cgbG9uZyBpdCB0YWtlcy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5UaGlzIHNlcnZlcyB0d28gcHVycG9zZXM6IGl0IGNvbmZpcm1zIHlvdXIgYmFja3VwcyBhY3R1YWxseSB3b3JrLCBhbmQgaXQgdGVsbHMgeW91IHlvdXIgcmVjb3ZlcnkgdGltZSDigJQgd2hpY2ggeW91IG5lZWQgdG8ga25vdyBiZWZvcmUgYSBjcmlzaXMsIG5vdCBkdXJpbmcgb25lLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkRvY3VtZW50IHlvdXIgcmVjb3ZlcnkgcHJvY2VzcyBzdGVwIGJ5IHN0ZXAuIEluIGFuIGluY2lkZW50LCB5b3Ugd2FudCBwZW9wbGUgZm9sbG93aW5nIGEgY2xlYXIgY2hlY2tsaXN0LCBub3QgZmlndXJpbmcgdGhpbmdzIG91dCB1bmRlciBwcmVzc3VyZS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+QVBJcyBhcmUgdGhlIG5lcnZvdXMgc3lzdGVtIG9mIG1vZGVybiBjbG91ZCBhcHBsaWNhdGlvbnMuIFRoZXkgY29ubmVjdCB5b3VyIHNlcnZpY2VzLCBwb3dlciB5b3VyIG1vYmlsZSBhcHBzLCBsZXQgdGhpcmQgcGFydGllcyBpbnRlZ3JhdGUgd2l0aCB5b3VyIHBsYXRmb3JtLiBUaGV5IGFyZSBhbHNvIGNvbnNpc3RlbnRseSBvbmUgb2YgdGhlIG1vc3QgZXhwbG9pdGVkIGF0dGFjayBzdXJmYWNlcy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5UaGUgT1dBU1AgQVBJIFNlY3VyaXR5IFRvcCAxMCDigJQgYSBkZWZpbml0aXZlIGd1aWRlIHRvIEFQSSB2dWxuZXJhYmlsaXRpZXMg4oCUIGlkZW50aWZpZXMgYnJva2VuIGF1dGhlbnRpY2F0aW9uLCBleGNlc3NpdmUgZGF0YSBleHBvc3VyZSwgYW5kIGxhY2sgb2YgcmF0ZSBsaW1pdGluZyBhcyB0aGUgbW9zdCBjb21tb24gaXNzdWVzLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5FdmVyeSBBUEkgZW5kcG9pbnQgc2hvdWxkIHJlcXVpcmUgYXV0aGVudGljYXRpb24uIE5vIGV4Y2VwdGlvbnMuIFVzZSBpbmR1c3RyeSBzdGFuZGFyZHMgbGlrZSBPQXV0aCAyLjAgd2l0aCBKV1QgdG9rZW5zIGZvciB1c2VyLWZhY2luZyBBUElzLiBVc2UgQVBJIGtleXMgd2l0aCBzdHJpY3Qgc2NvcGVzIGZvciBzZXJ2aWNlLXRvLXNlcnZpY2UgY29tbXVuaWNhdGlvbi48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5BcHBseSBhdXRob3JpemF0aW9uIGF0IHRoZSBkYXRhIGxldmVsLiBBIHVzZXIgYXV0aGVudGljYXRlZCB0byB5b3VyIEFQSSBzaG91bGQgb25seSBzZWUgdGhlaXIgb3duIGRhdGEsIG5vdCBldmVyeWJvZHkncyBkYXRhLiBUaGlzIGtpbmQgb2YgdnVsbmVyYWJpbGl0eSDigJQgY2FsbGVkIEJPTEEgKEJyb2tlbiBPYmplY3QgTGV2ZWwgQXV0aG9yaXphdGlvbikg4oCUIGlzIHRoZSBtb3N0IGNvbW1vbiBBUEkgZmxhdyBmb3VuZCBpbiBzZWN1cml0eSBhdWRpdHMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+CgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPldpdGhvdXQgcmF0ZSBsaW1pdGluZywgYXR0YWNrZXJzIGNhbiBoYW1tZXIgeW91ciBBUEkgd2l0aCB0aG91c2FuZHMgb2YgcmVxdWVzdHMgcGVyIHNlY29uZC4gVGhpcyBjYW4gYmUgdXNlZCB0byBicnV0ZS1mb3JjZSBhdXRoZW50aWNhdGlvbiwgc2NyYXBlIHNlbnNpdGl2ZSBkYXRhLCBvciB0YWtlIHlvdXIgc2VydmljZSBkb3duLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlNldCByYXRlIGxpbWl0cyBwZXIgdXNlciwgcGVyIElQLCBhbmQgcGVyIEFQSSBrZXkuIEFsZXJ0IHdoZW4gbGltaXRzIGFyZSBjb25zaXN0ZW50bHkgYmVpbmcgaGl0LjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5OZXZlciB0cnVzdCBkYXRhIGNvbWluZyBpbnRvIHlvdXIgQVBJLiBWYWxpZGF0ZSBldmVyeSBmaWVsZC4gUmVqZWN0IHVuZXhwZWN0ZWQgaW5wdXRzLiBVc2UgcGFyYW1ldGVyaXplZCBxdWVyaWVzIHRvIHByZXZlbnQgU1FMIGluamVjdGlvbi4gU2FuaXRpemUgaW5wdXRzIHRvIHByZXZlbnQgc2NyaXB0IGluamVjdGlvbi48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+TWFpbnRhaW4gYSBjb21wbGV0ZSBpbnZlbnRvcnkgb2YgYWxsIHlvdXIgQVBJcyDigJQgaW50ZXJuYWwgYW5kIGV4dGVybmFsLiBVbm9mZmljaWFsLCB1bmRvY3VtZW50ZWQgQVBJcyBhcmUgY29tbW9uIGFuZCBkYW5nZXJvdXMuIFRoZXkgdGVuZCB0byBsYWNrIHByb3BlciBzZWN1cml0eSBjb250cm9scyBiZWNhdXNlIG5vYm9keSBpcyBmb3JtYWxseSByZXNwb25zaWJsZSBmb3IgdGhlbS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Mb2cgYWxsIEFQSSBjYWxscyB3aXRoIHRpbWVzdGFtcHMsIHVzZXIgaWRlbnRpdGllcywgSVAgYWRkcmVzc2VzLCBhbmQgcmVzcG9uc2UgY29kZXMuIFJldmlldyBsb2dzIGZvciB1bnVzdWFsIHBhdHRlcm5zLiBBIHNpbmdsZSBhY2NvdW50IGNhbGxpbmcgYSBzZW5zaXRpdmUgZW5kcG9pbnQgdGhvdXNhbmRzIG9mIHRpbWVzIGRlc2VydmVzIGF0dGVudGlvbi48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5SdW4gcmVndWxhciBBUEkgc2VjdXJpdHkgdGVzdGluZy4gVG9vbHMgbGlrZSBPV0FTUCBaQVAgYW5kIFBvc3RtYW4gY2FuIGF1dG9tYXRlIG1hbnkgY2hlY2tzLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5UZWNobm9sb2d5IGFsb25lIGNhbm5vdCBwcm90ZWN0IHlvdS4gWW91ciBwZW9wbGUgaW50ZXJhY3Qgd2l0aCB5b3VyIGNsb3VkIGVudmlyb25tZW50IGV2ZXJ5IGRheS4gT25lIHdyb25nIGNsaWNrIGNhbiBieXBhc3MgZXZlcnkgdGVjaG5pY2FsIGNvbnRyb2wgeW91IGhhdmUgaW4gcGxhY2UuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+SW4gMjAyNSwgcGhpc2hpbmcgcmVtYWluZWQgdGhlIGluaXRpYWwgYXR0YWNrIHZlY3RvciBpbiBvdmVyIDM2JSBvZiBjbG91ZCBicmVhY2hlcy4gVGhlc2UgYXJlIG5vdCBjcnVkZSwgb2J2aW91c2x5IHN1c3BpY2lvdXMgZW1haWxzLiBNb2Rlcm4gcGhpc2hpbmcgZW1haWxzIGFyZSBjYXJlZnVsbHkgY3JhZnRlZCwgcGVyc29uYWxpemVkLCBhbmQgZGVzaWduZWQgdG8gY3JlYXRlIHVyZ2VuY3kuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+QXR0YWNrZXJzIHJlc2VhcmNoIHlvdXIgY29tcGFueS4gVGhleSBrbm93IHdobyB5b3VyIENFTyBpcy4gVGhleSBrbm93IHdoYXQgdG9vbHMgeW91IHVzZS4gVGhleSBzZW5kIGVtYWlscyB0aGF0IGxvb2sgbGlrZSB0aGV5IGNhbWUgZnJvbSB5b3VyIGNsb3VkIHByb3ZpZGVyIHNheWluZyB5b3VyIGFjY291bnQgaXMgYWJvdXQgdG8gYmUgc3VzcGVuZGVkLiBPciBmcm9tIEhSIHdpdGggYSBsaW5rIHRvIG9wZW4gZW5yb2xsbWVudC4gT25lIGNsaWNrIGFuZCBjcmVkZW50aWFscyBhcmUgc3RvbGVuLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5QaGlzaGluZyBhd2FyZW5lc3MgbWVhbnMgbGVhcm5pbmcgaG93IHRvIGZpbmQgZmFrZSBlbWFpbHMuIFlvdSBzaG91bGQgY2hlY2sgaWYgdGhlIGVtYWlsIGxvb2tzIHN0cmFuZ2Ugb3IgdW5zYWZlLiBBbHdheXMgY2hlY2sgdGhlIHNlbmRlciBiZWZvcmUgdHJ1c3RpbmcgaXQuIElmIHNvbWV0aGluZyBmZWVscyB3cm9uZyBkbyBub3QgY2xpY2sgaXQuIFVzZSByZWFsIGV4YW1wbGVzIHRvIHVuZGVyc3RhbmQgYmV0dGVyLiBDb21wYW5pZXMgYWxzbyBzZW5kIGZha2UgdGVzdCBlbWFpbHMgdG8gc2VlIHdobyBjbGlja3Mgb24gdGhlbSBhbmQgdGhlbiBnaXZlIGV4dHJhIHRyYWluaW5nLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlBhc3N3b3JkIGh5Z2llbmUgbWVhbnMgdXNpbmcgcGFzc3dvcmRzIGluIGEgc2FmZSB3YXkuIFBhc3N3b3JkIG1hbmFnZXJzIGhlbHAgeW91IGNyZWF0ZSBhbmQgc3RvcmUgc3Ryb25nIHBhc3N3b3Jkcy4gTmV2ZXIgdXNlIHRoZSBzYW1lIHBhc3N3b3JkIGV2ZXJ5d2hlcmUuIElmIHlvdSB0aGluayB5b3VyIHBhc3N3b3JkIGlzIHN0b2xlbiwgY2hhbmdlIGl0IGltbWVkaWF0ZWx5LjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlNhZmUgaGFuZGxpbmcgb2YgY3JlZGVudGlhbHMgbWVhbnMgbmV2ZXIgc2hhcmluZyB5b3VyIHBhc3N3b3JkcyB3aXRoIGFueW9uZS4gRG8gbm90IHBhc3RlIHBhc3N3b3JkcyBpbiBjaGF0IHRvb2xzLiBEbyBub3Qgc2F2ZSB0aGVtIGluIGZpbGVzIG9yIGNvZGUuIEtlZXAgdGhlbSBwcml2YXRlIGFsd2F5cy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5JbmNpZGVudCByZXBvcnRpbmcgbWVhbnMgdGVsbGluZyB5b3VyIHRlYW0gaWYgc29tZXRoaW5nIGxvb2tzIHN1c3BpY2lvdXMuIEl0IHNob3VsZCBiZSBlYXN5IGFuZCBzYWZlIHRvIHJlcG9ydCBwcm9ibGVtcy4gVGhlcmUgc2hvdWxkIGJlIG5vIGJsYW1lIG9yIHB1bmlzaG1lbnQuIEV2ZXJ5b25lIHNob3VsZCBmZWVsIGZyZWUgdG8gcmVwb3J0IGlzc3Vlcy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5EZXZpY2Ugc2VjdXJpdHkgbWVhbnMga2VlcGluZyB5b3VyIHdvcmsgZGV2aWNlIHNhZmUuIExvY2sgeW91ciBzY3JlZW4gd2hlbiB5b3UgbGVhdmUgeW91ciBzeXN0ZW0uIElmIHlvdXIgZGV2aWNlIGlzIGxvc3Qgb3Igc3RvbGVuIHJlcG9ydCBpdCBpbW1lZGlhdGVseS4gRG8gbm90IHVzZSBwZXJzb25hbCBkZXZpY2VzIGZvciB3b3JrIHdpdGhvdXQgcGVybWlzc2lvbi48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VHJhaW5pbmcgc2hvdWxkIG1hdGNoIHRoZSBqb2Igcm9sZS4gRGlmZmVyZW50IHBlb3BsZSBuZWVkIGRpZmZlcmVudCBsZXNzb25zIGJhc2VkIG9uIHRoZWlyIHdvcmsuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+UmVndWxhciB0ZXN0cyBhcmUgaW1wb3J0YW50LiBGYWtlIHBoaXNoaW5nIGVtYWlscyBzaG91bGQgYmUgc2VudCBldmVyeSBmZXcgbW9udGhzIHRvIGNoZWNrIGF3YXJlbmVzcy4gVHJhY2sgcmVzdWx0cyBhbmQgaW1wcm92ZSBvdmVyIHRpbWUuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+U2VjdXJpdHkgY3VsdHVyZSBzdGFydHMgZnJvbSBsZWFkZXJzLiBJZiBsZWFkZXJzIHRha2Ugc2VjdXJpdHkgc2VyaW91c2x5IG90aGVycyB3aWxsIGFsc28gZm9sbG93LjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5FdmVuIHdpdGggYWxsIHRoZXNlIGNvbnRyb2xzIGluIHBsYWNlLCBzb21ldGhpbmcgd2lsbCBldmVudHVhbGx5IGdvIHdyb25nLiBBIG1pc2NvbmZpZ3VyYXRpb24gd2lsbCBzbGlwIHRocm91Z2guIEFuIGF0dGFja2VyIHdpbGwgZmluZCBhIGdhcC4gQW4gZW1wbG95ZWUgd2lsbCBjbGljayBzb21ldGhpbmcgdGhleSBzaG91bGQgbm90IGhhdmUuIG9wZW5seSwgZXZlcnlvbmUgZWxzZSBmb2xsb3dzPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+V2hhdCBzZXBhcmF0ZXMgY29tcGFuaWVzIHRoYXQgcmVjb3ZlciBxdWlja2x5IGZyb20gdGhvc2UgdGhhdCBzdWZmZXIgY2F0YXN0cm9waGljIGRhbWFnZSBpcyBub3Qgd2hldGhlciB0aGV5IGdvdCBicmVhY2hlZCDigJQgaXQgaXMgaG93IHByZXBhcmVkIHRoZXkgd2VyZSB3aGVuIGl0IGhhcHBlbmVkLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkFuIGluY2lkZW50IHJlc3BvbnNlIHBsYW4gaXMgeW91ciBkb2N1bWVudGVkIHBsYXlib29rIGZvciBoYW5kbGluZyBzZWN1cml0eSBpbmNpZGVudHMuIEl0IHJlbW92ZXMgY29uZnVzaW9uLCByZWR1Y2VzIHJlc3BvbnNlIHRpbWUsIGFuZCBsaW1pdHMgZGFtYWdlLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD48c3Ryb25nPlByZXBhcmF0aW9uPC9zdHJvbmc+IOKAlCBCdWlsZCB0aGUgcGxhbiBiZWZvcmUgeW91IG5lZWQgaXQuIERlZmluZSByb2xlcyBhbmQgcmVzcG9uc2liaWxpdGllcy4gTWFrZSBzdXJlIGV2ZXJ5b25lIGtub3dzIHdoYXQgdG8gZG8uIEhhdmUgY29udGFjdCBsaXN0cyByZWFkeS4gU2V0IHVwIHRoZSB0b29scyB5b3Ugd2lsbCBuZWVkLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPjxzdHJvbmc+RGV0ZWN0aW9uIGFuZCBBbmFseXNpczwvc3Ryb25nPiDigJQgSG93IGRvIHlvdSBmaW5kIG91dCBhbiBpbmNpZGVudCBpcyBoYXBwZW5pbmc\/IFdoYXQgYXJlIHRoZSBpbml0aWFsIHN0ZXBzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlPyBXaG8gZ2V0cyBub3RpZmllZCBhbmQgaW4gd2hhdCBvcmRlcj88L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD48c3Ryb25nPkNvbnRhaW5tZW50PC9zdHJvbmc+IOKAlCBIb3cgZG8geW91IHN0b3AgdGhlIGluY2lkZW50IGZyb20gc3ByZWFkaW5nPyBEbyB5b3UgaXNvbGF0ZSBjb21wcm9taXNlZCBzeXN0ZW1zPyBSb3RhdGUgY3JlZGVudGlhbHM\/IEJsb2NrIHN1c3BpY2lvdXMgSVAgYWRkcmVzc2VzPyBTaG9ydC10ZXJtIGNvbnRhaW5tZW50IGlzIGFib3V0IHN0b3BwaW5nIHRoZSBibGVlZGluZy4gTG9uZy10ZXJtIGNvbnRhaW5tZW50IGlzIGFib3V0IG1haW50YWluaW5nIG9wZXJhdGlvbnMgd2hpbGUgeW91IGludmVzdGlnYXRlLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPjxzdHJvbmc+RXJhZGljYXRpb248L3N0cm9uZz4g4oCUIFJlbW92ZSB0aGUgYXR0YWNrZXIgZnJvbSB5b3VyIGVudmlyb25tZW50LiBDbG9zZSB0aGUgdnVsbmVyYWJpbGl0eSB0aGV5IHVzZWQuIFZlcmlmeSBubyBiYWNrZG9vcnMgd2VyZSBsZWZ0IGJlaGluZC48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD48c3Ryb25nPlJlY292ZXJ5PC9zdHJvbmc+IOKAlCBSZXN0b3JlIG5vcm1hbCBvcGVyYXRpb25zLiBCcmluZyBzeXN0ZW1zIGJhY2sgb25saW5lIGNhcmVmdWxseS4gVmVyaWZ5IGludGVncml0eSBiZWZvcmUgcmVjb25uZWN0aW5nIHRvIHByb2R1Y3Rpb24uPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+PHN0cm9uZz5Qb3N0LUluY2lkZW50IFJldmlldzwvc3Ryb25nPiDigJQgV2hhdCBoYXBwZW5lZD8gSG93IGRpZCB0aGUgYXR0YWNrZXIgZ2V0IGluPyBXaGF0IGRldGVjdGlvbiBmYWlsdXJlcyBhbGxvd2VkIHRoZW0gdG8gb3BlcmF0ZSB1bmRldGVjdGVkPyBXaGF0IHdvdWxkIHlvdSBkbyBkaWZmZXJlbnRseT8gVGhpcyBwaGFzZSBpcyB3aGVyZSBzZWN1cml0eSBnZXRzIGJldHRlciBvdmVyIHRpbWUuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+PHN0cm9uZz5QcmFjdGljaW5nIHRoZSBwbGFuPC9zdHJvbmc+PC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+V3JpdGluZyBhIHBsYW4gaXMgbm90IGVub3VnaC4gUHJhY3RpY2UgaXQuIFJ1biB0YWJsZXRvcCBleGVyY2lzZXMgd2hlcmUgeW91IHdhbGsgdGhyb3VnaCBhIGh5cG90aGV0aWNhbCBzY2VuYXJpbyDigJQgYSByYW5zb213YXJlIGF0dGFjaywgYSBjcmVkZW50aWFsIGNvbXByb21pc2UsIGEgZGF0YSBsZWFrIOKAlCBhbmQgdGFsayB0aHJvdWdoIHRoZSByZXNwb25zZS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5UaGVuIHJ1biBzaW11bGF0aW9ucyB3aGVyZSB5b3UgYWN0dWFsbHkgZXhlY3V0ZSBwYXJ0cyBvZiB0aGUgcGxhbi4gUm90YXRlIGNyZWRlbnRpYWxzLiBJc29sYXRlIGEgc3lzdGVtLiBSZXN0b3JlIGZyb20gYmFja3VwLiBGaW5kIG91dCB3aGF0IGlzIGhhcmRlciB0aGFuIGV4cGVjdGVkIGJlZm9yZSBhIHJlYWwgaW5jaWRlbnQgZm9yY2VzIHlvdXIgaGFuZC48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5SZXZpZXcgYW5kIHVwZGF0ZSB0aGUgcGxhbiBhdCBsZWFzdCBhbm51YWxseSwgYW5kIGFmdGVyIGFueSBzaWduaWZpY2FudCBjaGFuZ2UgdG8geW91ciBjbG91ZCBlbnZpcm9ubWVudCBvciBhZnRlciBhbnkgcmVhbCBpbmNpZGVudC48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD48c3Ryb25nPldoYXQgdG8gaW5jbHVkZSBpbiB0aGUgcGxhbjwvc3Ryb25nPjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpsaXN0IC0tPgo8dWwgY2xhc3M9IndwLWJsb2NrLWxpc3QiPjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+Q29udGFjdCBsaXN0IGZvciB0aGUgcmVzcG9uc2UgdGVhbSwgY2xvdWQgcHJvdmlkZXIgc3VwcG9ydCwgbGVnYWwgY291bnNlbCwgUFI8L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPkNsYXNzaWZpY2F0aW9uIGNyaXRlcmlhIOKAlCB3aGF0IGNvdW50cyBhcyBhIG1pbm9yIGluY2lkZW50IHZzLiBhIG1ham9yIGJyZWFjaDwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+RGVjaXNpb24gdHJlZSBmb3IgY29tbW9uIGluY2lkZW50IHR5cGVzPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT5Db21tdW5pY2F0aW9uIHRlbXBsYXRlcyBmb3IgaW50ZXJuYWwgbm90aWZpY2F0aW9uIGFuZCBleHRlcm5hbCBkaXNjbG9zdXJlPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT5SZWd1bGF0b3J5IHJlcG9ydGluZyByZXF1aXJlbWVudHMgYW5kIHRpbWVsaW5lcyAoR0RQUiA3Mi1ob3VyIHJ1bGUsIGZvciBleGFtcGxlKTwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+QmFja3VwIGFuZCByZWNvdmVyeSBwcm9jZWR1cmVzPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT5Qb3N0LWluY2lkZW50IHJldmlldyB0ZW1wbGF0ZTwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT48L3VsPgo8IS0tIC93cDpsaXN0IC0tPgoKPCEtLSB3cDpoZWFkaW5nIC0tPgo8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+Qm9udXM6IEtleSBQcmluY2lwbGVzIHRvIEtlZXAgaW4gTWluZDwvc3Ryb25nPjwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+QmV5b25kIHRoZXNlIHRlbiBzdHJhdGVnaWVzLCB0aGVyZSBhcmUgYSBmZXcgYnJvYWRlciBwcmluY2lwbGVzIHRoYXQgY2FuIHN0cmVuZ3RoZW4geW91ciBvdmVyYWxsIGNsb3VkIHByb3RlY3Rpb24gc3RyYXRlZ3kuIFVuZGVyc3RhbmRpbmcgdGhlc2UgY29uY2VwdHMgd2lsbCBoZWxwIHlvdSBhcHBseSB0aGUgcmlnaHQgPHN0cm9uZz5jbG91ZCBzZWN1cml0eSB0aXBzPC9zdHJvbmc+IG1vcmUgZWZmZWN0aXZlbHkgYWNyb3NzIHlvdXIgb3JnYW5pemF0aW9uLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+U2hhcmVkIHJlc3BvbnNpYmlsaXR5IG1vZGVsPC9zdHJvbmc+PC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5DbG91ZCBwcm92aWRlcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBzZWN1cmluZyB0aGUgaW5mcmFzdHJ1Y3R1cmUgaXRzZWxmLCBidXQgeW91IGFyZSByZXNwb25zaWJsZSBmb3Igc2VjdXJpbmcgZXZlcnl0aGluZyB5b3UgcGxhY2UgaW5zaWRlIHRoZSBjbG91ZCDigJQgaW5jbHVkaW5nIHlvdXIgZGF0YSwgdXNlciBhY2Nlc3MsIGNvbmZpZ3VyYXRpb25zLCBhbmQgYXBwbGljYXRpb25zLiBNYW55IG9yZ2FuaXphdGlvbnMgbWlzdGFrZW5seSBhc3N1bWUgdGhhdCB0aGUgY2xvdWQgcHJvdmlkZXIgaGFuZGxlcyBhbGwgc2VjdXJpdHkgdGFza3MuIEluIHJlYWxpdHksIG1pc2NvbmZpZ3VyZWQgc3RvcmFnZSwgd2VhayBhY2Nlc3MgY29udHJvbHMsIGFuZCBleHBvc2VkIGFwcGxpY2F0aW9ucyBhcmUgc3RpbGwgdGhlIGN1c3RvbWVy4oCZcyByZXNwb25zaWJpbGl0eS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPlplcm8gdHJ1c3Q8L3N0cm9uZz48L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRyYWRpdGlvbmFsIHNlY3VyaXR5IG1vZGVscyBmb2xsb3dlZCB0aGUgaWRlYSBvZiDigJx0cnVzdCBidXQgdmVyaWZ5LuKAnSBNb2Rlcm4gY2xvdWQgZW52aXJvbm1lbnRzIG5vdyBmb2xsb3cgYSB6ZXJvLXRydXN0IGFwcHJvYWNoLCB3aGljaCBtZWFucyDigJxuZXZlciB0cnVzdCwgYWx3YXlzIHZlcmlmeS7igJ0gTm8gdXNlciwgZGV2aWNlLCBvciBzZXJ2aWNlIHNob3VsZCByZWNlaXZlIGF1dG9tYXRpYyB0cnVzdCBzaW1wbHkgYmVjYXVzZSBpdCBleGlzdHMgaW5zaWRlIHRoZSBuZXR3b3JrLiBFdmVyeSBhY2Nlc3MgcmVxdWVzdCBzaG91bGQgYmUgYXV0aGVudGljYXRlZCwgdmFsaWRhdGVkLCBhbmQgbW9uaXRvcmVkIGNvbnRpbnVvdXNseS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPlNlY3VyaXR5IGFzIGFuIG9uZ29pbmcgcHJvY2Vzczwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+Q2xvdWQgc2VjdXJpdHkgaXMgbm90IGEgb25lLXRpbWUgcHJvamVjdC4gVGhyZWF0cyBldm9sdmUgY29uc3RhbnRseSwgYW5kIHlvdXIgY2xvdWQgaW5mcmFzdHJ1Y3R1cmUgY2hhbmdlcyBvdmVyIHRpbWUgYXMgeW91ciBidXNpbmVzcyBncm93cy4gUmVndWxhciBhdWRpdHMsIHVwZGF0ZXMsIG1vbml0b3JpbmcsIGVtcGxveWVlIGF3YXJlbmVzcywgYW5kIGNvbnRpbnVvdXMgaW1wcm92ZW1lbnRzIGFyZSBlc3NlbnRpYWwgcGFydHMgb2YgbG9uZy10ZXJtIHNlY3VyaXR5IG1hbmFnZW1lbnQuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6M30gLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5EZWZlbnNlIGluIGRlcHRoPC9zdHJvbmc+PC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5OZXZlciByZWx5IG9uIGEgc2luZ2xlIHNlY3VyaXR5IGNvbnRyb2wuIFN0cm9uZyBwcm90ZWN0aW9uIGNvbWVzIGZyb20gbGF5ZXJpbmcgbXVsdGlwbGUgZGVmZW5zZXMgdG9nZXRoZXIuIFBhc3N3b3JkcywgTUZBLCBlbmNyeXB0aW9uLCBtb25pdG9yaW5nIHN5c3RlbXMsIGJhY2t1cHMsIGZpcmV3YWxscywgYW5kIGFjY2VzcyByZXN0cmljdGlvbnMgd29yayBiZXN0IHdoZW4gY29tYmluZWQuIE9uZSBvZiB0aGUgbW9zdCB2YWx1YWJsZSA8c3Ryb25nPmNsb3VkIHNlY3VyaXR5IHRpcHM8L3N0cm9uZz4gaXMgdG8gYnVpbGQgbXVsdGlwbGUgbGF5ZXJzIG9mIHByb3RlY3Rpb24gc28gdGhhdCBpZiBvbmUgZmFpbHMsIGFub3RoZXIgc3RpbGwgcHJvdGVjdHMgeW91ciBlbnZpcm9ubWVudC48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD48c3Ryb25nPkZpbmFsIFRob3VnaHRzPC9zdHJvbmc+PC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+Q2xvdWQgc2VjdXJpdHkgaW4gMjAyNiBpcyBubyBsb25nZXIgb3B0aW9uYWwuIEN5YmVyYXR0YWNrcyBhcmUgaW5jcmVhc2luZyBpbiBib3RoIHZvbHVtZSBhbmQgc29waGlzdGljYXRpb24sIHdoaWxlIHRoZSBjb25zZXF1ZW5jZXMgb2YgYSBkYXRhIGJyZWFjaCBjb250aW51ZSB0byBncm93IG1vcmUgc2V2ZXJlLiBGaW5hbmNpYWwgbG9zc2VzLCBsZWdhbCBwZW5hbHRpZXMsIG9wZXJhdGlvbmFsIGRvd250aW1lLCBhbmQgZGFtYWdlIHRvIGN1c3RvbWVyIHRydXN0IGNhbiBhZmZlY3QgYnVzaW5lc3NlcyBvZiBldmVyeSBzaXplLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRoZSBnb29kIG5ld3MgaXMgdGhhdCB0aGUgZnVuZGFtZW50YWxzIHN0aWxsIHdvcmsuIFN0cm9uZyBhdXRoZW50aWNhdGlvbiwgcHJvcGVyIGFjY2VzcyBtYW5hZ2VtZW50LCBlbmNyeXB0aW9uLCBtb25pdG9yaW5nLCByZWd1bGFyIHBhdGNoaW5nLCBzZWN1cmUgYmFja3VwcywgZW1wbG95ZWUgdHJhaW5pbmcsIGFuZCBpbmNpZGVudCByZXNwb25zZSBwbGFubmluZyByZW1haW4gdGhlIGZvdW5kYXRpb24gb2YgZWZmZWN0aXZlIGNsb3VkIHByb3RlY3Rpb24uPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VGhlc2Ugc3RyYXRlZ2llcyBhcmUgbm90IG92ZXJseSBjb21wbGljYXRlZCBvciBleHBlbnNpdmUuIE1vc3QgYnVzaW5lc3NlcyBjYW4gaW1wbGVtZW50IHRoZW0gYnkgY29uc2lzdGVudGx5IGZvbGxvd2luZyBwcm92ZW4gPHN0cm9uZz5jbG91ZCBzZWN1cml0eSB0aXBzPC9zdHJvbmc+IGFuZCB0cmVhdGluZyBjeWJlcnNlY3VyaXR5IGFzIGFuIG9uZ29pbmcgYnVzaW5lc3MgcHJpb3JpdHkgcmF0aGVyIHRoYW4gYW4gYWZ0ZXJ0aG91Z2h0LjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlN0YXJ0IGJ5IGZpeGluZyB5b3VyIHdlYWtlc3QgYXJlYSBmaXJzdC4gSW1wcm92ZSBvbmUgbGF5ZXIgYXQgYSB0aW1lLiBSZXZpZXcgeW91ciBzeXN0ZW1zIHJlZ3VsYXJseSBhbmQgbmV2ZXIgYXNzdW1lIHlvdXIgY29tcGFueSBpcyB0b28gc21hbGwgdG8gYmVjb21lIGEgdGFyZ2V0LjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkluIDIwMjYsIGV2ZXJ5IG9yZ2FuaXphdGlvbiBvcGVyYXRpbmcgaW4gdGhlIGNsb3VkIGZhY2VzIGN5YmVyIHJpc2tzLiBUaGUgYnVzaW5lc3NlcyB0aGF0IHN0YXkgc2VjdXJlIGFyZSB0aGUgb25lcyB0aGF0IGNvbnNpc3RlbnRseSBmb2xsb3cgYmVzdCBwcmFjdGljZXMsIG1haW50YWluIHZpc2liaWxpdHkgaW50byB0aGVpciBzeXN0ZW1zLCBhbmQgdGFrZSBzZWN1cml0eSBzZXJpb3VzbHkgZXZlcnkgc2luZ2xlIGRheS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT53aWR0aGhlaWdodDxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWltYWdlIHNpemUtZnVsbCI+PGltZyBzcmM9Imh0dHBzOi8vdXRoby5jb20vYmxvZy93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2UtNC5qcGVnIiBhbHQ9ImNsb3VkIHNlY3VyaXR5IHRpcHMiIGNsYXNzPSJ3cC1pbWFnZS0xNTI5MSIvPjwvZmlndXJlPgpzdGF0ZXNhdmVkQXRzdGF0ZXNhdmVkQnlsZXZlbDxicj48c3Ryb25nPjMuIE5vdCBFdmVyeW9uZSBvbiBZb3VyIFRlYW0gTmVlZHMgdGhlIEtleXMgdG8gRXZlcnl0aGluZyDigJQgTGltaXQgQWNjZXNzIG9uIFB1cnBvc2U8L3N0cm9uZz5jbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8YnI+PHN0cm9uZz4zLiBOb3QgRXZlcnlvbmUgb24gWW91ciBUZWFtIE5lZWRzIHRoZSBLZXlzIHRvIEV2ZXJ5dGhpbmcg4oCUIExpbWl0IEFjY2VzcyBvbiBQdXJwb3NlPC9zdHJvbmc+ZHJvcENhcGlubmVyQmxvY2tzbGV2ZWw8IS0tIHdwOmhlYWRpbmcgLS0+CjxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz4zLiBOb3QgRXZlcnlvbmUgb24gWW91ciBUZWFtIE5lZWRzIHRoZSBLZXlzIHRvIEV2ZXJ5dGhpbmcg4oCUIExpbWl0IEFjY2VzcyBvbiBQdXJwb3NlPC9zdHJvbmc+PC9oMj4KPCEtLSAvd3A6aGVhZGluZyAtLT4KbGV2ZWxsZXZlbGxldmVsb3JkZXJlZHZhbHVlc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+Ny4gQSBCYWNrdXAgTm9ib2R5IEhhcyBUZXN0ZWQgSXMgSnVzdCBGYWxzZSBIb3BlIOKAlCBIZXJlIElzIEhvdyB0byBEbyBJdCBSaWdodDwvc3Ryb25nPmlubmVyQmxvY2tzPHN0cm9uZz43LiBBIEJhY2t1cCBOb2JvZHkgSGFzIFRlc3RlZCBJcyBKdXN0IEZhbHNlIEhvcGUg4oCUIEhlcmUgSXMgSG93IHRvIERvIEl0IFJpZ2h0PC9zdHJvbmc+bGV2ZWxsZXZlbGxldmVsPCEtLSB3cDpoZWFkaW5nIC0tPgo8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+NC4gRXZlbiBJZiBZb3VyIERhdGEgR2V0cyBTdG9sZW4sIEVuY3J5cHRpb24gTWFrZXMgSXQgQ29tcGxldGVseSBVc2VsZXNzIHRvIEF0dGFja2Vyczwvc3Ryb25nPjwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+CjwhLS0gd3A6aGVhZGluZyAtLT4KPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPjUuIFlvdSBDYW5ub3QgU3RvcCBhIEJyZWFjaCBZb3UgTmV2ZXIgU2VlIENvbWluZyDigJQgU2V0IFVwIENvbnRpbnVvdXMgTW9uaXRvcmluZyBUb2RheTwvc3Ryb25nPjwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+CjwhLS0gd3A6aGVhZGluZyAtLT4KPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPjYuIEV2ZXJ5IFVucGF0Y2hlZCBTeXN0ZW0gSXMgYW4gT3BlbiBJbnZpdGF0aW9uIOKAlCBQYXRjaCBCZWZvcmUgQXR0YWNrZXJzIFdhbGsgVGhyb3VnaDwvc3Ryb25nPjwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+CjwhLS0gd3A6aGVhZGluZyAtLT4KPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPjcuIEEgQmFja3VwIE5vYm9keSBIYXMgVGVzdGVkIElzIEp1c3QgRmFsc2UgSG9wZSDigJQgSGVyZSBJcyBIb3cgdG8gRG8gSXQgUmlnaHQ8L3N0cm9uZz48L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgo8IS0tIHdwOmhlYWRpbmcgLS0+CjxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz44LiBBUElzIEFyZSB0aGUgU2lkZSBEb29yIEhhY2tlcnMgTG92ZSBNb3N0IOKAlCBMb2NrIFRoZW0gRG93biBCZWZvcmUgU29tZW9uZSBTbGlwcyBUaHJvdWdoPC9zdHJvbmc+PC9oMj4KPCEtLSAvd3A6aGVhZGluZyAtLT4KPCEtLSB3cDpoZWFkaW5nIC0tPgo8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+OS4gWW91ciBUZWFtIElzIEJvdGggWW91ciBTdHJvbmdlc3QgQXNzZXQgYW5kIFlvdXIgQmlnZ2VzdCBTZWN1cml0eSBSaXNrIOKAlCBUcmFpbiBUaGVtIFdlbGw8L3N0cm9uZz48L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgpsZXZlbDwhLS0gd3A6aGVhZGluZyAtLT4KPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPjEwLiBBIEJyZWFjaCBXaWxsIEhhcHBlbiBPbmUgRGF5IOKAlCBZb3VyIEluY2lkZW50IFJlc3BvbnNlIFBsYW4gSXMgV2hhdCBTYXZlcyBZb3U8L3N0cm9uZz48L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgpjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRXaGVuIHlvdSBnaXZlIHRvbyBtdWNoIGFjY2VzcyB5b3UgY3JlYXRlIG1vcmUgcmlzay4gSWYgYW4gYWNjb3VudCB3aXRoIHRvbyBtdWNoIHBvd2VyIGdldHMgaGFja2VkIHRocm91Z2ggcGhpc2hpbmcgYSB3ZWFrIHBhc3N3b3JkIG9yIGEgc3RvbGVuIGRldmljZSB0aGUgYXR0YWNrZXIgZ2V0cyBhbGwgdGhhdCBwb3dlciB0b28uIExlc3MgYWNjZXNzIG1lYW5zIGxlc3MgZGFtYWdlLmRyb3BDYXBpbm5lckJsb2Nrc1doZW4geW91IGdpdmUgdG9vIG11Y2ggYWNjZXNzIHlvdSBjcmVhdGUgbW9yZSByaXNrLiBJZiBhbiBhY2NvdW50IHdpdGggdG9vIG11Y2ggcG93ZXIgZ2V0cyBoYWNrZWQgdGhyb3VnaCBwaGlzaGluZyBhIHdlYWsgcGFzc3dvcmQgb3IgYSBzdG9sZW4gZGV2aWNlIHRoZSBhdHRhY2tlciBnZXRzIGFsbCB0aGF0IHBvd2VyIHRvby4gTGVzcyBhY2Nlc3MgbWVhbnMgbGVzcyBkYW1hZ2UuY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50V2hlbiB5b3UgZ2l2ZSB0b28gbXVjaCBhY2Nlc3MgeW91IGNyZWF0ZSBtb3JlIHJpc2suIElmIGFuIGFjY291bnQgd2l0aCB0b28gbXVjaCBwb3dlciBnZXRzIGhhY2tlZCB0aHJvdWdoIHBoaXNoaW5nIGEgd2VhayBwYXNzd29yZCBvciBhIHN0b2xlbiBkZXZpY2UgdGhlIGF0dGFja2VyIGdldHMgYWxsIHRoYXQgcG93ZXIgdG9vLiBMZXNzIGFjY2VzcyBtZWFucyBsZXNzIGRhbWFnZS5kcm9wQ2FwaW5uZXJCbG9ja3NsZXZlbGNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFN0YXJ0IHdpdGggYSBjaGVjayBvZiBhbGwgYWNjb3VudHMgYW5kIGFjY2Vzcy4gTG9vayBhdCB5b3VyIGNsb3VkIHN5c3RlbSBhbmQgc2VlIHdobyBjYW4gdXNlIHdoYXQuIFlvdSB3aWxsIG9mdGVuIGZpbmQgb2xkIGFjY291bnRzIHdpdGggZXh0cmEgcm9sZXMgYW5kIHBlcm1pc3Npb25zIHRoYXQgd2VyZSBnaXZlbiBmb3IgYSBzaG9ydCB0aW1lIGJ1dCBuZXZlciByZW1vdmVkLmRyb3BDYXBpbm5lckJsb2Nrc1N0YXJ0IHdpdGggYSBjaGVjayBvZiBhbGwgYWNjb3VudHMgYW5kIGFjY2Vzcy4gTG9vayBhdCB5b3VyIGNsb3VkIHN5c3RlbSBhbmQgc2VlIHdobyBjYW4gdXNlIHdoYXQuIFlvdSB3aWxsIG9mdGVuIGZpbmQgb2xkIGFjY291bnRzIHdpdGggZXh0cmEgcm9sZXMgYW5kIHBlcm1pc3Npb25zIHRoYXQgd2VyZSBnaXZlbiBmb3IgYSBzaG9ydCB0aW1lIGJ1dCBuZXZlciByZW1vdmVkLmNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFN0YXJ0IHdpdGggYSBjaGVjayBvZiBhbGwgYWNjb3VudHMgYW5kIGFjY2Vzcy4gTG9vayBhdCB5b3VyIGNsb3VkIHN5c3RlbSBhbmQgc2VlIHdobyBjYW4gdXNlIHdoYXQuIFlvdSB3aWxsIG9mdGVuIGZpbmQgb2xkIGFjY291bnRzIHdpdGggZXh0cmEgcm9sZXMgYW5kIHBlcm1pc3Npb25zIHRoYXQgd2VyZSBnaXZlbiBmb3IgYSBzaG9ydCB0aW1lIGJ1dCBuZXZlciByZW1vdmVkLmRyb3BDYXBpbm5lckJsb2Nrc2xldmVsPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+V2h5IG92ZXIgcGVybWlzc2lvbmluZyBpcyBkYW5nZXJvdXM8L3N0cm9uZz48L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPHA+V2hlbiB5b3UgZ2l2ZSB0b28gbXVjaCBhY2Nlc3MgeW91IGNyZWF0ZSBtb3JlIHJpc2suIElmIGFuIGFjY291bnQgd2l0aCB0b28gbXVjaCBwb3dlciBnZXRzIGhhY2tlZCB0aHJvdWdoIHBoaXNoaW5nIGEgd2VhayBwYXNzd29yZCBvciBhIHN0b2xlbiBkZXZpY2UgdGhlIGF0dGFja2VyIGdldHMgYWxsIHRoYXQgcG93ZXIgdG9vLiBMZXNzIGFjY2VzcyBtZWFucyBsZXNzIGRhbWFnZS48L3A+CjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPkhvdyB0byBpbXBsZW1lbnQgbGVhc3QgcHJpdmlsZWdlPC9zdHJvbmc+PC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjxwPlN0YXJ0IHdpdGggYSBjaGVjayBvZiBhbGwgYWNjb3VudHMgYW5kIGFjY2Vzcy4gTG9vayBhdCB5b3VyIGNsb3VkIHN5c3RlbSBhbmQgc2VlIHdobyBjYW4gdXNlIHdoYXQuIFlvdSB3aWxsIG9mdGVuIGZpbmQgb2xkIGFjY291bnRzIHdpdGggZXh0cmEgcm9sZXMgYW5kIHBlcm1pc3Npb25zIHRoYXQgd2VyZSBnaXZlbiBmb3IgYSBzaG9ydCB0aW1lIGJ1dCBuZXZlciByZW1vdmVkLjwvcD4KbGV2ZWxjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaGlzIHByb3RlY3RzIGRhdGEgd2hpbGUgaXQgaXMgc2F2ZWQgaW4gc3lzdGVtcyBsaWtlIGRhdGFiYXNlcywgZmlsZXMgc3RvcmFnZSBhbmQgYmFja3Vwcy4gTWFueSBjbG91ZCBzZXJ2aWNlcyB0dXJuIG9uIGVuY3J5cHRpb24gYnkgZGVmYXVsdCBidXQgeW91IHNob3VsZCBzdGlsbCBjaGVjayB5b3VyIHNldHRpbmdzIGFuZCBrbm93IHdobyBjb250cm9scyB0aGUga2V5cy5kcm9wQ2FwaW5uZXJCbG9ja3M8c3Ryb25nPjwvc3Ryb25nPmxldmVsPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+QSBwcmFjdGljYWwgZXhhbXBsZTwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8cD5UaGlzIHByb3RlY3RzIGRhdGEgd2hpbGUgaXQgaXMgc2F2ZWQgaW4gc3lzdGVtcyBsaWtlIGRhdGFiYXNlcywgZmlsZXMgc3RvcmFnZSBhbmQgYmFja3Vwcy4gTWFueSBjbG91ZCBzZXJ2aWNlcyB0dXJuIG9uIGVuY3J5cHRpb24gYnkgZGVmYXVsdCBidXQgeW91IHNob3VsZCBzdGlsbCBjaGVjayB5b3VyIHNldHRpbmdzIGFuZCBrbm93IHdobyBjb250cm9scyB0aGUga2V5cy48L3A+CmxldmVsbGV2ZWw8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6M30gLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5FbmNyeXB0aW9uIGF0IHJlc3Q8L3N0cm9uZz48L2gzPgo8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6M30gLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5FbmNyeXB0aW9uIGluIHRyYW5zaXQ8L3N0cm9uZz48L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgo8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6M30gLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5LZXkgbWFuYWdlbWVudDwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+CjwhLS0gd3A6aGVhZGluZyAtLT4KPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPjIuIEEgUGFzc3dvcmQgQWxvbmUgSXMgTm90IEVub3VnaCBBbnltb3JlIOKAlCBBZGQgYSBTZWNvbmQgTG9jayBSaWdodCBOb3c8L3N0cm9uZz48L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgpsZXZlbGxldmVsPGJyPmxldmVsPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+V2hhdCB0byBkbzwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+CjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPlJlYWwgZXhhbXBsZTwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cjxicj5vcmlnaW5hbENvbnRlbnRwbGFjZWhvbGRlcmRpcmVjdGlvbmFsaWduY2xhc3NOYW1lYmFja2dyb3VuZENvbG9ydGV4dENvbG9yZ3JhZGllbnRmb250U2l6ZWZvbnRGYW1pbHlib3JkZXJDb2xvcmFuY2hvcjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+CmNsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxicj5Mb2dpbiBldmVudHMgbGlrZSBzdWNjZXNzZnVsIGxvZ2lucyBhbmQgZmFpbGVkIGxvZ2lucy4gV2F0Y2ggZm9yIGxvZ2lucyBmcm9tIHN0cmFuZ2UgcGxhY2VzLCBzdHJhbmdlIHRpbWVzIG9yIG1hbnkgZmFpbGVkIGF0dGVtcHRzLmRyb3BDYXBwbGFjZWhvbGRlcmRpcmVjdGlvbmxvY2ttZXRhZGF0YWFsaWduY2xhc3NOYW1lc3R5bGViYWNrZ3JvdW5kQ29sb3J0ZXh0Q29sb3JncmFkaWVudGZvbnRTaXplZm9udEZhbWlseWJvcmRlckNvbG9yYW5jaG9yZml0VGV4dGlubmVyQmxvY2tzPGJyPkxvZ2luIGV2ZW50cyBsaWtlIHN1Y2Nlc3NmdWwgbG9naW5zIGFuZCBmYWlsZWQgbG9naW5zLiBXYXRjaCBmb3IgbG9naW5zIGZyb20gc3RyYW5nZSBwbGFjZXMsIHN0cmFuZ2UgdGltZXMgb3IgbWFueSBmYWlsZWQgYXR0ZW1wdHMuY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50PGJyPkxvZ2luIGV2ZW50cyBsaWtlIHN1Y2Nlc3NmdWwgbG9naW5zIGFuZCBmYWlsZWQgbG9naW5zLiBXYXRjaCBmb3IgbG9naW5zIGZyb20gc3RyYW5nZSBwbGFjZXMsIHN0cmFuZ2UgdGltZXMgb3IgbWFueSBmYWlsZWQgYXR0ZW1wdHMuZHJvcENhcHBsYWNlaG9sZGVyZGlyZWN0aW9ubG9ja21ldGFkYXRhYWxpZ25jbGFzc05hbWVzdHlsZWJhY2tncm91bmRDb2xvcnRleHRDb2xvcmdyYWRpZW50Zm9udFNpemVmb250RmFtaWx5Ym9yZGVyQ29sb3JhbmNob3JmaXRUZXh0aW5uZXJCbG9ja3NMb2dpbiBldmVudHMgbGlrZSBzdWNjZXNzZnVsIGxvZ2lucyBhbmQgZmFpbGVkIGxvZ2lucy4gV2F0Y2ggZm9yIGxvZ2lucyBmcm9tIHN0cmFuZ2UgcGxhY2VzLCBzdHJhbmdlIHRpbWVzIG9yIG1hbnkgZmFpbGVkIGF0dGVtcHRzLmNsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudExvZ2luIGV2ZW50cyBsaWtlIHN1Y2Nlc3NmdWwgbG9naW5zIGFuZCBmYWlsZWQgbG9naW5zLiBXYXRjaCBmb3IgbG9naW5zIGZyb20gc3RyYW5nZSBwbGFjZXMsIHN0cmFuZ2UgdGltZXMgb3IgbWFueSBmYWlsZWQgYXR0ZW1wdHMuZHJvcENhcGxvY2ttZXRhZGF0YXN0eWxlZml0VGV4dGlubmVyQmxvY2tzcGxhY2Vob2xkZXJkaXJlY3Rpb25hbGlnbmNsYXNzTmFtZWJhY2tncm91bmRDb2xvcnRleHRDb2xvcmdyYWRpZW50Zm9udFNpemVmb250RmFtaWx5Ym9yZGVyQ29sb3JhbmNob3JMb2dpbiBldmVudHMgbGlrZSBzdWNjZXNzZnVsIGxvZ2lucyBhbmQgZmFpbGVkIGxvZ2lucy4gV2F0Y2ggZm9yIGxvZ2lucyBmcm9tIHN0cmFuZ2UgcGxhY2VzLCBzdHJhbmdlIHRpbWVzIG9yIG1hbnkgZmFpbGVkIGF0dGVtcHRzLmNsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudExvZ2luIGV2ZW50cyBsaWtlIHN1Y2Nlc3NmdWwgbG9naW5zIGFuZCBmYWlsZWQgbG9naW5zLiBXYXRjaCBmb3IgbG9naW5zIGZyb20gc3RyYW5nZSBwbGFjZXMsIHN0cmFuZ2UgdGltZXMgb3IgbWFueSBmYWlsZWQgYXR0ZW1wdHMuZHJvcENhcGxvY2ttZXRhZGF0YXN0eWxlZml0VGV4dGlubmVyQmxvY2tzcGxhY2Vob2xkZXJkaXJlY3Rpb25hbGlnbmNsYXNzTmFtZWJhY2tncm91bmRDb2xvcnRleHRDb2xvcmdyYWRpZW50Zm9udFNpemVmb250RmFtaWx5Ym9yZGVyQ29sb3JhbmNob3I8YnI+b3JkZXJlZHZhbHVlc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+VG9vbHMgYXZhaWxhYmxlPC9zdHJvbmc+aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEFsbCBiaWcgY2xvdWQgY29tcGFuaWVzIGdpdmUgYnVpbHQgaW4gbW9uaXRvcmluZyB0b29scy4gVGhlc2UgdG9vbHMgcmVjb3JkIGFjdGl2aXR5IGFuZCBoZWxwIGZpbmQgdGhyZWF0cy4gVGhleSB3YXRjaCB5b3VyIHN5c3RlbSBhbmQgd2FybiB5b3Ugd2hlbiBzb21ldGhpbmcgbG9va3MgdW5zYWZlLmlubmVyQmxvY2tzPHN0cm9uZz5Ub29scyBhdmFpbGFibGU8L3N0cm9uZz48YnI+QWxsIGJpZyBjbG91ZCBjb21wYW5pZXMgZ2l2ZSBidWlsdCBpbiBtb25pdG9yaW5nIHRvb2xzLiBUaGVzZSB0b29scyByZWNvcmQgYWN0aXZpdHkgYW5kIGhlbHAgZmluZCB0aHJlYXRzLiBUaGV5IHdhdGNoIHlvdXIgc3lzdGVtIGFuZCB3YXJuIHlvdSB3aGVuIHNvbWV0aGluZyBsb29rcyB1bnNhZmUuPGJyPmxldmVsPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+V2hhdCB0byBtb25pdG9yPC9zdHJvbmc+PC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjxwPkxvZ2luIGV2ZW50cyBsaWtlIHN1Y2Nlc3NmdWwgbG9naW5zIGFuZCBmYWlsZWQgbG9naW5zLiBXYXRjaCBmb3IgbG9naW5zIGZyb20gc3RyYW5nZSBwbGFjZXMsIHN0cmFuZ2UgdGltZXMgb3IgbWFueSBmYWlsZWQgYXR0ZW1wdHMuPC9wPgo8YnI+PGJyPjxicj5sZXZlbGxldmVsY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50U2hvcnQgdHJhaW5pbmcgaXMgYmV0dGVyIHRoYW4gbG9uZyB0cmFpbmluZy4gU21hbGwgc2Vzc2lvbnMgZXZlcnkgbW9udGggd29yayBiZXR0ZXIgdGhhbiBvbmUgbG9uZyBzZXNzaW9uIGluIGEgeWVhci5kcm9wQ2FwaW5uZXJCbG9ja3NsZXZlbFNob3J0IHRyYWluaW5nIGlzIGJldHRlciB0aGFuIGxvbmcgdHJhaW5pbmcuIFNtYWxsIHNlc3Npb25zIGV2ZXJ5IG1vbnRoIHdvcmsgYmV0dGVyIHRoYW4gb25lIGxvbmcgc2Vzc2lvbiBpbiBhIHllYXIuY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50U2hvcnQgdHJhaW5pbmcgaXMgYmV0dGVyIHRoYW4gbG9uZyB0cmFpbmluZy4gU21hbGwgc2Vzc2lvbnMgZXZlcnkgbW9udGggd29yayBiZXR0ZXIgdGhhbiBvbmUgbG9uZyBzZXNzaW9uIGluIGEgeWVhci5kcm9wQ2FwaW5uZXJCbG9ja3NsZXZlbDwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPldoYXQgdHJhaW5pbmcgc2hvdWxkIGNvdmVyPC9zdHJvbmc+PC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+SG93IHRvIG1ha2UgdHJhaW5pbmcgc3RpY2s8L3N0cm9uZz48L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPHA+U2hvcnQgdHJhaW5pbmcgaXMgYmV0dGVyIHRoYW4gbG9uZyB0cmFpbmluZy4gU21hbGwgc2Vzc2lvbnMgZXZlcnkgbW9udGggd29yayBiZXR0ZXIgdGhhbiBvbmUgbG9uZyBzZXNzaW9uIGluIGEgeWVhci48L3A+CjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPlRoZSBzaXggcGhhc2VzIG9mIGluY2lkZW50IHJlc3BvbnNlPC9zdHJvbmc+PC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KbGV2ZWxsZXZlbGxldmVsbGV2ZWxsZXZlbGNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFRoZSBiZXN0IHByb3RlY3Rpb24gZnJvbSByYW5zb213YXJlIGlzIGltbXV0YWJsZSBiYWNrdXBzLiBUaGlzIG1lYW5zIGJhY2t1cHMgdGhhdCBjYW5ub3QgYmUgY2hhbmdlZCBvciBkZWxldGVkIGZvciBhIGZpeGVkIHRpbWUuZHJvcENhcGlubmVyQmxvY2tzbGV2ZWxjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRLZWVwIDMgY29waWVzIG9mIHlvdXIgZGF0YS4gU3RvcmUgdGhlbSBpbiAyIGRpZmZlcmVudCB0eXBlcyBvZiBzdG9yYWdlLiBLZWVwIDEgY29weSBpbiBhIGRpZmZlcmVudCBwbGFjZSBvciBzZXBhcmF0ZSBhY2NvdW50LmRyb3BDYXBpbm5lckJsb2Nrc2xldmVsY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VXNlIGF1dG9tYXRpYyBwYXRjaCB1cGRhdGVzIHdoZW4gcG9zc2libGUuIE1hbnkgY2xvdWQgdG9vbHMgY2FuIGluc3RhbGwgdXBkYXRlcyBvbiBhIHNldCBzY2hlZHVsZSB3aXRob3V0IG1hbnVhbCB3b3JrLmRyb3BDYXBpbm5lckJsb2Nrc2xldmVsY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50T3BlcmF0aW5nIHN5c3RlbXMgb24gY2xvdWQgbWFjaGluZXMuIENvbnRhaW5lciBpbWFnZXMuIEFwcCBsaWJyYXJpZXMgYW5kIGRlcGVuZGVuY2llcy4gVGhpcmQgcGFydHkgdG9vbHMgYW5kIHBsdWdpbnMuIENsb3VkIHN5c3RlbSBhZ2VudHMuIERhdGFiYXNlIHNvZnR3YXJlLmRyb3BDYXBpbm5lckJsb2NrczxwPk9wZXJhdGluZyBzeXN0ZW1zIG9uIGNsb3VkIG1hY2hpbmVzLiBDb250YWluZXIgaW1hZ2VzLiBBcHAgbGlicmFyaWVzIGFuZCBkZXBlbmRlbmNpZXMuIFRoaXJkIHBhcnR5IHRvb2xzIGFuZCBwbHVnaW5zLiBDbG91ZCBzeXN0ZW0gYWdlbnRzLiBEYXRhYmFzZSBzb2Z0d2FyZS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6M30gLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5Ib3cgdG8gbWFrZSBwYXRjaGluZyBtYW5hZ2VhYmxlPC9zdHJvbmc+PC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjxwPlVzZSBhdXRvbWF0aWMgcGF0Y2ggdXBkYXRlcyB3aGVuIHBvc3NpYmxlLiBNYW55IGNsb3VkIHRvb2xzIGNhbiBpbnN0YWxsIHVwZGF0ZXMgb24gYSBzZXQgc2NoZWR1bGUgd2l0aG91dCBtYW51YWwgd29yay48L3A+CjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPlRoZSAzIDIgMSBiYWNrdXAgcnVsZTwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8cD5LZWVwIDMgY29waWVzIG9mIHlvdXIgZGF0YS4gU3RvcmUgdGhlbSBpbiAyIGRpZmZlcmVudCB0eXBlcyBvZiBzdG9yYWdlLiBLZWVwIDEgY29weSBpbiBhIGRpZmZlcmVudCBwbGFjZSBvciBzZXBhcmF0ZSBhY2NvdW50LjwvcD4KPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+SW1tdXRhYmxlIGJhY2t1cHM8L3N0cm9uZz48L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPHA+VGhlIGJlc3QgcHJvdGVjdGlvbiBmcm9tIHJhbnNvbXdhcmUgaXMgaW1tdXRhYmxlIGJhY2t1cHMuIFRoaXMgbWVhbnMgYmFja3VwcyB0aGF0IGNhbm5vdCBiZSBjaGFuZ2VkIG9yIGRlbGV0ZWQgZm9yIGEgZml4ZWQgdGltZS48L3A+CjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPlRlc3QgeW91ciBiYWNrdXBzPC9zdHJvbmc+PC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+QXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb248L3N0cm9uZz48L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgo8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6M30gLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5SYXRlIGxpbWl0aW5nIGFuZCB0aHJvdHRsaW5nPC9zdHJvbmc+PC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+SW5wdXQgdmFsaWRhdGlvbjwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+CjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPkFQSSBpbnZlbnRvcnkgYW5kIG1vbml0b3Jpbmc8L3N0cm9uZz48L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgpjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRGb3IgdmVyeSBzZXJpb3VzIHByb2JsZW1zLCBmaXggdGhlbSB3aXRoaW4gMjQgdG8gNDggaG91cnMuIEZvciBoaWdoIGxldmVsIHByb2JsZW1zLCBmaXggdGhlbSB3aXRoaW4gNyBkYXlzLiBGb3IgbWVkaXVtIGxldmVsIHByb2JsZW1zLCBmaXggdGhlbSB3aXRoaW4gMzAgZGF5cy5kcm9wQ2FwaW5uZXJCbG9ja3NsZXZlbGxldmVsY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50QWxsIGJpZyBjbG91ZCBjb21wYW5pZXMgZ2l2ZSBidWlsdCBpbiBtb25pdG9yaW5nIHRvb2xzLiBUaGVzZSB0b29scyByZWNvcmQgYWN0aXZpdHkgYW5kIGhlbHAgZmluZCB0aHJlYXRzLiBUaGV5IHdhdGNoIHlvdXIgc3lzdGVtIGFuZCB3YXJuIHlvdSB3aGVuIHNvbWV0aGluZyBsb29rcyB1bnNhZmUuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PGJyPjxicj5GaXJzdCB1bmRlcnN0YW5kIHdoYXQgbm9ybWFsIGFjdGl2aXR5IGxvb2tzIGxpa2UgaW4geW91ciBzeXN0ZW0uIFRoZW4gY3JlYXRlIGFsZXJ0cyB3aGVuIHNvbWV0aGluZyBkaWZmZXJlbnQgaGFwcGVucy4gQSB3b3JrZXIgd2hvIGxvZ3MgaW4gZHVyaW5nIHRoZSBkYXkgZnJvbSBvbmUgY2l0eSBidXQgc3VkZGVubHkgbG9ncyBpbiBhdCBuaWdodCBmcm9tIGFub3RoZXIgY291bnRyeSBzaG91bGQgYmUgY2hlY2tlZC4gQW4gYWNjb3VudCB0aGF0IHN1ZGRlbmx5IGRvd25sb2FkcyA1MEdCIG9mIGRhdGEgd2hlbiBpdCB1c3VhbGx5IGRvd25sb2FkcyBvbmx5IDFHQiBzaG91bGQgYWxzbyBiZSBjaGVja2VkLmRyb3BDYXBpbm5lckJsb2Nrczxicj48YnI+Rmlyc3QgdW5kZXJzdGFuZCB3aGF0IG5vcm1hbCBhY3Rpdml0eSBsb29rcyBsaWtlIGluIHlvdXIgc3lzdGVtLiBUaGVuIGNyZWF0ZSBhbGVydHMgd2hlbiBzb21ldGhpbmcgZGlmZmVyZW50IGhhcHBlbnMuIEEgd29ya2VyIHdobyBsb2dzIGluIGR1cmluZyB0aGUgZGF5IGZyb20gb25lIGNpdHkgYnV0IHN1ZGRlbmx5IGxvZ3MgaW4gYXQgbmlnaHQgZnJvbSBhbm90aGVyIGNvdW50cnkgc2hvdWxkIGJlIGNoZWNrZWQuIEFuIGFjY291bnQgdGhhdCBzdWRkZW5seSBkb3dubG9hZHMgNTBHQiBvZiBkYXRhIHdoZW4gaXQgdXN1YWxseSBkb3dubG9hZHMgb25seSAxR0Igc2hvdWxkIGFsc28gYmUgY2hlY2tlZC5jbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8YnI+PGJyPkZpcnN0IHVuZGVyc3RhbmQgd2hhdCBub3JtYWwgYWN0aXZpdHkgbG9va3MgbGlrZSBpbiB5b3VyIHN5c3RlbS4gVGhlbiBjcmVhdGUgYWxlcnRzIHdoZW4gc29tZXRoaW5nIGRpZmZlcmVudCBoYXBwZW5zLiBBIHdvcmtlciB3aG8gbG9ncyBpbiBkdXJpbmcgdGhlIGRheSBmcm9tIG9uZSBjaXR5IGJ1dCBzdWRkZW5seSBsb2dzIGluIGF0IG5pZ2h0IGZyb20gYW5vdGhlciBjb3VudHJ5IHNob3VsZCBiZSBjaGVja2VkLiBBbiBhY2NvdW50IHRoYXQgc3VkZGVubHkgZG93bmxvYWRzIDUwR0Igb2YgZGF0YSB3aGVuIGl0IHVzdWFsbHkgZG93bmxvYWRzIG9ubHkgMUdCIHNob3VsZCBhbHNvIGJlIGNoZWNrZWQuZHJvcENhcGlubmVyQmxvY2tzPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+VG9vbHMgYXZhaWxhYmxlPC9zdHJvbmc+PC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjxwPkFsbCBiaWcgY2xvdWQgY29tcGFuaWVzIGdpdmUgYnVpbHQgaW4gbW9uaXRvcmluZyB0b29scy4gVGhlc2UgdG9vbHMgcmVjb3JkIGFjdGl2aXR5IGFuZCBoZWxwIGZpbmQgdGhyZWF0cy4gVGhleSB3YXRjaCB5b3VyIHN5c3RlbSBhbmQgd2FybiB5b3Ugd2hlbiBzb21ldGhpbmcgbG9va3MgdW5zYWZlLjwvcD4KPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+U2V0dGluZyB1cCBhbGVydHM8L3N0cm9uZz48L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+SG93IHF1aWNrbHkgc2hvdWxkIHlvdSBwYXRjaDwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8cD5Gb3IgdmVyeSBzZXJpb3VzIHByb2JsZW1zLCBmaXggdGhlbSB3aXRoaW4gMjQgdG8gNDggaG91cnMuIEZvciBoaWdoIGxldmVsIHByb2JsZW1zLCBmaXggdGhlbSB3aXRoaW4gNyBkYXlzLiBGb3IgbWVkaXVtIGxldmVsIHByb2JsZW1zLCBmaXggdGhlbSB3aXRoaW4gMzAgZGF5cy48L3A+CjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPldoYXQgbmVlZHMgcGF0Y2hpbmc8L3N0cm9uZz48L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgpkb2N1bWVudHNsdWc8cD5GaXJzdCB1bmRlcnN0YW5kIHdoYXQgbm9ybWFsIGFjdGl2aXR5IGxvb2tzIGxpa2UgaW4geW91ciBzeXN0ZW0uIFRoZW4gY3JlYXRlIGFsZXJ0cyB3aGVuIHNvbWV0aGluZyBkaWZmZXJlbnQgaGFwcGVucy4gQSB3b3JrZXIgd2hvIGxvZ3MgaW4gZHVyaW5nIHRoZSBkYXkgZnJvbSBvbmUgY2l0eSBidXQgc3VkZGVubHkgbG9ncyBpbiBhdCBuaWdodCBmcm9tIGFub3RoZXIgY291bnRyeSBzaG91bGQgYmUgY2hlY2tlZC4gQW4gYWNjb3VudCB0aGF0IHN1ZGRlbmx5IGRvd25sb2FkcyA1MEdCIG9mIGRhdGEgd2hlbiBpdCB1c3VhbGx5IGRvd25sb2FkcyBvbmx5IDFHQiBzaG91bGQgYWxzbyBiZSBjaGVja2VkLjwvcD4KBQcIBAgGCAUIBwgHCAYIDggOCAsIBkgBBggECQgKCAQIBi8IBwQKRwALvAMIBwQKB68BBwsIBwQKB68HBwsIBwQKB6EEBwsIBwQKB70BBwsIBwQKAwcLCAcECgecAQULCAcECgeDAwcLCAcECgeBBQcLCAcECgeYAQcLCAcECgcxBQsIBwQKB78EBwsIBwQKB6oDBwsIBwQKBxsHCwgHBAoHBgsIBwQKBy8LCAcECgeAAQsIBwQKB4gBCwgHBAoHpAELCAcECgeFAQsIBwQKB4cCCwgHBAoHHQcLCAcECgelBQcLCAcECgeoAgcLCAcECgeYAQcLCAcECgeaAQcLCAcECgebBQcLCAcECgcqBQsIBwQKB7kCBwsIBwQKB60CBwsIBwQKB6kCBwsIBwQKByQFCwgHBAoHjgEHCwgHBAoHBgsIBwQKByULCAcECgcOCwgHBAoHKgsIBwQKB0sACAcECgcECwgHBAoHGQsIBwQKB6oBBwsIBwQKBxwFCwgHBAoHiQQHCwgHBAoHqAEHCwgHBAoHrgEHCwgHBAoHkQIHCwgHBAoHNJ4DBwsIBwQKB5oDBwsIBwQKBzGcAwcLCAcECgeiAgcLCAcECgePAgcLCAcECge2AQcLCAcECgeMAgcLCAcECgckBwsIBwQKB6AFBwsIBwQKB6YBBwsIBwQKB5IEBwsIBwQKB4UBBwsIBwQKBxKZAwcLCAcECgeyAgcLCAcECgeCAwcLCAcECgcmBwsIBwQKB4sCBwsIBwQKB6QDBwsIBwQKBx8HCwgHBAoHtwMHCwgHBAoHAQSlAQcLCAcECgc9BwsIBwQKB4gEBwsIBwQKBzEHCwgHBAoHIASDAgcLCAcECgebAgcLCAcECgenAgcLCAcECgeJAgcLCAcECgckqwIHCwgHBAoHkQIHCwgHBAoHIgSYBQcLCAcECgeRAgcLCAcECgemAQcLCAcECgeRAwcLCAcECgeWAQcLCAcECgctBJ8CBwsIBwQKBz0HCwgHBAoHuwIHCwgHBAoHJKECBwsIBwQKB5UBBwsIBwQKBzC6AQcLCAcECge2AQcLCAcECgeAAgcLCAcECgekAQcLCAcECgeeAQcLCAcECgc\/BwsIBwQKB58DBwsIBwQKByaBAgcLCAcECgeuAgcLCAcECgcihAIHCwgHBAoHiAEHCwgHBAoHpAEHCwgHBAoHIgcLCAcECge3AgcLCAcECgefAgcLCAcECgeRAgcLCAcECgeqAQcLCAcECgejAwcLCAcECge7AgcLCAcECgcxBwsIBwQKB5IDBwsIBwQKB4IEBwsIBwQKBy0HCwgHBAoHvQIHCwgHBAoHoAEHCwgHBAoHIQcLCAcECge3AgcLCAcECgctBwsIBwQKB5sDBwsIBwQKB4wDBwsIBwQKB5wBBwsIBwQKB6sBBwsIBwQKB6YCBwsIBwQKB6EDBwsIBwQKB5sEBwsIBwQKBysHCwgHBAoHjAUHCwgHBAoHmAMHCwgHBAoHrwIHCwgHBAoHjAMHCwgHBAoHkgMHCwgHBAoHK7gBBwsIBwQKB6ABBwsIBwQKB4oCBwsIBwQKB6EBBwsIBwQKB6EBBwsIBwQKB6IDBwsIBwQKB6oCBwsIBwQKB5YCBwsIBwQKBzQHCwgHBAoHgwMHCwgHBAoHsAIHCwgHBAoHpgQHCwgHBAoHkgIHCwgHBAoHjwIHCwgHBAoHogMHCwgHBAoHJAcLCAcECgeNAwcLCAcECgeMAwcLCAcECgeEAgcLCAcECgcsBwsIBwQKBwYLCAcECgeNAQsIBwQKB4wBCwgHBAoHJwsIBwQKB4kBCwgHBAoHkAELCAcECgceCwgHBAoHHQsIBwQKBzYFCwgHBAoHhgQHCwgHBAoHLAULCAcECgesBgcLCAcECgcbBQsIBwQKB6cFBwsIBwQKBy8FCwgHBAoHlwQHCwgHBAoHIQULCAcECgeGBgcLCAcECgcfBwsIBwQKB60EBwsIBwQKB4QEBwsIBwQKB7oDBwsIBwQKB6ICBwsIBwQKB7EDBwsCBAMID5AZmhu6DboJgiusBRaoBBajDJcGhAcWuAecB64EmQiuCRafAxafA5QGFrwFF7UBFpQIiwYWvAMWsASKCosIgQmKBq4DpgqFDYAWFoUIhQubdAUGpgIFBwUHBagBCAcECgcBBKMBBwsFsAJFAQcGCAcECgeeAQueAUUB8gIBqgK2ArcCBa0CCAcECgeaAwcLmgMIBwQKB5oDBwsFCAcECgeYAwcLmAMIBwQKB5gDBwsFjQKiA4oCoAMFCAcECgeVAwcLCAkFvAEWnQNFAKYBvgG3AaQCRQAEBbMBtQEEDwsJBQkPCUgACgsGFhcIBw8ECgeHAgcLCQQIBQkFDwlIAAoLBgcLhwIIBw8ECgcEgwIHCwkECAUJBQ8JSAAKCwYHC4MCCAcPBAoHgwIHBAgFB0sACQUJDwlIAAoLBoMCCAcPBAoHgwIHBAgFB0sACQUJDwlIAAoLBgQHBggHBAoHIAsIBwQKBwsIBwQKB6sCCyAEqwIEBbkBiwIECEUACAcECge0AQcLBbQBCAcECge0AQcLBYMChAK8AYwCRQMIBwQKB4ACBwsFCAcECge9AQcLBQgHBAoHtgEHCwUIBwQKB50CBwuTA4kCvgG\/AYUCuwGIAroBiQKFArkBhQIIBwQKB58CBwtFAAgHBAoHqwIHCwgHBAoHoAUHC6AFCAcECgcImAUHC7kBswK7AYYCpwK8AQgEoAUPAQ0AAAECAM0KAQEArwIBjwZCAQEAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAABBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAABBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgACQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAAkEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBoQbEFkwKQAZIBjQKdApoElQSZAZsCswObAZQBnwKcA5cDhgabApgDFqQDsgKTAq8CrgKXAZ8CpgGiAZYBogGgAqABqwKWAqkBQViaAUEZgwRBGrMCQX6bA0EWigZBJjBBIKgFBwEDQQQBsBEAfQF9FX0AdwRvcGVudwRvcGVueXcAdwhzdGFuZGFyZHcAdQB3JDlhN2ZjNzc2LWQ5ODctNGY0ZC04MjY4LTgxZjk3ZWE3ODMzNXh3DmNvcmUvcGFyYWdyYXBoeXckODJlYjY1OGUtZGE5YS00NDQxLWEyYjEtYWU0MjM2MzdlMTM2dyQ4YmRhOWUxNy1jZTQzLTRlNzItYWU5Ny0wOTIxNzEzZTlhZjB4dw5jb3JlL3BhcmFncmFwaHl3JDhkMDNkODllLWRmMDQtNDAxNi1hNTRlLTE3N2NjNDJlZjMwOXh3DmNvcmUvcGFyYWdyYXBoeXckOTRmMTI5MDQtNDNiNC00NDM5LTg5MDItNjAwYWMxMmU5NDI3eHcOY29yZS9wYXJhZ3JhcGh5dyRjMGI4MzU0OS03MjFkLTRkOWItYmU0MC02YzIyZjQzNzQwZTF4dw5jb3JlL3BhcmFncmFwaHl3JDBlYzY1ZjJjLTk2NjAtNGUxZC04OTBhLTkxZDVhOWQwZDcyYXh3CmNvcmUvaW1hZ2V3AHckYjdlY2ZjZTctMTM3Zi00NDk0LWE4OWUtNzIyNmJhMDc0OWM1eHcMY29yZS9oZWFkaW5nfQJ3JDJlYzVjOGQ2LTI5ZGYtNGVjOC05OGNjLTMxZDQ3MDg5MWI0M3h3DmNvcmUvcGFyYWdyYXBoeXckNzU0ODgxMWItMjY0MS00YzA0LTkxYTAtZTU0OWZmMDQyOWE0eHcOY29yZS9wYXJhZ3JhcGh5dyRiNjhjN2MwZi1mMjY0LTQ2NDItOWY5Zi0yYTRkNjU5M2IyYTN4dw5jb3JlL3BhcmFncmFwaHl3JDFlOTdkNTNmLTFjYjEtNGI2Yi04ODVhLTU0ODdmZDRiMDk0NXh3DGNvcmUvaGVhZGluZ30DdyQzODU2NDdiZC02OGY1LTQzMWQtYjJmZC00OTcwMTg5ZTFlZDd4dw5jb3JlL3BhcmFncmFwaHl3JGRjYmI5ZjVjLTNlODktNDg4MC1iYjczLTEyMjIzZWM0M2FjMHh3DmNvcmUvcGFyYWdyYXBoeXckNjQwYTU2OGItZDE1MS00NWMxLWFjMjQtMDIzYzhiOGJlMDQzeHcOY29yZS9wYXJhZ3JhcGh5dyRkMWJjNzEzZS1kNWYyLTQxMGQtYjE0OS05MzI1YTU0NTIxOTN4dwljb3JlL2xpc3R5dwB3JDA2ZjVjZTUxLWExZTItNDkzZS04NzEzLTU4YmRhYzYzZjVhOXh3DmNvcmUvbGlzdC1pdGVtdyRhNmZjY2NiNC1mOGE1LTQwNTktYTcxZC01MGJjNzVkNGMzNDZ4dw5jb3JlL2xpc3QtaXRlbXckM2QwNDQ0MTctNzgwOS00Y2U1LTk1NzItZjZiMDI3YmJkNWEweHcOY29yZS9saXN0LWl0ZW13JGE1NmJmODFlLTdmNDgtNGE0Mi1iNjdhLTAwNzZmZTA4ZDNhMnh3DmNvcmUvbGlzdC1pdGVtdyQxMTdjOTgyOC0xZjg5LTQzMzUtOGFkNy0zODE0MTFkM2ZkNWF4dw5jb3JlL2xpc3QtaXRlbXckNTdiNGZkMGEtYjY2Mi00NWZkLWJiZjAtYjliM2MwZmQzZjY0eHcOY29yZS9saXN0LWl0ZW13JDMxZmRkMzU1LWYzYjAtNDgyOS05NjgxLWY4MTI0OTJhYWY4ZXh3DmNvcmUvcGFyYWdyYXBoeXckZDI4OWM3MGMtZGQyNy00NzgxLWFiNTAtNWE1YjUyMThlNjI4eHcOY29yZS9wYXJhZ3JhcGh5dyQyMDRjNDAyNy1kOGFjLTRlZWYtYjIwMy1hNmRlOGM4MWUwZDR4dw5jb3JlL3BhcmFncmFwaHl3JDFiZmE5MjZjLTg5NTItNDczMy05YWNiLWU4ZTk0YTAzYjMzZHh3DmNvcmUvcGFyYWdyYXBoeXckN2NhYjI2MGUtMzkwNi00ZWE1LTlkN2ItMjJjOWNmNGQyMWFheHcOY29yZS9wYXJhZ3JhcGh5dyQxNDBlYTAxNS00ODZjLTQwM2MtODViNi0yMDUxZGJhZjZjMTV4dw5jb3JlL3BhcmFncmFwaHl3JDNiNGViMGRmLWI5ZTItNDY1OS05Y2FkLTY4MDkzNGE4NDU2ZHh3DGNvcmUvaGVhZGluZ30DdyQwOTVhNzVjZC04NDFkLTRlN2ItYjc3Ny05MjA1NGQxZWMwNTd4dw5jb3JlL3BhcmFncmFwaHl3JDI3MGQ2MTEzLTA5YmQtNDZjYS1hZjFjLWE1OTg0YjJjMGE5Ynh3DmNvcmUvcGFyYWdyYXBoeXckY2I4NDgxZDYtMjRiZi00OTE1LTkyZTctNGNlNmQwMDgyZjk4eHcOY29yZS9wYXJhZ3JhcGh5dyRiZTg3NDM3My05MzVhLTQyYWMtOGI4OS1kNDE4YTM0MTEyNTZ4dwxjb3JlL2hlYWRpbmd9A3ckYWQ4YWQyNDUtMzI5ZC00YzUwLTgzYTMtNWRmY2RkOWMyOGI2eHcOY29yZS9wYXJhZ3JhcGh5dyRhNWNmYzQ4NC1jZjExLTRiMWQtYWY2NC0xMjhkZjQ5OGM2YTF4dwljb3JlL2xpc3R5dwB3JGFkNDhmMDkwLTY5ZDAtNGI3Zi1hMjQ5LTg5OGI3YWIyZjUwYnh3DmNvcmUvbGlzdC1pdGVtdyRmMzBmMzgyMS0zYzUyLTRmZGYtYjE3Ni0wZjRmMDVmMmRiMDN4dw5jb3JlL2xpc3QtaXRlbXckYThhMThhZDQtOTI2Zi00MWJjLTg4N2ItZDI5ZDk0ZTVlMTg3eHcOY29yZS9saXN0LWl0ZW13JDI2NjMxNTQ1LTc2MzEtNDc5OC04NmRjLTI3MjA5NjJiYTY2ZXh3DmNvcmUvbGlzdC1pdGVtdyQ3YjE3YjkxMi0zZDIwLTQ3MzYtYTE3YS04NGIyMjIxM2U0YjV4dw5jb3JlL2xpc3QtaXRlbXckNGQzMWVjNWEtN2ViNi00NDc3LWI5YjAtMDg5NmRjODdhNzExeHcOY29yZS9saXN0LWl0ZW13JDZlMGE3MDJlLTdmNjYtNGI5MC04YTVhLTAwYTk3MTczYzlhMnh3DmNvcmUvcGFyYWdyYXBoeXckNGJiZjUwN2MtN2IzNy00OTExLTkwZTAtZWNhZDRhODNkY2E1eHcMY29yZS9oZWFkaW5nfQN3JGRmMDUwYWM0LWM0MmQtNDhmMy1iNWYyLTZlYWVkOWFjMjEzZHh3DmNvcmUvcGFyYWdyYXBoeXckZTQwNTA1YTctZmVjYi00ZTk5LTk4NDgtNzRkNWMwY2Y3NmUweHcOY29yZS9wYXJhZ3JhcGh5dyQ3OTM0YjA1YS03ODY5LTRiNmItODg1MS0xZmUwYzYwNjI3OGJ4dw5jb3JlL3BhcmFncmFwaHl3JGNmOTI0ZWE2LWEwNGItNGJiZS1hYmM2LTAyZWNlMzQ1ZjQ5MHh3DmNvcmUvcGFyYWdyYXBoeXckZGVhOTg2NWMtNTEyNS00ZTJkLWJkNjUtNTVhNDJhNTAzMDI0eHcOY29yZS9wYXJhZ3JhcGh5dyRhMDRjYzllYS0xZWU5LTQ0M2UtYTY2Zi0yOTVlMmQ5OTBhYzF4dw5jb3JlL3BhcmFncmFwaHl3JDQ5NzEwOTUwLWZhYjMtNDk0OC1hMmZjLTZiODlkZDYzYTllYXh3DmNvcmUvcGFyYWdyYXBoeXckOWY1NTQzMzMtYzQ5OS00YzNmLWIzODItNDA4NDJmNWQ3MTNjeHcOY29yZS9wYXJhZ3JhcGh5dyQ1NDliN2YzYS0xODc0LTQ2ZjgtYjVlNy1iY2VkNjcwYzM4ODB4dw5jb3JlL3BhcmFncmFwaHl3JDEzMDNjZDk3LTAwYWQtNGU0Ny04NGQ3LTM3MDVhYzMxOWUxOHh3DmNvcmUvcGFyYWdyYXBoeXckZTEyODA2ZTktYTU1MS00ZGMwLTgzOWEtZmVkZDk5YjViYmVleHcOY29yZS9wYXJhZ3JhcGh5dyRkMDhiM2NkOS02OWU2LTQxYWQtOTNhMy0xYWE5ZThjZTQwMGV4dw5jb3JlL3BhcmFncmFwaHl3JDA0ODMyMjI5LTMwYzMtNGYwYi05MzA3LWI5MjllMzk1MTY4YXh3DmNvcmUvcGFyYWdyYXBoeXckYWZlNWYxOTgtOWZjZi00ZTc2LWJhYzktNzk4M2JiNGZmNDg4eHcOY29yZS9wYXJhZ3JhcGh5dyQ4NzRiODQ2Zi0xNjMyLTRjYjYtOTA0Yi0xNDRlMzIyMjIwYmZ4dw5jb3JlL3BhcmFncmFwaHl3JDAxMWQwNWFhLTk4MjAtNDEzNS1hNDQ0LTM4NWZhZTkxY2YwM3h3DmNvcmUvcGFyYWdyYXBoeXckMzllYjU0OWYtOTEwOS00NzQzLThhZGYtMTBhZTkyZmU0ODU0eHcOY29yZS9wYXJhZ3JhcGh5dyRjNjFlNzBlNi1lYzBmLTQyNmQtOTRiZC03YmY3NTI1NTIxZTJ4dw5jb3JlL3BhcmFncmFwaHl3JDk5Yjg2MjhkLTZhODgtNGUzNS1iZjRlLTUyYjMyZDRkYTIwOHh3DmNvcmUvcGFyYWdyYXBoeXckODkwOTNiNzYtNDMxNC00Njg1LTlhZDEtMDFlMmY4M2RkYTFkeHcOY29yZS9wYXJhZ3JhcGh5dyQ2YzZkOGNlZC1iMTNlLTQ2NjAtYmY1My1hNTM4MmM4MTZhN2R4dw5jb3JlL3BhcmFncmFwaHl3JDA4NjdkZjRlLTEzNDItNDRhNC1hM2EzLTc5NGY4Mjg1N2M0N3h3DmNvcmUvcGFyYWdyYXBoeXckMGI1ODU3ODYtZjM4YS00NzIyLTg5NjgtMTg4NWM2YzVjMWE0eHcOY29yZS9wYXJhZ3JhcGh5dyQ0ZGI4MzdhZi02YzNjLTQ0NTQtYWMyYy1hMzU0ODRiYWNkNzF4dw5jb3JlL3BhcmFncmFwaHl3JGM2NzhjNzllLTI2MzAtNGM1MS04MmM5LTkxYzQ3ZWU1MjBmZXh3DmNvcmUvcGFyYWdyYXBoeXckNWNlZjUxMTEtZjlmMy00ZWNkLTk3NzItOGI3ZjkwZmVhYTNkeHcOY29yZS9wYXJhZ3JhcGh5dyQ4Mjc2NTQxNy1jMDc2LTQ2MjMtODk4My1hYzczZDZlMThlYjd4dw5jb3JlL3BhcmFncmFwaHl3JDljNjVmYmFiLTI3MmMtNDYwNi1iYTljLTE3N2Q1ZGE2MWQ5Ynh3DmNvcmUvcGFyYWdyYXBoeXckMTQ5OGY2Y2QtMzc1Yi00ODA0LTkwNzktNTkwMmFkMDliMjdjeHcOY29yZS9wYXJhZ3JhcGh5dyRmYTJmN2I1OC01Y2Q3LTQzNGItYTc0Ni1jODEyODI1YmJkN2F4dw5jb3JlL3BhcmFncmFwaHl3JDI1YmQ1ZjUyLTk3MzgtNGE4Ny1hYjdhLTJkOWEwNjVlNjcyYXh3DmNvcmUvcGFyYWdyYXBoeXckN2Q5YWRmZGUtMDNlMi00NzBiLTk1ZGYtZjFiNzE2NGVjMmY1eHcOY29yZS9wYXJhZ3JhcGh5dyRjNTI0MWNkMC1kMTZjLTRjZTYtODAzNi00Yzc3M2I0OWJmZTh4dw5jb3JlL3BhcmFncmFwaHl3JDEyOWRkNjIyLTY3NjYtNGMwMC05MGQxLTUyN2Q5Yjg1MjQwN3h3DmNvcmUvcGFyYWdyYXBoeXckZjQxZThmZmMtY2M1Yy00YWZlLWJmODAtN2Q5ZjAxNjQ2NDQ4eHcOY29yZS9wYXJhZ3JhcGh5dyQ3N2I2ZjY3Mi05Y2MzLTQ2ZjItOTdiMC05Y2QwZmMxZmFkNTR4dw5jb3JlL3BhcmFncmFwaHl3JDk4OGQ0ZTcxLWRiZDctNGU3Zi04NjFjLTI2ZmM3YTU0NTFkNHh3DmNvcmUvcGFyYWdyYXBoeXckMTY1MTg5ZTUtYTE3Ni00MzhhLWE1YzItNjRlYTkwOGQ4ODFleHcOY29yZS9wYXJhZ3JhcGh5dyQzN2IwNmRlNC1mZDljLTRiZDQtYjI1Yy01MjFiMGE0Y2RjMDJ4dw5jb3JlL3BhcmFncmFwaHl3JGMxMGViYjM4LTAzZjQtNGEwNi05MDgwLTkyYjE4YzgyM2UxN3h3DmNvcmUvcGFyYWdyYXBoeXckYzFkYmZlY2ItZWI2MC00YTZjLThhY2UtMTU4MTg4OThkYWI2eHcOY29yZS9wYXJhZ3JhcGh5dyQ4Y2I4ZGRlNS1lZGM4LTQwMzQtODA2MS0wY2NmNDQ2ODhkODd4dw5jb3JlL3BhcmFncmFwaHl3JDBlM2E2NDRhLTVkNzMtNGYxZC1iOTM3LTlmNjg0NDc4MzA3ZHh3DmNvcmUvcGFyYWdyYXBoeXckNjhiMjFmMjQtYmQyYi00MThkLTgwZGMtMTZjNGZhNjAzOTkxeHcOY29yZS9wYXJhZ3JhcGh5dyQyODg0YzQzNy05MjkyLTQ2ZWQtYjY3Ny0yYmZmMzBlMWQ4MWJ4dw5jb3JlL3BhcmFncmFwaHl3JDEwYjIxOTg4LWVlOWQtNDVlNS1iZWRjLTdmMDY5MDNkNTA1Y3h3DmNvcmUvcGFyYWdyYXBoeXckOWMyOTA4MjEtZjk3Yi00YzY4LWI4NTItMjJmY2U2NzY4OGZheHcOY29yZS9wYXJhZ3JhcGh5dyRmNWRkNWMzNC0zMGUwLTQ4MmQtYjQ4My1hZWQ3ZWQwYjQyOGR4dw5jb3JlL3BhcmFncmFwaHl3JGIyNDY4ZjNlLWRlNTYtNGUwOC1iZTMxLTQwZjU1NGZiODhmNnh3DmNvcmUvcGFyYWdyYXBoeXckNTUyYzNhMjYtOGQyZi00NmMyLTgwMmMtNDI2NWYwMmMzNWE4eHcOY29yZS9wYXJhZ3JhcGh5dyRkZDY2YWVmZS0wNGJjLTRjMmYtYmU2Zi1hM2I5NWVmOWNkOTl4dw5jb3JlL3BhcmFncmFwaHl3JDJhOWQzM2NlLWJlYjItNDg0MS04ZThiLTlmNDhmNzcxZWU3Mnh3DmNvcmUvcGFyYWdyYXBoeXckZTcxMWY0MDQtYTI3Yy00NjZhLTgzY2QtZjU3OTAzNDc5NzVkeHcOY29yZS9wYXJhZ3JhcGh5dyRlNTkzZmVkYS04NGZmLTQ1YmUtODBiOC03OGRlZDBiNDM5Njl4dw5jb3JlL3BhcmFncmFwaHl3JGQxZjllZWJkLWI1NDctNDZmMi05MDE5LWIwNTEyOWQwZTU1Znh3DmNvcmUvcGFyYWdyYXBoeXckMzQwNmI4ODItMzIwZS00MTc3LTlkOWUtYTQyZDI2OTI1OTU4eHcOY29yZS9wYXJhZ3JhcGh5dyQ0MjRjOGViZS00MDRiLTRiYjQtYjk2Ny1mNGE2MDFlZTNlODd4dw5jb3JlL3BhcmFncmFwaHl3JDM5ZWFmZDEzLWMzYjAtNDk5OC05ZmY4LTAxOThjZGE0ZjY2Nnh3DmNvcmUvcGFyYWdyYXBoeXckOWVjNjI3NjYtNzA4OS00MzZhLWE1ZTYtMjJmNDBlMTk1ODZieHcOY29yZS9wYXJhZ3JhcGh5dyRkZmViMjI5Mi1kZmFiLTRiMTMtYmIwYS0zNmQxODFlN2E3NDV4dw5jb3JlL3BhcmFncmFwaHl3JGVkZjFkMjQyLWY2NmMtNDVmZS1hY2EyLTM2YWNhYmVmZTY2NXh3DmNvcmUvcGFyYWdyYXBoeXckYWQ1ZDRjZDctZTQ3Yi00OTk1LWJiZWItNWE0MmZkZGMyZmQzeHcOY29yZS9wYXJhZ3JhcGh5dyQxYjNjYTQ2NC0zZGEzLTQwZWYtOWMwZS1mNjA5NzYzYzBkNTR4dw5jb3JlL3BhcmFncmFwaHl3JDE5N2RkYjBmLTFlNzAtNDk5My04OGFmLTZhMjg1NGEyMWQ2Y3h3DmNvcmUvcGFyYWdyYXBoeXckMDcyNzhhYmItODYwMC00ZGQxLTk5NjUtZWVlYzZlNDhmOWE0eHcOY29yZS9wYXJhZ3JhcGh5dyRjZjMzMTA5ZC00ZTA2LTQ5ODYtYjVjYi0xYzI5YzVmMzFiYWF4dw5jb3JlL3BhcmFncmFwaHl3JDE3MDBlNzBkLThjZWItNGQ4YS05YjE5LThkMWE5ODI0NzM4OXh3DmNvcmUvcGFyYWdyYXBoeXckODJkZjU0NTYtZGYyYi00OTk4LWFhZmYtNGUwNjExMTFmOTMyeHcOY29yZS9wYXJhZ3JhcGh5dyRkZmI5ODdlNC1mMDdkLTQ5ZTAtOGU2Mi0wMjg2OTUzYjBmY2N4dw5jb3JlL3BhcmFncmFwaHl3JGZjYmVjZTM0LWQyYzgtNDIxNC04NmY2LWY4ZTUzN2U4MGU5N3h3DmNvcmUvcGFyYWdyYXBoeXckMWJkZjA5M2YtZWM5OS00MWJkLWE1NTMtMjE3YjE4ZGEwNmRkeHcOY29yZS9wYXJhZ3JhcGh5dyRjODcyMTM1ZC00YzUyLTQ4NWQtOTRkZi0yMWFjY2Q4OTAzMjl4dw5jb3JlL3BhcmFncmFwaHl3JDg1YmNkMzdmLWE3YWYtNDc1Yy1hNDJkLWU5NjRmODVjMzFlMHh3DmNvcmUvcGFyYWdyYXBoeXckYjI4YTczMjQtMGY1Mi00NjUxLWIyNzUtMzhjMzQ3NjIxOThheHcOY29yZS9wYXJhZ3JhcGh5dyQ5ZWQxZjU0Ni03Y2I2LTRlMzAtYTdlYy1kYTkwYjgyYmU0NDZ4dw5jb3JlL3BhcmFncmFwaHl3JDRhYWM1ZjU4LWNmZTctNDZjNS1hMDU0LWFlODY4OWY0YWNhZHh3DmNvcmUvcGFyYWdyYXBoeXckNDk0Y2I4NmYtYmZhNy00ZjY4LWFhOTktZTZkODBhMzRiMThleHcOY29yZS9wYXJhZ3JhcGh5dyRjNzdhM2NiNy0zOTY5LTRmMDctOWE3YS04NWE3ODE2MWE5OWR4dw5jb3JlL3BhcmFncmFwaHl3JDFlNTMyNGJlLTcxNWUtNDExNi1hODZmLWQwOTExZTg5ZjgwYnh3DmNvcmUvcGFyYWdyYXBoeXckNDZmMzFkYjgtNWM1ZS00YmNlLWI2MmYtY2U3ZjI3YTQ5MDNheHcOY29yZS9wYXJhZ3JhcGh5dyQ3YmEyY2YxMi1lOWJmLTQzYWQtOGJhOC00ODc2MmY4YmRmNzd4dw5jb3JlL3BhcmFncmFwaHl3JDJhOTk0N2RiLWIzN2UtNDQ1OC1iNzA0LTU5MzA0MGFjNTI0Y3h3DmNvcmUvcGFyYWdyYXBoeXckZjE4NjhmZjEtMmU4Mi00OGEyLWEyNTktMDA3MmVjNzdjNzdieHcOY29yZS9wYXJhZ3JhcGh5dyRhZDYzYTBjMC05MGU5LTRlMGYtODBhMC03YzZkZDMwNzFiNmN4dw5jb3JlL3BhcmFncmFwaHl3JDQxZjE5NjFmLTIwNzgtNDYyNS04NzViLWU1ZTBmMTAwODkzOXh3DmNvcmUvcGFyYWdyYXBoeXckZjhlZDBiZWQtZjBmOS00NjU4LTkwZDYtNDY4NGQ2Y2FhODUweHcOY29yZS9wYXJhZ3JhcGh5dyQwYWFhNjllNy05NDM2LTQzZmEtOWNhZi0wNGZhYTA2ZjRkMzJ4dw5jb3JlL3BhcmFncmFwaHl3JDFkMmY0ODIyLWZhNTYtNDJmNS1hYjlhLTBjZjNmMTI5YzM5Y3h3DmNvcmUvcGFyYWdyYXBoeXckNWE5MjgyYTAtZmY2ZS00MDAzLTkwYWQtZTUyMmM0YjQzOTQ2eHcOY29yZS9wYXJhZ3JhcGh5dyQxODUzNDNmNy00NjZjLTRiM2ItOGY3Yy04ZGY1NTE4MDI0MTh4dw5jb3JlL3BhcmFncmFwaHl3JDMxZmM1MWQ0LTBkZDgtNDcwMi1hYTZkLWVjMjEyN2I3MzBmZHh3DmNvcmUvcGFyYWdyYXBoeXckODFjNmI3OTYtMWU4ZS00MTU5LWE0OWItZWI5ODIwMzE4YmQ4eHcOY29yZS9wYXJhZ3JhcGh5dyRkMTIxYjAyZi0xZTRmLTRkMzktYjE4OS02ZjEwOTBjMGNlY2Z4dw5jb3JlL3BhcmFncmFwaHl3JDViMjU2MGQ2LWE4NzEtNDA3ZC04ZjY0LTQwZmY4MWE5YzU2Mnh3DmNvcmUvcGFyYWdyYXBoeXckOWM3MjU4ZWMtZTAwMC00ZDRhLTliMmItYzhkMjUwN2NjNGYxeHcOY29yZS9wYXJhZ3JhcGh5dyQxYzE5OWZlNi1kM2Q5LTQzYTgtYTg3ZC1iNWUwMDFkNzZhMDR4dw5jb3JlL3BhcmFncmFwaHl3JDAyMTFhYTVlLThiODctNGZmOS04MDY1LThiM2E1MzcyOTRjNXh3DmNvcmUvcGFyYWdyYXBoeXckOTlmYzhhMTYtYzY4MS00OGEyLWE5OTgtMjQwN2U3OTc1ZGIzeHcOY29yZS9wYXJhZ3JhcGh5dyQ3ZTVkMWM4Yy1lZmIwLTQ2OWEtOTk1Ni0zMzkxYTIxNjYxMWV4dw5jb3JlL3BhcmFncmFwaHl3JDkwYzQ4NjczLWE0ZTQtNDIxMC1hNGNmLWI2MWI5ODM4NzdjNHh3DmNvcmUvcGFyYWdyYXBoeXckODI2NWRmYTItMTZlYi00OWMxLTgxMzgtYzYyZjlmZTRmMGYyeHcOY29yZS9wYXJhZ3JhcGh5dyRiNjM0MzgwMi1mZjIwLTQwM2MtYjA5YS1hZGQ1Zjg5YWM5MzF4dw5jb3JlL3BhcmFncmFwaHl3JGFhNDRhOWE4LWU0YTQtNGQ3MC1hOGMyLTMwY2FlMzdjZmEwZHh3DmNvcmUvcGFyYWdyYXBoeXckOTZhMzg0OTQtMGExOC00OGE3LWFlODQtMTczNjI1NzQzNTU2eHcOY29yZS9wYXJhZ3JhcGh5dyQ0MDMwMWY5OS02NTBlLTQ5NzEtODVjNy02OTUzMTBiZGFlN2V4dw5jb3JlL3BhcmFncmFwaHl3JDNiY2IwN2RlLTVkODQtNGUxYy05NjAzLWE0NWRiNGIxNzUwNnh3CWNvcmUvbGlzdHl3AHckMjBjYmMzNTItMDg1OC00ZWYwLTk4N2QtY2UwNWRhZmM1N2ZleHcOY29yZS9saXN0LWl0ZW13JDU2N2ZhYzMxLWM3OWUtNGNkYy04NDRhLWIzN2NjYzkzMDBlZXh3DmNvcmUvbGlzdC1pdGVtdyQ1ZDAzYWM3Yy02MjE0LTQzZjMtYTIwNC0xNjIyZmYzYzNmOTZ4dw5jb3JlL2xpc3QtaXRlbXckYTlmNGNiMjgtZGNmMi00ODIxLThmMjUtZjI4ZDgxNjAyYmYzeHcOY29yZS9saXN0LWl0ZW13JDFiYzUxYjAwLTYwZjktNGRlOC05MDE5LWYwY2NhMjc4ZTcyMXh3DmNvcmUvbGlzdC1pdGVtdyRlZmFlYjdiNC0yNmMwLTRiOGItYTM2NS1jM2FhY2MzNTAwODZ4dw5jb3JlL2xpc3QtaXRlbXckMDE3N2M1ZjUtNDVjZi00Zjk4LWJjOTctYzRkZmRmYjUwOWJjeHcOY29yZS9saXN0LWl0ZW13JDU3NWUwNGM1LTAzZTQtNDc2Yy05MTk4LTEwMjkxM2M2MTE5OXh3DGNvcmUvaGVhZGluZ30CdyQzZmRlNDRmZS0yNDk5LTRlYzMtOTY1Zi1mNmMyMWU4NzhiZDl4dw5jb3JlL3BhcmFncmFwaHl3JDVhYWFkODg2LWY4NjYtNDEyZC1hOWU0LWViZmEwZGEzYjFiZXh3DGNvcmUvaGVhZGluZ30DdyQ5N2QxN2VmZC1kZTEwLTQwYzItOWYzMy1hMDRkZDRjOGNjMDB4dw5jb3JlL3BhcmFncmFwaHl3JGM1MDU1MmRiLWViMmQtNGJiNi04NTFjLWZhNmRlY2YxMDQ4OXh3DGNvcmUvaGVhZGluZ30DdyRiYzIxODIyZi0xMzFmLTQ4MmMtYTA1OS05NjIzYmUwZWE0OTV4dw5jb3JlL3BhcmFncmFwaHl3JGQ2ZWE1NTBmLTEwYzQtNDE0OC04YmE0LTJiMTI2NzI1OWMxZXh3DGNvcmUvaGVhZGluZ30DdyQ3ZjkyY2EwNS1iNTJjLTRiMjktYmI3Zi1kMzUwNjA0N2JmODF4dw5jb3JlL3BhcmFncmFwaHl3JGMxMDZhMGMzLTdlMTEtNGJjNS1hNTcxLTJiMmZlNTk3MDA5N3h3DGNvcmUvaGVhZGluZ30DdyRlNThkYzE2YS00YzEzLTQ0M2ItYjUyYy1hMDg0YmQ3NDRiNTR4dw5jb3JlL3BhcmFncmFwaHl3JGQ4NjYzMzAwLWM1NWYtNDQzYS1hMmYwLWE5NjA3MDEwNGIwOXh3DmNvcmUvcGFyYWdyYXBoeXckOGZlYWEwMGUtNTc1NS00ZjdiLTk5ZDktNjA4NzQyMmYzYmM0eHcOY29yZS9wYXJhZ3JhcGh5dyRjZDk1NjE1NS05NjcwLTRmMzktYTI5Mi1mZTFiYzlmYzkzN2F4dw5jb3JlL3BhcmFncmFwaHl3JDk3ZGE2NmI1LWIxMWQtNGM2YS1iMDJjLWE4MjU0ZWMxZmFmYXh3DmNvcmUvcGFyYWdyYXBoeXckZDlhNWY0MTAtZGI0MC00ZmZiLThjZWItYWZjMDAxMmIyYmI5eHcOY29yZS9wYXJhZ3JhcGh5dyQ5ZDY1NDc4Yi00MTM2LTRhMmYtYmYyOC1mMzUzOTdiNjIxZmJ4dw5jb3JlL3BhcmFncmFwaHl9u+4BdypodHRwczovL3V0aG8uY29tL2Jsb2cvP2F0dGFjaG1lbnRfaWQ9MTUyOTF3NWh0dHBzOi8vdXRoby5jb20vYmxvZy93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2UtNC5qcGVndwRmdWxsdwRub25ldz5odHRwczovL3V0aG8uY29tL2Jsb2cvd3AtY29udGVudC91cGxvYWRzL2ltYWdlLTQtMTAyNHg2ODUuanBlZ3cFbGFyZ2V3NWh0dHBzOi8vdXRoby5jb20vYmxvZy93cC1jb250ZW50L3VwbG9hZHMvaW1hZ2UtNC5qcGVndwRmdWxsdxNjbG91ZCBzZWN1cml0eSB0aXBzf391AX0BdyQwMzg3MmJiMC0xMTgzLTQ2NGYtOTQzYS0wYzFiZTQ1MzQ1OTB3DGNvcmUvaGVhZGluZ30CdyRlNDA1MDVhNy1mZWNiLTRlOTktOTg0OC03NGQ1YzBjZjc2ZTB4dw5jb3JlL3BhcmFncmFwaHl3JDFiZmE5MjZjLTg5NTItNDczMy05YWNiLWU4ZTk0YTAzYjMzZHcOY29yZS9wYXJhZ3JhcGh5dyQ1ZTRjODQzMi03ZmExLTQyY2ItOTUyOS1lZTg0ZGI0ZmZmOGN3DGNvcmUvaGVhZGluZ30CdyQyNDM4Y2FjOS05NDc5LTRmNjAtYjAxNy0wN2I4ZDAyMDI5YTd3DGNvcmUvaGVhZGluZ30CdyQ2MDBlM2RhNS0wYWI0LTRiM2MtOGRjMi0zMTViMDBlOGQ0OTd3DGNvcmUvaGVhZGluZ30CdyQ0YWVlYjlkYi0xZmE1LTQ4MDQtYmIwOC1hZWQ0Y2NkN2JkMjV3DGNvcmUvaGVhZGluZ30CdyQyODU3MWY1ZC1lNDk1LTQ1MTctOWFjMi0wNGI2Y2Y0OWVlMWV3CWNvcmUvbGlzdHl3AHckZmIzMGExZTktODIwNS00Mjc3LWE2N2EtZGViODg2ODVmMzk4eHcOY29yZS9saXN0LWl0ZW13JGIyNDY4ZjNlLWRlNTYtNGUwOC1iZTMxLTQwZjU1NGZiODhmNncOY29yZS9wYXJhZ3JhcGh5dyQ0ZGYzOGE3OC0wOTFjLTQxYzMtOTMwZC1mZTYxY2JiNDczN2V3DGNvcmUvaGVhZGluZ30CdyQ2MTkxNGEyMS03ODRjLTQzMGEtOTJiNC00NWNjN2RjZmRkNTN3DGNvcmUvaGVhZGluZ30CdyQxN2VjNjcyNi0yMjM3LTQ5ZmUtODAzZC02MWJlZTU3MzhjYjR3DGNvcmUvaGVhZGluZ30CdyRmMWM2MDkwNi00NjU2LTRmOWMtOGRjNS1jYzM3N2QzODJkMmN3DGNvcmUvaGVhZGluZ30CdyQ3M2U3MDRiNC01M2E2LTRkOGUtODkzZi05YTRjOTM1ZDU4NTJ4dw5jb3JlL3BhcmFncmFwaHl3JDVlMjc1NGM5LWE0MWItNDhjZi1iMWI0LWUwMzY5N2Y0YWVkOHh3DmNvcmUvcGFyYWdyYXBoeXckZjY4OTBmOWYtNGI5MS00NzcwLTgzMDMtOWMzN2U0MWYyODNidwxjb3JlL2hlYWRpbmd9An0DdyRlOTZmMGNmOC1lMmNmLTQ3ZWEtOWRmYy03NjZjYzQ1NDU4MDl4dw5jb3JlL3BhcmFncmFwaHl3JDQxYjVkZjk4LTY2YjQtNDY5NS04NDUxLTRjNWZjMzQ1NDZjMnh3DmNvcmUvcGFyYWdyYXBoeXckZWU1MjBhODgtMjk0OS00NTI1LTlmYWYtMzNmZGYzNjlhNjA4dwxjb3JlL2hlYWRpbmd9An0DdyQ0Y2ViNTRhYS1lNGNmLTQzMTEtYTQ4Yy1jY2Q5NDU5NDdmYzF3DGNvcmUvaGVhZGluZ30CfQN3JDhjYTUzOTM0LTQ2ZWItNGU2YS1hMzY2LWFhODU2YjQ0ZGY4NHh3DmNvcmUvcGFyYWdyYXBoeXckM2UyZTE4OTMtMDRjYy00MzNlLWI5NzktMDM1NzkyYjE3NWMxdwxjb3JlL2hlYWRpbmd9An0DdyQ3NTk5ODY4ZS0wYTlmLTRlMjAtYmE4MC1hMDc5NmFmOWNlNjN3DGNvcmUvaGVhZGluZ30CfQN3JGQ1NWNhYTM1LTBmM2YtNDc0OS1iODI4LWY1NzBjYzAxODE4ZXcMY29yZS9oZWFkaW5nfQJ9A3ckZjk1ZDU3NzctYTE0MS00YmZlLTg2NjYtNjE3M2I0NzJkYmJldwxjb3JlL2hlYWRpbmd9AnckY2IxZTlmZjQtNDdjZC00OWEwLTkzNDktM2RjMzgyOTg0NjNldwxjb3JlL2hlYWRpbmd9An0DdyRmODZiOTUxZi0zMWY1LTQ4MWQtYmNiOS0zZTI1NTcxNTgxNTN3DGNvcmUvaGVhZGluZ30CfQN3JGJiMWNkZTQ1LWY3NDQtNGQ5Mi1iYWE0LWNlNTE5ZjFhMzY2OHcMY29yZS9oZWFkaW5nfQJ9A30CdyQxNDk4ZjZjZC0zNzViLTQ4MDQtOTA3OS01OTAyYWQwOWIyN2N3DmNvcmUvcGFyYWdyYXBoeXckNTQ0MDZlYWYtMDhlMy00YTA0LTg5ZmUtMzVjYmI1NGQ4MjJjdwxjb3JlL2hlYWRpbmd9AnckMTQ5OGY2Y2QtMzc1Yi00ODA0LTkwNzktNTkwMmFkMDliMjdjdw5jb3JlL3BhcmFncmFwaHl3JGVhYTYyODA4LTNjMzctNDEwZi05NDNhLTE0NjcxOTgwZTk3NHcMY29yZS9oZWFkaW5nfQN3JDE0OThmNmNkLTM3NWItNDgwNC05MDc5LTU5MDJhZDA5YjI3Y3cOY29yZS9wYXJhZ3JhcGh5d7IBPHA+PHN0cm9uZz5XaGF0IHRvIG1vbml0b3I8L3N0cm9uZz48YnI+PGJyPkxvZ2luIGV2ZW50cyBsaWtlIHN1Y2Nlc3NmdWwgbG9naW5zIGFuZCBmYWlsZWQgbG9naW5zLiBXYXRjaCBmb3IgbG9naW5zIGZyb20gc3RyYW5nZSBwbGFjZXMsIHN0cmFuZ2UgdGltZXMgb3IgbWFueSBmYWlsZWQgYXR0ZW1wdHMuPC9wPn9\/f39\/f39\/f39\/f39\/f39\/f39\/f393JDZmZTk5YjNiLTRkNTktNGJhZS04MTk5LTkyYTRmOThmMmE3YXh3sgE8cD48c3Ryb25nPldoYXQgdG8gbW9uaXRvcjwvc3Ryb25nPjxicj48YnI+TG9naW4gZXZlbnRzIGxpa2Ugc3VjY2Vzc2Z1bCBsb2dpbnMgYW5kIGZhaWxlZCBsb2dpbnMuIFdhdGNoIGZvciBsb2dpbnMgZnJvbSBzdHJhbmdlIHBsYWNlcywgc3RyYW5nZSB0aW1lcyBvciBtYW55IGZhaWxlZCBhdHRlbXB0cy48L3A+dw5jb3JlL3BhcmFncmFwaHl\/f39\/f39\/f39\/f39\/f393JGEwNDJiOWM1LTcxNmYtNGFlMy1iYThkLTllYmExYWM4MTc5NXcMY29yZS9oZWFkaW5nfQJ9A3ckNmZlOTliM2ItNGQ1OS00YmFlLTgxOTktOTJhNGY5OGYyYTdheHeyATxwPjxzdHJvbmc+V2hhdCB0byBtb25pdG9yPC9zdHJvbmc+PGJyPjxicj5Mb2dpbiBldmVudHMgbGlrZSBzdWNjZXNzZnVsIGxvZ2lucyBhbmQgZmFpbGVkIGxvZ2lucy4gV2F0Y2ggZm9yIGxvZ2lucyBmcm9tIHN0cmFuZ2UgcGxhY2VzLCBzdHJhbmdlIHRpbWVzIG9yIG1hbnkgZmFpbGVkIGF0dGVtcHRzLjwvcD53DmNvcmUvcGFyYWdyYXBoeX9\/f39\/f39\/f39\/f39\/f39\/f39\/f39\/f39\/dyQ2ZmU5OWIzYi00ZDU5LTRiYWUtODE5OS05MmE0Zjk4ZjJhN2F4d7IBPHA+PHN0cm9uZz5XaGF0IHRvIG1vbml0b3I8L3N0cm9uZz48YnI+PGJyPkxvZ2luIGV2ZW50cyBsaWtlIHN1Y2Nlc3NmdWwgbG9naW5zIGFuZCBmYWlsZWQgbG9naW5zLiBXYXRjaCBmb3IgbG9naW5zIGZyb20gc3RyYW5nZSBwbGFjZXMsIHN0cmFuZ2UgdGltZXMgb3IgbWFueSBmYWlsZWQgYXR0ZW1wdHMuPC9wPncOY29yZS9wYXJhZ3JhcGh5f39\/f39\/f39\/f39\/f39\/dyQ2ZmU5OWIzYi00ZDU5LTRiYWUtODE5OS05MmE0Zjk4ZjJhN2F4d7IBPHA+PHN0cm9uZz5XaGF0IHRvIG1vbml0b3I8L3N0cm9uZz48YnI+PGJyPkxvZ2luIGV2ZW50cyBsaWtlIHN1Y2Nlc3NmdWwgbG9naW5zIGFuZCBmYWlsZWQgbG9naW5zLiBXYXRjaCBmb3IgbG9naW5zIGZyb20gc3RyYW5nZSBwbGFjZXMsIHN0cmFuZ2UgdGltZXMgb3IgbWFueSBmYWlsZWQgYXR0ZW1wdHMuPC9wPncOY29yZS9wYXJhZ3JhcGh5f39\/f39\/f39\/f39\/f39\/dyRmNzI2ZWEyMi1iMzFiLTRiOTMtYTYwMC01ODYzNjVhN2Q2NjR3CWNvcmUvbGlzdHl3AHckODk0ZjIyZjgtNDE1NC00MmYwLWFmY2ItZGZhZDkyMWRiMWQ4eHcOY29yZS9saXN0LWl0ZW13JDg3YTEzMjUzLWExMzgtNDFmMC1hYzIwLTc3NDc5Nzc2ZWMzZnh3DmNvcmUvbGlzdC1pdGVtdyQxMzZiODIzOS1kZmIwLTQ2YzMtOTEzNi1jMTUzYzQ2N2UwZTd4dw5jb3JlL2xpc3QtaXRlbXckYzUyNDFjZDAtZDE2Yy00Y2U2LTgwMzYtNGM3NzNiNDliZmU4dw5jb3JlL3BhcmFncmFwaHl3JDRiZmY4NmU3LTU3MGItNDQwYS1hYTI3LTgxM2IxODAxZGE5Y3cMY29yZS9oZWFkaW5nfQJ3JGM1MjQxY2QwLWQxNmMtNGNlNi04MDM2LTRjNzczYjQ5YmZlOHcOY29yZS9wYXJhZ3JhcGh5dyQ4NjI2NGZjNC03NTYxLTRjZjUtOTI5YS02NDYwMjk0MTc2M2V3DGNvcmUvaGVhZGluZ30CdyRjMTBlYmIzOC0wM2Y0LTRhMDYtOTA4MC05MmIxOGM4MjNlMTd3DmNvcmUvcGFyYWdyYXBoeXckMDdkY2Q5N2ItMjc3OS00YjZlLThmY2YtNGZiNGJmOWQwOGE0dwxjb3JlL2hlYWRpbmd9An0DdyRiY2I0MjlkNi0wMzM1LTQxZDYtODA3Yi0xMTM0MmEyMDZlNjJ4dw5jb3JlL3BhcmFncmFwaHl3JDAzM2M4MTU4LTQyMTctNDUxZi1iN2Y2LTM5ZDM1ZjY3MDkwNncMY29yZS9oZWFkaW5nfQN3JGJjYjQyOWQ2LTAzMzUtNDFkNi04MDdiLTExMzQyYTIwNmU2Mnh3DmNvcmUvcGFyYWdyYXBoeXckOGRmYTJkM2ItOTU2ZS00OTZlLWJiYmEtMjAxNjU2OWIwZjAwdwxjb3JlL2hlYWRpbmd9A3ckMGQzMDg0YzQtNGY5ZC00ZWIyLTlmNzgtN2Y2MTMyODQ2ZTcxdwxjb3JlL2hlYWRpbmd9A3ckZjgyZjkxYTAtMDRiYi00YjViLWJiOTMtMGU3Njc4ZjMwMGJidwxjb3JlL2hlYWRpbmd9A3ckNDA1MTU5ODUtZmRjZi00MmEyLWFhMDAtYmQ1M2U4NDg0YmQ1dwxjb3JlL2hlYWRpbmd9A3ckOGM5YmU3YTctMzViNi00MTM5LTkxOGUtOTBjOGExNjNiYjRmdwxjb3JlL2hlYWRpbmd9A3ckZWFhOThiMjItMThkMC00ZDg3LWIwYjMtN2Y2MjRlNzFmYzU3dwxjb3JlL2hlYWRpbmd9A3ckODE1NWEzMDEtZDNmZC00OWMxLTgzNjctY2Q3YjlmZDA3Yjk1eHcOY29yZS9wYXJhZ3JhcGh5dyQ1MjIxYTc2Zi04YmZiLTQ3MzItODU2Zi04NDk0ZTUzYjA5MDJ3DGNvcmUvaGVhZGluZ30DdyQwZjhiMTQ2Yy0wMTYyLTQzZGUtOTBlMy0zNThhNmUzYTYxZDJ4dw5jb3JlL3BhcmFncmFwaHl3JGUxNTBmYTc3LTkzNzctNDRhYi1hYzkyLTdmODU2MjAwZjAwNXcMY29yZS9oZWFkaW5nfQN3JGM3YTlhOGMxLTcxNGEtNDljMS05MGY1LTA3N2IxNTM4OTZiN3h3DmNvcmUvcGFyYWdyYXBoeXckZGJjN2Q5ODMtYmU5ZS00NzllLTk2NWEtYzE1NDY4NTNhOGM4dwxjb3JlL2hlYWRpbmd9A3ckMmJiODYxNDktMDBlNC00Y2M0LTk3MzEtMWQwZjU5M2MyYTc5eHcOY29yZS9wYXJhZ3JhcGh5dyQ5Zjc5ZDQ4OC0yNWVjLTRhYzYtYmRiMy04ZWNmM2U5OGI2Njl4dw5jb3JlL3BhcmFncmFwaHl3JDJmOGJjODdjLWIwMGQtNGI0Mi1iOWY1LWY3YjEzOTlkZDNiOXcMY29yZS9oZWFkaW5nfQN3JDc5MDcxNmE4LWJkNGQtNDEwMi1iMTBlLTZiYTExNzlhYzE5YncMY29yZS9oZWFkaW5nfQN3JGVjZjliNTk1LTIwZGEtNGRhYi05ZjdkLTgxYmQ5ZTlhNGE4NXcMY29yZS9oZWFkaW5nfQN3JGY0MWU4ZmZjLWNjNWMtNGFmZS1iZjgwLTdkOWYwMTY0NjQ0OHcOY29yZS9wYXJhZ3JhcGh5dyRlMGY2ODNjNC1iZmRiLTRiOGQtODk5ZC0zNjE3NzVhZjdiNDZ4dw5jb3JlL3BhcmFncmFwaHl3JGM5NDVkZjFiLWM0YzctNGE1Ni1hMTA4LTYzZmVmNDJjYTRjZXcMY29yZS9oZWFkaW5nfQN3JDhkMWY0OTk4LTYyYTMtNGRhMC1hZWY1LTA3Yjc2MDYwNmMxMnh3DmNvcmUvcGFyYWdyYXBoeXckZTFkMGE0NDctYjQyNi00NGYwLTg3OGMtNzQ2NTdiZDQwOWZmdwxjb3JlL2hlYWRpbmd9A3ckOGQxZjQ5OTgtNjJhMy00ZGEwLWFlZjUtMDdiNzYwNjA2YzEyeHcOY29yZS9wYXJhZ3JhcGh5dQB1AX2PDnUAdQF9kQ51AHUBfY8OdQB1AX2RDncuMTBjbG91ZC1zZWN1cml0eS10aXBzLXRvLXN0b3AtYnJlYWNoZXMtaW4tMjAyNnctMWNsb3VkLXNlY3VyaXR5LXRpcHMtdG8tc3RvcC1icmVhY2hlcy1pbi0yMDI2dyxjbG91ZC1zZWN1cml0eS10aXBzLXRvLXN0b3AtYnJlYWNoZXMtaW4tMjAyNncTY2xvdWQtc2VjdXJpdHktdGlwc32E7wF3B3B1Ymxpc2h3EzIwMjYtMDUtMDdUMTg6MTY6NDd7QnngJ5+VwAB7QeYukNIgAAABkY3Siwu0AQEBBAAHADIApAoAzQoAAQAdAJsEAAEAHwCfBAABAFoA\/w1vkAIAAQA23gHkAQABADPcAdUEAAEAJgDqAgABAGgA6QIAAQAU2QGGAwABACgAgQMAAQAhAIECAAEAAwNlAJADAAEAIocB5QMAAQAB0AGbAQABACTcApsBAAEAaAC5AgABAC+jAYoCAAEAJqEBXwABADJ69AIAAQABX7ACAAEAKIEBuAEAAQAkhAG+AQABACQAgQQAAQBsALADAAEAMwDmAwABAC8ArwIAAQAjAMEBAAEALwCdBAABAG0AvAUAAQAtAJsJAAEALXjlAgABAGMAvAQAAQA2AJEsAQEB0gySAdoNT\/oGUfoEjAHCFZwBggOZAr4ClAKjBliXA5oB2gPyAfgDWtwDU64CngGZBNsBhAXWAfUBhQPfAZoBqgPXAfwC+QGiAbEBlASSAaEDrgGSAq0BsAJWigWeAYsEZcEEYYoDVe4BYaYFnwHFBl+WC6oBhQSVAcUFaMQ7bwEAAQADA2MAAQK8AWpfAOYJvgPkAQABtwPiAQDcBQDxAQB8WfYBAAMA3AICqQEAAwABB+gBogIWsgEXqQECAAHRBZsB6QEhuQGEAuwBAgABewNzf4kD1wgvlA4FtgHnAgPfAgYHgQbnAqkDBgEC\",\"updateId\":859990312}","footnotes":""},"categories":[913],"tags":[],"class_list":["post-15289","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-trust-security"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>10 Cloud Security Tips to Stop Breaches in 2026<\/title>\n<meta name=\"description\" content=\"Prevent breaches and secure data in 2026. Use our 10 essential cloud security tips to strengthen your business&#039;s cyber defenses.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/utho.com\/blog\/cloud-security-tips\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"10 Cloud Security Tips to Stop Breaches in 2026\" \/>\n<meta property=\"og:description\" content=\"Prevent breaches and secure data in 2026. Use our 10 essential cloud security tips to strengthen your business&#039;s cyber defenses.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/utho.com\/blog\/cloud-security-tips\/\" \/>\n<meta property=\"og:site_name\" content=\"Utho\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/uthocloud\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-07T12:46:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-07T12:50:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/utho.com\/blog\/wp-content\/uploads\/10-Cloud-Security-Tips-to-Stop-Breaches-in-2026.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"556\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Umesh\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@uthocloud\" \/>\n<meta name=\"twitter:site\" content=\"@uthocloud\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Umesh\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/utho.com\/blog\/cloud-security-tips\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/utho.com\/blog\/cloud-security-tips\/\"},\"author\":{\"name\":\"Umesh\",\"@id\":\"https:\/\/utho.com\/blog\/#\/schema\/person\/f213e3fcf1ea5603ab66197a9c960b3c\"},\"headline\":\"10 Cloud Security Tips to Stop Breaches in 2026\",\"datePublished\":\"2026-05-07T12:46:47+00:00\",\"dateModified\":\"2026-05-07T12:50:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/utho.com\/blog\/cloud-security-tips\/\"},\"wordCount\":3844,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/utho.com\/blog\/#organization\"},\"articleSection\":[\"Trust &amp; Security\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/utho.com\/blog\/cloud-security-tips\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/utho.com\/blog\/cloud-security-tips\/\",\"url\":\"https:\/\/utho.com\/blog\/cloud-security-tips\/\",\"name\":\"10 Cloud Security Tips to Stop Breaches in 2026\",\"isPartOf\":{\"@id\":\"https:\/\/utho.com\/blog\/#website\"},\"datePublished\":\"2026-05-07T12:46:47+00:00\",\"dateModified\":\"2026-05-07T12:50:21+00:00\",\"description\":\"Prevent breaches and secure data in 2026. Use our 10 essential cloud security tips to strengthen your business's cyber defenses.\",\"breadcrumb\":{\"@id\":\"https:\/\/utho.com\/blog\/cloud-security-tips\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/utho.com\/blog\/cloud-security-tips\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/utho.com\/blog\/cloud-security-tips\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/utho.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"10 Cloud Security Tips to Stop Breaches in 2026\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/utho.com\/blog\/#website\",\"url\":\"https:\/\/utho.com\/blog\/\",\"name\":\"Utho\",\"description\":\"Tutorials Guides for Linux, Windows and Developers\",\"publisher\":{\"@id\":\"https:\/\/utho.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/utho.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/utho.com\/blog\/#organization\",\"name\":\"Utho\",\"url\":\"https:\/\/utho.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/utho.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/utho.com\/blog\/wp-content\/uploads\/utho_logo_blue.png\",\"contentUrl\":\"https:\/\/utho.com\/blog\/wp-content\/uploads\/utho_logo_blue.png\",\"width\":1147,\"height\":446,\"caption\":\"Utho\"},\"image\":{\"@id\":\"https:\/\/utho.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/uthocloud\",\"https:\/\/twitter.com\/uthocloud\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/utho.com\/blog\/#\/schema\/person\/f213e3fcf1ea5603ab66197a9c960b3c\",\"name\":\"Umesh\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/utho.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/afa76ed351f7257e667140e6a5ad997a47e4c0c9e09cb1f81f91e75f72906613?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/afa76ed351f7257e667140e6a5ad997a47e4c0c9e09cb1f81f91e75f72906613?s=96&d=mm&r=g\",\"caption\":\"Umesh\"},\"url\":\"https:\/\/utho.com\/blog\/author\/profito\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"10 Cloud Security Tips to Stop Breaches in 2026","description":"Prevent breaches and secure data in 2026. Use our 10 essential cloud security tips to strengthen your business's cyber defenses.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/utho.com\/blog\/cloud-security-tips\/","og_locale":"en_US","og_type":"article","og_title":"10 Cloud Security Tips to Stop Breaches in 2026","og_description":"Prevent breaches and secure data in 2026. Use our 10 essential cloud security tips to strengthen your business's cyber defenses.","og_url":"https:\/\/utho.com\/blog\/cloud-security-tips\/","og_site_name":"Utho","article_publisher":"https:\/\/www.facebook.com\/uthocloud","article_published_time":"2026-05-07T12:46:47+00:00","article_modified_time":"2026-05-07T12:50:21+00:00","og_image":[{"width":1024,"height":556,"url":"https:\/\/utho.com\/blog\/wp-content\/uploads\/10-Cloud-Security-Tips-to-Stop-Breaches-in-2026.jpg","type":"image\/jpeg"}],"author":"Umesh","twitter_card":"summary_large_image","twitter_creator":"@uthocloud","twitter_site":"@uthocloud","twitter_misc":{"Written by":"Umesh","Est. reading time":"18 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/utho.com\/blog\/cloud-security-tips\/#article","isPartOf":{"@id":"https:\/\/utho.com\/blog\/cloud-security-tips\/"},"author":{"name":"Umesh","@id":"https:\/\/utho.com\/blog\/#\/schema\/person\/f213e3fcf1ea5603ab66197a9c960b3c"},"headline":"10 Cloud Security Tips to Stop Breaches in 2026","datePublished":"2026-05-07T12:46:47+00:00","dateModified":"2026-05-07T12:50:21+00:00","mainEntityOfPage":{"@id":"https:\/\/utho.com\/blog\/cloud-security-tips\/"},"wordCount":3844,"commentCount":0,"publisher":{"@id":"https:\/\/utho.com\/blog\/#organization"},"articleSection":["Trust &amp; Security"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/utho.com\/blog\/cloud-security-tips\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/utho.com\/blog\/cloud-security-tips\/","url":"https:\/\/utho.com\/blog\/cloud-security-tips\/","name":"10 Cloud Security Tips to Stop Breaches in 2026","isPartOf":{"@id":"https:\/\/utho.com\/blog\/#website"},"datePublished":"2026-05-07T12:46:47+00:00","dateModified":"2026-05-07T12:50:21+00:00","description":"Prevent breaches and secure data in 2026. Use our 10 essential cloud security tips to strengthen your business's cyber defenses.","breadcrumb":{"@id":"https:\/\/utho.com\/blog\/cloud-security-tips\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/utho.com\/blog\/cloud-security-tips\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/utho.com\/blog\/cloud-security-tips\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/utho.com\/blog\/"},{"@type":"ListItem","position":2,"name":"10 Cloud Security Tips to Stop Breaches in 2026"}]},{"@type":"WebSite","@id":"https:\/\/utho.com\/blog\/#website","url":"https:\/\/utho.com\/blog\/","name":"Utho","description":"Tutorials Guides for Linux, Windows and Developers","publisher":{"@id":"https:\/\/utho.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/utho.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/utho.com\/blog\/#organization","name":"Utho","url":"https:\/\/utho.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/utho.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/utho.com\/blog\/wp-content\/uploads\/utho_logo_blue.png","contentUrl":"https:\/\/utho.com\/blog\/wp-content\/uploads\/utho_logo_blue.png","width":1147,"height":446,"caption":"Utho"},"image":{"@id":"https:\/\/utho.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/uthocloud","https:\/\/twitter.com\/uthocloud"]},{"@type":"Person","@id":"https:\/\/utho.com\/blog\/#\/schema\/person\/f213e3fcf1ea5603ab66197a9c960b3c","name":"Umesh","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/utho.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/afa76ed351f7257e667140e6a5ad997a47e4c0c9e09cb1f81f91e75f72906613?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/afa76ed351f7257e667140e6a5ad997a47e4c0c9e09cb1f81f91e75f72906613?s=96&d=mm&r=g","caption":"Umesh"},"url":"https:\/\/utho.com\/blog\/author\/profito\/"}]}},"_links":{"self":[{"href":"https:\/\/utho.com\/blog\/wp-json\/wp\/v2\/posts\/15289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/utho.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/utho.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/utho.com\/blog\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/utho.com\/blog\/wp-json\/wp\/v2\/comments?post=15289"}],"version-history":[{"count":4,"href":"https:\/\/utho.com\/blog\/wp-json\/wp\/v2\/posts\/15289\/revisions"}],"predecessor-version":[{"id":15301,"href":"https:\/\/utho.com\/blog\/wp-json\/wp\/v2\/posts\/15289\/revisions\/15301"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/utho.com\/blog\/wp-json\/wp\/v2\/media\/15300"}],"wp:attachment":[{"href":"https:\/\/utho.com\/blog\/wp-json\/wp\/v2\/media?parent=15289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/utho.com\/blog\/wp-json\/wp\/v2\/categories?post=15289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/utho.com\/blog\/wp-json\/wp\/v2\/tags?post=15289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}