CINXE.COM
ASHRAE Journal Podcast Episode 41 | ashrae.org
<!DOCTYPE html> <html id="htmlTag" xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head id="Head1"> <!--Copyright Bridgeline Digital, Inc. An unpublished work created in 2009. All rights reserved. This software contains the confidential and trade secret information of Bridgeline Digital, Inc. ("Bridgeline"). Copying, distribution or disclosure without Bridgeline's express written permission is prohibited--> <title>ASHRAE Journal Podcast Episode 41 | ashrae.org</title> <meta name="description" content="Learn more about ASHRAE Journal Podcast Episode 41 at ashrae.org" /> <link media="ALL" rel="stylesheet" type="text/css" href="/Style%20Library/css/main.css?v=638670924820000000" /> <link href="https://www.ashrae.org/news/ashraejournal/ashrae-journal-podcast-episode-41" rel="canonical" /><script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.7/jquery-ui.min.js"></script> <script type="text/javascript" src="/Script%20Library/front-end/frontEnd.js?v=638670924820000000"></script> <script type="text/javascript" src="/Script%20Library/RM%20and%20FB/facebookbasepixel.js?v=637559081832860343"></script> <script type="text/javascript" src="/Script%20Library/GoogleAnalytics/galinktracking.js?v=636694872528677945"></script> <script type="text/javascript" src="/Script%20Library/RM%20and%20FB/LinkedIn.js?v=636735766845676602"></script> <script type="text/javascript" src="/Script%20Library/RM%20and%20FB/AAMtracking.js?v=636866826136897193"></script> <script type="text/javascript" src="/Script%20Library/ad%20server/ad_server_search.js?v=638605405256353516"></script> <script type="text/javascript" src="/Script%20Library/ad%20server/uprival_test.js?v=637007772608685766"></script> <script type="text/javascript" src="/Script%20Library/ad%20server/ad_code.js?v=638605405380143503"></script> <script type="text/javascript"> //<![CDATA[ var publicSiteUrl='https://www.ashrae.org/'; var editorContext='SiteEditor'; var basePageType='basepage'; var pageState='View'; var jSpinnerUrl='/iapps_images/spinner.gif'; var jRotatingCube='/iapps_images/loading-spinner.gif'; var jWebApiRoutePath='api'; var PageId='701a0875-dfcc-4c62-a494-9d984db3c82f'; var WorkflowId=''; var ReferrerTypeId='8'; var ReferrerUrl='news/ashraejournal/ashrae-journal-podcast-episode-41'; var siteId = '8039ce09-e7da-47e1-bcec-df96b5e411f4';var swgif = '/Tracking/WebPageEventLogger.axd'; //]]> </script> <meta charset="utf-8"> <meta name="mobile-web-app-capable" content="yes"><meta name="google-site-verification" content="OGrBPJ3X7qcl_k0ESYSyCr8H_IC8qNnq1Pkkq8DXJWo" /><!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-5368111-12"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-5368111-12'); </script><script type="text/javascript" src="https://web.ashrae.org/uprival/ad_code.js?st=1662042773"></script><!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-KVQRBD6');</script> <!-- End Google Tag Manager --><script type="text/javascript" src="https://tracking.magnetmail.net/MagnetLeads.js"> </script><script type="text/javascript"> com.realmagnet.MagnetLeads.init('RsiAkAW4uUmruHul3yVjUQ'); com.realmagnet.MagnetLeads.visitPage(); </script><meta name="viewport" content="width=device-width, initial-scale=1" /><meta name="apple-mobile-web-app-capable" content="yes" /><meta name="apple-mobile-web-app-status-bar-style" content="black" /><meta name="apple-mobile-web-app-title" content="Web Starter Kit" /><meta name="msapplication-TileImage" content="Image Library/template-images/touch/ms-touch-icon-144x144-precomposed.png" /><meta name="msapplication-TileColor" content="#3372DF" /><script type="text/javascript" src="//platform-api.sharethis.com/js/sharethis.js#property=59b7cee33ece4e001182cc54&product=custom-share-buttons" async="async"></script><meta name="mobile-web-app-capable" content="yes" /><link rel="icon" sizes="192x192" href="/images/icon_192x192.png"></link><meta name="apple-mobile-web-app-capable" content="yes" /><meta name="apple-mobile-web-app-status-bar-style" content="default" /><meta name="apple-mobile-web-app-title" content="ASHRAE" /><link rel="apple-touch-icon" href="/images/icon_120x120.png"></link><link rel="apple-touch-icon" sizes="152x152" href="/images/icon_152x152.png"></link><link rel="apple-touch-icon" sizes="167x167" href="/images/icon_167x167.png"></link><link rel="apple-touch-icon" sizes="180x180" href="/images/icon_180x180.png"></link><meta name="msapplication-TileImage" content="/images/icon_144x144.png" /><meta name="msapplication-TileColor" content="#00529b" /></head> <body id="bodyTag"> <form method="post" action="/news/ashraejournal/ashrae-journal-podcast-episode-41" id="form1"> <div class="aspNetHidden"> <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> </div> <script type="text/javascript"> //<![CDATA[ var theForm = document.forms['form1']; function __doPostBack(eventTarget, eventArgument) { if (!theForm.onsubmit || (theForm.onsubmit() != false)) { theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value = eventArgument; theForm.submit(); } } //]]> </script> <script src="https://ajax.aspnetcdn.com/ajax/4.6/1/WebForms.js" type="text/javascript"></script> <script type="text/javascript"> //<![CDATA[ window.WebForm_PostBackOptions||document.write('<script type="text/javascript" src="/WebResource.axd?d=oCKj8IvNuIk7gy1HJUatdrxc44YP4nQWME8Wxdd6DGPnke3qspDXbthnORZlPAcXN7_u1xDrkIusxuRK-nyT4HeVlao1&t=637814473746327080"><\/script>');//]]> </script> <script type="text/javascript"> //<![CDATA[ var jTemplateType='0';var loadedFromVersion='False';//]]> </script> <script src="https://ajax.aspnetcdn.com/ajax/4.6/1/MicrosoftAjax.js" type="text/javascript"></script> <script type="text/javascript"> //<![CDATA[ (window.Sys && Sys._Application && Sys.Observer)||document.write('<script type="text/javascript" src="/ScriptResource.axd?d=C0-jv8mCc3YH01nQBjS-_7iqxAhQwr1PAupAXWe9c-BPPGUzsXZR04BVmo0GfZ6DYf-qRgRxNRrIK4XxIcCtMtvwYi2DvMZh8gSrkeCsXgxJzW1HtAy8NZq70TAxcfFSjb7b6N-fcCXIWvVYDR11RiosX1o1&t=49337fe8"><\/script>');//]]> </script> <script src="https://ajax.aspnetcdn.com/ajax/4.6/1/MicrosoftAjaxWebForms.js" type="text/javascript"></script> <script type="text/javascript"> //<![CDATA[ (window.Sys && Sys.WebForms)||document.write('<script type="text/javascript" src="/ScriptResource.axd?d=CkWDPtA3hXBHN7AqG5hE3AqHF3VpqsYHc2CORuy9yY-68UdbUfqEq988tjrPIpe-j_OLXO-j30fU7S3eQMTXmXucYiW4XyTEgu6YEG0ouvBlwMiFFZrNJMo6VfqMY2-D_9TN8uAlpOAtlcy_A1FeI5E3pNtBAkyeM0UpNdqXkUDtx89Z0&t=49337fe8"><\/script>');//]]> </script> <script type="text/javascript"> //<![CDATA[ Sys.WebForms.PageRequestManager._initialize('scriptManager', 'form1', [], [], [], 90, ''); //]]> </script> <div class="pageWrap"> <header class="headerMain"> <div class="section--contrastLight global-alert" data-alert="AI"><p><span style="font-size: 13px;"><i class="icon-info-alt icon--empty"></i><em> Artificial intelligence (AI) policy: ASHRAE prohibits the entry of content from any ASHRAE publication or related ASHRAE intellectual property (IP) into any AI tool, including but not limited to ChatGPT. Additionally, creating derivative works of ASHRAE IP using AI is also prohibited without express written permission from ASHRAE.</em></span></p><span class="close-button"><i role="button" class="icon-close"><span class="h-visuallyHidden">Close</span></i></span></div> <div class="headerMain-util"> <div class="headerMain-utilInner"> <div class="headerMain-utilZone01"> <div class="logoMain"> <a href="/"> <img src="/Image Library/content-images/logo_ashrae.png" alt="logo"></a><span>Shaping Tomorrow鈥檚 Built Environment Today</span> </div> </div> <div class="headerMain-utilZone02"> <i class="placeholder" data-placeholderid="11138"></i> <div class="searchBox searchBox--main"> <input id="searchMain" type="text" placeholder="What Are You Looking For?" name="" class="searchBox-textField"> <a class="searchBox-submit" ></a> </div> </div> <div class="headerMain-utilZone03"> <nav class="navUtil"><ul> <li class=""><a href="/join">Join</a></li> <li class=""><a href="/volunteer">Volunteer</a></li> <li class=""><a href="/make-a-gift">Make A Gift</a></li> <li class="navUtil-btn"><a href="https://www.techstreet.com/ashrae/pages/home">Bookstore</a></li> </ul></nav> <nav class="navSignin"> <ul> <li><a href="/login" class="navSignin-signin">Log In</a></li> </ul> </nav> </div> </div> </div> <div class="headerMain-main"> <div class="headerMain-mainInner"> <div class="headerMain-mainZone01"> </div> <div class="headerMain-mainZone02"> <nav id="navMain" runat="server" class="navMain"><ul> <li class="hasChildren is-mega"><a href="/about">About</a><ul> <div class="mega-column"> <li class=""><a href="/about/mission-and-vision">Mission & Vision</a><ul class="mega-column--inset"> <li class=""><a href="/about/mission-and-vision/ashrae-industry-history">ASHRAE & Industry History</a></li> </ul> </li> <li class=""><a href="/about/leadership">Leadership</a><ul class="mega-column--inset"> <li class=""><a href="/about/leadership/ashrae-board-of-directors">ASHRAE Board of Directors</a></li> <li class=""><a href="/about/leadership/ashrae-president">ASHRAE President</a></li> <li class=""><a href="/about/leadership/leadership-voices">Leadership Voices</a></li> <li class=""><a href="/about/leadership/officers-directors-councils-committees-staff">Officers, Directors, Councils, Committees, Staff</a></li> <li class=""><a href="/about/leadership/presidential-members-gallery">Presidential Members Gallery</a></li> <li class=""><a href="/File Library/About/Leadership/Society Organization Chart/SocietyOrgChart.pdf">Society Organization Chart</a></li> </ul> </li></div><div class="mega-column"><li class=""><a href="/about/strategic-plan">Strategic Plan</a></li> <li class=""><a href="/about/society-snapshot">Society Snapshot</a></li> <li class=""><a href="/about/governance">Governance</a><ul class="mega-column--inset"> <li class=""><a href="/about/governance/memoranda-of-understanding">Memoranda of Understanding</a></li> </ul> </li> <li class=""><a href="/about/position-documents">Position Documents</a></li> <li class=""><a href="/about/government-affairs">Government Affairs</a><ul class="mega-column--inset"> <li class=""><a href="/about/government-affairs/member-resources-advocacy-toolkit">Member Resources: Advocacy Toolkit</a></li> <li class=""><a href="/about/government-affairs/government-affairs-office">Government Affairs Office</a></li> <li class=""><a href="/about/government-affairs/government-affairs-updates">Government Affairs Updates</a></li> <li class=""><a href="/about/government-affairs/policy-positions-and-issues">Policy Positions and Issues</a></li> </ul> </li></div><div class="mega-column"><li class=""><a href="/about/news">News</a><ul class="mega-column--inset"> <li class=""><a href="/about/news/2024">2024</a></li> <li class=""><a href="/about/news/2023">2023</a></li> <li class=""><a href="/about/news/2022">2022</a></li> <li class=""><a href="/about/news/news-prior-to-2022">News Prior to 2022</a></li> </ul> </li> <li class=""><a href="/about/newsletters">Newsletters</a></li> <li class=""><a href="/about/careers-at-ashrae">Careers at ASHRAE</a></li> <li class=""><a href="/about/event-space-rental">Event Space Rental</a></li> <li class=""><a href="http://foundation.ashrae.biz/" target="_blank">ASHRAE Foundation <i class="icon-link-ext icon--empty"></i></a></li> <li class=""><a href="/about/ashrae-365-app">ASHRAE 365 App</a></li></div><div class="mega-column"><li class=""><a href="/about/support-ashrae">Support ASHRAE</a><ul class="mega-column--inset"> <li class=""><a href="/about/support-ashrae/rp">RP</a></li> <li class=""><a href="http://foundation.ashrae.biz/" target="_blank">Foundation <i class="icon-link-ext icon--empty"></i></a></li> <li class=""><a href="/about/support-ashrae/planned-giving">Planned Giving</a></li> <li class=""><a href="/about/support-ashrae/ashrae-presidents-scholarship">ASHRAE Presidents Scholarship</a></li> <li class=""><a href="/about/support-ashrae/other">Other</a></li> <li class=""><a href="/about/support-ashrae/volunteer">Volunteer</a></li> </ul> </li> <li class=""><a href="/about/marketing-central">Marketing Central</a></li> <li class=""><a href="/about/ashrae-global-hq">ASHRAE Global HQ</a></li> <li class=""><a href="/about/contact-us">Contact Us</a></li> <li class=""><a href="/about/diversity-equity-and-inclusion-dei">Diversity Equity and Inclusion (DEI)</a></li> </div> </ul> </li> <li class="hasChildren is-mega"><a href="/technical-resources">Technical Resources</a><ul> <div class="mega-column"> <li class=""><a href="https://store.accuristech.com/ashrae/ashraegate.html" target="_blank">Bookstore <i class="icon-link-ext icon--empty"></i></a></li> <li class=""><a href="https://ashrae.library.site/" target="_blank">ASHRAE Library <i class="icon-link-ext icon--empty"></i></a></li> <li class=""><a href="/technical-resources/technology-portal">Technology Portal</a></li> <li class=""><a href="/technical-resources/technical-apps">Technical Apps</a></li> <li class=""><a href="/technical-resources/free-resources">Free Resources</a></li> <li class=""><a href="/technical-resources/ashrae-365-app">ASHRAE 365 App</a></li> <li class=""><a href="/technical-resources/building-eq">Building EQ</a></li> <li class=""><a href="/technical-resources/aedgs">AEDGs</a></li> <li class=""><a href="/technical-resources/cebd-center-of-excellence-for-building-decarbonization">Center of Excellence for Building Decarbonization (CEBD)</a></li></div><div class="mega-column"><li class=""><a href="/technical-resources/standards-and-guidelines">Standards & Guidelines</a><ul class="mega-column--inset"> <li class=""><a href="/technical-resources/standards-and-guidelines/continuous-maintenance">Continuous Maintenance</a></li> <li class=""><a href="/technical-resources/standards-and-guidelines/pcs-toolkit">Project Committees (PCs) Toolkit</a></li> <li class=""><a href="/technical-resources/standards-and-guidelines/public-review-drafts">Public Review Drafts</a></li> <li class=""><a href="https://www.techstreet.com/ashrae/lists/ashrae_standards.tmpl?ashrae_auth_token=" target="_blank">Purchase Standards & Guidelines <i class="icon-link-ext icon--empty"></i></a></li> <li class=""><a href="/technical-resources/standards-and-guidelines/standards-actions">Standards Actions</a></li> <li class=""><a href="/technical-resources/standards-and-guidelines/standards-addenda">Standards Addenda</a></li> <li class=""><a href="/technical-resources/standards-and-guidelines/standards-errata">Standards Errata</a></li> <li class=""><a href="/technical-resources/standards-and-guidelines/standards-interpretations">Standards Interpretations</a></li> <li class=""><a href="/technical-resources/standards-and-guidelines/apply-to-a-project-committee">Apply to a Project Committee</a></li> </ul> </li></div><div class="mega-column"><li class=""><a href="/technical-resources/90-1-portal">90.1 Portal</a></li> <li class=""><a href="/technical-resources/ashrae-handbook">ASHRAE Handbook</a></li> <li class=""><a href="/technical-resources/ashrae-journal">ASHRAE Journal</a><ul class="mega-column--inset"> <li class=""><a href="/technical-resources/ashrae-journal/featured-articles">Featured Articles</a></li> <li class=""><a href="/technical-resources/ashrae-journal/podcast">ASHRAE Journal Podcast</a></li> <li class=""><a href="/technical-resources/ashrae-journal/hot-air">Hot Air</a></li> </ul> </li> <li class=""><a href="http://www.hpbmagazine.org/" target="_blank">High Performing Buildings <i class="icon-link-ext icon--empty"></i></a></li> <li class=""><a href="/technical-resources/supplier-provided-learning">Supplier-Provided Learning</a></li> <li class=""><a href="/technical-resources/ashrae-transactions">ASHRAE Transactions</a></li> <li class=""><a href="/technical-resources/ashrae-conference-papers">ASHRAE Conference Papers</a></li></div><div class="mega-column"><li class=""><a href="/technical-resources/research">Research</a><ul class="mega-column--inset"> <li class=""><a href="/technical-resources/research/ashrae-rp">ASHRAE RP</a></li> <li class=""><a href="https://www.techstreet.com/ashrae/subgroups/34748?ashrae_auth_token=" target="_blank">Purchase Research Reports <i class="icon-link-ext icon--empty"></i></a></li> <li class=""><a href="/technical-resources/research/research-strategic-plan">Research Strategic Plan</a></li> </ul> </li> <li class=""><a href="/technical-resources/technical-committees">Technical Committees</a></li> <li class=""><a href="/technical-resources/science-and-technology-for-the-built-environment">Science and Technology for the Built Environment</a></li> <li class=""><a href="/technical-resources/translated-publications">Translated Publications</a></li></div><div class="mega-column"><li class=""><a href="/technical-resources/authoring-tools">Authoring Tools</a><ul class="mega-column--inset"> <li class=""><a href="/technical-resources/authoring-tools/citation-and-abstract-indexes">Citation and Abstract Indexes</a></li> <li class=""><a href="/technical-resources/authoring-tools/terminology">Terminology</a></li> </ul> </li> <li class=""><a href="/technical-resources/publication-errata-and-updates">Publication Errata & Updates</a></li> <li class=""><a href="/technical-resources/technical-faqs">Technical FAQs</a></li> <li class=""><a href="/technical-resources/resilience-activities">Resilience Activities</a></li> <li class=""><a href="/technical-resources/refrigeration">Refrigeration</a></li> </div> </ul> </li> <li class="hasChildren is-mega"><a href="/professional-development">Professional Development</a><ul> <div class="mega-column"> <li class=""><a href="/professional-development/elearning-on-demand">eLearning On Demand</a><ul class="mega-column--inset"> <li class=""><a href="https://myelearning.ashrae.org/page/individual-course" target="_blank">Course Catalog <i class="icon-link-ext icon--empty"></i></a></li> <li class=""><a href="/professional-development/elearning-on-demand/group-enrollment">Group Enrollments</a></li> </ul> </li> <li class=""><a href="/professional-development/all-instructor-led-training">All Instructor-Led Training</a><ul class="mega-column--inset"> <li class=""><a href="/professional-development/all-instructor-led-training/scheduled-courses">Scheduled Courses</a></li> <li class=""><a href="/professional-development/all-instructor-led-training/2025-winter-conference-courses">2025 Winter Conference Courses</a></li> <li class=""><a href="/professional-development/all-instructor-led-training/hvac-design-and-operations-training">HVAC Design and Operations Training</a></li> <li class=""><a href="/professional-development/all-instructor-led-training/online-instructor-led-training">Online Instructor-Led Training</a></li> <li class=""><a href="/professional-development/all-instructor-led-training/global-training">ASHRAE Global Training | MENA</a></li> <li class=""><a href="/professional-development/all-instructor-led-training/catalog-of-instructor-led-training">Catalog of Instructor-Led Training</a></li> <li class=""><a href="/professional-development/all-instructor-led-training/company-chapter-training">Company/Chapter Training</a></li> </ul> </li> <li class=""><a href="/professional-development/self-directed-learning-group-learning-texts">Self-Directed Learning / Group Learning Texts</a></li></div><div class="mega-column"><li class=""><a href="/professional-development/ashrae-certification">ASHRAE Certification</a><ul class="mega-column--inset"> <li class=""><a href="/professional-development/ashrae-certification/explore-benefits">Explore Benefits</a></li> <li class=""><a href="/professional-development/ashrae-certification/digital-badging">Digital Badging</a></li> <li class=""><a href="/professional-development/ashrae-certification/find-an-ashrae-certified-professional">Find an ASHRAE Certified Professional</a></li> </ul> </li> <li class=""><a href="/professional-development/learning-pathways">Learning Pathways</a><ul class="mega-column--inset"> <li class=""><a href="/professional-development/learning-pathways/hvac-design">HVAC Design - Basics</a></li> <li class=""><a href="/professional-development/learning-pathways/pathogen-mitigation">Pathogen Mitigation</a></li> </ul> </li></div><div class="mega-column"><li class=""><a href="https://jobs.ashrae.org/" target="_blank">Job Board <i class="icon-link-ext icon--empty"></i></a></li> <li class=""><a href="/professional-development/educator-resources">Educator Resources</a></li> <li class=""><a href="/professional-development/tech-hour-videos">Tech Hour Videos</a></li> <li class=""><a href="/professional-development/ashrae-unep-portal">ASHRAE UNEP Portal</a></li> </div> </ul> </li> <li class="hasChildren is-mega"><a href="/conferences">Conferences</a><ul> <div class="mega-column"> <li class=""><a href="/conferences/2025-winter-conference-orlando">2025 Winter Conference | Orlando</a></li> <li class=""><a href="/conferences/2025-annual-conference-phoenix">2025 Annual Conference | Phoenix</a></li> <li class=""><a href="/conferences/topical-conferences">Topical Conferences</a><ul class="mega-column--inset"> <li class=""><a href="/conferences/topical-conferences/third-international-conference-on-energy-and-indoor-environment-for-hot-climates">Third International Conference on Energy and Indoor Environment for Hot Climates</a></li> <li class=""><a href="/conferences/topical-conferences/ieq-2025-conference">IEQ 2025 Conference</a></li> <li class=""><a href="/conferences/topical-conferences/2025-ashrae-building-decarbonization-conference">2025 ASHRAE Building Decarbonization Conference</a></li> <li class=""><a href="/conferences/topical-conferences/2025-building-xvi-conference">2025 Buildings XVI Conference</a></li> </ul> </li></div><div class="mega-column"><li class=""><a href="/conferences/virtual-conference-access">Virtual Conference Access</a></li> <li class=""><a href="/conferences/conference-resources">Conference Resources</a><ul class="mega-column--inset"> <li class=""><a href="/conferences/conference-resources/ashrae-conference-marketing">ASHRAE Conference Marketing</a></li> <li class=""><a href="/File Library/Conferences/Conference Resources/Criteria for Annual Conference City Selection/Criteria-for-Annual-Conference-City-Selection.pdf">Criteria for Annual Conference City Selection</a></li> <li class=""><a href="/conferences/conference-resources/papers-and-programs">Papers & Programs</a></li> <li class=""><a href="/conferences/conference-resources/past-ashrae-conferences">Past ASHRAE Conferences</a></li> <li class=""><a href="/conferences/conference-resources/future-ashrae-conferences">Future ASHRAE Conferences</a></li> <li class=""><a href="/conferences/conference-resources/topical-conference-criteria">Topical Conference Criteria</a></li> <li class=""><a href="/conferences/conference-resources/travel">Travel</a></li> <li class=""><a href="/conferences/conference-resources/sponsorship-opportunities">Sponsorship Opportunities</a></li> </ul> </li></div><div class="mega-column"><li class=""><a href="/conferences/chapters-regional-conferences-crcs">Chapters Regional Conferences (CRCs)</a></li> <li class=""><a href="/conferences/events-and-conferences">Events and Conferences</a></li> <li class=""><a href="/conferences/speaker-resources">Speaker Resources</a></li> <li class=""><a href="/conferences/ashrae-365-app">ASHRAE 365 App</a></li> </div> </ul> </li> <li class="hasChildren is-mega"><a href="/communities">Communities</a><ul> <div class="mega-column"> <li class=""><a href="/communities/regions">Regions</a></li> <li class=""><a href="/communities/chapters">Chapters</a><ul class="mega-column--inset"> <li class=""><a href="/communities/chapters/ashrae-chapters">ASHRAE Chapters</a></li> <li class=""><a href="https://eweb.ashrae.org/eweb/dynamicpage.aspx?webcode=ASHRAEChapters" target="_blank">Chapter Reports, PAOE, CIQ <i class="icon-link-ext icon--empty"></i></a></li> <li class=""><a href="https://eweb.ashrae.org/eweb/dynamicpage.aspx?site=ASHRAE&webcode=chaptermeetings&chp_cst_key=00000000-0000-0000-0000-000000000000" target="_blank">Chapter Meetings <i class="icon-link-ext icon--empty"></i></a></li> <li class=""><a href="/communities/chapters/chapter-resources">Chapter Resources</a></li> <li class=""><a href="/communities/chapters/distinguished-lecturers">Distinguished Lecturers</a></li> <li class=""><a href="/communities/chapters/paoe-information">PAOE Information</a></li> <li class=""><a href="/communities/chapters/doe-lbnl-partnership">DOE & LBNL Partnership</a></li> </ul> </li> <li class=""><a href="/communities/volunteer">Volunteer</a></li></div><div class="mega-column"><li class=""><a href="/communities/councils">Councils</a><ul class="mega-column--inset"> <li class=""><a href="/communities/councils/members-council">Members Council</a></li> <li class=""><a href="/communities/councils/publishing-and-education-council">Publishing & Education Council</a></li> <li class=""><a href="/communities/councils/technology-council">Technology Council</a></li> </ul> </li> <li class=""><a href="/communities/committees">Committees</a><ul class="mega-column--inset"> <li class=""><a href="/communities/committees/committee-nominations">Committee Nominations</a></li> <li class=""><a href="/communities/committees/standards-committees">Standards Committees</a></li> <li class=""><a href="/communities/committees/standing-committees">Standing Committees</a></li> <li class=""><a href="/communities/committees/technical-committees">Technical Committees</a></li> </ul> </li></div><div class="mega-column"><li class=""><a href="/communities/student-zone">Student Zone</a><ul class="mega-column--inset"> <li class=""><a href="/communities/student-zone/student-activities">Student Activities</a></li> <li class=""><a href="/communities/student-zone/competitions">Competitions</a></li> <li class=""><a href="/communities/student-zone/scholarships-and-grants">Scholarships & Grants</a></li> <li class=""><a href="/communities/student-zone/student-branches">Student Branches</a></li> <li class=""><a href="/communities/student-zone/k-12-activities">K–12 Activities</a></li> <li class=""><a href="/communities/student-zone/membership-and-meetings">Membership & Meetings</a></li> <li class=""><a href="/communities/student-zone/educational-resources">Educational Resources</a></li> <li class=""><a href="/communities/student-zone/student-activities-resources">Student Activities Resources</a></li> <li class=""><a href="/communities/student-zone/student-news">Student News</a></li> </ul> </li></div><div class="mega-column"><li class=""><a href="/communities/young-engineers-in-ashrae-yea">Young Engineers in ASHRAE (YEA)</a><ul class="mega-column--inset"> <li class=""><a href="/communities/young-engineers-in-ashrae-yea/honors-and-awards">Honors & Awards</a></li> <li class=""><a href="/communities/young-engineers-in-ashrae-yea/resources">Resources</a></li> <li class=""><a href="/communities/young-engineers-in-ashrae-yea/yea-committee">YEA Committee</a></li> <li class=""><a href="/communities/young-engineers-in-ashrae-yea/yea-events-and-programs">YEA Events & Programs</a></li> <li class=""><a href="/File Library/Membership/Member Benefits/Membership Promotion Resources/YoungEngineersinASHRAE-Guide.pdf">YEA Guide</a></li> </ul> </li></div><div class="mega-column"><li class=""><a href="/communities/college-of-fellows">College of Fellows</a></li> <li class=""><a href="/communities/life-members-club">Life Members Club</a></li> <li class=""><a href="/communities/ashrae-associate-society-alliance">ASHRAE Associate Society Alliance</a></li> <li class=""><a href="/communities/memoranda-of-understanding-mous">Memoranda of Understanding (MOUs)</a></li> </div> </ul> </li> <li class="hasChildren is-mega"><a href="/membership">Membership</a><ul> <div class="mega-column"> <li class=""><a href="/membership/member-benefits">Member Benefits</a><ul class="mega-column--inset"> <li class=""><a href="/membership/member-benefits/membership-promotion-resources">Membership Promotion Resources</a></li> </ul> </li> <li class=""><a href="/membership/join">Join</a></li> <li class=""><a href="/membership/renew">Renew</a></li> <li class=""><a href="/membership/special-membership-programs">Special Membership Programs</a><ul class="mega-column--inset"> <li class=""><a href="/membership/special-membership-programs/grouppay">GroupPay</a></li> <li class=""><a href="https://www.ashrae.org/membership/special-membership-programs#yea" target="_blank">YEA <i class="icon-link-ext icon--empty"></i></a></li> <li class=""><a href="https://www.ashrae.org/membership/special-membership-programs#smartstart" target="_blank">SmartStart <i class="icon-link-ext icon--empty"></i></a></li> <li class=""><a href="https://www.ashrae.org/membership/special-membership-programs#devecon" target="_blank">Developing Economies <i class="icon-link-ext icon--empty"></i></a></li> <li class=""><a href="/membership/special-membership-programs/cibse-ashrae-membership">CIBSE/ASHRAE Membership</a></li> </ul> </li></div><div class="mega-column"><li class=""><a href="/membership/my-ashrae">My ASHRAE</a><ul class="mega-column--inset"> <li class=""><a href="/membership/my-ashrae/connect-a-colleague">Connect-a-Colleague</a></li> <li class=""><a href="/membership/my-ashrae/my-community">My Community</a></li> <li class=""><a href="/membership/my-ashrae/my-participation">My Participation</a></li> <li class=""><a href="/membership/my-ashrae/my-professional-development">My Professional Development</a></li> <li class=""><a href="/membership/my-ashrae/my-technical-resources">My Technical Resources</a></li> <li class=""><a href="/membership/my-ashrae/renew-my-membership">Renew My Membership</a></li> <li class=""><a href="/membership/my-ashrae/upgrade-my-membership">Upgrade My Membership</a></li> <li class=""><a href="https://eweb.ashrae.org/eweb/dynamicpage.aspx?webcode=ASHRAEIBII" target="_blank">Manage My Membership <i class="icon-link-ext icon--empty"></i></a></li> </ul> </li></div><div class="mega-column"><li class=""><a href="/membership/honors-and-awards">Honors & Awards</a></li> <li class=""><a href="/membership/membership-faqs">Membership FAQs</a></li> <li class=""><a href="/membership/logo-merchandise">Logo Merchandise</a></li> </div> </ul> </li> </ul></nav><div class="mobileDrawerToggle drawerToggle" data-for="globals-mobile" data-mobile="true"></div> </div> </div> </div> </header> <script> $(document).ready(function () { $('#searchMain').keydown(function (event) { if (event.keyCode == 13) { event.preventDefault(); submitSiteSearch($('#searchMain').val()); } }); $('.searchBox-submit').click( function () { submitSiteSearch($('#searchMain').val()); }); }); function submitSiteSearch(searchVal) { if (searchVal != "") { //document.location = '/search/productsearch?q=' + escape(searchVal); //document.location = '/search/sitesearch?q=' + escape(searchVal); document.location = '/search/ashrae-search?q=' + escape(searchVal); } } </script> <script src="https://use.typekit.net/rof0zcx.js"></script> <script>try{Typekit.load({ async: true });}catch(e){}</script> <main> <div class="pageMeta"> <div class="pageMeta-inner"> <nav role="navigation" class="navSecondary"> <div id="ctl01_ctlBreadcrumbNav_Breadcrumb" class="Breadcrumb"> <ul class="navSecondary-breadcrumb"> <li><a href="/home">Home</a></li> <li class="active"><a href="javascript:void(0)">ASHRAEJournal</a></li> </ul> </div> <!-- TODO: Add nav for sibling links --> <!--<ul class="navSecondary-links"> <li><a href="#">Interior Page</a></li> <li><a href="#">Interior Page</a></li> <li><a href="#">Interior Page</a></li> </ul>--> </nav> </div> </div> <div class='section section--contrastLight pageTitle pageTitle--center ' style="background-image:url(https://www.ashrae.org/Image%20Library/Global%20Content/Banners/Skylines/technicalresources.png)"> <div class="contained"> <div class="pageTitleCopy"> <h1 id="ctl01_ctlPageTitle_cltitle" class="pageTitleCopy-heading"> ASHRAE Journal Podcast Episode 41 </h1> </div> </div> </div> <div class="section"> <div class="contained "> <div class="row"> <div class="column lg-18"> <div id="ctl01_PageZoneContainer1"> <div id="ctl01_PageZoneContainer1_PageZoneContainer1_3ata49Aews4"> <div id="ctl01_PageZoneContainer1_PageZoneContainer1_3ata49Aews4_ctl00"> <p><a href="https://www.ashrae.org/news/ashraejournal/ashrae-journal-podcast"> ← All Episodes </a></p> <p></p> <div id="buzzsprout-player-15849236"></div> <script src="https://www.buzzsprout.com/1790652/episodes/15849236-41-machine-learning-in-hvac-applications.js?container_id=buzzsprout-player-15849236&player=small" type="text/javascript" charset="utf-8"></script> <p></p> <p style="box-sizing: border-box; margin-top: 0px; margin-bottom: 1.3rem; color: rgb(73, 73, 76); font-family: akzidenz-grotesk, Helvetica, sans-serif; font-size: 16px; font-weight: 300; white-space: normal; background-color: rgb(255, 255, 255); text-align: center;"><img style="box-sizing: border-box; border-width: 0px; display: inline-block; max-width: 100%; height: 359px; vertical-align: middle; width: 269px;" alt="Machine Learning in HVAC Applications" src="https://www.ashrae.org/image%20library/main%20nav/technical%20resources/ashrae%20journal/photo-michael-berger.jpg" data-amp-height="1200" data-amp-width="1200"></p> <p style="box-sizing: border-box; margin-top: 0px; margin-bottom: 1.3rem; color: rgb(73, 73, 76); font-family: akzidenz-grotesk, Helvetica, sans-serif; font-size: 16px; font-weight: 300; white-space: normal; background-color: rgb(255, 255, 255); text-align: center;"><em style="box-sizing: border-box;">Michael Berger, Member ASHRAE</em></p> <h1 style="box-sizing: border-box; margin-top: 0px; margin-bottom: 1.3rem; font-family: akzidenz-grotesk-condensed, Helvetica, sans-serif; font-size: 2.25rem; line-height: 1.2; color: rgb(73, 73, 76); white-space: normal; background-color: rgb(255, 255, 255); text-align: center;" data-pm-slice="1 1 []"><span class="ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak" dir="ltr">Machine Learning in HVAC Applications</span></h1> <p style="box-sizing: border-box; margin-top: 0px; margin-bottom: 1.3rem; color: rgb(73, 73, 76); font-family: akzidenz-grotesk, Helvetica, sans-serif; font-size: 16px; font-weight: 300; white-space: normal; background-color: rgb(255, 255, 255); text-align: center;">Machine learning (ML) is one of the defining technologies of our era, yet its application to HVAC controls is still in its infancy. Join <em>ASHRAE Journal</em> Managing Editor Kelly Barraza and Michael Berger, Member ASHRAE, as they discuss the use of ML in HVAC and how the technology can potentially optimize HVAC operations to reduce energy consumption.</p> <h5 style="box-sizing: border-box; margin-top: 0px; margin-bottom: 1.3rem; font-family: akzidenz-grotesk-condensed, Helvetica, sans-serif; font-size: 1.25rem; line-height: 1.3; color: rgb(73, 73, 76); white-space: normal; background-color: rgb(255, 255, 255); text-align: center;"><span style="box-sizing: border-box; font-size: 18px;"><strong style="box-sizing: border-box; font-weight: bold;"><span style="box-sizing: border-box;" dir="ltr">Have any great ideas for the show? Contact the <em style="box-sizing: border-box;">ASHRAE Journal</em> Podcast team at <a style="box-sizing: border-box; cursor: pointer; text-decoration-line: none; color: rgb(0, 174, 216);" target="_blank" href="mailto:podcast@ashrae.org">podcast@ashrae.org</a>. </span></strong></span></h5> <p style="box-sizing: border-box; margin-top: 0px; margin-bottom: 1.3rem; color: rgb(73, 73, 76); font-family: akzidenz-grotesk, Helvetica, sans-serif; font-size: 16px; font-weight: 300; white-space: normal; background-color: rgb(255, 255, 255); text-align: center;"><span style="box-sizing: border-box; font-size: 18px;"><span style="box-sizing: border-box; font-size: 14px;"><strong style="box-sizing: border-box; font-weight: bold;">Interested in reaching the global HVACR engineering leaders with one program? </strong></span></span><span style="box-sizing: border-box; font-size: 18px;"><span style="box-sizing: border-box; font-size: 14px;"><strong style="box-sizing: border-box; font-weight: bold;">Contact Greg Martin at 01 678-539-1174 | <a style="box-sizing: border-box; cursor: pointer; text-decoration-line: none; color: rgb(0, 174, 216);" href="mailto:gmartin@ashrae.org">gmartin@ashrae.org</a>.</strong></span></span></p> <h6 style="box-sizing: border-box; margin-top: 0px; margin-bottom: 1.3rem; font-family: akzidenz-grotesk-condensed, Helvetica, sans-serif; font-size: 1rem; line-height: 1.625; color: rgb(73, 73, 76); white-space: normal; background-color: rgb(255, 255, 255); text-align: center;">Available on: <a href="https://open.spotify.com/episode/11K2La44g1gXPgyb57vTCS" target="_blank"><img style="box-sizing: border-box; border-width: 0px; display: inline-block; max-width: 100%; height: auto; vertical-align: middle;" height="40" width="40" alt="Spotify" src="https://www.ashrae.org/image%20library/main%20nav/technical%20resources/ashrae%20journal/spotify_icon_rgb_green.png"></a> <a href="https://feeds.buzzsprout.com/1790652.rss" target="_blank"><img style="box-sizing: border-box; border-width: 0px; display: inline-block; max-width: 100%; height: auto; vertical-align: middle; font-size: 1em;" height="39" width="161" alt="Apple Podcasts" src="https://www.ashrae.org/image%20library/main%20nav/technical%20resources/ashrae%20journal/us_uk_apple_podcasts_listen_badge_rgb-1-.png"></a> </h6> <h6 style="box-sizing: border-box; margin-top: 0px; margin-bottom: 1.3rem; font-family: akzidenz-grotesk-condensed, Helvetica, sans-serif; font-size: 1rem; line-height: 1.625; color: rgb(73, 73, 76); white-space: normal; background-color: rgb(255, 255, 255); text-align: center;">And other platforms.</h6> <h6 style="box-sizing: border-box; margin-top: 0px; margin-bottom: 1.3rem; font-family: akzidenz-grotesk-condensed, Helvetica, sans-serif; font-size: 1rem; line-height: 1.625; color: rgb(73, 73, 76); white-space: normal; background-color: rgb(255, 255, 255); text-align: center;"><a style="box-sizing: border-box; cursor: pointer; text-decoration-line: none; color: rgb(0, 174, 216);" target="_blank" href="https://feeds.buzzsprout.com/1790652.rss"><img style="box-sizing: border-box; border-width: 0px; display: block; max-width: 100%; height: auto; vertical-align: middle; margin-left: auto; margin-right: auto;" height="34" width="34" alt="RSS Feed" src="https://www.ashrae.org/image%20library/main%20nav/technical%20resources/ashrae%20journal/social_style_3_rss-512-1.png"></a></h6> <h6 style="box-sizing: border-box; margin-top: 0px; margin-bottom: 1.3rem; font-family: akzidenz-grotesk-condensed, Helvetica, sans-serif; font-size: 1rem; line-height: 1.625; color: rgb(73, 73, 76); white-space: normal; background-color: rgb(255, 255, 255); text-align: center;"><a href="https://www.buzzsprout.com/1790652/episodes/15849236-41-machine-learning-in-hvac-applications.mp3?download=true" target="_blank">Download the episode.</a></h6> <hr style="box-sizing: border-box; margin-bottom: 1.5625rem; clear: both; color: rgb(234, 234, 234); border-style: none none solid; border-bottom-width: 1px; font-family: akzidenz-grotesk, Helvetica, sans-serif; font-size: 16px; font-weight: 300; white-space: normal; background-color: rgb(255, 255, 255);"> <h5 style="box-sizing: border-box; margin-top: 0px; margin-bottom: 1.3rem; font-family: akzidenz-grotesk-condensed, Helvetica, sans-serif; font-size: 1.25rem; line-height: 1.3; color: rgb(73, 73, 76); white-space: normal; background-color: rgb(255, 255, 255); text-align: center;">Do you have questions or comments? <a style="box-sizing: border-box; cursor: pointer; text-decoration-line: none; color: rgb(0, 174, 216);" title="ASHRAE Journal Podcast Feedback" href="mailto:ASHRAE_Journal_Newsletter@ashrae.org">Let us know!</a></h5> </div> </div><div id="ctl01_PageZoneContainer1_PageZoneContainer1_Ae666nkTBZe"> <div id="ctl01_PageZoneContainer1_PageZoneContainer1_Ae666nkTBZe_ctl00"> <div class="section"> <div class="contained"> <ul class="accordion"> <li> <span class="">Guest Bio</span> <div class="accordion-content"><p><strong>Michael Berger</strong> is the Head of Research & Development at Conserve It. In this role, he leads the R&D efforts to research, prototype, trial and productize machine learning algorithms for analytics and real-time optimization of live equipment in the built environment, with applications ranging from innovative chiller plant optimization & predictive maintenance to advanced controls solutions.</p> <p>Michael graduated with a Master of Engineering in France before gaining experience at a leading research centre and in Environmentally Sustainable Design consultancy in Singapore. He joined Conserve It in 2014, where he relies on more than 12 years of experience in the fields of energy efficiency, HVAC&R optimization and data science.</p></div> </li> </ul> </div> </div> </div> </div><div id="ctl01_PageZoneContainer1_PageZoneContainer1_2fYe8NfEd9l"> <div id="ctl01_PageZoneContainer1_PageZoneContainer1_2fYe8NfEd9l_ctl00"> <div class="section"> <div class="contained"> <ul class="accordion"> <li> <span>Host Bio</span> <div class="accordion-content"><p></p> <p><strong><img style="display: block; height: 301px; width: 353px; margin-left: auto; margin-right: auto;" src="https://www.ashrae.org/image%20library/main%20nav/technical%20resources/ashrae%20journal/barraza.jpg" alt width="316" height="316" data-amp-height="265" data-amp-width="298"></strong></p> <p style="text-align: center;"><strong>Kelly Barraza, <em>ASHRAE Journal</em> Managing Editor</strong></p> <p style="text-align: center;"><strong>Kelly Barraza</strong> is the Managing Editor of <i>ASHRAE Journal</i>. She has extensive experience in writing, editing and reporting in scientific publishing. Her career has spanned federal law, medicine, research, engineering and public/media relations. Kelly lives in her hometown of Atlanta, Georgia. </p></div> </li> </ul> </div> </div> </div> </div><div id="ctl01_PageZoneContainer1_PageZoneContainer1_A8fgmRWp8Zm"> <div id="ctl01_PageZoneContainer1_PageZoneContainer1_A8fgmRWp8Zm_ctl00"> <div class="section"> <div class="contained"> <ul class="accordion"> <li> <span class="">Transcription</span> <div class="accordion-content"><p><strong>ASHRAE Journal:</strong></p> <p>ASHRAE Journal presents.</p> <p><strong>Kelly Barraza:</strong></p> <p>Welcome to ASHRAE Journal podcast. I'm your host, Kelly Barraza, managing editor. On this episode, I'm interviewing Michael Berger, head of research and development at Conserve It and author of the article, Leveraging Machine Learning to Optimize Chiller Plant Controls, published in the August, 2024 ASHRAE Journal. Hey Michael.</p> <p><strong>Michael Berger:</strong></p> <p>Hey, how are you Kelly?</p> <p><strong>Kelly Barraza:</strong></p> <p>I am good. How are you doing?</p> <p><strong>Michael Berger:</strong></p> <p>Yeah, good, thanks. Great to be here today. It's a little bit early here in Melbourne, but I think it'll be an interesting one, so I'm looking forward to it.</p> <p><strong>Kelly Barraza:</strong></p> <p>Yes, Michael is working with us. We're on the East coast in the US and he's in Melbourne Australia, so this was a bit of a logistics question for this podcast on machine learning, AI and optimizing chiller plants and HVAC applications. So we'll just start. What is your background in the industry with HVAC, Michael?</p> <p><strong>Michael Berger:</strong></p> <p>Well, it starts from quite a while ago now, I guess in university I was always interested in sustainability and renewable energy, energy efficiency, and from those days I started to look into HVAC and renewable energy. And then, I started my career in Singapore. I worked in a research center, where we looked at smart grid and then moved to green building consultancy, ESD consultancy. So that's where I really started to get into HVAC and learn more about how we can reduce energy consumption in buildings. And since then for the past close to 14 years, have been working in the HVAC industry. Again, trying to reduce energy consumption has been an interest and looking at, as well as how we can integrate renewable in buildings, make it a more efficient system.</p> <p><strong>Kelly Barraza:</strong></p> <p>Okay, great. What's your experience been like with ASHRAE?</p> <p><strong>Michael Berger:</strong></p> <p>Well, I guess it's an interesting one because obviously, I have never lived in the US, but I think it does tell of the influence ASHRAE has that since the early days in university, I've been exposed to ASHRAE. I remember I did exchange in Denmark and I had some courses on HVAC and they were already talking about ASHRAE standards. And then, when I worked in Singapore, energy modeling for green buildings, we had to refer to the ASHRAE 90.1 standard a lot. I remember this one quite well. And then since then, obviously, even in Australia it still, we have our own version, I guess, of ASHRAE called AIRAH, but the ASHRAE standards and the guidelines are still very much followed and used as a basis.</p> <p>And more recently I had a chance of presenting a conference paper, at the Tampa conference last year on integrating renewable energy into HVAC system and optimizing them. And even more recently, I had the chance of having an article published in the ASHRAE Journal. So it's been quite exciting and it's been a long journey in parallel with ASHRAE, I guess for me.</p> <p><strong>Kelly Barraza:</strong></p> <p>And we are very happy to have you as one of our members at ASHRAE.</p> <p><strong>Michael Berger:</strong></p> <p>Thanks.</p> <p><strong>Kelly Barraza:</strong></p> <p>So in that article that was published in August of this year, you state one common question, when considering applying AI algorithms to HVAC control systems is whether they will improve the operation beyond simply replicating the strategies of a well-designed conventional building automation system. Do you want to expand on that?</p> <p><strong>Michael Berger:</strong></p> <p>Yeah, for sure. I think, I guess that's the most basic point. I think when we apply machine learning, we need to look at the challenges we're trying to tackle and not just try to look at it as a big black box and essentially apply domain knowledge to find good applications for machine learning, whether it's HVAC or other applications. And there are already a lot of good conventional sequence of operation to control HVAC system that have been devised and designed over the past few decades from whether it is trial and error or sometimes more advanced studies, using modeling or using actual site trials and data.</p> <p>And I think one really good example of that is the ASHRAE Guideline 36, which lays out a lot of very good strategies for controlling HVAC systems in an efficient way, both in terms of, I guess meeting the needs of the building and reducing the energy consumption. However, there are some scenarios where I think those conventional strategies may not always be the best. I think a lot of times there are some cases where it just works, you don't really need more predictive modeling because it's cases where it generalize quite well over different types of buildings. So there's quite a few examples. I mean, maybe a simple one would be trying to do optimal start-stop.</p> <p>It's obviously, more efficient to not run your plant if you don't need it, I don't think you need special predictions for that. Another example is for cooling tower operation. Often, we find, and it's quite, I think well established in the industry that overall it's better to run more cooling towers using the fan affinity law, you're going to reduce your energy consumption. And I think most times for this type of application it just works and there's no point to have a machine learning algorithm trying to find that for you because we know it works well. I think where it makes a difference is where there's no one size fit all sequence of operation. Where from one building to another, there are some things that make it that you need to know the characteristic of your site to know what the best sequence of operation is, whether it's because of the equipment performance, whether it's because of weather or load requirement.</p> <p>In particular, I would say cases where there's a trade-off between equipment, is often the ones we look at. For instance, if we look to get the cooling towers, again, one case where I think predictive modeling is useful is when I think of leaving cooling tower temperature set point, because if we reduce it, we are going to use more cooling tower power, but we're going to use less chiller power.</p> <p>So where is the holistic most efficient point? It's not always clear and from one building to another it might change, from one day to another on the same building, depending on the load, depending on the weather, it might change. So these are the applications where I think predictive modeling or machine learning can really make a difference. But on the other hand, there are a lot of specific situations or specific sequence of operations where it's not necessarily required. And I think when it's not required, it's probably not a good idea to try to apply it because it's not so simple. It requires a lot of research.</p> <p>There is a level of risk in terms of developing something that's reliable. And also, sometimes there is also a question about transparency to the end users. So I think there's no point to over-engineer, and this may be sometimes what can happen and focus only on applications where it's really required.</p> <p><strong>Kelly Barraza:</strong></p> <p>What do you see as your biggest concern when it comes to using AI machine learning in HVAC?</p> <p><strong>Michael Berger:</strong></p> <p>Following on what I was talking about, I think where first I would say I don't think we're quite at the level and maybe some people think differently, but where we have to worry about our buildings becoming sentient and rising against us, but-</p> <p><strong>Kelly Barraza:</strong></p> <p>Terminator 2, Skynet.</p> <p><strong>Michael Berger:</strong></p> <p>Yeah, that's it. I mean, I know when we say the term artificial intelligence, sometimes people think of those things. I think at this point in time, the technology we have for AI is still a tool more than something that can have its own choice but I do think there are some concerns, and yeah, as I said following on what I was talking about just earlier, I think it's more about the way it's applied and if there's application without domain knowledge of say, HVAC or whatever the application is, sometimes the application of machine learning can be not ideal and maybe not suited, and that can create a bad experience for end users and scare them away for the next time.</p> <p>So I think the risk is more to scare users away because I think there are a lot of benefits from using machine learning in buildings or any other HVAC application. And I think one key point which can be done is to make sure it's as transparent as possible for the end user, but sometimes there may be a tendency to have it, as I said earlier, as a black box that may not make sense and maybe how to troubleshoot. So yeah, I do think, as I said, machine learning is a tool, it can enhance automation and we have been having automation for the past 200 years, helping technology evolve. So I think it's just another step in that, but we just have to make sure the solution is tailored carefully for the application.</p> <p><strong>Kelly Barraza:</strong></p> <p>Yeah, exactly. It's not a one size fits all solution. And I definitely-when we've done our research in AI machine learning when it comes to building systems or just generally, transparency is the top concern among many users.</p> <p>So appreciate you going into that. Can you talk more about what supervised learning is and how it can be used for improving equipment efficiency?</p> <p><strong>Michael Berger:</strong></p> <p>So supervised learning, it's just one subtype of machine learning. And really, I should start by saying machine learning is technically considered an application, and so, it has a lot of applications in engineering or such. It relies on mathematics, and a lot of what machine learning does is derived from similar things that you may see in engineering. So when you talk about supervised learning, it's really about learning a model essentially, when you have a set of inputs and you have a specific output for those, that is known in your data set. So I think it's known, but linear regression, which is known by most people in the industry, I'm sure, everyone I should assume is the simplest form of supervised learning.</p> <p>Obviously, people have heard of neural network or a lot of different techniques, but at the end of the day, it is just, quote-unquote, just a model to learn like we see in engineering as well. I think probably the difference in machine learning is that it's rooted in the idea of to a degree of real time and to use computers in real time to find insights. But it's most basic level, it is an application of mathematical principle that a lot of engineers know, these are just the techniques. Thanks to I guess the advances in computing hardware becoming more and more complex and are able to deal with more and more data efficiently.</p> <p>And so in terms of how it's applied to improving equipment efficiency, I think I would say depending on the application, it can be just one aspect of a solution. So if you look at optimizing real time controls, the supervised learning is a first step to learn the performance or the behavior of the equipment, for instance, or to predict the cooling load in the building or things like that. And then, it needs to be brought together in an optimization framework, which is the next step. But it can also be, the supervised learning, the machine learning can also be the main part of your solution. For instance, if we think of something like predictive maintenance to see if the performance of an equipment is deteriorating over time, we can learn the original performance of the equipment, the ideal performance, and then compare to what's happening now and see if it's decreasing over time. So in that case, it can help us do predictive maintenance, improve the efficiency of the equipment back to its original state, if we can detect it early enough.</p> <p><strong>Kelly Barraza:</strong></p> <p>In your journal article, Leveraging Machine Learning to Optimize Chiller Plant Controls, machine learning is applied to capture chiller predicted power compared to actual power. How is that done?</p> <p><strong>Michael Berger:</strong></p> <p>That's done with data at the end of the day. I think the idea of machine learning often is to look at site data in real time on a controller on site, control hardware on site, but it can also be used with manufacturer data as a starting point and it can use with both, right? The way we look at it is usually to develop a somewhat generic model that's broad enough to be applicable to many sites or many similar equipment that are out there. And then the model is used as a basis to be calibrated automatically on individual sites. So we are looking at water-cooled chiller model that might be a specific form, a specific equation to a degree. And then, we make sure to calibrate the parameters of the equation for each machine so that we can learn on site the specificity of each machine.</p> <p><strong>Kelly Barraza:</strong></p> <p>That sounds very complex and my follow-up to that is can machine learning be used to capture even more complex relationships than that?</p> <p><strong>Michael Berger:</strong></p> <p>Yeah, for sure. There is no real limit. I think again, the limit is data. The more data you have, whether it's a lot of different, I guess, the breadth of the data or how much different data points you have for the same equipment for instance, that's what defines how complex the model you can learn. So there is a few different approaches and it's just about designing the one that suits the application. One of them is to, for instance, in HVAC, we can look at developing models for individual equipment within a chiller plant like I'm presenting in the article in the ASHRAE Journal.</p> <p>And then, the next step I guess for the more complex relationship is making sure that the model of our individual equipment account for variables that interact with each equipment. So for instance, I think I mentioned earlier, cooling towers, the leaving cooling tower temperature impacts the cooling tower, power usage. It also impacts the chiller power usage. So we need to make sure all those models taking into account all those types of variables. And then again, as I mentioned earlier, we can put them all together in an optimization framework to find those more complex relationship. Another approach can also be to look at a whole system, a whole chiller plant, the whole HVAC system as one model.</p> <p>A more, I guess black box model. So this approach is totally valid. There are some pros and cons, for this type of approach requires a lot of data because it doesn't learn individual interaction per equipment, but it has to see them all to a degree. So for building application, it may not be the most suited one because you would need to be able to have seen operation of your plant in millions of different scenarios that may not all occur. Whereas if you model individual equipment, you just need to find the model for each one of them. And sometimes you can then predict what would be the behavior in a slightly different scenario of the whole plant as long as you've seen that equipment in that scenario.</p> <p>But yeah, there's a lot of different ways to approach it and it can also be done to predict things that are a little bit less tangible, like trying to predict the load in the building, as one data point essentially, without necessarily knowing-historically we would use to predict the cooling load, we would use a lot of physical information about the building, right? Like what's building fabric? What's the material? What's the thickness every wall? What are all the different rooms in the building? And this can be very complex and there's always assumptions in those more physical models. And at the end of the day, all these assumptions add up and often, I think at least from my experience, we find that those are not very accurate to the actual operation of the building.</p> <p>Whereas more data-driven machine learning model can learn the cooling load of the building with having less knowledge of the physical makeup of the building, but more looking at things like weather, learning patterns from the load and things like that. Those are just a few examples.</p> <p><strong>Kelly Barraza:</strong></p> <p>Yeah, it seems like there's just a lot of different things that machine learning and this kind of work can be used to learn how these buildings work, make them better, even if we don't have data, missing data. I'm sure you can get lost in the weeds when people are playing around with this kind of stuff and what they can do with that data and information.</p> <p>How can the proposed optimal control strategy be used to tackle challenges in chiller plant operation?</p> <p><strong>Michael Berger:</strong></p> <p>Yeah. That's a very good question. I think as I mentioned earlier, do we think we should look at some specific challenges that needs predictive modeling to tackle? I think there's a couple of types of these challenges. I guess a couple of categories. One of them is trade-offs between say various species of equipment between the chillers and the cooling towers, between the chillers and the condenser pumps. If we look in the broader building, is it more efficient to make a chiller work harder or AHU fans work harder? Those are trade-offs because you could make one work harder, the one work less hard and save energy possibly, but it could be that in the end it ends up being, overall, it might actually be using more energy. So it can be hard to know. So that's where we look at predictive modeling.</p> <p>The other type of scenario is when we look at especially equipment part load performance. I think this is well-known in the industry. We have things like HRIs that look at not just the design efficiency of equipment, but of a range of part load points, but it can be tricky even from there to have a good picture of all the different scenarios the equipment can run in. One example of applications, there is for instance the number of equipment you may want to run. In a chiller plant. You could have any number of chillers, you could have two, three, four, five. I've seen plants with 20 chillers and sometimes, it can be hard to know for this specific weather, for the load in the building for the cold water temperature set point you have right now, is it better to run four chillers or five chillers or six chillers? There's no one answer. It depends on the equipment. It depends on the situation. So that's where I think being able to predict the power usage, the efficiency of the equipment allows us to make the decision on the fly.</p> <p><strong>Kelly Barraza:</strong></p> <p>So in the article, optimal set points and combinations of equipment can be resolved together as a part of a mathematical optimization framework. What is the simplest solution to predict the overall chiller plant power use?</p> <p><strong>Michael Berger:</strong></p> <p>I guess, I'll address it more in terms of the optimizations and mathematical side of things. For any optimization problem, there is one, quote-unquote, simple approach which is simple to implement but may not be very computationally efficient, which is what is called exhaustive search. Sometimes it's referred to as a brute force approach, which is essentially to look at all the possible situations, once you already have the models of your plant or your system and predict for each case what is going to be the power usage. So if we look at for instance, finding the optimal condenser water flow, that is going to balance your chiller power, your condenser pump power, maybe your cooling tower power.</p> <p>It's basically trying every value of condenser flow that could happen, every percentage of condenser flow and finding what the power usage is, and then, looking at the lowest one.</p> <p><strong>Kelly Barraza:</strong></p> <p>How can the interior point method be used for mathematical optimization solvers and how does that relate to machine learning?</p> <p><strong>Michael Berger:</strong></p> <p>So that's kind of the next step from the previous question. So exhaustive search that I talked about just now is relatively simple to implement. It's simple to understand I think, but it's not very tractable, it's not very practical because as soon as you have a few variables you're dealing with, the number of scenarios you're going to check goes very quickly into the hundreds of thousands, millions. Can go easily billions or more because as soon as you have a few variables, you have to iterate over each variable and then over each variable over that. And so, it's just not very practical.</p> <p>That's where the whole field of mathematical optimization comes in, which is about finding a solution in a faster way. So interior point method is just one technique that's for one family of problems. In mathematical optimization, there's a lot of different, I guess types of problems. They can be constrained, which I think is often the case in our field or they can be unconstrained. And so, the constrained optimization problem is when the decision variables, the values we're trying to find, so the optimal set point for instance has a range of allowable value. So some of it is obvious, we can't have negative temperature or I guess we can have negative temperature, but we can't have negative flow for instance.</p> <p>So if we look at the condenser flow, obviously, we have to tell our algorithm well don't look at those. And obviously, as your chiller has a minimum load or maximum load, it can't go beyond. So as soon as we look at this, we look at constrained optimization, which is a family of optimization problem, which again, if you think about it as an exhaustive search problem, it's not complicated to think about, you can just try all the values that are allowable, but when you start to look at a more efficient method, you have to make sure you built in those boundaries, and your problem is it's not necessarily that straightforward.</p> <p>And that's where a method like interior point method come in. It's a method to find efficiently the solution of a constrained optimization problem. But at the end of the day, optimization, whether it's constrained or unconstrained, whether it's convex or non-convex, it is really a key for machine learning in a couple of ways. First, when we look at learning a model, at the end of the day, the process to do so is an optimization problem, but also, when we talked about finding the optimal set points and number of equipment in the plant and all of that, that's another optimization problem. So actually, we found in our applications, we use very similar algorithms for both of those things, which are the two steps of the solution often, but they actually are using the same, I guess, technology.</p> <p><strong>Kelly Barraza:</strong></p> <p>How does using machine learning applications for HVAC control compare to applications of machine learning to other technologies?</p> <p><strong>Michael Berger:</strong></p> <p>Yeah, that's a great question. That's something I was thinking about when we talked about this podcast. I think it is actually quite a different type of application for a couple of reasons. I think when we compare it to some of the more commonly known machine learning application of every day, that we think about, like GPT-4 or ChatGPT or things like image recognition or recommender systems for Netflix that finds what they think is the most suitable TV show for each user, those are actually quite different because that usually require much more data. When you look at image recognition, every pixel in the email is going to be an input. So your model has thousands, can have millions of inputs. It's the same for GPT-4, large language models. Every word has to be able to be predicted. It's millions of inputs.</p> <p>And the way machine learning approaches these types of problem is by having even more data, I guess and for GPT-4, they used I'm pretty sure if I'm not wrong, they use a copy of the whole internet of 2019 or something like that, where they use the whole internet as a way to learn the model, and I think it takes them months to run the learning process. So that's kind of the solution. I guess what machine learning brings is, if you have enough data, you can learn those complex problem.</p> <p>In HVAC it's a little bit different because I think we're in a situation where we do have a lot of buildings, but I don't think we have enough buildings and enough data from buildings in so many different scenarios that we can, quote-unquote, brute force the problem like they can with image recognition where you have billions of images you could learn your model from. So it is very hard, I think to learn kind of a global model of buildings that can find automatically like a black box, the optimal sequence of operation. So instead, I think our application has been looking more at doing something that they don't often do in those more common application, which is to learn automatically autonomously on site, your model.</p> <p>So if you think of ChatGPT, the model was learned upstream, so it was learned in the past. It's set in stone and the process of learning is actually-I think we think machine learning is all computers, but there's actually a lot of human inputs in it because they're going to be tuning and tweaking the model until they find the most suitable one. They're going to click the results, make sure it's as accurate as possible. Then when it's done, they're going to take that model and use it to predict only not to learn when it's in production.</p> <p>In our case, I think we have to learn from individual buildings and if we want to remove the human aspect in it. And if we want to I guess reduce it so that the end user can focus on other things, we have to have some level of autonomous learning on site. And I think that's where maybe it's better to say, it's not as complex as some of the other applications like ChatGPT but it has its own client list, its own specific set of client list to tackle, where we have to make sure that to remove the human in the loop, there's a lot of automated processes that happen in the learning so that we find automatically clean the data, automatically validate the model and things like that to make sure that the autonomous learning happens properly.</p> <p>And I think actually, from my perspective, it is probably the most important part in our application because I think the fun part, I guess, is to find a model and validate it and it's all well and good, and then you can think, okay, the work is done now. But in practice, I think what makes or break a machine learning solution in our industry is everything that goes around it, making sure that it's applicable in practice, making sure that, as I said, data is never clean, there's always going to be data issues, communication issues, sensor issues. So being able to automatically detect that and know whether this two days data is good enough to be used for the learning or not, or whether, okay, we're just not use it or whether your equipment is running in stable conditions or not.</p> <p>And then making sure that the model you learn is actually validated. There's a lot that goes around the core algorithm, and I think that's actually, from my experience, what really makes a difference.</p> <p><strong>Kelly Barraza:</strong></p> <p>Yeah, it just sounds like there's a lot of relationships and a lot of hands that go into making sure that machine learning is effective, like in theory and on the blackboard, but in actual practice, there's a lot more that goes on to make sure all the parts work together.</p> <p><strong>Michael Berger:</strong></p> <p>Yeah, that's right. That's exactly right.</p> <p><strong>Kelly Barraza:</strong></p> <p>So was the machine learning-driven approach described in your article applied to real-life settings?</p> <p><strong>Michael Berger:</strong></p> <p>Yeah, for sure. I mean practice, this was applied to dozens of sites around the world. Now in Australia, in the US, in Europe, in Southeast Asia, we've had some applications. So definitely, and I think it's probably a good time I think to talk a bit about the process that goes into developing this type of solution. And so, it starts as a research project. The first step is classic, it's literature review, seeing what's already exist out there and then, propose approach. And then, we look at validating with site data to answer your question about real life setting to validate models or trial models.</p> <p>And then, the next step that we take at least is to do an initial prototype. So this is offline. When I say offline, it means it's not running in a building, but on the computer, too, and the point of this is to validate the premise of the idea, making sure are we actually getting any savings from this? If we find that in theory on paper in the end, we only get 0.01% savings, then maybe it's not a worthwhile endeavor. So this is I think a very important part to make sure that the premise makes sense and just test the idea. And actually, we use a lot of Python for this. So I'm an engineer, so I was taught with tools like MATLAB and things like that, but I found that Python is very good and actually quite user-friendly, programming language.</p> <p>And this is because they have a lot of libraries, so they have a lot of basically tools that have been contributed by people in the industry that are available for free, that open source that can replicate a lot of, what you can find in more commercial tools. And so, we do a lot of work in Python to do this prototyping, to do this validation. And then, the next step is to do some testing on target hardware, to see if the solution is viable in terms of the time it takes to learn and to find the solution because we are looking at real life real time controls, so it can't take a day to find what the optimal set point should be now because it will be too late.</p> <p>So we have to make sure that the optimization is efficient. And then, the next step is site trial, and that's when we deploy prototype on, or, I guess at this point, they're already quite mature solutions on site to verify what happens. And importantly, we try to do measurements and verification studies. And for the approach in the article, we actually had the chance of having third party studies that were commissioned by New South Wales government in Australia from a customer who there was a scheme that allowed them to get a third party study to verify that the solution is actually delivered.</p> <p>And so, I agree, I think this is really key to validate and to increase confidence in the solution. And then after this, for us, it's really about productizing the solution. We look at it as-I think a key part is that we want to make sure we have a solution that's flexible enough for a lot of different plants. We know each plant is a little bit different, sometime a lot different. And if you have a solution, I think I've seen a lot in the literature that works for a site and that looks great, it might still be a lot of work to apply it to another site. So we look at making sure we can handle things like fault on chillers and make sure that we automatically find, take that into account and find what are the best next chiller to look at.</p> <p>We want to make sure we can handle all sorts of scenarios and that's a big part of the work. And yeah, I think to the point of transparency we talked about earlier, again, for us, there's a few things by looking at making sure the user interface tells the end user exactly what's happening in the building and in particular, why is the machine learning making this decision, right? Showing what are all the different scenarios that the machine looked at and show that, okay, this one was the most efficient. Because otherwise, as soon as something goes wrong in the building, even if it's not necessarily the fault of the machine learning, the first thing would be like, "Well, let's just turn it off because we don't really know what it's doing."</p> <p>So I think giving that transparency, giving that feedback to the user is key. Another aspect along the same lines is to allow the end user to override specific part of the optimization so that if they need to set the condenser water flow to design for whatever reason. We want to allow them to do it without turning off all the other optimization. I think that's something that when we worked with end users was really helpful to give them confidence that they can troubleshoot issues while having this type of system on site.</p> <p><strong>Kelly Barraza:</strong></p> <p>So what can be done to make sure facility managers and teams can be set up for success when running buildings that use machine learning?</p> <p><strong>Michael Berger:</strong></p> <p>So as I said, we look at user interface, we look at give them a lot of feedback, and again, allowing them to override part of the logic I think is really key. But beyond that, I think a lot of new technology, it's just about training, it's about getting them involved as well, because I think the facility managers, people on site, they know they're building better than anyone, is there always something we learn from them. And I find getting the buy-in is key. So they have to be involved from day one in understanding what we're proposing and in seeing the value in it.</p> <p><strong>Kelly Barraza:</strong></p> <p>Kind of helping the end users know they're building better, hopefully.</p> <p><strong>Michael Berger:</strong></p> <p>Yeah. In a way.</p> <p><strong>Kelly Barraza:</strong></p> <p>What other applications do you hope to use machine learning for when it comes to HVAC control?</p> <p><strong>Michael Berger:</strong></p> <p>I have a few things. First of all, there are some we have already worked on that are similar technology, but for slightly different outcomes. I mentioned it earlier, but predictive maintenance I think is key, if we have models, if we can predict the behavior of the building, we want to detect automatically when it gets worse. And it's not always that obvious straight away because when you look at a chiller, to just talk basics, we know that the efficiency of a chiller is going to change based on the load, based on the temperatures, the flows and things like that. So if you look at your chiller and the COP is telling you six or I don't know what the kilowatt pattern is, 0.5, I don't think those translate, but I think at least it took different people. You don't know, is it good, is it bad? It's not sure, right?</p> <p>The design might be 0.4, but that's a full load. The IPLV value is also just one value. So it can be hard to know is it running efficiently right now based on the conditions. So using the model to predict what it should be doing versus what it's doing now in those conditions, I think is really helpful. We've also been looking at, there's more and more, for instance, free cooling, air cool chillers with free cooling. I think we've seen more and more applications like that. We've been working on integrating those types of machines, making sure the models apply or if not being adapted to that. And I think for me, the next step is to really look at the full HVAC system beyond the central plant, looking at all the airside equipment.</p> <p>I think for us it made sense to look at the plant initially because it's centralized, it's less equipment to look at. I guess it's more bang for your buck really, because you can focus less on the plant and it uses a lot of energy. So the savings you have there are quite significant straight away. But I think there is benefit to making sure that the whole HVAC system, including the airside, which is much more distributed, is running efficiently altogether, holistically. So that's kind of my realistic answer. I think beyond that, there are a lot of interesting application that I've seen or heard of or thought about. Some of them since some discussions at conferences, including ASHRAE conferences or others, just to name a few.</p> <p>What I would call semantic modeling, which is to be able to, when you get a data from site, being able to detect what type of data it is without having seriously in need of someone telling you, okay, this is my chiller plant temperature, this is my chiller, this is my AHU. Being able to automatically detect equipment, data points and components based on the data that's just available from the network is something that could reduce a lot of integration work that sometime is a prohibitive cost of installing a new system. I've seen some talks as well, often quite interesting and for anomaly and full detection to try to learn the human response to various issues so that then after a while, the system can make the decisions themselves. Yeah, I think there's a lot of possible applications. It's quite exciting for sure.</p> <p><strong>Kelly Barraza:</strong></p> <p>It's a new frontier I think, in a lot of ways, but definitely for building systems, I know there's a lot of buzz around machine learning and applying that to HVAC and control and plants and stuff like that to make it just the energy savings in terms of actual energy, but also money and things like that is profound. And you did talk about cost prohibitive, stuff like that. So on that note, talk about money, can machine learning save stakeholders money when applied effectively?</p> <p><strong>Michael Berger:</strong></p> <p>Yeah, for sure. And I think there's several different ways. We talked about optimal controls. So this can save money by reducing the system and energy consumption, so that's maybe the most obvious one, but predictive maintenance, automated detections that can allow to reduce costly repairs if they can be detected early enough and just be managed by maintenance rather than having to replace an equipment. And then, there is always the idea of automating task, right? I talked about integration of data. There's a lot of deployment tasks when we have to deploy, for instance, a control system. There's a lot of tuning. There's a lot of human actions that are required, and we know facility management team might be spending a lot of time trying to troubleshoot issues, looking at the data and things like that.</p> <p>So I think we can save them a lot of time doing those more mundane tasks by being more automated and then, allowing them to focus on more value-driven tasks or tasks that really add value to their stakeholders. So yeah, I think there's definitely quite a few avenues for that.</p> <p><strong>Kelly Barraza:</strong></p> <p>What would you recommend engineers do if they want to learn more about applying machine learning and artificial intelligence in HVAC?</p> <p><strong>Michael Berger:</strong></p> <p>Yeah, I mentioned it earlier actually, but I think Python is definitely a great programming language with already a lot of libraries, already a lot of solutions to a degree or at least part of the solutions that are already present there. I would encourage people to try to learn. I think if you look at machine learning, it's also the long way that's promoted a lot anyway. I think I would also recommend to look at arts literature, there's already a lot of interesting papers and various solutions, and I think we are getting to the point where there are some solutions that can already be used. So there's-to a few different degrees.</p> <p>There are some fully formed solutions that I think can be applied to buildings. There's also some algorithms that may be applied to your process. If you're designing a system, if you're designing a sequence of preparation for your building, they may already be some algorithms that can be used as a one-off, just to run on your building or on your setup so that you can try to find insights. So I think we are starting to be at the point where it technology is becoming more mature, and I would encourage to look at, I would say in the market, what are the solutions already available? As I said, I definitely encourage anyone to start to look into how can I apply it almost from scratch.</p> <p>There's already a lot of good machine learning libraries, a lot of good optimization libraries in Python, for instance. There's also another language called Julia that's getting popular. And for the engineers, I think it can be a little bit daunting initially. Maybe I just speak for myself, but when we talk about programming languages, it can feel like a big step. And we may be more used to tools like MATLAB or others, but I think we have a point where with all the libraries, with all the tools that go around it, where you can create a similar experience that would make engineer at home with those types of tools.</p> <p>And a lot of them are free, and a lot of them have a lot of support from the industry because Python is used in AI, in machine learning, so there's a lot of people contributing to it and adding a lot of building blocks that can be reused.</p> <p><strong>Kelly Barraza:</strong></p> <p>We definitely recommend engineers who maybe aren't familiar with programming languages to probably learning a new language essentially, so they can just become more familiarized with that.</p> <p>Are there any projects or developments in machine learning for building systems that you're excited about?</p> <p><strong>Michael Berger:</strong></p> <p>For sure. I think we are looking at more and more renewable energy in buildings, and I think that's definitely an interesting avenue. We worked on a project and actually we presented on this ASHRAE conference in Tampa last year to integrate solar thermal with absorption chillers and a mix of normal electrical chillers and storage. And I think those are quite interesting. They're not extremely common just yet, but I think looking in the future, we're going to see more and more of those types of buildings. And because they're new, there's no ASHRAE Guideline 36 for those, right? There's no good sequence of operation that have been used in hundred and thousands of buildings that can be reused.</p> <p>So I think it's a great application for machine learning to from the start, helping at the most basic level, how we should control those types of building. And then again, as I mentioned earlier, a couple of more exploratory, I guess, direction is I think everyone would be curious to see how large language models like GPT-4 could be applied in our field. I think there's some ideas, for sure. There's some applications in term of chat bots that can help maybe do things and things like that, but I'm sure there are more opportunities. I've also seen things around thermal comfort and imaging. There's a lot of good ideas, I would say.</p> <p>Not all of them might be practical, but I think it's exciting to see what can people come up with and see if they can make a business case out of it.</p> <p><strong>Kelly Barraza:</strong></p> <p>Thermal comfort especially, I think that's something that even if you're a non-engineer like myself, that's like, "Oh, that's interesting." I would love to see how you can use super math to help solve thermal comfort problems in a building, when one person is freezing, the other person is super hot.</p> <p><strong>Michael Berger:</strong></p> <p>That's always the problem. I think yeah, you can convince anyone of like, "Oh, I've got this great algorithm that can save you energy," and then still look at you and be like, "Why am I still so cold in my building and my neighbor is so hot."</p> <p><strong>Kelly Barraza:</strong></p> <p>Yeah, exactly. I'm still cold though, right? Yeah.</p> <p>What do you see as the biggest challenge in getting machine learning and artificial intelligence to be applied more widely in HVAC?</p> <p><strong>Michael Berger:</strong></p> <p>I think the challenge is overcoming the biggest challenge right now. I think we're in progress of doing that, and I think it's probably been, at least from my experience, and maybe some have different experiences, but I think in the past, maybe 10 years ago, they may have, or a bit less, they may have been some negative experiences from end users with AI, with ML, which was applied maybe a bit in a too general purpose way, maybe with a lack of domain knowledge, maybe by practitioners of machine learning with not many engineers that were involved in the design of the solution. And maybe people were burnt a bit and thought, "Okay, that's not for me."</p> <p>So I think the challenge is to convince those end users that this can be applied in a reliable way, end user-centric way, focusing first and foremost on reliability and then optimization. But I'm quite optimistic. I think that challenge is being overcome right now in a second wave of applications that more targeted, which have been designed with more input from the experts and that are more transparent, really.</p> <p><strong>Kelly Barraza:</strong></p> <p>Great. Well, thank you, Michael, for joining us on ASHRAE Journal podcast.</p> <p><strong>Michael Berger:</strong></p> <p>Thank you so much for having me. It was great talking to you, Kelly.</p> <p><strong>Kelly Barraza:</strong></p> <p>Thank you so much. We just have to wrap it up. We can go all day about machine learning. I think in just this topic, it's just a vast one. Maybe we'll have you on again to talk about it, down the road when you write another article for us. So I want to thank the listeners for listening in. This has been Kelly Barraza and Michael Berger with ASHRAE Journal podcast.</p> <p><strong>ASHRAE Journal:</strong></p> <p>The ASHRAE Journal podcast team is editor, Drew Champlin; managing editor, Kelly Barraza; producer and assistant editor, Allison Hambrick; assistant editor, Mary Sims; associate editor, Tani Palefski; and technical editor, Rebecca Matyasovski. Copyright ASHRAE. The views expressed in this podcast are those of individuals only and not of ASHRAE, its sponsors or advertisers. Please refer to ashrae.org/podcast for the full disclaimer.</p> <p></p></div> </li> </ul> </div> </div> </div> </div> </div> <!-- /.row --> </div> <!-- /.column --> <div class="column columnAds lg-6"> <div id="ctl01_PageZoneContainer2"> <div id="ctl01_PageZoneContainer2_PageZoneContainer2_ezOitQITyJ"> <div id="ctl01_PageZoneContainer2_PageZoneContainer2_ezOitQITyJ_ctl00"> <div class="h-pushBottom"> <SCRIPT LANGUAGE="JavaScript"> OAS_AD('Right1'); </SCRIPT> </div> </div> </div> </div> <div id="ctl01_PageZoneContainer3"> <div id="ctl01_PageZoneContainer3_PageZoneContainer3_Axt9Kb1oOYO"> <div id="ctl01_PageZoneContainer3_PageZoneContainer3_Axt9Kb1oOYO_ctl00"> <div class="h-pushBottom"> <SCRIPT LANGUAGE="JavaScript"> OAS_AD('Right'); </SCRIPT> </div> </div> </div> </div> </div> <!-- /.column --> </div> <!--/.row--> </div> </div> </main> <footer class="footerMain"> <div class="footermain-social"> <div class="column"> <nav class="footerMain-topNav footerMain-topNav--socialNav"><ul> <li><a href="https://www.facebook.com/ASHRAEupdates" class="footerMainSocialLink footerMainSocialLink-- icon-facebook-logo h-color-social-fb icon--empty" aria-label=" icon-facebook-logo h-color-social-fb icon--empty">聽</a></li> <li><a href="https://twitter.com/ashraenews" class="footerMainSocialLink footerMainSocialLink-- icon-x-logo icon--empty" aria-label=" icon-x-logo icon--empty">聽</a></li> <li><a href="https://www.youtube.com/user/ASHRAEvideo" class="footerMainSocialLink footerMainSocialLink-- icon-youtube-logo icon--empty" aria-label=" icon-youtube-logo icon--empty">聽</a></li> <li><a href="https://www.linkedin.com/company/ashrae" class="footerMainSocialLink footerMainSocialLink-- icon-linkedin-logo icon--empty" aria-label=" icon-linkedin-logo icon--empty">聽</a></li> <li><a href="https://www.instagram.com/ashrae_society" class="footerMainSocialLink footerMainSocialLink--footerMainSocialLink footerMainSocialLink-- icon-instagram-logo icon--empty" aria-label="footerMainSocialLink footerMainSocialLink-- icon-instagram-logo icon--empty">聽</a></li> </ul></nav> </div> <!--/.column--> </div> <div class="section smallModule-wrapper"> </div> <div class="footermain-top"> <div class="footermain-topInner"> <div class="row"> <div class="column med-6"><span class="footerMain-heading">I Want To View</span><nav class="footerMain-topNav"><ul> <li><a href="/i-want-to-view/regions-chapters">Regions / Chapters</a></li> <li><a href="/i-want-to-view/committees">Committees</a></li> <li><a href="/i-want-to-view/volunteer-information">Volunteer Information</a></li> <li><a href="https://www.techstreet.com/ashrae/pages/home?ashrae_auth_token=">Bookstore</a></li> <li><a href="/i-want-to-view/standards">Standards</a></li> <li><a href="/i-want-to-view/ashrae-journal">ASHRAE Journal</a></li> <li><a href="/i-want-to-view/young-engineers">Young Engineers</a></li> <li><a href="/i-want-to-view/student-opportunities">Student Opportunities</a></li> <li><a href="/i-want-to-view/ways-to-donate-to-ashrae">Ways to Donate to ASHRAE</a></li> <li><a href="/i-want-to-view/marketing-central">Marketing Central</a></li> <li><a href="/i-want-to-view/ashrae-365-app">ASHRAE 365 App</a></li> </ul></nav></div> <div class="column med-6"><span class="footerMain-heading">Government Affairs</span><nav class="footerMain-topNav"><ul> <li><a href="/government-affairs/advocacy-toolkit">Advocacy Toolkit</a></li> <li><a href="/government-affairs/government-affairs-office">Government Affairs Office</a></li> <li><a href="/government-affairs/government affairs updates">Government Affairs Updates</a></li> <li><a href="/government-affairs/public-policy-resources">Public Policy Resources</a></li> </ul></nav></div> <div class="column med-6"><span class="footerMain-heading">ASHRAE Membership</span><nav class="footerMain-topNav"><ul> <li><a href="/ashrae-membership/member-benefits">Member Benefits</a></li> <li><a href="/ashrae-membership/join">Join</a></li> <li><a href="/ashrae-membership/renew">Renew</a></li> <li><a href="/ashrae-membership/manage">Manage</a></li> <li><a href="mailto:membership@ashrae.org">Contact Membership</a></li> </ul></nav></div> <div id="ctl01_Footer_pnFooterAd" class="column med-6"> <script> OAS_AD('Feature1'); </script> </div> </div> </div> </div> <div class="footermain-bottom"> <div class="footermain-bottomInner"> <span class="footerMain-bottomInfo"> Copyright ASHRAE <address itemprop="address" itemscope itemtype="http://schema.org/PostalAddress"> <span itemprop="streetAddress">180 Technology Parkway NW</span>, <span itemprop="addressLocality">Peachtree Corners</span>, <span itemprop="addressRegion">Georgia</span> <span itemprop="postalCode">30092</span> <span itemprop="addressCountry">US</span> </address> </span> <nav class="footerMain-bottomNav"> <ul class="CLHierarchicalNav"><li class="first"><a href="/contact-us">Contact Us</a></li><li><a href="/permissions">Permissions</a></li><li><a href="/terms-of-use">Terms of Use</a></li><li><a href="/privacy-policy">Privacy Policy</a></li><li><a href="/careers">Careers</a></li><li><a href="/advertising">Advertising</a></li><li class="last"><a href="/site-map">Site Map</a></li></ul> </nav> </div> </div> </footer> <div class="drawer"> <div class="drawer-close">Close</div> <div class="drawer-content"> </div> </div> <div class="globals-mobile drawerItem" data-id="globals-mobile"> <nav class="navMain-mobile"> <ul> </ul> </nav> </div> <div class="filters-mobile drawerItem" data-id="filters-mobile"> </div> <script> jQuery.redirect = function (obj, url, params) { url = url || window.location.href || ''; url = url.match(/\?/) ? url : url + '?'; for (var key in params) { var re = RegExp(';?' + key + '=?[^&;]*', 'g'); //RegExp('[;&]' + key + '=?[^&;]*', 'g') url = url.replace(re, ''); url += '&' + key + '=' + params[key]; } url = url.replace(/[;&]$/, ''); url = url.replace(/\?[;&]/, '?'); url = url.replace(/[&]{2}/g, '&'); url = url.replace(/[;&]{2}/g, ';'); obj.href = url; }; $(document).ready(function () { var userToken = ''; if (userToken != '') { $("a[href*='techstreet.com']").each(function () { $.redirect(this, this.href, { ashrae_auth_token: userToken }); }); $("a[href*='technologyportal.ashrae.org']").each(function () { $.redirect(this, this.href, { token: userToken }); }); $("a[href*='901portal.ashrae.org']").each(function () { $.redirect(this, this.href, { token: userToken }); }); } }); </script> <script> $(document).ready(function () { var requestQuote = getParameterByName("requestQuote"); if (requestQuote == "true") { var sku = getParameterByName("sku"); var name = getParameterByName("name"); $(".txtQuoteProdSku").val(sku); $(".txtQuoteProdName").val(name); } }); function getParameterByName(name, url) { if (!url) url = window.location.href; name = name.replace(/[\[\]]/g, "\\$&"); var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)", "i"), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, " ")); } </script> <script> $('.galleryMainContainer .galleryMain').slick({ slidesToShow: 1, slidesToScroll: 1, arrows: false, fade: true, asNavFor: '.galleryNav' //adaptiveHeight: true }); $('.galleryMainContainer .galleryNav').slick({ slidesToShow: 5, slidesToScroll: 1, asNavFor: '.galleryMain', dots: false, //centerMode: true, //centerPadding: '0', focusOnSelect: true, vertical: true, responsive: [ { breakpoint: 1024, settings: { slidesToShow: 5, slidesToScroll: 5, //vertical: false, } }, { breakpoint: 641, settings: { slidesToShow: 5, slidesToScroll: 5, vertical: false, } }, { breakpoint: 450, settings: { slidesToShow: 3, slidesToScroll: 3, vertical: false, } }, ] }); </script> <script> $('.imageGallery .galleryMain').slick({ slidesToShow: 1, slidesToScroll: 1, arrows: false, fade: true, asNavFor: '.galleryNav', adaptiveHeight: true }); $('.imageGallery .galleryNav').slick({ slidesToShow: 4, slidesToScroll: 1, asNavFor: '.galleryMain', dots: false, centerMode: true, focusOnSelect: true, variableWidth: true, responsive: [ { breakpoint: 1022, settings: { slidesToShow: 3, slidesToScroll: 3 } }, { breakpoint: 500, settings: { slidesToShow: 2, slidesToScroll: 2 } } ] }); </script> <script> $('.lightbox').each(function () { var image = $(this).children('img').attr('src'); var text = $(this).find('.galleryMain-caption').text(); $(this).magnificPopup({ mainClass: 'mfp-fade', items: [{ src: image, title: text }], gallery: { enabled: true }, type: 'image' }); }); </script> </div> <script type="text/javascript" src="/jsfile/Basepage.js?v=638670192220000000"></script> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="B4380F01" /> </div><input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJMTAyOTQ0MTA0EBYGHg9fX0FudGlYc3JmVG9rZW4FIDc5OTA0Mjc5YmRmZDQwYTRhNjkzNTFhZDQ2NjdkYzZhHhJfX0FudGlYc3JmVXNlck5hbWUFCUFub255bW91cx4TVmFsaWRhdGVSZXF1ZXN0TW9kZQIBZBYCAgEPFgIeBGxhbmcFAmVuFgQCAQ9kFgQCBg9kFgJmDxYGHgNyZWwFCnN0eWxlc2hlZXQeBHR5cGUFCHRleHQvY3NzHgRocmVmBTIvU3R5bGUlMjBMaWJyYXJ5L2Nzcy9tYWluLmNzcz92PTYzODY3MDkyNDgyMDAwMDAwMGQCBw9kFhRmDxYEHwUFD3RleHQvamF2YXNjcmlwdB4Dc3JjBT5odHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjcvanF1ZXJ5Lm1pbi5qc2QCAQ8WBB8FBQ90ZXh0L2phdmFzY3JpcHQfBwVDaHR0cHM6Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnl1aS8xLjcvanF1ZXJ5LXVpLm1pbi5qc2QCAg8WBB8FBQ90ZXh0L2phdmFzY3JpcHQfBwU8L1NjcmlwdCUyMExpYnJhcnkvZnJvbnQtZW5kL2Zyb250RW5kLmpzP3Y9NjM4NjcwOTI0ODIwMDAwMDAwZAIDDxYEHwUFD3RleHQvamF2YXNjcmlwdB8HBUkvU2NyaXB0JTIwTGlicmFyeS9STSUyMGFuZCUyMEZCL2ZhY2Vib29rYmFzZXBpeGVsLmpzP3Y9NjM3NTU5MDgxODMyODYwMzQzZAIEDxYEHwUFD3RleHQvamF2YXNjcmlwdB8HBUgvU2NyaXB0JTIwTGlicmFyeS9Hb29nbGVBbmFseXRpY3MvZ2FsaW5rdHJhY2tpbmcuanM/dj02MzY2OTQ4NzI1Mjg2Nzc5NDVkAgUPFgQfBQUPdGV4dC9qYXZhc2NyaXB0HwcFQC9TY3JpcHQlMjBMaWJyYXJ5L1JNJTIwYW5kJTIwRkIvTGlua2VkSW4uanM/dj02MzY3MzU3NjY4NDU2NzY2MDJkAgYPFgQfBQUPdGV4dC9qYXZhc2NyaXB0HwcFQy9TY3JpcHQlMjBMaWJyYXJ5L1JNJTIwYW5kJTIwRkIvQUFNdHJhY2tpbmcuanM/dj02MzY4NjY4MjYxMzY4OTcxOTNkAgcPFgQfBQUPdGV4dC9qYXZhc2NyaXB0HwcFRi9TY3JpcHQlMjBMaWJyYXJ5L2FkJTIwc2VydmVyL2FkX3NlcnZlcl9zZWFyY2guanM/dj02Mzg2MDU0MDUyNTYzNTM1MTZkAggPFgQfBQUPdGV4dC9qYXZhc2NyaXB0HwcFQi9TY3JpcHQlMjBMaWJyYXJ5L2FkJTIwc2VydmVyL3Vwcml2YWxfdGVzdC5qcz92PTYzNzAwNzc3MjYwODY4NTc2NmQCCQ8WBB8FBQ90ZXh0L2phdmFzY3JpcHQfBwU9L1NjcmlwdCUyMExpYnJhcnkvYWQlMjBzZXJ2ZXIvYWRfY29kZS5qcz92PTYzODYwNTQwNTM4MDE0MzUwM2QCAw9kFgICBQ9kFgoCAQ8PFgIeB1Zpc2libGVoZBYCAgEPZBYMAgIPFCsAAmRkZAIEDxQrAAJkZGQCBg8UKwACZGRkAgcPZBYGAgEPEGRkFgBkAgIPEGRkFgFmZAIDDxBkZBYBZmQCCg8UKwACZGRkAgsPFCsAAmRkZAICDxYCHwhoZAIDD2QWAmYPZBYOAgEPZBYCZg9kFgJmD2QWBGYPZBYCZg8PFgQeCENzc0NsYXNzBRFDTEhpZXJhcmNoaWNhbE5hdh4EXyFTQgICZBYCBQVjdGwwMA9kFgJmDxYCHgRUZXh0BbcCPG5hdiBjbGFzcz0ibmF2VXRpbCI+PHVsPg0KICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvam9pbiI+Sm9pbjwvYT48L2xpPg0KICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvdm9sdW50ZWVyIj5Wb2x1bnRlZXI8L2E+PC9saT4NCiAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL21ha2UtYS1naWZ0Ij5NYWtlIEEgR2lmdDwvYT48L2xpPg0KICAgIDxsaSBjbGFzcz0ibmF2VXRpbC1idG4iPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnRlY2hzdHJlZXQuY29tL2FzaHJhZS9wYWdlcy9ob21lIj5Cb29rc3RvcmU8L2E+PC9saT4NCiAgPC91bD48L25hdj5kAgIPZBYCZg9kFgJmDxYCHwsF4cMBPG5hdiBpZD0ibmF2TWFpbiIgcnVuYXQ9InNlcnZlciIgY2xhc3M9Im5hdk1haW4iPjx1bD4NCiAgICA8bGkgY2xhc3M9Imhhc0NoaWxkcmVuIGlzLW1lZ2EiPjxhIGhyZWY9Ii9hYm91dCI+QWJvdXQ8L2E+PHVsPg0KICAgICAgICA8ZGl2IGNsYXNzPSJtZWdhLWNvbHVtbiI+DQogICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9hYm91dC9taXNzaW9uLWFuZC12aXNpb24iPk1pc3Npb24gJiBWaXNpb248L2E+PHVsIGNsYXNzPSJtZWdhLWNvbHVtbi0taW5zZXQiPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2Fib3V0L21pc3Npb24tYW5kLXZpc2lvbi9hc2hyYWUtaW5kdXN0cnktaGlzdG9yeSI+QVNIUkFFICYgSW5kdXN0cnkgSGlzdG9yeTwvYT48L2xpPg0KICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICA8L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvYWJvdXQvbGVhZGVyc2hpcCI+TGVhZGVyc2hpcDwvYT48dWwgY2xhc3M9Im1lZ2EtY29sdW1uLS1pbnNldCI+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvYWJvdXQvbGVhZGVyc2hpcC9hc2hyYWUtYm9hcmQtb2YtZGlyZWN0b3JzIj5BU0hSQUUgQm9hcmQgb2YgRGlyZWN0b3JzPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvYWJvdXQvbGVhZGVyc2hpcC9hc2hyYWUtcHJlc2lkZW50Ij5BU0hSQUUgUHJlc2lkZW50PC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvYWJvdXQvbGVhZGVyc2hpcC9sZWFkZXJzaGlwLXZvaWNlcyI+TGVhZGVyc2hpcCBWb2ljZXM8L2E+PC9saT4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9hYm91dC9sZWFkZXJzaGlwL29mZmljZXJzLWRpcmVjdG9ycy1jb3VuY2lscy1jb21taXR0ZWVzLXN0YWZmIj5PZmZpY2VycywgRGlyZWN0b3JzLCBDb3VuY2lscywgQ29tbWl0dGVlcywgU3RhZmY8L2E+PC9saT4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9hYm91dC9sZWFkZXJzaGlwL3ByZXNpZGVudGlhbC1tZW1iZXJzLWdhbGxlcnkiPlByZXNpZGVudGlhbCBNZW1iZXJzIEdhbGxlcnk8L2E+PC9saT4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9GaWxlIExpYnJhcnkvQWJvdXQvTGVhZGVyc2hpcC9Tb2NpZXR5IE9yZ2FuaXphdGlvbiBDaGFydC9Tb2NpZXR5T3JnQ2hhcnQucGRmIj5Tb2NpZXR5IE9yZ2FuaXphdGlvbiBDaGFydDwvYT48L2xpPg0KICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICA8L2xpPjwvZGl2PjxkaXYgY2xhc3M9Im1lZ2EtY29sdW1uIj48bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2Fib3V0L3N0cmF0ZWdpYy1wbGFuIj5TdHJhdGVnaWMgUGxhbjwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvYWJvdXQvc29jaWV0eS1zbmFwc2hvdCI+U29jaWV0eSBTbmFwc2hvdDwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvYWJvdXQvZ292ZXJuYW5jZSI+R292ZXJuYW5jZTwvYT48dWwgY2xhc3M9Im1lZ2EtY29sdW1uLS1pbnNldCI+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvYWJvdXQvZ292ZXJuYW5jZS9tZW1vcmFuZGEtb2YtdW5kZXJzdGFuZGluZyI+TWVtb3JhbmRhIG9mIFVuZGVyc3RhbmRpbmc8L2E+PC9saT4NCiAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgPC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2Fib3V0L3Bvc2l0aW9uLWRvY3VtZW50cyI+UG9zaXRpb24gRG9jdW1lbnRzPC9hPjwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9hYm91dC9nb3Zlcm5tZW50LWFmZmFpcnMiPkdvdmVybm1lbnQgQWZmYWlyczwvYT48dWwgY2xhc3M9Im1lZ2EtY29sdW1uLS1pbnNldCI+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvYWJvdXQvZ292ZXJubWVudC1hZmZhaXJzL21lbWJlci1yZXNvdXJjZXMtYWR2b2NhY3ktdG9vbGtpdCI+TWVtYmVyIFJlc291cmNlczogQWR2b2NhY3kgVG9vbGtpdDwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2Fib3V0L2dvdmVybm1lbnQtYWZmYWlycy9nb3Zlcm5tZW50LWFmZmFpcnMtb2ZmaWNlIj5Hb3Zlcm5tZW50IEFmZmFpcnMgT2ZmaWNlPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvYWJvdXQvZ292ZXJubWVudC1hZmZhaXJzL2dvdmVybm1lbnQtYWZmYWlycy11cGRhdGVzIj5Hb3Zlcm5tZW50IEFmZmFpcnMgVXBkYXRlczwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2Fib3V0L2dvdmVybm1lbnQtYWZmYWlycy9wb2xpY3ktcG9zaXRpb25zLWFuZC1pc3N1ZXMiPlBvbGljeSBQb3NpdGlvbnMgYW5kIElzc3VlczwvYT48L2xpPg0KICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICA8L2xpPjwvZGl2PjxkaXYgY2xhc3M9Im1lZ2EtY29sdW1uIj48bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2Fib3V0L25ld3MiPk5ld3M8L2E+PHVsIGNsYXNzPSJtZWdhLWNvbHVtbi0taW5zZXQiPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2Fib3V0L25ld3MvMjAyNCI+MjAyNDwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2Fib3V0L25ld3MvMjAyMyI+MjAyMzwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2Fib3V0L25ld3MvMjAyMiI+MjAyMjwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2Fib3V0L25ld3MvbmV3cy1wcmlvci10by0yMDIyIj5OZXdzIFByaW9yIHRvIDIwMjI8L2E+PC9saT4NCiAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgPC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2Fib3V0L25ld3NsZXR0ZXJzIj5OZXdzbGV0dGVyczwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvYWJvdXQvY2FyZWVycy1hdC1hc2hyYWUiPkNhcmVlcnMgYXQgQVNIUkFFPC9hPjwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9hYm91dC9ldmVudC1zcGFjZS1yZW50YWwiPkV2ZW50IFNwYWNlIFJlbnRhbDwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSJodHRwOi8vZm91bmRhdGlvbi5hc2hyYWUuYml6LyIgdGFyZ2V0PSJfYmxhbmsiPkFTSFJBRSBGb3VuZGF0aW9uIDxpIGNsYXNzPSJpY29uLWxpbmstZXh0IGljb24tLWVtcHR5Ij48L2k+PC9hPjwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9hYm91dC9hc2hyYWUtMzY1LWFwcCI+QVNIUkFFIDM2NSBBcHA8L2E+PC9saT48L2Rpdj48ZGl2IGNsYXNzPSJtZWdhLWNvbHVtbiI+PGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9hYm91dC9zdXBwb3J0LWFzaHJhZSI+U3VwcG9ydCBBU0hSQUU8L2E+PHVsIGNsYXNzPSJtZWdhLWNvbHVtbi0taW5zZXQiPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2Fib3V0L3N1cHBvcnQtYXNocmFlL3JwIj5SUDwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iaHR0cDovL2ZvdW5kYXRpb24uYXNocmFlLmJpei8iIHRhcmdldD0iX2JsYW5rIj5Gb3VuZGF0aW9uIDxpIGNsYXNzPSJpY29uLWxpbmstZXh0IGljb24tLWVtcHR5Ij48L2k+PC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvYWJvdXQvc3VwcG9ydC1hc2hyYWUvcGxhbm5lZC1naXZpbmciPlBsYW5uZWQgR2l2aW5nPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvYWJvdXQvc3VwcG9ydC1hc2hyYWUvYXNocmFlLXByZXNpZGVudHMtc2Nob2xhcnNoaXAiPkFTSFJBRSBQcmVzaWRlbnRzIFNjaG9sYXJzaGlwPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvYWJvdXQvc3VwcG9ydC1hc2hyYWUvb3RoZXIiPk90aGVyPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvYWJvdXQvc3VwcG9ydC1hc2hyYWUvdm9sdW50ZWVyIj5Wb2x1bnRlZXI8L2E+PC9saT4NCiAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgPC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2Fib3V0L21hcmtldGluZy1jZW50cmFsIj5NYXJrZXRpbmcgQ2VudHJhbDwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvYWJvdXQvYXNocmFlLWdsb2JhbC1ocSI+QVNIUkFFIEdsb2JhbCBIUTwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvYWJvdXQvY29udGFjdC11cyI+Q29udGFjdCBVczwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvYWJvdXQvZGl2ZXJzaXR5LWVxdWl0eS1hbmQtaW5jbHVzaW9uLWRlaSI+RGl2ZXJzaXR5IEVxdWl0eSBhbmQgSW5jbHVzaW9uIChERUkpPC9hPjwvbGk+DQogICAgICAgIDwvZGl2Pg0KICAgICAgPC91bD4NCiAgICA8L2xpPg0KICAgIDxsaSBjbGFzcz0iaGFzQ2hpbGRyZW4gaXMtbWVnYSI+PGEgaHJlZj0iL3RlY2huaWNhbC1yZXNvdXJjZXMiPlRlY2huaWNhbCBSZXNvdXJjZXM8L2E+PHVsPg0KICAgICAgICA8ZGl2IGNsYXNzPSJtZWdhLWNvbHVtbiI+DQogICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Imh0dHBzOi8vc3RvcmUuYWNjdXJpc3RlY2guY29tL2FzaHJhZS9hc2hyYWVnYXRlLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5Cb29rc3RvcmUgPGkgY2xhc3M9Imljb24tbGluay1leHQgaWNvbi0tZW1wdHkiPjwvaT48L2E+PC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iaHR0cHM6Ly9hc2hyYWUubGlicmFyeS5zaXRlLyIgdGFyZ2V0PSJfYmxhbmsiPkFTSFJBRSBMaWJyYXJ5IDxpIGNsYXNzPSJpY29uLWxpbmstZXh0IGljb24tLWVtcHR5Ij48L2k+PC9hPjwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii90ZWNobmljYWwtcmVzb3VyY2VzL3RlY2hub2xvZ3ktcG9ydGFsIj5UZWNobm9sb2d5IFBvcnRhbDwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvdGVjaG5pY2FsLXJlc291cmNlcy90ZWNobmljYWwtYXBwcyI+VGVjaG5pY2FsIEFwcHM8L2E+PC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3RlY2huaWNhbC1yZXNvdXJjZXMvZnJlZS1yZXNvdXJjZXMiPkZyZWUgUmVzb3VyY2VzPC9hPjwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii90ZWNobmljYWwtcmVzb3VyY2VzL2FzaHJhZS0zNjUtYXBwIj5BU0hSQUUgMzY1IEFwcDwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvdGVjaG5pY2FsLXJlc291cmNlcy9idWlsZGluZy1lcSI+QnVpbGRpbmcgRVE8L2E+PC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3RlY2huaWNhbC1yZXNvdXJjZXMvYWVkZ3MiPkFFREdzPC9hPjwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii90ZWNobmljYWwtcmVzb3VyY2VzL2NlYmQtY2VudGVyLW9mLWV4Y2VsbGVuY2UtZm9yLWJ1aWxkaW5nLWRlY2FyYm9uaXphdGlvbiI+Q2VudGVyIG9mIEV4Y2VsbGVuY2UgZm9yIEJ1aWxkaW5nIERlY2FyYm9uaXphdGlvbiAoQ0VCRCk8L2E+PC9saT48L2Rpdj48ZGl2IGNsYXNzPSJtZWdhLWNvbHVtbiI+PGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii90ZWNobmljYWwtcmVzb3VyY2VzL3N0YW5kYXJkcy1hbmQtZ3VpZGVsaW5lcyI+U3RhbmRhcmRzICYgR3VpZGVsaW5lczwvYT48dWwgY2xhc3M9Im1lZ2EtY29sdW1uLS1pbnNldCI+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvdGVjaG5pY2FsLXJlc291cmNlcy9zdGFuZGFyZHMtYW5kLWd1aWRlbGluZXMvY29udGludW91cy1tYWludGVuYW5jZSI+Q29udGludW91cyBNYWludGVuYW5jZTwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3RlY2huaWNhbC1yZXNvdXJjZXMvc3RhbmRhcmRzLWFuZC1ndWlkZWxpbmVzL3Bjcy10b29sa2l0Ij5Qcm9qZWN0IENvbW1pdHRlZXMgKFBDcykgVG9vbGtpdDwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3RlY2huaWNhbC1yZXNvdXJjZXMvc3RhbmRhcmRzLWFuZC1ndWlkZWxpbmVzL3B1YmxpYy1yZXZpZXctZHJhZnRzIj5QdWJsaWMgUmV2aWV3IERyYWZ0czwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iaHR0cHM6Ly93d3cudGVjaHN0cmVldC5jb20vYXNocmFlL2xpc3RzL2FzaHJhZV9zdGFuZGFyZHMudG1wbD9hc2hyYWVfYXV0aF90b2tlbj0iIHRhcmdldD0iX2JsYW5rIj5QdXJjaGFzZSBTdGFuZGFyZHMgJiBHdWlkZWxpbmVzIDxpIGNsYXNzPSJpY29uLWxpbmstZXh0IGljb24tLWVtcHR5Ij48L2k+PC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvdGVjaG5pY2FsLXJlc291cmNlcy9zdGFuZGFyZHMtYW5kLWd1aWRlbGluZXMvc3RhbmRhcmRzLWFjdGlvbnMiPlN0YW5kYXJkcyBBY3Rpb25zPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvdGVjaG5pY2FsLXJlc291cmNlcy9zdGFuZGFyZHMtYW5kLWd1aWRlbGluZXMvc3RhbmRhcmRzLWFkZGVuZGEiPlN0YW5kYXJkcyBBZGRlbmRhPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvdGVjaG5pY2FsLXJlc291cmNlcy9zdGFuZGFyZHMtYW5kLWd1aWRlbGluZXMvc3RhbmRhcmRzLWVycmF0YSI+U3RhbmRhcmRzIEVycmF0YTwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3RlY2huaWNhbC1yZXNvdXJjZXMvc3RhbmRhcmRzLWFuZC1ndWlkZWxpbmVzL3N0YW5kYXJkcy1pbnRlcnByZXRhdGlvbnMiPlN0YW5kYXJkcyBJbnRlcnByZXRhdGlvbnM8L2E+PC9saT4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii90ZWNobmljYWwtcmVzb3VyY2VzL3N0YW5kYXJkcy1hbmQtZ3VpZGVsaW5lcy9hcHBseS10by1hLXByb2plY3QtY29tbWl0dGVlIj5BcHBseSB0byBhIFByb2plY3QgQ29tbWl0dGVlPC9hPjwvbGk+DQogICAgICAgICAgICA8L3VsPg0KICAgICAgICAgIDwvbGk+PC9kaXY+PGRpdiBjbGFzcz0ibWVnYS1jb2x1bW4iPjxsaSBjbGFzcz0iIj48YSBocmVmPSIvdGVjaG5pY2FsLXJlc291cmNlcy85MC0xLXBvcnRhbCI+OTAuMSBQb3J0YWw8L2E+PC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3RlY2huaWNhbC1yZXNvdXJjZXMvYXNocmFlLWhhbmRib29rIj5BU0hSQUUgSGFuZGJvb2s8L2E+PC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3RlY2huaWNhbC1yZXNvdXJjZXMvYXNocmFlLWpvdXJuYWwiPkFTSFJBRSBKb3VybmFsPC9hPjx1bCBjbGFzcz0ibWVnYS1jb2x1bW4tLWluc2V0Ij4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii90ZWNobmljYWwtcmVzb3VyY2VzL2FzaHJhZS1qb3VybmFsL2ZlYXR1cmVkLWFydGljbGVzIj5GZWF0dXJlZCBBcnRpY2xlczwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3RlY2huaWNhbC1yZXNvdXJjZXMvYXNocmFlLWpvdXJuYWwvcG9kY2FzdCI+QVNIUkFFIEpvdXJuYWwgUG9kY2FzdDwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3RlY2huaWNhbC1yZXNvdXJjZXMvYXNocmFlLWpvdXJuYWwvaG90LWFpciI+SG90IEFpcjwvYT48L2xpPg0KICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICA8L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSJodHRwOi8vd3d3LmhwYm1hZ2F6aW5lLm9yZy8iIHRhcmdldD0iX2JsYW5rIj5IaWdoIFBlcmZvcm1pbmcgQnVpbGRpbmdzIDxpIGNsYXNzPSJpY29uLWxpbmstZXh0IGljb24tLWVtcHR5Ij48L2k+PC9hPjwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii90ZWNobmljYWwtcmVzb3VyY2VzL3N1cHBsaWVyLXByb3ZpZGVkLWxlYXJuaW5nIj5TdXBwbGllci1Qcm92aWRlZCBMZWFybmluZzwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvdGVjaG5pY2FsLXJlc291cmNlcy9hc2hyYWUtdHJhbnNhY3Rpb25zIj5BU0hSQUUgVHJhbnNhY3Rpb25zPC9hPjwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii90ZWNobmljYWwtcmVzb3VyY2VzL2FzaHJhZS1jb25mZXJlbmNlLXBhcGVycyI+QVNIUkFFIENvbmZlcmVuY2UgUGFwZXJzPC9hPjwvbGk+PC9kaXY+PGRpdiBjbGFzcz0ibWVnYS1jb2x1bW4iPjxsaSBjbGFzcz0iIj48YSBocmVmPSIvdGVjaG5pY2FsLXJlc291cmNlcy9yZXNlYXJjaCI+UmVzZWFyY2g8L2E+PHVsIGNsYXNzPSJtZWdhLWNvbHVtbi0taW5zZXQiPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3RlY2huaWNhbC1yZXNvdXJjZXMvcmVzZWFyY2gvYXNocmFlLXJwIj5BU0hSQUUgUlA8L2E+PC9saT4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnRlY2hzdHJlZXQuY29tL2FzaHJhZS9zdWJncm91cHMvMzQ3NDg/YXNocmFlX2F1dGhfdG9rZW49IiB0YXJnZXQ9Il9ibGFuayI+UHVyY2hhc2UgUmVzZWFyY2ggUmVwb3J0cyA8aSBjbGFzcz0iaWNvbi1saW5rLWV4dCBpY29uLS1lbXB0eSI+PC9pPjwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3RlY2huaWNhbC1yZXNvdXJjZXMvcmVzZWFyY2gvcmVzZWFyY2gtc3RyYXRlZ2ljLXBsYW4iPlJlc2VhcmNoIFN0cmF0ZWdpYyBQbGFuPC9hPjwvbGk+DQogICAgICAgICAgICA8L3VsPg0KICAgICAgICAgIDwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii90ZWNobmljYWwtcmVzb3VyY2VzL3RlY2huaWNhbC1jb21taXR0ZWVzIj5UZWNobmljYWwgQ29tbWl0dGVlczwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvdGVjaG5pY2FsLXJlc291cmNlcy9zY2llbmNlLWFuZC10ZWNobm9sb2d5LWZvci10aGUtYnVpbHQtZW52aXJvbm1lbnQiPlNjaWVuY2UgYW5kIFRlY2hub2xvZ3kgZm9yIHRoZSBCdWlsdCBFbnZpcm9ubWVudDwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvdGVjaG5pY2FsLXJlc291cmNlcy90cmFuc2xhdGVkLXB1YmxpY2F0aW9ucyI+VHJhbnNsYXRlZCBQdWJsaWNhdGlvbnM8L2E+PC9saT48L2Rpdj48ZGl2IGNsYXNzPSJtZWdhLWNvbHVtbiI+PGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii90ZWNobmljYWwtcmVzb3VyY2VzL2F1dGhvcmluZy10b29scyI+QXV0aG9yaW5nIFRvb2xzPC9hPjx1bCBjbGFzcz0ibWVnYS1jb2x1bW4tLWluc2V0Ij4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii90ZWNobmljYWwtcmVzb3VyY2VzL2F1dGhvcmluZy10b29scy9jaXRhdGlvbi1hbmQtYWJzdHJhY3QtaW5kZXhlcyI+Q2l0YXRpb24gYW5kIEFic3RyYWN0IEluZGV4ZXM8L2E+PC9saT4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii90ZWNobmljYWwtcmVzb3VyY2VzL2F1dGhvcmluZy10b29scy90ZXJtaW5vbG9neSI+VGVybWlub2xvZ3k8L2E+PC9saT4NCiAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgPC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3RlY2huaWNhbC1yZXNvdXJjZXMvcHVibGljYXRpb24tZXJyYXRhLWFuZC11cGRhdGVzIj5QdWJsaWNhdGlvbiBFcnJhdGEgJiBVcGRhdGVzPC9hPjwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii90ZWNobmljYWwtcmVzb3VyY2VzL3RlY2huaWNhbC1mYXFzIj5UZWNobmljYWwgRkFRczwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvdGVjaG5pY2FsLXJlc291cmNlcy9yZXNpbGllbmNlLWFjdGl2aXRpZXMiPlJlc2lsaWVuY2UgQWN0aXZpdGllczwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvdGVjaG5pY2FsLXJlc291cmNlcy9yZWZyaWdlcmF0aW9uIj5SZWZyaWdlcmF0aW9uPC9hPjwvbGk+DQogICAgICAgIDwvZGl2Pg0KICAgICAgPC91bD4NCiAgICA8L2xpPg0KICAgIDxsaSBjbGFzcz0iaGFzQ2hpbGRyZW4gaXMtbWVnYSI+PGEgaHJlZj0iL3Byb2Zlc3Npb25hbC1kZXZlbG9wbWVudCI+UHJvZmVzc2lvbmFsIERldmVsb3BtZW50PC9hPjx1bD4NCiAgICAgICAgPGRpdiBjbGFzcz0ibWVnYS1jb2x1bW4iPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvcHJvZmVzc2lvbmFsLWRldmVsb3BtZW50L2VsZWFybmluZy1vbi1kZW1hbmQiPmVMZWFybmluZyBPbiBEZW1hbmQ8L2E+PHVsIGNsYXNzPSJtZWdhLWNvbHVtbi0taW5zZXQiPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iaHR0cHM6Ly9teWVsZWFybmluZy5hc2hyYWUub3JnL3BhZ2UvaW5kaXZpZHVhbC1jb3Vyc2UiIHRhcmdldD0iX2JsYW5rIj5Db3Vyc2UgQ2F0YWxvZyA8aSBjbGFzcz0iaWNvbi1saW5rLWV4dCBpY29uLS1lbXB0eSI+PC9pPjwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3Byb2Zlc3Npb25hbC1kZXZlbG9wbWVudC9lbGVhcm5pbmctb24tZGVtYW5kL2dyb3VwLWVucm9sbG1lbnQiPkdyb3VwIEVucm9sbG1lbnRzPC9hPjwvbGk+DQogICAgICAgICAgICA8L3VsPg0KICAgICAgICAgIDwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9wcm9mZXNzaW9uYWwtZGV2ZWxvcG1lbnQvYWxsLWluc3RydWN0b3ItbGVkLXRyYWluaW5nIj5BbGwgSW5zdHJ1Y3Rvci1MZWQgVHJhaW5pbmc8L2E+PHVsIGNsYXNzPSJtZWdhLWNvbHVtbi0taW5zZXQiPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3Byb2Zlc3Npb25hbC1kZXZlbG9wbWVudC9hbGwtaW5zdHJ1Y3Rvci1sZWQtdHJhaW5pbmcvc2NoZWR1bGVkLWNvdXJzZXMiPlNjaGVkdWxlZCBDb3Vyc2VzPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvcHJvZmVzc2lvbmFsLWRldmVsb3BtZW50L2FsbC1pbnN0cnVjdG9yLWxlZC10cmFpbmluZy8yMDI1LXdpbnRlci1jb25mZXJlbmNlLWNvdXJzZXMiPjIwMjUgV2ludGVyIENvbmZlcmVuY2UgQ291cnNlczwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3Byb2Zlc3Npb25hbC1kZXZlbG9wbWVudC9hbGwtaW5zdHJ1Y3Rvci1sZWQtdHJhaW5pbmcvaHZhYy1kZXNpZ24tYW5kLW9wZXJhdGlvbnMtdHJhaW5pbmciPkhWQUMgRGVzaWduIGFuZCBPcGVyYXRpb25zIFRyYWluaW5nPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvcHJvZmVzc2lvbmFsLWRldmVsb3BtZW50L2FsbC1pbnN0cnVjdG9yLWxlZC10cmFpbmluZy9vbmxpbmUtaW5zdHJ1Y3Rvci1sZWQtdHJhaW5pbmciPk9ubGluZSBJbnN0cnVjdG9yLUxlZCBUcmFpbmluZzwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3Byb2Zlc3Npb25hbC1kZXZlbG9wbWVudC9hbGwtaW5zdHJ1Y3Rvci1sZWQtdHJhaW5pbmcvZ2xvYmFsLXRyYWluaW5nIj5BU0hSQUUgR2xvYmFsIFRyYWluaW5nIHwgTUVOQTwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3Byb2Zlc3Npb25hbC1kZXZlbG9wbWVudC9hbGwtaW5zdHJ1Y3Rvci1sZWQtdHJhaW5pbmcvY2F0YWxvZy1vZi1pbnN0cnVjdG9yLWxlZC10cmFpbmluZyI+Q2F0YWxvZyBvZiBJbnN0cnVjdG9yLUxlZCBUcmFpbmluZzwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3Byb2Zlc3Npb25hbC1kZXZlbG9wbWVudC9hbGwtaW5zdHJ1Y3Rvci1sZWQtdHJhaW5pbmcvY29tcGFueS1jaGFwdGVyLXRyYWluaW5nIj5Db21wYW55L0NoYXB0ZXIgVHJhaW5pbmc8L2E+PC9saT4NCiAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgPC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3Byb2Zlc3Npb25hbC1kZXZlbG9wbWVudC9zZWxmLWRpcmVjdGVkLWxlYXJuaW5nLWdyb3VwLWxlYXJuaW5nLXRleHRzIj5TZWxmLURpcmVjdGVkIExlYXJuaW5nIC8gR3JvdXAgTGVhcm5pbmcgVGV4dHM8L2E+PC9saT48L2Rpdj48ZGl2IGNsYXNzPSJtZWdhLWNvbHVtbiI+PGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9wcm9mZXNzaW9uYWwtZGV2ZWxvcG1lbnQvYXNocmFlLWNlcnRpZmljYXRpb24iPkFTSFJBRSBDZXJ0aWZpY2F0aW9uPC9hPjx1bCBjbGFzcz0ibWVnYS1jb2x1bW4tLWluc2V0Ij4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9wcm9mZXNzaW9uYWwtZGV2ZWxvcG1lbnQvYXNocmFlLWNlcnRpZmljYXRpb24vZXhwbG9yZS1iZW5lZml0cyI+RXhwbG9yZSBCZW5lZml0czwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3Byb2Zlc3Npb25hbC1kZXZlbG9wbWVudC9hc2hyYWUtY2VydGlmaWNhdGlvbi9kaWdpdGFsLWJhZGdpbmciPkRpZ2l0YWwgQmFkZ2luZzwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL3Byb2Zlc3Npb25hbC1kZXZlbG9wbWVudC9hc2hyYWUtY2VydGlmaWNhdGlvbi9maW5kLWFuLWFzaHJhZS1jZXJ0aWZpZWQtcHJvZmVzc2lvbmFsIj5GaW5kIGFuIEFTSFJBRSBDZXJ0aWZpZWQgUHJvZmVzc2lvbmFsPC9hPjwvbGk+DQogICAgICAgICAgICA8L3VsPg0KICAgICAgICAgIDwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9wcm9mZXNzaW9uYWwtZGV2ZWxvcG1lbnQvbGVhcm5pbmctcGF0aHdheXMiPkxlYXJuaW5nIFBhdGh3YXlzPC9hPjx1bCBjbGFzcz0ibWVnYS1jb2x1bW4tLWluc2V0Ij4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9wcm9mZXNzaW9uYWwtZGV2ZWxvcG1lbnQvbGVhcm5pbmctcGF0aHdheXMvaHZhYy1kZXNpZ24iPkhWQUMgRGVzaWduIC0gQmFzaWNzPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvcHJvZmVzc2lvbmFsLWRldmVsb3BtZW50L2xlYXJuaW5nLXBhdGh3YXlzL3BhdGhvZ2VuLW1pdGlnYXRpb24iPlBhdGhvZ2VuIE1pdGlnYXRpb248L2E+PC9saT4NCiAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgPC9saT48L2Rpdj48ZGl2IGNsYXNzPSJtZWdhLWNvbHVtbiI+PGxpIGNsYXNzPSIiPjxhIGhyZWY9Imh0dHBzOi8vam9icy5hc2hyYWUub3JnLyIgdGFyZ2V0PSJfYmxhbmsiPkpvYiBCb2FyZCA8aSBjbGFzcz0iaWNvbi1saW5rLWV4dCBpY29uLS1lbXB0eSI+PC9pPjwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvcHJvZmVzc2lvbmFsLWRldmVsb3BtZW50L2VkdWNhdG9yLXJlc291cmNlcyI+RWR1Y2F0b3IgUmVzb3VyY2VzPC9hPjwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9wcm9mZXNzaW9uYWwtZGV2ZWxvcG1lbnQvdGVjaC1ob3VyLXZpZGVvcyI+VGVjaCBIb3VyIFZpZGVvczwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvcHJvZmVzc2lvbmFsLWRldmVsb3BtZW50L2FzaHJhZS11bmVwLXBvcnRhbCI+QVNIUkFFIFVORVAgUG9ydGFsPC9hPjwvbGk+DQogICAgICAgIDwvZGl2Pg0KICAgICAgPC91bD4NCiAgICA8L2xpPg0KICAgIDxsaSBjbGFzcz0iaGFzQ2hpbGRyZW4gaXMtbWVnYSI+PGEgaHJlZj0iL2NvbmZlcmVuY2VzIj5Db25mZXJlbmNlczwvYT48dWw+DQogICAgICAgIDxkaXYgY2xhc3M9Im1lZ2EtY29sdW1uIj4NCiAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbmZlcmVuY2VzLzIwMjUtd2ludGVyLWNvbmZlcmVuY2Utb3JsYW5kbyI+MjAyNSBXaW50ZXIgQ29uZmVyZW5jZSB8IE9ybGFuZG88L2E+PC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbmZlcmVuY2VzLzIwMjUtYW5udWFsLWNvbmZlcmVuY2UtcGhvZW5peCI+MjAyNSBBbm51YWwgQ29uZmVyZW5jZSB8IFBob2VuaXg8L2E+PC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbmZlcmVuY2VzL3RvcGljYWwtY29uZmVyZW5jZXMiPlRvcGljYWwgQ29uZmVyZW5jZXM8L2E+PHVsIGNsYXNzPSJtZWdhLWNvbHVtbi0taW5zZXQiPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbmZlcmVuY2VzL3RvcGljYWwtY29uZmVyZW5jZXMvdGhpcmQtaW50ZXJuYXRpb25hbC1jb25mZXJlbmNlLW9uLWVuZXJneS1hbmQtaW5kb29yLWVudmlyb25tZW50LWZvci1ob3QtY2xpbWF0ZXMiPlRoaXJkIEludGVybmF0aW9uYWwgQ29uZmVyZW5jZSBvbiBFbmVyZ3kgYW5kIEluZG9vciBFbnZpcm9ubWVudCBmb3IgSG90IENsaW1hdGVzPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvY29uZmVyZW5jZXMvdG9waWNhbC1jb25mZXJlbmNlcy9pZXEtMjAyNS1jb25mZXJlbmNlIj5JRVEgMjAyNSBDb25mZXJlbmNlPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvY29uZmVyZW5jZXMvdG9waWNhbC1jb25mZXJlbmNlcy8yMDI1LWFzaHJhZS1idWlsZGluZy1kZWNhcmJvbml6YXRpb24tY29uZmVyZW5jZSI+MjAyNSBBU0hSQUUgQnVpbGRpbmcgRGVjYXJib25pemF0aW9uIENvbmZlcmVuY2U8L2E+PC9saT4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9jb25mZXJlbmNlcy90b3BpY2FsLWNvbmZlcmVuY2VzLzIwMjUtYnVpbGRpbmcteHZpLWNvbmZlcmVuY2UiPjIwMjUgQnVpbGRpbmdzIFhWSSBDb25mZXJlbmNlPC9hPjwvbGk+DQogICAgICAgICAgICA8L3VsPg0KICAgICAgICAgIDwvbGk+PC9kaXY+PGRpdiBjbGFzcz0ibWVnYS1jb2x1bW4iPjxsaSBjbGFzcz0iIj48YSBocmVmPSIvY29uZmVyZW5jZXMvdmlydHVhbC1jb25mZXJlbmNlLWFjY2VzcyI+VmlydHVhbCBDb25mZXJlbmNlIEFjY2VzczwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvY29uZmVyZW5jZXMvY29uZmVyZW5jZS1yZXNvdXJjZXMiPkNvbmZlcmVuY2UgUmVzb3VyY2VzPC9hPjx1bCBjbGFzcz0ibWVnYS1jb2x1bW4tLWluc2V0Ij4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9jb25mZXJlbmNlcy9jb25mZXJlbmNlLXJlc291cmNlcy9hc2hyYWUtY29uZmVyZW5jZS1tYXJrZXRpbmciPkFTSFJBRSBDb25mZXJlbmNlIE1hcmtldGluZzwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL0ZpbGUgTGlicmFyeS9Db25mZXJlbmNlcy9Db25mZXJlbmNlIFJlc291cmNlcy9Dcml0ZXJpYSBmb3IgQW5udWFsIENvbmZlcmVuY2UgQ2l0eSBTZWxlY3Rpb24vQ3JpdGVyaWEtZm9yLUFubnVhbC1Db25mZXJlbmNlLUNpdHktU2VsZWN0aW9uLnBkZiI+Q3JpdGVyaWEgZm9yIEFubnVhbCBDb25mZXJlbmNlIENpdHkgU2VsZWN0aW9uPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvY29uZmVyZW5jZXMvY29uZmVyZW5jZS1yZXNvdXJjZXMvcGFwZXJzLWFuZC1wcm9ncmFtcyI+UGFwZXJzICZhbXA7IFByb2dyYW1zPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvY29uZmVyZW5jZXMvY29uZmVyZW5jZS1yZXNvdXJjZXMvcGFzdC1hc2hyYWUtY29uZmVyZW5jZXMiPlBhc3QgQVNIUkFFIENvbmZlcmVuY2VzPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvY29uZmVyZW5jZXMvY29uZmVyZW5jZS1yZXNvdXJjZXMvZnV0dXJlLWFzaHJhZS1jb25mZXJlbmNlcyI+RnV0dXJlIEFTSFJBRSBDb25mZXJlbmNlczwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbmZlcmVuY2VzL2NvbmZlcmVuY2UtcmVzb3VyY2VzL3RvcGljYWwtY29uZmVyZW5jZS1jcml0ZXJpYSI+VG9waWNhbCBDb25mZXJlbmNlIENyaXRlcmlhPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvY29uZmVyZW5jZXMvY29uZmVyZW5jZS1yZXNvdXJjZXMvdHJhdmVsIj5UcmF2ZWw8L2E+PC9saT4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9jb25mZXJlbmNlcy9jb25mZXJlbmNlLXJlc291cmNlcy9zcG9uc29yc2hpcC1vcHBvcnR1bml0aWVzIj5TcG9uc29yc2hpcCBPcHBvcnR1bml0aWVzPC9hPjwvbGk+DQogICAgICAgICAgICA8L3VsPg0KICAgICAgICAgIDwvbGk+PC9kaXY+PGRpdiBjbGFzcz0ibWVnYS1jb2x1bW4iPjxsaSBjbGFzcz0iIj48YSBocmVmPSIvY29uZmVyZW5jZXMvY2hhcHRlcnMtcmVnaW9uYWwtY29uZmVyZW5jZXMtY3JjcyI+Q2hhcHRlcnMgUmVnaW9uYWwgQ29uZmVyZW5jZXMgKENSQ3MpPC9hPjwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9jb25mZXJlbmNlcy9ldmVudHMtYW5kLWNvbmZlcmVuY2VzIj5FdmVudHMgYW5kIENvbmZlcmVuY2VzPC9hPjwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9jb25mZXJlbmNlcy9zcGVha2VyLXJlc291cmNlcyI+U3BlYWtlciBSZXNvdXJjZXM8L2E+PC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbmZlcmVuY2VzL2FzaHJhZS0zNjUtYXBwIj5BU0hSQUUgMzY1IEFwcDwvYT48L2xpPg0KICAgICAgICA8L2Rpdj4NCiAgICAgIDwvdWw+DQogICAgPC9saT4NCiAgICA8bGkgY2xhc3M9Imhhc0NoaWxkcmVuIGlzLW1lZ2EiPjxhIGhyZWY9Ii9jb21tdW5pdGllcyI+Q29tbXVuaXRpZXM8L2E+PHVsPg0KICAgICAgICA8ZGl2IGNsYXNzPSJtZWdhLWNvbHVtbiI+DQogICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9jb21tdW5pdGllcy9yZWdpb25zIj5SZWdpb25zPC9hPjwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9jb21tdW5pdGllcy9jaGFwdGVycyI+Q2hhcHRlcnM8L2E+PHVsIGNsYXNzPSJtZWdhLWNvbHVtbi0taW5zZXQiPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbW11bml0aWVzL2NoYXB0ZXJzL2FzaHJhZS1jaGFwdGVycyI+QVNIUkFFIENoYXB0ZXJzPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSJodHRwczovL2V3ZWIuYXNocmFlLm9yZy9ld2ViL2R5bmFtaWNwYWdlLmFzcHg/d2ViY29kZT1BU0hSQUVDaGFwdGVycyIgdGFyZ2V0PSJfYmxhbmsiPkNoYXB0ZXIgUmVwb3J0cywgUEFPRSwgQ0lRIDxpIGNsYXNzPSJpY29uLWxpbmstZXh0IGljb24tLWVtcHR5Ij48L2k+PC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSJodHRwczovL2V3ZWIuYXNocmFlLm9yZy9ld2ViL2R5bmFtaWNwYWdlLmFzcHg/c2l0ZT1BU0hSQUUmYW1wO3dlYmNvZGU9Y2hhcHRlcm1lZXRpbmdzJmFtcDtjaHBfY3N0X2tleT0wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiIHRhcmdldD0iX2JsYW5rIj5DaGFwdGVyIE1lZXRpbmdzIDxpIGNsYXNzPSJpY29uLWxpbmstZXh0IGljb24tLWVtcHR5Ij48L2k+PC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvY29tbXVuaXRpZXMvY2hhcHRlcnMvY2hhcHRlci1yZXNvdXJjZXMiPkNoYXB0ZXIgUmVzb3VyY2VzPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvY29tbXVuaXRpZXMvY2hhcHRlcnMvZGlzdGluZ3Vpc2hlZC1sZWN0dXJlcnMiPkRpc3Rpbmd1aXNoZWQgTGVjdHVyZXJzPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvY29tbXVuaXRpZXMvY2hhcHRlcnMvcGFvZS1pbmZvcm1hdGlvbiI+UEFPRSBJbmZvcm1hdGlvbjwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbW11bml0aWVzL2NoYXB0ZXJzL2RvZS1sYm5sLXBhcnRuZXJzaGlwIj5ET0UgJiBMQk5MIFBhcnRuZXJzaGlwPC9hPjwvbGk+DQogICAgICAgICAgICA8L3VsPg0KICAgICAgICAgIDwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9jb21tdW5pdGllcy92b2x1bnRlZXIiPlZvbHVudGVlcjwvYT48L2xpPjwvZGl2PjxkaXYgY2xhc3M9Im1lZ2EtY29sdW1uIj48bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbW11bml0aWVzL2NvdW5jaWxzIj5Db3VuY2lsczwvYT48dWwgY2xhc3M9Im1lZ2EtY29sdW1uLS1pbnNldCI+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvY29tbXVuaXRpZXMvY291bmNpbHMvbWVtYmVycy1jb3VuY2lsIj5NZW1iZXJzIENvdW5jaWw8L2E+PC9saT4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9jb21tdW5pdGllcy9jb3VuY2lscy9wdWJsaXNoaW5nLWFuZC1lZHVjYXRpb24tY291bmNpbCI+UHVibGlzaGluZyAmIEVkdWNhdGlvbiBDb3VuY2lsPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvY29tbXVuaXRpZXMvY291bmNpbHMvdGVjaG5vbG9neS1jb3VuY2lsIj5UZWNobm9sb2d5IENvdW5jaWw8L2E+PC9saT4NCiAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgPC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbW11bml0aWVzL2NvbW1pdHRlZXMiPkNvbW1pdHRlZXM8L2E+PHVsIGNsYXNzPSJtZWdhLWNvbHVtbi0taW5zZXQiPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbW11bml0aWVzL2NvbW1pdHRlZXMvY29tbWl0dGVlLW5vbWluYXRpb25zIj5Db21taXR0ZWUgTm9taW5hdGlvbnM8L2E+PC9saT4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9jb21tdW5pdGllcy9jb21taXR0ZWVzL3N0YW5kYXJkcy1jb21taXR0ZWVzIj5TdGFuZGFyZHMgQ29tbWl0dGVlczwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbW11bml0aWVzL2NvbW1pdHRlZXMvc3RhbmRpbmctY29tbWl0dGVlcyI+U3RhbmRpbmcgQ29tbWl0dGVlczwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbW11bml0aWVzL2NvbW1pdHRlZXMvdGVjaG5pY2FsLWNvbW1pdHRlZXMiPlRlY2huaWNhbCBDb21taXR0ZWVzPC9hPjwvbGk+DQogICAgICAgICAgICA8L3VsPg0KICAgICAgICAgIDwvbGk+PC9kaXY+PGRpdiBjbGFzcz0ibWVnYS1jb2x1bW4iPjxsaSBjbGFzcz0iIj48YSBocmVmPSIvY29tbXVuaXRpZXMvc3R1ZGVudC16b25lIj5TdHVkZW50IFpvbmU8L2E+PHVsIGNsYXNzPSJtZWdhLWNvbHVtbi0taW5zZXQiPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbW11bml0aWVzL3N0dWRlbnQtem9uZS9zdHVkZW50LWFjdGl2aXRpZXMiPlN0dWRlbnQgQWN0aXZpdGllczwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbW11bml0aWVzL3N0dWRlbnQtem9uZS9jb21wZXRpdGlvbnMiPkNvbXBldGl0aW9uczwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbW11bml0aWVzL3N0dWRlbnQtem9uZS9zY2hvbGFyc2hpcHMtYW5kLWdyYW50cyI+U2Nob2xhcnNoaXBzICYgR3JhbnRzPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvY29tbXVuaXRpZXMvc3R1ZGVudC16b25lL3N0dWRlbnQtYnJhbmNoZXMiPlN0dWRlbnQgQnJhbmNoZXM8L2E+PC9saT4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9jb21tdW5pdGllcy9zdHVkZW50LXpvbmUvay0xMi1hY3Rpdml0aWVzIj5LJm5kYXNoOzEyIEFjdGl2aXRpZXM8L2E+PC9saT4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9jb21tdW5pdGllcy9zdHVkZW50LXpvbmUvbWVtYmVyc2hpcC1hbmQtbWVldGluZ3MiPk1lbWJlcnNoaXAgJiBNZWV0aW5nczwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbW11bml0aWVzL3N0dWRlbnQtem9uZS9lZHVjYXRpb25hbC1yZXNvdXJjZXMiPkVkdWNhdGlvbmFsIFJlc291cmNlczwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbW11bml0aWVzL3N0dWRlbnQtem9uZS9zdHVkZW50LWFjdGl2aXRpZXMtcmVzb3VyY2VzIj5TdHVkZW50IEFjdGl2aXRpZXMgUmVzb3VyY2VzPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvY29tbXVuaXRpZXMvc3R1ZGVudC16b25lL3N0dWRlbnQtbmV3cyI+U3R1ZGVudCBOZXdzPC9hPjwvbGk+DQogICAgICAgICAgICA8L3VsPg0KICAgICAgICAgIDwvbGk+PC9kaXY+PGRpdiBjbGFzcz0ibWVnYS1jb2x1bW4iPjxsaSBjbGFzcz0iIj48YSBocmVmPSIvY29tbXVuaXRpZXMveW91bmctZW5naW5lZXJzLWluLWFzaHJhZS15ZWEiPllvdW5nIEVuZ2luZWVycyBpbiBBU0hSQUUgKFlFQSk8L2E+PHVsIGNsYXNzPSJtZWdhLWNvbHVtbi0taW5zZXQiPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbW11bml0aWVzL3lvdW5nLWVuZ2luZWVycy1pbi1hc2hyYWUteWVhL2hvbm9ycy1hbmQtYXdhcmRzIj5Ib25vcnMgJiBBd2FyZHM8L2E+PC9saT4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9jb21tdW5pdGllcy95b3VuZy1lbmdpbmVlcnMtaW4tYXNocmFlLXllYS9yZXNvdXJjZXMiPlJlc291cmNlczwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbW11bml0aWVzL3lvdW5nLWVuZ2luZWVycy1pbi1hc2hyYWUteWVhL3llYS1jb21taXR0ZWUiPllFQSBDb21taXR0ZWU8L2E+PC9saT4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9jb21tdW5pdGllcy95b3VuZy1lbmdpbmVlcnMtaW4tYXNocmFlLXllYS95ZWEtZXZlbnRzLWFuZC1wcm9ncmFtcyI+WUVBIEV2ZW50cyAmIFByb2dyYW1zPC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvRmlsZSBMaWJyYXJ5L01lbWJlcnNoaXAvTWVtYmVyIEJlbmVmaXRzL01lbWJlcnNoaXAgUHJvbW90aW9uIFJlc291cmNlcy9Zb3VuZ0VuZ2luZWVyc2luQVNIUkFFLUd1aWRlLnBkZiI+WUVBIEd1aWRlPC9hPjwvbGk+DQogICAgICAgICAgICA8L3VsPg0KICAgICAgICAgIDwvbGk+PC9kaXY+PGRpdiBjbGFzcz0ibWVnYS1jb2x1bW4iPjxsaSBjbGFzcz0iIj48YSBocmVmPSIvY29tbXVuaXRpZXMvY29sbGVnZS1vZi1mZWxsb3dzIj5Db2xsZWdlIG9mIEZlbGxvd3M8L2E+PC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbW11bml0aWVzL2xpZmUtbWVtYmVycy1jbHViIj5MaWZlIE1lbWJlcnMgQ2x1YjwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvY29tbXVuaXRpZXMvYXNocmFlLWFzc29jaWF0ZS1zb2NpZXR5LWFsbGlhbmNlIj5BU0hSQUUgQXNzb2NpYXRlIFNvY2lldHkgQWxsaWFuY2U8L2E+PC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL2NvbW11bml0aWVzL21lbW9yYW5kYS1vZi11bmRlcnN0YW5kaW5nLW1vdXMiPk1lbW9yYW5kYSBvZiBVbmRlcnN0YW5kaW5nIChNT1VzKTwvYT48L2xpPg0KICAgICAgICA8L2Rpdj4NCiAgICAgIDwvdWw+DQogICAgPC9saT4NCiAgICA8bGkgY2xhc3M9Imhhc0NoaWxkcmVuIGlzLW1lZ2EiPjxhIGhyZWY9Ii9tZW1iZXJzaGlwIj5NZW1iZXJzaGlwPC9hPjx1bD4NCiAgICAgICAgPGRpdiBjbGFzcz0ibWVnYS1jb2x1bW4iPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvbWVtYmVyc2hpcC9tZW1iZXItYmVuZWZpdHMiPk1lbWJlciBCZW5lZml0czwvYT48dWwgY2xhc3M9Im1lZ2EtY29sdW1uLS1pbnNldCI+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvbWVtYmVyc2hpcC9tZW1iZXItYmVuZWZpdHMvbWVtYmVyc2hpcC1wcm9tb3Rpb24tcmVzb3VyY2VzIj5NZW1iZXJzaGlwIFByb21vdGlvbiBSZXNvdXJjZXM8L2E+PC9saT4NCiAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgPC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL21lbWJlcnNoaXAvam9pbiI+Sm9pbjwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvbWVtYmVyc2hpcC9yZW5ldyI+UmVuZXc8L2E+PC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL21lbWJlcnNoaXAvc3BlY2lhbC1tZW1iZXJzaGlwLXByb2dyYW1zIj5TcGVjaWFsIE1lbWJlcnNoaXAgUHJvZ3JhbXM8L2E+PHVsIGNsYXNzPSJtZWdhLWNvbHVtbi0taW5zZXQiPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL21lbWJlcnNoaXAvc3BlY2lhbC1tZW1iZXJzaGlwLXByb2dyYW1zL2dyb3VwcGF5Ij5Hcm91cFBheTwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iaHR0cHM6Ly93d3cuYXNocmFlLm9yZy9tZW1iZXJzaGlwL3NwZWNpYWwtbWVtYmVyc2hpcC1wcm9ncmFtcyN5ZWEiIHRhcmdldD0iX2JsYW5rIj5ZRUEgPGkgY2xhc3M9Imljb24tbGluay1leHQgaWNvbi0tZW1wdHkiPjwvaT48L2E+PC9saT4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFzaHJhZS5vcmcvbWVtYmVyc2hpcC9zcGVjaWFsLW1lbWJlcnNoaXAtcHJvZ3JhbXMjc21hcnRzdGFydCIgdGFyZ2V0PSJfYmxhbmsiPlNtYXJ0U3RhcnQgPGkgY2xhc3M9Imljb24tbGluay1leHQgaWNvbi0tZW1wdHkiPjwvaT48L2E+PC9saT4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFzaHJhZS5vcmcvbWVtYmVyc2hpcC9zcGVjaWFsLW1lbWJlcnNoaXAtcHJvZ3JhbXMjZGV2ZWNvbiIgdGFyZ2V0PSJfYmxhbmsiPkRldmVsb3BpbmcgRWNvbm9taWVzIDxpIGNsYXNzPSJpY29uLWxpbmstZXh0IGljb24tLWVtcHR5Ij48L2k+PC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvbWVtYmVyc2hpcC9zcGVjaWFsLW1lbWJlcnNoaXAtcHJvZ3JhbXMvY2lic2UtYXNocmFlLW1lbWJlcnNoaXAiPkNJQlNFL0FTSFJBRSBNZW1iZXJzaGlwPC9hPjwvbGk+DQogICAgICAgICAgICA8L3VsPg0KICAgICAgICAgIDwvbGk+PC9kaXY+PGRpdiBjbGFzcz0ibWVnYS1jb2x1bW4iPjxsaSBjbGFzcz0iIj48YSBocmVmPSIvbWVtYmVyc2hpcC9teS1hc2hyYWUiPk15IEFTSFJBRTwvYT48dWwgY2xhc3M9Im1lZ2EtY29sdW1uLS1pbnNldCI+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvbWVtYmVyc2hpcC9teS1hc2hyYWUvY29ubmVjdC1hLWNvbGxlYWd1ZSI+Q29ubmVjdC1hLUNvbGxlYWd1ZTwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL21lbWJlcnNoaXAvbXktYXNocmFlL215LWNvbW11bml0eSI+TXkgQ29tbXVuaXR5PC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvbWVtYmVyc2hpcC9teS1hc2hyYWUvbXktcGFydGljaXBhdGlvbiI+TXkgUGFydGljaXBhdGlvbjwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL21lbWJlcnNoaXAvbXktYXNocmFlL215LXByb2Zlc3Npb25hbC1kZXZlbG9wbWVudCI+TXkgUHJvZmVzc2lvbmFsIERldmVsb3BtZW50PC9hPjwvbGk+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvbWVtYmVyc2hpcC9teS1hc2hyYWUvbXktdGVjaG5pY2FsLXJlc291cmNlcyI+TXkgVGVjaG5pY2FsIFJlc291cmNlczwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iL21lbWJlcnNoaXAvbXktYXNocmFlL3JlbmV3LW15LW1lbWJlcnNoaXAiPlJlbmV3IE15IE1lbWJlcnNoaXA8L2E+PC9saT4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9Ii9tZW1iZXJzaGlwL215LWFzaHJhZS91cGdyYWRlLW15LW1lbWJlcnNoaXAiPlVwZ3JhZGUgTXkgTWVtYmVyc2hpcDwvYT48L2xpPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiI+PGEgaHJlZj0iaHR0cHM6Ly9ld2ViLmFzaHJhZS5vcmcvZXdlYi9keW5hbWljcGFnZS5hc3B4P3dlYmNvZGU9QVNIUkFFSUJJSSIgdGFyZ2V0PSJfYmxhbmsiPk1hbmFnZSBNeSBNZW1iZXJzaGlwICA8aSBjbGFzcz0iaWNvbi1saW5rLWV4dCBpY29uLS1lbXB0eSI+PC9pPjwvYT48L2xpPg0KICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICA8L2xpPjwvZGl2PjxkaXYgY2xhc3M9Im1lZ2EtY29sdW1uIj48bGkgY2xhc3M9IiI+PGEgaHJlZj0iL21lbWJlcnNoaXAvaG9ub3JzLWFuZC1hd2FyZHMiPkhvbm9ycyAmIEF3YXJkczwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvbWVtYmVyc2hpcC9tZW1iZXJzaGlwLWZhcXMiPk1lbWJlcnNoaXAgRkFRczwvYT48L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iIj48YSBocmVmPSIvbWVtYmVyc2hpcC9sb2dvLW1lcmNoYW5kaXNlIj5Mb2dvIE1lcmNoYW5kaXNlPC9hPjwvbGk+DQogICAgICAgIDwvZGl2Pg0KICAgICAgPC91bD4NCiAgICA8L2xpPg0KICA8L3VsPjwvbmF2PjxkaXYgY2xhc3M9Im1vYmlsZURyYXdlclRvZ2dsZSBkcmF3ZXJUb2dnbGUiIGRhdGEtZm9yPSJnbG9iYWxzLW1vYmlsZSIgZGF0YS1tb2JpbGU9InRydWUiPjwvZGl2PmQCAw9kFgICAQ8PFgQfCQUKQnJlYWRjcnVtYh8KAgJkFgIFBWN0bDAwD2QWAmYPFgIfCwWaATx1bCBjbGFzcz0ibmF2U2Vjb25kYXJ5LWJyZWFkY3J1bWIiPg0KICA8bGk+PGEgaHJlZj0iL2hvbWUiPkhvbWU8L2E+PC9saT4NCiAgPGxpIGNsYXNzPSJhY3RpdmUiPjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSI+QVNIUkFFSm91cm5hbDwvYT48L2xpPg0KPC91bD5kAgUPZBYCZg9kFgIFBWN0bDAwD2QWAmYPFgIfCwUhQVNIUkFFIEpvdXJuYWwgUG9kY2FzdCBFcGlzb2RlIDQxZAIJD2QWCGYPZBYCBQVjdGwwMA8PFgIfCwWPPDxwPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFzaHJhZS5vcmcvbmV3cy9hc2hyYWVqb3VybmFsL2FzaHJhZS1qb3VybmFsLXBvZGNhc3QiPiZuYnNwOyYjODU5MjsgQWxsIEVwaXNvZGVzJm5ic3A7PC9hPjwvcD4KPHA+PC9wPgo8ZGl2IGlkPSJidXp6c3Byb3V0LXBsYXllci0xNTg0OTIzNiI+PC9kaXY+CjxzY3JpcHQgc3JjPSJodHRwczovL3d3dy5idXp6c3Byb3V0LmNvbS8xNzkwNjUyL2VwaXNvZGVzLzE1ODQ5MjM2LTQxLW1hY2hpbmUtbGVhcm5pbmctaW4taHZhYy1hcHBsaWNhdGlvbnMuanM/Y29udGFpbmVyX2lkPWJ1enpzcHJvdXQtcGxheWVyLTE1ODQ5MjM2JnBsYXllcj1zbWFsbCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CjxwPjwvcD4KPHAgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbi10b3A6IDBweDsgbWFyZ2luLWJvdHRvbTogMS4zcmVtOyBjb2xvcjogcmdiKDczLCA3MywgNzYpOyBmb250LWZhbWlseTogYWt6aWRlbnotZ3JvdGVzaywgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiAzMDA7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1hbGlnbjogY2VudGVyOyI+PGltZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYm9yZGVyLXdpZHRoOiAwcHg7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWF4LXdpZHRoOiAxMDAlOyBoZWlnaHQ6IDM1OXB4OyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB3aWR0aDogMjY5cHg7IiBhbHQ9Ik1hY2hpbmUgTGVhcm5pbmcgaW4gSFZBQyBBcHBsaWNhdGlvbnMiIHNyYz0iaHR0cHM6Ly93d3cuYXNocmFlLm9yZy9pbWFnZSUyMGxpYnJhcnkvbWFpbiUyMG5hdi90ZWNobmljYWwlMjByZXNvdXJjZXMvYXNocmFlJTIwam91cm5hbC9waG90by1taWNoYWVsLWJlcmdlci5qcGciIGRhdGEtYW1wLWhlaWdodD0iMTIwMCIgZGF0YS1hbXAtd2lkdGg9IjEyMDAiPjwvcD4KPHAgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbi10b3A6IDBweDsgbWFyZ2luLWJvdHRvbTogMS4zcmVtOyBjb2xvcjogcmdiKDczLCA3MywgNzYpOyBmb250LWZhbWlseTogYWt6aWRlbnotZ3JvdGVzaywgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiAzMDA7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1hbGlnbjogY2VudGVyOyI+PGVtIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+TWljaGFlbCBCZXJnZXIsIE1lbWJlciBBU0hSQUU8L2VtPjwvcD4KPGgxIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW4tdG9wOiAwcHg7IG1hcmdpbi1ib3R0b206IDEuM3JlbTsgZm9udC1mYW1pbHk6IGFremlkZW56LWdyb3Rlc2stY29uZGVuc2VkLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMi4yNXJlbTsgbGluZS1oZWlnaHQ6IDEuMjsgY29sb3I6IHJnYig3MywgNzMsIDc2KTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyB0ZXh0LWFsaWduOiBjZW50ZXI7IiBkYXRhLXBtLXNsaWNlPSIxIDEgW10iPjxzcGFuIGNsYXNzPSJ1aS1wcm92aWRlciBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IHogYWIgYWMgYWUgYWYgYWcgYWggYWkgYWogYWsiIGRpcj0ibHRyIj5NYWNoaW5lIExlYXJuaW5nIGluIEhWQUMgQXBwbGljYXRpb25zPC9zcGFuPjwvaDE+CjxwIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW4tdG9wOiAwcHg7IG1hcmdpbi1ib3R0b206IDEuM3JlbTsgY29sb3I6IHJnYig3MywgNzMsIDc2KTsgZm9udC1mYW1pbHk6IGFremlkZW56LWdyb3Rlc2ssIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogMzAwOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtYWxpZ246IGNlbnRlcjsiPk1hY2hpbmUgbGVhcm5pbmcgKE1MKSBpcyBvbmUgb2YgdGhlIGRlZmluaW5nIHRlY2hub2xvZ2llcyBvZiBvdXIgZXJhLCB5ZXQgaXRzIGFwcGxpY2F0aW9uIHRvIEhWQUMgY29udHJvbHMgaXMgc3RpbGwgaW4gaXRzIGluZmFuY3kuIEpvaW4gPGVtPkFTSFJBRSBKb3VybmFsPC9lbT4gTWFuYWdpbmcgRWRpdG9yIEtlbGx5IEJhcnJhemEgYW5kIE1pY2hhZWwgQmVyZ2VyLCBNZW1iZXIgQVNIUkFFLCBhcyB0aGV5IGRpc2N1c3MgdGhlIHVzZSBvZiBNTCBpbiBIVkFDIGFuZCBob3cgdGhlIHRlY2hub2xvZ3kgY2FuIHBvdGVudGlhbGx5IG9wdGltaXplIEhWQUMgb3BlcmF0aW9ucyB0byByZWR1Y2UgZW5lcmd5IGNvbnN1bXB0aW9uLjwvcD4KPGg1IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW4tdG9wOiAwcHg7IG1hcmdpbi1ib3R0b206IDEuM3JlbTsgZm9udC1mYW1pbHk6IGFremlkZW56LWdyb3Rlc2stY29uZGVuc2VkLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMS4yNXJlbTsgbGluZS1oZWlnaHQ6IDEuMzsgY29sb3I6IHJnYig3MywgNzMsIDc2KTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij48c3BhbiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAxOHB4OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij48c3BhbiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiIGRpcj0ibHRyIj5IYXZlIGFueSBncmVhdCBpZGVhcyBmb3IgdGhlIHNob3c/IENvbnRhY3QgdGhlJm5ic3A7PGVtIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+QVNIUkFFIEpvdXJuYWw8L2VtPiZuYnNwO1BvZGNhc3QgdGVhbSBhdCZuYnNwOzxhIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBjdXJzb3I6IHBvaW50ZXI7IHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lOyBjb2xvcjogcmdiKDAsIDE3NCwgMjE2KTsiIHRhcmdldD0iX2JsYW5rIiBocmVmPSJtYWlsdG86cG9kY2FzdEBhc2hyYWUub3JnIj5wb2RjYXN0QGFzaHJhZS5vcmc8L2E+LiZuYnNwOzwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oNT4KPHAgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbi10b3A6IDBweDsgbWFyZ2luLWJvdHRvbTogMS4zcmVtOyBjb2xvcjogcmdiKDczLCA3MywgNzYpOyBmb250LWZhbWlseTogYWt6aWRlbnotZ3JvdGVzaywgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiAzMDA7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1hbGlnbjogY2VudGVyOyI+PHNwYW4gc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMThweDsiPjxzcGFuIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDE0cHg7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXdlaWdodDogYm9sZDsiPkludGVyZXN0ZWQgaW4gcmVhY2hpbmcgdGhlIGdsb2JhbCBIVkFDUiBlbmdpbmVlcmluZyBsZWFkZXJzIHdpdGggb25lIHByb2dyYW0/Jm5ic3A7PC9zdHJvbmc+PC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAxOHB4OyI+PHNwYW4gc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMTRweDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtd2VpZ2h0OiBib2xkOyI+Q29udGFjdCBHcmVnIE1hcnRpbiBhdCAwMSA2NzgtNTM5LTExNzQgfCZuYnNwOzxhIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBjdXJzb3I6IHBvaW50ZXI7IHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lOyBjb2xvcjogcmdiKDAsIDE3NCwgMjE2KTsiIGhyZWY9Im1haWx0bzpnbWFydGluQGFzaHJhZS5vcmciPmdtYXJ0aW5AYXNocmFlLm9yZzwvYT4uPC9zdHJvbmc+PC9zcGFuPjwvc3Bhbj48L3A+CjxoNiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luLXRvcDogMHB4OyBtYXJnaW4tYm90dG9tOiAxLjNyZW07IGZvbnQtZmFtaWx5OiBha3ppZGVuei1ncm90ZXNrLWNvbmRlbnNlZCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDFyZW07IGxpbmUtaGVpZ2h0OiAxLjYyNTsgY29sb3I6IHJnYig3MywgNzMsIDc2KTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij5BdmFpbGFibGUgb246ICZuYnNwOzxhIGhyZWY9Imh0dHBzOi8vb3Blbi5zcG90aWZ5LmNvbS9lcGlzb2RlLzExSzJMYTQ0ZzFnWFBneWI1N3ZUQ1MiIHRhcmdldD0iX2JsYW5rIj48aW1nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBib3JkZXItd2lkdGg6IDBweDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtYXgtd2lkdGg6IDEwMCU7IGhlaWdodDogYXV0bzsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsiIGhlaWdodD0iNDAiIHdpZHRoPSI0MCIgYWx0PSJTcG90aWZ5IiBzcmM9Imh0dHBzOi8vd3d3LmFzaHJhZS5vcmcvaW1hZ2UlMjBsaWJyYXJ5L21haW4lMjBuYXYvdGVjaG5pY2FsJTIwcmVzb3VyY2VzL2FzaHJhZSUyMGpvdXJuYWwvc3BvdGlmeV9pY29uX3JnYl9ncmVlbi5wbmciPjwvYT4gJm5ic3A7PGEgaHJlZj0iaHR0cHM6Ly9mZWVkcy5idXp6c3Byb3V0LmNvbS8xNzkwNjUyLnJzcyIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJvcmRlci13aWR0aDogMHB4OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1heC13aWR0aDogMTAwJTsgaGVpZ2h0OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBmb250LXNpemU6IDFlbTsiIGhlaWdodD0iMzkiIHdpZHRoPSIxNjEiIGFsdD0iQXBwbGUgUG9kY2FzdHMiIHNyYz0iaHR0cHM6Ly93d3cuYXNocmFlLm9yZy9pbWFnZSUyMGxpYnJhcnkvbWFpbiUyMG5hdi90ZWNobmljYWwlMjByZXNvdXJjZXMvYXNocmFlJTIwam91cm5hbC91c191a19hcHBsZV9wb2RjYXN0c19saXN0ZW5fYmFkZ2VfcmdiLTEtLnBuZyI+PC9hPiZuYnNwOyZuYnNwOzwvaDY+CjxoNiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luLXRvcDogMHB4OyBtYXJnaW4tYm90dG9tOiAxLjNyZW07IGZvbnQtZmFtaWx5OiBha3ppZGVuei1ncm90ZXNrLWNvbmRlbnNlZCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDFyZW07IGxpbmUtaGVpZ2h0OiAxLjYyNTsgY29sb3I6IHJnYig3MywgNzMsIDc2KTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij5BbmQgb3RoZXIgcGxhdGZvcm1zLjwvaDY+CjxoNiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luLXRvcDogMHB4OyBtYXJnaW4tYm90dG9tOiAxLjNyZW07IGZvbnQtZmFtaWx5OiBha3ppZGVuei1ncm90ZXNrLWNvbmRlbnNlZCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDFyZW07IGxpbmUtaGVpZ2h0OiAxLjYyNTsgY29sb3I6IHJnYig3MywgNzMsIDc2KTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij48YSBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgY3Vyc29yOiBwb2ludGVyOyB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTsgY29sb3I6IHJnYigwLCAxNzQsIDIxNik7IiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly9mZWVkcy5idXp6c3Byb3V0LmNvbS8xNzkwNjUyLnJzcyI+PGltZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYm9yZGVyLXdpZHRoOiAwcHg7IGRpc3BsYXk6IGJsb2NrOyBtYXgtd2lkdGg6IDEwMCU7IGhlaWdodDogYXV0bzsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdodDogYXV0bzsiIGhlaWdodD0iMzQiIHdpZHRoPSIzNCIgYWx0PSJSU1MgRmVlZCIgc3JjPSJodHRwczovL3d3dy5hc2hyYWUub3JnL2ltYWdlJTIwbGlicmFyeS9tYWluJTIwbmF2L3RlY2huaWNhbCUyMHJlc291cmNlcy9hc2hyYWUlMjBqb3VybmFsL3NvY2lhbF9zdHlsZV8zX3Jzcy01MTItMS5wbmciPjwvYT48L2g2Pgo8aDYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbi10b3A6IDBweDsgbWFyZ2luLWJvdHRvbTogMS4zcmVtOyBmb250LWZhbWlseTogYWt6aWRlbnotZ3JvdGVzay1jb25kZW5zZWQsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxcmVtOyBsaW5lLWhlaWdodDogMS42MjU7IGNvbG9yOiByZ2IoNzMsIDczLCA3Nik7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1hbGlnbjogY2VudGVyOyI+PGEgaHJlZj0iaHR0cHM6Ly93d3cuYnV6enNwcm91dC5jb20vMTc5MDY1Mi9lcGlzb2Rlcy8xNTg0OTIzNi00MS1tYWNoaW5lLWxlYXJuaW5nLWluLWh2YWMtYXBwbGljYXRpb25zLm1wMz9kb3dubG9hZD10cnVlIiB0YXJnZXQ9Il9ibGFuayI+RG93bmxvYWQgdGhlIGVwaXNvZGUuPC9hPjwvaDY+CjxociBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luLWJvdHRvbTogMS41NjI1cmVtOyBjbGVhcjogYm90aDsgY29sb3I6IHJnYigyMzQsIDIzNCwgMjM0KTsgYm9yZGVyLXN0eWxlOiBub25lIG5vbmUgc29saWQ7IGJvcmRlci1ib3R0b20td2lkdGg6IDFweDsgZm9udC1mYW1pbHk6IGFremlkZW56LWdyb3Rlc2ssIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogMzAwOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7Ij4KPGg1IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW4tdG9wOiAwcHg7IG1hcmdpbi1ib3R0b206IDEuM3JlbTsgZm9udC1mYW1pbHk6IGFremlkZW56LWdyb3Rlc2stY29uZGVuc2VkLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMS4yNXJlbTsgbGluZS1oZWlnaHQ6IDEuMzsgY29sb3I6IHJnYig3MywgNzMsIDc2KTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij5EbyB5b3UgaGF2ZSBxdWVzdGlvbnMgb3IgY29tbWVudHM/Jm5ic3A7PGEgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGN1cnNvcjogcG9pbnRlcjsgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IG5vbmU7IGNvbG9yOiByZ2IoMCwgMTc0LCAyMTYpOyIgdGl0bGU9IkFTSFJBRSBKb3VybmFsIFBvZGNhc3QgRmVlZGJhY2siIGhyZWY9Im1haWx0bzpBU0hSQUVfSm91cm5hbF9OZXdzbGV0dGVyQGFzaHJhZS5vcmciPkxldCB1cyBrbm93ITwvYT48L2g1PmRkAgEPZBYCBQVjdGwwMA8PFgIfCwXSBzxkaXYgY2xhc3M9InNlY3Rpb24iPg0KICA8ZGl2IGNsYXNzPSJjb250YWluZWQiPg0KICAgIDx1bCBjbGFzcz0iYWNjb3JkaW9uIj4NCiAgICAgIDxsaT4NCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+R3Vlc3QgQmlvPC9zcGFuPg0KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tY29udGVudCI+PHA+PHN0cm9uZz5NaWNoYWVsIEJlcmdlcjwvc3Ryb25nPiBpcyB0aGUgSGVhZCBvZiBSZXNlYXJjaCAmIERldmVsb3BtZW50IGF0IENvbnNlcnZlIEl0LiBJbiB0aGlzIHJvbGUsIGhlIGxlYWRzIHRoZSBSJkQgZWZmb3J0cyB0byByZXNlYXJjaCwgcHJvdG90eXBlLCB0cmlhbCBhbmQgcHJvZHVjdGl6ZSBtYWNoaW5lIGxlYXJuaW5nIGFsZ29yaXRobXMgZm9yIGFuYWx5dGljcyBhbmQgcmVhbC10aW1lIG9wdGltaXphdGlvbiBvZiBsaXZlIGVxdWlwbWVudCBpbiB0aGUgYnVpbHQgZW52aXJvbm1lbnQsIHdpdGggYXBwbGljYXRpb25zIHJhbmdpbmcgZnJvbSBpbm5vdmF0aXZlIGNoaWxsZXIgcGxhbnQgb3B0aW1pemF0aW9uICYgcHJlZGljdGl2ZSBtYWludGVuYW5jZSB0byBhZHZhbmNlZCBjb250cm9scyBzb2x1dGlvbnMuPC9wPg0KPHA+TWljaGFlbCBncmFkdWF0ZWQgd2l0aCBhIE1hc3RlciBvZiBFbmdpbmVlcmluZyBpbiBGcmFuY2UgYmVmb3JlIGdhaW5pbmcgZXhwZXJpZW5jZSBhdCBhIGxlYWRpbmcgcmVzZWFyY2ggY2VudHJlIGFuZCBpbiBFbnZpcm9ubWVudGFsbHkgU3VzdGFpbmFibGUgRGVzaWduIGNvbnN1bHRhbmN5IGluIFNpbmdhcG9yZS4gSGUgam9pbmVkIENvbnNlcnZlIEl0IGluIDIwMTQsIHdoZXJlIGhlIHJlbGllcyBvbiBtb3JlIHRoYW4gMTIgeWVhcnMgb2YgZXhwZXJpZW5jZSBpbiB0aGUgZmllbGRzIG9mIGVuZXJneSBlZmZpY2llbmN5LCBIVkFDJlIgb3B0aW1pemF0aW9uIGFuZCBkYXRhIHNjaWVuY2UuPC9wPjwvZGl2Pg0KICAgICAgPC9saT4NCiAgICA8L3VsPg0KICA8L2Rpdj4NCjwvZGl2PmRkAgIPZBYCBQVjdGwwMA8PFgIfCwXJBzxkaXYgY2xhc3M9InNlY3Rpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lZCI+CiAgICA8dWwgY2xhc3M9ImFjY29yZGlvbiI+CiAgICAgIDxsaT4KICAgICAgICA8c3Bhbj5Ib3N0IEJpbzwvc3Bhbj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tY29udGVudCI+PHA+PC9wPgo8cD48c3Ryb25nPjxpbWcgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IDMwMXB4OyB3aWR0aDogMzUzcHg7IG1hcmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1dG87IiBzcmM9Imh0dHBzOi8vd3d3LmFzaHJhZS5vcmcvaW1hZ2UlMjBsaWJyYXJ5L21haW4lMjBuYXYvdGVjaG5pY2FsJTIwcmVzb3VyY2VzL2FzaHJhZSUyMGpvdXJuYWwvYmFycmF6YS5qcGciIGFsdCB3aWR0aD0iMzE2IiBoZWlnaHQ9IjMxNiIgZGF0YS1hbXAtaGVpZ2h0PSIyNjUiIGRhdGEtYW1wLXdpZHRoPSIyOTgiPjwvc3Ryb25nPjwvcD4KPHAgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPjxzdHJvbmc+S2VsbHkgQmFycmF6YSwgPGVtPkFTSFJBRSBKb3VybmFsPC9lbT4gTWFuYWdpbmcgRWRpdG9yPC9zdHJvbmc+PC9wPgo8cCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+PHN0cm9uZz5LZWxseSBCYXJyYXphPC9zdHJvbmc+IGlzIHRoZSBNYW5hZ2luZyBFZGl0b3Igb2YgPGk+QVNIUkFFIEpvdXJuYWw8L2k+LiBTaGUgaGFzIGV4dGVuc2l2ZSBleHBlcmllbmNlIGluIHdyaXRpbmcsIGVkaXRpbmcgYW5kIHJlcG9ydGluZyBpbiBzY2llbnRpZmljIHB1Ymxpc2hpbmcuIEhlciBjYXJlZXIgaGFzIHNwYW5uZWQgZmVkZXJhbCBsYXcsIG1lZGljaW5lLCByZXNlYXJjaCwgZW5naW5lZXJpbmcgYW5kIHB1YmxpYy9tZWRpYSByZWxhdGlvbnMuIEtlbGx5IGxpdmVzIGluIGhlciBob21ldG93biBvZiBBdGxhbnRhLCBHZW9yZ2lhLiZuYnNwOzwvcD48L2Rpdj4KICAgICAgPC9saT4KICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PmRkAgMPZBYCBQVjdGwwMA8PFgIfCwWz7gI8ZGl2IGNsYXNzPSJzZWN0aW9uIj4NCiAgPGRpdiBjbGFzcz0iY29udGFpbmVkIj4NCiAgICA8dWwgY2xhc3M9ImFjY29yZGlvbiI+DQogICAgICA8bGk+DQogICAgICAgIDxzcGFuIGNsYXNzPSIiPlRyYW5zY3JpcHRpb248L3NwYW4+DQogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1jb250ZW50Ij48cD48c3Ryb25nPkFTSFJBRSBKb3VybmFsOjwvc3Ryb25nPjwvcD4NCjxwPkFTSFJBRSBKb3VybmFsIHByZXNlbnRzLjwvcD4NCjxwPjxzdHJvbmc+S2VsbHkgQmFycmF6YTo8L3N0cm9uZz48L3A+DQo8cD5XZWxjb21lIHRvIEFTSFJBRSBKb3VybmFsIHBvZGNhc3QuIEknbSB5b3VyIGhvc3QsIEtlbGx5IEJhcnJhemEsIG1hbmFnaW5nIGVkaXRvci4gT24gdGhpcyBlcGlzb2RlLCBJJ20gaW50ZXJ2aWV3aW5nIE1pY2hhZWwgQmVyZ2VyLCBoZWFkIG9mIHJlc2VhcmNoIGFuZCBkZXZlbG9wbWVudCBhdCBDb25zZXJ2ZSBJdCBhbmQgYXV0aG9yIG9mIHRoZSBhcnRpY2xlLCBMZXZlcmFnaW5nIE1hY2hpbmUgTGVhcm5pbmcgdG8gT3B0aW1pemUgQ2hpbGxlciBQbGFudCBDb250cm9scywgcHVibGlzaGVkIGluIHRoZSBBdWd1c3QsIDIwMjQgQVNIUkFFIEpvdXJuYWwuIEhleSBNaWNoYWVsLjwvcD4NCjxwPjxzdHJvbmc+TWljaGFlbCBCZXJnZXI6PC9zdHJvbmc+PC9wPg0KPHA+SGV5LCBob3cgYXJlIHlvdSBLZWxseT88L3A+DQo8cD48c3Ryb25nPktlbGx5IEJhcnJhemE6PC9zdHJvbmc+PC9wPg0KPHA+SSBhbSBnb29kLiBIb3cgYXJlIHlvdSBkb2luZz88L3A+DQo8cD48c3Ryb25nPk1pY2hhZWwgQmVyZ2VyOjwvc3Ryb25nPjwvcD4NCjxwPlllYWgsIGdvb2QsIHRoYW5rcy4gR3JlYXQgdG8gYmUgaGVyZSB0b2RheS4gSXQncyBhIGxpdHRsZSBiaXQgZWFybHkgaGVyZSBpbiBNZWxib3VybmUsIGJ1dCBJIHRoaW5rIGl0J2xsIGJlIGFuIGludGVyZXN0aW5nIG9uZSwgc28gSSdtIGxvb2tpbmcgZm9yd2FyZCB0byBpdC48L3A+DQo8cD48c3Ryb25nPktlbGx5IEJhcnJhemE6PC9zdHJvbmc+PC9wPg0KPHA+WWVzLCBNaWNoYWVsIGlzIHdvcmtpbmcgd2l0aCB1cy4gV2UncmUgb24gdGhlIEVhc3QgY29hc3QgaW4gdGhlIFVTIGFuZCBoZSdzIGluIE1lbGJvdXJuZSBBdXN0cmFsaWEsIHNvIHRoaXMgd2FzIGEgYml0IG9mIGEgbG9naXN0aWNzIHF1ZXN0aW9uIGZvciB0aGlzIHBvZGNhc3Qgb24gbWFjaGluZSBsZWFybmluZywgQUkgYW5kIG9wdGltaXppbmcgY2hpbGxlciBwbGFudHMgYW5kIEhWQUMgYXBwbGljYXRpb25zLiBTbyB3ZSdsbCBqdXN0IHN0YXJ0LiBXaGF0IGlzIHlvdXIgYmFja2dyb3VuZCBpbiB0aGUgaW5kdXN0cnkgd2l0aCBIVkFDLCBNaWNoYWVsPzwvcD4NCjxwPjxzdHJvbmc+TWljaGFlbCBCZXJnZXI6PC9zdHJvbmc+PC9wPg0KPHA+V2VsbCwgaXQgc3RhcnRzIGZyb20gcXVpdGUgYSB3aGlsZSBhZ28gbm93LCBJIGd1ZXNzIGluIHVuaXZlcnNpdHkgSSB3YXMgYWx3YXlzIGludGVyZXN0ZWQgaW4gc3VzdGFpbmFiaWxpdHkgYW5kIHJlbmV3YWJsZSBlbmVyZ3ksIGVuZXJneSBlZmZpY2llbmN5LCBhbmQgZnJvbSB0aG9zZSBkYXlzIEkgc3RhcnRlZCB0byBsb29rIGludG8gSFZBQyBhbmQgcmVuZXdhYmxlIGVuZXJneS4gQW5kIHRoZW4sIEkgc3RhcnRlZCBteSBjYXJlZXIgaW4gU2luZ2Fwb3JlLiBJIHdvcmtlZCBpbiBhIHJlc2VhcmNoIGNlbnRlciwgd2hlcmUgd2UgbG9va2VkIGF0IHNtYXJ0IGdyaWQgYW5kIHRoZW4gbW92ZWQgdG8gZ3JlZW4gYnVpbGRpbmcgY29uc3VsdGFuY3ksIEVTRCBjb25zdWx0YW5jeS4gU28gdGhhdCdzIHdoZXJlIEkgcmVhbGx5IHN0YXJ0ZWQgdG8gZ2V0IGludG8gSFZBQyBhbmQgbGVhcm4gbW9yZSBhYm91dCBob3cgd2UgY2FuIHJlZHVjZSBlbmVyZ3kgY29uc3VtcHRpb24gaW4gYnVpbGRpbmdzLiBBbmQgc2luY2UgdGhlbiBmb3IgdGhlIHBhc3QgY2xvc2UgdG8gMTQgeWVhcnMsIGhhdmUgYmVlbiB3b3JraW5nIGluIHRoZSBIVkFDIGluZHVzdHJ5LiBBZ2FpbiwgdHJ5aW5nIHRvIHJlZHVjZSBlbmVyZ3kgY29uc3VtcHRpb24gaGFzIGJlZW4gYW4gaW50ZXJlc3QgYW5kIGxvb2tpbmcgYXQsIGFzIHdlbGwgYXMgaG93IHdlIGNhbiBpbnRlZ3JhdGUgcmVuZXdhYmxlIGluIGJ1aWxkaW5ncywgbWFrZSBpdCBhIG1vcmUgZWZmaWNpZW50IHN5c3RlbS48L3A+DQo8cD48c3Ryb25nPktlbGx5IEJhcnJhemE6PC9zdHJvbmc+PC9wPg0KPHA+T2theSwgZ3JlYXQuIFdoYXQncyB5b3VyIGV4cGVyaWVuY2UgYmVlbiBsaWtlIHdpdGggQVNIUkFFPzwvcD4NCjxwPjxzdHJvbmc+TWljaGFlbCBCZXJnZXI6PC9zdHJvbmc+PC9wPg0KPHA+V2VsbCwgSSBndWVzcyBpdCdzIGFuIGludGVyZXN0aW5nIG9uZSBiZWNhdXNlIG9idmlvdXNseSwgSSBoYXZlIG5ldmVyIGxpdmVkIGluIHRoZSBVUywgYnV0IEkgdGhpbmsgaXQgZG9lcyB0ZWxsIG9mIHRoZSBpbmZsdWVuY2UgQVNIUkFFIGhhcyB0aGF0IHNpbmNlIHRoZSBlYXJseSBkYXlzIGluIHVuaXZlcnNpdHksIEkndmUgYmVlbiBleHBvc2VkIHRvIEFTSFJBRS4gSSByZW1lbWJlciBJIGRpZCBleGNoYW5nZSBpbiBEZW5tYXJrIGFuZCBJIGhhZCBzb21lIGNvdXJzZXMgb24gSFZBQyBhbmQgdGhleSB3ZXJlIGFscmVhZHkgdGFsa2luZyBhYm91dCBBU0hSQUUgc3RhbmRhcmRzLiBBbmQgdGhlbiwgd2hlbiBJIHdvcmtlZCBpbiBTaW5nYXBvcmUsIGVuZXJneSBtb2RlbGluZyBmb3IgZ3JlZW4gYnVpbGRpbmdzLCB3ZSBoYWQgdG8gcmVmZXIgdG8gdGhlIEFTSFJBRSA5MC4xIHN0YW5kYXJkIGEgbG90LiBJIHJlbWVtYmVyIHRoaXMgb25lIHF1aXRlIHdlbGwuIEFuZCB0aGVuIHNpbmNlIHRoZW4sIG9idmlvdXNseSwgZXZlbiBpbiBBdXN0cmFsaWEgaXQgc3RpbGwsIHdlIGhhdmUgb3VyIG93biB2ZXJzaW9uLCBJIGd1ZXNzLCBvZiBBU0hSQUUgY2FsbGVkIEFJUkFILCBidXQgdGhlIEFTSFJBRSBzdGFuZGFyZHMgYW5kIHRoZSBndWlkZWxpbmVzIGFyZSBzdGlsbCB2ZXJ5IG11Y2ggZm9sbG93ZWQgYW5kIHVzZWQgYXMgYSBiYXNpcy48L3A+DQo8cD5BbmQgbW9yZSByZWNlbnRseSBJIGhhZCBhIGNoYW5jZSBvZiBwcmVzZW50aW5nIGEgY29uZmVyZW5jZSBwYXBlciwgYXQgdGhlIFRhbXBhIGNvbmZlcmVuY2UgbGFzdCB5ZWFyIG9uIGludGVncmF0aW5nIHJlbmV3YWJsZSBlbmVyZ3kgaW50byBIVkFDIHN5c3RlbSBhbmQgb3B0aW1pemluZyB0aGVtLiBBbmQgZXZlbiBtb3JlIHJlY2VudGx5LCBJIGhhZCB0aGUgY2hhbmNlIG9mIGhhdmluZyBhbiBhcnRpY2xlIHB1Ymxpc2hlZCBpbiB0aGUgQVNIUkFFIEpvdXJuYWwuIFNvIGl0J3MgYmVlbiBxdWl0ZSBleGNpdGluZyBhbmQgaXQncyBiZWVuIGEgbG9uZyBqb3VybmV5IGluIHBhcmFsbGVsIHdpdGggQVNIUkFFLCBJIGd1ZXNzIGZvciBtZS48L3A+DQo8cD48c3Ryb25nPktlbGx5IEJhcnJhemE6PC9zdHJvbmc+PC9wPg0KPHA+QW5kIHdlIGFyZSB2ZXJ5IGhhcHB5IHRvIGhhdmUgeW91IGFzIG9uZSBvZiBvdXIgbWVtYmVycyBhdCBBU0hSQUUuPC9wPg0KPHA+PHN0cm9uZz5NaWNoYWVsIEJlcmdlcjo8L3N0cm9uZz48L3A+DQo8cD5UaGFua3MuPC9wPg0KPHA+PHN0cm9uZz5LZWxseSBCYXJyYXphOjwvc3Ryb25nPjwvcD4NCjxwPlNvIGluIHRoYXQgYXJ0aWNsZSB0aGF0IHdhcyBwdWJsaXNoZWQgaW4gQXVndXN0IG9mIHRoaXMgeWVhciwgeW91IHN0YXRlIG9uZSBjb21tb24gcXVlc3Rpb24sIHdoZW4gY29uc2lkZXJpbmcgYXBwbHlpbmcgQUkgYWxnb3JpdGhtcyB0byBIVkFDIGNvbnRyb2wgc3lzdGVtcyBpcyB3aGV0aGVyIHRoZXkgd2lsbCBpbXByb3ZlIHRoZSBvcGVyYXRpb24gYmV5b25kIHNpbXBseSByZXBsaWNhdGluZyB0aGUgc3RyYXRlZ2llcyBvZiBhIHdlbGwtZGVzaWduZWQgY29udmVudGlvbmFsIGJ1aWxkaW5nIGF1dG9tYXRpb24gc3lzdGVtLiBEbyB5b3Ugd2FudCB0byBleHBhbmQgb24gdGhhdD88L3A+DQo8cD48c3Ryb25nPk1pY2hhZWwgQmVyZ2VyOjwvc3Ryb25nPjwvcD4NCjxwPlllYWgsIGZvciBzdXJlLiBJIHRoaW5rLCBJIGd1ZXNzIHRoYXQncyB0aGUgbW9zdCBiYXNpYyBwb2ludC4gSSB0aGluayB3aGVuIHdlIGFwcGx5IG1hY2hpbmUgbGVhcm5pbmcsIHdlIG5lZWQgdG8gbG9vayBhdCB0aGUgY2hhbGxlbmdlcyB3ZSdyZSB0cnlpbmcgdG8gdGFja2xlIGFuZCBub3QganVzdCB0cnkgdG8gbG9vayBhdCBpdCBhcyBhIGJpZyBibGFjayBib3ggYW5kIGVzc2VudGlhbGx5IGFwcGx5IGRvbWFpbiBrbm93bGVkZ2UgdG8gZmluZCBnb29kIGFwcGxpY2F0aW9ucyBmb3IgbWFjaGluZSBsZWFybmluZywgd2hldGhlciBpdCdzIEhWQUMgb3Igb3RoZXIgYXBwbGljYXRpb25zLiBBbmQgdGhlcmUgYXJlIGFscmVhZHkgYSBsb3Qgb2YgZ29vZCBjb252ZW50aW9uYWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9uIHRvIGNvbnRyb2wgSFZBQyBzeXN0ZW0gdGhhdCBoYXZlIGJlZW4gZGV2aXNlZCBhbmQgZGVzaWduZWQgb3ZlciB0aGUgcGFzdCBmZXcgZGVjYWRlcyBmcm9tIHdoZXRoZXIgaXQgaXMgdHJpYWwgYW5kIGVycm9yIG9yIHNvbWV0aW1lcyBtb3JlIGFkdmFuY2VkIHN0dWRpZXMsIHVzaW5nIG1vZGVsaW5nIG9yIHVzaW5nIGFjdHVhbCBzaXRlIHRyaWFscyBhbmQgZGF0YS48L3A+DQo8cD5BbmQgSSB0aGluayBvbmUgcmVhbGx5IGdvb2QgZXhhbXBsZSBvZiB0aGF0IGlzIHRoZSBBU0hSQUUgR3VpZGVsaW5lIDM2LCB3aGljaCBsYXlzIG91dCBhIGxvdCBvZiB2ZXJ5IGdvb2Qgc3RyYXRlZ2llcyBmb3IgY29udHJvbGxpbmcgSFZBQyBzeXN0ZW1zIGluIGFuIGVmZmljaWVudCB3YXksIGJvdGggaW4gdGVybXMgb2YsIEkgZ3Vlc3MgbWVldGluZyB0aGUgbmVlZHMgb2YgdGhlIGJ1aWxkaW5nIGFuZCByZWR1Y2luZyB0aGUgZW5lcmd5IGNvbnN1bXB0aW9uLiBIb3dldmVyLCB0aGVyZSBhcmUgc29tZSBzY2VuYXJpb3Mgd2hlcmUgSSB0aGluayB0aG9zZSBjb252ZW50aW9uYWwgc3RyYXRlZ2llcyBtYXkgbm90IGFsd2F5cyBiZSB0aGUgYmVzdC4gSSB0aGluayBhIGxvdCBvZiB0aW1lcyB0aGVyZSBhcmUgc29tZSBjYXNlcyB3aGVyZSBpdCBqdXN0IHdvcmtzLCB5b3UgZG9uJ3QgcmVhbGx5IG5lZWQgbW9yZSBwcmVkaWN0aXZlIG1vZGVsaW5nIGJlY2F1c2UgaXQncyBjYXNlcyB3aGVyZSBpdCBnZW5lcmFsaXplIHF1aXRlIHdlbGwgb3ZlciBkaWZmZXJlbnQgdHlwZXMgb2YgYnVpbGRpbmdzLiBTbyB0aGVyZSdzIHF1aXRlIGEgZmV3IGV4YW1wbGVzLiBJIG1lYW4sIG1heWJlIGEgc2ltcGxlIG9uZSB3b3VsZCBiZSB0cnlpbmcgdG8gZG8gb3B0aW1hbCBzdGFydC1zdG9wLjwvcD4NCjxwPkl0J3Mgb2J2aW91c2x5LCBtb3JlIGVmZmljaWVudCB0byBub3QgcnVuIHlvdXIgcGxhbnQgaWYgeW91IGRvbid0IG5lZWQgaXQsIEkgZG9uJ3QgdGhpbmsgeW91IG5lZWQgc3BlY2lhbCBwcmVkaWN0aW9ucyBmb3IgdGhhdC4gQW5vdGhlciBleGFtcGxlIGlzIGZvciBjb29saW5nIHRvd2VyIG9wZXJhdGlvbi4gT2Z0ZW4sIHdlIGZpbmQsIGFuZCBpdCdzIHF1aXRlLCBJIHRoaW5rIHdlbGwgZXN0YWJsaXNoZWQgaW4gdGhlIGluZHVzdHJ5IHRoYXQgb3ZlcmFsbCBpdCdzIGJldHRlciB0byBydW4gbW9yZSBjb29saW5nIHRvd2VycyB1c2luZyB0aGUgZmFuIGFmZmluaXR5IGxhdywgeW91J3JlIGdvaW5nIHRvIHJlZHVjZSB5b3VyIGVuZXJneSBjb25zdW1wdGlvbi4gQW5kIEkgdGhpbmsgbW9zdCB0aW1lcyBmb3IgdGhpcyB0eXBlIG9mIGFwcGxpY2F0aW9uIGl0IGp1c3Qgd29ya3MgYW5kIHRoZXJlJ3Mgbm8gcG9pbnQgdG8gaGF2ZSBhIG1hY2hpbmUgbGVhcm5pbmcgYWxnb3JpdGhtIHRyeWluZyB0byBmaW5kIHRoYXQgZm9yIHlvdSBiZWNhdXNlIHdlIGtub3cgaXQgd29ya3Mgd2VsbC4gSSB0aGluayB3aGVyZSBpdCBtYWtlcyBhIGRpZmZlcmVuY2UgaXMgd2hlcmUgdGhlcmUncyBubyBvbmUgc2l6ZSBmaXQgYWxsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbi4gV2hlcmUgZnJvbSBvbmUgYnVpbGRpbmcgdG8gYW5vdGhlciwgdGhlcmUgYXJlIHNvbWUgdGhpbmdzIHRoYXQgbWFrZSBpdCB0aGF0IHlvdSBuZWVkIHRvIGtub3cgdGhlIGNoYXJhY3RlcmlzdGljIG9mIHlvdXIgc2l0ZSB0byBrbm93IHdoYXQgdGhlIGJlc3Qgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9uIGlzLCB3aGV0aGVyIGl0J3MgYmVjYXVzZSBvZiB0aGUgZXF1aXBtZW50IHBlcmZvcm1hbmNlLCB3aGV0aGVyIGl0J3MgYmVjYXVzZSBvZiB3ZWF0aGVyIG9yIGxvYWQgcmVxdWlyZW1lbnQuPC9wPg0KPHA+SW4gcGFydGljdWxhciwgSSB3b3VsZCBzYXkgY2FzZXMgd2hlcmUgdGhlcmUncyBhIHRyYWRlLW9mZiBiZXR3ZWVuIGVxdWlwbWVudCwgaXMgb2Z0ZW4gdGhlIG9uZXMgd2UgbG9vayBhdC4gRm9yIGluc3RhbmNlLCBpZiB3ZSBsb29rIHRvIGdldCB0aGUgY29vbGluZyB0b3dlcnMsIGFnYWluLCBvbmUgY2FzZSB3aGVyZSBJIHRoaW5rIHByZWRpY3RpdmUgbW9kZWxpbmcgaXMgdXNlZnVsIGlzIHdoZW4gSSB0aGluayBvZiBsZWF2aW5nIGNvb2xpbmcgdG93ZXIgdGVtcGVyYXR1cmUgc2V0IHBvaW50LCBiZWNhdXNlIGlmIHdlIHJlZHVjZSBpdCwgd2UgYXJlIGdvaW5nIHRvIHVzZSBtb3JlIGNvb2xpbmcgdG93ZXIgcG93ZXIsIGJ1dCB3ZSdyZSBnb2luZyB0byB1c2UgbGVzcyBjaGlsbGVyIHBvd2VyLjwvcD4NCjxwPlNvIHdoZXJlIGlzIHRoZSBob2xpc3RpYyBtb3N0IGVmZmljaWVudCBwb2ludD8gSXQncyBub3QgYWx3YXlzIGNsZWFyIGFuZCBmcm9tIG9uZSBidWlsZGluZyB0byBhbm90aGVyIGl0IG1pZ2h0IGNoYW5nZSwgZnJvbSBvbmUgZGF5IHRvIGFub3RoZXIgb24gdGhlIHNhbWUgYnVpbGRpbmcsIGRlcGVuZGluZyBvbiB0aGUgbG9hZCwgZGVwZW5kaW5nIG9uIHRoZSB3ZWF0aGVyLCBpdCBtaWdodCBjaGFuZ2UuIFNvIHRoZXNlIGFyZSB0aGUgYXBwbGljYXRpb25zIHdoZXJlIEkgdGhpbmsgcHJlZGljdGl2ZSBtb2RlbGluZyBvciBtYWNoaW5lIGxlYXJuaW5nIGNhbiByZWFsbHkgbWFrZSBhIGRpZmZlcmVuY2UuIEJ1dCBvbiB0aGUgb3RoZXIgaGFuZCwgdGhlcmUgYXJlIGEgbG90IG9mIHNwZWNpZmljIHNpdHVhdGlvbnMgb3Igc3BlY2lmaWMgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyB3aGVyZSBpdCdzIG5vdCBuZWNlc3NhcmlseSByZXF1aXJlZC4gQW5kIEkgdGhpbmsgd2hlbiBpdCdzIG5vdCByZXF1aXJlZCwgaXQncyBwcm9iYWJseSBub3QgYSBnb29kIGlkZWEgdG8gdHJ5IHRvIGFwcGx5IGl0IGJlY2F1c2UgaXQncyBub3Qgc28gc2ltcGxlLiBJdCByZXF1aXJlcyBhIGxvdCBvZiByZXNlYXJjaC48L3A+DQo8cD5UaGVyZSBpcyBhIGxldmVsIG9mIHJpc2sgaW4gdGVybXMgb2YgZGV2ZWxvcGluZyBzb21ldGhpbmcgdGhhdCdzIHJlbGlhYmxlLiBBbmQgYWxzbywgc29tZXRpbWVzIHRoZXJlIGlzIGFsc28gYSBxdWVzdGlvbiBhYm91dCB0cmFuc3BhcmVuY3kgdG8gdGhlIGVuZCB1c2Vycy4gU28gSSB0aGluayB0aGVyZSdzIG5vIHBvaW50IHRvIG92ZXItZW5naW5lZXIsIGFuZCB0aGlzIG1heSBiZSBzb21ldGltZXMgd2hhdCBjYW4gaGFwcGVuIGFuZCBmb2N1cyBvbmx5IG9uIGFwcGxpY2F0aW9ucyB3aGVyZSBpdCdzIHJlYWxseSByZXF1aXJlZC48L3A+DQo8cD48c3Ryb25nPktlbGx5IEJhcnJhemE6PC9zdHJvbmc+PC9wPg0KPHA+V2hhdCBkbyB5b3Ugc2VlIGFzIHlvdXIgYmlnZ2VzdCBjb25jZXJuIHdoZW4gaXQgY29tZXMgdG8gdXNpbmcgQUkgbWFjaGluZSBsZWFybmluZyBpbiBIVkFDPzwvcD4NCjxwPjxzdHJvbmc+TWljaGFlbCBCZXJnZXI6PC9zdHJvbmc+PC9wPg0KPHA+Rm9sbG93aW5nIG9uIHdoYXQgSSB3YXMgdGFsa2luZyBhYm91dCwgSSB0aGluayB3aGVyZSBmaXJzdCBJIHdvdWxkIHNheSBJIGRvbid0IHRoaW5rIHdlJ3JlIHF1aXRlIGF0IHRoZSBsZXZlbCBhbmQgbWF5YmUgc29tZSBwZW9wbGUgdGhpbmsgZGlmZmVyZW50bHksIGJ1dCB3aGVyZSB3ZSBoYXZlIHRvIHdvcnJ5IGFib3V0IG91ciBidWlsZGluZ3MgYmVjb21pbmcgc2VudGllbnQgYW5kIHJpc2luZyBhZ2FpbnN0IHVzLCBidXQtPC9wPg0KPHA+PHN0cm9uZz5LZWxseSBCYXJyYXphOjwvc3Ryb25nPjwvcD4NCjxwPlRlcm1pbmF0b3IgMiwgU2t5bmV0LjwvcD4NCjxwPjxzdHJvbmc+TWljaGFlbCBCZXJnZXI6PC9zdHJvbmc+PC9wPg0KPHA+WWVhaCwgdGhhdCdzIGl0LiBJIG1lYW4sIEkga25vdyB3aGVuIHdlIHNheSB0aGUgdGVybSBhcnRpZmljaWFsIGludGVsbGlnZW5jZSwgc29tZXRpbWVzIHBlb3BsZSB0aGluayBvZiB0aG9zZSB0aGluZ3MuIEkgdGhpbmsgYXQgdGhpcyBwb2ludCBpbiB0aW1lLCB0aGUgdGVjaG5vbG9neSB3ZSBoYXZlIGZvciBBSSBpcyBzdGlsbCBhIHRvb2wgbW9yZSB0aGFuIHNvbWV0aGluZyB0aGF0IGNhbiBoYXZlIGl0cyBvd24gY2hvaWNlIGJ1dCBJIGRvIHRoaW5rIHRoZXJlIGFyZSBzb21lIGNvbmNlcm5zLCBhbmQgeWVhaCwgYXMgSSBzYWlkIGZvbGxvd2luZyBvbiB3aGF0IEkgd2FzIHRhbGtpbmcgYWJvdXQganVzdCBlYXJsaWVyLCBJIHRoaW5rIGl0J3MgbW9yZSBhYm91dCB0aGUgd2F5IGl0J3MgYXBwbGllZCBhbmQgaWYgdGhlcmUncyBhcHBsaWNhdGlvbiB3aXRob3V0IGRvbWFpbiBrbm93bGVkZ2Ugb2Ygc2F5LCBIVkFDIG9yIHdoYXRldmVyIHRoZSBhcHBsaWNhdGlvbiBpcywgc29tZXRpbWVzIHRoZSBhcHBsaWNhdGlvbiBvZiBtYWNoaW5lIGxlYXJuaW5nIGNhbiBiZSBub3QgaWRlYWwgYW5kIG1heWJlIG5vdCBzdWl0ZWQsIGFuZCB0aGF0IGNhbiBjcmVhdGUgYSBiYWQgZXhwZXJpZW5jZSBmb3IgZW5kIHVzZXJzIGFuZCBzY2FyZSB0aGVtIGF3YXkgZm9yIHRoZSBuZXh0IHRpbWUuPC9wPg0KPHA+U28gSSB0aGluayB0aGUgcmlzayBpcyBtb3JlIHRvIHNjYXJlIHVzZXJzIGF3YXkgYmVjYXVzZSBJIHRoaW5rIHRoZXJlIGFyZSBhIGxvdCBvZiBiZW5lZml0cyBmcm9tIHVzaW5nIG1hY2hpbmUgbGVhcm5pbmcgaW4gYnVpbGRpbmdzIG9yIGFueSBvdGhlciBIVkFDIGFwcGxpY2F0aW9uLiBBbmQgSSB0aGluayBvbmUga2V5IHBvaW50IHdoaWNoIGNhbiBiZSBkb25lIGlzIHRvIG1ha2Ugc3VyZSBpdCdzIGFzIHRyYW5zcGFyZW50IGFzIHBvc3NpYmxlIGZvciB0aGUgZW5kIHVzZXIsIGJ1dCBzb21ldGltZXMgdGhlcmUgbWF5IGJlIGEgdGVuZGVuY3kgdG8gaGF2ZSBpdCwgYXMgSSBzYWlkIGVhcmxpZXIsIGFzIGEgYmxhY2sgYm94IHRoYXQgbWF5IG5vdCBtYWtlIHNlbnNlIGFuZCBtYXliZSBob3cgdG8gdHJvdWJsZXNob290LiBTbyB5ZWFoLCBJIGRvIHRoaW5rLCBhcyBJIHNhaWQsIG1hY2hpbmUgbGVhcm5pbmcgaXMgYSB0b29sLCBpdCBjYW4gZW5oYW5jZSBhdXRvbWF0aW9uIGFuZCB3ZSBoYXZlIGJlZW4gaGF2aW5nIGF1dG9tYXRpb24gZm9yIHRoZSBwYXN0IDIwMCB5ZWFycywgaGVscGluZyB0ZWNobm9sb2d5IGV2b2x2ZS4gU28gSSB0aGluayBpdCdzIGp1c3QgYW5vdGhlciBzdGVwIGluIHRoYXQsIGJ1dCB3ZSBqdXN0IGhhdmUgdG8gbWFrZSBzdXJlIHRoZSBzb2x1dGlvbiBpcyB0YWlsb3JlZCBjYXJlZnVsbHkgZm9yIHRoZSBhcHBsaWNhdGlvbi48L3A+DQo8cD48c3Ryb25nPktlbGx5IEJhcnJhemE6PC9zdHJvbmc+PC9wPg0KPHA+WWVhaCwgZXhhY3RseS4gSXQncyBub3QgYSBvbmUgc2l6ZSBmaXRzIGFsbCBzb2x1dGlvbi4gQW5kIEkgZGVmaW5pdGVseS13aGVuIHdlJ3ZlIGRvbmUgb3VyIHJlc2VhcmNoIGluIEFJIG1hY2hpbmUgbGVhcm5pbmcgd2hlbiBpdCBjb21lcyB0byBidWlsZGluZyBzeXN0ZW1zIG9yIGp1c3QgZ2VuZXJhbGx5LCB0cmFuc3BhcmVuY3kgaXMgdGhlIHRvcCBjb25jZXJuIGFtb25nIG1hbnkgdXNlcnMuPC9wPg0KPHA+U28gYXBwcmVjaWF0ZSB5b3UgZ29pbmcgaW50byB0aGF0LiBDYW4geW91IHRhbGsgbW9yZSBhYm91dCB3aGF0IHN1cGVydmlzZWQgbGVhcm5pbmcgaXMgYW5kIGhvdyBpdCBjYW4gYmUgdXNlZCBmb3IgaW1wcm92aW5nIGVxdWlwbWVudCBlZmZpY2llbmN5PzwvcD4NCjxwPjxzdHJvbmc+TWljaGFlbCBCZXJnZXI6PC9zdHJvbmc+PC9wPg0KPHA+U28gc3VwZXJ2aXNlZCBsZWFybmluZywgaXQncyBqdXN0IG9uZSBzdWJ0eXBlIG9mIG1hY2hpbmUgbGVhcm5pbmcuIEFuZCByZWFsbHksIEkgc2hvdWxkIHN0YXJ0IGJ5IHNheWluZyBtYWNoaW5lIGxlYXJuaW5nIGlzIHRlY2huaWNhbGx5IGNvbnNpZGVyZWQgYW4gYXBwbGljYXRpb24sIGFuZCBzbywgaXQgaGFzIGEgbG90IG9mIGFwcGxpY2F0aW9ucyBpbiBlbmdpbmVlcmluZyBvciBzdWNoLiBJdCByZWxpZXMgb24gbWF0aGVtYXRpY3MsIGFuZCBhIGxvdCBvZiB3aGF0IG1hY2hpbmUgbGVhcm5pbmcgZG9lcyBpcyBkZXJpdmVkIGZyb20gc2ltaWxhciB0aGluZ3MgdGhhdCB5b3UgbWF5IHNlZSBpbiBlbmdpbmVlcmluZy4gU28gd2hlbiB5b3UgdGFsayBhYm91dCBzdXBlcnZpc2VkIGxlYXJuaW5nLCBpdCdzIHJlYWxseSBhYm91dCBsZWFybmluZyBhIG1vZGVsIGVzc2VudGlhbGx5LCB3aGVuIHlvdSBoYXZlIGEgc2V0IG9mIGlucHV0cyBhbmQgeW91IGhhdmUgYSBzcGVjaWZpYyBvdXRwdXQgZm9yIHRob3NlLCB0aGF0IGlzIGtub3duIGluIHlvdXIgZGF0YSBzZXQuIFNvIEkgdGhpbmsgaXQncyBrbm93biwgYnV0IGxpbmVhciByZWdyZXNzaW9uLCB3aGljaCBpcyBrbm93biBieSBtb3N0IHBlb3BsZSBpbiB0aGUgaW5kdXN0cnksIEknbSBzdXJlLCBldmVyeW9uZSBJIHNob3VsZCBhc3N1bWUgaXMgdGhlIHNpbXBsZXN0IGZvcm0gb2Ygc3VwZXJ2aXNlZCBsZWFybmluZy48L3A+DQo8cD5PYnZpb3VzbHksIHBlb3BsZSBoYXZlIGhlYXJkIG9mIG5ldXJhbCBuZXR3b3JrIG9yIGEgbG90IG9mIGRpZmZlcmVudCB0ZWNobmlxdWVzLCBidXQgYXQgdGhlIGVuZCBvZiB0aGUgZGF5LCBpdCBpcyBqdXN0LCBxdW90ZS11bnF1b3RlLCBqdXN0IGEgbW9kZWwgdG8gbGVhcm4gbGlrZSB3ZSBzZWUgaW4gZW5naW5lZXJpbmcgYXMgd2VsbC4gSSB0aGluayBwcm9iYWJseSB0aGUgZGlmZmVyZW5jZSBpbiBtYWNoaW5lIGxlYXJuaW5nIGlzIHRoYXQgaXQncyByb290ZWQgaW4gdGhlIGlkZWEgb2YgdG8gYSBkZWdyZWUgb2YgcmVhbCB0aW1lIGFuZCB0byB1c2UgY29tcHV0ZXJzIGluIHJlYWwgdGltZSB0byBmaW5kIGluc2lnaHRzLiBCdXQgaXQncyBtb3N0IGJhc2ljIGxldmVsLCBpdCBpcyBhbiBhcHBsaWNhdGlvbiBvZiBtYXRoZW1hdGljYWwgcHJpbmNpcGxlIHRoYXQgYSBsb3Qgb2YgZW5naW5lZXJzIGtub3csIHRoZXNlIGFyZSBqdXN0IHRoZSB0ZWNobmlxdWVzLiBUaGFua3MgdG8gSSBndWVzcyB0aGUgYWR2YW5jZXMgaW4gY29tcHV0aW5nIGhhcmR3YXJlIGJlY29taW5nIG1vcmUgYW5kIG1vcmUgY29tcGxleCBhbmQgYXJlIGFibGUgdG8gZGVhbCB3aXRoIG1vcmUgYW5kIG1vcmUgZGF0YSBlZmZpY2llbnRseS48L3A+DQo8cD5BbmQgc28gaW4gdGVybXMgb2YgaG93IGl0J3MgYXBwbGllZCB0byBpbXByb3ZpbmcgZXF1aXBtZW50IGVmZmljaWVuY3ksIEkgdGhpbmsgSSB3b3VsZCBzYXkgZGVwZW5kaW5nIG9uIHRoZSBhcHBsaWNhdGlvbiwgaXQgY2FuIGJlIGp1c3Qgb25lIGFzcGVjdCBvZiBhIHNvbHV0aW9uLiBTbyBpZiB5b3UgbG9vayBhdCBvcHRpbWl6aW5nIHJlYWwgdGltZSBjb250cm9scywgdGhlIHN1cGVydmlzZWQgbGVhcm5pbmcgaXMgYSBmaXJzdCBzdGVwIHRvIGxlYXJuIHRoZSBwZXJmb3JtYW5jZSBvciB0aGUgYmVoYXZpb3Igb2YgdGhlIGVxdWlwbWVudCwgZm9yIGluc3RhbmNlLCBvciB0byBwcmVkaWN0IHRoZSBjb29saW5nIGxvYWQgaW4gdGhlIGJ1aWxkaW5nIG9yIHRoaW5ncyBsaWtlIHRoYXQuIEFuZCB0aGVuLCBpdCBuZWVkcyB0byBiZSBicm91Z2h0IHRvZ2V0aGVyIGluIGFuIG9wdGltaXphdGlvbiBmcmFtZXdvcmssIHdoaWNoIGlzIHRoZSBuZXh0IHN0ZXAuIEJ1dCBpdCBjYW4gYWxzbyBiZSwgdGhlIHN1cGVydmlzZWQgbGVhcm5pbmcsIHRoZSBtYWNoaW5lIGxlYXJuaW5nIGNhbiBhbHNvIGJlIHRoZSBtYWluIHBhcnQgb2YgeW91ciBzb2x1dGlvbi4gRm9yIGluc3RhbmNlLCBpZiB3ZSB0aGluayBvZiBzb21ldGhpbmcgbGlrZSBwcmVkaWN0aXZlIG1haW50ZW5hbmNlIHRvIHNlZSBpZiB0aGUgcGVyZm9ybWFuY2Ugb2YgYW4gZXF1aXBtZW50IGlzIGRldGVyaW9yYXRpbmcgb3ZlciB0aW1lLCB3ZSBjYW4gbGVhcm4gdGhlIG9yaWdpbmFsIHBlcmZvcm1hbmNlIG9mIHRoZSBlcXVpcG1lbnQsIHRoZSBpZGVhbCBwZXJmb3JtYW5jZSwgYW5kIHRoZW4gY29tcGFyZSB0byB3aGF0J3MgaGFwcGVuaW5nIG5vdyBhbmQgc2VlIGlmIGl0J3MgZGVjcmVhc2luZyBvdmVyIHRpbWUuIFNvIGluIHRoYXQgY2FzZSwgaXQgY2FuIGhlbHAgdXMgZG8gcHJlZGljdGl2ZSBtYWludGVuYW5jZSwgaW1wcm92ZSB0aGUgZWZmaWNpZW5jeSBvZiB0aGUgZXF1aXBtZW50IGJhY2sgdG8gaXRzIG9yaWdpbmFsIHN0YXRlLCBpZiB3ZSBjYW4gZGV0ZWN0IGl0IGVhcmx5IGVub3VnaC48L3A+DQo8cD48c3Ryb25nPktlbGx5IEJhcnJhemE6PC9zdHJvbmc+PC9wPg0KPHA+SW4geW91ciBqb3VybmFsIGFydGljbGUsIExldmVyYWdpbmcgTWFjaGluZSBMZWFybmluZyB0byBPcHRpbWl6ZSBDaGlsbGVyIFBsYW50IENvbnRyb2xzLCBtYWNoaW5lIGxlYXJuaW5nIGlzIGFwcGxpZWQgdG8gY2FwdHVyZSBjaGlsbGVyIHByZWRpY3RlZCBwb3dlciBjb21wYXJlZCB0byBhY3R1YWwgcG93ZXIuIEhvdyBpcyB0aGF0IGRvbmU/PC9wPg0KPHA+PHN0cm9uZz5NaWNoYWVsIEJlcmdlcjo8L3N0cm9uZz48L3A+DQo8cD5UaGF0J3MgZG9uZSB3aXRoIGRhdGEgYXQgdGhlIGVuZCBvZiB0aGUgZGF5LiBJIHRoaW5rIHRoZSBpZGVhIG9mIG1hY2hpbmUgbGVhcm5pbmcgb2Z0ZW4gaXMgdG8gbG9vayBhdCBzaXRlIGRhdGEgaW4gcmVhbCB0aW1lIG9uIGEgY29udHJvbGxlciBvbiBzaXRlLCBjb250cm9sIGhhcmR3YXJlIG9uIHNpdGUsIGJ1dCBpdCBjYW4gYWxzbyBiZSB1c2VkIHdpdGggbWFudWZhY3R1cmVyIGRhdGEgYXMgYSBzdGFydGluZyBwb2ludCBhbmQgaXQgY2FuIHVzZSB3aXRoIGJvdGgsIHJpZ2h0PyBUaGUgd2F5IHdlIGxvb2sgYXQgaXQgaXMgdXN1YWxseSB0byBkZXZlbG9wIGEgc29tZXdoYXQgZ2VuZXJpYyBtb2RlbCB0aGF0J3MgYnJvYWQgZW5vdWdoIHRvIGJlIGFwcGxpY2FibGUgdG8gbWFueSBzaXRlcyBvciBtYW55IHNpbWlsYXIgZXF1aXBtZW50IHRoYXQgYXJlIG91dCB0aGVyZS4gQW5kIHRoZW4gdGhlIG1vZGVsIGlzIHVzZWQgYXMgYSBiYXNpcyB0byBiZSBjYWxpYnJhdGVkIGF1dG9tYXRpY2FsbHkgb24gaW5kaXZpZHVhbCBzaXRlcy4gU28gd2UgYXJlIGxvb2tpbmcgYXQgd2F0ZXItY29vbGVkIGNoaWxsZXIgbW9kZWwgdGhhdCBtaWdodCBiZSBhIHNwZWNpZmljIGZvcm0sIGEgc3BlY2lmaWMgZXF1YXRpb24gdG8gYSBkZWdyZWUuIEFuZCB0aGVuLCB3ZSBtYWtlIHN1cmUgdG8gY2FsaWJyYXRlIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBlcXVhdGlvbiBmb3IgZWFjaCBtYWNoaW5lIHNvIHRoYXQgd2UgY2FuIGxlYXJuIG9uIHNpdGUgdGhlIHNwZWNpZmljaXR5IG9mIGVhY2ggbWFjaGluZS48L3A+DQo8cD48c3Ryb25nPktlbGx5IEJhcnJhemE6PC9zdHJvbmc+PC9wPg0KPHA+VGhhdCBzb3VuZHMgdmVyeSBjb21wbGV4IGFuZCBteSBmb2xsb3ctdXAgdG8gdGhhdCBpcyBjYW4gbWFjaGluZSBsZWFybmluZyBiZSB1c2VkIHRvIGNhcHR1cmUgZXZlbiBtb3JlIGNvbXBsZXggcmVsYXRpb25zaGlwcyB0aGFuIHRoYXQ/PC9wPg0KPHA+PHN0cm9uZz5NaWNoYWVsIEJlcmdlcjo8L3N0cm9uZz48L3A+DQo8cD5ZZWFoLCBmb3Igc3VyZS4gVGhlcmUgaXMgbm8gcmVhbCBsaW1pdC4gSSB0aGluayBhZ2FpbiwgdGhlIGxpbWl0IGlzIGRhdGEuIFRoZSBtb3JlIGRhdGEgeW91IGhhdmUsIHdoZXRoZXIgaXQncyBhIGxvdCBvZiBkaWZmZXJlbnQsIEkgZ3Vlc3MsIHRoZSBicmVhZHRoIG9mIHRoZSBkYXRhIG9yIGhvdyBtdWNoIGRpZmZlcmVudCBkYXRhIHBvaW50cyB5b3UgaGF2ZSBmb3IgdGhlIHNhbWUgZXF1aXBtZW50IGZvciBpbnN0YW5jZSwgdGhhdCdzIHdoYXQgZGVmaW5lcyBob3cgY29tcGxleCB0aGUgbW9kZWwgeW91IGNhbiBsZWFybi4gU28gdGhlcmUgaXMgYSBmZXcgZGlmZmVyZW50IGFwcHJvYWNoZXMgYW5kIGl0J3MganVzdCBhYm91dCBkZXNpZ25pbmcgdGhlIG9uZSB0aGF0IHN1aXRzIHRoZSBhcHBsaWNhdGlvbi4gT25lIG9mIHRoZW0gaXMgdG8sIGZvciBpbnN0YW5jZSwgaW4gSFZBQywgd2UgY2FuIGxvb2sgYXQgZGV2ZWxvcGluZyBtb2RlbHMgZm9yIGluZGl2aWR1YWwgZXF1aXBtZW50IHdpdGhpbiBhIGNoaWxsZXIgcGxhbnQgbGlrZSBJJ20gcHJlc2VudGluZyBpbiB0aGUgYXJ0aWNsZSBpbiB0aGUgQVNIUkFFIEpvdXJuYWwuPC9wPg0KPHA+QW5kIHRoZW4sIHRoZSBuZXh0IHN0ZXAgSSBndWVzcyBmb3IgdGhlIG1vcmUgY29tcGxleCByZWxhdGlvbnNoaXAgaXMgbWFraW5nIHN1cmUgdGhhdCB0aGUgbW9kZWwgb2Ygb3VyIGluZGl2aWR1YWwgZXF1aXBtZW50IGFjY291bnQgZm9yIHZhcmlhYmxlcyB0aGF0IGludGVyYWN0IHdpdGggZWFjaCBlcXVpcG1lbnQuIFNvIGZvciBpbnN0YW5jZSwgSSB0aGluayBJIG1lbnRpb25lZCBlYXJsaWVyLCBjb29saW5nIHRvd2VycywgdGhlIGxlYXZpbmcgY29vbGluZyB0b3dlciB0ZW1wZXJhdHVyZSBpbXBhY3RzIHRoZSBjb29saW5nIHRvd2VyLCBwb3dlciB1c2FnZS4gSXQgYWxzbyBpbXBhY3RzIHRoZSBjaGlsbGVyIHBvd2VyIHVzYWdlLiBTbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBhbGwgdGhvc2UgbW9kZWxzIHRha2luZyBpbnRvIGFjY291bnQgYWxsIHRob3NlIHR5cGVzIG9mIHZhcmlhYmxlcy4gQW5kIHRoZW4gYWdhaW4sIGFzIEkgbWVudGlvbmVkIGVhcmxpZXIsIHdlIGNhbiBwdXQgdGhlbSBhbGwgdG9nZXRoZXIgaW4gYW4gb3B0aW1pemF0aW9uIGZyYW1ld29yayB0byBmaW5kIHRob3NlIG1vcmUgY29tcGxleCByZWxhdGlvbnNoaXAuIEFub3RoZXIgYXBwcm9hY2ggY2FuIGFsc28gYmUgdG8gbG9vayBhdCBhIHdob2xlIHN5c3RlbSwgYSB3aG9sZSBjaGlsbGVyIHBsYW50LCB0aGUgd2hvbGUgSFZBQyBzeXN0ZW0gYXMgb25lIG1vZGVsLjwvcD4NCjxwPkEgbW9yZSwgSSBndWVzcyBibGFjayBib3ggbW9kZWwuIFNvIHRoaXMgYXBwcm9hY2ggaXMgdG90YWxseSB2YWxpZC4gVGhlcmUgYXJlIHNvbWUgcHJvcyBhbmQgY29ucywgZm9yIHRoaXMgdHlwZSBvZiBhcHByb2FjaCByZXF1aXJlcyBhIGxvdCBvZiBkYXRhIGJlY2F1c2UgaXQgZG9lc24ndCBsZWFybiBpbmRpdmlkdWFsIGludGVyYWN0aW9uIHBlciBlcXVpcG1lbnQsIGJ1dCBpdCBoYXMgdG8gc2VlIHRoZW0gYWxsIHRvIGEgZGVncmVlLiBTbyBmb3IgYnVpbGRpbmcgYXBwbGljYXRpb24sIGl0IG1heSBub3QgYmUgdGhlIG1vc3Qgc3VpdGVkIG9uZSBiZWNhdXNlIHlvdSB3b3VsZCBuZWVkIHRvIGJlIGFibGUgdG8gaGF2ZSBzZWVuIG9wZXJhdGlvbiBvZiB5b3VyIHBsYW50IGluIG1pbGxpb25zIG9mIGRpZmZlcmVudCBzY2VuYXJpb3MgdGhhdCBtYXkgbm90IGFsbCBvY2N1ci4gV2hlcmVhcyBpZiB5b3UgbW9kZWwgaW5kaXZpZHVhbCBlcXVpcG1lbnQsIHlvdSBqdXN0IG5lZWQgdG8gZmluZCB0aGUgbW9kZWwgZm9yIGVhY2ggb25lIG9mIHRoZW0uIEFuZCBzb21ldGltZXMgeW91IGNhbiB0aGVuIHByZWRpY3Qgd2hhdCB3b3VsZCBiZSB0aGUgYmVoYXZpb3IgaW4gYSBzbGlnaHRseSBkaWZmZXJlbnQgc2NlbmFyaW8gb2YgdGhlIHdob2xlIHBsYW50IGFzIGxvbmcgYXMgeW91J3ZlIHNlZW4gdGhhdCBlcXVpcG1lbnQgaW4gdGhhdCBzY2VuYXJpby48L3A+DQo8cD5CdXQgeWVhaCwgdGhlcmUncyBhIGxvdCBvZiBkaWZmZXJlbnQgd2F5cyB0byBhcHByb2FjaCBpdCBhbmQgaXQgY2FuIGFsc28gYmUgZG9uZSB0byBwcmVkaWN0IHRoaW5ncyB0aGF0IGFyZSBhIGxpdHRsZSBiaXQgbGVzcyB0YW5naWJsZSwgbGlrZSB0cnlpbmcgdG8gcHJlZGljdCB0aGUgbG9hZCBpbiB0aGUgYnVpbGRpbmcsIGFzIG9uZSBkYXRhIHBvaW50IGVzc2VudGlhbGx5LCB3aXRob3V0IG5lY2Vzc2FyaWx5IGtub3dpbmctaGlzdG9yaWNhbGx5IHdlIHdvdWxkIHVzZSB0byBwcmVkaWN0IHRoZSBjb29saW5nIGxvYWQsIHdlIHdvdWxkIHVzZSBhIGxvdCBvZiBwaHlzaWNhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVpbGRpbmcsIHJpZ2h0PyBMaWtlIHdoYXQncyBidWlsZGluZyBmYWJyaWM/IFdoYXQncyB0aGUgbWF0ZXJpYWw/IFdoYXQncyB0aGUgdGhpY2tuZXNzIGV2ZXJ5IHdhbGw/IFdoYXQgYXJlIGFsbCB0aGUgZGlmZmVyZW50IHJvb21zIGluIHRoZSBidWlsZGluZz8gQW5kIHRoaXMgY2FuIGJlIHZlcnkgY29tcGxleCBhbmQgdGhlcmUncyBhbHdheXMgYXNzdW1wdGlvbnMgaW4gdGhvc2UgbW9yZSBwaHlzaWNhbCBtb2RlbHMuIEFuZCBhdCB0aGUgZW5kIG9mIHRoZSBkYXksIGFsbCB0aGVzZSBhc3N1bXB0aW9ucyBhZGQgdXAgYW5kIG9mdGVuLCBJIHRoaW5rIGF0IGxlYXN0IGZyb20gbXkgZXhwZXJpZW5jZSwgd2UgZmluZCB0aGF0IHRob3NlIGFyZSBub3QgdmVyeSBhY2N1cmF0ZSB0byB0aGUgYWN0dWFsIG9wZXJhdGlvbiBvZiB0aGUgYnVpbGRpbmcuPC9wPg0KPHA+V2hlcmVhcyBtb3JlIGRhdGEtZHJpdmVuIG1hY2hpbmUgbGVhcm5pbmcgbW9kZWwgY2FuIGxlYXJuIHRoZSBjb29saW5nIGxvYWQgb2YgdGhlIGJ1aWxkaW5nIHdpdGggaGF2aW5nIGxlc3Mga25vd2xlZGdlIG9mIHRoZSBwaHlzaWNhbCBtYWtldXAgb2YgdGhlIGJ1aWxkaW5nLCBidXQgbW9yZSBsb29raW5nIGF0IHRoaW5ncyBsaWtlIHdlYXRoZXIsIGxlYXJuaW5nIHBhdHRlcm5zIGZyb20gdGhlIGxvYWQgYW5kIHRoaW5ncyBsaWtlIHRoYXQuIFRob3NlIGFyZSBqdXN0IGEgZmV3IGV4YW1wbGVzLjwvcD4NCjxwPjxzdHJvbmc+S2VsbHkgQmFycmF6YTo8L3N0cm9uZz48L3A+DQo8cD5ZZWFoLCBpdCBzZWVtcyBsaWtlIHRoZXJlJ3MganVzdCBhIGxvdCBvZiBkaWZmZXJlbnQgdGhpbmdzIHRoYXQgbWFjaGluZSBsZWFybmluZyBhbmQgdGhpcyBraW5kIG9mIHdvcmsgY2FuIGJlIHVzZWQgdG8gbGVhcm4gaG93IHRoZXNlIGJ1aWxkaW5ncyB3b3JrLCBtYWtlIHRoZW0gYmV0dGVyLCBldmVuIGlmIHdlIGRvbid0IGhhdmUgZGF0YSwgbWlzc2luZyBkYXRhLiBJJ20gc3VyZSB5b3UgY2FuIGdldCBsb3N0IGluIHRoZSB3ZWVkcyB3aGVuIHBlb3BsZSBhcmUgcGxheWluZyBhcm91bmQgd2l0aCB0aGlzIGtpbmQgb2Ygc3R1ZmYgYW5kIHdoYXQgdGhleSBjYW4gZG8gd2l0aCB0aGF0IGRhdGEgYW5kIGluZm9ybWF0aW9uLjwvcD4NCjxwPkhvdyBjYW4gdGhlIHByb3Bvc2VkIG9wdGltYWwgY29udHJvbCBzdHJhdGVneSBiZSB1c2VkIHRvIHRhY2tsZSBjaGFsbGVuZ2VzIGluIGNoaWxsZXIgcGxhbnQgb3BlcmF0aW9uPzwvcD4NCjxwPjxzdHJvbmc+TWljaGFlbCBCZXJnZXI6PC9zdHJvbmc+PC9wPg0KPHA+WWVhaC4gVGhhdCdzIGEgdmVyeSBnb29kIHF1ZXN0aW9uLiBJIHRoaW5rIGFzIEkgbWVudGlvbmVkIGVhcmxpZXIsIGRvIHdlIHRoaW5rIHdlIHNob3VsZCBsb29rIGF0IHNvbWUgc3BlY2lmaWMgY2hhbGxlbmdlcyB0aGF0IG5lZWRzIHByZWRpY3RpdmUgbW9kZWxpbmcgdG8gdGFja2xlPyBJIHRoaW5rIHRoZXJlJ3MgYSBjb3VwbGUgb2YgdHlwZXMgb2YgdGhlc2UgY2hhbGxlbmdlcy4gSSBndWVzcyBhIGNvdXBsZSBvZiBjYXRlZ29yaWVzLiBPbmUgb2YgdGhlbSBpcyB0cmFkZS1vZmZzIGJldHdlZW4gc2F5IHZhcmlvdXMgc3BlY2llcyBvZiBlcXVpcG1lbnQgYmV0d2VlbiB0aGUgY2hpbGxlcnMgYW5kIHRoZSBjb29saW5nIHRvd2VycywgYmV0d2VlbiB0aGUgY2hpbGxlcnMgYW5kIHRoZSBjb25kZW5zZXIgcHVtcHMuIElmIHdlIGxvb2sgaW4gdGhlIGJyb2FkZXIgYnVpbGRpbmcsIGlzIGl0IG1vcmUgZWZmaWNpZW50IHRvIG1ha2UgYSBjaGlsbGVyIHdvcmsgaGFyZGVyIG9yIEFIVSBmYW5zIHdvcmsgaGFyZGVyPyBUaG9zZSBhcmUgdHJhZGUtb2ZmcyBiZWNhdXNlIHlvdSBjb3VsZCBtYWtlIG9uZSB3b3JrIGhhcmRlciwgdGhlIG9uZSB3b3JrIGxlc3MgaGFyZCBhbmQgc2F2ZSBlbmVyZ3kgcG9zc2libHksIGJ1dCBpdCBjb3VsZCBiZSB0aGF0IGluIHRoZSBlbmQgaXQgZW5kcyB1cCBiZWluZywgb3ZlcmFsbCwgaXQgbWlnaHQgYWN0dWFsbHkgYmUgdXNpbmcgbW9yZSBlbmVyZ3kuIFNvIGl0IGNhbiBiZSBoYXJkIHRvIGtub3cuIFNvIHRoYXQncyB3aGVyZSB3ZSBsb29rIGF0IHByZWRpY3RpdmUgbW9kZWxpbmcuPC9wPg0KPHA+VGhlIG90aGVyIHR5cGUgb2Ygc2NlbmFyaW8gaXMgd2hlbiB3ZSBsb29rIGF0IGVzcGVjaWFsbHkgZXF1aXBtZW50IHBhcnQgbG9hZCBwZXJmb3JtYW5jZS4gSSB0aGluayB0aGlzIGlzIHdlbGwta25vd24gaW4gdGhlIGluZHVzdHJ5LiBXZSBoYXZlIHRoaW5ncyBsaWtlIEhSSXMgdGhhdCBsb29rIGF0IG5vdCBqdXN0IHRoZSBkZXNpZ24gZWZmaWNpZW5jeSBvZiBlcXVpcG1lbnQsIGJ1dCBvZiBhIHJhbmdlIG9mIHBhcnQgbG9hZCBwb2ludHMsIGJ1dCBpdCBjYW4gYmUgdHJpY2t5IGV2ZW4gZnJvbSB0aGVyZSB0byBoYXZlIGEgZ29vZCBwaWN0dXJlIG9mIGFsbCB0aGUgZGlmZmVyZW50IHNjZW5hcmlvcyB0aGUgZXF1aXBtZW50IGNhbiBydW4gaW4uIE9uZSBleGFtcGxlIG9mIGFwcGxpY2F0aW9ucywgdGhlcmUgaXMgZm9yIGluc3RhbmNlIHRoZSBudW1iZXIgb2YgZXF1aXBtZW50IHlvdSBtYXkgd2FudCB0byBydW4uIEluIGEgY2hpbGxlciBwbGFudC4gWW91IGNvdWxkIGhhdmUgYW55IG51bWJlciBvZiBjaGlsbGVycywgeW91IGNvdWxkIGhhdmUgdHdvLCB0aHJlZSwgZm91ciwgZml2ZS4gSSd2ZSBzZWVuIHBsYW50cyB3aXRoIDIwIGNoaWxsZXJzIGFuZCBzb21ldGltZXMsIGl0IGNhbiBiZSBoYXJkIHRvIGtub3cgZm9yIHRoaXMgc3BlY2lmaWMgd2VhdGhlciwgZm9yIHRoZSBsb2FkIGluIHRoZSBidWlsZGluZyBmb3IgdGhlIGNvbGQgd2F0ZXIgdGVtcGVyYXR1cmUgc2V0IHBvaW50IHlvdSBoYXZlIHJpZ2h0IG5vdywgaXMgaXQgYmV0dGVyIHRvIHJ1biBmb3VyIGNoaWxsZXJzIG9yIGZpdmUgY2hpbGxlcnMgb3Igc2l4IGNoaWxsZXJzPyBUaGVyZSdzIG5vIG9uZSBhbnN3ZXIuIEl0IGRlcGVuZHMgb24gdGhlIGVxdWlwbWVudC4gSXQgZGVwZW5kcyBvbiB0aGUgc2l0dWF0aW9uLiBTbyB0aGF0J3Mgd2hlcmUgSSB0aGluayBiZWluZyBhYmxlIHRvIHByZWRpY3QgdGhlIHBvd2VyIHVzYWdlLCB0aGUgZWZmaWNpZW5jeSBvZiB0aGUgZXF1aXBtZW50IGFsbG93cyB1cyB0byBtYWtlIHRoZSBkZWNpc2lvbiBvbiB0aGUgZmx5LjwvcD4NCjxwPjxzdHJvbmc+S2VsbHkgQmFycmF6YTo8L3N0cm9uZz48L3A+DQo8cD5TbyBpbiB0aGUgYXJ0aWNsZSwgb3B0aW1hbCBzZXQgcG9pbnRzIGFuZCBjb21iaW5hdGlvbnMgb2YgZXF1aXBtZW50IGNhbiBiZSByZXNvbHZlZCB0b2dldGhlciBhcyBhIHBhcnQgb2YgYSBtYXRoZW1hdGljYWwgb3B0aW1pemF0aW9uIGZyYW1ld29yay4gV2hhdCBpcyB0aGUgc2ltcGxlc3Qgc29sdXRpb24gdG8gcHJlZGljdCB0aGUgb3ZlcmFsbCBjaGlsbGVyIHBsYW50IHBvd2VyIHVzZT88L3A+DQo8cD48c3Ryb25nPk1pY2hhZWwgQmVyZ2VyOjwvc3Ryb25nPjwvcD4NCjxwPkkgZ3Vlc3MsIEknbGwgYWRkcmVzcyBpdCBtb3JlIGluIHRlcm1zIG9mIHRoZSBvcHRpbWl6YXRpb25zIGFuZCBtYXRoZW1hdGljYWwgc2lkZSBvZiB0aGluZ3MuIEZvciBhbnkgb3B0aW1pemF0aW9uIHByb2JsZW0sIHRoZXJlIGlzIG9uZSwgcXVvdGUtdW5xdW90ZSwgc2ltcGxlIGFwcHJvYWNoIHdoaWNoIGlzIHNpbXBsZSB0byBpbXBsZW1lbnQgYnV0IG1heSBub3QgYmUgdmVyeSBjb21wdXRhdGlvbmFsbHkgZWZmaWNpZW50LCB3aGljaCBpcyB3aGF0IGlzIGNhbGxlZCBleGhhdXN0aXZlIHNlYXJjaC4gU29tZXRpbWVzIGl0J3MgcmVmZXJyZWQgdG8gYXMgYSBicnV0ZSBmb3JjZSBhcHByb2FjaCwgd2hpY2ggaXMgZXNzZW50aWFsbHkgdG8gbG9vayBhdCBhbGwgdGhlIHBvc3NpYmxlIHNpdHVhdGlvbnMsIG9uY2UgeW91IGFscmVhZHkgaGF2ZSB0aGUgbW9kZWxzIG9mIHlvdXIgcGxhbnQgb3IgeW91ciBzeXN0ZW0gYW5kIHByZWRpY3QgZm9yIGVhY2ggY2FzZSB3aGF0IGlzIGdvaW5nIHRvIGJlIHRoZSBwb3dlciB1c2FnZS4gU28gaWYgd2UgbG9vayBhdCBmb3IgaW5zdGFuY2UsIGZpbmRpbmcgdGhlIG9wdGltYWwgY29uZGVuc2VyIHdhdGVyIGZsb3csIHRoYXQgaXMgZ29pbmcgdG8gYmFsYW5jZSB5b3VyIGNoaWxsZXIgcG93ZXIsIHlvdXIgY29uZGVuc2VyIHB1bXAgcG93ZXIsIG1heWJlIHlvdXIgY29vbGluZyB0b3dlciBwb3dlci48L3A+DQo8cD5JdCdzIGJhc2ljYWxseSB0cnlpbmcgZXZlcnkgdmFsdWUgb2YgY29uZGVuc2VyIGZsb3cgdGhhdCBjb3VsZCBoYXBwZW4sIGV2ZXJ5IHBlcmNlbnRhZ2Ugb2YgY29uZGVuc2VyIGZsb3cgYW5kIGZpbmRpbmcgd2hhdCB0aGUgcG93ZXIgdXNhZ2UgaXMsIGFuZCB0aGVuLCBsb29raW5nIGF0IHRoZSBsb3dlc3Qgb25lLjwvcD4NCjxwPjxzdHJvbmc+S2VsbHkgQmFycmF6YTo8L3N0cm9uZz48L3A+DQo8cD5Ib3cgY2FuIHRoZSBpbnRlcmlvciBwb2ludCBtZXRob2QgYmUgdXNlZCBmb3IgbWF0aGVtYXRpY2FsIG9wdGltaXphdGlvbiBzb2x2ZXJzIGFuZCBob3cgZG9lcyB0aGF0IHJlbGF0ZSB0byBtYWNoaW5lIGxlYXJuaW5nPzwvcD4NCjxwPjxzdHJvbmc+TWljaGFlbCBCZXJnZXI6PC9zdHJvbmc+PC9wPg0KPHA+U28gdGhhdCdzIGtpbmQgb2YgdGhlIG5leHQgc3RlcCBmcm9tIHRoZSBwcmV2aW91cyBxdWVzdGlvbi4gU28gZXhoYXVzdGl2ZSBzZWFyY2ggdGhhdCBJIHRhbGtlZCBhYm91dCBqdXN0IG5vdyBpcyByZWxhdGl2ZWx5IHNpbXBsZSB0byBpbXBsZW1lbnQuIEl0J3Mgc2ltcGxlIHRvIHVuZGVyc3RhbmQgSSB0aGluaywgYnV0IGl0J3Mgbm90IHZlcnkgdHJhY3RhYmxlLCBpdCdzIG5vdCB2ZXJ5IHByYWN0aWNhbCBiZWNhdXNlIGFzIHNvb24gYXMgeW91IGhhdmUgYSBmZXcgdmFyaWFibGVzIHlvdSdyZSBkZWFsaW5nIHdpdGgsIHRoZSBudW1iZXIgb2Ygc2NlbmFyaW9zIHlvdSdyZSBnb2luZyB0byBjaGVjayBnb2VzIHZlcnkgcXVpY2tseSBpbnRvIHRoZSBodW5kcmVkcyBvZiB0aG91c2FuZHMsIG1pbGxpb25zLiBDYW4gZ28gZWFzaWx5IGJpbGxpb25zIG9yIG1vcmUgYmVjYXVzZSBhcyBzb29uIGFzIHlvdSBoYXZlIGEgZmV3IHZhcmlhYmxlcywgeW91IGhhdmUgdG8gaXRlcmF0ZSBvdmVyIGVhY2ggdmFyaWFibGUgYW5kIHRoZW4gb3ZlciBlYWNoIHZhcmlhYmxlIG92ZXIgdGhhdC4gQW5kIHNvLCBpdCdzIGp1c3Qgbm90IHZlcnkgcHJhY3RpY2FsLjwvcD4NCjxwPlRoYXQncyB3aGVyZSB0aGUgd2hvbGUgZmllbGQgb2YgbWF0aGVtYXRpY2FsIG9wdGltaXphdGlvbiBjb21lcyBpbiwgd2hpY2ggaXMgYWJvdXQgZmluZGluZyBhIHNvbHV0aW9uIGluIGEgZmFzdGVyIHdheS4gU28gaW50ZXJpb3IgcG9pbnQgbWV0aG9kIGlzIGp1c3Qgb25lIHRlY2huaXF1ZSB0aGF0J3MgZm9yIG9uZSBmYW1pbHkgb2YgcHJvYmxlbXMuIEluIG1hdGhlbWF0aWNhbCBvcHRpbWl6YXRpb24sIHRoZXJlJ3MgYSBsb3Qgb2YgZGlmZmVyZW50LCBJIGd1ZXNzIHR5cGVzIG9mIHByb2JsZW1zLiBUaGV5IGNhbiBiZSBjb25zdHJhaW5lZCwgd2hpY2ggSSB0aGluayBpcyBvZnRlbiB0aGUgY2FzZSBpbiBvdXIgZmllbGQgb3IgdGhleSBjYW4gYmUgdW5jb25zdHJhaW5lZC4gQW5kIHNvLCB0aGUgY29uc3RyYWluZWQgb3B0aW1pemF0aW9uIHByb2JsZW0gaXMgd2hlbiB0aGUgZGVjaXNpb24gdmFyaWFibGVzLCB0aGUgdmFsdWVzIHdlJ3JlIHRyeWluZyB0byBmaW5kLCBzbyB0aGUgb3B0aW1hbCBzZXQgcG9pbnQgZm9yIGluc3RhbmNlIGhhcyBhIHJhbmdlIG9mIGFsbG93YWJsZSB2YWx1ZS4gU28gc29tZSBvZiBpdCBpcyBvYnZpb3VzLCB3ZSBjYW4ndCBoYXZlIG5lZ2F0aXZlIHRlbXBlcmF0dXJlIG9yIEkgZ3Vlc3Mgd2UgY2FuIGhhdmUgbmVnYXRpdmUgdGVtcGVyYXR1cmUsIGJ1dCB3ZSBjYW4ndCBoYXZlIG5lZ2F0aXZlIGZsb3cgZm9yIGluc3RhbmNlLjwvcD4NCjxwPlNvIGlmIHdlIGxvb2sgYXQgdGhlIGNvbmRlbnNlciBmbG93LCBvYnZpb3VzbHksIHdlIGhhdmUgdG8gdGVsbCBvdXIgYWxnb3JpdGhtIHdlbGwgZG9uJ3QgbG9vayBhdCB0aG9zZS4gQW5kIG9idmlvdXNseSwgYXMgeW91ciBjaGlsbGVyIGhhcyBhIG1pbmltdW0gbG9hZCBvciBtYXhpbXVtIGxvYWQsIGl0IGNhbid0IGdvIGJleW9uZC4gU28gYXMgc29vbiBhcyB3ZSBsb29rIGF0IHRoaXMsIHdlIGxvb2sgYXQgY29uc3RyYWluZWQgb3B0aW1pemF0aW9uLCB3aGljaCBpcyBhIGZhbWlseSBvZiBvcHRpbWl6YXRpb24gcHJvYmxlbSwgd2hpY2ggYWdhaW4sIGlmIHlvdSB0aGluayBhYm91dCBpdCBhcyBhbiBleGhhdXN0aXZlIHNlYXJjaCBwcm9ibGVtLCBpdCdzIG5vdCBjb21wbGljYXRlZCB0byB0aGluayBhYm91dCwgeW91IGNhbiBqdXN0IHRyeSBhbGwgdGhlIHZhbHVlcyB0aGF0IGFyZSBhbGxvd2FibGUsIGJ1dCB3aGVuIHlvdSBzdGFydCB0byBsb29rIGF0IGEgbW9yZSBlZmZpY2llbnQgbWV0aG9kLCB5b3UgaGF2ZSB0byBtYWtlIHN1cmUgeW91IGJ1aWx0IGluIHRob3NlIGJvdW5kYXJpZXMsIGFuZCB5b3VyIHByb2JsZW0gaXMgaXQncyBub3QgbmVjZXNzYXJpbHkgdGhhdCBzdHJhaWdodGZvcndhcmQuPC9wPg0KPHA+QW5kIHRoYXQncyB3aGVyZSBhIG1ldGhvZCBsaWtlIGludGVyaW9yIHBvaW50IG1ldGhvZCBjb21lIGluLiBJdCdzIGEgbWV0aG9kIHRvIGZpbmQgZWZmaWNpZW50bHkgdGhlIHNvbHV0aW9uIG9mIGEgY29uc3RyYWluZWQgb3B0aW1pemF0aW9uIHByb2JsZW0uIEJ1dCBhdCB0aGUgZW5kIG9mIHRoZSBkYXksIG9wdGltaXphdGlvbiwgd2hldGhlciBpdCdzIGNvbnN0cmFpbmVkIG9yIHVuY29uc3RyYWluZWQsIHdoZXRoZXIgaXQncyBjb252ZXggb3Igbm9uLWNvbnZleCwgaXQgaXMgcmVhbGx5IGEga2V5IGZvciBtYWNoaW5lIGxlYXJuaW5nIGluIGEgY291cGxlIG9mIHdheXMuIEZpcnN0LCB3aGVuIHdlIGxvb2sgYXQgbGVhcm5pbmcgYSBtb2RlbCwgYXQgdGhlIGVuZCBvZiB0aGUgZGF5LCB0aGUgcHJvY2VzcyB0byBkbyBzbyBpcyBhbiBvcHRpbWl6YXRpb24gcHJvYmxlbSwgYnV0IGFsc28sIHdoZW4gd2UgdGFsa2VkIGFib3V0IGZpbmRpbmcgdGhlIG9wdGltYWwgc2V0IHBvaW50cyBhbmQgbnVtYmVyIG9mIGVxdWlwbWVudCBpbiB0aGUgcGxhbnQgYW5kIGFsbCBvZiB0aGF0LCB0aGF0J3MgYW5vdGhlciBvcHRpbWl6YXRpb24gcHJvYmxlbS4gU28gYWN0dWFsbHksIHdlIGZvdW5kIGluIG91ciBhcHBsaWNhdGlvbnMsIHdlIHVzZSB2ZXJ5IHNpbWlsYXIgYWxnb3JpdGhtcyBmb3IgYm90aCBvZiB0aG9zZSB0aGluZ3MsIHdoaWNoIGFyZSB0aGUgdHdvIHN0ZXBzIG9mIHRoZSBzb2x1dGlvbiBvZnRlbiwgYnV0IHRoZXkgYWN0dWFsbHkgYXJlIHVzaW5nIHRoZSBzYW1lLCBJIGd1ZXNzLCB0ZWNobm9sb2d5LjwvcD4NCjxwPjxzdHJvbmc+S2VsbHkgQmFycmF6YTo8L3N0cm9uZz48L3A+DQo8cD5Ib3cgZG9lcyB1c2luZyBtYWNoaW5lIGxlYXJuaW5nIGFwcGxpY2F0aW9ucyBmb3IgSFZBQyBjb250cm9sIGNvbXBhcmUgdG8gYXBwbGljYXRpb25zIG9mIG1hY2hpbmUgbGVhcm5pbmcgdG8gb3RoZXIgdGVjaG5vbG9naWVzPzwvcD4NCjxwPjxzdHJvbmc+TWljaGFlbCBCZXJnZXI6PC9zdHJvbmc+PC9wPg0KPHA+WWVhaCwgdGhhdCdzIGEgZ3JlYXQgcXVlc3Rpb24uIFRoYXQncyBzb21ldGhpbmcgSSB3YXMgdGhpbmtpbmcgYWJvdXQgd2hlbiB3ZSB0YWxrZWQgYWJvdXQgdGhpcyBwb2RjYXN0LiBJIHRoaW5rIGl0IGlzIGFjdHVhbGx5IHF1aXRlIGEgZGlmZmVyZW50IHR5cGUgb2YgYXBwbGljYXRpb24gZm9yIGEgY291cGxlIG9mIHJlYXNvbnMuIEkgdGhpbmsgd2hlbiB3ZSBjb21wYXJlIGl0IHRvIHNvbWUgb2YgdGhlIG1vcmUgY29tbW9ubHkga25vd24gbWFjaGluZSBsZWFybmluZyBhcHBsaWNhdGlvbiBvZiBldmVyeSBkYXksIHRoYXQgd2UgdGhpbmsgYWJvdXQsIGxpa2UgR1BULTQgb3IgQ2hhdEdQVCBvciB0aGluZ3MgbGlrZSBpbWFnZSByZWNvZ25pdGlvbiBvciByZWNvbW1lbmRlciBzeXN0ZW1zIGZvciBOZXRmbGl4IHRoYXQgZmluZHMgd2hhdCB0aGV5IHRoaW5rIGlzIHRoZSBtb3N0IHN1aXRhYmxlIFRWIHNob3cgZm9yIGVhY2ggdXNlciwgdGhvc2UgYXJlIGFjdHVhbGx5IHF1aXRlIGRpZmZlcmVudCBiZWNhdXNlIHRoYXQgdXN1YWxseSByZXF1aXJlIG11Y2ggbW9yZSBkYXRhLiBXaGVuIHlvdSBsb29rIGF0IGltYWdlIHJlY29nbml0aW9uLCBldmVyeSBwaXhlbCBpbiB0aGUgZW1haWwgaXMgZ29pbmcgdG8gYmUgYW4gaW5wdXQuIFNvIHlvdXIgbW9kZWwgaGFzIHRob3VzYW5kcywgY2FuIGhhdmUgbWlsbGlvbnMgb2YgaW5wdXRzLiBJdCdzIHRoZSBzYW1lIGZvciBHUFQtNCwgbGFyZ2UgbGFuZ3VhZ2UgbW9kZWxzLiBFdmVyeSB3b3JkIGhhcyB0byBiZSBhYmxlIHRvIGJlIHByZWRpY3RlZC4gSXQncyBtaWxsaW9ucyBvZiBpbnB1dHMuPC9wPg0KPHA+QW5kIHRoZSB3YXkgbWFjaGluZSBsZWFybmluZyBhcHByb2FjaGVzIHRoZXNlIHR5cGVzIG9mIHByb2JsZW0gaXMgYnkgaGF2aW5nIGV2ZW4gbW9yZSBkYXRhLCBJIGd1ZXNzIGFuZCBmb3IgR1BULTQsIHRoZXkgdXNlZCBJJ20gcHJldHR5IHN1cmUgaWYgSSdtIG5vdCB3cm9uZywgdGhleSB1c2UgYSBjb3B5IG9mIHRoZSB3aG9sZSBpbnRlcm5ldCBvZiAyMDE5IG9yIHNvbWV0aGluZyBsaWtlIHRoYXQsIHdoZXJlIHRoZXkgdXNlIHRoZSB3aG9sZSBpbnRlcm5ldCBhcyBhIHdheSB0byBsZWFybiB0aGUgbW9kZWwsIGFuZCBJIHRoaW5rIGl0IHRha2VzIHRoZW0gbW9udGhzIHRvIHJ1biB0aGUgbGVhcm5pbmcgcHJvY2Vzcy4gU28gdGhhdCdzIGtpbmQgb2YgdGhlIHNvbHV0aW9uLiBJIGd1ZXNzIHdoYXQgbWFjaGluZSBsZWFybmluZyBicmluZ3MgaXMsIGlmIHlvdSBoYXZlIGVub3VnaCBkYXRhLCB5b3UgY2FuIGxlYXJuIHRob3NlIGNvbXBsZXggcHJvYmxlbS48L3A+DQo8cD5JbiBIVkFDIGl0J3MgYSBsaXR0bGUgYml0IGRpZmZlcmVudCBiZWNhdXNlIEkgdGhpbmsgd2UncmUgaW4gYSBzaXR1YXRpb24gd2hlcmUgd2UgZG8gaGF2ZSBhIGxvdCBvZiBidWlsZGluZ3MsIGJ1dCBJIGRvbid0IHRoaW5rIHdlIGhhdmUgZW5vdWdoIGJ1aWxkaW5ncyBhbmQgZW5vdWdoIGRhdGEgZnJvbSBidWlsZGluZ3MgaW4gc28gbWFueSBkaWZmZXJlbnQgc2NlbmFyaW9zIHRoYXQgd2UgY2FuLCBxdW90ZS11bnF1b3RlLCBicnV0ZSBmb3JjZSB0aGUgcHJvYmxlbSBsaWtlIHRoZXkgY2FuIHdpdGggaW1hZ2UgcmVjb2duaXRpb24gd2hlcmUgeW91IGhhdmUgYmlsbGlvbnMgb2YgaW1hZ2VzIHlvdSBjb3VsZCBsZWFybiB5b3VyIG1vZGVsIGZyb20uIFNvIGl0IGlzIHZlcnkgaGFyZCwgSSB0aGluayB0byBsZWFybiBraW5kIG9mIGEgZ2xvYmFsIG1vZGVsIG9mIGJ1aWxkaW5ncyB0aGF0IGNhbiBmaW5kIGF1dG9tYXRpY2FsbHkgbGlrZSBhIGJsYWNrIGJveCwgdGhlIG9wdGltYWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9uLiBTbyBpbnN0ZWFkLCBJIHRoaW5rIG91ciBhcHBsaWNhdGlvbiBoYXMgYmVlbiBsb29raW5nIG1vcmUgYXQgZG9pbmcgc29tZXRoaW5nIHRoYXQgdGhleSBkb24ndCBvZnRlbiBkbyBpbiB0aG9zZSBtb3JlIGNvbW1vbiBhcHBsaWNhdGlvbiwgd2hpY2ggaXMgdG8gbGVhcm4gYXV0b21hdGljYWxseSBhdXRvbm9tb3VzbHkgb24gc2l0ZSwgeW91ciBtb2RlbC48L3A+DQo8cD5TbyBpZiB5b3UgdGhpbmsgb2YgQ2hhdEdQVCwgdGhlIG1vZGVsIHdhcyBsZWFybmVkIHVwc3RyZWFtLCBzbyBpdCB3YXMgbGVhcm5lZCBpbiB0aGUgcGFzdC4gSXQncyBzZXQgaW4gc3RvbmUgYW5kIHRoZSBwcm9jZXNzIG9mIGxlYXJuaW5nIGlzIGFjdHVhbGx5LUkgdGhpbmsgd2UgdGhpbmsgbWFjaGluZSBsZWFybmluZyBpcyBhbGwgY29tcHV0ZXJzLCBidXQgdGhlcmUncyBhY3R1YWxseSBhIGxvdCBvZiBodW1hbiBpbnB1dHMgaW4gaXQgYmVjYXVzZSB0aGV5J3JlIGdvaW5nIHRvIGJlIHR1bmluZyBhbmQgdHdlYWtpbmcgdGhlIG1vZGVsIHVudGlsIHRoZXkgZmluZCB0aGUgbW9zdCBzdWl0YWJsZSBvbmUuIFRoZXkncmUgZ29pbmcgdG8gY2xpY2sgdGhlIHJlc3VsdHMsIG1ha2Ugc3VyZSBpdCdzIGFzIGFjY3VyYXRlIGFzIHBvc3NpYmxlLiBUaGVuIHdoZW4gaXQncyBkb25lLCB0aGV5J3JlIGdvaW5nIHRvIHRha2UgdGhhdCBtb2RlbCBhbmQgdXNlIGl0IHRvIHByZWRpY3Qgb25seSBub3QgdG8gbGVhcm4gd2hlbiBpdCdzIGluIHByb2R1Y3Rpb24uPC9wPg0KPHA+SW4gb3VyIGNhc2UsIEkgdGhpbmsgd2UgaGF2ZSB0byBsZWFybiBmcm9tIGluZGl2aWR1YWwgYnVpbGRpbmdzIGFuZCBpZiB3ZSB3YW50IHRvIHJlbW92ZSB0aGUgaHVtYW4gYXNwZWN0IGluIGl0LiBBbmQgaWYgd2Ugd2FudCB0byBJIGd1ZXNzIHJlZHVjZSBpdCBzbyB0aGF0IHRoZSBlbmQgdXNlciBjYW4gZm9jdXMgb24gb3RoZXIgdGhpbmdzLCB3ZSBoYXZlIHRvIGhhdmUgc29tZSBsZXZlbCBvZiBhdXRvbm9tb3VzIGxlYXJuaW5nIG9uIHNpdGUuIEFuZCBJIHRoaW5rIHRoYXQncyB3aGVyZSBtYXliZSBpdCdzIGJldHRlciB0byBzYXksIGl0J3Mgbm90IGFzIGNvbXBsZXggYXMgc29tZSBvZiB0aGUgb3RoZXIgYXBwbGljYXRpb25zIGxpa2UgQ2hhdEdQVCBidXQgaXQgaGFzIGl0cyBvd24gY2xpZW50IGxpc3QsIGl0cyBvd24gc3BlY2lmaWMgc2V0IG9mIGNsaWVudCBsaXN0IHRvIHRhY2tsZSwgd2hlcmUgd2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCB0byByZW1vdmUgdGhlIGh1bWFuIGluIHRoZSBsb29wLCB0aGVyZSdzIGEgbG90IG9mIGF1dG9tYXRlZCBwcm9jZXNzZXMgdGhhdCBoYXBwZW4gaW4gdGhlIGxlYXJuaW5nIHNvIHRoYXQgd2UgZmluZCBhdXRvbWF0aWNhbGx5IGNsZWFuIHRoZSBkYXRhLCBhdXRvbWF0aWNhbGx5IHZhbGlkYXRlIHRoZSBtb2RlbCBhbmQgdGhpbmdzIGxpa2UgdGhhdCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgYXV0b25vbW91cyBsZWFybmluZyBoYXBwZW5zIHByb3Blcmx5LjwvcD4NCjxwPkFuZCBJIHRoaW5rIGFjdHVhbGx5LCBmcm9tIG15IHBlcnNwZWN0aXZlLCBpdCBpcyBwcm9iYWJseSB0aGUgbW9zdCBpbXBvcnRhbnQgcGFydCBpbiBvdXIgYXBwbGljYXRpb24gYmVjYXVzZSBJIHRoaW5rIHRoZSBmdW4gcGFydCwgSSBndWVzcywgaXMgdG8gZmluZCBhIG1vZGVsIGFuZCB2YWxpZGF0ZSBpdCBhbmQgaXQncyBhbGwgd2VsbCBhbmQgZ29vZCwgYW5kIHRoZW4geW91IGNhbiB0aGluaywgb2theSwgdGhlIHdvcmsgaXMgZG9uZSBub3cuIEJ1dCBpbiBwcmFjdGljZSwgSSB0aGluayB3aGF0IG1ha2VzIG9yIGJyZWFrIGEgbWFjaGluZSBsZWFybmluZyBzb2x1dGlvbiBpbiBvdXIgaW5kdXN0cnkgaXMgZXZlcnl0aGluZyB0aGF0IGdvZXMgYXJvdW5kIGl0LCBtYWtpbmcgc3VyZSB0aGF0IGl0J3MgYXBwbGljYWJsZSBpbiBwcmFjdGljZSwgbWFraW5nIHN1cmUgdGhhdCwgYXMgSSBzYWlkLCBkYXRhIGlzIG5ldmVyIGNsZWFuLCB0aGVyZSdzIGFsd2F5cyBnb2luZyB0byBiZSBkYXRhIGlzc3VlcywgY29tbXVuaWNhdGlvbiBpc3N1ZXMsIHNlbnNvciBpc3N1ZXMuIFNvIGJlaW5nIGFibGUgdG8gYXV0b21hdGljYWxseSBkZXRlY3QgdGhhdCBhbmQga25vdyB3aGV0aGVyIHRoaXMgdHdvIGRheXMgZGF0YSBpcyBnb29kIGVub3VnaCB0byBiZSB1c2VkIGZvciB0aGUgbGVhcm5pbmcgb3Igbm90LCBvciB3aGV0aGVyLCBva2F5LCB3ZSdyZSBqdXN0IG5vdCB1c2UgaXQgb3Igd2hldGhlciB5b3VyIGVxdWlwbWVudCBpcyBydW5uaW5nIGluIHN0YWJsZSBjb25kaXRpb25zIG9yIG5vdC48L3A+DQo8cD5BbmQgdGhlbiBtYWtpbmcgc3VyZSB0aGF0IHRoZSBtb2RlbCB5b3UgbGVhcm4gaXMgYWN0dWFsbHkgdmFsaWRhdGVkLiBUaGVyZSdzIGEgbG90IHRoYXQgZ29lcyBhcm91bmQgdGhlIGNvcmUgYWxnb3JpdGhtLCBhbmQgSSB0aGluayB0aGF0J3MgYWN0dWFsbHksIGZyb20gbXkgZXhwZXJpZW5jZSwgd2hhdCByZWFsbHkgbWFrZXMgYSBkaWZmZXJlbmNlLjwvcD4NCjxwPjxzdHJvbmc+S2VsbHkgQmFycmF6YTo8L3N0cm9uZz48L3A+DQo8cD5ZZWFoLCBpdCBqdXN0IHNvdW5kcyBsaWtlIHRoZXJlJ3MgYSBsb3Qgb2YgcmVsYXRpb25zaGlwcyBhbmQgYSBsb3Qgb2YgaGFuZHMgdGhhdCBnbyBpbnRvIG1ha2luZyBzdXJlIHRoYXQgbWFjaGluZSBsZWFybmluZyBpcyBlZmZlY3RpdmUsIGxpa2UgaW4gdGhlb3J5IGFuZCBvbiB0aGUgYmxhY2tib2FyZCwgYnV0IGluIGFjdHVhbCBwcmFjdGljZSwgdGhlcmUncyBhIGxvdCBtb3JlIHRoYXQgZ29lcyBvbiB0byBtYWtlIHN1cmUgYWxsIHRoZSBwYXJ0cyB3b3JrIHRvZ2V0aGVyLjwvcD4NCjxwPjxzdHJvbmc+TWljaGFlbCBCZXJnZXI6PC9zdHJvbmc+PC9wPg0KPHA+WWVhaCwgdGhhdCdzIHJpZ2h0LiBUaGF0J3MgZXhhY3RseSByaWdodC48L3A+DQo8cD48c3Ryb25nPktlbGx5IEJhcnJhemE6PC9zdHJvbmc+PC9wPg0KPHA+U28gd2FzIHRoZSBtYWNoaW5lIGxlYXJuaW5nLWRyaXZlbiBhcHByb2FjaCBkZXNjcmliZWQgaW4geW91ciBhcnRpY2xlIGFwcGxpZWQgdG8gcmVhbC1saWZlIHNldHRpbmdzPzwvcD4NCjxwPjxzdHJvbmc+TWljaGFlbCBCZXJnZXI6PC9zdHJvbmc+PC9wPg0KPHA+WWVhaCwgZm9yIHN1cmUuIEkgbWVhbiBwcmFjdGljZSwgdGhpcyB3YXMgYXBwbGllZCB0byBkb3plbnMgb2Ygc2l0ZXMgYXJvdW5kIHRoZSB3b3JsZC4gTm93IGluIEF1c3RyYWxpYSwgaW4gdGhlIFVTLCBpbiBFdXJvcGUsIGluIFNvdXRoZWFzdCBBc2lhLCB3ZSd2ZSBoYWQgc29tZSBhcHBsaWNhdGlvbnMuIFNvIGRlZmluaXRlbHksIGFuZCBJIHRoaW5rIGl0J3MgcHJvYmFibHkgYSBnb29kIHRpbWUgSSB0aGluayB0byB0YWxrIGEgYml0IGFib3V0IHRoZSBwcm9jZXNzIHRoYXQgZ29lcyBpbnRvIGRldmVsb3BpbmcgdGhpcyB0eXBlIG9mIHNvbHV0aW9uLiBBbmQgc28sIGl0IHN0YXJ0cyBhcyBhIHJlc2VhcmNoIHByb2plY3QuIFRoZSBmaXJzdCBzdGVwIGlzIGNsYXNzaWMsIGl0J3MgbGl0ZXJhdHVyZSByZXZpZXcsIHNlZWluZyB3aGF0J3MgYWxyZWFkeSBleGlzdCBvdXQgdGhlcmUgYW5kIHRoZW4sIHByb3Bvc2UgYXBwcm9hY2guIEFuZCB0aGVuLCB3ZSBsb29rIGF0IHZhbGlkYXRpbmcgd2l0aCBzaXRlIGRhdGEgdG8gYW5zd2VyIHlvdXIgcXVlc3Rpb24gYWJvdXQgcmVhbCBsaWZlIHNldHRpbmcgdG8gdmFsaWRhdGUgbW9kZWxzIG9yIHRyaWFsIG1vZGVscy48L3A+DQo8cD5BbmQgdGhlbiwgdGhlIG5leHQgc3RlcCB0aGF0IHdlIHRha2UgYXQgbGVhc3QgaXMgdG8gZG8gYW4gaW5pdGlhbCBwcm90b3R5cGUuIFNvIHRoaXMgaXMgb2ZmbGluZS4gV2hlbiBJIHNheSBvZmZsaW5lLCBpdCBtZWFucyBpdCdzIG5vdCBydW5uaW5nIGluIGEgYnVpbGRpbmcsIGJ1dCBvbiB0aGUgY29tcHV0ZXIsIHRvbywgYW5kIHRoZSBwb2ludCBvZiB0aGlzIGlzIHRvIHZhbGlkYXRlIHRoZSBwcmVtaXNlIG9mIHRoZSBpZGVhLCBtYWtpbmcgc3VyZSBhcmUgd2UgYWN0dWFsbHkgZ2V0dGluZyBhbnkgc2F2aW5ncyBmcm9tIHRoaXM/IElmIHdlIGZpbmQgdGhhdCBpbiB0aGVvcnkgb24gcGFwZXIgaW4gdGhlIGVuZCwgd2Ugb25seSBnZXQgMC4wMSUgc2F2aW5ncywgdGhlbiBtYXliZSBpdCdzIG5vdCBhIHdvcnRod2hpbGUgZW5kZWF2b3IuIFNvIHRoaXMgaXMgSSB0aGluayBhIHZlcnkgaW1wb3J0YW50IHBhcnQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHByZW1pc2UgbWFrZXMgc2Vuc2UgYW5kIGp1c3QgdGVzdCB0aGUgaWRlYS4gQW5kIGFjdHVhbGx5LCB3ZSB1c2UgYSBsb3Qgb2YgUHl0aG9uIGZvciB0aGlzLiBTbyBJJ20gYW4gZW5naW5lZXIsIHNvIEkgd2FzIHRhdWdodCB3aXRoIHRvb2xzIGxpa2UgTUFUTEFCIGFuZCB0aGluZ3MgbGlrZSB0aGF0LCBidXQgSSBmb3VuZCB0aGF0IFB5dGhvbiBpcyB2ZXJ5IGdvb2QgYW5kIGFjdHVhbGx5IHF1aXRlIHVzZXItZnJpZW5kbHksIHByb2dyYW1taW5nIGxhbmd1YWdlLjwvcD4NCjxwPkFuZCB0aGlzIGlzIGJlY2F1c2UgdGhleSBoYXZlIGEgbG90IG9mIGxpYnJhcmllcywgc28gdGhleSBoYXZlIGEgbG90IG9mIGJhc2ljYWxseSB0b29scyB0aGF0IGhhdmUgYmVlbiBjb250cmlidXRlZCBieSBwZW9wbGUgaW4gdGhlIGluZHVzdHJ5IHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZnJlZSwgdGhhdCBvcGVuIHNvdXJjZSB0aGF0IGNhbiByZXBsaWNhdGUgYSBsb3Qgb2YsIHdoYXQgeW91IGNhbiBmaW5kIGluIG1vcmUgY29tbWVyY2lhbCB0b29scy4gQW5kIHNvLCB3ZSBkbyBhIGxvdCBvZiB3b3JrIGluIFB5dGhvbiB0byBkbyB0aGlzIHByb3RvdHlwaW5nLCB0byBkbyB0aGlzIHZhbGlkYXRpb24uIEFuZCB0aGVuLCB0aGUgbmV4dCBzdGVwIGlzIHRvIGRvIHNvbWUgdGVzdGluZyBvbiB0YXJnZXQgaGFyZHdhcmUsIHRvIHNlZSBpZiB0aGUgc29sdXRpb24gaXMgdmlhYmxlIGluIHRlcm1zIG9mIHRoZSB0aW1lIGl0IHRha2VzIHRvIGxlYXJuIGFuZCB0byBmaW5kIHRoZSBzb2x1dGlvbiBiZWNhdXNlIHdlIGFyZSBsb29raW5nIGF0IHJlYWwgbGlmZSByZWFsIHRpbWUgY29udHJvbHMsIHNvIGl0IGNhbid0IHRha2UgYSBkYXkgdG8gZmluZCB3aGF0IHRoZSBvcHRpbWFsIHNldCBwb2ludCBzaG91bGQgYmUgbm93IGJlY2F1c2UgaXQgd2lsbCBiZSB0b28gbGF0ZS48L3A+DQo8cD5TbyB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBvcHRpbWl6YXRpb24gaXMgZWZmaWNpZW50LiBBbmQgdGhlbiwgdGhlIG5leHQgc3RlcCBpcyBzaXRlIHRyaWFsLCBhbmQgdGhhdCdzIHdoZW4gd2UgZGVwbG95IHByb3RvdHlwZSBvbiwgb3IsIEkgZ3Vlc3MgYXQgdGhpcyBwb2ludCwgdGhleSdyZSBhbHJlYWR5IHF1aXRlIG1hdHVyZSBzb2x1dGlvbnMgb24gc2l0ZSB0byB2ZXJpZnkgd2hhdCBoYXBwZW5zLiBBbmQgaW1wb3J0YW50bHksIHdlIHRyeSB0byBkbyBtZWFzdXJlbWVudHMgYW5kIHZlcmlmaWNhdGlvbiBzdHVkaWVzLiBBbmQgZm9yIHRoZSBhcHByb2FjaCBpbiB0aGUgYXJ0aWNsZSwgd2UgYWN0dWFsbHkgaGFkIHRoZSBjaGFuY2Ugb2YgaGF2aW5nIHRoaXJkIHBhcnR5IHN0dWRpZXMgdGhhdCB3ZXJlIGNvbW1pc3Npb25lZCBieSBOZXcgU291dGggV2FsZXMgZ292ZXJubWVudCBpbiBBdXN0cmFsaWEgZnJvbSBhIGN1c3RvbWVyIHdobyB0aGVyZSB3YXMgYSBzY2hlbWUgdGhhdCBhbGxvd2VkIHRoZW0gdG8gZ2V0IGEgdGhpcmQgcGFydHkgc3R1ZHkgdG8gdmVyaWZ5IHRoYXQgdGhlIHNvbHV0aW9uIGlzIGFjdHVhbGx5IGRlbGl2ZXJlZC48L3A+DQo8cD5BbmQgc28sIEkgYWdyZWUsIEkgdGhpbmsgdGhpcyBpcyByZWFsbHkga2V5IHRvIHZhbGlkYXRlIGFuZCB0byBpbmNyZWFzZSBjb25maWRlbmNlIGluIHRoZSBzb2x1dGlvbi4gQW5kIHRoZW4gYWZ0ZXIgdGhpcywgZm9yIHVzLCBpdCdzIHJlYWxseSBhYm91dCBwcm9kdWN0aXppbmcgdGhlIHNvbHV0aW9uLiBXZSBsb29rIGF0IGl0IGFzLUkgdGhpbmsgYSBrZXkgcGFydCBpcyB0aGF0IHdlIHdhbnQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgYSBzb2x1dGlvbiB0aGF0J3MgZmxleGlibGUgZW5vdWdoIGZvciBhIGxvdCBvZiBkaWZmZXJlbnQgcGxhbnRzLiBXZSBrbm93IGVhY2ggcGxhbnQgaXMgYSBsaXR0bGUgYml0IGRpZmZlcmVudCwgc29tZXRpbWUgYSBsb3QgZGlmZmVyZW50LiBBbmQgaWYgeW91IGhhdmUgYSBzb2x1dGlvbiwgSSB0aGluayBJJ3ZlIHNlZW4gYSBsb3QgaW4gdGhlIGxpdGVyYXR1cmUgdGhhdCB3b3JrcyBmb3IgYSBzaXRlIGFuZCB0aGF0IGxvb2tzIGdyZWF0LCBpdCBtaWdodCBzdGlsbCBiZSBhIGxvdCBvZiB3b3JrIHRvIGFwcGx5IGl0IHRvIGFub3RoZXIgc2l0ZS4gU28gd2UgbG9vayBhdCBtYWtpbmcgc3VyZSB3ZSBjYW4gaGFuZGxlIHRoaW5ncyBsaWtlIGZhdWx0IG9uIGNoaWxsZXJzIGFuZCBtYWtlIHN1cmUgdGhhdCB3ZSBhdXRvbWF0aWNhbGx5IGZpbmQsIHRha2UgdGhhdCBpbnRvIGFjY291bnQgYW5kIGZpbmQgd2hhdCBhcmUgdGhlIGJlc3QgbmV4dCBjaGlsbGVyIHRvIGxvb2sgYXQuPC9wPg0KPHA+V2Ugd2FudCB0byBtYWtlIHN1cmUgd2UgY2FuIGhhbmRsZSBhbGwgc29ydHMgb2Ygc2NlbmFyaW9zIGFuZCB0aGF0J3MgYSBiaWcgcGFydCBvZiB0aGUgd29yay4gQW5kIHllYWgsIEkgdGhpbmsgdG8gdGhlIHBvaW50IG9mIHRyYW5zcGFyZW5jeSB3ZSB0YWxrZWQgYWJvdXQgZWFybGllciwgYWdhaW4sIGZvciB1cywgdGhlcmUncyBhIGZldyB0aGluZ3MgYnkgbG9va2luZyBhdCBtYWtpbmcgc3VyZSB0aGUgdXNlciBpbnRlcmZhY2UgdGVsbHMgdGhlIGVuZCB1c2VyIGV4YWN0bHkgd2hhdCdzIGhhcHBlbmluZyBpbiB0aGUgYnVpbGRpbmcgYW5kIGluIHBhcnRpY3VsYXIsIHdoeSBpcyB0aGUgbWFjaGluZSBsZWFybmluZyBtYWtpbmcgdGhpcyBkZWNpc2lvbiwgcmlnaHQ/IFNob3dpbmcgd2hhdCBhcmUgYWxsIHRoZSBkaWZmZXJlbnQgc2NlbmFyaW9zIHRoYXQgdGhlIG1hY2hpbmUgbG9va2VkIGF0IGFuZCBzaG93IHRoYXQsIG9rYXksIHRoaXMgb25lIHdhcyB0aGUgbW9zdCBlZmZpY2llbnQuIEJlY2F1c2Ugb3RoZXJ3aXNlLCBhcyBzb29uIGFzIHNvbWV0aGluZyBnb2VzIHdyb25nIGluIHRoZSBidWlsZGluZywgZXZlbiBpZiBpdCdzIG5vdCBuZWNlc3NhcmlseSB0aGUgZmF1bHQgb2YgdGhlIG1hY2hpbmUgbGVhcm5pbmcsIHRoZSBmaXJzdCB0aGluZyB3b3VsZCBiZSBsaWtlLCAiV2VsbCwgbGV0J3MganVzdCB0dXJuIGl0IG9mZiBiZWNhdXNlIHdlIGRvbid0IHJlYWxseSBrbm93IHdoYXQgaXQncyBkb2luZy4iPC9wPg0KPHA+U28gSSB0aGluayBnaXZpbmcgdGhhdCB0cmFuc3BhcmVuY3ksIGdpdmluZyB0aGF0IGZlZWRiYWNrIHRvIHRoZSB1c2VyIGlzIGtleS4gQW5vdGhlciBhc3BlY3QgYWxvbmcgdGhlIHNhbWUgbGluZXMgaXMgdG8gYWxsb3cgdGhlIGVuZCB1c2VyIHRvIG92ZXJyaWRlIHNwZWNpZmljIHBhcnQgb2YgdGhlIG9wdGltaXphdGlvbiBzbyB0aGF0IGlmIHRoZXkgbmVlZCB0byBzZXQgdGhlIGNvbmRlbnNlciB3YXRlciBmbG93IHRvIGRlc2lnbiBmb3Igd2hhdGV2ZXIgcmVhc29uLiBXZSB3YW50IHRvIGFsbG93IHRoZW0gdG8gZG8gaXQgd2l0aG91dCB0dXJuaW5nIG9mZiBhbGwgdGhlIG90aGVyIG9wdGltaXphdGlvbi4gSSB0aGluayB0aGF0J3Mgc29tZXRoaW5nIHRoYXQgd2hlbiB3ZSB3b3JrZWQgd2l0aCBlbmQgdXNlcnMgd2FzIHJlYWxseSBoZWxwZnVsIHRvIGdpdmUgdGhlbSBjb25maWRlbmNlIHRoYXQgdGhleSBjYW4gdHJvdWJsZXNob290IGlzc3VlcyB3aGlsZSBoYXZpbmcgdGhpcyB0eXBlIG9mIHN5c3RlbSBvbiBzaXRlLjwvcD4NCjxwPjxzdHJvbmc+S2VsbHkgQmFycmF6YTo8L3N0cm9uZz48L3A+DQo8cD5TbyB3aGF0IGNhbiBiZSBkb25lIHRvIG1ha2Ugc3VyZSBmYWNpbGl0eSBtYW5hZ2VycyBhbmQgdGVhbXMgY2FuIGJlIHNldCB1cCBmb3Igc3VjY2VzcyB3aGVuIHJ1bm5pbmcgYnVpbGRpbmdzIHRoYXQgdXNlIG1hY2hpbmUgbGVhcm5pbmc/PC9wPg0KPHA+PHN0cm9uZz5NaWNoYWVsIEJlcmdlcjo8L3N0cm9uZz48L3A+DQo8cD5TbyBhcyBJIHNhaWQsIHdlIGxvb2sgYXQgdXNlciBpbnRlcmZhY2UsIHdlIGxvb2sgYXQgZ2l2ZSB0aGVtIGEgbG90IG9mIGZlZWRiYWNrLCBhbmQgYWdhaW4sIGFsbG93aW5nIHRoZW0gdG8gb3ZlcnJpZGUgcGFydCBvZiB0aGUgbG9naWMgSSB0aGluayBpcyByZWFsbHkga2V5LiBCdXQgYmV5b25kIHRoYXQsIEkgdGhpbmsgYSBsb3Qgb2YgbmV3IHRlY2hub2xvZ3ksIGl0J3MganVzdCBhYm91dCB0cmFpbmluZywgaXQncyBhYm91dCBnZXR0aW5nIHRoZW0gaW52b2x2ZWQgYXMgd2VsbCwgYmVjYXVzZSBJIHRoaW5rIHRoZSBmYWNpbGl0eSBtYW5hZ2VycywgcGVvcGxlIG9uIHNpdGUsIHRoZXkga25vdyB0aGV5J3JlIGJ1aWxkaW5nIGJldHRlciB0aGFuIGFueW9uZSwgaXMgdGhlcmUgYWx3YXlzIHNvbWV0aGluZyB3ZSBsZWFybiBmcm9tIHRoZW0uIEFuZCBJIGZpbmQgZ2V0dGluZyB0aGUgYnV5LWluIGlzIGtleS4gU28gdGhleSBoYXZlIHRvIGJlIGludm9sdmVkIGZyb20gZGF5IG9uZSBpbiB1bmRlcnN0YW5kaW5nIHdoYXQgd2UncmUgcHJvcG9zaW5nIGFuZCBpbiBzZWVpbmcgdGhlIHZhbHVlIGluIGl0LjwvcD4NCjxwPjxzdHJvbmc+S2VsbHkgQmFycmF6YTo8L3N0cm9uZz48L3A+DQo8cD5LaW5kIG9mIGhlbHBpbmcgdGhlIGVuZCB1c2VycyBrbm93IHRoZXkncmUgYnVpbGRpbmcgYmV0dGVyLCBob3BlZnVsbHkuPC9wPg0KPHA+PHN0cm9uZz5NaWNoYWVsIEJlcmdlcjo8L3N0cm9uZz48L3A+DQo8cD5ZZWFoLiBJbiBhIHdheS48L3A+DQo8cD48c3Ryb25nPktlbGx5IEJhcnJhemE6PC9zdHJvbmc+PC9wPg0KPHA+V2hhdCBvdGhlciBhcHBsaWNhdGlvbnMgZG8geW91IGhvcGUgdG8gdXNlIG1hY2hpbmUgbGVhcm5pbmcgZm9yIHdoZW4gaXQgY29tZXMgdG8gSFZBQyBjb250cm9sPzwvcD4NCjxwPjxzdHJvbmc+TWljaGFlbCBCZXJnZXI6PC9zdHJvbmc+PC9wPg0KPHA+SSBoYXZlIGEgZmV3IHRoaW5ncy4gRmlyc3Qgb2YgYWxsLCB0aGVyZSBhcmUgc29tZSB3ZSBoYXZlIGFscmVhZHkgd29ya2VkIG9uIHRoYXQgYXJlIHNpbWlsYXIgdGVjaG5vbG9neSwgYnV0IGZvciBzbGlnaHRseSBkaWZmZXJlbnQgb3V0Y29tZXMuIEkgbWVudGlvbmVkIGl0IGVhcmxpZXIsIGJ1dCBwcmVkaWN0aXZlIG1haW50ZW5hbmNlIEkgdGhpbmsgaXMga2V5LCBpZiB3ZSBoYXZlIG1vZGVscywgaWYgd2UgY2FuIHByZWRpY3QgdGhlIGJlaGF2aW9yIG9mIHRoZSBidWlsZGluZywgd2Ugd2FudCB0byBkZXRlY3QgYXV0b21hdGljYWxseSB3aGVuIGl0IGdldHMgd29yc2UuIEFuZCBpdCdzIG5vdCBhbHdheXMgdGhhdCBvYnZpb3VzIHN0cmFpZ2h0IGF3YXkgYmVjYXVzZSB3aGVuIHlvdSBsb29rIGF0IGEgY2hpbGxlciwgdG8ganVzdCB0YWxrIGJhc2ljcywgd2Uga25vdyB0aGF0IHRoZSBlZmZpY2llbmN5IG9mIGEgY2hpbGxlciBpcyBnb2luZyB0byBjaGFuZ2UgYmFzZWQgb24gdGhlIGxvYWQsIGJhc2VkIG9uIHRoZSB0ZW1wZXJhdHVyZXMsIHRoZSBmbG93cyBhbmQgdGhpbmdzIGxpa2UgdGhhdC4gU28gaWYgeW91IGxvb2sgYXQgeW91ciBjaGlsbGVyIGFuZCB0aGUgQ09QIGlzIHRlbGxpbmcgeW91IHNpeCBvciBJIGRvbid0IGtub3cgd2hhdCB0aGUga2lsb3dhdHQgcGF0dGVybiBpcywgMC41LCBJIGRvbid0IHRoaW5rIHRob3NlIHRyYW5zbGF0ZSwgYnV0IEkgdGhpbmsgYXQgbGVhc3QgaXQgdG9vayBkaWZmZXJlbnQgcGVvcGxlLiBZb3UgZG9uJ3Qga25vdywgaXMgaXQgZ29vZCwgaXMgaXQgYmFkPyBJdCdzIG5vdCBzdXJlLCByaWdodD88L3A+DQo8cD5UaGUgZGVzaWduIG1pZ2h0IGJlIDAuNCwgYnV0IHRoYXQncyBhIGZ1bGwgbG9hZC4gVGhlIElQTFYgdmFsdWUgaXMgYWxzbyBqdXN0IG9uZSB2YWx1ZS4gU28gaXQgY2FuIGJlIGhhcmQgdG8ga25vdyBpcyBpdCBydW5uaW5nIGVmZmljaWVudGx5IHJpZ2h0IG5vdyBiYXNlZCBvbiB0aGUgY29uZGl0aW9ucy4gU28gdXNpbmcgdGhlIG1vZGVsIHRvIHByZWRpY3Qgd2hhdCBpdCBzaG91bGQgYmUgZG9pbmcgdmVyc3VzIHdoYXQgaXQncyBkb2luZyBub3cgaW4gdGhvc2UgY29uZGl0aW9ucywgSSB0aGluayBpcyByZWFsbHkgaGVscGZ1bC4gV2UndmUgYWxzbyBiZWVuIGxvb2tpbmcgYXQsIHRoZXJlJ3MgbW9yZSBhbmQgbW9yZSwgZm9yIGluc3RhbmNlLCBmcmVlIGNvb2xpbmcsIGFpciBjb29sIGNoaWxsZXJzIHdpdGggZnJlZSBjb29saW5nLiBJIHRoaW5rIHdlJ3ZlIHNlZW4gbW9yZSBhbmQgbW9yZSBhcHBsaWNhdGlvbnMgbGlrZSB0aGF0LiBXZSd2ZSBiZWVuIHdvcmtpbmcgb24gaW50ZWdyYXRpbmcgdGhvc2UgdHlwZXMgb2YgbWFjaGluZXMsIG1ha2luZyBzdXJlIHRoZSBtb2RlbHMgYXBwbHkgb3IgaWYgbm90IGJlaW5nIGFkYXB0ZWQgdG8gdGhhdC4gQW5kIEkgdGhpbmsgZm9yIG1lLCB0aGUgbmV4dCBzdGVwIGlzIHRvIHJlYWxseSBsb29rIGF0IHRoZSBmdWxsIEhWQUMgc3lzdGVtIGJleW9uZCB0aGUgY2VudHJhbCBwbGFudCwgbG9va2luZyBhdCBhbGwgdGhlIGFpcnNpZGUgZXF1aXBtZW50LjwvcD4NCjxwPkkgdGhpbmsgZm9yIHVzIGl0IG1hZGUgc2Vuc2UgdG8gbG9vayBhdCB0aGUgcGxhbnQgaW5pdGlhbGx5IGJlY2F1c2UgaXQncyBjZW50cmFsaXplZCwgaXQncyBsZXNzIGVxdWlwbWVudCB0byBsb29rIGF0LiBJIGd1ZXNzIGl0J3MgbW9yZSBiYW5nIGZvciB5b3VyIGJ1Y2sgcmVhbGx5LCBiZWNhdXNlIHlvdSBjYW4gZm9jdXMgbGVzcyBvbiB0aGUgcGxhbnQgYW5kIGl0IHVzZXMgYSBsb3Qgb2YgZW5lcmd5LiBTbyB0aGUgc2F2aW5ncyB5b3UgaGF2ZSB0aGVyZSBhcmUgcXVpdGUgc2lnbmlmaWNhbnQgc3RyYWlnaHQgYXdheS4gQnV0IEkgdGhpbmsgdGhlcmUgaXMgYmVuZWZpdCB0byBtYWtpbmcgc3VyZSB0aGF0IHRoZSB3aG9sZSBIVkFDIHN5c3RlbSwgaW5jbHVkaW5nIHRoZSBhaXJzaWRlLCB3aGljaCBpcyBtdWNoIG1vcmUgZGlzdHJpYnV0ZWQsIGlzIHJ1bm5pbmcgZWZmaWNpZW50bHkgYWx0b2dldGhlciwgaG9saXN0aWNhbGx5LiBTbyB0aGF0J3Mga2luZCBvZiBteSByZWFsaXN0aWMgYW5zd2VyLiBJIHRoaW5rIGJleW9uZCB0aGF0LCB0aGVyZSBhcmUgYSBsb3Qgb2YgaW50ZXJlc3RpbmcgYXBwbGljYXRpb24gdGhhdCBJJ3ZlIHNlZW4gb3IgaGVhcmQgb2Ygb3IgdGhvdWdodCBhYm91dC4gU29tZSBvZiB0aGVtIHNpbmNlIHNvbWUgZGlzY3Vzc2lvbnMgYXQgY29uZmVyZW5jZXMsIGluY2x1ZGluZyBBU0hSQUUgY29uZmVyZW5jZXMgb3Igb3RoZXJzLCBqdXN0IHRvIG5hbWUgYSBmZXcuPC9wPg0KPHA+V2hhdCBJIHdvdWxkIGNhbGwgc2VtYW50aWMgbW9kZWxpbmcsIHdoaWNoIGlzIHRvIGJlIGFibGUgdG8sIHdoZW4geW91IGdldCBhIGRhdGEgZnJvbSBzaXRlLCBiZWluZyBhYmxlIHRvIGRldGVjdCB3aGF0IHR5cGUgb2YgZGF0YSBpdCBpcyB3aXRob3V0IGhhdmluZyBzZXJpb3VzbHkgaW4gbmVlZCBvZiBzb21lb25lIHRlbGxpbmcgeW91LCBva2F5LCB0aGlzIGlzIG15IGNoaWxsZXIgcGxhbnQgdGVtcGVyYXR1cmUsIHRoaXMgaXMgbXkgY2hpbGxlciwgdGhpcyBpcyBteSBBSFUuIEJlaW5nIGFibGUgdG8gYXV0b21hdGljYWxseSBkZXRlY3QgZXF1aXBtZW50LCBkYXRhIHBvaW50cyBhbmQgY29tcG9uZW50cyBiYXNlZCBvbiB0aGUgZGF0YSB0aGF0J3MganVzdCBhdmFpbGFibGUgZnJvbSB0aGUgbmV0d29yayBpcyBzb21ldGhpbmcgdGhhdCBjb3VsZCByZWR1Y2UgYSBsb3Qgb2YgaW50ZWdyYXRpb24gd29yayB0aGF0IHNvbWV0aW1lIGlzIGEgcHJvaGliaXRpdmUgY29zdCBvZiBpbnN0YWxsaW5nIGEgbmV3IHN5c3RlbS4gSSd2ZSBzZWVuIHNvbWUgdGFsa3MgYXMgd2VsbCwgb2Z0ZW4gcXVpdGUgaW50ZXJlc3RpbmcgYW5kIGZvciBhbm9tYWx5IGFuZCBmdWxsIGRldGVjdGlvbiB0byB0cnkgdG8gbGVhcm4gdGhlIGh1bWFuIHJlc3BvbnNlIHRvIHZhcmlvdXMgaXNzdWVzIHNvIHRoYXQgdGhlbiBhZnRlciBhIHdoaWxlLCB0aGUgc3lzdGVtIGNhbiBtYWtlIHRoZSBkZWNpc2lvbnMgdGhlbXNlbHZlcy4gWWVhaCwgSSB0aGluayB0aGVyZSdzIGEgbG90IG9mIHBvc3NpYmxlIGFwcGxpY2F0aW9ucy4gSXQncyBxdWl0ZSBleGNpdGluZyBmb3Igc3VyZS48L3A+DQo8cD48c3Ryb25nPktlbGx5IEJhcnJhemE6PC9zdHJvbmc+PC9wPg0KPHA+SXQncyBhIG5ldyBmcm9udGllciBJIHRoaW5rLCBpbiBhIGxvdCBvZiB3YXlzLCBidXQgZGVmaW5pdGVseSBmb3IgYnVpbGRpbmcgc3lzdGVtcywgSSBrbm93IHRoZXJlJ3MgYSBsb3Qgb2YgYnV6eiBhcm91bmQgbWFjaGluZSBsZWFybmluZyBhbmQgYXBwbHlpbmcgdGhhdCB0byBIVkFDIGFuZCBjb250cm9sIGFuZCBwbGFudHMgYW5kIHN0dWZmIGxpa2UgdGhhdCB0byBtYWtlIGl0IGp1c3QgdGhlIGVuZXJneSBzYXZpbmdzIGluIHRlcm1zIG9mIGFjdHVhbCBlbmVyZ3ksIGJ1dCBhbHNvIG1vbmV5IGFuZCB0aGluZ3MgbGlrZSB0aGF0IGlzIHByb2ZvdW5kLiBBbmQgeW91IGRpZCB0YWxrIGFib3V0IGNvc3QgcHJvaGliaXRpdmUsIHN0dWZmIGxpa2UgdGhhdC4gU28gb24gdGhhdCBub3RlLCB0YWxrIGFib3V0IG1vbmV5LCBjYW4gbWFjaGluZSBsZWFybmluZyBzYXZlIHN0YWtlaG9sZGVycyBtb25leSB3aGVuIGFwcGxpZWQgZWZmZWN0aXZlbHk/PC9wPg0KPHA+PHN0cm9uZz5NaWNoYWVsIEJlcmdlcjo8L3N0cm9uZz48L3A+DQo8cD5ZZWFoLCBmb3Igc3VyZS4gQW5kIEkgdGhpbmsgdGhlcmUncyBzZXZlcmFsIGRpZmZlcmVudCB3YXlzLiBXZSB0YWxrZWQgYWJvdXQgb3B0aW1hbCBjb250cm9scy4gU28gdGhpcyBjYW4gc2F2ZSBtb25leSBieSByZWR1Y2luZyB0aGUgc3lzdGVtIGFuZCBlbmVyZ3kgY29uc3VtcHRpb24sIHNvIHRoYXQncyBtYXliZSB0aGUgbW9zdCBvYnZpb3VzIG9uZSwgYnV0IHByZWRpY3RpdmUgbWFpbnRlbmFuY2UsIGF1dG9tYXRlZCBkZXRlY3Rpb25zIHRoYXQgY2FuIGFsbG93IHRvIHJlZHVjZSBjb3N0bHkgcmVwYWlycyBpZiB0aGV5IGNhbiBiZSBkZXRlY3RlZCBlYXJseSBlbm91Z2ggYW5kIGp1c3QgYmUgbWFuYWdlZCBieSBtYWludGVuYW5jZSByYXRoZXIgdGhhbiBoYXZpbmcgdG8gcmVwbGFjZSBhbiBlcXVpcG1lbnQuIEFuZCB0aGVuLCB0aGVyZSBpcyBhbHdheXMgdGhlIGlkZWEgb2YgYXV0b21hdGluZyB0YXNrLCByaWdodD8gSSB0YWxrZWQgYWJvdXQgaW50ZWdyYXRpb24gb2YgZGF0YS4gVGhlcmUncyBhIGxvdCBvZiBkZXBsb3ltZW50IHRhc2tzIHdoZW4gd2UgaGF2ZSB0byBkZXBsb3ksIGZvciBpbnN0YW5jZSwgYSBjb250cm9sIHN5c3RlbS4gVGhlcmUncyBhIGxvdCBvZiB0dW5pbmcuIFRoZXJlJ3MgYSBsb3Qgb2YgaHVtYW4gYWN0aW9ucyB0aGF0IGFyZSByZXF1aXJlZCwgYW5kIHdlIGtub3cgZmFjaWxpdHkgbWFuYWdlbWVudCB0ZWFtIG1pZ2h0IGJlIHNwZW5kaW5nIGEgbG90IG9mIHRpbWUgdHJ5aW5nIHRvIHRyb3VibGVzaG9vdCBpc3N1ZXMsIGxvb2tpbmcgYXQgdGhlIGRhdGEgYW5kIHRoaW5ncyBsaWtlIHRoYXQuPC9wPg0KPHA+U28gSSB0aGluayB3ZSBjYW4gc2F2ZSB0aGVtIGEgbG90IG9mIHRpbWUgZG9pbmcgdGhvc2UgbW9yZSBtdW5kYW5lIHRhc2tzIGJ5IGJlaW5nIG1vcmUgYXV0b21hdGVkIGFuZCB0aGVuLCBhbGxvd2luZyB0aGVtIHRvIGZvY3VzIG9uIG1vcmUgdmFsdWUtZHJpdmVuIHRhc2tzIG9yIHRhc2tzIHRoYXQgcmVhbGx5IGFkZCB2YWx1ZSB0byB0aGVpciBzdGFrZWhvbGRlcnMuIFNvIHllYWgsIEkgdGhpbmsgdGhlcmUncyBkZWZpbml0ZWx5IHF1aXRlIGEgZmV3IGF2ZW51ZXMgZm9yIHRoYXQuPC9wPg0KPHA+PHN0cm9uZz5LZWxseSBCYXJyYXphOjwvc3Ryb25nPjwvcD4NCjxwPldoYXQgd291bGQgeW91IHJlY29tbWVuZCBlbmdpbmVlcnMgZG8gaWYgdGhleSB3YW50IHRvIGxlYXJuIG1vcmUgYWJvdXQgYXBwbHlpbmcgbWFjaGluZSBsZWFybmluZyBhbmQgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UgaW4gSFZBQz88L3A+DQo8cD48c3Ryb25nPk1pY2hhZWwgQmVyZ2VyOjwvc3Ryb25nPjwvcD4NCjxwPlllYWgsIEkgbWVudGlvbmVkIGl0IGVhcmxpZXIgYWN0dWFsbHksIGJ1dCBJIHRoaW5rIFB5dGhvbiBpcyBkZWZpbml0ZWx5IGEgZ3JlYXQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2Ugd2l0aCBhbHJlYWR5IGEgbG90IG9mIGxpYnJhcmllcywgYWxyZWFkeSBhIGxvdCBvZiBzb2x1dGlvbnMgdG8gYSBkZWdyZWUgb3IgYXQgbGVhc3QgcGFydCBvZiB0aGUgc29sdXRpb25zIHRoYXQgYXJlIGFscmVhZHkgcHJlc2VudCB0aGVyZS4gSSB3b3VsZCBlbmNvdXJhZ2UgcGVvcGxlIHRvIHRyeSB0byBsZWFybi4gSSB0aGluayBpZiB5b3UgbG9vayBhdCBtYWNoaW5lIGxlYXJuaW5nLCBpdCdzIGFsc28gdGhlIGxvbmcgd2F5IHRoYXQncyBwcm9tb3RlZCBhIGxvdCBhbnl3YXkuIEkgdGhpbmsgSSB3b3VsZCBhbHNvIHJlY29tbWVuZCB0byBsb29rIGF0IGFydHMgbGl0ZXJhdHVyZSwgdGhlcmUncyBhbHJlYWR5IGEgbG90IG9mIGludGVyZXN0aW5nIHBhcGVycyBhbmQgdmFyaW91cyBzb2x1dGlvbnMsIGFuZCBJIHRoaW5rIHdlIGFyZSBnZXR0aW5nIHRvIHRoZSBwb2ludCB3aGVyZSB0aGVyZSBhcmUgc29tZSBzb2x1dGlvbnMgdGhhdCBjYW4gYWxyZWFkeSBiZSB1c2VkLiBTbyB0aGVyZSdzLXRvIGEgZmV3IGRpZmZlcmVudCBkZWdyZWVzLjwvcD4NCjxwPlRoZXJlIGFyZSBzb21lIGZ1bGx5IGZvcm1lZCBzb2x1dGlvbnMgdGhhdCBJIHRoaW5rIGNhbiBiZSBhcHBsaWVkIHRvIGJ1aWxkaW5ncy4gVGhlcmUncyBhbHNvIHNvbWUgYWxnb3JpdGhtcyB0aGF0IG1heSBiZSBhcHBsaWVkIHRvIHlvdXIgcHJvY2Vzcy4gSWYgeW91J3JlIGRlc2lnbmluZyBhIHN5c3RlbSwgaWYgeW91J3JlIGRlc2lnbmluZyBhIHNlcXVlbmNlIG9mIHByZXBhcmF0aW9uIGZvciB5b3VyIGJ1aWxkaW5nLCB0aGV5IG1heSBhbHJlYWR5IGJlIHNvbWUgYWxnb3JpdGhtcyB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgb25lLW9mZiwganVzdCB0byBydW4gb24geW91ciBidWlsZGluZyBvciBvbiB5b3VyIHNldHVwIHNvIHRoYXQgeW91IGNhbiB0cnkgdG8gZmluZCBpbnNpZ2h0cy4gU28gSSB0aGluayB3ZSBhcmUgc3RhcnRpbmcgdG8gYmUgYXQgdGhlIHBvaW50IHdoZXJlIGl0IHRlY2hub2xvZ3kgaXMgYmVjb21pbmcgbW9yZSBtYXR1cmUsIGFuZCBJIHdvdWxkIGVuY291cmFnZSB0byBsb29rIGF0LCBJIHdvdWxkIHNheSBpbiB0aGUgbWFya2V0LCB3aGF0IGFyZSB0aGUgc29sdXRpb25zIGFscmVhZHkgYXZhaWxhYmxlPyBBcyBJIHNhaWQsIEkgZGVmaW5pdGVseSBlbmNvdXJhZ2UgYW55b25lIHRvIHN0YXJ0IHRvIGxvb2sgaW50byBob3cgY2FuIEkgYXBwbHkgaXQgYWxtb3N0IGZyb20gc2NyYXRjaC48L3A+DQo8cD5UaGVyZSdzIGFscmVhZHkgYSBsb3Qgb2YgZ29vZCBtYWNoaW5lIGxlYXJuaW5nIGxpYnJhcmllcywgYSBsb3Qgb2YgZ29vZCBvcHRpbWl6YXRpb24gbGlicmFyaWVzIGluIFB5dGhvbiwgZm9yIGluc3RhbmNlLiBUaGVyZSdzIGFsc28gYW5vdGhlciBsYW5ndWFnZSBjYWxsZWQgSnVsaWEgdGhhdCdzIGdldHRpbmcgcG9wdWxhci4gQW5kIGZvciB0aGUgZW5naW5lZXJzLCBJIHRoaW5rIGl0IGNhbiBiZSBhIGxpdHRsZSBiaXQgZGF1bnRpbmcgaW5pdGlhbGx5LiBNYXliZSBJIGp1c3Qgc3BlYWsgZm9yIG15c2VsZiwgYnV0IHdoZW4gd2UgdGFsayBhYm91dCBwcm9ncmFtbWluZyBsYW5ndWFnZXMsIGl0IGNhbiBmZWVsIGxpa2UgYSBiaWcgc3RlcC4gQW5kIHdlIG1heSBiZSBtb3JlIHVzZWQgdG8gdG9vbHMgbGlrZSBNQVRMQUIgb3Igb3RoZXJzLCBidXQgSSB0aGluayB3ZSBoYXZlIGEgcG9pbnQgd2hlcmUgd2l0aCBhbGwgdGhlIGxpYnJhcmllcywgd2l0aCBhbGwgdGhlIHRvb2xzIHRoYXQgZ28gYXJvdW5kIGl0LCB3aGVyZSB5b3UgY2FuIGNyZWF0ZSBhIHNpbWlsYXIgZXhwZXJpZW5jZSB0aGF0IHdvdWxkIG1ha2UgZW5naW5lZXIgYXQgaG9tZSB3aXRoIHRob3NlIHR5cGVzIG9mIHRvb2xzLjwvcD4NCjxwPkFuZCBhIGxvdCBvZiB0aGVtIGFyZSBmcmVlLCBhbmQgYSBsb3Qgb2YgdGhlbSBoYXZlIGEgbG90IG9mIHN1cHBvcnQgZnJvbSB0aGUgaW5kdXN0cnkgYmVjYXVzZSBQeXRob24gaXMgdXNlZCBpbiBBSSwgaW4gbWFjaGluZSBsZWFybmluZywgc28gdGhlcmUncyBhIGxvdCBvZiBwZW9wbGUgY29udHJpYnV0aW5nIHRvIGl0IGFuZCBhZGRpbmcgYSBsb3Qgb2YgYnVpbGRpbmcgYmxvY2tzIHRoYXQgY2FuIGJlIHJldXNlZC48L3A+DQo8cD48c3Ryb25nPktlbGx5IEJhcnJhemE6PC9zdHJvbmc+PC9wPg0KPHA+V2UgZGVmaW5pdGVseSByZWNvbW1lbmQgZW5naW5lZXJzIHdobyBtYXliZSBhcmVuJ3QgZmFtaWxpYXIgd2l0aCBwcm9ncmFtbWluZyBsYW5ndWFnZXMgdG8gcHJvYmFibHkgbGVhcm5pbmcgYSBuZXcgbGFuZ3VhZ2UgZXNzZW50aWFsbHksIHNvIHRoZXkgY2FuIGp1c3QgYmVjb21lIG1vcmUgZmFtaWxpYXJpemVkIHdpdGggdGhhdC48L3A+DQo8cD5BcmUgdGhlcmUgYW55IHByb2plY3RzIG9yIGRldmVsb3BtZW50cyBpbiBtYWNoaW5lIGxlYXJuaW5nIGZvciBidWlsZGluZyBzeXN0ZW1zIHRoYXQgeW91J3JlIGV4Y2l0ZWQgYWJvdXQ/PC9wPg0KPHA+PHN0cm9uZz5NaWNoYWVsIEJlcmdlcjo8L3N0cm9uZz48L3A+DQo8cD5Gb3Igc3VyZS4gSSB0aGluayB3ZSBhcmUgbG9va2luZyBhdCBtb3JlIGFuZCBtb3JlIHJlbmV3YWJsZSBlbmVyZ3kgaW4gYnVpbGRpbmdzLCBhbmQgSSB0aGluayB0aGF0J3MgZGVmaW5pdGVseSBhbiBpbnRlcmVzdGluZyBhdmVudWUuIFdlIHdvcmtlZCBvbiBhIHByb2plY3QgYW5kIGFjdHVhbGx5IHdlIHByZXNlbnRlZCBvbiB0aGlzIEFTSFJBRSBjb25mZXJlbmNlIGluIFRhbXBhIGxhc3QgeWVhciB0byBpbnRlZ3JhdGUgc29sYXIgdGhlcm1hbCB3aXRoIGFic29ycHRpb24gY2hpbGxlcnMgYW5kIGEgbWl4IG9mIG5vcm1hbCBlbGVjdHJpY2FsIGNoaWxsZXJzIGFuZCBzdG9yYWdlLiBBbmQgSSB0aGluayB0aG9zZSBhcmUgcXVpdGUgaW50ZXJlc3RpbmcuIFRoZXkncmUgbm90IGV4dHJlbWVseSBjb21tb24ganVzdCB5ZXQsIGJ1dCBJIHRoaW5rIGxvb2tpbmcgaW4gdGhlIGZ1dHVyZSwgd2UncmUgZ29pbmcgdG8gc2VlIG1vcmUgYW5kIG1vcmUgb2YgdGhvc2UgdHlwZXMgb2YgYnVpbGRpbmdzLiBBbmQgYmVjYXVzZSB0aGV5J3JlIG5ldywgdGhlcmUncyBubyBBU0hSQUUgR3VpZGVsaW5lIDM2IGZvciB0aG9zZSwgcmlnaHQ/IFRoZXJlJ3Mgbm8gZ29vZCBzZXF1ZW5jZSBvZiBvcGVyYXRpb24gdGhhdCBoYXZlIGJlZW4gdXNlZCBpbiBodW5kcmVkIGFuZCB0aG91c2FuZHMgb2YgYnVpbGRpbmdzIHRoYXQgY2FuIGJlIHJldXNlZC48L3A+DQo8cD5TbyBJIHRoaW5rIGl0J3MgYSBncmVhdCBhcHBsaWNhdGlvbiBmb3IgbWFjaGluZSBsZWFybmluZyB0byBmcm9tIHRoZSBzdGFydCwgaGVscGluZyBhdCB0aGUgbW9zdCBiYXNpYyBsZXZlbCwgaG93IHdlIHNob3VsZCBjb250cm9sIHRob3NlIHR5cGVzIG9mIGJ1aWxkaW5nLiBBbmQgdGhlbiBhZ2FpbiwgYXMgSSBtZW50aW9uZWQgZWFybGllciwgYSBjb3VwbGUgb2YgbW9yZSBleHBsb3JhdG9yeSwgSSBndWVzcywgZGlyZWN0aW9uIGlzIEkgdGhpbmsgZXZlcnlvbmUgd291bGQgYmUgY3VyaW91cyB0byBzZWUgaG93IGxhcmdlIGxhbmd1YWdlIG1vZGVscyBsaWtlIEdQVC00IGNvdWxkIGJlIGFwcGxpZWQgaW4gb3VyIGZpZWxkLiBJIHRoaW5rIHRoZXJlJ3Mgc29tZSBpZGVhcywgZm9yIHN1cmUuIFRoZXJlJ3Mgc29tZSBhcHBsaWNhdGlvbnMgaW4gdGVybSBvZiBjaGF0IGJvdHMgdGhhdCBjYW4gaGVscCBtYXliZSBkbyB0aGluZ3MgYW5kIHRoaW5ncyBsaWtlIHRoYXQsIGJ1dCBJJ20gc3VyZSB0aGVyZSBhcmUgbW9yZSBvcHBvcnR1bml0aWVzLiBJJ3ZlIGFsc28gc2VlbiB0aGluZ3MgYXJvdW5kIHRoZXJtYWwgY29tZm9ydCBhbmQgaW1hZ2luZy4gVGhlcmUncyBhIGxvdCBvZiBnb29kIGlkZWFzLCBJIHdvdWxkIHNheS48L3A+DQo8cD5Ob3QgYWxsIG9mIHRoZW0gbWlnaHQgYmUgcHJhY3RpY2FsLCBidXQgSSB0aGluayBpdCdzIGV4Y2l0aW5nIHRvIHNlZSB3aGF0IGNhbiBwZW9wbGUgY29tZSB1cCB3aXRoIGFuZCBzZWUgaWYgdGhleSBjYW4gbWFrZSBhIGJ1c2luZXNzIGNhc2Ugb3V0IG9mIGl0LjwvcD4NCjxwPjxzdHJvbmc+S2VsbHkgQmFycmF6YTo8L3N0cm9uZz48L3A+DQo8cD5UaGVybWFsIGNvbWZvcnQgZXNwZWNpYWxseSwgSSB0aGluayB0aGF0J3Mgc29tZXRoaW5nIHRoYXQgZXZlbiBpZiB5b3UncmUgYSBub24tZW5naW5lZXIgbGlrZSBteXNlbGYsIHRoYXQncyBsaWtlLCAiT2gsIHRoYXQncyBpbnRlcmVzdGluZy4iIEkgd291bGQgbG92ZSB0byBzZWUgaG93IHlvdSBjYW4gdXNlIHN1cGVyIG1hdGggdG8gaGVscCBzb2x2ZSB0aGVybWFsIGNvbWZvcnQgcHJvYmxlbXMgaW4gYSBidWlsZGluZywgd2hlbiBvbmUgcGVyc29uIGlzIGZyZWV6aW5nLCB0aGUgb3RoZXIgcGVyc29uIGlzIHN1cGVyIGhvdC48L3A+DQo8cD48c3Ryb25nPk1pY2hhZWwgQmVyZ2VyOjwvc3Ryb25nPjwvcD4NCjxwPlRoYXQncyBhbHdheXMgdGhlIHByb2JsZW0uIEkgdGhpbmsgeWVhaCwgeW91IGNhbiBjb252aW5jZSBhbnlvbmUgb2YgbGlrZSwgIk9oLCBJJ3ZlIGdvdCB0aGlzIGdyZWF0IGFsZ29yaXRobSB0aGF0IGNhbiBzYXZlIHlvdSBlbmVyZ3ksIiBhbmQgdGhlbiBzdGlsbCBsb29rIGF0IHlvdSBhbmQgYmUgbGlrZSwgIldoeSBhbSBJIHN0aWxsIHNvIGNvbGQgaW4gbXkgYnVpbGRpbmcgYW5kIG15IG5laWdoYm9yIGlzIHNvIGhvdC4iPC9wPg0KPHA+PHN0cm9uZz5LZWxseSBCYXJyYXphOjwvc3Ryb25nPjwvcD4NCjxwPlllYWgsIGV4YWN0bHkuIEknbSBzdGlsbCBjb2xkIHRob3VnaCwgcmlnaHQ/IFllYWguPC9wPg0KPHA+V2hhdCBkbyB5b3Ugc2VlIGFzIHRoZSBiaWdnZXN0IGNoYWxsZW5nZSBpbiBnZXR0aW5nIG1hY2hpbmUgbGVhcm5pbmcgYW5kIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIHRvIGJlIGFwcGxpZWQgbW9yZSB3aWRlbHkgaW4gSFZBQz88L3A+DQo8cD48c3Ryb25nPk1pY2hhZWwgQmVyZ2VyOjwvc3Ryb25nPjwvcD4NCjxwPkkgdGhpbmsgdGhlIGNoYWxsZW5nZSBpcyBvdmVyY29taW5nIHRoZSBiaWdnZXN0IGNoYWxsZW5nZSByaWdodCBub3cuIEkgdGhpbmsgd2UncmUgaW4gcHJvZ3Jlc3Mgb2YgZG9pbmcgdGhhdCwgYW5kIEkgdGhpbmsgaXQncyBwcm9iYWJseSBiZWVuLCBhdCBsZWFzdCBmcm9tIG15IGV4cGVyaWVuY2UsIGFuZCBtYXliZSBzb21lIGhhdmUgZGlmZmVyZW50IGV4cGVyaWVuY2VzLCBidXQgSSB0aGluayBpbiB0aGUgcGFzdCwgbWF5YmUgMTAgeWVhcnMgYWdvLCB0aGV5IG1heSBoYXZlLCBvciBhIGJpdCBsZXNzLCB0aGV5IG1heSBoYXZlIGJlZW4gc29tZSBuZWdhdGl2ZSBleHBlcmllbmNlcyBmcm9tIGVuZCB1c2VycyB3aXRoIEFJLCB3aXRoIE1MLCB3aGljaCB3YXMgYXBwbGllZCBtYXliZSBhIGJpdCBpbiBhIHRvbyBnZW5lcmFsIHB1cnBvc2Ugd2F5LCBtYXliZSB3aXRoIGEgbGFjayBvZiBkb21haW4ga25vd2xlZGdlLCBtYXliZSBieSBwcmFjdGl0aW9uZXJzIG9mIG1hY2hpbmUgbGVhcm5pbmcgd2l0aCBub3QgbWFueSBlbmdpbmVlcnMgdGhhdCB3ZXJlIGludm9sdmVkIGluIHRoZSBkZXNpZ24gb2YgdGhlIHNvbHV0aW9uLiBBbmQgbWF5YmUgcGVvcGxlIHdlcmUgYnVybnQgYSBiaXQgYW5kIHRob3VnaHQsICJPa2F5LCB0aGF0J3Mgbm90IGZvciBtZS4iPC9wPg0KPHA+U28gSSB0aGluayB0aGUgY2hhbGxlbmdlIGlzIHRvIGNvbnZpbmNlIHRob3NlIGVuZCB1c2VycyB0aGF0IHRoaXMgY2FuIGJlIGFwcGxpZWQgaW4gYSByZWxpYWJsZSB3YXksIGVuZCB1c2VyLWNlbnRyaWMgd2F5LCBmb2N1c2luZyBmaXJzdCBhbmQgZm9yZW1vc3Qgb24gcmVsaWFiaWxpdHkgYW5kIHRoZW4gb3B0aW1pemF0aW9uLiBCdXQgSSdtIHF1aXRlIG9wdGltaXN0aWMuIEkgdGhpbmsgdGhhdCBjaGFsbGVuZ2UgaXMgYmVpbmcgb3ZlcmNvbWUgcmlnaHQgbm93IGluIGEgc2Vjb25kIHdhdmUgb2YgYXBwbGljYXRpb25zIHRoYXQgbW9yZSB0YXJnZXRlZCwgd2hpY2ggaGF2ZSBiZWVuIGRlc2lnbmVkIHdpdGggbW9yZSBpbnB1dCBmcm9tIHRoZSBleHBlcnRzIGFuZCB0aGF0IGFyZSBtb3JlIHRyYW5zcGFyZW50LCByZWFsbHkuPC9wPg0KPHA+PHN0cm9uZz5LZWxseSBCYXJyYXphOjwvc3Ryb25nPjwvcD4NCjxwPkdyZWF0LiBXZWxsLCB0aGFuayB5b3UsIE1pY2hhZWwsIGZvciBqb2luaW5nIHVzIG9uIEFTSFJBRSBKb3VybmFsIHBvZGNhc3QuPC9wPg0KPHA+PHN0cm9uZz5NaWNoYWVsIEJlcmdlcjo8L3N0cm9uZz48L3A+DQo8cD5UaGFuayB5b3Ugc28gbXVjaCBmb3IgaGF2aW5nIG1lLiBJdCB3YXMgZ3JlYXQgdGFsa2luZyB0byB5b3UsIEtlbGx5LjwvcD4NCjxwPjxzdHJvbmc+S2VsbHkgQmFycmF6YTo8L3N0cm9uZz48L3A+DQo8cD5UaGFuayB5b3Ugc28gbXVjaC4gV2UganVzdCBoYXZlIHRvIHdyYXAgaXQgdXAuIFdlIGNhbiBnbyBhbGwgZGF5IGFib3V0IG1hY2hpbmUgbGVhcm5pbmcuIEkgdGhpbmsgaW4ganVzdCB0aGlzIHRvcGljLCBpdCdzIGp1c3QgYSB2YXN0IG9uZS4gTWF5YmUgd2UnbGwgaGF2ZSB5b3Ugb24gYWdhaW4gdG8gdGFsayBhYm91dCBpdCwgZG93biB0aGUgcm9hZCB3aGVuIHlvdSB3cml0ZSBhbm90aGVyIGFydGljbGUgZm9yIHVzLiBTbyBJIHdhbnQgdG8gdGhhbmsgdGhlIGxpc3RlbmVycyBmb3IgbGlzdGVuaW5nIGluLiBUaGlzIGhhcyBiZWVuIEtlbGx5IEJhcnJhemEgYW5kIE1pY2hhZWwgQmVyZ2VyIHdpdGggQVNIUkFFIEpvdXJuYWwgcG9kY2FzdC48L3A+DQo8cD48c3Ryb25nPkFTSFJBRSBKb3VybmFsOjwvc3Ryb25nPjwvcD4NCjxwPlRoZSBBU0hSQUUgSm91cm5hbCBwb2RjYXN0IHRlYW0gaXMgZWRpdG9yLCBEcmV3IENoYW1wbGluOyBtYW5hZ2luZyBlZGl0b3IsIEtlbGx5IEJhcnJhemE7IHByb2R1Y2VyIGFuZCBhc3Npc3RhbnQgZWRpdG9yLCBBbGxpc29uIEhhbWJyaWNrOyBhc3Npc3RhbnQgZWRpdG9yLCBNYXJ5IFNpbXM7IGFzc29jaWF0ZSBlZGl0b3IsIFRhbmkgUGFsZWZza2k7IGFuZCB0ZWNobmljYWwgZWRpdG9yLCBSZWJlY2NhIE1hdHlhc292c2tpLiBDb3B5cmlnaHQgQVNIUkFFLiBUaGUgdmlld3MgZXhwcmVzc2VkIGluIHRoaXMgcG9kY2FzdCBhcmUgdGhvc2Ugb2YgaW5kaXZpZHVhbHMgb25seSBhbmQgbm90IG9mIEFTSFJBRSwgaXRzIHNwb25zb3JzIG9yIGFkdmVydGlzZXJzLiBQbGVhc2UgcmVmZXIgdG8gYXNocmFlLm9yZy9wb2RjYXN0IGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCjxwPjwvcD48L2Rpdj4NCiAgICAgIDwvbGk+DQogICAgPC91bD4NCiAgPC9kaXY+DQo8L2Rpdj5kZAILD2QWAmYPZBYCBQVjdGwwMA8PFgIfCwVpPGRpdiBjbGFzcz0iaC1wdXNoQm90dG9tIj4NCiAgPFNDUklQVCBMQU5HVUFHRT0iSmF2YVNjcmlwdCI+DQoJCSAgT0FTX0FEKCdSaWdodDEnKTsgDQoJCTwvU0NSSVBUPg0KPC9kaXY+ZGQCDQ9kFgJmD2QWAgUFY3RsMDAPDxYCHwsFaDxkaXYgY2xhc3M9ImgtcHVzaEJvdHRvbSI+DQogIDxTQ1JJUFQgTEFOR1VBR0U9IkphdmFTY3JpcHQiPg0KCQkgIE9BU19BRCgnUmlnaHQnKTsgDQoJCTwvU0NSSVBUPg0KPC9kaXY+ZGQCEQ9kFgZmD2QWAmYPFgIfCwWWCTxuYXYgY2xhc3M9ImZvb3Rlck1haW4tdG9wTmF2IGZvb3Rlck1haW4tdG9wTmF2LS1zb2NpYWxOYXYiPjx1bD4NCiAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL0FTSFJBRXVwZGF0ZXMiIGNsYXNzPSJmb290ZXJNYWluU29jaWFsTGluayBmb290ZXJNYWluU29jaWFsTGluay0tIGljb24tZmFjZWJvb2stbG9nbyBoLWNvbG9yLXNvY2lhbC1mYiBpY29uLS1lbXB0eSIgYXJpYS1sYWJlbD0iIGljb24tZmFjZWJvb2stbG9nbyBoLWNvbG9yLXNvY2lhbC1mYiBpY29uLS1lbXB0eSI+wqA8L2E+PC9saT4NCiAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9hc2hyYWVuZXdzIiBjbGFzcz0iZm9vdGVyTWFpblNvY2lhbExpbmsgZm9vdGVyTWFpblNvY2lhbExpbmstLSBpY29uLXgtbG9nbyBpY29uLS1lbXB0eSIgYXJpYS1sYWJlbD0iIGljb24teC1sb2dvIGljb24tLWVtcHR5Ij7CoDwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS91c2VyL0FTSFJBRXZpZGVvIiBjbGFzcz0iZm9vdGVyTWFpblNvY2lhbExpbmsgZm9vdGVyTWFpblNvY2lhbExpbmstLSBpY29uLXlvdXR1YmUtbG9nbyBpY29uLS1lbXB0eSIgYXJpYS1sYWJlbD0iIGljb24teW91dHViZS1sb2dvIGljb24tLWVtcHR5Ij7CoDwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tcGFueS9hc2hyYWUiIGNsYXNzPSJmb290ZXJNYWluU29jaWFsTGluayBmb290ZXJNYWluU29jaWFsTGluay0tIGljb24tbGlua2VkaW4tbG9nbyBpY29uLS1lbXB0eSIgYXJpYS1sYWJlbD0iIGljb24tbGlua2VkaW4tbG9nbyBpY29uLS1lbXB0eSI+wqA8L2E+PC9saT4NCiAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9hc2hyYWVfc29jaWV0eSIgY2xhc3M9ImZvb3Rlck1haW5Tb2NpYWxMaW5rIGZvb3Rlck1haW5Tb2NpYWxMaW5rLS1mb290ZXJNYWluU29jaWFsTGluayBmb290ZXJNYWluU29jaWFsTGluay0tIGljb24taW5zdGFncmFtLWxvZ28gaWNvbi0tZW1wdHkiIGFyaWEtbGFiZWw9ImZvb3Rlck1haW5Tb2NpYWxMaW5rIGZvb3Rlck1haW5Tb2NpYWxMaW5rLS0gaWNvbi1pbnN0YWdyYW0tbG9nbyBpY29uLS1lbXB0eSI+wqA8L2E+PC9saT4NCiAgPC91bD48L25hdj5kAgIPZBYCZg8WAh8LBY8QPGRpdiBjbGFzcz0iY29sdW1uIG1lZC02Ij48c3BhbiBjbGFzcz0iZm9vdGVyTWFpbi1oZWFkaW5nIj5JIFdhbnQgVG8gVmlldzwvc3Bhbj48bmF2IGNsYXNzPSJmb290ZXJNYWluLXRvcE5hdiI+PHVsPg0KICAgICAgPGxpPjxhIGhyZWY9Ii9pLXdhbnQtdG8tdmlldy9yZWdpb25zLWNoYXB0ZXJzIj5SZWdpb25zIC8gQ2hhcHRlcnM8L2E+PC9saT4NCiAgICAgIDxsaT48YSBocmVmPSIvaS13YW50LXRvLXZpZXcvY29tbWl0dGVlcyI+Q29tbWl0dGVlczwvYT48L2xpPg0KICAgICAgPGxpPjxhIGhyZWY9Ii9pLXdhbnQtdG8tdmlldy92b2x1bnRlZXItaW5mb3JtYXRpb24iPlZvbHVudGVlciBJbmZvcm1hdGlvbjwvYT48L2xpPg0KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnRlY2hzdHJlZXQuY29tL2FzaHJhZS9wYWdlcy9ob21lP2FzaHJhZV9hdXRoX3Rva2VuPSI+Qm9va3N0b3JlPC9hPjwvbGk+DQogICAgICA8bGk+PGEgaHJlZj0iL2ktd2FudC10by12aWV3L3N0YW5kYXJkcyI+U3RhbmRhcmRzPC9hPjwvbGk+DQogICAgICA8bGk+PGEgaHJlZj0iL2ktd2FudC10by12aWV3L2FzaHJhZS1qb3VybmFsIj5BU0hSQUUgSm91cm5hbDwvYT48L2xpPg0KICAgICAgPGxpPjxhIGhyZWY9Ii9pLXdhbnQtdG8tdmlldy95b3VuZy1lbmdpbmVlcnMiPllvdW5nIEVuZ2luZWVyczwvYT48L2xpPg0KICAgICAgPGxpPjxhIGhyZWY9Ii9pLXdhbnQtdG8tdmlldy9zdHVkZW50LW9wcG9ydHVuaXRpZXMiPlN0dWRlbnQgT3Bwb3J0dW5pdGllczwvYT48L2xpPg0KICAgICAgPGxpPjxhIGhyZWY9Ii9pLXdhbnQtdG8tdmlldy93YXlzLXRvLWRvbmF0ZS10by1hc2hyYWUiPldheXMgdG8gRG9uYXRlIHRvIEFTSFJBRTwvYT48L2xpPg0KICAgICAgPGxpPjxhIGhyZWY9Ii9pLXdhbnQtdG8tdmlldy9tYXJrZXRpbmctY2VudHJhbCI+TWFya2V0aW5nIENlbnRyYWw8L2E+PC9saT4NCiAgICAgIDxsaT48YSBocmVmPSIvaS13YW50LXRvLXZpZXcvYXNocmFlLTM2NS1hcHAiPkFTSFJBRSAzNjUgQXBwPC9hPjwvbGk+DQogICAgPC91bD48L25hdj48L2Rpdj4NCjxkaXYgY2xhc3M9ImNvbHVtbiBtZWQtNiI+PHNwYW4gY2xhc3M9ImZvb3Rlck1haW4taGVhZGluZyI+R292ZXJubWVudCBBZmZhaXJzPC9zcGFuPjxuYXYgY2xhc3M9ImZvb3Rlck1haW4tdG9wTmF2Ij48dWw+DQogICAgICA8bGk+PGEgaHJlZj0iL2dvdmVybm1lbnQtYWZmYWlycy9hZHZvY2FjeS10b29sa2l0Ij5BZHZvY2FjeSBUb29sa2l0PC9hPjwvbGk+DQogICAgICA8bGk+PGEgaHJlZj0iL2dvdmVybm1lbnQtYWZmYWlycy9nb3Zlcm5tZW50LWFmZmFpcnMtb2ZmaWNlIj5Hb3Zlcm5tZW50IEFmZmFpcnMgT2ZmaWNlPC9hPjwvbGk+DQogICAgICA8bGk+PGEgaHJlZj0iL2dvdmVybm1lbnQtYWZmYWlycy9nb3Zlcm5tZW50IGFmZmFpcnMgdXBkYXRlcyI+R292ZXJubWVudCBBZmZhaXJzIFVwZGF0ZXM8L2E+PC9saT4NCiAgICAgIDxsaT48YSBocmVmPSIvZ292ZXJubWVudC1hZmZhaXJzL3B1YmxpYy1wb2xpY3ktcmVzb3VyY2VzIj5QdWJsaWMgUG9saWN5IFJlc291cmNlczwvYT48L2xpPg0KICAgIDwvdWw+PC9uYXY+PC9kaXY+DQo8ZGl2IGNsYXNzPSJjb2x1bW4gbWVkLTYiPjxzcGFuIGNsYXNzPSJmb290ZXJNYWluLWhlYWRpbmciPkFTSFJBRSBNZW1iZXJzaGlwPC9zcGFuPjxuYXYgY2xhc3M9ImZvb3Rlck1haW4tdG9wTmF2Ij48dWw+DQogICAgICA8bGk+PGEgaHJlZj0iL2FzaHJhZS1tZW1iZXJzaGlwL21lbWJlci1iZW5lZml0cyI+TWVtYmVyIEJlbmVmaXRzPC9hPjwvbGk+DQogICAgICA8bGk+PGEgaHJlZj0iL2FzaHJhZS1tZW1iZXJzaGlwL2pvaW4iPkpvaW48L2E+PC9saT4NCiAgICAgIDxsaT48YSBocmVmPSIvYXNocmFlLW1lbWJlcnNoaXAvcmVuZXciPlJlbmV3PC9hPjwvbGk+DQogICAgICA8bGk+PGEgaHJlZj0iL2FzaHJhZS1tZW1iZXJzaGlwL21hbmFnZSI+TWFuYWdlPC9hPjwvbGk+DQogICAgICA8bGk+PGEgaHJlZj0ibWFpbHRvOm1lbWJlcnNoaXBAYXNocmFlLm9yZyI+Q29udGFjdCBNZW1iZXJzaGlwPC9hPjwvbGk+DQogICAgPC91bD48L25hdj48L2Rpdj5kAgQPDxYEHwkFEUNMSGllcmFyY2hpY2FsTmF2HwoCAmQWAgUFY3RsMDAPZBYCZg8WAh8LBf8CPHVsIGNsYXNzPSJDTEhpZXJhcmNoaWNhbE5hdiI+PGxpIGNsYXNzPSJmaXJzdCI+PGEgaHJlZj0iL2NvbnRhY3QtdXMiPkNvbnRhY3QgVXM8L2E+PC9saT48bGk+PGEgaHJlZj0iL3Blcm1pc3Npb25zIj5QZXJtaXNzaW9uczwvYT48L2xpPjxsaT48YSBocmVmPSIvdGVybXMtb2YtdXNlIj5UZXJtcyBvZiBVc2U8L2E+PC9saT48bGk+PGEgaHJlZj0iL3ByaXZhY3ktcG9saWN5Ij5Qcml2YWN5IFBvbGljeTwvYT48L2xpPjxsaT48YSBocmVmPSIvY2FyZWVycyI+Q2FyZWVyczwvYT48L2xpPjxsaT48YSBocmVmPSIvYWR2ZXJ0aXNpbmciPkFkdmVydGlzaW5nPC9hPjwvbGk+PGxpIGNsYXNzPSJsYXN0Ij48YSBocmVmPSIvc2l0ZS1tYXAiPlNpdGUgTWFwPC9hPjwvbGk+PC91bD5kAgUPFgIfCGhkAgcPZBYCAgEPFCsAAmRkZBgHBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WEAUhY3RsMDEkY3RsQnJlYWRjcnVtYk5hdiRCcmVhZGNydW1iBRpjdGwwMSRjdGxQYWdlVGl0bGUkY2x0aXRsZQUdY3RsMDEkRm9vdGVyJG5hdkZvb3RlclV0aWxpdHkFK2N0bDAxJEhlYWRlciRjdGwwMCRjdGxVdGlsaXR5TmF2JG5hdlV0aWxpdHkFN2N0bDAxJFBhZ2Vab25lQ29udGFpbmVyMSRQYWdlWm9uZUNvbnRhaW5lcjFfM2F0YTQ5QWV3czQFN2N0bDAxJFBhZ2Vab25lQ29udGFpbmVyMSRQYWdlWm9uZUNvbnRhaW5lcjFfM2F0YTQ5QWV3czQFN2N0bDAxJFBhZ2Vab25lQ29udGFpbmVyMSRQYWdlWm9uZUNvbnRhaW5lcjFfQWU2NjZua1RCWmUFN2N0bDAxJFBhZ2Vab25lQ29udGFpbmVyMSRQYWdlWm9uZUNvbnRhaW5lcjFfQWU2NjZua1RCWmUFN2N0bDAxJFBhZ2Vab25lQ29udGFpbmVyMSRQYWdlWm9uZUNvbnRhaW5lcjFfMmZZZThOZkVkOWwFN2N0bDAxJFBhZ2Vab25lQ29udGFpbmVyMSRQYWdlWm9uZUNvbnRhaW5lcjFfMmZZZThOZkVkOWwFN2N0bDAxJFBhZ2Vab25lQ29udGFpbmVyMSRQYWdlWm9uZUNvbnRhaW5lcjFfQThmZ21SV3A4Wm0FN2N0bDAxJFBhZ2Vab25lQ29udGFpbmVyMSRQYWdlWm9uZUNvbnRhaW5lcjFfQThmZ21SV3A4Wm0FNmN0bDAxJFBhZ2Vab25lQ29udGFpbmVyMiRQYWdlWm9uZUNvbnRhaW5lcjJfZXpPaXRRSVR5SgU2Y3RsMDEkUGFnZVpvbmVDb250YWluZXIyJFBhZ2Vab25lQ29udGFpbmVyMl9lek9pdFFJVHlKBTdjdGwwMSRQYWdlWm9uZUNvbnRhaW5lcjMkUGFnZVpvbmVDb250YWluZXIzX0F4dDlLYjFvT1lPBTdjdGwwMSRQYWdlWm9uZUNvbnRhaW5lcjMkUGFnZVpvbmVDb250YWluZXIzX0F4dDlLYjFvT1lPBR9zaXRlRWRpdG9yVG9vbGJhciRsdlVzZXJPcHRpb25zD2dkBR9zaXRlRWRpdG9yVG9vbGJhciRsdlBhZ2VCdWlsZGVyD2dkBR5zaXRlRWRpdG9yVG9vbGJhciRsdlNoYXJlZFBhZ2UPZ2QFJXNpdGVFZGl0b3JUb29sYmFyJGx2UHJvZHVjdE5hdmlnYXRpb24PZ2QFHXNpdGVFZGl0b3JUb29sYmFyJGx2UGFnZU1vZGVzD2dkBQtsdkRlYnVnSW5mbw9nZLOBH6bdqQcOr7lM34LyCtuecLAD" /></form> <script type="text/javascript"> //<![CDATA[ (function () { var iat = document.createElement('script'); iat.type = 'text/javascript'; iat.async = true; iat.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'www.ashrae.org/jsfile/Tracking.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(iat, s);})(); window.postURL=('https:' == document.location.protocol ? 'https://' : 'http://') +'www.ashrae.org/api/tracking/'; setTimeout(setImagesDimensions, 1000); //]]> </script> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KVQRBD6" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> </body> </html>