{"id":15522,"date":"2023-09-25T18:33:43","date_gmt":"2023-09-25T09:33:43","guid":{"rendered":"https:\/\/cocone-one.com\/?page_id=15522"},"modified":"2026-03-31T11:07:03","modified_gmt":"2026-03-31T02:07:03","slug":"service-privacy","status":"publish","type":"page","link":"https:\/\/cocone-one.com\/en\/legal\/service-privacy\/","title":{"rendered":"COCONE GLOBAL PRIVACY POLICY"},"content":{"rendered":"\n<div class=\"c-privacy__container\">\r\n  <div class=\"c-privacy__date\">\r\n    <p class=\"c-privacy__dateText\">Last Updated: 3 \/ 31 \/ 2026<\/p>\r\n  <\/div>\r\n  <div class=\"c-privacy__block\">\r\n    <p class=\"c-privacy__itemText -bold\">Table of Contents<\/p>\r\n    <ol class=\"c-privacy__list\">\r\n      <li class=\"c-privacy__item\">\r\n        <li><a href=\"#intro\"><p class=\"c-privacy__itemText c-indent--marker2em\">Introduction<\/a><\/p>\r\n        <a href=\"#policy\"><p class=\"c-privacy__itemText c-indent--marker2em\">Changes to Our Privacy Policy<\/a><\/p>\r\n        <a href=\"#sec1\"> <p class=\"c-privacy__itemText c-indent--marker2em\">1. Information We Collect and How We Collect It<\/a><\/p>\r\n        <a href=\"#sec2\"><p class=\"c-privacy__itemText c-indent--marker2em\">2. How We Use Your Personal Information<\/a><\/p>\r\n        <a href=\"#sec3\"><p class=\"c-privacy__itemText c-indent--marker2em\">3. How Long We Keep Your Information<\/a><\/p>\r\n        <a href=\"#sec4\"><p class=\"c-privacy__itemText c-indent--marker2em\">4. How We Share Your Information<\/a><\/p>\r\n        <a href=\"#sec5\"><p class=\"c-privacy__itemText c-indent--marker2em\">5. Children\u2019s Privacy<\/a><\/p>\r\n        <a href=\"#sec6\"><p class=\"c-privacy__itemText c-indent--marker2em\">6. How We Protect Your Information<\/a><\/p>\r\n        <a href=\"#sec7\"><p class=\"c-privacy__itemText c-indent--marker2em\">7. How You May Change, Remove, or Export Your Information<\/a><\/p>\r\n        <a href=\"#sec8\"><p class=\"c-privacy__itemText c-indent--marker2em\">8. Links to Third-Party Websites and Services<\/a><\/p>\r\n        <a href=\"#sec9\"><p class=\"c-privacy__itemText c-indent--marker2em\">9. Non-U.S. Users<\/a><\/p>\r\n        <a href=\"#sec10\"><p class=\"c-privacy__itemText c-indent--marker2em\">10. Privacy Section for Users from the UK, EEA and Switzerland<\/a><\/p>\r\n        <a href=\"#sec11\"><p class=\"c-privacy__itemText c-indent--marker2em\">11. Privacy Section for Users from the U.S.<\/a><\/p>\r\n        <a href=\"#sec12\"><p class=\"c-privacy__itemText c-indent--marker2em\">12. Privacy Section for Users from the Republic of Korea<\/a><\/p>\r\n        <a href=\"#sec13\"><p class=\"c-privacy__itemText c-indent--marker2em\">13. Privacy Section for Users Playing Fashion Fable: Dress Up Style<\/a><\/p>\r\n        <a href=\"#sec14\"><p class=\"c-privacy__itemText c-indent--marker2em\">14. Contacting Cocone<\/a><\/p>\r\n        <a href=\"#sec15\"><p class=\"c-privacy__itemText c-indent--marker2em\">15. Standards Against Child Sexual Abuse and Exploitation<\/a><\/p>\r\n        <a href=\"#sec16\"><p class=\"c-privacy__itemText c-indent--marker2em\">16. Children\u2019s Privacy Policy for PetKart<\/a><\/p>\r\n      <\/li>\r\n    <\/ol>\r\n  <\/div>\r\n  <div class=\"c-privacy__block\">\r\n    <ol class=\"c-privacy__list\">\r\n      <li class=\"c-privacy__item\">\r\n        <section id=\"intro\"><h2 class=\"c-privacy__itemTitle\">Introduction<\/h2><\/section>\r\n        <p class=\"c-privacy__itemText\">\r\n          Cocone respects your privacy, and we are committed to protecting it through this Privacy Policy.<br \/>\r\n          As used in this Privacy Policy, \u201c<span class=\"c-privacy__itemText -bold\">Cocone<\/span>\u201d, \u201c<span\r\n            class=\"c-privacy__itemText -bold\"\r\n            >we<\/span\r\n          >\u201d, \u201c<span class=\"c-privacy__itemText -bold\">us<\/span>\u201d, or \u201c<span class=\"c-privacy__itemText -bold\">our<\/span\r\n          >\u201d refer to Cocone ONE corporation and its subsidiary or affiliated entity that is part of Cocone ONE\r\n          corporation.<br \/>\r\n          This Privacy Policy describes the types of personal information we collect from you, that we may receive from\r\n          third parties or your contacts or that you may provide when you use Cocone\u2019s applications for mobile devices\r\n          (the \u201c<span class=\"c-privacy__itemText -bold\">Apps<\/span>\u201d).<br \/>\r\n          Please familiarize yourself with our privacy practices and contact us as described below in\r\n          <a class=\"c-textLink -red\" href=\"#section17\">Section 14 \u2013 Contacting Cocone<\/a> if you have any questions.<br \/>\r\n          This Privacy Policy applies to the personal information we collect:\r\n        <\/p>\r\n        <p class=\"c-privacy__itemText c-indent--marker1em\">\u30fbThrough the Apps; and<\/p>\r\n        <p class=\"c-privacy__itemText c-indent--marker1em\">\r\n          \u30fbBy email, text, and other communications between you and us and\/or the Apps.\r\n        <\/p>\r\n        <p class=\"c-privacy__itemText\">\r\n          It does not apply to information collected by any third party (including but not limited to our affiliates and\r\n          subsidiaries), including through any application or content (including advertising) that may link to or be\r\n          accessible from or on the Apps.<br \/>Please read this Privacy Policy carefully to understand our policies and\r\n          practices regarding your information and how we will handle your information.\r\n        <\/p>\r\n      <\/li>\r\n      <li class=\"c-privacy__item\">\r\n        <section id=\"policy\"><h2 class=\"c-privacy__itemTitle\">Changes to Our Privacy Policy<\/h2><\/section>\r\n        <ol class=\"c-privacy__subList\">\r\n          <li class=\"c-privacy__subItem\">\r\n            <p class=\"c-privacy__itemText\">\r\n              This Privacy Policy may change from time to time so please check this Privacy Policy periodically for\r\n              updates.<br \/>\r\n              If we make material changes to how we treat our users\u2019 personal information, we will notify you through a\r\n              notice in the Apps. The date this Privacy Policy was last updated is identified at the top of the first\r\n              page of this Privacy Policy. Unless otherwise stipulated under applicable law, you are responsible for\r\n              ensuring you periodically visit this Privacy Policy to check for any changes.\r\n            <\/p>\r\n          <\/li>\r\n          <li class=\"c-privacy__subItem\">\r\n            <section id=\"sec1\"><h4 class=\"c-privacy__itemText -bold\">\r\n              1. Information We Collect and How We Collect It<br \/>Personal Information We Collect\r\n            <\/h4><\/section>\r\n            <p class=\"c-privacy__itemText\">\r\n              When we talk about personal information (or personal data) we mean any information that relates to an\r\n              identified or identifiable living individual. The personal information we may collect and process about\r\n              you within the last twelve (12) months include:\r\n            <\/p>\r\n            <ul class=\"c-privacy__subList\">\r\n              <li class=\"c-privacy__subItem\">\r\n                <p class=\"c-privacy__itemText c-indent--marker1em\">\r\n                  <span class=\"c-privacy__itemText -bold\">\u30fbRegistration Data\/Identifiers:<\/span> Email address\r\n                <\/p>\r\n                <p class=\"c-privacy__itemText c-indent--marker1em\">\r\n                  <span class=\"c-privacy__itemText -bold\">\u30fbSensory data:<\/span> Photos, videos or recordings of a\r\n                  user\u2019s environment\r\n                <\/p>\r\n                <p class=\"c-privacy__itemText c-indent--marker1em\">\r\n                  <span class=\"c-privacy__itemText -bold\">\u30fbApps Profile data:<\/span> Your username, your avatar,\r\n                  interests and preferences.\r\n                <\/p>\r\n                <p class=\"c-privacy__itemText c-indent--marker1em\">\r\n                  <span class=\"c-privacy__itemText -bold\">\u30fbTechnical and Usage Data\/Networking Activity:<\/span>\r\n                  including:\r\n                <\/p>\r\n                <p class=\"c-privacy__itemText c-indent--marker2em\">\r\n                  \u30fbDetails of your visits to and actions in the Apps, including traffic data, location data, logs and\r\n                  other communication data, the resources that you access, and your use of the Apps.\r\n                <\/p>\r\n                <p class=\"c-privacy__itemText c-indent--marker2em\">\r\n                  \u30fbInformation about your device and internet connection, including as applicable, your IP address\r\n                  through which you access the Apps, operating system, browser type, mobile network information,\r\n                  location, time zone, the unique mobile device ID or virtual unique device identifier for any mobile\r\n                  device used to access your account.\r\n                <\/p>\r\n                <p class=\"c-privacy__itemText c-indent--marker2em\">\r\n                  \u30fbMetadata and other information associated with files stored on your device.\r\n                <\/p>\r\n                <p class=\"c-privacy__itemText c-indent--marker2em\">\r\n                  \u30fbInformation about your internet connection, the device you use to access the Apps, and related usage\r\n                  details.\r\n                <\/p>\r\n                <p class=\"c-privacy__itemText c-indent--marker1em\">\r\n                  <span class=\"c-privacy__itemText -bold\">\u30fbTransaction data:<\/span> Details of transactions you carry\r\n                  out through the Apps using in-game currency.\r\n                <\/p>\r\n                <p class=\"c-privacy__itemText\">\r\n                  We use third-party payment processors to process payments made to us. In connection with the\r\n                  processing of such payments, we do not retain any personal information or any financial information\r\n                  such as credit card numbers. Rather, all such information is provided directly to our third-party\r\n                  processors whose use of your personal information is governed by their privacy policies. We have no\r\n                  control over, and are not responsible for, this third party\u2019s collection, use and disclosure of your\r\n                  personal information.\r\n                <\/p>\r\n                <p class=\"c-privacy__itemText\">\r\n                  <span class=\"c-privacy__itemText -bold\">How we collect your personal information<\/span><br \/>\r\n                  We may collect and receive your personal data using different methods:\r\n                <\/p>\r\n                <p class=\"c-privacy__itemText\">\r\n                  <span class=\"c-privacy__itemText -bold\">\u30fbPersonal data you directly provide to us<\/span><br \/>\r\n                  You may give us your personal data directly, for example, when you register to use our Apps, contact\r\n                  us with enquiries or feedback.\r\n                <\/p>\r\n                <p class=\"c-privacy__itemText\">\r\n                  <span class=\"c-privacy__itemText -bold\">\u30fbPersonal data received from third parties<\/span><br \/>\r\n                  We may receive personal data about you from third parties. Such third parties may include third\r\n                  parties that provide technical services to us so that we can provide the Apps.<br \/>\r\n                  We may collect personal data about you when you access some of our Apps with third-party platform\r\n                  accounts, such as a gaming platform account. When you access the Apps in this way, the third-party\r\n                  platforms provide us with information about you. For example, depending on your use of, or activity on\r\n                  the third-party platform, we receive your username, email address, or account information necessary to\r\n                  provide the Apps.\r\n                <\/p>\r\n                <p class=\"c-privacy__itemText\">\r\n                  <span class=\"c-privacy__itemText -bold\">\u30fbAutomatic Data-Collection Technologies<\/span><br \/>\r\n                  When you access and use the Apps we will collect certain usage data and technical data.<br \/>\r\n                  The automatic data collection technologies we use to collect this data may include:\r\n                <\/p>\r\n                <p class=\"c-privacy__itemText c-indent--marker1em\">\r\n                  \u30fbCookies (or pixel tags and other similar technologies). A cookie is a small file placed on the hard\r\n                  drive of your computer or device. You may refuse to accept browser cookies by activating the\r\n                  appropriate settings on your browser. However, if you select this setting you may be unable to access\r\n                  certain parts of the Apps. Unless you have adjusted your browser setting so that it will refuse\r\n                  cookies, our system will issue cookies when you direct your browser to the Apps.\r\n                <\/p>\r\n                <p class=\"c-privacy__itemText c-indent--marker1em\">\r\n                  \u30fbWeb Beacons. Our emails may use small electronic files known as web beacons (also referred to as\r\n                  clear gifs, pixel tags, and single-pixel gifs) that permit us, for example, to count users who have\r\n                  visited those pages or opened an email and for other related website statistics (for example,\r\n                  recording the popularity of certain website content and verifying system and server integrity).\r\n                <\/p>\r\n                <p class=\"c-privacy__itemText c-indent--marker1em\">\r\n                  \u30fbResettable Device Identifiers. We may collect a resettable device identifier from your device.\r\n                  Resettable device identifiers can be used like cookies and are found on many mobile devices and\r\n                  tablets (for example, the \u201cIdentifier for Advertisers\u201d on Apple iOS devices and the \u201cGoogle\r\n                  Advertising ID\u201d on Android devices). Like cookies, resettable device identifiers are used to make\r\n                  online advertising more relevant, and for analytics and optimization purposes.\r\n                <\/p>\r\n                <p class=\"c-privacy__itemText\">\r\n                  You may also control the information that we collect through the settings on your mobile device. You\r\n                  may adjust the settings of your mobile device to prevent the Apps from obtaining location information.\r\n                  However, please note that the Apps may rely on cookies and location information to function properly\r\n                  and some parts of the Apps may not be available if you disable cookies.\r\n                <\/p>\r\n                <p class=\"c-privacy__itemText\">\r\n                  <span class=\"c-privacy__itemText -bold\">\u30fbGoogle Analytics<\/span><br \/>\r\n                  Google Analytics is a web analytics service offered by Google. Google uses the data collected to track\r\n                  and monitor the use of our websites. Google Analytics does not identify individual users or associate\r\n                  your IP address with other data held by Google. For more information on the privacy practice of\r\n                  Google, please visit the Google Privacy Terms web page:<br \/>\r\n                  <a class=\"c-textLink -red\" href=\"https:\/\/policies.google.com\/privacy?hl=en\" target=\"_blank\" rel=\"noopener\">https:\/\/policies.google.com\/privacy?hl=en<\/a>\r\n                <\/p>\r\n              <\/li>\r\n            <\/ul>\r\n          <\/li>\r\n          <li class=\"c-privacy__subItem\">\r\n            <section id=\"sec2\"><h4 class=\"c-privacy__itemText -bold\">2. How We Use Your Personal Information<\/h4><\/section>\r\n            <p class=\"c-privacy__itemText\">\r\n              We use personal information that we collect about you or that you provide to us for the purposes set out\r\n              in this section. If we wish to make any changes to these purposes, or if we wish to use your personal data\r\n              for any purpose that is not listed in this section, we will notify you using the contact details we hold\r\n              for you.\r\n            <\/p>\r\n            <br \/>\r\n            <h5 class=\"c-privacy__itemText -bold\">PART A: PROVISION OF THE APPS<br \/>Purpose: To provide our Apps<\/h5>\r\n            <div class=\"c-privacy__scrollWrap\">\r\n              <table class=\"c-privacy__table3Columns\">\r\n                <tbody>\r\n                  <tr>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray\">\r\n                      <span class=\"c-privacy__itemText -bold\">Description<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Categories of data<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Legal bases<\/span>\r\n                    <\/th>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      <span class=\"c-privacy__itemText -bold\">Provision of our Apps:<\/span> When you use our Apps, we\r\n                      process your personal data so that we can provide our Apps to you, including to ensure that our\r\n                      Apps are working properly, to show you the correct notices and information, and to ensure that our\r\n                      Apps are kept secure. This data is sometimes automatically collected and transmitted to us.<br \/><br \/>When\r\n                      you use our Apps, we may also ask for your permission to send you push notifications. If you allow\r\n                      this feature, we may send you push notifications through our Apps, for example, reminders, alerts,\r\n                      updates and other information. You can configure and turn off push notifications via your device\r\n                      settings at any time.<br \/><br \/>Our Apps may also send us (or our IT suppliers) an error message\r\n                      in the event of a crash or other error (e.g. after the Apps have unexpectedly quit because of a\r\n                      program error or has stopped responding to your input). The error message contains Technical Data\r\n                      and information about which part of our App\u2019s software code has caused the error. This information\r\n                      helps us understand the cause of the error so that we can develop a fix to prevent that error from\r\n                      reoccurring and therefore improve the Apps for all users.\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">Technical and Usage Data\/Networking Activity<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      It is necessary for us to use your personal data to perform our obligations in accordance with any\r\n                      contract that we may have with you, or it is in our legitimate interest to use personal data in\r\n                      such a way to ensure that we provide access to our Apps in a secure and effective way.<br \/><br \/>Our\r\n                      use of push notifications will be subject to the permissions that you provide and your system\r\n                      settings.\r\n                    <\/td>\r\n                  <\/tr>\r\n                <\/tbody>\r\n              <\/table>\r\n              <table class=\"c-privacy__table3Columns\">\r\n                <tbody>\r\n                  <tr>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray\">\r\n                      <span class=\"c-privacy__itemText -bold\">Description<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Categories of data<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Legal bases<\/span>\r\n                    <\/th>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      <span class=\"c-privacy__itemText -bold\"\r\n                        >To manage your account registration and access to the Apps:<\/span\r\n                      >\r\n                      You will be required to register an account with us in order to gain access to the Apps.<br \/><br \/>To\r\n                      register for an account, you will need to provide all required personal data. We will use this\r\n                      data to process your registration and to identify you when you log in to your account and access\r\n                      the Apps.\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">Registration Data\/Identifiers Apps Profile Data<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      It is necessary for us to use your personal data to perform our obligations in accordance with any\r\n                      contract that we may have with you, or it is in our legitimate interest to use personal data in\r\n                      such a way to ensure that we provide access to our Apps in a secure and effective way.\r\n                    <\/td>\r\n                  <\/tr>\r\n                <\/tbody>\r\n              <\/table>\r\n              <table class=\"c-privacy__table3Columns\">\r\n                <tbody>\r\n                  <tr>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray\">\r\n                      <span class=\"c-privacy__itemText -bold\">Description<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Categories of data<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Legal bases<\/span>\r\n                    <\/th>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      <span class=\"c-privacy__itemText -bold\">To manage your App account profile:<\/span>If you are a\r\n                      registered user of the Apps you can voluntarily submit and we will collect Apps Profile Data as\r\n                      part of your App profile.<br \/>We will also use your personal data to store information about you\r\n                      and your preferences, allowing us to customize the Apps according to your individual interests and\r\n                      recognize you when you return to the Apps.\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">Technical and Usage Data\/Networking Activity Apps Profile Data<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Any Apps Profile Data that you submit is voluntary, although you are required to supply some Apps\r\n                      Profile Data as a part of interacting with and using the Apps. It is in our legitimate interest to\r\n                      use your Apps Profile Data, so that we can provide our Apps effectively.\r\n                    <\/td>\r\n                  <\/tr>\r\n                <\/tbody>\r\n              <\/table>\r\n            <\/div>\r\n            <br \/>\r\n            <h5 class=\"c-privacy__itemText -bold\">Purpose: Customer feedback\/enquiries<\/h5>\r\n            <div class=\"c-privacy__scrollWrap\">\r\n              <table class=\"c-privacy__table3Columns\">\r\n                <tbody>\r\n                  <tr>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray\">\r\n                      <span class=\"c-privacy__itemText -bold\">Description<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Categories of data<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Legal bases<\/span>\r\n                    <\/th>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      <span class=\"c-privacy__itemText -bold\"\r\n                        >If you have a general question or need help with any issue concerning our Apps:<\/span\r\n                      >\r\n                      There are various ways in which you are able to contact us with general inquiries and to provide\r\n                      feedback, including using the details set out in the \u201cContacting Cocone\u201d Section 14, through any\r\n                      other \u2018contact us\u2019 or similar feature that we make available on our Apps.<br \/><br \/>When you make\r\n                      an enquiry or provide feedback, we will collect and process your personal data including any\r\n                      personal data you volunteer, that is relevant to your enquiry or feedback.<br \/><br \/>If you have\r\n                      a technical issue concerning our Apps, we may also process Technical and Usage Data\/Networking\r\n                      Activity to help us diagnose and fix the technical issues you are experiencing. <br \/><br \/>We\r\n                      will use this information so that we can effectively manage and respond to your enquiry or\r\n                      feedback.\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Registration Data\/Identifiers<br \/><br \/>Profile Data<br \/><br \/>Technical and Usage\r\n                      Data\/Networking Activity<br \/><br \/>Personal data that is volunteered as part of feedback\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      It is in our legitimate interest to use your personal data in the ways described in this section\r\n                      to ensure that we are able to help you with your enquiry and provide a good standard of service.\r\n                    <\/td>\r\n                  <\/tr>\r\n                <\/tbody>\r\n              <\/table>\r\n            <\/div>\r\n            <br \/>\r\n            <h5 class=\"c-privacy__itemText -bold\">PART B: ADVERTISING\/MARKETING<\/h5>\r\n            <div class=\"c-privacy__scrollWrap\">\r\n              <table class=\"c-privacy__table3Columns\">\r\n                <tbody>\r\n                  <tr>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray\">\r\n                      <span class=\"c-privacy__itemText -bold\">Description<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Categories of data<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Legal bases<\/span>\r\n                    <\/th>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      <span class=\"c-privacy__itemText -bold\">Online personalised marketing:<\/span> We and our\r\n                      third-party partners may use your personal data including data that is collected through your\r\n                      interactions with third-party websites and services (including social media and other platforms)\r\n                      to provide you with, and analyse the effectiveness of, personalised ads when you visit other\r\n                      websites and\/or use other services.<br \/>\r\n                      <br \/>\r\n                      By \u201cpersonalised ads\u201d, we mean advertisements for the Apps which we or our partners otherwise\r\n                      think you might be interested in based on your browsing habits. Note, our third-party partners may\r\n                      also use the data that is collected to show personalised ads for products and services offered by\r\n                      third parties.<br \/>\r\n                      <br \/>\r\n                      We also may use these technologies to collect information about your online activities\r\n                      (behavioural tracking). Contact us by email at the email address provided in the \u201cContacting\r\n                      Cocone\u201d Section 14 below for information on how you can opt out of behavioural tracking on the\r\n                      Apps and how we respond to web browser signals and other mechanisms that enable consumers to\r\n                      exercise choice about behavioural tracking.\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">Technical and Usage Data\/Networking Activity<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Where your data is collected through the use of non-essential cookies, we and our third-party\r\n                      partners generally rely on consent to collect your personal data and for the subsequent processing\r\n                      of it in this manner or it is otherwise in our legitimate interests to promote our Apps to you.<br \/>\r\n                      Our third-party partners may rely on a different lawful basis in respect of their use of your\r\n                      personal data.\r\n                    <\/td>\r\n                  <\/tr>\r\n                <\/tbody>\r\n              <\/table>\r\n              <table class=\"c-privacy__table3Columns\">\r\n                <tbody>\r\n                  <tr>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray\">\r\n                      <span class=\"c-privacy__itemText -bold\">Description<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Categories of data<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Legal bases<\/span>\r\n                    <\/th>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      <span class=\"c-privacy__itemText -bold\">Hosting and managing events:<\/span> From time to time, we\r\n                      may organise and host events for the purpose of promoting our business or bringing our App users\r\n                      together. We may process your personal data to communicate with you about such events where you\r\n                      have specifically requested information about such events or where we have another lawful basis\r\n                      for sending that information to you.<br \/><br \/>If you attend one of our events, we may use your\r\n                      personal data to record your attendance at the event and for related record-keeping purposes and,\r\n                      if relevant, we may collect and process any dietary requirements you may have. You may also\r\n                      feature in photographs taken at our events and such photographs may appear in publications that we\r\n                      make available.\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Registration Data\/Identifiers<br \/><br \/>Profile Data<br \/><br \/>Apps Profile Data<br \/><br \/>Image\r\n                      and personal data contained in any feedback\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      It is necessary for us to use your personal data in this way to perform our obligations in\r\n                      accordance with any contract that we may have with you where you have signed up to attend an\r\n                      event, or it is in our legitimate interest or a third party\u2019s legitimate interest to use personal\r\n                      data in such a way to ensure that the event is operated in an effective way.<br \/><br \/>We may\r\n                      specifically ask your permission to use your photographs, quotes, testimonials, or other content\r\n                      that you make available or publish at the event. Where this is the case, our processing of your\r\n                      such personal data will be based on express consent.\r\n                    <\/td>\r\n                  <\/tr>\r\n                <\/tbody>\r\n              <\/table>\r\n            <\/div>\r\n            <br \/>\r\n            <h5 class=\"c-privacy__itemText -bold\">PART C: BUSINESS ADMINISTRATION, FINANCIAL AND LEGAL<\/h5>\r\n            <div class=\"c-privacy__scrollWrap\">\r\n              <table class=\"c-privacy__table3Columns\">\r\n                <tbody>\r\n                  <tr>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray\">\r\n                      <span class=\"c-privacy__itemText -bold\">Description<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Categories of data<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Legal bases<\/span>\r\n                    <\/th>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      <span class=\"c-privacy__itemText -bold\">Receipt of service:<\/span> If we have engaged an\r\n                      organisation to provide us or our client with services (for example, IT support or financial\r\n                      advice), we will collect and process your personal data if you are a contact within the relevant\r\n                      organisation in order to manage our relationship or our clients with the organization, to receive\r\n                      services from the organisation and, where relevant, to provide our services to others including\r\n                      our customers.\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">Registration Data\/Identifiers<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      It is necessary for us to use personal data in this way to perform our obligations in accordance\r\n                      with any contract that we may have with the organization, or it is in our legitimate interest to\r\n                      use personal data in such a way to ensure that we have an effective working relationship with the\r\n                      organization and are able to provide our services to others in an effective way. Where we do this\r\n                      on behalf of our clients as a data processor, we do not require a legal basis for such processing.\r\n                    <\/td>\r\n                  <\/tr>\r\n                <\/tbody>\r\n              <\/table>\r\n              <table class=\"c-privacy__table3Columns\">\r\n                <tbody>\r\n                  <tr>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray\">\r\n                      <span class=\"c-privacy__itemText -bold\">Description<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Categories of data<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Legal bases<\/span>\r\n                    <\/th>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      <span class=\"c-privacy__itemText -bold\"\r\n                        >Business administration, finance, and legal compliance:<\/span\r\n                      >\r\n                      We may use an individual\u2019s personal data for the following business administration and legal\r\n                      compliance purposes:<br \/><br \/>\u30fbto facilitate the operation or effective management of our group\r\n                      of businesses;<br \/><br \/>\u30fbfor financial, accounting and tax purposes;<br \/><br \/>\u30fbto comply\r\n                      with our legal obligations;<br \/><br \/>\u30fbto enforce or protect our legal rights;<br \/><br \/>\u30fbto\r\n                      deal with complaints;<br \/><br \/>\u30fbto protect the rights of third parties (including where health\r\n                      or security of an individual is endangered (e.g. a fire); and<br \/><br \/>\u30fbin connection with a\r\n                      business transition or sale such as a merger, re-organization, acquisition by another company, or\r\n                      sale of all or a portion of our assets.\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">Registration Data\/Identifiers<br \/><br \/>Transaction Data<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      It is necessary for us to use personal data in this way to perform our obligations in accordance\r\n                      with any contract that we may have with the organisation, or it is in our legitimate interest to\r\n                      use personal data in such a way to ensure that we have an effective working relationship with the\r\n                      organisation and are able to provide our services to others in an effective way. Where we do this\r\n                      on behalf of our clients as a data processor, we do not require a legal basis for such processing.\r\n                    <\/td>\r\n                  <\/tr>\r\n                <\/tbody>\r\n              <\/table>\r\n            <\/div>\r\n          <\/li>\r\n          <li class=\"c-privacy__subItem\">\r\n            <section id=\"sec3\"><h4 class=\"c-privacy__itemText -bold\">3. How Long We Keep Your Information<\/h4><\/section>\r\n            <p class=\"c-privacy__itemText\">\r\n              We will only store your information as long as necessary to fulfill the purposes for which the information\r\n              is collected and processed or, where applicable law provides for longer storage and retention periods, for\r\n              the storage and retention period required by law. Where we process any other personal data, we will retain\r\n              relevant personal data for up to six years from the date of our last interaction with you (and in\r\n              compliance with our data protection obligations). We may then destroy such files without further notice or\r\n              liability.<br \/><br \/>If any personal data is only useful for a short period (such as for a specific\r\n              activity, promotion or marketing campaign), we will not retain it for longer than the period for which it\r\n              is used by us.<br \/><br \/>If you have opted out of receiving marketing communications from us, we will\r\n              need to retain certain personal data on a suppression list indefinitely so that we know not to send you\r\n              further marketing communications in the future. However, we will not use this personal data to send you\r\n              further marketing unless you subsequently opt back in to receive such marketing.\r\n            <\/p>\r\n          <\/li>\r\n          <li class=\"c-privacy__subItem\">\r\n            <section id=\"sec4\"><h4 class=\"c-privacy__itemText -bold\">4. How We Share Your Information<\/h4><\/section>\r\n            <p class=\"c-privacy__itemText\">\r\n              We may disclose aggregated information about users, and information that does not identify any individual,\r\n              without restriction.<br \/><br \/>We may also disclose personal information that we collect or you provide\r\n              as described in this Privacy Policy:\r\n            <\/p>\r\n            <ul class=\"c-privacy__subList\">\r\n              <li class=\"c-privacy__subItem\">\r\n                <p class=\"c-privacy__itemText\">\r\n                  \u30fbTo our subsidiaries and affiliates;<br \/>\u30fbTo contractors, service providers, advertising partners,\r\n                  event partners, and other third parties we use to support our business and\/or the Apps and who are\r\n                  bound by contractual obligations to keep personal information confidential and use it only for the\r\n                  purposes for which we disclose it to them.<br \/>\u30fbTo a buyer or other successor in the event of a\r\n                  merger, divestiture, restructuring, reorganization, dissolution, or other sale or transfer of some or\r\n                  all of Cocone\u2019s assets, whether as a going concern or as part of bankruptcy, liquidation, or similar\r\n                  proceedings, in which personal information held by Cocone about App users is among the assets\r\n                  transferred.<br \/>\u30fbTo auditors, lawyers, accountants and other professional advisers;<br \/>\u30fbFrom\r\n                  time to time, to other third parties for any other purpose disclosed by us when you provide the\r\n                  information.<br \/>\u30fbWith your consent.<br \/>We may also disclose your personal information:<br \/>\u30fbTo\r\n                  comply with any court order, law, or legal process, including responding to any government or\r\n                  regulatory request.<br \/>\u30fbTo enforce or apply our Terms of Use and other agreements, including for\r\n                  billing and collection purposes.<br \/>\u30fbIf we reasonably believe (within the bounds of applicable law)\r\n                  disclosure is necessary or appropriate to protect the rights, property, security or safety of Cocone,\r\n                  our customers, or others, or to address technical issues. This includes exchanging information with\r\n                  other companies and organizations for the purposes of fraud protection and credit risk reduction.\r\n                <\/p>\r\n              <\/li>\r\n            <\/ul>\r\n            <br \/>\r\n            <h5 class=\"c-privacy__itemText -bold\">Choices About How We Use and Disclose Your Information<\/h5>\r\n            <p class=\"c-privacy__itemText\">\r\n              We have created mechanisms to provide you with the following control over your information:\r\n            <\/p>\r\n            <ul class=\"c-privacy__subList\">\r\n              <li class=\"c-privacy__subItem\">\r\n                <p class=\"c-privacy__itemText\">\r\n                  \u30fbTracking Technologies and Advertising. You can set your browser to refuse all or some browser\r\n                  cookies, or to alert you when cookies are being sent. If you disable or refuse cookies, please note\r\n                  that some parts of the Apps may then be inaccessible or not function properly.\r\n                <\/p>\r\n              <\/li>\r\n            <\/ul>\r\n            <p class=\"c-privacy__itemText\">\r\n              We do not control third parties\u2019 collection or use of your information to serve interest-based\r\n              advertising. However, these third parties may provide you with ways to choose not to have your information\r\n              collected or used in this way. You may opt out of receiving targeted ads from members of the Network\r\n              Advertising Initiative on<a class=\"c-textLink -red\" href=\"https:\/\/optout.networkadvertising.org\/?c=1\">\r\n                their website.<\/a\r\n              ><br \/><br \/>California residents may have additional personal information rights and choices. Please see\r\n              Your California Privacy Rights for more information.\r\n            <\/p>\r\n          <\/li>\r\n          <li class=\"c-privacy__subItem\">\r\n            <section id=\"sec5\"><h4 class=\"c-privacy__itemText -bold\">5. Children\u2019s Privacy<\/h4><\/section>\r\n            <p class=\"c-privacy__itemText\">\r\n              If we learn we have collected or received personal information from a child under thirteen (13) without\r\n              verification of prior parental consent, we will delete that information. If you believe we may possess or\r\n              have received any information from or about a child under thirteen (13) without such prior parental\r\n              consent, please immediately contact us by email at the email address provided in the \u201cContacting Cocone\u201d\r\n              Section 14 below.<br \/>\r\n              <br \/>\r\n              Notwithstanding the foregoing, PetKart may collect personal information from users under the age of thirteen (13). \r\n              For a description of our information collection, use, and parental consent practices with respect to PetKart, please refer to Section 16.\r\n              <br \/>\r\n              In one or more countries outside the United States, the applicable age is fourteen (14) years of age,\r\n              rather than thirteen (13) years of age.<br \/>\r\n              <br \/>\r\n              California residents under sixteen (16) years of age may have additional rights regarding the collection\r\n              and sale of their personal information. Please see Your California Privacy Rights below for more\r\n              information.\r\n            <\/p>\r\n          <\/li>\r\n          <li class=\"c-privacy__subItem\">\r\n            <section id=\"sec6\"><h4 class=\"c-privacy__itemText -bold\">6. How We Protect Your Information<\/h4><\/section>\r\n            <p class=\"c-privacy__itemText\">\r\n              We have implemented measures designed to secure your personal information from accidental loss and from\r\n              unauthorized access, theft, use, alteration, and disclosure. All information you provide to us is stored\r\n              on our secure servers behind firewalls. Any payment transactions will be encrypted using SSL\r\n              technology.<br \/><br \/>The safety and security of your information also depend on you. Where we have\r\n              issued you (or you have chosen) a password for access to certain parts of our Apps, you are responsible\r\n              for keeping your password confidential. Please do not share your password with anyone.<br \/><br \/>We do\r\n              not and will not, at any time, request your credit card information, your login information or other\r\n              identification in a non-secure or unsolicited communication (such as email).<br \/><br \/>Although we do our\r\n              best to protect your personal information, we cannot guarantee the security of your personal information\r\n              transmitted to or on our Apps. Any transmission of personal information is at your own risk. You assume\r\n              this risk by using any part of the Apps. We are not responsible for circumvention of any of our privacy\r\n              settings or security measures, and\/or any damages resulting from such circumvention.\r\n            <\/p>\r\n          <\/li>\r\n          <li class=\"c-privacy__subItem\">\r\n            <section id=\"sec7\"><h4 class=\"c-privacy__itemText -bold\">7. How You May Change, Remove, Or Export Your Information<\/h4><\/section>\r\n            <h5 class=\"c-privacy__itemText -bold\">Accessing and Correcting Your Information<\/h5>\r\n            <p class=\"c-privacy__itemText\">\r\n              You can review and change your personal information by sending us an email at the email address provided\r\n              in the \u201cContacting Cocone\u201d Section 14 below to request access to, object to, correct or delete any\r\n              personal information that you have provided to us.<br \/>\r\n              <br \/>\r\n              We may not accommodate a request to change information if we reasonably believe the change would violate\r\n              any law or legal requirement, or cause the information to be incorrect.<br \/>\r\n              <br \/>\r\n              If you delete your user content, copies of your user content may remain viewable in cached and archived\r\n              pages, or might have been copied or stored by other users. Proper access to and use of information,\r\n              including without limitation user content, is governed by our Terms of Use.<br \/>\r\n              <br \/>\r\n              You may email us at the email address provided in the \u201cContacting Cocone\u201d Section 14 below to request that\r\n              we delete your personal information from our database. For such requests, please write \u201cdelete my personal\r\n              information\u201d in the subject line, and include your email address in the body of the message. We will use\r\n              commercially reasonable efforts to honor your request. We may retain an archived copy of your records as\r\n              required by law or for administrative purposes.<br \/>\r\n              <br \/>\r\n              Please note that we will store communications you may send through the Apps, as well as any comments you\r\n              may post, and they may not be subject to modification or deletion.<br \/>\r\n              <br \/>\r\n              Please note, similar rights will apply in the UK, EEA and Switzerland. Please see the<span\r\n                style=\"text-decoration: underline\"\r\n              >\r\n                Privacy section for users from the EEA. UK and Switzerland<\/span\r\n              >\r\n              for further information\r\n            <\/p>\r\n          <\/li>\r\n          <li class=\"c-privacy__subItem\">\r\n            <section id=\"sec8\"><h4 class=\"c-privacy__itemText -bold\">8. Links To Third-Party Websites And Services<\/h4><\/section>\r\n            <p class=\"c-privacy__itemText\">\r\n              The Apps may contain links to other websites and online services. If you choose to click through to one of\r\n              these other websites or online services, please note that any information you may provide will be subject\r\n              to the privacy policy and other terms and conditions of that website or service, and not to this Privacy\r\n              Policy. We do not control third-party websites or services, and the fact that a link to such a website or\r\n              service appears in the Apps does not mean that we endorse its or its provider, or have approved the\r\n              provider\u2019s policies or practices related to user information.<br \/><br \/>Before providing any information\r\n              to any third-party website or service, please review the privacy policy and other terms and conditions of\r\n              that website or service. You agree that Cocone will have no liability for any matters relating to a\r\n              third-party website or service that you provide information to, including their collection and\/or handling\r\n              of that information.\r\n            <\/p>\r\n          <\/li>\r\n          <li class=\"c-privacy__subItem\">\r\n            <section id=\"sec9\"><h4 class=\"c-privacy__itemText -bold\">9. Non-U.S. Users<\/h4><\/section>\r\n            <p class=\"c-privacy__itemText\">\r\n              When we refer to the term \u201c<span class=\"c-privacy__itemText -bold\">GDPR<\/span>\u201d in this Privacy Policy we\r\n              mean the European Union General Data Protection Regulation. Information that you provide may be\r\n              transferred or accessed by entities around the world as described in this Privacy Policy. If you are\r\n              located outside the United States, you understand that we may transfer personal information to and process\r\n              it in the United States. In such event, transferred personal information will nonetheless be processed and\r\n              held in accordance with the requirements of the applicable law in your place of residence. If you are\r\n              located in the UK, EEA or Switzerland please note that your personal information may be transferred\r\n              outside of the UK, EEA or Switzerland. Your consent to this Privacy Policy together with your submission\r\n              of personal information constitute your agreement to these transfers. Please see the<span\r\n                style=\"text-decoration: underline\"\r\n              >\r\n                Privacy section for users from the EEA, UK and Switzerland<\/span\r\n              >\r\n              for further information.\r\n            <\/p>\r\n          <\/li>\r\n          <li class=\"c-privacy__subItem\">\r\n            <section id=\"sec10\"><h4 class=\"c-privacy__itemText -bold\">10. Privacy section for users from the UK, EEA and Switzerland<\/h4><\/section>\r\n            <p class=\"c-privacy__itemText\">\r\n              By continuing to use our Apps you acknowledge that your data will be processed in accordance with this\r\n              Privacy Policy.\r\n            <\/p>\r\n            <h5 class=\"c-privacy__itemText -bold\">A. Data Controller<\/h5>\r\n            <p class=\"c-privacy__itemText\">\r\n              For the purposes of this Privacy Policy, Cocone ONE corporation is the Data Controller of your personal\r\n              information.\r\n            <\/p>\r\n            <h5 class=\"c-privacy__itemText -bold\">B. International transfers of personal data<\/h5>\r\n            <p class=\"c-privacy__itemText\">\r\n              Non-UK\/EEA countries may not provide the same degree of protection for your personal data, may not give\r\n              you the same rights in relation to your personal data and may not have a data protection supervisory\r\n              authority to help you if you have any concerns about the processing of your personal data. However, when\r\n              transferring your personal data (that originates from the UK, EEA or Switzerland) outside the UK, EEA or\r\n              Switzerland, we will comply with our legal and regulatory obligations in relation to your personal data,\r\n              including having a lawful basis for transferring personal data and putting appropriate safeguards in place\r\n              to ensure an adequate level of protection for the personal data. We will take reasonable steps to ensure\r\n              the security of your personal data in accordance with applicable data protection laws.<br \/><br \/>When\r\n              transferring your personal data outside the UK, EEA or Switzerland, we will, where required by applicable\r\n              law, implement at least one of the safeguards set out below. Please contact us if you would like further\r\n              information on the specific mechanisms used by us when transferring your personal data outside the UK, EEA\r\n              or Switzerland.\r\n            <\/p>\r\n            <p class=\"c-privacy__itemText\">\r\n              \u30fbAdequacy decisions: We may transfer your personal data to countries that have been deemed to provide an\r\n              adequate level of protection for personal data by the European Commission and\/or the UK\/Swiss Government\r\n              (as applicable).<br \/>\u30fbModel clauses: Where we use certain service providers, we may use specific\r\n              standard contractual clauses approved by the European Commission and\/or the UK\/Swiss Government which give\r\n              personal data the same protection it has in Europe, Switzerland and\/or the UK.\r\n            <\/p>\r\n            <h5 class=\"c-privacy__itemText -bold\">C. Rights of EEA Residents<\/h5>\r\n            <p class=\"c-privacy__itemText\">\r\n              If you are accessing or using the Apps from within the UK, EEA or Switzerland you may have the following\r\n              rights under the GDPR (as well as other rights). If you wish to exercise any of these rights, you may do\r\n              so by contacting us as provided (a) in Section 14 below, or (b) otherwise in this Privacy Policy.\r\n            <\/p>\r\n            <p class=\"c-privacy__itemText\">\r\n              \u30fbRight of Access: You have the right to obtain confirmation from us as to whether or not we process\r\n              personal information from you and you also have the right to at any time obtain access to your personal\r\n              information stored by us.<br \/>\u30fbRight to Correction of your Personal Information: If we process your\r\n              personal information, we use reasonable measures to ensure that your personal information is accurate and\r\n              up-to-date for the purposes for which your personal information was collected. If your personal\r\n              information is inaccurate or incomplete, you have the right to require us to correct it.<br \/>\u30fbRight to\r\n              Deletion of your Personal Information or Right to Restriction of Processing: You may have the right to\r\n              require us to delete your personal information or to restrict of processing of your personal\r\n              information.<br \/>\u30fbRight to Withdraw your Consent: If you have given your consent to the processing of\r\n              your personal information, you have the right to withdraw your consent at any time, without affecting the\r\n              lawfulness of processing based on the consent before the withdrawal.<br \/>\u30fbRight to Data Portability: You\r\n              may have the right to receive personal information concerning you and which you have provided to us, in a\r\n              structured, commonly used and machine-readable format or to transmit this data to another controller.<br \/>\u30fbRight\r\n              to Object: You may have the right to object to the processing of your personal information as further\r\n              specified in this Privacy Policy.<br \/>\u30fbRight not to be subject to automated decision making and\r\n              profiling: You have the right not to be subject to a decision when it is based on automatic processing,\r\n              including profiling, if it produces a legal effect or similarly significantly affects you, unless such\r\n              profiling is necessary for the entering into, or the performance of, a contract between you and us.<br \/>\u30fbRight\r\n              to Lodge a Complaint with Supervisory Authority: You have the right to lodge a complaint with your\r\n              relevant data protection supervisory authority located in the European Union. If you are located in the\r\n              EEA, further information about how to contact your local data protection authority is available on the\r\n              <a\r\n                class=\"c-textLink -red\"\r\n                href=\"http:\/\/ec.europa.eu\/justice\/data-protection\/bodies\/authorities\/index_en.htm\"\r\n                >website of the European Commission<\/a\r\n              >. If you are located in the UK the regulatory authority is the Information Commissioner\u2019s Office (\u201cICO\u201d).\r\n              Contact details for the ICO can be found on its website at\r\n              <a class=\"c-textLink -red\" href=\"https:\/\/ico.org.uk\">https:\/\/ico.org.uk<\/a>.\r\n            <\/p>\r\n            <h5 class=\"c-privacy__itemText -bold\">D. If you fail to provide your personal data<\/h5>\r\n            <p class=\"c-privacy__itemText\">\r\n              Where we are required by law to collect your personal data, or we need to collect your personal data under\r\n              the terms of a contract we have with you, and you fail to provide that personal data when we request it,\r\n              we may not be able to perform the contract we have or are trying to enter into with you. This may apply\r\n              where you do not provide the personal data we need in order to provide the Apps or to process an\r\n              application to register an account. In these circumstances, we may have to cancel your application or the\r\n              provision of the relevant Apps to you, in which case we will notify you.\r\n            <\/p>\r\n          <\/li>\r\n\r\n          <li class=\"c-privacy__subItem\">\r\n            <section id=\"sec11\"><h4 class=\"c-privacy__itemText -bold\">11. Privacy Section For Users From the U.S.<\/h4><\/section>\r\n            <h5 class=\"c-privacy__itemText -bold\">A. Application<\/h5>\r\n            <p class=\"c-privacy__itemText\">\r\n              If you reside in California, Colorado, Connecticut, Delaware, Indiana, Iowa, Kentucky, Maryland,\r\n              Minnesota, Montana, Nebraska, Nevada, New Hampshire, New Jersey, Oregon, Rhode Island, Tennessee, Texas,\r\n              Utah, Vermont, Virginia, or Washington, this section applies to you.\r\n            <\/p>\r\n            <h5 class=\"c-privacy__itemText -bold\">B. Authorized Agent<\/h5>\r\n            <p class=\"c-privacy__itemText\">\r\n              You may designate an authorized agent to submit requests on your behalf by designating such an agent in\r\n              writing. We may require the agent to provide us with proof that you have authorized the agent to make\r\n              requests on your behalf prior to accepting requests from the agent.\r\n            <\/p>\r\n            <h5 class=\"c-privacy__itemText -bold\">C. Your Rights<\/h5>\r\n            <p class=\"c-privacy__itemText c-indent--marker1em\">\r\n              \u30fbRight to Access: You may request a copy of your personal information that we have collected about you.\r\n            <\/p>\r\n            <p class=\"c-privacy__itemText c-indent--marker1em\">\r\n              \u30fbRight to Delete: You may request to delete your personal information.\r\n            <\/p>\r\n            <p class=\"c-privacy__itemText c-indent--marker1em\">\r\n              \u30fbRight to Correct: You may request to update or correct your personal information.\r\n            <\/p>\r\n            <p class=\"c-privacy__itemText c-indent--marker1em\">\r\n              \u30fbRight to Opt Out: You may have the right to opt out of targeted advertising and the sale of your data\r\n              (as defined under relevant and applicable law).\r\n            <\/p>\r\n            <p class=\"c-privacy__itemText c-indent--marker1em\">\r\n              \u30fbTo make such a request, please send an email to the email address provided in the \u201cContacting Cocone\u201d\r\n              Section 14 below or write us at the address provided in the \u201cContacting Cocone\u201d Section 14 below.<br \/>\r\n              We will not discriminate against you for exercising any of these rights above.\r\n            <\/p>\r\n            <h5 class=\"c-privacy__itemText -bold\">D. California Residents<\/h5>\r\n            <p class=\"c-privacy__itemText\">\r\n              As the terms are defined under the California Privacy Rights Act, we do not knowingly sell or share your\r\n              personal information. We do not have actual knowledge that we sell or share the personal information of\r\n              minors under 16.\r\n            <\/p>\r\n            <p class=\"c-privacy__itemText\">\r\n              If you are a resident of California, you have specific rights regarding our handling of your \u201cpersonal\r\n              information\u201d as specifically defined in California\u2019s \u201cShine the Light\u201d law (Cal. Civil Code Section \u00a7\r\n              1798.83). This law permits users of our Apps who are California residents to request certain information\r\n              regarding our disclosure of personal information to third parties for their direct marketing purposes. To\r\n              make such a request, please send an email to the email address provided in the \u201cContacting Cocone\u201d Section\r\n              14 below or write us at the address provided in the \u201cContacting Cocone\u201d Section 14 below.<br \/>\r\n              Within thirty (30) days of receiving such a request, we will provide a list of the categories of personal\r\n              information disclosed to third parties for such third parties\u2019 direct marketing purposes during the\r\n              immediately preceding calendar year, along with the names and addresses of these third parties. A request\r\n              may be made no more than once per calendar year and we are not required to respond to requests made by\r\n              means other than through the email address and mailing address above.\r\n            <\/p>\r\n            <h5 class=\"c-privacy__itemText -bold\"><\/h5>\r\n            <p class=\"c-privacy__itemText\"><\/p>\r\n          <\/li>\r\n          <li class=\"c-privacy__subItem\">\r\n            <section id=\"sec12\"><h4 class=\"c-privacy__itemText -bold\">12. Privacy section for users from the Republic of Korea<\/h4><\/section>\r\n            <p class=\"c-privacy__itemText\">\r\n              We provide the Apps and web services around the world. In accordance with the precedents in the Republic\r\n              of Korea, personal information includes the user ID and account password you set on the Apps.<br \/>\r\n              <br \/>\r\n              Subsidiaries or affiliated entities of Cocone ONE corporation in the Republic of Korea may share personal\r\n              information with our affiliates and\/or third parties, including entities located outside of the Republic\r\n              of Korea, on prior notice for the following purposes: <br \/>\r\n              <br \/>\r\n              \u30fbTo support the operation of the Apps; and<br \/>\r\n              \u30fbTo support the customer support services.<br \/>\r\n              <br \/>\r\n              Personal information that subsidiaries or affiliated entities of Cocone ONE corporation in the Republic of\r\n              Korea share shall be or may be used, processed, and stored in accordance with the purposes below. We share\r\n              personal information as follows:\r\n            <\/p>\r\n            <div class=\"c-privacy__scrollWrap\">\r\n              <table class=\"c-privacy__table6Columns\">\r\n                <tbody>\r\n                  <tr>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray\">\r\n                      <span class=\"c-privacy__itemText -bold\">Company<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Overseas Country<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Personal Information<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Date and Method of transferring<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Purpose of using personal information<\/span>\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Period of retention and use<\/span>\r\n                    <\/th>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm wide\">Cocone ONE corporation (privacy@cocone.co.jp)<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">Japan<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Username, account password, IP address, information to check double registration\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">Completion of registration, via dedicated network<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">Operation of the Apps, providing other related services<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Until the withdrawal of users from the Apps and termination of providing the Apps\r\n                    <\/td>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm wide\">Zendesk, Inc. (privacy@zendesk.com)<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">United States<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Username, account password, IP address, information to check double registration\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Real-time transmission when users use the Apps, via dedicated network\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">Collection of user inquiries and notice management<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Until the withdrawal of users from the Apps and termination of providing the Apps\r\n                    <\/td>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm wide\">Amazon Web Service Inc. (<a href=\"https:\/\/aws.amazon.com\/privacy\/\" rel=\"nofollow\">https:\/\/aws.amazon.com\/privacy\/<\/a>)<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">United States<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Username, account password, date of birth, name, email address, cookies, IP address, information\r\n                      to check double registration, Information on legal representative (name, e-mail address,\r\n                      information to check double registration)\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Real-time transmission when users use the Apps, via dedicated network\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">Operation of the Apps, providing other related services<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Until the withdrawal of users from the Apps and termination of providing the Apps\r\n                    <\/td>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm wide\">Firebase by Google LLC<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">United States<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Username, IP address, device information, app activity, crash reports\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Real-time transmission when users use the Apps, via dedicated network\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Analytics, performance tracking, crash reporting, and app improvement\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Until the withdrawal of users from the Apps and termination of providing the Apps\r\n                    <\/td>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm wide\">Google Play Services<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">United States<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">Device identifiers, account information<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">Real-time transmission during App usage<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Account authentication, in-app purchases, and user access management\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Until the withdrawal of users from the Apps and termination of providing the Apps\r\n                    <\/td>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm wide\">Apple Game Center<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">United States<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">Game progress, account identifiers<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">Real-time transmission during App usage<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">Social gaming features, achievements, and leaderboard access<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Until the withdrawal of users from the Apps and termination of providing the Apps\r\n                    <\/td>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm wide\">Game Analytics<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">Denmark<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">Username, IP address, in-app behavior data<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">Real-time transmission during App usage<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      User engagement analysis, game optimization, and experience improvement\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Until the withdrawal of users from the Apps and termination of providing the Apps\r\n                    <\/td>\r\n                  <\/tr>\r\n                <\/tbody>\r\n              <\/table>\r\n            <\/div>\r\n          <\/li>\r\n\r\n          <li class=\"c-privacy__subItem\">\r\n            <section id=\"sec13\"><h4 class=\"c-privacy__itemText -bold\">13. Privacy section for users playing Fashion Fable: Dress Up Style<\/h4><\/section>\r\n            <p class=\"c-privacy__itemText\">If you play Fashion Fable: Dress Up Style, this section applies to you.<\/p>\r\n            <p class=\"c-privacy__itemText -bold\">Personal Information We Collect<\/p>\r\n            <p class=\"c-privacy__itemText\">\r\n              We may collect the same personal information detailed in Section 1, with the exclusion of Sensory Data.\r\n            <\/p>\r\n            <p class=\"c-privacy__itemText -bold\">How we collect your personal information<\/p>\r\n            <p class=\"c-privacy__itemText\">\r\n              In addition to the methods detailed in Section 1, we may collect personal data about you from third\r\n              parties as follows:\r\n            <\/p>\r\n            <p class=\"c-privacy__itemText c-indent--marker1em\">\u30fbFirebase<\/p>\r\n            <p class=\"c-privacy__itemText c-indent--marker1em\">\u30fbGoogle Play Services (Android)<\/p>\r\n            <p class=\"c-privacy__itemText c-indent--marker1em\">\u30fbGame Center (iOS)<\/p>\r\n          <\/li>\r\n\r\n          <li class=\"c-privacy__subItem\">\r\n            <section id=\"sec14\"><h4 class=\"c-privacy__itemText -bold\" id=\"section17\">14. Contacting Cocone<\/h4><\/section>\r\n            <div class=\"c-privacy__scrollWrap\">\r\n              <table class=\"c-privacy__table2Columns\">\r\n                <tbody>\r\n                  <tr>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray\">\r\n                      If you have any questions, inquires, requests, comments or complaints concerning this Privacy\r\n                      Policy or our information practices, please contact us below.<span\r\n                        class=\"c-privacy__itemText -bold\"\r\n                        >You are using:<\/span\r\n                      >\r\n                    <\/th>\r\n                    <th class=\"c-privacy__tableTerm -bg_gray -tac\">\r\n                      <span class=\"c-privacy__itemText -bold\">Contact Information:<\/span>\r\n                    <\/th>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm wide\">\r\n                      Hello Sweet Days<br \/>Hello Kitty Dream Village (English version)\r\n                    <\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Cocone ONE corporation<br \/><br \/>Email:<br \/>(ja)\r\n                      <a class=\"c-textLink -red\" href=\"mailto:support@sweetdays.zendesk.com\"\r\n                        >support@sweetdays.zendesk.com<\/a\r\n                      ><br \/>(en)\r\n                      <a class=\"c-textLink -red\" href=\"mailto:support_en@sweetdaysgl.zendesk.com\"\r\n                        >support_en@sweetdaysgl.zendesk.com<\/a\r\n                      >\r\n                      <br \/><br \/>Address: 40F, Midtown Tower, 9-7-1 Akasaka, Minato-ku, Tokyo 107-6240, Japan\r\n                    <\/td>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm wide\">Livly Island<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Cocone corporation<br \/><br \/>Email:\r\n                      <a class=\"c-textLink -red\" href=\"mailto:support@livly.zendesk.com\">support@livly.zendesk.com<\/a\r\n                      ><br \/><br \/>Address: 3-1-18 Wakabayashi, Setagaya-ku, Tokyo 154-0023, Japan\r\n                    <\/td>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm wide\">Livly Island (Korea)<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Cocone corporation<br \/><br \/>Email:\r\n                      <a class=\"c-textLink -red\" href=\"mailto:livly-kor-support@cocone.co.jp\"\r\n                        >livly-kor-support@cocone.co.jp<\/a\r\n                      ><br \/><br \/>Address: 3-1-18 Wakabayashi, Setagaya-ku, Tokyo 154-0023, Japan\r\n                    <\/td>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm wide\">Pocket twin<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Cocone corporation<br \/><br \/>Email:\r\n                      <a class=\"c-textLink -red\" href=\"mailto:pockettwin-support@cocone.co.jp\"\r\n                        >pockettwin-support@cocone.co.jp<\/a\r\n                      ><br \/><br \/>Address: 3-1-18 Wakabayashi, Setagaya-ku, Tokyo 154-0023, Japan\r\n                    <\/td>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm wide\">Pocket mini<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Cocone corporation<br \/><br \/>Email:\r\n                      <a class=\"c-textLink -red\" href=\"mailto:pomi_support@cocone-m.com\">pomi_support@cocone-m.com<\/a\r\n                      ><br \/><br \/>Address: 3-1-18 Wakabayashi, Setagaya-ku, Tokyo 154-0023, Japan\r\n                    <\/td>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm wide\">AlterEgo City<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Cocone Xenon Inc.<br \/><br \/>Email:\r\n                      <a class=\"c-textLink -red\" href=\"mailto:support@centennial-city.zendesk.com\"\r\n                        >support@centennial-city.zendesk.com<\/a\r\n                      ><br \/><br \/>Address: 115 Broadway 3rd Fl. Room#146, New York, NY 10006, USA\r\n                    <\/td>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm wide\">Purenista M: Dress-up &#038; Chat<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Cocone corporation<br \/><br \/>Email:\r\n                      <a class=\"c-textLink -red\" href=\"mailto:support@purenistam.com\">support@purenistam.com<\/a\r\n                      ><br \/><br \/>Address: 3-1-2 Higashihie Hakata-ku, Fukuoka-shi, Fukuoka-ken 812-0007, Japan\r\n                    <\/td>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm wide\">VIVIBUDS<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Cocone corporation<br \/><br \/>Email:\r\n                      <a class=\"c-textLink -red\" href=\"mailto:support@vivibuds.com\">support@vivibuds.com<\/a\r\n                      ><br \/><br \/>Address: 3-1-18 Wakabayashi, Setagaya-ku, Tokyo 154-0023, Japan\r\n                    <\/td>\r\n                  <\/tr>\r\n                  <tr>\r\n                    <td class=\"c-privacy__tableTerm wide\">Fashion Fable: Dress Up Style<\/td>\r\n                    <td class=\"c-privacy__tableTerm\">\r\n                      Cocone Europe O\u00dc<br \/><br \/>Email:\r\n                      <a class=\"c-textLink -red\" href=\"mailto:support_eu@cocone.co.jp\">support_eu@cocone.co.jp<\/a\r\n                      ><br \/><br \/>Address: Maakri tn 25, Kesklinna linnaosa, Tallinn, Harju maakond, 10145, Estonia\r\n                    <\/td>\r\n                  <\/tr>\r\n                <\/tbody>\r\n              <\/table>\r\n            <\/div>\r\n          <\/li>\r\n          <li class=\"c-privacy__subItem\">\r\n            <section id=\"sec15\"><h4 class=\"c-privacy__itemText -bold\">15. Standards Against Child Sexual Abuse and Exploitation<\/h4><\/section>\r\n            <p class=\"c-privacy__itemText\">\r\n              Cocone does not allow users to create or post contents or engage in activities that sexually exploit,\r\n              abuse or endanger children. We report all identified instances of sexual exploitation, abuse or\r\n              endangerment of a minor to the appropriate regional authority.<br \/>\r\n              Cocone also prohibits users from posting or sharing any pornographic content such as photos, videos,\r\n              illustrations, images and computer-generated imagery, including those that depict a minor engaging in\r\n              sexually explicit conduct.<br \/>\r\n              Users are prohibited from posting content or engaging in interactions or activities that depict, encourage\r\n              or promote sexual abuse and exploitation of children, including real human children as well as non-real\r\n              depictions of children such as avatars, characters or other forms of art or AI-generated content.<br \/>\r\n              <br \/>\r\n              Examples of child sexual abuse and exploitation that are prohibited include:<br \/>\r\n              <br \/>\r\n              \u30fbInappropriate interaction targeted at a child such as groping or caressing.<br \/>\r\n              \u30fbChild grooming, such as befriending a child online to facilitate, either online or offline, sexual\r\n              contact and\/or exchanging sexual imagery with that child.<br \/>\r\n              \u30fbSexualization of a minor, such as imagery that depicts, encourages or promotes the sexual abuse of\r\n              children or the portrayal of children in a manner that could result in the sexual exploitation of\r\n              children.<br \/>\r\n              \u30fbSextortion, such as threatening or blackmailing a child by using real or alleged access to a child\u2019s\r\n              intimate images.<br \/>\r\n              \u30fbTrafficking of a child, such as advertising or solicitation of a child for commercial sexual\r\n              exploitation.<br \/>\r\n              <br \/>\r\n              Users are also prohibited from posting content or engaging in interactions or activities that depict,\r\n              encourage or promote excessive violence, blood and gore, harmful and dangerous activities as well as\r\n              negative body or self-image.<br \/>\r\n              <br \/>\r\n              Users should report any inappropriate content they encounter through\r\n              <a class=\"c-textLink -red\" href=\"mailto:ml_child_safety@cocone.co.jp\">ml_child_safety@cocone.co.jp<\/a>\r\n            <\/p>\r\n          <\/li>\r\n          <li class=\"c-privacy__subItem\">\r\n            <section id=\"sec16\"><h4 class=\"c-privacy__itemText -bold\">16. Children\u2019s Privacy Policy for PetKart<\/h4><\/section>\r\n            <p class=\"c-privacy__itemText\">This section describes how we collect, use, and share personal information from or about children under the age of 13 in connection with PetKart.<\/p>\r\n            <p class=\"c-privacy__itemText\">When a child uses PetKart, we may collect the following categories of personal information:<\/p>\r\n            <p class=\"c-privacy__itemText c-indent--marker1em\">\r\n              <span class=\"c-privacy__itemText -bold\">\u30fbApps Profile data:<\/span> Your username, your avatar, interests and preferences.<\/p>\r\n            <p class=\"c-privacy__itemText c-indent--marker1em\"><span class=\"c-privacy__itemText -bold\">\u30fbTechnical and Usage Data\/Networking Activity:<\/span> including:<\/p>\r\n                <p class=\"c-privacy__itemText c-indent--marker2em\">\u30fbDetails of your visits to and actions in PetKart, including traffic data, location data, logs and other communication data, the resources that you access, and your use of PetKart.<\/p>\r\n                <p class=\"c-privacy__itemText c-indent--marker2em\">\u30fbInformation about your device and internet connection, including as applicable, your IP address through which you access PetKart, operating system, browser type, mobile network information, location, time zone, the unique mobile device ID or virtual unique device identifier for any mobile device used to access your account.<\/p>\r\n                <p class=\"c-privacy__itemText c-indent--marker2em\">\u30fbMetadata and other information associated with files stored on your device.<\/p>\r\n                <p class=\"c-privacy__itemText c-indent--marker2em\">\u30fbInformation about your internet connection, the device you use to access PetKart, and related usage details.<\/p>\r\n            <p class=\"c-privacy__itemText c-indent--marker1em\"><span class=\"c-privacy__itemText -bold\">\u30fbTransaction data:<\/span> Details of transactions you carry out through PetKart using in-game currency.<\/p>\r\n            <p class=\"c-privacy__itemText c-indent--marker1em\"><span class=\"c-privacy__itemText -bold\">\u30fbAutomatic Data-Collection Technologies  <\/span><\/p>\r\n                <p class=\"c-privacy__itemText\">When you access and use PetKart, we will collect resettable device identifiers. Resettable device identifiers can be used like cookies and are found on many mobile devices and tablets (for example, the \u201cIdentifier for Advertisers\u201d on Apple iOS devices and the \u201cGoogle Advertising ID\u201d on Android devices). Resettable device identifiers are used to make online advertising more relevant, and for analytics and optimization purposes.<\/p><br \/>\r\n                <p class=\"c-privacy__itemText\">We do not knowingly collect real names, home addresses, phone number, photographs, or any other directly identifying information from children beyond what is listed above. We collect only the minimum information necessary to provide the Service.<\/p><br \/>\r\n                <p class=\"c-privacy__itemText\"><span class=\"c-privacy__itemText -bold\">How We Use Your Personal Information<\/span><br \/>We use personal information that we collect about you or that you provide to us for the purposes set out in this section. <\/p>\r\n                    <p class=\"c-privacy__itemText c-indent--marker2em\">\u30fbTo provide you with PetKart;<\/p>\r\n                    <p class=\"c-privacy__itemText c-indent--marker2em\">\u30fbTo process your registration and to identify you when you log into your account;<\/p>\r\n                    <p class=\"c-privacy__itemText c-indent--marker2em\">\u30fbTo detect, prevent, and respond to unauthorized access, and other security threats;<\/p>\r\n                    <p class=\"c-privacy__itemText c-indent--marker2em\">\u30fbTo identify and resolve technical bugs, crashes, and service disruptions;<\/p>\r\n                    <p class=\"c-privacy__itemText c-indent--marker2em\">\u30fbTo measure aggregate performance indicators. This analysis is used solely for internal improvement.<\/p>\r\n                    <br \/>\r\n                <p class=\"c-privacy__itemText -bold\">Parental Consent<\/p>\r\n                    <p class=\"c-privacy__itemText\">We will not knowingly collect personal information from a child under 13 without first providing notice to the child\u2019s parent or guardian, where required, and obtaining verifiable parental consent.<\/p><br \/>\r\n                    <p class=\"c-privacy__itemText\">Where PetKart requires account creation for a child, we will:<\/p>\r\n                        <p class=\"c-privacy__itemText c-indent--marker2em\">\u30fbNotify the parent or guardian by email, explaining what information we collect and how we use it.<\/p>           \r\n                        <p class=\"c-privacy__itemText c-indent--marker2em\">\u30fbProvide the parent or guardian with the ability to consent to our collection and use of the child&#8217;s information.<\/p>\r\n                        <p class=\"c-privacy__itemText c-indent--marker2em\">\u30fbRefrain from collecting personal information if consent is not provided within a reasonable time.<\/p>\r\n                        <br \/>             \r\n                <span class=\"c-privacy__itemText -bold\">How We Share Your Information<\/span>\r\n                    <br \/>We may disclose personal information that we collect, or you provide as described in this section:<\/p> \r\n                    <p class=\"c-privacy__itemText\">To Zendesk for handling user inquiries and support;<\/p>\r\n                    <p class=\"c-privacy__itemText\">To Braze for marketing activities;<\/p>\r\n                    <p class=\"c-privacy__itemText\">To Firebase (Google) for App analytics, quality improvement; and<\/p>\r\n                    <p class=\"c-privacy__itemText\">To Google\/Apple for login authentication.<\/p>\r\n                    <br \/>\r\n                 <span class=\"c-privacy__itemText -bold\">How We Protect Children\u2019s Information<\/span>\r\n                    We take the security of children&#8217;s personal information seriously and implement technical and organizational measures to protect it. If you believe your child&#8217;s information has been compromised, please contact us immediately at <a class=\"c-textLink -red\" href=\"mailto:petkart_support_en-us@cocone.co.jp\">petkart_support_en-us@cocone.co.jp<\/a><\/p>\r\n                    <br \/>\r\n                 <span class=\"c-privacy__itemText -bold\">Data Retention<\/span><br \/>\r\n                    We retain children\u2019s personal information only for as long as is necessary to fulfil the purposes described in this section, or as required by applicable law.<\/p>\r\n                    <br \/>\r\n                 <span class=\"c-privacy__itemText -bold\">Parents Rights and Controls<\/span>\r\n                    <br \/>Parents and guardians have the following rights with respect to their child&#8217;s personal information:<\/p>\r\n                        <p class=\"c-privacy__itemText c-indent--marker2em\">\u30fbRight to Review:  Parents and guardians may request a copy of the personal information we have collected from your child.<\/p>           \r\n                        <p class=\"c-privacy__itemText c-indent--marker2em\">\u30fbRight to Correct:  Parents and guardians may request that inaccurate information be corrected.<\/p>\r\n                        <p class=\"c-privacy__itemText c-indent--marker2em\">\u30fbRight to Delete:  Parents and guardians may request that we delete your child&#8217;s personal information. Please note that deletion may result in the child&#8217;s account or certain features being unavailable.<\/p>\r\n                        <p class=\"c-privacy__itemText c-indent--marker2em\">\u30fbRight to Withdraw Consent:  Parents and guardians may withdraw consent for our continued collection and use of your child&#8217;s information.<\/p><br \/>\r\n                        <p class=\"c-privacy__itemText\">To exercise any of these rights, please contact us: <\/p><br \/>\r\n                        <p class=\"c-privacy__itemText\">Cocone Xenon Inc.\r\n                        <br \/>Email: <a class=\"c-textLink -red\" href=\"mailto:petkart_support_en-us@cocone.co.jp\">petkart_support_en-us@cocone.co.jp<\/a>\r\n                        <br \/>Address: 115 Broadway, 3rd Fl. Room#146, New York, NY 10006, USA <\/p>                    \r\n          <\/li>\r\n        <\/ol>\r\n      <\/li>\r\n    <\/ol>\r\n  <\/div>\r\n  <div class=\"c-article__linkarea\">\r\n    <a href=\"\/en\/\" class=\"c-button--tonal c-button--tonal--back\">\r\n    <span class=\"c-button__hole c-button__hole--back\">\r\n      <span class=\"c-button__icons c-button__icons--back\"><\/span>\r\n    <\/span>\r\n    <span class=\"c-button__label\">HOME<\/span>\r\n    <\/a>\r\n  <\/div>  \r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Last Updated: 3 \/ 31 \/ 2026 Table of Contents Introduction Changes to Our Privacy Policy 1. Information We Collect and How We Collect It 2. How We Use Your Personal Information 3. How Long We Keep Your Information 4. How We Share Your Information 5. Children\u2019s Privacy 6. How We Protect Your Information 7. [&hellip;]<\/p>\n","protected":false},"author":135601793,"featured_media":0,"parent":17997,"menu_order":42,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_crdt_document":"{\"document\":\"AAAR+LPp8RAPkvXjzRD4s+nxEAEVCDqAAZqoEz4BAAgCAQIKAEoM7qkTAoQCKSgDJwAEACcABACBAIQAJwAoBCcAKAInAAcAKAMnACgBJwAhAKgAxAAo8MEFu8EFc3RhdGV2ZXJzaW9uZG9jdW1lbnRkYXRlZG9jdW1lbnRzbHVnZG9jdW1lbnRzdGF0dXNkb2N1bWVudHRpdGxlQ09DT05FIEdMT0JBTCBQUklWQUNZIFBPTElDWWRvY3VtZW50Y29udGVudDwhLS0gd3A6aHRtbCB7ImhlaWdodCI6ODA0fSAtLT4KPC9kaXY+CjwhLS0gL3dwOmh0bWwgLS0+ZG9jdW1lbnRleGNlcnB0ZG9jdW1lbnRhdXRob3Jkb2N1bWVudGZlYXR1cmVkX21lZGlhZG9jdW1lbnRjb21tZW50X3N0YXR1c2RvY3VtZW50cGluZ19zdGF0dXNkb2N1bWVudHRlbXBsYXRlZG9jdW1lbnRtZXRhX2FjZl9jaGFuZ2VkamV0cGFja19wb3N0X3dhc19ldmVyX3B1Ymxpc2hlZGZvb3Rub3Rlc2RvY3VtZW50YmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50aGVpZ2h0aW5uZXJCbG9ja3NzdGF0ZXZlcnNpb248ZGl2IGNsYXNzPSJjLXByaXZhY3lfX2NvbnRhaW5lciI+DQogIDxkaXYgY2xhc3M9ImMtcHJpdmFjeV9fZGF0ZSI+DQogICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9fZGF0ZVRleHQiPkxhc3QgVXBkYXRlZDogMyAvIDMxIC8gMjAyNjwvcD4NCiAgPC9kaXY+DQogIDxkaXYgY2xhc3M9ImMtcHJpdmFjeV9fYmxvY2siPg0KICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5UYWJsZSBvZiBDb250ZW50czwvcD4NCiAgICA8b2wgY2xhc3M9ImMtcHJpdmFjeV9fbGlzdCI+DQogICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9faXRlbSI+DQogICAgICAgIDxsaT48YSBocmVmPSIjaW50cm8iPjxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPkludHJvZHVjdGlvbjwvYT48L3A+DQogICAgICAgIDxhIGhyZWY9IiNwb2xpY3kiPjxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPkNoYW5nZXMgdG8gT3VyIFByaXZhY3kgUG9saWN5PC9hPjwvcD4NCiAgICAgICAgPGEgaHJlZj0iI3NlYzEiPiA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj4xLiBJbmZvcm1hdGlvbiBXZSBDb2xsZWN0IGFuZCBIb3cgV2UgQ29sbGVjdCBJdDwvYT48L3A+DQogICAgICAgIDxhIGhyZWY9IiNzZWMyIj48cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj4yLiBIb3cgV2UgVXNlIFlvdXIgUGVyc29uYWwgSW5mb3JtYXRpb248L2E+PC9wPg0KICAgICAgICA8YSBocmVmPSIjc2VjMyI+PHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+My4gSG93IExvbmcgV2UgS2VlcCBZb3VyIEluZm9ybWF0aW9uPC9hPjwvcD4NCiAgICAgICAgPGEgaHJlZj0iI3NlYzQiPjxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPjQuIEhvdyBXZSBTaGFyZSBZb3VyIEluZm9ybWF0aW9uPC9hPjwvcD4NCiAgICAgICAgPGEgaHJlZj0iI3NlYzUiPjxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPjUuIENoaWxkcmVu4oCZcyBQcml2YWN5PC9hPjwvcD4NCiAgICAgICAgPGEgaHJlZj0iI3NlYzYiPjxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPjYuIEhvdyBXZSBQcm90ZWN0IFlvdXIgSW5mb3JtYXRpb248L2E+PC9wPg0KICAgICAgICA8YSBocmVmPSIjc2VjNyI+PHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+Ny4gSG93IFlvdSBNYXkgQ2hhbmdlLCBSZW1vdmUsIG9yIEV4cG9ydCBZb3VyIEluZm9ybWF0aW9uPC9hPjwvcD4NCiAgICAgICAgPGEgaHJlZj0iI3NlYzgiPjxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPjguIExpbmtzIHRvIFRoaXJkLVBhcnR5IFdlYnNpdGVzIGFuZCBTZXJ2aWNlczwvYT48L3A+DQogICAgICAgIDxhIGhyZWY9IiNzZWM5Ij48cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj45LiBOb24tVS5TLiBVc2VyczwvYT48L3A+DQogICAgICAgIDxhIGhyZWY9IiNzZWMxMCI+PHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+MTAuIFByaXZhY3kgU2VjdGlvbiBmb3IgVXNlcnMgZnJvbSB0aGUgVUssIEVFQSBhbmQgU3dpdHplcmxhbmQ8L2E+PC9wPg0KICAgICAgICA8YSBocmVmPSIjc2VjMTEiPjxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPjExLiBQcml2YWN5IFNlY3Rpb24gZm9yIFVzZXJzIGZyb20gdGhlIFUuUy48L2E+PC9wPg0KICAgICAgICA8YSBocmVmPSIjc2VjMTIiPjxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPjEyLiBQcml2YWN5IFNlY3Rpb24gZm9yIFVzZXJzIGZyb20gdGhlIFJlcHVibGljIG9mIEtvcmVhPC9hPjwvcD4NCiAgICAgICAgPGEgaHJlZj0iI3NlYzEzIj48cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj4xMy4gUHJpdmFjeSBTZWN0aW9uIGZvciBVc2VycyBQbGF5aW5nIEZhc2hpb24gRmFibGU6IERyZXNzIFVwIFN0eWxlPC9hPjwvcD4NCiAgICAgICAgPGEgaHJlZj0iI3NlYzE0Ij48cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj4xNC4gQ29udGFjdGluZyBDb2NvbmU8L2E+PC9wPg0KICAgICAgICA8YSBocmVmPSIjc2VjMTUiPjxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPjE1LiBTdGFuZGFyZHMgQWdhaW5zdCBDaGlsZCBTZXh1YWwgQWJ1c2UgYW5kIEV4cGxvaXRhdGlvbjwvYT48L3A+DQogICAgICAgIDxhIGhyZWY9IiNzZWMxNiI+PHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+MTYuIENoaWxkcmVu4oCZcyBQcml2YWN5IFBvbGljeSBmb3IgUGV0S2FydDwvYT48L3A+DQogICAgICA8L2xpPg0KICAgIDwvb2w+DQogIDwvZGl2Pg0KICA8ZGl2IGNsYXNzPSJjLXByaXZhY3lfX2Jsb2NrIj4NCiAgICA8b2wgY2xhc3M9ImMtcHJpdmFjeV9fbGlzdCI+DQogICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9faXRlbSI+DQogICAgICAgIDxzZWN0aW9uIGlkPSJpbnRybyI+PGgyIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UaXRsZSI+SW50cm9kdWN0aW9uPC9oMj48L3NlY3Rpb24+DQogICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICBDb2NvbmUgcmVzcGVjdHMgeW91ciBwcml2YWN5LCBhbmQgd2UgYXJlIGNvbW1pdHRlZCB0byBwcm90ZWN0aW5nIGl0IHRocm91Z2ggdGhpcyBQcml2YWN5IFBvbGljeS48YnIgLz4NCiAgICAgICAgICBBcyB1c2VkIGluIHRoaXMgUHJpdmFjeSBQb2xpY3ksIOKAnDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5Db2NvbmU8L3NwYW4+4oCdLCDigJw8c3Bhbg0KICAgICAgICAgICAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiDQogICAgICAgICAgICA+d2U8L3NwYW4NCiAgICAgICAgICA+4oCdLCDigJw8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+dXM8L3NwYW4+4oCdLCBvciDigJw8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+b3VyPC9zcGFuDQogICAgICAgICAgPuKAnSByZWZlciB0byBDb2NvbmUgT05FIGNvcnBvcmF0aW9uIGFuZCBpdHMgc3Vic2lkaWFyeSBvciBhZmZpbGlhdGVkIGVudGl0eSB0aGF0IGlzIHBhcnQgb2YgQ29jb25lIE9ORQ0KICAgICAgICAgIGNvcnBvcmF0aW9uLjxiciAvPg0KICAgICAgICAgIFRoaXMgUHJpdmFjeSBQb2xpY3kgZGVzY3JpYmVzIHRoZSB0eXBlcyBvZiBwZXJzb25hbCBpbmZvcm1hdGlvbiB3ZSBjb2xsZWN0IGZyb20geW91LCB0aGF0IHdlIG1heSByZWNlaXZlIGZyb20NCiAgICAgICAgICB0aGlyZCBwYXJ0aWVzIG9yIHlvdXIgY29udGFjdHMgb3IgdGhhdCB5b3UgbWF5IHByb3ZpZGUgd2hlbiB5b3UgdXNlIENvY29uZeKAmXMgYXBwbGljYXRpb25zIGZvciBtb2JpbGUgZGV2aWNlcw0KICAgICAgICAgICh0aGUg4oCcPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkFwcHM8L3NwYW4+4oCdKS48YnIgLz4NCiAgICAgICAgICBQbGVhc2UgZmFtaWxpYXJpemUgeW91cnNlbGYgd2l0aCBvdXIgcHJpdmFjeSBwcmFjdGljZXMgYW5kIGNvbnRhY3QgdXMgYXMgZGVzY3JpYmVkIGJlbG93IGluDQogICAgICAgICAgPGEgY2xhc3M9ImMtdGV4dExpbmsgLXJlZCIgaHJlZj0iI3NlY3Rpb24xNyI+U2VjdGlvbiAxNCDigJMgQ29udGFjdGluZyBDb2NvbmU8L2E+IGlmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMuPGJyIC8+DQogICAgICAgICAgVGhpcyBQcml2YWN5IFBvbGljeSBhcHBsaWVzIHRvIHRoZSBwZXJzb25hbCBpbmZvcm1hdGlvbiB3ZSBjb2xsZWN0Og0KICAgICAgICA8L3A+DQogICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPuODu1Rocm91Z2ggdGhlIEFwcHM7IGFuZDwvcD4NCiAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+DQogICAgICAgICAg44O7QnkgZW1haWwsIHRleHQsIGFuZCBvdGhlciBjb21tdW5pY2F0aW9ucyBiZXR3ZWVuIHlvdSBhbmQgdXMgYW5kL29yIHRoZSBBcHBzLg0KICAgICAgICA8L3A+DQogICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICBJdCBkb2VzIG5vdCBhcHBseSB0byBpbmZvcm1hdGlvbiBjb2xsZWN0ZWQgYnkgYW55IHRoaXJkIHBhcnR5IChpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIG91ciBhZmZpbGlhdGVzIGFuZA0KICAgICAgICAgIHN1YnNpZGlhcmllcyksIGluY2x1ZGluZyB0aHJvdWdoIGFueSBhcHBsaWNhdGlvbiBvciBjb250ZW50IChpbmNsdWRpbmcgYWR2ZXJ0aXNpbmcpIHRoYXQgbWF5IGxpbmsgdG8gb3IgYmUNCiAgICAgICAgICBhY2Nlc3NpYmxlIGZyb20gb3Igb24gdGhlIEFwcHMuPGJyIC8+UGxlYXNlIHJlYWQgdGhpcyBQcml2YWN5IFBvbGljeSBjYXJlZnVsbHkgdG8gdW5kZXJzdGFuZCBvdXIgcG9saWNpZXMgYW5kDQogICAgICAgICAgcHJhY3RpY2VzIHJlZ2FyZGluZyB5b3VyIGluZm9ybWF0aW9uIGFuZCBob3cgd2Ugd2lsbCBoYW5kbGUgeW91ciBpbmZvcm1hdGlvbi4NCiAgICAgICAgPC9wPg0KICAgICAgPC9saT4NCiAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19pdGVtIj4NCiAgICAgICAgPHNlY3Rpb24gaWQ9InBvbGljeSI+PGgyIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UaXRsZSI+Q2hhbmdlcyB0byBPdXIgUHJpdmFjeSBQb2xpY3k8L2gyPjwvc2VjdGlvbj4NCiAgICAgICAgPG9sIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykxpc3QiPg0KICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgVGhpcyBQcml2YWN5IFBvbGljeSBtYXkgY2hhbmdlIGZyb20gdGltZSB0byB0aW1lIHNvIHBsZWFzZSBjaGVjayB0aGlzIFByaXZhY3kgUG9saWN5IHBlcmlvZGljYWxseSBmb3INCiAgICAgICAgICAgICAgdXBkYXRlcy48YnIgLz4NCiAgICAgICAgICAgICAgSWYgd2UgbWFrZSBtYXRlcmlhbCBjaGFuZ2VzIHRvIGhvdyB3ZSB0cmVhdCBvdXIgdXNlcnPigJkgcGVyc29uYWwgaW5mb3JtYXRpb24sIHdlIHdpbGwgbm90aWZ5IHlvdSB0aHJvdWdoIGENCiAgICAgICAgICAgICAgbm90aWNlIGluIHRoZSBBcHBzLiBUaGUgZGF0ZSB0aGlzIFByaXZhY3kgUG9saWN5IHdhcyBsYXN0IHVwZGF0ZWQgaXMgaWRlbnRpZmllZCBhdCB0aGUgdG9wIG9mIHRoZSBmaXJzdA0KICAgICAgICAgICAgICBwYWdlIG9mIHRoaXMgUHJpdmFjeSBQb2xpY3kuIFVubGVzcyBvdGhlcndpc2Ugc3RpcHVsYXRlZCB1bmRlciBhcHBsaWNhYmxlIGxhdywgeW91IGFyZSByZXNwb25zaWJsZSBmb3INCiAgICAgICAgICAgICAgZW5zdXJpbmcgeW91IHBlcmlvZGljYWxseSB2aXNpdCB0aGlzIFByaXZhY3kgUG9saWN5IHRvIGNoZWNrIGZvciBhbnkgY2hhbmdlcy4NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICA8L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4NCiAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzZWMxIj48aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPg0KICAgICAgICAgICAgICAxLiBJbmZvcm1hdGlvbiBXZSBDb2xsZWN0IGFuZCBIb3cgV2UgQ29sbGVjdCBJdDxiciAvPlBlcnNvbmFsIEluZm9ybWF0aW9uIFdlIENvbGxlY3QNCiAgICAgICAgICAgIDwvaDQ+PC9zZWN0aW9uPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICBXaGVuIHdlIHRhbGsgYWJvdXQgcGVyc29uYWwgaW5mb3JtYXRpb24gKG9yIHBlcnNvbmFsIGRhdGEpIHdlIG1lYW4gYW55IGluZm9ybWF0aW9uIHRoYXQgcmVsYXRlcyB0byBhbg0KICAgICAgICAgICAgICBpZGVudGlmaWVkIG9yIGlkZW50aWZpYWJsZSBsaXZpbmcgaW5kaXZpZHVhbC4gVGhlIHBlcnNvbmFsIGluZm9ybWF0aW9uIHdlIG1heSBjb2xsZWN0IGFuZCBwcm9jZXNzIGFib3V0DQogICAgICAgICAgICAgIHlvdSB3aXRoaW4gdGhlIGxhc3QgdHdlbHZlICgxMikgbW9udGhzIGluY2x1ZGU6DQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgICA8dWwgY2xhc3M9ImMtcHJpdmFjeV9fc3ViTGlzdCI+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4NCiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj7jg7tSZWdpc3RyYXRpb24gRGF0YS9JZGVudGlmaWVyczo8L3NwYW4+IEVtYWlsIGFkZHJlc3MNCiAgICAgICAgICAgICAgICA8L3A+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+DQogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+44O7U2Vuc29yeSBkYXRhOjwvc3Bhbj4gUGhvdG9zLCB2aWRlb3Mgb3IgcmVjb3JkaW5ncyBvZiBhDQogICAgICAgICAgICAgICAgICB1c2Vy4oCZcyBlbnZpcm9ubWVudA0KICAgICAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4NCiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj7jg7tBcHBzIFByb2ZpbGUgZGF0YTo8L3NwYW4+IFlvdXIgdXNlcm5hbWUsIHlvdXIgYXZhdGFyLA0KICAgICAgICAgICAgICAgICAgaW50ZXJlc3RzIGFuZCBwcmVmZXJlbmNlcy4NCiAgICAgICAgICAgICAgICA8L3A+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+DQogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+44O7VGVjaG5pY2FsIGFuZCBVc2FnZSBEYXRhL05ldHdvcmtpbmcgQWN0aXZpdHk6PC9zcGFuPg0KICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nOg0KICAgICAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj4NCiAgICAgICAgICAgICAgICAgIOODu0RldGFpbHMgb2YgeW91ciB2aXNpdHMgdG8gYW5kIGFjdGlvbnMgaW4gdGhlIEFwcHMsIGluY2x1ZGluZyB0cmFmZmljIGRhdGEsIGxvY2F0aW9uIGRhdGEsIGxvZ3MgYW5kDQogICAgICAgICAgICAgICAgICBvdGhlciBjb21tdW5pY2F0aW9uIGRhdGEsIHRoZSByZXNvdXJjZXMgdGhhdCB5b3UgYWNjZXNzLCBhbmQgeW91ciB1c2Ugb2YgdGhlIEFwcHMuDQogICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPg0KICAgICAgICAgICAgICAgICAg44O7SW5mb3JtYXRpb24gYWJvdXQgeW91ciBkZXZpY2UgYW5kIGludGVybmV0IGNvbm5lY3Rpb24sIGluY2x1ZGluZyBhcyBhcHBsaWNhYmxlLCB5b3VyIElQIGFkZHJlc3MNCiAgICAgICAgICAgICAgICAgIHRocm91Z2ggd2hpY2ggeW91IGFjY2VzcyB0aGUgQXBwcywgb3BlcmF0aW5nIHN5c3RlbSwgYnJvd3NlciB0eXBlLCBtb2JpbGUgbmV0d29yayBpbmZvcm1hdGlvbiwNCiAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLCB0aW1lIHpvbmUsIHRoZSB1bmlxdWUgbW9iaWxlIGRldmljZSBJRCBvciB2aXJ0dWFsIHVuaXF1ZSBkZXZpY2UgaWRlbnRpZmllciBmb3IgYW55IG1vYmlsZQ0KICAgICAgICAgICAgICAgICAgZGV2aWNlIHVzZWQgdG8gYWNjZXNzIHlvdXIgYWNjb3VudC4NCiAgICAgICAgICAgICAgICA8L3A+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+DQogICAgICAgICAgICAgICAgICDjg7tNZXRhZGF0YSBhbmQgb3RoZXIgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGZpbGVzIHN0b3JlZCBvbiB5b3VyIGRldmljZS4NCiAgICAgICAgICAgICAgICA8L3A+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+DQogICAgICAgICAgICAgICAgICDjg7tJbmZvcm1hdGlvbiBhYm91dCB5b3VyIGludGVybmV0IGNvbm5lY3Rpb24sIHRoZSBkZXZpY2UgeW91IHVzZSB0byBhY2Nlc3MgdGhlIEFwcHMsIGFuZCByZWxhdGVkIHVzYWdlDQogICAgICAgICAgICAgICAgICBkZXRhaWxzLg0KICAgICAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4NCiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj7jg7tUcmFuc2FjdGlvbiBkYXRhOjwvc3Bhbj4gRGV0YWlscyBvZiB0cmFuc2FjdGlvbnMgeW91IGNhcnJ5DQogICAgICAgICAgICAgICAgICBvdXQgdGhyb3VnaCB0aGUgQXBwcyB1c2luZyBpbi1nYW1lIGN1cnJlbmN5Lg0KICAgICAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgICAgICBXZSB1c2UgdGhpcmQtcGFydHkgcGF5bWVudCBwcm9jZXNzb3JzIHRvIHByb2Nlc3MgcGF5bWVudHMgbWFkZSB0byB1cy4gSW4gY29ubmVjdGlvbiB3aXRoIHRoZQ0KICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZyBvZiBzdWNoIHBheW1lbnRzLCB3ZSBkbyBub3QgcmV0YWluIGFueSBwZXJzb25hbCBpbmZvcm1hdGlvbiBvciBhbnkgZmluYW5jaWFsIGluZm9ybWF0aW9uDQogICAgICAgICAgICAgICAgICBzdWNoIGFzIGNyZWRpdCBjYXJkIG51bWJlcnMuIFJhdGhlciwgYWxsIHN1Y2ggaW5mb3JtYXRpb24gaXMgcHJvdmlkZWQgZGlyZWN0bHkgdG8gb3VyIHRoaXJkLXBhcnR5DQogICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzIHdob3NlIHVzZSBvZiB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uIGlzIGdvdmVybmVkIGJ5IHRoZWlyIHByaXZhY3kgcG9saWNpZXMuIFdlIGhhdmUgbm8NCiAgICAgICAgICAgICAgICAgIGNvbnRyb2wgb3ZlciwgYW5kIGFyZSBub3QgcmVzcG9uc2libGUgZm9yLCB0aGlzIHRoaXJkIHBhcnR54oCZcyBjb2xsZWN0aW9uLCB1c2UgYW5kIGRpc2Nsb3N1cmUgb2YgeW91cg0KICAgICAgICAgICAgICAgICAgcGVyc29uYWwgaW5mb3JtYXRpb24uDQogICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5Ib3cgd2UgY29sbGVjdCB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uPC9zcGFuPjxiciAvPg0KICAgICAgICAgICAgICAgICAgV2UgbWF5IGNvbGxlY3QgYW5kIHJlY2VpdmUgeW91ciBwZXJzb25hbCBkYXRhIHVzaW5nIGRpZmZlcmVudCBtZXRob2RzOg0KICAgICAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+44O7UGVyc29uYWwgZGF0YSB5b3UgZGlyZWN0bHkgcHJvdmlkZSB0byB1czwvc3Bhbj48YnIgLz4NCiAgICAgICAgICAgICAgICAgIFlvdSBtYXkgZ2l2ZSB1cyB5b3VyIHBlcnNvbmFsIGRhdGEgZGlyZWN0bHksIGZvciBleGFtcGxlLCB3aGVuIHlvdSByZWdpc3RlciB0byB1c2Ugb3VyIEFwcHMsIGNvbnRhY3QNCiAgICAgICAgICAgICAgICAgIHVzIHdpdGggZW5xdWlyaWVzIG9yIGZlZWRiYWNrLg0KICAgICAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+44O7UGVyc29uYWwgZGF0YSByZWNlaXZlZCBmcm9tIHRoaXJkIHBhcnRpZXM8L3NwYW4+PGJyIC8+DQogICAgICAgICAgICAgICAgICBXZSBtYXkgcmVjZWl2ZSBwZXJzb25hbCBkYXRhIGFib3V0IHlvdSBmcm9tIHRoaXJkIHBhcnRpZXMuIFN1Y2ggdGhpcmQgcGFydGllcyBtYXkgaW5jbHVkZSB0aGlyZA0KICAgICAgICAgICAgICAgICAgcGFydGllcyB0aGF0IHByb3ZpZGUgdGVjaG5pY2FsIHNlcnZpY2VzIHRvIHVzIHNvIHRoYXQgd2UgY2FuIHByb3ZpZGUgdGhlIEFwcHMuPGJyIC8+DQogICAgICAgICAgICAgICAgICBXZSBtYXkgY29sbGVjdCBwZXJzb25hbCBkYXRhIGFib3V0IHlvdSB3aGVuIHlvdSBhY2Nlc3Mgc29tZSBvZiBvdXIgQXBwcyB3aXRoIHRoaXJkLXBhcnR5IHBsYXRmb3JtDQogICAgICAgICAgICAgICAgICBhY2NvdW50cywgc3VjaCBhcyBhIGdhbWluZyBwbGF0Zm9ybSBhY2NvdW50LiBXaGVuIHlvdSBhY2Nlc3MgdGhlIEFwcHMgaW4gdGhpcyB3YXksIHRoZSB0aGlyZC1wYXJ0eQ0KICAgICAgICAgICAgICAgICAgcGxhdGZvcm1zIHByb3ZpZGUgdXMgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB5b3UuIEZvciBleGFtcGxlLCBkZXBlbmRpbmcgb24geW91ciB1c2Ugb2YsIG9yIGFjdGl2aXR5IG9uDQogICAgICAgICAgICAgICAgICB0aGUgdGhpcmQtcGFydHkgcGxhdGZvcm0sIHdlIHJlY2VpdmUgeW91ciB1c2VybmFtZSwgZW1haWwgYWRkcmVzcywgb3IgYWNjb3VudCBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgdG8NCiAgICAgICAgICAgICAgICAgIHByb3ZpZGUgdGhlIEFwcHMuDQogICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj7jg7tBdXRvbWF0aWMgRGF0YS1Db2xsZWN0aW9uIFRlY2hub2xvZ2llczwvc3Bhbj48YnIgLz4NCiAgICAgICAgICAgICAgICAgIFdoZW4geW91IGFjY2VzcyBhbmQgdXNlIHRoZSBBcHBzIHdlIHdpbGwgY29sbGVjdCBjZXJ0YWluIHVzYWdlIGRhdGEgYW5kIHRlY2huaWNhbCBkYXRhLjxiciAvPg0KICAgICAgICAgICAgICAgICAgVGhlIGF1dG9tYXRpYyBkYXRhIGNvbGxlY3Rpb24gdGVjaG5vbG9naWVzIHdlIHVzZSB0byBjb2xsZWN0IHRoaXMgZGF0YSBtYXkgaW5jbHVkZToNCiAgICAgICAgICAgICAgICA8L3A+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+DQogICAgICAgICAgICAgICAgICDjg7tDb29raWVzIChvciBwaXhlbCB0YWdzIGFuZCBvdGhlciBzaW1pbGFyIHRlY2hub2xvZ2llcykuIEEgY29va2llIGlzIGEgc21hbGwgZmlsZSBwbGFjZWQgb24gdGhlIGhhcmQNCiAgICAgICAgICAgICAgICAgIGRyaXZlIG9mIHlvdXIgY29tcHV0ZXIgb3IgZGV2aWNlLiBZb3UgbWF5IHJlZnVzZSB0byBhY2NlcHQgYnJvd3NlciBjb29raWVzIGJ5IGFjdGl2YXRpbmcgdGhlDQogICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSBzZXR0aW5ncyBvbiB5b3VyIGJyb3dzZXIuIEhvd2V2ZXIsIGlmIHlvdSBzZWxlY3QgdGhpcyBzZXR0aW5nIHlvdSBtYXkgYmUgdW5hYmxlIHRvIGFjY2Vzcw0KICAgICAgICAgICAgICAgICAgY2VydGFpbiBwYXJ0cyBvZiB0aGUgQXBwcy4gVW5sZXNzIHlvdSBoYXZlIGFkanVzdGVkIHlvdXIgYnJvd3NlciBzZXR0aW5nIHNvIHRoYXQgaXQgd2lsbCByZWZ1c2UNCiAgICAgICAgICAgICAgICAgIGNvb2tpZXMsIG91ciBzeXN0ZW0gd2lsbCBpc3N1ZSBjb29raWVzIHdoZW4geW91IGRpcmVjdCB5b3VyIGJyb3dzZXIgdG8gdGhlIEFwcHMuDQogICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPg0KICAgICAgICAgICAgICAgICAg44O7V2ViIEJlYWNvbnMuIE91ciBlbWFpbHMgbWF5IHVzZSBzbWFsbCBlbGVjdHJvbmljIGZpbGVzIGtub3duIGFzIHdlYiBiZWFjb25zIChhbHNvIHJlZmVycmVkIHRvIGFzDQogICAgICAgICAgICAgICAgICBjbGVhciBnaWZzLCBwaXhlbCB0YWdzLCBhbmQgc2luZ2xlLXBpeGVsIGdpZnMpIHRoYXQgcGVybWl0IHVzLCBmb3IgZXhhbXBsZSwgdG8gY291bnQgdXNlcnMgd2hvIGhhdmUNCiAgICAgICAgICAgICAgICAgIHZpc2l0ZWQgdGhvc2UgcGFnZXMgb3Igb3BlbmVkIGFuIGVtYWlsIGFuZCBmb3Igb3RoZXIgcmVsYXRlZCB3ZWJzaXRlIHN0YXRpc3RpY3MgKGZvciBleGFtcGxlLA0KICAgICAgICAgICAgICAgICAgcmVjb3JkaW5nIHRoZSBwb3B1bGFyaXR5IG9mIGNlcnRhaW4gd2Vic2l0ZSBjb250ZW50IGFuZCB2ZXJpZnlpbmcgc3lzdGVtIGFuZCBzZXJ2ZXIgaW50ZWdyaXR5KS4NCiAgICAgICAgICAgICAgICA8L3A+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+DQogICAgICAgICAgICAgICAgICDjg7tSZXNldHRhYmxlIERldmljZSBJZGVudGlmaWVycy4gV2UgbWF5IGNvbGxlY3QgYSByZXNldHRhYmxlIGRldmljZSBpZGVudGlmaWVyIGZyb20geW91ciBkZXZpY2UuDQogICAgICAgICAgICAgICAgICBSZXNldHRhYmxlIGRldmljZSBpZGVudGlmaWVycyBjYW4gYmUgdXNlZCBsaWtlIGNvb2tpZXMgYW5kIGFyZSBmb3VuZCBvbiBtYW55IG1vYmlsZSBkZXZpY2VzIGFuZA0KICAgICAgICAgICAgICAgICAgdGFibGV0cyAoZm9yIGV4YW1wbGUsIHRoZSDigJxJZGVudGlmaWVyIGZvciBBZHZlcnRpc2Vyc+KAnSBvbiBBcHBsZSBpT1MgZGV2aWNlcyBhbmQgdGhlIOKAnEdvb2dsZQ0KICAgICAgICAgICAgICAgICAgQWR2ZXJ0aXNpbmcgSUTigJ0gb24gQW5kcm9pZCBkZXZpY2VzKS4gTGlrZSBjb29raWVzLCByZXNldHRhYmxlIGRldmljZSBpZGVudGlmaWVycyBhcmUgdXNlZCB0byBtYWtlDQogICAgICAgICAgICAgICAgICBvbmxpbmUgYWR2ZXJ0aXNpbmcgbW9yZSByZWxldmFudCwgYW5kIGZvciBhbmFseXRpY3MgYW5kIG9wdGltaXphdGlvbiBwdXJwb3Nlcy4NCiAgICAgICAgICAgICAgICA8L3A+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICAgICAgWW91IG1heSBhbHNvIGNvbnRyb2wgdGhlIGluZm9ybWF0aW9uIHRoYXQgd2UgY29sbGVjdCB0aHJvdWdoIHRoZSBzZXR0aW5ncyBvbiB5b3VyIG1vYmlsZSBkZXZpY2UuIFlvdQ0KICAgICAgICAgICAgICAgICAgbWF5IGFkanVzdCB0aGUgc2V0dGluZ3Mgb2YgeW91ciBtb2JpbGUgZGV2aWNlIHRvIHByZXZlbnQgdGhlIEFwcHMgZnJvbSBvYnRhaW5pbmcgbG9jYXRpb24gaW5mb3JtYXRpb24uDQogICAgICAgICAgICAgICAgICBIb3dldmVyLCBwbGVhc2Ugbm90ZSB0aGF0IHRoZSBBcHBzIG1heSByZWx5IG9uIGNvb2tpZXMgYW5kIGxvY2F0aW9uIGluZm9ybWF0aW9uIHRvIGZ1bmN0aW9uIHByb3Blcmx5DQogICAgICAgICAgICAgICAgICBhbmQgc29tZSBwYXJ0cyBvZiB0aGUgQXBwcyBtYXkgbm90IGJlIGF2YWlsYWJsZSBpZiB5b3UgZGlzYWJsZSBjb29raWVzLg0KICAgICAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+44O7R29vZ2xlIEFuYWx5dGljczwvc3Bhbj48YnIgLz4NCiAgICAgICAgICAgICAgICAgIEdvb2dsZSBBbmFseXRpY3MgaXMgYSB3ZWIgYW5hbHl0aWNzIHNlcnZpY2Ugb2ZmZXJlZCBieSBHb29nbGUuIEdvb2dsZSB1c2VzIHRoZSBkYXRhIGNvbGxlY3RlZCB0byB0cmFjaw0KICAgICAgICAgICAgICAgICAgYW5kIG1vbml0b3IgdGhlIHVzZSBvZiBvdXIgd2Vic2l0ZXMuIEdvb2dsZSBBbmFseXRpY3MgZG9lcyBub3QgaWRlbnRpZnkgaW5kaXZpZHVhbCB1c2VycyBvciBhc3NvY2lhdGUNCiAgICAgICAgICAgICAgICAgIHlvdXIgSVAgYWRkcmVzcyB3aXRoIG90aGVyIGRhdGEgaGVsZCBieSBHb29nbGUuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBwcml2YWN5IHByYWN0aWNlIG9mDQogICAgICAgICAgICAgICAgICBHb29nbGUsIHBsZWFzZSB2aXNpdCB0aGUgR29vZ2xlIFByaXZhY3kgVGVybXMgd2ViIHBhZ2U6PGJyIC8+DQogICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJodHRwczovL3BvbGljaWVzLmdvb2dsZS5jb20vcHJpdmFjeT9obD1lbiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPmh0dHBzOi8vcG9saWNpZXMuZ29vZ2xlLmNvbS9wcml2YWN5P2hsPWVuPC9hPg0KICAgICAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgICAgPC9saT4NCiAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgPC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9fc3ViSXRlbSI+DQogICAgICAgICAgICA8c2VjdGlvbiBpZD0ic2VjMiI+PGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj4yLiBIb3cgV2UgVXNlIFlvdXIgUGVyc29uYWwgSW5mb3JtYXRpb248L2g0Pjwvc2VjdGlvbj4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgV2UgdXNlIHBlcnNvbmFsIGluZm9ybWF0aW9uIHRoYXQgd2UgY29sbGVjdCBhYm91dCB5b3Ugb3IgdGhhdCB5b3UgcHJvdmlkZSB0byB1cyBmb3IgdGhlIHB1cnBvc2VzIHNldCBvdXQNCiAgICAgICAgICAgICAgaW4gdGhpcyBzZWN0aW9uLiBJZiB3ZSB3aXNoIHRvIG1ha2UgYW55IGNoYW5nZXMgdG8gdGhlc2UgcHVycG9zZXMsIG9yIGlmIHdlIHdpc2ggdG8gdXNlIHlvdXIgcGVyc29uYWwgZGF0YQ0KICAgICAgICAgICAgICBmb3IgYW55IHB1cnBvc2UgdGhhdCBpcyBub3QgbGlzdGVkIGluIHRoaXMgc2VjdGlvbiwgd2Ugd2lsbCBub3RpZnkgeW91IHVzaW5nIHRoZSBjb250YWN0IGRldGFpbHMgd2UgaG9sZA0KICAgICAgICAgICAgICBmb3IgeW91Lg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICA8aDUgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlBBUlQgQTogUFJPVklTSU9OIE9GIFRIRSBBUFBTPGJyIC8+UHVycG9zZTogVG8gcHJvdmlkZSBvdXIgQXBwczwvaDU+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjLXByaXZhY3lfX3Njcm9sbFdyYXAiPg0KICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGUzQ29sdW1ucyI+DQogICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5Ij4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+RGVzY3JpcHRpb248L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkNhdGVnb3JpZXMgb2YgZGF0YTwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90aD4NCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+TGVnYWwgYmFzZXM8L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+UHJvdmlzaW9uIG9mIG91ciBBcHBzOjwvc3Bhbj4gV2hlbiB5b3UgdXNlIG91ciBBcHBzLCB3ZQ0KICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MgeW91ciBwZXJzb25hbCBkYXRhIHNvIHRoYXQgd2UgY2FuIHByb3ZpZGUgb3VyIEFwcHMgdG8geW91LCBpbmNsdWRpbmcgdG8gZW5zdXJlIHRoYXQgb3VyDQogICAgICAgICAgICAgICAgICAgICAgQXBwcyBhcmUgd29ya2luZyBwcm9wZXJseSwgdG8gc2hvdyB5b3UgdGhlIGNvcnJlY3Qgbm90aWNlcyBhbmQgaW5mb3JtYXRpb24sIGFuZCB0byBlbnN1cmUgdGhhdCBvdXINCiAgICAgICAgICAgICAgICAgICAgICBBcHBzIGFyZSBrZXB0IHNlY3VyZS4gVGhpcyBkYXRhIGlzIHNvbWV0aW1lcyBhdXRvbWF0aWNhbGx5IGNvbGxlY3RlZCBhbmQgdHJhbnNtaXR0ZWQgdG8gdXMuPGJyIC8+PGJyIC8+V2hlbg0KICAgICAgICAgICAgICAgICAgICAgIHlvdSB1c2Ugb3VyIEFwcHMsIHdlIG1heSBhbHNvIGFzayBmb3IgeW91ciBwZXJtaXNzaW9uIHRvIHNlbmQgeW91IHB1c2ggbm90aWZpY2F0aW9ucy4gSWYgeW91IGFsbG93DQogICAgICAgICAgICAgICAgICAgICAgdGhpcyBmZWF0dXJlLCB3ZSBtYXkgc2VuZCB5b3UgcHVzaCBub3RpZmljYXRpb25zIHRocm91Z2ggb3VyIEFwcHMsIGZvciBleGFtcGxlLCByZW1pbmRlcnMsIGFsZXJ0cywNCiAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVzIGFuZCBvdGhlciBpbmZvcm1hdGlvbi4gWW91IGNhbiBjb25maWd1cmUgYW5kIHR1cm4gb2ZmIHB1c2ggbm90aWZpY2F0aW9ucyB2aWEgeW91ciBkZXZpY2UNCiAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncyBhdCBhbnkgdGltZS48YnIgLz48YnIgLz5PdXIgQXBwcyBtYXkgYWxzbyBzZW5kIHVzIChvciBvdXIgSVQgc3VwcGxpZXJzKSBhbiBlcnJvciBtZXNzYWdlDQogICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGV2ZW50IG9mIGEgY3Jhc2ggb3Igb3RoZXIgZXJyb3IgKGUuZy4gYWZ0ZXIgdGhlIEFwcHMgaGF2ZSB1bmV4cGVjdGVkbHkgcXVpdCBiZWNhdXNlIG9mIGENCiAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtIGVycm9yIG9yIGhhcyBzdG9wcGVkIHJlc3BvbmRpbmcgdG8geW91ciBpbnB1dCkuIFRoZSBlcnJvciBtZXNzYWdlIGNvbnRhaW5zIFRlY2huaWNhbCBEYXRhDQogICAgICAgICAgICAgICAgICAgICAgYW5kIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoIHBhcnQgb2Ygb3VyIEFwcOKAmXMgc29mdHdhcmUgY29kZSBoYXMgY2F1c2VkIHRoZSBlcnJvci4gVGhpcyBpbmZvcm1hdGlvbg0KICAgICAgICAgICAgICAgICAgICAgIGhlbHBzIHVzIHVuZGVyc3RhbmQgdGhlIGNhdXNlIG9mIHRoZSBlcnJvciBzbyB0aGF0IHdlIGNhbiBkZXZlbG9wIGEgZml4IHRvIHByZXZlbnQgdGhhdCBlcnJvciBmcm9tDQogICAgICAgICAgICAgICAgICAgICAgcmVvY2N1cnJpbmcgYW5kIHRoZXJlZm9yZSBpbXByb3ZlIHRoZSBBcHBzIGZvciBhbGwgdXNlcnMuDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlRlY2huaWNhbCBhbmQgVXNhZ2UgRGF0YS9OZXR3b3JraW5nIEFjdGl2aXR5PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgSXQgaXMgbmVjZXNzYXJ5IGZvciB1cyB0byB1c2UgeW91ciBwZXJzb25hbCBkYXRhIHRvIHBlcmZvcm0gb3VyIG9ibGlnYXRpb25zIGluIGFjY29yZGFuY2Ugd2l0aCBhbnkNCiAgICAgICAgICAgICAgICAgICAgICBjb250cmFjdCB0aGF0IHdlIG1heSBoYXZlIHdpdGggeW91LCBvciBpdCBpcyBpbiBvdXIgbGVnaXRpbWF0ZSBpbnRlcmVzdCB0byB1c2UgcGVyc29uYWwgZGF0YSBpbg0KICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggYSB3YXkgdG8gZW5zdXJlIHRoYXQgd2UgcHJvdmlkZSBhY2Nlc3MgdG8gb3VyIEFwcHMgaW4gYSBzZWN1cmUgYW5kIGVmZmVjdGl2ZSB3YXkuPGJyIC8+PGJyIC8+T3VyDQogICAgICAgICAgICAgICAgICAgICAgdXNlIG9mIHB1c2ggbm90aWZpY2F0aW9ucyB3aWxsIGJlIHN1YmplY3QgdG8gdGhlIHBlcm1pc3Npb25zIHRoYXQgeW91IHByb3ZpZGUgYW5kIHlvdXIgc3lzdGVtDQogICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iYy1wcml2YWN5X190YWJsZTNDb2x1bW5zIj4NCiAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5EZXNjcmlwdGlvbjwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90aD4NCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Q2F0ZWdvcmllcyBvZiBkYXRhPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5MZWdhbCBiYXNlczwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90aD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIg0KICAgICAgICAgICAgICAgICAgICAgICAgPlRvIG1hbmFnZSB5b3VyIGFjY291bnQgcmVnaXN0cmF0aW9uIGFuZCBhY2Nlc3MgdG8gdGhlIEFwcHM6PC9zcGFuDQogICAgICAgICAgICAgICAgICAgICAgPg0KICAgICAgICAgICAgICAgICAgICAgIFlvdSB3aWxsIGJlIHJlcXVpcmVkIHRvIHJlZ2lzdGVyIGFuIGFjY291bnQgd2l0aCB1cyBpbiBvcmRlciB0byBnYWluIGFjY2VzcyB0byB0aGUgQXBwcy48YnIgLz48YnIgLz5Ubw0KICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGZvciBhbiBhY2NvdW50LCB5b3Ugd2lsbCBuZWVkIHRvIHByb3ZpZGUgYWxsIHJlcXVpcmVkIHBlcnNvbmFsIGRhdGEuIFdlIHdpbGwgdXNlIHRoaXMNCiAgICAgICAgICAgICAgICAgICAgICBkYXRhIHRvIHByb2Nlc3MgeW91ciByZWdpc3RyYXRpb24gYW5kIHRvIGlkZW50aWZ5IHlvdSB3aGVuIHlvdSBsb2cgaW4gdG8geW91ciBhY2NvdW50IGFuZCBhY2Nlc3MNCiAgICAgICAgICAgICAgICAgICAgICB0aGUgQXBwcy4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+UmVnaXN0cmF0aW9uIERhdGEvSWRlbnRpZmllcnMgQXBwcyBQcm9maWxlIERhdGE8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBuZWNlc3NhcnkgZm9yIHVzIHRvIHVzZSB5b3VyIHBlcnNvbmFsIGRhdGEgdG8gcGVyZm9ybSBvdXIgb2JsaWdhdGlvbnMgaW4gYWNjb3JkYW5jZSB3aXRoIGFueQ0KICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0IHRoYXQgd2UgbWF5IGhhdmUgd2l0aCB5b3UsIG9yIGl0IGlzIGluIG91ciBsZWdpdGltYXRlIGludGVyZXN0IHRvIHVzZSBwZXJzb25hbCBkYXRhIGluDQogICAgICAgICAgICAgICAgICAgICAgc3VjaCBhIHdheSB0byBlbnN1cmUgdGhhdCB3ZSBwcm92aWRlIGFjY2VzcyB0byBvdXIgQXBwcyBpbiBhIHNlY3VyZSBhbmQgZWZmZWN0aXZlIHdheS4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlM0NvbHVtbnMiPg0KICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkRlc2NyaXB0aW9uPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5DYXRlZ29yaWVzIG9mIGRhdGE8L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkxlZ2FsIGJhc2VzPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlRvIG1hbmFnZSB5b3VyIEFwcCBhY2NvdW50IHByb2ZpbGU6PC9zcGFuPklmIHlvdSBhcmUgYQ0KICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWQgdXNlciBvZiB0aGUgQXBwcyB5b3UgY2FuIHZvbHVudGFyaWx5IHN1Ym1pdCBhbmQgd2Ugd2lsbCBjb2xsZWN0IEFwcHMgUHJvZmlsZSBEYXRhIGFzDQogICAgICAgICAgICAgICAgICAgICAgcGFydCBvZiB5b3VyIEFwcCBwcm9maWxlLjxiciAvPldlIHdpbGwgYWxzbyB1c2UgeW91ciBwZXJzb25hbCBkYXRhIHRvIHN0b3JlIGluZm9ybWF0aW9uIGFib3V0IHlvdQ0KICAgICAgICAgICAgICAgICAgICAgIGFuZCB5b3VyIHByZWZlcmVuY2VzLCBhbGxvd2luZyB1cyB0byBjdXN0b21pemUgdGhlIEFwcHMgYWNjb3JkaW5nIHRvIHlvdXIgaW5kaXZpZHVhbCBpbnRlcmVzdHMgYW5kDQogICAgICAgICAgICAgICAgICAgICAgcmVjb2duaXplIHlvdSB3aGVuIHlvdSByZXR1cm4gdG8gdGhlIEFwcHMuDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlRlY2huaWNhbCBhbmQgVXNhZ2UgRGF0YS9OZXR3b3JraW5nIEFjdGl2aXR5IEFwcHMgUHJvZmlsZSBEYXRhPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgQW55IEFwcHMgUHJvZmlsZSBEYXRhIHRoYXQgeW91IHN1Ym1pdCBpcyB2b2x1bnRhcnksIGFsdGhvdWdoIHlvdSBhcmUgcmVxdWlyZWQgdG8gc3VwcGx5IHNvbWUgQXBwcw0KICAgICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgRGF0YSBhcyBhIHBhcnQgb2YgaW50ZXJhY3Rpbmcgd2l0aCBhbmQgdXNpbmcgdGhlIEFwcHMuIEl0IGlzIGluIG91ciBsZWdpdGltYXRlIGludGVyZXN0IHRvDQogICAgICAgICAgICAgICAgICAgICAgdXNlIHlvdXIgQXBwcyBQcm9maWxlIERhdGEsIHNvIHRoYXQgd2UgY2FuIHByb3ZpZGUgb3VyIEFwcHMgZWZmZWN0aXZlbHkuDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5QdXJwb3NlOiBDdXN0b21lciBmZWVkYmFjay9lbnF1aXJpZXM8L2g1Pg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYy1wcml2YWN5X19zY3JvbGxXcmFwIj4NCiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlM0NvbHVtbnMiPg0KICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkRlc2NyaXB0aW9uPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5DYXRlZ29yaWVzIG9mIGRhdGE8L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkxlZ2FsIGJhc2VzPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiDQogICAgICAgICAgICAgICAgICAgICAgICA+SWYgeW91IGhhdmUgYSBnZW5lcmFsIHF1ZXN0aW9uIG9yIG5lZWQgaGVscCB3aXRoIGFueSBpc3N1ZSBjb25jZXJuaW5nIG91ciBBcHBzOjwvc3Bhbg0KICAgICAgICAgICAgICAgICAgICAgID4NCiAgICAgICAgICAgICAgICAgICAgICBUaGVyZSBhcmUgdmFyaW91cyB3YXlzIGluIHdoaWNoIHlvdSBhcmUgYWJsZSB0byBjb250YWN0IHVzIHdpdGggZ2VuZXJhbCBpbnF1aXJpZXMgYW5kIHRvIHByb3ZpZGUNCiAgICAgICAgICAgICAgICAgICAgICBmZWVkYmFjaywgaW5jbHVkaW5nIHVzaW5nIHRoZSBkZXRhaWxzIHNldCBvdXQgaW4gdGhlIOKAnENvbnRhY3RpbmcgQ29jb25l4oCdIFNlY3Rpb24gMTQsIHRocm91Z2ggYW55DQogICAgICAgICAgICAgICAgICAgICAgb3RoZXIg4oCYY29udGFjdCB1c+KAmSBvciBzaW1pbGFyIGZlYXR1cmUgdGhhdCB3ZSBtYWtlIGF2YWlsYWJsZSBvbiBvdXIgQXBwcy48YnIgLz48YnIgLz5XaGVuIHlvdSBtYWtlDQogICAgICAgICAgICAgICAgICAgICAgYW4gZW5xdWlyeSBvciBwcm92aWRlIGZlZWRiYWNrLCB3ZSB3aWxsIGNvbGxlY3QgYW5kIHByb2Nlc3MgeW91ciBwZXJzb25hbCBkYXRhIGluY2x1ZGluZyBhbnkNCiAgICAgICAgICAgICAgICAgICAgICBwZXJzb25hbCBkYXRhIHlvdSB2b2x1bnRlZXIsIHRoYXQgaXMgcmVsZXZhbnQgdG8geW91ciBlbnF1aXJ5IG9yIGZlZWRiYWNrLjxiciAvPjxiciAvPklmIHlvdSBoYXZlDQogICAgICAgICAgICAgICAgICAgICAgYSB0ZWNobmljYWwgaXNzdWUgY29uY2VybmluZyBvdXIgQXBwcywgd2UgbWF5IGFsc28gcHJvY2VzcyBUZWNobmljYWwgYW5kIFVzYWdlIERhdGEvTmV0d29ya2luZw0KICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5IHRvIGhlbHAgdXMgZGlhZ25vc2UgYW5kIGZpeCB0aGUgdGVjaG5pY2FsIGlzc3VlcyB5b3UgYXJlIGV4cGVyaWVuY2luZy4gPGJyIC8+PGJyIC8+V2UNCiAgICAgICAgICAgICAgICAgICAgICB3aWxsIHVzZSB0aGlzIGluZm9ybWF0aW9uIHNvIHRoYXQgd2UgY2FuIGVmZmVjdGl2ZWx5IG1hbmFnZSBhbmQgcmVzcG9uZCB0byB5b3VyIGVucXVpcnkgb3INCiAgICAgICAgICAgICAgICAgICAgICBmZWVkYmFjay4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgUmVnaXN0cmF0aW9uIERhdGEvSWRlbnRpZmllcnM8YnIgLz48YnIgLz5Qcm9maWxlIERhdGE8YnIgLz48YnIgLz5UZWNobmljYWwgYW5kIFVzYWdlDQogICAgICAgICAgICAgICAgICAgICAgRGF0YS9OZXR3b3JraW5nIEFjdGl2aXR5PGJyIC8+PGJyIC8+UGVyc29uYWwgZGF0YSB0aGF0IGlzIHZvbHVudGVlcmVkIGFzIHBhcnQgb2YgZmVlZGJhY2sNCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgSXQgaXMgaW4gb3VyIGxlZ2l0aW1hdGUgaW50ZXJlc3QgdG8gdXNlIHlvdXIgcGVyc29uYWwgZGF0YSBpbiB0aGUgd2F5cyBkZXNjcmliZWQgaW4gdGhpcyBzZWN0aW9uDQogICAgICAgICAgICAgICAgICAgICAgdG8gZW5zdXJlIHRoYXQgd2UgYXJlIGFibGUgdG8gaGVscCB5b3Ugd2l0aCB5b3VyIGVucXVpcnkgYW5kIHByb3ZpZGUgYSBnb29kIHN0YW5kYXJkIG9mIHNlcnZpY2UuDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5QQVJUIEI6IEFEVkVSVElTSU5HL01BUktFVElORzwvaDU+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjLXByaXZhY3lfX3Njcm9sbFdyYXAiPg0KICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGUzQ29sdW1ucyI+DQogICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5Ij4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+RGVzY3JpcHRpb248L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkNhdGVnb3JpZXMgb2YgZGF0YTwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90aD4NCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+TGVnYWwgYmFzZXM8L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+T25saW5lIHBlcnNvbmFsaXNlZCBtYXJrZXRpbmc6PC9zcGFuPiBXZSBhbmQgb3VyDQogICAgICAgICAgICAgICAgICAgICAgdGhpcmQtcGFydHkgcGFydG5lcnMgbWF5IHVzZSB5b3VyIHBlcnNvbmFsIGRhdGEgaW5jbHVkaW5nIGRhdGEgdGhhdCBpcyBjb2xsZWN0ZWQgdGhyb3VnaCB5b3VyDQogICAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3Rpb25zIHdpdGggdGhpcmQtcGFydHkgd2Vic2l0ZXMgYW5kIHNlcnZpY2VzIChpbmNsdWRpbmcgc29jaWFsIG1lZGlhIGFuZCBvdGhlciBwbGF0Zm9ybXMpDQogICAgICAgICAgICAgICAgICAgICAgdG8gcHJvdmlkZSB5b3Ugd2l0aCwgYW5kIGFuYWx5c2UgdGhlIGVmZmVjdGl2ZW5lc3Mgb2YsIHBlcnNvbmFsaXNlZCBhZHMgd2hlbiB5b3UgdmlzaXQgb3RoZXINCiAgICAgICAgICAgICAgICAgICAgICB3ZWJzaXRlcyBhbmQvb3IgdXNlIG90aGVyIHNlcnZpY2VzLjxiciAvPg0KICAgICAgICAgICAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgICAgICAgICAgIEJ5IOKAnHBlcnNvbmFsaXNlZCBhZHPigJ0sIHdlIG1lYW4gYWR2ZXJ0aXNlbWVudHMgZm9yIHRoZSBBcHBzIHdoaWNoIHdlIG9yIG91ciBwYXJ0bmVycyBvdGhlcndpc2UNCiAgICAgICAgICAgICAgICAgICAgICB0aGluayB5b3UgbWlnaHQgYmUgaW50ZXJlc3RlZCBpbiBiYXNlZCBvbiB5b3VyIGJyb3dzaW5nIGhhYml0cy4gTm90ZSwgb3VyIHRoaXJkLXBhcnR5IHBhcnRuZXJzIG1heQ0KICAgICAgICAgICAgICAgICAgICAgIGFsc28gdXNlIHRoZSBkYXRhIHRoYXQgaXMgY29sbGVjdGVkIHRvIHNob3cgcGVyc29uYWxpc2VkIGFkcyBmb3IgcHJvZHVjdHMgYW5kIHNlcnZpY2VzIG9mZmVyZWQgYnkNCiAgICAgICAgICAgICAgICAgICAgICB0aGlyZCBwYXJ0aWVzLjxiciAvPg0KICAgICAgICAgICAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgICAgICAgICAgIFdlIGFsc28gbWF5IHVzZSB0aGVzZSB0ZWNobm9sb2dpZXMgdG8gY29sbGVjdCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIG9ubGluZSBhY3Rpdml0aWVzDQogICAgICAgICAgICAgICAgICAgICAgKGJlaGF2aW91cmFsIHRyYWNraW5nKS4gQ29udGFjdCB1cyBieSBlbWFpbCBhdCB0aGUgZW1haWwgYWRkcmVzcyBwcm92aWRlZCBpbiB0aGUg4oCcQ29udGFjdGluZw0KICAgICAgICAgICAgICAgICAgICAgIENvY29uZeKAnSBTZWN0aW9uIDE0IGJlbG93IGZvciBpbmZvcm1hdGlvbiBvbiBob3cgeW91IGNhbiBvcHQgb3V0IG9mIGJlaGF2aW91cmFsIHRyYWNraW5nIG9uIHRoZQ0KICAgICAgICAgICAgICAgICAgICAgIEFwcHMgYW5kIGhvdyB3ZSByZXNwb25kIHRvIHdlYiBicm93c2VyIHNpZ25hbHMgYW5kIG90aGVyIG1lY2hhbmlzbXMgdGhhdCBlbmFibGUgY29uc3VtZXJzIHRvDQogICAgICAgICAgICAgICAgICAgICAgZXhlcmNpc2UgY2hvaWNlIGFib3V0IGJlaGF2aW91cmFsIHRyYWNraW5nLg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5UZWNobmljYWwgYW5kIFVzYWdlIERhdGEvTmV0d29ya2luZyBBY3Rpdml0eTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIFdoZXJlIHlvdXIgZGF0YSBpcyBjb2xsZWN0ZWQgdGhyb3VnaCB0aGUgdXNlIG9mIG5vbi1lc3NlbnRpYWwgY29va2llcywgd2UgYW5kIG91ciB0aGlyZC1wYXJ0eQ0KICAgICAgICAgICAgICAgICAgICAgIHBhcnRuZXJzIGdlbmVyYWxseSByZWx5IG9uIGNvbnNlbnQgdG8gY29sbGVjdCB5b3VyIHBlcnNvbmFsIGRhdGEgYW5kIGZvciB0aGUgc3Vic2VxdWVudCBwcm9jZXNzaW5nDQogICAgICAgICAgICAgICAgICAgICAgb2YgaXQgaW4gdGhpcyBtYW5uZXIgb3IgaXQgaXMgb3RoZXJ3aXNlIGluIG91ciBsZWdpdGltYXRlIGludGVyZXN0cyB0byBwcm9tb3RlIG91ciBBcHBzIHRvIHlvdS48YnIgLz4NCiAgICAgICAgICAgICAgICAgICAgICBPdXIgdGhpcmQtcGFydHkgcGFydG5lcnMgbWF5IHJlbHkgb24gYSBkaWZmZXJlbnQgbGF3ZnVsIGJhc2lzIGluIHJlc3BlY3Qgb2YgdGhlaXIgdXNlIG9mIHlvdXINCiAgICAgICAgICAgICAgICAgICAgICBwZXJzb25hbCBkYXRhLg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGUzQ29sdW1ucyI+DQogICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5Ij4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+RGVzY3JpcHRpb248L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkNhdGVnb3JpZXMgb2YgZGF0YTwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90aD4NCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+TGVnYWwgYmFzZXM8L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+SG9zdGluZyBhbmQgbWFuYWdpbmcgZXZlbnRzOjwvc3Bhbj4gRnJvbSB0aW1lIHRvIHRpbWUsIHdlDQogICAgICAgICAgICAgICAgICAgICAgbWF5IG9yZ2FuaXNlIGFuZCBob3N0IGV2ZW50cyBmb3IgdGhlIHB1cnBvc2Ugb2YgcHJvbW90aW5nIG91ciBidXNpbmVzcyBvciBicmluZ2luZyBvdXIgQXBwIHVzZXJzDQogICAgICAgICAgICAgICAgICAgICAgdG9nZXRoZXIuIFdlIG1heSBwcm9jZXNzIHlvdXIgcGVyc29uYWwgZGF0YSB0byBjb21tdW5pY2F0ZSB3aXRoIHlvdSBhYm91dCBzdWNoIGV2ZW50cyB3aGVyZSB5b3UNCiAgICAgICAgICAgICAgICAgICAgICBoYXZlIHNwZWNpZmljYWxseSByZXF1ZXN0ZWQgaW5mb3JtYXRpb24gYWJvdXQgc3VjaCBldmVudHMgb3Igd2hlcmUgd2UgaGF2ZSBhbm90aGVyIGxhd2Z1bCBiYXNpcw0KICAgICAgICAgICAgICAgICAgICAgIGZvciBzZW5kaW5nIHRoYXQgaW5mb3JtYXRpb24gdG8geW91LjxiciAvPjxiciAvPklmIHlvdSBhdHRlbmQgb25lIG9mIG91ciBldmVudHMsIHdlIG1heSB1c2UgeW91cg0KICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbmFsIGRhdGEgdG8gcmVjb3JkIHlvdXIgYXR0ZW5kYW5jZSBhdCB0aGUgZXZlbnQgYW5kIGZvciByZWxhdGVkIHJlY29yZC1rZWVwaW5nIHB1cnBvc2VzIGFuZCwNCiAgICAgICAgICAgICAgICAgICAgICBpZiByZWxldmFudCwgd2UgbWF5IGNvbGxlY3QgYW5kIHByb2Nlc3MgYW55IGRpZXRhcnkgcmVxdWlyZW1lbnRzIHlvdSBtYXkgaGF2ZS4gWW91IG1heSBhbHNvDQogICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZSBpbiBwaG90b2dyYXBocyB0YWtlbiBhdCBvdXIgZXZlbnRzIGFuZCBzdWNoIHBob3RvZ3JhcGhzIG1heSBhcHBlYXIgaW4gcHVibGljYXRpb25zIHRoYXQgd2UNCiAgICAgICAgICAgICAgICAgICAgICBtYWtlIGF2YWlsYWJsZS4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgUmVnaXN0cmF0aW9uIERhdGEvSWRlbnRpZmllcnM8YnIgLz48YnIgLz5Qcm9maWxlIERhdGE8YnIgLz48YnIgLz5BcHBzIFByb2ZpbGUgRGF0YTxiciAvPjxiciAvPkltYWdlDQogICAgICAgICAgICAgICAgICAgICAgYW5kIHBlcnNvbmFsIGRhdGEgY29udGFpbmVkIGluIGFueSBmZWVkYmFjaw0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBuZWNlc3NhcnkgZm9yIHVzIHRvIHVzZSB5b3VyIHBlcnNvbmFsIGRhdGEgaW4gdGhpcyB3YXkgdG8gcGVyZm9ybSBvdXIgb2JsaWdhdGlvbnMgaW4NCiAgICAgICAgICAgICAgICAgICAgICBhY2NvcmRhbmNlIHdpdGggYW55IGNvbnRyYWN0IHRoYXQgd2UgbWF5IGhhdmUgd2l0aCB5b3Ugd2hlcmUgeW91IGhhdmUgc2lnbmVkIHVwIHRvIGF0dGVuZCBhbg0KICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LCBvciBpdCBpcyBpbiBvdXIgbGVnaXRpbWF0ZSBpbnRlcmVzdCBvciBhIHRoaXJkIHBhcnR54oCZcyBsZWdpdGltYXRlIGludGVyZXN0IHRvIHVzZSBwZXJzb25hbA0KICAgICAgICAgICAgICAgICAgICAgIGRhdGEgaW4gc3VjaCBhIHdheSB0byBlbnN1cmUgdGhhdCB0aGUgZXZlbnQgaXMgb3BlcmF0ZWQgaW4gYW4gZWZmZWN0aXZlIHdheS48YnIgLz48YnIgLz5XZSBtYXkNCiAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY2FsbHkgYXNrIHlvdXIgcGVybWlzc2lvbiB0byB1c2UgeW91ciBwaG90b2dyYXBocywgcXVvdGVzLCB0ZXN0aW1vbmlhbHMsIG9yIG90aGVyIGNvbnRlbnQNCiAgICAgICAgICAgICAgICAgICAgICB0aGF0IHlvdSBtYWtlIGF2YWlsYWJsZSBvciBwdWJsaXNoIGF0IHRoZSBldmVudC4gV2hlcmUgdGhpcyBpcyB0aGUgY2FzZSwgb3VyIHByb2Nlc3Npbmcgb2YgeW91cg0KICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggcGVyc29uYWwgZGF0YSB3aWxsIGJlIGJhc2VkIG9uIGV4cHJlc3MgY29uc2VudC4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICA8aDUgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlBBUlQgQzogQlVTSU5FU1MgQURNSU5JU1RSQVRJT04sIEZJTkFOQ0lBTCBBTkQgTEVHQUw8L2g1Pg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYy1wcml2YWN5X19zY3JvbGxXcmFwIj4NCiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlM0NvbHVtbnMiPg0KICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkRlc2NyaXB0aW9uPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5DYXRlZ29yaWVzIG9mIGRhdGE8L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkxlZ2FsIGJhc2VzPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlJlY2VpcHQgb2Ygc2VydmljZTo8L3NwYW4+IElmIHdlIGhhdmUgZW5nYWdlZCBhbg0KICAgICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbiB0byBwcm92aWRlIHVzIG9yIG91ciBjbGllbnQgd2l0aCBzZXJ2aWNlcyAoZm9yIGV4YW1wbGUsIElUIHN1cHBvcnQgb3IgZmluYW5jaWFsDQogICAgICAgICAgICAgICAgICAgICAgYWR2aWNlKSwgd2Ugd2lsbCBjb2xsZWN0IGFuZCBwcm9jZXNzIHlvdXIgcGVyc29uYWwgZGF0YSBpZiB5b3UgYXJlIGEgY29udGFjdCB3aXRoaW4gdGhlIHJlbGV2YW50DQogICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uIGluIG9yZGVyIHRvIG1hbmFnZSBvdXIgcmVsYXRpb25zaGlwIG9yIG91ciBjbGllbnRzIHdpdGggdGhlIG9yZ2FuaXphdGlvbiwgdG8gcmVjZWl2ZQ0KICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzIGZyb20gdGhlIG9yZ2FuaXNhdGlvbiBhbmQsIHdoZXJlIHJlbGV2YW50LCB0byBwcm92aWRlIG91ciBzZXJ2aWNlcyB0byBvdGhlcnMgaW5jbHVkaW5nDQogICAgICAgICAgICAgICAgICAgICAgb3VyIGN1c3RvbWVycy4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+UmVnaXN0cmF0aW9uIERhdGEvSWRlbnRpZmllcnM8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBuZWNlc3NhcnkgZm9yIHVzIHRvIHVzZSBwZXJzb25hbCBkYXRhIGluIHRoaXMgd2F5IHRvIHBlcmZvcm0gb3VyIG9ibGlnYXRpb25zIGluIGFjY29yZGFuY2UNCiAgICAgICAgICAgICAgICAgICAgICB3aXRoIGFueSBjb250cmFjdCB0aGF0IHdlIG1heSBoYXZlIHdpdGggdGhlIG9yZ2FuaXphdGlvbiwgb3IgaXQgaXMgaW4gb3VyIGxlZ2l0aW1hdGUgaW50ZXJlc3QgdG8NCiAgICAgICAgICAgICAgICAgICAgICB1c2UgcGVyc29uYWwgZGF0YSBpbiBzdWNoIGEgd2F5IHRvIGVuc3VyZSB0aGF0IHdlIGhhdmUgYW4gZWZmZWN0aXZlIHdvcmtpbmcgcmVsYXRpb25zaGlwIHdpdGggdGhlDQogICAgICAgICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uIGFuZCBhcmUgYWJsZSB0byBwcm92aWRlIG91ciBzZXJ2aWNlcyB0byBvdGhlcnMgaW4gYW4gZWZmZWN0aXZlIHdheS4gV2hlcmUgd2UgZG8gdGhpcw0KICAgICAgICAgICAgICAgICAgICAgIG9uIGJlaGFsZiBvZiBvdXIgY2xpZW50cyBhcyBhIGRhdGEgcHJvY2Vzc29yLCB3ZSBkbyBub3QgcmVxdWlyZSBhIGxlZ2FsIGJhc2lzIGZvciBzdWNoIHByb2Nlc3NpbmcuDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iYy1wcml2YWN5X190YWJsZTNDb2x1bW5zIj4NCiAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5EZXNjcmlwdGlvbjwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90aD4NCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Q2F0ZWdvcmllcyBvZiBkYXRhPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5MZWdhbCBiYXNlczwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90aD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIg0KICAgICAgICAgICAgICAgICAgICAgICAgPkJ1c2luZXNzIGFkbWluaXN0cmF0aW9uLCBmaW5hbmNlLCBhbmQgbGVnYWwgY29tcGxpYW5jZTo8L3NwYW4NCiAgICAgICAgICAgICAgICAgICAgICA+DQogICAgICAgICAgICAgICAgICAgICAgV2UgbWF5IHVzZSBhbiBpbmRpdmlkdWFs4oCZcyBwZXJzb25hbCBkYXRhIGZvciB0aGUgZm9sbG93aW5nIGJ1c2luZXNzIGFkbWluaXN0cmF0aW9uIGFuZCBsZWdhbA0KICAgICAgICAgICAgICAgICAgICAgIGNvbXBsaWFuY2UgcHVycG9zZXM6PGJyIC8+PGJyIC8+44O7dG8gZmFjaWxpdGF0ZSB0aGUgb3BlcmF0aW9uIG9yIGVmZmVjdGl2ZSBtYW5hZ2VtZW50IG9mIG91ciBncm91cA0KICAgICAgICAgICAgICAgICAgICAgIG9mIGJ1c2luZXNzZXM7PGJyIC8+PGJyIC8+44O7Zm9yIGZpbmFuY2lhbCwgYWNjb3VudGluZyBhbmQgdGF4IHB1cnBvc2VzOzxiciAvPjxiciAvPuODu3RvIGNvbXBseQ0KICAgICAgICAgICAgICAgICAgICAgIHdpdGggb3VyIGxlZ2FsIG9ibGlnYXRpb25zOzxiciAvPjxiciAvPuODu3RvIGVuZm9yY2Ugb3IgcHJvdGVjdCBvdXIgbGVnYWwgcmlnaHRzOzxiciAvPjxiciAvPuODu3RvDQogICAgICAgICAgICAgICAgICAgICAgZGVhbCB3aXRoIGNvbXBsYWludHM7PGJyIC8+PGJyIC8+44O7dG8gcHJvdGVjdCB0aGUgcmlnaHRzIG9mIHRoaXJkIHBhcnRpZXMgKGluY2x1ZGluZyB3aGVyZSBoZWFsdGgNCiAgICAgICAgICAgICAgICAgICAgICBvciBzZWN1cml0eSBvZiBhbiBpbmRpdmlkdWFsIGlzIGVuZGFuZ2VyZWQgKGUuZy4gYSBmaXJlKTsgYW5kPGJyIC8+PGJyIC8+44O7aW4gY29ubmVjdGlvbiB3aXRoIGENCiAgICAgICAgICAgICAgICAgICAgICBidXNpbmVzcyB0cmFuc2l0aW9uIG9yIHNhbGUgc3VjaCBhcyBhIG1lcmdlciwgcmUtb3JnYW5pemF0aW9uLCBhY3F1aXNpdGlvbiBieSBhbm90aGVyIGNvbXBhbnksIG9yDQogICAgICAgICAgICAgICAgICAgICAgc2FsZSBvZiBhbGwgb3IgYSBwb3J0aW9uIG9mIG91ciBhc3NldHMuDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlJlZ2lzdHJhdGlvbiBEYXRhL0lkZW50aWZpZXJzPGJyIC8+PGJyIC8+VHJhbnNhY3Rpb24gRGF0YTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIG5lY2Vzc2FyeSBmb3IgdXMgdG8gdXNlIHBlcnNvbmFsIGRhdGEgaW4gdGhpcyB3YXkgdG8gcGVyZm9ybSBvdXIgb2JsaWdhdGlvbnMgaW4gYWNjb3JkYW5jZQ0KICAgICAgICAgICAgICAgICAgICAgIHdpdGggYW55IGNvbnRyYWN0IHRoYXQgd2UgbWF5IGhhdmUgd2l0aCB0aGUgb3JnYW5pc2F0aW9uLCBvciBpdCBpcyBpbiBvdXIgbGVnaXRpbWF0ZSBpbnRlcmVzdCB0bw0KICAgICAgICAgICAgICAgICAgICAgIHVzZSBwZXJzb25hbCBkYXRhIGluIHN1Y2ggYSB3YXkgdG8gZW5zdXJlIHRoYXQgd2UgaGF2ZSBhbiBlZmZlY3RpdmUgd29ya2luZyByZWxhdGlvbnNoaXAgd2l0aCB0aGUNCiAgICAgICAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb24gYW5kIGFyZSBhYmxlIHRvIHByb3ZpZGUgb3VyIHNlcnZpY2VzIHRvIG90aGVycyBpbiBhbiBlZmZlY3RpdmUgd2F5LiBXaGVyZSB3ZSBkbyB0aGlzDQogICAgICAgICAgICAgICAgICAgICAgb24gYmVoYWxmIG9mIG91ciBjbGllbnRzIGFzIGEgZGF0YSBwcm9jZXNzb3IsIHdlIGRvIG5vdCByZXF1aXJlIGEgbGVnYWwgYmFzaXMgZm9yIHN1Y2ggcHJvY2Vzc2luZy4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgIDwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPg0KICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InNlYzMiPjxoNCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+My4gSG93IExvbmcgV2UgS2VlcCBZb3VyIEluZm9ybWF0aW9uPC9oND48L3NlY3Rpb24+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgIFdlIHdpbGwgb25seSBzdG9yZSB5b3VyIGluZm9ybWF0aW9uIGFzIGxvbmcgYXMgbmVjZXNzYXJ5IHRvIGZ1bGZpbGwgdGhlIHB1cnBvc2VzIGZvciB3aGljaCB0aGUgaW5mb3JtYXRpb24NCiAgICAgICAgICAgICAgaXMgY29sbGVjdGVkIGFuZCBwcm9jZXNzZWQgb3IsIHdoZXJlIGFwcGxpY2FibGUgbGF3IHByb3ZpZGVzIGZvciBsb25nZXIgc3RvcmFnZSBhbmQgcmV0ZW50aW9uIHBlcmlvZHMsIGZvcg0KICAgICAgICAgICAgICB0aGUgc3RvcmFnZSBhbmQgcmV0ZW50aW9uIHBlcmlvZCByZXF1aXJlZCBieSBsYXcuIFdoZXJlIHdlIHByb2Nlc3MgYW55IG90aGVyIHBlcnNvbmFsIGRhdGEsIHdlIHdpbGwgcmV0YWluDQogICAgICAgICAgICAgIHJlbGV2YW50IHBlcnNvbmFsIGRhdGEgZm9yIHVwIHRvIHNpeCB5ZWFycyBmcm9tIHRoZSBkYXRlIG9mIG91ciBsYXN0IGludGVyYWN0aW9uIHdpdGggeW91IChhbmQgaW4NCiAgICAgICAgICAgICAgY29tcGxpYW5jZSB3aXRoIG91ciBkYXRhIHByb3RlY3Rpb24gb2JsaWdhdGlvbnMpLiBXZSBtYXkgdGhlbiBkZXN0cm95IHN1Y2ggZmlsZXMgd2l0aG91dCBmdXJ0aGVyIG5vdGljZSBvcg0KICAgICAgICAgICAgICBsaWFiaWxpdHkuPGJyIC8+PGJyIC8+SWYgYW55IHBlcnNvbmFsIGRhdGEgaXMgb25seSB1c2VmdWwgZm9yIGEgc2hvcnQgcGVyaW9kIChzdWNoIGFzIGZvciBhIHNwZWNpZmljDQogICAgICAgICAgICAgIGFjdGl2aXR5LCBwcm9tb3Rpb24gb3IgbWFya2V0aW5nIGNhbXBhaWduKSwgd2Ugd2lsbCBub3QgcmV0YWluIGl0IGZvciBsb25nZXIgdGhhbiB0aGUgcGVyaW9kIGZvciB3aGljaCBpdA0KICAgICAgICAgICAgICBpcyB1c2VkIGJ5IHVzLjxiciAvPjxiciAvPklmIHlvdSBoYXZlIG9wdGVkIG91dCBvZiByZWNlaXZpbmcgbWFya2V0aW5nIGNvbW11bmljYXRpb25zIGZyb20gdXMsIHdlIHdpbGwNCiAgICAgICAgICAgICAgbmVlZCB0byByZXRhaW4gY2VydGFpbiBwZXJzb25hbCBkYXRhIG9uIGEgc3VwcHJlc3Npb24gbGlzdCBpbmRlZmluaXRlbHkgc28gdGhhdCB3ZSBrbm93IG5vdCB0byBzZW5kIHlvdQ0KICAgICAgICAgICAgICBmdXJ0aGVyIG1hcmtldGluZyBjb21tdW5pY2F0aW9ucyBpbiB0aGUgZnV0dXJlLiBIb3dldmVyLCB3ZSB3aWxsIG5vdCB1c2UgdGhpcyBwZXJzb25hbCBkYXRhIHRvIHNlbmQgeW91DQogICAgICAgICAgICAgIGZ1cnRoZXIgbWFya2V0aW5nIHVubGVzcyB5b3Ugc3Vic2VxdWVudGx5IG9wdCBiYWNrIGluIHRvIHJlY2VpdmUgc3VjaCBtYXJrZXRpbmcuDQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgPC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9fc3ViSXRlbSI+DQogICAgICAgICAgICA8c2VjdGlvbiBpZD0ic2VjNCI+PGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj40LiBIb3cgV2UgU2hhcmUgWW91ciBJbmZvcm1hdGlvbjwvaDQ+PC9zZWN0aW9uPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICBXZSBtYXkgZGlzY2xvc2UgYWdncmVnYXRlZCBpbmZvcm1hdGlvbiBhYm91dCB1c2VycywgYW5kIGluZm9ybWF0aW9uIHRoYXQgZG9lcyBub3QgaWRlbnRpZnkgYW55IGluZGl2aWR1YWwsDQogICAgICAgICAgICAgIHdpdGhvdXQgcmVzdHJpY3Rpb24uPGJyIC8+PGJyIC8+V2UgbWF5IGFsc28gZGlzY2xvc2UgcGVyc29uYWwgaW5mb3JtYXRpb24gdGhhdCB3ZSBjb2xsZWN0IG9yIHlvdSBwcm92aWRlDQogICAgICAgICAgICAgIGFzIGRlc2NyaWJlZCBpbiB0aGlzIFByaXZhY3kgUG9saWN5Og0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPHVsIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykxpc3QiPg0KICAgICAgICAgICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9fc3ViSXRlbSI+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICAgICAg44O7VG8gb3VyIHN1YnNpZGlhcmllcyBhbmQgYWZmaWxpYXRlczs8YnIgLz7jg7tUbyBjb250cmFjdG9ycywgc2VydmljZSBwcm92aWRlcnMsIGFkdmVydGlzaW5nIHBhcnRuZXJzLA0KICAgICAgICAgICAgICAgICAgZXZlbnQgcGFydG5lcnMsIGFuZCBvdGhlciB0aGlyZCBwYXJ0aWVzIHdlIHVzZSB0byBzdXBwb3J0IG91ciBidXNpbmVzcyBhbmQvb3IgdGhlIEFwcHMgYW5kIHdobyBhcmUNCiAgICAgICAgICAgICAgICAgIGJvdW5kIGJ5IGNvbnRyYWN0dWFsIG9ibGlnYXRpb25zIHRvIGtlZXAgcGVyc29uYWwgaW5mb3JtYXRpb24gY29uZmlkZW50aWFsIGFuZCB1c2UgaXQgb25seSBmb3IgdGhlDQogICAgICAgICAgICAgICAgICBwdXJwb3NlcyBmb3Igd2hpY2ggd2UgZGlzY2xvc2UgaXQgdG8gdGhlbS48YnIgLz7jg7tUbyBhIGJ1eWVyIG9yIG90aGVyIHN1Y2Nlc3NvciBpbiB0aGUgZXZlbnQgb2YgYQ0KICAgICAgICAgICAgICAgICAgbWVyZ2VyLCBkaXZlc3RpdHVyZSwgcmVzdHJ1Y3R1cmluZywgcmVvcmdhbml6YXRpb24sIGRpc3NvbHV0aW9uLCBvciBvdGhlciBzYWxlIG9yIHRyYW5zZmVyIG9mIHNvbWUgb3INCiAgICAgICAgICAgICAgICAgIGFsbCBvZiBDb2NvbmXigJlzIGFzc2V0cywgd2hldGhlciBhcyBhIGdvaW5nIGNvbmNlcm4gb3IgYXMgcGFydCBvZiBiYW5rcnVwdGN5LCBsaXF1aWRhdGlvbiwgb3Igc2ltaWxhcg0KICAgICAgICAgICAgICAgICAgcHJvY2VlZGluZ3MsIGluIHdoaWNoIHBlcnNvbmFsIGluZm9ybWF0aW9uIGhlbGQgYnkgQ29jb25lIGFib3V0IEFwcCB1c2VycyBpcyBhbW9uZyB0aGUgYXNzZXRzDQogICAgICAgICAgICAgICAgICB0cmFuc2ZlcnJlZC48YnIgLz7jg7tUbyBhdWRpdG9ycywgbGF3eWVycywgYWNjb3VudGFudHMgYW5kIG90aGVyIHByb2Zlc3Npb25hbCBhZHZpc2Vyczs8YnIgLz7jg7tGcm9tDQogICAgICAgICAgICAgICAgICB0aW1lIHRvIHRpbWUsIHRvIG90aGVyIHRoaXJkIHBhcnRpZXMgZm9yIGFueSBvdGhlciBwdXJwb3NlIGRpc2Nsb3NlZCBieSB1cyB3aGVuIHlvdSBwcm92aWRlIHRoZQ0KICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uPGJyIC8+44O7V2l0aCB5b3VyIGNvbnNlbnQuPGJyIC8+V2UgbWF5IGFsc28gZGlzY2xvc2UgeW91ciBwZXJzb25hbCBpbmZvcm1hdGlvbjo8YnIgLz7jg7tUbw0KICAgICAgICAgICAgICAgICAgY29tcGx5IHdpdGggYW55IGNvdXJ0IG9yZGVyLCBsYXcsIG9yIGxlZ2FsIHByb2Nlc3MsIGluY2x1ZGluZyByZXNwb25kaW5nIHRvIGFueSBnb3Zlcm5tZW50IG9yDQogICAgICAgICAgICAgICAgICByZWd1bGF0b3J5IHJlcXVlc3QuPGJyIC8+44O7VG8gZW5mb3JjZSBvciBhcHBseSBvdXIgVGVybXMgb2YgVXNlIGFuZCBvdGhlciBhZ3JlZW1lbnRzLCBpbmNsdWRpbmcgZm9yDQogICAgICAgICAgICAgICAgICBiaWxsaW5nIGFuZCBjb2xsZWN0aW9uIHB1cnBvc2VzLjxiciAvPuODu0lmIHdlIHJlYXNvbmFibHkgYmVsaWV2ZSAod2l0aGluIHRoZSBib3VuZHMgb2YgYXBwbGljYWJsZSBsYXcpDQogICAgICAgICAgICAgICAgICBkaXNjbG9zdXJlIGlzIG5lY2Vzc2FyeSBvciBhcHByb3ByaWF0ZSB0byBwcm90ZWN0IHRoZSByaWdodHMsIHByb3BlcnR5LCBzZWN1cml0eSBvciBzYWZldHkgb2YgQ29jb25lLA0KICAgICAgICAgICAgICAgICAgb3VyIGN1c3RvbWVycywgb3Igb3RoZXJzLCBvciB0byBhZGRyZXNzIHRlY2huaWNhbCBpc3N1ZXMuIFRoaXMgaW5jbHVkZXMgZXhjaGFuZ2luZyBpbmZvcm1hdGlvbiB3aXRoDQogICAgICAgICAgICAgICAgICBvdGhlciBjb21wYW5pZXMgYW5kIG9yZ2FuaXphdGlvbnMgZm9yIHRoZSBwdXJwb3NlcyBvZiBmcmF1ZCBwcm90ZWN0aW9uIGFuZCBjcmVkaXQgcmlzayByZWR1Y3Rpb24uDQogICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5DaG9pY2VzIEFib3V0IEhvdyBXZSBVc2UgYW5kIERpc2Nsb3NlIFlvdXIgSW5mb3JtYXRpb248L2g1Pg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICBXZSBoYXZlIGNyZWF0ZWQgbWVjaGFuaXNtcyB0byBwcm92aWRlIHlvdSB3aXRoIHRoZSBmb2xsb3dpbmcgY29udHJvbCBvdmVyIHlvdXIgaW5mb3JtYXRpb246DQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgICA8dWwgY2xhc3M9ImMtcHJpdmFjeV9fc3ViTGlzdCI+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgICAgICDjg7tUcmFja2luZyBUZWNobm9sb2dpZXMgYW5kIEFkdmVydGlzaW5nLiBZb3UgY2FuIHNldCB5b3VyIGJyb3dzZXIgdG8gcmVmdXNlIGFsbCBvciBzb21lIGJyb3dzZXINCiAgICAgICAgICAgICAgICAgIGNvb2tpZXMsIG9yIHRvIGFsZXJ0IHlvdSB3aGVuIGNvb2tpZXMgYXJlIGJlaW5nIHNlbnQuIElmIHlvdSBkaXNhYmxlIG9yIHJlZnVzZSBjb29raWVzLCBwbGVhc2Ugbm90ZQ0KICAgICAgICAgICAgICAgICAgdGhhdCBzb21lIHBhcnRzIG9mIHRoZSBBcHBzIG1heSB0aGVuIGJlIGluYWNjZXNzaWJsZSBvciBub3QgZnVuY3Rpb24gcHJvcGVybHkuDQogICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgV2UgZG8gbm90IGNvbnRyb2wgdGhpcmQgcGFydGllc+KAmSBjb2xsZWN0aW9uIG9yIHVzZSBvZiB5b3VyIGluZm9ybWF0aW9uIHRvIHNlcnZlIGludGVyZXN0LWJhc2VkDQogICAgICAgICAgICAgIGFkdmVydGlzaW5nLiBIb3dldmVyLCB0aGVzZSB0aGlyZCBwYXJ0aWVzIG1heSBwcm92aWRlIHlvdSB3aXRoIHdheXMgdG8gY2hvb3NlIG5vdCB0byBoYXZlIHlvdXIgaW5mb3JtYXRpb24NCiAgICAgICAgICAgICAgY29sbGVjdGVkIG9yIHVzZWQgaW4gdGhpcyB3YXkuIFlvdSBtYXkgb3B0IG91dCBvZiByZWNlaXZpbmcgdGFyZ2V0ZWQgYWRzIGZyb20gbWVtYmVycyBvZiB0aGUgTmV0d29yaw0KICAgICAgICAgICAgICBBZHZlcnRpc2luZyBJbml0aWF0aXZlIG9uPGEgY2xhc3M9ImMtdGV4dExpbmsgLXJlZCIgaHJlZj0iaHR0cHM6Ly9vcHRvdXQubmV0d29ya2FkdmVydGlzaW5nLm9yZy8\/Yz0xIj4NCiAgICAgICAgICAgICAgICB0aGVpciB3ZWJzaXRlLjwvYQ0KICAgICAgICAgICAgICA+PGJyIC8+PGJyIC8+Q2FsaWZvcm5pYSByZXNpZGVudHMgbWF5IGhhdmUgYWRkaXRpb25hbCBwZXJzb25hbCBpbmZvcm1hdGlvbiByaWdodHMgYW5kIGNob2ljZXMuIFBsZWFzZSBzZWUNCiAgICAgICAgICAgICAgWW91ciBDYWxpZm9ybmlhIFByaXZhY3kgUmlnaHRzIGZvciBtb3JlIGluZm9ybWF0aW9uLg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgIDwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPg0KICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InNlYzUiPjxoNCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+NS4gQ2hpbGRyZW7igJlzIFByaXZhY3k8L2g0Pjwvc2VjdGlvbj4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgSWYgd2UgbGVhcm4gd2UgaGF2ZSBjb2xsZWN0ZWQgb3IgcmVjZWl2ZWQgcGVyc29uYWwgaW5mb3JtYXRpb24gZnJvbSBhIGNoaWxkIHVuZGVyIHRoaXJ0ZWVuICgxMykgd2l0aG91dA0KICAgICAgICAgICAgICB2ZXJpZmljYXRpb24gb2YgcHJpb3IgcGFyZW50YWwgY29uc2VudCwgd2Ugd2lsbCBkZWxldGUgdGhhdCBpbmZvcm1hdGlvbi4gSWYgeW91IGJlbGlldmUgd2UgbWF5IHBvc3Nlc3Mgb3INCiAgICAgICAgICAgICAgaGF2ZSByZWNlaXZlZCBhbnkgaW5mb3JtYXRpb24gZnJvbSBvciBhYm91dCBhIGNoaWxkIHVuZGVyIHRoaXJ0ZWVuICgxMykgd2l0aG91dCBzdWNoIHByaW9yIHBhcmVudGFsDQogICAgICAgICAgICAgIGNvbnNlbnQsIHBsZWFzZSBpbW1lZGlhdGVseSBjb250YWN0IHVzIGJ5IGVtYWlsIGF0IHRoZSBlbWFpbCBhZGRyZXNzIHByb3ZpZGVkIGluIHRoZSDigJxDb250YWN0aW5nIENvY29uZeKAnQ0KICAgICAgICAgICAgICBTZWN0aW9uIDE0IGJlbG93LjxiciAvPg0KICAgICAgICAgICAgICA8YnIgLz4NCiAgICAgICAgICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBmb3JlZ29pbmcsIFBldEthcnQgbWF5IGNvbGxlY3QgcGVyc29uYWwgaW5mb3JtYXRpb24gZnJvbSB1c2VycyB1bmRlciB0aGUgYWdlIG9mIHRoaXJ0ZWVuICgxMykuIA0KICAgICAgICAgICAgICBGb3IgYSBkZXNjcmlwdGlvbiBvZiBvdXIgaW5mb3JtYXRpb24gY29sbGVjdGlvbiwgdXNlLCBhbmQgcGFyZW50YWwgY29uc2VudCBwcmFjdGljZXMgd2l0aCByZXNwZWN0IHRvIFBldEthcnQsIHBsZWFzZSByZWZlciB0byBTZWN0aW9uIDE2Lg0KICAgICAgICAgICAgICA8YnIgLz4NCiAgICAgICAgICAgICAgSW4gb25lIG9yIG1vcmUgY291bnRyaWVzIG91dHNpZGUgdGhlIFVuaXRlZCBTdGF0ZXMsIHRoZSBhcHBsaWNhYmxlIGFnZSBpcyBmb3VydGVlbiAoMTQpIHllYXJzIG9mIGFnZSwNCiAgICAgICAgICAgICAgcmF0aGVyIHRoYW4gdGhpcnRlZW4gKDEzKSB5ZWFycyBvZiBhZ2UuPGJyIC8+DQogICAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgICBDYWxpZm9ybmlhIHJlc2lkZW50cyB1bmRlciBzaXh0ZWVuICgxNikgeWVhcnMgb2YgYWdlIG1heSBoYXZlIGFkZGl0aW9uYWwgcmlnaHRzIHJlZ2FyZGluZyB0aGUgY29sbGVjdGlvbg0KICAgICAgICAgICAgICBhbmQgc2FsZSBvZiB0aGVpciBwZXJzb25hbCBpbmZvcm1hdGlvbi4gUGxlYXNlIHNlZSBZb3VyIENhbGlmb3JuaWEgUHJpdmFjeSBSaWdodHMgYmVsb3cgZm9yIG1vcmUNCiAgICAgICAgICAgICAgaW5mb3JtYXRpb24uDQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgPC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9fc3ViSXRlbSI+DQogICAgICAgICAgICA8c2VjdGlvbiBpZD0ic2VjNiI+PGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj42LiBIb3cgV2UgUHJvdGVjdCBZb3VyIEluZm9ybWF0aW9uPC9oND48L3NlY3Rpb24+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgIFdlIGhhdmUgaW1wbGVtZW50ZWQgbWVhc3VyZXMgZGVzaWduZWQgdG8gc2VjdXJlIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gZnJvbSBhY2NpZGVudGFsIGxvc3MgYW5kIGZyb20NCiAgICAgICAgICAgICAgdW5hdXRob3JpemVkIGFjY2VzcywgdGhlZnQsIHVzZSwgYWx0ZXJhdGlvbiwgYW5kIGRpc2Nsb3N1cmUuIEFsbCBpbmZvcm1hdGlvbiB5b3UgcHJvdmlkZSB0byB1cyBpcyBzdG9yZWQNCiAgICAgICAgICAgICAgb24gb3VyIHNlY3VyZSBzZXJ2ZXJzIGJlaGluZCBmaXJld2FsbHMuIEFueSBwYXltZW50IHRyYW5zYWN0aW9ucyB3aWxsIGJlIGVuY3J5cHRlZCB1c2luZyBTU0wNCiAgICAgICAgICAgICAgdGVjaG5vbG9neS48YnIgLz48YnIgLz5UaGUgc2FmZXR5IGFuZCBzZWN1cml0eSBvZiB5b3VyIGluZm9ybWF0aW9uIGFsc28gZGVwZW5kIG9uIHlvdS4gV2hlcmUgd2UgaGF2ZQ0KICAgICAgICAgICAgICBpc3N1ZWQgeW91IChvciB5b3UgaGF2ZSBjaG9zZW4pIGEgcGFzc3dvcmQgZm9yIGFjY2VzcyB0byBjZXJ0YWluIHBhcnRzIG9mIG91ciBBcHBzLCB5b3UgYXJlIHJlc3BvbnNpYmxlDQogICAgICAgICAgICAgIGZvciBrZWVwaW5nIHlvdXIgcGFzc3dvcmQgY29uZmlkZW50aWFsLiBQbGVhc2UgZG8gbm90IHNoYXJlIHlvdXIgcGFzc3dvcmQgd2l0aCBhbnlvbmUuPGJyIC8+PGJyIC8+V2UgZG8NCiAgICAgICAgICAgICAgbm90IGFuZCB3aWxsIG5vdCwgYXQgYW55IHRpbWUsIHJlcXVlc3QgeW91ciBjcmVkaXQgY2FyZCBpbmZvcm1hdGlvbiwgeW91ciBsb2dpbiBpbmZvcm1hdGlvbiBvciBvdGhlcg0KICAgICAgICAgICAgICBpZGVudGlmaWNhdGlvbiBpbiBhIG5vbi1zZWN1cmUgb3IgdW5zb2xpY2l0ZWQgY29tbXVuaWNhdGlvbiAoc3VjaCBhcyBlbWFpbCkuPGJyIC8+PGJyIC8+QWx0aG91Z2ggd2UgZG8gb3VyDQogICAgICAgICAgICAgIGJlc3QgdG8gcHJvdGVjdCB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uLCB3ZSBjYW5ub3QgZ3VhcmFudGVlIHRoZSBzZWN1cml0eSBvZiB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uDQogICAgICAgICAgICAgIHRyYW5zbWl0dGVkIHRvIG9yIG9uIG91ciBBcHBzLiBBbnkgdHJhbnNtaXNzaW9uIG9mIHBlcnNvbmFsIGluZm9ybWF0aW9uIGlzIGF0IHlvdXIgb3duIHJpc2suIFlvdSBhc3N1bWUNCiAgICAgICAgICAgICAgdGhpcyByaXNrIGJ5IHVzaW5nIGFueSBwYXJ0IG9mIHRoZSBBcHBzLiBXZSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBjaXJjdW12ZW50aW9uIG9mIGFueSBvZiBvdXIgcHJpdmFjeQ0KICAgICAgICAgICAgICBzZXR0aW5ncyBvciBzZWN1cml0eSBtZWFzdXJlcywgYW5kL29yIGFueSBkYW1hZ2VzIHJlc3VsdGluZyBmcm9tIHN1Y2ggY2lyY3VtdmVudGlvbi4NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICA8L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4NCiAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzZWM3Ij48aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjcuIEhvdyBZb3UgTWF5IENoYW5nZSwgUmVtb3ZlLCBPciBFeHBvcnQgWW91ciBJbmZvcm1hdGlvbjwvaDQ+PC9zZWN0aW9uPg0KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5BY2Nlc3NpbmcgYW5kIENvcnJlY3RpbmcgWW91ciBJbmZvcm1hdGlvbjwvaDU+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgIFlvdSBjYW4gcmV2aWV3IGFuZCBjaGFuZ2UgeW91ciBwZXJzb25hbCBpbmZvcm1hdGlvbiBieSBzZW5kaW5nIHVzIGFuIGVtYWlsIGF0IHRoZSBlbWFpbCBhZGRyZXNzIHByb3ZpZGVkDQogICAgICAgICAgICAgIGluIHRoZSDigJxDb250YWN0aW5nIENvY29uZeKAnSBTZWN0aW9uIDE0IGJlbG93IHRvIHJlcXVlc3QgYWNjZXNzIHRvLCBvYmplY3QgdG8sIGNvcnJlY3Qgb3IgZGVsZXRlIGFueQ0KICAgICAgICAgICAgICBwZXJzb25hbCBpbmZvcm1hdGlvbiB0aGF0IHlvdSBoYXZlIHByb3ZpZGVkIHRvIHVzLjxiciAvPg0KICAgICAgICAgICAgICA8YnIgLz4NCiAgICAgICAgICAgICAgV2UgbWF5IG5vdCBhY2NvbW1vZGF0ZSBhIHJlcXVlc3QgdG8gY2hhbmdlIGluZm9ybWF0aW9uIGlmIHdlIHJlYXNvbmFibHkgYmVsaWV2ZSB0aGUgY2hhbmdlIHdvdWxkIHZpb2xhdGUNCiAgICAgICAgICAgICAgYW55IGxhdyBvciBsZWdhbCByZXF1aXJlbWVudCwgb3IgY2F1c2UgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluY29ycmVjdC48YnIgLz4NCiAgICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICAgIElmIHlvdSBkZWxldGUgeW91ciB1c2VyIGNvbnRlbnQsIGNvcGllcyBvZiB5b3VyIHVzZXIgY29udGVudCBtYXkgcmVtYWluIHZpZXdhYmxlIGluIGNhY2hlZCBhbmQgYXJjaGl2ZWQNCiAgICAgICAgICAgICAgcGFnZXMsIG9yIG1pZ2h0IGhhdmUgYmVlbiBjb3BpZWQgb3Igc3RvcmVkIGJ5IG90aGVyIHVzZXJzLiBQcm9wZXIgYWNjZXNzIHRvIGFuZCB1c2Ugb2YgaW5mb3JtYXRpb24sDQogICAgICAgICAgICAgIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdXNlciBjb250ZW50LCBpcyBnb3Zlcm5lZCBieSBvdXIgVGVybXMgb2YgVXNlLjxiciAvPg0KICAgICAgICAgICAgICA8YnIgLz4NCiAgICAgICAgICAgICAgWW91IG1heSBlbWFpbCB1cyBhdCB0aGUgZW1haWwgYWRkcmVzcyBwcm92aWRlZCBpbiB0aGUg4oCcQ29udGFjdGluZyBDb2NvbmXigJ0gU2VjdGlvbiAxNCBiZWxvdyB0byByZXF1ZXN0IHRoYXQNCiAgICAgICAgICAgICAgd2UgZGVsZXRlIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gZnJvbSBvdXIgZGF0YWJhc2UuIEZvciBzdWNoIHJlcXVlc3RzLCBwbGVhc2Ugd3JpdGUg4oCcZGVsZXRlIG15IHBlcnNvbmFsDQogICAgICAgICAgICAgIGluZm9ybWF0aW9u4oCdIGluIHRoZSBzdWJqZWN0IGxpbmUsIGFuZCBpbmNsdWRlIHlvdXIgZW1haWwgYWRkcmVzcyBpbiB0aGUgYm9keSBvZiB0aGUgbWVzc2FnZS4gV2Ugd2lsbCB1c2UNCiAgICAgICAgICAgICAgY29tbWVyY2lhbGx5IHJlYXNvbmFibGUgZWZmb3J0cyB0byBob25vciB5b3VyIHJlcXVlc3QuIFdlIG1heSByZXRhaW4gYW4gYXJjaGl2ZWQgY29weSBvZiB5b3VyIHJlY29yZHMgYXMNCiAgICAgICAgICAgICAgcmVxdWlyZWQgYnkgbGF3IG9yIGZvciBhZG1pbmlzdHJhdGl2ZSBwdXJwb3Nlcy48YnIgLz4NCiAgICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICAgIFBsZWFzZSBub3RlIHRoYXQgd2Ugd2lsbCBzdG9yZSBjb21tdW5pY2F0aW9ucyB5b3UgbWF5IHNlbmQgdGhyb3VnaCB0aGUgQXBwcywgYXMgd2VsbCBhcyBhbnkgY29tbWVudHMgeW91DQogICAgICAgICAgICAgIG1heSBwb3N0LCBhbmQgdGhleSBtYXkgbm90IGJlIHN1YmplY3QgdG8gbW9kaWZpY2F0aW9uIG9yIGRlbGV0aW9uLjxiciAvPg0KICAgICAgICAgICAgICA8YnIgLz4NCiAgICAgICAgICAgICAgUGxlYXNlIG5vdGUsIHNpbWlsYXIgcmlnaHRzIHdpbGwgYXBwbHkgaW4gdGhlIFVLLCBFRUEgYW5kIFN3aXR6ZXJsYW5kLiBQbGVhc2Ugc2VlIHRoZTxzcGFuDQogICAgICAgICAgICAgICAgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIg0KICAgICAgICAgICAgICA+DQogICAgICAgICAgICAgICAgUHJpdmFjeSBzZWN0aW9uIGZvciB1c2VycyBmcm9tIHRoZSBFRUEuIFVLIGFuZCBTd2l0emVybGFuZDwvc3Bhbg0KICAgICAgICAgICAgICA+DQogICAgICAgICAgICAgIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uDQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgPC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9fc3ViSXRlbSI+DQogICAgICAgICAgICA8c2VjdGlvbiBpZD0ic2VjOCI+PGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj44LiBMaW5rcyBUbyBUaGlyZC1QYXJ0eSBXZWJzaXRlcyBBbmQgU2VydmljZXM8L2g0Pjwvc2VjdGlvbj4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgVGhlIEFwcHMgbWF5IGNvbnRhaW4gbGlua3MgdG8gb3RoZXIgd2Vic2l0ZXMgYW5kIG9ubGluZSBzZXJ2aWNlcy4gSWYgeW91IGNob29zZSB0byBjbGljayB0aHJvdWdoIHRvIG9uZSBvZg0KICAgICAgICAgICAgICB0aGVzZSBvdGhlciB3ZWJzaXRlcyBvciBvbmxpbmUgc2VydmljZXMsIHBsZWFzZSBub3RlIHRoYXQgYW55IGluZm9ybWF0aW9uIHlvdSBtYXkgcHJvdmlkZSB3aWxsIGJlIHN1YmplY3QNCiAgICAgICAgICAgICAgdG8gdGhlIHByaXZhY3kgcG9saWN5IGFuZCBvdGhlciB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGF0IHdlYnNpdGUgb3Igc2VydmljZSwgYW5kIG5vdCB0byB0aGlzIFByaXZhY3kNCiAgICAgICAgICAgICAgUG9saWN5LiBXZSBkbyBub3QgY29udHJvbCB0aGlyZC1wYXJ0eSB3ZWJzaXRlcyBvciBzZXJ2aWNlcywgYW5kIHRoZSBmYWN0IHRoYXQgYSBsaW5rIHRvIHN1Y2ggYSB3ZWJzaXRlIG9yDQogICAgICAgICAgICAgIHNlcnZpY2UgYXBwZWFycyBpbiB0aGUgQXBwcyBkb2VzIG5vdCBtZWFuIHRoYXQgd2UgZW5kb3JzZSBpdHMgb3IgaXRzIHByb3ZpZGVyLCBvciBoYXZlIGFwcHJvdmVkIHRoZQ0KICAgICAgICAgICAgICBwcm92aWRlcuKAmXMgcG9saWNpZXMgb3IgcHJhY3RpY2VzIHJlbGF0ZWQgdG8gdXNlciBpbmZvcm1hdGlvbi48YnIgLz48YnIgLz5CZWZvcmUgcHJvdmlkaW5nIGFueSBpbmZvcm1hdGlvbg0KICAgICAgICAgICAgICB0byBhbnkgdGhpcmQtcGFydHkgd2Vic2l0ZSBvciBzZXJ2aWNlLCBwbGVhc2UgcmV2aWV3IHRoZSBwcml2YWN5IHBvbGljeSBhbmQgb3RoZXIgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YNCiAgICAgICAgICAgICAgdGhhdCB3ZWJzaXRlIG9yIHNlcnZpY2UuIFlvdSBhZ3JlZSB0aGF0IENvY29uZSB3aWxsIGhhdmUgbm8gbGlhYmlsaXR5IGZvciBhbnkgbWF0dGVycyByZWxhdGluZyB0byBhDQogICAgICAgICAgICAgIHRoaXJkLXBhcnR5IHdlYnNpdGUgb3Igc2VydmljZSB0aGF0IHlvdSBwcm92aWRlIGluZm9ybWF0aW9uIHRvLCBpbmNsdWRpbmcgdGhlaXIgY29sbGVjdGlvbiBhbmQvb3IgaGFuZGxpbmcNCiAgICAgICAgICAgICAgb2YgdGhhdCBpbmZvcm1hdGlvbi4NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICA8L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4NCiAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzZWM5Ij48aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjkuIE5vbi1VLlMuIFVzZXJzPC9oND48L3NlY3Rpb24+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgIFdoZW4gd2UgcmVmZXIgdG8gdGhlIHRlcm0g4oCcPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkdEUFI8L3NwYW4+4oCdIGluIHRoaXMgUHJpdmFjeSBQb2xpY3kgd2UNCiAgICAgICAgICAgICAgbWVhbiB0aGUgRXVyb3BlYW4gVW5pb24gR2VuZXJhbCBEYXRhIFByb3RlY3Rpb24gUmVndWxhdGlvbi4gSW5mb3JtYXRpb24gdGhhdCB5b3UgcHJvdmlkZSBtYXkgYmUNCiAgICAgICAgICAgICAgdHJhbnNmZXJyZWQgb3IgYWNjZXNzZWQgYnkgZW50aXRpZXMgYXJvdW5kIHRoZSB3b3JsZCBhcyBkZXNjcmliZWQgaW4gdGhpcyBQcml2YWN5IFBvbGljeS4gSWYgeW91IGFyZQ0KICAgICAgICAgICAgICBsb2NhdGVkIG91dHNpZGUgdGhlIFVuaXRlZCBTdGF0ZXMsIHlvdSB1bmRlcnN0YW5kIHRoYXQgd2UgbWF5IHRyYW5zZmVyIHBlcnNvbmFsIGluZm9ybWF0aW9uIHRvIGFuZCBwcm9jZXNzDQogICAgICAgICAgICAgIGl0IGluIHRoZSBVbml0ZWQgU3RhdGVzLiBJbiBzdWNoIGV2ZW50LCB0cmFuc2ZlcnJlZCBwZXJzb25hbCBpbmZvcm1hdGlvbiB3aWxsIG5vbmV0aGVsZXNzIGJlIHByb2Nlc3NlZCBhbmQNCiAgICAgICAgICAgICAgaGVsZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHJlcXVpcmVtZW50cyBvZiB0aGUgYXBwbGljYWJsZSBsYXcgaW4geW91ciBwbGFjZSBvZiByZXNpZGVuY2UuIElmIHlvdSBhcmUNCiAgICAgICAgICAgICAgbG9jYXRlZCBpbiB0aGUgVUssIEVFQSBvciBTd2l0emVybGFuZCBwbGVhc2Ugbm90ZSB0aGF0IHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gbWF5IGJlIHRyYW5zZmVycmVkDQogICAgICAgICAgICAgIG91dHNpZGUgb2YgdGhlIFVLLCBFRUEgb3IgU3dpdHplcmxhbmQuIFlvdXIgY29uc2VudCB0byB0aGlzIFByaXZhY3kgUG9saWN5IHRvZ2V0aGVyIHdpdGggeW91ciBzdWJtaXNzaW9uDQogICAgICAgICAgICAgIG9mIHBlcnNvbmFsIGluZm9ybWF0aW9uIGNvbnN0aXR1dGUgeW91ciBhZ3JlZW1lbnQgdG8gdGhlc2UgdHJhbnNmZXJzLiBQbGVhc2Ugc2VlIHRoZTxzcGFuDQogICAgICAgICAgICAgICAgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIg0KICAgICAgICAgICAgICA+DQogICAgICAgICAgICAgICAgUHJpdmFjeSBzZWN0aW9uIGZvciB1c2VycyBmcm9tIHRoZSBFRUEsIFVLIGFuZCBTd2l0emVybGFuZDwvc3Bhbg0KICAgICAgICAgICAgICA+DQogICAgICAgICAgICAgIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgIDwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPg0KICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InNlYzEwIj48aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjEwLiBQcml2YWN5IHNlY3Rpb24gZm9yIHVzZXJzIGZyb20gdGhlIFVLLCBFRUEgYW5kIFN3aXR6ZXJsYW5kPC9oND48L3NlY3Rpb24+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgIEJ5IGNvbnRpbnVpbmcgdG8gdXNlIG91ciBBcHBzIHlvdSBhY2tub3dsZWRnZSB0aGF0IHlvdXIgZGF0YSB3aWxsIGJlIHByb2Nlc3NlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhpcw0KICAgICAgICAgICAgICBQcml2YWN5IFBvbGljeS4NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+QS4gRGF0YSBDb250cm9sbGVyPC9oNT4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIFByaXZhY3kgUG9saWN5LCBDb2NvbmUgT05FIGNvcnBvcmF0aW9uIGlzIHRoZSBEYXRhIENvbnRyb2xsZXIgb2YgeW91ciBwZXJzb25hbA0KICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Qi4gSW50ZXJuYXRpb25hbCB0cmFuc2ZlcnMgb2YgcGVyc29uYWwgZGF0YTwvaDU+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgIE5vbi1VSy9FRUEgY291bnRyaWVzIG1heSBub3QgcHJvdmlkZSB0aGUgc2FtZSBkZWdyZWUgb2YgcHJvdGVjdGlvbiBmb3IgeW91ciBwZXJzb25hbCBkYXRhLCBtYXkgbm90IGdpdmUNCiAgICAgICAgICAgICAgeW91IHRoZSBzYW1lIHJpZ2h0cyBpbiByZWxhdGlvbiB0byB5b3VyIHBlcnNvbmFsIGRhdGEgYW5kIG1heSBub3QgaGF2ZSBhIGRhdGEgcHJvdGVjdGlvbiBzdXBlcnZpc29yeQ0KICAgICAgICAgICAgICBhdXRob3JpdHkgdG8gaGVscCB5b3UgaWYgeW91IGhhdmUgYW55IGNvbmNlcm5zIGFib3V0IHRoZSBwcm9jZXNzaW5nIG9mIHlvdXIgcGVyc29uYWwgZGF0YS4gSG93ZXZlciwgd2hlbg0KICAgICAgICAgICAgICB0cmFuc2ZlcnJpbmcgeW91ciBwZXJzb25hbCBkYXRhICh0aGF0IG9yaWdpbmF0ZXMgZnJvbSB0aGUgVUssIEVFQSBvciBTd2l0emVybGFuZCkgb3V0c2lkZSB0aGUgVUssIEVFQSBvcg0KICAgICAgICAgICAgICBTd2l0emVybGFuZCwgd2Ugd2lsbCBjb21wbHkgd2l0aCBvdXIgbGVnYWwgYW5kIHJlZ3VsYXRvcnkgb2JsaWdhdGlvbnMgaW4gcmVsYXRpb24gdG8geW91ciBwZXJzb25hbCBkYXRhLA0KICAgICAgICAgICAgICBpbmNsdWRpbmcgaGF2aW5nIGEgbGF3ZnVsIGJhc2lzIGZvciB0cmFuc2ZlcnJpbmcgcGVyc29uYWwgZGF0YSBhbmQgcHV0dGluZyBhcHByb3ByaWF0ZSBzYWZlZ3VhcmRzIGluIHBsYWNlDQogICAgICAgICAgICAgIHRvIGVuc3VyZSBhbiBhZGVxdWF0ZSBsZXZlbCBvZiBwcm90ZWN0aW9uIGZvciB0aGUgcGVyc29uYWwgZGF0YS4gV2Ugd2lsbCB0YWtlIHJlYXNvbmFibGUgc3RlcHMgdG8gZW5zdXJlDQogICAgICAgICAgICAgIHRoZSBzZWN1cml0eSBvZiB5b3VyIHBlcnNvbmFsIGRhdGEgaW4gYWNjb3JkYW5jZSB3aXRoIGFwcGxpY2FibGUgZGF0YSBwcm90ZWN0aW9uIGxhd3MuPGJyIC8+PGJyIC8+V2hlbg0KICAgICAgICAgICAgICB0cmFuc2ZlcnJpbmcgeW91ciBwZXJzb25hbCBkYXRhIG91dHNpZGUgdGhlIFVLLCBFRUEgb3IgU3dpdHplcmxhbmQsIHdlIHdpbGwsIHdoZXJlIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUNCiAgICAgICAgICAgICAgbGF3LCBpbXBsZW1lbnQgYXQgbGVhc3Qgb25lIG9mIHRoZSBzYWZlZ3VhcmRzIHNldCBvdXQgYmVsb3cuIFBsZWFzZSBjb250YWN0IHVzIGlmIHlvdSB3b3VsZCBsaWtlIGZ1cnRoZXINCiAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gdGhlIHNwZWNpZmljIG1lY2hhbmlzbXMgdXNlZCBieSB1cyB3aGVuIHRyYW5zZmVycmluZyB5b3VyIHBlcnNvbmFsIGRhdGEgb3V0c2lkZSB0aGUgVUssIEVFQQ0KICAgICAgICAgICAgICBvciBTd2l0emVybGFuZC4NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAg44O7QWRlcXVhY3kgZGVjaXNpb25zOiBXZSBtYXkgdHJhbnNmZXIgeW91ciBwZXJzb25hbCBkYXRhIHRvIGNvdW50cmllcyB0aGF0IGhhdmUgYmVlbiBkZWVtZWQgdG8gcHJvdmlkZSBhbg0KICAgICAgICAgICAgICBhZGVxdWF0ZSBsZXZlbCBvZiBwcm90ZWN0aW9uIGZvciBwZXJzb25hbCBkYXRhIGJ5IHRoZSBFdXJvcGVhbiBDb21taXNzaW9uIGFuZC9vciB0aGUgVUsvU3dpc3MgR292ZXJubWVudA0KICAgICAgICAgICAgICAoYXMgYXBwbGljYWJsZSkuPGJyIC8+44O7TW9kZWwgY2xhdXNlczogV2hlcmUgd2UgdXNlIGNlcnRhaW4gc2VydmljZSBwcm92aWRlcnMsIHdlIG1heSB1c2Ugc3BlY2lmaWMNCiAgICAgICAgICAgICAgc3RhbmRhcmQgY29udHJhY3R1YWwgY2xhdXNlcyBhcHByb3ZlZCBieSB0aGUgRXVyb3BlYW4gQ29tbWlzc2lvbiBhbmQvb3IgdGhlIFVLL1N3aXNzIEdvdmVybm1lbnQgd2hpY2ggZ2l2ZQ0KICAgICAgICAgICAgICBwZXJzb25hbCBkYXRhIHRoZSBzYW1lIHByb3RlY3Rpb24gaXQgaGFzIGluIEV1cm9wZSwgU3dpdHplcmxhbmQgYW5kL29yIHRoZSBVSy4NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Qy4gUmlnaHRzIG9mIEVFQSBSZXNpZGVudHM8L2g1Pg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICBJZiB5b3UgYXJlIGFjY2Vzc2luZyBvciB1c2luZyB0aGUgQXBwcyBmcm9tIHdpdGhpbiB0aGUgVUssIEVFQSBvciBTd2l0emVybGFuZCB5b3UgbWF5IGhhdmUgdGhlIGZvbGxvd2luZw0KICAgICAgICAgICAgICByaWdodHMgdW5kZXIgdGhlIEdEUFIgKGFzIHdlbGwgYXMgb3RoZXIgcmlnaHRzKS4gSWYgeW91IHdpc2ggdG8gZXhlcmNpc2UgYW55IG9mIHRoZXNlIHJpZ2h0cywgeW91IG1heSBkbw0KICAgICAgICAgICAgICBzbyBieSBjb250YWN0aW5nIHVzIGFzIHByb3ZpZGVkIChhKSBpbiBTZWN0aW9uIDE0IGJlbG93LCBvciAoYikgb3RoZXJ3aXNlIGluIHRoaXMgUHJpdmFjeSBQb2xpY3kuDQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgIOODu1JpZ2h0IG9mIEFjY2VzczogWW91IGhhdmUgdGhlIHJpZ2h0IHRvIG9idGFpbiBjb25maXJtYXRpb24gZnJvbSB1cyBhcyB0byB3aGV0aGVyIG9yIG5vdCB3ZSBwcm9jZXNzDQogICAgICAgICAgICAgIHBlcnNvbmFsIGluZm9ybWF0aW9uIGZyb20geW91IGFuZCB5b3UgYWxzbyBoYXZlIHRoZSByaWdodCB0byBhdCBhbnkgdGltZSBvYnRhaW4gYWNjZXNzIHRvIHlvdXIgcGVyc29uYWwNCiAgICAgICAgICAgICAgaW5mb3JtYXRpb24gc3RvcmVkIGJ5IHVzLjxiciAvPuODu1JpZ2h0IHRvIENvcnJlY3Rpb24gb2YgeW91ciBQZXJzb25hbCBJbmZvcm1hdGlvbjogSWYgd2UgcHJvY2VzcyB5b3VyDQogICAgICAgICAgICAgIHBlcnNvbmFsIGluZm9ybWF0aW9uLCB3ZSB1c2UgcmVhc29uYWJsZSBtZWFzdXJlcyB0byBlbnN1cmUgdGhhdCB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uIGlzIGFjY3VyYXRlIGFuZA0KICAgICAgICAgICAgICB1cC10by1kYXRlIGZvciB0aGUgcHVycG9zZXMgZm9yIHdoaWNoIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gd2FzIGNvbGxlY3RlZC4gSWYgeW91ciBwZXJzb25hbA0KICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBpcyBpbmFjY3VyYXRlIG9yIGluY29tcGxldGUsIHlvdSBoYXZlIHRoZSByaWdodCB0byByZXF1aXJlIHVzIHRvIGNvcnJlY3QgaXQuPGJyIC8+44O7UmlnaHQgdG8NCiAgICAgICAgICAgICAgRGVsZXRpb24gb2YgeW91ciBQZXJzb25hbCBJbmZvcm1hdGlvbiBvciBSaWdodCB0byBSZXN0cmljdGlvbiBvZiBQcm9jZXNzaW5nOiBZb3UgbWF5IGhhdmUgdGhlIHJpZ2h0IHRvDQogICAgICAgICAgICAgIHJlcXVpcmUgdXMgdG8gZGVsZXRlIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gb3IgdG8gcmVzdHJpY3Qgb2YgcHJvY2Vzc2luZyBvZiB5b3VyIHBlcnNvbmFsDQogICAgICAgICAgICAgIGluZm9ybWF0aW9uLjxiciAvPuODu1JpZ2h0IHRvIFdpdGhkcmF3IHlvdXIgQ29uc2VudDogSWYgeW91IGhhdmUgZ2l2ZW4geW91ciBjb25zZW50IHRvIHRoZSBwcm9jZXNzaW5nIG9mDQogICAgICAgICAgICAgIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24sIHlvdSBoYXZlIHRoZSByaWdodCB0byB3aXRoZHJhdyB5b3VyIGNvbnNlbnQgYXQgYW55IHRpbWUsIHdpdGhvdXQgYWZmZWN0aW5nIHRoZQ0KICAgICAgICAgICAgICBsYXdmdWxuZXNzIG9mIHByb2Nlc3NpbmcgYmFzZWQgb24gdGhlIGNvbnNlbnQgYmVmb3JlIHRoZSB3aXRoZHJhd2FsLjxiciAvPuODu1JpZ2h0IHRvIERhdGEgUG9ydGFiaWxpdHk6IFlvdQ0KICAgICAgICAgICAgICBtYXkgaGF2ZSB0aGUgcmlnaHQgdG8gcmVjZWl2ZSBwZXJzb25hbCBpbmZvcm1hdGlvbiBjb25jZXJuaW5nIHlvdSBhbmQgd2hpY2ggeW91IGhhdmUgcHJvdmlkZWQgdG8gdXMsIGluIGENCiAgICAgICAgICAgICAgc3RydWN0dXJlZCwgY29tbW9ubHkgdXNlZCBhbmQgbWFjaGluZS1yZWFkYWJsZSBmb3JtYXQgb3IgdG8gdHJhbnNtaXQgdGhpcyBkYXRhIHRvIGFub3RoZXIgY29udHJvbGxlci48YnIgLz7jg7tSaWdodA0KICAgICAgICAgICAgICB0byBPYmplY3Q6IFlvdSBtYXkgaGF2ZSB0aGUgcmlnaHQgdG8gb2JqZWN0IHRvIHRoZSBwcm9jZXNzaW5nIG9mIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gYXMgZnVydGhlcg0KICAgICAgICAgICAgICBzcGVjaWZpZWQgaW4gdGhpcyBQcml2YWN5IFBvbGljeS48YnIgLz7jg7tSaWdodCBub3QgdG8gYmUgc3ViamVjdCB0byBhdXRvbWF0ZWQgZGVjaXNpb24gbWFraW5nIGFuZA0KICAgICAgICAgICAgICBwcm9maWxpbmc6IFlvdSBoYXZlIHRoZSByaWdodCBub3QgdG8gYmUgc3ViamVjdCB0byBhIGRlY2lzaW9uIHdoZW4gaXQgaXMgYmFzZWQgb24gYXV0b21hdGljIHByb2Nlc3NpbmcsDQogICAgICAgICAgICAgIGluY2x1ZGluZyBwcm9maWxpbmcsIGlmIGl0IHByb2R1Y2VzIGEgbGVnYWwgZWZmZWN0IG9yIHNpbWlsYXJseSBzaWduaWZpY2FudGx5IGFmZmVjdHMgeW91LCB1bmxlc3Mgc3VjaA0KICAgICAgICAgICAgICBwcm9maWxpbmcgaXMgbmVjZXNzYXJ5IGZvciB0aGUgZW50ZXJpbmcgaW50bywgb3IgdGhlIHBlcmZvcm1hbmNlIG9mLCBhIGNvbnRyYWN0IGJldHdlZW4geW91IGFuZCB1cy48YnIgLz7jg7tSaWdodA0KICAgICAgICAgICAgICB0byBMb2RnZSBhIENvbXBsYWludCB3aXRoIFN1cGVydmlzb3J5IEF1dGhvcml0eTogWW91IGhhdmUgdGhlIHJpZ2h0IHRvIGxvZGdlIGEgY29tcGxhaW50IHdpdGggeW91cg0KICAgICAgICAgICAgICByZWxldmFudCBkYXRhIHByb3RlY3Rpb24gc3VwZXJ2aXNvcnkgYXV0aG9yaXR5IGxvY2F0ZWQgaW4gdGhlIEV1cm9wZWFuIFVuaW9uLiBJZiB5b3UgYXJlIGxvY2F0ZWQgaW4gdGhlDQogICAgICAgICAgICAgIEVFQSwgZnVydGhlciBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gY29udGFjdCB5b3VyIGxvY2FsIGRhdGEgcHJvdGVjdGlvbiBhdXRob3JpdHkgaXMgYXZhaWxhYmxlIG9uIHRoZQ0KICAgICAgICAgICAgICA8YQ0KICAgICAgICAgICAgICAgIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiDQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cDovL2VjLmV1cm9wYS5ldS9qdXN0aWNlL2RhdGEtcHJvdGVjdGlvbi9ib2RpZXMvYXV0aG9yaXRpZXMvaW5kZXhfZW4uaHRtIg0KICAgICAgICAgICAgICAgID53ZWJzaXRlIG9mIHRoZSBFdXJvcGVhbiBDb21taXNzaW9uPC9hDQogICAgICAgICAgICAgID4uIElmIHlvdSBhcmUgbG9jYXRlZCBpbiB0aGUgVUsgdGhlIHJlZ3VsYXRvcnkgYXV0aG9yaXR5IGlzIHRoZSBJbmZvcm1hdGlvbiBDb21taXNzaW9uZXLigJlzIE9mZmljZSAo4oCcSUNP4oCdKS4NCiAgICAgICAgICAgICAgQ29udGFjdCBkZXRhaWxzIGZvciB0aGUgSUNPIGNhbiBiZSBmb3VuZCBvbiBpdHMgd2Vic2l0ZSBhdA0KICAgICAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJodHRwczovL2ljby5vcmcudWsiPmh0dHBzOi8vaWNvLm9yZy51azwvYT4uDQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgICA8aDUgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkQuIElmIHlvdSBmYWlsIHRvIHByb3ZpZGUgeW91ciBwZXJzb25hbCBkYXRhPC9oNT4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgV2hlcmUgd2UgYXJlIHJlcXVpcmVkIGJ5IGxhdyB0byBjb2xsZWN0IHlvdXIgcGVyc29uYWwgZGF0YSwgb3Igd2UgbmVlZCB0byBjb2xsZWN0IHlvdXIgcGVyc29uYWwgZGF0YSB1bmRlcg0KICAgICAgICAgICAgICB0aGUgdGVybXMgb2YgYSBjb250cmFjdCB3ZSBoYXZlIHdpdGggeW91LCBhbmQgeW91IGZhaWwgdG8gcHJvdmlkZSB0aGF0IHBlcnNvbmFsIGRhdGEgd2hlbiB3ZSByZXF1ZXN0IGl0LA0KICAgICAgICAgICAgICB3ZSBtYXkgbm90IGJlIGFibGUgdG8gcGVyZm9ybSB0aGUgY29udHJhY3Qgd2UgaGF2ZSBvciBhcmUgdHJ5aW5nIHRvIGVudGVyIGludG8gd2l0aCB5b3UuIFRoaXMgbWF5IGFwcGx5DQogICAgICAgICAgICAgIHdoZXJlIHlvdSBkbyBub3QgcHJvdmlkZSB0aGUgcGVyc29uYWwgZGF0YSB3ZSBuZWVkIGluIG9yZGVyIHRvIHByb3ZpZGUgdGhlIEFwcHMgb3IgdG8gcHJvY2VzcyBhbg0KICAgICAgICAgICAgICBhcHBsaWNhdGlvbiB0byByZWdpc3RlciBhbiBhY2NvdW50LiBJbiB0aGVzZSBjaXJjdW1zdGFuY2VzLCB3ZSBtYXkgaGF2ZSB0byBjYW5jZWwgeW91ciBhcHBsaWNhdGlvbiBvciB0aGUNCiAgICAgICAgICAgICAgcHJvdmlzaW9uIG9mIHRoZSByZWxldmFudCBBcHBzIHRvIHlvdSwgaW4gd2hpY2ggY2FzZSB3ZSB3aWxsIG5vdGlmeSB5b3UuDQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgPC9saT4NCg0KICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4NCiAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzZWMxMSI+PGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj4xMS4gUHJpdmFjeSBTZWN0aW9uIEZvciBVc2VycyBGcm9tIHRoZSBVLlMuPC9oND48L3NlY3Rpb24+DQogICAgICAgICAgICA8aDUgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkEuIEFwcGxpY2F0aW9uPC9oNT4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgSWYgeW91IHJlc2lkZSBpbiBDYWxpZm9ybmlhLCBDb2xvcmFkbywgQ29ubmVjdGljdXQsIERlbGF3YXJlLCBJbmRpYW5hLCBJb3dhLCBLZW50dWNreSwgTWFyeWxhbmQsDQogICAgICAgICAgICAgIE1pbm5lc290YSwgTW9udGFuYSwgTmVicmFza2EsIE5ldmFkYSwgTmV3IEhhbXBzaGlyZSwgTmV3IEplcnNleSwgT3JlZ29uLCBSaG9kZSBJc2xhbmQsIFRlbm5lc3NlZSwgVGV4YXMsDQogICAgICAgICAgICAgIFV0YWgsIFZlcm1vbnQsIFZpcmdpbmlhLCBvciBXYXNoaW5ndG9uLCB0aGlzIHNlY3Rpb24gYXBwbGllcyB0byB5b3UuDQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgICA8aDUgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkIuIEF1dGhvcml6ZWQgQWdlbnQ8L2g1Pg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICBZb3UgbWF5IGRlc2lnbmF0ZSBhbiBhdXRob3JpemVkIGFnZW50IHRvIHN1Ym1pdCByZXF1ZXN0cyBvbiB5b3VyIGJlaGFsZiBieSBkZXNpZ25hdGluZyBzdWNoIGFuIGFnZW50IGluDQogICAgICAgICAgICAgIHdyaXRpbmcuIFdlIG1heSByZXF1aXJlIHRoZSBhZ2VudCB0byBwcm92aWRlIHVzIHdpdGggcHJvb2YgdGhhdCB5b3UgaGF2ZSBhdXRob3JpemVkIHRoZSBhZ2VudCB0byBtYWtlDQogICAgICAgICAgICAgIHJlcXVlc3RzIG9uIHlvdXIgYmVoYWxmIHByaW9yIHRvIGFjY2VwdGluZyByZXF1ZXN0cyBmcm9tIHRoZSBhZ2VudC4NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Qy4gWW91ciBSaWdodHM8L2g1Pg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+DQogICAgICAgICAgICAgIOODu1JpZ2h0IHRvIEFjY2VzczogWW91IG1heSByZXF1ZXN0IGEgY29weSBvZiB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uIHRoYXQgd2UgaGF2ZSBjb2xsZWN0ZWQgYWJvdXQgeW91Lg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+DQogICAgICAgICAgICAgIOODu1JpZ2h0IHRvIERlbGV0ZTogWW91IG1heSByZXF1ZXN0IHRvIGRlbGV0ZSB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uLg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+DQogICAgICAgICAgICAgIOODu1JpZ2h0IHRvIENvcnJlY3Q6IFlvdSBtYXkgcmVxdWVzdCB0byB1cGRhdGUgb3IgY29ycmVjdCB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uLg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+DQogICAgICAgICAgICAgIOODu1JpZ2h0IHRvIE9wdCBPdXQ6IFlvdSBtYXkgaGF2ZSB0aGUgcmlnaHQgdG8gb3B0IG91dCBvZiB0YXJnZXRlZCBhZHZlcnRpc2luZyBhbmQgdGhlIHNhbGUgb2YgeW91ciBkYXRhDQogICAgICAgICAgICAgIChhcyBkZWZpbmVkIHVuZGVyIHJlbGV2YW50IGFuZCBhcHBsaWNhYmxlIGxhdykuDQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4NCiAgICAgICAgICAgICAg44O7VG8gbWFrZSBzdWNoIGEgcmVxdWVzdCwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8gdGhlIGVtYWlsIGFkZHJlc3MgcHJvdmlkZWQgaW4gdGhlIOKAnENvbnRhY3RpbmcgQ29jb25l4oCdDQogICAgICAgICAgICAgIFNlY3Rpb24gMTQgYmVsb3cgb3Igd3JpdGUgdXMgYXQgdGhlIGFkZHJlc3MgcHJvdmlkZWQgaW4gdGhlIOKAnENvbnRhY3RpbmcgQ29jb25l4oCdIFNlY3Rpb24gMTQgYmVsb3cuPGJyIC8+DQogICAgICAgICAgICAgIFdlIHdpbGwgbm90IGRpc2NyaW1pbmF0ZSBhZ2FpbnN0IHlvdSBmb3IgZXhlcmNpc2luZyBhbnkgb2YgdGhlc2UgcmlnaHRzIGFib3ZlLg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5ELiBDYWxpZm9ybmlhIFJlc2lkZW50czwvaDU+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgIEFzIHRoZSB0ZXJtcyBhcmUgZGVmaW5lZCB1bmRlciB0aGUgQ2FsaWZvcm5pYSBQcml2YWN5IFJpZ2h0cyBBY3QsIHdlIGRvIG5vdCBrbm93aW5nbHkgc2VsbCBvciBzaGFyZSB5b3VyDQogICAgICAgICAgICAgIHBlcnNvbmFsIGluZm9ybWF0aW9uLiBXZSBkbyBub3QgaGF2ZSBhY3R1YWwga25vd2xlZGdlIHRoYXQgd2Ugc2VsbCBvciBzaGFyZSB0aGUgcGVyc29uYWwgaW5mb3JtYXRpb24gb2YNCiAgICAgICAgICAgICAgbWlub3JzIHVuZGVyIDE2Lg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICBJZiB5b3UgYXJlIGEgcmVzaWRlbnQgb2YgQ2FsaWZvcm5pYSwgeW91IGhhdmUgc3BlY2lmaWMgcmlnaHRzIHJlZ2FyZGluZyBvdXIgaGFuZGxpbmcgb2YgeW91ciDigJxwZXJzb25hbA0KICAgICAgICAgICAgICBpbmZvcm1hdGlvbuKAnSBhcyBzcGVjaWZpY2FsbHkgZGVmaW5lZCBpbiBDYWxpZm9ybmlh4oCZcyDigJxTaGluZSB0aGUgTGlnaHTigJ0gbGF3IChDYWwuIENpdmlsIENvZGUgU2VjdGlvbiDCpw0KICAgICAgICAgICAgICAxNzk4LjgzKS4gVGhpcyBsYXcgcGVybWl0cyB1c2VycyBvZiBvdXIgQXBwcyB3aG8gYXJlIENhbGlmb3JuaWEgcmVzaWRlbnRzIHRvIHJlcXVlc3QgY2VydGFpbiBpbmZvcm1hdGlvbg0KICAgICAgICAgICAgICByZWdhcmRpbmcgb3VyIGRpc2Nsb3N1cmUgb2YgcGVyc29uYWwgaW5mb3JtYXRpb24gdG8gdGhpcmQgcGFydGllcyBmb3IgdGhlaXIgZGlyZWN0IG1hcmtldGluZyBwdXJwb3Nlcy4gVG8NCiAgICAgICAgICAgICAgbWFrZSBzdWNoIGEgcmVxdWVzdCwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8gdGhlIGVtYWlsIGFkZHJlc3MgcHJvdmlkZWQgaW4gdGhlIOKAnENvbnRhY3RpbmcgQ29jb25l4oCdIFNlY3Rpb24NCiAgICAgICAgICAgICAgMTQgYmVsb3cgb3Igd3JpdGUgdXMgYXQgdGhlIGFkZHJlc3MgcHJvdmlkZWQgaW4gdGhlIOKAnENvbnRhY3RpbmcgQ29jb25l4oCdIFNlY3Rpb24gMTQgYmVsb3cuPGJyIC8+DQogICAgICAgICAgICAgIFdpdGhpbiB0aGlydHkgKDMwKSBkYXlzIG9mIHJlY2VpdmluZyBzdWNoIGEgcmVxdWVzdCwgd2Ugd2lsbCBwcm92aWRlIGEgbGlzdCBvZiB0aGUgY2F0ZWdvcmllcyBvZiBwZXJzb25hbA0KICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBkaXNjbG9zZWQgdG8gdGhpcmQgcGFydGllcyBmb3Igc3VjaCB0aGlyZCBwYXJ0aWVz4oCZIGRpcmVjdCBtYXJrZXRpbmcgcHVycG9zZXMgZHVyaW5nIHRoZQ0KICAgICAgICAgICAgICBpbW1lZGlhdGVseSBwcmVjZWRpbmcgY2FsZW5kYXIgeWVhciwgYWxvbmcgd2l0aCB0aGUgbmFtZXMgYW5kIGFkZHJlc3NlcyBvZiB0aGVzZSB0aGlyZCBwYXJ0aWVzLiBBIHJlcXVlc3QNCiAgICAgICAgICAgICAgbWF5IGJlIG1hZGUgbm8gbW9yZSB0aGFuIG9uY2UgcGVyIGNhbGVuZGFyIHllYXIgYW5kIHdlIGFyZSBub3QgcmVxdWlyZWQgdG8gcmVzcG9uZCB0byByZXF1ZXN0cyBtYWRlIGJ5DQogICAgICAgICAgICAgIG1lYW5zIG90aGVyIHRoYW4gdGhyb3VnaCB0aGUgZW1haWwgYWRkcmVzcyBhbmQgbWFpbGluZyBhZGRyZXNzIGFib3ZlLg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj48L2g1Pg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPjwvcD4NCiAgICAgICAgICA8L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4NCiAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzZWMxMiI+PGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj4xMi4gUHJpdmFjeSBzZWN0aW9uIGZvciB1c2VycyBmcm9tIHRoZSBSZXB1YmxpYyBvZiBLb3JlYTwvaDQ+PC9zZWN0aW9uPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICBXZSBwcm92aWRlIHRoZSBBcHBzIGFuZCB3ZWIgc2VydmljZXMgYXJvdW5kIHRoZSB3b3JsZC4gSW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBwcmVjZWRlbnRzIGluIHRoZSBSZXB1YmxpYw0KICAgICAgICAgICAgICBvZiBLb3JlYSwgcGVyc29uYWwgaW5mb3JtYXRpb24gaW5jbHVkZXMgdGhlIHVzZXIgSUQgYW5kIGFjY291bnQgcGFzc3dvcmQgeW91IHNldCBvbiB0aGUgQXBwcy48YnIgLz4NCiAgICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICAgIFN1YnNpZGlhcmllcyBvciBhZmZpbGlhdGVkIGVudGl0aWVzIG9mIENvY29uZSBPTkUgY29ycG9yYXRpb24gaW4gdGhlIFJlcHVibGljIG9mIEtvcmVhIG1heSBzaGFyZSBwZXJzb25hbA0KICAgICAgICAgICAgICBpbmZvcm1hdGlvbiB3aXRoIG91ciBhZmZpbGlhdGVzIGFuZC9vciB0aGlyZCBwYXJ0aWVzLCBpbmNsdWRpbmcgZW50aXRpZXMgbG9jYXRlZCBvdXRzaWRlIG9mIHRoZSBSZXB1YmxpYw0KICAgICAgICAgICAgICBvZiBLb3JlYSwgb24gcHJpb3Igbm90aWNlIGZvciB0aGUgZm9sbG93aW5nIHB1cnBvc2VzOiA8YnIgLz4NCiAgICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICAgIOODu1RvIHN1cHBvcnQgdGhlIG9wZXJhdGlvbiBvZiB0aGUgQXBwczsgYW5kPGJyIC8+DQogICAgICAgICAgICAgIOODu1RvIHN1cHBvcnQgdGhlIGN1c3RvbWVyIHN1cHBvcnQgc2VydmljZXMuPGJyIC8+DQogICAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgICBQZXJzb25hbCBpbmZvcm1hdGlvbiB0aGF0IHN1YnNpZGlhcmllcyBvciBhZmZpbGlhdGVkIGVudGl0aWVzIG9mIENvY29uZSBPTkUgY29ycG9yYXRpb24gaW4gdGhlIFJlcHVibGljIG9mDQogICAgICAgICAgICAgIEtvcmVhIHNoYXJlIHNoYWxsIGJlIG9yIG1heSBiZSB1c2VkLCBwcm9jZXNzZWQsIGFuZCBzdG9yZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBwdXJwb3NlcyBiZWxvdy4gV2Ugc2hhcmUNCiAgICAgICAgICAgICAgcGVyc29uYWwgaW5mb3JtYXRpb24gYXMgZm9sbG93czoNCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImMtcHJpdmFjeV9fc2Nyb2xsV3JhcCI+DQogICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iYy1wcml2YWN5X190YWJsZTZDb2x1bW5zIj4NCiAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5Db21wYW55PC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5PdmVyc2VhcyBDb3VudHJ5PC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5QZXJzb25hbCBJbmZvcm1hdGlvbjwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90aD4NCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+RGF0ZSBhbmQgTWV0aG9kIG9mIHRyYW5zZmVycmluZzwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90aD4NCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+UHVycG9zZSBvZiB1c2luZyBwZXJzb25hbCBpbmZvcm1hdGlvbjwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90aD4NCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+UGVyaW9kIG9mIHJldGVudGlvbiBhbmQgdXNlPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSB3aWRlIj5Db2NvbmUgT05FIGNvcnBvcmF0aW9uIChwcml2YWN5QGNvY29uZS5jby5qcCk8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5KYXBhbjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIFVzZXJuYW1lLCBhY2NvdW50IHBhc3N3b3JkLCBJUCBhZGRyZXNzLCBpbmZvcm1hdGlvbiB0byBjaGVjayBkb3VibGUgcmVnaXN0cmF0aW9uDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPkNvbXBsZXRpb24gb2YgcmVnaXN0cmF0aW9uLCB2aWEgZGVkaWNhdGVkIG5ldHdvcms8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5PcGVyYXRpb24gb2YgdGhlIEFwcHMsIHByb3ZpZGluZyBvdGhlciByZWxhdGVkIHNlcnZpY2VzPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgVW50aWwgdGhlIHdpdGhkcmF3YWwgb2YgdXNlcnMgZnJvbSB0aGUgQXBwcyBhbmQgdGVybWluYXRpb24gb2YgcHJvdmlkaW5nIHRoZSBBcHBzDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPlplbmRlc2ssIEluYy4gKHByaXZhY3lAemVuZGVzay5jb20pPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+VW5pdGVkIFN0YXRlczwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIFVzZXJuYW1lLCBhY2NvdW50IHBhc3N3b3JkLCBJUCBhZGRyZXNzLCBpbmZvcm1hdGlvbiB0byBjaGVjayBkb3VibGUgcmVnaXN0cmF0aW9uDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIFJlYWwtdGltZSB0cmFuc21pc3Npb24gd2hlbiB1c2VycyB1c2UgdGhlIEFwcHMsIHZpYSBkZWRpY2F0ZWQgbmV0d29yaw0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5Db2xsZWN0aW9uIG9mIHVzZXIgaW5xdWlyaWVzIGFuZCBub3RpY2UgbWFuYWdlbWVudDwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIFVudGlsIHRoZSB3aXRoZHJhd2FsIG9mIHVzZXJzIGZyb20gdGhlIEFwcHMgYW5kIHRlcm1pbmF0aW9uIG9mIHByb3ZpZGluZyB0aGUgQXBwcw0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSB3aWRlIj5BbWF6b24gV2ViIFNlcnZpY2UgSW5jLiAoaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9wcml2YWN5Lyk8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5Vbml0ZWQgU3RhdGVzPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgVXNlcm5hbWUsIGFjY291bnQgcGFzc3dvcmQsIGRhdGUgb2YgYmlydGgsIG5hbWUsIGVtYWlsIGFkZHJlc3MsIGNvb2tpZXMsIElQIGFkZHJlc3MsIGluZm9ybWF0aW9uDQogICAgICAgICAgICAgICAgICAgICAgdG8gY2hlY2sgZG91YmxlIHJlZ2lzdHJhdGlvbiwgSW5mb3JtYXRpb24gb24gbGVnYWwgcmVwcmVzZW50YXRpdmUgKG5hbWUsIGUtbWFpbCBhZGRyZXNzLA0KICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIHRvIGNoZWNrIGRvdWJsZSByZWdpc3RyYXRpb24pDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIFJlYWwtdGltZSB0cmFuc21pc3Npb24gd2hlbiB1c2VycyB1c2UgdGhlIEFwcHMsIHZpYSBkZWRpY2F0ZWQgbmV0d29yaw0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5PcGVyYXRpb24gb2YgdGhlIEFwcHMsIHByb3ZpZGluZyBvdGhlciByZWxhdGVkIHNlcnZpY2VzPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgVW50aWwgdGhlIHdpdGhkcmF3YWwgb2YgdXNlcnMgZnJvbSB0aGUgQXBwcyBhbmQgdGVybWluYXRpb24gb2YgcHJvdmlkaW5nIHRoZSBBcHBzDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPkZpcmViYXNlIGJ5IEdvb2dsZSBMTEM8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5Vbml0ZWQgU3RhdGVzPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgVXNlcm5hbWUsIElQIGFkZHJlc3MsIGRldmljZSBpbmZvcm1hdGlvbiwgYXBwIGFjdGl2aXR5LCBjcmFzaCByZXBvcnRzDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIFJlYWwtdGltZSB0cmFuc21pc3Npb24gd2hlbiB1c2VycyB1c2UgdGhlIEFwcHMsIHZpYSBkZWRpY2F0ZWQgbmV0d29yaw0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBBbmFseXRpY3MsIHBlcmZvcm1hbmNlIHRyYWNraW5nLCBjcmFzaCByZXBvcnRpbmcsIGFuZCBhcHAgaW1wcm92ZW1lbnQNCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgVW50aWwgdGhlIHdpdGhkcmF3YWwgb2YgdXNlcnMgZnJvbSB0aGUgQXBwcyBhbmQgdGVybWluYXRpb24gb2YgcHJvdmlkaW5nIHRoZSBBcHBzDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPkdvb2dsZSBQbGF5IFNlcnZpY2VzPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+VW5pdGVkIFN0YXRlczwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPkRldmljZSBpZGVudGlmaWVycywgYWNjb3VudCBpbmZvcm1hdGlvbjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlJlYWwtdGltZSB0cmFuc21pc3Npb24gZHVyaW5nIEFwcCB1c2FnZTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIEFjY291bnQgYXV0aGVudGljYXRpb24sIGluLWFwcCBwdXJjaGFzZXMsIGFuZCB1c2VyIGFjY2VzcyBtYW5hZ2VtZW50DQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIFVudGlsIHRoZSB3aXRoZHJhd2FsIG9mIHVzZXJzIGZyb20gdGhlIEFwcHMgYW5kIHRlcm1pbmF0aW9uIG9mIHByb3ZpZGluZyB0aGUgQXBwcw0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSB3aWRlIj5BcHBsZSBHYW1lIENlbnRlcjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlVuaXRlZCBTdGF0ZXM8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5HYW1lIHByb2dyZXNzLCBhY2NvdW50IGlkZW50aWZpZXJzPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+UmVhbC10aW1lIHRyYW5zbWlzc2lvbiBkdXJpbmcgQXBwIHVzYWdlPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+U29jaWFsIGdhbWluZyBmZWF0dXJlcywgYWNoaWV2ZW1lbnRzLCBhbmQgbGVhZGVyYm9hcmQgYWNjZXNzPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgVW50aWwgdGhlIHdpdGhkcmF3YWwgb2YgdXNlcnMgZnJvbSB0aGUgQXBwcyBhbmQgdGVybWluYXRpb24gb2YgcHJvdmlkaW5nIHRoZSBBcHBzDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPkdhbWUgQW5hbHl0aWNzPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+RGVubWFyazwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlVzZXJuYW1lLCBJUCBhZGRyZXNzLCBpbi1hcHAgYmVoYXZpb3IgZGF0YTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlJlYWwtdGltZSB0cmFuc21pc3Npb24gZHVyaW5nIEFwcCB1c2FnZTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIFVzZXIgZW5nYWdlbWVudCBhbmFseXNpcywgZ2FtZSBvcHRpbWl6YXRpb24sIGFuZCBleHBlcmllbmNlIGltcHJvdmVtZW50DQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIFVudGlsIHRoZSB3aXRoZHJhd2FsIG9mIHVzZXJzIGZyb20gdGhlIEFwcHMgYW5kIHRlcm1pbmF0aW9uIG9mIHByb3ZpZGluZyB0aGUgQXBwcw0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgPC9saT4NCg0KICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4NCiAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzZWMxMyI+PGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj4xMy4gUHJpdmFjeSBzZWN0aW9uIGZvciB1c2VycyBwbGF5aW5nIEZhc2hpb24gRmFibGU6IERyZXNzIFVwIFN0eWxlPC9oND48L3NlY3Rpb24+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+SWYgeW91IHBsYXkgRmFzaGlvbiBGYWJsZTogRHJlc3MgVXAgU3R5bGUsIHRoaXMgc2VjdGlvbiBhcHBsaWVzIHRvIHlvdS48L3A+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+UGVyc29uYWwgSW5mb3JtYXRpb24gV2UgQ29sbGVjdDwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgV2UgbWF5IGNvbGxlY3QgdGhlIHNhbWUgcGVyc29uYWwgaW5mb3JtYXRpb24gZGV0YWlsZWQgaW4gU2VjdGlvbiAxLCB3aXRoIHRoZSBleGNsdXNpb24gb2YgU2Vuc29yeSBEYXRhLg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkhvdyB3ZSBjb2xsZWN0IHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb248L3A+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgIEluIGFkZGl0aW9uIHRvIHRoZSBtZXRob2RzIGRldGFpbGVkIGluIFNlY3Rpb24gMSwgd2UgbWF5IGNvbGxlY3QgcGVyc29uYWwgZGF0YSBhYm91dCB5b3UgZnJvbSB0aGlyZA0KICAgICAgICAgICAgICBwYXJ0aWVzIGFzIGZvbGxvd3M6DQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj7jg7tGaXJlYmFzZTwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPuODu0dvb2dsZSBQbGF5IFNlcnZpY2VzIChBbmRyb2lkKTwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPuODu0dhbWUgQ2VudGVyIChpT1MpPC9wPg0KICAgICAgICAgIDwvbGk+DQoNCiAgICAgICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9fc3ViSXRlbSI+DQogICAgICAgICAgICA8c2VjdGlvbiBpZD0ic2VjMTQiPjxoNCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCIgaWQ9InNlY3Rpb24xNyI+MTQuIENvbnRhY3RpbmcgQ29jb25lPC9oND48L3NlY3Rpb24+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjLXByaXZhY3lfX3Njcm9sbFdyYXAiPg0KICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGUyQ29sdW1ucyI+DQogICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5Ij4NCiAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zLCBpbnF1aXJlcywgcmVxdWVzdHMsIGNvbW1lbnRzIG9yIGNvbXBsYWludHMgY29uY2VybmluZyB0aGlzIFByaXZhY3kNCiAgICAgICAgICAgICAgICAgICAgICBQb2xpY3kgb3Igb3VyIGluZm9ybWF0aW9uIHByYWN0aWNlcywgcGxlYXNlIGNvbnRhY3QgdXMgYmVsb3cuPHNwYW4NCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIg0KICAgICAgICAgICAgICAgICAgICAgICAgPllvdSBhcmUgdXNpbmc6PC9zcGFuDQogICAgICAgICAgICAgICAgICAgICAgPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5Db250YWN0IEluZm9ybWF0aW9uOjwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90aD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gd2lkZSI+DQogICAgICAgICAgICAgICAgICAgICAgSGVsbG8gU3dlZXQgRGF5czxiciAvPkhlbGxvIEtpdHR5IERyZWFtIFZpbGxhZ2UgKEVuZ2xpc2ggdmVyc2lvbikNCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgQ29jb25lIE9ORSBjb3Jwb3JhdGlvbjxiciAvPjxiciAvPkVtYWlsOjxiciAvPihqYSkNCiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJtYWlsdG86c3VwcG9ydEBzd2VldGRheXMuemVuZGVzay5jb20iDQogICAgICAgICAgICAgICAgICAgICAgICA+c3VwcG9ydEBzd2VldGRheXMuemVuZGVzay5jb208L2ENCiAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+KGVuKQ0KICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Im1haWx0bzpzdXBwb3J0X2VuQHN3ZWV0ZGF5c2dsLnplbmRlc2suY29tIg0KICAgICAgICAgICAgICAgICAgICAgICAgPnN1cHBvcnRfZW5Ac3dlZXRkYXlzZ2wuemVuZGVzay5jb208L2ENCiAgICAgICAgICAgICAgICAgICAgICA+DQogICAgICAgICAgICAgICAgICAgICAgPGJyIC8+PGJyIC8+QWRkcmVzczogNDBGLCBNaWR0b3duIFRvd2VyLCA5LTctMSBBa2FzYWthLCBNaW5hdG8ta3UsIFRva3lvIDEwNy02MjQwLCBKYXBhbg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSB3aWRlIj5MaXZseSBJc2xhbmQ8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBDb2NvbmUgY29ycG9yYXRpb248YnIgLz48YnIgLz5FbWFpbDoNCiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJtYWlsdG86c3VwcG9ydEBsaXZseS56ZW5kZXNrLmNvbSI+c3VwcG9ydEBsaXZseS56ZW5kZXNrLmNvbTwvYQ0KICAgICAgICAgICAgICAgICAgICAgID48YnIgLz48YnIgLz5BZGRyZXNzOiAzLTEtMTggV2FrYWJheWFzaGksIFNldGFnYXlhLWt1LCBUb2t5byAxNTQtMDAyMywgSmFwYW4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gd2lkZSI+TGl2bHkgSXNsYW5kIChLb3JlYSk8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBDb2NvbmUgY29ycG9yYXRpb248YnIgLz48YnIgLz5FbWFpbDoNCiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJtYWlsdG86bGl2bHkta29yLXN1cHBvcnRAY29jb25lLmNvLmpwIg0KICAgICAgICAgICAgICAgICAgICAgICAgPmxpdmx5LWtvci1zdXBwb3J0QGNvY29uZS5jby5qcDwvYQ0KICAgICAgICAgICAgICAgICAgICAgID48YnIgLz48YnIgLz5BZGRyZXNzOiAzLTEtMTggV2FrYWJheWFzaGksIFNldGFnYXlhLWt1LCBUb2t5byAxNTQtMDAyMywgSmFwYW4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gd2lkZSI+UG9ja2V0IHR3aW48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBDb2NvbmUgY29ycG9yYXRpb248YnIgLz48YnIgLz5FbWFpbDoNCiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJtYWlsdG86cG9ja2V0dHdpbi1zdXBwb3J0QGNvY29uZS5jby5qcCINCiAgICAgICAgICAgICAgICAgICAgICAgID5wb2NrZXR0d2luLXN1cHBvcnRAY29jb25lLmNvLmpwPC9hDQogICAgICAgICAgICAgICAgICAgICAgPjxiciAvPjxiciAvPkFkZHJlc3M6IDMtMS0xOCBXYWthYmF5YXNoaSwgU2V0YWdheWEta3UsIFRva3lvIDE1NC0wMDIzLCBKYXBhbg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSB3aWRlIj5Qb2NrZXQgbWluaTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIENvY29uZSBjb3Jwb3JhdGlvbjxiciAvPjxiciAvPkVtYWlsOg0KICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Im1haWx0bzpwb21pX3N1cHBvcnRAY29jb25lLW0uY29tIj5wb21pX3N1cHBvcnRAY29jb25lLW0uY29tPC9hDQogICAgICAgICAgICAgICAgICAgICAgPjxiciAvPjxiciAvPkFkZHJlc3M6IDMtMS0xOCBXYWthYmF5YXNoaSwgU2V0YWdheWEta3UsIFRva3lvIDE1NC0wMDIzLCBKYXBhbg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSB3aWRlIj5BbHRlckVnbyBDaXR5PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgQ29jb25lIFhlbm9uIEluYy48YnIgLz48YnIgLz5FbWFpbDoNCiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJtYWlsdG86c3VwcG9ydEBjZW50ZW5uaWFsLWNpdHkuemVuZGVzay5jb20iDQogICAgICAgICAgICAgICAgICAgICAgICA+c3VwcG9ydEBjZW50ZW5uaWFsLWNpdHkuemVuZGVzay5jb208L2ENCiAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+PGJyIC8+QWRkcmVzczogMTE1IEJyb2Fkd2F5IDNyZCBGbC4gUm9vbSMxNDYsIE5ldyBZb3JrLCBOWSAxMDAwNiwgVVNBDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPlB1cmVuaXN0YSBNOiBEcmVzcy11cCAmIENoYXQ8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBDb2NvbmUgY29ycG9yYXRpb248YnIgLz48YnIgLz5FbWFpbDoNCiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJtYWlsdG86c3VwcG9ydEBwdXJlbmlzdGFtLmNvbSI+c3VwcG9ydEBwdXJlbmlzdGFtLmNvbTwvYQ0KICAgICAgICAgICAgICAgICAgICAgID48YnIgLz48YnIgLz5BZGRyZXNzOiAzLTEtMiBIaWdhc2hpaGllIEhha2F0YS1rdSwgRnVrdW9rYS1zaGksIEZ1a3Vva2Eta2VuIDgxMi0wMDA3LCBKYXBhbg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSB3aWRlIj5WSVZJQlVEUzwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIENvY29uZSBjb3Jwb3JhdGlvbjxiciAvPjxiciAvPkVtYWlsOg0KICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Im1haWx0bzpzdXBwb3J0QHZpdmlidWRzLmNvbSI+c3VwcG9ydEB2aXZpYnVkcy5jb208L2ENCiAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+PGJyIC8+QWRkcmVzczogMy0xLTE4IFdha2FiYXlhc2hpLCBTZXRhZ2F5YS1rdSwgVG9reW8gMTU0LTAwMjMsIEphcGFuDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPkZhc2hpb24gRmFibGU6IERyZXNzIFVwIFN0eWxlPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgQ29jb25lIEV1cm9wZSBPw5w8YnIgLz48YnIgLz5FbWFpbDoNCiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJtYWlsdG86c3VwcG9ydF9ldUBjb2NvbmUuY28uanAiPnN1cHBvcnRfZXVAY29jb25lLmNvLmpwPC9hDQogICAgICAgICAgICAgICAgICAgICAgPjxiciAvPjxiciAvPkFkZHJlc3M6IE1hYWtyaSB0biAyNSwgS2Vza2xpbm5hIGxpbm5hb3NhLCBUYWxsaW5uLCBIYXJqdSBtYWFrb25kLCAxMDE0NSwgRXN0b25pYQ0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgPC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9fc3ViSXRlbSI+DQogICAgICAgICAgICA8c2VjdGlvbiBpZD0ic2VjMTUiPjxoNCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+MTUuIFN0YW5kYXJkcyBBZ2FpbnN0IENoaWxkIFNleHVhbCBBYnVzZSBhbmQgRXhwbG9pdGF0aW9uPC9oND48L3NlY3Rpb24+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgIENvY29uZSBkb2VzIG5vdCBhbGxvdyB1c2VycyB0byBjcmVhdGUgb3IgcG9zdCBjb250ZW50cyBvciBlbmdhZ2UgaW4gYWN0aXZpdGllcyB0aGF0IHNleHVhbGx5IGV4cGxvaXQsDQogICAgICAgICAgICAgIGFidXNlIG9yIGVuZGFuZ2VyIGNoaWxkcmVuLiBXZSByZXBvcnQgYWxsIGlkZW50aWZpZWQgaW5zdGFuY2VzIG9mIHNleHVhbCBleHBsb2l0YXRpb24sIGFidXNlIG9yDQogICAgICAgICAgICAgIGVuZGFuZ2VybWVudCBvZiBhIG1pbm9yIHRvIHRoZSBhcHByb3ByaWF0ZSByZWdpb25hbCBhdXRob3JpdHkuPGJyIC8+DQogICAgICAgICAgICAgIENvY29uZSBhbHNvIHByb2hpYml0cyB1c2VycyBmcm9tIHBvc3Rpbmcgb3Igc2hhcmluZyBhbnkgcG9ybm9ncmFwaGljIGNvbnRlbnQgc3VjaCBhcyBwaG90b3MsIHZpZGVvcywNCiAgICAgICAgICAgICAgaWxsdXN0cmF0aW9ucywgaW1hZ2VzIGFuZCBjb21wdXRlci1nZW5lcmF0ZWQgaW1hZ2VyeSwgaW5jbHVkaW5nIHRob3NlIHRoYXQgZGVwaWN0IGEgbWlub3IgZW5nYWdpbmcgaW4NCiAgICAgICAgICAgICAgc2V4dWFsbHkgZXhwbGljaXQgY29uZHVjdC48YnIgLz4NCiAgICAgICAgICAgICAgVXNlcnMgYXJlIHByb2hpYml0ZWQgZnJvbSBwb3N0aW5nIGNvbnRlbnQgb3IgZW5nYWdpbmcgaW4gaW50ZXJhY3Rpb25zIG9yIGFjdGl2aXRpZXMgdGhhdCBkZXBpY3QsIGVuY291cmFnZQ0KICAgICAgICAgICAgICBvciBwcm9tb3RlIHNleHVhbCBhYnVzZSBhbmQgZXhwbG9pdGF0aW9uIG9mIGNoaWxkcmVuLCBpbmNsdWRpbmcgcmVhbCBodW1hbiBjaGlsZHJlbiBhcyB3ZWxsIGFzIG5vbi1yZWFsDQogICAgICAgICAgICAgIGRlcGljdGlvbnMgb2YgY2hpbGRyZW4gc3VjaCBhcyBhdmF0YXJzLCBjaGFyYWN0ZXJzIG9yIG90aGVyIGZvcm1zIG9mIGFydCBvciBBSS1nZW5lcmF0ZWQgY29udGVudC48YnIgLz4NCiAgICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICAgIEV4YW1wbGVzIG9mIGNoaWxkIHNleHVhbCBhYnVzZSBhbmQgZXhwbG9pdGF0aW9uIHRoYXQgYXJlIHByb2hpYml0ZWQgaW5jbHVkZTo8YnIgLz4NCiAgICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICAgIOODu0luYXBwcm9wcmlhdGUgaW50ZXJhY3Rpb24gdGFyZ2V0ZWQgYXQgYSBjaGlsZCBzdWNoIGFzIGdyb3Bpbmcgb3IgY2FyZXNzaW5nLjxiciAvPg0KICAgICAgICAgICAgICDjg7tDaGlsZCBncm9vbWluZywgc3VjaCBhcyBiZWZyaWVuZGluZyBhIGNoaWxkIG9ubGluZSB0byBmYWNpbGl0YXRlLCBlaXRoZXIgb25saW5lIG9yIG9mZmxpbmUsIHNleHVhbA0KICAgICAgICAgICAgICBjb250YWN0IGFuZC9vciBleGNoYW5naW5nIHNleHVhbCBpbWFnZXJ5IHdpdGggdGhhdCBjaGlsZC48YnIgLz4NCiAgICAgICAgICAgICAg44O7U2V4dWFsaXphdGlvbiBvZiBhIG1pbm9yLCBzdWNoIGFzIGltYWdlcnkgdGhhdCBkZXBpY3RzLCBlbmNvdXJhZ2VzIG9yIHByb21vdGVzIHRoZSBzZXh1YWwgYWJ1c2Ugb2YNCiAgICAgICAgICAgICAgY2hpbGRyZW4gb3IgdGhlIHBvcnRyYXlhbCBvZiBjaGlsZHJlbiBpbiBhIG1hbm5lciB0aGF0IGNvdWxkIHJlc3VsdCBpbiB0aGUgc2V4dWFsIGV4cGxvaXRhdGlvbiBvZg0KICAgICAgICAgICAgICBjaGlsZHJlbi48YnIgLz4NCiAgICAgICAgICAgICAg44O7U2V4dG9ydGlvbiwgc3VjaCBhcyB0aHJlYXRlbmluZyBvciBibGFja21haWxpbmcgYSBjaGlsZCBieSB1c2luZyByZWFsIG9yIGFsbGVnZWQgYWNjZXNzIHRvIGEgY2hpbGTigJlzDQogICAgICAgICAgICAgIGludGltYXRlIGltYWdlcy48YnIgLz4NCiAgICAgICAgICAgICAg44O7VHJhZmZpY2tpbmcgb2YgYSBjaGlsZCwgc3VjaCBhcyBhZHZlcnRpc2luZyBvciBzb2xpY2l0YXRpb24gb2YgYSBjaGlsZCBmb3IgY29tbWVyY2lhbCBzZXh1YWwNCiAgICAgICAgICAgICAgZXhwbG9pdGF0aW9uLjxiciAvPg0KICAgICAgICAgICAgICA8YnIgLz4NCiAgICAgICAgICAgICAgVXNlcnMgYXJlIGFsc28gcHJvaGliaXRlZCBmcm9tIHBvc3RpbmcgY29udGVudCBvciBlbmdhZ2luZyBpbiBpbnRlcmFjdGlvbnMgb3IgYWN0aXZpdGllcyB0aGF0IGRlcGljdCwNCiAgICAgICAgICAgICAgZW5jb3VyYWdlIG9yIHByb21vdGUgZXhjZXNzaXZlIHZpb2xlbmNlLCBibG9vZCBhbmQgZ29yZSwgaGFybWZ1bCBhbmQgZGFuZ2Vyb3VzIGFjdGl2aXRpZXMgYXMgd2VsbCBhcw0KICAgICAgICAgICAgICBuZWdhdGl2ZSBib2R5IG9yIHNlbGYtaW1hZ2UuPGJyIC8+DQogICAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgICBVc2VycyBzaG91bGQgcmVwb3J0IGFueSBpbmFwcHJvcHJpYXRlIGNvbnRlbnQgdGhleSBlbmNvdW50ZXIgdGhyb3VnaA0KICAgICAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJtYWlsdG86bWxfY2hpbGRfc2FmZXR5QGNvY29uZS5jby5qcCI+bWxfY2hpbGRfc2FmZXR5QGNvY29uZS5jby5qcDwvYT4NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICA8L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4NCiAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzZWMxNiI+PGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj4xNi4gQ2hpbGRyZW7igJlzIFByaXZhY3kgUG9saWN5IGZvciBQZXRLYXJ0PC9oND48L3NlY3Rpb24+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+VGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBob3cgd2UgY29sbGVjdCwgdXNlLCBhbmQgc2hhcmUgcGVyc29uYWwgaW5mb3JtYXRpb24gZnJvbSBvciBhYm91dCBjaGlsZHJlbiB1bmRlciB0aGUgYWdlIG9mIDEzIGluIGNvbm5lY3Rpb24gd2l0aCBQZXRLYXJ0LjwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij5XaGVuIGEgY2hpbGQgdXNlcyBQZXRLYXJ0LCB3ZSBtYXkgY29sbGVjdCB0aGUgZm9sbG93aW5nIGNhdGVnb3JpZXMgb2YgcGVyc29uYWwgaW5mb3JtYXRpb246PC9wPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+DQogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj7jg7tBcHBzIFByb2ZpbGUgZGF0YTo8L3NwYW4+IFlvdXIgdXNlcm5hbWUsIHlvdXIgYXZhdGFyLCBpbnRlcmVzdHMgYW5kIHByZWZlcmVuY2VzLjwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPjxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj7jg7tUZWNobmljYWwgYW5kIFVzYWdlIERhdGEvTmV0d29ya2luZyBBY3Rpdml0eTo8L3NwYW4+IGluY2x1ZGluZzo8L3A+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+44O7RGV0YWlscyBvZiB5b3VyIHZpc2l0cyB0byBhbmQgYWN0aW9ucyBpbiBQZXRLYXJ0LCBpbmNsdWRpbmcgdHJhZmZpYyBkYXRhLCBsb2NhdGlvbiBkYXRhLCBsb2dzIGFuZCBvdGhlciBjb21tdW5pY2F0aW9uIGRhdGEsIHRoZSByZXNvdXJjZXMgdGhhdCB5b3UgYWNjZXNzLCBhbmQgeW91ciB1c2Ugb2YgUGV0S2FydC48L3A+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+44O7SW5mb3JtYXRpb24gYWJvdXQgeW91ciBkZXZpY2UgYW5kIGludGVybmV0IGNvbm5lY3Rpb24sIGluY2x1ZGluZyBhcyBhcHBsaWNhYmxlLCB5b3VyIElQIGFkZHJlc3MgdGhyb3VnaCB3aGljaCB5b3UgYWNjZXNzIFBldEthcnQsIG9wZXJhdGluZyBzeXN0ZW0sIGJyb3dzZXIgdHlwZSwgbW9iaWxlIG5ldHdvcmsgaW5mb3JtYXRpb24sIGxvY2F0aW9uLCB0aW1lIHpvbmUsIHRoZSB1bmlxdWUgbW9iaWxlIGRldmljZSBJRCBvciB2aXJ0dWFsIHVuaXF1ZSBkZXZpY2UgaWRlbnRpZmllciBmb3IgYW55IG1vYmlsZSBkZXZpY2UgdXNlZCB0byBhY2Nlc3MgeW91ciBhY2NvdW50LjwvcD4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj7jg7tNZXRhZGF0YSBhbmQgb3RoZXIgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGZpbGVzIHN0b3JlZCBvbiB5b3VyIGRldmljZS48L3A+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+44O7SW5mb3JtYXRpb24gYWJvdXQgeW91ciBpbnRlcm5ldCBjb25uZWN0aW9uLCB0aGUgZGV2aWNlIHlvdSB1c2UgdG8gYWNjZXNzIFBldEthcnQsIGFuZCByZWxhdGVkIHVzYWdlIGRldGFpbHMuPC9wPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+PHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPuODu1RyYW5zYWN0aW9uIGRhdGE6PC9zcGFuPiBEZXRhaWxzIG9mIHRyYW5zYWN0aW9ucyB5b3UgY2Fycnkgb3V0IHRocm91Z2ggUGV0S2FydCB1c2luZyBpbi1nYW1lIGN1cnJlbmN5LjwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPjxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj7jg7tBdXRvbWF0aWMgRGF0YS1Db2xsZWN0aW9uIFRlY2hub2xvZ2llcyAgPC9zcGFuPjwvcD4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+V2hlbiB5b3UgYWNjZXNzIGFuZCB1c2UgUGV0S2FydCwgd2Ugd2lsbCBjb2xsZWN0IHJlc2V0dGFibGUgZGV2aWNlIGlkZW50aWZpZXJzLiBSZXNldHRhYmxlIGRldmljZSBpZGVudGlmaWVycyBjYW4gYmUgdXNlZCBsaWtlIGNvb2tpZXMgYW5kIGFyZSBmb3VuZCBvbiBtYW55IG1vYmlsZSBkZXZpY2VzIGFuZCB0YWJsZXRzIChmb3IgZXhhbXBsZSwgdGhlIOKAnElkZW50aWZpZXIgZm9yIEFkdmVydGlzZXJz4oCdIG9uIEFwcGxlIGlPUyBkZXZpY2VzIGFuZCB0aGUg4oCcR29vZ2xlIEFkdmVydGlzaW5nIElE4oCdIG9uIEFuZHJvaWQgZGV2aWNlcykuIFJlc2V0dGFibGUgZGV2aWNlIGlkZW50aWZpZXJzIGFyZSB1c2VkIHRvIG1ha2Ugb25saW5lIGFkdmVydGlzaW5nIG1vcmUgcmVsZXZhbnQsIGFuZCBmb3IgYW5hbHl0aWNzIGFuZCBvcHRpbWl6YXRpb24gcHVycG9zZXMuPC9wPjxiciAvPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij5XZSBkbyBub3Qga25vd2luZ2x5IGNvbGxlY3QgcmVhbCBuYW1lcywgaG9tZSBhZGRyZXNzZXMsIHBob25lIG51bWJlciwgcGhvdG9ncmFwaHMsIG9yIGFueSBvdGhlciBkaXJlY3RseSBpZGVudGlmeWluZyBpbmZvcm1hdGlvbiBmcm9tIGNoaWxkcmVuIGJleW9uZCB3aGF0IGlzIGxpc3RlZCBhYm92ZS4gV2UgY29sbGVjdCBvbmx5IHRoZSBtaW5pbXVtIGluZm9ybWF0aW9uIG5lY2Vzc2FyeSB0byBwcm92aWRlIHRoZSBTZXJ2aWNlLjwvcD48YnIgLz4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+PHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkhvdyBXZSBVc2UgWW91ciBQZXJzb25hbCBJbmZvcm1hdGlvbjwvc3Bhbj48YnIgLz5XZSB1c2UgcGVyc29uYWwgaW5mb3JtYXRpb24gdGhhdCB3ZSBjb2xsZWN0IGFib3V0IHlvdSBvciB0aGF0IHlvdSBwcm92aWRlIHRvIHVzIGZvciB0aGUgcHVycG9zZXMgc2V0IG91dCBpbiB0aGlzIHNlY3Rpb24uIDwvcD4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+44O7VG8gcHJvdmlkZSB5b3Ugd2l0aCBQZXRLYXJ0OzwvcD4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+44O7VG8gcHJvY2VzcyB5b3VyIHJlZ2lzdHJhdGlvbiBhbmQgdG8gaWRlbnRpZnkgeW91IHdoZW4geW91IGxvZyBpbnRvIHlvdXIgYWNjb3VudDs8L3A+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPuODu1RvIGRldGVjdCwgcHJldmVudCwgYW5kIHJlc3BvbmQgdG8gdW5hdXRob3JpemVkIGFjY2VzcywgYW5kIG90aGVyIHNlY3VyaXR5IHRocmVhdHM7PC9wPg0KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj7jg7tUbyBpZGVudGlmeSBhbmQgcmVzb2x2ZSB0ZWNobmljYWwgYnVncywgY3Jhc2hlcywgYW5kIHNlcnZpY2UgZGlzcnVwdGlvbnM7PC9wPg0KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj7jg7tUbyBtZWFzdXJlIGFnZ3JlZ2F0ZSBwZXJmb3JtYW5jZSBpbmRpY2F0b3JzLiBUaGlzIGFuYWx5c2lzIGlzIHVzZWQgc29sZWx5IGZvciBpbnRlcm5hbCBpbXByb3ZlbWVudC48L3A+DQogICAgICAgICAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5QYXJlbnRhbCBDb25zZW50PC9wPg0KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+V2Ugd2lsbCBub3Qga25vd2luZ2x5IGNvbGxlY3QgcGVyc29uYWwgaW5mb3JtYXRpb24gZnJvbSBhIGNoaWxkIHVuZGVyIDEzIHdpdGhvdXQgZmlyc3QgcHJvdmlkaW5nIG5vdGljZSB0byB0aGUgY2hpbGTigJlzIHBhcmVudCBvciBndWFyZGlhbiwgd2hlcmUgcmVxdWlyZWQsIGFuZCBvYnRhaW5pbmcgdmVyaWZpYWJsZSBwYXJlbnRhbCBjb25zZW50LjwvcD48YnIgLz4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPldoZXJlIFBldEthcnQgcmVxdWlyZXMgYWNjb3VudCBjcmVhdGlvbiBmb3IgYSBjaGlsZCwgd2Ugd2lsbDo8L3A+DQogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj7jg7tOb3RpZnkgdGhlIHBhcmVudCBvciBndWFyZGlhbiBieSBlbWFpbCwgZXhwbGFpbmluZyB3aGF0IGluZm9ybWF0aW9uIHdlIGNvbGxlY3QgYW5kIGhvdyB3ZSB1c2UgaXQuPC9wPiAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj7jg7tQcm92aWRlIHRoZSBwYXJlbnQgb3IgZ3VhcmRpYW4gd2l0aCB0aGUgYWJpbGl0eSB0byBjb25zZW50IHRvIG91ciBjb2xsZWN0aW9uIGFuZCB1c2Ugb2YgdGhlIGNoaWxkJ3MgaW5mb3JtYXRpb24uPC9wPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+44O7UmVmcmFpbiBmcm9tIGNvbGxlY3RpbmcgcGVyc29uYWwgaW5mb3JtYXRpb24gaWYgY29uc2VudCBpcyBub3QgcHJvdmlkZWQgd2l0aGluIGEgcmVhc29uYWJsZSB0aW1lLjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPiAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+SG93IFdlIFNoYXJlIFlvdXIgSW5mb3JtYXRpb248L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDxiciAvPldlIG1heSBkaXNjbG9zZSBwZXJzb25hbCBpbmZvcm1hdGlvbiB0aGF0IHdlIGNvbGxlY3QsIG9yIHlvdSBwcm92aWRlIGFzIGRlc2NyaWJlZCBpbiB0aGlzIHNlY3Rpb246PC9wPiANCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPlRvIFplbmRlc2sgZm9yIGhhbmRsaW5nIHVzZXIgaW5xdWlyaWVzIGFuZCBzdXBwb3J0OzwvcD4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPlRvIEJyYXplIGZvciBtYXJrZXRpbmcgYWN0aXZpdGllczs8L3A+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij5UbyBGaXJlYmFzZSAoR29vZ2xlKSBmb3IgQXBwIGFuYWx5dGljcywgcXVhbGl0eSBpbXByb3ZlbWVudDsgYW5kPC9wPg0KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+VG8gR29vZ2xlL0FwcGxlIGZvciBsb2dpbiBhdXRoZW50aWNhdGlvbi48L3A+DQogICAgICAgICAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+SG93IFdlIFByb3RlY3QgQ2hpbGRyZW7igJlzIEluZm9ybWF0aW9uPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICBXZSB0YWtlIHRoZSBzZWN1cml0eSBvZiBjaGlsZHJlbidzIHBlcnNvbmFsIGluZm9ybWF0aW9uIHNlcmlvdXNseSBhbmQgaW1wbGVtZW50IHRlY2huaWNhbCBhbmQgb3JnYW5pemF0aW9uYWwgbWVhc3VyZXMgdG8gcHJvdGVjdCBpdC4gSWYgeW91IGJlbGlldmUgeW91ciBjaGlsZCdzIGluZm9ybWF0aW9uIGhhcyBiZWVuIGNvbXByb21pc2VkLCBwbGVhc2UgY29udGFjdCB1cyBpbW1lZGlhdGVseSBhdCA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJtYWlsdG86cGV0a2FydF9zdXBwb3J0X2VuLXVzQGNvY29uZS5jby5qcCI+cGV0a2FydF9zdXBwb3J0X2VuLXVzQGNvY29uZS5jby5qcDwvYT48L3A+DQogICAgICAgICAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+RGF0YSBSZXRlbnRpb248L3NwYW4+PGJyIC8+DQogICAgICAgICAgICAgICAgICAgIFdlIHJldGFpbiBjaGlsZHJlbuKAmXMgcGVyc29uYWwgaW5mb3JtYXRpb24gb25seSBmb3IgYXMgbG9uZyBhcyBpcyBuZWNlc3NhcnkgdG8gZnVsZmlsIHRoZSBwdXJwb3NlcyBkZXNjcmliZWQgaW4gdGhpcyBzZWN0aW9uLCBvciBhcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdy48L3A+DQogICAgICAgICAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+UGFyZW50cyBSaWdodHMgYW5kIENvbnRyb2xzPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8YnIgLz5QYXJlbnRzIGFuZCBndWFyZGlhbnMgaGF2ZSB0aGUgZm9sbG93aW5nIHJpZ2h0cyB3aXRoIHJlc3BlY3QgdG8gdGhlaXIgY2hpbGQncyBwZXJzb25hbCBpbmZvcm1hdGlvbjo8L3A+DQogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj7jg7tSaWdodCB0byBSZXZpZXc6ICBQYXJlbnRzIGFuZCBndWFyZGlhbnMgbWF5IHJlcXVlc3QgYSBjb3B5IG9mIHRoZSBwZXJzb25hbCBpbmZvcm1hdGlvbiB3ZSBoYXZlIGNvbGxlY3RlZCBmcm9tIHlvdXIgY2hpbGQuPC9wPiAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj7jg7tSaWdodCB0byBDb3JyZWN0OiAgUGFyZW50cyBhbmQgZ3VhcmRpYW5zIG1heSByZXF1ZXN0IHRoYXQgaW5hY2N1cmF0ZSBpbmZvcm1hdGlvbiBiZSBjb3JyZWN0ZWQuPC9wPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+44O7UmlnaHQgdG8gRGVsZXRlOiAgUGFyZW50cyBhbmQgZ3VhcmRpYW5zIG1heSByZXF1ZXN0IHRoYXQgd2UgZGVsZXRlIHlvdXIgY2hpbGQncyBwZXJzb25hbCBpbmZvcm1hdGlvbi4gUGxlYXNlIG5vdGUgdGhhdCBkZWxldGlvbiBtYXkgcmVzdWx0IGluIHRoZSBjaGlsZCdzIGFjY291bnQgb3IgY2VydGFpbiBmZWF0dXJlcyBiZWluZyB1bmF2YWlsYWJsZS48L3A+DQogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj7jg7tSaWdodCB0byBXaXRoZHJhdyBDb25zZW50OiAgUGFyZW50cyBhbmQgZ3VhcmRpYW5zIG1heSB3aXRoZHJhdyBjb25zZW50IGZvciBvdXIgY29udGludWVkIGNvbGxlY3Rpb24gYW5kIHVzZSBvZiB5b3VyIGNoaWxkJ3MgaW5mb3JtYXRpb24uPC9wPjxiciAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPlRvIGV4ZXJjaXNlIGFueSBvZiB0aGVzZSByaWdodHMsIHBsZWFzZSBjb250YWN0IHVzOiA8L3A+PGJyIC8+DQogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+Q29jb25lIFhlbm9uIEluYy4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPkVtYWlsOiA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJtYWlsdG86cGV0a2FydF9zdXBwb3J0X2VuLXVzQGNvY29uZS5jby5qcCI+cGV0a2FydF9zdXBwb3J0X2VuLXVzQGNvY29uZS5jby5qcDwvYT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPkFkZHJlc3M6IDExNSBCcm9hZHdheSwgM3JkIEZsLiBSb29tIzE0NiwgTmV3IFlvcmssIE5ZIDEwMDA2LCBVU0EgPC9wPiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgPC9saT4NCiAgICAgICAgPC9vbD4NCiAgICAgIDwvbGk+DQogICAgPC9vbD4NCiAgPC9kaXY+DQogIDxkaXYgY2xhc3M9ImMtYXJ0aWNsZV9fbGlua2FyZWEiPg0KICAgIDxhIGhyZWY9Ii9lbi8iIGNsYXNzPSJjLWJ1dHRvbi0tdG9uYWwgYy1idXR0b24tLXRvbmFsLS1iYWNrIj4NCiAgICA8c3BhbiBjbGFzcz0iYy1idXR0b25fX2hvbGUgYy1idXR0b25fX2hvbGUtLWJhY2siPg0KICAgICAgPHNwYW4gY2xhc3M9ImMtYnV0dG9uX19pY29ucyBjLWJ1dHRvbl9faWNvbnMtLWJhY2siPjwvc3Bhbj4NCiAgICA8L3NwYW4+DQogICAgPHNwYW4gY2xhc3M9ImMtYnV0dG9uX19sYWJlbCI+SE9NRTwvc3Bhbj4NCiAgICA8L2E+DQogIDwvZGl2PiAgDQpzdGF0ZXNhdmVkQXRzdGF0ZXNhdmVkQnkFBwgECAQIBggFHAgHIBgIBwgGCA4IDggLSAEEDB8JCAYIBw8ECgcGCwUHhfcKBQcFBxEBBAAAAQAAAAEGAAIBAAAIAQdCAQEAQQAAB0ECjdQJQRACHgB9AXcTMjAyMy0wOS0yNVQxODozMzo0M3cPc2VydmljZS1wcml2YWN5dwdwdWJsaXNofYH6qIEBfQB3BmNsb3NlZHcGY2xvc2VkdwB5eXcAdyQ0OGNkZTcxZC1mYzNiLTQ5ZTktYTRmMy0yMDAwZTAwZmZlZjh4d4vsBDxkaXYgY2xhc3M9ImMtcHJpdmFjeV9fY29udGFpbmVyIj4KICA8ZGl2IGNsYXNzPSJjLXByaXZhY3lfX2RhdGUiPgogICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9fZGF0ZVRleHQiPkxhc3QgVXBkYXRlZDogNiAvIDEgLyAyMDI1PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImMtcHJpdmFjeV9fYmxvY2siPgogICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlRhYmxlIG9mIENvbnRlbnRzPC9wPgogICAgPG9sIGNsYXNzPSJjLXByaXZhY3lfX2xpc3QiPgogICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9faXRlbSI+CiAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+SW50cm9kdWN0aW9uPC9wPgogICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPkNoYW5nZXMgdG8gT3VyIFByaXZhY3kgUG9saWN5PC9wPgogICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPjEuIEluZm9ybWF0aW9uIFdlIENvbGxlY3QgYW5kIEhvdyBXZSBDb2xsZWN0IEl0PC9wPgogICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPjIuIEhvdyBXZSBVc2UgWW91ciBQZXJzb25hbCBJbmZvcm1hdGlvbjwvcD4KICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj4zLiBIb3cgTG9uZyBXZSBLZWVwIFlvdXIgSW5mb3JtYXRpb248L3A+CiAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+NC4gSG93IFdlIFNoYXJlIFlvdXIgSW5mb3JtYXRpb248L3A+CiAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+NS4gQ2hpbGRyZW7igJlzIFByaXZhY3k8L3A+CiAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+Ni4gSG93IFdlIFByb3RlY3QgWW91ciBJbmZvcm1hdGlvbjwvcD4KICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj43LiBIb3cgWW91IE1heSBDaGFuZ2UsIFJlbW92ZSwgb3IgRXhwb3J0IFlvdXIgSW5mb3JtYXRpb248L3A+CiAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+OC4gTGlua3MgdG8gVGhpcmQtUGFydHkgV2Vic2l0ZXMgYW5kIFNlcnZpY2VzPC9wPgogICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPjkuIE5vbi1VLlMuIFVzZXJzPC9wPgogICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPgogICAgICAgICAgMTAuIFByaXZhY3kgU2VjdGlvbiBmb3IgVXNlcnMgZnJvbSB0aGUgVUssIEVFQSBhbmQgU3dpdHplcmxhbmQKICAgICAgICA8L3A+CiAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+MTEuIFByaXZhY3kgU2VjdGlvbiBmb3IgVXNlcnMgZnJvbSB0aGUgVS5TLjwvcD4KICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj4xMi4gUHJpdmFjeSBTZWN0aW9uIGZvciBVc2VycyBmcm9tIHRoZSBSZXB1YmxpYyBvZiBLb3JlYTwvcD4KICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj4KICAgICAgICAgIDEzLiBQcml2YWN5IFNlY3Rpb24gZm9yIFVzZXJzIFBsYXlpbmcgRmFzaGlvbiBGYWJsZTogRHJlc3MgVXAgU3R5bGUKICAgICAgICA8L3A+CiAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+MTQuIENvbnRhY3RpbmcgQ29jb25lPC9wPgogICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPjE1LiBTdGFuZGFyZHMgQWdhaW5zdCBDaGlsZCBTZXh1YWwgQWJ1c2UgYW5kIEV4cGxvaXRhdGlvbjwvcD4KICAgICAgPC9saT4KICAgIDwvb2w+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iYy1wcml2YWN5X19ibG9jayI+CiAgICA8b2wgY2xhc3M9ImMtcHJpdmFjeV9fbGlzdCI+CiAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19pdGVtIj4KICAgICAgICA8aDIgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRpdGxlIj5JbnRyb2R1Y3Rpb248L2gyPgogICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgIENvY29uZSByZXNwZWN0cyB5b3VyIHByaXZhY3ksIGFuZCB3ZSBhcmUgY29tbWl0dGVkIHRvIHByb3RlY3RpbmcgaXQgdGhyb3VnaCB0aGlzIFByaXZhY3kgUG9saWN5LjxiciAvPgogICAgICAgICAgQXMgdXNlZCBpbiB0aGlzIFByaXZhY3kgUG9saWN5LCDigJw8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Q29jb25lPC9zcGFuPuKAnSwg4oCcPHNwYW4KICAgICAgICAgICAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiCiAgICAgICAgICAgID53ZTwvc3BhbgogICAgICAgICAgPuKAnSwg4oCcPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPnVzPC9zcGFuPuKAnSwgb3Ig4oCcPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPm91cjwvc3BhbgogICAgICAgICAgPuKAnSByZWZlciB0byBDb2NvbmUgT05FIGNvcnBvcmF0aW9uIGFuZCBpdHMgc3Vic2lkaWFyeSBvciBhZmZpbGlhdGVkIGVudGl0eSB0aGF0IGlzIHBhcnQgb2YgQ29jb25lIE9ORQogICAgICAgICAgY29ycG9yYXRpb24uPGJyIC8+CiAgICAgICAgICBUaGlzIFByaXZhY3kgUG9saWN5IGRlc2NyaWJlcyB0aGUgdHlwZXMgb2YgcGVyc29uYWwgaW5mb3JtYXRpb24gd2UgY29sbGVjdCBmcm9tIHlvdSwgdGhhdCB3ZSBtYXkgcmVjZWl2ZSBmcm9tCiAgICAgICAgICB0aGlyZCBwYXJ0aWVzIG9yIHlvdXIgY29udGFjdHMgb3IgdGhhdCB5b3UgbWF5IHByb3ZpZGUgd2hlbiB5b3UgdXNlIENvY29uZeKAmXMgYXBwbGljYXRpb25zIGZvciBtb2JpbGUgZGV2aWNlcwogICAgICAgICAgKHRoZSDigJw8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+QXBwczwvc3Bhbj7igJ0pLjxiciAvPgogICAgICAgICAgUGxlYXNlIGZhbWlsaWFyaXplIHlvdXJzZWxmIHdpdGggb3VyIHByaXZhY3kgcHJhY3RpY2VzIGFuZCBjb250YWN0IHVzIGFzIGRlc2NyaWJlZCBiZWxvdyBpbgogICAgICAgICAgPGEgY2xhc3M9ImMtdGV4dExpbmsgLXJlZCIgaHJlZj0iI3NlY3Rpb24xNyI+U2VjdGlvbiAxNCDigJMgQ29udGFjdGluZyBDb2NvbmU8L2E+IGlmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMuPGJyIC8+CiAgICAgICAgICBUaGlzIFByaXZhY3kgUG9saWN5IGFwcGxpZXMgdG8gdGhlIHBlcnNvbmFsIGluZm9ybWF0aW9uIHdlIGNvbGxlY3Q6CiAgICAgICAgPC9wPgogICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPuODu1Rocm91Z2ggdGhlIEFwcHM7IGFuZDwvcD4KICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4KICAgICAgICAgIOODu0J5IGVtYWlsLCB0ZXh0LCBhbmQgb3RoZXIgY29tbXVuaWNhdGlvbnMgYmV0d2VlbiB5b3UgYW5kIHVzIGFuZC9vciB0aGUgQXBwcy4KICAgICAgICA8L3A+CiAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgSXQgZG9lcyBub3QgYXBwbHkgdG8gaW5mb3JtYXRpb24gY29sbGVjdGVkIGJ5IGFueSB0aGlyZCBwYXJ0eSAoaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBvdXIgYWZmaWxpYXRlcyBhbmQKICAgICAgICAgIHN1YnNpZGlhcmllcyksIGluY2x1ZGluZyB0aHJvdWdoIGFueSBhcHBsaWNhdGlvbiBvciBjb250ZW50IChpbmNsdWRpbmcgYWR2ZXJ0aXNpbmcpIHRoYXQgbWF5IGxpbmsgdG8gb3IgYmUKICAgICAgICAgIGFjY2Vzc2libGUgZnJvbSBvciBvbiB0aGUgQXBwcy48YnIgLz5QbGVhc2UgcmVhZCB0aGlzIFByaXZhY3kgUG9saWN5IGNhcmVmdWxseSB0byB1bmRlcnN0YW5kIG91ciBwb2xpY2llcyBhbmQKICAgICAgICAgIHByYWN0aWNlcyByZWdhcmRpbmcgeW91ciBpbmZvcm1hdGlvbiBhbmQgaG93IHdlIHdpbGwgaGFuZGxlIHlvdXIgaW5mb3JtYXRpb24uCiAgICAgICAgPC9wPgogICAgICA8L2xpPgogICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9faXRlbSI+CiAgICAgICAgPGgyIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UaXRsZSI+Q2hhbmdlcyB0byBPdXIgUHJpdmFjeSBQb2xpY3k8L2gyPgogICAgICAgIDxvbCBjbGFzcz0iYy1wcml2YWN5X19zdWJMaXN0Ij4KICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgIFRoaXMgUHJpdmFjeSBQb2xpY3kgbWF5IGNoYW5nZSBmcm9tIHRpbWUgdG8gdGltZSBzbyBwbGVhc2UgY2hlY2sgdGhpcyBQcml2YWN5IFBvbGljeSBwZXJpb2RpY2FsbHkgZm9yCiAgICAgICAgICAgICAgdXBkYXRlcy48YnIgLz4KICAgICAgICAgICAgICBJZiB3ZSBtYWtlIG1hdGVyaWFsIGNoYW5nZXMgdG8gaG93IHdlIHRyZWF0IG91ciB1c2Vyc+KAmSBwZXJzb25hbCBpbmZvcm1hdGlvbiwgd2Ugd2lsbCBub3RpZnkgeW91IHRocm91Z2ggYQogICAgICAgICAgICAgIG5vdGljZSBpbiB0aGUgQXBwcy4gVGhlIGRhdGUgdGhpcyBQcml2YWN5IFBvbGljeSB3YXMgbGFzdCB1cGRhdGVkIGlzIGlkZW50aWZpZWQgYXQgdGhlIHRvcCBvZiB0aGUgZmlyc3QKICAgICAgICAgICAgICBwYWdlIG9mIHRoaXMgUHJpdmFjeSBQb2xpY3kuIFVubGVzcyBvdGhlcndpc2Ugc3RpcHVsYXRlZCB1bmRlciBhcHBsaWNhYmxlIGxhdywgeW91IGFyZSByZXNwb25zaWJsZSBmb3IKICAgICAgICAgICAgICBlbnN1cmluZyB5b3UgcGVyaW9kaWNhbGx5IHZpc2l0IHRoaXMgUHJpdmFjeSBQb2xpY3kgdG8gY2hlY2sgZm9yIGFueSBjaGFuZ2VzLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPgogICAgICAgICAgICA8aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPgogICAgICAgICAgICAgIDEuIEluZm9ybWF0aW9uIFdlIENvbGxlY3QgYW5kIEhvdyBXZSBDb2xsZWN0IEl0PGJyIC8+UGVyc29uYWwgSW5mb3JtYXRpb24gV2UgQ29sbGVjdAogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+CiAgICAgICAgICAgICAgV2hlbiB3ZSB0YWxrIGFib3V0IHBlcnNvbmFsIGluZm9ybWF0aW9uIChvciBwZXJzb25hbCBkYXRhKSB3ZSBtZWFuIGFueSBpbmZvcm1hdGlvbiB0aGF0IHJlbGF0ZXMgdG8gYW4KICAgICAgICAgICAgICBpZGVudGlmaWVkIG9yIGlkZW50aWZpYWJsZSBsaXZpbmcgaW5kaXZpZHVhbC4gVGhlIHBlcnNvbmFsIGluZm9ybWF0aW9uIHdlIG1heSBjb2xsZWN0IGFuZCBwcm9jZXNzIGFib3V0CiAgICAgICAgICAgICAgeW91IHdpdGhpbiB0aGUgbGFzdCB0d2VsdmUgKDEyKSBtb250aHMgaW5jbHVkZToKICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8dWwgY2xhc3M9ImMtcHJpdmFjeV9fc3ViTGlzdCI+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj7jg7tSZWdpc3RyYXRpb24gRGF0YS9JZGVudGlmaWVyczo8L3NwYW4+IEVtYWlsIGFkZHJlc3MKICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+44O7U2Vuc29yeSBkYXRhOjwvc3Bhbj4gUGhvdG9zLCB2aWRlb3Mgb3IgcmVjb3JkaW5ncyBvZiBhCiAgICAgICAgICAgICAgICAgIHVzZXLigJlzIGVudmlyb25tZW50CiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPuODu0FwcHMgUHJvZmlsZSBkYXRhOjwvc3Bhbj4gWW91ciB1c2VybmFtZSwgeW91ciBhdmF0YXIsCiAgICAgICAgICAgICAgICAgIGludGVyZXN0cyBhbmQgcHJlZmVyZW5jZXMuCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPuODu1RlY2huaWNhbCBhbmQgVXNhZ2UgRGF0YS9OZXR3b3JraW5nIEFjdGl2aXR5Ojwvc3Bhbj4KICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nOgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+CiAgICAgICAgICAgICAgICAgIOODu0RldGFpbHMgb2YgeW91ciB2aXNpdHMgdG8gYW5kIGFjdGlvbnMgaW4gdGhlIEFwcHMsIGluY2x1ZGluZyB0cmFmZmljIGRhdGEsIGxvY2F0aW9uIGRhdGEsIGxvZ3MgYW5kCiAgICAgICAgICAgICAgICAgIG90aGVyIGNvbW11bmljYXRpb24gZGF0YSwgdGhlIHJlc291cmNlcyB0aGF0IHlvdSBhY2Nlc3MsIGFuZCB5b3VyIHVzZSBvZiB0aGUgQXBwcy4KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPgogICAgICAgICAgICAgICAgICDjg7tJbmZvcm1hdGlvbiBhYm91dCB5b3VyIGRldmljZSBhbmQgaW50ZXJuZXQgY29ubmVjdGlvbiwgaW5jbHVkaW5nIGFzIGFwcGxpY2FibGUsIHlvdXIgSVAgYWRkcmVzcwogICAgICAgICAgICAgICAgICB0aHJvdWdoIHdoaWNoIHlvdSBhY2Nlc3MgdGhlIEFwcHMsIG9wZXJhdGluZyBzeXN0ZW0sIGJyb3dzZXIgdHlwZSwgbW9iaWxlIG5ldHdvcmsgaW5mb3JtYXRpb24sCiAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLCB0aW1lIHpvbmUsIHRoZSB1bmlxdWUgbW9iaWxlIGRldmljZSBJRCBvciB2aXJ0dWFsIHVuaXF1ZSBkZXZpY2UgaWRlbnRpZmllciBmb3IgYW55IG1vYmlsZQogICAgICAgICAgICAgICAgICBkZXZpY2UgdXNlZCB0byBhY2Nlc3MgeW91ciBhY2NvdW50LgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+CiAgICAgICAgICAgICAgICAgIOODu01ldGFkYXRhIGFuZCBvdGhlciBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggZmlsZXMgc3RvcmVkIG9uIHlvdXIgZGV2aWNlLgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+CiAgICAgICAgICAgICAgICAgIOODu0luZm9ybWF0aW9uIGFib3V0IHlvdXIgaW50ZXJuZXQgY29ubmVjdGlvbiwgdGhlIGRldmljZSB5b3UgdXNlIHRvIGFjY2VzcyB0aGUgQXBwcywgYW5kIHJlbGF0ZWQgdXNhZ2UKICAgICAgICAgICAgICAgICAgZGV0YWlscy4KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+44O7VHJhbnNhY3Rpb24gZGF0YTo8L3NwYW4+IERldGFpbHMgb2YgdHJhbnNhY3Rpb25zIHlvdSBjYXJyeQogICAgICAgICAgICAgICAgICBvdXQgdGhyb3VnaCB0aGUgQXBwcyB1c2luZyBpbi1nYW1lIGN1cnJlbmN5LgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgICAgICBXZSB1c2UgdGhpcmQtcGFydHkgcGF5bWVudCBwcm9jZXNzb3JzIHRvIHByb2Nlc3MgcGF5bWVudHMgbWFkZSB0byB1cy4gSW4gY29ubmVjdGlvbiB3aXRoIHRoZQogICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nIG9mIHN1Y2ggcGF5bWVudHMsIHdlIGRvIG5vdCByZXRhaW4gYW55IHBlcnNvbmFsIGluZm9ybWF0aW9uIG9yIGFueSBmaW5hbmNpYWwgaW5mb3JtYXRpb24KICAgICAgICAgICAgICAgICAgc3VjaCBhcyBjcmVkaXQgY2FyZCBudW1iZXJzLiBSYXRoZXIsIGFsbCBzdWNoIGluZm9ybWF0aW9uIGlzIHByb3ZpZGVkIGRpcmVjdGx5IHRvIG91ciB0aGlyZC1wYXJ0eQogICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzIHdob3NlIHVzZSBvZiB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uIGlzIGdvdmVybmVkIGJ5IHRoZWlyIHByaXZhY3kgcG9saWNpZXMuIFdlIGhhdmUgbm8KICAgICAgICAgICAgICAgICAgY29udHJvbCBvdmVyLCBhbmQgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IsIHRoaXMgdGhpcmQgcGFydHnigJlzIGNvbGxlY3Rpb24sIHVzZSBhbmQgZGlzY2xvc3VyZSBvZiB5b3VyCiAgICAgICAgICAgICAgICAgIHBlcnNvbmFsIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+SG93IHdlIGNvbGxlY3QgeW91ciBwZXJzb25hbCBpbmZvcm1hdGlvbjwvc3Bhbj48YnIgLz4KICAgICAgICAgICAgICAgICAgV2UgbWF5IGNvbGxlY3QgYW5kIHJlY2VpdmUgeW91ciBwZXJzb25hbCBkYXRhIHVzaW5nIGRpZmZlcmVudCBtZXRob2RzOgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+44O7UGVyc29uYWwgZGF0YSB5b3UgZGlyZWN0bHkgcHJvdmlkZSB0byB1czwvc3Bhbj48YnIgLz4KICAgICAgICAgICAgICAgICAgWW91IG1heSBnaXZlIHVzIHlvdXIgcGVyc29uYWwgZGF0YSBkaXJlY3RseSwgZm9yIGV4YW1wbGUsIHdoZW4geW91IHJlZ2lzdGVyIHRvIHVzZSBvdXIgQXBwcywgY29udGFjdAogICAgICAgICAgICAgICAgICB1cyB3aXRoIGVucXVpcmllcyBvciBmZWVkYmFjay4KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPuODu1BlcnNvbmFsIGRhdGEgcmVjZWl2ZWQgZnJvbSB0aGlyZCBwYXJ0aWVzPC9zcGFuPjxiciAvPgogICAgICAgICAgICAgICAgICBXZSBtYXkgcmVjZWl2ZSBwZXJzb25hbCBkYXRhIGFib3V0IHlvdSBmcm9tIHRoaXJkIHBhcnRpZXMuIFN1Y2ggdGhpcmQgcGFydGllcyBtYXkgaW5jbHVkZSB0aGlyZAogICAgICAgICAgICAgICAgICBwYXJ0aWVzIHRoYXQgcHJvdmlkZSB0ZWNobmljYWwgc2VydmljZXMgdG8gdXMgc28gdGhhdCB3ZSBjYW4gcHJvdmlkZSB0aGUgQXBwcy48YnIgLz4KICAgICAgICAgICAgICAgICAgV2UgbWF5IGNvbGxlY3QgcGVyc29uYWwgZGF0YSBhYm91dCB5b3Ugd2hlbiB5b3UgYWNjZXNzIHNvbWUgb2Ygb3VyIEFwcHMgd2l0aCB0aGlyZC1wYXJ0eSBwbGF0Zm9ybQogICAgICAgICAgICAgICAgICBhY2NvdW50cywgc3VjaCBhcyBhIGdhbWluZyBwbGF0Zm9ybSBhY2NvdW50LiBXaGVuIHlvdSBhY2Nlc3MgdGhlIEFwcHMgaW4gdGhpcyB3YXksIHRoZSB0aGlyZC1wYXJ0eQogICAgICAgICAgICAgICAgICBwbGF0Zm9ybXMgcHJvdmlkZSB1cyB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHlvdS4gRm9yIGV4YW1wbGUsIGRlcGVuZGluZyBvbiB5b3VyIHVzZSBvZiwgb3IgYWN0aXZpdHkgb24KICAgICAgICAgICAgICAgICAgdGhlIHRoaXJkLXBhcnR5IHBsYXRmb3JtLCB3ZSByZWNlaXZlIHlvdXIgdXNlcm5hbWUsIGVtYWlsIGFkZHJlc3MsIG9yIGFjY291bnQgaW5mb3JtYXRpb24gbmVjZXNzYXJ5IHRvCiAgICAgICAgICAgICAgICAgIHByb3ZpZGUgdGhlIEFwcHMuCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj7jg7tBdXRvbWF0aWMgRGF0YS1Db2xsZWN0aW9uIFRlY2hub2xvZ2llczwvc3Bhbj48YnIgLz4KICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgYWNjZXNzIGFuZCB1c2UgdGhlIEFwcHMgd2Ugd2lsbCBjb2xsZWN0IGNlcnRhaW4gdXNhZ2UgZGF0YSBhbmQgdGVjaG5pY2FsIGRhdGEuPGJyIC8+CiAgICAgICAgICAgICAgICAgIFRoZSBhdXRvbWF0aWMgZGF0YSBjb2xsZWN0aW9uIHRlY2hub2xvZ2llcyB3ZSB1c2UgdG8gY29sbGVjdCB0aGlzIGRhdGEgbWF5IGluY2x1ZGU6CiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4KICAgICAgICAgICAgICAgICAg44O7Q29va2llcyAob3IgcGl4ZWwgdGFncyBhbmQgb3RoZXIgc2ltaWxhciB0ZWNobm9sb2dpZXMpLiBBIGNvb2tpZSBpcyBhIHNtYWxsIGZpbGUgcGxhY2VkIG9uIHRoZSBoYXJkCiAgICAgICAgICAgICAgICAgIGRyaXZlIG9mIHlvdXIgY29tcHV0ZXIgb3IgZGV2aWNlLiBZb3UgbWF5IHJlZnVzZSB0byBhY2NlcHQgYnJvd3NlciBjb29raWVzIGJ5IGFjdGl2YXRpbmcgdGhlCiAgICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlIHNldHRpbmdzIG9uIHlvdXIgYnJvd3Nlci4gSG93ZXZlciwgaWYgeW91IHNlbGVjdCB0aGlzIHNldHRpbmcgeW91IG1heSBiZSB1bmFibGUgdG8gYWNjZXNzCiAgICAgICAgICAgICAgICAgIGNlcnRhaW4gcGFydHMgb2YgdGhlIEFwcHMuIFVubGVzcyB5b3UgaGF2ZSBhZGp1c3RlZCB5b3VyIGJyb3dzZXIgc2V0dGluZyBzbyB0aGF0IGl0IHdpbGwgcmVmdXNlCiAgICAgICAgICAgICAgICAgIGNvb2tpZXMsIG91ciBzeXN0ZW0gd2lsbCBpc3N1ZSBjb29raWVzIHdoZW4geW91IGRpcmVjdCB5b3VyIGJyb3dzZXIgdG8gdGhlIEFwcHMuCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4KICAgICAgICAgICAgICAgICAg44O7V2ViIEJlYWNvbnMuIE91ciBlbWFpbHMgbWF5IHVzZSBzbWFsbCBlbGVjdHJvbmljIGZpbGVzIGtub3duIGFzIHdlYiBiZWFjb25zIChhbHNvIHJlZmVycmVkIHRvIGFzCiAgICAgICAgICAgICAgICAgIGNsZWFyIGdpZnMsIHBpeGVsIHRhZ3MsIGFuZCBzaW5nbGUtcGl4ZWwgZ2lmcykgdGhhdCBwZXJtaXQgdXMsIGZvciBleGFtcGxlLCB0byBjb3VudCB1c2VycyB3aG8gaGF2ZQogICAgICAgICAgICAgICAgICB2aXNpdGVkIHRob3NlIHBhZ2VzIG9yIG9wZW5lZCBhbiBlbWFpbCBhbmQgZm9yIG90aGVyIHJlbGF0ZWQgd2Vic2l0ZSBzdGF0aXN0aWNzIChmb3IgZXhhbXBsZSwKICAgICAgICAgICAgICAgICAgcmVjb3JkaW5nIHRoZSBwb3B1bGFyaXR5IG9mIGNlcnRhaW4gd2Vic2l0ZSBjb250ZW50IGFuZCB2ZXJpZnlpbmcgc3lzdGVtIGFuZCBzZXJ2ZXIgaW50ZWdyaXR5KS4KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPgogICAgICAgICAgICAgICAgICDjg7tSZXNldHRhYmxlIERldmljZSBJZGVudGlmaWVycy4gV2UgbWF5IGNvbGxlY3QgYSByZXNldHRhYmxlIGRldmljZSBpZGVudGlmaWVyIGZyb20geW91ciBkZXZpY2UuCiAgICAgICAgICAgICAgICAgIFJlc2V0dGFibGUgZGV2aWNlIGlkZW50aWZpZXJzIGNhbiBiZSB1c2VkIGxpa2UgY29va2llcyBhbmQgYXJlIGZvdW5kIG9uIG1hbnkgbW9iaWxlIGRldmljZXMgYW5kCiAgICAgICAgICAgICAgICAgIHRhYmxldHMgKGZvciBleGFtcGxlLCB0aGUg4oCcSWRlbnRpZmllciBmb3IgQWR2ZXJ0aXNlcnPigJ0gb24gQXBwbGUgaU9TIGRldmljZXMgYW5kIHRoZSDigJxHb29nbGUKICAgICAgICAgICAgICAgICAgQWR2ZXJ0aXNpbmcgSUTigJ0gb24gQW5kcm9pZCBkZXZpY2VzKS4gTGlrZSBjb29raWVzLCByZXNldHRhYmxlIGRldmljZSBpZGVudGlmaWVycyBhcmUgdXNlZCB0byBtYWtlCiAgICAgICAgICAgICAgICAgIG9ubGluZSBhZHZlcnRpc2luZyBtb3JlIHJlbGV2YW50LCBhbmQgZm9yIGFuYWx5dGljcyBhbmQgb3B0aW1pemF0aW9uIHB1cnBvc2VzLgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgICAgICBZb3UgbWF5IGFsc28gY29udHJvbCB0aGUgaW5mb3JtYXRpb24gdGhhdCB3ZSBjb2xsZWN0IHRocm91Z2ggdGhlIHNldHRpbmdzIG9uIHlvdXIgbW9iaWxlIGRldmljZS4gWW91CiAgICAgICAgICAgICAgICAgIG1heSBhZGp1c3QgdGhlIHNldHRpbmdzIG9mIHlvdXIgbW9iaWxlIGRldmljZSB0byBwcmV2ZW50IHRoZSBBcHBzIGZyb20gb2J0YWluaW5nIGxvY2F0aW9uIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICBIb3dldmVyLCBwbGVhc2Ugbm90ZSB0aGF0IHRoZSBBcHBzIG1heSByZWx5IG9uIGNvb2tpZXMgYW5kIGxvY2F0aW9uIGluZm9ybWF0aW9uIHRvIGZ1bmN0aW9uIHByb3Blcmx5CiAgICAgICAgICAgICAgICAgIGFuZCBzb21lIHBhcnRzIG9mIHRoZSBBcHBzIG1heSBub3QgYmUgYXZhaWxhYmxlIGlmIHlvdSBkaXNhYmxlIGNvb2tpZXMuCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj7jg7tHb29nbGUgQW5hbHl0aWNzPC9zcGFuPjxiciAvPgogICAgICAgICAgICAgICAgICBHb29nbGUgQW5hbHl0aWNzIGlzIGEgd2ViIGFuYWx5dGljcyBzZXJ2aWNlIG9mZmVyZWQgYnkgR29vZ2xlLiBHb29nbGUgdXNlcyB0aGUgZGF0YSBjb2xsZWN0ZWQgdG8gdHJhY2sKICAgICAgICAgICAgICAgICAgYW5kIG1vbml0b3IgdGhlIHVzZSBvZiBvdXIgd2Vic2l0ZXMuIEdvb2dsZSBBbmFseXRpY3MgZG9lcyBub3QgaWRlbnRpZnkgaW5kaXZpZHVhbCB1c2VycyBvciBhc3NvY2lhdGUKICAgICAgICAgICAgICAgICAgeW91ciBJUCBhZGRyZXNzIHdpdGggb3RoZXIgZGF0YSBoZWxkIGJ5IEdvb2dsZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHByaXZhY3kgcHJhY3RpY2Ugb2YKICAgICAgICAgICAgICAgICAgR29vZ2xlLCBwbGVhc2UgdmlzaXQgdGhlIEdvb2dsZSBQcml2YWN5IFRlcm1zIHdlYiBwYWdlOjxiciAvPgogICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiCiAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9wb2xpY2llcy5nb29nbGUuY29tL3ByaXZhY3k\/aGw9ZW4iCiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PSJfYmxhbmsiCiAgICAgICAgICAgICAgICAgICAgcmVsPSJub29wZW5lciIKICAgICAgICAgICAgICAgICAgICA+aHR0cHM6Ly9wb2xpY2llcy5nb29nbGUuY29tL3ByaXZhY3k\/aGw9ZW48L2EKICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPgogICAgICAgICAgICA8aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjIuIEhvdyBXZSBVc2UgWW91ciBQZXJzb25hbCBJbmZvcm1hdGlvbjwvaDQ+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBXZSB1c2UgcGVyc29uYWwgaW5mb3JtYXRpb24gdGhhdCB3ZSBjb2xsZWN0IGFib3V0IHlvdSBvciB0aGF0IHlvdSBwcm92aWRlIHRvIHVzIGZvciB0aGUgcHVycG9zZXMgc2V0IG91dAogICAgICAgICAgICAgIGluIHRoaXMgc2VjdGlvbi4gSWYgd2Ugd2lzaCB0byBtYWtlIGFueSBjaGFuZ2VzIHRvIHRoZXNlIHB1cnBvc2VzLCBvciBpZiB3ZSB3aXNoIHRvIHVzZSB5b3VyIHBlcnNvbmFsIGRhdGEKICAgICAgICAgICAgICBmb3IgYW55IHB1cnBvc2UgdGhhdCBpcyBub3QgbGlzdGVkIGluIHRoaXMgc2VjdGlvbiwgd2Ugd2lsbCBub3RpZnkgeW91IHVzaW5nIHRoZSBjb250YWN0IGRldGFpbHMgd2UgaG9sZAogICAgICAgICAgICAgIGZvciB5b3UuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+UEFSVCBBOiBQUk9WSVNJT04gT0YgVEhFIEFQUFM8YnIgLz5QdXJwb3NlOiBUbyBwcm92aWRlIG91ciBBcHBzPC9oNT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYy1wcml2YWN5X19zY3JvbGxXcmFwIj4KICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGUzQ29sdW1ucyI+CiAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5Ij4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5EZXNjcmlwdGlvbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Q2F0ZWdvcmllcyBvZiBkYXRhPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5MZWdhbCBiYXNlczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+UHJvdmlzaW9uIG9mIG91ciBBcHBzOjwvc3Bhbj4gV2hlbiB5b3UgdXNlIG91ciBBcHBzLCB3ZQogICAgICAgICAgICAgICAgICAgICAgcHJvY2VzcyB5b3VyIHBlcnNvbmFsIGRhdGEgc28gdGhhdCB3ZSBjYW4gcHJvdmlkZSBvdXIgQXBwcyB0byB5b3UsIGluY2x1ZGluZyB0byBlbnN1cmUgdGhhdCBvdXIKICAgICAgICAgICAgICAgICAgICAgIEFwcHMgYXJlIHdvcmtpbmcgcHJvcGVybHksIHRvIHNob3cgeW91IHRoZSBjb3JyZWN0IG5vdGljZXMgYW5kIGluZm9ybWF0aW9uLCBhbmQgdG8gZW5zdXJlIHRoYXQgb3VyCiAgICAgICAgICAgICAgICAgICAgICBBcHBzIGFyZSBrZXB0IHNlY3VyZS4gVGhpcyBkYXRhIGlzIHNvbWV0aW1lcyBhdXRvbWF0aWNhbGx5IGNvbGxlY3RlZCBhbmQgdHJhbnNtaXR0ZWQgdG8gdXMuPGJyIC8+PGJyIC8+V2hlbgogICAgICAgICAgICAgICAgICAgICAgeW91IHVzZSBvdXIgQXBwcywgd2UgbWF5IGFsc28gYXNrIGZvciB5b3VyIHBlcm1pc3Npb24gdG8gc2VuZCB5b3UgcHVzaCBub3RpZmljYXRpb25zLiBJZiB5b3UgYWxsb3cKICAgICAgICAgICAgICAgICAgICAgIHRoaXMgZmVhdHVyZSwgd2UgbWF5IHNlbmQgeW91IHB1c2ggbm90aWZpY2F0aW9ucyB0aHJvdWdoIG91ciBBcHBzLCBmb3IgZXhhbXBsZSwgcmVtaW5kZXJzLCBhbGVydHMsCiAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVzIGFuZCBvdGhlciBpbmZvcm1hdGlvbi4gWW91IGNhbiBjb25maWd1cmUgYW5kIHR1cm4gb2ZmIHB1c2ggbm90aWZpY2F0aW9ucyB2aWEgeW91ciBkZXZpY2UKICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzIGF0IGFueSB0aW1lLjxiciAvPjxiciAvPk91ciBBcHBzIG1heSBhbHNvIHNlbmQgdXMgKG9yIG91ciBJVCBzdXBwbGllcnMpIGFuIGVycm9yIG1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBldmVudCBvZiBhIGNyYXNoIG9yIG90aGVyIGVycm9yIChlLmcuIGFmdGVyIHRoZSBBcHBzIGhhdmUgdW5leHBlY3RlZGx5IHF1aXQgYmVjYXVzZSBvZiBhCiAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtIGVycm9yIG9yIGhhcyBzdG9wcGVkIHJlc3BvbmRpbmcgdG8geW91ciBpbnB1dCkuIFRoZSBlcnJvciBtZXNzYWdlIGNvbnRhaW5zIFRlY2huaWNhbCBEYXRhCiAgICAgICAgICAgICAgICAgICAgICBhbmQgaW5mb3JtYXRpb24gYWJvdXQgd2hpY2ggcGFydCBvZiBvdXIgQXBw4oCZcyBzb2Z0d2FyZSBjb2RlIGhhcyBjYXVzZWQgdGhlIGVycm9yLiBUaGlzIGluZm9ybWF0aW9uCiAgICAgICAgICAgICAgICAgICAgICBoZWxwcyB1cyB1bmRlcnN0YW5kIHRoZSBjYXVzZSBvZiB0aGUgZXJyb3Igc28gdGhhdCB3ZSBjYW4gZGV2ZWxvcCBhIGZpeCB0byBwcmV2ZW50IHRoYXQgZXJyb3IgZnJvbQogICAgICAgICAgICAgICAgICAgICAgcmVvY2N1cnJpbmcgYW5kIHRoZXJlZm9yZSBpbXByb3ZlIHRoZSBBcHBzIGZvciBhbGwgdXNlcnMuCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5UZWNobmljYWwgYW5kIFVzYWdlIERhdGEvTmV0d29ya2luZyBBY3Rpdml0eTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBuZWNlc3NhcnkgZm9yIHVzIHRvIHVzZSB5b3VyIHBlcnNvbmFsIGRhdGEgdG8gcGVyZm9ybSBvdXIgb2JsaWdhdGlvbnMgaW4gYWNjb3JkYW5jZSB3aXRoIGFueQogICAgICAgICAgICAgICAgICAgICAgY29udHJhY3QgdGhhdCB3ZSBtYXkgaGF2ZSB3aXRoIHlvdSwgb3IgaXQgaXMgaW4gb3VyIGxlZ2l0aW1hdGUgaW50ZXJlc3QgdG8gdXNlIHBlcnNvbmFsIGRhdGEgaW4KICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggYSB3YXkgdG8gZW5zdXJlIHRoYXQgd2UgcHJvdmlkZSBhY2Nlc3MgdG8gb3VyIEFwcHMgaW4gYSBzZWN1cmUgYW5kIGVmZmVjdGl2ZSB3YXkuPGJyIC8+PGJyIC8+T3VyCiAgICAgICAgICAgICAgICAgICAgICB1c2Ugb2YgcHVzaCBub3RpZmljYXRpb25zIHdpbGwgYmUgc3ViamVjdCB0byB0aGUgcGVybWlzc2lvbnMgdGhhdCB5b3UgcHJvdmlkZSBhbmQgeW91ciBzeXN0ZW0KICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlM0NvbHVtbnMiPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+RGVzY3JpcHRpb248L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkNhdGVnb3JpZXMgb2YgZGF0YTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+TGVnYWwgYmFzZXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiCiAgICAgICAgICAgICAgICAgICAgICAgID5UbyBtYW5hZ2UgeW91ciBhY2NvdW50IHJlZ2lzdHJhdGlvbiBhbmQgYWNjZXNzIHRvIHRoZSBBcHBzOjwvc3BhbgogICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgWW91IHdpbGwgYmUgcmVxdWlyZWQgdG8gcmVnaXN0ZXIgYW4gYWNjb3VudCB3aXRoIHVzIGluIG9yZGVyIHRvIGdhaW4gYWNjZXNzIHRvIHRoZSBBcHBzLjxiciAvPjxiciAvPlRvCiAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBmb3IgYW4gYWNjb3VudCwgeW91IHdpbGwgbmVlZCB0byBwcm92aWRlIGFsbCByZXF1aXJlZCBwZXJzb25hbCBkYXRhLiBXZSB3aWxsIHVzZSB0aGlzCiAgICAgICAgICAgICAgICAgICAgICBkYXRhIHRvIHByb2Nlc3MgeW91ciByZWdpc3RyYXRpb24gYW5kIHRvIGlkZW50aWZ5IHlvdSB3aGVuIHlvdSBsb2cgaW4gdG8geW91ciBhY2NvdW50IGFuZCBhY2Nlc3MKICAgICAgICAgICAgICAgICAgICAgIHRoZSBBcHBzLgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+UmVnaXN0cmF0aW9uIERhdGEvSWRlbnRpZmllcnMgQXBwcyBQcm9maWxlIERhdGE8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgSXQgaXMgbmVjZXNzYXJ5IGZvciB1cyB0byB1c2UgeW91ciBwZXJzb25hbCBkYXRhIHRvIHBlcmZvcm0gb3VyIG9ibGlnYXRpb25zIGluIGFjY29yZGFuY2Ugd2l0aCBhbnkKICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0IHRoYXQgd2UgbWF5IGhhdmUgd2l0aCB5b3UsIG9yIGl0IGlzIGluIG91ciBsZWdpdGltYXRlIGludGVyZXN0IHRvIHVzZSBwZXJzb25hbCBkYXRhIGluCiAgICAgICAgICAgICAgICAgICAgICBzdWNoIGEgd2F5IHRvIGVuc3VyZSB0aGF0IHdlIHByb3ZpZGUgYWNjZXNzIHRvIG91ciBBcHBzIGluIGEgc2VjdXJlIGFuZCBlZmZlY3RpdmUgd2F5LgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlM0NvbHVtbnMiPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+RGVzY3JpcHRpb248L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkNhdGVnb3JpZXMgb2YgZGF0YTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+TGVnYWwgYmFzZXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlRvIG1hbmFnZSB5b3VyIEFwcCBhY2NvdW50IHByb2ZpbGU6PC9zcGFuPklmIHlvdSBhcmUgYQogICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZCB1c2VyIG9mIHRoZSBBcHBzIHlvdSBjYW4gdm9sdW50YXJpbHkgc3VibWl0IGFuZCB3ZSB3aWxsIGNvbGxlY3QgQXBwcyBQcm9maWxlIERhdGEgYXMKICAgICAgICAgICAgICAgICAgICAgIHBhcnQgb2YgeW91ciBBcHAgcHJvZmlsZS48YnIgLz5XZSB3aWxsIGFsc28gdXNlIHlvdXIgcGVyc29uYWwgZGF0YSB0byBzdG9yZSBpbmZvcm1hdGlvbiBhYm91dCB5b3UKICAgICAgICAgICAgICAgICAgICAgIGFuZCB5b3VyIHByZWZlcmVuY2VzLCBhbGxvd2luZyB1cyB0byBjdXN0b21pemUgdGhlIEFwcHMgYWNjb3JkaW5nIHRvIHlvdXIgaW5kaXZpZHVhbCBpbnRlcmVzdHMgYW5kCiAgICAgICAgICAgICAgICAgICAgICByZWNvZ25pemUgeW91IHdoZW4geW91IHJldHVybiB0byB0aGUgQXBwcy4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlRlY2huaWNhbCBhbmQgVXNhZ2UgRGF0YS9OZXR3b3JraW5nIEFjdGl2aXR5IEFwcHMgUHJvZmlsZSBEYXRhPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIEFueSBBcHBzIFByb2ZpbGUgRGF0YSB0aGF0IHlvdSBzdWJtaXQgaXMgdm9sdW50YXJ5LCBhbHRob3VnaCB5b3UgYXJlIHJlcXVpcmVkIHRvIHN1cHBseSBzb21lIEFwcHMKICAgICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgRGF0YSBhcyBhIHBhcnQgb2YgaW50ZXJhY3Rpbmcgd2l0aCBhbmQgdXNpbmcgdGhlIEFwcHMuIEl0IGlzIGluIG91ciBsZWdpdGltYXRlIGludGVyZXN0IHRvCiAgICAgICAgICAgICAgICAgICAgICB1c2UgeW91ciBBcHBzIFByb2ZpbGUgRGF0YSwgc28gdGhhdCB3ZSBjYW4gcHJvdmlkZSBvdXIgQXBwcyBlZmZlY3RpdmVseS4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+UHVycG9zZTogQ3VzdG9tZXIgZmVlZGJhY2svZW5xdWlyaWVzPC9oNT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYy1wcml2YWN5X19zY3JvbGxXcmFwIj4KICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGUzQ29sdW1ucyI+CiAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5Ij4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5EZXNjcmlwdGlvbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Q2F0ZWdvcmllcyBvZiBkYXRhPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5MZWdhbCBiYXNlczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCIKICAgICAgICAgICAgICAgICAgICAgICAgPklmIHlvdSBoYXZlIGEgZ2VuZXJhbCBxdWVzdGlvbiBvciBuZWVkIGhlbHAgd2l0aCBhbnkgaXNzdWUgY29uY2VybmluZyBvdXIgQXBwczo8L3NwYW4KICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIFRoZXJlIGFyZSB2YXJpb3VzIHdheXMgaW4gd2hpY2ggeW91IGFyZSBhYmxlIHRvIGNvbnRhY3QgdXMgd2l0aCBnZW5lcmFsIGlucXVpcmllcyBhbmQgdG8gcHJvdmlkZQogICAgICAgICAgICAgICAgICAgICAgZmVlZGJhY2ssIGluY2x1ZGluZyB1c2luZyB0aGUgZGV0YWlscyBzZXQgb3V0IGluIHRoZSDigJxDb250YWN0aW5nIENvY29uZeKAnSBTZWN0aW9uIDE0LCB0aHJvdWdoIGFueQogICAgICAgICAgICAgICAgICAgICAgb3RoZXIg4oCYY29udGFjdCB1c+KAmSBvciBzaW1pbGFyIGZlYXR1cmUgdGhhdCB3ZSBtYWtlIGF2YWlsYWJsZSBvbiBvdXIgQXBwcy48YnIgLz48YnIgLz5XaGVuIHlvdSBtYWtlCiAgICAgICAgICAgICAgICAgICAgICBhbiBlbnF1aXJ5IG9yIHByb3ZpZGUgZmVlZGJhY2ssIHdlIHdpbGwgY29sbGVjdCBhbmQgcHJvY2VzcyB5b3VyIHBlcnNvbmFsIGRhdGEgaW5jbHVkaW5nIGFueQogICAgICAgICAgICAgICAgICAgICAgcGVyc29uYWwgZGF0YSB5b3Ugdm9sdW50ZWVyLCB0aGF0IGlzIHJlbGV2YW50IHRvIHlvdXIgZW5xdWlyeSBvciBmZWVkYmFjay48YnIgLz48YnIgLz5JZiB5b3UgaGF2ZQogICAgICAgICAgICAgICAgICAgICAgYSB0ZWNobmljYWwgaXNzdWUgY29uY2VybmluZyBvdXIgQXBwcywgd2UgbWF5IGFsc28gcHJvY2VzcyBUZWNobmljYWwgYW5kIFVzYWdlIERhdGEvTmV0d29ya2luZwogICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHkgdG8gaGVscCB1cyBkaWFnbm9zZSBhbmQgZml4IHRoZSB0ZWNobmljYWwgaXNzdWVzIHlvdSBhcmUgZXhwZXJpZW5jaW5nLiA8YnIgLz48YnIgLz5XZQogICAgICAgICAgICAgICAgICAgICAgd2lsbCB1c2UgdGhpcyBpbmZvcm1hdGlvbiBzbyB0aGF0IHdlIGNhbiBlZmZlY3RpdmVseSBtYW5hZ2UgYW5kIHJlc3BvbmQgdG8geW91ciBlbnF1aXJ5IG9yCiAgICAgICAgICAgICAgICAgICAgICBmZWVkYmFjay4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgUmVnaXN0cmF0aW9uIERhdGEvSWRlbnRpZmllcnM8YnIgLz48YnIgLz5Qcm9maWxlIERhdGE8YnIgLz48YnIgLz5UZWNobmljYWwgYW5kIFVzYWdlCiAgICAgICAgICAgICAgICAgICAgICBEYXRhL05ldHdvcmtpbmcgQWN0aXZpdHk8YnIgLz48YnIgLz5QZXJzb25hbCBkYXRhIHRoYXQgaXMgdm9sdW50ZWVyZWQgYXMgcGFydCBvZiBmZWVkYmFjawogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBpbiBvdXIgbGVnaXRpbWF0ZSBpbnRlcmVzdCB0byB1c2UgeW91ciBwZXJzb25hbCBkYXRhIGluIHRoZSB3YXlzIGRlc2NyaWJlZCBpbiB0aGlzIHNlY3Rpb24KICAgICAgICAgICAgICAgICAgICAgIHRvIGVuc3VyZSB0aGF0IHdlIGFyZSBhYmxlIHRvIGhlbHAgeW91IHdpdGggeW91ciBlbnF1aXJ5IGFuZCBwcm92aWRlIGEgZ29vZCBzdGFuZGFyZCBvZiBzZXJ2aWNlLgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5QQVJUIEI6IEFEVkVSVElTSU5HL01BUktFVElORzwvaDU+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImMtcHJpdmFjeV9fc2Nyb2xsV3JhcCI+CiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlM0NvbHVtbnMiPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+RGVzY3JpcHRpb248L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkNhdGVnb3JpZXMgb2YgZGF0YTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+TGVnYWwgYmFzZXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPk9ubGluZSBwZXJzb25hbGlzZWQgbWFya2V0aW5nOjwvc3Bhbj4gV2UgYW5kIG91cgogICAgICAgICAgICAgICAgICAgICAgdGhpcmQtcGFydHkgcGFydG5lcnMgbWF5IHVzZSB5b3VyIHBlcnNvbmFsIGRhdGEgaW5jbHVkaW5nIGRhdGEgdGhhdCBpcyBjb2xsZWN0ZWQgdGhyb3VnaCB5b3VyCiAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbnMgd2l0aCB0aGlyZC1wYXJ0eSB3ZWJzaXRlcyBhbmQgc2VydmljZXMgKGluY2x1ZGluZyBzb2NpYWwgbWVkaWEgYW5kIG90aGVyIHBsYXRmb3JtcykKICAgICAgICAgICAgICAgICAgICAgIHRvIHByb3ZpZGUgeW91IHdpdGgsIGFuZCBhbmFseXNlIHRoZSBlZmZlY3RpdmVuZXNzIG9mLCBwZXJzb25hbGlzZWQgYWRzIHdoZW4geW91IHZpc2l0IG90aGVyCiAgICAgICAgICAgICAgICAgICAgICB3ZWJzaXRlcyBhbmQvb3IgdXNlIG90aGVyIHNlcnZpY2VzLjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICBCeSDigJxwZXJzb25hbGlzZWQgYWRz4oCdLCB3ZSBtZWFuIGFkdmVydGlzZW1lbnRzIGZvciB0aGUgQXBwcyB3aGljaCB3ZSBvciBvdXIgcGFydG5lcnMgb3RoZXJ3aXNlCiAgICAgICAgICAgICAgICAgICAgICB0aGluayB5b3UgbWlnaHQgYmUgaW50ZXJlc3RlZCBpbiBiYXNlZCBvbiB5b3VyIGJyb3dzaW5nIGhhYml0cy4gTm90ZSwgb3VyIHRoaXJkLXBhcnR5IHBhcnRuZXJzIG1heQogICAgICAgICAgICAgICAgICAgICAgYWxzbyB1c2UgdGhlIGRhdGEgdGhhdCBpcyBjb2xsZWN0ZWQgdG8gc2hvdyBwZXJzb25hbGlzZWQgYWRzIGZvciBwcm9kdWN0cyBhbmQgc2VydmljZXMgb2ZmZXJlZCBieQogICAgICAgICAgICAgICAgICAgICAgdGhpcmQgcGFydGllcy48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgICAgV2UgYWxzbyBtYXkgdXNlIHRoZXNlIHRlY2hub2xvZ2llcyB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IHlvdXIgb25saW5lIGFjdGl2aXRpZXMKICAgICAgICAgICAgICAgICAgICAgIChiZWhhdmlvdXJhbCB0cmFja2luZykuIENvbnRhY3QgdXMgYnkgZW1haWwgYXQgdGhlIGVtYWlsIGFkZHJlc3MgcHJvdmlkZWQgaW4gdGhlIOKAnENvbnRhY3RpbmcKICAgICAgICAgICAgICAgICAgICAgIENvY29uZeKAnSBTZWN0aW9uIDE0IGJlbG93IGZvciBpbmZvcm1hdGlvbiBvbiBob3cgeW91IGNhbiBvcHQgb3V0IG9mIGJlaGF2aW91cmFsIHRyYWNraW5nIG9uIHRoZQogICAgICAgICAgICAgICAgICAgICAgQXBwcyBhbmQgaG93IHdlIHJlc3BvbmQgdG8gd2ViIGJyb3dzZXIgc2lnbmFscyBhbmQgb3RoZXIgbWVjaGFuaXNtcyB0aGF0IGVuYWJsZSBjb25zdW1lcnMgdG8KICAgICAgICAgICAgICAgICAgICAgIGV4ZXJjaXNlIGNob2ljZSBhYm91dCBiZWhhdmlvdXJhbCB0cmFja2luZy4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlRlY2huaWNhbCBhbmQgVXNhZ2UgRGF0YS9OZXR3b3JraW5nIEFjdGl2aXR5PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIFdoZXJlIHlvdXIgZGF0YSBpcyBjb2xsZWN0ZWQgdGhyb3VnaCB0aGUgdXNlIG9mIG5vbi1lc3NlbnRpYWwgY29va2llcywgd2UgYW5kIG91ciB0aGlyZC1wYXJ0eQogICAgICAgICAgICAgICAgICAgICAgcGFydG5lcnMgZ2VuZXJhbGx5IHJlbHkgb24gY29uc2VudCB0byBjb2xsZWN0IHlvdXIgcGVyc29uYWwgZGF0YSBhbmQgZm9yIHRoZSBzdWJzZXF1ZW50IHByb2Nlc3NpbmcKICAgICAgICAgICAgICAgICAgICAgIG9mIGl0IGluIHRoaXMgbWFubmVyIG9yIGl0IGlzIG90aGVyd2lzZSBpbiBvdXIgbGVnaXRpbWF0ZSBpbnRlcmVzdHMgdG8gcHJvbW90ZSBvdXIgQXBwcyB0byB5b3UuPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICBPdXIgdGhpcmQtcGFydHkgcGFydG5lcnMgbWF5IHJlbHkgb24gYSBkaWZmZXJlbnQgbGF3ZnVsIGJhc2lzIGluIHJlc3BlY3Qgb2YgdGhlaXIgdXNlIG9mIHlvdXIKICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbmFsIGRhdGEuCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGUzQ29sdW1ucyI+CiAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5Ij4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5EZXNjcmlwdGlvbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Q2F0ZWdvcmllcyBvZiBkYXRhPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5MZWdhbCBiYXNlczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+SG9zdGluZyBhbmQgbWFuYWdpbmcgZXZlbnRzOjwvc3Bhbj4gRnJvbSB0aW1lIHRvIHRpbWUsIHdlCiAgICAgICAgICAgICAgICAgICAgICBtYXkgb3JnYW5pc2UgYW5kIGhvc3QgZXZlbnRzIGZvciB0aGUgcHVycG9zZSBvZiBwcm9tb3Rpbmcgb3VyIGJ1c2luZXNzIG9yIGJyaW5naW5nIG91ciBBcHAgdXNlcnMKICAgICAgICAgICAgICAgICAgICAgIHRvZ2V0aGVyLiBXZSBtYXkgcHJvY2VzcyB5b3VyIHBlcnNvbmFsIGRhdGEgdG8gY29tbXVuaWNhdGUgd2l0aCB5b3UgYWJvdXQgc3VjaCBldmVudHMgd2hlcmUgeW91CiAgICAgICAgICAgICAgICAgICAgICBoYXZlIHNwZWNpZmljYWxseSByZXF1ZXN0ZWQgaW5mb3JtYXRpb24gYWJvdXQgc3VjaCBldmVudHMgb3Igd2hlcmUgd2UgaGF2ZSBhbm90aGVyIGxhd2Z1bCBiYXNpcwogICAgICAgICAgICAgICAgICAgICAgZm9yIHNlbmRpbmcgdGhhdCBpbmZvcm1hdGlvbiB0byB5b3UuPGJyIC8+PGJyIC8+SWYgeW91IGF0dGVuZCBvbmUgb2Ygb3VyIGV2ZW50cywgd2UgbWF5IHVzZSB5b3VyCiAgICAgICAgICAgICAgICAgICAgICBwZXJzb25hbCBkYXRhIHRvIHJlY29yZCB5b3VyIGF0dGVuZGFuY2UgYXQgdGhlIGV2ZW50IGFuZCBmb3IgcmVsYXRlZCByZWNvcmQta2VlcGluZyBwdXJwb3NlcyBhbmQsCiAgICAgICAgICAgICAgICAgICAgICBpZiByZWxldmFudCwgd2UgbWF5IGNvbGxlY3QgYW5kIHByb2Nlc3MgYW55IGRpZXRhcnkgcmVxdWlyZW1lbnRzIHlvdSBtYXkgaGF2ZS4gWW91IG1heSBhbHNvCiAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlIGluIHBob3RvZ3JhcGhzIHRha2VuIGF0IG91ciBldmVudHMgYW5kIHN1Y2ggcGhvdG9ncmFwaHMgbWF5IGFwcGVhciBpbiBwdWJsaWNhdGlvbnMgdGhhdCB3ZQogICAgICAgICAgICAgICAgICAgICAgbWFrZSBhdmFpbGFibGUuCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdHJhdGlvbiBEYXRhL0lkZW50aWZpZXJzPGJyIC8+PGJyIC8+UHJvZmlsZSBEYXRhPGJyIC8+PGJyIC8+QXBwcyBQcm9maWxlIERhdGE8YnIgLz48YnIgLz5JbWFnZQogICAgICAgICAgICAgICAgICAgICAgYW5kIHBlcnNvbmFsIGRhdGEgY29udGFpbmVkIGluIGFueSBmZWVkYmFjawogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBuZWNlc3NhcnkgZm9yIHVzIHRvIHVzZSB5b3VyIHBlcnNvbmFsIGRhdGEgaW4gdGhpcyB3YXkgdG8gcGVyZm9ybSBvdXIgb2JsaWdhdGlvbnMgaW4KICAgICAgICAgICAgICAgICAgICAgIGFjY29yZGFuY2Ugd2l0aCBhbnkgY29udHJhY3QgdGhhdCB3ZSBtYXkgaGF2ZSB3aXRoIHlvdSB3aGVyZSB5b3UgaGF2ZSBzaWduZWQgdXAgdG8gYXR0ZW5kIGFuCiAgICAgICAgICAgICAgICAgICAgICBldmVudCwgb3IgaXQgaXMgaW4gb3VyIGxlZ2l0aW1hdGUgaW50ZXJlc3Qgb3IgYSB0aGlyZCBwYXJ0eeKAmXMgbGVnaXRpbWF0ZSBpbnRlcmVzdCB0byB1c2UgcGVyc29uYWwKICAgICAgICAgICAgICAgICAgICAgIGRhdGEgaW4gc3VjaCBhIHdheSB0byBlbnN1cmUgdGhhdCB0aGUgZXZlbnQgaXMgb3BlcmF0ZWQgaW4gYW4gZWZmZWN0aXZlIHdheS48YnIgLz48YnIgLz5XZSBtYXkKICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljYWxseSBhc2sgeW91ciBwZXJtaXNzaW9uIHRvIHVzZSB5b3VyIHBob3RvZ3JhcGhzLCBxdW90ZXMsIHRlc3RpbW9uaWFscywgb3Igb3RoZXIgY29udGVudAogICAgICAgICAgICAgICAgICAgICAgdGhhdCB5b3UgbWFrZSBhdmFpbGFibGUgb3IgcHVibGlzaCBhdCB0aGUgZXZlbnQuIFdoZXJlIHRoaXMgaXMgdGhlIGNhc2UsIG91ciBwcm9jZXNzaW5nIG9mIHlvdXIKICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggcGVyc29uYWwgZGF0YSB3aWxsIGJlIGJhc2VkIG9uIGV4cHJlc3MgY29uc2VudC4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+UEFSVCBDOiBCVVNJTkVTUyBBRE1JTklTVFJBVElPTiwgRklOQU5DSUFMIEFORCBMRUdBTDwvaDU+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImMtcHJpdmFjeV9fc2Nyb2xsV3JhcCI+CiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlM0NvbHVtbnMiPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+RGVzY3JpcHRpb248L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkNhdGVnb3JpZXMgb2YgZGF0YTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+TGVnYWwgYmFzZXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlJlY2VpcHQgb2Ygc2VydmljZTo8L3NwYW4+IElmIHdlIGhhdmUgZW5nYWdlZCBhbgogICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uIHRvIHByb3ZpZGUgdXMgb3Igb3VyIGNsaWVudCB3aXRoIHNlcnZpY2VzIChmb3IgZXhhbXBsZSwgSVQgc3VwcG9ydCBvciBmaW5hbmNpYWwKICAgICAgICAgICAgICAgICAgICAgIGFkdmljZSksIHdlIHdpbGwgY29sbGVjdCBhbmQgcHJvY2VzcyB5b3VyIHBlcnNvbmFsIGRhdGEgaWYgeW91IGFyZSBhIGNvbnRhY3Qgd2l0aGluIHRoZSByZWxldmFudAogICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uIGluIG9yZGVyIHRvIG1hbmFnZSBvdXIgcmVsYXRpb25zaGlwIG9yIG91ciBjbGllbnRzIHdpdGggdGhlIG9yZ2FuaXphdGlvbiwgdG8gcmVjZWl2ZQogICAgICAgICAgICAgICAgICAgICAgc2VydmljZXMgZnJvbSB0aGUgb3JnYW5pc2F0aW9uIGFuZCwgd2hlcmUgcmVsZXZhbnQsIHRvIHByb3ZpZGUgb3VyIHNlcnZpY2VzIHRvIG90aGVycyBpbmNsdWRpbmcKICAgICAgICAgICAgICAgICAgICAgIG91ciBjdXN0b21lcnMuCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5SZWdpc3RyYXRpb24gRGF0YS9JZGVudGlmaWVyczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBuZWNlc3NhcnkgZm9yIHVzIHRvIHVzZSBwZXJzb25hbCBkYXRhIGluIHRoaXMgd2F5IHRvIHBlcmZvcm0gb3VyIG9ibGlnYXRpb25zIGluIGFjY29yZGFuY2UKICAgICAgICAgICAgICAgICAgICAgIHdpdGggYW55IGNvbnRyYWN0IHRoYXQgd2UgbWF5IGhhdmUgd2l0aCB0aGUgb3JnYW5pemF0aW9uLCBvciBpdCBpcyBpbiBvdXIgbGVnaXRpbWF0ZSBpbnRlcmVzdCB0bwogICAgICAgICAgICAgICAgICAgICAgdXNlIHBlcnNvbmFsIGRhdGEgaW4gc3VjaCBhIHdheSB0byBlbnN1cmUgdGhhdCB3ZSBoYXZlIGFuIGVmZmVjdGl2ZSB3b3JraW5nIHJlbGF0aW9uc2hpcCB3aXRoIHRoZQogICAgICAgICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uIGFuZCBhcmUgYWJsZSB0byBwcm92aWRlIG91ciBzZXJ2aWNlcyB0byBvdGhlcnMgaW4gYW4gZWZmZWN0aXZlIHdheS4gV2hlcmUgd2UgZG8gdGhpcwogICAgICAgICAgICAgICAgICAgICAgb24gYmVoYWxmIG9mIG91ciBjbGllbnRzIGFzIGEgZGF0YSBwcm9jZXNzb3IsIHdlIGRvIG5vdCByZXF1aXJlIGEgbGVnYWwgYmFzaXMgZm9yIHN1Y2ggcHJvY2Vzc2luZy4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iYy1wcml2YWN5X190YWJsZTNDb2x1bW5zIj4KICAgICAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkiPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkRlc2NyaXB0aW9uPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5DYXRlZ29yaWVzIG9mIGRhdGE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkxlZ2FsIGJhc2VzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIgogICAgICAgICAgICAgICAgICAgICAgICA+QnVzaW5lc3MgYWRtaW5pc3RyYXRpb24sIGZpbmFuY2UsIGFuZCBsZWdhbCBjb21wbGlhbmNlOjwvc3BhbgogICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgV2UgbWF5IHVzZSBhbiBpbmRpdmlkdWFs4oCZcyBwZXJzb25hbCBkYXRhIGZvciB0aGUgZm9sbG93aW5nIGJ1c2luZXNzIGFkbWluaXN0cmF0aW9uIGFuZCBsZWdhbAogICAgICAgICAgICAgICAgICAgICAgY29tcGxpYW5jZSBwdXJwb3Nlczo8YnIgLz48YnIgLz7jg7t0byBmYWNpbGl0YXRlIHRoZSBvcGVyYXRpb24gb3IgZWZmZWN0aXZlIG1hbmFnZW1lbnQgb2Ygb3VyIGdyb3VwCiAgICAgICAgICAgICAgICAgICAgICBvZiBidXNpbmVzc2VzOzxiciAvPjxiciAvPuODu2ZvciBmaW5hbmNpYWwsIGFjY291bnRpbmcgYW5kIHRheCBwdXJwb3Nlczs8YnIgLz48YnIgLz7jg7t0byBjb21wbHkKICAgICAgICAgICAgICAgICAgICAgIHdpdGggb3VyIGxlZ2FsIG9ibGlnYXRpb25zOzxiciAvPjxiciAvPuODu3RvIGVuZm9yY2Ugb3IgcHJvdGVjdCBvdXIgbGVnYWwgcmlnaHRzOzxiciAvPjxiciAvPuODu3RvCiAgICAgICAgICAgICAgICAgICAgICBkZWFsIHdpdGggY29tcGxhaW50czs8YnIgLz48YnIgLz7jg7t0byBwcm90ZWN0IHRoZSByaWdodHMgb2YgdGhpcmQgcGFydGllcyAoaW5jbHVkaW5nIHdoZXJlIGhlYWx0aAogICAgICAgICAgICAgICAgICAgICAgb3Igc2VjdXJpdHkgb2YgYW4gaW5kaXZpZHVhbCBpcyBlbmRhbmdlcmVkIChlLmcuIGEgZmlyZSk7IGFuZDxiciAvPjxiciAvPuODu2luIGNvbm5lY3Rpb24gd2l0aCBhCiAgICAgICAgICAgICAgICAgICAgICBidXNpbmVzcyB0cmFuc2l0aW9uIG9yIHNhbGUgc3VjaCBhcyBhIG1lcmdlciwgcmUtb3JnYW5pemF0aW9uLCBhY3F1aXNpdGlvbiBieSBhbm90aGVyIGNvbXBhbnksIG9yCiAgICAgICAgICAgICAgICAgICAgICBzYWxlIG9mIGFsbCBvciBhIHBvcnRpb24gb2Ygb3VyIGFzc2V0cy4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlJlZ2lzdHJhdGlvbiBEYXRhL0lkZW50aWZpZXJzPGJyIC8+PGJyIC8+VHJhbnNhY3Rpb24gRGF0YTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBuZWNlc3NhcnkgZm9yIHVzIHRvIHVzZSBwZXJzb25hbCBkYXRhIGluIHRoaXMgd2F5IHRvIHBlcmZvcm0gb3VyIG9ibGlnYXRpb25zIGluIGFjY29yZGFuY2UKICAgICAgICAgICAgICAgICAgICAgIHdpdGggYW55IGNvbnRyYWN0IHRoYXQgd2UgbWF5IGhhdmUgd2l0aCB0aGUgb3JnYW5pc2F0aW9uLCBvciBpdCBpcyBpbiBvdXIgbGVnaXRpbWF0ZSBpbnRlcmVzdCB0bwogICAgICAgICAgICAgICAgICAgICAgdXNlIHBlcnNvbmFsIGRhdGEgaW4gc3VjaCBhIHdheSB0byBlbnN1cmUgdGhhdCB3ZSBoYXZlIGFuIGVmZmVjdGl2ZSB3b3JraW5nIHJlbGF0aW9uc2hpcCB3aXRoIHRoZQogICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uIGFuZCBhcmUgYWJsZSB0byBwcm92aWRlIG91ciBzZXJ2aWNlcyB0byBvdGhlcnMgaW4gYW4gZWZmZWN0aXZlIHdheS4gV2hlcmUgd2UgZG8gdGhpcwogICAgICAgICAgICAgICAgICAgICAgb24gYmVoYWxmIG9mIG91ciBjbGllbnRzIGFzIGEgZGF0YSBwcm9jZXNzb3IsIHdlIGRvIG5vdCByZXF1aXJlIGEgbGVnYWwgYmFzaXMgZm9yIHN1Y2ggcHJvY2Vzc2luZy4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9fc3ViSXRlbSI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+My4gSG93IExvbmcgV2UgS2VlcCBZb3VyIEluZm9ybWF0aW9uPC9oND4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgIFdlIHdpbGwgb25seSBzdG9yZSB5b3VyIGluZm9ybWF0aW9uIGFzIGxvbmcgYXMgbmVjZXNzYXJ5IHRvIGZ1bGZpbGwgdGhlIHB1cnBvc2VzIGZvciB3aGljaCB0aGUgaW5mb3JtYXRpb24KICAgICAgICAgICAgICBpcyBjb2xsZWN0ZWQgYW5kIHByb2Nlc3NlZCBvciwgd2hlcmUgYXBwbGljYWJsZSBsYXcgcHJvdmlkZXMgZm9yIGxvbmdlciBzdG9yYWdlIGFuZCByZXRlbnRpb24gcGVyaW9kcywgZm9yCiAgICAgICAgICAgICAgdGhlIHN0b3JhZ2UgYW5kIHJldGVudGlvbiBwZXJpb2QgcmVxdWlyZWQgYnkgbGF3LiBXaGVyZSB3ZSBwcm9jZXNzIGFueSBvdGhlciBwZXJzb25hbCBkYXRhLCB3ZSB3aWxsIHJldGFpbgogICAgICAgICAgICAgIHJlbGV2YW50IHBlcnNvbmFsIGRhdGEgZm9yIHVwIHRvIHNpeCB5ZWFycyBmcm9tIHRoZSBkYXRlIG9mIG91ciBsYXN0IGludGVyYWN0aW9uIHdpdGggeW91IChhbmQgaW4KICAgICAgICAgICAgICBjb21wbGlhbmNlIHdpdGggb3VyIGRhdGEgcHJvdGVjdGlvbiBvYmxpZ2F0aW9ucykuIFdlIG1heSB0aGVuIGRlc3Ryb3kgc3VjaCBmaWxlcyB3aXRob3V0IGZ1cnRoZXIgbm90aWNlIG9yCiAgICAgICAgICAgICAgbGlhYmlsaXR5LjxiciAvPjxiciAvPklmIGFueSBwZXJzb25hbCBkYXRhIGlzIG9ubHkgdXNlZnVsIGZvciBhIHNob3J0IHBlcmlvZCAoc3VjaCBhcyBmb3IgYSBzcGVjaWZpYwogICAgICAgICAgICAgIGFjdGl2aXR5LCBwcm9tb3Rpb24gb3IgbWFya2V0aW5nIGNhbXBhaWduKSwgd2Ugd2lsbCBub3QgcmV0YWluIGl0IGZvciBsb25nZXIgdGhhbiB0aGUgcGVyaW9kIGZvciB3aGljaCBpdAogICAgICAgICAgICAgIGlzIHVzZWQgYnkgdXMuPGJyIC8+PGJyIC8+SWYgeW91IGhhdmUgb3B0ZWQgb3V0IG9mIHJlY2VpdmluZyBtYXJrZXRpbmcgY29tbXVuaWNhdGlvbnMgZnJvbSB1cywgd2Ugd2lsbAogICAgICAgICAgICAgIG5lZWQgdG8gcmV0YWluIGNlcnRhaW4gcGVyc29uYWwgZGF0YSBvbiBhIHN1cHByZXNzaW9uIGxpc3QgaW5kZWZpbml0ZWx5IHNvIHRoYXQgd2Uga25vdyBub3QgdG8gc2VuZCB5b3UKICAgICAgICAgICAgICBmdXJ0aGVyIG1hcmtldGluZyBjb21tdW5pY2F0aW9ucyBpbiB0aGUgZnV0dXJlLiBIb3dldmVyLCB3ZSB3aWxsIG5vdCB1c2UgdGhpcyBwZXJzb25hbCBkYXRhIHRvIHNlbmQgeW91CiAgICAgICAgICAgICAgZnVydGhlciBtYXJrZXRpbmcgdW5sZXNzIHlvdSBzdWJzZXF1ZW50bHkgb3B0IGJhY2sgaW4gdG8gcmVjZWl2ZSBzdWNoIG1hcmtldGluZy4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9saT4KICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4KICAgICAgICAgICAgPGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj40LiBIb3cgV2UgU2hhcmUgWW91ciBJbmZvcm1hdGlvbjwvaDQ+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBXZSBtYXkgZGlzY2xvc2UgYWdncmVnYXRlZCBpbmZvcm1hdGlvbiBhYm91dCB1c2VycywgYW5kIGluZm9ybWF0aW9uIHRoYXQgZG9lcyBub3QgaWRlbnRpZnkgYW55IGluZGl2aWR1YWwsCiAgICAgICAgICAgICAgd2l0aG91dCByZXN0cmljdGlvbi48YnIgLz48YnIgLz5XZSBtYXkgYWxzbyBkaXNjbG9zZSBwZXJzb25hbCBpbmZvcm1hdGlvbiB0aGF0IHdlIGNvbGxlY3Qgb3IgeW91IHByb3ZpZGUKICAgICAgICAgICAgICBhcyBkZXNjcmliZWQgaW4gdGhpcyBQcml2YWN5IFBvbGljeToKICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8dWwgY2xhc3M9ImMtcHJpdmFjeV9fc3ViTGlzdCI+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgICAgICDjg7tUbyBvdXIgc3Vic2lkaWFyaWVzIGFuZCBhZmZpbGlhdGVzOzxiciAvPuODu1RvIGNvbnRyYWN0b3JzLCBzZXJ2aWNlIHByb3ZpZGVycywgYWR2ZXJ0aXNpbmcgcGFydG5lcnMsCiAgICAgICAgICAgICAgICAgIGV2ZW50IHBhcnRuZXJzLCBhbmQgb3RoZXIgdGhpcmQgcGFydGllcyB3ZSB1c2UgdG8gc3VwcG9ydCBvdXIgYnVzaW5lc3MgYW5kL29yIHRoZSBBcHBzIGFuZCB3aG8gYXJlCiAgICAgICAgICAgICAgICAgIGJvdW5kIGJ5IGNvbnRyYWN0dWFsIG9ibGlnYXRpb25zIHRvIGtlZXAgcGVyc29uYWwgaW5mb3JtYXRpb24gY29uZmlkZW50aWFsIGFuZCB1c2UgaXQgb25seSBmb3IgdGhlCiAgICAgICAgICAgICAgICAgIHB1cnBvc2VzIGZvciB3aGljaCB3ZSBkaXNjbG9zZSBpdCB0byB0aGVtLjxiciAvPuODu1RvIGEgYnV5ZXIgb3Igb3RoZXIgc3VjY2Vzc29yIGluIHRoZSBldmVudCBvZiBhCiAgICAgICAgICAgICAgICAgIG1lcmdlciwgZGl2ZXN0aXR1cmUsIHJlc3RydWN0dXJpbmcsIHJlb3JnYW5pemF0aW9uLCBkaXNzb2x1dGlvbiwgb3Igb3RoZXIgc2FsZSBvciB0cmFuc2ZlciBvZiBzb21lIG9yCiAgICAgICAgICAgICAgICAgIGFsbCBvZiBDb2NvbmXigJlzIGFzc2V0cywgd2hldGhlciBhcyBhIGdvaW5nIGNvbmNlcm4gb3IgYXMgcGFydCBvZiBiYW5rcnVwdGN5LCBsaXF1aWRhdGlvbiwgb3Igc2ltaWxhcgogICAgICAgICAgICAgICAgICBwcm9jZWVkaW5ncywgaW4gd2hpY2ggcGVyc29uYWwgaW5mb3JtYXRpb24gaGVsZCBieSBDb2NvbmUgYWJvdXQgQXBwIHVzZXJzIGlzIGFtb25nIHRoZSBhc3NldHMKICAgICAgICAgICAgICAgICAgdHJhbnNmZXJyZWQuPGJyIC8+44O7VG8gYXVkaXRvcnMsIGxhd3llcnMsIGFjY291bnRhbnRzIGFuZCBvdGhlciBwcm9mZXNzaW9uYWwgYWR2aXNlcnM7PGJyIC8+44O7RnJvbQogICAgICAgICAgICAgICAgICB0aW1lIHRvIHRpbWUsIHRvIG90aGVyIHRoaXJkIHBhcnRpZXMgZm9yIGFueSBvdGhlciBwdXJwb3NlIGRpc2Nsb3NlZCBieSB1cyB3aGVuIHlvdSBwcm92aWRlIHRoZQogICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi48YnIgLz7jg7tXaXRoIHlvdXIgY29uc2VudC48YnIgLz5XZSBtYXkgYWxzbyBkaXNjbG9zZSB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uOjxiciAvPuODu1RvCiAgICAgICAgICAgICAgICAgIGNvbXBseSB3aXRoIGFueSBjb3VydCBvcmRlciwgbGF3LCBvciBsZWdhbCBwcm9jZXNzLCBpbmNsdWRpbmcgcmVzcG9uZGluZyB0byBhbnkgZ292ZXJubWVudCBvcgogICAgICAgICAgICAgICAgICByZWd1bGF0b3J5IHJlcXVlc3QuPGJyIC8+44O7VG8gZW5mb3JjZSBvciBhcHBseSBvdXIgVGVybXMgb2YgVXNlIGFuZCBvdGhlciBhZ3JlZW1lbnRzLCBpbmNsdWRpbmcgZm9yCiAgICAgICAgICAgICAgICAgIGJpbGxpbmcgYW5kIGNvbGxlY3Rpb24gcHVycG9zZXMuPGJyIC8+44O7SWYgd2UgcmVhc29uYWJseSBiZWxpZXZlICh3aXRoaW4gdGhlIGJvdW5kcyBvZiBhcHBsaWNhYmxlIGxhdykKICAgICAgICAgICAgICAgICAgZGlzY2xvc3VyZSBpcyBuZWNlc3Nhcnkgb3IgYXBwcm9wcmlhdGUgdG8gcHJvdGVjdCB0aGUgcmlnaHRzLCBwcm9wZXJ0eSwgc2VjdXJpdHkgb3Igc2FmZXR5IG9mIENvY29uZSwKICAgICAgICAgICAgICAgICAgb3VyIGN1c3RvbWVycywgb3Igb3RoZXJzLCBvciB0byBhZGRyZXNzIHRlY2huaWNhbCBpc3N1ZXMuIFRoaXMgaW5jbHVkZXMgZXhjaGFuZ2luZyBpbmZvcm1hdGlvbiB3aXRoCiAgICAgICAgICAgICAgICAgIG90aGVyIGNvbXBhbmllcyBhbmQgb3JnYW5pemF0aW9ucyBmb3IgdGhlIHB1cnBvc2VzIG9mIGZyYXVkIHByb3RlY3Rpb24gYW5kIGNyZWRpdCByaXNrIHJlZHVjdGlvbi4KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5DaG9pY2VzIEFib3V0IEhvdyBXZSBVc2UgYW5kIERpc2Nsb3NlIFlvdXIgSW5mb3JtYXRpb248L2g1PgogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+CiAgICAgICAgICAgICAgV2UgaGF2ZSBjcmVhdGVkIG1lY2hhbmlzbXMgdG8gcHJvdmlkZSB5b3Ugd2l0aCB0aGUgZm9sbG93aW5nIGNvbnRyb2wgb3ZlciB5b3VyIGluZm9ybWF0aW9uOgogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iYy1wcml2YWN5X19zdWJMaXN0Ij4KICAgICAgICAgICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9fc3ViSXRlbSI+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+CiAgICAgICAgICAgICAgICAgIOODu1RyYWNraW5nIFRlY2hub2xvZ2llcyBhbmQgQWR2ZXJ0aXNpbmcuIFlvdSBjYW4gc2V0IHlvdXIgYnJvd3NlciB0byByZWZ1c2UgYWxsIG9yIHNvbWUgYnJvd3NlcgogICAgICAgICAgICAgICAgICBjb29raWVzLCBvciB0byBhbGVydCB5b3Ugd2hlbiBjb29raWVzIGFyZSBiZWluZyBzZW50LiBJZiB5b3UgZGlzYWJsZSBvciByZWZ1c2UgY29va2llcywgcGxlYXNlIG5vdGUKICAgICAgICAgICAgICAgICAgdGhhdCBzb21lIHBhcnRzIG9mIHRoZSBBcHBzIG1heSB0aGVuIGJlIGluYWNjZXNzaWJsZSBvciBub3QgZnVuY3Rpb24gcHJvcGVybHkuCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgIFdlIGRvIG5vdCBjb250cm9sIHRoaXJkIHBhcnRpZXPigJkgY29sbGVjdGlvbiBvciB1c2Ugb2YgeW91ciBpbmZvcm1hdGlvbiB0byBzZXJ2ZSBpbnRlcmVzdC1iYXNlZAogICAgICAgICAgICAgIGFkdmVydGlzaW5nLiBIb3dldmVyLCB0aGVzZSB0aGlyZCBwYXJ0aWVzIG1heSBwcm92aWRlIHlvdSB3aXRoIHdheXMgdG8gY2hvb3NlIG5vdCB0byBoYXZlIHlvdXIgaW5mb3JtYXRpb24KICAgICAgICAgICAgICBjb2xsZWN0ZWQgb3IgdXNlZCBpbiB0aGlzIHdheS4gWW91IG1heSBvcHQgb3V0IG9mIHJlY2VpdmluZyB0YXJnZXRlZCBhZHMgZnJvbSBtZW1iZXJzIG9mIHRoZSBOZXR3b3JrCiAgICAgICAgICAgICAgQWR2ZXJ0aXNpbmcgSW5pdGlhdGl2ZSBvbjxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Imh0dHBzOi8vb3B0b3V0Lm5ldHdvcmthZHZlcnRpc2luZy5vcmcvP2M9MSI+CiAgICAgICAgICAgICAgICB0aGVpciB3ZWJzaXRlLjwvYQogICAgICAgICAgICAgID48YnIgLz48YnIgLz5DYWxpZm9ybmlhIHJlc2lkZW50cyBtYXkgaGF2ZSBhZGRpdGlvbmFsIHBlcnNvbmFsIGluZm9ybWF0aW9uIHJpZ2h0cyBhbmQgY2hvaWNlcy4gUGxlYXNlIHNlZQogICAgICAgICAgICAgIFlvdXIgQ2FsaWZvcm5pYSBQcml2YWN5IFJpZ2h0cyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9saT4KICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4KICAgICAgICAgICAgPGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj41LiBDaGlsZHJlbuKAmXMgUHJpdmFjeTwvaDQ+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBJZiB3ZSBsZWFybiB3ZSBoYXZlIGNvbGxlY3RlZCBvciByZWNlaXZlZCBwZXJzb25hbCBpbmZvcm1hdGlvbiBmcm9tIGEgY2hpbGQgdW5kZXIgdGhpcnRlZW4gKDEzKSB3aXRob3V0CiAgICAgICAgICAgICAgdmVyaWZpY2F0aW9uIG9mIHByaW9yIHBhcmVudGFsIGNvbnNlbnQsIHdlIHdpbGwgZGVsZXRlIHRoYXQgaW5mb3JtYXRpb24uIElmIHlvdSBiZWxpZXZlIHdlIG1heSBwb3NzZXNzIG9yCiAgICAgICAgICAgICAgaGF2ZSByZWNlaXZlZCBhbnkgaW5mb3JtYXRpb24gZnJvbSBvciBhYm91dCBhIGNoaWxkIHVuZGVyIHRoaXJ0ZWVuICgxMykgd2l0aG91dCBzdWNoIHByaW9yIHBhcmVudGFsCiAgICAgICAgICAgICAgY29uc2VudCwgcGxlYXNlIGltbWVkaWF0ZWx5IGNvbnRhY3QgdXMgYnkgZW1haWwgYXQgdGhlIGVtYWlsIGFkZHJlc3MgcHJvdmlkZWQgaW4gdGhlIOKAnENvbnRhY3RpbmcgQ29jb25l4oCdCiAgICAgICAgICAgICAgU2VjdGlvbiAxNCBiZWxvdy48YnIgLz4KICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICBJbiBvbmUgb3IgbW9yZSBjb3VudHJpZXMgb3V0c2lkZSB0aGUgVW5pdGVkIFN0YXRlcywgdGhlIGFwcGxpY2FibGUgYWdlIGlzIGZvdXJ0ZWVuICgxNCkgeWVhcnMgb2YgYWdlLAogICAgICAgICAgICAgIHJhdGhlciB0aGFuIHRoaXJ0ZWVuICgxMykgeWVhcnMgb2YgYWdlLjxiciAvPgogICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgIENhbGlmb3JuaWEgcmVzaWRlbnRzIHVuZGVyIHNpeHRlZW4gKDE2KSB5ZWFycyBvZiBhZ2UgbWF5IGhhdmUgYWRkaXRpb25hbCByaWdodHMgcmVnYXJkaW5nIHRoZSBjb2xsZWN0aW9uCiAgICAgICAgICAgICAgYW5kIHNhbGUgb2YgdGhlaXIgcGVyc29uYWwgaW5mb3JtYXRpb24uIFBsZWFzZSBzZWUgWW91ciBDYWxpZm9ybmlhIFByaXZhY3kgUmlnaHRzIGJlbG93IGZvciBtb3JlCiAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9fc3ViSXRlbSI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Ni4gSG93IFdlIFByb3RlY3QgWW91ciBJbmZvcm1hdGlvbjwvaDQ+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBXZSBoYXZlIGltcGxlbWVudGVkIG1lYXN1cmVzIGRlc2lnbmVkIHRvIHNlY3VyZSB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uIGZyb20gYWNjaWRlbnRhbCBsb3NzIGFuZCBmcm9tCiAgICAgICAgICAgICAgdW5hdXRob3JpemVkIGFjY2VzcywgdGhlZnQsIHVzZSwgYWx0ZXJhdGlvbiwgYW5kIGRpc2Nsb3N1cmUuIEFsbCBpbmZvcm1hdGlvbiB5b3UgcHJvdmlkZSB0byB1cyBpcyBzdG9yZWQKICAgICAgICAgICAgICBvbiBvdXIgc2VjdXJlIHNlcnZlcnMgYmVoaW5kIGZpcmV3YWxscy4gQW55IHBheW1lbnQgdHJhbnNhY3Rpb25zIHdpbGwgYmUgZW5jcnlwdGVkIHVzaW5nIFNTTAogICAgICAgICAgICAgIHRlY2hub2xvZ3kuPGJyIC8+PGJyIC8+VGhlIHNhZmV0eSBhbmQgc2VjdXJpdHkgb2YgeW91ciBpbmZvcm1hdGlvbiBhbHNvIGRlcGVuZCBvbiB5b3UuIFdoZXJlIHdlIGhhdmUKICAgICAgICAgICAgICBpc3N1ZWQgeW91IChvciB5b3UgaGF2ZSBjaG9zZW4pIGEgcGFzc3dvcmQgZm9yIGFjY2VzcyB0byBjZXJ0YWluIHBhcnRzIG9mIG91ciBBcHBzLCB5b3UgYXJlIHJlc3BvbnNpYmxlCiAgICAgICAgICAgICAgZm9yIGtlZXBpbmcgeW91ciBwYXNzd29yZCBjb25maWRlbnRpYWwuIFBsZWFzZSBkbyBub3Qgc2hhcmUgeW91ciBwYXNzd29yZCB3aXRoIGFueW9uZS48YnIgLz48YnIgLz5XZSBkbwogICAgICAgICAgICAgIG5vdCBhbmQgd2lsbCBub3QsIGF0IGFueSB0aW1lLCByZXF1ZXN0IHlvdXIgY3JlZGl0IGNhcmQgaW5mb3JtYXRpb24sIHlvdXIgbG9naW4gaW5mb3JtYXRpb24gb3Igb3RoZXIKICAgICAgICAgICAgICBpZGVudGlmaWNhdGlvbiBpbiBhIG5vbi1zZWN1cmUgb3IgdW5zb2xpY2l0ZWQgY29tbXVuaWNhdGlvbiAoc3VjaCBhcyBlbWFpbCkuPGJyIC8+PGJyIC8+QWx0aG91Z2ggd2UgZG8gb3VyCiAgICAgICAgICAgICAgYmVzdCB0byBwcm90ZWN0IHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24sIHdlIGNhbm5vdCBndWFyYW50ZWUgdGhlIHNlY3VyaXR5IG9mIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24KICAgICAgICAgICAgICB0cmFuc21pdHRlZCB0byBvciBvbiBvdXIgQXBwcy4gQW55IHRyYW5zbWlzc2lvbiBvZiBwZXJzb25hbCBpbmZvcm1hdGlvbiBpcyBhdCB5b3VyIG93biByaXNrLiBZb3UgYXNzdW1lCiAgICAgICAgICAgICAgdGhpcyByaXNrIGJ5IHVzaW5nIGFueSBwYXJ0IG9mIHRoZSBBcHBzLiBXZSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBjaXJjdW12ZW50aW9uIG9mIGFueSBvZiBvdXIgcHJpdmFjeQogICAgICAgICAgICAgIHNldHRpbmdzIG9yIHNlY3VyaXR5IG1lYXN1cmVzLCBhbmQvb3IgYW55IGRhbWFnZXMgcmVzdWx0aW5nIGZyb20gc3VjaCBjaXJjdW12ZW50aW9uLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPgogICAgICAgICAgICA8aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjcuIEhvdyBZb3UgTWF5IENoYW5nZSwgUmVtb3ZlLCBPciBFeHBvcnQgWW91ciBJbmZvcm1hdGlvbjwvaDQ+CiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+QWNjZXNzaW5nIGFuZCBDb3JyZWN0aW5nIFlvdXIgSW5mb3JtYXRpb248L2g1PgogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+CiAgICAgICAgICAgICAgWW91IGNhbiByZXZpZXcgYW5kIGNoYW5nZSB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uIGJ5IHNlbmRpbmcgdXMgYW4gZW1haWwgYXQgdGhlIGVtYWlsIGFkZHJlc3MgcHJvdmlkZWQKICAgICAgICAgICAgICBpbiB0aGUg4oCcQ29udGFjdGluZyBDb2NvbmXigJ0gU2VjdGlvbiAxNCBiZWxvdyB0byByZXF1ZXN0IGFjY2VzcyB0bywgb2JqZWN0IHRvLCBjb3JyZWN0IG9yIGRlbGV0ZSBhbnkKICAgICAgICAgICAgICBwZXJzb25hbCBpbmZvcm1hdGlvbiB0aGF0IHlvdSBoYXZlIHByb3ZpZGVkIHRvIHVzLjxiciAvPgogICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgIFdlIG1heSBub3QgYWNjb21tb2RhdGUgYSByZXF1ZXN0IHRvIGNoYW5nZSBpbmZvcm1hdGlvbiBpZiB3ZSByZWFzb25hYmx5IGJlbGlldmUgdGhlIGNoYW5nZSB3b3VsZCB2aW9sYXRlCiAgICAgICAgICAgICAgYW55IGxhdyBvciBsZWdhbCByZXF1aXJlbWVudCwgb3IgY2F1c2UgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluY29ycmVjdC48YnIgLz4KICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICBJZiB5b3UgZGVsZXRlIHlvdXIgdXNlciBjb250ZW50LCBjb3BpZXMgb2YgeW91ciB1c2VyIGNvbnRlbnQgbWF5IHJlbWFpbiB2aWV3YWJsZSBpbiBjYWNoZWQgYW5kIGFyY2hpdmVkCiAgICAgICAgICAgICAgcGFnZXMsIG9yIG1pZ2h0IGhhdmUgYmVlbiBjb3BpZWQgb3Igc3RvcmVkIGJ5IG90aGVyIHVzZXJzLiBQcm9wZXIgYWNjZXNzIHRvIGFuZCB1c2Ugb2YgaW5mb3JtYXRpb24sCiAgICAgICAgICAgICAgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB1c2VyIGNvbnRlbnQsIGlzIGdvdmVybmVkIGJ5IG91ciBUZXJtcyBvZiBVc2UuPGJyIC8+CiAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgWW91IG1heSBlbWFpbCB1cyBhdCB0aGUgZW1haWwgYWRkcmVzcyBwcm92aWRlZCBpbiB0aGUg4oCcQ29udGFjdGluZyBDb2NvbmXigJ0gU2VjdGlvbiAxNCBiZWxvdyB0byByZXF1ZXN0IHRoYXQKICAgICAgICAgICAgICB3ZSBkZWxldGUgeW91ciBwZXJzb25hbCBpbmZvcm1hdGlvbiBmcm9tIG91ciBkYXRhYmFzZS4gRm9yIHN1Y2ggcmVxdWVzdHMsIHBsZWFzZSB3cml0ZSDigJxkZWxldGUgbXkgcGVyc29uYWwKICAgICAgICAgICAgICBpbmZvcm1hdGlvbuKAnSBpbiB0aGUgc3ViamVjdCBsaW5lLCBhbmQgaW5jbHVkZSB5b3VyIGVtYWlsIGFkZHJlc3MgaW4gdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UuIFdlIHdpbGwgdXNlCiAgICAgICAgICAgICAgY29tbWVyY2lhbGx5IHJlYXNvbmFibGUgZWZmb3J0cyB0byBob25vciB5b3VyIHJlcXVlc3QuIFdlIG1heSByZXRhaW4gYW4gYXJjaGl2ZWQgY29weSBvZiB5b3VyIHJlY29yZHMgYXMKICAgICAgICAgICAgICByZXF1aXJlZCBieSBsYXcgb3IgZm9yIGFkbWluaXN0cmF0aXZlIHB1cnBvc2VzLjxiciAvPgogICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgIFBsZWFzZSBub3RlIHRoYXQgd2Ugd2lsbCBzdG9yZSBjb21tdW5pY2F0aW9ucyB5b3UgbWF5IHNlbmQgdGhyb3VnaCB0aGUgQXBwcywgYXMgd2VsbCBhcyBhbnkgY29tbWVudHMgeW91CiAgICAgICAgICAgICAgbWF5IHBvc3QsIGFuZCB0aGV5IG1heSBub3QgYmUgc3ViamVjdCB0byBtb2RpZmljYXRpb24gb3IgZGVsZXRpb24uPGJyIC8+CiAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgUGxlYXNlIG5vdGUsIHNpbWlsYXIgcmlnaHRzIHdpbGwgYXBwbHkgaW4gdGhlIFVLLCBFRUEgYW5kIFN3aXR6ZXJsYW5kLiBQbGVhc2Ugc2VlIHRoZTxzcGFuCiAgICAgICAgICAgICAgICBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgUHJpdmFjeSBzZWN0aW9uIGZvciB1c2VycyBmcm9tIHRoZSBFRUEuIFVLIGFuZCBTd2l0emVybGFuZDwvc3BhbgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBmb3IgZnVydGhlciBpbmZvcm1hdGlvbgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPgogICAgICAgICAgICA8aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjguIExpbmtzIFRvIFRoaXJkLVBhcnR5IFdlYnNpdGVzIEFuZCBTZXJ2aWNlczwvaDQ+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBUaGUgQXBwcyBtYXkgY29udGFpbiBsaW5rcyB0byBvdGhlciB3ZWJzaXRlcyBhbmQgb25saW5lIHNlcnZpY2VzLiBJZiB5b3UgY2hvb3NlIHRvIGNsaWNrIHRocm91Z2ggdG8gb25lIG9mCiAgICAgICAgICAgICAgdGhlc2Ugb3RoZXIgd2Vic2l0ZXMgb3Igb25saW5lIHNlcnZpY2VzLCBwbGVhc2Ugbm90ZSB0aGF0IGFueSBpbmZvcm1hdGlvbiB5b3UgbWF5IHByb3ZpZGUgd2lsbCBiZSBzdWJqZWN0CiAgICAgICAgICAgICAgdG8gdGhlIHByaXZhY3kgcG9saWN5IGFuZCBvdGhlciB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGF0IHdlYnNpdGUgb3Igc2VydmljZSwgYW5kIG5vdCB0byB0aGlzIFByaXZhY3kKICAgICAgICAgICAgICBQb2xpY3kuIFdlIGRvIG5vdCBjb250cm9sIHRoaXJkLXBhcnR5IHdlYnNpdGVzIG9yIHNlcnZpY2VzLCBhbmQgdGhlIGZhY3QgdGhhdCBhIGxpbmsgdG8gc3VjaCBhIHdlYnNpdGUgb3IKICAgICAgICAgICAgICBzZXJ2aWNlIGFwcGVhcnMgaW4gdGhlIEFwcHMgZG9lcyBub3QgbWVhbiB0aGF0IHdlIGVuZG9yc2UgaXRzIG9yIGl0cyBwcm92aWRlciwgb3IgaGF2ZSBhcHByb3ZlZCB0aGUKICAgICAgICAgICAgICBwcm92aWRlcuKAmXMgcG9saWNpZXMgb3IgcHJhY3RpY2VzIHJlbGF0ZWQgdG8gdXNlciBpbmZvcm1hdGlvbi48YnIgLz48YnIgLz5CZWZvcmUgcHJvdmlkaW5nIGFueSBpbmZvcm1hdGlvbgogICAgICAgICAgICAgIHRvIGFueSB0aGlyZC1wYXJ0eSB3ZWJzaXRlIG9yIHNlcnZpY2UsIHBsZWFzZSByZXZpZXcgdGhlIHByaXZhY3kgcG9saWN5IGFuZCBvdGhlciB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICAgICAgICAgIHRoYXQgd2Vic2l0ZSBvciBzZXJ2aWNlLiBZb3UgYWdyZWUgdGhhdCBDb2NvbmUgd2lsbCBoYXZlIG5vIGxpYWJpbGl0eSBmb3IgYW55IG1hdHRlcnMgcmVsYXRpbmcgdG8gYQogICAgICAgICAgICAgIHRoaXJkLXBhcnR5IHdlYnNpdGUgb3Igc2VydmljZSB0aGF0IHlvdSBwcm92aWRlIGluZm9ybWF0aW9uIHRvLCBpbmNsdWRpbmcgdGhlaXIgY29sbGVjdGlvbiBhbmQvb3IgaGFuZGxpbmcKICAgICAgICAgICAgICBvZiB0aGF0IGluZm9ybWF0aW9uLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPgogICAgICAgICAgICA8aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjkuIE5vbi1VLlMuIFVzZXJzPC9oND4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgIFdoZW4gd2UgcmVmZXIgdG8gdGhlIHRlcm0g4oCcPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkdEUFI8L3NwYW4+4oCdIGluIHRoaXMgUHJpdmFjeSBQb2xpY3kgd2UKICAgICAgICAgICAgICBtZWFuIHRoZSBFdXJvcGVhbiBVbmlvbiBHZW5lcmFsIERhdGEgUHJvdGVjdGlvbiBSZWd1bGF0aW9uLiBJbmZvcm1hdGlvbiB0aGF0IHlvdSBwcm92aWRlIG1heSBiZQogICAgICAgICAgICAgIHRyYW5zZmVycmVkIG9yIGFjY2Vzc2VkIGJ5IGVudGl0aWVzIGFyb3VuZCB0aGUgd29ybGQgYXMgZGVzY3JpYmVkIGluIHRoaXMgUHJpdmFjeSBQb2xpY3kuIElmIHlvdSBhcmUKICAgICAgICAgICAgICBsb2NhdGVkIG91dHNpZGUgdGhlIFVuaXRlZCBTdGF0ZXMsIHlvdSB1bmRlcnN0YW5kIHRoYXQgd2UgbWF5IHRyYW5zZmVyIHBlcnNvbmFsIGluZm9ybWF0aW9uIHRvIGFuZCBwcm9jZXNzCiAgICAgICAgICAgICAgaXQgaW4gdGhlIFVuaXRlZCBTdGF0ZXMuIEluIHN1Y2ggZXZlbnQsIHRyYW5zZmVycmVkIHBlcnNvbmFsIGluZm9ybWF0aW9uIHdpbGwgbm9uZXRoZWxlc3MgYmUgcHJvY2Vzc2VkIGFuZAogICAgICAgICAgICAgIGhlbGQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YgdGhlIGFwcGxpY2FibGUgbGF3IGluIHlvdXIgcGxhY2Ugb2YgcmVzaWRlbmNlLiBJZiB5b3UgYXJlCiAgICAgICAgICAgICAgbG9jYXRlZCBpbiB0aGUgVUssIEVFQSBvciBTd2l0emVybGFuZCBwbGVhc2Ugbm90ZSB0aGF0IHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gbWF5IGJlIHRyYW5zZmVycmVkCiAgICAgICAgICAgICAgb3V0c2lkZSBvZiB0aGUgVUssIEVFQSBvciBTd2l0emVybGFuZC4gWW91ciBjb25zZW50IHRvIHRoaXMgUHJpdmFjeSBQb2xpY3kgdG9nZXRoZXIgd2l0aCB5b3VyIHN1Ym1pc3Npb24KICAgICAgICAgICAgICBvZiBwZXJzb25hbCBpbmZvcm1hdGlvbiBjb25zdGl0dXRlIHlvdXIgYWdyZWVtZW50IHRvIHRoZXNlIHRyYW5zZmVycy4gUGxlYXNlIHNlZSB0aGU8c3BhbgogICAgICAgICAgICAgICAgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIFByaXZhY3kgc2VjdGlvbiBmb3IgdXNlcnMgZnJvbSB0aGUgRUVBLCBVSyBhbmQgU3dpdHplcmxhbmQ8L3NwYW4KICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9fc3ViSXRlbSI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+MTAuIFByaXZhY3kgc2VjdGlvbiBmb3IgdXNlcnMgZnJvbSB0aGUgVUssIEVFQSBhbmQgU3dpdHplcmxhbmQ8L2g0PgogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+CiAgICAgICAgICAgICAgQnkgY29udGludWluZyB0byB1c2Ugb3VyIEFwcHMgeW91IGFja25vd2xlZGdlIHRoYXQgeW91ciBkYXRhIHdpbGwgYmUgcHJvY2Vzc2VkIGluIGFjY29yZGFuY2Ugd2l0aCB0aGlzCiAgICAgICAgICAgICAgUHJpdmFjeSBQb2xpY3kuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5BLiBEYXRhIENvbnRyb2xsZXI8L2g1PgogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+CiAgICAgICAgICAgICAgRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIFByaXZhY3kgUG9saWN5LCBDb2NvbmUgT05FIGNvcnBvcmF0aW9uIGlzIHRoZSBEYXRhIENvbnRyb2xsZXIgb2YgeW91ciBwZXJzb25hbAogICAgICAgICAgICAgIGluZm9ybWF0aW9uLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Qi4gSW50ZXJuYXRpb25hbCB0cmFuc2ZlcnMgb2YgcGVyc29uYWwgZGF0YTwvaDU+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBOb24tVUsvRUVBIGNvdW50cmllcyBtYXkgbm90IHByb3ZpZGUgdGhlIHNhbWUgZGVncmVlIG9mIHByb3RlY3Rpb24gZm9yIHlvdXIgcGVyc29uYWwgZGF0YSwgbWF5IG5vdCBnaXZlCiAgICAgICAgICAgICAgeW91IHRoZSBzYW1lIHJpZ2h0cyBpbiByZWxhdGlvbiB0byB5b3VyIHBlcnNvbmFsIGRhdGEgYW5kIG1heSBub3QgaGF2ZSBhIGRhdGEgcHJvdGVjdGlvbiBzdXBlcnZpc29yeQogICAgICAgICAgICAgIGF1dGhvcml0eSB0byBoZWxwIHlvdSBpZiB5b3UgaGF2ZSBhbnkgY29uY2VybnMgYWJvdXQgdGhlIHByb2Nlc3Npbmcgb2YgeW91ciBwZXJzb25hbCBkYXRhLiBIb3dldmVyLCB3aGVuCiAgICAgICAgICAgICAgdHJhbnNmZXJyaW5nIHlvdXIgcGVyc29uYWwgZGF0YSAodGhhdCBvcmlnaW5hdGVzIGZyb20gdGhlIFVLLCBFRUEgb3IgU3dpdHplcmxhbmQpIG91dHNpZGUgdGhlIFVLLCBFRUEgb3IKICAgICAgICAgICAgICBTd2l0emVybGFuZCwgd2Ugd2lsbCBjb21wbHkgd2l0aCBvdXIgbGVnYWwgYW5kIHJlZ3VsYXRvcnkgb2JsaWdhdGlvbnMgaW4gcmVsYXRpb24gdG8geW91ciBwZXJzb25hbCBkYXRhLAogICAgICAgICAgICAgIGluY2x1ZGluZyBoYXZpbmcgYSBsYXdmdWwgYmFzaXMgZm9yIHRyYW5zZmVycmluZyBwZXJzb25hbCBkYXRhIGFuZCBwdXR0aW5nIGFwcHJvcHJpYXRlIHNhZmVndWFyZHMgaW4gcGxhY2UKICAgICAgICAgICAgICB0byBlbnN1cmUgYW4gYWRlcXVhdGUgbGV2ZWwgb2YgcHJvdGVjdGlvbiBmb3IgdGhlIHBlcnNvbmFsIGRhdGEuIFdlIHdpbGwgdGFrZSByZWFzb25hYmxlIHN0ZXBzIHRvIGVuc3VyZQogICAgICAgICAgICAgIHRoZSBzZWN1cml0eSBvZiB5b3VyIHBlcnNvbmFsIGRhdGEgaW4gYWNjb3JkYW5jZSB3aXRoIGFwcGxpY2FibGUgZGF0YSBwcm90ZWN0aW9uIGxhd3MuPGJyIC8+PGJyIC8+V2hlbgogICAgICAgICAgICAgIHRyYW5zZmVycmluZyB5b3VyIHBlcnNvbmFsIGRhdGEgb3V0c2lkZSB0aGUgVUssIEVFQSBvciBTd2l0emVybGFuZCwgd2Ugd2lsbCwgd2hlcmUgcmVxdWlyZWQgYnkgYXBwbGljYWJsZQogICAgICAgICAgICAgIGxhdywgaW1wbGVtZW50IGF0IGxlYXN0IG9uZSBvZiB0aGUgc2FmZWd1YXJkcyBzZXQgb3V0IGJlbG93LiBQbGVhc2UgY29udGFjdCB1cyBpZiB5b3Ugd291bGQgbGlrZSBmdXJ0aGVyCiAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gdGhlIHNwZWNpZmljIG1lY2hhbmlzbXMgdXNlZCBieSB1cyB3aGVuIHRyYW5zZmVycmluZyB5b3VyIHBlcnNvbmFsIGRhdGEgb3V0c2lkZSB0aGUgVUssIEVFQQogICAgICAgICAgICAgIG9yIFN3aXR6ZXJsYW5kLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICDjg7tBZGVxdWFjeSBkZWNpc2lvbnM6IFdlIG1heSB0cmFuc2ZlciB5b3VyIHBlcnNvbmFsIGRhdGEgdG8gY291bnRyaWVzIHRoYXQgaGF2ZSBiZWVuIGRlZW1lZCB0byBwcm92aWRlIGFuCiAgICAgICAgICAgICAgYWRlcXVhdGUgbGV2ZWwgb2YgcHJvdGVjdGlvbiBmb3IgcGVyc29uYWwgZGF0YSBieSB0aGUgRXVyb3BlYW4gQ29tbWlzc2lvbiBhbmQvb3IgdGhlIFVLL1N3aXNzIEdvdmVybm1lbnQKICAgICAgICAgICAgICAoYXMgYXBwbGljYWJsZSkuPGJyIC8+44O7TW9kZWwgY2xhdXNlczogV2hlcmUgd2UgdXNlIGNlcnRhaW4gc2VydmljZSBwcm92aWRlcnMsIHdlIG1heSB1c2Ugc3BlY2lmaWMKICAgICAgICAgICAgICBzdGFuZGFyZCBjb250cmFjdHVhbCBjbGF1c2VzIGFwcHJvdmVkIGJ5IHRoZSBFdXJvcGVhbiBDb21taXNzaW9uIGFuZC9vciB0aGUgVUsvU3dpc3MgR292ZXJubWVudCB3aGljaCBnaXZlCiAgICAgICAgICAgICAgcGVyc29uYWwgZGF0YSB0aGUgc2FtZSBwcm90ZWN0aW9uIGl0IGhhcyBpbiBFdXJvcGUsIFN3aXR6ZXJsYW5kIGFuZC9vciB0aGUgVUsuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5DLiBSaWdodHMgb2YgRUVBIFJlc2lkZW50czwvaDU+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBJZiB5b3UgYXJlIGFjY2Vzc2luZyBvciB1c2luZyB0aGUgQXBwcyBmcm9tIHdpdGhpbiB0aGUgVUssIEVFQSBvciBTd2l0emVybGFuZCB5b3UgbWF5IGhhdmUgdGhlIGZvbGxvd2luZwogICAgICAgICAgICAgIHJpZ2h0cyB1bmRlciB0aGUgR0RQUiAoYXMgd2VsbCBhcyBvdGhlciByaWdodHMpLiBJZiB5b3Ugd2lzaCB0byBleGVyY2lzZSBhbnkgb2YgdGhlc2UgcmlnaHRzLCB5b3UgbWF5IGRvCiAgICAgICAgICAgICAgc28gYnkgY29udGFjdGluZyB1cyBhcyBwcm92aWRlZCAoYSkgaW4gU2VjdGlvbiAxNCBiZWxvdywgb3IgKGIpIG90aGVyd2lzZSBpbiB0aGlzIFByaXZhY3kgUG9saWN5LgogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICDjg7tSaWdodCBvZiBBY2Nlc3M6IFlvdSBoYXZlIHRoZSByaWdodCB0byBvYnRhaW4gY29uZmlybWF0aW9uIGZyb20gdXMgYXMgdG8gd2hldGhlciBvciBub3Qgd2UgcHJvY2VzcwogICAgICAgICAgICAgIHBlcnNvbmFsIGluZm9ybWF0aW9uIGZyb20geW91IGFuZCB5b3UgYWxzbyBoYXZlIHRoZSByaWdodCB0byBhdCBhbnkgdGltZSBvYnRhaW4gYWNjZXNzIHRvIHlvdXIgcGVyc29uYWwKICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBzdG9yZWQgYnkgdXMuPGJyIC8+44O7UmlnaHQgdG8gQ29ycmVjdGlvbiBvZiB5b3VyIFBlcnNvbmFsIEluZm9ybWF0aW9uOiBJZiB3ZSBwcm9jZXNzIHlvdXIKICAgICAgICAgICAgICBwZXJzb25hbCBpbmZvcm1hdGlvbiwgd2UgdXNlIHJlYXNvbmFibGUgbWVhc3VyZXMgdG8gZW5zdXJlIHRoYXQgeW91ciBwZXJzb25hbCBpbmZvcm1hdGlvbiBpcyBhY2N1cmF0ZSBhbmQKICAgICAgICAgICAgICB1cC10by1kYXRlIGZvciB0aGUgcHVycG9zZXMgZm9yIHdoaWNoIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gd2FzIGNvbGxlY3RlZC4gSWYgeW91ciBwZXJzb25hbAogICAgICAgICAgICAgIGluZm9ybWF0aW9uIGlzIGluYWNjdXJhdGUgb3IgaW5jb21wbGV0ZSwgeW91IGhhdmUgdGhlIHJpZ2h0IHRvIHJlcXVpcmUgdXMgdG8gY29ycmVjdCBpdC48YnIgLz7jg7tSaWdodCB0bwogICAgICAgICAgICAgIERlbGV0aW9uIG9mIHlvdXIgUGVyc29uYWwgSW5mb3JtYXRpb24gb3IgUmlnaHQgdG8gUmVzdHJpY3Rpb24gb2YgUHJvY2Vzc2luZzogWW91IG1heSBoYXZlIHRoZSByaWdodCB0bwogICAgICAgICAgICAgIHJlcXVpcmUgdXMgdG8gZGVsZXRlIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gb3IgdG8gcmVzdHJpY3Qgb2YgcHJvY2Vzc2luZyBvZiB5b3VyIHBlcnNvbmFsCiAgICAgICAgICAgICAgaW5mb3JtYXRpb24uPGJyIC8+44O7UmlnaHQgdG8gV2l0aGRyYXcgeW91ciBDb25zZW50OiBJZiB5b3UgaGF2ZSBnaXZlbiB5b3VyIGNvbnNlbnQgdG8gdGhlIHByb2Nlc3Npbmcgb2YKICAgICAgICAgICAgICB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uLCB5b3UgaGF2ZSB0aGUgcmlnaHQgdG8gd2l0aGRyYXcgeW91ciBjb25zZW50IGF0IGFueSB0aW1lLCB3aXRob3V0IGFmZmVjdGluZyB0aGUKICAgICAgICAgICAgICBsYXdmdWxuZXNzIG9mIHByb2Nlc3NpbmcgYmFzZWQgb24gdGhlIGNvbnNlbnQgYmVmb3JlIHRoZSB3aXRoZHJhd2FsLjxiciAvPuODu1JpZ2h0IHRvIERhdGEgUG9ydGFiaWxpdHk6IFlvdQogICAgICAgICAgICAgIG1heSBoYXZlIHRoZSByaWdodCB0byByZWNlaXZlIHBlcnNvbmFsIGluZm9ybWF0aW9uIGNvbmNlcm5pbmcgeW91IGFuZCB3aGljaCB5b3UgaGF2ZSBwcm92aWRlZCB0byB1cywgaW4gYQogICAgICAgICAgICAgIHN0cnVjdHVyZWQsIGNvbW1vbmx5IHVzZWQgYW5kIG1hY2hpbmUtcmVhZGFibGUgZm9ybWF0IG9yIHRvIHRyYW5zbWl0IHRoaXMgZGF0YSB0byBhbm90aGVyIGNvbnRyb2xsZXIuPGJyIC8+44O7UmlnaHQKICAgICAgICAgICAgICB0byBPYmplY3Q6IFlvdSBtYXkgaGF2ZSB0aGUgcmlnaHQgdG8gb2JqZWN0IHRvIHRoZSBwcm9jZXNzaW5nIG9mIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gYXMgZnVydGhlcgogICAgICAgICAgICAgIHNwZWNpZmllZCBpbiB0aGlzIFByaXZhY3kgUG9saWN5LjxiciAvPuODu1JpZ2h0IG5vdCB0byBiZSBzdWJqZWN0IHRvIGF1dG9tYXRlZCBkZWNpc2lvbiBtYWtpbmcgYW5kCiAgICAgICAgICAgICAgcHJvZmlsaW5nOiBZb3UgaGF2ZSB0aGUgcmlnaHQgbm90IHRvIGJlIHN1YmplY3QgdG8gYSBkZWNpc2lvbiB3aGVuIGl0IGlzIGJhc2VkIG9uIGF1dG9tYXRpYyBwcm9jZXNzaW5nLAogICAgICAgICAgICAgIGluY2x1ZGluZyBwcm9maWxpbmcsIGlmIGl0IHByb2R1Y2VzIGEgbGVnYWwgZWZmZWN0IG9yIHNpbWlsYXJseSBzaWduaWZpY2FudGx5IGFmZmVjdHMgeW91LCB1bmxlc3Mgc3VjaAogICAgICAgICAgICAgIHByb2ZpbGluZyBpcyBuZWNlc3NhcnkgZm9yIHRoZSBlbnRlcmluZyBpbnRvLCBvciB0aGUgcGVyZm9ybWFuY2Ugb2YsIGEgY29udHJhY3QgYmV0d2VlbiB5b3UgYW5kIHVzLjxiciAvPuODu1JpZ2h0CiAgICAgICAgICAgICAgdG8gTG9kZ2UgYSBDb21wbGFpbnQgd2l0aCBTdXBlcnZpc29yeSBBdXRob3JpdHk6IFlvdSBoYXZlIHRoZSByaWdodCB0byBsb2RnZSBhIGNvbXBsYWludCB3aXRoIHlvdXIKICAgICAgICAgICAgICByZWxldmFudCBkYXRhIHByb3RlY3Rpb24gc3VwZXJ2aXNvcnkgYXV0aG9yaXR5IGxvY2F0ZWQgaW4gdGhlIEV1cm9wZWFuIFVuaW9uLiBJZiB5b3UgYXJlIGxvY2F0ZWQgaW4gdGhlCiAgICAgICAgICAgICAgRUVBLCBmdXJ0aGVyIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBjb250YWN0IHlvdXIgbG9jYWwgZGF0YSBwcm90ZWN0aW9uIGF1dGhvcml0eSBpcyBhdmFpbGFibGUgb24gdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiCiAgICAgICAgICAgICAgICBocmVmPSJodHRwOi8vZWMuZXVyb3BhLmV1L2p1c3RpY2UvZGF0YS1wcm90ZWN0aW9uL2JvZGllcy9hdXRob3JpdGllcy9pbmRleF9lbi5odG0iCiAgICAgICAgICAgICAgICA+d2Vic2l0ZSBvZiB0aGUgRXVyb3BlYW4gQ29tbWlzc2lvbjwvYQogICAgICAgICAgICAgID4uIElmIHlvdSBhcmUgbG9jYXRlZCBpbiB0aGUgVUsgdGhlIHJlZ3VsYXRvcnkgYXV0aG9yaXR5IGlzIHRoZSBJbmZvcm1hdGlvbiBDb21taXNzaW9uZXLigJlzIE9mZmljZSAo4oCcSUNP4oCdKS4KICAgICAgICAgICAgICBDb250YWN0IGRldGFpbHMgZm9yIHRoZSBJQ08gY2FuIGJlIGZvdW5kIG9uIGl0cyB3ZWJzaXRlIGF0CiAgICAgICAgICAgICAgPGEgY2xhc3M9ImMtdGV4dExpbmsgLXJlZCIgaHJlZj0iaHR0cHM6Ly9pY28ub3JnLnVrIj5odHRwczovL2ljby5vcmcudWs8L2E+LgogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+RC4gSWYgeW91IGZhaWwgdG8gcHJvdmlkZSB5b3VyIHBlcnNvbmFsIGRhdGE8L2g1PgogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+CiAgICAgICAgICAgICAgV2hlcmUgd2UgYXJlIHJlcXVpcmVkIGJ5IGxhdyB0byBjb2xsZWN0IHlvdXIgcGVyc29uYWwgZGF0YSwgb3Igd2UgbmVlZCB0byBjb2xsZWN0IHlvdXIgcGVyc29uYWwgZGF0YSB1bmRlcgogICAgICAgICAgICAgIHRoZSB0ZXJtcyBvZiBhIGNvbnRyYWN0IHdlIGhhdmUgd2l0aCB5b3UsIGFuZCB5b3UgZmFpbCB0byBwcm92aWRlIHRoYXQgcGVyc29uYWwgZGF0YSB3aGVuIHdlIHJlcXVlc3QgaXQsCiAgICAgICAgICAgICAgd2UgbWF5IG5vdCBiZSBhYmxlIHRvIHBlcmZvcm0gdGhlIGNvbnRyYWN0IHdlIGhhdmUgb3IgYXJlIHRyeWluZyB0byBlbnRlciBpbnRvIHdpdGggeW91LiBUaGlzIG1heSBhcHBseQogICAgICAgICAgICAgIHdoZXJlIHlvdSBkbyBub3QgcHJvdmlkZSB0aGUgcGVyc29uYWwgZGF0YSB3ZSBuZWVkIGluIG9yZGVyIHRvIHByb3ZpZGUgdGhlIEFwcHMgb3IgdG8gcHJvY2VzcyBhbgogICAgICAgICAgICAgIGFwcGxpY2F0aW9uIHRvIHJlZ2lzdGVyIGFuIGFjY291bnQuIEluIHRoZXNlIGNpcmN1bXN0YW5jZXMsIHdlIG1heSBoYXZlIHRvIGNhbmNlbCB5b3VyIGFwcGxpY2F0aW9uIG9yIHRoZQogICAgICAgICAgICAgIHByb3Zpc2lvbiBvZiB0aGUgcmVsZXZhbnQgQXBwcyB0byB5b3UsIGluIHdoaWNoIGNhc2Ugd2Ugd2lsbCBub3RpZnkgeW91LgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2xpPgoKICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4KICAgICAgICAgICAgPGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj4xMS4gUHJpdmFjeSBTZWN0aW9uIEZvciBVc2VycyBGcm9tIHRoZSBVLlMuPC9oND4KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5BLiBBcHBsaWNhdGlvbjwvaDU+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBJZiB5b3UgcmVzaWRlIGluIENhbGlmb3JuaWEsIENvbG9yYWRvLCBDb25uZWN0aWN1dCwgRGVsYXdhcmUsIEluZGlhbmEsIElvd2EsIEtlbnR1Y2t5LCBNYXJ5bGFuZCwKICAgICAgICAgICAgICBNaW5uZXNvdGEsIE1vbnRhbmEsIE5lYnJhc2thLCBOZXZhZGEsIE5ldyBIYW1wc2hpcmUsIE5ldyBKZXJzZXksIE9yZWdvbiwgUmhvZGUgSXNsYW5kLCBUZW5uZXNzZWUsIFRleGFzLAogICAgICAgICAgICAgIFV0YWgsIFZlcm1vbnQsIFZpcmdpbmlhLCBvciBXYXNoaW5ndG9uLCB0aGlzIHNlY3Rpb24gYXBwbGllcyB0byB5b3UuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5CLiBBdXRob3JpemVkIEFnZW50PC9oNT4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgIFlvdSBtYXkgZGVzaWduYXRlIGFuIGF1dGhvcml6ZWQgYWdlbnQgdG8gc3VibWl0IHJlcXVlc3RzIG9uIHlvdXIgYmVoYWxmIGJ5IGRlc2lnbmF0aW5nIHN1Y2ggYW4gYWdlbnQgaW4KICAgICAgICAgICAgICB3cml0aW5nLiBXZSBtYXkgcmVxdWlyZSB0aGUgYWdlbnQgdG8gcHJvdmlkZSB1cyB3aXRoIHByb29mIHRoYXQgeW91IGhhdmUgYXV0aG9yaXplZCB0aGUgYWdlbnQgdG8gbWFrZQogICAgICAgICAgICAgIHJlcXVlc3RzIG9uIHlvdXIgYmVoYWxmIHByaW9yIHRvIGFjY2VwdGluZyByZXF1ZXN0cyBmcm9tIHRoZSBhZ2VudC4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8aDUgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkMuIFlvdXIgUmlnaHRzPC9oNT4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+CiAgICAgICAgICAgICAg44O7UmlnaHQgdG8gQWNjZXNzOiBZb3UgbWF5IHJlcXVlc3QgYSBjb3B5IG9mIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gdGhhdCB3ZSBoYXZlIGNvbGxlY3RlZCBhYm91dCB5b3UuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+CiAgICAgICAgICAgICAg44O7UmlnaHQgdG8gRGVsYXRlOiBZb3UgbWF5IHJlcXVlc3QgdG8gZGVsZXRlIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24uCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+CiAgICAgICAgICAgICAg44O7UmlnaHQgdG8gQ29ycmVjdDogWW91IG1heSByZXF1ZXN0IHRvIHVwZGF0ZSBvciBjb3JyZWN0IHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24uCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+CiAgICAgICAgICAgICAg44O7UmlnaHQgdG8gT3B0IE91dDogWW91IG1heSBoYXZlIHRoZSByaWdodCB0byBvcHQgb3V0IG9mIHRhcmdldGVkIGFkdmVydGlzaW5nIGFuZCB0aGUgc2FsZSBvZiB5b3VyIGRhdGEKICAgICAgICAgICAgICAoYXMgZGVmaW5lZCB1bmRlciByZWxldmFudCBhbmQgYXBwbGljYWJsZSBsYXcpLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPgogICAgICAgICAgICAgIOODu1RvIG1ha2Ugc3VjaCBhIHJlcXVlc3QsIHBsZWFzZSBzZW5kIGFuIGVtYWlsIHRvIHRoZSBlbWFpbCBhZGRyZXNzIHByb3ZpZGVkIGluIHRoZSDigJxDb250YWN0aW5nIENvY29uZeKAnQogICAgICAgICAgICAgIFNlY3Rpb24gMTQgYmVsb3cgb3Igd3JpdGUgdXMgYXQgdGhlIGFkZHJlc3MgcHJvdmlkZWQgaW4gdGhlIOKAnENvbnRhY3RpbmcgQ29jb25l4oCdIFNlY3Rpb24gMTQgYmVsb3cuPGJyIC8+CiAgICAgICAgICAgICAgV2Ugd2lsbCBub3QgZGlzY3JpbWluYXRlIGFnYWluc3QgeW91IGZvciBleGVyY2lzaW5nIGFueSBvZiB0aGVzZSByaWdodHMgYWJvdmUuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5ELiBDYWxpZm9ybmlhIFJlc2lkZW50czwvaDU+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBBcyB0aGUgdGVybXMgYXJlIGRlZmluZWQgdW5kZXIgdGhlIENhbGlmb3JuaWEgUHJpdmFjeSBSaWdodHMgQWN0LCB3ZSBkbyBub3Qga25vd2luZ2x5IHNlbGwgb3Igc2hhcmUgeW91cgogICAgICAgICAgICAgIHBlcnNvbmFsIGluZm9ybWF0aW9uLiBXZSBkbyBub3QgaGF2ZSBhY3R1YWwga25vd2xlZGdlIHRoYXQgd2Ugc2VsbCBvciBzaGFyZSB0aGUgcGVyc29uYWwgaW5mb3JtYXRpb24gb2YKICAgICAgICAgICAgICBtaW5vcnMgdW5kZXIgMTYuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgIElmIHlvdSBhcmUgYSByZXNpZGVudCBvZiBDYWxpZm9ybmlhLCB5b3UgaGF2ZSBzcGVjaWZpYyByaWdodHMgcmVnYXJkaW5nIG91ciBoYW5kbGluZyBvZiB5b3VyIOKAnHBlcnNvbmFsCiAgICAgICAgICAgICAgaW5mb3JtYXRpb27igJ0gYXMgc3BlY2lmaWNhbGx5IGRlZmluZWQgaW4gQ2FsaWZvcm5pYeKAmXMg4oCcU2hpbmUgdGhlIExpZ2h04oCdIGxhdyAoQ2FsLiBDaXZpbCBDb2RlIFNlY3Rpb24gwqcKICAgICAgICAgICAgICAxNzk4LjgzKS4gVGhpcyBsYXcgcGVybWl0cyB1c2VycyBvZiBvdXIgQXBwcyB3aG8gYXJlIENhbGlmb3JuaWEgcmVzaWRlbnRzIHRvIHJlcXVlc3QgY2VydGFpbiBpbmZvcm1hdGlvbgogICAgICAgICAgICAgIHJlZ2FyZGluZyBvdXIgZGlzY2xvc3VyZSBvZiBwZXJzb25hbCBpbmZvcm1hdGlvbiB0byB0aGlyZCBwYXJ0aWVzIGZvciB0aGVpciBkaXJlY3QgbWFya2V0aW5nIHB1cnBvc2VzLiBUbwogICAgICAgICAgICAgIG1ha2Ugc3VjaCBhIHJlcXVlc3QsIHBsZWFzZSBzZW5kIGFuIGVtYWlsIHRvIHRoZSBlbWFpbCBhZGRyZXNzIHByb3ZpZGVkIGluIHRoZSDigJxDb250YWN0aW5nIENvY29uZeKAnSBTZWN0aW9uCiAgICAgICAgICAgICAgMTQgYmVsb3cgb3Igd3JpdGUgdXMgYXQgdGhlIGFkZHJlc3MgcHJvdmlkZWQgaW4gdGhlIOKAnENvbnRhY3RpbmcgQ29jb25l4oCdIFNlY3Rpb24gMTQgYmVsb3cuPGJyIC8+CiAgICAgICAgICAgICAgV2l0aGluIHRoaXJ0eSAoMzApIGRheXMgb2YgcmVjZWl2aW5nIHN1Y2ggYSByZXF1ZXN0LCB3ZSB3aWxsIHByb3ZpZGUgYSBsaXN0IG9mIHRoZSBjYXRlZ29yaWVzIG9mIHBlcnNvbmFsCiAgICAgICAgICAgICAgaW5mb3JtYXRpb24gZGlzY2xvc2VkIHRvIHRoaXJkIHBhcnRpZXMgZm9yIHN1Y2ggdGhpcmQgcGFydGllc+KAmSBkaXJlY3QgbWFya2V0aW5nIHB1cnBvc2VzIGR1cmluZyB0aGUKICAgICAgICAgICAgICBpbW1lZGlhdGVseSBwcmVjZWRpbmcgY2FsZW5kYXIgeWVhciwgYWxvbmcgd2l0aCB0aGUgbmFtZXMgYW5kIGFkZHJlc3NlcyBvZiB0aGVzZSB0aGlyZCBwYXJ0aWVzLiBBIHJlcXVlc3QKICAgICAgICAgICAgICBtYXkgYmUgbWFkZSBubyBtb3JlIHRoYW4gb25jZSBwZXIgY2FsZW5kYXIgeWVhciBhbmQgd2UgYXJlIG5vdCByZXF1aXJlZCB0byByZXNwb25kIHRvIHJlcXVlc3RzIG1hZGUgYnkKICAgICAgICAgICAgICBtZWFucyBvdGhlciB0aGFuIHRocm91Z2ggdGhlIGVtYWlsIGFkZHJlc3MgYW5kIG1haWxpbmcgYWRkcmVzcyBhYm92ZS4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8aDUgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjwvaDU+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij48L3A+CiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPgogICAgICAgICAgICA8aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjEyLiBQcml2YWN5IHNlY3Rpb24gZm9yIHVzZXJzIGZyb20gdGhlIFJlcHVibGljIG9mIEtvcmVhPC9oND4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgIFdlIHByb3ZpZGUgdGhlIEFwcHMgYW5kIHdlYiBzZXJ2aWNlcyBhcm91bmQgdGhlIHdvcmxkLiBJbiBhY2NvcmRhbmNlIHdpdGggdGhlIHByZWNlZGVudHMgaW4gdGhlIFJlcHVibGljCiAgICAgICAgICAgICAgb2YgS29yZWEsIHBlcnNvbmFsIGluZm9ybWF0aW9uIGluY2x1ZGVzIHRoZSB1c2VyIElEIGFuZCBhY2NvdW50IHBhc3N3b3JkIHlvdSBzZXQgb24gdGhlIEFwcHMuPGJyIC8+CiAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgU3Vic2lkaWFyaWVzIG9yIGFmZmlsaWF0ZWQgZW50aXRpZXMgb2YgQ29jb25lIE9ORSBjb3Jwb3JhdGlvbiBpbiB0aGUgUmVwdWJsaWMgb2YgS29yZWEgbWF5IHNoYXJlIHBlcnNvbmFsCiAgICAgICAgICAgICAgaW5mb3JtYXRpb24gd2l0aCBvdXIgYWZmaWxpYXRlcyBhbmQvb3IgdGhpcmQgcGFydGllcywgaW5jbHVkaW5nIGVudGl0aWVzIGxvY2F0ZWQgb3V0c2lkZSBvZiB0aGUgUmVwdWJsaWMKICAgICAgICAgICAgICBvZiBLb3JlYSwgb24gcHJpb3Igbm90aWNlIGZvciB0aGUgZm9sbG93aW5nIHB1cnBvc2VzOiA8YnIgLz4KICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICDjg7tUbyBzdXBwb3J0IHRoZSBvcGVyYXRpb24gb2YgdGhlIEFwcHM7IGFuZDxiciAvPgogICAgICAgICAgICAgIOODu1RvIHN1cHBvcnQgdGhlIGN1c3RvbWVyIHN1cHBvcnQgc2VydmljZXMuPGJyIC8+CiAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgUGVyc29uYWwgaW5mb3JtYXRpb24gdGhhdCBzdWJzaWRpYXJpZXMgb3IgYWZmaWxpYXRlZCBlbnRpdGllcyBvZiBDb2NvbmUgT05FIGNvcnBvcmF0aW9uIGluIHRoZSBSZXB1YmxpYyBvZgogICAgICAgICAgICAgIEtvcmVhIHNoYXJlIHNoYWxsIGJlIG9yIG1heSBiZSB1c2VkLCBwcm9jZXNzZWQsIGFuZCBzdG9yZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBwdXJwb3NlcyBiZWxvdy4gV2Ugc2hhcmUKICAgICAgICAgICAgICBwZXJzb25hbCBpbmZvcm1hdGlvbiBhcyBmb2xsb3dzOgogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImMtcHJpdmFjeV9fc2Nyb2xsV3JhcCI+CiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlNkNvbHVtbnMiPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Q29tcGFueTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+T3ZlcnNlYXMgQ291bnRyeTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+UGVyc29uYWwgSW5mb3JtYXRpb248L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkRhdGUgYW5kIE1ldGhvZCBvZiB0cmFuc2ZlcnJpbmc8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlB1cnBvc2Ugb2YgdXNpbmcgcGVyc29uYWwgaW5mb3JtYXRpb248L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlBlcmlvZCBvZiByZXRlbnRpb24gYW5kIHVzZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSB3aWRlIj5Db2NvbmUgT05FIGNvcnBvcmF0aW9uIChwcml2YWN5QGNvY29uZS5jby5qcCk8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPkphcGFuPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIFVzZXJuYW1lLCBhY2NvdW50IHBhc3N3b3JkLCBJUCBhZGRyZXNzLCBpbmZvcm1hdGlvbiB0byBjaGVjayBkb3VibGUgcmVnaXN0cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5Db21wbGV0aW9uIG9mIHJlZ2lzdHJhdGlvbiwgdmlhIGRlZGljYXRlZCBuZXR3b3JrPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5PcGVyYXRpb24gb2YgdGhlIEFwcHMsIHByb3ZpZGluZyBvdGhlciByZWxhdGVkIHNlcnZpY2VzPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIFVudGlsIHRoZSB3aXRoZHJhd2FsIG9mIHVzZXJzIGZyb20gdGhlIEFwcHMgYW5kIHRlcm1pbmF0aW9uIG9mIHByb3ZpZGluZyB0aGUgQXBwcwogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPlplbmRlc2ssIEluYy4gKHByaXZhY3lAemVuZGVzay5jb20pPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5Vbml0ZWQgU3RhdGVzPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIFVzZXJuYW1lLCBhY2NvdW50IHBhc3N3b3JkLCBJUCBhZGRyZXNzLCBpbmZvcm1hdGlvbiB0byBjaGVjayBkb3VibGUgcmVnaXN0cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIFJlYWwtdGltZSB0cmFuc21pc3Npb24gd2hlbiB1c2VycyB1c2UgdGhlIEFwcHMsIHZpYSBkZWRpY2F0ZWQgbmV0d29yawogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+Q29sbGVjdGlvbiBvZiB1c2VyIGlucXVpcmllcyBhbmQgbm90aWNlIG1hbmFnZW1lbnQ8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgVW50aWwgdGhlIHdpdGhkcmF3YWwgb2YgdXNlcnMgZnJvbSB0aGUgQXBwcyBhbmQgdGVybWluYXRpb24gb2YgcHJvdmlkaW5nIHRoZSBBcHBzCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gd2lkZSI+QW1hem9uIFdlYiBTZXJ2aWNlIEluYy4gKGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vcHJpdmFjeS8pPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5Vbml0ZWQgU3RhdGVzPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIFVzZXJuYW1lLCBhY2NvdW50IHBhc3N3b3JkLCBkYXRlIG9mIGJpcnRoLCBuYW1lLCBlbWFpbCBhZGRyZXNzLCBjb29raWVzLCBJUCBhZGRyZXNzLCBpbmZvcm1hdGlvbgogICAgICAgICAgICAgICAgICAgICAgdG8gY2hlY2sgZG91YmxlIHJlZ2lzdHJhdGlvbiwgSW5mb3JtYXRpb24gb24gbGVnYWwgcmVwcmVzZW50YXRpdmUgKG5hbWUsIGUtbWFpbCBhZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gdG8gY2hlY2sgZG91YmxlIHJlZ2lzdHJhdGlvbikKICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgUmVhbC10aW1lIHRyYW5zbWlzc2lvbiB3aGVuIHVzZXJzIHVzZSB0aGUgQXBwcywgdmlhIGRlZGljYXRlZCBuZXR3b3JrCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5PcGVyYXRpb24gb2YgdGhlIEFwcHMsIHByb3ZpZGluZyBvdGhlciByZWxhdGVkIHNlcnZpY2VzPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIFVudGlsIHRoZSB3aXRoZHJhd2FsIG9mIHVzZXJzIGZyb20gdGhlIEFwcHMgYW5kIHRlcm1pbmF0aW9uIG9mIHByb3ZpZGluZyB0aGUgQXBwcwogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPkZpcmViYXNlIGJ5IEdvb2dsZSBMTEM8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlVuaXRlZCBTdGF0ZXM8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgVXNlcm5hbWUsIElQIGFkZHJlc3MsIGRldmljZSBpbmZvcm1hdGlvbiwgYXBwIGFjdGl2aXR5LCBjcmFzaCByZXBvcnRzCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIFJlYWwtdGltZSB0cmFuc21pc3Npb24gd2hlbiB1c2VycyB1c2UgdGhlIEFwcHMsIHZpYSBkZWRpY2F0ZWQgbmV0d29yawogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICBBbmFseXRpY3MsIHBlcmZvcm1hbmNlIHRyYWNraW5nLCBjcmFzaCByZXBvcnRpbmcsIGFuZCBhcHAgaW1wcm92ZW1lbnQKICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgVW50aWwgdGhlIHdpdGhkcmF3YWwgb2YgdXNlcnMgZnJvbSB0aGUgQXBwcyBhbmQgdGVybWluYXRpb24gb2YgcHJvdmlkaW5nIHRoZSBBcHBzCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gd2lkZSI+R29vZ2xlIFBsYXkgU2VydmljZXM8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlVuaXRlZCBTdGF0ZXM8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPkRldmljZSBpZGVudGlmaWVycywgYWNjb3VudCBpbmZvcm1hdGlvbjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+UmVhbC10aW1lIHRyYW5zbWlzc2lvbiBkdXJpbmcgQXBwIHVzYWdlPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIEFjY291bnQgYXV0aGVudGljYXRpb24sIGluLWFwcCBwdXJjaGFzZXMsIGFuZCB1c2VyIGFjY2VzcyBtYW5hZ2VtZW50CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIFVudGlsIHRoZSB3aXRoZHJhd2FsIG9mIHVzZXJzIGZyb20gdGhlIEFwcHMgYW5kIHRlcm1pbmF0aW9uIG9mIHByb3ZpZGluZyB0aGUgQXBwcwogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPkFwcGxlIEdhbWUgQ2VudGVyPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5Vbml0ZWQgU3RhdGVzPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5HYW1lIHByb2dyZXNzLCBhY2NvdW50IGlkZW50aWZpZXJzPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5SZWFsLXRpbWUgdHJhbnNtaXNzaW9uIGR1cmluZyBBcHAgdXNhZ2U8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlNvY2lhbCBnYW1pbmcgZmVhdHVyZXMsIGFjaGlldmVtZW50cywgYW5kIGxlYWRlcmJvYXJkIGFjY2VzczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICBVbnRpbCB0aGUgd2l0aGRyYXdhbCBvZiB1c2VycyBmcm9tIHRoZSBBcHBzIGFuZCB0ZXJtaW5hdGlvbiBvZiBwcm92aWRpbmcgdGhlIEFwcHMKICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSB3aWRlIj5HYW1lIEFuYWx5dGljczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+RGVubWFyazwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+VXNlcm5hbWUsIElQIGFkZHJlc3MsIGluLWFwcCBiZWhhdmlvciBkYXRhPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5SZWFsLXRpbWUgdHJhbnNtaXNzaW9uIGR1cmluZyBBcHAgdXNhZ2U8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgVXNlciBlbmdhZ2VtZW50IGFuYWx5c2lzLCBnYW1lIG9wdGltaXphdGlvbiwgYW5kIGV4cGVyaWVuY2UgaW1wcm92ZW1lbnQKICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgVW50aWwgdGhlIHdpdGhkcmF3YWwgb2YgdXNlcnMgZnJvbSB0aGUgQXBwcyBhbmQgdGVybWluYXRpb24gb2YgcHJvdmlkaW5nIHRoZSBBcHBzCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2xpPgoKICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4KICAgICAgICAgICAgPGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj4KICAgICAgICAgICAgICAxMy4gUHJpdmFjeSBzZWN0aW9uIGZvciB1c2VycyBwbGF5aW5nIEZhc2hpb24gRmFibGU6IERyZXNzIFVwIFN0eWxlCiAgICAgICAgICAgIDwvaDQ+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij5JZiB5b3UgcGxheSBGYXNoaW9uIEZhYmxlOiBEcmVzcyBVcCBTdHlsZSwgdGhpcyBzZWN0aW9uIGFwcGxpZXMgdG8geW91LjwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlBlcnNvbmFsIEluZm9ybWF0aW9uIFdlIENvbGxlY3Q8L3A+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBXZSBtYXkgY29sbGVjdCB0aGUgc2FtZSBwZXJzb25hbCBpbmZvcm1hdGlvbiBkZXRhaWxlZCBpbiBTZWN0aW9uIDEsIHdpdGggdGhlIGV4Y2x1c2lvbiBvZiBTZW5zb3J5IERhdGEuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkhvdyB3ZSBjb2xsZWN0IHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb248L3A+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBJbiBhZGRpdGlvbiB0byB0aGUgbWV0aG9kcyBkZXRhaWxlZCBpbiBTZWN0aW9uIDEsIHdlIG1heSBjb2xsZWN0IHBlcnNvbmFsIGRhdGEgYWJvdXQgeW91IGZyb20gdGhpcmQKICAgICAgICAgICAgICBwYXJ0aWVzIGFzIGZvbGxvd3M6CiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+44O7RmlyZWJhc2U8L3A+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPuODu0dvb2dsZSBQbGF5IFNlcnZpY2VzIChBbmRyb2lkKTwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+44O7R2FtZSBDZW50ZXIgKGlPUyk8L3A+CiAgICAgICAgICA8L2xpPgoKICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4KICAgICAgICAgICAgPGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIiBpZD0ic2VjdGlvbjE3Ij4xNC4gQ29udGFjdGluZyBDb2NvbmU8L2g0PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjLXByaXZhY3lfX3Njcm9sbFdyYXAiPgogICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iYy1wcml2YWN5X190YWJsZTJDb2x1bW5zIj4KICAgICAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkiPgogICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucywgaW5xdWlyZXMsIHJlcXVlc3RzLCBjb21tZW50cyBvciBjb21wbGFpbnRzIGNvbmNlcm5pbmcgdGhpcyBQcml2YWN5CiAgICAgICAgICAgICAgICAgICAgICBQb2xpY3kgb3Igb3VyIGluZm9ybWF0aW9uIHByYWN0aWNlcywgcGxlYXNlIGNvbnRhY3QgdXMgYmVsb3cuPHNwYW4KICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiCiAgICAgICAgICAgICAgICAgICAgICAgID5Zb3UgYXJlIHVzaW5nOjwvc3BhbgogICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5Db250YWN0IEluZm9ybWF0aW9uOjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSB3aWRlIj4KICAgICAgICAgICAgICAgICAgICAgIEhlbGxvIFN3ZWV0IERheXM8YnIgLz5IZWxsbyBLaXR0eSBEcmVhbSBWaWxsYWdlIChFbmdsaXNoIHZlcnNpb24pCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIENvY29uZSBPTkUgY29ycG9yYXRpb248YnIgLz48YnIgLz5FbWFpbDo8YnIgLz4oamEpCiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJtYWlsdG86c3VwcG9ydEBzd2VldGRheXMuemVuZGVzay5jb20iCiAgICAgICAgICAgICAgICAgICAgICAgID5zdXBwb3J0QHN3ZWV0ZGF5cy56ZW5kZXNrLmNvbTwvYQogICAgICAgICAgICAgICAgICAgICAgPjxiciAvPihlbikKICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Im1haWx0bzpzdXBwb3J0X2VuQHN3ZWV0ZGF5c2dsLnplbmRlc2suY29tIgogICAgICAgICAgICAgICAgICAgICAgICA+c3VwcG9ydF9lbkBzd2VldGRheXNnbC56ZW5kZXNrLmNvbTwvYQogICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgPGJyIC8+PGJyIC8+QWRkcmVzczogNDBGLCBNaWR0b3duIFRvd2VyLCA5LTctMSBBa2FzYWthLCBNaW5hdG8ta3UsIFRva3lvIDEwNy02MjQwLCBKYXBhbgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPkxpdmx5IElzbGFuZDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICBDb2NvbmUgY29ycG9yYXRpb248YnIgLz48YnIgLz5FbWFpbDoKICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Im1haWx0bzpzdXBwb3J0QGxpdmx5LnplbmRlc2suY29tIj5zdXBwb3J0QGxpdmx5LnplbmRlc2suY29tPC9hCiAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+PGJyIC8+QWRkcmVzczogMy0xLTE4IFdha2FiYXlhc2hpLCBTZXRhZ2F5YS1rdSwgVG9reW8gMTU0LTAwMjMsIEphcGFuCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gd2lkZSI+TGl2bHkgSXNsYW5kIChLb3JlYSk8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgQ29jb25lIGNvcnBvcmF0aW9uPGJyIC8+PGJyIC8+RW1haWw6CiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJtYWlsdG86bGl2bHkta29yLXN1cHBvcnRAY29jb25lLmNvLmpwIgogICAgICAgICAgICAgICAgICAgICAgICA+bGl2bHkta29yLXN1cHBvcnRAY29jb25lLmNvLmpwPC9hCiAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+PGJyIC8+QWRkcmVzczogMy0xLTE4IFdha2FiYXlhc2hpLCBTZXRhZ2F5YS1rdSwgVG9reW8gMTU0LTAwMjMsIEphcGFuCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gd2lkZSI+UG9ja2V0IHR3aW48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgQ29jb25lIGNvcnBvcmF0aW9uPGJyIC8+PGJyIC8+RW1haWw6CiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJtYWlsdG86cG9ja2V0dHdpbi1zdXBwb3J0QGNvY29uZS5jby5qcCIKICAgICAgICAgICAgICAgICAgICAgICAgPnBvY2tldHR3aW4tc3VwcG9ydEBjb2NvbmUuY28uanA8L2EKICAgICAgICAgICAgICAgICAgICAgID48YnIgLz48YnIgLz5BZGRyZXNzOiAzLTEtMTggV2FrYWJheWFzaGksIFNldGFnYXlhLWt1LCBUb2t5byAxNTQtMDAyMywgSmFwYW4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSB3aWRlIj5Qb2NrZXQgbWluaTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICBDb2NvbmUgY29ycG9yYXRpb248YnIgLz48YnIgLz5FbWFpbDoKICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Im1haWx0bzpwb21pX3N1cHBvcnRAY29jb25lLW0uY29tIj5wb21pX3N1cHBvcnRAY29jb25lLW0uY29tPC9hCiAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+PGJyIC8+QWRkcmVzczogMy0xLTE4IFdha2FiYXlhc2hpLCBTZXRhZ2F5YS1rdSwgVG9reW8gMTU0LTAwMjMsIEphcGFuCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gd2lkZSI+QWx0ZXJFZ28gQ2l0eTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICBDb2NvbmUgWGVub24gSW5jLjxiciAvPjxiciAvPkVtYWlsOgogICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImMtdGV4dExpbmsgLXJlZCIgaHJlZj0ibWFpbHRvOnN1cHBvcnRAY2VudGVubmlhbC1jaXR5LnplbmRlc2suY29tIgogICAgICAgICAgICAgICAgICAgICAgICA+c3VwcG9ydEBjZW50ZW5uaWFsLWNpdHkuemVuZGVzay5jb208L2EKICAgICAgICAgICAgICAgICAgICAgID48YnIgLz48YnIgLz5BZGRyZXNzOiAxMTUgQnJvYWR3YXkgM3JkIEZsLiBSb29tIzE0NiwgTmV3IFlvcmssIE5ZIDEwMDA2LCBVU0EKICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSB3aWRlIj5QdXJlbmlzdGEgTTogRHJlc3MtdXAgJiBDaGF0PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIENvY29uZSBjb3Jwb3JhdGlvbjxiciAvPjxiciAvPkVtYWlsOgogICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImMtdGV4dExpbmsgLXJlZCIgaHJlZj0ibWFpbHRvOnN1cHBvcnRAcHVyZW5pc3RhbS5jb20iPnN1cHBvcnRAcHVyZW5pc3RhbS5jb208L2EKICAgICAgICAgICAgICAgICAgICAgID48YnIgLz48YnIgLz5BZGRyZXNzOiAzLTEtMiBIaWdhc2hpaGllIEhha2F0YS1rdSwgRnVrdW9rYS1zaGksIEZ1a3Vva2Eta2VuIDgxMi0wMDA3LCBKYXBhbgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPlZJVklCVURTPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIENvY29uZSBjb3Jwb3JhdGlvbjxiciAvPjxiciAvPkVtYWlsOgogICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImMtdGV4dExpbmsgLXJlZCIgaHJlZj0ibWFpbHRvOnN1cHBvcnRAdml2aWJ1ZHMuY29tIj5zdXBwb3J0QHZpdmlidWRzLmNvbTwvYQogICAgICAgICAgICAgICAgICAgICAgPjxiciAvPjxiciAvPkFkZHJlc3M6IDMtMS0xOCBXYWthYmF5YXNoaSwgU2V0YWdheWEta3UsIFRva3lvIDE1NC0wMDIzLCBKYXBhbgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPkZhc2hpb24gRmFibGU6IERyZXNzIFVwIFN0eWxlPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIENvY29uZSBFdXJvcGUgT8OcPGJyIC8+PGJyIC8+RW1haWw6CiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJtYWlsdG86c3VwcG9ydF9ldUBjb2NvbmUuY28uanAiPnN1cHBvcnRfZXVAY29jb25lLmNvLmpwPC9hCiAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+PGJyIC8+QWRkcmVzczogTWFha3JpIHRuIDI1LCBLZXNrbGlubmEgbGlubmFvc2EsIFRhbGxpbm4sIEhhcmp1IG1hYWtvbmQsIDEwMTQ1LCBFc3RvbmlhCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPgogICAgICAgICAgICA8aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjE1LiBTdGFuZGFyZHMgQWdhaW5zdCBDaGlsZCBTZXh1YWwgQWJ1c2UgYW5kIEV4cGxvaXRhdGlvbjwvaDQ+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBDb2NvbmUgZG9lcyBub3QgYWxsb3cgdXNlcnMgdG8gY3JlYXRlIG9yIHBvc3QgY29udGVudHMgb3IgZW5nYWdlIGluIGFjdGl2aXRpZXMgdGhhdCBzZXh1YWxseSBleHBsb2l0LAogICAgICAgICAgICAgIGFidXNlIG9yIGVuZGFuZ2VyIGNoaWxkcmVuLiBXZSByZXBvcnQgYWxsIGlkZW50aWZpZWQgaW5zdGFuY2VzIG9mIHNleHVhbCBleHBsb2l0YXRpb24sIGFidXNlIG9yCiAgICAgICAgICAgICAgZW5kYW5nZXJtZW50IG9mIGEgbWlub3IgdG8gdGhlIGFwcHJvcHJpYXRlIHJlZ2lvbmFsIGF1dGhvcml0eS48YnIgLz4KICAgICAgICAgICAgICBDb2NvbmUgYWxzbyBwcm9oaWJpdHMgdXNlcnMgZnJvbSBwb3N0aW5nIG9yIHNoYXJpbmcgYW55IHBvcm5vZ3JhcGhpYyBjb250ZW50IHN1Y2ggYXMgcGhvdG9zLCB2aWRlb3MsCiAgICAgICAgICAgICAgaWxsdXN0cmF0aW9ucywgaW1hZ2VzIGFuZCBjb21wdXRlci1nZW5lcmF0ZWQgaW1hZ2VyeSwgaW5jbHVkaW5nIHRob3NlIHRoYXQgZGVwaWN0IGEgbWlub3IgZW5nYWdpbmcgaW4KICAgICAgICAgICAgICBzZXh1YWxseSBleHBsaWNpdCBjb25kdWN0LjxiciAvPgogICAgICAgICAgICAgIFVzZXJzIGFyZSBwcm9oaWJpdGVkIGZyb20gcG9zdGluZyBjb250ZW50IG9yIGVuZ2FnaW5nIGluIGludGVyYWN0aW9ucyBvciBhY3Rpdml0aWVzIHRoYXQgZGVwaWN0LCBlbmNvdXJhZ2UKICAgICAgICAgICAgICBvciBwcm9tb3RlIHNleHVhbCBhYnVzZSBhbmQgZXhwbG9pdGF0aW9uIG9mIGNoaWxkcmVuLCBpbmNsdWRpbmcgcmVhbCBodW1hbiBjaGlsZHJlbiBhcyB3ZWxsIGFzIG5vbi1yZWFsCiAgICAgICAgICAgICAgZGVwaWN0aW9ucyBvZiBjaGlsZHJlbiBzdWNoIGFzIGF2YXRhcnMsIGNoYXJhY3RlcnMgb3Igb3RoZXIgZm9ybXMgb2YgYXJ0IG9yIEFJLWdlbmVyYXRlZCBjb250ZW50LjxiciAvPgogICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgIEV4YW1wbGVzIG9mIGNoaWxkIHNleHVhbCBhYnVzZSBhbmQgZXhwbG9pdGF0aW9uIHRoYXQgYXJlIHByb2hpYml0ZWQgaW5jbHVkZTo8YnIgLz4KICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICDjg7tJbmFwcHJvcHJpYXRlIGludGVyYWN0aW9uIHRhcmdldGVkIGF0IGEgY2hpbGQgc3VjaCBhcyBncm9waW5nIG9yIGNhcmVzc2luZy48YnIgLz4KICAgICAgICAgICAgICDjg7tDaGlsZCBncm9vbWluZywgc3VjaCBhcyBiZWZyaWVuZGluZyBhIGNoaWxkIG9ubGluZSB0byBmYWNpbGl0YXRlLCBlaXRoZXIgb25saW5lIG9yIG9mZmxpbmUsIHNleHVhbAogICAgICAgICAgICAgIGNvbnRhY3QgYW5kL29yIGV4Y2hhbmdpbmcgc2V4dWFsIGltYWdlcnkgd2l0aCB0aGF0IGNoaWxkLjxiciAvPgogICAgICAgICAgICAgIOODu1NleHVhbGl6YXRpb24gb2YgYSBtaW5vciwgc3VjaCBhcyBpbWFnZXJ5IHRoYXQgZGVwaWN0cywgZW5jb3VyYWdlcyBvciBwcm9tb3RlcyB0aGUgc2V4dWFsIGFidXNlIG9mCiAgICAgICAgICAgICAgY2hpbGRyZW4gb3IgdGhlIHBvcnRyYXlhbCBvZiBjaGlsZHJlbiBpbiBhIG1hbm5lciB0aGF0IGNvdWxkIHJlc3VsdCBpbiB0aGUgc2V4dWFsIGV4cGxvaXRhdGlvbiBvZgogICAgICAgICAgICAgIGNoaWxkcmVuLjxiciAvPgogICAgICAgICAgICAgIOODu1NleHRvcnRpb24sIHN1Y2ggYXMgdGhyZWF0ZW5pbmcgb3IgYmxhY2ttYWlsaW5nIGEgY2hpbGQgYnkgdXNpbmcgcmVhbCBvciBhbGxlZ2VkIGFjY2VzcyB0byBhIGNoaWxk4oCZcwogICAgICAgICAgICAgIGludGltYXRlIGltYWdlcy48YnIgLz4KICAgICAgICAgICAgICDjg7tUcmFmZmlja2luZyBvZiBhIGNoaWxkLCBzdWNoIGFzIGFkdmVydGlzaW5nIG9yIHNvbGljaXRhdGlvbiBvZiBhIGNoaWxkIGZvciBjb21tZXJjaWFsIHNleHVhbAogICAgICAgICAgICAgIGV4cGxvaXRhdGlvbi48YnIgLz4KICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICBVc2VycyBhcmUgYWxzbyBwcm9oaWJpdGVkIGZyb20gcG9zdGluZyBjb250ZW50IG9yIGVuZ2FnaW5nIGluIGludGVyYWN0aW9ucyBvciBhY3Rpdml0aWVzIHRoYXQgZGVwaWN0LAogICAgICAgICAgICAgIGVuY291cmFnZSBvciBwcm9tb3RlIGV4Y2Vzc2l2ZSB2aW9sZW5jZSwgYmxvb2QgYW5kIGdvcmUsIGhhcm1mdWwgYW5kIGRhbmdlcm91cyBhY3Rpdml0aWVzIGFzIHdlbGwgYXMKICAgICAgICAgICAgICBuZWdhdGl2ZSBib2R5IG9yIHNlbGYtaW1hZ2UuPGJyIC8+CiAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgVXNlcnMgc2hvdWxkIHJlcG9ydCBhbnkgaW5hcHByb3ByaWF0ZSBjb250ZW50IHRoZXkgZW5jb3VudGVyIHRocm91Z2gKICAgICAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJtYWlsdG86bWxfY2hpbGRfc2FmZXR5QGNvY29uZS5jby5qcCI+bWxfY2hpbGRfc2FmZXR5QGNvY29uZS5jby5qcDwvYT4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9saT4KICAgICAgICA8L29sPgogICAgICA8L2xpPgogICAgPC9vbD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJjLWFydGljbGVfX2xpbmthcmVhIj4KICAgIDxhIGhyZWY9Ii9lbi8iIGNsYXNzPSJjLWJ1dHRvbi0tdG9uYWwgYy1idXR0b24tLXRvbmFsLS1iYWNrIj4KICAgIDxzcGFuIGNsYXNzPSJjLWJ1dHRvbl9faG9sZSBjLWJ1dHRvbl9faG9sZS0tYmFjayI+CiAgICAgIDxzcGFuIGNsYXNzPSJjLWJ1dHRvbl9faWNvbnMgYy1idXR0b25fX2ljb25zLS1iYWNrIj48L3NwYW4+CiAgICA8L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0iYy1idXR0b25fX2xhYmVsIj5IT01FPC9zcGFuPgogICAgPC9hPgogIDwvZGl2PiAgCjwvZGl2PncJY29yZS9odG1sd4vsBDxkaXYgY2xhc3M9ImMtcHJpdmFjeV9fY29udGFpbmVyIj4KICA8ZGl2IGNsYXNzPSJjLXByaXZhY3lfX2RhdGUiPgogICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9fZGF0ZVRleHQiPkxhc3QgVXBkYXRlZDogNiAvIDEgLyAyMDI1PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImMtcHJpdmFjeV9fYmxvY2siPgogICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlRhYmxlIG9mIENvbnRlbnRzPC9wPgogICAgPG9sIGNsYXNzPSJjLXByaXZhY3lfX2xpc3QiPgogICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9faXRlbSI+CiAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+SW50cm9kdWN0aW9uPC9wPgogICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPkNoYW5nZXMgdG8gT3VyIFByaXZhY3kgUG9saWN5PC9wPgogICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPjEuIEluZm9ybWF0aW9uIFdlIENvbGxlY3QgYW5kIEhvdyBXZSBDb2xsZWN0IEl0PC9wPgogICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPjIuIEhvdyBXZSBVc2UgWW91ciBQZXJzb25hbCBJbmZvcm1hdGlvbjwvcD4KICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj4zLiBIb3cgTG9uZyBXZSBLZWVwIFlvdXIgSW5mb3JtYXRpb248L3A+CiAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+NC4gSG93IFdlIFNoYXJlIFlvdXIgSW5mb3JtYXRpb248L3A+CiAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+NS4gQ2hpbGRyZW7igJlzIFByaXZhY3k8L3A+CiAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+Ni4gSG93IFdlIFByb3RlY3QgWW91ciBJbmZvcm1hdGlvbjwvcD4KICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj43LiBIb3cgWW91IE1heSBDaGFuZ2UsIFJlbW92ZSwgb3IgRXhwb3J0IFlvdXIgSW5mb3JtYXRpb248L3A+CiAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+OC4gTGlua3MgdG8gVGhpcmQtUGFydHkgV2Vic2l0ZXMgYW5kIFNlcnZpY2VzPC9wPgogICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPjkuIE5vbi1VLlMuIFVzZXJzPC9wPgogICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPgogICAgICAgICAgMTAuIFByaXZhY3kgU2VjdGlvbiBmb3IgVXNlcnMgZnJvbSB0aGUgVUssIEVFQSBhbmQgU3dpdHplcmxhbmQKICAgICAgICA8L3A+CiAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+MTEuIFByaXZhY3kgU2VjdGlvbiBmb3IgVXNlcnMgZnJvbSB0aGUgVS5TLjwvcD4KICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj4xMi4gUHJpdmFjeSBTZWN0aW9uIGZvciBVc2VycyBmcm9tIHRoZSBSZXB1YmxpYyBvZiBLb3JlYTwvcD4KICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj4KICAgICAgICAgIDEzLiBQcml2YWN5IFNlY3Rpb24gZm9yIFVzZXJzIFBsYXlpbmcgRmFzaGlvbiBGYWJsZTogRHJlc3MgVXAgU3R5bGUKICAgICAgICA8L3A+CiAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+MTQuIENvbnRhY3RpbmcgQ29jb25lPC9wPgogICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPjE1LiBTdGFuZGFyZHMgQWdhaW5zdCBDaGlsZCBTZXh1YWwgQWJ1c2UgYW5kIEV4cGxvaXRhdGlvbjwvcD4KICAgICAgPC9saT4KICAgIDwvb2w+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iYy1wcml2YWN5X19ibG9jayI+CiAgICA8b2wgY2xhc3M9ImMtcHJpdmFjeV9fbGlzdCI+CiAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19pdGVtIj4KICAgICAgICA8aDIgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRpdGxlIj5JbnRyb2R1Y3Rpb248L2gyPgogICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgIENvY29uZSByZXNwZWN0cyB5b3VyIHByaXZhY3ksIGFuZCB3ZSBhcmUgY29tbWl0dGVkIHRvIHByb3RlY3RpbmcgaXQgdGhyb3VnaCB0aGlzIFByaXZhY3kgUG9saWN5LjxiciAvPgogICAgICAgICAgQXMgdXNlZCBpbiB0aGlzIFByaXZhY3kgUG9saWN5LCDigJw8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Q29jb25lPC9zcGFuPuKAnSwg4oCcPHNwYW4KICAgICAgICAgICAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiCiAgICAgICAgICAgID53ZTwvc3BhbgogICAgICAgICAgPuKAnSwg4oCcPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPnVzPC9zcGFuPuKAnSwgb3Ig4oCcPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPm91cjwvc3BhbgogICAgICAgICAgPuKAnSByZWZlciB0byBDb2NvbmUgT05FIGNvcnBvcmF0aW9uIGFuZCBpdHMgc3Vic2lkaWFyeSBvciBhZmZpbGlhdGVkIGVudGl0eSB0aGF0IGlzIHBhcnQgb2YgQ29jb25lIE9ORQogICAgICAgICAgY29ycG9yYXRpb24uPGJyIC8+CiAgICAgICAgICBUaGlzIFByaXZhY3kgUG9saWN5IGRlc2NyaWJlcyB0aGUgdHlwZXMgb2YgcGVyc29uYWwgaW5mb3JtYXRpb24gd2UgY29sbGVjdCBmcm9tIHlvdSwgdGhhdCB3ZSBtYXkgcmVjZWl2ZSBmcm9tCiAgICAgICAgICB0aGlyZCBwYXJ0aWVzIG9yIHlvdXIgY29udGFjdHMgb3IgdGhhdCB5b3UgbWF5IHByb3ZpZGUgd2hlbiB5b3UgdXNlIENvY29uZeKAmXMgYXBwbGljYXRpb25zIGZvciBtb2JpbGUgZGV2aWNlcwogICAgICAgICAgKHRoZSDigJw8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+QXBwczwvc3Bhbj7igJ0pLjxiciAvPgogICAgICAgICAgUGxlYXNlIGZhbWlsaWFyaXplIHlvdXJzZWxmIHdpdGggb3VyIHByaXZhY3kgcHJhY3RpY2VzIGFuZCBjb250YWN0IHVzIGFzIGRlc2NyaWJlZCBiZWxvdyBpbgogICAgICAgICAgPGEgY2xhc3M9ImMtdGV4dExpbmsgLXJlZCIgaHJlZj0iI3NlY3Rpb24xNyI+U2VjdGlvbiAxNCDigJMgQ29udGFjdGluZyBDb2NvbmU8L2E+IGlmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMuPGJyIC8+CiAgICAgICAgICBUaGlzIFByaXZhY3kgUG9saWN5IGFwcGxpZXMgdG8gdGhlIHBlcnNvbmFsIGluZm9ybWF0aW9uIHdlIGNvbGxlY3Q6CiAgICAgICAgPC9wPgogICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPuODu1Rocm91Z2ggdGhlIEFwcHM7IGFuZDwvcD4KICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4KICAgICAgICAgIOODu0J5IGVtYWlsLCB0ZXh0LCBhbmQgb3RoZXIgY29tbXVuaWNhdGlvbnMgYmV0d2VlbiB5b3UgYW5kIHVzIGFuZC9vciB0aGUgQXBwcy4KICAgICAgICA8L3A+CiAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgSXQgZG9lcyBub3QgYXBwbHkgdG8gaW5mb3JtYXRpb24gY29sbGVjdGVkIGJ5IGFueSB0aGlyZCBwYXJ0eSAoaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBvdXIgYWZmaWxpYXRlcyBhbmQKICAgICAgICAgIHN1YnNpZGlhcmllcyksIGluY2x1ZGluZyB0aHJvdWdoIGFueSBhcHBsaWNhdGlvbiBvciBjb250ZW50IChpbmNsdWRpbmcgYWR2ZXJ0aXNpbmcpIHRoYXQgbWF5IGxpbmsgdG8gb3IgYmUKICAgICAgICAgIGFjY2Vzc2libGUgZnJvbSBvciBvbiB0aGUgQXBwcy48YnIgLz5QbGVhc2UgcmVhZCB0aGlzIFByaXZhY3kgUG9saWN5IGNhcmVmdWxseSB0byB1bmRlcnN0YW5kIG91ciBwb2xpY2llcyBhbmQKICAgICAgICAgIHByYWN0aWNlcyByZWdhcmRpbmcgeW91ciBpbmZvcm1hdGlvbiBhbmQgaG93IHdlIHdpbGwgaGFuZGxlIHlvdXIgaW5mb3JtYXRpb24uCiAgICAgICAgPC9wPgogICAgICA8L2xpPgogICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9faXRlbSI+CiAgICAgICAgPGgyIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UaXRsZSI+Q2hhbmdlcyB0byBPdXIgUHJpdmFjeSBQb2xpY3k8L2gyPgogICAgICAgIDxvbCBjbGFzcz0iYy1wcml2YWN5X19zdWJMaXN0Ij4KICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgIFRoaXMgUHJpdmFjeSBQb2xpY3kgbWF5IGNoYW5nZSBmcm9tIHRpbWUgdG8gdGltZSBzbyBwbGVhc2UgY2hlY2sgdGhpcyBQcml2YWN5IFBvbGljeSBwZXJpb2RpY2FsbHkgZm9yCiAgICAgICAgICAgICAgdXBkYXRlcy48YnIgLz4KICAgICAgICAgICAgICBJZiB3ZSBtYWtlIG1hdGVyaWFsIGNoYW5nZXMgdG8gaG93IHdlIHRyZWF0IG91ciB1c2Vyc+KAmSBwZXJzb25hbCBpbmZvcm1hdGlvbiwgd2Ugd2lsbCBub3RpZnkgeW91IHRocm91Z2ggYQogICAgICAgICAgICAgIG5vdGljZSBpbiB0aGUgQXBwcy4gVGhlIGRhdGUgdGhpcyBQcml2YWN5IFBvbGljeSB3YXMgbGFzdCB1cGRhdGVkIGlzIGlkZW50aWZpZWQgYXQgdGhlIHRvcCBvZiB0aGUgZmlyc3QKICAgICAgICAgICAgICBwYWdlIG9mIHRoaXMgUHJpdmFjeSBQb2xpY3kuIFVubGVzcyBvdGhlcndpc2Ugc3RpcHVsYXRlZCB1bmRlciBhcHBsaWNhYmxlIGxhdywgeW91IGFyZSByZXNwb25zaWJsZSBmb3IKICAgICAgICAgICAgICBlbnN1cmluZyB5b3UgcGVyaW9kaWNhbGx5IHZpc2l0IHRoaXMgUHJpdmFjeSBQb2xpY3kgdG8gY2hlY2sgZm9yIGFueSBjaGFuZ2VzLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPgogICAgICAgICAgICA8aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPgogICAgICAgICAgICAgIDEuIEluZm9ybWF0aW9uIFdlIENvbGxlY3QgYW5kIEhvdyBXZSBDb2xsZWN0IEl0PGJyIC8+UGVyc29uYWwgSW5mb3JtYXRpb24gV2UgQ29sbGVjdAogICAgICAgICAgICA8L2g0PgogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+CiAgICAgICAgICAgICAgV2hlbiB3ZSB0YWxrIGFib3V0IHBlcnNvbmFsIGluZm9ybWF0aW9uIChvciBwZXJzb25hbCBkYXRhKSB3ZSBtZWFuIGFueSBpbmZvcm1hdGlvbiB0aGF0IHJlbGF0ZXMgdG8gYW4KICAgICAgICAgICAgICBpZGVudGlmaWVkIG9yIGlkZW50aWZpYWJsZSBsaXZpbmcgaW5kaXZpZHVhbC4gVGhlIHBlcnNvbmFsIGluZm9ybWF0aW9uIHdlIG1heSBjb2xsZWN0IGFuZCBwcm9jZXNzIGFib3V0CiAgICAgICAgICAgICAgeW91IHdpdGhpbiB0aGUgbGFzdCB0d2VsdmUgKDEyKSBtb250aHMgaW5jbHVkZToKICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8dWwgY2xhc3M9ImMtcHJpdmFjeV9fc3ViTGlzdCI+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj7jg7tSZWdpc3RyYXRpb24gRGF0YS9JZGVudGlmaWVyczo8L3NwYW4+IEVtYWlsIGFkZHJlc3MKICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+44O7U2Vuc29yeSBkYXRhOjwvc3Bhbj4gUGhvdG9zLCB2aWRlb3Mgb3IgcmVjb3JkaW5ncyBvZiBhCiAgICAgICAgICAgICAgICAgIHVzZXLigJlzIGVudmlyb25tZW50CiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPuODu0FwcHMgUHJvZmlsZSBkYXRhOjwvc3Bhbj4gWW91ciB1c2VybmFtZSwgeW91ciBhdmF0YXIsCiAgICAgICAgICAgICAgICAgIGludGVyZXN0cyBhbmQgcHJlZmVyZW5jZXMuCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPuODu1RlY2huaWNhbCBhbmQgVXNhZ2UgRGF0YS9OZXR3b3JraW5nIEFjdGl2aXR5Ojwvc3Bhbj4KICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nOgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+CiAgICAgICAgICAgICAgICAgIOODu0RldGFpbHMgb2YgeW91ciB2aXNpdHMgdG8gYW5kIGFjdGlvbnMgaW4gdGhlIEFwcHMsIGluY2x1ZGluZyB0cmFmZmljIGRhdGEsIGxvY2F0aW9uIGRhdGEsIGxvZ3MgYW5kCiAgICAgICAgICAgICAgICAgIG90aGVyIGNvbW11bmljYXRpb24gZGF0YSwgdGhlIHJlc291cmNlcyB0aGF0IHlvdSBhY2Nlc3MsIGFuZCB5b3VyIHVzZSBvZiB0aGUgQXBwcy4KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPgogICAgICAgICAgICAgICAgICDjg7tJbmZvcm1hdGlvbiBhYm91dCB5b3VyIGRldmljZSBhbmQgaW50ZXJuZXQgY29ubmVjdGlvbiwgaW5jbHVkaW5nIGFzIGFwcGxpY2FibGUsIHlvdXIgSVAgYWRkcmVzcwogICAgICAgICAgICAgICAgICB0aHJvdWdoIHdoaWNoIHlvdSBhY2Nlc3MgdGhlIEFwcHMsIG9wZXJhdGluZyBzeXN0ZW0sIGJyb3dzZXIgdHlwZSwgbW9iaWxlIG5ldHdvcmsgaW5mb3JtYXRpb24sCiAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLCB0aW1lIHpvbmUsIHRoZSB1bmlxdWUgbW9iaWxlIGRldmljZSBJRCBvciB2aXJ0dWFsIHVuaXF1ZSBkZXZpY2UgaWRlbnRpZmllciBmb3IgYW55IG1vYmlsZQogICAgICAgICAgICAgICAgICBkZXZpY2UgdXNlZCB0byBhY2Nlc3MgeW91ciBhY2NvdW50LgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+CiAgICAgICAgICAgICAgICAgIOODu01ldGFkYXRhIGFuZCBvdGhlciBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggZmlsZXMgc3RvcmVkIG9uIHlvdXIgZGV2aWNlLgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+CiAgICAgICAgICAgICAgICAgIOODu0luZm9ybWF0aW9uIGFib3V0IHlvdXIgaW50ZXJuZXQgY29ubmVjdGlvbiwgdGhlIGRldmljZSB5b3UgdXNlIHRvIGFjY2VzcyB0aGUgQXBwcywgYW5kIHJlbGF0ZWQgdXNhZ2UKICAgICAgICAgICAgICAgICAgZGV0YWlscy4KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+44O7VHJhbnNhY3Rpb24gZGF0YTo8L3NwYW4+IERldGFpbHMgb2YgdHJhbnNhY3Rpb25zIHlvdSBjYXJyeQogICAgICAgICAgICAgICAgICBvdXQgdGhyb3VnaCB0aGUgQXBwcyB1c2luZyBpbi1nYW1lIGN1cnJlbmN5LgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgICAgICBXZSB1c2UgdGhpcmQtcGFydHkgcGF5bWVudCBwcm9jZXNzb3JzIHRvIHByb2Nlc3MgcGF5bWVudHMgbWFkZSB0byB1cy4gSW4gY29ubmVjdGlvbiB3aXRoIHRoZQogICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nIG9mIHN1Y2ggcGF5bWVudHMsIHdlIGRvIG5vdCByZXRhaW4gYW55IHBlcnNvbmFsIGluZm9ybWF0aW9uIG9yIGFueSBmaW5hbmNpYWwgaW5mb3JtYXRpb24KICAgICAgICAgICAgICAgICAgc3VjaCBhcyBjcmVkaXQgY2FyZCBudW1iZXJzLiBSYXRoZXIsIGFsbCBzdWNoIGluZm9ybWF0aW9uIGlzIHByb3ZpZGVkIGRpcmVjdGx5IHRvIG91ciB0aGlyZC1wYXJ0eQogICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzIHdob3NlIHVzZSBvZiB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uIGlzIGdvdmVybmVkIGJ5IHRoZWlyIHByaXZhY3kgcG9saWNpZXMuIFdlIGhhdmUgbm8KICAgICAgICAgICAgICAgICAgY29udHJvbCBvdmVyLCBhbmQgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IsIHRoaXMgdGhpcmQgcGFydHnigJlzIGNvbGxlY3Rpb24sIHVzZSBhbmQgZGlzY2xvc3VyZSBvZiB5b3VyCiAgICAgICAgICAgICAgICAgIHBlcnNvbmFsIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+SG93IHdlIGNvbGxlY3QgeW91ciBwZXJzb25hbCBpbmZvcm1hdGlvbjwvc3Bhbj48YnIgLz4KICAgICAgICAgICAgICAgICAgV2UgbWF5IGNvbGxlY3QgYW5kIHJlY2VpdmUgeW91ciBwZXJzb25hbCBkYXRhIHVzaW5nIGRpZmZlcmVudCBtZXRob2RzOgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+44O7UGVyc29uYWwgZGF0YSB5b3UgZGlyZWN0bHkgcHJvdmlkZSB0byB1czwvc3Bhbj48YnIgLz4KICAgICAgICAgICAgICAgICAgWW91IG1heSBnaXZlIHVzIHlvdXIgcGVyc29uYWwgZGF0YSBkaXJlY3RseSwgZm9yIGV4YW1wbGUsIHdoZW4geW91IHJlZ2lzdGVyIHRvIHVzZSBvdXIgQXBwcywgY29udGFjdAogICAgICAgICAgICAgICAgICB1cyB3aXRoIGVucXVpcmllcyBvciBmZWVkYmFjay4KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPuODu1BlcnNvbmFsIGRhdGEgcmVjZWl2ZWQgZnJvbSB0aGlyZCBwYXJ0aWVzPC9zcGFuPjxiciAvPgogICAgICAgICAgICAgICAgICBXZSBtYXkgcmVjZWl2ZSBwZXJzb25hbCBkYXRhIGFib3V0IHlvdSBmcm9tIHRoaXJkIHBhcnRpZXMuIFN1Y2ggdGhpcmQgcGFydGllcyBtYXkgaW5jbHVkZSB0aGlyZAogICAgICAgICAgICAgICAgICBwYXJ0aWVzIHRoYXQgcHJvdmlkZSB0ZWNobmljYWwgc2VydmljZXMgdG8gdXMgc28gdGhhdCB3ZSBjYW4gcHJvdmlkZSB0aGUgQXBwcy48YnIgLz4KICAgICAgICAgICAgICAgICAgV2UgbWF5IGNvbGxlY3QgcGVyc29uYWwgZGF0YSBhYm91dCB5b3Ugd2hlbiB5b3UgYWNjZXNzIHNvbWUgb2Ygb3VyIEFwcHMgd2l0aCB0aGlyZC1wYXJ0eSBwbGF0Zm9ybQogICAgICAgICAgICAgICAgICBhY2NvdW50cywgc3VjaCBhcyBhIGdhbWluZyBwbGF0Zm9ybSBhY2NvdW50LiBXaGVuIHlvdSBhY2Nlc3MgdGhlIEFwcHMgaW4gdGhpcyB3YXksIHRoZSB0aGlyZC1wYXJ0eQogICAgICAgICAgICAgICAgICBwbGF0Zm9ybXMgcHJvdmlkZSB1cyB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHlvdS4gRm9yIGV4YW1wbGUsIGRlcGVuZGluZyBvbiB5b3VyIHVzZSBvZiwgb3IgYWN0aXZpdHkgb24KICAgICAgICAgICAgICAgICAgdGhlIHRoaXJkLXBhcnR5IHBsYXRmb3JtLCB3ZSByZWNlaXZlIHlvdXIgdXNlcm5hbWUsIGVtYWlsIGFkZHJlc3MsIG9yIGFjY291bnQgaW5mb3JtYXRpb24gbmVjZXNzYXJ5IHRvCiAgICAgICAgICAgICAgICAgIHByb3ZpZGUgdGhlIEFwcHMuCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj7jg7tBdXRvbWF0aWMgRGF0YS1Db2xsZWN0aW9uIFRlY2hub2xvZ2llczwvc3Bhbj48YnIgLz4KICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgYWNjZXNzIGFuZCB1c2UgdGhlIEFwcHMgd2Ugd2lsbCBjb2xsZWN0IGNlcnRhaW4gdXNhZ2UgZGF0YSBhbmQgdGVjaG5pY2FsIGRhdGEuPGJyIC8+CiAgICAgICAgICAgICAgICAgIFRoZSBhdXRvbWF0aWMgZGF0YSBjb2xsZWN0aW9uIHRlY2hub2xvZ2llcyB3ZSB1c2UgdG8gY29sbGVjdCB0aGlzIGRhdGEgbWF5IGluY2x1ZGU6CiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4KICAgICAgICAgICAgICAgICAg44O7Q29va2llcyAob3IgcGl4ZWwgdGFncyBhbmQgb3RoZXIgc2ltaWxhciB0ZWNobm9sb2dpZXMpLiBBIGNvb2tpZSBpcyBhIHNtYWxsIGZpbGUgcGxhY2VkIG9uIHRoZSBoYXJkCiAgICAgICAgICAgICAgICAgIGRyaXZlIG9mIHlvdXIgY29tcHV0ZXIgb3IgZGV2aWNlLiBZb3UgbWF5IHJlZnVzZSB0byBhY2NlcHQgYnJvd3NlciBjb29raWVzIGJ5IGFjdGl2YXRpbmcgdGhlCiAgICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlIHNldHRpbmdzIG9uIHlvdXIgYnJvd3Nlci4gSG93ZXZlciwgaWYgeW91IHNlbGVjdCB0aGlzIHNldHRpbmcgeW91IG1heSBiZSB1bmFibGUgdG8gYWNjZXNzCiAgICAgICAgICAgICAgICAgIGNlcnRhaW4gcGFydHMgb2YgdGhlIEFwcHMuIFVubGVzcyB5b3UgaGF2ZSBhZGp1c3RlZCB5b3VyIGJyb3dzZXIgc2V0dGluZyBzbyB0aGF0IGl0IHdpbGwgcmVmdXNlCiAgICAgICAgICAgICAgICAgIGNvb2tpZXMsIG91ciBzeXN0ZW0gd2lsbCBpc3N1ZSBjb29raWVzIHdoZW4geW91IGRpcmVjdCB5b3VyIGJyb3dzZXIgdG8gdGhlIEFwcHMuCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4KICAgICAgICAgICAgICAgICAg44O7V2ViIEJlYWNvbnMuIE91ciBlbWFpbHMgbWF5IHVzZSBzbWFsbCBlbGVjdHJvbmljIGZpbGVzIGtub3duIGFzIHdlYiBiZWFjb25zIChhbHNvIHJlZmVycmVkIHRvIGFzCiAgICAgICAgICAgICAgICAgIGNsZWFyIGdpZnMsIHBpeGVsIHRhZ3MsIGFuZCBzaW5nbGUtcGl4ZWwgZ2lmcykgdGhhdCBwZXJtaXQgdXMsIGZvciBleGFtcGxlLCB0byBjb3VudCB1c2VycyB3aG8gaGF2ZQogICAgICAgICAgICAgICAgICB2aXNpdGVkIHRob3NlIHBhZ2VzIG9yIG9wZW5lZCBhbiBlbWFpbCBhbmQgZm9yIG90aGVyIHJlbGF0ZWQgd2Vic2l0ZSBzdGF0aXN0aWNzIChmb3IgZXhhbXBsZSwKICAgICAgICAgICAgICAgICAgcmVjb3JkaW5nIHRoZSBwb3B1bGFyaXR5IG9mIGNlcnRhaW4gd2Vic2l0ZSBjb250ZW50IGFuZCB2ZXJpZnlpbmcgc3lzdGVtIGFuZCBzZXJ2ZXIgaW50ZWdyaXR5KS4KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPgogICAgICAgICAgICAgICAgICDjg7tSZXNldHRhYmxlIERldmljZSBJZGVudGlmaWVycy4gV2UgbWF5IGNvbGxlY3QgYSByZXNldHRhYmxlIGRldmljZSBpZGVudGlmaWVyIGZyb20geW91ciBkZXZpY2UuCiAgICAgICAgICAgICAgICAgIFJlc2V0dGFibGUgZGV2aWNlIGlkZW50aWZpZXJzIGNhbiBiZSB1c2VkIGxpa2UgY29va2llcyBhbmQgYXJlIGZvdW5kIG9uIG1hbnkgbW9iaWxlIGRldmljZXMgYW5kCiAgICAgICAgICAgICAgICAgIHRhYmxldHMgKGZvciBleGFtcGxlLCB0aGUg4oCcSWRlbnRpZmllciBmb3IgQWR2ZXJ0aXNlcnPigJ0gb24gQXBwbGUgaU9TIGRldmljZXMgYW5kIHRoZSDigJxHb29nbGUKICAgICAgICAgICAgICAgICAgQWR2ZXJ0aXNpbmcgSUTigJ0gb24gQW5kcm9pZCBkZXZpY2VzKS4gTGlrZSBjb29raWVzLCByZXNldHRhYmxlIGRldmljZSBpZGVudGlmaWVycyBhcmUgdXNlZCB0byBtYWtlCiAgICAgICAgICAgICAgICAgIG9ubGluZSBhZHZlcnRpc2luZyBtb3JlIHJlbGV2YW50LCBhbmQgZm9yIGFuYWx5dGljcyBhbmQgb3B0aW1pemF0aW9uIHB1cnBvc2VzLgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgICAgICBZb3UgbWF5IGFsc28gY29udHJvbCB0aGUgaW5mb3JtYXRpb24gdGhhdCB3ZSBjb2xsZWN0IHRocm91Z2ggdGhlIHNldHRpbmdzIG9uIHlvdXIgbW9iaWxlIGRldmljZS4gWW91CiAgICAgICAgICAgICAgICAgIG1heSBhZGp1c3QgdGhlIHNldHRpbmdzIG9mIHlvdXIgbW9iaWxlIGRldmljZSB0byBwcmV2ZW50IHRoZSBBcHBzIGZyb20gb2J0YWluaW5nIGxvY2F0aW9uIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICBIb3dldmVyLCBwbGVhc2Ugbm90ZSB0aGF0IHRoZSBBcHBzIG1heSByZWx5IG9uIGNvb2tpZXMgYW5kIGxvY2F0aW9uIGluZm9ybWF0aW9uIHRvIGZ1bmN0aW9uIHByb3Blcmx5CiAgICAgICAgICAgICAgICAgIGFuZCBzb21lIHBhcnRzIG9mIHRoZSBBcHBzIG1heSBub3QgYmUgYXZhaWxhYmxlIGlmIHlvdSBkaXNhYmxlIGNvb2tpZXMuCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj7jg7tHb29nbGUgQW5hbHl0aWNzPC9zcGFuPjxiciAvPgogICAgICAgICAgICAgICAgICBHb29nbGUgQW5hbHl0aWNzIGlzIGEgd2ViIGFuYWx5dGljcyBzZXJ2aWNlIG9mZmVyZWQgYnkgR29vZ2xlLiBHb29nbGUgdXNlcyB0aGUgZGF0YSBjb2xsZWN0ZWQgdG8gdHJhY2sKICAgICAgICAgICAgICAgICAgYW5kIG1vbml0b3IgdGhlIHVzZSBvZiBvdXIgd2Vic2l0ZXMuIEdvb2dsZSBBbmFseXRpY3MgZG9lcyBub3QgaWRlbnRpZnkgaW5kaXZpZHVhbCB1c2VycyBvciBhc3NvY2lhdGUKICAgICAgICAgICAgICAgICAgeW91ciBJUCBhZGRyZXNzIHdpdGggb3RoZXIgZGF0YSBoZWxkIGJ5IEdvb2dsZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHByaXZhY3kgcHJhY3RpY2Ugb2YKICAgICAgICAgICAgICAgICAgR29vZ2xlLCBwbGVhc2UgdmlzaXQgdGhlIEdvb2dsZSBQcml2YWN5IFRlcm1zIHdlYiBwYWdlOjxiciAvPgogICAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiCiAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9wb2xpY2llcy5nb29nbGUuY29tL3ByaXZhY3k\/aGw9ZW4iCiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PSJfYmxhbmsiCiAgICAgICAgICAgICAgICAgICAgcmVsPSJub29wZW5lciIKICAgICAgICAgICAgICAgICAgICA+aHR0cHM6Ly9wb2xpY2llcy5nb29nbGUuY29tL3ByaXZhY3k\/aGw9ZW48L2EKICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPgogICAgICAgICAgICA8aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjIuIEhvdyBXZSBVc2UgWW91ciBQZXJzb25hbCBJbmZvcm1hdGlvbjwvaDQ+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBXZSB1c2UgcGVyc29uYWwgaW5mb3JtYXRpb24gdGhhdCB3ZSBjb2xsZWN0IGFib3V0IHlvdSBvciB0aGF0IHlvdSBwcm92aWRlIHRvIHVzIGZvciB0aGUgcHVycG9zZXMgc2V0IG91dAogICAgICAgICAgICAgIGluIHRoaXMgc2VjdGlvbi4gSWYgd2Ugd2lzaCB0byBtYWtlIGFueSBjaGFuZ2VzIHRvIHRoZXNlIHB1cnBvc2VzLCBvciBpZiB3ZSB3aXNoIHRvIHVzZSB5b3VyIHBlcnNvbmFsIGRhdGEKICAgICAgICAgICAgICBmb3IgYW55IHB1cnBvc2UgdGhhdCBpcyBub3QgbGlzdGVkIGluIHRoaXMgc2VjdGlvbiwgd2Ugd2lsbCBub3RpZnkgeW91IHVzaW5nIHRoZSBjb250YWN0IGRldGFpbHMgd2UgaG9sZAogICAgICAgICAgICAgIGZvciB5b3UuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+UEFSVCBBOiBQUk9WSVNJT04gT0YgVEhFIEFQUFM8YnIgLz5QdXJwb3NlOiBUbyBwcm92aWRlIG91ciBBcHBzPC9oNT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYy1wcml2YWN5X19zY3JvbGxXcmFwIj4KICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGUzQ29sdW1ucyI+CiAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5Ij4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5EZXNjcmlwdGlvbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Q2F0ZWdvcmllcyBvZiBkYXRhPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5MZWdhbCBiYXNlczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+UHJvdmlzaW9uIG9mIG91ciBBcHBzOjwvc3Bhbj4gV2hlbiB5b3UgdXNlIG91ciBBcHBzLCB3ZQogICAgICAgICAgICAgICAgICAgICAgcHJvY2VzcyB5b3VyIHBlcnNvbmFsIGRhdGEgc28gdGhhdCB3ZSBjYW4gcHJvdmlkZSBvdXIgQXBwcyB0byB5b3UsIGluY2x1ZGluZyB0byBlbnN1cmUgdGhhdCBvdXIKICAgICAgICAgICAgICAgICAgICAgIEFwcHMgYXJlIHdvcmtpbmcgcHJvcGVybHksIHRvIHNob3cgeW91IHRoZSBjb3JyZWN0IG5vdGljZXMgYW5kIGluZm9ybWF0aW9uLCBhbmQgdG8gZW5zdXJlIHRoYXQgb3VyCiAgICAgICAgICAgICAgICAgICAgICBBcHBzIGFyZSBrZXB0IHNlY3VyZS4gVGhpcyBkYXRhIGlzIHNvbWV0aW1lcyBhdXRvbWF0aWNhbGx5IGNvbGxlY3RlZCBhbmQgdHJhbnNtaXR0ZWQgdG8gdXMuPGJyIC8+PGJyIC8+V2hlbgogICAgICAgICAgICAgICAgICAgICAgeW91IHVzZSBvdXIgQXBwcywgd2UgbWF5IGFsc28gYXNrIGZvciB5b3VyIHBlcm1pc3Npb24gdG8gc2VuZCB5b3UgcHVzaCBub3RpZmljYXRpb25zLiBJZiB5b3UgYWxsb3cKICAgICAgICAgICAgICAgICAgICAgIHRoaXMgZmVhdHVyZSwgd2UgbWF5IHNlbmQgeW91IHB1c2ggbm90aWZpY2F0aW9ucyB0aHJvdWdoIG91ciBBcHBzLCBmb3IgZXhhbXBsZSwgcmVtaW5kZXJzLCBhbGVydHMsCiAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVzIGFuZCBvdGhlciBpbmZvcm1hdGlvbi4gWW91IGNhbiBjb25maWd1cmUgYW5kIHR1cm4gb2ZmIHB1c2ggbm90aWZpY2F0aW9ucyB2aWEgeW91ciBkZXZpY2UKICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzIGF0IGFueSB0aW1lLjxiciAvPjxiciAvPk91ciBBcHBzIG1heSBhbHNvIHNlbmQgdXMgKG9yIG91ciBJVCBzdXBwbGllcnMpIGFuIGVycm9yIG1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBldmVudCBvZiBhIGNyYXNoIG9yIG90aGVyIGVycm9yIChlLmcuIGFmdGVyIHRoZSBBcHBzIGhhdmUgdW5leHBlY3RlZGx5IHF1aXQgYmVjYXVzZSBvZiBhCiAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtIGVycm9yIG9yIGhhcyBzdG9wcGVkIHJlc3BvbmRpbmcgdG8geW91ciBpbnB1dCkuIFRoZSBlcnJvciBtZXNzYWdlIGNvbnRhaW5zIFRlY2huaWNhbCBEYXRhCiAgICAgICAgICAgICAgICAgICAgICBhbmQgaW5mb3JtYXRpb24gYWJvdXQgd2hpY2ggcGFydCBvZiBvdXIgQXBw4oCZcyBzb2Z0d2FyZSBjb2RlIGhhcyBjYXVzZWQgdGhlIGVycm9yLiBUaGlzIGluZm9ybWF0aW9uCiAgICAgICAgICAgICAgICAgICAgICBoZWxwcyB1cyB1bmRlcnN0YW5kIHRoZSBjYXVzZSBvZiB0aGUgZXJyb3Igc28gdGhhdCB3ZSBjYW4gZGV2ZWxvcCBhIGZpeCB0byBwcmV2ZW50IHRoYXQgZXJyb3IgZnJvbQogICAgICAgICAgICAgICAgICAgICAgcmVvY2N1cnJpbmcgYW5kIHRoZXJlZm9yZSBpbXByb3ZlIHRoZSBBcHBzIGZvciBhbGwgdXNlcnMuCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5UZWNobmljYWwgYW5kIFVzYWdlIERhdGEvTmV0d29ya2luZyBBY3Rpdml0eTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBuZWNlc3NhcnkgZm9yIHVzIHRvIHVzZSB5b3VyIHBlcnNvbmFsIGRhdGEgdG8gcGVyZm9ybSBvdXIgb2JsaWdhdGlvbnMgaW4gYWNjb3JkYW5jZSB3aXRoIGFueQogICAgICAgICAgICAgICAgICAgICAgY29udHJhY3QgdGhhdCB3ZSBtYXkgaGF2ZSB3aXRoIHlvdSwgb3IgaXQgaXMgaW4gb3VyIGxlZ2l0aW1hdGUgaW50ZXJlc3QgdG8gdXNlIHBlcnNvbmFsIGRhdGEgaW4KICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggYSB3YXkgdG8gZW5zdXJlIHRoYXQgd2UgcHJvdmlkZSBhY2Nlc3MgdG8gb3VyIEFwcHMgaW4gYSBzZWN1cmUgYW5kIGVmZmVjdGl2ZSB3YXkuPGJyIC8+PGJyIC8+T3VyCiAgICAgICAgICAgICAgICAgICAgICB1c2Ugb2YgcHVzaCBub3RpZmljYXRpb25zIHdpbGwgYmUgc3ViamVjdCB0byB0aGUgcGVybWlzc2lvbnMgdGhhdCB5b3UgcHJvdmlkZSBhbmQgeW91ciBzeXN0ZW0KICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlM0NvbHVtbnMiPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+RGVzY3JpcHRpb248L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkNhdGVnb3JpZXMgb2YgZGF0YTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+TGVnYWwgYmFzZXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiCiAgICAgICAgICAgICAgICAgICAgICAgID5UbyBtYW5hZ2UgeW91ciBhY2NvdW50IHJlZ2lzdHJhdGlvbiBhbmQgYWNjZXNzIHRvIHRoZSBBcHBzOjwvc3BhbgogICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgWW91IHdpbGwgYmUgcmVxdWlyZWQgdG8gcmVnaXN0ZXIgYW4gYWNjb3VudCB3aXRoIHVzIGluIG9yZGVyIHRvIGdhaW4gYWNjZXNzIHRvIHRoZSBBcHBzLjxiciAvPjxiciAvPlRvCiAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBmb3IgYW4gYWNjb3VudCwgeW91IHdpbGwgbmVlZCB0byBwcm92aWRlIGFsbCByZXF1aXJlZCBwZXJzb25hbCBkYXRhLiBXZSB3aWxsIHVzZSB0aGlzCiAgICAgICAgICAgICAgICAgICAgICBkYXRhIHRvIHByb2Nlc3MgeW91ciByZWdpc3RyYXRpb24gYW5kIHRvIGlkZW50aWZ5IHlvdSB3aGVuIHlvdSBsb2cgaW4gdG8geW91ciBhY2NvdW50IGFuZCBhY2Nlc3MKICAgICAgICAgICAgICAgICAgICAgIHRoZSBBcHBzLgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+UmVnaXN0cmF0aW9uIERhdGEvSWRlbnRpZmllcnMgQXBwcyBQcm9maWxlIERhdGE8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgSXQgaXMgbmVjZXNzYXJ5IGZvciB1cyB0byB1c2UgeW91ciBwZXJzb25hbCBkYXRhIHRvIHBlcmZvcm0gb3VyIG9ibGlnYXRpb25zIGluIGFjY29yZGFuY2Ugd2l0aCBhbnkKICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0IHRoYXQgd2UgbWF5IGhhdmUgd2l0aCB5b3UsIG9yIGl0IGlzIGluIG91ciBsZWdpdGltYXRlIGludGVyZXN0IHRvIHVzZSBwZXJzb25hbCBkYXRhIGluCiAgICAgICAgICAgICAgICAgICAgICBzdWNoIGEgd2F5IHRvIGVuc3VyZSB0aGF0IHdlIHByb3ZpZGUgYWNjZXNzIHRvIG91ciBBcHBzIGluIGEgc2VjdXJlIGFuZCBlZmZlY3RpdmUgd2F5LgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlM0NvbHVtbnMiPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+RGVzY3JpcHRpb248L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkNhdGVnb3JpZXMgb2YgZGF0YTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+TGVnYWwgYmFzZXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlRvIG1hbmFnZSB5b3VyIEFwcCBhY2NvdW50IHByb2ZpbGU6PC9zcGFuPklmIHlvdSBhcmUgYQogICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZCB1c2VyIG9mIHRoZSBBcHBzIHlvdSBjYW4gdm9sdW50YXJpbHkgc3VibWl0IGFuZCB3ZSB3aWxsIGNvbGxlY3QgQXBwcyBQcm9maWxlIERhdGEgYXMKICAgICAgICAgICAgICAgICAgICAgIHBhcnQgb2YgeW91ciBBcHAgcHJvZmlsZS48YnIgLz5XZSB3aWxsIGFsc28gdXNlIHlvdXIgcGVyc29uYWwgZGF0YSB0byBzdG9yZSBpbmZvcm1hdGlvbiBhYm91dCB5b3UKICAgICAgICAgICAgICAgICAgICAgIGFuZCB5b3VyIHByZWZlcmVuY2VzLCBhbGxvd2luZyB1cyB0byBjdXN0b21pemUgdGhlIEFwcHMgYWNjb3JkaW5nIHRvIHlvdXIgaW5kaXZpZHVhbCBpbnRlcmVzdHMgYW5kCiAgICAgICAgICAgICAgICAgICAgICByZWNvZ25pemUgeW91IHdoZW4geW91IHJldHVybiB0byB0aGUgQXBwcy4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlRlY2huaWNhbCBhbmQgVXNhZ2UgRGF0YS9OZXR3b3JraW5nIEFjdGl2aXR5IEFwcHMgUHJvZmlsZSBEYXRhPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIEFueSBBcHBzIFByb2ZpbGUgRGF0YSB0aGF0IHlvdSBzdWJtaXQgaXMgdm9sdW50YXJ5LCBhbHRob3VnaCB5b3UgYXJlIHJlcXVpcmVkIHRvIHN1cHBseSBzb21lIEFwcHMKICAgICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgRGF0YSBhcyBhIHBhcnQgb2YgaW50ZXJhY3Rpbmcgd2l0aCBhbmQgdXNpbmcgdGhlIEFwcHMuIEl0IGlzIGluIG91ciBsZWdpdGltYXRlIGludGVyZXN0IHRvCiAgICAgICAgICAgICAgICAgICAgICB1c2UgeW91ciBBcHBzIFByb2ZpbGUgRGF0YSwgc28gdGhhdCB3ZSBjYW4gcHJvdmlkZSBvdXIgQXBwcyBlZmZlY3RpdmVseS4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+UHVycG9zZTogQ3VzdG9tZXIgZmVlZGJhY2svZW5xdWlyaWVzPC9oNT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYy1wcml2YWN5X19zY3JvbGxXcmFwIj4KICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGUzQ29sdW1ucyI+CiAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5Ij4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5EZXNjcmlwdGlvbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Q2F0ZWdvcmllcyBvZiBkYXRhPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5MZWdhbCBiYXNlczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCIKICAgICAgICAgICAgICAgICAgICAgICAgPklmIHlvdSBoYXZlIGEgZ2VuZXJhbCBxdWVzdGlvbiBvciBuZWVkIGhlbHAgd2l0aCBhbnkgaXNzdWUgY29uY2VybmluZyBvdXIgQXBwczo8L3NwYW4KICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIFRoZXJlIGFyZSB2YXJpb3VzIHdheXMgaW4gd2hpY2ggeW91IGFyZSBhYmxlIHRvIGNvbnRhY3QgdXMgd2l0aCBnZW5lcmFsIGlucXVpcmllcyBhbmQgdG8gcHJvdmlkZQogICAgICAgICAgICAgICAgICAgICAgZmVlZGJhY2ssIGluY2x1ZGluZyB1c2luZyB0aGUgZGV0YWlscyBzZXQgb3V0IGluIHRoZSDigJxDb250YWN0aW5nIENvY29uZeKAnSBTZWN0aW9uIDE0LCB0aHJvdWdoIGFueQogICAgICAgICAgICAgICAgICAgICAgb3RoZXIg4oCYY29udGFjdCB1c+KAmSBvciBzaW1pbGFyIGZlYXR1cmUgdGhhdCB3ZSBtYWtlIGF2YWlsYWJsZSBvbiBvdXIgQXBwcy48YnIgLz48YnIgLz5XaGVuIHlvdSBtYWtlCiAgICAgICAgICAgICAgICAgICAgICBhbiBlbnF1aXJ5IG9yIHByb3ZpZGUgZmVlZGJhY2ssIHdlIHdpbGwgY29sbGVjdCBhbmQgcHJvY2VzcyB5b3VyIHBlcnNvbmFsIGRhdGEgaW5jbHVkaW5nIGFueQogICAgICAgICAgICAgICAgICAgICAgcGVyc29uYWwgZGF0YSB5b3Ugdm9sdW50ZWVyLCB0aGF0IGlzIHJlbGV2YW50IHRvIHlvdXIgZW5xdWlyeSBvciBmZWVkYmFjay48YnIgLz48YnIgLz5JZiB5b3UgaGF2ZQogICAgICAgICAgICAgICAgICAgICAgYSB0ZWNobmljYWwgaXNzdWUgY29uY2VybmluZyBvdXIgQXBwcywgd2UgbWF5IGFsc28gcHJvY2VzcyBUZWNobmljYWwgYW5kIFVzYWdlIERhdGEvTmV0d29ya2luZwogICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHkgdG8gaGVscCB1cyBkaWFnbm9zZSBhbmQgZml4IHRoZSB0ZWNobmljYWwgaXNzdWVzIHlvdSBhcmUgZXhwZXJpZW5jaW5nLiA8YnIgLz48YnIgLz5XZQogICAgICAgICAgICAgICAgICAgICAgd2lsbCB1c2UgdGhpcyBpbmZvcm1hdGlvbiBzbyB0aGF0IHdlIGNhbiBlZmZlY3RpdmVseSBtYW5hZ2UgYW5kIHJlc3BvbmQgdG8geW91ciBlbnF1aXJ5IG9yCiAgICAgICAgICAgICAgICAgICAgICBmZWVkYmFjay4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgUmVnaXN0cmF0aW9uIERhdGEvSWRlbnRpZmllcnM8YnIgLz48YnIgLz5Qcm9maWxlIERhdGE8YnIgLz48YnIgLz5UZWNobmljYWwgYW5kIFVzYWdlCiAgICAgICAgICAgICAgICAgICAgICBEYXRhL05ldHdvcmtpbmcgQWN0aXZpdHk8YnIgLz48YnIgLz5QZXJzb25hbCBkYXRhIHRoYXQgaXMgdm9sdW50ZWVyZWQgYXMgcGFydCBvZiBmZWVkYmFjawogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBpbiBvdXIgbGVnaXRpbWF0ZSBpbnRlcmVzdCB0byB1c2UgeW91ciBwZXJzb25hbCBkYXRhIGluIHRoZSB3YXlzIGRlc2NyaWJlZCBpbiB0aGlzIHNlY3Rpb24KICAgICAgICAgICAgICAgICAgICAgIHRvIGVuc3VyZSB0aGF0IHdlIGFyZSBhYmxlIHRvIGhlbHAgeW91IHdpdGggeW91ciBlbnF1aXJ5IGFuZCBwcm92aWRlIGEgZ29vZCBzdGFuZGFyZCBvZiBzZXJ2aWNlLgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5QQVJUIEI6IEFEVkVSVElTSU5HL01BUktFVElORzwvaDU+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImMtcHJpdmFjeV9fc2Nyb2xsV3JhcCI+CiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlM0NvbHVtbnMiPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+RGVzY3JpcHRpb248L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkNhdGVnb3JpZXMgb2YgZGF0YTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+TGVnYWwgYmFzZXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPk9ubGluZSBwZXJzb25hbGlzZWQgbWFya2V0aW5nOjwvc3Bhbj4gV2UgYW5kIG91cgogICAgICAgICAgICAgICAgICAgICAgdGhpcmQtcGFydHkgcGFydG5lcnMgbWF5IHVzZSB5b3VyIHBlcnNvbmFsIGRhdGEgaW5jbHVkaW5nIGRhdGEgdGhhdCBpcyBjb2xsZWN0ZWQgdGhyb3VnaCB5b3VyCiAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbnMgd2l0aCB0aGlyZC1wYXJ0eSB3ZWJzaXRlcyBhbmQgc2VydmljZXMgKGluY2x1ZGluZyBzb2NpYWwgbWVkaWEgYW5kIG90aGVyIHBsYXRmb3JtcykKICAgICAgICAgICAgICAgICAgICAgIHRvIHByb3ZpZGUgeW91IHdpdGgsIGFuZCBhbmFseXNlIHRoZSBlZmZlY3RpdmVuZXNzIG9mLCBwZXJzb25hbGlzZWQgYWRzIHdoZW4geW91IHZpc2l0IG90aGVyCiAgICAgICAgICAgICAgICAgICAgICB3ZWJzaXRlcyBhbmQvb3IgdXNlIG90aGVyIHNlcnZpY2VzLjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICBCeSDigJxwZXJzb25hbGlzZWQgYWRz4oCdLCB3ZSBtZWFuIGFkdmVydGlzZW1lbnRzIGZvciB0aGUgQXBwcyB3aGljaCB3ZSBvciBvdXIgcGFydG5lcnMgb3RoZXJ3aXNlCiAgICAgICAgICAgICAgICAgICAgICB0aGluayB5b3UgbWlnaHQgYmUgaW50ZXJlc3RlZCBpbiBiYXNlZCBvbiB5b3VyIGJyb3dzaW5nIGhhYml0cy4gTm90ZSwgb3VyIHRoaXJkLXBhcnR5IHBhcnRuZXJzIG1heQogICAgICAgICAgICAgICAgICAgICAgYWxzbyB1c2UgdGhlIGRhdGEgdGhhdCBpcyBjb2xsZWN0ZWQgdG8gc2hvdyBwZXJzb25hbGlzZWQgYWRzIGZvciBwcm9kdWN0cyBhbmQgc2VydmljZXMgb2ZmZXJlZCBieQogICAgICAgICAgICAgICAgICAgICAgdGhpcmQgcGFydGllcy48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgICAgV2UgYWxzbyBtYXkgdXNlIHRoZXNlIHRlY2hub2xvZ2llcyB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IHlvdXIgb25saW5lIGFjdGl2aXRpZXMKICAgICAgICAgICAgICAgICAgICAgIChiZWhhdmlvdXJhbCB0cmFja2luZykuIENvbnRhY3QgdXMgYnkgZW1haWwgYXQgdGhlIGVtYWlsIGFkZHJlc3MgcHJvdmlkZWQgaW4gdGhlIOKAnENvbnRhY3RpbmcKICAgICAgICAgICAgICAgICAgICAgIENvY29uZeKAnSBTZWN0aW9uIDE0IGJlbG93IGZvciBpbmZvcm1hdGlvbiBvbiBob3cgeW91IGNhbiBvcHQgb3V0IG9mIGJlaGF2aW91cmFsIHRyYWNraW5nIG9uIHRoZQogICAgICAgICAgICAgICAgICAgICAgQXBwcyBhbmQgaG93IHdlIHJlc3BvbmQgdG8gd2ViIGJyb3dzZXIgc2lnbmFscyBhbmQgb3RoZXIgbWVjaGFuaXNtcyB0aGF0IGVuYWJsZSBjb25zdW1lcnMgdG8KICAgICAgICAgICAgICAgICAgICAgIGV4ZXJjaXNlIGNob2ljZSBhYm91dCBiZWhhdmlvdXJhbCB0cmFja2luZy4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlRlY2huaWNhbCBhbmQgVXNhZ2UgRGF0YS9OZXR3b3JraW5nIEFjdGl2aXR5PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIFdoZXJlIHlvdXIgZGF0YSBpcyBjb2xsZWN0ZWQgdGhyb3VnaCB0aGUgdXNlIG9mIG5vbi1lc3NlbnRpYWwgY29va2llcywgd2UgYW5kIG91ciB0aGlyZC1wYXJ0eQogICAgICAgICAgICAgICAgICAgICAgcGFydG5lcnMgZ2VuZXJhbGx5IHJlbHkgb24gY29uc2VudCB0byBjb2xsZWN0IHlvdXIgcGVyc29uYWwgZGF0YSBhbmQgZm9yIHRoZSBzdWJzZXF1ZW50IHByb2Nlc3NpbmcKICAgICAgICAgICAgICAgICAgICAgIG9mIGl0IGluIHRoaXMgbWFubmVyIG9yIGl0IGlzIG90aGVyd2lzZSBpbiBvdXIgbGVnaXRpbWF0ZSBpbnRlcmVzdHMgdG8gcHJvbW90ZSBvdXIgQXBwcyB0byB5b3UuPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICBPdXIgdGhpcmQtcGFydHkgcGFydG5lcnMgbWF5IHJlbHkgb24gYSBkaWZmZXJlbnQgbGF3ZnVsIGJhc2lzIGluIHJlc3BlY3Qgb2YgdGhlaXIgdXNlIG9mIHlvdXIKICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbmFsIGRhdGEuCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGUzQ29sdW1ucyI+CiAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5Ij4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5EZXNjcmlwdGlvbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Q2F0ZWdvcmllcyBvZiBkYXRhPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5MZWdhbCBiYXNlczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+SG9zdGluZyBhbmQgbWFuYWdpbmcgZXZlbnRzOjwvc3Bhbj4gRnJvbSB0aW1lIHRvIHRpbWUsIHdlCiAgICAgICAgICAgICAgICAgICAgICBtYXkgb3JnYW5pc2UgYW5kIGhvc3QgZXZlbnRzIGZvciB0aGUgcHVycG9zZSBvZiBwcm9tb3Rpbmcgb3VyIGJ1c2luZXNzIG9yIGJyaW5naW5nIG91ciBBcHAgdXNlcnMKICAgICAgICAgICAgICAgICAgICAgIHRvZ2V0aGVyLiBXZSBtYXkgcHJvY2VzcyB5b3VyIHBlcnNvbmFsIGRhdGEgdG8gY29tbXVuaWNhdGUgd2l0aCB5b3UgYWJvdXQgc3VjaCBldmVudHMgd2hlcmUgeW91CiAgICAgICAgICAgICAgICAgICAgICBoYXZlIHNwZWNpZmljYWxseSByZXF1ZXN0ZWQgaW5mb3JtYXRpb24gYWJvdXQgc3VjaCBldmVudHMgb3Igd2hlcmUgd2UgaGF2ZSBhbm90aGVyIGxhd2Z1bCBiYXNpcwogICAgICAgICAgICAgICAgICAgICAgZm9yIHNlbmRpbmcgdGhhdCBpbmZvcm1hdGlvbiB0byB5b3UuPGJyIC8+PGJyIC8+SWYgeW91IGF0dGVuZCBvbmUgb2Ygb3VyIGV2ZW50cywgd2UgbWF5IHVzZSB5b3VyCiAgICAgICAgICAgICAgICAgICAgICBwZXJzb25hbCBkYXRhIHRvIHJlY29yZCB5b3VyIGF0dGVuZGFuY2UgYXQgdGhlIGV2ZW50IGFuZCBmb3IgcmVsYXRlZCByZWNvcmQta2VlcGluZyBwdXJwb3NlcyBhbmQsCiAgICAgICAgICAgICAgICAgICAgICBpZiByZWxldmFudCwgd2UgbWF5IGNvbGxlY3QgYW5kIHByb2Nlc3MgYW55IGRpZXRhcnkgcmVxdWlyZW1lbnRzIHlvdSBtYXkgaGF2ZS4gWW91IG1heSBhbHNvCiAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlIGluIHBob3RvZ3JhcGhzIHRha2VuIGF0IG91ciBldmVudHMgYW5kIHN1Y2ggcGhvdG9ncmFwaHMgbWF5IGFwcGVhciBpbiBwdWJsaWNhdGlvbnMgdGhhdCB3ZQogICAgICAgICAgICAgICAgICAgICAgbWFrZSBhdmFpbGFibGUuCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdHJhdGlvbiBEYXRhL0lkZW50aWZpZXJzPGJyIC8+PGJyIC8+UHJvZmlsZSBEYXRhPGJyIC8+PGJyIC8+QXBwcyBQcm9maWxlIERhdGE8YnIgLz48YnIgLz5JbWFnZQogICAgICAgICAgICAgICAgICAgICAgYW5kIHBlcnNvbmFsIGRhdGEgY29udGFpbmVkIGluIGFueSBmZWVkYmFjawogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBuZWNlc3NhcnkgZm9yIHVzIHRvIHVzZSB5b3VyIHBlcnNvbmFsIGRhdGEgaW4gdGhpcyB3YXkgdG8gcGVyZm9ybSBvdXIgb2JsaWdhdGlvbnMgaW4KICAgICAgICAgICAgICAgICAgICAgIGFjY29yZGFuY2Ugd2l0aCBhbnkgY29udHJhY3QgdGhhdCB3ZSBtYXkgaGF2ZSB3aXRoIHlvdSB3aGVyZSB5b3UgaGF2ZSBzaWduZWQgdXAgdG8gYXR0ZW5kIGFuCiAgICAgICAgICAgICAgICAgICAgICBldmVudCwgb3IgaXQgaXMgaW4gb3VyIGxlZ2l0aW1hdGUgaW50ZXJlc3Qgb3IgYSB0aGlyZCBwYXJ0eeKAmXMgbGVnaXRpbWF0ZSBpbnRlcmVzdCB0byB1c2UgcGVyc29uYWwKICAgICAgICAgICAgICAgICAgICAgIGRhdGEgaW4gc3VjaCBhIHdheSB0byBlbnN1cmUgdGhhdCB0aGUgZXZlbnQgaXMgb3BlcmF0ZWQgaW4gYW4gZWZmZWN0aXZlIHdheS48YnIgLz48YnIgLz5XZSBtYXkKICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljYWxseSBhc2sgeW91ciBwZXJtaXNzaW9uIHRvIHVzZSB5b3VyIHBob3RvZ3JhcGhzLCBxdW90ZXMsIHRlc3RpbW9uaWFscywgb3Igb3RoZXIgY29udGVudAogICAgICAgICAgICAgICAgICAgICAgdGhhdCB5b3UgbWFrZSBhdmFpbGFibGUgb3IgcHVibGlzaCBhdCB0aGUgZXZlbnQuIFdoZXJlIHRoaXMgaXMgdGhlIGNhc2UsIG91ciBwcm9jZXNzaW5nIG9mIHlvdXIKICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggcGVyc29uYWwgZGF0YSB3aWxsIGJlIGJhc2VkIG9uIGV4cHJlc3MgY29uc2VudC4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+UEFSVCBDOiBCVVNJTkVTUyBBRE1JTklTVFJBVElPTiwgRklOQU5DSUFMIEFORCBMRUdBTDwvaDU+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImMtcHJpdmFjeV9fc2Nyb2xsV3JhcCI+CiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlM0NvbHVtbnMiPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+RGVzY3JpcHRpb248L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkNhdGVnb3JpZXMgb2YgZGF0YTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+TGVnYWwgYmFzZXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlJlY2VpcHQgb2Ygc2VydmljZTo8L3NwYW4+IElmIHdlIGhhdmUgZW5nYWdlZCBhbgogICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uIHRvIHByb3ZpZGUgdXMgb3Igb3VyIGNsaWVudCB3aXRoIHNlcnZpY2VzIChmb3IgZXhhbXBsZSwgSVQgc3VwcG9ydCBvciBmaW5hbmNpYWwKICAgICAgICAgICAgICAgICAgICAgIGFkdmljZSksIHdlIHdpbGwgY29sbGVjdCBhbmQgcHJvY2VzcyB5b3VyIHBlcnNvbmFsIGRhdGEgaWYgeW91IGFyZSBhIGNvbnRhY3Qgd2l0aGluIHRoZSByZWxldmFudAogICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uIGluIG9yZGVyIHRvIG1hbmFnZSBvdXIgcmVsYXRpb25zaGlwIG9yIG91ciBjbGllbnRzIHdpdGggdGhlIG9yZ2FuaXphdGlvbiwgdG8gcmVjZWl2ZQogICAgICAgICAgICAgICAgICAgICAgc2VydmljZXMgZnJvbSB0aGUgb3JnYW5pc2F0aW9uIGFuZCwgd2hlcmUgcmVsZXZhbnQsIHRvIHByb3ZpZGUgb3VyIHNlcnZpY2VzIHRvIG90aGVycyBpbmNsdWRpbmcKICAgICAgICAgICAgICAgICAgICAgIG91ciBjdXN0b21lcnMuCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5SZWdpc3RyYXRpb24gRGF0YS9JZGVudGlmaWVyczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBuZWNlc3NhcnkgZm9yIHVzIHRvIHVzZSBwZXJzb25hbCBkYXRhIGluIHRoaXMgd2F5IHRvIHBlcmZvcm0gb3VyIG9ibGlnYXRpb25zIGluIGFjY29yZGFuY2UKICAgICAgICAgICAgICAgICAgICAgIHdpdGggYW55IGNvbnRyYWN0IHRoYXQgd2UgbWF5IGhhdmUgd2l0aCB0aGUgb3JnYW5pemF0aW9uLCBvciBpdCBpcyBpbiBvdXIgbGVnaXRpbWF0ZSBpbnRlcmVzdCB0bwogICAgICAgICAgICAgICAgICAgICAgdXNlIHBlcnNvbmFsIGRhdGEgaW4gc3VjaCBhIHdheSB0byBlbnN1cmUgdGhhdCB3ZSBoYXZlIGFuIGVmZmVjdGl2ZSB3b3JraW5nIHJlbGF0aW9uc2hpcCB3aXRoIHRoZQogICAgICAgICAgICAgICAgICAgICAgb3JnYW5pemF0aW9uIGFuZCBhcmUgYWJsZSB0byBwcm92aWRlIG91ciBzZXJ2aWNlcyB0byBvdGhlcnMgaW4gYW4gZWZmZWN0aXZlIHdheS4gV2hlcmUgd2UgZG8gdGhpcwogICAgICAgICAgICAgICAgICAgICAgb24gYmVoYWxmIG9mIG91ciBjbGllbnRzIGFzIGEgZGF0YSBwcm9jZXNzb3IsIHdlIGRvIG5vdCByZXF1aXJlIGEgbGVnYWwgYmFzaXMgZm9yIHN1Y2ggcHJvY2Vzc2luZy4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iYy1wcml2YWN5X190YWJsZTNDb2x1bW5zIj4KICAgICAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkiPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkRlc2NyaXB0aW9uPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5DYXRlZ29yaWVzIG9mIGRhdGE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkxlZ2FsIGJhc2VzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIgogICAgICAgICAgICAgICAgICAgICAgICA+QnVzaW5lc3MgYWRtaW5pc3RyYXRpb24sIGZpbmFuY2UsIGFuZCBsZWdhbCBjb21wbGlhbmNlOjwvc3BhbgogICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgV2UgbWF5IHVzZSBhbiBpbmRpdmlkdWFs4oCZcyBwZXJzb25hbCBkYXRhIGZvciB0aGUgZm9sbG93aW5nIGJ1c2luZXNzIGFkbWluaXN0cmF0aW9uIGFuZCBsZWdhbAogICAgICAgICAgICAgICAgICAgICAgY29tcGxpYW5jZSBwdXJwb3Nlczo8YnIgLz48YnIgLz7jg7t0byBmYWNpbGl0YXRlIHRoZSBvcGVyYXRpb24gb3IgZWZmZWN0aXZlIG1hbmFnZW1lbnQgb2Ygb3VyIGdyb3VwCiAgICAgICAgICAgICAgICAgICAgICBvZiBidXNpbmVzc2VzOzxiciAvPjxiciAvPuODu2ZvciBmaW5hbmNpYWwsIGFjY291bnRpbmcgYW5kIHRheCBwdXJwb3Nlczs8YnIgLz48YnIgLz7jg7t0byBjb21wbHkKICAgICAgICAgICAgICAgICAgICAgIHdpdGggb3VyIGxlZ2FsIG9ibGlnYXRpb25zOzxiciAvPjxiciAvPuODu3RvIGVuZm9yY2Ugb3IgcHJvdGVjdCBvdXIgbGVnYWwgcmlnaHRzOzxiciAvPjxiciAvPuODu3RvCiAgICAgICAgICAgICAgICAgICAgICBkZWFsIHdpdGggY29tcGxhaW50czs8YnIgLz48YnIgLz7jg7t0byBwcm90ZWN0IHRoZSByaWdodHMgb2YgdGhpcmQgcGFydGllcyAoaW5jbHVkaW5nIHdoZXJlIGhlYWx0aAogICAgICAgICAgICAgICAgICAgICAgb3Igc2VjdXJpdHkgb2YgYW4gaW5kaXZpZHVhbCBpcyBlbmRhbmdlcmVkIChlLmcuIGEgZmlyZSk7IGFuZDxiciAvPjxiciAvPuODu2luIGNvbm5lY3Rpb24gd2l0aCBhCiAgICAgICAgICAgICAgICAgICAgICBidXNpbmVzcyB0cmFuc2l0aW9uIG9yIHNhbGUgc3VjaCBhcyBhIG1lcmdlciwgcmUtb3JnYW5pemF0aW9uLCBhY3F1aXNpdGlvbiBieSBhbm90aGVyIGNvbXBhbnksIG9yCiAgICAgICAgICAgICAgICAgICAgICBzYWxlIG9mIGFsbCBvciBhIHBvcnRpb24gb2Ygb3VyIGFzc2V0cy4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlJlZ2lzdHJhdGlvbiBEYXRhL0lkZW50aWZpZXJzPGJyIC8+PGJyIC8+VHJhbnNhY3Rpb24gRGF0YTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBuZWNlc3NhcnkgZm9yIHVzIHRvIHVzZSBwZXJzb25hbCBkYXRhIGluIHRoaXMgd2F5IHRvIHBlcmZvcm0gb3VyIG9ibGlnYXRpb25zIGluIGFjY29yZGFuY2UKICAgICAgICAgICAgICAgICAgICAgIHdpdGggYW55IGNvbnRyYWN0IHRoYXQgd2UgbWF5IGhhdmUgd2l0aCB0aGUgb3JnYW5pc2F0aW9uLCBvciBpdCBpcyBpbiBvdXIgbGVnaXRpbWF0ZSBpbnRlcmVzdCB0bwogICAgICAgICAgICAgICAgICAgICAgdXNlIHBlcnNvbmFsIGRhdGEgaW4gc3VjaCBhIHdheSB0byBlbnN1cmUgdGhhdCB3ZSBoYXZlIGFuIGVmZmVjdGl2ZSB3b3JraW5nIHJlbGF0aW9uc2hpcCB3aXRoIHRoZQogICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uIGFuZCBhcmUgYWJsZSB0byBwcm92aWRlIG91ciBzZXJ2aWNlcyB0byBvdGhlcnMgaW4gYW4gZWZmZWN0aXZlIHdheS4gV2hlcmUgd2UgZG8gdGhpcwogICAgICAgICAgICAgICAgICAgICAgb24gYmVoYWxmIG9mIG91ciBjbGllbnRzIGFzIGEgZGF0YSBwcm9jZXNzb3IsIHdlIGRvIG5vdCByZXF1aXJlIGEgbGVnYWwgYmFzaXMgZm9yIHN1Y2ggcHJvY2Vzc2luZy4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9fc3ViSXRlbSI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+My4gSG93IExvbmcgV2UgS2VlcCBZb3VyIEluZm9ybWF0aW9uPC9oND4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgIFdlIHdpbGwgb25seSBzdG9yZSB5b3VyIGluZm9ybWF0aW9uIGFzIGxvbmcgYXMgbmVjZXNzYXJ5IHRvIGZ1bGZpbGwgdGhlIHB1cnBvc2VzIGZvciB3aGljaCB0aGUgaW5mb3JtYXRpb24KICAgICAgICAgICAgICBpcyBjb2xsZWN0ZWQgYW5kIHByb2Nlc3NlZCBvciwgd2hlcmUgYXBwbGljYWJsZSBsYXcgcHJvdmlkZXMgZm9yIGxvbmdlciBzdG9yYWdlIGFuZCByZXRlbnRpb24gcGVyaW9kcywgZm9yCiAgICAgICAgICAgICAgdGhlIHN0b3JhZ2UgYW5kIHJldGVudGlvbiBwZXJpb2QgcmVxdWlyZWQgYnkgbGF3LiBXaGVyZSB3ZSBwcm9jZXNzIGFueSBvdGhlciBwZXJzb25hbCBkYXRhLCB3ZSB3aWxsIHJldGFpbgogICAgICAgICAgICAgIHJlbGV2YW50IHBlcnNvbmFsIGRhdGEgZm9yIHVwIHRvIHNpeCB5ZWFycyBmcm9tIHRoZSBkYXRlIG9mIG91ciBsYXN0IGludGVyYWN0aW9uIHdpdGggeW91IChhbmQgaW4KICAgICAgICAgICAgICBjb21wbGlhbmNlIHdpdGggb3VyIGRhdGEgcHJvdGVjdGlvbiBvYmxpZ2F0aW9ucykuIFdlIG1heSB0aGVuIGRlc3Ryb3kgc3VjaCBmaWxlcyB3aXRob3V0IGZ1cnRoZXIgbm90aWNlIG9yCiAgICAgICAgICAgICAgbGlhYmlsaXR5LjxiciAvPjxiciAvPklmIGFueSBwZXJzb25hbCBkYXRhIGlzIG9ubHkgdXNlZnVsIGZvciBhIHNob3J0IHBlcmlvZCAoc3VjaCBhcyBmb3IgYSBzcGVjaWZpYwogICAgICAgICAgICAgIGFjdGl2aXR5LCBwcm9tb3Rpb24gb3IgbWFya2V0aW5nIGNhbXBhaWduKSwgd2Ugd2lsbCBub3QgcmV0YWluIGl0IGZvciBsb25nZXIgdGhhbiB0aGUgcGVyaW9kIGZvciB3aGljaCBpdAogICAgICAgICAgICAgIGlzIHVzZWQgYnkgdXMuPGJyIC8+PGJyIC8+SWYgeW91IGhhdmUgb3B0ZWQgb3V0IG9mIHJlY2VpdmluZyBtYXJrZXRpbmcgY29tbXVuaWNhdGlvbnMgZnJvbSB1cywgd2Ugd2lsbAogICAgICAgICAgICAgIG5lZWQgdG8gcmV0YWluIGNlcnRhaW4gcGVyc29uYWwgZGF0YSBvbiBhIHN1cHByZXNzaW9uIGxpc3QgaW5kZWZpbml0ZWx5IHNvIHRoYXQgd2Uga25vdyBub3QgdG8gc2VuZCB5b3UKICAgICAgICAgICAgICBmdXJ0aGVyIG1hcmtldGluZyBjb21tdW5pY2F0aW9ucyBpbiB0aGUgZnV0dXJlLiBIb3dldmVyLCB3ZSB3aWxsIG5vdCB1c2UgdGhpcyBwZXJzb25hbCBkYXRhIHRvIHNlbmQgeW91CiAgICAgICAgICAgICAgZnVydGhlciBtYXJrZXRpbmcgdW5sZXNzIHlvdSBzdWJzZXF1ZW50bHkgb3B0IGJhY2sgaW4gdG8gcmVjZWl2ZSBzdWNoIG1hcmtldGluZy4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9saT4KICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4KICAgICAgICAgICAgPGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj40LiBIb3cgV2UgU2hhcmUgWW91ciBJbmZvcm1hdGlvbjwvaDQ+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBXZSBtYXkgZGlzY2xvc2UgYWdncmVnYXRlZCBpbmZvcm1hdGlvbiBhYm91dCB1c2VycywgYW5kIGluZm9ybWF0aW9uIHRoYXQgZG9lcyBub3QgaWRlbnRpZnkgYW55IGluZGl2aWR1YWwsCiAgICAgICAgICAgICAgd2l0aG91dCByZXN0cmljdGlvbi48YnIgLz48YnIgLz5XZSBtYXkgYWxzbyBkaXNjbG9zZSBwZXJzb25hbCBpbmZvcm1hdGlvbiB0aGF0IHdlIGNvbGxlY3Qgb3IgeW91IHByb3ZpZGUKICAgICAgICAgICAgICBhcyBkZXNjcmliZWQgaW4gdGhpcyBQcml2YWN5IFBvbGljeToKICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8dWwgY2xhc3M9ImMtcHJpdmFjeV9fc3ViTGlzdCI+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgICAgICDjg7tUbyBvdXIgc3Vic2lkaWFyaWVzIGFuZCBhZmZpbGlhdGVzOzxiciAvPuODu1RvIGNvbnRyYWN0b3JzLCBzZXJ2aWNlIHByb3ZpZGVycywgYWR2ZXJ0aXNpbmcgcGFydG5lcnMsCiAgICAgICAgICAgICAgICAgIGV2ZW50IHBhcnRuZXJzLCBhbmQgb3RoZXIgdGhpcmQgcGFydGllcyB3ZSB1c2UgdG8gc3VwcG9ydCBvdXIgYnVzaW5lc3MgYW5kL29yIHRoZSBBcHBzIGFuZCB3aG8gYXJlCiAgICAgICAgICAgICAgICAgIGJvdW5kIGJ5IGNvbnRyYWN0dWFsIG9ibGlnYXRpb25zIHRvIGtlZXAgcGVyc29uYWwgaW5mb3JtYXRpb24gY29uZmlkZW50aWFsIGFuZCB1c2UgaXQgb25seSBmb3IgdGhlCiAgICAgICAgICAgICAgICAgIHB1cnBvc2VzIGZvciB3aGljaCB3ZSBkaXNjbG9zZSBpdCB0byB0aGVtLjxiciAvPuODu1RvIGEgYnV5ZXIgb3Igb3RoZXIgc3VjY2Vzc29yIGluIHRoZSBldmVudCBvZiBhCiAgICAgICAgICAgICAgICAgIG1lcmdlciwgZGl2ZXN0aXR1cmUsIHJlc3RydWN0dXJpbmcsIHJlb3JnYW5pemF0aW9uLCBkaXNzb2x1dGlvbiwgb3Igb3RoZXIgc2FsZSBvciB0cmFuc2ZlciBvZiBzb21lIG9yCiAgICAgICAgICAgICAgICAgIGFsbCBvZiBDb2NvbmXigJlzIGFzc2V0cywgd2hldGhlciBhcyBhIGdvaW5nIGNvbmNlcm4gb3IgYXMgcGFydCBvZiBiYW5rcnVwdGN5LCBsaXF1aWRhdGlvbiwgb3Igc2ltaWxhcgogICAgICAgICAgICAgICAgICBwcm9jZWVkaW5ncywgaW4gd2hpY2ggcGVyc29uYWwgaW5mb3JtYXRpb24gaGVsZCBieSBDb2NvbmUgYWJvdXQgQXBwIHVzZXJzIGlzIGFtb25nIHRoZSBhc3NldHMKICAgICAgICAgICAgICAgICAgdHJhbnNmZXJyZWQuPGJyIC8+44O7VG8gYXVkaXRvcnMsIGxhd3llcnMsIGFjY291bnRhbnRzIGFuZCBvdGhlciBwcm9mZXNzaW9uYWwgYWR2aXNlcnM7PGJyIC8+44O7RnJvbQogICAgICAgICAgICAgICAgICB0aW1lIHRvIHRpbWUsIHRvIG90aGVyIHRoaXJkIHBhcnRpZXMgZm9yIGFueSBvdGhlciBwdXJwb3NlIGRpc2Nsb3NlZCBieSB1cyB3aGVuIHlvdSBwcm92aWRlIHRoZQogICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi48YnIgLz7jg7tXaXRoIHlvdXIgY29uc2VudC48YnIgLz5XZSBtYXkgYWxzbyBkaXNjbG9zZSB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uOjxiciAvPuODu1RvCiAgICAgICAgICAgICAgICAgIGNvbXBseSB3aXRoIGFueSBjb3VydCBvcmRlciwgbGF3LCBvciBsZWdhbCBwcm9jZXNzLCBpbmNsdWRpbmcgcmVzcG9uZGluZyB0byBhbnkgZ292ZXJubWVudCBvcgogICAgICAgICAgICAgICAgICByZWd1bGF0b3J5IHJlcXVlc3QuPGJyIC8+44O7VG8gZW5mb3JjZSBvciBhcHBseSBvdXIgVGVybXMgb2YgVXNlIGFuZCBvdGhlciBhZ3JlZW1lbnRzLCBpbmNsdWRpbmcgZm9yCiAgICAgICAgICAgICAgICAgIGJpbGxpbmcgYW5kIGNvbGxlY3Rpb24gcHVycG9zZXMuPGJyIC8+44O7SWYgd2UgcmVhc29uYWJseSBiZWxpZXZlICh3aXRoaW4gdGhlIGJvdW5kcyBvZiBhcHBsaWNhYmxlIGxhdykKICAgICAgICAgICAgICAgICAgZGlzY2xvc3VyZSBpcyBuZWNlc3Nhcnkgb3IgYXBwcm9wcmlhdGUgdG8gcHJvdGVjdCB0aGUgcmlnaHRzLCBwcm9wZXJ0eSwgc2VjdXJpdHkgb3Igc2FmZXR5IG9mIENvY29uZSwKICAgICAgICAgICAgICAgICAgb3VyIGN1c3RvbWVycywgb3Igb3RoZXJzLCBvciB0byBhZGRyZXNzIHRlY2huaWNhbCBpc3N1ZXMuIFRoaXMgaW5jbHVkZXMgZXhjaGFuZ2luZyBpbmZvcm1hdGlvbiB3aXRoCiAgICAgICAgICAgICAgICAgIG90aGVyIGNvbXBhbmllcyBhbmQgb3JnYW5pemF0aW9ucyBmb3IgdGhlIHB1cnBvc2VzIG9mIGZyYXVkIHByb3RlY3Rpb24gYW5kIGNyZWRpdCByaXNrIHJlZHVjdGlvbi4KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5DaG9pY2VzIEFib3V0IEhvdyBXZSBVc2UgYW5kIERpc2Nsb3NlIFlvdXIgSW5mb3JtYXRpb248L2g1PgogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+CiAgICAgICAgICAgICAgV2UgaGF2ZSBjcmVhdGVkIG1lY2hhbmlzbXMgdG8gcHJvdmlkZSB5b3Ugd2l0aCB0aGUgZm9sbG93aW5nIGNvbnRyb2wgb3ZlciB5b3VyIGluZm9ybWF0aW9uOgogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iYy1wcml2YWN5X19zdWJMaXN0Ij4KICAgICAgICAgICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9fc3ViSXRlbSI+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+CiAgICAgICAgICAgICAgICAgIOODu1RyYWNraW5nIFRlY2hub2xvZ2llcyBhbmQgQWR2ZXJ0aXNpbmcuIFlvdSBjYW4gc2V0IHlvdXIgYnJvd3NlciB0byByZWZ1c2UgYWxsIG9yIHNvbWUgYnJvd3NlcgogICAgICAgICAgICAgICAgICBjb29raWVzLCBvciB0byBhbGVydCB5b3Ugd2hlbiBjb29raWVzIGFyZSBiZWluZyBzZW50LiBJZiB5b3UgZGlzYWJsZSBvciByZWZ1c2UgY29va2llcywgcGxlYXNlIG5vdGUKICAgICAgICAgICAgICAgICAgdGhhdCBzb21lIHBhcnRzIG9mIHRoZSBBcHBzIG1heSB0aGVuIGJlIGluYWNjZXNzaWJsZSBvciBub3QgZnVuY3Rpb24gcHJvcGVybHkuCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgIFdlIGRvIG5vdCBjb250cm9sIHRoaXJkIHBhcnRpZXPigJkgY29sbGVjdGlvbiBvciB1c2Ugb2YgeW91ciBpbmZvcm1hdGlvbiB0byBzZXJ2ZSBpbnRlcmVzdC1iYXNlZAogICAgICAgICAgICAgIGFkdmVydGlzaW5nLiBIb3dldmVyLCB0aGVzZSB0aGlyZCBwYXJ0aWVzIG1heSBwcm92aWRlIHlvdSB3aXRoIHdheXMgdG8gY2hvb3NlIG5vdCB0byBoYXZlIHlvdXIgaW5mb3JtYXRpb24KICAgICAgICAgICAgICBjb2xsZWN0ZWQgb3IgdXNlZCBpbiB0aGlzIHdheS4gWW91IG1heSBvcHQgb3V0IG9mIHJlY2VpdmluZyB0YXJnZXRlZCBhZHMgZnJvbSBtZW1iZXJzIG9mIHRoZSBOZXR3b3JrCiAgICAgICAgICAgICAgQWR2ZXJ0aXNpbmcgSW5pdGlhdGl2ZSBvbjxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Imh0dHBzOi8vb3B0b3V0Lm5ldHdvcmthZHZlcnRpc2luZy5vcmcvP2M9MSI+CiAgICAgICAgICAgICAgICB0aGVpciB3ZWJzaXRlLjwvYQogICAgICAgICAgICAgID48YnIgLz48YnIgLz5DYWxpZm9ybmlhIHJlc2lkZW50cyBtYXkgaGF2ZSBhZGRpdGlvbmFsIHBlcnNvbmFsIGluZm9ybWF0aW9uIHJpZ2h0cyBhbmQgY2hvaWNlcy4gUGxlYXNlIHNlZQogICAgICAgICAgICAgIFlvdXIgQ2FsaWZvcm5pYSBQcml2YWN5IFJpZ2h0cyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9saT4KICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4KICAgICAgICAgICAgPGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj41LiBDaGlsZHJlbuKAmXMgUHJpdmFjeTwvaDQ+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBJZiB3ZSBsZWFybiB3ZSBoYXZlIGNvbGxlY3RlZCBvciByZWNlaXZlZCBwZXJzb25hbCBpbmZvcm1hdGlvbiBmcm9tIGEgY2hpbGQgdW5kZXIgdGhpcnRlZW4gKDEzKSB3aXRob3V0CiAgICAgICAgICAgICAgdmVyaWZpY2F0aW9uIG9mIHByaW9yIHBhcmVudGFsIGNvbnNlbnQsIHdlIHdpbGwgZGVsZXRlIHRoYXQgaW5mb3JtYXRpb24uIElmIHlvdSBiZWxpZXZlIHdlIG1heSBwb3NzZXNzIG9yCiAgICAgICAgICAgICAgaGF2ZSByZWNlaXZlZCBhbnkgaW5mb3JtYXRpb24gZnJvbSBvciBhYm91dCBhIGNoaWxkIHVuZGVyIHRoaXJ0ZWVuICgxMykgd2l0aG91dCBzdWNoIHByaW9yIHBhcmVudGFsCiAgICAgICAgICAgICAgY29uc2VudCwgcGxlYXNlIGltbWVkaWF0ZWx5IGNvbnRhY3QgdXMgYnkgZW1haWwgYXQgdGhlIGVtYWlsIGFkZHJlc3MgcHJvdmlkZWQgaW4gdGhlIOKAnENvbnRhY3RpbmcgQ29jb25l4oCdCiAgICAgICAgICAgICAgU2VjdGlvbiAxNCBiZWxvdy48YnIgLz4KICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICBJbiBvbmUgb3IgbW9yZSBjb3VudHJpZXMgb3V0c2lkZSB0aGUgVW5pdGVkIFN0YXRlcywgdGhlIGFwcGxpY2FibGUgYWdlIGlzIGZvdXJ0ZWVuICgxNCkgeWVhcnMgb2YgYWdlLAogICAgICAgICAgICAgIHJhdGhlciB0aGFuIHRoaXJ0ZWVuICgxMykgeWVhcnMgb2YgYWdlLjxiciAvPgogICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgIENhbGlmb3JuaWEgcmVzaWRlbnRzIHVuZGVyIHNpeHRlZW4gKDE2KSB5ZWFycyBvZiBhZ2UgbWF5IGhhdmUgYWRkaXRpb25hbCByaWdodHMgcmVnYXJkaW5nIHRoZSBjb2xsZWN0aW9uCiAgICAgICAgICAgICAgYW5kIHNhbGUgb2YgdGhlaXIgcGVyc29uYWwgaW5mb3JtYXRpb24uIFBsZWFzZSBzZWUgWW91ciBDYWxpZm9ybmlhIFByaXZhY3kgUmlnaHRzIGJlbG93IGZvciBtb3JlCiAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9fc3ViSXRlbSI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Ni4gSG93IFdlIFByb3RlY3QgWW91ciBJbmZvcm1hdGlvbjwvaDQ+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBXZSBoYXZlIGltcGxlbWVudGVkIG1lYXN1cmVzIGRlc2lnbmVkIHRvIHNlY3VyZSB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uIGZyb20gYWNjaWRlbnRhbCBsb3NzIGFuZCBmcm9tCiAgICAgICAgICAgICAgdW5hdXRob3JpemVkIGFjY2VzcywgdGhlZnQsIHVzZSwgYWx0ZXJhdGlvbiwgYW5kIGRpc2Nsb3N1cmUuIEFsbCBpbmZvcm1hdGlvbiB5b3UgcHJvdmlkZSB0byB1cyBpcyBzdG9yZWQKICAgICAgICAgICAgICBvbiBvdXIgc2VjdXJlIHNlcnZlcnMgYmVoaW5kIGZpcmV3YWxscy4gQW55IHBheW1lbnQgdHJhbnNhY3Rpb25zIHdpbGwgYmUgZW5jcnlwdGVkIHVzaW5nIFNTTAogICAgICAgICAgICAgIHRlY2hub2xvZ3kuPGJyIC8+PGJyIC8+VGhlIHNhZmV0eSBhbmQgc2VjdXJpdHkgb2YgeW91ciBpbmZvcm1hdGlvbiBhbHNvIGRlcGVuZCBvbiB5b3UuIFdoZXJlIHdlIGhhdmUKICAgICAgICAgICAgICBpc3N1ZWQgeW91IChvciB5b3UgaGF2ZSBjaG9zZW4pIGEgcGFzc3dvcmQgZm9yIGFjY2VzcyB0byBjZXJ0YWluIHBhcnRzIG9mIG91ciBBcHBzLCB5b3UgYXJlIHJlc3BvbnNpYmxlCiAgICAgICAgICAgICAgZm9yIGtlZXBpbmcgeW91ciBwYXNzd29yZCBjb25maWRlbnRpYWwuIFBsZWFzZSBkbyBub3Qgc2hhcmUgeW91ciBwYXNzd29yZCB3aXRoIGFueW9uZS48YnIgLz48YnIgLz5XZSBkbwogICAgICAgICAgICAgIG5vdCBhbmQgd2lsbCBub3QsIGF0IGFueSB0aW1lLCByZXF1ZXN0IHlvdXIgY3JlZGl0IGNhcmQgaW5mb3JtYXRpb24sIHlvdXIgbG9naW4gaW5mb3JtYXRpb24gb3Igb3RoZXIKICAgICAgICAgICAgICBpZGVudGlmaWNhdGlvbiBpbiBhIG5vbi1zZWN1cmUgb3IgdW5zb2xpY2l0ZWQgY29tbXVuaWNhdGlvbiAoc3VjaCBhcyBlbWFpbCkuPGJyIC8+PGJyIC8+QWx0aG91Z2ggd2UgZG8gb3VyCiAgICAgICAgICAgICAgYmVzdCB0byBwcm90ZWN0IHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24sIHdlIGNhbm5vdCBndWFyYW50ZWUgdGhlIHNlY3VyaXR5IG9mIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24KICAgICAgICAgICAgICB0cmFuc21pdHRlZCB0byBvciBvbiBvdXIgQXBwcy4gQW55IHRyYW5zbWlzc2lvbiBvZiBwZXJzb25hbCBpbmZvcm1hdGlvbiBpcyBhdCB5b3VyIG93biByaXNrLiBZb3UgYXNzdW1lCiAgICAgICAgICAgICAgdGhpcyByaXNrIGJ5IHVzaW5nIGFueSBwYXJ0IG9mIHRoZSBBcHBzLiBXZSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBjaXJjdW12ZW50aW9uIG9mIGFueSBvZiBvdXIgcHJpdmFjeQogICAgICAgICAgICAgIHNldHRpbmdzIG9yIHNlY3VyaXR5IG1lYXN1cmVzLCBhbmQvb3IgYW55IGRhbWFnZXMgcmVzdWx0aW5nIGZyb20gc3VjaCBjaXJjdW12ZW50aW9uLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPgogICAgICAgICAgICA8aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjcuIEhvdyBZb3UgTWF5IENoYW5nZSwgUmVtb3ZlLCBPciBFeHBvcnQgWW91ciBJbmZvcm1hdGlvbjwvaDQ+CiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+QWNjZXNzaW5nIGFuZCBDb3JyZWN0aW5nIFlvdXIgSW5mb3JtYXRpb248L2g1PgogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+CiAgICAgICAgICAgICAgWW91IGNhbiByZXZpZXcgYW5kIGNoYW5nZSB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uIGJ5IHNlbmRpbmcgdXMgYW4gZW1haWwgYXQgdGhlIGVtYWlsIGFkZHJlc3MgcHJvdmlkZWQKICAgICAgICAgICAgICBpbiB0aGUg4oCcQ29udGFjdGluZyBDb2NvbmXigJ0gU2VjdGlvbiAxNCBiZWxvdyB0byByZXF1ZXN0IGFjY2VzcyB0bywgb2JqZWN0IHRvLCBjb3JyZWN0IG9yIGRlbGV0ZSBhbnkKICAgICAgICAgICAgICBwZXJzb25hbCBpbmZvcm1hdGlvbiB0aGF0IHlvdSBoYXZlIHByb3ZpZGVkIHRvIHVzLjxiciAvPgogICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgIFdlIG1heSBub3QgYWNjb21tb2RhdGUgYSByZXF1ZXN0IHRvIGNoYW5nZSBpbmZvcm1hdGlvbiBpZiB3ZSByZWFzb25hYmx5IGJlbGlldmUgdGhlIGNoYW5nZSB3b3VsZCB2aW9sYXRlCiAgICAgICAgICAgICAgYW55IGxhdyBvciBsZWdhbCByZXF1aXJlbWVudCwgb3IgY2F1c2UgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluY29ycmVjdC48YnIgLz4KICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICBJZiB5b3UgZGVsZXRlIHlvdXIgdXNlciBjb250ZW50LCBjb3BpZXMgb2YgeW91ciB1c2VyIGNvbnRlbnQgbWF5IHJlbWFpbiB2aWV3YWJsZSBpbiBjYWNoZWQgYW5kIGFyY2hpdmVkCiAgICAgICAgICAgICAgcGFnZXMsIG9yIG1pZ2h0IGhhdmUgYmVlbiBjb3BpZWQgb3Igc3RvcmVkIGJ5IG90aGVyIHVzZXJzLiBQcm9wZXIgYWNjZXNzIHRvIGFuZCB1c2Ugb2YgaW5mb3JtYXRpb24sCiAgICAgICAgICAgICAgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB1c2VyIGNvbnRlbnQsIGlzIGdvdmVybmVkIGJ5IG91ciBUZXJtcyBvZiBVc2UuPGJyIC8+CiAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgWW91IG1heSBlbWFpbCB1cyBhdCB0aGUgZW1haWwgYWRkcmVzcyBwcm92aWRlZCBpbiB0aGUg4oCcQ29udGFjdGluZyBDb2NvbmXigJ0gU2VjdGlvbiAxNCBiZWxvdyB0byByZXF1ZXN0IHRoYXQKICAgICAgICAgICAgICB3ZSBkZWxldGUgeW91ciBwZXJzb25hbCBpbmZvcm1hdGlvbiBmcm9tIG91ciBkYXRhYmFzZS4gRm9yIHN1Y2ggcmVxdWVzdHMsIHBsZWFzZSB3cml0ZSDigJxkZWxldGUgbXkgcGVyc29uYWwKICAgICAgICAgICAgICBpbmZvcm1hdGlvbuKAnSBpbiB0aGUgc3ViamVjdCBsaW5lLCBhbmQgaW5jbHVkZSB5b3VyIGVtYWlsIGFkZHJlc3MgaW4gdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UuIFdlIHdpbGwgdXNlCiAgICAgICAgICAgICAgY29tbWVyY2lhbGx5IHJlYXNvbmFibGUgZWZmb3J0cyB0byBob25vciB5b3VyIHJlcXVlc3QuIFdlIG1heSByZXRhaW4gYW4gYXJjaGl2ZWQgY29weSBvZiB5b3VyIHJlY29yZHMgYXMKICAgICAgICAgICAgICByZXF1aXJlZCBieSBsYXcgb3IgZm9yIGFkbWluaXN0cmF0aXZlIHB1cnBvc2VzLjxiciAvPgogICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgIFBsZWFzZSBub3RlIHRoYXQgd2Ugd2lsbCBzdG9yZSBjb21tdW5pY2F0aW9ucyB5b3UgbWF5IHNlbmQgdGhyb3VnaCB0aGUgQXBwcywgYXMgd2VsbCBhcyBhbnkgY29tbWVudHMgeW91CiAgICAgICAgICAgICAgbWF5IHBvc3QsIGFuZCB0aGV5IG1heSBub3QgYmUgc3ViamVjdCB0byBtb2RpZmljYXRpb24gb3IgZGVsZXRpb24uPGJyIC8+CiAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgUGxlYXNlIG5vdGUsIHNpbWlsYXIgcmlnaHRzIHdpbGwgYXBwbHkgaW4gdGhlIFVLLCBFRUEgYW5kIFN3aXR6ZXJsYW5kLiBQbGVhc2Ugc2VlIHRoZTxzcGFuCiAgICAgICAgICAgICAgICBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgUHJpdmFjeSBzZWN0aW9uIGZvciB1c2VycyBmcm9tIHRoZSBFRUEuIFVLIGFuZCBTd2l0emVybGFuZDwvc3BhbgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBmb3IgZnVydGhlciBpbmZvcm1hdGlvbgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPgogICAgICAgICAgICA8aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjguIExpbmtzIFRvIFRoaXJkLVBhcnR5IFdlYnNpdGVzIEFuZCBTZXJ2aWNlczwvaDQ+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBUaGUgQXBwcyBtYXkgY29udGFpbiBsaW5rcyB0byBvdGhlciB3ZWJzaXRlcyBhbmQgb25saW5lIHNlcnZpY2VzLiBJZiB5b3UgY2hvb3NlIHRvIGNsaWNrIHRocm91Z2ggdG8gb25lIG9mCiAgICAgICAgICAgICAgdGhlc2Ugb3RoZXIgd2Vic2l0ZXMgb3Igb25saW5lIHNlcnZpY2VzLCBwbGVhc2Ugbm90ZSB0aGF0IGFueSBpbmZvcm1hdGlvbiB5b3UgbWF5IHByb3ZpZGUgd2lsbCBiZSBzdWJqZWN0CiAgICAgICAgICAgICAgdG8gdGhlIHByaXZhY3kgcG9saWN5IGFuZCBvdGhlciB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGF0IHdlYnNpdGUgb3Igc2VydmljZSwgYW5kIG5vdCB0byB0aGlzIFByaXZhY3kKICAgICAgICAgICAgICBQb2xpY3kuIFdlIGRvIG5vdCBjb250cm9sIHRoaXJkLXBhcnR5IHdlYnNpdGVzIG9yIHNlcnZpY2VzLCBhbmQgdGhlIGZhY3QgdGhhdCBhIGxpbmsgdG8gc3VjaCBhIHdlYnNpdGUgb3IKICAgICAgICAgICAgICBzZXJ2aWNlIGFwcGVhcnMgaW4gdGhlIEFwcHMgZG9lcyBub3QgbWVhbiB0aGF0IHdlIGVuZG9yc2UgaXRzIG9yIGl0cyBwcm92aWRlciwgb3IgaGF2ZSBhcHByb3ZlZCB0aGUKICAgICAgICAgICAgICBwcm92aWRlcuKAmXMgcG9saWNpZXMgb3IgcHJhY3RpY2VzIHJlbGF0ZWQgdG8gdXNlciBpbmZvcm1hdGlvbi48YnIgLz48YnIgLz5CZWZvcmUgcHJvdmlkaW5nIGFueSBpbmZvcm1hdGlvbgogICAgICAgICAgICAgIHRvIGFueSB0aGlyZC1wYXJ0eSB3ZWJzaXRlIG9yIHNlcnZpY2UsIHBsZWFzZSByZXZpZXcgdGhlIHByaXZhY3kgcG9saWN5IGFuZCBvdGhlciB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICAgICAgICAgIHRoYXQgd2Vic2l0ZSBvciBzZXJ2aWNlLiBZb3UgYWdyZWUgdGhhdCBDb2NvbmUgd2lsbCBoYXZlIG5vIGxpYWJpbGl0eSBmb3IgYW55IG1hdHRlcnMgcmVsYXRpbmcgdG8gYQogICAgICAgICAgICAgIHRoaXJkLXBhcnR5IHdlYnNpdGUgb3Igc2VydmljZSB0aGF0IHlvdSBwcm92aWRlIGluZm9ybWF0aW9uIHRvLCBpbmNsdWRpbmcgdGhlaXIgY29sbGVjdGlvbiBhbmQvb3IgaGFuZGxpbmcKICAgICAgICAgICAgICBvZiB0aGF0IGluZm9ybWF0aW9uLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPgogICAgICAgICAgICA8aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjkuIE5vbi1VLlMuIFVzZXJzPC9oND4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgIFdoZW4gd2UgcmVmZXIgdG8gdGhlIHRlcm0g4oCcPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkdEUFI8L3NwYW4+4oCdIGluIHRoaXMgUHJpdmFjeSBQb2xpY3kgd2UKICAgICAgICAgICAgICBtZWFuIHRoZSBFdXJvcGVhbiBVbmlvbiBHZW5lcmFsIERhdGEgUHJvdGVjdGlvbiBSZWd1bGF0aW9uLiBJbmZvcm1hdGlvbiB0aGF0IHlvdSBwcm92aWRlIG1heSBiZQogICAgICAgICAgICAgIHRyYW5zZmVycmVkIG9yIGFjY2Vzc2VkIGJ5IGVudGl0aWVzIGFyb3VuZCB0aGUgd29ybGQgYXMgZGVzY3JpYmVkIGluIHRoaXMgUHJpdmFjeSBQb2xpY3kuIElmIHlvdSBhcmUKICAgICAgICAgICAgICBsb2NhdGVkIG91dHNpZGUgdGhlIFVuaXRlZCBTdGF0ZXMsIHlvdSB1bmRlcnN0YW5kIHRoYXQgd2UgbWF5IHRyYW5zZmVyIHBlcnNvbmFsIGluZm9ybWF0aW9uIHRvIGFuZCBwcm9jZXNzCiAgICAgICAgICAgICAgaXQgaW4gdGhlIFVuaXRlZCBTdGF0ZXMuIEluIHN1Y2ggZXZlbnQsIHRyYW5zZmVycmVkIHBlcnNvbmFsIGluZm9ybWF0aW9uIHdpbGwgbm9uZXRoZWxlc3MgYmUgcHJvY2Vzc2VkIGFuZAogICAgICAgICAgICAgIGhlbGQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YgdGhlIGFwcGxpY2FibGUgbGF3IGluIHlvdXIgcGxhY2Ugb2YgcmVzaWRlbmNlLiBJZiB5b3UgYXJlCiAgICAgICAgICAgICAgbG9jYXRlZCBpbiB0aGUgVUssIEVFQSBvciBTd2l0emVybGFuZCBwbGVhc2Ugbm90ZSB0aGF0IHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gbWF5IGJlIHRyYW5zZmVycmVkCiAgICAgICAgICAgICAgb3V0c2lkZSBvZiB0aGUgVUssIEVFQSBvciBTd2l0emVybGFuZC4gWW91ciBjb25zZW50IHRvIHRoaXMgUHJpdmFjeSBQb2xpY3kgdG9nZXRoZXIgd2l0aCB5b3VyIHN1Ym1pc3Npb24KICAgICAgICAgICAgICBvZiBwZXJzb25hbCBpbmZvcm1hdGlvbiBjb25zdGl0dXRlIHlvdXIgYWdyZWVtZW50IHRvIHRoZXNlIHRyYW5zZmVycy4gUGxlYXNlIHNlZSB0aGU8c3BhbgogICAgICAgICAgICAgICAgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIFByaXZhY3kgc2VjdGlvbiBmb3IgdXNlcnMgZnJvbSB0aGUgRUVBLCBVSyBhbmQgU3dpdHplcmxhbmQ8L3NwYW4KICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9fc3ViSXRlbSI+CiAgICAgICAgICAgIDxoNCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+MTAuIFByaXZhY3kgc2VjdGlvbiBmb3IgdXNlcnMgZnJvbSB0aGUgVUssIEVFQSBhbmQgU3dpdHplcmxhbmQ8L2g0PgogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+CiAgICAgICAgICAgICAgQnkgY29udGludWluZyB0byB1c2Ugb3VyIEFwcHMgeW91IGFja25vd2xlZGdlIHRoYXQgeW91ciBkYXRhIHdpbGwgYmUgcHJvY2Vzc2VkIGluIGFjY29yZGFuY2Ugd2l0aCB0aGlzCiAgICAgICAgICAgICAgUHJpdmFjeSBQb2xpY3kuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5BLiBEYXRhIENvbnRyb2xsZXI8L2g1PgogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+CiAgICAgICAgICAgICAgRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIFByaXZhY3kgUG9saWN5LCBDb2NvbmUgT05FIGNvcnBvcmF0aW9uIGlzIHRoZSBEYXRhIENvbnRyb2xsZXIgb2YgeW91ciBwZXJzb25hbAogICAgICAgICAgICAgIGluZm9ybWF0aW9uLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Qi4gSW50ZXJuYXRpb25hbCB0cmFuc2ZlcnMgb2YgcGVyc29uYWwgZGF0YTwvaDU+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBOb24tVUsvRUVBIGNvdW50cmllcyBtYXkgbm90IHByb3ZpZGUgdGhlIHNhbWUgZGVncmVlIG9mIHByb3RlY3Rpb24gZm9yIHlvdXIgcGVyc29uYWwgZGF0YSwgbWF5IG5vdCBnaXZlCiAgICAgICAgICAgICAgeW91IHRoZSBzYW1lIHJpZ2h0cyBpbiByZWxhdGlvbiB0byB5b3VyIHBlcnNvbmFsIGRhdGEgYW5kIG1heSBub3QgaGF2ZSBhIGRhdGEgcHJvdGVjdGlvbiBzdXBlcnZpc29yeQogICAgICAgICAgICAgIGF1dGhvcml0eSB0byBoZWxwIHlvdSBpZiB5b3UgaGF2ZSBhbnkgY29uY2VybnMgYWJvdXQgdGhlIHByb2Nlc3Npbmcgb2YgeW91ciBwZXJzb25hbCBkYXRhLiBIb3dldmVyLCB3aGVuCiAgICAgICAgICAgICAgdHJhbnNmZXJyaW5nIHlvdXIgcGVyc29uYWwgZGF0YSAodGhhdCBvcmlnaW5hdGVzIGZyb20gdGhlIFVLLCBFRUEgb3IgU3dpdHplcmxhbmQpIG91dHNpZGUgdGhlIFVLLCBFRUEgb3IKICAgICAgICAgICAgICBTd2l0emVybGFuZCwgd2Ugd2lsbCBjb21wbHkgd2l0aCBvdXIgbGVnYWwgYW5kIHJlZ3VsYXRvcnkgb2JsaWdhdGlvbnMgaW4gcmVsYXRpb24gdG8geW91ciBwZXJzb25hbCBkYXRhLAogICAgICAgICAgICAgIGluY2x1ZGluZyBoYXZpbmcgYSBsYXdmdWwgYmFzaXMgZm9yIHRyYW5zZmVycmluZyBwZXJzb25hbCBkYXRhIGFuZCBwdXR0aW5nIGFwcHJvcHJpYXRlIHNhZmVndWFyZHMgaW4gcGxhY2UKICAgICAgICAgICAgICB0byBlbnN1cmUgYW4gYWRlcXVhdGUgbGV2ZWwgb2YgcHJvdGVjdGlvbiBmb3IgdGhlIHBlcnNvbmFsIGRhdGEuIFdlIHdpbGwgdGFrZSByZWFzb25hYmxlIHN0ZXBzIHRvIGVuc3VyZQogICAgICAgICAgICAgIHRoZSBzZWN1cml0eSBvZiB5b3VyIHBlcnNvbmFsIGRhdGEgaW4gYWNjb3JkYW5jZSB3aXRoIGFwcGxpY2FibGUgZGF0YSBwcm90ZWN0aW9uIGxhd3MuPGJyIC8+PGJyIC8+V2hlbgogICAgICAgICAgICAgIHRyYW5zZmVycmluZyB5b3VyIHBlcnNvbmFsIGRhdGEgb3V0c2lkZSB0aGUgVUssIEVFQSBvciBTd2l0emVybGFuZCwgd2Ugd2lsbCwgd2hlcmUgcmVxdWlyZWQgYnkgYXBwbGljYWJsZQogICAgICAgICAgICAgIGxhdywgaW1wbGVtZW50IGF0IGxlYXN0IG9uZSBvZiB0aGUgc2FmZWd1YXJkcyBzZXQgb3V0IGJlbG93LiBQbGVhc2UgY29udGFjdCB1cyBpZiB5b3Ugd291bGQgbGlrZSBmdXJ0aGVyCiAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gdGhlIHNwZWNpZmljIG1lY2hhbmlzbXMgdXNlZCBieSB1cyB3aGVuIHRyYW5zZmVycmluZyB5b3VyIHBlcnNvbmFsIGRhdGEgb3V0c2lkZSB0aGUgVUssIEVFQQogICAgICAgICAgICAgIG9yIFN3aXR6ZXJsYW5kLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICDjg7tBZGVxdWFjeSBkZWNpc2lvbnM6IFdlIG1heSB0cmFuc2ZlciB5b3VyIHBlcnNvbmFsIGRhdGEgdG8gY291bnRyaWVzIHRoYXQgaGF2ZSBiZWVuIGRlZW1lZCB0byBwcm92aWRlIGFuCiAgICAgICAgICAgICAgYWRlcXVhdGUgbGV2ZWwgb2YgcHJvdGVjdGlvbiBmb3IgcGVyc29uYWwgZGF0YSBieSB0aGUgRXVyb3BlYW4gQ29tbWlzc2lvbiBhbmQvb3IgdGhlIFVLL1N3aXNzIEdvdmVybm1lbnQKICAgICAgICAgICAgICAoYXMgYXBwbGljYWJsZSkuPGJyIC8+44O7TW9kZWwgY2xhdXNlczogV2hlcmUgd2UgdXNlIGNlcnRhaW4gc2VydmljZSBwcm92aWRlcnMsIHdlIG1heSB1c2Ugc3BlY2lmaWMKICAgICAgICAgICAgICBzdGFuZGFyZCBjb250cmFjdHVhbCBjbGF1c2VzIGFwcHJvdmVkIGJ5IHRoZSBFdXJvcGVhbiBDb21taXNzaW9uIGFuZC9vciB0aGUgVUsvU3dpc3MgR292ZXJubWVudCB3aGljaCBnaXZlCiAgICAgICAgICAgICAgcGVyc29uYWwgZGF0YSB0aGUgc2FtZSBwcm90ZWN0aW9uIGl0IGhhcyBpbiBFdXJvcGUsIFN3aXR6ZXJsYW5kIGFuZC9vciB0aGUgVUsuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5DLiBSaWdodHMgb2YgRUVBIFJlc2lkZW50czwvaDU+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBJZiB5b3UgYXJlIGFjY2Vzc2luZyBvciB1c2luZyB0aGUgQXBwcyBmcm9tIHdpdGhpbiB0aGUgVUssIEVFQSBvciBTd2l0emVybGFuZCB5b3UgbWF5IGhhdmUgdGhlIGZvbGxvd2luZwogICAgICAgICAgICAgIHJpZ2h0cyB1bmRlciB0aGUgR0RQUiAoYXMgd2VsbCBhcyBvdGhlciByaWdodHMpLiBJZiB5b3Ugd2lzaCB0byBleGVyY2lzZSBhbnkgb2YgdGhlc2UgcmlnaHRzLCB5b3UgbWF5IGRvCiAgICAgICAgICAgICAgc28gYnkgY29udGFjdGluZyB1cyBhcyBwcm92aWRlZCAoYSkgaW4gU2VjdGlvbiAxNCBiZWxvdywgb3IgKGIpIG90aGVyd2lzZSBpbiB0aGlzIFByaXZhY3kgUG9saWN5LgogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICDjg7tSaWdodCBvZiBBY2Nlc3M6IFlvdSBoYXZlIHRoZSByaWdodCB0byBvYnRhaW4gY29uZmlybWF0aW9uIGZyb20gdXMgYXMgdG8gd2hldGhlciBvciBub3Qgd2UgcHJvY2VzcwogICAgICAgICAgICAgIHBlcnNvbmFsIGluZm9ybWF0aW9uIGZyb20geW91IGFuZCB5b3UgYWxzbyBoYXZlIHRoZSByaWdodCB0byBhdCBhbnkgdGltZSBvYnRhaW4gYWNjZXNzIHRvIHlvdXIgcGVyc29uYWwKICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBzdG9yZWQgYnkgdXMuPGJyIC8+44O7UmlnaHQgdG8gQ29ycmVjdGlvbiBvZiB5b3VyIFBlcnNvbmFsIEluZm9ybWF0aW9uOiBJZiB3ZSBwcm9jZXNzIHlvdXIKICAgICAgICAgICAgICBwZXJzb25hbCBpbmZvcm1hdGlvbiwgd2UgdXNlIHJlYXNvbmFibGUgbWVhc3VyZXMgdG8gZW5zdXJlIHRoYXQgeW91ciBwZXJzb25hbCBpbmZvcm1hdGlvbiBpcyBhY2N1cmF0ZSBhbmQKICAgICAgICAgICAgICB1cC10by1kYXRlIGZvciB0aGUgcHVycG9zZXMgZm9yIHdoaWNoIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gd2FzIGNvbGxlY3RlZC4gSWYgeW91ciBwZXJzb25hbAogICAgICAgICAgICAgIGluZm9ybWF0aW9uIGlzIGluYWNjdXJhdGUgb3IgaW5jb21wbGV0ZSwgeW91IGhhdmUgdGhlIHJpZ2h0IHRvIHJlcXVpcmUgdXMgdG8gY29ycmVjdCBpdC48YnIgLz7jg7tSaWdodCB0bwogICAgICAgICAgICAgIERlbGV0aW9uIG9mIHlvdXIgUGVyc29uYWwgSW5mb3JtYXRpb24gb3IgUmlnaHQgdG8gUmVzdHJpY3Rpb24gb2YgUHJvY2Vzc2luZzogWW91IG1heSBoYXZlIHRoZSByaWdodCB0bwogICAgICAgICAgICAgIHJlcXVpcmUgdXMgdG8gZGVsZXRlIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gb3IgdG8gcmVzdHJpY3Qgb2YgcHJvY2Vzc2luZyBvZiB5b3VyIHBlcnNvbmFsCiAgICAgICAgICAgICAgaW5mb3JtYXRpb24uPGJyIC8+44O7UmlnaHQgdG8gV2l0aGRyYXcgeW91ciBDb25zZW50OiBJZiB5b3UgaGF2ZSBnaXZlbiB5b3VyIGNvbnNlbnQgdG8gdGhlIHByb2Nlc3Npbmcgb2YKICAgICAgICAgICAgICB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uLCB5b3UgaGF2ZSB0aGUgcmlnaHQgdG8gd2l0aGRyYXcgeW91ciBjb25zZW50IGF0IGFueSB0aW1lLCB3aXRob3V0IGFmZmVjdGluZyB0aGUKICAgICAgICAgICAgICBsYXdmdWxuZXNzIG9mIHByb2Nlc3NpbmcgYmFzZWQgb24gdGhlIGNvbnNlbnQgYmVmb3JlIHRoZSB3aXRoZHJhd2FsLjxiciAvPuODu1JpZ2h0IHRvIERhdGEgUG9ydGFiaWxpdHk6IFlvdQogICAgICAgICAgICAgIG1heSBoYXZlIHRoZSByaWdodCB0byByZWNlaXZlIHBlcnNvbmFsIGluZm9ybWF0aW9uIGNvbmNlcm5pbmcgeW91IGFuZCB3aGljaCB5b3UgaGF2ZSBwcm92aWRlZCB0byB1cywgaW4gYQogICAgICAgICAgICAgIHN0cnVjdHVyZWQsIGNvbW1vbmx5IHVzZWQgYW5kIG1hY2hpbmUtcmVhZGFibGUgZm9ybWF0IG9yIHRvIHRyYW5zbWl0IHRoaXMgZGF0YSB0byBhbm90aGVyIGNvbnRyb2xsZXIuPGJyIC8+44O7UmlnaHQKICAgICAgICAgICAgICB0byBPYmplY3Q6IFlvdSBtYXkgaGF2ZSB0aGUgcmlnaHQgdG8gb2JqZWN0IHRvIHRoZSBwcm9jZXNzaW5nIG9mIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gYXMgZnVydGhlcgogICAgICAgICAgICAgIHNwZWNpZmllZCBpbiB0aGlzIFByaXZhY3kgUG9saWN5LjxiciAvPuODu1JpZ2h0IG5vdCB0byBiZSBzdWJqZWN0IHRvIGF1dG9tYXRlZCBkZWNpc2lvbiBtYWtpbmcgYW5kCiAgICAgICAgICAgICAgcHJvZmlsaW5nOiBZb3UgaGF2ZSB0aGUgcmlnaHQgbm90IHRvIGJlIHN1YmplY3QgdG8gYSBkZWNpc2lvbiB3aGVuIGl0IGlzIGJhc2VkIG9uIGF1dG9tYXRpYyBwcm9jZXNzaW5nLAogICAgICAgICAgICAgIGluY2x1ZGluZyBwcm9maWxpbmcsIGlmIGl0IHByb2R1Y2VzIGEgbGVnYWwgZWZmZWN0IG9yIHNpbWlsYXJseSBzaWduaWZpY2FudGx5IGFmZmVjdHMgeW91LCB1bmxlc3Mgc3VjaAogICAgICAgICAgICAgIHByb2ZpbGluZyBpcyBuZWNlc3NhcnkgZm9yIHRoZSBlbnRlcmluZyBpbnRvLCBvciB0aGUgcGVyZm9ybWFuY2Ugb2YsIGEgY29udHJhY3QgYmV0d2VlbiB5b3UgYW5kIHVzLjxiciAvPuODu1JpZ2h0CiAgICAgICAgICAgICAgdG8gTG9kZ2UgYSBDb21wbGFpbnQgd2l0aCBTdXBlcnZpc29yeSBBdXRob3JpdHk6IFlvdSBoYXZlIHRoZSByaWdodCB0byBsb2RnZSBhIGNvbXBsYWludCB3aXRoIHlvdXIKICAgICAgICAgICAgICByZWxldmFudCBkYXRhIHByb3RlY3Rpb24gc3VwZXJ2aXNvcnkgYXV0aG9yaXR5IGxvY2F0ZWQgaW4gdGhlIEV1cm9wZWFuIFVuaW9uLiBJZiB5b3UgYXJlIGxvY2F0ZWQgaW4gdGhlCiAgICAgICAgICAgICAgRUVBLCBmdXJ0aGVyIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBjb250YWN0IHlvdXIgbG9jYWwgZGF0YSBwcm90ZWN0aW9uIGF1dGhvcml0eSBpcyBhdmFpbGFibGUgb24gdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiCiAgICAgICAgICAgICAgICBocmVmPSJodHRwOi8vZWMuZXVyb3BhLmV1L2p1c3RpY2UvZGF0YS1wcm90ZWN0aW9uL2JvZGllcy9hdXRob3JpdGllcy9pbmRleF9lbi5odG0iCiAgICAgICAgICAgICAgICA+d2Vic2l0ZSBvZiB0aGUgRXVyb3BlYW4gQ29tbWlzc2lvbjwvYQogICAgICAgICAgICAgID4uIElmIHlvdSBhcmUgbG9jYXRlZCBpbiB0aGUgVUsgdGhlIHJlZ3VsYXRvcnkgYXV0aG9yaXR5IGlzIHRoZSBJbmZvcm1hdGlvbiBDb21taXNzaW9uZXLigJlzIE9mZmljZSAo4oCcSUNP4oCdKS4KICAgICAgICAgICAgICBDb250YWN0IGRldGFpbHMgZm9yIHRoZSBJQ08gY2FuIGJlIGZvdW5kIG9uIGl0cyB3ZWJzaXRlIGF0CiAgICAgICAgICAgICAgPGEgY2xhc3M9ImMtdGV4dExpbmsgLXJlZCIgaHJlZj0iaHR0cHM6Ly9pY28ub3JnLnVrIj5odHRwczovL2ljby5vcmcudWs8L2E+LgogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+RC4gSWYgeW91IGZhaWwgdG8gcHJvdmlkZSB5b3VyIHBlcnNvbmFsIGRhdGE8L2g1PgogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+CiAgICAgICAgICAgICAgV2hlcmUgd2UgYXJlIHJlcXVpcmVkIGJ5IGxhdyB0byBjb2xsZWN0IHlvdXIgcGVyc29uYWwgZGF0YSwgb3Igd2UgbmVlZCB0byBjb2xsZWN0IHlvdXIgcGVyc29uYWwgZGF0YSB1bmRlcgogICAgICAgICAgICAgIHRoZSB0ZXJtcyBvZiBhIGNvbnRyYWN0IHdlIGhhdmUgd2l0aCB5b3UsIGFuZCB5b3UgZmFpbCB0byBwcm92aWRlIHRoYXQgcGVyc29uYWwgZGF0YSB3aGVuIHdlIHJlcXVlc3QgaXQsCiAgICAgICAgICAgICAgd2UgbWF5IG5vdCBiZSBhYmxlIHRvIHBlcmZvcm0gdGhlIGNvbnRyYWN0IHdlIGhhdmUgb3IgYXJlIHRyeWluZyB0byBlbnRlciBpbnRvIHdpdGggeW91LiBUaGlzIG1heSBhcHBseQogICAgICAgICAgICAgIHdoZXJlIHlvdSBkbyBub3QgcHJvdmlkZSB0aGUgcGVyc29uYWwgZGF0YSB3ZSBuZWVkIGluIG9yZGVyIHRvIHByb3ZpZGUgdGhlIEFwcHMgb3IgdG8gcHJvY2VzcyBhbgogICAgICAgICAgICAgIGFwcGxpY2F0aW9uIHRvIHJlZ2lzdGVyIGFuIGFjY291bnQuIEluIHRoZXNlIGNpcmN1bXN0YW5jZXMsIHdlIG1heSBoYXZlIHRvIGNhbmNlbCB5b3VyIGFwcGxpY2F0aW9uIG9yIHRoZQogICAgICAgICAgICAgIHByb3Zpc2lvbiBvZiB0aGUgcmVsZXZhbnQgQXBwcyB0byB5b3UsIGluIHdoaWNoIGNhc2Ugd2Ugd2lsbCBub3RpZnkgeW91LgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2xpPgoKICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4KICAgICAgICAgICAgPGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj4xMS4gUHJpdmFjeSBTZWN0aW9uIEZvciBVc2VycyBGcm9tIHRoZSBVLlMuPC9oND4KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5BLiBBcHBsaWNhdGlvbjwvaDU+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBJZiB5b3UgcmVzaWRlIGluIENhbGlmb3JuaWEsIENvbG9yYWRvLCBDb25uZWN0aWN1dCwgRGVsYXdhcmUsIEluZGlhbmEsIElvd2EsIEtlbnR1Y2t5LCBNYXJ5bGFuZCwKICAgICAgICAgICAgICBNaW5uZXNvdGEsIE1vbnRhbmEsIE5lYnJhc2thLCBOZXZhZGEsIE5ldyBIYW1wc2hpcmUsIE5ldyBKZXJzZXksIE9yZWdvbiwgUmhvZGUgSXNsYW5kLCBUZW5uZXNzZWUsIFRleGFzLAogICAgICAgICAgICAgIFV0YWgsIFZlcm1vbnQsIFZpcmdpbmlhLCBvciBXYXNoaW5ndG9uLCB0aGlzIHNlY3Rpb24gYXBwbGllcyB0byB5b3UuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5CLiBBdXRob3JpemVkIEFnZW50PC9oNT4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgIFlvdSBtYXkgZGVzaWduYXRlIGFuIGF1dGhvcml6ZWQgYWdlbnQgdG8gc3VibWl0IHJlcXVlc3RzIG9uIHlvdXIgYmVoYWxmIGJ5IGRlc2lnbmF0aW5nIHN1Y2ggYW4gYWdlbnQgaW4KICAgICAgICAgICAgICB3cml0aW5nLiBXZSBtYXkgcmVxdWlyZSB0aGUgYWdlbnQgdG8gcHJvdmlkZSB1cyB3aXRoIHByb29mIHRoYXQgeW91IGhhdmUgYXV0aG9yaXplZCB0aGUgYWdlbnQgdG8gbWFrZQogICAgICAgICAgICAgIHJlcXVlc3RzIG9uIHlvdXIgYmVoYWxmIHByaW9yIHRvIGFjY2VwdGluZyByZXF1ZXN0cyBmcm9tIHRoZSBhZ2VudC4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8aDUgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkMuIFlvdXIgUmlnaHRzPC9oNT4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+CiAgICAgICAgICAgICAg44O7UmlnaHQgdG8gQWNjZXNzOiBZb3UgbWF5IHJlcXVlc3QgYSBjb3B5IG9mIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gdGhhdCB3ZSBoYXZlIGNvbGxlY3RlZCBhYm91dCB5b3UuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+CiAgICAgICAgICAgICAg44O7UmlnaHQgdG8gRGVsYXRlOiBZb3UgbWF5IHJlcXVlc3QgdG8gZGVsZXRlIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24uCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+CiAgICAgICAgICAgICAg44O7UmlnaHQgdG8gQ29ycmVjdDogWW91IG1heSByZXF1ZXN0IHRvIHVwZGF0ZSBvciBjb3JyZWN0IHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24uCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+CiAgICAgICAgICAgICAg44O7UmlnaHQgdG8gT3B0IE91dDogWW91IG1heSBoYXZlIHRoZSByaWdodCB0byBvcHQgb3V0IG9mIHRhcmdldGVkIGFkdmVydGlzaW5nIGFuZCB0aGUgc2FsZSBvZiB5b3VyIGRhdGEKICAgICAgICAgICAgICAoYXMgZGVmaW5lZCB1bmRlciByZWxldmFudCBhbmQgYXBwbGljYWJsZSBsYXcpLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPgogICAgICAgICAgICAgIOODu1RvIG1ha2Ugc3VjaCBhIHJlcXVlc3QsIHBsZWFzZSBzZW5kIGFuIGVtYWlsIHRvIHRoZSBlbWFpbCBhZGRyZXNzIHByb3ZpZGVkIGluIHRoZSDigJxDb250YWN0aW5nIENvY29uZeKAnQogICAgICAgICAgICAgIFNlY3Rpb24gMTQgYmVsb3cgb3Igd3JpdGUgdXMgYXQgdGhlIGFkZHJlc3MgcHJvdmlkZWQgaW4gdGhlIOKAnENvbnRhY3RpbmcgQ29jb25l4oCdIFNlY3Rpb24gMTQgYmVsb3cuPGJyIC8+CiAgICAgICAgICAgICAgV2Ugd2lsbCBub3QgZGlzY3JpbWluYXRlIGFnYWluc3QgeW91IGZvciBleGVyY2lzaW5nIGFueSBvZiB0aGVzZSByaWdodHMgYWJvdmUuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5ELiBDYWxpZm9ybmlhIFJlc2lkZW50czwvaDU+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBBcyB0aGUgdGVybXMgYXJlIGRlZmluZWQgdW5kZXIgdGhlIENhbGlmb3JuaWEgUHJpdmFjeSBSaWdodHMgQWN0LCB3ZSBkbyBub3Qga25vd2luZ2x5IHNlbGwgb3Igc2hhcmUgeW91cgogICAgICAgICAgICAgIHBlcnNvbmFsIGluZm9ybWF0aW9uLiBXZSBkbyBub3QgaGF2ZSBhY3R1YWwga25vd2xlZGdlIHRoYXQgd2Ugc2VsbCBvciBzaGFyZSB0aGUgcGVyc29uYWwgaW5mb3JtYXRpb24gb2YKICAgICAgICAgICAgICBtaW5vcnMgdW5kZXIgMTYuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgIElmIHlvdSBhcmUgYSByZXNpZGVudCBvZiBDYWxpZm9ybmlhLCB5b3UgaGF2ZSBzcGVjaWZpYyByaWdodHMgcmVnYXJkaW5nIG91ciBoYW5kbGluZyBvZiB5b3VyIOKAnHBlcnNvbmFsCiAgICAgICAgICAgICAgaW5mb3JtYXRpb27igJ0gYXMgc3BlY2lmaWNhbGx5IGRlZmluZWQgaW4gQ2FsaWZvcm5pYeKAmXMg4oCcU2hpbmUgdGhlIExpZ2h04oCdIGxhdyAoQ2FsLiBDaXZpbCBDb2RlIFNlY3Rpb24gwqcKICAgICAgICAgICAgICAxNzk4LjgzKS4gVGhpcyBsYXcgcGVybWl0cyB1c2VycyBvZiBvdXIgQXBwcyB3aG8gYXJlIENhbGlmb3JuaWEgcmVzaWRlbnRzIHRvIHJlcXVlc3QgY2VydGFpbiBpbmZvcm1hdGlvbgogICAgICAgICAgICAgIHJlZ2FyZGluZyBvdXIgZGlzY2xvc3VyZSBvZiBwZXJzb25hbCBpbmZvcm1hdGlvbiB0byB0aGlyZCBwYXJ0aWVzIGZvciB0aGVpciBkaXJlY3QgbWFya2V0aW5nIHB1cnBvc2VzLiBUbwogICAgICAgICAgICAgIG1ha2Ugc3VjaCBhIHJlcXVlc3QsIHBsZWFzZSBzZW5kIGFuIGVtYWlsIHRvIHRoZSBlbWFpbCBhZGRyZXNzIHByb3ZpZGVkIGluIHRoZSDigJxDb250YWN0aW5nIENvY29uZeKAnSBTZWN0aW9uCiAgICAgICAgICAgICAgMTQgYmVsb3cgb3Igd3JpdGUgdXMgYXQgdGhlIGFkZHJlc3MgcHJvdmlkZWQgaW4gdGhlIOKAnENvbnRhY3RpbmcgQ29jb25l4oCdIFNlY3Rpb24gMTQgYmVsb3cuPGJyIC8+CiAgICAgICAgICAgICAgV2l0aGluIHRoaXJ0eSAoMzApIGRheXMgb2YgcmVjZWl2aW5nIHN1Y2ggYSByZXF1ZXN0LCB3ZSB3aWxsIHByb3ZpZGUgYSBsaXN0IG9mIHRoZSBjYXRlZ29yaWVzIG9mIHBlcnNvbmFsCiAgICAgICAgICAgICAgaW5mb3JtYXRpb24gZGlzY2xvc2VkIHRvIHRoaXJkIHBhcnRpZXMgZm9yIHN1Y2ggdGhpcmQgcGFydGllc+KAmSBkaXJlY3QgbWFya2V0aW5nIHB1cnBvc2VzIGR1cmluZyB0aGUKICAgICAgICAgICAgICBpbW1lZGlhdGVseSBwcmVjZWRpbmcgY2FsZW5kYXIgeWVhciwgYWxvbmcgd2l0aCB0aGUgbmFtZXMgYW5kIGFkZHJlc3NlcyBvZiB0aGVzZSB0aGlyZCBwYXJ0aWVzLiBBIHJlcXVlc3QKICAgICAgICAgICAgICBtYXkgYmUgbWFkZSBubyBtb3JlIHRoYW4gb25jZSBwZXIgY2FsZW5kYXIgeWVhciBhbmQgd2UgYXJlIG5vdCByZXF1aXJlZCB0byByZXNwb25kIHRvIHJlcXVlc3RzIG1hZGUgYnkKICAgICAgICAgICAgICBtZWFucyBvdGhlciB0aGFuIHRocm91Z2ggdGhlIGVtYWlsIGFkZHJlc3MgYW5kIG1haWxpbmcgYWRkcmVzcyBhYm92ZS4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8aDUgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjwvaDU+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij48L3A+CiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPgogICAgICAgICAgICA8aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjEyLiBQcml2YWN5IHNlY3Rpb24gZm9yIHVzZXJzIGZyb20gdGhlIFJlcHVibGljIG9mIEtvcmVhPC9oND4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPgogICAgICAgICAgICAgIFdlIHByb3ZpZGUgdGhlIEFwcHMgYW5kIHdlYiBzZXJ2aWNlcyBhcm91bmQgdGhlIHdvcmxkLiBJbiBhY2NvcmRhbmNlIHdpdGggdGhlIHByZWNlZGVudHMgaW4gdGhlIFJlcHVibGljCiAgICAgICAgICAgICAgb2YgS29yZWEsIHBlcnNvbmFsIGluZm9ybWF0aW9uIGluY2x1ZGVzIHRoZSB1c2VyIElEIGFuZCBhY2NvdW50IHBhc3N3b3JkIHlvdSBzZXQgb24gdGhlIEFwcHMuPGJyIC8+CiAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgU3Vic2lkaWFyaWVzIG9yIGFmZmlsaWF0ZWQgZW50aXRpZXMgb2YgQ29jb25lIE9ORSBjb3Jwb3JhdGlvbiBpbiB0aGUgUmVwdWJsaWMgb2YgS29yZWEgbWF5IHNoYXJlIHBlcnNvbmFsCiAgICAgICAgICAgICAgaW5mb3JtYXRpb24gd2l0aCBvdXIgYWZmaWxpYXRlcyBhbmQvb3IgdGhpcmQgcGFydGllcywgaW5jbHVkaW5nIGVudGl0aWVzIGxvY2F0ZWQgb3V0c2lkZSBvZiB0aGUgUmVwdWJsaWMKICAgICAgICAgICAgICBvZiBLb3JlYSwgb24gcHJpb3Igbm90aWNlIGZvciB0aGUgZm9sbG93aW5nIHB1cnBvc2VzOiA8YnIgLz4KICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICDjg7tUbyBzdXBwb3J0IHRoZSBvcGVyYXRpb24gb2YgdGhlIEFwcHM7IGFuZDxiciAvPgogICAgICAgICAgICAgIOODu1RvIHN1cHBvcnQgdGhlIGN1c3RvbWVyIHN1cHBvcnQgc2VydmljZXMuPGJyIC8+CiAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgUGVyc29uYWwgaW5mb3JtYXRpb24gdGhhdCBzdWJzaWRpYXJpZXMgb3IgYWZmaWxpYXRlZCBlbnRpdGllcyBvZiBDb2NvbmUgT05FIGNvcnBvcmF0aW9uIGluIHRoZSBSZXB1YmxpYyBvZgogICAgICAgICAgICAgIEtvcmVhIHNoYXJlIHNoYWxsIGJlIG9yIG1heSBiZSB1c2VkLCBwcm9jZXNzZWQsIGFuZCBzdG9yZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBwdXJwb3NlcyBiZWxvdy4gV2Ugc2hhcmUKICAgICAgICAgICAgICBwZXJzb25hbCBpbmZvcm1hdGlvbiBhcyBmb2xsb3dzOgogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImMtcHJpdmFjeV9fc2Nyb2xsV3JhcCI+CiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlNkNvbHVtbnMiPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Q29tcGFueTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+T3ZlcnNlYXMgQ291bnRyeTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+UGVyc29uYWwgSW5mb3JtYXRpb248L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkRhdGUgYW5kIE1ldGhvZCBvZiB0cmFuc2ZlcnJpbmc8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlB1cnBvc2Ugb2YgdXNpbmcgcGVyc29uYWwgaW5mb3JtYXRpb248L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPgogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlBlcmlvZCBvZiByZXRlbnRpb24gYW5kIHVzZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSB3aWRlIj5Db2NvbmUgT05FIGNvcnBvcmF0aW9uIChwcml2YWN5QGNvY29uZS5jby5qcCk8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPkphcGFuPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIFVzZXJuYW1lLCBhY2NvdW50IHBhc3N3b3JkLCBJUCBhZGRyZXNzLCBpbmZvcm1hdGlvbiB0byBjaGVjayBkb3VibGUgcmVnaXN0cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5Db21wbGV0aW9uIG9mIHJlZ2lzdHJhdGlvbiwgdmlhIGRlZGljYXRlZCBuZXR3b3JrPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5PcGVyYXRpb24gb2YgdGhlIEFwcHMsIHByb3ZpZGluZyBvdGhlciByZWxhdGVkIHNlcnZpY2VzPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIFVudGlsIHRoZSB3aXRoZHJhd2FsIG9mIHVzZXJzIGZyb20gdGhlIEFwcHMgYW5kIHRlcm1pbmF0aW9uIG9mIHByb3ZpZGluZyB0aGUgQXBwcwogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPlplbmRlc2ssIEluYy4gKHByaXZhY3lAemVuZGVzay5jb20pPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5Vbml0ZWQgU3RhdGVzPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIFVzZXJuYW1lLCBhY2NvdW50IHBhc3N3b3JkLCBJUCBhZGRyZXNzLCBpbmZvcm1hdGlvbiB0byBjaGVjayBkb3VibGUgcmVnaXN0cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIFJlYWwtdGltZSB0cmFuc21pc3Npb24gd2hlbiB1c2VycyB1c2UgdGhlIEFwcHMsIHZpYSBkZWRpY2F0ZWQgbmV0d29yawogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+Q29sbGVjdGlvbiBvZiB1c2VyIGlucXVpcmllcyBhbmQgbm90aWNlIG1hbmFnZW1lbnQ8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgVW50aWwgdGhlIHdpdGhkcmF3YWwgb2YgdXNlcnMgZnJvbSB0aGUgQXBwcyBhbmQgdGVybWluYXRpb24gb2YgcHJvdmlkaW5nIHRoZSBBcHBzCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gd2lkZSI+QW1hem9uIFdlYiBTZXJ2aWNlIEluYy4gKGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vcHJpdmFjeS8pPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5Vbml0ZWQgU3RhdGVzPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIFVzZXJuYW1lLCBhY2NvdW50IHBhc3N3b3JkLCBkYXRlIG9mIGJpcnRoLCBuYW1lLCBlbWFpbCBhZGRyZXNzLCBjb29raWVzLCBJUCBhZGRyZXNzLCBpbmZvcm1hdGlvbgogICAgICAgICAgICAgICAgICAgICAgdG8gY2hlY2sgZG91YmxlIHJlZ2lzdHJhdGlvbiwgSW5mb3JtYXRpb24gb24gbGVnYWwgcmVwcmVzZW50YXRpdmUgKG5hbWUsIGUtbWFpbCBhZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gdG8gY2hlY2sgZG91YmxlIHJlZ2lzdHJhdGlvbikKICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgUmVhbC10aW1lIHRyYW5zbWlzc2lvbiB3aGVuIHVzZXJzIHVzZSB0aGUgQXBwcywgdmlhIGRlZGljYXRlZCBuZXR3b3JrCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5PcGVyYXRpb24gb2YgdGhlIEFwcHMsIHByb3ZpZGluZyBvdGhlciByZWxhdGVkIHNlcnZpY2VzPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIFVudGlsIHRoZSB3aXRoZHJhd2FsIG9mIHVzZXJzIGZyb20gdGhlIEFwcHMgYW5kIHRlcm1pbmF0aW9uIG9mIHByb3ZpZGluZyB0aGUgQXBwcwogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPkZpcmViYXNlIGJ5IEdvb2dsZSBMTEM8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlVuaXRlZCBTdGF0ZXM8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgVXNlcm5hbWUsIElQIGFkZHJlc3MsIGRldmljZSBpbmZvcm1hdGlvbiwgYXBwIGFjdGl2aXR5LCBjcmFzaCByZXBvcnRzCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIFJlYWwtdGltZSB0cmFuc21pc3Npb24gd2hlbiB1c2VycyB1c2UgdGhlIEFwcHMsIHZpYSBkZWRpY2F0ZWQgbmV0d29yawogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICBBbmFseXRpY3MsIHBlcmZvcm1hbmNlIHRyYWNraW5nLCBjcmFzaCByZXBvcnRpbmcsIGFuZCBhcHAgaW1wcm92ZW1lbnQKICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgVW50aWwgdGhlIHdpdGhkcmF3YWwgb2YgdXNlcnMgZnJvbSB0aGUgQXBwcyBhbmQgdGVybWluYXRpb24gb2YgcHJvdmlkaW5nIHRoZSBBcHBzCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gd2lkZSI+R29vZ2xlIFBsYXkgU2VydmljZXM8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlVuaXRlZCBTdGF0ZXM8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPkRldmljZSBpZGVudGlmaWVycywgYWNjb3VudCBpbmZvcm1hdGlvbjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+UmVhbC10aW1lIHRyYW5zbWlzc2lvbiBkdXJpbmcgQXBwIHVzYWdlPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIEFjY291bnQgYXV0aGVudGljYXRpb24sIGluLWFwcCBwdXJjaGFzZXMsIGFuZCB1c2VyIGFjY2VzcyBtYW5hZ2VtZW50CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIFVudGlsIHRoZSB3aXRoZHJhd2FsIG9mIHVzZXJzIGZyb20gdGhlIEFwcHMgYW5kIHRlcm1pbmF0aW9uIG9mIHByb3ZpZGluZyB0aGUgQXBwcwogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPkFwcGxlIEdhbWUgQ2VudGVyPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5Vbml0ZWQgU3RhdGVzPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5HYW1lIHByb2dyZXNzLCBhY2NvdW50IGlkZW50aWZpZXJzPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5SZWFsLXRpbWUgdHJhbnNtaXNzaW9uIGR1cmluZyBBcHAgdXNhZ2U8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlNvY2lhbCBnYW1pbmcgZmVhdHVyZXMsIGFjaGlldmVtZW50cywgYW5kIGxlYWRlcmJvYXJkIGFjY2VzczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICBVbnRpbCB0aGUgd2l0aGRyYXdhbCBvZiB1c2VycyBmcm9tIHRoZSBBcHBzIGFuZCB0ZXJtaW5hdGlvbiBvZiBwcm92aWRpbmcgdGhlIEFwcHMKICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSB3aWRlIj5HYW1lIEFuYWx5dGljczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+RGVubWFyazwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+VXNlcm5hbWUsIElQIGFkZHJlc3MsIGluLWFwcCBiZWhhdmlvciBkYXRhPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5SZWFsLXRpbWUgdHJhbnNtaXNzaW9uIGR1cmluZyBBcHAgdXNhZ2U8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgVXNlciBlbmdhZ2VtZW50IGFuYWx5c2lzLCBnYW1lIG9wdGltaXphdGlvbiwgYW5kIGV4cGVyaWVuY2UgaW1wcm92ZW1lbnQKICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgVW50aWwgdGhlIHdpdGhkcmF3YWwgb2YgdXNlcnMgZnJvbSB0aGUgQXBwcyBhbmQgdGVybWluYXRpb24gb2YgcHJvdmlkaW5nIHRoZSBBcHBzCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2xpPgoKICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4KICAgICAgICAgICAgPGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj4KICAgICAgICAgICAgICAxMy4gUHJpdmFjeSBzZWN0aW9uIGZvciB1c2VycyBwbGF5aW5nIEZhc2hpb24gRmFibGU6IERyZXNzIFVwIFN0eWxlCiAgICAgICAgICAgIDwvaDQ+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij5JZiB5b3UgcGxheSBGYXNoaW9uIEZhYmxlOiBEcmVzcyBVcCBTdHlsZSwgdGhpcyBzZWN0aW9uIGFwcGxpZXMgdG8geW91LjwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlBlcnNvbmFsIEluZm9ybWF0aW9uIFdlIENvbGxlY3Q8L3A+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBXZSBtYXkgY29sbGVjdCB0aGUgc2FtZSBwZXJzb25hbCBpbmZvcm1hdGlvbiBkZXRhaWxlZCBpbiBTZWN0aW9uIDEsIHdpdGggdGhlIGV4Y2x1c2lvbiBvZiBTZW5zb3J5IERhdGEuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkhvdyB3ZSBjb2xsZWN0IHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb248L3A+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBJbiBhZGRpdGlvbiB0byB0aGUgbWV0aG9kcyBkZXRhaWxlZCBpbiBTZWN0aW9uIDEsIHdlIG1heSBjb2xsZWN0IHBlcnNvbmFsIGRhdGEgYWJvdXQgeW91IGZyb20gdGhpcmQKICAgICAgICAgICAgICBwYXJ0aWVzIGFzIGZvbGxvd3M6CiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+44O7RmlyZWJhc2U8L3A+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPuODu0dvb2dsZSBQbGF5IFNlcnZpY2VzIChBbmRyb2lkKTwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+44O7R2FtZSBDZW50ZXIgKGlPUyk8L3A+CiAgICAgICAgICA8L2xpPgoKICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4KICAgICAgICAgICAgPGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIiBpZD0ic2VjdGlvbjE3Ij4xNC4gQ29udGFjdGluZyBDb2NvbmU8L2g0PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjLXByaXZhY3lfX3Njcm9sbFdyYXAiPgogICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iYy1wcml2YWN5X190YWJsZTJDb2x1bW5zIj4KICAgICAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkiPgogICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucywgaW5xdWlyZXMsIHJlcXVlc3RzLCBjb21tZW50cyBvciBjb21wbGFpbnRzIGNvbmNlcm5pbmcgdGhpcyBQcml2YWN5CiAgICAgICAgICAgICAgICAgICAgICBQb2xpY3kgb3Igb3VyIGluZm9ybWF0aW9uIHByYWN0aWNlcywgcGxlYXNlIGNvbnRhY3QgdXMgYmVsb3cuPHNwYW4KICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiCiAgICAgICAgICAgICAgICAgICAgICAgID5Zb3UgYXJlIHVzaW5nOjwvc3BhbgogICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5Db250YWN0IEluZm9ybWF0aW9uOjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSB3aWRlIj4KICAgICAgICAgICAgICAgICAgICAgIEhlbGxvIFN3ZWV0IERheXM8YnIgLz5IZWxsbyBLaXR0eSBEcmVhbSBWaWxsYWdlIChFbmdsaXNoIHZlcnNpb24pCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIENvY29uZSBPTkUgY29ycG9yYXRpb248YnIgLz48YnIgLz5FbWFpbDo8YnIgLz4oamEpCiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJtYWlsdG86c3VwcG9ydEBzd2VldGRheXMuemVuZGVzay5jb20iCiAgICAgICAgICAgICAgICAgICAgICAgID5zdXBwb3J0QHN3ZWV0ZGF5cy56ZW5kZXNrLmNvbTwvYQogICAgICAgICAgICAgICAgICAgICAgPjxiciAvPihlbikKICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Im1haWx0bzpzdXBwb3J0X2VuQHN3ZWV0ZGF5c2dsLnplbmRlc2suY29tIgogICAgICAgICAgICAgICAgICAgICAgICA+c3VwcG9ydF9lbkBzd2VldGRheXNnbC56ZW5kZXNrLmNvbTwvYQogICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgPGJyIC8+PGJyIC8+QWRkcmVzczogNDBGLCBNaWR0b3duIFRvd2VyLCA5LTctMSBBa2FzYWthLCBNaW5hdG8ta3UsIFRva3lvIDEwNy02MjQwLCBKYXBhbgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPkxpdmx5IElzbGFuZDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICBDb2NvbmUgY29ycG9yYXRpb248YnIgLz48YnIgLz5FbWFpbDoKICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Im1haWx0bzpzdXBwb3J0QGxpdmx5LnplbmRlc2suY29tIj5zdXBwb3J0QGxpdmx5LnplbmRlc2suY29tPC9hCiAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+PGJyIC8+QWRkcmVzczogMy0xLTE4IFdha2FiYXlhc2hpLCBTZXRhZ2F5YS1rdSwgVG9reW8gMTU0LTAwMjMsIEphcGFuCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gd2lkZSI+TGl2bHkgSXNsYW5kIChLb3JlYSk8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgQ29jb25lIGNvcnBvcmF0aW9uPGJyIC8+PGJyIC8+RW1haWw6CiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJtYWlsdG86bGl2bHkta29yLXN1cHBvcnRAY29jb25lLmNvLmpwIgogICAgICAgICAgICAgICAgICAgICAgICA+bGl2bHkta29yLXN1cHBvcnRAY29jb25lLmNvLmpwPC9hCiAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+PGJyIC8+QWRkcmVzczogMy0xLTE4IFdha2FiYXlhc2hpLCBTZXRhZ2F5YS1rdSwgVG9reW8gMTU0LTAwMjMsIEphcGFuCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gd2lkZSI+UG9ja2V0IHR3aW48L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPgogICAgICAgICAgICAgICAgICAgICAgQ29jb25lIGNvcnBvcmF0aW9uPGJyIC8+PGJyIC8+RW1haWw6CiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJtYWlsdG86cG9ja2V0dHdpbi1zdXBwb3J0QGNvY29uZS5jby5qcCIKICAgICAgICAgICAgICAgICAgICAgICAgPnBvY2tldHR3aW4tc3VwcG9ydEBjb2NvbmUuY28uanA8L2EKICAgICAgICAgICAgICAgICAgICAgID48YnIgLz48YnIgLz5BZGRyZXNzOiAzLTEtMTggV2FrYWJheWFzaGksIFNldGFnYXlhLWt1LCBUb2t5byAxNTQtMDAyMywgSmFwYW4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSB3aWRlIj5Qb2NrZXQgbWluaTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICBDb2NvbmUgY29ycG9yYXRpb248YnIgLz48YnIgLz5FbWFpbDoKICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Im1haWx0bzpwb21pX3N1cHBvcnRAY29jb25lLW0uY29tIj5wb21pX3N1cHBvcnRAY29jb25lLW0uY29tPC9hCiAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+PGJyIC8+QWRkcmVzczogMy0xLTE4IFdha2FiYXlhc2hpLCBTZXRhZ2F5YS1rdSwgVG9reW8gMTU0LTAwMjMsIEphcGFuCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gd2lkZSI+QWx0ZXJFZ28gQ2l0eTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+CiAgICAgICAgICAgICAgICAgICAgICBDb2NvbmUgWGVub24gSW5jLjxiciAvPjxiciAvPkVtYWlsOgogICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImMtdGV4dExpbmsgLXJlZCIgaHJlZj0ibWFpbHRvOnN1cHBvcnRAY2VudGVubmlhbC1jaXR5LnplbmRlc2suY29tIgogICAgICAgICAgICAgICAgICAgICAgICA+c3VwcG9ydEBjZW50ZW5uaWFsLWNpdHkuemVuZGVzay5jb208L2EKICAgICAgICAgICAgICAgICAgICAgID48YnIgLz48YnIgLz5BZGRyZXNzOiAxMTUgQnJvYWR3YXkgM3JkIEZsLiBSb29tIzE0NiwgTmV3IFlvcmssIE5ZIDEwMDA2LCBVU0EKICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSB3aWRlIj5QdXJlbmlzdGEgTTogRHJlc3MtdXAgJiBDaGF0PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIENvY29uZSBjb3Jwb3JhdGlvbjxiciAvPjxiciAvPkVtYWlsOgogICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImMtdGV4dExpbmsgLXJlZCIgaHJlZj0ibWFpbHRvOnN1cHBvcnRAcHVyZW5pc3RhbS5jb20iPnN1cHBvcnRAcHVyZW5pc3RhbS5jb208L2EKICAgICAgICAgICAgICAgICAgICAgID48YnIgLz48YnIgLz5BZGRyZXNzOiAzLTEtMiBIaWdhc2hpaGllIEhha2F0YS1rdSwgRnVrdW9rYS1zaGksIEZ1a3Vva2Eta2VuIDgxMi0wMDA3LCBKYXBhbgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPlZJVklCVURTPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIENvY29uZSBjb3Jwb3JhdGlvbjxiciAvPjxiciAvPkVtYWlsOgogICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImMtdGV4dExpbmsgLXJlZCIgaHJlZj0ibWFpbHRvOnN1cHBvcnRAdml2aWJ1ZHMuY29tIj5zdXBwb3J0QHZpdmlidWRzLmNvbTwvYQogICAgICAgICAgICAgICAgICAgICAgPjxiciAvPjxiciAvPkFkZHJlc3M6IDMtMS0xOCBXYWthYmF5YXNoaSwgU2V0YWdheWEta3UsIFRva3lvIDE1NC0wMDIzLCBKYXBhbgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPkZhc2hpb24gRmFibGU6IERyZXNzIFVwIFN0eWxlPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4KICAgICAgICAgICAgICAgICAgICAgIENvY29uZSBFdXJvcGUgT8OcPGJyIC8+PGJyIC8+RW1haWw6CiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJtYWlsdG86c3VwcG9ydF9ldUBjb2NvbmUuY28uanAiPnN1cHBvcnRfZXVAY29jb25lLmNvLmpwPC9hCiAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+PGJyIC8+QWRkcmVzczogTWFha3JpIHRuIDI1LCBLZXNrbGlubmEgbGlubmFvc2EsIFRhbGxpbm4sIEhhcmp1IG1hYWtvbmQsIDEwMTQ1LCBFc3RvbmlhCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPgogICAgICAgICAgICA8aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjE1LiBTdGFuZGFyZHMgQWdhaW5zdCBDaGlsZCBTZXh1YWwgQWJ1c2UgYW5kIEV4cGxvaXRhdGlvbjwvaDQ+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4KICAgICAgICAgICAgICBDb2NvbmUgZG9lcyBub3QgYWxsb3cgdXNlcnMgdG8gY3JlYXRlIG9yIHBvc3QgY29udGVudHMgb3IgZW5nYWdlIGluIGFjdGl2aXRpZXMgdGhhdCBzZXh1YWxseSBleHBsb2l0LAogICAgICAgICAgICAgIGFidXNlIG9yIGVuZGFuZ2VyIGNoaWxkcmVuLiBXZSByZXBvcnQgYWxsIGlkZW50aWZpZWQgaW5zdGFuY2VzIG9mIHNleHVhbCBleHBsb2l0YXRpb24sIGFidXNlIG9yCiAgICAgICAgICAgICAgZW5kYW5nZXJtZW50IG9mIGEgbWlub3IgdG8gdGhlIGFwcHJvcHJpYXRlIHJlZ2lvbmFsIGF1dGhvcml0eS48YnIgLz4KICAgICAgICAgICAgICBDb2NvbmUgYWxzbyBwcm9oaWJpdHMgdXNlcnMgZnJvbSBwb3N0aW5nIG9yIHNoYXJpbmcgYW55IHBvcm5vZ3JhcGhpYyBjb250ZW50IHN1Y2ggYXMgcGhvdG9zLCB2aWRlb3MsCiAgICAgICAgICAgICAgaWxsdXN0cmF0aW9ucywgaW1hZ2VzIGFuZCBjb21wdXRlci1nZW5lcmF0ZWQgaW1hZ2VyeSwgaW5jbHVkaW5nIHRob3NlIHRoYXQgZGVwaWN0IGEgbWlub3IgZW5nYWdpbmcgaW4KICAgICAgICAgICAgICBzZXh1YWxseSBleHBsaWNpdCBjb25kdWN0LjxiciAvPgogICAgICAgICAgICAgIFVzZXJzIGFyZSBwcm9oaWJpdGVkIGZyb20gcG9zdGluZyBjb250ZW50IG9yIGVuZ2FnaW5nIGluIGludGVyYWN0aW9ucyBvciBhY3Rpdml0aWVzIHRoYXQgZGVwaWN0LCBlbmNvdXJhZ2UKICAgICAgICAgICAgICBvciBwcm9tb3RlIHNleHVhbCBhYnVzZSBhbmQgZXhwbG9pdGF0aW9uIG9mIGNoaWxkcmVuLCBpbmNsdWRpbmcgcmVhbCBodW1hbiBjaGlsZHJlbiBhcyB3ZWxsIGFzIG5vbi1yZWFsCiAgICAgICAgICAgICAgZGVwaWN0aW9ucyBvZiBjaGlsZHJlbiBzdWNoIGFzIGF2YXRhcnMsIGNoYXJhY3RlcnMgb3Igb3RoZXIgZm9ybXMgb2YgYXJ0IG9yIEFJLWdlbmVyYXRlZCBjb250ZW50LjxiciAvPgogICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgIEV4YW1wbGVzIG9mIGNoaWxkIHNleHVhbCBhYnVzZSBhbmQgZXhwbG9pdGF0aW9uIHRoYXQgYXJlIHByb2hpYml0ZWQgaW5jbHVkZTo8YnIgLz4KICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICDjg7tJbmFwcHJvcHJpYXRlIGludGVyYWN0aW9uIHRhcmdldGVkIGF0IGEgY2hpbGQgc3VjaCBhcyBncm9waW5nIG9yIGNhcmVzc2luZy48YnIgLz4KICAgICAgICAgICAgICDjg7tDaGlsZCBncm9vbWluZywgc3VjaCBhcyBiZWZyaWVuZGluZyBhIGNoaWxkIG9ubGluZSB0byBmYWNpbGl0YXRlLCBlaXRoZXIgb25saW5lIG9yIG9mZmxpbmUsIHNleHVhbAogICAgICAgICAgICAgIGNvbnRhY3QgYW5kL29yIGV4Y2hhbmdpbmcgc2V4dWFsIGltYWdlcnkgd2l0aCB0aGF0IGNoaWxkLjxiciAvPgogICAgICAgICAgICAgIOODu1NleHVhbGl6YXRpb24gb2YgYSBtaW5vciwgc3VjaCBhcyBpbWFnZXJ5IHRoYXQgZGVwaWN0cywgZW5jb3VyYWdlcyBvciBwcm9tb3RlcyB0aGUgc2V4dWFsIGFidXNlIG9mCiAgICAgICAgICAgICAgY2hpbGRyZW4gb3IgdGhlIHBvcnRyYXlhbCBvZiBjaGlsZHJlbiBpbiBhIG1hbm5lciB0aGF0IGNvdWxkIHJlc3VsdCBpbiB0aGUgc2V4dWFsIGV4cGxvaXRhdGlvbiBvZgogICAgICAgICAgICAgIGNoaWxkcmVuLjxiciAvPgogICAgICAgICAgICAgIOODu1NleHRvcnRpb24sIHN1Y2ggYXMgdGhyZWF0ZW5pbmcgb3IgYmxhY2ttYWlsaW5nIGEgY2hpbGQgYnkgdXNpbmcgcmVhbCBvciBhbGxlZ2VkIGFjY2VzcyB0byBhIGNoaWxk4oCZcwogICAgICAgICAgICAgIGludGltYXRlIGltYWdlcy48YnIgLz4KICAgICAgICAgICAgICDjg7tUcmFmZmlja2luZyBvZiBhIGNoaWxkLCBzdWNoIGFzIGFkdmVydGlzaW5nIG9yIHNvbGljaXRhdGlvbiBvZiBhIGNoaWxkIGZvciBjb21tZXJjaWFsIHNleHVhbAogICAgICAgICAgICAgIGV4cGxvaXRhdGlvbi48YnIgLz4KICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICBVc2VycyBhcmUgYWxzbyBwcm9oaWJpdGVkIGZyb20gcG9zdGluZyBjb250ZW50IG9yIGVuZ2FnaW5nIGluIGludGVyYWN0aW9ucyBvciBhY3Rpdml0aWVzIHRoYXQgZGVwaWN0LAogICAgICAgICAgICAgIGVuY291cmFnZSBvciBwcm9tb3RlIGV4Y2Vzc2l2ZSB2aW9sZW5jZSwgYmxvb2QgYW5kIGdvcmUsIGhhcm1mdWwgYW5kIGRhbmdlcm91cyBhY3Rpdml0aWVzIGFzIHdlbGwgYXMKICAgICAgICAgICAgICBuZWdhdGl2ZSBib2R5IG9yIHNlbGYtaW1hZ2UuPGJyIC8+CiAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgVXNlcnMgc2hvdWxkIHJlcG9ydCBhbnkgaW5hcHByb3ByaWF0ZSBjb250ZW50IHRoZXkgZW5jb3VudGVyIHRocm91Z2gKICAgICAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJtYWlsdG86bWxfY2hpbGRfc2FmZXR5QGNvY29uZS5jby5qcCI+bWxfY2hpbGRfc2FmZXR5QGNvY29uZS5jby5qcDwvYT4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9saT4KICAgICAgICA8L29sPgogICAgICA8L2xpPgogICAgPC9vbD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJjLWFydGljbGVfX2xpbmthcmVhIj4KICAgIDxhIGhyZWY9Ii9lbi8iIGNsYXNzPSJjLWJ1dHRvbi0tdG9uYWwgYy1idXR0b24tLXRvbmFsLS1iYWNrIj4KICAgIDxzcGFuIGNsYXNzPSJjLWJ1dHRvbl9faG9sZSBjLWJ1dHRvbl9faG9sZS0tYmFjayI+CiAgICAgIDxzcGFuIGNsYXNzPSJjLWJ1dHRvbl9faWNvbnMgYy1idXR0b25fX2ljb25zLS1iYWNrIj48L3NwYW4+CiAgICA8L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0iYy1idXR0b25fX2xhYmVsIj5IT01FPC9zcGFuPgogICAgPC9hPgogIDwvZGl2PiAgCjwvZGl2Pn2kDAUAd\/29BTxkaXYgY2xhc3M9ImMtcHJpdmFjeV9fY29udGFpbmVyIj4NCiAgPGRpdiBjbGFzcz0iYy1wcml2YWN5X19kYXRlIj4NCiAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19kYXRlVGV4dCI+TGFzdCBVcGRhdGVkOiAzIC8gMzEgLyAyMDI2PC9wPg0KICA8L2Rpdj4NCiAgPGRpdiBjbGFzcz0iYy1wcml2YWN5X19ibG9jayI+DQogICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlRhYmxlIG9mIENvbnRlbnRzPC9wPg0KICAgIDxvbCBjbGFzcz0iYy1wcml2YWN5X19saXN0Ij4NCiAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19pdGVtIj4NCiAgICAgICAgPGxpPjxhIGhyZWY9IiNpbnRybyI+PHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+SW50cm9kdWN0aW9uPC9hPjwvcD4NCiAgICAgICAgPGEgaHJlZj0iI3BvbGljeSI+PHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+Q2hhbmdlcyB0byBPdXIgUHJpdmFjeSBQb2xpY3k8L2E+PC9wPg0KICAgICAgICA8YSBocmVmPSIjc2VjMSI+IDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPjEuIEluZm9ybWF0aW9uIFdlIENvbGxlY3QgYW5kIEhvdyBXZSBDb2xsZWN0IEl0PC9hPjwvcD4NCiAgICAgICAgPGEgaHJlZj0iI3NlYzIiPjxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPjIuIEhvdyBXZSBVc2UgWW91ciBQZXJzb25hbCBJbmZvcm1hdGlvbjwvYT48L3A+DQogICAgICAgIDxhIGhyZWY9IiNzZWMzIj48cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj4zLiBIb3cgTG9uZyBXZSBLZWVwIFlvdXIgSW5mb3JtYXRpb248L2E+PC9wPg0KICAgICAgICA8YSBocmVmPSIjc2VjNCI+PHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+NC4gSG93IFdlIFNoYXJlIFlvdXIgSW5mb3JtYXRpb248L2E+PC9wPg0KICAgICAgICA8YSBocmVmPSIjc2VjNSI+PHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+NS4gQ2hpbGRyZW7igJlzIFByaXZhY3k8L2E+PC9wPg0KICAgICAgICA8YSBocmVmPSIjc2VjNiI+PHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+Ni4gSG93IFdlIFByb3RlY3QgWW91ciBJbmZvcm1hdGlvbjwvYT48L3A+DQogICAgICAgIDxhIGhyZWY9IiNzZWM3Ij48cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj43LiBIb3cgWW91IE1heSBDaGFuZ2UsIFJlbW92ZSwgb3IgRXhwb3J0IFlvdXIgSW5mb3JtYXRpb248L2E+PC9wPg0KICAgICAgICA8YSBocmVmPSIjc2VjOCI+PHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+OC4gTGlua3MgdG8gVGhpcmQtUGFydHkgV2Vic2l0ZXMgYW5kIFNlcnZpY2VzPC9hPjwvcD4NCiAgICAgICAgPGEgaHJlZj0iI3NlYzkiPjxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPjkuIE5vbi1VLlMuIFVzZXJzPC9hPjwvcD4NCiAgICAgICAgPGEgaHJlZj0iI3NlYzEwIj48cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj4xMC4gUHJpdmFjeSBTZWN0aW9uIGZvciBVc2VycyBmcm9tIHRoZSBVSywgRUVBIGFuZCBTd2l0emVybGFuZDwvYT48L3A+DQogICAgICAgIDxhIGhyZWY9IiNzZWMxMSI+PHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+MTEuIFByaXZhY3kgU2VjdGlvbiBmb3IgVXNlcnMgZnJvbSB0aGUgVS5TLjwvYT48L3A+DQogICAgICAgIDxhIGhyZWY9IiNzZWMxMiI+PHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+MTIuIFByaXZhY3kgU2VjdGlvbiBmb3IgVXNlcnMgZnJvbSB0aGUgUmVwdWJsaWMgb2YgS29yZWE8L2E+PC9wPg0KICAgICAgICA8YSBocmVmPSIjc2VjMTMiPjxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPjEzLiBQcml2YWN5IFNlY3Rpb24gZm9yIFVzZXJzIFBsYXlpbmcgRmFzaGlvbiBGYWJsZTogRHJlc3MgVXAgU3R5bGU8L2E+PC9wPg0KICAgICAgICA8YSBocmVmPSIjc2VjMTQiPjxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPjE0LiBDb250YWN0aW5nIENvY29uZTwvYT48L3A+DQogICAgICAgIDxhIGhyZWY9IiNzZWMxNSI+PHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+MTUuIFN0YW5kYXJkcyBBZ2FpbnN0IENoaWxkIFNleHVhbCBBYnVzZSBhbmQgRXhwbG9pdGF0aW9uPC9hPjwvcD4NCiAgICAgICAgPGEgaHJlZj0iI3NlYzE2Ij48cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj4xNi4gQ2hpbGRyZW7igJlzIFByaXZhY3kgUG9saWN5IGZvciBQZXRLYXJ0PC9hPjwvcD4NCiAgICAgIDwvbGk+DQogICAgPC9vbD4NCiAgPC9kaXY+DQogIDxkaXYgY2xhc3M9ImMtcHJpdmFjeV9fYmxvY2siPg0KICAgIDxvbCBjbGFzcz0iYy1wcml2YWN5X19saXN0Ij4NCiAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19pdGVtIj4NCiAgICAgICAgPHNlY3Rpb24gaWQ9ImludHJvIj48aDIgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRpdGxlIj5JbnRyb2R1Y3Rpb248L2gyPjwvc2VjdGlvbj4NCiAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgIENvY29uZSByZXNwZWN0cyB5b3VyIHByaXZhY3ksIGFuZCB3ZSBhcmUgY29tbWl0dGVkIHRvIHByb3RlY3RpbmcgaXQgdGhyb3VnaCB0aGlzIFByaXZhY3kgUG9saWN5LjxiciAvPg0KICAgICAgICAgIEFzIHVzZWQgaW4gdGhpcyBQcml2YWN5IFBvbGljeSwg4oCcPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkNvY29uZTwvc3Bhbj7igJ0sIOKAnDxzcGFuDQogICAgICAgICAgICBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCINCiAgICAgICAgICAgID53ZTwvc3Bhbg0KICAgICAgICAgID7igJ0sIOKAnDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj51czwvc3Bhbj7igJ0sIG9yIOKAnDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5vdXI8L3NwYW4NCiAgICAgICAgICA+4oCdIHJlZmVyIHRvIENvY29uZSBPTkUgY29ycG9yYXRpb24gYW5kIGl0cyBzdWJzaWRpYXJ5IG9yIGFmZmlsaWF0ZWQgZW50aXR5IHRoYXQgaXMgcGFydCBvZiBDb2NvbmUgT05FDQogICAgICAgICAgY29ycG9yYXRpb24uPGJyIC8+DQogICAgICAgICAgVGhpcyBQcml2YWN5IFBvbGljeSBkZXNjcmliZXMgdGhlIHR5cGVzIG9mIHBlcnNvbmFsIGluZm9ybWF0aW9uIHdlIGNvbGxlY3QgZnJvbSB5b3UsIHRoYXQgd2UgbWF5IHJlY2VpdmUgZnJvbQ0KICAgICAgICAgIHRoaXJkIHBhcnRpZXMgb3IgeW91ciBjb250YWN0cyBvciB0aGF0IHlvdSBtYXkgcHJvdmlkZSB3aGVuIHlvdSB1c2UgQ29jb25l4oCZcyBhcHBsaWNhdGlvbnMgZm9yIG1vYmlsZSBkZXZpY2VzDQogICAgICAgICAgKHRoZSDigJw8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+QXBwczwvc3Bhbj7igJ0pLjxiciAvPg0KICAgICAgICAgIFBsZWFzZSBmYW1pbGlhcml6ZSB5b3Vyc2VsZiB3aXRoIG91ciBwcml2YWN5IHByYWN0aWNlcyBhbmQgY29udGFjdCB1cyBhcyBkZXNjcmliZWQgYmVsb3cgaW4NCiAgICAgICAgICA8YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSIjc2VjdGlvbjE3Ij5TZWN0aW9uIDE0IOKAkyBDb250YWN0aW5nIENvY29uZTwvYT4gaWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucy48YnIgLz4NCiAgICAgICAgICBUaGlzIFByaXZhY3kgUG9saWN5IGFwcGxpZXMgdG8gdGhlIHBlcnNvbmFsIGluZm9ybWF0aW9uIHdlIGNvbGxlY3Q6DQogICAgICAgIDwvcD4NCiAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+44O7VGhyb3VnaCB0aGUgQXBwczsgYW5kPC9wPg0KICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4NCiAgICAgICAgICDjg7tCeSBlbWFpbCwgdGV4dCwgYW5kIG90aGVyIGNvbW11bmljYXRpb25zIGJldHdlZW4geW91IGFuZCB1cyBhbmQvb3IgdGhlIEFwcHMuDQogICAgICAgIDwvcD4NCiAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgIEl0IGRvZXMgbm90IGFwcGx5IHRvIGluZm9ybWF0aW9uIGNvbGxlY3RlZCBieSBhbnkgdGhpcmQgcGFydHkgKGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gb3VyIGFmZmlsaWF0ZXMgYW5kDQogICAgICAgICAgc3Vic2lkaWFyaWVzKSwgaW5jbHVkaW5nIHRocm91Z2ggYW55IGFwcGxpY2F0aW9uIG9yIGNvbnRlbnQgKGluY2x1ZGluZyBhZHZlcnRpc2luZykgdGhhdCBtYXkgbGluayB0byBvciBiZQ0KICAgICAgICAgIGFjY2Vzc2libGUgZnJvbSBvciBvbiB0aGUgQXBwcy48YnIgLz5QbGVhc2UgcmVhZCB0aGlzIFByaXZhY3kgUG9saWN5IGNhcmVmdWxseSB0byB1bmRlcnN0YW5kIG91ciBwb2xpY2llcyBhbmQNCiAgICAgICAgICBwcmFjdGljZXMgcmVnYXJkaW5nIHlvdXIgaW5mb3JtYXRpb24gYW5kIGhvdyB3ZSB3aWxsIGhhbmRsZSB5b3VyIGluZm9ybWF0aW9uLg0KICAgICAgICA8L3A+DQogICAgICA8L2xpPg0KICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW0iPg0KICAgICAgICA8c2VjdGlvbiBpZD0icG9saWN5Ij48aDIgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRpdGxlIj5DaGFuZ2VzIHRvIE91ciBQcml2YWN5IFBvbGljeTwvaDI+PC9zZWN0aW9uPg0KICAgICAgICA8b2wgY2xhc3M9ImMtcHJpdmFjeV9fc3ViTGlzdCI+DQogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICBUaGlzIFByaXZhY3kgUG9saWN5IG1heSBjaGFuZ2UgZnJvbSB0aW1lIHRvIHRpbWUgc28gcGxlYXNlIGNoZWNrIHRoaXMgUHJpdmFjeSBQb2xpY3kgcGVyaW9kaWNhbGx5IGZvcg0KICAgICAgICAgICAgICB1cGRhdGVzLjxiciAvPg0KICAgICAgICAgICAgICBJZiB3ZSBtYWtlIG1hdGVyaWFsIGNoYW5nZXMgdG8gaG93IHdlIHRyZWF0IG91ciB1c2Vyc+KAmSBwZXJzb25hbCBpbmZvcm1hdGlvbiwgd2Ugd2lsbCBub3RpZnkgeW91IHRocm91Z2ggYQ0KICAgICAgICAgICAgICBub3RpY2UgaW4gdGhlIEFwcHMuIFRoZSBkYXRlIHRoaXMgUHJpdmFjeSBQb2xpY3kgd2FzIGxhc3QgdXBkYXRlZCBpcyBpZGVudGlmaWVkIGF0IHRoZSB0b3Agb2YgdGhlIGZpcnN0DQogICAgICAgICAgICAgIHBhZ2Ugb2YgdGhpcyBQcml2YWN5IFBvbGljeS4gVW5sZXNzIG90aGVyd2lzZSBzdGlwdWxhdGVkIHVuZGVyIGFwcGxpY2FibGUgbGF3LCB5b3UgYXJlIHJlc3BvbnNpYmxlIGZvcg0KICAgICAgICAgICAgICBlbnN1cmluZyB5b3UgcGVyaW9kaWNhbGx5IHZpc2l0IHRoaXMgUHJpdmFjeSBQb2xpY3kgdG8gY2hlY2sgZm9yIGFueSBjaGFuZ2VzLg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgIDwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPg0KICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InNlYzEiPjxoNCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+DQogICAgICAgICAgICAgIDEuIEluZm9ybWF0aW9uIFdlIENvbGxlY3QgYW5kIEhvdyBXZSBDb2xsZWN0IEl0PGJyIC8+UGVyc29uYWwgSW5mb3JtYXRpb24gV2UgQ29sbGVjdA0KICAgICAgICAgICAgPC9oND48L3NlY3Rpb24+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgIFdoZW4gd2UgdGFsayBhYm91dCBwZXJzb25hbCBpbmZvcm1hdGlvbiAob3IgcGVyc29uYWwgZGF0YSkgd2UgbWVhbiBhbnkgaW5mb3JtYXRpb24gdGhhdCByZWxhdGVzIHRvIGFuDQogICAgICAgICAgICAgIGlkZW50aWZpZWQgb3IgaWRlbnRpZmlhYmxlIGxpdmluZyBpbmRpdmlkdWFsLiBUaGUgcGVyc29uYWwgaW5mb3JtYXRpb24gd2UgbWF5IGNvbGxlY3QgYW5kIHByb2Nlc3MgYWJvdXQNCiAgICAgICAgICAgICAgeW91IHdpdGhpbiB0aGUgbGFzdCB0d2VsdmUgKDEyKSBtb250aHMgaW5jbHVkZToNCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgIDx1bCBjbGFzcz0iYy1wcml2YWN5X19zdWJMaXN0Ij4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPg0KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPuODu1JlZ2lzdHJhdGlvbiBEYXRhL0lkZW50aWZpZXJzOjwvc3Bhbj4gRW1haWwgYWRkcmVzcw0KICAgICAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4NCiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj7jg7tTZW5zb3J5IGRhdGE6PC9zcGFuPiBQaG90b3MsIHZpZGVvcyBvciByZWNvcmRpbmdzIG9mIGENCiAgICAgICAgICAgICAgICAgIHVzZXLigJlzIGVudmlyb25tZW50DQogICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPg0KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPuODu0FwcHMgUHJvZmlsZSBkYXRhOjwvc3Bhbj4gWW91ciB1c2VybmFtZSwgeW91ciBhdmF0YXIsDQogICAgICAgICAgICAgICAgICBpbnRlcmVzdHMgYW5kIHByZWZlcmVuY2VzLg0KICAgICAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4NCiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj7jg7tUZWNobmljYWwgYW5kIFVzYWdlIERhdGEvTmV0d29ya2luZyBBY3Rpdml0eTo8L3NwYW4+DQogICAgICAgICAgICAgICAgICBpbmNsdWRpbmc6DQogICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPg0KICAgICAgICAgICAgICAgICAg44O7RGV0YWlscyBvZiB5b3VyIHZpc2l0cyB0byBhbmQgYWN0aW9ucyBpbiB0aGUgQXBwcywgaW5jbHVkaW5nIHRyYWZmaWMgZGF0YSwgbG9jYXRpb24gZGF0YSwgbG9ncyBhbmQNCiAgICAgICAgICAgICAgICAgIG90aGVyIGNvbW11bmljYXRpb24gZGF0YSwgdGhlIHJlc291cmNlcyB0aGF0IHlvdSBhY2Nlc3MsIGFuZCB5b3VyIHVzZSBvZiB0aGUgQXBwcy4NCiAgICAgICAgICAgICAgICA8L3A+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+DQogICAgICAgICAgICAgICAgICDjg7tJbmZvcm1hdGlvbiBhYm91dCB5b3VyIGRldmljZSBhbmQgaW50ZXJuZXQgY29ubmVjdGlvbiwgaW5jbHVkaW5nIGFzIGFwcGxpY2FibGUsIHlvdXIgSVAgYWRkcmVzcw0KICAgICAgICAgICAgICAgICAgdGhyb3VnaCB3aGljaCB5b3UgYWNjZXNzIHRoZSBBcHBzLCBvcGVyYXRpbmcgc3lzdGVtLCBicm93c2VyIHR5cGUsIG1vYmlsZSBuZXR3b3JrIGluZm9ybWF0aW9uLA0KICAgICAgICAgICAgICAgICAgbG9jYXRpb24sIHRpbWUgem9uZSwgdGhlIHVuaXF1ZSBtb2JpbGUgZGV2aWNlIElEIG9yIHZpcnR1YWwgdW5pcXVlIGRldmljZSBpZGVudGlmaWVyIGZvciBhbnkgbW9iaWxlDQogICAgICAgICAgICAgICAgICBkZXZpY2UgdXNlZCB0byBhY2Nlc3MgeW91ciBhY2NvdW50Lg0KICAgICAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj4NCiAgICAgICAgICAgICAgICAgIOODu01ldGFkYXRhIGFuZCBvdGhlciBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggZmlsZXMgc3RvcmVkIG9uIHlvdXIgZGV2aWNlLg0KICAgICAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj4NCiAgICAgICAgICAgICAgICAgIOODu0luZm9ybWF0aW9uIGFib3V0IHlvdXIgaW50ZXJuZXQgY29ubmVjdGlvbiwgdGhlIGRldmljZSB5b3UgdXNlIHRvIGFjY2VzcyB0aGUgQXBwcywgYW5kIHJlbGF0ZWQgdXNhZ2UNCiAgICAgICAgICAgICAgICAgIGRldGFpbHMuDQogICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPg0KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPuODu1RyYW5zYWN0aW9uIGRhdGE6PC9zcGFuPiBEZXRhaWxzIG9mIHRyYW5zYWN0aW9ucyB5b3UgY2FycnkNCiAgICAgICAgICAgICAgICAgIG91dCB0aHJvdWdoIHRoZSBBcHBzIHVzaW5nIGluLWdhbWUgY3VycmVuY3kuDQogICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgICAgIFdlIHVzZSB0aGlyZC1wYXJ0eSBwYXltZW50IHByb2Nlc3NvcnMgdG8gcHJvY2VzcyBwYXltZW50cyBtYWRlIHRvIHVzLiBJbiBjb25uZWN0aW9uIHdpdGggdGhlDQogICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nIG9mIHN1Y2ggcGF5bWVudHMsIHdlIGRvIG5vdCByZXRhaW4gYW55IHBlcnNvbmFsIGluZm9ybWF0aW9uIG9yIGFueSBmaW5hbmNpYWwgaW5mb3JtYXRpb24NCiAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgY3JlZGl0IGNhcmQgbnVtYmVycy4gUmF0aGVyLCBhbGwgc3VjaCBpbmZvcm1hdGlvbiBpcyBwcm92aWRlZCBkaXJlY3RseSB0byBvdXIgdGhpcmQtcGFydHkNCiAgICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMgd2hvc2UgdXNlIG9mIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gaXMgZ292ZXJuZWQgYnkgdGhlaXIgcHJpdmFjeSBwb2xpY2llcy4gV2UgaGF2ZSBubw0KICAgICAgICAgICAgICAgICAgY29udHJvbCBvdmVyLCBhbmQgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IsIHRoaXMgdGhpcmQgcGFydHnigJlzIGNvbGxlY3Rpb24sIHVzZSBhbmQgZGlzY2xvc3VyZSBvZiB5b3VyDQogICAgICAgICAgICAgICAgICBwZXJzb25hbCBpbmZvcm1hdGlvbi4NCiAgICAgICAgICAgICAgICA8L3A+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkhvdyB3ZSBjb2xsZWN0IHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb248L3NwYW4+PGJyIC8+DQogICAgICAgICAgICAgICAgICBXZSBtYXkgY29sbGVjdCBhbmQgcmVjZWl2ZSB5b3VyIHBlcnNvbmFsIGRhdGEgdXNpbmcgZGlmZmVyZW50IG1ldGhvZHM6DQogICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj7jg7tQZXJzb25hbCBkYXRhIHlvdSBkaXJlY3RseSBwcm92aWRlIHRvIHVzPC9zcGFuPjxiciAvPg0KICAgICAgICAgICAgICAgICAgWW91IG1heSBnaXZlIHVzIHlvdXIgcGVyc29uYWwgZGF0YSBkaXJlY3RseSwgZm9yIGV4YW1wbGUsIHdoZW4geW91IHJlZ2lzdGVyIHRvIHVzZSBvdXIgQXBwcywgY29udGFjdA0KICAgICAgICAgICAgICAgICAgdXMgd2l0aCBlbnF1aXJpZXMgb3IgZmVlZGJhY2suDQogICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj7jg7tQZXJzb25hbCBkYXRhIHJlY2VpdmVkIGZyb20gdGhpcmQgcGFydGllczwvc3Bhbj48YnIgLz4NCiAgICAgICAgICAgICAgICAgIFdlIG1heSByZWNlaXZlIHBlcnNvbmFsIGRhdGEgYWJvdXQgeW91IGZyb20gdGhpcmQgcGFydGllcy4gU3VjaCB0aGlyZCBwYXJ0aWVzIG1heSBpbmNsdWRlIHRoaXJkDQogICAgICAgICAgICAgICAgICBwYXJ0aWVzIHRoYXQgcHJvdmlkZSB0ZWNobmljYWwgc2VydmljZXMgdG8gdXMgc28gdGhhdCB3ZSBjYW4gcHJvdmlkZSB0aGUgQXBwcy48YnIgLz4NCiAgICAgICAgICAgICAgICAgIFdlIG1heSBjb2xsZWN0IHBlcnNvbmFsIGRhdGEgYWJvdXQgeW91IHdoZW4geW91IGFjY2VzcyBzb21lIG9mIG91ciBBcHBzIHdpdGggdGhpcmQtcGFydHkgcGxhdGZvcm0NCiAgICAgICAgICAgICAgICAgIGFjY291bnRzLCBzdWNoIGFzIGEgZ2FtaW5nIHBsYXRmb3JtIGFjY291bnQuIFdoZW4geW91IGFjY2VzcyB0aGUgQXBwcyBpbiB0aGlzIHdheSwgdGhlIHRoaXJkLXBhcnR5DQogICAgICAgICAgICAgICAgICBwbGF0Zm9ybXMgcHJvdmlkZSB1cyB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHlvdS4gRm9yIGV4YW1wbGUsIGRlcGVuZGluZyBvbiB5b3VyIHVzZSBvZiwgb3IgYWN0aXZpdHkgb24NCiAgICAgICAgICAgICAgICAgIHRoZSB0aGlyZC1wYXJ0eSBwbGF0Zm9ybSwgd2UgcmVjZWl2ZSB5b3VyIHVzZXJuYW1lLCBlbWFpbCBhZGRyZXNzLCBvciBhY2NvdW50IGluZm9ybWF0aW9uIG5lY2Vzc2FyeSB0bw0KICAgICAgICAgICAgICAgICAgcHJvdmlkZSB0aGUgQXBwcy4NCiAgICAgICAgICAgICAgICA8L3A+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPuODu0F1dG9tYXRpYyBEYXRhLUNvbGxlY3Rpb24gVGVjaG5vbG9naWVzPC9zcGFuPjxiciAvPg0KICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgYWNjZXNzIGFuZCB1c2UgdGhlIEFwcHMgd2Ugd2lsbCBjb2xsZWN0IGNlcnRhaW4gdXNhZ2UgZGF0YSBhbmQgdGVjaG5pY2FsIGRhdGEuPGJyIC8+DQogICAgICAgICAgICAgICAgICBUaGUgYXV0b21hdGljIGRhdGEgY29sbGVjdGlvbiB0ZWNobm9sb2dpZXMgd2UgdXNlIHRvIGNvbGxlY3QgdGhpcyBkYXRhIG1heSBpbmNsdWRlOg0KICAgICAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4NCiAgICAgICAgICAgICAgICAgIOODu0Nvb2tpZXMgKG9yIHBpeGVsIHRhZ3MgYW5kIG90aGVyIHNpbWlsYXIgdGVjaG5vbG9naWVzKS4gQSBjb29raWUgaXMgYSBzbWFsbCBmaWxlIHBsYWNlZCBvbiB0aGUgaGFyZA0KICAgICAgICAgICAgICAgICAgZHJpdmUgb2YgeW91ciBjb21wdXRlciBvciBkZXZpY2UuIFlvdSBtYXkgcmVmdXNlIHRvIGFjY2VwdCBicm93c2VyIGNvb2tpZXMgYnkgYWN0aXZhdGluZyB0aGUNCiAgICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlIHNldHRpbmdzIG9uIHlvdXIgYnJvd3Nlci4gSG93ZXZlciwgaWYgeW91IHNlbGVjdCB0aGlzIHNldHRpbmcgeW91IG1heSBiZSB1bmFibGUgdG8gYWNjZXNzDQogICAgICAgICAgICAgICAgICBjZXJ0YWluIHBhcnRzIG9mIHRoZSBBcHBzLiBVbmxlc3MgeW91IGhhdmUgYWRqdXN0ZWQgeW91ciBicm93c2VyIHNldHRpbmcgc28gdGhhdCBpdCB3aWxsIHJlZnVzZQ0KICAgICAgICAgICAgICAgICAgY29va2llcywgb3VyIHN5c3RlbSB3aWxsIGlzc3VlIGNvb2tpZXMgd2hlbiB5b3UgZGlyZWN0IHlvdXIgYnJvd3NlciB0byB0aGUgQXBwcy4NCiAgICAgICAgICAgICAgICA8L3A+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+DQogICAgICAgICAgICAgICAgICDjg7tXZWIgQmVhY29ucy4gT3VyIGVtYWlscyBtYXkgdXNlIHNtYWxsIGVsZWN0cm9uaWMgZmlsZXMga25vd24gYXMgd2ViIGJlYWNvbnMgKGFsc28gcmVmZXJyZWQgdG8gYXMNCiAgICAgICAgICAgICAgICAgIGNsZWFyIGdpZnMsIHBpeGVsIHRhZ3MsIGFuZCBzaW5nbGUtcGl4ZWwgZ2lmcykgdGhhdCBwZXJtaXQgdXMsIGZvciBleGFtcGxlLCB0byBjb3VudCB1c2VycyB3aG8gaGF2ZQ0KICAgICAgICAgICAgICAgICAgdmlzaXRlZCB0aG9zZSBwYWdlcyBvciBvcGVuZWQgYW4gZW1haWwgYW5kIGZvciBvdGhlciByZWxhdGVkIHdlYnNpdGUgc3RhdGlzdGljcyAoZm9yIGV4YW1wbGUsDQogICAgICAgICAgICAgICAgICByZWNvcmRpbmcgdGhlIHBvcHVsYXJpdHkgb2YgY2VydGFpbiB3ZWJzaXRlIGNvbnRlbnQgYW5kIHZlcmlmeWluZyBzeXN0ZW0gYW5kIHNlcnZlciBpbnRlZ3JpdHkpLg0KICAgICAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4NCiAgICAgICAgICAgICAgICAgIOODu1Jlc2V0dGFibGUgRGV2aWNlIElkZW50aWZpZXJzLiBXZSBtYXkgY29sbGVjdCBhIHJlc2V0dGFibGUgZGV2aWNlIGlkZW50aWZpZXIgZnJvbSB5b3VyIGRldmljZS4NCiAgICAgICAgICAgICAgICAgIFJlc2V0dGFibGUgZGV2aWNlIGlkZW50aWZpZXJzIGNhbiBiZSB1c2VkIGxpa2UgY29va2llcyBhbmQgYXJlIGZvdW5kIG9uIG1hbnkgbW9iaWxlIGRldmljZXMgYW5kDQogICAgICAgICAgICAgICAgICB0YWJsZXRzIChmb3IgZXhhbXBsZSwgdGhlIOKAnElkZW50aWZpZXIgZm9yIEFkdmVydGlzZXJz4oCdIG9uIEFwcGxlIGlPUyBkZXZpY2VzIGFuZCB0aGUg4oCcR29vZ2xlDQogICAgICAgICAgICAgICAgICBBZHZlcnRpc2luZyBJROKAnSBvbiBBbmRyb2lkIGRldmljZXMpLiBMaWtlIGNvb2tpZXMsIHJlc2V0dGFibGUgZGV2aWNlIGlkZW50aWZpZXJzIGFyZSB1c2VkIHRvIG1ha2UNCiAgICAgICAgICAgICAgICAgIG9ubGluZSBhZHZlcnRpc2luZyBtb3JlIHJlbGV2YW50LCBhbmQgZm9yIGFuYWx5dGljcyBhbmQgb3B0aW1pemF0aW9uIHB1cnBvc2VzLg0KICAgICAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgICAgICBZb3UgbWF5IGFsc28gY29udHJvbCB0aGUgaW5mb3JtYXRpb24gdGhhdCB3ZSBjb2xsZWN0IHRocm91Z2ggdGhlIHNldHRpbmdzIG9uIHlvdXIgbW9iaWxlIGRldmljZS4gWW91DQogICAgICAgICAgICAgICAgICBtYXkgYWRqdXN0IHRoZSBzZXR0aW5ncyBvZiB5b3VyIG1vYmlsZSBkZXZpY2UgdG8gcHJldmVudCB0aGUgQXBwcyBmcm9tIG9idGFpbmluZyBsb2NhdGlvbiBpbmZvcm1hdGlvbi4NCiAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHBsZWFzZSBub3RlIHRoYXQgdGhlIEFwcHMgbWF5IHJlbHkgb24gY29va2llcyBhbmQgbG9jYXRpb24gaW5mb3JtYXRpb24gdG8gZnVuY3Rpb24gcHJvcGVybHkNCiAgICAgICAgICAgICAgICAgIGFuZCBzb21lIHBhcnRzIG9mIHRoZSBBcHBzIG1heSBub3QgYmUgYXZhaWxhYmxlIGlmIHlvdSBkaXNhYmxlIGNvb2tpZXMuDQogICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj7jg7tHb29nbGUgQW5hbHl0aWNzPC9zcGFuPjxiciAvPg0KICAgICAgICAgICAgICAgICAgR29vZ2xlIEFuYWx5dGljcyBpcyBhIHdlYiBhbmFseXRpY3Mgc2VydmljZSBvZmZlcmVkIGJ5IEdvb2dsZS4gR29vZ2xlIHVzZXMgdGhlIGRhdGEgY29sbGVjdGVkIHRvIHRyYWNrDQogICAgICAgICAgICAgICAgICBhbmQgbW9uaXRvciB0aGUgdXNlIG9mIG91ciB3ZWJzaXRlcy4gR29vZ2xlIEFuYWx5dGljcyBkb2VzIG5vdCBpZGVudGlmeSBpbmRpdmlkdWFsIHVzZXJzIG9yIGFzc29jaWF0ZQ0KICAgICAgICAgICAgICAgICAgeW91ciBJUCBhZGRyZXNzIHdpdGggb3RoZXIgZGF0YSBoZWxkIGJ5IEdvb2dsZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHByaXZhY3kgcHJhY3RpY2Ugb2YNCiAgICAgICAgICAgICAgICAgIEdvb2dsZSwgcGxlYXNlIHZpc2l0IHRoZSBHb29nbGUgUHJpdmFjeSBUZXJtcyB3ZWIgcGFnZTo8YnIgLz4NCiAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Imh0dHBzOi8vcG9saWNpZXMuZ29vZ2xlLmNvbS9wcml2YWN5P2hsPWVuIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciI+aHR0cHM6Ly9wb2xpY2llcy5nb29nbGUuY29tL3ByaXZhY3k\/aGw9ZW48L2E+DQogICAgICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICA8L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4NCiAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzZWMyIj48aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjIuIEhvdyBXZSBVc2UgWW91ciBQZXJzb25hbCBJbmZvcm1hdGlvbjwvaDQ+PC9zZWN0aW9uPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICBXZSB1c2UgcGVyc29uYWwgaW5mb3JtYXRpb24gdGhhdCB3ZSBjb2xsZWN0IGFib3V0IHlvdSBvciB0aGF0IHlvdSBwcm92aWRlIHRvIHVzIGZvciB0aGUgcHVycG9zZXMgc2V0IG91dA0KICAgICAgICAgICAgICBpbiB0aGlzIHNlY3Rpb24uIElmIHdlIHdpc2ggdG8gbWFrZSBhbnkgY2hhbmdlcyB0byB0aGVzZSBwdXJwb3Nlcywgb3IgaWYgd2Ugd2lzaCB0byB1c2UgeW91ciBwZXJzb25hbCBkYXRhDQogICAgICAgICAgICAgIGZvciBhbnkgcHVycG9zZSB0aGF0IGlzIG5vdCBsaXN0ZWQgaW4gdGhpcyBzZWN0aW9uLCB3ZSB3aWxsIG5vdGlmeSB5b3UgdXNpbmcgdGhlIGNvbnRhY3QgZGV0YWlscyB3ZSBob2xkDQogICAgICAgICAgICAgIGZvciB5b3UuDQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgICA8YnIgLz4NCiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+UEFSVCBBOiBQUk9WSVNJT04gT0YgVEhFIEFQUFM8YnIgLz5QdXJwb3NlOiBUbyBwcm92aWRlIG91ciBBcHBzPC9oNT4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImMtcHJpdmFjeV9fc2Nyb2xsV3JhcCI+DQogICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iYy1wcml2YWN5X190YWJsZTNDb2x1bW5zIj4NCiAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5EZXNjcmlwdGlvbjwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90aD4NCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Q2F0ZWdvcmllcyBvZiBkYXRhPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5MZWdhbCBiYXNlczwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90aD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5Qcm92aXNpb24gb2Ygb3VyIEFwcHM6PC9zcGFuPiBXaGVuIHlvdSB1c2Ugb3VyIEFwcHMsIHdlDQogICAgICAgICAgICAgICAgICAgICAgcHJvY2VzcyB5b3VyIHBlcnNvbmFsIGRhdGEgc28gdGhhdCB3ZSBjYW4gcHJvdmlkZSBvdXIgQXBwcyB0byB5b3UsIGluY2x1ZGluZyB0byBlbnN1cmUgdGhhdCBvdXINCiAgICAgICAgICAgICAgICAgICAgICBBcHBzIGFyZSB3b3JraW5nIHByb3Blcmx5LCB0byBzaG93IHlvdSB0aGUgY29ycmVjdCBub3RpY2VzIGFuZCBpbmZvcm1hdGlvbiwgYW5kIHRvIGVuc3VyZSB0aGF0IG91cg0KICAgICAgICAgICAgICAgICAgICAgIEFwcHMgYXJlIGtlcHQgc2VjdXJlLiBUaGlzIGRhdGEgaXMgc29tZXRpbWVzIGF1dG9tYXRpY2FsbHkgY29sbGVjdGVkIGFuZCB0cmFuc21pdHRlZCB0byB1cy48YnIgLz48YnIgLz5XaGVuDQogICAgICAgICAgICAgICAgICAgICAgeW91IHVzZSBvdXIgQXBwcywgd2UgbWF5IGFsc28gYXNrIGZvciB5b3VyIHBlcm1pc3Npb24gdG8gc2VuZCB5b3UgcHVzaCBub3RpZmljYXRpb25zLiBJZiB5b3UgYWxsb3cNCiAgICAgICAgICAgICAgICAgICAgICB0aGlzIGZlYXR1cmUsIHdlIG1heSBzZW5kIHlvdSBwdXNoIG5vdGlmaWNhdGlvbnMgdGhyb3VnaCBvdXIgQXBwcywgZm9yIGV4YW1wbGUsIHJlbWluZGVycywgYWxlcnRzLA0KICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZXMgYW5kIG90aGVyIGluZm9ybWF0aW9uLiBZb3UgY2FuIGNvbmZpZ3VyZSBhbmQgdHVybiBvZmYgcHVzaCBub3RpZmljYXRpb25zIHZpYSB5b3VyIGRldmljZQ0KICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzIGF0IGFueSB0aW1lLjxiciAvPjxiciAvPk91ciBBcHBzIG1heSBhbHNvIHNlbmQgdXMgKG9yIG91ciBJVCBzdXBwbGllcnMpIGFuIGVycm9yIG1lc3NhZ2UNCiAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgZXZlbnQgb2YgYSBjcmFzaCBvciBvdGhlciBlcnJvciAoZS5nLiBhZnRlciB0aGUgQXBwcyBoYXZlIHVuZXhwZWN0ZWRseSBxdWl0IGJlY2F1c2Ugb2YgYQ0KICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0gZXJyb3Igb3IgaGFzIHN0b3BwZWQgcmVzcG9uZGluZyB0byB5b3VyIGlucHV0KS4gVGhlIGVycm9yIG1lc3NhZ2UgY29udGFpbnMgVGVjaG5pY2FsIERhdGENCiAgICAgICAgICAgICAgICAgICAgICBhbmQgaW5mb3JtYXRpb24gYWJvdXQgd2hpY2ggcGFydCBvZiBvdXIgQXBw4oCZcyBzb2Z0d2FyZSBjb2RlIGhhcyBjYXVzZWQgdGhlIGVycm9yLiBUaGlzIGluZm9ybWF0aW9uDQogICAgICAgICAgICAgICAgICAgICAgaGVscHMgdXMgdW5kZXJzdGFuZCB0aGUgY2F1c2Ugb2YgdGhlIGVycm9yIHNvIHRoYXQgd2UgY2FuIGRldmVsb3AgYSBmaXggdG8gcHJldmVudCB0aGF0IGVycm9yIGZyb20NCiAgICAgICAgICAgICAgICAgICAgICByZW9jY3VycmluZyBhbmQgdGhlcmVmb3JlIGltcHJvdmUgdGhlIEFwcHMgZm9yIGFsbCB1c2Vycy4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+VGVjaG5pY2FsIGFuZCBVc2FnZSBEYXRhL05ldHdvcmtpbmcgQWN0aXZpdHk8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBuZWNlc3NhcnkgZm9yIHVzIHRvIHVzZSB5b3VyIHBlcnNvbmFsIGRhdGEgdG8gcGVyZm9ybSBvdXIgb2JsaWdhdGlvbnMgaW4gYWNjb3JkYW5jZSB3aXRoIGFueQ0KICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0IHRoYXQgd2UgbWF5IGhhdmUgd2l0aCB5b3UsIG9yIGl0IGlzIGluIG91ciBsZWdpdGltYXRlIGludGVyZXN0IHRvIHVzZSBwZXJzb25hbCBkYXRhIGluDQogICAgICAgICAgICAgICAgICAgICAgc3VjaCBhIHdheSB0byBlbnN1cmUgdGhhdCB3ZSBwcm92aWRlIGFjY2VzcyB0byBvdXIgQXBwcyBpbiBhIHNlY3VyZSBhbmQgZWZmZWN0aXZlIHdheS48YnIgLz48YnIgLz5PdXINCiAgICAgICAgICAgICAgICAgICAgICB1c2Ugb2YgcHVzaCBub3RpZmljYXRpb25zIHdpbGwgYmUgc3ViamVjdCB0byB0aGUgcGVybWlzc2lvbnMgdGhhdCB5b3UgcHJvdmlkZSBhbmQgeW91ciBzeXN0ZW0NCiAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlM0NvbHVtbnMiPg0KICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkRlc2NyaXB0aW9uPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5DYXRlZ29yaWVzIG9mIGRhdGE8L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkxlZ2FsIGJhc2VzPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiDQogICAgICAgICAgICAgICAgICAgICAgICA+VG8gbWFuYWdlIHlvdXIgYWNjb3VudCByZWdpc3RyYXRpb24gYW5kIGFjY2VzcyB0byB0aGUgQXBwczo8L3NwYW4NCiAgICAgICAgICAgICAgICAgICAgICA+DQogICAgICAgICAgICAgICAgICAgICAgWW91IHdpbGwgYmUgcmVxdWlyZWQgdG8gcmVnaXN0ZXIgYW4gYWNjb3VudCB3aXRoIHVzIGluIG9yZGVyIHRvIGdhaW4gYWNjZXNzIHRvIHRoZSBBcHBzLjxiciAvPjxiciAvPlRvDQogICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgZm9yIGFuIGFjY291bnQsIHlvdSB3aWxsIG5lZWQgdG8gcHJvdmlkZSBhbGwgcmVxdWlyZWQgcGVyc29uYWwgZGF0YS4gV2Ugd2lsbCB1c2UgdGhpcw0KICAgICAgICAgICAgICAgICAgICAgIGRhdGEgdG8gcHJvY2VzcyB5b3VyIHJlZ2lzdHJhdGlvbiBhbmQgdG8gaWRlbnRpZnkgeW91IHdoZW4geW91IGxvZyBpbiB0byB5b3VyIGFjY291bnQgYW5kIGFjY2Vzcw0KICAgICAgICAgICAgICAgICAgICAgIHRoZSBBcHBzLg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5SZWdpc3RyYXRpb24gRGF0YS9JZGVudGlmaWVycyBBcHBzIFByb2ZpbGUgRGF0YTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIG5lY2Vzc2FyeSBmb3IgdXMgdG8gdXNlIHlvdXIgcGVyc29uYWwgZGF0YSB0byBwZXJmb3JtIG91ciBvYmxpZ2F0aW9ucyBpbiBhY2NvcmRhbmNlIHdpdGggYW55DQogICAgICAgICAgICAgICAgICAgICAgY29udHJhY3QgdGhhdCB3ZSBtYXkgaGF2ZSB3aXRoIHlvdSwgb3IgaXQgaXMgaW4gb3VyIGxlZ2l0aW1hdGUgaW50ZXJlc3QgdG8gdXNlIHBlcnNvbmFsIGRhdGEgaW4NCiAgICAgICAgICAgICAgICAgICAgICBzdWNoIGEgd2F5IHRvIGVuc3VyZSB0aGF0IHdlIHByb3ZpZGUgYWNjZXNzIHRvIG91ciBBcHBzIGluIGEgc2VjdXJlIGFuZCBlZmZlY3RpdmUgd2F5Lg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGUzQ29sdW1ucyI+DQogICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5Ij4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+RGVzY3JpcHRpb248L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkNhdGVnb3JpZXMgb2YgZGF0YTwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90aD4NCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+TGVnYWwgYmFzZXM8L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+VG8gbWFuYWdlIHlvdXIgQXBwIGFjY291bnQgcHJvZmlsZTo8L3NwYW4+SWYgeW91IGFyZSBhDQogICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZCB1c2VyIG9mIHRoZSBBcHBzIHlvdSBjYW4gdm9sdW50YXJpbHkgc3VibWl0IGFuZCB3ZSB3aWxsIGNvbGxlY3QgQXBwcyBQcm9maWxlIERhdGEgYXMNCiAgICAgICAgICAgICAgICAgICAgICBwYXJ0IG9mIHlvdXIgQXBwIHByb2ZpbGUuPGJyIC8+V2Ugd2lsbCBhbHNvIHVzZSB5b3VyIHBlcnNvbmFsIGRhdGEgdG8gc3RvcmUgaW5mb3JtYXRpb24gYWJvdXQgeW91DQogICAgICAgICAgICAgICAgICAgICAgYW5kIHlvdXIgcHJlZmVyZW5jZXMsIGFsbG93aW5nIHVzIHRvIGN1c3RvbWl6ZSB0aGUgQXBwcyBhY2NvcmRpbmcgdG8geW91ciBpbmRpdmlkdWFsIGludGVyZXN0cyBhbmQNCiAgICAgICAgICAgICAgICAgICAgICByZWNvZ25pemUgeW91IHdoZW4geW91IHJldHVybiB0byB0aGUgQXBwcy4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+VGVjaG5pY2FsIGFuZCBVc2FnZSBEYXRhL05ldHdvcmtpbmcgQWN0aXZpdHkgQXBwcyBQcm9maWxlIERhdGE8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBBbnkgQXBwcyBQcm9maWxlIERhdGEgdGhhdCB5b3Ugc3VibWl0IGlzIHZvbHVudGFyeSwgYWx0aG91Z2ggeW91IGFyZSByZXF1aXJlZCB0byBzdXBwbHkgc29tZSBBcHBzDQogICAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSBEYXRhIGFzIGEgcGFydCBvZiBpbnRlcmFjdGluZyB3aXRoIGFuZCB1c2luZyB0aGUgQXBwcy4gSXQgaXMgaW4gb3VyIGxlZ2l0aW1hdGUgaW50ZXJlc3QgdG8NCiAgICAgICAgICAgICAgICAgICAgICB1c2UgeW91ciBBcHBzIFByb2ZpbGUgRGF0YSwgc28gdGhhdCB3ZSBjYW4gcHJvdmlkZSBvdXIgQXBwcyBlZmZlY3RpdmVseS4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICA8aDUgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlB1cnBvc2U6IEN1c3RvbWVyIGZlZWRiYWNrL2VucXVpcmllczwvaDU+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjLXByaXZhY3lfX3Njcm9sbFdyYXAiPg0KICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGUzQ29sdW1ucyI+DQogICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5Ij4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+RGVzY3JpcHRpb248L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkNhdGVnb3JpZXMgb2YgZGF0YTwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90aD4NCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+TGVnYWwgYmFzZXM8L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCINCiAgICAgICAgICAgICAgICAgICAgICAgID5JZiB5b3UgaGF2ZSBhIGdlbmVyYWwgcXVlc3Rpb24gb3IgbmVlZCBoZWxwIHdpdGggYW55IGlzc3VlIGNvbmNlcm5pbmcgb3VyIEFwcHM6PC9zcGFuDQogICAgICAgICAgICAgICAgICAgICAgPg0KICAgICAgICAgICAgICAgICAgICAgIFRoZXJlIGFyZSB2YXJpb3VzIHdheXMgaW4gd2hpY2ggeW91IGFyZSBhYmxlIHRvIGNvbnRhY3QgdXMgd2l0aCBnZW5lcmFsIGlucXVpcmllcyBhbmQgdG8gcHJvdmlkZQ0KICAgICAgICAgICAgICAgICAgICAgIGZlZWRiYWNrLCBpbmNsdWRpbmcgdXNpbmcgdGhlIGRldGFpbHMgc2V0IG91dCBpbiB0aGUg4oCcQ29udGFjdGluZyBDb2NvbmXigJ0gU2VjdGlvbiAxNCwgdGhyb3VnaCBhbnkNCiAgICAgICAgICAgICAgICAgICAgICBvdGhlciDigJhjb250YWN0IHVz4oCZIG9yIHNpbWlsYXIgZmVhdHVyZSB0aGF0IHdlIG1ha2UgYXZhaWxhYmxlIG9uIG91ciBBcHBzLjxiciAvPjxiciAvPldoZW4geW91IG1ha2UNCiAgICAgICAgICAgICAgICAgICAgICBhbiBlbnF1aXJ5IG9yIHByb3ZpZGUgZmVlZGJhY2ssIHdlIHdpbGwgY29sbGVjdCBhbmQgcHJvY2VzcyB5b3VyIHBlcnNvbmFsIGRhdGEgaW5jbHVkaW5nIGFueQ0KICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbmFsIGRhdGEgeW91IHZvbHVudGVlciwgdGhhdCBpcyByZWxldmFudCB0byB5b3VyIGVucXVpcnkgb3IgZmVlZGJhY2suPGJyIC8+PGJyIC8+SWYgeW91IGhhdmUNCiAgICAgICAgICAgICAgICAgICAgICBhIHRlY2huaWNhbCBpc3N1ZSBjb25jZXJuaW5nIG91ciBBcHBzLCB3ZSBtYXkgYWxzbyBwcm9jZXNzIFRlY2huaWNhbCBhbmQgVXNhZ2UgRGF0YS9OZXR3b3JraW5nDQogICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHkgdG8gaGVscCB1cyBkaWFnbm9zZSBhbmQgZml4IHRoZSB0ZWNobmljYWwgaXNzdWVzIHlvdSBhcmUgZXhwZXJpZW5jaW5nLiA8YnIgLz48YnIgLz5XZQ0KICAgICAgICAgICAgICAgICAgICAgIHdpbGwgdXNlIHRoaXMgaW5mb3JtYXRpb24gc28gdGhhdCB3ZSBjYW4gZWZmZWN0aXZlbHkgbWFuYWdlIGFuZCByZXNwb25kIHRvIHlvdXIgZW5xdWlyeSBvcg0KICAgICAgICAgICAgICAgICAgICAgIGZlZWRiYWNrLg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RyYXRpb24gRGF0YS9JZGVudGlmaWVyczxiciAvPjxiciAvPlByb2ZpbGUgRGF0YTxiciAvPjxiciAvPlRlY2huaWNhbCBhbmQgVXNhZ2UNCiAgICAgICAgICAgICAgICAgICAgICBEYXRhL05ldHdvcmtpbmcgQWN0aXZpdHk8YnIgLz48YnIgLz5QZXJzb25hbCBkYXRhIHRoYXQgaXMgdm9sdW50ZWVyZWQgYXMgcGFydCBvZiBmZWVkYmFjaw0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBpbiBvdXIgbGVnaXRpbWF0ZSBpbnRlcmVzdCB0byB1c2UgeW91ciBwZXJzb25hbCBkYXRhIGluIHRoZSB3YXlzIGRlc2NyaWJlZCBpbiB0aGlzIHNlY3Rpb24NCiAgICAgICAgICAgICAgICAgICAgICB0byBlbnN1cmUgdGhhdCB3ZSBhcmUgYWJsZSB0byBoZWxwIHlvdSB3aXRoIHlvdXIgZW5xdWlyeSBhbmQgcHJvdmlkZSBhIGdvb2Qgc3RhbmRhcmQgb2Ygc2VydmljZS4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICA8aDUgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlBBUlQgQjogQURWRVJUSVNJTkcvTUFSS0VUSU5HPC9oNT4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImMtcHJpdmFjeV9fc2Nyb2xsV3JhcCI+DQogICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iYy1wcml2YWN5X190YWJsZTNDb2x1bW5zIj4NCiAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5EZXNjcmlwdGlvbjwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90aD4NCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Q2F0ZWdvcmllcyBvZiBkYXRhPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5MZWdhbCBiYXNlczwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90aD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5PbmxpbmUgcGVyc29uYWxpc2VkIG1hcmtldGluZzo8L3NwYW4+IFdlIGFuZCBvdXINCiAgICAgICAgICAgICAgICAgICAgICB0aGlyZC1wYXJ0eSBwYXJ0bmVycyBtYXkgdXNlIHlvdXIgcGVyc29uYWwgZGF0YSBpbmNsdWRpbmcgZGF0YSB0aGF0IGlzIGNvbGxlY3RlZCB0aHJvdWdoIHlvdXINCiAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbnMgd2l0aCB0aGlyZC1wYXJ0eSB3ZWJzaXRlcyBhbmQgc2VydmljZXMgKGluY2x1ZGluZyBzb2NpYWwgbWVkaWEgYW5kIG90aGVyIHBsYXRmb3JtcykNCiAgICAgICAgICAgICAgICAgICAgICB0byBwcm92aWRlIHlvdSB3aXRoLCBhbmQgYW5hbHlzZSB0aGUgZWZmZWN0aXZlbmVzcyBvZiwgcGVyc29uYWxpc2VkIGFkcyB3aGVuIHlvdSB2aXNpdCBvdGhlcg0KICAgICAgICAgICAgICAgICAgICAgIHdlYnNpdGVzIGFuZC9vciB1c2Ugb3RoZXIgc2VydmljZXMuPGJyIC8+DQogICAgICAgICAgICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICAgICAgICAgICAgQnkg4oCccGVyc29uYWxpc2VkIGFkc+KAnSwgd2UgbWVhbiBhZHZlcnRpc2VtZW50cyBmb3IgdGhlIEFwcHMgd2hpY2ggd2Ugb3Igb3VyIHBhcnRuZXJzIG90aGVyd2lzZQ0KICAgICAgICAgICAgICAgICAgICAgIHRoaW5rIHlvdSBtaWdodCBiZSBpbnRlcmVzdGVkIGluIGJhc2VkIG9uIHlvdXIgYnJvd3NpbmcgaGFiaXRzLiBOb3RlLCBvdXIgdGhpcmQtcGFydHkgcGFydG5lcnMgbWF5DQogICAgICAgICAgICAgICAgICAgICAgYWxzbyB1c2UgdGhlIGRhdGEgdGhhdCBpcyBjb2xsZWN0ZWQgdG8gc2hvdyBwZXJzb25hbGlzZWQgYWRzIGZvciBwcm9kdWN0cyBhbmQgc2VydmljZXMgb2ZmZXJlZCBieQ0KICAgICAgICAgICAgICAgICAgICAgIHRoaXJkIHBhcnRpZXMuPGJyIC8+DQogICAgICAgICAgICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICAgICAgICAgICAgV2UgYWxzbyBtYXkgdXNlIHRoZXNlIHRlY2hub2xvZ2llcyB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IHlvdXIgb25saW5lIGFjdGl2aXRpZXMNCiAgICAgICAgICAgICAgICAgICAgICAoYmVoYXZpb3VyYWwgdHJhY2tpbmcpLiBDb250YWN0IHVzIGJ5IGVtYWlsIGF0IHRoZSBlbWFpbCBhZGRyZXNzIHByb3ZpZGVkIGluIHRoZSDigJxDb250YWN0aW5nDQogICAgICAgICAgICAgICAgICAgICAgQ29jb25l4oCdIFNlY3Rpb24gMTQgYmVsb3cgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB5b3UgY2FuIG9wdCBvdXQgb2YgYmVoYXZpb3VyYWwgdHJhY2tpbmcgb24gdGhlDQogICAgICAgICAgICAgICAgICAgICAgQXBwcyBhbmQgaG93IHdlIHJlc3BvbmQgdG8gd2ViIGJyb3dzZXIgc2lnbmFscyBhbmQgb3RoZXIgbWVjaGFuaXNtcyB0aGF0IGVuYWJsZSBjb25zdW1lcnMgdG8NCiAgICAgICAgICAgICAgICAgICAgICBleGVyY2lzZSBjaG9pY2UgYWJvdXQgYmVoYXZpb3VyYWwgdHJhY2tpbmcuDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlRlY2huaWNhbCBhbmQgVXNhZ2UgRGF0YS9OZXR3b3JraW5nIEFjdGl2aXR5PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgV2hlcmUgeW91ciBkYXRhIGlzIGNvbGxlY3RlZCB0aHJvdWdoIHRoZSB1c2Ugb2Ygbm9uLWVzc2VudGlhbCBjb29raWVzLCB3ZSBhbmQgb3VyIHRoaXJkLXBhcnR5DQogICAgICAgICAgICAgICAgICAgICAgcGFydG5lcnMgZ2VuZXJhbGx5IHJlbHkgb24gY29uc2VudCB0byBjb2xsZWN0IHlvdXIgcGVyc29uYWwgZGF0YSBhbmQgZm9yIHRoZSBzdWJzZXF1ZW50IHByb2Nlc3NpbmcNCiAgICAgICAgICAgICAgICAgICAgICBvZiBpdCBpbiB0aGlzIG1hbm5lciBvciBpdCBpcyBvdGhlcndpc2UgaW4gb3VyIGxlZ2l0aW1hdGUgaW50ZXJlc3RzIHRvIHByb21vdGUgb3VyIEFwcHMgdG8geW91LjxiciAvPg0KICAgICAgICAgICAgICAgICAgICAgIE91ciB0aGlyZC1wYXJ0eSBwYXJ0bmVycyBtYXkgcmVseSBvbiBhIGRpZmZlcmVudCBsYXdmdWwgYmFzaXMgaW4gcmVzcGVjdCBvZiB0aGVpciB1c2Ugb2YgeW91cg0KICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbmFsIGRhdGEuDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iYy1wcml2YWN5X190YWJsZTNDb2x1bW5zIj4NCiAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5EZXNjcmlwdGlvbjwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90aD4NCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Q2F0ZWdvcmllcyBvZiBkYXRhPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5MZWdhbCBiYXNlczwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90aD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5Ib3N0aW5nIGFuZCBtYW5hZ2luZyBldmVudHM6PC9zcGFuPiBGcm9tIHRpbWUgdG8gdGltZSwgd2UNCiAgICAgICAgICAgICAgICAgICAgICBtYXkgb3JnYW5pc2UgYW5kIGhvc3QgZXZlbnRzIGZvciB0aGUgcHVycG9zZSBvZiBwcm9tb3Rpbmcgb3VyIGJ1c2luZXNzIG9yIGJyaW5naW5nIG91ciBBcHAgdXNlcnMNCiAgICAgICAgICAgICAgICAgICAgICB0b2dldGhlci4gV2UgbWF5IHByb2Nlc3MgeW91ciBwZXJzb25hbCBkYXRhIHRvIGNvbW11bmljYXRlIHdpdGggeW91IGFib3V0IHN1Y2ggZXZlbnRzIHdoZXJlIHlvdQ0KICAgICAgICAgICAgICAgICAgICAgIGhhdmUgc3BlY2lmaWNhbGx5IHJlcXVlc3RlZCBpbmZvcm1hdGlvbiBhYm91dCBzdWNoIGV2ZW50cyBvciB3aGVyZSB3ZSBoYXZlIGFub3RoZXIgbGF3ZnVsIGJhc2lzDQogICAgICAgICAgICAgICAgICAgICAgZm9yIHNlbmRpbmcgdGhhdCBpbmZvcm1hdGlvbiB0byB5b3UuPGJyIC8+PGJyIC8+SWYgeW91IGF0dGVuZCBvbmUgb2Ygb3VyIGV2ZW50cywgd2UgbWF5IHVzZSB5b3VyDQogICAgICAgICAgICAgICAgICAgICAgcGVyc29uYWwgZGF0YSB0byByZWNvcmQgeW91ciBhdHRlbmRhbmNlIGF0IHRoZSBldmVudCBhbmQgZm9yIHJlbGF0ZWQgcmVjb3JkLWtlZXBpbmcgcHVycG9zZXMgYW5kLA0KICAgICAgICAgICAgICAgICAgICAgIGlmIHJlbGV2YW50LCB3ZSBtYXkgY29sbGVjdCBhbmQgcHJvY2VzcyBhbnkgZGlldGFyeSByZXF1aXJlbWVudHMgeW91IG1heSBoYXZlLiBZb3UgbWF5IGFsc28NCiAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlIGluIHBob3RvZ3JhcGhzIHRha2VuIGF0IG91ciBldmVudHMgYW5kIHN1Y2ggcGhvdG9ncmFwaHMgbWF5IGFwcGVhciBpbiBwdWJsaWNhdGlvbnMgdGhhdCB3ZQ0KICAgICAgICAgICAgICAgICAgICAgIG1ha2UgYXZhaWxhYmxlLg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RyYXRpb24gRGF0YS9JZGVudGlmaWVyczxiciAvPjxiciAvPlByb2ZpbGUgRGF0YTxiciAvPjxiciAvPkFwcHMgUHJvZmlsZSBEYXRhPGJyIC8+PGJyIC8+SW1hZ2UNCiAgICAgICAgICAgICAgICAgICAgICBhbmQgcGVyc29uYWwgZGF0YSBjb250YWluZWQgaW4gYW55IGZlZWRiYWNrDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIG5lY2Vzc2FyeSBmb3IgdXMgdG8gdXNlIHlvdXIgcGVyc29uYWwgZGF0YSBpbiB0aGlzIHdheSB0byBwZXJmb3JtIG91ciBvYmxpZ2F0aW9ucyBpbg0KICAgICAgICAgICAgICAgICAgICAgIGFjY29yZGFuY2Ugd2l0aCBhbnkgY29udHJhY3QgdGhhdCB3ZSBtYXkgaGF2ZSB3aXRoIHlvdSB3aGVyZSB5b3UgaGF2ZSBzaWduZWQgdXAgdG8gYXR0ZW5kIGFuDQogICAgICAgICAgICAgICAgICAgICAgZXZlbnQsIG9yIGl0IGlzIGluIG91ciBsZWdpdGltYXRlIGludGVyZXN0IG9yIGEgdGhpcmQgcGFydHnigJlzIGxlZ2l0aW1hdGUgaW50ZXJlc3QgdG8gdXNlIHBlcnNvbmFsDQogICAgICAgICAgICAgICAgICAgICAgZGF0YSBpbiBzdWNoIGEgd2F5IHRvIGVuc3VyZSB0aGF0IHRoZSBldmVudCBpcyBvcGVyYXRlZCBpbiBhbiBlZmZlY3RpdmUgd2F5LjxiciAvPjxiciAvPldlIG1heQ0KICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljYWxseSBhc2sgeW91ciBwZXJtaXNzaW9uIHRvIHVzZSB5b3VyIHBob3RvZ3JhcGhzLCBxdW90ZXMsIHRlc3RpbW9uaWFscywgb3Igb3RoZXIgY29udGVudA0KICAgICAgICAgICAgICAgICAgICAgIHRoYXQgeW91IG1ha2UgYXZhaWxhYmxlIG9yIHB1Ymxpc2ggYXQgdGhlIGV2ZW50LiBXaGVyZSB0aGlzIGlzIHRoZSBjYXNlLCBvdXIgcHJvY2Vzc2luZyBvZiB5b3VyDQogICAgICAgICAgICAgICAgICAgICAgc3VjaCBwZXJzb25hbCBkYXRhIHdpbGwgYmUgYmFzZWQgb24gZXhwcmVzcyBjb25zZW50Lg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8YnIgLz4NCiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+UEFSVCBDOiBCVVNJTkVTUyBBRE1JTklTVFJBVElPTiwgRklOQU5DSUFMIEFORCBMRUdBTDwvaDU+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjLXByaXZhY3lfX3Njcm9sbFdyYXAiPg0KICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGUzQ29sdW1ucyI+DQogICAgICAgICAgICAgICAgPHRib2R5Pg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5Ij4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+RGVzY3JpcHRpb248L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkNhdGVnb3JpZXMgb2YgZGF0YTwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPC90aD4NCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSAtdGFjIj4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+TGVnYWwgYmFzZXM8L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+UmVjZWlwdCBvZiBzZXJ2aWNlOjwvc3Bhbj4gSWYgd2UgaGF2ZSBlbmdhZ2VkIGFuDQogICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uIHRvIHByb3ZpZGUgdXMgb3Igb3VyIGNsaWVudCB3aXRoIHNlcnZpY2VzIChmb3IgZXhhbXBsZSwgSVQgc3VwcG9ydCBvciBmaW5hbmNpYWwNCiAgICAgICAgICAgICAgICAgICAgICBhZHZpY2UpLCB3ZSB3aWxsIGNvbGxlY3QgYW5kIHByb2Nlc3MgeW91ciBwZXJzb25hbCBkYXRhIGlmIHlvdSBhcmUgYSBjb250YWN0IHdpdGhpbiB0aGUgcmVsZXZhbnQNCiAgICAgICAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb24gaW4gb3JkZXIgdG8gbWFuYWdlIG91ciByZWxhdGlvbnNoaXAgb3Igb3VyIGNsaWVudHMgd2l0aCB0aGUgb3JnYW5pemF0aW9uLCB0byByZWNlaXZlDQogICAgICAgICAgICAgICAgICAgICAgc2VydmljZXMgZnJvbSB0aGUgb3JnYW5pc2F0aW9uIGFuZCwgd2hlcmUgcmVsZXZhbnQsIHRvIHByb3ZpZGUgb3VyIHNlcnZpY2VzIHRvIG90aGVycyBpbmNsdWRpbmcNCiAgICAgICAgICAgICAgICAgICAgICBvdXIgY3VzdG9tZXJzLg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5SZWdpc3RyYXRpb24gRGF0YS9JZGVudGlmaWVyczwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIG5lY2Vzc2FyeSBmb3IgdXMgdG8gdXNlIHBlcnNvbmFsIGRhdGEgaW4gdGhpcyB3YXkgdG8gcGVyZm9ybSBvdXIgb2JsaWdhdGlvbnMgaW4gYWNjb3JkYW5jZQ0KICAgICAgICAgICAgICAgICAgICAgIHdpdGggYW55IGNvbnRyYWN0IHRoYXQgd2UgbWF5IGhhdmUgd2l0aCB0aGUgb3JnYW5pemF0aW9uLCBvciBpdCBpcyBpbiBvdXIgbGVnaXRpbWF0ZSBpbnRlcmVzdCB0bw0KICAgICAgICAgICAgICAgICAgICAgIHVzZSBwZXJzb25hbCBkYXRhIGluIHN1Y2ggYSB3YXkgdG8gZW5zdXJlIHRoYXQgd2UgaGF2ZSBhbiBlZmZlY3RpdmUgd29ya2luZyByZWxhdGlvbnNoaXAgd2l0aCB0aGUNCiAgICAgICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb24gYW5kIGFyZSBhYmxlIHRvIHByb3ZpZGUgb3VyIHNlcnZpY2VzIHRvIG90aGVycyBpbiBhbiBlZmZlY3RpdmUgd2F5LiBXaGVyZSB3ZSBkbyB0aGlzDQogICAgICAgICAgICAgICAgICAgICAgb24gYmVoYWxmIG9mIG91ciBjbGllbnRzIGFzIGEgZGF0YSBwcm9jZXNzb3IsIHdlIGRvIG5vdCByZXF1aXJlIGEgbGVnYWwgYmFzaXMgZm9yIHN1Y2ggcHJvY2Vzc2luZy4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlM0NvbHVtbnMiPg0KICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkRlc2NyaXB0aW9uPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5DYXRlZ29yaWVzIG9mIGRhdGE8L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkxlZ2FsIGJhc2VzPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiDQogICAgICAgICAgICAgICAgICAgICAgICA+QnVzaW5lc3MgYWRtaW5pc3RyYXRpb24sIGZpbmFuY2UsIGFuZCBsZWdhbCBjb21wbGlhbmNlOjwvc3Bhbg0KICAgICAgICAgICAgICAgICAgICAgID4NCiAgICAgICAgICAgICAgICAgICAgICBXZSBtYXkgdXNlIGFuIGluZGl2aWR1YWzigJlzIHBlcnNvbmFsIGRhdGEgZm9yIHRoZSBmb2xsb3dpbmcgYnVzaW5lc3MgYWRtaW5pc3RyYXRpb24gYW5kIGxlZ2FsDQogICAgICAgICAgICAgICAgICAgICAgY29tcGxpYW5jZSBwdXJwb3Nlczo8YnIgLz48YnIgLz7jg7t0byBmYWNpbGl0YXRlIHRoZSBvcGVyYXRpb24gb3IgZWZmZWN0aXZlIG1hbmFnZW1lbnQgb2Ygb3VyIGdyb3VwDQogICAgICAgICAgICAgICAgICAgICAgb2YgYnVzaW5lc3Nlczs8YnIgLz48YnIgLz7jg7tmb3IgZmluYW5jaWFsLCBhY2NvdW50aW5nIGFuZCB0YXggcHVycG9zZXM7PGJyIC8+PGJyIC8+44O7dG8gY29tcGx5DQogICAgICAgICAgICAgICAgICAgICAgd2l0aCBvdXIgbGVnYWwgb2JsaWdhdGlvbnM7PGJyIC8+PGJyIC8+44O7dG8gZW5mb3JjZSBvciBwcm90ZWN0IG91ciBsZWdhbCByaWdodHM7PGJyIC8+PGJyIC8+44O7dG8NCiAgICAgICAgICAgICAgICAgICAgICBkZWFsIHdpdGggY29tcGxhaW50czs8YnIgLz48YnIgLz7jg7t0byBwcm90ZWN0IHRoZSByaWdodHMgb2YgdGhpcmQgcGFydGllcyAoaW5jbHVkaW5nIHdoZXJlIGhlYWx0aA0KICAgICAgICAgICAgICAgICAgICAgIG9yIHNlY3VyaXR5IG9mIGFuIGluZGl2aWR1YWwgaXMgZW5kYW5nZXJlZCAoZS5nLiBhIGZpcmUpOyBhbmQ8YnIgLz48YnIgLz7jg7tpbiBjb25uZWN0aW9uIHdpdGggYQ0KICAgICAgICAgICAgICAgICAgICAgIGJ1c2luZXNzIHRyYW5zaXRpb24gb3Igc2FsZSBzdWNoIGFzIGEgbWVyZ2VyLCByZS1vcmdhbml6YXRpb24sIGFjcXVpc2l0aW9uIGJ5IGFub3RoZXIgY29tcGFueSwgb3INCiAgICAgICAgICAgICAgICAgICAgICBzYWxlIG9mIGFsbCBvciBhIHBvcnRpb24gb2Ygb3VyIGFzc2V0cy4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+UmVnaXN0cmF0aW9uIERhdGEvSWRlbnRpZmllcnM8YnIgLz48YnIgLz5UcmFuc2FjdGlvbiBEYXRhPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgSXQgaXMgbmVjZXNzYXJ5IGZvciB1cyB0byB1c2UgcGVyc29uYWwgZGF0YSBpbiB0aGlzIHdheSB0byBwZXJmb3JtIG91ciBvYmxpZ2F0aW9ucyBpbiBhY2NvcmRhbmNlDQogICAgICAgICAgICAgICAgICAgICAgd2l0aCBhbnkgY29udHJhY3QgdGhhdCB3ZSBtYXkgaGF2ZSB3aXRoIHRoZSBvcmdhbmlzYXRpb24sIG9yIGl0IGlzIGluIG91ciBsZWdpdGltYXRlIGludGVyZXN0IHRvDQogICAgICAgICAgICAgICAgICAgICAgdXNlIHBlcnNvbmFsIGRhdGEgaW4gc3VjaCBhIHdheSB0byBlbnN1cmUgdGhhdCB3ZSBoYXZlIGFuIGVmZmVjdGl2ZSB3b3JraW5nIHJlbGF0aW9uc2hpcCB3aXRoIHRoZQ0KICAgICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbiBhbmQgYXJlIGFibGUgdG8gcHJvdmlkZSBvdXIgc2VydmljZXMgdG8gb3RoZXJzIGluIGFuIGVmZmVjdGl2ZSB3YXkuIFdoZXJlIHdlIGRvIHRoaXMNCiAgICAgICAgICAgICAgICAgICAgICBvbiBiZWhhbGYgb2Ygb3VyIGNsaWVudHMgYXMgYSBkYXRhIHByb2Nlc3Nvciwgd2UgZG8gbm90IHJlcXVpcmUgYSBsZWdhbCBiYXNpcyBmb3Igc3VjaCBwcm9jZXNzaW5nLg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgPC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9fc3ViSXRlbSI+DQogICAgICAgICAgICA8c2VjdGlvbiBpZD0ic2VjMyI+PGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj4zLiBIb3cgTG9uZyBXZSBLZWVwIFlvdXIgSW5mb3JtYXRpb248L2g0Pjwvc2VjdGlvbj4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgV2Ugd2lsbCBvbmx5IHN0b3JlIHlvdXIgaW5mb3JtYXRpb24gYXMgbG9uZyBhcyBuZWNlc3NhcnkgdG8gZnVsZmlsbCB0aGUgcHVycG9zZXMgZm9yIHdoaWNoIHRoZSBpbmZvcm1hdGlvbg0KICAgICAgICAgICAgICBpcyBjb2xsZWN0ZWQgYW5kIHByb2Nlc3NlZCBvciwgd2hlcmUgYXBwbGljYWJsZSBsYXcgcHJvdmlkZXMgZm9yIGxvbmdlciBzdG9yYWdlIGFuZCByZXRlbnRpb24gcGVyaW9kcywgZm9yDQogICAgICAgICAgICAgIHRoZSBzdG9yYWdlIGFuZCByZXRlbnRpb24gcGVyaW9kIHJlcXVpcmVkIGJ5IGxhdy4gV2hlcmUgd2UgcHJvY2VzcyBhbnkgb3RoZXIgcGVyc29uYWwgZGF0YSwgd2Ugd2lsbCByZXRhaW4NCiAgICAgICAgICAgICAgcmVsZXZhbnQgcGVyc29uYWwgZGF0YSBmb3IgdXAgdG8gc2l4IHllYXJzIGZyb20gdGhlIGRhdGUgb2Ygb3VyIGxhc3QgaW50ZXJhY3Rpb24gd2l0aCB5b3UgKGFuZCBpbg0KICAgICAgICAgICAgICBjb21wbGlhbmNlIHdpdGggb3VyIGRhdGEgcHJvdGVjdGlvbiBvYmxpZ2F0aW9ucykuIFdlIG1heSB0aGVuIGRlc3Ryb3kgc3VjaCBmaWxlcyB3aXRob3V0IGZ1cnRoZXIgbm90aWNlIG9yDQogICAgICAgICAgICAgIGxpYWJpbGl0eS48YnIgLz48YnIgLz5JZiBhbnkgcGVyc29uYWwgZGF0YSBpcyBvbmx5IHVzZWZ1bCBmb3IgYSBzaG9ydCBwZXJpb2QgKHN1Y2ggYXMgZm9yIGEgc3BlY2lmaWMNCiAgICAgICAgICAgICAgYWN0aXZpdHksIHByb21vdGlvbiBvciBtYXJrZXRpbmcgY2FtcGFpZ24pLCB3ZSB3aWxsIG5vdCByZXRhaW4gaXQgZm9yIGxvbmdlciB0aGFuIHRoZSBwZXJpb2QgZm9yIHdoaWNoIGl0DQogICAgICAgICAgICAgIGlzIHVzZWQgYnkgdXMuPGJyIC8+PGJyIC8+SWYgeW91IGhhdmUgb3B0ZWQgb3V0IG9mIHJlY2VpdmluZyBtYXJrZXRpbmcgY29tbXVuaWNhdGlvbnMgZnJvbSB1cywgd2Ugd2lsbA0KICAgICAgICAgICAgICBuZWVkIHRvIHJldGFpbiBjZXJ0YWluIHBlcnNvbmFsIGRhdGEgb24gYSBzdXBwcmVzc2lvbiBsaXN0IGluZGVmaW5pdGVseSBzbyB0aGF0IHdlIGtub3cgbm90IHRvIHNlbmQgeW91DQogICAgICAgICAgICAgIGZ1cnRoZXIgbWFya2V0aW5nIGNvbW11bmljYXRpb25zIGluIHRoZSBmdXR1cmUuIEhvd2V2ZXIsIHdlIHdpbGwgbm90IHVzZSB0aGlzIHBlcnNvbmFsIGRhdGEgdG8gc2VuZCB5b3UNCiAgICAgICAgICAgICAgZnVydGhlciBtYXJrZXRpbmcgdW5sZXNzIHlvdSBzdWJzZXF1ZW50bHkgb3B0IGJhY2sgaW4gdG8gcmVjZWl2ZSBzdWNoIG1hcmtldGluZy4NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICA8L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4NCiAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzZWM0Ij48aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjQuIEhvdyBXZSBTaGFyZSBZb3VyIEluZm9ybWF0aW9uPC9oND48L3NlY3Rpb24+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgIFdlIG1heSBkaXNjbG9zZSBhZ2dyZWdhdGVkIGluZm9ybWF0aW9uIGFib3V0IHVzZXJzLCBhbmQgaW5mb3JtYXRpb24gdGhhdCBkb2VzIG5vdCBpZGVudGlmeSBhbnkgaW5kaXZpZHVhbCwNCiAgICAgICAgICAgICAgd2l0aG91dCByZXN0cmljdGlvbi48YnIgLz48YnIgLz5XZSBtYXkgYWxzbyBkaXNjbG9zZSBwZXJzb25hbCBpbmZvcm1hdGlvbiB0aGF0IHdlIGNvbGxlY3Qgb3IgeW91IHByb3ZpZGUNCiAgICAgICAgICAgICAgYXMgZGVzY3JpYmVkIGluIHRoaXMgUHJpdmFjeSBQb2xpY3k6DQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgICA8dWwgY2xhc3M9ImMtcHJpdmFjeV9fc3ViTGlzdCI+DQogICAgICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgICAgICDjg7tUbyBvdXIgc3Vic2lkaWFyaWVzIGFuZCBhZmZpbGlhdGVzOzxiciAvPuODu1RvIGNvbnRyYWN0b3JzLCBzZXJ2aWNlIHByb3ZpZGVycywgYWR2ZXJ0aXNpbmcgcGFydG5lcnMsDQogICAgICAgICAgICAgICAgICBldmVudCBwYXJ0bmVycywgYW5kIG90aGVyIHRoaXJkIHBhcnRpZXMgd2UgdXNlIHRvIHN1cHBvcnQgb3VyIGJ1c2luZXNzIGFuZC9vciB0aGUgQXBwcyBhbmQgd2hvIGFyZQ0KICAgICAgICAgICAgICAgICAgYm91bmQgYnkgY29udHJhY3R1YWwgb2JsaWdhdGlvbnMgdG8ga2VlcCBwZXJzb25hbCBpbmZvcm1hdGlvbiBjb25maWRlbnRpYWwgYW5kIHVzZSBpdCBvbmx5IGZvciB0aGUNCiAgICAgICAgICAgICAgICAgIHB1cnBvc2VzIGZvciB3aGljaCB3ZSBkaXNjbG9zZSBpdCB0byB0aGVtLjxiciAvPuODu1RvIGEgYnV5ZXIgb3Igb3RoZXIgc3VjY2Vzc29yIGluIHRoZSBldmVudCBvZiBhDQogICAgICAgICAgICAgICAgICBtZXJnZXIsIGRpdmVzdGl0dXJlLCByZXN0cnVjdHVyaW5nLCByZW9yZ2FuaXphdGlvbiwgZGlzc29sdXRpb24sIG9yIG90aGVyIHNhbGUgb3IgdHJhbnNmZXIgb2Ygc29tZSBvcg0KICAgICAgICAgICAgICAgICAgYWxsIG9mIENvY29uZeKAmXMgYXNzZXRzLCB3aGV0aGVyIGFzIGEgZ29pbmcgY29uY2VybiBvciBhcyBwYXJ0IG9mIGJhbmtydXB0Y3ksIGxpcXVpZGF0aW9uLCBvciBzaW1pbGFyDQogICAgICAgICAgICAgICAgICBwcm9jZWVkaW5ncywgaW4gd2hpY2ggcGVyc29uYWwgaW5mb3JtYXRpb24gaGVsZCBieSBDb2NvbmUgYWJvdXQgQXBwIHVzZXJzIGlzIGFtb25nIHRoZSBhc3NldHMNCiAgICAgICAgICAgICAgICAgIHRyYW5zZmVycmVkLjxiciAvPuODu1RvIGF1ZGl0b3JzLCBsYXd5ZXJzLCBhY2NvdW50YW50cyBhbmQgb3RoZXIgcHJvZmVzc2lvbmFsIGFkdmlzZXJzOzxiciAvPuODu0Zyb20NCiAgICAgICAgICAgICAgICAgIHRpbWUgdG8gdGltZSwgdG8gb3RoZXIgdGhpcmQgcGFydGllcyBmb3IgYW55IG90aGVyIHB1cnBvc2UgZGlzY2xvc2VkIGJ5IHVzIHdoZW4geW91IHByb3ZpZGUgdGhlDQogICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi48YnIgLz7jg7tXaXRoIHlvdXIgY29uc2VudC48YnIgLz5XZSBtYXkgYWxzbyBkaXNjbG9zZSB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uOjxiciAvPuODu1RvDQogICAgICAgICAgICAgICAgICBjb21wbHkgd2l0aCBhbnkgY291cnQgb3JkZXIsIGxhdywgb3IgbGVnYWwgcHJvY2VzcywgaW5jbHVkaW5nIHJlc3BvbmRpbmcgdG8gYW55IGdvdmVybm1lbnQgb3INCiAgICAgICAgICAgICAgICAgIHJlZ3VsYXRvcnkgcmVxdWVzdC48YnIgLz7jg7tUbyBlbmZvcmNlIG9yIGFwcGx5IG91ciBUZXJtcyBvZiBVc2UgYW5kIG90aGVyIGFncmVlbWVudHMsIGluY2x1ZGluZyBmb3INCiAgICAgICAgICAgICAgICAgIGJpbGxpbmcgYW5kIGNvbGxlY3Rpb24gcHVycG9zZXMuPGJyIC8+44O7SWYgd2UgcmVhc29uYWJseSBiZWxpZXZlICh3aXRoaW4gdGhlIGJvdW5kcyBvZiBhcHBsaWNhYmxlIGxhdykNCiAgICAgICAgICAgICAgICAgIGRpc2Nsb3N1cmUgaXMgbmVjZXNzYXJ5IG9yIGFwcHJvcHJpYXRlIHRvIHByb3RlY3QgdGhlIHJpZ2h0cywgcHJvcGVydHksIHNlY3VyaXR5IG9yIHNhZmV0eSBvZiBDb2NvbmUsDQogICAgICAgICAgICAgICAgICBvdXIgY3VzdG9tZXJzLCBvciBvdGhlcnMsIG9yIHRvIGFkZHJlc3MgdGVjaG5pY2FsIGlzc3Vlcy4gVGhpcyBpbmNsdWRlcyBleGNoYW5naW5nIGluZm9ybWF0aW9uIHdpdGgNCiAgICAgICAgICAgICAgICAgIG90aGVyIGNvbXBhbmllcyBhbmQgb3JnYW5pemF0aW9ucyBmb3IgdGhlIHB1cnBvc2VzIG9mIGZyYXVkIHByb3RlY3Rpb24gYW5kIGNyZWRpdCByaXNrIHJlZHVjdGlvbi4NCiAgICAgICAgICAgICAgICA8L3A+DQogICAgICAgICAgICAgIDwvbGk+DQogICAgICAgICAgICA8L3VsPg0KICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICA8aDUgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkNob2ljZXMgQWJvdXQgSG93IFdlIFVzZSBhbmQgRGlzY2xvc2UgWW91ciBJbmZvcm1hdGlvbjwvaDU+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgIFdlIGhhdmUgY3JlYXRlZCBtZWNoYW5pc21zIHRvIHByb3ZpZGUgeW91IHdpdGggdGhlIGZvbGxvd2luZyBjb250cm9sIG92ZXIgeW91ciBpbmZvcm1hdGlvbjoNCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgIDx1bCBjbGFzcz0iYy1wcml2YWN5X19zdWJMaXN0Ij4NCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgICAgIOODu1RyYWNraW5nIFRlY2hub2xvZ2llcyBhbmQgQWR2ZXJ0aXNpbmcuIFlvdSBjYW4gc2V0IHlvdXIgYnJvd3NlciB0byByZWZ1c2UgYWxsIG9yIHNvbWUgYnJvd3Nlcg0KICAgICAgICAgICAgICAgICAgY29va2llcywgb3IgdG8gYWxlcnQgeW91IHdoZW4gY29va2llcyBhcmUgYmVpbmcgc2VudC4gSWYgeW91IGRpc2FibGUgb3IgcmVmdXNlIGNvb2tpZXMsIHBsZWFzZSBub3RlDQogICAgICAgICAgICAgICAgICB0aGF0IHNvbWUgcGFydHMgb2YgdGhlIEFwcHMgbWF5IHRoZW4gYmUgaW5hY2Nlc3NpYmxlIG9yIG5vdCBmdW5jdGlvbiBwcm9wZXJseS4NCiAgICAgICAgICAgICAgICA8L3A+DQogICAgICAgICAgICAgIDwvbGk+DQogICAgICAgICAgICA8L3VsPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICBXZSBkbyBub3QgY29udHJvbCB0aGlyZCBwYXJ0aWVz4oCZIGNvbGxlY3Rpb24gb3IgdXNlIG9mIHlvdXIgaW5mb3JtYXRpb24gdG8gc2VydmUgaW50ZXJlc3QtYmFzZWQNCiAgICAgICAgICAgICAgYWR2ZXJ0aXNpbmcuIEhvd2V2ZXIsIHRoZXNlIHRoaXJkIHBhcnRpZXMgbWF5IHByb3ZpZGUgeW91IHdpdGggd2F5cyB0byBjaG9vc2Ugbm90IHRvIGhhdmUgeW91ciBpbmZvcm1hdGlvbg0KICAgICAgICAgICAgICBjb2xsZWN0ZWQgb3IgdXNlZCBpbiB0aGlzIHdheS4gWW91IG1heSBvcHQgb3V0IG9mIHJlY2VpdmluZyB0YXJnZXRlZCBhZHMgZnJvbSBtZW1iZXJzIG9mIHRoZSBOZXR3b3JrDQogICAgICAgICAgICAgIEFkdmVydGlzaW5nIEluaXRpYXRpdmUgb248YSBjbGFzcz0iYy10ZXh0TGluayAtcmVkIiBocmVmPSJodHRwczovL29wdG91dC5uZXR3b3JrYWR2ZXJ0aXNpbmcub3JnLz9jPTEiPg0KICAgICAgICAgICAgICAgIHRoZWlyIHdlYnNpdGUuPC9hDQogICAgICAgICAgICAgID48YnIgLz48YnIgLz5DYWxpZm9ybmlhIHJlc2lkZW50cyBtYXkgaGF2ZSBhZGRpdGlvbmFsIHBlcnNvbmFsIGluZm9ybWF0aW9uIHJpZ2h0cyBhbmQgY2hvaWNlcy4gUGxlYXNlIHNlZQ0KICAgICAgICAgICAgICBZb3VyIENhbGlmb3JuaWEgUHJpdmFjeSBSaWdodHMgZm9yIG1vcmUgaW5mb3JtYXRpb24uDQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgPC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9fc3ViSXRlbSI+DQogICAgICAgICAgICA8c2VjdGlvbiBpZD0ic2VjNSI+PGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj41LiBDaGlsZHJlbuKAmXMgUHJpdmFjeTwvaDQ+PC9zZWN0aW9uPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICBJZiB3ZSBsZWFybiB3ZSBoYXZlIGNvbGxlY3RlZCBvciByZWNlaXZlZCBwZXJzb25hbCBpbmZvcm1hdGlvbiBmcm9tIGEgY2hpbGQgdW5kZXIgdGhpcnRlZW4gKDEzKSB3aXRob3V0DQogICAgICAgICAgICAgIHZlcmlmaWNhdGlvbiBvZiBwcmlvciBwYXJlbnRhbCBjb25zZW50LCB3ZSB3aWxsIGRlbGV0ZSB0aGF0IGluZm9ybWF0aW9uLiBJZiB5b3UgYmVsaWV2ZSB3ZSBtYXkgcG9zc2VzcyBvcg0KICAgICAgICAgICAgICBoYXZlIHJlY2VpdmVkIGFueSBpbmZvcm1hdGlvbiBmcm9tIG9yIGFib3V0IGEgY2hpbGQgdW5kZXIgdGhpcnRlZW4gKDEzKSB3aXRob3V0IHN1Y2ggcHJpb3IgcGFyZW50YWwNCiAgICAgICAgICAgICAgY29uc2VudCwgcGxlYXNlIGltbWVkaWF0ZWx5IGNvbnRhY3QgdXMgYnkgZW1haWwgYXQgdGhlIGVtYWlsIGFkZHJlc3MgcHJvdmlkZWQgaW4gdGhlIOKAnENvbnRhY3RpbmcgQ29jb25l4oCdDQogICAgICAgICAgICAgIFNlY3Rpb24gMTQgYmVsb3cuPGJyIC8+DQogICAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgICBOb3R3aXRoc3RhbmRpbmcgdGhlIGZvcmVnb2luZywgUGV0S2FydCBtYXkgY29sbGVjdCBwZXJzb25hbCBpbmZvcm1hdGlvbiBmcm9tIHVzZXJzIHVuZGVyIHRoZSBhZ2Ugb2YgdGhpcnRlZW4gKDEzKS4gDQogICAgICAgICAgICAgIEZvciBhIGRlc2NyaXB0aW9uIG9mIG91ciBpbmZvcm1hdGlvbiBjb2xsZWN0aW9uLCB1c2UsIGFuZCBwYXJlbnRhbCBjb25zZW50IHByYWN0aWNlcyB3aXRoIHJlc3BlY3QgdG8gUGV0S2FydCwgcGxlYXNlIHJlZmVyIHRvIFNlY3Rpb24gMTYuDQogICAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgICBJbiBvbmUgb3IgbW9yZSBjb3VudHJpZXMgb3V0c2lkZSB0aGUgVW5pdGVkIFN0YXRlcywgdGhlIGFwcGxpY2FibGUgYWdlIGlzIGZvdXJ0ZWVuICgxNCkgeWVhcnMgb2YgYWdlLA0KICAgICAgICAgICAgICByYXRoZXIgdGhhbiB0aGlydGVlbiAoMTMpIHllYXJzIG9mIGFnZS48YnIgLz4NCiAgICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICAgIENhbGlmb3JuaWEgcmVzaWRlbnRzIHVuZGVyIHNpeHRlZW4gKDE2KSB5ZWFycyBvZiBhZ2UgbWF5IGhhdmUgYWRkaXRpb25hbCByaWdodHMgcmVnYXJkaW5nIHRoZSBjb2xsZWN0aW9uDQogICAgICAgICAgICAgIGFuZCBzYWxlIG9mIHRoZWlyIHBlcnNvbmFsIGluZm9ybWF0aW9uLiBQbGVhc2Ugc2VlIFlvdXIgQ2FsaWZvcm5pYSBQcml2YWN5IFJpZ2h0cyBiZWxvdyBmb3IgbW9yZQ0KICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICA8L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4NCiAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzZWM2Ij48aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjYuIEhvdyBXZSBQcm90ZWN0IFlvdXIgSW5mb3JtYXRpb248L2g0Pjwvc2VjdGlvbj4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgV2UgaGF2ZSBpbXBsZW1lbnRlZCBtZWFzdXJlcyBkZXNpZ25lZCB0byBzZWN1cmUgeW91ciBwZXJzb25hbCBpbmZvcm1hdGlvbiBmcm9tIGFjY2lkZW50YWwgbG9zcyBhbmQgZnJvbQ0KICAgICAgICAgICAgICB1bmF1dGhvcml6ZWQgYWNjZXNzLCB0aGVmdCwgdXNlLCBhbHRlcmF0aW9uLCBhbmQgZGlzY2xvc3VyZS4gQWxsIGluZm9ybWF0aW9uIHlvdSBwcm92aWRlIHRvIHVzIGlzIHN0b3JlZA0KICAgICAgICAgICAgICBvbiBvdXIgc2VjdXJlIHNlcnZlcnMgYmVoaW5kIGZpcmV3YWxscy4gQW55IHBheW1lbnQgdHJhbnNhY3Rpb25zIHdpbGwgYmUgZW5jcnlwdGVkIHVzaW5nIFNTTA0KICAgICAgICAgICAgICB0ZWNobm9sb2d5LjxiciAvPjxiciAvPlRoZSBzYWZldHkgYW5kIHNlY3VyaXR5IG9mIHlvdXIgaW5mb3JtYXRpb24gYWxzbyBkZXBlbmQgb24geW91LiBXaGVyZSB3ZSBoYXZlDQogICAgICAgICAgICAgIGlzc3VlZCB5b3UgKG9yIHlvdSBoYXZlIGNob3NlbikgYSBwYXNzd29yZCBmb3IgYWNjZXNzIHRvIGNlcnRhaW4gcGFydHMgb2Ygb3VyIEFwcHMsIHlvdSBhcmUgcmVzcG9uc2libGUNCiAgICAgICAgICAgICAgZm9yIGtlZXBpbmcgeW91ciBwYXNzd29yZCBjb25maWRlbnRpYWwuIFBsZWFzZSBkbyBub3Qgc2hhcmUgeW91ciBwYXNzd29yZCB3aXRoIGFueW9uZS48YnIgLz48YnIgLz5XZSBkbw0KICAgICAgICAgICAgICBub3QgYW5kIHdpbGwgbm90LCBhdCBhbnkgdGltZSwgcmVxdWVzdCB5b3VyIGNyZWRpdCBjYXJkIGluZm9ybWF0aW9uLCB5b3VyIGxvZ2luIGluZm9ybWF0aW9uIG9yIG90aGVyDQogICAgICAgICAgICAgIGlkZW50aWZpY2F0aW9uIGluIGEgbm9uLXNlY3VyZSBvciB1bnNvbGljaXRlZCBjb21tdW5pY2F0aW9uIChzdWNoIGFzIGVtYWlsKS48YnIgLz48YnIgLz5BbHRob3VnaCB3ZSBkbyBvdXINCiAgICAgICAgICAgICAgYmVzdCB0byBwcm90ZWN0IHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24sIHdlIGNhbm5vdCBndWFyYW50ZWUgdGhlIHNlY3VyaXR5IG9mIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24NCiAgICAgICAgICAgICAgdHJhbnNtaXR0ZWQgdG8gb3Igb24gb3VyIEFwcHMuIEFueSB0cmFuc21pc3Npb24gb2YgcGVyc29uYWwgaW5mb3JtYXRpb24gaXMgYXQgeW91ciBvd24gcmlzay4gWW91IGFzc3VtZQ0KICAgICAgICAgICAgICB0aGlzIHJpc2sgYnkgdXNpbmcgYW55IHBhcnQgb2YgdGhlIEFwcHMuIFdlIGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGNpcmN1bXZlbnRpb24gb2YgYW55IG9mIG91ciBwcml2YWN5DQogICAgICAgICAgICAgIHNldHRpbmdzIG9yIHNlY3VyaXR5IG1lYXN1cmVzLCBhbmQvb3IgYW55IGRhbWFnZXMgcmVzdWx0aW5nIGZyb20gc3VjaCBjaXJjdW12ZW50aW9uLg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgIDwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPg0KICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InNlYzciPjxoNCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Ny4gSG93IFlvdSBNYXkgQ2hhbmdlLCBSZW1vdmUsIE9yIEV4cG9ydCBZb3VyIEluZm9ybWF0aW9uPC9oND48L3NlY3Rpb24+DQogICAgICAgICAgICA8aDUgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkFjY2Vzc2luZyBhbmQgQ29ycmVjdGluZyBZb3VyIEluZm9ybWF0aW9uPC9oNT4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgWW91IGNhbiByZXZpZXcgYW5kIGNoYW5nZSB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uIGJ5IHNlbmRpbmcgdXMgYW4gZW1haWwgYXQgdGhlIGVtYWlsIGFkZHJlc3MgcHJvdmlkZWQNCiAgICAgICAgICAgICAgaW4gdGhlIOKAnENvbnRhY3RpbmcgQ29jb25l4oCdIFNlY3Rpb24gMTQgYmVsb3cgdG8gcmVxdWVzdCBhY2Nlc3MgdG8sIG9iamVjdCB0bywgY29ycmVjdCBvciBkZWxldGUgYW55DQogICAgICAgICAgICAgIHBlcnNvbmFsIGluZm9ybWF0aW9uIHRoYXQgeW91IGhhdmUgcHJvdmlkZWQgdG8gdXMuPGJyIC8+DQogICAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgICBXZSBtYXkgbm90IGFjY29tbW9kYXRlIGEgcmVxdWVzdCB0byBjaGFuZ2UgaW5mb3JtYXRpb24gaWYgd2UgcmVhc29uYWJseSBiZWxpZXZlIHRoZSBjaGFuZ2Ugd291bGQgdmlvbGF0ZQ0KICAgICAgICAgICAgICBhbnkgbGF3IG9yIGxlZ2FsIHJlcXVpcmVtZW50LCBvciBjYXVzZSB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5jb3JyZWN0LjxiciAvPg0KICAgICAgICAgICAgICA8YnIgLz4NCiAgICAgICAgICAgICAgSWYgeW91IGRlbGV0ZSB5b3VyIHVzZXIgY29udGVudCwgY29waWVzIG9mIHlvdXIgdXNlciBjb250ZW50IG1heSByZW1haW4gdmlld2FibGUgaW4gY2FjaGVkIGFuZCBhcmNoaXZlZA0KICAgICAgICAgICAgICBwYWdlcywgb3IgbWlnaHQgaGF2ZSBiZWVuIGNvcGllZCBvciBzdG9yZWQgYnkgb3RoZXIgdXNlcnMuIFByb3BlciBhY2Nlc3MgdG8gYW5kIHVzZSBvZiBpbmZvcm1hdGlvbiwNCiAgICAgICAgICAgICAgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB1c2VyIGNvbnRlbnQsIGlzIGdvdmVybmVkIGJ5IG91ciBUZXJtcyBvZiBVc2UuPGJyIC8+DQogICAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgICBZb3UgbWF5IGVtYWlsIHVzIGF0IHRoZSBlbWFpbCBhZGRyZXNzIHByb3ZpZGVkIGluIHRoZSDigJxDb250YWN0aW5nIENvY29uZeKAnSBTZWN0aW9uIDE0IGJlbG93IHRvIHJlcXVlc3QgdGhhdA0KICAgICAgICAgICAgICB3ZSBkZWxldGUgeW91ciBwZXJzb25hbCBpbmZvcm1hdGlvbiBmcm9tIG91ciBkYXRhYmFzZS4gRm9yIHN1Y2ggcmVxdWVzdHMsIHBsZWFzZSB3cml0ZSDigJxkZWxldGUgbXkgcGVyc29uYWwNCiAgICAgICAgICAgICAgaW5mb3JtYXRpb27igJ0gaW4gdGhlIHN1YmplY3QgbGluZSwgYW5kIGluY2x1ZGUgeW91ciBlbWFpbCBhZGRyZXNzIGluIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlLiBXZSB3aWxsIHVzZQ0KICAgICAgICAgICAgICBjb21tZXJjaWFsbHkgcmVhc29uYWJsZSBlZmZvcnRzIHRvIGhvbm9yIHlvdXIgcmVxdWVzdC4gV2UgbWF5IHJldGFpbiBhbiBhcmNoaXZlZCBjb3B5IG9mIHlvdXIgcmVjb3JkcyBhcw0KICAgICAgICAgICAgICByZXF1aXJlZCBieSBsYXcgb3IgZm9yIGFkbWluaXN0cmF0aXZlIHB1cnBvc2VzLjxiciAvPg0KICAgICAgICAgICAgICA8YnIgLz4NCiAgICAgICAgICAgICAgUGxlYXNlIG5vdGUgdGhhdCB3ZSB3aWxsIHN0b3JlIGNvbW11bmljYXRpb25zIHlvdSBtYXkgc2VuZCB0aHJvdWdoIHRoZSBBcHBzLCBhcyB3ZWxsIGFzIGFueSBjb21tZW50cyB5b3UNCiAgICAgICAgICAgICAgbWF5IHBvc3QsIGFuZCB0aGV5IG1heSBub3QgYmUgc3ViamVjdCB0byBtb2RpZmljYXRpb24gb3IgZGVsZXRpb24uPGJyIC8+DQogICAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgICBQbGVhc2Ugbm90ZSwgc2ltaWxhciByaWdodHMgd2lsbCBhcHBseSBpbiB0aGUgVUssIEVFQSBhbmQgU3dpdHplcmxhbmQuIFBsZWFzZSBzZWUgdGhlPHNwYW4NCiAgICAgICAgICAgICAgICBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUiDQogICAgICAgICAgICAgID4NCiAgICAgICAgICAgICAgICBQcml2YWN5IHNlY3Rpb24gZm9yIHVzZXJzIGZyb20gdGhlIEVFQS4gVUsgYW5kIFN3aXR6ZXJsYW5kPC9zcGFuDQogICAgICAgICAgICAgID4NCiAgICAgICAgICAgICAgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICA8L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4NCiAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzZWM4Ij48aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjguIExpbmtzIFRvIFRoaXJkLVBhcnR5IFdlYnNpdGVzIEFuZCBTZXJ2aWNlczwvaDQ+PC9zZWN0aW9uPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICBUaGUgQXBwcyBtYXkgY29udGFpbiBsaW5rcyB0byBvdGhlciB3ZWJzaXRlcyBhbmQgb25saW5lIHNlcnZpY2VzLiBJZiB5b3UgY2hvb3NlIHRvIGNsaWNrIHRocm91Z2ggdG8gb25lIG9mDQogICAgICAgICAgICAgIHRoZXNlIG90aGVyIHdlYnNpdGVzIG9yIG9ubGluZSBzZXJ2aWNlcywgcGxlYXNlIG5vdGUgdGhhdCBhbnkgaW5mb3JtYXRpb24geW91IG1heSBwcm92aWRlIHdpbGwgYmUgc3ViamVjdA0KICAgICAgICAgICAgICB0byB0aGUgcHJpdmFjeSBwb2xpY3kgYW5kIG90aGVyIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoYXQgd2Vic2l0ZSBvciBzZXJ2aWNlLCBhbmQgbm90IHRvIHRoaXMgUHJpdmFjeQ0KICAgICAgICAgICAgICBQb2xpY3kuIFdlIGRvIG5vdCBjb250cm9sIHRoaXJkLXBhcnR5IHdlYnNpdGVzIG9yIHNlcnZpY2VzLCBhbmQgdGhlIGZhY3QgdGhhdCBhIGxpbmsgdG8gc3VjaCBhIHdlYnNpdGUgb3INCiAgICAgICAgICAgICAgc2VydmljZSBhcHBlYXJzIGluIHRoZSBBcHBzIGRvZXMgbm90IG1lYW4gdGhhdCB3ZSBlbmRvcnNlIGl0cyBvciBpdHMgcHJvdmlkZXIsIG9yIGhhdmUgYXBwcm92ZWQgdGhlDQogICAgICAgICAgICAgIHByb3ZpZGVy4oCZcyBwb2xpY2llcyBvciBwcmFjdGljZXMgcmVsYXRlZCB0byB1c2VyIGluZm9ybWF0aW9uLjxiciAvPjxiciAvPkJlZm9yZSBwcm92aWRpbmcgYW55IGluZm9ybWF0aW9uDQogICAgICAgICAgICAgIHRvIGFueSB0aGlyZC1wYXJ0eSB3ZWJzaXRlIG9yIHNlcnZpY2UsIHBsZWFzZSByZXZpZXcgdGhlIHByaXZhY3kgcG9saWN5IGFuZCBvdGhlciB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KICAgICAgICAgICAgICB0aGF0IHdlYnNpdGUgb3Igc2VydmljZS4gWW91IGFncmVlIHRoYXQgQ29jb25lIHdpbGwgaGF2ZSBubyBsaWFiaWxpdHkgZm9yIGFueSBtYXR0ZXJzIHJlbGF0aW5nIHRvIGENCiAgICAgICAgICAgICAgdGhpcmQtcGFydHkgd2Vic2l0ZSBvciBzZXJ2aWNlIHRoYXQgeW91IHByb3ZpZGUgaW5mb3JtYXRpb24gdG8sIGluY2x1ZGluZyB0aGVpciBjb2xsZWN0aW9uIGFuZC9vciBoYW5kbGluZw0KICAgICAgICAgICAgICBvZiB0aGF0IGluZm9ybWF0aW9uLg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgIDwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPg0KICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InNlYzkiPjxoNCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+OS4gTm9uLVUuUy4gVXNlcnM8L2g0Pjwvc2VjdGlvbj4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgV2hlbiB3ZSByZWZlciB0byB0aGUgdGVybSDigJw8c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+R0RQUjwvc3Bhbj7igJ0gaW4gdGhpcyBQcml2YWN5IFBvbGljeSB3ZQ0KICAgICAgICAgICAgICBtZWFuIHRoZSBFdXJvcGVhbiBVbmlvbiBHZW5lcmFsIERhdGEgUHJvdGVjdGlvbiBSZWd1bGF0aW9uLiBJbmZvcm1hdGlvbiB0aGF0IHlvdSBwcm92aWRlIG1heSBiZQ0KICAgICAgICAgICAgICB0cmFuc2ZlcnJlZCBvciBhY2Nlc3NlZCBieSBlbnRpdGllcyBhcm91bmQgdGhlIHdvcmxkIGFzIGRlc2NyaWJlZCBpbiB0aGlzIFByaXZhY3kgUG9saWN5LiBJZiB5b3UgYXJlDQogICAgICAgICAgICAgIGxvY2F0ZWQgb3V0c2lkZSB0aGUgVW5pdGVkIFN0YXRlcywgeW91IHVuZGVyc3RhbmQgdGhhdCB3ZSBtYXkgdHJhbnNmZXIgcGVyc29uYWwgaW5mb3JtYXRpb24gdG8gYW5kIHByb2Nlc3MNCiAgICAgICAgICAgICAgaXQgaW4gdGhlIFVuaXRlZCBTdGF0ZXMuIEluIHN1Y2ggZXZlbnQsIHRyYW5zZmVycmVkIHBlcnNvbmFsIGluZm9ybWF0aW9uIHdpbGwgbm9uZXRoZWxlc3MgYmUgcHJvY2Vzc2VkIGFuZA0KICAgICAgICAgICAgICBoZWxkIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoZSBhcHBsaWNhYmxlIGxhdyBpbiB5b3VyIHBsYWNlIG9mIHJlc2lkZW5jZS4gSWYgeW91IGFyZQ0KICAgICAgICAgICAgICBsb2NhdGVkIGluIHRoZSBVSywgRUVBIG9yIFN3aXR6ZXJsYW5kIHBsZWFzZSBub3RlIHRoYXQgeW91ciBwZXJzb25hbCBpbmZvcm1hdGlvbiBtYXkgYmUgdHJhbnNmZXJyZWQNCiAgICAgICAgICAgICAgb3V0c2lkZSBvZiB0aGUgVUssIEVFQSBvciBTd2l0emVybGFuZC4gWW91ciBjb25zZW50IHRvIHRoaXMgUHJpdmFjeSBQb2xpY3kgdG9nZXRoZXIgd2l0aCB5b3VyIHN1Ym1pc3Npb24NCiAgICAgICAgICAgICAgb2YgcGVyc29uYWwgaW5mb3JtYXRpb24gY29uc3RpdHV0ZSB5b3VyIGFncmVlbWVudCB0byB0aGVzZSB0cmFuc2ZlcnMuIFBsZWFzZSBzZWUgdGhlPHNwYW4NCiAgICAgICAgICAgICAgICBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUiDQogICAgICAgICAgICAgID4NCiAgICAgICAgICAgICAgICBQcml2YWN5IHNlY3Rpb24gZm9yIHVzZXJzIGZyb20gdGhlIEVFQSwgVUsgYW5kIFN3aXR6ZXJsYW5kPC9zcGFuDQogICAgICAgICAgICAgID4NCiAgICAgICAgICAgICAgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uDQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgPC9saT4NCiAgICAgICAgICA8bGkgY2xhc3M9ImMtcHJpdmFjeV9fc3ViSXRlbSI+DQogICAgICAgICAgICA8c2VjdGlvbiBpZD0ic2VjMTAiPjxoNCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+MTAuIFByaXZhY3kgc2VjdGlvbiBmb3IgdXNlcnMgZnJvbSB0aGUgVUssIEVFQSBhbmQgU3dpdHplcmxhbmQ8L2g0Pjwvc2VjdGlvbj4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgQnkgY29udGludWluZyB0byB1c2Ugb3VyIEFwcHMgeW91IGFja25vd2xlZGdlIHRoYXQgeW91ciBkYXRhIHdpbGwgYmUgcHJvY2Vzc2VkIGluIGFjY29yZGFuY2Ugd2l0aCB0aGlzDQogICAgICAgICAgICAgIFByaXZhY3kgUG9saWN5Lg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5BLiBEYXRhIENvbnRyb2xsZXI8L2g1Pg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgUHJpdmFjeSBQb2xpY3ksIENvY29uZSBPTkUgY29ycG9yYXRpb24gaXMgdGhlIERhdGEgQ29udHJvbGxlciBvZiB5b3VyIHBlcnNvbmFsDQogICAgICAgICAgICAgIGluZm9ybWF0aW9uLg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5CLiBJbnRlcm5hdGlvbmFsIHRyYW5zZmVycyBvZiBwZXJzb25hbCBkYXRhPC9oNT4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgTm9uLVVLL0VFQSBjb3VudHJpZXMgbWF5IG5vdCBwcm92aWRlIHRoZSBzYW1lIGRlZ3JlZSBvZiBwcm90ZWN0aW9uIGZvciB5b3VyIHBlcnNvbmFsIGRhdGEsIG1heSBub3QgZ2l2ZQ0KICAgICAgICAgICAgICB5b3UgdGhlIHNhbWUgcmlnaHRzIGluIHJlbGF0aW9uIHRvIHlvdXIgcGVyc29uYWwgZGF0YSBhbmQgbWF5IG5vdCBoYXZlIGEgZGF0YSBwcm90ZWN0aW9uIHN1cGVydmlzb3J5DQogICAgICAgICAgICAgIGF1dGhvcml0eSB0byBoZWxwIHlvdSBpZiB5b3UgaGF2ZSBhbnkgY29uY2VybnMgYWJvdXQgdGhlIHByb2Nlc3Npbmcgb2YgeW91ciBwZXJzb25hbCBkYXRhLiBIb3dldmVyLCB3aGVuDQogICAgICAgICAgICAgIHRyYW5zZmVycmluZyB5b3VyIHBlcnNvbmFsIGRhdGEgKHRoYXQgb3JpZ2luYXRlcyBmcm9tIHRoZSBVSywgRUVBIG9yIFN3aXR6ZXJsYW5kKSBvdXRzaWRlIHRoZSBVSywgRUVBIG9yDQogICAgICAgICAgICAgIFN3aXR6ZXJsYW5kLCB3ZSB3aWxsIGNvbXBseSB3aXRoIG91ciBsZWdhbCBhbmQgcmVndWxhdG9yeSBvYmxpZ2F0aW9ucyBpbiByZWxhdGlvbiB0byB5b3VyIHBlcnNvbmFsIGRhdGEsDQogICAgICAgICAgICAgIGluY2x1ZGluZyBoYXZpbmcgYSBsYXdmdWwgYmFzaXMgZm9yIHRyYW5zZmVycmluZyBwZXJzb25hbCBkYXRhIGFuZCBwdXR0aW5nIGFwcHJvcHJpYXRlIHNhZmVndWFyZHMgaW4gcGxhY2UNCiAgICAgICAgICAgICAgdG8gZW5zdXJlIGFuIGFkZXF1YXRlIGxldmVsIG9mIHByb3RlY3Rpb24gZm9yIHRoZSBwZXJzb25hbCBkYXRhLiBXZSB3aWxsIHRha2UgcmVhc29uYWJsZSBzdGVwcyB0byBlbnN1cmUNCiAgICAgICAgICAgICAgdGhlIHNlY3VyaXR5IG9mIHlvdXIgcGVyc29uYWwgZGF0YSBpbiBhY2NvcmRhbmNlIHdpdGggYXBwbGljYWJsZSBkYXRhIHByb3RlY3Rpb24gbGF3cy48YnIgLz48YnIgLz5XaGVuDQogICAgICAgICAgICAgIHRyYW5zZmVycmluZyB5b3VyIHBlcnNvbmFsIGRhdGEgb3V0c2lkZSB0aGUgVUssIEVFQSBvciBTd2l0emVybGFuZCwgd2Ugd2lsbCwgd2hlcmUgcmVxdWlyZWQgYnkgYXBwbGljYWJsZQ0KICAgICAgICAgICAgICBsYXcsIGltcGxlbWVudCBhdCBsZWFzdCBvbmUgb2YgdGhlIHNhZmVndWFyZHMgc2V0IG91dCBiZWxvdy4gUGxlYXNlIGNvbnRhY3QgdXMgaWYgeW91IHdvdWxkIGxpa2UgZnVydGhlcg0KICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiB0aGUgc3BlY2lmaWMgbWVjaGFuaXNtcyB1c2VkIGJ5IHVzIHdoZW4gdHJhbnNmZXJyaW5nIHlvdXIgcGVyc29uYWwgZGF0YSBvdXRzaWRlIHRoZSBVSywgRUVBDQogICAgICAgICAgICAgIG9yIFN3aXR6ZXJsYW5kLg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICDjg7tBZGVxdWFjeSBkZWNpc2lvbnM6IFdlIG1heSB0cmFuc2ZlciB5b3VyIHBlcnNvbmFsIGRhdGEgdG8gY291bnRyaWVzIHRoYXQgaGF2ZSBiZWVuIGRlZW1lZCB0byBwcm92aWRlIGFuDQogICAgICAgICAgICAgIGFkZXF1YXRlIGxldmVsIG9mIHByb3RlY3Rpb24gZm9yIHBlcnNvbmFsIGRhdGEgYnkgdGhlIEV1cm9wZWFuIENvbW1pc3Npb24gYW5kL29yIHRoZSBVSy9Td2lzcyBHb3Zlcm5tZW50DQogICAgICAgICAgICAgIChhcyBhcHBsaWNhYmxlKS48YnIgLz7jg7tNb2RlbCBjbGF1c2VzOiBXaGVyZSB3ZSB1c2UgY2VydGFpbiBzZXJ2aWNlIHByb3ZpZGVycywgd2UgbWF5IHVzZSBzcGVjaWZpYw0KICAgICAgICAgICAgICBzdGFuZGFyZCBjb250cmFjdHVhbCBjbGF1c2VzIGFwcHJvdmVkIGJ5IHRoZSBFdXJvcGVhbiBDb21taXNzaW9uIGFuZC9vciB0aGUgVUsvU3dpc3MgR292ZXJubWVudCB3aGljaCBnaXZlDQogICAgICAgICAgICAgIHBlcnNvbmFsIGRhdGEgdGhlIHNhbWUgcHJvdGVjdGlvbiBpdCBoYXMgaW4gRXVyb3BlLCBTd2l0emVybGFuZCBhbmQvb3IgdGhlIFVLLg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5DLiBSaWdodHMgb2YgRUVBIFJlc2lkZW50czwvaDU+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgIElmIHlvdSBhcmUgYWNjZXNzaW5nIG9yIHVzaW5nIHRoZSBBcHBzIGZyb20gd2l0aGluIHRoZSBVSywgRUVBIG9yIFN3aXR6ZXJsYW5kIHlvdSBtYXkgaGF2ZSB0aGUgZm9sbG93aW5nDQogICAgICAgICAgICAgIHJpZ2h0cyB1bmRlciB0aGUgR0RQUiAoYXMgd2VsbCBhcyBvdGhlciByaWdodHMpLiBJZiB5b3Ugd2lzaCB0byBleGVyY2lzZSBhbnkgb2YgdGhlc2UgcmlnaHRzLCB5b3UgbWF5IGRvDQogICAgICAgICAgICAgIHNvIGJ5IGNvbnRhY3RpbmcgdXMgYXMgcHJvdmlkZWQgKGEpIGluIFNlY3Rpb24gMTQgYmVsb3csIG9yIChiKSBvdGhlcndpc2UgaW4gdGhpcyBQcml2YWN5IFBvbGljeS4NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAg44O7UmlnaHQgb2YgQWNjZXNzOiBZb3UgaGF2ZSB0aGUgcmlnaHQgdG8gb2J0YWluIGNvbmZpcm1hdGlvbiBmcm9tIHVzIGFzIHRvIHdoZXRoZXIgb3Igbm90IHdlIHByb2Nlc3MNCiAgICAgICAgICAgICAgcGVyc29uYWwgaW5mb3JtYXRpb24gZnJvbSB5b3UgYW5kIHlvdSBhbHNvIGhhdmUgdGhlIHJpZ2h0IHRvIGF0IGFueSB0aW1lIG9idGFpbiBhY2Nlc3MgdG8geW91ciBwZXJzb25hbA0KICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBzdG9yZWQgYnkgdXMuPGJyIC8+44O7UmlnaHQgdG8gQ29ycmVjdGlvbiBvZiB5b3VyIFBlcnNvbmFsIEluZm9ybWF0aW9uOiBJZiB3ZSBwcm9jZXNzIHlvdXINCiAgICAgICAgICAgICAgcGVyc29uYWwgaW5mb3JtYXRpb24sIHdlIHVzZSByZWFzb25hYmxlIG1lYXN1cmVzIHRvIGVuc3VyZSB0aGF0IHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gaXMgYWNjdXJhdGUgYW5kDQogICAgICAgICAgICAgIHVwLXRvLWRhdGUgZm9yIHRoZSBwdXJwb3NlcyBmb3Igd2hpY2ggeW91ciBwZXJzb25hbCBpbmZvcm1hdGlvbiB3YXMgY29sbGVjdGVkLiBJZiB5b3VyIHBlcnNvbmFsDQogICAgICAgICAgICAgIGluZm9ybWF0aW9uIGlzIGluYWNjdXJhdGUgb3IgaW5jb21wbGV0ZSwgeW91IGhhdmUgdGhlIHJpZ2h0IHRvIHJlcXVpcmUgdXMgdG8gY29ycmVjdCBpdC48YnIgLz7jg7tSaWdodCB0bw0KICAgICAgICAgICAgICBEZWxldGlvbiBvZiB5b3VyIFBlcnNvbmFsIEluZm9ybWF0aW9uIG9yIFJpZ2h0IHRvIFJlc3RyaWN0aW9uIG9mIFByb2Nlc3Npbmc6IFlvdSBtYXkgaGF2ZSB0aGUgcmlnaHQgdG8NCiAgICAgICAgICAgICAgcmVxdWlyZSB1cyB0byBkZWxldGUgeW91ciBwZXJzb25hbCBpbmZvcm1hdGlvbiBvciB0byByZXN0cmljdCBvZiBwcm9jZXNzaW5nIG9mIHlvdXIgcGVyc29uYWwNCiAgICAgICAgICAgICAgaW5mb3JtYXRpb24uPGJyIC8+44O7UmlnaHQgdG8gV2l0aGRyYXcgeW91ciBDb25zZW50OiBJZiB5b3UgaGF2ZSBnaXZlbiB5b3VyIGNvbnNlbnQgdG8gdGhlIHByb2Nlc3Npbmcgb2YNCiAgICAgICAgICAgICAgeW91ciBwZXJzb25hbCBpbmZvcm1hdGlvbiwgeW91IGhhdmUgdGhlIHJpZ2h0IHRvIHdpdGhkcmF3IHlvdXIgY29uc2VudCBhdCBhbnkgdGltZSwgd2l0aG91dCBhZmZlY3RpbmcgdGhlDQogICAgICAgICAgICAgIGxhd2Z1bG5lc3Mgb2YgcHJvY2Vzc2luZyBiYXNlZCBvbiB0aGUgY29uc2VudCBiZWZvcmUgdGhlIHdpdGhkcmF3YWwuPGJyIC8+44O7UmlnaHQgdG8gRGF0YSBQb3J0YWJpbGl0eTogWW91DQogICAgICAgICAgICAgIG1heSBoYXZlIHRoZSByaWdodCB0byByZWNlaXZlIHBlcnNvbmFsIGluZm9ybWF0aW9uIGNvbmNlcm5pbmcgeW91IGFuZCB3aGljaCB5b3UgaGF2ZSBwcm92aWRlZCB0byB1cywgaW4gYQ0KICAgICAgICAgICAgICBzdHJ1Y3R1cmVkLCBjb21tb25seSB1c2VkIGFuZCBtYWNoaW5lLXJlYWRhYmxlIGZvcm1hdCBvciB0byB0cmFuc21pdCB0aGlzIGRhdGEgdG8gYW5vdGhlciBjb250cm9sbGVyLjxiciAvPuODu1JpZ2h0DQogICAgICAgICAgICAgIHRvIE9iamVjdDogWW91IG1heSBoYXZlIHRoZSByaWdodCB0byBvYmplY3QgdG8gdGhlIHByb2Nlc3Npbmcgb2YgeW91ciBwZXJzb25hbCBpbmZvcm1hdGlvbiBhcyBmdXJ0aGVyDQogICAgICAgICAgICAgIHNwZWNpZmllZCBpbiB0aGlzIFByaXZhY3kgUG9saWN5LjxiciAvPuODu1JpZ2h0IG5vdCB0byBiZSBzdWJqZWN0IHRvIGF1dG9tYXRlZCBkZWNpc2lvbiBtYWtpbmcgYW5kDQogICAgICAgICAgICAgIHByb2ZpbGluZzogWW91IGhhdmUgdGhlIHJpZ2h0IG5vdCB0byBiZSBzdWJqZWN0IHRvIGEgZGVjaXNpb24gd2hlbiBpdCBpcyBiYXNlZCBvbiBhdXRvbWF0aWMgcHJvY2Vzc2luZywNCiAgICAgICAgICAgICAgaW5jbHVkaW5nIHByb2ZpbGluZywgaWYgaXQgcHJvZHVjZXMgYSBsZWdhbCBlZmZlY3Qgb3Igc2ltaWxhcmx5IHNpZ25pZmljYW50bHkgYWZmZWN0cyB5b3UsIHVubGVzcyBzdWNoDQogICAgICAgICAgICAgIHByb2ZpbGluZyBpcyBuZWNlc3NhcnkgZm9yIHRoZSBlbnRlcmluZyBpbnRvLCBvciB0aGUgcGVyZm9ybWFuY2Ugb2YsIGEgY29udHJhY3QgYmV0d2VlbiB5b3UgYW5kIHVzLjxiciAvPuODu1JpZ2h0DQogICAgICAgICAgICAgIHRvIExvZGdlIGEgQ29tcGxhaW50IHdpdGggU3VwZXJ2aXNvcnkgQXV0aG9yaXR5OiBZb3UgaGF2ZSB0aGUgcmlnaHQgdG8gbG9kZ2UgYSBjb21wbGFpbnQgd2l0aCB5b3VyDQogICAgICAgICAgICAgIHJlbGV2YW50IGRhdGEgcHJvdGVjdGlvbiBzdXBlcnZpc29yeSBhdXRob3JpdHkgbG9jYXRlZCBpbiB0aGUgRXVyb3BlYW4gVW5pb24uIElmIHlvdSBhcmUgbG9jYXRlZCBpbiB0aGUNCiAgICAgICAgICAgICAgRUVBLCBmdXJ0aGVyIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBjb250YWN0IHlvdXIgbG9jYWwgZGF0YSBwcm90ZWN0aW9uIGF1dGhvcml0eSBpcyBhdmFpbGFibGUgb24gdGhlDQogICAgICAgICAgICAgIDxhDQogICAgICAgICAgICAgICAgY2xhc3M9ImMtdGV4dExpbmsgLXJlZCINCiAgICAgICAgICAgICAgICBocmVmPSJodHRwOi8vZWMuZXVyb3BhLmV1L2p1c3RpY2UvZGF0YS1wcm90ZWN0aW9uL2JvZGllcy9hdXRob3JpdGllcy9pbmRleF9lbi5odG0iDQogICAgICAgICAgICAgICAgPndlYnNpdGUgb2YgdGhlIEV1cm9wZWFuIENvbW1pc3Npb248L2ENCiAgICAgICAgICAgICAgPi4gSWYgeW91IGFyZSBsb2NhdGVkIGluIHRoZSBVSyB0aGUgcmVndWxhdG9yeSBhdXRob3JpdHkgaXMgdGhlIEluZm9ybWF0aW9uIENvbW1pc3Npb25lcuKAmXMgT2ZmaWNlICjigJxJQ0\/igJ0pLg0KICAgICAgICAgICAgICBDb250YWN0IGRldGFpbHMgZm9yIHRoZSBJQ08gY2FuIGJlIGZvdW5kIG9uIGl0cyB3ZWJzaXRlIGF0DQogICAgICAgICAgICAgIDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Imh0dHBzOi8vaWNvLm9yZy51ayI+aHR0cHM6Ly9pY28ub3JnLnVrPC9hPi4NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+RC4gSWYgeW91IGZhaWwgdG8gcHJvdmlkZSB5b3VyIHBlcnNvbmFsIGRhdGE8L2g1Pg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICBXaGVyZSB3ZSBhcmUgcmVxdWlyZWQgYnkgbGF3IHRvIGNvbGxlY3QgeW91ciBwZXJzb25hbCBkYXRhLCBvciB3ZSBuZWVkIHRvIGNvbGxlY3QgeW91ciBwZXJzb25hbCBkYXRhIHVuZGVyDQogICAgICAgICAgICAgIHRoZSB0ZXJtcyBvZiBhIGNvbnRyYWN0IHdlIGhhdmUgd2l0aCB5b3UsIGFuZCB5b3UgZmFpbCB0byBwcm92aWRlIHRoYXQgcGVyc29uYWwgZGF0YSB3aGVuIHdlIHJlcXVlc3QgaXQsDQogICAgICAgICAgICAgIHdlIG1heSBub3QgYmUgYWJsZSB0byBwZXJmb3JtIHRoZSBjb250cmFjdCB3ZSBoYXZlIG9yIGFyZSB0cnlpbmcgdG8gZW50ZXIgaW50byB3aXRoIHlvdS4gVGhpcyBtYXkgYXBwbHkNCiAgICAgICAgICAgICAgd2hlcmUgeW91IGRvIG5vdCBwcm92aWRlIHRoZSBwZXJzb25hbCBkYXRhIHdlIG5lZWQgaW4gb3JkZXIgdG8gcHJvdmlkZSB0aGUgQXBwcyBvciB0byBwcm9jZXNzIGFuDQogICAgICAgICAgICAgIGFwcGxpY2F0aW9uIHRvIHJlZ2lzdGVyIGFuIGFjY291bnQuIEluIHRoZXNlIGNpcmN1bXN0YW5jZXMsIHdlIG1heSBoYXZlIHRvIGNhbmNlbCB5b3VyIGFwcGxpY2F0aW9uIG9yIHRoZQ0KICAgICAgICAgICAgICBwcm92aXNpb24gb2YgdGhlIHJlbGV2YW50IEFwcHMgdG8geW91LCBpbiB3aGljaCBjYXNlIHdlIHdpbGwgbm90aWZ5IHlvdS4NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICA8L2xpPg0KDQogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPg0KICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InNlYzExIj48aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjExLiBQcml2YWN5IFNlY3Rpb24gRm9yIFVzZXJzIEZyb20gdGhlIFUuUy48L2g0Pjwvc2VjdGlvbj4NCiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+QS4gQXBwbGljYXRpb248L2g1Pg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICBJZiB5b3UgcmVzaWRlIGluIENhbGlmb3JuaWEsIENvbG9yYWRvLCBDb25uZWN0aWN1dCwgRGVsYXdhcmUsIEluZGlhbmEsIElvd2EsIEtlbnR1Y2t5LCBNYXJ5bGFuZCwNCiAgICAgICAgICAgICAgTWlubmVzb3RhLCBNb250YW5hLCBOZWJyYXNrYSwgTmV2YWRhLCBOZXcgSGFtcHNoaXJlLCBOZXcgSmVyc2V5LCBPcmVnb24sIFJob2RlIElzbGFuZCwgVGVubmVzc2VlLCBUZXhhcywNCiAgICAgICAgICAgICAgVXRhaCwgVmVybW9udCwgVmlyZ2luaWEsIG9yIFdhc2hpbmd0b24sIHRoaXMgc2VjdGlvbiBhcHBsaWVzIHRvIHlvdS4NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgIDxoNSBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+Qi4gQXV0aG9yaXplZCBBZ2VudDwvaDU+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgIFlvdSBtYXkgZGVzaWduYXRlIGFuIGF1dGhvcml6ZWQgYWdlbnQgdG8gc3VibWl0IHJlcXVlc3RzIG9uIHlvdXIgYmVoYWxmIGJ5IGRlc2lnbmF0aW5nIHN1Y2ggYW4gYWdlbnQgaW4NCiAgICAgICAgICAgICAgd3JpdGluZy4gV2UgbWF5IHJlcXVpcmUgdGhlIGFnZW50IHRvIHByb3ZpZGUgdXMgd2l0aCBwcm9vZiB0aGF0IHlvdSBoYXZlIGF1dGhvcml6ZWQgdGhlIGFnZW50IHRvIG1ha2UNCiAgICAgICAgICAgICAgcmVxdWVzdHMgb24geW91ciBiZWhhbGYgcHJpb3IgdG8gYWNjZXB0aW5nIHJlcXVlc3RzIGZyb20gdGhlIGFnZW50Lg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPGg1IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5DLiBZb3VyIFJpZ2h0czwvaDU+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4NCiAgICAgICAgICAgICAg44O7UmlnaHQgdG8gQWNjZXNzOiBZb3UgbWF5IHJlcXVlc3QgYSBjb3B5IG9mIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gdGhhdCB3ZSBoYXZlIGNvbGxlY3RlZCBhYm91dCB5b3UuDQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4NCiAgICAgICAgICAgICAg44O7UmlnaHQgdG8gRGVsZXRlOiBZb3UgbWF5IHJlcXVlc3QgdG8gZGVsZXRlIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24uDQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4NCiAgICAgICAgICAgICAg44O7UmlnaHQgdG8gQ29ycmVjdDogWW91IG1heSByZXF1ZXN0IHRvIHVwZGF0ZSBvciBjb3JyZWN0IHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24uDQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4NCiAgICAgICAgICAgICAg44O7UmlnaHQgdG8gT3B0IE91dDogWW91IG1heSBoYXZlIHRoZSByaWdodCB0byBvcHQgb3V0IG9mIHRhcmdldGVkIGFkdmVydGlzaW5nIGFuZCB0aGUgc2FsZSBvZiB5b3VyIGRhdGENCiAgICAgICAgICAgICAgKGFzIGRlZmluZWQgdW5kZXIgcmVsZXZhbnQgYW5kIGFwcGxpY2FibGUgbGF3KS4NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPg0KICAgICAgICAgICAgICDjg7tUbyBtYWtlIHN1Y2ggYSByZXF1ZXN0LCBwbGVhc2Ugc2VuZCBhbiBlbWFpbCB0byB0aGUgZW1haWwgYWRkcmVzcyBwcm92aWRlZCBpbiB0aGUg4oCcQ29udGFjdGluZyBDb2NvbmXigJ0NCiAgICAgICAgICAgICAgU2VjdGlvbiAxNCBiZWxvdyBvciB3cml0ZSB1cyBhdCB0aGUgYWRkcmVzcyBwcm92aWRlZCBpbiB0aGUg4oCcQ29udGFjdGluZyBDb2NvbmXigJ0gU2VjdGlvbiAxNCBiZWxvdy48YnIgLz4NCiAgICAgICAgICAgICAgV2Ugd2lsbCBub3QgZGlzY3JpbWluYXRlIGFnYWluc3QgeW91IGZvciBleGVyY2lzaW5nIGFueSBvZiB0aGVzZSByaWdodHMgYWJvdmUuDQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgICA8aDUgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkQuIENhbGlmb3JuaWEgUmVzaWRlbnRzPC9oNT4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgQXMgdGhlIHRlcm1zIGFyZSBkZWZpbmVkIHVuZGVyIHRoZSBDYWxpZm9ybmlhIFByaXZhY3kgUmlnaHRzIEFjdCwgd2UgZG8gbm90IGtub3dpbmdseSBzZWxsIG9yIHNoYXJlIHlvdXINCiAgICAgICAgICAgICAgcGVyc29uYWwgaW5mb3JtYXRpb24uIFdlIGRvIG5vdCBoYXZlIGFjdHVhbCBrbm93bGVkZ2UgdGhhdCB3ZSBzZWxsIG9yIHNoYXJlIHRoZSBwZXJzb25hbCBpbmZvcm1hdGlvbiBvZg0KICAgICAgICAgICAgICBtaW5vcnMgdW5kZXIgMTYuDQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgIElmIHlvdSBhcmUgYSByZXNpZGVudCBvZiBDYWxpZm9ybmlhLCB5b3UgaGF2ZSBzcGVjaWZpYyByaWdodHMgcmVnYXJkaW5nIG91ciBoYW5kbGluZyBvZiB5b3VyIOKAnHBlcnNvbmFsDQogICAgICAgICAgICAgIGluZm9ybWF0aW9u4oCdIGFzIHNwZWNpZmljYWxseSBkZWZpbmVkIGluIENhbGlmb3JuaWHigJlzIOKAnFNoaW5lIHRoZSBMaWdodOKAnSBsYXcgKENhbC4gQ2l2aWwgQ29kZSBTZWN0aW9uIMKnDQogICAgICAgICAgICAgIDE3OTguODMpLiBUaGlzIGxhdyBwZXJtaXRzIHVzZXJzIG9mIG91ciBBcHBzIHdobyBhcmUgQ2FsaWZvcm5pYSByZXNpZGVudHMgdG8gcmVxdWVzdCBjZXJ0YWluIGluZm9ybWF0aW9uDQogICAgICAgICAgICAgIHJlZ2FyZGluZyBvdXIgZGlzY2xvc3VyZSBvZiBwZXJzb25hbCBpbmZvcm1hdGlvbiB0byB0aGlyZCBwYXJ0aWVzIGZvciB0aGVpciBkaXJlY3QgbWFya2V0aW5nIHB1cnBvc2VzLiBUbw0KICAgICAgICAgICAgICBtYWtlIHN1Y2ggYSByZXF1ZXN0LCBwbGVhc2Ugc2VuZCBhbiBlbWFpbCB0byB0aGUgZW1haWwgYWRkcmVzcyBwcm92aWRlZCBpbiB0aGUg4oCcQ29udGFjdGluZyBDb2NvbmXigJ0gU2VjdGlvbg0KICAgICAgICAgICAgICAxNCBiZWxvdyBvciB3cml0ZSB1cyBhdCB0aGUgYWRkcmVzcyBwcm92aWRlZCBpbiB0aGUg4oCcQ29udGFjdGluZyBDb2NvbmXigJ0gU2VjdGlvbiAxNCBiZWxvdy48YnIgLz4NCiAgICAgICAgICAgICAgV2l0aGluIHRoaXJ0eSAoMzApIGRheXMgb2YgcmVjZWl2aW5nIHN1Y2ggYSByZXF1ZXN0LCB3ZSB3aWxsIHByb3ZpZGUgYSBsaXN0IG9mIHRoZSBjYXRlZ29yaWVzIG9mIHBlcnNvbmFsDQogICAgICAgICAgICAgIGluZm9ybWF0aW9uIGRpc2Nsb3NlZCB0byB0aGlyZCBwYXJ0aWVzIGZvciBzdWNoIHRoaXJkIHBhcnRpZXPigJkgZGlyZWN0IG1hcmtldGluZyBwdXJwb3NlcyBkdXJpbmcgdGhlDQogICAgICAgICAgICAgIGltbWVkaWF0ZWx5IHByZWNlZGluZyBjYWxlbmRhciB5ZWFyLCBhbG9uZyB3aXRoIHRoZSBuYW1lcyBhbmQgYWRkcmVzc2VzIG9mIHRoZXNlIHRoaXJkIHBhcnRpZXMuIEEgcmVxdWVzdA0KICAgICAgICAgICAgICBtYXkgYmUgbWFkZSBubyBtb3JlIHRoYW4gb25jZSBwZXIgY2FsZW5kYXIgeWVhciBhbmQgd2UgYXJlIG5vdCByZXF1aXJlZCB0byByZXNwb25kIHRvIHJlcXVlc3RzIG1hZGUgYnkNCiAgICAgICAgICAgICAgbWVhbnMgb3RoZXIgdGhhbiB0aHJvdWdoIHRoZSBlbWFpbCBhZGRyZXNzIGFuZCBtYWlsaW5nIGFkZHJlc3MgYWJvdmUuDQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgICA8aDUgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjwvaDU+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+PC9wPg0KICAgICAgICAgIDwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPg0KICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InNlYzEyIj48aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjEyLiBQcml2YWN5IHNlY3Rpb24gZm9yIHVzZXJzIGZyb20gdGhlIFJlcHVibGljIG9mIEtvcmVhPC9oND48L3NlY3Rpb24+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+DQogICAgICAgICAgICAgIFdlIHByb3ZpZGUgdGhlIEFwcHMgYW5kIHdlYiBzZXJ2aWNlcyBhcm91bmQgdGhlIHdvcmxkLiBJbiBhY2NvcmRhbmNlIHdpdGggdGhlIHByZWNlZGVudHMgaW4gdGhlIFJlcHVibGljDQogICAgICAgICAgICAgIG9mIEtvcmVhLCBwZXJzb25hbCBpbmZvcm1hdGlvbiBpbmNsdWRlcyB0aGUgdXNlciBJRCBhbmQgYWNjb3VudCBwYXNzd29yZCB5b3Ugc2V0IG9uIHRoZSBBcHBzLjxiciAvPg0KICAgICAgICAgICAgICA8YnIgLz4NCiAgICAgICAgICAgICAgU3Vic2lkaWFyaWVzIG9yIGFmZmlsaWF0ZWQgZW50aXRpZXMgb2YgQ29jb25lIE9ORSBjb3Jwb3JhdGlvbiBpbiB0aGUgUmVwdWJsaWMgb2YgS29yZWEgbWF5IHNoYXJlIHBlcnNvbmFsDQogICAgICAgICAgICAgIGluZm9ybWF0aW9uIHdpdGggb3VyIGFmZmlsaWF0ZXMgYW5kL29yIHRoaXJkIHBhcnRpZXMsIGluY2x1ZGluZyBlbnRpdGllcyBsb2NhdGVkIG91dHNpZGUgb2YgdGhlIFJlcHVibGljDQogICAgICAgICAgICAgIG9mIEtvcmVhLCBvbiBwcmlvciBub3RpY2UgZm9yIHRoZSBmb2xsb3dpbmcgcHVycG9zZXM6IDxiciAvPg0KICAgICAgICAgICAgICA8YnIgLz4NCiAgICAgICAgICAgICAg44O7VG8gc3VwcG9ydCB0aGUgb3BlcmF0aW9uIG9mIHRoZSBBcHBzOyBhbmQ8YnIgLz4NCiAgICAgICAgICAgICAg44O7VG8gc3VwcG9ydCB0aGUgY3VzdG9tZXIgc3VwcG9ydCBzZXJ2aWNlcy48YnIgLz4NCiAgICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICAgIFBlcnNvbmFsIGluZm9ybWF0aW9uIHRoYXQgc3Vic2lkaWFyaWVzIG9yIGFmZmlsaWF0ZWQgZW50aXRpZXMgb2YgQ29jb25lIE9ORSBjb3Jwb3JhdGlvbiBpbiB0aGUgUmVwdWJsaWMgb2YNCiAgICAgICAgICAgICAgS29yZWEgc2hhcmUgc2hhbGwgYmUgb3IgbWF5IGJlIHVzZWQsIHByb2Nlc3NlZCwgYW5kIHN0b3JlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHB1cnBvc2VzIGJlbG93LiBXZSBzaGFyZQ0KICAgICAgICAgICAgICBwZXJzb25hbCBpbmZvcm1hdGlvbiBhcyBmb2xsb3dzOg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYy1wcml2YWN5X19zY3JvbGxXcmFwIj4NCiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlNkNvbHVtbnMiPg0KICAgICAgICAgICAgICAgIDx0Ym9keT4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSAtYmdfZ3JheSI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkNvbXBhbnk8L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPk92ZXJzZWFzIENvdW50cnk8L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlBlcnNvbmFsIEluZm9ybWF0aW9uPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5EYXRlIGFuZCBNZXRob2Qgb2YgdHJhbnNmZXJyaW5nPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5QdXJwb3NlIG9mIHVzaW5nIHBlcnNvbmFsIGluZm9ybWF0aW9uPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIC1iZ19ncmF5IC10YWMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5QZXJpb2Qgb2YgcmV0ZW50aW9uIGFuZCB1c2U8L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPkNvY29uZSBPTkUgY29ycG9yYXRpb24gKHByaXZhY3lAY29jb25lLmNvLmpwKTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPkphcGFuPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgVXNlcm5hbWUsIGFjY291bnQgcGFzc3dvcmQsIElQIGFkZHJlc3MsIGluZm9ybWF0aW9uIHRvIGNoZWNrIGRvdWJsZSByZWdpc3RyYXRpb24NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+Q29tcGxldGlvbiBvZiByZWdpc3RyYXRpb24sIHZpYSBkZWRpY2F0ZWQgbmV0d29yazwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPk9wZXJhdGlvbiBvZiB0aGUgQXBwcywgcHJvdmlkaW5nIG90aGVyIHJlbGF0ZWQgc2VydmljZXM8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBVbnRpbCB0aGUgd2l0aGRyYXdhbCBvZiB1c2VycyBmcm9tIHRoZSBBcHBzIGFuZCB0ZXJtaW5hdGlvbiBvZiBwcm92aWRpbmcgdGhlIEFwcHMNCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gd2lkZSI+WmVuZGVzaywgSW5jLiAocHJpdmFjeUB6ZW5kZXNrLmNvbSk8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5Vbml0ZWQgU3RhdGVzPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgVXNlcm5hbWUsIGFjY291bnQgcGFzc3dvcmQsIElQIGFkZHJlc3MsIGluZm9ybWF0aW9uIHRvIGNoZWNrIGRvdWJsZSByZWdpc3RyYXRpb24NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgUmVhbC10aW1lIHRyYW5zbWlzc2lvbiB3aGVuIHVzZXJzIHVzZSB0aGUgQXBwcywgdmlhIGRlZGljYXRlZCBuZXR3b3JrDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPkNvbGxlY3Rpb24gb2YgdXNlciBpbnF1aXJpZXMgYW5kIG5vdGljZSBtYW5hZ2VtZW50PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgVW50aWwgdGhlIHdpdGhkcmF3YWwgb2YgdXNlcnMgZnJvbSB0aGUgQXBwcyBhbmQgdGVybWluYXRpb24gb2YgcHJvdmlkaW5nIHRoZSBBcHBzDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPkFtYXpvbiBXZWIgU2VydmljZSBJbmMuIChodHRwczovL2F3cy5hbWF6b24uY29tL3ByaXZhY3kvKTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlVuaXRlZCBTdGF0ZXM8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBVc2VybmFtZSwgYWNjb3VudCBwYXNzd29yZCwgZGF0ZSBvZiBiaXJ0aCwgbmFtZSwgZW1haWwgYWRkcmVzcywgY29va2llcywgSVAgYWRkcmVzcywgaW5mb3JtYXRpb24NCiAgICAgICAgICAgICAgICAgICAgICB0byBjaGVjayBkb3VibGUgcmVnaXN0cmF0aW9uLCBJbmZvcm1hdGlvbiBvbiBsZWdhbCByZXByZXNlbnRhdGl2ZSAobmFtZSwgZS1tYWlsIGFkZHJlc3MsDQogICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gdG8gY2hlY2sgZG91YmxlIHJlZ2lzdHJhdGlvbikNCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgUmVhbC10aW1lIHRyYW5zbWlzc2lvbiB3aGVuIHVzZXJzIHVzZSB0aGUgQXBwcywgdmlhIGRlZGljYXRlZCBuZXR3b3JrDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPk9wZXJhdGlvbiBvZiB0aGUgQXBwcywgcHJvdmlkaW5nIG90aGVyIHJlbGF0ZWQgc2VydmljZXM8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBVbnRpbCB0aGUgd2l0aGRyYXdhbCBvZiB1c2VycyBmcm9tIHRoZSBBcHBzIGFuZCB0ZXJtaW5hdGlvbiBvZiBwcm92aWRpbmcgdGhlIEFwcHMNCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gd2lkZSI+RmlyZWJhc2UgYnkgR29vZ2xlIExMQzwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPlVuaXRlZCBTdGF0ZXM8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBVc2VybmFtZSwgSVAgYWRkcmVzcywgZGV2aWNlIGluZm9ybWF0aW9uLCBhcHAgYWN0aXZpdHksIGNyYXNoIHJlcG9ydHMNCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgUmVhbC10aW1lIHRyYW5zbWlzc2lvbiB3aGVuIHVzZXJzIHVzZSB0aGUgQXBwcywgdmlhIGRlZGljYXRlZCBuZXR3b3JrDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIEFuYWx5dGljcywgcGVyZm9ybWFuY2UgdHJhY2tpbmcsIGNyYXNoIHJlcG9ydGluZywgYW5kIGFwcCBpbXByb3ZlbWVudA0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBVbnRpbCB0aGUgd2l0aGRyYXdhbCBvZiB1c2VycyBmcm9tIHRoZSBBcHBzIGFuZCB0ZXJtaW5hdGlvbiBvZiBwcm92aWRpbmcgdGhlIEFwcHMNCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gd2lkZSI+R29vZ2xlIFBsYXkgU2VydmljZXM8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5Vbml0ZWQgU3RhdGVzPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+RGV2aWNlIGlkZW50aWZpZXJzLCBhY2NvdW50IGluZm9ybWF0aW9uPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+UmVhbC10aW1lIHRyYW5zbWlzc2lvbiBkdXJpbmcgQXBwIHVzYWdlPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgQWNjb3VudCBhdXRoZW50aWNhdGlvbiwgaW4tYXBwIHB1cmNoYXNlcywgYW5kIHVzZXIgYWNjZXNzIG1hbmFnZW1lbnQNCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgVW50aWwgdGhlIHdpdGhkcmF3YWwgb2YgdXNlcnMgZnJvbSB0aGUgQXBwcyBhbmQgdGVybWluYXRpb24gb2YgcHJvdmlkaW5nIHRoZSBBcHBzDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPkFwcGxlIEdhbWUgQ2VudGVyPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+VW5pdGVkIFN0YXRlczwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPkdhbWUgcHJvZ3Jlc3MsIGFjY291bnQgaWRlbnRpZmllcnM8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5SZWFsLXRpbWUgdHJhbnNtaXNzaW9uIGR1cmluZyBBcHAgdXNhZ2U8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5Tb2NpYWwgZ2FtaW5nIGZlYXR1cmVzLCBhY2hpZXZlbWVudHMsIGFuZCBsZWFkZXJib2FyZCBhY2Nlc3M8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBVbnRpbCB0aGUgd2l0aGRyYXdhbCBvZiB1c2VycyBmcm9tIHRoZSBBcHBzIGFuZCB0ZXJtaW5hdGlvbiBvZiBwcm92aWRpbmcgdGhlIEFwcHMNCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gd2lkZSI+R2FtZSBBbmFseXRpY3M8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj5EZW5tYXJrPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+VXNlcm5hbWUsIElQIGFkZHJlc3MsIGluLWFwcCBiZWhhdmlvciBkYXRhPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+UmVhbC10aW1lIHRyYW5zbWlzc2lvbiBkdXJpbmcgQXBwIHVzYWdlPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgVXNlciBlbmdhZ2VtZW50IGFuYWx5c2lzLCBnYW1lIG9wdGltaXphdGlvbiwgYW5kIGV4cGVyaWVuY2UgaW1wcm92ZW1lbnQNCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgVW50aWwgdGhlIHdpdGhkcmF3YWwgb2YgdXNlcnMgZnJvbSB0aGUgQXBwcyBhbmQgdGVybWluYXRpb24gb2YgcHJvdmlkaW5nIHRoZSBBcHBzDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICA8L2xpPg0KDQogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPg0KICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InNlYzEzIj48aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjEzLiBQcml2YWN5IHNlY3Rpb24gZm9yIHVzZXJzIHBsYXlpbmcgRmFzaGlvbiBGYWJsZTogRHJlc3MgVXAgU3R5bGU8L2g0Pjwvc2VjdGlvbj4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij5JZiB5b3UgcGxheSBGYXNoaW9uIEZhYmxlOiBEcmVzcyBVcCBTdHlsZSwgdGhpcyBzZWN0aW9uIGFwcGxpZXMgdG8geW91LjwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5QZXJzb25hbCBJbmZvcm1hdGlvbiBXZSBDb2xsZWN0PC9wPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPg0KICAgICAgICAgICAgICBXZSBtYXkgY29sbGVjdCB0aGUgc2FtZSBwZXJzb25hbCBpbmZvcm1hdGlvbiBkZXRhaWxlZCBpbiBTZWN0aW9uIDEsIHdpdGggdGhlIGV4Y2x1c2lvbiBvZiBTZW5zb3J5IERhdGEuDQogICAgICAgICAgICA8L3A+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+SG93IHdlIGNvbGxlY3QgeW91ciBwZXJzb25hbCBpbmZvcm1hdGlvbjwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhlIG1ldGhvZHMgZGV0YWlsZWQgaW4gU2VjdGlvbiAxLCB3ZSBtYXkgY29sbGVjdCBwZXJzb25hbCBkYXRhIGFib3V0IHlvdSBmcm9tIHRoaXJkDQogICAgICAgICAgICAgIHBhcnRpZXMgYXMgZm9sbG93czoNCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIxZW0iPuODu0ZpcmViYXNlPC9wPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+44O7R29vZ2xlIFBsYXkgU2VydmljZXMgKEFuZHJvaWQpPC9wPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+44O7R2FtZSBDZW50ZXIgKGlPUyk8L3A+DQogICAgICAgICAgPC9saT4NCg0KICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4NCiAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzZWMxNCI+PGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIiBpZD0ic2VjdGlvbjE3Ij4xNC4gQ29udGFjdGluZyBDb2NvbmU8L2g0Pjwvc2VjdGlvbj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImMtcHJpdmFjeV9fc2Nyb2xsV3JhcCI+DQogICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iYy1wcml2YWN5X190YWJsZTJDb2x1bW5zIj4NCiAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkiPg0KICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMsIGlucXVpcmVzLCByZXF1ZXN0cywgY29tbWVudHMgb3IgY29tcGxhaW50cyBjb25jZXJuaW5nIHRoaXMgUHJpdmFjeQ0KICAgICAgICAgICAgICAgICAgICAgIFBvbGljeSBvciBvdXIgaW5mb3JtYXRpb24gcHJhY3RpY2VzLCBwbGVhc2UgY29udGFjdCB1cyBiZWxvdy48c3Bhbg0KICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiDQogICAgICAgICAgICAgICAgICAgICAgICA+WW91IGFyZSB1c2luZzo8L3NwYW4NCiAgICAgICAgICAgICAgICAgICAgICA+DQogICAgICAgICAgICAgICAgICAgIDwvdGg+DQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gLWJnX2dyYXkgLXRhYyI+DQogICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPkNvbnRhY3QgSW5mb3JtYXRpb246PC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L3RoPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSB3aWRlIj4NCiAgICAgICAgICAgICAgICAgICAgICBIZWxsbyBTd2VldCBEYXlzPGJyIC8+SGVsbG8gS2l0dHkgRHJlYW0gVmlsbGFnZSAoRW5nbGlzaCB2ZXJzaW9uKQ0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBDb2NvbmUgT05FIGNvcnBvcmF0aW9uPGJyIC8+PGJyIC8+RW1haWw6PGJyIC8+KGphKQ0KICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Im1haWx0bzpzdXBwb3J0QHN3ZWV0ZGF5cy56ZW5kZXNrLmNvbSINCiAgICAgICAgICAgICAgICAgICAgICAgID5zdXBwb3J0QHN3ZWV0ZGF5cy56ZW5kZXNrLmNvbTwvYQ0KICAgICAgICAgICAgICAgICAgICAgID48YnIgLz4oZW4pDQogICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImMtdGV4dExpbmsgLXJlZCIgaHJlZj0ibWFpbHRvOnN1cHBvcnRfZW5Ac3dlZXRkYXlzZ2wuemVuZGVzay5jb20iDQogICAgICAgICAgICAgICAgICAgICAgICA+c3VwcG9ydF9lbkBzd2VldGRheXNnbC56ZW5kZXNrLmNvbTwvYQ0KICAgICAgICAgICAgICAgICAgICAgID4NCiAgICAgICAgICAgICAgICAgICAgICA8YnIgLz48YnIgLz5BZGRyZXNzOiA0MEYsIE1pZHRvd24gVG93ZXIsIDktNy0xIEFrYXNha2EsIE1pbmF0by1rdSwgVG9reW8gMTA3LTYyNDAsIEphcGFuDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPkxpdmx5IElzbGFuZDwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIENvY29uZSBjb3Jwb3JhdGlvbjxiciAvPjxiciAvPkVtYWlsOg0KICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Im1haWx0bzpzdXBwb3J0QGxpdmx5LnplbmRlc2suY29tIj5zdXBwb3J0QGxpdmx5LnplbmRlc2suY29tPC9hDQogICAgICAgICAgICAgICAgICAgICAgPjxiciAvPjxiciAvPkFkZHJlc3M6IDMtMS0xOCBXYWthYmF5YXNoaSwgU2V0YWdheWEta3UsIFRva3lvIDE1NC0wMDIzLCBKYXBhbg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSB3aWRlIj5MaXZseSBJc2xhbmQgKEtvcmVhKTwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIENvY29uZSBjb3Jwb3JhdGlvbjxiciAvPjxiciAvPkVtYWlsOg0KICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Im1haWx0bzpsaXZseS1rb3Itc3VwcG9ydEBjb2NvbmUuY28uanAiDQogICAgICAgICAgICAgICAgICAgICAgICA+bGl2bHkta29yLXN1cHBvcnRAY29jb25lLmNvLmpwPC9hDQogICAgICAgICAgICAgICAgICAgICAgPjxiciAvPjxiciAvPkFkZHJlc3M6IDMtMS0xOCBXYWthYmF5YXNoaSwgU2V0YWdheWEta3UsIFRva3lvIDE1NC0wMDIzLCBKYXBhbg0KICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSB3aWRlIj5Qb2NrZXQgdHdpbjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIENvY29uZSBjb3Jwb3JhdGlvbjxiciAvPjxiciAvPkVtYWlsOg0KICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Im1haWx0bzpwb2NrZXR0d2luLXN1cHBvcnRAY29jb25lLmNvLmpwIg0KICAgICAgICAgICAgICAgICAgICAgICAgPnBvY2tldHR3aW4tc3VwcG9ydEBjb2NvbmUuY28uanA8L2ENCiAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+PGJyIC8+QWRkcmVzczogMy0xLTE4IFdha2FiYXlhc2hpLCBTZXRhZ2F5YS1rdSwgVG9reW8gMTU0LTAwMjMsIEphcGFuDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPlBvY2tldCBtaW5pPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgQ29jb25lIGNvcnBvcmF0aW9uPGJyIC8+PGJyIC8+RW1haWw6DQogICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImMtdGV4dExpbmsgLXJlZCIgaHJlZj0ibWFpbHRvOnBvbWlfc3VwcG9ydEBjb2NvbmUtbS5jb20iPnBvbWlfc3VwcG9ydEBjb2NvbmUtbS5jb208L2ENCiAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+PGJyIC8+QWRkcmVzczogMy0xLTE4IFdha2FiYXlhc2hpLCBTZXRhZ2F5YS1rdSwgVG9reW8gMTU0LTAwMjMsIEphcGFuDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPkFsdGVyRWdvIENpdHk8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBDb2NvbmUgWGVub24gSW5jLjxiciAvPjxiciAvPkVtYWlsOg0KICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Im1haWx0bzpzdXBwb3J0QGNlbnRlbm5pYWwtY2l0eS56ZW5kZXNrLmNvbSINCiAgICAgICAgICAgICAgICAgICAgICAgID5zdXBwb3J0QGNlbnRlbm5pYWwtY2l0eS56ZW5kZXNrLmNvbTwvYQ0KICAgICAgICAgICAgICAgICAgICAgID48YnIgLz48YnIgLz5BZGRyZXNzOiAxMTUgQnJvYWR3YXkgM3JkIEZsLiBSb29tIzE0NiwgTmV3IFlvcmssIE5ZIDEwMDA2LCBVU0ENCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gd2lkZSI+UHVyZW5pc3RhIE06IERyZXNzLXVwICYgQ2hhdDwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0iPg0KICAgICAgICAgICAgICAgICAgICAgIENvY29uZSBjb3Jwb3JhdGlvbjxiciAvPjxiciAvPkVtYWlsOg0KICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Im1haWx0bzpzdXBwb3J0QHB1cmVuaXN0YW0uY29tIj5zdXBwb3J0QHB1cmVuaXN0YW0uY29tPC9hDQogICAgICAgICAgICAgICAgICAgICAgPjxiciAvPjxiciAvPkFkZHJlc3M6IDMtMS0yIEhpZ2FzaGloaWUgSGFrYXRhLWt1LCBGdWt1b2thLXNoaSwgRnVrdW9rYS1rZW4gODEyLTAwMDcsIEphcGFuDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIHdpZGUiPlZJVklCVURTPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjLXByaXZhY3lfX3RhYmxlVGVybSI+DQogICAgICAgICAgICAgICAgICAgICAgQ29jb25lIGNvcnBvcmF0aW9uPGJyIC8+PGJyIC8+RW1haWw6DQogICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImMtdGV4dExpbmsgLXJlZCIgaHJlZj0ibWFpbHRvOnN1cHBvcnRAdml2aWJ1ZHMuY29tIj5zdXBwb3J0QHZpdmlidWRzLmNvbTwvYQ0KICAgICAgICAgICAgICAgICAgICAgID48YnIgLz48YnIgLz5BZGRyZXNzOiAzLTEtMTggV2FrYWJheWFzaGksIFNldGFnYXlhLWt1LCBUb2t5byAxNTQtMDAyMywgSmFwYW4NCiAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iYy1wcml2YWN5X190YWJsZVRlcm0gd2lkZSI+RmFzaGlvbiBGYWJsZTogRHJlc3MgVXAgU3R5bGU8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImMtcHJpdmFjeV9fdGFibGVUZXJtIj4NCiAgICAgICAgICAgICAgICAgICAgICBDb2NvbmUgRXVyb3BlIE\/DnDxiciAvPjxiciAvPkVtYWlsOg0KICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Im1haWx0bzpzdXBwb3J0X2V1QGNvY29uZS5jby5qcCI+c3VwcG9ydF9ldUBjb2NvbmUuY28uanA8L2ENCiAgICAgICAgICAgICAgICAgICAgICA+PGJyIC8+PGJyIC8+QWRkcmVzczogTWFha3JpIHRuIDI1LCBLZXNrbGlubmEgbGlubmFvc2EsIFRhbGxpbm4sIEhhcmp1IG1hYWtvbmQsIDEwMTQ1LCBFc3RvbmlhDQogICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICA8L2xpPg0KICAgICAgICAgIDxsaSBjbGFzcz0iYy1wcml2YWN5X19zdWJJdGVtIj4NCiAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzZWMxNSI+PGg0IGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj4xNS4gU3RhbmRhcmRzIEFnYWluc3QgQ2hpbGQgU2V4dWFsIEFidXNlIGFuZCBFeHBsb2l0YXRpb248L2g0Pjwvc2VjdGlvbj4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij4NCiAgICAgICAgICAgICAgQ29jb25lIGRvZXMgbm90IGFsbG93IHVzZXJzIHRvIGNyZWF0ZSBvciBwb3N0IGNvbnRlbnRzIG9yIGVuZ2FnZSBpbiBhY3Rpdml0aWVzIHRoYXQgc2V4dWFsbHkgZXhwbG9pdCwNCiAgICAgICAgICAgICAgYWJ1c2Ugb3IgZW5kYW5nZXIgY2hpbGRyZW4uIFdlIHJlcG9ydCBhbGwgaWRlbnRpZmllZCBpbnN0YW5jZXMgb2Ygc2V4dWFsIGV4cGxvaXRhdGlvbiwgYWJ1c2Ugb3INCiAgICAgICAgICAgICAgZW5kYW5nZXJtZW50IG9mIGEgbWlub3IgdG8gdGhlIGFwcHJvcHJpYXRlIHJlZ2lvbmFsIGF1dGhvcml0eS48YnIgLz4NCiAgICAgICAgICAgICAgQ29jb25lIGFsc28gcHJvaGliaXRzIHVzZXJzIGZyb20gcG9zdGluZyBvciBzaGFyaW5nIGFueSBwb3Jub2dyYXBoaWMgY29udGVudCBzdWNoIGFzIHBob3RvcywgdmlkZW9zLA0KICAgICAgICAgICAgICBpbGx1c3RyYXRpb25zLCBpbWFnZXMgYW5kIGNvbXB1dGVyLWdlbmVyYXRlZCBpbWFnZXJ5LCBpbmNsdWRpbmcgdGhvc2UgdGhhdCBkZXBpY3QgYSBtaW5vciBlbmdhZ2luZyBpbg0KICAgICAgICAgICAgICBzZXh1YWxseSBleHBsaWNpdCBjb25kdWN0LjxiciAvPg0KICAgICAgICAgICAgICBVc2VycyBhcmUgcHJvaGliaXRlZCBmcm9tIHBvc3RpbmcgY29udGVudCBvciBlbmdhZ2luZyBpbiBpbnRlcmFjdGlvbnMgb3IgYWN0aXZpdGllcyB0aGF0IGRlcGljdCwgZW5jb3VyYWdlDQogICAgICAgICAgICAgIG9yIHByb21vdGUgc2V4dWFsIGFidXNlIGFuZCBleHBsb2l0YXRpb24gb2YgY2hpbGRyZW4sIGluY2x1ZGluZyByZWFsIGh1bWFuIGNoaWxkcmVuIGFzIHdlbGwgYXMgbm9uLXJlYWwNCiAgICAgICAgICAgICAgZGVwaWN0aW9ucyBvZiBjaGlsZHJlbiBzdWNoIGFzIGF2YXRhcnMsIGNoYXJhY3RlcnMgb3Igb3RoZXIgZm9ybXMgb2YgYXJ0IG9yIEFJLWdlbmVyYXRlZCBjb250ZW50LjxiciAvPg0KICAgICAgICAgICAgICA8YnIgLz4NCiAgICAgICAgICAgICAgRXhhbXBsZXMgb2YgY2hpbGQgc2V4dWFsIGFidXNlIGFuZCBleHBsb2l0YXRpb24gdGhhdCBhcmUgcHJvaGliaXRlZCBpbmNsdWRlOjxiciAvPg0KICAgICAgICAgICAgICA8YnIgLz4NCiAgICAgICAgICAgICAg44O7SW5hcHByb3ByaWF0ZSBpbnRlcmFjdGlvbiB0YXJnZXRlZCBhdCBhIGNoaWxkIHN1Y2ggYXMgZ3JvcGluZyBvciBjYXJlc3NpbmcuPGJyIC8+DQogICAgICAgICAgICAgIOODu0NoaWxkIGdyb29taW5nLCBzdWNoIGFzIGJlZnJpZW5kaW5nIGEgY2hpbGQgb25saW5lIHRvIGZhY2lsaXRhdGUsIGVpdGhlciBvbmxpbmUgb3Igb2ZmbGluZSwgc2V4dWFsDQogICAgICAgICAgICAgIGNvbnRhY3QgYW5kL29yIGV4Y2hhbmdpbmcgc2V4dWFsIGltYWdlcnkgd2l0aCB0aGF0IGNoaWxkLjxiciAvPg0KICAgICAgICAgICAgICDjg7tTZXh1YWxpemF0aW9uIG9mIGEgbWlub3IsIHN1Y2ggYXMgaW1hZ2VyeSB0aGF0IGRlcGljdHMsIGVuY291cmFnZXMgb3IgcHJvbW90ZXMgdGhlIHNleHVhbCBhYnVzZSBvZg0KICAgICAgICAgICAgICBjaGlsZHJlbiBvciB0aGUgcG9ydHJheWFsIG9mIGNoaWxkcmVuIGluIGEgbWFubmVyIHRoYXQgY291bGQgcmVzdWx0IGluIHRoZSBzZXh1YWwgZXhwbG9pdGF0aW9uIG9mDQogICAgICAgICAgICAgIGNoaWxkcmVuLjxiciAvPg0KICAgICAgICAgICAgICDjg7tTZXh0b3J0aW9uLCBzdWNoIGFzIHRocmVhdGVuaW5nIG9yIGJsYWNrbWFpbGluZyBhIGNoaWxkIGJ5IHVzaW5nIHJlYWwgb3IgYWxsZWdlZCBhY2Nlc3MgdG8gYSBjaGlsZOKAmXMNCiAgICAgICAgICAgICAgaW50aW1hdGUgaW1hZ2VzLjxiciAvPg0KICAgICAgICAgICAgICDjg7tUcmFmZmlja2luZyBvZiBhIGNoaWxkLCBzdWNoIGFzIGFkdmVydGlzaW5nIG9yIHNvbGljaXRhdGlvbiBvZiBhIGNoaWxkIGZvciBjb21tZXJjaWFsIHNleHVhbA0KICAgICAgICAgICAgICBleHBsb2l0YXRpb24uPGJyIC8+DQogICAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgICBVc2VycyBhcmUgYWxzbyBwcm9oaWJpdGVkIGZyb20gcG9zdGluZyBjb250ZW50IG9yIGVuZ2FnaW5nIGluIGludGVyYWN0aW9ucyBvciBhY3Rpdml0aWVzIHRoYXQgZGVwaWN0LA0KICAgICAgICAgICAgICBlbmNvdXJhZ2Ugb3IgcHJvbW90ZSBleGNlc3NpdmUgdmlvbGVuY2UsIGJsb29kIGFuZCBnb3JlLCBoYXJtZnVsIGFuZCBkYW5nZXJvdXMgYWN0aXZpdGllcyBhcyB3ZWxsIGFzDQogICAgICAgICAgICAgIG5lZ2F0aXZlIGJvZHkgb3Igc2VsZi1pbWFnZS48YnIgLz4NCiAgICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICAgIFVzZXJzIHNob3VsZCByZXBvcnQgYW55IGluYXBwcm9wcmlhdGUgY29udGVudCB0aGV5IGVuY291bnRlciB0aHJvdWdoDQogICAgICAgICAgICAgIDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Im1haWx0bzptbF9jaGlsZF9zYWZldHlAY29jb25lLmNvLmpwIj5tbF9jaGlsZF9zYWZldHlAY29jb25lLmNvLmpwPC9hPg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICAgIDwvbGk+DQogICAgICAgICAgPGxpIGNsYXNzPSJjLXByaXZhY3lfX3N1Ykl0ZW0iPg0KICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InNlYzE2Ij48aDQgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPjE2LiBDaGlsZHJlbuKAmXMgUHJpdmFjeSBQb2xpY3kgZm9yIFBldEthcnQ8L2g0Pjwvc2VjdGlvbj4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij5UaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB3ZSBjb2xsZWN0LCB1c2UsIGFuZCBzaGFyZSBwZXJzb25hbCBpbmZvcm1hdGlvbiBmcm9tIG9yIGFib3V0IGNoaWxkcmVuIHVuZGVyIHRoZSBhZ2Ugb2YgMTMgaW4gY29ubmVjdGlvbiB3aXRoIFBldEthcnQuPC9wPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPldoZW4gYSBjaGlsZCB1c2VzIFBldEthcnQsIHdlIG1heSBjb2xsZWN0IHRoZSBmb2xsb3dpbmcgY2F0ZWdvcmllcyBvZiBwZXJzb25hbCBpbmZvcm1hdGlvbjo8L3A+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj4NCiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPuODu0FwcHMgUHJvZmlsZSBkYXRhOjwvc3Bhbj4gWW91ciB1c2VybmFtZSwgeW91ciBhdmF0YXIsIGludGVyZXN0cyBhbmQgcHJlZmVyZW5jZXMuPC9wPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+PHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPuODu1RlY2huaWNhbCBhbmQgVXNhZ2UgRGF0YS9OZXR3b3JraW5nIEFjdGl2aXR5Ojwvc3Bhbj4gaW5jbHVkaW5nOjwvcD4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj7jg7tEZXRhaWxzIG9mIHlvdXIgdmlzaXRzIHRvIGFuZCBhY3Rpb25zIGluIFBldEthcnQsIGluY2x1ZGluZyB0cmFmZmljIGRhdGEsIGxvY2F0aW9uIGRhdGEsIGxvZ3MgYW5kIG90aGVyIGNvbW11bmljYXRpb24gZGF0YSwgdGhlIHJlc291cmNlcyB0aGF0IHlvdSBhY2Nlc3MsIGFuZCB5b3VyIHVzZSBvZiBQZXRLYXJ0LjwvcD4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj7jg7tJbmZvcm1hdGlvbiBhYm91dCB5b3VyIGRldmljZSBhbmQgaW50ZXJuZXQgY29ubmVjdGlvbiwgaW5jbHVkaW5nIGFzIGFwcGxpY2FibGUsIHlvdXIgSVAgYWRkcmVzcyB0aHJvdWdoIHdoaWNoIHlvdSBhY2Nlc3MgUGV0S2FydCwgb3BlcmF0aW5nIHN5c3RlbSwgYnJvd3NlciB0eXBlLCBtb2JpbGUgbmV0d29yayBpbmZvcm1hdGlvbiwgbG9jYXRpb24sIHRpbWUgem9uZSwgdGhlIHVuaXF1ZSBtb2JpbGUgZGV2aWNlIElEIG9yIHZpcnR1YWwgdW5pcXVlIGRldmljZSBpZGVudGlmaWVyIGZvciBhbnkgbW9iaWxlIGRldmljZSB1c2VkIHRvIGFjY2VzcyB5b3VyIGFjY291bnQuPC9wPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPuODu01ldGFkYXRhIGFuZCBvdGhlciBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggZmlsZXMgc3RvcmVkIG9uIHlvdXIgZGV2aWNlLjwvcD4NCiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj7jg7tJbmZvcm1hdGlvbiBhYm91dCB5b3VyIGludGVybmV0IGNvbm5lY3Rpb24sIHRoZSBkZXZpY2UgeW91IHVzZSB0byBhY2Nlc3MgUGV0S2FydCwgYW5kIHJlbGF0ZWQgdXNhZ2UgZGV0YWlscy48L3A+DQogICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMWVtIj48c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+44O7VHJhbnNhY3Rpb24gZGF0YTo8L3NwYW4+IERldGFpbHMgb2YgdHJhbnNhY3Rpb25zIHlvdSBjYXJyeSBvdXQgdGhyb3VnaCBQZXRLYXJ0IHVzaW5nIGluLWdhbWUgY3VycmVuY3kuPC9wPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjFlbSI+PHNwYW4gY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPuODu0F1dG9tYXRpYyBEYXRhLUNvbGxlY3Rpb24gVGVjaG5vbG9naWVzICA8L3NwYW4+PC9wPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij5XaGVuIHlvdSBhY2Nlc3MgYW5kIHVzZSBQZXRLYXJ0LCB3ZSB3aWxsIGNvbGxlY3QgcmVzZXR0YWJsZSBkZXZpY2UgaWRlbnRpZmllcnMuIFJlc2V0dGFibGUgZGV2aWNlIGlkZW50aWZpZXJzIGNhbiBiZSB1c2VkIGxpa2UgY29va2llcyBhbmQgYXJlIGZvdW5kIG9uIG1hbnkgbW9iaWxlIGRldmljZXMgYW5kIHRhYmxldHMgKGZvciBleGFtcGxlLCB0aGUg4oCcSWRlbnRpZmllciBmb3IgQWR2ZXJ0aXNlcnPigJ0gb24gQXBwbGUgaU9TIGRldmljZXMgYW5kIHRoZSDigJxHb29nbGUgQWR2ZXJ0aXNpbmcgSUTigJ0gb24gQW5kcm9pZCBkZXZpY2VzKS4gUmVzZXR0YWJsZSBkZXZpY2UgaWRlbnRpZmllcnMgYXJlIHVzZWQgdG8gbWFrZSBvbmxpbmUgYWR2ZXJ0aXNpbmcgbW9yZSByZWxldmFudCwgYW5kIGZvciBhbmFseXRpY3MgYW5kIG9wdGltaXphdGlvbiBwdXJwb3Nlcy48L3A+PGJyIC8+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPldlIGRvIG5vdCBrbm93aW5nbHkgY29sbGVjdCByZWFsIG5hbWVzLCBob21lIGFkZHJlc3NlcywgcGhvbmUgbnVtYmVyLCBwaG90b2dyYXBocywgb3IgYW55IG90aGVyIGRpcmVjdGx5IGlkZW50aWZ5aW5nIGluZm9ybWF0aW9uIGZyb20gY2hpbGRyZW4gYmV5b25kIHdoYXQgaXMgbGlzdGVkIGFib3ZlLiBXZSBjb2xsZWN0IG9ubHkgdGhlIG1pbmltdW0gaW5mb3JtYXRpb24gbmVjZXNzYXJ5IHRvIHByb3ZpZGUgdGhlIFNlcnZpY2UuPC9wPjxiciAvPg0KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij48c3BhbiBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCAtYm9sZCI+SG93IFdlIFVzZSBZb3VyIFBlcnNvbmFsIEluZm9ybWF0aW9uPC9zcGFuPjxiciAvPldlIHVzZSBwZXJzb25hbCBpbmZvcm1hdGlvbiB0aGF0IHdlIGNvbGxlY3QgYWJvdXQgeW91IG9yIHRoYXQgeW91IHByb3ZpZGUgdG8gdXMgZm9yIHRoZSBwdXJwb3NlcyBzZXQgb3V0IGluIHRoaXMgc2VjdGlvbi4gPC9wPg0KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj7jg7tUbyBwcm92aWRlIHlvdSB3aXRoIFBldEthcnQ7PC9wPg0KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj7jg7tUbyBwcm9jZXNzIHlvdXIgcmVnaXN0cmF0aW9uIGFuZCB0byBpZGVudGlmeSB5b3Ugd2hlbiB5b3UgbG9nIGludG8geW91ciBhY2NvdW50OzwvcD4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgYy1pbmRlbnQtLW1hcmtlcjJlbSI+44O7VG8gZGV0ZWN0LCBwcmV2ZW50LCBhbmQgcmVzcG9uZCB0byB1bmF1dGhvcml6ZWQgYWNjZXNzLCBhbmQgb3RoZXIgc2VjdXJpdHkgdGhyZWF0czs8L3A+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPuODu1RvIGlkZW50aWZ5IGFuZCByZXNvbHZlIHRlY2huaWNhbCBidWdzLCBjcmFzaGVzLCBhbmQgc2VydmljZSBkaXNydXB0aW9uczs8L3A+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPuODu1RvIG1lYXN1cmUgYWdncmVnYXRlIHBlcmZvcm1hbmNlIGluZGljYXRvcnMuIFRoaXMgYW5hbHlzaXMgaXMgdXNlZCBzb2xlbHkgZm9yIGludGVybmFsIGltcHJvdmVtZW50LjwvcD4NCiAgICAgICAgICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQgLWJvbGQiPlBhcmVudGFsIENvbnNlbnQ8L3A+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij5XZSB3aWxsIG5vdCBrbm93aW5nbHkgY29sbGVjdCBwZXJzb25hbCBpbmZvcm1hdGlvbiBmcm9tIGEgY2hpbGQgdW5kZXIgMTMgd2l0aG91dCBmaXJzdCBwcm92aWRpbmcgbm90aWNlIHRvIHRoZSBjaGlsZOKAmXMgcGFyZW50IG9yIGd1YXJkaWFuLCB3aGVyZSByZXF1aXJlZCwgYW5kIG9idGFpbmluZyB2ZXJpZmlhYmxlIHBhcmVudGFsIGNvbnNlbnQuPC9wPjxiciAvPg0KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+V2hlcmUgUGV0S2FydCByZXF1aXJlcyBhY2NvdW50IGNyZWF0aW9uIGZvciBhIGNoaWxkLCB3ZSB3aWxsOjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPuODu05vdGlmeSB0aGUgcGFyZW50IG9yIGd1YXJkaWFuIGJ5IGVtYWlsLCBleHBsYWluaW5nIHdoYXQgaW5mb3JtYXRpb24gd2UgY29sbGVjdCBhbmQgaG93IHdlIHVzZSBpdC48L3A+ICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPuODu1Byb3ZpZGUgdGhlIHBhcmVudCBvciBndWFyZGlhbiB3aXRoIHRoZSBhYmlsaXR5IHRvIGNvbnNlbnQgdG8gb3VyIGNvbGxlY3Rpb24gYW5kIHVzZSBvZiB0aGUgY2hpbGQncyBpbmZvcm1hdGlvbi48L3A+DQogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj7jg7tSZWZyYWluIGZyb20gY29sbGVjdGluZyBwZXJzb25hbCBpbmZvcm1hdGlvbiBpZiBjb25zZW50IGlzIG5vdCBwcm92aWRlZCB3aXRoaW4gYSByZWFzb25hYmxlIHRpbWUuPC9wPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+ICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5Ib3cgV2UgU2hhcmUgWW91ciBJbmZvcm1hdGlvbjwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPGJyIC8+V2UgbWF5IGRpc2Nsb3NlIHBlcnNvbmFsIGluZm9ybWF0aW9uIHRoYXQgd2UgY29sbGVjdCwgb3IgeW91IHByb3ZpZGUgYXMgZGVzY3JpYmVkIGluIHRoaXMgc2VjdGlvbjo8L3A+IA0KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+VG8gWmVuZGVzayBmb3IgaGFuZGxpbmcgdXNlciBpbnF1aXJpZXMgYW5kIHN1cHBvcnQ7PC9wPg0KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+VG8gQnJhemUgZm9yIG1hcmtldGluZyBhY3Rpdml0aWVzOzwvcD4NCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImMtcHJpdmFjeV9faXRlbVRleHQiPlRvIEZpcmViYXNlIChHb29nbGUpIGZvciBBcHAgYW5hbHl0aWNzLCBxdWFsaXR5IGltcHJvdmVtZW50OyBhbmQ8L3A+DQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij5UbyBHb29nbGUvQXBwbGUgZm9yIGxvZ2luIGF1dGhlbnRpY2F0aW9uLjwvcD4NCiAgICAgICAgICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5Ib3cgV2UgUHJvdGVjdCBDaGlsZHJlbuKAmXMgSW5mb3JtYXRpb248L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIFdlIHRha2UgdGhlIHNlY3VyaXR5IG9mIGNoaWxkcmVuJ3MgcGVyc29uYWwgaW5mb3JtYXRpb24gc2VyaW91c2x5IGFuZCBpbXBsZW1lbnQgdGVjaG5pY2FsIGFuZCBvcmdhbml6YXRpb25hbCBtZWFzdXJlcyB0byBwcm90ZWN0IGl0LiBJZiB5b3UgYmVsaWV2ZSB5b3VyIGNoaWxkJ3MgaW5mb3JtYXRpb24gaGFzIGJlZW4gY29tcHJvbWlzZWQsIHBsZWFzZSBjb250YWN0IHVzIGltbWVkaWF0ZWx5IGF0IDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Im1haWx0bzpwZXRrYXJ0X3N1cHBvcnRfZW4tdXNAY29jb25lLmNvLmpwIj5wZXRrYXJ0X3N1cHBvcnRfZW4tdXNAY29jb25lLmNvLmpwPC9hPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5EYXRhIFJldGVudGlvbjwvc3Bhbj48YnIgLz4NCiAgICAgICAgICAgICAgICAgICAgV2UgcmV0YWluIGNoaWxkcmVu4oCZcyBwZXJzb25hbCBpbmZvcm1hdGlvbiBvbmx5IGZvciBhcyBsb25nIGFzIGlzIG5lY2Vzc2FyeSB0byBmdWxmaWwgdGhlIHB1cnBvc2VzIGRlc2NyaWJlZCBpbiB0aGlzIHNlY3Rpb24sIG9yIGFzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3LjwvcD4NCiAgICAgICAgICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IC1ib2xkIj5QYXJlbnRzIFJpZ2h0cyBhbmQgQ29udHJvbHM8L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDxiciAvPlBhcmVudHMgYW5kIGd1YXJkaWFucyBoYXZlIHRoZSBmb2xsb3dpbmcgcmlnaHRzIHdpdGggcmVzcGVjdCB0byB0aGVpciBjaGlsZCdzIHBlcnNvbmFsIGluZm9ybWF0aW9uOjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPuODu1JpZ2h0IHRvIFJldmlldzogIFBhcmVudHMgYW5kIGd1YXJkaWFucyBtYXkgcmVxdWVzdCBhIGNvcHkgb2YgdGhlIHBlcnNvbmFsIGluZm9ybWF0aW9uIHdlIGhhdmUgY29sbGVjdGVkIGZyb20geW91ciBjaGlsZC48L3A+ICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPuODu1JpZ2h0IHRvIENvcnJlY3Q6ICBQYXJlbnRzIGFuZCBndWFyZGlhbnMgbWF5IHJlcXVlc3QgdGhhdCBpbmFjY3VyYXRlIGluZm9ybWF0aW9uIGJlIGNvcnJlY3RlZC48L3A+DQogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCBjLWluZGVudC0tbWFya2VyMmVtIj7jg7tSaWdodCB0byBEZWxldGU6ICBQYXJlbnRzIGFuZCBndWFyZGlhbnMgbWF5IHJlcXVlc3QgdGhhdCB3ZSBkZWxldGUgeW91ciBjaGlsZCdzIHBlcnNvbmFsIGluZm9ybWF0aW9uLiBQbGVhc2Ugbm90ZSB0aGF0IGRlbGV0aW9uIG1heSByZXN1bHQgaW4gdGhlIGNoaWxkJ3MgYWNjb3VudCBvciBjZXJ0YWluIGZlYXR1cmVzIGJlaW5nIHVuYXZhaWxhYmxlLjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0IGMtaW5kZW50LS1tYXJrZXIyZW0iPuODu1JpZ2h0IHRvIFdpdGhkcmF3IENvbnNlbnQ6ICBQYXJlbnRzIGFuZCBndWFyZGlhbnMgbWF5IHdpdGhkcmF3IGNvbnNlbnQgZm9yIG91ciBjb250aW51ZWQgY29sbGVjdGlvbiBhbmQgdXNlIG9mIHlvdXIgY2hpbGQncyBpbmZvcm1hdGlvbi48L3A+PGJyIC8+DQogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYy1wcml2YWN5X19pdGVtVGV4dCI+VG8gZXhlcmNpc2UgYW55IG9mIHRoZXNlIHJpZ2h0cywgcGxlYXNlIGNvbnRhY3QgdXM6IDwvcD48YnIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjLXByaXZhY3lfX2l0ZW1UZXh0Ij5Db2NvbmUgWGVub24gSW5jLg0KICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+RW1haWw6IDxhIGNsYXNzPSJjLXRleHRMaW5rIC1yZWQiIGhyZWY9Im1haWx0bzpwZXRrYXJ0X3N1cHBvcnRfZW4tdXNAY29jb25lLmNvLmpwIj5wZXRrYXJ0X3N1cHBvcnRfZW4tdXNAY29jb25lLmNvLmpwPC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+QWRkcmVzczogMTE1IEJyb2Fkd2F5LCAzcmQgRmwuIFJvb20jMTQ2LCBOZXcgWW9yaywgTlkgMTAwMDYsIFVTQSA8L3A+ICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICA8L2xpPg0KICAgICAgICA8L29sPg0KICAgICAgPC9saT4NCiAgICA8L29sPg0KICA8L2Rpdj4NCiAgPGRpdiBjbGFzcz0iYy1hcnRpY2xlX19saW5rYXJlYSI+DQogICAgPGEgaHJlZj0iL2VuLyIgY2xhc3M9ImMtYnV0dG9uLS10b25hbCBjLWJ1dHRvbi0tdG9uYWwtLWJhY2siPg0KICAgIDxzcGFuIGNsYXNzPSJjLWJ1dHRvbl9faG9sZSBjLWJ1dHRvbl9faG9sZS0tYmFjayI+DQogICAgICA8c3BhbiBjbGFzcz0iYy1idXR0b25fX2ljb25zIGMtYnV0dG9uX19pY29ucy0tYmFjayI+PC9zcGFuPg0KICAgIDwvc3Bhbj4NCiAgICA8c3BhbiBjbGFzcz0iYy1idXR0b25fX2xhYmVsIj5IT01FPC9zcGFuPg0KICAgIDwvYT4NCiAgPC9kaXY+ICANCjwvZGl2PntCedQaTANQAHtB4JuPqkAAAAL42fS4CAJCjOoEKQDS+vGmCAEAAA==\",\"updateId\":411170364}","footnotes":""},"class_list":["post-15522","page","type-page","status-publish","hentry"],"acf":[],"aioseo_notices":[],"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/PfVLWK-42m","_links":{"self":[{"href":"https:\/\/cocone-one.com\/en\/wp-json\/wp\/v2\/pages\/15522","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cocone-one.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cocone-one.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cocone-one.com\/en\/wp-json\/wp\/v2\/users\/135601793"}],"replies":[{"embeddable":true,"href":"https:\/\/cocone-one.com\/en\/wp-json\/wp\/v2\/comments?post=15522"}],"version-history":[{"count":17,"href":"https:\/\/cocone-one.com\/en\/wp-json\/wp\/v2\/pages\/15522\/revisions"}],"predecessor-version":[{"id":20382,"href":"https:\/\/cocone-one.com\/en\/wp-json\/wp\/v2\/pages\/15522\/revisions\/20382"}],"up":[{"embeddable":true,"href":"https:\/\/cocone-one.com\/en\/wp-json\/wp\/v2\/pages\/17997"}],"wp:attachment":[{"href":"https:\/\/cocone-one.com\/en\/wp-json\/wp\/v2\/media?parent=15522"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}