<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>74004</bug_id>
          
          <creation_ts>2011-12-07 09:12:28 -0800</creation_ts>
          <short_desc>Web Inspector: Implement CSS selector profiler</short_desc>
          <delta_ts>2011-12-29 09:03:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>74269</dependson>
    
    <dependson>74391</dependson>
    
    <dependson>74603</dependson>
    
    <dependson>75228</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>darin</cc>
    
    <cc>hyatt</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangax</cc>
    
    <cc>keishi</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>komoroske</cc>
    
    <cc>loislo</cc>
    
    <cc>macpherson</cc>
    
    <cc>mathias</cc>
    
    <cc>paulirish</cc>
    
    <cc>peter</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>rniwa</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>516670</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-07 09:12:28 -0800</bug_when>
    <thetext>Patch to follow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516676</commentid>
    <comment_count>1</comment_count>
      <attachid>118218</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-07 09:30:31 -0800</bug_when>
    <thetext>Created attachment 118218
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516679</commentid>
    <comment_count>2</comment_count>
      <attachid>118220</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-07 09:38:13 -0800</bug_when>
    <thetext>Created attachment 118220
[IMAGE] Screenshot of a CSS selector profile

- Percentages or absolute values can be displayed
- The profile can be sorted and searched by all columns, like CPU profiles (see &quot;&lt; 10 matches&quot; in the Search field)
- The profile name reflects the aggregate time of all selector matching during profiling
- The &quot;Start/stop CSS profiling&quot; button is far from perfect, I know :)

Please speak up if you have any questions, comments, concerns!..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516683</commentid>
    <comment_count>3</comment_count>
      <attachid>118221</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-07 09:45:40 -0800</bug_when>
    <thetext>Created attachment 118221
[PATCH] Fix Mac compilability</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516699</commentid>
    <comment_count>4</comment_count>
      <attachid>118221</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-12-07 10:07:53 -0800</bug_when>
    <thetext>Comment on attachment 118221
[PATCH] Fix Mac compilability

View in context: https://bugs.webkit.org/attachment.cgi?id=118221&amp;action=review

I don&apos;t quite understand what this patch is measuring. Could you explain what the measured times exactly mean?

&gt; Source/WebCore/css/CSSStyleSelector.cpp:712
&gt;      unsigned size = rules-&gt;size();
&gt;      for (unsigned i = 0; i &lt; size; ++i) {
&gt;          const RuleData&amp; ruleData = rules-&gt;at(i);
&gt; -        if (canUseFastReject &amp;&amp; m_checker.fastRejectSelector&lt;RuleData::maximumIdentifierCount&gt;(ruleData.descendantSelectorIdentifierHashes()))
&gt; +        CSSStyleRule* rule = ruleData.rule();
&gt; +        InspectorInstrumentationCookie cookie = InspectorInstrumentation::willMatchRule(document(), rule);
&gt; +        if (canUseFastReject &amp;&amp; m_checker.fastRejectSelector&lt;RuleData::maximumIdentifierCount&gt;(ruleData.descendantSelectorIdentifierHashes())) {
&gt; +            InspectorInstrumentation::didMatchRule(cookie, false);
&gt;              continue;
&gt; +        }

This loop is super hot and the change will likely regress performance. You would proabably need a templated version of the function so you won&apos;t affect the normal case at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516707</commentid>
    <comment_count>5</comment_count>
      <attachid>118221</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-07 10:16:01 -0800</bug_when>
    <thetext>Comment on attachment 118221
[PATCH] Fix Mac compilability

Before we introduce a new capability / perspective / functionality, it would be great to figure out what it measures and whether it is useful to the end users. I can see selector matching taking single digit milliseconds. I know from the timeline panel that layout takes hundres of milliseconds or even seconds.

I don&apos;t think we should expose this type of profiling, but should rather figure out how to help developers to figure out why layout is so slow. I am putting r- here unless we figure out whether we need this type of profile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516904</commentid>
    <comment_count>6</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2011-12-07 13:57:37 -0800</bug_when>
    <thetext>FWIW, Opera is adding this to Dragonfly.

http://my.opera.com/dragonfly/blog/style-profiler-preview</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516930</commentid>
    <comment_count>7</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-12-07 14:35:50 -0800</bug_when>
    <thetext>@Pavel: In all the webkit profiling I&apos;ve done, CSS selector matching is the hottest code in the browser for page load. This profiling information looks like it would help web authors improve their CSS rules in ways that would significantly improve page load times.

Before I started working on webkit I did a lot of work on Google Wave&apos;s CSS - at that time having access to a tool like this would have made a huge difference to us. Back then I knew the general principles of what the browser was doing and roughly which selectors to optimize, but a tool like this would make that process much simpler and accessible to many more web developers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516946</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-07 15:19:19 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; FWIW, Opera is adding this to Dragonfly.
&gt; 
&gt; http://my.opera.com/dragonfly/blog/style-profiler-preview

That&apos;s why I asked Alexander to look into it originally.

(In reply to comment #7)
&gt; @Pavel: In all the webkit profiling I&apos;ve done, CSS selector matching is the hottest code in the browser for page load. This profiling information looks like it would help web authors improve their CSS rules in ways that would significantly improve page load times.
&gt; 
&gt; Before I started working on webkit I did a lot of work on Google Wave&apos;s CSS - at that time having access to a tool like this would have made a huge difference to us. Back then I knew the general principles of what the browser was doing and roughly which selectors to optimize, but a tool like this would make that process much simpler and accessible to many more web developers.

I am all for the useful tools, but as long as I see matching styles taking 10ms followed by a layout that takes 500ms I can&apos;t think of it as of useful tool. Either this profiler is broken or it exposes neglectable data. Could you suggest Alexander a site or use case that would end up with the numbers that are worth optimizing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516949</commentid>
    <comment_count>9</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-12-07 15:27:21 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; FWIW, Opera is adding this to Dragonfly.
&gt; 
&gt; http://my.opera.com/dragonfly/blog/style-profiler-preview

Based on that blog post the feature is mostly useful because some basic selector types in their engine are not particularly fast and need workarounds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516974</commentid>
    <comment_count>10</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-12-07 16:16:41 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; I am all for the useful tools, but as long as I see matching styles taking 10ms followed by a layout that takes 500ms I can&apos;t think of it as of useful tool. Either this profiler is broken or it exposes neglectable data. Could you suggest Alexander a site or use case that would end up with the numbers that are worth optimizing?

Where are you getting those numbers? It sounds like you&apos;re comparing matching a single rule to laying out the entire document. Even the simple page in the screenshot is showing over 100 ms, and I can see from the number of rules that it&apos;s not a particularly complex case.

I would suggest something like http://www.w3.org/TR/2011/WD-html5-20110405/Overview.html is a good large page with simple layout for testing.

Keep in mind that this kind of profiling is particularly useful even without even considering how many ms are spent. When optimizing it is very common to look at a selector and wonder how expensive it is - for example many developers just don&apos;t realize that doing &quot;.foo .bar div&quot; is particularly expensive, because they think about and read selectors left-to-right. They don&apos;t consider that this has the potential to match this every div in the document. Just showing them that these are the expensive selectors on the page is very useful. And these are costs that you can&apos;t really optimize out of the browser - it is trivial in CSS to generate selectors that are very expensive to handle in all browsers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517119</commentid>
    <comment_count>11</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-12-07 19:27:11 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; I am all for the useful tools, but as long as I see matching styles taking 10ms followed by a layout that takes 500ms I can&apos;t think of it as of useful tool. Either this profiler is broken or it exposes neglectable data. Could you suggest Alexander a site or use case that would end up with the numbers that are worth optimizing?
&gt; 
&gt; Where are you getting those numbers? It sounds like you&apos;re comparing matching a single rule to laying out the entire document. Even the simple page in the screenshot is showing over 100 ms, and I can see from the number of rules that it&apos;s not a particularly complex case.
&gt; 
&gt; I would suggest something like http://www.w3.org/TR/2011/WD-html5-20110405/Overview.html is a good large page with simple layout for testing.
&gt; 
&gt; Keep in mind that this kind of profiling is particularly useful even without even considering how many ms are spent. When optimizing it is very common to look at a selector and wonder how expensive it is - for example many developers just don&apos;t realize that doing &quot;.foo .bar div&quot; is particularly expensive, because they think about and read selectors left-to-right. They don&apos;t consider that this has the potential to match this every div in the document. Just showing them that these are the expensive selectors on the page is very useful. And these are costs that you can&apos;t really optimize out of the browser - it is trivial in CSS to generate selectors that are very expensive to handle in all browsers.

Apologies, the link should have been http://www.whatwg.org/specs/web-apps/current-work/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517298</commentid>
    <comment_count>12</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-12-08 04:15:44 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; I would suggest something like http://www.w3.org/TR/2011/WD-html5-20110405/Overview.html is a good large page with simple layout for testing.

The stylesheet of the HTML spec (whatwg version ) is fairly simple. On my MBP the current ToT WebKit spends ~550ms in selector matching (~5% of total CPU time) over a page load. This time is significant because the document has very large number of elements to style, not because any particularly slow features used on the stylesheet (only ~120ms is spent on the slow path for the most complex selectors). 

In others words, trying to optimize that page with tool like this would be waste of time.

&gt;When optimizing it is very common to look at a selector and wonder how expensive it is - for example many developers just don&apos;t realize that doing &quot;.foo .bar div&quot; is particularly expensive, because they think about and read selectors left-to-right. 

This is old information. WebKit has rather efficient implementation of simple descendant selectors like that (ever since http://trac.webkit.org/changeset/77740).

Generally if we find that some selector types are causing real world performance problems we are going to optimize them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517789</commentid>
    <comment_count>13</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-12-08 14:23:58 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; This is old information. WebKit has rather efficient implementation of simple descendant selectors like that (ever since http://trac.webkit.org/changeset/77740).
&gt; 
&gt; Generally if we find that some selector types are causing real world performance problems we are going to optimize them.

Are you claiming that it is no longer possible to create pathological selectors in CSS? Are you claiming that it is not possible for developers to improve the performance of their web pages by optimizing their CSS? Should the thousands of web devs out there that make a living doing this just give up?

Whether we have good or bad implementations of selector matching is a bad argument against providing information to developers. We can and should keep optimizing the browser, but we should also help developers make their content better by making browser behavior less of a black box.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517825</commentid>
    <comment_count>14</comment_count>
    <who name="">komoroske</who>
    <bug_when>2011-12-08 14:57:15 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; This is old information. WebKit has rather efficient implementation of simple descendant selectors like that (ever since http://trac.webkit.org/changeset/77740).
&gt; &gt; 
&gt; &gt; Generally if we find that some selector types are causing real world performance problems we are going to optimize them.
&gt; 
&gt; Are you claiming that it is no longer possible to create pathological selectors in CSS? Are you claiming that it is not possible for developers to improve the performance of their web pages by optimizing their CSS? Should the thousands of web devs out there that make a living doing this just give up?
&gt; 
&gt; Whether we have good or bad implementations of selector matching is a bad argument against providing information to developers. We can and should keep optimizing the browser, but we should also help developers make their content better by making browser behavior less of a black box.

I wanted to support Luke&apos;s position with an argument that more data is better based on a specific example.

The Google Spreadsheets engineering team is very skilled and they&apos;ve built one of the most advanced web apps in common usage.  At various times in its development they&apos;ve done deep investigations into the performance of various implementation strategies. It&apos;s a significant investment because it&apos;s hard to do correctly.

The result is that they come away with very good understanding of the performance characteristics of the web platform _at the moment they conduct the investigation_. Over time, however, as the web platform evolves underneath them what once was knowledge slowly becomes &quot;lore&quot; and finally ends up as &quot;superstitions.&quot;  Because it takes so much investment to do deep investigate performance characteristics, they rarely do it without some active need for more information.  We uncovered and dispelled a number of those superstitions when some WebKit folks sat down with them to brainstorm how to improve scrolling performance recently.

These superstitions, in my experience, are even more prevalent among the general population of web developers. Making the performance characteristics easier to understand would make web developers more likely to adapt to the changing conditions of the web platform instead of relying on old superstitions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517827</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-08 14:59:20 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; I wanted to support Luke&apos;s position with an argument that more data is better based on a specific example.

There&apos;s always a trade-off between exposing useful information vs. exposing too much and letting developers over-fit.

&gt; The result is that they come away with very good understanding of the performance characteristics of the web platform _at the moment they conduct the investigation_. Over time, however, as the web platform evolves underneath them what once was knowledge slowly becomes &quot;lore&quot; and finally ends up as &quot;superstitions.&quot;  Because it takes so much investment to do deep investigate performance characteristics, they rarely do it without some active need for more information.  We uncovered and dispelled a number of those superstitions when some WebKit folks sat down with them to brainstorm how to improve scrolling performance recently.

This sounds like a really strong argument for us to add this feature.

&gt; These superstitions, in my experience, are even more prevalent among the general population of web developers. Making the performance characteristics easier to understand would make web developers more likely to adapt to the changing conditions of the web platform instead of relying on old superstitions.

This sounds like a good goal in general. We want to avoid developers optimizing for old legacy behaviors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517851</commentid>
    <comment_count>16</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-12-08 15:36:30 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Are you claiming that it is no longer possible to create pathological selectors in CSS? Are you claiming that it is not possible for developers to improve the performance of their web pages by optimizing their CSS? Should the thousands of web devs out there that make a living doing this just give up?

No, I didn&apos;t say anything like that. I simply pointed out that the examples you cited would not have directly benefited from this kind of profiling with the current WebKit.

However....

(In reply to comment #14)
&gt; These superstitions, in my experience, are even more prevalent among the general population of web developers. Making the performance characteristics easier to understand would make web developers more likely to adapt to the changing conditions of the web platform instead of relying on old superstitions.

This seems like a reasonable argument (considering that such a superstition was even cited in this thread with some conviction).

I&apos;m still interested in hearing what exactly we should be measuring. Or maybe it doesn&apos;t really matter that much as something very rough would be sufficient for education purposes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518220</commentid>
    <comment_count>17</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-09 05:31:41 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 118221 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=118221&amp;action=review
&gt; 
&gt; I don&apos;t quite understand what this patch is measuring. Could you explain what the measured times exactly mean?

For each selector the &quot;Total&quot; time is the time spent by WebCore in the CSSStyleSelector::matchRulesForList() loop for this particular selector (multiple runs for the same selector are aggregated). I did not find any other code fragments that would 

&quot;Hits&quot; is the number of runs of the said loop for the particular selector (i.e. a match was attempted against DOM elements).

&quot;Matches&quot; is the number of times the particular selector was really applied to DOM elements, their style declarations taking effect on the element&apos;s computed style.

&gt; &gt; Source/WebCore/css/CSSStyleSelector.cpp:712
&gt; &gt;      unsigned size = rules-&gt;size();
&gt; &gt;      for (unsigned i = 0; i &lt; size; ++i) {
&gt; &gt;          const RuleData&amp; ruleData = rules-&gt;at(i);
&gt; &gt; -        if (canUseFastReject &amp;&amp;
...
&gt; &gt;              continue;
&gt; &gt; +        }
&gt; 
&gt; This loop is super hot and the change will likely regress performance. You would proabably need a templated version of the function so you won&apos;t affect the normal case at all.

OK, let&apos;s be number-driven :)

I ran 3 experiments: for the ToT, Profiler OFF, and Profiler ON environments. Experiment: seven 5-iteration page cycler runs in Chromium Linux (Release build), steps described in the Quickstart section of http://www.chromium.org/developers/testing/page-cyclers. The greatest and smallest values were not considered (thus, 5 effective results in each experiment), and we suppose a normal distribution here.

Here are the figures (each experiment totaled roughly 14900 selector hits using the definition above):

ToT: 1165.2 1166.4 1161 1162 1163.8
Average = 1163.68ms
StDev = 2.22

Profiler OFF: 1164.4 1167 1172.2 1165.8 1165.4
Average = 1166.96ms
StDev = 3.07

Profiler ON: 1177.4 1171.4 1172.4 1173.8 1173.4
Average = 1173.68ms
StDev = 2.28

The ToT and Profiler OFF averages are only 3.28, which is slightly above one sigma, so it looks like the difference is statistically insignificant.

Feel free to check the results and speak up if I did something wrong (it&apos;s been a while since I last did something statistics-related...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518221</commentid>
    <comment_count>18</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-09 05:32:32 -0800</bug_when>
    <thetext>&gt; The ToT and Profiler OFF averages are only 3.28, which is slightly above one sigma, so it looks like the difference is statistically insignificant.

...meaning &quot;The ToT and Profiler OFF averages are only 3.28 APART&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518223</commentid>
    <comment_count>19</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-12-09 05:45:45 -0800</bug_when>
    <thetext>Please also try PerformanceTests/Parser/html5-full-render.html.

For full analysis, please use a sampling profiler (like Instruments) over page load of something sufficiently complex (the full html5) and look at the sample counts in the function.

In light of the discussion above I don&apos;t think you want to count the ancestor identifier filter rejections (fastRejectSelector) anyway as those are very fast and don&apos;t have much impact to the overall performance picture. You probably only care about selectors that pass that test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518288</commentid>
    <comment_count>20</comment_count>
      <attachid>118586</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-09 09:11:10 -0800</bug_when>
    <thetext>Created attachment 118586
[PATCH] Instrumented applyMatchedDeclaration(), added PoC selectorText caching

Perhaps the m_hasCachedSelectorText flag should be moved up into CSSRule (and take 1 bit from m_sourceLine?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518290</commentid>
    <comment_count>21</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-12-09 09:16:57 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Created an attachment (id=118586) [details]
&gt; [PATCH] Instrumented applyMatchedDeclaration(), added PoC selectorText caching
&gt; 
&gt; Perhaps the m_hasCachedSelectorText flag should be moved up into CSSRule (and take 1 bit from m_sourceLine?)

Definitely!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518293</commentid>
    <comment_count>22</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-09 09:24:10 -0800</bug_when>
    <thetext>Could you split this change into the backend and front-end changes to ease the review? I&apos;m sure Antti will be more comfortable reviewing the changes to the CSS and instrumentation there, while I&apos;ll take care of the general inspector plumbings and the front-end parts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518305</commentid>
    <comment_count>23</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-09 09:46:43 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; ToT: 1165.2 1166.4 1161 1162 1163.8
&gt; Average = 1163.68ms
&gt; StDev = 2.22
&gt; 
&gt; Profiler OFF: 1164.4 1167 1172.2 1165.8 1165.4
&gt; Average = 1166.96ms
&gt; StDev = 3.07
&gt; 
&gt; Profiler ON: 1177.4 1171.4 1172.4 1173.8 1173.4
&gt; Average = 1173.68ms
&gt; StDev = 2.28

The sample size of 5 is way too small for this stat. to be meaningful. For a sample size of this magnitude, standard deviation is not so useful either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518309</commentid>
    <comment_count>24</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-12-09 09:57:44 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; Created an attachment (id=118586) [details] [details]
&gt; &gt; [PATCH] Instrumented applyMatchedDeclaration(), added PoC selectorText caching
&gt; &gt; 
&gt; &gt; Perhaps the m_hasCachedSelectorText flag should be moved up into CSSRule (and take 1 bit from m_sourceLine?)
&gt; 
&gt; Definitely!

It would be better to implement the cache under a separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518902</commentid>
    <comment_count>25</comment_count>
      <attachid>118586</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-11 09:43:48 -0800</bug_when>
    <thetext>Comment on attachment 118586
[PATCH] Instrumented applyMatchedDeclaration(), added PoC selectorText caching

Wrong patch? I can still see instrumentations, caching, changes to the inspector backend and the front-end in the same patch. Should be 4 separate bugs / patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527181</commentid>
    <comment_count>26</comment_count>
      <attachid>120545</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-26 03:44:23 -0800</bug_when>
    <thetext>Created attachment 120545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527198</commentid>
    <comment_count>27</comment_count>
      <attachid>120545</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-26 05:10:53 -0800</bug_when>
    <thetext>Comment on attachment 120545
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=120545&amp;action=review

&gt; Source/WebCore/inspector/front-end/CSSSelectorProfileView.js:206
&gt; +    performSearch: function(query, finishedCallback)

I think we should put generic search functionality into DataGrid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527695</commentid>
    <comment_count>28</comment_count>
      <attachid>120682</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-28 09:40:17 -0800</bug_when>
    <thetext>Created attachment 120682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527874</commentid>
    <comment_count>29</comment_count>
      <attachid>120730</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-29 03:57:17 -0800</bug_when>
    <thetext>Created attachment 120730
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527937</commentid>
    <comment_count>30</comment_count>
      <attachid>120730</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-29 08:26:07 -0800</bug_when>
    <thetext>Comment on attachment 120730
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=120730&amp;action=review

&gt; Source/WebCore/inspector/front-end/CSSSelectorProfileView.js:2
&gt; + * Copyright (C) 2008 Apple Inc. All Rights Reserved.

Isn&apos;t it a new code?

&gt; Source/WebCore/inspector/front-end/CSSSelectorProfileView.js:49
&gt; +

Extra blank lines.

&gt; Source/WebCore/inspector/front-end/CSSSelectorProfileView.js:137
&gt; +    refreshVisibleData: function()

Function naming is misleading here: refresh actually rebuilds the content, while refreshVisibleData is calling refresh on the data members.

&gt; Source/WebCore/inspector/front-end/CSSSelectorProfileView.js:280
&gt; +    setRecordingProfile: function(isProfiling)

What is this method used for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527942</commentid>
    <comment_count>31</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-29 08:35:15 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; (From update of attachment 120730 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=120730&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/CSSSelectorProfileView.js:2
&gt; &gt; + * Copyright (C) 2008 Apple Inc. All Rights Reserved.
&gt; 
&gt; Isn&apos;t it a new code?

Removing this line.

&gt; &gt; Source/WebCore/inspector/front-end/CSSSelectorProfileView.js:49
&gt; &gt; +
&gt; 
&gt; Extra blank lines.

Fixed.

&gt; &gt; Source/WebCore/inspector/front-end/CSSSelectorProfileView.js:137
&gt; &gt; +    refreshVisibleData: function()
&gt; 
&gt; Function naming is misleading here: refresh actually rebuilds the content, while refreshVisibleData is calling refresh on the data members.

Renaming refresh -&gt; rebuildGridItems, refreshVisibleData -&gt; refreshData

&gt; &gt; Source/WebCore/inspector/front-end/CSSSelectorProfileView.js:280
&gt; &gt; +    setRecordingProfile: function(isProfiling)
&gt; 
&gt; What is this method used for?

It&apos;s a callback invoked from ProfilesPanel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527946</commentid>
    <comment_count>32</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-29 09:03:08 -0800</bug_when>
    <thetext>Committed r103803: &lt;http://trac.webkit.org/changeset/103803&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118218</attachid>
            <date>2011-12-07 09:30:31 -0800</date>
            <delta_ts>2011-12-07 09:45:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74004-20111207213029.patch</filename>
            <type>text/plain</type>
            <size>78406</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmIyNjdiZmIxMTdkZTk0
MGNjMjE4MjljM2JiZTFiZWVkOTJhNDYwYy4uMzU1YzgxZTg0NmIzMDg2MjU1NGQ0MDkwMjAyN2Nk
NThjMGQ2Njg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAxMS0xMi0wNyAgQWxl
eGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IEltcGxlbWVudCBDU1Mgc2VsZWN0b3IgcHJvZmlsZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MDA0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBDU1Mg
c2VsZWN0b3IgcHJvZmlsZXIgbWVhc3VyZXMgdGhlIHRvdGFsIHRpbWUgcmVxdWlyZWQgdG8gbWF0
Y2ggYSBjZXJ0YWluIHNlbGVjdG9yCisgICAgICAgIGFnYWluc3QgRE9NIG5vZGVzLCBhcyB3ZWxs
IGFzIHRoZSBudW1iZXIgb2Ygc2VsZWN0b3IgbWF0Y2ggcnVucyAoY2hlY2tzIGlmIHRoZSBzZWxl
Y3RvciBpcyBhcHBsaWNhYmxlIHRvIHRoZSBub2RlKQorICAgICAgICBhbmQgYWN0dWFsIG1hdGNo
ZXMgKGkuZS4gdGhlIG51bWJlciBvZiBub2RlcyB3aGljaCBtYXRjaGVkIHRoZSBzZWxlY3Rvci4p
IE11bHRpcGxlIHNlbGVjdG9ycyB3aXRoIHRoZSBzYW1lCisgICAgICAgIHNlbGVjdG9yIHRleHQg
YXJlIGNvYWxlc2NlZCBpbnRvIG9uZSByZWNvcmQuIFRoZSBDU1NTdHlsZVNlbGVjdG9yOjptYXRj
aFJ1bGVzRm9yTGlzdCgpIG1ldGhvZCBpcyBpbnN0cnVtZW50ZWQuCisKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVTZWxlY3Rvcjo6bWF0Y2hSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1h
dGNoUnVsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRNYXRjaFJ1bGVJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxNYXRjaFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRNYXRjaFJ1bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxl
ckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OlNl
bGVjdG9yUHJvZmlsZTo6Y29tbWl0U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUHJvZmlsZXJBZ2VudDo6U2VsZWN0b3JQcm9maWxlOjp0b0luc3BlY3Rvck9iamVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpJbnNwZWN0b3JQcm9maWxl
ckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmFkZFNl
bGVjdG9yUHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50
OjpjcmVhdGVTZWxlY3RvclByb2ZpbGVIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZUhlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQcm9maWxlckFnZW50OjpyZW1vdmVQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVzZXRGcm9udGVuZFByb2ZpbGVzKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNsZWFyRnJvbnRlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVzdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpzdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ6OnRvZ2dsZVJlY29yZEJ1dHRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRPYmplY3RCeUhlYXBPYmplY3RJZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp3aWxsTWF0Y2hSdWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmRpZE1hdGNoUnVsZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmlkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclByb2ZpbGVyQWdlbnQ6OlJ1bGVNYXRjaGluZ1N0YXRzOjpSdWxlTWF0Y2hpbmdTdGF0
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpTZWxlY3RvclBy
b2ZpbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50
OjpTZWxlY3RvclByb2ZpbGU6On5TZWxlY3RvclByb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6U2VsZWN0b3JQcm9maWxlOjp0aXRsZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpTZWxlY3RvclByb2ZpbGU6OnVpZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpTZWxlY3RvclByb2Zp
bGU6OnRvdGFsTWF0Y2hpbmdUaW1lTXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6U2VsZWN0b3JQcm9maWxlOjpTZWxlY3RvclByb2ZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6aW5jcmVtZW50SWQpOgorICAgICAgICAq
IGluc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0NTU1NlbGVjdG9yUHJvZmlsZVZpZXcuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNTU1NlbGVjdG9yRGF0YUdyaWROb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
U1NTZWxlY3RvckRhdGFHcmlkTm9kZS5wcm90b3R5cGUuZ2V0IHJhd0RhdGEpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yRGF0YUdyaWROb2RlLnByb3RvdHlwZS5jcmVhdGVDZWxs
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb2ZpbGVD
YWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUu
Z2V0IHN0YXR1c0Jhckl0ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclBy
b2ZpbGVWaWV3LnByb3RvdHlwZS5nZXQgcHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuc2V0IHByb2ZpbGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLndpbGxIaWRlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZS5f
Y3JlYXRlUHJvZmlsZU5vZGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclBy
b2ZpbGVWaWV3LnByb3RvdHlwZS5yZWZyZXNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NT
ZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZS5yZWZyZXNoVmlzaWJsZURhdGEpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLnJlZnJlc2hT
aG93QXNQZXJjZW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxl
Vmlldy5wcm90b3R5cGUuc2VhcmNoQ2FuY2VsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNT
U1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLnBlcmZvcm1TZWFyY2gubWF0Y2hlc1F1ZXJ5
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlw
ZS5wZXJmb3JtU2VhcmNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2Zp
bGVWaWV3LnByb3RvdHlwZS5qdW1wVG9GaXJzdFNlYXJjaFJlc3VsdCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuanVtcFRvTGFzdFNlYXJj
aFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5w
cm90b3R5cGUuanVtcFRvTmV4dFNlYXJjaFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuanVtcFRvUHJldmlvdXNTZWFyY2hSZXN1
bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90
eXBlLnNob3dpbmdGaXJzdFNlYXJjaFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NT
U2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuc2hvd2luZ0xhc3RTZWFyY2hSZXN1bHQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLl9q
dW1wVG9TZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJv
ZmlsZVZpZXcucHJvdG90eXBlLl9zb3J0RGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NT
U2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuX3NvcnRQcm9maWxlLmdldCBzZWxlY3RvckNv
bXBhcmF0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcu
cHJvdG90eXBlLl9zb3J0UHJvZmlsZS50aW1lQ29tcGFyYXRvcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuX3NvcnRQcm9maWxlLmhpdHND
b21wYXJhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3
LnByb3RvdHlwZS5fc29ydFByb2ZpbGUubWF0Y2hlc0NvbXBhcmF0b3IpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLl9zb3J0UHJvZmlsZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5wcm90b3R5cGUuZ2V0IGJ1dHRv
blRvb2x0aXApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUu
cHJvdG90eXBlLmdldCBidXR0b25TdHlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2Vs
ZWN0b3JQcm9maWxlVHlwZS5wcm90b3R5cGUuYnV0dG9uQ2xpY2tlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5wcm90b3R5cGUuZ2V0IHdlbGNvbWVNZXNz
YWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLnByb3Rv
dHlwZS5pc1JlY29yZGluZ1Byb2ZpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVj
dG9yUHJvZmlsZVR5cGUucHJvdG90eXBlLnN0YXJ0UmVjb3JkaW5nUHJvZmlsZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5wcm90b3R5cGUuc3RvcFJlY29y
ZGluZ1Byb2ZpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5
cGUucHJvdG90eXBlLnNldFJlY29yZGluZ1Byb2ZpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUucHJvdG90eXBlLmNyZWF0ZVNpZGViYXJUcmVlRWxlbWVu
dEZvclByb2ZpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5
cGUucHJvdG90eXBlLmNyZWF0ZVZpZXcpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
SW1hZ2VzL3N0YXR1c2JhckJ1dHRvbkdseXBocy5wbmc6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9Qcm9maWxlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxl
VHlwZS5wcm90b3R5cGUuZ2V0IGJ1dHRvblRvb2x0aXApOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNQVVByb2ZpbGVUeXBlLnByb3RvdHlwZS5nZXQgYnV0dG9uU3R5bGUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLnByb3RvdHlwZS5idXR0b25DbGlja2VkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5wcm90b3R5cGUuc3RhcnRSZWNvcmRpbmdQ
cm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5wcm90b3R5cGUu
c3RvcFJlY29yZGluZ1Byb2ZpbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJv
ZmlsZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3Rv
dHlwZS5fYWRkUHJvZmlsZUhlYWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQ
YW5lbC5wcm90b3R5cGUuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGVGaWVsZE5hbWUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl9zZXRSZWNvcmRpbmdQ
cm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS50
YWtlSGVhcFNuYXBzaG90KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnBy
b3RvdHlwZS5fcmVwb3J0SGVhcFNuYXBzaG90UHJvZ3Jlc3MpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlByb2ZpbGVyRGlzcGF0Y2hlci5wcm90b3R5cGUuc2V0UmVjb3JkaW5nUHJvZmlsZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzczoKKyAgICAgICAgKC5yZWNvcmQtY3B1LXByb2Zp
bGUtc3RhdHVzLWJhci1pdGVtIC5nbHlwaCk6CisgICAgICAgICgucmVjb3JkLWNwdS1wcm9maWxl
LXN0YXR1cy1iYXItaXRlbS50b2dnbGVkLW9uIC5nbHlwaCk6CisgICAgICAgICgucmVjb3JkLWNz
cy1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSAuZ2x5cGgpOgorICAgICAgICAoLnJlY29yZC1jc3Mt
cHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0udG9nZ2xlZC1vbiAuZ2x5cGgpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6CisKIDIwMTEtMTItMDcgIEFuZHJlYXMg
S2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIE1pY3JvLW9wdGltaXplIFNjcm9s
bFZpZXc6OnZpc2libGVDb250ZW50UmVjdCgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGIzZmIxOGE2
ODM5ODQxYzFiMjRhOTIzN2E4ZjJjYzBmNjJlOWRkMjAuLjljOTUzYzZiMGY1NjViYWFlYTQ2NTky
MWU2YmU2Y2UwZmI2MzRjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYzMzgsNiArNjMzOCw3IEBA
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Db29raWVzVGFibGUuanMnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTQ29tcGxldGlvbnMuanMnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzJywKKyAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1NlbGVjdG9yUHJvZmlsZVZpZXcuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZS5qcycsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZVF1ZXJ5Vmlldy5qcycsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDIyNjRmYmI2YzAzNmMz
MDVhMjNiMzBlODAxMzBiZTdjNGQ2YTYzOGEuLjUwZTM5YzM5Y2I2OTlhNmM3OTNiYWM0NzA3Y2Ri
OTkzMjAxY2Q4NzkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCkBAIC02ODg2MSw2ICs2ODg2MSwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxDU1NTZWxl
Y3RvclByb2ZpbGVWaWV3LmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxDU1NTdHlsZU1vZGVsLmpzIgog
CQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
CmluZGV4IDgxMjNiNWFjOThlZDVjNGU1OTQ3M2I4Y2M5MDNhZjI4NDU1MmMyMmQuLmIzMTIzZDY4
YzJhNjEzMGU4M2I2MmRhYjBiYTRhZDVhYjEyN2IxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIVE1MUHJvZ3Jlc3NFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRB
cmVhRWxlbWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2lu
Y2x1ZGUgIktleWZyYW1lTGlzdC5oIgogI2luY2x1ZGUgIkxpbmtIYXNoLmgiCiAjaW5jbHVkZSAi
TG9jYWxlVG9TY3JpcHRNYXBwaW5nLmgiCkBAIC03MDMsMjMgKzcwNCwzNCBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6Om1hdGNoUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIHJ1
bGVzLCBpbnQmIGZpcgogICAgIHVuc2lnbmVkIHNpemUgPSBydWxlcy0+c2l6ZSgpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgY29uc3QgUnVsZURh
dGEmIHJ1bGVEYXRhID0gcnVsZXMtPmF0KGkpOwotICAgICAgICBpZiAoY2FuVXNlRmFzdFJlamVj
dCAmJiBtX2NoZWNrZXIuZmFzdFJlamVjdFNlbGVjdG9yPFJ1bGVEYXRhOjptYXhpbXVtSWRlbnRp
ZmllckNvdW50PihydWxlRGF0YS5kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzKCkp
KQorICAgICAgICBDU1NTdHlsZVJ1bGUqIHJ1bGUgPSBydWxlRGF0YS5ydWxlKCk7CisgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxNYXRjaFJ1bGUoZG9jdW1lbnQoKSwgcnVsZSk7CisgICAgICAgIGlmIChj
YW5Vc2VGYXN0UmVqZWN0ICYmIG1fY2hlY2tlci5mYXN0UmVqZWN0U2VsZWN0b3I8UnVsZURhdGE6
Om1heGltdW1JZGVudGlmaWVyQ291bnQ+KHJ1bGVEYXRhLmRlc2NlbmRhbnRTZWxlY3RvcklkZW50
aWZpZXJIYXNoZXMoKSkpIHsKKyAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkTWF0Y2hSdWxlKGNvb2tpZSwgZmFsc2UpOwogICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KICAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3IocnVsZURhdGEpKSB7Ci0gICAgICAgICAg
ICBpZiAoIW1hdGNoZXNJblRyZWVTY29wZShtX2VsZW1lbnQtPnRyZWVTY29wZSgpLCBtX2NoZWNr
ZXIuaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKCkpKQorICAgICAgICAgICAgaWYgKCFtYXRjaGVz
SW5UcmVlU2NvcGUobV9lbGVtZW50LT50cmVlU2NvcGUoKSwgbV9jaGVja2VyLmhhc1Vua25vd25Q
c2V1ZG9FbGVtZW50cygpKSkgeworICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkTWF0Y2hSdWxlKGNvb2tpZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gSWYgdGhlIHJ1bGUgaGFzIG5vIHBy
b3BlcnRpZXMgdG8gYXBwbHksIHRoZW4gaWdub3JlIGl0IGluIHRoZSBub24tZGVidWcgbW9kZS4K
LSAgICAgICAgICAgIENTU1N0eWxlUnVsZSogcnVsZSA9IHJ1bGVEYXRhLnJ1bGUoKTsKICAgICAg
ICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsID0gcnVsZS0+ZGVjbGFyYXRp
b24oKTsKLSAgICAgICAgICAgIGlmICghZGVjbCB8fCAoIWRlY2wtPmxlbmd0aCgpICYmICFpbmNs
dWRlRW1wdHlSdWxlcykpCisgICAgICAgICAgICBpZiAoIWRlY2wgfHwgKCFkZWNsLT5sZW5ndGgo
KSAmJiAhaW5jbHVkZUVtcHR5UnVsZXMpKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRNYXRjaFJ1bGUoY29va2llLCBmYWxzZSk7CiAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAobV9zYW1lT3JpZ2luT25seSAmJiAhbV9jaGVj
a2VyLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QocnVsZS0+YmFzZVVS
TCgpKSkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtX3NhbWVPcmlnaW5Pbmx5ICYm
ICFtX2NoZWNrZXIuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChydWxl
LT5iYXNlVVJMKCkpKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRNYXRjaFJ1bGUoY29va2llLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBtYXRjaGluZyBub3JtYWwg
cnVsZXMsIHNldCBhIHBzZXVkbyBiaXQgaWYKICAgICAgICAgICAgIC8vIHdlIHJlYWxseSBqdXN0
IG1hdGNoZWQgYSBwc2V1ZG8tZWxlbWVudC4KICAgICAgICAgICAgIGlmIChtX2R5bmFtaWNQc2V1
ZG8gIT0gTk9QU0VVRE8gJiYgbV9jaGVja2VyLnBzZXVkb1N0eWxlKCkgPT0gTk9QU0VVRE8pIHsK
LSAgICAgICAgICAgICAgICBpZiAobV9jaGVja2VyLmlzQ29sbGVjdGluZ1J1bGVzT25seSgpKQor
ICAgICAgICAgICAgICAgIGlmIChtX2NoZWNrZXIuaXNDb2xsZWN0aW5nUnVsZXNPbmx5KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNYXRjaFJ1
bGUoY29va2llLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAobV9keW5hbWljUHNldWRvIDwgRklSU1Rf
SU5URVJOQUxfUFNFVURPSUQpCiAgICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEhhc1Bz
ZXVkb1N0eWxlKG1fZHluYW1pY1BzZXVkbyk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNzMw
LDggKzc0MiwxMCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUnVsZXNGb3JMaXN0KGNv
bnN0IFZlY3RvcjxSdWxlRGF0YT4qIHJ1bGVzLCBpbnQmIGZpcgogCiAgICAgICAgICAgICAgICAg
Ly8gQWRkIHRoaXMgcnVsZSB0byBvdXIgbGlzdCBvZiBtYXRjaGVkIHJ1bGVzLgogICAgICAgICAg
ICAgICAgIGFkZE1hdGNoZWRSdWxlKCZydWxlRGF0YSk7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNYXRjaFJ1bGUoY29va2llLCB0cnVlKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1h
dGNoUnVsZShjb29raWUsIGZhbHNlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbgppbmRleCA1OTFiMmE1ZjJhOWU1YmM3MmU0MjYyYTBiMWE0MWFlOWUy
M2IyZTlmLi5lMTczZmExNDc5YzNiNTA3ZWUyMTI3MTA1MWY4ODczOGVjNDY5YzMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yMTMyLDEwICsyMTMyLDE2IEBA
CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZGlzYWJsZSIKICAgICAgICAgICAgIH0sCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIm5hbWUiOiAic3RhcnQiCisgICAgICAgICAgICAg
ICAgIm5hbWUiOiAic3RhcnQiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInByb2ZpbGVUeXBlIiwgInR5cGUiOiAic3RyaW5n
IiwgImRlc2NyaXB0aW9uIjogIlByb2ZpbGUgdHlwZSB0byBzdGFydCByZWNvcmRpbmcuIiB9Cisg
ICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAibmFtZSI6ICJzdG9wIgorICAgICAgICAgICAgICAgICJuYW1lIjogInN0b3AiLAor
ICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInByb2ZpbGVUeXBlIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlBy
b2ZpbGUgdHlwZSB0byBzdG9wIHJlY29yZGluZy4iIH0KKyAgICAgICAgICAgICAgICBdCiAgICAg
ICAgICAgICB9LAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogImdldFBy
b2ZpbGVIZWFkZXJzIiwKQEAgLTIyMDIsNiArMjIwOCw3IEBACiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgIm5hbWUiOiAic2V0UmVjb3JkaW5nUHJvZmlsZSIsCiAgICAgICAgICAgICAg
ICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJvZmls
ZVR5cGUiLCAidHlwZSI6ICJzdHJpbmciIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiaXNQcm9maWxpbmciLCAidHlwZSI6ICJib29sZWFuIiB9CiAgICAgICAgICAgICAgICAgXQog
ICAgICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggZDc4OTQyMmFhMjBjYTkzYmQ2ODg1YTlhMzQ2
OGEwNGU0NWFmYWVjOC4uYjcwNWU1MTc5ZGI0YTMyMGUyYzljMzY1ZTBiMGFhZjc4OGNjNGQwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAK
KyNpbmNsdWRlICJDU1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAj
aW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKQEAgLTQzMiw2ICs0
MzMsMjUgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjaGVkdWxlU3R5bGVS
ZWNhbGN1bGF0aW9uSW1wbChJbnN0cnVtZW50aW5nQWcKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+
ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oZG9jdW1lbnQpOwogfQogCitJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTWF0Y2hS
dWxlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBD
U1NTdHlsZVJ1bGUqIHJ1bGUpCit7CisgICAgaW50IHByb2ZpbGVyQWdlbnRJZCA9IDA7CisgICAg
aWYgKEluc3BlY3RvclByb2ZpbGVyQWdlbnQqIHByb2ZpbGVyQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLT5pbnNwZWN0b3JQcm9maWxlckFnZW50KCkpIHsKKyAgICAgICAgcHJvZmlsZXJBZ2Vu
dC0+d2lsbE1hdGNoUnVsZShydWxlKTsKKyAgICAgICAgcHJvZmlsZXJBZ2VudElkID0gcHJvZmls
ZXJBZ2VudC0+aWQoKTsKKyAgICB9CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZShpbnN0cnVtZW50aW5nQWdlbnRzLCBwcm9maWxlckFnZW50SWQpOworfQorCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTWF0Y2hSdWxlSW1wbChjb25zdCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSwgYm9vbCBtYXRjaGVkKQoreworICAgIGlm
ICghY29va2llLmZpcnN0KQorICAgICAgICByZXR1cm47CisgICAgSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudCogcHJvZmlsZXJBZ2VudCA9IGNvb2tpZS5maXJzdC0+aW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dCgpOworICAgIGlmIChwcm9maWxlckFnZW50ICYmIHByb2ZpbGVyQWdlbnQtPmlkKCkgPT0gY29v
a2llLnNlY29uZCkKKyAgICAgICAgcHJvZmlsZXJBZ2VudC0+ZGlkTWF0Y2hSdWxlKG1hdGNoZWQp
OworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YXBwbHlVc2VyQWdlbnRPdmVy
cmlkZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgU3RyaW5n
KiB1c2VyQWdlbnQpCiB7CiAgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNl
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKaW5kZXggYTFlODk5MjQ2YjRlNWVkNWYyMWIzMjQ1MWU4NjYxMmJhYTAyZTFlOS4uM2NjNTZm
ZjQ5MGJiZTgyNjc2Mzk2ZGRkYTMzODhkZTc2ODljZmZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtNDEsNiArNDEs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENTU1N0eWxlUnVsZTsKIGNsYXNz
IENoYXJhY3RlckRhdGE7CiBjbGFzcyBET01GaWxlU3lzdGVtOwogY2xhc3MgRE9NV2luZG93OwpA
QCAtMTE4LDYgKzExOSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIHdpbGxSZWNhbGN1bGF0ZVN0eWxlKERvY3VtZW50Kik7CiAgICAgc3RhdGlj
IHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbihE
b2N1bWVudCopOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2ls
bE1hdGNoUnVsZShEb2N1bWVudCosIGNvbnN0IENTU1N0eWxlUnVsZSopOworICAgIHN0YXRpYyB2
b2lkIGRpZE1hdGNoUnVsZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCBi
b29sIG1hdGNoZWQpOwogCiAgICAgc3RhdGljIHZvaWQgYXBwbHlVc2VyQWdlbnRPdmVycmlkZShG
cmFtZSosIFN0cmluZyopOwogICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kUmVxdWVzdChGcmFtZSos
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKQEAgLTI1OCw2
ICsyNjEsOCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgd2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAg
ICBzdGF0aWMgdm9pZCBkaWRSZWNhbGN1bGF0ZVN0eWxlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRTY2hlZHVsZVN0eWxlUmVj
YWxjdWxhdGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERvY3VtZW50Kik7CisgICAgc3Rh
dGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsTWF0Y2hSdWxlSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiwgY29uc3QgQ1NTU3R5bGVSdWxlKik7CisgICAgc3RhdGljIHZvaWQg
ZGlkTWF0Y2hSdWxlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCBi
b29sIG1hdGNoZWQpOwogCiAgICAgc3RhdGljIHZvaWQgYXBwbHlVc2VyQWdlbnRPdmVycmlkZUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFN0cmluZyopOwogICAgIHN0YXRpYyB2b2lkIHdpbGxT
ZW5kUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKQEAgLTcwOCw2ICs3MTMsMjUgQEAgaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlv
bihEb2N1bWVudCogZG8KICNlbmRpZgogfQogCitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1hdGNoUnVsZShEb2N1bWVu
dCogZG9jdW1lbnQsIGNvbnN0IENTU1N0eWxlUnVsZSogcnVsZSkKK3sKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SKQorICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUoKSk7CisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQor
ICAgICAgICByZXR1cm4gd2lsbE1hdGNoUnVsZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgcnVs
ZSk7CisjZW5kaWYKKyAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7
Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTWF0Y2hSdWxl
KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llLCBib29sIG1hdGNo
ZWQpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFModm9pZCgpKTsKKyAgICBpZiAoY29va2llLmZpcnN0KQorICAgICAgICBkaWRNYXRjaFJ1
bGVJbXBsKGNvb2tpZSwgbWF0Y2hlZCk7CisjZW5kaWYKK30KKwogaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjphcHBseVVzZXJBZ2VudE92ZXJyaWRlKEZyYW1lKiBmcmFtZSwg
U3RyaW5nKiB1c2VyQWdlbnQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAppbmRleCAy
MjI4MjIzMjRhMjk1MzY5NGRkZDg5Zjg2ZGIwYTZmZTgzOGRjMjI1Li5hZDNmN2ViY2RiYTZmYjI0
MWFhOGM2ZDY5MzU0ZTI2YTFkMDY3M2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAKICNp
ZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikKIAorI2lu
Y2x1ZGUgIkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgpA
QCAtNDQsNiArNDUsOCBAQAogI2luY2x1ZGUgIlNjcmlwdEhlYXBTbmFwc2hvdC5oIgogI2luY2x1
ZGUgIlNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgorCisjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKQEAgLTU0LDEzICs1Nyw0NCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgUHJvZmlsZXJBZ2VudFN0YXRlIHsKLXN0
YXRpYyBjb25zdCBjaGFyIHVzZXJJbml0aWF0ZWRQcm9maWxpbmdbXSA9ICJ1c2VySW5pdGlhdGVk
UHJvZmlsaW5nIjsKK3N0YXRpYyBjb25zdCBjaGFyIHVzZXJJbml0aWF0ZWRDUFVQcm9maWxpbmdb
XSA9ICJ1c2VySW5pdGlhdGVkQ1BVUHJvZmlsaW5nIjsKK3N0YXRpYyBjb25zdCBjaGFyIHVzZXJJ
bml0aWF0ZWRTZWxlY3RvclByb2ZpbGluZ1tdID0gInVzZXJJbml0aWF0ZWRTZWxlY3RvclByb2Zp
bGluZyI7CiBzdGF0aWMgY29uc3QgY2hhciBwcm9maWxlckVuYWJsZWRbXSA9ICJwcm9maWxlckVu
YWJsZWQiOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgVXNlckluaXRpYXRlZFByb2Zp
bGVOYW1lID0gIm9yZy53ZWJraXQucHJvZmlsZXMudXNlci1pbml0aWF0ZWQiOwogc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnN0IENQVVByb2ZpbGVUeXBlID0gIkNQVSI7CiBzdGF0aWMgY29uc3QgY2hh
ciogY29uc3QgSGVhcFByb2ZpbGVUeXBlID0gIkhFQVAiOworc3RhdGljIGNvbnN0IGNoYXIqIGNv
bnN0IFNlbGVjdG9yUHJvZmlsZVR5cGUgPSAiU0VMRUNUT1IiOworCisKK3ZvaWQgSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudDo6U2VsZWN0b3JQcm9maWxlOjpjb21taXRTZWxlY3Rvcihjb25zdCBTdHJp
bmcmIHNlbGVjdG9yVGV4dCwgZG91YmxlIG1hdGNoVGltZU1zLCBib29sIG1hdGNoZWQpCit7Cisg
ICAgbV90b3RhbE1hdGNoaW5nVGltZU1zICs9IG1hdGNoVGltZU1zOworICAgIHBhaXI8UnVsZU1h
dGNoaW5nU3RhdHNNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3J1bGVNYXRjaGluZ1N0
YXRzLmFkZChzZWxlY3RvclRleHQsIFJ1bGVNYXRjaGluZ1N0YXRzKG1hdGNoVGltZU1zLCAxLCBt
YXRjaGVkID8gMSA6IDApKTsKKyAgICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgcmVz
dWx0LmZpcnN0LT5zZWNvbmQudG90YWxUaW1lICs9IG1hdGNoVGltZU1zOworICAgICAgICByZXN1
bHQuZmlyc3QtPnNlY29uZC5oaXRzICs9IDE7CisgICAgICAgIGlmIChtYXRjaGVkKQorICAgICAg
ICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQubWF0Y2hlcyArPSAxOworICAgIH0KK30KKworUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OlNlbGVjdG9y
UHJvZmlsZTo6dG9JbnNwZWN0b3JPYmplY3QoKSBjb25zdAoreworICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgUmVmUHRy
PEluc3BlY3RvckFycmF5PiBkYXRhID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgIGZv
ciAoUnVsZU1hdGNoaW5nU3RhdHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ydWxlTWF0Y2hp
bmdTdGF0cy5iZWdpbigpOyBpdCAhPSBtX3J1bGVNYXRjaGluZ1N0YXRzLmVuZCgpOyArK2l0KSB7
CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHN0YXQgPSBJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpOworICAgICAgICBzdGF0LT5zZXRTdHJpbmcoInNlbGVjdG9yIiwgaXQtPmZpcnN0
KTsKKyAgICAgICAgc3RhdC0+c2V0TnVtYmVyKCJ0aW1lIiwgaXQtPnNlY29uZC50b3RhbFRpbWUp
OworICAgICAgICBzdGF0LT5zZXROdW1iZXIoImhpdHMiLCBpdC0+c2Vjb25kLmhpdHMpOworICAg
ICAgICBzdGF0LT5zZXROdW1iZXIoIm1hdGNoZXMiLCBpdC0+c2Vjb25kLm1hdGNoZXMpOworICAg
ICAgICBkYXRhLT5wdXNoT2JqZWN0KHN0YXQucmVsZWFzZSgpKTsKKyAgICB9CisgICAgcmVzdWx0
LT5zZXRBcnJheSgiZGF0YSIsIGRhdGEpOworICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwor
fQogCiBQYXNzT3duUHRyPEluc3BlY3RvclByb2ZpbGVyQWdlbnQ+IEluc3BlY3RvclByb2ZpbGVy
QWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCwgUGFnZSogaW5zcGVjdGVkUGFnZSwg
SW5zcGVjdG9yU3RhdGUqIGluc3BlY3RvclN0YXRlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGlu
amVjdGVkU2NyaXB0TWFuYWdlcikKIHsKQEAgLTczLDExICsxMDcsMTQgQEAgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW4KICAgICAsIG1faW5zcGVjdGVkUGFnZShpbnNwZWN0ZWRQYWdlKQogICAgICwg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9m
cm9udGVuZCgwKQorICAgICwgbV9pZCgxKQogICAgICwgbV9lbmFibGVkKGZhbHNlKQotICAgICwg
bV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZShmYWxzZSkKKyAgICAsIG1fcmVjb3JkaW5n
VXNlckluaXRpYXRlZENQVVByb2ZpbGUoZmFsc2UpCisgICAgLCBtX3JlY29yZGluZ1VzZXJJbml0
aWF0ZWRTZWxlY3RvclByb2ZpbGUoZmFsc2UpCiAgICAgLCBtX2N1cnJlbnRVc2VySW5pdGlhdGVk
UHJvZmlsZU51bWJlcigtMSkKICAgICAsIG1fbmV4dFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVy
KDEpCiAgICAgLCBtX25leHRVc2VySW5pdGlhdGVkSGVhcFNuYXBzaG90TnVtYmVyKDEpCisgICAg
LCBtX25leHRVc2VySW5pdGlhdGVkU2VsZWN0b3JQcm9maWxlTnVtYmVyKDEpCiB7CiAgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JQcm9maWxlckFnZW50KHRoaXMpOwogfQpA
QCAtOTYsNiArMTMzLDE0IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6YWRkUHJvZmls
ZShQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHBycFByb2ZpbGUsIHVuCiAgICAgYWRkUHJvZmls
ZUZpbmlzaGVkTWVzc2FnZVRvQ29uc29sZShwcm9maWxlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwp
OwogfQogCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmFkZFNlbGVjdG9yUHJvZmlsZShQ
YXNzUmVmUHRyPFNlbGVjdG9yUHJvZmlsZT4gcHJwUHJvZmlsZSwgdW5zaWduZWQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgUmVmUHRyPFNlbGVjdG9yUHJvZmls
ZT4gcHJvZmlsZSA9IHBycFByb2ZpbGU7CisgICAgbV9zZWxlY3RvclByb2ZpbGVzLmFkZChwcm9m
aWxlLT51aWQoKSwgcHJvZmlsZSk7CisgICAgaWYgKG1fZnJvbnRlbmQpCisgICAgICAgIG1fZnJv
bnRlbmQtPmFkZFByb2ZpbGVIZWFkZXIoY3JlYXRlU2VsZWN0b3JQcm9maWxlSGVhZGVyKCpwcm9m
aWxlKSk7Cit9CisKIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6YWRkUHJvZmlsZUZpbmlz
aGVkTWVzc2FnZVRvQ29uc29sZShQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHBycFByb2ZpbGUs
IHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewogICAgIGlm
ICghbV9mcm9udGVuZCkKQEAgLTEzNyw3ICsxODIsNiBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlU25hcHNob3RIZWFkZXIoY29uc3Qg
UwogICAgIHJldHVybiBoZWFkZXI7CiB9CiAKLQogdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50
OjpjYXVzZXNSZWNvbXBpbGF0aW9uKEVycm9yU3RyaW5nKiwgYm9vbCogcmVzdWx0KQogewogICAg
ICpyZXN1bHQgPSBTY3JpcHRQcm9maWxlcjo6Y2F1c2VzUmVjb21waWxhdGlvbigpOwpAQCAtMTUz
LDYgKzE5NywxNiBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6Omhhc0hlYXBQcm9maWxl
cihFcnJvclN0cmluZyosIGJvb2wqIHJlc3VsdCkKICAgICAqcmVzdWx0ID0gU2NyaXB0UHJvZmls
ZXI6Omhhc0hlYXBQcm9maWxlcigpOwogfQogCitQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlU2VsZWN0b3JQcm9maWxlSGVhZGVyKGNvbnN0
IFNlbGVjdG9yUHJvZmlsZSYgcHJvZmlsZSkKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBoZWFkZXIgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgIGhlYWRlci0+c2V0U3Ry
aW5nKCJ0aXRsZSIsIHByb2ZpbGUudGl0bGUoKSk7CisgICAgaGVhZGVyLT5zZXROdW1iZXIoInVp
ZCIsIHByb2ZpbGUudWlkKCkpOworICAgIGhlYWRlci0+c2V0U3RyaW5nKCJ0eXBlSWQiLCBTdHJp
bmcoU2VsZWN0b3JQcm9maWxlVHlwZSkpOworICAgIGhlYWRlci0+c2V0TnVtYmVyKCJ0b3RhbFRp
bWVNcyIsIHByb2ZpbGUudG90YWxNYXRjaGluZ1RpbWVNcygpKTsKKyAgICByZXR1cm4gaGVhZGVy
OworfQorCiB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyop
CiB7CiAgICAgaWYgKGVuYWJsZWQoKSkKQEAgLTIwMCw2ICsyNTQsOSBAQCB2b2lkIEluc3BlY3Rv
clByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVIZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPElu
c3BlY3RvckFycgogICAgIEhlYXBTbmFwc2hvdHNNYXA6Oml0ZXJhdG9yIHNuYXBzaG90c0VuZCA9
IG1fc25hcHNob3RzLmVuZCgpOwogICAgIGZvciAoSGVhcFNuYXBzaG90c01hcDo6aXRlcmF0b3Ig
aXQgPSBtX3NuYXBzaG90cy5iZWdpbigpOyBpdCAhPSBzbmFwc2hvdHNFbmQ7ICsraXQpCiAgICAg
ICAgICgqaGVhZGVycyktPnB1c2hPYmplY3QoY3JlYXRlU25hcHNob3RIZWFkZXIoKml0LT5zZWNv
bmQpKTsKKyAgICBTZWxlY3RvclByb2ZpbGVzTWFwOjppdGVyYXRvciBzZWxlY3RvclByb2ZpbGVz
RW5kID0gbV9zZWxlY3RvclByb2ZpbGVzLmVuZCgpOworICAgIGZvciAoU2VsZWN0b3JQcm9maWxl
c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NlbGVjdG9yUHJvZmlsZXMuYmVnaW4oKTsgaXQgIT0gc2Vs
ZWN0b3JQcm9maWxlc0VuZDsgKytpdCkKKyAgICAgICAgKCpoZWFkZXJzKS0+cHVzaE9iamVjdChj
cmVhdGVTZWxlY3RvclByb2ZpbGVIZWFkZXIoKml0LT5zZWNvbmQpKTsKIH0KIAogbmFtZXNwYWNl
IHsKQEAgLTIzNywyOCArMjk0LDM2IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0
UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgdW5zaWduCiAgICAgICAg
ICAgICAgICAgc25hcHNob3QtPndyaXRlSlNPTigmc3RyZWFtKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQorICAgIH0gZWxzZSBpZiAodHlwZSA9PSBTZWxlY3RvclByb2ZpbGVUeXBlKSB7Cisg
ICAgICAgIFNlbGVjdG9yUHJvZmlsZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zZWxlY3RvclByb2Zp
bGVzLmZpbmQodWlkKTsKKyAgICAgICAgaWYgKGl0ICE9IG1fc2VsZWN0b3JQcm9maWxlcy5lbmQo
KSkgeworICAgICAgICAgICAgUmVmUHRyPFNlbGVjdG9yUHJvZmlsZT4gcHJvZmlsZSA9IGl0LT5z
ZWNvbmQ7CisgICAgICAgICAgICAqcHJvZmlsZU9iamVjdCA9IHByb2ZpbGUtPnRvSW5zcGVjdG9y
T2JqZWN0KCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6cmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgdW5z
aWduZWQgdWlkKQogewotICAgIGlmICh0eXBlID09IENQVVByb2ZpbGVUeXBlKSB7Ci0gICAgICAg
IGlmIChtX3Byb2ZpbGVzLmNvbnRhaW5zKHVpZCkpCi0gICAgICAgICAgICBtX3Byb2ZpbGVzLnJl
bW92ZSh1aWQpOwotICAgIH0gZWxzZSBpZiAodHlwZSA9PSBIZWFwUHJvZmlsZVR5cGUpIHsKLSAg
ICAgICAgaWYgKG1fc25hcHNob3RzLmNvbnRhaW5zKHVpZCkpCi0gICAgICAgICAgICBtX3NuYXBz
aG90cy5yZW1vdmUodWlkKTsKLSAgICB9CisgICAgaWYgKHR5cGUgPT0gQ1BVUHJvZmlsZVR5cGUp
CisgICAgICAgIG1fcHJvZmlsZXMucmVtb3ZlKHVpZCk7CisgICAgZWxzZSBpZiAodHlwZSA9PSBI
ZWFwUHJvZmlsZVR5cGUpCisgICAgICAgIG1fc25hcHNob3RzLnJlbW92ZSh1aWQpOworICAgIGVs
c2UgaWYgKHR5cGUgPT0gU2VsZWN0b3JQcm9maWxlVHlwZSkKKyAgICAgICAgbV9zZWxlY3RvclBy
b2ZpbGVzLnJlbW92ZSh1aWQpOwogfQogCiB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJl
c2V0U3RhdGUoKQogewotICAgIHN0b3AoKTsKKyAgICBzdG9wKDAsIENQVVByb2ZpbGVUeXBlKTsK
KyAgICBzdG9wKDAsIFNlbGVjdG9yUHJvZmlsZVR5cGUpOwogICAgIG1fcHJvZmlsZXMuY2xlYXIo
KTsKICAgICBtX3NuYXBzaG90cy5jbGVhcigpOworICAgIG1fc2VsZWN0b3JQcm9maWxlcy5jbGVh
cigpOwogICAgIG1fY3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyID0gMTsKICAgICBt
X25leHRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlciA9IDE7CiAgICAgbV9uZXh0VXNlckluaXRp
YXRlZEhlYXBTbmFwc2hvdE51bWJlciA9IDE7CisgICAgbV9uZXh0VXNlckluaXRpYXRlZFNlbGVj
dG9yUHJvZmlsZU51bWJlciA9IDE7CiAgICAgcmVzZXRGcm9udGVuZFByb2ZpbGVzKCk7CiB9CiAK
QEAgLTI2Niw3ICszMzEsOCBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlc2V0RnJv
bnRlbmRQcm9maWxlcygpCiB7CiAgICAgaWYgKG1fZnJvbnRlbmQKICAgICAgICAgJiYgbV9wcm9m
aWxlcy5iZWdpbigpID09IG1fcHJvZmlsZXMuZW5kKCkKLSAgICAgICAgJiYgbV9zbmFwc2hvdHMu
YmVnaW4oKSA9PSBtX3NuYXBzaG90cy5lbmQoKSkKKyAgICAgICAgJiYgbV9zbmFwc2hvdHMuYmVn
aW4oKSA9PSBtX3NuYXBzaG90cy5lbmQoKQorICAgICAgICAmJiBtX3NlbGVjdG9yUHJvZmlsZXMu
YmVnaW4oKSA9PSBtX3NlbGVjdG9yUHJvZmlsZXMuZW5kKCkpCiAgICAgICAgIG1fZnJvbnRlbmQt
PnJlc2V0UHJvZmlsZXMoKTsKIH0KIApAQCAtMjc4LDcgKzM0NCw4IEBAIHZvaWQgSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQog
dm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjbGVhckZyb250ZW5kKCkKIHsKICAgICBtX2Zy
b250ZW5kID0gMDsKLSAgICBzdG9wKCk7CisgICAgc3RvcCgwLCBDUFVQcm9maWxlVHlwZSk7Cisg
ICAgc3RvcCgwLCBTZWxlY3RvclByb2ZpbGVUeXBlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQcm9m
aWxlckFnZW50OjpyZXN0b3JlKCkKQEAgLTI4OCw4ICszNTUsMTAgQEAgdm9pZCBJbnNwZWN0b3JQ
cm9maWxlckFnZW50OjpyZXN0b3JlKCkKIAogICAgIC8vIFJldmlzaXQgdGhpcy4KICAgICByZXNl
dEZyb250ZW5kUHJvZmlsZXMoKTsKLSAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihQcm9maWxl
ckFnZW50U3RhdGU6OnVzZXJJbml0aWF0ZWRQcm9maWxpbmcpKQotICAgICAgICBzdGFydCgpOwor
ICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKFByb2ZpbGVyQWdlbnRTdGF0ZTo6dXNlckluaXRp
YXRlZENQVVByb2ZpbGluZykpCisgICAgICAgIHN0YXJ0KDAsIENQVVByb2ZpbGVUeXBlKTsKKyAg
ICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihQcm9maWxlckFnZW50U3RhdGU6OnVzZXJJbml0aWF0
ZWRTZWxlY3RvclByb2ZpbGluZykpCisgICAgICAgIHN0YXJ0KDAsIFNlbGVjdG9yUHJvZmlsZVR5
cGUpOwogfQogCiB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlc3RvcmVFbmFibGVtZW50
KCkKQEAgLTMwMCw0NSArMzY5LDcyIEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVz
dG9yZUVuYWJsZW1lbnQoKQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50
OjpzdGFydChFcnJvclN0cmluZyopCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnN0YXJ0
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBwcm9maWxlVHlwZSkKIHsK
LSAgICBpZiAobV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGlmICghZW5hYmxlZCgpKSB7Ci0gICAgICAgIGVuYWJsZSh0cnVlKTsKLSAgICAgICAg
UGFnZVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5yZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygw
KTsKLSAgICB9Ci0gICAgbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSA9IHRydWU7Ci0g
ICAgU3RyaW5nIHRpdGxlID0gZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSh0cnVl
KTsKKyAgICBpZiAocHJvZmlsZVR5cGUgPT0gQ1BVUHJvZmlsZVR5cGUpIHsKKyAgICAgICAgaWYg
KG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZENQVVByb2ZpbGUpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZENQVVByb2ZpbGUgPSB0cnVlOworCisg
ICAgICAgIGlmICghZW5hYmxlZCgpKSB7CisgICAgICAgICAgICBlbmFibGUodHJ1ZSk7CisgICAg
ICAgICAgICBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnJlY29tcGlsZUFsbEpTRnVu
Y3Rpb25zKDApOworICAgICAgICB9CisgICAgICAgIFN0cmluZyB0aXRsZSA9IGdldEN1cnJlbnRV
c2VySW5pdGlhdGVkUHJvZmlsZU5hbWUodHJ1ZSk7CiAjaWYgVVNFKEpTQykKLSAgICBKU0M6OkV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSB0b0pTRE9NV2luZG93KG1faW5zcGVjdGVkUGFnZS0+bWFp
bkZyYW1lKCksIGRlYnVnZ2VyV29ybGQoKSktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgSlNDOjpF
eGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gdG9KU0RPTVdpbmRvdyhtX2luc3BlY3RlZFBhZ2UtPm1h
aW5GcmFtZSgpLCBkZWJ1Z2dlcldvcmxkKCkpLT5nbG9iYWxFeGVjKCk7CiAjZWxzZQotICAgIFNj
cmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IDA7CisgICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRT
dGF0ZSA9IDA7CiAjZW5kaWYKLSAgICBTY3JpcHRQcm9maWxlcjo6c3RhcnQoc2NyaXB0U3RhdGUs
IHRpdGxlKTsKLSAgICBhZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUodGl0bGUsIDAs
IFN0cmluZygpKTsKLSAgICB0b2dnbGVSZWNvcmRCdXR0b24odHJ1ZSk7Ci0gICAgbV9zdGF0ZS0+
c2V0Qm9vbGVhbihQcm9maWxlckFnZW50U3RhdGU6OnVzZXJJbml0aWF0ZWRQcm9maWxpbmcsIHRy
dWUpOworICAgICAgICBTY3JpcHRQcm9maWxlcjo6c3RhcnQoc2NyaXB0U3RhdGUsIHRpdGxlKTsK
KyAgICAgICAgYWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKHRpdGxlLCAwLCBlbXB0
eVN0cmluZygpKTsKKyAgICAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQcm9maWxlckFnZW50U3Rh
dGU6OnVzZXJJbml0aWF0ZWRDUFVQcm9maWxpbmcsIHRydWUpOworICAgIH0gZWxzZSBpZiAocHJv
ZmlsZVR5cGUgPT0gU2VsZWN0b3JQcm9maWxlVHlwZSkgeworICAgICAgICBpZiAobV9yZWNvcmRp
bmdVc2VySW5pdGlhdGVkU2VsZWN0b3JQcm9maWxlKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRTZWxlY3RvclByb2ZpbGUgPSB0cnVlOworICAg
ICAgICBTdHJpbmcgdGl0bGUgPSBtYWtlU3RyaW5nKFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSwg
Jy4nLCBTdHJpbmc6Om51bWJlcihtX25leHRVc2VySW5pdGlhdGVkU2VsZWN0b3JQcm9maWxlTnVt
YmVyKyspKTsKKyAgICAgICAgbV9jdXJyZW50U2VsZWN0b3JQcm9maWxlID0gU2VsZWN0b3JQcm9m
aWxlOjpjcmVhdGUodGl0bGUpOworICAgICAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFByb2ZpbGVy
QWdlbnRTdGF0ZTo6dXNlckluaXRpYXRlZFNlbGVjdG9yUHJvZmlsaW5nLCB0cnVlKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBpZiAoZXJyb3JTdHJpbmcpCisgICAgICAgICAgICAqZXJyb3JTdHJp
bmcgPSAiVW5rbm93biBwcm9maWxlIHR5cGUiOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IHRvZ2dsZVJlY29yZEJ1dHRvbihwcm9maWxlVHlwZSwgdHJ1ZSk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudDo6c3RvcChFcnJvclN0cmluZyopCit2b2lkIEluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OnN0b3AoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBy
b2ZpbGVUeXBlKQogewotICAgIGlmICghbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSkK
LSAgICAgICAgcmV0dXJuOwotICAgIG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGUgPSBm
YWxzZTsKLSAgICBTdHJpbmcgdGl0bGUgPSBnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVO
YW1lKCk7CisgICAgaWYgKHByb2ZpbGVUeXBlID09IENQVVByb2ZpbGVUeXBlKSB7CisgICAgICAg
IGlmICghbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkQ1BVUHJvZmlsZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkQ1BVUHJvZmlsZSA9IGZhbHNl
OwogI2lmIFVTRShKU0MpCi0gICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gdG9KU0RP
TVdpbmRvdyhtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLCBkZWJ1Z2dlcldvcmxkKCkpLT5n
bG9iYWxFeGVjKCk7CisgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IHRvSlNE
T01XaW5kb3cobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSwgZGVidWdnZXJXb3JsZCgpKS0+
Z2xvYmFsRXhlYygpOwogI2Vsc2UKLSAgICAvLyBVc2UgbnVsbCBzY3JpcHQgc3RhdGUgdG8gYXZv
aWQgZmlsdGVyaW5nIGJ5IGNvbnRleHQgc2VjdXJpdHkgdG9rZW4uCi0gICAgLy8gQWxsIGZ1bmN0
aW9ucyBmcm9tIGFsbCBpZnJhbWVzIHNob3VsZCBiZSB2aXNpYmxlIGZyb20gSW5zcGVjdG9yIFVJ
LgotICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IDA7CisgICAgICAgIC8vIFVzZSBudWxs
IHNjcmlwdCBzdGF0ZSB0byBhdm9pZCBmaWx0ZXJpbmcgYnkgY29udGV4dCBzZWN1cml0eSB0b2tl
bi4KKyAgICAgICAgLy8gQWxsIGZ1bmN0aW9ucyBmcm9tIGFsbCBpZnJhbWVzIHNob3VsZCBiZSB2
aXNpYmxlIGZyb20gSW5zcGVjdG9yIFVJLgorICAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3Rh
dGUgPSAwOwogI2VuZGlmCi0gICAgUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHByb2ZpbGUgPSBTY3Jp
cHRQcm9maWxlcjo6c3RvcChzY3JpcHRTdGF0ZSwgdGl0bGUpOwotICAgIGlmIChwcm9maWxlKQot
ICAgICAgICBhZGRQcm9maWxlKHByb2ZpbGUsIDAsIFN0cmluZygpKTsKLSAgICB0b2dnbGVSZWNv
cmRCdXR0b24oZmFsc2UpOwotICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oUHJvZmlsZXJBZ2VudFN0
YXRlOjp1c2VySW5pdGlhdGVkUHJvZmlsaW5nLCBmYWxzZSk7CisgICAgICAgIFN0cmluZyB0aXRs
ZSA9IGdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUoKTsKKyAgICAgICAgUmVmUHRy
PFNjcmlwdFByb2ZpbGU+IHByb2ZpbGUgPSBTY3JpcHRQcm9maWxlcjo6c3RvcChzY3JpcHRTdGF0
ZSwgdGl0bGUpOworICAgICAgICBpZiAocHJvZmlsZSkKKyAgICAgICAgICAgIGFkZFByb2ZpbGUo
cHJvZmlsZSwgMCwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIG1fc3RhdGUtPnNldEJvb2xlYW4o
UHJvZmlsZXJBZ2VudFN0YXRlOjp1c2VySW5pdGlhdGVkQ1BVUHJvZmlsaW5nLCBmYWxzZSk7Cisg
ICAgfSBlbHNlIGlmIChwcm9maWxlVHlwZSA9PSBTZWxlY3RvclByb2ZpbGVUeXBlKSB7CisgICAg
ICAgIGlmICghbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkU2VsZWN0b3JQcm9maWxlKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRTZWxlY3RvclBy
b2ZpbGUgPSBmYWxzZTsKKyAgICAgICAgYWRkU2VsZWN0b3JQcm9maWxlKG1fY3VycmVudFNlbGVj
dG9yUHJvZmlsZSwgMCwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIG1fY3VycmVudFNlbGVjdG9y
UHJvZmlsZS5jbGVhcigpOworICAgICAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFByb2ZpbGVyQWdl
bnRTdGF0ZTo6dXNlckluaXRpYXRlZFNlbGVjdG9yUHJvZmlsaW5nLCBmYWxzZSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgaWYgKGVycm9yU3RyaW5nKQorICAgICAgICAgICAgKmVycm9yU3RyaW5n
ID0gIlVua25vd24gcHJvZmlsZSB0eXBlIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0
b2dnbGVSZWNvcmRCdXR0b24ocHJvZmlsZVR5cGUsIGZhbHNlKTsKIH0KIAogbmFtZXNwYWNlIHsK
QEAgLTM3OSwxMCArNDc1LDEwIEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6dGFrZUhl
YXBTbmFwc2hvdChFcnJvclN0cmluZyopCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OnRvZ2dsZVJlY29yZEJ1dHRvbihib29sIGlzUHJvZmlsaW5nKQordm9pZCBJbnNw
ZWN0b3JQcm9maWxlckFnZW50Ojp0b2dnbGVSZWNvcmRCdXR0b24oY29uc3QgU3RyaW5nJiBwcm9m
aWxlVHlwZSwgYm9vbCBpc1Byb2ZpbGluZykKIHsKICAgICBpZiAobV9mcm9udGVuZCkKLSAgICAg
ICAgbV9mcm9udGVuZC0+c2V0UmVjb3JkaW5nUHJvZmlsZShpc1Byb2ZpbGluZyk7CisgICAgICAg
IG1fZnJvbnRlbmQtPnNldFJlY29yZGluZ1Byb2ZpbGUocHJvZmlsZVR5cGUsIGlzUHJvZmlsaW5n
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRPYmplY3RCeUhlYXBPYmpl
Y3RJZChFcnJvclN0cmluZyogZXJyb3IsIGludCBpZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4q
IHJlc3VsdCkKQEAgLTM5MSw5ICs0ODcsMjYgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50
OjpnZXRPYmplY3RCeUhlYXBPYmplY3RJZChFcnJvclN0cmluZyogZXJyb3IsIGludCBpZCwKICAg
ICBpZiAoIWhlYXBPYmplY3QtPmlzTnVsbCgpKQogICAgICAgICBoZWFwT2JqZWN0LT5hc09iamVj
dChyZXN1bHQpOwogICAgIGVsc2UKLSAgICAgICAgKmVycm9yID0gIk9iamVjdCBpcyBub3QgYXZh
aWxhYmxlLiI7CisgICAgICAgICplcnJvciA9ICJPYmplY3QgaXMgbm90IGF2YWlsYWJsZSI7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6d2lsbE1hdGNoUnVsZShjb25zdCBDU1NT
dHlsZVJ1bGUqIHJ1bGUpCit7CisgICAgaWYgKG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZFNlbGVj
dG9yUHJvZmlsZSkgeworICAgICAgICBtX2N1cnJlbnRNYXRjaERhdGEuc2VsZWN0b3IgPSBydWxl
LT5zZWxlY3RvclRleHQoKTsKKyAgICAgICAgbV9jdXJyZW50TWF0Y2hEYXRhLnN0YXJ0VGltZSA9
IFdURjo6Y3VycmVudFRpbWVNUygpOworICAgIH0KIH0KIAordm9pZCBJbnNwZWN0b3JQcm9maWxl
ckFnZW50OjpkaWRNYXRjaFJ1bGUoYm9vbCBtYXRjaGVkKQoreworICAgIGlmIChtX3JlY29yZGlu
Z1VzZXJJbml0aWF0ZWRTZWxlY3RvclByb2ZpbGUpCisgICAgICAgIG1fY3VycmVudFNlbGVjdG9y
UHJvZmlsZS0+Y29tbWl0U2VsZWN0b3IobV9jdXJyZW50TWF0Y2hEYXRhLnNlbGVjdG9yLCBXVEY6
OmN1cnJlbnRUaW1lTVMoKSAtIG1fY3VycmVudE1hdGNoRGF0YS5zdGFydFRpbWUsIG1hdGNoZWQp
OworfQorCisvLyBzdGF0aWMKK2ludCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpTZWxlY3RvclBy
b2ZpbGU6OnNfY3VycmVudElkID0gMTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApp
bmRleCBkNDczMzkwYTM3MjE4ZWY3ODdmZjQ1NmQ1NTk2ZTNhYjI5MmUwYWEwLi5hYWJhMjgwNmEx
OWRjNmQwNzE0ZjA5MzVhZjY3NjZmMzY3NWNkODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAKIAog
I2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CkBAIC00Miw2ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ1NT
U3R5bGVSdWxlOwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zcGVjdG9y
QXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQ7CkBAIC03NCw4ICs3Niw4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBkaXNhYmxl
KEVycm9yU3RyaW5nKik7Ci0gICAgdm9pZCBzdGFydChFcnJvclN0cmluZyogPSAwKTsKLSAgICB2
b2lkIHN0b3AoRXJyb3JTdHJpbmcqID0gMCk7CisgICAgdm9pZCBzdGFydChFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc3RvcChFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgdm9pZCBkaXNhYmxlKCk7CiAgICAgdm9pZCBlbmFibGUoYm9vbCBza2lwUmVj
b21waWxlKTsKQEAgLTkwLDEzICs5Miw2OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJl
c3RvcmUoKTsKIAogICAgIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChFcnJvclN0cmluZyopOwotICAg
IHZvaWQgdG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wgaXNQcm9maWxpbmcpOworICAgIHZvaWQgdG9n
Z2xlUmVjb3JkQnV0dG9uKGNvbnN0IFN0cmluZyYsIGJvb2wgaXNQcm9maWxpbmcpOwogCiAgICAg
dm9pZCBnZXRPYmplY3RCeUhlYXBPYmplY3RJZChFcnJvclN0cmluZyosIGludCBpZCwgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCk7CiAKKyAgICBpbnQgaWQoKSBjb25zdCB7IHJldHVy
biBtX2lkOyB9CisgICAgdm9pZCB3aWxsTWF0Y2hSdWxlKGNvbnN0IENTU1N0eWxlUnVsZSopOwor
ICAgIHZvaWQgZGlkTWF0Y2hSdWxlKGJvb2wgbWF0Y2hlZCk7CisKIHByaXZhdGU6CisgICAgc3Ry
dWN0IFJ1bGVNYXRjaGluZ1N0YXRzIHsKKyAgICAgICAgUnVsZU1hdGNoaW5nU3RhdHMoKQorICAg
ICAgICAgICAgOiB0b3RhbFRpbWUoMC4wKSwgaGl0cygwKSwgbWF0Y2hlcygwKQorICAgICAgICB7
CisgICAgICAgIH0KKyAgICAgICAgUnVsZU1hdGNoaW5nU3RhdHMoZG91YmxlIHRvdGFsVGltZSwg
dW5zaWduZWQgaGl0cywgdW5zaWduZWQgbWF0Y2hlcykKKyAgICAgICAgICAgIDogdG90YWxUaW1l
KHRvdGFsVGltZSksIGhpdHMoaGl0cyksIG1hdGNoZXMobWF0Y2hlcykKKyAgICAgICAgeworICAg
ICAgICB9CisgICAgICAgIGRvdWJsZSB0b3RhbFRpbWU7CisgICAgICAgIHVuc2lnbmVkIGhpdHM7
CisgICAgICAgIHVuc2lnbmVkIG1hdGNoZXM7CisgICAgfTsKKworICAgIGNsYXNzIFNlbGVjdG9y
UHJvZmlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNlbGVjdG9yUHJvZmlsZT4geworICAgIHB1Ymxp
YzoKKyAgICAgICAgLy8gRklYTUU6IGhhbmRsZSBkaWZmZXJlbnQgcnVsZXMgd2l0aCB0aGUgc2Ft
ZSBzZWxlY3RvciBkaWZmZXJlbnRseT8KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VsZWN0
b3JQcm9maWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWxlY3RvclByb2ZpbGUoc19jdXJyZW50SWQrKywg
dGl0bGUpKTsKKyAgICAgICAgfQorICAgICAgICB2aXJ0dWFsIH5TZWxlY3RvclByb2ZpbGUoKQor
ICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCB7IHJl
dHVybiBtX3RpdGxlOyB9CisgICAgICAgIHVuc2lnbmVkIGludCB1aWQoKSBjb25zdCB7IHJldHVy
biBtX2lkOyB9CisgICAgICAgIGRvdWJsZSB0b3RhbE1hdGNoaW5nVGltZU1zKCkgY29uc3QgeyBy
ZXR1cm4gbV90b3RhbE1hdGNoaW5nVGltZU1zOyB9CisKKyAgICAgICAgdm9pZCBjb21taXRTZWxl
Y3Rvcihjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJvb2wpOworICAgICAgICBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gdG9JbnNwZWN0b3JPYmplY3QoKSBjb25zdDsKKworICAgIHByaXZhdGU6
CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJ1bGVNYXRjaGluZ1N0YXRzPiBSdWxl
TWF0Y2hpbmdTdGF0c01hcDsKKyAgICAgICAgU2VsZWN0b3JQcm9maWxlKGludCBpZCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkKKyAgICAgICAgICAgIDogbV9pZChpZCksIG1fdGl0bGUodGl0bGUpLCBt
X3RvdGFsTWF0Y2hpbmdUaW1lTXMoMC4wKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAg
ICBzdGF0aWMgaW50IHNfY3VycmVudElkOworICAgICAgICBjb25zdCBpbnQgbV9pZDsKKyAgICAg
ICAgY29uc3QgU3RyaW5nIG1fdGl0bGU7CisgICAgICAgIGRvdWJsZSBtX3RvdGFsTWF0Y2hpbmdU
aW1lTXM7CisgICAgICAgIFJ1bGVNYXRjaGluZ1N0YXRzTWFwIG1fcnVsZU1hdGNoaW5nU3RhdHM7
CisgICAgfTsKKworICAgIHN0cnVjdCBSdWxlTWF0Y2hEYXRhIHsKKyAgICAgICAgU3RyaW5nIHNl
bGVjdG9yOworICAgICAgICBkb3VibGUgc3RhcnRUaW1lOworICAgIH07CisKICAgICB0eXBlZGVm
IEhhc2hNYXA8dW5zaWduZWQgaW50LCBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gPiBQcm9maWxlc01h
cDsKICAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQgaW50LCBSZWZQdHI8U2NyaXB0SGVhcFNu
YXBzaG90PiA+IEhlYXBTbmFwc2hvdHNNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVk
IGludCwgUmVmUHRyPFNlbGVjdG9yUHJvZmlsZT4gPiBTZWxlY3RvclByb2ZpbGVzTWFwOwogCiAg
ICAgdm9pZCByZXNldEZyb250ZW5kUHJvZmlsZXMoKTsKICAgICB2b2lkIHJlc3RvcmVFbmFibGVt
ZW50KCk7CkBAIC0xMDQsMTggKzE2MiwyOCBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvclByb2Zp
bGVyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvckNvbnNvbGVBZ2VudCosIFBh
Z2UqLCBJbnNwZWN0b3JTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwogICAgIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVQcm9maWxlSGVhZGVyKGNvbnN0IFNjcmlwdFBy
b2ZpbGUmIHByb2ZpbGUpOwogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVT
bmFwc2hvdEhlYWRlcihjb25zdCBTY3JpcHRIZWFwU25hcHNob3QmIHNuYXBzaG90KTsKKyAgICBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlU2VsZWN0b3JQcm9maWxlSGVhZGVyKGNv
bnN0IFNlbGVjdG9yUHJvZmlsZSYpOworICAgIHZvaWQgYWRkU2VsZWN0b3JQcm9maWxlKFBhc3NS
ZWZQdHI8U2VsZWN0b3JQcm9maWxlPiBwcnBQcm9maWxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKKyAgICB2b2lkIGluY3JlbWVudElkKCkgeyArK21f
aWQ7IH0KIAogICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudCogbV9jb25zb2xlQWdlbnQ7CiAgICAg
UGFnZSogbV9pbnNwZWN0ZWRQYWdlOwogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmQ6OlByb2ZpbGVyKiBtX2Zy
b250ZW5kOworICAgIGludCBtX2lkOwogICAgIGJvb2wgbV9lbmFibGVkOwotICAgIGJvb2wgbV9y
ZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZTsKKyAgICBib29sIG1fcmVjb3JkaW5nVXNlcklu
aXRpYXRlZENQVVByb2ZpbGU7CisgICAgYm9vbCBtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRTZWxl
Y3RvclByb2ZpbGU7CiAgICAgaW50IG1fY3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVy
OwogICAgIHVuc2lnbmVkIG1fbmV4dFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyOwogICAgIHVu
c2lnbmVkIG1fbmV4dFVzZXJJbml0aWF0ZWRIZWFwU25hcHNob3ROdW1iZXI7CisgICAgdW5zaWdu
ZWQgbV9uZXh0VXNlckluaXRpYXRlZFNlbGVjdG9yUHJvZmlsZU51bWJlcjsKICAgICBQcm9maWxl
c01hcCBtX3Byb2ZpbGVzOwogICAgIEhlYXBTbmFwc2hvdHNNYXAgbV9zbmFwc2hvdHM7CisgICAg
U2VsZWN0b3JQcm9maWxlc01hcCBtX3NlbGVjdG9yUHJvZmlsZXM7CisgICAgUmVmUHRyPFNlbGVj
dG9yUHJvZmlsZT4gbV9jdXJyZW50U2VsZWN0b3JQcm9maWxlOworICAgIFJ1bGVNYXRjaERhdGEg
bV9jdXJyZW50TWF0Y2hEYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoCmluZGV4IGMxZDlhNDY4
YTJhZTdjOTZjNjk0MzIxOGIwODk5ODIxYzg3YmRiNTUuLmJhODc5ZTBlZDUxZTg2NzIyNTVhNWFk
MDg5NWYzMWIwNThhZjMyMzYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9j
b21waWxlLWZyb250LWVuZC5zaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGls
ZS1mcm9udC1lbmQuc2gKQEAgLTE5MSw2ICsxOTEsNyBAQCBqYXZhIC1qYXIgfi9jbG9zdXJlL2Nv
bXBpbGVyLmphciAtLXN1bW1hcnlfZGV0YWlsX2xldmVsIDMgLS1jb21waWxhdGlvbl9sZXZlbCBT
SQogIyBUbyBiZSBjb21waWxlZC4uLgogIyAKICMgW1Byb2ZpbGVyXQorIyBDU1NTZWxlY3RvclBy
b2ZpbGVWaWV3CiAjIEJvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZQogIyBEZXRhaWxlZEhlYXBz
aG90R3JpZE5vZGVzCiAjIERldGFpbGVkSGVhcHNob3RWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1NlbGVjdG9yUHJvZmlsZVZpZXcuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1NlbGVjdG9yUHJvZmlsZVZpZXcu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uN2M5YjBlM2M4NGNmM2RkN2JiNzJjODY3Mjg3ZWJjZDhlYzE5ZDk3Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NT
U2VsZWN0b3JQcm9maWxlVmlldy5qcwpAQCAtMCwwICsxLDU1MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yRGF0
YUdyaWROb2RlID0gZnVuY3Rpb24ocHJvZmlsZVZpZXcsIGRhdGEpCit7CisgICAgV2ViSW5zcGVj
dG9yLkRhdGFHcmlkTm9kZS5jYWxsKHRoaXMsIGRhdGEsIGZhbHNlKTsKKyAgICB0aGlzLl9wcm9m
aWxlVmlldyA9IHByb2ZpbGVWaWV3OworfQorCitXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JEYXRh
R3JpZE5vZGUucHJvdG90eXBlID0geworICAgIGdldCBkYXRhKCkKKyAgICB7CisgICAgICAgIHZh
ciBkYXRhID0ge307CisgICAgICAgIGRhdGEuc2VsZWN0b3IgPSB0aGlzLl9kYXRhLnNlbGVjdG9y
OworCisgICAgICAgIGlmICh0aGlzLl9wcm9maWxlVmlldy5zaG93VGltZUFzUGVyY2VudC5nZXQo
KSkKKyAgICAgICAgICAgIGRhdGEudGltZSA9IE51bWJlcih0aGlzLl9kYXRhLnRpbWVQZXJjZW50
KS50b0ZpeGVkKDEpICsgIiUiOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkYXRhLnRpbWUg
PSBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKHRoaXMuX2RhdGEudGltZSAvIDEwMDAsIHRydWUpOwor
CisgICAgICAgIGlmICh0aGlzLl9wcm9maWxlVmlldy5zaG93TWF0Y2hlc0FzUGVyY2VudC5nZXQo
KSkKKyAgICAgICAgICAgIGRhdGEubWF0Y2hlcyA9IE51bWJlcih0aGlzLl9kYXRhLm1hdGNoZXNQ
ZXJjZW50KS50b0ZpeGVkKDEpICsgIiUiOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkYXRh
Lm1hdGNoZXMgPSB0aGlzLl9kYXRhLm1hdGNoZXM7CisKKyAgICAgICAgZGF0YS5oaXRzID0gdGhp
cy5fZGF0YS5oaXRzOworICAgICAgICByZXR1cm4gZGF0YTsKKyAgICB9LAorCisgICAgZ2V0IHJh
d0RhdGEoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7CisgICAgfSwKKworICAg
IGNyZWF0ZUNlbGw6IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIpCisgICAgeworICAgICAgICB2
YXIgY2VsbCA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmNyZWF0ZUNlbGwu
Y2FsbCh0aGlzLCBjb2x1bW5JZGVudGlmaWVyKTsKKworICAgICAgICBpZiAoY29sdW1uSWRlbnRp
ZmllciA9PT0gInNlbGVjdG9yIiAmJiB0aGlzLl9zZWFyY2hNYXRjaGVkU2VsZWN0b3JDb2x1bW4K
KyAgICAgICAgICAgICAgICB8fCBjb2x1bW5JZGVudGlmaWVyID09PSAidGltZSIgJiYgdGhpcy5f
c2VhcmNoTWF0Y2hlZFRvdGFsQ29sdW1uCisgICAgICAgICAgICAgICAgfHwgY29sdW1uSWRlbnRp
ZmllciA9PT0gIm1hdGNoZXMiICYmIHRoaXMuX3NlYXJjaE1hdGNoZWRNYXRjaGVzQ29sdW1uCisg
ICAgICAgICAgICAgICAgfHwgY29sdW1uSWRlbnRpZmllciA9PT0gImhpdHMiICYmIHRoaXMuX3Nl
YXJjaE1hdGNoZWRIaXRzQ29sdW1uKQorICAgICAgICAgICAgY2VsbC5hZGRTdHlsZUNsYXNzKCJo
aWdobGlnaHQiKTsKKworICAgICAgICByZXR1cm4gY2VsbDsKKyAgICB9Cit9CisKK1dlYkluc3Bl
Y3Rvci5DU1NTZWxlY3RvckRhdGFHcmlkTm9kZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGU7CisKK1dlYkluc3BlY3Rvci5DU1NTZWxlY3Rv
clByb2ZpbGVWaWV3ID0gZnVuY3Rpb24ocHJvZmlsZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuVmll
dy5jYWxsKHRoaXMpOworCisgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInByb2ZpbGUt
dmlldyIpOworCisgICAgdGhpcy5zaG93VGltZUFzUGVyY2VudCA9IFdlYkluc3BlY3Rvci5zZXR0
aW5ncy5jcmVhdGVTZXR0aW5nKCJzZWxlY3RvclByb2ZpbGVyU2hvd1RpbWVBc1BlcmNlbnQiLCB0
cnVlKTsKKyAgICB0aGlzLnNob3dNYXRjaGVzQXNQZXJjZW50ID0gV2ViSW5zcGVjdG9yLnNldHRp
bmdzLmNyZWF0ZVNldHRpbmcoInNlbGVjdG9yUHJvZmlsZXJTaG93TWF0Y2hlc0FzUGVyY2VudCIs
IHRydWUpOworCisgICAgdmFyIGNvbHVtbnMgPSB7ICJzZWxlY3RvciI6IHsgdGl0bGU6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiU2VsZWN0b3IiKSwgd2lkdGg6ICI2NTBweCIsIHNvcnRhYmxlOiB0
cnVlIH0sCisgICAgICAgICAgICAgICAgICAgICJ0aW1lIjogeyB0aXRsZTogV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJUb3RhbCIpLCB3aWR0aDogIjcycHgiLCBzb3J0OiAiZGVzY2VuZGluZyIsIHNv
cnRhYmxlOiB0cnVlIH0sCisgICAgICAgICAgICAgICAgICAgICJtYXRjaGVzIjogeyB0aXRsZTog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNYXRjaGVzIiksIHdpZHRoOiAiNzJweCIsIHNvcnRhYmxl
OiB0cnVlIH0sCisgICAgICAgICAgICAgICAgICAgICJoaXRzIjogeyB0aXRsZTogV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJIaXRzIiksIHdpZHRoOiAiNzJweCIsIHNvcnRhYmxlOiB0cnVlIH0gfTsK
KworICAgIHRoaXMuZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkKGNvbHVtbnMp
OworICAgIHRoaXMuZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcigic29ydGluZyBjaGFuZ2VkIiwg
dGhpcy5fc29ydERhdGEsIHRoaXMpOworICAgIHRoaXMuZGF0YUdyaWQuZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9tb3VzZURvd25JbkRhdGFHcmlkLmJpbmQodGhp
cyksIHRydWUpOworICAgIHRoaXMuZGF0YUdyaWQuc2hvdyh0aGlzLmVsZW1lbnQpOworCisgICAg
dGhpcy5wZXJjZW50QnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oIiIs
ICJwZXJjZW50LXRpbWUtc3RhdHVzLWJhci1pdGVtIik7CisgICAgdGhpcy5wZXJjZW50QnV0dG9u
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcGVyY2VudENsaWNrZWQuYmluZCh0aGlz
KSwgZmFsc2UpOworCisgICAgdGhpcy5wcm9maWxlID0gcHJvZmlsZTsKKworICAgIGZ1bmN0aW9u
IHByb2ZpbGVDYWxsYmFjayhlcnJvciwgcHJvZmlsZSkKKyAgICB7CisgICAgICAgIGlmIChlcnJv
cikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5wcm9maWxlLmRhdGEgPSBwcm9m
aWxlLmRhdGE7CisgICAgICAgIHRoaXMuX2NyZWF0ZVByb2ZpbGVOb2RlcygpOworICAgICAgICB0
aGlzLl9zb3J0UHJvZmlsZSgpOworICAgICAgICB0aGlzLl91cGRhdGVQZXJjZW50QnV0dG9uKCk7
CisgICAgfQorCisgICAgUHJvZmlsZXJBZ2VudC5nZXRQcm9maWxlKHRoaXMucHJvZmlsZS50eXBl
SWQsIHRoaXMucHJvZmlsZS51aWQsIHByb2ZpbGVDYWxsYmFjay5iaW5kKHRoaXMpKTsKK30KKwor
V2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlID0geworICAgIGdl
dCBzdGF0dXNCYXJJdGVtcygpCisgICAgeworICAgICAgICByZXR1cm4gW3RoaXMucGVyY2VudEJ1
dHRvbi5lbGVtZW50XTsKKyAgICB9LAorCisgICAgZ2V0IHByb2ZpbGUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3Byb2ZpbGU7CisgICAgfSwKKworICAgIHNldCBwcm9maWxlKHByb2Zp
bGUpCisgICAgeworICAgICAgICB0aGlzLl9wcm9maWxlID0gcHJvZmlsZTsKKyAgICB9LAorCisg
ICAgd2lsbEhpZGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2N1cnJlbnRTZWFy
Y2hSZXN1bHRJbmRleCA9IC0xOworICAgIH0sCisKKyAgICBfY3JlYXRlUHJvZmlsZU5vZGVzOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgZGF0YSA9IHRoaXMucHJvZmlsZS5kYXRhOwor
CisgICAgICAgIHRoaXMucHJvZmlsZS5jaGlsZHJlbiA9IFtdOworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGRhdGFbaV0udGltZVBl
cmNlbnQgPSBkYXRhW2ldLnRpbWUgKiAxMDAgLyB0aGlzLnByb2ZpbGUudG90YWxUaW1lTXM7Cisg
ICAgICAgICAgICBkYXRhW2ldLm1hdGNoZXNQZXJjZW50ID0gZGF0YVtpXS5tYXRjaGVzICogMTAw
IC8gZGF0YVtpXS5oaXRzOworICAgICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9y
LkNTU1NlbGVjdG9yRGF0YUdyaWROb2RlKHRoaXMsIGRhdGFbaV0pOworICAgICAgICAgICAgdGhp
cy5wcm9maWxlLmNoaWxkcmVuLnB1c2gobm9kZSk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAg
cmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHNlbGVjdGVkUHJvZmlsZU5v
ZGUgPSB0aGlzLmRhdGFHcmlkLnNlbGVjdGVkTm9kZSA/IHRoaXMuZGF0YUdyaWQuc2VsZWN0ZWRO
b2RlLnByb2ZpbGVOb2RlIDogbnVsbDsKKworICAgICAgICB0aGlzLmRhdGFHcmlkLnJlbW92ZUNo
aWxkcmVuKCk7CisKKyAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5wcm9maWxlLmNoaWxkcmVu
OworICAgICAgICB2YXIgY291bnQgPSBjaGlsZHJlbi5sZW5ndGg7CisKKyAgICAgICAgZm9yICh2
YXIgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KQorICAgICAgICAgICAgdGhpcy5k
YXRhR3JpZC5hcHBlbmRDaGlsZChjaGlsZHJlbltpbmRleF0pOworCisgICAgICAgIGlmIChzZWxl
Y3RlZFByb2ZpbGVOb2RlKQorICAgICAgICAgICAgc2VsZWN0ZWRQcm9maWxlTm9kZS5zZWxlY3Rl
ZCA9IHRydWU7CisgICAgfSwKKworICAgIHJlZnJlc2hWaXNpYmxlRGF0YTogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5kYXRhR3JpZC5jaGlsZHJlblswXTsKKyAg
ICAgICAgd2hpbGUgKGNoaWxkKSB7CisgICAgICAgICAgICBjaGlsZC5yZWZyZXNoKCk7CisgICAg
ICAgICAgICBjaGlsZCA9IGNoaWxkLnRyYXZlcnNlTmV4dE5vZGUoZmFsc2UsIG51bGwsIHRydWUp
OworICAgICAgICB9CisgICAgfSwKKworICAgIHJlZnJlc2hTaG93QXNQZXJjZW50czogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fdXBkYXRlUGVyY2VudEJ1dHRvbigpOworICAgICAg
ICB0aGlzLnJlZnJlc2hWaXNpYmxlRGF0YSgpOworCisgICAgICAgIC8vIFRoZSBvbmx5IGNhc2Ug
d2hlbiB0aGUgc29ydCBvcmRlciBjaGFuZ2VzIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gYWJzIGFu
ZCBwY3QuCisgICAgICAgIGlmICh0aGlzLmRhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyID09
PSAibWF0Y2hlcyIpCisgICAgICAgICAgICB0aGlzLl9zb3J0UHJvZmlsZSgpOworICAgIH0sCisK
KyAgICBzZWFyY2hDYW5jZWxlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMu
X3NlYXJjaFJlc3VsdHMpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5f
c2VhcmNoUmVzdWx0cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHZhciBwcm9maWxl
Tm9kZSA9IHRoaXMuX3NlYXJjaFJlc3VsdHNbaV0ucHJvZmlsZU5vZGU7CisKKyAgICAgICAgICAg
ICAgICBkZWxldGUgcHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNoZWRTZWxlY3RvckNvbHVtbjsKKyAg
ICAgICAgICAgICAgICBkZWxldGUgcHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVt
bjsKKyAgICAgICAgICAgICAgICBkZWxldGUgcHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNoZWRNYXRj
aGVzQ29sdW1uOworICAgICAgICAgICAgICAgIGRlbGV0ZSBwcm9maWxlTm9kZS5fc2VhcmNoTWF0
Y2hlZEhpdHNDb2x1bW47CisKKyAgICAgICAgICAgICAgICBwcm9maWxlTm9kZS5yZWZyZXNoKCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBkZWxldGUgdGhpcy5fc2VhcmNo
RmluaXNoZWRDYWxsYmFjazsKKyAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4
ID0gLTE7CisgICAgICAgIHRoaXMuX3NlYXJjaFJlc3VsdHMgPSBbXTsKKyAgICB9LAorCisgICAg
cGVyZm9ybVNlYXJjaDogZnVuY3Rpb24ocXVlcnksIGZpbmlzaGVkQ2FsbGJhY2spCisgICAgewor
ICAgICAgICAvLyBDYWxsIHNlYXJjaENhbmNlbGVkIHNpbmNlIGl0IHdpbGwgcmVzZXQgZXZlcnl0
aGluZyB3ZSBuZWVkIGJlZm9yZSBkb2luZyBhIG5ldyBzZWFyY2guCisgICAgICAgIHRoaXMuc2Vh
cmNoQ2FuY2VsZWQoKTsKKworICAgICAgICBxdWVyeSA9IHF1ZXJ5LnRyaW0oKTsKKworICAgICAg
ICBpZiAoIXF1ZXJ5Lmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlz
Ll9zZWFyY2hGaW5pc2hlZENhbGxiYWNrID0gZmluaXNoZWRDYWxsYmFjazsKKworICAgICAgICB2
YXIgZ3JlYXRlclRoYW4gPSAocXVlcnkuaW5kZXhPZigiPiIpID09PSAwKTsKKyAgICAgICAgdmFy
IGxlc3NUaGFuID0gKHF1ZXJ5LmluZGV4T2YoIjwiKSA9PT0gMCk7CisgICAgICAgIHZhciBlcXVh
bFRvID0gKHF1ZXJ5LmluZGV4T2YoIj0iKSA9PT0gMCB8fCAoKGdyZWF0ZXJUaGFuIHx8IGxlc3NU
aGFuKSAmJiBxdWVyeS5pbmRleE9mKCI9IikgPT09IDEpKTsKKyAgICAgICAgdmFyIHBlcmNlbnRV
bml0cyA9IChxdWVyeS5sYXN0SW5kZXhPZigiJSIpID09PSAocXVlcnkubGVuZ3RoIC0gMSkpOwor
ICAgICAgICB2YXIgbWlsbGlzZWNvbmRzVW5pdHMgPSAocXVlcnkubGVuZ3RoID4gMiAmJiBxdWVy
eS5sYXN0SW5kZXhPZigibXMiKSA9PT0gKHF1ZXJ5Lmxlbmd0aCAtIDIpKTsKKyAgICAgICAgdmFy
IG1hdGNoZXNVbml0cyA9IChxdWVyeS5sZW5ndGggPiA3ICYmIHF1ZXJ5Lmxhc3RJbmRleE9mKCJt
YXRjaGVzIikgPT09IChxdWVyeS5sZW5ndGggLSA3KSk7CisgICAgICAgIHZhciBoaXRzVW5pdHMg
PSAocXVlcnkubGVuZ3RoID4gNCAmJiBxdWVyeS5sYXN0SW5kZXhPZigiaGl0cyIpID09PSAocXVl
cnkubGVuZ3RoIC0gNCkpOworICAgICAgICB2YXIgc2Vjb25kc1VuaXRzID0gKCFtaWxsaXNlY29u
ZHNVbml0cyAmJiAhbWF0Y2hlc1VuaXRzICYmICFoaXRzVW5pdHMgJiYgcXVlcnkubGFzdEluZGV4
T2YoInMiKSA9PT0gKHF1ZXJ5Lmxlbmd0aCAtIDEpKTsKKworICAgICAgICB2YXIgcXVlcnlOdW1i
ZXIgPSBwYXJzZUZsb2F0KHF1ZXJ5KTsKKyAgICAgICAgaWYgKGdyZWF0ZXJUaGFuIHx8IGxlc3NU
aGFuIHx8IGVxdWFsVG8pIHsKKyAgICAgICAgICAgIGlmIChlcXVhbFRvICYmIChncmVhdGVyVGhh
biB8fCBsZXNzVGhhbikpCisgICAgICAgICAgICAgICAgcXVlcnlOdW1iZXIgPSBwYXJzZUZsb2F0
KHF1ZXJ5LnN1YnN0cmluZygyKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cXVlcnlOdW1iZXIgPSBwYXJzZUZsb2F0KHF1ZXJ5LnN1YnN0cmluZygxKSk7CisgICAgICAgIH0K
KworICAgICAgICB2YXIgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMgPSAoc2Vjb25kc1VuaXRzID8g
KHF1ZXJ5TnVtYmVyICogMTAwMCkgOiBxdWVyeU51bWJlcik7CisKKyAgICAgICAgLy8gTWFrZSBl
cXVhbFRvIGltcGxpY2l0bHkgdHJ1ZSBpZiBpdCB3YXNuJ3Qgc3BlY2lmaWVkIHRoZXJlIGlzIG5v
IG90aGVyIG9wZXJhdG9yLgorICAgICAgICBpZiAoIWlzTmFOKHF1ZXJ5TnVtYmVyKSAmJiAhKGdy
ZWF0ZXJUaGFuIHx8IGxlc3NUaGFuKSkKKyAgICAgICAgICAgIGVxdWFsVG8gPSB0cnVlOworCisg
ICAgICAgIGZ1bmN0aW9uIG1hdGNoZXNRdWVyeSgvKkNTU1NlbGVjdG9yUHJvZmlsZU5vZGUqLyBw
cm9maWxlRGF0YUdyaWROb2RlKQorICAgICAgICB7CisgICAgICAgICAgICBkZWxldGUgcHJvZmls
ZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFNlbGVjdG9yQ29sdW1uOworICAgICAgICAgICAg
ZGVsZXRlIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbjsKKyAg
ICAgICAgICAgIGRlbGV0ZSBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkSGl0c0Nv
bHVtbjsKKyAgICAgICAgICAgIGRlbGV0ZSBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRj
aGVkTWF0Y2hlc0NvbHVtbjsKKworICAgICAgICAgICAgaWYgKHBlcmNlbnRVbml0cykgeworICAg
ICAgICAgICAgICAgIGlmIChsZXNzVGhhbikgeworICAgICAgICAgICAgICAgICAgICBpZiAocHJv
ZmlsZURhdGFHcmlkTm9kZS5yYXdEYXRhLnRpbWVQZXJjZW50IDwgcXVlcnlOdW1iZXIpCisgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90
YWxDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlk
Tm9kZS5yYXdEYXRhLm1hdGNoZXNQZXJjZW50IDwgcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAg
ICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkTWF0Y2hlc0NvbHVt
biA9IHRydWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChncmVhdGVyVGhhbikgeworICAg
ICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5yYXdEYXRhLnRpbWVQZXJj
ZW50ID4gcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdy
aWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5yYXdEYXRhLm1hdGNoZXNQZXJjZW50ID4gcXVl
cnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9z
ZWFyY2hNYXRjaGVkTWF0Y2hlc0NvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgaWYgKGVxdWFsVG8pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBy
b2ZpbGVEYXRhR3JpZE5vZGUucmF3RGF0YS50aW1lUGVyY2VudCA9PSBxdWVyeU51bWJlcikKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRU
b3RhbENvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdy
aWROb2RlLnJhd0RhdGEubWF0Y2hlc1BlcmNlbnQgPT0gcXVlcnlOdW1iZXIpCisgICAgICAgICAg
ICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkTWF0Y2hlc0Nv
bHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmICht
aWxsaXNlY29uZHNVbml0cyB8fCBzZWNvbmRzVW5pdHMpIHsKKyAgICAgICAgICAgICAgICBpZiAo
bGVzc1RoYW4pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUu
cmF3RGF0YS50aW1lIDwgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCisgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4gPSB0
cnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZ3JlYXRlclRoYW4pIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUucmF3RGF0YS50aW1lID4gcXVlcnlO
dW1iZXJNaWxsaXNlY29uZHMpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdy
aWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIGlmIChlcXVhbFRvKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnRvdGFsVGltZSA9PSBxdWVyeU51bWJlck1pbGxpc2Vj
b25kcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJj
aE1hdGNoZWRUb3RhbENvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSBlbHNlIGlmIChtYXRjaGVzVW5pdHMpIHsKKyAgICAgICAgICAgICAgICBpZiAobGVzc1Ro
YW4pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUucmF3RGF0
YS5tYXRjaGVzIDwgcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxl
RGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkTWF0Y2hlc0NvbHVtbiA9IHRydWU7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmIChncmVhdGVyVGhhbikgeworICAgICAgICAgICAgICAgICAgICBp
ZiAocHJvZmlsZURhdGFHcmlkTm9kZS5yYXdEYXRhLm1hdGNoZXMgPiBxdWVyeU51bWJlcikKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRN
YXRjaGVzQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBpZiAoZXF1YWxUbykgeworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlk
Tm9kZS5yYXdEYXRhLm1hdGNoZXMgPT0gcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAg
ICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkTWF0Y2hlc0NvbHVtbiA9IHRy
dWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChoaXRzVW5pdHMp
IHsKKyAgICAgICAgICAgICAgICBpZiAobGVzc1RoYW4pIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUucmF3RGF0YS5oaXRzIDwgcXVlcnlOdW1iZXIpCisgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkSGl0
c0NvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChncmVhdGVyVGhhbikg
eworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5yYXdEYXRhLmhp
dHMgPiBxdWVyeU51bWJlcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3Jp
ZE5vZGUuX3NlYXJjaE1hdGNoZWRIaXRzQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBpZiAoZXF1YWxUbykgeworICAgICAgICAgICAgICAgICAgICBp
ZiAocHJvZmlsZURhdGFHcmlkTm9kZS5yYXdEYXRhLmhpdHMgPT0gcXVlcnlOdW1iZXIpCisgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkSGl0
c0NvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5kYXRhLnNlbGVjdG9yLmhhc1N1YnN0cmlu
ZyhxdWVyeSwgdHJ1ZSkpCisgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2Vh
cmNoTWF0Y2hlZFNlbGVjdG9yQ29sdW1uID0gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKHByb2Zp
bGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRTZWxlY3RvckNvbHVtbgorICAgICAgICAgICAg
ICAgICAgICB8fCBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4K
KyAgICAgICAgICAgICAgICAgICAgfHwgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hl
ZE1hdGNoZXNDb2x1bW4KKyAgICAgICAgICAgICAgICAgICAgfHwgcHJvZmlsZURhdGFHcmlkTm9k
ZS5fc2VhcmNoTWF0Y2hlZEhpdHNDb2x1bW4pIHsKKyAgICAgICAgICAgICAgICBwcm9maWxlRGF0
YUdyaWROb2RlLnJlZnJlc2goKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAg
ICAgdmFyIGN1cnJlbnQgPSB0aGlzLnByb2ZpbGUuY2hpbGRyZW5bMF07CisKKyAgICAgICAgd2hp
bGUgKGN1cnJlbnQpIHsKKyAgICAgICAgICAgIGlmIChtYXRjaGVzUXVlcnkoY3VycmVudCkpIHsK
KyAgICAgICAgICAgICAgICB0aGlzLl9zZWFyY2hSZXN1bHRzLnB1c2goeyBwcm9maWxlTm9kZTog
Y3VycmVudCB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY3VycmVudCA9IGN1cnJl
bnQudHJhdmVyc2VOZXh0Tm9kZShmYWxzZSwgbnVsbCwgZmFsc2UpOworICAgICAgICB9CisKKyAg
ICAgICAgZmluaXNoZWRDYWxsYmFjayh0aGlzLCB0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCk7
CisgICAgfSwKKworICAgIGp1bXBUb0ZpcnN0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3VsdHMgfHwgIXRoaXMuX3NlYXJjaFJlc3Vs
dHMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9jdXJyZW50U2Vh
cmNoUmVzdWx0SW5kZXggPSAwOworICAgICAgICB0aGlzLl9qdW1wVG9TZWFyY2hSZXN1bHQodGhp
cy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4KTsKKyAgICB9LAorCisgICAganVtcFRvTGFzdFNl
YXJjaFJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9zZWFyY2hS
ZXN1bHRzIHx8ICF0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gKHRoaXMuX3NlYXJj
aFJlc3VsdHMubGVuZ3RoIC0gMSk7CisgICAgICAgIHRoaXMuX2p1bXBUb1NlYXJjaFJlc3VsdCh0
aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXgpOworICAgIH0sCisKKyAgICBqdW1wVG9OZXh0
U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3NlYXJj
aFJlc3VsdHMgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBpZiAoKyt0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPj0gdGhp
cy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpCisgICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNo
UmVzdWx0SW5kZXggPSAwOworICAgICAgICB0aGlzLl9qdW1wVG9TZWFyY2hSZXN1bHQodGhpcy5f
Y3VycmVudFNlYXJjaFJlc3VsdEluZGV4KTsKKyAgICB9LAorCisgICAganVtcFRvUHJldmlvdXNT
ZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fc2VhcmNo
UmVzdWx0cyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGlmICgtLXRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA8IDApCisg
ICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAodGhpcy5fc2VhcmNo
UmVzdWx0cy5sZW5ndGggLSAxKTsKKyAgICAgICAgdGhpcy5fanVtcFRvU2VhcmNoUmVzdWx0KHRo
aXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCk7CisgICAgfSwKKworICAgIHNob3dpbmdGaXJz
dFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuICh0aGlzLl9j
dXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPT09IDApOworICAgIH0sCisKKyAgICBzaG93aW5nTGFz
dFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuICh0aGlzLl9z
ZWFyY2hSZXN1bHRzICYmIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9PT0gKHRoaXMu
X3NlYXJjaFJlc3VsdHMubGVuZ3RoIC0gMSkpOworICAgIH0sCisKKyAgICBfanVtcFRvU2VhcmNo
UmVzdWx0OiBmdW5jdGlvbihpbmRleCkKKyAgICB7CisgICAgICAgIHZhciBzZWFyY2hSZXN1bHQg
PSB0aGlzLl9zZWFyY2hSZXN1bHRzW2luZGV4XTsKKyAgICAgICAgaWYgKCFzZWFyY2hSZXN1bHQp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHByb2ZpbGVOb2RlID0gc2VhcmNo
UmVzdWx0LnByb2ZpbGVOb2RlOworICAgICAgICBwcm9maWxlTm9kZS5yZXZlYWxBbmRTZWxlY3Qo
KTsKKyAgICB9LAorCisgICAgX3BlcmNlbnRDbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICAgIHZhciBjdXJyZW50U3RhdGUgPSB0aGlzLnNob3dUaW1lQXNQZXJjZW50LmdldCgp
ICYmIHRoaXMuc2hvd01hdGNoZXNBc1BlcmNlbnQuZ2V0KCk7CisgICAgICAgIHRoaXMuc2hvd1Rp
bWVBc1BlcmNlbnQuc2V0KCFjdXJyZW50U3RhdGUpOworICAgICAgICB0aGlzLnNob3dNYXRjaGVz
QXNQZXJjZW50LnNldCghY3VycmVudFN0YXRlKTsKKyAgICAgICAgdGhpcy5yZWZyZXNoU2hvd0Fz
UGVyY2VudHMoKTsKKyAgICB9LAorCisgICAgX3VwZGF0ZVBlcmNlbnRCdXR0b246IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnNob3dUaW1lQXNQZXJjZW50LmdldCgpICYmIHRo
aXMuc2hvd01hdGNoZXNBc1BlcmNlbnQuZ2V0KCkpIHsKKyAgICAgICAgICAgIHRoaXMucGVyY2Vu
dEJ1dHRvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBhYnNvbHV0ZSB1bml0
cy4iKTsKKyAgICAgICAgICAgIHRoaXMucGVyY2VudEJ1dHRvbi50b2dnbGVkID0gdHJ1ZTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMucGVyY2VudEJ1dHRvbi50aXRsZSA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBwZXJjZW50YWdlcy4iKTsKKyAgICAgICAgICAgIHRo
aXMucGVyY2VudEJ1dHRvbi50b2dnbGVkID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9LAorCisg
ICAgX3NvcnREYXRhOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3NvcnRQ
cm9maWxlKHRoaXMucHJvZmlsZSk7CisgICAgfSwKKworICAgIF9zb3J0UHJvZmlsZTogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdmFyIHNvcnRBc2NlbmRpbmcgPSB0aGlzLmRhdGFHcmlkLnNv
cnRPcmRlciA9PT0gImFzY2VuZGluZyI7CisgICAgICAgIHZhciBzb3J0Q29sdW1uSWRlbnRpZmll
ciA9IHRoaXMuZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXI7CisgICAgICAgIHZhciBpc1Bl
cmNlbnQgPSB0aGlzLnNob3dUaW1lQXNQZXJjZW50LmdldCgpOworCisgICAgICAgIGZ1bmN0aW9u
IHNlbGVjdG9yQ29tcGFyYXRvcihhLCBiKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcmVz
dWx0ID0gYi5yYXdEYXRhLnNlbGVjdG9yLmxvY2FsZUNvbXBhcmUoYS5yYXdEYXRhLnNlbGVjdG9y
KTsKKyAgICAgICAgICAgIHJldHVybiBzb3J0QXNjZW5kaW5nID8gLXJlc3VsdCA6IHJlc3VsdDsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRpbWVDb21wYXJhdG9yKGEsIGIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGIucmF3RGF0YS50aW1lIC0gYS5yYXdE
YXRhLnRpbWU7CisgICAgICAgICAgICByZXR1cm4gc29ydEFzY2VuZGluZyA/IC1yZXN1bHQgOiBy
ZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBoaXRzQ29tcGFyYXRvcihhLCBi
KQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBiLnJhd0RhdGEuaGl0cyAt
IGEucmF3RGF0YS5oaXRzOworICAgICAgICAgICAgcmV0dXJuIHNvcnRBc2NlbmRpbmcgPyAtcmVz
dWx0IDogcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbWF0Y2hlc0NvbXBh
cmF0b3IoYSwgYikKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gaXNQZXJj
ZW50ID8gKGIucmF3RGF0YS5tYXRjaGVzUGVyY2VudCAtIGEucmF3RGF0YS5tYXRjaGVzUGVyY2Vu
dCkgOiAoYi5yYXdEYXRhLm1hdGNoZXMgLSBhLnJhd0RhdGEubWF0Y2hlcyk7CisgICAgICAgICAg
ICByZXR1cm4gc29ydEFzY2VuZGluZyA/IC1yZXN1bHQgOiByZXN1bHQ7CisgICAgICAgIH0KKwor
ICAgICAgICB2YXIgY29tcGFyYXRvcjsKKyAgICAgICAgc3dpdGNoIChzb3J0Q29sdW1uSWRlbnRp
ZmllcikgeworICAgICAgICBjYXNlICJ0aW1lIjoKKyAgICAgICAgICAgIGNvbXBhcmF0b3IgPSB0
aW1lQ29tcGFyYXRvcjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJoaXRzIjoK
KyAgICAgICAgICAgIGNvbXBhcmF0b3IgPSBoaXRzQ29tcGFyYXRvcjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlICJtYXRjaGVzIjoKKyAgICAgICAgICAgIGNvbXBhcmF0b3IgPSBt
YXRjaGVzQ29tcGFyYXRvcjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJzZWxl
Y3RvciI6CisgICAgICAgICAgICBjb21wYXJhdG9yID0gc2VsZWN0b3JDb21wYXJhdG9yOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLnByb2ZpbGUuY2hpbGRy
ZW4uc29ydChjb21wYXJhdG9yKTsKKworICAgICAgICB0aGlzLnJlZnJlc2goKTsKKyAgICB9LAor
CisgICAgX21vdXNlRG93bkluRGF0YUdyaWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgaWYgKGV2ZW50LmRldGFpbCA8IDIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dmFyIGNlbGwgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhOb2RlTmFtZSgi
dGQiKTsKKyAgICAgICAgaWYgKCFjZWxsKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGlmIChjZWxsLmhhc1N0eWxlQ2xhc3MoInRpbWUtY29sdW1uIikpCisgICAgICAgICAgICB0aGlz
LnNob3dUaW1lQXNQZXJjZW50LnNldCghdGhpcy5zaG93VGltZUFzUGVyY2VudC5nZXQoKSk7Cisg
ICAgICAgIGVsc2UgaWYgKGNlbGwuaGFzU3R5bGVDbGFzcygibWF0Y2hlcy1jb2x1bW4iKSkKKyAg
ICAgICAgICAgIHRoaXMuc2hvd01hdGNoZXNBc1BlcmNlbnQuc2V0KCF0aGlzLnNob3dNYXRjaGVz
QXNQZXJjZW50LmdldCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHRoaXMucmVmcmVzaFNob3dBc1BlcmNlbnRzKCk7CisKKyAgICAgICAgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsKKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgfQor
fQorCitXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlOworCitXZWJJbnNwZWN0b3IuQ1NTU2Vs
ZWN0b3JQcm9maWxlVHlwZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuUHJvZmls
ZVR5cGUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5UeXBl
SWQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ1NTIFNFTEVDVE9SIFBST0ZJTEVTIikpOworICAg
IHRoaXMuX3JlY29yZGluZyA9IGZhbHNlOworICAgIFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclBy
b2ZpbGVUeXBlLmluc3RhbmNlID0gdGhpczsKK30KKworV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9y
UHJvZmlsZVR5cGUuVHlwZUlkID0gIlNFTEVDVE9SIjsKKworV2ViSW5zcGVjdG9yLkNTU1NlbGVj
dG9yUHJvZmlsZVR5cGUucHJvdG90eXBlID0geworICAgIGdldCBidXR0b25Ub29sdGlwKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRpbmcgPyBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlN0b3AgQ1NTIFNlbGVjdG9yIHByb2ZpbGluZy4iKSA6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU3RhcnQgQ1NTIFNlbGVjdG9yIHByb2ZpbGluZy4iKTsKKyAgICB9LAorCisgICAgZ2V0IGJ1
dHRvblN0eWxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRpbmcgPyAicmVj
b3JkLWNzcy1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSBzdGF0dXMtYmFyLWl0ZW0gdG9nZ2xlZC1v
biIgOiAicmVjb3JkLWNzcy1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSBzdGF0dXMtYmFyLWl0ZW0i
OworICAgIH0sCisKKyAgICBidXR0b25DbGlja2VkOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB0aGlzLl9yZWNvcmRpbmcgPSAhdGhpcy5fcmVjb3JkaW5nOworCisgICAgICAgIGlmICh0aGlz
Ll9yZWNvcmRpbmcpCisgICAgICAgICAgICBQcm9maWxlckFnZW50LnN0YXJ0KFdlYkluc3BlY3Rv
ci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLlR5cGVJZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIFByb2ZpbGVyQWdlbnQuc3RvcChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlw
ZS5UeXBlSWQpOworICAgIH0sCisKKyAgICBnZXQgd2VsY29tZU1lc3NhZ2UoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29udHJvbCBDU1MgU2VsZWN0b3Ig
cHJvZmlsaW5nIGJ5IHByZXNzaW5nIHRoZSAlcyBidXR0b24gb24gdGhlIHN0YXR1cyBiYXIuIik7
CisgICAgfSwKKworICAgIGlzUmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZGluZzsKKyAgICB9LAorCisgICAgc3RhcnRSZWNvcmRp
bmdQcm9maWxlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9yZWNvcmRpbmcgPSB0
cnVlOworICAgICAgICBQcm9maWxlckFnZW50LnN0YXJ0KFdlYkluc3BlY3Rvci5DU1NTZWxlY3Rv
clByb2ZpbGVUeXBlLlR5cGVJZCk7CisgICAgfSwKKworICAgIHN0b3BSZWNvcmRpbmdQcm9maWxl
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9yZWNvcmRpbmcgPSBmYWxzZTsKKyAg
ICAgICAgUHJvZmlsZXJBZ2VudC5zdG9wKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVU
eXBlLlR5cGVJZCk7CisgICAgfSwKKworICAgIHNldFJlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9u
KGlzUHJvZmlsaW5nKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gaXNQcm9maWxp
bmc7CisgICAgfSwKKworICAgIGNyZWF0ZVNpZGViYXJUcmVlRWxlbWVudEZvclByb2ZpbGU6IGZ1
bmN0aW9uKHByb2ZpbGUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Q
cm9maWxlU2lkZWJhclRyZWVFbGVtZW50KHByb2ZpbGUsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
UHJvZmlsZSAlZCIpICsgU3RyaW5nLnNwcmludGYoIiAoJXMpIiwgTnVtYmVyLnNlY29uZHNUb1N0
cmluZyhwcm9maWxlLnRvdGFsVGltZU1zIC8gMTAwMCkpLCAicHJvZmlsZS1zaWRlYmFyLXRyZWUt
aXRlbSIpOworICAgIH0sCisKKyAgICBjcmVhdGVWaWV3OiBmdW5jdGlvbihwcm9maWxlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmll
dyhwcm9maWxlKTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVU
eXBlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUucHJvdG90
eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFn
ZXMvc3RhdHVzYmFyQnV0dG9uR2x5cGhzLnBuZyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvSW1hZ2VzL3N0YXR1c2JhckJ1dHRvbkdseXBocy5wbmcKaW5kZXggNTUzMTI0YjFj
ZGI3MzhjYjZjMTk3NWVlYzRmMjE0OTc5NGY5MGU2ZC4uM2U3OWQ3ZTAzOGMxZDI0NzdiOTAwMjY3
ZDQ2NGRmNGEyNjU3Zjg0ZSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAzNjgyCnpjbVYt
bzR4UkNXRl9KUXtnJGZEKDBSSTYwcHVNTSlsYTJ9PmUrJmw+Qk1QfGFBYnxoPzRuIz5yS34jOSE/
VldqJAp6NnhBS2FLUnFuRmc1YSo9dD8+d21YTlU9OHdYQ1I2WURFKHZNbD5aVjVmaEp1ZkxMbGds
MnB2OShOcilocURIaTAKelB7NCNUQ1ZeOylRTlNaPVR2M1JNKEZuJClDQCg7OGIjYXp1SSlBKWhY
QzlyTm8hO0h8ZFdQWm1zZF9jaiRJUjx+CnpmOEc2a3pqeVRTMmEyTDdpbFFpcnE5fUBARDJrI2Vp
bFFock5UNVp+Qk5+QmB6K2hRazJ8TmFAKlBfWFUhLTRNdAp6I3t6by04LU4jcStrclYlY0M0MzQr
NzstaWZ3SiFsZDxfXlIlYzFEVm80XnlZeWozeVJEdlZtRTk9SE5uRDtMXk0KellrfHZ3SUBLcmRn
azdZSXNefmEoMUJMKVExM1QybmZCcFh9cHBhMVJkMD04ak0lRFNpSmZLYXxKWHUkPG9BRXYxCnpx
I0EkZGBUfkVFXktBb1cxTHNNYTRTWHV3Pyk1QiF7ZWFRSHQtdkZ8R3hCKz50bmNTQj87VX1Lel8x
ZUFoc3BMRwp6Snp0OV9mTl4zflozQkdZZEp4fks1fXxrPGMtQzU4P05JT210fWFzJVQlRG8jTVgz
WHIxbXJ4Rz4lSm0oZjJIIUQKekM7TkQzR19Yajd6Jj9PayExZ3NOZlJ8aDZ4ZGRwNlo5Zm9MQT1A
d2FCKjIjZEFDfGZDS2F+Q1lkTl91S1J2eUM9CnojNGtGd2cmQUwpP1gyX3Z0UDFYeGVaPX1oMWJQ
VXRPRTBYV0JtdW1wJXpiYzgjXlBzLTtBQnJDSTQ/IzFeTCRfMgp6WXJEdk42WXh1aWRBKjxGZ3A8
LTU9XzdKUWU8U2JfQENvcE88bmRJMzJwI35tJWY1e2NeV09fLWpoJG1GYTNVfk4Keks5amNaPEBu
bSRCND4rV3NyNlo1VFNIR31sO2BiWWVhQ3FRY3YtJCowREtHXzwrI2I4SDdDYyFaP1U5a2BBU0sp
CnoycDtkRCpfLXpIX3RxUjlaTUZCT2hfeDRHYGUpI2Y0RXVWQHJBLWIrQEZkSF5aSVh3cWxuQm19
ZXtIVjExb2k+bQp6UDd0Py0qblNOT0JLVmc0LWxxdFR0RlpXOFdTI0VAO0lJdHhZPzhgdWFPXnRs
QVFlJnxSX1hxWng8aXIjQFkqdT4KenxGc1UhX2shNGU0fi1vY3ZkLVJUYXN7a0U/XmZVPCQ+MEtP
LUo/TFckTnQ2TXE7X0RlZ1g2ZVp7X2tBdDBWcE1jCno9Z1J0djlwdX05OFFxTVoqTk42Y2Y2eFp9
QjM0MSE+N1VZc0BnOyZgMTt5e0FTa3cxfTREeV5QN1MzP3M3Xn1+NQp6SUhuKT9iSkcwJE5XUndz
bFkxYjVsTj12SVRRe0VqSGVVcjE5WWp8QmU0JkgxKz1CcGlDNHcjbUBaPUtiRyZGV1MKeitEaERu
UVRtcExZamIpbWs4dUB2RnFkMlRwT3NPYmR4LVZkKklGSWA+PDRUcz0+VlYpZjMtdSszWlRvNSVJ
JHJ0CnpaeDdmMntMSTFzdGR2aT9GSn5SXzRkN3x1MjtlfnghSn1mbz0/eEV4MXNFcn4wakVwOTxq
dTBZZjVOXm0lS3h+dwp6MEg/KiktQ098KyZfM1UrPUtyayU0I008TDl8THFeTXRFbW48fG5RWjUh
fmRfNUNGS0xqMG9KfElSOHFzJGtWPCgKelk2NEc1KmZ2R0JFJUpFYmU9RjRvNyE4ODdPWUtleE9L
XzxPbEZMRG1ZVlFMKXl+MkhmbTcpJGF5MVJ8Xl92UGY/CnoqdyhzdDgkQ1MtU3F0RVYqbmJ9X3Nu
bGAtSUt5I3lTTTRDa19WUFUrPnp7SCN3VHVFb2FUPzREJSNAZTcycmpZbQp6Y1JkWThNfWYtPUx6
WURPNEY9djd0QThuRzBFfjxURmlVcEUlciNCKD49bVJPZXwqZUd0QD4jJnpvX3ZWe3x8RFcKenBH
dVEhcU5GKWlBSHtzITQ/MkwoMUZTez9qSVBVcHp+Plk4c1RCKF82MlY3UGh+STM+M1UqQ1pQSzBp
Zz88WjIqCnpeYUZNV3VFKUlkOCEhQ3p2VGdULT1CZXhCKnhLSSZzVWB2SllNO2ckZGpAc3w5YDhj
QD00TiM1b3hLWEQmSmZhNQp6an5WVWpEXjE+SkVzQ0ErdVZHJCRTX2Y+el5hRjB4QkNBPV8zVF9q
JTtVRldoJlVwfVU0cmIwe1hsLTgkSk9LUCMKej98cVpkNDxDT35scjR4TVNfRTRhMGhOZ1hHbV8w
OyF5MmlWTGdAKUVxbjkwb0ByV2BQXlF6MXlFIzhgPzBwa08pCno4UkhTPFJnQ3dVcjVIeU1LQTM+
PEl5OT1wXzlqZjZpZk8+aTNZQUxeXkc+WWRpMDA8em9hal9OI2BSYyNOZXp+TQp6Yno7MHh3TStV
ODxGJmk5d1k5YTdnI1pvIXspQmxFem1Fczs+JjxgNT9weEZRJk8xQGBRblNMdHxMK1pxJEdpam0K
emJ2QlE2YCMjMUkhWk43QC0qem0xem14QmFmeEJiZDQrVTxOJnVCbF9Bfip2UjB1fHM9VX18anA7
fjJNQ0lzN3xrCnpJR20jTWtxM1ooKVZQc1dGUVReeygzc0VYJEEpM3A5RVJiKzA2YEVlNH16ZXpw
YHFiXiUpOGVnVGZndGZMTEJCYAp6OUFrZ0owKnRfVFZ5LTB0alFxVGZANVhWPlBUMWRUV2VNRGVA
Y31wJklMJCpJI3tmVVpJRDUjKUQhTSpXRHxaMEQKeiFMNEs1cjZPKT1TcTZOYFZnNWhEZ29TKWxF
WF5rMUU3SVp0PDg8fnZ6ej4xakpZVk0oVnMrY0JCJUFLMXUjNHZeCnpea0gtfkgjYktYVXNHcGk9
ZlJ6d29zJGNOIWljMiZiR2QpcWxEZkxPPjItQj0lUTIyZytGTSYmK2tJUHJLTT9Xegp6MVFXd3pn
VTFVSF56ZFQyO0xIKnRTUGhLOV8kcktDVlYjMDsjcEshKCR0JUVSNnJKQkRIMzJgdWNte0ZGRDYj
eX4Kemh+VG09biNuejdxST9iKHA/T1g2U1lpbkBCSyR1MksmPD9LUUgoa0JZbTdnX2NQWWpxXzk9
Y1IwMUhZeW81ejB4Cno1NlFsK002ajwyVX1HZUhLQGpBVTFoN3lqak9nc19vTHBCfGNiUWJnV3hk
anI2VHRUfGp1NFowVHghT2ZXSTV7aAp6VFZ2SWxjaCFnKUtFOHdxUnp2ZjtJVk9JfjxibjAhaFVw
YWY/K3NtP2R3KiNqdVhMMj5OY3BAd0NWKF5MOXowcl8KeiRSekNkbjRARU9TKipOQjtCQ0d0N1U2
TjhvNCRYaWlUSig1PUtkSFRsOFdnLXNSLXdMJGxIJGJ5UCU4eDdRfXdECnp6P0Feel5aQnYxXz1S
QkBTb2RIVTFPWSkxPE8rcXRoPHJYand4T1puOSEhNT11TFE3Xl9ea3JJaGpHTU5GRSFyKwp6T257
KU1VKzdOeHRhVEMwaWF0YFErK2tUKkwhPUtWNjJKTXRzcGF9VGRPPDczKHtQXj4wdkl7UVQ8TCE+
JiYzSnIKelcmJnFoLT8ycFNNaHtJZkpLcHUpdjI5T0ViTCZ5aCpGT3NIbmlPcXQzaCswTjAkNTQ8
MHU1bXBIcH0mbGl5eUwlCnpBUEEhRyZDKDUyKSs+NVhxUVo1Xkx2e25re3EqeXxnfV48U2t6bzcz
Wl4yRG0tZjl4VComPjI9e0Qmd1F4fTliQAp6JXklY0w+OTUwZCN6JXJVTjQ1ZHsoWClUfU1OUGQ9
eUFZTkBgb2VzM2NiUjNeTUUhYWpmIylwWXtrRDhSJSg0Y0wKeiNuMDVCWGYhaiklWEdBXnA0eWBp
UCF8biYjNDVIUl9UQUxOWDVUdGVnZUw4WTBBNDU7ZFc8eClQUWA/dDlGd3FiCnpLajEycS1yZksr
cT1eK1pMcih7T0xOT3J5ZH0kKGVjc2BhNmloO21Pa3dyWF5rITYtJEdnV15xJkxfbTs5KTx+cAp6
SVRzVW57JmxKSm98SVA2VEZoWGVPQ0ZaYm1WfDlCRFZuRH1XcyszQlgpV3ImWU1NYH5fSl55eDB5
dENwQWcrXzsKej8qUE4pVk5Ba1JUd2M0MGx7V2NjbVJOdUI1I0k0dVo0QE99UDJeM08hS0wjcGZ4
RkVyXk9yPll2WUwxS2FFZzF4CnpDOEgjQCNGfjUpRiNVMjkqZ1N0c1ltNDw4bSgwWlVIOyRHdmtF
WCNLRE1tbiljaG88M3BYMj1SIVZFTVhnYyolSwp6UHRyUzklZDZHSF59WW8mQEIhJiNwJi1BeCNu
SnVXODNlKWRnZ25DN2NjWnsmLV9BNzhNMFpBa214LTc/QlVaXiYKelkzQEFSZ34+aCV4VzdnJHV+
T29mNj9hSF5LVlVVXlI+X1VGTDJpSTdWbylxQihHUHpXQHJ2WDg5K1VJM2B9VWVCCnomaTlNK1Aw
WWFESSooO0FQfEQhPG40bW1TQWZSYSEyVDlnQCVDYDtFND49PVlgfEZzST5OamVyMSspPiEyU0x5
KAp6UiZeS3owYnY7MClAQiQ0IVQqZE8qKjh5JFFRJmVHOzBOLSNSJSpINTAoJF58JE1nWig5cT19
NWZwZSp5MGd6SlMKeipPZGs4dkpXdC0tNSE2RHJkVSs3b2g+NG1DMHo7SlRsa3A8bTM5Z1l2ZnBD
UVdwSi1te3g8IXNANGgwITRWMmN2CnpkYGFodjVVaUglUzxNTnxRVUtjPDhYRTQ7PCNKMkhGZjJy
WjdYKDI7UVY0YCQ3IzRFNSshQzEoLUh3QjRGdVROPgp6N1JPOz96biV1WCROIUlyKWlSWmB7RXtC
Tk0mSnR+aCpgNTVHWntET0F6T2NocEk1PUFTcio/aXU/akQ9dyU+JjUKejJSemk7LXhxc2Utb2pg
UkQrN3hDcVBKclAxO09vYEZpRVh9SjdWajAhcHNIU1JWPX4lYVE4TSkrVVlINnJefEYoCnowRDwq
JmIjPkZ6T29TSGVKQ3kqWW9oRVBgI2c1UHVEKThXSz9YU1dtTylRUFNhK3A7VXhMeks8dmw2ekFr
eWUzXgp6S0crRXEtdnhoO1RYfn5JN18pZDZJSkM7WTViR2xQcVA0cyZEZHdTaEFRSGlRZmlwWmxo
Z3JQfFFjdXJiZz0rXm8KelQzY0g/ZFNkfWJPcVVDT1JmVmgkamJFSTdAYjZNfGlad2hUVk94e088
RDZNVyp3KjNwXnx3OyZER3lqN3EzSW4+Cnp5fnRQYWBzQFo9MU49MU89UD5ZaXplTjspNHc+WFVt
bFZ6clRwYlVAVWVlNnlnUUEhbHVZVzh4WHQ5Jjw3OVd4cQp6MWI/emNAbnRPbk1jSCFiJEBfYUAy
Nl4tKktpQnpwX2MraFF4VD4jM2hHUUlwNHd2UVVmeGxBcGZUQWNXZlN2PyEKekltWGsmSyNVKjU9
ekIhOEUoITtFTTF9JHd4a0VxRjV7ZWdVUTJae3pjbXw1ZnkkJDBXPDlaY0FXbE4rdGFlOyNyCnpx
VHFyazIrPmx+YHtTRD4weXNNKEBtcHQhLXpKQ1JjWWtIZHthUHxPJiFOKTlBN3JmP0I8cUglMDRs
WGktMW1PaQp6JkVORXZEQyppUSROUmJ7bSh8dn1lJllFNXVjVW5KbFBmZDIyZDx6UDVaejlCKmBf
RjRsPzlrM1g9Q3pjOE1oO30KenRST0pxQV9yX0MtNTVQI2pmbm0zdkd1RUVvMSYteVIhe2A5N1Fm
ZWt7ZWYzOEBzUzVxczlkc2dsPT56bj02Xj9BCnowTjt7cmlsUittUGZnJSpQMjgtVHktVj5RZzB0
RzF6eXBBQm1fUihNQitadn4xTjBHNXdsKUUqV1BJTGAlfHJqYQp6ayZ6YDdWbiYjPTVXbG5uKnBs
SVdGYzE/Nj5rdnRNdi13RThxRyVKaWhBUk91Zm14bWc0I3ZkNXNGdmYoR01eeUQKenZaN1F5eGdQ
dWA9d18rfk1nVnNMTjZZZE5SZXZJV1NyZm1lPCgzdHRyVWJCKCZFNnp0a3hqcWZiQ0BgKkVpbnR7
Cno5RXdyJEYxNjE2UW1RQTRuQD0oOSRfaTh6WjMyNV9VckFaOUJRTztjZ0VtV2t6NkZTMlAtMG44
cz1nTGlsKGcxPQp6VEkpfm1EQDlRaE1OdCQqUTR+Y3s2aCU9S01OdCQqc1RCVk9ZNlEmVTVwMmIh
MDAwMDBOa3ZYWHReLTB+ZntkbWEKQUBjO2stCgpkZWx0YSAzNTE2CnpjbVY7dDRNWHloR0otTCVn
JGZBKDAwMDAwYDlyJlpsYTJ9PmUrbkJCNG1pQF8oaikpPzRZV3hfS34jOSE/VldqJAp6NnhBS2FL
UnBhUGZ8XzBMR2FkbyZncVRRSCVTc2VWdCFOXnxoXjlQMyNLYT5aQWVKVS1qdGIoTDNXPHVTNXY+
PiQKekZya2J8cHRRcyY7MU07Qk0yTHo8MW1qVmI3YjNYMklMazFkS2k7cGlrNTExe0A5dWomIXw/
bDV5XylYbm9fWERgCnpmOFlEUS0jaHlFS3Y1SiRRNH5jezZoJT1LTU50JCpRNTI7SzJ7Wn0lTEBP
YD83JFc7Q2ZybyYjbmx6Yms4MVAtLQp6WGtkMz45cTxmckdjYyNZdUp2TEdJfEUlIWtvRShDdUw5
ZjJla2VOZkQpNU54WiZ1ODs1fkpCXjBlJTlrbUlyTnoKeil4YWV7VWlIYTRWR3JTZzJEOzgmZlQ2
JlN6X3Z9MmZCJTA0UjEocz8xZFB3ZnM1JSN6MlhzaTdDKlJkQUdya1IrCnooQnk/fkFuO2VZLXd0
M2xhRV5yOHp7aGd6UFJ9QVoycDkkMjJzezhoQSloek9fayVwZnkqO29INypeJUBGZ2Q9eAp6PVYk
UTxhSD8yVVRMOW07M2dSMExBYH53SlBnP3R7OTExP2I8dXhqVCVRRjxlRDBCZjZmU2pqdi1DTS0y
ZV9IKFcKejxRKHNlMHYzcjcqY1VKaCpyckpaQERsNGptakc/Qzt8Qm1NPG9HMz8xbyVoNWRvP290
ZHZlfUQ1Nyk1SmllcCVVCnpfKGoqWUZ5bStRRGVMfH1YQEk9NG1zbyNAS28xM1c+VzZpZEIhRX1j
JE9sKHNFUGwyS1BWXiojXkhSaD0mLWNUPAp6cyl4dW8wS2FxPypFPWIwSTRRZ0BlTUdLa2UrNTFP
Sl80U1dJMzd6NyFUb193SWsoa2V7Q2ZiISpnWTEzPEFIdFUKekd3SnZxai1TMFBhPCZMb2Ajdmpk
WXZ7M3o7PUVhYD8+SjhZJiZsP0F6PXl5UWorXntoYjdEO1Y3RTZmc0NyaHdKCnpAS19KYy1uOFo0
VFhUNG4pIXZeWik/TzZwVXgzZU0qdzw0bFk7WSlvQ3MtRDRuLXNFWUF+O0txZjRTLXMqYjhfKQp6
TEVIK2xeOWwoZl8/ckNRcndFPX1YWXNxaHk1RHVjcCY3KjRDWTlaZyptS3hjRHheVEgoKX1FRGhh
P0gkUlc8VmUKelJTeGc+eXg0IzU4QG4jI0pOdWw4YitHPXRUWS14dGc3ZDhKOXQ3R3dfQW1BKWJP
S2A+VCpybS1lYGl8LXBxZER0CnpFI0ZgMEFsP0ZJYlRmV20kNkpNPGUqP0hPUnpjYX1VKCRyfUM0
eWxjI3FXZXopQXpVeDt2NnApJkxPfjJSLWZZYAp6bjEwfC1PWWAjcyo9YDBWX0NXd0FJS0dDQ1VY
PVJ8VWtNUmlMe3xOTHBAWHA4Zzg9cDxmLVZLeyM0N2krWnxyJD0KelJMTyk8X0A7K3ZiNlBCcFF8
bk1MbXN8MGxreGB0eGlTOytvK1RSTTsyaVFgPXs9Zmo1ZX18P09LJGpocit4Uy1CCnpLQ2xrPmdA
Z1pERFc3JjwmS2x0Qnp+akstemBZYFpONXA+OUFNTzxrRml3O0tyJVMpJl58SFRUIW54MUx8RzJn
UQp6cl5VWHp6Nzdfa2VaTmBGfDljWlM1WXM8PjZpfipEQFhvLUBQa2RpUWFEenVmME58UCRCNTts
NGAwTEZnUHZgY2oKejJ8T3ZgKmQjZiYkbTRecmVeKCExR3ppaXV3TDRXVCFLRVRkRShidnh5JHxy
VElgO3dBaSMlcEBjTUl3NyVTcW5ZCnooI3BIN3AyfFZpMHlyLUEtJHpRUXdxRjVHY2J3aTBJfCND
a1k/b3NGUSFaJGZRREVxdjJEMVYpPHN+a0hPUlZAXgp6UGxNND47TSY1RkJ+ZzRzZlZhZnpVeTJ6
M0JPP0xLa3t2Tn5QMUJVVWlsbD4mZkJDMmxLTW0lfUNhPn1UREVJbFgKekdgWXIwbX1CKSglKlh3
cDFMIT0hTWlqdjR4Zn1wfENnR2ZCdT5kMHhkQHpPaCY5PHl5KkVIbHI9bm1PRnA1fHJ7Cnp1cSpJ
dSVzYXBGIzl1NE5jMT51V3kxdEloe1l7V1k2MlA5JFg+R0RIdXJ1Jio1OF5qQnFpNjV6UlhCQnFr
ZShMSQp6WHh+Ni1eMHczNkVlWmI7PUMhOWF6PE53UztDZkI2clh7VzV3JFU2OEc2TChLdyokXz8l
eXxzMDxFdyN0ZlBaVj0KelJ9Xz1iNDxDUW9nY3p6eHV2cm1NcEVZMWN1PD5oSEJsSi15ZVpsNEdX
ZH53QnFSaHAtRHppYjh3YG5QMGQ/Mj1DCnpKZmdnYUBqa05APDAhJWg8MWspX01waWxBaEZQYSM4
WmZnPz41e3t8NlJTOSl5fWRtcklATi00SnZMWkUhUDJpWAp6I3Y0X3FnaWtQRHlVV0Y1djY2KVZa
VXlgcV5DSkVMNTh+SUttKShDaXJ9diRBcHhhQiQzSj9Ga0NvbVRDNClvWDkKemMmKiFhRnBkekdO
aFNFWVdBWGRGWSVkMEdqfnpjNHhLPSkrXklWSkk0OXBVITAyY3ZNVzUqeEh4VyZyaC0jTm8hCnpi
VVBvcDJseiptOCkrPmZkWT1NWE9RcTc3RmJ2em5GZ3lxIzIhaUU3NUVLaUEhcmhwNnVScFlZLTw1
P3AlKXZPdQp6ZD4oJW9qYDc2WU9hZDdCY15saHs+emJXI3pTcWhVeENgUzBhNHY5KWhkN1BgZXV7
RFNQPk5NXzFFZn4mMClDNUkKeiRHQSZIK3xzZlBfPTNhdWV+ZWljQD5RYGsra2hgZ2l3Qkk7KzVa
NFAxYTkqRG9MN2p8WkxeWVd4fVUteCUybnZZCno9eEE/bWsxVzJuYT1DbV54bT0hRHNaQHExI2g9
VU5tZ0lsKWBSVno1ZW1UWjVOb1RRRz9EVEJge3lAYTxCZ2A1Vwp6PnBWVnlwcE9zQjE+ZGVCZntu
bXZqSVlBVDcxbGBAUzReJXdrdnREdk90PHNmcSRjMTg3fCRSczg3WT11OFdDTDkKekxvPk9yakYt
PExBfll7YTk3YDtMTXVndWQ/fjBaRzBeTXVRezA4SFhAR1pMNkJLOWVNI3ttbmZsKzl5LWB7YUxJ
CnpTMFhyMjFoNiN7emFSKjVOZGoxQFJFQyQhPCUjKXh7JGk8IVlrSC1yQzRsYz45M2R3MHUrKXMj
JCRyJURfcjZ0WQp6LXFzeyRffUQ1VSphKiQqX0wlckJsTEc2KjRid15ULXxLcH5fcmNPVVVnOz4j
NSVQSV5PYU55fTl6MFQtJFJ3UWkKemtmVXBPUE9ROTA7QkNHdjdVNDBUbzQlKXJfJnRCaSN7TC1a
bFp4cDhzUi13TGh9Jk17Y1I+JjVFcnxWUWZoeiRsCnpsfWNsNUBlOUsrdTx+RlMxT1kpMTxTTGNR
QEtVS1hyY2Z4e2YkMHpJbWpHNTF6YysjSlZIfE9gTlhAcVp2cGBWUAp6RkxiTVhIb0ZMQiNRPj5Q
Wm19JF5xMCRFd2lRanpTPFhaaDZ7aCl+UEcoNGIrMDdpfjZTMn5QeWFsKEloR2w0VSQKelo3ZFBJ
KTxhWHdVaGpJKCpzKHtZeCVIc3U9Tn5RYW56WSpCQjthb3oxK2JuQjFQV21vdyMpTzNpeSFoR0tA
ZGRTCno/YX5jWSg8XiNrUil5PTVMVXMrdHtxI1M5Xk1OfXNCZjw4Ni0rLUhTY15nUnRYTnc1aD5w
dyhgcTEkMVchKzNYKQp6bipNNGBYTTd9eGJMMUducEZFM1MpWU8wYnhDZGJncSVYYGp4N1hOclAx
TFdxOShjK1UtZnprRnBfVm14Rz04UUEKek1XZE5YVVokaChUNCs4NzBRcVJaQlVaNW12MjlaZW57
KUd8U2VtcGkwKGliVz0rVjs1SXZLT3s8bWlOUjJMWUYlCnpeZnY+e2tTMTJ0M19UNl84UWx4ZyZ6
Qn1ybSo7RWdxSSk2bVlHa248JGNQJkl1OSskcD1PY2UmYVN5e1JnKmd8cQp6QGNoZUM9eytpfnFT
Y3RlSyRxTXZwSG1XIU8tYSFfP0pFPGNAPWE/fDJVZ1IzTFpjVjEtVXtHTT40VWdoX1AreGgKekI4
NCN0U0xeY0hPe30hUjJlWldiaTt3Vip3UThkJXhOMEpBenppOyhZWUUmPFIrPkw2OytOSUQlbGxM
MDV0b2RWCnpGZVRSSDg7OXdhOF5efVd2YCZBcWUmZHB2bkV1OTVsSUdEZ242SFF0NVhCdyEmKXd4
WHtAWEFFalIjXnpxdEI3Pgp6aFNsO2FkVSlQOVU8TilRe2FQcjxaKkZqdXxJMHhURUtpNmRqQk9o
UUhzX1lwbCFATXEweHVJV2RxUyp8c25YbmUKenZJbW9XMCZzVmVTWXAtMEZEcWA1XnVFVnheMUxZ
LVpKbEkqRVlfZXtTZnc4LTsoMzNeQGpXRT5XJXVwMShMTFdVCnomTm5hdmI4OUBOIVBiJW5mNTBy
dDZEPFRaanFYOGB3VnZZYiExUDFUTkkzcDdXfkJPK0NUYW4jMlRETkA2dmU2egp6Z0NIT2JMKStS
NmdDT3t5QGd3SiFOSEdkciVMMDU/SzM3WEVfZDglVztQMDN8SylWQ3BXO0pqJiVgKlR9UDVnU1kK
ekt3YjYkTXp6fW0oaURHLVlQS14pMWhiP2tmcU0tPCkxY0IkZmtEbiY+XlRrWXc5PztadShqPUxN
WXlle0g4NVlvCnp4Z3JGczxha3pkMDwjcHImTylKWmNQXkooNXs2K1Y2MSpTP0RpVDU8NDh5Ukol
aks1SGd5PkVqT29RMWUqMGVZVgp6di1heUx6fXgpKWgqJmRJRlV2MmZAVTtTOzZHNjxIUmhZQFJO
cmh8P2VxTWhDbmBUKmolZnU9Py0jVUlCclhUUU4Kej53STdBaEl0RVBpZFklWS03azdHVz42NV56
NnExbThuYDkpLTQyKyFmSUV2TnhEVzIkMjErfTxDR0IqWFVKRD93CnpIbE5RPVBjc28odG5YOTtu
MEFgTEY/NHI/OSNAQmd4NEZMeG1vJXw3ez5vdWlQMmQoT2R9a3lhOCFmRUBBQVBYbgp6PXpiU0Na
c21XQzZrKktiVUV0NzR8NE9Xaj09MFk4bVpYQDY9N0M1QT8qdlp3U1BydiM2UXFUe3kkYVV9YlFP
IW0KenVLcmtuNSEyOz9Vc2ZscEwpUzBQZSh+PldsKkprem12RjRqPDh7dWdBIzdgS2B9JGlvYzkj
TkhOb2FhVVEhaCQmCnpkX0tEWFJ7JWZIeEV1eF5eSUpwKD0jb2ohYjRsUzAhUFEwVkE8WWJvMFZz
O2VjIU9pMXB2al8+QEQ/SX0kfGw3Wgp6SDM8fUB4ZTNZRUY9XlAoa2FmRDh1MzFEO0hWdU00N0lm
Y25CKm5LSjxMT34qajMye2pKMGtpblNgUEFYTkFhaDwKeiN6ISZVZngmcG1lcDw3YXFCSilCU3I8
NCtBcXA7dDc5bTxuZFZoU2dMO3o9SkJ6fGl3QCFRfX57M2ZTN1o7RURSCnpNZSpPZnFaZHN9bXJj
LVUpd05sVSZ2bFcxRX5+NzJ7bUFrRVBmcFJxcFJDemFRSlB4LSgrWFNHO3VtQHB6cUE1KQp6c2Ip
X19YP184JEMyKDFiLTs0NzMwPiVOTzU3WXV3NmN4YWxMWUtBcEVoVT9nVykobjFYOzE7ST1RTmEl
amhGcz0Kemc+MHQwZ3FSV0x0ZnR3ZDVrTVVQUUl0TkMoPEpEWF88Pm9OPCM3P2hwbjxNU1FJcmU+
Rno5N1JYYTxHQHcqcDdYCnp7XjZKZmZEfWQ5ajBDWEotb0JWY0h2TjgyVmIpb2xWcFJlRlhWSlkl
LWJMMkVVITwwcXFCSzdGUDU5ZFBtWEg8TwpxMTUrXzsmfVBZe25vU2p4JjxfX0VZVmx0ZUFtKD1V
Vl43dXEwMDAwPE1OVU1uTFNUWVY/NiVxZgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzCmluZGV4IDc0Y2QzYjJlNjZhY2QzODk2MjIyNjI1
YTgxNTk4N2E5MThiMmIxYTUuLjQwYzA2OTBjZmFhZDQ4MGMwZWM1NDEzY2U5YTY3OTYxMDlmMjAw
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmls
ZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxl
Vmlldy5qcwpAQCAtNTc0LDEyICs1NzQsMTIgQEAgV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBl
LlR5cGVJZCA9ICJDUFUiOwogV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLnByb3RvdHlwZSA9
IHsKICAgICBnZXQgYnV0dG9uVG9vbHRpcCgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
cmVjb3JkaW5nID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9wIHByb2ZpbGluZy4iKSA6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU3RhcnQgcHJvZmlsaW5nLiIpOworICAgICAgICByZXR1cm4g
dGhpcy5fcmVjb3JkaW5nID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9wIENQVSBwcm9maWxp
bmcuIikgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IENQVSBwcm9maWxpbmcuIik7CiAg
ICAgfSwKIAogICAgIGdldCBidXR0b25TdHlsZSgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fcmVjb3JkaW5nID8gInJlY29yZC1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSBzdGF0dXMtYmFy
LWl0ZW0gdG9nZ2xlZC1vbiIgOiAicmVjb3JkLXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtIHN0YXR1
cy1iYXItaXRlbSI7CisgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRpbmcgPyAicmVjb3JkLWNw
dS1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSBzdGF0dXMtYmFyLWl0ZW0gdG9nZ2xlZC1vbiIgOiAi
cmVjb3JkLWNwdS1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSBzdGF0dXMtYmFyLWl0ZW0iOwogICAg
IH0sCiAKICAgICBidXR0b25DbGlja2VkOiBmdW5jdGlvbigpCkBAIC01ODcsOSArNTg3LDkgQEAg
V2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
cmVjb3JkaW5nID0gIXRoaXMuX3JlY29yZGluZzsKIAogICAgICAgICBpZiAodGhpcy5fcmVjb3Jk
aW5nKQotICAgICAgICAgICAgUHJvZmlsZXJBZ2VudC5zdGFydCgpOworICAgICAgICAgICAgUHJv
ZmlsZXJBZ2VudC5zdGFydChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUuVHlwZUlkKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgUHJvZmlsZXJBZ2VudC5zdG9wKCk7CisgICAgICAgICAg
ICBQcm9maWxlckFnZW50LnN0b3AoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLlR5cGVJZCk7
CiAgICAgfSwKIAogICAgIGdldCB3ZWxjb21lTWVzc2FnZSgpCkBAIC02MDUsMTMgKzYwNSwxMyBA
QCBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUucHJvdG90eXBlID0gewogICAgIHN0YXJ0UmVj
b3JkaW5nUHJvZmlsZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fcmVjb3JkaW5n
ID0gdHJ1ZTsKLSAgICAgICAgUHJvZmlsZXJBZ2VudC5zdGFydCgpOworICAgICAgICBQcm9maWxl
ckFnZW50LnN0YXJ0KFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5UeXBlSWQpOwogICAgIH0s
CiAKICAgICBzdG9wUmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAg
dGhpcy5fcmVjb3JkaW5nID0gZmFsc2U7Ci0gICAgICAgIFByb2ZpbGVyQWdlbnQuc3RvcCgpOwor
ICAgICAgICBQcm9maWxlckFnZW50LnN0b3AoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLlR5
cGVJZCk7CiAgICAgfSwKIAogICAgIHNldFJlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKGlzUHJv
ZmlsaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Q
cm9maWxlc1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9m
aWxlc1BhbmVsLmpzCmluZGV4IDhkOGE5N2EwMTY4YmQ5YjU1MzI0YmRlMTc3YTcyNzVhZWJhMGY5
NGEuLmJhZmRjOTVhZDBiODg0OWM3MTg0MTY5N2UyNGJlZjQ2YjE3OWMyY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKQEAg
LTEzNSw2ICsxMzUsNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbCA9IGZ1bmN0aW9uKCkK
ICAgICB0aGlzLl9yZXNldCgpOwogCiAgICAgdGhpcy5fcmVnaXN0ZXJQcm9maWxlVHlwZShuZXcg
V2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlKCkpOworICAgIHRoaXMuX3JlZ2lzdGVyUHJvZmls
ZVR5cGUobmV3IFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlKCkpOwogICAgIGlm
IChDYXBhYmlsaXRpZXMuaGVhcFByb2ZpbGVyUHJlc2VudCkKICAgICAgICAgdGhpcy5fcmVnaXN0
ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlw
ZSgpKTsKIApAQCAtMjg2LDEyICsyODcsOCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5w
cm90b3R5cGUgPSB7CiAKICAgICBfYWRkUHJvZmlsZUhlYWRlcjogZnVuY3Rpb24ocHJvZmlsZSkK
ICAgICB7Ci0gICAgICAgIGlmICh0aGlzLmhhc1RlbXBvcmFyeVByb2ZpbGUocHJvZmlsZS50eXBl
SWQpKSB7Ci0gICAgICAgICAgICBpZiAocHJvZmlsZS50eXBlSWQgPT09IFdlYkluc3BlY3Rvci5D
UFVQcm9maWxlVHlwZS5UeXBlSWQpCi0gICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlUHJvZmls
ZUhlYWRlcih0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVQcm9maWxlSGVhZGVyKHRoaXMuX3RlbXBv
cmFyeVRha2luZ1NuYXBzaG90KTsKLSAgICAgICAgfQorICAgICAgICBpZiAodGhpcy5oYXNUZW1w
b3JhcnlQcm9maWxlKHByb2ZpbGUudHlwZUlkKSkKKyAgICAgICAgICAgIHRoaXMuX3JlbW92ZVBy
b2ZpbGVIZWFkZXIodGhpc1t0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlRmllbGROYW1l
KHByb2ZpbGUudHlwZUlkKV0pOwogCiAgICAgICAgIHZhciB0eXBlSWQgPSBwcm9maWxlLnR5cGVJ
ZDsKICAgICAgICAgdmFyIHByb2ZpbGVUeXBlID0gdGhpcy5nZXRQcm9maWxlVHlwZSh0eXBlSWQp
OwpAQCAtODI0LDIzICs4MjEsMzAgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLnByb2ZpbGVWaWV3U3RhdHVzQmFySXRlbXNDb250YWluZXIu
c3R5bGUubGVmdCA9IE1hdGgubWF4KDYgKiAzMSwgd2lkdGgpICsgInB4IjsKICAgICB9LAogCi0g
ICAgX3NldFJlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKGlzUHJvZmlsaW5nKQorICAgIF90ZW1w
b3JhcnlSZWNvcmRpbmdQcm9maWxlRmllbGROYW1lOiBmdW5jdGlvbihwcm9maWxlVHlwZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiAiX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUiICsgcHJvZmls
ZVR5cGU7CisgICAgfSwKKworICAgIF9zZXRSZWNvcmRpbmdQcm9maWxlOiBmdW5jdGlvbihwcm9m
aWxlVHlwZSwgaXNQcm9maWxpbmcpCiAgICAgewotICAgICAgICB0aGlzLmdldFByb2ZpbGVUeXBl
KFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5UeXBlSWQpLnNldFJlY29yZGluZ1Byb2ZpbGUo
aXNQcm9maWxpbmcpOwotICAgICAgICBpZiAodGhpcy5oYXNUZW1wb3JhcnlQcm9maWxlKFdlYklu
c3BlY3Rvci5DUFVQcm9maWxlVHlwZS5UeXBlSWQpICE9PSBpc1Byb2ZpbGluZykgewotICAgICAg
ICAgICAgaWYgKCF0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlKSB7Ci0gICAgICAgICAg
ICAgICAgdGhpcy5fdGVtcG9yYXJ5UmVjb3JkaW5nUHJvZmlsZSA9IHsKLSAgICAgICAgICAgICAg
ICAgICAgdHlwZUlkOiBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUuVHlwZUlkLAorICAgICAg
ICB0aGlzLmdldFByb2ZpbGVUeXBlKHByb2ZpbGVUeXBlKS5zZXRSZWNvcmRpbmdQcm9maWxlKGlz
UHJvZmlsaW5nKTsKKyAgICAgICAgaWYgKHRoaXMuaGFzVGVtcG9yYXJ5UHJvZmlsZShwcm9maWxl
VHlwZSkgIT09IGlzUHJvZmlsaW5nKSB7CisgICAgICAgICAgICB2YXIgdGVtcFByb2ZpbGVGaWVs
ZE5hbWUgPSB0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlRmllbGROYW1lKHByb2ZpbGVU
eXBlKTsKKyAgICAgICAgICAgIGlmICghdGhpc1t0ZW1wUHJvZmlsZUZpZWxkTmFtZV0pIHsKKyAg
ICAgICAgICAgICAgICB0aGlzW3RlbXBQcm9maWxlRmllbGROYW1lXSA9IHsKKyAgICAgICAgICAg
ICAgICAgICAgdHlwZUlkOiBwcm9maWxlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgdGl0bGU6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjb3JkaW5n4oCmIiksCiAgICAgICAgICAgICAgICAg
ICAgIHVpZDogLTEsCiAgICAgICAgICAgICAgICAgICAgIGlzVGVtcG9yYXJ5OiB0cnVlCiAgICAg
ICAgICAgICAgICAgfTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChpc1Byb2ZpbGlu
ZykgewotICAgICAgICAgICAgICAgIHRoaXMuX2FkZFByb2ZpbGVIZWFkZXIodGhpcy5fdGVtcG9y
YXJ5UmVjb3JkaW5nUHJvZmlsZSk7Ci0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnVzZXJN
ZXRyaWNzLlByb2ZpbGVzQ1BVUHJvZmlsZVRha2VuLnJlY29yZCgpOworICAgICAgICAgICAgICAg
IHRoaXMuX2FkZFByb2ZpbGVIZWFkZXIodGhpc1t0ZW1wUHJvZmlsZUZpZWxkTmFtZV0pOworICAg
ICAgICAgICAgICAgIGlmIChwcm9maWxlVHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVU
eXBlLlR5cGVJZCkKKyAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnVzZXJNZXRyaWNz
LlByb2ZpbGVzQ1BVUHJvZmlsZVRha2VuLnJlY29yZCgpOwogICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlUHJvZmlsZUhlYWRlcih0aGlzLl90ZW1wb3JhcnlS
ZWNvcmRpbmdQcm9maWxlKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVQcm9maWxlSGVh
ZGVyKHRoaXNbdGVtcFByb2ZpbGVGaWVsZE5hbWVdKTsKICAgICAgICAgfQogICAgICAgICB0aGlz
LnVwZGF0ZVByb2ZpbGVUeXBlQnV0dG9ucygpOwogICAgIH0sCkBAIC04NDgsMTUgKzg1MiwxNiBA
QCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgdGFrZUhlYXBT
bmFwc2hvdDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmhhc1RlbXBvcmFy
eVByb2ZpbGUoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZS5UeXBlSWQp
KSB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX3RlbXBvcmFyeVRha2luZ1NuYXBzaG90KSB7Ci0g
ICAgICAgICAgICAgICAgdGhpcy5fdGVtcG9yYXJ5VGFraW5nU25hcHNob3QgPSB7CisgICAgICAg
ICAgICB2YXIgdGVtcFByb2ZpbGVGaWVsZE5hbWUgPSB0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQ
cm9maWxlRmllbGROYW1lKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90UHJvZmlsZVR5cGUu
VHlwZUlkKTsKKyAgICAgICAgICAgIGlmICghdGhpc1t0ZW1wUHJvZmlsZUZpZWxkTmFtZV0pIHsK
KyAgICAgICAgICAgICAgICB0aGlzW3RlbXBQcm9maWxlRmllbGROYW1lXSA9IHsKICAgICAgICAg
ICAgICAgICAgICAgdHlwZUlkOiBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFByb2ZpbGVU
eXBlLlR5cGVJZCwKICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU25hcHNob3R0aW5n4oCmIiksCiAgICAgICAgICAgICAgICAgICAgIHVpZDogLTEsCiAg
ICAgICAgICAgICAgICAgICAgIGlzVGVtcG9yYXJ5OiB0cnVlCiAgICAgICAgICAgICAgICAgfTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuX2FkZFByb2ZpbGVIZWFkZXIodGhpcy5f
dGVtcG9yYXJ5VGFraW5nU25hcHNob3QpOworICAgICAgICAgICAgdGhpcy5fYWRkUHJvZmlsZUhl
YWRlcih0aGlzW3RlbXBQcm9maWxlRmllbGROYW1lXSk7CiAgICAgICAgIH0KICAgICAgICAgUHJv
ZmlsZXJBZ2VudC50YWtlSGVhcFNuYXBzaG90KCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci51c2Vy
TWV0cmljcy5Qcm9maWxlc0hlYXBQcm9maWxlVGFrZW4ucmVjb3JkKCk7CkBAIC04NjUsMTAgKzg3
MCwxMSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgX3Jl
cG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzOiBmdW5jdGlvbihkb25lLCB0b3RhbCkKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLmhhc1RlbXBvcmFyeVByb2ZpbGUoV2ViSW5zcGVjdG9yLkRldGFpbGVk
SGVhcHNob3RQcm9maWxlVHlwZS5UeXBlSWQpKSB7Ci0gICAgICAgICAgICB0aGlzLl90ZW1wb3Jh
cnlUYWtpbmdTbmFwc2hvdC5zaWRlYmFyRWxlbWVudC5zdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiJS4yZiUlIiwgKGRvbmUgLyB0b3RhbCkgKiAxMDApOwotICAgICAgICAgICAgdGhp
cy5fdGVtcG9yYXJ5VGFraW5nU25hcHNob3Quc2lkZWJhckVsZW1lbnQud2FpdCA9IHRydWU7Cisg
ICAgICAgICAgICB2YXIgdGVtcFNuYXBzaG90ID0gdGhpc1t0aGlzLl90ZW1wb3JhcnlSZWNvcmRp
bmdQcm9maWxlRmllbGROYW1lKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90UHJvZmlsZVR5
cGUuVHlwZUlkKV07CisgICAgICAgICAgICB0ZW1wU25hcHNob3Quc2lkZWJhckVsZW1lbnQuc3Vi
dGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiUuMmYlJSIsIChkb25lIC8gdG90YWwpICog
MTAwKTsKKyAgICAgICAgICAgIHRlbXBTbmFwc2hvdC5zaWRlYmFyRWxlbWVudC53YWl0ID0gdHJ1
ZTsKICAgICAgICAgICAgIGlmIChkb25lID49IHRvdGFsKQotICAgICAgICAgICAgICAgIHRoaXMu
X3JlbW92ZVByb2ZpbGVIZWFkZXIodGhpcy5fdGVtcG9yYXJ5VGFraW5nU25hcHNob3QpOworICAg
ICAgICAgICAgICAgIHRoaXMuX3JlbW92ZVByb2ZpbGVIZWFkZXIodGVtcFNuYXBzaG90KTsKICAg
ICAgICAgfQogICAgIH0KIH0KQEAgLTkwMiw5ICs5MDgsOSBAQCBXZWJJbnNwZWN0b3IuUHJvZmls
ZXJEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcHJvZmlsZXIuX2Zpbmlz
aEhlYXBTbmFwc2hvdCh1aWQpOwogICAgIH0sCiAKLSAgICBzZXRSZWNvcmRpbmdQcm9maWxlOiBm
dW5jdGlvbihpc1Byb2ZpbGluZykKKyAgICBzZXRSZWNvcmRpbmdQcm9maWxlOiBmdW5jdGlvbihw
cm9maWxlVHlwZSwgaXNQcm9maWxpbmcpCiAgICAgewotICAgICAgICB0aGlzLl9wcm9maWxlci5f
c2V0UmVjb3JkaW5nUHJvZmlsZShpc1Byb2ZpbGluZyk7CisgICAgICAgIHRoaXMuX3Byb2ZpbGVy
Ll9zZXRSZWNvcmRpbmdQcm9maWxlKHByb2ZpbGVUeXBlLCBpc1Byb2ZpbGluZyk7CiAgICAgfSwK
IAogICAgIHJlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzOiBmdW5jdGlvbihkb25lLCB0b3RhbCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCA1
NDVmMWRiZTdlOTIzYmRmMDNiZTlhYzQ2NjQ2MjM1OGQzNmY1N2UyLi44MmE1MmQ5MWIzNzQ0Zjlm
MTZkYTRhZjQ3MTMxMWY3ZDFjYjg3MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC0yOSw2ICsyOSw3IEBACiAgICAgPGZpbGU+Q29va2ll
c1RhYmxlLmpzPC9maWxlPgogICAgIDxmaWxlPkNTU0NvbXBsZXRpb25zLmpzPC9maWxlPgogICAg
IDxmaWxlPkNTU0tleXdvcmRDb21wbGV0aW9ucy5qczwvZmlsZT4KKyAgICA8ZmlsZT5DU1NTZWxl
Y3RvclByb2ZpbGVWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkNTU1N0eWxlTW9kZWwuanM8L2Zp
bGU+CiAgICAgPGZpbGU+RGF0YWJhc2UuanM8L2ZpbGU+CiAgICAgPGZpbGU+RGF0YWJhc2VRdWVy
eVZpZXcuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5jc3MKaW5kZXggZGE1Y2EzYjhmOTNlOGQzYzc0MzYwYjk3ODM1NTdkMjU1YWEx
YjZhZC4uNGVkZGYwZjdhMWU5MTNiZDY5ODg5NzVhNmQxMTY1ZTJlODBiZDIwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwpAQCAtMjUw
NSwxNSArMjUwNSwyMyBAQCBib2R5LnBsYXRmb3JtLW1hYyAjZHJhd2VyLXN0YXR1cy1iYXIgLnNl
YXJjaC1zdGF0dXMtYmFyLXByb2dyZXNzIHsKICAgICB3aGl0ZS1zcGFjZTogcHJlOwogfQogCi0u
cmVjb3JkLXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtIC5nbHlwaCB7CisucmVjb3JkLWNwdS1wcm9m
aWxlLXN0YXR1cy1iYXItaXRlbSAuZ2x5cGggewogICAgIC13ZWJraXQtbWFzay1wb3NpdGlvbjog
LTI4OHB4IDA7CiB9CiAKLS5yZWNvcmQtcHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0udG9nZ2xlZC1v
biAuZ2x5cGggeworLnJlY29yZC1jcHUtcHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0udG9nZ2xlZC1v
biAuZ2x5cGggewogICAgIC13ZWJraXQtbWFzay1wb3NpdGlvbjogLTI4OHB4IC0yNHB4OwogICAg
IGJhY2tncm91bmQtY29sb3I6IHJnYigyMTYsIDAsIDApICFpbXBvcnRhbnQ7CiB9CiAKKy5yZWNv
cmQtY3NzLXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtIC5nbHlwaCB7CisgICAgLXdlYmtpdC1tYXNr
LXBvc2l0aW9uOiAtMTI4cHggLTQ4cHg7Cit9CisKKy5yZWNvcmQtY3NzLXByb2ZpbGUtc3RhdHVz
LWJhci1pdGVtLnRvZ2dsZWQtb24gLmdseXBoIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io
MjE2LCAwLCAwKSAhaW1wb3J0YW50OworfQorCiAuc3RvcmFnZS1lbXB0eS12aWV3LCAuc3RvcmFn
ZS12aWV3IC5zdG9yYWdlLXRhYmxlLWVycm9yIHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAg
ICAgdG9wOiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWwKaW5kZXggMjM0ZWE3ZGJjY2YzM2RjNDhjMWZkODJlNjhiYjQ4MGFjYTFjZWQ0
Ny4uZTE4MzhlMDE2ODI0N2M5ODI5ZjIwNDkxZTQwNjU2NDA1Zjk3OTI3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xNTQs
NiArMTU0LDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJCb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVl
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJQ
cm9maWxlVmlldy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUGFydGlhbFF1aWNrU29ydC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSGVhcFNuYXBzaG90
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJI
ZWFwU25hcHNob3RQcm94eS5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>118220</attachid>
            <date>2011-12-07 09:38:13 -0800</date>
            <delta_ts>2011-12-07 09:38:13 -0800</delta_ts>
            <desc>[IMAGE] Screenshot of a CSS selector profile</desc>
            <filename>SelectorProfile.png</filename>
            <type>image/png</type>
            <size>93561</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">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
y0u0hWRdjY2NQUFBAFBTU+Pv7x8REdFHhyQnJx8+fHjs2LHPnj2bM2dOXV1deXn55s2bp02bJlRI
SkrK3bt3LSws+l9vb4WvWrWqq6uLuNUhLi4ueLpKTk5OSEiwsLCor6/39PT09fXtsVihNoiOxYf1
xqccJlG//vrr7NmziRkJAAQHB//4449Pnz4VOpdwOBxZWVkyJTU1ddasWWZmZgAgJiZ26NAhcnrd
m66ursbGRsFTpqAeC0xOTu6tbaampmVlZW1tbQoKCj///POSJUuIOXdv6T2ytbWVlpbet29fZGSk
6FIlJaU1a9acP3/e1tY2Ozt77Nix4eHhfn5+xKT/w7pUtEY1NbWampp//etfc+fOtbKyysrK6s9G
kp2d3c89qD+lHTx4kNiiFixYILotHTp0iM/nS0pKrl+/nkqlFhcXb9iw4fLly/3f1MnyiS2WxWIR
b4ltRnQ/IvMvXLhQdFFubu4vv/zi7+8/Y8aMp0+fEjn9/f1x/+pj//oo+jiEAsD69esjIiJiYmLI
bmez2e7u7m1tbbGxsVZWVsXFxbNmzQKAUaNG1dfXNzU1Xb9+vcfNWFtbW3DItLS0Pv1ZW09P7/z5
8xs2bOgtQNE8ogGqqal9yjaL9rm3tzdx4VpVVaWoqNjjIObm5s6ZMwcADA0N6+rquFyulJQUTvoR
+nAaGhqXLl1qa2szMTFxd3cnEvfv36+trZ2UlMRkMs3NzYuLiwFg+PDhx48fZzAY06ZNCwkJ2b9/
v62t7YYNGx4/frxkyZIe1xLNI3jmsLa2joqKys/PZ7FYZ86cEVo3MTHR0NAwJibm7du3qampYWFh
tbW1/v7+KSkpAPDDDz+Ymppu3bqVwWBMnjzZ0dFRtIVkXRUVFcHBwVQq9e3bt46Ojn1Pc4lyjh07
lpaWtm/fvszMzDt37iQkJKipqfVWyJ+qt8fCXVxcxMXF6XS6t7f3rl27hNozatSo/fv3d3V1mZiY
eHh49Fas0OgI9aeEhMQH9ManHCZRb968IZ8oIBgaGr5+/VpZWfnu3bszZswgTu0xMTGjRo0iJ9A1
NTV6enrkKoLzFSEPHjyYMWNGS0sLl8v19/cPDAzMz88nEokMM2fOjI+P77HA3tomLy8PAO7u7mlp
aQsXLiwtLf3yyy9zc3OJPD2mi9ZIvD5w4MC0adMEL9gEaWlp1dXVEXdwV65caWRkJC0tfe/ePXIO
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
wJt2Dyvl0k4EziyCAAAAAElFTkSuQmCC
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118221</attachid>
            <date>2011-12-07 09:45:40 -0800</date>
            <delta_ts>2011-12-09 09:10:58 -0800</delta_ts>
            <desc>[PATCH] Fix Mac compilability</desc>
            <filename>bug-74004-20111207214537.patch</filename>
            <type>text/plain</type>
            <size>78296</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmIyNjdiZmIxMTdkZTk0
MGNjMjE4MjljM2JiZTFiZWVkOTJhNDYwYy4uMzU1YzgxZTg0NmIzMDg2MjU1NGQ0MDkwMjAyN2Nk
NThjMGQ2Njg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAxMS0xMi0wNyAgQWxl
eGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IEltcGxlbWVudCBDU1Mgc2VsZWN0b3IgcHJvZmlsZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MDA0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBDU1Mg
c2VsZWN0b3IgcHJvZmlsZXIgbWVhc3VyZXMgdGhlIHRvdGFsIHRpbWUgcmVxdWlyZWQgdG8gbWF0
Y2ggYSBjZXJ0YWluIHNlbGVjdG9yCisgICAgICAgIGFnYWluc3QgRE9NIG5vZGVzLCBhcyB3ZWxs
IGFzIHRoZSBudW1iZXIgb2Ygc2VsZWN0b3IgbWF0Y2ggcnVucyAoY2hlY2tzIGlmIHRoZSBzZWxl
Y3RvciBpcyBhcHBsaWNhYmxlIHRvIHRoZSBub2RlKQorICAgICAgICBhbmQgYWN0dWFsIG1hdGNo
ZXMgKGkuZS4gdGhlIG51bWJlciBvZiBub2RlcyB3aGljaCBtYXRjaGVkIHRoZSBzZWxlY3Rvci4p
IE11bHRpcGxlIHNlbGVjdG9ycyB3aXRoIHRoZSBzYW1lCisgICAgICAgIHNlbGVjdG9yIHRleHQg
YXJlIGNvYWxlc2NlZCBpbnRvIG9uZSByZWNvcmQuIFRoZSBDU1NTdHlsZVNlbGVjdG9yOjptYXRj
aFJ1bGVzRm9yTGlzdCgpIG1ldGhvZCBpcyBpbnN0cnVtZW50ZWQuCisKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVTZWxlY3Rvcjo6bWF0Y2hSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1h
dGNoUnVsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRNYXRjaFJ1bGVJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxNYXRjaFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRNYXRjaFJ1bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxl
ckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OlNl
bGVjdG9yUHJvZmlsZTo6Y29tbWl0U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUHJvZmlsZXJBZ2VudDo6U2VsZWN0b3JQcm9maWxlOjp0b0luc3BlY3Rvck9iamVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpJbnNwZWN0b3JQcm9maWxl
ckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmFkZFNl
bGVjdG9yUHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50
OjpjcmVhdGVTZWxlY3RvclByb2ZpbGVIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZUhlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQcm9maWxlckFnZW50OjpyZW1vdmVQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVzZXRGcm9udGVuZFByb2ZpbGVzKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNsZWFyRnJvbnRlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVzdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpzdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ6OnRvZ2dsZVJlY29yZEJ1dHRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRPYmplY3RCeUhlYXBPYmplY3RJZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp3aWxsTWF0Y2hSdWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmRpZE1hdGNoUnVsZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmlkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclByb2ZpbGVyQWdlbnQ6OlJ1bGVNYXRjaGluZ1N0YXRzOjpSdWxlTWF0Y2hpbmdTdGF0
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpTZWxlY3RvclBy
b2ZpbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50
OjpTZWxlY3RvclByb2ZpbGU6On5TZWxlY3RvclByb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6U2VsZWN0b3JQcm9maWxlOjp0aXRsZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpTZWxlY3RvclByb2ZpbGU6OnVpZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpTZWxlY3RvclByb2Zp
bGU6OnRvdGFsTWF0Y2hpbmdUaW1lTXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6U2VsZWN0b3JQcm9maWxlOjpTZWxlY3RvclByb2ZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6aW5jcmVtZW50SWQpOgorICAgICAgICAq
IGluc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0NTU1NlbGVjdG9yUHJvZmlsZVZpZXcuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNTU1NlbGVjdG9yRGF0YUdyaWROb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
U1NTZWxlY3RvckRhdGFHcmlkTm9kZS5wcm90b3R5cGUuZ2V0IHJhd0RhdGEpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yRGF0YUdyaWROb2RlLnByb3RvdHlwZS5jcmVhdGVDZWxs
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb2ZpbGVD
YWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUu
Z2V0IHN0YXR1c0Jhckl0ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclBy
b2ZpbGVWaWV3LnByb3RvdHlwZS5nZXQgcHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuc2V0IHByb2ZpbGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLndpbGxIaWRlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZS5f
Y3JlYXRlUHJvZmlsZU5vZGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclBy
b2ZpbGVWaWV3LnByb3RvdHlwZS5yZWZyZXNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NT
ZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZS5yZWZyZXNoVmlzaWJsZURhdGEpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLnJlZnJlc2hT
aG93QXNQZXJjZW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxl
Vmlldy5wcm90b3R5cGUuc2VhcmNoQ2FuY2VsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNT
U1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLnBlcmZvcm1TZWFyY2gubWF0Y2hlc1F1ZXJ5
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlw
ZS5wZXJmb3JtU2VhcmNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2Zp
bGVWaWV3LnByb3RvdHlwZS5qdW1wVG9GaXJzdFNlYXJjaFJlc3VsdCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuanVtcFRvTGFzdFNlYXJj
aFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5w
cm90b3R5cGUuanVtcFRvTmV4dFNlYXJjaFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuanVtcFRvUHJldmlvdXNTZWFyY2hSZXN1
bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90
eXBlLnNob3dpbmdGaXJzdFNlYXJjaFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NT
U2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuc2hvd2luZ0xhc3RTZWFyY2hSZXN1bHQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLl9q
dW1wVG9TZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJv
ZmlsZVZpZXcucHJvdG90eXBlLl9zb3J0RGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NT
U2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuX3NvcnRQcm9maWxlLmdldCBzZWxlY3RvckNv
bXBhcmF0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcu
cHJvdG90eXBlLl9zb3J0UHJvZmlsZS50aW1lQ29tcGFyYXRvcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuX3NvcnRQcm9maWxlLmhpdHND
b21wYXJhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3
LnByb3RvdHlwZS5fc29ydFByb2ZpbGUubWF0Y2hlc0NvbXBhcmF0b3IpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLl9zb3J0UHJvZmlsZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5wcm90b3R5cGUuZ2V0IGJ1dHRv
blRvb2x0aXApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUu
cHJvdG90eXBlLmdldCBidXR0b25TdHlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2Vs
ZWN0b3JQcm9maWxlVHlwZS5wcm90b3R5cGUuYnV0dG9uQ2xpY2tlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5wcm90b3R5cGUuZ2V0IHdlbGNvbWVNZXNz
YWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLnByb3Rv
dHlwZS5pc1JlY29yZGluZ1Byb2ZpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVj
dG9yUHJvZmlsZVR5cGUucHJvdG90eXBlLnN0YXJ0UmVjb3JkaW5nUHJvZmlsZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5wcm90b3R5cGUuc3RvcFJlY29y
ZGluZ1Byb2ZpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5
cGUucHJvdG90eXBlLnNldFJlY29yZGluZ1Byb2ZpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUucHJvdG90eXBlLmNyZWF0ZVNpZGViYXJUcmVlRWxlbWVu
dEZvclByb2ZpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5
cGUucHJvdG90eXBlLmNyZWF0ZVZpZXcpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
SW1hZ2VzL3N0YXR1c2JhckJ1dHRvbkdseXBocy5wbmc6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9Qcm9maWxlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxl
VHlwZS5wcm90b3R5cGUuZ2V0IGJ1dHRvblRvb2x0aXApOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNQVVByb2ZpbGVUeXBlLnByb3RvdHlwZS5nZXQgYnV0dG9uU3R5bGUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLnByb3RvdHlwZS5idXR0b25DbGlja2VkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5wcm90b3R5cGUuc3RhcnRSZWNvcmRpbmdQ
cm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5wcm90b3R5cGUu
c3RvcFJlY29yZGluZ1Byb2ZpbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJv
ZmlsZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3Rv
dHlwZS5fYWRkUHJvZmlsZUhlYWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQ
YW5lbC5wcm90b3R5cGUuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGVGaWVsZE5hbWUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl9zZXRSZWNvcmRpbmdQ
cm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS50
YWtlSGVhcFNuYXBzaG90KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnBy
b3RvdHlwZS5fcmVwb3J0SGVhcFNuYXBzaG90UHJvZ3Jlc3MpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlByb2ZpbGVyRGlzcGF0Y2hlci5wcm90b3R5cGUuc2V0UmVjb3JkaW5nUHJvZmlsZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzczoKKyAgICAgICAgKC5yZWNvcmQtY3B1LXByb2Zp
bGUtc3RhdHVzLWJhci1pdGVtIC5nbHlwaCk6CisgICAgICAgICgucmVjb3JkLWNwdS1wcm9maWxl
LXN0YXR1cy1iYXItaXRlbS50b2dnbGVkLW9uIC5nbHlwaCk6CisgICAgICAgICgucmVjb3JkLWNz
cy1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSAuZ2x5cGgpOgorICAgICAgICAoLnJlY29yZC1jc3Mt
cHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0udG9nZ2xlZC1vbiAuZ2x5cGgpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6CisKIDIwMTEtMTItMDcgIEFuZHJlYXMg
S2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIE1pY3JvLW9wdGltaXplIFNjcm9s
bFZpZXc6OnZpc2libGVDb250ZW50UmVjdCgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGIzZmIxOGE2
ODM5ODQxYzFiMjRhOTIzN2E4ZjJjYzBmNjJlOWRkMjAuLjljOTUzYzZiMGY1NjViYWFlYTQ2NTky
MWU2YmU2Y2UwZmI2MzRjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYzMzgsNiArNjMzOCw3IEBA
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Db29raWVzVGFibGUuanMnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTQ29tcGxldGlvbnMuanMnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzJywKKyAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1NlbGVjdG9yUHJvZmlsZVZpZXcuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZS5qcycsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZVF1ZXJ5Vmlldy5qcycsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDIyNjRmYmI2YzAzNmMz
MDVhMjNiMzBlODAxMzBiZTdjNGQ2YTYzOGEuLjUwZTM5YzM5Y2I2OTlhNmM3OTNiYWM0NzA3Y2Ri
OTkzMjAxY2Q4NzkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCkBAIC02ODg2MSw2ICs2ODg2MSwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxDU1NTZWxl
Y3RvclByb2ZpbGVWaWV3LmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxDU1NTdHlsZU1vZGVsLmpzIgog
CQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
CmluZGV4IDgxMjNiNWFjOThlZDVjNGU1OTQ3M2I4Y2M5MDNhZjI4NDU1MmMyMmQuLmIzMTIzZDY4
YzJhNjEzMGU4M2I2MmRhYjBiYTRhZDVhYjEyN2IxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIVE1MUHJvZ3Jlc3NFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRB
cmVhRWxlbWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2lu
Y2x1ZGUgIktleWZyYW1lTGlzdC5oIgogI2luY2x1ZGUgIkxpbmtIYXNoLmgiCiAjaW5jbHVkZSAi
TG9jYWxlVG9TY3JpcHRNYXBwaW5nLmgiCkBAIC03MDMsMjMgKzcwNCwzNCBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6Om1hdGNoUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIHJ1
bGVzLCBpbnQmIGZpcgogICAgIHVuc2lnbmVkIHNpemUgPSBydWxlcy0+c2l6ZSgpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgY29uc3QgUnVsZURh
dGEmIHJ1bGVEYXRhID0gcnVsZXMtPmF0KGkpOwotICAgICAgICBpZiAoY2FuVXNlRmFzdFJlamVj
dCAmJiBtX2NoZWNrZXIuZmFzdFJlamVjdFNlbGVjdG9yPFJ1bGVEYXRhOjptYXhpbXVtSWRlbnRp
ZmllckNvdW50PihydWxlRGF0YS5kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzKCkp
KQorICAgICAgICBDU1NTdHlsZVJ1bGUqIHJ1bGUgPSBydWxlRGF0YS5ydWxlKCk7CisgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxNYXRjaFJ1bGUoZG9jdW1lbnQoKSwgcnVsZSk7CisgICAgICAgIGlmIChj
YW5Vc2VGYXN0UmVqZWN0ICYmIG1fY2hlY2tlci5mYXN0UmVqZWN0U2VsZWN0b3I8UnVsZURhdGE6
Om1heGltdW1JZGVudGlmaWVyQ291bnQ+KHJ1bGVEYXRhLmRlc2NlbmRhbnRTZWxlY3RvcklkZW50
aWZpZXJIYXNoZXMoKSkpIHsKKyAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkTWF0Y2hSdWxlKGNvb2tpZSwgZmFsc2UpOwogICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KICAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3IocnVsZURhdGEpKSB7Ci0gICAgICAgICAg
ICBpZiAoIW1hdGNoZXNJblRyZWVTY29wZShtX2VsZW1lbnQtPnRyZWVTY29wZSgpLCBtX2NoZWNr
ZXIuaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKCkpKQorICAgICAgICAgICAgaWYgKCFtYXRjaGVz
SW5UcmVlU2NvcGUobV9lbGVtZW50LT50cmVlU2NvcGUoKSwgbV9jaGVja2VyLmhhc1Vua25vd25Q
c2V1ZG9FbGVtZW50cygpKSkgeworICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkTWF0Y2hSdWxlKGNvb2tpZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gSWYgdGhlIHJ1bGUgaGFzIG5vIHBy
b3BlcnRpZXMgdG8gYXBwbHksIHRoZW4gaWdub3JlIGl0IGluIHRoZSBub24tZGVidWcgbW9kZS4K
LSAgICAgICAgICAgIENTU1N0eWxlUnVsZSogcnVsZSA9IHJ1bGVEYXRhLnJ1bGUoKTsKICAgICAg
ICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBkZWNsID0gcnVsZS0+ZGVjbGFyYXRp
b24oKTsKLSAgICAgICAgICAgIGlmICghZGVjbCB8fCAoIWRlY2wtPmxlbmd0aCgpICYmICFpbmNs
dWRlRW1wdHlSdWxlcykpCisgICAgICAgICAgICBpZiAoIWRlY2wgfHwgKCFkZWNsLT5sZW5ndGgo
KSAmJiAhaW5jbHVkZUVtcHR5UnVsZXMpKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRNYXRjaFJ1bGUoY29va2llLCBmYWxzZSk7CiAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAobV9zYW1lT3JpZ2luT25seSAmJiAhbV9jaGVj
a2VyLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QocnVsZS0+YmFzZVVS
TCgpKSkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtX3NhbWVPcmlnaW5Pbmx5ICYm
ICFtX2NoZWNrZXIuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChydWxl
LT5iYXNlVVJMKCkpKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRNYXRjaFJ1bGUoY29va2llLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBtYXRjaGluZyBub3JtYWwg
cnVsZXMsIHNldCBhIHBzZXVkbyBiaXQgaWYKICAgICAgICAgICAgIC8vIHdlIHJlYWxseSBqdXN0
IG1hdGNoZWQgYSBwc2V1ZG8tZWxlbWVudC4KICAgICAgICAgICAgIGlmIChtX2R5bmFtaWNQc2V1
ZG8gIT0gTk9QU0VVRE8gJiYgbV9jaGVja2VyLnBzZXVkb1N0eWxlKCkgPT0gTk9QU0VVRE8pIHsK
LSAgICAgICAgICAgICAgICBpZiAobV9jaGVja2VyLmlzQ29sbGVjdGluZ1J1bGVzT25seSgpKQor
ICAgICAgICAgICAgICAgIGlmIChtX2NoZWNrZXIuaXNDb2xsZWN0aW5nUnVsZXNPbmx5KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNYXRjaFJ1
bGUoY29va2llLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAobV9keW5hbWljUHNldWRvIDwgRklSU1Rf
SU5URVJOQUxfUFNFVURPSUQpCiAgICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEhhc1Bz
ZXVkb1N0eWxlKG1fZHluYW1pY1BzZXVkbyk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNzMw
LDggKzc0MiwxMCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUnVsZXNGb3JMaXN0KGNv
bnN0IFZlY3RvcjxSdWxlRGF0YT4qIHJ1bGVzLCBpbnQmIGZpcgogCiAgICAgICAgICAgICAgICAg
Ly8gQWRkIHRoaXMgcnVsZSB0byBvdXIgbGlzdCBvZiBtYXRjaGVkIHJ1bGVzLgogICAgICAgICAg
ICAgICAgIGFkZE1hdGNoZWRSdWxlKCZydWxlRGF0YSk7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNYXRjaFJ1bGUoY29va2llLCB0cnVlKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1h
dGNoUnVsZShjb29raWUsIGZhbHNlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbgppbmRleCA1OTFiMmE1ZjJhOWU1YmM3MmU0MjYyYTBiMWE0MWFlOWUy
M2IyZTlmLi5lMTczZmExNDc5YzNiNTA3ZWUyMTI3MTA1MWY4ODczOGVjNDY5YzMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yMTMyLDEwICsyMTMyLDE2IEBA
CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZGlzYWJsZSIKICAgICAgICAgICAgIH0sCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIm5hbWUiOiAic3RhcnQiCisgICAgICAgICAgICAg
ICAgIm5hbWUiOiAic3RhcnQiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInByb2ZpbGVUeXBlIiwgInR5cGUiOiAic3RyaW5n
IiwgImRlc2NyaXB0aW9uIjogIlByb2ZpbGUgdHlwZSB0byBzdGFydCByZWNvcmRpbmcuIiB9Cisg
ICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAibmFtZSI6ICJzdG9wIgorICAgICAgICAgICAgICAgICJuYW1lIjogInN0b3AiLAor
ICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInByb2ZpbGVUeXBlIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlBy
b2ZpbGUgdHlwZSB0byBzdG9wIHJlY29yZGluZy4iIH0KKyAgICAgICAgICAgICAgICBdCiAgICAg
ICAgICAgICB9LAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogImdldFBy
b2ZpbGVIZWFkZXJzIiwKQEAgLTIyMDIsNiArMjIwOCw3IEBACiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgIm5hbWUiOiAic2V0UmVjb3JkaW5nUHJvZmlsZSIsCiAgICAgICAgICAgICAg
ICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJvZmls
ZVR5cGUiLCAidHlwZSI6ICJzdHJpbmciIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiaXNQcm9maWxpbmciLCAidHlwZSI6ICJib29sZWFuIiB9CiAgICAgICAgICAgICAgICAgXQog
ICAgICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggZDc4OTQyMmFhMjBjYTkzYmQ2ODg1YTlhMzQ2
OGEwNGU0NWFmYWVjOC4uYjcwNWU1MTc5ZGI0YTMyMGUyYzljMzY1ZTBiMGFhZjc4OGNjNGQwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAK
KyNpbmNsdWRlICJDU1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAj
aW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKQEAgLTQzMiw2ICs0
MzMsMjUgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjaGVkdWxlU3R5bGVS
ZWNhbGN1bGF0aW9uSW1wbChJbnN0cnVtZW50aW5nQWcKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+
ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oZG9jdW1lbnQpOwogfQogCitJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTWF0Y2hS
dWxlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBD
U1NTdHlsZVJ1bGUqIHJ1bGUpCit7CisgICAgaW50IHByb2ZpbGVyQWdlbnRJZCA9IDA7CisgICAg
aWYgKEluc3BlY3RvclByb2ZpbGVyQWdlbnQqIHByb2ZpbGVyQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLT5pbnNwZWN0b3JQcm9maWxlckFnZW50KCkpIHsKKyAgICAgICAgcHJvZmlsZXJBZ2Vu
dC0+d2lsbE1hdGNoUnVsZShydWxlKTsKKyAgICAgICAgcHJvZmlsZXJBZ2VudElkID0gcHJvZmls
ZXJBZ2VudC0+aWQoKTsKKyAgICB9CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZShpbnN0cnVtZW50aW5nQWdlbnRzLCBwcm9maWxlckFnZW50SWQpOworfQorCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTWF0Y2hSdWxlSW1wbChjb25zdCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSwgYm9vbCBtYXRjaGVkKQoreworICAgIGlm
ICghY29va2llLmZpcnN0KQorICAgICAgICByZXR1cm47CisgICAgSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudCogcHJvZmlsZXJBZ2VudCA9IGNvb2tpZS5maXJzdC0+aW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dCgpOworICAgIGlmIChwcm9maWxlckFnZW50ICYmIHByb2ZpbGVyQWdlbnQtPmlkKCkgPT0gY29v
a2llLnNlY29uZCkKKyAgICAgICAgcHJvZmlsZXJBZ2VudC0+ZGlkTWF0Y2hSdWxlKG1hdGNoZWQp
OworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YXBwbHlVc2VyQWdlbnRPdmVy
cmlkZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgU3RyaW5n
KiB1c2VyQWdlbnQpCiB7CiAgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNl
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKaW5kZXggYTFlODk5MjQ2YjRlNWVkNWYyMWIzMjQ1MWU4NjYxMmJhYTAyZTFlOS4uM2NjNTZm
ZjQ5MGJiZTgyNjc2Mzk2ZGRkYTMzODhkZTc2ODljZmZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtNDEsNiArNDEs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENTU1N0eWxlUnVsZTsKIGNsYXNz
IENoYXJhY3RlckRhdGE7CiBjbGFzcyBET01GaWxlU3lzdGVtOwogY2xhc3MgRE9NV2luZG93OwpA
QCAtMTE4LDYgKzExOSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIHdpbGxSZWNhbGN1bGF0ZVN0eWxlKERvY3VtZW50Kik7CiAgICAgc3RhdGlj
IHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbihE
b2N1bWVudCopOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2ls
bE1hdGNoUnVsZShEb2N1bWVudCosIGNvbnN0IENTU1N0eWxlUnVsZSopOworICAgIHN0YXRpYyB2
b2lkIGRpZE1hdGNoUnVsZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCBi
b29sIG1hdGNoZWQpOwogCiAgICAgc3RhdGljIHZvaWQgYXBwbHlVc2VyQWdlbnRPdmVycmlkZShG
cmFtZSosIFN0cmluZyopOwogICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kUmVxdWVzdChGcmFtZSos
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKQEAgLTI1OCw2
ICsyNjEsOCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgd2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAg
ICBzdGF0aWMgdm9pZCBkaWRSZWNhbGN1bGF0ZVN0eWxlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRTY2hlZHVsZVN0eWxlUmVj
YWxjdWxhdGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERvY3VtZW50Kik7CisgICAgc3Rh
dGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsTWF0Y2hSdWxlSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiwgY29uc3QgQ1NTU3R5bGVSdWxlKik7CisgICAgc3RhdGljIHZvaWQg
ZGlkTWF0Y2hSdWxlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCBi
b29sIG1hdGNoZWQpOwogCiAgICAgc3RhdGljIHZvaWQgYXBwbHlVc2VyQWdlbnRPdmVycmlkZUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFN0cmluZyopOwogICAgIHN0YXRpYyB2b2lkIHdpbGxT
ZW5kUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKQEAgLTcwOCw2ICs3MTMsMjUgQEAgaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlv
bihEb2N1bWVudCogZG8KICNlbmRpZgogfQogCitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1hdGNoUnVsZShEb2N1bWVu
dCogZG9jdW1lbnQsIGNvbnN0IENTU1N0eWxlUnVsZSogcnVsZSkKK3sKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SKQorICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUoKSk7CisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQor
ICAgICAgICByZXR1cm4gd2lsbE1hdGNoUnVsZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgcnVs
ZSk7CisjZW5kaWYKKyAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7
Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTWF0Y2hSdWxl
KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llLCBib29sIG1hdGNo
ZWQpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFModm9pZCgpKTsKKyAgICBpZiAoY29va2llLmZpcnN0KQorICAgICAgICBkaWRNYXRjaFJ1
bGVJbXBsKGNvb2tpZSwgbWF0Y2hlZCk7CisjZW5kaWYKK30KKwogaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjphcHBseVVzZXJBZ2VudE92ZXJyaWRlKEZyYW1lKiBmcmFtZSwg
U3RyaW5nKiB1c2VyQWdlbnQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAppbmRleCAy
MjI4MjIzMjRhMjk1MzY5NGRkZDg5Zjg2ZGIwYTZmZTgzOGRjMjI1Li40MTY2N2I3NGI3NTk0ZWNj
MGY5ODFmNTMyOTE2NjZiMDg5NjAxNGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAKICNp
ZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikKIAorI2lu
Y2x1ZGUgIkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgpA
QCAtNDQsNiArNDUsOCBAQAogI2luY2x1ZGUgIlNjcmlwdEhlYXBTbmFwc2hvdC5oIgogI2luY2x1
ZGUgIlNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgorCisjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKQEAgLTU0LDEzICs1Nyw0NCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgUHJvZmlsZXJBZ2VudFN0YXRlIHsKLXN0
YXRpYyBjb25zdCBjaGFyIHVzZXJJbml0aWF0ZWRQcm9maWxpbmdbXSA9ICJ1c2VySW5pdGlhdGVk
UHJvZmlsaW5nIjsKK3N0YXRpYyBjb25zdCBjaGFyIHVzZXJJbml0aWF0ZWRDUFVQcm9maWxpbmdb
XSA9ICJ1c2VySW5pdGlhdGVkQ1BVUHJvZmlsaW5nIjsKK3N0YXRpYyBjb25zdCBjaGFyIHVzZXJJ
bml0aWF0ZWRTZWxlY3RvclByb2ZpbGluZ1tdID0gInVzZXJJbml0aWF0ZWRTZWxlY3RvclByb2Zp
bGluZyI7CiBzdGF0aWMgY29uc3QgY2hhciBwcm9maWxlckVuYWJsZWRbXSA9ICJwcm9maWxlckVu
YWJsZWQiOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgVXNlckluaXRpYXRlZFByb2Zp
bGVOYW1lID0gIm9yZy53ZWJraXQucHJvZmlsZXMudXNlci1pbml0aWF0ZWQiOwogc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnN0IENQVVByb2ZpbGVUeXBlID0gIkNQVSI7CiBzdGF0aWMgY29uc3QgY2hh
ciogY29uc3QgSGVhcFByb2ZpbGVUeXBlID0gIkhFQVAiOworc3RhdGljIGNvbnN0IGNoYXIqIGNv
bnN0IFNlbGVjdG9yUHJvZmlsZVR5cGUgPSAiU0VMRUNUT1IiOworCisKK3ZvaWQgSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudDo6U2VsZWN0b3JQcm9maWxlOjpjb21taXRTZWxlY3Rvcihjb25zdCBTdHJp
bmcmIHNlbGVjdG9yVGV4dCwgZG91YmxlIG1hdGNoVGltZU1zLCBib29sIG1hdGNoZWQpCit7Cisg
ICAgbV90b3RhbE1hdGNoaW5nVGltZU1zICs9IG1hdGNoVGltZU1zOworICAgIHBhaXI8UnVsZU1h
dGNoaW5nU3RhdHNNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3J1bGVNYXRjaGluZ1N0
YXRzLmFkZChzZWxlY3RvclRleHQsIFJ1bGVNYXRjaGluZ1N0YXRzKG1hdGNoVGltZU1zLCAxLCBt
YXRjaGVkID8gMSA6IDApKTsKKyAgICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgcmVz
dWx0LmZpcnN0LT5zZWNvbmQudG90YWxUaW1lICs9IG1hdGNoVGltZU1zOworICAgICAgICByZXN1
bHQuZmlyc3QtPnNlY29uZC5oaXRzICs9IDE7CisgICAgICAgIGlmIChtYXRjaGVkKQorICAgICAg
ICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQubWF0Y2hlcyArPSAxOworICAgIH0KK30KKworUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OlNlbGVjdG9y
UHJvZmlsZTo6dG9JbnNwZWN0b3JPYmplY3QoKSBjb25zdAoreworICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgUmVmUHRy
PEluc3BlY3RvckFycmF5PiBkYXRhID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgIGZv
ciAoUnVsZU1hdGNoaW5nU3RhdHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ydWxlTWF0Y2hp
bmdTdGF0cy5iZWdpbigpOyBpdCAhPSBtX3J1bGVNYXRjaGluZ1N0YXRzLmVuZCgpOyArK2l0KSB7
CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHN0YXQgPSBJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpOworICAgICAgICBzdGF0LT5zZXRTdHJpbmcoInNlbGVjdG9yIiwgaXQtPmZpcnN0
KTsKKyAgICAgICAgc3RhdC0+c2V0TnVtYmVyKCJ0aW1lIiwgaXQtPnNlY29uZC50b3RhbFRpbWUp
OworICAgICAgICBzdGF0LT5zZXROdW1iZXIoImhpdHMiLCBpdC0+c2Vjb25kLmhpdHMpOworICAg
ICAgICBzdGF0LT5zZXROdW1iZXIoIm1hdGNoZXMiLCBpdC0+c2Vjb25kLm1hdGNoZXMpOworICAg
ICAgICBkYXRhLT5wdXNoT2JqZWN0KHN0YXQucmVsZWFzZSgpKTsKKyAgICB9CisgICAgcmVzdWx0
LT5zZXRBcnJheSgiZGF0YSIsIGRhdGEpOworICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwor
fQogCiBQYXNzT3duUHRyPEluc3BlY3RvclByb2ZpbGVyQWdlbnQ+IEluc3BlY3RvclByb2ZpbGVy
QWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCwgUGFnZSogaW5zcGVjdGVkUGFnZSwg
SW5zcGVjdG9yU3RhdGUqIGluc3BlY3RvclN0YXRlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGlu
amVjdGVkU2NyaXB0TWFuYWdlcikKIHsKQEAgLTczLDExICsxMDcsMTQgQEAgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW4KICAgICAsIG1faW5zcGVjdGVkUGFnZShpbnNwZWN0ZWRQYWdlKQogICAgICwg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9m
cm9udGVuZCgwKQorICAgICwgbV9pZCgxKQogICAgICwgbV9lbmFibGVkKGZhbHNlKQotICAgICwg
bV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZShmYWxzZSkKKyAgICAsIG1fcmVjb3JkaW5n
VXNlckluaXRpYXRlZENQVVByb2ZpbGUoZmFsc2UpCisgICAgLCBtX3JlY29yZGluZ1VzZXJJbml0
aWF0ZWRTZWxlY3RvclByb2ZpbGUoZmFsc2UpCiAgICAgLCBtX2N1cnJlbnRVc2VySW5pdGlhdGVk
UHJvZmlsZU51bWJlcigtMSkKICAgICAsIG1fbmV4dFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVy
KDEpCiAgICAgLCBtX25leHRVc2VySW5pdGlhdGVkSGVhcFNuYXBzaG90TnVtYmVyKDEpCisgICAg
LCBtX25leHRVc2VySW5pdGlhdGVkU2VsZWN0b3JQcm9maWxlTnVtYmVyKDEpCiB7CiAgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JQcm9maWxlckFnZW50KHRoaXMpOwogfQpA
QCAtOTYsNiArMTMzLDE0IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6YWRkUHJvZmls
ZShQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHBycFByb2ZpbGUsIHVuCiAgICAgYWRkUHJvZmls
ZUZpbmlzaGVkTWVzc2FnZVRvQ29uc29sZShwcm9maWxlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwp
OwogfQogCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmFkZFNlbGVjdG9yUHJvZmlsZShQ
YXNzUmVmUHRyPFNlbGVjdG9yUHJvZmlsZT4gcHJwUHJvZmlsZSkKK3sKKyAgICBSZWZQdHI8U2Vs
ZWN0b3JQcm9maWxlPiBwcm9maWxlID0gcHJwUHJvZmlsZTsKKyAgICBtX3NlbGVjdG9yUHJvZmls
ZXMuYWRkKHByb2ZpbGUtPnVpZCgpLCBwcm9maWxlKTsKKyAgICBpZiAobV9mcm9udGVuZCkKKyAg
ICAgICAgbV9mcm9udGVuZC0+YWRkUHJvZmlsZUhlYWRlcihjcmVhdGVTZWxlY3RvclByb2ZpbGVI
ZWFkZXIoKnByb2ZpbGUpKTsKK30KKwogdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjphZGRQ
cm9maWxlRmluaXNoZWRNZXNzYWdlVG9Db25zb2xlKFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4g
cHJwUHJvZmlsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwp
CiB7CiAgICAgaWYgKCFtX2Zyb250ZW5kKQpAQCAtMTM3LDcgKzE4Miw2IEBAIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGVTbmFwc2hvdEhl
YWRlcihjb25zdCBTCiAgICAgcmV0dXJuIGhlYWRlcjsKIH0KIAotCiB2b2lkIEluc3BlY3RvclBy
b2ZpbGVyQWdlbnQ6OmNhdXNlc1JlY29tcGlsYXRpb24oRXJyb3JTdHJpbmcqLCBib29sKiByZXN1
bHQpCiB7CiAgICAgKnJlc3VsdCA9IFNjcmlwdFByb2ZpbGVyOjpjYXVzZXNSZWNvbXBpbGF0aW9u
KCk7CkBAIC0xNTMsNiArMTk3LDE2IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6aGFz
SGVhcFByb2ZpbGVyKEVycm9yU3RyaW5nKiwgYm9vbCogcmVzdWx0KQogICAgICpyZXN1bHQgPSBT
Y3JpcHRQcm9maWxlcjo6aGFzSGVhcFByb2ZpbGVyKCk7CiB9CiAKK1Bhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGVTZWxlY3RvclByb2ZpbGVI
ZWFkZXIoY29uc3QgU2VsZWN0b3JQcm9maWxlJiBwcm9maWxlKQoreworICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGhlYWRlciA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgaGVh
ZGVyLT5zZXRTdHJpbmcoInRpdGxlIiwgcHJvZmlsZS50aXRsZSgpKTsKKyAgICBoZWFkZXItPnNl
dE51bWJlcigidWlkIiwgcHJvZmlsZS51aWQoKSk7CisgICAgaGVhZGVyLT5zZXRTdHJpbmcoInR5
cGVJZCIsIFN0cmluZyhTZWxlY3RvclByb2ZpbGVUeXBlKSk7CisgICAgaGVhZGVyLT5zZXROdW1i
ZXIoInRvdGFsVGltZU1zIiwgcHJvZmlsZS50b3RhbE1hdGNoaW5nVGltZU1zKCkpOworICAgIHJl
dHVybiBoZWFkZXI7Cit9CisKIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6ZW5hYmxlKEVy
cm9yU3RyaW5nKikKIHsKICAgICBpZiAoZW5hYmxlZCgpKQpAQCAtMjAwLDYgKzI1NCw5IEBAIHZv
aWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcq
LCBSZWZQdHI8SW5zcGVjdG9yQXJyCiAgICAgSGVhcFNuYXBzaG90c01hcDo6aXRlcmF0b3Igc25h
cHNob3RzRW5kID0gbV9zbmFwc2hvdHMuZW5kKCk7CiAgICAgZm9yIChIZWFwU25hcHNob3RzTWFw
OjppdGVyYXRvciBpdCA9IG1fc25hcHNob3RzLmJlZ2luKCk7IGl0ICE9IHNuYXBzaG90c0VuZDsg
KytpdCkKICAgICAgICAgKCpoZWFkZXJzKS0+cHVzaE9iamVjdChjcmVhdGVTbmFwc2hvdEhlYWRl
cigqaXQtPnNlY29uZCkpOworICAgIFNlbGVjdG9yUHJvZmlsZXNNYXA6Oml0ZXJhdG9yIHNlbGVj
dG9yUHJvZmlsZXNFbmQgPSBtX3NlbGVjdG9yUHJvZmlsZXMuZW5kKCk7CisgICAgZm9yIChTZWxl
Y3RvclByb2ZpbGVzTWFwOjppdGVyYXRvciBpdCA9IG1fc2VsZWN0b3JQcm9maWxlcy5iZWdpbigp
OyBpdCAhPSBzZWxlY3RvclByb2ZpbGVzRW5kOyArK2l0KQorICAgICAgICAoKmhlYWRlcnMpLT5w
dXNoT2JqZWN0KGNyZWF0ZVNlbGVjdG9yUHJvZmlsZUhlYWRlcigqaXQtPnNlY29uZCkpOwogfQog
CiBuYW1lc3BhY2UgewpAQCAtMjM3LDI4ICsyOTQsMzYgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxl
ckFnZW50OjpnZXRQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBlLCB1bnNp
Z24KICAgICAgICAgICAgICAgICBzbmFwc2hvdC0+d3JpdGVKU09OKCZzdHJlYW0pOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CisgICAgfSBlbHNlIGlmICh0eXBlID09IFNlbGVjdG9yUHJvZmls
ZVR5cGUpIHsKKyAgICAgICAgU2VsZWN0b3JQcm9maWxlc01hcDo6aXRlcmF0b3IgaXQgPSBtX3Nl
bGVjdG9yUHJvZmlsZXMuZmluZCh1aWQpOworICAgICAgICBpZiAoaXQgIT0gbV9zZWxlY3RvclBy
b2ZpbGVzLmVuZCgpKSB7CisgICAgICAgICAgICBSZWZQdHI8U2VsZWN0b3JQcm9maWxlPiBwcm9m
aWxlID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgICpwcm9maWxlT2JqZWN0ID0gcHJvZmlsZS0+
dG9JbnNwZWN0b3JPYmplY3QoKTsKKyAgICAgICAgfQogICAgIH0KIH0KIAogdm9pZCBJbnNwZWN0
b3JQcm9maWxlckFnZW50OjpyZW1vdmVQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiB0eXBlLCB1bnNpZ25lZCB1aWQpCiB7Ci0gICAgaWYgKHR5cGUgPT0gQ1BVUHJvZmlsZVR5cGUp
IHsKLSAgICAgICAgaWYgKG1fcHJvZmlsZXMuY29udGFpbnModWlkKSkKLSAgICAgICAgICAgIG1f
cHJvZmlsZXMucmVtb3ZlKHVpZCk7Ci0gICAgfSBlbHNlIGlmICh0eXBlID09IEhlYXBQcm9maWxl
VHlwZSkgewotICAgICAgICBpZiAobV9zbmFwc2hvdHMuY29udGFpbnModWlkKSkKLSAgICAgICAg
ICAgIG1fc25hcHNob3RzLnJlbW92ZSh1aWQpOwotICAgIH0KKyAgICBpZiAodHlwZSA9PSBDUFVQ
cm9maWxlVHlwZSkKKyAgICAgICAgbV9wcm9maWxlcy5yZW1vdmUodWlkKTsKKyAgICBlbHNlIGlm
ICh0eXBlID09IEhlYXBQcm9maWxlVHlwZSkKKyAgICAgICAgbV9zbmFwc2hvdHMucmVtb3ZlKHVp
ZCk7CisgICAgZWxzZSBpZiAodHlwZSA9PSBTZWxlY3RvclByb2ZpbGVUeXBlKQorICAgICAgICBt
X3NlbGVjdG9yUHJvZmlsZXMucmVtb3ZlKHVpZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudDo6cmVzZXRTdGF0ZSgpCiB7Ci0gICAgc3RvcCgpOworICAgIHN0b3AoMCwgQ1BVUHJv
ZmlsZVR5cGUpOworICAgIHN0b3AoMCwgU2VsZWN0b3JQcm9maWxlVHlwZSk7CiAgICAgbV9wcm9m
aWxlcy5jbGVhcigpOwogICAgIG1fc25hcHNob3RzLmNsZWFyKCk7CisgICAgbV9zZWxlY3RvclBy
b2ZpbGVzLmNsZWFyKCk7CiAgICAgbV9jdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXIg
PSAxOwogICAgIG1fbmV4dFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyID0gMTsKICAgICBtX25l
eHRVc2VySW5pdGlhdGVkSGVhcFNuYXBzaG90TnVtYmVyID0gMTsKKyAgICBtX25leHRVc2VySW5p
dGlhdGVkU2VsZWN0b3JQcm9maWxlTnVtYmVyID0gMTsKICAgICByZXNldEZyb250ZW5kUHJvZmls
ZXMoKTsKIH0KIApAQCAtMjY2LDcgKzMzMSw4IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dDo6cmVzZXRGcm9udGVuZFByb2ZpbGVzKCkKIHsKICAgICBpZiAobV9mcm9udGVuZAogICAgICAg
ICAmJiBtX3Byb2ZpbGVzLmJlZ2luKCkgPT0gbV9wcm9maWxlcy5lbmQoKQotICAgICAgICAmJiBt
X3NuYXBzaG90cy5iZWdpbigpID09IG1fc25hcHNob3RzLmVuZCgpKQorICAgICAgICAmJiBtX3Nu
YXBzaG90cy5iZWdpbigpID09IG1fc25hcHNob3RzLmVuZCgpCisgICAgICAgICYmIG1fc2VsZWN0
b3JQcm9maWxlcy5iZWdpbigpID09IG1fc2VsZWN0b3JQcm9maWxlcy5lbmQoKSkKICAgICAgICAg
bV9mcm9udGVuZC0+cmVzZXRQcm9maWxlcygpOwogfQogCkBAIC0yNzgsNyArMzQ0LDggQEAgdm9p
ZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCog
ZnJvbnRlbmQpCiB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQog
ewogICAgIG1fZnJvbnRlbmQgPSAwOwotICAgIHN0b3AoKTsKKyAgICBzdG9wKDAsIENQVVByb2Zp
bGVUeXBlKTsKKyAgICBzdG9wKDAsIFNlbGVjdG9yUHJvZmlsZVR5cGUpOwogfQogCiB2b2lkIElu
c3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlc3RvcmUoKQpAQCAtMjg4LDggKzM1NSwxMCBAQCB2b2lk
IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlc3RvcmUoKQogCiAgICAgLy8gUmV2aXNpdCB0aGlz
LgogICAgIHJlc2V0RnJvbnRlbmRQcm9maWxlcygpOwotICAgIGlmIChtX3N0YXRlLT5nZXRCb29s
ZWFuKFByb2ZpbGVyQWdlbnRTdGF0ZTo6dXNlckluaXRpYXRlZFByb2ZpbGluZykpCi0gICAgICAg
IHN0YXJ0KCk7CisgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oUHJvZmlsZXJBZ2VudFN0YXRl
Ojp1c2VySW5pdGlhdGVkQ1BVUHJvZmlsaW5nKSkKKyAgICAgICAgc3RhcnQoMCwgQ1BVUHJvZmls
ZVR5cGUpOworICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKFByb2ZpbGVyQWdlbnRTdGF0ZTo6
dXNlckluaXRpYXRlZFNlbGVjdG9yUHJvZmlsaW5nKSkKKyAgICAgICAgc3RhcnQoMCwgU2VsZWN0
b3JQcm9maWxlVHlwZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVzdG9y
ZUVuYWJsZW1lbnQoKQpAQCAtMzAwLDQ1ICszNjksNzIgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxl
ckFnZW50OjpyZXN0b3JlRW5hYmxlbWVudCgpCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvclBy
b2ZpbGVyQWdlbnQ6OnN0YXJ0KEVycm9yU3RyaW5nKikKK3ZvaWQgSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6c3RhcnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHByb2Zp
bGVUeXBlKQogewotICAgIGlmIChtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRQcm9maWxlKQotICAg
ICAgICByZXR1cm47Ci0gICAgaWYgKCFlbmFibGVkKCkpIHsKLSAgICAgICAgZW5hYmxlKHRydWUp
OwotICAgICAgICBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnJlY29tcGlsZUFsbEpT
RnVuY3Rpb25zKDApOwotICAgIH0KLSAgICBtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRQcm9maWxl
ID0gdHJ1ZTsKLSAgICBTdHJpbmcgdGl0bGUgPSBnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2Zp
bGVOYW1lKHRydWUpOworICAgIGlmIChwcm9maWxlVHlwZSA9PSBDUFVQcm9maWxlVHlwZSkgewor
ICAgICAgICBpZiAobV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkQ1BVUHJvZmlsZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkQ1BVUHJvZmlsZSA9
IHRydWU7CisKKyAgICAgICAgaWYgKCFlbmFibGVkKCkpIHsKKyAgICAgICAgICAgIGVuYWJsZSh0
cnVlKTsKKyAgICAgICAgICAgIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkucmVjb21w
aWxlQWxsSlNGdW5jdGlvbnMoMCk7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIHRpdGxlID0g
Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSh0cnVlKTsKICNpZiBVU0UoSlNDKQot
ICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IHRvSlNET01XaW5kb3cobV9pbnNwZWN0
ZWRQYWdlLT5tYWluRnJhbWUoKSwgZGVidWdnZXJXb3JsZCgpKS0+Z2xvYmFsRXhlYygpOworICAg
ICAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSB0b0pTRE9NV2luZG93KG1faW5zcGVj
dGVkUGFnZS0+bWFpbkZyYW1lKCksIGRlYnVnZ2VyV29ybGQoKSktPmdsb2JhbEV4ZWMoKTsKICNl
bHNlCi0gICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gMDsKKyAgICAgICAgU2NyaXB0U3Rh
dGUqIHNjcmlwdFN0YXRlID0gMDsKICNlbmRpZgotICAgIFNjcmlwdFByb2ZpbGVyOjpzdGFydChz
Y3JpcHRTdGF0ZSwgdGl0bGUpOwotICAgIGFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29s
ZSh0aXRsZSwgMCwgU3RyaW5nKCkpOwotICAgIHRvZ2dsZVJlY29yZEJ1dHRvbih0cnVlKTsKLSAg
ICBtX3N0YXRlLT5zZXRCb29sZWFuKFByb2ZpbGVyQWdlbnRTdGF0ZTo6dXNlckluaXRpYXRlZFBy
b2ZpbGluZywgdHJ1ZSk7CisgICAgICAgIFNjcmlwdFByb2ZpbGVyOjpzdGFydChzY3JpcHRTdGF0
ZSwgdGl0bGUpOworICAgICAgICBhZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUodGl0
bGUsIDAsIGVtcHR5U3RyaW5nKCkpOworICAgICAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFByb2Zp
bGVyQWdlbnRTdGF0ZTo6dXNlckluaXRpYXRlZENQVVByb2ZpbGluZywgdHJ1ZSk7CisgICAgfSBl
bHNlIGlmIChwcm9maWxlVHlwZSA9PSBTZWxlY3RvclByb2ZpbGVUeXBlKSB7CisgICAgICAgIGlm
IChtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRTZWxlY3RvclByb2ZpbGUpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZFNlbGVjdG9yUHJvZmlsZSA9
IHRydWU7CisgICAgICAgIFN0cmluZyB0aXRsZSA9IG1ha2VTdHJpbmcoVXNlckluaXRpYXRlZFBy
b2ZpbGVOYW1lLCAnLicsIFN0cmluZzo6bnVtYmVyKG1fbmV4dFVzZXJJbml0aWF0ZWRTZWxlY3Rv
clByb2ZpbGVOdW1iZXIrKykpOworICAgICAgICBtX2N1cnJlbnRTZWxlY3RvclByb2ZpbGUgPSBT
ZWxlY3RvclByb2ZpbGU6OmNyZWF0ZSh0aXRsZSk7CisgICAgICAgIG1fc3RhdGUtPnNldEJvb2xl
YW4oUHJvZmlsZXJBZ2VudFN0YXRlOjp1c2VySW5pdGlhdGVkU2VsZWN0b3JQcm9maWxpbmcsIHRy
dWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChlcnJvclN0cmluZykKKyAgICAgICAgICAg
ICplcnJvclN0cmluZyA9ICJVbmtub3duIHByb2ZpbGUgdHlwZSI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgdG9nZ2xlUmVjb3JkQnV0dG9uKHByb2ZpbGVUeXBlLCB0cnVlKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpzdG9wKEVycm9yU3RyaW5nKikKK3ZvaWQgSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6c3RvcChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcHJvZmlsZVR5cGUpCiB7Ci0gICAgaWYgKCFtX3JlY29yZGluZ1VzZXJJbml0aWF0
ZWRQcm9maWxlKQotICAgICAgICByZXR1cm47Ci0gICAgbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVk
UHJvZmlsZSA9IGZhbHNlOwotICAgIFN0cmluZyB0aXRsZSA9IGdldEN1cnJlbnRVc2VySW5pdGlh
dGVkUHJvZmlsZU5hbWUoKTsKKyAgICBpZiAocHJvZmlsZVR5cGUgPT0gQ1BVUHJvZmlsZVR5cGUp
IHsKKyAgICAgICAgaWYgKCFtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRDUFVQcm9maWxlKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRDUFVQcm9m
aWxlID0gZmFsc2U7CiAjaWYgVVNFKEpTQykKLSAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3Rh
dGUgPSB0b0pTRE9NV2luZG93KG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCksIGRlYnVnZ2Vy
V29ybGQoKSktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0
YXRlID0gdG9KU0RPTVdpbmRvdyhtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLCBkZWJ1Z2dl
cldvcmxkKCkpLT5nbG9iYWxFeGVjKCk7CiAjZWxzZQotICAgIC8vIFVzZSBudWxsIHNjcmlwdCBz
dGF0ZSB0byBhdm9pZCBmaWx0ZXJpbmcgYnkgY29udGV4dCBzZWN1cml0eSB0b2tlbi4KLSAgICAv
LyBBbGwgZnVuY3Rpb25zIGZyb20gYWxsIGlmcmFtZXMgc2hvdWxkIGJlIHZpc2libGUgZnJvbSBJ
bnNwZWN0b3IgVUkuCi0gICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gMDsKKyAgICAgICAg
Ly8gVXNlIG51bGwgc2NyaXB0IHN0YXRlIHRvIGF2b2lkIGZpbHRlcmluZyBieSBjb250ZXh0IHNl
Y3VyaXR5IHRva2VuLgorICAgICAgICAvLyBBbGwgZnVuY3Rpb25zIGZyb20gYWxsIGlmcmFtZXMg
c2hvdWxkIGJlIHZpc2libGUgZnJvbSBJbnNwZWN0b3IgVUkuCisgICAgICAgIFNjcmlwdFN0YXRl
KiBzY3JpcHRTdGF0ZSA9IDA7CiAjZW5kaWYKLSAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJv
ZmlsZSA9IFNjcmlwdFByb2ZpbGVyOjpzdG9wKHNjcmlwdFN0YXRlLCB0aXRsZSk7Ci0gICAgaWYg
KHByb2ZpbGUpCi0gICAgICAgIGFkZFByb2ZpbGUocHJvZmlsZSwgMCwgU3RyaW5nKCkpOwotICAg
IHRvZ2dsZVJlY29yZEJ1dHRvbihmYWxzZSk7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQcm9m
aWxlckFnZW50U3RhdGU6OnVzZXJJbml0aWF0ZWRQcm9maWxpbmcsIGZhbHNlKTsKKyAgICAgICAg
U3RyaW5nIHRpdGxlID0gZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSgpOworICAg
ICAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSA9IFNjcmlwdFByb2ZpbGVyOjpzdG9w
KHNjcmlwdFN0YXRlLCB0aXRsZSk7CisgICAgICAgIGlmIChwcm9maWxlKQorICAgICAgICAgICAg
YWRkUHJvZmlsZShwcm9maWxlLCAwLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgbV9zdGF0ZS0+
c2V0Qm9vbGVhbihQcm9maWxlckFnZW50U3RhdGU6OnVzZXJJbml0aWF0ZWRDUFVQcm9maWxpbmcs
IGZhbHNlKTsKKyAgICB9IGVsc2UgaWYgKHByb2ZpbGVUeXBlID09IFNlbGVjdG9yUHJvZmlsZVR5
cGUpIHsKKyAgICAgICAgaWYgKCFtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRTZWxlY3RvclByb2Zp
bGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fcmVjb3JkaW5nVXNlckluaXRpYXRl
ZFNlbGVjdG9yUHJvZmlsZSA9IGZhbHNlOworICAgICAgICBhZGRTZWxlY3RvclByb2ZpbGUobV9j
dXJyZW50U2VsZWN0b3JQcm9maWxlKTsKKyAgICAgICAgbV9jdXJyZW50U2VsZWN0b3JQcm9maWxl
LmNsZWFyKCk7CisgICAgICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oUHJvZmlsZXJBZ2VudFN0YXRl
Ojp1c2VySW5pdGlhdGVkU2VsZWN0b3JQcm9maWxpbmcsIGZhbHNlKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBpZiAoZXJyb3JTdHJpbmcpCisgICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAiVW5r
bm93biBwcm9maWxlIHR5cGUiOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHRvZ2dsZVJl
Y29yZEJ1dHRvbihwcm9maWxlVHlwZSwgZmFsc2UpOwogfQogCiBuYW1lc3BhY2UgewpAQCAtMzc5
LDEwICs0NzUsMTAgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp0YWtlSGVhcFNuYXBz
aG90KEVycm9yU3RyaW5nKikKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dDo6dG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wgaXNQcm9maWxpbmcpCit2b2lkIEluc3BlY3RvclBy
b2ZpbGVyQWdlbnQ6OnRvZ2dsZVJlY29yZEJ1dHRvbihjb25zdCBTdHJpbmcmIHByb2ZpbGVUeXBl
LCBib29sIGlzUHJvZmlsaW5nKQogewogICAgIGlmIChtX2Zyb250ZW5kKQotICAgICAgICBtX2Zy
b250ZW5kLT5zZXRSZWNvcmRpbmdQcm9maWxlKGlzUHJvZmlsaW5nKTsKKyAgICAgICAgbV9mcm9u
dGVuZC0+c2V0UmVjb3JkaW5nUHJvZmlsZShwcm9maWxlVHlwZSwgaXNQcm9maWxpbmcpOwogfQog
CiB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVy
cm9yU3RyaW5nKiBlcnJvciwgaW50IGlkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0
KQpAQCAtMzkxLDkgKzQ4NywyNiBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldE9i
amVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiBlcnJvciwgaW50IGlkLAogICAgIGlmICgh
aGVhcE9iamVjdC0+aXNOdWxsKCkpCiAgICAgICAgIGhlYXBPYmplY3QtPmFzT2JqZWN0KHJlc3Vs
dCk7CiAgICAgZWxzZQotICAgICAgICAqZXJyb3IgPSAiT2JqZWN0IGlzIG5vdCBhdmFpbGFibGUu
IjsKKyAgICAgICAgKmVycm9yID0gIk9iamVjdCBpcyBub3QgYXZhaWxhYmxlIjsKK30KKwordm9p
ZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp3aWxsTWF0Y2hSdWxlKGNvbnN0IENTU1N0eWxlUnVs
ZSogcnVsZSkKK3sKKyAgICBpZiAobV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkU2VsZWN0b3JQcm9m
aWxlKSB7CisgICAgICAgIG1fY3VycmVudE1hdGNoRGF0YS5zZWxlY3RvciA9IHJ1bGUtPnNlbGVj
dG9yVGV4dCgpOworICAgICAgICBtX2N1cnJlbnRNYXRjaERhdGEuc3RhcnRUaW1lID0gV1RGOjpj
dXJyZW50VGltZU1TKCk7CisgICAgfQogfQogCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6
OmRpZE1hdGNoUnVsZShib29sIG1hdGNoZWQpCit7CisgICAgaWYgKG1fcmVjb3JkaW5nVXNlcklu
aXRpYXRlZFNlbGVjdG9yUHJvZmlsZSkKKyAgICAgICAgbV9jdXJyZW50U2VsZWN0b3JQcm9maWxl
LT5jb21taXRTZWxlY3RvcihtX2N1cnJlbnRNYXRjaERhdGEuc2VsZWN0b3IsIFdURjo6Y3VycmVu
dFRpbWVNUygpIC0gbV9jdXJyZW50TWF0Y2hEYXRhLnN0YXJ0VGltZSwgbWF0Y2hlZCk7Cit9CisK
Ky8vIHN0YXRpYworaW50IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OlNlbGVjdG9yUHJvZmlsZTo6
c19jdXJyZW50SWQgPSAxOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCmluZGV4IGQ0
NzMzOTBhMzcyMThlZjc4N2ZmNDU2ZDU1OTZlM2FiMjkyZTBhYTAuLjliMDEyNjU5MTM3MDgzMmIx
NTA5NzVhYzBiM2Y2NjJhMTlhNGI3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApAQCAtMzQsNiArMzQsNyBAQAogCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yQmFzZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAg
LTQyLDYgKzQzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDU1NTdHlsZVJ1
bGU7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JBcnJheTsK
IGNsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudDsKQEAgLTc0LDggKzc2LDggQEAgcHVibGljOgog
CiAgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIGRpc2FibGUoRXJyb3JT
dHJpbmcqKTsKLSAgICB2b2lkIHN0YXJ0KEVycm9yU3RyaW5nKiA9IDApOwotICAgIHZvaWQgc3Rv
cChFcnJvclN0cmluZyogPSAwKTsKKyAgICB2b2lkIHN0YXJ0KEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJik7CisgICAgdm9pZCBzdG9wKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJik7CiAK
ICAgICB2b2lkIGRpc2FibGUoKTsKICAgICB2b2lkIGVuYWJsZShib29sIHNraXBSZWNvbXBpbGUp
OwpAQCAtOTAsMTMgKzkyLDY5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZSgp
OwogCiAgICAgdm9pZCB0YWtlSGVhcFNuYXBzaG90KEVycm9yU3RyaW5nKik7Ci0gICAgdm9pZCB0
b2dnbGVSZWNvcmRCdXR0b24oYm9vbCBpc1Byb2ZpbGluZyk7CisgICAgdm9pZCB0b2dnbGVSZWNv
cmRCdXR0b24oY29uc3QgU3RyaW5nJiwgYm9vbCBpc1Byb2ZpbGluZyk7CiAKICAgICB2b2lkIGdl
dE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiwgaW50IGlkLCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiogcmVzdWx0KTsKIAorICAgIGludCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7
IH0KKyAgICB2b2lkIHdpbGxNYXRjaFJ1bGUoY29uc3QgQ1NTU3R5bGVSdWxlKik7CisgICAgdm9p
ZCBkaWRNYXRjaFJ1bGUoYm9vbCBtYXRjaGVkKTsKKwogcHJpdmF0ZToKKyAgICBzdHJ1Y3QgUnVs
ZU1hdGNoaW5nU3RhdHMgeworICAgICAgICBSdWxlTWF0Y2hpbmdTdGF0cygpCisgICAgICAgICAg
ICA6IHRvdGFsVGltZSgwLjApLCBoaXRzKDApLCBtYXRjaGVzKDApCisgICAgICAgIHsKKyAgICAg
ICAgfQorICAgICAgICBSdWxlTWF0Y2hpbmdTdGF0cyhkb3VibGUgdG90YWxUaW1lLCB1bnNpZ25l
ZCBoaXRzLCB1bnNpZ25lZCBtYXRjaGVzKQorICAgICAgICAgICAgOiB0b3RhbFRpbWUodG90YWxU
aW1lKSwgaGl0cyhoaXRzKSwgbWF0Y2hlcyhtYXRjaGVzKQorICAgICAgICB7CisgICAgICAgIH0K
KyAgICAgICAgZG91YmxlIHRvdGFsVGltZTsKKyAgICAgICAgdW5zaWduZWQgaGl0czsKKyAgICAg
ICAgdW5zaWduZWQgbWF0Y2hlczsKKyAgICB9OworCisgICAgY2xhc3MgU2VsZWN0b3JQcm9maWxl
IDogcHVibGljIFJlZkNvdW50ZWQ8U2VsZWN0b3JQcm9maWxlPiB7CisgICAgcHVibGljOgorICAg
ICAgICAvLyBGSVhNRTogaGFuZGxlIGRpZmZlcmVudCBydWxlcyB3aXRoIHRoZSBzYW1lIHNlbGVj
dG9yIGRpZmZlcmVudGx5PworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWxlY3RvclByb2Zp
bGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNlbGVjdG9yUHJvZmlsZShzX2N1cnJlbnRJZCsrLCB0aXRsZSkp
OworICAgICAgICB9CisgICAgICAgIHZpcnR1YWwgflNlbGVjdG9yUHJvZmlsZSgpCisgICAgICAg
IHsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGl0bGU7IH0KKyAgICAgICAgdW5zaWduZWQgaW50IHVpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7
IH0KKyAgICAgICAgZG91YmxlIHRvdGFsTWF0Y2hpbmdUaW1lTXMoKSBjb25zdCB7IHJldHVybiBt
X3RvdGFsTWF0Y2hpbmdUaW1lTXM7IH0KKworICAgICAgICB2b2lkIGNvbW1pdFNlbGVjdG9yKGNv
bnN0IFN0cmluZyYsIGRvdWJsZSwgYm9vbCk7CisgICAgICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiB0b0luc3BlY3Rvck9iamVjdCgpIGNvbnN0OworCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUnVsZU1hdGNoaW5nU3RhdHM+IFJ1bGVNYXRjaGlu
Z1N0YXRzTWFwOworICAgICAgICBTZWxlY3RvclByb2ZpbGUoaW50IGlkLCBjb25zdCBTdHJpbmcm
IHRpdGxlKQorICAgICAgICAgICAgOiBtX2lkKGlkKSwgbV90aXRsZSh0aXRsZSksIG1fdG90YWxN
YXRjaGluZ1RpbWVNcygwLjApCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRp
YyBpbnQgc19jdXJyZW50SWQ7CisgICAgICAgIGNvbnN0IGludCBtX2lkOworICAgICAgICBjb25z
dCBTdHJpbmcgbV90aXRsZTsKKyAgICAgICAgZG91YmxlIG1fdG90YWxNYXRjaGluZ1RpbWVNczsK
KyAgICAgICAgUnVsZU1hdGNoaW5nU3RhdHNNYXAgbV9ydWxlTWF0Y2hpbmdTdGF0czsKKyAgICB9
OworCisgICAgc3RydWN0IFJ1bGVNYXRjaERhdGEgeworICAgICAgICBTdHJpbmcgc2VsZWN0b3I7
CisgICAgICAgIGRvdWJsZSBzdGFydFRpbWU7CisgICAgfTsKKwogICAgIHR5cGVkZWYgSGFzaE1h
cDx1bnNpZ25lZCBpbnQsIFJlZlB0cjxTY3JpcHRQcm9maWxlPiA+IFByb2ZpbGVzTWFwOwogICAg
IHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCBpbnQsIFJlZlB0cjxTY3JpcHRIZWFwU25hcHNob3Q+
ID4gSGVhcFNuYXBzaG90c01hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQgaW50LCBS
ZWZQdHI8U2VsZWN0b3JQcm9maWxlPiA+IFNlbGVjdG9yUHJvZmlsZXNNYXA7CiAKICAgICB2b2lk
IHJlc2V0RnJvbnRlbmRQcm9maWxlcygpOwogICAgIHZvaWQgcmVzdG9yZUVuYWJsZW1lbnQoKTsK
QEAgLTEwNCwxOCArMTYyLDI4IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yQ29uc29sZUFnZW50KiwgUGFnZSosIElu
c3BlY3RvclN0YXRlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CiAgICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVByb2ZpbGVIZWFkZXIoY29uc3QgU2NyaXB0UHJvZmlsZSYg
cHJvZmlsZSk7CiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVNuYXBzaG90
SGVhZGVyKGNvbnN0IFNjcmlwdEhlYXBTbmFwc2hvdCYgc25hcHNob3QpOworICAgIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBjcmVhdGVTZWxlY3RvclByb2ZpbGVIZWFkZXIoY29uc3QgU2Vs
ZWN0b3JQcm9maWxlJik7CisgICAgdm9pZCBhZGRTZWxlY3RvclByb2ZpbGUoUGFzc1JlZlB0cjxT
ZWxlY3RvclByb2ZpbGU+IHBycFByb2ZpbGUpOworCisgICAgdm9pZCBpbmNyZW1lbnRJZCgpIHsg
KyttX2lkOyB9CiAKICAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQqIG1fY29uc29sZUFnZW50Owog
ICAgIFBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIEluc3BlY3RvckZyb250ZW5kOjpQcm9maWxlciog
bV9mcm9udGVuZDsKKyAgICBpbnQgbV9pZDsKICAgICBib29sIG1fZW5hYmxlZDsKLSAgICBib29s
IG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGU7CisgICAgYm9vbCBtX3JlY29yZGluZ1Vz
ZXJJbml0aWF0ZWRDUFVQcm9maWxlOworICAgIGJvb2wgbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVk
U2VsZWN0b3JQcm9maWxlOwogICAgIGludCBtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU51
bWJlcjsKICAgICB1bnNpZ25lZCBtX25leHRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlcjsKICAg
ICB1bnNpZ25lZCBtX25leHRVc2VySW5pdGlhdGVkSGVhcFNuYXBzaG90TnVtYmVyOworICAgIHVu
c2lnbmVkIG1fbmV4dFVzZXJJbml0aWF0ZWRTZWxlY3RvclByb2ZpbGVOdW1iZXI7CiAgICAgUHJv
ZmlsZXNNYXAgbV9wcm9maWxlczsKICAgICBIZWFwU25hcHNob3RzTWFwIG1fc25hcHNob3RzOwor
ICAgIFNlbGVjdG9yUHJvZmlsZXNNYXAgbV9zZWxlY3RvclByb2ZpbGVzOworICAgIFJlZlB0cjxT
ZWxlY3RvclByb2ZpbGU+IG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZTsKKyAgICBSdWxlTWF0Y2hE
YXRhIG1fY3VycmVudE1hdGNoRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaAppbmRleCBjMWQ5
YTQ2OGEyYWU3Yzk2YzY5NDMyMThiMDg5OTgyMWM4N2JkYjU1Li5iYTg3OWUwZWQ1MWU4NjcyMjU1
YTVhZDA4OTVmMzFiMDU4YWYzMjM2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvY29tcGlsZS1mcm9udC1lbmQuc2gKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Nv
bXBpbGUtZnJvbnQtZW5kLnNoCkBAIC0xOTEsNiArMTkxLDcgQEAgamF2YSAtamFyIH4vY2xvc3Vy
ZS9jb21waWxlci5qYXIgLS1zdW1tYXJ5X2RldGFpbF9sZXZlbCAzIC0tY29tcGlsYXRpb25fbGV2
ZWwgU0kKICMgVG8gYmUgY29tcGlsZWQuLi4KICMgCiAjIFtQcm9maWxlcl0KKyMgQ1NTU2VsZWN0
b3JQcm9maWxlVmlldwogIyBCb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUKICMgRGV0YWlsZWRI
ZWFwc2hvdEdyaWROb2RlcwogIyBEZXRhaWxlZEhlYXBzaG90VmlldwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTZWxlY3RvclByb2ZpbGVWaWV3Lmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTZWxlY3RvclByb2ZpbGVW
aWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdjOWIwZTNjODRjZjNkZDdiYjcyYzg2NzI4N2ViY2Q4ZWMxOWQ5
N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NTU1NlbGVjdG9yUHJvZmlsZVZpZXcuanMKQEAgLTAsMCArMSw1NTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5DU1NTZWxlY3Rv
ckRhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKHByb2ZpbGVWaWV3LCBkYXRhKQoreworICAgIFdlYklu
c3BlY3Rvci5EYXRhR3JpZE5vZGUuY2FsbCh0aGlzLCBkYXRhLCBmYWxzZSk7CisgICAgdGhpcy5f
cHJvZmlsZVZpZXcgPSBwcm9maWxlVmlldzsKK30KKworV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9y
RGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKKyAgICBnZXQgZGF0YSgpCisgICAgeworICAgICAg
ICB2YXIgZGF0YSA9IHt9OworICAgICAgICBkYXRhLnNlbGVjdG9yID0gdGhpcy5fZGF0YS5zZWxl
Y3RvcjsKKworICAgICAgICBpZiAodGhpcy5fcHJvZmlsZVZpZXcuc2hvd1RpbWVBc1BlcmNlbnQu
Z2V0KCkpCisgICAgICAgICAgICBkYXRhLnRpbWUgPSBOdW1iZXIodGhpcy5fZGF0YS50aW1lUGVy
Y2VudCkudG9GaXhlZCgxKSArICIlIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGF0YS50
aW1lID0gTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlzLl9kYXRhLnRpbWUgLyAxMDAwLCB0cnVl
KTsKKworICAgICAgICBpZiAodGhpcy5fcHJvZmlsZVZpZXcuc2hvd01hdGNoZXNBc1BlcmNlbnQu
Z2V0KCkpCisgICAgICAgICAgICBkYXRhLm1hdGNoZXMgPSBOdW1iZXIodGhpcy5fZGF0YS5tYXRj
aGVzUGVyY2VudCkudG9GaXhlZCgxKSArICIlIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
ZGF0YS5tYXRjaGVzID0gdGhpcy5fZGF0YS5tYXRjaGVzOworCisgICAgICAgIGRhdGEuaGl0cyA9
IHRoaXMuX2RhdGEuaGl0czsKKyAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgfSwKKworICAgIGdl
dCByYXdEYXRhKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9kYXRhOworICAgIH0sCisK
KyAgICBjcmVhdGVDZWxsOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQorICAgIHsKKyAgICAg
ICAgdmFyIGNlbGwgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5jcmVhdGVD
ZWxsLmNhbGwodGhpcywgY29sdW1uSWRlbnRpZmllcik7CisKKyAgICAgICAgaWYgKGNvbHVtbklk
ZW50aWZpZXIgPT09ICJzZWxlY3RvciIgJiYgdGhpcy5fc2VhcmNoTWF0Y2hlZFNlbGVjdG9yQ29s
dW1uCisgICAgICAgICAgICAgICAgfHwgY29sdW1uSWRlbnRpZmllciA9PT0gInRpbWUiICYmIHRo
aXMuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbgorICAgICAgICAgICAgICAgIHx8IGNvbHVtbklk
ZW50aWZpZXIgPT09ICJtYXRjaGVzIiAmJiB0aGlzLl9zZWFyY2hNYXRjaGVkTWF0Y2hlc0NvbHVt
bgorICAgICAgICAgICAgICAgIHx8IGNvbHVtbklkZW50aWZpZXIgPT09ICJoaXRzIiAmJiB0aGlz
Ll9zZWFyY2hNYXRjaGVkSGl0c0NvbHVtbikKKyAgICAgICAgICAgIGNlbGwuYWRkU3R5bGVDbGFz
cygiaGlnaGxpZ2h0Iik7CisKKyAgICAgICAgcmV0dXJuIGNlbGw7CisgICAgfQorfQorCitXZWJJ
bnNwZWN0b3IuQ1NTU2VsZWN0b3JEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlOworCitXZWJJbnNwZWN0b3IuQ1NTU2Vs
ZWN0b3JQcm9maWxlVmlldyA9IGZ1bmN0aW9uKHByb2ZpbGUpCit7CisgICAgV2ViSW5zcGVjdG9y
LlZpZXcuY2FsbCh0aGlzKTsKKworICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJwcm9m
aWxlLXZpZXciKTsKKworICAgIHRoaXMuc2hvd1RpbWVBc1BlcmNlbnQgPSBXZWJJbnNwZWN0b3Iu
c2V0dGluZ3MuY3JlYXRlU2V0dGluZygic2VsZWN0b3JQcm9maWxlclNob3dUaW1lQXNQZXJjZW50
IiwgdHJ1ZSk7CisgICAgdGhpcy5zaG93TWF0Y2hlc0FzUGVyY2VudCA9IFdlYkluc3BlY3Rvci5z
ZXR0aW5ncy5jcmVhdGVTZXR0aW5nKCJzZWxlY3RvclByb2ZpbGVyU2hvd01hdGNoZXNBc1BlcmNl
bnQiLCB0cnVlKTsKKworICAgIHZhciBjb2x1bW5zID0geyAic2VsZWN0b3IiOiB7IHRpdGxlOiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbGVjdG9yIiksIHdpZHRoOiAiNjUwcHgiLCBzb3J0YWJs
ZTogdHJ1ZSB9LAorICAgICAgICAgICAgICAgICAgICAidGltZSI6IHsgdGl0bGU6IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiVG90YWwiKSwgd2lkdGg6ICI3MnB4Iiwgc29ydDogImRlc2NlbmRpbmci
LCBzb3J0YWJsZTogdHJ1ZSB9LAorICAgICAgICAgICAgICAgICAgICAibWF0Y2hlcyI6IHsgdGl0
bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWF0Y2hlcyIpLCB3aWR0aDogIjcycHgiLCBzb3J0
YWJsZTogdHJ1ZSB9LAorICAgICAgICAgICAgICAgICAgICAiaGl0cyI6IHsgdGl0bGU6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiSGl0cyIpLCB3aWR0aDogIjcycHgiLCBzb3J0YWJsZTogdHJ1ZSB9
IH07CisKKyAgICB0aGlzLmRhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZChjb2x1
bW5zKTsKKyAgICB0aGlzLmRhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY2hhbmdl
ZCIsIHRoaXMuX3NvcnREYXRhLCB0aGlzKTsKKyAgICB0aGlzLmRhdGFHcmlkLmVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VEb3duSW5EYXRhR3JpZC5iaW5k
KHRoaXMpLCB0cnVlKTsKKyAgICB0aGlzLmRhdGFHcmlkLnNob3codGhpcy5lbGVtZW50KTsKKwor
ICAgIHRoaXMucGVyY2VudEJ1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9u
KCIiLCAicGVyY2VudC10aW1lLXN0YXR1cy1iYXItaXRlbSIpOworICAgIHRoaXMucGVyY2VudEJ1
dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3BlcmNlbnRDbGlja2VkLmJpbmQo
dGhpcyksIGZhbHNlKTsKKworICAgIHRoaXMucHJvZmlsZSA9IHByb2ZpbGU7CisKKyAgICBmdW5j
dGlvbiBwcm9maWxlQ2FsbGJhY2soZXJyb3IsIHByb2ZpbGUpCisgICAgeworICAgICAgICBpZiAo
ZXJyb3IpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMucHJvZmlsZS5kYXRhID0g
cHJvZmlsZS5kYXRhOworICAgICAgICB0aGlzLl9jcmVhdGVQcm9maWxlTm9kZXMoKTsKKyAgICAg
ICAgdGhpcy5fc29ydFByb2ZpbGUoKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlUGVyY2VudEJ1dHRv
bigpOworICAgIH0KKworICAgIFByb2ZpbGVyQWdlbnQuZ2V0UHJvZmlsZSh0aGlzLnByb2ZpbGUu
dHlwZUlkLCB0aGlzLnByb2ZpbGUudWlkLCBwcm9maWxlQ2FsbGJhY2suYmluZCh0aGlzKSk7Cit9
CisKK1dlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZSA9IHsKKyAg
ICBnZXQgc3RhdHVzQmFySXRlbXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFt0aGlzLnBlcmNl
bnRCdXR0b24uZWxlbWVudF07CisgICAgfSwKKworICAgIGdldCBwcm9maWxlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9wcm9maWxlOworICAgIH0sCisKKyAgICBzZXQgcHJvZmlsZShw
cm9maWxlKQorICAgIHsKKyAgICAgICAgdGhpcy5fcHJvZmlsZSA9IHByb2ZpbGU7CisgICAgfSwK
KworICAgIHdpbGxIaWRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9jdXJyZW50
U2VhcmNoUmVzdWx0SW5kZXggPSAtMTsKKyAgICB9LAorCisgICAgX2NyZWF0ZVByb2ZpbGVOb2Rl
czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGRhdGEgPSB0aGlzLnByb2ZpbGUuZGF0
YTsKKworICAgICAgICB0aGlzLnByb2ZpbGUuY2hpbGRyZW4gPSBbXTsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBkYXRhW2ldLnRp
bWVQZXJjZW50ID0gZGF0YVtpXS50aW1lICogMTAwIC8gdGhpcy5wcm9maWxlLnRvdGFsVGltZU1z
OworICAgICAgICAgICAgZGF0YVtpXS5tYXRjaGVzUGVyY2VudCA9IGRhdGFbaV0ubWF0Y2hlcyAq
IDEwMCAvIGRhdGFbaV0uaGl0czsKKyAgICAgICAgICAgIHZhciBub2RlID0gbmV3IFdlYkluc3Bl
Y3Rvci5DU1NTZWxlY3RvckRhdGFHcmlkTm9kZSh0aGlzLCBkYXRhW2ldKTsKKyAgICAgICAgICAg
IHRoaXMucHJvZmlsZS5jaGlsZHJlbi5wdXNoKG5vZGUpOworICAgICAgICB9CisgICAgfSwKKwor
ICAgIHJlZnJlc2g6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBzZWxlY3RlZFByb2Zp
bGVOb2RlID0gdGhpcy5kYXRhR3JpZC5zZWxlY3RlZE5vZGUgPyB0aGlzLmRhdGFHcmlkLnNlbGVj
dGVkTm9kZS5wcm9maWxlTm9kZSA6IG51bGw7CisKKyAgICAgICAgdGhpcy5kYXRhR3JpZC5yZW1v
dmVDaGlsZHJlbigpOworCisgICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJvZmlsZS5jaGls
ZHJlbjsKKyAgICAgICAgdmFyIGNvdW50ID0gY2hpbGRyZW4ubGVuZ3RoOworCisgICAgICAgIGZv
ciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkKKyAgICAgICAgICAgIHRo
aXMuZGF0YUdyaWQuYXBwZW5kQ2hpbGQoY2hpbGRyZW5baW5kZXhdKTsKKworICAgICAgICBpZiAo
c2VsZWN0ZWRQcm9maWxlTm9kZSkKKyAgICAgICAgICAgIHNlbGVjdGVkUHJvZmlsZU5vZGUuc2Vs
ZWN0ZWQgPSB0cnVlOworICAgIH0sCisKKyAgICByZWZyZXNoVmlzaWJsZURhdGE6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuZGF0YUdyaWQuY2hpbGRyZW5bMF07
CisgICAgICAgIHdoaWxlIChjaGlsZCkgeworICAgICAgICAgICAgY2hpbGQucmVmcmVzaCgpOwor
ICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC50cmF2ZXJzZU5leHROb2RlKGZhbHNlLCBudWxsLCB0
cnVlKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICByZWZyZXNoU2hvd0FzUGVyY2VudHM6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3VwZGF0ZVBlcmNlbnRCdXR0b24oKTsKKyAg
ICAgICAgdGhpcy5yZWZyZXNoVmlzaWJsZURhdGEoKTsKKworICAgICAgICAvLyBUaGUgb25seSBj
YXNlIHdoZW4gdGhlIHNvcnQgb3JkZXIgY2hhbmdlcyB3aGVuIHN3aXRjaGluZyBiZXR3ZWVuIGFi
cyBhbmQgcGN0LgorICAgICAgICBpZiAodGhpcy5kYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmll
ciA9PT0gIm1hdGNoZXMiKQorICAgICAgICAgICAgdGhpcy5fc29ydFByb2ZpbGUoKTsKKyAgICB9
LAorCisgICAgc2VhcmNoQ2FuY2VsZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0
aGlzLl9zZWFyY2hSZXN1bHRzKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRo
aXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2YXIgcHJv
ZmlsZU5vZGUgPSB0aGlzLl9zZWFyY2hSZXN1bHRzW2ldLnByb2ZpbGVOb2RlOworCisgICAgICAg
ICAgICAgICAgZGVsZXRlIHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkU2VsZWN0b3JDb2x1bW47
CisgICAgICAgICAgICAgICAgZGVsZXRlIHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxD
b2x1bW47CisgICAgICAgICAgICAgICAgZGVsZXRlIHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVk
TWF0Y2hlc0NvbHVtbjsKKyAgICAgICAgICAgICAgICBkZWxldGUgcHJvZmlsZU5vZGUuX3NlYXJj
aE1hdGNoZWRIaXRzQ29sdW1uOworCisgICAgICAgICAgICAgICAgcHJvZmlsZU5vZGUucmVmcmVz
aCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZGVsZXRlIHRoaXMuX3Nl
YXJjaEZpbmlzaGVkQ2FsbGJhY2s7CisgICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJ
bmRleCA9IC0xOworICAgICAgICB0aGlzLl9zZWFyY2hSZXN1bHRzID0gW107CisgICAgfSwKKwor
ICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHF1ZXJ5LCBmaW5pc2hlZENhbGxiYWNrKQorICAg
IHsKKyAgICAgICAgLy8gQ2FsbCBzZWFyY2hDYW5jZWxlZCBzaW5jZSBpdCB3aWxsIHJlc2V0IGV2
ZXJ5dGhpbmcgd2UgbmVlZCBiZWZvcmUgZG9pbmcgYSBuZXcgc2VhcmNoLgorICAgICAgICB0aGlz
LnNlYXJjaENhbmNlbGVkKCk7CisKKyAgICAgICAgcXVlcnkgPSBxdWVyeS50cmltKCk7CisKKyAg
ICAgICAgaWYgKCFxdWVyeS5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dGhpcy5fc2VhcmNoRmluaXNoZWRDYWxsYmFjayA9IGZpbmlzaGVkQ2FsbGJhY2s7CisKKyAgICAg
ICAgdmFyIGdyZWF0ZXJUaGFuID0gKHF1ZXJ5LmluZGV4T2YoIj4iKSA9PT0gMCk7CisgICAgICAg
IHZhciBsZXNzVGhhbiA9IChxdWVyeS5pbmRleE9mKCI8IikgPT09IDApOworICAgICAgICB2YXIg
ZXF1YWxUbyA9IChxdWVyeS5pbmRleE9mKCI9IikgPT09IDAgfHwgKChncmVhdGVyVGhhbiB8fCBs
ZXNzVGhhbikgJiYgcXVlcnkuaW5kZXhPZigiPSIpID09PSAxKSk7CisgICAgICAgIHZhciBwZXJj
ZW50VW5pdHMgPSAocXVlcnkubGFzdEluZGV4T2YoIiUiKSA9PT0gKHF1ZXJ5Lmxlbmd0aCAtIDEp
KTsKKyAgICAgICAgdmFyIG1pbGxpc2Vjb25kc1VuaXRzID0gKHF1ZXJ5Lmxlbmd0aCA+IDIgJiYg
cXVlcnkubGFzdEluZGV4T2YoIm1zIikgPT09IChxdWVyeS5sZW5ndGggLSAyKSk7CisgICAgICAg
IHZhciBtYXRjaGVzVW5pdHMgPSAocXVlcnkubGVuZ3RoID4gNyAmJiBxdWVyeS5sYXN0SW5kZXhP
ZigibWF0Y2hlcyIpID09PSAocXVlcnkubGVuZ3RoIC0gNykpOworICAgICAgICB2YXIgaGl0c1Vu
aXRzID0gKHF1ZXJ5Lmxlbmd0aCA+IDQgJiYgcXVlcnkubGFzdEluZGV4T2YoImhpdHMiKSA9PT0g
KHF1ZXJ5Lmxlbmd0aCAtIDQpKTsKKyAgICAgICAgdmFyIHNlY29uZHNVbml0cyA9ICghbWlsbGlz
ZWNvbmRzVW5pdHMgJiYgIW1hdGNoZXNVbml0cyAmJiAhaGl0c1VuaXRzICYmIHF1ZXJ5Lmxhc3RJ
bmRleE9mKCJzIikgPT09IChxdWVyeS5sZW5ndGggLSAxKSk7CisKKyAgICAgICAgdmFyIHF1ZXJ5
TnVtYmVyID0gcGFyc2VGbG9hdChxdWVyeSk7CisgICAgICAgIGlmIChncmVhdGVyVGhhbiB8fCBs
ZXNzVGhhbiB8fCBlcXVhbFRvKSB7CisgICAgICAgICAgICBpZiAoZXF1YWxUbyAmJiAoZ3JlYXRl
clRoYW4gfHwgbGVzc1RoYW4pKQorICAgICAgICAgICAgICAgIHF1ZXJ5TnVtYmVyID0gcGFyc2VG
bG9hdChxdWVyeS5zdWJzdHJpbmcoMikpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHF1ZXJ5TnVtYmVyID0gcGFyc2VGbG9hdChxdWVyeS5zdWJzdHJpbmcoMSkpOworICAgICAg
ICB9CisKKyAgICAgICAgdmFyIHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzID0gKHNlY29uZHNVbml0
cyA/IChxdWVyeU51bWJlciAqIDEwMDApIDogcXVlcnlOdW1iZXIpOworCisgICAgICAgIC8vIE1h
a2UgZXF1YWxUbyBpbXBsaWNpdGx5IHRydWUgaWYgaXQgd2Fzbid0IHNwZWNpZmllZCB0aGVyZSBp
cyBubyBvdGhlciBvcGVyYXRvci4KKyAgICAgICAgaWYgKCFpc05hTihxdWVyeU51bWJlcikgJiYg
IShncmVhdGVyVGhhbiB8fCBsZXNzVGhhbikpCisgICAgICAgICAgICBlcXVhbFRvID0gdHJ1ZTsK
KworICAgICAgICBmdW5jdGlvbiBtYXRjaGVzUXVlcnkoLypDU1NTZWxlY3RvclByb2ZpbGVOb2Rl
Ki8gcHJvZmlsZURhdGFHcmlkTm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgZGVsZXRlIHBy
b2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRTZWxlY3RvckNvbHVtbjsKKyAgICAgICAg
ICAgIGRlbGV0ZSBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW47
CisgICAgICAgICAgICBkZWxldGUgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEhp
dHNDb2x1bW47CisgICAgICAgICAgICBkZWxldGUgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNo
TWF0Y2hlZE1hdGNoZXNDb2x1bW47CisKKyAgICAgICAgICAgIGlmIChwZXJjZW50VW5pdHMpIHsK
KyAgICAgICAgICAgICAgICBpZiAobGVzc1RoYW4pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHByb2ZpbGVEYXRhR3JpZE5vZGUucmF3RGF0YS50aW1lUGVyY2VudCA8IHF1ZXJ5TnVtYmVyKQor
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hl
ZFRvdGFsQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRh
R3JpZE5vZGUucmF3RGF0YS5tYXRjaGVzUGVyY2VudCA8IHF1ZXJ5TnVtYmVyKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZE1hdGNoZXND
b2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZ3JlYXRlclRoYW4pIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUucmF3RGF0YS50aW1l
UGVyY2VudCA+IHF1ZXJ5TnVtYmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURh
dGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFRvdGFsQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUucmF3RGF0YS5tYXRjaGVzUGVyY2VudCA+
IHF1ZXJ5TnVtYmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9k
ZS5fc2VhcmNoTWF0Y2hlZE1hdGNoZXNDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIGlmIChlcXVhbFRvKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChwcm9maWxlRGF0YUdyaWROb2RlLnJhd0RhdGEudGltZVBlcmNlbnQgPT0gcXVlcnlOdW1iZXIp
CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRj
aGVkVG90YWxDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURh
dGFHcmlkTm9kZS5yYXdEYXRhLm1hdGNoZXNQZXJjZW50ID09IHF1ZXJ5TnVtYmVyKQorICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZE1hdGNo
ZXNDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAobWlsbGlzZWNvbmRzVW5pdHMgfHwgc2Vjb25kc1VuaXRzKSB7CisgICAgICAgICAgICAgICAg
aWYgKGxlc3NUaGFuKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWRO
b2RlLnJhd0RhdGEudGltZSA8IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFRvdGFsQ29sdW1u
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGdyZWF0ZXJUaGFuKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnJhd0RhdGEudGltZSA+IHF1
ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURh
dGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFRvdGFsQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoZXF1YWxUbykgeworICAgICAgICAgICAgICAg
ICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS50b3RhbFRpbWUgPT0gcXVlcnlOdW1iZXJNaWxs
aXNlY29uZHMpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9z
ZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAobWF0Y2hlc1VuaXRzKSB7CisgICAgICAgICAgICAgICAgaWYgKGxl
c3NUaGFuKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnJh
d0RhdGEubWF0Y2hlcyA8IHF1ZXJ5TnVtYmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJv
ZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZE1hdGNoZXNDb2x1bW4gPSB0cnVlOworICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoZ3JlYXRlclRoYW4pIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUucmF3RGF0YS5tYXRjaGVzID4gcXVlcnlOdW1iZXIp
CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRj
aGVkTWF0Y2hlc0NvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgaWYgKGVxdWFsVG8pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRh
R3JpZE5vZGUucmF3RGF0YS5tYXRjaGVzID09IHF1ZXJ5TnVtYmVyKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZE1hdGNoZXNDb2x1bW4g
PSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaGl0c1Vu
aXRzKSB7CisgICAgICAgICAgICAgICAgaWYgKGxlc3NUaGFuKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnJhd0RhdGEuaGl0cyA8IHF1ZXJ5TnVtYmVyKQor
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hl
ZEhpdHNDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZ3JlYXRlclRo
YW4pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUucmF3RGF0
YS5oaXRzID4gcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0
YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkSGl0c0NvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGVxdWFsVG8pIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUucmF3RGF0YS5oaXRzID09IHF1ZXJ5TnVtYmVyKQor
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hl
ZEhpdHNDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUuZGF0YS5zZWxlY3Rvci5oYXNTdWJz
dHJpbmcocXVlcnksIHRydWUpKQorICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUu
X3NlYXJjaE1hdGNoZWRTZWxlY3RvckNvbHVtbiA9IHRydWU7CisKKyAgICAgICAgICAgIGlmIChw
cm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkU2VsZWN0b3JDb2x1bW4KKyAgICAgICAg
ICAgICAgICAgICAgfHwgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFRvdGFsQ29s
dW1uCisgICAgICAgICAgICAgICAgICAgIHx8IHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1h
dGNoZWRNYXRjaGVzQ29sdW1uCisgICAgICAgICAgICAgICAgICAgIHx8IHByb2ZpbGVEYXRhR3Jp
ZE5vZGUuX3NlYXJjaE1hdGNoZWRIaXRzQ29sdW1uKSB7CisgICAgICAgICAgICAgICAgcHJvZmls
ZURhdGFHcmlkTm9kZS5yZWZyZXNoKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisg
ICAgICAgIHZhciBjdXJyZW50ID0gdGhpcy5wcm9maWxlLmNoaWxkcmVuWzBdOworCisgICAgICAg
IHdoaWxlIChjdXJyZW50KSB7CisgICAgICAgICAgICBpZiAobWF0Y2hlc1F1ZXJ5KGN1cnJlbnQp
KSB7CisgICAgICAgICAgICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cy5wdXNoKHsgcHJvZmlsZU5v
ZGU6IGN1cnJlbnQgfSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGN1cnJlbnQgPSBj
dXJyZW50LnRyYXZlcnNlTmV4dE5vZGUoZmFsc2UsIG51bGwsIGZhbHNlKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZpbmlzaGVkQ2FsbGJhY2sodGhpcywgdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5n
dGgpOworICAgIH0sCisKKyAgICBqdW1wVG9GaXJzdFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9zZWFyY2hSZXN1bHRzIHx8ICF0aGlzLl9zZWFyY2hS
ZXN1bHRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fY3VycmVu
dFNlYXJjaFJlc3VsdEluZGV4ID0gMDsKKyAgICAgICAgdGhpcy5fanVtcFRvU2VhcmNoUmVzdWx0
KHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCk7CisgICAgfSwKKworICAgIGp1bXBUb0xh
c3RTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fc2Vh
cmNoUmVzdWx0cyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9ICh0aGlzLl9z
ZWFyY2hSZXN1bHRzLmxlbmd0aCAtIDEpOworICAgICAgICB0aGlzLl9qdW1wVG9TZWFyY2hSZXN1
bHQodGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4KTsKKyAgICB9LAorCisgICAganVtcFRv
TmV4dFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9z
ZWFyY2hSZXN1bHRzIHx8ICF0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgaWYgKCsrdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID49
IHRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKQorICAgICAgICAgICAgdGhpcy5fY3VycmVudFNl
YXJjaFJlc3VsdEluZGV4ID0gMDsKKyAgICAgICAgdGhpcy5fanVtcFRvU2VhcmNoUmVzdWx0KHRo
aXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCk7CisgICAgfSwKKworICAgIGp1bXBUb1ByZXZp
b3VzU2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3Nl
YXJjaFJlc3VsdHMgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBpZiAoLS10aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPCAw
KQorICAgICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gKHRoaXMuX3Nl
YXJjaFJlc3VsdHMubGVuZ3RoIC0gMSk7CisgICAgICAgIHRoaXMuX2p1bXBUb1NlYXJjaFJlc3Vs
dCh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXgpOworICAgIH0sCisKKyAgICBzaG93aW5n
Rmlyc3RTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiAodGhp
cy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID09PSAwKTsKKyAgICB9LAorCisgICAgc2hvd2lu
Z0xhc3RTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiAodGhp
cy5fc2VhcmNoUmVzdWx0cyAmJiB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPT09ICh0
aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCAtIDEpKTsKKyAgICB9LAorCisgICAgX2p1bXBUb1Nl
YXJjaFJlc3VsdDogZnVuY3Rpb24oaW5kZXgpCisgICAgeworICAgICAgICB2YXIgc2VhcmNoUmVz
dWx0ID0gdGhpcy5fc2VhcmNoUmVzdWx0c1tpbmRleF07CisgICAgICAgIGlmICghc2VhcmNoUmVz
dWx0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBwcm9maWxlTm9kZSA9IHNl
YXJjaFJlc3VsdC5wcm9maWxlTm9kZTsKKyAgICAgICAgcHJvZmlsZU5vZGUucmV2ZWFsQW5kU2Vs
ZWN0KCk7CisgICAgfSwKKworICAgIF9wZXJjZW50Q2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgeworICAgICAgICB2YXIgY3VycmVudFN0YXRlID0gdGhpcy5zaG93VGltZUFzUGVyY2VudC5n
ZXQoKSAmJiB0aGlzLnNob3dNYXRjaGVzQXNQZXJjZW50LmdldCgpOworICAgICAgICB0aGlzLnNo
b3dUaW1lQXNQZXJjZW50LnNldCghY3VycmVudFN0YXRlKTsKKyAgICAgICAgdGhpcy5zaG93TWF0
Y2hlc0FzUGVyY2VudC5zZXQoIWN1cnJlbnRTdGF0ZSk7CisgICAgICAgIHRoaXMucmVmcmVzaFNo
b3dBc1BlcmNlbnRzKCk7CisgICAgfSwKKworICAgIF91cGRhdGVQZXJjZW50QnV0dG9uOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5zaG93VGltZUFzUGVyY2VudC5nZXQoKSAm
JiB0aGlzLnNob3dNYXRjaGVzQXNQZXJjZW50LmdldCgpKSB7CisgICAgICAgICAgICB0aGlzLnBl
cmNlbnRCdXR0b24udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgYWJzb2x1dGUg
dW5pdHMuIik7CisgICAgICAgICAgICB0aGlzLnBlcmNlbnRCdXR0b24udG9nZ2xlZCA9IHRydWU7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLnBlcmNlbnRCdXR0b24udGl0bGUg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgcGVyY2VudGFnZXMuIik7CisgICAgICAgICAg
ICB0aGlzLnBlcmNlbnRCdXR0b24udG9nZ2xlZCA9IGZhbHNlOworICAgICAgICB9CisgICAgfSwK
KworICAgIF9zb3J0RGF0YTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9z
b3J0UHJvZmlsZSh0aGlzLnByb2ZpbGUpOworICAgIH0sCisKKyAgICBfc29ydFByb2ZpbGU6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBzb3J0QXNjZW5kaW5nID0gdGhpcy5kYXRhR3Jp
ZC5zb3J0T3JkZXIgPT09ICJhc2NlbmRpbmciOworICAgICAgICB2YXIgc29ydENvbHVtbklkZW50
aWZpZXIgPSB0aGlzLmRhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyOworICAgICAgICB2YXIg
aXNQZXJjZW50ID0gdGhpcy5zaG93VGltZUFzUGVyY2VudC5nZXQoKTsKKworICAgICAgICBmdW5j
dGlvbiBzZWxlY3RvckNvbXBhcmF0b3IoYSwgYikKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IHJlc3VsdCA9IGIucmF3RGF0YS5zZWxlY3Rvci5sb2NhbGVDb21wYXJlKGEucmF3RGF0YS5zZWxl
Y3Rvcik7CisgICAgICAgICAgICByZXR1cm4gc29ydEFzY2VuZGluZyA/IC1yZXN1bHQgOiByZXN1
bHQ7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0aW1lQ29tcGFyYXRvcihhLCBiKQor
ICAgICAgICB7CisgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBiLnJhd0RhdGEudGltZSAtIGEu
cmF3RGF0YS50aW1lOworICAgICAgICAgICAgcmV0dXJuIHNvcnRBc2NlbmRpbmcgPyAtcmVzdWx0
IDogcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gaGl0c0NvbXBhcmF0b3Io
YSwgYikKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYi5yYXdEYXRhLmhp
dHMgLSBhLnJhd0RhdGEuaGl0czsKKyAgICAgICAgICAgIHJldHVybiBzb3J0QXNjZW5kaW5nID8g
LXJlc3VsdCA6IHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG1hdGNoZXND
b21wYXJhdG9yKGEsIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGlz
UGVyY2VudCA/IChiLnJhd0RhdGEubWF0Y2hlc1BlcmNlbnQgLSBhLnJhd0RhdGEubWF0Y2hlc1Bl
cmNlbnQpIDogKGIucmF3RGF0YS5tYXRjaGVzIC0gYS5yYXdEYXRhLm1hdGNoZXMpOworICAgICAg
ICAgICAgcmV0dXJuIHNvcnRBc2NlbmRpbmcgPyAtcmVzdWx0IDogcmVzdWx0OworICAgICAgICB9
CisKKyAgICAgICAgdmFyIGNvbXBhcmF0b3I7CisgICAgICAgIHN3aXRjaCAoc29ydENvbHVtbklk
ZW50aWZpZXIpIHsKKyAgICAgICAgY2FzZSAidGltZSI6CisgICAgICAgICAgICBjb21wYXJhdG9y
ID0gdGltZUNvbXBhcmF0b3I7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiaGl0
cyI6CisgICAgICAgICAgICBjb21wYXJhdG9yID0gaGl0c0NvbXBhcmF0b3I7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSAibWF0Y2hlcyI6CisgICAgICAgICAgICBjb21wYXJhdG9y
ID0gbWF0Y2hlc0NvbXBhcmF0b3I7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAi
c2VsZWN0b3IiOgorICAgICAgICAgICAgY29tcGFyYXRvciA9IHNlbGVjdG9yQ29tcGFyYXRvcjsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5wcm9maWxlLmNo
aWxkcmVuLnNvcnQoY29tcGFyYXRvcik7CisKKyAgICAgICAgdGhpcy5yZWZyZXNoKCk7CisgICAg
fSwKKworICAgIF9tb3VzZURvd25JbkRhdGFHcmlkOiBmdW5jdGlvbihldmVudCkKKyAgICB7Cisg
ICAgICAgIGlmIChldmVudC5kZXRhaWwgPCAyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHZhciBjZWxsID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5h
bWUoInRkIik7CisgICAgICAgIGlmICghY2VsbCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBpZiAoY2VsbC5oYXNTdHlsZUNsYXNzKCJ0aW1lLWNvbHVtbiIpKQorICAgICAgICAgICAg
dGhpcy5zaG93VGltZUFzUGVyY2VudC5zZXQoIXRoaXMuc2hvd1RpbWVBc1BlcmNlbnQuZ2V0KCkp
OworICAgICAgICBlbHNlIGlmIChjZWxsLmhhc1N0eWxlQ2xhc3MoIm1hdGNoZXMtY29sdW1uIikp
CisgICAgICAgICAgICB0aGlzLnNob3dNYXRjaGVzQXNQZXJjZW50LnNldCghdGhpcy5zaG93TWF0
Y2hlc0FzUGVyY2VudC5nZXQoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB0aGlzLnJlZnJlc2hTaG93QXNQZXJjZW50cygpOworCisgICAgICAgIGV2ZW50
LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAg
IH0KK30KKworV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZTsKKworV2ViSW5zcGVjdG9yLkNT
U1NlbGVjdG9yUHJvZmlsZVR5cGUgPSBmdW5jdGlvbigpCit7CisgICAgV2ViSW5zcGVjdG9yLlBy
b2ZpbGVUeXBlLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUu
VHlwZUlkLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNTUyBTRUxFQ1RPUiBQUk9GSUxFUyIpKTsK
KyAgICB0aGlzLl9yZWNvcmRpbmcgPSBmYWxzZTsKKyAgICBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0
b3JQcm9maWxlVHlwZS5pbnN0YW5jZSA9IHRoaXM7Cit9CisKK1dlYkluc3BlY3Rvci5DU1NTZWxl
Y3RvclByb2ZpbGVUeXBlLlR5cGVJZCA9ICJTRUxFQ1RPUiI7CisKK1dlYkluc3BlY3Rvci5DU1NT
ZWxlY3RvclByb2ZpbGVUeXBlLnByb3RvdHlwZSA9IHsKKyAgICBnZXQgYnV0dG9uVG9vbHRpcCgp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkaW5nID8gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJTdG9wIENTUyBTZWxlY3RvciBwcm9maWxpbmcuIikgOiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlN0YXJ0IENTUyBTZWxlY3RvciBwcm9maWxpbmcuIik7CisgICAgfSwKKworICAgIGdl
dCBidXR0b25TdHlsZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkaW5nID8g
InJlY29yZC1jc3MtcHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0gc3RhdHVzLWJhci1pdGVtIHRvZ2ds
ZWQtb24iIDogInJlY29yZC1jc3MtcHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0gc3RhdHVzLWJhci1p
dGVtIjsKKyAgICB9LAorCisgICAgYnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgdGhpcy5fcmVjb3JkaW5nID0gIXRoaXMuX3JlY29yZGluZzsKKworICAgICAgICBpZiAo
dGhpcy5fcmVjb3JkaW5nKQorICAgICAgICAgICAgUHJvZmlsZXJBZ2VudC5zdGFydChXZWJJbnNw
ZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5UeXBlSWQpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBQcm9maWxlckFnZW50LnN0b3AoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmls
ZVR5cGUuVHlwZUlkKTsKKyAgICB9LAorCisgICAgZ2V0IHdlbGNvbWVNZXNzYWdlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnRyb2wgQ1NTIFNlbGVj
dG9yIHByb2ZpbGluZyBieSBwcmVzc2luZyB0aGUgJXMgYnV0dG9uIG9uIHRoZSBzdGF0dXMgYmFy
LiIpOworICAgIH0sCisKKyAgICBpc1JlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRpbmc7CisgICAgfSwKKworICAgIHN0YXJ0UmVj
b3JkaW5nUHJvZmlsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVjb3JkaW5n
ID0gdHJ1ZTsKKyAgICAgICAgUHJvZmlsZXJBZ2VudC5zdGFydChXZWJJbnNwZWN0b3IuQ1NTU2Vs
ZWN0b3JQcm9maWxlVHlwZS5UeXBlSWQpOworICAgIH0sCisKKyAgICBzdG9wUmVjb3JkaW5nUHJv
ZmlsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gZmFsc2U7
CisgICAgICAgIFByb2ZpbGVyQWdlbnQuc3RvcChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9m
aWxlVHlwZS5UeXBlSWQpOworICAgIH0sCisKKyAgICBzZXRSZWNvcmRpbmdQcm9maWxlOiBmdW5j
dGlvbihpc1Byb2ZpbGluZykKKyAgICB7CisgICAgICAgIHRoaXMuX3JlY29yZGluZyA9IGlzUHJv
ZmlsaW5nOworICAgIH0sCisKKyAgICBjcmVhdGVTaWRlYmFyVHJlZUVsZW1lbnRGb3JQcm9maWxl
OiBmdW5jdGlvbihwcm9maWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0
b3IuUHJvZmlsZVNpZGViYXJUcmVlRWxlbWVudChwcm9maWxlLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlByb2ZpbGUgJWQiKSArIFN0cmluZy5zcHJpbnRmKCIgKCVzKSIsIE51bWJlci5zZWNvbmRz
VG9TdHJpbmcocHJvZmlsZS50b3RhbFRpbWVNcyAvIDEwMDApKSwgInByb2ZpbGUtc2lkZWJhci10
cmVlLWl0ZW0iKTsKKyAgICB9LAorCisgICAgY3JlYXRlVmlldzogZnVuY3Rpb24ocHJvZmlsZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmls
ZVZpZXcocHJvZmlsZSk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9m
aWxlVHlwZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlLnBy
b3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
SW1hZ2VzL3N0YXR1c2JhckJ1dHRvbkdseXBocy5wbmcgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0ltYWdlcy9zdGF0dXNiYXJCdXR0b25HbHlwaHMucG5nCmluZGV4IDU1MzEy
NGIxY2RiNzM4Y2I2YzE5NzVlZWM0ZjIxNDk3OTRmOTBlNmQuLjNlNzlkN2UwMzhjMWQyNDc3Yjkw
MDI2N2Q0NjRkZjRhMjY1N2Y4NGUgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMzY4Mgp6
Y21WLW80eFJDV0ZfSlF7ZyRmRCgwUkk2MHB1TU0pbGEyfT5lKyZsPkJNUHxhQWJ8aD80biM+ckt+
IzkhP1ZXaiQKejZ4QUthS1JxbkZnNWEqPXQ/PndtWE5VPTh3WENSNllERSh2TWw+WlY1ZmhKdWZM
TGxnbDJwdjkoTnIpaHFESGkwCnpQezQjVENWXjspUU5TWj1UdjNSTShGbiQpQ0AoOzhiI2F6dUkp
QSloWEM5ck5vITtIfGRXUFptc2RfY2okSVI8fgp6ZjhHNmt6anlUUzJhMkw3aWxRaXJxOX1AQEQy
ayNlaWxRaHJOVDVafkJOfkJgeitoUWsyfE5hQCpQX1hVIS00TXQKeiN7em8tOC1OI3Era3JWJWND
NDM0Kzc7LWlmd0ohbGQ8X15SJWMxRFZvNF55WXlqM3lSRHZWbUU5PUhObkQ7TF5NCnpZa3x2d0lA
S3JkZ2s3WUlzXn5hKDFCTClRMTNUMm5mQnBYfXBwYTFSZDA9OGpNJURTaUpmS2F8Slh1JDxvQUV2
MQp6cSNBJGRgVH5FRV5LQW9XMUxzTWE0U1h1dz8pNUIhe2VhUUh0LXZGfEd4Qis+dG5jU0I/O1V9
S3pfMWVBaHNwTEcKekp6dDlfZk5eM35aM0JHWWRKeH5LNX18azxjLUM1OD9OSU9tdH1hcyVUJURv
I01YM1hyMW1yeEc+JUptKGYySCFECnpDO05EM0dfWGo3eiY/T2shMWdzTmZSfGg2eGRkcDZaOWZv
TEE9QHdhQioyI2RBQ3xmQ0thfkNZZE5fdUtSdnlDPQp6IzRrRndnJkFMKT9YMl92dFAxWHhlWj19
aDFiUFV0T0UwWFdCbXVtcCV6YmM4I15Qcy07QUJyQ0k0PyMxXkwkXzIKellyRHZONll4dWlkQSo8
RmdwPC01PV83SlFlPFNiX0BDb3BPPG5kSTMycCN+bSVmNXtjXldPXy1qaCRtRmEzVX5OCnpLOWpj
WjxAbm0kQjQ+K1dzcjZaNVRTSEd9bDtgYlllYUNxUWN2LSQqMERLR188KyNiOEg3Q2MhWj9VOWtg
QVNLKQp6MnA7ZEQqXy16SF90cVI5Wk1GQk9oX3g0R2BlKSNmNEV1VkByQS1iK0BGZEheWklYd3Fs
bkJtfWV7SFYxMW9pPm0KelA3dD8tKm5TTk9CS1ZnNC1scXRUdEZaVzhXUyNFQDtJSXR4WT84YHVh
T150bEFRZSZ8Ul9YcVp4PGlyI0BZKnU+Cnp8RnNVIV9rITRlNH4tb2N2ZC1SVGFze2tFP15mVTwk
PjBLTy1KP0xXJE50Nk1xO19EZWdYNmVae19rQXQwVnBNYwp6PWdSdHY5cHV9OThRcU1aKk5ONmNm
NnhafUIzNDEhPjdVWXNAZzsmYDE7eXtBU2t3MX00RHleUDdTMz9zN159fjUKeklIbik/YkpHMCRO
V1J3c2xZMWI1bE49dklUUXtFakhlVXIxOVlqfEJlNCZIMSs9QnBpQzR3I21AWj1LYkcmRldTCnor
RGhEblFUbXBMWWpiKW1rOHVAdkZxZDJUcE9zT2JkeC1WZCpJRklgPjw0VHM9PlZWKWYzLXUrM1pU
bzUlSSRydAp6Wng3ZjJ7TEkxc3Rkdmk/Rkp+Ul80ZDd8dTI7ZX54IUp9Zm89P3hFeDFzRXJ+MGpF
cDk8anUwWWY1Tl5tJUt4fncKejBIPyopLUNPfCsmXzNVKz1LcmslNCNNPEw5fExxXk10RW1uPHxu
UVo1IX5kXzVDRktMajBvSnxJUjhxcyRrVjwoCnpZNjRHNSpmdkdCRSVKRWJlPUY0bzchODg3T1lL
ZXhPS188T2xGTERtWVZRTCl5fjJIZm03KSRheTFSfF5fdlBmPwp6Kncoc3Q4JENTLVNxdEVWKm5i
fV9zbmxgLUlLeSN5U000Q2tfVlBVKz56e0gjd1R1RW9hVD80RCUjQGU3MnJqWW0KemNSZFk4TX1m
LT1MellETzRGPXY3dEE4bkcwRX48VEZpVXBFJXIjQig+PW1ST2V8KmVHdEA+IyZ6b192Vnt8fERX
CnpwR3VRIXFORilpQUh7cyE0PzJMKDFGU3s/aklQVXB6fj5ZOHNUQihfNjJWN1BofkkzPjNVKkNa
UEswaWc/PFoyKgp6XmFGTVd1RSlJZDghIUN6dlRnVC09QmV4Qip4S0kmc1VgdkpZTTtnJGRqQHN8
OWA4Y0A9NE4jNW94S1hEJkpmYTUKemp+VlVqRF4xPkpFc0NBK3VWRyQkU19mPnpeYUYweEJDQT1f
M1RfaiU7VUZXaCZVcH1VNHJiMHtYbC04JEpPS1AjCno/fHFaZDQ8Q09+bHI0eE1TX0U0YTBoTmdY
R21fMDsheTJpVkxnQClFcW45MG9AcldgUF5RejF5RSM4YD8wcGtPKQp6OFJIUzxSZ0N3VXI1SHlN
S0EzPjxJeTk9cF85amY2aWZPPmkzWUFMXl5HPllkaTAwPHpvYWpfTiNgUmMjTmV6fk0KemJ6OzB4
d00rVTg8RiZpOXdZOWE3ZyNabyF7KUJsRXptRXM7PiY8YDU/cHhGUSZPMUBgUW5TTHR8TCtacSRH
aWptCnpidkJRNmAjIzFJIVpON0AtKnptMXpteEJhZnhCYmQ0K1U8TiZ1QmxfQX4qdlIwdXxzPVV9
fGpwO34yTUNJczd8awp6SUdtI01rcTNaKClWUHNXRlFUXnsoM3NFWCRBKTNwOUVSYiswNmBFZTR9
emV6cGBxYl4lKThlZ1RmZ3RmTExCQmAKejlBa2dKMCp0X1RWeS0wdGpRcVRmQDVYVj5QVDFkVFdl
TURlQGN9cCZJTCQqSSN7ZlVaSUQ1IylEIU0qV0R8WjBECnohTDRLNXI2Tyk9U3E2TmBWZzVoRGdv
UylsRVheazFFN0ladDw4PH52eno+MWpKWVZNKFZzK2NCQiVBSzF1IzR2Xgp6XmtILX5II2JLWFVz
R3BpPWZSendvcyRjTiFpYzImYkdkKXFsRGZMTz4yLUI9JVEyMmcrRk0mJitrSVByS00/V3oKejFR
V3d6Z1UxVUheemRUMjtMSCp0U1BoSzlfJHJLQ1ZWIzA7I3BLISgkdCVFUjZySkJESDMyYHVjbXtG
RkQ2I3l+CnpoflRtPW4jbno3cUk/YihwP09YNlNZaW5AQkskdTJLJjw/S1FIKGtCWW03Z19jUFlq
cV85PWNSMDFIWXlvNXoweAp6NTZRbCtNNmo8MlV9R2VIS0BqQVUxaDd5ampPZ3Nfb0xwQnxjYlFi
Z1d4ZGpyNlR0VHxqdTRaMFR4IU9mV0k1e2gKelRWdklsY2ghZylLRTh3cVJ6dmY7SVZPSX48Ym4w
IWhVcGFmPytzbT9kdyojanVYTDI+TmNwQHdDViheTDl6MHJfCnokUnpDZG40QEVPUyoqTkI7QkNH
dDdVNk44bzQkWGlpVEooNT1LZEhUbDhXZy1zUi13TCRsSCRieVAlOHg3UX13RAp6ej9BXnpeWkJ2
MV89UkJAU29kSFUxT1kpMTxPK3F0aDxyWGp3eE9abjkhITU9dUxRN15fXmtySWhqR01ORkUhcisK
ek9ueylNVSs3Tnh0YVRDMGlhdGBRKytrVCpMIT1LVjYySk10c3BhfVRkTzw3Myh7UF4+MHZJe1FU
PEwhPiYmM0pyCnpXJiZxaC0/MnBTTWh7SWZKS3B1KXYyOU9FYkwmeWgqRk9zSG5pT3F0M2grME4w
JDU0PDB1NW1wSHB9JmxpeXlMJQp6QVBBIUcmQyg1MikrPjVYcVFaNV5Mdntua3txKnl8Z31ePFNr
em83M1peMkRtLWY5eFQqJj4yPXtEJndReH05YkAKeiV5JWNMPjk1MGQjeiVyVU40NWR7KFgpVH1N
TlBkPXlBWU5AYG9lczNjYlIzXk1FIWFqZiMpcFl7a0Q4UiUoNGNMCnojbjA1QlhmIWopJVhHQV5w
NHlgaVAhfG4mIzQ1SFJfVEFMTlg1VHRlZ2VMOFkwQTQ1O2RXPHgpUFFgP3Q5RndxYgp6S2oxMnEt
cmZLK3E9XitaTHIoe09MTk9yeWR9JChlY3NgYTZpaDttT2t3clheayE2LSRHZ1decSZMX207OSk8
fnAKeklUc1VueyZsSkpvfElQNlRGaFhlT0NGWmJtVnw5QkRWbkR9V3MrM0JYKVdyJllNTWB+X0pe
eXgweXRDcEFnK187Cno/KlBOKVZOQWtSVHdjNDBse1djY21STnVCNSNJNHVaNEBPfVAyXjNPIUtM
I3BmeEZFcl5Pcj5ZdllMMUthRWcxeAp6QzhII0AjRn41KUYjVTI5KmdTdHNZbTQ8OG0oMFpVSDsk
R3ZrRVgjS0RNbW4pY2hvPDNwWDI9UiFWRU1YZ2MqJUsKelB0clM5JWQ2R0hefVlvJkBCISYjcCYt
QXgjbkp1VzgzZSlkZ2duQzdjY1p7Ji1fQTc4TTBaQWtteC03P0JVWl4mCnpZM0BBUmd+PmgleFc3
ZyR1fk9vZjY/YUheS1ZVVV5SPl9VRkwyaUk3Vm8pcUIoR1B6V0Bydlg4OStVSTNgfVVlQgp6Jmk5
TStQMFlhREkqKDtBUHxEITxuNG1tU0FmUmEhMlQ5Z0AlQ2A7RTQ+PT1ZYHxGc0k+TmplcjErKT4h
MlNMeSgKelImXkt6MGJ2OzApQEIkNCFUKmRPKio4eSRRUSZlRzswTi0jUiUqSDUwKCRefCRNZ1oo
OXE9fTVmcGUqeTBnekpTCnoqT2RrOHZKV3QtLTUhNkRyZFUrN29oPjRtQzB6O0pUbGtwPG0zOWdZ
dmZwQ1FXcEotbXt4PCFzQDRoMCE0VjJjdgp6ZGBhaHY1VWlIJVM8TU58UVVLYzw4WEU0OzwjSjJI
RmYyclo3WCgyO1FWNGAkNyM0RTUrIUMxKC1Id0I0RnVUTj4KejdSTzs/em4ldVgkTiFJcilpUlpg
e0V7Qk5NJkp0fmgqYDU1R1p7RE9Bek9jaHBJNT1BU3IqP2l1P2pEPXclPiY1CnoyUnppOy14cXNl
LW9qYFJEKzd4Q3FQSnJQMTtPb2BGaUVYfUo3VmowIXBzSFNSVj1+JWFROE0pK1VZSDZyXnxGKAp6
MEQ8KiZiIz5Gek9vU0hlSkN5KllvaEVQYCNnNVB1RCk4V0s/WFNXbU8pUVBTYStwO1V4THpLPHZs
NnpBa3llM14KektHK0VxLXZ4aDtUWH5+STdfKWQ2SUpDO1k1YkdsUHFQNHMmRGR3U2hBUUhpUWZp
cFpsaGdyUHxRY3VyYmc9K15vCnpUM2NIP2RTZH1iT3FVQ09SZlZoJGpiRUk3QGI2TXxpWndoVFZP
eHtPPEQ2TVcqdyozcF58dzsmREd5ajdxM0luPgp6eX50UGFgc0BaPTFOPTFPPVA+WWl6ZU47KTR3
PlhVbWxWenJUcGJVQFVlZTZ5Z1FBIWx1WVc4eFh0OSY8NzlXeHEKejFiP3pjQG50T25NY0ghYiRA
X2FAMjZeLSpLaUJ6cF9jK2hReFQ+IzNoR1FJcDR3dlFVZnhsQXBmVEFjV2ZTdj8hCnpJbVhrJksj
VSo1PXpCIThFKCE7RU0xfSR3eGtFcUY1e2VnVVEyWnt6Y218NWZ5JCQwVzw5WmNBV2xOK3RhZTsj
cgp6cVRxcmsyKz5sfmB7U0Q+MHlzTShAbXB0IS16SkNSY1lrSGR7YVB8TyYhTik5QTdyZj9CPHFI
JTA0bFhpLTFtT2kKeiZFTkV2REMqaVEkTlJie20ofHZ9ZSZZRTV1Y1VuSmxQZmQyMmQ8elA1Wno5
QipgX0Y0bD85azNYPUN6YzhNaDt9Cnp0Uk9KcUFfcl9DLTU1UCNqZm5tM3ZHdUVFbzEmLXlSIXtg
OTdRZmVre2VmMzhAc1M1cXM5ZHNnbD0+em49Nl4/QQp6ME47e3JpbFIrbVBmZyUqUDI4LVR5LVY+
UWcwdEcxenlwQUJtX1IoTUIrWnZ+MU4wRzV3bClFKldQSUxgJXxyamEKemsmemA3Vm4mIz01V2xu
bipwbElXRmMxPzY+a3Z0TXYtd0U4cUclSmloQVJPdWZteG1nNCN2ZDVzRnZmKEdNXnlECnp2WjdR
eXhnUHVgPXdfK35NZ1ZzTE42WWROUmV2SVdTcmZtZTwoM3R0clViQigmRTZ6dGt4anFmYkNAYCpF
aW50ewp6OUV3ciRGMTYxNlFtUUE0bkA9KDkkX2k4elozMjVfVXJBWjlCUU87Y2dFbVdrejZGUzJQ
LTBuOHM9Z0xpbChnMT0KelRJKX5tREA5UWhNTnQkKlE0fmN7NmglPUtNTnQkKnNUQlZPWTZRJlU1
cDJiITAwMDAwTmt2WFh0Xi0wfmZ7ZG1hCkFAYztrLQoKZGVsdGEgMzUxNgp6Y21WO3Q0TVh5aEdK
LUwlZyRmQSgwMDAwMGA5ciZabGEyfT5lK25CQjRtaUBfKGopKT80WVd4X0t+IzkhP1ZXaiQKejZ4
QUthS1JwYVBmfF8wTEdhZG8mZ3FUUUglU3NlVnQhTl58aF45UDMjS2E+WkFlSlUtanRiKEwzVzx1
UzV2Pj4kCnpGcmtifHB0UXMmOzFNO0JNMkx6PDFtalZiN2IzWDJJTGsxZEtpO3BpazUxMXtAOXVq
JiF8P2w1eV8pWG5vX1hEYAp6ZjhZRFEtI2h5RUt2NUokUTR+Y3s2aCU9S01OdCQqUTUyO0sye1p9
JUxAT2A/NyRXO0Nmcm8mI25semJrODFQLS0KelhrZDM+OXE8ZnJHY2MjWXVKdkxHSXxFJSFrb0Uo
Q3VMOWYyZWtlTmZEKTVOeFomdTg7NX5KQl4wZSU5a21Jck56CnopeGFle1VpSGE0VkdyU2cyRDs4
JmZUNiZTel92fTJmQiUwNFIxKHM/MWRQd2ZzNSUjejJYc2k3QypSZEFHcmtSKwp6KEJ5P35Bbjtl
WS13dDNsYUVecjh6e2hnelBSfUFaMnA5JDIyc3s4aEEpaHpPX2slcGZ5KjtvSDcqXiVARmdkPXgK
ej1WJFE8YUg/MlVUTDltOzNnUjBMQWB+d0pQZz90ezkxMT9iPHV4alQlUUY8ZUQwQmY2ZlNqanYt
Q00tMmVfSChXCno8UShzZTB2M3I3KmNVSmgqcnJKWkBEbDRqbWpHP0M7fEJtTTxvRzM/MW8laDVk
bz9vdGR2ZX1ENTcpNUppZXAlVQp6XyhqKllGeW0rUURlTHx9WEBJPTRtc28jQEtvMTNXPlc2aWRC
IUV9YyRPbChzRVBsMktQVl4qI15IUmg9Ji1jVDwKenMpeHVvMEthcT8qRT1iMEk0UWdAZU1HS2tl
KzUxT0pfNFNXSTM3ejchVG9fd0lrKGtle0NmYiEqZ1kxMzxBSHRVCnpHd0p2cWotUzBQYTwmTG9g
I3ZqZFl2ezN6Oz1FYWA/Pko4WSYmbD9Bej15eVFqK157aGI3RDtWN0U2ZnNDcmh3Sgp6QEtfSmMt
bjhaNFRYVDRuKSF2XlopP082cFV4M2VNKnc8NGxZO1kpb0NzLUQ0bi1zRVlBfjtLcWY0Uy1zKmI4
XykKekxFSCtsXjlsKGZfP3JDUXJ3RT19WFlzcWh5NUR1Y3AmNyo0Q1k5WmcqbUt4Y0R4XlRIKCl9
RURoYT9IJFJXPFZlCnpSU3hnPnl4NCM1OEBuIyNKTnVsOGIrRz10VFkteHRnN2Q4Sjl0N0d3X0Ft
QSliT0tgPlQqcm0tZWBpfC1wcWREdAp6RSNGYDBBbD9GSWJUZldtJDZKTTxlKj9IT1J6Y2F9VSgk
cn1DNHlsYyNxV2V6KUF6VXg7djZwKSZMT34yUi1mWWAKem4xMHwtT1lgI3MqPWAwVl9DV3dBSUtH
Q0NVWD1SfFVrTVJpTHt8TkxwQFhwOGc4PXA8Zi1WS3sjNDdpK1p8ciQ9CnpSTE8pPF9AOyt2YjZQ
QnBRfG5NTG1zfDBsa3hgdHhpUzsrbytUUk07MmlRYD17PWZqNWV9fD9PSyRqaHIreFMtQgp6S0Ns
az5nQGdaRERXNyY8JktsdEJ6fmpLLXpgWWBaTjVwPjlBTU88a0ZpdztLciVTKSZefEhUVCFueDFM
fEcyZ1EKenJeVVh6ejc3X2tlWk5gRnw5Y1pTNVlzPD42aX4qREBYby1AUGtkaVFhRHp1ZjBOfFAk
QjU7bDRgMExGZ1B2YGNqCnoyfE92YCpkI2YmJG00XnJlXighMUd6aWl1d0w0V1QhS0VUZEUoYnZ4
eSR8clRJYDt3QWkjJXBAY01JdzclU3FuWQp6KCNwSDdwMnxWaTB5ci1BLSR6UVF3cUY1R2Nid2kw
SXwjQ2tZP29zRlEhWiRmUURFcXYyRDFWKTxzfmtIT1JWQF4KelBsTTQ+O00mNUZCfmc0c2ZWYWZ6
VXkyejNCTz9MS2t7dk5+UDFCVVVpbGw+JmZCQzJsS01tJX1DYT59VERFSWxYCnpHYFlyMG19Qiko
JSpYd3AxTCE9IU1panY0eGZ9cHxDZ0dmQnU+ZDB4ZEB6T2gmOTx5eSpFSGxyPW5tT0ZwNXxyewp6
dXEqSXUlc2FwRiM5dTROYzE+dVd5MXRJaHtZe1dZNjJQOSRYPkdESHVydSYqNTheakJxaTY1elJY
QkJxa2UoTEkKelh4fjYtXjB3MzZFZVpiOz1DITlhejxOd1M7Q2ZCNnJYe1c1dyRVNjhHNkwoS3cq
JF8/JXl8czA8RXcjdGZQWlY9CnpSfV89YjQ8Q1FvZ2N6enh1dnJtTXBFWTFjdTw+aEhCbEoteWVa
bDRHV2R+d0JxUmhwLUR6aWI4d2BuUDBkPzI9Qwp6SmZnZ2FAamtOQDwwISVoPDFrKV9NcGlsQWhG
UGEjOFpmZz8+NXt7fDZSUzkpeX1kbXJJQE4tNEp2TFpFIVAyaVgKeiN2NF9xZ2lrUER5VVdGNXY2
NilWWlV5YHFeQ0pFTDU4fklLbSkoQ2lyfXYkQXB4YUIkM0o/RmtDb21UQzQpb1g5CnpjJiohYUZw
ZHpHTmhTRVlXQVhkRlklZDBHan56YzR4Sz0pK15JVkpJNDlwVSEwMmN2TVc1KnhIeFcmcmgtI05v
IQp6YlVQb3AybHoqbTgpKz5mZFk9TVhPUXE3N0ZidnpuRmd5cSMyIWlFNzVFS2lBIXJocDZ1UnBZ
WS08NT9wJSl2T3UKemQ+KCVvamA3NllPYWQ3QmNebGh7PnpiVyN6U3FoVXhDYFMwYTR2OSloZDdQ
YGV1e0RTUD5OTV8xRWZ+JjApQzVJCnokR0EmSCt8c2ZQXz0zYXVlfmVpY0A+UWBrK2toYGdpd0JJ
Oys1WjRQMWE5KkRvTDdqfFpMXllXeH1VLXglMm52WQp6PXhBP21rMVcybmE9Q21eeG09IURzWkBx
MSNoPVVObWdJbClgUlZ6NWVtVFo1Tm9UUUc/RFRCYHt5QGE8QmdgNVcKej5wVlZ5cHBPc0IxPmRl
QmZ7bm12aklZQVQ3MWxgQFM0XiV3a3Z0RHZPdDxzZnEkYzE4N3wkUnM4N1k9dThXQ0w5CnpMbz5P
cmpGLTxMQX5Ze2E5N2A7TE11Z3VkP34wWkcwXk11UXswOEhYQEdaTDZCSzllTSN7bW5mbCs5eS1g
e2FMSQp6UzBYcjIxaDYje3phUio1TmRqMUBSRUMkITwlIyl4eyRpPCFZa0gtckM0bGM+OTNkdzB1
KylzIyQkciVEX3I2dFkKei1xc3skX31ENVUqYSokKl9MJXJCbExHNio0YndeVC18S3B+X3JjT1VV
Zzs+IzUlUEleT2FOeX05ejBULSRSd1FpCnprZlVwT1BPUTkwO0JDR3Y3VTQwVG80JSlyXyZ0Qmkj
e0wtWmxaeHA4c1Itd0xofSZNe2NSPiY1RXJ8VlFmaHokbAp6bH1jbDVAZTlLK3U8fkZTMU9ZKTE8
U0xjUUBLVUtYcmNmeHtmJDB6SW1qRzUxemMrI0pWSHxPYE5YQHFadnBgVlAKekZMYk1YSG9GTEIj
UT4+UFptfSRecTAkRXdpUWp6UzxYWmg2e2gpflBHKDRiKzA3aX42UzJ+UHlhbChJaEdsNFUkCnpa
N2RQSSk8YVh3VWhqSSgqcyh7WXglSHN1PU5+UWFuelkqQkI7YW96MStibkIxUFdtb3cjKU8zaXkh
aEdLQGRkUwp6P2F+Y1koPF4ja1IpeT01TFVzK3R7cSNTOV5NTn1zQmY8ODYtKy1IU2NeZ1J0WE53
NWg+cHcoYHExJDFXISszWCkKem4qTTRgWE03fXhiTDFHbnBGRTNTKVlPMGJ4Q2RiZ3ElWGBqeDdY
TnJQMUxXcTkoYytVLWZ6a0ZwX1ZteEc9OFFBCnpNV2ROWFVaJGgoVDQrODcwUXFSWkJVWjVtdjI5
WmVueylHfFNlbXBpMChpYlc9K1Y7NUl2S097PG1pTlIyTFlGJQp6XmZ2PntrUzEydDNfVDZfOFFs
eGcmekJ9cm0qO0VncUkpNm1ZR2tuPCRjUCZJdTkrJHA9T2NlJmFTeXtSZypnfHEKekBjaGVDPXsr
aX5xU2N0ZUskcU12cEhtVyFPLWEhXz9KRTxjQD1hP3wyVWdSM0xaY1YxLVV7R00+NFVnaF9QK3ho
CnpCODQjdFNMXmNIT3t9IVIyZVpXYmk7d1Yqd1E4ZCV4TjBKQXp6aTsoWVlFJjxSKz5MNjsrTklE
JWxsTDA1dG9kVgp6RmVUUkg4Ozl3YTheXn1XdmAmQXFlJmRwdm5FdTk1bElHRGduNkhRdDVYQnch
Jil3eFh7QFhBRWpSI156cXRCNz4KemhTbDthZFUpUDlVPE4pUXthUHI8WipGanV8STB4VEVLaTZk
akJPaFFIc19ZcGwhQE1xMHh1SVdkcVMqfHNuWG5lCnp2SW1vVzAmc1ZlU1lwLTBGRHFgNV51RVZ4
XjFMWS1aSmxJKkVZX2V7U2Z3OC07KDMzXkBqV0U+VyV1cDEoTExXVQp6Jk5uYXZiODlATiFQYiVu
ZjUwcnQ2RDxUWmpxWDhgd1Z2WWIhMVAxVE5JM3A3V35CTytDVGFuIzJURE5ANnZlNnoKemdDSE9i
TCkrUjZnQ097eUBnd0ohTkhHZHIlTDA1P0szN1hFX2Q4JVc7UDAzfEspVkNwVztKaiYlYCpUfVA1
Z1NZCnpLd2I2JE16en1tKGlERy1ZUEteKTFoYj9rZnFNLTwpMWNCJGZrRG4mPl5Ua1l3OT87WnUo
aj1MTVl5ZXtIODVZbwp6eGdyRnM8YWt6ZDA8I3ByJk8pSlpjUF5KKDV7NitWNjEqUz9EaVQ1PDQ4
eVJKJWpLNUhneT5Fak9vUTFlKjBlWVYKenYtYXlMen14KSloKiZkSUZVdjJmQFU7Uzs2RzY8SFJo
WUBSTnJofD9lcU1oQ25gVCpqJWZ1PT8tI1VJQnJYVFFOCno+d0k3QWhJdEVQaWRZJVktN2s3R1c+
NjVeejZxMW04bmA5KS00MishZklFdk54RFcyJDIxK308Q0dCKlhVSkQ/dwp6SGxOUT1QY3NvKHRu
WDk7bjBBYExGPzRyPzkjQEJneDRGTHhtbyV8N3s+b3VpUDJkKE9kfWt5YTghZkVAQUFQWG4Kej16
YlNDWnNtV0M2aypLYlVFdDc0fDRPV2o9PTBZOG1aWEA2PTdDNUE/KnZad1NQcnYjNlFxVHt5JGFV
fWJRTyFtCnp1S3JrbjUhMjs/VXNmbHBMKVMwUGUofj5XbCpKa3ptdkY0ajw4e3VnQSM3YEtgfSRp
b2M5I05ITm9hYVVRIWgkJgp6ZF9LRFhSeyVmSHhFdXheXklKcCg9I29qIWI0bFMwIVBRMFZBPFli
bzBWcztlYyFPaTFwdmpfPkBEP0l9JHxsN1oKekgzPH1AeGUzWUVGPV5QKGthZkQ4dTMxRDtIVnVN
NDdJZmNuQipuS0o8TE9+KmozMntqSjBraW5TYFBBWE5BYWg8CnojeiEmVWZ4JnBtZXA8N2FxQkop
QlNyPDQrQXFwO3Q3OW08bmRWaFNnTDt6PUpCenxpd0AhUX1+ezNmUzdaO0VEUgp6TWUqT2ZxWmRz
fW1yYy1VKXdObFUmdmxXMUV+fjcye21Ba0VQZnBScXBSQ3phUUpQeC0oK1hTRzt1bUBwenFBNSkK
enNiKV9fWD9fOCRDMigxYi07NDczMD4lTk81N1l1dzZjeGFsTFlLQXBFaFU/Z1cpKG4xWDsxO0k9
UU5hJWpoRnM9CnpnPjB0MGdxUldMdGZ0d2Q1a01VUFFJdE5DKDxKRFhfPD5vTjwjNz9ocG48TVNR
SXJlPkZ6OTdSWGE8R0B3KnA3WAp6e142SmZmRH1kOWowQ1hKLW9CVmNIdk44MlZiKW9sVnBSZUZY
VkpZJS1iTDJFVSE8MHFxQks3RlA1OWRQbVhIPE8KcTE1K187Jn1QWXtub1NqeCY8X19FWVZsdGVB
bSg9VVZeN3VxMDAwMDxNTlVNbkxTVFlWPzYlcWYKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcwppbmRleCA3NGNkM2IyZTY2YWNkMzg5NjIy
MjYyNWE4MTU5ODdhOTE4YjJiMWE1Li40MGMwNjkwY2ZhYWQ0ODBjMGVjNTQxM2NlOWE2Nzk2MTA5
ZjIwMDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1By
b2ZpbGVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJv
ZmlsZVZpZXcuanMKQEAgLTU3NCwxMiArNTc0LDEyIEBAIFdlYkluc3BlY3Rvci5DUFVQcm9maWxl
VHlwZS5UeXBlSWQgPSAiQ1BVIjsKIFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5wcm90b3R5
cGUgPSB7CiAgICAgZ2V0IGJ1dHRvblRvb2x0aXAoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX3JlY29yZGluZyA/IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RvcCBwcm9maWxpbmcuIikg
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IHByb2ZpbGluZy4iKTsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX3JlY29yZGluZyA/IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RvcCBDUFUgcHJv
ZmlsaW5nLiIpIDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFydCBDUFUgcHJvZmlsaW5nLiIp
OwogICAgIH0sCiAKICAgICBnZXQgYnV0dG9uU3R5bGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX3JlY29yZGluZyA/ICJyZWNvcmQtcHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0gc3RhdHVz
LWJhci1pdGVtIHRvZ2dsZWQtb24iIDogInJlY29yZC1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSBz
dGF0dXMtYmFyLWl0ZW0iOworICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkaW5nID8gInJlY29y
ZC1jcHUtcHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0gc3RhdHVzLWJhci1pdGVtIHRvZ2dsZWQtb24i
IDogInJlY29yZC1jcHUtcHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0gc3RhdHVzLWJhci1pdGVtIjsK
ICAgICB9LAogCiAgICAgYnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oKQpAQCAtNTg3LDkgKzU4Nyw5
IEBAIFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX3JlY29yZGluZyA9ICF0aGlzLl9yZWNvcmRpbmc7CiAKICAgICAgICAgaWYgKHRoaXMuX3Jl
Y29yZGluZykKLSAgICAgICAgICAgIFByb2ZpbGVyQWdlbnQuc3RhcnQoKTsKKyAgICAgICAgICAg
IFByb2ZpbGVyQWdlbnQuc3RhcnQoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLlR5cGVJZCk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFByb2ZpbGVyQWdlbnQuc3RvcCgpOworICAgICAg
ICAgICAgUHJvZmlsZXJBZ2VudC5zdG9wKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5UeXBl
SWQpOwogICAgIH0sCiAKICAgICBnZXQgd2VsY29tZU1lc3NhZ2UoKQpAQCAtNjA1LDEzICs2MDUs
MTMgQEAgV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLnByb3RvdHlwZSA9IHsKICAgICBzdGFy
dFJlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3JlY29y
ZGluZyA9IHRydWU7Ci0gICAgICAgIFByb2ZpbGVyQWdlbnQuc3RhcnQoKTsKKyAgICAgICAgUHJv
ZmlsZXJBZ2VudC5zdGFydChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUuVHlwZUlkKTsKICAg
ICB9LAogCiAgICAgc3RvcFJlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX3JlY29yZGluZyA9IGZhbHNlOwotICAgICAgICBQcm9maWxlckFnZW50LnN0b3Ao
KTsKKyAgICAgICAgUHJvZmlsZXJBZ2VudC5zdG9wKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlw
ZS5UeXBlSWQpOwogICAgIH0sCiAKICAgICBzZXRSZWNvcmRpbmdQcm9maWxlOiBmdW5jdGlvbihp
c1Byb2ZpbGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUHJvZmlsZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UHJvZmlsZXNQYW5lbC5qcwppbmRleCA4ZDhhOTdhMDE2OGJkOWI1NTMyNGJkZTE3N2E3Mjc1YWVi
YTBmOTRhLi5iYWZkYzk1YWQwYjg4NDljNzE4NDE2OTdlMjRiZWY0NmIxNzljMmNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpz
CkBAIC0xMzUsNiArMTM1LDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwgPSBmdW5jdGlv
bigpCiAgICAgdGhpcy5fcmVzZXQoKTsKIAogICAgIHRoaXMuX3JlZ2lzdGVyUHJvZmlsZVR5cGUo
bmV3IFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZSgpKTsKKyAgICB0aGlzLl9yZWdpc3RlclBy
b2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZSgpKTsKICAg
ICBpZiAoQ2FwYWJpbGl0aWVzLmhlYXBQcm9maWxlclByZXNlbnQpCiAgICAgICAgIHRoaXMuX3Jl
Z2lzdGVyUHJvZmlsZVR5cGUobmV3IFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90UHJvZmls
ZVR5cGUoKSk7CiAKQEAgLTI4NiwxMiArMjg3LDggQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFu
ZWwucHJvdG90eXBlID0gewogCiAgICAgX2FkZFByb2ZpbGVIZWFkZXI6IGZ1bmN0aW9uKHByb2Zp
bGUpCiAgICAgewotICAgICAgICBpZiAodGhpcy5oYXNUZW1wb3JhcnlQcm9maWxlKHByb2ZpbGUu
dHlwZUlkKSkgewotICAgICAgICAgICAgaWYgKHByb2ZpbGUudHlwZUlkID09PSBXZWJJbnNwZWN0
b3IuQ1BVUHJvZmlsZVR5cGUuVHlwZUlkKQotICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZVBy
b2ZpbGVIZWFkZXIodGhpcy5fdGVtcG9yYXJ5UmVjb3JkaW5nUHJvZmlsZSk7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlUHJvZmlsZUhlYWRlcih0aGlzLl90
ZW1wb3JhcnlUYWtpbmdTbmFwc2hvdCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMuaGFz
VGVtcG9yYXJ5UHJvZmlsZShwcm9maWxlLnR5cGVJZCkpCisgICAgICAgICAgICB0aGlzLl9yZW1v
dmVQcm9maWxlSGVhZGVyKHRoaXNbdGhpcy5fdGVtcG9yYXJ5UmVjb3JkaW5nUHJvZmlsZUZpZWxk
TmFtZShwcm9maWxlLnR5cGVJZCldKTsKIAogICAgICAgICB2YXIgdHlwZUlkID0gcHJvZmlsZS50
eXBlSWQ7CiAgICAgICAgIHZhciBwcm9maWxlVHlwZSA9IHRoaXMuZ2V0UHJvZmlsZVR5cGUodHlw
ZUlkKTsKQEAgLTgyNCwyMyArODIxLDMwIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5wcm9maWxlVmlld1N0YXR1c0Jhckl0ZW1zQ29udGFp
bmVyLnN0eWxlLmxlZnQgPSBNYXRoLm1heCg2ICogMzEsIHdpZHRoKSArICJweCI7CiAgICAgfSwK
IAotICAgIF9zZXRSZWNvcmRpbmdQcm9maWxlOiBmdW5jdGlvbihpc1Byb2ZpbGluZykKKyAgICBf
dGVtcG9yYXJ5UmVjb3JkaW5nUHJvZmlsZUZpZWxkTmFtZTogZnVuY3Rpb24ocHJvZmlsZVR5cGUp
CisgICAgeworICAgICAgICByZXR1cm4gIl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlIiArIHBy
b2ZpbGVUeXBlOworICAgIH0sCisKKyAgICBfc2V0UmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24o
cHJvZmlsZVR5cGUsIGlzUHJvZmlsaW5nKQogICAgIHsKLSAgICAgICAgdGhpcy5nZXRQcm9maWxl
VHlwZShXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUuVHlwZUlkKS5zZXRSZWNvcmRpbmdQcm9m
aWxlKGlzUHJvZmlsaW5nKTsKLSAgICAgICAgaWYgKHRoaXMuaGFzVGVtcG9yYXJ5UHJvZmlsZShX
ZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUuVHlwZUlkKSAhPT0gaXNQcm9maWxpbmcpIHsKLSAg
ICAgICAgICAgIGlmICghdGhpcy5fdGVtcG9yYXJ5UmVjb3JkaW5nUHJvZmlsZSkgewotICAgICAg
ICAgICAgICAgIHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUgPSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHR5cGVJZDogV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLlR5cGVJZCwKKyAg
ICAgICAgdGhpcy5nZXRQcm9maWxlVHlwZShwcm9maWxlVHlwZSkuc2V0UmVjb3JkaW5nUHJvZmls
ZShpc1Byb2ZpbGluZyk7CisgICAgICAgIGlmICh0aGlzLmhhc1RlbXBvcmFyeVByb2ZpbGUocHJv
ZmlsZVR5cGUpICE9PSBpc1Byb2ZpbGluZykgeworICAgICAgICAgICAgdmFyIHRlbXBQcm9maWxl
RmllbGROYW1lID0gdGhpcy5fdGVtcG9yYXJ5UmVjb3JkaW5nUHJvZmlsZUZpZWxkTmFtZShwcm9m
aWxlVHlwZSk7CisgICAgICAgICAgICBpZiAoIXRoaXNbdGVtcFByb2ZpbGVGaWVsZE5hbWVdKSB7
CisgICAgICAgICAgICAgICAgdGhpc1t0ZW1wUHJvZmlsZUZpZWxkTmFtZV0gPSB7CisgICAgICAg
ICAgICAgICAgICAgIHR5cGVJZDogcHJvZmlsZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgIHRp
dGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY29yZGluZ+KApiIpLAogICAgICAgICAgICAg
ICAgICAgICB1aWQ6IC0xLAogICAgICAgICAgICAgICAgICAgICBpc1RlbXBvcmFyeTogdHJ1ZQog
ICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaXNQcm9m
aWxpbmcpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9hZGRQcm9maWxlSGVhZGVyKHRoaXMuX3Rl
bXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUpOwotICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci51
c2VyTWV0cmljcy5Qcm9maWxlc0NQVVByb2ZpbGVUYWtlbi5yZWNvcmQoKTsKKyAgICAgICAgICAg
ICAgICB0aGlzLl9hZGRQcm9maWxlSGVhZGVyKHRoaXNbdGVtcFByb2ZpbGVGaWVsZE5hbWVdKTsK
KyAgICAgICAgICAgICAgICBpZiAocHJvZmlsZVR5cGUgPT09IFdlYkluc3BlY3Rvci5DUFVQcm9m
aWxlVHlwZS5UeXBlSWQpCisgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci51c2VyTWV0
cmljcy5Qcm9maWxlc0NQVVByb2ZpbGVUYWtlbi5yZWNvcmQoKTsKICAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZVByb2ZpbGVIZWFkZXIodGhpcy5fdGVtcG9y
YXJ5UmVjb3JkaW5nUHJvZmlsZSk7CisgICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlUHJvZmls
ZUhlYWRlcih0aGlzW3RlbXBQcm9maWxlRmllbGROYW1lXSk7CiAgICAgICAgIH0KICAgICAgICAg
dGhpcy51cGRhdGVQcm9maWxlVHlwZUJ1dHRvbnMoKTsKICAgICB9LApAQCAtODQ4LDE1ICs4NTIs
MTYgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgIHRha2VI
ZWFwU25hcHNob3Q6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5oYXNUZW1w
b3JhcnlQcm9maWxlKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90UHJvZmlsZVR5cGUuVHlw
ZUlkKSkgewotICAgICAgICAgICAgaWYgKCF0aGlzLl90ZW1wb3JhcnlUYWtpbmdTbmFwc2hvdCkg
ewotICAgICAgICAgICAgICAgIHRoaXMuX3RlbXBvcmFyeVRha2luZ1NuYXBzaG90ID0geworICAg
ICAgICAgICAgdmFyIHRlbXBQcm9maWxlRmllbGROYW1lID0gdGhpcy5fdGVtcG9yYXJ5UmVjb3Jk
aW5nUHJvZmlsZUZpZWxkTmFtZShXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFByb2ZpbGVU
eXBlLlR5cGVJZCk7CisgICAgICAgICAgICBpZiAoIXRoaXNbdGVtcFByb2ZpbGVGaWVsZE5hbWVd
KSB7CisgICAgICAgICAgICAgICAgdGhpc1t0ZW1wUHJvZmlsZUZpZWxkTmFtZV0gPSB7CiAgICAg
ICAgICAgICAgICAgICAgIHR5cGVJZDogV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RQcm9m
aWxlVHlwZS5UeXBlSWQsCiAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlNuYXBzaG90dGluZ+KApiIpLAogICAgICAgICAgICAgICAgICAgICB1aWQ6IC0x
LAogICAgICAgICAgICAgICAgICAgICBpc1RlbXBvcmFyeTogdHJ1ZQogICAgICAgICAgICAgICAg
IH07CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aGlzLl9hZGRQcm9maWxlSGVhZGVyKHRo
aXMuX3RlbXBvcmFyeVRha2luZ1NuYXBzaG90KTsKKyAgICAgICAgICAgIHRoaXMuX2FkZFByb2Zp
bGVIZWFkZXIodGhpc1t0ZW1wUHJvZmlsZUZpZWxkTmFtZV0pOwogICAgICAgICB9CiAgICAgICAg
IFByb2ZpbGVyQWdlbnQudGFrZUhlYXBTbmFwc2hvdCgpOwogICAgICAgICBXZWJJbnNwZWN0b3Iu
dXNlck1ldHJpY3MuUHJvZmlsZXNIZWFwUHJvZmlsZVRha2VuLnJlY29yZCgpOwpAQCAtODY1LDEw
ICs4NzAsMTEgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAg
IF9yZXBvcnRIZWFwU25hcHNob3RQcm9ncmVzczogZnVuY3Rpb24oZG9uZSwgdG90YWwpCiAgICAg
ewogICAgICAgICBpZiAodGhpcy5oYXNUZW1wb3JhcnlQcm9maWxlKFdlYkluc3BlY3Rvci5EZXRh
aWxlZEhlYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkKSkgewotICAgICAgICAgICAgdGhpcy5fdGVt
cG9yYXJ5VGFraW5nU25hcHNob3Quc2lkZWJhckVsZW1lbnQuc3VidGl0bGUgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIiUuMmYlJSIsIChkb25lIC8gdG90YWwpICogMTAwKTsKLSAgICAgICAgICAg
IHRoaXMuX3RlbXBvcmFyeVRha2luZ1NuYXBzaG90LnNpZGViYXJFbGVtZW50LndhaXQgPSB0cnVl
OworICAgICAgICAgICAgdmFyIHRlbXBTbmFwc2hvdCA9IHRoaXNbdGhpcy5fdGVtcG9yYXJ5UmVj
b3JkaW5nUHJvZmlsZUZpZWxkTmFtZShXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFByb2Zp
bGVUeXBlLlR5cGVJZCldOworICAgICAgICAgICAgdGVtcFNuYXBzaG90LnNpZGViYXJFbGVtZW50
LnN1YnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlLjJmJSUiLCAoZG9uZSAvIHRvdGFs
KSAqIDEwMCk7CisgICAgICAgICAgICB0ZW1wU25hcHNob3Quc2lkZWJhckVsZW1lbnQud2FpdCA9
IHRydWU7CiAgICAgICAgICAgICBpZiAoZG9uZSA+PSB0b3RhbCkKLSAgICAgICAgICAgICAgICB0
aGlzLl9yZW1vdmVQcm9maWxlSGVhZGVyKHRoaXMuX3RlbXBvcmFyeVRha2luZ1NuYXBzaG90KTsK
KyAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVQcm9maWxlSGVhZGVyKHRlbXBTbmFwc2hvdCk7
CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC05MDIsOSArOTA4LDkgQEAgV2ViSW5zcGVjdG9yLlBy
b2ZpbGVyRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Byb2ZpbGVyLl9m
aW5pc2hIZWFwU25hcHNob3QodWlkKTsKICAgICB9LAogCi0gICAgc2V0UmVjb3JkaW5nUHJvZmls
ZTogZnVuY3Rpb24oaXNQcm9maWxpbmcpCisgICAgc2V0UmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rp
b24ocHJvZmlsZVR5cGUsIGlzUHJvZmlsaW5nKQogICAgIHsKLSAgICAgICAgdGhpcy5fcHJvZmls
ZXIuX3NldFJlY29yZGluZ1Byb2ZpbGUoaXNQcm9maWxpbmcpOworICAgICAgICB0aGlzLl9wcm9m
aWxlci5fc2V0UmVjb3JkaW5nUHJvZmlsZShwcm9maWxlVHlwZSwgaXNQcm9maWxpbmcpOwogICAg
IH0sCiAKICAgICByZXBvcnRIZWFwU25hcHNob3RQcm9ncmVzczogZnVuY3Rpb24oZG9uZSwgdG90
YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktp
dC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5k
ZXggNTQ1ZjFkYmU3ZTkyM2JkZjAzYmU5YWM0NjY0NjIzNThkMzZmNTdlMi4uODJhNTJkOTFiMzc0
NGY5ZjE2ZGE0YWY0NzEzMTFmN2QxY2I4NzM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtMjksNiArMjksNyBAQAogICAgIDxmaWxlPkNv
b2tpZXNUYWJsZS5qczwvZmlsZT4KICAgICA8ZmlsZT5DU1NDb21wbGV0aW9ucy5qczwvZmlsZT4K
ICAgICA8ZmlsZT5DU1NLZXl3b3JkQ29tcGxldGlvbnMuanM8L2ZpbGU+CisgICAgPGZpbGU+Q1NT
U2VsZWN0b3JQcm9maWxlVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5DU1NTdHlsZU1vZGVsLmpz
PC9maWxlPgogICAgIDxmaWxlPkRhdGFiYXNlLmpzPC9maWxlPgogICAgIDxmaWxlPkRhdGFiYXNl
UXVlcnlWaWV3LmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4IGRhNWNhM2I4ZjkzZThkM2M3NDM2MGI5NzgzNTU3ZDI1
NWFhMWI2YWQuLjRlZGRmMGY3YTFlOTEzYmQ2OTg4OTc1YTZkMTE2NWUyZTgwYmQyMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAg
LTI1MDUsMTUgKzI1MDUsMjMgQEAgYm9keS5wbGF0Zm9ybS1tYWMgI2RyYXdlci1zdGF0dXMtYmFy
IC5zZWFyY2gtc3RhdHVzLWJhci1wcm9ncmVzcyB7CiAgICAgd2hpdGUtc3BhY2U6IHByZTsKIH0K
IAotLnJlY29yZC1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSAuZ2x5cGggeworLnJlY29yZC1jcHUt
cHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0gLmdseXBoIHsKICAgICAtd2Via2l0LW1hc2stcG9zaXRp
b246IC0yODhweCAwOwogfQogCi0ucmVjb3JkLXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtLnRvZ2ds
ZWQtb24gLmdseXBoIHsKKy5yZWNvcmQtY3B1LXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtLnRvZ2ds
ZWQtb24gLmdseXBoIHsKICAgICAtd2Via2l0LW1hc2stcG9zaXRpb246IC0yODhweCAtMjRweDsK
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjE2LCAwLCAwKSAhaW1wb3J0YW50OwogfQogCisu
cmVjb3JkLWNzcy1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSAuZ2x5cGggeworICAgIC13ZWJraXQt
bWFzay1wb3NpdGlvbjogLTEyOHB4IC00OHB4OworfQorCisucmVjb3JkLWNzcy1wcm9maWxlLXN0
YXR1cy1iYXItaXRlbS50b2dnbGVkLW9uIC5nbHlwaCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
cmdiKDIxNiwgMCwgMCkgIWltcG9ydGFudDsKK30KKwogLnN0b3JhZ2UtZW1wdHktdmlldywgLnN0
b3JhZ2UtdmlldyAuc3RvcmFnZS10YWJsZS1lcnJvciB7CiAgICAgcG9zaXRpb246IGFic29sdXRl
OwogICAgIHRvcDogMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5odG1sCmluZGV4IDIzNGVhN2RiY2NmMzNkYzQ4YzFmZDgyZTY4YmI0ODBhY2Ex
Y2VkNDcuLmUxODM4ZTAxNjgyNDdjOTgyOWYyMDQ5MWU0MDY1NjQwNWY5NzkyN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAt
MTU0LDYgKzE1NCw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iQm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJUb3BEb3duUHJvZmlsZURhdGFHcmlk
VHJlZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iUHJvZmlsZVZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9IkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlBhcnRpYWxRdWlja1NvcnQuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkhlYXBTbmFw
c2hvdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iSGVhcFNuYXBzaG90UHJveHkuanMiPjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118586</attachid>
            <date>2011-12-09 09:11:10 -0800</date>
            <delta_ts>2011-12-26 03:43:37 -0800</delta_ts>
            <desc>[PATCH] Instrumented applyMatchedDeclaration(), added PoC selectorText caching</desc>
            <filename>bug-74004-20111209211107.patch</filename>
            <type>text/plain</type>
            <size>86866</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA3MGEzOTI5ZmFlYzJi
MGY4YWRhNDhiNmMxYThhODk4OTdhYzU5My4uYjY4YWY1MDI4NTY2MmM4MjVmYjc5OGNjNmJmNWMw
MDU0MmU0MTRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAxMS0xMi0wNyAgQWxl
eGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IEltcGxlbWVudCBDU1Mgc2VsZWN0b3IgcHJvZmlsZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MDA0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBDU1Mg
c2VsZWN0b3IgcHJvZmlsZXIgbWVhc3VyZXMgdGhlIHRvdGFsIHRpbWUgcmVxdWlyZWQgdG8gbWF0
Y2ggYSBjZXJ0YWluIHNlbGVjdG9yCisgICAgICAgIGFnYWluc3QgRE9NIG5vZGVzIGFuZCBhcHBs
eSB0aGUgc3R5bGUgZGVjbGFyYXRpb24gcHJvcGVydGllcyB0byB0aGUgcGFydGljdWxhciBlbGVt
ZW50LAorICAgICAgICBhcyB3ZWxsIGFzIHRoZSBudW1iZXIgb2Ygc2VsZWN0b3IgbWF0Y2ggcnVu
cyAoY2hlY2tzIGlmIHRoZSBzZWxlY3RvciBpcyBhcHBsaWNhYmxlIHRvIHRoZSBub2RlKQorICAg
ICAgICBhbmQgYWN0dWFsIG1hdGNoZXMgKGkuZS4gdGhlIG51bWJlciBvZiBub2RlcyB3aGljaCBt
YXRjaGVkIHRoZSBzZWxlY3Rvci4pIE11bHRpcGxlIHNlbGVjdG9ycyB3aXRoIHRoZSBzYW1lCisg
ICAgICAgIHNlbGVjdG9yIHRleHQgYXJlIGNvYWxlc2NlZCBpbnRvIG9uZSByZWNvcmQuIFRoZSBD
U1NTdHlsZVNlbGVjdG9yOjptYXRjaFJ1bGVzRm9yTGlzdCgpIGFuZAorICAgICAgICBDU1NTdHls
ZVNlbGVjdG9yOjphcHBseURlY2xhcmF0aW9uKCkgbWV0aG9kcyBhcmUgaW5zdHJ1bWVudGVkLgor
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVJ1bGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVSdWxlOjpDU1NTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVSdWxlOjp+Q1NTU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVjdG9yVGV4
dENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlUnVsZTo6Y2xlYW51cCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVJ1bGU6OnNlbGVjdG9yVGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVJ1bGU6OnNldFNlbGVjdG9yVGV4dCk6CisgICAgICAgICogY3NzL0NTU1N0
eWxlUnVsZS5oOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUnVsZXNGb3JMaXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5RGVjbGFyYXRpb24pOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbE1hdGNoUnVsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRNYXRjaFJ1bGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFByb2Nlc3NSdWxlSW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFByb2Nlc3NSdWxlSW1wbCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTWF0Y2hSdWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTWF0Y2hSdWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFByb2Nlc3NSdWxl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUHJvY2Vz
c1J1bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OlNlbGVjdG9yUHJvZmls
ZTo6Y29tbWl0U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6U2VsZWN0b3JQcm9maWxlOjpjb21taXRTZWxlY3RvclRpbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6U2VsZWN0b3JQcm9maWxlOjp0b0luc3BlY3Rv
ck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpJbnNw
ZWN0b3JQcm9maWxlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVy
QWdlbnQ6OmFkZFNlbGVjdG9yUHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
cm9maWxlckFnZW50OjpjcmVhdGVTZWxlY3RvclByb2ZpbGVIZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZUhlYWRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZW1vdmVQcm9maWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlc2V0U3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVzZXRGcm9udGVuZFByb2ZpbGVz
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNsZWFyRnJvbnRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVzdG9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpzdGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpzdG9wKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnRvZ2dsZVJlY29yZEJ1dHRvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRPYmplY3RCeUhlYXBPYmpl
Y3RJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp3aWxsTWF0
Y2hSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmRpZE1h
dGNoUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp3aWxs
UHJvY2Vzc1J1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6
ZGlkUHJvY2Vzc1J1bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFn
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjppZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpSdWxlTWF0Y2hpbmdTdGF0
czo6UnVsZU1hdGNoaW5nU3RhdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmls
ZXJBZ2VudDo6U2VsZWN0b3JQcm9maWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6U2VsZWN0b3JQcm9maWxlOjp+U2VsZWN0b3JQcm9maWxlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OlNlbGVjdG9yUHJvZmls
ZTo6dGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6U2Vs
ZWN0b3JQcm9maWxlOjp1aWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6U2VsZWN0b3JQcm9maWxlOjp0b3RhbE1hdGNoaW5nVGltZU1zKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OlNlbGVjdG9yUHJvZmlsZTo6U2VsZWN0b3JQ
cm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmluY3Jl
bWVudElkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQuc2g6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTZWxlY3RvclByb2ZpbGVWaWV3LmpzOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvckRhdGFHcmlkTm9kZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JEYXRhR3JpZE5vZGUucHJvdG90eXBlLmdldCBy
YXdEYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvckRhdGFHcmlkTm9kZS5w
cm90b3R5cGUuY3JlYXRlQ2VsbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQ
cm9maWxlVmlldy5wcm9maWxlQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1Nl
bGVjdG9yUHJvZmlsZVZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJv
ZmlsZVZpZXcucHJvdG90eXBlLmdldCBzdGF0dXNCYXJJdGVtcyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuZ2V0IHByb2ZpbGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLnNldCBw
cm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnBy
b3RvdHlwZS53aWxsSGlkZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9m
aWxlVmlldy5wcm90b3R5cGUuX2NyZWF0ZVByb2ZpbGVOb2Rlcyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUucmVmcmVzaCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUucmVmcmVzaFZp
c2libGVEYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3
LnByb3RvdHlwZS5yZWZyZXNoU2hvd0FzUGVyY2VudHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLnNlYXJjaENhbmNlbGVkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZS5wZXJmb3Jt
U2VhcmNoLm1hdGNoZXNRdWVyeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQ
cm9maWxlVmlldy5wcm90b3R5cGUucGVyZm9ybVNlYXJjaCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuanVtcFRvRmlyc3RTZWFyY2hSZXN1
bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90
eXBlLmp1bXBUb0xhc3RTZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1Nl
bGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLmp1bXBUb05leHRTZWFyY2hSZXN1bHQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLmp1bXBU
b1ByZXZpb3VzU2VhcmNoUmVzdWx0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3Rv
clByb2ZpbGVWaWV3LnByb3RvdHlwZS5zaG93aW5nRmlyc3RTZWFyY2hSZXN1bHQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLnNob3dpbmdM
YXN0U2VhcmNoUmVzdWx0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2Zp
bGVWaWV3LnByb3RvdHlwZS5fanVtcFRvU2VhcmNoUmVzdWx0KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZS5fc29ydERhdGEpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLl9zb3J0UHJv
ZmlsZS5nZXQgc2VsZWN0b3JDb21wYXJhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NT
ZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZS5fc29ydFByb2ZpbGUudGltZUNvbXBhcmF0b3Ip
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBl
Ll9zb3J0UHJvZmlsZS5oaXRzQ29tcGFyYXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NT
U2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuX3NvcnRQcm9maWxlLm1hdGNoZXNDb21wYXJh
dG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3Rv
dHlwZS5fc29ydFByb2ZpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJv
ZmlsZVR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUu
cHJvdG90eXBlLmdldCBidXR0b25Ub29sdGlwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NT
ZWxlY3RvclByb2ZpbGVUeXBlLnByb3RvdHlwZS5nZXQgYnV0dG9uU3R5bGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUucHJvdG90eXBlLmJ1dHRvbkNsaWNr
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUucHJvdG90
eXBlLmdldCB3ZWxjb21lTWVzc2FnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0
b3JQcm9maWxlVHlwZS5wcm90b3R5cGUuaXNSZWNvcmRpbmdQcm9maWxlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLnByb3RvdHlwZS5zdGFydFJlY29yZGlu
Z1Byb2ZpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUu
cHJvdG90eXBlLnN0b3BSZWNvcmRpbmdQcm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
U1NTZWxlY3RvclByb2ZpbGVUeXBlLnByb3RvdHlwZS5zZXRSZWNvcmRpbmdQcm9maWxlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLnByb3RvdHlwZS5jcmVh
dGVTaWRlYmFyVHJlZUVsZW1lbnRGb3JQcm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
U1NTZWxlY3RvclByb2ZpbGVUeXBlLnByb3RvdHlwZS5jcmVhdGVWaWV3KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9zdGF0dXNiYXJCdXR0b25HbHlwaHMucG5nOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUucHJvdG90eXBlLmdldCBidXR0b25Ub29sdGlwKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5wcm90b3R5cGUuZ2V0IGJ1dHRvblN0
eWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5wcm90b3R5cGUuYnV0
dG9uQ2xpY2tlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUucHJvdG90
eXBlLnN0YXJ0UmVjb3JkaW5nUHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1BVUHJv
ZmlsZVR5cGUucHJvdG90eXBlLnN0b3BSZWNvcmRpbmdQcm9maWxlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuX2FkZFByb2ZpbGVIZWFkZXIpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9m
aWxlRmllbGROYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3Rv
dHlwZS5fc2V0UmVjb3JkaW5nUHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmls
ZXNQYW5lbC5wcm90b3R5cGUudGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuX3JlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlLnNldFJl
Y29yZGluZ1Byb2ZpbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3M6CisgICAgICAg
ICgucmVjb3JkLWNwdS1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSAuZ2x5cGgpOgorICAgICAgICAo
LnJlY29yZC1jcHUtcHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0udG9nZ2xlZC1vbiAuZ2x5cGgpOgor
ICAgICAgICAoLnJlY29yZC1jc3MtcHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0gLmdseXBoKToKKyAg
ICAgICAgKC5yZWNvcmQtY3NzLXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtLnRvZ2dsZWQtb24gLmds
eXBoKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgorCiAy
MDExLTEyLTA5ICBKb29uZSBIdXIgIDxqb29uZS5odXJAY29sbGFib3JhLmNvLnVrPiwgR3VzdGF2
byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4gCiAKICAg
ICAgICAgW0dUS10gSW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBBY2NlbGVyYXRlZCBDb21wb3Np
dGluZyB1c2luZyBDbHV0dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZDE5OTBhOWRiMWNhMjg4YmMy
N2YyMDFjOTIzYmEyODA5ZDAyZTAyYy4uNzI4YmY2MDgxMDM1M2ExMTg4YzA5NzdlNGIxYWE0YzRj
Y2UxYjUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjM0Niw2ICs2MzQ2LDcgQEAKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZXNUYWJsZS5qcycsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9DU1NDb21wbGV0aW9ucy5qcycsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL2Zyb250LWVuZC9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanMnLAorICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL0RhdGFiYXNlUXVlcnlWaWV3LmpzJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZGY4Mzg4NTNmYjZhNWYyOTU4MGI1MmY3
ZmVkYzBiNjlkM2YxMmUwMC4uMThhMDQ3ZGYxOWRkY2EzOWNlMWQ3ZTdkODY0NjY1M2ZiMmIwYzdi
MiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAg
LTY4OTczLDYgKzY4OTczLDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXENTU1NlbGVjdG9yUHJvZmls
ZVZpZXcuanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXENTU1N0eWxlTW9kZWwuanMiCiAJCQkJCT4KIAkJ
CQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuY3BwCmluZGV4IGMzODgyM2I3Yjhi
YWUyZmE0Njg3ZGQ0MzU4YzQ4NTllNzViY2JmZjQuLjg2ZDBjMzVlMzJhZDYzNGE3MzQ3NTA1MWI4
Y2M4ZWI2OTc5Y2QxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuY3BwCkBAIC0zMSwx
MiArMzEsMTUgQEAKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVT
aGVldC5oIgogCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIENTU1N0eWxlUnVsZTo6Q1NTU3R5bGVSdWxlKENTU1N0eWxlU2hlZXQq
IHBhcmVudCwgaW50IHNvdXJjZUxpbmUsIENTU1J1bGU6OlR5cGUgdHlwZSkKICAgICA6IENTU1J1
bGUocGFyZW50LCB0eXBlKQogewogICAgIG1fc291cmNlTGluZSA9IHNvdXJjZUxpbmU7CisgICAg
bV9oYXNDYWNoZWRTZWxlY3RvclRleHQgPSBmYWxzZTsKIAogICAgIC8vIG1fc291cmNlTGluZSBp
cyBhIGJpdGZpZWxkLCBzbyBsZXQncyBjYXRjaCBhbnkgb3ZlcmZsb3cgZWFybHkgaW4gZGVidWcg
bW9kZS4KICAgICBBU1NFUlQobV9zb3VyY2VMaW5lID09IHNvdXJjZUxpbmUpOwpAQCAtNDYsMjAg
KzQ5LDQ5IEBAIENTU1N0eWxlUnVsZTo6fkNTU1N0eWxlUnVsZSgpCiB7CiAgICAgaWYgKG1fc3R5
bGUpCiAgICAgICAgIG1fc3R5bGUtPnNldFBhcmVudFJ1bGUoMCk7CisgICAgY2xlYW51cCgpOwor
fQorCit0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ1NTU3R5bGVSdWxlKiwgU3RyaW5nPiBTZWxlY3Rv
clRleHRDYWNoZTsKK3N0YXRpYyBTZWxlY3RvclRleHRDYWNoZSYgc2VsZWN0b3JUZXh0Q2FjaGUo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2VsZWN0b3JUZXh0Q2FjaGUsIGNhY2hlLCAo
KSk7CisgICAgcmV0dXJuIGNhY2hlOworfQorCit2b2lkIENTU1N0eWxlUnVsZTo6Y2xlYW51cCgp
Cit7CisgICAgQVNTRVJUKCFtX2hhc0NhY2hlZFNlbGVjdG9yVGV4dCk7CisgICAgaWYgKG1faGFz
Q2FjaGVkU2VsZWN0b3JUZXh0KSB7CisgICAgICAgIHNlbGVjdG9yVGV4dENhY2hlKCkucmVtb3Zl
KHRoaXMpOworICAgICAgICBtX2hhc0NhY2hlZFNlbGVjdG9yVGV4dCA9IGZhbHNlOworICAgIH0K
IH0KIAogU3RyaW5nIENTU1N0eWxlUnVsZTo6c2VsZWN0b3JUZXh0KCkgY29uc3QKIHsKLSAgICBp
ZiAoaXNQYWdlUnVsZSgpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTUGFn
ZVJ1bGUqPih0aGlzKS0+cGFnZVNlbGVjdG9yVGV4dCgpOworICAgIGlmIChtX2hhc0NhY2hlZFNl
bGVjdG9yVGV4dCkgeworICAgICAgICBBU1NFUlQoc2VsZWN0b3JUZXh0Q2FjaGUoKS5jb250YWlu
cyh0aGlzKSk7CisgICAgICAgIHJldHVybiBzZWxlY3RvclRleHRDYWNoZSgpLmdldCh0aGlzKTsK
KyAgICB9CiAKLSAgICBTdHJpbmcgc3RyOwotICAgIGZvciAoQ1NTU2VsZWN0b3IqIHMgPSBzZWxl
Y3Rvckxpc3QoKS5maXJzdCgpOyBzOyBzID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHMpKSB7Ci0g
ICAgICAgIGlmIChzICE9IHNlbGVjdG9yTGlzdCgpLmZpcnN0KCkpCi0gICAgICAgICAgICBzdHIg
Kz0gIiwgIjsKLSAgICAgICAgc3RyICs9IHMtPnNlbGVjdG9yVGV4dCgpOworICAgIFN0cmluZyB0
ZXh0OworICAgIGlmIChpc1BhZ2VSdWxlKCkpCisgICAgICAgIHRleHQgPSBzdGF0aWNfY2FzdDxj
b25zdCBDU1NQYWdlUnVsZSo+KHRoaXMpLT5wYWdlU2VsZWN0b3JUZXh0KCk7CisgICAgZWxzZSB7
CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgZm9yIChDU1NTZWxlY3Rv
ciogcyA9IHNlbGVjdG9yTGlzdCgpLmZpcnN0KCk7IHM7IHMgPSBDU1NTZWxlY3Rvckxpc3Q6Om5l
eHQocykpIHsKKyAgICAgICAgICAgIGlmIChzICE9IHNlbGVjdG9yTGlzdCgpLmZpcnN0KCkpCisg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiwgIik7CisgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZChzLT5zZWxlY3RvclRleHQoKSk7CisgICAgICAgIH0KKyAgICAgICAgdGV4dCA9IGJ1
aWxkZXIudG9TdHJpbmcoKTsKICAgICB9Ci0gICAgcmV0dXJuIHN0cjsKKworICAgIEFTU0VSVCgh
c2VsZWN0b3JUZXh0Q2FjaGUoKS5jb250YWlucyh0aGlzKSk7CisgICAgc2VsZWN0b3JUZXh0Q2Fj
aGUoKS5zZXQodGhpcywgdGV4dCk7CisgICAgbV9oYXNDYWNoZWRTZWxlY3RvclRleHQgPSB0cnVl
OworICAgIHJldHVybiB0ZXh0OwogfQogCiB2b2lkIENTU1N0eWxlUnVsZTo6c2V0U2VsZWN0b3JU
ZXh0KGNvbnN0IFN0cmluZyYgc2VsZWN0b3JUZXh0KQpAQCAtODUsNiArMTE3LDEzIEBAIHZvaWQg
Q1NTU3R5bGVSdWxlOjpzZXRTZWxlY3RvclRleHQoY29uc3QgU3RyaW5nJiBzZWxlY3RvclRleHQp
CiAKICAgICBTdHJpbmcgb2xkU2VsZWN0b3JUZXh0ID0gdGhpcy0+c2VsZWN0b3JUZXh0KCk7CiAg
ICAgbV9zZWxlY3Rvckxpc3QuYWRvcHQoc2VsZWN0b3JMaXN0KTsKKworICAgIGlmIChtX2hhc0Nh
Y2hlZFNlbGVjdG9yVGV4dCkgeworICAgICAgICBBU1NFUlQoc2VsZWN0b3JUZXh0Q2FjaGUoKS5j
b250YWlucyh0aGlzKSk7CisgICAgICAgIHNlbGVjdG9yVGV4dENhY2hlKCkucmVtb3ZlKHRoaXMp
OworICAgICAgICBtX2hhc0NhY2hlZFNlbGVjdG9yVGV4dCA9IGZhbHNlOworICAgIH0KKwogICAg
IGlmICh0aGlzLT5zZWxlY3RvclRleHQoKSA9PSBvbGRTZWxlY3RvclRleHQpCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5oCmluZGV4IDU1NTU2NGUyM2RlOGRhZDMw
NzkwNDkyNWNmNGM4YTdkYTgwN2E4YmEuLjkxNGU3OWNjZWMyOTRjMmJkMWExOTAzYTZjZTJmNDk4
YmM5YjZlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmgKQEAgLTQwLDYgKzQwLDggQEAg
cHVibGljOgogICAgIH0KICAgICB+Q1NTU3R5bGVSdWxlKCk7CiAKKyAgICB2b2lkIGNsZWFudXAo
KTsKKwogICAgIFN0cmluZyBzZWxlY3RvclRleHQoKSBjb25zdDsKICAgICB2b2lkIHNldFNlbGVj
dG9yVGV4dChjb25zdCBTdHJpbmcmKTsKIApAQCAtNjAsNiArNjIsOCBAQCBwdWJsaWM6CiBwcm90
ZWN0ZWQ6CiAgICAgQ1NTU3R5bGVSdWxlKENTU1N0eWxlU2hlZXQqIHBhcmVudCwgaW50IHNvdXJj
ZUxpbmUsIENTU1J1bGU6OlR5cGUgPSBDU1NSdWxlOjpTVFlMRV9SVUxFKTsKIAorICAgIG11dGFi
bGUgYm9vbCBtX2hhc0NhY2hlZFNlbGVjdG9yVGV4dCA6IDE7CisKIHByaXZhdGU6CiAgICAgUmVm
UHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBtX3N0eWxlOwogICAgIENTU1NlbGVjdG9y
TGlzdCBtX3NlbGVjdG9yTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cAppbmRleCAxZjAyZjIzYjZmNjFlNGI4NDUxZTg0OGE3OTJiY2FjNGUzNmNkYmYyLi40MjRmZTUw
ODVlNDg2N2UzZWQxMGVjOWE3NjYzNzI4NDNiMjU5MWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSFRNTFByb2dyZXNzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0
QXJlYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNp
bmNsdWRlICJLZXlmcmFtZUxpc3QuaCIKICNpbmNsdWRlICJMaW5rSGFzaC5oIgogI2luY2x1ZGUg
IkxvY2FsZVRvU2NyaXB0TWFwcGluZy5oIgpAQCAtNzAzLDIzICs3MDQsMzQgQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjptYXRjaFJ1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBy
dWxlcywgaW50JiBmaXIKICAgICB1bnNpZ25lZCBzaXplID0gcnVsZXMtPnNpemUoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGNvbnN0IFJ1bGVE
YXRhJiBydWxlRGF0YSA9IHJ1bGVzLT5hdChpKTsKLSAgICAgICAgaWYgKGNhblVzZUZhc3RSZWpl
Y3QgJiYgbV9jaGVja2VyLmZhc3RSZWplY3RTZWxlY3RvcjxSdWxlRGF0YTo6bWF4aW11bUlkZW50
aWZpZXJDb3VudD4ocnVsZURhdGEuZGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmllckhhc2hlcygp
KSkKKyAgICAgICAgQ1NTU3R5bGVSdWxlKiBydWxlID0gcnVsZURhdGEucnVsZSgpOworICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsTWF0Y2hSdWxlKGRvY3VtZW50KCksIHJ1bGUpOworICAgICAgICBpZiAo
Y2FuVXNlRmFzdFJlamVjdCAmJiBtX2NoZWNrZXIuZmFzdFJlamVjdFNlbGVjdG9yPFJ1bGVEYXRh
OjptYXhpbXVtSWRlbnRpZmllckNvdW50PihydWxlRGF0YS5kZXNjZW5kYW50U2VsZWN0b3JJZGVu
dGlmaWVySGFzaGVzKCkpKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZE1hdGNoUnVsZShjb29raWUsIGZhbHNlKTsKICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CiAgICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHJ1bGVEYXRhKSkgewotICAgICAgICAg
ICAgaWYgKCFtYXRjaGVzSW5UcmVlU2NvcGUobV9lbGVtZW50LT50cmVlU2NvcGUoKSwgbV9jaGVj
a2VyLmhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cygpKSkKKyAgICAgICAgICAgIGlmICghbWF0Y2hl
c0luVHJlZVNjb3BlKG1fZWxlbWVudC0+dHJlZVNjb3BlKCksIG1fY2hlY2tlci5oYXNVbmtub3du
UHNldWRvRWxlbWVudHMoKSkpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZE1hdGNoUnVsZShjb29raWUsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIElmIHRoZSBydWxlIGhhcyBubyBw
cm9wZXJ0aWVzIHRvIGFwcGx5LCB0aGVuIGlnbm9yZSBpdCBpbiB0aGUgbm9uLWRlYnVnIG1vZGUu
Ci0gICAgICAgICAgICBDU1NTdHlsZVJ1bGUqIHJ1bGUgPSBydWxlRGF0YS5ydWxlKCk7CiAgICAg
ICAgICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZGVjbCA9IHJ1bGUtPmRlY2xhcmF0
aW9uKCk7Ci0gICAgICAgICAgICBpZiAoIWRlY2wgfHwgKCFkZWNsLT5sZW5ndGgoKSAmJiAhaW5j
bHVkZUVtcHR5UnVsZXMpKQorICAgICAgICAgICAgaWYgKCFkZWNsIHx8ICghZGVjbC0+bGVuZ3Ro
KCkgJiYgIWluY2x1ZGVFbXB0eVJ1bGVzKSkgeworICAgICAgICAgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkTWF0Y2hSdWxlKGNvb2tpZSwgZmFsc2UpOwogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKG1fc2FtZU9yaWdpbk9ubHkgJiYgIW1fY2hl
Y2tlci5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHJ1bGUtPmJhc2VV
UkwoKSkpCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobV9zYW1lT3JpZ2luT25seSAm
JiAhbV9jaGVja2VyLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QocnVs
ZS0+YmFzZVVSTCgpKSkgeworICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkTWF0Y2hSdWxlKGNvb2tpZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gSWYgd2UncmUgbWF0Y2hpbmcgbm9ybWFs
IHJ1bGVzLCBzZXQgYSBwc2V1ZG8gYml0IGlmCiAgICAgICAgICAgICAvLyB3ZSByZWFsbHkganVz
dCBtYXRjaGVkIGEgcHNldWRvLWVsZW1lbnQuCiAgICAgICAgICAgICBpZiAobV9keW5hbWljUHNl
dWRvICE9IE5PUFNFVURPICYmIG1fY2hlY2tlci5wc2V1ZG9TdHlsZSgpID09IE5PUFNFVURPKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKG1fY2hlY2tlci5pc0NvbGxlY3RpbmdSdWxlc09ubHkoKSkK
KyAgICAgICAgICAgICAgICBpZiAobV9jaGVja2VyLmlzQ29sbGVjdGluZ1J1bGVzT25seSgpKSB7
CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTWF0Y2hS
dWxlKGNvb2tpZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKG1fZHluYW1pY1BzZXVkbyA8IEZJUlNU
X0lOVEVSTkFMX1BTRVVET0lEKQogICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRIYXNQ
c2V1ZG9TdHlsZShtX2R5bmFtaWNQc2V1ZG8pOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTcz
MCw4ICs3NDIsMTAgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFJ1bGVzRm9yTGlzdChj
b25zdCBWZWN0b3I8UnVsZURhdGE+KiBydWxlcywgaW50JiBmaXIKIAogICAgICAgICAgICAgICAg
IC8vIEFkZCB0aGlzIHJ1bGUgdG8gb3VyIGxpc3Qgb2YgbWF0Y2hlZCBydWxlcy4KICAgICAgICAg
ICAgICAgICBhZGRNYXRjaGVkUnVsZSgmcnVsZURhdGEpOworICAgICAgICAgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTWF0Y2hSdWxlKGNvb2tpZSwgdHJ1ZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRN
YXRjaFJ1bGUoY29va2llLCBmYWxzZSk7CiAgICAgfQogfQogCkBAIC0yMTUyLDYgKzIxNjYsNyBA
QCBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5bAogdGVtcGxhdGUgPGJvb2wgYXBwbHlGaXJzdD4KIHZv
aWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlEZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbiogc3R5bGVEZWNsYXJhdGlvbiwgYm9vbCBpc0ltcG9ydGFudCwgYm9vbCBpbmhlcml0
ZWRPbmx5KQogeworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQcm9jZXNzUnVsZShkb2N1bWVudCgpLCBzdHls
ZURlY2xhcmF0aW9uLT5wYXJlbnRSdWxlKCkpOwogICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjpjb25zdF9pdGVyYXRvciBlbmQgPSBzdHlsZURlY2xhcmF0aW9uLT5lbmQoKTsKICAgICBm
b3IgKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBpdCA9IHN0eWxl
RGVjbGFyYXRpb24tPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBjb25zdCBD
U1NQcm9wZXJ0eSYgY3VycmVudCA9ICppdDsKQEAgLTIxODMsNiArMjE5OCw3IEBAIHZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6YXBwbHlEZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
biogc3R5bGVEZWNsYXJhCiAgICAgICAgIGlmIChwcm9wZXJ0eSA+IENTU1Byb3BlcnR5TGluZUhl
aWdodCkKICAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoY3VycmVudC5pZCgpLCBjdXJyZW50LnZh
bHVlKCkpOwogICAgIH0KKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFByb2Nlc3NS
dWxlKGNvb2tpZSk7CiB9CiAKIHRlbXBsYXRlIDxib29sIGFwcGx5Rmlyc3Q+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggMjlkYWQzNWNkZjg2MDRmNjJjZmRhNjVk
MTlkZGMwNDI2OTdhYTY2YS4uMmI3N2VlNmE2ZTFlYmM0NDBkYzI4ZDAzYTIyMjE4MWU4NjgxY2Rj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMjE0MiwxMCAr
MjE0MiwxNiBAQAogICAgICAgICAgICAgICAgICJuYW1lIjogImRpc2FibGUiCiAgICAgICAgICAg
ICB9LAogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICJuYW1lIjogInN0YXJ0IgorICAg
ICAgICAgICAgICAgICJuYW1lIjogInN0YXJ0IiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVy
cyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwcm9maWxlVHlwZSIsICJ0eXBl
IjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJQcm9maWxlIHR5cGUgdG8gc3RhcnQgcmVjb3Jk
aW5nLiIgfQorICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgIm5hbWUiOiAic3RvcCIKKyAgICAgICAgICAgICAgICAibmFtZSI6
ICJzdG9wIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJwcm9maWxlVHlwZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlw
dGlvbiI6ICJQcm9maWxlIHR5cGUgdG8gc3RvcCByZWNvcmRpbmcuIiB9CisgICAgICAgICAgICAg
ICAgXQogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFt
ZSI6ICJnZXRQcm9maWxlSGVhZGVycyIsCkBAIC0yMjEyLDYgKzIyMTgsNyBAQAogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogInNldFJlY29yZGluZ1Byb2ZpbGUiLAogICAg
ICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInByb2ZpbGVUeXBlIiwgInR5cGUiOiAic3RyaW5nIiB9LAogICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImlzUHJvZmlsaW5nIiwgInR5cGUiOiAiYm9vbGVhbiIgfQogICAgICAgICAg
ICAgICAgIF0KICAgICAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGQ3ODk0MjJhYTIwY2E5M2Jk
Njg4NWE5YTM0NjhhMDRlNDVhZmFlYzguLjE3NjUxZDBiNmIyMjYzZTg5YjgyYTM5YTU0NGJiOGI4
OTY0ZmU3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0zMyw2ICszMyw4IEBACiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogCisjaW5jbHVkZSAiQ1NTUnVsZS5oIgorI2luY2x1ZGUgIkNTU1N0eWxlUnVsZS5o
IgogI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNp
bmNsdWRlICJEYXRhYmFzZS5oIgpAQCAtNDMyLDYgKzQzNCw0NyBAQCB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb25JbXBsKEluc3RydW1l
bnRpbmdBZwogICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxh
dGlvbihkb2N1bWVudCk7CiB9CiAKK0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxNYXRjaFJ1bGVJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IENTU1N0eWxlUnVsZSogcnVsZSkKK3sKKyAg
ICBpbnQgcHJvZmlsZXJBZ2VudElkID0gMDsKKyAgICBpZiAoSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dCogcHJvZmlsZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclByb2ZpbGVy
QWdlbnQoKSkgeworICAgICAgICBwcm9maWxlckFnZW50LT53aWxsTWF0Y2hSdWxlKHJ1bGUpOwor
ICAgICAgICBwcm9maWxlckFnZW50SWQgPSBwcm9maWxlckFnZW50LT5pZCgpOworICAgIH0KKyAg
ICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKGluc3RydW1lbnRpbmdBZ2Vu
dHMsIHByb2ZpbGVyQWdlbnRJZCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRNYXRjaFJ1bGVJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYg
Y29va2llLCBib29sIG1hdGNoZWQpCit7CisgICAgaWYgKCFjb29raWUuZmlyc3QpCisgICAgICAg
IHJldHVybjsKKyAgICBJbnNwZWN0b3JQcm9maWxlckFnZW50KiBwcm9maWxlckFnZW50ID0gY29v
a2llLmZpcnN0LT5pbnNwZWN0b3JQcm9maWxlckFnZW50KCk7CisgICAgaWYgKHByb2ZpbGVyQWdl
bnQgJiYgcHJvZmlsZXJBZ2VudC0+aWQoKSA9PSBjb29raWUuc2Vjb25kKQorICAgICAgICBwcm9m
aWxlckFnZW50LT5kaWRNYXRjaFJ1bGUobWF0Y2hlZCk7Cit9CisKK0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQcm9jZXNzUnVsZUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgQ1NTUnVs
ZSogcnVsZSkKK3sKKyAgICBpZiAoIXJ1bGUtPmlzU3R5bGVSdWxlKCkpCisgICAgICAgIHJldHVy
biBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKKworICAgIGludCBwcm9maWxlckFn
ZW50SWQgPSAwOworICAgIGlmIChJbnNwZWN0b3JQcm9maWxlckFnZW50KiBwcm9maWxlckFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUHJvZmlsZXJBZ2VudCgpKSB7CisgICAg
ICAgIHByb2ZpbGVyQWdlbnQtPndpbGxQcm9jZXNzUnVsZShzdGF0aWNfY2FzdDxjb25zdCBDU1NT
dHlsZVJ1bGUqPihydWxlKSk7CisgICAgICAgIHByb2ZpbGVyQWdlbnRJZCA9IHByb2ZpbGVyQWdl
bnQtPmlkKCk7CisgICAgfQorICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUoaW5zdHJ1bWVudGluZ0FnZW50cywgcHJvZmlsZXJBZ2VudElkKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFByb2Nlc3NSdWxlSW1wbChjb25zdCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKK3sKKyAgICBpZiAoIWNvb2tpZS5maXJzdCkK
KyAgICAgICAgcmV0dXJuOworICAgIEluc3BlY3RvclByb2ZpbGVyQWdlbnQqIHByb2ZpbGVyQWdl
bnQgPSBjb29raWUuZmlyc3QtPmluc3BlY3RvclByb2ZpbGVyQWdlbnQoKTsKKyAgICBpZiAocHJv
ZmlsZXJBZ2VudCAmJiBwcm9maWxlckFnZW50LT5pZCgpID09IGNvb2tpZS5zZWNvbmQpCisgICAg
ICAgIHByb2ZpbGVyQWdlbnQtPmRpZFByb2Nlc3NSdWxlKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjphcHBseVVzZXJBZ2VudE92ZXJyaWRlSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBTdHJpbmcqIHVzZXJBZ2VudCkKIHsKICAgICBp
ZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBhMWU4OTkyNDZiNGU1
ZWQ1ZjIxYjMyNDUxZTg2NjEyYmFhMDJlMWU5Li4zYjgzYzJhOWE2MmRhZTU1NTZkNzZiYzY2YTA3
ZWI5MGI2YWNjYTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC00MSw2ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQ1NTU3R5bGVSdWxlOwogY2xhc3MgQ2hhcmFjdGVyRGF0YTsKIGNsYXNz
IERPTUZpbGVTeXN0ZW07CiBjbGFzcyBET01XaW5kb3c7CkBAIC0xMTgsNiArMTE5LDEwIEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNh
bGN1bGF0ZVN0eWxlKERvY3VtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjYWxjdWxhdGVT
dHlsZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMg
dm9pZCBkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbihEb2N1bWVudCopOworICAgIHN0YXRp
YyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbE1hdGNoUnVsZShEb2N1bWVudCos
IGNvbnN0IENTU1N0eWxlUnVsZSopOworICAgIHN0YXRpYyB2b2lkIGRpZE1hdGNoUnVsZShjb25z
dCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCBib29sIG1hdGNoZWQpOworICAgIHN0
YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFByb2Nlc3NSdWxlKERvY3Vt
ZW50KiwgY29uc3QgQ1NTUnVsZSopOworICAgIHN0YXRpYyB2b2lkIGRpZFByb2Nlc3NSdWxlKGNv
bnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogCiAgICAgc3RhdGljIHZvaWQg
YXBwbHlVc2VyQWdlbnRPdmVycmlkZShGcmFtZSosIFN0cmluZyopOwogICAgIHN0YXRpYyB2b2lk
IHdpbGxTZW5kUmVxdWVzdChGcmFtZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1l
bnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlKTsKQEAgLTI1OCw2ICsyNjMsMTAgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNhbGN1bGF0ZVN0eWxlSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHls
ZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGlj
IHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb25JbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCBEb2N1bWVudCopOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgd2lsbE1hdGNoUnVsZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IENTU1N0eWxl
UnVsZSopOworICAgIHN0YXRpYyB2b2lkIGRpZE1hdGNoUnVsZUltcGwoY29uc3QgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llJiwgYm9vbCBtYXRjaGVkKTsKKyAgICBzdGF0aWMgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxQcm9jZXNzUnVsZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIGNvbnN0IENTU1J1bGUqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRQcm9jZXNzUnVs
ZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAKICAgICBzdGF0
aWMgdm9pZCBhcHBseVVzZXJBZ2VudE92ZXJyaWRlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwg
U3RyaW5nKik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFNlbmRSZXF1ZXN0SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Up
OwpAQCAtNzA4LDYgKzcxNyw0NiBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uKERvY3VtZW50KiBkbwogI2VuZGlmCiB9
CiAKK2lubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsTWF0Y2hSdWxlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQ1NTU3R5
bGVSdWxlKiBydWxlKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgRkFTVF9SRVRVUk5f
SUZfTk9fRlJPTlRFTkRTKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpKTsKKyAgICBp
ZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRp
bmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCisgICAgICAgIHJldHVybiB3aWxsTWF0Y2hS
dWxlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBydWxlKTsKKyNlbmRpZgorICAgIHJldHVybiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKK30KKworaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNYXRjaFJ1bGUoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llJiBjb29raWUsIGJvb2wgbWF0Y2hlZCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SKQorICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOworICAgIGlmIChj
b29raWUuZmlyc3QpCisgICAgICAgIGRpZE1hdGNoUnVsZUltcGwoY29va2llLCBtYXRjaGVkKTsK
KyNlbmRpZgorfQorCitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFByb2Nlc3NSdWxlKERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgQ1NTUnVsZSogcnVsZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIEZBU1Rf
UkVUVVJOX0lGX05PX0ZST05URU5EUyhJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKSk7
CisgICAgaWYgKCFydWxlKQorICAgICAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llKCk7CisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQorICAgICAgICBy
ZXR1cm4gd2lsbFByb2Nlc3NSdWxlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBydWxlKTsKKyNl
bmRpZgorICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKK30KKwor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQcm9jZXNzUnVsZShjb25z
dCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKK3sKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SKQorICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOworICAg
IGlmIChjb29raWUuZmlyc3QpCisgICAgICAgIGRpZFByb2Nlc3NSdWxlSW1wbChjb29raWUpOwor
I2VuZGlmCit9CisKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YXBwbHlV
c2VyQWdlbnRPdmVycmlkZShGcmFtZSogZnJhbWUsIFN0cmluZyogdXNlckFnZW50KQogewogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggMjIyODIyMzI0YTI5NTM2OTRkZGQ4OWY4NmRi
MGE2ZmU4MzhkYzIyNS4uMzNiOTA4MDIzYmU0YTI1Mzg1YjhhNjFmMTZmODNjZTdhYTZkODZlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFn
ZW50LmNwcApAQCAtMzIsNiArMzIsNyBAQAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdH
RVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCiAKKyNpbmNsdWRlICJDU1NTdHlsZVJ1bGUuaCIKICNp
bmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29uc29sZUFnZW50LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKQEAgLTQ0LDYgKzQ1LDggQEAKICNpbmNsdWRl
ICJTY3JpcHRIZWFwU25hcHNob3QuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZS5oPgogCkBAIC01NCwxMyArNTcsNTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFt
ZXNwYWNlIFByb2ZpbGVyQWdlbnRTdGF0ZSB7Ci1zdGF0aWMgY29uc3QgY2hhciB1c2VySW5pdGlh
dGVkUHJvZmlsaW5nW10gPSAidXNlckluaXRpYXRlZFByb2ZpbGluZyI7CitzdGF0aWMgY29uc3Qg
Y2hhciB1c2VySW5pdGlhdGVkQ1BVUHJvZmlsaW5nW10gPSAidXNlckluaXRpYXRlZENQVVByb2Zp
bGluZyI7CitzdGF0aWMgY29uc3QgY2hhciB1c2VySW5pdGlhdGVkU2VsZWN0b3JQcm9maWxpbmdb
XSA9ICJ1c2VySW5pdGlhdGVkU2VsZWN0b3JQcm9maWxpbmciOwogc3RhdGljIGNvbnN0IGNoYXIg
cHJvZmlsZXJFbmFibGVkW10gPSAicHJvZmlsZXJFbmFibGVkIjsKIH0KIAogc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSA9ICJvcmcud2Via2l0LnByb2Zp
bGVzLnVzZXItaW5pdGlhdGVkIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBDUFVQcm9maWxl
VHlwZSA9ICJDUFUiOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IEhlYXBQcm9maWxlVHlwZSA9
ICJIRUFQIjsKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBTZWxlY3RvclByb2ZpbGVUeXBlID0g
IlNFTEVDVE9SIjsKKworCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpTZWxl
Y3RvclByb2ZpbGU6OmNvbW1pdFNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JUZXh0LCBk
b3VibGUgbWF0Y2hUaW1lTXMsIGJvb2wgbWF0Y2hlZCkKK3sKKyAgICBtX3RvdGFsTWF0Y2hpbmdU
aW1lTXMgKz0gbWF0Y2hUaW1lTXM7CisgICAgcGFpcjxSdWxlTWF0Y2hpbmdTdGF0c01hcDo6aXRl
cmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fcnVsZU1hdGNoaW5nU3RhdHMuYWRkKHNlbGVjdG9yVGV4
dCwgUnVsZU1hdGNoaW5nU3RhdHMobWF0Y2hUaW1lTXMsIDEsIG1hdGNoZWQgPyAxIDogMCkpOwor
ICAgIGlmICghcmVzdWx0LnNlY29uZCkgeworICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZC50
b3RhbFRpbWUgKz0gbWF0Y2hUaW1lTXM7CisgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLmhp
dHMgKz0gMTsKKyAgICAgICAgaWYgKG1hdGNoZWQpCisgICAgICAgICAgICByZXN1bHQuZmlyc3Qt
PnNlY29uZC5tYXRjaGVzICs9IDE7CisgICAgfQorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JQ
cm9maWxlckFnZW50OjpTZWxlY3RvclByb2ZpbGU6OmNvbW1pdFNlbGVjdG9yVGltZShjb25zdCBT
dHJpbmcmIHNlbGVjdG9yVGV4dCwgZG91YmxlIHByb2Nlc3NpbmdUaW1lTXMpCit7CisgICAgbV90
b3RhbE1hdGNoaW5nVGltZU1zICs9IHByb2Nlc3NpbmdUaW1lTXM7CisgICAgUnVsZU1hdGNoaW5n
U3RhdHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ydWxlTWF0Y2hpbmdTdGF0cy5maW5kKHNlbGVjdG9y
VGV4dCk7CisgICAgaWYgKGl0ID09IG1fcnVsZU1hdGNoaW5nU3RhdHMuZW5kKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGl0LT5zZWNvbmQudG90YWxUaW1lICs9IHByb2Nlc3NpbmdUaW1lTXM7
Cit9CisKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JQcm9maWxlckFnZW50
OjpTZWxlY3RvclByb2ZpbGU6OnRvSW5zcGVjdG9yT2JqZWN0KCkgY29uc3QKK3sKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwor
ICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gZGF0YSA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUo
KTsKKyAgICBmb3IgKFJ1bGVNYXRjaGluZ1N0YXRzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1f
cnVsZU1hdGNoaW5nU3RhdHMuYmVnaW4oKTsgaXQgIT0gbV9ydWxlTWF0Y2hpbmdTdGF0cy5lbmQo
KTsgKytpdCkgeworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzdGF0ID0gSW5zcGVj
dG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICAgICAgc3RhdC0+c2V0U3RyaW5nKCJzZWxlY3RvciIs
IGl0LT5maXJzdCk7CisgICAgICAgIHN0YXQtPnNldE51bWJlcigidGltZSIsIGl0LT5zZWNvbmQu
dG90YWxUaW1lKTsKKyAgICAgICAgc3RhdC0+c2V0TnVtYmVyKCJoaXRzIiwgaXQtPnNlY29uZC5o
aXRzKTsKKyAgICAgICAgc3RhdC0+c2V0TnVtYmVyKCJtYXRjaGVzIiwgaXQtPnNlY29uZC5tYXRj
aGVzKTsKKyAgICAgICAgZGF0YS0+cHVzaE9iamVjdChzdGF0LnJlbGVhc2UoKSk7CisgICAgfQor
ICAgIHJlc3VsdC0+c2V0QXJyYXkoImRhdGEiLCBkYXRhKTsKKyAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2UoKTsKK30KIAogUGFzc093blB0cjxJbnNwZWN0b3JQcm9maWxlckFnZW50PiBJbnNwZWN0
b3JQcm9maWxlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQsIFBhZ2UqIGluc3Bl
Y3RlZFBhZ2UsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiB7CkBAIC03MywxMSArMTE3LDE0IEBAIElu
c3BlY3RvclByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoaW5zcGVjdGVkUGFn
ZSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikK
ICAgICAsIG1fZnJvbnRlbmQoMCkKKyAgICAsIG1faWQoMSkKICAgICAsIG1fZW5hYmxlZChmYWxz
ZSkKLSAgICAsIG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGUoZmFsc2UpCisgICAgLCBt
X3JlY29yZGluZ1VzZXJJbml0aWF0ZWRDUFVQcm9maWxlKGZhbHNlKQorICAgICwgbV9yZWNvcmRp
bmdVc2VySW5pdGlhdGVkU2VsZWN0b3JQcm9maWxlKGZhbHNlKQogICAgICwgbV9jdXJyZW50VXNl
ckluaXRpYXRlZFByb2ZpbGVOdW1iZXIoLTEpCiAgICAgLCBtX25leHRVc2VySW5pdGlhdGVkUHJv
ZmlsZU51bWJlcigxKQogICAgICwgbV9uZXh0VXNlckluaXRpYXRlZEhlYXBTbmFwc2hvdE51bWJl
cigxKQorICAgICwgbV9uZXh0VXNlckluaXRpYXRlZFNlbGVjdG9yUHJvZmlsZU51bWJlcigxKQog
ewogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yUHJvZmlsZXJBZ2VudCh0
aGlzKTsKIH0KQEAgLTk2LDYgKzE0MywxNCBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6
OmFkZFByb2ZpbGUoUGFzc1JlZlB0cjxTY3JpcHRQcm9maWxlPiBwcnBQcm9maWxlLCB1bgogICAg
IGFkZFByb2ZpbGVGaW5pc2hlZE1lc3NhZ2VUb0NvbnNvbGUocHJvZmlsZSwgbGluZU51bWJlciwg
c291cmNlVVJMKTsKIH0KIAordm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjphZGRTZWxlY3Rv
clByb2ZpbGUoUGFzc1JlZlB0cjxTZWxlY3RvclByb2ZpbGU+IHBycFByb2ZpbGUpCit7CisgICAg
UmVmUHRyPFNlbGVjdG9yUHJvZmlsZT4gcHJvZmlsZSA9IHBycFByb2ZpbGU7CisgICAgbV9zZWxl
Y3RvclByb2ZpbGVzLmFkZChwcm9maWxlLT51aWQoKSwgcHJvZmlsZSk7CisgICAgaWYgKG1fZnJv
bnRlbmQpCisgICAgICAgIG1fZnJvbnRlbmQtPmFkZFByb2ZpbGVIZWFkZXIoY3JlYXRlU2VsZWN0
b3JQcm9maWxlSGVhZGVyKCpwcm9maWxlKSk7Cit9CisKIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6YWRkUHJvZmlsZUZpbmlzaGVkTWVzc2FnZVRvQ29uc29sZShQYXNzUmVmUHRyPFNjcmlw
dFByb2ZpbGU+IHBycFByb2ZpbGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMKQogewogICAgIGlmICghbV9mcm9udGVuZCkKQEAgLTEzNyw3ICsxOTIsNiBAQCBQ
YXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRl
U25hcHNob3RIZWFkZXIoY29uc3QgUwogICAgIHJldHVybiBoZWFkZXI7CiB9CiAKLQogdm9pZCBJ
bnNwZWN0b3JQcm9maWxlckFnZW50OjpjYXVzZXNSZWNvbXBpbGF0aW9uKEVycm9yU3RyaW5nKiwg
Ym9vbCogcmVzdWx0KQogewogICAgICpyZXN1bHQgPSBTY3JpcHRQcm9maWxlcjo6Y2F1c2VzUmVj
b21waWxhdGlvbigpOwpAQCAtMTUzLDYgKzIwNywxNiBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVy
QWdlbnQ6Omhhc0hlYXBQcm9maWxlcihFcnJvclN0cmluZyosIGJvb2wqIHJlc3VsdCkKICAgICAq
cmVzdWx0ID0gU2NyaXB0UHJvZmlsZXI6Omhhc0hlYXBQcm9maWxlcigpOwogfQogCitQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlU2VsZWN0
b3JQcm9maWxlSGVhZGVyKGNvbnN0IFNlbGVjdG9yUHJvZmlsZSYgcHJvZmlsZSkKK3sKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBoZWFkZXIgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
OworICAgIGhlYWRlci0+c2V0U3RyaW5nKCJ0aXRsZSIsIHByb2ZpbGUudGl0bGUoKSk7CisgICAg
aGVhZGVyLT5zZXROdW1iZXIoInVpZCIsIHByb2ZpbGUudWlkKCkpOworICAgIGhlYWRlci0+c2V0
U3RyaW5nKCJ0eXBlSWQiLCBTdHJpbmcoU2VsZWN0b3JQcm9maWxlVHlwZSkpOworICAgIGhlYWRl
ci0+c2V0TnVtYmVyKCJ0b3RhbFRpbWVNcyIsIHByb2ZpbGUudG90YWxNYXRjaGluZ1RpbWVNcygp
KTsKKyAgICByZXR1cm4gaGVhZGVyOworfQorCiB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6
OmVuYWJsZShFcnJvclN0cmluZyopCiB7CiAgICAgaWYgKGVuYWJsZWQoKSkKQEAgLTIwMCw2ICsy
NjQsOSBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVIZWFkZXJzKEVy
cm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3RvckFycgogICAgIEhlYXBTbmFwc2hvdHNNYXA6Oml0
ZXJhdG9yIHNuYXBzaG90c0VuZCA9IG1fc25hcHNob3RzLmVuZCgpOwogICAgIGZvciAoSGVhcFNu
YXBzaG90c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NuYXBzaG90cy5iZWdpbigpOyBpdCAhPSBzbmFw
c2hvdHNFbmQ7ICsraXQpCiAgICAgICAgICgqaGVhZGVycyktPnB1c2hPYmplY3QoY3JlYXRlU25h
cHNob3RIZWFkZXIoKml0LT5zZWNvbmQpKTsKKyAgICBTZWxlY3RvclByb2ZpbGVzTWFwOjppdGVy
YXRvciBzZWxlY3RvclByb2ZpbGVzRW5kID0gbV9zZWxlY3RvclByb2ZpbGVzLmVuZCgpOworICAg
IGZvciAoU2VsZWN0b3JQcm9maWxlc01hcDo6aXRlcmF0b3IgaXQgPSBtX3NlbGVjdG9yUHJvZmls
ZXMuYmVnaW4oKTsgaXQgIT0gc2VsZWN0b3JQcm9maWxlc0VuZDsgKytpdCkKKyAgICAgICAgKCpo
ZWFkZXJzKS0+cHVzaE9iamVjdChjcmVhdGVTZWxlY3RvclByb2ZpbGVIZWFkZXIoKml0LT5zZWNv
bmQpKTsKIH0KIAogbmFtZXNwYWNlIHsKQEAgLTIzNywyOCArMzA0LDM2IEBAIHZvaWQgSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
dHlwZSwgdW5zaWduCiAgICAgICAgICAgICAgICAgc25hcHNob3QtPndyaXRlSlNPTigmc3RyZWFt
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgIH0gZWxzZSBpZiAodHlwZSA9PSBTZWxl
Y3RvclByb2ZpbGVUeXBlKSB7CisgICAgICAgIFNlbGVjdG9yUHJvZmlsZXNNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9zZWxlY3RvclByb2ZpbGVzLmZpbmQodWlkKTsKKyAgICAgICAgaWYgKGl0ICE9IG1f
c2VsZWN0b3JQcm9maWxlcy5lbmQoKSkgeworICAgICAgICAgICAgUmVmUHRyPFNlbGVjdG9yUHJv
ZmlsZT4gcHJvZmlsZSA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICAqcHJvZmlsZU9iamVjdCA9
IHByb2ZpbGUtPnRvSW5zcGVjdG9yT2JqZWN0KCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKIHZv
aWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgdHlwZSwgdW5zaWduZWQgdWlkKQogewotICAgIGlmICh0eXBlID09IENQVVBy
b2ZpbGVUeXBlKSB7Ci0gICAgICAgIGlmIChtX3Byb2ZpbGVzLmNvbnRhaW5zKHVpZCkpCi0gICAg
ICAgICAgICBtX3Byb2ZpbGVzLnJlbW92ZSh1aWQpOwotICAgIH0gZWxzZSBpZiAodHlwZSA9PSBI
ZWFwUHJvZmlsZVR5cGUpIHsKLSAgICAgICAgaWYgKG1fc25hcHNob3RzLmNvbnRhaW5zKHVpZCkp
Ci0gICAgICAgICAgICBtX3NuYXBzaG90cy5yZW1vdmUodWlkKTsKLSAgICB9CisgICAgaWYgKHR5
cGUgPT0gQ1BVUHJvZmlsZVR5cGUpCisgICAgICAgIG1fcHJvZmlsZXMucmVtb3ZlKHVpZCk7Cisg
ICAgZWxzZSBpZiAodHlwZSA9PSBIZWFwUHJvZmlsZVR5cGUpCisgICAgICAgIG1fc25hcHNob3Rz
LnJlbW92ZSh1aWQpOworICAgIGVsc2UgaWYgKHR5cGUgPT0gU2VsZWN0b3JQcm9maWxlVHlwZSkK
KyAgICAgICAgbV9zZWxlY3RvclByb2ZpbGVzLnJlbW92ZSh1aWQpOwogfQogCiB2b2lkIEluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ6OnJlc2V0U3RhdGUoKQogewotICAgIHN0b3AoKTsKKyAgICBzdG9w
KDAsIENQVVByb2ZpbGVUeXBlKTsKKyAgICBzdG9wKDAsIFNlbGVjdG9yUHJvZmlsZVR5cGUpOwog
ICAgIG1fcHJvZmlsZXMuY2xlYXIoKTsKICAgICBtX3NuYXBzaG90cy5jbGVhcigpOworICAgIG1f
c2VsZWN0b3JQcm9maWxlcy5jbGVhcigpOwogICAgIG1fY3VycmVudFVzZXJJbml0aWF0ZWRQcm9m
aWxlTnVtYmVyID0gMTsKICAgICBtX25leHRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlciA9IDE7
CiAgICAgbV9uZXh0VXNlckluaXRpYXRlZEhlYXBTbmFwc2hvdE51bWJlciA9IDE7CisgICAgbV9u
ZXh0VXNlckluaXRpYXRlZFNlbGVjdG9yUHJvZmlsZU51bWJlciA9IDE7CiAgICAgcmVzZXRGcm9u
dGVuZFByb2ZpbGVzKCk7CiB9CiAKQEAgLTI2Niw3ICszNDEsOCBAQCB2b2lkIEluc3BlY3RvclBy
b2ZpbGVyQWdlbnQ6OnJlc2V0RnJvbnRlbmRQcm9maWxlcygpCiB7CiAgICAgaWYgKG1fZnJvbnRl
bmQKICAgICAgICAgJiYgbV9wcm9maWxlcy5iZWdpbigpID09IG1fcHJvZmlsZXMuZW5kKCkKLSAg
ICAgICAgJiYgbV9zbmFwc2hvdHMuYmVnaW4oKSA9PSBtX3NuYXBzaG90cy5lbmQoKSkKKyAgICAg
ICAgJiYgbV9zbmFwc2hvdHMuYmVnaW4oKSA9PSBtX3NuYXBzaG90cy5lbmQoKQorICAgICAgICAm
JiBtX3NlbGVjdG9yUHJvZmlsZXMuYmVnaW4oKSA9PSBtX3NlbGVjdG9yUHJvZmlsZXMuZW5kKCkp
CiAgICAgICAgIG1fZnJvbnRlbmQtPnJlc2V0UHJvZmlsZXMoKTsKIH0KIApAQCAtMjc4LDcgKzM1
NCw4IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9y
RnJvbnRlbmQqIGZyb250ZW5kKQogdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjbGVhckZy
b250ZW5kKCkKIHsKICAgICBtX2Zyb250ZW5kID0gMDsKLSAgICBzdG9wKCk7CisgICAgc3RvcCgw
LCBDUFVQcm9maWxlVHlwZSk7CisgICAgc3RvcCgwLCBTZWxlY3RvclByb2ZpbGVUeXBlKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXN0b3JlKCkKQEAgLTI4OCw4ICszNjUs
MTAgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXN0b3JlKCkKIAogICAgIC8vIFJl
dmlzaXQgdGhpcy4KICAgICByZXNldEZyb250ZW5kUHJvZmlsZXMoKTsKLSAgICBpZiAobV9zdGF0
ZS0+Z2V0Qm9vbGVhbihQcm9maWxlckFnZW50U3RhdGU6OnVzZXJJbml0aWF0ZWRQcm9maWxpbmcp
KQotICAgICAgICBzdGFydCgpOworICAgIGlmIChtX3N0YXRlLT5nZXRCb29sZWFuKFByb2ZpbGVy
QWdlbnRTdGF0ZTo6dXNlckluaXRpYXRlZENQVVByb2ZpbGluZykpCisgICAgICAgIHN0YXJ0KDAs
IENQVVByb2ZpbGVUeXBlKTsKKyAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihQcm9maWxlckFn
ZW50U3RhdGU6OnVzZXJJbml0aWF0ZWRTZWxlY3RvclByb2ZpbGluZykpCisgICAgICAgIHN0YXJ0
KDAsIFNlbGVjdG9yUHJvZmlsZVR5cGUpOwogfQogCiB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdl
bnQ6OnJlc3RvcmVFbmFibGVtZW50KCkKQEAgLTMwMCw0NSArMzc5LDcyIEBAIHZvaWQgSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudDo6cmVzdG9yZUVuYWJsZW1lbnQoKQogICAgIH0KIH0KIAotdm9pZCBJ
bnNwZWN0b3JQcm9maWxlckFnZW50OjpzdGFydChFcnJvclN0cmluZyopCit2b2lkIEluc3BlY3Rv
clByb2ZpbGVyQWdlbnQ6OnN0YXJ0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBwcm9maWxlVHlwZSkKIHsKLSAgICBpZiAobV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJv
ZmlsZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghZW5hYmxlZCgpKSB7Ci0gICAgICAgIGVu
YWJsZSh0cnVlKTsKLSAgICAgICAgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5yZWNv
bXBpbGVBbGxKU0Z1bmN0aW9ucygwKTsKLSAgICB9Ci0gICAgbV9yZWNvcmRpbmdVc2VySW5pdGlh
dGVkUHJvZmlsZSA9IHRydWU7Ci0gICAgU3RyaW5nIHRpdGxlID0gZ2V0Q3VycmVudFVzZXJJbml0
aWF0ZWRQcm9maWxlTmFtZSh0cnVlKTsKKyAgICBpZiAocHJvZmlsZVR5cGUgPT0gQ1BVUHJvZmls
ZVR5cGUpIHsKKyAgICAgICAgaWYgKG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZENQVVByb2ZpbGUp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZENQ
VVByb2ZpbGUgPSB0cnVlOworCisgICAgICAgIGlmICghZW5hYmxlZCgpKSB7CisgICAgICAgICAg
ICBlbmFibGUodHJ1ZSk7CisgICAgICAgICAgICBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJl
ZCgpLnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKDApOworICAgICAgICB9CisgICAgICAgIFN0cmlu
ZyB0aXRsZSA9IGdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUodHJ1ZSk7CiAjaWYg
VVNFKEpTQykKLSAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSB0b0pTRE9NV2luZG93
KG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCksIGRlYnVnZ2VyV29ybGQoKSktPmdsb2JhbEV4
ZWMoKTsKKyAgICAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gdG9KU0RPTVdpbmRv
dyhtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLCBkZWJ1Z2dlcldvcmxkKCkpLT5nbG9iYWxF
eGVjKCk7CiAjZWxzZQotICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IDA7CisgICAgICAg
IFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IDA7CiAjZW5kaWYKLSAgICBTY3JpcHRQcm9maWxl
cjo6c3RhcnQoc2NyaXB0U3RhdGUsIHRpdGxlKTsKLSAgICBhZGRTdGFydFByb2ZpbGluZ01lc3Nh
Z2VUb0NvbnNvbGUodGl0bGUsIDAsIFN0cmluZygpKTsKLSAgICB0b2dnbGVSZWNvcmRCdXR0b24o
dHJ1ZSk7Ci0gICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQcm9maWxlckFnZW50U3RhdGU6OnVzZXJJ
bml0aWF0ZWRQcm9maWxpbmcsIHRydWUpOworICAgICAgICBTY3JpcHRQcm9maWxlcjo6c3RhcnQo
c2NyaXB0U3RhdGUsIHRpdGxlKTsKKyAgICAgICAgYWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9D
b25zb2xlKHRpdGxlLCAwLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgbV9zdGF0ZS0+c2V0Qm9v
bGVhbihQcm9maWxlckFnZW50U3RhdGU6OnVzZXJJbml0aWF0ZWRDUFVQcm9maWxpbmcsIHRydWUp
OworICAgIH0gZWxzZSBpZiAocHJvZmlsZVR5cGUgPT0gU2VsZWN0b3JQcm9maWxlVHlwZSkgewor
ICAgICAgICBpZiAobV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkU2VsZWN0b3JQcm9maWxlKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRTZWxlY3Rv
clByb2ZpbGUgPSB0cnVlOworICAgICAgICBTdHJpbmcgdGl0bGUgPSBtYWtlU3RyaW5nKFVzZXJJ
bml0aWF0ZWRQcm9maWxlTmFtZSwgJy4nLCBTdHJpbmc6Om51bWJlcihtX25leHRVc2VySW5pdGlh
dGVkU2VsZWN0b3JQcm9maWxlTnVtYmVyKyspKTsKKyAgICAgICAgbV9jdXJyZW50U2VsZWN0b3JQ
cm9maWxlID0gU2VsZWN0b3JQcm9maWxlOjpjcmVhdGUodGl0bGUpOworICAgICAgICBtX3N0YXRl
LT5zZXRCb29sZWFuKFByb2ZpbGVyQWdlbnRTdGF0ZTo6dXNlckluaXRpYXRlZFNlbGVjdG9yUHJv
ZmlsaW5nLCB0cnVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZXJyb3JTdHJpbmcpCisg
ICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAiVW5rbm93biBwcm9maWxlIHR5cGUiOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIHRvZ2dsZVJlY29yZEJ1dHRvbihwcm9maWxlVHlwZSwgdHJ1
ZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6c3RvcChFcnJvclN0cmluZyop
Cit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnN0b3AoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHByb2ZpbGVUeXBlKQogewotICAgIGlmICghbV9yZWNvcmRpbmdV
c2VySW5pdGlhdGVkUHJvZmlsZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fcmVjb3JkaW5nVXNl
ckluaXRpYXRlZFByb2ZpbGUgPSBmYWxzZTsKLSAgICBTdHJpbmcgdGl0bGUgPSBnZXRDdXJyZW50
VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKCk7CisgICAgaWYgKHByb2ZpbGVUeXBlID09IENQVVBy
b2ZpbGVUeXBlKSB7CisgICAgICAgIGlmICghbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkQ1BVUHJv
ZmlsZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9yZWNvcmRpbmdVc2VySW5pdGlh
dGVkQ1BVUHJvZmlsZSA9IGZhbHNlOwogI2lmIFVTRShKU0MpCi0gICAgSlNDOjpFeGVjU3RhdGUq
IHNjcmlwdFN0YXRlID0gdG9KU0RPTVdpbmRvdyhtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgp
LCBkZWJ1Z2dlcldvcmxkKCkpLT5nbG9iYWxFeGVjKCk7CisgICAgICAgIEpTQzo6RXhlY1N0YXRl
KiBzY3JpcHRTdGF0ZSA9IHRvSlNET01XaW5kb3cobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUo
KSwgZGVidWdnZXJXb3JsZCgpKS0+Z2xvYmFsRXhlYygpOwogI2Vsc2UKLSAgICAvLyBVc2UgbnVs
bCBzY3JpcHQgc3RhdGUgdG8gYXZvaWQgZmlsdGVyaW5nIGJ5IGNvbnRleHQgc2VjdXJpdHkgdG9r
ZW4uCi0gICAgLy8gQWxsIGZ1bmN0aW9ucyBmcm9tIGFsbCBpZnJhbWVzIHNob3VsZCBiZSB2aXNp
YmxlIGZyb20gSW5zcGVjdG9yIFVJLgotICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IDA7
CisgICAgICAgIC8vIFVzZSBudWxsIHNjcmlwdCBzdGF0ZSB0byBhdm9pZCBmaWx0ZXJpbmcgYnkg
Y29udGV4dCBzZWN1cml0eSB0b2tlbi4KKyAgICAgICAgLy8gQWxsIGZ1bmN0aW9ucyBmcm9tIGFs
bCBpZnJhbWVzIHNob3VsZCBiZSB2aXNpYmxlIGZyb20gSW5zcGVjdG9yIFVJLgorICAgICAgICBT
Y3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSAwOwogI2VuZGlmCi0gICAgUmVmUHRyPFNjcmlwdFBy
b2ZpbGU+IHByb2ZpbGUgPSBTY3JpcHRQcm9maWxlcjo6c3RvcChzY3JpcHRTdGF0ZSwgdGl0bGUp
OwotICAgIGlmIChwcm9maWxlKQotICAgICAgICBhZGRQcm9maWxlKHByb2ZpbGUsIDAsIFN0cmlu
ZygpKTsKLSAgICB0b2dnbGVSZWNvcmRCdXR0b24oZmFsc2UpOwotICAgIG1fc3RhdGUtPnNldEJv
b2xlYW4oUHJvZmlsZXJBZ2VudFN0YXRlOjp1c2VySW5pdGlhdGVkUHJvZmlsaW5nLCBmYWxzZSk7
CisgICAgICAgIFN0cmluZyB0aXRsZSA9IGdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5h
bWUoKTsKKyAgICAgICAgUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHByb2ZpbGUgPSBTY3JpcHRQcm9m
aWxlcjo6c3RvcChzY3JpcHRTdGF0ZSwgdGl0bGUpOworICAgICAgICBpZiAocHJvZmlsZSkKKyAg
ICAgICAgICAgIGFkZFByb2ZpbGUocHJvZmlsZSwgMCwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAg
IG1fc3RhdGUtPnNldEJvb2xlYW4oUHJvZmlsZXJBZ2VudFN0YXRlOjp1c2VySW5pdGlhdGVkQ1BV
UHJvZmlsaW5nLCBmYWxzZSk7CisgICAgfSBlbHNlIGlmIChwcm9maWxlVHlwZSA9PSBTZWxlY3Rv
clByb2ZpbGVUeXBlKSB7CisgICAgICAgIGlmICghbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkU2Vs
ZWN0b3JQcm9maWxlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3JlY29yZGluZ1Vz
ZXJJbml0aWF0ZWRTZWxlY3RvclByb2ZpbGUgPSBmYWxzZTsKKyAgICAgICAgYWRkU2VsZWN0b3JQ
cm9maWxlKG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZSk7CisgICAgICAgIG1fY3VycmVudFNlbGVj
dG9yUHJvZmlsZS5jbGVhcigpOworICAgICAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFByb2ZpbGVy
QWdlbnRTdGF0ZTo6dXNlckluaXRpYXRlZFNlbGVjdG9yUHJvZmlsaW5nLCBmYWxzZSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKGVycm9yU3RyaW5nKQorICAgICAgICAgICAgKmVycm9yU3Ry
aW5nID0gIlVua25vd24gcHJvZmlsZSB0eXBlIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICB0b2dnbGVSZWNvcmRCdXR0b24ocHJvZmlsZVR5cGUsIGZhbHNlKTsKIH0KIAogbmFtZXNwYWNl
IHsKQEAgLTM3OSwxMCArNDg1LDEwIEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6dGFr
ZUhlYXBTbmFwc2hvdChFcnJvclN0cmluZyopCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvclBy
b2ZpbGVyQWdlbnQ6OnRvZ2dsZVJlY29yZEJ1dHRvbihib29sIGlzUHJvZmlsaW5nKQordm9pZCBJ
bnNwZWN0b3JQcm9maWxlckFnZW50Ojp0b2dnbGVSZWNvcmRCdXR0b24oY29uc3QgU3RyaW5nJiBw
cm9maWxlVHlwZSwgYm9vbCBpc1Byb2ZpbGluZykKIHsKICAgICBpZiAobV9mcm9udGVuZCkKLSAg
ICAgICAgbV9mcm9udGVuZC0+c2V0UmVjb3JkaW5nUHJvZmlsZShpc1Byb2ZpbGluZyk7CisgICAg
ICAgIG1fZnJvbnRlbmQtPnNldFJlY29yZGluZ1Byb2ZpbGUocHJvZmlsZVR5cGUsIGlzUHJvZmls
aW5nKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRPYmplY3RCeUhlYXBP
YmplY3RJZChFcnJvclN0cmluZyogZXJyb3IsIGludCBpZCwgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4qIHJlc3VsdCkKQEAgLTM5MSw5ICs0OTcsNDAgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFn
ZW50OjpnZXRPYmplY3RCeUhlYXBPYmplY3RJZChFcnJvclN0cmluZyogZXJyb3IsIGludCBpZCwK
ICAgICBpZiAoIWhlYXBPYmplY3QtPmlzTnVsbCgpKQogICAgICAgICBoZWFwT2JqZWN0LT5hc09i
amVjdChyZXN1bHQpOwogICAgIGVsc2UKLSAgICAgICAgKmVycm9yID0gIk9iamVjdCBpcyBub3Qg
YXZhaWxhYmxlLiI7CisgICAgICAgICplcnJvciA9ICJPYmplY3QgaXMgbm90IGF2YWlsYWJsZSI7
CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6d2lsbE1hdGNoUnVsZShjb25zdCBD
U1NTdHlsZVJ1bGUqIHJ1bGUpCit7CisgICAgaWYgKG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZFNl
bGVjdG9yUHJvZmlsZSkgeworICAgICAgICBtX2N1cnJlbnRNYXRjaERhdGEuc2VsZWN0b3IgPSBy
dWxlLT5zZWxlY3RvclRleHQoKTsKKyAgICAgICAgbV9jdXJyZW50TWF0Y2hEYXRhLnN0YXJ0VGlt
ZSA9IFdURjo6Y3VycmVudFRpbWVNUygpOworICAgIH0KK30KKwordm9pZCBJbnNwZWN0b3JQcm9m
aWxlckFnZW50OjpkaWRNYXRjaFJ1bGUoYm9vbCBtYXRjaGVkKQoreworICAgIGlmIChtX3JlY29y
ZGluZ1VzZXJJbml0aWF0ZWRTZWxlY3RvclByb2ZpbGUpCisgICAgICAgIG1fY3VycmVudFNlbGVj
dG9yUHJvZmlsZS0+Y29tbWl0U2VsZWN0b3IobV9jdXJyZW50TWF0Y2hEYXRhLnNlbGVjdG9yLCBX
VEY6OmN1cnJlbnRUaW1lTVMoKSAtIG1fY3VycmVudE1hdGNoRGF0YS5zdGFydFRpbWUsIG1hdGNo
ZWQpOworfQorCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OndpbGxQcm9jZXNzUnVsZShj
b25zdCBDU1NTdHlsZVJ1bGUqIHJ1bGUpCit7CisgICAgaWYgKG1fcmVjb3JkaW5nVXNlckluaXRp
YXRlZFNlbGVjdG9yUHJvZmlsZSkgeworICAgICAgICBtX2N1cnJlbnRNYXRjaERhdGEuc2VsZWN0
b3IgPSBydWxlLT5zZWxlY3RvclRleHQoKTsKKyAgICAgICAgbV9jdXJyZW50TWF0Y2hEYXRhLnN0
YXJ0VGltZSA9IFdURjo6Y3VycmVudFRpbWVNUygpOworICAgIH0KK30KKwordm9pZCBJbnNwZWN0
b3JQcm9maWxlckFnZW50OjpkaWRQcm9jZXNzUnVsZSgpCit7CisgICAgaWYgKG1fcmVjb3JkaW5n
VXNlckluaXRpYXRlZFNlbGVjdG9yUHJvZmlsZSkKKyAgICAgICAgbV9jdXJyZW50U2VsZWN0b3JQ
cm9maWxlLT5jb21taXRTZWxlY3RvclRpbWUobV9jdXJyZW50TWF0Y2hEYXRhLnNlbGVjdG9yLCBX
VEY6OmN1cnJlbnRUaW1lTVMoKSAtIG1fY3VycmVudE1hdGNoRGF0YS5zdGFydFRpbWUpOworfQor
CisvLyBzdGF0aWMKK2ludCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpTZWxlY3RvclByb2ZpbGU6
OnNfY3VycmVudElkID0gMTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaAppbmRleCBk
NDczMzkwYTM3MjE4ZWY3ODdmZjQ1NmQ1NTk2ZTNhYjI5MmUwYWEwLi4wYjQ4ZGE3MmJkNTFhZjFk
M2UyZTQ0MDc2M2UxNGYzNTgxNDU2ZWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1
ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBA
IC00Miw2ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ1NTU3R5bGVS
dWxlOwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zcGVjdG9yQXJyYXk7
CiBjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQ7CkBAIC03NCw4ICs3Niw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBkaXNhYmxlKEVycm9y
U3RyaW5nKik7Ci0gICAgdm9pZCBzdGFydChFcnJvclN0cmluZyogPSAwKTsKLSAgICB2b2lkIHN0
b3AoRXJyb3JTdHJpbmcqID0gMCk7CisgICAgdm9pZCBzdGFydChFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYpOworICAgIHZvaWQgc3RvcChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYpOwog
CiAgICAgdm9pZCBkaXNhYmxlKCk7CiAgICAgdm9pZCBlbmFibGUoYm9vbCBza2lwUmVjb21waWxl
KTsKQEAgLTkwLDEzICs5Miw3MiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmUo
KTsKIAogICAgIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChFcnJvclN0cmluZyopOwotICAgIHZvaWQg
dG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wgaXNQcm9maWxpbmcpOworICAgIHZvaWQgdG9nZ2xlUmVj
b3JkQnV0dG9uKGNvbnN0IFN0cmluZyYsIGJvb2wgaXNQcm9maWxpbmcpOwogCiAgICAgdm9pZCBn
ZXRPYmplY3RCeUhlYXBPYmplY3RJZChFcnJvclN0cmluZyosIGludCBpZCwgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4qIHJlc3VsdCk7CiAKKyAgICBpbnQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lk
OyB9CisgICAgdm9pZCB3aWxsTWF0Y2hSdWxlKGNvbnN0IENTU1N0eWxlUnVsZSopOworICAgIHZv
aWQgZGlkTWF0Y2hSdWxlKGJvb2wgbWF0Y2hlZCk7CisgICAgdm9pZCB3aWxsUHJvY2Vzc1J1bGUo
Y29uc3QgQ1NTU3R5bGVSdWxlKik7CisgICAgdm9pZCBkaWRQcm9jZXNzUnVsZSgpOworCiBwcml2
YXRlOgorICAgIHN0cnVjdCBSdWxlTWF0Y2hpbmdTdGF0cyB7CisgICAgICAgIFJ1bGVNYXRjaGlu
Z1N0YXRzKCkKKyAgICAgICAgICAgIDogdG90YWxUaW1lKDAuMCksIGhpdHMoMCksIG1hdGNoZXMo
MCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIFJ1bGVNYXRjaGluZ1N0YXRzKGRvdWJs
ZSB0b3RhbFRpbWUsIHVuc2lnbmVkIGhpdHMsIHVuc2lnbmVkIG1hdGNoZXMpCisgICAgICAgICAg
ICA6IHRvdGFsVGltZSh0b3RhbFRpbWUpLCBoaXRzKGhpdHMpLCBtYXRjaGVzKG1hdGNoZXMpCisg
ICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICBkb3VibGUgdG90YWxUaW1lOworICAgICAgICB1
bnNpZ25lZCBoaXRzOworICAgICAgICB1bnNpZ25lZCBtYXRjaGVzOworICAgIH07CisKKyAgICBj
bGFzcyBTZWxlY3RvclByb2ZpbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTZWxlY3RvclByb2ZpbGU+
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIC8vIEZJWE1FOiBoYW5kbGUgZGlmZmVyZW50IHJ1bGVz
IHdpdGggdGhlIHNhbWUgc2VsZWN0b3IgZGlmZmVyZW50bHk/CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNlbGVjdG9yUHJvZmlsZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0bGUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VsZWN0b3JQcm9maWxlKHNf
Y3VycmVudElkKyssIHRpdGxlKSk7CisgICAgICAgIH0KKyAgICAgICAgdmlydHVhbCB+U2VsZWN0
b3JQcm9maWxlKCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgU3RyaW5nIHRpdGxl
KCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQorICAgICAgICB1bnNpZ25lZCBpbnQgdWlkKCkg
Y29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgICAgICBkb3VibGUgdG90YWxNYXRjaGluZ1RpbWVN
cygpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxNYXRjaGluZ1RpbWVNczsgfQorCisgICAgICAgIHZv
aWQgY29tbWl0U2VsZWN0b3IoY29uc3QgU3RyaW5nJiwgZG91YmxlLCBib29sKTsKKyAgICAgICAg
dm9pZCBjb21taXRTZWxlY3RvclRpbWUoY29uc3QgU3RyaW5nJiwgZG91YmxlKTsKKyAgICAgICAg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHRvSW5zcGVjdG9yT2JqZWN0KCkgY29uc3Q7CisK
KyAgICBwcml2YXRlOgorICAgICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSdWxlTWF0Y2hp
bmdTdGF0cz4gUnVsZU1hdGNoaW5nU3RhdHNNYXA7CisgICAgICAgIFNlbGVjdG9yUHJvZmlsZShp
bnQgaWQsIGNvbnN0IFN0cmluZyYgdGl0bGUpCisgICAgICAgICAgICA6IG1faWQoaWQpLCBtX3Rp
dGxlKHRpdGxlKSwgbV90b3RhbE1hdGNoaW5nVGltZU1zKDAuMCkKKyAgICAgICAgeworICAgICAg
ICB9CisKKyAgICAgICAgc3RhdGljIGludCBzX2N1cnJlbnRJZDsKKyAgICAgICAgY29uc3QgaW50
IG1faWQ7CisgICAgICAgIGNvbnN0IFN0cmluZyBtX3RpdGxlOworICAgICAgICBkb3VibGUgbV90
b3RhbE1hdGNoaW5nVGltZU1zOworICAgICAgICBSdWxlTWF0Y2hpbmdTdGF0c01hcCBtX3J1bGVN
YXRjaGluZ1N0YXRzOworICAgIH07CisKKyAgICBzdHJ1Y3QgUnVsZU1hdGNoRGF0YSB7CisgICAg
ICAgIFN0cmluZyBzZWxlY3RvcjsKKyAgICAgICAgZG91YmxlIHN0YXJ0VGltZTsKKyAgICB9Owor
CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkIGludCwgUmVmUHRyPFNjcmlwdFByb2ZpbGU+
ID4gUHJvZmlsZXNNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkIGludCwgUmVmUHRy
PFNjcmlwdEhlYXBTbmFwc2hvdD4gPiBIZWFwU25hcHNob3RzTWFwOworICAgIHR5cGVkZWYgSGFz
aE1hcDx1bnNpZ25lZCBpbnQsIFJlZlB0cjxTZWxlY3RvclByb2ZpbGU+ID4gU2VsZWN0b3JQcm9m
aWxlc01hcDsKIAogICAgIHZvaWQgcmVzZXRGcm9udGVuZFByb2ZpbGVzKCk7CiAgICAgdm9pZCBy
ZXN0b3JlRW5hYmxlbWVudCgpOwpAQCAtMTA0LDE4ICsxNjUsMjggQEAgcHJpdmF0ZToKICAgICBJ
bnNwZWN0b3JQcm9maWxlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JDb25z
b2xlQWdlbnQqLCBQYWdlKiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIq
KTsKICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlUHJvZmlsZUhlYWRlcihj
b25zdCBTY3JpcHRQcm9maWxlJiBwcm9maWxlKTsKICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gY3JlYXRlU25hcHNob3RIZWFkZXIoY29uc3QgU2NyaXB0SGVhcFNuYXBzaG90JiBzbmFw
c2hvdCk7CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVNlbGVjdG9yUHJv
ZmlsZUhlYWRlcihjb25zdCBTZWxlY3RvclByb2ZpbGUmKTsKKyAgICB2b2lkIGFkZFNlbGVjdG9y
UHJvZmlsZShQYXNzUmVmUHRyPFNlbGVjdG9yUHJvZmlsZT4gcHJwUHJvZmlsZSk7CisKKyAgICB2
b2lkIGluY3JlbWVudElkKCkgeyArK21faWQ7IH0KIAogICAgIEluc3BlY3RvckNvbnNvbGVBZ2Vu
dCogbV9jb25zb2xlQWdlbnQ7CiAgICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdlOwogICAgIEluamVj
dGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgSW5zcGVjdG9y
RnJvbnRlbmQ6OlByb2ZpbGVyKiBtX2Zyb250ZW5kOworICAgIGludCBtX2lkOwogICAgIGJvb2wg
bV9lbmFibGVkOwotICAgIGJvb2wgbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZTsKKyAg
ICBib29sIG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZENQVVByb2ZpbGU7CisgICAgYm9vbCBtX3Jl
Y29yZGluZ1VzZXJJbml0aWF0ZWRTZWxlY3RvclByb2ZpbGU7CiAgICAgaW50IG1fY3VycmVudFVz
ZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyOwogICAgIHVuc2lnbmVkIG1fbmV4dFVzZXJJbml0aWF0
ZWRQcm9maWxlTnVtYmVyOwogICAgIHVuc2lnbmVkIG1fbmV4dFVzZXJJbml0aWF0ZWRIZWFwU25h
cHNob3ROdW1iZXI7CisgICAgdW5zaWduZWQgbV9uZXh0VXNlckluaXRpYXRlZFNlbGVjdG9yUHJv
ZmlsZU51bWJlcjsKICAgICBQcm9maWxlc01hcCBtX3Byb2ZpbGVzOwogICAgIEhlYXBTbmFwc2hv
dHNNYXAgbV9zbmFwc2hvdHM7CisgICAgU2VsZWN0b3JQcm9maWxlc01hcCBtX3NlbGVjdG9yUHJv
ZmlsZXM7CisgICAgUmVmUHRyPFNlbGVjdG9yUHJvZmlsZT4gbV9jdXJyZW50U2VsZWN0b3JQcm9m
aWxlOworICAgIFJ1bGVNYXRjaERhdGEgbV9jdXJyZW50TWF0Y2hEYXRhOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Nv
bXBpbGUtZnJvbnQtZW5kLnNoIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJv
bnQtZW5kLnNoCmluZGV4IGMxZDlhNDY4YTJhZTdjOTZjNjk0MzIxOGIwODk5ODIxYzg3YmRiNTUu
LmJhODc5ZTBlZDUxZTg2NzIyNTVhNWFkMDg5NWYzMWIwNThhZjMyMzYgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQuc2gKQEAgLTE5MSw2ICsxOTEsNyBA
QCBqYXZhIC1qYXIgfi9jbG9zdXJlL2NvbXBpbGVyLmphciAtLXN1bW1hcnlfZGV0YWlsX2xldmVs
IDMgLS1jb21waWxhdGlvbl9sZXZlbCBTSQogIyBUbyBiZSBjb21waWxlZC4uLgogIyAKICMgW1By
b2ZpbGVyXQorIyBDU1NTZWxlY3RvclByb2ZpbGVWaWV3CiAjIEJvdHRvbVVwUHJvZmlsZURhdGFH
cmlkVHJlZQogIyBEZXRhaWxlZEhlYXBzaG90R3JpZE5vZGVzCiAjIERldGFpbGVkSGVhcHNob3RW
aWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1Nl
bGVjdG9yUHJvZmlsZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NTU1NlbGVjdG9yUHJvZmlsZVZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M5YjBlM2M4NGNmM2RkN2Ji
NzJjODY3Mjg3ZWJjZDhlYzE5ZDk3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5qcwpAQCAtMCwwICsx
LDU1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2Vi
SW5zcGVjdG9yLkNTU1NlbGVjdG9yRGF0YUdyaWROb2RlID0gZnVuY3Rpb24ocHJvZmlsZVZpZXcs
IGRhdGEpCit7CisgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5jYWxsKHRoaXMsIGRhdGEs
IGZhbHNlKTsKKyAgICB0aGlzLl9wcm9maWxlVmlldyA9IHByb2ZpbGVWaWV3OworfQorCitXZWJJ
bnNwZWN0b3IuQ1NTU2VsZWN0b3JEYXRhR3JpZE5vZGUucHJvdG90eXBlID0geworICAgIGdldCBk
YXRhKCkKKyAgICB7CisgICAgICAgIHZhciBkYXRhID0ge307CisgICAgICAgIGRhdGEuc2VsZWN0
b3IgPSB0aGlzLl9kYXRhLnNlbGVjdG9yOworCisgICAgICAgIGlmICh0aGlzLl9wcm9maWxlVmll
dy5zaG93VGltZUFzUGVyY2VudC5nZXQoKSkKKyAgICAgICAgICAgIGRhdGEudGltZSA9IE51bWJl
cih0aGlzLl9kYXRhLnRpbWVQZXJjZW50KS50b0ZpeGVkKDEpICsgIiUiOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBkYXRhLnRpbWUgPSBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKHRoaXMuX2Rh
dGEudGltZSAvIDEwMDAsIHRydWUpOworCisgICAgICAgIGlmICh0aGlzLl9wcm9maWxlVmlldy5z
aG93TWF0Y2hlc0FzUGVyY2VudC5nZXQoKSkKKyAgICAgICAgICAgIGRhdGEubWF0Y2hlcyA9IE51
bWJlcih0aGlzLl9kYXRhLm1hdGNoZXNQZXJjZW50KS50b0ZpeGVkKDEpICsgIiUiOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBkYXRhLm1hdGNoZXMgPSB0aGlzLl9kYXRhLm1hdGNoZXM7CisK
KyAgICAgICAgZGF0YS5oaXRzID0gdGhpcy5fZGF0YS5oaXRzOworICAgICAgICByZXR1cm4gZGF0
YTsKKyAgICB9LAorCisgICAgZ2V0IHJhd0RhdGEoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX2RhdGE7CisgICAgfSwKKworICAgIGNyZWF0ZUNlbGw6IGZ1bmN0aW9uKGNvbHVtbklkZW50
aWZpZXIpCisgICAgeworICAgICAgICB2YXIgY2VsbCA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5v
ZGUucHJvdG90eXBlLmNyZWF0ZUNlbGwuY2FsbCh0aGlzLCBjb2x1bW5JZGVudGlmaWVyKTsKKwor
ICAgICAgICBpZiAoY29sdW1uSWRlbnRpZmllciA9PT0gInNlbGVjdG9yIiAmJiB0aGlzLl9zZWFy
Y2hNYXRjaGVkU2VsZWN0b3JDb2x1bW4KKyAgICAgICAgICAgICAgICB8fCBjb2x1bW5JZGVudGlm
aWVyID09PSAidGltZSIgJiYgdGhpcy5fc2VhcmNoTWF0Y2hlZFRvdGFsQ29sdW1uCisgICAgICAg
ICAgICAgICAgfHwgY29sdW1uSWRlbnRpZmllciA9PT0gIm1hdGNoZXMiICYmIHRoaXMuX3NlYXJj
aE1hdGNoZWRNYXRjaGVzQ29sdW1uCisgICAgICAgICAgICAgICAgfHwgY29sdW1uSWRlbnRpZmll
ciA9PT0gImhpdHMiICYmIHRoaXMuX3NlYXJjaE1hdGNoZWRIaXRzQ29sdW1uKQorICAgICAgICAg
ICAgY2VsbC5hZGRTdHlsZUNsYXNzKCJoaWdobGlnaHQiKTsKKworICAgICAgICByZXR1cm4gY2Vs
bDsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5DU1NTZWxlY3RvckRhdGFHcmlkTm9kZS5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGU7CisK
K1dlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3ID0gZnVuY3Rpb24ocHJvZmlsZSkK
K3sKKyAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOworCisgICAgdGhpcy5lbGVtZW50
LmFkZFN0eWxlQ2xhc3MoInByb2ZpbGUtdmlldyIpOworCisgICAgdGhpcy5zaG93VGltZUFzUGVy
Y2VudCA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jcmVhdGVTZXR0aW5nKCJzZWxlY3RvclByb2Zp
bGVyU2hvd1RpbWVBc1BlcmNlbnQiLCB0cnVlKTsKKyAgICB0aGlzLnNob3dNYXRjaGVzQXNQZXJj
ZW50ID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNyZWF0ZVNldHRpbmcoInNlbGVjdG9yUHJvZmls
ZXJTaG93TWF0Y2hlc0FzUGVyY2VudCIsIHRydWUpOworCisgICAgdmFyIGNvbHVtbnMgPSB7ICJz
ZWxlY3RvciI6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VsZWN0b3IiKSwgd2lk
dGg6ICI2NTBweCIsIHNvcnRhYmxlOiB0cnVlIH0sCisgICAgICAgICAgICAgICAgICAgICJ0aW1l
IjogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUb3RhbCIpLCB3aWR0aDogIjcycHgi
LCBzb3J0OiAiZGVzY2VuZGluZyIsIHNvcnRhYmxlOiB0cnVlIH0sCisgICAgICAgICAgICAgICAg
ICAgICJtYXRjaGVzIjogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNYXRjaGVzIiks
IHdpZHRoOiAiNzJweCIsIHNvcnRhYmxlOiB0cnVlIH0sCisgICAgICAgICAgICAgICAgICAgICJo
aXRzIjogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIaXRzIiksIHdpZHRoOiAiNzJw
eCIsIHNvcnRhYmxlOiB0cnVlIH0gfTsKKworICAgIHRoaXMuZGF0YUdyaWQgPSBuZXcgV2ViSW5z
cGVjdG9yLkRhdGFHcmlkKGNvbHVtbnMpOworICAgIHRoaXMuZGF0YUdyaWQuYWRkRXZlbnRMaXN0
ZW5lcigic29ydGluZyBjaGFuZ2VkIiwgdGhpcy5fc29ydERhdGEsIHRoaXMpOworICAgIHRoaXMu
ZGF0YUdyaWQuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9tb3Vz
ZURvd25JbkRhdGFHcmlkLmJpbmQodGhpcyksIHRydWUpOworICAgIHRoaXMuZGF0YUdyaWQuc2hv
dyh0aGlzLmVsZW1lbnQpOworCisgICAgdGhpcy5wZXJjZW50QnV0dG9uID0gbmV3IFdlYkluc3Bl
Y3Rvci5TdGF0dXNCYXJCdXR0b24oIiIsICJwZXJjZW50LXRpbWUtc3RhdHVzLWJhci1pdGVtIik7
CisgICAgdGhpcy5wZXJjZW50QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5f
cGVyY2VudENsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2UpOworCisgICAgdGhpcy5wcm9maWxlID0g
cHJvZmlsZTsKKworICAgIGZ1bmN0aW9uIHByb2ZpbGVDYWxsYmFjayhlcnJvciwgcHJvZmlsZSkK
KyAgICB7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
dGhpcy5wcm9maWxlLmRhdGEgPSBwcm9maWxlLmRhdGE7CisgICAgICAgIHRoaXMuX2NyZWF0ZVBy
b2ZpbGVOb2RlcygpOworICAgICAgICB0aGlzLl9zb3J0UHJvZmlsZSgpOworICAgICAgICB0aGlz
Ll91cGRhdGVQZXJjZW50QnV0dG9uKCk7CisgICAgfQorCisgICAgUHJvZmlsZXJBZ2VudC5nZXRQ
cm9maWxlKHRoaXMucHJvZmlsZS50eXBlSWQsIHRoaXMucHJvZmlsZS51aWQsIHByb2ZpbGVDYWxs
YmFjay5iaW5kKHRoaXMpKTsKK30KKworV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZp
ZXcucHJvdG90eXBlID0geworICAgIGdldCBzdGF0dXNCYXJJdGVtcygpCisgICAgeworICAgICAg
ICByZXR1cm4gW3RoaXMucGVyY2VudEJ1dHRvbi5lbGVtZW50XTsKKyAgICB9LAorCisgICAgZ2V0
IHByb2ZpbGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2ZpbGU7CisgICAgfSwK
KworICAgIHNldCBwcm9maWxlKHByb2ZpbGUpCisgICAgeworICAgICAgICB0aGlzLl9wcm9maWxl
ID0gcHJvZmlsZTsKKyAgICB9LAorCisgICAgd2lsbEhpZGU6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IC0xOworICAgIH0sCisKKyAg
ICBfY3JlYXRlUHJvZmlsZU5vZGVzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgZGF0
YSA9IHRoaXMucHJvZmlsZS5kYXRhOworCisgICAgICAgIHRoaXMucHJvZmlsZS5jaGlsZHJlbiA9
IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgICAgIGRhdGFbaV0udGltZVBlcmNlbnQgPSBkYXRhW2ldLnRpbWUgKiAxMDAgLyB0aGlz
LnByb2ZpbGUudG90YWxUaW1lTXM7CisgICAgICAgICAgICBkYXRhW2ldLm1hdGNoZXNQZXJjZW50
ID0gZGF0YVtpXS5tYXRjaGVzICogMTAwIC8gZGF0YVtpXS5oaXRzOworICAgICAgICAgICAgdmFy
IG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yRGF0YUdyaWROb2RlKHRoaXMsIGRh
dGFbaV0pOworICAgICAgICAgICAgdGhpcy5wcm9maWxlLmNoaWxkcmVuLnB1c2gobm9kZSk7Cisg
ICAgICAgIH0KKyAgICB9LAorCisgICAgcmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdmFyIHNlbGVjdGVkUHJvZmlsZU5vZGUgPSB0aGlzLmRhdGFHcmlkLnNlbGVjdGVkTm9kZSA/
IHRoaXMuZGF0YUdyaWQuc2VsZWN0ZWROb2RlLnByb2ZpbGVOb2RlIDogbnVsbDsKKworICAgICAg
ICB0aGlzLmRhdGFHcmlkLnJlbW92ZUNoaWxkcmVuKCk7CisKKyAgICAgICAgdmFyIGNoaWxkcmVu
ID0gdGhpcy5wcm9maWxlLmNoaWxkcmVuOworICAgICAgICB2YXIgY291bnQgPSBjaGlsZHJlbi5s
ZW5ndGg7CisKKyAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2lu
ZGV4KQorICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5hcHBlbmRDaGlsZChjaGlsZHJlbltpbmRl
eF0pOworCisgICAgICAgIGlmIChzZWxlY3RlZFByb2ZpbGVOb2RlKQorICAgICAgICAgICAgc2Vs
ZWN0ZWRQcm9maWxlTm9kZS5zZWxlY3RlZCA9IHRydWU7CisgICAgfSwKKworICAgIHJlZnJlc2hW
aXNpYmxlRGF0YTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5k
YXRhR3JpZC5jaGlsZHJlblswXTsKKyAgICAgICAgd2hpbGUgKGNoaWxkKSB7CisgICAgICAgICAg
ICBjaGlsZC5yZWZyZXNoKCk7CisgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLnRyYXZlcnNlTmV4
dE5vZGUoZmFsc2UsIG51bGwsIHRydWUpOworICAgICAgICB9CisgICAgfSwKKworICAgIHJlZnJl
c2hTaG93QXNQZXJjZW50czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fdXBkYXRl
UGVyY2VudEJ1dHRvbigpOworICAgICAgICB0aGlzLnJlZnJlc2hWaXNpYmxlRGF0YSgpOworCisg
ICAgICAgIC8vIFRoZSBvbmx5IGNhc2Ugd2hlbiB0aGUgc29ydCBvcmRlciBjaGFuZ2VzIHdoZW4g
c3dpdGNoaW5nIGJldHdlZW4gYWJzIGFuZCBwY3QuCisgICAgICAgIGlmICh0aGlzLmRhdGFHcmlk
LnNvcnRDb2x1bW5JZGVudGlmaWVyID09PSAibWF0Y2hlcyIpCisgICAgICAgICAgICB0aGlzLl9z
b3J0UHJvZmlsZSgpOworICAgIH0sCisKKyAgICBzZWFyY2hDYW5jZWxlZDogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3NlYXJjaFJlc3VsdHMpIHsKKyAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGg7ICsraSkgeworICAg
ICAgICAgICAgICAgIHZhciBwcm9maWxlTm9kZSA9IHRoaXMuX3NlYXJjaFJlc3VsdHNbaV0ucHJv
ZmlsZU5vZGU7CisKKyAgICAgICAgICAgICAgICBkZWxldGUgcHJvZmlsZU5vZGUuX3NlYXJjaE1h
dGNoZWRTZWxlY3RvckNvbHVtbjsKKyAgICAgICAgICAgICAgICBkZWxldGUgcHJvZmlsZU5vZGUu
X3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbjsKKyAgICAgICAgICAgICAgICBkZWxldGUgcHJvZmls
ZU5vZGUuX3NlYXJjaE1hdGNoZWRNYXRjaGVzQ29sdW1uOworICAgICAgICAgICAgICAgIGRlbGV0
ZSBwcm9maWxlTm9kZS5fc2VhcmNoTWF0Y2hlZEhpdHNDb2x1bW47CisKKyAgICAgICAgICAgICAg
ICBwcm9maWxlTm9kZS5yZWZyZXNoKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBkZWxldGUgdGhpcy5fc2VhcmNoRmluaXNoZWRDYWxsYmFjazsKKyAgICAgICAgdGhpcy5f
Y3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gLTE7CisgICAgICAgIHRoaXMuX3NlYXJjaFJlc3Vs
dHMgPSBbXTsKKyAgICB9LAorCisgICAgcGVyZm9ybVNlYXJjaDogZnVuY3Rpb24ocXVlcnksIGZp
bmlzaGVkQ2FsbGJhY2spCisgICAgeworICAgICAgICAvLyBDYWxsIHNlYXJjaENhbmNlbGVkIHNp
bmNlIGl0IHdpbGwgcmVzZXQgZXZlcnl0aGluZyB3ZSBuZWVkIGJlZm9yZSBkb2luZyBhIG5ldyBz
ZWFyY2guCisgICAgICAgIHRoaXMuc2VhcmNoQ2FuY2VsZWQoKTsKKworICAgICAgICBxdWVyeSA9
IHF1ZXJ5LnRyaW0oKTsKKworICAgICAgICBpZiAoIXF1ZXJ5Lmxlbmd0aCkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICB0aGlzLl9zZWFyY2hGaW5pc2hlZENhbGxiYWNrID0gZmluaXNo
ZWRDYWxsYmFjazsKKworICAgICAgICB2YXIgZ3JlYXRlclRoYW4gPSAocXVlcnkuaW5kZXhPZigi
PiIpID09PSAwKTsKKyAgICAgICAgdmFyIGxlc3NUaGFuID0gKHF1ZXJ5LmluZGV4T2YoIjwiKSA9
PT0gMCk7CisgICAgICAgIHZhciBlcXVhbFRvID0gKHF1ZXJ5LmluZGV4T2YoIj0iKSA9PT0gMCB8
fCAoKGdyZWF0ZXJUaGFuIHx8IGxlc3NUaGFuKSAmJiBxdWVyeS5pbmRleE9mKCI9IikgPT09IDEp
KTsKKyAgICAgICAgdmFyIHBlcmNlbnRVbml0cyA9IChxdWVyeS5sYXN0SW5kZXhPZigiJSIpID09
PSAocXVlcnkubGVuZ3RoIC0gMSkpOworICAgICAgICB2YXIgbWlsbGlzZWNvbmRzVW5pdHMgPSAo
cXVlcnkubGVuZ3RoID4gMiAmJiBxdWVyeS5sYXN0SW5kZXhPZigibXMiKSA9PT0gKHF1ZXJ5Lmxl
bmd0aCAtIDIpKTsKKyAgICAgICAgdmFyIG1hdGNoZXNVbml0cyA9IChxdWVyeS5sZW5ndGggPiA3
ICYmIHF1ZXJ5Lmxhc3RJbmRleE9mKCJtYXRjaGVzIikgPT09IChxdWVyeS5sZW5ndGggLSA3KSk7
CisgICAgICAgIHZhciBoaXRzVW5pdHMgPSAocXVlcnkubGVuZ3RoID4gNCAmJiBxdWVyeS5sYXN0
SW5kZXhPZigiaGl0cyIpID09PSAocXVlcnkubGVuZ3RoIC0gNCkpOworICAgICAgICB2YXIgc2Vj
b25kc1VuaXRzID0gKCFtaWxsaXNlY29uZHNVbml0cyAmJiAhbWF0Y2hlc1VuaXRzICYmICFoaXRz
VW5pdHMgJiYgcXVlcnkubGFzdEluZGV4T2YoInMiKSA9PT0gKHF1ZXJ5Lmxlbmd0aCAtIDEpKTsK
KworICAgICAgICB2YXIgcXVlcnlOdW1iZXIgPSBwYXJzZUZsb2F0KHF1ZXJ5KTsKKyAgICAgICAg
aWYgKGdyZWF0ZXJUaGFuIHx8IGxlc3NUaGFuIHx8IGVxdWFsVG8pIHsKKyAgICAgICAgICAgIGlm
IChlcXVhbFRvICYmIChncmVhdGVyVGhhbiB8fCBsZXNzVGhhbikpCisgICAgICAgICAgICAgICAg
cXVlcnlOdW1iZXIgPSBwYXJzZUZsb2F0KHF1ZXJ5LnN1YnN0cmluZygyKSk7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgcXVlcnlOdW1iZXIgPSBwYXJzZUZsb2F0KHF1ZXJ5LnN1
YnN0cmluZygxKSk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgcXVlcnlOdW1iZXJNaWxsaXNl
Y29uZHMgPSAoc2Vjb25kc1VuaXRzID8gKHF1ZXJ5TnVtYmVyICogMTAwMCkgOiBxdWVyeU51bWJl
cik7CisKKyAgICAgICAgLy8gTWFrZSBlcXVhbFRvIGltcGxpY2l0bHkgdHJ1ZSBpZiBpdCB3YXNu
J3Qgc3BlY2lmaWVkIHRoZXJlIGlzIG5vIG90aGVyIG9wZXJhdG9yLgorICAgICAgICBpZiAoIWlz
TmFOKHF1ZXJ5TnVtYmVyKSAmJiAhKGdyZWF0ZXJUaGFuIHx8IGxlc3NUaGFuKSkKKyAgICAgICAg
ICAgIGVxdWFsVG8gPSB0cnVlOworCisgICAgICAgIGZ1bmN0aW9uIG1hdGNoZXNRdWVyeSgvKkNT
U1NlbGVjdG9yUHJvZmlsZU5vZGUqLyBwcm9maWxlRGF0YUdyaWROb2RlKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWxldGUgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFNlbGVj
dG9yQ29sdW1uOworICAgICAgICAgICAgZGVsZXRlIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJj
aE1hdGNoZWRUb3RhbENvbHVtbjsKKyAgICAgICAgICAgIGRlbGV0ZSBwcm9maWxlRGF0YUdyaWRO
b2RlLl9zZWFyY2hNYXRjaGVkSGl0c0NvbHVtbjsKKyAgICAgICAgICAgIGRlbGV0ZSBwcm9maWxl
RGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkTWF0Y2hlc0NvbHVtbjsKKworICAgICAgICAgICAg
aWYgKHBlcmNlbnRVbml0cykgeworICAgICAgICAgICAgICAgIGlmIChsZXNzVGhhbikgeworICAg
ICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5yYXdEYXRhLnRpbWVQZXJj
ZW50IDwgcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdy
aWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5yYXdEYXRhLm1hdGNoZXNQZXJjZW50IDwgcXVl
cnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9z
ZWFyY2hNYXRjaGVkTWF0Y2hlc0NvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChncmVhdGVyVGhhbikgeworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFH
cmlkTm9kZS5yYXdEYXRhLnRpbWVQZXJjZW50ID4gcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAg
ICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4g
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5yYXdE
YXRhLm1hdGNoZXNQZXJjZW50ID4gcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgICAg
ICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkTWF0Y2hlc0NvbHVtbiA9IHRydWU7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGVxdWFsVG8pIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUucmF3RGF0YS50aW1lUGVy
Y2VudCA9PSBxdWVyeU51bWJlcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRh
R3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnJhd0RhdGEubWF0Y2hlc1BlcmNlbnQgPT0g
cXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2Rl
Ll9zZWFyY2hNYXRjaGVkTWF0Y2hlc0NvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfSBlbHNlIGlmIChtaWxsaXNlY29uZHNVbml0cyB8fCBzZWNvbmRzVW5pdHMp
IHsKKyAgICAgICAgICAgICAgICBpZiAobGVzc1RoYW4pIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUucmF3RGF0YS50aW1lIDwgcXVlcnlOdW1iZXJNaWxsaXNl
Y29uZHMpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFy
Y2hNYXRjaGVkVG90YWxDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
Z3JlYXRlclRoYW4pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5v
ZGUucmF3RGF0YS50aW1lID4gcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCisgICAgICAgICAgICAg
ICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4g
PSB0cnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChlcXVhbFRv
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnRvdGFsVGlt
ZSA9PSBxdWVyeU51bWJlck1pbGxpc2Vjb25kcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbiA9IHRydWU7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChtYXRjaGVzVW5pdHMpIHsKKyAg
ICAgICAgICAgICAgICBpZiAobGVzc1RoYW4pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBy
b2ZpbGVEYXRhR3JpZE5vZGUucmF3RGF0YS5tYXRjaGVzIDwgcXVlcnlOdW1iZXIpCisgICAgICAg
ICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkTWF0Y2hl
c0NvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChncmVhdGVyVGhhbikg
eworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5yYXdEYXRhLm1h
dGNoZXMgPiBxdWVyeU51bWJlcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRh
R3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRNYXRjaGVzQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoZXF1YWxUbykgeworICAgICAgICAgICAgICAg
ICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5yYXdEYXRhLm1hdGNoZXMgPT0gcXVlcnlOdW1i
ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hN
YXRjaGVkTWF0Y2hlc0NvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSBlbHNlIGlmIChoaXRzVW5pdHMpIHsKKyAgICAgICAgICAgICAgICBpZiAobGVzc1RoYW4p
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUucmF3RGF0YS5o
aXRzIDwgcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdy
aWROb2RlLl9zZWFyY2hNYXRjaGVkSGl0c0NvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChncmVhdGVyVGhhbikgeworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmls
ZURhdGFHcmlkTm9kZS5yYXdEYXRhLmhpdHMgPiBxdWVyeU51bWJlcikKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRIaXRzQ29sdW1uID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoZXF1YWxUbykg
eworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5yYXdEYXRhLmhp
dHMgPT0gcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdy
aWROb2RlLl9zZWFyY2hNYXRjaGVkSGl0c0NvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5k
YXRhLnNlbGVjdG9yLmhhc1N1YnN0cmluZyhxdWVyeSwgdHJ1ZSkpCisgICAgICAgICAgICAgICAg
cHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFNlbGVjdG9yQ29sdW1uID0gdHJ1ZTsK
KworICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRTZWxl
Y3RvckNvbHVtbgorICAgICAgICAgICAgICAgICAgICB8fCBwcm9maWxlRGF0YUdyaWROb2RlLl9z
ZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4KKyAgICAgICAgICAgICAgICAgICAgfHwgcHJvZmlsZURh
dGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZE1hdGNoZXNDb2x1bW4KKyAgICAgICAgICAgICAgICAg
ICAgfHwgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEhpdHNDb2x1bW4pIHsKKyAg
ICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLnJlZnJlc2goKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGN1cnJlbnQgPSB0aGlzLnByb2ZpbGUuY2hp
bGRyZW5bMF07CisKKyAgICAgICAgd2hpbGUgKGN1cnJlbnQpIHsKKyAgICAgICAgICAgIGlmICht
YXRjaGVzUXVlcnkoY3VycmVudCkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9zZWFyY2hSZXN1
bHRzLnB1c2goeyBwcm9maWxlTm9kZTogY3VycmVudCB9KTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQudHJhdmVyc2VOZXh0Tm9kZShmYWxzZSwgbnVsbCwg
ZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgZmluaXNoZWRDYWxsYmFjayh0aGlzLCB0aGlz
Ll9zZWFyY2hSZXN1bHRzLmxlbmd0aCk7CisgICAgfSwKKworICAgIGp1bXBUb0ZpcnN0U2VhcmNo
UmVzdWx0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3Vs
dHMgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAwOworICAgICAgICB0aGlz
Ll9qdW1wVG9TZWFyY2hSZXN1bHQodGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4KTsKKyAg
ICB9LAorCisgICAganVtcFRvTGFzdFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgaWYgKCF0aGlzLl9zZWFyY2hSZXN1bHRzIHx8ICF0aGlzLl9zZWFyY2hSZXN1bHRzLmxl
bmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJl
c3VsdEluZGV4ID0gKHRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoIC0gMSk7CisgICAgICAgIHRo
aXMuX2p1bXBUb1NlYXJjaFJlc3VsdCh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXgpOwor
ICAgIH0sCisKKyAgICBqdW1wVG9OZXh0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3VsdHMgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMu
bGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoKyt0aGlzLl9jdXJyZW50
U2VhcmNoUmVzdWx0SW5kZXggPj0gdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpCisgICAgICAg
ICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAwOworICAgICAgICB0aGlzLl9q
dW1wVG9TZWFyY2hSZXN1bHQodGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4KTsKKyAgICB9
LAorCisgICAganVtcFRvUHJldmlvdXNTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIGlmICghdGhpcy5fc2VhcmNoUmVzdWx0cyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cy5s
ZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICgtLXRoaXMuX2N1cnJlbnRT
ZWFyY2hSZXN1bHRJbmRleCA8IDApCisgICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVz
dWx0SW5kZXggPSAodGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGggLSAxKTsKKyAgICAgICAgdGhp
cy5fanVtcFRvU2VhcmNoUmVzdWx0KHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCk7Cisg
ICAgfSwKKworICAgIHNob3dpbmdGaXJzdFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgcmV0dXJuICh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPT09IDApOwor
ICAgIH0sCisKKyAgICBzaG93aW5nTGFzdFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgcmV0dXJuICh0aGlzLl9zZWFyY2hSZXN1bHRzICYmIHRoaXMuX2N1cnJlbnRTZWFy
Y2hSZXN1bHRJbmRleCA9PT0gKHRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoIC0gMSkpOworICAg
IH0sCisKKyAgICBfanVtcFRvU2VhcmNoUmVzdWx0OiBmdW5jdGlvbihpbmRleCkKKyAgICB7Cisg
ICAgICAgIHZhciBzZWFyY2hSZXN1bHQgPSB0aGlzLl9zZWFyY2hSZXN1bHRzW2luZGV4XTsKKyAg
ICAgICAgaWYgKCFzZWFyY2hSZXN1bHQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dmFyIHByb2ZpbGVOb2RlID0gc2VhcmNoUmVzdWx0LnByb2ZpbGVOb2RlOworICAgICAgICBwcm9m
aWxlTm9kZS5yZXZlYWxBbmRTZWxlY3QoKTsKKyAgICB9LAorCisgICAgX3BlcmNlbnRDbGlja2Vk
OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBjdXJyZW50U3RhdGUgPSB0aGlz
LnNob3dUaW1lQXNQZXJjZW50LmdldCgpICYmIHRoaXMuc2hvd01hdGNoZXNBc1BlcmNlbnQuZ2V0
KCk7CisgICAgICAgIHRoaXMuc2hvd1RpbWVBc1BlcmNlbnQuc2V0KCFjdXJyZW50U3RhdGUpOwor
ICAgICAgICB0aGlzLnNob3dNYXRjaGVzQXNQZXJjZW50LnNldCghY3VycmVudFN0YXRlKTsKKyAg
ICAgICAgdGhpcy5yZWZyZXNoU2hvd0FzUGVyY2VudHMoKTsKKyAgICB9LAorCisgICAgX3VwZGF0
ZVBlcmNlbnRCdXR0b246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnNob3dU
aW1lQXNQZXJjZW50LmdldCgpICYmIHRoaXMuc2hvd01hdGNoZXNBc1BlcmNlbnQuZ2V0KCkpIHsK
KyAgICAgICAgICAgIHRoaXMucGVyY2VudEJ1dHRvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU2hvdyBhYnNvbHV0ZSB1bml0cy4iKTsKKyAgICAgICAgICAgIHRoaXMucGVyY2VudEJ1
dHRvbi50b2dnbGVkID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMu
cGVyY2VudEJ1dHRvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBwZXJjZW50
YWdlcy4iKTsKKyAgICAgICAgICAgIHRoaXMucGVyY2VudEJ1dHRvbi50b2dnbGVkID0gZmFsc2U7
CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX3NvcnREYXRhOiBmdW5jdGlvbihldmVudCkKKyAg
ICB7CisgICAgICAgIHRoaXMuX3NvcnRQcm9maWxlKHRoaXMucHJvZmlsZSk7CisgICAgfSwKKwor
ICAgIF9zb3J0UHJvZmlsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHNvcnRBc2Nl
bmRpbmcgPSB0aGlzLmRhdGFHcmlkLnNvcnRPcmRlciA9PT0gImFzY2VuZGluZyI7CisgICAgICAg
IHZhciBzb3J0Q29sdW1uSWRlbnRpZmllciA9IHRoaXMuZGF0YUdyaWQuc29ydENvbHVtbklkZW50
aWZpZXI7CisgICAgICAgIHZhciBpc1BlcmNlbnQgPSB0aGlzLnNob3dUaW1lQXNQZXJjZW50Lmdl
dCgpOworCisgICAgICAgIGZ1bmN0aW9uIHNlbGVjdG9yQ29tcGFyYXRvcihhLCBiKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgcmVzdWx0ID0gYi5yYXdEYXRhLnNlbGVjdG9yLmxvY2FsZUNv
bXBhcmUoYS5yYXdEYXRhLnNlbGVjdG9yKTsKKyAgICAgICAgICAgIHJldHVybiBzb3J0QXNjZW5k
aW5nID8gLXJlc3VsdCA6IHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRp
bWVDb21wYXJhdG9yKGEsIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9
IGIucmF3RGF0YS50aW1lIC0gYS5yYXdEYXRhLnRpbWU7CisgICAgICAgICAgICByZXR1cm4gc29y
dEFzY2VuZGluZyA/IC1yZXN1bHQgOiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBoaXRzQ29tcGFyYXRvcihhLCBiKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBy
ZXN1bHQgPSBiLnJhd0RhdGEuaGl0cyAtIGEucmF3RGF0YS5oaXRzOworICAgICAgICAgICAgcmV0
dXJuIHNvcnRBc2NlbmRpbmcgPyAtcmVzdWx0IDogcmVzdWx0OworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gbWF0Y2hlc0NvbXBhcmF0b3IoYSwgYikKKyAgICAgICAgeworICAgICAgICAg
ICAgY29uc3QgcmVzdWx0ID0gaXNQZXJjZW50ID8gKGIucmF3RGF0YS5tYXRjaGVzUGVyY2VudCAt
IGEucmF3RGF0YS5tYXRjaGVzUGVyY2VudCkgOiAoYi5yYXdEYXRhLm1hdGNoZXMgLSBhLnJhd0Rh
dGEubWF0Y2hlcyk7CisgICAgICAgICAgICByZXR1cm4gc29ydEFzY2VuZGluZyA/IC1yZXN1bHQg
OiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICB2YXIgY29tcGFyYXRvcjsKKyAgICAgICAg
c3dpdGNoIChzb3J0Q29sdW1uSWRlbnRpZmllcikgeworICAgICAgICBjYXNlICJ0aW1lIjoKKyAg
ICAgICAgICAgIGNvbXBhcmF0b3IgPSB0aW1lQ29tcGFyYXRvcjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlICJoaXRzIjoKKyAgICAgICAgICAgIGNvbXBhcmF0b3IgPSBoaXRzQ29t
cGFyYXRvcjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJtYXRjaGVzIjoKKyAg
ICAgICAgICAgIGNvbXBhcmF0b3IgPSBtYXRjaGVzQ29tcGFyYXRvcjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlICJzZWxlY3RvciI6CisgICAgICAgICAgICBjb21wYXJhdG9yID0g
c2VsZWN0b3JDb21wYXJhdG9yOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg
ICAgICB0aGlzLnByb2ZpbGUuY2hpbGRyZW4uc29ydChjb21wYXJhdG9yKTsKKworICAgICAgICB0
aGlzLnJlZnJlc2goKTsKKyAgICB9LAorCisgICAgX21vdXNlRG93bkluRGF0YUdyaWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LmRldGFpbCA8IDIpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGNlbGwgPSBldmVudC50YXJnZXQuZW5jbG9zaW5n
Tm9kZU9yU2VsZldpdGhOb2RlTmFtZSgidGQiKTsKKyAgICAgICAgaWYgKCFjZWxsKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChjZWxsLmhhc1N0eWxlQ2xhc3MoInRpbWUtY29s
dW1uIikpCisgICAgICAgICAgICB0aGlzLnNob3dUaW1lQXNQZXJjZW50LnNldCghdGhpcy5zaG93
VGltZUFzUGVyY2VudC5nZXQoKSk7CisgICAgICAgIGVsc2UgaWYgKGNlbGwuaGFzU3R5bGVDbGFz
cygibWF0Y2hlcy1jb2x1bW4iKSkKKyAgICAgICAgICAgIHRoaXMuc2hvd01hdGNoZXNBc1BlcmNl
bnQuc2V0KCF0aGlzLnNob3dNYXRjaGVzQXNQZXJjZW50LmdldCgpKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMucmVmcmVzaFNob3dBc1BlcmNlbnRz
KCk7CisKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgZXZlbnQuc3Rv
cFByb3BhZ2F0aW9uKCk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9m
aWxlVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBl
OworCitXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZSA9IGZ1bmN0aW9uKCkKK3sK
KyAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuQ1NT
U2VsZWN0b3JQcm9maWxlVHlwZS5UeXBlSWQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ1NTIFNF
TEVDVE9SIFBST0ZJTEVTIikpOworICAgIHRoaXMuX3JlY29yZGluZyA9IGZhbHNlOworICAgIFdl
Ykluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLmluc3RhbmNlID0gdGhpczsKK30KKwor
V2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUuVHlwZUlkID0gIlNFTEVDVE9SIjsK
KworV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUucHJvdG90eXBlID0geworICAg
IGdldCBidXR0b25Ub29sdGlwKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRp
bmcgPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3AgQ1NTIFNlbGVjdG9yIHByb2ZpbGluZy4i
KSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhcnQgQ1NTIFNlbGVjdG9yIHByb2ZpbGluZy4i
KTsKKyAgICB9LAorCisgICAgZ2V0IGJ1dHRvblN0eWxlKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl9yZWNvcmRpbmcgPyAicmVjb3JkLWNzcy1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSBz
dGF0dXMtYmFyLWl0ZW0gdG9nZ2xlZC1vbiIgOiAicmVjb3JkLWNzcy1wcm9maWxlLXN0YXR1cy1i
YXItaXRlbSBzdGF0dXMtYmFyLWl0ZW0iOworICAgIH0sCisKKyAgICBidXR0b25DbGlja2VkOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9yZWNvcmRpbmcgPSAhdGhpcy5fcmVjb3Jk
aW5nOworCisgICAgICAgIGlmICh0aGlzLl9yZWNvcmRpbmcpCisgICAgICAgICAgICBQcm9maWxl
ckFnZW50LnN0YXJ0KFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLlR5cGVJZCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFByb2ZpbGVyQWdlbnQuc3RvcChXZWJJbnNwZWN0
b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5UeXBlSWQpOworICAgIH0sCisKKyAgICBnZXQgd2Vs
Y29tZU1lc3NhZ2UoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiQ29udHJvbCBDU1MgU2VsZWN0b3IgcHJvZmlsaW5nIGJ5IHByZXNzaW5nIHRoZSAlcyBidXR0
b24gb24gdGhlIHN0YXR1cyBiYXIuIik7CisgICAgfSwKKworICAgIGlzUmVjb3JkaW5nUHJvZmls
ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZGluZzsKKyAg
ICB9LAorCisgICAgc3RhcnRSZWNvcmRpbmdQcm9maWxlOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB0aGlzLl9yZWNvcmRpbmcgPSB0cnVlOworICAgICAgICBQcm9maWxlckFnZW50LnN0YXJ0
KFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLlR5cGVJZCk7CisgICAgfSwKKwor
ICAgIHN0b3BSZWNvcmRpbmdQcm9maWxlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlz
Ll9yZWNvcmRpbmcgPSBmYWxzZTsKKyAgICAgICAgUHJvZmlsZXJBZ2VudC5zdG9wKFdlYkluc3Bl
Y3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLlR5cGVJZCk7CisgICAgfSwKKworICAgIHNldFJl
Y29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKGlzUHJvZmlsaW5nKQorICAgIHsKKyAgICAgICAgdGhp
cy5fcmVjb3JkaW5nID0gaXNQcm9maWxpbmc7CisgICAgfSwKKworICAgIGNyZWF0ZVNpZGViYXJU
cmVlRWxlbWVudEZvclByb2ZpbGU6IGZ1bmN0aW9uKHByb2ZpbGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlU2lkZWJhclRyZWVFbGVtZW50KHByb2ZpbGUs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJvZmlsZSAlZCIpICsgU3RyaW5nLnNwcmludGYoIiAo
JXMpIiwgTnVtYmVyLnNlY29uZHNUb1N0cmluZyhwcm9maWxlLnRvdGFsVGltZU1zIC8gMTAwMCkp
LCAicHJvZmlsZS1zaWRlYmFyLXRyZWUtaXRlbSIpOworICAgIH0sCisKKyAgICBjcmVhdGVWaWV3
OiBmdW5jdGlvbihwcm9maWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0
b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldyhwcm9maWxlKTsKKyAgICB9Cit9CisKK1dlYkluc3Bl
Y3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNw
ZWN0b3IuUHJvZmlsZVR5cGUucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvc3RhdHVzYmFyQnV0dG9uR2x5cGhzLnBuZyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL3N0YXR1c2JhckJ1dHRvbkds
eXBocy5wbmcKaW5kZXggNTUzMTI0YjFjZGI3MzhjYjZjMTk3NWVlYzRmMjE0OTc5NGY5MGU2ZC4u
M2U3OWQ3ZTAzOGMxZDI0NzdiOTAwMjY3ZDQ2NGRmNGEyNjU3Zjg0ZSAxMDA2NDQKR0lUIGJpbmFy
eSBwYXRjaApkZWx0YSAzNjgyCnpjbVYtbzR4UkNXRl9KUXtnJGZEKDBSSTYwcHVNTSlsYTJ9PmUr
Jmw+Qk1QfGFBYnxoPzRuIz5yS34jOSE/VldqJAp6NnhBS2FLUnFuRmc1YSo9dD8+d21YTlU9OHdY
Q1I2WURFKHZNbD5aVjVmaEp1ZkxMbGdsMnB2OShOcilocURIaTAKelB7NCNUQ1ZeOylRTlNaPVR2
M1JNKEZuJClDQCg7OGIjYXp1SSlBKWhYQzlyTm8hO0h8ZFdQWm1zZF9jaiRJUjx+CnpmOEc2a3pq
eVRTMmEyTDdpbFFpcnE5fUBARDJrI2VpbFFock5UNVp+Qk5+QmB6K2hRazJ8TmFAKlBfWFUhLTRN
dAp6I3t6by04LU4jcStrclYlY0M0MzQrNzstaWZ3SiFsZDxfXlIlYzFEVm80XnlZeWozeVJEdlZt
RTk9SE5uRDtMXk0KellrfHZ3SUBLcmRnazdZSXNefmEoMUJMKVExM1QybmZCcFh9cHBhMVJkMD04
ak0lRFNpSmZLYXxKWHUkPG9BRXYxCnpxI0EkZGBUfkVFXktBb1cxTHNNYTRTWHV3Pyk1QiF7ZWFR
SHQtdkZ8R3hCKz50bmNTQj87VX1Lel8xZUFoc3BMRwp6Snp0OV9mTl4zflozQkdZZEp4fks1fXxr
PGMtQzU4P05JT210fWFzJVQlRG8jTVgzWHIxbXJ4Rz4lSm0oZjJIIUQKekM7TkQzR19Yajd6Jj9P
ayExZ3NOZlJ8aDZ4ZGRwNlo5Zm9MQT1Ad2FCKjIjZEFDfGZDS2F+Q1lkTl91S1J2eUM9CnojNGtG
d2cmQUwpP1gyX3Z0UDFYeGVaPX1oMWJQVXRPRTBYV0JtdW1wJXpiYzgjXlBzLTtBQnJDSTQ/IzFe
TCRfMgp6WXJEdk42WXh1aWRBKjxGZ3A8LTU9XzdKUWU8U2JfQENvcE88bmRJMzJwI35tJWY1e2Ne
V09fLWpoJG1GYTNVfk4Keks5amNaPEBubSRCND4rV3NyNlo1VFNIR31sO2BiWWVhQ3FRY3YtJCow
REtHXzwrI2I4SDdDYyFaP1U5a2BBU0spCnoycDtkRCpfLXpIX3RxUjlaTUZCT2hfeDRHYGUpI2Y0
RXVWQHJBLWIrQEZkSF5aSVh3cWxuQm19ZXtIVjExb2k+bQp6UDd0Py0qblNOT0JLVmc0LWxxdFR0
RlpXOFdTI0VAO0lJdHhZPzhgdWFPXnRsQVFlJnxSX1hxWng8aXIjQFkqdT4KenxGc1UhX2shNGU0
fi1vY3ZkLVJUYXN7a0U/XmZVPCQ+MEtPLUo/TFckTnQ2TXE7X0RlZ1g2ZVp7X2tBdDBWcE1jCno9
Z1J0djlwdX05OFFxTVoqTk42Y2Y2eFp9QjM0MSE+N1VZc0BnOyZgMTt5e0FTa3cxfTREeV5QN1Mz
P3M3Xn1+NQp6SUhuKT9iSkcwJE5XUndzbFkxYjVsTj12SVRRe0VqSGVVcjE5WWp8QmU0JkgxKz1C
cGlDNHcjbUBaPUtiRyZGV1MKeitEaERuUVRtcExZamIpbWs4dUB2RnFkMlRwT3NPYmR4LVZkKklG
SWA+PDRUcz0+VlYpZjMtdSszWlRvNSVJJHJ0CnpaeDdmMntMSTFzdGR2aT9GSn5SXzRkN3x1Mjtl
fnghSn1mbz0/eEV4MXNFcn4wakVwOTxqdTBZZjVOXm0lS3h+dwp6MEg/KiktQ098KyZfM1UrPUty
ayU0I008TDl8THFeTXRFbW48fG5RWjUhfmRfNUNGS0xqMG9KfElSOHFzJGtWPCgKelk2NEc1KmZ2
R0JFJUpFYmU9RjRvNyE4ODdPWUtleE9LXzxPbEZMRG1ZVlFMKXl+MkhmbTcpJGF5MVJ8Xl92UGY/
CnoqdyhzdDgkQ1MtU3F0RVYqbmJ9X3NubGAtSUt5I3lTTTRDa19WUFUrPnp7SCN3VHVFb2FUPzRE
JSNAZTcycmpZbQp6Y1JkWThNfWYtPUx6WURPNEY9djd0QThuRzBFfjxURmlVcEUlciNCKD49bVJP
ZXwqZUd0QD4jJnpvX3ZWe3x8RFcKenBHdVEhcU5GKWlBSHtzITQ/MkwoMUZTez9qSVBVcHp+Plk4
c1RCKF82MlY3UGh+STM+M1UqQ1pQSzBpZz88WjIqCnpeYUZNV3VFKUlkOCEhQ3p2VGdULT1CZXhC
KnhLSSZzVWB2SllNO2ckZGpAc3w5YDhjQD00TiM1b3hLWEQmSmZhNQp6an5WVWpEXjE+SkVzQ0Er
dVZHJCRTX2Y+el5hRjB4QkNBPV8zVF9qJTtVRldoJlVwfVU0cmIwe1hsLTgkSk9LUCMKej98cVpk
NDxDT35scjR4TVNfRTRhMGhOZ1hHbV8wOyF5MmlWTGdAKUVxbjkwb0ByV2BQXlF6MXlFIzhgPzBw
a08pCno4UkhTPFJnQ3dVcjVIeU1LQTM+PEl5OT1wXzlqZjZpZk8+aTNZQUxeXkc+WWRpMDA8em9h
al9OI2BSYyNOZXp+TQp6Yno7MHh3TStVODxGJmk5d1k5YTdnI1pvIXspQmxFem1Fczs+JjxgNT9w
eEZRJk8xQGBRblNMdHxMK1pxJEdpam0KemJ2QlE2YCMjMUkhWk43QC0qem0xem14QmFmeEJiZDQr
VTxOJnVCbF9Bfip2UjB1fHM9VX18anA7fjJNQ0lzN3xrCnpJR20jTWtxM1ooKVZQc1dGUVReeygz
c0VYJEEpM3A5RVJiKzA2YEVlNH16ZXpwYHFiXiUpOGVnVGZndGZMTEJCYAp6OUFrZ0owKnRfVFZ5
LTB0alFxVGZANVhWPlBUMWRUV2VNRGVAY31wJklMJCpJI3tmVVpJRDUjKUQhTSpXRHxaMEQKeiFM
NEs1cjZPKT1TcTZOYFZnNWhEZ29TKWxFWF5rMUU3SVp0PDg8fnZ6ej4xakpZVk0oVnMrY0JCJUFL
MXUjNHZeCnpea0gtfkgjYktYVXNHcGk9ZlJ6d29zJGNOIWljMiZiR2QpcWxEZkxPPjItQj0lUTIy
ZytGTSYmK2tJUHJLTT9Xegp6MVFXd3pnVTFVSF56ZFQyO0xIKnRTUGhLOV8kcktDVlYjMDsjcEsh
KCR0JUVSNnJKQkRIMzJgdWNte0ZGRDYjeX4Kemh+VG09biNuejdxST9iKHA/T1g2U1lpbkBCSyR1
MksmPD9LUUgoa0JZbTdnX2NQWWpxXzk9Y1IwMUhZeW81ejB4Cno1NlFsK002ajwyVX1HZUhLQGpB
VTFoN3lqak9nc19vTHBCfGNiUWJnV3hkanI2VHRUfGp1NFowVHghT2ZXSTV7aAp6VFZ2SWxjaCFn
KUtFOHdxUnp2ZjtJVk9JfjxibjAhaFVwYWY/K3NtP2R3KiNqdVhMMj5OY3BAd0NWKF5MOXowcl8K
eiRSekNkbjRARU9TKipOQjtCQ0d0N1U2TjhvNCRYaWlUSig1PUtkSFRsOFdnLXNSLXdMJGxIJGJ5
UCU4eDdRfXdECnp6P0Feel5aQnYxXz1SQkBTb2RIVTFPWSkxPE8rcXRoPHJYand4T1puOSEhNT11
TFE3Xl9ea3JJaGpHTU5GRSFyKwp6T257KU1VKzdOeHRhVEMwaWF0YFErK2tUKkwhPUtWNjJKTXRz
cGF9VGRPPDczKHtQXj4wdkl7UVQ8TCE+JiYzSnIKelcmJnFoLT8ycFNNaHtJZkpLcHUpdjI5T0Vi
TCZ5aCpGT3NIbmlPcXQzaCswTjAkNTQ8MHU1bXBIcH0mbGl5eUwlCnpBUEEhRyZDKDUyKSs+NVhx
UVo1Xkx2e25re3EqeXxnfV48U2t6bzczWl4yRG0tZjl4VComPjI9e0Qmd1F4fTliQAp6JXklY0w+
OTUwZCN6JXJVTjQ1ZHsoWClUfU1OUGQ9eUFZTkBgb2VzM2NiUjNeTUUhYWpmIylwWXtrRDhSJSg0
Y0wKeiNuMDVCWGYhaiklWEdBXnA0eWBpUCF8biYjNDVIUl9UQUxOWDVUdGVnZUw4WTBBNDU7ZFc8
eClQUWA/dDlGd3FiCnpLajEycS1yZksrcT1eK1pMcih7T0xOT3J5ZH0kKGVjc2BhNmloO21Pa3dy
WF5rITYtJEdnV15xJkxfbTs5KTx+cAp6SVRzVW57JmxKSm98SVA2VEZoWGVPQ0ZaYm1WfDlCRFZu
RH1XcyszQlgpV3ImWU1NYH5fSl55eDB5dENwQWcrXzsKej8qUE4pVk5Ba1JUd2M0MGx7V2NjbVJO
dUI1I0k0dVo0QE99UDJeM08hS0wjcGZ4RkVyXk9yPll2WUwxS2FFZzF4CnpDOEgjQCNGfjUpRiNV
MjkqZ1N0c1ltNDw4bSgwWlVIOyRHdmtFWCNLRE1tbiljaG88M3BYMj1SIVZFTVhnYyolSwp6UHRy
UzklZDZHSF59WW8mQEIhJiNwJi1BeCNuSnVXODNlKWRnZ25DN2NjWnsmLV9BNzhNMFpBa214LTc/
QlVaXiYKelkzQEFSZ34+aCV4VzdnJHV+T29mNj9hSF5LVlVVXlI+X1VGTDJpSTdWbylxQihHUHpX
QHJ2WDg5K1VJM2B9VWVCCnomaTlNK1AwWWFESSooO0FQfEQhPG40bW1TQWZSYSEyVDlnQCVDYDtF
ND49PVlgfEZzST5OamVyMSspPiEyU0x5KAp6UiZeS3owYnY7MClAQiQ0IVQqZE8qKjh5JFFRJmVH
OzBOLSNSJSpINTAoJF58JE1nWig5cT19NWZwZSp5MGd6SlMKeipPZGs4dkpXdC0tNSE2RHJkVSs3
b2g+NG1DMHo7SlRsa3A8bTM5Z1l2ZnBDUVdwSi1te3g8IXNANGgwITRWMmN2CnpkYGFodjVVaUgl
UzxNTnxRVUtjPDhYRTQ7PCNKMkhGZjJyWjdYKDI7UVY0YCQ3IzRFNSshQzEoLUh3QjRGdVROPgp6
N1JPOz96biV1WCROIUlyKWlSWmB7RXtCTk0mSnR+aCpgNTVHWntET0F6T2NocEk1PUFTcio/aXU/
akQ9dyU+JjUKejJSemk7LXhxc2Utb2pgUkQrN3hDcVBKclAxO09vYEZpRVh9SjdWajAhcHNIU1JW
PX4lYVE4TSkrVVlINnJefEYoCnowRDwqJmIjPkZ6T29TSGVKQ3kqWW9oRVBgI2c1UHVEKThXSz9Y
U1dtTylRUFNhK3A7VXhMeks8dmw2ekFreWUzXgp6S0crRXEtdnhoO1RYfn5JN18pZDZJSkM7WTVi
R2xQcVA0cyZEZHdTaEFRSGlRZmlwWmxoZ3JQfFFjdXJiZz0rXm8KelQzY0g/ZFNkfWJPcVVDT1Jm
VmgkamJFSTdAYjZNfGlad2hUVk94e088RDZNVyp3KjNwXnx3OyZER3lqN3EzSW4+Cnp5fnRQYWBz
QFo9MU49MU89UD5ZaXplTjspNHc+WFVtbFZ6clRwYlVAVWVlNnlnUUEhbHVZVzh4WHQ5Jjw3OVd4
cQp6MWI/emNAbnRPbk1jSCFiJEBfYUAyNl4tKktpQnpwX2MraFF4VD4jM2hHUUlwNHd2UVVmeGxB
cGZUQWNXZlN2PyEKekltWGsmSyNVKjU9ekIhOEUoITtFTTF9JHd4a0VxRjV7ZWdVUTJae3pjbXw1
ZnkkJDBXPDlaY0FXbE4rdGFlOyNyCnpxVHFyazIrPmx+YHtTRD4weXNNKEBtcHQhLXpKQ1JjWWtI
ZHthUHxPJiFOKTlBN3JmP0I8cUglMDRsWGktMW1PaQp6JkVORXZEQyppUSROUmJ7bSh8dn1lJllF
NXVjVW5KbFBmZDIyZDx6UDVaejlCKmBfRjRsPzlrM1g9Q3pjOE1oO30KenRST0pxQV9yX0MtNTVQ
I2pmbm0zdkd1RUVvMSYteVIhe2A5N1FmZWt7ZWYzOEBzUzVxczlkc2dsPT56bj02Xj9BCnowTjt7
cmlsUittUGZnJSpQMjgtVHktVj5RZzB0RzF6eXBBQm1fUihNQitadn4xTjBHNXdsKUUqV1BJTGAl
fHJqYQp6ayZ6YDdWbiYjPTVXbG5uKnBsSVdGYzE/Nj5rdnRNdi13RThxRyVKaWhBUk91Zm14bWc0
I3ZkNXNGdmYoR01eeUQKenZaN1F5eGdQdWA9d18rfk1nVnNMTjZZZE5SZXZJV1NyZm1lPCgzdHRy
VWJCKCZFNnp0a3hqcWZiQ0BgKkVpbnR7Cno5RXdyJEYxNjE2UW1RQTRuQD0oOSRfaTh6WjMyNV9V
ckFaOUJRTztjZ0VtV2t6NkZTMlAtMG44cz1nTGlsKGcxPQp6VEkpfm1EQDlRaE1OdCQqUTR+Y3s2
aCU9S01OdCQqc1RCVk9ZNlEmVTVwMmIhMDAwMDBOa3ZYWHReLTB+ZntkbWEKQUBjO2stCgpkZWx0
YSAzNTE2CnpjbVY7dDRNWHloR0otTCVnJGZBKDAwMDAwYDlyJlpsYTJ9PmUrbkJCNG1pQF8oaikp
PzRZV3hfS34jOSE/VldqJAp6NnhBS2FLUnBhUGZ8XzBMR2FkbyZncVRRSCVTc2VWdCFOXnxoXjlQ
MyNLYT5aQWVKVS1qdGIoTDNXPHVTNXY+PiQKekZya2J8cHRRcyY7MU07Qk0yTHo8MW1qVmI3YjNY
MklMazFkS2k7cGlrNTExe0A5dWomIXw/bDV5XylYbm9fWERgCnpmOFlEUS0jaHlFS3Y1SiRRNH5j
ezZoJT1LTU50JCpRNTI7SzJ7Wn0lTEBPYD83JFc7Q2ZybyYjbmx6Yms4MVAtLQp6WGtkMz45cTxm
ckdjYyNZdUp2TEdJfEUlIWtvRShDdUw5ZjJla2VOZkQpNU54WiZ1ODs1fkpCXjBlJTlrbUlyTnoK
eil4YWV7VWlIYTRWR3JTZzJEOzgmZlQ2JlN6X3Z9MmZCJTA0UjEocz8xZFB3ZnM1JSN6MlhzaTdD
KlJkQUdya1IrCnooQnk/fkFuO2VZLXd0M2xhRV5yOHp7aGd6UFJ9QVoycDkkMjJzezhoQSloek9f
ayVwZnkqO29INypeJUBGZ2Q9eAp6PVYkUTxhSD8yVVRMOW07M2dSMExBYH53SlBnP3R7OTExP2I8
dXhqVCVRRjxlRDBCZjZmU2pqdi1DTS0yZV9IKFcKejxRKHNlMHYzcjcqY1VKaCpyckpaQERsNGpt
akc/Qzt8Qm1NPG9HMz8xbyVoNWRvP290ZHZlfUQ1Nyk1SmllcCVVCnpfKGoqWUZ5bStRRGVMfH1Y
QEk9NG1zbyNAS28xM1c+VzZpZEIhRX1jJE9sKHNFUGwyS1BWXiojXkhSaD0mLWNUPAp6cyl4dW8w
S2FxPypFPWIwSTRRZ0BlTUdLa2UrNTFPSl80U1dJMzd6NyFUb193SWsoa2V7Q2ZiISpnWTEzPEFI
dFUKekd3SnZxai1TMFBhPCZMb2AjdmpkWXZ7M3o7PUVhYD8+SjhZJiZsP0F6PXl5UWorXntoYjdE
O1Y3RTZmc0NyaHdKCnpAS19KYy1uOFo0VFhUNG4pIXZeWik/TzZwVXgzZU0qdzw0bFk7WSlvQ3Mt
RDRuLXNFWUF+O0txZjRTLXMqYjhfKQp6TEVIK2xeOWwoZl8/ckNRcndFPX1YWXNxaHk1RHVjcCY3
KjRDWTlaZyptS3hjRHheVEgoKX1FRGhhP0gkUlc8VmUKelJTeGc+eXg0IzU4QG4jI0pOdWw4YitH
PXRUWS14dGc3ZDhKOXQ3R3dfQW1BKWJPS2A+VCpybS1lYGl8LXBxZER0CnpFI0ZgMEFsP0ZJYlRm
V20kNkpNPGUqP0hPUnpjYX1VKCRyfUM0eWxjI3FXZXopQXpVeDt2NnApJkxPfjJSLWZZYAp6bjEw
fC1PWWAjcyo9YDBWX0NXd0FJS0dDQ1VYPVJ8VWtNUmlMe3xOTHBAWHA4Zzg9cDxmLVZLeyM0N2kr
WnxyJD0KelJMTyk8X0A7K3ZiNlBCcFF8bk1MbXN8MGxreGB0eGlTOytvK1RSTTsyaVFgPXs9Zmo1
ZX18P09LJGpocit4Uy1CCnpLQ2xrPmdAZ1pERFc3JjwmS2x0Qnp+akstemBZYFpONXA+OUFNTzxr
Rml3O0tyJVMpJl58SFRUIW54MUx8RzJnUQp6cl5VWHp6Nzdfa2VaTmBGfDljWlM1WXM8PjZpfipE
QFhvLUBQa2RpUWFEenVmME58UCRCNTtsNGAwTEZnUHZgY2oKejJ8T3ZgKmQjZiYkbTRecmVeKCEx
R3ppaXV3TDRXVCFLRVRkRShidnh5JHxyVElgO3dBaSMlcEBjTUl3NyVTcW5ZCnooI3BIN3AyfFZp
MHlyLUEtJHpRUXdxRjVHY2J3aTBJfCNDa1k/b3NGUSFaJGZRREVxdjJEMVYpPHN+a0hPUlZAXgp6
UGxNND47TSY1RkJ+ZzRzZlZhZnpVeTJ6M0JPP0xLa3t2Tn5QMUJVVWlsbD4mZkJDMmxLTW0lfUNh
Pn1UREVJbFgKekdgWXIwbX1CKSglKlh3cDFMIT0hTWlqdjR4Zn1wfENnR2ZCdT5kMHhkQHpPaCY5
PHl5KkVIbHI9bm1PRnA1fHJ7Cnp1cSpJdSVzYXBGIzl1NE5jMT51V3kxdEloe1l7V1k2MlA5JFg+
R0RIdXJ1Jio1OF5qQnFpNjV6UlhCQnFrZShMSQp6WHh+Ni1eMHczNkVlWmI7PUMhOWF6PE53UztD
ZkI2clh7VzV3JFU2OEc2TChLdyokXz8leXxzMDxFdyN0ZlBaVj0KelJ9Xz1iNDxDUW9nY3p6eHV2
cm1NcEVZMWN1PD5oSEJsSi15ZVpsNEdXZH53QnFSaHAtRHppYjh3YG5QMGQ/Mj1DCnpKZmdnYUBq
a05APDAhJWg8MWspX01waWxBaEZQYSM4WmZnPz41e3t8NlJTOSl5fWRtcklATi00SnZMWkUhUDJp
WAp6I3Y0X3FnaWtQRHlVV0Y1djY2KVZaVXlgcV5DSkVMNTh+SUttKShDaXJ9diRBcHhhQiQzSj9G
a0NvbVRDNClvWDkKemMmKiFhRnBkekdOaFNFWVdBWGRGWSVkMEdqfnpjNHhLPSkrXklWSkk0OXBV
ITAyY3ZNVzUqeEh4VyZyaC0jTm8hCnpiVVBvcDJseiptOCkrPmZkWT1NWE9RcTc3RmJ2em5GZ3lx
IzIhaUU3NUVLaUEhcmhwNnVScFlZLTw1P3AlKXZPdQp6ZD4oJW9qYDc2WU9hZDdCY15saHs+emJX
I3pTcWhVeENgUzBhNHY5KWhkN1BgZXV7RFNQPk5NXzFFZn4mMClDNUkKeiRHQSZIK3xzZlBfPTNh
dWV+ZWljQD5RYGsra2hgZ2l3Qkk7KzVaNFAxYTkqRG9MN2p8WkxeWVd4fVUteCUybnZZCno9eEE/
bWsxVzJuYT1DbV54bT0hRHNaQHExI2g9VU5tZ0lsKWBSVno1ZW1UWjVOb1RRRz9EVEJge3lAYTxC
Z2A1Vwp6PnBWVnlwcE9zQjE+ZGVCZntubXZqSVlBVDcxbGBAUzReJXdrdnREdk90PHNmcSRjMTg3
fCRSczg3WT11OFdDTDkKekxvPk9yakYtPExBfll7YTk3YDtMTXVndWQ/fjBaRzBeTXVRezA4SFhA
R1pMNkJLOWVNI3ttbmZsKzl5LWB7YUxJCnpTMFhyMjFoNiN7emFSKjVOZGoxQFJFQyQhPCUjKXh7
JGk8IVlrSC1yQzRsYz45M2R3MHUrKXMjJCRyJURfcjZ0WQp6LXFzeyRffUQ1VSphKiQqX0wlckJs
TEc2KjRid15ULXxLcH5fcmNPVVVnOz4jNSVQSV5PYU55fTl6MFQtJFJ3UWkKemtmVXBPUE9ROTA7
QkNHdjdVNDBUbzQlKXJfJnRCaSN7TC1abFp4cDhzUi13TGh9Jk17Y1I+JjVFcnxWUWZoeiRsCnps
fWNsNUBlOUsrdTx+RlMxT1kpMTxTTGNRQEtVS1hyY2Z4e2YkMHpJbWpHNTF6YysjSlZIfE9gTlhA
cVp2cGBWUAp6RkxiTVhIb0ZMQiNRPj5QWm19JF5xMCRFd2lRanpTPFhaaDZ7aCl+UEcoNGIrMDdp
fjZTMn5QeWFsKEloR2w0VSQKelo3ZFBJKTxhWHdVaGpJKCpzKHtZeCVIc3U9Tn5RYW56WSpCQjth
b3oxK2JuQjFQV21vdyMpTzNpeSFoR0tAZGRTCno/YX5jWSg8XiNrUil5PTVMVXMrdHtxI1M5Xk1O
fXNCZjw4Ni0rLUhTY15nUnRYTnc1aD5wdyhgcTEkMVchKzNYKQp6bipNNGBYTTd9eGJMMUducEZF
M1MpWU8wYnhDZGJncSVYYGp4N1hOclAxTFdxOShjK1UtZnprRnBfVm14Rz04UUEKek1XZE5YVVok
aChUNCs4NzBRcVJaQlVaNW12MjlaZW57KUd8U2VtcGkwKGliVz0rVjs1SXZLT3s8bWlOUjJMWUYl
CnpeZnY+e2tTMTJ0M19UNl84UWx4ZyZ6Qn1ybSo7RWdxSSk2bVlHa248JGNQJkl1OSskcD1PY2Um
YVN5e1JnKmd8cQp6QGNoZUM9eytpfnFTY3RlSyRxTXZwSG1XIU8tYSFfP0pFPGNAPWE/fDJVZ1Iz
TFpjVjEtVXtHTT40VWdoX1AreGgKekI4NCN0U0xeY0hPe30hUjJlWldiaTt3Vip3UThkJXhOMEpB
enppOyhZWUUmPFIrPkw2OytOSUQlbGxMMDV0b2RWCnpGZVRSSDg7OXdhOF5efVd2YCZBcWUmZHB2
bkV1OTVsSUdEZ242SFF0NVhCdyEmKXd4WHtAWEFFalIjXnpxdEI3Pgp6aFNsO2FkVSlQOVU8TilR
e2FQcjxaKkZqdXxJMHhURUtpNmRqQk9oUUhzX1lwbCFATXEweHVJV2RxUyp8c25YbmUKenZJbW9X
MCZzVmVTWXAtMEZEcWA1XnVFVnheMUxZLVpKbEkqRVlfZXtTZnc4LTsoMzNeQGpXRT5XJXVwMShM
TFdVCnomTm5hdmI4OUBOIVBiJW5mNTBydDZEPFRaanFYOGB3VnZZYiExUDFUTkkzcDdXfkJPK0NU
YW4jMlRETkA2dmU2egp6Z0NIT2JMKStSNmdDT3t5QGd3SiFOSEdkciVMMDU/SzM3WEVfZDglVztQ
MDN8SylWQ3BXO0pqJiVgKlR9UDVnU1kKekt3YjYkTXp6fW0oaURHLVlQS14pMWhiP2tmcU0tPCkx
Y0IkZmtEbiY+XlRrWXc5PztadShqPUxNWXlle0g4NVlvCnp4Z3JGczxha3pkMDwjcHImTylKWmNQ
XkooNXs2K1Y2MSpTP0RpVDU8NDh5Ukolaks1SGd5PkVqT29RMWUqMGVZVgp6di1heUx6fXgpKWgq
JmRJRlV2MmZAVTtTOzZHNjxIUmhZQFJOcmh8P2VxTWhDbmBUKmolZnU9Py0jVUlCclhUUU4Kej53
STdBaEl0RVBpZFklWS03azdHVz42NV56NnExbThuYDkpLTQyKyFmSUV2TnhEVzIkMjErfTxDR0Iq
WFVKRD93CnpIbE5RPVBjc28odG5YOTtuMEFgTEY/NHI/OSNAQmd4NEZMeG1vJXw3ez5vdWlQMmQo
T2R9a3lhOCFmRUBBQVBYbgp6PXpiU0Nac21XQzZrKktiVUV0NzR8NE9Xaj09MFk4bVpYQDY9N0M1
QT8qdlp3U1BydiM2UXFUe3kkYVV9YlFPIW0KenVLcmtuNSEyOz9Vc2ZscEwpUzBQZSh+PldsKkpr
em12RjRqPDh7dWdBIzdgS2B9JGlvYzkjTkhOb2FhVVEhaCQmCnpkX0tEWFJ7JWZIeEV1eF5eSUpw
KD0jb2ohYjRsUzAhUFEwVkE8WWJvMFZzO2VjIU9pMXB2al8+QEQ/SX0kfGw3Wgp6SDM8fUB4ZTNZ
RUY9XlAoa2FmRDh1MzFEO0hWdU00N0lmY25CKm5LSjxMT34qajMye2pKMGtpblNgUEFYTkFhaDwK
eiN6ISZVZngmcG1lcDw3YXFCSilCU3I8NCtBcXA7dDc5bTxuZFZoU2dMO3o9SkJ6fGl3QCFRfX57
M2ZTN1o7RURSCnpNZSpPZnFaZHN9bXJjLVUpd05sVSZ2bFcxRX5+NzJ7bUFrRVBmcFJxcFJDemFR
SlB4LSgrWFNHO3VtQHB6cUE1KQp6c2IpX19YP184JEMyKDFiLTs0NzMwPiVOTzU3WXV3NmN4YWxM
WUtBcEVoVT9nVykobjFYOzE7ST1RTmElamhGcz0Kemc+MHQwZ3FSV0x0ZnR3ZDVrTVVQUUl0TkMo
PEpEWF88Pm9OPCM3P2hwbjxNU1FJcmU+Rno5N1JYYTxHQHcqcDdYCnp7XjZKZmZEfWQ5ajBDWEot
b0JWY0h2TjgyVmIpb2xWcFJlRlhWSlklLWJMMkVVITwwcXFCSzdGUDU5ZFBtWEg8TwpxMTUrXzsm
fVBZe25vU2p4JjxfX0VZVmx0ZUFtKD1VVl43dXEwMDAwPE1OVU1uTFNUWVY/NiVxZgoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzCmluZGV4
IDc0Y2QzYjJlNjZhY2QzODk2MjIyNjI1YTgxNTk4N2E5MThiMmIxYTUuLjQwYzA2OTBjZmFhZDQ4
MGMwZWM1NDEzY2U5YTY3OTYxMDlmMjAwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcwpAQCAtNTc0LDEyICs1NzQsMTIgQEAgV2Vi
SW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLlR5cGVJZCA9ICJDUFUiOwogV2ViSW5zcGVjdG9yLkNQ
VVByb2ZpbGVUeXBlLnByb3RvdHlwZSA9IHsKICAgICBnZXQgYnV0dG9uVG9vbHRpcCgpCiAgICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkaW5nID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTdG9wIHByb2ZpbGluZy4iKSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhcnQgcHJvZmls
aW5nLiIpOworICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkaW5nID8gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJTdG9wIENQVSBwcm9maWxpbmcuIikgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0
YXJ0IENQVSBwcm9maWxpbmcuIik7CiAgICAgfSwKIAogICAgIGdldCBidXR0b25TdHlsZSgpCiAg
ICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkaW5nID8gInJlY29yZC1wcm9maWxlLXN0
YXR1cy1iYXItaXRlbSBzdGF0dXMtYmFyLWl0ZW0gdG9nZ2xlZC1vbiIgOiAicmVjb3JkLXByb2Zp
bGUtc3RhdHVzLWJhci1pdGVtIHN0YXR1cy1iYXItaXRlbSI7CisgICAgICAgIHJldHVybiB0aGlz
Ll9yZWNvcmRpbmcgPyAicmVjb3JkLWNwdS1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSBzdGF0dXMt
YmFyLWl0ZW0gdG9nZ2xlZC1vbiIgOiAicmVjb3JkLWNwdS1wcm9maWxlLXN0YXR1cy1iYXItaXRl
bSBzdGF0dXMtYmFyLWl0ZW0iOwogICAgIH0sCiAKICAgICBidXR0b25DbGlja2VkOiBmdW5jdGlv
bigpCkBAIC01ODcsOSArNTg3LDkgQEAgV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gIXRoaXMuX3JlY29yZGluZzsKIAog
ICAgICAgICBpZiAodGhpcy5fcmVjb3JkaW5nKQotICAgICAgICAgICAgUHJvZmlsZXJBZ2VudC5z
dGFydCgpOworICAgICAgICAgICAgUHJvZmlsZXJBZ2VudC5zdGFydChXZWJJbnNwZWN0b3IuQ1BV
UHJvZmlsZVR5cGUuVHlwZUlkKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgUHJvZmlsZXJB
Z2VudC5zdG9wKCk7CisgICAgICAgICAgICBQcm9maWxlckFnZW50LnN0b3AoV2ViSW5zcGVjdG9y
LkNQVVByb2ZpbGVUeXBlLlR5cGVJZCk7CiAgICAgfSwKIAogICAgIGdldCB3ZWxjb21lTWVzc2Fn
ZSgpCkBAIC02MDUsMTMgKzYwNSwxMyBAQCBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUucHJv
dG90eXBlID0gewogICAgIHN0YXJ0UmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24oKQogICAgIHsK
ICAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gdHJ1ZTsKLSAgICAgICAgUHJvZmlsZXJBZ2VudC5z
dGFydCgpOworICAgICAgICBQcm9maWxlckFnZW50LnN0YXJ0KFdlYkluc3BlY3Rvci5DUFVQcm9m
aWxlVHlwZS5UeXBlSWQpOwogICAgIH0sCiAKICAgICBzdG9wUmVjb3JkaW5nUHJvZmlsZTogZnVu
Y3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gZmFsc2U7Ci0gICAgICAg
IFByb2ZpbGVyQWdlbnQuc3RvcCgpOworICAgICAgICBQcm9maWxlckFnZW50LnN0b3AoV2ViSW5z
cGVjdG9yLkNQVVByb2ZpbGVUeXBlLlR5cGVJZCk7CiAgICAgfSwKIAogICAgIHNldFJlY29yZGlu
Z1Byb2ZpbGU6IGZ1bmN0aW9uKGlzUHJvZmlsaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCmluZGV4IDhkOGE5N2EwMTY4YmQ5
YjU1MzI0YmRlMTc3YTcyNzVhZWJhMGY5NGEuLmJhZmRjOTVhZDBiODg0OWM3MTg0MTY5N2UyNGJl
ZjQ2YjE3OWMyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUHJvZmlsZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Byb2ZpbGVzUGFuZWwuanMKQEAgLTEzNSw2ICsxMzUsNyBAQCBXZWJJbnNwZWN0b3IuUHJv
ZmlsZXNQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLl9yZXNldCgpOwogCiAgICAgdGhpcy5f
cmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlKCkpOwor
ICAgIHRoaXMuX3JlZ2lzdGVyUHJvZmlsZVR5cGUobmV3IFdlYkluc3BlY3Rvci5DU1NTZWxlY3Rv
clByb2ZpbGVUeXBlKCkpOwogICAgIGlmIChDYXBhYmlsaXRpZXMuaGVhcFByb2ZpbGVyUHJlc2Vu
dCkKICAgICAgICAgdGhpcy5fcmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLkRl
dGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZSgpKTsKIApAQCAtMjg2LDEyICsyODcsOCBAQCBXZWJJ
bnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfYWRkUHJvZmlsZUhl
YWRlcjogZnVuY3Rpb24ocHJvZmlsZSkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLmhhc1RlbXBv
cmFyeVByb2ZpbGUocHJvZmlsZS50eXBlSWQpKSB7Ci0gICAgICAgICAgICBpZiAocHJvZmlsZS50
eXBlSWQgPT09IFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5UeXBlSWQpCi0gICAgICAgICAg
ICAgICAgdGhpcy5fcmVtb3ZlUHJvZmlsZUhlYWRlcih0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQ
cm9maWxlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVQ
cm9maWxlSGVhZGVyKHRoaXMuX3RlbXBvcmFyeVRha2luZ1NuYXBzaG90KTsKLSAgICAgICAgfQor
ICAgICAgICBpZiAodGhpcy5oYXNUZW1wb3JhcnlQcm9maWxlKHByb2ZpbGUudHlwZUlkKSkKKyAg
ICAgICAgICAgIHRoaXMuX3JlbW92ZVByb2ZpbGVIZWFkZXIodGhpc1t0aGlzLl90ZW1wb3JhcnlS
ZWNvcmRpbmdQcm9maWxlRmllbGROYW1lKHByb2ZpbGUudHlwZUlkKV0pOwogCiAgICAgICAgIHZh
ciB0eXBlSWQgPSBwcm9maWxlLnR5cGVJZDsKICAgICAgICAgdmFyIHByb2ZpbGVUeXBlID0gdGhp
cy5nZXRQcm9maWxlVHlwZSh0eXBlSWQpOwpAQCAtODI0LDIzICs4MjEsMzAgQEAgV2ViSW5zcGVj
dG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnByb2ZpbGVWaWV3
U3RhdHVzQmFySXRlbXNDb250YWluZXIuc3R5bGUubGVmdCA9IE1hdGgubWF4KDYgKiAzMSwgd2lk
dGgpICsgInB4IjsKICAgICB9LAogCi0gICAgX3NldFJlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9u
KGlzUHJvZmlsaW5nKQorICAgIF90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlRmllbGROYW1lOiBm
dW5jdGlvbihwcm9maWxlVHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiAiX3RlbXBvcmFyeVJl
Y29yZGluZ1Byb2ZpbGUiICsgcHJvZmlsZVR5cGU7CisgICAgfSwKKworICAgIF9zZXRSZWNvcmRp
bmdQcm9maWxlOiBmdW5jdGlvbihwcm9maWxlVHlwZSwgaXNQcm9maWxpbmcpCiAgICAgewotICAg
ICAgICB0aGlzLmdldFByb2ZpbGVUeXBlKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5UeXBl
SWQpLnNldFJlY29yZGluZ1Byb2ZpbGUoaXNQcm9maWxpbmcpOwotICAgICAgICBpZiAodGhpcy5o
YXNUZW1wb3JhcnlQcm9maWxlKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5UeXBlSWQpICE9
PSBpc1Byb2ZpbGluZykgewotICAgICAgICAgICAgaWYgKCF0aGlzLl90ZW1wb3JhcnlSZWNvcmRp
bmdQcm9maWxlKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fdGVtcG9yYXJ5UmVjb3JkaW5nUHJv
ZmlsZSA9IHsKLSAgICAgICAgICAgICAgICAgICAgdHlwZUlkOiBXZWJJbnNwZWN0b3IuQ1BVUHJv
ZmlsZVR5cGUuVHlwZUlkLAorICAgICAgICB0aGlzLmdldFByb2ZpbGVUeXBlKHByb2ZpbGVUeXBl
KS5zZXRSZWNvcmRpbmdQcm9maWxlKGlzUHJvZmlsaW5nKTsKKyAgICAgICAgaWYgKHRoaXMuaGFz
VGVtcG9yYXJ5UHJvZmlsZShwcm9maWxlVHlwZSkgIT09IGlzUHJvZmlsaW5nKSB7CisgICAgICAg
ICAgICB2YXIgdGVtcFByb2ZpbGVGaWVsZE5hbWUgPSB0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQ
cm9maWxlRmllbGROYW1lKHByb2ZpbGVUeXBlKTsKKyAgICAgICAgICAgIGlmICghdGhpc1t0ZW1w
UHJvZmlsZUZpZWxkTmFtZV0pIHsKKyAgICAgICAgICAgICAgICB0aGlzW3RlbXBQcm9maWxlRmll
bGROYW1lXSA9IHsKKyAgICAgICAgICAgICAgICAgICAgdHlwZUlkOiBwcm9maWxlVHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjb3JkaW5n
4oCmIiksCiAgICAgICAgICAgICAgICAgICAgIHVpZDogLTEsCiAgICAgICAgICAgICAgICAgICAg
IGlzVGVtcG9yYXJ5OiB0cnVlCiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmIChpc1Byb2ZpbGluZykgewotICAgICAgICAgICAgICAgIHRoaXMuX2FkZFBy
b2ZpbGVIZWFkZXIodGhpcy5fdGVtcG9yYXJ5UmVjb3JkaW5nUHJvZmlsZSk7Ci0gICAgICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLnVzZXJNZXRyaWNzLlByb2ZpbGVzQ1BVUHJvZmlsZVRha2VuLnJl
Y29yZCgpOworICAgICAgICAgICAgICAgIHRoaXMuX2FkZFByb2ZpbGVIZWFkZXIodGhpc1t0ZW1w
UHJvZmlsZUZpZWxkTmFtZV0pOworICAgICAgICAgICAgICAgIGlmIChwcm9maWxlVHlwZSA9PT0g
V2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLlR5cGVJZCkKKyAgICAgICAgICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLnVzZXJNZXRyaWNzLlByb2ZpbGVzQ1BVUHJvZmlsZVRha2VuLnJlY29yZCgp
OwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlUHJvZmls
ZUhlYWRlcih0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlKTsKKyAgICAgICAgICAgICAg
ICB0aGlzLl9yZW1vdmVQcm9maWxlSGVhZGVyKHRoaXNbdGVtcFByb2ZpbGVGaWVsZE5hbWVdKTsK
ICAgICAgICAgfQogICAgICAgICB0aGlzLnVwZGF0ZVByb2ZpbGVUeXBlQnV0dG9ucygpOwogICAg
IH0sCkBAIC04NDgsMTUgKzg1MiwxNiBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgdGFrZUhlYXBTbmFwc2hvdDogZnVuY3Rpb24oKQogICAgIHsKICAgICAg
ICAgaWYgKCF0aGlzLmhhc1RlbXBvcmFyeVByb2ZpbGUoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVh
cHNob3RQcm9maWxlVHlwZS5UeXBlSWQpKSB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX3RlbXBv
cmFyeVRha2luZ1NuYXBzaG90KSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fdGVtcG9yYXJ5VGFr
aW5nU25hcHNob3QgPSB7CisgICAgICAgICAgICB2YXIgdGVtcFByb2ZpbGVGaWVsZE5hbWUgPSB0
aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlRmllbGROYW1lKFdlYkluc3BlY3Rvci5EZXRh
aWxlZEhlYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkKTsKKyAgICAgICAgICAgIGlmICghdGhpc1t0
ZW1wUHJvZmlsZUZpZWxkTmFtZV0pIHsKKyAgICAgICAgICAgICAgICB0aGlzW3RlbXBQcm9maWxl
RmllbGROYW1lXSA9IHsKICAgICAgICAgICAgICAgICAgICAgdHlwZUlkOiBXZWJJbnNwZWN0b3Iu
RGV0YWlsZWRIZWFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCwKICAgICAgICAgICAgICAgICAgICAg
dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU25hcHNob3R0aW5n4oCmIiksCiAgICAgICAg
ICAgICAgICAgICAgIHVpZDogLTEsCiAgICAgICAgICAgICAgICAgICAgIGlzVGVtcG9yYXJ5OiB0
cnVlCiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMu
X2FkZFByb2ZpbGVIZWFkZXIodGhpcy5fdGVtcG9yYXJ5VGFraW5nU25hcHNob3QpOworICAgICAg
ICAgICAgdGhpcy5fYWRkUHJvZmlsZUhlYWRlcih0aGlzW3RlbXBQcm9maWxlRmllbGROYW1lXSk7
CiAgICAgICAgIH0KICAgICAgICAgUHJvZmlsZXJBZ2VudC50YWtlSGVhcFNuYXBzaG90KCk7CiAg
ICAgICAgIFdlYkluc3BlY3Rvci51c2VyTWV0cmljcy5Qcm9maWxlc0hlYXBQcm9maWxlVGFrZW4u
cmVjb3JkKCk7CkBAIC04NjUsMTAgKzg3MCwxMSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgX3JlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzOiBmdW5jdGlv
bihkb25lLCB0b3RhbCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLmhhc1RlbXBvcmFyeVByb2Zp
bGUoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZS5UeXBlSWQpKSB7Ci0g
ICAgICAgICAgICB0aGlzLl90ZW1wb3JhcnlUYWtpbmdTbmFwc2hvdC5zaWRlYmFyRWxlbWVudC5z
dWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJS4yZiUlIiwgKGRvbmUgLyB0b3RhbCkg
KiAxMDApOwotICAgICAgICAgICAgdGhpcy5fdGVtcG9yYXJ5VGFraW5nU25hcHNob3Quc2lkZWJh
ckVsZW1lbnQud2FpdCA9IHRydWU7CisgICAgICAgICAgICB2YXIgdGVtcFNuYXBzaG90ID0gdGhp
c1t0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlRmllbGROYW1lKFdlYkluc3BlY3Rvci5E
ZXRhaWxlZEhlYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkKV07CisgICAgICAgICAgICB0ZW1wU25h
cHNob3Quc2lkZWJhckVsZW1lbnQuc3VidGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiUu
MmYlJSIsIChkb25lIC8gdG90YWwpICogMTAwKTsKKyAgICAgICAgICAgIHRlbXBTbmFwc2hvdC5z
aWRlYmFyRWxlbWVudC53YWl0ID0gdHJ1ZTsKICAgICAgICAgICAgIGlmIChkb25lID49IHRvdGFs
KQotICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZVByb2ZpbGVIZWFkZXIodGhpcy5fdGVtcG9y
YXJ5VGFraW5nU25hcHNob3QpOworICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZVByb2ZpbGVI
ZWFkZXIodGVtcFNuYXBzaG90KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTkwMiw5ICs5MDgs
OSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy5fcHJvZmlsZXIuX2ZpbmlzaEhlYXBTbmFwc2hvdCh1aWQpOwogICAgIH0sCiAKLSAg
ICBzZXRSZWNvcmRpbmdQcm9maWxlOiBmdW5jdGlvbihpc1Byb2ZpbGluZykKKyAgICBzZXRSZWNv
cmRpbmdQcm9maWxlOiBmdW5jdGlvbihwcm9maWxlVHlwZSwgaXNQcm9maWxpbmcpCiAgICAgewot
ICAgICAgICB0aGlzLl9wcm9maWxlci5fc2V0UmVjb3JkaW5nUHJvZmlsZShpc1Byb2ZpbGluZyk7
CisgICAgICAgIHRoaXMuX3Byb2ZpbGVyLl9zZXRSZWNvcmRpbmdQcm9maWxlKHByb2ZpbGVUeXBl
LCBpc1Byb2ZpbGluZyk7CiAgICAgfSwKIAogICAgIHJlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNz
OiBmdW5jdGlvbihkb25lLCB0b3RhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvV2ViS2l0LnFyYwppbmRleCA1NDVmMWRiZTdlOTIzYmRmMDNiZTlhYzQ2NjQ2MjM1OGQz
NmY1N2UyLi44MmE1MmQ5MWIzNzQ0ZjlmMTZkYTRhZjQ3MTMxMWY3ZDFjYjg3MzYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC0yOSw2ICsy
OSw3IEBACiAgICAgPGZpbGU+Q29va2llc1RhYmxlLmpzPC9maWxlPgogICAgIDxmaWxlPkNTU0Nv
bXBsZXRpb25zLmpzPC9maWxlPgogICAgIDxmaWxlPkNTU0tleXdvcmRDb21wbGV0aW9ucy5qczwv
ZmlsZT4KKyAgICA8ZmlsZT5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LmpzPC9maWxlPgogICAgIDxm
aWxlPkNTU1N0eWxlTW9kZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+RGF0YWJhc2UuanM8L2ZpbGU+
CiAgICAgPGZpbGU+RGF0YWJhc2VRdWVyeVZpZXcuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKaW5kZXggZGE1Y2EzYjhmOTNl
OGQzYzc0MzYwYjk3ODM1NTdkMjU1YWExYjZhZC4uNGVkZGYwZjdhMWU5MTNiZDY5ODg5NzVhNmQx
MTY1ZTJlODBiZDIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmNzcwpAQCAtMjUwNSwxNSArMjUwNSwyMyBAQCBib2R5LnBsYXRmb3JtLW1h
YyAjZHJhd2VyLXN0YXR1cy1iYXIgLnNlYXJjaC1zdGF0dXMtYmFyLXByb2dyZXNzIHsKICAgICB3
aGl0ZS1zcGFjZTogcHJlOwogfQogCi0ucmVjb3JkLXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtIC5n
bHlwaCB7CisucmVjb3JkLWNwdS1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSAuZ2x5cGggewogICAg
IC13ZWJraXQtbWFzay1wb3NpdGlvbjogLTI4OHB4IDA7CiB9CiAKLS5yZWNvcmQtcHJvZmlsZS1z
dGF0dXMtYmFyLWl0ZW0udG9nZ2xlZC1vbiAuZ2x5cGggeworLnJlY29yZC1jcHUtcHJvZmlsZS1z
dGF0dXMtYmFyLWl0ZW0udG9nZ2xlZC1vbiAuZ2x5cGggewogICAgIC13ZWJraXQtbWFzay1wb3Np
dGlvbjogLTI4OHB4IC0yNHB4OwogICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMTYsIDAsIDAp
ICFpbXBvcnRhbnQ7CiB9CiAKKy5yZWNvcmQtY3NzLXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtIC5n
bHlwaCB7CisgICAgLXdlYmtpdC1tYXNrLXBvc2l0aW9uOiAtMTI4cHggLTQ4cHg7Cit9CisKKy5y
ZWNvcmQtY3NzLXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtLnRvZ2dsZWQtb24gLmdseXBoIHsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjE2LCAwLCAwKSAhaW1wb3J0YW50OworfQorCiAuc3Rv
cmFnZS1lbXB0eS12aWV3LCAuc3RvcmFnZS12aWV3IC5zdG9yYWdlLXRhYmxlLWVycm9yIHsKICAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgdG9wOiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggMjM0ZWE3ZGJjY2YzM2Rj
NDhjMWZkODJlNjhiYjQ4MGFjYTFjZWQ0Ny4uZTE4MzhlMDE2ODI0N2M5ODI5ZjIwNDkxZTQwNjU2
NDA1Zjk3OTI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5odG1sCkBAIC0xNTQsNiArMTU0LDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJCb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRv
cERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJQcm9maWxlVmlldy5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUGFy
dGlhbFF1aWNrU29ydC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iSGVhcFNuYXBzaG90LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJIZWFwU25hcHNob3RQcm94eS5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120545</attachid>
            <date>2011-12-26 03:44:23 -0800</date>
            <delta_ts>2011-12-28 09:39:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74004-20111226154417.patch</filename>
            <type>text/plain</type>
            <size>48253</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQyYTlkYjllYzM1NWEy
Zjc4MTI0N2E1MGYzYWNhNDcxY2JiN2RiMi4uN2FmOGIwMTEzNmE5MDA3ZjQ1NTA5ODBhNzYzZGNk
NDYxOWNmZTE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDExLTEyLTIzICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogSW1wbGVtZW50IENTUyBzZWxlY3RvciBwcm9maWxlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQwMDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uIG9mIENTUyBz
ZWxlY3RvciBwcm9maWxlciBtZWFzdXJlcyB0aGUgdG90YWwgdGltZSByZXF1aXJlZCB0byBtYXRj
aCBhIGNlcnRhaW4gc2VsZWN0b3IKKyAgICAgICAgYWdhaW5zdCBET00gbm9kZXMgYW5kIGFwcGx5
IHRoZSBzdHlsZSBkZWNsYXJhdGlvbiBwcm9wZXJ0aWVzIHRvIHRoZSBwYXJ0aWN1bGFyIGVsZW1l
bnQsCisgICAgICAgIGFzIHdlbGwgYXMgdGhlIG51bWJlciBvZiBzZWxlY3RvciBtYXRjaCBydW5z
IChjaGVja3MgaWYgdGhlIHNlbGVjdG9yIGlzIGFwcGxpY2FibGUgdG8gdGhlIG5vZGUpCisgICAg
ICAgIGFuZCBhY3R1YWwgbWF0Y2hlcyAoaS5lLiB0aGUgbnVtYmVyIG9mIG5vZGVzIHdoaWNoIG1h
dGNoZWQgdGhlIHNlbGVjdG9yKSBmb3IgdXNlcnMgdG8gdW5kZXJzdGFuZCB0aGF0CisgICAgICAg
IHRoZXJlIGlzIGFuICJhdHRlbXB0ZWQgYnV0IG5vdCBtYXRjaGVkIiBvdmVyaGVhZCBjb250cmli
dXRpbmcgdG8gdGhlIFRvdGFsIHNlbGVjdG9yIHByb2ZpbGUgdGltZS4KKyAgICAgICAgTXVsdGlw
bGUgc2VsZWN0b3JzIHdpdGggdGhlIHNhbWUgc2VsZWN0b3JUZXh0IGFyZSBjb2FsZXNjZWQgaW50
byBhIHNpbmdsZSByZWNvcmQuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL2NvbXBp
bGUtZnJvbnQtZW5kLnNoOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NTU2VsZWN0
b3JQcm9maWxlVmlldy5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0
b3JEYXRhR3JpZE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yRGF0YUdy
aWROb2RlLnByb3RvdHlwZS5nZXQgcmF3RGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NT
U2VsZWN0b3JEYXRhR3JpZE5vZGUucHJvdG90eXBlLmNyZWF0ZUNlbGwpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLmdldCBzdGF0dXNCYXJJdGVtcyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuZ2V0
IHByb2ZpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcu
cHJvdG90eXBlLnNldCBwcm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3Rv
clByb2ZpbGVWaWV3LnByb3RvdHlwZS53aWxsSGlkZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuX2NyZWF0ZVByb2ZpbGVOb2Rlcyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUucmVm
cmVzaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90
b3R5cGUucmVmcmVzaFZpc2libGVEYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxl
Y3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZS5yZWZyZXNoU2hvd0FzUGVyY2VudHMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLnNlYXJjaENh
bmNlbGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnBy
b3RvdHlwZS5wZXJmb3JtU2VhcmNoLm1hdGNoZXNRdWVyeSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUucGVyZm9ybVNlYXJjaCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuanVtcFRv
Rmlyc3RTZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJv
ZmlsZVZpZXcucHJvdG90eXBlLmp1bXBUb0xhc3RTZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLmp1bXBUb05leHRTZWFy
Y2hSZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcu
cHJvdG90eXBlLmp1bXBUb1ByZXZpb3VzU2VhcmNoUmVzdWx0KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZS5zaG93aW5nRmlyc3RTZWFyY2hS
ZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJv
dG90eXBlLnNob3dpbmdMYXN0U2VhcmNoUmVzdWx0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
U1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZS5fanVtcFRvU2VhcmNoUmVzdWx0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZS5fc29y
dERhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJv
dG90eXBlLl9zb3J0UHJvZmlsZS5nZXQgc2VsZWN0b3JDb21wYXJhdG9yKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZS5fc29ydFByb2ZpbGUu
dGltZUNvbXBhcmF0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmls
ZVZpZXcucHJvdG90eXBlLl9zb3J0UHJvZmlsZS5oaXRzQ29tcGFyYXRvcik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuX3NvcnRQcm9maWxl
Lm1hdGNoZXNDb21wYXJhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclBy
b2ZpbGVWaWV3LnByb3RvdHlwZS5fc29ydFByb2ZpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVj
dG9yUHJvZmlsZVR5cGUucHJvdG90eXBlLmdldCBidXR0b25Ub29sdGlwKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLnByb3RvdHlwZS5nZXQgYnV0dG9uU3R5
bGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUucHJvdG90
eXBlLmJ1dHRvbkNsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJv
ZmlsZVR5cGUucHJvdG90eXBlLmdldCB3ZWxjb21lTWVzc2FnZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUucHJvdG90eXBlLmlzUmVjb3JkaW5n
UHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5w
cm90b3R5cGUuc2V0UmVjb3JkaW5nUHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NT
U2VsZWN0b3JQcm9maWxlVHlwZS5wcm90b3R5cGUuc3RhcnRSZWNvcmRpbmdQcm9maWxlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLnByb3RvdHlwZS5zdG9w
UmVjb3JkaW5nUHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9m
aWxlVHlwZS5wcm90b3R5cGUuY3JlYXRlU2lkZWJhclRyZWVFbGVtZW50Rm9yUHJvZmlsZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5wcm90b3R5cGUuY3Jl
YXRlVmlldyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvc3RhdHVzYmFy
QnV0dG9uR2x5cGhzLnBuZzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVz
UGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUucHJvdG90eXBlLnJl
c2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5fcmVz
ZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLmFkZFBy
b2ZpbGVIZWFkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90
eXBlLl9yZW1vdmVUZW1wb3JhcnlQcm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9m
aWxlc1BhbmVsLnByb3RvdHlwZS5zZXRSZWNvcmRpbmdQcm9maWxlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS50YWtlSGVhcFNuYXBzaG90KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5fcmVwb3J0SGVhcFNuYXBz
aG90UHJvZ3Jlc3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVyRGlzcGF0Y2hlci5w
cm90b3R5cGUuYWRkUHJvZmlsZUhlYWRlcik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNz
czoKKyAgICAgICAgKC5yZWNvcmQtY3B1LXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtLnRvZ2dsZWQt
b24gLmdseXBoLCAucmVjb3JkLXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtLnRvZ2dsZWQtb24gLmds
eXBoKToKKyAgICAgICAgKC5yZWNvcmQtY3NzLXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtIC5nbHlw
aCk6CisgICAgICAgICgucmVjb3JkLWNzcy1wcm9maWxlLXN0YXR1cy1iYXItaXRlbS50b2dnbGVk
LW9uIC5nbHlwaCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRt
bDoKKwogMjAxMS0xMi0yNiAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBiYWQgbWVyZ2UgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkNvcmUv
RW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDAyMDQ4YTgyYjRiZGZmMTUw
OTMxN2Q1YWRmNGY4NTMxMTRlNDk2ZTQuLmQzOWQ2ZDIyNTJiNDFhYjI4NTdmOGEzYjJlMDhkNTFj
ZmU1NWFlNWEgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNDEyCnpjbVhAR21GM2xibUpM
JWhNMXZXRTg1RHJubUI5eXlvZiQkSHsyNzhLOClfKXhsbzgjV3I2SXdpb1gxZVlQe2ZlVwp6a09T
MjIzXlZ7QE9lJkN7JTgoM3slViNLPmR+dUtEPFVIZE54S1M5Z29CdFVuWG9gOTtXQ0FyNUdia357
MHU4ZVQKelZrSEtUJEBBMz1IXjs/SjxET2lWIThKTEpsYUpHdkFyWXU3bklVN2NXMWFxRmhmSjJ1
LSFrVD9PK0dWKWdCZkk1Cno7WihgVjlFYkhiX3gxbmJvR2Rqe2hgcDJ7NGBsRzx8MSklOT85RzhR
M3o7U3QmNjFrVEhkNiNoYCVFc0YhP0YzKQp6Pj9sQG9tPi1JUD9ubX42cHVnemtKND1ObyticmIz
dEE9bHghRGc5LU8wMUxqRWFpWkQ3YHN0WXhNZXI8RSEkS0EKRTBJWTNyPT5QeCMKCmRlbHRhIDU4
CnpjbVYtQTBMQjA2elhaVXcxaEFBU2xhTUoydm5WTyMzJHQhRSskZ2g8VXpROEFjeCM+fXZ1dSsx
M0E1XilJMENicgpRcEpEfkdzSEdZT3Z1TFk9YlJhSnFERjZUZgoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRl
eCA3NmM4OWNkZTUyYmI1NjE0NTIzMTg0MDNkODI5YjViMjQ5MWVkN2YzLi5iZTY1MjMzYjY2ZmU3
YjU0MTIyYTQwNzE0NzdiYzczYWJhODZhYmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02Mzg5LDYg
KzYzODksNyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llc1RhYmxl
LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU0NvbXBsZXRpb25zLmpz
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU0tleXdvcmRDb21wbGV0aW9u
cy5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTZWxlY3RvclByb2Zp
bGVWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9k
ZWwuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2UuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VRdWVyeVZpZXcuanMnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBjZDQ0
YTk3NzM3ZWI2YWM3OTdiYWU5YTFiZGYzNjFhZGUxODg1ZTg2Li4zYjI1ZDcyMjM4NmVmZjZiNmFm
MjZhNzBjYzc4ZDRjNmJhNjEzNGVhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNzE1MzMsNiArNzE1MzMsMTAgQEAKIAkJCQkJPgogCQkJCTwv
RmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1l
bmRcQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8
RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcQ1NTU3R5bGVN
b2RlbC5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9jb21waWxlLWZyb250LWVuZC5zaAppbmRleCBhMjdhMzYyMWRkNjA1ZDk0MTU3YWRjY2Q0YjI3
YzAyNzRjOGE4MzE0Li4zNWNiOGY5OWU5MDc2OTZiODdlNjBhNDA3NzZhODlmMTRjOTZhMTZjIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQuc2gK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoCkBAIC0x
OTIsNiArMTkyLDcgQEAgamF2YSAtamFyIH4vY2xvc3VyZS9jb21waWxlci5qYXIgLS1zdW1tYXJ5
X2RldGFpbF9sZXZlbCAzIC0tY29tcGlsYXRpb25fbGV2ZWwgU0kKICMgVG8gYmUgY29tcGlsZWQu
Li4KICMgCiAjIFtQcm9maWxlcl0KKyMgQ1NTU2VsZWN0b3JQcm9maWxlVmlldwogIyBCb3R0b21V
cFByb2ZpbGVEYXRhR3JpZFRyZWUKICMgRGV0YWlsZWRIZWFwc2hvdEdyaWROb2RlcwogIyBEZXRh
aWxlZEhlYXBzaG90VmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9DU1NTZWxlY3RvclByb2ZpbGVWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9DU1NTZWxlY3RvclByb2ZpbGVWaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0YjQ4
OTQ1NTgzNmQxNzJhZTg3Zjg5YmEyZGZkOWZkMmIwYTk0YjUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1NlbGVjdG9yUHJvZmlsZVZpZXcu
anMKQEAgLTAsMCArMSw1NzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWROb2RlCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVW
aWV3fSBwcm9maWxlVmlldworICovCitXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JEYXRhR3JpZE5v
ZGUgPSBmdW5jdGlvbihwcm9maWxlVmlldywgZGF0YSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuRGF0
YUdyaWROb2RlLmNhbGwodGhpcywgZGF0YSwgZmFsc2UpOworICAgIHRoaXMuX3Byb2ZpbGVWaWV3
ID0gcHJvZmlsZVZpZXc7Cit9CisKK1dlYkluc3BlY3Rvci5DU1NTZWxlY3RvckRhdGFHcmlkTm9k
ZS5wcm90b3R5cGUgPSB7CisgICAgZ2V0IGRhdGEoKQorICAgIHsKKyAgICAgICAgdmFyIGRhdGEg
PSB7fTsKKyAgICAgICAgZGF0YS5zZWxlY3RvciA9IHRoaXMuX2RhdGEuc2VsZWN0b3I7CisKKyAg
ICAgICAgaWYgKHRoaXMuX3Byb2ZpbGVWaWV3LnNob3dUaW1lQXNQZXJjZW50LmdldCgpKQorICAg
ICAgICAgICAgZGF0YS50aW1lID0gTnVtYmVyKHRoaXMuX2RhdGEudGltZVBlcmNlbnQpLnRvRml4
ZWQoMSkgKyAiJSI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRhdGEudGltZSA9IE51bWJl
ci5zZWNvbmRzVG9TdHJpbmcodGhpcy5fZGF0YS50aW1lIC8gMTAwMCwgdHJ1ZSk7CisKKyAgICAg
ICAgaWYgKHRoaXMuX3Byb2ZpbGVWaWV3LnNob3dNYXRjaGVzQXNQZXJjZW50LmdldCgpKQorICAg
ICAgICAgICAgZGF0YS5tYXRjaGVzID0gTnVtYmVyKHRoaXMuX2RhdGEubWF0Y2hlc1BlcmNlbnQp
LnRvRml4ZWQoMSkgKyAiJSI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRhdGEubWF0Y2hl
cyA9IHRoaXMuX2RhdGEubWF0Y2hDb3VudDsKKworICAgICAgICBkYXRhLmhpdHMgPSB0aGlzLl9k
YXRhLmhpdENvdW50OworICAgICAgICByZXR1cm4gZGF0YTsKKyAgICB9LAorCisgICAgZ2V0IHJh
d0RhdGEoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7CisgICAgfSwKKworICAg
IGNyZWF0ZUNlbGw6IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIpCisgICAgeworICAgICAgICB2
YXIgY2VsbCA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmNyZWF0ZUNlbGwu
Y2FsbCh0aGlzLCBjb2x1bW5JZGVudGlmaWVyKTsKKworICAgICAgICBpZiAoY29sdW1uSWRlbnRp
ZmllciA9PT0gInNlbGVjdG9yIiAmJiB0aGlzLl9zZWFyY2hNYXRjaGVkU2VsZWN0b3JDb2x1bW4K
KyAgICAgICAgICAgICAgICB8fCBjb2x1bW5JZGVudGlmaWVyID09PSAidGltZSIgJiYgdGhpcy5f
c2VhcmNoTWF0Y2hlZFRvdGFsQ29sdW1uCisgICAgICAgICAgICAgICAgfHwgY29sdW1uSWRlbnRp
ZmllciA9PT0gIm1hdGNoZXMiICYmIHRoaXMuX3NlYXJjaE1hdGNoZWRNYXRjaGVzQ29sdW1uCisg
ICAgICAgICAgICAgICAgfHwgY29sdW1uSWRlbnRpZmllciA9PT0gImhpdHMiICYmIHRoaXMuX3Nl
YXJjaE1hdGNoZWRIaXRzQ29sdW1uKQorICAgICAgICAgICAgY2VsbC5hZGRTdHlsZUNsYXNzKCJo
aWdobGlnaHQiKTsKKworICAgICAgICByZXR1cm4gY2VsbDsKKyAgICB9Cit9CisKK1dlYkluc3Bl
Y3Rvci5DU1NTZWxlY3RvckRhdGFHcmlkTm9kZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGU7CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisg
KiBAZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlldworICogQHBhcmFtIHtDU1NBZ2VudC5TZWxlY3Rv
clByb2ZpbGV9IHByb2ZpbGUKKyAqLworV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZp
ZXcgPSBmdW5jdGlvbihwcm9maWxlKQoreworICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhp
cyk7CisKKyAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygicHJvZmlsZS12aWV3Iik7CisK
KyAgICB0aGlzLnNob3dUaW1lQXNQZXJjZW50ID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNyZWF0
ZVNldHRpbmcoInNlbGVjdG9yUHJvZmlsZXJTaG93VGltZUFzUGVyY2VudCIsIHRydWUpOworICAg
IHRoaXMuc2hvd01hdGNoZXNBc1BlcmNlbnQgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY3JlYXRl
U2V0dGluZygic2VsZWN0b3JQcm9maWxlclNob3dNYXRjaGVzQXNQZXJjZW50IiwgdHJ1ZSk7CisK
KyAgICB2YXIgY29sdW1ucyA9IHsgInNlbGVjdG9yIjogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJTZWxlY3RvciIpLCB3aWR0aDogIjY1MHB4Iiwgc29ydGFibGU6IHRydWUgfSwKKyAg
ICAgICAgICAgICAgICAgICAgInRpbWUiOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlRvdGFsIiksIHdpZHRoOiAiNzJweCIsIHNvcnQ6ICJkZXNjZW5kaW5nIiwgc29ydGFibGU6IHRy
dWUgfSwKKyAgICAgICAgICAgICAgICAgICAgIm1hdGNoZXMiOiB7IHRpdGxlOiBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIk1hdGNoZXMiKSwgd2lkdGg6ICI3MnB4Iiwgc29ydGFibGU6IHRydWUgfSwK
KyAgICAgICAgICAgICAgICAgICAgImhpdHMiOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkhpdHMiKSwgd2lkdGg6ICI3MnB4Iiwgc29ydGFibGU6IHRydWUgfSB9OworCisgICAgdGhp
cy5kYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29sdW1ucyk7CisgICAgdGhp
cy5kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKCJzb3J0aW5nIGNoYW5nZWQiLCB0aGlzLl9zb3J0
RGF0YSwgdGhpcyk7CisgICAgdGhpcy5kYXRhR3JpZC5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNlZG93biIsIHRoaXMuX21vdXNlRG93bkluRGF0YUdyaWQuYmluZCh0aGlzKSwgdHJ1ZSk7
CisgICAgdGhpcy5kYXRhR3JpZC5zaG93KHRoaXMuZWxlbWVudCk7CisKKyAgICB0aGlzLnBlcmNl
bnRCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbigiIiwgInBlcmNlbnQt
dGltZS1zdGF0dXMtYmFyLWl0ZW0iKTsKKyAgICB0aGlzLnBlcmNlbnRCdXR0b24uYWRkRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCB0aGlzLl9wZXJjZW50Q2xpY2tlZCwgdGhpcyk7CisKKyAgICB0aGlz
LnByb2ZpbGUgPSBwcm9maWxlOworCisgICAgdGhpcy5fY3JlYXRlUHJvZmlsZU5vZGVzKCk7Cisg
ICAgdGhpcy5fc29ydFByb2ZpbGUoKTsKKyAgICB0aGlzLl91cGRhdGVQZXJjZW50QnV0dG9uKCk7
Cit9CisKK1dlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZSA9IHsK
KyAgICBnZXQgc3RhdHVzQmFySXRlbXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFt0aGlzLnBl
cmNlbnRCdXR0b24uZWxlbWVudF07CisgICAgfSwKKworICAgIGdldCBwcm9maWxlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9wcm9maWxlOworICAgIH0sCisKKyAgICBzZXQgcHJvZmls
ZShwcm9maWxlKQorICAgIHsKKyAgICAgICAgdGhpcy5fcHJvZmlsZSA9IHByb2ZpbGU7CisgICAg
fSwKKworICAgIHdpbGxIaWRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9jdXJy
ZW50U2VhcmNoUmVzdWx0SW5kZXggPSAtMTsKKyAgICB9LAorCisgICAgX2NyZWF0ZVByb2ZpbGVO
b2RlczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGRhdGEgPSB0aGlzLnByb2ZpbGUu
ZGF0YTsKKyAgICAgICAgaWYgKCFkYXRhKSB7CisgICAgICAgICAgICAvLyBUaGUgcHJvZmlsZXIg
bWF5IGhhdmUgYmVlbiB0ZXJtaW5hdGVkIHdpdGggdGhlICJDbGVhciBhbGwgcHJvZmlsZXMuIiBi
dXR0b24uCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLnBy
b2ZpbGUuY2hpbGRyZW4gPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICBkYXRhW2ldLnRpbWVQZXJjZW50ID0gZGF0YVtpXS50
aW1lICogMTAwIC8gdGhpcy5wcm9maWxlLnRvdGFsVGltZTsKKyAgICAgICAgICAgIGRhdGFbaV0u
bWF0Y2hlc1BlcmNlbnQgPSBkYXRhW2ldLm1hdGNoQ291bnQgKiAxMDAgLyBkYXRhW2ldLmhpdENv
dW50OworICAgICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9y
RGF0YUdyaWROb2RlKHRoaXMsIGRhdGFbaV0pOworICAgICAgICAgICAgdGhpcy5wcm9maWxlLmNo
aWxkcmVuLnB1c2gobm9kZSk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgcmVmcmVzaDogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHNlbGVjdGVkUHJvZmlsZU5vZGUgPSB0aGlzLmRh
dGFHcmlkLnNlbGVjdGVkTm9kZSA/IHRoaXMuZGF0YUdyaWQuc2VsZWN0ZWROb2RlLnByb2ZpbGVO
b2RlIDogbnVsbDsKKworICAgICAgICB0aGlzLmRhdGFHcmlkLnJlbW92ZUNoaWxkcmVuKCk7CisK
KyAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5wcm9maWxlLmNoaWxkcmVuOworICAgICAgICB2
YXIgY291bnQgPSBjaGlsZHJlbi5sZW5ndGg7CisKKyAgICAgICAgZm9yICh2YXIgaW5kZXggPSAw
OyBpbmRleCA8IGNvdW50OyArK2luZGV4KQorICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5hcHBl
bmRDaGlsZChjaGlsZHJlbltpbmRleF0pOworCisgICAgICAgIGlmIChzZWxlY3RlZFByb2ZpbGVO
b2RlKQorICAgICAgICAgICAgc2VsZWN0ZWRQcm9maWxlTm9kZS5zZWxlY3RlZCA9IHRydWU7Cisg
ICAgfSwKKworICAgIHJlZnJlc2hWaXNpYmxlRGF0YTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdmFyIGNoaWxkID0gdGhpcy5kYXRhR3JpZC5jaGlsZHJlblswXTsKKyAgICAgICAgd2hpbGUg
KGNoaWxkKSB7CisgICAgICAgICAgICBjaGlsZC5yZWZyZXNoKCk7CisgICAgICAgICAgICBjaGls
ZCA9IGNoaWxkLnRyYXZlcnNlTmV4dE5vZGUoZmFsc2UsIG51bGwsIHRydWUpOworICAgICAgICB9
CisgICAgfSwKKworICAgIHJlZnJlc2hTaG93QXNQZXJjZW50czogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5fdXBkYXRlUGVyY2VudEJ1dHRvbigpOworICAgICAgICB0aGlzLnJlZnJl
c2hWaXNpYmxlRGF0YSgpOworCisgICAgICAgIC8vIFRoZSBvbmx5IGNhc2Ugd2hlbiB0aGUgc29y
dCBvcmRlciBjaGFuZ2VzIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gYWJzIGFuZCBwY3QuCisgICAg
ICAgIGlmICh0aGlzLmRhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyID09PSAibWF0Y2hlcyIp
CisgICAgICAgICAgICB0aGlzLl9zb3J0UHJvZmlsZSgpOworICAgIH0sCisKKyAgICBzZWFyY2hD
YW5jZWxlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3NlYXJjaFJlc3Vs
dHMpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VhcmNoUmVzdWx0
cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHZhciBwcm9maWxlTm9kZSA9IHRoaXMu
X3NlYXJjaFJlc3VsdHNbaV0ucHJvZmlsZU5vZGU7CisKKyAgICAgICAgICAgICAgICBkZWxldGUg
cHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNoZWRTZWxlY3RvckNvbHVtbjsKKyAgICAgICAgICAgICAg
ICBkZWxldGUgcHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbjsKKyAgICAgICAg
ICAgICAgICBkZWxldGUgcHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNoZWRNYXRjaGVzQ29sdW1uOwor
ICAgICAgICAgICAgICAgIGRlbGV0ZSBwcm9maWxlTm9kZS5fc2VhcmNoTWF0Y2hlZEhpdHNDb2x1
bW47CisKKyAgICAgICAgICAgICAgICBwcm9maWxlTm9kZS5yZWZyZXNoKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBkZWxldGUgdGhpcy5fc2VhcmNoRmluaXNoZWRDYWxs
YmFjazsKKyAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gLTE7CisgICAg
ICAgIHRoaXMuX3NlYXJjaFJlc3VsdHMgPSBbXTsKKyAgICB9LAorCisgICAgcGVyZm9ybVNlYXJj
aDogZnVuY3Rpb24ocXVlcnksIGZpbmlzaGVkQ2FsbGJhY2spCisgICAgeworICAgICAgICAvLyBD
YWxsIHNlYXJjaENhbmNlbGVkIHNpbmNlIGl0IHdpbGwgcmVzZXQgZXZlcnl0aGluZyB3ZSBuZWVk
IGJlZm9yZSBkb2luZyBhIG5ldyBzZWFyY2guCisgICAgICAgIHRoaXMuc2VhcmNoQ2FuY2VsZWQo
KTsKKworICAgICAgICBxdWVyeSA9IHF1ZXJ5LnRyaW0oKTsKKworICAgICAgICBpZiAoIXF1ZXJ5
Lmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9zZWFyY2hGaW5p
c2hlZENhbGxiYWNrID0gZmluaXNoZWRDYWxsYmFjazsKKworICAgICAgICB2YXIgZ3JlYXRlclRo
YW4gPSAocXVlcnkuaW5kZXhPZigiPiIpID09PSAwKTsKKyAgICAgICAgdmFyIGxlc3NUaGFuID0g
KHF1ZXJ5LmluZGV4T2YoIjwiKSA9PT0gMCk7CisgICAgICAgIHZhciBlcXVhbFRvID0gKHF1ZXJ5
LmluZGV4T2YoIj0iKSA9PT0gMCB8fCAoKGdyZWF0ZXJUaGFuIHx8IGxlc3NUaGFuKSAmJiBxdWVy
eS5pbmRleE9mKCI9IikgPT09IDEpKTsKKyAgICAgICAgdmFyIHBlcmNlbnRVbml0cyA9IChxdWVy
eS5sYXN0SW5kZXhPZigiJSIpID09PSAocXVlcnkubGVuZ3RoIC0gMSkpOworICAgICAgICB2YXIg
bWlsbGlzZWNvbmRzVW5pdHMgPSAocXVlcnkubGVuZ3RoID4gMiAmJiBxdWVyeS5sYXN0SW5kZXhP
ZigibXMiKSA9PT0gKHF1ZXJ5Lmxlbmd0aCAtIDIpKTsKKyAgICAgICAgdmFyIG1hdGNoZXNVbml0
cyA9IChxdWVyeS5sZW5ndGggPiA3ICYmIHF1ZXJ5Lmxhc3RJbmRleE9mKCJtYXRjaGVzIikgPT09
IChxdWVyeS5sZW5ndGggLSA3KSk7CisgICAgICAgIHZhciBoaXRzVW5pdHMgPSAocXVlcnkubGVu
Z3RoID4gNCAmJiBxdWVyeS5sYXN0SW5kZXhPZigiaGl0cyIpID09PSAocXVlcnkubGVuZ3RoIC0g
NCkpOworICAgICAgICB2YXIgc2Vjb25kc1VuaXRzID0gKCFtaWxsaXNlY29uZHNVbml0cyAmJiAh
bWF0Y2hlc1VuaXRzICYmICFoaXRzVW5pdHMgJiYgcXVlcnkubGFzdEluZGV4T2YoInMiKSA9PT0g
KHF1ZXJ5Lmxlbmd0aCAtIDEpKTsKKworICAgICAgICB2YXIgcXVlcnlOdW1iZXIgPSBwYXJzZUZs
b2F0KHF1ZXJ5KTsKKyAgICAgICAgaWYgKGdyZWF0ZXJUaGFuIHx8IGxlc3NUaGFuIHx8IGVxdWFs
VG8pIHsKKyAgICAgICAgICAgIGlmIChlcXVhbFRvICYmIChncmVhdGVyVGhhbiB8fCBsZXNzVGhh
bikpCisgICAgICAgICAgICAgICAgcXVlcnlOdW1iZXIgPSBwYXJzZUZsb2F0KHF1ZXJ5LnN1YnN0
cmluZygyKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcXVlcnlOdW1iZXIg
PSBwYXJzZUZsb2F0KHF1ZXJ5LnN1YnN0cmluZygxKSk7CisgICAgICAgIH0KKworICAgICAgICB2
YXIgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMgPSAoc2Vjb25kc1VuaXRzID8gKHF1ZXJ5TnVtYmVy
ICogMTAwMCkgOiBxdWVyeU51bWJlcik7CisKKyAgICAgICAgLy8gTWFrZSBlcXVhbFRvIGltcGxp
Y2l0bHkgdHJ1ZSBpZiBpdCB3YXNuJ3Qgc3BlY2lmaWVkIHRoZXJlIGlzIG5vIG90aGVyIG9wZXJh
dG9yLgorICAgICAgICBpZiAoIWlzTmFOKHF1ZXJ5TnVtYmVyKSAmJiAhKGdyZWF0ZXJUaGFuIHx8
IGxlc3NUaGFuKSkKKyAgICAgICAgICAgIGVxdWFsVG8gPSB0cnVlOworCisgICAgICAgIGZ1bmN0
aW9uIG1hdGNoZXNRdWVyeSgvKkNTU1NlbGVjdG9yUHJvZmlsZU5vZGUqLyBwcm9maWxlRGF0YUdy
aWROb2RlKQorICAgICAgICB7CisgICAgICAgICAgICBkZWxldGUgcHJvZmlsZURhdGFHcmlkTm9k
ZS5fc2VhcmNoTWF0Y2hlZFNlbGVjdG9yQ29sdW1uOworICAgICAgICAgICAgZGVsZXRlIHByb2Zp
bGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbjsKKyAgICAgICAgICAgIGRl
bGV0ZSBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkSGl0c0NvbHVtbjsKKyAgICAg
ICAgICAgIGRlbGV0ZSBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkTWF0Y2hlc0Nv
bHVtbjsKKworICAgICAgICAgICAgaWYgKHBlcmNlbnRVbml0cykgeworICAgICAgICAgICAgICAg
IGlmIChsZXNzVGhhbikgeworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlk
Tm9kZS5yYXdEYXRhLnRpbWVQZXJjZW50IDwgcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4gPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5yYXdEYXRh
Lm1hdGNoZXNQZXJjZW50IDwgcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBw
cm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkTWF0Y2hlc0NvbHVtbiA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChncmVhdGVyVGhhbikgeworICAgICAgICAgICAgICAg
ICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5yYXdEYXRhLnRpbWVQZXJjZW50ID4gcXVlcnlO
dW1iZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFy
Y2hNYXRjaGVkVG90YWxDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpZiAocHJv
ZmlsZURhdGFHcmlkTm9kZS5yYXdEYXRhLm1hdGNoZXNQZXJjZW50ID4gcXVlcnlOdW1iZXIpCisg
ICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVk
TWF0Y2hlc0NvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgaWYgKGVxdWFsVG8pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3Jp
ZE5vZGUucmF3RGF0YS50aW1lUGVyY2VudCA9PSBxdWVyeU51bWJlcikKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbiA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnJhd0Rh
dGEubWF0Y2hlc1BlcmNlbnQgPT0gcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgICAg
ICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkTWF0Y2hlc0NvbHVtbiA9IHRydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChtaWxsaXNlY29uZHNV
bml0cyB8fCBzZWNvbmRzVW5pdHMpIHsKKyAgICAgICAgICAgICAgICBpZiAobGVzc1RoYW4pIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUucmF3RGF0YS50aW1l
IDwgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9m
aWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4gPSB0cnVlOworICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoZ3JlYXRlclRoYW4pIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUucmF3RGF0YS50aW1lID4gcXVlcnlOdW1iZXJNaWxsaXNl
Y29uZHMpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFy
Y2hNYXRjaGVkVG90YWxDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGlmIChlcXVhbFRvKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxl
RGF0YUdyaWROb2RlLnRvdGFsVGltZSA9PSBxdWVyeU51bWJlck1pbGxpc2Vjb25kcykKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3Rh
bENvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlm
IChtYXRjaGVzVW5pdHMpIHsKKyAgICAgICAgICAgICAgICBpZiAobGVzc1RoYW4pIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUucmF3RGF0YS5tYXRjaENvdW50
IDwgcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWRO
b2RlLl9zZWFyY2hNYXRjaGVkTWF0Y2hlc0NvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChncmVhdGVyVGhhbikgeworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmls
ZURhdGFHcmlkTm9kZS5yYXdEYXRhLm1hdGNoQ291bnQgPiBxdWVyeU51bWJlcikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRNYXRjaGVz
Q29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAo
ZXF1YWxUbykgeworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5y
YXdEYXRhLm1hdGNoQ291bnQgPT0gcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgICAg
ICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkTWF0Y2hlc0NvbHVtbiA9IHRydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChoaXRzVW5pdHMpIHsK
KyAgICAgICAgICAgICAgICBpZiAobGVzc1RoYW4pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHByb2ZpbGVEYXRhR3JpZE5vZGUucmF3RGF0YS5oaXRDb3VudCA8IHF1ZXJ5TnVtYmVyKQorICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEhp
dHNDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZ3JlYXRlclRoYW4p
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUucmF3RGF0YS5o
aXRDb3VudCA+IHF1ZXJ5TnVtYmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURh
dGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEhpdHNDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChlcXVhbFRvKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLnJhd0RhdGEuaGl0Q291bnQgPT0gcXVlcnlOdW1i
ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hN
YXRjaGVkSGl0c0NvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5kYXRhLnNlbGVjdG9yLmhh
c1N1YnN0cmluZyhxdWVyeSwgdHJ1ZSkpCisgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlk
Tm9kZS5fc2VhcmNoTWF0Y2hlZFNlbGVjdG9yQ29sdW1uID0gdHJ1ZTsKKworICAgICAgICAgICAg
aWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRTZWxlY3RvckNvbHVtbgorICAg
ICAgICAgICAgICAgICAgICB8fCBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkVG90
YWxDb2x1bW4KKyAgICAgICAgICAgICAgICAgICAgfHwgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2Vh
cmNoTWF0Y2hlZE1hdGNoZXNDb2x1bW4KKyAgICAgICAgICAgICAgICAgICAgfHwgcHJvZmlsZURh
dGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEhpdHNDb2x1bW4pIHsKKyAgICAgICAgICAgICAgICBw
cm9maWxlRGF0YUdyaWROb2RlLnJlZnJlc2goKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisKKyAgICAgICAgdmFyIGN1cnJlbnQgPSB0aGlzLnByb2ZpbGUuY2hpbGRyZW5bMF07CisKKyAg
ICAgICAgd2hpbGUgKGN1cnJlbnQpIHsKKyAgICAgICAgICAgIGlmIChtYXRjaGVzUXVlcnkoY3Vy
cmVudCkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9zZWFyY2hSZXN1bHRzLnB1c2goeyBwcm9m
aWxlTm9kZTogY3VycmVudCB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY3VycmVu
dCA9IGN1cnJlbnQudHJhdmVyc2VOZXh0Tm9kZShmYWxzZSwgbnVsbCwgZmFsc2UpOworICAgICAg
ICB9CisKKyAgICAgICAgZmluaXNoZWRDYWxsYmFjayh0aGlzLCB0aGlzLl9zZWFyY2hSZXN1bHRz
Lmxlbmd0aCk7CisgICAgfSwKKworICAgIGp1bXBUb0ZpcnN0U2VhcmNoUmVzdWx0OiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3VsdHMgfHwgIXRoaXMuX3Nl
YXJjaFJlc3VsdHMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9j
dXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAwOworICAgICAgICB0aGlzLl9qdW1wVG9TZWFyY2hS
ZXN1bHQodGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4KTsKKyAgICB9LAorCisgICAganVt
cFRvTGFzdFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlz
Ll9zZWFyY2hSZXN1bHRzIHx8ICF0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gKHRo
aXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoIC0gMSk7CisgICAgICAgIHRoaXMuX2p1bXBUb1NlYXJj
aFJlc3VsdCh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXgpOworICAgIH0sCisKKyAgICBq
dW1wVG9OZXh0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRo
aXMuX3NlYXJjaFJlc3VsdHMgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBpZiAoKyt0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5k
ZXggPj0gdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpCisgICAgICAgICAgICB0aGlzLl9jdXJy
ZW50U2VhcmNoUmVzdWx0SW5kZXggPSAwOworICAgICAgICB0aGlzLl9qdW1wVG9TZWFyY2hSZXN1
bHQodGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4KTsKKyAgICB9LAorCisgICAganVtcFRv
UHJldmlvdXNTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhp
cy5fc2VhcmNoUmVzdWx0cyB8fCAhdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGlmICgtLXRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRl
eCA8IDApCisgICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAodGhp
cy5fc2VhcmNoUmVzdWx0cy5sZW5ndGggLSAxKTsKKyAgICAgICAgdGhpcy5fanVtcFRvU2VhcmNo
UmVzdWx0KHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCk7CisgICAgfSwKKworICAgIHNo
b3dpbmdGaXJzdFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
ICh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPT09IDApOworICAgIH0sCisKKyAgICBz
aG93aW5nTGFzdFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
ICh0aGlzLl9zZWFyY2hSZXN1bHRzICYmIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9
PT0gKHRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoIC0gMSkpOworICAgIH0sCisKKyAgICBfanVt
cFRvU2VhcmNoUmVzdWx0OiBmdW5jdGlvbihpbmRleCkKKyAgICB7CisgICAgICAgIHZhciBzZWFy
Y2hSZXN1bHQgPSB0aGlzLl9zZWFyY2hSZXN1bHRzW2luZGV4XTsKKyAgICAgICAgaWYgKCFzZWFy
Y2hSZXN1bHQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHByb2ZpbGVOb2Rl
ID0gc2VhcmNoUmVzdWx0LnByb2ZpbGVOb2RlOworICAgICAgICBwcm9maWxlTm9kZS5yZXZlYWxB
bmRTZWxlY3QoKTsKKyAgICB9LAorCisgICAgX3BlcmNlbnRDbGlja2VkOiBmdW5jdGlvbihldmVu
dCkKKyAgICB7CisgICAgICAgIHZhciBjdXJyZW50U3RhdGUgPSB0aGlzLnNob3dUaW1lQXNQZXJj
ZW50LmdldCgpICYmIHRoaXMuc2hvd01hdGNoZXNBc1BlcmNlbnQuZ2V0KCk7CisgICAgICAgIHRo
aXMuc2hvd1RpbWVBc1BlcmNlbnQuc2V0KCFjdXJyZW50U3RhdGUpOworICAgICAgICB0aGlzLnNo
b3dNYXRjaGVzQXNQZXJjZW50LnNldCghY3VycmVudFN0YXRlKTsKKyAgICAgICAgdGhpcy5yZWZy
ZXNoU2hvd0FzUGVyY2VudHMoKTsKKyAgICB9LAorCisgICAgX3VwZGF0ZVBlcmNlbnRCdXR0b246
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnNob3dUaW1lQXNQZXJjZW50Lmdl
dCgpICYmIHRoaXMuc2hvd01hdGNoZXNBc1BlcmNlbnQuZ2V0KCkpIHsKKyAgICAgICAgICAgIHRo
aXMucGVyY2VudEJ1dHRvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBhYnNv
bHV0ZSB1bml0cy4iKTsKKyAgICAgICAgICAgIHRoaXMucGVyY2VudEJ1dHRvbi50b2dnbGVkID0g
dHJ1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMucGVyY2VudEJ1dHRvbi50
aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBwZXJjZW50YWdlcy4iKTsKKyAgICAg
ICAgICAgIHRoaXMucGVyY2VudEJ1dHRvbi50b2dnbGVkID0gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9LAorCisgICAgX3NvcnREYXRhOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRo
aXMuX3NvcnRQcm9maWxlKCk7CisgICAgfSwKKworICAgIF9zb3J0UHJvZmlsZTogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdmFyIHNvcnRBc2NlbmRpbmcgPSB0aGlzLmRhdGFHcmlkLnNvcnRP
cmRlciA9PT0gImFzY2VuZGluZyI7CisgICAgICAgIHZhciBzb3J0Q29sdW1uSWRlbnRpZmllciA9
IHRoaXMuZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXI7CisgICAgICAgIHZhciBpc1BlcmNl
bnQgPSB0aGlzLnNob3dUaW1lQXNQZXJjZW50LmdldCgpOworCisgICAgICAgIGZ1bmN0aW9uIHNl
bGVjdG9yQ29tcGFyYXRvcihhLCBiKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcmVzdWx0
ID0gYi5yYXdEYXRhLnNlbGVjdG9yLmxvY2FsZUNvbXBhcmUoYS5yYXdEYXRhLnNlbGVjdG9yKTsK
KyAgICAgICAgICAgIHJldHVybiBzb3J0QXNjZW5kaW5nID8gLXJlc3VsdCA6IHJlc3VsdDsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRpbWVDb21wYXJhdG9yKGEsIGIpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGIucmF3RGF0YS50aW1lIC0gYS5yYXdEYXRh
LnRpbWU7CisgICAgICAgICAgICByZXR1cm4gc29ydEFzY2VuZGluZyA/IC1yZXN1bHQgOiByZXN1
bHQ7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBoaXRzQ29tcGFyYXRvcihhLCBiKQor
ICAgICAgICB7CisgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBiLnJhd0RhdGEuaGl0Q291bnQg
LSBhLnJhd0RhdGEuaGl0Q291bnQ7CisgICAgICAgICAgICByZXR1cm4gc29ydEFzY2VuZGluZyA/
IC1yZXN1bHQgOiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBtYXRjaGVz
Q29tcGFyYXRvcihhLCBiKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBp
c1BlcmNlbnQgPyAoYi5yYXdEYXRhLm1hdGNoZXNQZXJjZW50IC0gYS5yYXdEYXRhLm1hdGNoZXNQ
ZXJjZW50KSA6IChiLnJhd0RhdGEubWF0Y2hDb3VudCAtIGEucmF3RGF0YS5tYXRjaENvdW50KTsK
KyAgICAgICAgICAgIHJldHVybiBzb3J0QXNjZW5kaW5nID8gLXJlc3VsdCA6IHJlc3VsdDsKKyAg
ICAgICAgfQorCisgICAgICAgIHZhciBjb21wYXJhdG9yOworICAgICAgICBzd2l0Y2ggKHNvcnRD
b2x1bW5JZGVudGlmaWVyKSB7CisgICAgICAgIGNhc2UgInRpbWUiOgorICAgICAgICAgICAgY29t
cGFyYXRvciA9IHRpbWVDb21wYXJhdG9yOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgImhpdHMiOgorICAgICAgICAgICAgY29tcGFyYXRvciA9IGhpdHNDb21wYXJhdG9yOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIm1hdGNoZXMiOgorICAgICAgICAgICAgY29t
cGFyYXRvciA9IG1hdGNoZXNDb21wYXJhdG9yOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgInNlbGVjdG9yIjoKKyAgICAgICAgICAgIGNvbXBhcmF0b3IgPSBzZWxlY3RvckNvbXBh
cmF0b3I7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMucHJv
ZmlsZS5jaGlsZHJlbi5zb3J0KGNvbXBhcmF0b3IpOworCisgICAgICAgIHRoaXMucmVmcmVzaCgp
OworICAgIH0sCisKKyAgICBfbW91c2VEb3duSW5EYXRhR3JpZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgeworICAgICAgICBpZiAoZXZlbnQuZGV0YWlsIDwgMikKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB2YXIgY2VsbCA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0
aE5vZGVOYW1lKCJ0ZCIpOworICAgICAgICBpZiAoIWNlbGwpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKGNlbGwuaGFzU3R5bGVDbGFzcygidGltZS1jb2x1bW4iKSkKKyAgICAg
ICAgICAgIHRoaXMuc2hvd1RpbWVBc1BlcmNlbnQuc2V0KCF0aGlzLnNob3dUaW1lQXNQZXJjZW50
LmdldCgpKTsKKyAgICAgICAgZWxzZSBpZiAoY2VsbC5oYXNTdHlsZUNsYXNzKCJtYXRjaGVzLWNv
bHVtbiIpKQorICAgICAgICAgICAgdGhpcy5zaG93TWF0Y2hlc0FzUGVyY2VudC5zZXQoIXRoaXMu
c2hvd01hdGNoZXNBc1BlcmNlbnQuZ2V0KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgdGhpcy5yZWZyZXNoU2hvd0FzUGVyY2VudHMoKTsKKworICAgICAg
ICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24o
KTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGU7CisKKy8qKgorICog
QGNvbnN0cnVjdG9yCisgKi8KK1dlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlID0g
ZnVuY3Rpb24oKQoreworICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5jYWxsKHRoaXMsIFdl
Ykluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLlR5cGVJZCwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJDU1MgU0VMRUNUT1IgUFJPRklMRVMiKSk7CisgICAgdGhpcy5fcmVjb3JkaW5nID0g
ZmFsc2U7CisgICAgdGhpcy5fcHJvZmlsZVVpZCA9IDE7CisgICAgV2ViSW5zcGVjdG9yLkNTU1Nl
bGVjdG9yUHJvZmlsZVR5cGUuaW5zdGFuY2UgPSB0aGlzOworfQorCitXZWJJbnNwZWN0b3IuQ1NT
U2VsZWN0b3JQcm9maWxlVHlwZS5UeXBlSWQgPSAiU0VMRUNUT1IiOworCitXZWJJbnNwZWN0b3Iu
Q1NTU2VsZWN0b3JQcm9maWxlVHlwZS5wcm90b3R5cGUgPSB7CisgICAgZ2V0IGJ1dHRvblRvb2x0
aXAoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZGluZyA/IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU3RvcCBDU1Mgc2VsZWN0b3IgcHJvZmlsaW5nLiIpIDogV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTdGFydCBDU1Mgc2VsZWN0b3IgcHJvZmlsaW5nLiIpOworICAgIH0sCisKKyAg
ICBnZXQgYnV0dG9uU3R5bGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZGlu
ZyA/ICJyZWNvcmQtY3NzLXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtIHN0YXR1cy1iYXItaXRlbSB0
b2dnbGVkLW9uIiA6ICJyZWNvcmQtY3NzLXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtIHN0YXR1cy1i
YXItaXRlbSI7CisgICAgfSwKKworICAgIGJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIGlmICh0aGlzLl9yZWNvcmRpbmcpCisgICAgICAgICAgICB0aGlzLnN0b3BSZWNv
cmRpbmdQcm9maWxlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuc3RhcnRSZWNv
cmRpbmdQcm9maWxlKCk7CisgICAgfSwKKworICAgIGdldCB3ZWxjb21lTWVzc2FnZSgpCisgICAg
eworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb250cm9sIENTUyBTZWxl
Y3RvciBwcm9maWxpbmcgYnkgcHJlc3NpbmcgdGhlICVzIGJ1dHRvbiBvbiB0aGUgc3RhdHVzIGJh
ci4iKTsKKyAgICB9LAorCisgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRo
aXMuX3Byb2ZpbGVVaWQgPSAxOworICAgIH0sCisKKyAgICBpc1JlY29yZGluZ1Byb2ZpbGU6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRpbmc7CisgICAgfSwK
KworICAgIHNldFJlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKGlzUHJvZmlsaW5nKQorICAgIHsK
KyAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gaXNQcm9maWxpbmc7CisgICAgfSwKKworICAgIHN0
YXJ0UmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVj
b3JkaW5nID0gdHJ1ZTsKKyAgICAgICAgQ1NTQWdlbnQuc3RhcnRTZWxlY3RvclByb2ZpbGVyKCk7
CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMuc2V0UmVjb3JkaW5nUHJvZmls
ZShXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5UeXBlSWQsIHRydWUpOworICAg
IH0sCisKKyAgICBzdG9wUmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHByb2ZpbGUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHBy
b2ZpbGUudWlkID0gdGhpcy5fcHJvZmlsZVVpZCsrOworICAgICAgICAgICAgcHJvZmlsZS50aXRs
ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJvZmlsZSAlZCIsIHByb2ZpbGUudWlkKSArIFN0
cmluZy5zcHJpbnRmKCIgKCVzKSIsIE51bWJlci5zZWNvbmRzVG9TdHJpbmcocHJvZmlsZS50b3Rh
bFRpbWUgLyAxMDAwKSk7CisgICAgICAgICAgICBwcm9maWxlLnR5cGVJZCA9IFdlYkluc3BlY3Rv
ci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLlR5cGVJZDsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMucHJvZmlsZXMuYWRkUHJvZmlsZUhlYWRlcihwcm9maWxlKTsKKyAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMuc2V0UmVjb3JkaW5nUHJvZmlsZShXZWJJbnNw
ZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5UeXBlSWQsIGZhbHNlKTsKKyAgICAgICAgfQor
CisgICAgICAgIHRoaXMuX3JlY29yZGluZyA9IGZhbHNlOworICAgICAgICBDU1NBZ2VudC5zdG9w
U2VsZWN0b3JQcm9maWxlcihjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisgICAgY3Jl
YXRlU2lkZWJhclRyZWVFbGVtZW50Rm9yUHJvZmlsZTogZnVuY3Rpb24ocHJvZmlsZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVTaWRlYmFyVHJlZUVsZW1l
bnQocHJvZmlsZSwgcHJvZmlsZS50aXRsZSwgInByb2ZpbGUtc2lkZWJhci10cmVlLWl0ZW0iKTsK
KyAgICB9LAorCisgICAgY3JlYXRlVmlldzogZnVuY3Rpb24ocHJvZmlsZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcocHJvZmls
ZSk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlLnByb3RvdHlwZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL3N0YXR1
c2JhckJ1dHRvbkdseXBocy5wbmcgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0ltYWdlcy9zdGF0dXNiYXJCdXR0b25HbHlwaHMucG5nCmluZGV4IDU1MzEyNGIxY2RiNzM4Y2I2
YzE5NzVlZWM0ZjIxNDk3OTRmOTBlNmQuLjNlNzlkN2UwMzhjMWQyNDc3YjkwMDI2N2Q0NjRkZjRh
MjY1N2Y4NGUgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMzY4Mgp6Y21WLW80eFJDV0Zf
SlF7ZyRmRCgwUkk2MHB1TU0pbGEyfT5lKyZsPkJNUHxhQWJ8aD80biM+ckt+IzkhP1ZXaiQKejZ4
QUthS1JxbkZnNWEqPXQ/PndtWE5VPTh3WENSNllERSh2TWw+WlY1ZmhKdWZMTGxnbDJwdjkoTnIp
aHFESGkwCnpQezQjVENWXjspUU5TWj1UdjNSTShGbiQpQ0AoOzhiI2F6dUkpQSloWEM5ck5vITtI
fGRXUFptc2RfY2okSVI8fgp6ZjhHNmt6anlUUzJhMkw3aWxRaXJxOX1AQEQyayNlaWxRaHJOVDVa
fkJOfkJgeitoUWsyfE5hQCpQX1hVIS00TXQKeiN7em8tOC1OI3Era3JWJWNDNDM0Kzc7LWlmd0oh
bGQ8X15SJWMxRFZvNF55WXlqM3lSRHZWbUU5PUhObkQ7TF5NCnpZa3x2d0lAS3JkZ2s3WUlzXn5h
KDFCTClRMTNUMm5mQnBYfXBwYTFSZDA9OGpNJURTaUpmS2F8Slh1JDxvQUV2MQp6cSNBJGRgVH5F
RV5LQW9XMUxzTWE0U1h1dz8pNUIhe2VhUUh0LXZGfEd4Qis+dG5jU0I/O1V9S3pfMWVBaHNwTEcK
ekp6dDlfZk5eM35aM0JHWWRKeH5LNX18azxjLUM1OD9OSU9tdH1hcyVUJURvI01YM1hyMW1yeEc+
JUptKGYySCFECnpDO05EM0dfWGo3eiY/T2shMWdzTmZSfGg2eGRkcDZaOWZvTEE9QHdhQioyI2RB
Q3xmQ0thfkNZZE5fdUtSdnlDPQp6IzRrRndnJkFMKT9YMl92dFAxWHhlWj19aDFiUFV0T0UwWFdC
bXVtcCV6YmM4I15Qcy07QUJyQ0k0PyMxXkwkXzIKellyRHZONll4dWlkQSo8RmdwPC01PV83SlFl
PFNiX0BDb3BPPG5kSTMycCN+bSVmNXtjXldPXy1qaCRtRmEzVX5OCnpLOWpjWjxAbm0kQjQ+K1dz
cjZaNVRTSEd9bDtgYlllYUNxUWN2LSQqMERLR188KyNiOEg3Q2MhWj9VOWtgQVNLKQp6MnA7ZEQq
Xy16SF90cVI5Wk1GQk9oX3g0R2BlKSNmNEV1VkByQS1iK0BGZEheWklYd3FsbkJtfWV7SFYxMW9p
Pm0KelA3dD8tKm5TTk9CS1ZnNC1scXRUdEZaVzhXUyNFQDtJSXR4WT84YHVhT150bEFRZSZ8Ul9Y
cVp4PGlyI0BZKnU+Cnp8RnNVIV9rITRlNH4tb2N2ZC1SVGFze2tFP15mVTwkPjBLTy1KP0xXJE50
Nk1xO19EZWdYNmVae19rQXQwVnBNYwp6PWdSdHY5cHV9OThRcU1aKk5ONmNmNnhafUIzNDEhPjdV
WXNAZzsmYDE7eXtBU2t3MX00RHleUDdTMz9zN159fjUKeklIbik/YkpHMCROV1J3c2xZMWI1bE49
dklUUXtFakhlVXIxOVlqfEJlNCZIMSs9QnBpQzR3I21AWj1LYkcmRldTCnorRGhEblFUbXBMWWpi
KW1rOHVAdkZxZDJUcE9zT2JkeC1WZCpJRklgPjw0VHM9PlZWKWYzLXUrM1pUbzUlSSRydAp6Wng3
ZjJ7TEkxc3Rkdmk/Rkp+Ul80ZDd8dTI7ZX54IUp9Zm89P3hFeDFzRXJ+MGpFcDk8anUwWWY1Tl5t
JUt4fncKejBIPyopLUNPfCsmXzNVKz1LcmslNCNNPEw5fExxXk10RW1uPHxuUVo1IX5kXzVDRktM
ajBvSnxJUjhxcyRrVjwoCnpZNjRHNSpmdkdCRSVKRWJlPUY0bzchODg3T1lLZXhPS188T2xGTERt
WVZRTCl5fjJIZm03KSRheTFSfF5fdlBmPwp6Kncoc3Q4JENTLVNxdEVWKm5ifV9zbmxgLUlLeSN5
U000Q2tfVlBVKz56e0gjd1R1RW9hVD80RCUjQGU3MnJqWW0KemNSZFk4TX1mLT1MellETzRGPXY3
dEE4bkcwRX48VEZpVXBFJXIjQig+PW1ST2V8KmVHdEA+IyZ6b192Vnt8fERXCnpwR3VRIXFORilp
QUh7cyE0PzJMKDFGU3s/aklQVXB6fj5ZOHNUQihfNjJWN1BofkkzPjNVKkNaUEswaWc/PFoyKgp6
XmFGTVd1RSlJZDghIUN6dlRnVC09QmV4Qip4S0kmc1VgdkpZTTtnJGRqQHN8OWA4Y0A9NE4jNW94
S1hEJkpmYTUKemp+VlVqRF4xPkpFc0NBK3VWRyQkU19mPnpeYUYweEJDQT1fM1RfaiU7VUZXaCZV
cH1VNHJiMHtYbC04JEpPS1AjCno/fHFaZDQ8Q09+bHI0eE1TX0U0YTBoTmdYR21fMDsheTJpVkxn
QClFcW45MG9AcldgUF5RejF5RSM4YD8wcGtPKQp6OFJIUzxSZ0N3VXI1SHlNS0EzPjxJeTk9cF85
amY2aWZPPmkzWUFMXl5HPllkaTAwPHpvYWpfTiNgUmMjTmV6fk0KemJ6OzB4d00rVTg8RiZpOXdZ
OWE3ZyNabyF7KUJsRXptRXM7PiY8YDU/cHhGUSZPMUBgUW5TTHR8TCtacSRHaWptCnpidkJRNmAj
IzFJIVpON0AtKnptMXpteEJhZnhCYmQ0K1U8TiZ1QmxfQX4qdlIwdXxzPVV9fGpwO34yTUNJczd8
awp6SUdtI01rcTNaKClWUHNXRlFUXnsoM3NFWCRBKTNwOUVSYiswNmBFZTR9emV6cGBxYl4lKThl
Z1RmZ3RmTExCQmAKejlBa2dKMCp0X1RWeS0wdGpRcVRmQDVYVj5QVDFkVFdlTURlQGN9cCZJTCQq
SSN7ZlVaSUQ1IylEIU0qV0R8WjBECnohTDRLNXI2Tyk9U3E2TmBWZzVoRGdvUylsRVheazFFN0la
dDw4PH52eno+MWpKWVZNKFZzK2NCQiVBSzF1IzR2Xgp6XmtILX5II2JLWFVzR3BpPWZSendvcyRj
TiFpYzImYkdkKXFsRGZMTz4yLUI9JVEyMmcrRk0mJitrSVByS00/V3oKejFRV3d6Z1UxVUheemRU
MjtMSCp0U1BoSzlfJHJLQ1ZWIzA7I3BLISgkdCVFUjZySkJESDMyYHVjbXtGRkQ2I3l+CnpoflRt
PW4jbno3cUk/YihwP09YNlNZaW5AQkskdTJLJjw/S1FIKGtCWW03Z19jUFlqcV85PWNSMDFIWXlv
NXoweAp6NTZRbCtNNmo8MlV9R2VIS0BqQVUxaDd5ampPZ3Nfb0xwQnxjYlFiZ1d4ZGpyNlR0VHxq
dTRaMFR4IU9mV0k1e2gKelRWdklsY2ghZylLRTh3cVJ6dmY7SVZPSX48Ym4wIWhVcGFmPytzbT9k
dyojanVYTDI+TmNwQHdDViheTDl6MHJfCnokUnpDZG40QEVPUyoqTkI7QkNHdDdVNk44bzQkWGlp
VEooNT1LZEhUbDhXZy1zUi13TCRsSCRieVAlOHg3UX13RAp6ej9BXnpeWkJ2MV89UkJAU29kSFUx
T1kpMTxPK3F0aDxyWGp3eE9abjkhITU9dUxRN15fXmtySWhqR01ORkUhcisKek9ueylNVSs3Tnh0
YVRDMGlhdGBRKytrVCpMIT1LVjYySk10c3BhfVRkTzw3Myh7UF4+MHZJe1FUPEwhPiYmM0pyCnpX
JiZxaC0/MnBTTWh7SWZKS3B1KXYyOU9FYkwmeWgqRk9zSG5pT3F0M2grME4wJDU0PDB1NW1wSHB9
JmxpeXlMJQp6QVBBIUcmQyg1MikrPjVYcVFaNV5Mdntua3txKnl8Z31ePFNrem83M1peMkRtLWY5
eFQqJj4yPXtEJndReH05YkAKeiV5JWNMPjk1MGQjeiVyVU40NWR7KFgpVH1NTlBkPXlBWU5AYG9l
czNjYlIzXk1FIWFqZiMpcFl7a0Q4UiUoNGNMCnojbjA1QlhmIWopJVhHQV5wNHlgaVAhfG4mIzQ1
SFJfVEFMTlg1VHRlZ2VMOFkwQTQ1O2RXPHgpUFFgP3Q5RndxYgp6S2oxMnEtcmZLK3E9XitaTHIo
e09MTk9yeWR9JChlY3NgYTZpaDttT2t3clheayE2LSRHZ1decSZMX207OSk8fnAKeklUc1VueyZs
SkpvfElQNlRGaFhlT0NGWmJtVnw5QkRWbkR9V3MrM0JYKVdyJllNTWB+X0peeXgweXRDcEFnK187
Cno/KlBOKVZOQWtSVHdjNDBse1djY21STnVCNSNJNHVaNEBPfVAyXjNPIUtMI3BmeEZFcl5Pcj5Z
dllMMUthRWcxeAp6QzhII0AjRn41KUYjVTI5KmdTdHNZbTQ8OG0oMFpVSDskR3ZrRVgjS0RNbW4p
Y2hvPDNwWDI9UiFWRU1YZ2MqJUsKelB0clM5JWQ2R0hefVlvJkBCISYjcCYtQXgjbkp1VzgzZSlk
Z2duQzdjY1p7Ji1fQTc4TTBaQWtteC03P0JVWl4mCnpZM0BBUmd+PmgleFc3ZyR1fk9vZjY/YUhe
S1ZVVV5SPl9VRkwyaUk3Vm8pcUIoR1B6V0Bydlg4OStVSTNgfVVlQgp6Jmk5TStQMFlhREkqKDtB
UHxEITxuNG1tU0FmUmEhMlQ5Z0AlQ2A7RTQ+PT1ZYHxGc0k+TmplcjErKT4hMlNMeSgKelImXkt6
MGJ2OzApQEIkNCFUKmRPKio4eSRRUSZlRzswTi0jUiUqSDUwKCRefCRNZ1ooOXE9fTVmcGUqeTBn
ekpTCnoqT2RrOHZKV3QtLTUhNkRyZFUrN29oPjRtQzB6O0pUbGtwPG0zOWdZdmZwQ1FXcEotbXt4
PCFzQDRoMCE0VjJjdgp6ZGBhaHY1VWlIJVM8TU58UVVLYzw4WEU0OzwjSjJIRmYyclo3WCgyO1FW
NGAkNyM0RTUrIUMxKC1Id0I0RnVUTj4KejdSTzs/em4ldVgkTiFJcilpUlpge0V7Qk5NJkp0fmgq
YDU1R1p7RE9Bek9jaHBJNT1BU3IqP2l1P2pEPXclPiY1CnoyUnppOy14cXNlLW9qYFJEKzd4Q3FQ
SnJQMTtPb2BGaUVYfUo3VmowIXBzSFNSVj1+JWFROE0pK1VZSDZyXnxGKAp6MEQ8KiZiIz5Gek9v
U0hlSkN5KllvaEVQYCNnNVB1RCk4V0s/WFNXbU8pUVBTYStwO1V4THpLPHZsNnpBa3llM14KektH
K0VxLXZ4aDtUWH5+STdfKWQ2SUpDO1k1YkdsUHFQNHMmRGR3U2hBUUhpUWZpcFpsaGdyUHxRY3Vy
Ymc9K15vCnpUM2NIP2RTZH1iT3FVQ09SZlZoJGpiRUk3QGI2TXxpWndoVFZPeHtPPEQ2TVcqdyoz
cF58dzsmREd5ajdxM0luPgp6eX50UGFgc0BaPTFOPTFPPVA+WWl6ZU47KTR3PlhVbWxWenJUcGJV
QFVlZTZ5Z1FBIWx1WVc4eFh0OSY8NzlXeHEKejFiP3pjQG50T25NY0ghYiRAX2FAMjZeLSpLaUJ6
cF9jK2hReFQ+IzNoR1FJcDR3dlFVZnhsQXBmVEFjV2ZTdj8hCnpJbVhrJksjVSo1PXpCIThFKCE7
RU0xfSR3eGtFcUY1e2VnVVEyWnt6Y218NWZ5JCQwVzw5WmNBV2xOK3RhZTsjcgp6cVRxcmsyKz5s
fmB7U0Q+MHlzTShAbXB0IS16SkNSY1lrSGR7YVB8TyYhTik5QTdyZj9CPHFIJTA0bFhpLTFtT2kK
eiZFTkV2REMqaVEkTlJie20ofHZ9ZSZZRTV1Y1VuSmxQZmQyMmQ8elA1Wno5QipgX0Y0bD85azNY
PUN6YzhNaDt9Cnp0Uk9KcUFfcl9DLTU1UCNqZm5tM3ZHdUVFbzEmLXlSIXtgOTdRZmVre2VmMzhA
c1M1cXM5ZHNnbD0+em49Nl4/QQp6ME47e3JpbFIrbVBmZyUqUDI4LVR5LVY+UWcwdEcxenlwQUJt
X1IoTUIrWnZ+MU4wRzV3bClFKldQSUxgJXxyamEKemsmemA3Vm4mIz01V2xubipwbElXRmMxPzY+
a3Z0TXYtd0U4cUclSmloQVJPdWZteG1nNCN2ZDVzRnZmKEdNXnlECnp2WjdReXhnUHVgPXdfK35N
Z1ZzTE42WWROUmV2SVdTcmZtZTwoM3R0clViQigmRTZ6dGt4anFmYkNAYCpFaW50ewp6OUV3ciRG
MTYxNlFtUUE0bkA9KDkkX2k4elozMjVfVXJBWjlCUU87Y2dFbVdrejZGUzJQLTBuOHM9Z0xpbChn
MT0KelRJKX5tREA5UWhNTnQkKlE0fmN7NmglPUtNTnQkKnNUQlZPWTZRJlU1cDJiITAwMDAwTmt2
WFh0Xi0wfmZ7ZG1hCkFAYztrLQoKZGVsdGEgMzUxNgp6Y21WO3Q0TVh5aEdKLUwlZyRmQSgwMDAw
MGA5ciZabGEyfT5lK25CQjRtaUBfKGopKT80WVd4X0t+IzkhP1ZXaiQKejZ4QUthS1JwYVBmfF8w
TEdhZG8mZ3FUUUglU3NlVnQhTl58aF45UDMjS2E+WkFlSlUtanRiKEwzVzx1UzV2Pj4kCnpGcmti
fHB0UXMmOzFNO0JNMkx6PDFtalZiN2IzWDJJTGsxZEtpO3BpazUxMXtAOXVqJiF8P2w1eV8pWG5v
X1hEYAp6ZjhZRFEtI2h5RUt2NUokUTR+Y3s2aCU9S01OdCQqUTUyO0sye1p9JUxAT2A/NyRXO0Nm
cm8mI25semJrODFQLS0KelhrZDM+OXE8ZnJHY2MjWXVKdkxHSXxFJSFrb0UoQ3VMOWYyZWtlTmZE
KTVOeFomdTg7NX5KQl4wZSU5a21Jck56CnopeGFle1VpSGE0VkdyU2cyRDs4JmZUNiZTel92fTJm
QiUwNFIxKHM/MWRQd2ZzNSUjejJYc2k3QypSZEFHcmtSKwp6KEJ5P35BbjtlWS13dDNsYUVecjh6
e2hnelBSfUFaMnA5JDIyc3s4aEEpaHpPX2slcGZ5KjtvSDcqXiVARmdkPXgKej1WJFE8YUg/MlVU
TDltOzNnUjBMQWB+d0pQZz90ezkxMT9iPHV4alQlUUY8ZUQwQmY2ZlNqanYtQ00tMmVfSChXCno8
UShzZTB2M3I3KmNVSmgqcnJKWkBEbDRqbWpHP0M7fEJtTTxvRzM/MW8laDVkbz9vdGR2ZX1ENTcp
NUppZXAlVQp6XyhqKllGeW0rUURlTHx9WEBJPTRtc28jQEtvMTNXPlc2aWRCIUV9YyRPbChzRVBs
MktQVl4qI15IUmg9Ji1jVDwKenMpeHVvMEthcT8qRT1iMEk0UWdAZU1HS2tlKzUxT0pfNFNXSTM3
ejchVG9fd0lrKGtle0NmYiEqZ1kxMzxBSHRVCnpHd0p2cWotUzBQYTwmTG9gI3ZqZFl2ezN6Oz1F
YWA/Pko4WSYmbD9Bej15eVFqK157aGI3RDtWN0U2ZnNDcmh3Sgp6QEtfSmMtbjhaNFRYVDRuKSF2
XlopP082cFV4M2VNKnc8NGxZO1kpb0NzLUQ0bi1zRVlBfjtLcWY0Uy1zKmI4XykKekxFSCtsXjls
KGZfP3JDUXJ3RT19WFlzcWh5NUR1Y3AmNyo0Q1k5WmcqbUt4Y0R4XlRIKCl9RURoYT9IJFJXPFZl
CnpSU3hnPnl4NCM1OEBuIyNKTnVsOGIrRz10VFkteHRnN2Q4Sjl0N0d3X0FtQSliT0tgPlQqcm0t
ZWBpfC1wcWREdAp6RSNGYDBBbD9GSWJUZldtJDZKTTxlKj9IT1J6Y2F9VSgkcn1DNHlsYyNxV2V6
KUF6VXg7djZwKSZMT34yUi1mWWAKem4xMHwtT1lgI3MqPWAwVl9DV3dBSUtHQ0NVWD1SfFVrTVJp
THt8TkxwQFhwOGc4PXA8Zi1WS3sjNDdpK1p8ciQ9CnpSTE8pPF9AOyt2YjZQQnBRfG5NTG1zfDBs
a3hgdHhpUzsrbytUUk07MmlRYD17PWZqNWV9fD9PSyRqaHIreFMtQgp6S0Nsaz5nQGdaRERXNyY8
JktsdEJ6fmpLLXpgWWBaTjVwPjlBTU88a0ZpdztLciVTKSZefEhUVCFueDFMfEcyZ1EKenJeVVh6
ejc3X2tlWk5gRnw5Y1pTNVlzPD42aX4qREBYby1AUGtkaVFhRHp1ZjBOfFAkQjU7bDRgMExGZ1B2
YGNqCnoyfE92YCpkI2YmJG00XnJlXighMUd6aWl1d0w0V1QhS0VUZEUoYnZ4eSR8clRJYDt3QWkj
JXBAY01JdzclU3FuWQp6KCNwSDdwMnxWaTB5ci1BLSR6UVF3cUY1R2Nid2kwSXwjQ2tZP29zRlEh
WiRmUURFcXYyRDFWKTxzfmtIT1JWQF4KelBsTTQ+O00mNUZCfmc0c2ZWYWZ6VXkyejNCTz9MS2t7
dk5+UDFCVVVpbGw+JmZCQzJsS01tJX1DYT59VERFSWxYCnpHYFlyMG19QikoJSpYd3AxTCE9IU1p
anY0eGZ9cHxDZ0dmQnU+ZDB4ZEB6T2gmOTx5eSpFSGxyPW5tT0ZwNXxyewp6dXEqSXUlc2FwRiM5
dTROYzE+dVd5MXRJaHtZe1dZNjJQOSRYPkdESHVydSYqNTheakJxaTY1elJYQkJxa2UoTEkKelh4
fjYtXjB3MzZFZVpiOz1DITlhejxOd1M7Q2ZCNnJYe1c1dyRVNjhHNkwoS3cqJF8/JXl8czA8RXcj
dGZQWlY9CnpSfV89YjQ8Q1FvZ2N6enh1dnJtTXBFWTFjdTw+aEhCbEoteWVabDRHV2R+d0JxUmhw
LUR6aWI4d2BuUDBkPzI9Qwp6SmZnZ2FAamtOQDwwISVoPDFrKV9NcGlsQWhGUGEjOFpmZz8+NXt7
fDZSUzkpeX1kbXJJQE4tNEp2TFpFIVAyaVgKeiN2NF9xZ2lrUER5VVdGNXY2NilWWlV5YHFeQ0pF
TDU4fklLbSkoQ2lyfXYkQXB4YUIkM0o/RmtDb21UQzQpb1g5CnpjJiohYUZwZHpHTmhTRVlXQVhk
RlklZDBHan56YzR4Sz0pK15JVkpJNDlwVSEwMmN2TVc1KnhIeFcmcmgtI05vIQp6YlVQb3AybHoq
bTgpKz5mZFk9TVhPUXE3N0ZidnpuRmd5cSMyIWlFNzVFS2lBIXJocDZ1UnBZWS08NT9wJSl2T3UK
emQ+KCVvamA3NllPYWQ3QmNebGh7PnpiVyN6U3FoVXhDYFMwYTR2OSloZDdQYGV1e0RTUD5OTV8x
RWZ+JjApQzVJCnokR0EmSCt8c2ZQXz0zYXVlfmVpY0A+UWBrK2toYGdpd0JJOys1WjRQMWE5KkRv
TDdqfFpMXllXeH1VLXglMm52WQp6PXhBP21rMVcybmE9Q21eeG09IURzWkBxMSNoPVVObWdJbClg
UlZ6NWVtVFo1Tm9UUUc/RFRCYHt5QGE8QmdgNVcKej5wVlZ5cHBPc0IxPmRlQmZ7bm12aklZQVQ3
MWxgQFM0XiV3a3Z0RHZPdDxzZnEkYzE4N3wkUnM4N1k9dThXQ0w5CnpMbz5PcmpGLTxMQX5Ze2E5
N2A7TE11Z3VkP34wWkcwXk11UXswOEhYQEdaTDZCSzllTSN7bW5mbCs5eS1ge2FMSQp6UzBYcjIx
aDYje3phUio1TmRqMUBSRUMkITwlIyl4eyRpPCFZa0gtckM0bGM+OTNkdzB1KylzIyQkciVEX3I2
dFkKei1xc3skX31ENVUqYSokKl9MJXJCbExHNio0YndeVC18S3B+X3JjT1VVZzs+IzUlUEleT2FO
eX05ejBULSRSd1FpCnprZlVwT1BPUTkwO0JDR3Y3VTQwVG80JSlyXyZ0Qmkje0wtWmxaeHA4c1It
d0xofSZNe2NSPiY1RXJ8VlFmaHokbAp6bH1jbDVAZTlLK3U8fkZTMU9ZKTE8U0xjUUBLVUtYcmNm
eHtmJDB6SW1qRzUxemMrI0pWSHxPYE5YQHFadnBgVlAKekZMYk1YSG9GTEIjUT4+UFptfSRecTAk
RXdpUWp6UzxYWmg2e2gpflBHKDRiKzA3aX42UzJ+UHlhbChJaEdsNFUkCnpaN2RQSSk8YVh3VWhq
SSgqcyh7WXglSHN1PU5+UWFuelkqQkI7YW96MStibkIxUFdtb3cjKU8zaXkhaEdLQGRkUwp6P2F+
Y1koPF4ja1IpeT01TFVzK3R7cSNTOV5NTn1zQmY8ODYtKy1IU2NeZ1J0WE53NWg+cHcoYHExJDFX
ISszWCkKem4qTTRgWE03fXhiTDFHbnBGRTNTKVlPMGJ4Q2RiZ3ElWGBqeDdYTnJQMUxXcTkoYytV
LWZ6a0ZwX1ZteEc9OFFBCnpNV2ROWFVaJGgoVDQrODcwUXFSWkJVWjVtdjI5WmVueylHfFNlbXBp
MChpYlc9K1Y7NUl2S097PG1pTlIyTFlGJQp6XmZ2PntrUzEydDNfVDZfOFFseGcmekJ9cm0qO0Vn
cUkpNm1ZR2tuPCRjUCZJdTkrJHA9T2NlJmFTeXtSZypnfHEKekBjaGVDPXsraX5xU2N0ZUskcU12
cEhtVyFPLWEhXz9KRTxjQD1hP3wyVWdSM0xaY1YxLVV7R00+NFVnaF9QK3hoCnpCODQjdFNMXmNI
T3t9IVIyZVpXYmk7d1Yqd1E4ZCV4TjBKQXp6aTsoWVlFJjxSKz5MNjsrTklEJWxsTDA1dG9kVgp6
RmVUUkg4Ozl3YTheXn1XdmAmQXFlJmRwdm5FdTk1bElHRGduNkhRdDVYQnchJil3eFh7QFhBRWpS
I156cXRCNz4KemhTbDthZFUpUDlVPE4pUXthUHI8WipGanV8STB4VEVLaTZkakJPaFFIc19ZcGwh
QE1xMHh1SVdkcVMqfHNuWG5lCnp2SW1vVzAmc1ZlU1lwLTBGRHFgNV51RVZ4XjFMWS1aSmxJKkVZ
X2V7U2Z3OC07KDMzXkBqV0U+VyV1cDEoTExXVQp6Jk5uYXZiODlATiFQYiVuZjUwcnQ2RDxUWmpx
WDhgd1Z2WWIhMVAxVE5JM3A3V35CTytDVGFuIzJURE5ANnZlNnoKemdDSE9iTCkrUjZnQ097eUBn
d0ohTkhHZHIlTDA1P0szN1hFX2Q4JVc7UDAzfEspVkNwVztKaiYlYCpUfVA1Z1NZCnpLd2I2JE16
en1tKGlERy1ZUEteKTFoYj9rZnFNLTwpMWNCJGZrRG4mPl5Ua1l3OT87WnUoaj1MTVl5ZXtIODVZ
bwp6eGdyRnM8YWt6ZDA8I3ByJk8pSlpjUF5KKDV7NitWNjEqUz9EaVQ1PDQ4eVJKJWpLNUhneT5F
ak9vUTFlKjBlWVYKenYtYXlMen14KSloKiZkSUZVdjJmQFU7Uzs2RzY8SFJoWUBSTnJofD9lcU1o
Q25gVCpqJWZ1PT8tI1VJQnJYVFFOCno+d0k3QWhJdEVQaWRZJVktN2s3R1c+NjVeejZxMW04bmA5
KS00MishZklFdk54RFcyJDIxK308Q0dCKlhVSkQ/dwp6SGxOUT1QY3NvKHRuWDk7bjBBYExGPzRy
PzkjQEJneDRGTHhtbyV8N3s+b3VpUDJkKE9kfWt5YTghZkVAQUFQWG4Kej16YlNDWnNtV0M2aypL
YlVFdDc0fDRPV2o9PTBZOG1aWEA2PTdDNUE/KnZad1NQcnYjNlFxVHt5JGFVfWJRTyFtCnp1S3Jr
bjUhMjs/VXNmbHBMKVMwUGUofj5XbCpKa3ptdkY0ajw4e3VnQSM3YEtgfSRpb2M5I05ITm9hYVVR
IWgkJgp6ZF9LRFhSeyVmSHhFdXheXklKcCg9I29qIWI0bFMwIVBRMFZBPFlibzBWcztlYyFPaTFw
dmpfPkBEP0l9JHxsN1oKekgzPH1AeGUzWUVGPV5QKGthZkQ4dTMxRDtIVnVNNDdJZmNuQipuS0o8
TE9+KmozMntqSjBraW5TYFBBWE5BYWg8CnojeiEmVWZ4JnBtZXA8N2FxQkopQlNyPDQrQXFwO3Q3
OW08bmRWaFNnTDt6PUpCenxpd0AhUX1+ezNmUzdaO0VEUgp6TWUqT2ZxWmRzfW1yYy1VKXdObFUm
dmxXMUV+fjcye21Ba0VQZnBScXBSQ3phUUpQeC0oK1hTRzt1bUBwenFBNSkKenNiKV9fWD9fOCRD
MigxYi07NDczMD4lTk81N1l1dzZjeGFsTFlLQXBFaFU/Z1cpKG4xWDsxO0k9UU5hJWpoRnM9Cnpn
PjB0MGdxUldMdGZ0d2Q1a01VUFFJdE5DKDxKRFhfPD5vTjwjNz9ocG48TVNRSXJlPkZ6OTdSWGE8
R0B3KnA3WAp6e142SmZmRH1kOWowQ1hKLW9CVmNIdk44MlZiKW9sVnBSZUZYVkpZJS1iTDJFVSE8
MHFxQks3RlA1OWRQbVhIPE8KcTE1K187Jn1QWXtub1NqeCY8X19FWVZsdGVBbSg9VVZeN3VxMDAw
MDxNTlVNbkxTVFlWPzYlcWYKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKaW5kZXggMTE1MTM5MDIzYTdhNmYwNmZlZjZlODczNmRj
YzUyMzhiNWUyMjYxYi4uMWY4NjY0NjI4ODA3NTdjNmMyZWZmYjgyNTQwZDg2YjBhYTA1YTUwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1Bh
bmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQ
YW5lbC5qcwpAQCAtNzAsNiArNzAsMTAgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHByb2ZpbGUuX3Byb2ZpbGVWaWV3OwogICAgIH0sCiAK
KyAgICByZXNldDogZnVuY3Rpb24oKQorICAgIHsKKyAgICB9LAorCiAgICAgZ2V0IHdlbGNvbWVN
ZXNzYWdlKCkKICAgICB7CiAgICAgICAgIHJldHVybiAiIjsKQEAgLTEzNSw2ICsxMzksNyBAQCBX
ZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLl9yZXNldCgp
OwogCiAgICAgdGhpcy5fcmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLkNQVVBy
b2ZpbGVUeXBlKCkpOworICAgIHRoaXMuX3JlZ2lzdGVyUHJvZmlsZVR5cGUobmV3IFdlYkluc3Bl
Y3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlKCkpOwogICAgIGlmIChDYXBhYmlsaXRpZXMuaGVh
cFByb2ZpbGVyUHJlc2VudCkKICAgICAgICAgdGhpcy5fcmVnaXN0ZXJQcm9maWxlVHlwZShuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZSgpKTsKIApAQCAtMjI4LDgg
KzIzMywxMSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgdGhpcy5zaWRlYmFyVHJlZUVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygic29tZS1leHBh
bmRhYmxlIik7CiAKLSAgICAgICAgZm9yICh2YXIgdHlwZUlkIGluIHRoaXMuX3Byb2ZpbGVUeXBl
c0J5SWRNYXApCi0gICAgICAgICAgICB0aGlzLmdldFByb2ZpbGVUeXBlKHR5cGVJZCkudHJlZUVs
ZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgZm9yICh2YXIgdHlwZUlkIGluIHRoaXMu
X3Byb2ZpbGVUeXBlc0J5SWRNYXApIHsKKyAgICAgICAgICAgIHZhciBwcm9maWxlVHlwZSA9IHRo
aXMuZ2V0UHJvZmlsZVR5cGUodHlwZUlkKTsKKyAgICAgICAgICAgIHByb2ZpbGVUeXBlLnRyZWVF
bGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgICAgICBwcm9maWxlVHlwZS5yZXNldCgp
OworICAgICAgICB9CiAKICAgICAgICAgdGhpcy5wcm9maWxlVmlld3MucmVtb3ZlQ2hpbGRyZW4o
KTsKIApAQCAtMjg1LDEwICsyOTMsMTAgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICByZXR1cm4gZXNjYXBlKHRleHQpICsgJy8nICsgZXNjYXBlKHBy
b2ZpbGVUeXBlSWQpOwogICAgIH0sCiAKLSAgICBfYWRkUHJvZmlsZUhlYWRlcjogZnVuY3Rpb24o
cHJvZmlsZSkKKyAgICBhZGRQcm9maWxlSGVhZGVyOiBmdW5jdGlvbihwcm9maWxlKQogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMuaGFzVGVtcG9yYXJ5UHJvZmlsZShwcm9maWxlLnR5cGVJZCkpCi0g
ICAgICAgICAgICB0aGlzLl9yZW1vdmVQcm9maWxlSGVhZGVyKHRoaXMuX3RlbXBvcmFyeVJlY29y
ZGluZ1Byb2ZpbGUpOworICAgICAgICAgICAgdGhpcy5fcmVtb3ZlVGVtcG9yYXJ5UHJvZmlsZSgp
OwogCiAgICAgICAgIHZhciB0eXBlSWQgPSBwcm9maWxlLnR5cGVJZDsKICAgICAgICAgdmFyIHBy
b2ZpbGVUeXBlID0gdGhpcy5nZXRQcm9maWxlVHlwZSh0eXBlSWQpOwpAQCAtMzUzLDYgKzM2MSwx
MiBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0K
ICAgICB9LAogCisgICAgX3JlbW92ZVRlbXBvcmFyeVByb2ZpbGU6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHRoaXMuX3JlbW92ZVByb2ZpbGVIZWFkZXIodGhpcy5fdGVtcG9yYXJ5UmVjb3Jk
aW5nUHJvZmlsZSk7CisgICAgICAgIGRlbGV0ZSB0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9m
aWxlOworICAgIH0sCisKICAgICBfcmVtb3ZlUHJvZmlsZUhlYWRlcjogZnVuY3Rpb24ocHJvZmls
ZSkKICAgICB7CiAgICAgICAgIHZhciB0eXBlSWQgPSBwcm9maWxlLnR5cGVJZDsKQEAgLTgxNyw3
ICs4MzEsNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB2YXIgcHJvZmlsZUhlYWRlcnNMZW5ndGggPSBwcm9maWxlSGVhZGVycy5sZW5ndGg7
CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb2ZpbGVIZWFkZXJzTGVuZ3RoOyAr
K2kpCiAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhhc1Byb2ZpbGUocHJvZmlsZUhlYWRlcnNb
aV0pKQotICAgICAgICAgICAgICAgICAgIHRoaXMuX2FkZFByb2ZpbGVIZWFkZXIocHJvZmlsZUhl
YWRlcnNbaV0pOworICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkUHJvZmlsZUhlYWRlcihwcm9m
aWxlSGVhZGVyc1tpXSk7CiAgICAgICAgIH0KIAogICAgICAgICBQcm9maWxlckFnZW50LmdldFBy
b2ZpbGVIZWFkZXJzKHBvcHVsYXRlQ2FsbGJhY2suYmluZCh0aGlzKSk7CkBAIC04NDUsMTMgKzg1
OSwxMSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICAgICAgfTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChpc1Byb2ZpbGluZykg
ewotICAgICAgICAgICAgICAgIHRoaXMuX2FkZFByb2ZpbGVIZWFkZXIodGhpcy5fdGVtcG9yYXJ5
UmVjb3JkaW5nUHJvZmlsZSk7CisgICAgICAgICAgICAgICAgdGhpcy5hZGRQcm9maWxlSGVhZGVy
KHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUpOwogICAgICAgICAgICAgICAgIGlmIChw
cm9maWxlVHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLlR5cGVJZCkKICAgICAg
ICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnVzZXJNZXRyaWNzLlByb2ZpbGVzQ1BVUHJvZmls
ZVRha2VuLnJlY29yZCgpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB0
aGlzLl9yZW1vdmVQcm9maWxlSGVhZGVyKHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUp
OwotICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxl
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdGhp
cy5fcmVtb3ZlVGVtcG9yYXJ5UHJvZmlsZSgpCiAgICAgICAgIH0KICAgICB9LAogCkBAIC04NjYs
NyArODc4LDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgICAgICAgICBpc1RlbXBvcmFyeTogdHJ1ZQogICAgICAgICAgICAgICAgIH07CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aGlzLl9hZGRQcm9maWxlSGVhZGVyKHRoaXMuX3Rl
bXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUpOworICAgICAgICAgICAgdGhpcy5hZGRQcm9maWxlSGVh
ZGVyKHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUpOwogICAgICAgICB9CiAgICAgICAg
IFByb2ZpbGVyQWdlbnQudGFrZUhlYXBTbmFwc2hvdCgpOwogICAgICAgICBXZWJJbnNwZWN0b3Iu
dXNlck1ldHJpY3MuUHJvZmlsZXNIZWFwUHJvZmlsZVRha2VuLnJlY29yZCgpOwpAQCAtODc4LDcg
Kzg5MCw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUuc2lkZWJhckVsZW1lbnQuc3Vi
dGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiUuMmYlJSIsIChkb25lIC8gdG90YWwpICog
MTAwKTsKICAgICAgICAgICAgIHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUuc2lkZWJh
ckVsZW1lbnQud2FpdCA9IHRydWU7CiAgICAgICAgICAgICBpZiAoZG9uZSA+PSB0b3RhbCkKLSAg
ICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVQcm9maWxlSGVhZGVyKHRoaXMuX3RlbXBvcmFyeVJl
Y29yZGluZ1Byb2ZpbGUpOworICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZVRlbXBvcmFyeVBy
b2ZpbGUoKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTg5OSw3ICs5MTEsNyBAQCBXZWJJbnNw
ZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKIAogICAgIGFkZFByb2ZpbGVI
ZWFkZXI6IGZ1bmN0aW9uKHByb2ZpbGUpCiAgICAgewotICAgICAgICB0aGlzLl9wcm9maWxlci5f
YWRkUHJvZmlsZUhlYWRlcihwcm9maWxlKTsKKyAgICAgICAgdGhpcy5fcHJvZmlsZXIuYWRkUHJv
ZmlsZUhlYWRlcihwcm9maWxlKTsKICAgICB9LAogCiAgICAgYWRkSGVhcFNuYXBzaG90Q2h1bms6
IGZ1bmN0aW9uKHVpZCwgY2h1bmspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1dlYktpdC5xcmMKaW5kZXggZjVhNGI1OGZlN2UzMzVhMTUzNjg3NzI2OWIxYmZlZTUwY2Uw
MjYxNC4uZmIyNDk1ODQzZGY1YWMwMTRiYzNhMDZiZWU2YTUwYjA3MjRlNTBjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtMjksNiArMjks
NyBAQAogICAgIDxmaWxlPkNvb2tpZXNUYWJsZS5qczwvZmlsZT4KICAgICA8ZmlsZT5DU1NDb21w
bGV0aW9ucy5qczwvZmlsZT4KICAgICA8ZmlsZT5DU1NLZXl3b3JkQ29tcGxldGlvbnMuanM8L2Zp
bGU+CisgICAgPGZpbGU+Q1NTU2VsZWN0b3JQcm9maWxlVmlldy5qczwvZmlsZT4KICAgICA8Zmls
ZT5DU1NTdHlsZU1vZGVsLmpzPC9maWxlPgogICAgIDxmaWxlPkRhdGFiYXNlLmpzPC9maWxlPgog
ICAgIDxmaWxlPkRhdGFiYXNlUXVlcnlWaWV3LmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4IDcwZDkyZjZhOGU2Mzdl
NTlmNDc3NGIzN2E0OTE2ZWJkNzg1YzEyYmUuLjQ4Y2RlMTAzNzg2NTA1YjNhYzRiNTE4NmFjZGE2
YmRlODBmZWViY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5jc3MKQEAgLTI0NzcsNiArMjQ3NywxNCBAQCBib2R5LnBsYXRmb3JtLW1hYyAj
ZHJhd2VyLXN0YXR1cy1iYXIgLnNlYXJjaC1zdGF0dXMtYmFyLXByb2dyZXNzIHsKICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2IoMjE2LCAwLCAwKSAhaW1wb3J0YW50OwogfQogCisucmVjb3JkLWNz
cy1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSAuZ2x5cGggeworICAgIC13ZWJraXQtbWFzay1wb3Np
dGlvbjogLTEyOHB4IC00OHB4OworfQorCisucmVjb3JkLWNzcy1wcm9maWxlLXN0YXR1cy1iYXIt
aXRlbS50b2dnbGVkLW9uIC5nbHlwaCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIxNiwg
MCwgMCkgIWltcG9ydGFudDsKK30KKwogLnN0b3JhZ2UtZW1wdHktdmlldywgLnN0b3JhZ2Utdmll
dyAuc3RvcmFnZS10YWJsZS1lcnJvciB7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgIHRv
cDogMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5odG1sCmluZGV4IDYyMzRhNDY0OTA3ZmY2NjcxYjFmY2U5ZWE0ZDQ5NTUwZGJiNGEzM2QuLjZi
NTZmM2IxYmIzNTJiYmM3ZjljMWFmMjMwYzAyMDI0N2UyODJjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtMTU1LDYgKzE1
NSw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
Qm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJUb3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUHJvZmls
ZVZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlBhcnRpYWxRdWlja1NvcnQuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkhlYXBTbmFwc2hvdC5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSGVhcFNu
YXBzaG90UHJveHkuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRjN2UwZDAxNDFjYzFhYjBjMjgyMzY0
MjIzNjNkMTNhMzllYTY1ZjYuLjg0YmMyMzBjZGI1YTE0MjIxMjIwMjkxNjdkYTRjYzllODM2MDZk
ZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMi0yMyAgQWxleGFuZGVyIFBhdmxvdiAg
PGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEltcGxlbWVu
dCBDU1Mgc2VsZWN0b3IgcHJvZmlsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc0MDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXRl
c3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0RldGFpbGVkSGVhcHNob3RUZXN0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvcHJvZmlsZXItdGVzdC5qczoKKyAgICAgICAgKGluaXRp
YWxpemVfUHJvZmlsZXJUZXN0Lkluc3BlY3RvclRlc3Quc3RhcnRQcm9maWxlclRlc3Quc3RhcnRU
ZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfUHJvZmlsZXJUZXN0Lkluc3BlY3RvclRlc3Quc3Rh
cnRQcm9maWxlclRlc3QpOgorCiAyMDExLTEyLTI0ICBKYXJyZWQgTmljaG9sbHMgIDxqYXJyZWRA
c2VuY2hhLmNvbT4KIAogICAgICAgICBBbGxvdyBYTUxIdHRwUmVxdWVzdCByZXNwb25zZVR5cGUg
dG8gYmUgc2V0IGF0IGFueSBzdGF0ZSB1cCB0byBhbmQgaW5jbHVkaW5nIEhFQURFUlNfUkVDRUlW
RUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1o
ZWFwc2hvdHMtdGVzdC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxl
ZC1oZWFwc2hvdHMtdGVzdC5qcwppbmRleCA0NmJjZGU3NjRhOTliOWFlNDVkZDJmYWQ3OTY5MDI4
ZjVkZjczZDBjLi41Y2ExYmNmNDViZDU3NzQ1NDBjOWRiZDA3Mjc0OTY0NzAzMzkyMjIyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3Rz
LXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhl
YXBzaG90cy10ZXN0LmpzCkBAIC0zNjksNyArMzY5LDcgQEAgSW5zcGVjdG9yVGVzdC50YWtlQW5k
T3BlblNuYXBzaG90ID0gZnVuY3Rpb24oZ2VuZXJhdG9yLCBjYWxsYmFjaykKICAgICB9CiAgICAg
SW5zcGVjdG9yVGVzdC5vdmVycmlkZShQcm9maWxlckFnZW50LCAiZ2V0UHJvZmlsZSIsIHB1c2hH
ZW5lcmF0ZWRTbmFwc2hvdCk7CiAgICAgSW5zcGVjdG9yVGVzdC5fdGFrZUFuZE9wZW5TbmFwc2hv
dENhbGxiYWNrID0gY2FsbGJhY2s7Ci0gICAgV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy5f
YWRkUHJvZmlsZUhlYWRlcihwcm9maWxlKTsKKyAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2Zp
bGVzLmFkZFByb2ZpbGVIZWFkZXIocHJvZmlsZSk7CiAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5w
cm9maWxlcy5zaG93UHJvZmlsZShwcm9maWxlKTsKIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9wcm9maWxlci9wcm9maWxlci10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3Byb2ZpbGVyL3Byb2ZpbGVyLXRlc3QuanMKaW5kZXggZmQ1NDVkMDhiYjM5NTVkNDY0
ODc4OTkwZTVjMzQ5NTQyMDQxNWM3Zi4uMmRmOWM1ODgxZDBjNmVjNzk3MmJjMTE3MWQ1ZDFmNTYw
NjM5MDgwZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3Byb2Zp
bGVyLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3Byb2ZpbGVy
LXRlc3QuanMKQEAgLTcsNyArNyw3IEBAIEluc3BlY3RvclRlc3Quc3RhcnRQcm9maWxlclRlc3Qg
PSBmdW5jdGlvbihjYWxsYmFjaykKICAgICBmdW5jdGlvbiBzdGFydFRlc3QoKQogICAgIHsKICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlByb2ZpbGVyIHdhcyBlbmFibGVkLiIpOwot
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9m
aWxlcywgIl9hZGRQcm9maWxlSGVhZGVyIiwgSW5zcGVjdG9yVGVzdC5fcHJvZmlsZUhlYWRlckFk
ZGVkLCB0cnVlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rv
ci5wYW5lbHMucHJvZmlsZXMsICJhZGRQcm9maWxlSGVhZGVyIiwgSW5zcGVjdG9yVGVzdC5fcHJv
ZmlsZUhlYWRlckFkZGVkLCB0cnVlKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVy
KFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldy5wcm90b3R5cGUsICJyZWZyZXNoIiwgSW5zcGVj
dG9yVGVzdC5fcHJvZmlsZVZpZXdSZWZyZXNoLCB0cnVlKTsKICAgICAgICAgSW5zcGVjdG9yVGVz
dC5zYWZlV3JhcChjYWxsYmFjaykoKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120682</attachid>
            <date>2011-12-28 09:40:17 -0800</date>
            <delta_ts>2011-12-29 03:57:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74004-20111228214015.patch</filename>
            <type>text/plain</type>
            <size>28939</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2MyMzJiYTNkNTU5YmU4
MzRjN2ZkZDY1MDI3ZmZmYjhiNGVhNzcyZi4uNGRlMjM2MGZiODBhMzY3MDJkNjUzY2UxYWQ1MGY5
YzgxNDQwM2I3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDExLTEyLTI4ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogSW1wbGVtZW50IENTUyBzZWxlY3RvciBwcm9maWxlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQwMDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uIG9mIENTUyBz
ZWxlY3RvciBwcm9maWxlciBtZWFzdXJlcyB0aGUgdG90YWwgdGltZSByZXF1aXJlZCB0byBtYXRj
aCBhIGNlcnRhaW4gc2VsZWN0b3IKKyAgICAgICAgYWdhaW5zdCBET00gbm9kZXMgYW5kIGFwcGx5
IHRoZSBzdHlsZSBkZWNsYXJhdGlvbiBwcm9wZXJ0aWVzIHRvIHRoZSBwYXJ0aWN1bGFyIGVsZW1l
bnQsCisgICAgICAgIGFzIHdlbGwgYXMgdGhlIG51bWJlciBvZiBzZWxlY3RvciAgbWF0Y2hlcyAo
aS5lLiB0aGUgbnVtYmVyIG9mIG5vZGVzIHRoYXQgbWF0Y2hlZCB0aGUgc2VsZWN0b3IuKQorICAg
ICAgICBUaGUgcmVzdWx0cyBhcmUgYXBwcm94aW1hdGUgZHVlIHRvIGludGVybmFsIG1hdGNoaW5n
IGFsZ29yaXRobSBvcHRpbWl6YXRpb25zIChzaGFyZWQgc3R5bGVzIGV0IGFsLikKKyAgICAgICAg
TXVsdGlwbGUgc2VsZWN0b3JzIHdpdGggdGhlIHNhbWUgc2VsZWN0b3JUZXh0IGFyZSBjb2FsZXNj
ZWQgaW50byBhIHNpbmdsZSByZWNvcmQuCisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL2xvY2Fs
aXplZFN0cmluZ3MuanM6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9jb21waWxlLWZy
b250LWVuZC5zaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1NlbGVjdG9yUHJv
ZmlsZVZpZXcuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yRGF0
YUdyaWROb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvckRhdGFHcmlkTm9k
ZS5wcm90b3R5cGUuZ2V0IHJhd0RhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVj
dG9yUHJvZmlsZVZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmls
ZVZpZXcucHJvdG90eXBlLmdldCBzdGF0dXNCYXJJdGVtcyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuZ2V0IHByb2ZpbGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLnNldCBwcm9m
aWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3Rv
dHlwZS53aWxsSGlkZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxl
Vmlldy5wcm90b3R5cGUuX2NyZWF0ZVByb2ZpbGVOb2Rlcyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUucmVmcmVzaCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUucmVmcmVzaFZpc2li
bGVEYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnBy
b3RvdHlwZS5yZWZyZXNoU2hvd0FzUGVyY2VudHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNT
U1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLl9zb3J0RGF0YSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuX3NvcnRQcm9maWxlLmdl
dCBzZWxlY3RvckNvbXBhcmF0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9y
UHJvZmlsZVZpZXcucHJvdG90eXBlLl9zb3J0UHJvZmlsZS50aW1lQ29tcGFyYXRvcik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuX3NvcnRQ
cm9maWxlLm1hdGNoZXNDb21wYXJhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxl
Y3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZS5fc29ydFByb2ZpbGUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNT
U1NlbGVjdG9yUHJvZmlsZVR5cGUucHJvdG90eXBlLmdldCBidXR0b25Ub29sdGlwKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLnByb3RvdHlwZS5idXR0b25D
bGlja2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLnBy
b3RvdHlwZS5nZXQgdHJlZUl0ZW1UaXRsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2Vs
ZWN0b3JQcm9maWxlVHlwZS5wcm90b3R5cGUuZ2V0IGRlc2NyaXB0aW9uKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLnByb3RvdHlwZS5yZXNldCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5wcm90b3R5cGUuaXNSZWNv
cmRpbmdQcm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVU
eXBlLnByb3RvdHlwZS5zZXRSZWNvcmRpbmdQcm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLnByb3RvdHlwZS5zdGFydFJlY29yZGluZ1Byb2ZpbGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUucHJvdG90eXBl
LnN0b3BSZWNvcmRpbmdQcm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3Rv
clByb2ZpbGVUeXBlLnByb3RvdHlwZS5jcmVhdGVTaWRlYmFyVHJlZUVsZW1lbnRGb3JQcm9maWxl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLnByb3RvdHlw
ZS5jcmVhdGVWaWV3KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVh
cHNob3RWaWV3LmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcu
anM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlLnByb3RvdHlwZS5yZXNldCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuX3Jlc2V0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5hZGRQcm9maWxlSGVhZGVyKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5fcmVtb3ZlVGVt
cG9yYXJ5UHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90
b3R5cGUuc2V0UmVjb3JkaW5nUHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmls
ZXNQYW5lbC5wcm90b3R5cGUudGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuX3JlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlLmFkZFBy
b2ZpbGVIZWFkZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvcHJvZmlsZXNQYW5lbC5jc3M6CisKIDIwMTEtMTItMjggIFZz
ZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogQWRkIGRvbWFpbi5wbmcgdG8gV2ViQ29yZS5neXBpIC8gV2ViS2l0LnFyYy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBi
L1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCAx
NjQ0MTMzMjI2ODBlYThhMmE2YjlhNmU0YThlNmZjNTFmNjVhYjdhLi5lY2JjMDMxOTAyYjk0YTk0
YTMwYWNmMjIzMzY2Yjc5YTJhODZhYTY3IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDEw
NTkKemNtZUhgeUd1Zkc2dnZOZmFUQm96bmgtKGVQPEFWTygzJUw8bUlVZSk2XlU4QyhvbXhwQnJX
e3wyUXNgdmckXzFsCnorXnMxWm54Jnprc2t0RiZZM30+R0g7SUlyOHNsPkFgUTd2UW9PNkReLUBV
Jnh6MF4lTFMrKWwkTktWS2MlfG03PQp6TDw8eikzM3ZhRzl5PSU4amwzTDFERnVtOG8tJmw+Z1Fk
UnE3KjshQXJsOFpiITU0M2lHNUJFRnElaChsNnI7SEMKenohSE5jMmMzc2JmfEpHP0swWjwkZyQ3
NHRyRDshI2lofmk9R1EjK2RWNGMtKzE8d2lsd3tCbypAVl9jWVgkfCZTCnpPekRUIzt7YEpmal9B
WTw5bUJWPzBKSkV6alhgdSpTaEcwTSZLOTA1I0BqYCtJdk5ROFo7TTFrWFlsP2kqJSZxcQp6KGd1
ODRXUWlpMWh7fU1KKkM9dD8yVSlEZXcmaUhoTHFwYEVXZHV6X1RzUnkzdGVVMyQtfUFyUWJBeUxG
NFduRj0KekV4YVB6aVkwQD0lK19IXlU2Z05wVHVQWEV6MEtPQCpOekZkbjZFPSl5cVl3ci1PMlMp
ZW0hYUIoMHZFQDdBPFU+CnpAXkpsQlFWJmxoQlVoOXVlcGtHRlRrN0lSV2tqdGhyV1NyVV9kI1N7
eXBYd21YNjlwTUt6JXkqOFhaNUtAPlM4IQptXj1jUTdTRVMhISlhUD1iZz08eW1eWT9BT0VJT3Y9
N3c+YTxUJUVrTT9TMjUySz0oTlMKCmRlbHRhIDUzCnpjbVYtNTBMdVVCJjstVzkxaDZWOW11P2dS
MkQzT1c8VXE0LVopaCNFRVMoQWlsTWJPT3Yqd0AjMSskMnpXQ09GNwpMc3V+NWVSPElPIVA7Q3ti
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IGExNjNhOGRmNWQzZmYzMzFhY2EwM2VlMmRiYWZiZDQ1ZjZk
MjgwNmEuLmRkNDhlZDE3MDBlYzE4MTc2ZDcxZTg1OTg5ZWRhZDI2MDdjNGVhMjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTYzODcsNiArNjM4Nyw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9Db29raWVzVGFibGUuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvQ1NTQ29tcGxldGlvbnMuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQv
Q1NTS2V5d29yZENvbXBsZXRpb25zLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL0NTU1NlbGVjdG9yUHJvZmlsZVZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9EYXRhYmFzZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRh
YmFzZVF1ZXJ5Vmlldy5qcycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCmluZGV4IDZlYTBmZmNkYjgyMDYxZjNlZWQzNTAwZDdjMTg5YmRiYTE3ZTQzNmMu
LjAxZjU5Zjg2YmY1NzQ3MzljOWNmZmZkNTk4NjUxOTY3YjFjYWE2ODggMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03MTUzMyw2ICs3MTUzMywx
MCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5caW5zcGVjdG9yXGZyb250LWVuZFxDU1NTZWxlY3RvclByb2ZpbGVWaWV3LmpzIgorCQkJCQk+
CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9y
XGZyb250LWVuZFxDU1NTdHlsZU1vZGVsLmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoCmluZGV4IGI5Yzg4ODBk
MGRkOWQ0YTMxNDhiZDE5OWFmNGRkNWRjN2YwNTAzMTAuLjFhNzU3MjhkNWIyZmYwMzM4MWVlMGZj
YjYzNjIwNDA4M2EyMTUyN2IgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9j
b21waWxlLWZyb250LWVuZC5zaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGls
ZS1mcm9udC1lbmQuc2gKQEAgLTE5Myw2ICsxOTMsNyBAQCBqYXZhIC1qYXIgfi9jbG9zdXJlL2Nv
bXBpbGVyLmphciAtLXN1bW1hcnlfZGV0YWlsX2xldmVsIDMgLS1jb21waWxhdGlvbl9sZXZlbCBT
SQogIyBUbyBiZSBjb21waWxlZC4uLgogIyAKICMgW1Byb2ZpbGVyXQorIyBDU1NTZWxlY3RvclBy
b2ZpbGVWaWV3CiAjIEJvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZQogIyBEZXRhaWxlZEhlYXBz
aG90R3JpZE5vZGVzCiAjIERldGFpbGVkSGVhcHNob3RWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1NlbGVjdG9yUHJvZmlsZVZpZXcuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1NlbGVjdG9yUHJvZmlsZVZpZXcu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMWUyZDQ0ZTZiZmNlZDUyOWFjYjQzOTZkMDZmY2I3NmUxMTBhYzc1NQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NT
U2VsZWN0b3JQcm9maWxlVmlldy5qcwpAQCAtMCwwICsxLDMzNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBl
eHRlbmRzIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LkNTU1NlbGVjdG9yUHJvZmlsZVZpZXd9IHByb2ZpbGVWaWV3CisgKi8KK1dlYkluc3BlY3Rvci5D
U1NTZWxlY3RvckRhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKHByb2ZpbGVWaWV3LCBkYXRhKQorewor
ICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUuY2FsbCh0aGlzLCBkYXRhLCBmYWxzZSk7Cisg
ICAgdGhpcy5fcHJvZmlsZVZpZXcgPSBwcm9maWxlVmlldzsKK30KKworV2ViSW5zcGVjdG9yLkNT
U1NlbGVjdG9yRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKKyAgICBnZXQgZGF0YSgpCisgICAg
eworICAgICAgICB2YXIgZGF0YSA9IHt9OworICAgICAgICBkYXRhLnNlbGVjdG9yID0gdGhpcy5f
ZGF0YS5zZWxlY3RvcjsKKyAgICAgICAgZGF0YS5tYXRjaGVzID0gdGhpcy5fZGF0YS5tYXRjaENv
dW50OworCisgICAgICAgIGlmICh0aGlzLl9wcm9maWxlVmlldy5zaG93VGltZUFzUGVyY2VudC5n
ZXQoKSkKKyAgICAgICAgICAgIGRhdGEudGltZSA9IE51bWJlcih0aGlzLl9kYXRhLnRpbWVQZXJj
ZW50KS50b0ZpeGVkKDEpICsgIiUiOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkYXRhLnRp
bWUgPSBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKHRoaXMuX2RhdGEudGltZSAvIDEwMDAsIHRydWUp
OworCisKKyAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgfSwKKworICAgIGdldCByYXdEYXRhKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9kYXRhOworICAgIH0KK30KKworV2ViSW5zcGVj
dG9yLkNTU1NlbGVjdG9yRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAq
IEBleHRlbmRzIFdlYkluc3BlY3Rvci5WaWV3CisgKiBAcGFyYW0ge0NTU0FnZW50LlNlbGVjdG9y
UHJvZmlsZX0gcHJvZmlsZQorICovCitXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmll
dyA9IGZ1bmN0aW9uKHByb2ZpbGUpCit7CisgICAgV2ViSW5zcGVjdG9yLlZpZXcuY2FsbCh0aGlz
KTsKKworICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJwcm9maWxlLXZpZXciKTsKKwor
ICAgIHRoaXMuc2hvd1RpbWVBc1BlcmNlbnQgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY3JlYXRl
U2V0dGluZygic2VsZWN0b3JQcm9maWxlclNob3dUaW1lQXNQZXJjZW50IiwgdHJ1ZSk7CisKKyAg
ICB2YXIgY29sdW1ucyA9IHsgInNlbGVjdG9yIjogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTZWxlY3RvciIpLCB3aWR0aDogIjY1MHB4Iiwgc29ydGFibGU6IHRydWUgfSwKKyAgICAg
ICAgICAgICAgICAgICAgInRpbWUiOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRv
dGFsIiksIHdpZHRoOiAiNzJweCIsIHNvcnQ6ICJkZXNjZW5kaW5nIiwgc29ydGFibGU6IHRydWUg
fSwKKyAgICAgICAgICAgICAgICAgICAgIm1hdGNoZXMiOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIk1hdGNoZXMiKSwgd2lkdGg6ICI3MnB4Iiwgc29ydGFibGU6IHRydWUgfSB9Owor
CisgICAgdGhpcy5kYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29sdW1ucyk7
CisgICAgdGhpcy5kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKCJzb3J0aW5nIGNoYW5nZWQiLCB0
aGlzLl9zb3J0RGF0YSwgdGhpcyk7CisgICAgdGhpcy5kYXRhR3JpZC5lbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX21vdXNlRG93bkluRGF0YUdyaWQuYmluZCh0aGlz
KSwgdHJ1ZSk7CisgICAgdGhpcy5kYXRhR3JpZC5zaG93KHRoaXMuZWxlbWVudCk7CisKKyAgICB0
aGlzLnBlcmNlbnRCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbigiIiwg
InBlcmNlbnQtdGltZS1zdGF0dXMtYmFyLWl0ZW0iKTsKKyAgICB0aGlzLnBlcmNlbnRCdXR0b24u
YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9wZXJjZW50Q2xpY2tlZCwgdGhpcyk7CisK
KyAgICB0aGlzLnByb2ZpbGUgPSBwcm9maWxlOworCisgICAgdGhpcy5fY3JlYXRlUHJvZmlsZU5v
ZGVzKCk7CisgICAgdGhpcy5fc29ydFByb2ZpbGUoKTsKKyAgICB0aGlzLl91cGRhdGVQZXJjZW50
QnV0dG9uKCk7Cit9CisKK1dlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3Rv
dHlwZSA9IHsKKyAgICBnZXQgc3RhdHVzQmFySXRlbXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFt0aGlzLnBlcmNlbnRCdXR0b24uZWxlbWVudF07CisgICAgfSwKKworICAgIGdldCBwcm9maWxl
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9wcm9maWxlOworICAgIH0sCisKKyAgICBz
ZXQgcHJvZmlsZShwcm9maWxlKQorICAgIHsKKyAgICAgICAgdGhpcy5fcHJvZmlsZSA9IHByb2Zp
bGU7CisgICAgfSwKKworICAgIHdpbGxIaWRlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0
aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAtMTsKKyAgICB9LAorCisgICAgX2NyZWF0
ZVByb2ZpbGVOb2RlczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGRhdGEgPSB0aGlz
LnByb2ZpbGUuZGF0YTsKKyAgICAgICAgaWYgKCFkYXRhKSB7CisgICAgICAgICAgICAvLyBUaGUg
cHJvZmlsZXIgbWF5IGhhdmUgYmVlbiB0ZXJtaW5hdGVkIHdpdGggdGhlICJDbGVhciBhbGwgcHJv
ZmlsZXMuIiBidXR0b24uCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICB0aGlzLnByb2ZpbGUuY2hpbGRyZW4gPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBkYXRhLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBkYXRhW2ldLnRpbWVQZXJjZW50ID0g
ZGF0YVtpXS50aW1lICogMTAwIC8gdGhpcy5wcm9maWxlLnRvdGFsVGltZTsKKyAgICAgICAgICAg
IHZhciBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvckRhdGFHcmlkTm9kZSh0aGlz
LCBkYXRhW2ldKTsKKyAgICAgICAgICAgIHRoaXMucHJvZmlsZS5jaGlsZHJlbi5wdXNoKG5vZGUp
OworICAgICAgICB9CisgICAgfSwKKworICAgIHJlZnJlc2g6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHZhciBzZWxlY3RlZFByb2ZpbGVOb2RlID0gdGhpcy5kYXRhR3JpZC5zZWxlY3RlZE5v
ZGUgPyB0aGlzLmRhdGFHcmlkLnNlbGVjdGVkTm9kZS5wcm9maWxlTm9kZSA6IG51bGw7CisKKyAg
ICAgICAgdGhpcy5kYXRhR3JpZC5yZW1vdmVDaGlsZHJlbigpOworCisgICAgICAgIHZhciBjaGls
ZHJlbiA9IHRoaXMucHJvZmlsZS5jaGlsZHJlbjsKKyAgICAgICAgdmFyIGNvdW50ID0gY2hpbGRy
ZW4ubGVuZ3RoOworCisgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsg
KytpbmRleCkKKyAgICAgICAgICAgIHRoaXMuZGF0YUdyaWQuYXBwZW5kQ2hpbGQoY2hpbGRyZW5b
aW5kZXhdKTsKKworICAgICAgICBpZiAoc2VsZWN0ZWRQcm9maWxlTm9kZSkKKyAgICAgICAgICAg
IHNlbGVjdGVkUHJvZmlsZU5vZGUuc2VsZWN0ZWQgPSB0cnVlOworICAgIH0sCisKKyAgICByZWZy
ZXNoVmlzaWJsZURhdGE6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBjaGlsZCA9IHRo
aXMuZGF0YUdyaWQuY2hpbGRyZW5bMF07CisgICAgICAgIHdoaWxlIChjaGlsZCkgeworICAgICAg
ICAgICAgY2hpbGQucmVmcmVzaCgpOworICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC50cmF2ZXJz
ZU5leHROb2RlKGZhbHNlLCBudWxsLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBy
ZWZyZXNoU2hvd0FzUGVyY2VudHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Vw
ZGF0ZVBlcmNlbnRCdXR0b24oKTsKKyAgICAgICAgdGhpcy5yZWZyZXNoVmlzaWJsZURhdGEoKTsK
KyAgICB9LAorCisgICAgX3BlcmNlbnRDbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuc2hvd1RpbWVBc1BlcmNlbnQuc2V0KCF0aGlzLnNob3dUaW1lQXNQZXJjZW50
LmdldCgpKTsKKyAgICAgICAgdGhpcy5yZWZyZXNoU2hvd0FzUGVyY2VudHMoKTsKKyAgICB9LAor
CisgICAgX3VwZGF0ZVBlcmNlbnRCdXR0b246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlm
ICh0aGlzLnNob3dUaW1lQXNQZXJjZW50LmdldCgpKSB7CisgICAgICAgICAgICB0aGlzLnBlcmNl
bnRCdXR0b24udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgYWJzb2x1dGUgdGlt
ZXMuIik7CisgICAgICAgICAgICB0aGlzLnBlcmNlbnRCdXR0b24udG9nZ2xlZCA9IHRydWU7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLnBlcmNlbnRCdXR0b24udGl0bGUgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgdGltZXMgYXMgcGVyY2VudGFnZXMuIik7CisgICAg
ICAgICAgICB0aGlzLnBlcmNlbnRCdXR0b24udG9nZ2xlZCA9IGZhbHNlOworICAgICAgICB9Cisg
ICAgfSwKKworICAgIF9zb3J0RGF0YTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0
aGlzLl9zb3J0UHJvZmlsZSgpOworICAgIH0sCisKKyAgICBfc29ydFByb2ZpbGU6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHZhciBzb3J0QXNjZW5kaW5nID0gdGhpcy5kYXRhR3JpZC5zb3J0
T3JkZXIgPT09ICJhc2NlbmRpbmciOworICAgICAgICB2YXIgc29ydENvbHVtbklkZW50aWZpZXIg
PSB0aGlzLmRhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyOworICAgICAgICB2YXIgaXNQZXJj
ZW50ID0gdGhpcy5zaG93VGltZUFzUGVyY2VudC5nZXQoKTsKKworICAgICAgICBmdW5jdGlvbiBz
ZWxlY3RvckNvbXBhcmF0b3IoYSwgYikKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHJlc3Vs
dCA9IGIucmF3RGF0YS5zZWxlY3Rvci5sb2NhbGVDb21wYXJlKGEucmF3RGF0YS5zZWxlY3Rvcik7
CisgICAgICAgICAgICByZXR1cm4gc29ydEFzY2VuZGluZyA/IC1yZXN1bHQgOiByZXN1bHQ7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0aW1lQ29tcGFyYXRvcihhLCBiKQorICAgICAg
ICB7CisgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBiLnJhd0RhdGEudGltZSAtIGEucmF3RGF0
YS50aW1lOworICAgICAgICAgICAgcmV0dXJuIHNvcnRBc2NlbmRpbmcgPyAtcmVzdWx0IDogcmVz
dWx0OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbWF0Y2hlc0NvbXBhcmF0b3IoYSwg
YikKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYi5yYXdEYXRhLm1hdGNo
Q291bnQgLSBhLnJhd0RhdGEubWF0Y2hDb3VudDsKKyAgICAgICAgICAgIHJldHVybiBzb3J0QXNj
ZW5kaW5nID8gLXJlc3VsdCA6IHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBjb21w
YXJhdG9yOworICAgICAgICBzd2l0Y2ggKHNvcnRDb2x1bW5JZGVudGlmaWVyKSB7CisgICAgICAg
IGNhc2UgInRpbWUiOgorICAgICAgICAgICAgY29tcGFyYXRvciA9IHRpbWVDb21wYXJhdG9yOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIm1hdGNoZXMiOgorICAgICAgICAgICAg
Y29tcGFyYXRvciA9IG1hdGNoZXNDb21wYXJhdG9yOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgInNlbGVjdG9yIjoKKyAgICAgICAgICAgIGNvbXBhcmF0b3IgPSBzZWxlY3RvckNv
bXBhcmF0b3I7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMu
cHJvZmlsZS5jaGlsZHJlbi5zb3J0KGNvbXBhcmF0b3IpOworCisgICAgICAgIHRoaXMucmVmcmVz
aCgpOworICAgIH0sCisKKyAgICBfbW91c2VEb3duSW5EYXRhR3JpZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgeworICAgICAgICBpZiAoZXZlbnQuZGV0YWlsIDwgMikKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICB2YXIgY2VsbCA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxm
V2l0aE5vZGVOYW1lKCJ0ZCIpOworICAgICAgICBpZiAoIWNlbGwpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgaWYgKGNlbGwuaGFzU3R5bGVDbGFzcygidGltZS1jb2x1bW4iKSkKKyAg
ICAgICAgICAgIHRoaXMuc2hvd1RpbWVBc1BlcmNlbnQuc2V0KCF0aGlzLnNob3dUaW1lQXNQZXJj
ZW50LmdldCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IHRoaXMucmVmcmVzaFNob3dBc1BlcmNlbnRzKCk7CisKKyAgICAgICAgZXZlbnQucHJldmVudERl
ZmF1bHQoKTsKKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgfQorfQorCitX
ZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuX19wcm90b19fID0g
V2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICov
CitXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZSA9IGZ1bmN0aW9uKCkKK3sKKyAg
ICBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuQ1NTU2Vs
ZWN0b3JQcm9maWxlVHlwZS5UeXBlSWQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sbGVjdCBD
U1MgU2VsZWN0b3IgUHJvZmlsZSIpKTsKKyAgICB0aGlzLl9yZWNvcmRpbmcgPSBmYWxzZTsKKyAg
ICB0aGlzLl9wcm9maWxlVWlkID0gMTsKKyAgICBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9m
aWxlVHlwZS5pbnN0YW5jZSA9IHRoaXM7Cit9CisKK1dlYkluc3BlY3Rvci5DU1NTZWxlY3RvclBy
b2ZpbGVUeXBlLlR5cGVJZCA9ICJTRUxFQ1RPUiI7CisKK1dlYkluc3BlY3Rvci5DU1NTZWxlY3Rv
clByb2ZpbGVUeXBlLnByb3RvdHlwZSA9IHsKKyAgICBnZXQgYnV0dG9uVG9vbHRpcCgpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkaW5nID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTdG9wIENTUyBzZWxlY3RvciBwcm9maWxpbmcuIikgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlN0YXJ0IENTUyBzZWxlY3RvciBwcm9maWxpbmcuIik7CisgICAgfSwKKworICAgIGJ1dHRvbkNs
aWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9yZWNvcmRpbmcpCisg
ICAgICAgICAgICB0aGlzLnN0b3BSZWNvcmRpbmdQcm9maWxlKCk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHRoaXMuc3RhcnRSZWNvcmRpbmdQcm9maWxlKCk7CisgICAgfSwKKworICAgIGdl
dCB0cmVlSXRlbVRpdGxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkNTUyBTRUxFQ1RPUiBQUk9GSUxFUyIpOworICAgIH0sCisKKyAgICBnZXQgZGVzY3Jp
cHRpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ1NT
IHNlbGVjdG9yIHByb2ZpbGVzIHNob3cgaG93IGxvbmcgdGhlIHNlbGVjdG9yIG1hdGNoaW5nIGhh
cyB0YWtlbiBpbiB0b3RhbCBhbmQgaG93IG1hbnkgdGltZXMgYSBjZXJ0YWluIHNlbGVjdG9yIGhh
cyBtYXRjaGVkIERPTSBlbGVtZW50cyAodGhlIHJlc3VsdHMgYXJlIGFwcHJveGltYXRlIGR1ZSB0
byBtYXRjaGluZyBhbGdvcml0aG0gb3B0aW1pemF0aW9ucy4pIik7CisgICAgfSwKKworICAgIHJl
c2V0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9wcm9maWxlVWlkID0gMTsKKyAg
ICB9LAorCisgICAgaXNSZWNvcmRpbmdQcm9maWxlOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fcmVjb3JkaW5nOworICAgIH0sCisKKyAgICBzZXRSZWNvcmRpbmdQcm9m
aWxlOiBmdW5jdGlvbihpc1Byb2ZpbGluZykKKyAgICB7CisgICAgICAgIHRoaXMuX3JlY29yZGlu
ZyA9IGlzUHJvZmlsaW5nOworICAgIH0sCisKKyAgICBzdGFydFJlY29yZGluZ1Byb2ZpbGU6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3JlY29yZGluZyA9IHRydWU7CisgICAgICAg
IENTU0FnZW50LnN0YXJ0U2VsZWN0b3JQcm9maWxlcigpOworICAgICAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLnByb2ZpbGVzLnNldFJlY29yZGluZ1Byb2ZpbGUoV2ViSW5zcGVjdG9yLkNTU1NlbGVj
dG9yUHJvZmlsZVR5cGUuVHlwZUlkLCB0cnVlKTsKKyAgICB9LAorCisgICAgc3RvcFJlY29yZGlu
Z1Byb2ZpbGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVy
cm9yLCBwcm9maWxlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3IpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBwcm9maWxlLnVpZCA9IHRoaXMuX3Byb2Zp
bGVVaWQrKzsKKyAgICAgICAgICAgIHByb2ZpbGUudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlByb2ZpbGUgJWQiLCBwcm9maWxlLnVpZCkgKyBTdHJpbmcuc3ByaW50ZigiICglcykiLCBO
dW1iZXIuc2Vjb25kc1RvU3RyaW5nKHByb2ZpbGUudG90YWxUaW1lIC8gMTAwMCkpOworICAgICAg
ICAgICAgcHJvZmlsZS50eXBlSWQgPSBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlw
ZS5UeXBlSWQ7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLmFkZFBy
b2ZpbGVIZWFkZXIocHJvZmlsZSk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnBy
b2ZpbGVzLnNldFJlY29yZGluZ1Byb2ZpbGUoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmls
ZVR5cGUuVHlwZUlkLCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9yZWNvcmRp
bmcgPSBmYWxzZTsKKyAgICAgICAgQ1NTQWdlbnQuc3RvcFNlbGVjdG9yUHJvZmlsZXIoY2FsbGJh
Y2suYmluZCh0aGlzKSk7CisgICAgfSwKKworICAgIGNyZWF0ZVNpZGViYXJUcmVlRWxlbWVudEZv
clByb2ZpbGU6IGZ1bmN0aW9uKHByb2ZpbGUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5Qcm9maWxlU2lkZWJhclRyZWVFbGVtZW50KHByb2ZpbGUsIHByb2ZpbGUudGl0
bGUsICJwcm9maWxlLXNpZGViYXItdHJlZS1pdGVtIik7CisgICAgfSwKKworICAgIGNyZWF0ZVZp
ZXc6IGZ1bmN0aW9uKHByb2ZpbGUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3KHByb2ZpbGUpOworICAgIH0KK30KKworV2ViSW5z
cGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5Qcm9maWxlVHlwZS5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcwppbmRleCA5
MDBhNjA2OWMyZjA4ODI4YzJkYjNlOGQ2NmU5MGI1MzZiN2MzMWM5Li43Zjk5OWQ5NjM3NzRjMjg2
ZTNlMjMyNWEwY2IwNjM3N2M4YjQzMTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMKQEAgLTEzMDgs
MTEgKzEzMDgsNiBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFByb2ZpbGVUeXBlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGFrZSBo
ZWFwIHNuYXBzaG90LiIpOwogICAgIH0sCiAKLSAgICBnZXQgYnV0dG9uU3R5bGUoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuICJoZWFwLXNuYXBzaG90LXN0YXR1cy1iYXItaXRlbSBzdGF0dXMtYmFy
LWl0ZW0iOwotICAgIH0sCi0KICAgICBidXR0b25DbGlja2VkOiBmdW5jdGlvbigpCiAgICAgewog
ICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLnRha2VIZWFwU25hcHNob3QoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZp
ZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3Lmpz
CmluZGV4IDdlY2NiZjFhZGZiNGE1MWI1NjlmOTJlNGEwNTYyMDZlZWZiYTQzYjMuLjVlYmYzNjhi
NmI3M2EyZjBkNzFjYTVhZjczNDA4MTQ5OWYzODcyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcwpAQCAtNTgyLDExICs1ODIsNiBA
QCBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUucHJvdG90eXBlID0gewogICAgICAgICByZXR1
cm4gdGhpcy5fcmVjb3JkaW5nID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9wIENQVSBwcm9m
aWxpbmcuIikgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IENQVSBwcm9maWxpbmcuIik7
CiAgICAgfSwKIAotICAgIGdldCBidXR0b25TdHlsZSgpCi0gICAgewotICAgICAgICByZXR1cm4g
dGhpcy5fcmVjb3JkaW5nID8gInJlY29yZC1jcHUtcHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0gc3Rh
dHVzLWJhci1pdGVtIHRvZ2dsZWQtb24iIDogInJlY29yZC1jcHUtcHJvZmlsZS1zdGF0dXMtYmFy
LWl0ZW0gc3RhdHVzLWJhci1pdGVtIjsKLSAgICB9LAotCiAgICAgYnV0dG9uQ2xpY2tlZDogZnVu
Y3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3JlY29yZGluZykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCmluZGV4
IDZlMTRiOWQxZWQzMjFlNmFlYjliYTk2N2NjNjY4YzY1NmM4YTI1M2UuLmE1YmQ4MmZkNDEyODZk
OTU5NWViZWUwMjUzYjcwODgxYTU0NDRhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKQEAgLTM5LDE2ICszOSw2IEBAIFdl
Ykluc3BlY3Rvci5Qcm9maWxlVHlwZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiAiIjsK
ICAgICB9LAogCi0gICAgZ2V0IGJ1dHRvblN0eWxlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB1
bmRlZmluZWQ7Ci0gICAgfSwKLQotICAgIGdldCBidXR0b25DYXB0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLm5hbWU7Ci0gICAgfSwKLQogICAgIGdldCBpZCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5faWQ7CkBAIC03NSw2ICs2NSwxMCBAQCBXZWJJbnNwZWN0b3IuUHJv
ZmlsZVR5cGUucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gcHJvZmlsZS5fcHJvZmlsZVZp
ZXc7CiAgICAgfSwKIAorICAgIHJlc2V0OiBmdW5jdGlvbigpCisgICAgeworICAgIH0sCisKICAg
ICBnZXQgZGVzY3JpcHRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuICIiOwpAQCAtMTQ4LDYg
KzE0Miw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsID0gZnVuY3Rpb24oKQogICAgIHRo
aXMuX2xhdW5jaGVyVmlldy5zZXRVcEV2ZW50TGlzdGVuZXJzKCk7CiAKICAgICB0aGlzLl9yZWdp
c3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUoKSk7CisgICAg
dGhpcy5fcmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJv
ZmlsZVR5cGUoKSk7CiAgICAgaWYgKENhcGFiaWxpdGllcy5oZWFwUHJvZmlsZXJQcmVzZW50KQog
ICAgICAgICB0aGlzLl9yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
ZWRIZWFwc2hvdFByb2ZpbGVUeXBlKCkpOwogCkBAIC0yMzEsOSArMjI2LDExIEBAIFdlYkluc3Bl
Y3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zZWFyY2hDYW5j
ZWxlZCgpOwogCiAgICAgICAgIGZvciAodmFyIGlkIGluIHRoaXMuX3Byb2ZpbGVUeXBlc0J5SWRN
YXApIHsKLSAgICAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMuX3Byb2ZpbGVUeXBlc0J5
SWRNYXBbaWRdLnRyZWVFbGVtZW50OworICAgICAgICAgICAgdmFyIHByb2ZpbGVUeXBlID0gdGhp
cy5fcHJvZmlsZVR5cGVzQnlJZE1hcFtpZF07CisgICAgICAgICAgICB2YXIgdHJlZUVsZW1lbnQg
PSBwcm9maWxlVHlwZS50cmVlRWxlbWVudDsKICAgICAgICAgICAgIHRyZWVFbGVtZW50LnJlbW92
ZUNoaWxkcmVuKCk7CiAgICAgICAgICAgICB0cmVlRWxlbWVudC5oaWRkZW4gPSB0cnVlOworICAg
ICAgICAgICAgcHJvZmlsZVR5cGUucmVzZXQoKTsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMu
X3Byb2ZpbGVzID0gW107CkBAIC0yODMsMTAgKzI4MCwxMCBAQCBXZWJJbnNwZWN0b3IuUHJvZmls
ZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBlc2NhcGUodGV4dCkgKyAnLycg
KyBlc2NhcGUocHJvZmlsZVR5cGVJZCk7CiAgICAgfSwKIAotICAgIF9hZGRQcm9maWxlSGVhZGVy
OiBmdW5jdGlvbihwcm9maWxlKQorICAgIGFkZFByb2ZpbGVIZWFkZXI6IGZ1bmN0aW9uKHByb2Zp
bGUpCiAgICAgewogICAgICAgICBpZiAodGhpcy5oYXNUZW1wb3JhcnlQcm9maWxlKHByb2ZpbGUu
dHlwZUlkKSkKLSAgICAgICAgICAgIHRoaXMuX3JlbW92ZVByb2ZpbGVIZWFkZXIodGhpcy5fdGVt
cG9yYXJ5UmVjb3JkaW5nUHJvZmlsZSk7CisgICAgICAgICAgICB0aGlzLl9yZW1vdmVUZW1wb3Jh
cnlQcm9maWxlKCk7CiAKICAgICAgICAgdmFyIHR5cGVJZCA9IHByb2ZpbGUudHlwZUlkOwogICAg
ICAgICB2YXIgcHJvZmlsZVR5cGUgPSB0aGlzLmdldFByb2ZpbGVUeXBlKHR5cGVJZCk7CkBAIC0z
NTgsNiArMzU1LDEyIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdGhpcy5yZWNvcmRCdXR0b24udGl0bGUgPSB0aGlzLl9zZWxlY3RlZFByb2ZpbGVU
eXBlLmJ1dHRvblRvb2x0aXA7CiAgICAgfSwKIAorICAgIF9yZW1vdmVUZW1wb3JhcnlQcm9maWxl
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9yZW1vdmVQcm9maWxlSGVhZGVyKHRo
aXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUpOworICAgICAgICBkZWxldGUgdGhpcy5fdGVt
cG9yYXJ5UmVjb3JkaW5nUHJvZmlsZTsKKyAgICB9LAorCiAgICAgX3JlbW92ZVByb2ZpbGVIZWFk
ZXI6IGZ1bmN0aW9uKHByb2ZpbGUpCiAgICAgewogICAgICAgICB2YXIgdHlwZUlkID0gcHJvZmls
ZS50eXBlSWQ7CkBAIC03OTksNyArODAyLDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIHByb2ZpbGVIZWFkZXJzTGVuZ3RoID0gcHJv
ZmlsZUhlYWRlcnMubGVuZ3RoOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9m
aWxlSGVhZGVyc0xlbmd0aDsgKytpKQogICAgICAgICAgICAgICAgIGlmICghdGhpcy5oYXNQcm9m
aWxlKHByb2ZpbGVIZWFkZXJzW2ldKSkKLSAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRQcm9m
aWxlSGVhZGVyKHByb2ZpbGVIZWFkZXJzW2ldKTsKKyAgICAgICAgICAgICAgICAgICB0aGlzLmFk
ZFByb2ZpbGVIZWFkZXIocHJvZmlsZUhlYWRlcnNbaV0pOwogICAgICAgICB9CiAKICAgICAgICAg
UHJvZmlsZXJBZ2VudC5nZXRQcm9maWxlSGVhZGVycyhwb3B1bGF0ZUNhbGxiYWNrLmJpbmQodGhp
cykpOwpAQCAtODI3LDEzICs4MzAsMTEgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAoaXNQcm9maWxpbmcpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9hZGRQcm9maWxlSGVh
ZGVyKHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUpOworICAgICAgICAgICAgICAgIHRo
aXMuYWRkUHJvZmlsZUhlYWRlcih0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlKTsKICAg
ICAgICAgICAgICAgICBpZiAocHJvZmlsZVR5cGUgPT09IFdlYkluc3BlY3Rvci5DUFVQcm9maWxl
VHlwZS5UeXBlSWQpCiAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci51c2VyTWV0cmlj
cy5Qcm9maWxlc0NQVVByb2ZpbGVUYWtlbi5yZWNvcmQoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlUHJvZmlsZUhlYWRlcih0aGlzLl90ZW1wb3Jh
cnlSZWNvcmRpbmdQcm9maWxlKTsKLSAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fdGVtcG9y
YXJ5UmVjb3JkaW5nUHJvZmlsZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZVRlbXBvcmFyeVByb2ZpbGUoKQogICAgICAgICB9
CiAgICAgfSwKIApAQCAtODQ4LDcgKzg0OSw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgaXNUZW1wb3Jhcnk6IHRydWUKICAg
ICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy5fYWRkUHJv
ZmlsZUhlYWRlcih0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlKTsKKyAgICAgICAgICAg
IHRoaXMuYWRkUHJvZmlsZUhlYWRlcih0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlKTsK
ICAgICAgICAgfQogICAgICAgICBQcm9maWxlckFnZW50LnRha2VIZWFwU25hcHNob3QoKTsKICAg
ICAgICAgV2ViSW5zcGVjdG9yLnVzZXJNZXRyaWNzLlByb2ZpbGVzSGVhcFByb2ZpbGVUYWtlbi5y
ZWNvcmQoKTsKQEAgLTg2MCw3ICs4NjEsNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxl
LnNpZGViYXJFbGVtZW50LnN1YnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlLjJmJSUi
LCAoZG9uZSAvIHRvdGFsKSAqIDEwMCk7CiAgICAgICAgICAgICB0aGlzLl90ZW1wb3JhcnlSZWNv
cmRpbmdQcm9maWxlLnNpZGViYXJFbGVtZW50LndhaXQgPSB0cnVlOwogICAgICAgICAgICAgaWYg
KGRvbmUgPj0gdG90YWwpCi0gICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlUHJvZmlsZUhlYWRl
cih0aGlzLl90ZW1wb3JhcnlSZWNvcmRpbmdQcm9maWxlKTsKKyAgICAgICAgICAgICAgICB0aGlz
Ll9yZW1vdmVUZW1wb3JhcnlQcm9maWxlKCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC04ODEs
NyArODgyLDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVyRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7
CiAKICAgICBhZGRQcm9maWxlSGVhZGVyOiBmdW5jdGlvbihwcm9maWxlKQogICAgIHsKLSAgICAg
ICAgdGhpcy5fcHJvZmlsZXIuX2FkZFByb2ZpbGVIZWFkZXIocHJvZmlsZSk7CisgICAgICAgIHRo
aXMuX3Byb2ZpbGVyLmFkZFByb2ZpbGVIZWFkZXIocHJvZmlsZSk7CiAgICAgfSwKIAogICAgIGFk
ZEhlYXBTbmFwc2hvdENodW5rOiBmdW5jdGlvbih1aWQsIGNodW5rKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IDVhZWRhMDEyNTVjZWY5Nzk4
Nzg1NGJjYjFmZTQ1ZTg3NzBlYjViZDUuLjY2NDI1Yzc3NzUyZjIyNGQxNzkwMzBlZDk4NzFmZjk4
NzRmZWQwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
V2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktp
dC5xcmMKQEAgLTI5LDYgKzI5LDcgQEAKICAgICA8ZmlsZT5Db29raWVzVGFibGUuanM8L2ZpbGU+
CiAgICAgPGZpbGU+Q1NTQ29tcGxldGlvbnMuanM8L2ZpbGU+CiAgICAgPGZpbGU+Q1NTS2V5d29y
ZENvbXBsZXRpb25zLmpzPC9maWxlPgorICAgIDxmaWxlPkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcu
anM8L2ZpbGU+CiAgICAgPGZpbGU+Q1NTU3R5bGVNb2RlbC5qczwvZmlsZT4KICAgICA8ZmlsZT5E
YXRhYmFzZS5qczwvZmlsZT4KICAgICA8ZmlsZT5EYXRhYmFzZVF1ZXJ5Vmlldy5qczwvZmlsZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
Lmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1s
CmluZGV4IDJmNDRhNGY4ZmM2YjY1MGJjMmEyMDY3ZTIwZjNmOTM3NmVkMWRkMWUuLjUwZTkxOWFk
ZGI5ZDBlYTY2ZGJhZTU0YzQzYzRmZmQ0ZTA1MTZhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtMTU3LDYgKzE1Nyw3IEBA
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQm90dG9t
VXBQcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJUb3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUHJvZmlsZVZpZXcu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNT
U1NlbGVjdG9yUHJvZmlsZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9IlBhcnRpYWxRdWlja1NvcnQuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkhlYXBTbmFwc2hvdC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSGVhcFNuYXBzaG90
UHJveHkuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9wcm9maWxlc1BhbmVsLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvcHJvZmlsZXNQYW5lbC5jc3MKaW5kZXggNjk1MjFmYmM3ZWVkMjFmNjhiZWU1MGQx
OGQyM2MzNDQ0ZmRiZGYxOC4uMTBmNmI0OWZlZGYzN2I1ZDc1ODVlYTlmZmEzY2FlODFjN2EyM2Jk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9wcm9maWxl
c1BhbmVsLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3Byb2Zp
bGVzUGFuZWwuY3NzCkBAIC0xMjYsMTEgKzEyNiw2IEBACiAgICAgY29sb3I6IHdoaXRlOwogfQog
Ci0vKiBGSVhNRTogc2hvdWxkIGhhdmUgaXRzIG93biBnbHlwaC4gKi8KLS5oZWFwLXNuYXBzaG90
LXN0YXR1cy1iYXItaXRlbSAuZ2x5cGggewotICAgIC13ZWJraXQtbWFzay1wb3NpdGlvbjogLTk2
cHggMDsKLX0KLQogLnBlcmNlbnQtdGltZS1zdGF0dXMtYmFyLWl0ZW0gLmdseXBoIHsKICAgICAt
d2Via2l0LW1hc2stcG9zaXRpb246IC0xOTJweCAtMjRweDsKIH0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxYzFiYzIyOWJj
Yzc1MGFhOTA0NWU5ZGU3NTg0NDNmNWU2ZDliYThkLi4zMGFiNDI2MmQ1ODM4YTRlNjBlMjhhMzZi
OWM0ZDJjNzJhODgzZjg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTItMjMgIEFsZXhh
bmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBJbXBsZW1lbnQgQ1NTIHNlbGVjdG9yIHByb2ZpbGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDAwNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2RldGFpbGVk
LWhlYXBzaG90cy10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9EZXRhaWxlZEhlYXBzaG90
VGVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL3Byb2ZpbGVyLXRlc3QuanM6Cisg
ICAgICAgIChpbml0aWFsaXplX1Byb2ZpbGVyVGVzdC5JbnNwZWN0b3JUZXN0LnN0YXJ0UHJvZmls
ZXJUZXN0LnN0YXJ0VGVzdCk6CisgICAgICAgIChpbml0aWFsaXplX1Byb2ZpbGVyVGVzdC5JbnNw
ZWN0b3JUZXN0LnN0YXJ0UHJvZmlsZXJUZXN0KToKKwogMjAxMS0xMi0yOCAgQWxleGFuZGVyIFBh
dmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IElu
dHJvZHVjZSBhIFByb2ZpbGVyIGxhdW5jaGVyIHZpZXcgc2ltaWxhciB0byB0aGF0IGluIHRoZSBB
dWRpdHMgcGFuZWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9k
ZXRhaWxlZC1oZWFwc2hvdHMtdGVzdC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxl
ci9kZXRhaWxlZC1oZWFwc2hvdHMtdGVzdC5qcwppbmRleCA0NmJjZGU3NjRhOTliOWFlNDVkZDJm
YWQ3OTY5MDI4ZjVkZjczZDBjLi41Y2ExYmNmNDViZDU3NzQ1NDBjOWRiZDA3Mjc0OTY0NzAzMzky
MjIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQt
aGVhcHNob3RzLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2Rl
dGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzCkBAIC0zNjksNyArMzY5LDcgQEAgSW5zcGVjdG9yVGVz
dC50YWtlQW5kT3BlblNuYXBzaG90ID0gZnVuY3Rpb24oZ2VuZXJhdG9yLCBjYWxsYmFjaykKICAg
ICB9CiAgICAgSW5zcGVjdG9yVGVzdC5vdmVycmlkZShQcm9maWxlckFnZW50LCAiZ2V0UHJvZmls
ZSIsIHB1c2hHZW5lcmF0ZWRTbmFwc2hvdCk7CiAgICAgSW5zcGVjdG9yVGVzdC5fdGFrZUFuZE9w
ZW5TbmFwc2hvdENhbGxiYWNrID0gY2FsbGJhY2s7Ci0gICAgV2ViSW5zcGVjdG9yLnBhbmVscy5w
cm9maWxlcy5fYWRkUHJvZmlsZUhlYWRlcihwcm9maWxlKTsKKyAgICBXZWJJbnNwZWN0b3IucGFu
ZWxzLnByb2ZpbGVzLmFkZFByb2ZpbGVIZWFkZXIocHJvZmlsZSk7CiAgICAgV2ViSW5zcGVjdG9y
LnBhbmVscy5wcm9maWxlcy5zaG93UHJvZmlsZShwcm9maWxlKTsKIH07CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9wcm9maWxlci10ZXN0LmpzIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3Byb2ZpbGVyLXRlc3QuanMKaW5kZXggY2NhNDkyYTIz
YWUyMmI1OWU3OWYwYjZkNTc0MjRkMjM0MmJiZTI2MS4uY2M3MDMzYzZjMWZjZjIyNTMyNGY5OWNl
MzllNmE4YmE2NmVjZWY2MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2Zp
bGVyL3Byb2ZpbGVyLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVy
L3Byb2ZpbGVyLXRlc3QuanMKQEAgLTcsNyArNyw3IEBAIEluc3BlY3RvclRlc3Quc3RhcnRQcm9m
aWxlclRlc3QgPSBmdW5jdGlvbihjYWxsYmFjaykKICAgICBmdW5jdGlvbiBzdGFydFRlc3QoKQog
ICAgIHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlByb2ZpbGVyIHdhcyBlbmFi
bGVkLiIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLnBh
bmVscy5wcm9maWxlcywgIl9hZGRQcm9maWxlSGVhZGVyIiwgSW5zcGVjdG9yVGVzdC5fcHJvZmls
ZUhlYWRlckFkZGVkLCB0cnVlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdl
Ykluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMsICJhZGRQcm9maWxlSGVhZGVyIiwgSW5zcGVjdG9y
VGVzdC5fcHJvZmlsZUhlYWRlckFkZGVkLCB0cnVlKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldy5wcm90b3R5cGUsICJyZWZyZXNo
IiwgSW5zcGVjdG9yVGVzdC5fcHJvZmlsZVZpZXdSZWZyZXNoLCB0cnVlKTsKICAgICAgICAgSW5z
cGVjdG9yVGVzdC5zYWZlV3JhcChjYWxsYmFjaykoKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120730</attachid>
            <date>2011-12-29 03:57:17 -0800</date>
            <delta_ts>2011-12-29 08:26:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74004-20111229155715.patch</filename>
            <type>text/plain</type>
            <size>28334</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmI3NzkxZjY4MWUzMWQ3
OTJhM2E5OGQyNGY4OTRkMzU0YWUwOGU2MS4uMzI0NzgyZDQ1MzQ5NzZiZDE4NDA4MzM5NWI5Njk1
NTUwNmQzYjJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDExLTEyLTI4ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogSW1wbGVtZW50IENTUyBzZWxlY3RvciBwcm9maWxlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQwMDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uIG9mIENTUyBz
ZWxlY3RvciBwcm9maWxlciBtZWFzdXJlcyB0aGUgdG90YWwgdGltZSByZXF1aXJlZCB0byBtYXRj
aCBhIGNlcnRhaW4gc2VsZWN0b3IKKyAgICAgICAgYWdhaW5zdCBET00gbm9kZXMgYW5kIGFwcGx5
IHRoZSBzdHlsZSBkZWNsYXJhdGlvbiBwcm9wZXJ0aWVzIHRvIHRoZSBwYXJ0aWN1bGFyIGVsZW1l
bnQsCisgICAgICAgIGFzIHdlbGwgYXMgdGhlIG51bWJlciBvZiBzZWxlY3RvciAgbWF0Y2hlcyAo
aS5lLiB0aGUgbnVtYmVyIG9mIG5vZGVzIHRoYXQgbWF0Y2hlZCB0aGUgc2VsZWN0b3IuKQorICAg
ICAgICBUaGUgcmVzdWx0cyBhcmUgYXBwcm94aW1hdGUgZHVlIHRvIGludGVybmFsIG1hdGNoaW5n
IGFsZ29yaXRobSBvcHRpbWl6YXRpb25zIChzaGFyZWQgc3R5bGVzIGV0IGFsLikKKyAgICAgICAg
TXVsdGlwbGUgc2VsZWN0b3JzIHdpdGggdGhlIHNhbWUgc2VsZWN0b3JUZXh0IGFyZSBjb2FsZXNj
ZWQgaW50byBhIHNpbmdsZSByZWNvcmQuCisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL2xvY2Fs
aXplZFN0cmluZ3MuanM6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9jb21waWxlLWZy
b250LWVuZC5zaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1NlbGVjdG9yUHJv
ZmlsZVZpZXcuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yRGF0
YUdyaWROb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvckRhdGFHcmlkTm9k
ZS5wcm90b3R5cGUuZ2V0IHJhd0RhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVj
dG9yUHJvZmlsZVZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmls
ZVZpZXcucHJvdG90eXBlLmdldCBzdGF0dXNCYXJJdGVtcyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuZ2V0IHByb2ZpbGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLnNldCBwcm9m
aWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3Rv
dHlwZS5fY3JlYXRlUHJvZmlsZU5vZGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxl
Y3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZS5yZWZyZXNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZS5yZWZyZXNoVmlzaWJsZURhdGEpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlLnJl
ZnJlc2hTaG93QXNQZXJjZW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQ
cm9maWxlVmlldy5wcm90b3R5cGUuX3NvcnRQcm9maWxlLmdldCBzZWxlY3RvckNvbXBhcmF0b3Ip
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBl
Ll9zb3J0UHJvZmlsZS50aW1lQ29tcGFyYXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NT
U2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuX3NvcnRQcm9maWxlLm1hdGNoZXNDb21wYXJh
dG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3Rv
dHlwZS5fc29ydFByb2ZpbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJv
ZmlsZVR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUu
cHJvdG90eXBlLmdldCBidXR0b25Ub29sdGlwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NT
ZWxlY3RvclByb2ZpbGVUeXBlLnByb3RvdHlwZS5idXR0b25DbGlja2VkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLnByb3RvdHlwZS5nZXQgdHJlZUl0ZW1U
aXRsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5wcm90
b3R5cGUuZ2V0IGRlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3Rv
clByb2ZpbGVUeXBlLnByb3RvdHlwZS5yZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NT
U2VsZWN0b3JQcm9maWxlVHlwZS5wcm90b3R5cGUuaXNSZWNvcmRpbmdQcm9maWxlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLnByb3RvdHlwZS5zZXRSZWNv
cmRpbmdQcm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVU
eXBlLnByb3RvdHlwZS5zdGFydFJlY29yZGluZ1Byb2ZpbGUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUucHJvdG90eXBlLnN0b3BSZWNvcmRpbmdQcm9maWxl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLnByb3RvdHlw
ZS5jcmVhdGVTaWRlYmFyVHJlZUVsZW1lbnRGb3JQcm9maWxlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLnByb3RvdHlwZS5jcmVhdGVWaWV3KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanM6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBy
b2ZpbGVUeXBlLnByb3RvdHlwZS5yZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmls
ZXNQYW5lbC5wcm90b3R5cGUuX3Jlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxl
c1BhbmVsLnByb3RvdHlwZS5hZGRQcm9maWxlSGVhZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5fcmVtb3ZlVGVtcG9yYXJ5UHJvZmlsZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuc2V0UmVjb3JkaW5nUHJv
ZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUudGFr
ZUhlYXBTbmFwc2hvdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90
b3R5cGUuX3JlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Qcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlLmFkZFByb2ZpbGVIZWFkZXIpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
cHJvZmlsZXNQYW5lbC5jc3M6CisKIDIwMTEtMTItMjggIEFuZHJlYXMgS2xpbmcgIDxhd2Vzb21l
a2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZHVjZSBtZW1vcnkgdXNlZCBieSBOYW1lZE5v
ZGVNYXAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXpl
ZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmlu
Z3MuanMKaW5kZXggMTY0NDEzMzIyNjgwZWE4YTJhNmI5YTZlNGE4ZTZmYzUxZjY1YWI3YS4uZWNi
YzAzMTkwMmI5NGE5NGEzMGFjZjIyMzM2NmI3OWEyYTg2YWE2NyAxMDA2NDQKR0lUIGJpbmFyeSBw
YXRjaApkZWx0YSAxMDU5CnpjbWVIYHlHdWZHNnZ2TmZhVEJvem5oLShlUDxBVk8oMyVMPG1JVWUp
Nl5VOEMob214cEJyV3t8MlFzYHZnJF8xbAp6K15zMVpueCZ6a3NrdEYmWTN9PkdIO0lJcjhzbD5B
YFE3dlFvTzZEXi1AVSZ4ejBeJUxTKylsJE5LVktjJXxtNz0Kekw8PHopMzN2YUc5eT0lOGpsM0wx
REZ1bThvLSZsPmdRZFJxNyo7IUFybDhaYiE1NDNpRzVCRUZxJWgobDZyO0hDCnp6IUhOYzJjM3Ni
ZnxKRz9LMFo8JGckNzR0ckQ7ISNpaH5pPUdRIytkVjRjLSsxPHdpbHd7Qm8qQFZfY1lYJHwmUwp6
T3pEVCM7e2BKZmpfQVk8OW1CVj8wSkpFempYYHUqU2hHME0mSzkwNSNAamArSXZOUThaO00xa1hZ
bD9pKiUmcXEKeihndTg0V1FpaTFoe31NSipDPXQ/MlUpRGV3JmlIaExxcGBFV2R1el9Uc1J5M3Rl
VTMkLX1BclFiQXlMRjRXbkY9CnpFeGFQemlZMEA9JStfSF5VNmdOcFR1UFhFejBLT0AqTnpGZG42
RT0peXFZd3ItTzJTKWVtIWFCKDB2RUA3QTxVPgp6QF5KbEJRViZsaEJVaDl1ZXBrR0ZUazdJUldr
anRocldTclVfZCNTe3lwWHdtWDY5cE1LeiV5KjhYWjVLQD5TOCEKbV49Y1E3U0VTISEpYVA9Ymc9
PHltXlk/QU9FSU92PTd3PmE8VCVFa00/UzI1Mks9KE5TCgpkZWx0YSA1Mwp6Y21WLTUwTHVVQiY7
LVc5MWg2VjltdT9nUjJEM09XPFVxNC1aKWgjRUVTKEFpbE1iT092KndAIzErJDJ6V0NPRjcKTHN1
fjVlUjxJTyFQO0N7YgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhMTYzYThkZjVkM2ZmMzMxYWNhMDNl
ZTJkYmFmYmQ0NWY2ZDI4MDZhLi5kZDQ4ZWQxNzAwZWMxODE3NmQ3MWU4NTk4OWVkYWQyNjA3YzRl
YTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02Mzg3LDYgKzYzODcsNyBAQAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llc1RhYmxlLmpzJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL0NTU0NvbXBsZXRpb25zLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL0NTU0tleXdvcmRDb21wbGV0aW9ucy5qcycsCisgICAgICAgICAgICAnaW5z
cGVjdG9yL2Zyb250LWVuZC9DU1NTZWxlY3RvclByb2ZpbGVWaWV3LmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMnLAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2UuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvRGF0YWJhc2VRdWVyeVZpZXcuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA2ZWEwZmZjZGI4MjA2MWYzZWVkMzUwMGQ3YzE4
OWJkYmExN2U0MzZjLi4wMWY1OWY4NmJmNTc0NzM5YzljZmZmZDU5ODY1MTk2N2IxY2FhNjg4IDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzE1
MzMsNiArNzE1MzMsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcQ1NTU2VsZWN0b3JQcm9maWxlVmll
dy5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcQ1NTU3R5bGVNb2RlbC5qcyIKIAkJCQkJPgogCQkJCTwv
RmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250
LWVuZC5zaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaApp
bmRleCBiOWM4ODgwZDBkZDlkNGEzMTQ4YmQxOTlhZjRkZDVkYzdmMDUwMzEwLi4xYTc1NzI4ZDVi
MmZmMDMzODFlZTBmY2I2MzYyMDQwODNhMjE1MjdiIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQuc2gKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoCkBAIC0xOTMsNiArMTkzLDcgQEAgamF2YSAtamFy
IH4vY2xvc3VyZS9jb21waWxlci5qYXIgLS1zdW1tYXJ5X2RldGFpbF9sZXZlbCAzIC0tY29tcGls
YXRpb25fbGV2ZWwgU0kKICMgVG8gYmUgY29tcGlsZWQuLi4KICMgCiAjIFtQcm9maWxlcl0KKyMg
Q1NTU2VsZWN0b3JQcm9maWxlVmlldwogIyBCb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUKICMg
RGV0YWlsZWRIZWFwc2hvdEdyaWROb2RlcwogIyBEZXRhaWxlZEhlYXBzaG90VmlldwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTZWxlY3RvclByb2Zp
bGVWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTZWxlY3Rv
clByb2ZpbGVWaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjMzQzMmNiYmEwODI4OTkzMWRhZTdiNGJhNTQ2
YjBlYjlhZTZiYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NTU1NlbGVjdG9yUHJvZmlsZVZpZXcuanMKQEAgLTAsMCArMSwzMjEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGNvbnN0
cnVjdG9yCisgKiBAZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlCisgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3fSBwcm9maWxlVmlldworICovCitX
ZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihwcm9maWxlVmll
dywgZGF0YSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLmNhbGwodGhpcywgZGF0
YSwgZmFsc2UpOworICAgIHRoaXMuX3Byb2ZpbGVWaWV3ID0gcHJvZmlsZVZpZXc7Cit9CisKK1dl
Ykluc3BlY3Rvci5DU1NTZWxlY3RvckRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CisgICAgZ2V0
IGRhdGEoKQorICAgIHsKKyAgICAgICAgdmFyIGRhdGEgPSB7fTsKKyAgICAgICAgZGF0YS5zZWxl
Y3RvciA9IHRoaXMuX2RhdGEuc2VsZWN0b3I7CisgICAgICAgIGRhdGEubWF0Y2hlcyA9IHRoaXMu
X2RhdGEubWF0Y2hDb3VudDsKKworICAgICAgICBpZiAodGhpcy5fcHJvZmlsZVZpZXcuc2hvd1Rp
bWVBc1BlcmNlbnQuZ2V0KCkpCisgICAgICAgICAgICBkYXRhLnRpbWUgPSBOdW1iZXIodGhpcy5f
ZGF0YS50aW1lUGVyY2VudCkudG9GaXhlZCgxKSArICIlIjsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZGF0YS50aW1lID0gTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aGlzLl9kYXRhLnRpbWUg
LyAxMDAwLCB0cnVlKTsKKworCisgICAgICAgIHJldHVybiBkYXRhOworICAgIH0sCisKKyAgICBn
ZXQgcmF3RGF0YSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZGF0YTsKKyAgICB9Cit9
CisKK1dlYkluc3BlY3Rvci5DU1NTZWxlY3RvckRhdGFHcmlkTm9kZS5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGU7CisKKy8qKgorICogQGNv
bnN0cnVjdG9yCisgKiBAZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlldworICogQHBhcmFtIHtDU1NB
Z2VudC5TZWxlY3RvclByb2ZpbGV9IHByb2ZpbGUKKyAqLworV2ViSW5zcGVjdG9yLkNTU1NlbGVj
dG9yUHJvZmlsZVZpZXcgPSBmdW5jdGlvbihwcm9maWxlKQoreworICAgIFdlYkluc3BlY3Rvci5W
aWV3LmNhbGwodGhpcyk7CisKKyAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygicHJvZmls
ZS12aWV3Iik7CisKKyAgICB0aGlzLnNob3dUaW1lQXNQZXJjZW50ID0gV2ViSW5zcGVjdG9yLnNl
dHRpbmdzLmNyZWF0ZVNldHRpbmcoInNlbGVjdG9yUHJvZmlsZXJTaG93VGltZUFzUGVyY2VudCIs
IHRydWUpOworCisgICAgdmFyIGNvbHVtbnMgPSB7ICJzZWxlY3RvciI6IHsgdGl0bGU6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiU2VsZWN0b3IiKSwgd2lkdGg6ICI2NTBweCIsIHNvcnRhYmxlOiB0
cnVlIH0sCisgICAgICAgICAgICAgICAgICAgICJ0aW1lIjogeyB0aXRsZTogV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJUb3RhbCIpLCB3aWR0aDogIjcycHgiLCBzb3J0OiAiZGVzY2VuZGluZyIsIHNv
cnRhYmxlOiB0cnVlIH0sCisgICAgICAgICAgICAgICAgICAgICJtYXRjaGVzIjogeyB0aXRsZTog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNYXRjaGVzIiksIHdpZHRoOiAiNzJweCIsIHNvcnRhYmxl
OiB0cnVlIH0gfTsKKworICAgIHRoaXMuZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFH
cmlkKGNvbHVtbnMpOworICAgIHRoaXMuZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcigic29ydGlu
ZyBjaGFuZ2VkIiwgdGhpcy5fc29ydFByb2ZpbGUsIHRoaXMpOworICAgIHRoaXMuZGF0YUdyaWQu
ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9tb3VzZURvd25JbkRh
dGFHcmlkLmJpbmQodGhpcyksIHRydWUpOworICAgIHRoaXMuZGF0YUdyaWQuc2hvdyh0aGlzLmVs
ZW1lbnQpOworCisgICAgdGhpcy5wZXJjZW50QnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0
dXNCYXJCdXR0b24oIiIsICJwZXJjZW50LXRpbWUtc3RhdHVzLWJhci1pdGVtIik7CisgICAgdGhp
cy5wZXJjZW50QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcGVyY2VudENs
aWNrZWQsIHRoaXMpOworCisgICAgdGhpcy5wcm9maWxlID0gcHJvZmlsZTsKKworICAgIHRoaXMu
X2NyZWF0ZVByb2ZpbGVOb2RlcygpOworICAgIHRoaXMuX3NvcnRQcm9maWxlKCk7CisgICAgdGhp
cy5fdXBkYXRlUGVyY2VudEJ1dHRvbigpOworfQorCitXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQ
cm9maWxlVmlldy5wcm90b3R5cGUgPSB7CisgICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBbdGhpcy5wZXJjZW50QnV0dG9uLmVsZW1lbnRdOworICAgIH0sCisK
KyAgICBnZXQgcHJvZmlsZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcHJvZmlsZTsK
KyAgICB9LAorCisgICAgc2V0IHByb2ZpbGUocHJvZmlsZSkKKyAgICB7CisgICAgICAgIHRoaXMu
X3Byb2ZpbGUgPSBwcm9maWxlOworICAgIH0sCisKKyAgICBfY3JlYXRlUHJvZmlsZU5vZGVzOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgZGF0YSA9IHRoaXMucHJvZmlsZS5kYXRhOwor
ICAgICAgICBpZiAoIWRhdGEpIHsKKyAgICAgICAgICAgIC8vIFRoZSBwcm9maWxlciBtYXkgaGF2
ZSBiZWVuIHRlcm1pbmF0ZWQgd2l0aCB0aGUgIkNsZWFyIGFsbCBwcm9maWxlcy4iIGJ1dHRvbi4K
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMucHJvZmlsZS5j
aGlsZHJlbiA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgICAgIGRhdGFbaV0udGltZVBlcmNlbnQgPSBkYXRhW2ldLnRpbWUgKiAx
MDAgLyB0aGlzLnByb2ZpbGUudG90YWxUaW1lOworICAgICAgICAgICAgdmFyIG5vZGUgPSBuZXcg
V2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yRGF0YUdyaWROb2RlKHRoaXMsIGRhdGFbaV0pOworICAg
ICAgICAgICAgdGhpcy5wcm9maWxlLmNoaWxkcmVuLnB1c2gobm9kZSk7CisgICAgICAgIH0KKyAg
ICB9LAorCisgICAgcmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5kYXRh
R3JpZC5yZW1vdmVDaGlsZHJlbigpOworCisgICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJv
ZmlsZS5jaGlsZHJlbjsKKyAgICAgICAgdmFyIGNvdW50ID0gY2hpbGRyZW4ubGVuZ3RoOworCisg
ICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkKKyAgICAg
ICAgICAgIHRoaXMuZGF0YUdyaWQuYXBwZW5kQ2hpbGQoY2hpbGRyZW5baW5kZXhdKTsKKyAgICB9
LAorCisgICAgcmVmcmVzaFZpc2libGVEYXRhOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2
YXIgY2hpbGQgPSB0aGlzLmRhdGFHcmlkLmNoaWxkcmVuWzBdOworICAgICAgICB3aGlsZSAoY2hp
bGQpIHsKKyAgICAgICAgICAgIGNoaWxkLnJlZnJlc2goKTsKKyAgICAgICAgICAgIGNoaWxkID0g
Y2hpbGQudHJhdmVyc2VOZXh0Tm9kZShmYWxzZSwgbnVsbCwgdHJ1ZSk7CisgICAgICAgIH0KKyAg
ICB9LAorCisgICAgcmVmcmVzaFNob3dBc1BlcmNlbnRzOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB0aGlzLl91cGRhdGVQZXJjZW50QnV0dG9uKCk7CisgICAgICAgIHRoaXMucmVmcmVzaFZp
c2libGVEYXRhKCk7CisgICAgfSwKKworICAgIF9wZXJjZW50Q2xpY2tlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgeworICAgICAgICB0aGlzLnNob3dUaW1lQXNQZXJjZW50LnNldCghdGhpcy5zaG93
VGltZUFzUGVyY2VudC5nZXQoKSk7CisgICAgICAgIHRoaXMucmVmcmVzaFNob3dBc1BlcmNlbnRz
KCk7CisgICAgfSwKKworICAgIF91cGRhdGVQZXJjZW50QnV0dG9uOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICBpZiAodGhpcy5zaG93VGltZUFzUGVyY2VudC5nZXQoKSkgeworICAgICAgICAg
ICAgdGhpcy5wZXJjZW50QnV0dG9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93
IGFic29sdXRlIHRpbWVzLiIpOworICAgICAgICAgICAgdGhpcy5wZXJjZW50QnV0dG9uLnRvZ2ds
ZWQgPSB0cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5wZXJjZW50QnV0
dG9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHRpbWVzIGFzIHBlcmNlbnRh
Z2VzLiIpOworICAgICAgICAgICAgdGhpcy5wZXJjZW50QnV0dG9uLnRvZ2dsZWQgPSBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0sCisKKyAgICBfc29ydFByb2ZpbGU6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHZhciBzb3J0QXNjZW5kaW5nID0gdGhpcy5kYXRhR3JpZC5zb3J0T3JkZXIgPT09
ICJhc2NlbmRpbmciOworICAgICAgICB2YXIgc29ydENvbHVtbklkZW50aWZpZXIgPSB0aGlzLmRh
dGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyOworCisgICAgICAgIGZ1bmN0aW9uIHNlbGVjdG9y
Q29tcGFyYXRvcihhLCBiKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcmVzdWx0ID0gYi5y
YXdEYXRhLnNlbGVjdG9yLmxvY2FsZUNvbXBhcmUoYS5yYXdEYXRhLnNlbGVjdG9yKTsKKyAgICAg
ICAgICAgIHJldHVybiBzb3J0QXNjZW5kaW5nID8gLXJlc3VsdCA6IHJlc3VsdDsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHRpbWVDb21wYXJhdG9yKGEsIGIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGIucmF3RGF0YS50aW1lIC0gYS5yYXdEYXRhLnRpbWU7
CisgICAgICAgICAgICByZXR1cm4gc29ydEFzY2VuZGluZyA/IC1yZXN1bHQgOiByZXN1bHQ7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBtYXRjaGVzQ29tcGFyYXRvcihhLCBiKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBiLnJhd0RhdGEubWF0Y2hDb3VudCAt
IGEucmF3RGF0YS5tYXRjaENvdW50OworICAgICAgICAgICAgcmV0dXJuIHNvcnRBc2NlbmRpbmcg
PyAtcmVzdWx0IDogcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgdmFyIGNvbXBhcmF0b3I7
CisgICAgICAgIHN3aXRjaCAoc29ydENvbHVtbklkZW50aWZpZXIpIHsKKyAgICAgICAgY2FzZSAi
dGltZSI6CisgICAgICAgICAgICBjb21wYXJhdG9yID0gdGltZUNvbXBhcmF0b3I7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAibWF0Y2hlcyI6CisgICAgICAgICAgICBjb21wYXJh
dG9yID0gbWF0Y2hlc0NvbXBhcmF0b3I7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSAic2VsZWN0b3IiOgorICAgICAgICAgICAgY29tcGFyYXRvciA9IHNlbGVjdG9yQ29tcGFyYXRv
cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5wcm9maWxl
LmNoaWxkcmVuLnNvcnQoY29tcGFyYXRvcik7CisKKyAgICAgICAgdGhpcy5yZWZyZXNoKCk7Cisg
ICAgfSwKKworICAgIF9tb3VzZURvd25JbkRhdGFHcmlkOiBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICAgIGlmIChldmVudC5kZXRhaWwgPCAyKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHZhciBjZWxsID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9k
ZU5hbWUoInRkIik7CisgICAgICAgIGlmICghY2VsbCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBpZiAoY2VsbC5oYXNTdHlsZUNsYXNzKCJ0aW1lLWNvbHVtbiIpKQorICAgICAgICAg
ICAgdGhpcy5zaG93VGltZUFzUGVyY2VudC5zZXQoIXRoaXMuc2hvd1RpbWVBc1BlcmNlbnQuZ2V0
KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5y
ZWZyZXNoU2hvd0FzUGVyY2VudHMoKTsKKworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgp
OworICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICB9Cit9CisKK1dlYkluc3Bl
Y3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNw
ZWN0b3IuVmlldy5wcm90b3R5cGU7CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KK1dlYklu
c3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlID0gZnVuY3Rpb24oKQoreworICAgIFdlYklu
c3BlY3Rvci5Qcm9maWxlVHlwZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclBy
b2ZpbGVUeXBlLlR5cGVJZCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xsZWN0IENTUyBTZWxl
Y3RvciBQcm9maWxlIikpOworICAgIHRoaXMuX3JlY29yZGluZyA9IGZhbHNlOworICAgIHRoaXMu
X3Byb2ZpbGVVaWQgPSAxOworICAgIFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBl
Lmluc3RhbmNlID0gdGhpczsKK30KKworV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5
cGUuVHlwZUlkID0gIlNFTEVDVE9SIjsKKworV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmls
ZVR5cGUucHJvdG90eXBlID0geworICAgIGdldCBidXR0b25Ub29sdGlwKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9yZWNvcmRpbmcgPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3Ag
Q1NTIHNlbGVjdG9yIHByb2ZpbGluZy4iKSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhcnQg
Q1NTIHNlbGVjdG9yIHByb2ZpbGluZy4iKTsKKyAgICB9LAorCisgICAgYnV0dG9uQ2xpY2tlZDog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3JlY29yZGluZykKKyAgICAgICAg
ICAgIHRoaXMuc3RvcFJlY29yZGluZ1Byb2ZpbGUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgdGhpcy5zdGFydFJlY29yZGluZ1Byb2ZpbGUoKTsKKyAgICB9LAorCisgICAgZ2V0IHRyZWVJ
dGVtVGl0bGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
Q1NTIFNFTEVDVE9SIFBST0ZJTEVTIik7CisgICAgfSwKKworICAgIGdldCBkZXNjcmlwdGlvbigp
CisgICAgeworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDU1Mgc2VsZWN0
b3IgcHJvZmlsZXMgc2hvdyBob3cgbG9uZyB0aGUgc2VsZWN0b3IgbWF0Y2hpbmcgaGFzIHRha2Vu
IGluIHRvdGFsIGFuZCBob3cgbWFueSB0aW1lcyBhIGNlcnRhaW4gc2VsZWN0b3IgaGFzIG1hdGNo
ZWQgRE9NIGVsZW1lbnRzICh0aGUgcmVzdWx0cyBhcmUgYXBwcm94aW1hdGUgZHVlIHRvIG1hdGNo
aW5nIGFsZ29yaXRobSBvcHRpbWl6YXRpb25zLikiKTsKKyAgICB9LAorCisgICAgcmVzZXQ6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Byb2ZpbGVVaWQgPSAxOworICAgIH0sCisK
KyAgICBpc1JlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl9yZWNvcmRpbmc7CisgICAgfSwKKworICAgIHNldFJlY29yZGluZ1Byb2ZpbGU6IGZ1
bmN0aW9uKGlzUHJvZmlsaW5nKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gaXNQ
cm9maWxpbmc7CisgICAgfSwKKworICAgIHN0YXJ0UmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gdHJ1ZTsKKyAgICAgICAgQ1NTQWdl
bnQuc3RhcnRTZWxlY3RvclByb2ZpbGVyKCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
cHJvZmlsZXMuc2V0UmVjb3JkaW5nUHJvZmlsZShXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9m
aWxlVHlwZS5UeXBlSWQsIHRydWUpOworICAgIH0sCisKKyAgICBzdG9wUmVjb3JkaW5nUHJvZmls
ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHBy
b2ZpbGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgIHByb2ZpbGUudWlkID0gdGhpcy5fcHJvZmlsZVVpZCsr
OworICAgICAgICAgICAgcHJvZmlsZS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJv
ZmlsZSAlZCIsIHByb2ZpbGUudWlkKSArIFN0cmluZy5zcHJpbnRmKCIgKCVzKSIsIE51bWJlci5z
ZWNvbmRzVG9TdHJpbmcocHJvZmlsZS50b3RhbFRpbWUgLyAxMDAwKSk7CisgICAgICAgICAgICBw
cm9maWxlLnR5cGVJZCA9IFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLlR5cGVJ
ZDsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMuYWRkUHJvZmlsZUhl
YWRlcihwcm9maWxlKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMu
c2V0UmVjb3JkaW5nUHJvZmlsZShXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5U
eXBlSWQsIGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3JlY29yZGluZyA9IGZh
bHNlOworICAgICAgICBDU1NBZ2VudC5zdG9wU2VsZWN0b3JQcm9maWxlcihjYWxsYmFjay5iaW5k
KHRoaXMpKTsKKyAgICB9LAorCisgICAgY3JlYXRlU2lkZWJhclRyZWVFbGVtZW50Rm9yUHJvZmls
ZTogZnVuY3Rpb24ocHJvZmlsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVj
dG9yLlByb2ZpbGVTaWRlYmFyVHJlZUVsZW1lbnQocHJvZmlsZSwgcHJvZmlsZS50aXRsZSwgInBy
b2ZpbGUtc2lkZWJhci10cmVlLWl0ZW0iKTsKKyAgICB9LAorCisgICAgY3JlYXRlVmlldzogZnVu
Y3Rpb24ocHJvZmlsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNT
U1NlbGVjdG9yUHJvZmlsZVZpZXcocHJvZmlsZSk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3Iu
Q1NTU2VsZWN0b3JQcm9maWxlVHlwZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
LlByb2ZpbGVUeXBlLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzCmluZGV4IDkwMGE2MDY5
YzJmMDg4MjhjMmRiM2U4ZDY2ZTkwYjUzNmI3YzMxYzkuLjdmOTk5ZDk2Mzc3NGMyODZlM2UyMzI1
YTBjYjA2Mzc3YzhiNDMxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcwpAQCAtMTMwOCwxMSArMTMw
OCw2IEBAIFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90UHJvZmlsZVR5cGUucHJvdG90eXBl
ID0gewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUYWtlIGhlYXAgc25h
cHNob3QuIik7CiAgICAgfSwKIAotICAgIGdldCBidXR0b25TdHlsZSgpCi0gICAgewotICAgICAg
ICByZXR1cm4gImhlYXAtc25hcHNob3Qtc3RhdHVzLWJhci1pdGVtIHN0YXR1cy1iYXItaXRlbSI7
Ci0gICAgfSwKLQogICAgIGJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMudGFrZUhlYXBTbmFwc2hvdCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMKaW5kZXgg
N2VjY2JmMWFkZmI0YTUxYjU2OWY5MmU0YTA1NjIwNmVlZmJhNDNiMy4uNWViZjM2OGI2YjczYTJm
MGQ3MWNhNWFmNzM0MDgxNDk5ZjM4NzJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzCkBAIC01ODIsMTEgKzU4Miw2IEBAIFdlYklu
c3BlY3Rvci5DUFVQcm9maWxlVHlwZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9yZWNvcmRpbmcgPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3AgQ1BVIHByb2ZpbGluZy4i
KSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhcnQgQ1BVIHByb2ZpbGluZy4iKTsKICAgICB9
LAogCi0gICAgZ2V0IGJ1dHRvblN0eWxlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9y
ZWNvcmRpbmcgPyAicmVjb3JkLWNwdS1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSBzdGF0dXMtYmFy
LWl0ZW0gdG9nZ2xlZC1vbiIgOiAicmVjb3JkLWNwdS1wcm9maWxlLXN0YXR1cy1iYXItaXRlbSBz
dGF0dXMtYmFyLWl0ZW0iOwotICAgIH0sCi0KICAgICBidXR0b25DbGlja2VkOiBmdW5jdGlvbigp
CiAgICAgewogICAgICAgICBpZiAodGhpcy5fcmVjb3JkaW5nKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKaW5kZXggNmUxNGI5
ZDFlZDMyMWU2YWViOWJhOTY3Y2M2NjhjNjU2YzhhMjUzZS4uYTViZDgyZmQ0MTI4NmQ5NTk1ZWJl
ZTAyNTNiNzA4ODFhNTQ0NGE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwpAQCAtMzksMTYgKzM5LDYgQEAgV2ViSW5zcGVj
dG9yLlByb2ZpbGVUeXBlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuICIiOwogICAgIH0s
CiAKLSAgICBnZXQgYnV0dG9uU3R5bGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHVuZGVmaW5l
ZDsKLSAgICB9LAotCi0gICAgZ2V0IGJ1dHRvbkNhcHRpb24oKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMubmFtZTsKLSAgICB9LAotCiAgICAgZ2V0IGlkKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9pZDsKQEAgLTc1LDYgKzY1LDEwIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlVHlw
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBwcm9maWxlLl9wcm9maWxlVmlldzsKICAg
ICB9LAogCisgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgfSwKKwogICAgIGdldCBk
ZXNjcmlwdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gIiI7CkBAIC0xNDgsNiArMTQyLDcg
QEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fbGF1
bmNoZXJWaWV3LnNldFVwRXZlbnRMaXN0ZW5lcnMoKTsKIAogICAgIHRoaXMuX3JlZ2lzdGVyUHJv
ZmlsZVR5cGUobmV3IFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZSgpKTsKKyAgICB0aGlzLl9y
ZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlw
ZSgpKTsKICAgICBpZiAoQ2FwYWJpbGl0aWVzLmhlYXBQcm9maWxlclByZXNlbnQpCiAgICAgICAg
IHRoaXMuX3JlZ2lzdGVyUHJvZmlsZVR5cGUobmV3IFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBz
aG90UHJvZmlsZVR5cGUoKSk7CiAKQEAgLTIzMSw5ICsyMjYsMTEgQEAgV2ViSW5zcGVjdG9yLlBy
b2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnNlYXJjaENhbmNlbGVkKCk7
CiAKICAgICAgICAgZm9yICh2YXIgaWQgaW4gdGhpcy5fcHJvZmlsZVR5cGVzQnlJZE1hcCkgewot
ICAgICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpcy5fcHJvZmlsZVR5cGVzQnlJZE1hcFtp
ZF0udHJlZUVsZW1lbnQ7CisgICAgICAgICAgICB2YXIgcHJvZmlsZVR5cGUgPSB0aGlzLl9wcm9m
aWxlVHlwZXNCeUlkTWFwW2lkXTsKKyAgICAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHByb2Zp
bGVUeXBlLnRyZWVFbGVtZW50OwogICAgICAgICAgICAgdHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRy
ZW4oKTsKICAgICAgICAgICAgIHRyZWVFbGVtZW50LmhpZGRlbiA9IHRydWU7CisgICAgICAgICAg
ICBwcm9maWxlVHlwZS5yZXNldCgpOwogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fcHJvZmls
ZXMgPSBbXTsKQEAgLTI4MywxMCArMjgwLDEwIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGVzY2FwZSh0ZXh0KSArICcvJyArIGVzY2Fw
ZShwcm9maWxlVHlwZUlkKTsKICAgICB9LAogCi0gICAgX2FkZFByb2ZpbGVIZWFkZXI6IGZ1bmN0
aW9uKHByb2ZpbGUpCisgICAgYWRkUHJvZmlsZUhlYWRlcjogZnVuY3Rpb24ocHJvZmlsZSkKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLmhhc1RlbXBvcmFyeVByb2ZpbGUocHJvZmlsZS50eXBlSWQp
KQotICAgICAgICAgICAgdGhpcy5fcmVtb3ZlUHJvZmlsZUhlYWRlcih0aGlzLl90ZW1wb3JhcnlS
ZWNvcmRpbmdQcm9maWxlKTsKKyAgICAgICAgICAgIHRoaXMuX3JlbW92ZVRlbXBvcmFyeVByb2Zp
bGUoKTsKIAogICAgICAgICB2YXIgdHlwZUlkID0gcHJvZmlsZS50eXBlSWQ7CiAgICAgICAgIHZh
ciBwcm9maWxlVHlwZSA9IHRoaXMuZ2V0UHJvZmlsZVR5cGUodHlwZUlkKTsKQEAgLTM1OCw2ICsz
NTUsMTIgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLnJlY29yZEJ1dHRvbi50aXRsZSA9IHRoaXMuX3NlbGVjdGVkUHJvZmlsZVR5cGUuYnV0
dG9uVG9vbHRpcDsKICAgICB9LAogCisgICAgX3JlbW92ZVRlbXBvcmFyeVByb2ZpbGU6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3JlbW92ZVByb2ZpbGVIZWFkZXIodGhpcy5fdGVt
cG9yYXJ5UmVjb3JkaW5nUHJvZmlsZSk7CisgICAgICAgIGRlbGV0ZSB0aGlzLl90ZW1wb3JhcnlS
ZWNvcmRpbmdQcm9maWxlOworICAgIH0sCisKICAgICBfcmVtb3ZlUHJvZmlsZUhlYWRlcjogZnVu
Y3Rpb24ocHJvZmlsZSkKICAgICB7CiAgICAgICAgIHZhciB0eXBlSWQgPSBwcm9maWxlLnR5cGVJ
ZDsKQEAgLTc5OSw3ICs4MDIsNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB2YXIgcHJvZmlsZUhlYWRlcnNMZW5ndGggPSBwcm9maWxlSGVh
ZGVycy5sZW5ndGg7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb2ZpbGVIZWFk
ZXJzTGVuZ3RoOyArK2kpCiAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhhc1Byb2ZpbGUocHJv
ZmlsZUhlYWRlcnNbaV0pKQotICAgICAgICAgICAgICAgICAgIHRoaXMuX2FkZFByb2ZpbGVIZWFk
ZXIocHJvZmlsZUhlYWRlcnNbaV0pOworICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkUHJvZmls
ZUhlYWRlcihwcm9maWxlSGVhZGVyc1tpXSk7CiAgICAgICAgIH0KIAogICAgICAgICBQcm9maWxl
ckFnZW50LmdldFByb2ZpbGVIZWFkZXJzKHBvcHVsYXRlQ2FsbGJhY2suYmluZCh0aGlzKSk7CkBA
IC04MjcsMTMgKzgzMCwxMSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChp
c1Byb2ZpbGluZykgewotICAgICAgICAgICAgICAgIHRoaXMuX2FkZFByb2ZpbGVIZWFkZXIodGhp
cy5fdGVtcG9yYXJ5UmVjb3JkaW5nUHJvZmlsZSk7CisgICAgICAgICAgICAgICAgdGhpcy5hZGRQ
cm9maWxlSGVhZGVyKHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUpOwogICAgICAgICAg
ICAgICAgIGlmIChwcm9maWxlVHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLlR5
cGVJZCkKICAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnVzZXJNZXRyaWNzLlByb2Zp
bGVzQ1BVUHJvZmlsZVRha2VuLnJlY29yZCgpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICB0aGlzLl9yZW1vdmVQcm9maWxlSGVhZGVyKHRoaXMuX3RlbXBvcmFyeVJlY29y
ZGluZ1Byb2ZpbGUpOwotICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl90ZW1wb3JhcnlSZWNv
cmRpbmdQcm9maWxlOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgdGhpcy5fcmVtb3ZlVGVtcG9yYXJ5UHJvZmlsZSgpCiAgICAgICAgIH0KICAgICB9
LAogCkBAIC04NDgsNyArODQ5LDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICAgICAgICAgICAgICBpc1RlbXBvcmFyeTogdHJ1ZQogICAgICAgICAg
ICAgICAgIH07CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aGlzLl9hZGRQcm9maWxlSGVh
ZGVyKHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUpOworICAgICAgICAgICAgdGhpcy5h
ZGRQcm9maWxlSGVhZGVyKHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUpOwogICAgICAg
ICB9CiAgICAgICAgIFByb2ZpbGVyQWdlbnQudGFrZUhlYXBTbmFwc2hvdCgpOwogICAgICAgICBX
ZWJJbnNwZWN0b3IudXNlck1ldHJpY3MuUHJvZmlsZXNIZWFwUHJvZmlsZVRha2VuLnJlY29yZCgp
OwpAQCAtODYwLDcgKzg2MSw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUuc2lkZWJh
ckVsZW1lbnQuc3VidGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiUuMmYlJSIsIChkb25l
IC8gdG90YWwpICogMTAwKTsKICAgICAgICAgICAgIHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1By
b2ZpbGUuc2lkZWJhckVsZW1lbnQud2FpdCA9IHRydWU7CiAgICAgICAgICAgICBpZiAoZG9uZSA+
PSB0b3RhbCkKLSAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVQcm9maWxlSGVhZGVyKHRoaXMu
X3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUpOworICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92
ZVRlbXBvcmFyeVByb2ZpbGUoKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTg4MSw3ICs4ODIs
NyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKIAogICAg
IGFkZFByb2ZpbGVIZWFkZXI6IGZ1bmN0aW9uKHByb2ZpbGUpCiAgICAgewotICAgICAgICB0aGlz
Ll9wcm9maWxlci5fYWRkUHJvZmlsZUhlYWRlcihwcm9maWxlKTsKKyAgICAgICAgdGhpcy5fcHJv
ZmlsZXIuYWRkUHJvZmlsZUhlYWRlcihwcm9maWxlKTsKICAgICB9LAogCiAgICAgYWRkSGVhcFNu
YXBzaG90Q2h1bms6IGZ1bmN0aW9uKHVpZCwgY2h1bmspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggNWFlZGEwMTI1NWNlZjk3OTg3ODU0YmNi
MWZlNDVlODc3MGViNWJkNS4uNjY0MjVjNzc3NTJmMjI0ZDE3OTAzMGVkOTg3MWZmOTg3NGZlZDBk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQu
cXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpA
QCAtMjksNiArMjksNyBAQAogICAgIDxmaWxlPkNvb2tpZXNUYWJsZS5qczwvZmlsZT4KICAgICA8
ZmlsZT5DU1NDb21wbGV0aW9ucy5qczwvZmlsZT4KICAgICA8ZmlsZT5DU1NLZXl3b3JkQ29tcGxl
dGlvbnMuanM8L2ZpbGU+CisgICAgPGZpbGU+Q1NTU2VsZWN0b3JQcm9maWxlVmlldy5qczwvZmls
ZT4KICAgICA8ZmlsZT5DU1NTdHlsZU1vZGVsLmpzPC9maWxlPgogICAgIDxmaWxlPkRhdGFiYXNl
LmpzPC9maWxlPgogICAgIDxmaWxlPkRhdGFiYXNlUXVlcnlWaWV3LmpzPC9maWxlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXgg
MmY0NGE0ZjhmYzZiNjUwYmMyYTIwNjdlMjBmM2Y5Mzc2ZWQxZGQxZS4uNTBlOTE5YWRkYjlkMGVh
NjZkYmFlNTRjNDNjNGZmZDRlMDUxNmFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xNTcsNiArMTU3LDcgQEAgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJCb3R0b21VcFByb2Zp
bGVEYXRhR3JpZFRyZWUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9IlRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJQcm9maWxlVmlldy5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ1NTU2VsZWN0
b3JQcm9maWxlVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iUGFydGlhbFF1aWNrU29ydC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSGVhcFNuYXBzaG90LmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJIZWFwU25hcHNob3RQcm94eS5q
cyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL3Byb2ZpbGVzUGFuZWwuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9wcm9maWxlc1BhbmVsLmNzcwppbmRleCA2OTUyMWZiYzdlZWQyMWY2OGJlZTUwZDE4ZDIzYzM0
NDRmZGJkZjE4Li4xMGY2YjQ5ZmVkZjM3YjVkNzU4NWVhOWZmYTNjYWU4MWM3YTIzYmRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3Byb2ZpbGVzUGFuZWwu
Y3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvcHJvZmlsZXNQYW5l
bC5jc3MKQEAgLTEyNiwxMSArMTI2LDYgQEAKICAgICBjb2xvcjogd2hpdGU7CiB9CiAKLS8qIEZJ
WE1FOiBzaG91bGQgaGF2ZSBpdHMgb3duIGdseXBoLiAqLwotLmhlYXAtc25hcHNob3Qtc3RhdHVz
LWJhci1pdGVtIC5nbHlwaCB7Ci0gICAgLXdlYmtpdC1tYXNrLXBvc2l0aW9uOiAtOTZweCAwOwot
fQotCiAucGVyY2VudC10aW1lLXN0YXR1cy1iYXItaXRlbSAuZ2x5cGggewogICAgIC13ZWJraXQt
bWFzay1wb3NpdGlvbjogLTE5MnB4IC0yNHB4OwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVkYTM1MDI3OTM2MWQxMjVi
ZDI0Zjc5YTRmZmM1ZTYzMTYwNWJlMTQuLjAwZDQ1ODMzYjY4ZDE4Mjk2ZDg3NmRmNTdmOTc4ZDgz
Zjg2ZjExNmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMi0yMyAgQWxleGFuZGVyIFBh
dmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IElt
cGxlbWVudCBDU1Mgc2VsZWN0b3IgcHJvZmlsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNo
b3RzLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0RldGFpbGVkSGVhcHNob3RUZXN0KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvcHJvZmlsZXItdGVzdC5qczoKKyAgICAgICAg
KGluaXRpYWxpemVfUHJvZmlsZXJUZXN0Lkluc3BlY3RvclRlc3Quc3RhcnRQcm9maWxlclRlc3Qu
c3RhcnRUZXN0KToKKyAgICAgICAgKGluaXRpYWxpemVfUHJvZmlsZXJUZXN0Lkluc3BlY3RvclRl
c3Quc3RhcnRQcm9maWxlclRlc3QpOgorCiAyMDExLTEyLTI4ICBBbGV4aXMgTWVuYXJkICA8YWxl
eGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIGdldENvbXB1dGVkU3R5bGUgZm9y
IGJvcmRlci1jb2xvciBpcyBub3QgaW1wbGVtZW50ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXRlc3QuanMgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvZGV0YWlsZWQtaGVhcHNob3RzLXRlc3QuanMKaW5kZXgg
NDZiY2RlNzY0YTk5YjlhZTQ1ZGQyZmFkNzk2OTAyOGY1ZGY3M2QwYy4uNWNhMWJjZjQ1YmQ1Nzc0
NTQwYzlkYmQwNzI3NDk2NDcwMzM5MjIyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Byb2ZpbGVyL2RldGFpbGVkLWhlYXBzaG90cy10ZXN0LmpzCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9wcm9maWxlci9kZXRhaWxlZC1oZWFwc2hvdHMtdGVzdC5qcwpAQCAtMzY5LDcg
KzM2OSw3IEBAIEluc3BlY3RvclRlc3QudGFrZUFuZE9wZW5TbmFwc2hvdCA9IGZ1bmN0aW9uKGdl
bmVyYXRvciwgY2FsbGJhY2spCiAgICAgfQogICAgIEluc3BlY3RvclRlc3Qub3ZlcnJpZGUoUHJv
ZmlsZXJBZ2VudCwgImdldFByb2ZpbGUiLCBwdXNoR2VuZXJhdGVkU25hcHNob3QpOwogICAgIElu
c3BlY3RvclRlc3QuX3Rha2VBbmRPcGVuU25hcHNob3RDYWxsYmFjayA9IGNhbGxiYWNrOwotICAg
IFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMuX2FkZFByb2ZpbGVIZWFkZXIocHJvZmlsZSk7
CisgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcy5hZGRQcm9maWxlSGVhZGVyKHByb2Zp
bGUpOwogICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMuc2hvd1Byb2ZpbGUocHJvZmls
ZSk7CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvcHJv
ZmlsZXItdGVzdC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9wcm9maWxlci10
ZXN0LmpzCmluZGV4IGNjYTQ5MmEyM2FlMjJiNTllNzlmMGI2ZDU3NDI0ZDIzNDJiYmUyNjEuLmNj
NzAzM2M2YzFmY2YyMjUzMjRmOTljZTM5ZTZhOGJhNjZlY2VmNjEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9wcm9maWxlci10ZXN0LmpzCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9wcm9maWxlci9wcm9maWxlci10ZXN0LmpzCkBAIC03LDcgKzcsNyBAQCBJ
bnNwZWN0b3JUZXN0LnN0YXJ0UHJvZmlsZXJUZXN0ID0gZnVuY3Rpb24oY2FsbGJhY2spCiAgICAg
ZnVuY3Rpb24gc3RhcnRUZXN0KCkKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJQcm9maWxlciB3YXMgZW5hYmxlZC4iKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRT
bmlmZmVyKFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMsICJfYWRkUHJvZmlsZUhlYWRlciIs
IEluc3BlY3RvclRlc3QuX3Byb2ZpbGVIZWFkZXJBZGRlZCwgdHJ1ZSk7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLCAiYWRkUHJv
ZmlsZUhlYWRlciIsIEluc3BlY3RvclRlc3QuX3Byb2ZpbGVIZWFkZXJBZGRlZCwgdHJ1ZSk7CiAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZp
ZXcucHJvdG90eXBlLCAicmVmcmVzaCIsIEluc3BlY3RvclRlc3QuX3Byb2ZpbGVWaWV3UmVmcmVz
aCwgdHJ1ZSk7CiAgICAgICAgIEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spKCk7CiAg
ICAgfQo=
</data>
<flag name="review"
          id="121054"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>